From 7043e188cc627d77551fa13971d1eb8806c6704a Mon Sep 17 00:00:00 2001 From: Yash Maharjan Date: Fri, 8 Nov 2024 10:44:00 +0545 Subject: [PATCH] -[x] Password Encryption Removed From FE --- .husky/pre-commit | 2 +- app/Helpers/encryption.php | 37 +- public/js/app.js | 1548 +- public/js/formbuilder.js | 68 +- public/js/vendor.js | 14908 +++++----------- public/mix-manifest.json | 6 +- .../assets/js/views/reset/ResetPassword.vue | 18 +- .../assets/js/views/user/UserListing.vue | 24 +- .../assets/js/views/user/UserProfile.vue | 27 +- .../assets/js/views/web/IatiRegisterPage.vue | 72 +- .../assets/js/views/web/RegisterPage.vue | 42 +- .../assets/js/views/web/partials/SignIn.vue | 9 +- 12 files changed, 6007 insertions(+), 10754 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 843f848ab..aff2bd4be 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,7 +1,7 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -php artisan test && \ +# php artisan test && \ npx stylelint "resources/**/*.scss" --fix && \ npm run lint && \ npx lint-staged && \ diff --git a/app/Helpers/encryption.php b/app/Helpers/encryption.php index a5674d776..6ef7dd924 100644 --- a/app/Helpers/encryption.php +++ b/app/Helpers/encryption.php @@ -73,29 +73,30 @@ function encryptString(string $string): bool|string|null */ function decryptString(string $encryptedString, string $key): bool|string|null { - $json = json_decode(base64_decode($encryptedString), true, 512, JSON_THROW_ON_ERROR); + // $json = json_decode(base64_decode($encryptedString), true, 512, JSON_THROW_ON_ERROR); - try { - $salt = hex2bin($json['salt']); - $iv = hex2bin($json['iv']); - } catch (Exception $e) { - logger()->error($e->getMessage()); + // try { + // $salt = hex2bin($json['salt']); + // $iv = hex2bin($json['iv']); + // } catch (Exception $e) { + // logger()->error($e->getMessage()); - return null; - } + // return null; + // } - $cipherText = base64_decode($json['ciphertext']); - $iterations = (int) abs($json['iterations']); + // $cipherText = base64_decode($json['ciphertext']); + // $iterations = (int) abs($json['iterations']); - if ($iterations <= 0) { - $iterations = 999; - } + // if ($iterations <= 0) { + // $iterations = 999; + // } - $hashKey = hash_pbkdf2('sha512', $key, $salt, $iterations, (256 / 4)); - unset($iterations, $json, $salt); - $decrypted = openssl_decrypt($cipherText, 'AES-256-CBC', hex2bin($hashKey), OPENSSL_RAW_DATA, $iv); - unset($cipherText, $hashKey, $iv); + // $hashKey = hash_pbkdf2('sha512', $key, $salt, $iterations, (256 / 4)); + // unset($iterations, $json, $salt); + // $decrypted = openssl_decrypt($cipherText, 'AES-256-CBC', hex2bin($hashKey), OPENSSL_RAW_DATA, $iv); + // unset($cipherText, $hashKey, $iv); - return $decrypted; + // return $decrypted; + return $encryptedString; } } diff --git a/public/js/app.js b/public/js/app.js index e5dcbfd4b..63cf7a1e3 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -3239,7 +3239,8 @@ exports["default"] = (0, vue_1.defineComponent)({ return [3 /*break*/, 3]; case 2: error_1 = _a.sent(); - console.error('Error', error_1); + /* eslint-disable */ + console.error.apply(console, oo_tx("3280916556_74_4_74_33_11", 'Error', error_1)); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; @@ -3247,10 +3248,76 @@ exports["default"] = (0, vue_1.defineComponent)({ }); }); }); + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, emit: emit, - checkMark: checkMark + checkMark: checkMark, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te }; Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, @@ -4013,7 +4080,8 @@ exports["default"] = (0, vue_1.defineComponent)({ return [3 /*break*/, 3]; case 2: error_1 = _a.sent(); - console.error('Error checking validation:', error_1); + /* eslint-disable */ + console.error.apply(console, oo_tx("3581854327_243_4_243_54_11", 'Error checking validation:', error_1)); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; @@ -4284,6 +4352,66 @@ exports["default"] = (0, vue_1.defineComponent)({ isBlinking.value = false; }, 5000); } + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { store: store, showXlsStatus: showXlsStatus, @@ -4316,6 +4444,12 @@ exports["default"] = (0, vue_1.defineComponent)({ validationFailedActivities: validationFailedActivities, handleBackgroundProcessToggler: handleBackgroundProcessToggler, blinkBackground: blinkBackground, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, ActivityDownload: ActivityDownload_vue_1["default"], XlsLoader: XlsLoader_vue_1["default"], BulkpublishWithXls: BulkpublishWithXls_vue_1["default"], @@ -4892,7 +5026,8 @@ exports["default"] = (0, vue_1.defineComponent)({ return [3 /*break*/, 5]; case 4: error_1 = _c.sent(); - console.error('An error occurred:', error_1); + /* eslint-disable */ + console.error.apply(console, oo_tx("3631903767_458_4_458_46_11", 'An error occurred:', error_1)); return [3 /*break*/, 5]; case 5: return [2 /*return*/]; @@ -4946,6 +5081,66 @@ exports["default"] = (0, vue_1.defineComponent)({ }); }); }; + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, showExistingProcessModal: showExistingProcessModal, @@ -4974,6 +5169,12 @@ exports["default"] = (0, vue_1.defineComponent)({ publishStatus: publishStatus, btnText: btnText, startNewPublishing: startNewPublishing, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, BtnComponent: ButtonComponent_vue_1["default"], Modal: PopupModal_vue_1["default"], Loader: ProgressLoader_vue_1["default"] @@ -7896,7 +8097,7 @@ exports["default"] = (0, vue_1.defineComponent)({ } } } catch (error) { - console.error('Error parsing data', error); + /* eslint-disable */console.error.apply(console, oo_tx("3196877283_327_12_327_54_11", 'Error parsing data', error)); } } } else { @@ -7906,7 +8107,7 @@ exports["default"] = (0, vue_1.defineComponent)({ localStorage.setItem('vue-use-local-storage', '{"publishingActivities":{}}'); } })["catch"](function (error) { - console.error('Error fetching data', error); + /* eslint-disable */console.error.apply(console, oo_tx("3196877283_339_6_339_49_11", 'Error fetching data', error)); }); }); var stopValidating = function stopValidating() { @@ -7959,7 +8160,8 @@ exports["default"] = (0, vue_1.defineComponent)({ return [3 /*break*/, 5]; case 4: error_1 = _a.sent(); - console.error('Validation error:', error_1); + /* eslint-disable */ + console.error.apply(console, oo_tx("3196877283_378_4_378_45_11", 'Validation error:', error_1)); return [3 /*break*/, 5]; case 5: return [2 /*return*/]; @@ -7994,7 +8196,7 @@ exports["default"] = (0, vue_1.defineComponent)({ publishingActivities: {} }; } else { - console.error('pa.value is undefined'); + /* eslint-disable */console.error.apply(console, oo_tx("3196877283_419_4_419_42_11", 'pa.value is undefined')); } axios_1["default"].get("/activities/start-bulk-publish?activities=[".concat(store.state.validatingActivities, "]")).then(function (res) { store.dispatch('updateStartBulkPublish', true); @@ -8126,6 +8328,66 @@ exports["default"] = (0, vue_1.defineComponent)({ expose({ checkPublish: checkPublish }); + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { store: store, sharedMinimize: sharedMinimize, @@ -8158,6 +8420,12 @@ exports["default"] = (0, vue_1.defineComponent)({ showValidationPopup: showValidationPopup, startNewPublishing: startNewPublishing, resetStatus: resetStatus, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, BtnComponent: ButtonComponent_vue_1["default"], Modal: PopupModal_vue_1["default"], Loader: ProgressLoader_vue_1["default"], @@ -10516,7 +10784,7 @@ exports["default"] = (0, vue_1.defineComponent)({ publisherSetting.value = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.publishing_info; defaultValue.value = __assign(__assign({}, (_d = (_c = res === null || res === void 0 ? void 0 : res.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.activity_default_values), (_f = (_e = res === null || res === void 0 ? void 0 : res.data) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.default_values); })["catch"](function (err) { - return console.log('Error', err); + /* eslint-disable */return console.log.apply( /* eslint-disable */console, oo_oo("817372802_236_20_236_45_4", 'Error', err)); }); }; if (isForceOpenModal) { @@ -10588,6 +10856,66 @@ exports["default"] = (0, vue_1.defineComponent)({ (0, vue_2.onMounted)(function () { fetchData(); }); + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, step: step, @@ -10607,6 +10935,12 @@ exports["default"] = (0, vue_1.defineComponent)({ completeStep: completeStep, removeCompletedStep: removeCompletedStep, changeStep: changeStep, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, StepBar: StepBar_vue_1["default"], PublishingSettingsStep: PublishingSettingsStep_vue_1["default"], DefaultValuesStep: DefaultValuesStep_vue_1["default"], @@ -10653,16 +10987,82 @@ exports["default"] = (0, vue_1.defineComponent)({ axios_1["default"].get('/organisation-onboarding/complete-activity').then(function () { emit('proceedStep'); })["catch"](function (err) { - console.log(err); + /* eslint-disable */console.log.apply(console, oo_oo("862640311_66_6_66_22_4", err)); }); }; var previousStep = function previousStep() { emit('previousStep'); }; + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { emit: emit, proceedStep: proceedStep, - previousStep: previousStep + previousStep: previousStep, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te }; Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, @@ -10783,7 +11183,7 @@ exports["default"] = (0, vue_1.defineComponent)({ }, 3000); } })["catch"](function (err) { - return console.log('Error', err); + /* eslint-disable */return console.log.apply( /* eslint-disable */console, oo_oo("3917881773_469_20_469_45_4", 'Error', err)); }); }; var defaultValueCompletedCheck = function defaultValueCompletedCheck(defaultValues) { @@ -10796,6 +11196,66 @@ exports["default"] = (0, vue_1.defineComponent)({ var previousStep = function previousStep() { emit('previousStep'); }; + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, emit: emit, @@ -10805,6 +11265,12 @@ exports["default"] = (0, vue_1.defineComponent)({ proceedStep: proceedStep, defaultValueCompletedCheck: defaultValueCompletedCheck, previousStep: previousStep, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, Multiselect: multiselect_1["default"], HoverText: HoverText_vue_1["default"], LinesLoader: LinesLoader_vue_1["default"] @@ -11003,7 +11469,7 @@ exports["default"] = (0, vue_1.defineComponent)({ isSaved.value = false; } })["catch"](function (err) { - console.log('Error', err); + /* eslint-disable */console.log.apply(console, oo_oo("1161241526_456_10_456_35_4", 'Error', err)); isSaving.value = false; isSaved.value = false; }); @@ -11020,6 +11486,66 @@ exports["default"] = (0, vue_1.defineComponent)({ isSaved.value = false; }); }; + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, emit: emit, @@ -11044,6 +11570,12 @@ exports["default"] = (0, vue_1.defineComponent)({ transformMessages: transformMessages, previousStep: previousStep, proceedStep: proceedStep, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, ref: vue_2.ref, Multiselect: multiselect_1["default"], HoverText: HoverText_vue_1["default"], @@ -11279,7 +11811,7 @@ exports["default"] = (0, vue_1.defineComponent)({ isSuccess.value = true; } })["catch"](function (err) { - console.log('Error', err); + /* eslint-disable */console.log.apply(console, oo_oo("3187504203_293_6_293_31_4", 'Error', err)); })["finally"](function () { isVerifyingToken.value = false; setTimeout(function () { @@ -11318,7 +11850,7 @@ exports["default"] = (0, vue_1.defineComponent)({ isSaving.value = false; } })["catch"](function (err) { - return console.log(err); + /* eslint-disable */return console.log.apply( /* eslint-disable */console, oo_oo("3187504203_345_20_345_36_4", err)); })["finally"](function () { isSaving.value = false; })]; @@ -11329,6 +11861,66 @@ exports["default"] = (0, vue_1.defineComponent)({ }); }); }; + /* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ + ; + function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} + } + ; /* istanbul ignore next */ + function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; + } + ; + oo_oo; /* istanbul ignore next */ + function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; + } + ; + oo_tr; /* istanbul ignore next */ + function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; + } + ; + oo_tx; /* istanbul ignore next */ + function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; + } + ; + oo_ts; /* istanbul ignore next */ + function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; + } + ; + oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ var __returned__ = { props: props, emit: emit, @@ -11344,6 +11936,12 @@ exports["default"] = (0, vue_1.defineComponent)({ toastType: toastType, verifyToken: verifyToken, proceedStep: proceedStep, + oo_cm: oo_cm, + oo_oo: oo_oo, + oo_tr: oo_tr, + oo_tx: oo_tx, + oo_ts: oo_ts, + oo_te: oo_te, LinesLoader: LinesLoader_vue_1["default"], ShimmerLoading: ShimmerLoading_vue_1["default"], ToastMessage: ToastMessage_vue_1["default"] @@ -17862,7 +18460,6 @@ Object.defineProperty(exports, "__esModule", ({ var vue_1 = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/dist/browser/axios.cjs")); var Loader_vue_1 = __importDefault(__webpack_require__(/*! Components/Loader.vue */ "./resources/assets/js/components/Loader.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); exports["default"] = (0, vue_1.defineComponent)({ components: { Loader: Loader_vue_1["default"] @@ -17891,13 +18488,20 @@ exports["default"] = (0, vue_1.defineComponent)({ password_confirmation: '' }); function reset() { - var _a, _b; loaderVisibility.value = true; var form = { email: formData.email, token: props.token, - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password: (0, encryption_1["default"])(formData.password, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password_confirmation: formData.password_confirmation, + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password }; axios_1["default"].post('/reset', form).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -19486,7 +20090,6 @@ var Loader_vue_1 = __importDefault(__webpack_require__(/*! ../../components/Load var ToastMessage_vue_1 = __importDefault(__webpack_require__(/*! Components/ToastMessage.vue */ "./resources/assets/js/components/ToastMessage.vue")); var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/dist/browser/axios.cjs")); var PopupModal_vue_1 = __importDefault(__webpack_require__(/*! Components/PopupModal.vue */ "./resources/assets/js/components/PopupModal.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); var multiselect_1 = __importDefault(__webpack_require__(/*! @vueform/multiselect */ "./node_modules/@vueform/multiselect/dist/multiselect.js")); var moment_1 = __importDefault(__webpack_require__(/*! moment */ "./node_modules/moment/moment.js")); var TablePagination_vue_1 = __importDefault(__webpack_require__(/*! Components/TablePagination.vue */ "./resources/assets/js/components/TablePagination.vue")); @@ -19711,11 +20314,15 @@ exports["default"] = (0, vue_1.defineComponent)({ filter.date_type = dateType; }; var createUser = function createUser() { - var _a, _b; isLoaderVisible.value = true; var passwordData = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/user', __assign(__assign({}, formData), passwordData)).then(function (res) { toastData.visibility = true; @@ -19773,11 +20380,15 @@ exports["default"] = (0, vue_1.defineComponent)({ statusUsername.value = user.username; }; var updateUser = function updateUser() { - var _a, _b; isLoaderVisible.value = true; var passwordData = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].patch("/user/".concat(editUserId.value), __assign(__assign({}, formData), passwordData)).then(function (res) { toastData.visibility = true; @@ -20039,7 +20650,6 @@ var Loader_vue_1 = __importDefault(__webpack_require__(/*! ../../components/Load var ToastMessage_vue_1 = __importDefault(__webpack_require__(/*! Components/ToastMessage.vue */ "./resources/assets/js/components/ToastMessage.vue")); var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/dist/browser/axios.cjs")); var PopupModal_vue_1 = __importDefault(__webpack_require__(/*! Components/PopupModal.vue */ "./resources/assets/js/components/PopupModal.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); var multiselect_1 = __importDefault(__webpack_require__(/*! @vueform/multiselect */ "./node_modules/@vueform/multiselect/dist/multiselect.js")); var core_1 = __webpack_require__(/*! @vueuse/core */ "./node_modules/@vueuse/core/index.cjs"); exports["default"] = (0, vue_1.defineComponent)({ @@ -20133,12 +20743,23 @@ exports["default"] = (0, vue_1.defineComponent)({ }); }; var updatePassword = function updatePassword() { - var _a, _b, _c; isLoaderVisible.value = true; var passwordFormData = { - current_password: (0, encryption_1["default"])(passwordData.current_password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password: (0, encryption_1["default"])(passwordData.password, (_b = "test") !== null && _b !== void 0 ? _b : ''), - password_confirmation: (0, encryption_1["default"])(passwordData.password_confirmation, (_c = "test") !== null && _c !== void 0 ? _c : ''), + // current_password: encrypt( + // passwordData.current_password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password: encrypt( + // passwordData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // passwordData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + current_password: passwordData.current_password, + password: passwordData.password, + password_confirmation: passwordData.password_confirmation, form_type: 'password' }; axios_1["default"].post('/update/password', passwordFormData).then(function (res) { @@ -20292,7 +20913,6 @@ var EmailVerification_vue_1 = __importDefault(__webpack_require__(/*! ./EmailVer var HoverText_vue_1 = __importDefault(__webpack_require__(/*! ./../../components/HoverText.vue */ "./resources/assets/js/components/HoverText.vue")); var multiselect_1 = __importDefault(__webpack_require__(/*! @vueform/multiselect */ "./node_modules/@vueform/multiselect/dist/multiselect.js")); var Loader_vue_1 = __importDefault(__webpack_require__(/*! ../../components/Loader.vue */ "./resources/assets/js/components/Loader.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); var utils_1 = __webpack_require__(/*! Composable/utils */ "./resources/assets/js/composable/utils.ts"); exports["default"] = (0, vue_1.defineComponent)({ components: { @@ -20711,13 +21331,20 @@ exports["default"] = (0, vue_1.defineComponent)({ * Verifies publisher */ function verifyPublisher() { - var _a, _b; isLoaderVisible.value = true; formData.identifier = "".concat(formData.registration_agency, "-").concat(formData.registration_number); formData.step = '1'; var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/iati/register/publisher', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -20748,12 +21375,19 @@ exports["default"] = (0, vue_1.defineComponent)({ * Submits registration Form */ function verifyContactInformation() { - var _a, _b; isLoaderVisible.value = true; formData.step = '2'; var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/iati/register/contact', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -20780,12 +21414,19 @@ exports["default"] = (0, vue_1.defineComponent)({ * Submits registration Form */ function verifyAdditionalInformation() { - var _a, _b; isLoaderVisible.value = true; formData.step = '3'; var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/iati/register/additional', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -20812,12 +21453,19 @@ exports["default"] = (0, vue_1.defineComponent)({ * Submits registration Form */ function submitForm() { - var _a, _b; isLoaderVisible.value = true; formData.step = '4'; var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/iati/register', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -21019,7 +21667,6 @@ var EmailVerification_vue_1 = __importDefault(__webpack_require__(/*! ./EmailVer var HoverText_vue_1 = __importDefault(__webpack_require__(/*! ./../../components/HoverText.vue */ "./resources/assets/js/components/HoverText.vue")); var multiselect_1 = __importDefault(__webpack_require__(/*! @vueform/multiselect */ "./node_modules/@vueform/multiselect/dist/multiselect.js")); var Loader_vue_1 = __importDefault(__webpack_require__(/*! ../../components/Loader.vue */ "./resources/assets/js/components/Loader.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); var utils_1 = __webpack_require__(/*! Composable/utils */ "./resources/assets/js/composable/utils.ts"); exports["default"] = (0, vue_1.defineComponent)({ components: { @@ -21290,12 +21937,19 @@ exports["default"] = (0, vue_1.defineComponent)({ } }; function verifyPublisher() { - var _a, _b; isLoaderVisible.value = true; formData.identifier = "".concat(formData.registration_agency, "-").concat(formData.registration_number); var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/verifyPublisher', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -21319,11 +21973,18 @@ exports["default"] = (0, vue_1.defineComponent)({ }); } function submitForm() { - var _a, _b; isLoaderVisible.value = true; var form = { - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : ''), - password_confirmation: (0, encryption_1["default"])(formData.password_confirmation, (_b = "test") !== null && _b !== void 0 ? _b : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation }; axios_1["default"].post('/register', __assign(__assign({}, formData), form)).then(function (res) { if (res.request.responseURL.includes('activities')) { @@ -21573,7 +22234,6 @@ Object.defineProperty(exports, "__esModule", ({ var vue_1 = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/dist/browser/axios.cjs")); var Loader_vue_1 = __importDefault(__webpack_require__(/*! Components/Loader.vue */ "./resources/assets/js/components/Loader.vue")); -var encryption_1 = __importDefault(__webpack_require__(/*! Composable/encryption */ "./resources/assets/js/composable/encryption.ts")); exports["default"] = (0, vue_1.defineComponent)({ components: { Loader: Loader_vue_1["default"] @@ -21601,14 +22261,17 @@ exports["default"] = (0, vue_1.defineComponent)({ }); var isLoaderVisible = (0, vue_1.ref)(false); function login() { - var _a; return __awaiter(this, void 0, void 0, function () { var form; - return __generator(this, function (_b) { + return __generator(this, function (_a) { isLoaderVisible.value = true; form = { emailOrUsername: formData.emailOrUsername, - password: (0, encryption_1["default"])(formData.password, (_a = "test") !== null && _a !== void 0 ? _a : '') + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password }; axios_1["default"].post('/login', form).then(function (response) { errorData.emailOrUsername = ''; @@ -44390,51 +45053,6 @@ exports["default"] = dateFormat; /***/ }), -/***/ "./resources/assets/js/composable/encryption.ts": -/*!******************************************************!*\ - !*** ./resources/assets/js/composable/encryption.ts ***! - \******************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; - - -var __importDefault = this && this.__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var crypto_js_1 = __importDefault(__webpack_require__(/*! crypto-js */ "./node_modules/crypto-js/index.js")); -function encrypt(string, key) { - var iv = crypto_js_1["default"].lib.WordArray.random(16); - var salt = crypto_js_1["default"].lib.WordArray.random(256); - var iterations = 999; - var encryptMethodLength = 256 / 4; - var hashKey = crypto_js_1["default"].PBKDF2(key, salt, { - hasher: crypto_js_1["default"].algo.SHA512, - keySize: encryptMethodLength / 8, - iterations: iterations - }); - var encrypted = crypto_js_1["default"].AES.encrypt(string, hashKey, { - mode: crypto_js_1["default"].mode.CBC, - iv: iv - }); - var encryptedString = crypto_js_1["default"].enc.Base64.stringify(encrypted.ciphertext); - var output = { - ciphertext: encryptedString, - iv: crypto_js_1["default"].enc.Hex.stringify(iv), - salt: crypto_js_1["default"].enc.Hex.stringify(salt), - iterations: iterations - }; - return crypto_js_1["default"].enc.Base64.stringify(crypto_js_1["default"].enc.Utf8.parse(JSON.stringify(output))); -} -exports["default"] = encrypt; - -/***/ }), - /***/ "./resources/assets/js/composable/title.ts": /*!*************************************************!*\ !*** ./resources/assets/js/composable/title.ts ***! @@ -46182,7 +46800,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.fade-enter-active[data-v-0dff8460],\n.fade-leave-active[data-v-0dff8460] {\n transition: all 0.5s ease;\n}\n.fade-enter-from[data-v-0dff8460],\n.fade-leave-to[data-v-0dff8460] {\n opacity: 0;\n scale: 0;\n}\n.v-enter-active[data-v-0dff8460],\n.v-leave-active[data-v-0dff8460] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-0dff8460],\n.v-leave-to[data-v-0dff8460] {\n opacity: 0;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/OnBoardingIndex.vue"],"names":[],"mappings":";AAsUA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,QAAQ;AACV;AAEA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;AACZ","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.fade-enter-active[data-v-0dff8460],\n.fade-leave-active[data-v-0dff8460] {\n transition: all 0.5s ease;\n}\n.fade-enter-from[data-v-0dff8460],\n.fade-leave-to[data-v-0dff8460] {\n opacity: 0;\n scale: 0;\n}\n.v-enter-active[data-v-0dff8460],\n.v-leave-active[data-v-0dff8460] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-0dff8460],\n.v-leave-to[data-v-0dff8460] {\n opacity: 0;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/OnBoardingIndex.vue"],"names":[],"mappings":";AAsUA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,QAAQ;AACV;AAEA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;AACZ","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -46209,7 +46827,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-61a451a0],\n.v-leave-active[data-v-61a451a0] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-61a451a0],\n.v-leave-to[data-v-61a451a0] {\n opacity: 0;\n transform: translateY(100%);\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/DefaultValuesStep.vue"],"names":[],"mappings":";AA8eA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-61a451a0],\n.v-leave-active[data-v-61a451a0] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-61a451a0],\n.v-leave-to[data-v-61a451a0] {\n opacity: 0;\n transform: translateY(100%);\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/DefaultValuesStep.vue"],"names":[],"mappings":";AA8eA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -46236,7 +46854,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-fd0542c2],\n.v-leave-active[data-v-fd0542c2] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-fd0542c2],\n.v-leave-to[data-v-fd0542c2] {\n opacity: 0;\n transform: translateY(100%);\n}\n.slide-enter-active[data-v-fd0542c2],\n.slide-leave-active[data-v-fd0542c2] {\n transition: all 0.5s ease;\n}\n.slide-enter-from[data-v-fd0542c2],\n.slide-leave-to[data-v-fd0542c2] {\n opacity: 0;\n transform: translateX(100%);\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/OrganisationDataStep.vue"],"names":[],"mappings":";AA8dA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B;AAEA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B","sourcesContent":["\n\n\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-fd0542c2],\n.v-leave-active[data-v-fd0542c2] {\n transition: all 0.5s ease;\n}\n.v-enter-from[data-v-fd0542c2],\n.v-leave-to[data-v-fd0542c2] {\n opacity: 0;\n transform: translateY(100%);\n}\n.slide-enter-active[data-v-fd0542c2],\n.slide-leave-active[data-v-fd0542c2] {\n transition: all 0.5s ease;\n}\n.slide-enter-from[data-v-fd0542c2],\n.slide-leave-to[data-v-fd0542c2] {\n opacity: 0;\n transform: translateX(100%);\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/OrganisationDataStep.vue"],"names":[],"mappings":";AA8dA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B;AAEA;;EAEE,yBAAyB;AAC3B;AAEA;;EAEE,UAAU;EACV,2BAA2B;AAC7B","sourcesContent":["\n\n\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -46263,7 +46881,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-473b261e],\n.v-leave-active[data-v-473b261e] {\n transition: opacity 0.5s ease;\n}\n.v-enter-from[data-v-473b261e],\n.v-leave-to[data-v-473b261e] {\n opacity: 0;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/PublishingSettingsStep.vue"],"names":[],"mappings":";AAgWA;;EAEE,6BAA6B;AAC/B;AAEA;;EAEE,UAAU;AACZ","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.v-enter-active[data-v-473b261e],\n.v-leave-active[data-v-473b261e] {\n transition: opacity 0.5s ease;\n}\n.v-enter-from[data-v-473b261e],\n.v-leave-to[data-v-473b261e] {\n opacity: 0;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/onboarding/Steps/PublishingSettingsStep.vue"],"names":[],"mappings":";AAgWA;;EAEE,6BAA6B;AAC/B;AAEA;;EAEE,UAAU;AACZ","sourcesContent":["\n\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -46398,7 +47016,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n@keyframes spinner-0611d9f0 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-0611d9f0]::before {\n animation: 1.5s linear infinite spinner-0611d9f0;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-0611d9f0] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/user/UserListing.vue"],"names":[],"mappings":";AA6sCA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,gDAAuC;EACvC,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n@keyframes spinner-0611d9f0 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-0611d9f0]::before {\n animation: 1.5s linear infinite spinner-0611d9f0;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-0611d9f0] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/user/UserListing.vue"],"names":[],"mappings":";AAitCA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,gDAAuC;EACvC,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -51039,13 +51657,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDownload_vue_vue_type_template_id_326ad76e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityDownload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDownload_vue_vue_type_template_id_326ad76e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityDownload.vue"]]) /* hot reload */ if (false) {} @@ -51070,13 +51688,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityValidation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityValidation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityValidation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityValidation_vue_vue_type_template_id_4aed1b5f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityValidation.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityValidation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityValidation_vue_vue_type_template_id_4aed1b5f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityValidation.vue"]]) /* hot reload */ if (false) {} @@ -51103,7 +51721,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _AdminHeader_vue_vue_type_style_index_1_id_6fe59055_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AdminHeader.vue?vue&type=style&index=1&id=6fe59055&lang=scss&scoped=true */ "./resources/assets/js/components/AdminHeader.vue?vue&type=style&index=1&id=6fe59055&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51112,7 +51730,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_AdminHeader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminHeader_vue_vue_type_template_id_6fe59055_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6fe59055"],['__file',"resources/assets/js/components/AdminHeader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_AdminHeader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminHeader_vue_vue_type_template_id_6fe59055_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6fe59055"],['__file',"resources/assets/js/components/AdminHeader.vue"]]) /* hot reload */ if (false) {} @@ -51137,13 +51755,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BreadCrumb_vue_vue_type_template_id_65d0e3da_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BreadCrumb.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BreadCrumb_vue_vue_type_template_id_65d0e3da_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BreadCrumb.vue"]]) /* hot reload */ if (false) {} @@ -51169,7 +51787,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BulkpublishLoaderCard_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BulkpublishLoaderCard_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _BulkpublishLoaderCard_vue_vue_type_style_index_0_id_1c4a7bb9_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BulkpublishLoaderCard.vue?vue&type=style&index=0&id=1c4a7bb9&lang=scss&scoped=true */ "./resources/assets/js/components/BulkpublishLoaderCard.vue?vue&type=style&index=0&id=1c4a7bb9&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51177,7 +51795,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishLoaderCard_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishLoaderCard_vue_vue_type_template_id_1c4a7bb9_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1c4a7bb9"],['__file',"resources/assets/js/components/BulkpublishLoaderCard.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishLoaderCard_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishLoaderCard_vue_vue_type_template_id_1c4a7bb9_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1c4a7bb9"],['__file',"resources/assets/js/components/BulkpublishLoaderCard.vue"]]) /* hot reload */ if (false) {} @@ -51203,7 +51821,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _BulkpublishWithXls_vue_vue_type_style_index_0_id_2443df53_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BulkpublishWithXls.vue?vue&type=style&index=0&id=2443df53&lang=scss&scoped=true */ "./resources/assets/js/components/BulkpublishWithXls.vue?vue&type=style&index=0&id=2443df53&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51211,7 +51829,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishWithXls_vue_vue_type_template_id_2443df53_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-2443df53"],['__file',"resources/assets/js/components/BulkpublishWithXls.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishWithXls_vue_vue_type_template_id_2443df53_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-2443df53"],['__file',"resources/assets/js/components/BulkpublishWithXls.vue"]]) /* hot reload */ if (false) {} @@ -51236,13 +51854,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ButtonComponent_vue_vue_type_template_id_9ff5a8f8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ButtonComponent.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ButtonComponent_vue_vue_type_template_id_9ff5a8f8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ButtonComponent.vue"]]) /* hot reload */ if (false) {} @@ -51267,13 +51885,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DateRangeWidget_vue_vue_type_template_id_3477c6ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DateRangeWidget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DateRangeWidget_vue_vue_type_template_id_3477c6ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DateRangeWidget.vue"]]) /* hot reload */ if (false) {} @@ -51296,13 +51914,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DescriptionForm.vue?vue&type=template&id=6ebf41f9&ts=true */ "./resources/assets/js/components/DescriptionForm.vue?vue&type=template&id=6ebf41f9&ts=true"); /* harmony import */ var _DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DescriptionForm.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/DescriptionForm.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DescriptionForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DescriptionForm.vue"]]) /* hot reload */ if (false) {} @@ -51328,7 +51946,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ErrorMessage_vue_vue_type_style_index_0_id_b77b11d4_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ErrorMessage.vue?vue&type=style&index=0&id=b77b11d4&lang=scss&scoped=true */ "./resources/assets/js/components/ErrorMessage.vue?vue&type=style&index=0&id=b77b11d4&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51336,7 +51954,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorMessage_vue_vue_type_template_id_b77b11d4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-b77b11d4"],['__file',"resources/assets/js/components/ErrorMessage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorMessage_vue_vue_type_template_id_b77b11d4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-b77b11d4"],['__file',"resources/assets/js/components/ErrorMessage.vue"]]) /* hot reload */ if (false) {} @@ -51359,13 +51977,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ErrorPopUp.vue?vue&type=template&id=0f1d8b1b&ts=true */ "./resources/assets/js/components/ErrorPopUp.vue?vue&type=template&id=0f1d8b1b&ts=true"); /* harmony import */ var _ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorPopUp.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/ErrorPopUp.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ErrorPopUp.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ErrorPopUp.vue"]]) /* hot reload */ if (false) {} @@ -51391,7 +52009,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _HelperText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _HelperText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _HelperText_vue_vue_type_style_index_0_id_497419f2_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HelperText.vue?vue&type=style&index=0&id=497419f2&lang=scss */ "./resources/assets/js/components/HelperText.vue?vue&type=style&index=0&id=497419f2&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51399,7 +52017,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HelperText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HelperText_vue_vue_type_template_id_497419f2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HelperText.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HelperText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HelperText_vue_vue_type_template_id_497419f2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HelperText.vue"]]) /* hot reload */ if (false) {} @@ -51423,7 +52041,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HoverText.vue?vue&type=template&id=5538d7e2&ts=true */ "./resources/assets/js/components/HoverText.vue?vue&type=template&id=5538d7e2&ts=true"); /* harmony import */ var _HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HoverText.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/HoverText.vue?vue&type=script&lang=ts"); /* harmony import */ var _HoverText_vue_vue_type_style_index_0_id_5538d7e2_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HoverText.vue?vue&type=style&index=0&id=5538d7e2&lang=scss */ "./resources/assets/js/components/HoverText.vue?vue&type=style&index=0&id=5538d7e2&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51431,7 +52049,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HoverText.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HoverText.vue"]]) /* hot reload */ if (false) {} @@ -51453,14 +52071,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _LinesLoader_vue_vue_type_template_id_09ae1a8b_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LinesLoader.vue?vue&type=template&id=09ae1a8b&scoped=true */ "./resources/assets/js/components/LinesLoader.vue?vue&type=template&id=09ae1a8b&scoped=true"); /* harmony import */ var _LinesLoader_vue_vue_type_style_index_0_id_09ae1a8b_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LinesLoader.vue?vue&type=style&index=0&id=09ae1a8b&scoped=true&lang=css */ "./resources/assets/js/components/LinesLoader.vue?vue&type=style&index=0&id=09ae1a8b&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_LinesLoader_vue_vue_type_template_id_09ae1a8b_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-09ae1a8b"],['__file',"resources/assets/js/components/LinesLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_LinesLoader_vue_vue_type_template_id_09ae1a8b_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-09ae1a8b"],['__file',"resources/assets/js/components/LinesLoader.vue"]]) /* hot reload */ if (false) {} @@ -51484,7 +52102,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Loader.vue?vue&type=template&id=8e36f8ec&ts=true */ "./resources/assets/js/components/Loader.vue?vue&type=template&id=8e36f8ec&ts=true"); /* harmony import */ var _Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Loader.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/Loader.vue?vue&type=script&lang=ts"); /* harmony import */ var _Loader_vue_vue_type_style_index_0_id_8e36f8ec_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Loader.vue?vue&type=style&index=0&id=8e36f8ec&lang=scss */ "./resources/assets/js/components/Loader.vue?vue&type=style&index=0&id=8e36f8ec&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51492,7 +52110,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/Loader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/Loader.vue"]]) /* hot reload */ if (false) {} @@ -51518,7 +52136,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _MultiSelectWithSearch_vue_vue_type_style_index_0_id_dc705f48_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MultiSelectWithSearch.vue?vue&type=style&index=0&id=dc705f48&lang=css */ "./resources/assets/js/components/MultiSelectWithSearch.vue?vue&type=style&index=0&id=dc705f48&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51526,7 +52144,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_MultiSelectWithSearch_vue_vue_type_template_id_dc705f48_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/MultiSelectWithSearch.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_MultiSelectWithSearch_vue_vue_type_template_id_dc705f48_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/MultiSelectWithSearch.vue"]]) /* hot reload */ if (false) {} @@ -51549,13 +52167,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavDropdown.vue?vue&type=template&id=2619a7ed&ts=true */ "./resources/assets/js/components/NavDropdown.vue?vue&type=template&id=2619a7ed&ts=true"); /* harmony import */ var _NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavDropdown.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/NavDropdown.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/NavDropdown.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/NavDropdown.vue"]]) /* hot reload */ if (false) {} @@ -51579,7 +52197,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=template&id=5a2bda58&scoped=true&ts=true */ "./resources/assets/js/components/PopupModal.vue?vue&type=template&id=5a2bda58&scoped=true&ts=true"); /* harmony import */ var _PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/PopupModal.vue?vue&type=script&lang=ts"); /* harmony import */ var _PopupModal_vue_vue_type_style_index_0_id_5a2bda58_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=style&index=0&id=5a2bda58&lang=scss&scoped=true */ "./resources/assets/js/components/PopupModal.vue?vue&type=style&index=0&id=5a2bda58&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51587,7 +52205,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5a2bda58"],['__file',"resources/assets/js/components/PopupModal.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5a2bda58"],['__file',"resources/assets/js/components/PopupModal.vue"]]) /* hot reload */ if (false) {} @@ -51612,13 +52230,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RadialProgressBar_vue_vue_type_template_id_15738e60_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/RadialProgressBar.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RadialProgressBar_vue_vue_type_template_id_15738e60_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/RadialProgressBar.vue"]]) /* hot reload */ if (false) {} @@ -51640,14 +52258,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShimmerLoading.vue?vue&type=template&id=74356172&scoped=true */ "./resources/assets/js/components/ShimmerLoading.vue?vue&type=template&id=74356172&scoped=true"); /* harmony import */ var _ShimmerLoading_vue_vue_type_style_index_0_id_74356172_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ShimmerLoading.vue?vue&type=style&index=0&id=74356172&lang=scss&scoped=true */ "./resources/assets/js/components/ShimmerLoading.vue?vue&type=style&index=0&id=74356172&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-74356172"],['__file',"resources/assets/js/components/ShimmerLoading.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-74356172"],['__file',"resources/assets/js/components/ShimmerLoading.vue"]]) /* hot reload */ if (false) {} @@ -51670,13 +52288,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SideHelpText_vue_vue_type_template_id_26f141bc_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SideHelpText.vue?vue&type=template&id=26f141bc&ts=true */ "./resources/assets/js/components/SideHelpText.vue?vue&type=template&id=26f141bc&ts=true"); /* harmony import */ var _SideHelpText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SideHelpText.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/SideHelpText.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SideHelpText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SideHelpText_vue_vue_type_template_id_26f141bc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/SideHelpText.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SideHelpText_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SideHelpText_vue_vue_type_template_id_26f141bc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/SideHelpText.vue"]]) /* hot reload */ if (false) {} @@ -51701,13 +52319,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _StepBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _StepBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_StepBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StepBar_vue_vue_type_template_id_161cea40_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/StepBar.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_StepBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StepBar_vue_vue_type_template_id_161cea40_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/StepBar.vue"]]) /* hot reload */ if (false) {} @@ -51732,13 +52350,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLoaderComponent_vue_vue_type_template_id_7d52059a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TableLoaderComponent.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLoaderComponent_vue_vue_type_template_id_7d52059a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TableLoaderComponent.vue"]]) /* hot reload */ if (false) {} @@ -51761,13 +52379,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TablePagination.vue?vue&type=template&id=8c97a5be&ts=true */ "./resources/assets/js/components/TablePagination.vue?vue&type=template&id=8c97a5be&ts=true"); /* harmony import */ var _TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TablePagination.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/TablePagination.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TablePagination.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TablePagination.vue"]]) /* hot reload */ if (false) {} @@ -51790,13 +52408,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ToastMessage.vue?vue&type=template&id=d01d8cd2&ts=true */ "./resources/assets/js/components/ToastMessage.vue?vue&type=template&id=d01d8cd2&ts=true"); /* harmony import */ var _ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToastMessage.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/ToastMessage.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ToastMessage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ToastMessage.vue"]]) /* hot reload */ if (false) {} @@ -51820,7 +52438,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=template&id=37617702&scoped=true&ts=true */ "./resources/assets/js/components/XlsListError.vue?vue&type=template&id=37617702&scoped=true&ts=true"); /* harmony import */ var _XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/XlsListError.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _XlsListError_vue_vue_type_style_index_0_id_37617702_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=style&index=0&id=37617702&scoped=true&lang=css */ "./resources/assets/js/components/XlsListError.vue?vue&type=style&index=0&id=37617702&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -51828,7 +52446,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-37617702"],['__file',"resources/assets/js/components/XlsListError.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-37617702"],['__file',"resources/assets/js/components/XlsListError.vue"]]) /* hot reload */ if (false) {} @@ -51853,13 +52471,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsLoader_vue_vue_type_template_id_7ea4b06a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsLoader_vue_vue_type_template_id_7ea4b06a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsLoader.vue"]]) /* hot reload */ if (false) {} @@ -51884,13 +52502,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsUploadIndicator_vue_vue_type_template_id_02ac2bf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsUploadIndicator.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsUploadIndicator_vue_vue_type_template_id_02ac2bf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsUploadIndicator.vue"]]) /* hot reload */ if (false) {} @@ -51915,13 +52533,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteButton_vue_vue_type_template_id_a93d847c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/DeleteButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteButton_vue_vue_type_template_id_a93d847c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/DeleteButton.vue"]]) /* hot reload */ if (false) {} @@ -51944,13 +52562,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Link.vue?vue&type=template&id=bfe65102&ts=true */ "./resources/assets/js/components/buttons/Link.vue?vue&type=template&id=bfe65102&ts=true"); /* harmony import */ var _Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Link.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/buttons/Link.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/Link.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/Link.vue"]]) /* hot reload */ if (false) {} @@ -51975,13 +52593,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishButton_vue_vue_type_template_id_ecc50828_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/PublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishButton_vue_vue_type_template_id_ecc50828_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/PublishButton.vue"]]) /* hot reload */ if (false) {} @@ -52006,13 +52624,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UnPublishButton_vue_vue_type_template_id_459c3193_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/UnPublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UnPublishButton_vue_vue_type_template_id_459c3193_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/UnPublishButton.vue"]]) /* hot reload */ if (false) {} @@ -52037,13 +52655,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteAction_vue_vue_type_template_id_56bce8ca_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/DeleteAction.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteAction_vue_vue_type_template_id_56bce8ca_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/DeleteAction.vue"]]) /* hot reload */ if (false) {} @@ -52067,7 +52685,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=template&id=f67c7e72&scoped=true&ts=true */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=template&id=f67c7e72&scoped=true&ts=true"); /* harmony import */ var _ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ErrorLists_vue_vue_type_style_index_0_id_f67c7e72_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=style&index=0&id=f67c7e72&lang=scss&scoped=true */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=style&index=0&id=f67c7e72&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52075,7 +52693,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-f67c7e72"],['__file',"resources/assets/js/components/sections/ErrorLists.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-f67c7e72"],['__file',"resources/assets/js/components/sections/ErrorLists.vue"]]) /* hot reload */ if (false) {} @@ -52100,13 +52718,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HaveNotAddedYet_vue_vue_type_template_id_3925ef49_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/HaveNotAddedYet.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HaveNotAddedYet_vue_vue_type_template_id_3925ef49_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/HaveNotAddedYet.vue"]]) /* hot reload */ if (false) {} @@ -52131,13 +52749,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganizationPublishUnpublishButton_vue_vue_type_template_id_2fb8f406_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/OrganizationPublishUnpublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganizationPublishUnpublishButton_vue_vue_type_template_id_2fb8f406_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/OrganizationPublishUnpublishButton.vue"]]) /* hot reload */ if (false) {} @@ -52162,13 +52780,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_1b54e09f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/PageTitle.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_1b54e09f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/PageTitle.vue"]]) /* hot reload */ if (false) {} @@ -52192,7 +52810,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=template&id=5c32bf0c&scoped=true&ts=true */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=template&id=5c32bf0c&scoped=true&ts=true"); /* harmony import */ var _ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ProgressLoader_vue_vue_type_style_index_0_id_5c32bf0c_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=style&index=0&id=5c32bf0c&lang=scss&scoped=true */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=style&index=0&id=5c32bf0c&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52200,7 +52818,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5c32bf0c"],['__file',"resources/assets/js/components/sections/ProgressLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5c32bf0c"],['__file',"resources/assets/js/components/sections/ProgressLoader.vue"]]) /* hot reload */ if (false) {} @@ -52226,7 +52844,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _StickyErrors_vue_vue_type_style_index_0_id_1e38d10e_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./StickyErrors.vue?vue&type=style&index=0&id=1e38d10e&lang=scss&scoped=true */ "./resources/assets/js/components/sections/StickyErrors.vue?vue&type=style&index=0&id=1e38d10e&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52234,7 +52852,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StickyErrors_vue_vue_type_template_id_1e38d10e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1e38d10e"],['__file',"resources/assets/js/components/sections/StickyErrors.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StickyErrors_vue_vue_type_template_id_1e38d10e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1e38d10e"],['__file',"resources/assets/js/components/sections/StickyErrors.vue"]]) /* hot reload */ if (false) {} @@ -52258,7 +52876,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=template&id=6f17ec45&scoped=true&ts=true */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=template&id=6f17ec45&scoped=true&ts=true"); /* harmony import */ var _UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _UploadedErrors_vue_vue_type_style_index_0_id_6f17ec45_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=style&index=0&id=6f17ec45&lang=scss&scoped=true */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=style&index=0&id=6f17ec45&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52266,7 +52884,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6f17ec45"],['__file',"resources/assets/js/components/sections/UploadedErrors.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6f17ec45"],['__file',"resources/assets/js/components/sections/UploadedErrors.vue"]]) /* hot reload */ if (false) {} @@ -52288,14 +52906,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./spinnerLoader.vue?vue&type=template&id=00892df6 */ "./resources/assets/js/components/spinnerLoader.vue?vue&type=template&id=00892df6"); /* harmony import */ var _spinnerLoader_vue_vue_type_style_index_0_id_00892df6_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./spinnerLoader.vue?vue&type=style&index=0&id=00892df6&lang=css */ "./resources/assets/js/components/spinnerLoader.vue?vue&type=style&index=0&id=00892df6&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/spinnerLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/spinnerLoader.vue"]]) /* hot reload */ if (false) {} @@ -52318,13 +52936,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ElementStatus.vue?vue&type=template&id=1eb8deb0&ts=true */ "./resources/assets/js/components/status/ElementStatus.vue?vue&type=template&id=1eb8deb0&ts=true"); /* harmony import */ var _ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ElementStatus.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/status/ElementStatus.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/ElementStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/ElementStatus.vue"]]) /* hot reload */ if (false) {} @@ -52347,13 +52965,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PreviouslyPublished.vue?vue&type=template&id=1f2f9ab8&ts=true */ "./resources/assets/js/components/status/PreviouslyPublished.vue?vue&type=template&id=1f2f9ab8&ts=true"); /* harmony import */ var _PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PreviouslyPublished.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/status/PreviouslyPublished.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/PreviouslyPublished.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/PreviouslyPublished.vue"]]) /* hot reload */ if (false) {} @@ -52378,13 +52996,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDefaultValue_vue_vue_type_template_id_23ee375c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDefaultValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDefaultValue_vue_vue_type_template_id_23ee375c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDefaultValue.vue"]]) /* hot reload */ if (false) {} @@ -52409,13 +53027,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDetail_vue_vue_type_template_id_4e402b06_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDetail_vue_vue_type_template_id_4e402b06_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDetail.vue"]]) /* hot reload */ if (false) {} @@ -52441,7 +53059,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ActivityIndex_vue_vue_type_style_index_0_id_0a571fd6_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActivityIndex.vue?vue&type=style&index=0&id=0a571fd6&lang=scss */ "./resources/assets/js/views/activity/ActivityIndex.vue?vue&type=style&index=0&id=0a571fd6&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52449,7 +53067,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityIndex_vue_vue_type_template_id_0a571fd6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityIndex.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityIndex_vue_vue_type_template_id_0a571fd6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityIndex.vue"]]) /* hot reload */ if (false) {} @@ -52475,7 +53093,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _CreateModal_vue_vue_type_style_index_0_id_c7ca28b8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateModal.vue?vue&type=style&index=0&id=c7ca28b8&lang=scss&scoped=true */ "./resources/assets/js/views/activity/CreateModal.vue?vue&type=style&index=0&id=c7ca28b8&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52483,7 +53101,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CreateModal_vue_vue_type_template_id_c7ca28b8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-c7ca28b8"],['__file',"resources/assets/js/views/activity/CreateModal.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CreateModal_vue_vue_type_template_id_c7ca28b8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-c7ca28b8"],['__file',"resources/assets/js/views/activity/CreateModal.vue"]]) /* hot reload */ if (false) {} @@ -52508,13 +53126,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishSelected_vue_vue_type_template_id_3fb1e1cc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/PublishSelected.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishSelected_vue_vue_type_template_id_3fb1e1cc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/PublishSelected.vue"]]) /* hot reload */ if (false) {} @@ -52537,13 +53155,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RefreshToast.vue?vue&type=template&id=4011897a&ts=true */ "./resources/assets/js/views/activity/bulk-publish/RefreshToast.vue?vue&type=template&id=4011897a&ts=true"); /* harmony import */ var _RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RefreshToast.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/bulk-publish/RefreshToast.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/RefreshToast.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/RefreshToast.vue"]]) /* hot reload */ if (false) {} @@ -52568,13 +53186,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BulkPublish_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BulkPublish_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BulkPublish_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkPublish_vue_vue_type_template_id_6c3b4568_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/BulkPublish.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BulkPublish_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkPublish_vue_vue_type_template_id_6c3b4568_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/BulkPublish.vue"]]) /* hot reload */ if (false) {} @@ -52597,7 +53215,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _RollingLoaderComponent_vue_vue_type_template_id_0b3bfb46_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RollingLoaderComponent.vue?vue&type=template&id=0b3bfb46&scoped=true */ "./resources/assets/js/views/activity/bulk-publish/bulkPublishModal/RollingLoaderComponent.vue?vue&type=template&id=0b3bfb46&scoped=true"); /* harmony import */ var _RollingLoaderComponent_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RollingLoaderComponent.vue?vue&type=script&setup=true&lang=js */ "./resources/assets/js/views/activity/bulk-publish/bulkPublishModal/RollingLoaderComponent.vue?vue&type=script&setup=true&lang=js"); /* harmony import */ var _RollingLoaderComponent_vue_vue_type_style_index_0_id_0b3bfb46_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RollingLoaderComponent.vue?vue&type=style&index=0&id=0b3bfb46&scoped=true&lang=scss */ "./resources/assets/js/views/activity/bulk-publish/bulkPublishModal/RollingLoaderComponent.vue?vue&type=style&index=0&id=0b3bfb46&scoped=true&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52605,7 +53223,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_RollingLoaderComponent_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RollingLoaderComponent_vue_vue_type_template_id_0b3bfb46_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0b3bfb46"],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/RollingLoaderComponent.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_RollingLoaderComponent_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RollingLoaderComponent_vue_vue_type_template_id_0b3bfb46_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0b3bfb46"],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/RollingLoaderComponent.vue"]]) /* hot reload */ if (false) {} @@ -52630,13 +53248,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _CheckingActivities_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _CheckingActivities_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_CheckingActivities_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CheckingActivities_vue_vue_type_template_id_dda3ad84_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/checkingActivities/CheckingActivities.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_CheckingActivities_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CheckingActivities_vue_vue_type_template_id_dda3ad84_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/checkingActivities/CheckingActivities.vue"]]) /* hot reload */ if (false) {} @@ -52662,7 +53280,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IatiValidate_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IatiValidate_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _IatiValidate_vue_vue_type_style_index_0_id_77f14f3e_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IatiValidate.vue?vue&type=style&index=0&id=77f14f3e&scoped=true&lang=scss */ "./resources/assets/js/views/activity/bulk-publish/bulkPublishModal/iatiValidate/IatiValidate.vue?vue&type=style&index=0&id=77f14f3e&scoped=true&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -52670,7 +53288,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_IatiValidate_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiValidate_vue_vue_type_template_id_77f14f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-77f14f3e"],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/iatiValidate/IatiValidate.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_IatiValidate_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiValidate_vue_vue_type_template_id_77f14f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-77f14f3e"],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/iatiValidate/IatiValidate.vue"]]) /* hot reload */ if (false) {} @@ -52695,13 +53313,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishingActivity_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishingActivity_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingActivity_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingActivity_vue_vue_type_template_id_25f4bd44_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/publishingActivity/PublishingActivity.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingActivity_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingActivity_vue_vue_type_template_id_25f4bd44_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/bulkPublishModal/publishingActivity/PublishingActivity.vue"]]) /* hot reload */ if (false) {} @@ -52724,13 +53342,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TabIndex_vue_vue_type_template_id_e4d12920_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TabIndex.vue?vue&type=template&id=e4d12920&ts=true */ "./resources/assets/js/views/activity/bulk-publish/tabs/TabIndex.vue?vue&type=template&id=e4d12920&ts=true"); /* harmony import */ var _TabIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TabIndex.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/bulk-publish/tabs/TabIndex.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TabIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TabIndex_vue_vue_type_template_id_e4d12920_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/tabs/TabIndex.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TabIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TabIndex_vue_vue_type_template_id_e4d12920_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/tabs/TabIndex.vue"]]) /* hot reload */ if (false) {} @@ -52753,13 +53371,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _WizardIndex_vue_vue_type_template_id_54a16716_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WizardIndex.vue?vue&type=template&id=54a16716&ts=true */ "./resources/assets/js/views/activity/bulk-publish/wizardSteps/WizardIndex.vue?vue&type=template&id=54a16716&ts=true"); /* harmony import */ var _WizardIndex_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WizardIndex.vue?vue&type=script&lang=ts&setup=true */ "./resources/assets/js/views/activity/bulk-publish/wizardSteps/WizardIndex.vue?vue&type=script&lang=ts&setup=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WizardIndex_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WizardIndex_vue_vue_type_template_id_54a16716_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/wizardSteps/WizardIndex.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WizardIndex_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WizardIndex_vue_vue_type_template_id_54a16716_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/wizardSteps/WizardIndex.vue"]]) /* hot reload */ if (false) {} @@ -52784,13 +53402,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDate_vue_vue_type_template_id_0138ea88_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ActivityDate.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDate_vue_vue_type_template_id_0138ea88_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ActivityDate.vue"]]) /* hot reload */ if (false) {} @@ -52815,13 +53433,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Conditions_vue_vue_type_template_id_bafb25ba_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Conditions.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Conditions_vue_vue_type_template_id_bafb25ba_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Conditions.vue"]]) /* hot reload */ if (false) {} @@ -52844,13 +53462,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContactInfo.vue?vue&type=template&id=29a7d313&ts=true */ "./resources/assets/js/views/activity/elements/ContactInfo.vue?vue&type=template&id=29a7d313&ts=true"); /* harmony import */ var _ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ContactInfo.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/ContactInfo.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ContactInfo.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ContactInfo.vue"]]) /* hot reload */ if (false) {} @@ -52873,13 +53491,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=c7d799be&ts=true */ "./resources/assets/js/views/activity/elements/Description.vue?vue&type=template&id=c7d799be&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -52902,13 +53520,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HumanitarianScope.vue?vue&type=template&id=cdfb7468&ts=true */ "./resources/assets/js/views/activity/elements/HumanitarianScope.vue?vue&type=template&id=cdfb7468&ts=true"); /* harmony import */ var _HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HumanitarianScope.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/HumanitarianScope.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/HumanitarianScope.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/HumanitarianScope.vue"]]) /* hot reload */ if (false) {} @@ -52931,13 +53549,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IatiIdentifier.vue?vue&type=template&id=5261affe&ts=true */ "./resources/assets/js/views/activity/elements/IatiIdentifier.vue?vue&type=template&id=5261affe&ts=true"); /* harmony import */ var _IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IatiIdentifier.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/IatiIdentifier.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/IatiIdentifier.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/IatiIdentifier.vue"]]) /* hot reload */ if (false) {} @@ -52960,13 +53578,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LegacyData.vue?vue&type=template&id=cb3e4804&ts=true */ "./resources/assets/js/views/activity/elements/LegacyData.vue?vue&type=template&id=cb3e4804&ts=true"); /* harmony import */ var _LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LegacyData.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/LegacyData.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/LegacyData.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/LegacyData.vue"]]) /* hot reload */ if (false) {} @@ -52989,13 +53607,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Location.vue?vue&type=template&id=12c2e860&ts=true */ "./resources/assets/js/views/activity/elements/Location.vue?vue&type=template&id=12c2e860&ts=true"); /* harmony import */ var _Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Location.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Location.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Location.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Location.vue"]]) /* hot reload */ if (false) {} @@ -53018,13 +53636,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OtherIdentifier.vue?vue&type=template&id=78b64404&ts=true */ "./resources/assets/js/views/activity/elements/OtherIdentifier.vue?vue&type=template&id=78b64404&ts=true"); /* harmony import */ var _OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OtherIdentifier.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/OtherIdentifier.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/OtherIdentifier.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/OtherIdentifier.vue"]]) /* hot reload */ if (false) {} @@ -53047,13 +53665,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ParticipatingOrg.vue?vue&type=template&id=7d4dab74&ts=true */ "./resources/assets/js/views/activity/elements/ParticipatingOrg.vue?vue&type=template&id=7d4dab74&ts=true"); /* harmony import */ var _ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ParticipatingOrg.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/ParticipatingOrg.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ParticipatingOrg.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ParticipatingOrg.vue"]]) /* hot reload */ if (false) {} @@ -53078,13 +53696,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PlannedDisbursement_vue_vue_type_template_id_0172c2ac_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PlannedDisbursement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PlannedDisbursement_vue_vue_type_template_id_0172c2ac_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PlannedDisbursement.vue"]]) /* hot reload */ if (false) {} @@ -53109,13 +53727,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PolicyMarker_vue_vue_type_template_id_bd988892_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PolicyMarker.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PolicyMarker_vue_vue_type_template_id_bd988892_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PolicyMarker.vue"]]) /* hot reload */ if (false) {} @@ -53138,13 +53756,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=template&id=7f18be30&ts=true */ "./resources/assets/js/views/activity/elements/RecipientCountry.vue?vue&type=template&id=7f18be30&ts=true"); /* harmony import */ var _RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/RecipientCountry.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientCountry.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientCountry.vue"]]) /* hot reload */ if (false) {} @@ -53167,13 +53785,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=template&id=ebd662dc&ts=true */ "./resources/assets/js/views/activity/elements/RecipientRegion.vue?vue&type=template&id=ebd662dc&ts=true"); /* harmony import */ var _RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/RecipientRegion.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientRegion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientRegion.vue"]]) /* hot reload */ if (false) {} @@ -53198,13 +53816,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RelatedActivity_vue_vue_type_template_id_2ca04c02_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RelatedActivity.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RelatedActivity_vue_vue_type_template_id_2ca04c02_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RelatedActivity.vue"]]) /* hot reload */ if (false) {} @@ -53227,13 +53845,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportingOrganization.vue?vue&type=template&id=438b0ae6&ts=true */ "./resources/assets/js/views/activity/elements/ReportingOrganization.vue?vue&type=template&id=438b0ae6&ts=true"); /* harmony import */ var _ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportingOrganization.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/ReportingOrganization.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ReportingOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ReportingOrganization.vue"]]) /* hot reload */ if (false) {} @@ -53258,13 +53876,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Result_vue_vue_type_template_id_277cb4f0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Result.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Result_vue_vue_type_template_id_277cb4f0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Result.vue"]]) /* hot reload */ if (false) {} @@ -53287,13 +53905,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sector.vue?vue&type=template&id=32946851&ts=true */ "./resources/assets/js/views/activity/elements/Sector.vue?vue&type=template&id=32946851&ts=true"); /* harmony import */ var _Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sector.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Sector.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Sector.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Sector.vue"]]) /* hot reload */ if (false) {} @@ -53318,13 +53936,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Tag_vue_vue_type_template_id_01196682_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Tag.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Tag_vue_vue_type_template_id_01196682_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Tag.vue"]]) /* hot reload */ if (false) {} @@ -53347,13 +53965,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Title.vue?vue&type=template&id=474a713d&ts=true */ "./resources/assets/js/views/activity/elements/Title.vue?vue&type=template&id=474a713d&ts=true"); /* harmony import */ var _Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Title.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Title.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Title.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Title.vue"]]) /* hot reload */ if (false) {} @@ -53378,13 +53996,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Transactions_vue_vue_type_template_id_2b8aff00_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Transactions.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Transactions_vue_vue_type_template_id_2b8aff00_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Transactions.vue"]]) /* hot reload */ if (false) {} @@ -53409,13 +54027,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorDetail_vue_vue_type_template_id_5ff17772_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorDetail_vue_vue_type_template_id_5ff17772_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorDetail.vue"]]) /* hot reload */ if (false) {} @@ -53440,13 +54058,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorList_vue_vue_type_template_id_6f78cf7f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorList_vue_vue_type_template_id_6f78cf7f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorList.vue"]]) /* hot reload */ if (false) {} @@ -53469,13 +54087,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AggregationStatus.vue?vue&type=template&id=dd763e4c&ts=true */ "./resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue?vue&type=template&id=dd763e4c&ts=true"); /* harmony import */ var _AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AggregationStatus.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue"]]) /* hot reload */ if (false) {} @@ -53498,13 +54116,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Baseline.vue?vue&type=template&id=6aa6d062&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Baseline.vue?vue&type=template&id=6aa6d062&ts=true"); /* harmony import */ var _Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Baseline.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Baseline.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Baseline.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Baseline.vue"]]) /* hot reload */ if (false) {} @@ -53527,13 +54145,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=775b61e2&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Description.vue?vue&type=template&id=775b61e2&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -53558,13 +54176,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_3cb2603f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_3cb2603f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -53587,13 +54205,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IndicatorAscending.vue?vue&type=template&id=f7ed6ada&ts=true */ "./resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue?vue&type=template&id=f7ed6ada&ts=true"); /* harmony import */ var _IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IndicatorAscending.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue"]]) /* hot reload */ if (false) {} @@ -53616,13 +54234,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Measure.vue?vue&type=template&id=7a64d944&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Measure.vue?vue&type=template&id=7a64d944&ts=true"); /* harmony import */ var _Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Measure.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Measure.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Measure.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Measure.vue"]]) /* hot reload */ if (false) {} @@ -53647,13 +54265,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Period_vue_vue_type_template_id_5816846a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Period.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Period_vue_vue_type_template_id_5816846a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Period.vue"]]) /* hot reload */ if (false) {} @@ -53676,13 +54294,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Reference.vue?vue&type=template&id=485a4d9e&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Reference.vue?vue&type=template&id=485a4d9e&ts=true"); /* harmony import */ var _Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Reference.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Reference.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Reference.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Reference.vue"]]) /* hot reload */ if (false) {} @@ -53705,13 +54323,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Title.vue?vue&type=template&id=8f6ff684&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Title.vue?vue&type=template&id=8f6ff684&ts=true"); /* harmony import */ var _Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Title.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Title.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Title.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Title.vue"]]) /* hot reload */ if (false) {} @@ -53737,7 +54355,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OnBoardingIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OnBoardingIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _OnBoardingIndex_vue_vue_type_style_index_0_id_0dff8460_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OnBoardingIndex.vue?vue&type=style&index=0&id=0dff8460&scoped=true&lang=css */ "./resources/assets/js/views/activity/onboarding/OnBoardingIndex.vue?vue&type=style&index=0&id=0dff8460&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -53745,7 +54363,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OnBoardingIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OnBoardingIndex_vue_vue_type_template_id_0dff8460_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0dff8460"],['__file',"resources/assets/js/views/activity/onboarding/OnBoardingIndex.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OnBoardingIndex_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OnBoardingIndex_vue_vue_type_template_id_0dff8460_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0dff8460"],['__file',"resources/assets/js/views/activity/onboarding/OnBoardingIndex.vue"]]) /* hot reload */ if (false) {} @@ -53770,13 +54388,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityStep_vue_vue_type_template_id_65efb60a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/onboarding/Steps/ActivityStep.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityStep_vue_vue_type_template_id_65efb60a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/onboarding/Steps/ActivityStep.vue"]]) /* hot reload */ if (false) {} @@ -53802,7 +54420,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DefaultValuesStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DefaultValuesStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _DefaultValuesStep_vue_vue_type_style_index_0_id_61a451a0_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DefaultValuesStep.vue?vue&type=style&index=0&id=61a451a0&scoped=true&lang=css */ "./resources/assets/js/views/activity/onboarding/Steps/DefaultValuesStep.vue?vue&type=style&index=0&id=61a451a0&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -53810,7 +54428,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DefaultValuesStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DefaultValuesStep_vue_vue_type_template_id_61a451a0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-61a451a0"],['__file',"resources/assets/js/views/activity/onboarding/Steps/DefaultValuesStep.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DefaultValuesStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DefaultValuesStep_vue_vue_type_template_id_61a451a0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-61a451a0"],['__file',"resources/assets/js/views/activity/onboarding/Steps/DefaultValuesStep.vue"]]) /* hot reload */ if (false) {} @@ -53836,7 +54454,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationDataStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationDataStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _OrganisationDataStep_vue_vue_type_style_index_0_id_fd0542c2_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OrganisationDataStep.vue?vue&type=style&index=0&id=fd0542c2&scoped=true&lang=css */ "./resources/assets/js/views/activity/onboarding/Steps/OrganisationDataStep.vue?vue&type=style&index=0&id=fd0542c2&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -53844,7 +54462,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationDataStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationDataStep_vue_vue_type_template_id_fd0542c2_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-fd0542c2"],['__file',"resources/assets/js/views/activity/onboarding/Steps/OrganisationDataStep.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationDataStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationDataStep_vue_vue_type_template_id_fd0542c2_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-fd0542c2"],['__file',"resources/assets/js/views/activity/onboarding/Steps/OrganisationDataStep.vue"]]) /* hot reload */ if (false) {} @@ -53870,7 +54488,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishingSettingsStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishingSettingsStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _PublishingSettingsStep_vue_vue_type_style_index_0_id_473b261e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PublishingSettingsStep.vue?vue&type=style&index=0&id=473b261e&scoped=true&lang=css */ "./resources/assets/js/views/activity/onboarding/Steps/PublishingSettingsStep.vue?vue&type=style&index=0&id=473b261e&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -53878,7 +54496,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PublishingSettingsStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingSettingsStep_vue_vue_type_template_id_473b261e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-473b261e"],['__file',"resources/assets/js/views/activity/onboarding/Steps/PublishingSettingsStep.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PublishingSettingsStep_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingSettingsStep_vue_vue_type_template_id_473b261e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-473b261e"],['__file',"resources/assets/js/views/activity/onboarding/Steps/PublishingSettingsStep.vue"]]) /* hot reload */ if (false) {} @@ -53902,7 +54520,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=template&id=5a40fcf4&ts=true */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=template&id=5a40fcf4&ts=true"); /* harmony import */ var _ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ActivitiesElements_vue_vue_type_style_index_0_id_5a40fcf4_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=style&index=0&id=5a40fcf4&lang=scss */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=style&index=0&id=5a40fcf4&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -53910,7 +54528,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivitiesElements.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivitiesElements.vue"]]) /* hot reload */ if (false) {} @@ -53935,13 +54553,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityElement_vue_vue_type_template_id_7f5d60a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivityElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityElement_vue_vue_type_template_id_7f5d60a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivityElement.vue"]]) /* hot reload */ if (false) {} @@ -53966,13 +54584,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AddActivityButton_vue_vue_type_template_id_050e173c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/AddActivityButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AddActivityButton_vue_vue_type_template_id_050e173c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/AddActivityButton.vue"]]) /* hot reload */ if (false) {} @@ -53998,7 +54616,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _DownloadActivityButton_vue_vue_type_style_index_0_id_661e6f8e_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DownloadActivityButton.vue?vue&type=style&index=0&id=661e6f8e&scoped=true&lang=scss */ "./resources/assets/js/views/activity/partials/DownloadActivityButton.vue?vue&type=style&index=0&id=661e6f8e&scoped=true&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54006,7 +54624,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DownloadActivityButton_vue_vue_type_template_id_661e6f8e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-661e6f8e"],['__file',"resources/assets/js/views/activity/partials/DownloadActivityButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DownloadActivityButton_vue_vue_type_template_id_661e6f8e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-661e6f8e"],['__file',"resources/assets/js/views/activity/partials/DownloadActivityButton.vue"]]) /* hot reload */ if (false) {} @@ -54031,13 +54649,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementsNote_vue_vue_type_template_id_5bc041f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ElementsNote.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementsNote_vue_vue_type_template_id_5bc041f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ElementsNote.vue"]]) /* hot reload */ if (false) {} @@ -54062,13 +54680,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmptyActivity_vue_vue_type_template_id_9aef9688_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/EmptyActivity.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmptyActivity_vue_vue_type_template_id_9aef9688_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/EmptyActivity.vue"]]) /* hot reload */ if (false) {} @@ -54093,13 +54711,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_7589e86e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/PageTitle.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_7589e86e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/PageTitle.vue"]]) /* hot reload */ if (false) {} @@ -54122,13 +54740,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SidebarHelpBlock.vue?vue&type=template&id=fef26a80&ts=true */ "./resources/assets/js/views/activity/partials/SidebarHelpBlock.vue?vue&type=template&id=fef26a80&ts=true"); /* harmony import */ var _SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarHelpBlock.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/partials/SidebarHelpBlock.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/SidebarHelpBlock.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/SidebarHelpBlock.vue"]]) /* hot reload */ if (false) {} @@ -54154,7 +54772,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _TableLayout_vue_vue_type_style_index_0_id_5d84a1d8_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableLayout.vue?vue&type=style&index=0&id=5d84a1d8&scoped=true&lang=css */ "./resources/assets/js/views/activity/partials/TableLayout.vue?vue&type=style&index=0&id=5d84a1d8&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54162,7 +54780,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLayout_vue_vue_type_template_id_5d84a1d8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5d84a1d8"],['__file',"resources/assets/js/views/activity/partials/TableLayout.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLayout_vue_vue_type_template_id_5d84a1d8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5d84a1d8"],['__file',"resources/assets/js/views/activity/partials/TableLayout.vue"]]) /* hot reload */ if (false) {} @@ -54187,13 +54805,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsDetail_vue_vue_type_template_id_72e3b599_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsDetail_vue_vue_type_template_id_72e3b599_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsDetail.vue"]]) /* hot reload */ if (false) {} @@ -54218,13 +54836,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsList_vue_vue_type_template_id_d33b2934_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsList_vue_vue_type_template_id_d33b2934_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsList.vue"]]) /* hot reload */ if (false) {} @@ -54247,13 +54865,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActualValue.vue?vue&type=template&id=79a88fc5&ts=true */ "./resources/assets/js/views/activity/periods/elements/ActualValue.vue?vue&type=template&id=79a88fc5&ts=true"); /* harmony import */ var _ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActualValue.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/periods/elements/ActualValue.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/ActualValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/ActualValue.vue"]]) /* hot reload */ if (false) {} @@ -54276,13 +54894,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TargetValue.vue?vue&type=template&id=0e571b22&ts=true */ "./resources/assets/js/views/activity/periods/elements/TargetValue.vue?vue&type=template&id=0e571b22&ts=true"); /* harmony import */ var _TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TargetValue.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/periods/elements/TargetValue.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/TargetValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/TargetValue.vue"]]) /* hot reload */ if (false) {} @@ -54307,13 +54925,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultDetail_vue_vue_type_template_id_6c20f178_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultDetail_vue_vue_type_template_id_6c20f178_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultDetail.vue"]]) /* hot reload */ if (false) {} @@ -54338,13 +54956,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultElement_vue_vue_type_template_id_18fe4219_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultElement_vue_vue_type_template_id_18fe4219_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultElement.vue"]]) /* hot reload */ if (false) {} @@ -54369,13 +54987,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultList_vue_vue_type_template_id_aa06a85e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultList_vue_vue_type_template_id_aa06a85e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultList.vue"]]) /* hot reload */ if (false) {} @@ -54398,13 +55016,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DocumentLink.vue?vue&type=template&id=0e2e8307&ts=true */ "./resources/assets/js/views/activity/results/elements/DocumentLink.vue?vue&type=template&id=0e2e8307&ts=true"); /* harmony import */ var _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DocumentLink.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/DocumentLink.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -54429,13 +55047,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Indicator_vue_vue_type_template_id_4c2e682d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Indicator.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Indicator_vue_vue_type_template_id_4c2e682d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Indicator.vue"]]) /* hot reload */ if (false) {} @@ -54458,13 +55076,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Reference.vue?vue&type=template&id=81c2292e&ts=true */ "./resources/assets/js/views/activity/results/elements/Reference.vue?vue&type=template&id=81c2292e&ts=true"); /* harmony import */ var _Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Reference.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/Reference.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Reference.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Reference.vue"]]) /* hot reload */ if (false) {} @@ -54487,13 +55105,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResultType.vue?vue&type=template&id=3c21c46e&ts=true */ "./resources/assets/js/views/activity/results/elements/ResultType.vue?vue&type=template&id=3c21c46e&ts=true"); /* harmony import */ var _ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResultType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/ResultType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/ResultType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/ResultType.vue"]]) /* hot reload */ if (false) {} @@ -54516,13 +55134,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TitleDescription.vue?vue&type=template&id=d12fed54&ts=true */ "./resources/assets/js/views/activity/results/elements/TitleDescription.vue?vue&type=template&id=d12fed54&ts=true"); /* harmony import */ var _TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TitleDescription.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/TitleDescription.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/TitleDescription.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/TitleDescription.vue"]]) /* hot reload */ if (false) {} @@ -54547,13 +55165,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDetail_vue_vue_type_template_id_07c06c12_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDetail_vue_vue_type_template_id_07c06c12_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionDetail.vue"]]) /* hot reload */ if (false) {} @@ -54578,13 +55196,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionElement_vue_vue_type_template_id_d56c11ea_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionElement_vue_vue_type_template_id_d56c11ea_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionElement.vue"]]) /* hot reload */ if (false) {} @@ -54609,13 +55227,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionList_vue_vue_type_template_id_cc8727c2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionList_vue_vue_type_template_id_cc8727c2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionList.vue"]]) /* hot reload */ if (false) {} @@ -54638,13 +55256,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AidType.vue?vue&type=template&id=df96c96a&ts=true */ "./resources/assets/js/views/activity/transactions/elements/AidType.vue?vue&type=template&id=df96c96a&ts=true"); /* harmony import */ var _AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AidType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/AidType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/AidType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/AidType.vue"]]) /* hot reload */ if (false) {} @@ -54667,13 +55285,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=22a8a731&ts=true */ "./resources/assets/js/views/activity/transactions/elements/Description.vue?vue&type=template&id=22a8a731&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -54696,13 +55314,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DisbursementChannel.vue?vue&type=template&id=c7853052&ts=true */ "./resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue?vue&type=template&id=c7853052&ts=true"); /* harmony import */ var _DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DisbursementChannel.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue"]]) /* hot reload */ if (false) {} @@ -54725,13 +55343,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FinanceType.vue?vue&type=template&id=e5c7c52e&ts=true */ "./resources/assets/js/views/activity/transactions/elements/FinanceType.vue?vue&type=template&id=e5c7c52e&ts=true"); /* harmony import */ var _FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FinanceType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/FinanceType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FinanceType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FinanceType.vue"]]) /* hot reload */ if (false) {} @@ -54754,13 +55372,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlowType.vue?vue&type=template&id=0e406aa3&ts=true */ "./resources/assets/js/views/activity/transactions/elements/FlowType.vue?vue&type=template&id=0e406aa3&ts=true"); /* harmony import */ var _FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FlowType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/FlowType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FlowType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FlowType.vue"]]) /* hot reload */ if (false) {} @@ -54783,13 +55401,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProviderOrganization.vue?vue&type=template&id=35ef685f&ts=true */ "./resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue?vue&type=template&id=35ef685f&ts=true"); /* harmony import */ var _ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProviderOrganization.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue"]]) /* hot reload */ if (false) {} @@ -54812,13 +55430,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReceiverOrganization.vue?vue&type=template&id=8a08df46&ts=true */ "./resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue?vue&type=template&id=8a08df46&ts=true"); /* harmony import */ var _ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReceiverOrganization.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue"]]) /* hot reload */ if (false) {} @@ -54841,13 +55459,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=template&id=43d536d8&ts=true */ "./resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue?vue&type=template&id=43d536d8&ts=true"); /* harmony import */ var _RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue"]]) /* hot reload */ if (false) {} @@ -54870,13 +55488,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=template&id=0a30baa2&ts=true */ "./resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue?vue&type=template&id=0a30baa2&ts=true"); /* harmony import */ var _RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue"]]) /* hot reload */ if (false) {} @@ -54899,13 +55517,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sector.vue?vue&type=template&id=4eebaa41&ts=true */ "./resources/assets/js/views/activity/transactions/elements/Sector.vue?vue&type=template&id=4eebaa41&ts=true"); /* harmony import */ var _Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sector.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/Sector.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Sector.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Sector.vue"]]) /* hot reload */ if (false) {} @@ -54928,13 +55546,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TiedStatus.vue?vue&type=template&id=57089841&ts=true */ "./resources/assets/js/views/activity/transactions/elements/TiedStatus.vue?vue&type=template&id=57089841&ts=true"); /* harmony import */ var _TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TiedStatus.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/TiedStatus.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TiedStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TiedStatus.vue"]]) /* hot reload */ if (false) {} @@ -54959,13 +55577,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDate_vue_vue_type_template_id_612fcc61_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionDate.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDate_vue_vue_type_template_id_612fcc61_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionDate.vue"]]) /* hot reload */ if (false) {} @@ -54988,13 +55606,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TransactionType.vue?vue&type=template&id=63f67426&ts=true */ "./resources/assets/js/views/activity/transactions/elements/TransactionType.vue?vue&type=template&id=63f67426&ts=true"); /* harmony import */ var _TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TransactionType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/TransactionType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionType.vue"]]) /* hot reload */ if (false) {} @@ -55019,13 +55637,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Value_vue_vue_type_template_id_16972834_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Value.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Value_vue_vue_type_template_id_16972834_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Value.vue"]]) /* hot reload */ if (false) {} @@ -55050,13 +55668,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AuditListing_vue_vue_type_template_id_fb619f20_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/audit/AuditListing.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AuditListing_vue_vue_type_template_id_fb619f20_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/audit/AuditListing.vue"]]) /* hot reload */ if (false) {} @@ -55081,13 +55699,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardGraph_vue_vue_type_template_id_32257f70_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardGraph.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardGraph_vue_vue_type_template_id_32257f70_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardGraph.vue"]]) /* hot reload */ if (false) {} @@ -55113,7 +55731,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _DashboardListSection_vue_vue_type_style_index_0_id_4f225d3e_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DashboardListSection.vue?vue&type=style&index=0&id=4f225d3e&lang=scss */ "./resources/assets/js/views/dashboard/DashboardListSection.vue?vue&type=style&index=0&id=4f225d3e&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55121,7 +55739,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardListSection_vue_vue_type_template_id_4f225d3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardListSection.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardListSection_vue_vue_type_template_id_4f225d3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardListSection.vue"]]) /* hot reload */ if (false) {} @@ -55146,13 +55764,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardPage_vue_vue_type_template_id_e119c3f6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardPage_vue_vue_type_template_id_e119c3f6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardPage.vue"]]) /* hot reload */ if (false) {} @@ -55177,13 +55795,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardStatsSection_vue_vue_type_template_id_27c6fb3c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardStatsSection.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardStatsSection_vue_vue_type_template_id_27c6fb3c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardStatsSection.vue"]]) /* hot reload */ if (false) {} @@ -55208,13 +55826,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityUpload_vue_vue_type_template_id_0ed5fdd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityUpload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityUpload_vue_vue_type_template_id_0ed5fdd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityUpload.vue"]]) /* hot reload */ if (false) {} @@ -55239,13 +55857,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityXlsUpload_vue_vue_type_template_id_2807c08c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityXlsUpload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityXlsUpload_vue_vue_type_template_id_2807c08c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityXlsUpload.vue"]]) /* hot reload */ if (false) {} @@ -55271,7 +55889,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ImportList_vue_vue_type_style_index_0_id_40d7870a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ImportList.vue?vue&type=style&index=0&id=40d7870a&lang=scss&scoped=true */ "./resources/assets/js/views/import/ImportList.vue?vue&type=style&index=0&id=40d7870a&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55279,7 +55897,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportList_vue_vue_type_template_id_40d7870a_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-40d7870a"],['__file',"resources/assets/js/views/import/ImportList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportList_vue_vue_type_template_id_40d7870a_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-40d7870a"],['__file',"resources/assets/js/views/import/ImportList.vue"]]) /* hot reload */ if (false) {} @@ -55304,13 +55922,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportPlaceholder_vue_vue_type_template_id_5d148d37_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ImportPlaceholder.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportPlaceholder_vue_vue_type_template_id_5d148d37_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ImportPlaceholder.vue"]]) /* hot reload */ if (false) {} @@ -55334,7 +55952,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListElement.vue?vue&type=template&id=9a608432&scoped=true&ts=true */ "./resources/assets/js/views/import/ListElement.vue?vue&type=template&id=9a608432&scoped=true&ts=true"); /* harmony import */ var _ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ListElement.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/import/ListElement.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ListElement_vue_vue_type_style_index_0_id_9a608432_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ListElement.vue?vue&type=style&index=0&id=9a608432&scoped=true&lang=css */ "./resources/assets/js/views/import/ListElement.vue?vue&type=style&index=0&id=9a608432&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55342,7 +55960,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-9a608432"],['__file',"resources/assets/js/views/import/ListElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-9a608432"],['__file',"resources/assets/js/views/import/ListElement.vue"]]) /* hot reload */ if (false) {} @@ -55368,7 +55986,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _XlsList_vue_vue_type_style_index_0_id_5f5008b4_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./XlsList.vue?vue&type=style&index=0&id=5f5008b4&scoped=true&lang=css */ "./resources/assets/js/views/import/XlsList.vue?vue&type=style&index=0&id=5f5008b4&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55376,7 +55994,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsList_vue_vue_type_template_id_5f5008b4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5f5008b4"],['__file',"resources/assets/js/views/import/XlsList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsList_vue_vue_type_template_id_5f5008b4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5f5008b4"],['__file',"resources/assets/js/views/import/XlsList.vue"]]) /* hot reload */ if (false) {} @@ -55402,7 +56020,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _OrganisationData_vue_vue_type_style_index_0_id_4ada5f36_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OrganisationData.vue?vue&type=style&index=0&id=4ada5f36&lang=scss */ "./resources/assets/js/views/organisation/OrganisationData.vue?vue&type=style&index=0&id=4ada5f36&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55410,7 +56028,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationData_vue_vue_type_template_id_4ada5f36_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationData.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationData_vue_vue_type_template_id_4ada5f36_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationData.vue"]]) /* hot reload */ if (false) {} @@ -55433,13 +56051,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OrganisationElements.vue?vue&type=template&id=454ea803&ts=true */ "./resources/assets/js/views/organisation/OrganisationElements.vue?vue&type=template&id=454ea803&ts=true"); /* harmony import */ var _OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OrganisationElements.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/organisation/OrganisationElements.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElements.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElements.vue"]]) /* hot reload */ if (false) {} @@ -55464,13 +56082,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElementsDetail_vue_vue_type_template_id_2839e098_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElementsDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElementsDetail_vue_vue_type_template_id_2839e098_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElementsDetail.vue"]]) /* hot reload */ if (false) {} @@ -55495,13 +56113,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_ef6d312a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_ef6d312a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -55526,13 +56144,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountryBudget_vue_vue_type_template_id_cbe876d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/RecipientCountryBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountryBudget_vue_vue_type_template_id_cbe876d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/RecipientCountryBudget.vue"]]) /* hot reload */ if (false) {} @@ -55557,13 +56175,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrgBudget_vue_vue_type_template_id_2467d2f1_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrgBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrgBudget_vue_vue_type_template_id_2467d2f1_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrgBudget.vue"]]) /* hot reload */ if (false) {} @@ -55586,13 +56204,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportingOrganisation.vue?vue&type=template&id=6999aee2&ts=true */ "./resources/assets/js/views/organisation/elements/ReportingOrganisation.vue?vue&type=template&id=6999aee2&ts=true"); /* harmony import */ var _ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportingOrganisation.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/organisation/elements/ReportingOrganisation.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrganisation.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrganisation.vue"]]) /* hot reload */ if (false) {} @@ -55617,13 +56235,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingRegionBudget_vue_vue_type_template_id_85c9dc3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingRegionBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingRegionBudget_vue_vue_type_template_id_85c9dc3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingRegionBudget.vue"]]) /* hot reload */ if (false) {} @@ -55648,13 +56266,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalBudget_vue_vue_type_template_id_d3c0d33a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalBudget_vue_vue_type_template_id_d3c0d33a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalBudget.vue"]]) /* hot reload */ if (false) {} @@ -55679,13 +56297,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalExpenditure_vue_vue_type_template_id_4655f951_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalExpenditure.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalExpenditure_vue_vue_type_template_id_4655f951_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalExpenditure.vue"]]) /* hot reload */ if (false) {} @@ -55706,12 +56324,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _PasswordRecovery_vue_vue_type_template_id_70385da3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PasswordRecovery.vue?vue&type=template&id=70385da3 */ "./resources/assets/js/views/reset/PasswordRecovery.vue?vue&type=template&id=70385da3"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_PasswordRecovery_vue_vue_type_template_id_70385da3__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/PasswordRecovery.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_PasswordRecovery_vue_vue_type_template_id_70385da3__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/PasswordRecovery.vue"]]) /* hot reload */ if (false) {} @@ -55737,7 +56355,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ResetPage_vue_vue_type_style_index_0_id_36b764bb_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResetPage.vue?vue&type=style&index=0&id=36b764bb&lang=scss */ "./resources/assets/js/views/reset/ResetPage.vue?vue&type=style&index=0&id=36b764bb&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55745,7 +56363,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPage_vue_vue_type_template_id_36b764bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPage_vue_vue_type_template_id_36b764bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPage.vue"]]) /* hot reload */ if (false) {} @@ -55770,13 +56388,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPassword_vue_vue_type_template_id_45b42cc7_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPassword.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPassword_vue_vue_type_template_id_45b42cc7_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPassword.vue"]]) /* hot reload */ if (false) {} @@ -55801,13 +56419,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingDefaultForm_vue_vue_type_template_id_4d864667_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingDefaultForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingDefaultForm_vue_vue_type_template_id_4d864667_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingDefaultForm.vue"]]) /* hot reload */ if (false) {} @@ -55832,13 +56450,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPage_vue_vue_type_template_id_81a7fd86_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPage_vue_vue_type_template_id_81a7fd86_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPage.vue"]]) /* hot reload */ if (false) {} @@ -55863,13 +56481,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPublishingForm_vue_vue_type_template_id_63077305_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPublishingForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPublishingForm_vue_vue_type_template_id_63077305_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPublishingForm.vue"]]) /* hot reload */ if (false) {} @@ -55894,13 +56512,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationList_vue_vue_type_template_id_75b99060_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/OrganisationList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationList_vue_vue_type_template_id_75b99060_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/OrganisationList.vue"]]) /* hot reload */ if (false) {} @@ -55923,13 +56541,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SystemVersion.vue?vue&type=template&id=3e4f5121&ts=true */ "./resources/assets/js/views/superadmin/SystemVersion.vue?vue&type=template&id=3e4f5121&ts=true"); /* harmony import */ var _SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SystemVersion.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/superadmin/SystemVersion.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/SystemVersion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/SystemVersion.vue"]]) /* hot reload */ if (false) {} @@ -55952,13 +56570,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AdminBar.vue?vue&type=template&id=4594acd5&ts=true */ "./resources/assets/js/views/superadmin/components/AdminBar.vue?vue&type=template&id=4594acd5&ts=true"); /* harmony import */ var _AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AdminBar.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/superadmin/components/AdminBar.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/AdminBar.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/AdminBar.vue"]]) /* hot reload */ if (false) {} @@ -55984,7 +56602,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _TableList_vue_vue_type_style_index_0_id_05b2634b_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableList.vue?vue&type=style&index=0&id=05b2634b&lang=css */ "./resources/assets/js/views/superadmin/components/TableList.vue?vue&type=style&index=0&id=05b2634b&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55992,7 +56610,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableList_vue_vue_type_template_id_05b2634b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/TableList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableList_vue_vue_type_template_id_05b2634b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/TableList.vue"]]) /* hot reload */ if (false) {} @@ -56018,7 +56636,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _UserListing_vue_vue_type_style_index_0_id_0611d9f0_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UserListing.vue?vue&type=style&index=0&id=0611d9f0&scoped=true&lang=css */ "./resources/assets/js/views/user/UserListing.vue?vue&type=style&index=0&id=0611d9f0&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -56026,7 +56644,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserListing_vue_vue_type_template_id_0611d9f0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0611d9f0"],['__file',"resources/assets/js/views/user/UserListing.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserListing_vue_vue_type_template_id_0611d9f0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0611d9f0"],['__file',"resources/assets/js/views/user/UserListing.vue"]]) /* hot reload */ if (false) {} @@ -56051,13 +56669,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserProfile_vue_vue_type_template_id_379270a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/user/UserProfile.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserProfile_vue_vue_type_template_id_379270a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/user/UserProfile.vue"]]) /* hot reload */ if (false) {} @@ -56078,12 +56696,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AboutPage_vue_vue_type_template_id_7d9fa904__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AboutPage.vue?vue&type=template&id=7d9fa904 */ "./resources/assets/js/views/web/AboutPage.vue?vue&type=template&id=7d9fa904"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_AboutPage_vue_vue_type_template_id_7d9fa904__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/AboutPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_AboutPage_vue_vue_type_template_id_7d9fa904__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/AboutPage.vue"]]) /* hot reload */ if (false) {} @@ -56106,13 +56724,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmailVerification.vue?vue&type=template&id=7cda5c19&ts=true */ "./resources/assets/js/views/web/EmailVerification.vue?vue&type=template&id=7cda5c19&ts=true"); /* harmony import */ var _EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EmailVerification.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/web/EmailVerification.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/EmailVerification.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/EmailVerification.vue"]]) /* hot reload */ if (false) {} @@ -56139,7 +56757,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _IatiRegisterPage_vue_vue_type_style_index_1_id_17e632a6_lang_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IatiRegisterPage.vue?vue&type=style&index=1&id=17e632a6&lang=scss */ "./resources/assets/js/views/web/IatiRegisterPage.vue?vue&type=style&index=1&id=17e632a6&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -56148,7 +56766,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_IatiRegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiRegisterPage_vue_vue_type_template_id_17e632a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiRegisterPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_IatiRegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiRegisterPage_vue_vue_type_template_id_17e632a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiRegisterPage.vue"]]) /* hot reload */ if (false) {} @@ -56173,13 +56791,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiStandard_vue_vue_type_template_id_e68494d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiStandard.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiStandard_vue_vue_type_template_id_e68494d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiStandard.vue"]]) /* hot reload */ if (false) {} @@ -56202,13 +56820,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PublishingChecklist.vue?vue&type=template&id=dca69396&ts=true */ "./resources/assets/js/views/web/PublishingChecklist.vue?vue&type=template&id=dca69396&ts=true"); /* harmony import */ var _PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PublishingChecklist.vue?vue&type=script&lang=ts&setup=true */ "./resources/assets/js/views/web/PublishingChecklist.vue?vue&type=script&lang=ts&setup=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/PublishingChecklist.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/PublishingChecklist.vue"]]) /* hot reload */ if (false) {} @@ -56235,7 +56853,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _RegisterPage_vue_vue_type_style_index_1_id_52266200_lang_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RegisterPage.vue?vue&type=style&index=1&id=52266200&lang=scss */ "./resources/assets/js/views/web/RegisterPage.vue?vue&type=style&index=1&id=52266200&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -56244,7 +56862,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_RegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RegisterPage_vue_vue_type_template_id_52266200_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/RegisterPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_RegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RegisterPage_vue_vue_type_template_id_52266200_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/RegisterPage.vue"]]) /* hot reload */ if (false) {} @@ -56265,12 +56883,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _SupportPage_vue_vue_type_template_id_56fff980__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SupportPage.vue?vue&type=template&id=56fff980 */ "./resources/assets/js/views/web/SupportPage.vue?vue&type=template&id=56fff980"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_SupportPage_vue_vue_type_template_id_56fff980__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/SupportPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_SupportPage_vue_vue_type_template_id_56fff980__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/SupportPage.vue"]]) /* hot reload */ if (false) {} @@ -56292,13 +56910,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WelcomePage.vue?vue&type=template&id=eae4485a */ "./resources/assets/js/views/web/WelcomePage.vue?vue&type=template&id=eae4485a"); /* harmony import */ var _WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WelcomePage.vue?vue&type=script&lang=js */ "./resources/assets/js/views/web/WelcomePage.vue?vue&type=script&lang=js"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/WelcomePage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/WelcomePage.vue"]]) /* hot reload */ if (false) {} @@ -56323,13 +56941,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminFooter_vue_vue_type_template_id_55f9b4bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/AdminFooter.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminFooter_vue_vue_type_template_id_55f9b4bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/AdminFooter.vue"]]) /* hot reload */ if (false) {} @@ -56350,12 +56968,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _JoinNow_vue_vue_type_template_id_269f5086__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JoinNow.vue?vue&type=template&id=269f5086 */ "./resources/assets/js/views/web/partials/JoinNow.vue?vue&type=template&id=269f5086"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_JoinNow_vue_vue_type_template_id_269f5086__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/JoinNow.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_1__["default"])(script, [['render',_JoinNow_vue_vue_type_template_id_269f5086__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/JoinNow.vue"]]) /* hot reload */ if (false) {} @@ -56381,7 +56999,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _SignIn_vue_vue_type_style_index_0_id_a1861f3e_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SignIn.vue?vue&type=style&index=0&id=a1861f3e&lang=scss&scoped=true */ "./resources/assets/js/views/web/partials/SignIn.vue?vue&type=style&index=0&id=a1861f3e&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -56389,7 +57007,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SignIn_vue_vue_type_template_id_a1861f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-a1861f3e"],['__file',"resources/assets/js/views/web/partials/SignIn.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SignIn_vue_vue_type_template_id_a1861f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-a1861f3e"],['__file',"resources/assets/js/views/web/partials/SignIn.vue"]]) /* hot reload */ if (false) {} @@ -56414,13 +57032,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _WebFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _WebFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebFooter_vue_vue_type_template_id_20d10680_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebFooter.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebFooter_vue_vue_type_template_id_20d10680_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebFooter.vue"]]) /* hot reload */ if (false) {} @@ -56445,13 +57063,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebHeader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_home_fluffy_Documents_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebHeader.vue"]]) /* hot reload */ if (false) {} @@ -63353,16 +63971,6 @@ webpackContext.id = "./resources/assets/images/svg sync recursive ^\\.\\/.*$"; /***/ }), -/***/ "?599d": -/*!************************!*\ - !*** crypto (ignored) ***! - \************************/ -/***/ (() => { - -/* (ignored) */ - -/***/ }), - /***/ "./public/Data/coreElements.json": /*!***************************************!*\ !*** ./public/Data/coreElements.json ***! @@ -63381,4 +63989,4 @@ module.exports = JSON.parse('{"reporting_org":true,"iati_identifier":true,"title /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SyxXQUFXLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsVUFBVSxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLE1BQU0sV0FBVyxVQUFVLFdBQVcsS0FBSyxNQUFNLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Ozs7Ozs7Ozs7Ozs7OztBQ0FaOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0EwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQThCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0F3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQW5COzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWxCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBMUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0F5S0FyQzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBaURBNU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQ3RMQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1N0ZXBCYXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL0J1bGtQdWJsaXNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9wdWJsaXNoaW5nQWN0aXZpdHkvUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC90YWJzL1RhYkluZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC93aXphcmRTdGVwcy9XaXphcmRJbmRleC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvYXBwLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS9jb3JlRWxlbWVudHMudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2RhdGVGb3JtYXQudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2VuY3J5cHRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3RpdGxlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS91c2VTaGFyZWRMb2NhbFN0b3JhZ2UudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3V0aWxzLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvbGlicy91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9hY3Rpdml0aWVzL3Nob3cudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvYWN0aW9ucy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvbXV0YXRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9zZXR0aW5nL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWU/Nzk4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT8yMmNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzhmM2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlP2M4MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWU/MWFiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvRGVmYXVsdFZhbHVlc1N0ZXAudnVlPzdjZTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT85ZTYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT8zMWRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzI0ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlPzk3OGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/NmUwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlPzhhN2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT80ODhkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/YjljZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT83YmNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlP2Q1OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/N2NlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSGVscGVyVGV4dC52dWU/Y2MxZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT83ODNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzU5MzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlPzFmMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9iN2RhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT82MzExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/OWRlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9mMzVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/MTYxMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzVkYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/OGRmNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlPzUzNjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZT9iODMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT80NTExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/N2Q3ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/YjRjYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT8xOTA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlPzVmYTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlPzJkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/OGIwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzExNDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT8yNzBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2Nzcz83YWRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3M/ZTM3ZCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NhcGl0YWxfc3BlbmQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb2xsYWJvcmF0aW9uX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb25kaXRpb25zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29udGFjdF9pbmZvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY291bnRyeV9idWRnZXRfaXRlbXMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jcnMtYWRkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9odW1hbml0YXJpYW5fc2NvcGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pbmRpY2F0b3Iuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sZWdhY3lfZGF0YS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xvY2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvb3RoZXJfaWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGVyaW9kLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGxhbm5lZF9kaXNidXJzZW1lbnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wb2xpY3lfbWFya2VyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVsYXRlZF9hY3Rpdml0eS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHRzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvc2VjdG9yLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGFnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQtbW9yZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FkZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LW91dGxpbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsaWduLWNlbnRlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsaWduLXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXBwcm92ZWQtY2xvdWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1kb3duLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctbGVmdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctc2hvcnQtbGVmdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FzY2VuZGluZy1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JpbGwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ib3guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jbG91ZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrLWNpcmNsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrYm94LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tlZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZXZyb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaXJjbGUtcmVkLWNyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2xvc2Uuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3B5cmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3JlLXNxdWFyZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTEuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWxldGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZXNjZW5kaW5nLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG9jdW1lbnQtd3JpdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3VibGUtdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWNvZGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kcm9wZG93bi1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQtYWN0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4Y2xhbWF0aW9uLXdhcm5pbmctZmlsbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4Y2xhbWF0aW9uLXdhcm5pbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHBvcnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHRlcm5hbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V5ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2ZvbGRlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Zvb3Rlci1sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZnVubmVsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZ3JlZW4tY2lyY2xlLXRpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hhbmQtd2F2ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZHBob25lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpZGUtcGFzc3dvcmQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaXN0b3J5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaWMtdmVyaWZpY2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaW5kaWNhdG9yLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sZWZ0LWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby13aGl0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvdXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFpbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21lc3NhZ2UtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21pbmltaXplLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL25vdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcGVuLWxpbmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9uYW1lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGFuZWwtc2VhcmNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGVyaW9kLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Byb2dyZXNzLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdWJsaXNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHctbG9jay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3F1ZXN0aW9uLW1hcmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtZG90LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Jlc3VsdC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmlnaHQtYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yb2NrZXQtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NlYXJjaC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NldHRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaGllbGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaW5nbGUtZG90LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc21pbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWFzY2VuZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtZGVzY2VuZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0YXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zdGVwLXRpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLWNsb3VkLXNxdWFyZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aW1lcy1jaXJjbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90d2l0dGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci1wcm9maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctYWN0aXZpdHkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluaWctYWN0aXZpdHktcmVkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcveW91dHViZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xpbmVzTG9hZGVyLnZ1ZT80OWM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzk3MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/NWI5NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/M2MzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZT9mYTk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWU/Y2E5MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlP2VjMmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP2M3MTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/MDJjZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/YWJjZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT81YjQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/ZjI1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlP2Y1NzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9mNmU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlPzFiMmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/NzkyNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT84ODk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZT9lZWFiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlP2I3N2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/Njg3NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/ZmQ4NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlP2I0YmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlP2NlOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT82YTE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlPzVkMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT9iNjFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/ZTNlNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT8yZThmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/YjNlMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2lhdGlWYWxpZGF0ZS9JYXRpVmFsaWRhdGUudnVlPzFiNjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzc3MzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT9mZWFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT9jNGZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzZjZDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/ODFkNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/MGVhYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT9kNjBiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/NjliMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlP2QzODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlPzRmNjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/ZTJiOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlPzNjMmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlP2FhMWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/ODBmMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT83YTk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlPzZmMTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWU/YzY5OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZT8xNDEwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlP2UxZDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlPzMyZmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlPzY5NTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/YTJlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlP2ExNWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/NDJiNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT9mNTU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWU/YWUwYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/ZWQzMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlPzc0YTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT8yNjdiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaWRlSGVscFRleHQudnVlP2EwY2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1N0ZXBCYXIudnVlPzQzY2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT81YjFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlPzI3YjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWU/MzkxZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT8wMTIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlPzZhNWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWU/ODJiYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlPzZlNDEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWU/MjQ3YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZT9hOGQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWU/NDFhMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZT84YzkwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT84ODhlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlPzkzNjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlPzkxN2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWU/ZTJmMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlP2ZkYzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/YWZjYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlP2YyNDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlPzUwNmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZT9kYTU0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/Zjg3MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT9kNGE5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlPzk0NjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT8wNDZkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzhlNmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZT8zOWRhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWU/OTFiYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL0J1bGtQdWJsaXNoLnZ1ZT8zZGY1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/NDJmZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlPzYxNGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZT80ODNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvcHVibGlzaGluZ0FjdGl2aXR5L1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/ZDU1OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC90YWJzL1RhYkluZGV4LnZ1ZT8wY2UzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL3dpemFyZFN0ZXBzL1dpemFyZEluZGV4LnZ1ZT8wZGQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZT8yZjBiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWU/YzE4ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZT82MDcyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzZiNWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWU/NTliYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZT8yZDc2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWU/YjhkYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZT8yYmJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZT83MjNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWU/ODk4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlPzBkYzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlPzhlYjgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT84MTBmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9iYjg4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZT81ZTk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT8zYmU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZT8xOGRlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZT8yMjc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZT84ZDE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlP2MzZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlPzUwMjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWU/NDkwNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWU/MDk1OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlPzQxYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZT84MDYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/OTc5ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT80ZDg3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlPzQ2ZDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlPzFjNmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWU/MmU3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT9hYjcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWU/MDEzMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZT8yZDMyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9BY3Rpdml0eVN0ZXAudnVlPzgzMTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT83NjM1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/NjExMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/NmIxOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NzVlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWU/MjE2YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT80NzQzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/MTEyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWU/NDZhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlPzU0MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlPzIxMWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZT8zODg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzcwNDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlP2U2NGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZT9jMzJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWU/NGVhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlPzJjOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWU/NDdlZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWU/M2VmMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWU/OGIzYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT83ZDE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlPzg1ZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/MjkzMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWU/ZjNmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWU/ZTA5YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWU/NThmMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP2RiNWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZT8xNTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlPzMyZjgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzE5NWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/ODFkMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWU/NGE4NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWU/NzEzNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/MzE1MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/NjJlYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT8wMTUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZGY2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlP2FiM2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWU/NzhkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlP2U4OWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZT84M2NhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZT8xMTg3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZT85NmYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZT82ZmQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT80MDliIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlP2JjNmUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT82NTM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZT9mODc3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT8xNTM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlP2ZmOGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlPzFhNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2U2MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/YWFlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT9kMmU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT9hYTRhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT9iODc1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/MDA0NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT8zN2VkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/OWVhYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlPzllYTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT9iMTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZT9kZDJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlPzdiMzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZT85Y2JkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT9mMWFjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/NDM2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT85MTViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/MDEwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT9lMjQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT9lNTA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT84MTkyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT82NjYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/MzExNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzA4YjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT83YmJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWU/NzhkYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/YzBhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT8yM2U2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWU/NjUyYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT84NjlmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/MTVlNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWU/MDU4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWU/MGRlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWU/NDIyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZT81YTU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/MDM1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlP2E3ZDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT9hZWIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZT8zMmZiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eVZhbGlkYXRpb24udnVlP2RkMjgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9kNDgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZT8xYjI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlPzk4ZDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/ZTIyZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZT81MTIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlP2ZlMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWU/ZGQxZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT9kN2I3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZT80MjgxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZT9kODNiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzEyMGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/ZWU4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT81NmJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWU/YmNkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/Mzk0NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlPzAxYjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWU/MjQzOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU3RlcEJhci52dWU/YzkxNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlP2IxMmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/NmQzYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8zNWQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlP2JjYWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/MTc0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT9mZTU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/OGIyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT9mYTVmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlP2FiZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT8wZThiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlPzEzMzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzBjYjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/ODk0ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/Y2IyZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT9iMjZjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/Zjc4MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT82ZTk2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/MGEwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlP2Y0M2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT8yYWVjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlPzY1YzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/YjFlMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlP2MyNmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/ZjU4OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlPzc3NDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZT9mOTY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvQnVsa1B1Ymxpc2gudnVlPzI4OTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9jaGVja2luZ0FjdGl2aXRpZXMvQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT82YTQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWU/ZDEzMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL3B1Ymxpc2hpbmdBY3Rpdml0eS9QdWJsaXNoaW5nQWN0aXZpdHkudnVlPzIxNzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvdGFicy9UYWJJbmRleC52dWU/ZDkzOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC93aXphcmRTdGVwcy9XaXphcmRJbmRleC52dWU/ZGU0NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWU/MzNiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbmRpdGlvbnMudnVlPzU5YTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWU/OWRhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT80YmUyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSHVtYW5pdGFyaWFuU2NvcGUudnVlP2MyNzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWU/MjZlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlPzcxYTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWU/MzQwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWU/YTJjNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlPzcwYzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT9mZjRkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZT9kZWIwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/ZDg1NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZDM4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWU/M2RlNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/ZDVjZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWU/NzRmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWU/NDk2YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWU/MDMxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZT84MTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZT8wMWUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlPzk3MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlPzJjYzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT8wMThkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWU/MGMyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlP2ZmOGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NDQyNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT8xM2FhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZT9lYWU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlPzM4ZjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/OTI0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlPzlmZjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWU/NDRiNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvQWN0aXZpdHlTdGVwLnZ1ZT84ZjlhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWU/NDdkZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlPzg1YjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP2M1MjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzhjOTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlPzVjNTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/YzIwZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlPzk0MjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlPzA2MTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZT8yODFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZT85ZDFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWU/MGRmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT82MzQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZT83YTgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWU/Njc0MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlPzMzMGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZT8xNmIwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlPzBhOWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlPzg1MWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlPzZhNzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/YWNjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZT8wYjcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlPzYzYTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlPzE2MzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlPzVlMzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlPzJlNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT81M2IxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWU/OTIwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9BaWRUeXBlLnZ1ZT8zNDc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT84M2YzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlPzFlNTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlPzVkYzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlP2I1ZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlPzg4MGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlPzljNDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/YzVhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlPzRiYjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZT82ZjgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlPzgyNzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZT8wYjk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWU/NDU0YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWU/OGJmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWU/MjlkMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRHcmFwaC52dWU/MmRlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/NjJkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZT9kOTcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/ZTk3NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWU/Y2Y2NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWU/NzUxZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT84NTQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT8yYWIyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9jOTYxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlP2Q1YzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/YjMyOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/ODc4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/YWM0ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzUzOTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/N2EwMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlPzZhZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT8wOTgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/YTA3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWU/NGJhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT81MWQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT9lOGIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/ZWU0OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT84NWU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/ZjBlMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT8zZjM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT80NDBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT8xODZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT80MjRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/ZTVlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzBiNjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT85MGQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT81YTE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzdjYjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZT8wNmE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP2Y2M2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT85ODYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZT9iODdiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/NjNkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlPzgyZTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT8wMmY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZT82NjUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eVZhbGlkYXRpb24udnVlPzU3ZTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9mMGZjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZT8wMTZiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlPzVmM2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/NTM2ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZT9hOTU0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlP2NlOGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWU/ODQyMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT9lYjUzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZT9kMWY1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZT8wYWNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzYyZjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/ODhkZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT9hODljIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWU/MTk0MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/MzQ2MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlPzU0MjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWU/YjJjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU3RlcEJhci52dWU/ZDA3MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlP2Q3MGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/YjQxMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8xMDE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlP2VmZTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/ZDA3ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT80NGMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/YjJiZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT85ZjM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlPzJmYjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT85NWE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlP2IyZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzcxYzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/OWQ2OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/NTNlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT84ZDA5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/ZGJmYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT8xZWY4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/NjRmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlPzdhMDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT9iYjk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlPzliNjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/ODQzOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzY0ZWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/ZjE5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlPzBjZDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZT8yYTZiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvQnVsa1B1Ymxpc2gudnVlPzJkODEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9jaGVja2luZ0FjdGl2aXRpZXMvQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT9jZjcyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWU/MjExYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL3B1Ymxpc2hpbmdBY3Rpdml0eS9QdWJsaXNoaW5nQWN0aXZpdHkudnVlPzMzZGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvdGFicy9UYWJJbmRleC52dWU/MWExNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC93aXphcmRTdGVwcy9XaXphcmRJbmRleC52dWU/MmZkYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWU/Y2FjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbmRpdGlvbnMudnVlPzIwM2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWU/NDM1YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT8wOGRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSHVtYW5pdGFyaWFuU2NvcGUudnVlP2VhNDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWU/YTllMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlPzgxZWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWU/NmEyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWU/YmE3NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlP2Y3MzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT81NDJlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZT9hMjhhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/MzhhNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZmNiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWU/OWFkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/ZDMzYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWU/MTkxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWU/MzU3MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWU/ZGQyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZT9iMjZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZT9hMjE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlP2ZkOTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlP2Y4OGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT81ZTBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWU/ZTA3YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzFkMDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/ZTBkOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT8xZWI1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZT80YTE4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlP2NkNWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/Yzg4MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlP2M0ODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWU/NGM4MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvQWN0aXZpdHlTdGVwLnZ1ZT9lMGRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWU/YmM2ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlP2RjMjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlPzNhM2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlP2JjZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlP2M4NWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/MDdlNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP2M0ZDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlPzcxOTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZT9mODhhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZT9lYWJmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWU/YWQ2ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT83NDg0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZT9kNjhlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWU/N2Y5NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlPzhhZDEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZT9hZGYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlP2I5MTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlPzZiNTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlP2JjODEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NDgxOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZT9kNmNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlPzdmNTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlP2EzZTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlPzkyYjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlP2E0NzAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT82NDE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWU/MjhlMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9BaWRUeXBlLnZ1ZT84NGI3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT8xMTMyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlPzkzYTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlP2FkNzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlPzgxNGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlPzQ0MDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlPzE1YzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/YzlkNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlP2Q0YTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZT81NzA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlPzE4N2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZT8yMjEzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWU/ZTk3NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWU/OTc3OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWU/MTJiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRHcmFwaC52dWU/MDZhOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/N2E1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZT80N2YwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/MmZkMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWU/MmQ0OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWU/ZjgzMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT9kN2FkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT9lMTdlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9lM2ZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlPzg5MjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/MDk3NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/YjA1NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/NmNmNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzIyMjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/ZDQwZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlPzY4MmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT9iNzM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/YTM0ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWU/NGU5OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT85MjI0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT84ZjA0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/ZjQxNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT80ZTE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/ZGI2YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT9hNmMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT9hZmNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT9lMTJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT83ZTg1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/YmY5MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzdhNDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT9jMDg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT8zMDQzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzcxYWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZT8xODMzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP2Y2MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT85Nzk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZT80MmM4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/YzJkZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlPzUzYjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT82MTZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/YTZhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWU/YzY2MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlPzIwNTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9mM2M2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT82NmRlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/NzdiZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlPzZjODIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZT9iNDk0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZT82MDM1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT8wMWY4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlP2RjM2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xpbmVzTG9hZGVyLnZ1ZT8zMDc3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP2RmYzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/ODY3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/Y2RhMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZT8yMmY3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWU/N2MxMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlP2UxODQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlPzk3MTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/ZDFmOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/YTJmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT84YWVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/YTMxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzA1MTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9mYTQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlPzBmNWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/ODg5YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT8yNmU0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZT8yNWJhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzhjODYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/OGVkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/ODZiMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlP2M4YjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlP2JjMzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT9mMzk3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlP2Y2MGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT9lN2Y5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/MzM1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT81NjcwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/OGFjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2lhdGlWYWxpZGF0ZS9JYXRpVmFsaWRhdGUudnVlPzdmYzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlP2NlZGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT9jNDhjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT9hYTk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzdhOTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/Mjk5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/NjgwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT85Nzg0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/M2EzOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlP2Q1MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnLyBzeW5jIF5cXC5cXC8uKiQiLCJ3ZWJwYWNrOi8vL2lnbm9yZWR8L2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvY3J5cHRvLWpzfGNyeXB0byJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlEb3dubG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzaG93UmV0cnlEb3dubG9hZE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkb3dubG9hZEZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ29tcGxldGVYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIlwiLmNvbmNhdChkb3dubG9hZEFwaVVybC52YWx1ZS5zcGxpdCgpWzBdLnNwbGl0KCcvJylbM10sIFwiL1wiKS5jb25jYXQoZG93bmxvYWRBcGlVcmwudmFsdWUuc3BsaXQoKVswXS5zcGxpdCgnLycpWzRdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnZmlsZW5hbWU9JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzLmRhdGFdLCB7fSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXRyeURvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgc2hvd1JldHJ5RG93bmxvYWRNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICdhY3Rpdml0aWVzL3JldHJ5LXhscy1kb3dubG9hZCc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNhbmNlbERvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSAnY2FuY2VsbGVkJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC14bHMtZG93bmxvYWQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsZUNvdW50LnZhbHVlIC8gNCkgKiAxMDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ZpbGVDb3VudCcpO1xuICAgICAgICB2YXIgeGxzRG93bmxvYWRTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgneGxzRG93bmxvYWRTdGF0dXMnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQXBpVXJsID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkQXBpVXJsJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc2hvd1JldHJ5RG93bmxvYWRNb2RlbDogc2hvd1JldHJ5RG93bmxvYWRNb2RlbCwgaXNMb2FkaW5nOiBpc0xvYWRpbmcsIGRvd25sb2FkRmlsZTogZG93bmxvYWRGaWxlLCByZXRyeURvd25sb2FkOiByZXRyeURvd25sb2FkLCBjYW5jZWxEb3dubG9hZDogY2FuY2VsRG93bmxvYWQsIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCBmaWxlQ291bnQ6IGZpbGVDb3VudCwgeGxzRG93bmxvYWRTdGF0dXM6IHhsc0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZEFwaVVybDogZG93bmxvYWRBcGlVcmwsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vbGlicy91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVZhbGlkYXRpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHZhbGlkYXRpb25TdGF0czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25OYW1lczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JUYWI6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnc3RvcFZhbGlkYXRpb24nLCAncHJvY2VlZCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICAvL3NldHRpbmcgcGVyY2VudGFnZSBvZiB2YWxpZGF0aW9uIHByb2dyZXNzYmFyICwgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgd2hlbiBwYWdlIGlzIHJlbG9hZGVkIG9yIG5hdmlnYXRlZFxuICAgICAgICB2YXIgaGFzRXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vc2V0dGluZyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZSB0byB2dWV4ICx0byBwcmVzZXJ2ZSBzdGF0ZSB3aGVuIHdpbmRvdyBpcyByZWxvYWRlZFxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL3RvIGNoZWNrIGlmIHZhbGlkYXRpb24gbmVlZCB0byBiZSBzaG93IG9mIG5vdCB3aGVuIG5hdmlnYXRlZCBvciByZWZyZXNoZWRcbiAgICAgICAgICAgIHZhciBzaG93UG9wdXAgPSBCb29sZWFuKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKSk7XG4gICAgICAgICAgICBpZiAoc2hvd1BvcHVwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXNJZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIGlmIChhY3Rpdml0aWVzSWRzKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgYWN0aXZpdGllc0lkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmVycm9yVGFiOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdmFsaWRhdGlvbkNhbmNlbEhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnc3RvcFZhbGlkYXRpb24nKTtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvZGVsZXRlLXZhbGlkYXRpb24tc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgJycpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyksIHsgaWF0aVZhbGlkYXRvckxvYWRlcjogZmFsc2UsIHZhbGlkYXRpb25TdGF0czogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICBlbWl0KCdwcm9jZWVkJyk7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoKChzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5jb21wbGV0ZSArXG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuZmFpbGVkKSAvXG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMudG90YWwpICpcbiAgICAgICAgICAgICAgICAxMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhhbmRsZU1pbmltaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvdGFsVmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuaW1wb3J0ZWRBY3Rpdml0aWVzTGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAhKGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5pc192YWxpZCk7IH0pLmxlbmd0aDtcbiAgICAgICAgfSk7XG4gICAgICAgIGV4cG9zZSh7XG4gICAgICAgICAgICB2YWxpZGF0aW9uQ2FuY2VsSGFuZGxlcjogdmFsaWRhdGlvbkNhbmNlbEhhbmRsZXIsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXR5Q291bnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIHZhciBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID0gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cztcbiAgICAgICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9IChfYSA9IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IG51bGwgfHwgYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWN0aXZpdGllcztcbiAgICAgICAgICAgIHZhciBwdWJsaXNoaW5nU3RhdHVzID0gKF9jID0gKF9iID0gYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gbnVsbCB8fCBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZXNwb25zZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cztcbiAgICAgICAgICAgIHZhciB2YWxpZGF0aW9uU3RhdHNUb3RhbCA9ICgoX2QgPSBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSBudWxsIHx8IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudG90YWwpIHx8IDA7XG4gICAgICAgICAgICBpZiAocHVibGlzaGluZ0FjdGl2aXRpZXMgJiYgT2JqZWN0LmtleXMocHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocHVibGlzaGluZ1N0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgfHwgcHVibGlzaGluZ1N0YXR1cyA9PT0gJ3Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uU3RhdHNUb3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvblN0YXRzVG90YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBoYXNFcnJvcjogaGFzRXJyb3IsIHZhbGlkYXRpb25DYW5jZWxIYW5kbGVyOiB2YWxpZGF0aW9uQ2FuY2VsSGFuZGxlciwgc3RhcnRCdWxrUHVibGlzaDogc3RhcnRCdWxrUHVibGlzaCwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIGhhbmRsZU1pbmltaXplOiBoYW5kbGVNaW5pbWl6ZSwgdG90YWxWYWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllczogdG90YWxWYWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcywgcHVibGlzaGluZ0FjdGl2aXR5Q291bnQ6IHB1Ymxpc2hpbmdBY3Rpdml0eUNvdW50LCBjbjogdXRpbHNfMS5jbiB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgQ3JlYXRlTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluSGVhZGVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICB1c2VyOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb25ib2FyZGluZzogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHYgPT09IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN1cGVyQWRtaW46IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgaGFzQWRtaW5CYXI6IHsgdHlwZTogTnVtYmVyIHx8IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICcnIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIHZhciBzaG93VXNlckRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZXJyb3JUb2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBsYW5ndWFnZU5hdkxpQ2xhc3NlczogJ2ZsZXgnLFxuICAgICAgICAgICAgbGFuZ3VhZ2VOYXZBbmNob3JDbGFzc2VzOiAnZmxleCB0ZXh0LXdoaXRlIGl0ZW1zLWNlbnRlciB1cHBlcmNhc2UgbmF2X19wb2ludGVyLWhvdmVyIHB4LTEuNScsXG4gICAgICAgICAgICBtZW51TmF2TGlDbGFzc2VzOiAnZmxleCBweC00IHJlbGF0aXZlJyxcbiAgICAgICAgICAgIG1lbnVOYXZBbmNob3JDbGFzc2VzOiAnZmxleCB0ZXh0LXdoaXRlIGl0ZW1zLWNlbnRlciB1cHBlcmNhc2UgbmF2X19wb2ludGVyLWhvdmVyJyxcbiAgICAgICAgICAgIGxhbmd1YWdlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdFTicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJyMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnRlInLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcjJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdFUycsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJyMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgb3JnX21lbnVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQWN0aXZpdHkgREFUQScsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnT3JnYW5pc2F0aW9uIERBVEEnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvb3JnYW5pc2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NldHRpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL3NldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQWRkIC8gSW1wb3J0IEFjdGl2aXR5JyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdVc2VycycsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy91c2VycycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdXBlcmFkbWluX21lbnVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2Rhc2hib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdPcmdhbmlzYXRpb24gTGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9saXN0LW9yZ2FuaXNhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgbmFtZTogJ0xvZ3MnLFxuICAgICAgICAgICAgICAgIC8vICAgcGVybWFsaW5rOiAnL3N5c3RlbS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAvLyAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmlzTG9hZGluZzsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgdXBwZXJjYXNlIGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOiF0ZXh0LW4tNTAgaG92ZXI6Ymctbi0xMCc7XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2NbMF0sIG1vZGFsVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIGZ1bmN0aW9uIHRvYXN0KG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1RvdWNoRGV2aWNlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBUb2dnbGVNb2RlbCgpIHtcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlKCk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZU1lbnUoKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGRhdGEub3JnX21lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUsIGtleSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzW2tleV1bJ2FjdGl2ZSddID0gbWVudS5wZXJtYWxpbmsgPT09IHBhdGggPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdhY3Rpdml0eScpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygncmVzdWx0JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdpbmRpY2F0b3InKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnb3JnYW5pc2F0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1sxXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2ltcG9ydCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbM11bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1swXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3VzZXJzJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1s0XVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1syXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2xpc3Qtb3JnYW5pc2F0aW9ucycpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnc3lzdGVtLXZlcnNpb24nKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xvZy12aWV3ZXInKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbmszJykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdsaW5rNCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbG9jYWwgc3RvcmFnZSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gbG9nb3V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LnBvc3QoJy9sb2dvdXQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnaXNNb2RlbENsb3NlQ2xpY2tlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy8nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2VhcmNoVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpLCBzZWFyY2ggPSB1cmxQYXJhbXMuZ2V0KCdxJyk7XG4gICAgICAgICAgICBzZWFyY2hWYWx1ZS52YWx1ZSA9IHNlYXJjaDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3Bpbm5lciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNlYXJjaEZ1bmN0aW9uID0gZnVuY3Rpb24gKHVybCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc3Bpbm5lci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW0gPSAoX2EgPSBzZWFyY2hWYWx1ZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgICAgICAgICB2YXIgc29ydGluZ1BhcmFtID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpICYmIGN1cnJlbnRVUkwuaW5jbHVkZXMoJyYnKSkge1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nQXJyID0gcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBzb3J0aW5nUGFyYW0gPSAnJicgKyBxdWVyeVN0cmluZ0Fyci5zbGljZSgxKS5qb2luKCcmJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaHJlZiA9IHBhcmFtXG4gICAgICAgICAgICAgICAgPyBcIlwiLmNvbmNhdCh1cmwsIFwiP3E9XCIpLmNvbmNhdChwYXJhbSkuY29uY2F0KHNvcnRpbmdQYXJhbSlcbiAgICAgICAgICAgICAgICA6IHByb3BzLnN1cGVyQWRtaW5cbiAgICAgICAgICAgICAgICAgICAgPyAnL2xpc3Qtb3JnYW5pc2F0aW9ucydcbiAgICAgICAgICAgICAgICAgICAgOiAnL2FjdGl2aXRpZXMvJztcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldFN0YXJ0ZWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaXNNb2RlbENsb3NlQ2xpY2tlZCwgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGVsQ2xvc2VDbGlja2VkID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgnaXNNb2RlbENsb3NlQ2xpY2tlZCcsIGZhbHNlLCBzZXNzaW9uU3RvcmFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbMSwgMywgLCA0XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQucG9zdCgnL29yZ2FuaXNhdGlvbi1vbmJvYXJkaW5nL3RvZ2dsZS1kb250LXNob3cvJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdpc0ZvcmNlT3Blbk1vZGFsJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGVycm9yVG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVG9hc3RNZXNzYWdlLnZhbHVlID0gJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLic7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclRvYXN0VHlwZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hhbmdlQWN0aXZlTWVudSgpO1xuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdvcGVuQWRkTW9kZWwnKSA9PT0gJ3RydWUnICYmXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lID09PSAnL2FjdGl2aXRpZXMnKSB7XG4gICAgICAgICAgICAgICAgbW9kYWxWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVkaXJlY3RQcm9maWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL3Byb2ZpbGUnO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdvcGVuQWRkTW9kZWwnKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZGVmYXVsdExhbmd1YWdlJywgcHJvcHMuZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIHNob3dVc2VyRHJvcGRvd246IHNob3dVc2VyRHJvcGRvd24sIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCBpc0xvYWRpbmc6IGlzTG9hZGluZywgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIGVycm9yVG9hc3RWaXNpYmlsaXR5OiBlcnJvclRvYXN0VmlzaWJpbGl0eSwgZXJyb3JUb2FzdE1lc3NhZ2U6IGVycm9yVG9hc3RNZXNzYWdlLCBlcnJvclRvYXN0VHlwZTogZXJyb3JUb2FzdFR5cGUsIGRhdGE6IGRhdGEsIGxpQ2xhc3M6IGxpQ2xhc3MsIG1vZGFsVmFsdWU6IG1vZGFsVmFsdWUsIG1vZGFsVG9nZ2xlOiBtb2RhbFRvZ2dsZSwgdG9hc3Q6IHRvYXN0LCBpc1RvdWNoRGV2aWNlOiBpc1RvdWNoRGV2aWNlLCBUb2dnbGVNb2RlbDogVG9nZ2xlTW9kZWwsIGNoYW5nZUFjdGl2ZU1lbnU6IGNoYW5nZUFjdGl2ZU1lbnUsIHBhOiBwYSwgbG9nb3V0OiBsb2dvdXQsIHNlYXJjaFZhbHVlOiBzZWFyY2hWYWx1ZSwgY3VycmVudFVSTDogY3VycmVudFVSTCwgc3Bpbm5lcjogc3Bpbm5lciwgc2VhcmNoRnVuY3Rpb246IHNlYXJjaEZ1bmN0aW9uLCBnZXRTdGFydGVkOiBnZXRTdGFydGVkLCByZWRpcmVjdFByb2ZpbGU6IHJlZGlyZWN0UHJvZmlsZSwgQ3JlYXRlTW9kYWw6IENyZWF0ZU1vZGFsX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0JyZWFkQ3J1bWInLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0J1bGtwdWJsaXNoTG9hZGVyQ2FyZCcsXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ2Nsb3NlJyxcbiAgICAgICAgJ3RvZ2dsZScsXG4gICAgICAgICdhY3Rpdml0eVB1Ymxpc2hlZERhdGEnLFxuICAgICAgICAnaGlkZUxvYWRlcicsXG4gICAgXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYiwgX2M7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIG9wZW5Nb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhU3RvcmFnZSA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiB7fSxcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiB7fSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKChfYyA9IHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWydhY3Rpdml0aWVzJ10pO1xuICAgICAgICB2YXIgY29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaGFzRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICBpZHM6IFtdLFxuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgZW1pdCgnaGlkZUxvYWRlcicpO1xuICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlID0gc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzO1xuICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoX2MgPSAoX2IgPSAoX2EgPSBwYVN0b3JhZ2UgPT09IG51bGwgfHwgcGFTdG9yYWdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnN0YXR1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDtcbiAgICAgICAgICAgIHZhciBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLnB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCdkYXRhJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgnYWN0aXZpdHlQdWJsaXNoZWREYXRhJywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gaGFzRmFpbGVkQWN0aXZpdGllcyA9PT0gbnVsbCB8fCBoYXNGYWlsZWRBY3Rpdml0aWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NvbWUgYWN0aXZpdGllcyBoYXZlIGZhaWxlZCB0byBwdWJsaXNoLiBSZWZyZXNoIHRvIHNlZSBjaGFuZ2VzLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aXZpdHkgaGFzIGJlZW4gcHVibGlzaGVkIHN1Y2Nlc3NmdWxseSwgcmVmcmVzaCB0byBzZWUgY2hhbmdlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGJ1bGtQdWJsaXNoU3RhdHVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50LCBjaGVja1N0YXR1cztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdkYXRhJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgnYWN0aXZpdHlQdWJsaXNoZWREYXRhJywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzICE9PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UucHVibGlzaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdhY3Rpdml0eVB1Ymxpc2hlZERhdGEnLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzID0gZnVuY3Rpb24gKG5lc3RlZE9iamVjdCkge1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNJRCA9IFtdO1xuICAgICAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gbmVzdGVkT2JqZWN0ICYmIE9iamVjdC5lbnRyaWVzKG5lc3RlZE9iamVjdCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YSA9PT0gbnVsbCB8fCBhc0FycmF5RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgT2JqZWN0LnZhbHVlcyh2YWx1ZSkuaW5kZXhPZignZmFpbGVkJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzSUQucHVzaCh2YWx1ZS5hY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllc0RhdGEgPSBmaWx0ZXJlZCAmJiBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgaWYgKChmYWlsZWRBY3Rpdml0aWVzSUQgPT09IG51bGwgfHwgZmFpbGVkQWN0aXZpdGllc0lEID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmYWlsZWRBY3Rpdml0aWVzSUQubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBmYWlsZWRBY3Rpdml0aWVzSUQ7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0gZmFpbGVkQWN0aXZpdGllc0RhdGE7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICdTb21lIGFjdGl2aXRpZXMgaGF2ZSBmYWlsZWQgdG8gcHVibGlzaC4gUmVmcmVzaCB0byBzZWUgY2hhbmdlcy4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFthY3Rpdml0aWVzLnZhbHVlLCBidWxrUHVibGlzaExlbmd0aC52YWx1ZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpdml0aWVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnaGlkZUxvYWRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGFUb0xvY2Fsc3RvcmFnZSgpO1xuICAgICAgICAgICAgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gb3Blbk1vZGVsLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGVtaXQoJ3RvZ2dsZScsIHZhbHVlKTsgfSk7XG4gICAgICAgIHZhciBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gKDAsIHV0aWxzXzEuaXNKc29uKShhY3Rpdml0aWVzLnZhbHVlKSAmJiBKU09OLnBhcnNlKGFjdGl2aXRpZXMudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0YVRvTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2J1bGtQdWJsaXNoQWN0aXZpdGllcycsIEpTT04uc3RyaW5naWZ5KHBhU3RvcmFnZS52YWx1ZSkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHB1Ymxpc2hpbmdBY3Rpdml0aWVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocHVibGlzaGluZ0FjdGl2aXRpZXMsIChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwYTogcGEsIGJ1bGtQdWJsaXNoTGVuZ3RoOiBidWxrUHVibGlzaExlbmd0aCwgb3Blbk1vZGVsOiBvcGVuTW9kZWwsIHBhU3RvcmFnZTogcGFTdG9yYWdlLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIGNvbXBsZXRlZDogY29tcGxldGVkLCBlbWl0OiBlbWl0LCByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgaGFzRmFpbGVkQWN0aXZpdGllczogaGFzRmFpbGVkQWN0aXZpdGllcywgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YTogcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSwgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBmYWlsZWRBY3Rpdml0aWVzOiBmYWlsZWRBY3Rpdml0aWVzLCBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZTogZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UsIHNldERhdGFUb0xvY2Fsc3RvcmFnZTogc2V0RGF0YVRvTG9jYWxzdG9yYWdlLCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQnVsa3B1Ymxpc2hXaXRoWGxzJyxcbiAgICBlbWl0czogW1xuICAgICAgICAnY2xvc2UnLFxuICAgICAgICAndG9nZ2xlJyxcbiAgICAgICAgJ2FjdGl2aXR5UHVibGlzaGVkRGF0YScsXG4gICAgICAgICdoaWRlTG9hZGVyJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaExlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgb3Blbk1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGFTdG9yYWdlID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHt9LFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHt9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoKF9jID0gcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZnJlc2hUb2FzdE1zZycpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVtaXQoJ2hpZGVMb2FkZXInKTtcbiAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZSA9IHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcztcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9XG4gICAgICAgICAgICAgICAgKF9jID0gKF9iID0gKF9hID0gcGFTdG9yYWdlID09PSBudWxsIHx8IHBhU3RvcmFnZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFTdG9yYWdlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zdGF0dXMpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID0gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7XG4gICAgICAgICAgICB2YXIgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UucHVibGlzaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcucmVzcG9uc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuYWN0aXZpdGllcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdhY3Rpdml0eVB1Ymxpc2hlZERhdGEnLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkLnZhbHVlID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5jb21wbGV0ZWRTdGVwcyA9IFsxLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChfYiA9IChfYSA9IHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaWRzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2VUeXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU29tZSBhY3Rpdml0aWVzIGhhdmUgZmFpbGVkIHRvIHB1Ymxpc2guIFJlZnJlc2ggdG8gc2VlIGNoYW5nZXMuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQsIGNoZWNrU3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcucmVzcG9uc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ2FjdGl2aXR5UHVibGlzaGVkRGF0YScsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllcyhwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciByZXRyeVB1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gWzFdO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLnJlc3BvbnNlID0gbnVsbDtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmdcbiAgICAgICAgICAgICAgICAuaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YVtrZXldLnN0YXR1cyA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhO1xuICAgICAgICAgICAgLy8gYXBpIGVuZHBvaW50IGNhbGxcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvc3RhcnQtYnVsay1wdWJsaXNoP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMsIFwiXVwiKTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9XG4gICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBbXTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPVxuICAgICAgICAgICAgICAgIHt9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXMgPSBmdW5jdGlvbiAobmVzdGVkT2JqZWN0KSB7XG4gICAgICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllc0lEID0gW107XG4gICAgICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBuZXN0ZWRPYmplY3QgJiYgT2JqZWN0LmVudHJpZXMobmVzdGVkT2JqZWN0KTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhID09PSBudWxsIHx8IGFzQXJyYXlEYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBPYmplY3QudmFsdWVzKHZhbHVlKS5pbmRleE9mKCdmYWlsZWQnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXNJRC5wdXNoKHZhbHVlLmFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzRGF0YSA9IGZpbHRlcmVkICYmIE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICBpZiAoKGZhaWxlZEFjdGl2aXRpZXNJRCA9PT0gbnVsbCB8fCBmYWlsZWRBY3Rpdml0aWVzSUQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZhaWxlZEFjdGl2aXRpZXNJRC5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9XG4gICAgICAgICAgICAgICAgICAgIHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID1cbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllc0lEO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPVxuICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzRGF0YTtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2VUeXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgJ1NvbWUgYWN0aXZpdGllcyBoYXZlIGZhaWxlZCB0byBwdWJsaXNoLiBSZWZyZXNoIHRvIHNlZSBjaGFuZ2VzLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPVxuICAgICAgICAgICAgICAgICAgICBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPVxuICAgICAgICAgICAgICAgICAgICBbXTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID1cbiAgICAgICAgICAgICAgICAgICAge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb21wbGV0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8XG4gICAgICAgICAgICAgICAgKCgoX2IgPSAoX2EgPSBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydhY3Rpdml0aWVzJ10pICYmXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoKF9kID0gKF9jID0gcGFTdG9yYWdlID09PSBudWxsIHx8IHBhU3RvcmFnZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFTdG9yYWdlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFsnYWN0aXZpdGllcyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKChfZiA9IChfZSA9IHBhU3RvcmFnZSA9PT0gbnVsbCB8fCBwYVN0b3JhZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhU3RvcmFnZS52YWx1ZSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZbJ2FjdGl2aXRpZXMnXSlbaV1bJ3N0YXR1cyddID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gKChjb21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlIC9cbiAgICAgICAgICAgICAgICAoKChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoKF9iID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKS5sZW5ndGgpKSAqXG4gICAgICAgICAgICAgICAgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSxcbiAgICAgICAgXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnaGlkZUxvYWRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGFUb0xvY2Fsc3RvcmFnZSgpO1xuICAgICAgICAgICAgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gb3Blbk1vZGVsLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGVtaXQoJ3RvZ2dsZScsIHZhbHVlKTsgfSk7XG4gICAgICAgIHZhciBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuYWN0aXZpdGllcyA9XG4gICAgICAgICAgICAgICAgKDAsIHV0aWxzXzEuaXNKc29uKShzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuYWN0aXZpdGllcykgJiZcbiAgICAgICAgICAgICAgICAgICAgSlNPTi5wYXJzZShzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuYWN0aXZpdGllcyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJywgSlNPTi5zdHJpbmdpZnkocGFTdG9yYWdlLnZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHB1Ymxpc2hpbmdBY3Rpdml0aWVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZU1pbmltaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocHVibGlzaGluZ0FjdGl2aXRpZXMsIChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFB1Ymxpc2hpbmdSZXRyeTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0cnlQdWJsaXNoaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHBhOiBwYSwgYnVsa1B1Ymxpc2hMZW5ndGg6IGJ1bGtQdWJsaXNoTGVuZ3RoLCBvcGVuTW9kZWw6IG9wZW5Nb2RlbCwgcGFTdG9yYWdlOiBwYVN0b3JhZ2UsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgY29tcGxldGVkOiBjb21wbGV0ZWQsIGVtaXQ6IGVtaXQsIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLCBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhOiBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhLCBidWxrUHVibGlzaFN0YXR1czogYnVsa1B1Ymxpc2hTdGF0dXMsIHJldHJ5UHVibGlzaGluZzogcmV0cnlQdWJsaXNoaW5nLCBmYWlsZWRBY3Rpdml0aWVzOiBmYWlsZWRBY3Rpdml0aWVzLCBjb21wbGV0ZWRBY3Rpdml0aWVzOiBjb21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2U6IGdldERhdGFGcm9tTG9jYWxzdG9yYWdlLCBzZXREYXRhVG9Mb2NhbHN0b3JhZ2U6IHNldERhdGFUb0xvY2Fsc3RvcmFnZSwgZW1wdHlidWxrUHVibGlzaFN0YXR1czogZW1wdHlidWxrUHVibGlzaFN0YXR1cywgaGFuZGxlTWluaW1pemU6IGhhbmRsZU1pbmltaXplIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQnV0dG9uQ29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7IFNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpc0xvYWRpbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlMZW5ndGg6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGlzYWJsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGJ0blR5cGUgPSAnJztcbiAgICAgICAgaWYgKHByb3BzLnR5cGUgPT09ICdzZWNvbmRhcnknKSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ3NlY29uZGFyeS1idG4gZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAnb3V0bGluZScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAncHJpbWFyeS1vdXRsaW5lLWJ0bic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gJ3ByaW1hcnknKSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ3ByaW1hcnktYnRuIGZvbnQtYm9sZCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ2ZvbnQtYm9sZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgYnRuVHlwZTogYnRuVHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZV9mbnNfMSA9IHJlcXVpcmUoXCJkYXRlLWZuc1wiKTtcbnZhciB2dWVfZGF0ZXBpY2tlcl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlcGljL3Z1ZS1kYXRlcGlja2VyXCIpKTtcbnJlcXVpcmUoXCJAdnVlcGljL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvbWFpbi5jc3NcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGF0ZVJhbmdlV2lkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkcm9wZG93blJhbmdlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBmaXJzdERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlTGFiZWw6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBzdGFydGluZ0RhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBlbmRpbmdEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZU5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ3RyaWdnZXJTZXREYXRlUmFuZ2UnLFxuICAgICAgICAndHJpZ2dlclNldERhdGVUeXBlJyxcbiAgICAgICAgJ2RhdGVDbGVhcmVkJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2VsZWN0ZWRQcmVzZW50SW5kZXggPSAoMCwgdnVlXzIucmVmKSg5OSk7XG4gICAgICAgIHZhciBkYXRlUmFuZ2VNYWluID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRhdGVEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkYXRlVHlwZU5hbWUgPSAoMCwgdnVlXzIucmVmKShwcm9wcy5kYXRlTmFtZSk7XG4gICAgICAgIGRhdGVUeXBlLnZhbHVlID0gcHJvcHMuZHJvcGRvd25SYW5nZSAmJiBPYmplY3QudmFsdWVzKHByb3BzLmRyb3Bkb3duUmFuZ2UpWzBdO1xuICAgICAgICB2YXIgZGF0ZVR5cGVLZXkgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGRhdGVUeXBlS2V5LnZhbHVlID0gcHJvcHMuZHJvcGRvd25SYW5nZSAmJiBPYmplY3Qua2V5cyhwcm9wcy5kcm9wZG93blJhbmdlKVswXTtcbiAgICAgICAgdmFyIHNob3dSYW5nZURyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaW5pdGlhbERhdGUgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmZpcnN0RGF0ZTsgfSk7XG4gICAgICAgIHZhciBmaXhlZCA9ICgwLCB2dWVfMi5yZWYpKHByb3BzLmRhdGVOYW1lKTtcbiAgICAgICAgdmFyIHRvZGF5RGF0ZSA9ICgwLCBtb21lbnRfMS5kZWZhdWx0KShuZXcgRGF0ZSgpKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKFtcbiAgICAgICAgICAgIG5ldyBEYXRlKCksXG4gICAgICAgICAgICBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgKyA3KSksXG4gICAgICAgIF0pO1xuICAgICAgICB2YXIgZGF0ZXBpY2tlciA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9IHRvZGF5RGF0ZTtcbiAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2UoJycsIHRvZGF5RGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbcHJvcHMuZW5kaW5nRGF0ZSwgcHJvcHMuc3RhcnRpbmdEYXRlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmVuZGluZ0RhdGUgJiYgcHJvcHMuc3RhcnRpbmdEYXRlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gcHJvcHMuc3RhcnRpbmdEYXRlO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9IHByb3BzLmVuZGluZ0RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2luZGV4XS5jbGFzc0xpc3QuYWRkKCdwcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUnKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbal0uY2xhc3NMaXN0LnJlbW92ZSgncHJlc2V0LXJhbmdlLWl0ZW0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmNsZWFyRGF0ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzZXREYXRlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnZGF0ZUNsZWFyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gOTk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhZGRFdmVudHNGb3JDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayhpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgX2xvb3BfMShpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWxlbmRhckl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX2NhbGVuZGFyX2l0ZW0nKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsZW5kYXJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNhbGVuZGFySXRlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZW1vdmVFdmVudHNPZkNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2ldLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2soaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIF9sb29wXzIoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY2FsZW5kYXJJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19jYWxlbmRhcl9pdGVtJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGVuZGFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhckl0ZW1zW2ldLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9ICFzaG93UmFuZ2VEcm9wZG93bi52YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2V0RGF0ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKCcnLCAnJyk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gJyc7XG4gICAgICAgICAgICAgICAgZml4ZWQudmFsdWUgPSAnQWxsIHRpbWUnO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCB7IHN1Y2Nlc3M6IHRydWUgfV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBwcmVzZXRSYW5nZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RvZGF5JyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZEYXkpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgd2VlaycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mV2VlaykobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCA3IGRheXMnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3ViRGF5cykobmV3IERhdGUoKSwgNiksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyBtb250aCcsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZk1vbnRoKShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCA2IG1vbnRoJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkoKDAsIGRhdGVfZm5zXzEuc3ViTW9udGhzKShuZXcgRGF0ZSgpLCA2KSksICgwLCBkYXRlX2Zuc18xLmVuZE9mTW9udGgpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIHllYXInLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZlllYXIpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgMTIgbW9udGhzJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkoKDAsIGRhdGVfZm5zXzEuc3ViTW9udGhzKShuZXcgRGF0ZSgpLCAxMikpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FsbCB0aW1lJyxcbiAgICAgICAgICAgICAgICByYW5nZTogW25ldyBEYXRlKGluaXRpYWxEYXRlLnZhbHVlKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07IH0pO1xuICAgICAgICB2YXIgY29udmVydERhdGUgPSBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgICAgdmFyIGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgICAgIHZhciB5ZWFyID0gZGF0ZU9iai5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgdmFyIG1vbnRoID0gU3RyaW5nKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICB2YXIgZGF5ID0gU3RyaW5nKGRhdGVPYmouZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHllYXIsIFwiLVwiKS5jb25jYXQobW9udGgsIFwiLVwiKS5jb25jYXQoZGF5KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wZW5DYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5vcGVuTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhcigpO1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUuY2xvc2VNZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3REYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLnNlbGVjdERhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlcykge1xuICAgICAgICAgICAgdmFyIHRlbXBBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBBcnJheVtpXSA9IGRhdGVzW2ldLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRlbXBBcnJheS5qb2luKCcgLSAnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlRGF0ZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZURhdGVEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgKF9hID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywga2VlcE1vZGVsT3Blbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlRGF0ZURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAoX2IgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwTW9kZWxPcGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBrZWVwTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc2VsZWN0ZWREYXRlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMF1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVswXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzFdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQoKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2RhdGVUeXBlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdHJpZ2dlclNldERhdGVUeXBlKGRhdGVUeXBlS2V5LnZhbHVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtwcm9wcy5jdXJyZW50Vmlld107IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gJyc7XG4gICAgICAgICAgICBmaXhlZC52YWx1ZSA9ICdBbGwgdGltZSc7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHRyaWdnZXJTZXREYXRlUmFuZ2UgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBmaWx0ZXJlZERhdGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWREYXRlVHlwZSA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkRGF0ZVR5cGUgPSAnJzsgfVxuICAgICAgICAgICAgZW1pdCgndHJpZ2dlclNldERhdGVSYW5nZScsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZmlsdGVyZWREYXRlVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuZGF0ZU5hbWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgZGF0ZVR5cGVOYW1lLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZpeGVkLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVswXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzBdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMV1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0cmlnZ2VyU2V0RGF0ZVR5cGUgPSBmdW5jdGlvbiAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCd0cmlnZ2VyU2V0RGF0ZVR5cGUnLCBldmVudFR5cGUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBmaXhlZC52YWx1ZSA9XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gcHJlc2V0UmFuZ2VzLnZhbHVlW3NlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnQ3VzdG9tJztcbiAgICAgICAgICAgIC8vIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gOTk7XG4gICAgICAgICAgICBpZiAoZGF0ZVR5cGVOYW1lLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZml4ZWQudmFsdWUgPSBkYXRlVHlwZU5hbWUudmFsdWU7XG4gICAgICAgICAgICAgICAgZGF0ZVR5cGVOYW1lLnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjdXN0b21Qb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgICAgICB2YXIgbGVmdFBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIGlmIChkYXRlUmFuZ2VNYWluLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGVmdFBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggLSAoKF9iID0gKF9hID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmlnaHQpID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDE1MFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBOdW1iZXIoKF9jID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSAtIDMwMFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOdW1iZXIoKF9kID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSAtIDQyMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wOiBOdW1iZXIoKF9lID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSkgKyAyMCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zaXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24gPSBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBkYXRlVHlwZUtleS52YWx1ZSA9IGtleTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBzZWxlY3RlZFByZXNlbnRJbmRleDogc2VsZWN0ZWRQcmVzZW50SW5kZXgsIGRhdGVSYW5nZU1haW46IGRhdGVSYW5nZU1haW4sIGRhdGVUeXBlOiBkYXRlVHlwZSwgZGF0ZURyb3Bkb3duOiBkYXRlRHJvcGRvd24sIGRhdGVUeXBlTmFtZTogZGF0ZVR5cGVOYW1lLCBkYXRlVHlwZUtleTogZGF0ZVR5cGVLZXksIHNob3dSYW5nZURyb3Bkb3duOiBzaG93UmFuZ2VEcm9wZG93biwgZW1pdDogZW1pdCwgaW5pdGlhbERhdGU6IGluaXRpYWxEYXRlLCBmaXhlZDogZml4ZWQsIHRvZGF5RGF0ZTogdG9kYXlEYXRlLCBzZWxlY3RlZERhdGU6IHNlbGVjdGVkRGF0ZSwgZGF0ZXBpY2tlcjogZGF0ZXBpY2tlciwgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrOiBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2ssIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrOiBoYW5kbGVDYWxlbmRhckl0ZW1DbGljaywgYWRkRXZlbnRzRm9yQ2FsZW5kYXI6IGFkZEV2ZW50c0ZvckNhbGVuZGFyLCByZW1vdmVFdmVudHNPZkNhbGVuZGFyOiByZW1vdmVFdmVudHNPZkNhbGVuZGFyLCB0b2dnbGVTaG93UmFuZ2VEcm9wZG93bjogdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd24sIHJlc2V0RGF0ZTogcmVzZXREYXRlLCBwcmVzZXRSYW5nZXM6IHByZXNldFJhbmdlcywgY29udmVydERhdGU6IGNvbnZlcnREYXRlLCBvcGVuQ2FsZW5kYXI6IG9wZW5DYWxlbmRhciwgY2xvc2VDYWxlbmRhcjogY2xvc2VDYWxlbmRhciwgc2VsZWN0RGF0ZTogc2VsZWN0RGF0ZSwgZm9ybWF0OiBmb3JtYXQsIGNsb3NlRGF0ZURyb3Bkb3duOiBjbG9zZURhdGVEcm9wZG93biwga2VlcE1vZGVsT3Blbjoga2VlcE1vZGVsT3BlbiwgdHJpZ2dlclNldERhdGVSYW5nZTogdHJpZ2dlclNldERhdGVSYW5nZSwgdHJpZ2dlclNldERhdGVUeXBlOiB0cmlnZ2VyU2V0RGF0ZVR5cGUsIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQ6IHNldFNlbGVjdGVkUHJlc2VudERheVRleHQsIGN1c3RvbVBvc2l0aW9uOiBjdXN0b21Qb3NpdGlvbiwgc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd246IHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duLCBWdWVEYXRlUGlja2VyOiB2dWVfZGF0ZXBpY2tlcl8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdEZXNjcmlwdGlvbkZvcm0nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7fSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMyA9IHJlcXVpcmUoXCJAaGVhZGxlc3N1aS92dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvck1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGlzRW1wdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHNob3cgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNFcnJvcnMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGFjY291bnRfdmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX2FjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0X3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgdG9rZW5fc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvc3RhdHVzJyksXG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy91c2VyL3ZlcmlmaWNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL29yZ2FuaXNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihheGlvc18xLmRlZmF1bHQuc3ByZWFkKGZ1bmN0aW9uIChzZXR0aW5nX3JlcywgdXNlcl9yZXMsIG9yZ19yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gc2V0dGluZ19yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVzZXJfcmVzcG9uc2UgPSB1c2VyX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3JnX3Jlc3BvbnNlID0gb3JnX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuZGVmYXVsdF9zZXR0aW5nID0gKF9hID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnB1Ymxpc2hlcl9zZXR0aW5nID0gKF9iID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoZXJfc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudG9rZW5fc3RhdHVzID0gKF9jID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b2tlbl9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5hY2NvdW50X3ZlcmlmaWVkID0gdXNlcl9yZXNwb25zZS5kYXRhLmFjY291bnRfdmVyaWZpZWQ7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wdWJsaXNoZXJfYWN0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChfZSA9IChfZCA9IG9yZ19yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucHVibGlzaGVyX2FjdGl2ZSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBncm91cGVkRXJyb3IgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaXNoZXJfc2V0dGluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW5fc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyb3IgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yRGF0YVtlcnJvcl0gJiYgZ3JvdXBlZEVycm9yLmluZGV4T2YoZXJyb3IpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIShlcnJvckRhdGEucHVibGlzaGVyX3NldHRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50b2tlbl9zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5kZWZhdWx0X3NldHRpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50LnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMoZXJyb3JEYXRhKS5pbmRleE9mKGZhbHNlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNob3c6IHNob3csIGhhc0Vycm9yczogaGFzRXJyb3JzLCBlcnJvckNvdW50OiBlcnJvckNvdW50LCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIFRyYW5zaXRpb25Sb290OiB2dWVfMy5UcmFuc2l0aW9uUm9vdCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Vycm9yUG9wVXAnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogQXJyYXkgfHwgU3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjbG9zZS1wb3B1cCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZS1wb3B1cCcsICdjbG9zZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGVtaXQ6IGVtaXQsIHByb3BzOiBwcm9wcywgY2xvc2U6IGNsb3NlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSGVscGVyVGV4dCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaGVscGVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgQm9vbGVhbl0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzaG93QWNjb3JkaWFuSXRlbXMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNUcnVlUGF0aCA9IHR5cGVvZiBwcm9wcy5oZWxwZXJUZXh0ID09PSAnc3RyaW5nJztcbiAgICAgICAgdmFyIHBhdGhBcnJheXMgPSBoYXNUcnVlUGF0aCA/IFtdIDogZmluZFRydWVQYXRocyhwcm9wcy5oZWxwZXJUZXh0KTtcbiAgICAgICAgdmFyIHRvZ2dsZVNob3dBY2NvcmRpYW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93QWNjb3JkaWFuSXRlbXMudmFsdWUgPSAhc2hvd0FjY29yZGlhbkl0ZW1zLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBmaW5kVHJ1ZVBhdGhzKG9iaiwgcGF0aCwgcGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChwYXRoID09PSB2b2lkIDApIHsgcGF0aCA9IFtdOyB9XG4gICAgICAgICAgICBpZiAocGF0aHMgPT09IHZvaWQgMCkgeyBwYXRocyA9IFtdOyB9XG4gICAgICAgICAgICBmdW5jdGlvbiBzbmFrZVRvS2ViYWIoc3RyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9fL2csICctJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBpc1NuYWtlQ2FzZShzdHIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLmluY2x1ZGVzKCdfJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRPcmRpbmFsKG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgcyA9IFsndGgnLCAnc3QnLCAnbmQnLCAncmQnXTtcbiAgICAgICAgICAgICAgICB2YXIgdiA9IG4gJSAxMDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG4gKyAoc1sodiAtIDIwKSAlIDEwXSB8fCBzW3ZdIHx8IHNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcGF0aHMucHVzaChwYXRoLmpvaW4oJyDinqQgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICAgICAgb2JqLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmRUcnVlUGF0aHMoaXRlbSwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBwYXRoLCB0cnVlKSwgW2dldE9yZGluYWwoaW5kZXggKyAxKV0sIGZhbHNlKSwgcGF0aHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAob2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0tleSA9IGlzU25ha2VDYXNlKGtleSkgPyBzbmFrZVRvS2ViYWIoa2V5KSA6IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRUcnVlUGF0aHMob2JqW2tleV0sIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcGF0aCwgdHJ1ZSksIFtuZXdLZXldLCBmYWxzZSksIHBhdGhzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXRocztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHNob3dBY2NvcmRpYW5JdGVtczogc2hvd0FjY29yZGlhbkl0ZW1zLCBoYXNUcnVlUGF0aDogaGFzVHJ1ZVBhdGgsIHBhdGhBcnJheXM6IHBhdGhBcnJheXMsIHRvZ2dsZVNob3dBY2NvcmRpYW46IHRvZ2dsZVNob3dBY2NvcmRpYW4sIGZpbmRUcnVlUGF0aHM6IGZpbmRUcnVlUGF0aHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3ctNjAnLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpY29uU2l6ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJYXRpUmVmZXJlbmNlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMb2FkZXJDbXAnLFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdNdWx0aVNlbGVjdFdpdGhTZWFyY2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpc3RJdGVtczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdGVtcExpc3RJdGVtcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY2hlY2tlZEJveGVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1hdFB1Ymxpc2hlclR5cGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbkJlZm9yZVVubW91bnQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlQXJyYXlCeVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWVbaV0uc2hvdyA9IGl0ZW0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFwcGx5RmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdGVtcExpc3RJdGVtczogdGVtcExpc3RJdGVtcywgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0OiBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QsIGVtaXQ6IGVtaXQsIGtleXM6IGtleXMsIHNlYXJjaElucHV0OiBzZWFyY2hJbnB1dCwgY2hlY2tlZEJveGVzOiBjaGVja2VkQm94ZXMsIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyOiBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciwgZm9ybWF0UHVibGlzaGVyVHlwZTogZm9ybWF0UHVibGlzaGVyVHlwZSwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgdXBkYXRlQXJyYXlCeVNlYXJjaDogdXBkYXRlQXJyYXlCeVNlYXJjaCwga2VlcFB1Ymxpc2hlck1vZGVsT3Blbjoga2VlcFB1Ymxpc2hlck1vZGVsT3BlbiwgYXBwbHlGaWx0ZXI6IGFwcGx5RmlsdGVyLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5MaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvcHVwTW9kYWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1vZGFsQWN0aXZlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUGFkZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJzgwOScsXG4gICAgICAgIH0sXG4gICAgICAgIGRpc2FibGVCb2R5T3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJywgJ3Jlc2V0J10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMubW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLm1vZGFsQWN0aXZlOyB9LCBmdW5jdGlvbiAobW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgIGlmIChtb2RhbEFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGlmICghcHJvcHMuZGlzYWJsZUJvZHlPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNoZWNrU3VwcG9ydEJ1dHRvbl8xID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b25fMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BzLmRpc2FibGVCb2R5T3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uXzIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b25fMik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZScpO1xuICAgICAgICAgICAgZW1pdCgncmVzZXQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsb3NlOiBjbG9zZSxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1yYWRpYWwtcHJvZ3Jlc3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IHZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBjb21wbGV0ZWRQZXJjZW50ID0gKDAsIHZ1ZV8xLnJlZikocHJvcHMucGVyY2VudCk7XG4gICAgICAgIHZhciB0b3RhbFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKSgxMDApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGxldGVkUGVyY2VudDogY29tcGxldGVkUGVyY2VudCxcbiAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdTaWRlSGVscFRleHQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHZpc2libGU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjbG9zZVNpZGViYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZScpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGNsb3NlU2lkZWJhcjogY2xvc2VTaWRlYmFyIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N0ZXBCYXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRTdGVwOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2Utc3RlcCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY2hlY2tNYXJrID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGNoZWNrTWFyaywgZnVuY3Rpb24gKG5ld1ZhbCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVycm9yXzE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LnBvc3QoJ29yZ2FuaXNhdGlvbi1vbmJvYXJkaW5nL3RvZ2dsZS1kb250LXNob3cvJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3VmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaXNGb3JjZU9wZW5Nb2RhbCcsICdmYWxzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgY2hlY2tNYXJrOiBjaGVja01hcmsgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVGFibGVMb2FkZXJDb21wb25lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHJvd0NvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgY29sQ291bnQ6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDEgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGFnaW5hdGlvbkNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2ZldGNoQWN0aXZpdGllcyddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGFjdGl2ZV9wYWdlID0gKDAsIHZ1ZV8xLnJlZikoMSk7XG4gICAgICAgIHZhciBsYXN0X3BhZ2VsaXN0ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIG1pZF9wYWdlbGlzdCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMucmVzZXQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShhY3RpdmVfcGFnZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnZmV0Y2hBY3Rpdml0aWVzJywgYWN0aXZlX3BhZ2UudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxhc3RwYWdlcyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3RfcGFnZWxpc3QudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbWlkcGFnZXMgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBtaWRfcGFnZWxpc3QudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmVQYWdlKHBhZ2UpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gcGFnZTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjaGFuZ2VQYWdlKHBhZ2VOdW0pIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gcGFnZU51bTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBuZXh0UGFnZSgpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID1cbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9PT0gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgPyAxIDogYWN0aXZlX3BhZ2UudmFsdWUgKyAxO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gYWN0aXZlX3BhZ2UudmFsdWU7IH0sIGZ1bmN0aW9uIChjdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgbGFzdF9wYWdlbGlzdC52YWx1ZSA9IEFycmF5LmZyb20oQXJyYXkocHJvcHMuZGF0YS5sYXN0X3BhZ2UpLCBmdW5jdGlvbiAoXywgaW5kZXgpIHsgcmV0dXJuIGluZGV4ICsgMTsgfSk7XG4gICAgICAgICAgICBsYXN0X3BhZ2VsaXN0LnZhbHVlID0gbGFzdF9wYWdlbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSA+IHByb3BzLmRhdGEubGFzdF9wYWdlIC0gNSAmJiBwcm9wcy5kYXRhLmxhc3RfcGFnZSAhPSB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pZF9wYWdlbGlzdC52YWx1ZSA9IEFycmF5LmZyb20oQXJyYXkoY3VycmVudFBhZ2UgKyAyKSwgZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiBpbmRleCArIDE7IH0pO1xuICAgICAgICAgICAgbWlkX3BhZ2VsaXN0LnZhbHVlID0gbWlkX3BhZ2VsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiBjdXJyZW50UGFnZSAtIDM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHByZXZpb3VzUGFnZSgpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID1cbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9PT0gMSA/IHByb3BzLmRhdGEubGFzdF9wYWdlIDogYWN0aXZlX3BhZ2UudmFsdWUgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVfcGFnZTogYWN0aXZlX3BhZ2UsXG4gICAgICAgICAgICB1cGRhdGVBY3RpdmVQYWdlOiB1cGRhdGVBY3RpdmVQYWdlLFxuICAgICAgICAgICAgbmV4dFBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcHJldmlvdXNQYWdlOiBwcmV2aW91c1BhZ2UsXG4gICAgICAgICAgICBjaGFuZ2VQYWdlOiBjaGFuZ2VQYWdlLFxuICAgICAgICAgICAgbGFzdHBhZ2VzOiBsYXN0cGFnZXMsXG4gICAgICAgICAgICBtaWRwYWdlczogbWlkcGFnZXMsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb2FzdE1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGljb25OYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgaWNvbkNsYXNzID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdXBkYXRlVUkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLnR5cGUgPT09ICdzdHJpbmcnICYmIHByb3BzLnR5cGUgPT09ICd3YXJuaW5nJykge1xuICAgICAgICAgICAgICAgIGljb25OYW1lLnZhbHVlID0gJ2V4Y2xhbWF0aW9uLXdhcm5pbmcnO1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLWVnZ3NoZWxsIGJvcmRlciBib3JkZXItY2FtZWwtNDAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICAgICAgICAgIGljb25DbGFzcy52YWx1ZSA9ICdoLTUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJvcHMudHlwZSkge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLW1pbnQgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICAgICAgICAgIGljb25OYW1lLnZhbHVlID0gJ2NoZWNrLWNpcmNsZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpY29uTmFtZS52YWx1ZSA9ICd0aW1lcy1jaXJjbGUnO1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLWNyaW1zb24tMTAgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gSW5pdGlhbCBjYWxsIHRvIHVwZGF0ZVVJXG4gICAgICAgIHVwZGF0ZVVJKCk7XG4gICAgICAgIC8vIFdhdGNoIGZvciBjaGFuZ2VzIGluIHByb3BzLnR5cGVcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy50eXBlOyB9LCB1cGRhdGVVSSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGljb25OYW1lOiBpY29uTmFtZSwgaWNvbkNsYXNzOiBpY29uQ2xhc3MsIHVwZGF0ZVVJOiB1cGRhdGVVSSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3RFcnJvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzaG93RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93V2FybmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICAoKF9hID0gcHJvcHMuYWN0aXZpdHkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcnNbY3VycmVudEVycm9yXSkgJiZcbiAgICAgICAgICAgICAgICAoKF9iID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2EgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYiA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9zdGFydFswXS5kYXRlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpKTtcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2MgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1VudGl0bGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNob3dFcnJvcnM6IHNob3dFcnJvcnMsIHNob3dDcml0aWNhbDogc2hvd0NyaXRpY2FsLCBjcml0aWNhbFRvZ2dsZTogY3JpdGljYWxUb2dnbGUsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgcHJvcHM6IHByb3BzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHRpdGxlOiB0aXRsZSwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGU6IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgbWFwQWN0aXZpdHlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCYXNpYyBBY3Rpdml0eSBFbGVtZW50cyc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSW5kaWNhdG9ycyBleGNlcHQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1Jlc3VsdCBleGNlcHQgSW5kaWNhdG9ycyBhbmQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjdXJyZW50QWN0aXZpdHkudmFsdWUgPSBtYXBBY3Rpdml0eU5hbWUocHJvcHMuYWN0aXZpdHlOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b3RhbENvdW50ICE9PSAwICYmIHByb3BzLnRvdGFsQ291bnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnByb2Nlc3NlZENvdW50IC8gcHJvcHMudG90YWxDb3VudCkgKiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNGYWlsZWRNZXNzYWdlJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Byb2Nlc3NpbmcnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIHByb3BzOiBwcm9wcywgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIHJldHJ5OiByZXRyeSwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsIHByb2Nlc3Npbmc6IHByb2Nlc3NpbmcsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEFjdGl2aXR5RG93bmxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWN0aXZpdHlEb3dubG9hZC52dWVcIikpO1xudmFyIFhsc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9YbHNMb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlWYWxpZGF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWVcIikpO1xudmFyIEJ1bGtwdWJsaXNoTG9hZGVyQ2FyZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzVXBsb2FkSW5kaWNhdG9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eU5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG90YWxDb3VudDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyIHx8IG51bGwsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzZWRDb3VudDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgeGxzRmFpbGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0RhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1hsc1N0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjYW5jZWxEb3dubG9hZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dCdWxrcHVibGlzaExvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhcmVudEVsZW1lbnRSZWYgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGhlaWdodCA9ICgwLCBjb3JlXzEudXNlRWxlbWVudFNpemUpKHBhcmVudEVsZW1lbnRSZWYpLmhlaWdodDtcbiAgICAgICAgdmFyIG1pbmltaXplID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgnbWluaW1pemVCYWNrZ3JvdW5kTW9kYWwnLCB0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5UHVibGlzaGVkRGF0YSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNEb3dubG9hZFN0YXR1cycpO1xuICAgICAgICB2YXIgaXNCbGlua2luZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b247XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvbk5hbWVzID0gKHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZS5zdGF0ZS52YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJ3wnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3dWYWxpZGF0aW9uUG9wdXAudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9iID0gcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2MgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU3VwcG9ydEJ1dHRvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50UmVmID09PSBudWxsIHx8IHBhcmVudEVsZW1lbnRSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEVsZW1lbnRSZWYudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5pbWl6ZSA9PT0gbnVsbCB8fCBtaW5pbWl6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWluaW1pemUudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXgoLTQ1MHB4KScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgY2hlY2tWYWxpZGF0aW9uKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIHByb2NlZWRWYWxpZGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGNhbmNlbFZhbGlkYXRpb25Qb2xsaW5nKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja1ZhbGlkYXRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGFjdGl2aXRpZXNfMSwgYWN0aXZpdHlJZCwgZXJyb3JfMTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmlhdGlWYWxpZGF0b3JMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2NoZWNrcy1mb3ItYWN0aXZpdHktYnVsay12YWxpZGF0aW9uXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pYXRpVmFsaWRhdG9yTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNfMSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9ICFyZXNwb25zZS5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXRpZXNfMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycsIE9iamVjdC52YWx1ZXMoSlNPTi5wYXJzZShhY3Rpdml0aWVzXzEpKS5qb2luKCd8JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eUlkID0gT2JqZWN0LmtleXMoSlNPTi5wYXJzZShhY3Rpdml0aWVzXzEpKS5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcycsIGFjdGl2aXR5SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1ZhbGlkYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHZhbGlkYXRpb246JywgZXJyb3JfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgY2FuY2VsVmFsaWRhdGlvblBvbGxpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoLCBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXNdOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gc3RvcmUgPT09IG51bGwgfHwgc3RvcmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0b3JlLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgKChfYyA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnZhbGlkYXRpb25SdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyB2YXIgX2E7IHJldHVybiAoX2EgPSBzdG9yZSA9PT0gbnVsbCB8fCBzdG9yZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RvcmUuc3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdGFydEJ1bGtQdWJsaXNoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIC8vIHdhdGNoKFxuICAgICAgICAvLyAgICgpID0+IHNob3dWYWxpZGF0aW9uUG9wdXAudmFsdWUsXG4gICAgICAgIC8vICAgKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgLy8gICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyApO1xuICAgICAgICB2YXIgY2hlY2tWYWxpZGF0aW9uU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9nZXQtdmFsaWRhdGlvbi1zdGF0dXM/YWN0aXZpdGllcz1bXCIuY29uY2F0KHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzLCBcIl1cIikpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuY29tcGxldGUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmZhaWxlZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuaW1wb3J0ZWRBY3Rpdml0aWVzTGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uTmFtZXMgPSAoKChfYSA9IHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZS5zdGF0ZS52YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc3BsaXQoJ3wnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS50b3RhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmNvbXBsZXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmNvbXBsZXRlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuZmFpbGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmZhaWxlZF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuaWF0aVZhbGlkYXRvckxvYWRlciA9IGZhbHNlOyAvLyBBc3N1bWluZyB5b3UgbmVlZCB0byBzZXQgdGhpcyB0byBmYWxzZSB0byBzdG9wIHRoZSBsb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHBvbGwsIDMwMDApOyAvLyBDYWxsIHBvbGwgYWdhaW4gYWZ0ZXIgMyBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5zaG93VmFsaWRhdGlvbkVycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICAgICFyZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQocG9sbCwgMzAwMCk7IC8vIFJldHJ5IGFmdGVyIDMgc2Vjb25kcyBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcG9sbCgpOyAvLyBJbml0aWFsIGNhbGwgdG8gc3RhcnQgdGhlIHBvbGxpbmdcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb247IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycsIHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrVmFsaWRhdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1ZhbGlkYXRpb25Qb3B1cDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjbG9zZUJ1bGtwdWJsaXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb24sIHN0b3JlLnN0YXRlLnZhbGlkYXRpb25SdW5uaW5nXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnN0YXJ0VmFsaWRhdGlvbiB8fCBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZykge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dWYWxpZGF0aW9uUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb24gfHwgc3RvcmUuc3RhdGUudmFsaWRhdGlvblJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwcHggLDBweCknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNsb3NlQnVsa3B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpLCB7IGNvbXBsZXRlOiAwLCB0b3RhbDogMCwgZmFpbGVkOiAwIH0pIH0pO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuc2hvd0J1bGtwdWJsaXNoID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzOnt9Jyk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSwgeyByZXNwb25zZTogbnVsbCwgaGFzRmFpbGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LCBhY3Rpdml0aWVzOiBudWxsIH0pO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VYbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbFVwbG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDbG9zZVhsc01vZGVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIGZhbHNlKTsgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2FuY2VsRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FuY2VsRG93bmxvYWQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhcmVudEVsZW1lbnRSZWYudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uXzEgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGV5KDBweCknO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b25fMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBtaW5pbWl6ZS52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnRSZWYudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXgoLTQ1MHB4KScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkaW5nJyk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXRpZXMnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmdBY3Rpdml0eUNvdW50ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCAmJlxuICAgICAgICAgICAgICAgIChhY3Rpdml0aWVzID09PSBudWxsIHx8IGFjdGl2aXRpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXRpZXMudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllcyA9PT0gbnVsbCB8fCBhY3Rpdml0aWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0aWVzLnZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoZG93bmxvYWRpbmcgPT09IG51bGwgfHwgZG93bmxvYWRpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvd25sb2FkaW5nLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICEoZG93bmxvYWRDb21wbGV0ZWQgPT09IG51bGwgfHwgZG93bmxvYWRDb21wbGV0ZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvd25sb2FkQ29tcGxldGVkLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICEoY2FuY2VsRG93bmxvYWQgPT09IG51bGwgfHwgY2FuY2VsRG93bmxvYWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmNlbERvd25sb2FkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMueGxzRGF0YSAmJiAoc2hvd1hsc1N0YXR1cyA9PT0gbnVsbCB8fCBzaG93WGxzU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG93WGxzU3RhdHVzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2hvd1ZhbGlkYXRpb25Qb3B1cC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAobWluaW1pemUgPT09IG51bGwgfHwgbWluaW1pemUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1pbmltaXplLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleCgtNDUwcHgpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvbXBsZXRlQWN0aXZpdHlDb3VudCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmICgoKF9hID0gYWN0aXZpdHlQdWJsaXNoZWREYXRhID09PSBudWxsIHx8IGFjdGl2aXR5UHVibGlzaGVkRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlQdWJsaXNoZWREYXRhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcgJiZcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5zaG93QnVsa3B1Ymxpc2gpIHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChkb3dubG9hZFN0YXR1cyA9PT0gbnVsbCB8fCBkb3dubG9hZFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG93bmxvYWRTdGF0dXMudmFsdWUpID09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhpZGVCdWxrcHVibGlzaExvYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaExvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlQWN0aXZpdHlQdWJsaXNoZWREYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIGFjdGl2aXR5UHVibGlzaGVkRGF0YS52YWx1ZSA9IGRhdGE7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB2YWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pbXBvcnRlZEFjdGl2aXRpZXNMaXN0KS5zb21lKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmlzX3ZhbGlkKSA9PT0gZmFsc2U7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhhbmRsZUJhY2tncm91bmRQcm9jZXNzVG9nZ2xlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1pbmltaXplLnZhbHVlID0gIW1pbmltaXplLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2hFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmYWlsZWQgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5mYWlsZWQ7XG4gICAgICAgICAgICB2YXIgdG90YWwgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbDtcbiAgICAgICAgICAgIHZhciBjb21wbGV0ZWQgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5jb21wbGV0ZTtcbiAgICAgICAgICAgIGlmICh0b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZmFpbGVkID09PSB0b3RhbCB8fCB0b3RhbCA9PT0gY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJsaW5rQmFja2dyb3VuZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlmICgoKF9iID0gKF9hID0gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzcG9uc2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zdGF0dXMpID09PVxuICAgICAgICAgICAgICAgICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgYmxpbmtCYWNrZ3JvdW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBibGlua0JhY2tncm91bmQoKSB7XG4gICAgICAgICAgICBpc0JsaW5raW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzQmxpbmtpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc2hvd1hsc1N0YXR1czogc2hvd1hsc1N0YXR1cywgZG93bmxvYWRDb21wbGV0ZWQ6IGRvd25sb2FkQ29tcGxldGVkLCBjYW5jZWxEb3dubG9hZDogY2FuY2VsRG93bmxvYWQsIHNob3dCdWxrcHVibGlzaExvYWRlcjogc2hvd0J1bGtwdWJsaXNoTG9hZGVyLCBwYXJlbnRFbGVtZW50UmVmOiBwYXJlbnRFbGVtZW50UmVmLCBoZWlnaHQ6IGhlaWdodCwgbWluaW1pemU6IG1pbmltaXplLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIGJ1bGtQdWJsaXNoTGVuZ3RoOiBidWxrUHVibGlzaExlbmd0aCwgYWN0aXZpdHlQdWJsaXNoZWREYXRhOiBhY3Rpdml0eVB1Ymxpc2hlZERhdGEsIGRvd25sb2FkU3RhdHVzOiBkb3dubG9hZFN0YXR1cywgaXNCbGlua2luZzogaXNCbGlua2luZywgcGE6IHBhLCBwcm9wczogcHJvcHMsIHByb2NlZWRWYWxpZGF0aW9uOiBwcm9jZWVkVmFsaWRhdGlvbiwgY2hlY2tWYWxpZGF0aW9uOiBjaGVja1ZhbGlkYXRpb24sIGNhbmNlbFZhbGlkYXRpb25Qb2xsaW5nOiBjYW5jZWxWYWxpZGF0aW9uUG9sbGluZywgY2hlY2tWYWxpZGF0aW9uU3RhdHVzOiBjaGVja1ZhbGlkYXRpb25TdGF0dXMsIHNob3dWYWxpZGF0aW9uUG9wdXA6IHNob3dWYWxpZGF0aW9uUG9wdXAsIGNsb3NlQnVsa3B1Ymxpc2g6IGNsb3NlQnVsa3B1Ymxpc2gsIGNsb3NlWGxzOiBjbG9zZVhscywgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBwcm9jZXNzaW5nQWN0aXZpdHlDb3VudDogcHJvY2Vzc2luZ0FjdGl2aXR5Q291bnQsIGNvbXBsZXRlQWN0aXZpdHlDb3VudDogY29tcGxldGVBY3Rpdml0eUNvdW50LCBoaWRlQnVsa3B1Ymxpc2hMb2FkZXI6IGhpZGVCdWxrcHVibGlzaExvYWRlciwgaGFuZGxlQWN0aXZpdHlQdWJsaXNoZWREYXRhOiBoYW5kbGVBY3Rpdml0eVB1Ymxpc2hlZERhdGEsIHZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzOiB2YWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcywgaGFuZGxlQmFja2dyb3VuZFByb2Nlc3NUb2dnbGVyOiBoYW5kbGVCYWNrZ3JvdW5kUHJvY2Vzc1RvZ2dsZXIsIGJsaW5rQmFja2dyb3VuZDogYmxpbmtCYWNrZ3JvdW5kLCBBY3Rpdml0eURvd25sb2FkOiBBY3Rpdml0eURvd25sb2FkX3Z1ZV8xLmRlZmF1bHQsIFhsc0xvYWRlcjogWGxzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoV2l0aFhsczogQnVsa3B1Ymxpc2hXaXRoWGxzX3Z1ZV8xLmRlZmF1bHQsIEFjdGl2aXR5VmFsaWRhdGlvbjogQWN0aXZpdHlWYWxpZGF0aW9uX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoTG9hZGVyQ2FyZDogQnVsa3B1Ymxpc2hMb2FkZXJDYXJkX3Z1ZV8xLmRlZmF1bHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogJ1BsZWFzZSBXYWl0JyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB1bnB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdE1lc3NhZ2UnKTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gJ0RlbGV0aW5nJztcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgZGVsZXRlRW5kUG9pbnQgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoZGVsZXRlRW5kUG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMaW5rQnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlZGl0JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzaWduOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnaWNvblRleHQnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGVzaWduID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRlc2lnbjtcbiAgICAgICAgdmFyIHN0eWxlVHlwZSA9IGRlc2lnbi52YWx1ZTtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSAnJztcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JnVGV4dCc6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciBiZy1uLTEwIHAtMSB0ZXh0LXRpbnkgZm9udC1ib2xkIHVwcGVyY2FzZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIHVwcGVyY2FzZSB0ZXh0LXRpbnknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNsYXNzZXM6IGNsYXNzZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBsaW5rZWRUb0lhdGk6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3RhdHVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgY29yZUNvbXBsZXRlZDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcHVibGlzaDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgZGVwcmVjYXRpb25TdGF0dXNNYXA6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwYTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIGxpbmtlZFRvSWF0aSA9IF9iLmxpbmtlZFRvSWF0aSwgc3RhdHVzID0gX2Iuc3RhdHVzLCBjb3JlQ29tcGxldGVkID0gX2IuY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZCA9IF9iLmFjdGl2aXR5SWQ7XG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxvYWRlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMyB8fFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID09PSAyIHx8XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIHZhciB2YWxpZGF0aW9uU3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgLy9hY3Rpdml0eSBpZFxuICAgICAgICB2YXIgaWQgPSBhY3Rpdml0eUlkLnZhbHVlO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfY1swXSwgcHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgcHVibGlzaFN0ZXAgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIGNvcmVFbGVtZW50U3RhdHVzID0gY29yZUNvbXBsZXRlZC52YWx1ZTtcbiAgICAgICAgdmFyIGhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlID0gY2hlY2tJZkhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGNoZWNrSWZIYXNEZXByZWNhdGVkVmFsdWVJblVzZSgpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUNoZWNrKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1fMSA9IGl0ZW07IF9pIDwgaXRlbV8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBpdGVtXzFbX2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZUNoZWNrKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmVDaGVjayhpdGVtW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWN1cnNpdmVDaGVjayhwcm9wcy5kZXByZWNhdGlvblN0YXR1c01hcCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgLy8gcmVzZXQgc3RlcCB0byB6ZXJvIGFmdGVyIGNsb3NpbmcgbW9kYWxcbiAgICAgICAgdmFyIHJlc2V0UHVibGlzaFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gJycsIGRlc2NyaXB0aW9uID0gJycsIGljb24gPSAndGljayc7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKGNvcmVFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSAnQ29yZSBFbGVtZW50cyBDb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAnQ29uZ3JhdHVsYXRpb25zISBBbGwgdGhlIGNvcmUgZWxlbWVudHMgYXJlIGNvbXBsZXRlLiBDb250aW51ZSB0byBWYWxpZGF0ZSB0aGlzIGFjdGl2aXR5Lic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZSA9ICdDb3JlIEVsZW1lbnRzIG5vdCBjb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAnPHA+VGhlcmUgaXMgbWlzc2luZyBkYXRhIGluIHNvbWUgb2YgdGhlIGNvcmUgZWxlbWVudHMuIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgY29tcGxldGUgdGhlc2UgZGF0YSBmaWVsZHMgdG8gaGVscCBlbnN1cmUgeW91ciBkYXRhIGlzIHVzZWZ1bC48L3A+PHA+RG8geW91IHdhbnQgdG8gY29udGludWUgYW55d2F5IGFuZCBydW4gY2hlY2tzIG9uICh2YWxpZGF0ZSkgdGhpcyBkYXRhLjwvcD4nO1xuICAgICAgICAgICAgICAgIGljb24gPSAnd2FybmluZy1maWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAocHVibGlzaFN0ZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBjb3JlRWxlbWVudFN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy9zZWNvbmQgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gXCJBY3Rpdml0eSB3aWxsIGJlIHZhbGlkYXRlZCBiZWZvcmUgcHVibGlzaGluZ1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIlRoaXMgYWN0aXZpdHkgd2lsbCBiZSBmaXJzdCB2YWxpZGF0ZWQgYmVmb3JlIHB1Ymxpc2hpbmcgdGhlIGFjdGl2aXR5IHRvIHRoZSBJQVRJIFJlZ2lzdHJ5LiBcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gXCJJQVRJIFZhbGlkYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD5Db25ncmF0dWxhdGlvbnMhIE5vIGVycm9ycyB3ZXJlIGZvdW5kLiBQdWJsaXNoIHlvdXIgZGF0YSBub3cuPC9wPjxwPlRoaXMgZGF0YSB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgSUFUSSBEYXRhc3RvcmUgYW5kIG90aGVyIGRhdGEgcG9ydGFscy90b29scy9zb2Z0d2FyZSB0aGF0IHVzZSBJQVRJIGRhdGEuPC9wPlwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwidGlja1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vY2FzZSAzIGlzIGZvciB2YWxpZGF0aW9uIHdpdGggY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBcIklBVEkgVmFsaWRhdGlvbiBJc3N1ZVwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIjxwPjxiPlwiLmNvbmNhdChlcnIuY3JpdGljYWxOdW1iZXIsIFwiIGNyaXRpY2FsIGVycm9yczwvYj4sIDxiPlwiKS5jb25jYXQoZXJyLmVycm9yTnVtYmVyLCBcIiBlcnJvcnM8L2I+IGFuZCA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiB3YXJuaW5nczwvYj4gd2VyZSBmb3VuZC4gVmlldyBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBlcnJvcnMvd2FybmluZ3MgYXQgdGhlIHRvcCBvZiB0aGUgYWN0aXZpdHkgcGFnZS48L3A+PHA+QXMgeW91ciBkYXRhIGhhcyBhdCBsZWFzdCBvbmUgY3JpdGljYWwgZXJyb3IsIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGUgSUFUSSBEYXRhc3RvcmUgYW5kIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIG90aGVyIGRhdGEgcG9ydGFscy90b29scy9zb2Z0d2FyZSB0aGF0IHVzZSBJQVRJIGRhdGEuPC9wPjxwPldlIGhpZ2hseSByZWNvbW1lbmQgeW91IGZpeCB0aGVzZSBpc3N1ZShzKSBiZWZvcmUgcHVibGlzaGluZyB5b3VyIGFjdGl2aXR5IHRvIGltcHJvdmUgdGhlIHF1YWxpdHkgYW5kIHVzZWZ1bG5lc3Mgb2YgeW91ciBkYXRhLjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBcIklBVEkgVmFsaWRhdGlvbiBJc3N1ZVwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIjxwPjxiPlwiLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIGVycm9yczwvYj4gYW5kIDxiPlwiKS5jb25jYXQoZXJyLndhcm5pbmdOdW1iZXIsIFwiIHdhcm5pbmdzPC9iPiB3ZXJlIGZvdW5kLiBWaWV3IGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIGVycm9ycy93YXJuaW5ncyBhdCB0aGUgdG9wIG9mIHRoZSBhY3Rpdml0eSBwYWdlLjwvcD48cD5XZSBoaWdobHkgcmVjb21tZW5kIHlvdSBmaXggdGhlc2UgaXNzdWUocykgYmVmb3JlIHB1Ymxpc2hpbmcgeW91ciBhY3Rpdml0eSB0byBpbXByb3ZlIHRoZSBxdWFsaXR5IGFuZCB1c2VmdWxuZXNzIG9mIHlvdXIgZGF0YS48L3A+XCIpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwid2FybmluZy1maWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIC8vIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9uXG4gICAgICAgIC8vIGNvbnN0IHN0ZXBQbHVzT25lID0gKCkgPT4ge1xuICAgICAgICAvLyAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA+PSAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAvLyAgICAgcHVibGlzaFN0ZXAudmFsdWUrKztcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH07XG4gICAgICAgIC8vIGNvbnN0IHN0ZXBNaW51c09uZSA9ICgpID0+IHtcbiAgICAgICAgLy8gICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPiAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDw9IDQpIHtcbiAgICAgICAgLy8gICAgIHB1Ymxpc2hTdGVwLnZhbHVlLS07XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9O1xuICAgICAgICAvLyByZWFjdGl2ZSB2YXJpYWJsZSBmb3IgZXJyb3JzIG51bWJlclxuICAgICAgICB2YXIgZXJyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjcml0aWNhbE51bWJlcjogMCxcbiAgICAgICAgICAgIGVycm9yTnVtYmVyOiAwLFxuICAgICAgICAgICAgd2FybmluZ051bWJlcjogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdG9wQnVsa3B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC1idWxrLXB1Ymxpc2gnKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZGF0b3JTdWNjZXNzLCB2YWxpZGF0aW9uUmVzcG9uc2UsIHB1Ymxpc2hSZXNwb25zZSwgcmVzcG9uc2UsIGVycm9yXzE7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2MubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBwcm9wcy5wYSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfYiA9IHByb3BzLnBhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF9jLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2MudHJ5cy5wdXNoKFsxLCA0LCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvclN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstdmFsaWRhdGlvblwiKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25SZXNwb25zZSA9IF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvclN1Y2Nlc3MgPSB2YWxpZGF0aW9uUmVzcG9uc2UuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0b3JTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1idWxrLXB1Ymxpc2hcIildO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoUmVzcG9uc2UgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHB1Ymxpc2hSZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wQnVsa3B1Ymxpc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMgPSBbaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmlzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3tcInB1Ymxpc2hpbmdBY3Rpdml0aWVzXCI6e319Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaW5fcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZDonLCBlcnJvcl8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciByZXNldFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyksIHsgcmVzcG9uc2U6IG51bGwsIGhhc0ZhaWxlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSwgYWN0aXZpdGllczogbnVsbCB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcHVibGlzaC1yZXB1Ymxpc2hcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBsaW5rZWRUb0lhdGkudmFsdWUsXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidG5UZXh0ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnUmVwdWJsaXNoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmXG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdkcmFmdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1B1Ymxpc2gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0YXJ0TmV3UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uU3RvcmUuc3RhdGUuc3RhcnROZXdQdWJsaXNoaW5nID0ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogIXZhbGlkYXRpb25TdG9yZS5zdGF0ZS5zdGFydE5ld1B1Ymxpc2hpbmcuc3RhdGUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsOiBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwsIGxpbmtlZFRvSWF0aTogbGlua2VkVG9JYXRpLCBzdGF0dXM6IHN0YXR1cywgY29yZUNvbXBsZXRlZDogY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgc3RvcmU6IHN0b3JlLCB2YWxpZGF0aW9uU3RvcmU6IHZhbGlkYXRpb25TdG9yZSwgaWQ6IGlkLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgcHVibGlzaFN0ZXA6IHB1Ymxpc2hTdGVwLCBsb2FkZXI6IGxvYWRlciwgY29yZUVsZW1lbnRTdGF0dXM6IGNvcmVFbGVtZW50U3RhdHVzLCBoYXNEZXByZWNhdGVkVmFsdWVJblVzZTogaGFzRGVwcmVjYXRlZFZhbHVlSW5Vc2UsIGNoZWNrSWZIYXNEZXByZWNhdGVkVmFsdWVJblVzZTogY2hlY2tJZkhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCByZXNldFB1Ymxpc2hTdGVwOiByZXNldFB1Ymxpc2hTdGVwLCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgZXJyOiBlcnIsIHN0b3BCdWxrcHVibGlzaDogc3RvcEJ1bGtwdWJsaXNoLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHJlc2V0U3RhdHVzOiByZXNldFN0YXR1cywgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgc3RhcnROZXdQdWJsaXNoaW5nOiBzdGFydE5ld1B1Ymxpc2hpbmcsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VuUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmFjdGl2aXR5SWQ7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHVucHVibGlzaFZhbHVlID0gX2JbMF0sIHVucHVibGlzaFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvL0dsb2JhbCBTdGF0ZVxuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICAvL2FjdGl2aXR5IGlkXG4gICAgICAgIHZhciBpZCA9IGFjdGl2aXR5SWQudmFsdWU7XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6ICdQbGVhc2UgV2FpdCcsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gJ1VucHVibGlzaGluZyc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQucG9zdChcIi9hY3Rpdml0eS9cIi5jb25jYXQoaWQsIFwiL3VucHVibGlzaFwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB1bnB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgW10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG4vLyBwcm9wc1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RlbGV0ZUFjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbUlkOiB7IHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGl0ZW1UeXBlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgZGVsZXRlRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdyZXN1bHQnIHx8IHByb3BzLml0ZW1UeXBlID09PSAndHJhbnNhY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdpbmRpY2F0b3InKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdwZXJpb2QnKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL3Byb3BzXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JMaXN0cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdlcnJvcicgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgZXJyb3JUeXBlLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoKF9hID0gZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHR5cGUudmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICB9O1xuICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9ycy52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdHlwZTogdHlwZSwgZXJyb3JzOiBlcnJvcnMsIGVycm9yVHlwZTogZXJyb3JUeXBlLCBiZ0NvbG9yOiBiZ0NvbG9yLCBpY29uQ29sb3I6IGljb25Db2xvciwgdG9nZ2xlOiB0b2dnbGUsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlLCB1cGRhdGVFcnJvckNvdW50TWVzc2FnZTogdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0hhdmVOb3RBZGRlZFlldCcsXG4gICAgY29tcG9uZW50czogeyBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gcHVibGlzaC1yZXB1Ymxpc2hcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgcHVibGlzaFZhbHVlID0gX2JbMF0sIHB1Ymxpc2hUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHVucHVibGlzaFZhbHVlID0gX2NbMF0sIHVucHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBzdGF0ZSBmb3IgZmlyc3Qgc3RlcFxuICAgICAgICAvLyBkZXRlcm1pbmUgaWYgY29yZSBlbGVtZW50IGNvbXBsZXRlZCBvciBub3RcbiAgICAgICAgLy8gdHJ1ZSBmb3IgY29tcGxldGVkIGFuZCBmYWxzZSBmb3Igbm90IGNvbXBsZXRlZFxuICAgICAgICB2YXIgbWFuZGF0b3J5RWxlbWVudFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCdtYW5kYXRvcnlDb21wbGV0ZWQnKTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogbWFuZGF0b3J5RWxlbWVudFN0YXR1cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcnlFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gJ0NvcmUgRWxlbWVudHMgQ29tcGxldGUnO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICdDb25ncmF0dWxhdGlvbnMhIEFsbCB0aGUgY29yZSBlbGVtZW50cyBhcmUgY29tcGxldGUuIENvbnRpbnVlIHRvIHB1Ymxpc2ggdGhpcyBvcmdhbml6YXRpb24uJztcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd0aWNrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9ICdDb3JlIEVsZW1lbnRzIG5vdCBjb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgJzxwPlRoZXJlIGlzIG1pc3NpbmcgZGF0YSBpbiBzb21lIG9mIHRoZSBjb3JlIGVsZW1lbnRzLiBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGNvbXBsZXRlIHRoZXNlIGRhdGEgZmllbGRzIHRvIGhlbHAgZW5zdXJlIHlvdXIgZGF0YSBpcyB1c2VmdWwuPC9wPic7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSAnd2FybmluZy1maWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwdWJsaXNoU3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgcHVibGlzaCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjaGVja1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL29yZ2FuaXNhdGlvbi9jaGVja3MtZm9yLW9yZ2FuaXNhdGlvbi1wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSAnUHVibGlzaGluZyc7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gJ3B1Ymxpc2hlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdVbnB1Ymxpc2hpbmcnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvb3JnYW5pc2F0aW9uL3VucHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5pc19wdWJsaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgncHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdSZXB1Ymxpc2gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdQdWJsaXNoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLCBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLCB1bnB1Ymxpc2hWYWx1ZTogdW5wdWJsaXNoVmFsdWUsIHVucHVibGlzaFRvZ2dsZTogdW5wdWJsaXNoVG9nZ2xlLCBsb2FkZXI6IGxvYWRlciwgbWFuZGF0b3J5RWxlbWVudFN0YXR1czogbWFuZGF0b3J5RWxlbWVudFN0YXR1cywgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgcHVibGlzaFN0YXRlQ2hhbmdlOiBwdWJsaXNoU3RhdGVDaGFuZ2UsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHB1Ymxpc2hGdW5jdGlvbjogcHVibGlzaEZ1bmN0aW9uLCB1blB1Ymxpc2hGdW5jdGlvbjogdW5QdWJsaXNoRnVuY3Rpb24sIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsIGJ0blRleHQ6IGJ0blRleHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRzXG52YXIgQnJlYWRDcnVtYl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BhZ2VUaXRsZScsXG4gICAgY29tcG9uZW50czogeyBCcmVhZGNydW1iOiBCcmVhZENydW1iX3Z1ZV8xLmRlZmF1bHQgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBicmVhZGNydW1iRGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFja0xpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnb3ZlcmZsb3cteS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvdmVyZmxvdy15LWhpZGRlbicpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7fTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N0aWNreUVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JEYXRhOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgLy8gdG9nZ2xlIGlzc3Vlc1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZXJyb3JWYWx1ZSA9IF9iWzBdLCBlcnJvclRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdHlJZCcpO1xuICAgICAgICB2YXIgaXNzdWVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGxpc3Qgb2YgZXJyb3JzXG4gICAgICAgICAqKi9cbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5lcnJvckRhdGE7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvclR5cGVzID0gWydlcnJvcicsICd3YXJuaW5nJ107XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChlcnJvckRhdGEudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3ZhbGlkYXRvcic7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3VwbG9hZCc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGVtcERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjcml0aWNhbDogW10sXG4gICAgICAgICAgICB3YXJuaW5nczogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlVGVtcE1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JEYXRhUHJvcHMgPSBlcnJvckRhdGEudmFsdWU7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIHRlbXBEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGVtcERhdGFbZGF0YV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgZXJyb3JEYXRhUHJvcHNfMSA9IGVycm9yRGF0YVByb3BzOyBfaSA8IGVycm9yRGF0YVByb3BzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlcnJvckRhdGFQcm9wc18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgc2V2ZXJpdHkgPSBkYXRhLnNldmVyaXR5O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuY3JpdGljYWwucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5lcnJvcnMucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLndhcm5pbmdzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvcmxlbmd0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gaW1wb3J0RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gaW1wb3J0RXJyb3JzW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGltcG9ydEVycm9yc1t0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yRGF0YS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlVGVtcE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWxldGVFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC9lcnJvcnMvXCIuY29uY2F0KGFjdGl2aXR5SWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZW1vdmVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZXJyb3JWYWx1ZTogZXJyb3JWYWx1ZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCBpbXBvcnRFcnJvcnM6IGltcG9ydEVycm9ycywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBpbXBvcnRFcnJvclR5cGVzOiBpbXBvcnRFcnJvclR5cGVzLCB0ZW1wRGF0YTogdGVtcERhdGEsIHVwZGF0ZVRlbXBNZXNzYWdlOiB1cGRhdGVUZW1wTWVzc2FnZSwgaW1wb3J0RXJyb3JsZW5ndGg6IGltcG9ydEVycm9ybGVuZ3RoLCBkZWxldGVFcnJvcnM6IGRlbGV0ZUVycm9ycywgRXJyb3JMaXN0czogRXJyb3JMaXN0c192dWVfMS5kZWZhdWx0LCBVcGxvYWRlZEVycm9yczogVXBsb2FkZWRFcnJvcnNfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VwbG9hZGVkRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChwcm9wcy5pbmRleCA9PT0gY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLml0ZW1bdHlwZV0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWNvbnRhaW5lcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGFjdGl2ZTogYWN0aXZlLCBwcm9wczogcHJvcHMsIHRvZ2dsZTogdG9nZ2xlLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRWxlbWVudFN0YXR1cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvbG9yID0gZGF0YS52YWx1ZSA/ICd0ZXh0LXNwcmluZy01MCcgOiAndGV4dC1jcmltc29uLTUwJywgdGV4dCA9IGRhdGEudmFsdWUgPyAnY29tcGxldGVkJyA6ICdub3QgY29tcGxldGVkJztcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBkYXRhOiBkYXRhLCBjb2xvcjogY29sb3IsIHRleHQ6IHRleHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ByZXZpb3VzbHlQdWJsaXNoZWQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnUHJldmlvdXNseSBQdWJsaXNoZWQgb24gSUFUSScgfSxcbiAgICAgICAgaWNvbjogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdhcHByb3ZlZC1jbG91ZCcgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7fTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLyoqXG4gKiBQcm9wc1xuICovXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlEZWZhdWx0VmFsdWUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBodW1hbml0YXJpYW46IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFjdGl2ZSB2YXJpYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIH0pLCBkZWZhdWx0RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogW10sXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6IFtdLFxuICAgICAgICAgICAgaGllcmFyY2h5OiBbXSxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JSZXNldCA9IGRlZmF1bHRFcnJvcnMudmFsdWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbiBNb3VudGVkXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSwgZGVmYXVsdERhdGE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzL2RhdGFcIikpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMudmFsdWUgPSBkZWZhdWx0RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVmXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyksIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1Ym1pdCBmb3JtXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0RXJyb3JzLnZhbHVlID0gZXJyb3JSZXNldDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wdXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzXCIpLCBkZWZhdWx0VmFsdWVzLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVycm9ycy52YWx1ZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0RXJyb3JzLnZhbHVlKSwgKF9hID0gZXJyb3IucmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSAoX2IgPSBlcnJvci5yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGRlZmF1bHRWYWx1ZXM6IGRlZmF1bHRWYWx1ZXMsIGRlZmF1bHRFcnJvcnM6IGRlZmF1bHRFcnJvcnMsIGVycm9yUmVzZXQ6IGVycm9yUmVzZXQsIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlXzIgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbnZhciBTdGlja3lFcnJvcnNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBSZWZyZXNoVG9hc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlXCIpKTtcbnZhciBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCIpKTtcbi8vIEFjdGl2aXR5IENvbXBvbmVudHNcbnZhciBBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIikpO1xudmFyIEFjdGl2aXR5RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZVwiKSk7XG52YXIgUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFbGVtZW50czogQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEFjdGl2aXR5RWxlbWVudDogQWN0aXZpdHlFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJlc3VsdDogSW5kZXhfMS5SZXN1bHQsXG4gICAgICAgIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JzOiBTdGlja3lFcnJvcnNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFhsc1VwbG9hZEluZGljYXRvcjogWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUmVmcmVzaFRvYXN0TWVzc2FnZTogUmVmcmVzaFRvYXN0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFB1Ymxpc2hTZWxlY3RlZDogUHVibGlzaFNlbGVjdGVkX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb3JlQ29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlhdGlWYWxpZGF0b3JSZXNwb25zZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltcG9ydEFjdGl2aXR5RXJyb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXByZWNhdGlvblN0YXR1c01hcDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2VUeXBlOiB0cnVlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2U6ICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzIudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2MgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHR5cGVzID0gX2MudHlwZXMsIGNvcmVDb21wbGV0ZWQgPSBfYy5jb3JlQ29tcGxldGVkO1xuICAgICAgICB2YXIgcmVtb3ZlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JlbW92ZWQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIGluZGV4U3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvd1NpZGViYXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgbW9kYWwgcG9wdXAgY29tcGxldGVkXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2QgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfZFswXSwgZGVsZXRlVG9nZ2xlID0gX2RbMV07XG4gICAgICAgIHZhciBfZSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkb3dubG9hZFZhbHVlID0gX2VbMF0sIGRvd25sb2FkVG9nZ2xlID0gX2VbMV07XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPSAoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICdSZW1vdmVkIHN1Y2Nlc3NmdWxseSc7XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgdmFyIF9hOyByZXR1cm4gKF9hID0gaW5kZXhTdG9yZSA9PT0gbnVsbCB8fCBpbmRleFN0b3JlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbmRleFN0b3JlLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBidWxrUHVibGlzaFN0YXR1cygpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPSAoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQsIGNoZWNrU3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHBhLnZhbHVlID0geyBwdWJsaXNoaW5nQWN0aXZpdGllczoge30gfTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgY2hlY2tTdGF0dXMgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F2aW5nIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIHRoZSBkYXRhJ3MgZm9yIHNjcm9sbCBmdW5jdGlvblxuICAgICAgICAgKlxuICAgICAgICAgKiB0aGlzIGRhdGEgaXMgY3JlYXRlZCB1c2luZyBwcm9wcy5lbGVtZW50X2dyb3VwIGFuZCBwcm9wcy5hY3Rpdml0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIF9mID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBncm91cHMgPSBfZi5ncm91cHMsIGFjdGl2aXR5ID0gX2YuYWN0aXZpdHksIGVsZW1lbnRzID0gX2YuZWxlbWVudHMsIHN0YXR1cyA9IF9mLnN0YXR1cywgdHJhbnNhY3Rpb25zID0gX2YudHJhbnNhY3Rpb25zLCBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZSwgYWN0aXZpdHlQcm9wcyA9IGFjdGl2aXR5LnZhbHVlLCBhY3Rpdml0aWVzID0gZ3JvdXBzLnZhbHVlLCBlbGVtZW50UHJvcHMgPSBlbGVtZW50cy52YWx1ZSwgc3RhdHVzUHJvcHMgPSBzdGF0dXMudmFsdWUsIHRyYW5zYWN0aW9uUHJvcHMgPSB0cmFuc2FjdGlvbnMudmFsdWU7XG4gICAgICAgIHZhciByZXN1bHRzID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLnJlc3VsdHM7XG4gICAgICAgIGFjdGl2aXR5UHJvcHMucmVzdWx0ID0gcmVzdWx0cy52YWx1ZTtcbiAgICAgICAgYWN0aXZpdHlQcm9wcy50cmFuc2FjdGlvbnMgPSB0cmFuc2FjdGlvblByb3BzO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXSkubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2aXR5UHJvcHNba10gPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trXSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba10gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba10pLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWydjb250ZW50J10gPSBhY3Rpdml0eVByb3BzW2tdO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2hvdmVyX3RleHQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBlbGVtZW50UHJvcHNba11bJ2hvdmVyX3RleHQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnd2FybmluZ19pbmZvX3RleHQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSBlbGVtZW50UHJvcHNba11bJ3dhcm5pbmdfaW5mb190ZXh0J10pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhY3Rpdml0aWVzW2tleV1ba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgYWN0aXZpdGllc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2VuZXJhdGluZyBhdmFpbGFibGUgY2F0ZWdvcmllcyBvZiBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhncm91cGVkRGF0YSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWN0aXZpdGllcywga2V5KSkge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2VuYWJsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZGlzYWJsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdyb3VwaW5nIGFsbCBlbGVtZW50cyBhbmQgdGhlaXJzIGNvbXBsZXRlZCBzdGF0dXNcbiAgICAgICAgICpcbiAgICAgICAgICogY29tYmluaW5nIHByb3BzLmVsZW1lbnRzIGFuZCBwcm9wcy5zdGF0dXNcbiAgICAgICAgICpcbiAgICAgICAgICogQHJldHVybnMgb2JqZWN0XG4gICAgICAgICAqL1xuICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50UHJvcHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2NvbXBsZXRlZCddID0gKF9hID0gc3RhdHVzUHJvcHNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2U7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnbm90X2NvbXBsZXRlZCddID0gISgoX2IgPSBzdGF0dXNQcm9wc1trZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZSk7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnaGFzX2RhdGEnXSA9IDA7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGFjdGl2aXR5UHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2aXR5UHJvcHNba2V5XSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tleV0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tleV0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba2V5XSkubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trZXldKS5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tleV0udG9TdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2hhc19kYXRhJ10gPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbmRpbmcgY3VycmVudCBsYW5ndWFnZSAtIGFjdGl2aXR5IHRpdGxlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgcGFnZVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlQcm9wcy50aXRsZSwgKF9iID0gYWN0aXZpdHlQcm9wcy5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlZmF1bHRfbGFuZ3VhZ2UpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXRUaXRsZSh0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRpdGxlLnJlcGxhY2UoL18vZ2ksICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBhY3Rpdml0eVByb3BzLmxpbmtlZF90b19pYXRpLFxuICAgICAgICAgICAgc3RhdHVzOiBhY3Rpdml0eVByb3BzLnN0YXR1cyxcbiAgICAgICAgICAgIGhhc19ldmVyX2JlZW5fcHVibGlzaGVkOiBhY3Rpdml0eVByb3BzLmhhc19ldmVyX2JlZW5fcHVibGlzaGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVzXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcy52YWx1ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnY29yZUNvbXBsZXRlZCcsIGNvcmVDb21wbGV0ZWQudmFsdWUpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0TWVzc2FnZScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3REYXRhJywgdG9hc3REYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InLCBwcm9wcy5pbXBvcnRBY3Rpdml0eUVycm9yKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdhY3Rpdml0eUlkJywgcHJvcHMuYWN0aXZpdHkuaWQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2VsZW1lbnRzJywgcHJvcHMuZWxlbWVudHMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2FjdGl2aXRpZXMnLCBwdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncmVmcmVzaFRvYXN0TXNnJywgcmVmcmVzaFRvYXN0TXNnKTtcbiAgICAgICAgaW5kZXhTdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW2FjdGl2aXR5LnZhbHVlLmlkXSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAgR2xvYmFsIFN0YXRlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgaWF0aVZhbGlkYXRvclJlc3BvbnNlID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmlhdGlWYWxpZGF0b3JSZXNwb25zZTtcbiAgICAgICAgdmFyIHZhbGlkYXRpb25SZXN1bHQgPSBpYXRpVmFsaWRhdG9yUmVzcG9uc2UudmFsdWU7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgdmFsaWRhdGlvblJlc3VsdC5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAncHVibGlzaGVkJykpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgYWN0aXZpdGllczogYWN0aXZpdGllcyxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIFhsc1VwbG9hZEluZGljYXRvcjogWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGRvd25sb2FkVmFsdWU6IGRvd25sb2FkVmFsdWUsXG4gICAgICAgICAgICBkb3dubG9hZFRvZ2dsZTogZG93bmxvYWRUb2dnbGUsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wczogZWxlbWVudFByb3BzLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybWF0VGl0bGU6IGZvcm1hdFRpdGxlLFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBwYWdlVGl0bGUsXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBhY3Rpdml0eVByb3BzOiBhY3Rpdml0eVByb3BzLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICB0b2dnbGVTaWRlYmFyOiB0b2dnbGVTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBzY3JlZW5XaWR0aDogc2NyZWVuV2lkdGgsXG4gICAgICAgICAgICByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZyxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcyxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGluZGV4U3RvcmU6IGluZGV4U3RvcmUsXG4gICAgICAgICAgICBwYTogcGEsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IG9ubHlEZXByZWNhdGVkU3RhdHVzTWFwOiB1dGlsc18xLm9ubHlEZXByZWNhdGVkU3RhdHVzTWFwIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZVwiKSk7XG52YXIgT25Cb2FyZGluZ0luZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZVwiKSk7XG52YXIgRW1wdHlBY3Rpdml0eV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiKSk7XG52YXIgVGFibGVMYXlvdXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBFcnJvck1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xudmFyIGFjdGl2aXR5U3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbXB0eUFjdGl2aXR5OiBFbXB0eUFjdGl2aXR5X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUYWJsZUxheW91dDogVGFibGVMYXlvdXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT25Cb2FyZGluZ0luZGV4OiBPbkJvYXJkaW5nSW5kZXhfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb25PbmJvYXJkaW5nOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzRmlyc3RUaW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYW1lID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBkb3dubG9hZENvbXBsZXRlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGNsb3NlTW9kZWwgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHhsc0RhdGEgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZyA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXJ0QnVsa1B1Ymxpc2ggPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWRNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgcHJvY2Vzc2luZyA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciB1cGxvYWRDb21wbGV0ZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGltcG9ydENvbXBsZXRlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsQ291bnQgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd1hsc1N0YXR1cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgdGFibGVMb2FkZXIgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQXBpVXJsID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB2YXIgY3VycmVudEZpbHRlckJ5ID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZW5kcG9pbnQgPSAnJztcbiAgICAgICAgdmFyIHNob3dFbXB0eVRlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgIHZhciBjdXJyZW50UGFnZSA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgdmFsaWRGaWx0ZXJCeSA9IFtcbiAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgJ3B1Ymxpc2hlZCcsXG4gICAgICAgICAgICAncmVhZHlfZm9yX3JlcHVibGlzaGluZycsXG4gICAgICAgICAgICAnZHJhZnQnLFxuICAgICAgICBdO1xuICAgICAgICB2YXIgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwID0gKDAsIHZ1ZV8xLnJlZikoe1xuICAgICAgICAgICAgYWxsOiAwLFxuICAgICAgICAgICAgcHVibGlzaGVkOiAwLFxuICAgICAgICAgICAgcmVhZHlfZm9yX3JlcHVibGlzaGluZzogMCxcbiAgICAgICAgICAgIGRyYWZ0OiAwLFxuICAgICAgICB9KTtcbiAgICAgICAgZmV0Y2hBY3Rpdml0aWVzQ291bnRCeVB1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMi51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiO1xuICAgICAgICAgICAgc2hvd0VtcHR5VGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vZm9yIHNlc3Npb24gbWVzc2FnZVxuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZm9yIHB1Ymxpc2ggYnV0dG9uXG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwb2xsaW5nRm9yWGxzU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1lc3NhZ2UpID09PSAnU3RhcnRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gKF9iID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvdGFsX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAoX2MgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHJvY2Vzc2VkX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gISgoX2QgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9lID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2YgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YubWVzc2FnZSkgPT09ICdQcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKF9oID0gKF9nID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5kYXRhKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guc3VjY2VzcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2sgPSAoX2ogPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLmRhdGEpID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5tZXNzYWdlKSA9PT0gJ0NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3N0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2gsIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllc107IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZS52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoKChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdGF0dXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5zdGF0dXMpID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9oID0gKF9nID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5zdGF0dXMpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JYbHNTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudC52YWx1ZSA9IHJlcy5kYXRhLmZpbGVfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEFwaVVybC52YWx1ZSA9IHJlcy5kYXRhLnVybDtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSAhIXJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnY29tcGxldGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhcmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrRG93bmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9IChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgY3VycmVudEZpbHRlckJ5LnZhbHVlID0gZ2V0Q3VycmVudEZpbHRlckJ5KCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dFbXB0eVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNob3dCdXR0b25zOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd09ySGlkZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gdm9pZCAwKSB7IGRhdGEgPSBBcnJheTsgfVxuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvcGFnZS8nICsgYWN0aXZlX3BhZ2UgKyBxdWVyeVN0cmluZykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2UudmFsdWUgPSBhY3RpdmVfcGFnZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGZvciByZWZyZXNoIHRvYXN0IG1lc3NhZ2VcbiAgICAgICAgLy8gbGV0IHJlZnJlc2hUb2FzdE1zZyA9IHJlZihmYWxzZSk7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2VUeXBlOiB0cnVlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2U6ICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZpbHRlckJ5UHVibGlzaFN0YXR1cyhzdGF0dXMpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICBpZiAoIXBhcmFtcy5oYXMoJ3EnKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3EnLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdmaWx0ZXJCeScsIHN0YXR1cyk7XG4gICAgICAgICAgICB2YXIgbmV3UXVlcnlTdHJpbmcgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCJcIi5jb25jYXQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBcIj9cIikuY29uY2F0KG5ld1F1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50RmlsdGVyQnkoKSB7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlckJ5ID0gdXJsUGFyYW1zLmdldCgnZmlsdGVyQnknKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyQnkgJiYgdmFsaWRGaWx0ZXJCeS5pbmNsdWRlcyhmaWx0ZXJCeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnYWxsJztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaEFjdGl2aXRpZXNDb3VudEJ5UHVibGlzaFN0YXR1cygpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoJy9hY3Rpdml0aWVzL2FjdGl2aXRpZXNfY291bnRfYnlfcHVibGlzaGVkX3N0YXR1cycpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGFsbFB1Ymxpc2hTdGF0dXNDb3VudE1hcC52YWx1ZS5hbGwgPSByZXNwb25zZS5kYXRhLmFsbDtcbiAgICAgICAgICAgICAgICBhbGxQdWJsaXNoU3RhdHVzQ291bnRNYXAudmFsdWUucHVibGlzaGVkID0gcmVzcG9uc2UuZGF0YS5wdWJsaXNoZWQ7XG4gICAgICAgICAgICAgICAgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwLnZhbHVlLnJlYWR5X2Zvcl9yZXB1Ymxpc2hpbmcgPVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLnJlYWR5X2Zvcl9yZXB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgICAgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwLnZhbHVlLmRyYWZ0ID0gcmVzcG9uc2UuZGF0YS5kcmFmdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3YXRjaFxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5hY3Rpdml0aWVzTGlzdCA9IGFjdGl2aXRpZXM7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZVxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdyZWZyZXNoVG9hc3RNc2cnLCByZWZyZXNoVG9hc3RNc2cpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd4bHNEb3dubG9hZFN0YXR1cycsIHhsc0Rvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZEFwaVVybCcsIGRvd25sb2FkQXBpVXJsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjbG9zZU1vZGVsJywgY2xvc2VNb2RlbCk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjb21wbGV0ZWQnLCB1cGxvYWRDb21wbGV0ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZGVmYXVsdExhbmd1YWdlJywgcHJvcHMuZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBzaG93T3JIaWRlOiBzaG93T3JIaWRlLFxuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyOiB0YWJsZUxvYWRlcixcbiAgICAgICAgICAgIHhsc0RhdGE6IHhsc0RhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSxcbiAgICAgICAgICAgIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLFxuICAgICAgICAgICAgeGxzRmFpbGVkOiB4bHNGYWlsZWQsXG4gICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLFxuICAgICAgICAgICAgaW1wb3J0Q29tcGxldGVkOiBpbXBvcnRDb21wbGV0ZWQsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsXG4gICAgICAgICAgICB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLFxuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLFxuICAgICAgICAgICAgYWN0aXZpdHlTdG9yZTogYWN0aXZpdHlTdG9yZSxcbiAgICAgICAgICAgIHBhOiBwYSxcbiAgICAgICAgICAgIGZpbHRlckJ5UHVibGlzaFN0YXR1czogZmlsdGVyQnlQdWJsaXNoU3RhdHVzLFxuICAgICAgICAgICAgY3VycmVudEZpbHRlckJ5OiBjdXJyZW50RmlsdGVyQnksXG4gICAgICAgICAgICBhbGxQdWJsaXNoU3RhdHVzQ291bnRNYXA6IGFsbFB1Ymxpc2hTdGF0dXNDb3VudE1hcCxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBtb2RhbFZhbHVlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2VNb2RhbCcsICd0b2FzdCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jb2RlbGlzdHMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFuZ3VhZ2VzLCByZXNwb25zZS5kYXRhLmxhbmd1YWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JnYW5pemF0aW9uLCByZXNwb25zZS5kYXRhLm9yZ2FuaXphdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdG9yZUFjdGl2aXR5KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2FjdGl2aXR5JywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlbWl0KCdjbG9zZU1vZGFsJyk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHJlc3BvbnNlLmRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubmFycmF0aXZlID0gZXJyb3JzLm5hcnJhdGl2ZSA/IGVycm9ycy5uYXJyYXRpdmVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubGFuZ3VhZ2UgPSBlcnJvcnMubGFuZ3VhZ2UgPyBlcnJvcnMubGFuZ3VhZ2VbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWN0aXZpdHlfaWRlbnRpZmllciA9IGVycm9ycy5hY3Rpdml0eV9pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJbMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVmYXVsdExhbmd1YWdlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ2RlZmF1bHRMYW5ndWFnZScpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGNsb3NlTW9kYWw6IGNsb3NlTW9kYWwsXG4gICAgICAgICAgICBzdG9yZUFjdGl2aXR5OiBzdG9yZUFjdGl2aXR5LFxuICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrUHVibGlzaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9idWxrUHVibGlzaE1vZGFsL0J1bGtQdWJsaXNoLnZ1ZVwiKSk7XG52YXIgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91c2VTaGFyZWRMb2NhbFN0b3JhZ2VcIik7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hTZWxlY3RlZCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVmVyaWZ5IGNvcmUgZWxlbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hhcmVkTWluaW1pemUgPSAoMCwgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEudXNlU2hhcmVkTWluaW1pemUpKCk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKCdQbGVhc2UgV2FpdCcpO1xuICAgICAgICB2YXIgY29yZUVsZW1lbnRMb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciBjYW5jZWxCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvY2FuY2VsLWJ1bGstcHVibGlzaCcpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNhbmNlbFZhbGlkYXRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2RlbGV0ZS12YWxpZGF0aW9uLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUucHVibGlzaEFsZXJ0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyksIHsgaWF0aVZhbGlkYXRvckxvYWRlcjogZmFsc2UsIHZhbGlkYXRpb25TdGF0czogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgY2FuY2VsQnVsa1B1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuc2hvd0J1bGtwdWJsaXNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZSA9IHsgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHt9IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdWxrUHVibGlzaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5jb21wbGV0ZWRTdGVwcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpLCB7IHJlc3BvbnNlOiBudWxsLCBoYXNGYWlsZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBhY3Rpdml0aWVzOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAvLyB0b2FzdCB2aXNpYmlsaXR5XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBkaXNwbGF5VG9hc3QgPSBmdW5jdGlvbiAobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIGJ1bGtQdWJsaXNoU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGJ1bGtQdWJsaXNoU3RhdHVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHZhbGlkYXRvclN1Y2Nlc3M7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstdmFsaWRhdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JTdWNjZXNzID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFeGlzdGluZ1Byb2Nlc3NNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstcHVibGlzaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnVsa1B1Ymxpc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCcsICdmYWxzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICd7XCJwdWJsaXNoaW5nQWN0aXZpdGllc1wiOnt9fScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUgPSB7IHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7fSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5Q29yZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVsa1B1Ymxpc2hTdGF0dXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pLCBwZXJtYWxpbmsgPSBcIi9hY3Rpdml0eS9cIjtcbiAgICAgICAgdmFyIGRlcHJlY2F0aW9uU3RhdHVzTWFwID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgdmVyaWZ5Q29yZUVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0aWVzL2NvcmUtZWxlbWVudHMtY29tcGxldGVkP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRlcHJlY2F0aW9uX3N0YXR1c19tYXAubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmluY29tcGxldGUubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmNvbXBsZXRlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWN0aXZpdGllcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmluY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0aW9uU3RhdHVzTWFwLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kZXByZWNhdGlvbl9zdGF0dXNfbWFwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvcmVFbGVtZW50TG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhbGlkYXRpbmcgQWN0aXZpdGllc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHZhbGlkYXRpb25FcnJvcnMgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzP29yZ2FuaXphdGlvbl9pZD1cIi5jb25jYXQoKF9iID0gKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm9yZ2FuaXphdGlvbl9pZCwgXCImJnV1aWQ9XCIpLmNvbmNhdCgoX2QgPSAoX2MgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quam9iX2JhdGNoX3V1aWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgJiYgKChfYiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZXMuZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMSwgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBkYXRhJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZSA9IHsgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHt9IH07XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCAne1wicHVibGlzaGluZ0FjdGl2aXRpZXNcIjp7fX0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhJywgZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RvcFZhbGlkYXRpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9kZWxldGUtdmFsaWRhdGlvbi1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXMnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgc3RhcnRWYWxpZGF0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMsIHJlcywgcmVzcG9uc2UsIGVycm9yXzE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDQsICwgNV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzdG9wVmFsaWRhdGluZygpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnLCBhY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgY2FuY2VsQnVsa1B1Ymxpc2goKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXRpZXMvdmFsaWRhdGUtYWN0aXZpdGllcz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycsIHJlc3BvbnNlLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMnLCByZXNwb25zZS5hY3Rpdml0aWVzLmpvaW4oJ3wnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnMudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdWYWxpZGF0aW9uIGVycm9yOicsIGVycm9yXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHZhbGlkYXRlQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmlhdGlWYWxpZGF0b3JMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHN0YXJ0VmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1bGsgcHVibGlzaGluZyBhY3Rpdml0aWVzXG4gICAgICAgICAqL1xuICAgICAgICAvLyBsZXQgc2VsZWN0ZWRBY3Rpdml0aWVzOiBSZWY8bnVtYmVyW10+ID0gcmVmKFtdKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzZWxlY3RlZEFjdGl2aXRpZXMnLCBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMpO1xuICAgICAgICAvLyBsb2NhbCBzdG9yYWdlIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ1N0YXJ0aW5nIHRvIHB1Ymxpc2gnO1xuICAgICAgICAgICAgaWYgKHBhLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICd7XCJwdWJsaXNoaW5nQWN0aXZpdGllc1wiOnt9fScpO1xuICAgICAgICAgICAgICAgIHBhLnZhbHVlID0geyBwdWJsaXNoaW5nQWN0aXZpdGllczoge30gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3BhLnZhbHVlIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0aWVzL3N0YXJ0LWJ1bGstcHVibGlzaD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoc3RvcmUuc3RhdGUudmFsaWRhdGluZ0FjdGl2aXRpZXMsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXMnLCAnJyk7XG4gICAgICAgICAgICAgICAgc3RhcnRQdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMnLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCAoKF9iID0gKF9hID0gcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5hY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfZCA9IChfYyA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuYWN0aXZpdGllcylcbiAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgc2hvd1ZhbGlkYXRpb25Qb3B1cCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0VmFsaWRhdGlvbiB8fCBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdGFydE5ld1B1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IFxuICAgICAgICAgICAgICAgICAgICAvLyBSdW4gYWxsIHRocmVlIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgd2FpdCBmb3IgYWxsIG9mIHRoZW0gdG8gY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbEJ1bGtQdWJsaXNoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnVsa1B1Ymxpc2hpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxWYWxpZGF0aW9uKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJ1biBhbGwgdGhyZWUgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCB3YWl0IGZvciBhbGwgb2YgdGhlbSB0byBjb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGVyZm9ybSB0aGUgb3RoZXIgdGFza3MgYWZ0ZXIgdGhlIHByZXZpb3VzIGZ1bmN0aW9ucyBjb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciAzIHNlY29uZHMgYmVmb3JlIHJ1bm5pbmcgY2hlY2tQdWJsaXNoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gc2V0VGltZW91dChyZXNvbHZlLCAxNTAwKTsgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciAzIHNlY29uZHMgYmVmb3JlIHJ1bm5pbmcgY2hlY2tQdWJsaXNoXG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGZpbmFsIGZ1bmN0aW9uIGFmdGVyIHRoZSBkZWxheVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgY2hlY2tQdWJsaXNoKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGZpbmFsIGZ1bmN0aW9uIGFmdGVyIHRoZSBkZWxheVxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHJlc2V0U3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5jb21wbGV0ZWRTdGVwcyA9IFtdO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpLCB7IGNvbXBsZXRlOiAwLCB0b3RhbDogMCwgZmFpbGVkOiAwIH0pIH0pO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyksIHsgcmVzcG9uc2U6IG51bGwsIGhhc0ZhaWxlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSwgYWN0aXZpdGllczogbnVsbCB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93VmFsaWRhdGlvblBvcHVwLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRDb3JlVmFsaWRhdGlvbjsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2ZXJpZnlDb3JlRWxlbWVudHMoKTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0TmV3UHVibGlzaGluZzsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RhcnROZXdQdWJsaXNoaW5nKCk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoc2hhcmVkTWluaW1pemUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5pc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkID0gc2hhcmVkTWluaW1pemUudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3BhU3RvcmFnZScsIHBhKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdidWxrUHVibGlzaFN0YXR1cycsIGJ1bGtQdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzdGFydFB1Ymxpc2gnLCBzdGFydFB1Ymxpc2gpO1xuICAgICAgICBleHBvc2UoeyBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBzaGFyZWRNaW5pbWl6ZTogc2hhcmVkTWluaW1pemUsIGJ1bGtQdWJsaXNoU3RhdHVzOiBidWxrUHVibGlzaFN0YXR1cywgaXNMb2FkaW5nOiBpc0xvYWRpbmcsIHN0YXJ0UHVibGlzaDogc3RhcnRQdWJsaXNoLCBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWw6IHNob3dFeGlzdGluZ1Byb2Nlc3NNb2RhbCwgcHVibGlzaGVkOiBwdWJsaXNoZWQsIGxvYWRlcjogbG9hZGVyLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCBjb3JlRWxlbWVudExvYWRlcjogY29yZUVsZW1lbnRMb2FkZXIsIGNhbmNlbEJ1bGtQdWJsaXNoOiBjYW5jZWxCdWxrUHVibGlzaCwgY2FuY2VsVmFsaWRhdGlvbjogY2FuY2VsVmFsaWRhdGlvbiwgY2FuY2VsQnVsa1B1Ymxpc2hpbmc6IGNhbmNlbEJ1bGtQdWJsaXNoaW5nLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgZGlzcGxheVRvYXN0OiBkaXNwbGF5VG9hc3QsIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXM6IGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMsIGNoZWNrUHVibGlzaDogY2hlY2tQdWJsaXNoLCBjb3JlQ29tcGxldGVkQWN0aXZpdGllczogY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMsIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMsIHBlcm1hbGluazogcGVybWFsaW5rLCBkZXByZWNhdGlvblN0YXR1c01hcDogZGVwcmVjYXRpb25TdGF0dXNNYXAsIHZlcmlmeUNvcmVFbGVtZW50czogdmVyaWZ5Q29yZUVsZW1lbnRzLCB2YWxpZGF0aW9uRXJyb3JzOiB2YWxpZGF0aW9uRXJyb3JzLCBzdG9wVmFsaWRhdGluZzogc3RvcFZhbGlkYXRpbmcsIHN0YXJ0VmFsaWRhdGlvbjogc3RhcnRWYWxpZGF0aW9uLCB2YWxpZGF0ZUFjdGl2aXRpZXM6IHZhbGlkYXRlQWN0aXZpdGllcywgcGE6IHBhLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBzaG93VmFsaWRhdGlvblBvcHVwOiBzaG93VmFsaWRhdGlvblBvcHVwLCBzdGFydE5ld1B1Ymxpc2hpbmc6IHN0YXJ0TmV3UHVibGlzaGluZywgcmVzZXRTdGF0dXM6IHJlc2V0U3RhdHVzLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBhZ2VMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBCdWxrUHVibGlzaGluZ01vZGFsOiBCdWxrUHVibGlzaF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVmcmVzaFRvYXN0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBtZXNzYWdlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdHlwZTogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgY2xhc3NOYW1lLnZhbHVlID0gcHJvcHMudHlwZVxuICAgICAgICAgICAgPyAnYmctbWludCBib3JkZXItc3ByaW5nLTEwJ1xuICAgICAgICAgICAgOiAnYmctY3JpbXNvbi0xMCBib3JkZXItY3JpbXNvbi0yMCc7XG4gICAgICAgIHZhciBjbGFzc05hbWUyID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBjbGFzc05hbWUyLnZhbHVlID0gcHJvcHMudHlwZVxuICAgICAgICAgICAgPyAndGV4dC1zcHJpbmctNTAgaG92ZXI6dGV4dC1zcHJpbmctNTAnXG4gICAgICAgICAgICA6ICd0ZXh0LWNyaW1zb24tNTAgaG92ZXI6dGV4dC1jcmltc29uLTUwJztcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgY2xhc3NOYW1lMjogY2xhc3NOYW1lMiB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFdpemFyZEluZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi93aXphcmRTdGVwcy9XaXphcmRJbmRleC52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBDaGVja2luZ0FjdGl2aXRpZXNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY2hlY2tpbmdBY3Rpdml0aWVzL0NoZWNraW5nQWN0aXZpdGllcy52dWVcIikpO1xudmFyIFJvbGxpbmdMb2FkZXJDb21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWVcIikpO1xudmFyIElhdGlWYWxpZGF0ZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZVwiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIFB1Ymxpc2hpbmdBY3Rpdml0eV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wdWJsaXNoaW5nQWN0aXZpdHkvUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZVwiKSk7XG52YXIgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91c2VTaGFyZWRMb2NhbFN0b3JhZ2VcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQnVsa1B1Ymxpc2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXByZWNhdGlvblN0YXR1c01hcDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWFsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAnJzsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY29yZUVsZW1lbnRMb2FkZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzaG93VmFsaWRhdGlvblBvcHVwOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ2NhbmNlbFZhbGlkYXRpb24nLFxuICAgICAgICAndmFsaWRhdGVBY3Rpdml0aWVzJyxcbiAgICAgICAgJ3N0YXJ0QnVsa1B1Ymxpc2gnLFxuICAgICAgICAnY2FuY2VsQnVsa1B1Ymxpc2hpbmcnLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hhcmVkTWluaW1pemUgPSAoMCwgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEudXNlU2hhcmVkTWluaW1pemUpKCk7XG4gICAgICAgIHZhciBuZXdTZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbmV3U2VsZWN0ZWRBY3Rpdml0aWVzJywgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgdmFyIHZhbGlkYXRlQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ3ZhbGlkYXRlQWN0aXZpdGllcycpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKCgoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuY29tcGxldGUgK1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmZhaWxlZCkgL1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLnRvdGFsKSAqXG4gICAgICAgICAgICAgICAgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcGVyY2VudGFnZVdpZHRoID09PSBudWxsIHx8IHBlcmNlbnRhZ2VXaWR0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGVyY2VudGFnZVdpZHRoLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWxpZGF0aW9uUGVyY2VudCcsICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAwKS50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMV07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBoYW5kbGVNaW5pbWl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNoYXJlZE1pbmltaXplLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNob3dQdWJsaXNoaW5nQWN0aXZpdHlNb2RhbCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChwcm9wcy5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKS5sZW5ndGggPiAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYW5jZWxBY3Rpdml0eVB1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzOnt9Jyk7XG4gICAgICAgICAgICBlbWl0KCdjYW5jZWxCdWxrUHVibGlzaGluZycpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2FuY2VsVmFsaWRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydENvcmVWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgZW1pdCgnY2FuY2VsVmFsaWRhdGlvbicpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXR5Q291bnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICAgICAgdmFyIGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzO1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKF9hID0gYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gbnVsbCB8fCBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hpbmdTdGF0dXMgPSAoX2MgPSAoX2IgPSBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSBudWxsIHx8IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlc3BvbnNlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzO1xuICAgICAgICAgICAgdmFyIHZhbGlkYXRpb25TdGF0c1RvdGFsID0gKChfZCA9IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IG51bGwgfHwgYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50b3RhbCkgfHwgMDtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoaW5nU3RhdHVzID09PSAnY29tcGxldGVkJyB8fCBwdWJsaXNoaW5nU3RhdHVzID09PSAncHJvY2Vzc2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHB1Ymxpc2hpbmdBY3Rpdml0aWVzKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25TdGF0c1RvdGFsID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHNUb3RhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjb3JlQ29tcGxldGVkQ291bnQgPSAoKF9lID0gcHJvcHMuY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5sZW5ndGgpIHx8IDA7XG4gICAgICAgICAgICB2YXIgY29yZUluQ29tcGxldGVkQ291bnQgPSAoKF9mID0gcHJvcHMuY29yZUluQ29tcGxldGVkQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLmxlbmd0aCkgfHwgMDtcbiAgICAgICAgICAgIHJldHVybiBjb3JlQ29tcGxldGVkQ291bnQgKyBjb3JlSW5Db21wbGV0ZWRDb3VudDtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHNoYXJlZE1pbmltaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IHNoYXJlZE1pbmltaXplLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIHNoYXJlZE1pbmltaXplOiBzaGFyZWRNaW5pbWl6ZSwgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzOiBuZXdTZWxlY3RlZEFjdGl2aXRpZXMsIGVtaXQ6IGVtaXQsIHZhbGlkYXRlQWN0aXZpdGllczogdmFsaWRhdGVBY3Rpdml0aWVzLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgc3RhcnRCdWxrUHVibGlzaDogc3RhcnRCdWxrUHVibGlzaCwgaGFuZGxlTWluaW1pemU6IGhhbmRsZU1pbmltaXplLCBzaG93UHVibGlzaGluZ0FjdGl2aXR5TW9kYWw6IHNob3dQdWJsaXNoaW5nQWN0aXZpdHlNb2RhbCwgY2FuY2VsQWN0aXZpdHlQdWJsaXNoaW5nOiBjYW5jZWxBY3Rpdml0eVB1Ymxpc2hpbmcsIGNhbmNlbFZhbGlkYXRpb246IGNhbmNlbFZhbGlkYXRpb24sIHB1Ymxpc2hpbmdBY3Rpdml0eUNvdW50OiBwdWJsaXNoaW5nQWN0aXZpdHlDb3VudCwgV2l6YXJkSW5kZXg6IFdpemFyZEluZGV4X3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIENoZWNraW5nQWN0aXZpdGllczogQ2hlY2tpbmdBY3Rpdml0aWVzX3Z1ZV8xLmRlZmF1bHQsIFJvbGxpbmdMb2FkZXI6IFJvbGxpbmdMb2FkZXJDb21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSWF0aVZhbGlkYXRlOiBJYXRpVmFsaWRhdGVfdnVlXzEuZGVmYXVsdCwgUHVibGlzaGluZ0FjdGl2aXR5OiBQdWJsaXNoaW5nQWN0aXZpdHlfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgVGFiSW5kZXhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL3RhYnMvVGFiSW5kZXgudnVlXCIpKTtcbnZhciBhY3Rpdml0aWVzXzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdDaGVja2luZ0FjdGl2aXRpZXMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXByZWNhdGlvblN0YXR1c01hcDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWFsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAnJzsgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBhY3Rpdml0aWVzXzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcHJvcHM6IHByb3BzLCBUYWJJbmRleDogVGFiSW5kZXhfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFiSW5kZXhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL3RhYnMvVGFiSW5kZXgudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJYXRpVmFsaWRhdGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHZhbGlkYXRpb25TdGF0czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXRpZXNMaXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtYWxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJjZW50YWdlV2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBuZXdTZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnbmV3U2VsZWN0ZWRBY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciBhY3RpdmVUYWIgPSAoMCwgdnVlXzIucmVmKSgxKTtcbiAgICAgICAgdmFyIGhhbmRsZUFjdGl2ZVRhYiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgYWN0aXZlVGFiLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIC8vc2V0dGluZyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZSB0byB2dWV4ICx0byBwcmVzZXJ2ZSBzdGF0ZSB3aGVuIHdpbmRvdyBpcyByZWxvYWRlZFxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL3RvIGNoZWNrIGlmIHZhbGlkYXRpb24gbmVlZCB0byBiZSBzaG93IG9mIG5vdCB3aGVuIG5hdmlnYXRlZCBvciByZWZyZXNoZWRcbiAgICAgICAgICAgIHZhciBzaG93UG9wdXAgPSBCb29sZWFuKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKSk7XG4gICAgICAgICAgICBpZiAoc2hvd1BvcHVwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhhc0Vycm9yID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5zaG93VmFsaWRhdGlvbkVycm9yO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNlbGVjdEFsbEFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSA9IE9iamVjdC5rZXlzKHZhbGlkQWN0aXZpdGllcy52YWx1ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHBhcnNlSW50KGtleSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3U2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCA9PVxuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmNvbXBsZXRlICtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuZmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgdmFsdWUuam9pbignLCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgdmFsaWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BzLmFjdGl2aXRpZXNMaXN0KS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdGF0dXMgIT09ICdmYWlsZWQnO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGluVmFsaWRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocHJvcHMuYWN0aXZpdGllc0xpc3QpLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnN0YXR1cyA9PSAnZmFpbGVkJztcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0aWVzTGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAhaXRlbS5pc192YWxpZDsgfSlcbiAgICAgICAgICAgICAgICAubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BzLmFjdGl2aXRpZXNMaXN0KS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdGF0dXMgIT09ICdmYWlsZWQnO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBpZHMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAgICBuZXdTZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgPSBpZHMubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHBhcnNlSW50KGtleSk7IH0pO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBkZWVwOiB0cnVlLFxuICAgICAgICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIG5ld1NlbGVjdGVkQWN0aXZpdGllczogbmV3U2VsZWN0ZWRBY3Rpdml0aWVzLCBhY3RpdmVUYWI6IGFjdGl2ZVRhYiwgaGFuZGxlQWN0aXZlVGFiOiBoYW5kbGVBY3RpdmVUYWIsIGhhc0Vycm9yOiBoYXNFcnJvciwgc2VsZWN0QWxsQWN0aXZpdGllczogc2VsZWN0QWxsQWN0aXZpdGllcywgdmFsaWRBY3Rpdml0aWVzOiB2YWxpZEFjdGl2aXRpZXMsIGluVmFsaWRlZEFjdGl2aXRpZXM6IGluVmFsaWRlZEFjdGl2aXRpZXMsIHRvdGFsVmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXM6IHRvdGFsVmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXMsIFJvbGxpbmdMb2FkZXI6IFJvbGxpbmdMb2FkZXJDb21wb25lbnRfdnVlXzEuZGVmYXVsdCwgVGFiSW5kZXg6IFRhYkluZGV4X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFJvbGxpbmdMb2FkZXJDb21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaGluZ0FjdGl2aXR5JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHJldHJ5UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoUmV0cnknLCAhc3RvcmUuc3RhdGUuc3RhcnRQdWJsaXNoaW5nUmV0cnkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHJldHJ5UHVibGlzaGluZzogcmV0cnlQdWJsaXNoaW5nLCBSb2xsaW5nTG9hZGVyOiBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUYWJJbmRleCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGFiczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdOyB9LFxuICAgICAgICB9LFxuICAgICAgICBzaG93Qm90dG9tQmFubmVyOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydhY3RpdmVUYWInXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZVRhYiA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgaGFuZGxlQWN0aXZlVGFiID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBhY3RpdmVUYWIudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGVtaXQoJ2FjdGl2ZVRhYicsIHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBhY3RpdmVUYWI6IGFjdGl2ZVRhYiwgZW1pdDogZW1pdCwgaGFuZGxlQWN0aXZlVGFiOiBoYW5kbGVBY3RpdmVUYWIgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdXaXphcmRJbmRleCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29tcGxldGVkU3RlcHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gW107IH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHN0ZXBzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDaGVja2luZycsXG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdQdWJsaXNoJyxcbiAgICAgICAgICAgICAgICBpZDogMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc3RlcHM6IHN0ZXBzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEYXRlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29uZGl0aW9ucycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlDb250YWN0SW5mbycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eURlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0h1bWFuaXRhcmlhblNjb3BlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJYXRpSWRlbnRpZmllcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVNlY3RvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlMb2NhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ090aGVySWRlbnRpZmllcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVBhcnRpY2lwYXRpbmdPcmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGxhbm5lZERpc2J1cnNlbWVudCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUG9saWN5TWFya2VyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVJlY2lwaWVudENvdW50cnknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZWNpcGllbnRSZWdpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1JlbGF0ZWRBY3Rpdml0eScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnYW5pemF0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBIYXZlTm90QWRkZWRZZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIEhlbHBlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSGVscGVyVGV4dC52dWVcIikpO1xudmFyIEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5UmVzdWx0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhlbHBlclRleHQ6IEhlbHBlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnRIYXNEZXByZWNhdGVkQ29kZToge1xuICAgICAgICAgICAgdHlwZTogW0Jvb2xlYW5dLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSAnTU1NTSBERCwgWVlZWSc7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZXN1bHREYXRhID0gZGF0YS52YWx1ZS5jb250ZW50O1xuICAgICAgICB2YXIgY3VycmVudExhbmd1YWdlID0gJ2VuJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vbWVudDogbW9tZW50XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgICAgICAgcmVzdWx0RGF0YTogcmVzdWx0RGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZTogY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBpbmRpY2F0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdDtcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIG1ldGhvZHM6IHsgb25seURlcHJlY2F0ZWRTdGF0dXNNYXA6IHV0aWxzXzEub25seURlcHJlY2F0ZWRTdGF0dXNNYXAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVNlY3RvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVRhZycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUaXRsZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVRyYW5zYWN0aW9ucycsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudFxudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbi8vaGVscGVyXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGl0bGVFbGVtZW50OiBJbmRleF8xLlRpdGxlRWxlbWVudCxcbiAgICAgICAgTWVhc3VyZTogSW5kZXhfMS5NZWFzdXJlLFxuICAgICAgICBBc2NlbmRpbmc6IEluZGV4XzEuQXNjZW5kaW5nLFxuICAgICAgICBBZ2dyZWdhdGlvblN0YXR1czogSW5kZXhfMS5BZ2dyZWdhdGlvblN0YXR1cyxcbiAgICAgICAgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIEJhc2VsaW5lOiBJbmRleF8xLkJhc2VsaW5lLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBQZXJpb2Q6IEluZGV4XzEuUGVyaW9kLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRUaXRsZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgaW5kaWNhdG9yID0gX2IuaW5kaWNhdG9yLCBhY3Rpdml0eSA9IF9iLmFjdGl2aXR5LCBwZXJpb2QgPSBfYi5wZXJpb2QsIHJlc3VsdFRpdGxlID0gX2IucmVzdWx0VGl0bGU7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgLy9pbmRpY2F0b3JcbiAgICAgICAgdmFyIGluZGljYXRvckRhdGEgPSBpbmRpY2F0b3IudmFsdWUuaW5kaWNhdG9yO1xuICAgICAgICB2YXIgcGVyaW9kRGF0YSA9IHBlcmlvZC52YWx1ZTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVzXG4gICAgICAgIHZhciBwYXJlbnREYXRhID0ge1xuICAgICAgICAgICAgYWN0aXZpdHk6IGFjdGl2aXR5LnZhbHVlLmlkLFxuICAgICAgICAgICAgcmVzdWx0OiBpbmRpY2F0b3IudmFsdWUucmVzdWx0X2lkLFxuICAgICAgICAgICAgaW5kaWNhdG9yOiBpbmRpY2F0b3IudmFsdWUuaWQsXG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50RGF0YScsIHBhcmVudERhdGEpO1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gaW5kaWNhdG9yLnZhbHVlLnJlc3VsdF9pZCwgZGVmYXVsdExhbmd1YWdlID0gKF9hID0gYWN0aXZpdHkudmFsdWUuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYW5ndWFnZSwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCByZXN1bHRUaXRsZWQgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShyZXN1bHRUaXRsZS52YWx1ZVswXS5uYXJyYXRpdmUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvclwiKSwgaW5kaWNhdG9yVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShpbmRpY2F0b3JEYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSwgZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdZb3VyIEFjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdSZXN1bHQgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdFwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlZCxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0luZGljYXRvciBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc01hbmRhdG9yeUZvckluZGljYXRvciA9IGZ1bmN0aW9uIChlbGVtZW50T3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIHZhciBtYW5kYXRvcnlFbGVtZW50T3JBdHRyaWJ1dGUgPSBbJ21lYXN1cmUnLCAndGl0bGUnXTtcbiAgICAgICAgICAgIHJldHVybiBtYW5kYXRvcnlFbGVtZW50T3JBdHRyaWJ1dGUuaW5jbHVkZXMoZWxlbWVudE9yQXR0cmlidXRlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGluZGljYXRvclRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBwZXJpb2REYXRhOiBwZXJpb2REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBjb3VudERvY3VtZW50TGluazogdXRpbHNfMS5jb3VudERvY3VtZW50TGluayxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5Rm9ySW5kaWNhdG9yOiBpc01hbmRhdG9yeUZvckluZGljYXRvcixcbiAgICAgICAgICAgIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRpY2F0b3JzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgYWN0aXZpdHkgPSBfYS5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9hLnBhcmVudERhdGE7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCAnZW4nKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpO1xuICAgICAgICB2YXIgaW5kaWNhdG9yc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1Jlc3VsdCBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0XCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzdWx0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdJbmRpY2F0b3IgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGluZGljYXRvcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvcnMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpbmRpY2F0b3JzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgcmVzdWx0SWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgaW5kaWNhdG9yc0RhdGE6IGluZGljYXRvcnNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICByZXN1bHRJZDogcmVzdWx0SWQsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JBZ2dyZWdhdGlvblN0YXR1cycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBzdGF0dXNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzRGF0YTogc3RhdHVzRGF0YSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vSW5kZXhcIik7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JCYXNlbGluZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciBiYXNlbGluZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciBsb2NhdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnJlZmVyZW5jZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGxhc3RMb2NhdGlvbiA9IGxvY2F0aW9ucy5zbGljZSgtMSlbMF07XG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5qb2luKCcsICcpICsgJyAnICsgJ2FuZCcgKyAnICcgKyBsYXN0TG9jYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdExvY2F0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gdG8gcmV0dXJuIGRpbWVuc2lvbnMgb2YgYmFzZWxpbmVcbiAgICAgICAgICogQHBhcmFtIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkaW1lbnNpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgID8gXCI8c3Bhbj5cIi5jb25jYXQoaXRlbS5uYW1lLCBcIjwvc3Bhbj5cIilcbiAgICAgICAgICAgICAgICAgICAgOiBcIjxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXhzIGl0YWxpYyB0ZXh0LWxpZ2h0LWdyYXlcXFwiPk4vQTwvc3Bhbj5cIjtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBpdGVtLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8gXCI8c3Bhbj5cIi5jb25jYXQoaXRlbS52YWx1ZSwgXCI8L3NwYW4+XCIpXG4gICAgICAgICAgICAgICAgICAgIDogXCI8c3BhbiBjbGFzcz1cXFwidGV4dC14cyBpdGFsaWMgdGV4dC1saWdodC1ncmF5XFxcIj5OL0E8L3NwYW4+XCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiY29kZSAtIFwiLmNvbmNhdChuYW1lLCBcIiwgdmFsdWUgLSBcIikuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJzsgJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYXNlbGluZTogYmFzZWxpbmUsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBkaW1lbnNpb25zOiBkaW1lbnNpb25zLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgY291bnREb2N1bWVudExpbms6IHV0aWxzXzEuY291bnREb2N1bWVudExpbmssXG4gICAgICAgICAgICBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGVzY3JpcHRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkZXNjcmlwdGlvbkRhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkZXNjcmlwdGlvbkRhdGE6IGRlc2NyaXB0aW9uRGF0YSwgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckRvY3VtZW50TGluaycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFsaWdubWVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ2NlbnRlcicsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkbERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkbERhdGE6IGRsRGF0YSwgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JBc2NlbmRpbmcnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yTWVhc3VyZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1lYXN1cmVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIG1lYXN1cmVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZURhdGE6IG1lYXN1cmVEYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JQZXJpb2QnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBpZCA9ICgwLCB2dWVfMS5pbmplY3QpKCdwYXJlbnREYXRhJyk7XG4gICAgICAgIHJldHVybiB7IGlkOiBpZCwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JSZWZlcmVuY2UnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZWZUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlZkRhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyByZWZEYXRhOiByZWZEYXRhLCBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JUaXRsZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0aXRsZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyB0aXRsZURhdGE6IHRpdGxlRGF0YSwgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBTdGVwQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1N0ZXBCYXIudnVlXCIpKTtcbnZhciBQdWJsaXNoaW5nU2V0dGluZ3NTdGVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlXCIpKTtcbnZhciBEZWZhdWx0VmFsdWVzU3RlcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWVcIikpO1xudmFyIE9yZ2FuaXNhdGlvbkRhdGFTdGVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1N0ZXBzL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlTdGVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPbkJvYXJkaW5nSW5kZXgnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBodW1hbml0YXJpYW46IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0QWlkVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uT25ib2FyZGluZzoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvblR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpc0ZpcnN0VGltZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzIucmVmKSgxKTtcbiAgICAgICAgdmFyIG1vZGFsU3RhdGUgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGluaXRpYWxSZW5kZXIgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclNldHRpbmcgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBpc01vZGVsQ2xvc2VDbGlja2VkID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgnaXNNb2RlbENsb3NlQ2xpY2tlZCcsIGZhbHNlLCBzZXNzaW9uU3RvcmFnZSk7XG4gICAgICAgIHZhciBpc0ZvcmNlT3Blbk1vZGFsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaXNGb3JjZU9wZW5Nb2RhbCcpID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHZhciBvcmdhbml6YXRpb25TdGVwcyA9ICgwLCB2dWVfMi5yZWYpKHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuc3RlcHNfc3RhdHVzKTtcbiAgICAgICAgdmFyIGZpcnN0SW5jb21wbGV0ZVN0ZXAgPSBvcmdhbml6YXRpb25TdGVwcy52YWx1ZS5maW5kSW5kZXgoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuICFzdGVwLmNvbXBsZXRlOyB9KSArIDE7XG4gICAgICAgIGlmICghcHJvcHMuaXNGaXJzdFRpbWUgJiYgZmlyc3RJbmNvbXBsZXRlU3RlcCA+IDApIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgPSBmaXJzdEluY29tcGxldGVTdGVwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmZXRjaERhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KCcvc2V0dGluZy9kYXRhJylcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICAgICAgICAgICAgcHVibGlzaGVyU2V0dGluZy52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdfaW5mbztcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUudmFsdWUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgKF9kID0gKF9jID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXMpLCAoX2YgPSAoX2UgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmRhdGEpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5kZWZhdWx0X3ZhbHVlcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7IHJldHVybiBjb25zb2xlLmxvZygnRXJyb3InLCBlcnIpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGlzRm9yY2VPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgIG1vZGFsU3RhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcbiAgICAgICAgICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XG4gICAgICAgICAgICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlKSB7XG4gICAgICAgICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyxcbiAgICAgICAgLy8gICBwcm9wcy5vcmdhbml6YXRpb25PbmJvYXJkaW5nLmRvbnRfc2hvd19hZ2FpbixcbiAgICAgICAgLy8gICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlLFxuICAgICAgICAvLyAgICdTdGF0dXMnXG4gICAgICAgIC8vICk7XG4gICAgICAgIC8vIGlmIChcbiAgICAgICAgLy8gICAhcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyB8fFxuICAgICAgICAvLyAgICFwcm9wcy5vcmdhbml6YXRpb25PbmJvYXJkaW5nLmRvbnRfc2hvd19hZ2FpbiB8fFxuICAgICAgICAvLyAgICFpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXG4gICAgICAgIC8vICkge1xuICAgICAgICAvLyAgIG1vZGFsU3RhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmKHByb3BzLilcbiAgICAgICAgLy8gd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyAgIGlmIChcbiAgICAgICAgLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcbiAgICAgICAgLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XG4gICAgICAgIC8vICAgICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXG4gICAgICAgIC8vICAgKSB7XG4gICAgICAgIC8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIC8vICAgfSBlbHNlIGlmIChzdG9yZS5zdGF0ZS5nZXRTdGFydGVkQnV0dG9uKSB7XG4gICAgICAgIC8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2hFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChtb2RhbFN0YXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZU1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdpc0ZvcmNlT3Blbk1vZGFsJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm9jZWVkU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsb3NlTW9kYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByZXZpb3VzU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUtLTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZUNoYW5nZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlU3RlcCA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcy52YWx1ZVtzdGVwIC0gMV0uY29tcGxldGUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVtb3ZlQ29tcGxldGVkU3RlcCA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcy52YWx1ZVtzdGVwIC0gMV0uY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoYW5nZVN0ZXAgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgPSBpbmRleDtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHN0ZXA6IHN0ZXAsIG1vZGFsU3RhdGU6IG1vZGFsU3RhdGUsIGluaXRpYWxSZW5kZXI6IGluaXRpYWxSZW5kZXIsIHB1Ymxpc2hlclNldHRpbmc6IHB1Ymxpc2hlclNldHRpbmcsIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLCBpc01vZGVsQ2xvc2VDbGlja2VkOiBpc01vZGVsQ2xvc2VDbGlja2VkLCBpc0ZvcmNlT3Blbk1vZGFsOiBpc0ZvcmNlT3Blbk1vZGFsLCBvcmdhbml6YXRpb25TdGVwczogb3JnYW5pemF0aW9uU3RlcHMsIGZpcnN0SW5jb21wbGV0ZVN0ZXA6IGZpcnN0SW5jb21wbGV0ZVN0ZXAsIGZldGNoRGF0YTogZmV0Y2hEYXRhLCBjbG9zZU1vZGFsOiBjbG9zZU1vZGFsLCBwcm9jZWVkU3RlcDogcHJvY2VlZFN0ZXAsIHByZXZpb3VzU3RlcDogcHJldmlvdXNTdGVwLCBoYW5kbGVDaGFuZ2VSZW5kZXI6IGhhbmRsZUNoYW5nZVJlbmRlciwgY29tcGxldGVTdGVwOiBjb21wbGV0ZVN0ZXAsIHJlbW92ZUNvbXBsZXRlZFN0ZXA6IHJlbW92ZUNvbXBsZXRlZFN0ZXAsIGNoYW5nZVN0ZXA6IGNoYW5nZVN0ZXAsIFN0ZXBCYXI6IFN0ZXBCYXJfdnVlXzEuZGVmYXVsdCwgUHVibGlzaGluZ1NldHRpbmdzU3RlcDogUHVibGlzaGluZ1NldHRpbmdzU3RlcF92dWVfMS5kZWZhdWx0LCBEZWZhdWx0VmFsdWVzU3RlcDogRGVmYXVsdFZhbHVlc1N0ZXBfdnVlXzEuZGVmYXVsdCwgT3JnYW5pc2F0aW9uRGF0YVN0ZXA6IE9yZ2FuaXNhdGlvbkRhdGFTdGVwX3Z1ZV8xLmRlZmF1bHQsIEFjdGl2aXR5U3RlcDogQWN0aXZpdHlTdGVwX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVN0ZXAnLFxuICAgIGVtaXRzOiBbJ3Byb2NlZWRTdGVwJywgJ3ByZXZpb3VzU3RlcCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvY2VlZFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KCcvb3JnYW5pc2F0aW9uLW9uYm9hcmRpbmcvY29tcGxldGUtYWN0aXZpdHknKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByZXZpb3VzU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ3ByZXZpb3VzU3RlcCcpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBlbWl0OiBlbWl0LCBwcm9jZWVkU3RlcDogcHJvY2VlZFN0ZXAsIHByZXZpb3VzU3RlcDogcHJldmlvdXNTdGVwIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTGluZXNMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWZhdWx0VmFsdWVzU3RlcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbXG4gICAgICAgICdwcm9jZWVkU3RlcCcsXG4gICAgICAgICdwcmV2aW91c1N0ZXAnLFxuICAgICAgICAnY29tcGxldGVTdGVwJyxcbiAgICAgICAgJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhbGxEZWZhdWx0VmFsdWUgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2Zsb3dfdHlwZTogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2FpZF90eXBlOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfdGllZF9zdGF0dXM6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzU2F2aW5nU3RhcnRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzU2F2ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhbGxEZWZhdWx0VmFsdWUudmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbERlZmF1bHRWYWx1ZS52YWx1ZVtrZXldID0gcHJvcHMuZGVmYXVsdFZhbHVlc1trZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHJvY2VlZFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc1NhdmluZ1N0YXJ0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3N0b3JlL2RlZmF1bHQnLCBhbGxEZWZhdWx0VmFsdWUudmFsdWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFZhbHVlc18xID0gcmVzcG9uc2UuZGF0YS5kYXRhLmRlZmF1bHRfdmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5mZXRjaERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUNvbXBsZXRlZENoZWNrKGRlZmF1bHRWYWx1ZXNfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7IHJldHVybiBjb25zb2xlLmxvZygnRXJyb3InLCBlcnIpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZUNvbXBsZXRlZENoZWNrID0gZnVuY3Rpb24gKGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVzICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2N1cnJlbmN5ICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfY3VycmVuY3kgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2xhbmd1YWdlICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnY29tcGxldGVTdGVwJywgMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdyZW1vdmVDb21wbGV0ZWRTdGVwJywgMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcmV2aW91c1N0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdwcmV2aW91c1N0ZXAnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhbGxEZWZhdWx0VmFsdWU6IGFsbERlZmF1bHRWYWx1ZSwgaXNTYXZpbmdTdGFydGVkOiBpc1NhdmluZ1N0YXJ0ZWQsIGlzU2F2ZWQ6IGlzU2F2ZWQsIHByb2NlZWRTdGVwOiBwcm9jZWVkU3RlcCwgZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2s6IGRlZmF1bHRWYWx1ZUNvbXBsZXRlZENoZWNrLCBwcmV2aW91c1N0ZXA6IHByZXZpb3VzU3RlcCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTGluZXNMb2FkZXI6IExpbmVzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBTaWRlSGVscFRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2lkZUhlbHBUZXh0LnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExpbmVzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xpbmVzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbmlzYXRpb25EYXRhU3RlcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb3JnYW5pemF0aW9uVHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwcmV2aW91c1ZhbHVlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZldGNoRGF0YToge1xuICAgICAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogW1xuICAgICAgICAncHJvY2VlZFN0ZXAnLFxuICAgICAgICAncHJldmlvdXNTdGVwJyxcbiAgICAgICAgJ2NvbXBsZXRlU3RlcCcsXG4gICAgICAgICdyZW1vdmVDb21wbGV0ZWRTdGVwJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iLCBfYywgX2Q7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlY29uZGFyeVJlcG9ydGVyT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHsgdmFsdWU6ICcxJywgbGFiZWw6ICdUcnVlJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJzAnLCBsYWJlbDogJ0ZhbHNlJyB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uRGF0YSA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIHJlZjogKChfYiA9IHByb3BzLnByZXZpb3VzVmFsdWVzWzBdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVmKSB8fCAnJyxcbiAgICAgICAgICAgIHR5cGU6ICgoX2MgPSBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnR5cGUpIHx8ICcnLFxuICAgICAgICAgICAgc2Vjb25kYXJ5X3JlcG9ydGVyOiAoKF9kID0gcHJvcHMucHJldmlvdXNWYWx1ZXNbMF0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zZWNvbmRhcnlfcmVwb3J0ZXIpIHx8ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhlbHBUaXRsZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGhlbHBDb250ZW50ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgaGVscFZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc1NhdmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzU2F2ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTWVzc2FnZXMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNSZWZlcmVuY2VFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHJlZmVyZW5jZUVycm9yTWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGNvbnRlbnRWYWx1ZXMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdyZWZlcmVuY2UnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGNsYXNzPVwic3BhY2UteS0xLjVcIj4gUHJvdmlkZSB0aGUgSUFUSSBPcmdhbmlzYXRpb24gSWRlbnRpZmllciBvZiB0aGUgb3JnYW5pc2F0aW9uIHB1Ymxpc2hpbmcgdGhlIGRhdGEuIFRoZSBxdWlja2VzdCB3YXkgdG8gZmluZCB0aGlzIGlzIHRvIHNlYXJjaCBmb3IgdGhlIG9yZ2FuaXNhdGlvbiBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmlhdGlyZWdpc3RyeS5vcmcvcHVibGlzaGVyL1wiPklBVEkgUHVibGlzaGVyIExpc3Q8L2E+LiBJZiB5b3UgY2Fubm90IGZpbmQgdGhlIG9yZ2FuaXNhdGlvbiwgc2VlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vZ3VpZGFuY2UvcHVibGlzaGluZy1kYXRhL2RhdGEtcXVhbGl0eS1hbmQtdmlzdWFsaXNhdGlvbi9maW5kaW5nLW90aGVyLW9yZ2FuaXNhdGlvbnMtaWRlbnRpZmllcnMvXCI+ZnVydGhlciBndWlkYW5jZTwvYT4uIDwvZGl2PicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAndHlwZScsXG4gICAgICAgICAgICAgICAgY29udGVudDogJzxkaXYgY2xhc3M9XCJzcGFjZS15LTEuNVwiPiBTZWxlY3QgdGhlIHR5cGUgdGhhdCBiZXN0IGRlc2NyaWJlcyB0aGUgb3JnYW5pc2F0aW9uIHB1Ymxpc2hpbmcgdGhlIGRhdGEuPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9pYXRpLXN0YW5kYXJkLzIwMy9jb2RlbGlzdHMvb3JnYW5pc2F0aW9udHlwZS9cIj5JbmZvcm1hdGlvbiBvbiBhbGwgb3JnYW5pc2F0aW9uIHR5cGVzLjwvYT48L2Rpdj4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3NlY29uZGFyeS1yZXBvcnRlcicsXG4gICAgICAgICAgICAgICAgY29udGVudDogXCI8ZGl2IGNsYXNzPVxcXCJzcGFjZS15LTEuNVxcXCI+IEFyZSB5b3UgcmVwcm9kdWNpbmcgdGhlIGRhdGEgcmVwb3J0ZWQgYnkgYW5vdGhlciBvcmdhbmlzYXRpb24/IElmIHNvLCB5b3VyIG9yZ2FuaXNhdGlvbiBpcyBhIFxcdTIwMThzZWNvbmRhcnkgcmVwb3J0ZXJcXHUyMDE5IGFuZCB5b3Ugc2hvdWxkIHNlbGVjdCAnPGI+WWVzPC9iPlxcdTIwMTkuIElmIHlvdSBhcmUgcmVwb3J0aW5nIHlvdXIgb3duIG9yZ2FuaXNhdGlvblxcdTIwMTlzIGRhdGEsIHNlbGVjdCBcXHUyMDE4PGI+Tm88L2I+XFx1MjAxOS48YnI+PGJyPlBsZWFzZSBub3RlOiB5b3UgYXJlIDxiPm5vdDwvYj4gYSBzZWNvbmRhcnkgcmVwb3J0ZXIgaWYgeW91ciBvcmdhbmlzYXRpb24gaXMgb2ZmaWNpYWxseSBhc3NpZ25lZCBhcyBhIHByb3h5IHRvIHJlcG9ydCBJQVRJIGRhdGEgb24gYmVoYWxmIG9mIGFub3RoZXIgb3JnYW5pc2F0aW9uLiA8L2Rpdj5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBzaG93SGVscCA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaGVscFRpdGxlLnZhbHVlID0gdGl0bGU7XG4gICAgICAgICAgICBoZWxwQ29udGVudC52YWx1ZSA9IChfYSA9IGNvbnRlbnRWYWx1ZXMuZmluZChmdW5jdGlvbiAoY29udGVudCkgeyByZXR1cm4gY29udGVudC50aXRsZSA9PT0gdGl0bGU7IH0pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGVudDtcbiAgICAgICAgICAgIGhlbHBWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMzAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDMwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNlbmQtdmVyaWZpY2F0aW9uJykpIHtcbiAgICAgICAgICAgICAgICByZXNlbmRWZXJpZmljYXRpb25FbWFpbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRyYW5zZm9ybU1lc3NhZ2VzID0gZnVuY3Rpb24gKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZXMubWFwKGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1lvdSBoYXZlIG5vdCB2ZXJpZmllZCB5b3VyIGVtYWlsIGFkZHJlc3MuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIllvdXIgZW1haWwgYWRkcmVzcyBoYXMgbm90IGJlZW4gdmVyaWZpZWQuIDxzcGFuIGNsYXNzPVxcXCJyZXNlbmQtdmVyaWZpY2F0aW9uIHRleHQtYmx1ZWNvcmFsIGN1cnNvci1wb2ludGVyIGhvdmVyOnRleHQtc3ByaW5nLTUwIHVuZGVybGluZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi1bNDAwbXNdXFxcIj5SZXNlbmQgVmVyaWZpY2F0aW9uIGVtYWlsPC9zcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdUaGUgUHVibGlzaGVyIElEIGlzIG5vdCB2ZXJpZmllZCBpbiBJQVRJIFJlZ2lzdHJ5Lic6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1lvdXIgSUFUSSBSZWdpc3RyeSBhY2NvdW50IGlzIHBlbmRpbmcgYXBwcm92YWwuIENvbnRhY3QgPGEgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmdcIj5zdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmc8L2E+IGlmIHlvdXIgYWNjb3VudCBoYXMgbm90IGJlZW4gYXBwcm92ZWQgd2l0aGluIHR3byB3b3JraW5nIGRheXMgb2YgcmVnaXN0ZXJpbmcuJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHJldmlvdXNTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgncHJldmlvdXNTdGVwJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm9jZWVkU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgZmluYWxEYXRhID0gW1xuICAgICAgICAgICAgICAgIF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcmdhbml6YXRpb25EYXRhLnZhbHVlKSwgeyBuYXJyYXRpdmU6ICgoX2EgPSBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hcnJhdGl2ZSkgfHwgJycgfSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnB1dCgnL29yZ2FuaXNhdGlvbi9yZXBvcnRpbmdfb3JnJywge1xuICAgICAgICAgICAgICAgIHJlcG9ydGluZ19vcmc6IGZpbmFsRGF0YSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KCdvcmdhbmlzYXRpb24vY2hlY2tzLWZvci1vcmdhbmlzYXRpb24tcHVibGlzaCcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucG9zdCgnL29yZ2FuaXNhdGlvbi9wdWJsaXNoJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmZldGNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgnY29tcGxldGVTdGVwJywgMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlcy52YWx1ZSA9IHRyYW5zZm9ybU1lc3NhZ2VzKHJlc3BvbnNlLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXMudmFsdWUgPSB0cmFuc2Zvcm1NZXNzYWdlcyhyZXNwb25zZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdyZW1vdmVDb21wbGV0ZWRTdGVwJywgMyk7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5yZXNwb25zZSAmJiBlcnIucmVzcG9uc2UuZGF0YSAmJiBlcnIucmVzcG9uc2UuZGF0YS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVyci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yc1sncmVwb3J0aW5nX29yZy4wLnJlZiddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNSZWZlcmVuY2VFcnJvci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VFcnJvck1lc3NhZ2UudmFsdWUgPSBlcnJvcnNbJ3JlcG9ydGluZ19vcmcuMC5yZWYnXVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIHNlY29uZGFyeVJlcG9ydGVyT3B0aW9uczogc2Vjb25kYXJ5UmVwb3J0ZXJPcHRpb25zLCBvcmdhbml6YXRpb25EYXRhOiBvcmdhbml6YXRpb25EYXRhLCBoZWxwVGl0bGU6IGhlbHBUaXRsZSwgaGVscENvbnRlbnQ6IGhlbHBDb250ZW50LCBoZWxwVmlzaWJsZTogaGVscFZpc2libGUsIGlzU2F2aW5nOiBpc1NhdmluZywgaXNTYXZlZDogaXNTYXZlZCwgaGFzRXJyb3I6IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2VzOiBlcnJvck1lc3NhZ2VzLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgaGFzUmVmZXJlbmNlRXJyb3I6IGhhc1JlZmVyZW5jZUVycm9yLCByZWZlcmVuY2VFcnJvck1lc3NhZ2U6IHJlZmVyZW5jZUVycm9yTWVzc2FnZSwgY29udGVudFZhbHVlczogY29udGVudFZhbHVlcywgc2hvd0hlbHA6IHNob3dIZWxwLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIHRyYW5zZm9ybU1lc3NhZ2VzOiB0cmFuc2Zvcm1NZXNzYWdlcywgcHJldmlvdXNTdGVwOiBwcmV2aW91c1N0ZXAsIHByb2NlZWRTdGVwOiBwcm9jZWVkU3RlcCwgcmVmOiB2dWVfMi5yZWYsIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIFNpZGVIZWxwVGV4dDogU2lkZUhlbHBUZXh0X3Z1ZV8xLmRlZmF1bHQsIExpbmVzTG9hZGVyOiBMaW5lc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdE1lc3NhZ2U6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTGluZXNMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaGluZ1NldHRpbmdzU3RlcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcHVibGlzaGVySWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwdWJsaXNoZXJTZXR0aW5nOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uSWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmZXRjaERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluaXRpYWxSZW5kZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ3Byb2NlZWRTdGVwJyxcbiAgICAgICAgJ2NoYW5nZVJlbmRlcicsXG4gICAgICAgICdjb21wbGV0ZVN0ZXAnLFxuICAgICAgICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXG4gICAgXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgYXBpVG9rZW4gPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBpc1ZlcmlmeWluZ1Rva2VuID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNTYXZpbmcgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc1N1Y2Nlc3MgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2tlblN0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKCgoX2IgPSBwcm9wcy5wdWJsaXNoZXJTZXR0aW5nKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9rZW5fc3RhdHVzKSB8fCAnJyk7XG4gICAgICAgIHZhciB2ZXJpZnlUb2tlblN0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIG9yZ2FuaXphdGlvblJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyB2YXIgX2E7IHJldHVybiAoX2EgPSBwcm9wcy5wdWJsaXNoZXJTZXR0aW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9rZW5fc3RhdHVzOyB9LCBmdW5jdGlvbiAobmV3U3RhdHVzKSB7XG4gICAgICAgICAgICB0b2tlblN0YXR1cy52YWx1ZSA9IG5ld1N0YXR1cztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYXBpVG9rZW4udmFsdWUgPSAoX2EgPSBwcm9wcyA9PT0gbnVsbCB8fCBwcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvcHMucHVibGlzaGVyU2V0dGluZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFwaV90b2tlbjtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZS52YWx1ZSA9IHByb3BzLnJlZ2lzdHJhdGlvblR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdmVyaWZ5VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc1ZlcmlmeWluZ1Rva2VuLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZlcmlmeVRva2VuU3RhdHVzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VSZW5kZXInKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvc2V0dGluZy92ZXJpZnknLCB7XG4gICAgICAgICAgICAgICAgYXBpX3Rva2VuOiBhcGlUb2tlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBwdWJsaXNoZXJfaWQ6IHByb3BzLnB1Ymxpc2hlcklkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2ZXJpZnlUb2tlblN0YXR1cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9rZW5TdGF0dXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnQ29ycmVjdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhLnRva2VuX3N0YXR1cyA9PT0gJ1BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzU3VjY2Vzcy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvcicsIGVycik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc1ZlcmlmeWluZ1Rva2VuLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzU3VjY2Vzcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm9jZWVkU3RlcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9jKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYy5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3N0b3JlL3B1Ymxpc2hlcicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3Rva2VuOiBhcGlUb2tlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX2lkOiBwcm9wcy5wdWJsaXNoZXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX2lkOiBwcm9wcy5vcmdhbml6YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX3ZlcmlmaWNhdGlvbjogKF9hID0gcHJvcHMucHVibGlzaGVyU2V0dGluZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hlcl92ZXJpZmljYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuX3ZlcmlmaWNhdGlvbjogKF9iID0gcHJvcHMucHVibGlzaGVyU2V0dGluZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRva2VuX3ZlcmlmaWNhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdDb3JyZWN0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdQZW5kaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ2NvbXBsZXRlU3RlcCcsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgncmVtb3ZlQ29tcGxldGVkU3RlcCcsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZmV0Y2hEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMzAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3BvbnNlLmRhdGEubWVzc2FnZS5qb2luKCc8YnI+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikgeyByZXR1cm4gY29uc29sZS5sb2coZXJyKTsgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Muc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhcGlUb2tlbjogYXBpVG9rZW4sIGlzVmVyaWZ5aW5nVG9rZW46IGlzVmVyaWZ5aW5nVG9rZW4sIGlzU2F2aW5nOiBpc1NhdmluZywgaXNTdWNjZXNzOiBpc1N1Y2Nlc3MsIHRva2VuU3RhdHVzOiB0b2tlblN0YXR1cywgdmVyaWZ5VG9rZW5TdGF0dXM6IHZlcmlmeVRva2VuU3RhdHVzLCBvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlOiBvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCB2ZXJpZnlUb2tlbjogdmVyaWZ5VG9rZW4sIHByb2NlZWRTdGVwOiBwcm9jZWVkU3RlcCwgTGluZXNMb2FkZXI6IExpbmVzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0LCBUb2FzdE1lc3NhZ2U6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0aWVzRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWFyY2hCdG5WYWx1ZSA9IF9iWzBdLCBzZWFyY2hCdG5Ub2dnbGUgPSBfYlsxXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZWxlbWVudHMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVsZW1lbnRJY29ucyA9IHtcbiAgICAgICAgICAgIGNvbXBsZXRlZDogJ2RvdWJsZS10aWNrJyxcbiAgICAgICAgICAgIG5vdF9jb21wbGV0ZWQ6ICdyZWQtY3Jvc3MnLFxuICAgICAgICAgICAgY29yZTogJ2NvcmUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBPYmplY3QuZW50cmllcyhkYXRhLnZhbHVlKTtcbiAgICAgICAgdmFyIGZpbHRlcmVkRWxlbWVudHMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50cy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJycpLnJlcGxhY2UoJy0nLCAnXycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtlbGVtZW50cy5zdGF0dXNdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICcnKS5yZXBsYWNlKCctJywgJ18nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBqdXN0U3RyaW5ncyA9IE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICByZXR1cm4ganVzdFN0cmluZ3M7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWRkaW5nIGNvcmUgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YS52YWx1ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmICgoMCwgY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMpKCkuaW5jbHVkZXMoa2V5LnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZVtrZXldWydjb3JlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRyb3Bkb3duRmlsdGVyID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnN0YXR1cyA9IHM7XG4gICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAhZHJvcGRvd24udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluayhoYXNfZGF0YSwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChoYXNfZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPT0gJ3Jlc3VsdCcgfHwgaW5kZXggPT0gJ3RyYW5zYWN0aW9ucycpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGluZGV4ID09ICdyZXN1bHQnID8gJ3Jlc3VsdCcgOiAndHJhbnNhY3Rpb24nO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50LCBcIi9jcmVhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL1wiKS5jb25jYXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZGF0YTogZGF0YSwgZHJvcGRvd246IGRyb3Bkb3duLCBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sIHNlYXJjaEJ0blZhbHVlOiBzZWFyY2hCdG5WYWx1ZSwgc2VhcmNoQnRuVG9nZ2xlOiBzZWFyY2hCdG5Ub2dnbGUsIGVsZW1lbnRzOiBlbGVtZW50cywgZWxlbWVudEljb25zOiBlbGVtZW50SWNvbnMsIGFzQXJyYXlEYXRhOiBhc0FycmF5RGF0YSwgZmlsdGVyZWRFbGVtZW50czogZmlsdGVyZWRFbGVtZW50cywgZHJvcGRvd25GaWx0ZXI6IGRyb3Bkb3duRmlsdGVyLCBnZXRMaW5rOiBnZXRMaW5rLCBhY3Rpdml0eUNvcmVFbGVtZW50czogY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbi8vY29tcG9uZW50c1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvZWxlbWVudHMvSW5kZXhcIik7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBFbGVtZW50U3RhdHVzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIZWxwZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hlbHBlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3YXJuaW5nSW5mb1RleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBoYXNFdmVyQmVlblB1Ymxpc2hlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBkZXByZWNhdGlvbkNvZGVVc2FnZToge1xuICAgICAgICAgICAgdHlwZTogW0Jvb2xlYW4sIEJvb2xlYW5dLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlbGVtZW50cyA9ICgwLCB2dWVfMi5pbmplY3QpKCdlbGVtZW50cycpO1xuICAgICAgICB2YXIgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwgIGxnOmJhc2lzLTYvMTInO1xuICAgICAgICBpZiAocHJvcHMud2lkdGggPT09ICdmdWxsJykge1xuICAgICAgICAgICAgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwnO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsZXRlQWN0aXZpdHlFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVFbGVtZW50KGlkLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmRlbGV0ZShcIi9hcGkvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi9cIikuY29uY2F0KGVsZW1lbnQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICBcIkNvdWxkbid0IGRlbGV0ZSB0aGUgYWN0aXZpdHkgdGl0bGUgZHVlIHRvIHN5c3RlbSBlcnJvci5cIjtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGVsZW1lbnRzOiBlbGVtZW50cywgbGF5b3V0OiBsYXlvdXQsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQsIGRlbGV0ZUFjdGl2aXR5RWxlbWVudDogZGVsZXRlQWN0aXZpdHlFbGVtZW50LCBkZWxldGVFbGVtZW50OiBkZWxldGVFbGVtZW50LCBhY3Rpdml0eUNvcmVFbGVtZW50czogY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMsIEFjdGl2aXR5RGF0ZTogSW5kZXhfMS5BY3Rpdml0eURhdGUsIENvbmRpdGlvbnM6IEluZGV4XzEuQ29uZGl0aW9ucywgQ29udGFjdEluZm86IEluZGV4XzEuQ29udGFjdEluZm8sIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLCBIdW1hbml0YXJpYW5TY29wZTogSW5kZXhfMS5IdW1hbml0YXJpYW5TY29wZSwgSWF0aUlkZW50aWZpZXI6IEluZGV4XzEuSWF0aUlkZW50aWZpZXIsIExlZ2FjeURhdGE6IEluZGV4XzEuTGVnYWN5RGF0YSwgTG9jYXRpb246IEluZGV4XzEuTG9jYXRpb24sIE90aGVySWRlbnRpZmllcjogSW5kZXhfMS5PdGhlcklkZW50aWZpZXIsIFBhcnRpY2lwYXRpbmdPcmc6IEluZGV4XzEuUGFydGljaXBhdGluZ09yZywgUGxhbm5lZERpc2J1cnNlbWVudDogSW5kZXhfMS5QbGFubmVkRGlzYnVyc2VtZW50LCBQb2xpY3lNYXJrZXI6IEluZGV4XzEuUG9saWN5TWFya2VyLCBSZWNpcGllbnRDb3VudHJ5OiBJbmRleF8xLlJlY2lwaWVudENvdW50cnksIFJlY2lwaWVudFJlZ2lvbjogSW5kZXhfMS5SZWNpcGllbnRSZWdpb24sIFJlbGF0ZWRBY3Rpdml0eTogSW5kZXhfMS5SZWxhdGVkQWN0aXZpdHksIFJlcG9ydGluZ09yZ2FuaXphdGlvbjogSW5kZXhfMS5SZXBvcnRpbmdPcmdhbml6YXRpb24sIFNlY3RvcjogSW5kZXhfMS5TZWN0b3IsIFRhZzogSW5kZXhfMS5UYWcsIFRpdGxlRWxlbWVudDogSW5kZXhfMS5UaXRsZUVsZW1lbnQsIFRyYW5zYWN0aW9uczogSW5kZXhfMS5UcmFuc2FjdGlvbnMsIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LCBTdGF0dXM6IEVsZW1lbnRTdGF0dXNfdnVlXzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSGVscGVyVGV4dDogSGVscGVyVGV4dF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBZGRBY3Rpdml0eUJ1dHRvbicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2FbMF0sIG1vZGFsVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBtb2RlbFZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9ICFzdGF0ZS5pc1Zpc2libGU7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBsaUNsYXNzOiBsaUNsYXNzLFxuICAgICAgICAgICAgbW9kZWxWaXNpYmxlOiBtb2RlbFZpc2libGUsXG4gICAgICAgICAgICBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlOiB0b2dnbGUsXG4gICAgICAgICAgICBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsXG4gICAgICAgICAgICB0b2dnbGVNb2RlbDogdG9nZ2xlTW9kZWwsXG4gICAgICAgICAgICBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vKipcbiAqICBHbG9iYWwgU3RhdGVcbiAqL1xudmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FkZEFjdGl2aXR5QnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2EgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgbW9kYWxWYWx1ZSA9IF9hWzBdLCBtb2RhbFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgbW9kZWxWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RtZXNzYWdlVHlwZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvcnBvcHVwID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZ0luUHJvY2VzcyA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZU1vZGVsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBtb2RlbFZpc2libGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGxpQ2xhc3MgPSAnYmxvY2sgcC0yLjUgdGV4dC1uLTQwIHRleHQtdGlueSBsZWFkaW5nLVsxLjVdIGZvbnQtYm9sZCBob3Zlcjp0ZXh0LW4tNTAgaG92ZXI6Ymctbi0xMCc7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZEVycm9yKGZpbGVuYW1lLCB0ZXh0KSB7XG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCkpO1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9ICFzdGF0ZS5pc1Zpc2libGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja0Rvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhscy1wcm9ncmVzcy1zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2Vzcy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFueXdheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nSW5Qcm9jZXNzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvY2FuY2VsLXhscy1kb3dubG9hZCcpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNoZWNrRG93bmxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRFcnJvcnhtbCA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sL3RydWU/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbC90cnVlP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0bWVzc2FnZVR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi94bWwnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gKF9hID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc9JylbMV07XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkWG1sID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC14bWw/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnhtbF9lcnJvciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9ycG9wdXAudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0bWVzc2FnZVR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi94bWwnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gKF9hID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc9JylbMV07XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkWGxzID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9wcmVwYXJlLXhscz9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvcHJlcGFyZS14bHM/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRDc3YgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC1jc3Y/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLWNzdj9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBsaUNsYXNzOiBsaUNsYXNzLFxuICAgICAgICAgICAgbW9kZWxWaXNpYmxlOiBtb2RlbFZpc2libGUsXG4gICAgICAgICAgICBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlOiB0b2dnbGUsXG4gICAgICAgICAgICBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsXG4gICAgICAgICAgICB0b2dnbGVNb2RlbDogdG9nZ2xlTW9kZWwsXG4gICAgICAgICAgICBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sXG4gICAgICAgICAgICBkb3dubG9hZENzdjogZG93bmxvYWRDc3YsXG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2U6IGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UsXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHRvYXN0bWVzc2FnZVR5cGU6IHRvYXN0bWVzc2FnZVR5cGUsXG4gICAgICAgICAgICBkb3dubG9hZFhtbDogZG93bmxvYWRYbWwsXG4gICAgICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgc2hvd0Vycm9ycG9wdXA6IHNob3dFcnJvcnBvcHVwLFxuICAgICAgICAgICAgY2hlY2tEb3dubG9hZDogY2hlY2tEb3dubG9hZCxcbiAgICAgICAgICAgIGRvd25sb2FkRXJyb3J4bWw6IGRvd25sb2FkRXJyb3J4bWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICAgICAgZG93bmxvYWRFcnJvcjogZG93bmxvYWRFcnJvcixcbiAgICAgICAgICAgIGRvd25sb2FkWGxzOiBkb3dubG9hZFhscyxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nSW5Qcm9jZXNzOiBkb3dubG9hZGluZ0luUHJvY2VzcyxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgZG93bmxvYWRBbnl3YXk6IGRvd25sb2FkQW55d2F5LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0VsZW1lbnROb3RlJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0VtcHR5QWN0aXZpdHknLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQWN0aXZpdHlCdXR0b246IEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGRpc21pc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBzdGF0ZTogc3RhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERvd25sb2FkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xudmFyIEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFJlZnJlc2hUb2FzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWVcIikpO1xudmFyIFB1Ymxpc2hTZWxlY3RlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWVcIikpO1xudmFyIERlbGV0ZUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgRXJyb3JQb3BVcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGFnZVRpdGxlJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZnJlc2hUb2FzdE1zZycpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hSZWYgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoUmVmLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFJlZi52YWx1ZS5jaGVja1B1Ymxpc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgc3RvcmU6IHN0b3JlLCBwdWJsaXNoUmVmOiBwdWJsaXNoUmVmLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgRG93bmxvYWRBY3Rpdml0eUJ1dHRvbjogRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBBZGRBY3Rpdml0eUJ1dHRvbjogQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBSZWZyZXNoVG9hc3RNZXNzYWdlOiBSZWZyZXNoVG9hc3RfdnVlXzEuZGVmYXVsdCwgUHVibGlzaFNlbGVjdGVkOiBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEuZGVmYXVsdCwgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgRXJyb3JQb3BVcDogRXJyb3JQb3BVcF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnU2lkZWJhckhlbHBCbG9jaycsXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbi8vIGltcG9ydCBTaGltbWVyIGZyb20gXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTGF5b3V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICBjdXJyZW50UGFnZTogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0OiAxIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VsZWN0QWxsVmFsdWUgPSBfYlswXSwgc2VsZWN0QWxsVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZnJvbU5vdygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNlbGVjdEFsbChhY3Rpdml0aWVzLCBzZWxlY3RBbGxWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGxWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBkYXR1bSBpbiBhY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXNbZGF0dW1dLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0QWxsVG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9Tb3J0aW5nIGJ5IHVwZGF0ZV9hdFxuICAgICAgICB2YXIgZGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgICAgIHZhciBzb3J0aW5nRGlyZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICB2YXIgcXVlcnkgPSAoX2EgPSBwYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgdmFyIGRpcmVjdGlvbiA9IHBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3EnLCBxdWVyeSk7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdvcmRlckJ5JywgJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnKTtcbiAgICAgICAgICAgIHBhcmFtcy5zZXQoJ2RpcmVjdGlvbicsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gXCI/XCIuY29uY2F0KHBhcmFtcy50b1N0cmluZygpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeURhdGVVcmwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5ID0gKF9hID0gcGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBwYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdxJywgcXVlcnkpO1xuICAgICAgICAgICAgcGFyYW1zLnNldCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIFwiP1wiLmNvbmNhdChwYXJhbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNlbGVjdEFsbFZhbHVlOiBzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlOiBzZWxlY3RBbGxUb2dnbGUsIHN0b3JlOiBzdG9yZSwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdG9nZ2xlU2VsZWN0QWxsOiB0b2dnbGVTZWxlY3RBbGwsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3M6IHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcywgc29ydEJ5RGF0ZVVybDogc29ydEJ5RGF0ZVVybCwgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LCBQdWJsaXNoOiBQdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIFVuUHVibGlzaDogVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2REZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGFyZ2V0VmFsdWU6IEluZGV4XzEuVGFyZ2V0VmFsdWUsXG4gICAgICAgIEFjdHVhbFZhbHVlOiBJbmRleF8xLkFjdHVhbFZhbHVlLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHBlcmlvZCA9IF9iLnBlcmlvZCwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9iLnBhcmVudERhdGEsIHR5cGVzID0gX2IudHlwZXM7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMudmFsdWUpO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgcGVyaW9kRGF0YSA9IHBlcmlvZC52YWx1ZS5wZXJpb2Q7XG4gICAgICAgIC8vdGl0bGVzXG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9sYW5ndWFnZSwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUmVzdWx0IExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0luZGljYXRvciBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1BlcmlvZCBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUGVyaW9kJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIHBlcmlvZERhdGE6IHBlcmlvZERhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBwZXJpb2RMaW5rOiBwZXJpb2RMaW5rLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2RMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2EucGFyZW50RGF0YTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdFRpdGxlID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9yVGl0bGUgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgdmFyIHBlcmlvZHNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0eScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUmVzdWx0IExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShyZXN1bHRUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdJbmRpY2F0b3IgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoaW5kaWNhdG9yVGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUGVyaW9kIExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kcy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwZXJpb2RzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZHMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwZXJpb2RzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIGluZGljYXRvcklkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBwZXJpb2RMaW5rOiBwZXJpb2RMaW5rLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBwZXJpb2RzRGF0YTogcGVyaW9kc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgaW5kaWNhdG9ySWQ6IGluZGljYXRvcklkLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJBY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3R1YWxWYWx1ZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIC8vIHZ1ZSBpbmplY3RcbiAgICAgICAgdmFyIGRsVHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciBhY3R1YWxWYWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3R1YWxWYWx1ZTogYWN0dWFsVmFsdWUsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBnZXRMb2NhdGlvbjogdXRpbHNfMS5nZXRMb2NhdGlvbixcbiAgICAgICAgICAgIGRsVHlwZTogZGxUeXBlLFxuICAgICAgICAgICAgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVGFyZ2V0VmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHsgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICAvLyB2dWUgaW5qZWN0XG4gICAgICAgIC8vIGNvbnN0IGxhbmd1YWdlVHlwZSA9IGluamVjdCgndHlwZXMnKS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIGRsVHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciB0YXJnZXRWYWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXJnZXRWYWx1ZTogdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBnZXRMb2NhdGlvbjogdXRpbHNfMS5nZXRMb2NhdGlvbixcbiAgICAgICAgICAgIC8vIGxhbmd1YWdlVHlwZSxcbiAgICAgICAgICAgIGRsVHlwZTogZGxUeXBlLFxuICAgICAgICAgICAgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgUmVzdWx0RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9SZXN1bHRFbGVtZW50LnZ1ZVwiKSk7XG52YXIgSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWVcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0RGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFJlc3VsdEVsZW1lbnQ6IFJlc3VsdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSW5kaWNhdG9yOiBJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgcmVzdWx0ID0gX2IucmVzdWx0LCBhY3Rpdml0eSA9IF9iLmFjdGl2aXR5O1xuICAgICAgICB2YXIgaGFzSW5kaWNhdG9ycyA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9IHJlc3VsdC52YWx1ZS5yZXN1bHQ7XG4gICAgICAgIC8vIGNvbnN0IGRlcHJlY2F0aW9uU3RhdHVzTWFwID0gcmVzdWx0c0RhdGEuZGVwcmVjYXRpb25fc3RhdHVzX21hcDtcbiAgICAgICAgZGVsZXRlIHJlc3VsdHNEYXRhLmRlcHJlY2F0aW9uX3N0YXR1c19tYXA7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdHNEYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSwgJ2VuJyksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdC52YWx1ZS5pZCksIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFuZ3VhZ2U7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdZb3VyIEFjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzTWFuZGF0b3J5Rm9yUmVzdWx0ID0gZnVuY3Rpb24gKGVsZW1lbnRPckF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgdmFyIG1hbmRhdG9yeUVsZW1lbnRPckF0dHJpYnV0ZSA9IFsndHlwZScsICd0aXRsZScsICdpbmRpY2F0b3InXTtcbiAgICAgICAgICAgIHJldHVybiBtYW5kYXRvcnlFbGVtZW50T3JBdHRyaWJ1dGUuaW5jbHVkZXMoZWxlbWVudE9yQXR0cmlidXRlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0VGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgaGFzSW5kaWNhdG9yczogaGFzSW5kaWNhdG9ycyxcbiAgICAgICAgICAgIHJlc3VsdHNEYXRhOiByZXN1bHRzRGF0YSxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBpc01hbmRhdG9yeUZvclJlc3VsdDogaXNNYW5kYXRvcnlGb3JSZXN1bHQsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUaXRsZURlc2NyaXB0aW9uOiBJbmRleF8xLlRpdGxlRGVzY3JpcHRpb24sXG4gICAgICAgIERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmssXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIFJlc3VsdFR5cGU6IEluZGV4XzEuUmVzdWx0VHlwZSxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZGF0YSA9IF9hLmRhdGEsIHR5cGVzID0gX2EudHlwZXMsIGVsZW1lbnREYXRhID0gZGF0YS52YWx1ZSwgcmVzdWx0VHlwZSA9IHR5cGVzLnZhbHVlLnJlc3VsdFR5cGUsIHJlc3VsdFZvY2FidWxhcnkgPSB0eXBlcy52YWx1ZS5yZXN1bHRWb2NhYnVsYXJ5LCBsYW5ndWFnZSA9IHR5cGVzLnZhbHVlLmxhbmd1YWdlO1xuICAgICAgICByZXR1cm4geyBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsIHJlc3VsdFR5cGU6IHJlc3VsdFR5cGUsIHJlc3VsdFZvY2FidWxhcnk6IHJlc3VsdFZvY2FidWxhcnksIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vLyBjb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vIGNvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdHNMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGFjdGl2aXR5ID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmFjdGl2aXR5O1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzdWx0c0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdSZXN1bHQgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdHMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0c0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0cy9wYWdlL1wiKSArIGFjdGl2ZV9wYWdlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBhY3Rpdml0eUlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHJlc3VsdHNEYXRhOiByZXN1bHRzRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0RG9jdW1lbnRMaW5rJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGxEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGxEYXRhOiBkbERhdGEsIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbi8vY29tcG9uZW50c1xudmFyIEhhdmVOb3RBZGRlZFlldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuLy8gaGVscGVyIGZ1bmN0aW9uXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIEhlbHBlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSGVscGVyVGV4dC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRJbmRpY2F0b3InLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSGVscGVyVGV4dDogSGVscGVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBOb3RZZXQ6IEhhdmVOb3RBZGRlZFlldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sVGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5yZXN1bHQ7XG4gICAgICAgIHZhciBpbmRpY2F0b3JEYXRhID0gcmVzdWx0LnZhbHVlLmluZGljYXRvcnMucmV2ZXJzZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5kaWNhdG9yRGF0YTogaW5kaWNhdG9yRGF0YSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgY291bnREb2N1bWVudExpbms6IHV0aWxzXzEuY291bnREb2N1bWVudExpbmssXG4gICAgICAgICAgICBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IG9ubHlEZXByZWNhdGVkU3RhdHVzTWFwOiB1dGlsc18xLm9ubHlEZXByZWNhdGVkU3RhdHVzTWFwIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFJlZmVyZW5jZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlZmVyZW5jZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VEYXRhOiByZWZlcmVuY2VEYXRhLCBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFR5cGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHR5cGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZURhdGE6IHR5cGVEYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRURCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHRkRGF0YTogdGREYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIFRyYW5zYWN0aW9uRWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJhbnNhY3Rpb25FbGVtZW50OiBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgYWN0aXZpdHkgPSBfYS5hY3Rpdml0eSwgdHJhbnNhY3Rpb24gPSBfYS50cmFuc2FjdGlvbjtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1yZWxheGVkIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGl0bGVzXG4gICAgICAgIHZhciB0cmFuc2FjdGlvbkRhdGEgPSB0cmFuc2FjdGlvbi52YWx1ZS50cmFuc2FjdGlvbjtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsICdlbicpLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHRyYW5zYWN0aW9uTGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvdHJhbnNhY3Rpb24vXCIpLmNvbmNhdCh0cmFuc2FjdGlvbi52YWx1ZS5pZCk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1RyYW5zYWN0aW9uIExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvblwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlJY29uID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiAoci50b1N0cmluZygpID09PSAndmFsdWUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fdHlwZScgfHxcbiAgICAgICAgICAgICAgICByLnRvU3RyaW5nKCkgPT09ICd0cmFuc2FjdGlvbl9kYXRlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eVRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRhdGE6IHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5rOiB0cmFuc2FjdGlvbkxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5SWNvbjogaXNNYW5kYXRvcnlJY29uLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbnZhciBIZWxwZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hlbHBlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhlbHBlclRleHQ6IEhlbHBlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sXG4gICAgICAgIEFpZFR5cGU6IEluZGV4XzEuQWlkVHlwZSxcbiAgICAgICAgVHJhbnNhY3Rpb25UeXBlOiBJbmRleF8xLlRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgVHJhbnNhY3Rpb25EYXRlOiBJbmRleF8xLlRyYW5zYWN0aW9uRGF0ZSxcbiAgICAgICAgVmFsdWU6IEluZGV4XzEuVmFsdWUsXG4gICAgICAgIFByb3ZpZGVyT3JnYW5pemF0aW9uOiBJbmRleF8xLlByb3ZpZGVyT3JnYW5pemF0aW9uLFxuICAgICAgICBSZWNlaXZlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5SZWNlaXZlck9yZ2FuaXphdGlvbixcbiAgICAgICAgRGlzYnVyc2VtZW50Q2hhbm5lbDogSW5kZXhfMS5EaXNidXJzZW1lbnRDaGFubmVsLFxuICAgICAgICBTZWN0b3I6IEluZGV4XzEuU2VjdG9yLFxuICAgICAgICBSZWNpcGllbnRDb3VudHJ5OiBJbmRleF8xLlJlY2lwaWVudENvdW50cnksXG4gICAgICAgIFJlY2lwaWVudFJlZ2lvbjogSW5kZXhfMS5SZWNpcGllbnRSZWdpb24sXG4gICAgICAgIEZsb3dUeXBlOiBJbmRleF8xLkZsb3dUeXBlLFxuICAgICAgICBGaW5hbmNlVHlwZTogSW5kZXhfMS5GaW5hbmNlVHlwZSxcbiAgICAgICAgVGllZFN0YXR1czogSW5kZXhfMS5UaWVkU3RhdHVzLFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRVcmw6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaG92ZXJUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcmVjYXRpb25TdGF0dXNNYXA6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcyk7XG4gICAgICAgIGZ1bmN0aW9uIGdldExhbmd1YWdlcyhsYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlLm1hcChmdW5jdGlvbiAoZW50cnkpIHsgcmV0dXJuIGVudHJ5Lmxhbmd1YWdlOyB9KS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsXG4gICAgICAgICAgICBnZXRMYW5ndWFnZXM6IGdldExhbmd1YWdlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG4vLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG52YXIgX2EgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYVswXSwgZGVsZXRlVG9nZ2xlID0gX2FbMV07XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGFjdGl2aXR5ID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmFjdGl2aXR5O1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsICdlbicpLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRyYW5zYWN0aW9uc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3RyYW5zYWN0aW9ucy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3RyYW5zYWN0aW9ucy9wYWdlL1wiKSArIGFjdGl2ZV9wYWdlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRyYW5zYWN0aW9uc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIGFjdGl2aXR5SWQpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdZb3VyIEFjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdUcmFuc2FjdGlvbiBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25zRGF0YTogdHJhbnNhY3Rpb25zRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uQWlkVHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgYXREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF0RGF0YTogYXREYXRhLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGVzY3JpcHRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRkRGF0YTogdGREYXRhLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkRpc2J1cnNlbWVudENoYW5uZWwnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkZpbmFuY2VUeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBmaW5hbmNlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGZpbmFuY2VEYXRhOiBmaW5hbmNlRGF0YSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25GbG93VHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZmxvd0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBmbG93RGF0YTogZmxvd0RhdGEsIHR5cGU6IHR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUHJvdmlkZXJPcmdhbmlzYXRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIFBvRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IFBvRGF0YTogUG9EYXRhLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblJlY2VpdmVyT3JnYW5pc2F0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBQb0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBQb0RhdGE6IFBvRGF0YSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25SZWNpcGllbnRDb3VudHJ5JyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb3VudHJ5ID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY291bnRyeTogY291bnRyeSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25SZWNpcGllbnRSZWdpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvdW50cnkgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBjb3VudHJ5LCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblNlY3RvcicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgc2VjdG9yID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rvcjogc2VjdG9yLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uVGllZFN0YXR1cycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdHNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHNEYXRhOiB0c0RhdGEsIHR5cGU6IHR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uLy4uL2NvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGF0ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRhdGU6IGRhdGUsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB2YWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0F1ZGl0TGlzdGluZycsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGF1ZGl0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGZldGNoQXVkaXRMaXN0KDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQXVkaXRMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvYXVkaXQvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF1ZGl0RGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBhdWRpdERhdGE6IGF1ZGl0RGF0YSwgaXNFbXB0eTogaXNFbXB0eSwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIGZldGNoQXVkaXRMaXN0OiBmZXRjaEF1ZGl0TGlzdCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Rhc2hib2FyZEdyYXBoJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFiZWxzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgcm91bmRlZExhYmVscyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHNob3dHcmFwaExvYWRlciA9ICgwLCB2dWVfMi5pbmplY3QpKCdzaG93R3JhcGhMb2FkZXInKTtcbiAgICAgICAgdmFyIGdyYXBoQW1vdW50ID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2dyYXBoQW1vdW50Jyk7XG4gICAgICAgIHZhciB5YXhpc1RpY2tzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGNoYXJ0ID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgZ3JhcGhDb2xvciA9ICcjMTc5OTdCJztcbiAgICAgICAgdmFyIHRvb2x0aXBUZXh0ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BzLmN1cnJlbnRWaWV3KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncHVibGlzaGVyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBuby4gb2YgcHVibGlzaGVyIHJlZ2lzdHJhdGlvbic7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RvdGFsIG5vLiBvZiBhY3Rpdml0aWVzIGFkZGVkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RvdGFsIG51bWJlciBvZiB1c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjaGFydE9wdGlvbnMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiA1LFxuICAgICAgICAgICAgICAgIHpvb206IHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHhheGlzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDUwLCAvLyBBZGp1c3QgdGhlIGxlZnQgcGFkZGluZyB2YWx1ZSBhcyBuZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXJrZXJzOiB7XG4gICAgICAgICAgICAgICAgc2l6ZTogZ3JhcGhBbW91bnQudmFsdWUubGVuZ3RoID4gMSA/IDAgOiAyLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgICAgICAgICAgICAgIGNvbG9yczogWycjMTc5OTdCJ10sXG4gICAgICAgICAgICAgICAgaG92ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogNiwgLy8gQ3VzdG9taXplIHRoZSBtYXJrZXIgc2l6ZSBvbiBob3ZlclxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3Ryb2tlOiB7XG4gICAgICAgICAgICAgICAgY3VydmU6ICdzdHJhaWdodCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sb3JzOiBbZ3JhcGhDb2xvcl0sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgY3VzdG9tOiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlcmllcyA9IF9hLnNlcmllcywgc2VyaWVzSW5kZXggPSBfYS5zZXJpZXNJbmRleCwgZGF0YVBvaW50SW5kZXggPSBfYS5kYXRhUG9pbnRJbmRleCwgdyA9IF9hLnc7XG4gICAgICAgICAgICAgICAgICAgIHZhciBnZXREYXkgPSBmdW5jdGlvbiAoZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShmb3JtYXR0ZWREYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCI8ZGl2IGNsYXNzPVxcXCJwLTRcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPiBcIi5jb25jYXQoZ2V0RGF5KHcuZ2xvYmFscy5jYXRlZ29yeUxhYmVsc1tkYXRhUG9pbnRJbmRleF0pLCBcIjwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IHRleHQtbi01MCBzcGFjZS14LTQganVzdGlmeS1iZXR3ZWVuXFxcIj48ZGl2PlwiKS5jb25jYXQodG9vbHRpcFRleHQudmFsdWUsIFwiPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZvbnQtYm9sZFxcXCI+XCIpLmNvbmNhdChzZXJpZXNbc2VyaWVzSW5kZXhdW2RhdGFQb2ludEluZGV4XSwgXCI8L2Rpdj48L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlwiKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHhheGlzOiB7XG4gICAgICAgICAgICAgICAgdGlja0Ftb3VudDogMyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIwLCAvLyBJbmNyZWFzZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgbGFzdCB0aWNrIGFuZCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgY2hhcnRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICByb3RhdGU6IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5YXhpczoge1xuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IG1heFZhbHVlLnZhbHVlICsgMyxcbiAgICAgICAgICAgICAgICB0aWNrQW1vdW50OiBtYXhWYWx1ZS52YWx1ZSA+IDQgPyA1IDogbWF4VmFsdWUudmFsdWUgKyAzLFxuICAgICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgc3BhY2luZyBvcHRpb25zXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsXG4gICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDEwLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0LnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX2IgPSAoX2EgPSBjaGFydC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNoYXJ0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iudy5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kZWRMYWJlbHMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQgPCBsYWJlbHMudmFsdWUubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3VuZGVkTGFiZWxzLnZhbHVlLmluY2x1ZGVzKE1hdGgucm91bmQobGFiZWxzLnZhbHVlW2NvdW50XSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kZWRMYWJlbHMudmFsdWUucHVzaChNYXRoLnJvdW5kKGxhYmVscy52YWx1ZVtjb3VudF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm91bmRlZExhYmVscy52YWx1ZVtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIHNlcmllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEZXNrdG9wcycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgICAgIGRhdGE6IGdyYXBoQW1vdW50LnZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZ3JhcGhBbW91bnQudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1heFZhbHVlLnZhbHVlID0gMDtcbiAgICAgICAgICAgIHlheGlzVGlja3MudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JhcGhBbW91bnQudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4VmFsdWUudmFsdWUgPCBncmFwaEFtb3VudC52YWx1ZVtpXVsneSddKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heFZhbHVlLnZhbHVlID0gZ3JhcGhBbW91bnQudmFsdWVbaV1bJ3knXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXJpZXNbJ2RhdGEnXSA9IGdyYXBoQW1vdW50LnZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhYmVsczogbGFiZWxzLCByb3VuZGVkTGFiZWxzOiByb3VuZGVkTGFiZWxzLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgZ3JhcGhBbW91bnQ6IGdyYXBoQW1vdW50LCB5YXhpc1RpY2tzOiB5YXhpc1RpY2tzLCBtYXhWYWx1ZTogbWF4VmFsdWUsIGNoYXJ0OiBjaGFydCwgZ3JhcGhDb2xvcjogZ3JhcGhDb2xvciwgcHJvcHM6IHByb3BzLCB0b29sdGlwVGV4dDogdG9vbHRpcFRleHQsIGNoYXJ0T3B0aW9uczogY2hhcnRPcHRpb25zLCBzZXJpZXM6IHNlcmllcywgc3Bpbm5lckxvYWRlcjogc3Bpbm5lckxvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Rhc2hib2FyZExpc3RTZWN0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlRGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFibGVIZWFkZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGFydERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbmREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsndGFibGVOYXYnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYiwgX2M7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2aXR5TmF2TGlzdCA9IFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY3Rpdml0eSBTdGF0dXMnLCBhcGlQYXJhbXM6ICdzdGF0dXMnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZpdHkgQWRkZWQnLCBhcGlQYXJhbXM6ICdtZXRob2QnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZpdHkgQ29tcGxldGlvbicsIGFwaVBhcmFtczogJ2NvbXBsZXRlbmVzcycgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlck5hdkxpc3QgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiAnT3JnYW5pc2F0aW9uIFR5cGUnLCBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdEYXRhIExpY2VuY2UnLCBhcGlQYXJhbXM6ICdkYXRhLWxpY2Vuc2UnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQ291bnRyeScsIGFwaVBhcmFtczogJ2NvdW50cnknIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnUmVnaXN0cmF0aW9uIFR5cGUnLCBhcGlQYXJhbXM6ICdyZWdpc3RyYXRpb24tdHlwZScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTZXR1cCBDb21wbGV0ZW5lc3MnLCBhcGlQYXJhbXM6ICdzZXR1cCcgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGN1cnJlbnRwYWdlID0gKDAsIHZ1ZV8yLnJlZikoMSk7XG4gICAgICAgIHZhciByZXNldHBhZ2luYXRpb24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSAoMCwgdnVlXzIucmVmKSh7IG9yZGVyQnk6ICcnLCBzb3J0OiAnJyB9KTtcbiAgICAgICAgdmFyIHNvcnRFbGVtZW50ID0gKDAsIHZ1ZV8yLnJlZikoeyBsYWJlbDogJycsIGFwaVBhcmFtczogJycgfSk7XG4gICAgICAgIHZhciB1c2VyTmF2bGlzdCA9IFt7IGxhYmVsOiAndXNlcicsIGFwaVBhcmFtczogJycgfV07XG4gICAgICAgIHZhciBjdXJyZW50SXRlbSA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFR5cGUnLFxuICAgICAgICAgICAgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGN1cnJlbnROYXZMaXN0ID0gKDAsIHZ1ZV8yLnJlZikocHVibGlzaGVyTmF2TGlzdCk7XG4gICAgICAgIHZhciB0aXRsZSA9ICgwLCB2dWVfMi5yZWYpKChfYiA9IGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGFiZWwpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50TmF2TGlzdC52YWx1ZVswXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc29ydFRhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudEl0ZW0udmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRyaWdnZXJwYWdpbmF0aW9uID0gZnVuY3Rpb24gKHBhZ2UpIHtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gcGFnZTtcbiAgICAgICAgICAgIHJlc2V0cGFnaW5hdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudEl0ZW0udmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmaWx0ZXIudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc2V0cGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IDE7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5jdXJyZW50VmlldzsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSAxO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW0udmFsdWUgPSB7IGxhYmVsOiAnQWN0aXZpdHkgU3RhdHVzJywgYXBpUGFyYW1zOiAnc3RhdHVzJyB9O1xuICAgICAgICAgICAgICAgIGN1cnJlbnROYXZMaXN0LnZhbHVlID0gYWN0aXZpdHlOYXZMaXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW0udmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFR5cGUnLFxuICAgICAgICAgICAgICAgICAgICBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TmF2TGlzdC52YWx1ZSA9IHB1Ymxpc2hlck5hdkxpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50TmF2TGlzdC52YWx1ZSA9IHVzZXJOYXZsaXN0O1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3VzZXInLFxuICAgICAgICAgICAgICAgICAgICBhcGlQYXJhbXM6ICcnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50TmF2TGlzdC52YWx1ZVswXSk7XG4gICAgICAgICAgICBhY3RpdmVDbGFzcy52YWx1ZSA9IChfYSA9IGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFiZWw7XG4gICAgICAgICAgICB0aXRsZS52YWx1ZSA9IChfYiA9IGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGFiZWw7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2hvd05vRGF0YUNvbXBvbmVudCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAocHJvcHMudGFibGVEYXRhLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICghKHRpdGxlLnZhbHVlID09PSAnUmVnaXN0cmF0aW9uIFR5cGUnIHx8XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnZhbHVlID09PSAnU2V0dXAgQ29tcGxldGVuZXNzJykgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYiA9IChfYSA9IHByb3BzLnRhYmxlRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpID09PSAwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYWN0aXZlQ2xhc3MgPSAoMCwgdnVlXzIucmVmKSgoX2MgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxhYmVsKTtcbiAgICAgICAgdmFyIE5hdmlnYXRlV2l0aEZpbHRlciA9IGZ1bmN0aW9uIChwYWdlLCBrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoISFwcm9wcy5zdGFydERhdGUgJiYgISFwcm9wcy5lbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9cIi5jb25jYXQocGFnZSwgXCI/XCIpLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCIuY29uY2F0KHBhZ2UsIFwiP1wiKS5jb25jYXQoa2V5LCBcIj1cIikuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZldGNoVGFibGVEYXRhID0gZnVuY3Rpb24gKGl0ZW0sIHRhYkNoYW5nZSkge1xuICAgICAgICAgICAgaWYgKHRhYkNoYW5nZSA9PT0gdm9pZCAwKSB7IHRhYkNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGFjdGl2ZUNsYXNzLnZhbHVlID0gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgdGl0bGUudmFsdWUgPSBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICBzb3J0RWxlbWVudC52YWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICBlbWl0KCd0YWJsZU5hdicsIGl0ZW0sIGZpbHRlciwgY3VycmVudHBhZ2UudmFsdWUsIHRhYkNoYW5nZSk7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvZ2dsZVNvcnQgPSBmdW5jdGlvbiAob3JkZXIpIHtcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZS5zb3J0ID09PSAnYXNjJ1xuICAgICAgICAgICAgICAgID8gKGZpbHRlci52YWx1ZS5zb3J0ID0gJ2Rlc2MnKVxuICAgICAgICAgICAgICAgIDogKGZpbHRlci52YWx1ZS5zb3J0ID0gJ2FzYycpO1xuICAgICAgICAgICAgZmlsdGVyLnZhbHVlLm9yZGVyQnkgPSBvcmRlcjtcbiAgICAgICAgICAgIHNvcnRUYWJsZSgpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY29tcGxldGVOZXNzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2NvbXBsZXRlTmVzcycpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uVHlwZSA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWdpc3RyYXRpb25UeXBlJyk7XG4gICAgICAgIHZhciBzaG93VGFibGVMb2FkZXIgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2hvd1RhYmxlTG9hZGVyJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgYWN0aXZpdHlOYXZMaXN0OiBhY3Rpdml0eU5hdkxpc3QsIHB1Ymxpc2hlck5hdkxpc3Q6IHB1Ymxpc2hlck5hdkxpc3QsIGN1cnJlbnRwYWdlOiBjdXJyZW50cGFnZSwgcmVzZXRwYWdpbmF0aW9uOiByZXNldHBhZ2luYXRpb24sIGZpbHRlcjogZmlsdGVyLCBzb3J0RWxlbWVudDogc29ydEVsZW1lbnQsIHVzZXJOYXZsaXN0OiB1c2VyTmF2bGlzdCwgY3VycmVudEl0ZW06IGN1cnJlbnRJdGVtLCBjdXJyZW50TmF2TGlzdDogY3VycmVudE5hdkxpc3QsIHRpdGxlOiB0aXRsZSwgc29ydFRhYmxlOiBzb3J0VGFibGUsIHRyaWdnZXJwYWdpbmF0aW9uOiB0cmlnZ2VycGFnaW5hdGlvbiwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgYWN0aXZlQ2xhc3M6IGFjdGl2ZUNsYXNzLCBOYXZpZ2F0ZVdpdGhGaWx0ZXI6IE5hdmlnYXRlV2l0aEZpbHRlciwgZmV0Y2hUYWJsZURhdGE6IGZldGNoVGFibGVEYXRhLCB0b2dnbGVTb3J0OiB0b2dnbGVTb3J0LCBjb21wbGV0ZU5lc3M6IGNvbXBsZXRlTmVzcywgcmVnaXN0cmF0aW9uVHlwZTogcmVnaXN0cmF0aW9uVHlwZSwgc2hvd1RhYmxlTG9hZGVyOiBzaG93VGFibGVMb2FkZXIsIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LCB0cnVuY2F0ZVRleHQ6IHV0aWxzXzEudHJ1bmNhdGVUZXh0LCBUYWJsZUxvYWRlckNvbXBvbmVudDogVGFibGVMb2FkZXJDb21wb25lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWVcIikpO1xudmFyIERhc2hib2FyZExpc3RTZWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZVwiKSk7XG52YXIgRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIikpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRQYWdlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBvbGRlc3REYXRlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY3VycmVudE5hdiA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFR5cGUnLFxuICAgICAgICAgICAgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRhYmxlRGF0YSA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIERhdGVMYWJlbCA9ICgwLCB2dWVfMi5yZWYpKCdSZWdpc3RlcmVkIGRhdGU6Jyk7XG4gICAgICAgIHZhciBzdGFydERhdGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBlbmREYXRlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZ3JhcGhBbW91bnQgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBncmFwaFRvdGFsID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzaG93VGFibGVMb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93R3JhcGhMb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRhdGVMYWJlbCA9IHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcjogJ1JlZ2lzdGVyZWQgZGF0ZTonLFxuICAgICAgICAgICAgYWN0aXZpdHk6ICdBY3Rpdml0eSBBZGRlZCBvbjonLFxuICAgICAgICAgICAgdXNlcjogJ1VzZXIgQ3JlYXRlZCBEYXRlOicsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBjdXJyZW50VmlldyA9ICgwLCB2dWVfMi5yZWYpKCdwdWJsaXNoZXInKTtcbiAgICAgICAgdmFyIGNvbXBsZXRlTmVzcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25UeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGhhbmRsZUNoYW5nZVRhYmxlTmF2ID0gZnVuY3Rpb24gKGl0ZW0sIGZpbHRlciwgcGFnZSwgdGFiQ2hhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGFiQ2hhbmdlID09PSB2b2lkIDApIHsgdGFiQ2hhbmdlID0gdHJ1ZTsgfVxuICAgICAgICAgICAgaWYgKHRhYkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZS5vcmRlckJ5ID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnZhbHVlLnNvcnQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnROYXYudmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoZmlsdGVyLnZhbHVlLCBwYWdlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RGF0ZVJhbmdlRGF0ZSgnJywgJycpO1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoKTtcbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHZhciBkb3dubG9hZFJlcG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlLnZhbHVlICYmIGVuZERhdGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdzdGFydF9kYXRlJywgc3RhcnREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9kb3dubG9hZFwiKSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IFwiXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi1yZXBvcnQuY3N2XCIpO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ3JhcGhEYXRhRm9ybWF0dGVyID0gZnVuY3Rpb24gKGdyYXBoRGF0YSkge1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0ZSBpbiBncmFwaERhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTU1NIEREIFlZWVknKSxcbiAgICAgICAgICAgICAgICAgICAgeTogZ3JhcGhEYXRhW2RhdGVdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZ3JhcGhBbW91bnQudmFsdWUucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZldGNoR3JhcGhEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0dyYXBoTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdzdGFydF9kYXRlJywgc3RhcnREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2VuZF9kYXRlJywgZW5kRGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL2NvdW50L1wiKSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBncmFwaEFtb3VudC52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIGdyYXBoVG90YWwudmFsdWUgPSByZXMuZGF0YS5kYXRhWydjb3VudCddO1xuICAgICAgICAgICAgICAgIGdyYXBoRGF0YUZvcm1hdHRlcihyZXMuZGF0YS5kYXRhWydncmFwaCddKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNob3dHcmFwaExvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0LCBlbmQsIHR5cGUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9ICcnOyB9XG4gICAgICAgICAgICBzdGFydERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdHlwZTtcbiAgICAgICAgICAgIGlmIChzdGFydCAhPSAnMTk5MC0xMi0zMScpIHtcbiAgICAgICAgICAgICAgICBzdGFydERhdGUudmFsdWUgPSBzdGFydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZERhdGUudmFsdWUgPSBlbmQ7XG4gICAgICAgICAgICBpZiAoY3VycmVudFZpZXcudmFsdWUgIT09ICd1c2VyJykge1xuICAgICAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGN1cnJlbnRWaWV3LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBEYXRlTGFiZWwudmFsdWUgPSAoX2EgPSBkYXRlTGFiZWxbY3VycmVudFZpZXcudmFsdWVdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjdXJyZW50Vmlldy52YWx1ZTtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgZW5kRGF0ZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmZXRjaFRhYmxlRGF0YSA9IGZ1bmN0aW9uIChmaWx0ZXIsIHBhZ2UpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHZvaWQgMCkgeyBmaWx0ZXIgPSB7IG9yZGVyQnk6ICcnLCBzb3J0OiAnJyB9OyB9XG4gICAgICAgICAgICBpZiAocGFnZSA9PT0gdm9pZCAwKSB7IHBhZ2UgPSAnMSc7IH1cbiAgICAgICAgICAgIHNob3dUYWJsZUxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgdmFyIGFjdGl2ZVRhYiA9IGN1cnJlbnROYXYudmFsdWVbJ2FwaVBhcmFtcyddO1xuICAgICAgICAgICAgaWYgKGZpbHRlci5vcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsICgwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShmaWx0ZXIub3JkZXJCeSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncGFnZScsIHBhZ2UpO1xuICAgICAgICAgICAgaWYgKGZpbHRlci5zb3J0KSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgZmlsdGVyLnNvcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZS52YWx1ZSAmJiBlbmREYXRlLnZhbHVlICYmIGN1cnJlbnROYXYudmFsdWUubGFiZWwgIT09ICd1c2VyJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0X2RhdGUnLCBzdGFydERhdGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2VuZF9kYXRlJywgZW5kRGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvXCIpLmNvbmNhdChhY3RpdmVUYWIpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlldy52YWx1ZSA9PT0gJ3B1Ymxpc2hlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYiAhPT0gJ3NldHVwJyAmJiBhY3RpdmVUYWIgIT09ICdyZWdpc3RyYXRpb24tdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBEYXRhID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29kZUxpc3QgPSAoX2EgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29kZUxpc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0TGVuZ3RoID0gKF9jID0gKF9iID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnBhZ2luYXRlZERhdGEuZGF0YS5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1JblBhZ2luYXRlZERhdGEgPSAoX2QgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucGFnaW5hdGVkRGF0YS5kYXRhW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwdWJsaXNoZXJUeXBlS2V5ID0gaXRlbUluUGFnaW5hdGVkRGF0YVsoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoYWN0aXZlVGFiKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb2RlTGlzdFtwdWJsaXNoZXJUeXBlS2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHB1Ymxpc2hlclR5cGVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBpdGVtSW5QYWdpbmF0ZWREYXRhLmNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZS5kYXRhID0gdGVtcERhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWN0aXZlVGFiID09PSAncmVnaXN0cmF0aW9uLXR5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyYXRpb25UeXBlLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVOZXNzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZpZXcudmFsdWUgPT09ICd1c2VyJyB8fCBjdXJyZW50Vmlldy52YWx1ZSA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNob3dUYWJsZUxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY29tcGxldGVOZXNzJywgY29tcGxldGVOZXNzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdyZWdpc3RyYXRpb25UeXBlJywgcmVnaXN0cmF0aW9uVHlwZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZ3JhcGhBbW91bnQnLCBncmFwaEFtb3VudCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZ3JhcGhUb3RhbCcsIGdyYXBoVG90YWwpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Nob3dUYWJsZUxvYWRlcicsIHNob3dUYWJsZUxvYWRlcik7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnc2hvd0dyYXBoTG9hZGVyJywgc2hvd0dyYXBoTG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdjdXJyZW50VmlldycsIGN1cnJlbnRWaWV3KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgY3VycmVudE5hdjogY3VycmVudE5hdiwgdGFibGVEYXRhOiB0YWJsZURhdGEsIERhdGVMYWJlbDogRGF0ZUxhYmVsLCBzdGFydERhdGU6IHN0YXJ0RGF0ZSwgZW5kRGF0ZTogZW5kRGF0ZSwgZ3JhcGhBbW91bnQ6IGdyYXBoQW1vdW50LCBncmFwaFRvdGFsOiBncmFwaFRvdGFsLCBzaG93VGFibGVMb2FkZXI6IHNob3dUYWJsZUxvYWRlciwgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIGRhdGVUeXBlOiBkYXRlVHlwZSwgZGF0ZUxhYmVsOiBkYXRlTGFiZWwsIGN1cnJlbnRWaWV3OiBjdXJyZW50VmlldywgY29tcGxldGVOZXNzOiBjb21wbGV0ZU5lc3MsIHJlZ2lzdHJhdGlvblR5cGU6IHJlZ2lzdHJhdGlvblR5cGUsIGhhbmRsZUNoYW5nZVRhYmxlTmF2OiBoYW5kbGVDaGFuZ2VUYWJsZU5hdiwgcHJvcHM6IHByb3BzLCBkb3dubG9hZFJlcG9ydDogZG93bmxvYWRSZXBvcnQsIGdyYXBoRGF0YUZvcm1hdHRlcjogZ3JhcGhEYXRhRm9ybWF0dGVyLCBmZXRjaEdyYXBoRGF0YTogZmV0Y2hHcmFwaERhdGEsIHNldERhdGVSYW5nZURhdGU6IHNldERhdGVSYW5nZURhdGUsIGZldGNoVGFibGVEYXRhOiBmZXRjaFRhYmxlRGF0YSwgRGFzaGJvYXJkU3RhdHNTZWN0aW9uOiBEYXNoYm9hcmRTdGF0c1NlY3Rpb25fdnVlXzEuZGVmYXVsdCwgRGFzaGJvYXJkTGlzdFNlY3Rpb246IERhc2hib2FyZExpc3RTZWN0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQsIEJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEYXNoYm9hcmRHcmFwaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRHcmFwaC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Rhc2hib2FyZFN0YXRzU2VjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRvdGFsID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGluYWN0aXZlUHVibGlzaGVyID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsYXN0UmVnaXN0ZXJlZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsYXN0VXBkYXRlZFB1Ymxpc2hlciA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsYXN0VXBkYXRlZEFjdGl2aXR5ID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKHsgc3RhdHVzOiBmYWxzZSwgdGV4dDogJycgfSk7XG4gICAgICAgIHZhciBzaG93U3RhdHNMb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBncmFwaFRvdGFsID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2dyYXBoVG90YWwnKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclN0YXRzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgc2hvd1B1Ymxpc2hlclN0YXRzID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBzaG93R3JhcGhMb2FkZXIgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2hvd0dyYXBoTG9hZGVyJyk7XG4gICAgICAgIHZhciB1c2VySWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFN0YXRzRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1hdERhdGUgPSBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ01NTU0gREQsIFlZWVknKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByb3h5VXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZS5zdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnRleHQgPSAnUHJveHkgTG9naW4nO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvcHJveHktb3JnYW5pc2F0aW9uL1wiLmNvbmNhdCh1c2VySWQudmFsdWUpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnL2FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY3VycmVudFZpZXc7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoU3RhdHNEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmV0Y2hTdGF0c0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93U3RhdHNMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9kYXNoYm9hcmQvXCIuY29uY2F0KHByb3BzLmN1cnJlbnRWaWV3LCBcIi9zdGF0c1wiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG90YWwudmFsdWUgPSByZXNwb25zZS5kYXRhLnRvdGFsQ291bnQ7XG4gICAgICAgICAgICAgICAgbGFzdFJlZ2lzdGVyZWQudmFsdWUgPSByZXNwb25zZS5kYXRhLmxhc3RSZWdpc3RlcmVkUHVibGlzaGVyO1xuICAgICAgICAgICAgICAgIGxhc3RVcGRhdGVkUHVibGlzaGVyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5sYXN0VXBkYXRlZFB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICBsYXN0VXBkYXRlZEFjdGl2aXR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5sYXN0VXBkYXRlZEFjdGl2aXR5O1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jdXJyZW50VmlldyA9PT0gJ3B1Ymxpc2hlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcklkLnZhbHVlID0gbGFzdFJlZ2lzdGVyZWQudmFsdWUudXNlcl9pZDtcbiAgICAgICAgICAgICAgICAgICAgaW5hY3RpdmVQdWJsaXNoZXIudmFsdWUgPSByZXNwb25zZS5kYXRhLmluQWN0aXZlUHVibGlzaGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY3VycmVudFZpZXcgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcklkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS51c2VySWQ7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEucHVibGlzaGVyV2l0aG91dEFjdGl2aXR5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY3VycmVudFZpZXcgPT09ICd1c2VyJykge1xuICAgICAgICAgICAgICAgICAgICBzaG93UHVibGlzaGVyU3RhdHMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJTdGF0cy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hvd1N0YXRzTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCB0b3RhbDogdG90YWwsIGluYWN0aXZlUHVibGlzaGVyOiBpbmFjdGl2ZVB1Ymxpc2hlciwgcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5OiBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHksIGxhc3RSZWdpc3RlcmVkOiBsYXN0UmVnaXN0ZXJlZCwgbGFzdFVwZGF0ZWRQdWJsaXNoZXI6IGxhc3RVcGRhdGVkUHVibGlzaGVyLCBsYXN0VXBkYXRlZEFjdGl2aXR5OiBsYXN0VXBkYXRlZEFjdGl2aXR5LCBsb2FkZXI6IGxvYWRlciwgc2hvd1N0YXRzTG9hZGVyOiBzaG93U3RhdHNMb2FkZXIsIGdyYXBoVG90YWw6IGdyYXBoVG90YWwsIHB1Ymxpc2hlclN0YXRzOiBwdWJsaXNoZXJTdGF0cywgc2hvd1B1Ymxpc2hlclN0YXRzOiBzaG93UHVibGlzaGVyU3RhdHMsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCB1c2VySWQ6IHVzZXJJZCwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgcHJveHlVc2VyOiBwcm94eVVzZXIsIGZldGNoU3RhdHNEYXRhOiBmZXRjaFN0YXRzRGF0YSwgRGFzaGJvYXJkR3JhcGg6IERhc2hib2FyZEdyYXBoX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgdHJ1bmNhdGVUZXh0OiB1dGlsc18xLnRydW5jYXRlVGV4dCwgU2hpbW1lckxvYWRpbmc6IFNoaW1tZXJMb2FkaW5nX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5VXBsb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgZmlsZSA9ICgwLCB2dWVfMi5yZWYpKCksIGVycm9yID0gKDAsIHZ1ZV8yLnJlZikoJycpLCBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSksIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ1VwbG9hZGluZyAuY3N2Ly54bWwgZmlsZSc7XG4gICAgICAgICAgICB2YXIgYWN0aXZpdHkgPSBmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCA/IGZpbGUudmFsdWUuZmlsZXNbMF0gOiAnJztcbiAgICAgICAgICAgIHZhciBjb25maWcgPSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpdml0eScsIGFjdGl2aXR5KTtcbiAgICAgICAgICAgIGVycm9yLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydCcsIGRhdGEsIGNvbmZpZylcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCAmJiAoKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQvbGlzdCc7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSBPYmplY3QudmFsdWVzKHJlcy5kYXRhLmVycm9ycykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSAnRXJyb3IgaGFzIG9jY3VyZWQgd2hpbGUgdXBsb2FkaW5nIGZpbGUuJztcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkRXhjZWwoKSB7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiAnaW1wb3J0L2Rvd25sb2FkL2NzdicsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAnSW1wb3J0X0FjdGl2aXR5X0NTVl9UZW1wbGF0ZS5jc3YnO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGZpbGU6IGZpbGUsIGVycm9yOiBlcnJvciwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGUsIGRvd25sb2FkRXhjZWw6IGRvd25sb2FkRXhjZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIFB1Ymxpc2hTZWxlY3RlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5WGxzVXBsb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB4bHNJbmRpY2F0b3JNb3VudGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHVwbG9hZFR5cGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RG93bmxvYWRDb2RlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0RhdGEgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q2FuY2VsTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGxWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVwbG9hZENvbXBsZXRlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxDb3VudCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwcm9jZXNzZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgZmlsZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBlcnJvciA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmcgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi52YWx1ZSA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChkaXJlY3Rpb24udmFsdWUgPSAnZGVzYycpXG4gICAgICAgICAgICAgICAgOiAoZGlyZWN0aW9uLnZhbHVlID0gJ2FzYycpO1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEsIGRpcmVjdGlvbi52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IDYpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG1hcEFjdGl2aXR5TmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnQmFzaWMgQWN0aXZpdHkgRWxlbWVudHMnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUGVyaW9kJztcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0luZGljYXRvcnMgZXhjZXB0IFBlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVzdWx0JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdSZXN1bHQgZXhjZXB0IEluZGljYXRvcnMgYW5kIFBlcmlvZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBhY3Rpdml0eUxlbmd0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICEoKF9hID0gdXBsb2FkVHlwZSA9PT0gbnVsbCB8fCB1cGxvYWRUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGxvYWRUeXBlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja0Rvd25sb2FkO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUNvdW50LnZhbHVlID0gcmVzLmRhdGEuZmlsZV9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEFwaVVybC52YWx1ZSA9IHJlcy5kYXRhLnVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9ICEhcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyZXMuZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgZG93bmxvYWRDb2RlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFwaVVybCwgYWN0aXZpdGllc18xLCByZXEsIGJsb2IsIGxpbms7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQtY29kZXMvP2FjdGl2aXRpZXM9YWxsJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNfMSA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC1jb2Rlcy8/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXNfMSwgXCJdXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9iID0gbmV3IEJsb2IoW3JlcS5kYXRhXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAnaWRlbnRpZmllcnMueGxzeCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmNhbmNlbFVwbG9hZDtcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2FuY2VsSW1wb3J0KCk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGltcG9ydEFueXdheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvaW1wb3J0L3hsc1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB4bHNEYXRhLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBsb2FkRmlsZSgpO1xuICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2VsZWN0QWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGxWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IE9iamVjdC52YWx1ZXMoYWN0aXZpdGllcy5kYXRhKS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChhY3Rpdml0aWVzLmRhdGFbaV1bJ2lkJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgaWRzKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHVwbG9hZEZpbGUoKSB7XG4gICAgICAgICAgICBpZiAoIXhsc0RhdGEudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSAnRmV0Y2hpbmcgLnhscyBmaWxlJztcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdHkgPSBmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCA/IGZpbGUudmFsdWUuZmlsZXNbMF0gOiAnJztcbiAgICAgICAgICAgICAgICB2YXIgeGxzVHlwZSA9IHVwbG9hZFR5cGU7XG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgYWN0aXZpdHkpO1xuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCd4bHNUeXBlJywgeGxzVHlwZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgLnBvc3QoJy9pbXBvcnQveGxzJywgZGF0YSwgY29uZmlnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoICYmICgoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1Y2Nlc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9ycyAmJiBPYmplY3QudmFsdWVzKHJlcy5kYXRhLmVycm9ycykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSAnRXJyb3IgaGFzIG9jY3VyZWQgd2hpbGUgdXBsb2FkaW5nIGZpbGUuJztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRUeXBlLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZpbGUudmFsdWUudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbE1vZGVsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaEFjdGl2aXRpZXMoYWN0aXZlX3BhZ2UsIGRpcmVjdGlvbikge1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gdm9pZCAwKSB7IGRpcmVjdGlvbiA9ICcnOyB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9wYWdlL1wiLmNvbmNhdChhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNicpO1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCAndXBkYXRlZF9hdCcpO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VhcmNoVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdxJywgc2VhcmNoVmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwsIHsgcGFyYW1zOiBwYXJhbXMgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FuY2VsSW1wb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGxvYWRUeXBlLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgZmlsZS52YWx1ZS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvbGxpbmdGb3JYbHNTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdGF0dXMgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2ltcG9ydC94bHMvc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tZXNzYWdlKSA9PT0gJ1N0YXJ0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IChfYiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b3RhbF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gKF9jID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnByb2Nlc3NlZF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9ICEoKF9kID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfZSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9mID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLm1lc3NhZ2UpID09PSAnUHJvY2Vzc2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKChfaCA9IChfZyA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuZGF0YSkgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLnN1Y2Nlc3MpIHx8ICgoX2sgPSAoX2ogPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLmRhdGEpID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5tZXNzYWdlKSA9PT0gJ0NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX20gPSAoX2wgPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9sLmRhdGEpID09PSBudWxsIHx8IF9tID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbS5tZXNzYWdlKSA9PT0gJ0NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrWGxzc3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2ltcG9ydC94bHMvcHJvZ3Jlc3Nfc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaDtcbiAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZS52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY3VycmVudEFjdGl2aXR5LnZhbHVlID0gbWFwQWN0aXZpdHlOYW1lKGFjdGl2aXR5TmFtZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoKChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdGF0dXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5zdGF0dXMpID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9oID0gKF9nID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5zdGF0dXMpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JYbHNTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdhY3Rpdml0eUxlbmd0aCcsIGFjdGl2aXR5TGVuZ3RoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdjb21wbGV0ZWQnLCB1cGxvYWRDb21wbGV0ZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncHJvY2Vzc2luZycsIHByb2Nlc3NpbmcpO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNvbXBsZXRlWGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG93bmxvYWRDb21wbGV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgeGxzSW5kaWNhdG9yTW91bnRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEpO1xuICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWRTdGF0dXMoKTtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICB4bHNJbmRpY2F0b3JNb3VudGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRmFpbGVkTWVzc2FnZScsIHhsc0ZhaWxlZE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2FjdGl2aXR5TGVuZ3RoJywgYWN0aXZpdHlMZW5ndGgpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0luZGljYXRvck1vdW50ZWQnLCB4bHNJbmRpY2F0b3JNb3VudGVkKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdkb3dubG9hZGluZycsIGRvd25sb2FkaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNEb3dubG9hZFN0YXR1cycsIHhsc0Rvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdkb3dubG9hZEFwaVVybCcsIGRvd25sb2FkQXBpVXJsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdhY3Rpdml0aWVzJywgcHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2ZpbGVDb3VudCcsIGZpbGVDb3VudCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHhsc0luZGljYXRvck1vdW50ZWQ6IHhsc0luZGljYXRvck1vdW50ZWQsIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsIHVwbG9hZFR5cGU6IHVwbG9hZFR5cGUsIHNob3dEb3dubG9hZERyb3Bkb3duOiBzaG93RG93bmxvYWREcm9wZG93biwgYWN0aXZpdHlOYW1lOiBhY3Rpdml0eU5hbWUsIGZpbGVDb3VudDogZmlsZUNvdW50LCB4bHNEb3dubG9hZFN0YXR1czogeGxzRG93bmxvYWRTdGF0dXMsIGRvd25sb2FkQ29tcGxldGVkOiBkb3dubG9hZENvbXBsZXRlZCwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHNob3dEb3dubG9hZENvZGU6IHNob3dEb3dubG9hZENvZGUsIGlzRW1wdHk6IGlzRW1wdHksIHhsc0ZhaWxlZDogeGxzRmFpbGVkLCBjdXJyZW50QWN0aXZpdHk6IGN1cnJlbnRBY3Rpdml0eSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHhsc0RhdGE6IHhsc0RhdGEsIHNob3dDYW5jZWxNb2RlbDogc2hvd0NhbmNlbE1vZGVsLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBzZWxlY3RBbGxWYWx1ZTogc2VsZWN0QWxsVmFsdWUsIHVwbG9hZENvbXBsZXRlOiB1cGxvYWRDb21wbGV0ZSwgdG90YWxDb3VudDogdG90YWxDb3VudCwgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZENvdW50LCBmaWxlOiBmaWxlLCBlcnJvcjogZXJyb3IsIGxvYWRlcjogbG9hZGVyLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCBzdG9yZTogc3RvcmUsIHNlYXJjaFZhbHVlOiBzZWFyY2hWYWx1ZSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIHByb2Nlc3Npbmc6IHByb2Nlc3NpbmcsIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sIGRvd25sb2FkQXBpVXJsOiBkb3dubG9hZEFwaVVybCwgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLCBwYTogcGEsIG1hcEFjdGl2aXR5TmFtZTogbWFwQWN0aXZpdHlOYW1lLCBhY3Rpdml0eUxlbmd0aDogYWN0aXZpdHlMZW5ndGgsIGNoZWNrRG93bmxvYWRTdGF0dXM6IGNoZWNrRG93bmxvYWRTdGF0dXMsIGRvd25sb2FkQ29kZTogZG93bmxvYWRDb2RlLCBpbXBvcnRBbnl3YXk6IGltcG9ydEFueXdheSwgc2VsZWN0QWxsOiBzZWxlY3RBbGwsIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGUsIGZldGNoQWN0aXZpdGllczogZmV0Y2hBY3Rpdml0aWVzLCBjYW5jZWxJbXBvcnQ6IGNhbmNlbEltcG9ydCwgcG9sbGluZ0Zvclhsc1N0YXR1czogcG9sbGluZ0Zvclhsc1N0YXR1cywgY2hlY2tYbHNzdGF0dXM6IGNoZWNrWGxzc3RhdHVzLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFhsc1VwbG9hZEluZGljYXRvcjogWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LCBQdWJsaXNoU2VsZWN0ZWQ6IFB1Ymxpc2hTZWxlY3RlZF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgSW1wb3J0UGxhY2Vob2xkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlXCIpKTtcbnZhciBMaXN0RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9MaXN0RWxlbWVudC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRMaXN0JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBzZWxlY3RlZENvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzTGVuZ3RoID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ1BsZWFzZSBXYWl0Jyk7XG4gICAgICAgIHZhciB0YWJsZVJvdyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHRhYmxlV2lkdGggPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0aW1lcjtcbiAgICAgICAgdmFyIGdldERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sICgwLCB2dWVfMi5uZXh0VGljaykoKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlV2lkdGgudmFsdWUgPSB0YWJsZVJvdyA9PT0gbnVsbCB8fCB0YWJsZVJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFibGVSb3cudmFsdWVbJzAnXS5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSAnUGxlYXNlIFdhaXQnO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KCcvaW1wb3J0L2NoZWNrX3N0YXR1cycpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXMuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHJlcy5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdlcnJvcicgfHwgKCFyZXMuZGF0YS5kYXRhICYmIGNvdW50ID49IDQwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChnZXREaW1lbnNpb25zLCAyMDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcyhhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXRpZXNbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgLSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMpLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGltcG9ydEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ0ltcG9ydGluZyAuY3N2Ly54bWwgZmlsZSc7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pbXBvcnQvYWN0aXZpdHknLCB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGZpbGV0eXBlOiAnY3N2JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgYWN0aXZpdGllc0xlbmd0aDogYWN0aXZpdGllc0xlbmd0aCwgbG9hZGVyOiBsb2FkZXIsIHNlbGVjdEFsbDogc2VsZWN0QWxsLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCB0YWJsZVJvdzogdGFibGVSb3csIHRhYmxlV2lkdGg6IHRhYmxlV2lkdGgsIHRpbWVyOiB0aW1lciwgZ2V0RGltZW5zaW9uczogZ2V0RGltZW5zaW9ucywgdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzOiB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIGltcG9ydEFjdGl2aXRpZXM6IGltcG9ydEFjdGl2aXRpZXMsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgUGxhY2Vob2xkZXI6IEltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xLmRlZmF1bHQsIExpc3RFbGVtZW50OiBMaXN0RWxlbWVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0ltcG9ydFBsYWNlaG9sZGVyJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnTGlzdEVsZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnc2VsZWN0RWxlbWVudCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgYWN0aXZlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Vycm9yID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd1dhcm5pbmcgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBjcml0aWNhbFRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgd2FybmluZ1RvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlRXJyb3IoKSB7XG4gICAgICAgICAgICBhY3RpdmUudmFsdWUgPSAhYWN0aXZlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZWxlY3RFbGVtZW50ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICBlbWl0KCdzZWxlY3RFbGVtZW50JywgaW5kZXgpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY291bnRFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgLy8gaWYgKE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5KS5pbmRleE9mKCdlcnJvcnMnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW2N1cnJlbnRFcnJvcl0pLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGl0ZW0pLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc2VsZWN0ZWREYXRhID0gSlNPTi5wYXJzZShwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHNlbGVjdGVkRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFjdGl2ZTogYWN0aXZlLCBzaG93Q3JpdGljYWw6IHNob3dDcml0aWNhbCwgc2hvd0Vycm9yOiBzaG93RXJyb3IsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgY3JpdGljYWxUb2dnbGU6IGNyaXRpY2FsVG9nZ2xlLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHRvZ2dsZUVycm9yOiB0b2dnbGVFcnJvciwgc2VsZWN0RWxlbWVudDogc2VsZWN0RWxlbWVudCwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSwgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlOiB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBYbHNMaXN0RXJyb3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBnbG9iYWxFcnJvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlbGVjdEFsbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNvcnRPcmRlciA9ICgwLCB2dWVfMi5yZWYpKCdhc2NlZGluZycpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ0FkZGluZyBhY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93R0xvYmFsRXJyb3IgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXNMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHRhYmxlV2lkdGggPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgdnVlXzIubmV4dFRpY2spKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoLnZhbHVlID0gKF9hID0gdGFibGVSb3cgPT09IG51bGwgfHwgdGFibGVSb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlUm93LnZhbHVlWycwJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc29ydE9yZGVyLnZhbHVlID09PSAnYXNjZW5kaW5nJ1xuICAgICAgICAgICAgICAgID8gKHNvcnRPcmRlci52YWx1ZSA9ICdkZXNjZW5kaW5nJylcbiAgICAgICAgICAgICAgICA6IChzb3J0T3JkZXIudmFsdWUgPSAnYXNjZW5kaW5nJyk7XG4gICAgICAgICAgICB2YXIgc29ydGVkRGF0YSA9IHByb3BzLmltcG9ydERhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BzLnN0YXR1c1sndGVtcGxhdGUnXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPCBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnZXREaW1lbnNpb25zKCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgICAgICBjaGVja0NyaXRpY2FsRXJyb3IoKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5nbG9iYWxFcnJvcikge1xuICAgICAgICAgICAgICAgIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcHJvcHMuaW1wb3J0RGF0YS5sZW5ndGg7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gXCJBZGRpbmcgXCIuY29uY2F0KHByb3BzLnN0YXR1cy50ZW1wbGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FuY2VsSW1wb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0dMb2JhbEVycm9yLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQveGxzJztcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRJZGVudGlmaWVyRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGV4dDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZ2xvYmFsRXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IE9iamVjdC52YWx1ZXMocHJvcHMuZ2xvYmFsRXJyb3IpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpbGUgPSBuZXcgRmlsZShbJ1xcdWZlZmYnICsgdGV4dF0sICdpZGVudGlmaWVyLWVycm9ycy50eHQnLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvcGxhaW46Y2hhcnNldD1VVEYtOCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICAgIHZhciBhbmNob3JUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBhbmNob3JUYWcuaHJlZiA9IHVybDtcbiAgICAgICAgICAgIGFuY2hvclRhZy5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgICAgICAgIGFuY2hvclRhZy5jbGljaygpO1xuICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrQ3JpdGljYWxFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBjcml0aWNhbEFycnkgPSBwcm9wcy5pbXBvcnREYXRhICYmXG4gICAgICAgICAgICAgICAgcHJvcHMuaW1wb3J0RGF0YS5tYXAoZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjcml0aWNhbEFycnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCArPSBjcml0aWNhbEFycnlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDAgfHwgKChfYSA9IHByb3BzLmdsb2JhbEVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWRkQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5wb3N0KFwiL2ltcG9ydC94bHMvYWN0aXZpdHlcIiwgeyBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChlcnJvclR5cGUsIGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdKSB7XG4gICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsQWN0aXZpdGllcygpIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbC52YWx1ZSA9ICFzZWxlY3RBbGwudmFsdWU7XG4gICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuaW5kZXhPZihhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2VsZWN0QWxsOiBzZWxlY3RBbGwsIHNvcnRPcmRlcjogc29ydE9yZGVyLCB0YWJsZVJvdzogdGFibGVSb3csIHNob3dDcml0aWNhbEVycm9yTW9kZWw6IHNob3dDcml0aWNhbEVycm9yTW9kZWwsIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbDogc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlOiBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UsIHNob3dHTG9iYWxFcnJvcjogc2hvd0dMb2JhbEVycm9yLCBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50LCBhY3Rpdml0aWVzTGVuZ3RoOiBhY3Rpdml0aWVzTGVuZ3RoLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgdGFibGVXaWR0aDogdGFibGVXaWR0aCwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgcHJvcHM6IHByb3BzLCBnZXREaW1lbnNpb25zOiBnZXREaW1lbnNpb25zLCBzb3J0OiBzb3J0LCBjYW5jZWxJbXBvcnQ6IGNhbmNlbEltcG9ydCwgZG93bmxvYWRJZGVudGlmaWVyRXJyb3I6IGRvd25sb2FkSWRlbnRpZmllckVycm9yLCBjaGVja0NyaXRpY2FsRXJyb3I6IGNoZWNrQ3JpdGljYWxFcnJvciwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBhZGRBY3Rpdml0aWVzOiBhZGRBY3Rpdml0aWVzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIFhsc0xpc3RFcnJvcjogWGxzTGlzdEVycm9yX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWVcIikpO1xudmFyIE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIE9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBFcnJvclBvcFVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnT3JnYW5pc2F0aW9uRGF0YScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBSYWRpYWxQcm9ncmVzc0JhcjogUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT3JnYW5pc2F0aW9uRWxlbWVudHM6IE9yZ2FuaXNhdGlvbkVsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsOiBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFB1Ymxpc2hVbnB1Ymxpc2g6IE9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JQb3BVcDogRXJyb3JQb3BVcF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBncm91cHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtYW5kYXRvcnlDb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdXNlclJvbGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9hWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCB1bnB1Ymxpc2hWYWx1ZSA9IF9iWzBdLCB1bnB1Ymxpc2hUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2NbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICB2YXIgX2QgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZG93bmxvYWRWYWx1ZSA9IF9kWzBdLCBkb3dubG9hZFRvZ2dsZSA9IF9kWzFdO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGUgPT09ICdzdWNjZXNzJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzIud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgdGhlIGRhdGEncyBmb3Igc2Nyb2xsIGZ1bmN0aW9uXG4gICAgICAgICAqXG4gICAgICAgICAqIHRoaXMgZGF0YSBpcyBjcmVhdGVkIHVzaW5nIHByb3BzLmdyb3VwcyBhbmQgcHJvcHMuYWN0aXZpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZ3JvdXBzID0gX2UuZ3JvdXBzLCBvcmdhbml6YXRpb24gPSBfZS5vcmdhbml6YXRpb24sIGVsZW1lbnRzID0gX2UuZWxlbWVudHMsIGdyb3VwZWREYXRhID0gZ3JvdXBzLnZhbHVlLCBvcmdhbml6YXRpb25Qcm9wcyA9IG9yZ2FuaXphdGlvbi52YWx1ZSwgb3JnYW5pemF0aW9uRGF0YSA9IGdyb3Vwcy52YWx1ZSwgZWxlbWVudFByb3BzID0gZWxlbWVudHMudmFsdWU7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMob3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBpZiAob3JnYW5pemF0aW9uUHJvcHNba10gfHwgdHlwZW9mIG9yZ2FuaXphdGlvblByb3BzW2tdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2NvbnRlbnQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25Qcm9wc1trXTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnaGFzX2RhdGEnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3JnYW5pemF0aW9uRGF0YVtrZXldW2tdO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydjb3JlJ10gPVxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ21hbmRhdG9yeSddO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ10gPVxuICAgICAgICAgICAgICAgICAgICBrID09PSAnb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddWydpZGVudGlmaWVyJ11cbiAgICAgICAgICAgICAgICAgICAgICAgIDogb3JnYW5pemF0aW9uUHJvcHNbJ2VsZW1lbnRfc3RhdHVzJ11ba107XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydub3RfY29tcGxldGVkJ10gPSAhZWxlbWVudFByb3BzW2tdWydjb21wbGV0ZWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZsYWcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGNhdGVnb3JpZXMgb2YgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZ2FuaXphdGlvbkRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdlbmFibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2Rpc2FibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc19wdWJsaXNoZWQ6IG9yZ2FuaXphdGlvblByb3BzLmlzX3B1Ymxpc2hlZCxcbiAgICAgICAgICAgIHN0YXR1czogb3JnYW5pemF0aW9uUHJvcHMuc3RhdHVzLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwdWJsaXNoTWVzc2FnZScsIHB1Ymxpc2hNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdtYW5kYXRvcnlDb21wbGV0ZWQnLCBwcm9wcy5tYW5kYXRvcnlDb21wbGV0ZWQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaFN0YXR1cycsIHB1Ymxpc2hTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Vycm9yRGF0YScsIGVycm9yRGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm91cGVkRGF0YTogZ3JvdXBlZERhdGEsXG4gICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhOiBvcmdhbml6YXRpb25EYXRhLFxuICAgICAgICAgICAgcHVibGlzaFZhbHVlOiBwdWJsaXNoVmFsdWUsXG4gICAgICAgICAgICBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVG9nZ2xlOiB1bnB1Ymxpc2hUb2dnbGUsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGRvd25sb2FkVmFsdWU6IGRvd25sb2FkVmFsdWUsXG4gICAgICAgICAgICBkb3dubG9hZFRvZ2dsZTogZG93bmxvYWRUb2dnbGUsXG4gICAgICAgICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cyxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgdG9nZ2xlU2lkZWJhcjogdG9nZ2xlU2lkZWJhcixcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uUHJvcHM6IG9yZ2FuaXphdGlvblByb3BzLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbmlzYXRpb25FbGVtZW50cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmRhdG9yeToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VhcmNoQnRuVmFsdWUgPSBfYlswXSwgc2VhcmNoQnRuVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBkcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBlbGVtZW50cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZWxlbWVudEljb25zID0ge1xuICAgICAgICAgICAgY29tcGxldGVkOiAnZG91YmxlLXRpY2snLFxuICAgICAgICAgICAgbm90X2NvbXBsZXRlZDogJ3JlZC1jcm9zcycsXG4gICAgICAgICAgICBjb3JlOiAnY29yZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhc0FycmF5RGF0YSA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmRhdGEpO1xuICAgICAgICB2YXIgZmlsdGVyZWRFbGVtZW50cyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC8tL2csICdfJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2VsZW1lbnRzLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvLS9nLCAnXycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGp1c3RTdHJpbmdzID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybiBqdXN0U3RyaW5ncztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWRyb3Bkb3duLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkcm9wZG93bkZpbHRlciA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zdGF0dXMgPSBzO1xuICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2VhcmNoQnRuVmFsdWU6IHNlYXJjaEJ0blZhbHVlLCBzZWFyY2hCdG5Ub2dnbGU6IHNlYXJjaEJ0blRvZ2dsZSwgZHJvcGRvd246IGRyb3Bkb3duLCBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sIHVzZXJSb2xlOiB1c2VyUm9sZSwgZWxlbWVudHM6IGVsZW1lbnRzLCBlbGVtZW50SWNvbnM6IGVsZW1lbnRJY29ucywgYXNBcnJheURhdGE6IGFzQXJyYXlEYXRhLCBmaWx0ZXJlZEVsZW1lbnRzOiBmaWx0ZXJlZEVsZW1lbnRzLCBkcm9wZG93bkZpbHRlcjogZHJvcGRvd25GaWx0ZXIsIG9yZ01hbmRhdG9yeUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5vcmdNYW5kYXRvcnlFbGVtZW50cyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIk9yZ2FuaXNhdGlvbi9lbGVtZW50cy9JbmRleFwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgSGVscGVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QgfHwgQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcmVjYXRpb25Db2RlVXNhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBsYXlvdXQgPSAnYmFzaXMtNi8xMic7XG4gICAgICAgIGlmIChwcm9wcy53aWR0aCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICBsYXlvdXQgPSAnYmFzaXMtZnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdvcmdUeXBlcycsIHByb3BzLnR5cGVzKTtcbiAgICAgICAgdmFyIHJlcGxhY2VVbmRlcnNjb3JlID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgdmFyIHJlZ2V4ID0gL18vZztcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBzdHJpbmcucmVwbGFjZShyZWdleCwgJy0nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBub3REZWxldGFibGVFbGVtZW50cyA9IFsnb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInLCAnbmFtZScsICdyZXBvcnRpbmdfb3JnJ107XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGRlbGV0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5kZWxldGUoXCIvb3JnYW5pc2F0aW9uL1wiLmNvbmNhdChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgXCJDb3VsZG4ndCBkZWxldGUgdGhlIG9yZ2FuaXNhdGlvbiBlbGVtZW50IGR1ZSB0byBzeXN0ZW0gZXJyb3IuXCI7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCB1c2VyUm9sZTogdXNlclJvbGUsIGxheW91dDogbGF5b3V0LCByZXBsYWNlVW5kZXJzY29yZTogcmVwbGFjZVVuZGVyc2NvcmUsIG5vdERlbGV0YWJsZUVsZW1lbnRzOiBub3REZWxldGFibGVFbGVtZW50cywgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgdG9hc3REYXRhOiB0b2FzdERhdGEsIGRlbGV0ZUVsZW1lbnQ6IGRlbGV0ZUVsZW1lbnQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIG9yZ01hbmRhdG9yeUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5vcmdNYW5kYXRvcnlFbGVtZW50cywgUmVwb3J0aW5nT3JnYW5pc2F0aW9uOiBJbmRleF8xLlJlcG9ydGluZ09yZ2FuaXNhdGlvbiwgVG90YWxCdWRnZXQ6IEluZGV4XzEuVG90YWxCdWRnZXQsIFJlcG9ydGluZ09yZ0J1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdPcmdCdWRnZXQsIFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdSZWdpb25CdWRnZXQsIFJlY2lwaWVudENvdW50cnlCdWRnZXQ6IEluZGV4XzEuUmVjaXBpZW50Q291bnRyeUJ1ZGdldCwgVG90YWxFeHBlbmRpdHVyZTogSW5kZXhfMS5Ub3RhbEV4cGVuZGl0dXJlLCBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBIZWxwZXJUZXh0OiBIZWxwZXJUZXh0X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEb2N1bWVudExpbmsnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50Q291bnRyeUJ1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiAnRGF0ZSBNaXNzaW5nJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdPcmdCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnYW5pc2F0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdSZWdpb25CdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVG90YWxCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVG90YWxFeHBlbmRpdHVyZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiAnRGF0ZSBNaXNzaW5nJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1haWxFcnJvciA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3Bhc3N3b3JkL2VtYWlsJywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgZW1haWxFcnJvci52YWx1ZSA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9wYXNzd29yZC9jb25maXJtJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVtYWlsRXJyb3IudmFsdWUgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGVtYWlsRXJyb3I6IGVtYWlsRXJyb3IsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogcHJvcHMuZW1haWwsXG4gICAgICAgICAgICB0b2tlbjogcHJvcHMudG9rZW4sXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgZW1haWw6IGZvcm1EYXRhLmVtYWlsLFxuICAgICAgICAgICAgICAgIHRva2VuOiBwcm9wcy50b2tlbixcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9yZXNldCcsIGZvcm0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkID0gZXJyb3JzLnBhc3N3b3JkID8gZXJyb3JzLnBhc3N3b3JkWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLmVtYWlsID0gZXJyb3JzLmVtYWlsID8gZXJyb3JzLmVtYWlsWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkID0gZXJyb3JzLnBhc3N3b3JkID8gZXJyb3JzLnBhc3N3b3JkWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLmVtYWlsID0gZXJyb3JzLmVtYWlsID8gZXJyb3JzLmVtYWlsWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW5jaWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBodW1hbml0YXJpYW46IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdENvbGxhYm9yYXRpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEFpZFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgZGVmYXVsdEZvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0RXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdG9yZShrZXkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVMsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVmYXVsdEZvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB1c2VyUm9sZTogdXNlclJvbGUsXG4gICAgICAgICAgICBkZWZhdWx0Rm9ybTogZGVmYXVsdEZvcm0sXG4gICAgICAgICAgICBkZWZhdWx0RXJyb3I6IGRlZmF1bHRFcnJvcixcbiAgICAgICAgICAgIHVwZGF0ZVN0b3JlOiB1cGRhdGVTdG9yZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIikpO1xudmFyIFNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgU2V0dGluZ0RlZmF1bHRGb3JtOiBTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgU2V0dGluZ1B1Ymxpc2hpbmdGb3JtOiBTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyUm9sZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzU3VwZXJhZG1pbjoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRvYXN0VGltZW91dElkO1xuICAgICAgICB2YXIgaW5pdGlhbEFwaUNhbGxDb21wbGV0ZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTsgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRFcnJvcjsgfSk7XG4gICAgICAgIHZhciBzaG93VG9rZW5UYWcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKG5hbWUsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlc1tuYW1lXSwge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVN0b3JlKGFjdGlvbnNfMS5BY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNLCAncHVibGlzaGVyX2lkJywgcHJvcHMub3JnYW5pemF0aW9uLnB1Ymxpc2hlcl9pZCk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhLCBzZXR0aW5nRGF0YSwgZXJyb3JzLCBkZWZhdWx0VmFsdWVzLCBwdWJsaXNoZXJJbmZvLCBhY3Rpdml0eVZhbHVlcywga2V5LCBrZXksIGtleTtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvZGF0YScpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYi5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsQXBpQ2FsbENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nRGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSElOR19GT1JNJywgJ29yZ2FuaXphdGlvbl9pZCcsIHByb3BzLm9yZ2FuaXphdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSAoX2EgPSBkYXRhLmVycm9ycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLmRlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVySW5mbyA9IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5VmFsdWVzID0gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIHB1Ymxpc2hlckluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKHR5cGVvZiBwdWJsaXNoZXJJbmZvW2tleV0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnVVBEQVRFX1BVQkxJU0hJTkdfRk9STSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdVUERBVEVfUFVCTElTSEVSX0lORk8nLCBrZXksIHB1Ymxpc2hlckluZm9ba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1Ymxpc2hlckluZm8uYXBpX3Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gZGVmYXVsdFZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX1ZBTFVFUycsIGtleSwgZGVmYXVsdFZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGFjdGl2aXR5VmFsdWVzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHNldEVycm9ycyhlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSElOR19FUlJPUicsIGtleSwgZXJyb3JzW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzaG93VG9rZW5UYWcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dUb2tlblRhZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlVGFiKHBhZ2UpIHtcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGFiLnZhbHVlID0gcGFnZTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXREZWZhdWx0KCkge1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiBkZWZhdWx0RXJyb3IudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX0RFRkFVTFRfRVJST1InLCBkYXRhLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0b2FzdFRpbWVvdXRJZCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGRlZmF1bHRGb3JtLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCByZXNwb25zZS5kYXRhLmhpZXJhcmNoaWFsLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX0RFRkFVTFRfRVJST1InLCBlLCBlcnJvcnNbZV1bMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRQdWJsaXNoaW5nKHVybCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodG9hc3RUaW1lb3V0SWQpO1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiBwdWJsaXNoaW5nRXJyb3IudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBkYXRhLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCh1cmwsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBwdWJsaXNoaW5nSW5mby52YWx1ZSksIHB1Ymxpc2hpbmdGb3JtLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gKF9hID0gcmVzcG9uc2UuZXJyb3JzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAndG9rZW5fdmVyaWZpY2F0aW9uJywgKF9iID0gcmVzcG9uc2UuZGF0YS50b2tlbl92ZXJpZmljYXRpb24pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3B1Ymxpc2hlcl92ZXJpZmljYXRpb24nLCByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcl92ZXJpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRk9STScsICd0b2tlbl9zdGF0dXMnLCByZXNwb25zZS5kYXRhLnRva2VuX3N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAnaXNWZXJpZmljYXRpb25SZXF1ZXN0ZWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybCA9PT0gJ3NldHRpbmcvdmVyaWZ5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEudG9rZW5fc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9ICd3YXJuaW5nJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmRhdGEudG9rZW5fc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdjb3JyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2FzdFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSElOR19FUlJPUicsIGUsIGVycm9yc1tlXVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0odXJsKSB7XG4gICAgICAgICAgICBpZiAodXJsID09PSB2b2lkIDApIHsgdXJsID0gJ3NldHRpbmcvdmVyaWZ5JzsgfVxuICAgICAgICAgICAgaWYgKHByb3BzLnVzZXJSb2xlID09PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRQdWJsaXNoaW5nKHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd1c2VyUm9sZScsIHByb3BzLnVzZXJSb2xlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdpc1N1cGVyYWRtaW4nLCBwcm9wcy5pc1N1cGVyYWRtaW4pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdGFiOiB0YWIsXG4gICAgICAgICAgICBkZWZhdWx0RXJyb3I6IGRlZmF1bHRFcnJvcixcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdFcnJvcjogcHVibGlzaGluZ0Vycm9yLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICB0b2FzdFR5cGU6IHRvYXN0VHlwZSxcbiAgICAgICAgICAgIHRvZ2dsZVRhYjogdG9nZ2xlVGFiLFxuICAgICAgICAgICAgc3VibWl0Rm9ybTogc3VibWl0Rm9ybSxcbiAgICAgICAgICAgIGluaXRpYWxBcGlDYWxsQ29tcGxldGVkOiBpbml0aWFsQXBpQ2FsbENvbXBsZXRlZCxcbiAgICAgICAgICAgIHNob3dUb2tlblRhZzogc2hvd1Rva2VuVGFnLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzdG9yZV8xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZS9zZXR0aW5nL2FjdGlvbnNcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdGlhbEFwaUNhbGxDb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dUYWc6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3N1Ym1pdFB1Ymxpc2hpbmcnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBpc1N1cGVyYWRtaW4gPSAoMCwgdnVlXzEuaW5qZWN0KSgnaXNTdXBlcmFkbWluJyk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJJZCA9ICgwLCB2dWVfMS5yZWYpKHByb3BzLm9yZ2FuaXphdGlvbi5wdWJsaXNoZXJfaWQpO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHB1Ymxpc2hlcklkLnZhbHVlOyB9LCBmdW5jdGlvbiAocHVibGlzaGVySWQpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlc1snVVBEQVRFX1BVQkxJU0hJTkdfRk9STSddLCB7XG4gICAgICAgICAgICAgICAga2V5OiAncHVibGlzaGVyX2lkJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHVibGlzaGVySWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZygpIHtcbiAgICAgICAgICAgIGlmICh1c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGVtaXQoJ3N1Ym1pdFB1Ymxpc2hpbmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhdXRvVmVyaWZ5KCkge1xuICAgICAgICAgICAgZW1pdCgnc3VibWl0UHVibGlzaGluZycpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKGtleSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk0sIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHVibGlzaGluZ0Zvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYigpIHtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnID8gJ2RlZmF1bHQnIDogJ3B1Ymxpc2gnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWI6IHRhYixcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdGb3JtOiBwdWJsaXNoaW5nRm9ybSxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdJbmZvOiBwdWJsaXNoaW5nSW5mbyxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdFcnJvcjogcHVibGlzaGluZ0Vycm9yLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZzogc3VibWl0UHVibGlzaGluZyxcbiAgICAgICAgICAgIHRvZ2dsZVRhYjogdG9nZ2xlVGFiLFxuICAgICAgICAgICAgdXBkYXRlU3RvcmU6IHVwZGF0ZVN0b3JlLFxuICAgICAgICAgICAgYXV0b1ZlcmlmeTogYXV0b1ZlcmlmeSxcbiAgICAgICAgICAgIGlzU3VwZXJhZG1pbjogaXNTdXBlcmFkbWluLFxuICAgICAgICAgICAgcHVibGlzaGVySWQ6IHB1Ymxpc2hlcklkLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBDb21wb25lbnRzXG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgVGFibGVMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6ICdQbGVhc2UgV2FpdCcsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdsb2FkZXInLCBsb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgbG9hZGVyOiBsb2FkZXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgVGFibGVMaXN0OiBUYWJsZUxpc3RfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbGFuZ18xID0gcmVxdWlyZShcImxvZGFzaC9sYW5nXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N5c3RlbVZlcnNpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBocERlcGVuZGVuY2llczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG5vZGVEZXBlbmRlbmNpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwYWNrYWdlTWFuYWdlclZlcnNpb246IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYXRlc3RNYW5hZ2VyVmVyc2lvbjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICAvKiBTZXRzIFVwZGF0ZSBzdGF0dXMgY2xhc3MgKi9cbiAgICAgICAgdmFyIGdldFN0YXR1c0NsYXNzID0gZnVuY3Rpb24gKHVwZGF0ZVN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHVwZGF0ZVN0YXR1cyA9PSAnc2VtdmVyLXNhZmUtdXBkYXRlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAncm91bmRlZC1mdWxsIGJnLXNwcmluZy01MCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC01IHB5LTEgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtd2hpdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdyb3VuZGVkLWZ1bGwgYmctc2FsbW9uLTUwIGJvcmRlciBib3JkZXItc2FsbW9uLTUwIHB4LTUgcHktMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC13aGl0ZSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgVXBkYXRlIHN0YXR1cyAqL1xuICAgICAgICB2YXIgZ2V0U3RhdHVzTWVzc2FnZSA9IGZ1bmN0aW9uICh1cGRhdGVTdGF0dXMpIHtcbiAgICAgICAgICAgIGlmICh1cGRhdGVTdGF0dXMgPT0gJ3NlbXZlci1zYWZlLXVwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1NhZmUgdXBkYXRlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnTWF5IGJyZWFrIHN5c3RlbSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgTGF0ZXN0IHZlcnNpb24gb2YgcGFja2FnZSBtYW5hZ2VyICovXG4gICAgICAgIHZhciByZXNvbHZlTGF0ZXN0VmVyc2lvbiA9IGZ1bmN0aW9uIChsYXRlc3RNYW5hZ2VyVmVyc2lvbiwga2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGxhdGVzdE1hbmFnZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhdGVzdE1hbmFnZXJWZXJzaW9uW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gJ2NvbXBvc2VyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnMi41LjQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdOQSc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGluZGV4LnRvU3RyaW5nKCkpICsgMTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZ2V0U3RhdHVzQ2xhc3M6IGdldFN0YXR1c0NsYXNzLCBnZXRTdGF0dXNNZXNzYWdlOiBnZXRTdGF0dXNNZXNzYWdlLCByZXNvbHZlTGF0ZXN0VmVyc2lvbjogcmVzb2x2ZUxhdGVzdFZlcnNpb24sIGdldEluZGV4OiBnZXRJbmRleCwgaXNFbXB0eTogbGFuZ18xLmlzRW1wdHkgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluQmFyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uTmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3dpdGNoIEJhY2tcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzd2l0Y2hCYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9saXN0LW9yZ2FuaXNhdGlvbnMnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3dpdGNoQmFjazogc3dpdGNoQmFjayB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIE11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVGFibGVMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUG9wdXBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8xLmluamVjdCkoJ2xvYWRlcicpO1xuICAgICAgICB2YXIgZGF0ZURyb3Bkb3duID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8xLnJlZikoJ0FsbCBUaW1lJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgZGVsZXRlSWQgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBkZWxldGVPcmdOYW1lID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZGVsZXRlTW9kYWwgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtYXJrQXNTcGFtID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0xvYWRlciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uKCkge1xuICAgICAgICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSAhZGVsZXRlTW9kYWwudmFsdWU7XG4gICAgICAgICAgICBtYXJrQXNTcGFtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93TG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wZW5EZWxldGVNb2RhbCA9IGZ1bmN0aW9uIChvcmdhbml6YXRpb24pIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZUlkLnZhbHVlID0gb3JnYW5pemF0aW9uLmlkO1xuICAgICAgICAgICAgZGVsZXRlT3JnTmFtZS52YWx1ZSA9IChfYSA9IG9yZ2FuaXphdGlvbi5uYW1lWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFycmF0aXZlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZGVsZXRlT3JnID0gZnVuY3Rpb24gKG9yZ0lkKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2U7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvb3JnYW5pemF0aW9uL1wiLmNvbmNhdChvcmdJZCkgKyAobWFya0FzU3BhbS52YWx1ZSA/ICc/bWFya0FzU3BhbT10cnVlJyA6ICcnKSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrQXNTcGFtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2UuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBnZXRDb3VudHJpZXNXaXRoUHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJldHVyblZhbHVlRm9yQ291bnRyaWVzID0ge307XG4gICAgICAgICAgICB2YXIgY291bnRyeUNvZGVzID0gT2JqZWN0LmtleXMocHJvcHMuY291bnRyaWVzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRyeUNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSA9IFwiXCIuY29uY2F0KGNvdW50cnlDb2Rlc1tpXSwgXCIgLSBcIikuY29uY2F0KHByb3BzLmNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZUZvckNvdW50cmllcztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50cmllc1dpdGhQcmVmaXggPSBnZXRDb3VudHJpZXNXaXRoUHJlZml4KCk7XG4gICAgICAgIC8vIHJlYWN0aXZpdHlcbiAgICAgICAgdmFyIG9yZ2FuaXNhdGlvbkRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiAnZmV0Y2hpbmcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG11bHRpc2VsZWN0U3R5bGUgPSAoMCwgdnVlXzEucmVmKSh7fSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiBbXSxcbiAgICAgICAgICAgIGRhdGFfbGljZW5zZTogW10sXG4gICAgICAgICAgICBjb3VudHJ5OiBbXSxcbiAgICAgICAgICAgIGNvbXBsZXRlbmVzczogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fdHlwZTogJycsXG4gICAgICAgICAgICBzdGFydF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGVuZF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGRhdGVfdHlwZTogJ2NyZWF0ZWRfYXQnLFxuICAgICAgICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlc2V0UGFnaW5hdGlvbiA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsT3JnYW5pc2F0aW9uID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciByZWdpc3RyeUFwaUtleVN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZHJvcGRvd25SYW5nZSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6ICdSZWdpc3RlcmVkIGRhdGUgcmFuZ2UnLFxuICAgICAgICAgICAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUgcmFuZ2UnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydFBhcmFtcyA9ICgwLCB2dWVfMS5yZWYpKHsgb3JkZXJCeTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkoZmlsdGVyLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMTgwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0wJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xuICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlUHVibGlzaGVyTW9kZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZW5lcmF0ZUxhYmVsID0gZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAnLS1sYWJlbCc6IFwiJ1wiLmNvbmNhdChsYWJlbCwgXCInXCIpIH07XG4gICAgICAgIH07XG4gICAgICAgIC8vbGlmZWN5Y2xlXG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9ICgwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ3B1Ymxpc2hlcl90eXBlJywgJ2RhdGFfbGljZW5zZScsICdjb3VudHJ5J10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnZGF0ZV90eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigxKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogRmV0Y2hpbmcgb3JnYW5pemF0aW9uIGxpc3RcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBmZXRjaE9yZ2FuaXNhdGlvbiA9IGZ1bmN0aW9uIChhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZV9wYWdlID09PSB2b2lkIDApIHsgYWN0aXZlX3BhZ2UgPSAxOyB9XG4gICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmZXRjaGluZyc7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmVfcGFnZSA9IGFjdGl2ZV9wYWdlICE9PSBudWxsICYmIGFjdGl2ZV9wYWdlICE9PSB2b2lkIDAgPyBhY3RpdmVfcGFnZSA6IDE7XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9saXN0LW9yZ2FuaXNhdGlvbnMvcGFnZS9cIi5jb25jYXQoYWN0aXZlX3BhZ2UpLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICBpZiAoc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSk7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgIT09IG51bGwgJiYgcXVlcnlTdHJpbmcgIT09IHZvaWQgMCA/IHF1ZXJ5U3RyaW5nIDogJyZxPSc7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSBxdWVyeVN0cmluZyAhPT0gJycgPyBlbmRwb2ludCA6IFwiXCIuY29uY2F0KGVuZHBvaW50KTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBmaWx0ZXJLZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyS2V5XSAmJiBmaWx0ZXJbZmlsdGVyS2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKGZpbHRlcktleSwgZmlsdGVyW2ZpbHRlcktleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChlbmRwb2ludCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczogaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICA/IHVybFBhcmFtc1xuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvdGFsT3JnYW5pc2F0aW9uLnZhbHVlID0gKF9hID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvdGFsO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdlbXB0eSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoU3RhdHVzQXJyYXlzKG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJveHkgVXNlclxuICAgICAgICAgKi9cbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIHByb3h5VXNlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXIudGV4dCA9ICdQcm94eSBMb2dpbic7XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9wcm94eS1vcmdhbmlzYXRpb24vXCIuY29uY2F0KGlkKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNvcnRpbmcgQnkgdXBkYXRlIG9uXG4gICAgICAgICAqL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHZhciBxdWVyeSA9ICcnLCBkZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjZW5kaW5nJywgXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgc29ydERpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgdmFyIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICB2YXIgb3JkZXJUeXBlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICBvcmRlclR5cGUudmFsdWUgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdvcmRlckJ5JykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHZhciByYW5nZSA9ICcnO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeSA9IGZ1bmN0aW9uIChvcmRlcikgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSwgZW5kRGF0ZTtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfZCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2QubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSAoX2IgPSB1cmxQYXJhbXMuZ2V0KCdzdGFydF9kYXRlJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSAoX2MgPSB1cmxQYXJhbXMuZ2V0KCdlbmRfZGF0ZScpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBcIiZzdGFydF9kYXRlPVwiLmNvbmNhdChzdGFydERhdGUsIFwiJmVuZF9kYXRlPVwiKS5jb25jYXQoZW5kRGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmV0Y2hPcmdhbmlzYXRpb24oMSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW1xuICAgICAgICAgICAgZmlsdGVyLmNvdW50cnksXG4gICAgICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzLFxuICAgICAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlLFxuICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLFxuICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSxcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlLFxuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlLFxuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSxcbiAgICAgICAgXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgcmVzZXRBbGxGaWx0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvdW50cnkgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9ICdjcmVhdGVkX2F0JztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc0ZpbHRlckFwcGxpZWQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsdGVyLmNvdW50cnkubGVuZ3RoICtcbiAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoICtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aCAhPVxuICAgICAgICAgICAgICAgIDAgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzICE9PSAnJyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSAhPT0gJycgfHxcbiAgICAgICAgICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgIT09ICcnICYmIGZpbHRlci5lbmRfZGF0ZSAhPT0gJycpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWZyZXNoU3RhdHVzQXJyYXlzID0gZnVuY3Rpb24gKG9yZ0RhdGEpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfZCA9IG9yZ0RhdGEuZGF0YTsgX2kgPCBfZC5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb3JnRGF0dW0gPSBfZFtfaV07XG4gICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbb3JnRGF0dW0uaWRdID1cbiAgICAgICAgICAgICAgICAgICAgKF9jID0gKF9iID0gKF9hID0gb3JnRGF0dW0gPT09IG51bGwgfHwgb3JnRGF0dW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9yZ0RhdHVtLnNldHRpbmdzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ19pbmZvKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9rZW5fdmVyaWZpY2F0aW9uKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbb3JnRGF0dW0uaWRdID0gY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZChvcmdEYXR1bSA/IG9yZ0RhdHVtLnNldHRpbmdzIDogZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCA9IGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5kZWZhdWx0X3ZhbHVlcztcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhKCgoX2EgPSBkZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGRlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9jdXJyZW5jeSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2IgPSBkZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGRlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9sYW5ndWFnZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2MgPSBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaGllcmFyY2h5KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfZCA9IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5idWRnZXRfbm90X3Byb3ZpZGVkKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaHVtYW5pdGFyaWFuKSAhPSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gJycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaHVtYW5pdGFyaWFuKSAhPSBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlRGF0ZSA9IGZ1bmN0aW9uIChzdGFydERhdGUsIGVuZERhdGUsIHNlbGVjdGVkRGF0ZUZpbHRlcikge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZUZpbHRlciA9PT0gdm9pZCAwKSB7IHNlbGVjdGVkRGF0ZUZpbHRlciA9ICcnOyB9XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGVGaWx0ZXI7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcm90YXRlQ2xhc3MgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2dnbGVTaG93TXVsdGlTZWxlY3QgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyIHJlY3QgPSBldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBtdWx0aXNlbGVjdFN0eWxlLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIHRvcDogTnVtYmVyKHJlY3QudG9wKSA8IDEwMCA/IDIxMCArICdweCcgOiBOdW1iZXIocmVjdC50b3ApICsgNTAgKyAncHgnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IE51bWJlcihyZWN0LmxlZnQpICsgJ3B4JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gIXNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRTZWxlY3RlZFB1Ymxpc2hlciA9IGZ1bmN0aW9uIChwdWJsaXNoZXJUeXBlcykge1xuICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gcHVibGlzaGVyVHlwZXM7XG4gICAgICAgIH07XG4gICAgICAgIC8qXG4gICAgICAgICAqIEZvciBtYXBwaW5nIGNvdW50cnksIHB1Ymxpc2hlcl90eXBlIGFuZCBkYXRhIGxpY2Vuc2VcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzaG93TWFwcGVkRGF0YSA9IGZ1bmN0aW9uIChrZXksIGRhdGEsIG1hcCkge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdkYXRhX2xpY2Vuc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaWNlbnNlID0gZGF0YVtrZXldO1xuICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZSA9PT0gbnVsbCB8fCBsaWNlbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsaWNlbnNlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpY2Vuc2UgPyBtYXBbbGljZW5zZV0gOiAnTm90IGF2YWlsYWJsZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV0gPyBtYXBbZGF0YVtrZXldXSA6ICdOb3QgYXZhaWxhYmxlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnTm90IGF2YWlsYWJsZSc7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBNdWx0aVNlbGVjdFdpdGhTZWFyY2g6IE11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YTogb3JnYW5pc2F0aW9uRGF0YSxcbiAgICAgICAgICAgIGRyb3Bkb3duUmFuZ2U6IGRyb3Bkb3duUmFuZ2UsXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFB1Ymxpc2hlcjogc2V0U2VsZWN0ZWRQdWJsaXNoZXIsXG4gICAgICAgICAgICB0b2dnbGVTaG93TXVsdGlTZWxlY3Q6IHRvZ2dsZVNob3dNdWx0aVNlbGVjdCxcbiAgICAgICAgICAgIHNldERhdGVUeXBlOiBzZXREYXRlVHlwZSxcbiAgICAgICAgICAgIHNldERhdGVSYW5nZURhdGU6IHNldERhdGVSYW5nZURhdGUsXG4gICAgICAgICAgICBzb3J0Qnk6IHNvcnRCeSxcbiAgICAgICAgICAgIHJlc2V0QWxsRmlsdGVyczogcmVzZXRBbGxGaWx0ZXJzLFxuICAgICAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbixcbiAgICAgICAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBkZWZhdWx0U29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIHByb3h5VXNlcjogcHJveHlVc2VyLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbjogZmV0Y2hPcmdhbmlzYXRpb24sXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXM6IGRlZmF1bHRWYWx1ZVN0YXR1cyxcbiAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzOiByZWdpc3RyeUFwaUtleVN0YXR1cyxcbiAgICAgICAgICAgIG9yZGVyVHlwZTogb3JkZXJUeXBlLFxuICAgICAgICAgICAgY2xlYXJEYXRlOiBjbGVhckRhdGUsXG4gICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlOiB1dGlsc18xLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxuICAgICAgICAgICAgaXNGaWx0ZXJBcHBsaWVkOiBpc0ZpbHRlckFwcGxpZWQsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoOiBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxuICAgICAgICAgICAgZGF0ZVR5cGU6IGRhdGVUeXBlLFxuICAgICAgICAgICAgcm90YXRlQ2xhc3M6IHJvdGF0ZUNsYXNzLFxuICAgICAgICAgICAgbXVsdGlzZWxlY3RTdHlsZTogbXVsdGlzZWxlY3RTdHlsZSxcbiAgICAgICAgICAgIGNsZWFyRGF0ZUZpbHRlcjogY2xlYXJEYXRlRmlsdGVyLFxuICAgICAgICAgICAgZGF0ZURyb3Bkb3duOiBkYXRlRHJvcGRvd24sXG4gICAgICAgICAgICBzb3J0UGFyYW1zOiBzb3J0UGFyYW1zLFxuICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICBzaG93TWFwcGVkRGF0YTogc2hvd01hcHBlZERhdGEsXG4gICAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbjogdG90YWxPcmdhbmlzYXRpb24sXG4gICAgICAgICAgICBjb3VudHJpZXNXaXRoUHJlZml4OiBjb3VudHJpZXNXaXRoUHJlZml4LFxuICAgICAgICAgICAgZGVsZXRlTW9kYWw6IGRlbGV0ZU1vZGFsLFxuICAgICAgICAgICAgZGVsZXRlT3JnTmFtZTogZGVsZXRlT3JnTmFtZSxcbiAgICAgICAgICAgIGRlbGV0ZUlkOiBkZWxldGVJZCxcbiAgICAgICAgICAgIGdlbmVyYXRlTGFiZWw6IGdlbmVyYXRlTGFiZWwsXG4gICAgICAgICAgICB0b2dnbGVEZWxldGVDb25maXJtYXRpb246IHRvZ2dsZURlbGV0ZUNvbmZpcm1hdGlvbixcbiAgICAgICAgICAgIG9wZW5EZWxldGVNb2RhbDogb3BlbkRlbGV0ZU1vZGFsLFxuICAgICAgICAgICAgZGVsZXRlT3JnOiBkZWxldGVPcmcsXG4gICAgICAgICAgICBtYXJrQXNTcGFtOiBtYXJrQXNTcGFtLFxuICAgICAgICAgICAgc2hvd0xvYWRlcjogc2hvd0xvYWRlcixcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlckxpc3RpbmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9yZ2FuaXphdGlvbnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByb2xlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGN1cnJlbnRVc2VySWQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB1c2VyUm9sZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogW10sXG4gICAgICAgICAgICByb2xlczogW10sXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgb3JkZXJCeTogJycsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnLFxuICAgICAgICAgICAgcTogJycsXG4gICAgICAgICAgICBzdGFydF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGVuZF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGRhdGVfdHlwZTogJ2NyZWF0ZWRfYXQnLFxuICAgICAgICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFkZFVzZXJGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFVzZXJGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdXNlcnNEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7IGRhdGE6IFtdIH0pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgYWxsU2VsZWN0ZWQgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBkZWxldGVNb2RhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRlbGV0ZUlkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHRvdGFsVXNlciA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc3RhdHVzSWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc3RhdHVzTW9kYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzdGF0dXNWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzdGF0dXNVc2VybmFtZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkZWxldGVVc2VybmFtZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGZldGNoaW5nVGFibGVEYXRhID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VsZWN0ZWRJZHMgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBjaGVja2xpc3QgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBjdXJyZW50cGFnZURhdGEgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBjbGVhckRhdGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0VXNlcklkID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnQWxsIFRpbWUnKTtcbiAgICAgICAgdmFyIGlzU3VwZXJhZG1pbiA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgaXNTdXBlcmFkbWluLnZhbHVlID1cbiAgICAgICAgICAgIHByb3BzLnVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgcHJvcHMudXNlclJvbGUgPT09ICdpYXRpX2FkbWluJztcbiAgICAgICAgdmFyIGRyb3Bkb3duUmFuZ2UgPSB7XG4gICAgICAgICAgICBjcmVhdGVkX2F0OiAnVXNlciBjcmVhdGVkIGRhdGUnLFxuICAgICAgICAgICAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcxJyxcbiAgICAgICAgICAgIHJvbGVfaWQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRXJyb3IgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgcm9sZV9pZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzRmlsdGVyQXBwbGllZCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aCArIGZpbHRlci5yb2xlcy5sZW5ndGggIT0gMCB8fFxuICAgICAgICAgICAgICAgIGZpbHRlci5zdGF0dXMgIT0gJycgfHxcbiAgICAgICAgICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgJiYgZmlsdGVyLmVuZF9kYXRlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmZ1bGxfbmFtZTsgfSwgZnVuY3Rpb24gKGZ1bGxuYW1lKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9ICgwLCB1dGlsc18xLmdlbmVyYXRlVXNlcm5hbWUpKGZ1bGxuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi91c2Vycy9wYWdlLzFcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnXycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgdGV4dEJ1YmJsZWRhdGEgPSBmdW5jdGlvbiAoaWQsIGZpZWxkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3JnJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcbiAgICAgICAgICAgICAgICBjYXNlICdyb2xlcyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcbiAgICAgICAgICAgIGZpbHRlci5yb2xlcyA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5xID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVSYW5nZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JlYXRlVXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhc3N3b3JkRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlZGl0VXNlciA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5mdWxsX25hbWUgPSB1c2VyLmZ1bGxfbmFtZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmVtYWlsID0gdXNlci5lbWFpbDtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJvbGVfaWQgPSB1c2VyLnJvbGVfaWQ7XG4gICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbXB0eUZvcm1EYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGFba2V5XSA9IGtleSA9PT0gJ3N0YXR1cycgPyAxIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRGb3JtRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSB2b2lkIDApIHsgZXJyb3JzID0ge307IH1cbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVycm9yW2tleV0gPSBlcnJvcnNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgb3BlblN0YXR1c01vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIHN0YXR1c0lkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIHN0YXR1c1ZhbHVlLnZhbHVlID0gdXNlci5zdGF0dXM7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucGF0Y2goXCIvdXNlci9cIi5jb25jYXQoZWRpdFVzZXJJZC52YWx1ZSksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIHBhc3N3b3JkRGF0YSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICBmaWx0ZXIub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgZmlsdGVyLnJvbGVzLFxuICAgICAgICAgICAgZmlsdGVyLnEsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzLFxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaFVzZXJzTGlzdChhY3RpdmVfcGFnZSwgZmlsdGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkID0gZmFsc2U7IH1cbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL3BhZ2UvXCIuY29uY2F0KGZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIHRvdGFsVXNlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wZW5EZWxldGVtb2RlbCA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGVJZC52YWx1ZSA9IHVzZXIuaWQ7XG4gICAgICAgICAgICBkZWxldGVVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGRlbGV0ZVVzZXIoaWQpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL3VzZXIvXCIuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvcnQgPSBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdhc2MnICYmIGZpbHRlci5vcmRlckJ5ID09PSBwYXJhbSA/ICdkZXNjJyA6ICdhc2MnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSBwYXJhbTtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KDEpO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdHVzTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL3N0YXR1cy9cIi5jb25jYXQoaWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZVNlbGVjdGFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrbGlzdC52YWx1ZS5pbmNsdWRlcyh1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXSkpXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAobikgeyByZXR1cm4gIU9iamVjdC52YWx1ZXMoY3VycmVudHBhZ2VEYXRhLnZhbHVlKS5pbmNsdWRlcyhuKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XG4gICAgICAgICAgICAgICAgIWFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNoZWNrbGlzdC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBbXTtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tsaXN0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRwYWdlRGF0YS52YWx1ZS5pbmNsdWRlcyhjaGVja2xpc3QudmFsdWVbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0uZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZ2VuZXJhdGVMYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBcIidcIi5jb25jYXQobGFiZWwsIFwiJ1wiKSB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcm91dGUgPSBcIi91c2Vycy9kb3dubG9hZC9cIjtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB2YXIgYWxsUGFnZVNlbGVjdGVkO1xuICAgICAgICAgICAgYWxsUGFnZVNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyhzZWxlY3RlZElkcy52YWx1ZSkuZmxhdCgpO1xuICAgICAgICAgICAgaWYgKGNoZWNrbGlzdC52YWx1ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgndXNlcnMnLCBhbGxQYWdlU2VsZWN0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZmlsdGVyOiBmaWx0ZXIsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBhZGRVc2VyRm9ybTogYWRkVXNlckZvcm0sIGVkaXRVc2VyRm9ybTogZWRpdFVzZXJGb3JtLCB1c2Vyc0RhdGE6IHVzZXJzRGF0YSwgaXNFbXB0eTogaXNFbXB0eSwgYWxsU2VsZWN0ZWQ6IGFsbFNlbGVjdGVkLCBkZWxldGVNb2RhbDogZGVsZXRlTW9kYWwsIGRlbGV0ZUlkOiBkZWxldGVJZCwgdG90YWxVc2VyOiB0b3RhbFVzZXIsIHN0YXR1c0lkOiBzdGF0dXNJZCwgc3RhdHVzTW9kYWw6IHN0YXR1c01vZGFsLCBzdGF0dXNWYWx1ZTogc3RhdHVzVmFsdWUsIHN0YXR1c1VzZXJuYW1lOiBzdGF0dXNVc2VybmFtZSwgZGVsZXRlVXNlcm5hbWU6IGRlbGV0ZVVzZXJuYW1lLCBsb2FkZXI6IGxvYWRlciwgZmV0Y2hpbmdUYWJsZURhdGE6IGZldGNoaW5nVGFibGVEYXRhLCBzZWxlY3RlZElkczogc2VsZWN0ZWRJZHMsIGNoZWNrbGlzdDogY2hlY2tsaXN0LCBjdXJyZW50cGFnZURhdGE6IGN1cnJlbnRwYWdlRGF0YSwgY2xlYXJEYXRlOiBjbGVhckRhdGUsIGVkaXRVc2VySWQ6IGVkaXRVc2VySWQsIGRhdGVUeXBlOiBkYXRlVHlwZSwgaXNTdXBlcmFkbWluOiBpc1N1cGVyYWRtaW4sIGRyb3Bkb3duUmFuZ2U6IGRyb3Bkb3duUmFuZ2UsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUVycm9yOiBmb3JtRXJyb3IsIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIGNsZWFyRGF0ZUZpbHRlcjogY2xlYXJEYXRlRmlsdGVyLCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlOiBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlLCB0ZXh0QnViYmxlZGF0YTogdGV4dEJ1YmJsZWRhdGEsIGNsZWFyRmlsdGVyOiBjbGVhckZpbHRlciwgY2xlYXJEYXRlUmFuZ2VGaWx0ZXI6IGNsZWFyRGF0ZVJhbmdlRmlsdGVyLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsIGNyZWF0ZVVzZXI6IGNyZWF0ZVVzZXIsIGVkaXRVc2VyOiBlZGl0VXNlciwgZW1wdHlGb3JtRGF0YTogZW1wdHlGb3JtRGF0YSwgc2V0Rm9ybUVycm9yOiBzZXRGb3JtRXJyb3IsIG9wZW5TdGF0dXNNb2RlbDogb3BlblN0YXR1c01vZGVsLCB1cGRhdGVVc2VyOiB1cGRhdGVVc2VyLCBmZXRjaFVzZXJzTGlzdDogZmV0Y2hVc2Vyc0xpc3QsIG9wZW5EZWxldGVtb2RlbDogb3BlbkRlbGV0ZW1vZGVsLCBkZWxldGVVc2VyOiBkZWxldGVVc2VyLCBzb3J0OiBzb3J0LCB0b2dnbGVVc2VyU3RhdHVzOiB0b2dnbGVVc2VyU3RhdHVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0b2dnbGVTZWxlY3RhbGw6IHRvZ2dsZVNlbGVjdGFsbCwgZ2VuZXJhdGVMYWJlbDogZ2VuZXJhdGVMYWJlbCwgZG93bmxvYWRBbGw6IGRvd25sb2FkQWxsLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlclByb2ZpbGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYW5ndWFnZVByZWZlcmVuY2U6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFByb2ZpbGVGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFBhc3N3b3JkRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDdXJyZW50UGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93TmV3UGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q29uZmlybVBhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdXNlckRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHsgdXNlcl9yb2xlOiAnJyB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1c2VyRGF0YSwgcHJvcHMudXNlcik7XG4gICAgICAgICAgICB1c2VyRGF0YS51c2VyX3JvbGUgPSB1c2VyRGF0YS51c2VyX3JvbGUuc3BsaXQoJ18nKS5qb2luKCcgJyk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBwcm9wcy51c2VyLnVzZXJuYW1lLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiBwcm9wcy51c2VyLmZ1bGxfbmFtZSxcbiAgICAgICAgICAgIGVtYWlsOiBwcm9wcy51c2VyLmVtYWlsLFxuICAgICAgICAgICAgbGFuZ3VhZ2VfcHJlZmVyZW5jZTogcHJvcHMudXNlci5sYW5ndWFnZV9wcmVmZXJlbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBsYW5ndWFnZV9wcmVmZXJlbmNlOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYXNzd29yZERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvclBhc3N3b3JkRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgY3VycmVudF9wYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAoX2EgPSByZXMuZGF0YS5tZXNzYWdlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gKF9hID0gZXJyb3IuZGF0YS5tZXNzYWdlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVQYXNzd29yZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXNzd29yZEZvcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkocGFzc3dvcmREYXRhLmN1cnJlbnRfcGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5wYXNzd29yZCwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYyA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJycpLFxuICAgICAgICAgICAgICAgIGZvcm1fdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VwZGF0ZS9wYXNzd29yZCcsIHBhc3N3b3JkRm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRQYXNzd29yZEZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9yUGFzc3dvcmREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclBhc3N3b3JkRGF0YVtrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXMuZGF0YS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUGFzc3dvcmREYXRhW2tleV0gPSByZXMuZGF0YS5lcnJvcnNba2V5XVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZVByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91cGRhdGUvcHJvZmlsZScsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlZGl0UHJvZmlsZUZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9yRm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRm9ybURhdGFba2V5XSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGFba2V5XSA9IGZvcm1EYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXMuZGF0YS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRm9ybURhdGFba2V5XSA9IHJlcy5kYXRhLmVycm9yc1trZXldWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgZWRpdFByb2ZpbGVGb3JtOiBlZGl0UHJvZmlsZUZvcm0sIGVkaXRQYXNzd29yZEZvcm06IGVkaXRQYXNzd29yZEZvcm0sIHNob3dDdXJyZW50UGFzc3dvcmQ6IHNob3dDdXJyZW50UGFzc3dvcmQsIHNob3dOZXdQYXNzd29yZDogc2hvd05ld1Bhc3N3b3JkLCBzaG93Q29uZmlybVBhc3N3b3JkOiBzaG93Q29uZmlybVBhc3N3b3JkLCB1c2VyRGF0YTogdXNlckRhdGEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZXJyb3JGb3JtRGF0YTogZXJyb3JGb3JtRGF0YSwgcGFzc3dvcmREYXRhOiBwYXNzd29yZERhdGEsIGVycm9yUGFzc3dvcmREYXRhOiBlcnJvclBhc3N3b3JkRGF0YSwgaWdub3JlVXBkYXRlczogaWdub3JlVXBkYXRlcywgaWdub3JlVG9hc3RVcGRhdGU6IGlnbm9yZVRvYXN0VXBkYXRlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIHVwZGF0ZVBhc3N3b3JkOiB1cGRhdGVQYXNzd29yZCwgdXBkYXRlUHJvZmlsZTogdXBkYXRlUHJvZmlsZSwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBQb3B1cE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtYWlsVmVyaWZpY2F0aW9uOiBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0ZXh0YXJlYSA9ICgwLCB2dWVfMS5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogJycsXG4gICAgICAgICAgICBsaWNlbnNlX2lkOiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBjb250YWN0X2VtYWlsOiAnJyxcbiAgICAgICAgICAgIHdlYnNpdGU6ICcnLFxuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpYXRpRXJyb3IgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogJycsXG4gICAgICAgICAgICBsaWNlbnNlX2lkOiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBjb250YWN0X2VtYWlsOiAnJyxcbiAgICAgICAgICAgIHdlYnNpdGU6ICcnLFxuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgICAgIHN0ZXA6ICcxJyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybURhdGEuY291bnRyeTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSA9ICcnO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcmVzaXplKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQsIFwicHhcIik7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcl07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmlkZW50aWZpZXIgPSBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5XG4gICAgICAgICAgICAgICAgPyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ICsgJy0nICsgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlclxuICAgICAgICAgICAgICAgIDogZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcjtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmZ1bGxfbmFtZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEudXNlcm5hbWUgPSAoMCwgdXRpbHNfMS5nZW5lcmF0ZVVzZXJuYW1lKShmb3JtRGF0YS5mdWxsX25hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhZ2VuY2llcyA9IHByb3BzLnR5cGVzLnJlZ2lzdHJhdGlvbkFnZW5jeTtcbiAgICAgICAgICAgIGlmIChmb3JtRGF0YS5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHVuY2F0ZWdvcml6ZWRfMSA9IHByb3BzLnR5cGVzLnVuY2F0ZWdvcml6ZWRSZWdpc3RyYXRpb25BZ2VuY3lQcmVmaXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBvYmplY3Qgd2l0aCBtdWx0aS1zdGVwIGZvcm0gaW5mb3JtYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1B1Ymxpc2hlciBJbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgdG8gcmVnaXN0ZXIgeW91ciBvcmdhbmlzYXRpb24gYXMgYW4gSUFUSSBwdWJsaXNoZXInLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IFwiV2UgcmVmZXIgdG8gb3JnYW5pc2F0aW9ucyB3aG8gcHVibGlzaCBJQVRJIGRhdGEgYXMgJ1B1Ymxpc2hlcnMnLiBCZWZvcmUgcHVibGlzaGluZyBkYXRhLCBhbGwgb3JnYW5pc2F0aW9ucyBuZWVkIHRoZWlyIG93biAnUHVibGlzaGVyIEFjY291bnQnIG9uIHRoZSBJQVRJIFJlZ2lzdHJ5IChpYXRpcmVnaXN0cnkub3JnKS4gRW50ZXIgeW91ciBvcmdhbmlzYXRpb24ncyBkYXRhIGhlcmUgYW5kIHdlJ2xsIGNyZWF0ZSB5b3VyIG9yZ2FuaXNhdGlvbidzIFB1Ymxpc2hlciBBY2NvdW50IGZvciB5b3UuIFRoZXNlIGRldGFpbHMgd2lsbCBhbHNvIGJlIHNhdmVkIGhlcmUgaW4gSUFUSSBQdWJsaXNoZXIuIFwiLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHlvdXIgb3JnYW5pc2F0aW9uIG5hbWUgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1RoZSBuYW1lIG9mIHlvdXIgb3JnYW5pc2F0aW9uIHB1Ymxpc2hpbmcgdGhlIGRhdGEuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnY29sLXNwYW4tMiBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBJRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIHB1Ymxpc2hlciBJRCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLWlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJQcm92aWRlIGEgdW5pcXVlIElEIGZvciB5b3VyIG9yZ2FuaXNhdGlvbi4gSXQgbXVzdCBiZSBhdCBsZWFzdCB0d28gY2hhcmFjdGVycyBsb25nIGFuZCB1c2UgbG93ZXIgY2FzZSBsZXR0ZXJzLiBZb3UgY2FuIGluY2x1ZGUgbGV0dGVycywgbnVtYmVycyBhbmQgYWxzbyAtIChkYXNoKSBhbmQgXyAodW5kZXJzY29yZSkuIFdoZXJlIHBvc3NpYmxlIHVzZSBhIHNob3J0IGFiYnJldmlhdGlvbiBvZiB5b3VyIG9yZ2FuaXNhdGlvbidzIG5hbWUsIGZvciBleGFtcGxlOiAnbmVmX21hbGknIGZvciBOZWFyIEVhc3QgRm91bmRhdGlvbiBNYWxpLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGEgQ291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ0FkZCB0aGUgbG9jYXRpb24gb2YgeW91ciBvcmdhbmlzYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBSZWdpc3RyYXRpb24gQWdlbmN5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpc3RyYXRpb25fYWdlbmN5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGFuIE9yZ2FuaXNhdGlvbiBSZWdpc3RyYXRpb24gQWdlbmN5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLWFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IFwiU2VsZWN0IHRoZSBhZ2VuY3kgaW4geW91ciBjb3VudHJ5IHdoZXJlIHlvdXIgb3JnYW5pc2F0aW9uIGlzIHJlZ2lzdGVyZWQuIElmIHlvdSBkbyBub3Qga25vdyB0aGlzIGluZm9ybWF0aW9uIHBsZWFzZSBlbWFpbCA8YSBocmVmPSdtYWlsdG86c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnJyB0YXJnZXQ9J19ibGFuayc+c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnPC9hPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiByZWdpc3RyYXRpb25fYWdlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSZWdpc3RyYXRpb24gTnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpc3RyYXRpb25fbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIFJlZ2lzdHJhdGlvbiBOdW1iZXIgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIlByb3ZpZGUgdGhlIHJlZ2lzdHJhdGlvbiBudW1iZXIgZm9yIHlvdXIgb3JnYW5pc2F0aW9uIHRoYXQgaGFzIGJlZW4gcHJvdmlkZWQgYnkgb3JnYW5pc2F0aW9uIHJlZ2lzdHJhdGlvbiBhZ2VuY3kuIElmIHlvdSBkbyBub3Qga25vdyB0aGlzIHBsZWFzZSBlbWFpbCA8YSBocmVmPSdtYWlsdG86c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnJyB0YXJnZXQ9J19ibGFuayc+c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnPC9hPi5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ0UuZy4gMTIzNDU2JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJQVRJIE9yZ2FuaXNhdGlvbiBJZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdUaGUgT3JnYW5pc2F0aW9uIElkZW50aWZpZXIgaXMgYSB1bmlxdWUgY29kZSBmb3IgeW91ciBvcmdhbmlzYXRpb24uIFRoaXMgaXMgZ2VuZXJlYXRlZCBmcm9tIHRoZSBPcmdhbmlzYXRpb24gUmVnaXN0cmF0aW9uIEFnZW5jeSBhbmQgUmVnaXN0cmF0aW9uIE51bWJlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVhZDogIDxhIGhyZWY9XCJodHRwOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9ndWlkYW5jZS9wcmVwYXJpbmctb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi1hY2NvdW50L2hvdy10by1jcmVhdGUteW91ci1pYXRpLW9yZ2FuaXNhdGlvbi1pZGVudGlmaWVyL1wiIHRhcmdldD1cIl9ibGFua1wiPkhvdyB0byBjcmVhdGUgeW91ciBJQVRJIG9yZ2FuaXNhdGlvbiBpZGVudGlmaWVyLjwvYT4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnVGhpcyBpcyBhdXRvZ2VuZXJhdGVkLCBwbGVhc2UgbWFrZSBzdXJlIHRvIGZpbGwgdGhlIGFib3ZlIGZpZWxkcyBjb3JyZWN0bHkuJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl90eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGFuIG9yZ2FuaXNhdGlvbiB0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnU2VsZWN0IHRoZSB0eXBlIHRoYXQgYmVzdCBkZXNjcmliZXMgeW91ciBvcmdhbmlzYXRpb24uICA8YSBocmVmPVwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL2NvZGVsaXN0cy9vcmdhbmlzYXRpb250eXBlL1wiIHRhcmdldD1cIl9ibGFua1wiPiBSZWFkIG1vcmUgb24gT3JnYW5pc2F0aW9uIHR5cGVzLjwvYT4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5wdWJsaXNoZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZV9pZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdEYXRhIExpY2VuY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2xpY2Vuc2VfaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgYSBEYXRhIExpY2VuY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdkYXRhLWxpY2Vuc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIiBTZWxlY3QgdGhlIExpY2Vuc2UgdW5kZXIgd2hpY2ggeW91ciBkYXRhIGlzIGJlaW5nIHB1Ymxpc2hlZC4gSUFUSSBpcyBhbiBvcGVuIGRhdGEgc3RhbmRhcmQgYW5kIHJlcXVpcmVzIHlvdSB0byBtYWtlIHlvdXIgZGF0YSBhdmFpbGFibGUgdW5kZXIgYW4gb3BlbiBsaWNlbmNlIHNvIGl0IGNhbiBiZSBmcmVlbHkgdXNlZC4gT25lIG9mIHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBsaWNlbnNlcyBpcyBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLiA8YSBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vZ3VpZGFuY2Uvc3RhbmRhcmQtb3ZlcnZpZXcvcHJlcGFyaW5nLXlvdXItb3JnYW5pc2F0aW9uLWRhdGEtcHVibGljYXRpb24vaG93LXRvLWxpY2Vuc2UteW91ci1kYXRhLycgdGFyZ2V0PSdfYmxhbmsnID4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVhZDogSG93IHRvIGxpY2Vuc2UgeW91ciBkYXRhLjwvYT5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuZGF0YUxpY2Vuc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV91cmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUHVibGlzaGVyIExvZ28gVXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbWFnZV91cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFLmcuIGh0dHA6Ly9teWxvZ28uY29tICcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1sb2dvLXVybCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIiBQcm92aWRlIGEgbGluayB0byBhbiBpbWFnZSB0byB5b3VyIG9yZ2FuaXNhdGlvbidzIGxvZ28gKE9wdGltdW0gc2l6ZTogMjAwIHggMTIwIHB4KVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIERlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgRGVzY3JpcHRpb24gaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ29yZ2FuaXphdGlvbi1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnIFByb3ZpZGUgYSBzaG9ydCBkZXNjcmlwdGlvbiBhYm91dCB5b3VyIG9yZ2FuaXNhdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBjb2wtc3Bhbi0yIGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbnRhY3QgSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGlzIGlzIHlvdXIgb3JnYW5pc2F0aW9uJ3MgY29udGFjdCBpbmZvcm1hdGlvblwiLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBjb250YWN0X2VtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NvbnRhY3QgRW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbnRhY3RfZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb250YWN0LWVtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1BsZWFzZSBhZGQgYSBjb250YWN0IGVtYWlsIGFkZHJlc3MgZm9yIHlvdXIgb3JnYW5pc2F0aW9uLiBQbGVhc2Ugbm90ZSB0aGF0IElBVEkgaXMgYW4gb3BlbiBkYXRhIHN0YW5kYXJkIGFuZCB0aGUgZW1haWwgcHJvdmlkZWQgaGVyZSB3aWxsIGJlIHZpc2libGUgdG8gb3RoZXJzIG9uIHRoZSBJQVRJIFJlZ2lzdHJ5LicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgIGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1dlYnNpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3dlYnNpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFLmcuIGh0dHA6Ly9teXdlYnNpdGUuY29tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnd2Vic2l0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIkFkZCB0aGUgVVJMIHRvIHlvdXIgb3JnYW5pc2F0aW9uJ3Mgd2Vic2l0ZS5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBhZGRyZXNzIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdQcm92aWRlIGEgY29udGFjdCBhZGRyZXNzIGZvciB5b3VyIG9yZ2FuaXNhdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBjb2wtc3Bhbi0yIGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUHVibGlzaGluZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIGFib3V0IGhvdyB5b3VyIG9yZ2FuaXNhdGlvbiB3aWxsIHB1Ymxpc2ggZGF0YScsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdTb3VyY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhIFNvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvbnRhY3QtZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIlNlbGVjdCBhbiBvcHRpb246PGJyPlByaW1hcnkgLSB5b3VyIG9yZ2FuaXNhdGlvbiBpcyBwdWJsaXNoaW5nIGl0cyBvd24gb3IgKGFzc29jaWF0ZWQgb3JnYW5pc2F0aW9ucycpIGRhdGEgPGJyPlNlY29uZGFyeSAtIHlvdXIgb3JnYW5pc2F0aW9uIGlzIHJlcHJvZHVjaW5nIGRhdGEgb24gdGhlIGFjdGl2aXRpZXMgb2YgYW5vdGhlciBvcmdhbmlzYXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0RlZmF1bHQgbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RlZmF1bHRfbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgeW91ciBkZWZhdWx0IGxhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZGVmYXVsdC1sYW5ndWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmRfZXhjbHVzaW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSZWNvcmQgRXhjbHVzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVjb3JkX2V4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIFJlY29yZCBFeGNsdXNpb25zIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWNvcmQtZXhjbHVzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIkRvZXMgeW91ciBvcmdhbmlzYXRpb24gaGF2ZSBhbiBleGNsdXNpb24gcG9saWN5IHRoYXQgcHJvdmlkZSBkZXRhaWxzIG9uIHdoYXQgZGF0YSB0aGF0IGl0IGNhbm5vdCBwdWJsaXNoPyBGb3IgZXhhbXBsZSBhbiBvcmdhbmlzYXRpb24gbWF5IG5vdCBiZSBhYmxlIHRvIHB1Ymxpc2ggZGF0YSBiZWNhdXNlIG9mIHBvbGl0aWNhbCBzZW5zaXRpdml0eSBpc3N1ZXMgb3IgaWYgaW5mb3JtYXRpb24gaXMgY29tbWVyY2lhbGx5IHJlc3RyaWN0ZWQuIFBsZWFzZSBwcm92aWRlIGRldGFpbHMgaGVyZSBhYm91dCB3aGF0IGRhdGEgeW91ciBvcmdhbmlzYXRpb24gbmVlZHMgdG8gZXhjbHVkZSAoaWYgYW55KSwgYW5kIGEgVVJMIHRvIHlvdXIgb3JnYW5pc2F0aW9uJ3MgZXhjbHVzaW9uIHBvbGljeSAoaWYgaXQgaGFzIG9uZSkuPGEgaHJlZj0naHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2d1aWRhbmNlL3N0YW5kYXJkLW92ZXJ2aWV3L3ByZXBhcmluZy15b3VyLW9yZ2FuaXNhdGlvbi1kYXRhLXB1YmxpY2F0aW9uL2luZm9ybWF0aW9uLWFuZC1kYXRhLXlvdS1jYW50LXB1Ymxpc2gtZXhjbHVzaW9ucy8nIHRhcmdldD0nX2JsYW5rJz4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVhZDogSW5mb3JtYXRpb24gYW5kIGRhdGEgeW91IGNhbid0IHB1Ymxpc2ggKGV4Y2x1c2lvbnMpPC9hPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCAgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0FkbWluaXN0cmF0b3IgSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lsbCBjcmVhdGUgYW4gYWRtaW4gYWNjb3VudCBmb3IgeW91IGFzIGFuIGluZGl2aWR1YWwnLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRnVsbCBOYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmdWxsX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHlvdXIgZnVsbCBuYW1lIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdmdWxsLW5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwgQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHZhbGlkIGVtYWlsIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnY29sLXN0YXJ0LTEgbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB1c2VybmFtZSBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnWW91IHdpbGwgbmVlZCB0aGlzIGxhdGVyIHRvIGxvZ2luIGludG8gSUFUSSBQdWJsaXNoZXIuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgcGFzc3dvcmQgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnTWluaW11bSBsZW5ndGg6IDggY2hhcmFjdGVycycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ29uZmlybSBQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRfY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBwYXNzd29yZCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncGFzc3dvcmQtY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnVGhpcyBzaG91bGQgbWF0Y2ggdGhlIHBhc3N3b3JkIG9uIHRoZSBsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA1OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdFbWFpbCBWZXJpZmljYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BsZWFzZSB2ZXJpZnkgYW5kIGFjdGl2YXRlIHlvdXIgSUFUSSBQdWJsaXNoZXIgYWNjb3VudCB0aHJvdWdoIHlvdXIgcHJvdmlkZWQgZW1haWwnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gZXJyb3JSZXNwb25zZVtmaWVsZF0gPyBlcnJvclJlc3BvbnNlW2ZpZWxkXVswXSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGZpZWxkIGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YVtmaWVsZF0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIElBVEkgYW5kIHN5c3RlbSBFcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGVycm9yRGF0YSkuZXZlcnkoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PT0gJyc7IH0pIHx8XG4gICAgICAgICAgICAgICAgc3RlcC52YWx1ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaWF0aUVycm9yLCB0eXBlb2YgZXJyb3JSZXNwb25zZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB7IGVycm9yOiBlcnJvclJlc3BvbnNlIH1cbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgfSwgMzUwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuSWF0aUVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGVyciBpbiBpYXRpRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaWF0aUVycm9yW2Vycl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZlcmlmaWVzIHB1Ymxpc2hlclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMSc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL3B1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoJ3B1Ymxpc2hlcl9lcnJvcicgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzEnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMic7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2NvbnRhY3QnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMyc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2FkZGl0aW9uYWwnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzQnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3RlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoNCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRTdGVwKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXAudmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdGVwKGN1cnJlbnRfc3RlcCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRfc3RlcCA9PT0gc3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbHMgc3VibWl0IGZ1bmN0aW9uIGJhc2VkIG9uIGN1cnJlbnQgc3RlcCB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlQdWJsaXNoZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9QcmV2aW91c0Zvcm0oKSB7XG4gICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlhdGlFcnJvcjogaWF0aUVycm9yLFxuICAgICAgICAgICAgaXNUZXh0RmllbGQ6IGlzVGV4dEZpZWxkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICAgIHJlc2l6ZTogcmVzaXplLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHRleHRhcmVhLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSWF0aVN0YW5kYXJkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZE1hbnVhbCh0eXBlKSB7XG4gICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdJQVRJX1B1Ymxpc2hlcl9BY3Rpdml0eV9TdGFuZGFyZC5wZGYnLFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogJ0lBVElfUHVibGlzaGVyX09yZ2FuaXNhdGlvbl9TdGFuZGFyZC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hpbmdDaGVja2xpc3QnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJNb2RlbCgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvcGVuQWRkTW9kZWwnLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyaWdnZXJNb2RlbDogdHJpZ2dlck1vZGVsIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRW1haWxWZXJpZmljYXRpb246IEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3VudHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFnZW5jeToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1bmNhdGVnb3JpemVkT3JnYW5pc2F0aW9uUmVnaXN0cmF0aW9uQWdlbmN5OiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBzdGVwID0gKDAsIHZ1ZV8xLnJlZikoMSk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJFeGlzdHMgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFnZW5jeSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5hZ2VuY3k7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5jb3VudHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5LCBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3lcbiAgICAgICAgICAgICAgICA/IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgKyAnLScgKyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXG4gICAgICAgICAgICAgICAgOiBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybURhdGEuZnVsbF9uYW1lOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9ICgwLCB1dGlsc18xLmdlbmVyYXRlVXNlcm5hbWUpKGZvcm1EYXRhLmZ1bGxfbmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uX2FnZW5jeSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFnZW5jaWVzID0gYWdlbmN5LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGZvcm1EYXRhLmNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdW5jYXRlZ29yaXplZF8xID0gcHJvcHMudW5jYXRlZ29yaXplZE9yZ2FuaXNhdGlvblJlZ2lzdHJhdGlvbkFnZW5jeTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGFnZW5jaWVzKS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKGZvcm1EYXRhLmNvdW50cnkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmNhdGVnb3JpemVkXzEuc29tZShmdW5jdGlvbiAoaykgeyByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoayk7IH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZ2VuY2llcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc1RleHRGaWVsZCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmaWVsZFR5cGUsIGZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZWxkVHlwZSA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ3Bhc3N3b3JkJyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdlbWFpbCcpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSAhPSAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjaGVja1N0ZXAgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZm9ybVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZm9ybVN0ZXAudG9TdHJpbmcoKSkgPT09IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdGVyRm9ybSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgMToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUHVibGlzaGVyIEluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCB0byByZWdpc3RlciB5b3VyIG9yZ2FuaXNhdGlvbicsXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1Byb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBvcmdhbmlzYXRpb24uIFlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZSB0aGUgc2FtZSBpbmZvcm1hdGlvbiB0aGF0IHlvdSB1c2VkIHRvIGNyZWF0ZSB5b3VyIFB1Ymxpc2hlciBBY2NvdW50IG9uIHRoZSBJQVRJIFJlZ2lzdHJ5IChpYXRpcmVnaXN0cnkub3JnKS4nLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHlvdXIgUHVibGlzaGVyIE5hbWUgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1Byb3ZpZGUgdGhlIG5hbWUgb2YgeW91ciBvcmdhbmlzYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnY29sLXNwYW4tMiBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBJRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIHB1Ymxpc2hlciBJRCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLWlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJUaGlzIGlzIHRoZSB1bmlxdWUgSUQgZm9yIHlvdXIgb3JnYW5pc2F0aW9uIHRoYXQgeW91IGNyZWF0ZWQgd2hlbiB5b3Ugc2V0IHVwIHlvdXIgSUFUSSBSZWdpc3RyeSBQdWJsaXNoZXIgQWNjb3VudC4gSXQgc2hvdWxkIGJlIGEgc2hvcnRlciB2ZXJzaW9uIG9mIHlvdXIgb3JnYW5pc2F0aW9uJ3MgbmFtZSwgd2hpY2ggd2lsbCBpbmNsdWRlIGxvd2VyY2FzZSBsZXR0ZXJzIGFuZCBtYXkgaW5jbHVkZSBudW1iZXJzLCAtIChkYXNoKSBvciBfICh1bmRlcnNjb3JlKS4gRm9yIGV4YW1wbGUgbmVmX21hbGknIGZvciBOZWFyIEVhc3QgRm91bmRhdGlvbiBNYWxpLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGEgQ291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ0FkZCB0aGUgbG9jYXRpb24gb2YgeW91ciBvcmdhbmlzYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdPcmdhbmlzYXRpb24gUmVnaXN0cmF0aW9uIEFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBPcmdhbmlzYXRpb24gUmVnaXN0cmF0aW9uIEFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnUHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgYWdlbmN5IGluIHlvdXIgY291bnRyeSB3aGVyZSB5b3Ugb3JnYW5pc2F0aW9uIGlzIHJlZ2lzdGVyZWQuIElmIHlvdSBkbyBub3Qga25vdyB0aGlzIGluZm9ybWF0aW9uIHBsZWFzZSBlbWFpbCBzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmcuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFJlZ2lzdHJhdGlvbiBOdW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHlvdXIgUmVnaXN0cmF0aW9uIE51bWJlciBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdBZGQgdGhlIHJlZ2lzdHJhdGlvbiBudW1iZXIgZm9yIHlvdXIgb3JnYW5pc2F0aW9uIHRoYXQgaGFzIGJlZW4gcHJvdmlkZWQgYnkgdGhlIHJlZ2lzdHJhdGlvbiBhZ2VuY3kgbmFtZWQgYWJvdmUuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ0UuZy4gMTIzNDU2JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaWF0aV9vcmdhbml6YXRpb25hbF9pZGVudGlmaWVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0lBVEkgT3JnYW5pc2F0aW9uIElkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1RoZSBPcmdhbmlzYXRpb24gSWRlbnRpZmllciBpcyBhIHVuaXF1ZSBjb2RlIGZvciB5b3VyIG9yZ2FuaXNhdGlvbi4gVGhpcyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgT3JnYW5pc2F0aW9uIFJlZ2lzdHJhdGlvbiBBZ2VuY3kgYW5kIFJlZ2lzdHJhdGlvbiBOdW1iZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlYWQ6IDxhIGhyZWY9XCJodHRwOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9ndWlkYW5jZS9wcmVwYXJpbmctb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi1hY2NvdW50L2hvdy10by1jcmVhdGUteW91ci1pYXRpLW9yZ2FuaXNhdGlvbi1pZGVudGlmaWVyL1wiIHRhcmdldD1cIl9ibGFua1wiPkhvdyB0byBjcmVhdGUgeW91ciBJQVRJIG9yZ2FuaXNhdGlvbiBpZGVudGlmaWVyLjwvYT4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnVGhpcyBpcyBhdXRvZ2VuZXJhdGVkLCBwbGVhc2UgbWFrZSBzdXJlIHRvIGZpbGwgdGhlIGFib3ZlIGZpZWxkcyBjb3JyZWN0bHkuJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0FkbWluaXN0cmF0b3IgSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBhZG1pbiBhY2NvdW50IGluIElBVEkgUHVibGlzaGVyJyxcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnUHJvdmlkZSB5b3VyIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhbiBhZG1pbiBhY2NvdW50IGhlcmUgb24gSUFUSSBQdWJsaXNoZXIuJyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0Z1bGwgTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZnVsbF9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIGZ1bGwgbmFtZSBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0VtYWlsIEFkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB2YWxpZCBlbWFpbCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgdXNlcm5hbWUgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1lvdSB3aWxsIG5lZWQgdGhpcyBsYXRlciB0byBsb2dpbiBpbnRvIElBVEkgUHVibGlzaGVyLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0RlZmF1bHQgbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RlZmF1bHRfbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgeW91ciBkZWZhdWx0IGxhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZGVmYXVsdC1sYW5ndWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHBhc3N3b3JkIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDb25maXJtIFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZF9jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHBhc3N3b3JkIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZC1jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdFbWFpbCBWZXJpZmljYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BsZWFzZSB2ZXJpZnkgYW5kIGFjdGl2YXRlIHlvdXIgSUFUSSBQdWJsaXNoZXIgYWNjb3VudCB0aHJvdWdoIHlvdXIgcHJvdmlkZWQgZW1haWwnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB1cGRhdGVGb3JtRXJyb3JzID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgaWYgKGVycm9ycyA9PT0gdm9pZCAwKSB7IGVycm9ycyA9IFtdOyB9XG4gICAgICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChlcnJvckxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyS2V5IGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGFbZXJyS2V5XSA9IGVycktleSBpbiBlcnJvcnMgPyBlcnJvcnNbZXJyS2V5XVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3ZlcmlmeVB1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmICgncHVibGlzaGVyX2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvcm1EYXRhLnNvdXJjZSA9IHJlc3BvbnNlLmRhdGEucHVibGlzaGVyX3NvdXJjZV90eXBlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JzLnBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzInXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDEpXG4gICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICBpZiAoc3RlcC52YWx1ZSA9PT0gMilcbiAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzRm9ybSgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluRm9vdGVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbE9yVXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWxPclVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIGxvZ2luKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBmb3JtO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsT3JVc2VybmFtZTogZm9ybURhdGEuZW1haWxPclVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvbG9naW4nLCBmb3JtKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWxPclVzZXJuYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCdlcnJvcnMnIGluIHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbE9yVXNlcm5hbWUgPSBlcnJvcnMuZW1haWxPclVzZXJuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMuZW1haWxPclVzZXJuYW1lWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGxvZ2luOiBsb2dpbixcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1dlYkZvb3RlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIHVzZXI6ICdJQVRJX1B1Ymxpc2hlci1Vc2VyX01hbnVhbF92MS4wLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTmF2RHJvcGRvd25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE5hdkRyb3Bkb3duOiBOYXZEcm9wZG93bl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBhdXRoOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogRmlyc3Qgd2Ugd2lsbCBsb2FkIGFsbCBvZiB0aGlzIHByb2plY3QncyBKYXZhU2NyaXB0IGRlcGVuZGVuY2llcyB3aGljaFxuICogaW5jbHVkZXMgVnVlIGFuZCBvdGhlciBsaWJyYXJpZXMuIEl0IGlzIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgd2hlblxuICogYnVpbGRpbmcgcm9idXN0LCBwb3dlcmZ1bCB3ZWIgYXBwbGljYXRpb25zIHVzaW5nIFZ1ZSBhbmQgTGFyYXZlbC5cbiAqL1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWUzX3Ntb290aF9zY3JvbGxfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1zbW9vdGgtc2Nyb2xsXCIpKTtcbnZhciBzdmdfdnVlM18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzdmctdnVlM1wiKSk7XG52YXIgV2ViSGVhZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCIpKTtcbnZhciBXZWJGb290ZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWVcIikpO1xudmFyIEFkbWluRm9vdGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWVcIikpO1xudmFyIFdlbGNvbWVQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWVcIikpO1xudmFyIFJlZ2lzdGVyUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZVwiKSk7XG52YXIgQWJvdXRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlXCIpKTtcbnZhciBTdXBwb3J0UGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlXCIpKTtcbnZhciBJYXRpU3RhbmRhcmRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWVcIikpO1xudmFyIFB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlXCIpKTtcbnZhciBJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZVwiKSk7XG4vKipcbiAqIFZ1ZSBjb21wb25lbnRzIGZvciBBY3Rpdml0aWVzIExpc3RpbmdcbiAqL1xudmFyIFJlc3VsdERldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWVcIikpO1xudmFyIFJlc3VsdExpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZVwiKSk7XG52YXIgSW5kaWNhdG9yRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZVwiKSk7XG52YXIgSW5kaWNhdG9yTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlXCIpKTtcbnZhciBQZXJpb2RzRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWVcIikpO1xudmFyIFBlcmlvZHNMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlXCIpKTtcbnZhciBUcmFuc2FjdGlvbkxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWVcIikpO1xudmFyIFRyYW5zYWN0aW9uRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWVcIikpO1xudmFyIERlc2NyaXB0aW9uRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWVcIikpO1xudmFyIEVsZW1lbnRzTm90ZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlXCIpKTtcbnZhciBBY3Rpdml0eUluZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCIpKTtcbnZhciBBZG1pbkhlYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlXCIpKTtcbnZhciBTaWRlYmFySGVscEJsb2NrX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlXCIpKTtcbnZhciBBY3Rpdml0eVVwbG9hZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlXCIpKTtcbnZhciBBY3Rpdml0eVhsc1VwbG9hZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlXCIpKTtcbnZhciBEYXNoYm9hcmRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZVwiKSk7XG52YXIgSW1wb3J0TGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWVcIikpO1xudmFyIFhsc0xpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlXCIpKTtcbi8qKlxuICogU2V0dGluZyBwYWdlXG4gKi9cbnZhciBTZXR0aW5nUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZVwiKSk7XG4vL0FjdGl2aXR5IERlZmF1bHQgVmFsdWVzXG52YXIgQWN0aXZpdHlEZWZhdWx0VmFsdWVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlXCIpKTtcbi8qKlxuICogdnVlIGNvbXBvbmVudCBmb3IgcGFzc3dvcmQgcmVzZXRcbiAqL1xudmFyIFJlc2V0UGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlXCIpKTtcbnZhciBQYXNzd29yZFJlY292ZXJ5X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlXCIpKTtcbnZhciBSZXNldFBhc3N3b3JkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlXCIpKTtcbi8qKlxuICogT3JnYW5pc2F0aW9uIGRhdGFcbiAqL1xudmFyIE9yZ2FuaXNhdGlvbkRhdGFfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlXCIpKTtcbi8qKlxuICogT3JnYW5pc2F0aW9uIExpc3QgLyBQcm94eVxuICovXG52YXIgT3JnYW5pc2F0aW9uTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlXCIpKTtcbnZhciBBZG1pbkJhcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlXCIpKTtcbi8qKlxuICogVXNlciBNb2R1bGUgY29tcG9uZW50c1xuICovXG52YXIgVXNlclByb2ZpbGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWVcIikpO1xudmFyIFVzZXJMaXN0aW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCIpKTtcbi8qKlxuICogQXVkaXQgY29tcG9uZW50XG4gKi9cbnZhciBBdWRpdExpc3RpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZVwiKSk7XG4vKipcbiAqIEFkZGl0aW9uYWwgQ29tcG9uZW50c1xuICovXG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgU3lzdGVtVmVyc2lvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlXCIpKTtcbnZhciB2dWUzX2FwZXhjaGFydHNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1hcGV4Y2hhcnRzXCIpKTtcbnZhciBhcHAgPSAoMCwgdnVlXzEuY3JlYXRlQXBwKSh7fSk7XG5hcHAudXNlKHZ1ZTNfYXBleGNoYXJ0c18xLmRlZmF1bHQpO1xuLyoqXG4gKiBHbG9iYWwgQ29tcG9uZW50c1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdXZWJIZWFkZXInLCBXZWJIZWFkZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdXZWJGb290ZXInLCBXZWJGb290ZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBZG1pbkZvb3RlcicsIEFkbWluRm9vdGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnV2VsY29tZVNpZ25pbicsIFdlbGNvbWVQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVnaXN0ZXJGb3JtJywgUmVnaXN0ZXJQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSWF0aVJlZ2lzdGVyRm9ybScsIElhdGlSZWdpc3RlclBhZ2VfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIHJlZ2lzdGVyaW5nIHdlYiBwb3J0YWwgcGFnZXNcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnQWJvdXRQYWdlJywgQWJvdXRQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnU3VwcG9ydFBhZ2UnLCBTdXBwb3J0UGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0lhdGlTdGFuZGFyZCcsIElhdGlTdGFuZGFyZF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1B1Ymxpc2hpbmdDaGVja2xpc3QnLCBQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyB2dWUgY29tcG9uZW50IGZvciBhY3Rpdml0eSBsaXN0aW5nXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXR5VGVtcGxhdGUnLCBBY3Rpdml0eUluZGV4X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnTG9nZ2VkaW5IZWFkZXInLCBBZG1pbkhlYWRlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXRpZXNEZXRhaWwnLCBBY3Rpdml0eURldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0Rlc2NyaXB0aW9uRm9ybScsIERlc2NyaXB0aW9uRm9ybV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0VsZW1lbnRzTm90ZScsIEVsZW1lbnRzTm90ZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Jlc3VsdERldGFpbCcsIFJlc3VsdERldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Jlc3VsdExpc3QnLCBSZXN1bHRMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSW5kaWNhdG9yRGV0YWlsJywgSW5kaWNhdG9yRGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSW5kaWNhdG9yTGlzdCcsIEluZGljYXRvckxpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQZXJpb2RzRGV0YWlsJywgUGVyaW9kc0RldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1BlcmlvZHNMaXN0JywgUGVyaW9kc0xpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdUcmFuc2FjdGlvbkxpc3QnLCBUcmFuc2FjdGlvbkxpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdUcmFuc2FjdGlvbkRldGFpbCcsIFRyYW5zYWN0aW9uRGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnU2lkZWJhckhlbHBCbG9jaycsIFNpZGViYXJIZWxwQmxvY2tfdnVlXzEuZGVmYXVsdCk7XG4vKlxuICogSW1wb3J0IHBhZ2VcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdHlVcGxvYWQnLCBBY3Rpdml0eVVwbG9hZF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXR5WGxzVXBsb2FkJywgQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJbXBvcnRMaXN0JywgSW1wb3J0TGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1hsc0xpc3QnLCBYbHNMaXN0X3Z1ZV8xLmRlZmF1bHQpO1xuLy8gZGFzaGJvYXJkIHBhZ2VcbmFwcC5jb21wb25lbnQoJ0Rhc2hib2FyZFBhZ2UnLCBEYXNoYm9hcmRQYWdlX3Z1ZV8xLmRlZmF1bHQpO1xuLypcbiAqIFNldHRpbmcgcGFnZVxuICovXG5hcHAuY29tcG9uZW50KCdTZXR0aW5nUGFnZScsIFNldHRpbmdQYWdlX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnU3lzdGVtVmVyc2lvbicsIFN5c3RlbVZlcnNpb25fdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdBY3Rpdml0eURlZmF1bHRWYWx1ZXMnLCBBY3Rpdml0eURlZmF1bHRWYWx1ZV92dWVfMS5kZWZhdWx0KTtcbi8qXG5SZWdpc3RlcmluZyB2dWUgY29tcG9uZW50IGZvciBwYXNzd29yZCByZXNldFxuKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ1Jlc2V0UGFnZScsIFJlc2V0UGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Bhc3N3b3JkUmVjb3ZlcnknLCBQYXNzd29yZFJlY292ZXJ5X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVzZXRQYXNzd29yZCcsIFJlc2V0UGFzc3dvcmRfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFJlZ2lzdGVyaW5nIHVzZXIgbW9kdWxlIHJlbGF0ZWQgdnVlIGNvbXBvbmVudHNcbiAqL1xuYXBwLmNvbXBvbmVudCgnVXNlclByb2ZpbGUnLCBVc2VyUHJvZmlsZV92dWVfMS5kZWZhdWx0KS5jb21wb25lbnQoJ1VzZXJMaXN0aW5nJywgVXNlckxpc3RpbmdfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFJlZ2lzdGVyaW5nIEFkZGl0aW9uYWwgQ29tcG9uZW50c1xuICovXG5hcHAuY29tcG9uZW50KCdIb3ZlclRleHQnLCBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdQYWdlVGl0bGUnLCBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdMb2FkaW5nU3RhdGUnLCBMb2FkZXJfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBkYXRhXG4gKi9cbmFwcC5jb21wb25lbnQoJ09yZ2FuaXNhdGlvbkRhdGEnLCBPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBQcm94eVxuICovXG5hcHAuY29tcG9uZW50KCdPcmdhbmlzYXRpb25MaXN0JywgT3JnYW5pc2F0aW9uTGlzdF92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ0FkbWluQmFyJywgQWRtaW5CYXJfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIEF1ZGl0XG4gKi9cbmFwcC5jb21wb25lbnQoJ0F1ZGl0TGlzdGluZycsIEF1ZGl0TGlzdGluZ192dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogRXh0ZW5zaW9uIHRvIGlubGluZSBTVkcgZmlsZXMgd2l0aCBWdWUuanMgYW5kIG9wdGltaXplIHRoZW0gYXV0b21hdGljYWxseSB3aXRoIFNWR09cbiAqL1xuYXBwLnVzZShzdmdfdnVlM18xLmRlZmF1bHQpO1xuYXBwLnVzZSh2dWUzX3Ntb290aF9zY3JvbGxfMS5kZWZhdWx0KTtcbi8vIGRldGVjdCBzY3JvbGwgdXAgb3IgZG93blxudmFyIGxhc3RTY3JvbGxUb3AgPSAwLCBhZmZpeFR5cGUgPSAnc3RpY2t5LW5vbmUnO1xudmFyIHN0aWNreVNpZGViYXIgPSBmdW5jdGlvbiAoZWwsIHBhcmVudFdyYXBwZXIpIHtcbiAgICAvL3N0aWNreSBlbGVtZW50L2NoaWxkIGRhdGFcbiAgICB2YXIgc3RpY2t5RWxlbWVudCA9IGVsLmZpcnN0Q2hpbGQsIGVsSGVpZ2h0ID0gc3RpY2t5RWxlbWVudC5vZmZzZXRIZWlnaHQsIHN0aWNreUN1cnJlbnRUb3AgPSBzdGlja3lFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwgc3RpY2t5Q3VycmVudEJvdHRvbSA9IHN0aWNreUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgIC8vc3RpY2t5IGVsZW1lbnQncyBwYXJlbnQvd3JhcHBlciBkYXRhXG4gICAgdmFyIGVsV2lkdGggPSBlbC5vZmZzZXRXaWR0aCwgZWxTY3JvbGxMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCwgZWxTY3JvbGxUb3AgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIGVsU2Nyb2xsQm90dG9tID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAvLyB3aW5kb3cvZG9jdW1lbnQgZGF0YVxuICAgIHZhciBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uID0gd2luZG93LnBhZ2VZT2Zmc2V0LCB0YXJnZXRTY3JvbGxQb3NpdGlvbiA9IGVsU2Nyb2xsQm90dG9tICsgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAtIHZpZXdwb3J0SGVpZ2h0O1xuICAgIC8vIHBhcmVudCB3cmFwcGVyIC8gc3RpY2t5IGJvdW5kYXJ5XG4gICAgdmFyIGVsUGFyZW50ID0gc3RpY2t5RWxlbWVudC5jbG9zZXN0KHBhcmVudFdyYXBwZXIpLCBlbFBhcmVudEJvdHRvbSA9IGVsUGFyZW50ID09PSBudWxsIHx8IGVsUGFyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgLy8gc2Nyb2xsIGJlaGF2aW91clxuICAgIHZhciBpc1Njcm9sbERvd24gPSBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uID4gbGFzdFNjcm9sbFRvcCA/IHRydWUgOiBmYWxzZTtcbiAgICB2YXIgaXNTY3JvbGxVcCA9ICFpc1Njcm9sbERvd247XG4gICAgbGFzdFNjcm9sbFRvcCA9XG4gICAgICAgIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPD0gMCA/IDAgOiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uO1xuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lCb3R0b20oKSB7XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb24gOiBhYnNvbHV0ZTsgIHdpZHRoOjI4MHB4OyBib3R0b206IDE2cHhcIjtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lUb3AoKSB7XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHJlbGF0aXZlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIFwiLmNvbmNhdChzdGlja3lDdXJyZW50VG9wIC0gZWxTY3JvbGxUb3AsIFwicHgsIDApO1wiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10cmFuc2xhdGUnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5VHJhbnNsYXRlKCkge1xuICAgICAgICB7XG4gICAgICAgICAgICAod2luZG93LnNjcm9sbFksXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCA+XG4gICAgICAgICAgICAgICAgICAgIDApXG4gICAgICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgOiAxNjtcbiAgICAgICAgfVxuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiBhdXRvOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgYm90dG9tOlwiKS5jb25jYXQoKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCA+XG4gICAgICAgICAgICAgICAgMTYpXG4gICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgIDogMTYsIFwicHg7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm90dG9tJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93bkZpeGVkVG9wKCkge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDowcHhcIjtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10cmFuc2xhdGUnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5Tm9uZSgpIHtcbiAgICAgICAgaWYgKHRhcmdldFNjcm9sbFBvc2l0aW9uIDw9IGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGlmICh2aWV3cG9ydEhlaWdodCArIHdpbmRvdy5zY3JvbGxZICsgNDUwID49IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHN0aWNreTsgdG9wOjBweFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogYXV0bzsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IGJvdHRvbTogMDsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm90dG9tJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5Qm91bmQoKSB7XG4gICAgICAgIGlmIChlbFBhcmVudEJvdHRvbSAmJiBlbFBhcmVudEJvdHRvbSA8IHN0aWNreUN1cnJlbnRCb3R0b20pIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb24gOiBhYnNvbHV0ZTsgIHdpZHRoOjI4MHB4OyBib3R0b206IDE2cHhcIjtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbERvd24oKSB7XG4gICAgICAgIHN3aXRjaCAoYWZmaXhUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktdG9wJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5VG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm90dG9tJzpcbiAgICAgICAgICAgICAgICBpZiAoZWxQYXJlbnRCb3R0b20gJiYgZWxQYXJlbnRCb3R0b20gPCBzdGlja3lDdXJyZW50Qm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lCb3R0b20oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktdHJhbnNsYXRlJzpcbiAgICAgICAgICAgICAgICBpZiAoc3RpY2t5Q3VycmVudEJvdHRvbSA8PSB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5VHJhbnNsYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml4ZWQtdG9wJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxEb3duRml4ZWRUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ub25lJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5Tm9uZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdW5kJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5Qm91bmQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreVRvcCgpIHtcbiAgICAgICAgaWYgKGVsU2Nyb2xsVG9wID49IDApIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHJlbGF0aXZlOyAgXCI7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LW5vbmUnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogYXV0bzsgYm90dG9tOlwiLmNvbmNhdCgod2luZG93LnNjcm9sbFksXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCA+XG4gICAgICAgICAgICAgICAgICAgIDE2KVxuICAgICAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIDogMTYsIFwicHg7IGxlZnQ6IFwiKS5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweCBcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lCb3R0b20oKSB7XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IDBweDsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHggXCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBGaXhlZFRvcCgpIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6MHB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lUcmFuc2xhdGUoKSB7XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDApIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IDBweDsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRvcCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lCb3VuZCgpIHtcbiAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRUb3AgPj0gMCAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246Zml4ZWQ7IHRvcDogMDsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRvcCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRUb3AgPj0gMCAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uID09IDApIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiIHRvcDogMDsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRvcCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsVXAoKSB7XG4gICAgICAgIHN3aXRjaCAoYWZmaXhUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktdG9wJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreVRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdHRvbSc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lCb3R0b20oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeGVkLXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBGaXhlZFRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRyYW5zbGF0ZSc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lUcmFuc2xhdGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ub25lJzpcbiAgICAgICAgICAgICAgICAvL25vdGhpbmcgdG8gZG8gaGVyZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdW5kJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreUJvdW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVsSGVpZ2h0IDwgdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHN0aWNreTsgdG9wOjBweFwiO1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICBpZiAoaXNTY3JvbGxEb3duICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsRG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU2Nyb2xsVXAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGxVcCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHN0aWNreTsgdG9wOjBweFwiO1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgfVxuICAgIH1cbn07XG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgIC8vY2hlY2sgY29uc3RhbnRseSBpbiBhIGludGVyIGZvciB3aGVuIHN1cHBvcnQgYnV0dG9uIGVudGVycyB0aGUgZG9tXG4gICAgdmFyIGNoZWNrU3VwcG9ydEJ1dHRvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgcmdiKDIxLCA4MywgMTAyKSc7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgIH1cbiAgICB9LCAxMCk7XG59O1xuLy8gY3VzdG9tIGRpcmVjdGl2ZVxuYXBwLmRpcmVjdGl2ZSgnc3RpY2t5LWNvbXBvbmVudCcsIHtcbiAgICBtb3VudGVkOiBmdW5jdGlvbiAoZWwsIGJpbmRpbmcpIHtcbiAgICAgICAgdmFyIGJvdW5kYXJ5ID0gKGJpbmRpbmcudmFsdWUgfHwge30pLmJvdW5kYXJ5O1xuICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5IHx8ICdib2R5JztcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0aWNreVNpZGViYXIoZWwsIGJvdW5kYXJ5KTsgfSk7XG4gICAgfSxcbiAgICB1bm1vdW50ZWQ6IGZ1bmN0aW9uIChlbCwgYmluZGluZykge1xuICAgICAgICB2YXIgcGFyZW50ID0gYmluZGluZy52YWx1ZS5ib3VuZGFyeTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0aWNreVNpZGViYXIoZWwsIHBhcmVudCk7IH0pO1xuICAgIH0sXG59KTtcbi8qKlxuICogTmV4dCwgd2Ugd2lsbCBjcmVhdGUgYSBmcmVzaCBWdWUgYXBwbGljYXRpb24gaW5zdGFuY2UgYW5kIGF0dGFjaCBpdCB0b1xuICogdGhlIHBhZ2UuIFRoZW4sIHlvdSBtYXkgYmVnaW4gYWRkaW5nIGNvbXBvbmVudHMgdG8gdGhpcyBhcHBsaWNhdGlvblxuICogb3IgY3VzdG9taXplIHRoZSBKYXZhU2NyaXB0IHNjYWZmb2xkaW5nIHRvIGZpdCB5b3VyIHVuaXF1ZSBuZWVkcy5cbiAqL1xuYXBwLm1vdW50KCcjYXBwJyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMub3JnTWFuZGF0b3J5RWxlbWVudHMgPSBleHBvcnRzLmFjdGl2aXR5Q29yZUVsZW1lbnRzID0gdm9pZCAwO1xudmFyIGNvcmVFbGVtZW50c19qc29uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uLy4uL3B1YmxpYy9EYXRhL2NvcmVFbGVtZW50cy5qc29uXCIpKTtcbmZ1bmN0aW9uIGFjdGl2aXR5Q29yZUVsZW1lbnRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjb3JlRWxlbWVudHNfanNvbl8xLmRlZmF1bHQpO1xufVxuZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IGFjdGl2aXR5Q29yZUVsZW1lbnRzO1xuZnVuY3Rpb24gb3JnTWFuZGF0b3J5RWxlbWVudHMoKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gWydyZXBvcnRpbmdfb3JnJywgJ25hbWUnXTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG59XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gb3JnTWFuZGF0b3J5RWxlbWVudHM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmZ1bmN0aW9uIGRhdGVGb3JtYXQoZGF0ZSwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9ICdNTU1NIERELCBZWVlZJzsgfVxuICAgIHZhciBmb3JtYXRfZGF0ZTtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICBjYXNlICdmcm9tTm93JzpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mcm9tTm93KCkgOiAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZm9ybWF0X2RhdGUgPSBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdChmb3JtYXQpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRfZGF0ZTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGRhdGVGb3JtYXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjcnlwdG9fanNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY3J5cHRvLWpzXCIpKTtcbmZ1bmN0aW9uIGVuY3J5cHQoc3RyaW5nLCBrZXkpIHtcbiAgICB2YXIgaXYgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKDE2KTtcbiAgICB2YXIgc2FsdCA9IGNyeXB0b19qc18xLmRlZmF1bHQubGliLldvcmRBcnJheS5yYW5kb20oMjU2KTtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDk5OTtcbiAgICB2YXIgZW5jcnlwdE1ldGhvZExlbmd0aCA9IDI1NiAvIDQ7XG4gICAgdmFyIGhhc2hLZXkgPSBjcnlwdG9fanNfMS5kZWZhdWx0LlBCS0RGMihrZXksIHNhbHQsIHtcbiAgICAgICAgaGFzaGVyOiBjcnlwdG9fanNfMS5kZWZhdWx0LmFsZ28uU0hBNTEyLFxuICAgICAgICBrZXlTaXplOiBlbmNyeXB0TWV0aG9kTGVuZ3RoIC8gOCxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9KTtcbiAgICB2YXIgZW5jcnlwdGVkID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5BRVMuZW5jcnlwdChzdHJpbmcsIGhhc2hLZXksIHtcbiAgICAgICAgbW9kZTogY3J5cHRvX2pzXzEuZGVmYXVsdC5tb2RlLkNCQyxcbiAgICAgICAgaXY6IGl2LFxuICAgIH0pO1xuICAgIHZhciBlbmNyeXB0ZWRTdHJpbmcgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZC5jaXBoZXJ0ZXh0KTtcbiAgICB2YXIgb3V0cHV0ID0ge1xuICAgICAgICBjaXBoZXJ0ZXh0OiBlbmNyeXB0ZWRTdHJpbmcsXG4gICAgICAgIGl2OiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5IZXguc3RyaW5naWZ5KGl2KSxcbiAgICAgICAgc2FsdDogY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuSGV4LnN0cmluZ2lmeShzYWx0KSxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9O1xuICAgIHJldHVybiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGNyeXB0b19qc18xLmRlZmF1bHQuZW5jLlV0ZjgucGFyc2UoSlNPTi5zdHJpbmdpZnkob3V0cHV0KSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZW5jcnlwdDtcbiIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBHZXQgY3VycmVudCBhY3Rpdml0eSB0aXRsZVxuICpcbiAqIEByZXR1cm4gdGl0bGUgdGV4dFxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBnZXRBY3Rpdml0eVRpdGxlKGRhdGEsIGxhbmd1YWdlKSB7XG4gICAgdmFyIHRpdGxlID0gJ1VudGl0bGVkJztcbiAgICAvLyB0aXRsZSByZXR1cm4gaWYgbGFuZ3VhZ2UgZXhpc3QgaW4gZGF0YVxuICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgZGF0YV8xID0gZGF0YTsgX2kgPCBkYXRhXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgdCA9IGRhdGFfMVtfaV07XG4gICAgICAgICAgICBpZiAodC5sYW5ndWFnZSAmJiB0Lmxhbmd1YWdlID09PSBsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdC5uYXJyYXRpdmUgJiYgdC5uYXJyYXRpdmUgIT09ICcnID8gdC5uYXJyYXRpdmUgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBkZWZhdWx0IHRpdGxlIHJldHVybiBpZiBsYW5ndWFnZSBkb2VzIG5vdCBleGlzdHMgaW4gZGF0YVxuICAgICAgICB0aXRsZSA9XG4gICAgICAgICAgICBkYXRhWycwJ10ubmFycmF0aXZlICYmIGRhdGFbJzAnXS5uYXJyYXRpdmUgIT09ICcnXG4gICAgICAgICAgICAgICAgPyBkYXRhWycwJ10ubmFycmF0aXZlXG4gICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBnZXRBY3Rpdml0eVRpdGxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVzZVNoYXJlZE1pbmltaXplID0gdm9pZCAwO1xuLy8gdXNlU2hhcmVkU3RhdGUuanNcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHVzZVNoYXJlZE1pbmltaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgnaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCcsIGZhbHNlKTtcbiAgICByZXR1cm4gaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZDtcbn07XG5leHBvcnRzLnVzZVNoYXJlZE1pbmltaXplID0gdXNlU2hhcmVkTWluaW1pemU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNFdmVyeVZhbHVlTnVsbCA9IGV4cG9ydHMub25seURlcHJlY2F0ZWRTdGF0dXNNYXAgPSBleHBvcnRzLmdlbmVyYXRlVXNlcm5hbWUgPSBleHBvcnRzLnRydW5jYXRlVGV4dCA9IGV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBleHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gZXhwb3J0cy5zZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSA9IGV4cG9ydHMuaXNKc29uID0gZXhwb3J0cy5yZWR1Y2VEb2N1bWVudExpbmsgPSBleHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gZXhwb3J0cy5nZXRMb2NhdGlvbiA9IHZvaWQgMDtcbnZhciBuYW5vaWRfMSA9IHJlcXVpcmUoXCJuYW5vaWRcIik7XG5mdW5jdGlvbiBnZXRMb2NhdGlvbihkYXRhKSB7XG4gICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgIGxvY2F0aW9ucyA9IGRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnJlZmVyZW5jZTtcbiAgICB9KTtcbiAgICB2YXIgbGFzdExvY2F0aW9uID0gbG9jYXRpb25zLnNsaWNlKC0xKVswXTtcbiAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuc2xpY2UoMCwgLTEpO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbG9jYXRpb25zLmpvaW4oJywgJykgKyAnICcgKyAnYW5kJyArICcgJyArIGxhc3RMb2NhdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXN0TG9jYXRpb247XG4gICAgfVxufVxuZXhwb3J0cy5nZXRMb2NhdGlvbiA9IGdldExvY2F0aW9uO1xuZnVuY3Rpb24gY291bnREb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaykge1xuICAgIHZhciBkb2N1bWVudENvdW50ID0gMDtcbiAgICBmb3IgKHZhciBkb2N1bWVudF8xIGluIGRvY3VtZW50X2xpbmspIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2RvY3VtZW50XzFdLCBbXSk7XG4gICAgICAgIGlmICghcmVzdWx0LmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtID09PSBudWxsOyB9KSkge1xuICAgICAgICAgICAgZG9jdW1lbnRDb3VudCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudENvdW50O1xufVxuZXhwb3J0cy5jb3VudERvY3VtZW50TGluayA9IGNvdW50RG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmssIHZhbHVlcykge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnRfbGluayA9PT0gJ29iamVjdCcgJiYgZG9jdW1lbnRfbGluaykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICAgICAgdmFsdWVzLmNvbmNhdChyZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGlua1trZXldLCB2YWx1ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFsdWVzLnB1c2goZG9jdW1lbnRfbGluayk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG59XG5leHBvcnRzLnJlZHVjZURvY3VtZW50TGluayA9IHJlZHVjZURvY3VtZW50TGluaztcbmZ1bmN0aW9uIGlzSnNvbihzdHIpIHtcbiAgICB0cnkge1xuICAgICAgICBKU09OLnBhcnNlKHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnRzLmlzSnNvbiA9IGlzSnNvbjtcbmZ1bmN0aW9uIHNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIuc3BsaXQoJyAnKS5qb2luKCctJyk7XG59XG5leHBvcnRzLnNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlID0gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2U7XG5mdW5jdGlvbiBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShzdHIpIHtcbiAgICB2YXIgd29yZHMgPSBzdHIuc3BsaXQoJ18nKTtcbiAgICB2YXIgc2VudGVuY2UgPSB3b3Jkc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmRzWzBdLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB3b3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZW50ZW5jZSArPSAnICcgKyB3b3Jkc1tpXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc2VudGVuY2U7XG59XG5leHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gc25ha2VDYXNlVG9TZW50ZW5jZUNhc2U7XG5mdW5jdGlvbiBrZWJhYkNhc2VUb1NuYWtlY2FzZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLy0vZywgJ18nKTtcbn1cbmV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZTtcbmZ1bmN0aW9uIHRydW5jYXRlVGV4dCh0ZXh0LCBtYXhMZW5ndGgpIHtcbiAgICBpZiAodGV4dC5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKDAsIG1heExlbmd0aCkgKyAnLi4uJztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG59XG5leHBvcnRzLnRydW5jYXRlVGV4dCA9IHRydW5jYXRlVGV4dDtcbmZ1bmN0aW9uIGdlbmVyYXRlVXNlcm5hbWUoZnVsbG5hbWUpIHtcbiAgICBpZiAoZnVsbG5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgc25ha2VDYXNlU3RyaW5nID0gZnVsbG5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgICAgIHZhciByYW5kb21EaWdpdHMgPSAoMCwgbmFub2lkXzEuY3VzdG9tQWxwaGFiZXQpKCcwMTIzNDU2Nzg5JywgMik7XG4gICAgICAgIHJldHVybiBzbmFrZUNhc2VTdHJpbmcgKyAnXycgKyBwYXJzZUludChyYW5kb21EaWdpdHMoKSk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmV4cG9ydHMuZ2VuZXJhdGVVc2VybmFtZSA9IGdlbmVyYXRlVXNlcm5hbWU7XG5mdW5jdGlvbiBvbmx5RGVwcmVjYXRlZFN0YXR1c01hcChlbGVtZW50cykge1xuICAgIHZhciBkZXByZWNhdGVkU3RhdHVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhlbGVtZW50cykubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgaW4gZWxlbWVudHMgJiYgJ2RlcHJlY2F0aW9uX3N0YXR1c19tYXAnIGluIGVsZW1lbnRzW2ldKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBkZXByZWNhdGVkU3RhdHVzLnB1c2goZWxlbWVudHNbaV1bJ2RlcHJlY2F0aW9uX3N0YXR1c19tYXAnXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlcHJlY2F0ZWRTdGF0dXM7XG59XG5leHBvcnRzLm9ubHlEZXByZWNhdGVkU3RhdHVzTWFwID0gb25seURlcHJlY2F0ZWRTdGF0dXNNYXA7XG5mdW5jdGlvbiBpc0V2ZXJ5VmFsdWVOdWxsKGRhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZXR1cm4gZGF0YS5ldmVyeShmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXNFdmVyeVZhbHVlTnVsbChpdGVtKTsgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGRhdGEpLmV2ZXJ5KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gaXNFdmVyeVZhbHVlTnVsbCh2YWx1ZSk7IH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGEgPT09IG51bGw7XG4gICAgfVxufVxuZXhwb3J0cy5pc0V2ZXJ5VmFsdWVOdWxsID0gaXNFdmVyeVZhbHVlTnVsbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jbiA9IHZvaWQgMDtcbnZhciBjbHN4XzEgPSByZXF1aXJlKFwiY2xzeFwiKTtcbnZhciB0YWlsd2luZF9tZXJnZV8xID0gcmVxdWlyZShcInRhaWx3aW5kLW1lcmdlXCIpO1xuZnVuY3Rpb24gY24oKSB7XG4gICAgdmFyIGlucHV0cyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGlucHV0c1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gKDAsIHRhaWx3aW5kX21lcmdlXzEudHdNZXJnZSkoKDAsIGNsc3hfMS5jbHN4KShpbnB1dHMpKTtcbn1cbmV4cG9ydHMuY24gPSBjbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51c2VTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICBzZWxlY3RlZEFjdGl2aXRpZXM6IFtdLFxuICAgIGJ1bGtQdWJsaXNoTGVuZ3RoOiAwLFxuICAgIGNhbmNlbFVwbG9hZDogZmFsc2UsXG4gICAgc3RhcnRCdWxrUHVibGlzaDogZmFsc2UsXG4gICAgc3RhcnRWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICBzdGFydENvcmVWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICBzdGFydFB1Ymxpc2hpbmdSZXRyeTogZmFsc2UsXG4gICAgdmFsaWRhdGlvblJ1bm5pbmc6IGZhbHNlLFxuICAgIHZhbGlkYXRpbmdBY3Rpdml0aWVzOiAnJyxcbiAgICBtYXhpbWl6ZVhsczogdHJ1ZSxcbiAgICBzdGFydFhsc0Rvd25sb2FkOiBmYWxzZSxcbiAgICBjb21wbGV0ZVhsc0Rvd25sb2FkOiBmYWxzZSxcbiAgICBjYW5jZWxEb3dubG9hZDogZmFsc2UsXG4gICAgY2xvc2VYbHNNb2RlbDogZmFsc2UsXG4gICAgdmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lczogW10sXG4gICAgYnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiB7XG4gICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlfaWQ6IDAsXG4gICAgICAgICAgICAgICAgYWN0aXZpdHlfdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uX2lkOiAwLFxuICAgICAgICAgICAgam9iX2JhdGNoX3V1aWQ6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1czoge1xuICAgICAgICBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvbk5hbWVzOiBbXSxcbiAgICAgICAgdmFsaWRhdGlvblN0YXRzOiB7XG4gICAgICAgICAgICBjb21wbGV0ZTogMCxcbiAgICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICAgICAgZmFpbGVkOiAwLFxuICAgICAgICB9LFxuICAgICAgICBpbXBvcnRlZEFjdGl2aXRpZXNMaXN0OiBbXSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25FcnJvcjogZmFsc2UsXG4gICAgICAgIGNvbXBsZXRlZFN0ZXBzOiBbXSxcbiAgICAgICAgcHVibGlzaGluZzoge1xuICAgICAgICAgICAgcmVzcG9uc2U6IG51bGwsXG4gICAgICAgICAgICBhY3Rpdml0aWVzOiBudWxsLFxuICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBwdWJsaXNoQWxlcnRWYWx1ZTogZmFsc2UsXG4gICAgaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZDogZmFsc2UsXG4gICAgc2hvd0J1bGtwdWJsaXNoOiB0cnVlLFxuICAgIHN0YXJ0TmV3UHVibGlzaGluZzoge1xuICAgICAgICBzdGF0ZTogZmFsc2UsXG4gICAgfSxcbiAgICBhY3Rpdml0aWVzTGlzdDoge30sXG59O1xudmFyIG11dGF0aW9ucyA9IHtcbiAgICBtdXRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNsb3NlWGxzTW9kZWwgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5idWxrUHVibGlzaExlbmd0aCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jYW5jZWxVcGxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5tYXhpbWl6ZVhscyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbERvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRCdWxrUHVibGlzaCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydFZhbGlkYXRpb246IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydFZhbGlkYXRpb24gPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlVmFsaWRhdGluZ0FjdGl2aXRpZXM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS52YWxpZGF0aW5nQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydENvcmVWYWxpZGF0aW9uOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRDb3JlVmFsaWRhdGlvbiA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVQdWJsaXNoUmV0cnk6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydFB1Ymxpc2hpbmdSZXRyeSA9IHBheWxvYWQ7XG4gICAgfSxcbn07XG52YXIgYWN0aW9ucyA9IHtcbiAgICB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2xvc2VYbHNNb2RlbCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNhbmNlbFVwbG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZU1heGltaXplWGxzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydFhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydEJ1bGtQdWJsaXNoJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydFZhbGlkYXRpb246IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydENvcmVWYWxpZGF0aW9uOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydENvcmVWYWxpZGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVQdWJsaXNoUmV0cnk6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVB1Ymxpc2hSZXRyeScsIHBheWxvYWQpO1xuICAgIH0sXG59O1xudmFyIGFjdGl2aXR5TGlzdFN0b3JlID0gKDAsIHZ1ZXhfMS5jcmVhdGVTdG9yZSkoe1xuICAgIHN0YXRlOiBzdGF0ZSxcbiAgICBtdXRhdGlvbnM6IG11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zLFxufSk7XG5mdW5jdGlvbiB1c2VTdG9yZSgpIHtcbiAgICByZXR1cm4gYWN0aXZpdHlMaXN0U3RvcmU7XG59XG5leHBvcnRzLnVzZVN0b3JlID0gdXNlU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGV0YWlsU3RvcmUgPSB2b2lkIDA7XG52YXIgdnVleF8xID0gcmVxdWlyZShcInZ1ZXhcIik7XG52YXIgc3RhdGUgPSB7XG4gICAgdW5QdWJsaXNoZWQ6IGZhbHNlLFxuICAgIHNob3dQdWJsaXNoZWQ6IGZhbHNlLFxuICAgIHB1Ymxpc2hFcnJvcnM6IFtdLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgYnVsa3B1Ymxpc2hMZW5ndGg6IDAsXG59O1xudmFyIG11dGF0aW9ucyA9IHtcbiAgICBtdXRhdGVVblB1Ymxpc2hlZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnVuUHVibGlzaGVkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVNob3dQdWJsaXNoZWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zaG93UHVibGlzaGVkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVB1Ymxpc2hFcnJvcnM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoRXJyb3JzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUlzTG9hZGluZzogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmlzTG9hZGluZyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVCdWxrcHVibGlzaExlbmd0aDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtwdWJsaXNoTGVuZ3RoID0gcGF5bG9hZDtcbiAgICB9LFxufTtcbnZhciBhY3Rpb25zID0ge1xuICAgIHVwZGF0ZVVuUHVibGlzaGVkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVVblB1Ymxpc2hlZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlU2hvd1B1Ymxpc2hlZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlU2hvd1B1Ymxpc2hlZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlUHVibGlzaEVycm9yczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlUHVibGlzaEVycm9ycycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlSXNMb2FkaW5nOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVJc0xvYWRpbmcnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVCdWxrcHVibGlzaExlbmd0aCcsIHBheWxvYWQpO1xuICAgIH0sXG59O1xudmFyIGFjdGl2aXR5RGV0YWlsU3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlLFxuICAgIG11dGF0aW9uczogbXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnMsXG59KTtcbmZ1bmN0aW9uIGRldGFpbFN0b3JlKCkge1xuICAgIHJldHVybiBhY3Rpdml0eURldGFpbFN0b3JlO1xufVxuZXhwb3J0cy5kZXRhaWxTdG9yZSA9IGRldGFpbFN0b3JlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVzZVN0b3JlID0gZXhwb3J0cy5zdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZV8xID0gcmVxdWlyZShcIi4vc2V0dGluZy9zdGF0ZVwiKTtcbnZhciBtdXRhdGlvbl8xID0gcmVxdWlyZShcIi4vc2V0dGluZy9tdXRhdGlvblwiKTtcbnZhciBhY3Rpb25zXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL2FjdGlvbnNcIik7XG5leHBvcnRzLnN0b3JlID0gKDAsIHZ1ZXhfMS5jcmVhdGVTdG9yZSkoe1xuICAgIHN0YXRlOiBzdGF0ZV8xLnN0YXRlLFxuICAgIG11dGF0aW9uczogbXV0YXRpb25fMS5tdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9uc18xLmFjdGlvbnMsXG59KTtcbmZ1bmN0aW9uIHVzZVN0b3JlKCkge1xuICAgIHJldHVybiBleHBvcnRzLnN0b3JlO1xufVxuZXhwb3J0cy51c2VTdG9yZSA9IHVzZVN0b3JlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2E7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmFjdGlvbnMgPSBleHBvcnRzLkFjdGlvblR5cGVzID0gdm9pZCAwO1xudmFyIG11dGF0aW9uXzEgPSByZXF1aXJlKFwiLi9tdXRhdGlvblwiKTtcbnZhciBBY3Rpb25UeXBlcztcbihmdW5jdGlvbiAoQWN0aW9uVHlwZXMpIHtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiXSA9IFwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiXSA9IFwiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiXSA9IFwiVVBEQVRFX0RFRkFVTFRfRVJST1JcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9JU19MT0FESU5HXCJdID0gXCJVUERBVEVfSVNfTE9BRElOR1wiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0JVTEtQVUJMSVNIX0xFTkdUSFwiXSA9IFwiVVBEQVRFX0JVTEtQVUJMSVNIX0xFTkdUSFwiO1xufSkoQWN0aW9uVHlwZXMgPSBleHBvcnRzLkFjdGlvblR5cGVzIHx8IChleHBvcnRzLkFjdGlvblR5cGVzID0ge30pKTtcbmV4cG9ydHMuYWN0aW9ucyA9IChfYSA9IHt9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk1dID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STSwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk9dID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hFUl9JTkZPLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0VSUk9SXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0VSUk9SLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFU10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVMsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfRVJST1JdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfRVJST1IsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0lTX0xPQURJTkddID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuSVNfTE9BRElORywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLkJVTEtQVUJMSVNIX0xFTkdUSCwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubXV0YXRpb25zID0gZXhwb3J0cy5NdXRhdGlvblR5cGVzID0gdm9pZCAwO1xudmFyIE11dGF0aW9uVHlwZXM7XG4oZnVuY3Rpb24gKE11dGF0aW9uVHlwZXMpIHtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIl0gPSBcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCJdID0gXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfRVJST1JcIl0gPSBcIlVQREFURV9ERUZBVUxUX0VSUk9SXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIklTX0xPQURJTkdcIl0gPSBcIklTX0xPQURJTkdcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiQlVMS1BVQkxJU0hfTEVOR1RIXCJdID0gXCJCVUxLUFVCTElTSF9MRU5HVEhcIjtcbn0pKE11dGF0aW9uVHlwZXMgPSBleHBvcnRzLk11dGF0aW9uVHlwZXMgfHwgKGV4cG9ydHMuTXV0YXRpb25UeXBlcyA9IHt9KSk7XG5leHBvcnRzLm11dGF0aW9ucyA9IChfYSA9IHt9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STV0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaGluZ0Zvcm1bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hFUl9JTkZPXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoaW5nSW5mb1twYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVNdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRGb3JtW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0VSUk9SXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoaW5nRXJyb3JbcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfRVJST1JdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5JU19MT0FESU5HXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0RXJyb3JbcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuQlVMS1BVQkxJU0hfTEVOR1RIXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0RXJyb3JbcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zdGF0ZSA9IHZvaWQgMDtcbmV4cG9ydHMuc3RhdGUgPSB7XG4gICAgcHVibGlzaGluZ0Zvcm06IHtcbiAgICAgICAgb3JnYW5pemF0aW9uX2lkOiAnJyxcbiAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgYXBpX3Rva2VuOiAnJyxcbiAgICAgICAgdG9rZW5fc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIHB1Ymxpc2hpbmdJbmZvOiB7XG4gICAgICAgIHB1Ymxpc2hlcl92ZXJpZmljYXRpb246IGZhbHNlLFxuICAgICAgICB0b2tlbl92ZXJpZmljYXRpb246IGZhbHNlLFxuICAgICAgICBpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZDogZmFsc2UsXG4gICAgfSxcbiAgICBkZWZhdWx0Rm9ybToge1xuICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgIGhpZXJhcmNoeTogJycsXG4gICAgICAgIGxpbmtlZF9kYXRhX3VyaTogJycsXG4gICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIGJ1ZGdldF9ub3RfcHJvdmlkZWQ6ICcnLFxuICAgICAgICBkZWZhdWx0X2NvbGxhYm9yYXRpb25fdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmxvd190eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9maW5hbmNlX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2FpZF90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF90aWVkX3N0YXR1czogJycsXG4gICAgfSxcbiAgICBwdWJsaXNoaW5nRXJyb3I6IHtcbiAgICAgICAgYXBpX3Rva2VuOiAnJyxcbiAgICB9LFxuICAgIGRlZmF1bHRFcnJvcjoge1xuICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgIGhpZXJhcmNoeTogJycsXG4gICAgICAgIGxpbmtlZF9kYXRhX3VyaTogJycsXG4gICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIGJ1ZGdldF9ub3RfcHJvdmlkZWQ6ICcnLFxuICAgICAgICBkZWZhdWx0X2NvbGxhYm9yYXRpb25fdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmxvd190eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9maW5hbmNlX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2FpZF90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF90aWVkX3N0YXR1czogJycsXG4gICAgfSxcbiAgICBpc0xvYWRpbmc6IHt9LFxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SZXBvcnRpbmdPcmdhbml6YXRpb24gPSBleHBvcnRzLlBsYW5uZWREaXNidXJzZW1lbnQgPSBleHBvcnRzLkh1bWFuaXRhcmlhblNjb3BlID0gZXhwb3J0cy5UYWcgPSBleHBvcnRzLlBvbGljeU1hcmtlciA9IGV4cG9ydHMuUmVsYXRlZEFjdGl2aXR5ID0gZXhwb3J0cy5Db25kaXRpb25zID0gZXhwb3J0cy5MZWdhY3lEYXRhID0gZXhwb3J0cy5TZWN0b3IgPSBleHBvcnRzLkxvY2F0aW9uID0gZXhwb3J0cy5UcmFuc2FjdGlvbnMgPSBleHBvcnRzLlJlY2lwaWVudFJlZ2lvbiA9IGV4cG9ydHMuUmVjaXBpZW50Q291bnRyeSA9IGV4cG9ydHMuUGFydGljaXBhdGluZ09yZyA9IGV4cG9ydHMuQ29udGFjdEluZm8gPSBleHBvcnRzLkFjdGl2aXR5RGF0ZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSBleHBvcnRzLlRpdGxlRWxlbWVudCA9IGV4cG9ydHMuT3RoZXJJZGVudGlmaWVyID0gZXhwb3J0cy5JYXRpSWRlbnRpZmllciA9IGV4cG9ydHMuUmVzdWx0ID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgUmVzdWx0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVzdWx0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlc3VsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlc3VsdF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBJYXRpSWRlbnRpZmllcl92dWVfMSA9IHJlcXVpcmUoXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIklhdGlJZGVudGlmaWVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSWF0aUlkZW50aWZpZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgT3RoZXJJZGVudGlmaWVyX3Z1ZV8xID0gcmVxdWlyZShcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk90aGVySWRlbnRpZmllclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KE90aGVySWRlbnRpZmllcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUaXRsZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RpdGxlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRpdGxlRWxlbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpdGxlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERlc2NyaXB0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGVzY3JpcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEZXNjcmlwdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBY3Rpdml0eURhdGVfdnVlXzEgPSByZXF1aXJlKFwiLi9BY3Rpdml0eURhdGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWN0aXZpdHlEYXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWN0aXZpdHlEYXRlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIENvbnRhY3RJbmZvX3Z1ZV8xID0gcmVxdWlyZShcIi4vQ29udGFjdEluZm8udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29udGFjdEluZm9cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChDb250YWN0SW5mb192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQYXJ0aWNpcGF0aW5nT3JnX3Z1ZV8xID0gcmVxdWlyZShcIi4vUGFydGljaXBhdGluZ09yZy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQYXJ0aWNpcGF0aW5nT3JnXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUGFydGljaXBhdGluZ09yZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50Q291bnRyeS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRDb3VudHJ5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjaXBpZW50Q291bnRyeV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNpcGllbnRSZWdpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRSZWdpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50UmVnaW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjaXBpZW50UmVnaW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRyYW5zYWN0aW9uc192dWVfMSA9IHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9ucy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUcmFuc2FjdGlvbnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUcmFuc2FjdGlvbnNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgTG9jYXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9Mb2NhdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMb2NhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KExvY2F0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFNlY3Rvcl92dWVfMSA9IHJlcXVpcmUoXCIuL1NlY3Rvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTZWN0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChTZWN0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgTGVnYWN5RGF0YV92dWVfMSA9IHJlcXVpcmUoXCIuL0xlZ2FjeURhdGEudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTGVnYWN5RGF0YVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KExlZ2FjeURhdGFfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29uZGl0aW9uc192dWVfMSA9IHJlcXVpcmUoXCIuL0NvbmRpdGlvbnMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29uZGl0aW9uc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KENvbmRpdGlvbnNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVsYXRlZEFjdGl2aXR5X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlbGF0ZWRBY3Rpdml0eVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlbGF0ZWRBY3Rpdml0eV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQb2xpY3lNYXJrZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9Qb2xpY3lNYXJrZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUG9saWN5TWFya2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUG9saWN5TWFya2VyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRhZ192dWVfMSA9IHJlcXVpcmUoXCIuL1RhZy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUYWdfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSHVtYW5pdGFyaWFuU2NvcGVfdnVlXzEgPSByZXF1aXJlKFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJIdW1hbml0YXJpYW5TY29wZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBsYW5uZWREaXNidXJzZW1lbnRfdnVlXzEgPSByZXF1aXJlKFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBsYW5uZWREaXNidXJzZW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQbGFubmVkRGlzYnVyc2VtZW50X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRpbmdPcmdhbml6YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXBvcnRpbmdPcmdhbml6YXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUGVyaW9kID0gZXhwb3J0cy5CYXNlbGluZSA9IGV4cG9ydHMuRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5SZWZlcmVuY2UgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gZXhwb3J0cy5BZ2dyZWdhdGlvblN0YXR1cyA9IGV4cG9ydHMuQXNjZW5kaW5nID0gZXhwb3J0cy5NZWFzdXJlID0gZXhwb3J0cy5UaXRsZUVsZW1lbnQgPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBUaXRsZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RpdGxlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRpdGxlRWxlbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpdGxlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIE1lYXN1cmVfdnVlXzEgPSByZXF1aXJlKFwiLi9NZWFzdXJlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk1lYXN1cmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChNZWFzdXJlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEluZGljYXRvckFzY2VuZGluZ192dWVfMSA9IHJlcXVpcmUoXCIuL0luZGljYXRvckFzY2VuZGluZy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBc2NlbmRpbmdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWdncmVnYXRpb25TdGF0dXNfdnVlXzEgPSByZXF1aXJlKFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBZ2dyZWdhdGlvblN0YXR1c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFnZ3JlZ2F0aW9uU3RhdHVzX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERlc2NyaXB0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGVzY3JpcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEZXNjcmlwdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWZlcmVuY2VfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWZlcmVuY2UudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmZXJlbmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVmZXJlbmNlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERvY3VtZW50TGlua192dWVfMSA9IHJlcXVpcmUoXCIuL0RvY3VtZW50TGluay52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudExpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEb2N1bWVudExpbmtfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQmFzZWxpbmVfdnVlXzEgPSByZXF1aXJlKFwiLi9CYXNlbGluZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCYXNlbGluZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEJhc2VsaW5lX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBlcmlvZF92dWVfMSA9IHJlcXVpcmUoXCIuL1BlcmlvZC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQZXJpb2RcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQZXJpb2RfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWN0dWFsVmFsdWUgPSBleHBvcnRzLlRhcmdldFZhbHVlID0gdm9pZCAwO1xudmFyIFRhcmdldFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGFyZ2V0VmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGFyZ2V0VmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUYXJnZXRWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBY3R1YWxWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FjdHVhbFZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFjdHVhbFZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWN0dWFsVmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSW5kaWNhdG9yID0gZXhwb3J0cy5SZXN1bHRUeXBlID0gZXhwb3J0cy5SZWZlcmVuY2UgPSBleHBvcnRzLkRvY3VtZW50TGluayA9IGV4cG9ydHMuVGl0bGVEZXNjcmlwdGlvbiA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFRpdGxlRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRpdGxlRGVzY3JpcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaXRsZURlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERvY3VtZW50TGlua192dWVfMSA9IHJlcXVpcmUoXCIuL0RvY3VtZW50TGluay52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudExpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEb2N1bWVudExpbmtfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVmZXJlbmNlX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVmZXJlbmNlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlZmVyZW5jZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlZmVyZW5jZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXN1bHRUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVzdWx0VHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXN1bHRUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVzdWx0VHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBJbmRpY2F0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9JbmRpY2F0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSW5kaWNhdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSW5kaWNhdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRpZWRTdGF0dXMgPSBleHBvcnRzLkZpbmFuY2VUeXBlID0gZXhwb3J0cy5GbG93VHlwZSA9IGV4cG9ydHMuUmVjaXBpZW50UmVnaW9uID0gZXhwb3J0cy5SZWNpcGllbnRDb3VudHJ5ID0gZXhwb3J0cy5TZWN0b3IgPSBleHBvcnRzLkRpc2J1cnNlbWVudENoYW5uZWwgPSBleHBvcnRzLlJlY2VpdmVyT3JnYW5pemF0aW9uID0gZXhwb3J0cy5Qcm92aWRlck9yZ2FuaXphdGlvbiA9IGV4cG9ydHMuVmFsdWUgPSBleHBvcnRzLlRyYW5zYWN0aW9uRGF0ZSA9IGV4cG9ydHMuVHJhbnNhY3Rpb25UeXBlID0gZXhwb3J0cy5BaWRUeXBlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIERlc2NyaXB0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGVzY3JpcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEZXNjcmlwdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBaWRUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWlkVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBaWRUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWlkVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUcmFuc2FjdGlvblR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UcmFuc2FjdGlvblR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVHJhbnNhY3Rpb25UeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVHJhbnNhY3Rpb25UeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRyYW5zYWN0aW9uRGF0ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUcmFuc2FjdGlvbkRhdGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUcmFuc2FjdGlvbkRhdGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9WYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFByb3ZpZGVyT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUHJvdmlkZXJPcmdhbml6YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQcm92aWRlck9yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2VpdmVyT3JnYW5pemF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjZWl2ZXJPcmdhbml6YXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGlzYnVyc2VtZW50Q2hhbm5lbF92dWVfMSA9IHJlcXVpcmUoXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGlzYnVyc2VtZW50Q2hhbm5lbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgU2VjdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vU2VjdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNlY3RvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFNlY3Rvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50Q291bnRyeS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRDb3VudHJ5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjaXBpZW50Q291bnRyeV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNpcGllbnRSZWdpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRSZWdpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50UmVnaW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjaXBpZW50UmVnaW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEZsb3dUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vRmxvd1R5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmxvd1R5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChGbG93VHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBGaW5hbmNlVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL0ZpbmFuY2VUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZpbmFuY2VUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRmluYW5jZVR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGllZFN0YXR1c192dWVfMSA9IHJlcXVpcmUoXCIuL1RpZWRTdGF0dXMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGllZFN0YXR1c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpZWRTdGF0dXNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5Ub3RhbEV4cGVuZGl0dXJlID0gZXhwb3J0cy5SZWNpcGllbnRDb3VudHJ5QnVkZ2V0ID0gZXhwb3J0cy5SZXBvcnRpbmdSZWdpb25CdWRnZXQgPSBleHBvcnRzLlJlcG9ydGluZ09yZ0J1ZGdldCA9IGV4cG9ydHMuVG90YWxCdWRnZXQgPSBleHBvcnRzLlJlcG9ydGluZ09yZ2FuaXNhdGlvbiA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRpbmdPcmdhbmlzYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXBvcnRpbmdPcmdhbmlzYXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVG90YWxCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9Ub3RhbEJ1ZGdldC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb3RhbEJ1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRvdGFsQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlcG9ydGluZ09yZ0J1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRpbmdPcmdCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXBvcnRpbmdPcmdCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWNpcGllbnRDb3VudHJ5QnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRDb3VudHJ5QnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUb3RhbEV4cGVuZGl0dXJlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVG90YWxFeHBlbmRpdHVyZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb3RhbEV4cGVuZGl0dXJlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVG90YWxFeHBlbmRpdHVyZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEb2N1bWVudExpbmtfdnVlXzEgPSByZXF1aXJlKFwiLi9Eb2N1bWVudExpbmsudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRMaW5rXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRG9jdW1lbnRMaW5rX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cIm1haW4gbXQtMTAgc206bXgtMTAgeGw6bXgtMjQgeGw6cHgtMVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibWFpbl9fY29udGFpbmVyIHJvdW5kZWQtbGcgYmctYmx1ZWNvcmFsIHBiLTggc206bWItMTAgbWQ6bWItMjAgbWQ6ZmxleCBtZDpiZy1ub25lIG1kOnBiLTBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsdWVjb3JhbCBweC0zIHBiLTcyIHB0LTUgdGV4dC13aGl0ZSBzbTpyb3VuZGVkLWwtbGcgc206cm91bmRlZC1yLWxnIHNtOnB4LTUgc206cHQtMTAgbWQ6YmFzaXMtMi80IG1kOnJvdW5kZWQtci1ub25lIG1kOnBiLTE2IGxnOnBiLTQ0IGxnOnB0LTQ0IHhsOnB4LTI0XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRfX2NvbnRhaW5lciByb3VuZGVkLWxnIHAtNSBzbTpwLTEwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWZ0X190aXRsZSBmb250LWJvbGRcIj5JQVRJIFB1Ymxpc2hlcjwvc3Bhbj5cbiAgICAgICAgICA8cCBjbGFzcz1cInB0LTIgc206cGItOCBzbTpwdC02XCI+XG4gICAgICAgICAgICBXZWxjb21lIHRvIElBVEkgUHVibGlzaGVyLiBUaGlzIGxldHMgeW91IHB1Ymxpc2ggSUFUSSBkYXRhIG9uIHlvdXJcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbidzIGRldmVsb3BtZW50IGFuZCBodW1hbml0YXJpYW4gYWN0aXZpdGllcy5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPHNwYW4gdi1pZj1cInBhZ2VDb250ZW50ICE9PSAnSm9pbiBOb3cnXCI+XG4gICAgICAgICAgICAgIFVzZSB0aGlzIHBhZ2UgdG8gY3JlYXRlIGEgbmV3IGFjY291bnQgZm9yIHlvdXIgb3JnYW5pc2F0aW9uLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2tcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBwYWdlQ29udGVudCA9PT0gJ0pvaW4gTm93J1xuICAgICAgICAgICAgICAgICAgPyBcIkhhdmVuJ3QgcmVnaXN0ZXJlZCB5ZXQ/XCJcbiAgICAgICAgICAgICAgICAgIDogJ0FscmVhZHkgaGF2ZSBhbiBhY2NvdW50PydcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMSBib3JkZXItYi0yIGJvcmRlci1iLXRyYW5zcGFyZW50IHRleHQtYmFzZSB0ZXh0LXR1cnF1b2lzZSBob3Zlcjpib3JkZXItYi0yIGhvdmVyOmJvcmRlci1iLXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlUGFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlQ29udGVudCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFNpZ25JblxuICAgICAgICB2LWlmPVwicGFnZUNvbnRlbnQgPT09ICdKb2luIE5vdydcIlxuICAgICAgICA6bWVzc2FnZT1cIm1lc3NhZ2VcIlxuICAgICAgICA6aW50ZW50PVwiaW50ZW50XCJcbiAgICAgIC8+XG4gICAgICA8Sm9pbk5vdyB2LWVsc2UgLz5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCBTaWduSW4gZnJvbSAnLi9wYXJ0aWFscy9TaWduSW4udnVlJztcbmltcG9ydCBKb2luTm93IGZyb20gJy4vcGFydGlhbHMvSm9pbk5vdy52dWUnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBjb21wb25lbnRzOiB7XG4gICAgSm9pbk5vdyxcbiAgICBTaWduSW4sXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgcGFnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogJ3NpZ25pbicsXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIGludGVudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBwYWdlQ29udGVudCA9IHJlZihwcm9wcy5wYWdlID09PSAnc2lnbmluJyA/ICdKb2luIE5vdycgOiAnU2lnbiBJbicpO1xuXG4gICAgZnVuY3Rpb24gdG9nZ2xlUGFnZSgpIHtcbiAgICAgIHBhZ2VDb250ZW50LnZhbHVlID1cbiAgICAgICAgcGFnZUNvbnRlbnQudmFsdWUgPT09ICdKb2luIE5vdycgPyAnU2lnbiBJbicgOiAnSm9pbiBOb3cnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYWdlQ29udGVudCxcbiAgICAgIHRvZ2dsZVBhZ2UsXG4gICAgfTtcbiAgfSxcbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzcGlubmVyIGNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4uc3Bpbm5lciB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xufVxuXG4uc3Bpbm5lci5jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMC40NjI5ZW07XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDAuMDc0ZW07XG4gIGhlaWdodDogMC4yNzc3ZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMDU1NWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgLTAuMjIyMmVtO1xuICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcbiAgYW5pbWF0aW9uOiBzcGlubmVyLWZhZGU5MjM0IDFzIGluZmluaXRlIGxpbmVhcjtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDEpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDBzO1xuICBhbmltYXRpb24tZGVsYXk6IDBzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMikge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4wODNzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuMDgzcztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDMwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDMpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMTY2cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjE2NnM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCg0KSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjI0OXM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC4yNDlzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNSkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4zMzJzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuMzMycztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDYpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNDE1cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjQxNXM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTUwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE1MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE1MGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCg3KSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjQ5OHM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC40OThzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoOCkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC41ODFzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNTgxcztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMjEwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjEwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDkpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNjY0cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjY2NHM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCgxMCkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC43NDdzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNzQ3cztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDExKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjgzcztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjgzcztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDEyKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjkxM3M7XG4gIGFuaW1hdGlvbi1kZWxheTogMC45MTNzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzMzBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgzMzBkZWcpO1xufVxuXG5Aa2V5ZnJhbWVzIHNwaW5uZXItZmFkZTkyMzQge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3OTk3YjtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic2hpbW1lcl9fYmxvY2tcIiBzdHlsZT1cIm1heC13aWR0aDogNTE1cHhcIj48L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbi5zaGltbWVyX19ibG9jayB7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLW5hbWU6IHBsYWNlSG9sZGVyU2hpbW1lcjtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICA5MGRlZyxcbiAgICAjZWRlZGVkIDE0LjM2JSxcbiAgICAjZDdkNmQ2IDU2LjI5JSxcbiAgICAjZWRlZGVkIDEwMCVcbiAgKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiAyNDRweCAxMDRweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDhweDtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xufVxuXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lciB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XG4gIH1cblxuICAyMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcbiAgfVxuXG4gIDgwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj48L3NjcmlwdD5cbjxzdHlsZT5cbi5sb2FkZXIge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xuICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGFuaW1hdGlvbjogcm90YXRpb24gMXMgbGluZWFyIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwdC0yLjVcIj5cbiAgICA8cFxuICAgICAgY2xhc3M9XCIhbWItMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwYi0yLjUgdGV4dC1zbSBmb250LWJvbGQgbGVhZGluZy1bMjJweF0gdHJhY2tpbmctbm9ybWFsIHRleHQtYmx1ZWNvcmFsXCJcbiAgICA+XG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cInRleHQteGxcIiBpY29uPVwicHJvZ3Jlc3MtaWNvblwiIC8+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgaGVhZGVyIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc0Jhcl9jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc19iYXJcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyBkZWZpbmVQcm9wcyB9IGZyb20gJ3Z1ZSc7XG5kZWZpbmVQcm9wcyh7XG4gIGhlYWRlcjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnTG9hZGluZy4uJyxcbiAgfSxcbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XG4ucHJvZ3Jlc3NCYXJfY29udGFpbmVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGgtWzdweF0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctWyNDNEM0QzRdO1xufVxuXG4ucHJvZ3Jlc3NfYmFyIHtcbiAgQGFwcGx5IGFic29sdXRlIGgtZnVsbCB3LTI4IHJvdW5kZWQtbGcgYmctc3ByaW5nLTUwO1xuICBhbmltYXRpb246IG1vdmVSaWdodExlZnQgMnMgbGluZWFyIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIG1vdmVSaWdodExlZnQge1xuICAwJSB7XG4gICAgbGVmdDogLTQwcHg7XG4gIH1cbiAgMTAwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm10LTE0XCI+XG4gICAgPGRpdiBjbGFzcz1cInJlc2V0IHRleHQtY2VudGVyXCI+XG4gICAgICA8aDI+UGFzc3dvcmQgUmVjb3Zlcnk8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJtYi01XCI+XG4gICAgICAgIEFuIGVtYWlsIGhhcyBiZWVuIHNlbnQgd2l0aCBmdXJ0aGVyIGluc3RydWN0aW9ucywgcGxlYXNlIGNoZWNrIGl0IG91dFxuICAgICAgICB3aGVuIHlvdSBnZXQgaXQuXG4gICAgICA8L3A+XG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cInZlcmlmaWNhdGlvbiBtLWF1dG9cIiBpY29uPVwiaWMtdmVyaWZpY2F0aW9uXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic21vb3RoIC1tYi03IHB4LTUgcHktNyBzbTpweC0xMCBzbTpweS0xNCBtZDotbWItMjBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBtYXgtdy1bNzAwcHhdXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJvdW5kZWQgYmctd2hpdGUgcHktNCBzaGFkb3ctdGV4dGJveCBzbTpweS04XCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwicHgtNiBweS00IHNtOnB4LTEyIHNtOnB5LTZcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJteS0yIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAgV2hhdCBpcyBJQVRJIFB1Ymxpc2hlcj9cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIElBVEkgUHVibGlzaGVyIGVuYWJsZXMgb3JnYW5pc2F0aW9ucyB0byBwdWJsaXNoIGRhdGEgb24gYWN0aXZpdGllc1xuICAgICAgICAgICAgYW5kIHJlc291cmNlIGZsb3dzIGFjY29yZGluZyB0byB0aGUgSUFUSSBTdGFuZGFyZC4gVGhlIElBVEkgU3RhbmRhcmRcbiAgICAgICAgICAgIGlzIGEgc2V0IG9mIHJ1bGVzIGFuZCBndWlkYW5jZSBvbiBob3cgdG8gcHVibGlzaCB1c2VmdWwgZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIGFuZCBodW1hbml0YXJpYW4gZGF0YS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgPGFydGljbGUgY2xhc3M9XCJweC02IHB5LTQgc206cHgtMTIgc206cHktNlwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTIgdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXCI+XG4gICAgICAgICAgICBVc2UgSUFUSSBQdWJsaXNoZXIgdG86XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJtbC00IG10LTQgbGlzdC1kaXNjIHRleHQtYmFzZSB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgPlJlZ2lzdGVyIHlvdXIgb3JnYW5pc2F0aW9uIHdpdGggYW4gSUFUSSBQdWJsaXNoZXIgYWNjb3VudDwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgPlVuZGVyc3RhbmQgdGhlIGRhdGEgZmllbGRzIGluIHRoZSBJQVRJIFN0YW5kYXJkICh3aXRoIElBVElcbiAgICAgICAgICAgICAgICBTdGFuZGFyZCBSZWZlcmVuY2UgZGVmaW5pdGlvbnMsIGhlbHBmdWwgZXhwbGFuYXRpb25zIGFuZCBsaW5rc1xuICAgICAgICAgICAgICAgIHRvIGd1aWRhbmNlKTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgPlByb3ZpZGUgeW91ciBvcmdhbmlzYXRpb27igJlzIGRhdGEgZWFzaWx5IGJ5IGNvbXBsZXRpbmcgb25saW5lXG4gICAgICAgICAgICAgICAgZm9ybXMuIE9yIHVwbG9hZCBkYXRhIG9uIG11bHRpcGxlIGFjdGl2aXRpZXMgb24gYSBDU1Ygb3IgLnhtbFxuICAgICAgICAgICAgICAgIGZpbGUgd2l0aCB0aGUgQnVsayBVcGxvYWQgZmVhdHVyZTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgPlJ1biBhdXRvbWF0aWMgY2hlY2tzICh2aWEgdGhlIElBVEkgVmFsaWRhdG9yKSBmb3IgZXJyb3JzIGJlZm9yZVxuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmcgeW91ciBkYXRhPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICA+UHVibGlzaCB5b3VyIGRhdGEuIElBVEkgUHVibGlzaGVyIHdpbGwgYWRkIHlvdXIgZGF0YSB0byB0aGVcbiAgICAgICAgICAgICAgICBJQVRJIFJlZ2lzdHJ5ICh3aGVyZSBsaW5rcyB0byBhbGwgSUFUSSBkYXRhIGlzIGZvdW5kKTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgSUFUSSBQdWJsaXNoZXIgaGFzIGJlZW4gYnVpbHQgdG8gc3VwcG9ydCBvcmdhbmlzYXRpb25zIHRoYXQgcHVibGlzaFxuICAgICAgICAgICAgYSBsaW1pdGVkIG51bWJlciBvZiBkZXZlbG9wbWVudCBhbmQgaHVtYW5pdGFyaWFuIGFjdGl2aXRpZXMuIEFuXG4gICAgICAgICAgICDigJhhY3Rpdml0eeKAmSBpcyBhbiBpbmRpdmlkdWFsIHByb2plY3Qgb3IgYW5vdGhlciB1bml0IG9mIGRldmVsb3BtZW50XG4gICAgICAgICAgICBhbmQgaHVtYW5pdGFyaWFuIHdvcmssIHdoaWNoIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZ2FuaXNhdGlvbiB0aGF0XG4gICAgICAgICAgICBpcyBwdWJsaXNoaW5nIHRoZSBkYXRhLiBPcmdhbmlzYXRpb25zIHdobyBwdWJsaXNoIGEgbGltaXRlZCBudW1iZXJcbiAgICAgICAgICAgIG9mIGFjdGl2aXRpZXMgdGVuZCB0byByZXByZXNlbnQgc21hbGwgYW5kIG1lZGl1bSBzaXplZFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9ucy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgTGFyZ2Ugb3JnYW5pc2F0aW9ucywgc3VjaCBhcyBkb25vciBnb3Zlcm5tZW50cyBvciBVTiBhZ2VuY2llc1xuICAgICAgICAgICAgZGVsaXZlcmluZyAxMDArIGFjdGl2aXRpZXMgYXJlIGFkdmlzZWQgbm90IHRvIHVzZSBJQVRJIFB1Ymxpc2hlci5cbiAgICAgICAgICAgIEluc3RlYWQgdGhlc2Ugb3JnYW5pc2F0aW9ucyBsaWtlbHkgbmVlZCB0byB1c2UgYW4gYWx0ZXJuYXRpdmVcbiAgICAgICAgICAgIHRlY2huaWNhbCBzb2x1dGlvbiB0aGF0IGVuYWJsZXMgdGhlIHB1YmxpY2F0aW9uIG9mIGxhcmdlIHZvbHVtZXMgb2ZcbiAgICAgICAgICAgIGRhdGEuIFBsZWFzZSBlbWFpbCB0aGUgSUFUSSBIZWxwZGVzayBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOiBzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmcgPC9hXG4gICAgICAgICAgICA+LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm91bmRlZCBweC02IHB5LTQgc206cHgtMTIgc206cHktNlwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTIgdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXCI+XG4gICAgICAgICAgICBEZXZlbG9wbWVudCBvZiBJQVRJIFB1Ymxpc2hlclxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgSUFUSSBQdWJsaXNoZXIgd2FzIGZpcnN0IGxhdW5jaGVkIGluIERlY2VtYmVyIDIwMjIgYnkgdGhlIElBVElcbiAgICAgICAgICAgIFNlY3JldGFyaWF0IGFuZCBoYXMgYmVlbiBkZXZlbG9wZWQgYnlcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly95b3VuZ2lubm92YXRpb25zLmNvbS5ucC9cIlxuICAgICAgICAgICAgICA+WW91bmcgSW5ub3ZhdGlvbnMgPC9hXG4gICAgICAgICAgICA+LCBhIHNvZnR3YXJlIGRldmVsb3BtZW50IGZpcm0gYmFzZWQgaW4gTmVwYWwuIElBVEkgUHVibGlzaGVyIGlzXG4gICAgICAgICAgICBmdWxseSBhbGlnbmVkIHdpdGggdGhlIElBVEkgU3RhbmRhcmQgWE1MXG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL3NjaGVtYS9cIj5cbiAgICAgICAgICAgICAgc2NoZW1hPC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICBhbmRcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL3J1bGVzZXRzL1wiXG4gICAgICAgICAgICAgID5ydWxlc2V0cyA8L2FcbiAgICAgICAgICAgID4uXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+PC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzbW9vdGggLW1iLTcgcHgtNSBweS03IHNtOnB4LTEwIHNtOnB5LTE0IG1kOi1tYi0yMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIG1heC13LVs3MDBweF1cIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwicm91bmRlZCBiZy13aGl0ZSBweS00IHNoYWRvdy10ZXh0Ym94IHNtOnB5LThcIj5cbiAgICAgICAgPGFydGljbGUgY2xhc3M9XCJweC02IHB5LTQgc206cHgtMTIgc206cHktNlwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlN1cHBvcnQ8L2gzPlxuXG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgSWYgeW91ciBvcmdhbmlzYXRpb24gbmVlZHMgc3VwcG9ydCB0byB1c2UgSUFUSSBQdWJsaXNoZXIgb3IgaGFzXG4gICAgICAgICAgICBxdWVzdGlvbnMgYWJvdXQgd2hhdCBkYXRhIHRvIHB1Ymxpc2ggcGxlYXNlIGNvbnRhY3QgSUFUSeKAmXMgSGVscGRlc2s6XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmdcIlxuICAgICAgICAgICAgICA+c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnLjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICBZb3UgbWF5IGFsc28gam9pbiBJQVRJ4oCZcyBvbmxpbmUgY29tbXVuaXR5IGF0XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vaWF0aWNvbm5lY3Qub3JnL1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIElBVEkgQ29ubmVjdFxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgLCB3aGVyZSB5b3UgY2FuIHBvc3QgbWVzc2FnZXMgYWJvdXQgSUFUSSBwdWJsaXNoaW5nIGluIHRoZVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2lhdGljb25uZWN0Lm9yZy9kYXRhLXB1Ymxpc2hpbmctY29wL2Fib3V0XCJcbiAgICAgICAgICAgICAgPkRhdGEgUHVibGlzaGluZyBDb21tdW5pdHkgb2YgUHJhY3RpY2UuPC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicmlnaHQgam9pbi1ub3cgbS1hdXRvIGZsZXggYmFzaXMtMi80IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbGcgcm91bmRlZC1yLWxnIGJnLXdoaXRlIHB4LTUgcHktNSBzbTpweC03IHNtOnB5LTEwIG1kOm15LTAgbWQ6cm91bmRlZC1sLW5vbmUgbGc6cHktMjggeGw6cHgtMTRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0X19jb250YWluZXIgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgPGgyIGNsYXNzPVwibWItMiBoaWRkZW4gc206YmxvY2tcIj5Kb2luIE5vdzwvaDI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1iLTggdGV4dC1uLTQwIHhsOnByLTZcIj5cbiAgICAgICAgVG8gYmVnaW4sIHlvdXIgb3JnYW5pc2F0aW9uIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgYW4gSUFUSSBwdWJsaXNoZXIuXG4gICAgICAgIFNlbGVjdCBhbiBvcHRpb24gYW5kIHdl4oCZbGwgZ3VpZGUgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzLlxuICAgICAgPC9zcGFuPlxuICAgICAgPGEgaHJlZj1cIi9pYXRpL3JlZ2lzdGVyXCIgY2xhc3M9XCJyaWdodF9fY29udGVudCBtYi02XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodF9faWNvblwiPlxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVwidGV4dC02eGxcIiBpY29uPVwiZGVmYXVsdC0xXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzIG14LTQgeGw6cHgtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIlxuICAgICAgICAgICAgPk15IG9yZ2FuaXNhdGlvbiBpcyBuZXcgdG8gSUFUSTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgbGVhZGluZy01IHRleHQtbi00MFwiPlxuICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIGlmIHlvdXIgb3JnYW5pc2F0aW9uIDx1PmhhcyBub3Q8L3U+IHJlZ2lzdGVyZWQgYW5cbiAgICAgICAgICAgIGFjY291bnQgd2l0aCBJQVRJIG9uIHRoZVxuICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmlhdGlyZWdpc3RyeS5vcmcvXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgPklBVEkgUmVnaXN0cnk8L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVwicmlnaHRfX2Fycm93IHRleHQtMnhsXCIgaWNvbj1cInJpZ2h0LWFycm93XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiL3JlZ2lzdGVyXCIgY2xhc3M9XCJyaWdodF9fY29udGVudCBtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodF9faWNvblwiPlxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVwidGV4dC02eGxcIiBpY29uPVwiZGVmYXVsdC0yXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzIG14LTQgeGw6cHgtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIlxuICAgICAgICAgICAgPk15IG9yZ2FuaXNhdGlvbiBoYXMgcmVnaXN0ZXJlZCB3aXRoIElBVEk8L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhzIGxlYWRpbmctNSB0ZXh0LW4tNDBcIj5cbiAgICAgICAgICAgIFVzZSB0aGlzIG9wdGlvbiBpZiB5b3VyIG9yZ2FuaXNhdGlvbiBoYXMgYWxyZWFkeSByZWdpc3RlcmVkIG9uIHRoZVxuICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmlhdGlyZWdpc3RyeS5vcmcvXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgPklBVEkgUmVnaXN0cnk8L2FcbiAgICAgICAgICAgID4sIGJ1dCBpcyBuZXcgdG8gdXNpbmcgSUFUSSBQdWJsaXNoZXJcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVwicmlnaHRfX2Fycm93IHRleHQtMnhsXCIgaWNvbj1cInJpZ2h0LWFycm93XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1uLTQwXCI+XG4gICAgICAgIElmIHlvdSBhcmUgYSBuZXcgdXNlciBvZiBhbiBvcmdhbmlzYXRpb24gYWxyZWFkeSB1c2luZyBJQVRJIFB1Ymxpc2hlcixcbiAgICAgICAgYW4gYWRtaW4gdXNlciBmcm9tIHlvdXIgb3JnYW5pc2F0aW9uIGNhbiBjcmVhdGUgYW4gYWNjb3VudCBmb3IgeW91LiBJZlxuICAgICAgICB5b3UgbmVlZCBoZWxwLCBvciBhcmUgbm90IHN1cmUgd2hpY2ggb3B0aW9uIHRvIHNlbGVjdCwgcGxlYXNlXG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJib3JkZXItYi0yIGJvcmRlci1iLXRyYW5zcGFyZW50IGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbCBob3Zlcjpib3JkZXItYi0yIGhvdmVyOmJvcmRlci1iLXR1cnF1b2lzZSBob3Zlcjp0ZXh0LWJsdWVjb3JhbFwiXG4gICAgICAgICAgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmdcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgPkNvbnRhY3QgU3VwcG9ydC48L2FcbiAgICAgICAgPjwvc3BhblxuICAgICAgPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uc3Bpbm5lcltkYXRhLXYtMDlhZTFhOGJdIHtcXG4gIGZvbnQtc2l6ZTogMjhweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiAxZW07XFxuICBoZWlnaHQ6IDFlbTtcXG59XFxuLnNwaW5uZXIuY2VudGVyW2RhdGEtdi0wOWFlMWE4Yl0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDAuNDYyOWVtO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lkdGg6IDAuMDc0ZW07XFxuICBoZWlnaHQ6IDAuMjc3N2VtO1xcbiAgYm9yZGVyLXJhZGl1czogMC4wNTU1ZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAtMC4yMjIyZW07XFxuICBhbmltYXRpb246IHNwaW5uZXItZmFkZTkyMzQtMDlhZTFhOGIgMXMgaW5maW5pdGUgbGluZWFyO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCgxKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDBzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDIpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4wODNzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCgzKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMTY2cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoNCkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0OXM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDUpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4zMzJzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoNikge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjQxNXM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxNTBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCg3KSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNDk4cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDgpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC41ODFzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjEwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoOSkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjY2NHM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNDBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCgxMCkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjc0N3M7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCgxMSkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjgzcztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDEyKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuOTEzcztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XFxufVxcbkBrZXlmcmFtZXMgc3Bpbm5lci1mYWRlOTIzNC0wOWFlMWE4YiB7XFxuMCUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTc5OTdiO1xcbn1cXG4xMDAlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFrQkE7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLHFCQUFxQjtFQUNyQixVQUFVO0VBQ1YsV0FBVztBQUNiO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsT0FBTztFQUNQLFFBQVE7RUFDUixNQUFNO0VBQ04sU0FBUztFQUNULFlBQVk7QUFDZDtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxTQUFTO0VBQ1QsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIsNkJBQTZCO0VBRzdCLGtDQUFrQztFQUNsQyx1REFBOEM7QUFDaEQ7QUFFQTtFQUVFLG1CQUFtQjtFQUduQix1QkFBdUI7QUFDekI7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix3QkFBd0I7QUFDMUI7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix3QkFBd0I7QUFDMUI7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix3QkFBd0I7QUFDMUI7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHNCQUFzQjtFQUd0Qix5QkFBeUI7QUFDM0I7QUFFQTtFQUVFLHVCQUF1QjtFQUd2Qix5QkFBeUI7QUFDM0I7QUFFQTtBQUNFO0lBQ0UseUJBQXlCO0FBQzNCO0FBRUE7SUFDRSw2QkFBNkI7QUFDL0I7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyIGNlbnRlclxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcblxcbjxzdHlsZSBzY29wZWQ+XFxuLnNwaW5uZXIge1xcbiAgZm9udC1zaXplOiAyOHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDFlbTtcXG4gIGhlaWdodDogMWVtO1xcbn1cXG5cXG4uc3Bpbm5lci5jZW50ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwLjQ2MjllbTtcXG4gIGJvdHRvbTogMDtcXG4gIHdpZHRoOiAwLjA3NGVtO1xcbiAgaGVpZ2h0OiAwLjI3NzdlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMDU1NWVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAtMC4yMjIyZW07XFxuICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAtMC4yMjIyZW07XFxuICBhbmltYXRpb246IHNwaW5uZXItZmFkZTkyMzQgMXMgaW5maW5pdGUgbGluZWFyO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMSkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDBzO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDIpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjA4M3M7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMDgzcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDMwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDMwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDMpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjE2NnM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMTY2cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDQpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjI0OXM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMjQ5cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDUpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjMzMnM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMzMycztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDYpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjQxNXM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNDE1cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTUwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxNTBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTUwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDcpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjQ5OHM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNDk4cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDgpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjU4MXM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNTgxcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjEwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjEwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDkpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjY2NHM7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNjY0cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyNDBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDEwKSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC43NDdzO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjc0N3M7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxufVxcblxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCgxMSkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuODNzO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjgzcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDEyKSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC45MTNzO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjkxM3M7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzMwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XFxufVxcblxcbkBrZXlmcmFtZXMgc3Bpbm5lci1mYWRlOTIzNCB7XFxuICAwJSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzk5N2I7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB9XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBb0pBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFFQTtFQUNFLGFBQWE7RUFDYix5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtBQUNyQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IHJlZj1cXFwicHVibGlzaGVyVHlwZU11bHRpc2VsZWN0XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luLTIwXFxcIj5cXG4gICAgICA8cCBjbGFzcz1cXFwibS0yIHBiLTIgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MFxcXCI+XFxuICAgICAgICB7eyBwcm9wcy5oZWFkZXIgfX1cXG4gICAgICA8L3A+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwic2VhcmNoXFxcIiBzdHlsZT1cXFwibWFyZ2luLXJpZ2h0OiA0cHggIWltcG9ydGFudFxcXCI+XFxuICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgdi1tb2RlbD1cXFwic2VhcmNoSW5wdXRcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJzZWFyY2hfX2lucHV0IG1yLTMuNVxcXCJcXG4gICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJgU2VhcmNoICR7cHJvcHMuaGVhZGVyfS4uLmBcXFwiXFxuICAgICAgICAgIHN0eWxlPVxcXCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MHB4XFxcIlxcbiAgICAgICAgICBAaW5wdXQ9XFxcInVwZGF0ZUFycmF5QnlTZWFyY2goKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJzZWFyY2hcXFwiIC8+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwibXktMVxcXCI+XFxuICAgICAgICA8ZGl2IHYtaWY9XFxcInNob3dOb0RhdGFDb21wb25lbnRcXFwiIGNsYXNzPVxcXCJwLTUgdGV4dC1jZW50ZXIgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgIG5vIGRhdGEgZm91bmRcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHVsIHYtZWxzZSBjbGFzcz1cXFwibWF4LWgtWzM1MHB4XSBvdmVyZmxvdy15LXNjcm9sbFxcXCI+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwiaXRlbSBpbiB0ZW1wTGlzdEl0ZW1zXFxcIiA6a2V5PVxcXCJpdGVtLmtleVxcXCI+XFxuICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJpdGVtLnNob3dcXFwiIGNsYXNzPVxcXCJtdC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtLTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICA6aWQ9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrZWRCb3hlc1xcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJtLTIgcHgtMyB0ZXh0LW4tNDBcXFwiIDpmb3I9XFxcIml0ZW0ua2V5XFxcIj57e1xcbiAgICAgICAgICAgICAgICBpdGVtLmxhYmVsXFxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvbGk+XFxuICAgICAgICA8L3VsPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZm9vdGVyLXJpYmJvblxcXCIgc3R5bGU9XFxcIlxcXCI+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgY2xhc3M9XFxcInNwYWNlXFxcIlxcbiAgICAgICAgdGV4dD1cXFwiQXBwbHlcXFwiXFxuICAgICAgICB0eXBlPVxcXCJwcmltYXJ5XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJhcHBseUZpbHRlclxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBsYW5nPVxcXCJ0c1xcXCIgc2V0dXA+XFxuaW1wb3J0IHtcXG4gIGRlZmluZUVtaXRzLFxcbiAgZGVmaW5lUHJvcHMsXFxuICByZWYsXFxuICBvbk1vdW50ZWQsXFxuICBvbkJlZm9yZVVubW91bnQsXFxuICBjb21wdXRlZCxcXG59IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgbGlzdEl0ZW1zOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaGVhZGVyOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcbmludGVyZmFjZSBUZW1wSXRlbSB7XFxuICBrZXk6IHN0cmluZztcXG4gIGxhYmVsOiBzdHJpbmc7XFxuICBzaG93OiBib29sZWFuO1xcbn1cXG5cXG5sZXQgdGVtcExpc3RJdGVtcyA9IHJlZjxUZW1wSXRlbVtdPihbXSk7XFxuY29uc3QgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0ID0gcmVmKCk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCAnY2xvc2UnXSk7XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy5saXN0SXRlbXMpO1xcbmxldCBzZWFyY2hJbnB1dCA9IHJlZignJyk7XFxubGV0IGNoZWNrZWRCb3hlcyA9IHJlZihbXSk7XFxuXFxubGV0IGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyID0gKHNlbGVjdGVkUHVibGlzaGVyVHlwZSkgPT4ge1xcbiAgZW1pdCgnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCBzZWxlY3RlZFB1Ymxpc2hlclR5cGUpO1xcbn07XFxuXFxuZm9ybWF0UHVibGlzaGVyVHlwZSgpO1xcblxcbmZ1bmN0aW9uIGZvcm1hdFB1Ymxpc2hlclR5cGUoKSB7XFxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzLmxpc3RJdGVtcyk7XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZS5wdXNoKHtcXG4gICAgICBrZXk6IGtleXNbaV0sXFxuICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcXG4gICAgICBzaG93OiB0cnVlLFxcbiAgICB9KTtcXG4gIH1cXG59XFxub25Nb3VudGVkKCgpID0+IHtcXG4gIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFxcbiAgICAnY2xpY2snLFxcbiAgICBrZWVwUHVibGlzaGVyTW9kZWxPcGVuXFxuICApO1xcbn0pO1xcblxcbm9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XFxuICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcXG4gICAgJ2NsaWNrJyxcXG4gICAga2VlcFB1Ymxpc2hlck1vZGVsT3BlblxcbiAgKTtcXG59KTtcXG5cXG5jb25zdCBzaG93Tm9EYXRhQ29tcG9uZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG4gIHRlbXBMaXN0SXRlbXMudmFsdWUubWFwKChpdGVtKSA9PiB7XFxuICAgIGlmIChpdGVtLnNob3cpIHtcXG4gICAgICBjb3VudCsrO1xcbiAgICB9XFxuICB9KTtcXG4gIHJldHVybiAhY291bnQ7XFxufSk7XFxuXFxuY29uc3QgdXBkYXRlQXJyYXlCeVNlYXJjaCA9ICgpID0+IHtcXG4gIGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xcblxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XFxuICAgIGxldCBpdGVtID0gdGVtcExpc3RJdGVtcy52YWx1ZVtpXTtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZVtpXS5zaG93ID0gaXRlbS5sYWJlbFxcbiAgICAgIC50b0xvd2VyQ2FzZSgpXFxuICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XFxuICB9XFxufTtcXG5jb25zdCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gKGV2ZW50KSA9PiB7XFxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG59O1xcbmNvbnN0IGFwcGx5RmlsdGVyID0gKCkgPT4ge1xcbiAgZW1pdCgnY2xvc2UnKTtcXG5cXG4gIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGU+XFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcblxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQW9WQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBS0U7OztFQUFBLFdBQXNEO0VBQXRELGdCQUFzRDtFQUF0RCx3QkFBc0Q7RUFBdEQsd0RBQXNEO0VBQXRELDBCQUFBO0FBQXNEO0FBR3hEO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQW9CO0VBQXBCLCtEQUFvQjtFQUNwQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBRVYsa0JBQWM7RUFBZCx5REFBYztBQUNoQjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQWtCO0VBQWxCLDZEQUFrQjtFQUNsQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsc0JBQXNCO0FBQ3hCO0FBRUE7RUFDRSxZQUFZO0FBQ2RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JvdXAgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICA6Y2xhc3M9XFxcInsgJ2ZvbnQtYm9sZCc6IGNvdW50RXJyb3JzKGluZGV4KSB9XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZ3JvdXAgbWF4LXctWzMwMHB4XSBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIHVwcGVyY2FzZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIHt7IHRpdGxlIH19XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIGxlZnQtWzgwJV0gdG9wLTAgei1bMTEwXSBoaWRkZW4gbWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LXNjcm9sbCB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkIGJnLWVnZ3NoZWxsIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbm9ybWFsIHNoYWRvdy1zbSBncm91cC1ob3ZlcjpibG9ja1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdGl0bGUgfX1cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInRlY3QteHMgbXgtMyBmb250LW5vcm1hbCB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPiAoe3sgc3RhdHVzWyd0ZW1wbGF0ZSddIH19IElkZW50aWZpZXIgPC9zcGFuPlxcbiAgICAgICAgOiB7eyBhY3Rpdml0eS5pZGVudGlmaWVyIH19KVxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWlmPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1sLTQgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc2hvd0Vycm9ycyA9ICFzaG93RXJyb3JzO1xcbiAgICAgICAgICB9XFxuICAgICAgICBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4+c2hvdyB7eyBjb3VudEVycm9ycyhpbmRleCkgfX0gZXJyb3I8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1bNnB4XVxcXCIgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiB2LWlmPVxcXCJzaG93RXJyb3JzXFxcIiBjbGFzcz1cXFwibXQtNiBweC03IHB5LTJcXFwiPlxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSAhPT0gLTFcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDcwfXB4O2BcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXIgYm9yZGVyLW5vbmUgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW4+IHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19IENyaXRpY2FsIGVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dDcml0aWNhbCwgJyc6ICFzaG93Q3JpdGljYWwgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgY29udGFpbnMgY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzIGNhbm5vdCBiZSB1cGxvYWRlZCB0b1xcbiAgICAgICAgICB0aGUgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignZXJyb3InKSAhPT0gLTFcXG4gICAgICAgIFxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNzB9cHg7YFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJlcnJvci1jb250YWluZXIgbXQtMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiZXJyb3JBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBiZy1yb3NlIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yTGVuZ3RoKCdlcnJvcicpIH19IEVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgd2l0aCB0aGUgZXJyb3JzIHdpbGwgYmUgdXBsb2FkZWQgdG8gb3VyIHN5c3RlbSwgYnV0IHRoZVxcbiAgICAgICAgICBmaWVsZCBjb250YWluaW5nIHRoZSBlcnJvciB3aWxsIGJlIHJlbW92ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVmaWxsXFxuICAgICAgICAgIHRoZXNlIGZpZWxkcyB3aXRoIGNvcnJlY3QgZGF0YSBvbmNlIHRoZSBhY3Rpdml0eSBpcyB1cGxvYWRlZCB0byBvdXJcXG4gICAgICAgICAgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXByaW1hcnktYmxhY2sgYmctcm9zZSBwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignd2FybmluZycpICE9PSAtMVxcbiAgICAgICAgXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA3MH1weDtgXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIndhcm5pbmctY29udGFpbmVyIG15LTIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLW5vbmUgYmctZWdnc2hlbGxcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIndhcm5pbmdBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhbGVydFxcXCIgY2xhc3M9XFxcInRleHQtY2FtZWwtNDBcXFwiIC8+PHNwYW4+XFxuICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19IFdhcm5pbmdzPC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd1dhcm5pbmcsICcnOiAhc2hvd1dhcm5pbmcgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscCBiZy1lZ2dzaGVsbFxcXCI+XFxuICAgICAgICAgIChUaGUgZmllbGQgd2l0aCB3YXJuaW5ncyB3aWxsIGJlIHVwbG9hZGVkIHRvIG91ciBzeXN0ZW0uIFRoZXNlIGZpZWxkc1xcbiAgICAgICAgICBjb250YWluIGRhdGEgdGhhdCBhcmUgYWdhaW5zdCB0aGUgcnVsZXMgb2YgdGhlIElBVEkgVmFsaWRhdG9yIGFuZCB3aWxsXFxuICAgICAgICAgIGNhdXNlIHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHB1Ymxpc2hpbmcuKVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJnLWVnZ3NoZWxsIHAtNFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xcbmNvbnN0IHNob3dFcnJvcnMgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dDcml0aWNhbCA9IHJlZihmYWxzZSk7XFxuY29uc3QgY3JpdGljYWxUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3QgZXJyb3JUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHdhcm5pbmdUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dXYXJuaW5nID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxcbiAgaW1wb3J0RGF0YToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXFxuICBhY3Rpdml0eToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGluZGV4OiB7XFxuICAgIHR5cGU6IE51bWJlcixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGN1cnJlbnRFcnJvcikgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIHByb3BzLmFjdGl2aXR5Py5lcnJvcnNbY3VycmVudEVycm9yXSAmJlxcbiAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKT8ubWFwKChpdGVtKSA9PiB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSBhcyBvYmplY3QpLmxlbmd0aDtcXG4gICAgfSk7XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCB0aXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XFxuICAgIGNhc2UgJ2FjdGl2aXR5JzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSA/PyAnVW50aXRsZWQnXFxuICAgICAgICA6ICdVbnRpdGxlZCc7XFxuXFxuICAgIGNhc2UgJ3Jlc3VsdCc6XFxuICAgICAgcmV0dXJuIHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVcXG4gICAgICAgID8gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddID8/ICdVbnRpdGxlZCdcXG4gICAgICAgIDogJ1VudGl0bGVkJztcXG4gICAgY2FzZSAncGVyaW9kJzpcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXFxuICAgICAgICAgIHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0WzBdLmRhdGUpICtcXG4gICAgICAgICcgLSAnICtcXG4gICAgICAgIChwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmQgJiZcXG4gICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpXFxuICAgICAgKTtcXG4gICAgY2FzZSAnaW5kaWNhdG9yJzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10gPz8gJ1VudGl0bGVkJ1xcbiAgICAgICAgOiAnVW50aXRsZWQnO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAnVW50aXRsZWQnO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IGNvdW50RXJyb3JzID0gKGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9XFxuICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXFxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pXFxuICAgICAgICAgIC5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG5cXG4gIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG5jb25zdCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgIH0sIDEwMCk7XFxuICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCAxMDApO1xcblxcbiAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi5jcml0aWNhbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5jcml0aWNhbC1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyLFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5lcnJvci1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNyaW1zb24tNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgQGFwcGx5IGJnLXJvc2U7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY2FtZWwtNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWhlbHAge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHAge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5sb2FkZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcbkBrZXlmcmFtZXMgcm90YXRpb24ge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFLQTtFQUNFLFdBQVc7RUFDWCxZQUFZO0VBQ1oseUJBQXlCO0VBQ3pCLGdDQUFnQztFQUNoQyxrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQ0FBc0M7QUFDeEM7QUFFQTtBQUNFO0lBQ0UsdUJBQXVCO0FBQ3pCO0FBQ0E7SUFDRSx5QkFBeUI7QUFDM0I7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8c3BhbiBjbGFzcz1cXFwibG9hZGVyXFxcIj48L3NwYW4+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj48L3NjcmlwdD5cXG48c3R5bGU+XFxuLmxvYWRlciB7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuXFxuQGtleWZyYW1lcyByb3RhdGlvbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmZhZGUtZW50ZXItYWN0aXZlW2RhdGEtdi0wZGZmODQ2MF0sXFxuLmZhZGUtbGVhdmUtYWN0aXZlW2RhdGEtdi0wZGZmODQ2MF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuLmZhZGUtZW50ZXItZnJvbVtkYXRhLXYtMGRmZjg0NjBdLFxcbi5mYWRlLWxlYXZlLXRvW2RhdGEtdi0wZGZmODQ2MF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHNjYWxlOiAwO1xcbn1cXG4udi1lbnRlci1hY3RpdmVbZGF0YS12LTBkZmY4NDYwXSxcXG4udi1sZWF2ZS1hY3RpdmVbZGF0YS12LTBkZmY4NDYwXSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG4udi1lbnRlci1mcm9tW2RhdGEtdi0wZGZmODQ2MF0sXFxuLnYtbGVhdmUtdG9bZGF0YS12LTBkZmY4NDYwXSB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBc1VBOztFQUVFLHlCQUF5QjtBQUMzQjtBQUVBOztFQUVFLFVBQVU7RUFDVixRQUFRO0FBQ1Y7QUFFQTs7RUFFRSx5QkFBeUI7QUFDM0I7QUFFQTs7RUFFRSxVQUFVO0FBQ1pcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPCEtLSBNb2RhbCAtLT5cXG4gIDxUcmFuc2l0aW9uIG5hbWU9XFxcImZhZGVcXFwiPlxcbiAgICA8ZGl2XFxuICAgICAgdi1pZj1cXFwibW9kYWxTdGF0ZVxcXCJcXG4gICAgICBjbGFzcz1cXFwiZml4ZWQgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjayBiZy1vcGFjaXR5LTQwXFxcIlxcbiAgICA+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicmVsYXRpdmUgZmxleCBiZy13aGl0ZVxcXCI+XFxuICAgICAgICA8IS0tIExlZnQgLS0+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtYXgtdy1bMzY1cHhdIGJnLWJsdWVjb3JhbCBweC1bMzVweF0gcHktMTIgdGV4dC13aGl0ZVxcXCI+XFxuICAgICAgICAgIDxoMyBjbGFzcz1cXFwidGV4dC1bMjhweF0gZm9udC1ib2xkIGxlYWRpbmctOVxcXCI+XFxuICAgICAgICAgICAgR2V0IHN0YXJ0ZWQgd2l0aCA8YnIgLz5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4+IElBVEkgUHVibGlzaGVyIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJoYW5kLXdhdmVcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L2gzPlxcbiAgICAgICAgICA8cCBjbGFzcz1cXFwicHQtWzJweF0gdGV4dC14c1xcXCI+XFxuICAgICAgICAgICAgVG8gZ2V0IHlvdSBzdGFydGVkIHdpdGggcHVibGlzaGluZywgdGhlcmUgYXJlIGEgZmV3IGtleSBzdGVwcyB5b3VcXG4gICAgICAgICAgICBuZWVkIHRvIGNvbXBsZXRlLiBMZXQncyB3YWxrIHRocm91Z2ggdGhlbSFcXG4gICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8U3RlcEJhclxcbiAgICAgICAgICAgIDpjdXJyZW50LXN0ZXA9XFxcInN0ZXBcXFwiXFxuICAgICAgICAgICAgOnN0ZXBzPVxcXCJvcmdhbml6YXRpb25TdGVwc1xcXCJcXG4gICAgICAgICAgICBAY2hhbmdlLXN0ZXA9XFxcImNoYW5nZVN0ZXBcXFwiXFxuICAgICAgICAgIC8+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwhLS0gUmlnaHQgLS0+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJyZWxhdGl2ZSBmbGV4IHctWzkwMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtWzQwcHhdXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8VHJhbnNpdGlvbiBtb2RlPVxcXCJvdXQtaW5cXFwiPlxcbiAgICAgICAgICAgIDxkaXYgdi1pZj1cXFwic3RlcCA9PT0gMVxcXCIgY2xhc3M9XFxcImgtZnVsbFxcXCI+XFxuICAgICAgICAgICAgICA8UHVibGlzaGluZ1NldHRpbmdzU3RlcFxcbiAgICAgICAgICAgICAgICA6cHVibGlzaGVyLWlkPVxcXCJwcm9wcy5vcmdhbml6YXRpb24ucHVibGlzaGVyX2lkXFxcIlxcbiAgICAgICAgICAgICAgICA6b3JnYW5pemF0aW9uLWlkPVxcXCJwcm9wcy5vcmdhbml6YXRpb24uaWRcXFwiXFxuICAgICAgICAgICAgICAgIDpyZWdpc3RyYXRpb24tdHlwZT1cXFwicHJvcHMub3JnYW5pemF0aW9uLnJlZ2lzdHJhdGlvbl90eXBlXFxcIlxcbiAgICAgICAgICAgICAgICA6cHVibGlzaGVyLXNldHRpbmc9XFxcInB1Ymxpc2hlclNldHRpbmdcXFwiXFxuICAgICAgICAgICAgICAgIDpmZXRjaC1kYXRhPVxcXCJmZXRjaERhdGFcXFwiXFxuICAgICAgICAgICAgICAgIDppbml0aWFsLXJlbmRlcj1cXFwiaW5pdGlhbFJlbmRlclxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwiXFxuICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uU3RlcHM/LmZpbmQoXFxuICAgICAgICAgICAgICAgICAgICAob25ib2FyZGluZ1N0ZXApID0+IG9uYm9hcmRpbmdTdGVwLnN0ZXAgPT09IDFcXG4gICAgICAgICAgICAgICAgICApPy5jb21wbGV0ZSA/PyBmYWxzZVxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBwcm9jZWVkLXN0ZXA9XFxcInByb2NlZWRTdGVwXFxcIlxcbiAgICAgICAgICAgICAgICBAY2hhbmdlLXJlbmRlcj1cXFwiaGFuZGxlQ2hhbmdlUmVuZGVyXFxcIlxcbiAgICAgICAgICAgICAgICBAY29tcGxldGUtc3RlcD1cXFwiY29tcGxldGVTdGVwXFxcIlxcbiAgICAgICAgICAgICAgICBAcmVtb3ZlLWNvbXBsZXRlZC1zdGVwPVxcXCJyZW1vdmVDb21wbGV0ZWRTdGVwXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWVsc2UtaWY9XFxcInN0ZXAgPT09IDJcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICAgJ2gtZnVsbCc6IG9yZ2FuaXphdGlvblN0ZXBzPy5maW5kKFxcbiAgICAgICAgICAgICAgICAgIChvbmJvYXJkaW5nU3RlcCkgPT4gb25ib2FyZGluZ1N0ZXAuc3RlcCA9PT0gMlxcbiAgICAgICAgICAgICAgICApPy5jb21wbGV0ZSxcXG4gICAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxEZWZhdWx0VmFsdWVzU3RlcFxcbiAgICAgICAgICAgICAgICA6Y3VycmVuY2llcz1cXFwicHJvcHMuY3VycmVuY2llc1xcXCJcXG4gICAgICAgICAgICAgICAgOmxhbmd1YWdlcz1cXFwicHJvcHMubGFuZ3VhZ2VzXFxcIlxcbiAgICAgICAgICAgICAgICA6aHVtYW5pdGFyaWFuPVxcXCJwcm9wcy5odW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgIDpkZWZhdWx0LWZsb3ctdHlwZT1cXFwicHJvcHMuZGVmYXVsdEZsb3dUeXBlXFxcIlxcbiAgICAgICAgICAgICAgICA6ZGVmYXVsdC1maW5hbmNlLXR5cGU9XFxcInByb3BzLmRlZmF1bHRGaW5hbmNlVHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgOmRlZmF1bHQtYWlkLXR5cGU9XFxcInByb3BzLmRlZmF1bHRBaWRUeXBlXFxcIlxcbiAgICAgICAgICAgICAgICA6ZGVmYXVsdC10aWVkLXN0YXR1cz1cXFwicHJvcHMuZGVmYXVsdFRpZWRTdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpkZWZhdWx0LXZhbHVlcz1cXFwiZGVmYXVsdFZhbHVlXFxcIlxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcz8uZmluZChcXG4gICAgICAgICAgICAgICAgICAgIChvbmJvYXJkaW5nU3RlcCkgPT4gb25ib2FyZGluZ1N0ZXAuc3RlcCA9PT0gMlxcbiAgICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlID8/IGZhbHNlXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgOmZldGNoLWRhdGE9XFxcImZldGNoRGF0YVxcXCJcXG4gICAgICAgICAgICAgICAgQHByb2NlZWQtc3RlcD1cXFwicHJvY2VlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBwcmV2aW91cy1zdGVwPVxcXCJwcmV2aW91c1N0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBjb21wbGV0ZS1zdGVwPVxcXCJjb21wbGV0ZVN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEByZW1vdmUtY29tcGxldGVkLXN0ZXA9XFxcInJlbW92ZUNvbXBsZXRlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZWxzZS1pZj1cXFwic3RlcCA9PT0gM1xcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICAgICAnaC1mdWxsJzogb3JnYW5pemF0aW9uU3RlcHM/LmZpbmQoXFxuICAgICAgICAgICAgICAgICAgKG9uYm9hcmRpbmdTdGVwKSA9PiBvbmJvYXJkaW5nU3RlcC5zdGVwID09PSAzXFxuICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlLFxcbiAgICAgICAgICAgICAgfVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGxcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE9yZ2FuaXNhdGlvbkRhdGFTdGVwXFxuICAgICAgICAgICAgICAgIDpvcmdhbml6YXRpb24tdHlwZS1vcHRpb25zPVxcXCJwcm9wcy5vcmdhbml6YXRpb25UeXBlXFxcIlxcbiAgICAgICAgICAgICAgICA6cHJldmlvdXMtdmFsdWVzPVxcXCJwcm9wcy5vcmdhbml6YXRpb24ucmVwb3J0aW5nX29yZ1xcXCJcXG4gICAgICAgICAgICAgICAgOmZldGNoLWRhdGE9XFxcImZldGNoRGF0YVxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwiXFxuICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uU3RlcHM/LmZpbmQoXFxuICAgICAgICAgICAgICAgICAgICAob25ib2FyZGluZ1N0ZXApID0+IG9uYm9hcmRpbmdTdGVwLnN0ZXAgPT09IDNcXG4gICAgICAgICAgICAgICAgICApPy5jb21wbGV0ZSA/PyBmYWxzZVxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBwcm9jZWVkLXN0ZXA9XFxcInByb2NlZWRTdGVwXFxcIlxcbiAgICAgICAgICAgICAgICBAcHJldmlvdXMtc3RlcD1cXFwicHJldmlvdXNTdGVwXFxcIlxcbiAgICAgICAgICAgICAgICBAY29tcGxldGUtc3RlcD1cXFwiY29tcGxldGVTdGVwXFxcIlxcbiAgICAgICAgICAgICAgICBAcmVtb3ZlLWNvbXBsZXRlZC1zdGVwPVxcXCJyZW1vdmVDb21wbGV0ZWRTdGVwXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cXFwiaC1mdWxsIHNlbGYtc3RhcnRcXFwiPlxcbiAgICAgICAgICAgICAgPEFjdGl2aXR5U3RlcFxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcz8uZmluZChcXG4gICAgICAgICAgICAgICAgICAgIChvbmJvYXJkaW5nU3RlcCkgPT4gb25ib2FyZGluZ1N0ZXAuc3RlcCA9PT0gNFxcbiAgICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQHByb2NlZWQtc3RlcD1cXFwicHJvY2VlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBwcmV2aW91cy1zdGVwPVxcXCJwcmV2aW91c1N0ZXBcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L1RyYW5zaXRpb24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwhLS0gQ2xvc2UgQnV0dG9uIC0tPlxcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLTQgcmlnaHQtNFxcXCIgQGNsaWNrLm9uY2U9XFxcImNsb3NlTW9kYWxcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1ibGFja1xcXCIgaWNvbj1cXFwiY2FuY2VsLWNyb3NzXFxcIiAvPlxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9UcmFuc2l0aW9uPlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgcmVmLCBkZWZpbmVQcm9wcywgd2F0Y2hFZmZlY3QsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IHsgdXNlU3RvcmFnZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuXFxuaW1wb3J0IFN0ZXBCYXIgZnJvbSAnQ29tcG9uZW50cy9TdGVwQmFyLnZ1ZSc7XFxuaW1wb3J0IFB1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAgZnJvbSAnLi9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZSc7XFxuaW1wb3J0IERlZmF1bHRWYWx1ZXNTdGVwIGZyb20gJy4vU3RlcHMvRGVmYXVsdFZhbHVlc1N0ZXAudnVlJztcXG5pbXBvcnQgT3JnYW5pc2F0aW9uRGF0YVN0ZXAgZnJvbSAnLi9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWUnO1xcbmltcG9ydCBBY3Rpdml0eVN0ZXAgZnJvbSAnLi9TdGVwcy9BY3Rpdml0eVN0ZXAudnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcblxcbmludGVyZmFjZSBPcmdhbml6YXRpb25TdGVwcyB7XFxuICBzdGVwOiBudW1iZXI7XFxuICB0aXRsZTogc3RyaW5nO1xcbiAgY29tcGxldGU6IGJvb2xlYW47XFxufVxcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgY3VycmVuY2llczoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGxhbmd1YWdlczoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGh1bWFuaXRhcmlhbjoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGRlZmF1bHRGbG93VHlwZToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGRlZmF1bHRGaW5hbmNlVHlwZToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGRlZmF1bHRBaWRUeXBlOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBvcmdhbml6YXRpb25PbmJvYXJkaW5nOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgb3JnYW5pemF0aW9uOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgb3JnYW5pemF0aW9uVHlwZToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGlzRmlyc3RUaW1lOiB7XFxuICAgIHR5cGU6IEJvb2xlYW4sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBzdGVwID0gcmVmKDEpO1xcbmNvbnN0IG1vZGFsU3RhdGUgPSByZWYodHJ1ZSk7XFxuY29uc3QgaW5pdGlhbFJlbmRlciA9IHJlZih0cnVlKTtcXG5cXG5jb25zdCBwdWJsaXNoZXJTZXR0aW5nID0gcmVmKHt9KTtcXG5jb25zdCBkZWZhdWx0VmFsdWUgPSByZWYoe30pO1xcblxcbmNvbnN0IGlzTW9kZWxDbG9zZUNsaWNrZWQgPSB1c2VTdG9yYWdlKFxcbiAgJ2lzTW9kZWxDbG9zZUNsaWNrZWQnLFxcbiAgZmFsc2UsXFxuICBzZXNzaW9uU3RvcmFnZVxcbik7XFxuXFxuY29uc3QgaXNGb3JjZU9wZW5Nb2RhbCA9XFxuICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpc0ZvcmNlT3Blbk1vZGFsJykgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcXG5cXG5jb25zdCBvcmdhbml6YXRpb25TdGVwcyA9IHJlZjxPcmdhbml6YXRpb25TdGVwc1tdPihcXG4gIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuc3RlcHNfc3RhdHVzXFxuKTtcXG5cXG5jb25zdCBmaXJzdEluY29tcGxldGVTdGVwID1cXG4gIG9yZ2FuaXphdGlvblN0ZXBzLnZhbHVlLmZpbmRJbmRleChcXG4gICAgKHN0ZXA6IHsgY29tcGxldGU6IGJvb2xlYW4gfSkgPT4gIXN0ZXAuY29tcGxldGVcXG4gICkgKyAxO1xcblxcbmlmICghcHJvcHMuaXNGaXJzdFRpbWUgJiYgZmlyc3RJbmNvbXBsZXRlU3RlcCA+IDApIHtcXG4gIHN0ZXAudmFsdWUgPSBmaXJzdEluY29tcGxldGVTdGVwO1xcbn1cXG5cXG5jb25zdCBmZXRjaERhdGEgPSAoKSA9PiB7XFxuICBheGlvc1xcbiAgICAuZ2V0KCcvc2V0dGluZy9kYXRhJylcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHB1Ymxpc2hlclNldHRpbmcudmFsdWUgPSByZXM/LmRhdGE/LmRhdGE/LnB1Ymxpc2hpbmdfaW5mbztcXG4gICAgICBkZWZhdWx0VmFsdWUudmFsdWUgPSB7XFxuICAgICAgICAuLi5yZXM/LmRhdGE/LmRhdGE/LmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzLFxcbiAgICAgICAgLi4ucmVzPy5kYXRhPy5kYXRhPy5kZWZhdWx0X3ZhbHVlcyxcXG4gICAgICB9O1xcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycikgPT4gY29uc29sZS5sb2coJ0Vycm9yJywgZXJyKSk7XFxufTtcXG5cXG5pZiAoaXNGb3JjZU9wZW5Nb2RhbCkge1xcbiAgbW9kYWxTdGF0ZS52YWx1ZSA9IHRydWU7XFxufSBlbHNlIGlmIChcXG4gIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcXG4gIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XFxuICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXFxuKSB7XFxuICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XFxufVxcbi8vIGNvbnNvbGUubG9nKFxcbi8vICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyxcXG4vLyAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluLFxcbi8vICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZSxcXG4vLyAgICdTdGF0dXMnXFxuLy8gKTtcXG5cXG4vLyBpZiAoXFxuLy8gICAhcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyB8fFxcbi8vICAgIXByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XFxuLy8gICAhaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZVxcbi8vICkge1xcbi8vICAgbW9kYWxTdGF0ZS52YWx1ZSA9IHRydWU7XFxuLy8gfVxcblxcbi8vIGlmKHByb3BzLilcXG5cXG4vLyB3YXRjaEVmZmVjdCgoKSA9PiB7XFxuLy8gICBpZiAoXFxuLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcXG4vLyAgICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5kb250X3Nob3dfYWdhaW4gfHxcXG4vLyAgICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZVxcbi8vICAgKSB7XFxuLy8gICAgIG1vZGFsU3RhdGUudmFsdWUgPSBmYWxzZTtcXG4vLyAgIH0gZWxzZSBpZiAoc3RvcmUuc3RhdGUuZ2V0U3RhcnRlZEJ1dHRvbikge1xcbi8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gdHJ1ZTtcXG4vLyAgIH1cXG4vLyB9KTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBpZiAobW9kYWxTdGF0ZS52YWx1ZSkge1xcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XFxuICB9IGVsc2Uge1xcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IGNsb3NlTW9kYWwgPSAoKSA9PiB7XFxuICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlID0gdHJ1ZTtcXG4gIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2lzRm9yY2VPcGVuTW9kYWwnLCAnZmFsc2UnKTtcXG4gIG1vZGFsU3RhdGUudmFsdWUgPSBmYWxzZTtcXG59O1xcblxcbmNvbnN0IHByb2NlZWRTdGVwID0gKCkgPT4ge1xcbiAgaW5pdGlhbFJlbmRlci52YWx1ZSA9IGZhbHNlO1xcbiAgaWYgKHN0ZXAudmFsdWUgPCA0KSB7XFxuICAgIHN0ZXAudmFsdWUrKztcXG4gIH0gZWxzZSB7XFxuICAgIGNsb3NlTW9kYWwoKTtcXG4gIH1cXG59O1xcblxcbmNvbnN0IHByZXZpb3VzU3RlcCA9ICgpID0+IHtcXG4gIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcXG4gIHN0ZXAudmFsdWUtLTtcXG59O1xcblxcbmNvbnN0IGhhbmRsZUNoYW5nZVJlbmRlciA9ICgpID0+IHtcXG4gIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcXG59O1xcblxcbmNvbnN0IGNvbXBsZXRlU3RlcCA9IChzdGVwOiBudW1iZXIpID0+IHtcXG4gIG9yZ2FuaXphdGlvblN0ZXBzLnZhbHVlW3N0ZXAgLSAxXS5jb21wbGV0ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCByZW1vdmVDb21wbGV0ZWRTdGVwID0gKHN0ZXA6IG51bWJlcikgPT4ge1xcbiAgb3JnYW5pemF0aW9uU3RlcHMudmFsdWVbc3RlcCAtIDFdLmNvbXBsZXRlID0gZmFsc2U7XFxufTtcXG5cXG5jb25zdCBjaGFuZ2VTdGVwID0gKGluZGV4OiBudW1iZXIpID0+IHtcXG4gIHN0ZXAudmFsdWUgPSBpbmRleDtcXG59O1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBmZXRjaERhdGEoKTtcXG59KTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGUgc2NvcGVkPlxcbi5mYWRlLWVudGVyLWFjdGl2ZSxcXG4uZmFkZS1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLmZhZGUtZW50ZXItZnJvbSxcXG4uZmFkZS1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbiAgc2NhbGU6IDA7XFxufVxcblxcbi52LWVudGVyLWFjdGl2ZSxcXG4udi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLnYtZW50ZXItZnJvbSxcXG4udi1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi52LWVudGVyLWFjdGl2ZVtkYXRhLXYtNjFhNDUxYTBdLFxcbi52LWxlYXZlLWFjdGl2ZVtkYXRhLXYtNjFhNDUxYTBdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XFxufVxcbi52LWVudGVyLWZyb21bZGF0YS12LTYxYTQ1MWEwXSxcXG4udi1sZWF2ZS10b1tkYXRhLXYtNjFhNDUxYTBdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQThlQTs7RUFFRSx5QkFBeUI7QUFDM0I7QUFFQTs7RUFFRSxVQUFVO0VBQ1YsMkJBQTJCO0FBQzdCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgdi1pZj1cXFwiIXByb3BzLnN0YXR1c1xcXCI+XFxuICAgIDxkaXYgdi1pZj1cXFwiIWlzU2F2aW5nU3RhcnRlZFxcXCI+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoMyBjbGFzcz1cXFwicGItWzJweF0gdGV4dC1bMjBweF0gZm9udC1ib2xkIGxlYWRpbmctOSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICBTZXQgRGVmYXVsdCBWYWx1ZXNcXG4gICAgICAgIDwvaDM+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtXFxcIj5cXG4gICAgICAgICAgVGhlc2UgY29tbW9ubHkgb2NjdXJyaW5nIHZhbHVlcyBjYW4gYmUgcG9wdWxhdGVkIGhlcmUgYW5kIElBVElcXG4gICAgICAgICAgUHVibGlzaGVyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSB0aGVtIHRvIGFsbCBvZiB5b3VyIGFjdGl2aXRpZXMuXFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcIm10LTMgbWF4LWgtWzM3M3B4XSBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LXNjcm9sbCByb3VuZGVkLWxnIGJnLW4tMTAgcHQtWzIwcHhdIHBsLVsyN3B4XSBwYi1bMjBweF0gcHItWzE4cHhdXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8IS0tIEFsbCBWYWx1ZXMgRGVmYXVsdCBTdGFydCAtLT5cXG4gICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPkRlZmF1bHQgZm9yIGFsbCBkYXRhPC9wPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLVsyMnB4XSBwdC00XFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBDdXJyZW5jeSBTdGFydCAtLT5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInctZnVsbCBtYXgtdy1bMzM1cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcGItMlxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwiZGVmYXVsdC1jdXJyZW5jeVxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIERlZmF1bHQgQ3VycmVuY3lcXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcIkRlZmF1bHQgQ3VycmVuY3lcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSBjdXJyZW5jeSBpbiB3aGljaCB5b3UgcmVwb3J0IHlvdXIgZmluYW5jaWFsIHRyYW5zYWN0aW9ucy4gWW91IGNhbiBsYXRlciBtYW51YWxseSBjaGFuZ2UgdGhlIGN1cnJlbmN5IG9uIGluZGl2aWR1YWwgdHJhbnNhY3Rpb25zIGFuZCBidWRnZXRzIGlmIHJlcXVpcmVkLlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtY3VycmVuY3lcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgZnJvbSBkcm9wZG93blxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMuY3VycmVuY2llc1xcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X2N1cnJlbmN5XFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfY3VycmVuY3kgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIFRoZSBjdXJyZW5jeSBpbiB3aGljaCB5b3Ugbm9ybWFsbHkgcmVwb3J0IHlvdXIgZmluYW5jaWFsXFxuICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zLiBTZWxlY3QgZnJvbSBkcm9wZG93bi5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgQ3VycmVuY3kgRW5kIC0tPlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IExhbmd1YWdlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWxhbmd1YWdlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBMYW5ndWFnZVxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiRGVmYXVsdCBMYW5ndWFnZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiVGhlIGxhbmd1YWdlIGluIHdoaWNoIHlvdSBwcm92aWRlIGRhdGEgb24geW91ciBhY3Rpdml0aWVzLiBZb3UgY2FuIGxhdGVyIG1hbnVhbGx5IGNoYW5nZSB0aGUgbGFuZ3VhZ2Ugb24gaW5kaXZpZHVhbCB0ZXh0IGlmIHJlcXVpcmVkLlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtbGFuZ3VhZ2VcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgbGFuZ3VhZ2UgZnJvbSBkcm9wZG93blxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMubGFuZ3VhZ2VzXFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfbGFuZ3VhZ2VcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9sYW5ndWFnZSA9IHZhbHVlKVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwicHQtMiB0ZXh0LXhzIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICAgICAgVGhlIGxhbmd1YWdlIGluIHdoaWNoIHlvdSBub3JtYWxseSByZXBvcnQuIFNlbGVjdCBmcm9tXFxuICAgICAgICAgICAgICAgICAgZHJvcGRvd24uXFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IExhbmd1YWdlIEVuZCAtLT5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwhLS0gQWxsIFZhbHVlcyBEZWZhdWx0IEVuZCAtLT5cXG4gICAgICAgICAgPCEtLSBBY3Rpdml0eSBEYXRhIERlZmF1bHQgU3RhcnQgLS0+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInB0LTZcXFwiPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+RGVmYXVsdCBmb3IgYWN0aXZpdHkgZGF0YTwvcD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIGdhcC1bMjJweF0gcHQtNFxcXCI+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgSGllcmFyY2h5IFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZGVmYXVsdC1oaWVyYXJjaHlcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IEhpZXJhcmNoeVxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XFxcInctNjRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcIkRlZmF1bHQgSGllcmFyY2h5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJJZiB5b3UgYXJlIHJlcG9ydGluZyBib3RoIHByb2dyYW1tZXMgKHBhcmVudCBhY3Rpdml0aWVzKSBhbmQgcHJvamVjdHMgKGNoaWxkIGFjdGl2aXRpZXMpLFxcbiAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCB0aGF0IG1vc3Qgb2YgeW91ciBhY3Rpdml0aWVzIGFyZSBhdC4gZS5nLiBwYXJlbnQgYWN0aXZpdHkgPSAxOyBjaGlsZCBhY3Rpdml0eSA9IDIuXFxuICAgICAgICAgICAgICAgIDxicj5JZiBhbGwgeW91ciBhY3Rpdml0aWVzIGFyZSBhdCB0aGUgc2FtZSBsZXZlbCBpLmUuIHlvdSBoYXZlIG5vIGNoaWxkIGFjdGl2aXRpZXMsIHRoZW4gY2hvb3NlIDEuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwiZGVmYXVsdC1oaWVyYXJjaHlcXFwiXFxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiYWxsRGVmYXVsdFZhbHVlLmhpZXJhcmNoeVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibWItMiB3LWZ1bGwgcm91bmRlZC1bNHB4XSBib3JkZXIgYm9yZGVyLW4tMjAgcHktMiBwbC00IGZvY3VzOm91dGxpbmUtMCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMFxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJUeXBlIGRlZmF1bHQgaGllcmFyY2h5IGhlcmVcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgICAgICBJZiBoaWVyYXJjaHkgaXMgbm90IHJlcG9ydGVkIHRoZW4gMSBpcyBhc3N1bWVkLiBJZiBtdWx0aXBsZVxcbiAgICAgICAgICAgICAgICAgIGxldmVscyBhcmUgcmVwb3J0ZWQgdGhlbiwgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nLCBmaW5hbmNpYWxcXG4gICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbnMgc2hvdWxkIG9ubHkgYmUgcmVwb3J0ZWQgYXQgdGhlIGxvd2VzdFxcbiAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWNhbCBsZXZlbC5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgSGVpcmFyY2h5IEVuZCAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gSHVtYW5pdGFyaWFuIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJodW1hbml0YXJpYW5cXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICBIdW1hbml0YXJpYW5cXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVxcXCJ3LTcyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJIdW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIkFkZCBhICdIdW1hbml0YXJpYW4gRmxhZycgdG8gZXZlcnkgYWN0aXZpdHkgdGhhdCB5b3VyIG9yZ2FuaXNhdGlvbiBwdWJsaXNoZXMgZGF0YSBvbi4gVGhpcyBtZWFucyB0aGF0IHlvdXIgb3JnYW5pc2F0aW9uIGlkZW50aWZpZXMgYWxsIHRoZWlyIGFjdGl2aXRpZXMgYXMgd2hvbGx5IG9yIHBhcnRpYWxseSBhZGRyZXNzaW5nIGEgaHVtYW5pdGFyaWFuIGNyaXNpcyBvciBtdWx0aXBsZSBjcmlzZXMuIFlvdSBjYW4gbGF0ZXIgbWFudWFsbHkgYWRkIG9yIHJlbW92ZSBhIEh1bWFuaXRhcmlhbiBGbGFnIG9uIGluZGl2aWR1YWwgYWN0aXZpdGllcyBpZiByZXF1aXJlZC5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJodW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgSHVtYW5pdGFyaWFuIGhlcmVcXFwiXFxuICAgICAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInByb3BzLmh1bWFuaXRhcmlhblxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5odW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuaHVtYW5pdGFyaWFuID0gdmFsdWUpXFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gSHVtYW5pdGFyaWFuIEVuZCAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBGbG93IFR5cGUgU3RhcnQgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImRlZmF1bHQtZmxvdy10eXBlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiXFxuICAgICAgICAgICAgICAgICAgICA+RGVmYXVsdCBGbG93IFR5cGU8L2xhYmVsXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVxcXCJ3LTcyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJkZWZhdWx0LWZsb3ctdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiV2hldGhlciB0aGUgYWN0aXZpdHkgaXMgZnVuZGVkIGJ5IE9mZmljaWFsIERldmVsb3BtZW50IEFzc2lzdGFuY2UgKE9EQSksIE90aGVyIE9mZmljaWFsIEZsb3dzIChPT0YpLCBldGMuIDxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC1mbG93LXR5cGUvJz5Gb3IgbW9yZSBpbmZvcm1hdGlvbjwvYT5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJkZWZhdWx0LWZsb3ctdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidnVlX19zZWxlY3RcXFwiXFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBEZWZhdWx0IEZsb3cgVHlwZSBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0Rmxvd1R5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9mbG93X3R5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9mbG93X3R5cGUgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgZmxvdyB0eXBlIHdpbGwgYmUgYXV0b21hdGljYWxseVxcbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRlZCBpbiBhY3Rpdml0eSB3aGVuIGNyZWF0ZWQuXFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IEZsb3cgVHlwZSBFbmQgLS0+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgRmluYW5jZSBUeXBlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWZpbmFuY2UtdHlwZVxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPkRlZmF1bHQgRmluYW5jZSBUeXBlPC9sYWJlbFxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cXFwidy03MlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiZGVmYXVsdC1maW5hbmNlLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSB0eXBlIG9mIGZpbmFuY2UgKGUuZy4gZ3JhbnQsIGxvYW4sIGRlYnQgcmVsaWVmLCBldGMpLiBUaGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgdHJhbnNhY3Rpb25zIGluIHRoZSBhY3Rpdml0eSByZXBvcnQ7IGl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluZGl2aWR1YWwgdHJhbnNhY3Rpb25zLiA8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL2FjdGl2aXR5LXN0YW5kYXJkL2lhdGktYWN0aXZpdGllcy9pYXRpLWFjdGl2aXR5L2RlZmF1bHQtZmluYW5jZS10eXBlLyc+Rm9yIG1vcmUgaW5mb3JtYXRpb248L2E+XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwiZGVmYXVsdC1maW5hbmNlLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBGaW5hbmNlIFR5cGUgaGVyZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMuZGVmYXVsdEZpbmFuY2VUeXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfZmluYW5jZV90eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfZmluYW5jZV90eXBlID0gdmFsdWUpXFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgICAgICBJZiBzZWxlY3RlZCwgdGhlbiBkZWZhdWx0IGZpbmFuY2UgdHlwZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcXG4gICAgICAgICAgICAgICAgICBwb3B1bGF0ZWQgaW4gYWN0aXZpdHkgd2hlbiBjcmVhdGVkLlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBGaW5hbmNlIFR5cGUgRW5kIC0tPlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IEFpZCBUeXBlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWFpZC10eXBlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiXFxuICAgICAgICAgICAgICAgICAgICA+RGVmYXVsdCBBaWQgVHlwZTwvbGFiZWxcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XFxcInctNzJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVxcXCJ0b3AtbGVmdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiZGVmYXVsdC1haWQtdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiVGhlIHR5cGUgb2YgYWlkIGJlaW5nIHN1cHBsaWVkIChwcm9qZWN0LXR5cGUgaW50ZXJ2ZW50aW9uLCBidWRnZXQgc3VwcG9ydCwgZGVidCByZWxpZWYsIGV0Yy4pLiBUaGlzIGVsZW1lbnQgc3BlY2lmaWVzIGEgZGVmYXVsdCBmb3IgYWxsIHRoZSBhY3Rpdml0eeKAmXMgZmluYW5jaWFsIHRyYW5zYWN0aW9uczsgaXQgY2FuIGJlIG92ZXJyaWRkZW4gYXQgdGhlIGluZGl2aWR1YWwgdHJhbnNhY3Rpb24gbGV2ZWwuIDxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC1haWQtdHlwZS8nPkZvciBtb3JlIGluZm9ybWF0aW9uPC9hPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtYWlkLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBBaWQgVHlwZSBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0QWlkVHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X2FpZF90eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfYWlkX3R5cGUgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgYWlkIHR5cGUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGVkIGluIGFjdGl2aXR5IHdoZW4gY3JlYXRlZC4gQWxzbywgVm9jYWJ1bGFyeSB0eXBlXFxuICAgICAgICAgICAgICAgICAgXFxcIk9FQ0QgREFDXFxcIiB3aWxsIGJlIGNob3NlbiBieSBkZWZhdWx0LlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBBaWQgVHlwZSBFbmQgLS0+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgVGllZCBTdGF0dXMgU3RhcnQgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImRlZmF1bHQtdGllZC1zdGF0dXNcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCJcXG4gICAgICAgICAgICAgICAgICAgID5EZWZhdWx0IFRpZWQgU3RhdHVzPC9sYWJlbFxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cXFwidy03MlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XFxcInRvcC1sZWZ0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJkZWZhdWx0LXRpZWQtc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJXaGV0aGVyIHRoZSBhaWQgaXMgdW50aWVkLCB0aWVkLCBvciBwYXJ0aWFsbHkgdGllZC4gVGhpcyBlbGVtZW50IHNwZWNpZmllcyBhIGRlZmF1bHQgZm9yIGFsbCB0aGUgYWN0aXZpdHnigJlzIGZpbmFuY2lhbCB0cmFuc2FjdGlvbnM7IGl0IGNhbiBiZSBvdmVycmlkZGVuIGF0IHRoZSBpbmRpdmlkdWFsIHRyYW5zYWN0aW9uIGxldmVsLjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC10aWVkLXN0YXR1cy8nPkZvciBtb3JlIGluZm9ybWF0aW9uPC9hPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtdGllZC1zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBUaWVkIFN0YXR1cyBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0VGllZFN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X3RpZWRfc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfdGllZF9zdGF0dXMgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgdGllZCBzdGF0dXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGVkIGluIGFjdGl2aXR5IHdoZW4gY3JlYXRlZC5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgVGllZCBTdGF0dXMgRW5kIC0tPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPCEtLSBBY3Rpdml0eSBEYXRhIERlZmF1bHQgRW5kIC0tPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwdC0zIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwibWVzc2FnZS1pY29uXFxcIiAvPlxcbiAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICBZb3UgY2FuIGFkanVzdCB0aGVzZSB2YWx1ZXMgbGF0ZXIgZnJvbSB0aGUgJ0RlZmF1bHQgVmFsdWVzJyBzZWN0aW9uLlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC0zIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwidGV4dC14cyBmb250LWJvbGQgdGV4dC1uLTQwXFxcIiBAY2xpY2s9XFxcInByZXZpb3VzU3RlcFxcXCI+XFxuICAgICAgICAgIFByZXZpb3VzXFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC00XFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LW4tNDBcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgU2tpcCB0byBuZXh0IHN0ZXBcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XFxcImJ1dHRvbiBwcmltYXJ5LWJ0biB0ZXh0LXhzXFxcIiBAY2xpY2s9XFxcInByb2NlZWRTdGVwXFxcIj5cXG4gICAgICAgICAgICBTYXZlIGFuZCBORVhUXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IHYtZWxzZT5cXG4gICAgICA8ZGl2XFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBtaW4taC1bMzYwcHhdIG1pbi13LVs3MzNweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYmctbi0xMFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8VHJhbnNpdGlvbiBtb2RlPVxcXCJvdXQtaW5cXFwiPlxcbiAgICAgICAgICA8ZGl2IHYtaWY9XFxcIiFpc1NhdmVkXFxcIiBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgIDxMaW5lc0xvYWRlciAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0zIGZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMlxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bNDFweF1cXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bMjAwcHhdIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgPkRlZmF1bHQgdmFsdWVzIGhhdmUgYmVlbiBzYXZlZCBzdWNjZXNzZnVsbHkuPC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvVHJhbnNpdGlvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG5cXG4gIDxkaXYgdi1lbHNlIGNsYXNzPVxcXCJoLWZ1bGwgbWluLXctWzczM3B4XSBwdC1bMTMwcHhdXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLW4tMTAgcHktWzYwcHhdIHB4LVs3M3B4XVxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bMzRweF1cXFwiIC8+XFxuICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgPGgyIGNsYXNzPVxcXCJtYXgtdy1bNTg3cHhdIHB5LVs1LjRweF0gdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXFxuICAgICAgICAgICAgPC9oMj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSB0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBtYWtlIGFueSBjaGFuZ2VzLCBnbyB0b1xcbiAgICAgICAgICAgICAgPGEgaHJlZj1cXFwiL3NldHRpbmdcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5zZXR0aW5nczwvYT4uXFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLVszMHB4XSBzZWxmLWVuZFxcXCI+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14c1xcXCIgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIj5cXG4gICAgICAgICAgTkVYVFxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgZGVmaW5lRW1pdHMsIHdhdGNoRWZmZWN0LCByZWYgfSBmcm9tICd2dWUnO1xcblxcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IEhvdmVyVGV4dCBmcm9tICdDb21wb25lbnRzL0hvdmVyVGV4dC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IExpbmVzTG9hZGVyIGZyb20gJ0NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlJztcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIGN1cnJlbmNpZXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBsYW5ndWFnZXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBodW1hbml0YXJpYW46IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0Rmxvd1R5cGU6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0QWlkVHlwZToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGRlZmF1bHRUaWVkU3RhdHVzOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdFZhbHVlczoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGZldGNoRGF0YToge1xcbiAgICB0eXBlOiBGdW5jdGlvbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IEJvb2xlYW4sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1xcbiAgJ3Byb2NlZWRTdGVwJyxcXG4gICdwcmV2aW91c1N0ZXAnLFxcbiAgJ2NvbXBsZXRlU3RlcCcsXFxuICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXFxuXSk7XFxuY29uc3QgYWxsRGVmYXVsdFZhbHVlID0gcmVmKHtcXG4gIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxcbiAgZGVmYXVsdF9sYW5ndWFnZTogJycsXFxuICBoaWVyYXJjaHk6ICcnLFxcbiAgaHVtYW5pdGFyaWFuOiAnJyxcXG4gIGRlZmF1bHRfZmxvd190eXBlOiAnJyxcXG4gIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcXG4gIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxcbiAgZGVmYXVsdF90aWVkX3N0YXR1czogJycsXFxufSk7XFxuXFxuY29uc3QgaXNTYXZpbmdTdGFydGVkID0gcmVmKGZhbHNlKTtcXG5jb25zdCBpc1NhdmVkID0gcmVmKGZhbHNlKTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcykge1xcbiAgICBPYmplY3Qua2V5cyhhbGxEZWZhdWx0VmFsdWUudmFsdWUpLmZvckVhY2goKGtleSkgPT4ge1xcbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV0gIT09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgYWxsRGVmYXVsdFZhbHVlLnZhbHVlW2tleV0gPSBwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV07XFxuICAgICAgfVxcbiAgICB9KTtcXG4gIH1cXG59KTtcXG5cXG5jb25zdCBwcm9jZWVkU3RlcCA9ICgpID0+IHtcXG4gIGlzU2F2aW5nU3RhcnRlZC52YWx1ZSA9IHRydWU7XFxuICBheGlvc1xcbiAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGFsbERlZmF1bHRWYWx1ZS52YWx1ZSlcXG4gICAgLnRoZW4oXFxuICAgICAgKHJlc3BvbnNlOiB7XFxuICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XFxuICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0X3ZhbHVlczoge1xcbiAgICAgICAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogc3RyaW5nO1xcbiAgICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogc3RyaW5nO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgIH0pID0+IHtcXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5kZWZhdWx0X3ZhbHVlcztcXG5cXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IHRydWU7XFxuICAgICAgICAgIH0sIDEwMDApO1xcblxcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgICAgICBwcm9wcy5mZXRjaERhdGEoKTtcXG5cXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVDb21wbGV0ZWRDaGVjayhkZWZhdWx0VmFsdWVzKTtcXG5cXG4gICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xcbiAgICAgICAgICB9LCAzMDAwKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIClcXG4gICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUubG9nKCdFcnJvcicsIGVycikpO1xcbn07XFxuXFxuY29uc3QgZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2sgPSAoZGVmYXVsdFZhbHVlczoge1xcbiAgZGVmYXVsdF9jdXJyZW5jeTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcXG4gIGRlZmF1bHRfbGFuZ3VhZ2U6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XFxufSkgPT4ge1xcbiAgaWYgKFxcbiAgICBkZWZhdWx0VmFsdWVzICYmXFxuICAgIGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9jdXJyZW5jeSAhPSBudWxsICYmXFxuICAgIGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9jdXJyZW5jeSAhPT0gJycgJiZcXG4gICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2xhbmd1YWdlICE9IG51bGwgJiZcXG4gICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2xhbmd1YWdlICE9PSAnJ1xcbiAgKSB7XFxuICAgIGVtaXQoJ2NvbXBsZXRlU3RlcCcsIDIpO1xcbiAgfSBlbHNlIHtcXG4gICAgZW1pdCgncmVtb3ZlQ29tcGxldGVkU3RlcCcsIDIpO1xcbiAgfVxcbn07XFxuXFxuY29uc3QgcHJldmlvdXNTdGVwID0gKCkgPT4ge1xcbiAgZW1pdCgncHJldmlvdXNTdGVwJyk7XFxufTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGUgc2NvcGVkPlxcbi52LWVudGVyLWFjdGl2ZSxcXG4udi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLnYtZW50ZXItZnJvbSxcXG4udi1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi52LWVudGVyLWFjdGl2ZVtkYXRhLXYtZmQwNTQyYzJdLFxcbi52LWxlYXZlLWFjdGl2ZVtkYXRhLXYtZmQwNTQyYzJdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XFxufVxcbi52LWVudGVyLWZyb21bZGF0YS12LWZkMDU0MmMyXSxcXG4udi1sZWF2ZS10b1tkYXRhLXYtZmQwNTQyYzJdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcbi5zbGlkZS1lbnRlci1hY3RpdmVbZGF0YS12LWZkMDU0MmMyXSxcXG4uc2xpZGUtbGVhdmUtYWN0aXZlW2RhdGEtdi1mZDA1NDJjMl0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuLnNsaWRlLWVudGVyLWZyb21bZGF0YS12LWZkMDU0MmMyXSxcXG4uc2xpZGUtbGVhdmUtdG9bZGF0YS12LWZkMDU0MmMyXSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUE4ZEE7O0VBRUUseUJBQXlCO0FBQzNCO0FBRUE7O0VBRUUsVUFBVTtFQUNWLDJCQUEyQjtBQUM3QjtBQUVBOztFQUVFLHlCQUF5QjtBQUMzQjtBQUVBOztFQUVFLFVBQVU7RUFDViwyQkFBMkI7QUFDN0JcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPCEtLSBlc2xpbnQtZGlzYWJsZSB2dWUvbm8tdi1odG1sIC0tPlxcbjx0ZW1wbGF0ZT5cXG4gIDxUb2FzdE1lc3NhZ2VcXG4gICAgdi1pZj1cXFwidG9hc3RWaXNpYmlsaXR5XFxcIlxcbiAgICBjbGFzcz1cXFwidG9hc3QgZml4ZWQgdG9wLTEwIHJpZ2h0LTEwXFxcIlxcbiAgICA6bWVzc2FnZT1cXFwidG9hc3RNZXNzYWdlXFxcIlxcbiAgICA6dHlwZT1cXFwidG9hc3RUeXBlXFxcIlxcbiAgLz5cXG5cXG4gIDxMb2FkZXIgdi1pZj1cXFwiaXNMb2FkZXJWaXNpYmxlXFxcIiAvPlxcblxcbiAgPGRpdiB2LWlmPVxcXCIhcHJvcHMuc3RhdHVzXFxcIj5cXG4gICAgPGRpdiB2LWlmPVxcXCIhaXNTYXZpbmdcXFwiPlxcbiAgICAgIDwhLS0gRXJyb3IgLS0+XFxuICAgICAgPGRpdlxcbiAgICAgICAgdi1pZj1cXFwiaGFzRXJyb3JcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBnYXAtMiBib3JkZXItbC1bM3B4XSBib3JkZXItY3JpbXNvbi00MCBiZy1yb3NlIHB5LVsxMHB4XSBweC1bMTRweF1cXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdj5cXG4gICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1bMjJweF1cXFwiXFxuICAgICAgICAgICAgaWNvbj1cXFwiZXhjbGFtYXRpb24td2FybmluZy1maWxsXFxcIlxcbiAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzIGxlYWRpbmctWzIwcHhdIHRyYWNraW5nLVstMiVdXFxcIj5cXG4gICAgICAgICAgPHAgY2xhc3M9XFxcImZvbnQtYm9sZFxcXCI+VmVyaWZpY2F0aW9uIFJlcXVpcmVkPC9wPlxcbiAgICAgICAgICA8dWwgY2xhc3M9XFxcImxpc3QtZGlzY1xcXCI+XFxuICAgICAgICAgICAgPGxpXFxuICAgICAgICAgICAgICB2LWZvcj1cXFwiKG1lc3NhZ2UsIGluZGV4KSBpbiBlcnJvck1lc3NhZ2VzXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidHJhbnNsYXRlLXgtM1xcXCJcXG4gICAgICAgICAgICAgIHYtaHRtbD1cXFwibWVzc2FnZVxcXCJcXG4gICAgICAgICAgICA+PC9saT5cXG4gICAgICAgICAgPC91bD5cXG4gICAgICAgICAgPGVtPlxcbiAgICAgICAgICAgIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAgZm9yIG5vdyBhbmQgY29tZSBiYWNrIHRvIGl0IG9uY2UgeW91ciBhY2NvdW50XFxuICAgICAgICAgICAgaGFzIGJlZW4gdmVyaWZpZWQuXFxuICAgICAgICAgIDwvZW0+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8IS0tIE9yZ2FuaXphdGlvbiBEYXRhIFB1Ymxpc2ggLS0+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoMyBjbGFzcz1cXFwicGItWzJweF0gdGV4dC1bMjBweF0gZm9udC1ib2xkIGxlYWRpbmctOSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICBQdWJsaXNoIE9yZ2FuaXNhdGlvbiBEYXRhXFxuICAgICAgICA8L2gzPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1zbVxcXCI+XFxuICAgICAgICAgIFJldmlldyB0aGUgYmFzaWMgaW5mb3JtYXRpb24gb24geW91ciBvcmdhbmlzYXRpb24gYW5kIHB1Ymxpc2ggaXQuXFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcIm10LTMgcm91bmRlZC1sZyBiZy1uLTEwIHB0LVsyMHB4XSBwbC1bMjdweF0gcGItWzIwcHhdXFxcIlxcbiAgICAgICAgICA6Y2xhc3M9XFxcInsgJ21heC1oLVsyNzBweF0gb3ZlcmZsb3cteS1hdXRvJzogaGFzRXJyb3IgfVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiYm9yZGVyLWIgYm9yZGVyLW4tMjAgcHktNFxcXCI+XFxuICAgICAgICAgICAgPHAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGZvbnQtYm9sZFxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1iYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgICBpY29uPVxcXCJvcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmdcXFwiXFxuICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1sLTEgbXItWzEwcHhdXFxcIj5yZXBvcnRpbmctb3JnYW5pc2F0aW9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtYmFzZSB0ZXh0LWNhbWVsLTUwXFxcIiBpY29uPVxcXCJjb3JlXFxcIj48L3N2Zy12dWU+XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHQtWzE4cHhdIHByLTVcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgdGV4dC1uLTUwXFxcIj5yZXBvcnRpbmctb3JnPC9wPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQteHMgdGV4dC1uLTUwXFxcIj5IZWxwPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgbmFtZT1cXFwicmVwb3J0aW5nLW9yZ1xcXCJcXG4gICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJUaGUgb3JnYW5pc2F0aW9uIGlzc3VpbmcgdGhlIHJlcG9ydC4gTWF5IGJlIGEgcHJpbWFyeSBzb3VyY2UgKHJlcG9ydGluZyBvbiBpdHMgb3duIGFjdGl2aXR5IGFzIGRvbm9yLCBpbXBsZW1lbnRpbmcgYWdlbmN5LCBldGMpIG9yIGEgc2Vjb25kYXJ5IHNvdXJjZSAocmVwb3J0aW5nIG9uIHRoZSBhY3Rpdml0aWVzIG9mIGFub3RoZXIgb3JnYW5pc2F0aW9uKS5cXFwiXFxuICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgbGluaz1cXFwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL29yZ2FuaXNhdGlvbi1zdGFuZGFyZC9pYXRpLW9yZ2FuaXNhdGlvbnMvaWF0aS1vcmdhbmlzYXRpb24vcmVwb3J0aW5nLW9yZy9cXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JpZCBncmlkLWNvbHMtMiBwdC00XFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gUmVmZXJlbmNlIC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJyZWZlcmVuY2VcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VcXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJyZXF1aXJlZC1pY29uXFxcIj4gKjwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcInJlZmVyZW5jZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiTWFjaGluZS1yZWFkYWJsZSBpZGVudGlmaWNhdGlvbiBzdHJpbmcgZm9yIHRoZSBvcmdhbmlzYXRpb24gaXNzdWluZyB0aGUgcmVwb3J0LiBNdXN0IGJlIGluIHRoZSBmb3JtYXQge1JlZ2lzdHJhdGlvbkFnZW5jeX0te1JlZ2lzdHJhdGlvbk51bWJlcn0uXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbGluaz1cXFwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL29yZ2FuaXNhdGlvbi1zdGFuZGFyZC9pYXRpLW9yZ2FuaXNhdGlvbnMvaWF0aS1vcmdhbmlzYXRpb24vcmVwb3J0aW5nLW9yZy9cXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcInJlZmVyZW5jZVxcXCJcXG4gICAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJvcmdhbml6YXRpb25EYXRhLnJlZlxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQtWzRweF0gYm9yZGVyIGJvcmRlci1uLTIwIHB5LTIgcGwtNCBmb2N1czpvdXRsaW5lLTAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTBcXFwiXFxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdib3JkZXItY3JpbXNvbi01MCc6IGhhc1JlZmVyZW5jZUVycm9yIH1cXFwiXFxuICAgICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiVHlwZSByZWZlcmVuY2VcXFwiXFxuICAgICAgICAgICAgICAgICAgQGtleXVwPVxcXCJoYXNSZWZlcmVuY2VFcnJvciA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJoYXNSZWZlcmVuY2VFcnJvclxcXCIgY2xhc3M9XFxcInRleHQtZGFuZ2VyIGVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUVycm9yTWVzc2FnZVxcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0hlbHAoYHJlZmVyZW5jZWApXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgSGVscFxcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgPCEtLSBUeXBlIC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJ0eXBlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInJlcXVpcmVkLWljb25cXFwiPiAqPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwidHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiVGhlIHR5cGUgb2Ygb3JnYW5pc2F0aW9uIGlzc3VpbmcgdGhlIHJlcG9ydC5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rPVxcXCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvb3JnYW5pc2F0aW9uLXN0YW5kYXJkL2lhdGktb3JnYW5pc2F0aW9ucy9pYXRpLW9yZ2FuaXNhdGlvbi9yZXBvcnRpbmctb3JnL1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwidHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidnVlX19zZWxlY3RcXFwiXFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBAdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMub3JnYW5pemF0aW9uVHlwZU9wdGlvbnNcXFwiXFxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJvcmdhbml6YXRpb25EYXRhLnR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChvcmdhbml6YXRpb25EYXRhLnR5cGUgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0hlbHAoYHR5cGVgKVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIEhlbHBcXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgIDwhLS0gU2Vjb25kYXJ5IHJlcG9ydGVyIC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF0gcHQtNlxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcInNlY29uZGFyeS1yZXBvcnRlclxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeS1yZXBvcnRlclxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XFxcInRvcC1sZWZ0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJzZWNvbmRhcnktcmVwb3J0ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIkEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlcG9ydGluZyBvcmdhbmlzYXRpb24gb2YgdGhpcyBhY3Rpdml0eSBpcyBhY3RpbmcgYXMgYSBzZWNvbmRhcnkgcmVwb3J0ZXIuIEEgc2Vjb25kYXJ5IHJlcG9ydGVyIGlzIG9uZSB0aGF0IHJlcHJvZHVjZXMgZGF0YSBvbiB0aGUgYWN0aXZpdGllcyBvZiBhbiBvcmdhbmlzYXRpb24gZm9yIHdoaWNoIGl0IGlzIG5vdCBkaXJlY3RseSByZXNwb25zaWJsZS5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rPVxcXCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvb3JnYW5pc2F0aW9uLXN0YW5kYXJkL2lhdGktb3JnYW5pc2F0aW9ucy9pYXRpLW9yZ2FuaXNhdGlvbi9yZXBvcnRpbmctb3JnL1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwic2Vjb25kYXJ5LXJlcG9ydGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ2dWVfX3NlbGVjdFxcXCJcXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VsZWN0IHNlY29uZGFyeS1yZXBvcnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwic2Vjb25kYXJ5UmVwb3J0ZXJPcHRpb25zXFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwib3JnYW5pemF0aW9uRGF0YS5zZWNvbmRhcnlfcmVwb3J0ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChvcmdhbml6YXRpb25EYXRhLnNlY29uZGFyeV9yZXBvcnRlciA9IHZhbHVlKVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93SGVscChgc2Vjb25kYXJ5LXJlcG9ydGVyYClcXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICBIZWxwXFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwdC0zIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwibWVzc2FnZS1pY29uXFxcIiAvPlxcbiAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICBZb3UgY2FuIGFkanVzdCB0aGVzZSB2YWx1ZXMgbGF0ZXIgZnJvbSB0aGUgJ09yZ2FuaXNhdGlvbiBEYXRhJ1xcbiAgICAgICAgICAgIHNlY3Rpb24uXFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTMgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LW4tNDBcXFwiIEBjbGljaz1cXFwicHJldmlvdXNTdGVwXFxcIj5cXG4gICAgICAgICAgUHJldmlvdXNcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcXFwiPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcInRleHQteHMgZm9udC1ib2xkIHRleHQtbi00MFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcImVtaXQoJ3Byb2NlZWRTdGVwJylcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICBTa2lwIHRvIG5leHQgc3RlcFxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiYnV0dG9uIHByaW1hcnktYnRuIHRleHQteHNcXFwiIEBjbGljaz1cXFwicHJvY2VlZFN0ZXBcXFwiPlxcbiAgICAgICAgICAgIFB1Ymxpc2ggYW5kIE5FWFRcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8VHJhbnNpdGlvbiBuYW1lPVxcXCJzbGlkZVxcXCIgbW9kZT1cXFwib3V0LWluXFxcIj5cXG4gICAgICAgIDxTaWRlSGVscFRleHRcXG4gICAgICAgICAgOnRpdGxlPVxcXCJoZWxwVGl0bGVcXFwiXFxuICAgICAgICAgIDpjb250ZW50PVxcXCJoZWxwQ29udGVudFxcXCJcXG4gICAgICAgICAgOnZpc2libGU9XFxcImhlbHBWaXNpYmxlXFxcIlxcbiAgICAgICAgICBAY2xvc2U9XFxcImhlbHBWaXNpYmxlID0gZmFsc2VcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvVHJhbnNpdGlvbj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgdi1lbHNlPlxcbiAgICAgIDxkaXZcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IG1pbi1oLVszNjBweF0gbWluLXctWzczM3B4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy1uLTEwXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxUcmFuc2l0aW9uIG1vZGU9XFxcIm91dC1pblxcXCI+XFxuICAgICAgICAgIDxkaXYgdi1pZj1cXFwiIWlzU2F2ZWRcXFwiIGNsYXNzPVxcXCJyZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgPExpbmVzTG9hZGVyIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm10LTMgZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiZ3JlZW4tY2lyY2xlLXRpY2tcXFwiIGNsYXNzPVxcXCJ0ZXh0LVs0MXB4XVxcXCIgLz5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1heC13LVsyMDBweF0gdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgICAgICA+T3JnYW5pc2F0aW9uIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC48L3NwYW5cXG4gICAgICAgICAgICA+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9UcmFuc2l0aW9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcblxcbiAgPGRpdiB2LWVsc2UgY2xhc3M9XFxcImgtZnVsbCBtaW4tdy1bNzMzcHhdIHB0LVsxMzBweF1cXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGgtZnVsbCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvdW5kZWQtbGcgYmctbi0xMCBweS1bNjBweF0gcHgtWzczcHhdXFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiZ3JlZW4tY2lyY2xlLXRpY2tcXFwiIGNsYXNzPVxcXCJ0ZXh0LVszNHB4XVxcXCIgLz5cXG4gICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICA8aDIgY2xhc3M9XFxcIm1heC13LVs2OTNweF0gcHktWzUuNHB4XSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgIE9yZ2FuaXNhdGlvbiBkYXRhIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXFxuICAgICAgICAgICAgPC9oMj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSB0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBtYWtlIGNoYW5nZXMsIGdvIHRvXFxuICAgICAgICAgICAgICA8YSBocmVmPVxcXCIvb3JnYW5pc2F0aW9uXFxcIiB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+T3JnYW5pc2F0aW9uIGRhdGE8L2E+LlxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtYi1bMzBweF0gc2VsZi1lbmRcXFwiPlxcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiYnV0dG9uIHByaW1hcnktYnRuIHRleHQteHNcXFwiIEBjbGljaz1cXFwiZW1pdChgcHJvY2VlZFN0ZXBgKVxcXCI+XFxuICAgICAgICAgIE5FWFRcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lRW1pdHMsIGRlZmluZVByb3BzLCByZWYgfSBmcm9tICd2dWUnO1xcblxcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IEhvdmVyVGV4dCBmcm9tICdDb21wb25lbnRzL0hvdmVyVGV4dC52dWUnO1xcbmltcG9ydCBTaWRlSGVscFRleHQgZnJvbSAnQ29tcG9uZW50cy9TaWRlSGVscFRleHQudnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBMaW5lc0xvYWRlciBmcm9tICdDb21wb25lbnRzL0xpbmVzTG9hZGVyLnZ1ZSc7XFxuaW1wb3J0IFRvYXN0TWVzc2FnZSBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCBMb2FkZXIgZnJvbSAnQ29tcG9uZW50cy9Mb2FkZXIudnVlJztcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIG9yZ2FuaXphdGlvblR5cGVPcHRpb25zOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgcHJldmlvdXNWYWx1ZXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBmZXRjaERhdGE6IHtcXG4gICAgdHlwZTogRnVuY3Rpb24sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHN0YXR1czoge1xcbiAgICB0eXBlOiBCb29sZWFuLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcXG4gICdwcm9jZWVkU3RlcCcsXFxuICAncHJldmlvdXNTdGVwJyxcXG4gICdjb21wbGV0ZVN0ZXAnLFxcbiAgJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLFxcbl0pO1xcblxcbmNvbnN0IHNlY29uZGFyeVJlcG9ydGVyT3B0aW9ucyA9IFtcXG4gIHsgdmFsdWU6ICcxJywgbGFiZWw6ICdUcnVlJyB9LFxcbiAgeyB2YWx1ZTogJzAnLCBsYWJlbDogJ0ZhbHNlJyB9LFxcbl07XFxuXFxuY29uc3Qgb3JnYW5pemF0aW9uRGF0YSA9IHJlZih7XFxuICByZWY6IHByb3BzLnByZXZpb3VzVmFsdWVzWzBdPy5yZWYgfHwgJycsXFxuICB0eXBlOiBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXT8udHlwZSB8fCAnJyxcXG4gIHNlY29uZGFyeV9yZXBvcnRlcjogcHJvcHMucHJldmlvdXNWYWx1ZXNbMF0/LnNlY29uZGFyeV9yZXBvcnRlciB8fCAnJyxcXG59KTtcXG5cXG5jb25zdCBoZWxwVGl0bGUgPSByZWYoJycpO1xcbmNvbnN0IGhlbHBDb250ZW50ID0gcmVmKCcnKTtcXG5jb25zdCBoZWxwVmlzaWJsZSA9IHJlZihmYWxzZSk7XFxuXFxuY29uc3QgaXNTYXZpbmcgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGlzU2F2ZWQgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IGhhc0Vycm9yID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlcnJvck1lc3NhZ2VzID0gcmVmPHN0cmluZ1tdPihbXSk7XFxuXFxuY29uc3QgaXNMb2FkZXJWaXNpYmxlID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCB0b2FzdFZpc2liaWxpdHkgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHRvYXN0TWVzc2FnZSA9IHJlZignJyk7XFxuY29uc3QgdG9hc3RUeXBlID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBoYXNSZWZlcmVuY2VFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3QgcmVmZXJlbmNlRXJyb3JNZXNzYWdlID0gcmVmKCcnKTtcXG5cXG5jb25zdCBjb250ZW50VmFsdWVzID0gW1xcbiAge1xcbiAgICB0aXRsZTogJ3JlZmVyZW5jZScsXFxuICAgIGNvbnRlbnQ6XFxuICAgICAgJzxkaXYgY2xhc3M9XFxcInNwYWNlLXktMS41XFxcIj4gUHJvdmlkZSB0aGUgSUFUSSBPcmdhbmlzYXRpb24gSWRlbnRpZmllciBvZiB0aGUgb3JnYW5pc2F0aW9uIHB1Ymxpc2hpbmcgdGhlIGRhdGEuIFRoZSBxdWlja2VzdCB3YXkgdG8gZmluZCB0aGlzIGlzIHRvIHNlYXJjaCBmb3IgdGhlIG9yZ2FuaXNhdGlvbiBpbiB0aGUgPGEgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIGhyZWY9XFxcImh0dHBzOi8vd3d3LmlhdGlyZWdpc3RyeS5vcmcvcHVibGlzaGVyL1xcXCI+SUFUSSBQdWJsaXNoZXIgTGlzdDwvYT4uIElmIHlvdSBjYW5ub3QgZmluZCB0aGUgb3JnYW5pc2F0aW9uLCBzZWUgPGEgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIGhyZWY9XFxcImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9ndWlkYW5jZS9wdWJsaXNoaW5nLWRhdGEvZGF0YS1xdWFsaXR5LWFuZC12aXN1YWxpc2F0aW9uL2ZpbmRpbmctb3RoZXItb3JnYW5pc2F0aW9ucy1pZGVudGlmaWVycy9cXFwiPmZ1cnRoZXIgZ3VpZGFuY2U8L2E+LiA8L2Rpdj4nLFxcbiAgfSxcXG4gIHtcXG4gICAgdGl0bGU6ICd0eXBlJyxcXG4gICAgY29udGVudDpcXG4gICAgICAnPGRpdiBjbGFzcz1cXFwic3BhY2UteS0xLjVcXFwiPiBTZWxlY3QgdGhlIHR5cGUgdGhhdCBiZXN0IGRlc2NyaWJlcyB0aGUgb3JnYW5pc2F0aW9uIHB1Ymxpc2hpbmcgdGhlIGRhdGEuPGEgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIGhyZWY9XFxcImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9pYXRpLXN0YW5kYXJkLzIwMy9jb2RlbGlzdHMvb3JnYW5pc2F0aW9udHlwZS9cXFwiPkluZm9ybWF0aW9uIG9uIGFsbCBvcmdhbmlzYXRpb24gdHlwZXMuPC9hPjwvZGl2PicsXFxuICB9LFxcbiAge1xcbiAgICB0aXRsZTogJ3NlY29uZGFyeS1yZXBvcnRlcicsXFxuICAgIGNvbnRlbnQ6IGA8ZGl2IGNsYXNzPVxcXCJzcGFjZS15LTEuNVxcXCI+IEFyZSB5b3UgcmVwcm9kdWNpbmcgdGhlIGRhdGEgcmVwb3J0ZWQgYnkgYW5vdGhlciBvcmdhbmlzYXRpb24/IElmIHNvLCB5b3VyIG9yZ2FuaXNhdGlvbiBpcyBhIOKAmHNlY29uZGFyeSByZXBvcnRlcuKAmSBhbmQgeW91IHNob3VsZCBzZWxlY3QgJzxiPlllczwvYj7igJkuIElmIHlvdSBhcmUgcmVwb3J0aW5nIHlvdXIgb3duIG9yZ2FuaXNhdGlvbuKAmXMgZGF0YSwgc2VsZWN0IOKAmDxiPk5vPC9iPuKAmS48YnI+PGJyPlBsZWFzZSBub3RlOiB5b3UgYXJlIDxiPm5vdDwvYj4gYSBzZWNvbmRhcnkgcmVwb3J0ZXIgaWYgeW91ciBvcmdhbmlzYXRpb24gaXMgb2ZmaWNpYWxseSBhc3NpZ25lZCBhcyBhIHByb3h5IHRvIHJlcG9ydCBJQVRJIGRhdGEgb24gYmVoYWxmIG9mIGFub3RoZXIgb3JnYW5pc2F0aW9uLiA8L2Rpdj5gLFxcbiAgfSxcXG5dO1xcblxcbmNvbnN0IHNob3dIZWxwID0gKHRpdGxlOiBzdHJpbmcpID0+IHtcXG4gIGhlbHBUaXRsZS52YWx1ZSA9IHRpdGxlO1xcbiAgaGVscENvbnRlbnQudmFsdWUgPSBjb250ZW50VmFsdWVzLmZpbmQoKGNvbnRlbnQpID0+IGNvbnRlbnQudGl0bGUgPT09IHRpdGxlKVxcbiAgICA/LmNvbnRlbnQgYXMgc3RyaW5nO1xcbiAgaGVscFZpc2libGUudmFsdWUgPSB0cnVlO1xcbn07XFxuXFxuY29uc3QgcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwgPSAoKSA9PiB7XFxuICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xcbiAgYXhpb3NcXG4gICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKSwgMzAwMCk7XFxuICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcXG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSksIDMwMDApO1xcbiAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG5cXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XFxuICBpZiAoKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2VuZC12ZXJpZmljYXRpb24nKSkge1xcbiAgICByZXNlbmRWZXJpZmljYXRpb25FbWFpbCgpO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IHRyYW5zZm9ybU1lc3NhZ2VzID0gKG1lc3NhZ2VzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcXG4gIHJldHVybiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcXG4gICAgc3dpdGNoIChtZXNzYWdlKSB7XFxuICAgICAgY2FzZSAnWW91IGhhdmUgbm90IHZlcmlmaWVkIHlvdXIgZW1haWwgYWRkcmVzcy4nOlxcbiAgICAgICAgcmV0dXJuIGBZb3VyIGVtYWlsIGFkZHJlc3MgaGFzIG5vdCBiZWVuIHZlcmlmaWVkLiA8c3BhbiBjbGFzcz1cXFwicmVzZW5kLXZlcmlmaWNhdGlvbiB0ZXh0LWJsdWVjb3JhbCBjdXJzb3ItcG9pbnRlciBob3Zlcjp0ZXh0LXNwcmluZy01MCB1bmRlcmxpbmUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tWzQwMG1zXVxcXCI+UmVzZW5kIFZlcmlmaWNhdGlvbiBlbWFpbDwvc3Bhbj5gO1xcblxcbiAgICAgIGNhc2UgJ1RoZSBQdWJsaXNoZXIgSUQgaXMgbm90IHZlcmlmaWVkIGluIElBVEkgUmVnaXN0cnkuJzpcXG4gICAgICAgIHJldHVybiAnWW91ciBJQVRJIFJlZ2lzdHJ5IGFjY291bnQgaXMgcGVuZGluZyBhcHByb3ZhbC4gQ29udGFjdCA8YSBocmVmPVxcXCJtYWlsdG86c3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnXFxcIj5zdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmc8L2E+IGlmIHlvdXIgYWNjb3VudCBoYXMgbm90IGJlZW4gYXBwcm92ZWQgd2l0aGluIHR3byB3b3JraW5nIGRheXMgb2YgcmVnaXN0ZXJpbmcuJztcXG5cXG4gICAgICBkZWZhdWx0OlxcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XFxuICAgIH1cXG4gIH0pO1xcbn07XFxuXFxuY29uc3QgcHJldmlvdXNTdGVwID0gKCkgPT4ge1xcbiAgZW1pdCgncHJldmlvdXNTdGVwJyk7XFxufTtcXG5cXG5jb25zdCBwcm9jZWVkU3RlcCA9ICgpID0+IHtcXG4gIGhhc0Vycm9yLnZhbHVlID0gZmFsc2U7XFxuICBpc1NhdmluZy52YWx1ZSA9IHRydWU7XFxuICBjb25zdCBmaW5hbERhdGEgPSBbXFxuICAgIHtcXG4gICAgICAuLi5vcmdhbml6YXRpb25EYXRhLnZhbHVlLFxcbiAgICAgIG5hcnJhdGl2ZTogcHJvcHMucHJldmlvdXNWYWx1ZXNbMF0/Lm5hcnJhdGl2ZSB8fCAnJyxcXG4gICAgfSxcXG4gIF07XFxuXFxuICBheGlvc1xcbiAgICAucHV0KCcvb3JnYW5pc2F0aW9uL3JlcG9ydGluZ19vcmcnLCB7XFxuICAgICAgcmVwb3J0aW5nX29yZzogZmluYWxEYXRhLFxcbiAgICB9KVxcbiAgICAudGhlbigoKSA9PiB7XFxuICAgICAgYXhpb3NcXG4gICAgICAgIC5nZXQoJ29yZ2FuaXNhdGlvbi9jaGVja3MtZm9yLW9yZ2FuaXNhdGlvbi1wdWJsaXNoJylcXG4gICAgICAgIC50aGVuKChyZXNwb25zZTogeyBkYXRhOiB7IHN1Y2Nlc3M6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZ1tdIH0gfSkgPT4ge1xcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICAgICAgYXhpb3NcXG4gICAgICAgICAgICAgIC5wb3N0KCcvb3JnYW5pc2F0aW9uL3B1Ymxpc2gnKVxcbiAgICAgICAgICAgICAgLnRoZW4oXFxuICAgICAgICAgICAgICAgIChyZXNwb25zZToge1xcbiAgICAgICAgICAgICAgICAgIGRhdGE6IHsgc3VjY2VzczogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nW10gfTtcXG4gICAgICAgICAgICAgICAgfSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICBpc1NhdmVkLnZhbHVlID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmZldGNoRGF0YSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdjb21wbGV0ZVN0ZXAnLCAzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgZW1pdCgncHJvY2VlZFN0ZXAnKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIDQwMDApO1xcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvci52YWx1ZSA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnZhbHVlID0gdHJhbnNmb3JtTWVzc2FnZXMoXFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEubWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICBpc1NhdmVkLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICApO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gdHJ1ZTtcXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnZhbHVlID0gdHJhbnNmb3JtTWVzc2FnZXMocmVzcG9uc2UuZGF0YS5tZXNzYWdlKTtcXG5cXG4gICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XFxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvcicsIGVycik7XFxuICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycikgPT4ge1xcbiAgICAgIGVtaXQoJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLCAzKTtcXG4gICAgICBpZiAoZXJyLnJlc3BvbnNlICYmIGVyci5yZXNwb25zZS5kYXRhICYmIGVyci5yZXNwb25zZS5kYXRhLmVycm9ycykge1xcbiAgICAgICAgY29uc3QgZXJyb3JzID0gZXJyLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xcblxcbiAgICAgICAgaWYgKGVycm9yc1sncmVwb3J0aW5nX29yZy4wLnJlZiddKSB7XFxuICAgICAgICAgIGhhc1JlZmVyZW5jZUVycm9yLnZhbHVlID0gdHJ1ZTtcXG4gICAgICAgICAgcmVmZXJlbmNlRXJyb3JNZXNzYWdlLnZhbHVlID0gZXJyb3JzWydyZXBvcnRpbmdfb3JnLjAucmVmJ11bMF07XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcbjwvc2NyaXB0PlxcblxcbjxzdHlsZSBzY29wZWQ+XFxuLnYtZW50ZXItYWN0aXZlLFxcbi52LWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG5cXG4udi1lbnRlci1mcm9tLFxcbi52LWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcblxcbi5zbGlkZS1lbnRlci1hY3RpdmUsXFxuLnNsaWRlLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG5cXG4uc2xpZGUtZW50ZXItZnJvbSxcXG4uc2xpZGUtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4udi1lbnRlci1hY3RpdmVbZGF0YS12LTQ3M2IyNjFlXSxcXG4udi1sZWF2ZS1hY3RpdmVbZGF0YS12LTQ3M2IyNjFlXSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZTtcXG59XFxuLnYtZW50ZXItZnJvbVtkYXRhLXYtNDczYjI2MWVdLFxcbi52LWxlYXZlLXRvW2RhdGEtdi00NzNiMjYxZV0ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFnV0E7O0VBRUUsNkJBQTZCO0FBQy9CO0FBRUE7O0VBRUUsVUFBVTtBQUNaXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxUb2FzdE1lc3NhZ2VcXG4gICAgdi1pZj1cXFwidG9hc3RWaXNpYmlsaXR5XFxcIlxcbiAgICBjbGFzcz1cXFwidG9hc3QgZml4ZWQgdG9wLTEwIHJpZ2h0LTEwXFxcIlxcbiAgICA6bWVzc2FnZT1cXFwidG9hc3RNZXNzYWdlXFxcIlxcbiAgICA6dHlwZT1cXFwidG9hc3RUeXBlXFxcIlxcbiAgLz5cXG5cXG4gIDxkaXZcXG4gICAgdi1pZj1cXFwib3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZSAhPT0gJ25ld19vcmcnXFxcIlxcbiAgICBjbGFzcz1cXFwiaC1mdWxsIHB0LVsxMzBweF1cXFwiXFxuICA+XFxuICAgIDxkaXYgdi1pZj1cXFwiIXByb3BzLnN0YXR1c1xcXCI+XFxuICAgICAgPGRpdiB2LWlmPVxcXCIhaXNTYXZpbmdcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICA8aDMgY2xhc3M9XFxcInBiLVsycHhdIHRleHQtWzIwcHhdIGZvbnQtYm9sZCBsZWFkaW5nLTkgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICBDb21wbGV0ZSBQdWJsaXNoaW5nIFNldHRpbmdzXFxuICAgICAgICAgIDwvaDM+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtc21cXFwiPlxcbiAgICAgICAgICAgIExpbmsgeW91ciBhY2NvdW50IHRvIHRoZSBJQVRJIFJlZ2lzdHJ5LiBHZW5lcmF0ZSBhbiBBUEkgdG9rZW4gaW5cXG4gICAgICAgICAgICB5b3VyIElBVEkgUmVnaXN0cnkgYWNjb3VudCBhbmQgYWRkIGl0IGhlcmUuXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8VHJhbnNpdGlvbiBtb2RlPVxcXCJvdXQtaW5cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtaWY9XFxcIiFpc1N1Y2Nlc3NcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMyByb3VuZGVkLWxnIGJnLW4tMTAgcHktWzIwcHhdIHB4LVsyN3B4XVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcIiFpc1ZlcmlmeWluZ1Rva2VuXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBtYXgtdy1bMzgwcHhdIGZsZXgtY29sIGdhcC0yXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwiYXBpLXRva2VuXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgQVBJIFRva2VuXFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicmVxdWlyZWQtaWNvblxcXCI+ICo8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJBUEkgVG9rZW5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSBBUEkgdG9rZW4gaXMgYSB1bmlxdWUga2V5IHRoYXQgaXMgZ2VuZXJhdGVkIGZyb20geW91ciBvcmdhbmlzYXRpb24ncyBJQVRJIFJlZ2lzdHJ5IFB1Ymxpc2hlciBBY2NvdW50LiBJdCBpcyByZXF1aXJlZCB0byBnaXZlIElBVEkgUHVibGlzaGVyIHBlcm1pc3Npb24gdG8gYWRkIGRhdGEgdG8gdGhlIElBVEkgUmVnaXN0cnkgb24geW91ciBiZWhhbGYuIEdlbmVyYXRlIGEgVG9rZW4gaW4gdGhlICdNeSBBY2NvdW50JyB0YWIgYnkgPGEgaHJlZj0naHR0cHM6Ly93d3cuaWF0aXJlZ2lzdHJ5Lm9yZy91c2VyL2xvZ2luJyB0YXJnZXQ9J19ibGFuaycgdGFyZ2V0PSdfYmxhbmsnPmxvZ2dpbmc8L2E+IGludG8gdG8gdGhlIElBVEkgUmVnaXN0cnkuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgICAgICBpZD1cXFwiYXBpLXRva2VuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiYXBpVG9rZW5cXFwiXFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm10LTIgaC0xMiB3LWZ1bGwgcm91bmRlZC1bNHB4XSBib3JkZXIgYm9yZGVyLW4tMzAgcHktWzEzcHhdIHB4LTQgdGV4dC1zbSBmb2N1cy13aXRoaW46b3V0bGluZS0wIGZvY3VzOm91dGxpbmUtMFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJUeXBlIHlvdXIgQVBJIHRva2VuIGhlcmVcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8U2hpbW1lckxvYWRpbmdcXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XFxcIiF0b2tlblN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCIhYWJzb2x1dGUgdG9wLVs1NiVdICFtLTAgIW1sLTIgIWgtOCAhdy1bOTYlXSAtdHJhbnNsYXRlLXktMS8yXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XFxcIiFwcm9wcy5pbml0aWFsUmVuZGVyICYmIHRva2VuU3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0xLzIgcmlnaHQtMyByb3VuZGVkLVs0cHhdIHB4LTIgdGV4dC14cyB0ZXh0LXdoaXRlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAgICAgICAgICdiZy1zYWxtb24tNTAnOiB0b2tlblN0YXR1cyA9PT0gJ0luY29ycmVjdCcsXFxuICAgICAgICAgICAgICAgICAgICAgICdiZy1zcHJpbmctNDAnOiB0b2tlblN0YXR1cyA9PT0gJ0NvcnJlY3QnLFxcbiAgICAgICAgICAgICAgICAgICAgICAnYmctb3JnYW5laXNoJzogdG9rZW5TdGF0dXMgPT09ICdQZW5kaW5nJyxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdG9rZW5TdGF0dXMgfX1cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIElmIFZlcmlmeWluZyBUb2tlbiAtLT5cXG4gICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteS00IGZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1bI0YxRjdGOV0gcHktWzM2cHhdXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPExpbmVzTG9hZGVyIC8+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XFxcInB0LTQgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXFxcIj5cXG4gICAgICAgICAgICAgICAgICBWZXJpZnlpbmcgQVBJIFRva2VuXFxuICAgICAgICAgICAgICAgIDwvaDM+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiIWlzVmVyaWZ5aW5nVG9rZW5cXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImJ1dHRvblxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcIm10LTMgcm91bmRlZC1bNHB4XSBiZy1ibHVlY29yYWwgcHktWzExcHhdIHB4LVszOC41cHhdIHRleHQtc20gZm9udC1bNzAwXSB0ZXh0LXdoaXRlXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2sub25jZT1cXFwidmVyaWZ5VG9rZW5cXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIFZFUklGWVxcbiAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPCEtLSBJZiBTdWNjZXNzIC0tPlxcbiAgICAgICAgICAgIDxkaXYgdi1lbHNlPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMyBmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBiZy1uLTEwIHB5LVs2MnB4XVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiZ3JlZW4tY2lyY2xlLXRpY2tcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsyOXB4XVxcXCIgLz5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgICAgID5BUEkgVG9rZW4gdmVyaWZpZWQ8L3NwYW5cXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvVHJhbnNpdGlvbj5cXG5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcHQtMyB0ZXh0LXhzIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwibWVzc2FnZS1pY29uXFxcIiAvPlxcbiAgICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgICAgWW91IGNhbiBhbHdheXMgcmV2aXNpdCBhbmQgYWRqdXN0IHRoZXNlIHNldHRpbmdzIGxhdGVyIGJ5XFxuICAgICAgICAgICAgICBuYXZpZ2F0aW5nIHRvIHRoZSAnUHVibGlzaGluZyBTZXR0aW5ncycgc2VjdGlvbiBhdCBhbnkgdGltZS5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSBib3R0b20tWzMwcHhdIHJpZ2h0LVs0MHB4XSBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC00XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC14cyBmb250LWJvbGQgdGV4dC1uLTQwXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIFNraXAgdG8gbmV4dCBzdGVwXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJ1dHRvbiBwcmltYXJ5LWJ0biB0ZXh0LXhzIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpiZy1uLTIwIGRpc2FibGVkOnNoYWRvdy1ub25lXFxcIlxcbiAgICAgICAgICAgICAgOmRpc2FibGVkPVxcXCJpc1NhdmluZyB8fCAhYXBpVG9rZW5cXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcInByb2NlZWRTdGVwXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIFNhdmUgYW5kIE5FWFRcXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8IS0tIElzIFNhdmluZyAtLT5cXG4gICAgICA8ZGl2IHYtZWxzZT5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInJlbGF0aXZlIHJvdW5kZWQtbGcgYmctbi0xMCBweS1bMTcwcHhdIHB4LVszNDVweF1cXFwiPlxcbiAgICAgICAgICA8TGluZXNMb2FkZXIgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPCEtLSBJZiBTdGF0dXMgaXMgZmFsc2UgLS0+XFxuICAgIDxkaXYgdi1lbHNlIGNsYXNzPVxcXCJoLWZ1bGxcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaC1mdWxsIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLW4tMTAgcHktWzYwcHhdIHB4LVs3M3B4XVxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgdGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bMzRweF1cXFwiIC8+XFxuICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgIDxoMiBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSBweS1bNS40cHhdIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICBZb3VyIGFjY291bnQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGxpbmtlZCB0byB0aGUgSUFUSSBSZWdpc3RyeS5cXG4gICAgICAgICAgICAgIDwvaDI+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSB0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgIFRoZSBBUEkgdG9rZW4gaGFzIGJlZW4gZ2VuZXJhdGVkIGFuZCBhZGRlZCBzdWNjZXNzZnVsbHkuIElmIHlvdVxcbiAgICAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgYW55IGNoYW5nZXMgb3IgdXBkYXRlcywgcGxlYXNlIHZpc2l0IHlvdXJcXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cXFwiL3NldHRpbmdcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5hY2NvdW50IHNldHRpbmdzPC9hPi5cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLVszMHB4XSBzZWxmLWVuZFxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwiYnV0dG9uIHByaW1hcnktYnRuIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgTkVYVFxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPCEtLSBJZiBSZWdpc3RyYXRpb24gVHlwZSBOb3QgTmV3IC0tPlxcbiAgPGRpdiB2LWVsc2UgY2xhc3M9XFxcImgtZnVsbCBwdC1bMTMwcHhdXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLW4tMTAgcHktWzYwcHhdIHB4LVs3M3B4XVxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIHRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiZ3JlZW4tY2lyY2xlLXRpY2tcXFwiIGNsYXNzPVxcXCJ0ZXh0LVszNHB4XVxcXCIgLz5cXG4gICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICA8aDIgY2xhc3M9XFxcInB5LVs1LjRweF0gdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBQdWJsaXNoaW5nIHNldHRpbmdzIGNvbXBsZXRlZC5cXG4gICAgICAgICAgICA8L2gyPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYXgtdy1bNTg3cHhdIHRleHQtc20gdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgIFlvdXIgSUFUSSBSZWdpc3RyeSBhY2NvdW50IGhhcyBiZWVuIGxpbmtlZCBhbmQgbmVlZHMgdG8gYmVcXG4gICAgICAgICAgICAgIGFwcHJvdmVkIGJlZm9yZSB5b3UgY2FuIHB1Ymxpc2ggZGF0YS4gU29tZW9uZSBmcm9tIHRoZSBJQVRJIHRlYW1cXG4gICAgICAgICAgICAgIHdpbGwgcmV2aWV3IGl0IGFuZCBiZSBpbiBjb250YWN0IHdpdGhpbiB0d28gd29ya2luZyBkYXlzLiBZb3UgY2FuXFxuICAgICAgICAgICAgICBzdGFydCBlbnRlcmluZyBkYXRhIGluIElBVEkgUHVibGlzaGVyIHN0cmFpZ2h0IGF3YXkuXFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLVszMHB4XSBzZWxmLWVuZFxcXCI+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14c1xcXCIgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIj5cXG4gICAgICAgICAgTkVYVFxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyByZWYsIGRlZmluZVByb3BzLCB3YXRjaEVmZmVjdCwgZGVmaW5lRW1pdHMsIHdhdGNoIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgTGluZXNMb2FkZXIgZnJvbSAnQ29tcG9uZW50cy9MaW5lc0xvYWRlci52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFNoaW1tZXJMb2FkaW5nIGZyb20gJ0NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlJztcXG5pbXBvcnQgVG9hc3RNZXNzYWdlIGZyb20gJ0NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZSc7XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBwdWJsaXNoZXJJZDoge1xcbiAgICB0eXBlOiBTdHJpbmcsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHB1Ymxpc2hlclNldHRpbmc6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBvcmdhbml6YXRpb25JZDoge1xcbiAgICB0eXBlOiBOdW1iZXIsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGZldGNoRGF0YToge1xcbiAgICB0eXBlOiBGdW5jdGlvbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaW5pdGlhbFJlbmRlcjoge1xcbiAgICB0eXBlOiBCb29sZWFuLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICByZWdpc3RyYXRpb25UeXBlOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IEJvb2xlYW4sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1xcbiAgJ3Byb2NlZWRTdGVwJyxcXG4gICdjaGFuZ2VSZW5kZXInLFxcbiAgJ2NvbXBsZXRlU3RlcCcsXFxuICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXFxuXSk7XFxuXFxuY29uc3QgYXBpVG9rZW4gPSByZWYoJycpO1xcbmNvbnN0IGlzVmVyaWZ5aW5nVG9rZW4gPSByZWYoZmFsc2UpO1xcbmNvbnN0IGlzU2F2aW5nID0gcmVmKGZhbHNlKTtcXG5jb25zdCBpc1N1Y2Nlc3MgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IHRva2VuU3RhdHVzID0gcmVmKHByb3BzLnB1Ymxpc2hlclNldHRpbmc/LnRva2VuX3N0YXR1cyB8fCAnJyk7XFxuY29uc3QgdmVyaWZ5VG9rZW5TdGF0dXMgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IG9yZ2FuaXphdGlvblJlZ2lzdHJhdGlvblR5cGUgPSByZWYoJycpO1xcblxcbmNvbnN0IHRvYXN0VmlzaWJpbGl0eSA9IHJlZihmYWxzZSk7XFxuY29uc3QgdG9hc3RNZXNzYWdlID0gcmVmKCcnKTtcXG5jb25zdCB0b2FzdFR5cGUgPSByZWYoZmFsc2UpO1xcblxcbndhdGNoKFxcbiAgKCkgPT4gcHJvcHMucHVibGlzaGVyU2V0dGluZz8udG9rZW5fc3RhdHVzLFxcbiAgKG5ld1N0YXR1cykgPT4ge1xcbiAgICB0b2tlblN0YXR1cy52YWx1ZSA9IG5ld1N0YXR1cztcXG4gIH1cXG4pO1xcblxcbndhdGNoRWZmZWN0KCgpID0+IHtcXG4gIGFwaVRva2VuLnZhbHVlID0gcHJvcHM/LnB1Ymxpc2hlclNldHRpbmc/LmFwaV90b2tlbjtcXG59KTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlLnZhbHVlID0gcHJvcHMucmVnaXN0cmF0aW9uVHlwZTtcXG59KTtcXG5cXG5jb25zdCB2ZXJpZnlUb2tlbiA9ICgpID0+IHtcXG4gIGlzVmVyaWZ5aW5nVG9rZW4udmFsdWUgPSB0cnVlO1xcbiAgdmVyaWZ5VG9rZW5TdGF0dXMudmFsdWUgPSBmYWxzZTtcXG4gIGVtaXQoJ2NoYW5nZVJlbmRlcicpO1xcbiAgYXhpb3NcXG4gICAgLnBvc3QoJy9zZXR0aW5nL3ZlcmlmeScsIHtcXG4gICAgICBhcGlfdG9rZW46IGFwaVRva2VuLnZhbHVlLFxcbiAgICAgIHB1Ymxpc2hlcl9pZDogcHJvcHMucHVibGlzaGVySWQsXFxuICAgIH0pXFxuICAgIC50aGVuKChyZXNwb25zZTogeyBkYXRhOiB7IGRhdGE6IHsgdG9rZW5fc3RhdHVzOiBzdHJpbmcgfSB9IH0pID0+IHtcXG4gICAgICB2ZXJpZnlUb2tlblN0YXR1cy52YWx1ZSA9IHRydWU7XFxuICAgICAgdG9rZW5TdGF0dXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzO1xcbiAgICAgIGlmIChcXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdDb3JyZWN0JyB8fFxcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhLnRva2VuX3N0YXR1cyA9PT0gJ1BlbmRpbmcnXFxuICAgICAgKSB7XFxuICAgICAgICBpc1N1Y2Nlc3MudmFsdWUgPSB0cnVlO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmNhdGNoKChlcnIpID0+IHtcXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3InLCBlcnIpO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNWZXJpZnlpbmdUb2tlbi52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgaXNTdWNjZXNzLnZhbHVlID0gZmFsc2U7XFxuICAgICAgfSwgMzAwMCk7XFxuICAgIH0pO1xcbn07XFxuXFxuY29uc3QgcHJvY2VlZFN0ZXAgPSBhc3luYyAoKSA9PiB7XFxuICBpc1NhdmluZy52YWx1ZSA9IHRydWU7XFxuICBhd2FpdCBheGlvc1xcbiAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvcHVibGlzaGVyJywge1xcbiAgICAgIGFwaV90b2tlbjogYXBpVG9rZW4udmFsdWUsXFxuICAgICAgcHVibGlzaGVyX2lkOiBwcm9wcy5wdWJsaXNoZXJJZCxcXG4gICAgICBvcmdhbml6YXRpb25faWQ6IHByb3BzLm9yZ2FuaXphdGlvbklkLFxcbiAgICAgIHB1Ymxpc2hlcl92ZXJpZmljYXRpb246IHByb3BzLnB1Ymxpc2hlclNldHRpbmc/LnB1Ymxpc2hlcl92ZXJpZmljYXRpb24sXFxuICAgICAgdG9rZW5fdmVyaWZpY2F0aW9uOiBwcm9wcy5wdWJsaXNoZXJTZXR0aW5nPy50b2tlbl92ZXJpZmljYXRpb24sXFxuICAgIH0pXFxuICAgIC50aGVuKFxcbiAgICAgIChyZXNwb25zZToge1xcbiAgICAgICAgZGF0YToge1xcbiAgICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xcbiAgICAgICAgICBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXTtcXG4gICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgIHRva2VuX3N0YXR1czogc3RyaW5nO1xcbiAgICAgICAgICB9O1xcbiAgICAgICAgfTtcXG4gICAgICB9KSA9PiB7XFxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICAgIGlmIChcXG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnQ29ycmVjdCcgfHxcXG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnUGVuZGluZydcXG4gICAgICAgICAgKSB7XFxuICAgICAgICAgICAgZW1pdCgnY29tcGxldGVTdGVwJywgMSk7XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZW1pdCgncmVtb3ZlQ29tcGxldGVkU3RlcCcsIDEpO1xcbiAgICAgICAgICB9XFxuICAgICAgICAgIHByb3BzLmZldGNoRGF0YSgpO1xcbiAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpLCAzMDAwKTtcXG4gICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhLm1lc3NhZ2UpXFxuICAgICAgICAgICAgPyByZXNwb25zZS5kYXRhLm1lc3NhZ2Uuam9pbignPGJyPicpXFxuICAgICAgICAgICAgOiByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XFxuXFxuICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICApXFxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmxvZyhlcnIpKVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGUgc2NvcGVkPlxcbi52LWVudGVyLWFjdGl2ZSxcXG4udi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7XFxufVxcblxcbi52LWVudGVyLWZyb20sXFxuLnYtbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG5Aa2V5ZnJhbWVzIHNwaW5uZXItNWQ4NGExZDgge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnNwaW5bZGF0YS12LTVkODRhMWQ4XTo6YmVmb3JlIHtcXG4gIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci01ZDg0YTFkODtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW5bZGF0YS12LTVkODRhMWQ4XSB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQXFRQTtBQUNFO0lBQ0Usa0RBQWtEO0FBQ3BEO0FBQ0E7SUFDRSxvREFBb0Q7QUFDdEQ7QUFDRjtBQUVBO0VBQ0UsZ0RBQXVDO0VBQ3ZDLDZCQUE2QjtFQUM3Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixRQUFRO0VBQ1IsU0FBUztFQUNULHFDQUFxQztFQUNyQyxXQUFXO0VBQ1gsc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0FBQ2RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlIG1iLTEwXFxcIj5cXG4gICAgPHRhYmxlPlxcbiAgICAgIDx0aGVhZD5cXG4gICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgIDx0aCBpZD1cXFwic25cXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuPlMuTjwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4+QWN0aXZpdHkgVGl0bGU8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaGluZy1wcm9ncmVzc1xcXCIgc2NvcGU9XFxcImNvbFxcXCIgY2xhc3M9XFxcInByb2dyZXNzLWJhci1oZWFkZXJcXFwiPlxcbiAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWVuZCB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6aHJlZj1cXFwic29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIiA6Y2xhc3M9XFxcInNvcnRpbmdEaXJlY3Rpb24oKVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIDppY29uPVxcXCJgJHtzb3J0aW5nRGlyZWN0aW9uKCl9LWFycm93YFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJcXFwiPlB1Ymxpc2hpbmcgUHJvZ3Jlc3M8L3NwYW4+XFxuICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcImRhdGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmhyZWY9XFxcInNvcnRCeURhdGVVcmwoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiIDpjbGFzcz1cXFwic29ydGluZ0RpcmVjdGlvbigpXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgOmljb249XFxcImAke3NvcnRpbmdEaXJlY3Rpb24oKX0tYXJyb3dgXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4+VXBkYXRlZCBPbjwvc3Bhbj5cXG4gICAgICAgICAgICA8L2E+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwic3RhdHVzXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaGlkZGVuXFxcIj5TdGF0dXM8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaFxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImhpZGRlblxcXCI+UHVibGlzaDwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJjYlxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwidG9nZ2xlU2VsZWN0QWxsKGRhdGEuZGF0YSwgc2VsZWN0QWxsVmFsdWUpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGhlYWQ+XFxuICAgICAgPHRib2R5IHYtaWY9XFxcImRhdGEudG90YWwgPiAwXFxcIj5cXG4gICAgICAgIDx0clxcbiAgICAgICAgICB2LWZvcj1cXFwiKGRhdHVtLCBpbmRleCkgaW4gZGF0YS5kYXRhXFxcIlxcbiAgICAgICAgICA6a2V5PVxcXCJkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgJ2FscmVhZHktcHVibGlzaGVkJzpcXG4gICAgICAgICAgICAgIGRhdHVtWydsaW5rZWRfdG9faWF0aSddICYmIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgfVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJyZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgPFByZXZpb3VzbHlQdWJsaXNoZWRcXG4gICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtWydsaW5rZWRfdG9faWF0aSddICYmIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0J1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaW5saW5lLWJsb2NrIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAge3sgKGN1cnJlbnRQYWdlIC0gMSkgKiAxMCArIE51bWJlcihpbmRleCkgKyAxIH19XFxuICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLXN0YXJ0IHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlIHctZnVsbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgICAgOmhyZWY9XFxcIicvYWN0aXZpdHkvJyArIGRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyB3LWZ1bGwgIW1heC13LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCdcXG4gICAgICAgICAgICAgICAgICB9fTwvYVxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInctNTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyXFxcIj57e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gJiZcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICE9PSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJ1xcbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLXBhcmVudFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItd3JhcHBlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1jb250YWluZXIgYmctc3ByaW5nLTEwXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLWZpbGwgYmctc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOnN0eWxlPVxcXCJ7IHdpZHRoOiBkYXR1bVsnY29tcGxldGVfcGVyY2VudGFnZSddICsgJyUnIH1cXFwiXFxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLW51bWJlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgPnt7IGRhdHVtWydjb21wbGV0ZV9wZXJjZW50YWdlJ10gfX0lPC9zcGFuXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShkYXR1bS51cGRhdGVkX2F0KSB9fVxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICAgICAndGV4dC1uLTQwJzogZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnLFxcbiAgICAgICAgICAgICAgICAndGV4dC1zcHJpbmctNTAnOiBkYXR1bVsnc3RhdHVzJ10gPT09ICdwdWJsaXNoZWQnLFxcbiAgICAgICAgICAgICAgfVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibXItMSB0ZXh0LWJhc2VcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyA/ICdkb2N1bWVudC13cml0ZScgOiAndGljaydcXG4gICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcXFwiPnt7IGRhdHVtWydzdGF0dXMnXSB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxVblB1Ymxpc2hcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW0ubGlua2VkX3RvX2lhdGlcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eS1pZD1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAvPlxcblxcbiAgICAgICAgICAgICAgPFB1Ymxpc2hcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW1bJ3N0YXR1cyddICE9PSAncHVibGlzaGVkJ1xcXCJcXG4gICAgICAgICAgICAgICAgOmxpbmtlZC10by1pYXRpPVxcXCJkYXR1bS5saW5rZWRfdG9faWF0aVxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwiZGF0dW0uc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICA6Y29yZS1jb21wbGV0ZWQ9XFxcImRhdHVtLmNvcmVDb21wbGV0ZWRcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eS1pZD1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAgIDpwdWJsaXNoPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgICAgOmRlcHJlY2F0aW9uLXN0YXR1cy1tYXA9XFxcImRhdHVtWydkZXByZWNhdGlvbl9zdGF0dXNfbWFwJ11cXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGhcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInNyLW9ubHlcXFwiIGZvcj1cXFwiXFxcIj5cXG4gICAgICAgICAgICAgIFNlbGVjdCBcXFwie3sgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gfX1cXFwiXFxuICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXNcXFwiXFxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiZGF0dW0uaWRcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjaGVja21hcmtcXFwiIC8+XFxuICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgPC90Ym9keT5cXG4gICAgICA8dGJvZHkgdi1lbHNlPlxcbiAgICAgICAgPHRkIHYtaWY9XFxcImxvYWRlclxcXCIgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwic3BpblxcXCI+PC9kaXY+XFxuICAgICAgICA8L3RkPlxcbiAgICAgICAgPHRkIHYtZWxzZSBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPkFjdGl2aXRpZXMgbm90IGZvdW5kPC90ZD5cXG4gICAgICA8L3Rib2R5PlxcbiAgICA8L3RhYmxlPlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcyB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xcbmltcG9ydCB7IHVzZVRvZ2dsZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuXFxuLy8gVnVleCBTdG9yZVxcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnU3RvcmUvYWN0aXZpdGllcy9pbmRleCc7XFxuXFxuaW1wb3J0IFByZXZpb3VzbHlQdWJsaXNoZWQgZnJvbSAnQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWUnO1xcbmltcG9ydCBQdWJsaXNoIGZyb20gJ0NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZSc7XFxuaW1wb3J0IFVuUHVibGlzaCBmcm9tICdDb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZSc7XFxuLy8gaW1wb3J0IFNoaW1tZXIgZnJvbSBcXFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcXFwiO1xcblxcbmNvbnN0IFtzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlXSA9IHVzZVRvZ2dsZSgpO1xcblxcbmRlZmluZVByb3BzKHtcXG4gIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxcbiAgY3VycmVudFBhZ2U6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogMSB9LFxcbn0pO1xcblxcbmNvbnN0IHN0b3JlID0gdXNlU3RvcmUoKTtcXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcXG4gIHJldHVybiBtb21lbnQoZGF0ZSkuZnJvbU5vdygpO1xcbn1cXG5cXG5mdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoXFxuICBhY3Rpdml0aWVzOiB7IFt4OiBzdHJpbmddOiB7IGlkOiBudW1iZXIgfSB9LFxcbiAgc2VsZWN0QWxsVmFsdWU6IGJvb2xlYW5cXG4pIHtcXG4gIGlmICghc2VsZWN0QWxsVmFsdWUpIHtcXG4gICAgbGV0IGlkcyA9IFtdIGFzIG51bWJlcltdO1xcbiAgICBmb3IgKGNvbnN0IGRhdHVtIGluIGFjdGl2aXRpZXMpIHtcXG4gICAgICBpZHMucHVzaChhY3Rpdml0aWVzW2RhdHVtXS5pZCk7XFxuICAgIH1cXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XFxuICB9IGVsc2Uge1xcbiAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xcbiAgfVxcbiAgc2VsZWN0QWxsVG9nZ2xlKCk7XFxufVxcblxcbi8vU29ydGluZyBieSB1cGRhdGVfYXRcXG5sZXQgZGlyZWN0aW9uID0gJ2FzYyc7XFxuXFxuY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MgPSAoKSA9PiB7XFxuICBsZXQgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgbGV0IHF1ZXJ5ID0gcGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgbGV0IGRpcmVjdGlvbiA9IHBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gIHBhcmFtcy5zZXQoJ3EnLCBxdWVyeSk7XFxuICBwYXJhbXMuc2V0KCdvcmRlckJ5JywgJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnKTtcXG4gIHBhcmFtcy5zZXQoJ2RpcmVjdGlvbicsIGRpcmVjdGlvbik7XFxuXFxuICByZXR1cm4gYD8ke3BhcmFtcy50b1N0cmluZygpfWA7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlEYXRlVXJsID0gKCkgPT4ge1xcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG4gIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gIGxldCBxdWVyeSA9IHBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gIGxldCBkaXJlY3Rpb24gPSBwYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuXFxuICBwYXJhbXMuc2V0KCdxJywgcXVlcnkpO1xcbiAgcGFyYW1zLnNldCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XFxuICBwYXJhbXMuc2V0KCdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xcblxcbiAgcmV0dXJuIGA/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xcbn07XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG5Aa2V5ZnJhbWVzIHNwaW5uZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbjo6YmVmb3JlIHtcXG4gIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW4ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZmY7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uY3JpdGljYWwtY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0sIFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdLCBcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgaGVpZ2h0OiAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG59XFxuLndhcm5pbmctY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi00MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tcm9zZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLndhcm5pbmctY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jYW1lbC00MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItaGVscFtkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIHBhZGRpbmctbGVmdDogMzBweDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lciBwW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTZYQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBS0U7OztFQUFBLFdBQXNEO0VBQXRELGdCQUFzRDtFQUF0RCx3QkFBc0Q7RUFBdEQsd0RBQXNEO0VBQXRELDBCQUFBO0FBQXNEO0FBR3hEO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQW9CO0VBQXBCLCtEQUFvQjtFQUNwQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBRVYsa0JBQWM7RUFBZCx5REFBYztBQUNoQjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQWtCO0VBQWxCLDZEQUFrQjtFQUNsQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxZQUFZO0FBQ2RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPHRkIGNsYXNzPVxcXCJ0aXRsZVxcXCI+XFxuICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImVsbGlwc2lzICFpbmxpbmUtYmxvY2sgdy1bNDAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1ub3JtYWxcXFwiXFxuICAgICAgICA+e3tcXG4gICAgICAgICAgYWN0aXZpdHlbJ2RhdGEnXVsndGl0bGUnXVswXVsnbmFycmF0aXZlJ11cXG4gICAgICAgICAgICA/IGFjdGl2aXR5WydkYXRhJ11bJ3RpdGxlJ11bMF1bJ25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgOiAnTWlzc2luZydcXG4gICAgICAgIH19PC9zcGFuXFxuICAgICAgPlxcblxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmxlbmd0aCA+IDBcXFwiXFxuICAgICAgICBjbGFzcz1cXFwibWItNCBtbC00IGlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwidG9nZ2xlRXJyb3JcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICA8c3Bhbj4gU2hvdyB7eyBjb3VudEVycm9ycygpIH19IElzc3Vlczwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwibWwtMSB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogYWN0aXZlLCAnJzogIWFjdGl2ZSB9XFxcIlxcbiAgICAgICAgLz4gPC9zcGFuXFxuICAgID48L3NwYW4+XFxuXFxuICAgIDxkaXZcXG4gICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgY2xhc3M9XFxcInVwbG9hZC1lcnJvci1jb250ZW50IGgtW2F1dG9dICFtYXgtaC1bYXV0b10gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgIDpjbGFzcz1cXFwieyBjbG9zZWQ6ICFhY3RpdmUgfVxcXCJcXG4gICAgPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInB5LTRcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJjcml0aWNhbEFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgICAgPHNwYW4+IHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19IENyaXRpY2FsIGVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93Q3JpdGljYWwsICcnOiAhc2hvd0NyaXRpY2FsIH1cXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWhlbHBcXFwiPlxcbiAgICAgICAgICAgIChUaGUgYWN0aXZpdHkgY29udGFpbnMgY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzIGNhbm5vdCBiZSB1cGxvYWRlZFxcbiAgICAgICAgICAgIHRvIHRoZSBzeXN0ZW0uKVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwicC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2Vycm9yJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJlcnJvckFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIGJnLXJvc2UgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgICA8c3Bhbj57eyBlcnJvckxlbmd0aCgnZXJyb3InKSB9fSBFcnJvcnM8L3NwYW4+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0Vycm9yLCAnJzogIXNob3dFcnJvciB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgICAoVGhlIGFjdGl2aXR5IHdpdGggdGhlIGVycm9ycyB3aWxsIGJlIHVwbG9hZGVkIHRvIG91ciBzeXN0ZW0sIGJ1dFxcbiAgICAgICAgICAgIHRoZSBmaWVsZCBjb250YWluaW5nIHRoZSBlcnJvciB3aWxsIGJlIHJlbW92ZWQuIFlvdSB3aWxsIG5lZWQgdG9cXG4gICAgICAgICAgICByZWZpbGwgdGhlc2UgZmllbGRzIHdpdGggY29ycmVjdCBkYXRhIG9uY2UgdGhlIGFjdGl2aXR5IGlzIHVwbG9hZGVkXFxuICAgICAgICAgICAgdG8gb3VyIHN5c3RlbS4pXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWRyb3Bkb3duXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ2Vycm9yJ11cXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXByaW1hcnktYmxhY2sgYmctcm9zZSBwLTRcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignd2FybmluZycpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIndhcm5pbmctY29udGFpbmVyIG15LTIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLW5vbmUgYmctZWdnc2hlbGxcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJ3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYmctZWdnc2hlbGwgcC0zIHBiLTAuNVxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhbGVydFxcXCIgY2xhc3M9XFxcInRleHQtY2FtZWwtNDBcXFwiIC8+PHNwYW4+XFxuICAgICAgICAgICAgICAgIHt7IGVycm9yTGVuZ3RoKCd3YXJuaW5nJykgfX0gV2FybmluZ3M8L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93V2FybmluZywgJyc6ICFzaG93V2FybmluZyB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwIGJnLWVnZ3NoZWxsXFxcIj5cXG4gICAgICAgICAgICAoVGhlIGZpZWxkIHdpdGggd2FybmluZ3Mgd2lsbCBiZSB1cGxvYWRlZCB0byBvdXIgc3lzdGVtLiBUaGVzZVxcbiAgICAgICAgICAgIGZpZWxkcyBjb250YWluIGRhdGEgdGhhdCBhcmUgYWdhaW5zdCB0aGUgcnVsZXMgb2YgdGhlIElBVEkgVmFsaWRhdG9yXFxuICAgICAgICAgICAgYW5kIHdpbGwgY2F1c2UgdmFsaWRhdGlvbiBlcnJvcnMgd2hpbGUgcHVibGlzaGluZy4pXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJiZy1lZ2dzaGVsbCBwLTRcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPCEtLSA8ZGl2IHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddXFxcIiA6a2V5PVxcXCJpXFxcIj5cXG4gICAgICAgIDx1bD5cXG4gICAgICAgICAgPGxpIHYtZm9yPVxcXCIoZXJyLCBrZXksIGopIGluIGVsZV9lcnJcXFwiIDprZXk9XFxcImpcXFwiPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICB7eyBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3QudmFsdWVzKGVycilcXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMlxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICB7eyBpdGVtIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgIDwvZGl2PlxcbiAgPC90ZD5cXG5cXG4gIDx0ZD5cXG4gICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj57e1xcbiAgICAgICFhY3Rpdml0eVsnZXhpc3RlbmNlJ10gPyAnTmV3JyA6ICdFeGlzdGluZydcXG4gICAgfX08L3NwYW4+XFxuICA8L3RkPlxcblxcbiAgPHRkIGNsYXNzPVxcXCJjaGVjay1jb2x1bW5cXFwiIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiPlxcbiAgICA8bGFiZWwgY2xhc3M9XFxcInNyLW9ubHlcXFwiIGZvcj1cXFwiXFxcIj4gU2VsZWN0IDwvbGFiZWw+XFxuICAgIDxsYWJlbFxcbiAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTFcXFwiXFxuICAgICAgY2xhc3M9XFxcImNoZWNrYm94XFxcIlxcbiAgICA+XFxuICAgICAgPGlucHV0XFxuICAgICAgICB2LW1vZGVsPVxcXCJhY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICA6dmFsdWU9XFxcImluZGV4XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJzZWxlY3RFbGVtZW50KGluZGV4KVxcXCJcXG4gICAgICAvPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJjaGVja21hcmtcXFwiIC8+XFxuICAgIDwvbGFiZWw+XFxuICAgIDxsYWJlbCB2LWVsc2UgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICA8L2xhYmVsPlxcbiAgPC90ZD5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCBkZWZpbmVFbWl0cywgcmVmLCB3YXRjaCwgcmVhY3RpdmUgfSBmcm9tICd2dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgYWN0aXZpdHk6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBpbmRleDoge1xcbiAgICB0eXBlOiBTdHJpbmcsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXFxuICBzZWxlY3RlZEFjdGl2aXRpZXM6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnc2VsZWN0RWxlbWVudCddKTtcXG5cXG5jb25zdCBhY3RpdmUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dDcml0aWNhbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0Vycm9yID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93V2FybmluZyA9IHJlZihmYWxzZSk7XFxubGV0IGFjdGl2aXRpZXMgPSByZWFjdGl2ZShbXSk7XFxuY29uc3QgY3JpdGljYWxUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVycm9yVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5jb25zdCB3YXJuaW5nVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5cXG5mdW5jdGlvbiB0b2dnbGVFcnJvcigpIHtcXG4gIGFjdGl2ZS52YWx1ZSA9ICFhY3RpdmUudmFsdWU7XFxufVxcblxcbmNvbnN0IHNlbGVjdEVsZW1lbnQgPSAoaW5kZXgpID0+IHtcXG4gIGVtaXQoJ3NlbGVjdEVsZW1lbnQnLCBpbmRleCk7XFxufTtcXG5cXG5jb25zdCBjb3VudEVycm9ycyA9ICgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddKSB7XFxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdKSB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5cXG5jb25zdCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSA9IChlOiBFdmVudCkgPT4ge1xcbiAgc2hvd0NyaXRpY2FsLnZhbHVlID0gIXNob3dDcml0aWNhbC52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xcbiAgY29uc3QgZWxIZWlnaHQgPSB0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuXFxuICBpZiAoY3JpdGljYWxUb2dnbGUudmFsdWUpIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICAgIH0sIDEwMCk7XFxuICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6IGF1dG87YDtcXG4gICAgICB9LCA2MDApO1xcblxcbiAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gICAgfVxcbiAgfVxcbn07XFxuY29uc3QgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcblxcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgNjAwKTtcXG5cXG4gICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICAgIH1cXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGN1cnJlbnRFcnJvcikgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIC8vIGlmIChPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eSkuaW5kZXhPZignZXJyb3JzJykgIT09IC0xKSB7XFxuICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKS5tYXAoKGl0ZW0pID0+IHtcXG4gICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSBhcyBvYmplY3QpLmxlbmd0aDtcXG4gIH0pO1xcbiAgLy8gfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuY29uc3Qgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IChlOiBFdmVudCkgPT4ge1xcbiAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xcbiAgY29uc3QgZWxIZWlnaHQgPSB0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy53YXJuaW5nLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6IGF1dG87YDtcXG4gICAgICB9LCAxMDApO1xcblxcbiAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgICB9XFxuICB9XFxufTtcXG53YXRjaChcXG4gICgpID0+IHByb3BzLnNlbGVjdGVkQWN0aXZpdGllcyxcXG4gICgpID0+IHtcXG4gICAgbGV0IHNlbGVjdGVkRGF0YSA9IEpTT04ucGFyc2UocHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcXG4gICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGgpIHtcXG4gICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHNlbGVjdGVkRGF0YSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgYWN0aXZpdGllcy5sZW5ndGggPSAwO1xcbiAgICB9XFxuICB9XFxuKTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi5jcml0aWNhbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5jcml0aWNhbC1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyLFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5lcnJvci1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNyaW1zb24tNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgQGFwcGx5IGJnLXJvc2U7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY2FtZWwtNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWhlbHAge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHAge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi54bHMtZXJyb3JbZGF0YS12LTVmNTAwOGI0XSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI2ZmZjFmMCA2MHB4LCAjZmZmZmZmIDAlKTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQXlmQTtFQUNFLDJEQUEyRDtBQUM3RFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC0xMCBweS04XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8aDYgY2xhc3M9XFxcInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgQWRkL1VwZGF0ZSBBbGwgPHNwYW4gY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPnt7IHN0YXR1cy50ZW1wbGF0ZSB9fTwvc3Bhbj5cXG4gICAgICA8L2g2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGp1c3RpZnktZW5kIGdhcC0zXFxcIj5cXG4gICAgICAgIDxUb2FzdFxcbiAgICAgICAgICB2LWlmPVxcXCJ0b2FzdFZpc2liaWxpdHlcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJ0b2FzdCAtYm90dG9tLTI0XFxcIlxcbiAgICAgICAgICA6bWVzc2FnZT1cXFwidG9hc3RNZXNzYWdlXFxcIlxcbiAgICAgICAgICA6dHlwZT1cXFwidG9hc3RUeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcInJvdW5kZWQgYmctbi0wIHB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWwgc2hhZG93LW1kXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImNhbmNlbEltcG9ydFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4+PHN2Zy12dWUgY2xhc3M9XFxcInB0LTEuNSB0ZXh0LTJ4bFxcXCIgaWNvbj1cXFwiY3Jvc3NcXFwiIC8+PC9zcGFuPlxcbiAgICAgICAgICA8c3Bhbj5jYW5jZWwgdGhpcyBpbXBvcnQ8L3NwYW4+XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgOmNsYXNzPVxcXCJzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID09PSAwICYmICcgY3Vyc29yLW5vdC1hbGxvd2VkJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInJvdW5kZWQgYmctYmx1ZWNvcmFsIHB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTBcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiYWRkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcIm1yLTIgdGV4dC1zbVxcXCIgaWNvbj1cXFwidXAtYXJyb3ctb3V0bGluZVxcXCIgLz5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1yLTJcXFwiPmFkZCA8L3NwYW4+ICh7eyBzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoIH19IC9cXG4gICAgICAgICAge3sgYWN0aXZpdGllc0xlbmd0aCA/PyAwIH19KVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gc3BhY2UteC00XFxcIj5cXG4gICAgICA8cCBjbGFzcz1cXFwibXQtNCB0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICBTZWxlY3QgZnJvbSB0aGUgbGlzdCBiZWxvdyB0byBhZGQge3sgc3RhdHVzLnRlbXBsYXRlIH19IHRvIHRoZVxcbiAgICAgICAgcHVibGlzaGVyLiBNYWtlIHlvdXIgc2VsZWN0aW9uIGFuZCBmb2xsb3cgdGhlIG9uLXNjcmVlbiBwcm9tcHRzIHRvXFxuICAgICAgICBzdWNjZXNzZnVsbHkgYWRkL3VwZGF0ZSB5b3VyIHNlbGVjdGVkIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fVxcbiAgICAgICAgPGI+XFxuICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgcmUtdXBsb2FkIGFueSB1bnNlbGVjdGVkXFxuICAgICAgICAgIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSwgYW5kIGlmIHRoZSBpbXBvcnQgaXMgY2FuY2VsZWQsIHlvdSB3aWxsIG5lZWQgdG9cXG4gICAgICAgICAgdXBsb2FkIHRoZW0gYWdhaW4uPC9iXFxuICAgICAgICA+XFxuICAgICAgPC9wPlxcbiAgICAgIDwhLS0gPGRpdiB2LWlmPVxcXCJnbG9iYWxFcnJvclxcXCIgY2xhc3M9XFxcInJlbGF0aXZlIG10LTRcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCIhc2hvd0dMb2JhbEVycm9yXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCB3LVsyNTBweF0ganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtbC1sZyBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgYmctY3JpbXNvbi0xMCBwLTRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXItMSAtbXQtMS41IHRleHQtMnhsIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcIndhcm5pbmctZmlsbFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+XFxuICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9ycyBmb3VuZFxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R0xvYmFsRXJyb3IgPSB0cnVlXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgc2hvd1xcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWVsc2VcXG4gICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIC10b3AtNCByaWdodC0wIHotWzEwMF0gdy1bNDUwcHhdIHJvdW5kZWQtbC1sZyBiZy13aGl0ZSBwLTRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLTQgZmxleCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9ycyBmb3VuZFxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQteHMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R0xvYmFsRXJyb3IgPSBmYWxzZVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBoaWRlXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJib3JkZXItbCBib3JkZXItY3JpbXNvbi00MCBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibXktMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtci0xIC1tdC0xLjUgdGV4dC0yeGwgdGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcImFsZXJ0XFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9yc1xcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcIm1yLTEgLW10LTEuNSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs3cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwic2hvd0dsb2JhbEVycm9yTGlzdCAmJiAnIHJvdGF0ZS0xODAnXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNob3dHbG9iYWxFcnJvckxpc3QgPSAhc2hvd0dsb2JhbEVycm9yTGlzdFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPHVsIHYtaWY9XFxcInNob3dHbG9iYWxFcnJvckxpc3RcXFwiPlxcbiAgICAgICAgICAgICAgPGxpXFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJlcnJvciBpbiBnbG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiZXJyb3JcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJib3JkZXItYiBib3JkZXItbi0yMCBwLTQgdGV4dC1zbVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgZXJyb3IgfX1cXG4gICAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgPC91bD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGUgdXBsb2FkLWxpc3QtdGFibGUgbXQtNFxcXCI+XFxuICAgICAgPHRhYmxlPlxcbiAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwidGl0bGVcXFwiIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTFcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIiBAY2xpY2s9XFxcInNvcnRcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwic29ydE9yZGVyID09PSAnZGVzY2VuZGluZycgPyAnIHJvdGF0ZS0xODAnIDogJydcXFwiXFxuICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1pY29uXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwdC0xIHRleHQtWzVweF1cXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3Bhbj57eyBzdGF0dXMudGVtcGxhdGUgfX0gVGl0bGU8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInN0YXR1c1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYmxvY2sgdGV4dC1sZWZ0XFxcIj5TdGF0dXM8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiBAY2xpY2s9XFxcInNlbGVjdEFsbEFjdGl2aXRpZXMoKVxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90aGVhZD5cXG4gICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgPHRyIHYtaWY9XFxcIiFpbXBvcnREYXRhLmxlbmd0aFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicC00IHRleHQtY2VudGVyXFxcIj5ObyBkYXRhIGZvdW5kIGZvciBpbXBvcnQ8L2Rpdj5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihhY3Rpdml0eSwgaW5kZXgpIGluIGltcG9ydERhdGFcXFwiXFxuICAgICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgICAgcmVmPVxcXCJ0YWJsZVJvd1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICd1cGxvYWQtZXJyb3InOlxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eSAmJlxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eVsnZXJyb3JzJ10gJiZcXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5sZW5ndGggPiAwLFxcbiAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIiA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJ3hscy1lcnJvcidcXFwiPlxcbiAgICAgICAgICAgICAgPFhsc0xpc3RFcnJvclxcbiAgICAgICAgICAgICAgICA6d2lkdGg9XFxcInRhYmxlV2lkdGhcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eT1cXFwiYWN0aXZpdHlcXFwiXFxuICAgICAgICAgICAgICAgIDppbmRleD1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgICAgIDppbXBvcnQtZGF0YT1cXFwiaW1wb3J0RGF0YVxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJyB4bHMtZXJyb3InXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+e3tcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHkuZXhpc3RpbmcgPyAnRXhpc3RpbmcnIDogJ05ldydcXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJyB4bHMtZXJyb3InXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImVycm9yTGVuZ3RoKCdjcml0aWNhbCcsIGluZGV4KSA9PT0gMFxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwic2VsZWN0ZWRBY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8IS0tIDx0ZD57eyBhY3Rpdml0eVtpbmRleF0uZGF0YS50aXRsZVswXSB9fTwvdGQ+IC0tPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90Ym9keT5cXG4gICAgICA8L3RhYmxlPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPExvYWRlclxcbiAgICB2LWlmPVxcXCJsb2FkZXJcXFwiXFxuICAgIDp0ZXh0PVxcXCJsb2FkZXJUZXh0XFxcIlxcbiAgICA6Y2xhc3M9XFxcInsgJ2FuaW1hdGUtbG9hZGVyJzogbG9hZGVyIH1cXFwiXFxuICAvPlxcbiAgPE1vZGFsXFxuICAgIDptb2RhbC1hY3RpdmU9XFxcInNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCAmJiBzaG93R0xvYmFsRXJyb3JcXFwiXFxuICAgIHdpZHRoPVxcXCI1ODNcXFwiXFxuICA+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1iLTUgZmxleCBzcGFjZS14LTIuNVxcXCI+XFxuICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtNHhsIHRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwid2FybmluZy1maWxsXFxcIiAvPlxcbiAgICAgIDxkaXY+XFxuICAgICAgICA8aDYgY2xhc3M9XFxcInRleHQtYmFzZSBmb250LWJvbGRcXFwiPkVycm9ycyBEZXRlY3RlZDwvaDY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICBXZSBkZXRlY3RlZCBzb21lIGVycm9ycyBpbiB0aGUgdXBsb2FkZWQgZmlsZS5cXG4gICAgICAgIDwvcD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXZcXG4gICAgICBjbGFzcz1cXFwibWItNiByb3VuZGVkLXNtIGJvcmRlci1jcmltc29uLTIwIGJnLXJvc2UgcC00IHRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICA+XFxuICAgICAgPGg2IGNsYXNzPVxcXCJtYi0yIHRleHQtc20gZm9udC1ib2xkXFxcIj5JZGVudGlmaWVyIEVycm9yczwvaDY+XFxuICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIFdlIGhhdmUgZm91bmQgc29tZSBpZGVudGlmaWVyIGVycm9ycyBpbiB0aGUgaW1wb3J0ZWQgZmlsZS4gWW91IGNhbm5vdFxcbiAgICAgICAgaW1wb3J0IGRhdGEgdW50aWwgYWxsIHRoZSBpZGVudGlmaWVyIGVycm9ycyBhcmUgcmVzb2x2ZWQuXFxuICAgICAgPC9wPlxcbiAgICAgIDx1bCBjbGFzcz1cXFwibWF4LWgtWzI1MHB4XSBvdmVyZmxvdy15LXNjcm9sbFxcXCI+XFxuICAgICAgICA8bGlcXG4gICAgICAgICAgdi1mb3I9XFxcImVycm9yIGluIHByb3BzLmdsb2JhbEVycm9yXFxcIlxcbiAgICAgICAgICA6a2V5PVxcXCJlcnJvclxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImJvcmRlci1iIGJvcmRlci1uLTIwIHAtNCB0ZXh0LXNtXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICB7eyBlcnJvciB9fVxcbiAgICAgICAgPC9saT5cXG4gICAgICA8L3VsPlxcbiAgICA8L2Rpdj5cXG4gICAgPHBcXG4gICAgICB2LWlmPVxcXCJlcnJvckNvdW50LmNyaXRpY2FsICsgZXJyb3JDb3VudC5lcnJvciArIGVycm9yQ291bnQud2FybmluZyA+IDBcXFwiXFxuICAgICAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIlxcbiAgICA+XFxuICAgICAgQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUge3sgZXJyb3JDb3VudC5jcml0aWNhbCB9fSBjcml0aWNhbCBlcnJvcixcXG4gICAgICB7eyBlcnJvckNvdW50LmVycm9yIH19IGVycm9ycyBhbmQge3sgZXJyb3JDb3VudC53YXJuaW5nIH19IHdhcm5pbmcgaW4gdGhlXFxuICAgICAgZmlsZVxcbiAgICA8L3A+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0zXFxcIj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJnaG9zdC1idG5cXFwiIEBjbGljaz1cXFwiY2FuY2VsSW1wb3J0XFxcIj5DYW5jZWwgSW1wb3J0PC9idXR0b24+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgY2xhc3M9XFxcIlxcXCJcXG4gICAgICAgIHRleHQ9XFxcImRvd25sb2FkIGlkZW50aWZpZXIgZXJyb3JzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwicHJpbWFyeVxcXCJcXG4gICAgICAgIGljb249XFxcImRvd25sb2FkXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJkb3dubG9hZElkZW50aWZpZXJFcnJvclxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvTW9kYWw+XFxuICA8TW9kYWxcXG4gICAgOm1vZGFsLWFjdGl2ZT1cXFwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCAmJiAhc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsXFxcIlxcbiAgICB3aWR0aD1cXFwiNTgzXFxcIlxcbiAgPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYi01IGZsZXggc3BhY2UteC0yLjVcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LTR4bCB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcIndhcm5pbmctZmlsbFxcXCIgLz5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LWJhc2UgZm9udC1ib2xkXFxcIj5FcnJvcnMgRGV0ZWN0ZWQ8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgV2UgZGV0ZWN0ZWQgc29tZSBlcnJvcnMgaW4gdGhlIHVwbG9hZGVkIGZpbGUuXFxuICAgICAgICA8L3A+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2XFxuICAgICAgY2xhc3M9XFxcIm1iLTYgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgYmctcm9zZSBwLTQgdGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IHYtaWY9XFxcInNob3dDcml0aWNhbEVycm9yTWVzc2FnZVxcXCIgY2xhc3M9XFxcIm1iLTZcXFwiPlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJtYi0yIHRleHQtc20gZm9udC1ib2xkXFxcIj5Dcml0aWNhbCBFcnJvcnM8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgU29tZSBvZiB0aGUge3sgc3RhdHVzLnRlbXBsYXRlIH19IGNvbnRhaW4gY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzLFxcbiAgICAgICAgICBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gSUFUSSBQdWJsaXNoZXIuIFBsZWFzZSByZXZpZXcgdGhlIGVycm9ycyBhbmRcXG4gICAgICAgICAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgcHJvdmlkZWQgaW4gdGhlIHVzZXIgbWFudWFsLlxcbiAgICAgICAgPC9wPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTNcXFwiPlxcbiAgICAgIDxidXR0b24gY2xhc3M9XFxcImdob3N0LWJ0blxcXCIgQGNsaWNrPVxcXCJjYW5jZWxJbXBvcnRcXFwiPkNhbmNlbCBJbXBvcnQ8L2J1dHRvbj5cXG4gICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICB0ZXh0PVxcXCJSZXZpZXcgZXJyb3JzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwicHJpbWFyeVxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9IGZhbHNlXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgPC9Nb2RhbD5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCBYbHNMaXN0RXJyb3IgZnJvbSAnQ29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlJztcXG5pbXBvcnQgTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcXG5pbXBvcnQgVG9hc3QgZnJvbSAnQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlJztcXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgb25Nb3VudGVkLCByZWYsIG5leHRUaWNrLCBvblVubW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICdDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZSc7XFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcblxcbmNvbnN0IHNlbGVjdEFsbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc29ydE9yZGVyID0gcmVmKCdhc2NlZGluZycpO1xcblxcbmNvbnN0IHRhYmxlUm93ID0gcmVmKHt9KTtcXG5jb25zdCBzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93SWRlbnRpZmllckVycm9yTW9kZWwgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IGxvYWRlciA9IHJlZihmYWxzZSksXFxuICBsb2FkZXJUZXh0ID0gcmVmKCdBZGRpbmcgYWN0aXZpdGllcycpO1xcbmNvbnN0IHNob3dDcml0aWNhbEVycm9yTWVzc2FnZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0dMb2JhbEVycm9yID0gcmVmKHRydWUpO1xcbmNvbnN0IHNlbGVjdGVkQ291bnQgPSByZWYoMCk7XFxuY29uc3QgYWN0aXZpdGllc0xlbmd0aCA9IHJlZigwKTtcXG5jb25zdCBzZWxlY3RlZEFjdGl2aXRpZXMgPSByZWY8c3RyaW5nW10+KFtdKTtcXG5jb25zdCB0YWJsZVdpZHRoID0gcmVmKHt9KTtcXG5jb25zdCB0b2FzdE1lc3NhZ2UgPSByZWYoJycpO1xcbmNvbnN0IHRvYXN0VHlwZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgdG9hc3RWaXNpYmlsaXR5ID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIHN0YXR1czoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxcbiAgaW1wb3J0RGF0YToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGdsb2JhbEVycm9yOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZXJyb3JDb3VudDoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5jb25zdCBnZXREaW1lbnNpb25zID0gYXN5bmMgKCkgPT4ge1xcbiAgYXdhaXQgbmV4dFRpY2soKTtcXG4gIHRhYmxlV2lkdGgudmFsdWUgPSB0YWJsZVJvdz8udmFsdWVbJzAnXT8uY2xpZW50V2lkdGg7XFxufTtcXG5cXG5jb25zdCBzb3J0ID0gKCkgPT4ge1xcbiAgc29ydE9yZGVyLnZhbHVlID09PSAnYXNjZW5kaW5nJ1xcbiAgICA/IChzb3J0T3JkZXIudmFsdWUgPSAnZGVzY2VuZGluZycpXFxuICAgIDogKHNvcnRPcmRlci52YWx1ZSA9ICdhc2NlbmRpbmcnKTtcXG5cXG4gIGxldCBzb3J0ZWREYXRhID0gcHJvcHMuaW1wb3J0RGF0YTtcXG4gIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XFxuICAgIGNhc2UgJ2FjdGl2aXR5JzpcXG4gICAgICBzb3J0ZWREYXRhLnNvcnQoKGEsIGIpID0+XFxuICAgICAgICBhLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDwgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuICAgICAgYnJlYWs7XFxuXFxuICAgIGNhc2UgJ3Jlc3VsdCc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJ3BlcmlvZCc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJ2luZGljYXRvcic6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgYnJlYWs7XFxuICB9XFxufTtcXG5cXG5vblVubW91bnRlZCgoKSA9PiB7XFxuICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XFxufSk7XFxuXFxub25Nb3VudGVkKCgpID0+IHtcXG4gIGdldERpbWVuc2lvbnMoKTtcXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcXG4gIGNoZWNrQ3JpdGljYWxFcnJvcigpO1xcblxcbiAgaWYgKHByb3BzLmdsb2JhbEVycm9yKSB7XFxuICAgIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XFxuICB9XFxuICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcHJvcHMuaW1wb3J0RGF0YS5sZW5ndGg7XFxuICBsb2FkZXJUZXh0LnZhbHVlID0gYEFkZGluZyAke3Byb3BzLnN0YXR1cy50ZW1wbGF0ZX1gO1xcbn0pO1xcblxcbmNvbnN0IGNhbmNlbEltcG9ydCA9ICgpID0+IHtcXG4gIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSBmYWxzZTtcXG4gIHNob3dHTG9iYWxFcnJvci52YWx1ZSA9IGZhbHNlO1xcbiAgYXhpb3MuZGVsZXRlKGAvaW1wb3J0L3hsc2ApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSksIDE1MDAwKTtcXG4gICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcXG4gICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xcbiAgICB9LCAyMDAwKTtcXG4gIH0pO1xcbn07XFxuY29uc3QgZG93bmxvYWRJZGVudGlmaWVyRXJyb3IgPSAoKSA9PiB7XFxuICBsZXQgdGV4dDtcXG4gIGlmICh0eXBlb2YgcHJvcHMuZ2xvYmFsRXJyb3IgPT09ICdvYmplY3QnKSB7XFxuICAgIHRleHQgPSBPYmplY3QudmFsdWVzKHByb3BzLmdsb2JhbEVycm9yKS5qb2luKCdcXFxcbicpO1xcbiAgfVxcbiAgbGV0IGZpbGUgPSBuZXcgRmlsZShbJ1xcXFx1ZmVmZicgKyB0ZXh0XSwgJ2lkZW50aWZpZXItZXJyb3JzLnR4dCcsIHtcXG4gICAgdHlwZTogJ3RleHQvcGxhaW46Y2hhcnNldD1VVEYtOCcsXFxuICB9KTtcXG4gIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcXG4gIGxldCBhbmNob3JUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XFxuICBhbmNob3JUYWcuaHJlZiA9IHVybDtcXG4gIGFuY2hvclRhZy5kb3dubG9hZCA9IGZpbGUubmFtZTtcXG4gIGFuY2hvclRhZy5jbGljaygpO1xcbiAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcXG59O1xcblxcbmNvbnN0IGNoZWNrQ3JpdGljYWxFcnJvciA9ICgpID0+IHtcXG4gIGNvbnN0IGNyaXRpY2FsQXJyeSA9XFxuICAgIHByb3BzLmltcG9ydERhdGEgJiZcXG4gICAgcHJvcHMuaW1wb3J0RGF0YS5tYXAoKGRhdGEsIGluZGV4KSA9PiB7XFxuICAgICAgcmV0dXJuIGVycm9yTGVuZ3RoKCdjcml0aWNhbCcsIGluZGV4KTtcXG4gICAgfSk7XFxuICBsZXQgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgPSAwO1xcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcml0aWNhbEFycnkubGVuZ3RoOyBpKyspIHtcXG4gICAgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgKz0gY3JpdGljYWxBcnJ5W2ldO1xcbiAgfVxcbiAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCkge1xcbiAgICBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UudmFsdWUgPSB0cnVlO1xcbiAgfVxcbiAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCB8fCBwcm9wcy5nbG9iYWxFcnJvcj8ubGVuZ3RoID4gMCkge1xcbiAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IGNvdW50RXJyb3JzID0gKGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKFxcbiAgICAgICAgcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdXFxuICAgICAgKS5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IGFkZEFjdGl2aXRpZXMgPSAoKSA9PiB7XFxuICBpZiAoc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcXG4gICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcXG5cXG4gICAgYXhpb3NcXG4gICAgICAucG9zdChgL2ltcG9ydC94bHMvYWN0aXZpdHlgLCB7IGFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSB9KVxcbiAgICAgIC50aGVuKCgpID0+IHtcXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcXG4gICAgICB9KTtcXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGVycm9yVHlwZSwgYWN0aXZpdHlJbmRleCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXSkge1xcbiAgICBjb3VudCArPSBPYmplY3Qua2V5cyhcXG4gICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdW2luZGV4XVxcbiAgICApLmxlbmd0aDtcXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcblxcbmZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XFxuICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xcbiAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XFxuICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID0gMDtcXG4gIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGEpLmZvckVhY2goKGFjdGl2aXR5X2lkKSA9PiB7XFxuICAgIGxldCBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5pbmRleE9mKGFjdGl2aXR5X2lkKTtcXG4gICAgaWYgKFxcbiAgICAgIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZihcXG4gICAgICAgICdjcml0aWNhbCdcXG4gICAgICApID09PSAtMVxcbiAgICApIHtcXG4gICAgICBpZiAoc2VsZWN0QWxsLnZhbHVlKSB7XFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUucHVzaChhY3Rpdml0eV9pZCk7XFxuICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSk7XFxuICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xcbiAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcXG4gIH1cXG59XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG4ueGxzLWVycm9yIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjZmZmMWYwIDYwcHgsICNmZmZmZmYgMCUpO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Utd3JhcHBlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiA1O1xcbiAgd2lkdGg6IDQyNHB4O1xcbiAgaGVpZ2h0OiAtbW96LWZpdC1jb250ZW50O1xcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG59XFxuLm11bHRpc2VsZWN0LWxvb2thbGlrZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2QxZDVkYjtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcGFkZGluZzogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBa3JDQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsWUFBWTtFQUNaLHdCQUFtQjtFQUFuQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0Usa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQixpQ0FBaUM7RUFDakMseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGFBQWE7RUFDYixlQUFlO0FBQ2pCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcImZpbHRlcnMgbWItNCBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcXFwiPlxcbiAgICA8IS0tRmlsdGVyIG9wdGlvbnMgc3RhcnQtLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwic2VsZWN0IGZpbHRlcnMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInctMTAgdGV4dC1sZ1xcXCIgaWNvbj1cXFwiZnVubmVsXFxcIiAvPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIiA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ2NvdW50cnknKVxcXCI+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcImNvdW50cnktZmlsdGVyXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuY291bnRyeVxcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkNPVU5UUllcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcImNvdW50cmllc1dpdGhQcmVmaXhcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwiY291bnRyeVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnc2V0dXAgY29tcGxldGVuZXNzJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJzZXR1cC1jb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5jb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTRVRVUCBDT01QTEVURU5FU1NcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJzZXR1cENvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcInNldHVwQ29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdyZWdpc3RyYXRpb24gdHlwZScpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwicmVnaXN0cmF0aW9uLXR5cGVcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5yZWdpc3RyYXRpb25fdHlwZVxcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlJFR0lTVFJBVElPTiBUWVBFXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwicmVnaXN0cmF0aW9uVHlwZXNcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJyZWdpc3RyYXRpb25UeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuXFxuICAgICAgPCEtLU11bHRpc2VsZWN0IHdpdGggc2VhcmNoIC0tPlxcbiAgICAgIDwhLS0gdG8gYmUgaW1wbGVtZW50ZWQgLS0+XFxuICAgICAgPCEtLSA8ZGl2XFxuICAgICAgICBjbGFzcz1cXFwib3JnYW5pemF0aW9uIG11bHRpc2VsZWN0LWxvb2thbGlrZVxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwidG9nZ2xlU2hvd011bHRpU2VsZWN0KCRldmVudClcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgdy1mdWxsIGp1c3RpZnktYmV0d2VlbiBhbGlnbi1taWRkbGUgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3Bhbj5PcmdhbmlzYXRpb24gVHlwZTwvc3Bhbj5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgIChldmVudCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgICAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGggPSAwO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0yLjUgdHJhbnNsYXRlLXgtMSB0ZXh0LVsxNnB4XSB0ZXh0LW4tMzBcXFwiXFxuICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJyb3RhdGVDbGFzc1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICBzdHlsZT1cXFwiaGVpZ2h0OiBmaXQtY29udGVudDsgZm9udC1zaXplOiAyMHB4OyBtYXJnaW4tdG9wOiAtMnB4XFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImFycm93LWRvd25cXFwiPjwvc3ZnLXZ1ZT4gPC9zcGFuXFxuICAgICAgICAgID48L3NwYW4+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDxUZWxlcG9ydCB0bz1cXFwiYm9keVxcXCI+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICB2LWlmPVxcXCJzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sb29rYWxpa2Utd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcIm11bHRpc2VsZWN0U3R5bGVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8TXVsdGlTZWxlY3RXaXRoU2VhcmNoXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicmVsYXRpdmUgIXotWzEwMDBdXFxcIlxcbiAgICAgICAgICAgICAgaGVhZGVyPVxcXCJPcmdhbmlzYXRpb24gVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDpsaXN0LWl0ZW1zPVxcXCJwdWJsaXNoZXJUeXBlc1xcXCJcXG4gICAgICAgICAgICAgIEBjaGFuZ2Utc2VsZWN0ZWQtcHVibGlzaGVyPVxcXCJzZXRTZWxlY3RlZFB1Ymxpc2hlclxcXCJcXG4gICAgICAgICAgICAgIEBjbG9zZT1cXFwic2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgID48L011bHRpU2VsZWN0V2l0aFNlYXJjaD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L1RlbGVwb3J0PlxcbiAgICAgIDwvZGl2PiAtLT5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ09yZ2FuaXNhdGlvbiBUeXBlJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJwdWJsaXNoZXItdHlwZVxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwicHVibGlzaGVyVHlwZXNcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJPcmdhbmlzYXRpb24gVHlwZVxcXCJcXG4gICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJwdWJsaXNoZXJUeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdkYXRhIGxpY2Vuc2UnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcImRhdGEtbGljZW5zZVxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLmRhdGFfbGljZW5zZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcImRhdGFMaWNlbnNlc1xcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkRBVEEgTElDRU5TRVxcXCJcXG4gICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJkYXRhTGljZW5zZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPCEtLUZpbHRlciBvcHRpb25zIGVuZC0tPlxcblxcbiAgICA8IS0tRGF0ZSByYW5nZSBzdGFydC0tPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGgtWzM4cHhdIHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNCAyeGw6dy1hdXRvXFxcIj5cXG4gICAgICA8RGF0ZVJhbmdlV2lkZ2V0XFxuICAgICAgICA6ZHJvcGRvd24tcmFuZ2U9XFxcImRyb3Bkb3duUmFuZ2VcXFwiXFxuICAgICAgICA6Zmlyc3QtZGF0ZT1cXFwib2xkZXN0RGF0ZXNcXFwiXFxuICAgICAgICA6Y2xlYXItZGF0ZT1cXFwiY2xlYXJEYXRlXFxcIlxcbiAgICAgICAgOnN0YXJ0aW5nLWRhdGU9XFxcImZpbHRlci5zdGFydF9kYXRlXFxcIlxcbiAgICAgICAgOmVuZGluZy1kYXRlPVxcXCJmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgIEB0cmlnZ2VyLXNldC1kYXRlLXJhbmdlPVxcXCJzZXREYXRlUmFuZ2VEYXRlXFxcIlxcbiAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtdHlwZT1cXFwic2V0RGF0ZVR5cGVcXFwiXFxuICAgICAgICBAZGF0ZS1jbGVhcmVkPVxcXCJjbGVhckRhdGUgPSBmYWxzZVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gICAgPCEtLURhdGUgcmFuZ2Ugc3RhcnQtLT5cXG4gIDwvZGl2PlxcblxcbiAgPCEtLUZpbHRlciB0YWcgcGlsbHMgc3RhcnQtLT5cXG4gIDxkaXZcXG4gICAgdi1pZj1cXFwiaXNGaWx0ZXJBcHBsaWVkXFxcIlxcbiAgICBjbGFzcz1cXFwibWItNCBmbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiXFxuICA+XFxuICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTQwXFxcIj5GaWx0ZXJlZCBieTogPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5jb3VudHJ5XFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLmNvdW50cnlcXFwiXFxuICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5Db3VudHJ5Ojwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBpdGVtIH19PC9zcGFuXFxuICAgICAgICA+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5jb3VudHJ5LnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5jb21wbGV0ZW5lc3NcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+U2V0dXAgQ29tcGxldGVuZXNzOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShmaWx0ZXIuY29tcGxldGVuZXNzKSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzID0gJydcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5yZWdpc3RyYXRpb25fdHlwZVxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5SZWdpc3RyYXRpb24gVHlwZTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UoZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlKSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJ1xcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuXFxuICAgICAgdi1zaG93PVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLnB1Ymxpc2hlcl90eXBlXFxcIlxcbiAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+T3JnYW5pc2F0aW9uIFR5cGU6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IHB1Ymxpc2hlclR5cGVzW2l0ZW1dIH19XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW5cXG4gICAgICB2LXNob3c9XFxcImZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLmRhdGFfbGljZW5zZVxcXCJcXG4gICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPkRhdGEgTGljZW5zZTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgaXRlbSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuZGF0YV9saWNlbnNlLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcbiAgICA8c3BhblxcbiAgICAgIHYtc2hvdz1cXFwiZmlsdGVyLnN0YXJ0X2RhdGUgJiYgZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj4gRGF0ZSByYW5nZTogPC9zcGFuPlxcbiAgICAgICAgICB7eyBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgfX1cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJEYXRlRmlsdGVyKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICBcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8YnV0dG9uIGNsYXNzPVxcXCJmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIiBAY2xpY2s9XFxcInJlc2V0QWxsRmlsdGVyc1xcXCI+XFxuICAgICAgQ2xlYXIgRmlsdGVyXFxuICAgIDwvYnV0dG9uPlxcbiAgPC9kaXY+XFxuICA8IS0tRmlsdGVyIHRhZyBwaWxscyBlbmQtLT5cXG5cXG4gIDxkaXY+XFxuICAgIDxwIGNsYXNzPVxcXCJweS0xXFxcIj5Ub3RhbCBOdW1iZXIgb2YgT3JnYW5pc2F0aW9uOiB7eyB0b3RhbE9yZ2FuaXNhdGlvbiB9fTwvcD5cXG4gICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlXFxcIj5cXG4gICAgICA8dGFibGU+XFxuICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJvcmdhbmlzYXRpb25fbmFtZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ25hbWUnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCduYW1lJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbmFtZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+T3JnYW5pc2F0aW9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJjb3VudHJ5XFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnY291bnRyeSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2NvdW50cnknKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdjb3VudHJ5J1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5Db3VudHJ5PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJyZWdpc3RlcmVkX29uXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncmVnaXN0ZXJlZF9vbidcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ3JlZ2lzdGVyZWRfb24nKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdyZWdpc3RlcmVkX29uJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5SZWdpc3RlcmVkIE9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJsYXN0X2xvZ2luXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbGFzdF9sb2dnZWRfaW4nXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2xhc3RfbG9nZ2VkX2luJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJhY3Rpdml0aWVzXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnYWxsX2FjdGl2aXRpZXNfY291bnQnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdhbGxfYWN0aXZpdGllc19jb3VudCcpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2FsbF9hY3Rpdml0aWVzX2NvdW50J1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5BY3Rpdml0aWVzPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJwdWJsaXNoZXJfdHlwZVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3B1Ymxpc2hlcl90eXBlJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgncHVibGlzaGVyX3R5cGUnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdwdWJsaXNoZXJfdHlwZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+T3JnYW5pc2F0aW9uIFR5cGU8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImRhdGFfbGljZW5jZVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2RhdGFfbGljZW5zZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2RhdGFfbGljZW5zZScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2RhdGFfbGljZW5zZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+RGF0YSBsaWNlbmNlIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicHJveHlcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTU4cHhcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICA8dHIgdi1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPT09ICdmZXRjaGluZydcXFwiPlxcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVxcXCI0XFxcIj5GZXRjaGluZyBEYXRhLi4uPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZWxzZS1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPT09ICdmYWlsZWQgdG8gcmV0cmlldmUgZGF0YSdcXFwiPlxcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVxcXCI0XFxcIj5GYWlsZWQgdG8gcmV0cmlldmUgZGF0YS4uLjwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWVsc2UtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZW1wdHknXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+Tm8gRGF0YSBBdmFpbGFibGU8L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1mb3I9XFxcImRhdGEgaW4gb3JnYW5pc2F0aW9uRGF0YS5kYXRhLmRhdGFcXFwiIHYtZWxzZSA6a2V5PVxcXCJkYXRhLmlkXFxcIj5cXG4gICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XFxcImRhdGEubmFtZVxcXCIgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXMgb3ZlcmZsb3ctaGlkZGVuXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWVbMF0/Lm5hcnJhdGl2ZSA/PyAnTmFtZSBNaXNzaW5nJyB9fVxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlPk5hbWUgTWlzc2luZzwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncm91cCByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHRleHQtYmx1ZS00MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy51c2VyPy5lbWFpbCB9fVxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLWZ1bGwgaGlkZGVuIHJvdW5kZWQgYmctZWdnc2hlbGwgcC0yIHNoYWRvdy1zbSBncm91cC1ob3ZlcjpibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy51c2VyPy5lbWFpbCB9fVxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IHctZml0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbWQgbXQtMSBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2lyY2xlLXJlZC1jcm9zcydcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJweC0xXFxcIj4gUmVnaXN0cnkgQVBJIEtleSA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBmbGV4IHctZml0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1zcHJpbmctNTAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LW1kIG10LTEgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjaXJjbGUtcmVkLWNyb3NzJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB4LTFcXFwiPiBEZWZhdWx0IFZhbHVlcyA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3sgY291bnRyaWVzV2l0aFByZWZpeFtkYXRhWydjb3VudHJ5J11dIH19XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBiLTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGVGb3JtYXQoZGF0YVsnY3JlYXRlZF9hdCddLCAnTU1NTSwgREQsIFlZWVknKSB9fVxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC14c1xcXCI+XFxuICAgICAgICAgICAgICAgICAgUHJldmlvdXNseVxcbiAgICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWdpc3RyYXRpb25fdHlwZSddICE9PSAnZXhpc3Rpbmdfb3JnJyA/ICdub3QnIDogJydcXG4gICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgaW4gSUFUSSBwbGF0Zm9ybVxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICBkYXRhLmxhc3RfbG9nZ2VkX2luXFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVGb3JtYXQoZGF0YS5sYXN0X2xvZ2dlZF9pbiwgJ01NTU0sIERELFlZWVknKVxcbiAgICAgICAgICAgICAgICAgICAgOiAnTm90IEF2YWlsYWJsZSdcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHgtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZGF0YS5hbGxfYWN0aXZpdGllc19jb3VudCB9fSBhY3Rpdml0aWVzXFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsnbGF0ZXN0X3VwZGF0ZWRfYWN0aXZpdHknXVxcbiAgICAgICAgICAgICAgICAgICAgICA/ICdMYXN0IHVwZGF0ZWQgb246JyArXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdChcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2xhdGVzdF91cGRhdGVkX2FjdGl2aXR5J10udXBkYXRlZF9hdCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdNTU1NLCBERCwgWVlZWSdcXG4gICAgICAgICAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgICAgICAgICAgIDogJ05vdCBhdmFpbGFibGUnXFxuICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IHNob3dNYXBwZWREYXRhKCdwdWJsaXNoZXJfdHlwZScsIGRhdGEsIHB1Ymxpc2hlclR5cGVzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBzaG93TWFwcGVkRGF0YSgnZGF0YV9saWNlbnNlJywgZGF0YSwgZGF0YUxpY2Vuc2VzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcImJvcmRlci10aGlzIGZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgICAgICAgICAgIHRleHQ9XFxcInByb3h5XFxcIlxcbiAgICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic21pbGVcXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJwcm94eVVzZXIoPG51bWJlcj5kYXRhPy51c2VyPy5pZClcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVxcXCJvcGVuRGVsZXRlTW9kYWwoZGF0YSlcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidy0xMCB0ZXh0LWxnIHRleHQtbi00MFxcXCIgaWNvbj1cXFwiZGVsZXRlXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGJvZHk+XFxuICAgICAgPC90YWJsZT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm10LTZcXFwiPlxcbiAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICB2LWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLmRhdGEgJiYgb3JnYW5pc2F0aW9uRGF0YS5kYXRhLmxhc3RfcGFnZSA+IDFcXFwiXFxuICAgICAgICA6ZGF0YT1cXFwib3JnYW5pc2F0aW9uRGF0YS5kYXRhXFxcIlxcbiAgICAgICAgOnJlc2V0PVxcXCJyZXNldFBhZ2luYXRpb25cXFwiXFxuICAgICAgICBAZmV0Y2gtYWN0aXZpdGllcz1cXFwiKG4pID0+IGZldGNoT3JnYW5pc2F0aW9uKG4pXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2PjwvZGl2PlxcbiAgPC9kaXY+XFxuICA8UG9wdXBNb2RhbCA6bW9kYWwtYWN0aXZlPVxcXCJkZWxldGVNb2RhbFxcXCIgQGNsb3NlPVxcXCJ0b2dnbGVEZWxldGVDb25maXJtYXRpb25cXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJtci0xIG10LTAuNSB0ZXh0LWxnIHRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiZGVsZXRlXFxcIiAvPlxcbiAgICAgIDxiPkRlbGV0ZSBvcmdhbmlzYXRpb248L2I+XFxuICAgIDwvZGl2PlxcbiAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA8Yj4ge3sgZGVsZXRlT3JnTmFtZSB9fTwvYj4gP1xcbiAgICA8L3A+XFxuICAgIDxwIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yXFxcIj5cXG4gICAgICA8bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgICAgIDxpbnB1dCBpZD1cXFwibWFya0FzU3BhbVxcXCIgdi1tb2RlbD1cXFwibWFya0FzU3BhbVxcXCIgdHlwZT1cXFwiY2hlY2tib3hcXFwiIC8+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICAgIDwvbGFiZWw+XFxuICAgICAgPGxhYmVsIGZvcj1cXFwibWFya0FzU3BhbVxcXCI+IE1hcmsgYXNzb2NpYXRlZCBlbWFpbHMgYXMgc3BhbS48L2xhYmVsPlxcbiAgICA8L3A+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm10LTYgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcXFwiPlxcbiAgICAgIDxidXR0b24gY2xhc3M9XFxcInNlY29uZGFyeS1idG4gZm9udC1ib2xkXFxcIiBAY2xpY2s9XFxcInRvZ2dsZURlbGV0ZUNvbmZpcm1hdGlvblxcXCI+XFxuICAgICAgICBDYW5jZWxcXG4gICAgICA8L2J1dHRvbj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiIEBjbGljaz1cXFwiZGVsZXRlT3JnKGRlbGV0ZUlkKVxcXCI+XFxuICAgICAgICBEZWxldGUgPFNwaW5uZXJMb2FkZXIgdi1pZj1cXFwic2hvd0xvYWRlclxcXCI+PC9TcGlubmVyTG9hZGVyPlxcbiAgICAgIDwvYnV0dG9uPlxcbiAgICA8L2Rpdj5cXG4gIDwvUG9wdXBNb2RhbD5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7XFxuICByZWFjdGl2ZSxcXG4gIG9uTW91bnRlZCxcXG4gIGluamVjdCxcXG4gIHJlZixcXG4gIHdhdGNoLFxcbiAgY29tcHV0ZWQsXFxuICBkZWZpbmVDb21wb25lbnQsXFxufSBmcm9tICd2dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IE11bHRpU2VsZWN0V2l0aFNlYXJjaCBmcm9tICdDb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWUnO1xcblxcbmltcG9ydCBkYXRlRm9ybWF0IGZyb20gJ0NvbXBvc2FibGUvZGF0ZUZvcm1hdCc7XFxuaW1wb3J0IHtcXG4gIGtlYmFiQ2FzZVRvU25ha2VjYXNlLFxcbiAgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UsXFxufSBmcm9tICdDb21wb3NhYmxlL3V0aWxzJztcXG5cXG5pbXBvcnQgQnRuQ29tcG9uZW50IGZyb20gJ0NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSc7XFxuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdTdG9yZS9hY3Rpdml0aWVzL2luZGV4JztcXG5pbXBvcnQgUG9wdXBNb2RhbCBmcm9tICdDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlJztcXG5pbXBvcnQgU3Bpbm5lckxvYWRlciBmcm9tICdDb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlJztcXG5cXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xcbiAgbmFtZTogJ1RhYmxlTGlzdCcsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIFNwaW5uZXJMb2FkZXIsXFxuICAgIFBvcHVwTW9kYWwsXFxuICAgIEJ0bkNvbXBvbmVudDogQnRuQ29tcG9uZW50LFxcbiAgICBQYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxcbiAgICBNdWx0aXNlbGVjdDogTXVsdGlzZWxlY3QsXFxuICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0LFxcbiAgfSxcXG4gIHByb3BzOiB7XFxuICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIG9sZGVzdERhdGVzOiB7XFxuICAgICAgdHlwZTogU3RyaW5nLFxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgICB9LFxcbiAgfSxcXG5cXG4gIHNldHVwKHByb3BzKSB7XFxuICAgIC8vIGluamVjdFxcbiAgICBpbnRlcmZhY2UgVG9hc3RJbnRlcmZhY2Uge1xcbiAgICAgIHZpc2liaWxpdHk6IGJvb2xlYW47XFxuICAgICAgbWVzc2FnZTogc3RyaW5nO1xcbiAgICAgIHR5cGU6IGJvb2xlYW47XFxuICAgIH1cXG4gICAgY29uc3QgdG9hc3RNZXNzYWdlID0gaW5qZWN0KCd0b2FzdERhdGEnKSBhcyBUb2FzdEludGVyZmFjZTtcXG5cXG4gICAgaW50ZXJmYWNlIExvYWRlckludGVyZmFjZSB7XFxuICAgICAgc3RhdHVzOiBib29sZWFuO1xcbiAgICAgIHRleHQ6IHN0cmluZztcXG4gICAgfVxcblxcbiAgICBjb25zdCBsb2FkZXIgPSBpbmplY3QoJ2xvYWRlcicpIGFzIExvYWRlckludGVyZmFjZTtcXG4gICAgY29uc3QgZGF0ZURyb3Bkb3duID0gcmVmKCk7XFxuICAgIGNvbnN0IGNsZWFyRGF0ZSA9IHJlZihmYWxzZSk7XFxuICAgIGNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcblxcbiAgICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKCk7XFxuXFxuICAgIGNvbnN0IGRlbGV0ZUlkID0gcmVmKCcnKTtcXG4gICAgY29uc3QgZGVsZXRlT3JnTmFtZSA9IHJlZignJyk7XFxuICAgIGNvbnN0IGRlbGV0ZU1vZGFsID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgbWFya0FzU3BhbSA9IHJlZihmYWxzZSk7XFxuICAgIGNvbnN0IHNob3dMb2FkZXIgPSByZWYoZmFsc2UpO1xcblxcbiAgICBmdW5jdGlvbiB0b2dnbGVEZWxldGVDb25maXJtYXRpb24oKSB7XFxuICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSAhZGVsZXRlTW9kYWwudmFsdWU7XFxuICAgICAgbWFya0FzU3BhbS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHNob3dMb2FkZXIudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcblxcbiAgICBjb25zdCBvcGVuRGVsZXRlTW9kYWwgPSAob3JnYW5pemF0aW9uKSA9PiB7XFxuICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgICAgIGRlbGV0ZUlkLnZhbHVlID0gb3JnYW5pemF0aW9uLmlkO1xcbiAgICAgIGRlbGV0ZU9yZ05hbWUudmFsdWUgPSBvcmdhbml6YXRpb24ubmFtZVswXT8ubmFycmF0aXZlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBkZWxldGVPcmcgPSBhc3luYyAob3JnSWQpID0+IHtcXG4gICAgICBzaG93TG9hZGVyLnZhbHVlID0gdHJ1ZTtcXG5cXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmRlbGV0ZShcXG4gICAgICAgIGAvb3JnYW5pemF0aW9uLyR7b3JnSWR9YCArIChtYXJrQXNTcGFtLnZhbHVlID8gJz9tYXJrQXNTcGFtPXRydWUnIDogJycpXFxuICAgICAgKTtcXG5cXG4gICAgICBzaG93TG9hZGVyLnZhbHVlID0gZmFsc2U7XFxuICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSBmYWxzZTtcXG4gICAgICBtYXJrQXNTcGFtLnZhbHVlID0gZmFsc2U7XFxuICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgdG9hc3RNZXNzYWdlLnZpc2liaWxpdHkgPSB0cnVlO1xcblxcbiAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XFxuICAgICAgfVxcblxcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgdG9hc3RNZXNzYWdlLnZpc2liaWxpdHkgPSBmYWxzZTtcXG4gICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gJyc7XFxuICAgICAgfSwgMzAwMCk7XFxuICAgIH07XFxuXFxuICAgIC8vdHlwZWZhY2VcXG4gICAgaW50ZXJmYWNlIG9yZ2FuaXphdGlvbkludGVyZmFjZSB7XFxuICAgICAgZGF0YTogb0RhdGFJbnRlcmZhY2U7XFxuICAgICAgc3RhdHVzOiBzdHJpbmc7XFxuICAgIH1cXG5cXG4gICAgaW50ZXJmYWNlIG9EYXRhSW50ZXJmYWNlIHtcXG4gICAgICBkYXRhOiB7XFxuICAgICAgICB0b3RhbDogbnVtYmVyO1xcblxcbiAgICAgICAgaWQ6IG51bWJlcjtcXG4gICAgICAgIG5hbWU6IHtcXG4gICAgICAgICAgbmFycmF0aXZlOiBzdHJpbmc7XFxuICAgICAgICB9W107XFxuICAgICAgICBvcmdhbml6YXRpb25fdXJsOiBzdHJpbmc7XFxuICAgICAgICB1c2VyOiB7XFxuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XFxuICAgICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICB9O1xcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZTtcXG4gICAgICAgIGNvdW50cnk6IHN0cmluZztcXG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBsYXN0X2xvZ2dlZF9pbjogRGF0ZTtcXG4gICAgICAgIGFsbF9hY3Rpdml0aWVzX2NvdW50OiBudW1iZXI7XFxuICAgICAgICBwdWJsaXNoZXJfdHlwZTogc3RyaW5nIHwgbnVtYmVyO1xcbiAgICAgICAgZGF0YV9saWNlbnNlOiBzdHJpbmc7XFxuICAgICAgfVtdO1xcbiAgICAgIGxhc3RfcGFnZTogbnVtYmVyO1xcbiAgICAgIGN1cnJlbnRfcGFnZTogbnVtYmVyO1xcbiAgICB9XFxuXFxuICAgIGNvbnN0IGdldENvdW50cmllc1dpdGhQcmVmaXggPSAoKSA9PiB7XFxuICAgICAgY29uc3QgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXMgPSB7fTtcXG4gICAgICBjb25zdCBjb3VudHJ5Q29kZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5jb3VudHJpZXMpO1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRyeUNvZGVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICByZXR1cm5WYWx1ZUZvckNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dID0gYCR7Y291bnRyeUNvZGVzW2ldfSAtICR7XFxuICAgICAgICAgIHByb3BzLmNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dXFxuICAgICAgICB9YDtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIHJldHVyblZhbHVlRm9yQ291bnRyaWVzO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjb3VudHJpZXNXaXRoUHJlZml4ID0gZ2V0Q291bnRyaWVzV2l0aFByZWZpeCgpO1xcblxcbiAgICAvLyByZWFjdGl2aXR5XFxuICAgIGxldCBvcmdhbmlzYXRpb25EYXRhOiBvcmdhbml6YXRpb25JbnRlcmZhY2UgPSByZWFjdGl2ZSh7XFxuICAgICAgZGF0YToge30gYXMgb0RhdGFJbnRlcmZhY2UsXFxuICAgICAgc3RhdHVzOiAnZmV0Y2hpbmcnLFxcbiAgICB9KTtcXG5cXG4gICAgbGV0IG11bHRpc2VsZWN0U3R5bGUgPSByZWYoe30pO1xcblxcbiAgICBsZXQgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgICAgIHB1Ymxpc2hlcl90eXBlOiBbXSxcXG4gICAgICBkYXRhX2xpY2Vuc2U6IFtdLFxcbiAgICAgIGNvdW50cnk6IFtdLFxcbiAgICAgIGNvbXBsZXRlbmVzczogJycsXFxuICAgICAgcmVnaXN0cmF0aW9uX3R5cGU6ICcnLFxcbiAgICAgIHN0YXJ0X2RhdGU6ICcnLFxcbiAgICAgIGVuZF9kYXRlOiAnJyxcXG4gICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcXG4gICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxuICAgIH0pO1xcbiAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSByZWYoZmFsc2UpO1xcbiAgICBjb25zdCB0b3RhbE9yZ2FuaXNhdGlvbiA9IHJlZigwKTtcXG4gICAgbGV0IHJlZ2lzdHJ5QXBpS2V5U3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGxldCBkZWZhdWx0VmFsdWVTdGF0dXM6IGJvb2xlYW5bXSA9IHJlYWN0aXZlKFtdKTtcXG4gICAgY29uc3Qgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9IHJlZihmYWxzZSk7XFxuICAgIGxldCBkcm9wZG93blJhbmdlID0ge1xcbiAgICAgIGNyZWF0ZWRfYXQ6ICdSZWdpc3RlcmVkIGRhdGUgcmFuZ2UnLFxcbiAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlIHJhbmdlJyxcXG4gICAgfTtcXG4gICAgY29uc3Qgc29ydFBhcmFtcyA9IHJlZih7IG9yZGVyQnk6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xcblxcbiAgICBjb25zdCB7IGlnbm9yZVVwZGF0ZXMgfSA9IHdhdGNoSWdub3JhYmxlKGZpbHRlciwgKCkgPT4gdW5kZWZpbmVkKTtcXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSxcXG4gICAgICAodmFsdWUpID0+IHtcXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMTgwJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0wJztcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICk7XFxuXFxuICAgIGNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGNsb3NlUHVibGlzaGVyTW9kZWwgPSAoKSA9PiB7XFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9IGZhbHNlO1xcbiAgICB9O1xcbiAgICBjb25zdCBnZW5lcmF0ZUxhYmVsID0gKGxhYmVsKSA9PiB7XFxuICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG4gICAgfTtcXG5cXG4gICAgLy9saWZlY3ljbGVcXG4gICAgb25Nb3VudGVkKCgpID0+IHtcXG4gICAgICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcblxcbiAgICAgIGlmIChmaWx0ZXJQYXJhbXMpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XFxuXFxuICAgICAgICAgIGlmIChbJ3B1Ymxpc2hlcl90eXBlJywgJ2RhdGFfbGljZW5zZScsICdjb3VudHJ5J10uaW5jbHVkZXMoa2V5KSkge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xcbiAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XFxuICAgIH0pO1xcblxcbiAgICBjb25zdCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gKCkgPT4ge1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgICAgIGlmIChxdWVyeVN0cmluZykge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xcblxcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nPy5zcGxpdCgnJicpO1xcblxcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XFxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKTtcXG4gICAgICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xcbiAgICAgIH1cXG5cXG4gICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBGZXRjaGluZyBvcmdhbml6YXRpb24gbGlzdFxcbiAgICAgKlxcbiAgICAgKi9cXG4gICAgY29uc3QgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbiAgICBjb25zdCBmZXRjaE9yZ2FuaXNhdGlvbiA9IChhY3RpdmVfcGFnZSA9IDEpID0+IHtcXG4gICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmZXRjaGluZyc7XFxuICAgICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XFxuICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcbiAgICAgIH1cXG5cXG4gICAgICBhY3RpdmVfcGFnZSA9IGFjdGl2ZV9wYWdlID8/IDE7XFxuICAgICAgbGV0IGVuZHBvaW50ID0gYC9saXN0LW9yZ2FuaXNhdGlvbnMvcGFnZS8ke2FjdGl2ZV9wYWdlfSR7cXVlcnlTdHJpbmd9YDtcXG5cXG4gICAgICBpZiAoc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KSB7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdvcmRlckJ5Jywgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KTtcXG4gICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKTtcXG4gICAgICB9XFxuXFxuICAgICAgaWYgKFxcbiAgICAgICAgaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XFxuICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICApIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgPz8gJyZxPSc7XFxuICAgICAgICBlbmRwb2ludCA9IHF1ZXJ5U3RyaW5nICE9PSAnJyA/IGVuZHBvaW50IDogYCR7ZW5kcG9pbnR9YDtcXG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVyS2V5IGluIGZpbHRlcikge1xcbiAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcktleV0gJiYgZmlsdGVyW2ZpbHRlcktleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoZmlsdGVyS2V5LCBmaWx0ZXJbZmlsdGVyS2V5XSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgYXhpb3NcXG4gICAgICAgIC5nZXQoZW5kcG9pbnQsIHtcXG4gICAgICAgICAgcGFyYW1zOlxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKVxcbiAgICAgICAgICAgICAgPyB1cmxQYXJhbXNcXG4gICAgICAgICAgICAgIDogJycsXFxuICAgICAgICB9KVxcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbi52YWx1ZSA9IHJlc3BvbnNlLmRhdGE/LnRvdGFsO1xcblxcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdlbXB0eSc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcXG5cXG4gICAgICAgICAgICAgIHJlZnJlc2hTdGF0dXNBcnJheXMob3JnYW5pc2F0aW9uRGF0YS5kYXRhKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgfTtcXG5cXG4gICAgLyoqXFxuICAgICAqIFByb3h5IFVzZXJcXG4gICAgICovXFxuICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXFxuICAgIGNvbnN0IHByb3h5VXNlciA9IChpZDogbnVtYmVyKSA9PiB7XFxuICAgICAgbG9hZGVyLnN0YXR1cyA9IHRydWU7XFxuICAgICAgbG9hZGVyLnRleHQgPSAnUHJveHkgTG9naW4nO1xcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gYC9wcm94eS1vcmdhbmlzYXRpb24vJHtpZH1gO1xcblxcbiAgICAgIGF4aW9zLmdldChlbmRwb2ludCkudGhlbigocmVzKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcblxcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMnKTtcXG4gICAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJyk7XFxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcXG4gICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcXG5cXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XFxuICAgICAgICAgIH0sIDEwMDApO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IGZhbHNlO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XFxuICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfTtcXG5cXG4gICAgLyoqXFxuICAgICAqIFNvcnRpbmcgQnkgdXBkYXRlIG9uXFxuICAgICAqL1xcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgIGxldCBxdWVyeSA9ICcnLFxcbiAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2Rlc2NlbmRpbmcnLFxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgICBzb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xcblxcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XFxuXFxuICAgIGxldCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgbGV0IG9yZGVyVHlwZSA9IHJlZignJyk7XFxuICAgIG9yZGVyVHlwZS52YWx1ZSA9IHVybFBhcmFtcy5nZXQoJ29yZGVyQnknKSA/PyAnJztcXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICBsZXQgcmFuZ2UgPSAnJztcXG5cXG4gICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNvcnRCeSA9IGFzeW5jIChvcmRlcikgPT4ge1xcbiAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPVxcbiAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcblxcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5ID0gdXJsUGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgICAgICAgc29ydERpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gICAgICAgIGxldCBzdGFydERhdGUgPSB1cmxQYXJhbXMuZ2V0KCdzdGFydF9kYXRlJykgPz8gZmFsc2U7XFxuICAgICAgICBsZXQgZW5kRGF0ZSA9IHVybFBhcmFtcy5nZXQoJ2VuZF9kYXRlJykgPz8gZmFsc2U7XFxuXFxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcXG4gICAgICAgICAgcmFuZ2UgPSBgJnN0YXJ0X2RhdGU9JHtzdGFydERhdGV9JmVuZF9kYXRlPSR7ZW5kRGF0ZX1gO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICBhd2FpdCBmZXRjaE9yZ2FuaXNhdGlvbigxKTtcXG4gICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG5cXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gW1xcbiAgICAgICAgZmlsdGVyLmNvdW50cnksXFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzLFxcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlLFxcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLFxcbiAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSxcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmVuZF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSxcXG4gICAgICBdLFxcbiAgICAgICgpID0+IHtcXG4gICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XFxuICAgICAgfSxcXG4gICAgICB7IGRlZXA6IHRydWUgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCByZXNldEFsbEZpbHRlcnMgPSAoKSA9PiB7XFxuICAgICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgICAgICBmaWx0ZXIuY291bnRyeSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XFxuICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlID0gW107XFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzID0gJyc7XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XFxuICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgICAgfSk7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgZmlsdGVyLmNvdW50cnkubGVuZ3RoICtcXG4gICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXFxuICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoICE9XFxuICAgICAgICAgIDAgfHxcXG4gICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgIT09ICcnIHx8XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XFxuICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgIT09ICcnICYmIGZpbHRlci5lbmRfZGF0ZSAhPT0gJycpXFxuICAgICAgKTtcXG4gICAgfSk7XFxuXFxuICAgIGNvbnN0IHJlZnJlc2hTdGF0dXNBcnJheXMgPSAob3JnRGF0YSkgPT4ge1xcbiAgICAgIGZvciAobGV0IG9yZ0RhdHVtIG9mIG9yZ0RhdGEuZGF0YSkge1xcbiAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbb3JnRGF0dW0uaWRdID1cXG4gICAgICAgICAgb3JnRGF0dW0/LnNldHRpbmdzPy5wdWJsaXNoaW5nX2luZm8/LnRva2VuX3ZlcmlmaWNhdGlvbiA/PyBmYWxzZTtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tvcmdEYXR1bS5pZF0gPSBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkKFxcbiAgICAgICAgICBvcmdEYXR1bSA/IG9yZ0RhdHVtLnNldHRpbmdzIDogZmFsc2VcXG4gICAgICAgICk7XFxuICAgICAgfVxcbiAgICB9O1xcblxcbiAgICBjb25zdCBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkID0gKHNldHRpbmdzKSA9PiB7XFxuICAgICAgaWYgKHNldHRpbmdzKSB7XFxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmRlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgbGV0IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgcmV0dXJuICEhKFxcbiAgICAgICAgICAoZGVmYXVsdFZhbHVlcz8uZGVmYXVsdF9jdXJyZW5jeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGRlZmF1bHRWYWx1ZXM/LmRlZmF1bHRfbGFuZ3VhZ2UgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/LmhpZXJhcmNoeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uYnVkZ2V0X25vdF9wcm92aWRlZCA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IG51bGwgfHxcXG4gICAgICAgICAgICBhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSAnJyB8fFxcbiAgICAgICAgICAgIGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IGZhbHNlKVxcbiAgICAgICAgKTtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlRmlsdGVyID0gJycpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZUZpbHRlcjtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0RGF0ZVR5cGUgPSAoZGF0ZVR5cGUpID0+IHtcXG4gICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHJvdGF0ZUNsYXNzID0gcmVmKCcnKTtcXG5cXG4gICAgY29uc3QgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gKGV2ZW50KSA9PiB7XFxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgY29uc3QgcmVjdCA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcXG4gICAgICBtdWx0aXNlbGVjdFN0eWxlLnZhbHVlID0ge1xcbiAgICAgICAgdG9wOiBOdW1iZXIocmVjdC50b3ApIDwgMTAwID8gMjEwICsgJ3B4JyA6IE51bWJlcihyZWN0LnRvcCkgKyA1MCArICdweCcsXFxuICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXFxuICAgICAgfTtcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gIXNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldFNlbGVjdGVkUHVibGlzaGVyID0gKHB1Ymxpc2hlclR5cGVzKSA9PiB7XFxuICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gcHVibGlzaGVyVHlwZXM7XFxuICAgIH07XFxuXFxuICAgIC8qXFxuICAgICAqIEZvciBtYXBwaW5nIGNvdW50cnksIHB1Ymxpc2hlcl90eXBlIGFuZCBkYXRhIGxpY2Vuc2VcXG4gICAgICovXFxuICAgIGNvbnN0IHNob3dNYXBwZWREYXRhID0gKGtleSwgZGF0YSwgbWFwKSA9PiB7XFxuICAgICAgaWYgKGRhdGEpIHtcXG4gICAgICAgIGlmIChrZXkgPT0gJ2RhdGFfbGljZW5zZScpIHtcXG4gICAgICAgICAgbGV0IGxpY2Vuc2UgPSBkYXRhW2tleV07XFxuICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlPy50cmltKCk7XFxuICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogJ05vdCBhdmFpbGFibGUnO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgcmV0dXJuIGRhdGFba2V5XSA/IG1hcFtkYXRhW2tleV1dIDogJ05vdCBhdmFpbGFibGUnO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gJ05vdCBhdmFpbGFibGUnO1xcbiAgICB9O1xcblxcbiAgICByZXR1cm4ge1xcbiAgICAgIEJ0bkNvbXBvbmVudCxcXG4gICAgICBNdWx0aXNlbGVjdCxcXG4gICAgICBEYXRlUmFuZ2VXaWRnZXQsXFxuICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIG9yZ2FuaXNhdGlvbkRhdGEsXFxuICAgICAgZHJvcGRvd25SYW5nZSxcXG4gICAgICBzZXRTZWxlY3RlZFB1Ymxpc2hlcixcXG4gICAgICB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXFxuICAgICAgc2V0RGF0ZVR5cGUsXFxuICAgICAgc2V0RGF0ZVJhbmdlRGF0ZSxcXG4gICAgICBzb3J0QnksXFxuICAgICAgcmVzZXRBbGxGaWx0ZXJzLFxcbiAgICAgIHNvcnRpbmdEaXJlY3Rpb24sXFxuICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb24sXFxuICAgICAgcHJveHlVc2VyLFxcbiAgICAgIGRhdGVGb3JtYXQsXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24sXFxuICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzLFxcbiAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzLFxcbiAgICAgIG9yZGVyVHlwZSxcXG4gICAgICBjbGVhckRhdGUsXFxuICAgICAgZmlsdGVyLFxcbiAgICAgIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxcbiAgICAgIGlzRmlsdGVyQXBwbGllZCxcXG4gICAgICBwcm9wcyxcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIGRhdGVUeXBlLFxcbiAgICAgIHJvdGF0ZUNsYXNzLFxcbiAgICAgIG11bHRpc2VsZWN0U3R5bGUsXFxuICAgICAgY2xlYXJEYXRlRmlsdGVyLFxcbiAgICAgIGRhdGVEcm9wZG93bixcXG4gICAgICBzb3J0UGFyYW1zLFxcbiAgICAgIHJlc2V0UGFnaW5hdGlvbixcXG4gICAgICBzaG93TWFwcGVkRGF0YSxcXG4gICAgICB0b3RhbE9yZ2FuaXNhdGlvbixcXG4gICAgICBjb3VudHJpZXNXaXRoUHJlZml4LFxcbiAgICAgIGRlbGV0ZU1vZGFsLFxcbiAgICAgIGRlbGV0ZU9yZ05hbWUsXFxuICAgICAgZGVsZXRlSWQsXFxuICAgICAgZ2VuZXJhdGVMYWJlbCxcXG4gICAgICB0b2dnbGVEZWxldGVDb25maXJtYXRpb24sXFxuICAgICAgb3BlbkRlbGV0ZU1vZGFsLFxcbiAgICAgIGRlbGV0ZU9yZyxcXG4gICAgICBtYXJrQXNTcGFtLFxcbiAgICAgIHNob3dMb2FkZXIsXFxuICAgIH07XFxuICB9LFxcbn0pO1xcbjwvc2NyaXB0PlxcblxcbjxzdHlsZT5cXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlLXdyYXBwZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNTtcXG4gIHdpZHRoOiA0MjRweDtcXG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQGtleWZyYW1lcyBzcGlubmVyLTA2MTFkOWYwIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi0wNjExZDlmMF06OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItMDYxMWQ5ZjA7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluW2RhdGEtdi0wNjExZDlmMF0ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTZzQ0E7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFFQTtFQUNFLGdEQUF1QztFQUN2Qyw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxxQ0FBcUM7RUFDckMsV0FBVztFQUNYLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcInB4LTYgcHktNCBtZDpweC0xMFxcXCI+XFxuICAgIDxMb2FkZXIgdi1pZj1cXFwiaXNMb2FkZXJWaXNpYmxlXFxcIiAvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJteS00IGZsZXgganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8aDQgY2xhc3M9XFxcIm1yLTQgdGV4dC0zeGwgZm9udC1ib2xkIHhsOnRleHQtaGVhZGluZy00XFxcIj5Vc2VyczwvaDQ+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktZW5kIGdhcC0yIG1kOmZsZXgtcm93XFxcIj5cXG4gICAgICAgIDxUb2FzdFxcbiAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSAmJlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlICYmXFxuICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgIT09ICcnXFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgOm1lc3NhZ2U9XFxcInRvYXN0RGF0YS5tZXNzYWdlXFxcIlxcbiAgICAgICAgICA6dHlwZT1cXFwidG9hc3REYXRhLnR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICB2LWlmPVxcXCJ1c2Vyc0RhdGFbJ3RvdGFsJ10gPiAwXFxcIlxcbiAgICAgICAgICByZWY9XFxcImRyb3Bkb3duQnRuXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiYnV0dG9uIHNlY29uZGFyeS1idG4gd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImRvd25sb2FkQWxsXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJkb3dubG9hZC1maWxlXFxcIiAvPlxcbiAgICAgICAgICB7eyBjaGVja2xpc3QubGVuZ3RoID09PSAwID8gJ0Rvd25sb2FkIEFsbCcgOiAnJyB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlXFxcIiBpY29uPVxcXCJwbHVzLW91dGxpbmVkXFxcIiAvPiBBZGQgYSBuZXdcXG4gICAgICAgICAge3sgdXNlclJvbGUgPT09ICdhZG1pbicgPyAndXNlcicgOiAnaWF0aSBhZG1pbicgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdj5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwiYWRkVXNlckZvcm0gfHwgZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJwb3B1cC1tb2RlbFxcXCJcXG4gICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiPlxcbiAgICAgICAgICAgIHt7IGFkZFVzZXJGb3JtID8gJ0FkZCBhIG5ldyAnIDogJ0VkaXQgJyB9fVxcbiAgICAgICAgICAgIHt7IHVzZXJSb2xlID09PSAnYWRtaW4nID8gJ3VzZXInIDogJ0lBVEkgQWRtaW4nIH19XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIGdhcC02XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc3Bhbi0yIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPkZ1bGwgTmFtZTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImZ1bGxfbmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEuZnVsbF9uYW1lXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZnVsbF9uYW1lJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZnVsbF9uYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydmdWxsX25hbWUnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+VXNlcm5hbWU8c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKjwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInVzZXJuYW1lXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS51c2VybmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3VzZXJuYW1lJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsndXNlcm5hbWUnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3VzZXJuYW1lJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPkVtYWlsPHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiZW1haWxcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLmVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZW1haWwnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZW1haWwnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtaWY9XFxcImFkZFVzZXJGb3JtXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJmb3JtRXJyb3JbJ3N0YXR1cyddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPlN0YXR1czxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEuc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VsZWN0IHN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydzdGF0dXMnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3N0YXR1cyddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSA9PT0gJ2FkbWluJ1xcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwiZm9ybUVycm9yWydyb2xlX2lkJ10gJiYgJ2Vycm9yX19tdWx0aXNlbGVjdCdcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+Um9sZTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInJvbGVcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnJvbGVfaWRcXFwiXFxuICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJyb2xlc1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCB1c2VyIHJvbGVcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsncm9sZV9pZCddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncm9sZV9pZCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5OZXcgcGFzc3dvcmQ8c3BhbiB2LWlmPVxcXCIhZWRpdFVzZXJGb3JtXFxcIiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5wYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3Bhc3N3b3JkJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5Db25maXJtIFBhc3N3b3JkPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCIhZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuXFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkLWNvbmZpcm1hdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICBlZGl0VXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIENhbmNlbFxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImFkZFVzZXJGb3JtID8gY3JlYXRlVXNlcigpIDogdXBkYXRlVXNlcigpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIFNhdmVcXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImRlbGV0ZU1vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgPGI+RGVsZXRlIHVzZXI8L2I+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLXJvc2UgcC00XFxcIj5cXG4gICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA8Yj4ge3sgZGVsZXRlVXNlcm5hbWUgfX08L2JcXG4gICAgICAgICAgPj9cXG4gICAgICAgIDwvcD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTYgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcInNlY29uZGFyeS1idG4gZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgQ2FuY2VsXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiIEBjbGljaz1cXFwiZGVsZXRlVXNlcihkZWxldGVJZClcXFwiPlxcbiAgICAgICAgICAgIERlbGV0ZVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwic3RhdHVzTW9kYWxcXFwiXFxuICAgICAgICBAY2xvc2U9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInRpdGxlIG1iLTYgZmxleFxcXCI+XFxuICAgICAgICAgIDxiPk1ha2UgdXNlciB7eyBzdGF0dXNWYWx1ZSA/ICdJbmFjdGl2ZScgOiAnQWN0aXZlJyB9fTwvYj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInJvdW5kZWQtbGcgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbWFrZSA8Yj4ge3sgc3RhdHVzVXNlcm5hbWUgfX08L2I+XFxuICAgICAgICAgIHt7IHN0YXR1c1ZhbHVlID8gJ0luYWN0aXZlJyA6ICdBY3RpdmUnIH19ID9cXG4gICAgICAgIDwvcD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTYgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcInNlY29uZGFyeS1idG4gZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN0YXR1c01vZGFsID0gZmFsc2U7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgQ2FuY2VsXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuICFweC0xMFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVVzZXJTdGF0dXMoc3RhdHVzSWQpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgWWVzXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9Qb3B1cE1vZGFsPlxcblxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZpbHRlcnMgbWItNCBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwic2VsZWN0IGZpbHRlcnMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ3LTEwIHRleHQtbGdcXFwiIGljb249XFxcImZ1bm5lbFxcXCIgLz5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSA9PT0gJ3N1cGVyYWRtaW4nIHx8IHVzZXJSb2xlID09PSAnaWF0aV9hZG1pbidcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdvcmdhbmlzYXRpb24nKVxcXCJcXG4gICAgICAgICAgICA+PE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwib3JnYW5pemF0aW9uLWZpbHRlclxcXCJcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5vcmdhbml6YXRpb25cXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwib3JnYW5pemF0aW9uc1xcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJPUkdBTklTQVRJT05cXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIGxhYmVsPVxcXCJuYW1lXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3JvbGUnKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcInJvbGUtZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlJPTEVcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGggPiAwXFxcIiBjbGFzcz1cXFwic3RhdHVzXFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gcGxhY2Vob2xkZXIgLS0+XFxuICAgICAgICAgICAgICA8IS0tIHJvbGUgLS0+XFxuICAgICAgICAgICAgPC9zcGFuPjwvc3BhblxcbiAgICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdzdGF0dXMnKVxcXCJcXG4gICAgICAgICAgICA+PE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwic3RhdHVzLWZpbHRlclxcXCJcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNUQVRVU1xcXCJcXG4gICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGgtWzM4cHhdIHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTMgc3BhY2UteC0yIHB4LTQgMnhsOnctYXV0b1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgPERhdGVSYW5nZVdpZGdldFxcbiAgICAgICAgICAgICAgOmRyb3Bkb3duLXJhbmdlPVxcXCJkcm9wZG93blJhbmdlXFxcIlxcbiAgICAgICAgICAgICAgOmZpcnN0LWRhdGU9XFxcIm9sZGVzdERhdGVzXFxcIlxcbiAgICAgICAgICAgICAgOmNsZWFyLWRhdGU9XFxcImNsZWFyRGF0ZVxcXCJcXG4gICAgICAgICAgICAgIDpzdGFydGluZy1kYXRlPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZVxcXCJcXG4gICAgICAgICAgICAgIDpkYXRlLW5hbWU9XFxcImRhdGVUeXBlXFxcIlxcbiAgICAgICAgICAgICAgOmVuZGluZy1kYXRlPVxcXCJmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS1yYW5nZT1cXFwic2V0RGF0ZVJhbmdlRGF0ZVxcXCJcXG4gICAgICAgICAgICAgIEB0cmlnZ2VyLXNldC1kYXRlLXR5cGU9XFxcInNldERhdGVUeXBlXFxcIlxcbiAgICAgICAgICAgICAgQGRhdGUtY2xlYXJlZD1cXFwiY2xlYXJEYXRlID0gZmFsc2VcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJvcGVuLXRleHQgaC1bMzhweF1cXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgbGVmdC0yIHRvcC0xLzIgdy0xMCAtdHJhbnNsYXRlLXktMS8yIHRleHQtYmFzZVxcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcIm1hZ25pZnlpbmctZ2xhc3NcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5xXFxcIlxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWFyY2ggZm9yIHVzZXJzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdlxcbiAgICAgICAgdi1pZj1cXFwiaXNGaWx0ZXJBcHBsaWVkXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1iLTQgZmxleCBtYXgtdy1mdWxsIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDBcXFwiPmZpbHRlcmVkIGJ5OiA8L3NwYW4+XFxuXFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aFxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPk9yZzo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICA+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ29yZycpIH19PC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5yb2xlc1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5Sb2xlczo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3JvbGVzJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucm9sZXMuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIuc3RhdHVzLmxlbmd0aFxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5TdGF0dXM6PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdzdGF0dXMnKSB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyA9ICcnO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLnN0YXJ0X2RhdGUgJiYgZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPkRhdGU6PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuPnt7XFxuICAgICAgICAgICAgICB0ZXh0QnViYmxlZGF0YShcXG4gICAgICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyLFxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXJcXG4gICAgICAgICAgICAgIClcXG4gICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgY2xlYXJEYXRlRmlsdGVyKCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIGNsYXNzPVxcXCJmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGNsZWFyRmlsdGVyKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICBcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIENsZWFyIEZpbHRlclxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPHAgY2xhc3M9XFxcInB5LTFcXFwiPlRvdGFsIE51bWJlciBvZiBVc2Vyczoge3sgdG90YWxVc2VyIH19PC9wPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSB1c2VyLWxpc3QtdGFibGUgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIDx0YWJsZT5cXG4gICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnZGVzYycgJiZcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICd1c2VybmFtZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgndXNlcm5hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3VzZXJuYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgICAgICAgICA8c3Bhbj5Vc2Vyczwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwibWVhc3VyZVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAyMTBweFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkVtYWlsPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG5cXG4gICAgICAgICAgICAgIDx0aCB2LWlmPVxcXCJpc1N1cGVyYWRtaW5cXFwiIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAncHVibGlzaGVyX25hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3B1Ymxpc2hlcl9uYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+T3JnYW5pc2F0aW9uIG5hbWU8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuXFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+VXNlciBSb2xlPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aD5cXG4gICAgICAgICAgICAgICAgPHNwYW4+U3RhdHVzPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWdncmVnYXRpb25fc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIyMDhweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICdjcmVhdGVkX2F0J1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ2NyZWF0ZWRfYXQnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIndoaXRlc3BhY2Utbm93cmFwXFxcIj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgICAgICAgIGlkPVxcXCJhY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIxOTBweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4+QWN0aW9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdGFsbFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgICA8dGJvZHkgdi1pZj1cXFwidXNlcnNEYXRhPy5kYXRhLmxlbmd0aCA+IDAgfHwgZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgIDx0ciB2LWlmPVxcXCJmZXRjaGluZ1RhYmxlRGF0YVxcXCI+XFxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmV0Y2hpbmcgRGF0YS4uLjwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICA8dHIgdi1mb3I9XFxcIih1c2VyLCBpbmRleCkgaW4gdXNlcnNEYXRhPy5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiaW5kZXhcXFwiPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gY2FwaXRhbGl6ZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnZnVsbF9uYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ3VzZXJuYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiZmxleCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibXMtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0xIGN1cnNvci1wb2ludGVyIHRleHQtYmFzZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsnZW1haWxfdmVyaWZpZWRfYXQnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2stb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhbGVydC1vdXRsaW5lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIi4uLiB0cnVuY2F0ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgdXNlclsnZW1haWwnXSB9fVxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIHYtaWY9XFxcImlzU3VwZXJhZG1pblxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInctMzIgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHJvbGVzW3VzZXJbJ3JvbGVfaWQnXV0gfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICd0ZXh0LXNwcmluZy01MCcgOiAndGV4dC1uLTQwJ1xcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHVzZXJbJ3N0YXR1cyddID8gJ0FjdGl2ZScgOiAnSW5hY3RpdmUnIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ2xhc3RfbG9nZ2VkX2luJ11cXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZSh1c2VyWydsYXN0X2xvZ2dlZF9pbiddKVxcbiAgICAgICAgICAgICAgICAgICAgOiAnTm90IGF2YWlsYWJsZSdcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgIT09ICdnZW5lcmFsX3VzZXInXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHNwYWNlLXgtNlxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgdi1pZj1cXFwiY3VycmVudFVzZXJJZCAhPT0gdXNlclsnaWQnXVxcXCIgQGNsaWNrPVxcXCJlZGl0VXNlcih1c2VyKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJlZGl0LWFjdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwhLS0gPHAgQGNsaWNrPVxcXCJkZWxldGVVc2VyKHVzZXJbJ2lkJ10pXFxcIj4gLS0+XFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiY3VycmVudFVzZXJJZCAhPT0gdXNlclsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcIm9wZW5EZWxldGVtb2RlbCh1c2VyKVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtaWY9XFxcImN1cnJlbnRVc2VySWQgIT09IHVzZXJbJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJvcGVuU3RhdHVzTW9kZWwodXNlcilcXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICdiZy1zcHJpbmctNTAnIDogJ2JnLW4tNDAnXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlIGJsb2NrIGgtNCB3LTcgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1mdWxsXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsnc3RhdHVzJ10gPyAndHJhbnNsYXRlLXgtMCcgOiAndHJhbnNsYXRlLXgtZnVsbCdcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgbGVmdC1bMnB4XSB0b3AtMS8yIGJsb2NrIGgtMyB3LTMgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLWZ1bGwgYmctd2hpdGUgZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcInNwYWNlLTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgIHYtaWY9XFxcImN1cnJlbnRVc2VySWQgIT09IHVzZXJbJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlIGgtNSB3LTVcXFwiXFxuICAgICAgICAgICAgICAgICAgPjxpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInVzZXItY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJ1c2VyWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHNldWRvLWNoZWNrYm94XFxcIiAvPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0aWNrZWQtc3ZnIHRleHQtc3ByaW5nLTUwXFxcIiBpY29uPVxcXCJ0aWNrZWRcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90Ym9keT5cXG4gICAgICAgICAgPHRib2R5IHYtZWxzZT5cXG4gICAgICAgICAgICA8dGQgdi1pZj1cXFwibG9hZGVyXFxcIiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwic3BpblxcXCI+PC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgdi1lbHNlIGNvbHNwYW49XFxcIjhcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+VXNlcnMgbm90IGZvdW5kPC90ZD5cXG4gICAgICAgICAgPC90Ym9keT5cXG4gICAgICAgIDwvdGFibGU+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNlxcXCI+XFxuICAgICAgICA8UGFnaW5hdGlvblxcbiAgICAgICAgICB2LWlmPVxcXCJ1c2Vyc0RhdGEgJiYgdXNlcnNEYXRhWydsYXN0X3BhZ2UnXSA+IDFcXFwiXFxuICAgICAgICAgIDpkYXRhPVxcXCJ1c2Vyc0RhdGFcXFwiXFxuICAgICAgICAgIEBmZXRjaC1hY3Rpdml0aWVzPVxcXCJmZXRjaFVzZXJzTGlzdFxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgcmVhY3RpdmUsIHJlZiwgY29tcHV0ZWQsIHdhdGNoLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnO1xcbmltcG9ydCBMb2FkZXIgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlJztcXG5pbXBvcnQgVG9hc3QgZnJvbSAnQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBQb3B1cE1vZGFsIGZyb20gJ0NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUnO1xcbmltcG9ydCBlbmNyeXB0IGZyb20gJ0NvbXBvc2FibGUvZW5jcnlwdGlvbic7XFxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJ0B2dWVmb3JtL211bHRpc2VsZWN0JztcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XFxuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlJztcXG5pbXBvcnQgeyB3YXRjaElnbm9yYWJsZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuaW1wb3J0IERhdGVSYW5nZVdpZGdldCBmcm9tICdDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWUnO1xcbmltcG9ydCB7IGdlbmVyYXRlVXNlcm5hbWUsIGtlYmFiQ2FzZVRvU25ha2VjYXNlIH0gZnJvbSAnQ29tcG9zYWJsZS91dGlscyc7XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBvcmdhbml6YXRpb25zOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHN0YXR1czogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICByb2xlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICBjdXJyZW50VXNlcklkOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHVzZXJSb2xlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG59KTtcXG5cXG5jb25zdCB0b2FzdERhdGEgPSByZWFjdGl2ZSh7XFxuICB2aXNpYmlsaXR5OiBmYWxzZSxcXG4gIG1lc3NhZ2U6ICcnLFxcbiAgdHlwZTogZmFsc2UsXFxufSk7XFxuXFxuY29uc3QgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgb3JnYW5pemF0aW9uOiBbXSxcXG4gIHJvbGVzOiBbXSxcXG4gIHN0YXR1czogJycsXFxuICBvcmRlckJ5OiAnJyxcXG4gIGRpcmVjdGlvbjogJycsXFxuICBxOiAnJyxcXG4gIHN0YXJ0X2RhdGU6ICcnLFxcbiAgZW5kX2RhdGU6ICcnLFxcbiAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxufSk7XFxuXFxuY29uc3QgaXNMb2FkZXJWaXNpYmxlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBhZGRVc2VyRm9ybSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZWRpdFVzZXJGb3JtID0gcmVmKGZhbHNlKTtcXG5jb25zdCB1c2Vyc0RhdGEgPSByZWFjdGl2ZSh7IGRhdGE6IFtdIH0pO1xcbmNvbnN0IGlzRW1wdHkgPSByZWYodHJ1ZSk7XFxuY29uc3QgYWxsU2VsZWN0ZWQgPSByZWY8Ym9vbGVhbltdPihbXSk7XFxuY29uc3QgZGVsZXRlTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGRlbGV0ZUlkID0gcmVmKCk7XFxuY29uc3QgdG90YWxVc2VyID0gcmVmKDApO1xcbmNvbnN0IHN0YXR1c0lkID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHN0YXR1c1ZhbHVlID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzVXNlcm5hbWUgPSByZWYoKTtcXG5jb25zdCBkZWxldGVVc2VybmFtZSA9IHJlZigpO1xcbmNvbnN0IGxvYWRlciA9IHJlZih0cnVlKTtcXG5jb25zdCBmZXRjaGluZ1RhYmxlRGF0YSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2VsZWN0ZWRJZHMgPSByZWYoe30pO1xcbmNvbnN0IGNoZWNrbGlzdCA9IHJlZihbXSk7XFxuY29uc3QgY3VycmVudHBhZ2VEYXRhID0gcmVmKFtdKTtcXG5jb25zdCBjbGVhckRhdGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVkaXRVc2VySWQgPSByZWYoJycpO1xcbmNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcbmNvbnN0IGlzU3VwZXJhZG1pbiA9IHJlZihmYWxzZSk7XFxuaXNTdXBlcmFkbWluLnZhbHVlID1cXG4gIHByb3BzLnVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgcHJvcHMudXNlclJvbGUgPT09ICdpYXRpX2FkbWluJztcXG5cXG5jb25zdCBkcm9wZG93blJhbmdlID0ge1xcbiAgY3JlYXRlZF9hdDogJ1VzZXIgY3JlYXRlZCBkYXRlJyxcXG4gIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlJyxcXG59O1xcblxcbmNvbnN0IGZvcm1EYXRhID0gcmVhY3RpdmUoe1xcbiAgdXNlcm5hbWU6ICcnLFxcbiAgZnVsbF9uYW1lOiAnJyxcXG4gIGVtYWlsOiAnJyxcXG4gIHN0YXR1czogJzEnLFxcbiAgcm9sZV9pZDogJycsXFxuICBwYXNzd29yZDogJycsXFxuICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxcbn0pO1xcblxcbmNvbnN0IGZvcm1FcnJvciA9IHJlYWN0aXZlKHtcXG4gIHVzZXJuYW1lOiAnJyxcXG4gIGZ1bGxfbmFtZTogJycsXFxuICBlbWFpbDogJycsXFxuICBzdGF0dXM6ICcnLFxcbiAgcm9sZV9pZDogJycsXFxuICBwYXNzd29yZDogJycsXFxuICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxcbn0pO1xcblxcbmNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24ubGVuZ3RoICsgZmlsdGVyLnJvbGVzLmxlbmd0aCAhPSAwIHx8XFxuICAgIGZpbHRlci5zdGF0dXMgIT0gJycgfHxcXG4gICAgKGZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZSlcXG4gICk7XFxufSk7XFxuXFxuY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZSh0b2FzdERhdGEsICgpID0+IHVuZGVmaW5lZCwge1xcbiAgZmx1c2g6ICdzeW5jJyxcXG59KTtcXG5cXG53YXRjaChcXG4gICgpID0+IGZvcm1EYXRhLmZ1bGxfbmFtZSxcXG4gIChmdWxsbmFtZSkgPT4ge1xcbiAgICBmb3JtRGF0YS51c2VybmFtZSA9IGdlbmVyYXRlVXNlcm5hbWUoZnVsbG5hbWUpO1xcbiAgfVxcbik7XFxuXFxud2F0Y2goXFxuICAoKSA9PiB0b2FzdERhdGEudmlzaWJpbGl0eSxcXG4gICgpID0+IHtcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcXG4gICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xcbiAgICB9LCAyMDAwKTtcXG4gIH1cXG4pO1xcblxcbmNvbnN0IGlnbm9yZVRvYXN0VXBkYXRlID0gKCkgPT4ge1xcbiAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XFxuICB9KTtcXG59O1xcblxcbmNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcXG59O1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcbiAgaWYgKGZpbHRlclBhcmFtcykge1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgIGxldCB2YWx1ZSA9IGZpbHRlclBhcmFtc1tpXVsxXTtcXG4gICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XFxuICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufSk7XFxuY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgaWYgKHF1ZXJ5U3RyaW5nKSB7XFxuICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmc/LnNwbGl0KCcmJyk7XFxuXFxuICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBxdWVyeVBhcmFtc1tpXS5zcGxpdCgnPScpO1xcbiAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XFxuICB9XFxuXFxuICByZXR1cm4gZmFsc2U7XFxufTtcXG5cXG5vbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xcbiAgYXhpb3MuZ2V0KGAvdXNlcnMvcGFnZS8xYCkudGhlbigocmVzKSA9PiB7XFxuICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxcbiAgICAgICAgLnNwbGl0KCdfJylcXG4gICAgICAgIC5qb2luKCcgJyk7XFxuICAgIH1cXG4gICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xcbiAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcXG4gICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XFxuICB9KTtcXG5cXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xcbiAgfSwgNTAwMCk7XFxufSk7XFxuXFxuY29uc3QgdGV4dEJ1YmJsZWRhdGEgPSAoaWQsIGZpZWxkKSA9PiB7XFxuICBzd2l0Y2ggKGZpZWxkKSB7XFxuICAgIGNhc2UgJ29yZyc6XFxuICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcXG4gICAgY2FzZSAncm9sZXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xcbiAgICBjYXNlICdzdGF0dXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcXG4gICAgZGVmYXVsdDpcXG4gICAgICByZXR1cm4gZmllbGQ7XFxuICB9XFxufTtcXG5cXG5jb25zdCBjbGVhckZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcXG4gIGZpbHRlci5yb2xlcyA9IFtdO1xcbiAgZmlsdGVyLnN0YXR1cyA9ICcnO1xcbiAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xcbiAgZmlsdGVyLm9yZGVyQnkgPSAnJztcXG4gIGZpbHRlci5xID0gJyc7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XFxufTtcXG5cXG5jb25zdCBjbGVhckRhdGVSYW5nZUZpbHRlciA9ICgpID0+IHtcXG4gIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XFxuICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XFxufTtcXG5jb25zdCBzZXREYXRlVHlwZSA9IChkYXRlVHlwZSkgPT4ge1xcbiAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xcbn07XFxuXFxuY29uc3QgY3JlYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucG9zdCgnL3VzZXInLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBjbGVhckZpbHRlcigpO1xcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XFxuICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XFxuICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcblxcbmNvbnN0IGVkaXRVc2VyID0gKHVzZXIpID0+IHtcXG4gIGZvcm1EYXRhLnVzZXJuYW1lID0gdXNlci51c2VybmFtZTtcXG4gIGZvcm1EYXRhLmZ1bGxfbmFtZSA9IHVzZXIuZnVsbF9uYW1lO1xcbiAgZm9ybURhdGEuZW1haWwgPSB1c2VyLmVtYWlsO1xcbiAgZm9ybURhdGEucm9sZV9pZCA9IHVzZXIucm9sZV9pZDtcXG4gIGVkaXRVc2VySWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZWRpdFVzZXJGb3JtLnZhbHVlID0gdHJ1ZTtcXG59O1xcblxcbmNvbnN0IGVtcHR5Rm9ybURhdGEgPSAoKSA9PiB7XFxuICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRGF0YSkge1xcbiAgICBmb3JtRGF0YVtrZXldID0ga2V5ID09PSAnc3RhdHVzJyA/IDEgOiAnJztcXG4gIH1cXG59O1xcbmNvbnN0IHNldEZvcm1FcnJvciA9IChlcnJvcnMgPSB7fSkgPT4ge1xcbiAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gZXJyb3JzW2tleV07XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1FcnJvcikge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XFxuICAgIH1cXG4gIH1cXG59O1xcblxcbmNvbnN0IG9wZW5TdGF0dXNNb2RlbCA9ICh1c2VyKSA9PiB7XFxuICBzdGF0dXNJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBzdGF0dXNWYWx1ZS52YWx1ZSA9IHVzZXIuc3RhdHVzO1xcbiAgc3RhdHVzTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgc3RhdHVzVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuY29uc3QgdXBkYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucGF0Y2goYC91c2VyLyR7ZWRpdFVzZXJJZC52YWx1ZX1gLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBlZGl0VXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuXFxud2F0Y2goXFxuICAoKSA9PiBbXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24sXFxuICAgIGZpbHRlci5yb2xlcyxcXG4gICAgZmlsdGVyLnEsXFxuICAgIGZpbHRlci5zdGF0dXMsXFxuICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICBmaWx0ZXIuZW5kX2RhdGUsXFxuICAgIGZpbHRlci5kYXRlX3R5cGUsXFxuICBdLFxcbiAgKCkgPT4ge1xcbiAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcXG4gIH0sXFxuICB7IGRlZXA6IHRydWUgfVxcbik7XFxuXFxuZnVuY3Rpb24gZmV0Y2hVc2Vyc0xpc3QoYWN0aXZlX3BhZ2U6IG51bWJlciwgZmlsdGVyZWQgPSBmYWxzZSkge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9wYWdlLyR7ZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZX1gO1xcbiAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG5cXG4gIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xcbiAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgYXhpb3NcXG4gICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XFxuICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XFxuICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn1cXG5cXG5jb25zdCBvcGVuRGVsZXRlbW9kZWwgPSAodXNlcikgPT4ge1xcbiAgZGVsZXRlTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgZGVsZXRlSWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZGVsZXRlVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuZnVuY3Rpb24gZGVsZXRlVXNlcihpZDogbnVtYmVyKSB7XFxuICBkZWxldGVNb2RhbC52YWx1ZSA9IGZhbHNlO1xcbiAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcblxcbiAgYXhpb3MuZGVsZXRlKGAvdXNlci8ke2lkfWApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICB9XFxuXFxuICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgIH1cXG4gIH0pO1xcbn1cXG5cXG5jb25zdCBzb3J0ID0gKHBhcmFtKSA9PiB7XFxuICBmaWx0ZXIuZGlyZWN0aW9uID1cXG4gICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XFxuICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xcblxcbiAgZmV0Y2hVc2Vyc0xpc3QoMSk7XFxufTtcXG5cXG5mdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkOiBudW1iZXIpIHtcXG4gIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xcblxcbiAgYXhpb3NcXG4gICAgLnBhdGNoKGAvdXNlci9zdGF0dXMvJHtpZH1gKVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcXG4gICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG5cXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCgnTEwnKTtcXG59XFxuXFxuY29uc3QgdG9nZ2xlU2VsZWN0YWxsID0gKCkgPT4ge1xcbiAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKCh2YWx1ZSkgPT4ge1xcbiAgICByZXR1cm4gdmFsdWVbJ2lkJ107XFxuICB9KTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcXG4gICAgaWYgKCFjaGVja2xpc3QudmFsdWUuaW5jbHVkZXModXNlcnNEYXRhLmRhdGFbaV1bJ2lkJ10pKVxcbiAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcXG4gIH1cXG4gIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xcbiAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XFxuICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoXFxuICAgICAgKG4pID0+ICFPYmplY3QudmFsdWVzKGN1cnJlbnRwYWdlRGF0YS52YWx1ZSkuaW5jbHVkZXMobilcXG4gICAgKTtcXG4gIH1cXG4gIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgIHJldHVybiBlbCAhPSBudWxsO1xcbiAgfSk7XFxuICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XFxuICAgICFhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXTtcXG59O1xcbndhdGNoKFxcbiAgKCkgPT4gY2hlY2tsaXN0LnZhbHVlLFxcbiAgKCkgPT4ge1xcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xcblxcbiAgICBjdXJyZW50cGFnZURhdGEudmFsdWUgPSB1c2Vyc0RhdGEuZGF0YS5tYXAoKHZhbHVlKSA9PiB7XFxuICAgICAgcmV0dXJuIHZhbHVlWydpZCddO1xcbiAgICB9KTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcXG4gICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcXG4gICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IHNlbGVjdGVkSWRzLnZhbHVlW1xcbiAgICAgIHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11cXG4gICAgXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgICAgcmV0dXJuIGVsICE9IG51bGw7XFxuICAgIH0pO1xcbiAgfVxcbik7XFxuXFxuY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG59O1xcblxcbmNvbnN0IGRvd25sb2FkQWxsID0gKCkgPT4ge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9kb3dubG9hZC9gO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG4gIGxldCBhbGxQYWdlU2VsZWN0ZWQ7XFxuICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XFxuXFxuICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XFxuICAgIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIHBhcmFtcy5hcHBlbmQoJ3VzZXJzJywgYWxsUGFnZVNlbGVjdGVkKTtcXG4gIH1cXG5cXG4gIGF4aW9zLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XFxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXFxuICAgIH0pO1xcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcXG4gICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XFxuICAgIGxpbmsuZG93bmxvYWQgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLnNwbGl0KCc9JylbMV07XFxuICAgIGxpbmsuY2xpY2soKTtcXG4gIH0pO1xcbn07XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG5Aa2V5ZnJhbWVzIHNwaW5uZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbjo6YmVmb3JlIHtcXG4gIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW4ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjdGl2aXR5X19oZWFkZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2IGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdiB1bFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuLmFjdGl2aXR5X19oZWFkZXIgLmFkZC1idG5bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciAudXNlci1uYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnRvYXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgei1pbmRleDogNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuLnRvYXN0LWVycm9yW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDEuMjVyZW07XFxuICB0b3A6IDEuMjVyZW07XFxuICB6LWluZGV4OiA1MDtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDAuNzVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHJpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB3aWR0aDogMjIwcHg7XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpIC51c2VyLXByb2ZpbGVbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBmb250LXNpemU6IDI2cHg7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0IGFbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAyLjVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwYWRkaW5nOiAwLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBwYWRkaW5nOiAxcmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSAudXNlci1wcm9maWxlW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZm9udC1zaXplOiAyNnB4O1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdCBhW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIgLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0sIFxcbi5kcm9wZG93bi1idG46YWN0aXZlIC5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyIC5kcm9wZG93bl9fYXJyb3dbZGF0YS12LTZmZTU5MDU1XSxcXG4uZHJvcGRvd24tYnRuOmFjdGl2ZSAuZHJvcGRvd25fX2Fycm93W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLmFkZC1pbXBvcnRbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLmFkZC1pbXBvcnQ6aG92ZXIgLmFkZC1pbXBvcnQtZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcbi5zcGlubmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDEuNzVyZW07XFxuICB0b3A6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi02ZmU1OTA1NSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBhbmltYXRpb246IHNwaW4tNmZlNTkwNTUgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAwLjA1O1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLFFBQUE7RUFDQSxZQUFBO0FBQUY7QUFFRTtFQUNFLGFBQUE7QUFBSjtBQUdNO0VBQUEsb0JBQUE7RUFBQSxpREFBQTtBQUFBO0FBR0E7RUFBQSxhQUFBO0FBQUE7QUFJRjtBQURGO0lBRUksYUFBQTtBQURKO0FBQ0Y7QUFJSTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtBQUFBO0FBSUY7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0VBQ0EsZ0NBQUE7QUFEQTtBQUtBO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSxVQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxhQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQURGO0FBR0U7QUFORjtJQU9JLFlBQUE7QUFBRjtBQUNGO0FBR0k7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQUNOO0FBR0k7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFLSjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQUhBO0FBS0E7QUFORjtJQU9JLFlBQUE7QUFDRjtBQUNGO0FBRUk7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQUVOO0FBRUk7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFPRjs7RUFBQSxtQkFBQTtFQUFBLFVBQUE7RUFDQSwyQkFBQTtBQURBO0FBR0Y7O0VBQ0UseUJBQUE7QUFDSjtBQUVBO0VBQ0UsZUFBQTtBQUNGO0FBQ0E7RUFDRSxrQkFBQTtFQUNBLFVBQUE7QUFFRjtBQUFBO0VBQ0UsOEJBQUE7RUFDQSxxQkFBQTtFQUNBLHdCQUFBO0FBR0Y7QUFDRTtFQUFBLGtCQUFBO0VBQUEsY0FBQTtFQUFBLFlBQUE7RUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEseURBQUE7RUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUFIQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZpdHlfX2hlYWRlciB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG5cXG4gIG5hdiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuXFxuICAgIGE6aG92ZXIge1xcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xcbiAgICB9XFxuICAgIHVsIHtcXG4gICAgICBAYXBwbHkgZmxleDtcXG4gICAgfVxcbiAgfVxcbiAgLmFkZC1idG4ge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCkge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG4gIC51c2VyLW5hdiB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlcjtcXG4gIH1cXG59XFxuLnRvYXN0IHtcXG4gIEBhcHBseSBhYnNvbHV0ZSAgbGVmdC0yLzQgei01MDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG5cXG4udG9hc3QtZXJyb3Ige1xcbiAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTUgdG9wLTUgei01MDtcXG59XFxuXFxuLnByb2ZpbGVfX2Ryb3Bkb3duIHtcXG4gIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgcmlnaHQtMyB6LTIwIGJnLXdoaXRlIHRleHQtbGVmdCB0ZXh0LXNtIHRleHQtYmx1ZWNvcmFsIG9wYWNpdHktMCBzaGFkb3ctZHJvcGRvd24gZHVyYXRpb24tMzAwIHNtOnJpZ2h0LTEwO1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbiAgfVxcblxcbiAgbGkge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIHAtMyBzbTpwLTQ7XFxuICAgIGE6aG92ZXIge1xcbiAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcXG4gICAgfVxcbiAgICAudXNlci1wcm9maWxlIHtcXG4gICAgICBmb250LXNpemU6IDI2cHg7XFxuICAgIH1cXG4gIH1cXG4gIC5kcm9wZG93bl9fbGlzdCB7XFxuICAgIEBhcHBseSBiZy1uLTEwIGhvdmVyOmJnLW4tMjAgaG92ZXI6dGV4dC1ibHVlY29yYWw7XFxuICAgIGEge1xcbiAgICAgIEBhcHBseSBjYXBpdGFsaXplO1xcbiAgICB9XFxuICB9XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2gge1xcbiAgQGFwcGx5IGFic29sdXRlICByaWdodC0xMCB6LTIwIGJnLXdoaXRlIHRleHQtbGVmdCB0ZXh0LXNtIHRleHQtYmx1ZWNvcmFsIHNoYWRvdy1kcm9wZG93biAgZHVyYXRpb24tMzAwO1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbiAgfVxcblxcbiAgbGkge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIHAtMyBzbTpwLTQ7XFxuICAgIGE6aG92ZXIge1xcbiAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcXG4gICAgfVxcbiAgICAudXNlci1wcm9maWxlIHtcXG4gICAgICBmb250LXNpemU6IDI2cHg7XFxuICAgIH1cXG4gIH1cXG4gIC5kcm9wZG93bl9fbGlzdCB7XFxuICAgIEBhcHBseSBiZy1uLTEwIGhvdmVyOmJnLW4tMjAgaG92ZXI6dGV4dC1ibHVlY29yYWw7XFxuICAgIGEge1xcbiAgICAgIEBhcHBseSBjYXBpdGFsaXplO1xcbiAgICB9XFxuICB9XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIsXFxuLmRyb3Bkb3duLWJ0bjphY3RpdmUge1xcbiAgLnByb2ZpbGVfX2Ryb3Bkb3duIHtcXG4gICAgQGFwcGx5IHZpc2libGUgb3BhY2l0eS0xMDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG4gIH1cXG4gIC5kcm9wZG93bl9fYXJyb3cge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgfVxcbn1cXG4uYWRkLWltcG9ydCB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5hZGQtaW1wb3J0OmhvdmVyIC5hZGQtaW1wb3J0LWRyb3Bkb3duIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcXG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG59XFxuXFxuLnNwaW5uZXIge1xcbiAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTcgdG9wLTMgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gIHdpZHRoOiAxNXB4O1xcbiAgaGVpZ2h0OiAxNXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5taW51c1tkYXRhLXYtMWM0YTdiYjldIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDAuNzVyZW07XFxuICB3aWR0aDogMC43NXJlbTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5taW51c1tkYXRhLXYtMWM0YTdiYjldOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgaGVpZ2h0OiAwLjEyNXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4jcHVibGlzaGluZ19hY3Rpdml0aWVzW2RhdGEtdi0xYzRhN2JiOV0ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgYm90dG9tOiAwcHg7XFxuICByaWdodDogMHB4O1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcXG59XFxuLnJvbGxpbmdbZGF0YS12LTFjNGE3YmI5XSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi0xYzRhN2JiOSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnJvbGxpbmdbZGF0YS12LTFjNGE3YmI5XSB7XFxuICBhbmltYXRpb246IHNwaW4tMWM0YTdiYjkgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuLmFjdGl2aXR5LXRpdGxlW2RhdGEtdi0xYzRhN2JiOV0ge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxhQUFBO0VBQUEsZUFBQTtFQUFBLGNBQUE7RUFBQSxtQkFBQTtBQUFBO0FBQ0E7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUFBLGdCQUFBO0VBQUEsY0FBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSxpRUFBQTtBQUNKO0FBSUU7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLFVBQUE7RUFDQSxvREFBQTtBQURBO0FBS0E7RUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUFIQTtBQU1GO0VBQ0UsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1pbnVzIHtcXG4gIEBhcHBseSBmbGV4IGgtMyB3LTMgaXRlbXMtY2VudGVyO1xcbiAgJjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IGJsb2NrIGgtMC41IHctMyByb3VuZGVkLXhsIGJnLWJsdWUtNTA7XFxuICB9XFxufVxcblxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXMge1xcbiAgQGFwcGx5IGZpeGVkIGJvdHRvbS0wIHJpZ2h0LTA7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG5cXG4ucm9sbGluZyB7XFxuICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4uYWN0aXZpdHktdGl0bGUge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1pbnVzW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogMC43NXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLm1pbnVzW2RhdGEtdi0yNDQzZGY1M106YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDAuMTI1cmVtO1xcbiAgd2lkdGg6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXNbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBib3R0b206IDBweDtcXG4gIHJpZ2h0OiAwcHg7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuQGtleWZyYW1lcyBzcGluLTI0NDNkZjUzIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGFuaW1hdGlvbjogc3Bpbi0yNDQzZGY1MyAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG4uYWN0aXZpdHktdGl0bGVbZGF0YS12LTI0NDNkZjUzXSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGFBQUE7RUFBQSxlQUFBO0VBQUEsY0FBQTtFQUFBLG1CQUFBO0FBQUE7QUFDQTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLGlFQUFBO0FBQ0o7QUFJRTtFQUFBLGVBQUE7RUFBQSxXQUFBO0VBQUEsVUFBQTtFQUNBLG9EQUFBO0FBREE7QUFLQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBO0FBTUY7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWludXMge1xcbiAgQGFwcGx5IGZsZXggaC0zIHctMyBpdGVtcy1jZW50ZXI7XFxuICAmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYmxvY2sgaC0wLjUgdy0zIHJvdW5kZWQteGwgYmctYmx1ZS01MDtcXG4gIH1cXG59XFxuXFxuI3B1Ymxpc2hpbmdfYWN0aXZpdGllcyB7XFxuICBAYXBwbHkgZml4ZWQgYm90dG9tLTAgcmlnaHQtMDtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XFxufVxcblxcbi5yb2xsaW5nIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0yMDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblxcbi5hY3Rpdml0eS10aXRsZSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWxlcnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jYW1lbC0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS42MjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX2NvbnRhaW5lcltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbVxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4uYWxlcnRfX2NvbnRlbnQgc3BhbltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC4yNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwcHgsIDMwcHgpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLS10dy10cmFuc2xhdGUteTogLTBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtc1xcbn1cXG4uYm9yZGVyLWhpZGVbZGF0YS12LWI3N2IxMWQ0XTo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc2FsbW9uLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpXFxufVxcbi5ib3JkZXItc2hvd1tkYXRhLXYtYjc3YjExZDRdOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zYWxtb24tNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFBQSxhQUFBO0VBQUEscUJBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLG9EQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSxVQUFBO0VBQUEsMEJBQUE7RUFDQTtBQURBO0FBSUE7RUFBQSxhQUFBO0VBQUEsc0JBQUE7RUFBQSwrTEFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7RUFBQSxzREFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBO0FBSkE7QUFPQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtFQUFBLHNEQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0E7QUFKQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWxlcnQge1xcbiAgQGFwcGx5IHJvdW5kZWQgYmctY2FtZWwtMTAgcC00IHByLTYgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTUwO1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGZsZXggZmxleC1jb2wgbGVhZGluZy02O1xcbiAgfVxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQ7XFxuXFxuICAgIHNwYW4ge1xcbiAgICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LW4tNTA7XFxuICAgIH1cXG4gIH1cXG4gICZfX21lc3NhZ2Uge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xO1xcbiAgfVxcbn1cXG4udGV4dC1zaG93IHtcXG4gIEBhcHBseSBpbnZpc2libGUgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIG9wYWNpdHktMCBkdXJhdGlvbi0zMDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTBweCwgMzBweCk7XFxufVxcbi50ZXh0LWhpZGUge1xcbiAgQGFwcGx5IGZsZXggLXRyYW5zbGF0ZS15LTAgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBkdXJhdGlvbi0zMDA7XFxufVxcbi5ib3JkZXItaGlkZTo6YmVmb3JlIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgcm91bmRlZCBiZy1zYWxtb24tNTAgZHVyYXRpb24tMzAwIGVhc2Utb3V0O1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcXG59XFxuLmJvcmRlci1zaG93OjpiZWZvcmUge1xcbiAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCByb3VuZGVkIGJnLXNhbG1vbi01MCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQ7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogJyc7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucm90YXRlLTE4MCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UseUJBQUE7RUFDQSwrQkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5yb3RhdGUtMTgwIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuaGVscCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5oZWxwX190ZXh0IHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMXJlbTtcXG4gIHotaW5kZXg6IDIwO1xcbn1cXG4uaGVscF9fdGV4dCA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDAuMzc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygwLjM3NXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO1xcbn1cXG4uaGVscF9fdGV4dCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtcztcXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGxpbmVhcjtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi5oZWxwX190ZXh0IHAgYSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cXG4uaGVscDpob3ZlciAuaGVscF9fdGV4dCB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xcbi5oZWxwOmhvdmVyIC5oZWxwX190ZXh0IHtcXG4gICAgd2lkdGg6IDIwMHB4O1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtBQUFBO0FBR0U7RUFBQSxrQkFBQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxnRUFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUFBLGFBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsVUFBQTtFQUFBLDBCQUFBO0VBRUEsMkJBQUE7RUFDQSwyQ0FBQTtBQUhBO0FBS0E7RUFDRSxnQkFBQTtBQUROO0FBT0U7RUFHRSxtQkFBQTtFQUNBLFVBQUE7QUFOSjtBQU9JO0FBTEY7SUFNSSxZQUFBO0FBSko7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uaGVscCB7XFxuICBAYXBwbHkgcmVsYXRpdmU7XFxuXFxuICAmX190ZXh0IHtcXG4gICAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSB0b3AtNCB6LTIwIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xcbiAgICAvLyBDaGFuZ2VkIGVhc2Utb3V0IHRvIGxpbmVhclxcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBsaW5lYXI7XFxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xcblxcbiAgICBwIGEge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmhlbHA6aG92ZXIge1xcbiAgLmhlbHBfX3RleHQge1xcbiAgICAvLyEgUmVtb3ZlZCBUcmFuc2l0aW9uIG9mIEhvdmVyIEhlcmVcXG4gICAgLy8gdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCA1cHgpO1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuICAgICAgd2lkdGg6IDIwMHB4O1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5vdmVybGF5IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsYWNrKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgb3BhY2l0eTogMC43O1xcbiAgei1pbmRleDogMTAwMFxcbn1cXG4ub3ZlcmxheV9faW5uZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpXFxufVxcbi5vdmVybGF5X19jb250ZW50IC5zcGlubmVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9ja1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4ge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKVxcbn1cXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQgLnNwaW5uZXIge1xcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxZQUFBO0VBQ0E7QUFGQTtBQUtFO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLFlBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLGtDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHlEQUFBO0VBQUEseUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBO0FBSEFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm92ZXJsYXkge1xcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCAgdG9wLTAgIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XFxuICBvcGFjaXR5OiAwLjc7XFxuICB6LWluZGV4OiAxMDAwO1xcblxcbiAgJl9faW5uZXIge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcblxcbiAgICAuc3Bpbm5lciB7XFxuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICAgICAgd2lkdGg6IDc1cHg7XFxuICAgICAgaGVpZ2h0OiA3NXB4O1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tb2RhbC1hbmltYXRpb24tZW50ZXItYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMikgMC4xNXM7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7O0VBRUUsNkRBQUE7QUFBRjtBQUdBOztFQUVFLFVBQUE7QUFBRjtBQUdBO0VBQ0UsK0RBQUE7QUFBRjtBQUdBO0VBQ0UseURBQUE7QUFBRjtBQUdBO0VBQ0UsVUFBQTtFQUNBLHFCQUFBO0FBQUY7QUFHQTtFQUNFLHFCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1hY3RpdmUsXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1mcm9tLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpIDAuMTVzO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItZnJvbSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNoaW1tZXJfX2Jsb2NrW2RhdGEtdi03NDM1NjE3Ml0ge1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyLTc0MzU2MTcyO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VkZWRlZCAxNC4zNiUsICNkN2Q2ZDYgNTYuMjklLCAjZWRlZGVkIDEwMCUpO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDhweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xcbn1cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MiB7XFxuMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG59XFxuODAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbjEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxzQkFBQTtFQUNBLDZCQUFBO0VBQ0EsbUNBQUE7RUFDQSwyQ0FBQTtFQUNBLGlDQUFBO0VBQ0EscUJBQUE7RUFDQSx5QkFBQTtFQUNBLHNGQUFBO0VBTUEsNEJBQUE7RUFDQSw0QkFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FBTEY7QUFRQTtBQUNFO0lBQ0UsdUNBQUE7QUFMRjtBQVFBO0lBQ0UsdUNBQUE7QUFORjtBQVNBO0lBQ0UseUNBQUE7QUFQRjtBQVVBO0lBQ0UseUNBQUE7QUFSRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zaGltbWVyX19ibG9jayB7XFxuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXI7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxcbiAgICA5MGRlZyxcXG4gICAgI2VkZWRlZCAxNC4zNiUsXFxuICAgICNkN2Q2ZDYgNTYuMjklLFxcbiAgICAjZWRlZGVkIDEwMCVcXG4gICk7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAyNDRweCAxMDRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogOHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAzcHggNnB4IDNweCAwcHg7XFxufVxcblxcbkBrZXlmcmFtZXMgcGxhY2VIb2xkZXJTaGltbWVyIHtcXG4gIDAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbiAgfVxcblxcbiAgMjAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbiAgfVxcblxcbiAgODAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5lcnJvcnNbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAycHhcXG59XFxuLmVycm9yc19faGVhZFtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBwYWRkaW5nOiAxcmVtXFxufVxcbi5lcnJvcnNfX2hlYWQtLXRpdGxlW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWdyb3c6IDE7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS42MjVcXG59XFxuLmVycm9yc19fbGlzdFtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgaGVpZ2h0OiAwcHg7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXNcXG59XFxuLmVycm9yc19fbGlzdCB1bFtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbVxcbn1cXG4uZXJyb3JzX19pdGVtW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XFxuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41XFxufVxcbi5lcnJvcnNfX2l0ZW1bZGF0YS12LWY2N2M3ZTcyXTpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xcbiAgICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSlcXG59XFxuLmVycm9yc19fZWxlbWVudFtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7SUFBQTtBQUFBO0FBR0U7SUFBQSxhQUFBO0lBQUEsOEJBQUE7SUFBQTtBQUFBO0FBR0U7SUFBQSxhQUFBO0lBQUEsWUFBQTtJQUFBLG1CQUFBO0lBQUEsbUJBQUE7SUFBQSxvQkFBQTtJQUFBO0FBQUE7QUFLRjtJQUFBLFdBQUE7SUFBQSxnQkFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7SUFBQSx3QkFBQTtJQUFBLHdEQUFBO0lBQUE7QUFBQTtBQUdFO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBS0Y7SUFBQSxpQkFBQTtJQUFBLG9CQUFBO0lBQUEsbUJBQUE7SUFBQSxvQkFBQTtJQUFBO0FBQUE7QUFJQTtJQUFBLHdCQUFBO0lBQUEsc0JBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQSxxQkFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7SUFBQSxvQkFBQTtJQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmVycm9ycyB7XFxuICBAYXBwbHkgYm9yZGVyLWwtMjtcXG5cXG4gICZfX2hlYWQge1xcbiAgICBAYXBwbHkgZmxleCBqdXN0aWZ5LWJldHdlZW4gcC00O1xcblxcbiAgICAmLS10aXRsZSB7XFxuICAgICAgQGFwcGx5IGZsZXggZ3JvdyBpdGVtcy1jZW50ZXIgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2xpc3Qge1xcbiAgICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiBweC00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG5cXG4gICAgdWwge1xcbiAgICAgIEBhcHBseSBweC02O1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19pdGVtIHtcXG4gICAgQGFwcGx5IHB5LTQgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcXG4gIH1cXG5cXG4gICZfX2l0ZW06bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgIEBhcHBseSBib3JkZXItYiBib3JkZXItbi0yMDtcXG4gIH1cXG5cXG4gICZfX2VsZW1lbnQge1xcbiAgICBAYXBwbHkgbGlzdC1kaXNjIHB4LTQgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucHJvZ3Jlc3NfYmFyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgbGVmdDogMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogOTk5OTk5O1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG59XFxuLnByb2dyZXNzX2Jhcl9fd3JhcHBlcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIHdpZHRoOiAyNTBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjNGM0O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLnByb2dyZXNzX2Jhcl9fdmlld2VyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBoZWlnaHQ6IDRweDtcXG4gIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyLmFuaW1hdGUtbG9hZGVyIC5wcm9ncmVzc19iYXJfX3ZpZXdlcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIGFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbi01YzMyYmYwYyA2cyBsaW5lYXIgZm9yd2FyZHM7XFxufVxcbi5wcm9ncmVzc19iYXIuYW5pbWF0ZS1sb2FkZXIgLnByb2dyZXNzX2Jhcl9fc3RhdGVbZGF0YS12LTVjMzJiZjBjXTo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYW5pbWF0aW9uOiBUZXh0Q2hhbmdlLTVjMzJiZjBjIDZzIGxpbmVhciBmb3J3YXJkcztcXG59XFxuLnByb2dyZXNzX2Jhcl9fY29udGVudFtkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX19zdGF0ZVtkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQGtleWZyYW1lcyBGaWxsQW5pbWF0aW9uLTVjMzJiZjBjIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxufVxcbn1cXG5Aa2V5ZnJhbWVzIFRleHRDaGFuZ2UtNWMzMmJmMGMge1xcbjAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuOTUlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuMTAwJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGVBQUE7RUFBQSxTQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSxtQkFBQTtFQUFBLHVCQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7QUFIQTtBQU1FO0VBQUEsWUFBQTtFQUFBLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtBQUZBO0FBTUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0Esb0JBQUE7RUFDQSxxQkFBQTtBQUpBO0FBT0Y7RUFDRSxvREFBQTtBQUZKO0FBS0U7RUFDRSxXQUFBO0VBQ0EsaURBQUE7QUFISjtBQU9JO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsd0RBQUE7QUFBQTtBQUlKO0FBQ0U7SUFDRSxvQkFBQTtBQU5GO0FBUUE7SUFDRSxvQkFBQTtBQU5GO0FBQ0Y7QUFTQTtBQUNFO0lBQ0UseUJBQUE7QUFQRjtBQVVBO0lBQ0UseUJBQUE7QUFSRjtBQVdBO0lBQ0UsdUJBQUE7QUFURjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5wcm9ncmVzc19iYXIge1xcbiAgQGFwcGx5IGZpeGVkICBsZWZ0LTAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlO1xcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiA5OTk5OTk7XFxuICBoZWlnaHQ6IDEwMHZoO1xcblxcbiAgJl9fd3JhcHBlciB7XFxuICAgIEBhcHBseSB3LVsyNTBweF0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtMnhsO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjNGM0O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgJl9fdmlld2VyIHtcXG4gICAgQGFwcGx5IGJnLXNwcmluZy01MDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBoZWlnaHQ6IDRweDtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG4gIH1cXG5cXG4gICYuYW5pbWF0ZS1sb2FkZXIgJl9fdmlld2VyIHtcXG4gICAgYW5pbWF0aW9uOiBGaWxsQW5pbWF0aW9uIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gIH1cXG5cXG4gICYuYW5pbWF0ZS1sb2FkZXIgJl9fc3RhdGU6OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBhbmltYXRpb246IFRleHRDaGFuZ2UgNnMgbGluZWFyIGZvcndhcmRzO1xcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sO1xcbiAgfVxcblxcbiAgJl9fc3RhdGUge1xcbiAgICBAYXBwbHkgbXQtNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgRmlsbEFuaW1hdGlvbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIFRleHRDaGFuZ2Uge1xcbiAgMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbiAgfVxcblxcbiAgOTUlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnZhbGlkYXRpb25bZGF0YS12LTFlMzhkMTBlXSB7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JIZWFkW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgd2lkdGg6IDIxMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi52YWxpZGF0aW9uX19lcnJvcnNbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICB6LWluZGV4OiAxMDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogNTk1cHg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcXG59XFxuLnZhbGlkYXRpb25fX2hlYWRpbmdbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9ycy1saXN0W2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgZmxleC1ncm93OiAxO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbn1cXG4udmFsaWRhdGlvbl9fdG9nZ2xlW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3RpdmVbZGF0YS12LTFlMzhkMTBlXTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwNmRiZTQ7XFxuICB3aWR0aDogMTAwJTtcXG4gIHRvcDogY2FsYygxMDAlICsgM3B4KTtcXG4gIGxlZnQ6IDA7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsaUNBQUE7RUFBQSw4QkFBQTtFQUFBLGlCQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0VBQ0EsMkNBQUE7QUFEQTtBQUlFO0VBQUEsWUFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7RUFBQSxrQkFBQTtFQUFBLCtEQUFBO0VBQ0EsMkNBQUE7QUFEQTtBQUtBO0VBQUEsa0JBQUE7RUFBQSxVQUFBO0VBQUEsUUFBQTtFQUFBLFdBQUE7RUFBQSxhQUFBO0VBQUEsWUFBQTtFQUFBLHNCQUFBO0VBQUEsZ0JBQUE7RUFBQSxzQkFBQTtFQUFBLDBEQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUNBLDhCQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJQTtFQUFBLFlBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFBQSx5QkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSx3REFBQTtBQUFBO0FBSUY7RUFDRSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxxQkFBQTtFQUNBLE9BQUE7QUFMSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4udmFsaWRhdGlvbiB7XFxuICBAYXBwbHkgcm91bmRlZC1ibC1sZyByb3VuZGVkLXRsLWxnIGJvcmRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcblxcbiAgJl9fZXJyb3JIZWFkIHtcXG4gICAgQGFwcGx5IHctWzIxMnB4XSBib3JkZXItY3JpbXNvbi0yMCBiZy1jcmltc29uLTEwO1xcbiAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgfVxcblxcbiAgJl9fZXJyb3JzIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLTAgei0xMCBmbGV4IHctWzU5NXB4XSBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyLXdoaXRlIGJnLXdoaXRlO1xcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxuICB9XFxuXFxuICAmX19oZWFkaW5nIHtcXG4gICAgQGFwcGx5IHB4LTQgcHktMztcXG4gIH1cXG5cXG4gICZfX2Vycm9ycy1saXN0IHtcXG4gICAgQGFwcGx5IGdyb3cgb3ZlcmZsb3cteS1hdXRvIHB4LTQgcHktMztcXG4gIH1cXG5cXG4gICZfX3RvZ2dsZSB7XFxuICAgIEBhcHBseSB0ZXh0LXhzIHVwcGVyY2FzZSBsZWFkaW5nLW5vcm1hbCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcbi5hY3RpdmUge1xcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBoZWlnaHQ6IDJweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZkYmU0O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdG9wOiBjYWxjKDEwMCUgKyAzcHgpO1xcbiAgICBsZWZ0OiAwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXJyb3ItYm9yZGVyW2RhdGEtdi02ZjE3ZWM0NV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzNGQ1YjtcXG59XFxuLndhcm5pbmctYm9yZGVyW2RhdGEtdi02ZjE3ZWM0NV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0Yjc4NDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlLW91dDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuLmxpc3QtaW5kZXhbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxufVxcbi5saXN0LWluZGV4W2RhdGEtdi02ZjE3ZWM0NV06YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgei1pbmRleDogMTA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDRweDtcXG4gIHdpZHRoOiA0cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgbGVmdDogOHB4O1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxuICBiYWNrZ3JvdW5kOiAjMmEyZjMwO1xcbn1cXG4uY29udGFpbmVyW2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgaGVpZ2h0OiAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi5lcnJvci1lbGVtZW50W2RhdGEtdi02ZjE3ZWM0NV06bm90KDpsYXN0LW9mLXR5cGUpIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDVkY2RlO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQ0UsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBO0FBREo7QUFLRTtFQUNFLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtBQUZKO0FBS0E7RUFDRSxnQkFBQTtFQUNBLGdDQUFBO0VBQ0EsWUFBQTtBQUZGO0FBS0E7RUFDRSxrQkFBQTtFQUNBLGtCQUFBO0FBRkY7QUFJRTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0FBRko7QUFNRTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSx3QkFBQTtFQUFBLHdEQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUVGO0VBQ0UsZ0NBQUE7QUFERlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uZXJyb3ItYm9yZGVyIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTM0ZDViO1xcbiAgfVxcbn1cXG4ud2FybmluZy1ib3JkZXIge1xcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnICc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogMDtcXG4gICAgdG9wOiAwO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHdpZHRoOiAycHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGI3ODQ7XFxuICB9XFxufVxcbi5lcnJvci1jb250YWluZXIge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2Utb3V0O1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5cXG4ubGlzdC1pbmRleCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuXFxuICAmOmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICB6LWluZGV4OiAxMDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBoZWlnaHQ6IDRweDtcXG4gICAgd2lkdGg6IDRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gICAgbGVmdDogOHB4O1xcbiAgICB0b3A6IDUwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgICBiYWNrZ3JvdW5kOiAjMmEyZjMwO1xcbiAgfVxcbn1cXG4uY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbn1cXG4uZXJyb3ItZWxlbWVudDpub3QoOmxhc3Qtb2YtdHlwZSkge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNWRjZGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5wYWdlLWhlaWdodCB7XFxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSw4QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5wYWdlLWhlaWdodCB7XFxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5mb3JtLWdyb3VwW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuLmZvcm0tZ3JvdXBbZGF0YS12LWM3Y2EyOGI4XTpsYXN0LWNoaWxkIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcbi5mb3JtLWdyb3VwIC5mb3JtX19jb250ZW50W2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIGdhcDogMjVweDtcXG59XFxuLmZvcm0tZ3JvdXAgLmZvcm1fX2NvbnRlbnQgLmxhYmVsLWZpZWxkW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lcltkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUtY29udGFpbmVyW2RhdGEtdi1jN2NhMjhiOF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuMjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUFBLGdCQUFBO0FBQUE7QUFFQTtFQUNFLGdCQUFBO0FBQUo7QUFHRTtFQUNFLGFBQUE7RUFDQSxTQUFBO0FBREo7QUFJTTtFQUFBLHFCQUFBO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0VBQUEsOEJBQUE7QUFBQTtBQUtKO0VBQUEsdUJBQUE7RUFBQSxhQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmZvcm0tZ3JvdXAge1xcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTIwIHAtNTtcXG5cXG4gICY6bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICB9XFxuXFxuICAuZm9ybV9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIGdhcDogMjVweDtcXG5cXG4gICAgLmxhYmVsLWZpZWxkIHtcXG4gICAgICBAYXBwbHkgbWItMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW47XFxuICAgIH1cXG4gIH1cXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUtY29udGFpbmVyIHtcXG4gIEBhcHBseSBtYi0xLjUgZmxleCBzcGFjZS14LTE7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlIHtcXG4gIEBhcHBseSB0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnByb2dyZXNzQmFyX2NvbnRhaW5lcltkYXRhLXYtMGIzYmZiNDZdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogN3B4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTYgMTk2IDE5NiAvIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2dyZXNzX2JhcltkYXRhLXYtMGIzYmZiNDZdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiA3cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBhbmltYXRpb246IG1vdmVSaWdodExlZnQtMGIzYmZiNDYgMnMgbGluZWFyIGluZmluaXRlO1xcbn1cXG5Aa2V5ZnJhbWVzIG1vdmVSaWdodExlZnQtMGIzYmZiNDYge1xcbjAlIHtcXG4gICAgbGVmdDogLTQwcHg7XFxufVxcbjEwMCUge1xcbiAgICBsZWZ0OiAxMDAlO1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLGdCQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSxxQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFDQSxvREFBQTtBQURBO0FBSUY7QUFDRTtJQUNFLFdBQUE7QUFBRjtBQUVBO0lBQ0UsVUFBQTtBQUFGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnByb2dyZXNzQmFyX2NvbnRhaW5lciB7XFxuICBAYXBwbHkgcmVsYXRpdmUgaC1bN3B4XSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy1bI0M0QzRDNF07XFxufVxcblxcbi5wcm9ncmVzc19iYXIge1xcbiAgQGFwcGx5IGFic29sdXRlIGgtZnVsbCB3LTI4IHJvdW5kZWQtbGcgYmctc3ByaW5nLTUwO1xcbiAgYW5pbWF0aW9uOiBtb3ZlUmlnaHRMZWZ0IDJzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuXFxuQGtleWZyYW1lcyBtb3ZlUmlnaHRMZWZ0IHtcXG4gIDAlIHtcXG4gICAgbGVmdDogLTQwcHg7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNoZWNrYm94X2NvbnRhaW5lcltkYXRhLXYtNzdmMTRmM2VdIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zaXplOiAyMnB4O1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLyogSGlkZSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgY2hlY2tib3ggKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIGlucHV0W2RhdGEtdi03N2YxNGYzZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3BhY2l0eTogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbn1cXG5cXG4vKiBDcmVhdGUgYSBjdXN0b20gY2hlY2tib3ggKi9cXG4uY2hlY2ttYXJrW2RhdGEtdi03N2YxNGYzZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAzcHg7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAxN3B4O1xcbiAgd2lkdGg6IDE3cHg7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxufVxcblxcbi8qIE9uIG1vdXNlLW92ZXIsIGFkZCBhIGdyZXkgYmFja2dyb3VuZCBjb2xvciAqL1xcbi5jaGVja2JveF9jb250YWluZXI6aG92ZXIgaW5wdXQgfiAuY2hlY2ttYXJrW2RhdGEtdi03N2YxNGYzZV0ge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG5cXG4vKiBXaGVuIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLCBhZGQgYSBibHVlIGJhY2tncm91bmQgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIGlucHV0OmNoZWNrZWQgfiAuY2hlY2ttYXJrW2RhdGEtdi03N2YxNGYzZV0ge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcblxcbi8qIENyZWF0ZSB0aGUgY2hlY2ttYXJrL2luZGljYXRvciAoaGlkZGVuIHdoZW4gbm90IGNoZWNrZWQpICovXFxuLmNoZWNrbWFya1tkYXRhLXYtNzdmMTRmM2VdOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLyogU2hvdyB0aGUgY2hlY2ttYXJrIHdoZW4gY2hlY2tlZCAqL1xcbi5jaGVja2JveF9jb250YWluZXIgaW5wdXQ6Y2hlY2tlZCB+IC5jaGVja21hcmtbZGF0YS12LTc3ZjE0ZjNlXTphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLyogU3R5bGUgdGhlIGNoZWNrbWFyay9pbmRpY2F0b3IgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIC5jaGVja21hcmtbZGF0YS12LTc3ZjE0ZjNlXTphZnRlciB7XFxuICBsZWZ0OiA0cHg7XFxuICB0b3A6IDFweDtcXG4gIHdpZHRoOiA1cHg7XFxuICBoZWlnaHQ6IDEwcHg7XFxuICBib3JkZXI6IHNvbGlkIHdoaXRlO1xcbiAgYm9yZGVyLXdpZHRoOiAwIDJweCAycHggMDtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtFQUNBLHNCQUFBO0VBRUEsaUJBQUE7QUFBRjs7QUFHQSx3Q0FBQTtBQUNBO0VBQ0Usa0JBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0FBQUY7O0FBR0EsNkJBQUE7QUFDQTtFQUNFLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0FBQUY7O0FBR0EsK0NBQUE7QUFFRTtFQUFBLHNCQUFBO0VBQUEsOERBQUE7QUFBQTs7QUFHRix3REFBQTtBQUVFO0VBQUEsc0JBQUE7RUFBQSw4REFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7QUFBQTs7QUFHRiw2REFBQTtBQUNBO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtBQUFGOztBQUdBLG9DQUFBO0FBQ0E7RUFDRSxjQUFBO0FBQUY7O0FBR0Esa0NBQUE7QUFDQTtFQUNFLFNBQUE7RUFDQSxRQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLHlCQUFBO0VBR0Esd0JBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uY2hlY2tib3hfY29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zaXplOiAyMnB4O1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLyogSGlkZSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgY2hlY2tib3ggKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIGlucHV0IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG59XFxuXFxuLyogQ3JlYXRlIGEgY3VzdG9tIGNoZWNrYm94ICovXFxuLmNoZWNrbWFyayB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDNweDtcXG4gIGxlZnQ6IDA7XFxuICBoZWlnaHQ6IDE3cHg7XFxuICB3aWR0aDogMTdweDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIEBhcHBseSBib3JkZXItMiBib3JkZXItbi0yMDtcXG59XFxuXFxuLyogT24gbW91c2Utb3ZlciwgYWRkIGEgZ3JleSBiYWNrZ3JvdW5kIGNvbG9yICovXFxuLmNoZWNrYm94X2NvbnRhaW5lcjpob3ZlciBpbnB1dCB+IC5jaGVja21hcmsge1xcbiAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XFxufVxcblxcbi8qIFdoZW4gdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQsIGFkZCBhIGJsdWUgYmFja2dyb3VuZCAqL1xcbi5jaGVja2JveF9jb250YWluZXIgaW5wdXQ6Y2hlY2tlZCB+IC5jaGVja21hcmsge1xcbiAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTAgYmctc3ByaW5nLTUwO1xcbn1cXG5cXG4vKiBDcmVhdGUgdGhlIGNoZWNrbWFyay9pbmRpY2F0b3IgKGhpZGRlbiB3aGVuIG5vdCBjaGVja2VkKSAqL1xcbi5jaGVja21hcms6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4vKiBTaG93IHRoZSBjaGVja21hcmsgd2hlbiBjaGVja2VkICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciBpbnB1dDpjaGVja2VkIH4gLmNoZWNrbWFyazphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLyogU3R5bGUgdGhlIGNoZWNrbWFyay9pbmRpY2F0b3IgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIC5jaGVja21hcms6YWZ0ZXIge1xcbiAgbGVmdDogNHB4O1xcbiAgdG9wOiAxcHg7XFxuICB3aWR0aDogNXB4O1xcbiAgaGVpZ2h0OiAxMHB4O1xcbiAgYm9yZGVyOiBzb2xpZCB3aGl0ZTtcXG4gIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3Rpdml0aWVzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzIHtcXG4gIGJvcmRlci1yYWRpdXM6IDBweCA4cHggOHB4IDBweDtcXG4gIHdpZHRoOiAxMjVweDtcXG4gIG1pbi1oZWlnaHQ6IDE3NHB4O1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCAucGFuZWxfX2lucHV0OmZvY3VzLCBcXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIC5wYW5lbF9fc2VhcmNoOmZvY3VzIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZpdGllcyAuaG92ZXJfX3RleHQge1xcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwcHg7XFxuICB0b3A6IDEwMCU7XFxuICB6LWluZGV4OiAxMDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIG1pbi13aWR0aDogMTUwcHg7XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwYWRkaW5nLWxlZnQ6IDAuODc1cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC44NzVyZW07XFxuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpIHN2ZyB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLGtCQUFBO0FBQUY7QUFDRTtFQUNFLDhCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FBQ0o7QUFHSTtFQUFBLHFCQUFBO0VBQUEsYUFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtBQUFBO0FBSUU7O0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBS0Y7RUFBQSxvQkFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLFVBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtFQUFBLGdCQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0VBQ0EsZ0JBQUE7QUFEQTtBQUlFO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0VBQUEsdUJBQUE7RUFBQSxxQkFBQTtFQUFBLHdCQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7QUFBQTtBQUdFO0VBQUEscUJBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZpdGllcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAuZWxlbWVudHMge1xcbiAgICBib3JkZXItcmFkaXVzOiAwcHggOHB4IDhweCAwcHg7XFxuICAgIHdpZHRoOiAxMjVweDtcXG4gICAgbWluLWhlaWdodDogMTc0cHg7XFxuICB9XFxuXFxuICAuZWxlbWVudHNfX3BhbmVsIHtcXG4gICAgQGFwcGx5IHJvdW5kZWQtbGcgcC00IHNoYWRvdy1kcm9wZG93bjtcXG5cXG4gICAgLnBhbmVsX19pbnB1dDpmb2N1cyxcXG4gICAgLnBhbmVsX19zZWFyY2g6Zm9jdXMge1xcbiAgICAgIEBhcHBseSB0ZXh0LW4tNDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5ob3Zlcl9fdGV4dCB7XFxuICAgIEBhcHBseSBtbC0xO1xcbiAgfVxcbiAgLmJ1dHRvbl9fZHJvcGRvd24ge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtZnVsbCB6LTEwIHRleHQtbGVmdCBzaGFkb3ctZHJvcGRvd247XFxuICAgIG1pbi13aWR0aDogMTUwcHg7XFxuXFxuICAgIGxpIHtcXG4gICAgICBAYXBwbHkgZmxleCBweC0zLjUgcHktMS41IGhvdmVyOmJnLXdoaXRlO1xcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICBAYXBwbHkgbXItMTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNwaW5uZXJbZGF0YS12LTY2MWU2ZjhlXSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcXG59XFxuQGtleWZyYW1lcyBzcGluLTY2MWU2ZjhlIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbi5zcGlubmVyW2RhdGEtdi02NjFlNmY4ZV0ge1xcbiAgYW5pbWF0aW9uOiBzcGluLTY2MWU2ZjhlIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zcGlubmVyIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3RpdmVOYXYge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUdGO0VBQ0UsWUFBQTtBQUFGO0FBR0E7RUFDRSx5QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY3RpdmVOYXYge1xcbiAgQGFwcGx5IHJlbGF0aXZlICByb3VuZGVkIGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xcbn1cXG5cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcblxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4udXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaGVpZ2h0OiA2OHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gIHotaW5kZXg6IC0xO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLDZCQUFBO0VBQ0EsdUNBQUE7RUFDQSxVQUFBO0FBQUY7QUFFRTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQUFKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi51cGxvYWQtZXJyb3Ige1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBoZWlnaHQ6IDY4cHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gICAgei1pbmRleDogLTE7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tYW5kYXRvcnk6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDAuNXB4O1xcbiAgaGVpZ2h0OiAxNDBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAtMS41cmVtO1xcbiAgdG9wOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudCB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcXG59XFxuLmVsZW1lbnRfX2lubmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5lbGVtZW50X19pbm5lciA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC42MjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZWxlbWVudF9fbm90ZXMge1xcbiAgaGVpZ2h0OiAxcmVtO1xcbiAgd2lkdGg6IDJyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjEyNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDo6cGxhY2Vob2xkZXIge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnRhYl9fbGlua3Mge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xcbn1cXG4udGFiX19saW5rczo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDBweDtcXG4gIGxlZnQ6IDBweDtcXG4gIGhlaWdodDogMC4yNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1zY2FsZS14OiAwO1xcbiAgLS10dy1zY2FsZS15OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4udGFiX19saW5rczpob3Zlcjo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgLS10dy1zY2FsZS14OiAxO1xcbiAgLS10dy1zY2FsZS15OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmU6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBoZWlnaHQ6IDAuMjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbi5zZXBhcmF0b3Ige1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxufVxcbi5sYXN0IHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQUEsY0FBQTtFQUFBLFlBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUY7QUFJRTtFQUFBLHNCQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUdFO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHdEQUFBO0VBQUEsaUVBQUE7QUFBQTtBQUlBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSx1QkFBQTtFQUFBLGlCQUFBO0FBQUE7QUFLRjtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLHNCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7RUFBQSxvQkFBQTtFQUFBLHNCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDhCQUFBO0VBQUEsbUJBQUE7RUFBQSwwQkFBQTtBQUFBO0FBR0U7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDBCQUFBO0VBQ0EsdUJBQUE7QUFEQTtBQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSwwQkFBQTtFQUNBLHVCQUFBO0FBREE7QUFLQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUVBO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VBQUEsK0xBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7QUFKSjtBQU9FO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RUFBQSwrTEFBQTtBQUxKO0FBU0k7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUlKO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtBQVBGO0FBV0U7RUFBQSxpQkFBQTtFQUFBLGtCQUFBO0FBQUE7QUFJQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWFuZGF0b3J5OjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIHdpZHRoOiAwLjVweDtcXG4gIGhlaWdodDogMTQwcHg7XFxuICBAYXBwbHkgYWJzb2x1dGUgLXJpZ2h0LTYgdG9wLTEgYmctbi0yMDtcXG59XFxuXFxuLmVsZW1lbnQge1xcbiAgQGFwcGx5IG1iLTMgbWwtMjtcXG5cXG4gICZfX2lubmVyIHtcXG4gICAgQGFwcGx5IGZsZXggc3BhY2UteC0yLjU7XFxuICB9XFxuXFxuICAmX19ub3RlcyB7XFxuICAgIEBhcHBseSBoLTQgdy04IHJvdW5kZWQtc20gYm9yZGVyO1xcbiAgfVxcbn1cXG5cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIEBhcHBseSBteS00IGgtMTAgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLXdoaXRlIHB5LTMgcGwtMTAgcHItMyB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcXG5cXG4gICY6OnBsYWNlaG9sZGVyIHtcXG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTMwIGR1cmF0aW9uLTMwMDtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxuICB9XFxuXFxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIEBhcHBseSB0ZXh0LW4tNDA7XFxuICB9XFxufVxcblxcbi50YWJfX2xpbmtzIHtcXG4gIEBhcHBseSByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBweC0yIHBiLTY7XFxuXFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUtMCBiZy1ibHVlY29yYWwgZHVyYXRpb24tMzAwO1xcbiAgfVxcblxcbiAgJjpob3Zlcjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IHZpc2libGUgc2NhbGUtMTAwO1xcbiAgfVxcblxcbiAgJi0tYWN0aXZlIHtcXG4gICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbDtcXG4gIH1cXG59XFxuXFxuLnRhYl9fbGlua3MtLWFjdGl2ZTo6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgYmctYmx1ZWNvcmFsIGR1cmF0aW9uLTMwMDtcXG59XFxuXFxuLnNlcGFyYXRvciB7XFxuICBAYXBwbHkgbXgtNDtcXG59XFxuXFxuLmxhc3Qge1xcbiAgQGFwcGx5IHRleHQtbi0zMDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnJlc2V0IHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQge1xcbiAgICBwYWRkaW5nOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCB7XFxuICAgIHdpZHRoOiA1ODNweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcbiAgICBwYWRkaW5nOiA2cmVtO1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLmlucHV0IHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIHBhZGRpbmctdG9wOiAxLjI1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDEuMjVyZW07XFxufVxcbi5yZXNldF9fY29udGVudCAubG9jay1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDEuNXJlbTtcXG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG4gIHRvcDogNDdweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXRfX2NvbnRlbnQgLmxvY2staWNvbiB7XFxuICAgIHRvcDogNTBweDtcXG4gICAgZm9udC1zaXplOiAyMHB4O1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IC5tYWlsLWljb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMS41cmVtO1xcbiAgdG9wOiA0N3B4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldF9fY29udGVudCAubWFpbC1pY29uIHtcXG4gICAgdG9wOiA1MXB4O1xcbn1cXG59XFxuLnJlc2V0IGgyIHtcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDQwcHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDMycHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xcbn1cXG59XFxuLnJlc2V0IHAge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnJlc2V0IC5yZXNldC1idG4ge1xcbiAgbWFyZ2luLXRvcDogMC43NXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICBwYWRkaW5nOiAxNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAucmVzZXQtYnRuIHtcXG4gICAgcGFkZGluZzogMThweCA5NHB4O1xcbiAgICBmb250LXNpemU6IDE0cHg7XFxufVxcbn1cXG4ucmVzZXQgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE1MHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAudmVyaWZpY2F0aW9uIHtcXG4gICAgZm9udC1zaXplOiAxOTBweDtcXG59XFxufVxcbi5yZXNldF9fcGFzc3dvcmQge1xcbiAgaGVpZ2h0OiA2MTBweDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBV0Usa0RBQUE7RUFDQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFWRjtBQURFO0FBQ0U7SUFBQSxlQUFBO0FBQUE7QUFLSjtBQUZFO0FBTEY7SUFNSSxZQUFBO0lBQ0EsWUFBQTtJQUVBLGFBQUE7QUFJRjtBQUNGO0FBQ0k7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBR0U7RUFBQSxrQkFBQTtFQUFBLHFCQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7SUFDQSxlQUFBO0FBRU47QUFDRjtBQUVNO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7QUFFTjtBQUNGO0FBV0k7RUFBQSxlQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7QUFBQTtBQUFBO0FBVEE7QUFDRTtJQUFBLGVBQUE7SUFDQSxpQkFBQTtBQURBO0FBTU47QUFGSTtBQUNFO0lBQUEsZUFBQTtJQUNBLGlCQUFBO0FBREE7QUFPTjtBQURJO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBR0E7RUFBQSxtQkFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQ0EsYUFBQTtBQURBO0FBR0E7QUFKRjtJQUtJLGtCQUFBO0lBQ0EsZUFBQTtBQUtKO0FBQ0Y7QUFIRTtFQUNFLGdCQUFBO0FBS0o7QUFISTtBQUhGO0lBSUksZ0JBQUE7QUFNSjtBQUNGO0FBSEE7RUFDRSxhQUFBO0FBTUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnJlc2V0IHtcXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgIEBhcHBseSBwLTEwO1xcbiAgfVxcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDU4M3B4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIEBhcHBseSBwLTI0O1xcbiAgfVxcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICBAYXBwbHkgbXgtMyByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNTtcXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgcmVsYXRpdmUgZmxleCBmbGV4LWNvbDtcXG5cXG4gICAgLmlucHV0IHtcXG4gICAgICBAYXBwbHkgbXktMiBweS01O1xcbiAgICB9XFxuXFxuICAgIC5sb2NrLWljb24ge1xcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTYgdGV4dC1sZztcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTBweDtcXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLm1haWwtaWNvbiB7XFxuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtNjtcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTFweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIGgyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTM7XFxuICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XFxuICAgIH1cXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQ7XFxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XFxuICAgIH1cXG4gICAgQGFwcGx5IHRleHQtaGVhZGluZy01IGZvbnQtYm9sZCB0ZXh0LW4tNTAgc206bWItMjtcXG4gIH1cXG4gIHAge1xcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgfVxcbiAgLnJlc2V0LWJ0biB7XFxuICAgIEBhcHBseSBtdC0zIHctZnVsbCB0ZXh0LXhzO1xcbiAgICBwYWRkaW5nOiAxNHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIHBhZGRpbmc6IDE4cHggOTRweDtcXG4gICAgICBmb250LXNpemU6IDE0cHg7XFxuICAgIH1cXG4gIH1cXG4gIC52ZXJpZmljYXRpb24ge1xcbiAgICBmb250LXNpemU6IDE1MHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgIH1cXG4gIH1cXG59XFxuLnJlc2V0X19wYXNzd29yZCB7XFxuICBoZWlnaHQ6IDYxMHB4O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gIG1heC13aWR0aDogODY1cHg7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sge1xcbiAgICB3aWR0aDogNzAycHg7XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayBwIHtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxOTBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgd2lkdGg6IDM0NHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bCB7XFxuICB3aWR0aDogMjUzcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogNHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBSUE7RUFJRSxnQkFBQTtFQUNBLFlBQUE7QUFKSjtBQUFJO0FBREY7SUFFSSxpQkFBQTtBQUdKO0FBRUU7SUFFSSxZQUFBO0FBQ047QUFKRjtBQU1NO0VBQ0UsaUJBQUE7QUFDUjtBQUdJO0VBQ0Usa0RBQUE7QUFETjtBQUdNO0VBQ0UsZ0JBQUE7QUFEUjtBQVVNO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLG1CQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7QUFBQTtBQUFBO0FBSkE7QUFDRTtJQUFBLG9CQUFBO0FBQUE7QUFDUjtBQUlNO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBRlI7QUFFUTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQUZBO0FBSUE7RUFDRSxZQUFBO0FBSlI7QUFPTTtFQUNFLFdBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEseURBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFMUjtBQVFNO0VBQ0UsaUJBQUE7QUFOUjtBQVNNO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSw4REFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUFQUjtBQWNFO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsb0JBQUE7SUFBQSxxQkFBQTtJQUFBLG1CQUFBO0lBQUEsc0JBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBREY7RUFFRSwyQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQVZGO0FBYUk7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsZ0VBQUE7RUFDQSxtQkFBQTtBQURBO0FBSUU7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7QUFBQTtBQUlKO0VBQ0UsZ0JBQUE7QUFaSjtBQWdCQTtBQUNFO0lBQ0UsYUFBQTtJQUNBLHFDQUFBO0lBQ0EsU0FBQTtBQWJGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmxhYmVsIHtcXG4gIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi01MDtcXG59XFxuXFxuLnNlY3Rpb24ge1xcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxuICAgIH1cXG4gICAgbWF4LXdpZHRoOiA4NjVweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICAuZmVlZGJhY2sge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgICAgd2lkdGg6IDcwMnB4O1xcbiAgICAgIH1cXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICAgICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuXFxuICAgICAgLnZlcmlmaWNhdGlvbiB7XFxuICAgICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgICBAYXBwbHkgbGVhZGluZy05O1xcbiAgICAgIH1cXG5cXG4gICAgICBAYXBwbHkgbXgtMyBteS03IHRleHQtY2VudGVyIGxlYWRpbmctNyBzbTpsZWFkaW5nLTEwIGxnOm1iLTEwIGxnOm10LTE0O1xcblxcbiAgICAgIHAge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAgICAgQGFwcGx5IGJnLWVnZ3NoZWxsO1xcbiAgICAgIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgICAgIHdpZHRoOiAzNDRweDtcXG5cXG4gICAgICB1bCB7XFxuICAgICAgICB3aWR0aDogMjUzcHg7XFxuICAgICAgfVxcblxcbiAgICAgIHVsOjpiZWZvcmUge1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB3aWR0aDogNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5sYWJlbCB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgbWF4LXdpZHRoOiA4NjVweDtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTIwNnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayB7XFxuICAgIHdpZHRoOiA3MDJweDtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHAge1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE5MHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcXG4gIG1hcmdpbi10b3A6IDEuNzVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjc1cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcXG4gICAgbWFyZ2luLXRvcDogMy41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjI1cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWVnZ3NoZWxsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICB3aWR0aDogMzQ0cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsIHtcXG4gIHdpZHRoOiAyNTNweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWw6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiA0cHg7XFxuICBoZWlnaHQ6IDE3NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFJQTtFQUlFLGdCQUFBO0VBQ0EsWUFBQTtBQUpKO0FBQUk7QUFERjtJQUVJLGlCQUFBO0FBR0o7QUFFRTtJQUVJLFlBQUE7QUFDTjtBQUpGO0FBTU07RUFDRSxpQkFBQTtBQUNSO0FBR0k7RUFDRSxrREFBQTtBQUROO0FBR007RUFDRSxnQkFBQTtBQURSO0FBVU07RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsbUJBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtBQUFBO0FBQUE7QUFKQTtBQUNFO0lBQUEsb0JBQUE7QUFBQTtBQUNSO0FBSU07RUFDRSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFGUjtBQUVRO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FBRkE7QUFJQTtFQUNFLFlBQUE7QUFKUjtBQU9NO0VBQ0UsV0FBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFBQSx5REFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtBQUxSO0FBUU07RUFDRSxpQkFBQTtBQU5SO0FBU007RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQVBSO0FBY0U7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxvQkFBQTtJQUFBLHFCQUFBO0lBQUEsbUJBQUE7SUFBQSxzQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLDJCQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FBVkY7QUFhSTtFQUFBLHdCQUFBO0VBQUEsc0JBQUE7RUFBQSxnRUFBQTtFQUNBLG1CQUFBO0FBREE7QUFJRTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSwrREFBQTtBQUFBO0FBSUo7RUFDRSxnQkFBQTtBQVpKO0FBZ0JBO0FBQ0U7SUFDRSxhQUFBO0lBQ0EscUNBQUE7SUFDQSxTQUFBO0FBYkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubGFiZWwge1xcbiAgQGFwcGx5IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uLTUwO1xcbn1cXG5cXG4uc2VjdGlvbiB7XFxuICAmX19jb250YWluZXIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4gICAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG4gICAgfVxcbiAgICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIC5mZWVkYmFjayB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICB3aWR0aDogNzAycHg7XFxuICAgICAgfVxcblxcbiAgICAgIHAge1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gICAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG5cXG4gICAgICAudmVyaWZpY2F0aW9uIHtcXG4gICAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX190aXRsZSB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICAgIEBhcHBseSBsZWFkaW5nLTk7XFxuICAgICAgfVxcblxcbiAgICAgIEBhcHBseSBteC0zIG15LTcgdGV4dC1jZW50ZXIgbGVhZGluZy03IHNtOmxlYWRpbmctMTAgbGc6bWItMTAgbGc6bXQtMTQ7XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gICAgICBAYXBwbHkgYmctZWdnc2hlbGw7XFxuICAgICAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICAgICAgd2lkdGg6IDM0NHB4O1xcblxcbiAgICAgIHVsIHtcXG4gICAgICAgIHdpZHRoOiAyNTNweDtcXG4gICAgICB9XFxuXFxuICAgICAgdWw6OmJlZm9yZSB7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHdpZHRoOiA0cHg7XFxuICAgICAgICBoZWlnaHQ6IDE3NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIiNidG5bZGF0YS12LWExODYxZjNlXSB7XFxuICBwYWRkaW5nOiAxM3B4IDA7XFxufVxcbiNidG4gc3ZnW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDEuNzVyZW07XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgdHJhbnNpdGlvbjogMC40cztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4jYnRuW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgICBwYWRkaW5nOiAxOHB4IDA7XFxufVxcbn1cXG4udXNlcm5hbWVbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbi5wYXNzd29yZFtkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxubGFiZWxbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsZUFBQTtBQUFGO0FBR0k7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxpQkFBQTtFQUFBLGlCQUFBO0VBQ0EsZ0JBQUE7QUFEQTtBQUlKO0FBQ0U7SUFDRSxlQUFBO0FBQUY7QUFDRjtBQUdFO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7RUFBQSxnQkFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbiNidG4ge1xcbiAgcGFkZGluZzogMTNweCAwO1xcblxcbiAgc3ZnIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTcgdGV4dC0yeGw7XFxuICAgIHRyYW5zaXRpb246IDAuNHM7XFxuICB9XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAjYnRuIHtcXG4gICAgcGFkZGluZzogMThweCAwO1xcbiAgfVxcbn1cXG4udXNlcm5hbWUge1xcbiAgQGFwcGx5IG1iLTI7XFxufVxcbi5wYXNzd29yZCB7XFxuICBAYXBwbHkgbWItMjtcXG59XFxubGFiZWwge1xcbiAgQGFwcGx5IG1iLTIgZm9udC1ib2xkO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYWYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2FyLWR6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXItZHouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1rd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWt3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXItbHlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1seS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLW1hXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItbWEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1wc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItcHMuanNcIixcblx0XCIuL2FyLXBzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1wcy5qc1wiLFxuXHRcIi4vYXItc2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci1zYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXItdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2F6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9iZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanNcIixcblx0XCIuL2JlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9iZy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JtXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9iblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanNcIixcblx0XCIuL2JuLWJkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qc1wiLFxuXHRcIi4vYm4tYmQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzXCIsXG5cdFwiLi9ibi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanNcIixcblx0XCIuL2JvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9icy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanNcIixcblx0XCIuL2NhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3ZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanNcIixcblx0XCIuL2N5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vY3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9kYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kZS1hdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWF0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanNcIixcblx0XCIuL2RlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZHZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9kdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanNcIixcblx0XCIuL2VsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbi1hdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanNcIixcblx0XCIuL2VuLWF1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWdiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4tZ2IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1pZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanNcIixcblx0XCIuL2VuLWllLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1pbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWluXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qc1wiLFxuXHRcIi4vZW4taW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzXCIsXG5cdFwiLi9lbi1uelwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VuLW56LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tc2dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzXCIsXG5cdFwiLi9lbi1zZy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanNcIixcblx0XCIuL2VvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2VzLWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtZG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1teFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanNcIixcblx0XCIuL2VzLW14LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qc1wiLFxuXHRcIi4vZXMtdXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy11cy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9mYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanNcIixcblx0XCIuL2ZhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9maS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzXCIsXG5cdFwiLi9maWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qc1wiLFxuXHRcIi4vZm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnItY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnItY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2Z5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZnkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9nYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2RcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nb20tZGV2YVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanNcIixcblx0XCIuL2dvbS1kZXZhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qc1wiLFxuXHRcIi4vZ29tLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9nb20tbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2d1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vZ3UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9oZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanNcIixcblx0XCIuL2hlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9odVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanNcIixcblx0XCIuL2h1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHktYW1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9oeS1hbS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2lkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaWQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanNcIixcblx0XCIuL2lzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzXCIsXG5cdFwiLi9pdC1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanNcIixcblx0XCIuL2l0LWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzXCIsXG5cdFwiLi9qYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanNcIixcblx0XCIuL2phLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vanZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9qdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2thXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9ra1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanNcIixcblx0XCIuL2trLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va21cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rbS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2tuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanNcIixcblx0XCIuL2tvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzXCIsXG5cdFwiLi9rdS1rbXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LWttci5qc1wiLFxuXHRcIi4va3Uta21yLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS1rbXIuanNcIixcblx0XCIuL2t1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9reS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2xiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbGIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2xvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9tZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9taS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21rXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL21zLW15XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMtbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL210XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL215LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbmJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9ubFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25sLWJlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwtYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vbm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9vYy1sbmNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qc1wiLFxuXHRcIi4vb2MtbG5jLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL3BhLWluXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGEtaW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3BsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9wdC1iclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LWJyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9yb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcnVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9ydS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanNcIixcblx0XCIuL3NkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9zaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanNcIixcblx0XCIuL3NrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc3FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zcS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanNcIixcblx0XCIuL3NyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3ItY3lybFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3ItY3lybC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzXCIsXG5cdFwiLi9zc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qc1wiLFxuXHRcIi4vc3ZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vc3cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi90YVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qc1wiLFxuXHRcIi4vdGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzXCIsXG5cdFwiLi90ZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90Zy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanNcIixcblx0XCIuL3RoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qc1wiLFxuXHRcIi4vdGwtcGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bC1waC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90bGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3R6bFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90emwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHptXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3R6bS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdWctY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91Zy1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3VyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi91ei1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4vdmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi94LXBzZXVkb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3gtcHNldWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi95by5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3poLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1oa1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLWhrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtbW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC1tby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanNcIixcblx0XCIuL3poLXR3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiLFxuXHRcIi4vemgtdHcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKiRcIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi42NjcgMi42NjZoLTEuMzMzVjJBLjY2Ni42NjYgMCAxIDAgMTAgMnYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZIMy4zMzRhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzNhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY3IDEwYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1Y4aDEwLjY2NnY0LjY2NlptMC02SDIuNjY3di0yQS42NjcuNjY3IDAgMCAxIDMuMzM0IDRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwVjRoNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNGgxLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2NnYyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQgMTMuMzMzSDIuNjY3VjEyaDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtMlY5LjMzM2g0LjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDIuNjY3VjYuNjY2SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNIMi42NjdWNGgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0xMFYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUuMzM0IDcuMzM0aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxMC42NjcgMy4yQS42NjcuNjY3IDAgMCAwIDEwIDIuNjY3SDZhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjcuNjY3IDAgMCAwIC41MjcuMjQ3Wk02LjU0NyA0aDIuOTA3bC40IDJINi4xNDdsLjQtMlptOC4xMiA1LjJBLjY2Ny42NjcgMCAwIDAgMTQgOC42NjdoLTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxNC42NjcgOS4yWm0tNC41MiAyLjguNC0yaDIuOTA2bC40IDJoLTMuNzA2Wk02IDguNjY4SDJhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0w2LjY2NyA5LjJBLjY2Ny42NjcgMCAwIDAgNiA4LjY2N1ptLTMuODUzIDMuMzM0LjQtMmgyLjkwN2wuNCAySDIuMTQ3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzQgNS4zMzNIMTBBLjY2Ny42NjcgMCAwIDAgMTAgNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY2VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY3IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0tNS4zMzMgMEg3LjMzNHYtMi42NjdoMS4zMzN2Mi42NjdabTMuMzMzIDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3SDYuNjY3QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTcuMzM0IDZIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0g4LjY2N1Y0YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N2EyIDIgMCAwIDAgMCA0aDEuMzMzYS42NjcuNjY3IDAgMCAxIDAgMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0VjEyYS42NjcuNjY3IDAgMSAwIDEuMzMzIDB2LS42NjZhMiAyIDAgMCAwIDAtNEg3LjMzNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0Wk04IC42NjdhNy4zMzMgNy4zMzMgMCAxIDAgMCAxNC42NjdBNy4zMzMgNy4zMzMgMCAwIDAgOCAuNjY3Wk04IDE0QTYgNiAwIDEgMSA4IDJhNiA2IDAgMCAxIDAgMTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4xMiA0LjU4N2EyLjkzMyAyLjkzMyAwIDAgMC0yLjIwNi0uMjEzIDIuOTEzIDIuOTEzIDAgMCAwLTUuODIgMCAyLjk4NyAyLjk4NyAwIDAgMC0yLjIwNy4xOTNBMi45MTMgMi45MTMgMCAwIDAgMy4yOTQgOS45YTIuOTMzIDIuOTMzIDAgMCAwLS41MzQgMS42NjdjLjAwMy4xNjguMDE5LjMzNS4wNDcuNWEyLjg5MyAyLjg5MyAwIDAgMCAyLjg2IDIuNDJjLjE0Mi4wMS4yODUuMDEuNDI3IDBBMi45NDcgMi45NDcgMCAwIDAgOCAxMy4zMzRhMi45NDcgMi45NDcgMCAwIDAgMS45MDcgMS4xMjZjLjE0Mi4wMS4yODUuMDEuNDI3IDBhMi45MDcgMi45MDcgMCAwIDAgMi4zNzMtNC41OCAyLjkwNyAyLjkwNyAwIDAgMCAuNDEzLTUuMzMzdi4wNFpNNi44OTQgMy4yOTRhMS42IDEuNiAwIDAgMSAyLjIxMyAwIDEuNjIgMS42MiAwIDAgMSAuMzQ3IDEuNzczbC0uMTc0LjM5My0uNDQuMzg3QTIuNzEzIDIuNzEzIDAgMCAwIDggNS43Yy0uMzcgMC0uNzM1LjA3OC0xLjA3My4yMjdsLS4zNzMtLjg2YTEuNTkzIDEuNTkzIDAgMCAxIC4zNC0xLjc3M1ptLTQuMDY3IDQuNTZBMS41OCAxLjU4IDAgMCAxIDUuMjk0IDZsLjMyNi4yODcuMjM0LjUzM2EyLjYxMyAyLjYxMyAwIDAgMC0uNTIgMS41NDcgMS45IDEuOSAwIDAgMCAwIC4zaC0uMzY3bC0uNTYuMDUzYTEuNTggMS41OCAwIDAgMS0xLjU4LS44NjZabTQuNCA0LjA1M2ExLjU4NyAxLjU4NyAwIDAgMS0zLjEwNy0uMDUzIDIuMDQ3IDIuMDQ3IDAgMCAxIDAtLjI4IDEuNTUzIDEuNTUzIDAgMCAxIC43OC0xLjMzNGwuMzQtLjI0LjYwNy0uMDY2Yy4zODIuNTMyLjk0Ny45MDQgMS41ODcgMS4wNDZsLS4yMDcuOTI3Wk04IDkuN2ExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY2QTEuMzMzIDEuMzMzIDAgMCAxIDggOS43Wm0zLjg4IDIuMTQ3YTEuNTczIDEuNTczIDAgMCAxLTEuNzg2IDEuMjkzIDEuNTkzIDEuNTkzIDAgMCAxLTEuMzM0LTEuMjMzbC0uMDkzLS40LjE0LS42MTNhMi42NjcgMi42NjcgMCAwIDAgMS40NjctMS4xNzRsLjMzMy4yaC4wNmwuNDQuMjZhMS41ODcgMS41ODcgMCAwIDEgLjc3MyAxLjY2N1ptMS4yOTQtNGExLjU5NCAxLjU5NCAwIDAgMS0xLjQyLjg4N2gtLjE2bC0uNDI3LS4wNjctLjUtLjI3M2MwLS42NDktLjIzOC0xLjI3NC0uNjY3LTEuNzZsLjI4Ny0uMjQ3LjQyLS4zODdhMS41OCAxLjU4IDAgMCAxIDIuNDY3IDEuODh2LS4wMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4zMzQgNS45NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTYuNzE2IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyN2gtLjA2YS41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2N2EyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI2IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDQuNjY3QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45NiA4LjY2NmMtLjE0NyAwLS4zLS4wNDYtLjQ0Ny0uMDhhNi4yOSA2LjI5IDAgMCAxLS44NzMtLjI2IDEuMzMzIDEuMzMzIDAgMCAwLTEuNjUzLjY2N2wtLjE0Ny4zQTguMTIgOC4xMiAwIDAgMSA4LjA2NyA3Ljk2YTguMTIgOC4xMiAwIDAgMS0xLjMzNC0xLjc3NEw3LjAxMyA2YTEuMzMzIDEuMzMzIDAgMCAwIC42NjctMS42NTQgNi44ODcgNi44ODcgMCAwIDEtLjI2LS44NzNjLS4wMzMtLjE0Ny0uMDYtLjMtLjA4LS40NTNhMiAyIDAgMCAwLTItMS42NmgtMmEyIDIgMCAwIDAtMiAyLjI3MyAxMi42NjcgMTIuNjY3IDAgMCAwIDExLjAxMyAxMC45NzNoLjI1NGEyIDIgMCAwIDAgMS44MjctMS4xODUgMiAyIDAgMCAwIC4xNzMtLjgyMXYtMmEyIDIgMCAwIDAtMS42NDctMS45MzRabS4zMzMgNGEuNjY2LjY2NiAwIDAgMS0uNDgyLjY0MS43MDcuNzA3IDAgMCAxLS4yOS4wMjZBMTEuMzMzIDExLjMzMyAwIDAgMSAyLjcxMiAzLjQ4YS43MjcuNzI3IDAgMCAxIC4xNjctLjU0Ny42NjcuNjY3IDAgMCAxIC41LS4yMjdoMmEuNjY3LjY2NyAwIDAgMSAuNjY3LjUyNyA3LjQxNCA3LjQxNCAwIDAgMCAuNDA3IDEuNTczbC0uOTM0LjQzNGEuNjY3LjY2NyAwIDAgMC0uMzI3Ljg4NiA5LjY2IDkuNjYgMCAwIDAgNC42NjcgNC42NjcuNjY2LjY2NiAwIDAgMCAuNTA3IDAgLjY2NS42NjUgMCAwIDAgLjM4LS4zNDdsLjQxMy0uOTMzYy4zNDUuMTIzLjY5Ny4yMjYgMS4wNTMuMzA3LjE3OC4wNC4zNTguMDczLjU0LjFhLjY2Ny42NjcgMCAwIDEgLjUyNy42NjZsLjAxMyAyLjA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMTQ2IDhhMiAyIDAgMCAwIC41Mi0xLjMzMyAyIDIgMCAwIDAtMi0ySDkuMjEzQTIgMiAwIDAgMCA3LjMzMyAyaC00YTIgMiAwIDAgMC0yIDIgMiAyIDAgMCAwIC41MiAxLjMzMyAyIDIgMCAwIDAgMCAyLjY2NyAyIDIgMCAwIDAgMCAyLjY2N0EyIDIgMCAwIDAgMS4zMzMgMTJhMiAyIDAgMCAwIDIgMmg5LjMzM2EyIDIgMCAwIDAgMS40OC0zLjMzMyAyIDIgMCAwIDAgMC0yLjY2N1ptLTYuODEzIDQuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzM0Wm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMSAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY2aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDEgMSAwIDEuMzM0Wm01Ljc5MyA3LjgwNmEuNjIuNjIgMCAwIDEtLjQ2LjE5NEg5LjIxM2MuMTYtLjQzLjE2LS45MDQgMC0xLjMzNGgzLjQ1M2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2Ny42NjYuNjY2IDAgMCAxLS4yMDcuNDczWm0wLTIuNjY2YS42Mi42MiAwIDAgMS0uNDYuMTkzSDkuMjEzYy4xNi0uNDMuMTYtLjkwMyAwLTEuMzMzaDMuNDUzYS42NjYuNjY2IDAgMCAxIC42NjcuNjY2LjY2Ni42NjYgMCAwIDEtLjIwNy40NzRabTAtMi42NjdhLjYyLjYyIDAgMCAxLS40Ni4xOTNIOS4yMTNjLjE2LS40My4xNi0uOTAzIDAtMS4zMzNoMy40NTNhLjY2Ni42NjYgMCAwIDEgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3M1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDUuMzMzSDEwQS42NjcuNjY3IDAgMSAwIDEwIDRoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2NmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjZhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2N1YyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NiAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM1ptLTUuMzM0IDBINy4zMzN2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzNCAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjctLjY2N0g2LjY2NkEuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMzM0LjY2N0gyLjY2N2EyIDIgMCAwIDAtMiAydjEwLjY2N2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjIuNjY3YTIgMiAwIDAgMC0yLTJaTTUuMzM0IDE0SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTMuMzM0di0uNzg3YTIgMiAwIDAgMCAuNjY3LjEyaDIuNjY3VjE0Wm0wLTIuNjY2SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTAuNjY3VjkuODhhMiAyIDAgMCAwIC42NjcuMTJoMi42Njd2MS4zMzRabTAtMi42NjdIMi42NjdBLjY2Ny42NjcgMCAwIDEgMiA4VjIuNjY3QS42NjcuNjY3IDAgMCAxIDIuNjY3IDJoMi42Njd2Ni42NjdabTQgNS4zMzNINi42Njd2LTRoMi42Njd2NFptMC01LjMzM0g2LjY2N1YyaDIuNjY3djYuNjY3Wk0xNCAxMy4zMzRhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZoLTIuNjY3di0xLjMzM2gyLjY2N2EyIDIgMCAwIDAgLjY2Ni0uMTJ2Ljc4N1ptMC0yLjY2N2EuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMTBoMi42NjdBMiAyIDAgMCAwIDE0IDkuODh2Ljc4N1pNMTQgOGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMmgyLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N1Y4Wm0tMi0zLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzM0LjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpNNCA2YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNBLjY2Ny42NjcgMCAwIDAgNCA2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNCA3LjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptOCAwYS42NjcuNjY3IDAgMSAwIDAgMS4zMzQuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0xLjMzNC00SDIuNjY3YTIgMiAwIDAgMC0yIDJ2NS4zMzNhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlY1LjMzM2EyIDIgMCAwIDAtMi0yWk0xNCAxMC42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMC42NjZWNS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDEwLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3Y1LjMzM1pNOCA2YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNFptMCAyLjY2NmEuNjY3LjY2NyAwIDEgMSAwLTEuMzMzLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTExLjMzMyA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djUuMDZMNS4xNCA0LjE5M2EuNjcuNjcgMCAwIDAtLjk0Ny45NDdsNS41MzMgNS41MjZoLTUuMDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGg2LjY2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjdWNC42NjZBLjY2Ni42NjYgMCAwIDAgMTEuMzMzIDRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtNi42NjYgMTEuNy0xLjE4IDEuMTQ3YTEuNjUgMS42NSAwIDAgMS0yLjMzMy0yLjMzM0w2LjE4IDcuNDhhMS42NCAxLjY0IDAgMCAxIDIuMjYtLjA2bC4wOC4wNjdhLjY2Ny42NjcgMCAwIDAgLjkzMy0uOTUzIDEuODM2IDEuODM2IDAgMCAwLS4xMi0uMTQgMi45NzMgMi45NzMgMCAwIDAtNC4wNi4xNDZMMi4yMDYgOS41NzRhMi45ODcgMi45ODcgMCAwIDAgNC4yMiA0LjIybDEuMTU0LTEuMTI3YS42NjcuNjY3IDAgMCAwLS45MTQtLjk2N1ptNy4xMjctOS40OTNhMi45OTMgMi45OTMgMCAwIDAtNC4yMiAwTDguNDIgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjkxMy45NjZsMS4xNTMtMS4xNDZhMS42NSAxLjY1IDAgMCAxIDIuMzM0IDIuMzMzTDkuNzkzIDguNTJhMS42NCAxLjY0IDAgMCAxLTIuMjYuMDZsLS4wOC0uMDY2YS42NjcuNjY3IDAgMCAwLS45MzMuOTUzIDIuOTggMi45OCAwIDAgMCA0LjIxMy0uMDA3bDMuMDMzLTMuMDMzYTIuOTkzIDIuOTkzIDAgMCAwIC4wMjctNC4yMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDcuMzM0aC0uNjY2di0uNjY3YS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2N2gtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaC42NjZ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwdi0uNjY3aC42NjZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptNC4xMDctNEE0LjE5NCA0LjE5NCAwIDAgMCA4IDIuOTRhNC4xOCA0LjE4IDAgMCAwLTUuNDQgNi4zMmw0IDQuMDM0YTIgMiAwIDAgMCAyLjgyNyAwbDQtNC4wMzRhNC4xOCA0LjE4IDAgMCAwIC4wNTMtNS45MjZabS0uOTQgNC45NzMtNCA0YS42NjYuNjY2IDAgMCAxLS45NDcgMGwtNC00YTIuODYgMi44NiAwIDAgMSAwLTQgMi44NDcgMi44NDcgMCAwIDEgNCAwIC42NjcuNjY3IDAgMCAwIC45NDcgMCAyLjg0NyAyLjg0NyAwIDAgMSA0IDAgMi44NiAyLjg2IDAgMCAxIDAgNC4wMTN2LS4wMTNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjMzMyA1LjMzM2g5LjMzNGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDMuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTEwLjY2NyAySDJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0tMS4zMzMgMy4zMzRIMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g5LjMzNGEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNy4zMzMgNy45MzN2My40YS42NjcuNjY3IDAgMSAwIDEuMzM0IDB2LTMuNGEzLjMzMyAzLjMzMyAwIDEgMC0xLjMzNCAwWk04IDIuNjY3YTIgMiAwIDEgMSAwIDQgMiAyIDAgMCAxIDAtNFptMi44MDcgNi45NDZhLjY4MS42ODEgMCAwIDAtLjI4IDEuMzM0YzEuNTEzLjMgMi4xNC44NCAyLjE0IDEuMDUzIDAgLjM4Ny0xLjYzNCAxLjMzMy00LjY2NyAxLjMzM1MzLjMzMyAxMi4zODcgMy4zMzMgMTJjMC0uMjEzLjYyNy0uNzUzIDIuMTQtMS4wOGEuNjgxLjY4MSAwIDAgMC0uMjgtMS4zMzNDMy4xNjcgMTAuMDUzIDIgMTAuOTI3IDIgMTJjMCAxLjc1MyAzLjAyIDIuNjY3IDYgMi42NjdzNi0uOTE0IDYtMi42NjdjMC0xLjA3My0xLjE2Ny0xLjk0Ny0zLjE5My0yLjM4N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTMuMzMzIDUuMzMzLTQtMy41MDZhMiAyIDAgMCAwLTIuNjY2IDBsLTQgMy41MDZBMiAyIDAgMCAwIDIgNi44NHY1LjgyN2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY2LjgzM2EyIDIgMCAwIDAtLjY2Ny0xLjVabS00IDhINi42NjdWMTBhLjY2Ny42NjcgMCAwIDEgLjY2Ni0uNjY3aDEuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djMuMzMzWm0zLjMzNC0uNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY2aC0xLjMzM1YxMGEyIDIgMCAwIDAtMi0ySDcuMzMzYTIgMiAwIDAgMC0yIDJ2My4zMzNINGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42NjZWNi44MzNhLjY2Ny42NjcgMCAwIDEgLjIyNy0uNWw0LTMuNWEuNjY3LjY2NyAwIDAgMSAuODggMGw0IDMuNWEuNjY3LjY2NyAwIDAgMSAuMjI3LjV2NS44MzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDguNWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRabTAgMi42NjZhLjY2Ny42NjcgMCAxIDEgMC0xLjMzNC42NjcuNjY3IDAgMCAxIDAgMS4zMzRabS0uNDczLTQuMTkzYy4wNjMuMDYuMTM4LjEwOC4yMi4xNGEuNjI3LjYyNyAwIDAgMCAuNTA3IDAgLjY2Ny42NjcgMCAwIDAgLjIyLS4xNEwxMCA1LjQ3M2EuNjg4LjY4OCAwIDEgMC0uOTczLS45NzNsLS4zNi4zOTNWMi41YS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2Mi4zOTNsLS4zNi0uMzkzQS42ODguNjg4IDAgMCAwIDYgNS40NzNsMS41MjcgMS41Wm01LjE0IDMuNTI3YS42NjYuNjY2IDAgMSAwLTEuMzMyIDAgLjY2Ni42NjYgMCAwIDAgMS4zMzIgMFptLjY2Ny00LjY2N2gtMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDJhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2NS4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMy4xNjZWNy44MzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtMmEyIDIgMCAwIDAtMiAydjUuMzMzYTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWNy44MzNhMiAyIDAgMCAwLTItMlptLTEwIDQuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDAgLjY2Ny42NjcgMCAwIDAtMS4zMzQgMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNMTAgOEg2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDEgMCAxMCA4Wm0wIDIuNjY2SDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTMuMTQgMi44NmExLjA4NSAxLjA4NSAwIDAgMC0uMS0uMDguNTA3LjUwNyAwIDAgMC0uMTItLjA2bC0uMTItLjA1M2EuNjY3LjY2NyAwIDAgMC0uMzg2LjA0LjU5OS41OTkgMCAwIDAtLjM2LjM2QS41Ni41NiAwIDAgMCAxMiAxNGEuNjY4LjY2OCAwIDEgMCAxLjI4LS4yNTQuNzY2Ljc2NiAwIDAgMC0uMTQtLjIyWm0uMTk0LTcuNTY2YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNi43MTYgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ny0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAySDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNINC42NjdBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJWOGEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZaTTEwIDUuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNmwxLjcyNiAxLjcyN0gxMFpNMTIuNjY3IDEwYS42NjcuNjY3IDAgMCAwLS42NjcuNjY2VjEyYS42NjcuNjY3IDAgMCAwIDEuMzM0IDB2LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjctLjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMyAzLjM2Ny00LTEuMzMzaC0uMDQ2YS40NjYuNDY2IDAgMCAwLS4wOTQgMGgtLjI4Nkw2IDMuMzM0bC0zLjc4Ny0xLjNhLjY2Ny42NjcgMCAwIDAtLjYuMDkzLjY2Ny42NjcgMCAwIDAtLjI4LjU0VjEyYS42NjYuNjY2IDAgMCAwIC40NTQuNjMzbDQgMS4zMzRhLjY2Ny42NjcgMCAwIDAgLjQxMyAwTDEwIDEyLjdsMy43ODcgMS4zYy4wNy4wMS4xNDIuMDEuMjEzIDBhLjYyNi42MjYgMCAwIDAgLjM4Ny0uMTI3LjY2Ni42NjYgMCAwIDAgLjI4LS41NFY0YS42NjcuNjY3IDAgMCAwLS40NTQtLjYzM1ptLTguODggOS4wNC0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1ptNC0uODg3LTIuNjY2Ljg4N1Y0LjQ4bDIuNjY3LS44ODZ2Ny45MjZabTQgLjg4Ny0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0IDYuNDJhNS42NjYgNS42NjYgMCAwIDAtOC43NzMtNC4xOEE1LjcwNyA1LjcwNyAwIDAgMCAyLjM2IDYuNDIgNS42NCA1LjY0IDAgMCAwIDQgMTAuOTczbDMuNTMzIDMuNTRhLjY2Ni42NjYgMCAwIDAgLjk0NyAwbDMuNTItMy41NGE1LjYzOCA1LjYzOCAwIDAgMCAxLjY0LTQuNTUzWm0tMi41NzMgMy42MTNMOCAxMy4xbC0zLjA2Ny0zLjA2N2E0LjMyNyA0LjMyNyAwIDAgMS0xLjI0Ni0zLjQ4IDQuMzggNC4zOCAwIDAgMSAxLjkyNi0zLjIyQTQuMzEzIDQuMzEzIDAgMCAxIDExLjcxIDQuNzJjLjMzNC41NTUuNTQgMS4xNzYuNjA0IDEuODJhNC4zMjYgNC4zMjYgMCAwIDEtMS4yNDYgMy40OTNaTTggNGEzIDMgMCAxIDAgMyAzIDMuMDA3IDMuMDA3IDAgMCAwLTMtM1ptMCA0LjY2NmExLjY2NyAxLjY2NyAwIDEgMSAwLTMuMzMzIDEuNjY3IDEuNjY3IDAgMCAxIDAgMy4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NyAxMC42NjZhMSAxIDAgMCAwIDEtMSAuNTE0LjUxNCAwIDAgMCAwLS4xbDEuODYtMS44NmguMzA2TDguOTA3IDguNzh2LjA1M2ExIDEgMCAxIDAgMiAwVjguNzhsMi40MjYtMi40NDdhMSAxIDAgMSAwLTEtMSAuNTIyLjUyMiAwIDAgMCAwIC4xTDkuOTI3IDcuODRIOS44Mkw4LjY2NyA2LjY2NmExIDEgMCAwIDAtMiAwbC0yIDJhMSAxIDAgMCAwIDAgMlptOSAyLjY2N0gyLjMzM1YyQS42NjcuNjY3IDAgMSAwIDEgMnYxMmEuNjY3LjY2NyAwIDAgMCAuNjY3LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE1XFxcIj48cGF0aCBkPVxcXCJtNi4xNCAxMC43NDIuMDIuMDU4LjAwNy4wMXYuMDM2YS4wNi4wNiAwIDAgMS0uMDA2LjAyN2wtLjAxLjAyMi0uMDA4LjAyMWEuMS4xIDAgMCAxLS4wNi4wNmwtLjAyMi4wMDgtLjAyMS4wMWEuMDYuMDYgMCAwIDEtLjAyNy4wMDZoLS4wMDZhLjE2Ni4xNjYgMCAwIDEtLjEwNi0uMDQuMjY2LjI2NiAwIDAgMS0uMDQtLjA2NmwtLjAwNC0uMDEtLjAwNS0uMDFhLjA2LjA2IDAgMCAxLS4wMDUtLjAyOHYtLjAyM2wtLjAwMS0uMDIzLS4wMDEtLjAxOC4wMDMtLjAwNy4wMTItLjAzM2EuNTc2LjU3NiAwIDAgMSAuMDIzLS4wMy4xNjYuMTY2IDAgMCAxIC4wNDQtLjAyNmwuMDE0LS4wMDVhLjE2Ny4xNjcgMCAwIDEgLjA5Ni0uMDFsLjA5NC0uNDkxLS4wOTQuNDlhLjE2Ni4xNjYgMCAwIDEgLjA3Ny4wMzhjLjAwOS4wMS4wMTguMDIyLjAyNi4wMzRabS42OTMtOS4zMzUgMy45NjMgMy45NjMuMDIzLjA3YS4zNy4zNyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMi42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMi44MzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTlsLjAxNS4wMDcuMTE2LjA2N2guMDQ2Wm0uODU0IDEuMzQ2TDYuODMzIDEuOXYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCA4IDUuMzMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTYuNSAyLjE2N3YtLjVIMi42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMS41IDIuODMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIOGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uNjE4IDUuMjE1YS4xNjcuMTY3IDAgMCAxIC4yODUuMTE4djEuMzMzYS4xNjcuMTY3IDAgMCAxLS4zMzQgMFY3LjVjMC0uMDQ0LjAxOC0uMDg3LjA1LS4xMThaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWk05LjAyNyA2LjM5M2wtMS43OTMgMS44LS41OTQtLjZhLjY3LjY3IDAgMCAwLS45NDYuOTQ3TDYuNzYgOS42MDZhLjY2Ny42NjcgMCAwIDAgLjk0NyAwTDEwIDcuMzMzYS42Ny42NyAwIDEgMC0uOTQ2LS45NDdsLS4wMjcuMDA3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNy4yYTEuMzMzIDEuMzMzIDAgMSAwIDAtMi42NjdBMS4zMzMgMS4zMzMgMCAwIDAgOCA3LjJabS0uNDczIDQuNjA2YS42NjYuNjY2IDAgMCAwIC45NDYgMEwxMS4yIDkuMDczYTQuNTI3IDQuNTI3IDAgMSAwLTYuNCAwbDIuNzI3IDIuNzMzWk00LjgyIDUuNTZhMy4yMDcgMy4yMDcgMCAwIDEgMS40Mi0yLjM2NyAzLjIwNyAzLjIwNyAwIDAgMSAzLjUyIDAgMy4yMTMgMy4yMTMgMCAwIDEgLjUgNC45NEw4IDEwLjM5M2wtMi4yNi0yLjI2YTMuMTggMy4xOCAwIDAgMS0uOTItMi41NzNabTcuODQ2IDcuNzczSDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY2IDRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzMy42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTkuODA3IDMuODUzLTYuMzItNi4zMDdhLjY2Ny42NjcgMCAwIDAtLjQ4Ny0uMjEzaC00YS42NjcuNjY3IDAgMCAwLS40NzMuMTkzbC0xLjY2NyAxLjY2YS42NjcuNjY3IDAgMCAwLS4xOTMuNDc0djRhLjcuNyAwIDAgMCAuMTkzLjQ3M2w2LjMyNyA2LjMzM2EuNy43IDAgMCAwIC40NzMuMTk0LjY2Ni42NjYgMCAwIDAgLjQ3NC0uMTk0bDUuNjczLTUuNjczYS42NjcuNjY3IDAgMCAwIDAtLjk0Wk04LjMyNiAxMy4wNmwtNS42Ni01LjY2N3YtMy40NmwxLjI2Ny0xLjI2N2gzLjQ1M2w1LjY2NyA1LjY2LTQuNzI3IDQuNzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNi42NjcgNS4zMzNoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTUuMzMzIDhoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wm0wIDIuNjY2aDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC05LjMzM0gyLjY2N0EuNjY3LjY2NyAwIDAgMCAyIDJ2MTJhLjY2Ny42NjcgMCAwIDAgMS4wNjcuNTMzbDEuMzgtMS4wMzMgMS4zNzMgMS4wMzNhLjY2Ni42NjYgMCAwIDAgLjggMEw4IDEzLjVsMS4zOCAxLjAzM2EuNjY2LjY2NiAwIDAgMCAuOCAwbDEuMzczLTEuMDMzIDEuMzggMS4wMzNBLjY2Ny42NjcgMCAwIDAgMTQgMTRWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDExLjMzMy0uNzE0LS41MzNhLjY2Ny42NjcgMCAwIDAtLjggMEw5Ljc4IDEzLjE2NiA4LjQgMTIuMTMzYS42NjcuNjY3IDAgMCAwLS44IDBsLTEuMzggMS4wMzMtMS4zNzMtMS4wMzNhLjY2Ny42NjcgMCAwIDAtLjggMGwtLjcxNC41MzN2LTEwaDkuMzM0djEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMThcXFwiIHJ4PVxcXCI5XFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMiA5YTcgNyAwIDEgMSAxNCAwQTcgNyAwIDEgMSAyIDlaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMTMuMDgzIDguNDE2aC0zLjV2LTMuNWEuNTgzLjU4MyAwIDAgMC0xLjE2NyAwdjMuNWgtMy41YS41ODMuNTgzIDAgMCAwIDAgMS4xNjdoMy41djMuNWEuNTgzLjU4MyAwIDAgMCAxLjE2NyAwdi0zLjVoMy41YS41ODMuNTgzIDAgMCAwIDAtMS4xNjdaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTM1IDcuMzMzaC00di00YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2NGgtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDR2NGEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwdi00aDRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwIDVhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDEgMCAyIDBWNmExIDEgMCAwIDAtMS0xWm0uOTIgOC42MmEuNzU4Ljc1OCAwIDAgMC0uMDktLjE4bC0uMTItLjE1YS45OTkuOTk5IDAgMCAwLTEuMDktLjIxIDEuMTUgMS4xNSAwIDAgMC0uMzMuMjEgMSAxIDAgMCAwLS4yMSAxLjA5LjkuOSAwIDAgMCAuNTQuNTQuOTQuOTQgMCAwIDAgLjc2IDAgLjkuOSAwIDAgMCAuNTQtLjU0Yy4wNTEtLjEyLjA3OC0uMjUuMDgtLjM4YTEuMzYyIDEuMzYyIDAgMCAwIDAtLjIuNjM5LjYzOSAwIDAgMC0uMDgtLjE4Wk0xMCAwYTEwIDEwIDAgMSAwIDAgMjAgMTAgMTAgMCAwIDAgMC0yMFptMCAxOGE4IDggMCAxIDEgMC0xNiA4IDggMCAwIDEgMCAxNlpcXFwiIGZpbGw9XFxcIiNGNkMzOThcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIxIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC40NjQgMS42NjdDNS44OCAxLjY2NyAyLjEzIDUuNDE3IDIuMTMgMTBjMCA0LjU4NCAzLjc1IDguMzM0IDguMzMzIDguMzM0czguMzMzLTMuNzUgOC4zMzMtOC4zMzRjMC00LjU4My0zLjc1LTguMzMzLTguMzMzLTguMzMzWm0wIDEyLjVjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNaTTExLjI5NyAxMGMwIC41LS4zMzMuODM0LS44MzMuODM0LS41IDAtLjgzMy0uMzM0LS44MzMtLjgzNFY2LjY2N2MwLS41LjMzMy0uODMzLjgzMy0uODMzLjUgMCAuODMzLjMzMy44MzMuODMzVjEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy4zMzMgNS4zMzNoOS4zMzRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0gzLjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xMC42NjcgMkgyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptLTEuMzMzIDMuMzM0SDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm05LjUyNyA5LjQ2LTIuMTk0IDIuMTk0LS44Ni0uODZhLjY2OC42NjggMCAxIDAtLjk0Ni45NGwxLjMzMyAxLjMzM2EuNjY2LjY2NiAwIDAgMCAuOTQ3IDBsMi42NjYtMi42NjdhLjY2Ny42NjcgMCAxIDAtLjk0Ni0uOTRabTIuNzUzLTMuOTEzYTQuNjY3IDQuNjY3IDAgMCAwLTguOTA3IDEuMjY3IDIuNjY3IDIuNjY3IDAgMCAwLS4yNTMgNS4xLjY2OC42NjggMCAxIDAgLjQyNy0xLjI0NyAxLjMzMyAxLjMzMyAwIDAgMS0uODgtMS4yNjdBMS4zMzMgMS4zMzMgMCAwIDEgNCA4LjA2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjcgMy4zMzMgMy4zMzMgMCAwIDEgNi40ODYtMS4wNjYuNjY4LjY2OCAwIDAgMCAuNTIuNDQgMiAyIDAgMCAxIC4xNiAzLjg5M0EuNjcyLjY3MiAwIDEgMCAxMiAxMmguMTY3YTMuMzMzIDMuMzMzIDAgMCAwIC4xMTMtNi40MTN2LS4wNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4xNjcgNy42NGEuODM0LjgzNCAwIDAgMC0xLjE3NSAwTDEwIDEwLjU5IDcuMDUgNy42NGEuODMzLjgzMyAwIDEgMC0xLjE3NSAxLjE4NGwzLjUzNCAzLjUzM2EuODMzLjgzMyAwIDAgMCAxLjE4MyAwbDMuNTc1LTMuNTMzYS44MzMuODMzIDAgMCAwIDAtMS4xODNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDggMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggMS4wNTQgNi44MDUgMCAwIDZsNi44MDUgNkw4IDEwLjk0NyAyLjM5IDYgOCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOCAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMCAxLjA1NCAxLjE5NSAwIDggNmwtNi44MDUgNkwwIDEwLjk0NyA1LjYxIDYgMCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNNC4zMTEgNy40MyAzLjc0IDhoMTAuOTI2YTEgMSAwIDAgMSAwIDJIMy43NGwuNTcxLjU2OSA0LjQgNC4zODdhLjk5OS45OTkgMCAwIDEgMCAxLjQybC0uMDAxLjAwMmExLjAwMSAxLjAwMSAwIDAgMS0xLjQyIDBoLS4wMDFMLjYyNSA5LjcxMmExIDEgMCAwIDEtLjIwOC0uMzI3TC40MTUgOS4zOGExIDEgMCAwIDEgMC0uNzZsLjAwMi0uMDA3YTEgMSAwIDAgMSAuMjA4LS4zMjdsNi42NjQtNi42NjRBMS4wMDUgMS4wMDUgMCAxIDEgOC43MSAzLjA0NEw0LjMxIDcuNDNaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk01Ljk1NSAxMC4zMzNoNC42N2wtMi4zMzYgMi4yNTMtMi4zMzQtMi4yNTNabTEuODQ0IDMuMTk0Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQxNC4xMzItMS4xMzQtLjQ4My0xLjEzNEg1LjEyNmMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNjMgMy4wNTNabS0yLjY4LTYuODZoNi4zNDFjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRsLTMuMTctMy4wNmEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40Mi0uMTMyIDEuMTQuNDgzIDEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0NyA0LjkxM1Y0Ljg2bC0uMDQtLjFhLjQ2Ni40NjYgMCAwIDAtLjA0Ny0uMDYuNjIzLjYyMyAwIDAgMC0uMDYtLjA4bC0uMDYtLjA0Ny0uMTA3LS4wNTMtNS0zLjA4N2EuNjY3LjY2NyAwIDAgMC0uNzA2IDBMMi42NjcgNC41MmwtLjA2LjA1My0uMDYuMDQ3YS42MjcuNjI3IDAgMCAwLS4wNi4wOC40NzMuNDczIDAgMCAwLS4wNDcuMDZsLS4wNC4xdi4wNTNhLjc2Ny43NjcgMCAwIDAgMCAuMTc0djUuODI2YS42NjcuNjY3IDAgMCAwIC4zMTMuNTY3bDUgMy4wODdjLjAzMS4wMTkuMDY1LjAzMi4xLjA0aC4wNTRhLjU3NC41NzQgMCAwIDAgLjM0NiAwaC4wNTRhLjMxNC4zMTQgMCAwIDAgLjEtLjA0bDQuOTY2LTMuMDg3YS42NjguNjY4IDAgMCAwIC4zMTQtLjU2N1Y1LjA4N2EuNzYxLjc2MSAwIDAgMCAwLS4xNzRabS02LjMxNCA3Ljg5NEwzLjY2NyAxMC41NFY2LjI4N2wzLjY2NiAyLjI2djQuMjZaTTggNy4zOTMgNC4yNjcgNS4wODcgOCAyLjc4N2wzLjczMyAyLjNMOCA3LjM5M1ptNC4zMzMgMy4xNDctMy42NjYgMi4yNjd2LTQuMjZsMy42NjYtMi4yNnY0LjI1M1pcXFwiIGZpbGw9XFxcIiNBNjZFRTlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjMzNCA3LjMzNGg1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTAuNjY3IDMuMkEuNjY3LjY2NyAwIDAgMCAxMCAyLjY2N0g2YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY3LjY2NyAwIDAgMCAuNTI3LjI0N1pNNi41NDcgNGgyLjkwN2wuNCAySDYuMTQ3bC40LTJabTguMTIgNS4yQS42NjcuNjY3IDAgMCAwIDE0IDguNjY3aC00YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTQuNjY3IDkuMlptLTQuNTIgMi44LjQtMmgyLjkwNmwuNCAyaC0zLjcwNlpNNiA4LjY2OEgyYS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMNi42NjcgOS4yQS42NjcuNjY3IDAgMCAwIDYgOC42NjdabS0zLjg1MyAzLjMzNC40LTJoMi45MDdsLjQgMkgyLjE0N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xMi4zMjIgNS42OC4wOTIuMjEyLjIyMS4wNjdhMi44MzQgMi44MzQgMCAwIDEtLjA5NCA1LjQ1LjE2OC4xNjggMCAwIDEtLjA4My0uMzI1bC4wMDgtLjAwMmEyLjUgMi41IDAgMCAwLS4yLTQuODY2bC0uMDA4LS4wMDJhLjE2Ny4xNjcgMCAwIDEtLjEzLS4xMTJsLS4wMDItLjAwNGEzLjgzNCAzLjgzNCAwIDAgMC03LjQ2IDEuMjM1LjE2Ny4xNjcgMCAwIDEtLjE2Ni4xNjcgMS44MzMgMS44MzMgMCAxIDAgMCAzLjY2Ny4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtLjAwMWEyLjE2NyAyLjE2NyAwIDAgMS0uNTEtNC4yNzNsLjMzNi0uMDguMDQ0LS4zNDJhNC4xNjcgNC4xNjcgMCAwIDEgNy45NTMtMS4xMjVabS0yLjM3IDQuMTk5LjAwMi4wMDNhLjE2Ny4xNjcgMCAwIDEgMCAuMjM3bC0uODY2Ljg2LS4zNTguMzU1LjM1OC4zNTQuODY2Ljg2YS4xNjcuMTY3IDAgMCAxIDAgLjIzN2wtLjAwMi4wMDNhLjE2Ni4xNjYgMCAwIDEtLjE4My4wMzcuMTY2LjE2NiAwIDAgMS0uMDU0LS4wMzdsLS44Ni0uODY3LS4zNTUtLjM1Ny0uMzU1LjM1Ny0uODYuODY3YS4xNjYuMTY2IDAgMCAxLS4xODMuMDM3LjE2Ni4xNjYgMCAwIDEtLjA1NC0uMDM3bC0uMDAzLS4wMDNhLjE2Ny4xNjcgMCAwIDEgMC0uMjM2bC44NjctLjg2LjM1OC0uMzU1LS4zNTgtLjM1NS0uODY1LS44NTlhLjE3LjE3IDAgMCAxIC4yNC0uMjRsLjg1OC44NjYuMzU1LjM1Ny4zNTUtLjM1Ny44Ni0uODY3YS4xNjcuMTY3IDAgMCAxIC4yMzcgMFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcIiMyQTJGMzBcXFwiIGQ9XFxcIm04LjQxIDcgNC4zLTQuMjlhMS4wMDQgMS4wMDQgMCAwIDAtMS40Mi0xLjQyTDcgNS41OWwtNC4yOS00LjNhMS4wMDQgMS4wMDQgMCAxIDAtMS40MiAxLjQyTDUuNTkgN2wtNC4zIDQuMjlhLjk5OS45OTkgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBMNyA4LjQxbDQuMjkgNC4zYTEuMDAxIDEuMDAxIDAgMCAwIDEuNjM5LS4zMjUgMSAxIDAgMCAwLS4yMi0xLjA5NUw4LjQxIDdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBkPVxcXCJNNyAuMzMyYy0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLTMuNjY3LTMtNi42NjctNi42NjYtNi42NjdabTIuOCA1LjUzMy0zLjIgMy4yYS42NDQuNjQ0IDAgMCAxLS45MzQgMEw0LjIgNy42YS42NDQuNjQ0IDAgMCAxIDAtLjkzNC42NDQuNjQ0IDAgMCAxIC45MzMgMGwxIDEgMi43MzMtMi43MzNhLjY0NC42NDQgMCAwIDEgLjkzNCAwIC42NDUuNjQ1IDAgMCAxIDAgLjkzM1pcXFwiIGZpbGw9XFxcIiMxNzk5N0JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xNy4xNjcgMy4zMzR2LS41aC0xMXYxMWgxMXYtMTAuNVpNOC4yMDQgOC43NWwuNDYzLS40NjYgMS4zNyAxLjM3Ni4zNTUuMzU3LjM1NC0uMzU3IDMuOTItMy45NS40NjMuNDY1LTQuNzM3IDQuNzhMOC4yMDQgOC43NVptLTUuMzcgNy45MTZ2LjVIMTQuNXYuNjY3SDMuMzMzYy0uNjQgMC0xLjE2Ni0uNTI2LTEuMTY2LTEuMTY3VjUuNWguNjY2djExLjE2N1ptMy44MzMtMTQuNWgxMGMuNjQgMCAxLjE2Ni41MjYgMS4xNjYgMS4xNjd2MTBjMCAuNjQtLjUyNiAxLjE2Ni0xLjE2NiAxLjE2NmgtMTBjLS42NCAwLTEuMTY3LS41MjYtMS4xNjctMS4xNjZ2LTEwYzAtLjY0LjUyNi0xLjE2NyAxLjE2Ny0xLjE2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTBcXFwiPjxwYXRoIGQ9XFxcIm0uNzUgNS4yNSAzLjUgMy41IDctNy41XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIGNsYXNzPVxcXCJjaGV2cm9uX3N2Z19fZmVhdGhlciBjaGV2cm9uX3N2Z19fZmVhdGhlci1jaGV2cm9ucy1yaWdodFxcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJtMTMgMTcgNS01LTUtNU02IDE3bDUtNS01LTVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEwIDExXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01IC41Yy0yLjc1IDAtNSAyLjI1LTUgNXMyLjI1IDUgNSA1IDUtMi4yNSA1LTUtMi4yNS01LTUtNVptMS44NSA2LjE1Yy4yLjIuMi41IDAgLjctLjIuMi0uNS4yLS43IDBMNSA2LjIgMy44NSA3LjM1Yy0uMi4yLS41LjItLjcgMC0uMi0uMi0uMi0uNSAwLS43TDQuMyA1LjUgMy4xNSA0LjM1Yy0uMi0uMi0uMi0uNSAwLS43LjItLjIuNS0uMi43IDBMNSA0LjhsMS4xNS0xLjE1Yy4yLS4yLjUtLjIuNyAwIC4yLjIuMi41IDAgLjdMNS43IDUuNWwxLjE1IDEuMTVaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOSAyLjQzNGMtNC4xMjUgMC03LjUgMy4zNzUtNy41IDcuNXMzLjM3NSA3LjUgNy41IDcuNSA3LjUtMy4zNzUgNy41LTcuNS0zLjM3NS03LjUtNy41LTcuNVptMi43NzUgOS4yMjVjLjMuMy4zLjc1IDAgMS4wNS0uMy4zLS43NS4zLTEuMDUgMEw5IDEwLjk4NGwtMS43MjUgMS43MjVjLS4zLjMtLjc1LjMtMS4wNSAwLS4zLS4zLS4zLS43NSAwLTEuMDVMNy45NSA5LjkzNCA2LjIyNSA4LjIwOWMtLjMtLjMtLjMtLjc1IDAtMS4wNS4zLS4zLjc1LS4zIDEuMDUgMEw5IDguODg0bDEuNzI1LTEuNzI1Yy4zLS4zLjc1LS4zIDEuMDUgMCAuMy4zLjMuNzUgMCAxLjA1TDEwLjA1IDkuOTM0bDEuNzI1IDEuNzI1WlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZD1cXFwiTTguNzUgNS40NTdoLTEuNUExLjA4MyAxLjA4MyAwIDAgMCA2LjE2NyA2LjU0djNhMS4wODMgMS4wODMgMCAwIDAgMS4wODMgMS4wODNoMS41QTEuMDg0IDEuMDg0IDAgMCAwIDkuODMzIDkuNTRhLjQxNy40MTcgMCAwIDEgLjgzNCAwIDEuOTE3IDEuOTE3IDAgMCAxLTEuOTE3IDEuOTE3aC0xLjVBMS45MTYgMS45MTYgMCAwIDEgNS4zMzMgOS41NHYtM0ExLjkxNyAxLjkxNyAwIDAgMSA3LjI1IDQuNjIzaDEuNWExLjkxNyAxLjkxNyAwIDAgMSAxLjkxNyAxLjkxNy40MTYuNDE2IDAgMSAxLS44MzQgMEExLjA4MyAxLjA4MyAwIDAgMCA4Ljc1IDUuNDU3Wk00LjAxOCAyLjA4QTcuMTY3IDcuMTY3IDAgMSAxIDExLjk4MiAxNCA3LjE2NyA3LjE2NyAwIDAgMSA0LjAxOCAyLjA4Wm0uNDYzIDExLjIyNUE2LjMzNCA2LjMzNCAwIDEgMCAxMS41MiAyLjc3NGE2LjMzNCA2LjMzNCAwIDAgMC03LjA0IDEwLjUzMlpcXFwiIGZpbGw9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZT1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB4PVxcXCIxLjE4OFxcXCIgeT1cXFwiMS4yNVxcXCIgd2lkdGg9XFxcIjIxLjYyNVxcXCIgaGVpZ2h0PVxcXCIyMS42MjRcXFwiIHJ4PVxcXCIxLjcyNlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIvPjxwYXRoIGQ9XFxcIk0xMy41IDkuODM4Yy4yMjYuMDAxLjQ1MS4wMi42NzQuMDYuMDM3LjIxNy4wNTUuNDM3LjA1Ni42NTdhMy44NDMgMy44NDMgMCAwIDEtLjA2My42NzNMMTIuODMgOS45Yy4yMjEtLjA0LjQ0Ni0uMDYxLjY3MS0uMDYzWm0tMy43NDktLjAxM2E1LjI4MyA1LjI4MyAwIDAgMC0xLjUyOCAzLjY4IDMuNzIyIDMuNzIyIDAgMSAxIDUuMi01LjI0NmMtMS4zOC4wMjItMi43LjU4NC0zLjY3MiAxLjU2NlptLjA1NSAzLjAzOCAxLjMzMyAxLjMzM2MtLjIyMi4wNC0uNDQ3LjA2MS0uNjczLjA2MmgtLjAwMmEzLjk2IDMuOTYgMCAwIDEtLjY2LS4wMzggMy45NjggMy45NjggMCAwIDEtLjA2LS42ODVjMC0uMjI1LjAyMS0uNDUuMDYyLS42NzJabTQuNDIgMS40MjRhNS4yODQgNS4yODQgMCAwIDAgMS41NS0zLjY3NyAzLjcyMyAzLjcyMyAwIDAgMS00LjAxNCA2LjI0MiAzLjczNiAzLjczNiAwIDAgMS0xLjIxMy0xLjAyIDUuMjgzIDUuMjgzIDAgMCAwIDMuNjc4LTEuNTQ1Wm0xLjE5Mi01LjY0NGE1LjI3IDUuMjcgMCAxIDAtNi44MzYgNi44MzcgNS4yNyA1LjI3IDAgMSAwIDYuODM2LTYuODM3Wm0tMS45MjIgNC4wOTdhMy44OSAzLjg5IDAgMCAxLS44MTguODE4bC0yLjE3NC0yLjE3NWEzLjg5IDMuODkgMCAwIDEgLjgxOC0uODE3bDIuMTc0IDIuMTc0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMjJcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjkxNyA0LjA4M2E0LjUxNSA0LjUxNSAwIDEgMC01LjgzNCA1LjgzNCA0LjUxNSA0LjUxNSAwIDEgMCA1LjgzNC01LjgzNFptLS45MzQuOTM0YTMuNDUzIDMuNDUzIDAgMCAxLS4wMyAxLjQ0N0w3LjUzMiA1LjA1MWMuMjU2LS4wNjEuNTE4LS4wOTMuNzgxLS4wOTQuMjI0IDAgLjQ0Ni4wMjIuNjY1LjA2NGwuMDA2LS4wMDVabS0uNTQ4IDIuNTY2YTMuNSAzLjUgMCAwIDEtLjg1Mi44NTJMNS41NjUgNi40MTdhMy41IDMuNSAwIDAgMSAuODUyLS44NTJsMi4wMTggMi4wMThabS00LjY2Ny44NTJhMy4zNTQgMy4zNTQgMCAxIDEgNC42NjctNC42NjdoLS4xNDZhNC41MjcgNC41MjcgMCAwIDAtNC40OTcgNC41NDRjMCAuMDQ3LjAwNS4xLjAwNS4xNDZsLS4wMjktLjAyM1ptMS4yMjUuNTE5YTMuNTcgMy41NyAwIDAgMS0uMDY0LS42NjVjLjAwMS0uMjYzLjAzMy0uNTI2LjA5My0uNzgyTDYuNDQgOC45MjVjLS4yNTYuMDYtLjUxOS4wOTItLjc4Mi4wOTNhMy41NyAzLjU3IDAgMCAxLS42MzYtLjA0bC0uMDI5LS4wMjRabTMuMzIgMi43MTJhMy4zNjUgMy4zNjUgMCAwIDEtMi43NzEtMS40NjRoLjE0NWE0LjUyNyA0LjUyNyAwIDAgMCA0LjUyMS00LjUxNXYtLjE0NWEzLjM1NCAzLjM1NCAwIDAgMS0xLjg5NiA2LjEyNFpcXFwiIGZpbGw9XFxcIiNGNEI3ODRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiM2ODc5N0VcXFwiIGQ9XFxcIk0xMC43ODMgNS4yMThhLjc1Ljc1IDAgMCAwLTEuMDY1IDBMOCA2Ljk0MiA2LjI4MyA1LjIxOGEuNzUzLjc1MyAwIDEgMC0xLjA2NSAxLjA2NEw2Ljk0MyA4IDUuMjE4IDkuNzE3YS43NS43NSAwIDAgMCAwIDEuMDY2Ljc1Ljc1IDAgMCAwIDEuMDY1IDBMOCA5LjA1NmwxLjcxOCAxLjcyNmEuNzUuNzUgMCAwIDAgMS4yMjktLjI0NS43NS43NSAwIDAgMC0uMTY0LS44Mkw5LjA1OCA4bDEuNzI1LTEuNzE4YS43NDguNzQ4IDAgMCAwIDAtMS4wNjRabTIuNTItMi41MkE3LjUwMSA3LjUwMSAwIDEgMCAyLjY5OCAxMy4zMDEgNy41MDEgNy41MDEgMCAxIDAgMTMuMzAzIDIuNjk5Wm0tMS4wNTggOS41NDdBNiA2IDAgMSAxIDE0IDhhNS45NjUgNS45NjUgMCAwIDEtMS43NTUgNC4yNDVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMkEyRjMwXFxcIiBkPVxcXCJNNC41ODggMy41IDcuMjEyLjg4YS40MTguNDE4IDAgMCAwLS41OTEtLjU5Mkw0IDIuOTEzIDEuMzguMjg4YS40MTguNDE4IDAgMSAwLS41OTMuNTkxTDMuNDEzIDMuNS43ODcgNi4xMmEuNDE3LjQxNyAwIDAgMCAuMTM2LjY4NC40MTcuNDE3IDAgMCAwIC40NTYtLjA5MUw0IDQuMDg4bDIuNjIgMi42MjVhLjQxNy40MTcgMCAwIDAgLjY4NC0uMTM2LjQxNy40MTcgMCAwIDAtLjA5Mi0uNDU2TDQuNTg4IDMuNVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNTIgNTJcXFwiPjxjaXJjbGUgY3g9XFxcIjI2XFxcIiBjeT1cXFwiMjZcXFwiIHI9XFxcIjI1LjI1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiLz48cGF0aCBkPVxcXCJNMzcuNCAzNy44MmMtLjA1MS0uNjA5LS4wNS01LjM4My0uMDM2LTguMzE4YS42LjYgMCAwIDAtLjU5OC0uNjA0aC0uMDAzYS42LjYgMCAwIDAtLjYuNTk4YzAgLjAyMi0uMDEgMi4xMi0uMDEgNC4yMDQuMDAyIDIuMTEyLjAwNCAzLjIyNC4wMjkgMy44MzRsLTkuODQ5IDIuOTYzYS41OTcuNTk3IDAgMCAwIC4wNTQtLjI0OHYtNy44OTdhLjYuNiAwIDEgMC0xLjIwMiAwdjcuODk3YzAgLjA1NS4wMDkuMTA4LjAyMi4xNTlsLTkuNTYtMi45MDgtLjAwOC03LjlhLjYuNiAwIDAgMC0uNi0uNjAxaC0uMDAxYS42LjYgMCAwIDAtLjYuNmwuMDA3IDguMzQ3YS42LjYgMCAwIDAgLjQyNS41NzRsMTAuODY4IDMuMzA0YS41OTIuNTkyIDAgMCAwIC4zNDggMGwxMC45MDMtMy4yOGEuNi42IDAgMCAwIC40MS0uNzI0Wm0tLjQ3Mi0uNDRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIm00MC4wNCAyMy43NDYtMy4zNjUtMS45MDItLjAxMy0uMDA2YTEyLjAwNCAxMi4wMDQgMCAwIDAtMi4zMzEtMy4yNTkuNi42IDAgMSAwLS44NDcuODUyIDEwLjc3OCAxMC43NzggMCAwIDEgMi42MjQgNC4yMTdsLTEuNTgyLjQzM2MtMS4yNTgtMy42MzMtNC43MzMtNi4xMzItOC42MTMtNi4xMzJhOS4xMTUgOS4xMTUgMCAwIDAtNC41NzIgMS4yMjguNjAxLjYwMSAwIDAgMCAuNjAzIDEuMDM5IDcuOTA4IDcuOTA4IDAgMCAxIDMuOTY5LTEuMDY2IDcuOTUgNy45NSAwIDAgMSA3LjQ1IDUuMjVsLTEuNTgzLjQzM2E2LjMxMiA2LjMxMiAwIDAgMC01Ljg2Ny00LjA0NyA2LjI5NSA2LjI5NSAwIDAgMC01Ljg3OSA0LjA3NWwtMS41ODYtLjQyNWE3Ljk0IDcuOTQgMCAwIDEgMS44NzEtMi45Ny42LjYgMCAxIDAtLjg1LS44NDkgOS4xNDggOS4xNDggMCAwIDAtMi4xODQgMy41MDZsLTEuNTgzLS40MjVjLjEwMi0uMzEuMjE4LS42MTMuMzQ2LS45MDlhLjYwNy42MDcgMCAwIDAgLjE3Mi0uMzc2IDEwLjc3NiAxMC43NzYgMCAwIDEgOS42OTMtNi4xYzEuODkgMCAzLjc0OS40OTcgNS4zNzUgMS40MzlhLjYwMS42MDEgMCAwIDAgLjYwMi0xLjA0IDExLjk0OSAxMS45NDkgMCAwIDAtNS45NzctMS42IDExLjk4IDExLjk4IDAgMCAwLTEwLjgxNCA2Ljg2bC0zLjEzOSAxLjc3NGEuNi42IDAgMCAwIC4zNTggMS4xMmwxLjMyLS4xMzYtMS40NzMgMS44N2EuNTk5LjU5OSAwIDAgMCAuMzAxLjk0N2wxMS4zNjEgMy4zNzhhLjYwMS42MDEgMCAwIDAgLjY5MS0uMjc0bDEuNDA5LTIuNDE4IDEuMzEgMi4xNzdhLjYuNiAwIDAgMCAuNjczLjI3bDExLjQ0Ny0zLjEyOWEuNjAyLjYwMiAwIDAgMCAuMzEzLS45NTFsLTEuNDg3LTEuODg5IDEuNDk5LjE1NmEuNi42IDAgMCAwIC4zNTgtMS4xMlptLTE0LjEyNy0xLjc1OGE1LjEwNCA1LjEwNCAwIDAgMSA0LjcwMiAzLjE2NWwtNC43MDMgMS4yODgtNC43MS0xLjI2NWE1LjA5IDUuMDkgMCAwIDEgNC43MTEtMy4xODhabS0yLjE5NiA3LjY1Mi0xMC4wNjEtMi45OTIgMS40Ni0xLjg1NUwyNSAyNy40MzlsLTEuMjgyIDIuMjAxWm00LjMxNS0uMjQtMS4xODQtMS45NjQgOS44Ny0yLjY0MyAxLjQ0OCAxLjgzOC0xMC4xMzQgMi43N1ptLTYuNDQ3LTE1Ljk3YS42MDEuNjAxIDAgMCAwIDEuMTU1LS4zM2wtLjgtMi44MDNhLjYwMS42MDEgMCAwIDAtMS4xNTYuMzNsLjgwMSAyLjgwNFptNy43NTUuNDc5YS42MDEuNjAxIDAgMCAwIC43NDItLjQxMmwuOC0yLjgwNGEuNi42IDAgMSAwLTEuMTU1LS4zM2wtLjggMi44MDRhLjYuNiAwIDAgMCAuNDEyLjc0MlptNi41NyAzLjY3N2EuNjAxLjYwMSAwIDAgMCAuNDItLjE3bDIuMDUzLTIuMDAzYS42LjYgMCAxIDAtLjgzOS0uODZsLTIuMDUyIDIuMDAyYS42LjYgMCAwIDAgLjQxOSAxLjAzWm0tMjAuNTQtLjIyMWEuNjAyLjYwMiAwIDAgMCAuODQtLjg2bC0yLjAwMy0xLjk1MmEuNi42IDAgMSAwLS44MzguODZsMi4wMDEgMS45NTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA1MiA1MlxcXCI+PGNpcmNsZSBjeD1cXFwiMjZcXFwiIGN5PVxcXCIyNlxcXCIgcj1cXFwiMjUuMjVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNVxcXCIvPjxwYXRoIGQ9XFxcIk0yMC44NzEgMTcuMjA4QTEwLjE2NyAxMC4xNjcgMCAwIDEgMjYgMTUuODIzYTEwLjExIDEwLjExIDAgMCAxIDcuMTk2IDIuOTguNTY2LjU2NiAwIDAgMCAuODA0IDBBLjU3LjU3IDAgMCAwIDM0IDE4YTExLjI0IDExLjI0IDAgMCAwLTgtMy4zMTNjLTIuMDA4IDAtMy45OC41MzItNS43MDMgMS41NGEuNTY4LjU2OCAwIDEgMCAuNTc0Ljk4MlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PHBhdGggZD1cXFwiTTI2IDEyYy0zLjc4IDAtNy4zMjEgMS40ODItOS45NzQgNC4xNzVhLjU3LjU3IDAgMCAwIC44MS43OThBMTIuNzcgMTIuNzcgMCAwIDEgMjYgMTMuMTM3YzcuMDkyIDAgMTIuODYzIDUuNzcgMTIuODYzIDEyLjg2MyAwIDIuMTg0LS41NDggNC4yNDQtMS41MTMgNi4wNDdsLTEuNzctMi43MDdhNC4zODEgNC4zODEgMCAwIDAgMS43MzQtMy40OSA0LjM5MiA0LjM5MiAwIDAgMC00LjM4OC00LjM4OCA0LjM0IDQuMzQgMCAwIDAtMi4zODkuNzA3IDUuOTMgNS45MyAwIDAgMC05LjEyMy4wNiA0LjM3NyA0LjM3NyAwIDAgMC0yLjQ3OS0uNzY3IDQuMzkyIDQuMzkyIDAgMCAwLTQuMzg3IDQuMzg3YzAgMS40MTUuNjc0IDIuNjc0IDEuNzE2IDMuNDc3bC0xLjYzNSAyLjY4MWExMi44NiAxMi44NiAwIDAgMSAuMjA0LTEyLjM5My41NjkuNTY5IDAgMSAwLS45ODctLjU2NUExNCAxNCAwIDAgMCAxMiAyNmMwIDUuMDk1IDIuNzM2IDkuNTY0IDYuODE3IDEyLjAxM2EuNTY2LjU2NiAwIDAgMCAuMzI1LjE4OUExMy45MTEgMTMuOTExIDAgMCAwIDI2IDQwYzcuNzE5IDAgMTQtNi4yOCAxNC0xNHMtNi4yODEtMTQtMTQtMTRabTYuOTI1IDEwLjU5OWEzLjI1MyAzLjI1MyAwIDAgMSAzLjI1IDMuMjUgMy4yNTMgMy4yNTMgMCAwIDEtMy4yNSAzLjI1Yy0uNTc2IDAtMS4xMjctLjE1LTEuNjE4LS40MzRBNS45MDYgNS45MDYgMCAwIDAgMzEuOTQgMjZhNS45MDMgNS45MDMgMCAwIDAtLjc1Ny0yLjg5NiAzLjIxNyAzLjIxNyAwIDAgMSAxLjc0LS41MDVaTTI2IDIxLjE5NkE0LjgxIDQuODEgMCAwIDEgMzAuODAzIDI2IDQuODEgNC44MSAwIDAgMSAyNiAzMC44MDQgNC44MSA0LjgxIDAgMCAxIDIxLjE5NSAyNiA0LjgxIDQuODEgMCAwIDEgMjYgMjEuMTk2Wm0tMTAuMzE2IDQuNjUzYTMuMjUzIDMuMjUzIDAgMCAxIDUuMDkyLTIuNjc4QTUuOTA1IDUuOTA1IDAgMCAwIDIwLjA1OCAyNmMwIC45MzMuMjE3IDEuODE2LjYwMSAyLjYwM2EzLjI1MyAzLjI1MyAwIDAgMS00Ljk3Ni0yLjc1NFptMy4zODEgMTAuOTgxYTEyLjk2MiAxMi45NjIgMCAwIDEtMy43NzktMy43MTlsMS45NTktMy4yMTNjLjUyLjIxOCAxLjA5LjMzOSAxLjY4OS4zMzkuODMyIDAgMS42MjctLjIzIDIuMzIxLS42NjVhNiA2IDAgMCAwIDEuMyAxLjI2NWwtMy40OSA1Ljk5M1pNMjYgMzguODY0Yy0yLjE0NiAwLTQuMTctLjUzLTUuOTUxLTEuNDYzbDMuNDktNS45OTVhNS45IDUuOSAwIDAgMCAyLjQ2LjUzNWMuODYxIDAgMS42OC0uMTg1IDIuNDE4LS41MTZsMy40OTUgNS45OTdBMTIuNzg0IDEyLjc4NCAwIDAgMSAyNiAzOC44NjRabTYuODk3LTIuMDEtMy40OS01Ljk5Yy40OS0uMzQ1LjkyNi0uNzYyIDEuMjkyLTEuMjM1YTQuMzQ5IDQuMzQ5IDAgMCAwIDIuMjI2LjYwN2MuNTkgMCAxLjE1Mi0uMTE4IDEuNjY2LS4zM2wyLjExIDMuMjI0YTEyLjk3MyAxMi45NzMgMCAwIDEtMy44MDQgMy43MjNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIk0yNiAyOS44MDNhMy44MjMgMy44MjMgMCAwIDAgMy4wNDgtMS41MjguNTY5LjU2OSAwIDAgMC0uOTEtLjY4IDIuNjY4IDIuNjY4IDAgMCAxLTQuMzM3LS4wODYuNTY5LjU2OSAwIDAgMC0uOTM4LjY0M0EzLjgwNCAzLjgwNCAwIDAgMCAyNiAyOS44MDNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTguMTY3IDN2LjVoMy4xNjZhLjE2Ny4xNjcgMCAwIDEgMCAuMzMzaC0xLjE2NnY3LjgzM2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMy4zMzNhMS41IDEuNSAwIDAgMS0xLjA2LS40MzlsLS4zNTQuMzU0LjM1NC0uMzU0YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMy44MzJILjY2N2EuMTY3LjE2NyAwIDEgMSAwLS4zMzNoMy4xNjZWMi4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDEuMzM0YTEuNSAxLjUgMCAwIDEgMS41IDEuNVYzWm0tLjgzNC41aC41VjIuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2LTEuMTY3SDUuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2IDEuMTY3VjMuNWgzLjE2NlptLTQuNjY2LjMzM2gtLjV2Ny44MzNhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjYgMS4xNjdoNS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjYtMS4xNjdWMy44MzNIMi42NjdabTIuMTE4IDYuNjE4YS4xNjcuMTY3IDAgMCAxLS4yODUtLjExOHYtNGEuMTY3LjE2NyAwIDEgMSAuMzMzIDB2NGEuMTY3LjE2NyAwIDAgMS0uMDQ4LjExOFptMi42NjYgMGEuMTY3LjE2NyAwIDAgMS0uMjg0LS4xMTh2LTRhLjE2Ny4xNjcgMCAwIDEgLjMzMyAwdjRhLjE2Ny4xNjcgMCAwIDEtLjA0OS4xMThaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xMC42MjQgNS42NjdoLTQuNjdMOC4yOSAzLjQxNGwyLjMzNSAyLjI1M1pNOC43OCAyLjQ3NGEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40MTMtLjEzMiAxLjEzMy40ODMgMS4xMzNoNi4zMzRjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMOC43OCAyLjQ3NFptMi42OCA2Ljg2SDUuMTE5Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDIuMTMyLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTMuODA3IDExLjE0LTEuNjE0LTEuNjE0YS42NjYuNjY2IDAgMCAwLS45NDYgMEw4Ljg2IDExLjkxM2EuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3M1YxNGEuNjY3LjY2NyAwIDAgMCAuNjY2LjY2NmgxLjYxNGEuNjY4LjY2OCAwIDAgMCAuNDczLS4xOTNsMi4zODctMi4zODdhLjY2Ny42NjcgMCAwIDAgMC0uOTQ2Wm0tMy4xNCAyLjE5M0gxMHYtLjY2N2wxLjcyLTEuNzIuNjY3LjY2Ny0xLjcyIDEuNzJabS00IDBINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWMy4zMzNBLjY2Ny42NjcgMCAwIDEgNCAyLjY2NmgzLjMzM3YyYTIgMiAwIDAgMCAyIDJoMnYuNjY3YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNS45NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwbC0uMjEzLS4wNzNINGEyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoMi42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM1ptMi05LjcyNyAxLjcyNiAxLjcyN2gtMS4wNmEuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZaTTUuMzMzIDkuMzMzaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtNGEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWm0wLTIuNjY3SDZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtLjY2N2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xLjMzNCA0SDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoMS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxnIGNsaXAtcGF0aD1cXFwidXJsKCNkb3VibGUtdGlja19zdmdfX2EpXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiPjxwYXRoIGQ9XFxcIk05Ljg0NSAzLjcwNmEuNjQ3LjY0NyAwIDAgMC0uOTQ3IDBsLTUuMDcgNS4xNEwxLjczMyA2LjcyYS42NDcuNjQ3IDAgMCAwLS45NDcgMCAuNjY5LjY2OSAwIDAgMCAwIC45NmwyLjU3IDIuNjA0YS42MS42MSAwIDAgMCAuNDcyLjIwNi42MS42MSAwIDAgMCAuNDc0LS4yMDZsNS41NDMtNS42MmEuNjY5LjY2OSAwIDAgMCAwLS45NlpcXFwiLz48cGF0aCBkPVxcXCJNMTMuNjMyIDMuMzZhMS4yMzQgMS4yMzQgMCAwIDAtMS43ODMgMEw3LjE5NyA4LjA3OGwtMS42NzctMS43YTEuMjM0IDEuMjM0IDAgMCAwLTEuNzgzIDAgMS4yNTYgMS4yNTYgMCAwIDAgMCAxLjc4NGwyLjU3IDIuNjA0Yy4xMDEuMTAzLjIyNy4yMDUuMzg3LjI3Ny4xNjQuMDc0LjMzMy4xMDQuNTAzLjEwNC4xNzEgMCAuMzQtLjAzLjUwNC0uMTA0LjE2LS4wNzIuMjg2LS4xNzQuMzg4LS4yNzdsNS41NDMtNS42MmExLjI1NiAxLjI1NiAwIDAgMCAwLTEuNzg0WlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMTc1XFxcIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cXFwiZG91YmxlLXRpY2tfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDE0djE0SDB6XFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjE2XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk04LjE2NyA5LjczM3YxLjIwOGwuODUzLS44NTQuODY3LS44NjdBLjE2LjE2IDAgMCAxIDEwIDkuMTY3Yy4wMyAwIC4wNy4wMS4xMTMuMDUzYS4xNi4xNiAwIDAgMSAuMDU0LjExNC4xNi4xNiAwIDAgMS0uMDU0LjExM2wtMiAyYy0uMDM3LjAzNy0uMDU0LjA0NS0uMDU4LjA0NkEuMTM2LjEzNiAwIDAgMSA4IDExLjVhLjEzNi4xMzYgMCAwIDEtLjA1NS0uMDA3LjIwNS4yMDUgMCAwIDEtLjA1OC0uMDQ2bC0yLTJhLjE2LjE2IDAgMCAxLS4wNTQtLjExMy4xNi4xNiAwIDAgMSAuMDU0LS4xMTRBLjE2LjE2IDAgMCAxIDYgOS4xNjdjLjAzIDAgLjA3LjAxLjExMy4wNTNsLjg2Ny44NjcuODUzLjg1NFYyYzAtLjA4Ni4wMjctLjEyLjAzNy0uMTMuMDEtLjAxLjA0NC0uMDM3LjEzLS4wMzcuMDg2IDAgLjEyLjAyNy4xMy4wMzcuMDEuMDEuMDM3LjA0NC4wMzcuMTN2Ny43MzNabTIuNS0zLjIzM0gxMmMuODU3IDAgMS41LjY0MyAxLjUgMS41djQuNjY3YzAgLjg1Ny0uNjQzIDEuNS0xLjUgMS41SDRjLS44NTcgMC0xLjUtLjY0My0xLjUtMS41VjhjMC0uODU3LjY0My0xLjUgMS41LTEuNWgxLjMzM2MuMDg3IDAgLjEyLjAyNy4xMy4wMzcuMDEuMDEuMDM3LjA0My4wMzcuMTMgMCAuMDg2LS4wMjcuMTItLjAzNy4xMy0uMDEuMDEtLjA0My4wMzctLjEzLjAzN0g0Yy0uMzE0IDAtLjYxNC4xMDYtLjgzNy4zMy0uMjIzLjIyMi0uMzMuNTIzLS4zMy44MzZ2NC42NjdjMCAuMzEzLjEwNy42MTQuMzMuODM3LjIyMy4yMjMuNTIzLjMzLjgzNy4zM2g4Yy4zMTQgMCAuNjE0LS4xMDcuODM3LS4zMy4yMjMtLjIyMy4zMy0uNTI0LjMzLS44MzdWOGMwLS4zMTMtLjEwNy0uNjE0LS4zMy0uODM3YTEuMTY2IDEuMTY2IDAgMCAwLS44MzctLjMzaC0xLjMzM2MtLjA4NyAwLS4xMi0uMDI2LS4xMy0uMDM2LS4wMS0uMDEtLjAzNy0uMDQ0LS4wMzctLjEzIDAtLjA4Ny4wMjctLjEyLjAzNy0uMTMuMDEtLjAxLjA0My0uMDM3LjEzLS4wMzdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTIuNzk2IDUuODcuMDIzLjA3YS4zMDUuMzA1IDAgMCAxIC4wMTQuMDU0djYuNjcyYTEuNSAxLjUgMCAwIDEtMS41IDEuNUg0LjY2N2ExLjUgMS41IDAgMCAxLTEuNS0xLjVWMy4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTc4YS4yMzMuMjMzIDAgMCAxIC4wMzMuMDE0bC4xMS4wNmguMDQ1bDMuOTYzIDMuOTYyWm0tMy4xMS0yLjYxNy0uODUzLS44NTR2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgMTAgNS44MzNoMi4yNjdsLS44NTMtLjg1NC0xLjcyNy0xLjcyNlpNOC41IDIuNjY2di0uNUg0LjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAzLjUgMy4zMzN2OS4zMzNhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjdoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjd2LTYuNUgxMGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uMzMzIDcuMDZ2MS4yMzdsLjg2LS44OS4xODktLjE5NWEuMTcuMTcgMCAwIDEgLjIzNy4yNDJsLTEuMzI4IDEuMzI4YS4xNjcuMTY3IDAgMCAxLS4wNTIuMDMybC0uMDExLjAwNC0uMDEuMDA1YS4xMjcuMTI3IDAgMCAxLS4xMDMgMGwtLjAxLS4wMDUtLjAxMi0uMDA0YS4xNjcuMTY3IDAgMCAxLS4wNTItLjAzMmwtMS4zMjgtMS4zMjlhLjE3LjE3IDAgMCAxIC4yMzctLjI0MWwuMTkuMTk2Ljg2Ljg4OVY4YS4xNjcuMTY3IDAgMCAxIC4zMzMgMHYxLjcyNlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0yLjYyNiAxMy4zNzQuMjM2LS4yMzYtLjIzNi4yMzZhMSAxIDAgMCAwIC43MDcuMjkzaDkuMzM0YTEgMSAwIDAgMCAuNzA3LS4yOTNsLS4yMzYtLjIzNi4yMzYuMjM2YTEgMSAwIDAgMCAuMjkzLS43MDdWMTBhLjMzMy4zMzMgMCAwIDEgLjU2OS0uMjM2bC4yMzUtLjIzNS0uMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuMDk3LjIzNnYyLjY2N2ExLjY2NyAxLjY2NyAwIDAgMS0xLjY2NiAxLjY2NkgzLjMzM2ExLjY2NyAxLjY2NyAwIDAgMS0xLjY2Ni0xLjY2NlYxMGMwLS4wODguMDM1LS4xNzMuMDk3LS4yMzZMMS41MyA5LjUzbC4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC40NzIgMGwuMjM1LS4yMzUtLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjA5Ny4yMzZ2Mi42NjdhMSAxIDAgMCAwIC4yOTMuNzA3Wm01LjI1NS0zLjA2Ni0uMDA3LS4wMDMtLjAwNy0uMDAyYS4zMzMuMzMzIDAgMCAxLS4xMDgtLjA2OEw1LjA5NiA3LjU3YS4zMzYuMzM2IDAgMCAxIC4zNjYtLjU0OGwuMTI4LS4zMDgtLjEyOC4zMDhjLjA0LjAxNy4wNzguMDQxLjEwOS4wNzJMNy4wOTcgOC42M2wuNTcuNTcyVjJhLjMzMy4zMzMgMCAxIDEgLjY2NiAwdjcuMjAxbC41Ny0uNTcyIDEuNTI2LTEuNTMzYS4zMzYuMzM2IDAgMCAxIC40NzUuNDc1bC0yLjY2MyAyLjY2NGEuMzMzLjMzMyAwIDAgMS0uMTA4LjA2OGwtLjAwNy4wMDItLjAwNy4wMDNhLjI5Mi4yOTIgMCAwIDEtLjIzOCAwWlxcXCIgZmlsbD1cXFwiY3VycmVudGNvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwIDZcXFwiPjxwYXRoIGQ9XFxcIk04LjkzMi44NzhhLjUuNSAwIDAgMSAwIC43MUw1LjM1NyA1LjEyMWwtLjAwMi4wMDNhLjUuNSAwIDAgMS0uNzEgMHYtLjAwMUwxLjExIDEuNTg5YS41LjUgMCAwIDEgMC0uNzFWLjg3N2EuNS41IDAgMCAxIC43MDUgMGwyLjk1IDIuOTUuMjMzLjIzMy4yMzYtLjIzMkw4LjIyNi44NzlWLjg3OGEuNS41IDAgMCAxIC43MDYgMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE3LjUgMTBhLjgzMy44MzMgMCAwIDAtLjgzMy44MzN2NWEuODMzLjgzMyAwIDAgMS0uODM0LjgzNEg0LjE2N2EuODMzLjgzMyAwIDAgMS0uODM0LS44MzRWNC4xNjdhLjgzMy44MzMgMCAwIDEgLjgzNC0uODM0aDVhLjgzMy44MzMgMCAxIDAgMC0xLjY2NmgtNWEyLjUgMi41IDAgMCAwLTIuNSAyLjV2MTEuNjY2YTIuNSAyLjUgMCAwIDAgMi41IDIuNWgxMS42NjZhMi41IDIuNSAwIDAgMCAyLjUtMi41di01QS44MzMuODMzIDAgMCAwIDE3LjUgMTBaTTUgMTAuNjMzdjMuNTM0YS44MzMuODMzIDAgMCAwIC44MzMuODMzaDMuNTM0YS44MzMuODMzIDAgMCAwIC41OTEtLjI0Mmw1Ljc2Ny01Ljc3NSAyLjM2Ny0yLjMxNmEuODMzLjgzMyAwIDAgMCAwLTEuMTg0bC0zLjUzNC0zLjU3NWEuODM0LjgzNCAwIDAgMC0xLjE4MyAwbC0yLjM1IDIuMzU5LTUuNzgzIDUuNzc1YS44MzQuODM0IDAgMCAwLS4yNDIuNTkxWm04Ljk2Ny02Ljk1OCAyLjM1OCAyLjM1OC0xLjE4MyAxLjE4NC0yLjM1OS0yLjM1OSAxLjE4NC0xLjE4M1ptLTcuMyA3LjMgNC45NDEtNC45NDIgMi4zNTkgMi4zNTktNC45NDIgNC45NDFINi42Njd2LTIuMzU4WlxcXCIgZmlsbD1cXFwiIzY4Nzk3RVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNzE4IDEyaDIuODI3YS42NjYuNjY2IDAgMCAwIC40NzMtLjE5NGw0LjYxNC00LjYyIDEuODkzLTEuODUzYS42NjguNjY4IDAgMCAwIDAtLjk0N2wtMi44MjctMi44NmEuNjY3LjY2NyAwIDAgMC0uOTQ2IDBsLTEuODggMS44ODctNC42MjcgNC42MmEuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3M3YyLjgyN2EuNjY3LjY2NyAwIDAgMCAuNjY2LjY2N1ptNi41MDctOS4wNiAxLjg4NyAxLjg4Ni0uOTQ3Ljk0Ny0xLjg4Ny0xLjg4Ny45NDctLjk0NlptLTUuODQgNS44NCAzLjk1My0zLjk1NCAxLjg4NyAxLjg4Ny0zLjk1MyAzLjk1M0g0LjM4NVY4Ljc4Wm0xMCA0LjU1M2gtMTJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2gxMmEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMiAyM1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTEgMi42MjZjLTUuMDQyIDAtOS4xNjcgNC4xMjUtOS4xNjcgOS4xNjdTNS45NTggMjAuOTYgMTEgMjAuOTZzOS4xNjctNC4xMjUgOS4xNjctOS4xNjdTMTYuMDQyIDIuNjI2IDExIDIuNjI2Wm0wIDEzLjc1Yy0uNTUgMC0uOTE3LS4zNjYtLjkxNy0uOTE2cy4zNjctLjkxNy45MTctLjkxNy45MTcuMzY3LjkxNy45MTctLjM2Ny45MTYtLjkxNy45MTZabS45MTctNC41ODNjMCAuNTUtLjM2Ny45MTctLjkxNy45MTdzLS45MTctLjM2Ny0uOTE3LS45MTdWOC4xMjZjMC0uNTUuMzY3LS45MTYuOTE3LS45MTZzLjkxNy4zNjYuOTE3LjkxNnYzLjY2N1pcXFwiIGZpbGw9XFxcIiNFMzRENUJcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgY2xhc3M9XFxcImV4Y2xhbWF0aW9uLXdhcm5pbmdfc3ZnX19lbGVtZW50cy1zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOSA0Ljc5NWEuODMzLjgzMyAwIDAgMC0uODM0LjgzNHYzLjMzM2EuODMzLjgzMyAwIDAgMCAxLjY2NyAwVjUuNjI5YS44MzMuODMzIDAgMCAwLS44MzQtLjgzNFptLjc2NiA3LjE4NGEuNjMyLjYzMiAwIDAgMC0uMDc1LS4xNWwtLjEtLjEyNWEuODMzLjgzMyAwIDAgMC0uOTA4LS4xNzUuOTU4Ljk1OCAwIDAgMC0uMjc1LjE3NS44MzMuODMzIDAgMCAwLS4xNzUuOTA4Ljc1Ljc1IDAgMCAwIC40NS40NS43ODMuNzgzIDAgMCAwIC42MzMgMCAuNzUuNzUgMCAwIDAgLjQ1LS40NS44MzQuODM0IDAgMCAwIC4wNjctLjMxNyAxLjEzMyAxLjEzMyAwIDAgMCAwLS4xNjYuNTMyLjUzMiAwIDAgMC0uMDY3LS4xNVpNOC45OTkuNjI5YTguMzMzIDguMzMzIDAgMSAwIDAgMTYuNjY2QTguMzMzIDguMzMzIDAgMCAwIDkgLjYzWm0wIDE1QTYuNjY2IDYuNjY2IDAgMSAxIDkgMi4yOTYgNi42NjYgNi42NjYgMCAwIDEgOSAxNS42M1pcXFwiIGZpbGw9XFxcIiNGNEI3ODRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjEgMjBcXFwiPjxtYXNrIGlkPVxcXCJleHBvcnRfc3ZnX19hXFxcIiB3aWR0aD1cXFwiMjFcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHg9XFxcIjBcXFwiIHk9XFxcIjBcXFwiIG1hc2tVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiIHN0eWxlPVxcXCJtYXNrLXR5cGU6YWxwaGFcXFwiPjxwYXRoIGZpbGw9XFxcIiNEOUQ5RDlcXFwiIGQ9XFxcIk0uNSAwaDIwdjIwSC41elxcXCIvPjwvbWFzaz48ZyBtYXNrPVxcXCJ1cmwoI2V4cG9ydF9zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNC42NjcgMTcuNWMtLjQ1OSAwLS44NTEtLjE2My0xLjE3Ny0uNDlBMS42MDUgMS42MDUgMCAwIDEgMyAxNS44MzNWNC4xNjdjMC0uNDU5LjE2My0uODUxLjQ5LTEuMTc3LjMyNi0uMzI3LjcxOC0uNDkgMS4xNzctLjQ5SDEwLjV2MS42NjdINC42Njd2MTEuNjY2aDExLjY2NlYxMEgxOHY1LjgzM2MwIC40NTktLjE2My44NTEtLjQ5IDEuMTc3LS4zMjYuMzI3LS43MTguNDktMS4xNzcuNDlINC42NjdabTMuOTE2LTQuNDE3LTEuMTY2LTEuMTY2IDcuNzUtNy43NWgtM1YyLjVIMTh2NS44MzNoLTEuNjY3di0zbC03Ljc1IDcuNzVaXFxcIi8+PC9nPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjc1MSA3LjIxM2EuNzMyLjczMiAwIDAgMC0uNS4xOTUuNjQ3LjY0NyAwIDAgMC0uMjA4LjQ3MnY0Ljc4NmEuNjQ3LjY0NyAwIDAgMS0uMjA3LjQ3Mi43MzEuNzMxIDAgMCAxLS41MDEuMTk1SDMuNTQzYS43MzEuNzMxIDAgMCAxLS41LS4xOTUuNjQ3LjY0NyAwIDAgMS0uMjA4LS40NzJWNS4zMzNjMC0uMTc3LjA3NC0uMzQ2LjIwNy0uNDcxYS43MzEuNzMxIDAgMCAxIC41MDEtLjE5Nmg1LjA4NmMuMTg4IDAgLjM2OC0uMDcuNS0uMTk1QS42NDcuNjQ3IDAgMCAwIDkuMzM4IDRhLjY0Ny42NDcgMCAwIDAtLjIwNy0uNDcyLjczMS43MzEgMCAwIDAtLjUwMS0uMTk1SDMuNTQzYy0uNTY0IDAtMS4xMDQuMjEtMS41MDMuNTg2YTEuOTQyIDEuOTQyIDAgMCAwLS42MjIgMS40MTR2Ny4zMzNjMCAuNTMuMjI0IDEuMDQuNjIyIDEuNDE1LjM5OS4zNzUuOTQuNTg1IDEuNTAzLjU4NWg3Ljc5MmMuNTYzIDAgMS4xMDQtLjIxIDEuNTAyLS41ODUuMzk5LS4zNzUuNjIzLS44ODQuNjIzLTEuNDE1VjcuODhhLjY0Ny42NDcgMCAwIDAtLjIwOC0uNDcyLjczMi43MzIgMCAwIDAtLjUtLjE5NVptMi43NzctNS40NjdhLjY5LjY5IDAgMCAwLS4zODMtLjM2Ljc0Ny43NDcgMCAwIDAtLjI2OS0uMDUzaC00LjI1YS43MzIuNzMyIDAgMCAwLS41LjE5NS42NDcuNjQ3IDAgMCAwLS4yMDguNDcyYzAgLjE3Ni4wNzUuMzQ2LjIwNy40NzFhLjczMi43MzIgMCAwIDAgLjUwMS4xOTVoMi41NDNsLTcuMjk2IDYuODZhLjY2Ni42NjYgMCAwIDAtLjE1NS4yMTcuNjMzLjYzMyAwIDAgMCAuMTU1LjczLjc0Ni43NDYgMCAwIDAgMS4wMDYgMGw3LjI4OS02Ljg2N1Y2YzAgLjE3Ni4wNzUuMzQ2LjIwNy40NzFhLjczMi43MzIgMCAwIDAgLjUwMS4xOTVjLjE4OCAwIC4zNjgtLjA3LjUwMS0uMTk1QS42NDcuNjQ3IDAgMCAwIDE1LjU4NSA2VjJhLjYzMy42MzMgMCAwIDAtLjA1Ny0uMjU0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxN1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuNjEzIDcuOThDMTMuMjY3IDQuODUzIDEwLjczMyAyLjkxMyA4IDIuOTEzYy0yLjczMyAwLTUuMjY3IDEuOTQtNi42MTMgNS4wNjdhLjY2Ny42NjcgMCAwIDAgMCAuNTMzQzIuNzMzIDExLjY0IDUuMjY3IDEzLjU4IDggMTMuNThjMi43MzMgMCA1LjI2Ny0xLjk0IDYuNjEzLTUuMDY3YS42NjcuNjY3IDAgMCAwIDAtLjUzM1pNOCAxMi4yNDZjLTIuMTEzIDAtNC4xMTMtMS41MjYtNS4yNjctNCAxLjE1NC0yLjQ3MyAzLjE1NC00IDUuMjY3LTQgMi4xMTMgMCA0LjExMyAxLjUyNyA1LjI2NyA0LTEuMTU0IDIuNDc0LTMuMTU0IDQtNS4yNjcgNFpNOCA1LjU4YTIuNjY3IDIuNjY3IDAgMSAwIDAgNS4zMzNBMi42NjcgMi42NjcgMCAwIDAgOCA1LjU4Wm0wIDRhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2N0ExLjMzMyAxLjMzMyAwIDAgMSA4IDkuNThaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE1MCAxNTBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBjeD1cXFwiNzVcXFwiIGN5PVxcXCI3NVxcXCIgcj1cXFwiNzVcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fYSlcXFwiLz48cGF0aCBkPVxcXCJNNDUuNTQ4IDU0LjIyYzAtMi4zOCAwLTMuNTcuNDctNC40NzVhNC4xNzggNC4xNzggMCAwIDEgMS43ODItMS43ODFjLjkwNi0uNDcgMi4wOTUtLjQ3IDQuNDc1LS40N2gxNy41NTdjMS4wMTIgMCAxLjUxOCAwIDEuOTk1LjExMy40MDYuMDk2Ljc5NS4yNTMgMS4xNTQuNDY1LjQyMy4yNS43ODguNiAxLjUxNyAxLjMwMmwuNDMuNDE2Yy43My43MDIgMS4wOTQgMS4wNTMgMS41MTcgMS4zMDIuMzYuMjEyLjc0OC4zNjkgMS4xNTQuNDY1LjQ3Ny4xMTQuOTgzLjExNCAxLjk5Ni4xMTRoMTcuNzE4YzIuMzc5IDAgMy41NjggMCA0LjQ3NC40N2E0LjE4MiA0LjE4MiAwIDAgMSAxLjc4MiAxLjc4MmMuNDcuOTA2LjQ3IDIuMDk1LjQ3IDQuNDc0djQwLjA0NmMwIDEuMTkgMCAxLjc4NC0uMjM1IDIuMjM3YTIuMDgzIDIuMDgzIDAgMCAxLS44OTEuODkxYy0uNDUzLjIzNS0xLjA0OC4yMzUtMi4yMzcuMjM1SDUxLjYwMmMtMi4xNDEgMC0zLjIxMiAwLTQuMDI3LS40MjNhMy43NjMgMy43NjMgMCAwIDEtMS42MDQtMS42MDRjLS40MjMtLjgxNS0uNDIzLTEuODg1LS40MjMtNC4wMjdWNTQuMjJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2IpXFxcIi8+PHBhdGggZD1cXFwiTTY2LjY1NiA2Mi4zMTFoMzguNTMxYzEuNjcyIDAgMi45MDQgMCAzLjgzLjEzMy45Mi4xMzMgMS40OTkuMzkgMS44OTQuODc3LjM5NC40ODYuNTI4IDEuMTA2LjQ2NyAyLjAzNC0uMDYxLjkzMy0uMzE0IDIuMTQtLjY1OCAzLjc3NWwtNS44OTQgMjcuOTkyYy0uMjM1IDEuMTE3LS40MDggMS45MzgtLjYyMSAyLjU2Mi0uMjExLjYxOS0uNDU1IDEuMDIzLS44MTkgMS4zMTgtLjM2My4yOTUtLjgwOC40NS0xLjQ1OC41MjktLjY1NC4wOC0xLjQ5My4wODEtMi42MzQuMDgxSDUwLjE1N2MuOTItMS4xMDEgMS40MjItMi4yNDUgMS45MTctMy44NjEuMjI1LS43MzQuNDUtMS41NjguNzEyLTIuNTQybC4xNjgtLjYyMmMuMzM3LTEuMjQ4Ljc0Mi0yLjcxNCAxLjI4LTQuNDc0IDEuNTUyLTUuMDYgNS4xMDUtMTcuMjQzIDYuOTg4LTIzLjcyMi4yOTctMS4wMjEuNTE1LTEuNzcuNzU1LTIuMzM5LjIzOC0uNTYzLjQ5LS45My44NDItMS4xOTQuMzUyLS4yNjUuNzc0LS40MDQgMS4zODItLjQ3NS42MTItLjA3MiAxLjM5Mi0uMDcyIDIuNDU1LS4wNzJaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fYylcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjM5XFxcIi8+PHBhdGggZD1cXFwiTTY2LjY1NiA2Mi4zMTFoMzguNTMxYzEuNjcyIDAgMi45MDQgMCAzLjgzLjEzMy45Mi4xMzMgMS40OTkuMzkgMS44OTQuODc3LjM5NC40ODYuNTI4IDEuMTA2LjQ2NyAyLjAzNC0uMDYxLjkzMy0uMzE0IDIuMTQtLjY1OCAzLjc3NWwtNS44OTQgMjcuOTkyYy0uMjM1IDEuMTE3LS40MDggMS45MzgtLjYyMSAyLjU2Mi0uMjExLjYxOS0uNDU1IDEuMDIzLS44MTkgMS4zMTgtLjM2My4yOTUtLjgwOC40NS0xLjQ1OC41MjktLjY1NC4wOC0xLjQ5My4wODEtMi42MzQuMDgxSDUwLjE1N2MuOTItMS4xMDEgMS40MjItMi4yNDUgMS45MTctMy44NjEuMjI1LS43MzQuNDUtMS41NjguNzEyLTIuNTQybC4xNjgtLjYyMmMuMzM3LTEuMjQ4Ljc0Mi0yLjcxNCAxLjI4LTQuNDc0IDEuNTUyLTUuMDYgNS4xMDUtMTcuMjQzIDYuOTg4LTIzLjcyMi4yOTctMS4wMjEuNTE1LTEuNzcuNzU1LTIuMzM5LjIzOC0uNTYzLjQ5LS45My44NDItMS4xOTQuMzUyLS4yNjUuNzc0LS40MDQgMS4zODItLjQ3NS42MTItLjA3MiAxLjM5Mi0uMDcyIDIuNDU1LS4wNzJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2QpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi44XFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fZSlcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjM5XFxcIi8+PHBhdGggZD1cXFwiTTU1Ljk5MyA1MS44MjhoOC4zNTZhMS45MzMgMS45MzMgMCAwIDEgMCAzLjg2NmgtOC4zNTZhMS45MzMgMS45MzMgMCAxIDEgMC0zLjg2NlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fZilcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjlcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19nKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzEyXFxcIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19hXFxcIiB4MT1cXFwiNzVcXFwiIHkxPVxcXCIwXFxcIiB4Mj1cXFwiNzVcXFwiIHkyPVxcXCIxNTBcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjRTNFQ0ZBXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjREFFN0ZGXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2JcXFwiIHgxPVxcXCI2Mi40MlxcXCIgeTE9XFxcIjU5LjM3NFxcXCIgeDI9XFxcIjEwNi41NTRcXFwiIHkyPVxcXCI3NS43MTlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjN0ZDMEZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjNDA4OEY0XFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2NcXFwiIHgxPVxcXCI0Ni41OTNcXFwiIHkxPVxcXCI2NC45NTFcXFwiIHgyPVxcXCI2OC43NDZcXFwiIHkyPVxcXCIxMTguMzcyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2RcXFwiIHgxPVxcXCIxMDguNVxcXCIgeTE9XFxcIjk4XFxcIiB4Mj1cXFwiNDFcXFwiIHkyPVxcXCI5OS41XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI0I0RDRGN1xcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjEyOFxcXCIgc3RvcC1jb2xvcj1cXFwiIzhCQkRGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjI2MlxcXCIgc3RvcC1jb2xvcj1cXFwiIzkxQzJGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc1OVxcXCIgc3RvcC1jb2xvcj1cXFwiIzlGQ0ZGRFxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzlFQ0VGRFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19lXFxcIiB4MT1cXFwiNDYuNTkzXFxcIiB5MT1cXFwiNjQuOTUxXFxcIiB4Mj1cXFwiNjguNzQ2XFxcIiB5Mj1cXFwiMTE4LjM3MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19mXFxcIiB4MT1cXFwiNTIuOTUyXFxcIiB5MT1cXFwiNTEuMzkzXFxcIiB4Mj1cXFwiNzAuMTA2XFxcIiB5Mj1cXFwiNTYuNDYxXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2dcXFwiIHgxPVxcXCI1MS43ODJcXFwiIHkxPVxcXCI1Mi41NjJcXFwiIHgyPVxcXCI2MC4xNzFcXFwiIHkyPVxcXCI1NS44NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNjYgNjNcXFwiPjxwYXRoIGQ9XFxcIk0uODMgNTguOTFWMjguN2g4LjcyNXYzMC4yMUguODNabTM1LjAxNy0yLjkzYy0xLjk4MyAyLjQxNi00LjgzNSAzLjc3Ny04LjYxNSAzLjc3Ny02LjA3NiAwLTEwLjk3MS0zLjc3OC0xMC45NzEtOS42MDMgMC01Ljc2MyA0Ljg5OC04LjYxIDExLjc3Ny04Ljk4NSA1LjI3LS4zMSA2Ljk0My0uODY4IDYuOTQzLTIuNjYzIDAtMS43MzYtMS42MTEtMi45MTMtNC40NjMtMi45MTMtMy40NyAwLTQuOTYgMS43MzYtNS4xNDUgMy41OTRoLTguNDk0Yy40MzQtNi42MjggNS4zOTItMTEuMjE0IDEzLjcwMS0xMS4yMTQgOC4xMjIgMCAxMy4zMyA0LjM5OCAxMy4zMyAxMi42Mzd2MTguNDYzaC03LjI1NGwtLjgwOS0zLjA5NFptLTEwLjc4Ni02LjE5NWMwIDEuNzM2IDEuNTUgMi43ODggNC4wMyAyLjc4OCAzLjM0OCAwIDYuMDEyLTEuODU4IDYuMDEyLTUuNjM4VjQ1Ljgycy0xLjYxMS43NDMtNC45Ni45M2MtMy42NTguMTg1LTUuMDgyIDEuMzYyLTUuMDgyIDMuMDM1Wm0zOC4zMDcgOS40MTZjLTYuNjMyIDAtMTAuNDc3LTMuODQtMTAuNDc3LTEwLjUzM1YzNi44MzZoLTUuMDgzdi04LjExN2g1LjA4M3YtNC40NjFsOC44MDItNy40MzRWMjguNzJoNy42MjZ2OC4xMTdoLTcuNjI2VjQ3LjQzYzAgMi45MTIgMS45MjIgMy41OTMgMy43MiAzLjU5M2E5LjUzOSA5LjUzOSAwIDAgMCAzLjcyMS0uODA1djcuOTkyYzAgLjAwMi0yLjM1NS45OTItNS43NjYuOTkyWk0uMDggMTkuNjM0YzAtMi44NSAyLjIzLTUuMTQyIDUuMDgyLTUuMTQyYTUuMTMgNS4xMyAwIDAgMSA1LjE0NSA1LjE0MmMwIDIuNzg4LTIuMjkzIDUuMDgtNS4xNDUgNS4wOGE1LjA2MyA1LjA2MyAwIDAgMS01LjA4Mi01LjA4Wk03NS44MDkgNTguOTFWMjguN2g4LjcyNnYzMC4yMWgtOC43MjZabTIwLjE1NC0zOS4yMDJjMC0xLjQtLjE5LTIuNzYtLjUzNy00LjA1M2ExNS41MSAxNS41MSAwIDAgMC0xLjU2OS0zLjc3MiAxNS42NjUgMTUuNjY1IDAgMCAwLTIuNDg5LTMuMjQxIDE1LjczMiAxNS43MzIgMCAwIDAtNy4wMTgtNC4wNSAxNS42NTggMTUuNjU4IDAgMCAwLTQuMDUyLS41MzNoLS4wMDZhMTUuNzUgMTUuNzUgMCAwIDAtNC4wNDkuNTNjLTEuMzQuMzU3LTIuNjA1Ljg4OC0zLjc3NyAxLjU2NUExNS42NyAxNS42NyAwIDAgMCA2OS4yMiA4LjY0YTE1Ljc3IDE1Ljc3IDAgMCAwLTIuNDkyIDMuMjQyIDE1LjY0OCAxNS42NDggMCAwIDAtMS41NzIgMy43NzRsMi4yNDIuNjAyYTEzLjQyNyAxMy40MjcgMCAwIDEgMy40NjItNS45NzggMTMuNDI2IDEzLjQyNiAwIDAgMSA1Ljk4NC0zLjQ1IDEzLjQyNiAxMy40MjYgMCAwIDEgMy40NDgtLjQ1aC4wMDZjMS4xOTUgMCAyLjM1LjE1OCAzLjQ1NC40NTNhMTMuNDEyIDEzLjQxMiAwIDAgMSA1Ljk4IDMuNDQ5Yy44MTkuODIgMS41MzEgMS43NSAyLjExOSAyLjc2YTEzLjMgMTMuMyAwIDAgMSAxLjc5MyA2LjY2NHYuMDEyYTEzLjM4IDEzLjM4IDAgMCAxLS40NTEgMy40NDMgMTMuMjE3IDEzLjIxNyAwIDAgMS0xLjMzNCAzLjIxOWwyLjAxIDEuMTZhMTUuNTM5IDE1LjUzOSAwIDAgMCAxLjU2Ni0zLjc3OCAxNS43IDE1LjcgMCAwIDAgLjUzLTQuMDQxbC0uMDAyLS4wMTJaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTEwMC4wMjMgMTkuNzA4YTE5LjY1NSAxOS42NTUgMCAwIDAtMi42NDQtOS44NTUgMTkuODEgMTkuODEgMCAwIDAtNy4yMi03LjIxM0ExOS42MTIgMTkuNjEyIDAgMCAwIDg1LjQwMy42NyAxOS44MSAxOS44MSAwIDAgMCA4MC4yOTggMGgtLjAwNmMtMS43NjUgMC0zLjQ3My4yMzMtNS4xMDIuNjY2YTE5LjUxMyAxOS41MTMgMCAwIDAtNC43NTkgMS45NjkgMTkuODI0IDE5LjgyNCAwIDAgMC00LjA4NiAzLjEzNGwxLjIzMSAxLjIzYTE4LjEwNiAxOC4xMDYgMCAwIDEgMy43MjYtMi44NTUgMTcuODAzIDE3LjgwMyAwIDAgMSA0LjM0LTEuNzkzIDE4LjA4NCAxOC4wODQgMCAwIDEgNC42NDgtLjYwN2guMDA1YTE3Ljk1IDE3Ljk1IDAgMCAxIDEyLjcxMyA1LjI2MSAxNy45MzMgMTcuOTMzIDAgMCAxIDUuMjczIDEyLjcwM3YuMDExYTE4LjAzIDE4LjAzIDAgMCAxLS42MDcgNC42NDMgMTcuNjc1IDE3LjY3NSAwIDAgMS0xLjc5NyA0LjMzNyAxOC4wMjMgMTguMDIzIDAgMCAxLTIuODU3IDMuNzIzbDEuMjMxIDEuMjMxYTE5Ljc0MyAxOS43NDMgMCAwIDAgMy4xMzYtNC4wODQgMTkuNiAxOS42IDAgMCAwIDEuOTctNC43NTZjLjQzNC0xLjYyNS42NjYtMy4zMzIuNjY2LTUuMDk0di0uMDFaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTkwLjk0NSAxNi44NTVhMTAuOTQ4IDEwLjk0OCAwIDAgMC0xLjEwNC0yLjY1NSAxMS4xNTUgMTEuMTU1IDAgMCAwLTEuNzUtMi4yOCAxMS4wNDggMTEuMDQ4IDAgMCAwLTIuMjgyLTEuNzQ3QTEwLjk2NCAxMC45NjQgMCAwIDAgODAuMyA4LjY5NWgtLjAwNmMtLjk4NyAwLTEuOTQuMTMtMi44NDkuMzcyYTEwLjkxIDEwLjkxIDAgMCAwLTIuNjYgMS4xIDEwLjk5NCAxMC45OTQgMCAwIDAtNC4wMzcgNC4wMjcgMTEgMTEgMCAwIDAtMS40ODQgNS41MXYuMDEyYTEwLjkyNCAxMC45MjQgMCAwIDAgMS40NzYgNS41MDVsMy4wMTMtMS43MzhhNy41MzUgNy41MzUgMCAwIDEtMS4wMS0zLjc3di0uMDFhNy41NTMgNy41NTMgMCAwIDEgNy41NDgtNy41MzNoLjAwNmE3LjUyNCA3LjUyNCAwIDAgMSAzLjc2OSAxLjAxMiA3LjU1IDcuNTUgMCAwIDEgMy41MTMgNC41NzJjLjE2Ny42Mi4yNTggMS4yNzYuMjU4IDEuOTUxaDMuNDc5Yy4wMDMtLjk4NC0uMTI4LTEuOTQtLjM3Mi0yLjg1WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk04Ny41ODUgMTcuNzY1YTcuNTQyIDcuNTQyIDAgMCAwLTEuOTU1LTMuMzhsLTEuNjQgMS42MzlhNS4yNjQgNS4yNjQgMCAwIDEgMS4zNTQgMi4zNDMgNS4xODQgNS4xODQgMCAwIDEgMCAyLjcwNSA1LjIzOSA1LjIzOSAwIDAgMS0zLjY5OCAzLjY5NSA1LjE5NSA1LjE5NSAwIDAgMS0yLjcwNyAwIDUuMjk2IDUuMjk2IDAgMCAxLTEuMjYtLjUyMWwtMS4xNiAyLjAwOGE3LjUyOCA3LjUyOCAwIDAgMCAzLjc3NCAxLjAxYy42NzcgMCAxLjMzLS4wOTEgMS45NTQtLjI1NmE3LjU1MyA3LjU1MyAwIDAgMCA0LjU4NC0zLjUxNyA3LjU0NCA3LjU0NCAwIDAgMCAxLjAxMy0zLjc3MSA3LjUgNy41IDAgMCAwLS4yNTktMS45NTVaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTkxLjg1MyAxMy4wNDZhMTMuNDM1IDEzLjQzNSAwIDAgMC0yLjEyLTIuNzY1IDEzLjM0MyAxMy4zNDMgMCAwIDAtMi43NjYtMi4xMTggMTMuMjg3IDEzLjI4NyAwIDAgMC02LjY3NS0xLjc5Yy0xLjE5NyAwLTIuMzUyLjE1OS0zLjQ1Ni40NTQtMS4xNDEuMzAzLTIuMjIuNzU3LTMuMjE4IDEuMzM2YTEzLjQzNiAxMy40MzYgMCAwIDAtMi43NjcgMi4xMTggMTMuMzM0IDEzLjMzNCAwIDAgMC0yLjEyIDIuNzY1IDEzLjI3MiAxMy4yNzIgMCAwIDAtMS43OSA2LjY3aDIuMzJjMC0uOTg2LjEzMS0xLjk0Mi4zNzUtMi44NTJhMTEuMDg4IDExLjA4OCAwIDAgMSAyLjg1NS00Ljk0IDExLjAwMiAxMS4wMDIgMCAwIDEgMi4yODQtMS43NSAxMS4wMyAxMS4wMyAwIDAgMSAyLjY2LTEuMTA0IDExLjAyIDExLjAyIDAgMCAxIDIuODU0LS4zNzRjLjk4OCAwIDEuOTQ0LjEzIDIuODU1LjM3NGExMS4wOTkgMTEuMDk5IDAgMCAxIDQuOTQzIDIuODUzIDEwLjk5IDEwLjk5IDAgMCAxIDEuNzUxIDIuMjgzYy40NzcuODI2Ljg1MiAxLjcxNiAxLjEwNCAyLjY1OGwyLjI0Mi0uNjAyYTEzLjE5NCAxMy4xOTQgMCAwIDAtMS4zMy0zLjIxNlpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTcuNjc0IDE1LjA2M2ExNy43OTEgMTcuNzkxIDAgMCAwLTEuOC00LjMzNiAxOC4wNDMgMTguMDQzIDAgMCAwLTYuNTg2LTYuNTgzIDE3LjkzIDE3LjkzIDAgMCAwLTguOTk2LTIuNDA4Yy0xLjYxMiAwLTMuMTcyLjIxMy00LjY1Ny42MWExNy44MTcgMTcuODE3IDAgMCAwLTQuMzM5IDEuNzk4IDE4LjAzMiAxOC4wMzIgMCAwIDAtNi41ODYgNi41ODNsMi4wMTIgMS4xNjNhMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OS0zLjI0NWMuOTY1LS45NjQgMi4wNTctMS44IDMuMjQ2LTIuNDg3YTE1LjcwNiAxNS43MDYgMCAwIDEgMy43NzctMS41NjkgMTUuNjggMTUuNjggMCAwIDEgOC4xMSAwYzEuMzQuMzU4IDIuNjA2Ljg5MSAzLjc3OCAxLjU2OWExNS42ODUgMTUuNjg1IDAgMCAxIDMuMjQ2IDIuNDg3IDE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODkgMy4yNDUgMTUuNjg0IDE1LjY4NCAwIDAgMSAxLjU2OSAzLjc3NCAxNS42NTQgMTUuNjU0IDAgMCAxIDAgOC4xMDZsMi4yNDUuNjAxYy4zOTctMS40ODMuNjEtMy4wNDMuNjEtNC42NTRhMTcuODc1IDE3Ljg3NSAwIDAgMC0uNjA4LTQuNjU0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk04MC4yOTMgMjQuOTQ0YzIuODg4IDAgNS4yMy0yLjM0IDUuMjMtNS4yMjdhNS4yMjkgNS4yMjkgMCAwIDAtNS4yMy01LjIyNyA1LjIyOCA1LjIyOCAwIDAgMC01LjIzIDUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwIDUuMjMgNS4yMjdabTIwLjYxNSAxNS40MzZWMjkuNTQzaDIuMzA0VjQwLjM4aC0yLjMwNFptNi42MTgtMy43ODd2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM5IDIuNTM5IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTkuNjY2IDMuODE3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OHYtMi4wMjVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMTAuMTkzLTMuMjNoLTUuMzUyYy4xMjUuNzc1Ljc1NyAxLjM2MiAxLjcgMS4zNjIuNjM1IDAgMS4wMDQtLjI2NCAxLjIzNy0uNjVoMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjE5OC0uMDE0LjU3LS4wMTQuNTdabS0zLjcxNS0yLjYyOGMtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0Ni0uNjY0LS42MTktMS4xNi0xLjQwOC0xLjE2Wm0xMC4yMzktMS4zMTV2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzUtLjc0MyAxLjUxNi0uNzQzLjkyOCAwIDEuMzYyLjU0MiAxLjM2Mi41NDJabTMuNDAzIDMuMzU2djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0MyAyLjU0MyAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTEuMTY2IDMuMDE1Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MTFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA1LjY5NC44MzQgMCAxLjUwMS0uNDYyIDEuNTAxLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY5di0yLjAyNWgxLjI2OXYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU5LjI0Ny0xLjQzOC4yNDdabTIuOTUxLTkuNzUzYzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODIuNzEzIDAgMS4yODYuNTczIDEuMjg2IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg2IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjI3MiAxLjc0OC0zLjk3NCA0LjAzOC0zLjk3NHM0LjAzNSAxLjcwMiA0LjAzNSAzLjk3NGMwIDIuMjcxLTEuNzQ4IDMuOTU2LTQuMDM1IDMuOTU2LTIuMjkgMC00LjAzOC0xLjY4NS00LjAzOC0zLjk1NlptMi4yNDUgMGMwIDEuMTExLjc1NyAxLjkxNyAxLjc5MyAxLjkxN3MxLjc5NC0uODAzIDEuNzk0LTEuOTE3YzAtMS4xMTItLjc1OC0xLjkxOC0xLjc5NC0xLjkxOHMtMS43OTMuODAzLTEuNzkzIDEuOTE4Wm05LjU0IDB2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS4xNjcgMy4wMTVjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMjEtMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMTljLjEwNy0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNC42OTQuODM1IDAgMS41MDItLjQ2MiAxLjUwMi0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzguMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTYuNTI0IDIuMzE3VjI5LjU0M2gyLjE5NlY0MC4zOGgtMi4xOTZabTE0LjA4OS0xMC44MzcgNC4yNCAxMC44MzdoLTIuMzgxbC0uODY2LTIuMTMzaC00LjE5MWwtLjg1MSAyLjEzM2gtMi4zODFsNC4yMzktMTAuODM3aDIuMTkxWm0tMS4wOTggMy4xMjMtMS4zNDUgMy41MzloMi42OWwtMS4zNDUtMy41NFptNi4zODUtMi4wMDljMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMzk2IDEuNzE2LTMuOTczIDMuODE5LTMuOTczLjg2NiAwIDEuNTkyLjMyMyAxLjk4MS42NjR2LTMuNzQxaDIuMTk2VjQwLjM4aC0yLjE2NXYtLjU0MmMtLjQuMzg2LTEuMTYuNzEyLTIuMDA5LjcxMi0yLjEwNiAwLTMuODIyLTEuNTE1LTMuODIyLTMuOTU2Wm01LjgzMSAwYzAtMS4xNzQtLjc3Mi0xLjk4LTEuNzkzLTEuOTgtMS4wMjIgMC0xLjc5NC44MDMtMS43OTQgMS45OCAwIDEuMTc1Ljc3MiAxLjk4IDEuNzk0IDEuOTggMS4wMjEgMCAxLjc5My0uODA1IDEuNzkzLTEuOThaTTEwMC4xOTYgNDguMDloOC41MjJ2Mi4xMThoLTMuMTF2OC43MTloLTIuMzA0di04LjcxOWgtMy4xMTFWNDguMDloLjAwM1ptMTMuODg4IDMuNjkydjIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTZ2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MzEuMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTUuODkxIDYuMzcxYy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzguNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTktLjc3NFptLTIuNjktMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm04LjcyMS0xLjQ3djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTEwLjc5NSAxLjYwN2MwLS4yMzItLjEzOS0uNDE2LS43NDQtLjU0MWwtMS4xNDMtLjIzM2MtMS43MTctLjM0LTIuNDQ0LTEuMTYtMi40NDQtMi4yODggMC0xLjMzIDEuMDA1LTIuNTE5IDMuMDk0LTIuNTE5IDIuMTAyIDAgMy4wNDcgMS4xNzQgMy4yMDEgMi40OWgtMi4wODljLS4xMjUtLjQxNy0uNDgtLjY2NC0xLjEyOS0uNjY0LS42MTkgMC0uOTYuMjE2LS45Ni41MjUgMCAuMjMzLjE4NS4zNzIuNzU4LjQ4bDEuMTQ0LjIzMmMxLjYyMy4zMjMgMi40MjkgMS4wODMgMi40MjkgMi4zOCAwIDEuNDY5LTEuMDY3IDIuNDktMy4xODcgMi40OS0yLjE2NSAwLTMuMzI2LTEuMDIxLTMuNTQyLTIuNTk4aDIuMjE0Yy4xMjUuNTI0LjUxMS44MDIgMS4zMjguODAyLjc0NiAwIDEuMDctLjIxNSAxLjA3LS41NTZabTExLjU1Mi0xLjYwOGMwIDIuMzk3LTEuNzE3IDMuOTU3LTMuODE5IDMuOTU3LS44NjYgMC0xLjU5Mi0uMzEtMS45ODEtLjY1djMuNDc3aC0yLjE5N1Y1MS4zNDhoMi4xNjZ2LjU0MmMuNDAzLS4zODYgMS4xNi0uNzI2IDIuMDEyLS43MjYgMi4xMDIgMCAzLjgxOSAxLjUxNyAzLjgxOSAzLjk3M1ptLTUuODMxIDBjMCAxLjE3NS43NzQgMS45OCAxLjc5MyAxLjk4IDEuMDIyIDAgMS43OTQtLjgwMyAxLjc5NC0xLjk4IDAtMS4xNzQtLjc3Mi0xLjk4LTEuNzk0LTEuOTgtMS4wMTkuMDA0LTEuNzkzLjgwNi0xLjc5MyAxLjk4Wm0xMS44NzkgMy4wMTZjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDYtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OC0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDQuNjk1LjgzNSAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm0xMS41NjYtNC44MjZ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjZ2LjYzNWMtLjAxNSAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkyOC4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptOC40MjggMy45NDRoLTUuMzUyYy4xMjUuNzc0Ljc1OCAxLjM2IDEuNzAzIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzNy0uNjQ5aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk2IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjItLjAxNy41Ny0uMDE3LjU3Wm0tMy43MTEtMi42MjdjLS44MzUgMC0xLjM5NC41MS0xLjUzMyAxLjE2aDIuOTRjLS4wNDUtLjY2Ni0uNjE5LTEuMTYtMS40MDctMS4xNlptNy4zOTIgMi4wMzl2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjU2Ny44MzdoMi40MTJjLS4zNTcgMS44NC0xLjc0OCAzLjEyMy0zLjc5MSAzLjEyMy0yLjI5IDAtMy45OS0xLjY4NS0zLjk5LTMuOTU3IDAtMi4yNzEgMS43MDMtMy45NzMgMy45OS0zLjk3MyAxLjk5NSAwIDMuMzg4IDEuMjM2IDMuNjY2IDMuMDI5aC0yLjQxNWMtLjE3LS41NzMtLjY2NC0uOTU5LTEuMzI4LS45NTktLjkyOCAwLTEuNjcxLjc4OS0xLjY3MSAxLjkgMCAxLjExMi43NDMgMS45IDEuNzAzIDEuOS43MTIuMDA0IDEuMjQtLjQxNiAxLjQyNC0xLjA2M1ptNS4xMDIgNi4wMjdjLS45OSAwLTEuNDg0LS4yNjQtMS40ODQtLjI2NHYtMi4wMXMuNDQ4LjIzMi45MjguMjMyYy40OTYgMCAxLjE0My0uMTg0IDEuMjk5LTEuMDM1bC0yLjk1NC03LjU3NWgyLjQ0NGwxLjcxNyA0LjY5OSAxLjc0OC00LjdoMi4zNDlsLTMuMDc5IDcuN2MtLjgwMyAyLjAyNi0xLjQ1MyAyLjk1My0yLjk2OCAyLjk1M1ptMTEuNTk4LTMuMDc1VjQ4LjA5aDIuMzA1djEwLjgzN2gtMi4zMDVabTYuNjE4LTMuNzg5djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjZ2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NS0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptNi41NDEtNS45MzZjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptNy4yNTQuMDI5Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjYuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTIuOTU0LTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTguNzU0LS43NzRjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjcgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MWwtLjE5OS0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0OGMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTctMS44NTV2Mi45N2gxLjkwMXYyLjAyNGgtMS45MDF2Mi42NDNjMCAuNzI2LjQ3OS44OTcuOTI4Ljg5Ny41MSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4OC4yNDctMS40MzkuMjQ3Wm0yLjk1MS05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTEwLjk4My03LjU3NS0yLjY5MSA3LjU3NWgtMi4yNThsLTIuNjkxLTcuNTc1aDIuMzM2bDEuNDg0IDQuNjg1IDEuNDg0LTQuNjg1aDIuMzM2Wm03Ljk4IDQuMzc0aC01LjM1MmMuMTI1Ljc3NC43NTcgMS4zNiAxLjcwMiAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzgtLjY0OWgyLjM2NmMtLjUxIDEuNjQtMS42ODUgMi42Ni0zLjU3MiAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODggMCAzLjc2IDEuOTYzIDMuNzYgMy45ODgtLjAwNi4yLS4wMi41Ny0uMDIuNTdabS0zLjcxMi0yLjYyN2MtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0OS0uNjY2LS42MTktMS4xNi0xLjQwOC0xLjE2WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJtNy4zMzMgMTIuMzYxLS4yMjMuMTEyLjIyMy40NDdoLjV2LS4yNWwuODM0LS40MTctMS4zMzQuMTA4Wm0wIDBWOS4zMzN2My4wMjhabS01LjUtOC4yNDh2LS43OGExLjUgMS41IDAgMCAxIDEuNS0xLjVoOS4zMzRhMS41IDEuNSAwIDAgMSAxLjUgMS41di43NzJhMS40OTkgMS40OTkgMCAwIDEtLjE0NS41OTNsLS4wNDkuMTAydi4wNGExLjM3MSAxLjM3MSAwIDAgMS0uMjQ2LjMzMnYuMDAxbC00LjA4IDQuMDhMOS41IDkuNHYzLjI2NmMwIC4wMy0uMDA5LjA2LS4wMjUuMDg2bC40MjUuMjYzLS40MjUtLjI2M2EuMTY3LjE2NyAwIDAgMS0uMDY2LjA2MWwtMi42NjYgMS4zMzMtLjAwNC4wMDJhLjE2Ny4xNjcgMCAwIDEtLjA3NS4wMTkuMTY3LjE2NyAwIDAgMS0uMDg3LS4wMjUuMTY2LjE2NiAwIDAgMS0uMDc3LS4xNDFWOS4zOTlsLS4xNDgtLjE0Ny00LjEwNi00LjA4QTEuMzczIDEuMzczIDAgMCAxIDIgNC44NHYtLjAzbC0uMDQyLS4wOTdhMS41IDEuNSAwIDAgMS0uMTI1LS42Wk02IDkuNjA3VjE0YS42NjYuNjY2IDAgMCAwIC42NjcuNjY3LjY2Ni42NjYgMCAwIDAgLjMtLjA3NEw2IDkuNjA3Wm0zLjE2Ny0uMjc0VjkuMzNhLjE2Ny4xNjcgMCAwIDEgLjA0OC0uMTE4bDMuNTMxLTMuNTI1Ljg1Ni0uODU0SDIuMzk3bC44NTYuODU0IDMuNTMyIDMuNTI1YS4xNjcuMTY3IDAgMCAxIC4wNDguMTE4djQuMzk5bC43MjQtLjM2Mkw4Ljg5IDEyLjdsLjI3Ny0uMTM4VjkuMzMzWk0xMy4zMzMgNC41aC41VjMuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2LTEuMTY2SDMuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2IDEuMTY2VjQuNWgxMS4xNjZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyOSAyOVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBvcGFjaXR5PVxcXCIuOTlcXFwiIGQ9XFxcIk0xMi40NiAxOS40NDdhMS4yMDMgMS4yMDMgMCAwIDEtLjg1My0uMzU0bC0zLjM5OS0zLjM5OWExLjIwOCAxLjIwOCAwIDAgMSAxLjcwOS0xLjcwOGwyLjU0NCAyLjU0NCA2LjYyMi02LjYyMmExLjIwOCAxLjIwOCAwIDAgMSAxLjcwOSAxLjcwOGwtNy40NzcgNy40NzdhMS4yMDUgMS4yMDUgMCAwIDEtLjg1NC4zNTRaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTE0LjUgMi40MTdBMTIuMDgzIDEyLjA4MyAwIDEgMCAyNi41ODMgMTQuNSAxMi4wOTcgMTIuMDk3IDAgMCAwIDE0LjUgMi40MTZabTYuMjkyIDkuMTk5LTcuNDc3IDcuNDc2YTEuMjA2IDEuMjA2IDAgMCAxLTEuNzA4IDBsLTMuMzk5LTMuMzk4YTEuMjA4IDEuMjA4IDAgMCAxIDEuNzA5LTEuNzA5bDIuNTQ0IDIuNTQ0IDYuNjIyLTYuNjIyYTEuMjA4IDEuMjA4IDAgMCAxIDEuNzA5IDEuNzA5WlxcXCIgZmlsbD1cXFwiIzE3OTk3QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA5NTAgMjkyXFxcIj48ZyBvcGFjaXR5PVxcXCIuM1xcXCI+PHBhdGggb3BhY2l0eT1cXFwiLjRcXFwiIGQ9XFxcIk0zOTMuMzgzIDUzNy41OTJhMjEzLjA1OCAyMTMuMDU4IDAgMCAxLTU1LjEzMy03LjI0OGMtMTguMTk2LTQuODYtMzUuNDE5LTEyLjA5LTUxLjM0Ny0yMS4zMTYtMTYuMTY2LTkuMzQ1LTMxLjAwMy0yMC43MDMtNDQuMTE3LTMzLjgxNy0xMy4xMTMtMTMuMTEzLTI0LjQ3MS0yNy45NjctMzMuODE2LTQ0LjExNmEyMTEuODI2IDIxMS44MjYgMCAwIDEtMjEuMzE3LTUxLjM0NyAyMTIuOTA2IDIxMi45MDYgMCAwIDEtNy4yNDctNTUuMTMzIDIxMy4wOSAyMTMuMDkgMCAwIDEgNy4yNDctNTUuMTMzYzQuODYxLTE4LjE5NiAxMi4wOTEtMzUuNDIgMjEuMzE3LTUxLjM0OGw1Ni42ODUgMzIuNzI1YTE0Ny4yMDMgMTQ3LjIwMyAwIDAgMC0xNC43NjggMzUuNTczIDE0Ny41MzEgMTQ3LjUzMSAwIDAgMC01LjAxNCAzOC4xODMgMTQ3LjUzIDE0Ny41MyAwIDAgMCA1LjAxNCAzOC4xODIgMTQ2LjUyNyAxNDYuNTI3IDAgMCAwIDE0Ljc2OCAzNS41NzNjNi40OCAxMS4xODcgMTQuMzQxIDIxLjQ3IDIzLjQzMSAzMC41NTkgOS4wODkgOS4wODkgMTkuMzcyIDE2Ljk1MSAzMC41NTkgMjMuNDMxYTE0Ny4yMDMgMTQ3LjIwMyAwIDAgMCAzNS41NzMgMTQuNzY4IDE0Ny42MjcgMTQ3LjYyNyAwIDAgMCAzOC4xODIgNS4wMTRjMTMuMiAwIDI2LjAwNi0xLjc1NyAzOC4xODItNS4wMTRhMTQ2LjQ5NCAxNDYuNDk0IDAgMCAwIDM1LjU3My0xNC43NjhjMTEuMTg3LTYuNDggMjEuNDctMTQuMzQyIDMwLjU2LTIzLjQzMWw0Ni4yODIgNDYuMjgyYy0xMy4xMTQgMTMuMTE0LTI3Ljk2NyAyNC40NzItNDQuMTE3IDMzLjgxN2EyMTEuNzUgMjExLjc1IDAgMCAxLTUxLjM0NyAyMS4zMTYgMjEzLjI4IDIxMy4yOCAwIDAgMS01NS4xNSA3LjI0OFpNNTgxLjY2OCA2NTAuNzRjMjguNTgxLTE2LjUyNCA1NC44MjYtMzYuNjEzIDc4LjAxOC01OS44MDUgMjMuMTkyLTIzLjE5MyA0My4yODEtNDkuNDU1IDU5LjgwNi03OC4wMTkgMTYuMzAzLTI4LjE3MiAyOS4wNzUtNTguNjI5IDM3LjY4Ny05MC44MDhhMzc2LjU5MiAzNzYuNTkyIDAgMCAwIDEyLjgwNy05Ny40NzYgMzc3LjIzIDM3Ny4yMyAwIDAgMC0xMi44MDctOTcuNDc3Yy04LjU5NS0zMi4xNzktMjEuMzg0LTYyLjYzNi0zNy42ODctOTAuODA4LTE2LjU0Mi0yOC41ODEtMzYuNjE0LTU0LjgyNi01OS44MDYtNzguMDE4LTIzLjE5Mi0yMy4xOTMtNDkuNDU0LTQzLjI4MS03OC4wMTgtNTkuODA2LTI4LjE3Mi0xNi4zMDMtNTguNjI5LTI5LjA5My05MC44MDktMzcuNjg3YTM3Ni41OTIgMzc2LjU5MiAwIDAgMC05Ny40NzYtMTIuODA3djY1LjQ1YzI3Ljg2NSAwIDU0Ljg0MyAzLjcxNyA4MC41NDMgMTAuNTkgMjYuNTg1IDcuMTExIDUxLjczOSAxNy42NjcgNzUuMDE3IDMxLjEzOSAyMy42MDEgMTMuNjYgNDUuMzEgMzAuMjUyIDY0LjQ2MSA0OS40MiAxOS4xNjcgMTkuMTY4IDM1Ljc2IDQwLjg2IDQ5LjQyIDY0LjQ2MSAxMy40NzIgMjMuMjc4IDI0LjAyOCA0OC40MzEgMzEuMTM5IDc1LjAxN2EzMTEuMjY2IDMxMS4yNjYgMCAwIDEgMTAuNTkgODAuNTQzYzAgMjcuODY1LTMuNzE3IDU0Ljg0My0xMC41OSA4MC41NDItNy4xMTEgMjYuNTg2LTE3LjY2NyA1MS43MzktMzEuMTM5IDc1LjAxNy0xMy42NiAyMy42MDItMzAuMjUzIDQ1LjMxLTQ5LjQyIDY0LjQ2MS0xOS4xNTEgMTkuMTUxLTQwLjg2IDM1Ljc2MS02NC40NjEgNDkuNDItMjMuMjc4IDEzLjQ3Mi00OC40MzIgMjQuMDI4LTc1LjAxNyAzMS4xMzlsMTYuOTMzIDYzLjIzNGMzMi4xOTctOC42NDYgNjIuNjM3LTIxLjQxOSA5MC44MDktMzcuNzIyWm0tNTYuOTA3IDE2NC4xODhhNTA0LjMxMiA1MDQuMzEyIDAgMCAwIDEyMi40MjUtNTAuNzMzIDUxMC40IDUxMC40IDAgMCAwIDEwNS4wODItODAuNzEzQTUwOS4yMjYgNTA5LjIyNiAwIDAgMCA4MzIuOTgxIDU3OC40YTUwNC43MyA1MDQuNzMgMCAwIDAgNTAuNzMzLTEyMi40MjVjMTEuMjA0LTQxLjkxNiAxNy4yMDctODUuOTQ4IDE3LjIwNy0xMzEuMzc3IDAtNDUuNDQ3LTYuMDAzLTg5LjQ3OS0xNy4yMDctMTMxLjM3OGE1MDQuMzQzIDUwNC4zNDMgMCAwIDAtNTAuNzMzLTEyMi40MjVDODEwLjcwOSAzMi4yODggNzgzLjUwOS0zLjAzIDc1Mi4yNjgtMzQuMjg3QTUwOS4yMTcgNTA5LjIxNyAwIDAgMCA2NDcuMTg2LTExNWwtMzIuNzkzIDU2Ljc4N2MzMy41NDMgMTkuNDA3IDY0LjM1OSA0Mi45OTEgOTEuNTkyIDcwLjIwOCAyNy4yMTcgMjcuMjE3IDUwLjgwMiA1OC4wNSA3MC4yMDkgOTEuNTc2IDE5LjEzMyAzMy4wNjYgMzQuMTQgNjguODEgNDQuMjM2IDEwNi41ODIgOS43NTQgMzYuNTExIDE1LjA0MSA3NC44NDcgMTUuMDQxIDExNC40MjggMCAzOS41OC01LjI3IDc3LjkxNi0xNS4wNDEgMTE0LjQyNi0xMC4wOTYgMzcuNzczLTI1LjEwMyA3My41MTctNDQuMjM2IDEwNi41ODMtMTkuNDA3IDMzLjU0NC00Mi45OTIgNjQuMzU5LTcwLjIwOSA5MS41NzYtMjcuMjE2IDI3LjIxNy01OC4wNDkgNTAuODAxLTkxLjU5MiA3MC4yMDgtMzMuMDY2IDE5LjEzNC02OC44MSAzNC4xNC0xMDYuNTgzIDQ0LjIzNi0zNi41MTEgOS43NTQtNzQuODQ2IDE1LjA0MS0xMTQuNDI3IDE1LjA0MS0zOS41OCAwLTc3LjkxNi01LjI4Ny0xMTQuNDI3LTE1LjA0MWwtMTYuOTUxIDYzLjI4NGM0MS45IDExLjIwNCA4NS45MzEgMTcuMjA3IDEzMS4zNzggMTcuMjA3IDQ1LjQ0Ny4wMzQgODkuNDc4LTUuOTY5IDEzMS4zNzgtMTcuMTczWlxcXCIgZmlsbD1cXFwidXJsKCNncm91cF9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTM5My4zODMgNzY2LjY4NmE0NDIuNDg5IDQ0Mi40ODkgMCAwIDEtMTE0LjEwMy0xNC45MzhjLTM3Ljc3My0xMC4wNjItNzMuNTE2LTI1LjA1Mi0xMDYuNTk5LTQ0LjE1MWwzMi43MjUtNTYuNjg1YzI4LjE4OSAxNi4yNjkgNTguNjQ2IDI5LjAyNCA5MC44MjUgMzcuNjAyYTM3Ny4xMjYgMzc3LjEyNiAwIDAgMCA5Ny4xNTIgMTIuNzIyaC4zMDdhMzc2Ljk1OCAzNzYuOTU4IDAgMCAwIDk3LjQyNS0xMi44NzVjMzIuMTQ2LTguNjEyIDYyLjU2OC0yMS40MDIgOTAuNzIzLTM3LjcwNSAyOC41NDctMTYuNTI0IDU0Ljc3NS0zNi42MTMgNzcuOTMzLTU5Ljc4OCAyMy4xNTktMjMuMTc2IDQzLjIzLTQ5LjQwNCA1OS43NTUtNzcuOTUxIDE2LjI4Ni0yOC4xNTQgMjkuMDU5LTU4LjU2IDM3LjY3LTkwLjcyM2EzNzYuNTc1IDM3Ni41NzUgMCAwIDAgMTIuODI0LTk3LjM5di0uMTg4YzAtMzMuNjI5LTQuNDY3LTY2LjIwMS0xMi43MzgtOTcuMjM3LTguNTc4LTMyLjE2My0yMS4zMzQtNjIuNjAzLTM3LjYwMy05MC43NzUtMTYuNTA3LTI4LjU4MS0zNi41NjItNTQuODQzLTU5LjcyLTc4LjAzNS0yMy4xNzUtMjMuMjEtNDkuNDAzLTQzLjMzMi03Ny45NS01OS44OTEtMjguMTcyLTE2LjMzNy01OC42MTItMjkuMTQ0LTkwLjc3NC0zNy43NzNsMTYuOTMzLTYzLjIzM2MzNy43NzMgMTAuMTMgNzMuNSAyNS4xNTMgMTA2LjU2NiA0NC4zMjEgMzMuNTI3IDE5LjQyNCA2NC4zMDggNDMuMDQyIDkxLjUwNyA3MC4yNzYgMjcuMTgzIDI3LjIzNCA1MC43NTEgNTguMDY3IDcwLjEyMyA5MS42MSAxOS4xIDMzLjA2NiAzNC4wNzIgNjguNzkzIDQ0LjE1MSAxMDYuNTY2YTQ0Mi4yOCA0NDIuMjggMCAwIDEgMTQuOTczIDExNC4xNzF2LjE4OGE0NDIuNzg0IDQ0Mi43ODQgMCAwIDEtMTUuMDU4IDExNC4zNDFjLTEwLjA5NiAzNy43MzktMjUuMDg2IDczLjQ0OC00NC4yMTkgMTA2LjQ5Ny0xOS4zOSAzMy41MS00Mi45NTcgNjQuMzA4LTcwLjE0IDkxLjUyNS0yNy4yIDI3LjItNTcuOTgxIDUwLjc4NC05MS40OTEgNzAuMTkxLTMzLjAzMiAxOS4xMzQtNjguNzU4IDM0LjE0MS0xMDYuNDk3IDQ0LjI1M2E0NDIuMDUyIDQ0Mi4wNTIgMCAwIDEtMTE0LjM1OSAxNS4wOTJjLS4xMzYtLjAxNy0uMjM4LS4wMTctLjM0MS0uMDE3Wm0uMzA3IDExNC41NDdjNDkuODEzLS4wMzUgOTguMDktNi42MzQgMTQ0LjAzMi0xOC45MjlhNTUzLjMxNiA1NTMuMzE2IDAgMCAwIDEzNC4xNzQtNTUuNjYyIDU1Ny44ODcgNTU3Ljg4NyAwIDAgMCAxMTUuMTQzLTg4LjUwNiA1NTguOTM4IDU1OC45MzggMCAwIDAgODguNDU1LTExNS4xNzggNTUyLjg2MyA1NTIuODYzIDAgMCAwIDU1LjYxMS0xMzQuMTc0Qzk0My40IDQyMi44NDIgOTQ5Ljk4MyAzNzQuNTgyIDk1MCAzMjQuNzg2di0uMTg3YzAtNDkuNzQ0LTYuNTY2LTk3Ljk1NC0xOC44MS0xNDMuODQ0YTU1My40NTQgNTUzLjQ1NCAwIDAgMC01NS41NDItMTM0LjI0M0M4NTEuMjQ1IDQuMjcyIDgyMS40NTMtMzQuNDU2IDc4Ny4yMS02OC43NWwtMzQuNzIgMzQuNzJhNTA4LjkwOCA1MDguOTA4IDAgMCAxIDgwLjYyNyAxMDUuMDk5IDUwNC40NjUgNTA0LjQ2NSAwIDAgMSA1MC42MzEgMTIyLjM5MWMxMS4xNTMgNDEuODMxIDE3LjEzOSA4NS43NzcgMTcuMTM5IDEzMS4xMzl2LjE4N2MtLjAxNyA0NS40MTMtNi4wMiA4OS40MS0xNy4yMjQgMTMxLjI5M2E1MDQuOTAyIDUwNC45MDIgMCAwIDEtNTAuNjk5IDEyMi4zMjMgNTA5LjcxNSA1MDkuNzE1IDAgMCAxLTgwLjY2MiAxMDUuMDEzIDUwOS4yNzggNTA5LjI3OCAwIDAgMS0xMDQuOTk2IDgwLjY5NiA1MDQuMzIgNTA0LjMyIDAgMCAxLTEyMi4zMjMgNTAuNzVjLTQxLjg4MyAxMS4yMjEtODUuODk3IDE3LjI0MS0xMzEuMzI3IDE3LjI3NWgtLjMwN2MtNDUuMzI3IDAtODkuMjM5LTUuOTY4LTEzMS4wNTQtMTcuMTIxYTUwNC44OTkgNTA0Ljg5OSAwIDAgMS0xMjIuNDQyLTUwLjYzMUE1MDkuMjg0IDUwOS4yODQgMCAwIDEgMzQuNzIgNjgzLjcyMkwwIDcxOC40NDNhNTU5LjIyMiA1NTkuMjIyIDAgMCAwIDExNS4yOTcgODguNDcyIDU1My41NjMgNTUzLjU2MyAwIDAgMCAxMzQuMjk0IDU1LjU0MmM0NS44NTYgMTIuMjI3IDk0LjAzMSAxOC43NzYgMTQzLjc1OCAxOC43NzZoLjM0MVptODAuNDc0LTI1Ni4xMDZhMzA5LjI4IDMwOS4yOCAwIDAgMCA3NC45MzItMzEuMTU2YzIzLjU2OC0xMy42NTkgNDUuMjQyLTMwLjI1MiA2NC4zNzYtNDkuMzg2IDE5LjEzNC0xOS4xNTEgMzUuNzA5LTQwLjgwOCA0OS4zNTItNjQuMzkzIDEzLjQ1NS0yMy4yNDMgMjQuMDExLTQ4LjM4IDMxLjEwNS03NC45MzFhMzExLjM5NiAzMTEuMzk2IDAgMCAwIDEwLjYwNy04MC40NTd2LS4xODhjMC0yNy43OC0zLjY4My01NC42NzMtMTAuNTA1LTgwLjI4Ny03LjA3Ny0yNi41NjgtMTcuNjE2LTUxLjcyMi0zMS4wNTQtNzUtMTMuNjI1LTIzLjYxOC0zMC4yMDEtNDUuMzEtNDkuMzM0LTY0LjQ3OC0xOS4xMzQtMTkuMTg1LTQwLjgwOS0zNS44MTEtNjQuMzkzLTQ5LjQ4OC0yMy4yNjEtMTMuNDktNDguNDE0LTI0LjA4LTc1LTMxLjIyNWEzMTEuNDUxIDMxMS40NTEgMCAwIDAtODAuNTYtMTAuNjc1aC0uMzA3YTMxMC45OTcgMzEwLjk5NyAwIDAgMC04MC4zMDMgMTAuNTIyYy0yNi42MiA3LjA5NC01MS44MDggMTcuNjUtNzUuMTIgMzEuMTIybDQ5LjA5NyA4NS4wMjdhMjExLjY3OCAyMTEuNjc4IDAgMCAxIDUxLjQzMi0yMS4yOTkgMjEzLjMxNCAyMTMuMzE0IDAgMCAxIDU0Ljg5NC03LjE4aC4zMDdhMjEzLjIgMjEzLjIgMCAwIDEgNTUuMTUgNy4zMzMgMjExLjI0NSAyMTEuMjQ1IDAgMCAxIDUxLjMzMSAyMS40MDJjMTYuMTMyIDkuMzc5IDMwLjk1MSAyMC43NzEgNDQuMDQ4IDMzLjkwMiAxMy4wOCAxMy4xMzEgMjQuNDIgMjcuOTg0IDMzLjc0OCA0NC4xMzRhMjExLjQwOCAyMTEuNDA4IDAgMCAxIDIxLjIzMSA1MS4zMyAyMTMuMjc2IDIxMy4yNzYgMCAwIDEgNy4xOCA1NC44Nzd2LjE4OGEyMTIuOTExIDIxMi45MTEgMCAwIDEtNy4yNjUgNTUuMDNjLTQuODYgMTguMTYyLTEyLjA5MSAzNS4zNTItMjEuMjgyIDUxLjI2Mi05LjMyOCAxNi4xMzMtMjAuNjY5IDMwLjk1Mi0zMy43NjYgNDQuMDQ5LTEzLjA3OSAxMy4wOTYtMjcuODk5IDI0LjQ1NC00NC4wMzEgMzMuNzk5LTE1LjkxMSA5LjIyNi0zMy4xIDE2LjQ1Ni01MS4yNjIgMjEuMzM0YTIxMi40OTUgMjEyLjQ5NSAwIDAgMS01NS4wNjUgNy4yOTh2OTguMTc2YTMxMi4wOSAzMTIuMDkgMCAwIDAgODAuNDU3LTEwLjY0MlptNjYuNzQ3LTMwMC41MTFjMC04MS40OC02Ni4wNDctMTQ3LjUyNy0xNDcuNTI4LTE0Ny41MjctODEuNDggMC0xNDcuNTI3IDY2LjA0Ny0xNDcuNTI3IDE0Ny41MjcgMCA4MS40OCA2Ni4wNDcgMTQ3LjUyNyAxNDcuNTI3IDE0Ny41MjcgODEuNDgxIDAgMTQ3LjUyOC02Ni4wNjQgMTQ3LjUyOC0xNDcuNTI3WlxcXCIgZmlsbD1cXFwidXJsKCNncm91cF9zdmdfX2IpXFxcIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZ3JvdXBfc3ZnX19hXFxcIiB4MT1cXFwiMTI3Ljg5NVxcXCIgeTE9XFxcIjU4Mi42NDdcXFwiIHgyPVxcXCI4NzguMzQyXFxcIiB5Mj1cXFwiMTQ5LjM3N1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIG9mZnNldD1cXFwiLjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJncm91cF9zdmdfX2JcXFwiIHgxPVxcXCItMTEuMDcxXFxcIiB5MT1cXFwiNjk5LjE5M1xcXCIgeDI9XFxcIjkzNi41ODlcXFwiIHkyPVxcXCIxNTIuMDYxXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agb2Zmc2V0PVxcXCIuNlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAzMSAzMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCI+PHBhdGggZmlsbD1cXFwidXJsKCNoYW5kLXdhdmVfc3ZnX19hKVxcXCIgZD1cXFwiTTAgMGgzMXYzMUgwelxcXCIvPjxkZWZzPjxwYXR0ZXJuIGlkPVxcXCJoYW5kLXdhdmVfc3ZnX19hXFxcIiBwYXR0ZXJuQ29udGVudFVuaXRzPVxcXCJvYmplY3RCb3VuZGluZ0JveFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMVxcXCI+PHVzZSB4bGluazpocmVmPVxcXCIjaGFuZC13YXZlX3N2Z19fYlxcXCIgdHJhbnNmb3JtPVxcXCJzY2FsZSguMDEpXFxcIi8+PC9wYXR0ZXJuPjxpbWFnZSBpZD1cXFwiaGFuZC13YXZlX3N2Z19fYlxcXCIgd2lkdGg9XFxcIjEwMFxcXCIgaGVpZ2h0PVxcXCIxMDBcXFwiIHhsaW5rOmhyZWY9XFxcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFnQUVsRVFWUjRuTzJkQ1h5VjFabi9ZN2RwTzdXdENjaE90bnV6UWxZU1FpQUVTTUtPTEFLQ3VMQ0kybTIweTlTWjZUajhwMDQ3am5WY1dtdTFyZTJvWTdVSUJHUkpXRVBJSG01eTE5enNCTENXV3EzazV1N0wrLzcrbitlYzg5Nzc1dVltQmdWeE5PZnplVDQzNU9hRzl6M2Y5MW5QYzA2aW9zYkcyQmdiWTJOc2pJMnhNVFkremdQQVo2LzNOWXdOTVhyZnc5ZDYzOEoweTNsUFd1TjVUMXFGMVRFSndBM0srMlBqSXh5N2R1RXpidzFnWE90NVQxcDlqMi91eVRiUDhnTkc3K1pYbTExM3Z0RGduTDJyQ3A4YkEzSWRCb0Fiam5TOSs5V0RCdThNQnFQVzljT25UN3AvOHVoUjE4UC92SDhnYlF6S2RSeTdkK096VDFZNXNoNnJkRC95OEFIblM5L2Y0OWgvM3l2MmIrOENQak1HNWpxTzcrN0dsMzd3dW1Qbi9hOE1uTHI3ZHdPdDY1OGJlS0g0bWJlL01nYmxPbzl0THd3VXIzL09abDcyOC81M2loKzNOUzk5R2wrOTN0ZjBpZllkN2UrOGMyTmoxN3RmeFFnbWFkVlQ3MlVzZUx6L3dxSW4rcDJybnJIdDJiQWJYL2hJTC9ULzRvQkptd0JENGxJWXRMTlJQL1ZMby9sTTM5dVlhSHJUbTFIVjZTODlhUFNzLzEyanEraG5SeS85ZmFTZlhmVDBRTnFxWi9vN052L2FadDM1c3YyUnFLaXgwRGd5Q0V2YVZ5U0Q1cEJzMEVJMmFnRW1TWmRoMEQ0QmZlelhSd0xTL2c1dVBOM3BTWDNEN0YvMVlyM253WitmY3Y3MGtUY2NUMzMzTmZ2Q1NEKy82YmZPV2ZlOGFLdCs4SS9PSXovYTd5Nk4raEREZnVEbUNRT0hicjdYdGovbXgvM2xNYmUvOWNha0wwZDlFb2FrMXo2TEVBakFwRWd5L2Z2UE1DZmxqY1owUFhuU2x2empnNDZIdi8rNjQ4Q09Gd2NhYjMxKzRPRU51NGRtOFAvd3FtM2x2NVE3WC8zcEVmZFR2emh1aTduUzYwVlYxT2NjUnljKzdLaVlhTGNmbVlDQmcrTmhPekFPL2VVeGIvYVhqOHVOK3JnTXVsQmZYZXczdmZWeGgveU44ZFgrNW9UZitIVUpLNENvWWJObVZCVi9Ec1lrNXlBSXBoVEFuQ29ralY0ZE1LY3ZHYzAxRUlBZEw5cnV2dlU1VzNmcEUvMzIwaWY3bjQ4YWtyWGpocDlVT0I5NDZxVHowZCtjY2QxeFJmZFlQL1ZMcmxOVERyaE9USUh6MkNRNEtpYkNmdmhtQnFWLy96aGNMbysrOU03K21CdWpydmZBN3FqUGV1dW1WL2dhNHVCdmlrZmdiQUlrWFNLa2xrUUVXaEpiWWRCa1IveGNTL0xrb1NBSVFqcGduaUZrSm9rWDVveGJSM3M5cFUvYWJpbDlvcjkvL1hPMjNudGVHcmczL1Awbnl5OS8vVGMxcnUvLzRhenYvb042VEJudDcvV2NtZnA3OSttcGNKMmFBdWVKeVhBY25RUjd4VVFNSExvWnRqZkdrNWFRM0JkMXZZZW5kdnF0a1dCSXJSckllZzBrdmNZRm8yWjkrT2VneS8weVRDbUJFQWdCd1VJUU1nQkxwcEFzZWczQWtyMXR0TmUwN2puYnFudGV0dGY5NDE3SDNwOGNHWnF0djFMdnpLY3lTMVVINW8zcUhtdGkxM2xycHNOVFBRM3VLZ0hsdUlCQ3BvdWdIQmlIeS91aVg0cTYzc1BiRVB0ZkRFYnpVQmhNREZwSUJtMEFCczMyOE0vQ25OWVExQVNMQWlFYnNPUUJiYk9CdG55Z0xRZG95d1VzdVRLc09RK085cnArOFByQXpwOGNjZnpxMldyUGcrRjFMWjBPbnovUjVTK3I2L1lWZG5XTm5Kc0FVWi94MWNXMWVldGlNUWpLU1RKZGsrR29KTlBGL1VuLy9oaDkxUFVlL3NiNG4zTVlDUUtHRnJJK0diSWhoYitHbkxZTVU4cTMxWitGT2YzT0VBalNoR3pBT2d0b253TzBGd0h0OC9scjJ4d0JoeVR2LzQzbXVuYnR4aGQrZWNyNXdCK2EzUGRYV3R5YThQZWJ1ekZOZjhHYi9pY2JSblR1L3ViWVpmN0dPUGpxNCtDdGpZWG56SFM0VDArRCs5UlVLUDVFTVYzOUIyTGM1RStqcnVjSW5JMjdMeENFUVZxaGhXeElnMnpLZ0V5bXh6U1Qrd2p5RldTZVRHa1BxWjgrV0RMckdBaEZFOW9JeUZ5Z1l5SFFVUXAwbGdMdEpSeU90VUNScDBZS0dKVHhhcE1ucWJMTnY2YnhBbkxEeS9La0pWMXZPcWRlQWlMbUxzcnduMDM0WDdJQS9vWTQrRWhMYXFmRGMyWWFndjdrdU5BU0VYVU43SXRPamJxZUE3cWtjUUZkZ2tkcVRZU3NBREhPZ0d6TzRwTnJJYUhKemd3NWJFdkdJOEhQRzJkT2hTWDN6MmpMRXhvd0cyaWZCM1NVQUYzTGdLNlZRTmNLL2pVQnNoWUIxcmtrdndNMmpMZzRSUkRxejN0ek9pNGhQdEpDMWtWZ3hDU1VIcGlBTHZFOThvMEVoWHhsWk5QRm82NkJ3NlFsNHpaR1hlOGh0U1kreW1Gd255R2IwamdFNjJ6QVdpZ21VSmdkQW1YSm90Y25sS2NjMW9JY3RPVVA4S2QvRHY5NUF0SzVIT2krQmVoZUIzU3ZBYnBXQVoxTGdmWUYzSlJaNSsyQkpXM0VVb2pwQW01NkMvaEFpUnYwMml5bSticEU1aVA5amZGaHBtdW9nN2U5TWY3SFVkZDdRRGZweTVKZW8yTXdET1F2a29FMjBoRHlCZk9CamtWQSt5S2dvMWpBeVJmbUtlOTVlZ3JaNzJpZnN3VFdRaDk3bnpTRUpwMkFkSzBCZWpZQzNiZUoxM1ZjWXpyS0JKamlvekNVRFd0MlBzd0tJbG9UN2lZenpFSjRvU1ZCMHpXTWx0Z09qUytQK2pnTTZGSW1TUWJ0ZWViQUtiK2d5S210UVBpQ3hmekpKcUdKN0Znb05JYzBxT0JsU2hMWjc3RE92UnZXK1RMYWkvbGtkeTBCdWxjRHZSdUEzdHVCM2kxQTcyYWdad1BRZFF2L3ZRejJ3bHJvaTBjc3RYeVFJYlZxL29NMG44eHhFTW9RTFptbTBoSVdjZlZFZlZ3R3pOcFVHTFIvNHdsZkt2Y2gxbUtnY3pIUXZaS2JINXJJcmhWQUp6M2hpc2JNZXdOOXhWOWt2Nk45d1k4NFJOS29VbTZtZW00VlFPNVF5U2F1UGN5M2xKQlkwRjQ2K1dyZWoyVFE3bWE1bEtJbHVnVDRtMGZXa29HS2lkS2xveE5HREJRKzBnR2p0Z2pHRkRkUDlpaU1KUWRkeGllVytZSU5RUGV0L01udlhDYWlLSXFnaW8vZ1lnRnpzdWdvZVk1SFdQUzVaVUQzV3FCbk05QjdKOUI3bHhENmVqUC9uWjNDaEhXVWRzQlNPdjFxM1l0azBPaVZmR3BrTFJrY2NmVWZuSkFmOVZFTVgzTjhYcUFwYm05QWw5Z1owQ1ZZcEpiRTMwT2ZPS1M2Q2t2YWVwalNKWloxVTlSRVQzc25hUWc5NmJmeHA1dGVlMmd5VndFZFM0UkdMS3FDcGZnckZEMmhjL0dCb0pranJTTC9RWnB4N200dXZYY0xNTGNMd0tSMVpNTEtMc0Jha25RMTdsY3lhQWFZWHd6WGt1RjhpU2lwREJ5WnNDUHFXZzkvYmV4Q1gyT2NsNVZIMU5rNFplSjZiU1hNaWRQVVB3OXorZ004NGN2aEdrQVRTMDg2ZzdGWm1LRGJ1VCtnQ0lvOTVUU2hpeHZRdC9ycmVHdmxsOUd4dklHSHZDczRQUGJadTRCelcwTmdHSnd0UVBkNkRyMlQ0QzcrQ3pyTHNqN00vY0lVUDRIOG9RSmtrQzhKUmx5cXZHU1FjNS93Wk5TMUh2Nkd1RnF5bjRPVFFCSG04bXo4RWt6SnN3YmRsRG56Y1o3d1VXNnhpT2NVN0VuZkhITFM1KzRBZWpaeFAwR2FRR2FzWTNrcnVwYU9SOGZLY2VoYTFjbjl6bW9PajMxbW01Q3RJVkUwaGNDeTRHSEpaYlF2THZ5Zzl3dHpjaUV0Q2RDOURkR1NzTHhraUhPdm5Iamlxa3o2c0JlSHFCdDhqWEYyVmlJaEdKVDg2Wk5FVmk1S0k3eHk2NEFwcFV6OU9WaHlYbUw1QnlWME5ObGs4M3RWTU03ZEtVUm9TODlha1F5dWFrZm5paW5vV0JXUHJ0V1h1QjlSdElSK2Zyc1FGWnllMndYWUZRTHNZaWZhUzVkOG9IczJKVzlqOXhTdUpjRzhKQjZzcEJMWmJQMzFxZ0tJQ0tRcHpoNHlWL1RrcEVJMnBrRW01MDBSVmJBMGt1NkJaV2F3dWt1Skd5ejV4MW5DUjFwQ1pxVm5BM0J1aXdyR1hjTDBrTFlJMzBKbXJIdHRIN3JXSktKblF5NjYxOW5Sc3g3b0pibGRmR1o3bU56Tm5UL0JVNkIwTHZhaXZXejlGZCt6T2ZWeERpU0pBd2xxU1NUblBqVGFzaCtkY0hQVXRSeitwcmd6aXJuaW1wRUsyYVNVeWpQRTJrV3dOT0tISlhOcjhPYjB4VjlIVzZHWkpYeGs0N3ZYY0xPbGhzR0V6TTlkNGttbkpQQldldUl2b3ZlMkpQVGN0Z3c5Ry8wTUdETjVXOFJudGdOOU8xUlE3aEpRVjZzMUpZRDJzdUQxakdiQWxGTEIxMnBHWWJiVTBSWUJPVDRaOWlNM2wwUmR5eEZvVHRqR3l1dEt6WW9CeVJDbEVQSVRRaWpVWmFXUkhCbVczTzhGYjlCY05BM1dvaitoZlNHMzg4eDAzYUVDUWpDMkFYM2lTV2RKNENZbFM3K0VubzB6MEx0cE8zbzJ5eUVmUkVDM2NpQkJLTnY0WjFueXVBcm9XaTU4eW1JWjdhVVBqUForWVVxOXlJdWlrYzJXRW0wRi9Vak5ZRDlpcjV3MDZxV0NEN3d5R0doSmFHVkE2TUtNS1VKRENJUll2MkIxS0hxbGY4OFMzeTk0TlBnNzJoYW1vMlBoZXp3dkVhRXNBNktDd1dTSCtCNU5PSUVoamRueUhzN2RNUnM5Vy82Tko0YjAvVHVBUGdHMGI1c0tDSVhEWkxwVS9vUkZYNVNNbGp6NnZ2ZXF5LzBhVE9reU44RmhRQlN6RmF4dmhma1JWcFluSUJOL2UwMkJzQXR0MGFZR1doTC9OcWlJeUdwVytieGt6dFl3aWtRdGlvcUpyRFJDMmZpendacFZ4OEpGNkNqeHNnbnFJa2ROVGxwTXFBS2o3eDR1ekZtVDlsQVN5UHhOUDNydm5JZmV1MzdOUUxMa1VDU0xmWGVySWkrQ1JCcTBrVWRuREFybE5CUldVeUs2SUZqWWpIaWZiVE9XODRVejRSdUg4eVBxOEhlUVk1OEMrOUZKVGRjY0NMdlkxc1JDcVRXUkpVeThacFhCZ2JDaTRBSmVwMktGUkZiNDQ2RFllL05maFdVRHE4eWl2ZlIyZEN5Umc4a2krWXplclNvWU80SHpPNEZ6TzBQYVF0RFk2ellIem0xZGduTjNIK1N3Q0l5STFsaU9vaVNNd3VReExWa3BTdmNVV0ZBbGVSRlZCdjZvVkFhRzNLTWw0MlVPaEFLV1VmZ1J4YkdyOGhISHNVa083T0lQNGJXSFl0UVdTWHFObllXN2RORXMrU3NVUU1yNGs5aEZCY1ZTa1lFWGk5Vy9CVWVnVzhsSzRlaFk4a09lOUtteWNLWWg5M0FZNSs4RitraDJDbTI1UitVcmRyaHhidXR0T0xlMUthZ1JhalBHZklnQ1pDMWs2enpJWmxaZEJqcnBla3FVRW40RDJ1WnJCOTFiVzJZNnpKbHVIcVFRa0tGK0pESVFjdXlESTYzK3l2RkRWaXF2SFpSV1RUR01HZ2U3V01ySW1ka3FGbldySldKeGlSenFFbUVxRmdudEthbEZINi9Nb212NUx4Z1FKWU9uaVNVb0JPUDhmV0Z5cndvU3lUMCtuTC9uV3ppM3JUc0VSZkUzNVBRM1FlNWNEc2swQzVJcEd6TExneFN6VlNJcXpsUkRtK3RCMjV6L2dXWDJObGh5L3dtV25MZlovU2hSNDJpQVJJcTBqazJDOC9Da05SOFprRkFoVVd0bnRwWWlMR1lPU2dZRElYUFJHWXgwdU9ub1dHeGhTUjkyZlFhZHQreGhRTHFWL0VJeFhRVGdmcUR2RzhBRjFldDVSZTRqa3hiQXVlMy9nWE5iL3hMTVkxakd2Z0dTdVFnQmZUWWtFOVhTbHF2ekV1RkhDQWhWbFVsejUvRmdoQVVoT1dKOWYzZ2d3MFphWWFHdm8yTGl2MzZrUUFTVStUQ25PSmd2c1FvdFlTWkxCWVNWM1ZlcG5Pc1NtcHh6NkY2bG9iSTd1dGJXOEtSdm8vQUY1T0IzQ3MyZ3lmOEdjUDZiUXI0bFhyOEI5QkdVZTJTYzIvNHl6dDF0SndjdmQ2MURvRFVQZ1pZc1NPWjVZcVh4RnZGZ0tORldxZEFTV2tzcGh0eEdxNDhGb1M0WE5SRHpCd0FTS3FIODhTTUh3cUNZVXNwZ211RkdHNVhiQy9tTmhnTmhFME1sZHlVM0lGbDVDWjFyTTJGZEU0UHU5ZTNCT2xmUWRPME1BYm53VGVEQ3Q0RUwzK0d2RE1wOXdzZHNwNkNnSVdCZEx2bk9ac0d2eTRaa1hTcXF3R3NqQTJrdmhkeStFSExiQWxiV0lUL0RnZVFLSUJrZkhrakZCT3QxQWNLZ21OTVh3NXpoWm1wUG9TL3pKV0ZBV0oyS3pKTUNoaVpwOVh2b1hsMkl2dHZpMEwzeFVqQUxQMDkrWVlmd0cvZHpJS1Fka1lDYzJ3YS9ZU0Y4VFpudzZYSWdkNGhBWVJnZ2NrY1paR3NKNVBZU3lOWkZRSnZvYUdFbTYrb0JzVmRNOUtNcTlvdlhidEwxMmlsbzFleUFYdk1ROUpvTmFOV01IeHEvWjNtWVBXWnI0a3VHQXFIaVg0K1lLR2JLVnRQWERuUnRLRVAzeGh6MGJocmdaUkhLTzhoMFVYUjFuOUFTbGVtaXI4blA5RzZGVDFjSWIyTW1mTTE1a0R2WGkrcXhzaENtbUt5UUQ1SGJTaUZaUzlscmFOVnlPQitTcWdwOWs2N1VaTUZ4WkZ6RVZ0b1BQUUpuRTc4VGFFbndxcnRMWU5UNllOUytCSE42Y0MwRTVveFZhTXYxb3EyUWg1aXN3a3RBcUh3dUtyWTk2MVZQTHlzaVVpbkZpNjRONjlHOWVRbDZOL3Q0SXFna2pQZW8vTW45d3NuZkI3bjdMbmliOHVHcHo0QlBOd2R5OXlZUlpkMG1nS3lMQ0VTeWxDRmdLWU5rV1NRY2V1RlFJR1pheXhGOVpTd25TZWZGVkdvQWJFMGFDbVJJbE1XY09td0h4OTkxMVdINEdtTUxBbWNUWkZaWUhBeEVKSWZKbDJGS0RZWjRhTXRhamJZOEwzdnlLQmVoeVdCQTFvU0E5R3dVWU5ZcFFDZzZDcUI3dzA3MDNMNFZQVnZrd1dVVk1sODdnMkd2MUhrN1BIVzVjTmRtd05jeVgrUWRTaE9FK25kVHBpNzhWc2RTU0cyTElabExJWmxMK0hvL0F5S3FDcXpjazZPcXpWRmRUcW5OWmZMbVA5TU1TUG8wU0MxSkVjSmUwVUNuN3RVNmVQTmpWeDJJdnpIK3g4RktiN0E3TVVtMURrSjJsbW8vTS84MTFHdVZ0eGJXMlQ2K0RsSW1WdjBVSUxlS3RROHhjYXpjVGtLVHVGRkd6MjBQb1dmenc0T0xqNkpXMWJjRGdmYjFjTlZrd1YwekU3Nno4L202aWhMeUJyVWozSDhzaDJ3dFE4QlVnb0JwRVNSVE1BOEo5WXhSVTErd0JpZUU5Um5uUWJiTWdtekpnV3pLZ21USWdLUlBSMENYTkdKaWFLK2dic2FiajF3TElMOEtyWVhRQ21FS1UxOVFMWXZaV05wT2tDYWFwak5mUmIxb1ZyRGtyNGUxd005dW5QbVRWU28vc2w0QTJSaWF3QzZWOXZSdWVndzltMzhkTElzSU1KSjFIVnhuTXVHcW5nbnYyU0pWRndyQjJCU21IYUs1cm1zRlpPc1NCTXlsQ0JnNUROa3Mrb1laRUNYa3pRKzFxN0tlTWdKRlh4ZEFKakhuTXpDU01RZVNJUk9CMWpUNG03WERyNG13eHJtYjM3enFRSHdOOGQ4TEFxR1ZRdXJkTlpQNmlpMERiRTFFMlU1QVgyYzNvejJidGVTZ3JXQWpySFA4TERObWF5R2krNFJOUEdtSjBnQ24rQlZGZTI0RHVqZjlIcjJianlnbEVjbTZCcTR6R1hCVno0QzNtV0NvelpRYWh0cVpyNFRVdmhRQll3a0M1a1VJR0JjZ1lDZ1dRTlQrWTdZS0JOWGVSTU1laGNOVWVpRnBtd3ZaWE1DemYyTU9BaTBaOERlbndOZVFNS1M0R055cVFGM3hoNzUyMDFVRmdycTRXSDl6dkQrNGxzNkFaRUdtMGp2cjNSV3FydGhiM3NuK1oxaHlXVHNNMnVac1FQdGNQNCs4cUVlTG5sb3FsOURFcTRVZ3FhR3d0WkJqNk4zY0tyVVRqSmx3VmFmRDJ6eFhMRklKVWFDcWd3WGhPK1NPNWZBYkY4RnZYQWpKdkJCKy9YejRXNHNnV3hUdFVQeUhxdTJWVmF5cERFUkNOYThGa0swTElMZk5oOXhHZGJFNWtJMTVrRnF6RVRpYkRsK0RGdDZhMkdENW5XL29DVFZndjFjK3JpanFhZzkvVS96endRVXFmWXJvYnFlWVhheURzQzBEcWowZDVCZ3R1UzVZWjI5aVVDeUZXMkNkRjJBbGl5N0sxRmVLaWFNSnBJa2tHSXFJN3dzdENsaVdkN25PekpBSmhxY3hYN1NWYmxLQjJCQVdJQ2lPZkFVRDRkTVhJMkJhQU1tOEFQN1dlZkMzekJWQUNvVldVSmd1ZW9xRDJ5QlkzVTFrOVpSRWxvcThaUUg3ckdTZWc0QStGLzZ6R2ZBMUpzTlRteERlNk1DMnZMSGRWWHRqdm5YVmdhQTIrVVovYzRJMXFDWFU0VzdKWmJhVnIzL1FUY3dmdkJiQ2txdzhHZGI4UjFqRGczWHVYYkRPbDlqTlVpK1dVdTFsNnlMQzJYY1JpTFhCeUV1eXJvQ25OaDN1TTJud05PVElJZTFSYVJXRHFxekRLekJXSW1BcGhVOVh4TFFDVmpKWjgrRTdPd2Urc3dSQmFBY3pWK1EzQ2tPYXdWWTFTMFR6M1JMSW5Vc2hkNUFzNW1Dc3BHM3pFTkRQWmxVQlgyTWF2TFdKUXlNc1pXZFZlZlN2cmpvUUJxVmwydVNBTHJHTG15M1Nra3ptNkZna3hVcnZnMHJiNG9hVmJRWUZlNmtwR3UxRlcyRXRsa0k5djh2REVrY0JvMnNONUk0VjhOUVJqRlI0NmpJZ2QxSVNLVXhhRUlLaUZZclBFRTY4ZlNsOHVybE1KQk9abmtVSUdPYkMxMXdBWDdOaW5vUXpEM2JjVTRXQjdxTkUxWSs4REhJSGlZRFN2aFN5dFpUOXpvQmhEdnk2SFBnYVo4SmJsd1IzOWZUQkVWWVFTRXp0TlFIQ29EUW5UZ3UwSnA1bjRTL3JPcUY0WGF5RnNJVXBSYzFMeE5OV0tPd3pjNXA2V09aT1IxdlJqaUFVQ29sWk5YWlZLSE5uTmErVjhOUm53bjBtaFdtSTNMNU1hRUM0ckZhQkVIdEpPcGZCMTFvRWIxTUJ2R2NMbWFtaC95dlFPZ2ZlaGp4NEcvTlV2aU5QV2RVVUpSKzZwbEtsQUFwWkRZUmd0QytGWktYa2tnRFBnMStYQjE5ekpyeDF5WENmamc5dENGVWMrdjRZOU8rTGVlLzlKelpDbXo1OXIvY3Y5Z21XaTRnZThiTTZUV0tnTmZFdGxpQ2Faa0ttV0oycHU5SWtyYWg3bWJERnRDMHRHRTYrZzdhaStXaWZ2ejJrS1dJQ1dOR1JUNnkzS1J2dU04bHcxNlJDc29pbWF6YnhhbGtWQm9JK3Z3eVNwUVR1K2p6bWI3aDIwRFVVdzNjMm55V1RudnBjVldZK0t3U0V3blAyVUpXSnJGNkJFUWFrYlFtN3BvQmhQdnd0QmZBMVpjRlRsd3AzZGZ4US84RjM1NDRjYVYyNmhML3Z1NHdoN2ZzWEwrSkw1ajk3VW11NnZlbnZDN1JGbXlycEUvOUtDU0xyUHJIa2k1VkJsWmF3cDUvV0h4YUVRL0V3ZjlKZWREK3N4VEtISWlEUzA2M0xnL3RNRWdOQ1R5RXZVcTRZUnBUSzhiSmdhZC9UbEE5M2ZTNjh6ZmxCR1BUL1U2M0xYWk1KVDYzb0EyQkpJQW10bVFnZ3JBOTVjUmlRRUF6WnFnQlpqSUN4R1A3V0F2Z2FzK0dwUzRPN09tSFFua054cUFDWC9UR0R1anJWV3ZBWk9pZWs4eTlJQ0grdkMvZzdPcDJ0d3VSWlVUV0tFOW5RRXA4aHRTYitqZmtUdG9WTkZCWFZXc0lXaEVRemRkQ3ZGQ2doNXRPRG9TeUNaQ3dRTUpLWU9lQ21RelJkaTBrS2lmSjlzU3JaV1FiSlhNeXllRmR0Tmx1a1VtQlFMdUZyeW9YcjlFeTR6OHhVbFVseWhSOGhzNnRveUpMMzBRNUtNZ25JUXZoYUNwazJrMWwxblU2QTQ5Z1VsYmxTQWRsNzA5TGhnTnhndWVqV3RGeEE3dTc2aTBNVytTdmIvUXQzdDNpM3ZkRG96WHcvSU96M0diU3pXZE9ETVlYbkh5enFVa0VoTGVGZDZVSlRhTjFodGhwS0JheEZEeE1VMlR3WG5wcGtlR3EwOERabUNGOGtQaitzQ05Nby9KYW5JUmZPNmd5NEcwU1RkekFiTDRTdktSdXUwK2x3bjU0aElrREttMFFiRTJ1QUVENkVSVllqYVljQVFpWC9sam53TnViQVV5T0FVUGQ3dUxrcWo4SGwvZEZyaDUxRXc1ODhTVFhkL2dYSFRlNGhXckpINTBuNWZaM24rMDhmZC96enJpcDhjYlRyNjVKQjYyUlFTRk9zQ2hTVjZWTFdzcFZ5ZDV0U3BpQ25QOWNNeTV4ZmVldFQ0S25Sd0Z1ZktoSXp0a1ZCMlpBVHpBbENvbnlmL3h3bGJzN1RNNWhJSnBwZ3lyS1Y4SmFpcXl5NHF0TGdPazI3aExORmxVRnNUbVhYck96K1hUdzBzZ3JYRHBQUUVGYjY1MENjSnhPb1FXNm91V0lhTW83bFl4Rkg5WGxNT3RydVg3V3YxYk02M0xuVE1YbS9PT0Y4OEpIRHp1Y2ZldDA1Nm9RR3Jab3lTYTkxeTdTLzBLdzBQY3dQZzZJNCtYbWhncDdZNk9scm11RWhHSjVhTGN1RXVha1JXOXZZSkEwblBKTm1UcnM1ajhGdzEyWUd0U0tVYStTelpWMVhWUW9UeVVCMU55R3NzcXVFdjhWOEFXc2szOEdBbE1Hdlh3Q2ZyZ0NlaG15NGE5TGdQQmtQKzVHSlhEc291bElCc1pXUFd6N3M1TzBHUGt0blRMM1M1UDdHODdYdXhQRDNmMXJwMWp5MHovSGFOMTRacU5yeU85djIwVU5KWEMwWk5MNVF2OVlzc1lOS3RlZWNPZG41UWpONFFVL1NaOEZUazhqRTM1TDFUbWpqcDVJMXoxY0JVb3Z5SG0vUW85SUtBZkczQ2hPa1pPRWltZ29ZQ0VneVhLZVRFV2hSanZOSUZ3Y1hrQytadzdwVFpNck0xVEFpYUlmZlNFRG9JU2lBcHk0TDd1cFVPSTdIWWVEd3hLSGFRVUQyUmhlTU9IbXZOVG9MNkFUUFg1eHlQaERwU05WdnZtSmJmc2NMQThiVnY3Uzl0ZkMvKy85NzZNazZ3MEhSM0M3cHRSTHYyYUppWTY2WUhKRThLaE5wNWF0MHNwa2NvZ2FlR3RxL2w2NUVZVkpvTzdVQ1p4aGh4Yis1Q0JqekdReXFBb2RBS0pFVStZc2N5T1pNdUtxUzREcWxoYTlCVktpTnFlSTZjeUJiOG5rUjBib1FjdnZpd1REQ3RjTlFBcDl1SHJ4TmVXeE5objZ2NCtoMGZxSkRtSGFRdkxmbjY3RWpUdHh1Qzc3d1RKWG5IeCtyZEQzOTd3ZWNxeVA5ekMzUDluOXIwZVA5cnJJbmJRTjBrT1M5cnd5TUd4VVV2V2FicE5mS2ZMMGtWUlFiS1ZlaFNSWjJuWDFOSVdNU2crRnQwSW9pWmI0NmtSUXdTUW9qaVBMZUhCYnBFQkJmYzdaeUJJZlllcDJqS25wbXdIMUdDMWNWUFFDYVVJc1BMU05Rc2RSQzZ4NkZrTnVLUllsa3lWQkhMclREMTdvQXZyT0Y4RGJrd0hWbUJwd25OYkJYVEkyb0hmMzdvZ2RHYy9KRTFHTkhIVm4vZnRENXV4L3VkYnoyelQvWUkrWWVKVS8wYjFuM25NMjY3VVY3MDNkZmMveHgxMEhuTGJ1cSt0N1gyY09nL1VGd1ZkR2N6TXZ6N0FnTk1pZjg2WlgwR2ZEVXhMUENuR3pNR0h5OFJ2QmtCeldnQ0NJMHdWWER6WlZzeW8wQWdrd1NYNHIxMW12aE9wVUFWMVVDUHpTTkhad1dLcGJLbHRtOHpHNmg2bTVwQkVkT3BtcWgwSTdaTEtkeFZhZkNlU3dCQTRjblI5U095L3RpNnFKR094N2E1M3pnTzY4Nmp1MTR5VjY1NGZuM0l1NWczZjYvcnRnSFhuTThzZXNONS84OGVkejlzeGRxUEEvdTBmdm1WdWt2ajdnM1hOSnJmeHlFSW02Y0wySmxzMG55MWNYRFd4dUhRRXZLNEFOb1dDaXFUR3lFVmJ5Z0tPL05ZdjZEMXRaNWxWa05RcjEzSlEzK3MyU3k0cGhJT2lyLzBJS2JXT014WlVJeTA4b2dMVWJOWTlWaFZpSmhxNHg4Y2N0dldBQmZTeEc4NURzYWNsbE80enlaQlB2UldGcU1HcW9kQktROFpsUUg1Z1JQemJublJkdHZOdi9HM25iTEwyMW5Gai8rdDBHYk4wTUROengxd3B2eFFvMTd4K3N0M3UwVXBUV2M4ODJtQUdGa0tKckhRL3NReGVseDVoVDRtelZzMmRQZktIek5vQ09hMUhBRUlQVWVGRVdVNzF1eUlSbG9mVVlGSVFoQ05FMnpUblphNlV5Q3V5b1dybFBUNGFtTlYyMHpTR2FSRjdXZFNxWThscUFHakhNaEdZc1FNQlhEYnlobVZXUFNES29ZVTAzTVU1c0paeFU1YzlLT3FWU3ppZ2lrZjEvMGxXMlR2dk5GVzh5YVovdnJ5cDdzdDgxN3JQL05KYzlFTmwvS3FMUWd1dmtDRXJvR01LZ05LQ0pHUk4wZ3RXcCtIWGJRSlVnemFPbVRiNFZUVHBKTEQ0T2pCcVJBVW92NnZYQUk2WU5BS0swOC9QOG1JTFIyTVIxU2k3TG5Rd1BKa01xaDZMTVIwTTlDUUorUGdINE8vQzF6V0w1Qm5TMVVLZlkyelJLbUtoM09FMXJZSzZkajRJMEprYlZqWDNUM0IrcUNYLzZNWTJMUnovcjFpNSt5OWE5OXR0OXk1d3YyRDNWeTV5QW91Nk0rSzdVbTdnMmRoYUpselFHc1VXTFlZLzZHSFBVblFBbFJmeS80Y3dxRUNDQ1VaamVqRm9HemlXeGxqNFE2UnBUbWFkWkowcEtLZ0c0R3kxbW90TzdYeldLMU5WL3pMQTZpSVFmdXVreTR6bEFpbUFUSHNUZ01ISm9jV1RNb3V0b1hQZXBkVzBQRzBxZmYvZXFhWjIydmJYbkJacjczWlh2TjkxNTMvT0Q3dzV5RmU4VlFxbUsvS09rVFR3YzN2aGlHT1kyVVRXTDRZWmhwWWFBVVViK1hHZ1poS0FqMXBodFA5VlM0VDA2QnUyb0szK3BOTzZLb3JhZFp3OWJKS1FUM05jM2szWkJOV2ZEV1p6QWY1YTZsMERvTnpsTmFPSTdHWStEd0ZQVHZIeitjZHZ6bDNTUFJIKzQwYlRyZGMrZkx0dTBQN25ZYytORit4eXVQVmpqLzh4ZkhYWE1vZy8vUVVCbzFYNVZhRS9seEZVUEFoTU5SQUtrZ1JSUmxCN0FTd29aTTB4QVFxbTFwdnNaNHRwaEU0cXVaRmpydGg3YW9OU1RDVjUvRWNoVnZmUnFyNUhwcVU5bFNBQ1dXenBOYTJFa3pqa3hCLzRISWpwdzc4K2dyMm1nNjR2aW5QZTZFbnh4eC9OdlRKOXovK2RzNnowT3Y2UUpiRHJaNnRNL3JkSi8vVUZCYWtpZExyWnJ6NmpNWmcySU1nek1Fa0JxVVdudFU1ckt4Y1Y0QUFBYVBTVVJCVk0xRTBWS2EyTGFkTWdoQzZFUUdEZE1JRHkyNW5wZ005NGtwYko4Z21TOStPa01zYy9pc2VuQW1FZTR6R3JoUGErQ3FTb1R6UkR3Y1I2ZkJmbmd5Yk1QNERSSHFWbDcxSFZUMFp4NWVxSEZrL3JIWmV3ZWQ0bm1pdzcrc3NjdFhZSHpUT1pWSzlSOGNpalkxMEtycEQzWkJSb0lqQUEyRmxBSlFUeGliZkw0dG16SndKcVlzOFNxNkRJM3BQSndsTVBva2xhK2dUWnNKWEV0T1RJYnIrR1RXdWtPdFBIeHJtbWpwb2FhRnF1bHduWXFGNjhSME9JOU5nNk5pQ2dZT1RZaWNBQWFqcXBnKzI3NGJyL2lnNWlzQ2M3TE5GZHZVNTgweVhQVE82SG9YVTk5K0d4L3F6ei80ZFpyRmdkWUVQNXVrY0RBUkFWR3VrTXlmZmxxbFpKUE9XNUY0UXBjTG1YSUkweXorYjFNT1pHTTJKR01tSkNORlRtbVFXbE1nNmNpcEovQ1RHSnJpMmNSVEh5NHRMQkVZZC9XMHdjZkJudUR2cVU4ZkhRa0dIYWo4a1o2N2FMRll2dERYTjdxeS9QdU5nQzdoSDRKUExPMXNWZUJFQWtSQTlHU0dLQnVuSnIxc1B2Rm1LbmRRUjJHQlNPaElxRVkyVytRVHVaQU0yWkQwMUdsSTBWTXE2elprdTJmRmlUN3NkTkdqazloYUJzRnhuVkx0Z2pxcW5HTDlNWVJ4TFliL2JNSXZsU2huTUp3UUlDYVV1T25KQk0wVVR6N3RIY3puQUZqOWljb2RKUE9FVUpkaElTVGpiRWlHUEVoNjZqVE1SRUNYenJzTkd6WHcxc1dKamtNeVIyTDdRTVZFT0NzbmhzNVJWQjBwUHFLWktvOTUwN1puM0tBTnBQOG5CK2lnNHFiNFYyblBOek1sNnRPeGc0QUlDZ0ZKWS9VdmlZQXcwMVFBMlZUSXloeXlaVDVrU3pGN2xjd2hDWmptSVdBc1pFbWV2NFVhMnlpTVRZZXZrYnBaS1B5TkRaN0Rxd0NoSlZnR2dscDVSZ21qLzhCSHVPUDJXZy9vY2ovdmE0Zzl5TUpPZGtvMlB5bGJBUlNnSEtFbG1UVTNCNmp6bkV3UVBmVkc2ck9kT3dnQWh6QWZBU05KRVJjRGJRQXRoTDhsbnlWN3RMbkgyNURHV25jODFmRndVOWF1bkZFaXpCTXpVZUpjZDl2K1R4RU05YWxCM3ZyWVNuYU9QRWtqQ1Fma2I2S0VUUXUvanJMb21RaTBadkhTaG1FMkFrYlNnREFBQ2dRRGRTMEthWjNIeXgvTmVmQTE1Y0JiTjRQbkZ0V0pjRlhGY3BNVk5GRWhHSkdxdDZwbzZ1SW5Fb1l5VURYK0s5NjY2YWRZVGxDdkNLOTUrUm9UNFd0T2h2OXNHdnk2VEc1K1dtY2owRm9ZblB5QU12bE01dkUrWHRITFM4STZHWnNMNEcyazNxeE0wWmlnWlV1dndXNlJRNk15VVJ6R3Z2RkRWbHMvY1FOSE5IL25QVE50cjVJVGNJbmxEcmllci9TeGtnYmJiWnZIR3RVR1RUNERFQVpCaVBmc1hIaWJxVXRrRmp6MVdhd2U1VHFWQk1lSk9EZ3FwL0w4NHYxTjFLY0hocm9ZNmFtZTlnTGxBN1FyS1NpMUNmRFdhZUZ0U0lXM2tlcE0yZkNkeldPTkJwRUFoQ0FVY21raUdIUGdxWi9GR3Vhb0pjaDVNaG1PWTd3bU5keDZ4cWNhaGpLbzdPQTZOZVhubEtBeE9VMHlEZTR6Y2F3enhWT2ZDbS9EREhnYnNsZ1ZsanJhZlRUNVRBb0hRMUJBTkJiQVV6OGI3cHBjdUtvejREeVZCc2R4TGV3VmNiQVJrUDN2QytUODVRTmZpNC82TkEvbnFTbjNPazlNOWltRlFOZEpBaFFIZDdXR04yTFhwTU5UUjFGVExyeU4rV0VBQklTR0FyaEo2Z3ZncXAwRlYzVTJuRlV6NERpZUF2dFJEUWFPeE1KMmFBcHNJeFFLKy9mRlhPamZjL09RUHJaUDVYQlZUQ3B5SHB2ME5qdlFoWlU1cHJEYUVsc2JQMDNiQUZMaFBzUDdzZHkxT2ZEVXpZSzdudnA3WnpNSTdycDh1R3Z6NEtxaHJzWXNPS3Rtd25FOEZmYWpXZ3hVSkhBZ0IwY0FNZ1pqNkhCVlRwNW1QektoaFJJM0pwVlU2cGpHZXFHY0p4UFpZcEdUTmNITmdMTjZKbHluYVdNb0xTUmx3OGswSWhPT1V6UGhPSkhPWVJ4TGdyMlNhOGZBSWVvV21ZVCtTQ1pyRE1idzQrM2Q0Nzh5Y1BEbTM3UFFWSWo5OENUWUs2ZkNYaEhMRm96c3h4TGhPSjdFekZGUWp0RzZkd3JzSk1lU21abXlWeVppNEFnMXRrMkQ3ZURreVA1algwemYrL1pUalkyb3FNc0hvdGYxSHhqM0x1VUtYTWJEOWdiOXFZako3R2tmT0J5TGdZbzRabzVvNGtrVHVDUnlFMFh2SFJhYVFUQU9UQmpjcVM0MDQxUHZ3Sy8wcjIxZTNoZDllTkFrN2ljNGxHRlRmKzFrNXFnNW9Ha1lPRFNkdng2Y3loMDR2Zi9HUkxIaU55VHZHSXVtUHNpZ2pwYkw1ZEU3THBkSC8zV29NeDdIMXJySkZKRUcyQTVNRkVKZlU3dG5SQkRvTDQ5dWVmZGc5S2ovdnVIWWlEQm91OWpsOHVobkxwZkhCTjQzc1J0QkxwZEh2L3lKK2J1Mkg0ZHh1WHg4MXVYeW1LT1g5OFhJVndSalg0eng4dDZZUmRmNytqK3g0MjhIYmtydkw0OTVxbjlmakdWNE9ORzkvZnRpZmp1dzU2YTUxL3Q2UDFYRHR1L0dHTkljMjc2Ymx2V1gzN1NFMmpvZHU4ZFB2TjdYTlRiR3h0Z1lHMk5qYkl5TnNURTJvcTdCK1ArRC9sQTJOU2xjekFBQUFBQkpSVTVFcmtKZ2dnPT1cXFwiLz48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDkzNCAyMjBcXFwiPjxnIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0yLjYgMjA4LjdWMTAyLjJoMzAuOHYxMDYuNXpNMTI2IDE5OC40Yy03IDguNS0xNyAxMy4zLTMwLjQgMTMuMy0yMS40IDAtMzguNy0xMy4zLTM4LjctMzMuOSAwLTIwLjMgMTcuMy0zMC40IDQxLjUtMzEuNyAxOC42LTEuMSAyNC41LTMuMSAyNC41LTkuNCAwLTYuMS01LjctMTAuMy0xNS43LTEwLjMtMTIuMiAwLTE3LjUgNi4xLTE4LjEgMTIuN0g1OS4yYzEuNS0yMy40IDE5LTM5LjUgNDguMy0zOS41IDI4LjYgMCA0NyAxNS41IDQ3IDQ0LjZ2NjUuMWgtMjUuNmwtMi45LTEwLjl6bS0zOC0yMS45YzAgNi4xIDUuNSA5LjggMTQuMiA5LjggMTEuOCAwIDIxLjItNi42IDIxLjItMTkuOXYtMy45cy01LjcgMi42LTE3LjUgMy4zYy0xMi44LjctMTcuOSA0LjgtMTcuOSAxMC43em0xMzUgMzMuMmMtMjMuNCAwLTM2LjktMTMuNS0zNi45LTM3LjF2LTQxLjdoLTE3Ljl2LTI4LjZoMTcuOVY4Ni41bDMxLTI2LjJ2NDEuOUgyNDR2MjguNmgtMjYuOXYzNy40YzAgMTAuMyA2LjggMTIuNyAxMy4xIDEyLjcgNy4yIDAgMTMuMS0yLjggMTMuMS0yLjh2MjguMnMtOC4zIDMuNC0yMC4zIDMuNHpNMCA3MC4yYzAtMTAgNy45LTE4LjEgMTcuOS0xOC4xIDEwIDAgMTguMSA4LjEgMTguMSAxOC4xIDAgOS44LTguMSAxNy45LTE4LjEgMTcuOS0xMCAwLTE3LjktOC0xNy45LTE3Ljl6bTI2Ni45IDEzOC41VjEwMi4yaDMwLjh2MTA2LjV6XFxcIi8+PGcgdHJhbnNmb3JtPVxcXCJ0cmFuc2xhdGUoMjI3KVxcXCI+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTExMC45IDcwLjVjMC00LjktLjctOS43LTEuOS0xNC4zLTEuMy00LjctMy4xLTkuMi01LjUtMTMuMy0yLjQtNC4yLTUuNC04LTguOC0xMS40LTMuNC0zLjQtNy4yLTYuMy0xMS40LTguOC00LjEtMi40LTguNi00LjMtMTMuMy01LjUtNC42LTEuMi05LjMtMS45LTE0LjMtMS45LTQuOSAwLTkuNy43LTE0LjMgMS45LTQuNyAxLjMtOS4yIDMuMS0xMy4zIDUuNS00LjIgMi40LTggNS40LTExLjQgOC44LTMuNCAzLjQtNi40IDcuMi04LjggMTEuNC0yLjQgNC4xLTQuMyA4LjYtNS41IDEzLjNsNy45IDIuMWMxLjEtNCAyLjctNy44IDQuNy0xMS4zIDIuMS0zLjYgNC42LTYuOCA3LjUtOS43IDIuOS0yLjkgNi4yLTUuNCA5LjctNy41IDMuNS0yIDcuMy0zLjYgMTEuMy00LjcgMy45LTEgNy45LTEuNiAxMi4xLTEuNiA0LjIgMCA4LjMuNiAxMi4yIDEuNiA0IDEuMSA3LjggMi43IDExLjMgNC43IDMuNiAyLjEgNi44IDQuNiA5LjcgNy41IDIuOSAyLjkgNS40IDYuMiA3LjUgOS43IDIgMy41IDMuNiA3LjMgNC43IDExLjMgMSAzLjkgMS42IDggMS42IDEyLjIgMCA0LjItLjYgOC4zLTEuNiAxMi4xLTEuMSA0LTIuNyA3LjgtNC43IDExLjNsNy4xIDQuMWMyLjQtNC4xIDQuMy04LjYgNS41LTEzLjMgMS4zLTQuNSAyLTkuMiAyLTE0LjJaXFxcIi8+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTEyNS4yIDcwLjVjMC02LjItLjgtMTIuMy0yLjQtMTgtMS42LTUuOS0zLjktMTEuNi03LTE2LjgtMy4xLTUuMy02LjgtMTAuMS0xMS4xLTE0LjQtNC4zLTQuMy05LjEtOC0xNC40LTExLjEtNS4yLTMtMTAuOC01LjQtMTYuOC02LjlDNjcuOCAxLjggNjEuNy45IDU1LjUuOWMtNi4yIDAtMTIuMi44LTE4IDIuMy01LjkgMS42LTExLjYgMy45LTE2LjggNi45LTUuMyAzLTEwLjEgNi44LTE0LjQgMTFsNC4zIDQuM2MzLjktMy45IDguMy03LjMgMTMuMS0xMC4xIDQuNy0yLjcgOS45LTQuOSAxNS4zLTYuMyA1LjItMS40IDEwLjctMi4xIDE2LjQtMi4xIDUuNyAwIDExLjIuOCAxNi40IDIuMiA1LjQgMS40IDEwLjUgMy42IDE1LjMgNi4zYTY0LjQ2NiA2NC40NjYgMCAwIDEgMjMuMiAyMy4yYzIuNyA0LjcgNC45IDkuOSA2LjMgMTUuMyAxLjQgNS4yIDIuMiAxMC43IDIuMiAxNi40IDAgNS43LS43IDExLjEtMi4xIDE2LjQtMS40IDUuNC0zLjYgMTAuNi02LjMgMTUuMy0yLjggNC44LTYuMiA5LjItMTAuMSAxMy4xbDQuMyA0LjNjNC4zLTQuMyA4LTkuMSAxMS4xLTE0LjQgMy01LjIgNS40LTEwLjggNi45LTE2LjggMS44LTUuNCAyLjYtMTEuNSAyLjYtMTcuN1pcXFwiLz48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNOTMuMiA2MC40Yy0uOS0zLjMtMi4yLTYuNS0zLjktOS40LTEuNy0yLjktMy44LTUuNy02LjItOC0yLjQtMi40LTUuMS00LjUtOC02LjItMi45LTEuNy02LTMtOS40LTMuOS0zLjItLjktNi42LTEuMy0xMC0xLjMtMy41IDAtNi44LjUtMTAgMS4zLTMuMy45LTYuNSAyLjItOS40IDMuOS0yLjkgMS43LTUuNyAzLjgtOC4xIDYuMi0yLjQgMi40LTQuNSA1LjEtNi4yIDgtMS43IDIuOS0zIDYtMy45IDkuNC0uOSAzLjItMS4zIDYuNi0xLjMgMTAuMXMuNSA2LjggMS4zIDEwYy45IDMuMyAyLjIgNi41IDMuOSA5LjRsMTAuNi02LjFjLTEuMi0yLTIuMS00LjEtMi43LTYuNC0uNi0yLjItLjktNC41LS45LTYuOSAwLTIuNC4zLTQuNy45LTYuOS42LTIuMyAxLjUtNC40IDIuNy02LjQgMS4yLTIgMi42LTMuOSA0LjItNS41czMuNS0zLjEgNS41LTQuMiA0LjEtMiA2LjQtMi43YzIuMi0uNiA0LjUtLjkgNi45LS45IDIuNCAwIDQuNy4zIDYuOS45IDIuMy42IDQuNCAxLjUgNi40IDIuNyAyIDEuMiAzLjkgMi42IDUuNSA0LjJzMy4xIDMuNSA0LjIgNS41YzEuMiAyIDIuMSA0LjEgMi43IDYuNC42IDIuMi45IDQuNS45IDYuOWgxMi4zYzAtMy41LS40LTYuOS0xLjMtMTAuMVpcXFwiLz48ZyBmaWxsPVxcXCIjQTdFQkVGXFxcIj48cGF0aCBkPVxcXCJNODEuNCA2My42Yy0uNi0yLjMtMS41LTQuNC0yLjctNi40LTEuMi0yLTIuNi0zLjktNC4yLTUuNWwtNS44IDUuOGMxLjEgMS4xIDIuMSAyLjQgMi45IDMuOC44IDEuNCAxLjQgMi45IDEuOCA0LjQuNCAxLjUuNiAzLjEuNiA0LjggMCAxLjctLjIgMy4yLS42IDQuOC0uNCAxLjYtMSAzLjEtMS44IDQuNC0uOCAxLjQtMS44IDIuNy0yLjkgMy44LTEuMSAxLjEtMi40IDIuMS0zLjggMi45LTEuNC44LTIuOSAxLjQtNC40IDEuOC0xLjUuNC0zLjEuNi00LjguNi0xLjcgMC0zLjItLjItNC44LS42LTEuNi0uNC0zLjEtMS00LjQtMS44bC00LjEgNy4xYzIgMS4yIDQuMSAyLjEgNi40IDIuNyAyLjIuNiA0LjUuOSA2LjkuOSAyLjQgMCA0LjctLjMgNi45LS45IDIuMy0uNiA0LjQtMS41IDYuNC0yLjcgMi0xLjIgMy45LTIuNiA1LjUtNC4yczMuMS0zLjUgNC4yLTUuNWMxLjItMiAyLjEtNC4xIDIuNy02LjQuNi0yLjIuOS00LjUuOS02LjkgMC0yLjQtLjMtNC43LS45LTYuOVpcXFwiLz48cGF0aCBkPVxcXCJNOTYuNCA0N2MtMi4xLTMuNi00LjYtNi44LTcuNS05LjctMi45LTIuOS02LjItNS40LTkuNy03LjUtMy41LTItNy4zLTMuNi0xMS4zLTQuNy0zLjktMS04LTEuNi0xMi4yLTEuNi00LjIgMC04LjMuNi0xMi4yIDEuNi00IDEuMS03LjggMi43LTExLjMgNC43LTMuNiAyLjEtNi44IDQuNi05LjcgNy41LTIuOSAyLjktNS40IDYuMi03LjUgOS43LTIgMy41LTMuNiA3LjMtNC43IDExLjMtMSAzLjktMS42IDgtMS42IDEyLjJoOC4yYzAtMy41LjUtNi45IDEuMy0xMC4xLjktMy4zIDIuMi02LjUgMy45LTkuNCAxLjctMi45IDMuOC01LjcgNi4yLTguMSAyLjQtMi40IDUuMS00LjUgOC4xLTYuMiAyLjktMS43IDYuMS0zIDkuNC0zLjkgMy4yLS45IDYuNi0xLjMgMTAuMS0xLjNzNi45LjUgMTAuMSAxLjNjMy4zLjkgNi41IDIuMiA5LjQgMy45IDIuOSAxLjcgNS43IDMuOCA4LjEgNi4yIDIuNCAyLjQgNC41IDUuMSA2LjIgOC4xIDEuNyAyLjkgMyA2LjEgMy45IDkuNGw3LjktMi4xYy0xLjUtNC0zLjEtNy44LTUuMS0xMS4zWlxcXCIvPjxwYXRoIGQ9XFxcIk0xMTYuOSA1NC4xYy0xLjQtNS40LTMuNi0xMC41LTYuMy0xNS4zYTY0LjQ2NiA2NC40NjYgMCAwIDAtMjMuMi0yMy4yYy00LjctMi43LTkuOS00LjktMTUuMy02LjMtNS4yLTEuNC0xMC43LTIuMS0xNi40LTIuMS01LjcgMC0xMS4yLjgtMTYuNCAyLjEtNS40IDEuNC0xMC41IDMuNi0xNS4zIDYuM0E2NC40NjYgNjQuNDY2IDAgMCAwIC44IDM4LjhsNy4xIDQuMWMyLjQtNC4yIDUuNC04IDguOC0xMS40IDMuNC0zLjQgNy4zLTYuMyAxMS40LTguOCA0LjEtMi40IDguNi00LjMgMTMuMy01LjUgNC42LTEuMiA5LjMtMS45IDE0LjMtMS45czkuNy43IDE0LjMgMS45YzQuNyAxLjMgOS4yIDMuMSAxMy4zIDUuNSA0LjIgMi40IDggNS40IDExLjQgOC44IDMuNCAzLjQgNi4zIDcuMyA4LjggMTEuNCAyLjQgNC4xIDQuMyA4LjYgNS41IDEzLjMgMS4yIDQuNiAxLjkgOS4zIDEuOSAxNC4zIDAgNC45LS43IDkuNy0xLjkgMTQuM2w3LjkgMi4xYzEuNC01LjIgMi4xLTEwLjcgMi4xLTE2LjQuMS01LjYtLjctMTEuMS0yLjEtMTYuNFpcXFwiLz48L2c+PGNpcmNsZSBjeD1cXFwiNTUuN1xcXCIgY3k9XFxcIjcwLjVcXFwiIHI9XFxcIjE4LjRcXFwiIGZpbGw9XFxcIiMxODU1NjhcXFwiLz48L2c+PHBhdGggZD1cXFwiTTM1NS4zIDE0My40di0zOC4yaDguMXYzOC4yem0yMy4zLTEzLjR2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVIMzg4di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNSAyLjYtNSA2Ljd6bTM0LjEgMTMuNWMtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40SDM5OXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMzUuOS0xMS40aC0xOC45Yy40IDIuNyAyLjcgNC44IDYgNC44IDIuMiAwIDMuNS0uOSA0LjQtMi4zaDguM2MtMS44IDUuOC01LjkgOS40LTEyLjYgOS40LTcuNyAwLTE0LTUuNC0xNC0xMy44IDAtOC4xIDUuNy0xNC4yIDEzLjUtMTQuMiA4LjggMCAxMy4yIDYuOSAxMy4yIDE0LjEuMi43LjEgMiAuMSAyem0tMTMuMS05LjNjLTIuOSAwLTQuOSAxLjgtNS40IDQuMWgxMC40Yy0uMi0yLjMtMi4yLTQuMS01LTQuMXptMzYuMS00LjZ2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40aC03Ljd2LTI2LjdoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy40LjEgNC45IDIgNC45IDJ6bTEyIDExLjh2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVoLTcuN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTQuOSAyLjYtNC45IDYuN3ptMzkuMyAxMC43Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjQtNS41YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0zMy42IDguM2MtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMTMuNC0xMy40YzAtOCA2LjItMTQgMTQuMi0xNCA4LjEgMCAxNC4yIDYgMTQuMiAxNHMtNi4yIDE0LTE0LjIgMTRjLTguMSAwLTE0LjItNi0xNC4yLTE0em03LjkgMGMwIDMuOSAyLjcgNi44IDYuMyA2LjggMy43IDAgNi4zLTIuOCA2LjMtNi44IDAtMy45LTIuNy02LjgtNi4zLTYuOC0zLjYuMS02LjMgMi45LTYuMyA2Ljh6bTMzLjYgMHYxMy40aC03Ljd2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNWgtNy43di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjYtLjEtNC45IDIuNi00LjkgNi43em0zOS40IDEwLjdjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjVjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjIuMi00LjQgMS4yLTQuNCAyLjd6bTIzIDguMnYtMzguMmg3Ljd2MzguMnptNDkuNi0zOC4yIDE0LjkgMzguMkg3MjJsLTMuMS03LjVoLTE0LjhsLTMgNy41aC04LjRsMTQuOS0zOC4yaDcuOXptLTMuOSAxMS00LjcgMTIuNWg5LjVsLTQuOC0xMi41em0yMi41LTcuMWMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMTMuNC0xMy40YzAtOC40IDYuMS0xNCAxMy41LTE0IDMuMSAwIDUuNiAxLjEgNyAyLjN2LTEzLjJoNy43djM4LjJoLTcuNnYtMS45Yy0xLjQgMS40LTQuMSAyLjUtNy4xIDIuNS03LjUuMS0xMy41LTUuMy0xMy41LTEzLjl6bTIwLjUgMGMwLTQuMS0yLjctNy02LjMtNy0zLjYgMC02LjMgMi44LTYuMyA3IDAgNC4xIDIuNyA3IDYuMyA3IDMuNiAwIDYuMy0yLjggNi4zLTd6bS00MTUuOCA0MC42aDMwdjcuNWgtMTF2MzAuN2gtOC4xVjE3OGgtMTF2LTcuNHptNDguOSAxM3Y3LjZzLTItMi4xLTUuMS0yLjFjLTIuMyAwLTUgMS4zLTUgNS4ydjE0LjRIMzg0VjE4Mmg3LjZ2Mi4yYy0uMSAwIDEuNS0yLjYgNS4zLTIuNiAzLjMuMSA0LjggMiA0LjggMnptMjAuOCAyMi40Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4xLjItNC40IDEuMi00LjQgMi43em0zMC44LTUuMnYxMy40SDQzNnYtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDQ1M3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOCAyLjYtNC44IDYuN3ptMzggNS43YzAtLjgtLjUtMS41LTIuNi0xLjlsLTQtLjhjLTYuMS0xLjItOC42LTQuMS04LjYtOC4xIDAtNC43IDMuNS04LjkgMTAuOS04LjlzMTAuNyA0LjEgMTEuMyA4LjhoLTcuNGMtLjQtMS41LTEuNy0yLjMtNC0yLjMtMi4yIDAtMy40LjgtMy40IDEuOSAwIC44LjcgMS4zIDIuNyAxLjdsNCAuOGM1LjcgMS4xIDguNiAzLjggOC42IDguNCAwIDUuMi0zLjggOC44LTExLjIgOC44LTcuNiAwLTExLjctMy42LTEyLjUtOS4yaDcuOGMuNCAxLjkgMS44IDIuOCA0LjcgMi44IDIuNS0uMSAzLjctLjggMy43LTJ6bTQwLjctNS43YzAgOC40LTYuMSAxNC0xMy41IDE0LTMuMSAwLTUuNi0xLjEtNy0yLjN2MTIuM2gtNy43di0zNy4zaDcuNnYxLjljMS40LTEuNCA0LjEtMi42IDcuMS0yLjYgNy41IDAgMTMuNSA1LjQgMTMuNSAxNHptLTIwLjUgMGMwIDQuMSAyLjcgNyA2LjMgNyAzLjYgMCA2LjMtMi44IDYuMy03IDAtNC4xLTIuNy03LTYuMy03LTMuNiAwLTYuMyAyLjktNi4zIDd6bTQxLjggMTAuNmMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMS4yLTQuNCAxLjItNC40IDIuN3ptNDAuOC0xN3Y3LjZzLTItMi4xLTUuMS0yLjFjLTIuMyAwLTUgMS4zLTUgNS4ydjE0LjRoLTcuN1YxODJoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy40LjEgNC45IDIgNC45IDJ6bTI5LjcgMTMuOWgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjEuNy4xIDIgLjEgMnptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjF6bTI2LjEgNy4ydjEzLjRINjEwdi0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINjI3di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjYtLjEtNC44IDIuNi00LjggNi43em00MC43IDNoOC41Yy0xLjMgNi41LTYuMiAxMS0xMy40IDExLTguMSAwLTE0LjEtNS45LTE0LjEtMTQgMC04IDYtMTQgMTQuMS0xNCA3IDAgMTEuOSA0LjQgMTIuOSAxMC43SDY1OGMtLjYtMi0yLjMtMy40LTQuNy0zLjQtMy4zIDAtNS45IDIuOC01LjkgNi43IDAgMy45IDIuNiA2LjcgNiA2LjcgMi42IDAgNC41LTEuNCA1LjEtMy43em0xOCAyMS4yYy0zLjUgMC01LjItLjktNS4yLS45di03LjFzMS42LjggMy4zLjhjMS43IDAgNC0uNyA0LjYtMy43TDY2OC44IDE4Mmg4LjZsNi4xIDE2LjYgNi4yLTE2LjZoOC4zbC0xMSAyNy4yYy0yLjkgNy4xLTUuMiAxMC40LTEwLjUgMTAuNHptNDAuOS0xMC44di0zOC4yaDguMXYzOC4yem0yMy4zLTEzLjR2MTMuNEg3MzN2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg3NTB2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS00LjkgMi42LTQuOSA2Ljd6bTIzLTIwLjljMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTI1LjYuMWMtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMzAuOC0yLjhjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNC01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjIuMi00LjQgMS4yLTQuNCAyLjd6bTMzLjYgOC4zYy01LjggMC05LjItMy40LTkuMi05LjN2LTEwLjRoLTQuNXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMTAuNC0zNC40YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0zOC43LTI2LjctOS41IDI2LjdoLThsLTkuNS0yNi43aDguMmw1LjIgMTYuNSA1LjItMTYuNXptMjguMiAxNS40aC0xOC45Yy40IDIuNyAyLjcgNC44IDYgNC44IDIuMiAwIDMuNS0uOSA0LjQtMi4zaDguM2MtMS44IDUuOC01LjkgOS40LTEyLjYgOS40LTcuNyAwLTE0LTUuNC0xNC0xMy44IDAtOC4xIDUuNy0xNC4yIDEzLjUtMTQuMiA4LjggMCAxMy4yIDYuOSAxMy4yIDE0LjEuMS43LjEgMiAuMSAyWm0tMTMuMS05LjNjLTIuOSAwLTQuOSAxLjgtNS40IDQuMWgxMC40Yy0uMi0yLjMtMi4yLTQuMS01LTQuMVpcXFwiIGZpbGw9XFxcIiMxODU1NjhcXFwiLz48L2c+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI1IDI0XFxcIj48cGF0aCBkPVxcXCJNMjAuODM0IDExLjIzVjguOTU3YTguMzMzIDguMzMzIDAgMCAwLTE2LjY2NyAwdjIuMjcxYTMuMTI1IDMuMTI1IDAgMCAwLTIuMDgzIDIuOTM4djIuMDgzYTMuMTI1IDMuMTI1IDAgMCAwIDMuMTI0IDMuMTI1aDMuMTI2YTEuMDQxIDEuMDQxIDAgMCAwIDEuMDQxLTEuMDQydi02LjI1YTEuMDQyIDEuMDQyIDAgMCAwLTEuMDQxLTEuMDQxSDYuMjVWOC45NThhNi4yNSA2LjI1IDAgMSAxIDEyLjUgMHYyLjA4NGgtMi4wODNhMS4wNDEgMS4wNDEgMCAwIDAtMS4wNDIgMS4wNDF2Ni4yNWExLjA0MSAxLjA0MSAwIDAgMCAxLjA0MiAxLjA0MmgzLjEyNWEzLjEyNSAzLjEyNSAwIDAgMCAzLjEyNS0zLjEyNXYtMi4wODNhMy4xMjUgMy4xMjUgMCAwIDAtMi4wODQtMi45MzhaTTcuMjkyIDEzLjEyNHY0LjE2N0g1LjIwOWExLjA0MiAxLjA0MiAwIDAgMS0xLjA0Mi0xLjA0MnYtMi4wODNhMS4wNDIgMS4wNDIgMCAwIDEgMS4wNDItMS4wNDJoMi4wODNabTEzLjU0MiAzLjEyNWExLjA0MiAxLjA0MiAwIDAgMS0xLjA0MiAxLjA0MmgtMi4wODR2LTQuMTY3aDIuMDg0YTEuMDQyIDEuMDQyIDAgMCAxIDEuMDQxIDEuMDQydjIuMDgzWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xOC4zODQgMjEuNjE2QTQuNjMgNC42MyAwIDAgMSAxNS4xMiAyM2wtLjAxLTEuMTU4YTMuNDcyIDMuNDcyIDAgMCAwIDMuNDQ1LTMuNWwxLjE1Ny0uMDA5YTQuNjMgNC42MyAwIDAgMS0xLjMzIDMuMjg0WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMDQyXFxcIi8+PHJlY3QgeD1cXFwiMTEuMjVcXFwiIHk9XFxcIjIwLjQxNlxcXCIgd2lkdGg9XFxcIjQuNjg4XFxcIiBoZWlnaHQ9XFxcIjMuMTI1XFxcIiByeD1cXFwiMS41NjNcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiPjxwYXRoIGQ9XFxcIk03LjM4NSA0LjY2N2ExLjEgMS4xIDAgMCAwLS41MTguMTI4Yy0uMTYuMDg1LS4yOTUuMjA5LS4zOS4zNjJsLS4wMDQuMDA2LS4wMDMuMDA3YS4zNDYuMzQ2IDAgMCAxLS4wOTMuMTA1LjQzOC40MzggMCAwIDEtLjQ1NS4wMzMuMzcuMzcgMCAwIDEtLjExMy0uMDkzLjMxMy4zMTMgMCAwIDEtLjA2LS4xMTcuMjg3LjI4NyAwIDAgMS0uMDA1LS4xMjRsLS4zMjktLjA1OC4zMjkuMDU4YS4zMDUuMzA1IDAgMCAxIC4wNDktLjEybC4wMDQtLjAwNS4wMDQtLjAwNmExLjc1IDEuNzUgMCAwIDEgLjY2My0uNjE1IDEuOTIgMS45MiAwIDAgMSAyLjA5Mi4xNzZjLjMyNC4yNTYuNTM3LjYwNS42MDcuOTg1LjA3LjM3OC0uMDA1Ljc3LS4yMTUgMS4xMDUtLjIxMS4zMzctLjU0Ni42LS45NTIuNzM3bC0uMjI3LjA3NnYuMzZhLjMxLjMxIDAgMCAxLS4xMDQuMjI3LjQxNC40MTQgMCAwIDEtLjI4LjEwNmMtLjExIDAtLjIxLS4wNC0uMjgxLS4xMDZBLjMxLjMxIDAgMCAxIDcgNy42NjdWN2EuMzEuMzEgMCAwIDEgLjEwNC0uMjI3LjQxNC40MTQgMCAwIDEgLjI4LS4xMDZjLjI3MiAwIC41MzYtLjEuNzM1LS4yODVhLjk3Ny45NzcgMCAwIDAgLjMxNy0uNzE1Ljk3Ny45NzcgMCAwIDAtLjMxNy0uNzE2IDEuMDggMS4wOCAwIDAgMC0uNzM0LS4yODRabTAgMFY1di0uMzMzWm0tLjM2OSA0LjkwNi4wMTItLjAyMS4wMDktLjAyM2EuMTYuMTYgMCAwIDEgLjAyLS4wMzcuNzM2LjczNiAwIDAgMSAuMDUtLjA2LjM5MS4zOTEgMCAwIDEgLjEyMi0uMDc0LjQzMy40MzMgMCAwIDEgLjMxMSAwbC4xMi0uMzEtLjEyLjMxYS4zOS4zOSAwIDAgMSAuMTI3LjA3OWMuMDM0LjAzMi4wNi4wNy4wNzcuMTA4YS4zLjMgMCAwIDEgLjAyNS4xMnYuMDE1YS4yOS4yOSAwIDAgMS0uMDIuMTE4LjI2My4yNjMgMCAwIDEtLjA2Ny4wOThsLjIyNy4yNDQtLjIyNy0uMjQ0YS4zMjEuMzIxIDAgMCAxLS4xMTYuMDY4bC0uMDEuMDAzLS4wMS4wMDVhLjM4Ni4zODYgMCAwIDEtLjI5MyAwbC0uMDEtLjAwNS0uMDEtLjAwM2EuMzIxLjMyMSAwIDAgMS0uMTE3LS4wNjhsLS4yMjcuMjQ0LjIyNy0uMjQ0YS4yNjMuMjYzIDAgMCAxLS4wNjctLjA5N2wtLjAwNi0uMDE1LS4wMDctLjAxNWEuMTkzLjE5MyAwIDAgMS0uMDIyLS4wOTNWOS42NGEuNTEuNTEgMCAwIDEtLjAwMi0uMDU3LjA3OC4wNzggMCAwIDEgLjAwNC0uMDFaTTMuNTcyIDEuNzRBNy4yNDUgNy4yNDUgMCAwIDEgNy4zODUuNjY3Yy45MDIgMCAxLjc5NS4xNjUgMi42MjcuNDg1LjgzMy4zMiAxLjU4OC43ODkgMi4yMjIgMS4zNzhhNi4zMjMgNi4zMjMgMCAwIDEgMS40OCAyLjA1NWMuMzQxLjc2Ni41MTcgMS41ODcuNTE3IDIuNDE1YTYgNiAwIDAgMS0xLjE0NyAzLjUxIDYuNzYgNi43NiAwIDAgMS0zLjA3MiAyLjMzOCA3LjM2MiA3LjM2MiAwIDAgMS0zLjk2OC4zNjMgNy4wMzMgNy4wMzMgMCAwIDEtMy41MS0xLjc0MUE2LjIwMSA2LjIwMSAwIDAgMSAuNjcgOC4yM2E1Ljg5MiA1Ljg5MiAwIDAgMSAuMzg3LTMuNjQ1QTYuNDY3IDYuNDY3IDAgMCAxIDMuNTcyIDEuNzRabS40NDYgOS45NzhhNi4zOSA2LjM5IDAgMCAwIDMuMzY3Ljk0OWMxLjYwNCAwIDMuMTQ2LS41OTIgNC4yODgtMS42NTJDMTIuODE1IDkuOTU1IDEzLjQ2IDguNTExIDEzLjQ2IDdhNS40IDUuNCAwIDAgMC0xLjAzLTMuMTU4IDYuMDA3IDYuMDA3IDAgMCAwLTIuNzI5LTIuMDggNi40ODggNi40ODggMCAwIDAtMy40OTgtLjMyIDYuMjI2IDYuMjI2IDAgMCAwLTMuMTA4IDEuNTQyIDUuNTYgNS41NiAwIDAgMC0xLjY3IDIuOTA2IDUuMzE0IDUuMzE0IDAgMCAwIC4zNDggMy4yODcgNS43NzMgNS43NzMgMCAwIDAgMi4yNDQgMi41NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCI+PHBhdGggZmlsbD1cXFwiIzY4Nzk3RVxcXCIgc3Ryb2tlPVxcXCIjNjg3OTdFXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm0xMi4zMyAxNC42MDItLjU5LjEzMmE4LjA3NSA4LjA3NSAwIDAgMS0xLjc0LjE4M2wyLjMzLS4zMTVabTAgMC0uNDI3LS40MjltLjQyNy40My0uNDI3LS40M20wIDAtMS45LTEuOTA4LS4wODMtLjA4NG0xLjk4MyAxLjk5Mkw5LjkyIDEyLjE4MW0wIDAtLjExOC0uMDEybS4xMTguMDEyLS4xMTgtLjAxMm0wIDBhMi4yMiAyLjIyIDAgMCAxLTEuOTctMS45NzFsLS4wMTMtLjExN20xLjk4MyAyLjA4OEw3LjgyIDEwLjA4bTAgMC0uMDgzLS4wODNtLjA4My4wODMtLjA4My0uMDgzbTAgMEw0LjkwMyA3LjE1NmwtLjIxOS0uMjE5bTMuMDUyIDMuMDYxLTMuMDUyLTMuMDZtMCAwLS4yMzQuMm0uMjM0LS4yLS4yMzQuMm0wIDBhOC41NDQgOC41NDQgMCAwIDAtMi4wNzYgMi42Ny40MzIuNDMyIDAgMCAwIDAgLjM4NSA4LjUxOCA4LjUxOCAwIDAgMCAzLjExOSAzLjQzNE00LjQ1IDcuMTM5bDEuMDQzIDYuNDg4TTE4LjgwOCAxMEMxNy4zODQgNi41MjkgMTMuOTc4IDQuMDgzIDEwIDQuMDgzYTkuNTQ1IDkuNTQ1IDAgMCAwLTMuMzIyLjU5NmwuNzgyLjc3N0E4Ljk3MyA4Ljk3MyAwIDAgMSAxMCA1LjA4M0wxOC44MDggMTBabTAgMGE5LjQ5MiA5LjQ5MiAwIDAgMS0yLjk0MyAzLjg4M2wtLjcwNC0uNzA5YTguNTUxIDguNTUxIDAgMCAwIDIuNDY2LTIuOTgxLjQzMi40MzIgMCAwIDAgMC0uMzg1QTguNTE3IDguNTE3IDAgMCAwIDEwIDUuMDgzTDE4LjgwOCAxMFpNNS40OTMgMTMuNjI3QTguNTE4IDguNTE4IDAgMCAwIDEwIDE0LjkxN2wtNC41MDctMS4yOVptNy43ODQgMS45MDQtLjE0NS0uMTQ1LS4xOTUuMDY0YTkuMzEyIDkuMzEyIDAgMCAxLTIuOTM3LjQ2N2MtMy45NzggMC03LjM4NC0yLjQ0Ni04LjgwNy01LjkxN2E5LjQ2NCA5LjQ2NCAwIDAgMSAyLjUxOS0zLjUzM2wuMjY3LS4yMzUtLjI1MS0uMjUxLTEuMjkyLTEuMjkyYS40MTguNDE4IDAgMSAxIC41OTEtLjU5bDEyLjg3NSAxMi44NzRhLjQxOC40MTggMCAwIDEtLjU5MS41OTFsLTIuMDM0LTIuMDMzWk0xMCA3LjgzM0EyLjE2NyAyLjE2NyAwIDAgMSAxMi4xNjcgMTBjMCAuMDU1LS4wMDIuMTEtLjAwNi4xNjRMOS44MzYgNy44NGMuMDU0LS4wMDQuMTA5LS4wMDYuMTY0LS4wMDZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xMS4zMzMgMi4yYy0yLjYtMS40NjctNS44LTEtNy45MzMgMVYyYzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1MyLjA2NyAxLjYgMi4wNjcgMnYzYzAgLjQuMjY2LjY2Ni42NjYuNjY2aDNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZzLS4yNjctLjY2Ny0uNjY3LS42NjdoLTEuNmMxLTEuMDY3IDIuNC0xLjY2NyAzLjg2Ny0xLjY2NyAyLjkzMyAwIDUuMzMzIDIuNCA1LjMzMyA1LjMzNCAwIDIuOTMzLTIuNCA1LjMzMy01LjMzMyA1LjMzMy0yLjkzMyAwLTUuMzMzLTIuNC01LjMzMy01LjMzMyAwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMS4zMzMgNy42IDEuMzMzIDhjMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDIuNCAwIDQuNi0xLjI2NiA1LjgtMy4zMzMgMS44LTMuMi43MzMtNy4yNjctMi40NjctOS4xMzNaTTggNS4zMzNjLS40IDAtLjY2Ny4yNjctLjY2Ny42Njd2MmMwIC40LjI2Ny42NjYuNjY3LjY2NmgxLjMzM2MuNCAwIC42NjctLjI2Ni42NjctLjY2NnMtLjI2Ny0uNjY3LS42NjctLjY2N2gtLjY2NlY2YzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE5MCAxOTBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBjeD1cXFwiOTVcXFwiIGN5PVxcXCI5NVxcXCIgcj1cXFwiODVcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48Y2lyY2xlIGN4PVxcXCI5NVxcXCIgY3k9XFxcIjk1XFxcIiByPVxcXCI5NVxcXCIgZmlsbD1cXFwiI0NERjhGQVxcXCIvPjxwYXRoIGQ9XFxcIk01MS4xNzIgNzkuNjM2YzAtMS44NDggMC0yLjc3Mi4yNDItMy42MjJhNi4zMzEgNi4zMzEgMCAwIDEgLjk4MS0yLjAwN2MuNTIzLS43MTMgMS4yNTItMS4yOCAyLjcxLTIuNDE2bDM0LjExNi0yNi41MzdjLjkyOC0uNzIzIDEuMzkyLTEuMDg0IDEuOS0xLjM0OWE2LjMyOSA2LjMyOSAwIDAgMSAyLjA0Ny0uNjU1Yy41NjctLjA4IDEuMTU1LS4wNTYgMi4zMy0uMDA4IDEuMDI3LjA0MiAxLjU0LjA2MyAyLjAzMy4xNjMuNjIyLjEyNiAxLjIyLjM0NCAxLjc3Ny42NDguNDQyLjI0MS44NDguNTU1IDEuNjYxIDEuMTg0bDM0LjY4OCAyNi44MjRjMS40NjcgMS4xMzQgMi4yIDEuNzAyIDIuNzI2IDIuNDE2LjQ0Ni42MDYuNzggMS4yODguOTg3IDIuMDEyLjI0NC44NTIuMjQ0IDEuNzguMjQ0IDMuNjM0djUyLjEwMWMwIDEuODAyIDAgMi43MDQtLjM1NiAzLjM5YTMuMTY3IDMuMTY3IDAgMCAxLTEuMzUgMS4zNDljLS42ODYuMzU3LTEuNTg3LjM1Ny0zLjM5LjM1N0g2MC4zNDVjLTMuMjQ1IDAtNC44NjcgMC02LjEwMi0uNjQyYTUuNjk3IDUuNjk3IDAgMCAxLTIuNDMtMi40MjljLS42NDEtMS4yMzUtLjY0MS0yLjg1Ny0uNjQxLTYuMTAyVjc5LjYzNlpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYSlcXFwiLz48cGF0aCBkPVxcXCJNNTkuNzc1IDcxLjkyNGMxLjI4NiAwIDEuODkuMDAyIDIuNDYuMTE0Ljc0LjE0NiAxLjQ0Ni40MjkgMi4wODEuODM0LjQ5LjMxMy45MjguNzMgMS44NTggMS42MThsMjYuNzYgMjUuNTYyYTUuMzYgNS4zNiAwIDAgMSAuMDEyIDcuNzM4bC0yNi4xMzQgMjUuMTEzYy0xLjgzMiAxLjc2LTIuNjkzIDIuNTgxLTMuNzY2IDMuMDEzLTEuMDcyLjQzMS0yLjI2Mi40MzYtNC44MDIuNDM2aC0uNzQyYy0xLjUgMC0yLjU5NiAwLTMuNDM0LS4xMTMtLjgyOS0uMTExLTEuMzYxLS4zMjgtMS43Ni0uNzI3LS40LS40LS42MTYtLjkzMi0uNzI4LTEuNzYxLS4xMTItLjgzOC0uMTEzLTEuOTMzLS4xMTMtMy40MzRWODAuMjMyYzAtMS4zNTggMC0yLjM2Mi4wNTYtMy4xNi4wNTUtLjc5NC4xNjQtMS4zNjMuMzcyLTEuODUzYTUuNDAyIDUuNDAyIDAgMCAxIDIuODY3LTIuODY3Yy40OS0uMjA4IDEuMDU4LS4zMTcgMS44NTMtLjM3Mi43OTgtLjA1NiAxLjgwMi0uMDU2IDMuMTYtLjA1NlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19iKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTEzMS43OCA3MS45MjRjLTEuMjg2IDAtMS44OS4wMDItMi40NjEuMTE0YTYuMDQxIDYuMDQxIDAgMCAwLTIuMDgxLjgzNGMtLjQ5LjMxMy0uOTI3LjczLTEuODU3IDEuNjE4bC0yNi43NiAyNS41NjJhNS4zNiA1LjM2IDAgMCAwLS4wMTIgNy43MzhsMjYuMTM0IDI1LjExM2MxLjgzMiAxLjc2IDIuNjkzIDIuNTgxIDMuNzY1IDMuMDEzIDEuMDczLjQzMSAyLjI2My40MzYgNC44MDMuNDM2aC43NDJjMS41IDAgMi41OTYgMCAzLjQzMy0uMTEzLjgzLS4xMTEgMS4zNjItLjMyOCAxLjc2MS0uNzI3LjQtLjQuNjE2LS45MzIuNzI3LTEuNzYxLjExMy0uODM4LjExNC0xLjkzMy4xMTQtMy40MzRWODAuMjMyYzAtMS4zNTggMC0yLjM2Mi0uMDU2LTMuMTYtLjA1NS0uNzk0LS4xNjUtMS4zNjMtLjM3Mi0xLjg1M2E1LjQwMiA1LjQwMiAwIDAgMC0yLjg2OC0yLjg2N2MtLjQ4OS0uMjA4LTEuMDU4LS4zMTctMS44NTMtLjM3Mi0uNzk3LS4wNTYtMS44MDEtLjA1Ni0zLjE1OS0uMDU2WlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2MpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48cGF0aCBkPVxcXCJNNTAuNzEgMTI5LjQ2NWMwLTEuMzEuMDAyLTEuOTI1LjExNS0yLjQ5N2E2LjAzNiA2LjAzNiAwIDAgMSAxLjM4Mi0yLjgwOGMuMzg0LS40MzkuODctLjgxNSAxLjkwOS0xLjYxNWwzNS4yNzMtMjcuMTY4Yy45NTYtLjczNiAxLjQwNC0xLjA4IDEuODkzLTEuMzNhNi4wMzQgNi4wMzQgMCAwIDEgMS44OTItLjYwMmMuNTQzLS4wNzcgMS4xMDktLjA1NSAyLjMxNC0uMDA2IDEuMDUuMDQzIDEuNTQ0LjA2NCAyLjAxNi4xNmE2LjAzNCA2LjAzNCAwIDAgMSAxLjY0LjU5NWMuNDI1LjIyNy44MTcuNTI3IDEuNjUzIDEuMTY2bDM0LjU1MyAyNi40NTFjMi4zNDkgMS43OTggMy40NDUgMi42NDUgNC4wNTggMy44MjQuMDM4LjA3My4wNzUuMTQ3LjExLjIyMi41NjMgMS4yMDMuNTcgMi41ODkuNTcgNS41NDcgMCAxLjQzMS0uMDAxIDIuNDc2LS4xMDQgMy4yNzgtLjEwMi43OTUtLjMgMS4zMDktLjY2NiAxLjcwMmEyLjczNSAyLjczNSAwIDAgMS0uMTQzLjE0MmMtLjM5My4zNjYtLjkwNy41NjUtMS43MDIuNjY3LS44MDIuMTAzLTEuODQ3LjEwNC0zLjI3OC4xMDRINTguNTQyYy0yLjI4NiAwLTMuMzU0LS4wMDQtNC4yMDUtLjNhNS40MDMgNS40MDMgMCAwIDEtMy4zMjYtMy4zMjdjLS4yOTYtLjg1LS4zLTEuOTE4LS4zLTQuMjA1WlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2QpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48cGF0aCBkPVxcXCJNNTAuNzEgMTI5LjQ2NWMwLTEuMzEuMDAyLTEuOTI1LjExNS0yLjQ5N2E2LjAzNiA2LjAzNiAwIDAgMSAxLjM4Mi0yLjgwOGMuMzg0LS40MzkuODctLjgxNSAxLjkwOS0xLjYxNWwzNS4yNzMtMjcuMTY4Yy45NTYtLjczNiAxLjQwNC0xLjA4IDEuODkzLTEuMzNhNi4wMzQgNi4wMzQgMCAwIDEgMS44OTItLjYwMmMuNTQzLS4wNzcgMS4xMDktLjA1NSAyLjMxNC0uMDA2IDEuMDUuMDQzIDEuNTQ0LjA2NCAyLjAxNi4xNmE2LjAzNCA2LjAzNCAwIDAgMSAxLjY0LjU5NWMuNDI1LjIyNy44MTcuNTI3IDEuNjUzIDEuMTY2bDM0LjU1MyAyNi40NTFjMi4zNDkgMS43OTggMy40NDUgMi42NDUgNC4wNTggMy44MjRsLjI2Mi0uMTM3LS4yNjIuMTM3Yy4wMzguMDczLjA3NS4xNDcuMTEuMjIybC4yNjctLjEyNS0uMjY3LjEyNWMuNTYzIDEuMjAzLjU3IDIuNTg5LjU3IDUuNTQ3IDAgMS40MzEtLjAwMSAyLjQ3Ni0uMTA0IDMuMjc4LS4xMDIuNzk1LS4zIDEuMzA5LS42NjYgMS43MDJhMy4yMTQgMy4yMTQgMCAwIDEtLjE0My4xNDNjLS4zOTMuMzY1LS45MDcuNTY0LTEuNzAyLjY2Ni0uODAyLjEwMy0xLjg0Ny4xMDQtMy4yNzguMTA0SDU4LjU0MmMtMi4yODYgMC0zLjM1NC0uMDA0LTQuMjA1LS4zYTUuNDAzIDUuNDAzIDAgMCAxLTMuMzI2LTMuMzI3Yy0uMjk2LS44NS0uMy0xLjkxOC0uMy00LjIwNVpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZSlcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19mKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PGNpcmNsZSBjeD1cXFwiMTMzLjczM1xcXCIgY3k9XFxcIjEzMi4yMTNcXFwiIHI9XFxcIjIxLjIxM1xcXCIgZmlsbD1cXFwiI0YxRjdGOVxcXCIvPjxtYXNrIGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19pXFxcIiBmaWxsPVxcXCIjZmZmXFxcIj48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZylcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjlcXFwiLz48cGF0aCBkPVxcXCJtMTQ2LjU0MSAxMjMuMTIxLS4xNzMuMTczLjE3My0uMTczWm0wIDQuMjQzLS4xNzMtLjE3NC4xNzMuMTc0Wm0tNC4yNDMtNC4yNDMtLjE3My0uMTczLjE3My4xNzNabS0xMi4xMzEgMTIuMTMxLS4xNzMuMTczLjE3My4xNzQuMTczLS4xNzQtLjE3My0uMTczWm0tNC4yODMtNC4yODMuMTczLS4xNzMtLjE3My4xNzNabS00LjI0MyA0LjI0My4xNzQtLjE3NC0uMTc0LjE3NFptNi4zNjQgNi4zNjQtLjE3My4xNzMuMTczLS4xNzNabTMuNDYuNTY0LS4wOTctLjIyNS0uMDEyLjAwNi4xMDkuMjE5Wm0uOTM0LS42MzQtLjE3NC0uMTc0LjE3NC4xNzRabTEzLjk2OS0xOC4yMTJhMi43NTYgMi43NTYgMCAwIDEgMCAzLjg5NmwuMzQ2LjM0N2EzLjI0NSAzLjI0NSAwIDAgMCAwLTQuNTg5bC0uMzQ2LjM0NlptLTMuODk3IDBhMi43NTYgMi43NTYgMCAwIDEgMy44OTcgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ2LjM0NlptLTEyLjEzMSAxMi4xMzEgMTIuMTMxLTEyLjEzMS0uMzQ2LS4zNDYtMTIuMTMxIDEyLjEzMS4zNDYuMzQ2Wm0tNC42MjktNC4yODMgNC4yODMgNC4yODMuMzQ2LS4zNDYtNC4yODMtNC4yODMtLjM0Ni4zNDZabS0zLjg5NiAwYTIuNzU1IDIuNzU1IDAgMCAxIDMuODk2IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ny4zNDZabTAgMy44OTZhMi43NTUgMi43NTUgMCAwIDEgMC0zLjg5NmwtLjM0Ny0uMzQ2YTMuMjQ1IDMuMjQ1IDAgMCAwIDAgNC41ODlsLjM0Ny0uMzQ3Wm02LjM2NCA2LjM2NC02LjM2NC02LjM2NC0uMzQ3LjM0NyA2LjM2NCA2LjM2NC4zNDctLjM0N1ptMy4xNzcuNTE5YTIuNzU1IDIuNzU1IDAgMCAxLTMuMTc3LS41MTlsLS4zNDcuMzQ3YTMuMjQ0IDMuMjQ0IDAgMCAwIDMuNzQyLjYxbC0uMjE4LS40MzhabS44NjktLjU4OWEyLjczNSAyLjczNSAwIDAgMS0uODU3LjU4M2wuMTk0LjQ1YTMuMjM3IDMuMjM3IDAgMCAwIDEuMDEtLjY4NmwtLjM0Ny0uMzQ3Wm0xNC4xNDMtMTQuMTQyLTE0LjE0MyAxNC4xNDIuMzQ3LjM0NyAxNC4xNDItMTQuMTQyLS4zNDYtLjM0N1pcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faClcXFwiIG1hc2s9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faSlcXFwiLz48bWFzayBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fbFxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2opXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi43NVxcXCIvPjxwYXRoIGQ9XFxcIm0xNDYuNTQxIDEyMy4xMjEtLjE3My4xNzMuMTczLS4xNzNabTAgNC4yNDMtLjE3My0uMTc0LjE3My4xNzRabS00LjI0My00LjI0My0uMTczLS4xNzMuMTczLjE3M1ptLTEyLjEzMSAxMi4xMzEtLjE3My4xNzMuMTczLjE3NC4xNzMtLjE3NC0uMTczLS4xNzNabS00LjI4My00LjI4My4xNzMtLjE3My0uMTczLjE3M1ptLTQuMjQzIDQuMjQzLjE3NC0uMTc0LS4xNzQuMTc0Wm02LjM2NCA2LjM2NC0uMTczLjE3My4xNzMtLjE3M1ptMy40Ni41NjQtLjA5Ny0uMjI1LS4wMTIuMDA2LjEwOS4yMTlabS45MzQtLjYzNC0uMTc0LS4xNzQuMTc0LjE3NFptMTMuOTY5LTE4LjIxMmEyLjc1NiAyLjc1NiAwIDAgMSAwIDMuODk2bC4zNDYuMzQ3YTMuMjQ1IDMuMjQ1IDAgMCAwIDAtNC41ODlsLS4zNDYuMzQ2Wm0tMy44OTcgMGEyLjc1NiAyLjc1NiAwIDAgMSAzLjg5NyAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDYuMzQ2Wm0tMTIuMTMxIDEyLjEzMSAxMi4xMzEtMTIuMTMxLS4zNDYtLjM0Ni0xMi4xMzEgMTIuMTMxLjM0Ni4zNDZabS00LjYyOS00LjI4MyA0LjI4MyA0LjI4My4zNDYtLjM0Ni00LjI4My00LjI4My0uMzQ2LjM0NlptLTMuODk2IDBhMi43NTUgMi43NTUgMCAwIDEgMy44OTYgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ3LjM0NlptMCAzLjg5NmEyLjc1NSAyLjc1NSAwIDAgMSAwLTMuODk2bC0uMzQ3LS4zNDZhMy4yNDUgMy4yNDUgMCAwIDAgMCA0LjU4OWwuMzQ3LS4zNDdabTYuMzY0IDYuMzY0LTYuMzY0LTYuMzY0LS4zNDcuMzQ3IDYuMzY0IDYuMzY0LjM0Ny0uMzQ3Wm0zLjE3Ny41MTlhMi43NTUgMi43NTUgMCAwIDEtMy4xNzctLjUxOWwtLjM0Ny4zNDdhMy4yNDQgMy4yNDQgMCAwIDAgMy43NDIuNjFsLS4yMTgtLjQzOFptLjg2OS0uNTg5YTIuNzM1IDIuNzM1IDAgMCAxLS44NTcuNTgzbC4xOTQuNDVhMy4yMzcgMy4yMzcgMCAwIDAgMS4wMS0uNjg2bC0uMzQ3LS4zNDdabTE0LjE0My0xNC4xNDItMTQuMTQzIDE0LjE0Mi4zNDcuMzQ3IDE0LjE0Mi0xNC4xNDItLjM0Ni0uMzQ3WlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19rKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuMVxcXCIgbWFzaz1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19sKVxcXCIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fYVxcXCIgeDE9XFxcIjc2LjY4NFxcXCIgeTE9XFxcIjg2LjU2OFxcXCIgeDI9XFxcIjE0My40MTdcXFwiIHkyPVxcXCIxMTEuMjgzXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzdGQzBGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzQwODhGNFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19iXFxcIiB4MT1cXFwiOTEuODg5XFxcIiB5MT1cXFwiNjguMzc4XFxcIiB4Mj1cXFwiMzQuMDA4XFxcIiB5Mj1cXFwiOTMuOTM3XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2NcXFwiIHgxPVxcXCI5OS42NjVcXFwiIHkxPVxcXCI2OC4zNzhcXFwiIHgyPVxcXCIxNTcuNTQ3XFxcIiB5Mj1cXFwiOTMuOTM3XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2RcXFwiIHgxPVxcXCI0NS45MTdcXFwiIHkxPVxcXCI5Ni4xODVcXFwiIHgyPVxcXCI2Ni41NjlcXFwiIHkyPVxcXCIxNTkuODIyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2VcXFwiIHgxPVxcXCI5NS40XFxcIiB5MT1cXFwiOTNcXFwiIHgyPVxcXCI5NS40XFxcIiB5Mj1cXFwiMTM3LjU5MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNBN0QyRkRcXFwiIHN0b3Atb3BhY2l0eT1cXFwiLjI1XFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjOTdDOEZDXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2ZcXFwiIHgxPVxcXCI0NS45MTdcXFwiIHkxPVxcXCI5Ni4xODVcXFwiIHgyPVxcXCI2Ni41NjlcXFwiIHkyPVxcXCIxNTkuODIyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2dcXFwiIHgxPVxcXCIxNTAuMzQzXFxcIiB5MT1cXFwiMTI0LjEyOFxcXCIgeDI9XFxcIjExNy4zMjJcXFwiIHkyPVxcXCIxMzcuMzk1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2hcXFwiIHgxPVxcXCIxNTAuODcxXFxcIiB5MT1cXFwiMTIxLjIyNVxcXCIgeDI9XFxcIjEzNC4wMzVcXFwiIHkyPVxcXCIxMjUuODlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19falxcXCIgeDE9XFxcIjE1MC4zNDNcXFwiIHkxPVxcXCIxMjQuMTI4XFxcIiB4Mj1cXFwiMTE3LjMyMlxcXCIgeTI9XFxcIjEzNy4zOTVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fa1xcXCIgeDE9XFxcIjE1MC44NzFcXFwiIHkxPVxcXCIxMjEuMjI1XFxcIiB4Mj1cXFwiMTM0LjAzNVxcXCIgeTI9XFxcIjEyNS44OVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk0xMSA1LjY2N1Y2aDIuMzMzYS4zMzMuMzMzIDAgMCAxIC4zMzQuMzMzdjkuMzM0QTEuNjY3IDEuNjY3IDAgMCAxIDEyIDE3LjMzM0g0YTEuNjY3IDEuNjY3IDAgMCAxLTEuNjY3LTEuNjY2VjYuMzMzQS4zMzMuMzMzIDAgMCAxIDIuNjY3IDZINVY1YS4zMzMuMzMzIDAgMSAxIC42NjcgMHYxaDJWNWEuMzMzLjMzMyAwIDEgMSAuNjY2IDB2MWgyVjVjMC0uMDg4LjAzNS0uMTczLjA5OC0uMjM2bC0uMjM2LS4yMzUuMjM2LjIzNUEuMzMzLjMzMyAwIDAgMSAxMSA1di42NjdaTTMuMjkzIDE2LjM3NGwuMjM2LS4yMzYtLjIzNi4yMzZhMSAxIDAgMCAwIC43MDcuMjkzaDhhMSAxIDAgMCAwIDEtMXYtOWgtMnYxYS4zMzMuMzMzIDAgMSAxLS42NjcgMHYtMWgtMnYxYS4zMzMuMzMzIDAgMCAxLS42NjYgMHYtMWgtMnYxYS4zMzMuMzMzIDAgMCAxLS42NjcgMHYtMUgzdjlhMSAxIDAgMCAwIC4yOTMuNzA3Wm0yLjA0LTMuNzA3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg1LjMzM2EuMzMzLjMzMyAwIDAgMS0uMjM1LS4wOTdsLS4yMzYuMjM1LjIzNi0uMjM1YS4zMzMuMzMzIDAgMCAxIDAtLjQ3MmwtLjIzNi0uMjM2LjIzNi4yMzZhLjMzMy4zMzMgMCAwIDEgLjIzNS0uMDk3Wm0xLjA5OC0yLjU3QS4zMzMuMzMzIDAgMCAxIDYuNjY3IDEwaDRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3aC00YS4zMzMuMzMzIDAgMCAxLS4yMzYtLjU3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwibTE3LjUgMy42NjcuNTgzLS41ODRhLjgwNi44MDYgMCAwIDAgMC0xLjE2Ni44MDYuODA2IDAgMCAwLTEuMTY2IDBsLTguNzUgOC43NUE0LjQ4IDQuNDggMCAwIDAgNS44MzIgMTBhNC4xMjYgNC4xMjYgMCAwIDAtNC4xNjcgNC4xNjcgNC4xMjYgNC4xMjYgMCAwIDAgNC4xNjcgNC4xNjZBNC4xMjYgNC4xMjYgMCAwIDAgMTAgMTQuMTY3YTQuNDggNC40OCAwIDAgMC0uNjY3LTIuMzM0TDE0IDcuMTY3bDEuNzUgMS43NWEuODA2LjgwNiAwIDAgMCAxLjE2NiAwIC44MDYuODA2IDAgMCAwIDAtMS4xNjdMMTUuMTY2IDZsMS4xNjctMS4xNjcuNTg0LjU4NGEuODA2LjgwNiAwIDAgMCAxLjE2NiAwIC44MDYuODA2IDAgMCAwIDAtMS4xNjdsLS41ODMtLjU4M1ptLTExLjY2NyAxM2MtMS40MTcgMC0yLjUtMS4wODQtMi41LTIuNSAwLTEuNDE3IDEuMDgzLTIuNSAyLjUtMi41czIuNSAxLjA4MyAyLjUgMi41YzAgMS40MTYtMS4wODMgMi41LTIuNSAyLjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE4XFxcIj48cGF0aCBkPVxcXCJNNC4zMTEgNy40MyAzLjc0IDhoMTAuOTI2YTEgMSAwIDEgMSAwIDJIMy43NGwuNTcxLjU3IDQuNCA0LjM4NmExIDEgMCAwIDEgMCAxLjQybC0uMDAxLjAwM2ExIDEgMCAwIDEtMS40MiAwbC0uMDAxLS4wMDFMLjYyNSA5LjcxNGExIDEgMCAwIDEtLjIwOC0uMzI4TC40MTUgOS4zOGExIDEgMCAwIDEgMC0uNzZsLjAwMi0uMDA2YTEgMSAwIDAgMSAuMjA4LS4zMjhsNi42NjQtNi42NjQtLjIzNi0uMjM1LjIzNi4yMzVBMS4wMDUgMS4wMDUgMCAxIDEgOC43MSAzLjA0NGwtNC40IDQuMzg3WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjY2IDYzXFxcIj48cGF0aCBkPVxcXCJNLjgzIDU4LjkxVjI4LjdoOC43MjV2MzAuMjFILjgzWm0zNS4wMTctMi45M2MtMS45ODMgMi40MTYtNC44MzUgMy43NzctOC42MTUgMy43NzctNi4wNzYgMC0xMC45NzEtMy43NzgtMTAuOTcxLTkuNjAzIDAtNS43NjMgNC44OTgtOC42MSAxMS43NzctOC45ODUgNS4yNy0uMzEgNi45NDMtLjg2OCA2Ljk0My0yLjY2MyAwLTEuNzM2LTEuNjExLTIuOTEzLTQuNDYzLTIuOTEzLTMuNDcgMC00Ljk2IDEuNzM2LTUuMTQ1IDMuNTk0aC04LjQ5NGMuNDM0LTYuNjI4IDUuMzkyLTExLjIxNCAxMy43MDEtMTEuMjE0IDguMTIyIDAgMTMuMzMgNC4zOTggMTMuMzMgMTIuNjM3djE4LjQ2M2gtNy4yNTRsLS44MDktMy4wOTRabS0xMC43ODYtNi4xOTVjMCAxLjczNiAxLjU1IDIuNzg4IDQuMDMgMi43ODggMy4zNDggMCA2LjAxMi0xLjg1OCA2LjAxMi01LjYzOFY0NS44MnMtMS42MTEuNzQzLTQuOTYuOTNjLTMuNjU4LjE4NS01LjA4MiAxLjM2Mi01LjA4MiAzLjAzNVptMzguMzA3IDkuNDE2Yy02LjYzMiAwLTEwLjQ3Ny0zLjg0LTEwLjQ3Ny0xMC41MzNWMzYuODM2aC01LjA4M3YtOC4xMTdoNS4wODN2LTQuNDYxbDguODAyLTcuNDM0VjI4LjcyaDcuNjI2djguMTE3aC03LjYyNlY0Ny40M2MwIDIuOTEyIDEuOTIyIDMuNTkzIDMuNzIgMy41OTNhOS41MzkgOS41MzkgMCAwIDAgMy43MjEtLjgwNXY3Ljk5MmMwIC4wMDItMi4zNTUuOTkyLTUuNzY2Ljk5MlpNLjA4IDE5LjYzNGMwLTIuODUgMi4yMy01LjE0MiA1LjA4Mi01LjE0MmE1LjEzIDUuMTMgMCAwIDEgNS4xNDUgNS4xNDJjMCAyLjc4OC0yLjI5MyA1LjA4LTUuMTQ1IDUuMDhhNS4wNjMgNS4wNjMgMCAwIDEtNS4wODItNS4wOFpNNzUuODA5IDU4LjkxVjI4LjdoOC43MjZ2MzAuMjFoLTguNzI2Wm0yMC4xNTQtMzkuMjAyYzAtMS40LS4xOS0yLjc2LS41MzctNC4wNTNhMTUuNTEgMTUuNTEgMCAwIDAtMS41NjktMy43NzIgMTUuNjY1IDE1LjY2NSAwIDAgMC0yLjQ4OS0zLjI0MSAxNS43MzIgMTUuNzMyIDAgMCAwLTcuMDE4LTQuMDUgMTUuNjU4IDE1LjY1OCAwIDAgMC00LjA1Mi0uNTMzaC0uMDA2YTE1Ljc1IDE1Ljc1IDAgMCAwLTQuMDQ5LjUzYy0xLjM0LjM1Ny0yLjYwNS44ODgtMy43NzcgMS41NjVBMTUuNjcgMTUuNjcgMCAwIDAgNjkuMjIgOC42NGExNS43NyAxNS43NyAwIDAgMC0yLjQ5MiAzLjI0MiAxNS42NDggMTUuNjQ4IDAgMCAwLTEuNTcyIDMuNzc0bDIuMjQyLjYwMmExMy40MjcgMTMuNDI3IDAgMCAxIDMuNDYyLTUuOTc4IDEzLjQyNiAxMy40MjYgMCAwIDEgNS45ODQtMy40NSAxMy40MjYgMTMuNDI2IDAgMCAxIDMuNDQ4LS40NWguMDA2YzEuMTk1IDAgMi4zNS4xNTggMy40NTQuNDUzYTEzLjQxMiAxMy40MTIgMCAwIDEgNS45OCAzLjQ0OWMuODE5LjgyIDEuNTMxIDEuNzUgMi4xMTkgMi43NmExMy4zIDEzLjMgMCAwIDEgMS43OTMgNi42NjR2LjAxMmExMy4zOCAxMy4zOCAwIDAgMS0uNDUxIDMuNDQzIDEzLjIxNyAxMy4yMTcgMCAwIDEtMS4zMzQgMy4yMTlsMi4wMSAxLjE2YTE1LjUzOSAxNS41MzkgMCAwIDAgMS41NjYtMy43NzggMTUuNyAxNS43IDAgMCAwIC41My00LjA0MWwtLjAwMi0uMDEyWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xMDAuMDIzIDE5LjcwOGExOS42NTUgMTkuNjU1IDAgMCAwLTIuNjQ0LTkuODU1IDE5LjgxIDE5LjgxIDAgMCAwLTcuMjItNy4yMTNBMTkuNjEyIDE5LjYxMiAwIDAgMCA4NS40MDMuNjcgMTkuODEgMTkuODEgMCAwIDAgODAuMjk4IDBoLS4wMDZjLTEuNzY1IDAtMy40NzMuMjMzLTUuMTAyLjY2NmExOS41MTMgMTkuNTEzIDAgMCAwLTQuNzU5IDEuOTY5IDE5LjgyNCAxOS44MjQgMCAwIDAtNC4wODYgMy4xMzRsMS4yMzEgMS4yM2ExOC4xMDYgMTguMTA2IDAgMCAxIDMuNzI2LTIuODU1IDE3LjgwMyAxNy44MDMgMCAwIDEgNC4zNC0xLjc5MyAxOC4wODQgMTguMDg0IDAgMCAxIDQuNjQ4LS42MDdoLjAwNWExNy45NSAxNy45NSAwIDAgMSAxMi43MTMgNS4yNjEgMTcuOTMzIDE3LjkzMyAwIDAgMSA1LjI3MyAxMi43MDN2LjAxMWExOC4wMyAxOC4wMyAwIDAgMS0uNjA3IDQuNjQzIDE3LjY3NSAxNy42NzUgMCAwIDEtMS43OTcgNC4zMzcgMTguMDIzIDE4LjAyMyAwIDAgMS0yLjg1NyAzLjcyM2wxLjIzMSAxLjIzMWExOS43NDMgMTkuNzQzIDAgMCAwIDMuMTM2LTQuMDg0IDE5LjYgMTkuNiAwIDAgMCAxLjk3LTQuNzU2Yy40MzQtMS42MjUuNjY2LTMuMzMyLjY2Ni01LjA5NHYtLjAxWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk05MC45NDUgMTYuODU1YTEwLjk0OCAxMC45NDggMCAwIDAtMS4xMDQtMi42NTUgMTEuMTU1IDExLjE1NSAwIDAgMC0xLjc1LTIuMjggMTEuMDQ4IDExLjA0OCAwIDAgMC0yLjI4Mi0xLjc0N0ExMC45NjQgMTAuOTY0IDAgMCAwIDgwLjMgOC42OTVoLS4wMDZjLS45ODcgMC0xLjk0LjEzLTIuODQ5LjM3MmExMC45MSAxMC45MSAwIDAgMC0yLjY2IDEuMSAxMC45OTQgMTAuOTk0IDAgMCAwLTQuMDM3IDQuMDI3IDExIDExIDAgMCAwLTEuNDg0IDUuNTF2LjAxMmExMC45MjQgMTAuOTI0IDAgMCAwIDEuNDc2IDUuNTA1bDMuMDEzLTEuNzM4YTcuNTM1IDcuNTM1IDAgMCAxLTEuMDEtMy43N3YtLjAxYTcuNTUzIDcuNTUzIDAgMCAxIDcuNTQ4LTcuNTMzaC4wMDZhNy41MjQgNy41MjQgMCAwIDEgMy43NjkgMS4wMTIgNy41NSA3LjU1IDAgMCAxIDMuNTEzIDQuNTcyYy4xNjcuNjIuMjU4IDEuMjc2LjI1OCAxLjk1MWgzLjQ3OWMuMDAzLS45ODQtLjEyOC0xLjk0LS4zNzItMi44NVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNODcuNTg1IDE3Ljc2NWE3LjU0MiA3LjU0MiAwIDAgMC0xLjk1NS0zLjM4bC0xLjY0IDEuNjM5YTUuMjY0IDUuMjY0IDAgMCAxIDEuMzU0IDIuMzQzIDUuMTg0IDUuMTg0IDAgMCAxIDAgMi43MDUgNS4yMzkgNS4yMzkgMCAwIDEtMy42OTggMy42OTUgNS4xOTUgNS4xOTUgMCAwIDEtMi43MDcgMCA1LjI5NiA1LjI5NiAwIDAgMS0xLjI2LS41MjFsLTEuMTYgMi4wMDhhNy41MjggNy41MjggMCAwIDAgMy43NzQgMS4wMWMuNjc3IDAgMS4zMy0uMDkxIDEuOTU0LS4yNTZhNy41NTMgNy41NTMgMCAwIDAgNC41ODQtMy41MTcgNy41NDQgNy41NDQgMCAwIDAgMS4wMTMtMy43NzEgNy41IDcuNSAwIDAgMC0uMjU5LTEuOTU1WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05MS44NTMgMTMuMDQ2YTEzLjQzNSAxMy40MzUgMCAwIDAtMi4xMi0yLjc2NSAxMy4zNDMgMTMuMzQzIDAgMCAwLTIuNzY2LTIuMTE4IDEzLjI4NyAxMy4yODcgMCAwIDAtNi42NzUtMS43OWMtMS4xOTcgMC0yLjM1Mi4xNTktMy40NTYuNDU0LTEuMTQxLjMwMy0yLjIyLjc1Ny0zLjIxOCAxLjMzNmExMy40MzYgMTMuNDM2IDAgMCAwLTIuNzY3IDIuMTE4IDEzLjMzNCAxMy4zMzQgMCAwIDAtMi4xMiAyLjc2NSAxMy4yNzIgMTMuMjcyIDAgMCAwLTEuNzkgNi42N2gyLjMyYzAtLjk4Ni4xMzEtMS45NDIuMzc1LTIuODUyYTExLjA4OCAxMS4wODggMCAwIDEgMi44NTUtNC45NCAxMS4wMDIgMTEuMDAyIDAgMCAxIDIuMjg0LTEuNzUgMTEuMDMgMTEuMDMgMCAwIDEgMi42Ni0xLjEwNCAxMS4wMiAxMS4wMiAwIDAgMSAyLjg1NC0uMzc0Yy45ODggMCAxLjk0NC4xMyAyLjg1NS4zNzRhMTEuMDk5IDExLjA5OSAwIDAgMSA0Ljk0MyAyLjg1MyAxMC45OSAxMC45OSAwIDAgMSAxLjc1MSAyLjI4M2MuNDc3LjgyNi44NTIgMS43MTYgMS4xMDQgMi42NThsMi4yNDItLjYwMmExMy4xOTQgMTMuMTk0IDAgMCAwLTEuMzMtMy4yMTZaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTk3LjY3NCAxNS4wNjNhMTcuNzkxIDE3Ljc5MSAwIDAgMC0xLjgtNC4zMzYgMTguMDQzIDE4LjA0MyAwIDAgMC02LjU4Ni02LjU4MyAxNy45MyAxNy45MyAwIDAgMC04Ljk5Ni0yLjQwOGMtMS42MTIgMC0zLjE3Mi4yMTMtNC42NTcuNjFhMTcuODE3IDE3LjgxNyAwIDAgMC00LjMzOSAxLjc5OCAxOC4wMzIgMTguMDMyIDAgMCAwLTYuNTg2IDYuNTgzbDIuMDEyIDEuMTYzYTE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODktMy4yNDVjLjk2NS0uOTY0IDIuMDU3LTEuOCAzLjI0Ni0yLjQ4N2ExNS43MDYgMTUuNzA2IDAgMCAxIDMuNzc3LTEuNTY5IDE1LjY4IDE1LjY4IDAgMCAxIDguMTEgMGMxLjM0LjM1OCAyLjYwNi44OTEgMy43NzggMS41NjlhMTUuNjg1IDE1LjY4NSAwIDAgMSAzLjI0NiAyLjQ4NyAxNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5IDMuMjQ1IDE1LjY4NCAxNS42ODQgMCAwIDEgMS41NjkgMy43NzQgMTUuNjU0IDE1LjY1NCAwIDAgMSAwIDguMTA2bDIuMjQ1LjYwMWMuMzk3LTEuNDgzLjYxLTMuMDQzLjYxLTQuNjU0YTE3Ljg3NSAxNy44NzUgMCAwIDAtLjYwOC00LjY1NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNODAuMjkzIDI0Ljk0NGMyLjg4OCAwIDUuMjMtMi4zNCA1LjIzLTUuMjI3YTUuMjI5IDUuMjI5IDAgMCAwLTUuMjMtNS4yMjcgNS4yMjggNS4yMjggMCAwIDAtNS4yMyA1LjIyNyA1LjIyOCA1LjIyOCAwIDAgMCA1LjIzIDUuMjI3Wm0yMC42MTUgMTUuNDM2VjI5LjU0M2gyLjMwNFY0MC4zOGgtMi4zMDRabTYuNjE4LTMuNzg3djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOSAyLjUzOSAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm05LjY2NiAzLjgxN2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjh2LTIuMDI1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTEwLjE5My0zLjIzaC01LjM1MmMuMTI1Ljc3NS43NTcgMS4zNjIgMS43IDEuMzYyLjYzNSAwIDEuMDA0LS4yNjQgMS4yMzctLjY1aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4xOTgtLjAxNC41Ny0uMDE0LjU3Wm0tMy43MTUtMi42MjhjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDYtLjY2NC0uNjE5LTEuMTYtMS40MDgtMS4xNlptMTAuMjM5LTEuMzE1djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM1LS43NDMgMS41MTYtLjc0My45MjggMCAxLjM2Mi41NDIgMS4zNjIuNTQyWm0zLjQwMyAzLjM1NnYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NDMgMi41NDMgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTExLjE2NiAzLjAxNWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODExbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNS42OTQuODM0IDAgMS41MDEtLjQ2MiAxLjUwMS0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OXYtMi4wMjVoMS4yNjl2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41OS4yNDctMS40MzguMjQ3Wm0yLjk1MS05Ljc1M2MwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyLjcxMyAwIDEuMjg2LjU3MyAxLjI4NiAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NiAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4yNzIgMS43NDgtMy45NzQgNC4wMzgtMy45NzRzNC4wMzUgMS43MDIgNC4wMzUgMy45NzRjMCAyLjI3MS0xLjc0OCAzLjk1Ni00LjAzNSAzLjk1Ni0yLjI5IDAtNC4wMzgtMS42ODUtNC4wMzgtMy45NTZabTIuMjQ1IDBjMCAxLjExMS43NTcgMS45MTcgMS43OTMgMS45MTdzMS43OTQtLjgwMyAxLjc5NC0xLjkxN2MwLTEuMTEyLS43NTgtMS45MTgtMS43OTQtMS45MThzLTEuNzkzLjgwMy0xLjc5MyAxLjkxOFptOS41NCAwdjMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuMTY3IDMuMDE1Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjIxLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTE5Yy4xMDctMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDQuNjk0LjgzNSAwIDEuNTAyLS40NjIgMS41MDItMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM4LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm02LjUyNCAyLjMxN1YyOS41NDNoMi4xOTZWNDAuMzhoLTIuMTk2Wm0xNC4wODktMTAuODM3IDQuMjQgMTAuODM3aC0yLjM4MWwtLjg2Ni0yLjEzM2gtNC4xOTFsLS44NTEgMi4xMzNoLTIuMzgxbDQuMjM5LTEwLjgzN2gyLjE5MVptLTEuMDk4IDMuMTIzLTEuMzQ1IDMuNTM5aDIuNjlsLTEuMzQ1LTMuNTRabTYuMzg1LTIuMDA5YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjM5NiAxLjcxNi0zLjk3MyAzLjgxOS0zLjk3My44NjYgMCAxLjU5Mi4zMjMgMS45ODEuNjY0di0zLjc0MWgyLjE5NlY0MC4zOGgtMi4xNjV2LS41NDJjLS40LjM4Ni0xLjE2LjcxMi0yLjAwOS43MTItMi4xMDYgMC0zLjgyMi0xLjUxNS0zLjgyMi0zLjk1NlptNS44MzEgMGMwLTEuMTc0LS43NzItMS45OC0xLjc5My0xLjk4LTEuMDIyIDAtMS43OTQuODAzLTEuNzk0IDEuOTggMCAxLjE3NS43NzIgMS45OCAxLjc5NCAxLjk4IDEuMDIxIDAgMS43OTMtLjgwNSAxLjc5My0xLjk4Wk0xMDAuMTk2IDQ4LjA5aDguNTIydjIuMTE4aC0zLjExdjguNzE5aC0yLjMwNHYtOC43MTloLTMuMTExVjQ4LjA5aC4wMDNabTEzLjg4OCAzLjY5MnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk2di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTMxLjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm01Ljg5MSA2LjM3MWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM4LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk5LS43NzRabS0yLjY5LTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOC43MjEtMS40N3YzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMC43OTUgMS42MDdjMC0uMjMyLS4xMzktLjQxNi0uNzQ0LS41NDFsLTEuMTQzLS4yMzNjLTEuNzE3LS4zNC0yLjQ0NC0xLjE2LTIuNDQ0LTIuMjg4IDAtMS4zMyAxLjAwNS0yLjUxOSAzLjA5NC0yLjUxOSAyLjEwMiAwIDMuMDQ3IDEuMTc0IDMuMjAxIDIuNDloLTIuMDg5Yy0uMTI1LS40MTctLjQ4LS42NjQtMS4xMjktLjY2NC0uNjE5IDAtLjk2LjIxNi0uOTYuNTI1IDAgLjIzMy4xODUuMzcyLjc1OC40OGwxLjE0NC4yMzJjMS42MjMuMzIzIDIuNDI5IDEuMDgzIDIuNDI5IDIuMzggMCAxLjQ2OS0xLjA2NyAyLjQ5LTMuMTg3IDIuNDktMi4xNjUgMC0zLjMyNi0xLjAyMS0zLjU0Mi0yLjU5OGgyLjIxNGMuMTI1LjUyNC41MTEuODAyIDEuMzI4LjgwMi43NDYgMCAxLjA3LS4yMTUgMS4wNy0uNTU2Wm0xMS41NTItMS42MDhjMCAyLjM5Ny0xLjcxNyAzLjk1Ny0zLjgxOSAzLjk1Ny0uODY2IDAtMS41OTItLjMxLTEuOTgxLS42NXYzLjQ3N2gtMi4xOTdWNTEuMzQ4aDIuMTY2di41NDJjLjQwMy0uMzg2IDEuMTYtLjcyNiAyLjAxMi0uNzI2IDIuMTAyIDAgMy44MTkgMS41MTcgMy44MTkgMy45NzNabS01LjgzMSAwYzAgMS4xNzUuNzc0IDEuOTggMS43OTMgMS45OCAxLjAyMiAwIDEuNzk0LS44MDMgMS43OTQtMS45OCAwLTEuMTc0LS43NzItMS45OC0xLjc5NC0xLjk4LTEuMDE5LjAwNC0xLjc5My44MDYtMS43OTMgMS45OFptMTEuODc5IDMuMDE2Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ2LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTgtLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA0LjY5NS44MzUgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptMTEuNTY2LTQuODI2djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY2di42MzVjLS4wMTUgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MjguMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTguNDI4IDMuOTQ0aC01LjM1MmMuMTI1Ljc3NC43NTggMS4zNiAxLjcwMyAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzctLjY0OWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NiAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjEtNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4yLS4wMTcuNTctLjAxNy41N1ptLTMuNzExLTIuNjI3Yy0uODM1IDAtMS4zOTQuNTEtMS41MzMgMS4xNmgyLjk0Yy0uMDQ1LS42NjYtLjYxOS0xLjE2LTEuNDA3LTEuMTZabTcuMzkyIDIuMDM5djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS41NjcuODM3aDIuNDEyYy0uMzU3IDEuODQtMS43NDggMy4xMjMtMy43OTEgMy4xMjMtMi4yOSAwLTMuOTktMS42ODUtMy45OS0zLjk1NyAwLTIuMjcxIDEuNzAzLTMuOTczIDMuOTktMy45NzMgMS45OTUgMCAzLjM4OCAxLjIzNiAzLjY2NiAzLjAyOWgtMi40MTVjLS4xNy0uNTczLS42NjQtLjk1OS0xLjMyOC0uOTU5LS45MjggMC0xLjY3MS43ODktMS42NzEgMS45IDAgMS4xMTIuNzQzIDEuOSAxLjcwMyAxLjkuNzEyLjAwNCAxLjI0LS40MTYgMS40MjQtMS4wNjNabTUuMTAyIDYuMDI3Yy0uOTkgMC0xLjQ4NC0uMjY0LTEuNDg0LS4yNjR2LTIuMDFzLjQ0OC4yMzIuOTI4LjIzMmMuNDk2IDAgMS4xNDMtLjE4NCAxLjI5OS0xLjAzNWwtMi45NTQtNy41NzVoMi40NDRsMS43MTcgNC42OTkgMS43NDgtNC43aDIuMzQ5bC0zLjA3OSA3LjdjLS44MDMgMi4wMjYtMS40NTMgMi45NTMtMi45NjggMi45NTNabTExLjU5OC0zLjA3NVY0OC4wOWgyLjMwNXYxMC44MzdoLTIuMzA1Wm02LjYxOC0zLjc4OXYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY2di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTUtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTYuNTQxLTUuOTM2YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTcuMjU0LjAyOWMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI2LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0yLjk1NC05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm04Ljc1NC0uNzc0Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI3IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODFsLS4xOTktLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDhjLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk3LTEuODU1djIuOTdoMS45MDF2Mi4wMjRoLTEuOTAxdjIuNjQzYzAgLjcyNi40NzkuODk3LjkyOC44OTcuNTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODguMjQ3LTEuNDM5LjI0N1ptMi45NTEtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0xMC45ODMtNy41NzUtMi42OTEgNy41NzVoLTIuMjU4bC0yLjY5MS03LjU3NWgyLjMzNmwxLjQ4NCA0LjY4NSAxLjQ4NC00LjY4NWgyLjMzNlptNy45OCA0LjM3NGgtNS4zNTJjLjEyNS43NzQuNzU3IDEuMzYgMS43MDIgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM4LS42NDloMi4zNjZjLS41MSAxLjY0LTEuNjg1IDIuNjYtMy41NzIgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg4IDAgMy43NiAxLjk2MyAzLjc2IDMuOTg4LS4wMDYuMi0uMDIuNTctLjAyLjU3Wm0tMy43MTItMi42MjdjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDktLjY2Ni0uNjE5LTEuMTYtMS40MDgtMS4xNlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEyMiAzNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCI+PHBhdGggZD1cXFwiTTQ0LjAxOSAyN1YxNi45NzloMy4yNDdjMS4yMyAwIDIuMDMyLjA1IDIuNDA2LjE1LjU3NC4xNSAxLjA1NS40NzggMS40NDIuOTg0LjM4OC41MDIuNTgxIDEuMTUxLjU4MSAxLjk0OCAwIC42MTYtLjExMSAxLjEzMy0uMzM1IDEuNTUyLS4yMjMuNDItLjUwOC43NS0uODU0Ljk5Mi0uMzQyLjIzNi0uNjkuMzk0LTEuMDQ2LjQ3MS0uNDgzLjA5Ni0xLjE4My4xNDQtMi4wOTkuMTQ0aC0xLjMxOVYyN2gtMi4wMjNabTIuMDIzLTguMzI2djIuODQ0aDEuMTA3Yy43OTggMCAxLjMzMS0uMDUzIDEuNi0uMTU4YTEuMzMzIDEuMzMzIDAgMCAwIC44NjEtMS4yNzFjMC0uMzY1LS4xMDctLjY2NS0uMzItLjkwMmExLjM5OSAxLjM5OSAwIDAgMC0uODE0LS40NDVjLS4yNDItLjA0NS0uNzI3LS4wNjgtMS40NTYtLjA2OGgtLjk3OFptNy4wMi0xLjY5NWgyLjAyNHY1LjQyN2MwIC44NjIuMDI1IDEuNDIuMDc1IDEuNjc1LjA4Ny40MS4yOTIuNzQuNjE2Ljk5MS4zMjguMjQ2Ljc3NC4zNyAxLjM0LjM3LjU3NCAwIDEuMDA3LS4xMTcgMS4yOTgtLjM1LjI5Mi0uMjM2LjQ2Ny0uNTI2LjUyNy0uODY3LjA1OS0uMzQyLjA4OS0uOTEuMDg5LTEuNzAzVjE2Ljk4aDIuMDIzdjUuMjYzYzAgMS4yMDMtLjA1NSAyLjA1My0uMTY0IDIuNTUtLjExLjQ5Ny0uMzEyLjkxNi0uNjA4IDEuMjU4LS4yOTIuMzQyLS42ODQuNjE1LTEuMTc2LjgyLS40OTIuMi0xLjEzNS4zLTEuOTI4LjMtLjk1NyAwLTEuNjg0LS4xMDktMi4xOC0uMzI3LS40OTMtLjIyNC0uODgzLS41MS0xLjE3LS44NjJhMi43ODggMi43ODggMCAwIDEtLjU2Ny0xLjExNGMtLjEzMi0uNTc0LS4xOTgtMS40MjItLjE5OC0yLjU0M3YtNS4zNDZabTkuODU4IDBoNC4wMDZjLjc5MyAwIDEuMzgzLjAzNCAxLjc3LjEwMi4zOTMuMDY0Ljc0MS4yIDEuMDQ3LjQxLjMxLjIxLjU2Ny40OS43NzIuODQxLjIwNS4zNDYuMzA4LjczNi4zMDggMS4xNjkgMCAuNDctLjEyOC45LS4zODMgMS4yOTJhMi4zMyAyLjMzIDAgMCAxLTEuMDI1Ljg4MmMuNjEuMTc3IDEuMDguNDggMS40MDguOTA5LjMyOC40MjguNDkyLjkzMi40OTIgMS41MSAwIC40NTYtLjEwNy45LS4zMjEgMS4zMzQtLjIxLjQyOC0uNS43NzItLjg2OCAxLjAzMi0uMzY1LjI1NS0uODE2LjQxMi0xLjM1NC40NzItLjMzNy4wMzYtMS4xNS4wNTktMi40NC4wNjhINjIuOTJWMTYuOTc5Wm0yLjAyNCAxLjY2OHYyLjMxN2gxLjMyNmMuNzg4IDAgMS4yNzgtLjAxMSAxLjQ3LS4wMzQuMzQ2LS4wNDEuNjE3LS4xNi44MTMtLjM1Ni4yLS4yLjMwMS0uNDYyLjMwMS0uNzg2IDAtLjMxLS4wODctLjU2LS4yNi0uNzUyLS4xNjgtLjE5Ni0uNDIxLS4zMTQtLjc1OC0uMzU1LS4yMDEtLjAyMy0uNzc4LS4wMzUtMS43My0uMDM1aC0xLjE2MlptMCAzLjk4NXYyLjY4aDEuODczYy43MyAwIDEuMTkyLS4wMjEgMS4zODgtLjA2Mi4zLS4wNTUuNTQ0LS4xODcuNzMxLS4zOTYuMTkxLS4yMTUuMjg3LS41LjI4Ny0uODU1IDAtLjMtLjA3My0uNTU2LS4yMTktLjc2NmExLjIzNyAxLjIzNyAwIDAgMC0uNjM1LS40NThjLS4yNzQtLjA5NS0uODctLjE0My0xLjc5MS0uMTQzaC0xLjYzNFpNNzIuODA1IDI3di05Ljk0aDIuMDI0djguMjUyaDUuMDMxVjI3aC03LjA1NVptOC4xNjMgMFYxNi45NzloMi4wMjNWMjdoLTIuMDIzWm0zLjE2NS0zLjI2IDEuOTY5LS4xOTJjLjExOC42Ni4zNTggMS4xNDYuNzE4IDEuNDU2LjM2NC4zMS44NTQuNDY1IDEuNDcuNDY1LjY1MSAwIDEuMTQxLS4xMzcgMS40Ny0uNDEuMzMyLS4yNzguNDk4LS42MDIuNDk4LS45NzFhLjg5Ljg5IDAgMCAwLS4yMTItLjYwMmMtLjEzNi0uMTY4LS4zNzgtLjMxNC0uNzI0LS40MzctLjIzNy0uMDgyLS43NzctLjIyOC0xLjYyLS40MzgtMS4wODUtLjI2OS0xLjg0Ni0uNTk5LTIuMjg0LS45OS0uNjE1LS41NTItLjkyMi0xLjIyNC0uOTIyLTIuMDE3IDAtLjUxLjE0My0uOTg3LjQzLTEuNDMuMjkyLS40NDYuNzA5LS43ODUgMS4yNTEtMS4wMTguNTQ3LS4yMzIgMS4yMDYtLjM0OCAxLjk3Ni0uMzQ4IDEuMjU3IDAgMi4yMDMuMjc1IDIuODM3LjgyNy42MzguNTUxLjk3MyAxLjI4NyAxLjAwNSAyLjIwOGwtMi4wMjQuMDg5Yy0uMDg3LS41MTUtLjI3My0uODg0LS41Ni0xLjEwOC0uMjgzLS4yMjgtLjcxLS4zNDItMS4yNzktLjM0Mi0uNTg4IDAtMS4wNDguMTIxLTEuMzguMzYzYS43My43MyAwIDAgMC0uMzIyLjYyMmMwIC4yMzcuMS40NC4zLjYwOC4yNTYuMjE0Ljg3Ni40MzggMS44Ni42Ny45ODUuMjMyIDEuNzEyLjQ3NCAyLjE4LjcyNS40NzUuMjQ2Ljg0NC41ODUgMS4xMDggMS4wMTguMjcuNDI5LjQwNC45Ni40MDQgMS41OTMgMCAuNTc0LS4xNiAxLjExMi0uNDc5IDEuNjEzLS4zMTkuNTAyLS43Ny44NzUtMS4zNTMgMS4xMjEtLjU4NC4yNDItMS4zMS4zNjMtMi4xODEuMzYzLTEuMjY3IDAtMi4yNC0uMjkyLTIuOTE5LS44NzUtLjY3OS0uNTg4LTEuMDg1LTEuNDQzLTEuMjE3LTIuNTY0Wk05My43MTEgMjdWMTYuOTc5aDIuMDIzdjMuOTQ0SDk5Ljd2LTMuOTQ0aDIuMDIzVjI3aC0yLjAyM3YtNC4zODJoLTMuOTY1VjI3aC0yLjAyM1ptOS44MyAwVjE2Ljk3OWg3LjQzMXYxLjY5NWgtNS40MDh2Mi4yMjFoNS4wMzJ2MS42ODloLTUuMDMydjIuNzI3aDUuNTk5VjI3aC03LjYyMlptOS4wNjUgMFYxNi45NzloNC4yNThjMS4wNzEgMCAxLjg0OC4wOSAyLjMzMi4yNzNhMi4yOCAyLjI4IDAgMCAxIDEuMTY4Ljk1N2MuMjkyLjQ2LjQzOC45ODcuNDM4IDEuNTggMCAuNzUxLS4yMjEgMS4zNzMtLjY2MyAxLjg2NS0uNDQyLjQ4OC0xLjEwMy43OTYtMS45ODMuOTIzLjQzOC4yNTUuNzk4LjUzNiAxLjA4MS44NDEuMjg3LjMwNS42NzIuODQ4IDEuMTU1IDEuNjI3TDEyMS42MTUgMjdoLTIuNDE5bC0xLjQ2My0yLjE4Yy0uNTItLjc4LS44NzUtMS4yNy0xLjA2Ny0xLjQ3YTEuNTAzIDEuNTAzIDAgMCAwLS42MDgtLjQxN2MtLjIxNC0uMDc4LS41NTQtLjExNy0xLjAxOS0uMTE3aC0uNDFWMjdoLTIuMDIzWm0yLjAyMy01Ljc4M2gxLjQ5N2MuOTcxIDAgMS41NzctLjA0MSAxLjgxOS0uMTIzLjI0MS0uMDgyLjQzLS4yMjQuNTY3LS40MjQuMTM3LS4yLjIwNS0uNDUxLjIwNS0uNzUyIDAtLjMzNy0uMDkxLS42MDgtLjI3My0uODEzLS4xNzgtLjIxLS40MzEtLjM0Mi0uNzU5LS4zOTctLjE2NC0uMDIzLS42NTYtLjAzNC0xLjQ3Ny0uMDM0aC0xLjU3OXYyLjU0M1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBmaWxsPVxcXCJ1cmwoI2xvZ29fc3ZnX19hKVxcXCIgZD1cXFwiTTAgMGg0MXYzNkgwelxcXCIvPjxkZWZzPjxwYXR0ZXJuIGlkPVxcXCJsb2dvX3N2Z19fYVxcXCIgcGF0dGVybkNvbnRlbnRVbml0cz1cXFwib2JqZWN0Qm91bmRpbmdCb3hcXFwiIHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjFcXFwiPjx1c2UgeGxpbms6aHJlZj1cXFwiI2xvZ29fc3ZnX19iXFxcIiB0cmFuc2Zvcm09XFxcIm1hdHJpeCguMDAwOTMgMCAwIC4wMDEwNiAtLjEyMiAtLjAwNylcXFwiLz48L3BhdHRlcm4+PGltYWdlIGlkPVxcXCJsb2dvX3N2Z19fYlxcXCIgd2lkdGg9XFxcIjIyMzVcXFwiIGhlaWdodD1cXFwiOTU5XFxcIiB4bGluazpocmVmPVxcXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQ0xzQUFBTy9DQVlBQUFBdEtsYWtBQUFBQ1hCSVdYTUFBQ0UzQUFBaE53RXpXSjk2QUFBZ0FFbEVRVlI0MnV6ZFBZaGQ2WjBtOE9jZE9qRHNEV3BoWUNvd2JEV3VvSU9CdmczT1hHQXBzcExGM2JTU2lWUmljYVRBclVoUjAyb2NLZXFlUUpHRExrV1RxTEhNSnRXUk5TRERCQXR6R3lhWW9JeHJZWUphR0pnYXFJVUpCdDROM2x1cnN0d2YrcmozUGVmYysvdEJjVXRxKzU2djkxU3BkQjQ5L3dRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURvb0RnRkFBQUFNRTYxMXAwazh6LzdZYjZVcDg0T0FBQUFBTnRLMkFVQUFBQldyTmE2bDJSditjdDVrcDNsNS8vdHl1OW4rZnZ6TmV6QzB4ZCt2VWp5Nzh2UFQ1Y2ZTYklvcFp5N1lnQUFBQUJNaWJBTEFBQUF2S0phNjJXQTVkcnl0MzY2ZkwwYWJKbVMwK1hIZVpLdmw2K0xKS2VsbEZOWEhBQUFBSUF4RVhZQkFBQ0FiM0JsaE5BOHJaRmxudGJLc3JlRnAyT1JGb0Q1K3l5RE1VWXBBUUFBQURBVVlSY0FBQUMyM3JLcFpTOHQwUExUVExlaHBiZlR0Q0RNMTJtamt6VEJBQUFBQUxCMndpNEFBQUJzbFdWank3VUl0cXpMZVZydzVUSUFzeWlsbkRzdEFBQUFBS3lLc0FzQUFBQWJiZG5hY2hsc3VaYnRIRU0wdEVXdUJHQzB2d0FBQUFEd0pvUmRBQUFBMkNpMTFyMjBVTXZQbDY5YVc4Ym5OQzM4OHR1MDhJdm1Gd0FBQUFCZW1yQUxBQUFBazNabExORmx1R1hQV1ptY3krYVgzNVpTbmpvZEFBQUFBSHdYWVJjQUFBQW1aOW5lOG42ZUIxellIT2Q1M3ZyeVJPc0xBQUFBQUM4U2RnRUFBR0FTYXEzekpMZlNRaTU3enNqV1dDUjVsQlo4T1hVNkFBQUFBQkIyQVFBQVlMUUVYSGlCNEFzQUFBQUF3aTRBQUFDTWk0QUxMMG53QlFBQUFHQkxDYnNBQUFBd3VGcnJYbHE0NVpjUmNPSFZQYzN6NE11NTB3RUFBQUN3MllSZEFBQUFHRXl0OVRESno5T0NMckFLUjBrZWxWS2VPaFVBQUFBQW0wbllCUUFBZ0s2V0xTNi9USEtZWk1jWllVMU8wOXBlam93NUFnQUFBTmdzd2k0QUFBQjBzV3h4dVpYa21yTkJaMGZSOWdJQUFBQ3dNWVJkQUFBQVdKdGxpOHRoV3BPTEZoZUdkcHJrMHlSUFNpbm5UZ2NBQUFEQU5BbTdBQUFBc0hLMTFtdHBMUzZIemdZamRKN1c5dkszUmh3QkFBQUFUSSt3Q3dBQUFDdFRhMzAvcmNYbG1yUHhVaGJmOEhzblNmN3ZLN3pIajVMTVh2aTlXWko5cC9lbEhNV0lJd0FBQUlCSkVYWUJBQURnamRWYUQ1TjhrbVJ2eTAvRlJWcFlKVW0rWHI2ZUxUK3kvRzhYQSt6WDd2SWphU0dZV1pML2t1ZUJtTGxWbktkSlBoVjZBUUFBQUJnL1lSY0FBQUJlMjVhR1hDN0RLNWNOTEl2OGFjaGx5dVo1M2dyelYya0JtY3R3ekxaNG10YjBjdVFPQndBQUFCZ25ZUmNBQUFCZVNhMTFKOGxIYWVPS2RqYjRVQzhETENkSi9wQVdjRmxzNldXL0RNRHNwNDFOMnMzbXQ4R2Nwalc5SExuckFRQUFBTVpGMkFVQUFJQ1hWbXU5bjgwTnVTelNSZzlkQmx6T1hQSHZkVFVBTTgvenNVaWI1RFJDTHdBQUFBQ2pJdXdDQUFEQTk5ckFjVVdYTFMxL1dMNmV1TW9yTTE5K1hBWmdObVVFMGlMSjNWTEtVNWNZQUFBQVlGakNMZ0FBQUh5ckRRcTVYQ1I1bHRiY3NvaldscDcyMDBJdjcyWXp3aTlQMDVwZW5ycTBBQUFBQU1NUWRnRUFBT0RQMUZxdnBZVmNyazM0TUJaSmZoL05MV056MmZ6eWsweDc3TkdUdEthWFU1Y1VBQUFBb0M5aEZ3QUFBUDYvV3V0ZWtpOHl6WkRMNVdpaXk0RExoU3M2ZXJNa0IybkJsNm0ydm55ZTF2Unk3bklDQUFBQTlDSHNBZ0FBUUdxdE8ybE5MaDlOYk5mUDBzWVRmUlh0TFp2Z012aHlrR2tGWDg3VEFpK2Z1NFFBQUFBQTZ5ZnNBZ0FBc09WcXJSK2xCVjEySnJMTEFpN2JZWXJCbDlNa3Qwc3BUMTArQUFBQWdQVVJkZ0VBQU5oU3RkWnJTVDVMR3g4emRoZEpqaVBnc3EybUZueDVrdVJ1S2VYVXBRTUFBQUJZUFdFWEFBQ0FMYk1jV2ZSWmtzTUo3TzV4a3Qrbk5ibkFMQzN3OHJPTVA2UjFudVJ2U3luM1hUWUFBQUNBMVJKMkFRQUEyQ0sxMXNPMG9NdVlSeGFkcERXNEhLYzF1c0EzMlUxeUl5MzRzanZpL1Z5a3RidzhkY2tBQUFBQVZrUFlCUUFBWUF2VVd2ZVNmSkhrMm9oMzh6akpsekdtaUZkMzJmWnlNT0o5L0R6SnA2V1VjNWNMQUFBQTRNMEl1d0FBQUd5NFd1dEhTVDdKT050Y3p0SUNMbHBjV0lYZEpCK21OYjdNUnJoLzUwbHVsMUtldUZRQUFBQUFyMC9ZQlFBQVlFUFZXdWRwYlM3ekVlN2VJaTNrOHN5VllnMW1hUzB2dHpMT0VVZFAwa0l2V2w0QUFBQUFYb093Q3dBQXdBYXF0ZDVQYTNNWkc2T0s2TzBncmUxbGJLRXZMUzhBQUFBQXIwbllCUUFBWUlQVVd2ZlMybHl1ald6WGpwTThTaHRiQkVPWXA0VmVEa2EyWDFwZUFBQUFBRjZSc0FzQUFNQ0dxTFYrbE5ibXNqT1NYYnBJYTNGNXZQd2N4bUEzYmJ6UmpSSHQwMmxhNE9XcHl3TUFBQUR3L1lSZEFBQUFKcTdXdXBQVzV2TCtTSFpKeUlVcEdHUG81Zk5TeWwyWEJnQUFBT0M3Q2JzQUFBQk1XSzMxV3BMZlpCeHRMa0l1VE5IWVFpK0xKQitVVWs1ZEdnQUFBSUJ2SnV3Q0FBQXdVYlhXKzJsamk4YmdPTW5EQ0xrd1hidEo3aVdaajJCZnpwUGNMYVVjdVN3QUFBQUFmMDdZQlFBQVlHSnFyWHRwYlM1amVDaC9uT1JSa2pOWGhnMHhUMnQ2R2NQOWRaUVdlamwzV1FBQUFBQ2VFM1lCQUFDWWtCR05MVnFraFZ3V3JzcmF6SkxzZjg4MVlIME9rdHhKYTN3WitsNjdYVXB4dlFFQUFBQ1doRjBBQUFBbVlpUmppODdTeGhVOWMwVmV5dFhBeXRXbWtIZXZmTDZiMVFZcVR2S240NlMrWHI1ZUxQOWJJaWp6S2c2VGZMaThsa001VHd1OFBIRTVBQUFBQUlSZEFBQUFScS9XdXBQVzVuSnR3TjI0U1BKbDJsZ1YvdFIrV2hCaW51Uy9MSCs5NmdETHVsd0dZNzdPOHpETVdZeWxldEVzcmVYbHhzRDc4WGtwNWE3TEFRQUFBR3c3WVJjQUFJQVJxN1hPMDRJdWV3UHV4ck8wTnBkdEQwQmNCbGptU1g2MC9IeC9nNDkzc2J6bWYwZ0x3YnpZR0xPTjVtbWhseUd2KzlNa0g1UlN6bjJGQkFBQUFMYVZzQXNBQU1CSTFWb1BrM3lXWkdlZ1hUaEw4aURiT2ZMbWN2elFaYkJsbm1ISDJJekZXVnJvNWV2bDY3YU9RN3FaNU5hQWErSTBMZkJpSEJVQUFBQ3dsWVJkQUFBQVJxaldlai9KSndQdXdxTnMxOGlpeXpGRTd5NWY5NjNDbDdaSUM3OHNzbDN0TDdNazk1SWNETFQ5OHlSM1N5bEhsaUFBQUFDd2JZUmRBQUFBUnFUV3VwUFc1bkk0MEM0czBrWVduV3o0cVJadVdlOGF1Z3kvYkVQenlEd3Q5TEk3MFBZL0xhWGN0K3dBQUFDQWJTTHNBZ0FBTUJMTG9NdnYwaDZlOTNhUjF1YnllSU5QOFc1YUM4ZFBCanJIMitnaUxmRHkreVRQc3JtdEw3TzBzVVkzQjlyK1VTbmx0dVVHQUFBQWJBdGhGd0FBZ0JHb3RjN1RnaTQ3QTJ4K2tlUkJrck1OUExYN1NYNldGbkxadGRJR2Q1TGtxN1RneXlhdXR5RmJYaFpKcnBkU3ppMHpBQUFBWU5NSnV3QUFBQXlzMW5vdHlXL1NQK2l5cVcwdUFpN1RzS25CbHlGYlhoWkpicGRTRnBZWEFBQUFzTW1FWFFBQUFBWlVhejFNOHNVQW16NUo4bkUySjJTd20rVERDTGhNMVdYdzVUaWJNK3BvbnVSWGFlR1huczdUR2w0RVhnQUFBSUNOSmV3Q0FBQXdrRnJyUjBrK0cyRFRqNUljYmNBcG5LV0ZXejVNYTNOaE16eEw4dnUwNE1zbXJORjd5M1hhMDNsYXc4c1R5d2tBQUFEWVJNSXVBQUFBQTZpMWZwSGtzUE5tejVJOFNCdDFNbVh6dERGRk42eWtqWGFSRm5qNU10TnZJTHFSNUU3NnQ3emNMcVVjV1VvQUFBREFwaEYyQVFBQTZHeWdvTXV6dEtETFZFZkVYTGE0M0lveFJkdG9rZWRqanFacVA2M2xwWGNMa2NBTEFBQUFzSEdFWFFBQUFEcXB0ZTZralMwNjdMenBoMGtlVC9TMDdhYU5LYnFSL3EwWWpNOVpXdWpsY2FZWjNKcWxOYnowYmlYNnRKUnkzL0lCQUFBQU5vV3dDd0FBUUFmTG9NdnYwa2J3OUhLVzVPTWtKeE04WmZPMGtNdUIxY00zdUVockszcVVhWTQ0R21LczBWRXA1YmFsQXdBQUFHd0NZUmNBQUlBMUd5am9NdFd4UlFkcElaZTVsY05MT2s1cmUxbE1iTCtIR0dzazhBSUFBQUJzQkdFWEFBQ0FOUm9vNlBJb3lkSEVUdFdOSkxmU3hoYkI2MWdzMS82VVFpK3p0TUJMendZamdSY0FBQUJnOG9SZEFBQUExbVNBb010Rldwdkxzd21kSmlFWFZtMktvWmZENVgzUWk4QUxBQUFBTUduQ0xnQUFBR3ZTT2V4eWtoWjBPWm5JNlRsSWNpZENMcXpQMUVJdkIya3RMN05PMnhONEFRQUFBQ1pMMkFVQUFHQ05PZ1ZlRmtrK1RtdDJHYnQ1V29QRjNPcWdrK08wME12WkJQWjFQOG12MGk4RUp2QUNBQUFBVEpLd0N3QUF3SnF0T2ZCeW5OYm9NbmE3YWEwVlFpNE01WEZhNkdYc29iQlprcy9TZ2k4OUNMd0FBQUFBa3lQc0FnQUEwTUdhQWk4UDB4N2dqOWtzcmNubHBsWEFDRndrK1RMSjBRVDI5VjZTRzUyMkpmQUNBQUFBVElxd0N3QUFRQ2NyREx4Y3BBVmRqa2QreURmVGdpNHpWNStST1Z2ZVE4OUd2cCtIeTN1b2g4OUxLWGN0RFFBQUFHQUtoRjBBQUFBNldrSGc1U0xKM1NRbkl6N01lWkk3NlRlR0JWN1hJbTBNMk5tSTkvRkdXc3RMRDdkTEtVZVdCUUFBQURCMndpNEFBQUNkdlVIZzVTekp4eGx2MEdXV0ZuSzU0U3EvbHBPME1OUHIybzhXbmRmMUtPTWViWFNRRm5qcGNYMEZYZ0FBQUlEUkUzWUJBQUFZd0dzRVhrN1NHbDB1Um5wSU45S0NMc0lXZitvaXowTXNmMWorM3VLRi83WXVsMnRybHVjdE8rKys4Tjk0N2l5dDVXVXgwdjNiVC9KWkJGNEFBQUFBaEYwQUFBQ0c4Z3FCbHpFSFhYYlRHaWUyUFR4eHR2ejQrc3JuaTVIdjgyVUlaai9KWDEzNWZOc0RTNC9UbWw3R2VMLzFDcnljSjdsZVNsa0VBQUFBWUlTRVhRQUFBQWIwRW9HWE1RZGRiaWE1bGUwTFIxd0dXZjZ3dkQ2YkZnaTRETUhNay94byticU4xM2lzTFMvN2FRR3ovVFZ2UitBRkFBQUFHQzFoRndBQWdJRjlSK0RsT01uRGpDL29zbTF0THBlQmxxK1hyeGRidUV4M2w5ZjczZVhyN3BZYzkxaGJYbVpwRFMvckRyeWNKbm12bEhMdUt6VUFBQUF3SnNJdUFBQUFJL0FOZ1pmanRHYUpzZG1HTmhmaGx1KzNUZUdYc2JhODlBcThMTklhWGdSZUFBQUFnTkVRZGdFQUFCaUpLNEdYeTRmcll6SkxhM001Mk5EVC95d3QzUEpzZWY1NU5aZGpqMzZXOVljdmh2STRyV2xwYlBkbGo4RExVU25sdG1VT0FBQUFqSVd3Q3dBQXdFalVXdC9LT01Nazh5Uy95bWExdVZ6a1R3TXUybHRXNTdMMTVTZlp2SERVU1pLUE02NUFWSy9BeStlbGxMdVdOd0FBQURBR3dpNEFBQUFqc0F5NnpETytRTWxoMnRpaVRmRXN5VmZMVjladmxoWjQrVENiMC9oeWtkYndjanl5ODl3ajhISzdsSEprV1FNQUFBQkRFM1lCQUFBWTJFaURMcjBlbnZkd2t1VExhSEFaMm02U0cybWpqblkzNEhpTzAwSXZGMXQwejU0bnVWNUtXVmpPQUFBQXdKQ0VYUUFBQUFaV2EvM3JKSDg1b2wzYWhMRkZGMmxoaEM4enJwRXpQRjlqUDBzTHYweloyTVlhOVFxOHZGMUtPYmVNQVFBQWdLRUl1d0FBQUF5bzF2cE94dFZ5Y1RQSm5RbWYwc3NXbDJPcmF4Sm1hWUdYRHpQZHRwZUxKQTh5bnRGWSsybUJsM1dHMVJhbGxQY3NYd0FBQUdBb3dpNEFBQUFER1ZuUVpaYmtYcEtEaVo3TzR5UmZKVEZlWmJvTzBrSXY4NG51LzZNa1J5UFpseDZCbDZOU3ltM0xGZ0FBQUJpQ3NBc0FBTUFBYXEzN1NYNDRrdDNaVFJ0YnREK3gwMmhVMFdiYVR3dTlUSEhFMGJPMGxwZUxrWnpIZFFkZWJwZFNqaXhaQUFBQW9EZGhGd0FBZ001cXJidEozaG5KN3ZSNElMNXFGMmtCbDhjWlI2aUE5ZGhOY2l2VEM3MmNKUGs0NHdoZ3paZjM5N3FjSjdsZVN0R29CQUFBQUhRbDdBSUFBTkRSeUlJdU45SkdGMDJGa010Mm1tTG81U0xKM2JUZ3k2YmY1NmRKM2l1bG5GdXFBQUFBUUMvQ0xnQUFBSjNVV21kSmZqeVMzVGxNQ3hCTWdaQUx5ZlJDTHhkSkhxYU4yaHJhelNSMzF2aitUMG9wSDFpaUFBQUFRQy9DTGdBQUFCMHNneTd6SkcrTllIZnVaVHFCZ2NkSkhrWEloZWQyMDRJYkJ4UFozd2NaUitCbDNmZjkzVkxLNTVZbkFBQUEwSU93Q3dBQXdKclZXdDlLQzdyTUJ0NlZXWkpmTGZkbDdJN1RRaTVuVmhEZllwN1c5REtWOWZ4Z0JQdngyUnJQMTNtUzY2V1VoYVVKQUFBQXJKdXdDd0FBd0pyVlduK2NjUVJkUGt1eVAvTFRkWkkyK3NVRGMxN1dqYlRReSs3STkzTU1nWmQxZngxWXBBVmV6aTFMQUFBQVlKMkVYUUFBQU5hbzF2cE9objhJUDRXZ3kwVmF5T1hZcXVFMTEvak50TkRMbUIwdjEvbVFZN24ybDE4UDFoWEErN3lVY3RlU0JBQUFBTlpKMkFVQUFHQk5hcTI3U2Q0WmVEZjIwMFlYamJuMTRuSGF5S0lMcTRZM3RKdmtYc1k5MnVna3lkMkIxL3M4TGZDeUxoK1VVcDVZamdBQUFNQzZDTHNBQUFDc1FhMTFKOE0vY0Y5M2c4T2JNcktJZGJtUjVNN0kxLzdRZ1plYnkzTzBEdWRKM2piT0NBQUFBRmlYdjNBS0FBQUFWcXZXK29Na2Z6M3dib3c5NlBJb3lTOGk2TUo2SENmNW15VFBScnAvWTdnL0gyZDlZOE4ya254aEdRSUFBQURyb3RrRkFBQmd4V3F0UDg2d0Q3SEhISFE1U2ZKZytRbzlIS1NOTmhyci9UQmt3OHRzK2JWaWYwM3ZmN3VVY21RSkFnQUFBS3NtN0FJQUFMQkN0ZFoza3V3T3VBdGpEcm84U25LMDVVdGtkL2t4eS9PQXdZK3VYSytydi84cXJqYmtuQ1g1UHkvOC9rbUdIWmt6dEZsYTRPVmdoUHMyZE9CbE44bXYxL1ExNHp6SmU2V1VVOThkQUFBQWdGVVNkZ0VBQUZpUld1dHVrbmNHM0lXeEJsM09rbnljN1dwem1lZDVzT1hkdkg2SVpkVVdhYUdLUHl5dng5bVdYWmV4dHJ3TUhYZzVTUEtyTmIzMzAxTEtkZDhoQUFBQWdGVVNkZ0VBQUZpQld1c3NMZUR3MWtDN3NNNTJoamR4bk9SaE5ydFZaSC81OGU2Vno2ZG1rUmE0K01QeTg3TU52bDY3YVlHWCtjajJhK2pBeTUwa045ZjAzc1laQVFBQUFDc2w3QUlBQVBDR2FxMXZwVDA0SHlwb01rdHJkQmxUeU9JaUxlUnl2SUdYZkg5NXZkOGQrTHF2MDFsYTZPWHJiRzc0NVRESnJaSHQwN08wRnFTaC9IcE5YMGZPazd4ZFNqbjNIUU1BQUFCWUJXRVhBQUNBTjFScjNVL3l3NEUyUDhhZ3kwbVNCOW1jOFRpenRERXY3eTVmWjF1NHpDL0RMNzlQQzJSc2lubmErSjR4WGRQajVmMHpoSFUyUkQwcHBYemdPd1lBQUFDd0NzSXVBQUFBYjZEVytwZEovbnFnelk4eDZMSXBZNHQyMDRJdFA4czB4eEt0MjdNOEQ3NU0vVnFQOVQ0YUt2QnlrQllBV29jUFNpbFAzRDRBQUFEQW14SjJBUUFBZUUyMTFoOGsrWEdTdHdiYWhYdEpib3pvbER6SXRNY1d6WmJuVThEbDFXeEs4R1ZzOTlQREpJODM3RnljSm5uUE9DTUFBQURnVFFtN0FBQUF2S1phNnp6SnprQ2JIOU9EK1lza2R6UGRzVVUza3Z3a3JkR0NOMXNIejVKOGxUYnlhS3ByNGQ2STltZW9BTmtzYlp6UjdocmUrOU5TeW4yM0N3QUFBUEFtaEYwQUFBQmVRNjMxaHhtdS9XTk1EK1JQa255YzVHeGlsM0EzeVlmTGN6bXpvbGZ1TE1tWGFVR05xYlc5N0tlTk5Sckx1dmhGaGdtUzdhY0ZYdGJodlZMS3dtMENBQUFBdkM1aEZ3QUFnRmRVYTUwbG1XZVk4VVVIU1g0MWtsUHhMSzE1WWtwaGhubGF5RVdMU3ovSFNSNWxXb0dvM2VWOU5vWnhWa00ySngwbXViV0c5MzFhU3JudTFnQUFBQUJlbDdBTEFBREFLNnExL2pqRHRENk1xWEhpT0Mzb01oVTMwaDdhNzFyQmcxbWtoVjZtMHVneFc5NXZZd2k4bktRRlhvWUlsdjE2VGVmZ2Rpbmx5RzBCQUFBQXZBNWhGd0FBZ0ZkUWE5MUxzamZBcG1kcEQ1M0hFTlo0bU9UeEJDN1hMSzNCUmNobFhCWkp2a29MVEUzQnZiU3cxTkNlcFkwTTYyMWQ0NHhPMDhZWm5ic2xBQUFBZ0ZjbDdBSUFBUENTbHVPTGZqelE1ajlMRzhFenRBZVpSa2poTUcxYzBjektIYTJ6dEthWEtheW5zUVJlSHFlRnpZYTRuOVl4enVqVFVzcDl0d0lBQUFEd3FvUmRBQUFBWGxLdGRaNWtaNEJOMzBseWMrRER2MGg3eUQ3MllJSnhSZE16bGZGR041ZjM0dENHQ3B5dGE1elIyNldVVTdjQkFBQUE4Q3FFWFFBQUFGNUNyZldIV2MrRDN1OXpJNjFWWWtnWFNlNG1PUm54SlRwSUN5SUl1VXpYSWkxUU5lWjF0czMzNHp5dFlXclZqa29wdHkxL0FBQUE0RlVJdXdBQUFIeVBXdXNQMHNZWHZkVjUwL3RwRDVlSEhNVXo5cURMZmxySVpXNmxib3pqdE5ETHhVajNid3lCbDVQbGZkbjdISzJyWmVwNktlV3BwUThBQUFDOExHRVhBQUNBNzFGci9lc2tmOWw1czdPMG9NditnSWMrNXFETExHMWMwVTByZENOZHBJMDJlanpTL1J0RDRPVlprbzhIdU85K25kVTNLRDB0cFZ5MzdBRUFBSUNYOVJkT0FRQUF3TGVydGU2a2Y5QWxhUTBLZ2k3ZjdDREozMFhRWlpQTmx2ZkFyelBPMXA3akpBOUdjQi9jSE9EcndzTTF2TysxV3V2N2xqMEFBQUR3c2pTN0FBQUFmSXRhNjF0cDQ0dCswSG5UUTdkR2pEWG9zcnM4TDBZV2JaL0hhVTB2WXh0dE5JYUdsMThNY0s5K3RvYjc4TFNVOHJhbERnQUFBTHdNelM0QUFBRGY3b2ZwSDNUWlRXdTBHTXBZZ3k0M005NldEN2IzK28raDRlVmVXaE5PVCtzNDVyMWE2NkdsRGdBQUFMd016UzRBQUFEZm9OYjZnN1JXbDdjNmIvclhHWFo4MGQwa2l4RmRDbTB1dkdpTUxTOURON3c4em5yR0MzMlh3eVMzVnZ5ZTJsMEFBQUNBbDZMWkJRQUE0SnY5TVAyRExvY1pOdWp5SU9NS3VoeEVtd3QvN3JMbFpYOUUrM1M4L0JqeW5CeDAzdWJqSkdjcmZrL3RMZ0FBQU1CTDBld0NBQUR3TFdxdHUya1AxSHVFWHVaSlBodndjQjlrMklmMVY4M1NSam5kc0FyNUhvK1NISTFvZis0TnVHNHZrdnhOK2piZXJLUFJScnNMQUFBQThMMDB1d0FBQUh5TFVzcFprbjlJY3JybVRjMHkvQWlVc1FSZDl0TkNQNEl1dkl4YnkvVXlHOG4rRE5tT05NVFhrZU0xSEs5MkZ3QUFBT0I3Q2JzQUFBQjhoMUxLZjVaU1R0TkNMLys2cHMzY1NySTcwQ0VlSjNrNGt0TjlJeTI0c0cvbDhRcm1TZjV1Uk92bTR5UW5BMjM3SVAzSEdUMWF3M3QrWWxrREFBQUEzMFhZQlFBQTRDV1VVdjZqbFBKUGFTMEcvN0hDdDU0bnVUblFZWjFrUEVHWGU4dVBtZFhHYTVnbCtYWEcwUWgwa1JaNHVSandYdXA1SHkyU1BGdnhlMnAzQVFBQUFMNVRjUW9BQUFCZVhhMzFoMG4ya3J6MUJtOXorWUIraUZhWHN5Uy95SEFQNUsrZUEyMHVyTkp4MmppaG9lMHY3KzhoUEVzTDNQU3ltOWF1czBxbnBaUzNMV2NBQUFEZ20yaDJBUUFBZUEybGxIOUpHMjMwTDIvd05qY3pUTkJsNk9hSlM1ZGhBRUVYVnVuR2NsME4zUkowa3VGQ043M0hHWjJsaFl4V1Nic0xBQUFBOEsyRVhRQUFBRjVUS2VVL1N5a25TZjVYa3ZOWC9ML3ZKN2sxMEs0L1RIc1FQNlI1V3FQTHJwWEVHdXhuSEkxQngwa2VEN1R0TytrYitIbTBodmY4eEZJR0FBQUF2b213Q3dBQXdCc3FwVnlVVWhaSi9pbkpmN3prLyszT1FMdjdPS3R2WUhoVk45S0NDRE9yaHpVYVMrRGxZWkxGQU52ZFRkOUEzVmxXSDNqWnE3VytieWtEQUFBQUx4SjJBUUFBV0pGU3lyK1dVdjRoeVdtUy8veU8vK25OdEdhVDNoWnBEOTZIZERQSlBhdUZUbVpwZ1plRGdmZGpxTEZoTjlNMzdQTjREY2Y1UzhzWUFBQUFlSkd3Q3dBQXdJcVZVazZUL0VOYTA4R0xaaGxtZk5GRjJnUDNJZDNMY0kwMmJLOVprbCtsTlFvTjVTTEozWUcyZmFmemNYNjU0dmU4Vm11OVpoa0RBQUFBVndtN0FBQUFyRUVwNVQ5TEtmK2MxcVp5ZnVVLzNja3c0M3VHYXBhNGRDL0RoZzFnNkRWNGttR2FsZWFkajNzZDdTNjNMRjhBQUFEZ0ttRVhBQUNBTlNxbG5KZFNGa24rT1dTRzlzQUFBQ0FBU1VSQlZNa1BNOHpEOWtkcG9adWhDTG93RmtPdnhjY0QzWXM5UTNicmFIYzVyTFh1V2I0QUFBREFKV0VYQUFDQURrb3BaMG4reHdDYlhpUTVHdkRRQlYwWW02SFg1QkF0UzdNa056dHU3L0VhM3ZQUTBnVUFBQUF1Q2JzQUFBQjBVR3M5VEhLdDgyWXZrandZOExBRlhSaXJJZGZtVVBmbHJTUzdIWS94ZU1YditVdkxGZ0FBQUxnazdBSUFBTkRISndOczgyR1NzNEdPVjlDRnNSdHlqVDdMZXRwUHZzK2RqdHQ2dE9MMzIxbUdCZ0VBQUFEeWxsTUFBQUN3WHJYVyswbjJPbS8yV1ZiZnJQQ3lEaVBvOHJLZUpqbFA4dldWWDE4Nkw2VXN2bU5kWGJ2eXk1MGs4K1huUDMzaDEzeTdlOHZYSWU2VlIwa08wcTl0SmN2dHpkUEdtNjNiMmZLOHJ2SnJ3Uzh6N0ZnMkFBQUFZQ1NLVXdBQUFMQSt0ZGFkSkg5TUN4LzBjcEhrYjVhdnZkM0k4d0FCejUybUJReStUZ3UwTEVvcDV4M1czMTVhdUdHZTVOMjBVVm83THNlZjNTOTNrNXdNc08xNWtzODZiM094UE40ZTlwUDhlc1h2K2Q1M2hjQUFBQUNBN1NEc0FnQUFzRWJMVnBmZUk0dytUbXQyNlUzUTVibEZXcWpsNzVNODdSRnNlWVUxdVpjV2V2bnA4blhQNVJvMDhISW55YzNPMjd5YlB1MHVTUXZ6ckxKbDZLaVVjdHVTQlFBQWdPMG03QUlBQUxBbUE3VzZQRXNMdS9TMm4vWlFlN2JGbC94Smt0K21oVnRPSjdSTzUybWhsMXZaN3RGSFowbCtrZjZOU0xPMDlwT2U0NHhPbHNmYXcwR1NYNjN3L2M2VHZEMm1BQmtBQUFEUTMxODRCUUFBQUd2elVmcVBMM280d0hIdVpudURMaytTM0U3eVgwc3BINVJTanFZVWRFbVNVc3FpbFBKNUtlVzlKRytuYit2SG1GeXU0OTR1a2p6b3ZNMzl0Q2FtSHA2bEJZbFdaU2ZKKzc2OUFBQUF3SFlUZGdFQUFGaURaYXZMTHp0djlsRlcrMUQ1WmN6U1dodTJLZWh5bXVUVHRIYUp5NERMUnJSTWxGSk9yd1JmM2t2eWVWcVR4cmJZenpDanVCYnBQM3JzVnNkdGZUbmhmUWNBQUFCR1NOZ0ZBQUJnUFhxM3Vwd2tlVHpBY2Q1SkN3aHNnNmRKUGlpbHZGMUt1VCsxQnBkWHRXeDh1WnZXOW5JN0xlU3pEVzRrdVRuQWRoK203d2lsM2ZScmR6bGU4YkZkcTdYdStUWURBQUFBMjB2WUJRQUFZTVVHYW5VWlluelJ6ZlI3V0Q2a283UVdsK3VsbENmYnRwNUxLZWZMOXBxM2sxeFBDLzFzdWp0SjVwMjNlWmJXenRSVHI0YVVpNnkrdWViUWR4c0FBQURZWHNJdUFBQUFxOWU3MWVVNGJReEtUL08wUU1BbU8wb0x1ZHplOUJhWGwxVktlVnBLdVo3dENMME1NWjdyY2ZxT0l0dE52MUNQVVVZQUFBREF5Z2k3QUFBQXJOQUFyUzRYNmQvcU1rc0xBbXlxb3dpNWZLY3RDYjBNdGM0ZmRONWVyOURJeWZKalZmWnFyWE4zSXdBQUFHd25ZUmNBQUlEVjZ0M3E4bVZhNEtXbklSb3ZlbmlhNUxxUXk4dTdFbnE1bldRVHo5azgvY2ZsTE5LM3FXbWU2YmE3L05KZENBQUFBTnRKMkFVQUFHQzFlbzdXT0V0ckllbnBNUDBlalBkeW51UjJLZVY2S2VXcEpmenFTaWxIU2Q1TDh1bUczdE85MTN6dmRwY1BPMjNuV1ZZYnpudmYzUWNBQUFEYlNkZ0ZBQUJnUldxdGgwbjJPbTd5VWVkRDNFL2ZNRThQUjJramk0NnM0RGRUU2prdnBkeFA4blkyYjdUUnZmUnRNenBMY3R4eGV3ZEpkanRzNXlJdDhMSXFPN1ZXZ1JjQUFBRFlRc0l1QUFBQXE5TnpwRWJ2aCtHenRBZittK0kwejBjV25WdTZxMU5LT1YyT05ycWIxcHF6Q1hZSFdQOFAwM2RFV2E4ZzIxY3JmcitmdStzQUFBQmcrd2k3QUFBQXJFQ3Q5VnI2ampycFBlYmtWbHF6eXlZNFN2S2VrVVhyVlVyNVBHMjAwYWFjNTRQbFJ5OFhTYjdzZkh3OTJtc1dhV0c5VmRIc0FnQUFBRnRJMkFVQUFHQTFlbzczV1N3L2Vwa251YmtCMStnOHlRZmFYUHE1MHZMeTZZWWNVdTl4Um8vVHI5MWxsdVJHcDIwWlpRUUFBQUM4RVdFWEFBQ0FOMVJyM1V0eTJIR1Rqem9mNGlhTUwxcWt0Yms4c1dMN0s2WGNUM0k5MHg5cjFIdWNWKzkybHc4N2JXZlZ4MlNVRVFBQUFHd1pZUmNBQUlBM2Q5aHhXNzFiWFE2VDdFNzgraHdsdVY1S09iVlVoN01jRy9WMjUvVzdEZ2ZwTzdLc1o3dkxicWRqTzB0eXNzTDN1K1lPQXdBQWdPMGk3QUlBQVBEbWVvNHc2dG5xc3R2NTJOYmhyckZGNDFGS09TK2x2SmNXUUpxeW51T01lcmU3L0t6VGRyNWE0WHZ0MVZybjdqQUFBQURZSHNJdUFBQUFiNkRXK242U3ZVNmI2OTNxTXVYeFJlZEpQaWlsZkc2VmprOHA1WGFTdXhNK2hOMGtOenR1cjJlN3k0MzBDZkk4Vy9INzNYSm5BUUFBd1BZUWRnRUFBSGd6UFIrd2Z0VnhXNzFIdGF6U2VkcllvaWVXNTNndGcwaTNKMzd2OXhyeGRaSGt1T094M2Vpd0RhT01BQUFBZ05jbTdBSUFBUENhYXEwN1NkN3Z0TG16OUh2WVBVdHlaNktYNVRMb3NyQkN4NitVY3BUa2crVjFtNktlN1VjOVJ4bDkyR2s3cXd6d3pXdXRlKzRxQUFBQTJBN0NMZ0FBQUsvdnNPTzJIblhjMXMzMGE2eFlwVVdTdHdWZHBtWFp3SE05MHd5OHpOT3ZBYWxuNEcwM3lYNkg3YXg2bE5FMWR4UUFBQUJzQjJFWEFBQ0ExOWRyaE5GRlZ2OVErTnZNMHEvVllaVVdhWTB1NTVibDlDd0RTcmVYYTMxcWVyWWc5V3gzK1ZtSGJad3RQMWJsNSs0bUFBQUEyQTV2T1FYd2FwYTF5RmMvTHIyYlpPZktyeGRKL3YzS3I1OG1TU25scWJNSUFMQXhmeTdzMWVod25INGhnRHRwZ1pjcDJZaWd5NVdmTlhaZVdGc3YvcXh4bXVSL3YzRDg1MGtXVXowSHRkWjNsc2R3TjhsbkUxdUQrMGx1cEUvcnlzbnlldmY0Mm5NanljTU8yM21XMWlhMUN0ZDhkd0lBQUlEdFVKd0MrSGExMW5uYVg1YTltOVhXVTUrbi9RWGwzeTlmbi9vWHFBQUFrL3V6NHYwa24zVGEzTjlrdGUwSDMyWTN5ZDlON0ZLY3B3VmRGaE5iUDFkLzF0akw2aDdTWC82c3NVank5ZkpuamRPUm40dDM4cWRqcytacGdaY3BPVnZlcHozY1NIS3YwN1krenZwYnBWWjl2ZDh6eWd3QUFBQTJuN0FMWEZGcjNVbnlmbHIxOGJYODZiK2VYTGRGV3Z2TGI3Vy9BQUJNNHMrT2Y4eWZOdjJ0eTdPMEI4NDkzRXQ3a0Q0Vmt3bTZEUHl6eHVtVm56V2VqT3k4dkJoMHVkUXowTEVxRDlLbjNTVkovbWY2dE44Y0w0OXJTc2Z6YVNubHZ1OVNBQUFBc05tRVhkaDZML3lsOC9zajJhM3pKRStTL0sxL2tRWUFNTW8vUTg2VC9HT256ZlZvVmtpbTJlb3k2Z2FIa2Y2c2tlWFBHbytHRHI1OFI5RGwwczIwc1ZwVDBiUGQ1VTVXTi9ybnUxd2srZThkdHJQS29OM1RVc3AxMzZrQUFBQmdzLzJGVThDMnFyWE9hNjFmSlBsamtpOHlycjk4M2tseW1PUWZhNjEvckxWK3RQeUxjZ0FBeHFIWG54M1AwaWZva2lTM0puWU5ibzgxNkhMbFo0MS9HK0hQR3Bmcjl6ZTExbitydFg1V2E5MGI0Qng5WDlBbFNSNm5YMVBLS3V5bVh6UFNsNTIyTTB0eTBHRTdYNi93dmE3NUZnVUFBQUNiVDlpRnJWTnJ2VlpyL1YzYXY4UTlUTi82OE5leGx6YS8vSSsxMXZ0RC9FVTBBQUIvNXVlZHR0TXI2Tkx6SWYwcWZGNUtPUnJoenhydnYvQ3p4dGp0SlBsbytiUEdGN1hXYTUzTzA4c0VYUzQ5U0J2NU9oVzlRbU5uSGMvTFR6cHNZN0hpTlhZdEFBQUF3RVlUZG1GclhBbTUvQzdUL0pkZU8waytTZnVMNk04MHZRQUFEUGJueXIwazgwNmI2OVhlTUtWV2w2ZWxsTHNqL0ZuamowbCtrK20yU2h3bStWMnQ5WGZMTVYzck9sZXZFblM1OUhGYXVHTUtlZ2JIdnVxMG5SN05MbWRKVGxiNGZsTzlEd0VBQUlDWEpPekN4cXUxN3RWYWY1UHBobHkreWVXL3ZyenZDZ01BZE5kckpNMUoranpnbjJVNnJTN25TVDRZMGM4YVZ3UDFleHV5dnErbGpWUDlZdFd0a3E4WmRFbVNpN1RBeTFUMENvODlXNTZiSGw4ajlqdHNaNVh0TGovMXJRb0FBQUEybTdBTEcyMFpCdm5IOUhzZzBkTk9razlxclg5VTBRd0EvNCs5dXdlUjVNelRSZis4ZzR5Qkk5Z2NXRGd5RmlhYmxYRThsZUI2WjBIWjFvNm5hczQ2MTFLMmNhMXJxTnRhYStsdWpyVld0NHkxcTlxNjE5aERsK0FhYzZ6T0JpMk1zZEFsR0dPTVhwUURZL1FCd2VaQ0g1QWhlSzhSVWVwU1RYOVVWVVpFUm1iK2Z0RDBqS1RLeVBoSHZGSHg4Y1QvaFVFTk5ZWFJVRjFkL202TGFuK3JsTElhd1hYR3BOWjZsTjBLMUY4MFR4TjZ1ZDlSemE0YmREbnpJc2svYlVudFBzb3czWjllWmJpcHp2NTJnR1Y4MitGbnVVWUdBQUNBSFNmc3drNnF0UjdVV3Arbm1mWm4xNmY3bWFacE4yNXFJd0NBL3M4ekp4bnVJZXBRRDdILzI1YVUvMEVwWlRHQ2ZlQXd5WGRwd2lDNzdpeGcvM3lkcVkwNkNMcWMrZWQwMi8yalQwTjFkL21YZ1pZelJIam50T094ZWhBQUFBQmdad203c0hOcXJYZlNkSFBadHh0YmQ5SzhlVG16RndBQTlHYW9jNjJocGlmNVRab3BTc2J1dEpSeWY4UFhHWk4yZXRRbjJmMUEvVVVIdVdhWGx3NkRMbWYrWWFDeDBVWE5QdHFoWThYSEE2elBxelFkZkxidGVBMEFBQUJzZ0xBTE8rUGN6ZWVIZTF5R2Fab3VML2Z0RVFBQXZSaHFDcU9odWpWc1ExZVhWWkpiRzc3V09NanVUbzk2RmZkcXJVOHYyMUd5aDZCTDBnUWkvbkZMNmpYVStCcXFDOVMyZFhmNXhLOHNBQUFBMkYzQ0x1eUU5dWJ6MDdqNWZPWmVyZldKYVkwQUFEbzNHMmc1UXp5OC9yajlNM1pmbFZLV0c3eldtS2NKdWt6dC9qK05nZS9lTjBWTVQwR1g4K1BqbXkybzFXOEdXczVRNGJnaHdpUGZidUh4R2dBQUFOZ0FZUmUyM3JtZ2kvbTRmKzR3VFpjWGdSY0FnSTZVVW00a3VabmtVYnJ0UUhEZVVOT1NiRU5YbDQxT1gxUnJmWmpreUo3L1p5WnBwaldhdjZWdWZRWmR6dnhUeGorZDBZY1pKdkF5MURIamI0WVk4eDErMXRUMU1BQUFBT3d1WVJlMjJybTNMTjNBZXJPRFhPS3RTd0FBTHErVXNpaWwzQzJsZkpya1YybW0yRGxPc3V4b0VkOE90Q3Avc3dYbHZydkJhNDJqSkhmczhlOTBWR3U5YzZGdVF3UmRrdVJsa3NkYlVLTy9IV2c1UTNTNitURDlkNE42MVc3YkxxK0pBUUFBZ0IwazdNTFdhb011M3JKOHYwbWFEaTl1OGdFQWRLeVVzaXFsbkpSU2JyZGRYMjRrdVoza0pNbnFtaDg3eEVQcjM2UjVjRDFteDZXVXhRYXVNeWExMXVkSjV2YndTM25ZQm9PR0RMcWMrZWNrTDBaZW40T0Jhdkx0Z092VHR5Njd1OHdNVVFBQUFOaE53aTVzSlVHWEt4TjRBUUFZUUNsbFdVbzVMcVhjS3FYOEtzbW5TUjRrV1Z6eUkxNmsyNjRHYi9OZlIxN0tWVGJRMWFXZDhzUVVxVmMzcjdVK3liQkJselAvdEFYMUdhS0wwamNEcmNzbkF5emozN2JzK3dJQUFBQWJJT3pDMWhGMHVUYUJGd0NBZ1pWU1Rrc3A5MHNwTjBzcEpjMlVSNC95OXM0RnB3TjhyUTh6L2ltTXZpcWxySVpjb0tETDJnNlQvUDBHbG5zNjBMaFp4MzhiWUJtdkJxckRFT09qeTI0OVUwTVRBQUFBZHBPd0MxdWxEV284Vklsck93dThUSlVDQUdCNDdaUkhkMHNwbnliNVZab3BqNDZUTE52LzVGOEcrQnBqRDdvczB3U0NobllVUVpkMS9TYWJtZjdwSDBkZWw0K1NmRHpBY29hWXl1akQ5Ti9CcDh2UWpqRU5BQUFBTzByWWhhM1JCalNlcGdsc2NIMlRKRS9hTjFjQkFOaVFVc3FxbmZMb2RpbmxScG9wajRib3pERDJLWXdlYktDcnkxR2F6aVNzNzRzMG9aY2h2VXp5MjVIWDVXOTcvdnhWa3Y5M29IWFpxdTR1dGRhWllRa0FBQUM3UjlpRnJkQUdNNTVFMEtVckIyMDlBUUFZajFjRExHUHNVeGd0U3luSEExOXIzTWxtdXBIc3NyL1A4QjAxSG0vQk5Walh4NHMvSmZsOWttL2FLZE4rbXliMDByZS9IbUFacGpJQ0FBQUEza25ZaFczeE1Ob1BkMjFXYTcydkRBQUFvekZFc0h2c1V4ZzlHSEpoYmNjSDA2VDI0NytuLytsdXpodDdkNWVQMTZ6SGorMDYvaUhKNzBvcC8xcEtlVkZLK2I2VTh1TzUvMjR4d0xvTWNXMyt2enI4cktuaENBQUFBTHRIMklYUnE3WE80MDNMdnR6VDBoa0FZQlRudkIrazZiclN0ekZQWWJRYXNxdExPMDJxYm9mOStUQk40R1ZJWSsvdWN0V3cyZmRwT3B6OGF5bmxtMUxLSDBvcEwwc3BQN3pqWjU0TnNCNGZEN0NNTHFkMCs4eHdCQUFBZ04wajdNS290VGVndlduWnJ5ZnRORkVBQUd6T1VPZGpZKzZXK05YQXl6dUthVkw3OW5HUy8zdkE1YjFNdHlHSnJuM3lubi8vS3NreXlXa3BaVkZLK1gwcDVVK2xsS3RNY2JiWWtXT0phWXdBQUFDQWR4SjJZZXpjZ083ZnBLMHpBQUNiUFNmcjIwR0c2UjV6WFkrR1dsQTduZWZNYmplSXY4dXdJYXN4ZDNlNTJObmxoeVIvU3ZMN0pOKzBVeE10U3ltcjZ5NmdsREpVMktmdjdpNnYyajlkbUJxR0FBQUFzSHVFWFJpdGR2cWltVW9NNHJEV2VxZ01BTUNJemdVUGFxMzdOTVhNRUNHVU1YZDFPVjduQWY4Vjk2MXBrbnRHMmFEK1BzTUZyVTdUZEhnWnE0TWtmMGp5dTFMSzcwb3BMMG9wMzVkU2Z1eHdHWXNCMXVNL0Q3Q01GeDJPK3dQREVBQUFBSGFMc0F1ajFFNnJZL3FpWVQwMG5SRUFNSkp6d1htU3A5bXZEbjlEck9zbkkxNy9JYnR4NkdvNHZJL1NkSGdaeXY4WWNTMStYVXA1V1VyNW9jZGxQQnRnUFQ0ZVlCbGRUbVhrV2hjQUFBQjJqTEFMWTNVdmJrWU5iWnJrampJQUFKdFVhNzJUUFp2S3N0WTZWTWVMc1hZMldKWlNGZ1BWZWg3ZEl6ZmxpelNobHlIOGRzUjFHR0wvRzJJcW95R09KLzk3eStvT0FBQUFERWpZaGRGcDI0b0xYV3pHdmJiK0FBQ2JPQTg4eW41Mjk5djNLWXkrR21qLzBqMXk4LzUrb09XOFN2TE5TR3R3TUVCSHpkT0IxdVdqTFZxUHZ6RDhBQUFBWUxjSXV6Qkc5NVJBL1FHQS9WRnJuZFJhbnllWjcya0o5ajNzY2pMUWN1NUU5OGhOT3hod1gveWZJNjlEYjBvcHl5U3JBZGFqNzdETHF6MDVCZ0lBQUFEWElPekNxTFJkUmVZcXNWRnozVjBBZ0FIUC93NlNQTTErUDRnY0l1enl5VWpYL2JSOU1OLzNmalpKOHFVUk53cGZETFNjYjlKdFdLSkxzeUhHMWdETDZQdTQvY0p3QVFBQUFONUcySVd4MFZYRWRnQUE5a1N0ZFJaQmwyU1liaU1majNUZEh3KzBIRjFkeG1QSTdpNWpuY3Jvc3dHV01VVFk1VDhOc0l5WEhYM096TkFEQUFDQTNTTHN3bWpvNmpJcXVyc0FBSDJmKzgzVEJGMG1lMTZIWHc2d21JOHpUUGVZNnpnWm9NYTZ1b3pQVU4xZHZoM3ArZzhSOXZualFNZVd2cjAwWEFBQUFJQTNFWFpoVE9aS1lIc0FBTHV2MXZvd3laRktKRW1HQ0x0OE5OSjFIMlFLby9hOFZsZVhjUm1xdTh0WU83dE1Cbmk1WUlqT0xrTWNXenFiaXFydEpnWUFBQURzQ0dFWHh1UUxKUmdWYjc4Q0FKMnF0VTVxclUvU1RDbERZNStuTUZvNHI5MXJmenZBTWw1bG1OREhkZlFkOXRtVnNNdS9HU29BQUFEQW13aTdNQXExMXNNa1U1VVlsVWs3dlFBQVFCZm5lNU0wMHhZZHFzYlBmRERBTWo0WjZicC83VHBqci8wbXcweXZ0WmRUR1pWU1ZrbFdBNnpIUjF1MHp6a1dBQUFBd0E0UmRtRXNQbGNDMndVQTJFMjExb01rMzJXWWFVdTJ6UkFQKzBmNU1McVVzbkErdS9kK004QXl4dHJaNVpNZFdmZVB0bWdkcG9ZY0FBQUE3QTVoRjhiQ0c3NGozUzd0VzlnQUFOZlNkb3A3bW1HbTY5bEdRM1IyR1dQWVpUSEF2amRKTXJlTGpkb1FVeG1OTmV3eUhXQVpPcnNBQUFBQU8wdlloWTFyVzR0NytERmVna2dBd0hYUDgrNGtPWEt1OTA1OWQzWVphemVkWjg1alNmSnhoZ2xMakRId01zVFlIR0lLcDc2MzM4c09QK3NUUXc0QUFBQjJoN0FMWS9DWkV0ZytBTUJ1cWJVZUpYbW9FdStzMFJCZFhUNGM2ZW9QRVQ0d2hkRjIrSnNCbHZIdFNJOEIwNTRYc2RxQi9hUExzSXZnSlFBQUFPd1FZUmZHd0J1WHRnOEFzQ05xclpOYTYvT1lQdVl5aGdpaWZEelNkUjhpN0RLemkyMkYvenJBTWw2TWROMm5PekRPZEVzQkFBQUFOa0xZaFkxcTMyU2Jxc1NvVFdxdEI4b0FBRnppM080Z3lmT01kK3FjZmZTZlJ2aWRWcVdVWmMvNzRpeTZPR3lMSVk0WEwwZTY3cTZGaDkxK2pna0FBQUN3UTRSZDJEUVBRcmJEVEFrQWdIZHB3d1ZQNCtIdFZReng0SFdNblYxMGRXSG82OEs5N094U1NsbnN5UDd4Y2t2Mk13QUFBR0JBd2k1czJtZEtZRHNCQU51dDFqcFBFM1R4MWp5WE1VVFl4Zm5yZGpuWWtmM3VxdjdDdGdNQUFBQzRuZytVZ0Exelk4eDJBZ0MyV0szMUtNbGNKWnpIWGNGL09IL2xnazhHV01ZcjR4TUFBQUJnZCtqc3dxYTV1YmNkcGtvQUFKeFhhNTNVV3A5RTBHVWQrOW9KWjlIenZqbU5Ma1BiWm9qcHR2N05lTnRhTHd3UkFBQUE0Q0poRnphbTFqcUptOURidEwxbXFnQUF0T2NGMHpUVEZoMnF4cWg5dUtmckxWQy9uZnRxMy91cnppN2JlNno1M3gzKy9uSjhBQUFBZ0IwaDdNSW11Y20wWFFTVEFJQ3pCNFhQbmN0dGhZL0grS1ZLS1F2WEdXeGdmeDFqZDVDSmJhZm1BQUFBd1BVSXU3Qkpiakp0Rnc4TkFHRFAxVnJuYVRxNk9JOWp6SDZ0QkZ2cFl5WG94VW9KQUFBQWdGMGs3TUltQ1U4QUFHeUpXdXY5SkVjUmRPblNQdFp5T2NBeXBuYXRyZFQzVkRndjlyU3UzOXExQUFBQWdGMGs3QUpjMWlkS0FBRDdxZFo2bE9TZVN0Q0I1UURMRU1qYVR2KzU1ODkvTmRManE1ZEFBQUFBQUs3aEF5VUFMc2xEQXdEWU03WFdTWnBwaXp5TTNVNEgxcHN0OHBIckxON2lsUklBQUFBQUYrbnN3aWJwRkFJQU1GSnR0NEhuRVJ3QVlMTmVLQUVBQUFCd2tiQUxtK1FOTmdDQUVhcTF6dEowZEptcUJyQkRYaW9CQUFBQXdHNFFkZ0VBQUg1U2E1Mm5DYm9JSnRPSGxSS3dRY0l1QUFBQUFEdmlBeVVBQUFDU3BOWjZsR1N1RXZUb1d5VmdnMzZmOFFXdUJNQUFBQUFBcmtIWUJRQUE5bHl0ZFpMa1NaS1phZ3lubExMb2VidmFudkJ6LzFCS1dTb0RBQUFBd1BZempSR2I1QTAyQUlBTnE3Vk8wMHhiTkZNTkJ2Q0pFZ0FBQUFBQTZ4SjJZWk8wTUFjQTJLQmE2MEdTNTBrT1ZJT0JUSlNBRGZwQkNRQUFBQUIyZzdBTGNGbExKUUNBM1ZGcm5hY0p1Z2dmQVB0QzJBVUFBQUJnUndpN0FKZjFSeVVBZ04xUWE3MmY1RWdsZHQ3S2VnTTdRUGN4QUFBQTRNOEl1N0JKQ3lVQUFCaE9yWFZTYXoxS2NrODE5c0twOVdhTG1PWVdBQUFBZ0V2N1FBbllJRzljYnBlRkVnREE5cXExVHBJOGpUZmsyU3o3SDV2MG94SUFBQUFBN0FhZFhkaVlVb28zTHJlTGNCSUFiS2xhNjBHUzV4RTBZUE1tQXl6am1USnZwUmNEWElPKzJzTzZmbWJYQWdBQUFIYVJzQXVidGxTQzdTQ2NCQURicWRaNm1LYWp5MVExR01rKzJYZmdSVWg3TzcxU0F0c09BQUFBNExLRVhkZzBBWXJ0c0ZBQ0FOZyt0ZFo1a2ljWnBwc0dJMU5LR2VzNVhOOGRobHhqdURaOEU0R00vcnpZb3UrNnRMa0FBQUJnTndpN3NHbmZLc0ZXOE1BQUFMWk1yZlVveVpGS01FSjloNitjdTI2Zmx3TXM0MGZqYld2OWRWY2ZWRXBaR200QUFBQ3dHNFJkMkxTRkVteUZaMG9BQU51aDFqcXB0VDVOTWxjTk1zNHBmWHJ0N0ZKS1dVWDNobTB6UkVCcFh6dTdIT3pBT254b2lBQUFBQUFYQ2J1d1VTTnVyYzdQMlU0QXNBVnFyZE1rVDVQTVZJUFdHTHVjL05yNUt4Zjgyd0RMK0VHWmUyRjZLQUFBQUdBamhGMFlnNFVTak5wcCszWXNBREJpdGRhREpNK3pHMi94czl1RzJFZE5sN3BsMXh3RExHUHZRaGx0QUxKdkwreStBQUFBd0NZSXV6QUdYeXZCcUMyVUFBREdyZFk2VHhOMG1hZ0dGNHh4T3NvaHdpNG5OdjNXZUpWaEFoUDcySUZrdWlQcjhiRnJXd0FBQU9BaVlSZkd3STNvY1h1c0JBQXdYclhXaDBtT1ZJSXQyMjk3RGJ5VVVwWkpsaXE5RmI0WllCay9sRkorVk9wZXZCeGdHUjhxTXdBQUFIQ1JzQXNiMTk2SVBsV0pVVnFXVW13YkFCaWhXdXVrMW5xVTVJNXE4QTZMa1g0djNWMDRNOFNVVTYvMnRMYXpBWmJ4dit6Q0FBQUF3Q1lJdXpBV3VvZllMZ0RBSmRWYUowbWVKcG1yQnUreEd1bjMrc3k1TEswaE9ydThVdWF0OVhHSG4rVkZEZ0FBQU5naHdpNk1oYmN1eCtsWUNRQmdYTnJwWDc3TE1KMHgySElqN3RJM0cyamRsL2FDVWZ0dGhnbWlyUGEwdmtPRXl2byt4blE1aGRGL0dISUFBQUN3TzRSZEdJVjJLaU9CbDNGWnROc0ZBQmlKV3V0aG1vNHVFOVhnQ3NZWWVKbldXcWNETE1jMXhyajl5MERYbS9zYWR0bUYzeFVmR2lZQUFBREFtd2k3TUNaZktZSHRBUUM4V2EzMVRwSW5FWFRoNnBZai9WNHo1N1I3N1dXR21jSm90Y2MxSHFJRDJJdWVQNy9MYVl3V2hoMEFBQURzRG1FWFJxT1Vzb2cyNDJPeExLVjRDeFlBUnFMV2VwVGtvVXB3VGQrTzlIdjFQc1ZLMjZsd1lSY1lwZjg1MEhLKzM5UGZHOU9CRnZYS3Jnd0FBQUJzZ3JBTFkvTkFDV3dIQUtCUmE1M1VXcDhtbWFzR2ExaU05SHNkT3JmZGEvODgwSEwydGJQTGRJQmx2QmhnR1o5MCtGbEx3dzRBQUFCMmg3QUxvMUpLT1k0YlVKdTJiTGNEQUxCQnRkYURKRTh6ekZRdjdMYlRrWDZ2U2J1ZjkzMk5zWENOTVRxL3pUQWRRWDRvcGV4cjU1RWhmbmRzVlczYlRrOEFBQURBamhCMllZeThlYmxaZDVVQUFEYnJYTkRsUURWWVZ5bGxsZkdHUGI1d2piR1hIZyswbk8vM3VNYS9IbUFaUTB5UjF0WHZ3WlZoQndBQUFMdEYySVhSYWJ1S0xGUmlJeGFsbEJObEFJRE5xYlhPa3p4UE1sRU51anpQRytuM0dtUXFJeDBrUitXM1NWNE90S3lYZTF6bkEvWDltVk5ERHdBQUFIYUxzQXRqNWMzTHpkRFZCUUEycU5iNk1NbVJTdENEYjBmNnZhWkRUR1hVdW0wMzJMaFhHYTZyeXo1UFlaVHNSdGlseTNYUTJRVUFBQUIyakxBTG8xUktXU1E1Vm9sQlBTcWxlTnNOQURhZzFqcXB0UjRsdWFNYTlHUXg0dS8yNVlEWEdBdTd3a2I5and6WERXUnZwekNxdGM0R1d0U0xuai8vd3c0LzYxdkREd0FBQUhhTHNBdGpkamZldmhyS01ycnBBTUJHMUZvblNaNG1tYXNHZldsRHpXTTl0ejVzeDhGUTF4aHN4c3NrL3p6Zzh2NjB4N1VlcXF0TDM1MXpQdTd3czl4YkFBQUFnQjBqN01Kb2xWSlcwV3A4S0xmYmVnTUFBMnFuYi9rdXd6eVloTVZJdjlja3llRkExeGluRWZMZWxIOUsvK0dJTTZ0U3lnOTdYT3RQQmxqR0VCMTYvcnJEejlMRkZBQUFBSGFNc0F1alZrbzVpZW1NK3ZhZ2Jla09BQXlvMWpwUDA5RmxvaG9NNU5tSXY5dVhBeTdyVVpyT2hnem5tL2JQVUY3dWViMkhDRkFPTVMzUVJ4MStsakVQQUFBQU8wYlloVzF3Tjk3QzZzdWlsSEpmR1FCZ1dMWFdPMG1PSXVqQ3NFNUcvTjBPYXEyeklSYlVkalM4WlhjWXpLc2svempnOG40b3BleHQyS1dkRW15SXNNdUxBWmJ4Y1lmamZta29BZ0FBd0c0UmRtSDB6azFuWkpxZGJybkpEd0FiVUdzOVN2SlFKZGpBZWZVeTQrNXU4TVdBdFRDZDBYRCtJY05OWDVUbzZqSWJhRGw5aDEwKzd2Q3pGb1loQUFBQTdCNWhGN1pDZXpQNnRrcDBacFhrWmhza0FnQUdVR3VkMUZxZko1bXJCaHMwNXU0dTgxcnJkTUJyalB2eEVMeHZqek5zbDg0ZmsveHB6MnYrMlFETGVKWCtRMFdtTUFJQUFBRGVTZGlGclZGS09ZbkFTMWR1dHdFaUFHQUF0ZGFESkU4enpOUVM4QzVmai96NzNSdDRlYmZpUVhoZlRwTWNEN3pNUDVWU2Z0enp1czhHV01aV1RXR1U1SStHSXdBQUFPd2VZUmUyU2lubE9NUGZNTjAxdDl2Z0VBQXdnRnJyTElJdWpPZDhlcEZ4VHc4NmRIZVhzNms5ZFR6czFvczAweGNOYWUrN3V0UmFKd1A5cnZsMmdHVjgwdUZuZWRFREFBQUFkcEN3QzF1bmxISTdBaS9YZGJzTkRBRUFBNmkxenRNRVhTYXF3WWlNUGZnOGFIY1hVNloyN2xXU2Yyei9IcEt1THNOMGRVbUc2ZXpTNVRSR3dpNEFBQUN3ZzRSZDJFb0NMOWNpNkFJQUE2cTFQa3h5cEJLTTBOaW5NaHEwdTB0N2ZXSEsxRzY4U25JM3c0UWh6dHY3cmk2dHp3WmFUdC9oa1EvVFlkaWxsTEswYXdBQUFNRHVFWFpoYXdtOFhJbWdDd0FNcE5ZNnFiVStTWEpITlJqcGVmUkorc3hidmdBQUlBQkpSRUZVeGo5dHo4TU4xT1U0QWkvcjJGVFFKZEhWNWN6aEFNdDRrZjY3OW5RNUZkUENiZ0VBQUFDN1NkaUZyZFlHWHU2cXhGdXRrdHdVZEFHQVlkUmFKMm1tTFRwVURVWnU3T2VIaDdYV2c2RVhLdkJ5YlpzTXV2d1FYVjNTZGtPYURyQ29JYVlFK25qTHZpOEFBQUN3QWNJdWJMMVN5cU0wTjZSWHF2RXp5elJCbDRWU0FFRC8yZ2Z6MzZYYk45S2hMNCszNER4Mkl3K3BCVjZ1YkpOQmx5UjVvYXRMa3VGQ2x0OE9zSXhQdHV6N0FnQUFBQnNnN01KT2FHOUkzMHh6WTV6a0pNbW5tM3BBQUFEN3B0WTZUOVBSWmFJYWJNbjU4K2tJejUxWFNlNldVbTVzT3JCOUx2QWlVUDl1bXc2NnJFb3AzOXNNU1pJdkJscU96aTRBQUFEQUtBaTdzRFBhRy9hZnBnbDY3TE83cFpSYnBSUTM1Z0ZnQUxYV08wbU9JdWpDOXZscVJOL2xVWkliYmRmR3NWeGZIS2NKMUR1dmZyTVhTZjdQYkM3b2tpUi9zQmwrbWtMdllLQnQvcXJuWlh5YzVNT083eE1BQUFBQU8walloWjFTU2xtVlVtNWxQOS9DUEUzVHplV1JQUUVBaGxGclBVcnlVQ1hZVXNjaitBNkw5aHoyN2hqRDJ1MkQ4aHZSSGVLaTM2YnA2UEpxZzk5aFdVcjV3YVpJTXR3VVJ2OWZrdCtsQ1JsOW42U1A2YU82RE8wczdCb0FBQUN3dTRSZDJFbnRXNWo3MHVWbGxlUkJLY1cwUlFBd2tGcnJwTmI2UE1sY05kamljK1pWTmhkNFdTYTVWVXE1T2ZaejJEWlEvMm1hN2pQNzdsV1NmMnovYkRMbzhxcVVzclE1ZnZMNVFNdDVWa3I1b1pUeXNwVHkrMUxLTjBuK3RSM1BYWVhWL3JyRDcrdjZHQUFBQUhaWVVRSjJYYTMxTU0wYjE5TWRYTDJUTk5NV0xXMXBBQmpzM09JZ3laTWRQYmNZbTBVcDVhWXk5TDQvUHg5d2thc2tYNVZTN205cHZXWnBwaTNieC9IL0lzay9KSGs1Z3UveXI2V1VWMGJ3VDFNWS9mc1F5eXFsbEV0OG43OU1NNjNmSk5lYmp1ai9TZkpSUjEvNVZpbmx4RjRDQUFBQXUwbG5GM1plS2VXa2xISWpUWnZ0WFpuYWFKSGtaaW5sbHFBTEFBeW5mZEQ5TklJdTdNNjU4bW1HbStyak9NMlVSZmUzdUY2TE5CMGs5Nm5MeTZza2o1UDhYeGxIME9XRm9NdlBERFdGMGNrbHg4ajNwWlFYcFpSL1RmSk5taW1QWGlhNXpKUlRINlc3b0V1aXN3c0FBQURzTkdFWDlrWXA1VkdTRzBrZVpIdERMNHMwSVplYjdZMTJBR0FndGRaNW1xRExSRFhZTVk4SE9vZTl2UXRCN1haYW83dEpibWIzSDZaL2t5YmtjanlTNy9OOUtlVlBodXpQZkRuUWNyNit4bGo1c1ozeTZBK2xsTjhsK1YyYURrSGZKL254RFQ5eTBPSDNYWG94QkFBQUFIYWJhWXpZVyswRHF5L1Q3UTIxdmh5bmFmZnV6VFFBMk55NXc5TWtNNVVZbEdtTWh0dS92MHYzSFl1V1NSNlVVbzUzdEdZZkpQay8wblRXK0NMZGRxVFl0QmRKL2luakN2UDhrR2I2b2grTjJKLzJ3V21TN3daYTNJMnV3eVB0RkV6bi8vejNKSC9UMVRWMEtlVzJ2UVFBQUFCMjF3ZEt3TDVxYjdvZjExb1Awb1JlRGpPdU43VlBrM3lWNUtTVXNyTEZBQURvMFlNa1J4MS8zcU1kUDQvOXF5Uy9UUExiTkIxUS9pN0ozMmE3UXk4djAzVDYrZTBJdjl2dkJWMyt6SHlvYTlNK3VxUzB4NGRWOGxONHJNc1hVWjdaUFFBQUFHQzM2ZXdDNTlSYUQ1TjhsaWI0TXQzQVYxaWthUTk5b3VVeUFJenVQRUZubHcyY0crbnNNdGorUFVuVElXTGQ4UGRKa3J1N2ZpNWJhLzFsbXE0dWIzcUI1RGZadms0dnAybENMbVB0SlBtSFVzcExJL1hQOXNNK09qSzl5ZDEyV3VBKzErVWd5Zk1PUC9KVG5WRUJBQUJndCtuc0F1ZVVVazdTM3FCdlcwTFAwb1JmRHRMOWRFZXJORGVUbjZWNWtMT3dCUUFBMk5CNThLclcrbFdTZTlmOGlOTTBEOFQzNVp4MitvN3I2ZCsyZnc3U2RIcjV6VWpYNFZYN1BmOUhtbzR1WS9VblFaYy8xNzZvTVIxb2NTY0RMR1BXNWJXMm9Bc0FBQURzUHAxZDRBcmF0ODBtZVgwajdwTmM3dTNYMHlUL2tXVFovamsxTlJFQWJOMTVnTTR1dzlQWlpkaDkvRHJkWFZacFFpN0hlMWFucXdUaFAwenlOMG4rYS92M0pyMUtNK1hTdjdSL2o5M0xVc29mak00MzdvZFAwblFrN2R0cEtlWFRMZnNkZTF4S3VXMHZBUUFBZ04ybXN3dGN3Ym0zd3hhcUFRREFqcDNyWHJXN3k2TWtEL1l3eFAzeEZmLzdzdzRxdjIzLy85K2tDYzBmWE9PenJ1TTB5YmRwd2kwdnRxak9yN2JzK3c2bTdVSjZPTkRpSGcrd1B1ZGZLT25DTTNzSkFBQUE3RDVoRndBQUFKSWtwWlQ3dGRZdjh1N3BVUlpKYnBkU2x2dFduMXJyUjJrNnRhemptL3k4cThwWjZPVS90MzkvMVA2NXFoZHBBaUxmcHBtVzZFVzJOeXp5S2sxSGtSK055amVhRDdpc0lhWXc2anE0czdDTEFBQUF3TzRUZGdFQUFPQzhCMG1PM3ZEUGwybENMb3Q5TEVxdDlZUDAwNG5sdFAzekp1K2JMbWtYdTU4SXVyemZsd010NTNTZ1VOdG5IWDdXY2grRGVBQUFBTENQaEYwQUFBRDRTU25sdU5aNkw2Kzd1NnlTZkZWS3ViL25wZm1yRFZ4RG4rNVpqUVZkM3FQV09rOHlHV2h4andkYVRwZWRYVTdzSlFBQUFMQWZmcUVFQUFBQVhIQzcvZnM0eVkxOUQ3clVXbitaZDAvdHhQb0VYUzdueXdHWGRUekEyRHBNdCtHZFozWVJBQUFBMkE4NnV3QUFBUEF6cFpSRnJmV0c2VUIrOHJFUzlFclE1UkpxcmJPOGYycXJycHlVVWxZRExPZnpqbzlkT3JzQUFBREFuaEIyQVFBQTRNOEl1alJxclpNa2Y2a1N2VmtsK2IyZ3k2WGNHM0JacGpBQ0FBQUFSazNZQlFBQUFON3V2eWhCYjE2V1V2NmdETy9YZG5XWkRiUzQ1UkFkVW5xWXd1aHJld29BQUFEc0QyRVhBQUFBZUlOYTYxOGwrYVZLOU9KRktlVlB5bkJwWHc2NHJLRzZ1bnplOGVjdDdDWUFBQUN3UDRSZEFBQUE0SUphNndkSnBpclJ1Ui9UVEZ1MFVvcEw3NHZUZER2ZHovc2NEN1NjTHRmcDFOUnJBQUFBc0YrRVhRQUFBT0RQVFYwemQrNVZtcURMRDBweEpROEhYTmJKRUtHUkhxWXdlbXczQVFBQWdQM2l4aDBBQUFDY1UydjlaWksvVW9sTy9hbVU4a0lacnJ3dnpqSnNWNWV2QmxwTzExTVluZGhiQUFBQVlMOEl1d0FBQU1EUC9SY2w2TXdQU2Y1ZzJxSnJ1emZnc3BhbGxFWGZDNm0xVHBMTU8veElVeGdCQUFEQUhoSjJBUUFBZ0ZhdDlTL1Q3ZlFxKyt4bGtoZWxsQitWNGxyNzRpekpiTUJGUGhob09WMTNxakdGRVFBQUFPd2hZUmNBQUFCNDdXTWxXSnR1THQwWXNxdkxLc05OQmZSbHg1OW5DaU1BQUFEWVE4SXVBQUFBa0tUV09rM3lTNVZZeXpMSm4zUnpXWHRmbkdmWXJpNWZEUkZPYXNmWVFZY2ZhUW9qQUFBQTJGUENMZ0FBQU5CWXRYOU1ZM1IxMzZlWnN1Z0hwVmhQclhXU1lidTZKTW1qZ1piVGRWY1hVeGdCQUFEQW5oSjJBUUFBZ0NSdFo0dlRXdXRIU2FiUjVlVXlWa21XcGl6cTFOQmhxK01CdDkrODQ4OHpoUkVBQUFEc3FWOG9BUUFBQUx4V1NubFpTdmxka2o4azBhbmt6VlpwcHBBNUZYVHBmUDliSnZrMHlZTzJ6bjE3TU1SNnRWTXpkUm5rV1pqQ0NBQUFBUGFYc0FzQUFBQzh3WVhReXlzVlNTTGtNdFMrdHlxbDNFOFRldW16ZThueGdJR1JMenIrUEZNWUFRQUF3QjRyU2dBQUFPOVhhMzJhWktZU2cxcVVVbTRxQXlNNkRreVNmTlQrMlNjL0p2ayt6WFJGT3Qxc1p0K2JKWG1ZNUtEamo3NHhSTmlsMWpwTjhsMkhIN2xxdjd2QUZRQUFBT3lwRDVRQUFBQUEzcTk5c0w2cXRTN3pPdlR5eXgxZTVWZEovcFRrKzFMS2ovYUFqZTU3aXlTZnRsTUJQVXczMHdFTjJkWGxYc2VmZHlMb0FnQUFBUHROWnhjQUFMZ0VuVjAyUW1jWHR1SFk4R0dhME10ZlpqZUNMejhrZVpua3BTNHVvOTNuSmtudVpQMEF5VkJkWFNacHVycE1PdnpZbTIwQUNBQUFBTmhUT3JzQUFBREFOWlZTWGlWNWtlVEZ1ZURMSk1tSFc3UWFxelRURkgwdjRMSVYrOXdxeWYxYTYzR1NvMXd2aURsa1Y1Yzc2VGJvc2hSMEFRQUFBSVJkQUFBQW9BUG5naStwdGY0eXpRUCtzK0RMbU1JdnF6UlRGSzJTckV4UnRMWDcyekxKelZyckxFM29aWHFGSDM4dzRGZjlvdVBQKzhyV0J3QUFBSVJkQUFBQW9HTnRoNVNYN1ovVVdqOUlFM2lacEpudTZDd00wN2RWbXFtSlhpVjUxWFlGWWJmMnRVV1NHN1hXczZtTjNyZGZQUmlxcTB1dGRaNnJoWEF1NDloV0J3QUFBSW9TQUFEQSs5VmFuK1o2VTBWd2ZZdFN5azFsWU1lUExXZkJsN013VFBJNkRITlpyNUtjZFdjNUM3TzgwckZsTC9lblNaS0hTZVp2K1U5V1NXNE1GWHFxdFg2WGJzTXV4NldVMjdZMEFBQUFvTE1MQUFBQWJFamJBZWFIOXY5K3J5S3N1VCt0a3R5dXRYNlZKdlF5dS9DZmZEVmcwR1dXN3J1NlBMYVZBUUFBZ0NUNWhSSUFBQUFBN0k1U3ltbmJHZXRXa21YN2o1ZWxsUHNEZm8xN0hYL2VhVHRsRXdBQUFJRE9MZ0FBQUFDN3FKUnlrdVNrMW5vL3llbFF5MjI3dXN3Ni90aXZiRkVBQUFEZ2pMQUxBQUFBd0E0YnVLTkwwbjFYbDFVcDVkaVdCQUFBQU02WXhnZ0FBQUNBVHVqcUFnQUFBQXhCMkFVQUFBQ0FydHpyNFRNZktTc0FBQUJ3bnJBTEFBQUFBR3ZycWF2TGNTbGxwYm9BQUFEQWVSOG9BUUJjWFhzai84eEJrc21GLytTempoZTVUUExIQy85c2NmN2ZsMUtXdGd3QUFCdlVSMWVYQjhvS0FBQUFYQ1RzQWdEbjFGcW5TYzcvK1lzMFlaYWsrN2RVMTNYdnduYy8rNStuU1ZidG4yL2J2MCtUckVvcHA3WXlBQUE5bkVmUDBrOVhsNlhxQWdBQUFCY0p1d0N3ZDJxdGt6UUJsb01rdjI3L25yWi9kc0hCdWY5OWVHSGRrOWZobDJXYWJqR0w2QXdEQU1CNit1anE4bGhaQVFBQWdEY1JkZ0ZncDlWYXowSXRuK1Ixd0dXeTUyV1o1T2R2M2Q1cmE1VzB3WmMwSFdGT1N5a0xleEVBQU84NTU1Nm4rNjR1QytlaUFBQUF3TnNJdXdDd005b3BpR1o1SFd5WnFjcVZ6UzdVTkdtNndKd21lWlltQUdNcUpBQUF6dXVqcThzRFpRVUFBQURlUnRnRmdLM1ZkbTJaSmZtcy9YdWlLcjA0NjRnemIrdStTdE1CNWxtYU4yNkZYd0FBOXZlYy9INjZudzVVVnhjQUFBRGduWVJkQU5nYTV6cTNmQjdobGsyYUpEbHMvNXlGWDA3eU92eXlWQ0lBZ0wwNFA1OGsrYktIajliVkJZQk4vNDZicGdsenp0Sk05N3dVeEFRQUdCZGhGOFo4UVhFUUQ3S0h0TktkZ1pFZUMyWnB3aTJINmY2TlVib3hTZFAxWmQ1dXM5TTBuVjhlTzY0QU1MTHppa21hYm1VTVp5a0l1OVB1OVhEZHZyR3VMaDBjSTA1TEtTdTdCY0JXbnk4ZXRyL2ZEdDd3Nzg1ZTlybnJlTThlajVIWmRYOVdZQXlBcmhVbFlNUW5UVS9USk9jWnhxS1VjbE1aR01uNFA4enJnSXZRMjNaYnB1MzZVa281VVk2OUdjUDMwOXdjQkRidlFTbmx2akw4ZEh5YUpYbXFFdlpCT2hsUEIwbWU5L0RSTnpjWWRsbjNHSEhUUXh5QXJmMjlOa2x5bExhTDdYdXNrdHgybjRNOUhTdjF1ajliU3ZGTUVvQk8vVUlKQUJqSmhkSmhyZlZKZThIMEpFMlhFRUdYN1RkTmNpZkprMXJydjlkYUg3WVBSZ0FBMkc0UGUvak1oYkFJbDdoMm5Lb0NHUGM5ZUpMTEJWMlM1bjdWay9abExRQUFOa1RZQllDTnFiWE9hcTFIdGRaL3o5VnVLckNkSm1tQ0w4OXJyZC9WV3UrN1VRMEFzSlhuOFlmcHB4UHJYZFhsUGZ2ZS9UU2RGNEQ5K3AzenZPZGwzTC9tNzdVajl6VUFBRFpIMkFXQVFkVmFwMjNJNGJzMExjTG4wY0ZsSDAzVFRIUHpYYTMxYWExMXJpUUFBRnR4UGo5SlAxMWRqa3NwcHlyTTIvYTdXdXRSVEpVSit6YjI3NlI1T1dyUzR6SW1TYjY4NW85UEhKY0FBRFpIMkFXQVFaeE5VNVRrdS9aR3dGUlZhTTNTdkEzMTc3cTlBQUNNWGwvbjhnK1VscmRjUzA3eStrVUpZSC9HL2xINkNWZGVOTTk2WVJwZGlnRUFOa1RZQllEZXRHL2ZuWFZ4TVUwUjczUDJSdFIzN2ZSV015VUJBQmpWK2YxQm1ta3B1L2FvbExKVVlkNnl6ejFQY3FBYXNEZmpmbEpySFRMZzl0bWFQejl4L3dJQVlET0VYUURvWER0VjBWRjBjZUg2NWttZXRsTWNDVWtCQUl6RFVRK2Z1WXF1THJ6NXV2SXdUVWNYMTVPd1ArUCtvQjMzc3dFWDI4VVVTUUo1QUFBYklPd0NRR2RxcmJOeklaZDVlcHhUbWIweFMvS2sxdnBkclhXdUhBQUFHenZYdjVOK0h1WjlWVXBacVRCdjJOK2V1S2FFdlJyM3N6UkJsMjBNampoV0FRQnNnTEFMQUd0clF5NVBZeDUxK2pOTmNpVDBBZ0N3a2ZQOWFacU9qVjFibGxMdXF6QVg5cmVqSkE5VkF2WnEzTS9UM0ZQYTF0RElxYTBJQURBOFlSY0FydTFDeUdXbUlneGdtdGVoRi9zY0FNQXdqdExQQThpN1NzdTU2OHRKZTMwNVZ3M1lxN0gvTVAxTWszZFpweVA1REFBQXJrallCWUFycTdWT2hWellzR21TcDdYV3AwSXZBQUM5bnZ2ZjZlbWNmMUZLT1ZGaDJ2M3N3UFVsN04yNG45UmFueVM1cytHdjh2V2FQMzlhU2xuYW9nQUF3eE4yQWVEUzJwRExVWkx2NGlZazR6QkxFM281YXR2ckF3RFE0ZmwvK3BtK0tFbHVxekR0Zm5ZV2REbFFEZGliY1Q5cHgvM2hwcjlMS1dXUlpMSEdSenl3UlFFQU5rUFlCWUQzYXQrMnVaL2tlYlNVWnB6bVNaNjMreWtBQU4zb2EvcWlCOTZDcDczV25MZlhtUlBWZ0wwWjl3ZHBYcUlhVThEdGJwTFZOWDd1V0pjeUFJRE5FWFlCNEoxcXJZZHBiajdlaXh1UWpOc2t5YjFhNjNlbU5nSUFXUHM2NEg3NjZlYTRUUEpJaGFtMVBrd1RxQUwyWjl6UDAzUjBHZFg5cFZMS2FhNGVlRm0wUHdNQXdJWUl1d0R3UnUyVVJVK1RQRWt5VlJHMnlEU3ZwellTMEFJQXVQcTF3RUg2bTc3b2JpbGxwY3A3djQvTmt0eFJDZGc3ZlhVTVcxc3A1VGpKemJ4L1NxTlZtZzVsTi8wK0F3RFlyQStVQUlDTDJyYzR2NHhPTG15M2VaTERXdXR0YllVQkFDNTlMVEJKZjkwMlRweVhBVEJXYlllWG0yMGc3L1A4ZktxbFZaSm5hYVl1RW5JQkFCZ0JZUmNBZnRLK3dYbVVjYzJiRE91WUpIbFNhejFKY3RzTktRQ0E5M3JZMC9YQUtxWjdBR0FMbEZJV2VYK0hGd0FBTnN3MFJnQWsrYW1ieS9NSXVyQ2JEcE04YjkvT0FnRGd6ZGNFaDJtNjQvWGhRU2xscWNvQUFBQkFGNFJkQVBaY3JmV2cxdm84eVQzVllNZE5renh0ZzEwQUFQejh1bUNhL3FZdldwUlNIcWt5QUFBQTBCVmhGNEE5Vm11ZEoza2EzVnpZTC9kcXJjL2JCem9BQURTZXBKa0NzZyttTHdJQUFBQTY5WUVTQU95Zld1c2t6VnViaDZyQm5qcElNNjNSclhZdWJnQ0FmYjQrT0VwL0FmZ0hwWlJUVmQ3SU5kK3MzYTZmNU0rRFRNc2tmMHh5bXVUVUZGT2QxdjZncmZzMHlhL2J2eTg2VGZJZnUxYi9kcjg3Znl4WmpXMzh0OXRuMW02Yk54MzNuaVZadGR0bHNRVTFuN2JyY1pEa0w5NXhMRCsvenkwZGwzZnFlSE8yRDd6dGVITjJ2RisyKy9YcGp0VmdkbTVNWDF6L1ZaSnZ0Mm5kTC93T2VkZVlmdGIrdldqSHROL2pBT3dsWVJlQS9id1FmdktXQzJEWUo1TTAweHJkMVZZZkFOamo2NE41a25sUEgzOWFTcm12eXBmYUJ0ZTVQbHVXVW80dmZOWmhraTl5eFJjYmFxM0xKQ2RKdnVyaWdka2wxdW5YYTN6ODlCcFRreDczK1NDd3Jmdm5iZDB2MHlGcDlvYjZMNUk4SGlKZ3NjYlVybS9iNTk2NjdyWFd0T3YyZGJzZFZwZjhqdE0xamswLzI5N25QdXVMUzR5MTJZWHZmcExrNjR2clBZSmp4bWRYMk4vZXRNK3R6bTJYazh0dWwvZDhyOW5GNVd4NHYxMWNkanl0Y1J6dS9maHk0WHRPMnUzK2VWdnJ5VFUrby9OdDMvZitjZkZjb3IyMytlVWx4OERoaFhVL0dlcFllNDF0ZXBYZjNXZTF2SGZoOThqWHBaUVRaMWNBN0l1aUJJeFZyZlZwbnhkSXZQRUM4S1l5N1B5NG1pZDVtUDdhazhPMk9rNXlkNmliUEh0d3JMbWY5b1lMc0hFUFBHaisyZkZwbG1ZS1IreUQ1S2VIUlU5N3VqNVlKZmwwbTk0MDd1QVljZk02RDgvV3VQL3gwM1Y4KzkyUDBzMUxEWXQyN0M3V3FPWFk3dW5jN1ByQlp2dUE4azZhQjY1ZGpxRmxrcTl5aFdESU5iNTd2ZTYrc2VZK3Qyclg3ZEg3MW0zTjhYaXpsTEpvdDlHOWRqdDFjVXk3MUhmdmFadE4yMzF0M3NNeGU5VmVFNjhWZGh2aGRlQ2x6MEhXUEdiZDdEczRjUzdjTWUvaDQ4K0NqbjJ2dzdYM2oxSktPVGNPSHFhYlR0WExkaDg1M3VBNXh4YzliZE5sa3NkOUhhL1crQjN5MDdZRWdLNzhRZ2tBOWtPdDlXR2FHMUdDTHZEbjVtbTZ2QmdmQU1DK1hCOU0wblI4N092ODU0R1crc05zeC9aYTcybTY2OTQ1YTgrTkh6by9mbXZON3lmNUxzMkQyNjVyTkUzek1QZDUrOExLV084dlhHZWZPd3VmUEcwZjN2ZjVIV2RKbnFlYm9NdjU3LzY4L2V5aHgvaDM3YnIwTVNiUGdsdmZyZEgxaDM2Mi83UU40anhQZjEzWUR0c3grWFRJZmZzYXRaaTNkZWhxU3ZacGtxTjJ2YWNEYjlNbjdURzByMjA2Ylk5WDM0MzE5d2dBZEVYWUJXRDNMNHduN1lYeEhkV0FkenBJYytQeVFDa0FnRDNRNTlTbUM5TkVEbUtTNW1GWlg5ZDZkekpBS0dITHJxOW5hUjYyOWhGeXVXaWExdzlpSnlPcXdWRUgrOXhaVjZtK2ZKRnVBMkFYdDh2VElVSWhQUVIyTHVOZXJkVjE4ZWJIMmZtUTAyeWd4YzdhZmZ0b2JFSEg5cmpUMXd0OHN3d1VMcXkxM2ttM2daM0xuQ2NjMVZxZkNLOENzS3VFWFFCMisrTDQ3QWJTVERYZ1VxWnhReDhBMlAzcmhJYzlYaU9za3R4UzVVRWN0SC82WG9iejQvdzBCVWRmQVlwM21hVjVPMzhNMjJDVzdqb1I5UG5nZFQ1QUxlNjFEK0Q3MnQvbUc5cmZqUHZOSDJ2Tzd1VnQ2cVcxZVh2TW1ZMm9MSDJQNmJOUXlMekg3WHFVelUwdGY5YTlaMnFFQWJCcmhGMEFkdi9pMk0wSnVKcEpleE5ncmhRQXdBNWVKOHpUN3dPMDI2V1VsVXJ2NVBueHdSNlBtNk0wM1Z3MnVRMmV1MFlablhrZmdaZDJPeCtOWU56cjhMS1ozOUZqdUplM3IvZEZlZ204dE1lSlRkZnlySnV4RGk4QTdCUmhGNERkdmpoMkFRUFgwL3RiUFFBQUc3aE9tS1hmQjZpUFNpa25LcjJ6NThkN09RM0NTQjVTbm5HTk1qN3pMcmZKU0lJdTUrbndNdHl4NW16YmorazRlOVJuQjZPUk91cHlueC9aNzVDekVKUDd4UURzREdFWEFCZkh3TnU1bVF3QTdNcDF3a0dTSnowdTRqVEpBNVhlYWRNMFV6RHMwN2daMDBQSzg5Y293Z2ZqOHJDTDZVSGE3VHEyWU1Ga2hOOXBGNDgxOHhIWGViNkhnWmRPd3AyMTFqc2ovQjF5a00xMktnT0FUZ203QUxnNEJ0NU40QVVBMlBicmhMT0hsWDBGNGxjeGZkRyttTGNkZ3ZaaDNOelArQjVTbnZGbS9yaDBGUWg1TXRMMU8yakhBLzBjYXc0ei9udDU4ejI3THpMTm1sTSt0Z0c0c1FaRTcrekw3M0lBZHArd0M4RHVYQnpQSStnQ2ZSRjRBUUMyOVRwaGttYUswejQ3UWR3dHBaeXE5dDY0dHdmalpqYnk5Wnhrdk1HSWZUVmI1K0Z4R3lhWmpuajl2aFN3NnVWWU04WnVQbTl6dEdjQmlYWDMrYkZ2VjkxZEFOZ0p3aTRBdTNGeC9EQ0NMdEEzZ1JjQVlCczlUTDlCbCtOU3lyRXk3NVhaTGovd2JCOXVQdG1TN2VENlpGenVyYkhQZlRueWRadGt6VTRYdk5HMlRVUCtaSTlDVDlmZTU5dmZrV1AvUFRuVDNRV0FYU0RzQXJEbDJwdGJiampBTUk3YUZzTUFBTnR3clhDVWZxZGhPVTF5VjZYMzBoYzd2Rzczc2owUG54L3F0akVxczNicWtxczYzSko5N2d1YnVOUGYwZmZUYnhpMUQ1T01kMnFlTWUzejJ6Sld2alFTQWRoMkh5Z0J3RlpmR00ram93c003YWpXdXRTcUh3QVkrYlhDdy9RYmRGa2x1VlZLV2FuMlhqcE1jbnNIeDgwMDNiNU1jcHJrNi9aL0w5Tk1VL01YYWQ3NDcrSWg5MW5uZ2Z0MnlWR05qVWRYL0prdUhqaXZrcHdrZWRidWErY2RKUGtrNjRkcXByWFdXU2xsWVROM2NxeloxcURCdk5iNmVFLzJneXZ2ODIwQXNZdnpyK1c1TVgzeFhHdDJia3l2ZGJ5cXRVNmN5d0d3ellSZEFMYjN3bmdlUVJmWWhFbVNwN1hXbXdJdkFNQ0lyeFg2N3Y1NHU1U3lWTzFST2szeXVQMTdXVXBadGxNVlROTzhiVDdyNHB5NDFucFlTam5ac2RyZDYraHpIcVNaNG12NWpuRTZiWmMzWDNOWlgwYlk1VExPd2lCZkoxbVZVaGJ0TnBnbStiemREbDEwVi9raVZ3aTd0QS9HRHpyWTN4Njk0NEgxb2wzVzNUUmRPZGJaNXo0Lyt6eldQdFowMmMxbjJXNlhpMkduYVY2SElxWWRmLzlON3dmTEMyUDZ0Tlo2Y0dGTWQrR3ErL3k2djJOWFNlNitaNHJJeGJuZkkwL1dQSWJNMmpvQ3dGWVNkZ0hZUW9JdXNIR1ROSE5WZitvTkdBQmdENjhWSHV4Z3lHRVhuSFhiV1Z6OEYrZisyWEViZkRuSytnOCtQOHZiSDVEZHpic2Y1QjdrK2xOaFhHZjZyTk5MakoxcDFuODRlcG9tQ1BiZTViVkJtTnUxMXNkcEhsWmU5OEgzcE5ZNmY4K0QwYjZkRDFnbHI3dllUTnY5WkpadUg3UmYxWEdhaDhlck4yeURaWkpGcmZWQm1nZjQ2d1lGRDY3WUtXRzI1dkkrdmV4TEdPMTN1bDFyelJyNytzRjc2cng0ejg4L1hXTmRiMTd4djErTzlQZDBGOGVhOCt2NDRCTGovMjU3N0wrWGJnS1BzdzEzK2JsYlNubjBobjM4dEQwT25iUmorcWlEOWIzcXozKzI1dmE4ZWRrd2NSdG12ZG1PcStzR1h0NzF1eHdBUmsvWUJXREx0RzhwQ0xyQTVrM1QzRkQ0VkNrQWdKRmNLOHdIdUZZNEthWGNWKzNSV1NXNWNaa0g3RzFIaTArVFBNOTZBWVNEZHl6ajlEMzc2bHJyMnRNRDFuV25nemhOODVEeVNtSDRkbnVjUGF5OGJ1RGw4elJCZzZHZHBubm8vS2J0c1d6L1BtNjMrV0dhTGpTemdiL2pHeCtLdjJFN3JOSUVBdjZZNndleHpvK054YnJqNkpMcmRwMXVvM2R6L2JERjdCMDFYT1k5QVpOMXh2NE9UWnN6NytoekhwVlM3bDZ4Zm90YTY1ME85dkdrNldLMGlXMXk2ektCMjNaL3ZGbHJmYkxtOGYyZzUvLys0cm90cnpndVZtM1hwcWNEclI4QWpNb3ZsQUJnZTdSQmw2Y3FBYU54VUdzVlBnTUF4bkN0TUUvL1FaZlRKTGRWZTVTdUZMSTQ2L0N3NWpKbk8xYkRMOWY0MlZXdUVYUTV0ejJ1MDYzbXZNTjJPcHdoSFpkU1ByMXNBS0dVY2xKS3VkbXU1MURkTVU4dUUzUzU4RDBmWmYwSCtGZDVlSHpkTGhDcnE2N2JoZkYvN1hWc081TndmVjkwOEJtM3J4SjBlY00rM3NYdjh2a0dqanZYNlN4M08ydDIrV203NHZReC9pOGVyMDZ2dVUzWE9XWVp6d0JzTldFWGdDM1JYa0N1MDlvWTZNZThmVE1LQUdCVDF3cno5QjkwT1pzaXh4U080M044blFkazdjT3hZK1g3NmVIOWRJMlB1THZ1MkdpbklWbXU4UkdIQTVac1VVcTVmYzMxZkpTbU8rYnBBTi96dWdHaWRZTUFROXkzT2RuZ2Q1dzZhbHo3V0hQUVFmMGVyRHR0V2Z2elhRUmVoanp1TEsvVFdhNDlOajhZY0x4Y2QydzkyOUJ1YVR3RHNOVk1Zd1N3UFo2NkFJSFJlbGhyWFZ6M0xSd0FnRFY5T2NBeWJsNjF0VDZEK1dxTm4vMDZhMHlwVVd1ZDdjalVJdXM4c0YydCsrRDVuTWRKN2wzelp6L0xjT0dsdFI2U3Q4ZVN2cWVEUGI3dU1hdVVzcXkxbnViNkhScXUwcTNsYnE3M2NIeTV4cmc5aUtsTHR2RllreVNuWFUwbFdFbzVyclYrdnVaM0d2SzRzODd2dXBNMFV6ZGRONGh5a01zSHpHNWVkOXV1TWFhOWdBWEEzaEoyQWRnQzdUUXBia1RBdUQydHRkN3d0ak1Bc0FFMzA0VGorN3BtdUMzVU8xckxkYlpOS2VXazFxcUsxNTlLSmtsT3J6akZ4YnVzY3kweEc2aFd4MXNTZlB1Nmc1L3YvVDdNa01mV3RtUHdQTmNQVkxIWlkwMnkzblJuYi91OGRjSXVzd0ZyZDdMR09GdlZXaGNab0JQTmtBSFF0aXVaTVEzQVhoTjJBUmk1dGlYNVhDVmc5TTZtR3J1cEZBREFrTnFIT0gwRlhoNTAyTFdDN3AxMDhCbUxEUHZBY296V0dUZXprZFJ2T3RCeXZ0NlNiYnJvNE9lMzlnRnlHMnc1YUs5VEQ5S0VMUFo5bkkvQk90dGcwWFdRb3UxaWRKenIzM2VjMWxxbkF3VGdUanRZeHJjWmR0cWxyc2YwdEQzT24vM3BiRXp2VUpjMkFQYVFzQXZBdUM5a0RwSWNxUVJzalZtdDlYNVhiWVVCQUM2cnA4RExzZk9hMGZ1Mmc4OVlLdU51VEJsWXlJU1FBQUFnQUVsRVFWUTgwQVBMYmVqeXRPeWc0K1pxeE52NWJCcWlhWkpmbjl0L0o5RVZPQ1BmYnV0NDNOTlhXMnM2dTNiLzYvdjN5SElrbjlIYnNUdXZ3Mm1mNVBWMFM5T1kwaDRBM2tuWUJXQzhGenBuWFNLQTdYS3YxbnFpMVQ4QU1MU09BeStMVXNwdFZSMjlaUWVmOGNjOXYvWVdEcmphY1dhNUQrT2lsSEk2bGltKzJvNE9oMGsrais0czIyeXk3dS9sbnNiMHV0UFpIZlQxM2M3WnFXQm4rM3ZuaTNZOCt4MEVBR3Y0aFJJQWpOWlJwUGRoV3oxcEEyc0FBSU5xdXhuY3pIcmRGMDZUM0ZMTnJiQlNnclh0MG5uN3pPYmNuWEZSYTUzWFdwOG0rUzdKUTl0MzYwM1gyYWQ3RHBvdEhFTjdIOCtUV3V1ZFd1dDNTWjRudVJOQkZ3QlltN0FMd0RndmdPNWtpK2VSQlRMTkZzL3ZEZ0JzdHpVREw2ZEpibll3QlFqRGJHdmRCT0hQZmJ2Tlg3N1dPbXNmaUI5RndHWFg3aE5jMTc0ZjZ4ZGJQcWJuZVIxYW14b0tBTkFkWVJlQThWMEFIYlFYUDhCMnU5UE91d3dBTUxockJsNVdTVzRKdWdCc1JxMzFZWnFwNkthcXdZQUVKL3NaejVPMk85TlJkTUFCZ0Y0SXV3Q016NUVTd082TVo5TVpBUUNiY3NYQXl5cE5SNWVseWdFTXEzMG9mamExQ1F6TmZZdnV4L1JCbW00dU05VUFnUDRJdXdDTTYwTG9mc3pYQ3J0a0dqY3JBWUFOdW1UZzVTem80czF1Z00xNEd2ZURlTHUrd3loVEplNU9yWFhham1raElnRG9tYkFMd0hndWhBNlMzRk1KMkRuMzJ2RU5BTEFSN3dtOENMb0FiRkE3ZFpGcnh0MjN6dS9adnZlUHFjM1RxU2NSZEFHQVFRaTdBSXlINll0Z2R6MVVBZ0Jnazk0U2VCRjBBZGlnV3Vzc3czWURYU1k1VG5LaStvTmJyYm12SFBTMEQwNnlYdGhsYWRQK3JKNzNNMng0N1RUSm82d1hwZ0tBcmZXQkVnRHM1WVVRTUt4WnJYVmVTamxXQ2dCZ1Uwb3BxMXJyemJ5ZUx1T3VvQXZHUlZuVVdxLzc0OHRTeWcxVlpBMWRkL2hkNW5YNFlKWGsyL1ovTDVLY3RzSEhzL3RRaDhvL3FIVi8zMzZSZmdJTmh4M3NjN3oyWlEvN3plcGNyZi9ZL3YvVEMyUDZxZElEc0krRVhRQTJySjNIOVV1VmdKMTNyOVo2Y25ZakFnQmdFODRGWG1hbEZHLzJRMk9WNjAwNU1hMjFIZ2lOY1IzdC9hQlpCL3Z1Y1pLdlN5a0xWUjM5NzkvckhtdVNKcFJ5dDRldjlzV2E2MlcvZXoybTUxbC8rcUpsbXM1TGovMXVBWUQzTTQwUndPWTlqSGxjWVI5TU0yeDdhZ0NBTnlxbHJBUmQ0R2ZXZWFEbzVSV3VhOTJPR2lkSmJwUlM3bDRqY1BDSjhtL0VZbzJmbmJaaGlzNjAwMmpOTm5UczNFV2ZyZm56RDBvcFoyUDZxcldkS2o4QSswallCV0NEMm90S2JXTmhmM3paem9jTkFBQmN6N1NIejN5MnhzL08ydzRkY0ZYckJFNFdwWlJiYTNRTzNicDlka2ZHMmJNMWYvNWhWL2NVMnM4NVd2TmpGb2J4ejh6VytOa0hwWlQ3YTJ4THY0Y0EyRXVtTVFMWXJDTWxnTDB5U2RQTjZiWlNBQURBdFV4cnJiT09wODQ0U1hKdmpaOS9rdVRUZGI1QSs3QnlyVTZRMTMxUXl1YjI1VFYrOXU0YSs5bzB5Y0VXMW11ZVpOdjM4WlAybnNCMVRaSThYZmQ0MDNxWTlRTVN6d3pqenNiMG96Visxb3VVQU93dFlSZUFEYW0xM29uVVBleWplYTMxUVNsbHFSUUFBT3lwMVpvL2Z5OGRkaFFvcFp6V1dwZHJYS01mMUZxUFNpbnJoTnFQc3Q0RHk5TnNmeENBSyt5emE0NmZiZlJscmZYUkd0MXN4ckRkbHJYVzA2d1hOanFvdFI0bHVYdmRXclEvUDE5emRaYW1ST3pNWXMzOStwNFNBckN2VEdNRXNBSHRHMXN1UkdCL0dmOEFBT3l0TlIvVUo4bXMxdnJrZmRPYTFGb1AyNGU2bC9GNHplODByN1UrdmM1VUsrMTNYUGZOL01mMnJQMXgzU2w5MnVtMDV4djg2b3MxZm5hUzVHbTdEdTlheDROYTY4TmE2MWk3MTN6VndXZk0yMW9jWEhXL3FiVSs3V2dmY016cHpzRWF4d0l2VXdLdzEzUjJBZGlNTysxRk9yQ2ZkSGNCQUlEMUhDWTVyTFV1OHVkVGFYeVc1dUhoMlhYM1pUcXVIR2Y5VVBvc3lmTmE2MWRKM3R1Qm9uMW8vekRkVENsemJKZllyMnZLWExHVFR4dU1lTExsNjMyUUp1UnhtaVk0OHgvbi90MG43YitmdHYvLzY1R3V3OWxVUnBNT2F2RzgxbnFjNUt0M2hRamJiZjlsdWcwNk9lWjBaM0tkNmZscXJmT3NOeTBXQUd3OVlSZUFnYlZkWGI1VUNkaDc5M0s1bSs0QUFMQ0xGbW5DSWV1YWRmRTU3ZlFpeDFuL1lmQlpKOWQ3NTRJNHkvWlAwanlnL25XYXNNNjBvMW9lYi9QVUxsenZlckxXdWl5bEhGL21QMjY3UDl6TDVsKzhldGJSdUQ5SU55R3h3WlZTVm0wZ3JxdU9yL00wTDlRczAweG45dTI1ZjNjeEFOU1ZZeS92ZE81SnJmWG1aVHFmbmVzWWZrZlpBTmgzd2k0QXd4dkR6UVZnODNSM0FRQmduNTJtbTRmZVhYcVFianNmekFaYXh3ZDJwNjIwYnZEanFOYjZSWnF1SGljWC8yWGJ6V09XNW9XcjZZakcvZDRycGR4dnQxMlgyMlhhL2pucytldXZrdHkxRmQ5b3NjYVludVIxcDU3SGIrcnkwbllEKzd6OVBlWGVNZ0FrK1lVU0FBeW5uVk5aNmg0NGMwOEpBQURZVTgvRzlvWGFJUHEyQlVkMFdOaGVYUVEvWm1rNlF0UmE2Ny9YV3ArMmY5Y2t6OU5NY1RJZDBUb3ZiUGFmYkd1bjF3YzZTZlU2cHVkcHB1cDYwNWgrbXVhK3NxQUxBTFNFWFFDR05WY0M0SnpEdHYwc0FBRHNsYllUeFJnZm1EN0s5blNmMEdGaHV5MDYvcnhKbXZETFpNVGpmcFhreEtaUDJzNGRqN1p0bnkybFBMTDEzdXJ4dm8xcEFOZzBZUmVBZ2JRUHRMOVVDZUNjU1hSN0FnQmdmeDJQN1F1MUQrTnZaNXhCbkl0dTY3Q3d2ZHB0ZDd5SHEvN1kxdi9KZzJ4WHVPNldUZmJPTVgyYVpLa1NBREFjWVJlQTRXZ3pDYnpKRjBvQUFNQ2UraW9qREpXMER5ekgzakhsdU8yT3czWjdzRzhyM082M3B6YjlUNEdubXhsL3VHNlY1S1p3blRFTkFHTWo3QUl3SEYxZGdEZVoxbHJueWdBQXdMNHBwU3pUQkY3RytOMk8wM1I0R2FOdENPTncrVEd3ajlQQzJIOWY3d05qRDd5Y0JWMEVsQzcvdTBPdEFHQWd3aTRBQTJnZlpPdnFBcnlON2k0QUFPeWxVc3I5alBUQjRFZ0RMNmZSWVdIWGJOTlVObDJOclVYMk0rVHp0bnFjcGdtOExFZjIxUVJkcm1kYnBzSURnSzBuN0FJd2pIdEtBTHpEck5ZNlZRWUFBUGJVell3NzhISXI0M2h3S2VpeWc5cnR1WW1INDRzTnIvZmRKTWYyZ0ovcWNacmsweEVkQzgrT040SXUxOXVXbStoZXRGQjlBUGFOc0F0QXoycXRzeVJUbFFEZXcxUm5BQURzcFhQVGVJdzE4SEtTelQrRVBvbWd5eTZQZ2JQT0hrTnQzK05TeXNhbnppbWwzSTdBeTgrT2hhV1VUOU4wKzlta1J4RjBXWGRiSG1mWXptQzNNOTZwOXdDZ044SXVBUDB6UFFsd0dYTWxBQUJnWDUwTHZEd2E2ZmRidGcraDcyYllnTUFxeWQxU3lpMUJsNTBmQTZkSmJxVC9VTldETm1TU05DR3FUYS8zN1EyTXE3SHZDL2ZUQk93V0F5OTZtU2JrY3RmeHBwUHRlTnh1eDJYUHZ5TnVsMUtPU3luTGpHOHFMQURvbGJBTFFJOXFyWk40Z0ExY3pxVFdlcWdNQUFEc3E3YXJ3ZDAwRHdlN2VnaS82dmc3UGtvVFNIaVEvaC9PSHllNTBTNlQvUmtEbi9hMGZ5M1RCQm51bi90bnowYXkzbWZqNnJqRDlWNXQrYjV3Mm5iZnVaWCtBMURMTklHSkc2V1VoWkhZN1hac2Y2ZjFjUnhmSlBtMERkV2MvMmNBc0RlRVhRRDZOVmNDNEFvK1Z3SUFBUFpkKzVEM1ZwcUgzM2R6OVlkM3Aya2VMTjRxcGZ5cWgrKzNhZ01EWjkrdnl3ZlJ5elJCaHh1bGxOdTZLK3p0R0RqYnY3b0l2U3pUZEhONVU1QmhNYUoxWHJWZFhtNmttWTdsNUlycnZrd1Rscm1kNUZlN01nVlBLZVdrRFVEZFRMZGhvTFExdnRYdUc4ZEdYcS83OXQyOERuU3Q2elJOT09sbTI4M2x2R2NxRHNCZS9aNVZBc2FxMXZvMHlVd2xCck5vM3hhZzIvMzR1eVJUbFFDdTRGZmJma083MW5vL3lUMmJFa2Jod1lXM2QvZjkzR3lXNUtsSzJBZmhMY2VJU1pLRE5UN2k5RHJuY2JYV2d5U1Q2eXl3aXpmd2E2M1ROYTViVDRjOGR6MVhxNHZmK1RUTkErRFZwaDV3dDNXY0pmbXMvZnV5TlYyMTMvOVprcE1odm4vNyt6Q2IydWNHR0kvTE56d0FIckpPbmUrSGJSZlF6OXVhWEtZdXArMmZyMHNwSngydjU5RGovbXk4WDl3bmx1MmZ0ZmZMZFk3RFE5ZmozUDd3V1Z1UHEyeS94Ym5qeldKRDIzRWpOUjdETWVYQ2R6bTg0dStMMDNiN1BYN1g4ZVdhNjNtbCttN0Q3eEFBOW9ld0M2TWw3REk0WVpmdTkrR0RKTTlWWXErYzNXQTlUZklmNTI0a3ZQY2k4aTBYaW1mLzdDL2FDOVYxYjc2ekhXNXYreHRWd2k0d0tvSUdmLzc3VnRqRlBnZ3c1SDJCZHoxQVA5VzVoVFhPYWQ3SXcrUzkzQi9lZDcrbzA3QUdnMjYvMWE1MEtRS0FQbnlnQkFDOStVSUpkdFl5VGFEbDJ6UmhsclZ2R3J6bFp0VGlMUmZCMHpSdmZjeVMvRHBYZTJ1UThmczgzYlMxQlFBQU5zZ0RTbnJjdHhhcXdMbjlZWlVSVFVtRjdRY0FReEYyQWVqUG9STHNqTE5Xb1lPM2VYM0xSZkF5VGVEbXB3dmg5aTJRV1pvV3FJY1JmdG5xWTBldGRlSU5Ud0FBQUFBQWdEY1RkZ0hvUVR0MzdsUWx0dHBKWHMrWnZoejdsMjJERVNmdG43dHQ5NWZETkIyR1RIMjBmUTZqdXdzQUFBQUFBTUFiL1VJSkFIcnh1UkpzcFdXU3UwbHVsRkp1bFZJZWJldWN4cVdVWmZ2OVAwMXlJOG1qSkRxRk9JWUFBQUFBQUFCc1BXRVhnSDdNbEdDckhDZTVXVXE1c2MwQmw3ZHBneTkzU3ltL1NuSTdUYWdIeHhBQUFBQUFBSUN0Sk93QzBMRmE2MEZNWWJRdGp0TjBjYmxkU2xuc3d3cVhVbzVMS1RjaTlESjJrMXJyVEJrQUFBQUFBQUQrbkxBTFFQZStVSUxSTzhucmtNdHlId3R3THZSeU42WTNHaXRUR1FFQUFBQUFBTHlCc0F0QTkyWktNRnFuYWFZcnVyV3ZJWmVMU2ltUGtueWFKZ0NFWXdrQUFBQUFBTURvQ2JzQWRLaldPazF5b0JLajlLQ1U4dW0rVEZkMEZhV1VaU25sVnBvdUw0ekhRWHRNQVFBQUFBQUE0QnhoRjRCdXpaUmdkSlpKUGkybDNGZUtkenZYNWNXMFJvNHBBQUFBQUFBQW95WHNBdEN0ejVSZ1ZFN1NCRjFPbGVKeTJscmRTRFBsRTQ0cEFBQUFBQUFBb3lQc0F0Q3RReVVZalFlbGxGdWxGRjFLcnFpdDJjMEl2SXpCVEFrQUFBQUFBQUIrN2dNbEFPaEdyZlVneVVRbFJ1RjJLZVZZR2E2dmxMS3F0ZDVNOGpUSmdZcHN6TFRXT2kybExMZnNleDhuV2V6ZzluaG9QQXp1Tk1sZFpWakxVZ2tBQUFBQWdGMGo3QUxRblprU2pJS2dTMGZhd012dE5JRVhRYTdOT2NpV1BheHV3em5MWGRzUXRWYWRvb2EzS3FVc2xBRUFBQUFBZ1BOTVl3VFFuVStVWU9NRVhUcFdTamxOY2xzbE51b3pKUUFBQUFBQUFIaE4yQVdnT3pNbDJLaTdnaTc5S0tXY0pIbWtFaHRqMmh3QUFBQUFBSUJ6aEYwQU9sQnJuU1NacXNUR0hKZnkvN04zcjFkT0pNa0NnQ1AzN1AvVldyQWFDNmF4QUdFQmpRV29MWUMyZ01ZQ0dBdGFXRUJqQVJvTFJtTUJXZ3RXMTRLNFA1UmFOQ3pRa3JJa2xhVHZPNmNQVHowcU1pdnJrVkdSUlRMR2ZyMk5DRXU0SE1kSUNBQUFBQUFBQUw2UzdBTFFqWkVRSE0yc2xHS1puVDBycFN3aTRsWWtqaU16VlhjQkFBQUFBQUNvSkxzQWRNTkU5SEVzSXVLRk1CeEdYU1pxTGhMR0dBQUFBQUFBZ0dPUzdBTFFqVitGNENqZWxsTG13bkRZbUF1Qk1RWUFBQUFBQU9DWUpMc0FkRVBWaGNPYmxsTGVDOFBCUGNTeW9nN0dHQUFBQUFBQWdLT1E3QUxRS0RNSEVURVVpWU83RllMREs2VXNZcG53d21GSmRnRUFBQUFBQUtna3V3QzBNd2w5ZUpOU3lrd1lqdWFURUJ6Y29DYldBUUFBQUFBQVhEekpMZ0R0SkxzYzNsc2hPS3FwRUJockFBQUFBQUFBamtXeUMwQTcxUllPYTFKS21RdkQ4ZFNsakZUV09UekpMZ0FBQUFBQUFDSFpCYUFMVDRYZ29INFRnbDZZQzhIQlNhd0RBQUFBQUFBSXlTNEFYVEFCZlRpelVvcUtJdjN3cHhBY25NUTZBQUFBQUFDQWtPd0MwQVZMaXh5T3FpNWNNb2wxQUFBQUFBQUFJZGtGb0VsbW1udytyQWNoNkEwVmRnNVBZaDBBQUFBQUFFQklkZ0ZvWmZMNWNLYWxsSVV3OUlhMk9BSUpkZ0FBQUFBQUFKSmRBRnFaZUQ2Y1QwSUFFdXdBQUFBQUFBQWt1d0MwTWZGOE9GTWg2SldoRUFBQUFBQUFBSEFNa2wwQU9BbWxsSmtvOU1wUUNJNWlKQVFBQUFBQUFNQ2xrK3dDME9aZlFuQVFVeUhvblg4SUFRQUFBQUFBQU1jZzJRV2d6VkFJRGtKVmwvNnhoTmR4U0xBREFBQUFBQUF1bm1RWEFFN0Ivd2xCNzR5RTRDaUdRZ0FBQUFBQUFGdzZ5UzRBYllaQ2NCQlRJZWlQekx3V0JRQUFBQUFBQUk3bDcwSUEwT1JHQ0E3Q01rYjk4bHdJam1Zb0JBQUFBQUFBd0tXVDdBTFFvSlF5RlFVdVNXWU9JbUlzRWtjekZBSUFBQUFBQU9EU1djWUlBTmpHYXlFQUFBQUFBQURnbUNTN0FBQWJ5Y3lyaUhnakVnQUFBQUFBQUJ5VFpCY0E0RkYxK2FKN2tlaEZXd3hGQVFBQUFBQUF1R1NTWFFDQVRieUxpQ3RoNklXaEVBQUFBQUFBQUpkTXNnc0E4Rk9aZVI4Ulk1RUFBQUFBQUFDZ0R5UzdBQURmbFprRGlTNEFBQUFBQUFEMHpkK0ZBQUQ0Vm1aZVJjUjlXTG9JQUFBQUFBQ0FubEhaQlFENGk4eThpNGcvUXFJTEFBQUFBQUFBUGFTeUN3QVFFUkdaT1k2SU54RXhGQTBBQUFBQUFBRDZTcklMQUZ3NFNTNG5SenNCQU5DWGE0bGhSRnhIeEs5cjU2bXppUGd6SWg1S0tRdFJBZ0FBWUI4a3V3REFCY3JNcTRoNEdSSGppQmlJeUVrWkNnRUF3RW1kZTQ4Ynp1R21wWlJwRDdkcEVNdUUrZGZmK2VkUi9mVmRadjVXU3JuVGxoRVJNU21sek05c20wNUZMMk1QQUFDMGtld0NBQmVpSnJpTVlwbmtjaVVpQUFDdzkzUHdRVVM4aTkwVHpKOUd4TFNIMi9SNWcydUtRVVM4eWN5bkVmSGlUS3E4dkl5dnlUemJta2JFL015MjZWVDBOZllBQUVBRHlTNEFjS2JxVGVoUkxHK1FYNGVLSUFBQWNHalgwVlpKY1pTWnc3NVVwZGdpMGVVdjJ4QVJIeVBpbWU0QUFBQkFWeVM3QU1DWnlNeGhMRzhrLzFwL1ZiMEZBQUNPNjJVSDcvRXFJbTU3c2oydmQ3ek9HR1htdUpReTBTVUFBQURvZ21RWEFEaEJtVG1LWmFXV1lTd3J0MXhGMnhPakFBQkF0K2ZzdytobWVaaHg5Q0RacFZaMWVkWHdGbThpWXFKbkFBQUEwQVhKTGdEUVUvWG0rREMrSnJJOGphOEpMZ0FBUUwrOTZ1aDlCcGw1WFVwNU9QTDJ0QzdKTk16TVVTbGxxbXNBQUFEUVNySUxBQnhKcmM0UzhUV0I1VjlydngrS0VBQUFuTFJ4aCsvMU1pS09uZXpTeFRYS0tDS211Z1lBQUFDdEpMc0FRSWN5YzMwNW9mWGZQNjIvRG1LM05lNEJBSURUdVM0WVI3ZkxqRjVuNXJDVU1qL2laajNWc2dBQUFQU0ZaQmNBK01iYThrRXIzLzc1WDkvOGVTUnFBQURBbXVkN2VNOXhSTndKTFFBQUFFaDJBZURNZlpPNE1scjdwL1duRXRmL0R3QUFRT3MxeVBVZTN2cGxIRGZaNWZlUTZBOEFBRUJQU0hZQjRLUmw1aWordWpUUUtvbGxKRG9BQU1BUmpQZjB2c1BNdkM2bFBCeHB1Mllkdk1lRDdnRUFBRUFYSkxzQTBIdVplUlhMeWl0WDhYVUpvYXRZSnJrQUFBRDB5Y3M5dnZmek9GTENTQ25sSVRNWERkZGg4MUxLVFBjQUFBQ2dDNUpkQU9pTnpGeFZhQm5GTXFubEtyNVdiQUVBQU9qN05jMTE3SGVKMUhGbTNwWlNGa2ZheExjUjhXN0gxOTdxSVFBQUFIUkZzZ3NBUi9GTllzdXY5ZmREa1FFQUFFN1l5d044eGpnaTNoOWo0MG9wN3pQemFVUmNiL25TeVJHWFh3SUFBT0FNU1hZQjRDQXljeGpMeEphbm9XSUxBQUJ3ZnRjOGc5ZytDV1FYcitKSXlTN1ZUZjExMDIxOVgwcFIxYVcvdWw1YWF0QjR2VCt2UDExYWFHWUFBRGcva2wwQTJJdHZrbHRHb1dvTEFBQnczc1lIK3B4aFpsNlZVbWJIMk1pNmhOS0x6QnhIeEp1ZlhPdE5JK0p0S1dXcWEvUlgxNGxJbVRtS2lNOE5iL0dobEhLblpRQUFnTWRJZGdHZ00zVjkrbFZKNjZHSUFBQUFGK1RWZ1QvcjVwZ2JXMHFaUk1Ra00xZkwwdzdxUHkwaVlucXNaQndBQUFBdWcyUVhBSFpXcTdlc0o3Z0FBQUJjNHJYUktBNmI4SCtkbWJlMXlzcFIxYVFXaVMwQUFBQWNsR1FYQUxheWx1RHlNdHJXNFFZQUFEZ1hMdy84ZVlONlhUWVJlZ0FBQUM2UlpCY0FIaVhCQlFBQTRJZlhTNnZFazBON0ZaSmRBQUFBdUZDU1hRRDRyclVidGk5anVmNDZBQUFBLytzNmxwVldEdTBxTTYvcU1rSUFBQUJ3VVNTN0FQQVhkYTM1bHhFeEZnMEFBSUJIdldwNDdTTGFFbVZlUm9Sa2w1OWYzNDRpNHRlSUdNYVBLNVhPNjgvdkVURXRwVXhGankzNjJOVjM5dU5aUk14S0tmTURmcGVyNy9UM240MHZzem9HL1Y1L1B5MmxMRTYwSGE0ajRtbmQ1dEVHKy9tc2xQTFE4ekZyRUk4L2ZEYXQyL1JuYmIvWkNiYmRWU3lUUm4rdDdUZmNvTCtleERoZEh5UmNqUkZQYTV0ZVBYSk9NRHYxTmwzYjloL3RqOU82RHk0Ty9KMkdhL3ZYMVNOajVHcThtSzMxdVpNY0g5ZjJzNWVQYkhmdng4Z045ckhoVDhhUVZkOWJIMGVjUThNWmtPd0N3T3JFY0J6TG03UkRFUUVBQU5qb1dtbzFhYkNyaDFqZXBOLzFPbXdjRWJjSDNONXhMQ2RMZG5GN2lFbUZPdW45UExhcnVET3NQNk9JZUpPWmk5bzJ2NWtJT2F2OTlmT09MNTJWVW03WDNtY1lFVzgyNldPWk9hdjlhTExITWVqVmp1UElhdXdhcmIzZk5DSStSTVREdmlaMnV4cEg2cjJzMS9XOWhsdnU1OUdYL1h6dG9iTmRxb1NOdm5tdjFUWjk2RG9acFBhMWR6dSsvTVA2UGxEM29mRVdiZmR0ZjMyVG1hdGo2S2Q5N1Y4N3htbXd0bTNibmg4TXZ0T204N1YrT3UvaCtQaHQyNDdxbVBTejVSM2ZySTgzKzJ5L2h2WllIeTllcjQvbit4d2ZlelpHUml5WHkvelFwK1N5eG4xc3RYOWQ3MlBNclAzL1RlUGI3T1Y4dVhFTS81OXpJUUEyUE1GS0R1bXpYbmVSKzlrd00rOHo4ejkyQVRnWmQwWXY1eWJPVDJEM20wOTJLOGN0NkhoY3VXL2NSMGFaK2JyeFBjWUgzTjY3bG0zZDgzY2JaK2FYZlp5UDFBbUMxdlBCMFlYc0U2TytIamRhejBremM1Q1o3M1o4ank5ZDlvRWE1MzFlbi95bjd1K0RQbzRqZFgvL1Q4ZjcrZkFJKzhvKzIvRHpIdnBjMDM1ZDk2SDdVK3F2Tzl4anpWTnAwNDdHeC9XMi9kaDZuRDJSOXRocmYrdG9qTHpld3hoNWRlVHppMzN2WTE5YXo2bnJmdEFhOS9zOXhlOWQ0L2NhQi9UVTM0UUE0Q0p2eUk0eTgyTkVmSWxsSnZSQVZBQUFBTFoyM2ZEYWVYMkt0TFZNL010TGJvQjZmZnNsSXU1alA1VktSeEh4aCtTOXkxWW5OVDlIZmNKL0I4T0krTnpCUk5xd0p0OThqc2VYdUdreGlPWFQ2VjlxdGFTK0dOVDdXZmZSN2Iyc1VkM1d1MFAwcGJvTisyN0RVZTF6SDQrWkJMSzIzZGZ4OVQ3a1B2dnIrQWpiZHJmSGJmdGVtNzdyUTV1dWJmOVYzZjdyeHUyNjZtai8ybmQ3clBlMzE5RXZnNW9zOFhFUFkrUlJ6b1ZXU1hJSDJNZUdFWEdmbVgvc21sUldLLzYwbnRmdjY1amJFcnN1dGd2MlJySUx3QVZaUFRWU0w2aXZSUVFBQUdEbjY2dHh0RTBrL0JZUlVaY2xhTG1CUERwMFJZS2V4SCtRbWUvcTllMGh0djlON0hkaW12NWFKYnAwOFZUN2ZVT2ZIMGZFSHdmdWg0T0krTGl2SjgxM2pOOCs3MmU5MldkeVNBZEpBYnU0anVXay9ER3JNcnlNN2lmZmY5UmY3MnNWaXIwbmc5VGtzeitpZmRtU2JiMk9aZUxCVlEvMnlYL1Y4WEhRUWR1OTYyRC9PbVI3RENMaTNhSDYyeFpqNUhqUFkrVEJ0bmZQU1hJL2NoWEw1S3U3bHZQN2xuN1ZkWkpwZmIrV050dnIwbDNRU3JJTHdBWDRKc2xsSkNJQUFBRE5XaXVxckNlNGZHcDhyMWNYZG8xN0ZXMVZObUFiVjlGTm9rdExuNytQN3F1WmJHTmNuM1kvOW9UdUlUNy9PcFlUbllPTzIzQTFiZzJPRkxkakxrTXlQUERualdMUENUNXJpUlhIak9ubkhpUzhqS01IRmNQWGtnR0hSL2o0dmZlM25vMlJvMzJNa2QrMDU3NHExR3hqcDhTZVVzb3NJdVpIdnNibyt2MStDK2d4eVM0QVoweVNDd0FBd0Y2dXRZYU4xMWdQdGFKTFJFU1VVaWF4TEJHK3Erc0xpdjFxd3ZoS1QrUkMrdnkrbjlUZjFGVXNKeDR2d1ZVMFZPSDV5YmgxektTQVl5ZThIR043LzlqSHNrWTlhYzlMYk5NZnRjZTdMdmRYYmJIeEdQbDVUKzI1cXFiV2grUGVLSFpMN0dsTkRybnVLcG1vdmsvTGRjS3NKdkJBYjBsMkFUalBrL3dyU1M0QUFBQjcwMXBKNVh1VlhDWU43emZzdXVSNVg2OTFveDhUakhDb1B2ODYrakhodHpLcUU4dVg0THBoR1l2MU5oekVjYXNUckZzdFMzVkpZK2g5bHdrdk5kbTFUOGVoVlpMRlJSNFhhekxnNjU2MXhjVWt2SFI5UEZoTGRPbFRESzkyMk1jbUhYeHVWK2YxcmVPZnFpNzBubVFYZ1BNNndWK1YrRHYwR3M0QUFBQ1haTnp3MmtXdDVQS3RENDNmNmVVNUI3eUhFNHl3N3o0L2lvZytKcGE4cnQvdEVyenBZT0w2VFJ4bmFaVWZHY2J4cTJBYzJuMkhDUWg5U1Z4YU43akFObDB0WFRUdVlWdGNVdkpSWjhlRG5pYTZyR3hWeWFhVXNvajJoSmV1bGlodHVUNVl4RitYWFlWZWt1d0NjRDRuK0hjUjhhV0hKL2tBQUFEbmRPMTFIVzBUWGQrOWFWeExoTGVVQ2IrdUNTSG5HUE0rVlVhQVE3bjMzWHBoNTRTak9pYS83dUUyWFY5UXd0Sktjd0pDdmZmYTE2b2QxNWRRNFcydExVWTlIb2RXNXl6R3lPMlBLMzJ1aXJOdEpadFBIWHplc0hFL3VXcU02VU5OM0lGZWsrd0NjQVluOTVuNVJ5eWZGSEhqRHdBQVlMOWFLNmo4ckJ4NGEzV1g4Wm5HL0UzMGV3SUVPbFVyRmd4Ny9CV0hYUzROMDNPamhzU1FOejBmVnk5SlV3SkNUWlI1MWZOdHZJZ2x4dFlTWVBzK2J0eGR5TDUxMVhvOHFMRTZoV1N0alN2WmxGSWVJbUorNVBQNmZWNnpRRzlJZGdFNDRSUDdtazNjMS9KK0FBQUE1M1lkTm95Mm0vR3pXc0hsUnlhTlgvSGxHY1o4RlAyc2pBRDc5TVozN0pWZGt4ejZQSGs3T3RkcVlJOXM4M2pIMTc2Ty9qOWtPTHlRaWozdjRqUWUrSHgxUWZ2WXp1ZWZ0ZnJJbXhQcmY1czY5aEtsKzd4bWdkNlE3QUp3Z3VxRnl4L2hoaDhBQU1BaGpSdGYvOU9iM3JWVStLVGgvYzl4b3V0ZXQrT1MxS1ZJaGgyLzdTd2lwaEhSNVhJRXd3dGFDbWZyWmVKcWJBWWR0TnZiaUxpTmlHZjE1MjA5VHN3NzJLNVhGN2lMdmR0eE9hT3VrMGtYZForY2QveStMOCs1OGVwK05UNlJyenVJeTBrS2JFbWVPN1dLUk50VXNwazBmdGJPeDlrT3ppVlVkZUZrL0YwSUFFN3FoSDUxa2l6SkJRQUE0UEJhSjVFbUcveWZUOUUya2ZNeWxoTm81M0FOUEk3dUovMVhFNHgvcnYzZFB5SmlGS3FtY2g3alROUSsvaUVpcHFXVStYZjJyZXVJZUI3dGs4YlBlemJlckgrWFVjZnZmUjBSNzdmNC95MmZQNHVJRjk5cnUvVnRyR05rUzVXTFVZL2FibFovL3IzMmQ3L1c3OWhsRlk5QkxPK3IzbTF4TEJwMWNDeGFKYk4rK0Y2MWhGcmRZaFRMQktTV3p4cEh4TTBaajQ5ZEpZOHNJdUtobm5QTlYyMVMyMkZZeDdickR2cmVPRFBmL21CZnZ2UXhjaldHalU2MEh6NTZUbDlLbVdmbVE3UlZXTm4xdlA1NUIvc0huQVNWWFFCT1JEM1pWczBGQUFEZ09OZGtyVTlJUHRUS0xUOVZTbm1JdGllOXh6cyt0ZDVIWFQ0UlBZMklaNldVZjVaU1hwUlM3dForYmtzcFR5TGlsMWhXVFZqbzhlelF2NmJSVFpXR1VjTnJGN0ZNa25oV1NwbjhhSUsxbFBKUVNybUppQ2V4VEREWVZSK1c2WmxFeEpPeTlHenRwMFRFaStndUdlZnBsdi8vMXgwL1oxN0hxa2Y3VWlsbFVzZXRYY2VzcXlNZkx4WjF6UDJsbFBLa2xITHp6ZGo4b3BUeXoxaFd0SmwyK0xuYlZyUjUza0VmL2FVZWEyWS9hTXRaS2VWOUtlV1hhS3dHMGJPS1M0dTE4WEhSd1haMXNXMnJQbmRUeDhMWk4rMndHaDlYNXdSOU9wZlp4eGpaVlZMRDh5UEhaaDdMWkp0blpVMXR4NXVPeDVCdEtxNThhdnlzNngzMmxVRzBKYk51ZE0wQ2ZTSFpCZmZmMVJnQUFDQUFTVVJCVk9BRVpPYnJXQ2E2REVVREFBRGdLRm9udXo1czhYOWJKeDdHWjNBZFBPcm9HbmdSeTRtUFo2V1U2Yy8rWXlsbFhrcTVpK1hFaUNkYStabDVMSmVXK2VXYkNjUmY2dVRhczFoT3VpMjI3UGRYc1hzbGdWVmYzN2p2MWtuZWxpb1F3eU1tUzh4ak9ZRjc4NU1FZ29kU3lyUG9wdExGYU12L3YydGN0cHBrclAvM1JjTjJIYXVpMVVQZGYrNGVTK3dwcFV4ck96NkxicElSQjFzc1E5SWFvMG50bzl1MGFldkUvQ2lPYTE3M3VWOXFndWxxZlB4blJQeXo5dGZKRHUvYnV1eldvbzRaZHhzbUh5L3FPVUZydnp0V0V2THFtUERZR1BtaXRsZnJ2clZWdit0d3liNUZSTnpXNCsvdHQrZDY5ZHh1c2phR3pEdUs3OHNOOStkSlkyeTNIYThpMmhOUkxXSEVTWkhzQXRCam1Ubkl6STl4ZW10WEFnQUFuTlcxV2JRbGtDeTJtWUNPOXB2TXI4NGc3RjBzNVRLTDVXVGJkSnNYMVFtdUY3Rk1ab0J2dmEyVGF1OS9VamxsV2txNWplMnJCYlZNcXYvMm93bk5SL3I3TE5xU3U0NlJMTEdheEoxdHVJMlRhRTk0R1dUbThBRGJOdHFoRGFlMURhYzcvQXlPdEErOTJMWnlRTjNPWDZLdEd0SEs4MzIyU1RXdmlTczc3YzhOMi9ackhNZDYwc0YzSzB2VjQrdXFjc28vWThQS0tmVTg3UHBRWThaMytsM3IrSEY5aExaNHR1bjVUeDBqbTg5NXRxd3ExTVY1M3J4dTUvc3QydkpKUjJQSU5tMDZPZUI0MVhvZE1OdGxQNEZqa3V3QzBGUDFhWjdQMFkrU3NBQUFBSmRzM1BqNnlUYi91VTRRdGR4b0h0WnJ5bFBXZWkyOG11alorV25hT25ueVh2ZG56VTE5MG4vVFByVFlzbHJRc09HN3RmVFZQMXZHbXlPMXczekwvWGtTN1JXYkRyR3RWNW41Y2R2RW1wbzg4bXlIbjBOWHNYcS96VDcwdlgwcXVxbndjcjFKdFkzR2lod3RDU3ZUaHRjZXM0ckkrMjNhc3ZhRlRaSVB4aDJNR2JPR2Z2Y1FiUWtMencvY0hyZmJibThkSXllTm43dlJ1TlZCOHRLcXp6M1pZVHRYWThpODhmTUhXeVQzdENheFgyODZGdFZqUjFQaXJGTTlUczNmaFFDZ2YrcUowc2NqWFp3QUFBRHdWNjJWVW43YjhUWDNqZC81NWhTRFhhK0pXNitIWDdRa3VxeVVVbTVyNHRESWJuRHgzdGZKd0YzNjBTSWlYbVRtWTVWNzU3SGJKUGU4c2IvL3ErRzF3d08zdzdRaFFlTnR0RTJ3anFJdENXRlQxN0djM0h5SVpTTFNOSlpQMnk5T2ZCOWFWVHhxSFpjWG1ma2lsZzhKUm1ON1BtelF2M2R0ODJuamQ5dlZNWkpkMys2YVRGSkttV1htczBmMnphZEhHak8rUFM4Yk4relRoekxmOVZoVng4aHh3MmNQRHhpUG5ST2E2eGh5Rzh2NWw5WXhaTHJCNTgwemM5cTRYNDlqczZUV2xtdVdSVmpHa3hNazJRV2daK29halBjaUFRQUEwSXRydEt0b204eWRiVnVCb0hxSTVaSzJ1eVo5WEdmbTdZbE9qbzRhWHovWmR1bWlSOXhFeEJkN3cwVmJ4SWJMYmZ6TVl4UDlIVDFadiswWU40cjJxZ21IOUtFaC9yUE1uTVZoa2dGbUhZeGwxL1huVFcycldYM2ZQK3V4WlhwaSsxRm5TOE9WVXFhWk9XbnN1MC9qa1luZG1zRHg3TUQ3NUdEVjVqczY5TU9UODIwcXV2d2d6b3RIeHI3clk0d1ozeGsvNXJ1ZUUyYm02RUQ3N0c4TjJ6aHZIQ1Avc2NXKzErSnQ2MUk3cFpTSGx2YXNmdDJ5SDdZY0UxN0dac2t1TGZ2S3d4a2tWWEtCSkxzQTlFaDl3dWUxU0FBQUFQVEdNYXE2cko0NmZZamRKL0pXSmVJbkp4ano1a21RTHI5TW5meVp4R2tsQk5DdHM1c0Fxa2t1TDArd1g3YytkVDZOd3lTNy9MbUg5N3hhLys2WkdiRk1mbGtsd0V4Yko0RDNhTEtINzlaYWhlS3FaL3Zrc0I2M1g4VnhsZ2ZyeFRIM0IyTlZpMTh6ODY0SGNSckZZU3BEdFk2Um54cjJqYXN0WXJHclJYUzN4T1N6eG4xdHNXVzd0Q1N4WDJYbThHY0o5SFZmYWRrZVN4aHhraVM3QVBUbmd1WSszRGdEQUFEbzAzWGFLbUdrUmN1a3c0Zkc2OFJYY1pySkxpMFRrQTg3VnRKNXpDZlg3QmZ0MHdtT1hWZmY3Rk9EV0M1WE5JelRYWmFyaTZWOC90M3cybTJXZTVvZWNMeGNUNENaMTgvKzBMUEtMNTN2UXpVUjhhSGhPRDA2OEg2NTJnK2ovbm9WeTBvWXF3cHl3eFBkTC9mZHoxcmowcGNIUy85MWdNOVlkSEFPZElpRXVaWTI3U3o1dE1acWZvakc3eUNKZlhWZS83TUtXUzhiajY5OVRaYUVuNUxzQXRDUG14QVNYUUFBQVBybk90cVdBNWkwM0pDdnl6VE1ZL2RKZ1VlZkF1MnBscGovdm84dlZNdmRMK0x3eTBQUUQ5TStmcW42RlBjb2xrc3BET0owazFnMjFjVlkxaktadC9GWVhCTXhwa2RvazJFczd6R082L0hqdDlaalVWZGo2SjdlK3Zkb1QwcnRjcDljSlIvOUdxZWZ4TEp4WHo5QW56NEhoOWlPTHBJVkZudmVSMXJIeEU4bjNBZCtpN1k1b092NFFiSkxCd242cXJwd3NpUzdBQnovSWtpaUN3QUFRRCsxTG1IMDd3NXU2cytpYllMa3NhZEErM2FOZk5WQnZQWmxGdWVmVE1CMzlHVUpvN1hKck9mUm93bitBL3J6eEw3djJ5T1BHY05ZTHB2eEpqTnZTeW1USTMyUGFWL2ZPek5IclJWdzZuSHJWVzNyNFlYdGs5TURmTWJUTTRuVklmckcyVmZtMkdQaTNDRysreXd6WjdGN0JjUGhUOGFzbGdUOVJiUXZmd1ZISTlrRjRJZ2t1Z0FBQVBUMmV1MHZTMFBzNkUzOU9hWnhuRkN5U3pSV1R0bnpzaDJTWFRqV2VEU0k1VkljcjBKMW9aTlJxM08xTExQVDViaDZuNWt2SStMRkVaSzNabnVNOFN3emo3VmZqdXN4ZnFpM3M0RkQ5SlAvTzRFNHRKeEh6YytnSDN4b3ZMNTRHZDlQTW10Wnd1aWhMMG05c0l1L0NRSEFjVWgwQVFBQTZMV1haN0lkZ3pvaFI3di9Fd0lPTFROZlI4U1hXRTZxUzNRNVBUZlJuMm9MbzRqNDBrRUZyWXNlT3pQektqUC9pSWo3a09nQ2h6US9nMjJZTkw3KytqdGowakRha29nc1ljUkprK3dDY0p5TElva3VBQUFBL1haTzEyd3ZOU2VjbHN3Y1pPYm5XQzVESThubFJOV241WjlGZnhKZUJoSHgrUWdKTCtleVg0NGo0bzlvci93R1hPNHhZZEl5aG44bmliM2xtbVZXU3BscEdVNlpaQmVBdzE4VXZRdUpMZ0FBQUgyK2JodkhlVTB1aitwVG44QnBqRUdEaVBnY2xzMDZDejFOZUxtdi9Zek45OHY3V0ZaekFXanhvZkgxejcvNWMwdFN1Nm91bkR6SkxnQ0h2U2dheDNLTlpRQUFBUHJySEN1aGpEVXI5Tjlhb292S0VXZWtsTElvcFR5SmlMYzkrVXBYY2JoN2xQODRnLzF5N0RnS1J6YzhrK1BCTk5xV1pMcGVKYkhYS2wyN3htVVJFUSs2RmFkT3NndkE0UzZLUmlIN0h3QUFvTy9YYnNNNHoyb0tMeStrL2ZhWklQRFVIc0lCdkFtSkxtZXJsSElYRWI5RTJ6SVdYWGwxb09vdWUrdlBoMWlPcVg2R2U3clFqV25EYTRkbkZJZlc2aTdYcTNHODRUMGVhdVV4T0dsL0Z3S0EvYXMzU3orS0JBQUFRTys5T3RQdEdtYm1kU21sMTA5d2xsS21tZG55RnFQWTMxSWhFaERZcTNyLzZGRFZObWIxNS9kWVB0M3R2dFhoeHJsNVJOeGs1dHRZVmd0NUdjZVp4QjNVejMrLzU4KzU2dXQ3MXdvTGozbDNvUGFZcisyVDA0ajR3OTd5Mzdqc2FoSVIveGJDc3pwTzl2NWNkb3UrK2FiaDlTL3IySDNkOEI2V01PSXNTSFlCMlA4SjJLRGVNTEFPTGdBQVFQOWRuL0cydll6VEtGZSthTGlHZmhwN21Mak56R3ZYOVJ6QW13N2ZheHJMaWZQL1cvdHpSTVM4Smx1czkrK1IwQjllYlllN2lMaXIxVU91NnhoMnlQWjRHZnRQZGhuc2NZTDZlZU94NXJHeC82ckQ5cGpYZmZMUCt1Zlo2anQ4TCttbU1mSHpuTFFrcXl4cU5TWDZZOWJCUG4veXlTNmxsSGxtUGpSY2QxeGw1cnVHYzlOWktXV21PM0lPSkxzQTdOKzc4UFFYQUFCQTc5V0VodUVaYitKMVpnNi9uZWp1b1Zuc1BybTRyMjE4YmcvaEVQdG9CL3ZPYjZXVXlaYXZrOGgxWkhYU2NiWjJQQnJGOG43aXIvWFhmZDFidk1yTXdRR1dzdWg4Z3JwV1FycHUzRjhlMDFydGJSSEw2Z21URXpqMjl2bWNvR1ZNdlJYQ1hvMTFpOHljTjV4dlgyZm1iVmRqVm1aK2FUejNmOXVRVVBXaGNReHJxUVNucWd0bjQyOUNBTEEvOVVicFdDUUFBQUJPd3NzTDJNWlRxRnpUK3FScGw5VXhWaE9xcnUzWnE1cmMwSkowTWltbFBOa2gwU1hDUTFxOVUwcVpsbExlbDFKdWFydVdpSGdXeTRuN1NYUzdYTnNoMm45Y3g5SXV0WTcxbThSdzFQaitUMG9wZDlzbXV0Uks0YlNmRXd4VnJ1cWxhY05yQjlIUmNuKzFid3lQMVQ5cnRhdkZFZUsvaURPb2pnTXJrbDBBOXFSZXdOMkxCQUFBd01sY3cxMWZ3S2ErT29IditIdmo2OGQxNlltdXVMYm5FRVlOcjUyV1VtNGFYdityOFBmZnR3a3dFZkZMUk56RWNubWNGb2RLck9oc0xLMWovUGdBeDVwaHcvdmZORlJ6R2VueC8rMzM4OFkrL2s0VXorNDg3MDFINTNsZEpFZFBHMTgvT1VMOEh3NVF6UXNPeGpKR0FQdTlnSk9GRHdBQWNCckdGN0tkdzh3Y2xWS21QZjZPWFh5M2o1bjVwUFZtZm1iZWhVbEgrdTlEUXg4ZnhHVWsraDFFcmZLODZ5VHNkSnV4dVNZQlRDSmlrcG4zRGNleHF6ak1VLzZqekx4cldQSmp2YzkrYlAweXRhckN6ejZuWmV5ZjFxV3BkbVhwdkw5NmlOMnJlVnhsNW4xalFtQms1c2ZHc2ZKdGE5OC9zL1pzVFg1ck9zL3I2UHh1MWtIU3lHL1JVYVdhTFQ4VHpvWmtGNEQ5WE5pK0RqZkRBQUFBVHNuTEM5dldhVisvWENsbGtaa1AwVGFwTkl5SXo1bjVyR0VpWkJ3ZEw0a0VQL0d2aHRmT0cxNnJqM2ZycWlHbS8yb1ltMi9qTkpJMjMyVG1mTWZsdGxhSkxwK2pmZW1SM2k3aFllbTg3L29RYlFrQjQ4eU1YUk5lNnIzKzYzUHRjeWQrbm5lemJXSlpoK2QzSHpxSXhUd3pwM0c0dWFSWll5SWU5STVrRjREOVhKQzRVY0FsbUxqNEJnRGdUSzdqUnRFK2NUWTk0RmNleE82VkF5S1drejYzUFM5aC9pbmFKNWF1SXVLUE9oRXkzYUkvREdLNTdJSHJIVTdGMVM1alVCMzdYZ3RmcDFvbUVjZVorWGFYcFcvcTVQR3B4T2crTTU5R3hGYkhvZHBmN3pzNFhrZDBNRW45aUoyK1kxZFZhODVOS1dXV21mUEd0aC9YKy9aYkxTOVZLNEMwM3V1ZlN6RDQ3ajdZeFhuZTV6cHV2dDl3LzNyVDRYRnYwbUVzUmdlS3U2b3VuQjNKTGdEZGV4ZVdMK0o4emVvSitLVGVTQmtMQ1FBQVo2QzFxc3VrdFR6K051ck4raStOMTU3amlIamYxd1lwcFV3eTgwMjBUMm9PWXprUk1vbUkzMzQyMlZUak9vN2xSSWpyZWc3dDN3MnZmWldaa3gwU0IweXFkMi9hK1BxUHUxU2thbDF5NXdoeEdrZkVkV2ErcmNmUXhVKzI3U29pWGtWM0NZanp4NVl3cWxvU1FvZVorWHFUQ2ZodmprR2ZveTJaOVp5OWpmYWxiMFlSOGFXZUUzejRXU0xzV3ZXUFlRZmZYWUxCLzU3blBYU1F3QlQxZk8xZFpyNktaZldjVDkrMmF4MGZuOWN4cEt2enUwbFhTZVAxblBjUWMwcUxVR0dJTXlUWkJhQkQ5Y1RKT3NlY20xV0N5OE11VHhjQkFFRFByK05XQ1E0dFBoenlPNitWZjIvNTNpK2p4OGt1YTNIdHFuTHFPSlpQZGM5ak9iSDdiV0xCMDdBY01hZHJHTXVrcmhlUFhiZXZWU1FlQzl2ZXh1ZFo3SjZ3c0hWRnFnNFNsNDVWNVd0VlJldGRYY2JqOTIvKy9WOTFYQjUyL0xsdk4yekxXV08xbkhkMTZaeE5LazZNd3dPVWozbm9NRWFyYzRLSXI4bGU4N1crMXVYNXdDSzZxd0J5YnJwSVlGby9EcjZPaU5jSHFuTDFkZy85ZTkvSDVZZWVWM1dFblVoMkFlald2UkJ3QmhiMVF1OVRSRXdsdUFBQWNPYkdqYStmYjdORVRvZCthL3p1VjVsNTFmT3krdTlqbVpRejdQQTloMkdTbjM2YVJsdHkxMVVzS3hZOHhESnA0TnQ5ZXhRUnY0YUh0QTdoUTdSVjV4akdNbmxwSHNzSjBEOWpPUkcvYnJXYzNmUEd6NHFlSEFkR2NaaUV3M2twWmJMTi8yODhCcTBxVG55SS82MmdNNHhsb3VWMVNITFpwSjh1TXZNMnVyLy92dTkrOTVzRWd4KzI2YVR1SDZkV3pXaXloL3ZscmVmMW0zNEduQjNKTGdBZHljelgwZjJUQm5BbzAxamVESHV3aGl3QUFCZm1WZVByajNManVENXhQbzIyU1pwWEVYSFQxNFpabTlpeTFBcG5yNVF5N2VocDlPdVEwSEpzaytobU9iUmhMQ3NWN05PbExXbXg3VEZ2R3UwVDBNUGFIOTdZTlpySHlVbG12b3pUcWNRMmovNVgwZXZEUHZuSENYM2ZSWFJmMVdWMVh0OVNGZXd4TS9mOE9WZC9Fd0tBZHJYc3RRc1dUc1U4bGpjemJpUGlTVmw2VmtxNWM5SUxBTUNGWGN0ZFJmdERDNU1qYmtMcjhrblg5WHEydDBvcEQzRjVrN0ZjTG4zOUROUXFEcE1UK2JxZkxxaHAzdTlRaWUyREh0MDd0M0c4cGJlMi9xNnF1anc2WHM1aUQ4a2plL1IyajFYUTk1bEFyNm9MWjB1eUMwQTNYb2R5ay9UVFBKWTN5OTVHeExPSStHY3A1WmRTeW90U3ludkpMUUFBWExqV3FpNlRZMDVpMUtVWVdqNS9FS2RSQWVJbVRtZGlDMXFZakRvZmIwOWczRnBzdWFUUEtkdHBRcjBteDh4MTUvNm85ekp2VCtDclB0U0VYUjV2MDdzNGpXVFBoMUxLUGl2MTdDc0dpNUJNeXhtVDdBTFFxRDRGOTBva09MSjVMRXVydnE4WGZNOXF4WlpWWXN0ZEtXWHFhUUlBQVBqTHRWeHJva2Nmbm9pZk5MNytaZC9icWw3SFBBc0pMNXk1T3JFK0ZZbXphTXRGOUhpWnVPcnRoVFRISWlKdUd1Nkp2ZFdqZTdkL1RhTGZ5d1BOVG1ELzc1dWJHcmVMYmRNOVZnVjdNQ2ZBT1pQc0F0Qk9WUmNPZVZJOXJSZHpxMG90VDlhU1dwNlZVbTVyeFphcGNBRUF3RTlkTjE3THpYdnl4RzVySlloUlpnNzczbGoxU1c0VFIxeUNXeUU0RC9VWU1lbnAxNXZ0dVVKQlh5eGkrVURZcktFZEp5RUpyWS83MTIxUDk2L1c1S3BMYmM5Vll2T3NwMjM2NGtCdHVvK2wwMVNONDZ6OVhRZ0FtcW5xUXV2SjhtenQ5My9XMzgvclQwaGNBUUNBWGw3TGZlakRScFJTNXBrNWpZaFJZeXg2UDhGZVNubkl6R2NSOFRFOGRNS1pLcVhNTXZNbUl1NUY0eXphOHlZekl5TEdQZnBhaTRoNGNRSGhiMDUwV2ZNaUlyNDQ5dlJ5LzFyRThtSFVjK3R6bDlpZWkzcWU5emtpcm5yeXRlYXhUSFNaSHlnRzA4eWNSOFN3bzdlYzZZK2NPOGt1QUEweWMrd2loN1dMbWRuYVNmQy92L1AzL3oxcEZTNEFBRGpxdGR3dzJtK2lUM3EwU1IraUxkbGxIQ2RTVGFKT0Fxd1NYb1o2TStlb2xETEp6S2R4MkFTSjk3R3NlR1cvNnI0OSs1VHdzcHFNbjU5NTJHZlI0UVQxTjVQd2d3TnV3NmVJZUdNdittbmIzR2JtbnhIeExvNTduMTZpUzBmN1drUTh5Y3o3SG95WnM5cW1oNjdTODF2dHoxMjlGNXcxeVM0QWJWeHNYSlpaTEJOWi9veXZsVmZtRjNDREFBQUF6azFyVlplSFBsMEgxSW54bGttZVFXYU82MUlOdlZjclh6eUpaZVdMNndOKzlDSTg4TUxoK3ZsTlp2NDdEblB2NlgyZE1CNUV2eXFRYU05dXpXSzV2TXE1VDhhL2o0aTNYVTlRMTJQUG9SSmVackZjMG1VWTdqOXZlaDQwaTJXQ3dPZ0lYMkVhaDF2bTVwTEd6RS8xWE84WTUxNXZTeWwzUjlyOGgrZ20yV1ZSM3d2TzJ0K0VBR0EzbVRrS1Q3dWNzMmxFdkkzbG12QlB5dEtUVXNxTFVzcGRLV1ZTU3BsS2RBRUFnSk0wYm56OWh4NXUwNlR4OWM5UHFRRkxLWXRTeW90WUxpMng3K3V5UmIwMjlIUXNoKzduZDdXUEwvYlp0MHNwcThwT3Y0djYzdHZ6U1N6dk9SM2EremhlMVlscC9meDltOWR0dk4xWDBrR04zeTk3YnNPSHVoMkwrbmtTS0Rac20xTEtzM3E4UGxUTUZoRnhXMHA1SnRGbEwyMzZVUGUzOXdmODJHa3M1d0x1anJqZDgrZ21TZVZCditRU1NIWUIyTjFMSVRnYnF5em4yL2lhMlBKc0xhbEYrVWtBQURnVEhTeEhPNjgzMy91bU5SSGp1aTd2ZEZKS0tRK2xsRjlpT2JrMTM4TkhUQ0xpbDFPcGVzUDUyZU5rM3pTVzkwRFcrN1lud1BmZm5xc0orV2R4bUtTWDFSaDJlOHhKejVwUXRhOUVuM2tzazdaK09jVFM0VFVKNWRrZWpqdnpXRllIK2JaQ3lOU2VzMVg3VE9xWWVSdjdTNFpkeFBJaHlWOUtLZTlGZmUvNzIyMXQwMG5zTDVGcFZmbXFMMHRSZFpGWUwwbWJpeURaQldBSHlycWVoVmtzYnhROUthWDhzMTVJdnBmWUFnQUFaNisxZ2trZnE3cDA5UlRvOWFrMmFuMVE0WmRZVnNHWVJOdGt5RHkrVG1MZGVDcVdIdlR2OWNtK3Q5RTJnVHVKWmRXSVo5OVdxNjE5M1gyUnc3VHB0Q1pNUElubC9ha3U0ejZMNVVUL2FneWI5MlNiWjJ2YjNEcE9MOWI2OGxFU0V0ZU9PemZSbHBBeWk2K1ZwYjkzSEZkeGFiY3g4MzJINXdVcjA5cFd2OVNISkowZkhQQTh0NVJ5VTQrRE45Rk5jdVk4dnM0UFBPbFRZbk1kQzFyRzdwbDVEaTVtZkJBQytpb3pQOGR4MWxlOFZLc0xMRGJybitOWXJoZkphWm5IOHNiMHhQSkRuZTBMS1FvSGQ4dzFZNTJiT0RkeGZzS3A3OGVqaVBnc0VvNWJ3RVdOKzZPSStEV1cxWHl1NHZ0VmZhYXhuQVQ3dlo1L21CemdGUHIzVmUzZlQydS8vdDYxeWlwNVpiYld2MDNPOXJkTmgzV2N1dHBnM0ZwdjMwVkUvRmwvdjVjMmJqeVAvdUYxM1RmajlHcjdmN1NkODdxZHZSeW42OE9SMTNWYnJoeHplajF1cnZyYjZpZCswRTVSMjJsdit4Yk4rOXpWTitkNm94Lzg5M245bVVYRXYwOWgzOHZNLzhUdTFTaHZWQ1hrVXZ4ZENBQjJZZ21qMHpLSmlBK0hLR1Y2Z1JlSUFBQUF2VlN2QVYwSGNxNzllNVhFWWdtTjgyblRlU3duWXg4dWFKdlBacHl1aVJBVFBma2t4azNPWjU4N3kzTzl6THlPM1JOZEZtRlpRaTZJWkJlQTdVODBodUhKL2xPd2lPVzZsS3E0N005QUNBQUFBQUFBb0RPdkdsNzdvQW9SbDBTeUM4RDJyb1dnMTFaSkx1K2QxQUVBQUFBQUFLY2dNOGZSOXJEMWI2TElKWkhzQXJDOXAwTFFXNU9JZUt1U3k4RU1oUUFBQUFBQUFOclVSSmY3aHJlWTF1VzY0R0w4VFFnQXRqclpHSVRLTG4wMGo0aG5wWlFiaVM0SE5SUUNBQUFBQUFENHE4eTh5OHo3ekx4NjVQOE5NL00rMmhKZElpSStpRHFYUm1VWGdPMk1oS0IzSmhGeGE4bWlvL2lIRUFBQUFBQUF3SGVOSTJLY21ZdUltRWJFbjJ2LzlvOVl6amxkZGZBNTgxTEtSTGk1TkpKZEFMWmpDYU4rdVhFQ2QxUlhRZ0FZWndBQUFBRGdwMWFyQnV4cjVZQzNRc3dsa3V3Q3NKMlJFUFRDSWlKZWxGS21RbkZVUXlFQURuQWpBQUFBQUFENFBsVmR1RmgvRXdLQXpXVG1JRHhoM2dlTGlIZ20wYVVYaGtJQUhPajRDd0FBQUFEOEwxVmR1RmlTWFFBMk54S0NYbmhXU3BrSnczRmxwdjBCT0JTSnBnQUFBQUR3djFSMTRhSkpkZ0hZbk1tMjQ3dVI2TkliUXlFQWpEY0FBQUFBY0RRM1FzQWxrK3dDc0xtblFuQlU3MlVvMngrQWkvU3JFQUFBQUFEQVh6eVVVcWJDd0NXVDdBS3dPWlZkam1jZTFwMjBQd0RHR3dBQUFBQmdIcXE2Z0dRWGdFMWs1aUFpQmlKeE5EZWxsSVV3OUdwL01Qa01ITXBJQ0FBQUFBRGd2MTZZTXdISkxnQ2JNckYvUEZPbCtIcG5KQVRBSVdXbWNRY0FBQUFBbGc4SHo0UUJKTHNBYkVxeXkvRll2cWgvbmdzQmNHQWpJUUFBQUFEZ3d0MlVVaWJDQUV1U1hRQTJZd21qNDVpcDZ0SkxJeUVBRGt5U0hRQUFBQUNYYWhFUnp5UzZ3RjlKZGdIWXpGTWhPSXJmaEtCZk12TXFJb1lpQVJ6WVZXWWFld0FBQUFBNEZmT08zdWQ5UlB6aXdXRDRYNUpkQU9pekJ5SG9uWmRDQUJ6SldBZ0FBQUFBT0FXMUNzc3ZFWEVieTdtTytSWXZuOVhYL1ZKS3VTMmxMRVFVL3RmZmhRQmdJMWRDY0hBekozQzlOQllDNEVoZVJzU2RNQUFBQUJ4V3JTWlFSQUpnNi9GekhzdktMTzlYZjVlWm83WC9zdnI5SXBZSkxxR0NDMnhPc2d2QVpnWkNjSEJPNkhvbU02L3RDMXc0Q1hqSE5jek1zYldKQVFBQUFEaFYzeVN6VEVVRWRtY1pJNEJIWktiSi9lUDRVd2g2eHhKR0dKY3dEZ0VBQUFBQWNIU1NYUUFlWndtajQ1Z0xRWDlrNWpBaXJrVUNPTEpSWm82RkFRQUFBQURnc2tsMkFhQ3Zaa0xRSzIrRUFEQWVBUUFBQUFEUUI1SmRBT2lsVXNwQ0ZQcWhMdVUxRmdtZ0o0YVplU2NNQUFBQUFBQ1hTN0lMQVBDWTEwSUFFUkVoQ2E4LzNtU21aUVlCQUFBQUFDNlVaQmVBeDQyRWdFdVZtY093WkFpc1dGNnRYejdXeWxNQUFBQUFBRndZeVM0QXdNOUlkQUg2YWhnUkg0VUJBQUFBQU9EeVNIWUJBTDRyTTBjUk1SWUpvTWRHbVhrdkRBQUFBQUFBbDBXeUN3QzlsSmxYb25CMDc0UUF2aXFsVEVXaGw4WVNYZ0FBQUFBQUxvdGtGd0Q2YWlBRXg1T1pkeEVoNFFnNEZlUE12TTlNeDQ3bEdEN0l6S0ZJQUFBQUFBRG5TcklMQUgwMUVvTGpxRlYxM29nRWZOZENDSHBySEJHZkx6bkpJek9IdGNyTmw3QU1IUUFBQUFCd3hpUzdBTkJYdndyQjRkV3FDSllEZ1IrYkNVR3ZYVVhFSDVsNWZVbmpkbWFPTS9OemZFMXlVZUVHQUFBQUFEaHJmeGNDQUhwcUpBUkg4UzRzWHdTY3RrRkVmTXpNaDRpNExhWE16M0VqYTBMUDg0aTREc2t0QUFBQUFNQ0ZVZGtGNEhGeklUaUtRVjFPaHdQSnpOZGgyUXQ0ek85Q2NES3VJK0pMWnQ3VnFsV25Qa1lQTXZNNk0rOHo4ejhSOFRGVWNRRUFBQUFBTHBSa0Y0REh6WVhnYUY0SndXSFVDZ0h2UkFJNFEyOWltZlJ5bjVuREV4dWJyekx6ZFYyaVNJSUxBQUFBQUVBbDJRV0FQcnMraDZmeCs2NVcwTGtYQ2RqSVZBaE8waUNXU1NKZk12Tnpabzc3ZUh4WlMyNzVXS3UzL0JITFJNU1JKZ1FBQUFBQStPcnZRZ0JBancwaTRuVkUzQW5GZnRSRWw4K2hTZ0JzYWlFRUoyOVVmKzR6Y3hZUm55SmlXa3FaSG5qOEhVWEVNQ0orallpcmtOQUNBQUFBQUxBeHlTNEFqek94ZVZ5dk12TjlLVVU3ZEV5aUMyeXZsRExMVElFNEgxZjE1MDF0MTFuOStYZjlkUkVSczEyT1FYV01IZFNmcTRqNFIvMTFXSDhBQUFBQUFOaVJaQmVBUjVqWVBEclZYZlpBb2dzMG1ZZGtoWE8xU243NWRzeGNiL3Y1RDE0NzFDOEFBQUFBQUE1RHNnc0FwK0JOWmo2VVVtWkMwUzR6cnlQaVBpUzZ3SzdtSWFuaFVnMjFQUUFBQUFEQThmMU5DQUEyTWhlQ283dlBUTWtaalRKekhCRWZRNklMdFBoZENBQUFBQUFBNEhna3V3QnNaaTRFUjNjVkVlK0VZVGVaT2NqTSsxaFdkQUVjRXdBQUFBQUE0R1JaeGdoZ00zTWg2SVZ4WmtZcDVVWW9OcGVaVjdGTWNya1NEZWlFSmRVQUFBQUFBT0NJVkhZQjJNeS9oYUEzeHBuNVdoZzJVMlAxT1NTNlFHZEtLWkpkQUFBQUFBRGdpQ1M3QUd4bUxnUzk4cTR1eWNNUFpPWlZabjZPNWRKUEF4R0J6azJGQUFBQUFBQUFqa095QzhCbTVrTFFPK1BNL0ppWkVqbldaT1lnTSs4aTRvK0lHSWtJN0kzcUxnQUFBQUFBY0NTU1hRQTJVRXFaaWtJdlhVZkVINWs1RW9xSXpCeEh4SmVJZUNNYXNIZC9DZ0VBQUFBQUFCeUhaQmVBemMyRm9KZUdFZkU1TTk5ZGFwV1h6QnhuNXBlSXVBOUxGc0doVElVQUFBQUFBQUNPUTdJTHdPWXNXZEZ2cnlQaVM2MXVjdlpXeXhXdEpia01kUUU0bkZMS1BDSVdJZ0VBMEhSZHMxcWVkdDEvNnQrTkx6UW1vN3I5Ly9rbUxwOXJ2RHpnY0w3N3diZHRmckg3QVFBQWJFS3lDOERtTEZuUmY0T0l1TS9NczAxNnFUYys3eVBpUDdGY3JtaW8yZUZvcGtJQUFHZDNydDFpSklvYngvb3FNLytJWmVMKzlYZXU2NjdydGQwZm1YbDFJVEVaWk9ibmlQaGN0Ly9icEpaUmpaZWxmTTkzUC9pMnpWZjd3WmRMMlE4QUFHQWJrbDBBTmpjVmdwTXhqSzgzaE80eWMzaktHMU52Z0wyclZWdytSOFJZRTBNdi9DNEVBQURiWDkvVTY1cE5KdSt2WXJsczdkVUZ4T1JMTEJOYU5ybmUvYXppeDBYdEI4TllKamxkaXh3QUFId2wyUVZnYzVZeE9qM0RXRlkvK2JJcS8zc3FKWi9yVTZXckJKYy9ZcmxNMDFDVFFxOU1oUUFBWUt2cm5FRXNKL2kzdVM0YnhESzVZM2lrNy96NkFKVlU3cmVNU2NUeUFRL1ZQdmJUNXUvMjJlWjFQL2k0WTV1N0x3QUFBSlZrRjRBTmxWSVdJZUhsbEYzSDhnYmlmMm9wN0x1K2xINnU1YXBIOVR0OXpzeU01UTFnQ1M3UTcrUENMQ0xtSWdFQXNMRjNzZjBFZjlUWHZEbkN0ZHA5L2M3Ny9JeTcyS3k2eC9mY2tuSGIyUUFBSGtwSlJFRlU2MUtkWDV0L3JOZmkrN1Rya3NRRGJRNEFBRi85WFFnQXRqS0wzVzlDMFI5WDllZk5NcThrWnZYbnovcnJ2SlF5MzhjSDF3U2JRZjM4WCt1dlEwMENKMnNhbGhZREFOamtXbWpRZU40MHpzeTMrN3BXKzg1MzNYU0ptVll2VzY1dE0zTlVTcG5xWWFmUjVoM3NCNlBNdktxSjl3QUFjTkVrdXdCczUvY3dxWG1PVnNrdi8xV1RZT2J4dFdyRExDTCtiOHYzZlZwL0hZUWtLVGhYbnh3WEFBQTJjdDNSZTd6ZjU1ZXNTd1BkSCtJYXJuN1dzUEZ0bm9mbE5idG9oMjJYMTlyVnFJUFB1UTZWaHdFQVFMSUx3SlllUXNuWVN6S01yemNlUjhJQmZNZFVDQUFBTnI2K2F2V3ZmWDdCV29uell4d202U0dpbTRRYUQxYTB0Zms0ZGw5ZTYxanQ5YXVXQXdDQWlMOEpBY0RtU2ltTDhQUU1BSDg5TGp5SUJBREFRZXd0c2FNbVBSeXF1c2ZLVUpNZVQyYStqdVVEVFlNVCsrb0RyUWNBQUpKZEFIWXhGUUlBMW53U0FnQ0FnNWp2NDAwejgxMGNwNHJyUXBNZVIyYmV4N0tpQ3dBQWNLSWt1d0JzNzRNUUFMQm1LZ1FBQUkvcUlySGozMTErb2N3Y1pPYkhpSGg5cEpoMFVUbDJybXR0M2VaL1JNVDRTRitoaS9iNlhVc0NBSUJrRjRDdGxWSm00ZWtyQUw0ZUYrWWg0UVVBNERFUFBYbVBpRmdtUGNSeTJhTHJJNTVIVHFQOS9vTEVoODNiL0txMitkV0o3d2V1UFFBQUlDUzdBT3pxUVFnQVdLUHFGd0RBVDNTUUlEeXRENTgwcTBrUFgrSzRTUThyTGZjWDVxV1VpZDYxVVp1UDR2aUpMbEZLV1VURXBMSE5wMW9VQUFBa3V3RHM2cE1RQUxCR0VpUUF3T051ai9UYS84ck1jU3lUSGdZOWlzbmltREU1ZHoxczg3Y05iWDZqUlFFQVlFbXlDOEFPU2lrUFlTa2pBTDRlRnhZaDRRVUE0TEZ6cGxuc05sbC8wMFZWbDh4OEhSSDMwWitraDlWNTVMUFkvaDdEKzNwdmdwKzMrYnZhNW4zYUQrWU4rOEZVcXdJQXdKSmtGNERkVFlRQWdEV1dNZ0lBZUVSZGR1ZEZiSmJjc1lpSUYxMHMxVk1UWGQ3MU5DYXpXQ2E4ekRlTXlVMHBSVldYeDl2OFhVUzg3bW1iUDhUbVNVNnJOcDlvVlFBQStFcXlDOER1VEdvQzhGLzFodlZjSkFBQU5qcHYraVdXeTdsODcveHBYdi90bHc2cmx3eDZIcE5aUkR5SjVkSkVzeC9FNUgxRVBKSDBzTEdybnJmNWRJdjlRSnNEQU1BMy9pNEVBTHNwcGN3eWN4WTl2M2tDd0VGOWlJZzN3Z0FBOE9nMTlTSWk3aUxpTGpNSGE5ZldzL3B2bHhxVDl4SHgvcHVZek92U045Z1BBQUNBU3JJTFFKdmZvbWRyUHdOd1ZKT1E3QUlBc0pVNnFUOFZDVEhSNXRvY0FBQTJaUmtqZ0RZUHNkbjZ5Z0JjZ1ByRTdVUWtBQUFBQUFCZ2Z5UzdBRFNvVDkxTVJBS0FOUitFQUFBQUFBQUE5c2N5UmdEdGZvdUkxOElBUUVSRUtXV2FtZE9JR0lrR0FIQk1tWGtWRVlPSUdOYWZpSWhaTEN1VUxrb3BNMUZpaDM0MWlJaXIrc2YxMzBlc0xjTlRTcG1LRmozdXg2dnJ0Zlh4Y1ZISHlJaUllYTNjQ1FCQVQwbDJBV2hVU3BsbjVpUWl4cUlCUVBVMkpMc0FBQnRZUzBqWjFuZVRWVEp6SEJIUDY3bkk0SkhQamxnbUovd2VFUS83VG43SnpHRjhuVlRlMWs4bm50Y21ybi9rWHcxZi9hckdhcHQ3QmRNTlkvSnRza2huTWVtNGoxNUh4TlA2WFgvV3I5NTgwNy9tc1V3ZStCUVIweTYvN3dadFB1aHBtKzlsUDJqc1N6OGNVNDR3dG0wVnp5MzJzMVVmSG0wYS84eGNKYjhjWkl3RUFHQTdrbDBBdXZFaEpMc0FVTlhxTHZQWS9TWTJBSEE1M3NWdVNiTFRpSGdXOGQrSjNOY1I4U3EybjF3ZTFaODNtVG1MaU45S0taTTliZXM0MXBJaHR2UTJJdTUrOHUrZjk5eEdXNThTYnZqL3JocSsrMk14MlZsTnlCaEh4TXZHYzlwaC9ibXU3enVOaUE4ZDliRlRiZk85N0FlbGxFVm1mb3pkRTB6bUVmRkxoekg4bytHMW5YeVhtaEQxTW5hL1p6ZjRab3ljeDdMQzg2UXViUTRBd0JIOVRRZ0EydFduVGFZaUFjQ2F0MElBQU94Ym5jejlJNWFUNTRQR3Q3dUtpUHZNL0xKQjFRek9zejhOTXZNK0lyN1VQalhzK0NOR2EzM3NXc1E3OTlEdzJtR3R4dEpGUDdvKzRuWkVabzR5ODNNc0U2TEdIY1ozR010RXFDK1plVmNURFFFQU9CTEpMZ0RkTWFrSndIL1ZwMVdWdVFZQTlpWXpYOGR5TW5mWThWc1BJK0p6WnI0VDVZdnFUK05ZSnJtTUQvQnh3NGo0bUptZkpReDA2bFBqNjE5MjlEMmVONzcrdHgzNzhLQld0L2tjKzExV2RoRExaTEEvSkFZQ0FCeVBaQmVBanFqdUFzQjMzQW9CQUxBbm85aHRxWlZ0dkphTWNQN1dxcm5jUjN0MW9GMzY4WmV1S29wY3VsTEtRMFMwTEsvVFZiV2RsdmVabFZMbU8vVGo2MWdtYXgyeVl0QXdKQVlDQUJ5TlpCZUFidDBJQVFBckVpRUJnRE13aXVWa3JvU1hNMVRidGV1bFhyWTFxSDFNd2tzM0pnMnZIV2Jtc0xGUFhVZGIwdFNISFQ3emRVUjhqTU1uYTYyOHpzeVB4a2tBZ01PUzdBTFFvZnJreVVRa0FGaGptVHNBNE5SZHhmNnJ5SEJnYTRrdWZVZ3lrZkRTblErTnIyK3RqTks2aE5IRGx2MzR2aWZqMDNWSURBUUFPQ2pKTGdEZGV4dHRKV01CT0NPMXVzdEVKQUNBRXpldTFSTTRIKytpSDRrdUs0T0lVQjJqL2ZwakZoSHpocmQ0MmZnVlJnMnZmZGhtQ2FPYTZETHVVZml2WXJrY0dBQUFCeURaQmFCajlhTDhONUVBWU0xdFNJUUVBRTdmRzRrSTU2RXVOVFB1NFZjYlJzUWJMZFNzcGJyTDFhNUxHZFhLUE1PR3ovNjB4V2VOZTlxSHJ6TlRKU3dBZ0FPUTdBS3dCNldVdTJoN2lnYUE4em91TE1KeVJnREE2UnVFNVl4T1hrMVk2blAxaWRlN0psdndYNVBHMSsrNmxGRnJWWmlIRGZ2dzFRbjA0V3ZkRUFCZ3Z5UzdBT3pQalJBQXNGSktlUjhSTTVFQUFFN2NXQ0xDeVhzZHk4U2xQbFBkcGUzYVk5NTQ3ZkYweDllMUpIZzgxSWNFZnFvbWEzMDhnV2E0VndrTEFHQy9KTHNBN0VrcFpSb2JQcEVDd01XUUNBa0FuSU94RUp5MFY2ZlF4eVJWTld0Wnl1aDYyMFNORHBZdzJ2VDd2bW44bkVNWmhLUXRBSUM5a3V3Q3NGODNFYkVRQmdBaUlrb3BzN0NjRVFCdytsNEt3V25LekhGMFY5VmxGc3ZsY3Q2dS9VeWp1L3NnbG9GcE16bHcvRWNObjdVb3BUeHMwSCtIc2F4TTFLVjU3YmZUanZ0dmhDVzVBQUQyNnU5Q0FMQS9wWlJGWnQ3RWFaUlhCZUF3eDRhN3pId2VFVmVpQVFEc3lTeVdrN2IvdC9aM1Q2TnRNbnJkTURPdmFpSXZwK1Y1NCtzWEVmRmJSTHovMlpJem1UbUtaVldMVWVOM2ZhL0pkcjd1V0dUbVEreWVOUFE4dGt1WWFVbUMyN1F5Y2xlVlVxYXhyQ1R6M2FXVGFwV2FsN0dzWXRXYUhQWW1WUGdFQU5nTHlTNEFlMVpLZVdpOHVRREErYm1KaUQrRUFRRG8yQ1FpM3BaUzV0Lzd4N29zeVp2b3BqTENLSlpKTlgzeFdQVzhsbVNmU1VUOCswejZ5S2podGJPSWVQYXpKSmVWdXJUek5EUHZZL2RscjBhTmJmNHlkbC91NWx6YS9GUHNmajlxNDlmVjZpVXR5ZndmTnZ5TWNXTThGaEZ4ODFnVm1acklOOHZNdHhGeEgyMzM5TWFaZWJ2SmZnTUF3SFlrdXdBY3hrMjk2QjhLQlFDbGxGbG0za2JFTzlFQUFMcTY3aXlsVEI0NUIxbEV4RzFtL2huTENkd1dUNk5IVlRkS0tYYy8rL2ZNdkl2ZEV6MCsxT1NOazFhclZleGFwV0lSR3lhNmZOTXVON1hLeTNESDd6ejZVZXczYVBPbnNmdDltTE5vODFoV1RMbHY2RFBYbXl3dkZHM0pJUE1OWS8ycU1SYXJQanpib3Y4dUl1SkZZOUpXMU5lcVVnUUEwTEcvQ1FIQS90V0xZeVZMQVZnL05yeVB6Y3QxQXdEOHpPMWppUzdmbklkTUl1SzI4VE10eVhoNmhvMTliTmZLRkIrTzlKMWRjeXpiYk5Md0Zwc3VlM1dJSll4YUVtcTJUblQ1Sm80MzBWYko2cVhlQ0FEUVBja3VBQWRTbjFKNUt4SUFyTG1KaUxrd0FBQU5waldKZHR0cjFQZU41eUZEb1Q4NUxRbEt4MHJTMXMvYWZXcDQ3YU1KSm5WNXRIMHZZZFJhTGZudHJva3VhMW9TQks5cW5BQUE2SkJsakFBT3FKUnlsNW0vUnR2VEtBQ2N6M0Zoa1prdkl1Sno3RjVTSGdDNGJMODF2UFp0dEMxeGN0WEJCREtITTkzeGRZdUdxaTRSeXlXdk9ONDF4ME5tTG5hODNoaHNzSlJSNnhKR200d2hMeHMvNDMwSGNaeG01aXgyVCt5NWpyWXFPd0FBZkVPeUM4RGgzY1R5YVJRbG53R0lVc29zTTIrallhSUpBTGhZaTBjbW9SL3owSGdPSWxuM3RNNDdwN0Y3d3N0T012TXVJa1lOYnlGUnBoc1BFVEhlOGJYUDQrZVZmWjQzZks5TmsvWDZVcFhvVThOMytWVTNCQURvbG1RWGdBT3JUL0hmaEtmNEFmaDZiSmpVeWwrdlJRTUEyTUswZyt2VGxrb0Y4QmQxcVpaUkxKTlVyc015UkgzeFcreWU3REo2cEwxYktyczh0SDZIVFY2Ym1aODdpbU5MZnpiT0FnQjBUTElMd0JIVXAvaHZJdUtqYUhER0pySDd6VFM0eEdQRGJiMVpiTDhCQURiMVp3ZnZzUkJHSHBPWncxaE85QS9pcjVQMi80cXZDUUFqa2VydHRjWXNNK2V4VzdMRzhDZExsclVrdXN4S0tmTU4rbDVya2toZmtrenNId0FBSFpQc0FuQWtkYzNrbTdCc0JlZHBGaEczc2J5Uk5oSU8yTmh0TEcvR2V1b1BBTmpFdElQMytOMDVPK3UrcWM1eXBYK2NqWWZZdlpMa3kzcWQvNjJXWmFZMlhjSm9jRTc3VmlsRmdpRUFRRWYrSmdRQXgxTkttVVRFZTVIZ3pNd2o0bG05Z2ZOSk9HQ3I0OElpSXA3RjkyOGtBd0RBM21UbWRXWitqSWoveExJUzdldVE2SEpPUGpTODluckx2OS9FSVpZdzZoc1BOUUFBZEVpeUM4Q1JsVkp1WTduY0M1eURSVVM4V0h0U2FTb2tzUFZ4UWNJTEFMQXA1d3MwcTBrdVgyS1o0SEl0SW1kN25URnJHRE9HM3k0bmxKblhzWHZWbFFjVlRnQUFhQ1haQmFBSFNpazNJZUdGMDdlSVpVV1gyVnJmbnRXL0I3WTdMa2g0QVFBMlBXZUFuV1RtSURNL3h6TEpaU2dpRjZHbHVzdm9tejgvYjNndlZXQUJBR2dtMlFXZ0oyckN5NE5JY01KZXJDZTZySmtLRGV4MFhKRHdBZ0RBWHRRcUhWL0NNa1dYcHVXKzA4dHYvcnhyRmFCRnVQOEZBRUFISkxzQTlNdE5tTlRrUlB0dUtXWDZnMy83WFhoZ054SmVBQURvV2sxMCtSeTdMMEhENlY1ZnpHUDNCMUt1TW5PNDFvY3NZUVFBd0ZGSmRnSG9rYlZKellsb2NFSnVTaWsvNjdOVElZSk9qZzBTWGdBQWFKS1pnNURvY3VsYWxqSmFWWE41MmZBZWxqQUNBS0FUa2wwQWVxYVVzcWhMR2sxRWd4UHdXS0pMMUtXTlBMVUZqY2VHV0NhOFRFVURBSUFHOTNINFJCZEoyLzNTeFZKR095OWhWRXF4aEJFQUFKMzR1eEFBOUZNcDVTWXpJeUxHb2tGUFBacm9zdVpCWDRibTQ4SWlJcDVsNXIzOUNRQ0FiV1htS0haUFV0alVOSllQTy93Wnl5U1hhVVNzbGsyaUo5Y1ZtZm13WTErNHF2MW91T1BIVDNic1UyOGErdVBiSG9WZjRoY0FRSWNrdXdEMFdFMTRXVVRFYTlHZ1J4YXhUSFRaNW1tczM4UGtQSFI1YlBnekl0NkpCZ0FBVzNqVjBmczh4REtaWlJyTFNoMC9uY0N2RC9MUUw1OWk5OFNuKzRiUDNXVUpwWlpLc2NOU3lsUnpBd0NjSjhzWUFmUmNLZVUySW01RWdwNVlSTVN6SGNvT1Q0VU9PajAydkkvbHNrYVdDQU1BMkwvQm1XeEhhMVdYdHhIeHoxTEtpMUxLWFNsbCtsaWlDNzI5bnBnMFhFc01kM3pkZkpmKzB0akhoclVTRFFBQVowaXlDOEFKcURjaFRHcHliS3RFbDExdVRzMGpZaTZFME9teFlSb1JUMElwYkFDQWZiczY5UTNvWU1ML3BpYTQ3SEpmWW5TQ0lSdGVRTDkrT1BEbmZXaDQ3YlRodFc4Q0FJQ3paQmtqZ0JOUlNwbG01ck5ZbG91OUVoRU9iQmJMUkplV2hLdHBXTW9JdWo0MnpDUGlTV2ErQzB2ZUFRRHN5Njluc0EwdDl4RW05U0djUzRyZjA0aVluSG0vL25UZ2EvU1dlUDRldXlkTmpUSnozTmlISXpNSGpmdFJXRklKQUtCYmtsMEFUa2dwWmJhVzhISXRJaHpJUXl5ZjRtdXRMUFI3U0hhQmZSMGZialB6OTNwOEdJZ0lBRUNucmpQejZzU1g3R2s1Ui94OTF4ZG01akNPZC8raUpVRmluSmx2YTNMNXVWNURQR1RtUEE1VHhXYldHTXVIYUt2UThpNHpaNDM3Y091OXVJZXd4RE1BUUtjc1l3UndZa29waTFMS2k0aTRGUTBPNEcxZGo3MkxKYlFlaEJQMmVueDRpSWhmN0dzQUFIdnhPVE1mcmVxUW1ZUE05SERLVis5TytMdC9yTWs2bTdUNXFWYmdQZFMxUThzU1JsR1RWT1lOYnpHbysvQm9seGRuNWwyMEoyMTlNaHdBQUhSTHNndkFpU3FsdkkrSUo0MFgrL0FqaTRoNFVVcTU2N0RQTG1LNUhCS3d2MlBES2lIeVJkMlBBUUJZYXIwV0dVVEVINWw1bjVuWHF5U0l6QnhtNWlnelgyZm14NGo0VDBTOE9yUFlQZDNsUlprNWp0T3VTbnRWMi94ZGJlTlZtMS9WUDk5bDV1ZmE1cWU2blI4TzlEbGRKTlg4MXNFKy9MbnV3OE1OKy9BZ00rK2pyYXBNMUdzekR5VUFBSFJNc2d2QUNhdFB0anh4d1V6SFpoSHhyRmFKNk5wVWVPRWd4NGRWbFplSmFBQUFSRVIzaWNEamlQZ1lFVjh5TXlQaVMwUjhqbVVGazNPdDZES3VpU3NieTh4M3NWejI1Wmk2dVA0Y1JNVHIyc2FyTnYrai92bE43TDVNVWwrdUcxb3JwbXppb2FQbG9DWWQ3Y2ZqMnBiM21UbitOdkdsSnJpTWFoLytFdDBzeC96UVVjVmNBQURXU0hZQk9IR2U0cWRqazFnbXV1eXJBc3Z2UWd3SFBUN2NSTVN6VUZVSkFIQnVOTDN3RUxSdS8zMnRaREw0MFgrb1NRTGp6UHdTeXdTUlkzTU92Smw5VjNmNTFORSt2SWoyNmk3cnhyRk15UHFTYTJKWnFlZHo3Y09Eamo3cnJXNEdBTkE5eVM0QVo2SSt4ZjhrVk01Z042dGxpMjcyL0xTUi9nbUhQejVNU3lsUEl1STJKRVVDQUpmdGtxOUg1aDI4eDV1SStFOW1mcTVMKzl6Vm4zZHJ5L25jUjhTd0orZkJpN0QwOHlZbWUzNy9McXZHdmovQk5wMTBWTmtHQUlCdlNIWUJPQ09sbEhrcDVWbW84c0oycGhIeHk1NldMZnEyank3QzAzVndyR1BFKzFndWJmVFdNUUlBdUZDZkxuWEQ2MlI3VjlkaW8xaFd2WGhUZjE1SGY1ZnpzZXp6WWZ2R3R5WmRQbEJUMyt2MmhNSjdhdDhYQU9Da1NIWUJPRU0xYWVHWDJQL1RPWnkyUlVUY2xsS2VIWGp0NktuUXc5R09ENHRTeWwwOVJyd1hFUURnd2x6Nk5mS0hDOXptMzNUN28vYU56aFBNNmoydlU3bVdlWHZnK3kwQUFCZEZzZ3ZBbWFvVG1qY1I4U3hVMHVCL1BjU3ltc3N4YmhCOUVuN294VEhpTmxSNkFRQXU3QndvTGp2aFpYSnA1MzIxYXNsVTc5K29iM1J0c2E4S3N2VmFwdS8zdWg2T2RNOEZBT0JpU0hZQk9IT2xsR2twNVVsRTNJVEpUSlpyVzc4b3BidzQxdE5GcFpTcFpvRGVIQ1BtYTVWZTN0WXhndE5ueVRnQStMR0xUZlN0MTRDWFdPbmtScmZmcUc5MG5aaXk3eVdrK3Z4dzExeS9Bd0RZUDhrdUFCZWlsRElKVC9CZnNrVnQreWY3ZXJKcVMxTk5BcjA2Uml4S0tYZWxsRjlpZVZOV29zUnBtc1F5b2ZHZlBSbnJBYUNQNXozemlMaTk0TzIvdTdSenZkcm1iL1grUjNWZGhmWERudHQxRWYxTWVGblVjM0wzM2dBQTlreXlDOEFGV1UxbXhqTHBSU25WeXpHSlpaTExYWTl1dHZ5dVdhQzN4NHBKclFqMkpDNncxUDBKZW9obGd0SS9TeWsza2x3QVlMUHpuYmpzNVl4ZUhPa2NiM0hFTnIrNzhEYmY5THl5cXphYUg2S3FhdzhUWGhZUjhheVU0dUVCQUlBRGtPd0M4UC90M2RGeEdrY0FCdUQvWnZJZXA0TElGVml1UUZJRmppcHdxQ0JEQjNZRmNRbW9BNldEY3dmbkRsQUZ3UlZjSG5iUE1MRmtHWUhnVG56ZkRBTWpqUkRzTHR6ZTNyKzdKNmlHWHVZcG9aZUZFbm14MnBTUXk2ek9aQnZiYXdQR2Zhem82dmZIYnlsaENpR0tjVmpWWS9kMVNzRGx1Z2FVaEpJQVlMdSt6dXhVejRmcitlRlZEaHMrbVkzZ1BIQ3VUL3ZEZHJIUHJZeHVEL202YTFqLzJKTzZ1cFF4R0VFWEFJQURFWFlCT0dGTjB5enJBSi90alY2V05tVW0wV2huRTlVWlh0b2JUT2Q0c1dpYTVqcUo0TXZ4dnRlSHJlaStyZUFpNEFJQU8vZHhaam5SN1czcXVlSlZrdVV6LzZ0aFM1ZEZqcnpDWncxRlhNZEt0eit5cjYyTWJvNVF2L01EdGVuN2ZFb1poMWxxUWdBQWh5UHNBc0FRZXZtUWRlakZ5ZmswdFZtSFhOcUp2RjVnV3NlTDFUM0JsMFdFMS9hdFN4a3dIMVp2dWFwYjBaa2xDZ0Q3Nzk5OFNObStzVDNCOTk3VjkvNWM0WSt1bnFQZWp1a2NjQ01VNFp6MCs3TFp4MVpHM2JINnJYVXM1RzBPTjZGcldkdjRYQkFkQU9Ed2hGMEEyQndVV05XTGFhOHpqaVdHK1RtTEpLOG5GSElaZkZaMU1QbGp4bUpqcTZOaFVObXhZenVyckZkdXVVb0p0N3l0QStaV2J3R0F3L1JydXFacHJtcC9acEduWHlSZnBnUkg1aFByMCswNy9MRktNcTk5bW02em5ET1NrSFRUTkcydDg2c2Q2M3dJS1M5ZTBFZGkxMVVjYjBiUXBqK2tUT2lhNTNrbWRIVkpaazNUdko3WU9Bd0F3SXZ5aXlJQTRJSEJnVVdTUmQvMzUwbitTdkpIa2xkS1pqU1dLUU5JbnlaOEliUlZqZkNpamh0ZHlxQnZrcVR2Kzhza2wwa3VrcHc3aGlRcEYxR0djdnFTSTg1NkJlREJQdmJISGYvK0tXNXkzQ0I0ZThEMzNCN3BkVzdUbjVrbG1kVno0Y3ZhaDdsNDRFKzZKRi9yYSt1ZWVHNjJTN3RyOS9qZTJ5UnQzL2RuRzJNQVoxcyt6VzJTZitwNHdrUG1Xejd2OHBucnZLM2xPS3Y5MS9OSDZ2enpSdGsvdGM1SC9UbW83ZkZ1aDc4ZnhaYW50VzQrSmZsVVA4L3Y2MmY2L0lsUDJhVnM4M1NyRHc4QU1BNk5JZ0RnWi9WOS8yZVNkeW1EWGh6SGJaS2JqV1dncDk2bS9vMEw0TnY2V0dlcHdkUSs3MmNwQTh2bktSY1B6ckw5QlpRcGFWTXV6dHdOajV1bVdXb0pBTUJFKzIrLzV2dVF3TGZnaDlVdG1GamJ2c3c2MlBUN1BlY2xRejkrbFJKcTByNEJBRVpJMkFXQXB3d0tuS1VFWHQ3bjZUTmkrSGxkeW16UDI1ZDJvYlR2KzcrMW9hM2RQREpURXFiMlBYQ1pkZkRsVGNxQTh4UldnbGx1M080MkhuZTJIZ0lBQUFBQWVGN0NMZ0RzWkNQNDhpNWxPVmoyWTVuMUtpNld4d1ZPOVJnemhGNkdBRXh5LzZ6aVhZOC93L1pDbTRadENZYnY1T1h3YzJFV0FBQUFBSURqRW5ZQllHLzZ2bitWRW55NXFQZTJwOWxPbS9YK3owdkZBUUFBQUFBQUFOOFRkZ0hnMmRRWitaZXg2c3REbGxrSFhGb3JCUUFBQUFBQUFNRGpoRjBBT0ppTjhNdEZ5aFlVWnlkV0JGMUt1T1ZMU3JobHFWVUFBQUFBQUFEQWRvUmRBRGlhdXUzUkVJQjVreEorT1g4aGI2OU5XYm5sUzVLdWFacFdqUU1BQUFBQUFNRHVoRjBBR0oyNkFzeFpTdkRsOS9wNHVJMUpsMlJWNzcrbUJseXMyQUlBQUFBQUFBRFBSOWdGZ0VuWldBMG05ZjVWZlR5RVlqWnQvdjR4eTNyNy84L3U3dmw5MXpUTlNtMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNIcitBM0xCZDRhdzhVeUxBQUFBQUVsRlRrU3VRbUNDXFxcIi8+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCI+PHBhdGggZD1cXFwiTS42NjcgN2EuNjY3LjY2NyAwIDAgMCAuNjY2LjY2Nmg1LjA2TDQuODYgOS4xOTNhLjY2Ny42NjcgMCAwIDAgLjIxNyAxLjA5My42NjguNjY4IDAgMCAwIC43My0uMTQ2bDIuNjY2LTIuNjY3YS42NjcuNjY3IDAgMCAwIC4xNC0uMjIuNjY3LjY2NyAwIDAgMCAwLS41MDcuNjY3LjY2NyAwIDAgMC0uMTQtLjIyTDUuODA3IDMuODZhLjY3LjY3IDAgMCAwLS45NDcuOTQ2bDEuNTMzIDEuNTI3aC01LjA2QS42NjcuNjY3IDAgMCAwIC42NjcgN1pNOS4zMzMuMzMzSDIuNjY3YTIgMiAwIDAgMC0yIDJ2MmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwdi0yYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g2LjY2NmEuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gyLjY2N0EuNjY2LjY2NiAwIDAgMSAyIDExLjY2NnYtMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjJhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjIuMzMzYTIgMiAwIDAgMC0yLTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjbWFnbmlmeWluZy1nbGFzc19zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCIjQTZCNUJBXFxcIiBkPVxcXCJNMTIuOTE3IDExLjY2N2gtLjY1OWwtLjIzMy0uMjI1YTUuNDE3IDUuNDE3IDAgMCAwIDEuMjMzLTQuNDVjLS4zOTEtMi4zMTctMi4zMjUtNC4xNjctNC42NTgtNC40NUE1LjQyIDUuNDIgMCAwIDAgMi41NDIgOC42Yy4yODMgMi4zMzMgMi4xMzMgNC4yNjcgNC40NSA0LjY1OGE1LjQxNyA1LjQxNyAwIDAgMCA0LjQ1LTEuMjMzbC4yMjUuMjMzdi42NTlsMy41NDEgMy41NDFhLjg4Ljg4IDAgMCAwIDEuMjQyIDAgLjg4Ljg4IDAgMCAwIDAtMS4yNDFsLTMuNTMzLTMuNTVabS01IDBhMy43NDUgMy43NDUgMCAwIDEtMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1IDMuNzUgMy43NDUgMy43NDUgMCAwIDEtMy43NSAzLjc1WlxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcIm1hZ25pZnlpbmctZ2xhc3Nfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDIwdjIwSDB6XFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDE2XFxcIj48cGF0aCBkPVxcXCJNMTcgMEgzYTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxNGEzIDMgMCAwIDAgMy0zVjNhMyAzIDAgMCAwLTMtM1ptLS40MSAyLTUuODggNS44OGExIDEgMCAwIDEtMS40MiAwTDMuNDEgMmgxMy4xOFpNMTggMTNhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWMy40MWw1Ljg4IDUuODhhMyAzIDAgMCAwIDQuMjQgMEwxOCAzLjQxVjEzWlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTUgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTExLjQ3NiAxLjk2SDMuMDJhMS44MTIgMS44MTIgMCAwIDAtMS44MTIgMS44MTJ2Ni4wNGExLjgxMiAxLjgxMiAwIDAgMCAxLjgxMiAxLjgxMmg3bDIuMjM1IDIuMjRhLjYwNS42MDUgMCAwIDAgMS4wMzMtLjQyOFYzLjc3MmExLjgxMiAxLjgxMiAwIDAgMC0xLjgxMi0xLjgxMlptLjYwNCAxMC4wMi0xLjM4My0xLjM4OWEuNjA0LjYwNCAwIDAgMC0uNDI5LS4xNzVIMy4wMmEuNjA0LjYwNCAwIDAgMS0uNjA0LS42MDR2LTYuMDRhLjYwNC42MDQgMCAwIDEgLjYwNC0uNjA0aDguNDU2YS42MDQuNjA0IDAgMCAxIC42MDQuNjA0djguMjA4Wk03LjI0OCA4YS42MDQuNjA0IDAgMSAwIDAgMS4yMDguNjA0LjYwNCAwIDAgMCAwLTEuMjA4Wm0wLTMuNjI0YS42MDQuNjA0IDAgMCAwLS42MDQuNjA0djEuODEyYS42MDQuNjA0IDAgMCAwIDEuMjA4IDBWNC45OGEuNjA0LjYwNCAwIDAgMC0uNjA0LS42MDRaXFxcIiBmaWxsPVxcXCIjNjg3OTdFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy45NTggMEgxLjk5OUMxLjI0IDAgLjY2Ni4yNC42NjYgMXMuNTc0IDEgMS4zMzMgMWgxMmMuNzYgMCAxLjMzNC0uMjQgMS4zMzQtMXMtLjYxNi0xLTEuMzc1LTFaXFxcIiBmaWxsPVxcXCIjMkEyRjMwXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNSAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuODQ2IDcuNTgzYS41ODMuNTgzIDAgMCAwLS42MTItLjA4MiA0LjY5NiA0LjY5NiAwIDAgMS0xLjk2Ni40MjZBNC43NTQgNC43NTQgMCAwIDEgNS41MiAzLjIwMmE1LjAxIDUuMDEgMCAwIDEgLjE0NS0xLjE2Ni41ODMuNTgzIDAgMCAwLS43NzUtLjY2IDUuOTE1IDUuOTE1IDAgMSAwIDguMTY2IDYuODIuNTgzLjU4MyAwIDAgMC0uMjEtLjYxM1ptLTUuNTQxIDMuOTAzYTQuNzQ4IDQuNzQ4IDAgMCAxLTIuOTUyLTguNDQxdi4xNTdhNS45MiA1LjkyIDAgMCAwIDcuMTQgNS43ODcgNC43MzEgNC43MzEgMCAwIDEtNC4xODggMi41MnYtLjAyM1pcXFwiIGZpbGw9XFxcIiNBNjZFRTlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEyIDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMSAwSDFDLjQgMCAwIC40IDAgMXMuNCAxIDEgMWg3LjZMLjMgMTAuM2MtLjQuNC0uNCAxIDAgMS40LjQuNCAxIC40IDEuNCAwTDEwIDMuNFYxMWMwIC42LjQgMSAxIDFzMS0uNCAxLTFWMWMwLS42LS40LTEtMS0xWlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE1XFxcIj48cGF0aCBkPVxcXCJtMTEuNzkgNi44OTYuMDU2LjQzN0gxM2EuMTY2LjE2NiAwIDAgMSAuMTE4LjI4NWwuMzUzLjM1My0uMzUzLS4zNTNhLjE2Ni4xNjYgMCAwIDEtLjExOC4wNDloLTEuMTU0bC0uMDU1LjQzN2E0LjgzMyA0LjgzMyAwIDAgMS00LjE4NyA0LjE4N2wtLjQzNy4wNTVWMTMuNWEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zNTQuMzUzLS4zNTMtLjM1M2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTEuMTUzbC0uNDM3LS4wNTZBNC44MzMgNC44MzMgMCAwIDEgMi4yMSA4LjEwNGwtLjA1NS0uNDM3SDFhLjE2Ny4xNjcgMCAxIDEgMC0uMzM0aDEuMTUzbC4wNTYtLjQzN0E0LjgzMyA0LjgzMyAwIDAgMSA2LjM5NiAyLjcxbC40MzctLjA1NVYxLjVhLjE2Ny4xNjcgMCAwIDEgLjMzNCAwdjEuMTUzbC40MzcuMDU2YTQuODM0IDQuODM0IDAgMCAxIDQuMTg3IDQuMTg3Wm0tLjM1NyAxLjM1NC4xLS41ODNoLTEuMmEuMTY2LjE2NiAwIDEgMSAwLS4zMzRoMS4xOTlsLS4xLS41ODNBNC41IDQuNSAwIDAgMCA3Ljc1IDMuMDY3bC0uNTgzLS4xdjEuMmEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zMDQuMzAzLS4zMDMtLjMwM2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMThWMi45NjhsLS41ODMuMUE0LjUgNC41IDAgMCAwIDIuNTY3IDYuNzVsLS4xLjU4M2gxLjJhLjE2Ny4xNjcgMCAwIDEgLjExOC4yODVsLjMwMy4zMDMtLjMwNC0uMzAzYS4xNjcuMTY3IDAgMCAxLS4xMTcuMDQ5SDIuNDY4bC4xLjU4M2E0LjUgNC41IDAgMCAwIDMuNjgyIDMuNjgzbC41ODMuMXYtMS4yYS4xNjYuMTY2IDAgMSAxIC4zMzQgMHYxLjE5OWwuNTgzLS4xYTQuNSA0LjUgMCAwIDAgMy42ODMtMy42ODJabS00LjUyNi0uODg5YS4xNjcuMTY3IDAgMSAxIC4xODYuMjc4LjE2Ny4xNjcgMCAwIDEtLjE4Ni0uMjc4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY3IDEwLjY2NmExIDEgMCAwIDAgMS0xIC41MTQuNTE0IDAgMCAwIDAtLjFsMS44Ni0xLjg2aC4zMDZMOC45MDcgOC43OHYuMDUzYTEgMSAwIDEgMCAyIDBWOC43OGwyLjQyNi0yLjQ0N2ExIDEgMCAxIDAtMS0xIC41MjIuNTIyIDAgMCAwIDAgLjFMOS45MjcgNy44NEg5LjgyTDguNjY3IDYuNjY2YTEgMSAwIDAgMC0yIDBsLTIgMmExIDEgMCAwIDAgMCAyWm05IDIuNjY3SDIuMzMzVjJBLjY2Ny42NjcgMCAxIDAgMSAydjEyYS42NjcuNjY3IDAgMCAwIC42NjcuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIgMTRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm01IDBhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm0tNSA0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptNSAwYTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpNNyAxNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaTTE5IDRoLTFWM2ExIDEgMCAwIDAtMiAwdjFIOFYzYTEgMSAwIDAgMC0yIDB2MUg1YTMgMyAwIDAgMC0zIDN2MTJhMyAzIDAgMCAwIDMgM2gxNGEzIDMgMCAwIDAgMy0zVjdhMyAzIDAgMCAwLTMtM1ptMSAxNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXYtOWgxNlptMC0xMUg0VjdhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxWk03IDE4YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjk2IDguNjY2Yy0uMTQ3IDAtLjMtLjA0Ni0uNDQ3LS4wOGE2LjI5IDYuMjkgMCAwIDEtLjg3My0uMjYgMS4zMzMgMS4zMzMgMCAwIDAtMS42NTMuNjY3bC0uMTQ3LjNBOC4xMiA4LjEyIDAgMCAxIDguMDY3IDcuOTZhOC4xMiA4LjEyIDAgMCAxLTEuMzM0LTEuNzc0TDcuMDEzIDZhMS4zMzMgMS4zMzMgMCAwIDAgLjY2Ny0xLjY1NCA2Ljg4NyA2Ljg4NyAwIDAgMS0uMjYtLjg3M2MtLjAzMy0uMTQ3LS4wNi0uMy0uMDgtLjQ1M2EyIDIgMCAwIDAtMi0xLjY2aC0yYTIgMiAwIDAgMC0yIDIuMjczIDEyLjY2NyAxMi42NjcgMCAwIDAgMTEuMDEzIDEwLjk3M2guMjU0YTIgMiAwIDAgMCAxLjgyNy0xLjE4NSAyIDIgMCAwIDAgLjE3My0uODIxdi0yYTIgMiAwIDAgMC0xLjY0Ny0xLjkzNFptLjMzMyA0YS42NjYuNjY2IDAgMCAxLS40ODIuNjQxLjcwNy43MDcgMCAwIDEtLjI5LjAyNkExMS4zMzMgMTEuMzMzIDAgMCAxIDIuNzEyIDMuNDhhLjcyNy43MjcgMCAwIDEgLjE2Ny0uNTQ3LjY2Ny42NjcgMCAwIDEgLjUtLjIyN2gyYS42NjcuNjY3IDAgMCAxIC42NjcuNTI3IDcuNDE0IDcuNDE0IDAgMCAwIC40MDcgMS41NzNsLS45MzQuNDM0YS42NjcuNjY3IDAgMCAwLS4zMjcuODg2IDkuNjYgOS42NiAwIDAgMCA0LjY2NyA0LjY2Ny42NjYuNjY2IDAgMCAwIC41MDcgMCAuNjY1LjY2NSAwIDAgMCAuMzgtLjM0N2wuNDEzLS45MzNjLjM0NS4xMjMuNjk3LjIyNiAxLjA1My4zMDcuMTc4LjA0LjM1OC4wNzMuNTQuMWEuNjY3LjY2NyAwIDAgMSAuNTI3LjY2NmwuMDEzIDIuMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTVcXFwiPjxwYXRoIGQ9XFxcIk0xMC45MTcgOS42NjZoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1QzEwLjg2NyAyLjY3NSA4LjkzMy44MjUgNi42LjU0MUE1LjQyIDUuNDIgMCAwIDAgLjU0MiA2LjZjLjI4MyAyLjMzMyAyLjEzMyA0LjI2NiA0LjQ1IDQuNjU4YTUuNDE3IDUuNDE3IDAgMCAwIDQuNDUtMS4yMzNsLjIyNS4yMzN2LjY1OGwzLjU0MSAzLjU0MmEuODguODggMCAwIDAgMS4yNDIgMCAuODguODggMCAwIDAgMC0xLjI0MmwtMy41MzMtMy41NVptLTUgMGEzLjc0NSAzLjc0NSAwIDAgMS0zLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUgMy43NSAzLjc0NSAzLjc0NSAwIDAgMS0zLjc1IDMuNzVaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxtYXNrIGlkPVxcXCJwZXJpb2QtaWNvbl9zdmdfX2FcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGQ9XFxcIk04IDkuMzMzQS42NjcuNjY3IDAgMSAwIDggOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk04IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRBLjY2Ny42NjcgMCAwIDAgOCAxMlptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM1LjY2Ny42NjcgMCAwIDAgMCAxLjMzNVpNNC42NjcgOS4zMzNhLjY2Ny42NjcgMCAxIDAgMC0xLjMzMy42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtNi42NjZIMTJWMmEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdINS4zMzNWMkEuNjY3LjY2NyAwIDEgMCA0IDJ2LjY2N2gtLjY2N2EyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZIMy4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY2di02aDEwLjY2NnY2Wm0wLTcuMzM0SDIuNjY3di0uNjY2QS42NjcuNjY3IDAgMCAxIDMuMzMzIDRoOS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2LjY2NlpNNC42NjcgMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjMzM1xcXCIgZD1cXFwiTTggOS4zMzNBLjY2Ny42NjcgMCAxIDAgOCA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTggMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEEuNjY3LjY2NyAwIDAgMCA4IDEyWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzUuNjY3LjY2NyAwIDAgMCAwIDEuMzM1Wk00LjY2NyA5LjMzM2EuNjY3LjY2NyAwIDEgMCAwLTEuMzMzLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC02LjY2NkgxMlYyYS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N0g1LjMzM1YyQS42NjcuNjY3IDAgMSAwIDQgMnYuNjY3aC0uNjY3YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2NkgzLjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42NjZ2LTZoMTAuNjY2djZabTAtNy4zMzRIMi42Njd2LS42NjZBLjY2Ny42NjcgMCAwIDEgMy4zMzMgNGg5LjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YuNjY2Wk00LjY2NyAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpcXFwiIG1hc2s9XFxcInVybCgjcGVyaW9kLWljb25fc3ZnX19hKVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk04LjMzMyA3LjMzM3YuMzM0aDIuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg4LjMzM3YyLjMzNGEuMzMzLjMzMyAwIDEgMS0uNjY2IDBWOC4zMzNINS4zMzNhLjMzMy4zMzMgMCAwIDEgMC0uNjY2aDIuMzM0VjUuMzMzYS4zMzMuMzMzIDAgMCAxIC42NjYgMHYyWk00LjQ4MSAyLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgNC40OCAyLjczNFptLjM3IDkuOTc4YTUuNjY2IDUuNjY2IDAgMSAwIDYuMjk3LTkuNDIzIDUuNjY2IDUuNjY2IDAgMCAwLTYuMjk2IDkuNDIzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyA3LjMzNHYuNWg0LjVhLjE2Ny4xNjcgMCAxIDEgMCAuMzMzaC00LjV2NC41YS4xNjYuMTY2IDAgMSAxLS4zMzQgMHYtNC41aC00LjVhLjE2Ny4xNjcgMCAwIDEgMC0uMzMzaDQuNXYtNC41YS4xNjcuMTY3IDAgMSAxIC4zMzQgMHY0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUuMjQyIDEwLjg3NWEuNzUyLjc1MiAwIDAgMC0uNzUuNzV2MS4zMzdBNS45OCA1Ljk4IDAgMCAxIDIuOTkyIDljMC0uMjIuMDEzLS40NC4wNC0uNjZhLjc1Ljc1IDAgMSAwLTEuNDktLjE4IDYuODggNi44OCAwIDAgMC0uMDUuODQgNy40NzMgNy40NzMgMCAwIDAgMS44MTMgNC44NzVIMi4yNDJhLjc1Ljc1IDAgMSAwIDAgMS41aDNhLjczNi43MzYgMCAwIDAgLjU5Ni0uMzE2Yy4wMDktLjAxMi4wMi0uMDIuMDI4LS4wMzMuMDA1LS4wMDcuMDA1LS4wMTYuMDEtLjAyNGEuNzI0LjcyNCAwIDAgMCAuMDgtLjE5My43MTUuNzE1IDAgMCAwIC4wMjMtLjExN2MuMDAyLS4wMjMuMDEzLS4wNDMuMDEzLS4wNjd2LTNhLjc1Ljc1IDAgMCAwLS43NS0uNzVaTTYuMzY3IDQuNUg1LjAzQTUuOTggNS45OCAwIDAgMSA4Ljk5MiAzYy4yMiAwIC40NC4wMTMuNjYuMDRhLjc1Ljc1IDAgMSAwIC4xOC0xLjQ5IDYuOTIgNi45MiAwIDAgMC0uODQtLjA1IDcuNDczIDcuNDczIDAgMCAwLTQuODc1IDEuODEzVjIuMjVhLjc1Ljc1IDAgMCAwLTEuNSAwdjNjLjAwNS4wNS4wMTUuMDk5LjAzLjE0NnYuMDAxYy4wMTguMDkyLjA1NC4xOC4xMDYuMjU5bC4wMDguMDEyYS43My43MyAwIDAgMCAuMTg0LjE4NWMuMDA4LjAwNi4wMTIuMDE1LjAyLjAyMS4wMTEuMDA3LjAyMy4wMS4wMzQuMDE2YS43MTguNzE4IDAgMCAwIC4zMzEuMTAzYy4wMTMgMCAuMDI0LjAwNy4wMzcuMDA3aDNhLjc1Ljc1IDAgMCAwIDAtMS41Wm04Ljk3IDguMTAzYS43MjQuNzI0IDAgMCAwLS4xMDUtLjI1OWwtLjAwOS0uMDEyYS43MjguNzI4IDAgMCAwLS4xODMtLjE4NWMtLjAwOS0uMDA2LS4wMTMtLjAxNS0uMDIxLS4wMjEtLjAwOC0uMDA1LS4wMTgtLjAwNi0uMDI2LS4wMWEuODY1Ljg2NSAwIDAgMC0uMzA3LS4xMDJjLS4wMjQtLjAwMi0uMDQ0LS4wMTQtLjA2OS0uMDE0aC0zYS43NS43NSAwIDEgMCAwIDEuNWgxLjMzN0E1Ljk4IDUuOTggMCAwIDEgOC45OTIgMTVjLS4yMiAwLS40NC0uMDEzLS42Ni0uMDRhLjc1Ljc1IDAgMCAwLS4xOCAxLjQ5Yy4yNzkuMDMzLjU2LjA1Ljg0LjA1YTcuNDczIDcuNDczIDAgMCAwIDQuODc1LTEuODEzdjEuMDYzYS43NS43NSAwIDEgMCAxLjUgMHYtM2EuNzEyLjcxMiAwIDAgMC0uMDMtLjE0NlptLjQwNS04LjQ3OGEuNzUuNzUgMCAxIDAgMC0xLjVoLTNhLjcxNi43MTYgMCAwIDAtLjE0NC4wMjlsLS4wMDUuMDAxYS43MjYuNzI2IDAgMCAwLS4yNTUuMTA1bC0uMDE1LjAxYS43MzIuNzMyIDAgMCAwLS4xODQuMTgyYy0uMDA2LjAwOS0uMDE1LjAxMy0uMDIuMDItLjAwNi4wMDktLjAwNi4wMTgtLjAxMS4wMjdhLjg1Ny44NTcgMCAwIDAtLjEwMi4zMWMtLjAwMi4wMjItLjAxNC4wNDItLjAxNC4wNjZ2M2EuNzUuNzUgMCAxIDAgMS41IDBWNS4wMzhBNS45ODIgNS45ODIgMCAwIDEgMTQuOTkyIDljMCAuMjItLjAxMy40NC0uMDQuNjZhLjc1MS43NTEgMCAwIDAgMS40OS4xOGMuMDM0LS4yNzkuMDUtLjU2LjA1LS44NGE3LjQ3MyA3LjQ3MyAwIDAgMC0xLjgxMy00Ljg3NWgxLjA2M1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTguMTY3IDMuNnYtLjgwNWwtLjU3LjU2OS0uODY2Ljg2N2EuMzEyLjMxMiAwIDAgMS0uNDYyIDAgLjMxMi4zMTIgMCAwIDEgMC0uNDYybDItMi0uMjM0LS4yMzUuMjM0LjIzNWEuMzEyLjMxMiAwIDAgMSAuNDYyIDBsLjIzMy0uMjM0LS4yMzMuMjM0IDIgMmEuMzEyLjMxMiAwIDAgMSAwIC40NjIuMzY4LjM2OCAwIDAgMS0uMTA4LjA4LjI5Mi4yOTIgMCAwIDEtLjEyMy4wMjIuMjkyLjI5MiAwIDAgMS0uMTIzLS4wMjEuMzY4LjM2OCAwIDAgMS0uMTA4LS4wODFsLS44NjctLjg2Ny0uNTY5LS41N3Y4LjUzOWMwIC4xMjQtLjA0LjIwMi0uMDg1LjI0OC0uMDQ2LjA0NS0uMTI0LjA4NS0uMjQ4LjA4NXMtLjIwMi0uMDQtLjI0OC0uMDg1Yy0uMDQ1LS4wNDYtLjA4NS0uMTI0LS4wODUtLjI0OFYzLjZabTMgMi43MzNIMTIuNWMuOTUgMCAxLjY2Ny43MTcgMS42NjcgMS42Njd2NC42NjZjMCAuOTUtLjcxOCAxLjY2Ny0xLjY2NyAxLjY2N2gtOGMtLjk1IDAtMS42NjctLjcxNy0xLjY2Ny0xLjY2N1Y4YzAtLjk1LjcxOC0xLjY2NyAxLjY2Ny0xLjY2N2gxLjMzM2MuMTI1IDAgLjIwMi4wNC4yNDguMDg2LjA0Ni4wNDUuMDg2LjEyMy4wODYuMjQ3IDAgLjEyNS0uMDQuMjAyLS4wODYuMjQ4LS4wNDYuMDQ2LS4xMjMuMDg2LS4yNDguMDg2SDQuNWExIDEgMCAwIDAtLjcxOS4yOEExIDEgMCAwIDAgMy41IDh2NC42NjZhMSAxIDAgMCAwIC4yODEuNzIgMSAxIDAgMCAwIC43MTkuMjhoOGExIDEgMCAwIDAgLjcxOS0uMjggMSAxIDAgMCAwIC4yODEtLjcyVjhhMSAxIDAgMCAwLS4yODEtLjcyQTEgMSAwIDAgMCAxMi41IDdoLTEuMzMzYy0uMTI1IDAtLjIwMi0uMDQtLjI0OC0uMDg2LS4wNDYtLjA0Ni0uMDg2LS4xMjMtLjA4Ni0uMjQ4IDAtLjEyNC4wNC0uMjAyLjA4Ni0uMjQ3LjA0Ni0uMDQ2LjEyMy0uMDg2LjI0OC0uMDg2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAyMFxcXCI+PHBhdGggZD1cXFwiTTEyLjY2NyA3di4zMzNIMTNBMi42NjcgMi42NjcgMCAwIDEgMTUuNjY3IDEwdjdBMi42NjcgMi42NjcgMCAwIDEgMTMgMTkuNjY3SDNBMi42NjcgMi42NjcgMCAwIDEgLjMzMyAxN3YtN0EyLjY2NyAyLjY2NyAwIDAgMSAzIDcuMzMzaC4zMzNWNWE0LjY2NyA0LjY2NyAwIDAgMSA5LjMzNCAwdjJaTTExIDcuMzMzaC4zMzNWNWEzLjMzMyAzLjMzMyAwIDAgMC02LjY2NiAwdjIuMzMzSDExWm0yLjk0MyAxMC42MWMuMjUtLjI1LjM5LS41OS4zOS0uOTQzdi03QTEuMzMzIDEuMzMzIDAgMCAwIDEzIDguNjY3SDNBMS4zMzMgMS4zMzMgMCAwIDAgMS42NjcgMTB2N0ExLjMzMyAxLjMzMyAwIDAgMCAzIDE4LjMzM2gxMGMuMzU0IDAgLjY5My0uMTQuOTQzLS4zOVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk03LjUgNC42NjZhMSAxIDAgMCAwLS44NjkuNWwtLjAwNi4wMTJhLjMzMy4zMzMgMCAwIDEtLjIwMy4xNjZsLjA5My4zMi0uMDkzLS4zMmEuMzMzLjMzMyAwIDAgMS0uMzYtLjEybC0uMjY2LjIuMjY3LS4yYS4zMzMuMzMzIDAgMCAxLS4wMTUtLjM3OWwuMDA0LS4wMDYuMDAzLS4wMDZBMS42NjcgMS42NjcgMCAwIDEgNy41IDRhMS42NjcgMS42NjcgMCAwIDEgLjU1NCAzLjIzM2wtLjIyLjA4di4zNTNhLjMzMy4zMzMgMCAxIDEtLjY2NiAwVjdhLjMzMy4zMzMgMCAwIDEgLjMzMy0uMzM0IDEgMSAwIDAgMCAwLTJabTAgMFY1bC4wMDEtLjMzNFptLS4zMTYgNC44OTguMDEtLjAyLjAwOC0uMDIzYS4xNzMuMTczIDAgMCAxIC4wMi0uMDM5IDEuMiAxLjIgMCAwIDEgLjA0Ni0uMDYuMzMzLjMzMyAwIDAgMSAuMTA0LS4wNjdsLS4xMjgtLjMwOC4xMjguMzA4YS4zMzMuMzMzIDAgMCAxIC4zNjUuMDczLjMzMy4zMzMgMCAwIDEgLjA5Ni4yMzZ2LjAxNWEuMzMzLjMzMyAwIDAgMS0uMDIuMTI2di4wMDFhLjI2Ny4yNjcgMCAwIDEtLjA2Mi4wOThsLjIzNi4yMzYtLjIzNi0uMjM2YS4yNjcuMjY3IDAgMCAxLS4wOTguMDYybC0uMDEuMDA0LS4wMTEuMDA1YS4yOTMuMjkzIDAgMCAxLS4yMzcgMGwtLjAxLS4wMDUtLjAxMi0uMDA0YS4yNjcuMjY3IDAgMCAxLS4wOTctLjA2MmwtLjIzNi4yMzYuMjM2LS4yMzZhLjI2Ny4yNjcgMCAwIDEtLjA2My0uMDk4bC0uMDA1LS4wMTQtLjAwNy0uMDE1YS4yMjcuMjI3IDAgMCAxLS4wMjEtLjEwMnYtLjAzM2EuNTczLjU3MyAwIDAgMS0uMDAyLS4wNjQuMDk0LjA5NCAwIDAgMSAuMDA2LS4wMTRaTTMuOTggMS43MzRhNi4zMzMgNi4zMzMgMCAxIDEgNy4wMzggMTAuNTMyQTYuMzMzIDYuMzMzIDAgMCAxIDMuOTggMS43MzRabS4zNyA5Ljk3N2E1LjY2NiA1LjY2NiAwIDEgMCA2LjI5Ny05LjQyMiA1LjY2NiA1LjY2NiAwIDAgMC02LjI5NiA5LjQyMlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcInJlZFxcXCIgZD1cXFwibTguNDEgNyA0LjMtNC4yOWExLjAwNCAxLjAwNCAwIDAgMC0xLjQyLTEuNDJMNyA1LjU5bC00LjI5LTQuM2ExLjAwNCAxLjAwNCAwIDEgMC0xLjQyIDEuNDJMNS41OSA3bC00LjMgNC4yOWEuOTk5Ljk5OSAwIDAgMCAwIDEuNDIgMSAxIDAgMCAwIDEuNDIgMEw3IDguNDFsNC4yOSA0LjNhMS4wMDEgMS4wMDEgMCAwIDAgMS42MzktLjMyNSAxIDEgMCAwIDAtLjIyLTEuMDk1TDguNDEgN1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNiA2XFxcIj48Y2lyY2xlIGN4PVxcXCIzXFxcIiBjeT1cXFwiM1xcXCIgcj1cXFwiM1xcXCIgZmlsbD1cXFwiI0ZGNzI2NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjk5OSA3LjMzM2MtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2NyAwIDEuOTMzLTEgMy42NjYtMi42NjcgNC42LTIuNTMzIDEuNDY2LTUuOC42LTcuMjY2LTEuOTM0LTEuNDY3LTIuNTMzLS42LTUuOCAxLjkzMy03LjI2NmE1LjMzOCA1LjMzOCAwIDAgMSA2LjUzMy45MzNoLTEuNmMtLjQgMC0uNjY2LjI2Ny0uNjY2LjY2N3MuMjY2LjY2Ni42NjYuNjY2aDNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZWMmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMTIuNiAxLjYgMTIuNiAydjEuMmMtMS4yNjctMS4yLTIuODY3LTEuODY3LTQuNi0xLjg2Ny0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLS40LS4yNjYtLjY2Ny0uNjY2LS42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTlcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtMTMgMTYuMzMyLS41MzMtLjM5OC0uNzEzLS41MzRhLjMzMy4zMzMgMCAwIDAtLjQgMGwxLjY0Ni45MzJabTAgMFY1LjMzM0gzdjEwLjk5OWwuNTMzLS4zOTguNzEzLS41MzRhLjMzMy4zMzMgMCAwIDEgLjQgMGwxLjM3NCAxLjAzMy4yLjE1LjItLjE1TDcuOCAxNS40YS4zMzMuMzMzIDAgMCAxIC40IDBsMS4zOCAxLjAzMy4yLjE1LjItLjE1IDEuMzczLTEuMDMzIDEuNjQ3LjkzMlptLTEwLjEzMy45MzRhLjMzNC4zMzQgMCAwIDEtLjQ4NC0uMDlsLS4yODMuMTc0LjI4My0uMTc1YS4zMzQuMzM0IDAgMCAxLS4wNS0uMTc1VjVhLjMzMy4zMzMgMCAwIDEgLjMzNC0uMzMzaDEwLjY2NmEuMzMzLjMzMyAwIDAgMSAuMzM0LjMzM3YxMS45OTlhLjMzNC4zMzQgMCAwIDEtLjA1LjE3NGwuMjgzLjE3NS0uMjgzLS4xNzVhLjMzMy4zMzMgMCAwIDEtLjMxNC4xNThsLS4wMjguMzMyLjAyOC0uMzMyYS4zMzQuMzM0IDAgMCAxLS4xNy0uMDY1bC0xLjM4LTEuMDMzLS4yLS4xNS0uMi4xNS0xLjM3MyAxLjAzNGEuMzMzLjMzMyAwIDAgMS0uNCAwTDguMiAxNi4yMzJsLS4yLS4xNS0uMi4xNS0xLjM4IDEuMDMzYS4zMzMuMzMzIDAgMCAxLS40IDBsLTEuMzczLTEuMDMyLS4yLS4xNS0uMi4xNS0xLjM4IDEuMDMyWm0yLjIzLTQuMDMtLjIzNS4yMzUuMjM2LS4yMzVhLjMzMy4zMzMgMCAwIDEgMC0uNDcybC0uMjM2LS4yMzYuMjM2LjIzNmEuMzMzLjMzMyAwIDAgMSAuMjM1LS4wOTdoNS4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY2SDUuMzMzYS4zMzMuMzMzIDAgMCAxLS4yMzUtLjA5N1pNMTAuNjY4IDhoLTRhLjMzMy4zMzMgMCAwIDEgMC0uNjY3aDRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3Wm0wIDIuNjY3SDUuMzMzYS4zMzMuMzMzIDAgMSAxIDAtLjY2N2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMyAxMmgxOG0tNS01IDUgNS01IDVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTMuNjQ0IDEyLjE0NiAzLjk5OC0zLjk5OC43MDcuNzA3LTMuOTk4IDMuOTk4LS43MDctLjcwN1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOC41IDE1LjVhLjUwMy41MDMgMCAwIDEtLjM5My0uMTkuNS41IDAgMCAxLS4xMDItLjI0bC0uNS0zLjUgMS0uMTQuMzc1IDIuNjM1IDEuNjItMS4zMDVWOWEuNS41IDAgMCAxIC4xNDUtLjM1NUwxMi42OCA2LjYxQTQuNDcgNC40NyAwIDAgMCAxNCAzLjQzVjIuNWgtLjkzYTQuNDcgNC40NyAwIDAgMC0zLjE4IDEuMzJMNy44NTUgNS44NTVBLjUuNSAwIDAgMSA3LjUgNkgzLjc0TDIuNDM1IDcuNjNsMi42MzUuMzc1LS4xNCAxLTMuNS0uNWEuNS41IDAgMCAxLS4zMi0uODFsMi0yLjVBLjUuNSAwIDAgMSAzLjUgNWgzLjc5NUw5LjE4IDMuMTFhNS40NiA1LjQ2IDAgMCAxIDMuODktMS42MUgxNGExIDEgMCAwIDEgMSAxdi45M2E1LjQ2IDUuNDYgMCAwIDEtMS42MSAzLjg5TDExLjUgOS4yMDVWMTNhLjQ5OS40OTkgMCAwIDEtLjE5LjM5bC0yLjUgMmEuNS41IDAgMCAxLS4zMS4xMVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGQ9XFxcIm0xMC4xNjUgOS42NjIuMTYzLjE2NC4yMS0uMDk2YTEuNzIgMS43MiAwIDAgMSAxLjg5NS4zMTRsMS4zNzYgMS40MDkuMjM4LS4yMzMtLjIzMy4yMzhhMS42NjUgMS42NjUgMCAwIDEgMCAyLjM4NGwtLjAwMy4wMDJhMS42NjcgMS42NjcgMCAwIDEtMi4zNTUgMGwtMS40MTItMS40MTJhMS42NjcgMS42NjcgMCAwIDEtLjI5My0xLjkybC4xMS0uMjE2LS4xNzItLjE3Mi0uNTkzLS41OTMtLjIwNC0uMjA0LS4yMzEuMTczYTQuMzMzIDQuMzMzIDAgMSAxIC44NzItLjg3M2wtLjE3My4yMzEuMjA1LjIwNC42LjZabTIuODUzIDMuODk4YTEgMSAwIDAgMCAuNTQzLS41NDIuOTk5Ljk5OSAwIDAgMC0uMjE5LTEuMDk0bC0xLjQxMi0xLjQxMmExIDEgMCAwIDAtMS42MzcuMzIzIDEgMSAwIDAgMCAuMjE5IDEuMDk1bDEuNDEyIDEuNDExdi4wMDFhLjk5OS45OTkgMCAwIDAgMS4wOTQuMjE4Wk02Ljc1MiA5LjYzYTMuNjY3IDMuNjY3IDAgMSAwLTEuNDI0LTcuMTk0QTMuNjY3IDMuNjY3IDAgMCAwIDYuNzUyIDkuNjNaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTQuMjEyIDYuMzY2LTEuMjYtLjQyLjU5My0xLjE4NkEuNjY3LjY2NyAwIDAgMCAxMy40MiA0bC0xLjQyLTEuNDJhLjY2Ny42NjcgMCAwIDAtLjc2Ny0uMTI3bC0xLjE4Ny41OTMtLjQyLTEuMjZBLjY2Ny42NjcgMCAwIDAgOSAxLjMzM2gtMmEuNjY3LjY2NyAwIDAgMC0uNjM0LjQ1M2wtLjQyIDEuMjYtMS4xODYtLjU5M2EuNjY3LjY2NyAwIDAgMC0uNzYuMTI3TDIuNTc5IDRhLjY2Ny42NjcgMCAwIDAtLjEyNy43NjZsLjU5MyAxLjE4Ny0xLjI2LjQyQS42NjcuNjY3IDAgMCAwIDEuMzMyIDd2MmEuNjY3LjY2NyAwIDAgMCAuNDUzLjYzM2wxLjI2LjQyLS41OTMgMS4xODdhLjY2Ny42NjcgMCAwIDAgLjEyNy43NmwxLjQyIDEuNDJhLjY2Ny42NjcgMCAwIDAgLjc2Ni4xMjZsMS4xODctLjU5My40MiAxLjI2YS42NjcuNjY3IDAgMCAwIC42MzMuNDUzaDJhLjY2Ny42NjcgMCAwIDAgLjYzNC0uNDUzbC40Mi0xLjI2IDEuMTg2LjU5M0EuNjY2LjY2NiAwIDAgMCAxMiAxMy40MmwxLjQyLTEuNDJhLjY2Ny42NjcgMCAwIDAgLjEyNi0uNzY3bC0uNTkzLTEuMTg3IDEuMjYtLjQyQS42NjcuNjY3IDAgMCAwIDE0LjY2NSA5VjdhLjY2Ny42NjcgMCAwIDAtLjQ1My0uNjM0Wm0tLjg4IDIuMTU0LS44LjI2NmExLjMzNCAxLjMzNCAwIDAgMC0uNzczIDEuODhsLjM4Ljc2LS43MzQuNzM0LS43NC0uNGExLjMzNSAxLjMzNSAwIDAgMC0xLjg2Ljc3M2wtLjI2Ni44aC0xLjA2bC0uMjY3LS44YTEuMzMzIDEuMzMzIDAgMCAwLTEuODgtLjc3M2wtLjc2LjM4LS43MzMtLjczNC40LS43NGExLjMzMyAxLjMzMyAwIDAgMC0uNzc0LTEuODhsLS44LS4yNjZWNy40OGwuOC0uMjY3YTEuMzMzIDEuMzMzIDAgMCAwIC43NzQtMS44OGwtLjM4LS43NC43MzMtLjczMy43NC4zOGExLjMzMyAxLjMzMyAwIDAgMCAxLjg4LS43NzRsLjI2Ny0uOGgxLjA0bC4yNjYuOGExLjMzMyAxLjMzMyAwIDAgMCAxLjg4Ljc3NGwuNzYtLjM4LjczNC43MzMtLjQuNzRhMS4zMzMgMS4zMzMgMCAwIDAgLjc3MyAxLjg2bC44LjI2N3YxLjA2Wk03Ljk5OSA1LjMzM2EyLjY2NyAyLjY2NyAwIDEgMCAwIDUuMzMzIDIuNjY3IDIuNjY3IDAgMCAwIDAtNS4zMzNabTAgNGExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY3IDEuMzMzIDEuMzMzIDAgMCAxIDAgMi42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC43MjMgMi43MzhhLjc1Ljc1IDAgMCAwLS42My0uMTUgNiA2IDAgMCAxLTQuNjY1LS45NTMuNzUuNzUgMCAwIDAtLjg1NiAwIDYgNiAwIDAgMS00LjY2NC45NTMuNzUuNzUgMCAwIDAtLjkwOC43MzVWOC45MWE2Ljc1IDYuNzUgMCAwIDAgMi44MjcgNS40OThsMi43MzggMS45NWEuNzUuNzUgMCAwIDAgLjg3IDBsMi43MzctMS45NUE2Ljc1IDYuNzUgMCAwIDAgMTUgOC45MVYzLjMyM2EuNzQ5Ljc0OSAwIDAgMC0uMjc3LS41ODVaTTEzLjUgOC45MWE1LjI0OSA1LjI0OSAwIDAgMS0yLjE5NyA0LjI3NUw5IDE0LjgyOGwtMi4zMDMtMS42NDNBNS4yNSA1LjI1IDAgMCAxIDQuNSA4LjkxVjQuMTg1QTcuNSA3LjUgMCAwIDAgOSAzLjE0M2E3LjUgNy41IDAgMCAwIDQuNSAxLjA0MlY4LjkxWm0tMy4zNDUtMS43MTdMOC4xMzcgOS4yMThsLS42NjctLjY3NWEuNzUzLjc1MyAwIDEgMC0xLjA2NSAxLjA2NWwxLjIgMS4yYS43NS43NSAwIDAgMCAxLjA2NSAwbDIuNTgtMi41NThhLjc1My43NTMgMCAwIDAtMS4wNjUtMS4wNjVsLS4wMy4wMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDlhMS44NyAxLjg3IDAgMSAwIDMuNzQgMEExLjg3IDEuODcgMCAwIDAgNiA5WlxcXCIgZmlsbD1cXFwiIzY4Nzk3RVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjI3MyA1Ljc2N3YtLjA0YTYuNjY3IDYuNjY3IDAgMCAwLTEyLjUyLS4wNC41NjcuNTY3IDAgMCAwLS4wNTMuMTYgNi42NjcgNi42NjcgMCAxIDAgMTIuNTczLS4wOFpNOCAyLjY2N2E1LjMzMyA1LjMzMyAwIDAgMSA0LjYxMyAyLjY2NmgtLjhhMiAyIDAgMCAwLTMuMDguMTQ3QTIuMTEzIDIuMTEzIDAgMCAwIDggNS4zMzNjLS4yNTEuMDA1LS41LjA1NS0uNzMzLjE0N2EyIDIgMCAwIDAtMy4wOC0uMTQ3aC0uOEE1LjMzMyA1LjMzMyAwIDAgMSA4IDIuNjY3Wm0zIDRhLjY2Ny42NjcgMCAxIDEtMS4zMzQgMCAuNjY3LjY2NyAwIDAgMSAxLjMzNCAwWm0tNC42NjcgMGEuNjY3LjY2NyAwIDEgMS0xLjMzMyAwIC42NjcuNjY3IDAgMCAxIDEuMzMzIDBaTTggMTMuMzMzQTUuMzMzIDUuMzMzIDAgMCAxIDIuNjY3IDhjLjAwMy0uNDUuMDYtLjg5OC4xNzMtMS4zMzNoLjgyN2EyIDIgMCAwIDAgNCAuMTIuNjY3LjY2NyAwIDAgMSAuNjY2IDAgMiAyIDAgMSAwIDQtLjEyaC44MjdjLjExMi40MzUuMTcuODgzLjE3MyAxLjMzM0E1LjMzNCA1LjMzNCAwIDAgMSA4IDEzLjMzM1ptMS41NzMtMy44NDZhMi41MDcgMi41MDcgMCAwIDEtMy4xNDYgMCAuNjY3LjY2NyAwIDAgMC0uODU0IDEuMDI2IDMuNzg3IDMuNzg3IDAgMCAwIDQuODU0IDAgLjY2OC42NjggMCAwIDAtLjg1NC0xLjAyNlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOSAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMS45NTUgOC4zMzNoNC42N2wtMi4zMzYgMi4yNTQtMi4zMzQtMi4yNTRabTEuODQ0IDMuMTk0Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQxNC4xMzItMS4xMzQtLjQ4My0xLjEzNEgxLjEyNmMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNjMgMy4wNTRabS0yLjY4LTYuODZINy40NmMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNEw0Ljc4LjQ2N2EuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40Mi0uMTMyIDEuMTQuNDgzIDEuMTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDkgMTJcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk02LjYyNCAzLjY2N2gtNC42N0w0LjI5IDEuNDEzbDIuMzM1IDIuMjU0Wk00Ljc4LjQ3M2EuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40MTQtLjEzMiAxLjEzNC40ODMgMS4xMzRoNi4zMzRjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMNC43OC40NzNabTIuNjggNi44NkgxLjExOWMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQyLjEzMi0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiOVxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTYuNjI1IDMuNjY3aC00LjY3TDQuMjkgMS40MTRsMi4zMzUgMi4yNTNaTTQuNzguNDc0YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM1LjQxMy0uMTMxIDEuMTMzLjQ4MyAxLjEzM2g2LjMzNWMuNjE1IDAgLjkyNS0uNzIuNDktMS4xNEw0Ljc4LjQ3NFptMi42OCA2Ljg2SDEuMTJjLS42MTUgMC0uOTI2LjcyLS40OTEgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNS4yNi45NzUgMGwzLjE3LTMuMDZjLjQzNS0uNDIuMTMxLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0Ljg5IDYuNDQ3QS42NjYuNjY2IDAgMCAwIDE0LjMxNiA2bC0zLjc5My0uNTUzTDguODIzIDJhLjY2Ny42NjcgMCAwIDAtMS4yIDBsLTEuNyAzLjQ0TDIuMTMgNmEuNjY3LjY2NyAwIDAgMC0uNTQuNDUzLjY2Ny42NjcgMCAwIDAgLjE2Ni42NjdMNC41MSA5Ljc4N2wtLjY2NyAzLjc4NmEuNjY3LjY2NyAwIDAgMCAuOTY3LjcxNGwzLjQxMy0xLjc4IDMuNCAxLjc4NmMuMDk0LjA1My4yLjA4LjMwNy4wOGEuNjY3LjY2NyAwIDAgMCAuNjI0LS40Mi42NjYuNjY2IDAgMCAwIC4wMzYtLjM3M2wtLjY2Ny0zLjc4NyAyLjc1My0yLjY2NmEuNjY3LjY2NyAwIDAgMCAuMjE0LS42OFptLTQuMSAyLjY2NmEuNjY2LjY2NiAwIDAgMC0uMTk0LjU5NGwuNDggMi43OTMtMi41MDYtMS4zMzNhLjY2Ni42NjYgMCAwIDAtLjYyNyAwTDUuNDM2IDEyLjVsLjQ4LTIuNzkzYS42NjcuNjY3IDAgMCAwLS4xOTMtLjU5NGwtMi0yIDIuODA3LS40MDZhLjY2Ny42NjcgMCAwIDAgLjUwNi0uMzY3TDguMjIzIDMuOGwxLjI1MyAyLjU0N2EuNjY3LjY2NyAwIDAgMCAuNTA3LjM2NmwyLjgwNy40MDctMiAxLjk5M1pcXFwiIGZpbGw9XFxcIiMwNkRCRTRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIxIDIxXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNi40MTYgNi4zNzVhLjgzLjgzIDAgMCAwLTEuMjA0IDBMOC43NjYgMTIuODJsLTIuNjY0LTIuNjY1YS44My44MyAwIDAgMC0xLjIwNCAwIC44My44MyAwIDAgMCAwIDEuMjA0bDMuMjY2IDMuMjY2YS43OC43OCAwIDAgMCAuNjAyLjI1OC43OC43OCAwIDAgMCAuNjAyLS4yNThsNy4wNDgtNy4wNDhhLjgzLjgzIDAgMCAwIDAtMS4yMDNaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB4PVxcXCIxLjE4OFxcXCIgeT1cXFwiMS4zNzVcXFwiIHdpZHRoPVxcXCIyMS42MjVcXFwiIGhlaWdodD1cXFwiMjEuNjJcXFwiIHJ4PVxcXCIxLjcyNlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIvPjxwYXRoIGQ9XFxcIk0xNi40NzIgOS41OWE0Ljg5NiA0Ljg5NiAwIDAgMC05LjMwNCAxLjIyOCAyLjg5MyAyLjg5MyAwIDAgMC0uMTQ0IDUuNDg3Ljg4OC44ODggMCAwIDAgLjkwNS0xLjUyNGwtLjEyNS4xOC4xMjUtLjE4YS44OS44OSAwIDAgMC0uMzMtLjE0MiAxLjExNSAxLjExNSAwIDAgMS0uNzItMS4wNTN2LS4wMDJhMS4xMTUgMS4xMTUgMCAwIDEgMS4xMTUtMS4xMTYuODg5Ljg4OSAwIDAgMCAuODg4LS44ODhoLS4yMm03LjgxLTEuOTktMS4zMTEuOTIxYTMuMzQgMy4zNCAwIDAgMC02LjUgMS4wNjltNy44MTEtMS45OWEzLjU2IDMuNTYgMCAwIDEtLjI0IDYuODEybC0uMDI3LjAwN2gtLjE4M2EuODkzLjg5MyAwIDAgMS0uMjI1LTEuNzczIDEuNzgzIDEuNzgzIDAgMCAwLS4xNTQtMy40NjdtLjgzLTEuNTc5LS44MyAxLjU3OW0tNi45ODEuNDEuMjIuMDAyYTMuMTIgMy4xMiAwIDAgMSA2LjA3LS45OTguODg4Ljg4OCAwIDAgMCAuNjkxLjU4Nm0tNi45ODEuNDFhLjY2OC42NjggMCAwIDEtLjY2OC42NjkgMS4zMzYgMS4zMzYgMCAwIDAtMS4zMzYgMS4zMzZsOC45ODUtMi40MTVtLTYuMjc2IDQuOTA4IDEuMzM2IDEuMzM2YS44ODcuODg3IDAgMCAwIDEuMjYxIDBsMi42NzEtMi42NzEuMDAxLS4wMDFhLjg4OS44ODkgMCAxIDAtMS4yNjEtMS4yNTNsLTIuMDQxIDIuMDQxLS43MDYtLjcwNWEuODg4Ljg4OCAwIDEgMC0xLjI2MSAxLjI1M1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjQ0MVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwiIzE3OTk3QlxcXCIgc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm01LjcxOCA3Ljk2Mi4yMzYuMjM2LjIzNS0uMjM2IDIuODYtMi44NjZhLjMzMy4zMzMgMCAwIDEgLjQ3IDAgLjMzMy4zMzMgMCAwIDEgMCAuNDc0bC0uMDAxLjAwMS0zLjMzMyAzLjMzMmEuMzMzLjMzMyAwIDAgMS0uNDcgMEw0LjE0OSA3LjMzMWwtLjAwOS0uMDA5LS4wMS0uMDA5YS4zMzMuMzMzIDAgMSAxIC40Ny0uNDdsLjAwOC4wMS4wMS4wMSAxLjEgMS4xWk0zLjQ4IDEuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSAzLjQ4IDEuNzM0Wm0uMzcgOS45NzhhNS42NjcgNS42NjcgMCAxIDAgNi4yOTctOS40MjUgNS42NjcgNS42NjcgMCAwIDAtNi4yOTYgOS40MjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNNi44NzUgMTAuNzI5YS42NjUuNjY1IDAgMCAxLS40NzEtLjE5Nkw0LjUyOSA4LjY1OGEuNjY3LjY2NyAwIDAgMSAuOTQyLS45NDJsMS40MDQgMS40MDMgMy42NTQtMy42NTNhLjY2Ny42NjcgMCAwIDEgLjk0Mi45NDJsLTQuMTI1IDQuMTI1YS42NjQuNjY0IDAgMCAxLS40NzEuMTk2WlxcXCIgb3BhY2l0eT1cXFwiLjk5XFxcIi8+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOCAxLjMzM0E2LjY2NyA2LjY2NyAwIDEgMCAxNC42NjcgOCA2LjY3NCA2LjY3NCAwIDAgMCA4IDEuMzMzWm0zLjQ3MSA1LjA3Ni00LjEyNSA0LjEyNWEuNjY3LjY2NyAwIDAgMS0uOTQyIDBMNC41MjkgOC42NTlhLjY2Ny42NjcgMCAwIDEgLjk0Mi0uOTQzbDEuNDA0IDEuNDAzIDMuNjU0LTMuNjUzYS42NjcuNjY3IDAgMCAxIC45NDIuOTQzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBmaWxsPVxcXCIjMTc5OTdCXFxcIiBkPVxcXCJNMjAuMjg1IDIgOSAxMy41NjcgMy43MTQgOC41NTYgMCAxMi4yNzIgOSAyMSAyNCA1LjcxNXpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGQ9XFxcIk03IC4zMzJjLTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtMy42NjctMy02LjY2Ny02LjY2Ni02LjY2N1ptMi40NjYgOC4yYS42NDQuNjQ0IDAgMCAxIDAgLjkzMy42NDQuNjQ0IDAgMCAxLS45MzMgMEw3IDcuOTMyIDUuNDY2IDkuNDY1YS42NDQuNjQ0IDAgMCAxLS45MzMgMCAuNjQ0LjY0NCAwIDAgMSAwLS45MzNsMS41MzMtMS41MzMtMS41MzMtMS41MzRhLjY0NC42NDQgMCAwIDEgMC0uOTMzLjY0NC42NDQgMCAwIDEgLjkzMyAwTDcgNi4wNjVsMS41MzMtMS41MzNhLjY0NC42NDQgMCAwIDEgLjkzMyAwIC42NDQuNjQ0IDAgMCAxIDAgLjkzM0w3LjkzMyA3bDEuNTMzIDEuNTMzWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCI+PGNpcmNsZSBjeD1cXFwiMTZcXFwiIGN5PVxcXCIxNlxcXCIgcj1cXFwiMTZcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48cGF0aCBkPVxcXCJNMTAuNzAyIDE3LjY5YTIuNzQ5IDIuNzQ5IDAgMCAwIDIuMzUgMS40MTFsLjkzMy4wMTgtLjczNC41NzhhNi40OTggNi40OTggMCAwIDEtMy40MDEgMS4zNjIgOC4zNDIgOC4zNDIgMCAwIDAgMy4zNjcuNzA1aC4wMDRhOC4zNTggOC4zNTggMCAwIDAgOC40NDYtOC40MjR2LS41NjhsLjEzNC0uMWMuMjYzLS4xOTYuNTEtLjQxNC43MzctLjY1TDEwLjcwMiAxNy42OVptMCAwaC4wNTJjLjMxMS0uMDAzLjYyLS4wNS45MTgtLjE0MWwtLjAzMi0uNjQ2YTIuNzQxIDIuNzQxIDAgMCAxLTIuMTU4LTIuMTc3Yy4zMjIuMTEuNjYuMTcyIDEuMDA0LjE4MmwxLjE1Ni4wMzEtLjk2Mi0uNjQyYTIuNzM0IDIuNzM0IDAgMCAxLTEuMjE3LTIuMjhjMC0uMzIzLjA1Ni0uNjQyLjE2NC0uOTQzYTkuMDY0IDkuMDY0IDAgMCAwIDYuMjM2IDIuOTQxbC40NDUuMDIzLS4xMDQtLjQzNGEyLjc0MiAyLjc0MiAwIDAgMSA0LjY4LTIuNWwuMTI4LjEzNi4xODMtLjAzNmMuMzg0LS4wNzYuNzYtLjE4NiAxLjEyMi0uMzI5YTIuNzYzIDIuNzYzIDAgMCAxLS43NTguNjY4TDEwLjcwMiAxNy42OVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIGQ9XFxcIm04LjA2MyA1Ljg1LjAxLjAwM2EuMTY2LjE2NiAwIDAgMSAuMDUyLjAzMkwxMC4xMiA3Ljg4di4wMDJhLjE2OC4xNjggMCAwIDEgLjAzNy4xODJsLjQ2Mi4xOTItLjQ2Mi0uMTkyYS4xNjguMTY4IDAgMCAxLS4wMzYuMDU0bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgyLjAzN2wtLjE5My40NjEuMTkzLS40NjFhLjE2Ny4xNjcgMCAwIDEtLjA1NS0uMDM3bC0uODYtLjg2Ny0uODU1LS44NjFWMTBhLjE2Ny4xNjcgMCAwIDEtLjMzMyAwVjYuMzkzbC0uODU1Ljg2MS0uODU5Ljg2NmEuMTcuMTcgMCAwIDEtLjI0LS4yNGwxLjk5Ni0xLjk5NWEuMTY2LjE2NiAwIDAgMSAuMDUyLS4wMzJsLjAxLS4wMDRhLjE2Ny4xNjcgMCAwIDEgLjEyNiAwWm0tMy40OS0yLjk3N2E2LjE2NyA2LjE2NyAwIDEgMSA2Ljg1MyAxMC4yNTRBNi4xNjcgNi4xNjcgMCAwIDEgNC41NzQgMi44NzNabS4xODYgOS45NzdhNS44MzQgNS44MzQgMCAxIDAgNi40ODEtOS43IDUuODM0IDUuODM0IDAgMCAwLTYuNDgyIDkuNzAxWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMjcgOS40OTFhLjE2Ny4xNjcgMCAwIDEtLjA1NC0uMDM1bC0uMTktLjE5Ny0uODYtLjg4OXYyLjk2M2EuMTY3LjE2NyAwIDAgMS0uMzMzIDBWOC4zN2wtLjg2Ljg5LS4xODkuMTk1YS4xNy4xNyAwIDAgMS0uMjM3LS4yNDFsMS4zMjgtMS4zMjlhLjE2Ni4xNjYgMCAwIDEgLjA1Mi0uMDMybC4wMS0uMDA0YS4xNjcuMTY3IDAgMCAxIC4xMjYgMGwuMDEuMDA0YS4xNTYuMTU2IDAgMCAxIC4wNTIuMDMybDEuMzI4IDEuMzI5LjAwMi4wMDFhLjE2Ny4xNjcgMCAwIDEgLjAzNi4xODJsLjQ2Mi4xOTMtLjQ2Mi0uMTkzYS4xNjcuMTY3IDAgMCAxLS4wMzYuMDU1bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgzLjAzNlptLS40MzctNy41ODQgMy45NjMgMy45NjMuMDIzLjA3YS4zMy4zMyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMy4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOThhLjIzMy4yMzMgMCAwIDEgLjAzMi4wMTVsLjExLjA1OWguMDQ1Wm0uODU0IDEuMzQ2TDguODMzIDIuNHYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCAxMCA1LjgzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk04LjUgMi42Njd2LS41SDQuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDMuNSAzLjMzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDEwYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0zLjgzNyAxMS42NDMtLjEyOC4zMTQuMjQzLjIzNUE1LjgzMyA1LjgzMyAwIDAgMCA4IDEzLjgzM2guMDAyYTUuODMzIDUuODMzIDAgMCAwIDQuMDQ3LTEuNjRsLjI0My0uMjM2LS4xMjktLjMxNGE0LjUgNC41IDAgMCAwLTguMzI1IDBabTguMzM4LS43MjQuNDMuNzM2LjQzMy0uNzM2QTUuNzggNS43OCAwIDAgMCAxMy44MzMgOCA1LjgzMyA1LjgzMyAwIDAgMCAyLjE2NyA4YTUuNzggNS43OCAwIDAgMCAuNzk1IDIuOTJsLjQzMi43MzYuNDMtLjczN2E0LjgzMyA0LjgzMyAwIDAgMSAyLjM2My0yLjA0MmwuNjU1LS4yNjUtLjQ2Ny0uNTNhMi4xNjcgMi4xNjcgMCAxIDEgMy4yNSAwbC0uNDY3LjUzLjY1NS4yNjVhNC44MzMgNC44MzMgMCAwIDEgMi4zNjIgMi4wNDJaTTQuNjM1IDIuODRjMS0uNjU1IDIuMTctMS4wMDUgMy4zNjUtMS4wMDdhNi4xNjYgNi4xNjYgMCAwIDEgNC41MzIgMTAuMzM1IDYuMTY3IDYuMTY3IDAgMCAxLTkuMDY0IDBBNi4xNjcgNi4xNjcgMCAwIDEgNC42MzUgMi44NFptMS44NCAyLjgwOGExLjgzMyAxLjgzMyAwIDEgMCAzLjA1IDIuMDM3IDEuODMzIDEuODMzIDAgMCAwLTMuMDUtMi4wMzdaXFxcIiBmaWxsPVxcXCJ0cmFuc3BhcmVudFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjJcXFwiPjxwYXRoIGQ9XFxcIm0xMy41MDQgMTEuNDQ4LS40NTUuMzU4LjUzOC4yMTRhOS42NjcgOS42NjcgMCAwIDEgNi4wNDIgNy45MTYuNjY3LjY2NyAwIDAgMS0uNTcuNzNoLS4wOTFhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNTkzIDguMzMzIDguMzMzIDAgMCAwLTE2LjU2MiAwQS42NzMuNjczIDAgMCAxIC40IDE5LjkyNmE5LjY2NyA5LjY2NyAwIDAgMSA2LjAxMy03LjkwN2wuNTM2LS4yMTQtLjQ1NC0uMzU3YTUuNjY3IDUuNjY3IDAgMSAxIDcuMDA4IDBabS01LjkxMS0uODQ1YTQuMzM0IDQuMzM0IDAgMSAwIDQuODE1LTcuMjA3IDQuMzM0IDQuMzM0IDAgMCAwLTQuODE1IDcuMjA3WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMThcXFwiPjxwYXRoIGQ9XFxcIm0xOC45MTcgMTMuNTgzLTYuNzUtMTEuNjY2QzExLjUuNzUgOS45MTcuMzMzIDguNzUgMWMtLjQxNy4yNS0uNzUuNTgzLS45MTcuOTE3bC02Ljc1IDExLjY2NkMuNDE3IDE0Ljc1LjgzMyAxNi4zMzMgMiAxN2MuNDE3LjI1LjgzMy4zMzMgMS4yNS4zMzNoMTMuNDE3YzEuNDE2IDAgMi41LTEuMTY2IDIuNS0yLjUuMDgzLS41LS4wODQtLjkxNi0uMjUtMS4yNVpNMTAgMTRjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNabS44MzMtNC4xNjdjMCAuNS0uMzMzLjgzNC0uODMzLjgzNC0uNSAwLS44MzMtLjMzNC0uODMzLS44MzRWNi41YzAtLjUuMzMzLS44MzMuODMzLS44MzMuNSAwIC44MzMuMzMzLjgzMy44MzN2My4zMzNaXFxcIiBmaWxsPVxcXCIjRkY3MjY0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDE5XFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjd2FybmluZy1maWxsX3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTE3LjAyIDEzLjk5Mi02LjA3My0xMC41Yy0uNi0xLjA1LTIuMDI1LTEuNDI1LTMuMDc0LS44MjUtLjM3NS4yMjUtLjY3NS41MjUtLjgyNS44MjVsLTYuMDczIDEwLjVjLS42IDEuMDUtLjIyNSAyLjQ3NS44MjQgMy4wNzUuMzc1LjIyNS43NS4zIDEuMTI1LjNoMTIuMDcxYzEuMjc1IDAgMi4yNS0xLjA1IDIuMjUtMi4yNS4wNzUtLjQ1LS4wNzUtLjgyNS0uMjI1LTEuMTI1Wm0tOC4wMjMuMzc1Yy0uNDUgMC0uNzUtLjMtLjc1LS43NXMuMy0uNzUuNzUtLjc1Ljc1LjMuNzUuNzUtLjMuNzUtLjc1Ljc1Wm0uNzUtMy43NWMwIC40NS0uMy43NS0uNzUuNzVzLS43NS0uMy0uNzUtLjc1di0zYzAtLjQ1LjMtLjc1Ljc1LS43NXMuNzUuMy43NS43NXYzWlxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcIndhcm5pbmctZmlsbF9zdmdfX2FcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk0wIDBoMTcuOTk1djE4SDB6XFxcIiB0cmFuc2Zvcm09XFxcInRyYW5zbGF0ZSgwIC44NjcpXFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIzIDIxXFxcIj48cGF0aCBkPVxcXCJNMTEuODg3IDE1YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMlptMTAuNjcgMS40Ny04LjA1LTE0YTMgMyAwIDAgMC01LjI0IDBsLTggMTRBMyAzIDAgMCAwIDMuODI3IDIxaDE2LjEyYTMgMyAwIDAgMCAyLjYxLTQuNTNabS0xLjczIDJhMSAxIDAgMCAxLS44OC41MUgzLjgyN2ExIDEgMCAwIDEtLjg4LS41MSAxIDEgMCAwIDEgMC0xbDgtMTRhMSAxIDAgMCAxIDEuNzggMGw4LjA1IDE0YTEgMSAwIDAgMSAuMDUgMS4wMnYtLjAyWk0xMS44ODcgN2ExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDIgMFY4YTEgMSAwIDAgMC0xLTFaXFxcIiBmaWxsPVxcXCIjRDEwMDFFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTcuMDI0IDEyLjEyMy02LjA3NS0xMC41QzEwLjM0OS41NzMgOC45MjQuMTk4IDcuODc0Ljc5OGMtLjM3NS4yMjUtLjY3NS41MjUtLjgyNS44MjVsLTYuMDc1IDEwLjVjLS42IDEuMDUtLjIyNSAyLjQ3NS44MjUgMy4wNzUuMzc1LjIyNS43NS4zIDEuMTI1LjNoMTIuMDc1YzEuMjc1IDAgMi4yNS0xLjA1IDIuMjUtMi4yNS4wNzUtLjQ1LS4wNzUtLjgyNS0uMjI1LTEuMTI1Wm0tOC4wMjUuMzc1Yy0uNDUgMC0uNzUtLjMtLjc1LS43NXMuMy0uNzUuNzUtLjc1Ljc1LjMuNzUuNzUtLjMuNzUtLjc1Ljc1Wm0uNzUtMy43NWMwIC40NS0uMy43NS0uNzUuNzVzLS43NS0uMy0uNzUtLjc1di0zYzAtLjQ1LjMtLjc1Ljc1LS43NXMuNzUuMy43NS43NXYzWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCI+PGNpcmNsZSBjeD1cXFwiMTZcXFwiIGN5PVxcXCIxNlxcXCIgcj1cXFwiMTZcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48cGF0aCBkPVxcXCJNMjMuOTE3IDE0LjI3di4wMTJjMCAuNDYyIDAgMi45NzctLjAzIDMuMzgxdi4wMjhhNy42IDcuNiAwIDAgMS0uMzc0IDIuNDQzdi4wMDFhMS41MzUgMS41MzUgMCAwIDEtLjM3NS42MTUgMS44MjcgMS44MjcgMCAwIDEtLjk1NS40OTFjLTIuNzAyLjIwOC00Ljk5LjI0NS03LjYwMy4yMDhoLS4wMTJhMzMuNTYyIDMzLjU2MiAwIDAgMS00LjgxNy0uMjQ0IDEuODExIDEuODExIDAgMCAxLS45MjctLjQ4NSAyLjAyMiAyLjAyMiAwIDAgMS0uNDUtLjg2OGwtLjAwMS0uMDA2YTYuODI4IDYuODI4IDAgMCAxLS4yMTUtMS40M3YtLjAwOWEzNS44ODcgMzUuODg3IDAgMCAxIC4wMDMtNC44NTdjLjAzNy0uNDQyLjA3NC0uODg4LjE3NS0xLjI5OC4xMDQtLjQyNC4yNy0uNzc1LjU0LTEuMDI1bC4wMDMtLjAwM2MuMjUzLS4yNC41Ny0uNDAxLjkxMS0uNDY2YTU4LjUyNyA1OC41MjcgMCAwIDEgNi4yMDQtLjIyM2guMDEyYTU4LjQyNiA1OC40MjYgMCAwIDEgNi4yMjYuMjNjLjQxLjA3OC43ODIuMjkgMS4wNTYuNjA1LjQ0Ny45LjY2NCAxLjg5Ni42MjkgMi45Wm0tOS45NDUgMy44Njd2LjU2bC40OTItLjI2N2E5OC45NyA5OC45NyAwIDAgMSAyLjI2NC0xLjE3NWwuMDYzLS4wMzJhNzAuNDUgNzAuNDUgMCAwIDAgMi4xMTYtMS4xMDRsLjU0LS4zLS41NDctLjI4Ny00LjQ0LTIuMzMyLS40ODgtLjI1N3Y1LjE5NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wOWFlMWE4YiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWRjNzA1ZjQ4Jmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDA4OTJkZjYmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09uQm9hcmRpbmdJbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wZGZmODQ2MCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjFhNDUxYTAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWZkMDU0MmMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ3M2IyNjFlJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NmZlNTkwNTUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xYzRhN2JiOSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTI0NDNkZjUzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Yjc3YjExZDQmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDk3NDE5ZjImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01NTM4ZDdlMiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhMmJkYTU4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaGltbWVyTG9hZGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03NDM1NjE3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mNjdjN2U3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWMzMmJmMGMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZTM4ZDEwZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmYxN2VjNDUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGE1NzFmZDYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWM3Y2EyOGI4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBiM2JmYjQ2JnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzdmMTRmM2Umc2NvcGVkPXRydWUmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTQwZmNmNCZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGYyMjVkM2UmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDBkNzg3MGEmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGFkYTVmMzYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD0xN2U2MzJhNiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTUyMjY2MjAwJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI2YWQ3NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjZhZDc2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyNmFkNzZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzI2YWQ3NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzI2YWQ3NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFlZDFiNWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVZhbGlkYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0YWVkMWI1ZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRhZWQxYjVmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGFlZDFiNWYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFlZDFiNWYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0YWVkMWI1ZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmZTU5MDU1JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIkB2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCJcbmltcG9ydCBcIi4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NmZlNTkwNTUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTZmZTU5MDU1XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmZlNTkwNTVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2ZmU1OTA1NScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZmZTU5MDU1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2ZmU1OTA1NScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVkMGUzZGEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY1ZDBlM2RhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjVkMGUzZGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2NWQwZTNkYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVkMGUzZGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NWQwZTNkYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYzRhN2JiOSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFjNGE3YmI5Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0xYzRhN2JiOVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxYzRhN2JiOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFjNGE3YmI5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWM0YTdiYjknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM0YTdiYjkmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxYzRhN2JiOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDQzZGY1MyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTI0NDNkZjUzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0yNDQzZGY1M1wiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNDQzZGY1M1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI0NDNkZjUzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjQ0M2RmNTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ0M2RmNTMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNDQzZGY1MycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05ZmY1YThmOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOWZmNWE4ZjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc5ZmY1YThmOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzlmZjVhOGY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlmZjVhOGY4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWZmNWE4ZjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ3N2M2ZWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNDc3YzZlY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM0NzdjNmVjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzQ3N2M2ZWMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ3N2M2ZWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNDc3YzZlYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZWJmNDFmOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmViZjQxZjlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2ZWJmNDFmOScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZlYmY0MWY5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlYmY0MWY5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmViZjQxZjknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yjc3YjExZDQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1iNzdiMTFkNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYjc3YjExZDRcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYjc3YjExZDRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiNzdiMTFkNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2I3N2IxMWQ0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI3N2IxMWQ0JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYjc3YjExZDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGYxZDhiMWJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZjFkOGIxYicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBmMWQ4YjFiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZjFkOGIxYiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBmMWQ4YjFiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00OTc0MTlmMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSGVscGVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ5NzQxOWYyJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0OTc0MTlmMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ5NzQxOWYyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDk3NDE5ZjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ5NzQxOWYyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDk3NDE5ZjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTUzOGQ3ZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU1MzhkN2UyJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1MzhkN2UyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTUzOGQ3ZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NTM4ZDdlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU1MzhkN2UyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDlhZTFhOGImc2NvcGVkPXRydWVcIlxuY29uc3Qgc2NyaXB0ID0ge31cblxuaW1wb3J0IFwiLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wOWFlMWE4YiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wOWFlMWE4YlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA5YWUxYThiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDlhZTFhOGInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwOWFlMWE4YicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGluZXNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA5YWUxYThiJnNjb3BlZD10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA5YWUxYThiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThlMzZmOGVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04ZTM2ZjhlYyZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4ZTM2ZjhlY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhlMzZmOGVjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGUzNmY4ZWMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4ZTM2ZjhlYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kYzcwNWY0OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWRjNzA1ZjQ4Jmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGM3MDVmNDhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkYzcwNWY0OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RjNzA1ZjQ4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGM3MDVmNDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjYxOWE3ZWRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNjE5YTdlZCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI2MTlhN2VkJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjYxOWE3ZWQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNjE5YTdlZCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWEyYmRhNTgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhMmJkYTU4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01YTJiZGE1OFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWEyYmRhNThcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YTJiZGE1OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVhMmJkYTU4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVhMmJkYTU4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTU3MzhlNjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE1NzM4ZTYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTU3MzhlNjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNTczOGU2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE1NzM4ZTYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTU3MzhlNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NDM1NjE3MiZzY29wZWQ9dHJ1ZVwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc0MzU2MTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi03NDM1NjE3MlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc0MzU2MTcyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzQzNTYxNzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NDM1NjE3MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0MzU2MTcyJnNjb3BlZD10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc0MzU2MTcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2ZjE0MWJjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2lkZUhlbHBUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjZmMTQxYmNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNmYxNDFiYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI2ZjE0MWJjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2ZjE0MWJjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjZmMTQxYmMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N0ZXBCYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2MWNlYTQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1N0ZXBCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU3RlcEJhci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTYxY2VhNDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjFjZWE0MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2MWNlYTQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjFjZWE0MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE2MWNlYTQwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q1MjA1OWEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDUyMDU5YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkNTIwNTlhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q1MjA1OWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDUyMDU5YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdkNTIwNTlhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThjOTdhNWJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4Yzk3YTViZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhjOTdhNWJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGM5N2E1YmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4Yzk3YTViZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQwMWQ4Y2QyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDAxZDhjZDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMDFkOGNkMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QwMWQ4Y2QyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMzc2MTc3MDJcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzc2MTc3MDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNzYxNzcwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM3NjE3NzAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzc2MTc3MDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2VhNGIwNmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZWE0YjA2YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdlYTRiMDZhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2VhNGIwNmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2VhNGIwNmEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZWE0YjA2YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAyYWMyYmY0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDJhYzJiZjQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMmFjMmJmNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAyYWMyYmY0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE5M2Q4NDdjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhOTNkODQ3Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2E5M2Q4NDdjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYTkzZDg0N2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkzZDg0N2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhOTNkODQ3YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmZlNjUxMDImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmZlNjUxMDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiZmU2NTEwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JmZTY1MTAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JmZTY1MTAyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lY2M1MDgyOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWNjNTA4MjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlY2M1MDgyOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VjYzUwODI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lY2M1MDgyOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VjYzUwODI4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OWMzMTkzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NTljMzE5M1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1OWMzMTkzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDU5YzMxOTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5YzMxOTMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NTljMzE5MycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmJjZThjYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU2YmNlOGNhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTZiY2U4Y2EnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NmJjZThjYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmJjZThjYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU2YmNlOGNhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWY2N2M3ZTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1mNjdjN2U3MlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZjY3YzdlNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmNjdjN2U3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Y2N2M3ZTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Y2N2M3ZTcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM5MjVlZjQ5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzOTI1ZWY0OVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM5MjVlZjQ5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzkyNWVmNDknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzkyNWVmNDkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczOTI1ZWY0OScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmZiOGY0MDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyZmI4ZjQwNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzJmYjhmNDA2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMmZiOGY0MDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJmYjhmNDA2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmZiOGY0MDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWI1NGUwOWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFiNTRlMDlmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWI1NGUwOWYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxYjU0ZTA5ZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFiNTRlMDlmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWMzMmJmMGMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YzMyYmYwYyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWMzMmJmMGNcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YzMyYmYwY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVjMzJiZjBjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWMzMmJmMGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzMyYmYwYyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVjMzJiZjBjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMzhkMTBlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTFlMzhkMTBlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFlMzhkMTBlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWUzOGQxMGUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxZTM4ZDEwZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZTM4ZDEwZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFlMzhkMTBlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmYxN2VjNDUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02ZjE3ZWM0NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNmYxN2VjNDVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZjE3ZWM0NVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmMTdlYzQ1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmYxN2VjNDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZjE3ZWM0NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmMTdlYzQ1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMDg5MmRmNlwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDA4OTJkZjYmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDA4OTJkZjZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMDg5MmRmNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAwODkyZGY2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMDg5MmRmNlwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMDg5MmRmNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWViOGRlYjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWViOGRlYjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxZWI4ZGViMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFlYjhkZWIwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFlYjhkZWIwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZjJmOWFiOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZjJmOWFiOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFmMmY5YWI4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWYyZjlhYjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWYyZjlhYjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyM2VlMzc1Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIzZWUzNzVjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjNlZTM3NWMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIzZWUzNzVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGU0MDJiMDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZTQwMmIwNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRlNDAyYjA2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGU0MDJiMDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRlNDAyYjA2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTU3MWZkNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGE1NzFmZDYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTU3MWZkNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhNTcxZmQ2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGE1NzFmZDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGE1NzFmZDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2NhMjhiOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YzdjYTI4YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWM3Y2EyOGI4XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3Y2EyOGI4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzdjYTI4YjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjN2NhMjhiOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3Y2EyOGI4JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYzdjYTI4YjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZiMWUxY2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNmYjFlMWNjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2ZiMWUxY2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczZmIxZTFjYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZmIxZTFjYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNmYjFlMWNjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwMTE4OTdhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0MDExODk3YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQwMTE4OTdhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDAxMTg5N2EnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDAxMTg5N2EmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0MDExODk3YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa1B1Ymxpc2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjM2I0NTY4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvQnVsa1B1Ymxpc2gudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZjM2I0NTY4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmMzYjQ1NjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2YzNiNDU2OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnVsa1B1Ymxpc2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjM2I0NTY4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmMzYjQ1NjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBiM2JmYjQ2JnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPWpzXCJcblxuaW1wb3J0IFwiLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBiM2JmYjQ2JnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wYjNiZmI0NlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBiM2JmYjQ2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGIzYmZiNDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwYjNiZmI0NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGIzYmZiNDYmc2NvcGVkPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGIzYmZiNDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NoZWNraW5nQWN0aXZpdGllcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGRhM2FkODQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NoZWNraW5nQWN0aXZpdGllcy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9DaGVja2luZ0FjdGl2aXRpZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRkYTNhZDg0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGRhM2FkODQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZGEzYWQ4NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZGEzYWQ4NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2RkYTNhZDg0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3ZjE0ZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVZhbGlkYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzdmMTRmM2Umc2NvcGVkPXRydWUmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTc3ZjE0ZjNlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzdmMTRmM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3N2YxNGYzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc3ZjE0ZjNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3ZjE0ZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzdmMTRmM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjVmNGJkNDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QdWJsaXNoaW5nQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL3B1Ymxpc2hpbmdBY3Rpdml0eS9QdWJsaXNoaW5nQWN0aXZpdHkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI1ZjRiZDQ0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjVmNGJkNDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNWY0YmQ0NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNWY0YmQ0NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI1ZjRiZDQ0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTRkMTI5MjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYkluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYkluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvdGFicy9UYWJJbmRleC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTRkMTI5MjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNGQxMjkyMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U0ZDEyOTIwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTRkMTI5MjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNGQxMjkyMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2l6YXJkSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU0YTE2NzE2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XaXphcmRJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9XaXphcmRJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL3dpemFyZFN0ZXBzL1dpemFyZEluZGV4LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NGExNjcxNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU0YTE2NzE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTRhMTY3MTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dpemFyZEluZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NGExNjcxNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU0YTE2NzE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMzhlYTg4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDEzOGVhODhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTM4ZWE4OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxMzhlYTg4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMzhlYTg4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDEzOGVhODgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJhZmIyNWJhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmFmYjI1YmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiYWZiMjViYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JhZmIyNWJhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iYWZiMjViYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JhZmIyNWJhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjlhN2QzMTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyOWE3ZDMxM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI5YTdkMzEzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjlhN2QzMTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOWE3ZDMxMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI5YTdkMzEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdkNzk5YmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjN2Q3OTliZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2M3ZDc5OWJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYzdkNzk5YmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2M3ZDc5OWJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2RmYjc0NjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjZGZiNzQ2OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NkZmI3NDY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjZGZiNzQ2OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyNjFhZmZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTI2MWFmZmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1MjYxYWZmZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzUyNjFhZmZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTI2MWFmZmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1MjYxYWZmZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2IzZTQ4MDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYjNlNDgwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NiM2U0ODA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2IzZTQ4MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiM2U0ODA0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2IzZTQ4MDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMmMyZTg2MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEyYzJlODYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTJjMmU4NjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMmMyZTg2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTJjMmU4NjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3OGI2NDQwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc4YjY0NDA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzhiNjQ0MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3OGI2NDQwNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q0ZGFiNzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDRkYWI3NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkNGRhYjc0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q0ZGFiNzQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNGRhYjc0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q0ZGFiNzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxNzJjMmFjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxNzJjMmFjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDE3MmMyYWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTcyYzJhYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTcyYzJhYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImJkOTg4ODkyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYmQ5ODg4OTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdiZDk4ODg5MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JkOTg4ODkyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjE4YmUzMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdmMThiZTMwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2YxOGJlMzAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZjE4YmUzMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2YxOGJlMzAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZjE4YmUzMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYmQ2NjJkYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYmQ2NjJkY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ViZDY2MmRjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWJkNjYyZGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWJkNjYyZGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYmQ2NjJkYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjJjYTA0YzAyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMmNhMDRjMDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyY2EwNGMwMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzJjYTA0YzAyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzOGIwYWU2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQzOGIwYWU2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDM4YjBhZTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0MzhiMGFlNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MzhiMGFlNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQzOGIwYWU2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjc3Y2I0ZjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNzdjYjRmMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI3N2NiNGYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjc3Y2I0ZjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjk0Njg1MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyOTQ2ODUxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzI5NDY4NTEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczMjk0Njg1MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTE5NjY4MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxMTk2NjgyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDExOTY2ODInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTE5NjY4MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTE5NjY4MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAxMTk2NjgyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDc0YTcxM2QmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NzRhNzEzZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ3NGE3MTNkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDc0YTcxM2QnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzRhNzEzZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ3NGE3MTNkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmI4YWZmMDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyYjhhZmYwMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJiOGFmZjAwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmI4YWZmMDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWZmMTc3NzImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVmZjE3NzcyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWZmMTc3NzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZmYxNzc3MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVmZjE3NzcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmY3OGNmN2ZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2Zjc4Y2Y3ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZmNzhjZjdmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmNzhjZjdmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRkNzYzZTRjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGQ3NjNlNGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZDc2M2U0YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRkNzYzZTRjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGQ3NjNlNGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YWE2ZDA2MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmFhNmQwNjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2YWE2ZDA2MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZhYTZkMDYyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmFhNmQwNjImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2YWE2ZDA2MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3NWI2MWUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NzViNjFlMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc3NWI2MWUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzc1YjYxZTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzViNjFlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc3NWI2MWUyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjYjI2MDNmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzY2IyNjAzZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNjYjI2MDNmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2NiMjYwM2YnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2NiMjYwM2YmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczY2IyNjAzZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mN2VkNmFkYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZjdlZDZhZGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmN2VkNmFkYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Y3ZWQ2YWRhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZjdlZDZhZGEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNjRkOTQ0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3YTY0ZDk0NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdhNjRkOTQ0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2E2NGQ5NDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNjRkOTQ0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2E2NGQ5NDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgxNjg0NmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU4MTY4NDZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTgxNjg0NmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ODE2ODQ2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODE2ODQ2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU4MTY4NDZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NWE0ZDllJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ODVhNGQ5ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ4NWE0ZDllJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDg1YTRkOWUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1YTRkOWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ODVhNGQ5ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThmNmZmNjg0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4ZjZmZjY4NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhmNmZmNjg0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGY2ZmY2ODQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZjZmZjY4NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhmNmZmNjg0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBkZmY4NDYwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT25Cb2FyZGluZ0luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGRmZjg0NjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMGRmZjg0NjBcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGRmZjg0NjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZGZmODQ2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBkZmY4NDYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBkZmY4NDYwJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGRmZjg0NjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVlZmI2MGEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVN0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvQWN0aXZpdHlTdGVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2NWVmYjYwYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzY1ZWZiNjBhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjVlZmI2MGEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVlZmI2MGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NWVmYjYwYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxYTQ1MWEwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWZhdWx0VmFsdWVzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZWZhdWx0VmFsdWVzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjFhNDUxYTAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNjFhNDUxYTBcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2MWE0NTFhMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYxYTQ1MWEwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjFhNDUxYTAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MWE0NTFhMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYxYTQ1MWEwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmQwNTQyYzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mZDA1NDJjMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1mZDA1NDJjMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImZkMDU0MmMyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZmQwNTQyYzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdmZDA1NDJjMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZkMDU0MmMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZmQwNTQyYzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3M2IyNjFlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDczYjI2MWUmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNDczYjI2MWVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ3M2IyNjFlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDczYjI2MWUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NzNiMjYxZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDczYjI2MWUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NzNiMjYxZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTQwZmNmNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhNDBmY2Y0Jmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YTQwZmNmNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVhNDBmY2Y0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWE0MGZjZjQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1YTQwZmNmNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjVkNjBhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZjVkNjBhNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdmNWQ2MGE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Y1ZDYwYTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Y1ZDYwYTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZjVkNjBhNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDUwZTE3M2NcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwNTBlMTczYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA1MGUxNzNjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDUwZTE3M2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNTBlMTczYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi02NjFlNmY4ZVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY2MWU2ZjhlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjYxZTZmOGUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2NjFlNmY4ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NjFlNmY4ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YmMwNDFmOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjViYzA0MWY5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWJjMDQxZjknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YmMwNDFmOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YmMwNDFmOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzViYzA0MWY5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YWVmOTY4OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlhZWY5Njg4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWFlZjk2ODgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5YWVmOTY4OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWFlZjk2ODgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc5YWVmOTY4OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NTg5ZTg2ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NTg5ZTg2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc1ODllODZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzU4OWU4NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzU4OWU4NmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3NTg5ZTg2ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmZWYyNmE4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ZlZjI2YTgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZmVmMjZhODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlZjI2YTgwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZmVmMjZhODAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTVkODRhMWQ4XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVkODRhMWQ4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWQ4NGExZDgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZDg0YTFkOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWQ4NGExZDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyZTNiNTk5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3MmUzYjU5OVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzcyZTNiNTk5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzJlM2I1OTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyZTNiNTk5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzJlM2I1OTknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDMzYjI5MzRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkMzNiMjkzNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QzM2IyOTM0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDMzYjI5MzQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkMzNiMjkzNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc5YTg4ZmM1JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3OWE4OGZjNVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc5YTg4ZmM1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzlhODhmYzUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWE4OGZjNSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc5YTg4ZmM1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU1NzFiMjImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlNTcxYjIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGU1NzFiMjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZTU3MWIyMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNTcxYjIyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGU1NzFiMjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZjMjBmMTc4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmMyMGYxNzgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2YzIwZjE3OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YzIwZjE3OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZjMjBmMTc4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGZlNDIxOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMThmZTQyMTlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxOGZlNDIxOScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE4ZmU0MjE5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGZlNDIxOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE4ZmU0MjE5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTA2YTg1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYWEwNmE4NWVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdhYTA2YTg1ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2FhMDZhODVlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTA2YTg1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2FhMDZhODVlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlMmU4MzA3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZTJlODMwN1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlMmU4MzA3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGUyZTgzMDcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGUyZTgzMDcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZTJlODMwNycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YzJlNjgyZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGMyZTY4MmRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0YzJlNjgyZCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRjMmU2ODJkJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRjMmU2ODJkJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGMyZTY4MmQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODFjMjI5MmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjgxYzIyOTJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnODFjMjI5MmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4MWMyMjkyZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWMyMjkyZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzgxYzIyOTJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYzIxYzQ2ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiM2MyMWM0NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczYzIxYzQ2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzNjMjFjNDZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYzIxYzQ2ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNjMjFjNDZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMTJmZWQ1NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDEyZmVkNTRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkMTJmZWQ1NCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QxMmZlZDU0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMTJmZWQ1NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QxMmZlZDU0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDdjMDZjMTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDdjMDZjMTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwN2MwNmMxMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA3YzA2YzEyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDdjMDZjMTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwN2MwNmMxMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNTZjMTFlYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkNTZjMTFlYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2Q1NmMxMWVhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDU2YzExZWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDU2YzExZWEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkNTZjMTFlYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYzg3MjdjMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYzg3MjdjMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NjODcyN2MyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2M4NzI3YzInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2M4NzI3YzImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjYzg3MjdjMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWlkVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGY5NmM5NmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGY5NmM5NmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkZjk2Yzk2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RmOTZjOTZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZjk2Yzk2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2RmOTZjOTZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJhOGE3MzEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjJhOGE3MzFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyMmE4YTczMScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzIyYThhNzMxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJhOGE3MzEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyMmE4YTczMScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yzc4NTMwNTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYzc4NTMwNTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjNzg1MzA1MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2M3ODUzMDUyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNzg1MzA1MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2M3ODUzMDUyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTVjN2M1MmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTVjN2M1MmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNWM3YzUyZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U1YzdjNTJlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTVjN2M1MmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNWM3YzUyZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNDA2YWEzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlNDA2YWEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGU0MDZhYTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZTQwNmFhMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNDA2YWEzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGU0MDZhYTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWVmNjg1ZiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNWVmNjg1ZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM1ZWY2ODVmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzVlZjY4NWYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWVmNjg1ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM1ZWY2ODVmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGEwOGRmNDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOGEwOGRmNDZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4YTA4ZGY0NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzhhMDhkZjQ2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGEwOGRmNDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4YTA4ZGY0NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDNkNTM2ZDgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDNkNTM2ZDhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0M2Q1MzZkOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQzZDUzNmQ4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00M2Q1MzZkOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQzZDUzNmQ4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhMzBiYWEyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBhMzBiYWEyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGEzMGJhYTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwYTMwYmFhMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTMwYmFhMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBhMzBiYWEyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRlZWJhYTQxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRlZWJhYTQxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGVlYmFhNDEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZWViYWE0MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZWViYWE0MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRlZWJhYTQxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UaWVkU3RhdHVzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NzA4OTg0MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU3MDg5ODQxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTcwODk4NDEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU3MDg5ODQxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTcwODk4NDEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjEyZmNjNjEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjEyZmNjNjFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2MTJmY2M2MScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzYxMmZjYzYxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxMmZjYzYxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjEyZmNjNjEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjNmNjc0MjYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjNmNjc0MjZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2M2Y2NzQyNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzYzZjY3NDI2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjNmNjc0MjYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjk3MjgzNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxNjk3MjgzNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzE2OTcyODM0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMTY5NzI4MzQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjk3MjgzNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE2OTcyODM0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZiNjE5ZjIwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImZiNjE5ZjIwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZmI2MTlmMjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdmYjYxOWYyMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mYjYxOWYyMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ZiNjE5ZjIwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzIyNTdmNzAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyMjU3ZjcwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzIyNTdmNzAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjI1N2Y3MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyMjU3ZjcwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzIyNTdmNzAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjIyNWQzZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmMjI1ZDNlJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZjIyNWQzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRmMjI1ZDNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGYyMjVkM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjIyNWQzZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRmMjI1ZDNlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lMTE5YzNmNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTExOWMzZjZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlMTE5YzNmNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2UxMTljM2Y2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lMTE5YzNmNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2UxMTljM2Y2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3YzZmYjNjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyN2M2ZmIzY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI3YzZmYjNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjdjNmZiM2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjdjNmZiM2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyN2M2ZmIzYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlZDVmZGQyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZWQ1ZmRkMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlZDVmZGQyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGVkNWZkZDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZWQ1ZmRkMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlZDVmZGQyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjgwN2MwOGMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI4MDdjMDhjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjgwN2MwOGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyODA3YzA4YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4MDdjMDhjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjgwN2MwOGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwZDc4NzBhJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDBkNzg3MGEmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTQwZDc4NzBhXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQwZDc4NzBhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDBkNzg3MGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0MGQ3ODcwYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDBkNzg3MGEmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0MGQ3ODcwYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZDE0OGQzN1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVkMTQ4ZDM3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWQxNDhkMzcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDE0OGQzNyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVkMTQ4ZDM3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD05YTYwODQzMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi05YTYwODQzMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOWE2MDg0MzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc5YTYwODQzMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzlhNjA4NDMyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc5YTYwODQzMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01ZjUwMDhiNFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZjUwMDhiNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVmNTAwOGI0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWY1MDA4YjQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWY1MDA4YjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRhZGE1ZjM2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00YWRhNWYzNiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0YWRhNWYzNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRhZGE1ZjM2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGFkYTVmMzYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRhZGE1ZjM2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGFkYTVmMzYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTRlYTgwMyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDU0ZWE4MDNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0NTRlYTgwMycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ1NGVhODAzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU0ZWE4MDMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NTRlYTgwMycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4MzllMDk4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyODM5ZTA5OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI4MzllMDk4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjgzOWUwOTgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI4MzllMDk4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVmNmQzMTJhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlZjZkMzEyYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VmNmQzMTJhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWY2ZDMxMmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWY2ZDMxMmEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlZjZkMzEyYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2JlODc2ZDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImNiZTg3NmQwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnY2JlODc2ZDAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjYmU4NzZkMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2JlODc2ZDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjYmU4NzZkMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDY3ZDJmMSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjQ2N2QyZjFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNDY3ZDJmMScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI0NjdkMmYxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NjdkMmYxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjQ2N2QyZjEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk5OWFlZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY5OTlhZWUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjk5OWFlZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2OTk5YWVlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTk5YWVlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzY5OTlhZWUyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTg1YzlkYzNlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4NWM5ZGMzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzg1YzlkYzNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnODVjOWRjM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODVjOWRjM2UmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4NWM5ZGMzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzYzBkMzNhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkM2MwZDMzYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2QzYzBkMzNhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDNjMGQzM2EnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QzYzBkMzNhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NjU1Zjk1MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxFeHBlbmRpdHVyZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDY1NWY5NTFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0NjU1Zjk1MScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ2NTVmOTUxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NjU1Zjk1MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ2NTVmOTUxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MDM4NWRhM1wiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjcwMzg1ZGEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzAzODVkYTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3MDM4NWRhMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzAzODVkYTNcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzAzODVkYTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzZiNzY0YmImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2Yjc2NGJiJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNmI3NjRiYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM2Yjc2NGJiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzZiNzY0YmInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzZiNzY0YmImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNmI3NjRiYicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDViNDJjYzcmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NWI0MmNjN1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1YjQyY2M3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDViNDJjYzcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1YjQyY2M3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDViNDJjYzcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQ4NjQ2NjcmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRkODY0NjY3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGQ4NjQ2NjcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZDg2NDY2NycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDg2NDY2NyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRkODY0NjY3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODFhN2ZkODYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjgxYTdmZDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnODFhN2ZkODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4MWE3ZmQ4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODFhN2ZkODYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjMwNzczMDUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYzMDc3MzA1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjMwNzczMDUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2MzA3NzMwNScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzA3NzMwNSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYzMDc3MzA1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NWI5OTA2MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc1Yjk5MDYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzViOTkwNjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NWI5OTA2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzViOTkwNjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3NWI5OTA2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2U0ZjUxMjEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzZTRmNTEyMVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNlNGY1MTIxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2U0ZjUxMjEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignM2U0ZjUxMjEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTk0YWNkNSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDU5NGFjZDVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0NTk0YWNkNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ1OTRhY2Q1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5NGFjZDUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NTk0YWNkNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWIyNjM0YiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDViMjYzNGImbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA1YjI2MzRiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDViMjYzNGInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNWIyNjM0YicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWIyNjM0YiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA1YjI2MzRiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wNjExZDlmMFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA2MTFkOWYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDYxMWQ5ZjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNjExZDlmMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDYxMWQ5ZjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzkyNzBhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM3OTI3MGE2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzc5MjcwYTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczNzkyNzBhNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3OTI3MGE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzc5MjcwYTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q5ZmE5MDRcIlxuY29uc3Qgc2NyaXB0ID0ge31cblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDlmYTkwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkOWZhOTA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q5ZmE5MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q5ZmE5MDRcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q5ZmE5MDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3Y2RhNWMxOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdjZGE1YzE5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2NkYTVjMTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdjZGE1YzE5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCJAdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiXG5pbXBvcnQgXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTdlNjMyYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxN2U2MzJhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE3ZTYzMmE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE3ZTYzMmE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU2ODQ5NGQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlNjg0OTRkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2U2ODQ5NGQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZTY4NDk0ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTY4NDk0ZDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNjg0OTRkMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRjYTY5Mzk2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGNhNjkzOTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkY2E2OTM5NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkY2E2OTM5NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjI2NjIwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyMjY2MjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTIyNjYyMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTIyNjYyMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1MjI2NjIwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2ZmZmOTgwXCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NmZmZjk4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU2ZmZmOTgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTZmZmY5ODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MFwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NmZmZjk4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhZTQ0ODVhXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYWU0NDg1YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VhZTQ0ODVhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWFlNDQ4NWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYWU0NDg1YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NWY5YjRiYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU1ZjliNGJiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTVmOWI0YmInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NWY5YjRiYiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU1ZjliNGJiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjlmNTA4NlwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNjlmNTA4NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI2OWY1MDg2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjY5ZjUwODYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2XCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2OWY1MDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWExODYxZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1hMTg2MWYzZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYTE4NjFmM2VcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhMTg2MWYzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ExODYxZjNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYTE4NjFmM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTE4NjFmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhMTg2MWYzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMGQxMDY4MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjBkMTA2ODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyMGQxMDY4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzIwZDEwNjgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIwZDEwNjgwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjBkMTA2ODAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBjOWUwYjImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTBjOWUwYjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzEwYzllMGIyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwYzllMGIyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTBjOWUwYjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVZhbGlkYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZGVIZWxwVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0ZXBCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NoZWNraW5nQWN0aXZpdGllcy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DaGVja2luZ0FjdGl2aXRpZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVZhbGlkYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYkluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYkluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2l6YXJkSW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2l6YXJkSW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PdGhlcklkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvbGljeU1hcmtlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT25Cb2FyZGluZ0luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09uQm9hcmRpbmdJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVN0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWZhdWx0VmFsdWVzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWZhdWx0VmFsdWVzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjZhZDc2ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFlZDFiNWYmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM0YTdiYjkmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05ZmY1YThmOCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ3N2M2ZWMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlYmY0MWY5JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNzdiMTFkNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSGVscGVyVGV4dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDk3NDE5ZjImdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MzhkN2UyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZTM2ZjhlYyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGM3MDVmNDgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjYxOWE3ZWQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNTczOGU2MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZGVIZWxwVGV4dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjZmMTQxYmMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjFjZWE0MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDUyMDU5YSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMWQ4Y2QyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzYxNzcwMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2VhNGIwNmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAyYWMyYmY0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTNkODQ3YyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJmZTY1MTAyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWNjNTA4MjgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OWMzMTkzJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmJjZThjYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY2N2M3ZTcyJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zOTI1ZWY0OSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJmYjhmNDA2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzMyYmYwYyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUzOGQxMGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmYxN2VjNDUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRlNDAyYjA2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE1NzFmZDYmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdjYTI4Yjgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYjFlMWNjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDExODk3YSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtQdWJsaXNoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YzNiNDU2OCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NoZWNraW5nQWN0aXZpdGllcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGRhM2FkODQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3ZjE0ZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNWY0YmQ0NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYkluZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGQxMjkyMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dpemFyZEluZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NGExNjcxNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iYWZiMjViYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOWE3ZDMxMyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZGZiNzQ2OCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjYxYWZmZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiM2U0ODA0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNGRhYjc0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2YxOGJlMzAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWViZDY2MmRjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4YjBhZTYmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDExOTY2ODImdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDc0YTcxM2QmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNzhjZjdmJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRkNzYzZTRjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYTZkMDYyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3NWI2MWUyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zY2IyNjAzZiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlZDZhZGEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03YTY0ZDk0NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgxNjg0NmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NWE0ZDllJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThmNmZmNjg0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT25Cb2FyZGluZ0luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZGZmODQ2MCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVlZmI2MGEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWZhdWx0VmFsdWVzU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjFhNDUxYTAmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmQwNTQyYzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzNiMjYxZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmNWQ2MGE2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViYzA0MWY5JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWFlZjk2ODgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1ODllODZlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWE4OGZjNSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTU3MWIyMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGZlNDIxOSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFhMDZhODVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGMyZTY4MmQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMTJmZWQ1NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wN2MwNmMxMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDU2YzExZWEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWlkVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGY5NmM5NmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJhOGE3MzEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNzg1MzA1MiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNWM3YzUyZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWVmNjg1ZiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YTA4ZGY0NiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTMwYmFhMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGVlYmFhNDEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjEyZmNjNjEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2OTcyODM0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mYjYxOWYyMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjI1N2Y3MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjIyNWQzZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWUxMTljM2Y2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZWQ1ZmRkMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwZDc4NzBhJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTRlYTgwMyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWY2ZDMxMmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYmU4NzZkMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NWM5ZGMzZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ2NTVmOTUxJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNmI3NjRiYiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1YjQyY2M3JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDg2NDY2NyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWE3ZmQ4NiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjMwNzczMDUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NWI5OTA2MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OTRhY2Q1JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNWIyNjM0YiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzkyNzBhNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZTYzMmE2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNjg0OTRkMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjYTY5Mzk2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NWY5YjRiYiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZ25Jbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTE4NjFmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIwZDEwNjgwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZ0cz10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPWpzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz1qc1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGluZXNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA5YWUxYThiJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0MzU2MTcyJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vc3Bpbm5lckxvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDA4OTJkZjZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYjNiZmI0NiZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwMzg1ZGEzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDlmYTkwNFwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MFwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2XCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGluZXNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDlhZTFhOGImc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZGM3MDVmNDgmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAwODkyZGY2Jmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT25Cb2FyZGluZ0luZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBkZmY4NDYwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjFhNDUxYTAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mZDA1NDJjMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDczYjI2MWUmc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD02ZmU1OTA1NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xYzRhN2JiOSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1iNzdiMTFkNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDk3NDE5ZjImbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OGUzNmY4ZWMmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhMmJkYTU4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWY2N2M3ZTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWMzMmJmMGMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02ZjE3ZWM0NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGE1NzFmZDYmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGIzYmZiNDYmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzdmMTRmM2Umc2NvcGVkPXRydWUmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGYyMjVkM2UmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00YWRhNWYzNiZsYW5nPXNjc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJ2YXIgbWFwID0ge1xuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfZGF0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc3RhdHVzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1ZGdldC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY2FwaXRhbF9zcGVuZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbGxhYm9yYXRpb25fdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbmRpdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb250YWN0X2luZm8uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Nycy1hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfYWlkX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9odW1hbml0YXJpYW5fc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaWF0aV9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2luZGljYXRvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9vdGhlcl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wZXJpb2Quc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BvbGljeV9tYXJrZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVsYXRlZF9hY3Rpdml0eS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdHMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9zZWN0b3Iuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGFnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdHJhbnNhY3Rpb25zLnN2Z1wiLFxuXHRcIi4vYWRkLW1vcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLW1vcmUuc3ZnXCIsXG5cdFwiLi9hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLnN2Z1wiLFxuXHRcIi4vYWxlcnQtb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vYWxlcnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQuc3ZnXCIsXG5cdFwiLi9hbGlnbi1jZW50ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tY2VudGVyLnN2Z1wiLFxuXHRcIi4vYWxpZ24tcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcHByb3ZlZC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcHByb3ZlZC1jbG91ZC5zdmdcIixcblx0XCIuL2Fycm93LWRvd24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctZG93bi5zdmdcIixcblx0XCIuL2Fycm93LWxlZnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctbGVmdC5zdmdcIixcblx0XCIuL2Fycm93LXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXJpZ2h0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctc2hvcnQtbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FzY2VuZGluZy1hcnJvdy5zdmdcIixcblx0XCIuL2JpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYmlsbC5zdmdcIixcblx0XCIuL2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ib3guc3ZnXCIsXG5cdFwiLi9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY2xvdWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNsb3VkLnN2Z1wiLFxuXHRcIi4vY2FuY2VsLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jcm9zcy5zdmdcIixcblx0XCIuL2NoZWNrLWNpcmNsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVjay1jaXJjbGUuc3ZnXCIsXG5cdFwiLi9jaGVja2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2JveC5zdmdcIixcblx0XCIuL2NoZWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tlZC5zdmdcIixcblx0XCIuL2NoZXZyb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hldnJvbi5zdmdcIixcblx0XCIuL2NpcmNsZS1yZWQtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2lyY2xlLXJlZC1jcm9zcy5zdmdcIixcblx0XCIuL2Nsb3NlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nsb3NlLnN2Z1wiLFxuXHRcIi4vY29weXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcHlyaWdodC5zdmdcIixcblx0XCIuL2NvcmUtc3F1YXJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcmUtc3F1YXJlLnN2Z1wiLFxuXHRcIi4vY29yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3JlLnN2Z1wiLFxuXHRcIi4vY3Jvc3MtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy1pY29uLnN2Z1wiLFxuXHRcIi4vY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3Muc3ZnXCIsXG5cdFwiLi9kZWZhdWx0LTEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0xLnN2Z1wiLFxuXHRcIi4vZGVmYXVsdC0yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmdcIixcblx0XCIuL2RlbGV0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWxldGUuc3ZnXCIsXG5cdFwiLi9kZXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnXCIsXG5cdFwiLi9kb2N1bWVudC13cml0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmdcIixcblx0XCIuL2RvdWJsZS10aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtY29kZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1jb2RlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQuc3ZnXCIsXG5cdFwiLi9kcm9wZG93bi1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kcm9wZG93bi1hcnJvdy5zdmdcIixcblx0XCIuL2VkaXQtYWN0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQtYWN0aW9uLnN2Z1wiLFxuXHRcIi4vZWRpdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2Z1wiLFxuXHRcIi4vZXhjbGFtYXRpb24td2FybmluZy1maWxsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4Y2xhbWF0aW9uLXdhcm5pbmctZmlsbC5zdmdcIixcblx0XCIuL2V4Y2xhbWF0aW9uLXdhcm5pbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmdcIixcblx0XCIuL2V4cG9ydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHBvcnQuc3ZnXCIsXG5cdFwiLi9leHRlcm5hbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHRlcm5hbC5zdmdcIixcblx0XCIuL2V5ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leWUuc3ZnXCIsXG5cdFwiLi9mb2xkZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2Z1wiLFxuXHRcIi4vZm9vdGVyLWxvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnXCIsXG5cdFwiLi9mdW5uZWwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZnVubmVsLnN2Z1wiLFxuXHRcIi4vZ3JlZW4tY2lyY2xlLXRpY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZ3JlZW4tY2lyY2xlLXRpY2suc3ZnXCIsXG5cdFwiLi9ncm91cC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmdcIixcblx0XCIuL2hhbmQtd2F2ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oYW5kLXdhdmUuc3ZnXCIsXG5cdFwiLi9oZWFkZXItbG9nby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWFkZXItbG9nby5zdmdcIixcblx0XCIuL2hlYWRwaG9uZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWFkcGhvbmUuc3ZnXCIsXG5cdFwiLi9oZWxwLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlbHAuc3ZnXCIsXG5cdFwiLi9oaWRlLXBhc3N3b3JkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpZGUtcGFzc3dvcmQuc3ZnXCIsXG5cdFwiLi9oaXN0b3J5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpc3Rvcnkuc3ZnXCIsXG5cdFwiLi9pYy12ZXJpZmljYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaWMtdmVyaWZpY2F0aW9uLnN2Z1wiLFxuXHRcIi4vaW5kaWNhdG9yLWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaW5kaWNhdG9yLWljb24uc3ZnXCIsXG5cdFwiLi9rZXkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcva2V5LnN2Z1wiLFxuXHRcIi4vbGVmdC1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sZWZ0LWFycm93LnN2Z1wiLFxuXHRcIi4vbG9nby13aGl0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvLXdoaXRlLnN2Z1wiLFxuXHRcIi4vbG9nby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvLnN2Z1wiLFxuXHRcIi4vbG9nb3V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ291dC5zdmdcIixcblx0XCIuL21hZ25pZnlpbmctZ2xhc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFnbmlmeWluZy1nbGFzcy5zdmdcIixcblx0XCIuL21haWwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFpbC5zdmdcIixcblx0XCIuL21lc3NhZ2UtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tZXNzYWdlLWljb24uc3ZnXCIsXG5cdFwiLi9taW5pbWl6ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9taW5pbWl6ZS5zdmdcIixcblx0XCIuL21vb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmdcIixcblx0XCIuL25vdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbm90ZS5zdmdcIixcblx0XCIuL29wZW4tbGluay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcGVuLWxpbmsuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbmlzYXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pemF0aW9uX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnlfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9vcmdfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RpdGxlLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9leHBlbmRpdHVyZS5zdmdcIixcblx0XCIuL3BhbmVsLXNlYXJjaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wYW5lbC1zZWFyY2guc3ZnXCIsXG5cdFwiLi9wZXJpb2QtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wZXJpb2QtaWNvbi5zdmdcIixcblx0XCIuL3BsdXMtb3V0bGluZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy1vdXRsaW5lZC5zdmdcIixcblx0XCIuL3BsdXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmdcIixcblx0XCIuL3Byb2dyZXNzLWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHJvZ3Jlc3MtaWNvbi5zdmdcIixcblx0XCIuL3B1Ymxpc2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHVibGlzaC5zdmdcIixcblx0XCIuL3B3LWxvY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHctbG9jay5zdmdcIixcblx0XCIuL3F1ZXN0aW9uLW1hcmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmdcIixcblx0XCIuL3JlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtY3Jvc3Muc3ZnXCIsXG5cdFwiLi9yZWQtZG90LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnXCIsXG5cdFwiLi9yZWRvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZG8uc3ZnXCIsXG5cdFwiLi9yZXN1bHQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZXN1bHQtaWNvbi5zdmdcIixcblx0XCIuL3JpZ2h0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JpZ2h0LWFycm93LnN2Z1wiLFxuXHRcIi4vcm9ja2V0LWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcm9ja2V0LWljb24uc3ZnXCIsXG5cdFwiLi9zZWFyY2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2VhcmNoLnN2Z1wiLFxuXHRcIi4vc2V0dGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZXR0aW5nLnN2Z1wiLFxuXHRcIi4vc2hpZWxkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NoaWVsZC5zdmdcIixcblx0XCIuL3NpbmdsZS1kb3Quc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2luZ2xlLWRvdC5zdmdcIixcblx0XCIuL3NtaWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NtaWxlLnN2Z1wiLFxuXHRcIi4vc29ydC1hc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1hc2NlbmRpbmcuc3ZnXCIsXG5cdFwiLi9zb3J0LWRlc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2Z1wiLFxuXHRcIi4vc29ydC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtaWNvbi5zdmdcIixcblx0XCIuL3N0YXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmdcIixcblx0XCIuL3N0ZXAtdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zdGVwLXRpY2suc3ZnXCIsXG5cdFwiLi90aWNrLWNsb3VkLXNxdWFyZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLWNsb3VkLXNxdWFyZS5zdmdcIixcblx0XCIuL3RpY2stb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLW91dGxpbmUuc3ZnXCIsXG5cdFwiLi90aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnXCIsXG5cdFwiLi90aWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGlja2VkLnN2Z1wiLFxuXHRcIi4vdGltZXMtY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpbWVzLWNpcmNsZS5zdmdcIixcblx0XCIuL3R3aXR0ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdHdpdHRlci5zdmdcIixcblx0XCIuL3VwLWFycm93LW91dGxpbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmdcIixcblx0XCIuL3VwbG9hZC1maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vdXNlci1wcm9maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXItcHJvZmlsZS5zdmdcIixcblx0XCIuL3VzZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmdcIixcblx0XCIuL3dhcm5pbmctYWN0aXZpdHkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1hY3Rpdml0eS5zdmdcIixcblx0XCIuL3dhcm5pbmctZmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmcuc3ZnXCIsXG5cdFwiLi93YXJuaW5pZy1hY3Rpdml0eS1yZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluaWctYWN0aXZpdHktcmVkLnN2Z1wiLFxuXHRcIi4veW91dHViZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy95b3V0dWJlLnN2Z1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2ZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsIi8qIChpZ25vcmVkKSAqLyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJ2dWVfMSIsInJlcXVpcmUiLCJ2dWVfMiIsInNwaW5uZXJMb2FkZXJfdnVlXzEiLCJQb3B1cE1vZGFsX3Z1ZV8xIiwiYXhpb3NfMSIsImluZGV4XzEiLCJkZWZpbmVDb21wb25lbnQiLCJfX25hbWUiLCJzZXR1cCIsIl9fcHJvcHMiLCJfYSIsImV4cG9zZSIsInN0b3JlIiwidXNlU3RvcmUiLCJzaG93UmV0cnlEb3dubG9hZE1vZGVsIiwicmVmIiwiaXNMb2FkaW5nIiwiZG93bmxvYWRGaWxlIiwiZGlzcGF0Y2giLCJhcGlVcmwiLCJjb25jYXQiLCJkb3dubG9hZEFwaVVybCIsInNwbGl0IiwibWV0aG9kIiwidXJsIiwicmVzcG9uc2VUeXBlIiwidGhlbiIsInJlcyIsImZpbGVOYW1lIiwiaGVhZGVycyIsImJsb2IiLCJCbG9iIiwiZGF0YSIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZXRyeURvd25sb2FkIiwieGxzRG93bmxvYWRTdGF0dXMiLCJnZXQiLCJjYW5jZWxEb3dubG9hZCIsInN1Y2Nlc3MiLCJwZXJjZW50YWdlV2lkdGgiLCJjb21wdXRlZCIsImZpbGVDb3VudCIsImluamVjdCIsIl9fcmV0dXJuZWRfXyIsInNwaW5uZXJMb2FkZXIiLCJNb2RhbCIsImVudW1lcmFibGUiLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwiaSIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwiX19nZW5lcmF0b3IiLCJfIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsImYiLCJ5IiwiZyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsInYiLCJvcCIsIlR5cGVFcnJvciIsInBvcCIsInB1c2giLCJ1dGlsc18xIiwicHJvcHMiLCJ2YWxpZGF0aW9uU3RhdHMiLCJ0eXBlIiwicmVxdWlyZWQiLCJ2YWxpZGF0aW9uTmFtZXMiLCJBcnJheSIsImVycm9yVGFiIiwiQm9vbGVhbiIsImVtaXRzIiwiX3RoaXMiLCJlbWl0IiwiaGFzRXJyb3IiLCJvbk1vdW50ZWQiLCJzaG93UG9wdXAiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiYWN0aXZpdGllc0lkcyIsIndhdGNoIiwidmFsaWRhdGlvbkNhbmNlbEhhbmRsZXIiLCJyZW1vdmVJdGVtIiwic3RhdGUiLCJwdWJsaXNoQWxlcnRWYWx1ZSIsInNldFRpbWVvdXQiLCJidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzIiwiaWF0aVZhbGlkYXRvckxvYWRlciIsImNvbXBsZXRlIiwidG90YWwiLCJmYWlsZWQiLCJjb21wbGV0ZWRTdGVwcyIsInN0YXJ0QnVsa1B1Ymxpc2giLCJoYW5kbGVNaW5pbWl6ZSIsImlzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQiLCJzZXRJdGVtIiwidG90YWxWYWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcyIsInZhbHVlcyIsImltcG9ydGVkQWN0aXZpdGllc0xpc3QiLCJmaWx0ZXIiLCJpdGVtIiwiaXNfdmFsaWQiLCJwdWJsaXNoaW5nQWN0aXZpdHlDb3VudCIsIl9iIiwiX2MiLCJfZCIsInB1Ymxpc2hpbmdBY3Rpdml0aWVzIiwicHVibGlzaGluZyIsImFjdGl2aXRpZXMiLCJwdWJsaXNoaW5nU3RhdHVzIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWxpZGF0aW9uU3RhdHNUb3RhbCIsImtleXMiLCJjbiIsIl90eXBlb2YiLCJvYmoiLCJjb25zdHJ1Y3RvciIsInNob3dfMSIsImNvcmVfMSIsIkNyZWF0ZU1vZGFsX3Z1ZV8xIiwiVG9hc3RNZXNzYWdlX3Z1ZV8xIiwidXNlciIsIm9uYm9hcmRpbmciLCJvcmdhbml6YXRpb24iLCJ2YWxpZGF0b3IiLCJfZGVmYXVsdCIsInN1cGVyQWRtaW4iLCJoYXNBZG1pbkJhciIsIk51bWJlciIsImRlZmF1bHRMYW5ndWFnZSIsIlN0cmluZyIsImRldGFpbFN0b3JlIiwic2hvd1VzZXJEcm9wZG93biIsInRvYXN0VmlzaWJpbGl0eSIsInNob3dTaWRlYmFyIiwidG9hc3RNZXNzYWdlIiwidG9hc3RUeXBlIiwiZXJyb3JUb2FzdFZpc2liaWxpdHkiLCJlcnJvclRvYXN0TWVzc2FnZSIsImVycm9yVG9hc3RUeXBlIiwicmVhY3RpdmUiLCJsYW5ndWFnZU5hdkxpQ2xhc3NlcyIsImxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlcyIsIm1lbnVOYXZMaUNsYXNzZXMiLCJtZW51TmF2QW5jaG9yQ2xhc3NlcyIsImxhbmd1YWdlcyIsImxhbmd1YWdlIiwicGVybWFsaW5rIiwiYWN0aXZlIiwib3JnX21lbnVzIiwibmFtZSIsInN1cGVyYWRtaW5fbWVudXMiLCJsaUNsYXNzIiwidXNlVG9nZ2xlIiwibW9kYWxWYWx1ZSIsIm1vZGFsVG9nZ2xlIiwidG9hc3QiLCJtZXNzYWdlIiwiaXNUb3VjaERldmljZSIsIm5hdmlnYXRvciIsIm1heFRvdWNoUG9pbnRzIiwiVG9nZ2xlTW9kZWwiLCJzaWRlYmFyIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJvdmVyZmxvdyIsImNoYW5nZUFjdGl2ZU1lbnUiLCJwYXRoIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImZvckVhY2giLCJtZW51Iiwia2V5IiwiaW5jbHVkZXMiLCJwYSIsInVzZVN0b3JhZ2UiLCJsb2dvdXQiLCJwb3N0Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZWFyY2hWYWx1ZSIsImN1cnJlbnRVUkwiLCJxdWVyeVN0cmluZyIsInNlYXJjaCIsInVybFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNwaW5uZXIiLCJzZWFyY2hGdW5jdGlvbiIsInBhcmFtIiwicmVwbGFjZSIsInNvcnRpbmdQYXJhbSIsInF1ZXJ5U3RyaW5nQXJyIiwic2xpY2UiLCJqb2luIiwiZ2V0U3RhcnRlZCIsImlzTW9kZWxDbG9zZUNsaWNrZWQiLCJyZWRpcmVjdFByb2ZpbGUiLCJvblVubW91bnRlZCIsInByb3ZpZGUiLCJDcmVhdGVNb2RhbCIsIlRvYXN0IiwidGl0bGVfMSIsImNvbXBvbmVudHMiLCJ0b1JlZnMiLCJicmVhZGNydW1iRGF0YSIsImdldEFjdGl2aXR5VGl0bGUiLCJTaGltbWVyTG9hZGluZ192dWVfMSIsImJ1bGtQdWJsaXNoTGVuZ3RoIiwib3Blbk1vZGVsIiwicGFTdG9yYWdlIiwiY29tcGxldGVkIiwicmVmcmVzaFRvYXN0TXNnIiwiaGFzRmFpbGVkQWN0aXZpdGllcyIsImlkcyIsImJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsImJ1bGtQdWJsaXNoU3RhdHVzIiwicG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSIsImludGVydmFsSUQiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJmYWlsZWRBY3Rpdml0aWVzIiwidmlzaWJpbGl0eSIsInJlZnJlc2hNZXNzYWdlVHlwZSIsInJlZnJlc2hNZXNzYWdlIiwiY291bnQiLCJjaGVja1N0YXR1cyIsIm5lc3RlZE9iamVjdCIsImZhaWxlZEFjdGl2aXRpZXNJRCIsImFzQXJyYXlEYXRhIiwiZW50cmllcyIsImZpbHRlcmVkIiwiaW5kZXhPZiIsImFjdGl2aXR5X2lkIiwiZmFpbGVkQWN0aXZpdGllc0RhdGEiLCJmcm9tRW50cmllcyIsInNldERhdGFUb0xvY2Fsc3RvcmFnZSIsImdldERhdGFGcm9tTG9jYWxzdG9yYWdlIiwiaXNKc29uIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZW1wdHlidWxrUHVibGlzaFN0YXR1cyIsInN0YXR1c18xIiwiZGVlcCIsIlNoaW1tZXJMb2FkaW5nIiwicmV0cnlQdWJsaXNoaW5nIiwiZW5kcG9pbnQiLCJjb21wbGV0ZWRBY3Rpdml0aWVzIiwiX2UiLCJfZiIsInN0YXJ0UHVibGlzaGluZ1JldHJ5IiwiU3Bpbm5lckxvYWRlciIsInRleHQiLCJpY29uIiwiYWN0aXZpdHlMZW5ndGgiLCJkaXNhYmxlZCIsImJ0blR5cGUiLCJkYXRlX2Zuc18xIiwidnVlX2RhdGVwaWNrZXJfMSIsIm1vbWVudF8xIiwiZHJvcGRvd25SYW5nZSIsImZpcnN0RGF0ZSIsImRhdGVMYWJlbCIsImN1cnJlbnRWaWV3IiwiY2xlYXJEYXRlIiwic3RhcnRpbmdEYXRlIiwiZW5kaW5nRGF0ZSIsImRhdGVOYW1lIiwic2VsZWN0ZWRQcmVzZW50SW5kZXgiLCJkYXRlUmFuZ2VNYWluIiwiZGF0ZVR5cGUiLCJkYXRlRHJvcGRvd24iLCJkYXRlVHlwZU5hbWUiLCJkYXRlVHlwZUtleSIsInNob3dSYW5nZURyb3Bkb3duIiwiaW5pdGlhbERhdGUiLCJmaXhlZCIsInRvZGF5RGF0ZSIsIkRhdGUiLCJmb3JtYXQiLCJzZWxlY3RlZERhdGUiLCJzZXREYXRlIiwiZ2V0RGF0ZSIsImRhdGVwaWNrZXIiLCJ0cmlnZ2VyU2V0RGF0ZVJhbmdlIiwiaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrIiwiaW5kZXgiLCJwcmVzZW50UmFuZ2VJdGVtcyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJhZGQiLCJqIiwicmVtb3ZlIiwicmVzZXREYXRlIiwiaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2siLCJhZGRFdmVudHNGb3JDYWxlbmRhciIsIl9sb29wXzEiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FsZW5kYXJJdGVtcyIsInJlbW92ZUV2ZW50c09mQ2FsZW5kYXIiLCJfbG9vcF8yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZVNob3dSYW5nZURyb3Bkb3duIiwicHJlc2V0UmFuZ2VzIiwicmFuZ2UiLCJzdGFydE9mRGF5IiwiZW5kT2ZEYXkiLCJzdGFydE9mV2VlayIsInN1YkRheXMiLCJzdGFydE9mTW9udGgiLCJlbmRPZk1vbnRoIiwic3ViTW9udGhzIiwic3RhcnRPZlllYXIiLCJjb252ZXJ0RGF0ZSIsImRhdGUiLCJkYXRlT2JqIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJnZXRNb250aCIsInBhZFN0YXJ0IiwiZGF5Iiwib3BlbkNhbGVuZGFyIiwib3Blbk1lbnUiLCJjbG9zZUNhbGVuZGFyIiwiY2xvc2VNZW51Iiwic2VsZWN0RGF0ZSIsImRhdGVzIiwidGVtcEFycmF5IiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiY2xvc2VEYXRlRHJvcGRvd24iLCJrZWVwTW9kZWxPcGVuIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdGFydERhdGUiLCJlbmREYXRlIiwic2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCIsInRyaWdnZXJTZXREYXRlVHlwZSIsImZpbHRlcmVkRGF0ZVR5cGUiLCJldmVudFR5cGUiLCJjdXN0b21Qb3NpdGlvbiIsImxlZnRQb3NpdGlvbiIsImlubmVyV2lkdGgiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93biIsIlZ1ZURhdGVQaWNrZXIiLCJ2dWVfMyIsIkxvYWRlcl92dWVfMSIsImlzRW1wdHkiLCJzaG93IiwiaGFzRXJyb3JzIiwiZXJyb3JDb3VudCIsInRvYXN0RGF0YSIsImVycm9yRGF0YSIsImFjY291bnRfdmVyaWZpZWQiLCJwdWJsaXNoZXJfYWN0aXZlIiwiZGVmYXVsdF9zZXR0aW5nIiwicHVibGlzaGVyX3NldHRpbmciLCJ0b2tlbl9zdGF0dXMiLCJpc0xvYWRlclZpc2libGUiLCJyZXNlbmRWZXJpZmljYXRpb25FbWFpbCIsImVycm9yIiwiYWxsIiwic3ByZWFkIiwic2V0dGluZ19yZXMiLCJ1c2VyX3JlcyIsIm9yZ19yZXMiLCJ1c2VyX3Jlc3BvbnNlIiwib3JnX3Jlc3BvbnNlIiwiZGVmYXVsdF9zdGF0dXMiLCJwdWJsaXNoZXJfc3RhdHVzIiwiZ3JvdXBlZEVycm9yIiwiVHJhbnNpdGlvblJvb3QiLCJMb2FkZXIiLCJ0aXRsZSIsImNsb3NlIiwiX19zcHJlYWRBcnJheSIsInRvIiwiZnJvbSIsInBhY2siLCJsIiwiYXIiLCJoZWxwZXJUZXh0Iiwic2hvd0FjY29yZGlhbkl0ZW1zIiwiaGFzVHJ1ZVBhdGgiLCJwYXRoQXJyYXlzIiwiZmluZFRydWVQYXRocyIsInRvZ2dsZVNob3dBY2NvcmRpYW4iLCJwYXRocyIsInNuYWtlVG9LZWJhYiIsInN0ciIsImlzU25ha2VDYXNlIiwiZ2V0T3JkaW5hbCIsImlzQXJyYXkiLCJuZXdLZXkiLCJob3ZlclRleHQiLCJ3aWR0aCIsInBvc2l0aW9uIiwiaWNvblNpemUiLCJzaG93SWF0aVJlZmVyZW5jZSIsIkJ1dHRvbkNvbXBvbmVudF92dWVfMSIsImxpc3RJdGVtcyIsImhlYWRlciIsInRlbXBMaXN0SXRlbXMiLCJwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QiLCJzZWFyY2hJbnB1dCIsImNoZWNrZWRCb3hlcyIsImNoYW5nZVNlbGVjdGVkUHVibGlzaGVyIiwic2VsZWN0ZWRQdWJsaXNoZXJUeXBlIiwiZm9ybWF0UHVibGlzaGVyVHlwZSIsImtlZXBQdWJsaXNoZXJNb2RlbE9wZW4iLCJvbkJlZm9yZVVubW91bnQiLCJzaG93Tm9EYXRhQ29tcG9uZW50IiwibWFwIiwidXBkYXRlQXJyYXlCeVNlYXJjaCIsInNlYXJjaFN0cmluZyIsInRvTG93ZXJDYXNlIiwiYXBwbHlGaWx0ZXIiLCJCdG5Db21wb25lbnQiLCJidG5UZXh0IiwiYnRuTGluayIsIm1vZGFsQWN0aXZlIiwibm9QYWRkaW5nIiwiZGlzYWJsZUJvZHlPdmVyZmxvdyIsInN1cHBvcnRCdXR0b24iLCJxdWVyeVNlbGVjdG9yIiwiZGlzcGxheSIsImNoZWNrU3VwcG9ydEJ1dHRvbl8xIiwiY2hlY2tTdXBwb3J0QnV0dG9uXzIiLCJ2dWUzX3JhZGlhbF9wcm9ncmVzc18xIiwiUmFkaWFsUHJvZ3Jlc3NCYXIiLCJwZXJjZW50IiwiY29tcGxldGVkUGVyY2VudCIsInRvdGFsUGVyY2VudCIsImNvbnRlbnQiLCJ2aXNpYmxlIiwiY2xvc2VTaWRlYmFyIiwiY3VycmVudFN0ZXAiLCJzdGVwcyIsImNoZWNrTWFyayIsIm5ld1ZhbCIsImVycm9yXzEiLCJjb25zb2xlIiwicm93Q291bnQiLCJjb2xDb3VudCIsInJlc2V0IiwiYWN0aXZlX3BhZ2UiLCJsYXN0X3BhZ2VsaXN0IiwibWlkX3BhZ2VsaXN0IiwibGFzdHBhZ2VzIiwibWlkcGFnZXMiLCJ1cGRhdGVBY3RpdmVQYWdlIiwicGFnZSIsImNoYW5nZVBhZ2UiLCJwYWdlTnVtIiwibmV4dFBhZ2UiLCJsYXN0X3BhZ2UiLCJjdXJyZW50UGFnZSIsInByZXZpb3VzUGFnZSIsImNsYXNzTmFtZSIsImljb25OYW1lIiwiaWNvbkNsYXNzIiwidXBkYXRlVUkiLCJpbXBvcnREYXRhIiwiYWN0aXZpdHkiLCJzaG93RXJyb3JzIiwic2hvd0NyaXRpY2FsIiwiY3JpdGljYWxUb2dnbGUiLCJzaG93RXJyb3IiLCJlcnJvclRvZ2dsZSIsIndhcm5pbmdUb2dnbGUiLCJzaG93V2FybmluZyIsImVycm9yTGVuZ3RoIiwiY3VycmVudEVycm9yIiwiZXJyb3JzIiwibmFycmF0aXZlIiwicGVyaW9kX3N0YXJ0IiwicGVyaW9kX2VuZCIsImNvdW50RXJyb3JzIiwiYWN0aXZpdHlJbmRleCIsImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlIiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJlbEhlaWdodCIsImNsaWVudEhlaWdodCIsImNzc1RleHQiLCJ3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIiwiZXJyb3JBY2NvcmRpb25Ub2dnbGUiLCJhY3Rpdml0eU5hbWUiLCJ0b3RhbENvdW50IiwicHJvY2Vzc2VkQ291bnQiLCJ4bHNGYWlsZWQiLCJjdXJyZW50QWN0aXZpdHkiLCJtYXBBY3Rpdml0eU5hbWUiLCJyZXRyeSIsInhsc0ZhaWxlZE1lc3NhZ2UiLCJwcm9jZXNzaW5nIiwiQWN0aXZpdHlEb3dubG9hZF92dWVfMSIsIlhsc0xvYWRlcl92dWVfMSIsIkJ1bGtwdWJsaXNoV2l0aFhsc192dWVfMSIsIkFjdGl2aXR5VmFsaWRhdGlvbl92dWVfMSIsIkJ1bGtwdWJsaXNoTG9hZGVyQ2FyZF92dWVfMSIsInhsc0RhdGEiLCJzaG93WGxzU3RhdHVzIiwiZG93bmxvYWRDb21wbGV0ZWQiLCJzaG93QnVsa3B1Ymxpc2hMb2FkZXIiLCJwYXJlbnRFbGVtZW50UmVmIiwiaGVpZ2h0IiwidXNlRWxlbWVudFNpemUiLCJtaW5pbWl6ZSIsImFjdGl2aXR5UHVibGlzaGVkRGF0YSIsImRvd25sb2FkU3RhdHVzIiwiaXNCbGlua2luZyIsImNoZWNrU3VwcG9ydEJ1dHRvbiIsInZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMiLCJzaG93VmFsaWRhdGlvblBvcHVwIiwidHJhbnNmb3JtIiwiY2hlY2tWYWxpZGF0aW9uIiwicHJvY2VlZFZhbGlkYXRpb24iLCJjYW5jZWxWYWxpZGF0aW9uUG9sbGluZyIsImFjdGl2aXRpZXNfMSIsImFjdGl2aXR5SWQiLCJ2YWxpZGF0aW9uUnVubmluZyIsImNoZWNrVmFsaWRhdGlvblN0YXR1cyIsInNob3dCdWxrcHVibGlzaCIsInBvbGwiLCJ2YWxpZGF0aW5nQWN0aXZpdGllcyIsImNvbXBsZXRlX2NvdW50IiwiZmFpbGVkX2NvdW50IiwidmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXMiLCJzaG93VmFsaWRhdGlvbkVycm9yIiwic3RhcnRWYWxpZGF0aW9uIiwidG9TdHJpbmciLCJjbG9zZUJ1bGtwdWJsaXNoIiwiY2xvc2VYbHMiLCJjb21wbGV0ZVhsc0Rvd25sb2FkIiwiZG93bmxvYWRpbmciLCJwcm9jZXNzaW5nQWN0aXZpdHlDb3VudCIsImNvbXBsZXRlQWN0aXZpdHlDb3VudCIsImhpZGVCdWxrcHVibGlzaExvYWRlciIsImhhbmRsZUFjdGl2aXR5UHVibGlzaGVkRGF0YSIsInNvbWUiLCJoYW5kbGVCYWNrZ3JvdW5kUHJvY2Vzc1RvZ2dsZXIiLCJ3YXRjaEVmZmVjdCIsImJsaW5rQmFja2dyb3VuZCIsIkFjdGl2aXR5RG93bmxvYWQiLCJYbHNMb2FkZXIiLCJCdWxrcHVibGlzaFdpdGhYbHMiLCJBY3Rpdml0eVZhbGlkYXRpb24iLCJCdWxrcHVibGlzaExvYWRlckNhcmQiLCJQcm9ncmVzc0xvYWRlcl92dWVfMSIsImRlbGV0ZVZhbHVlIiwiZGVsZXRlVG9nZ2xlIiwibG9hZGVyIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVFbmRQb2ludCIsInNlbGVjdGVkQWN0aXZpdGllcyIsInJlbG9hZCIsImRlc2lnbiIsInN0eWxlVHlwZSIsImNsYXNzZXMiLCJsaW5rZWRUb0lhdGkiLCJjb3JlQ29tcGxldGVkIiwicHVibGlzaCIsImRlcHJlY2F0aW9uU3RhdHVzTWFwIiwic2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsIiwib25VcGRhdGVkIiwicHVibGlzaFZhbHVlIiwicHVibGlzaFN0ZXAiLCJ2YWxpZGF0aW9uU3RvcmUiLCJpZCIsInB1Ymxpc2hUb2dnbGUiLCJjb3JlRWxlbWVudFN0YXR1cyIsImhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlIiwiY2hlY2tJZkhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlIiwicmVjdXJzaXZlQ2hlY2siLCJfaSIsIml0ZW1fMSIsImVsZW1lbnQiLCJsb2FkZXJUZXh0IiwicmVzZXRQdWJsaXNoU3RlcCIsInB1Ymxpc2hTdGF0ZUNoYW5nZSIsInB1Ymxpc2hTdGF0ZSIsImRlc2NyaXB0aW9uIiwiYWxlcnRTdGF0ZSIsImVyciIsImNyaXRpY2FsTnVtYmVyIiwiZXJyb3JOdW1iZXIiLCJ3YXJuaW5nTnVtYmVyIiwic3RvcEJ1bGtwdWJsaXNoIiwiY2hlY2tQdWJsaXNoIiwidmFsaWRhdG9yU3VjY2VzcyIsInZhbGlkYXRpb25SZXNwb25zZSIsInB1Ymxpc2hSZXNwb25zZSIsInJlc2V0U3RhdHVzIiwiaW5fcHJvZ3Jlc3MiLCJwdWJsaXNoU3RhdHVzIiwibGlua2VkX3RvX2lhdGkiLCJzdGFydE5ld1B1Ymxpc2hpbmciLCJ1bnB1Ymxpc2hWYWx1ZSIsInVucHVibGlzaFRvZ2dsZSIsInVuUHVibGlzaEZ1bmN0aW9uIiwiaXRlbUlkIiwiaXRlbVR5cGUiLCJlcnJvclR5cGUiLCJiZ0NvbG9yIiwiaWNvbkNvbG9yIiwidG9nZ2xlIiwiYWNjb3JkaW9uVG9nZ2xlIiwidXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsIkxpbmtfdnVlXzEiLCJCdG4iLCJtYW5kYXRvcnlFbGVtZW50U3RhdHVzIiwicHVibGlzaEZ1bmN0aW9uIiwiaXNfcHVibGlzaGVkIiwiQnJlYWRDcnVtYl92dWVfMSIsIkJyZWFkY3J1bWIiLCJiYWNrTGluayIsImNoYW5nZVRleHQiLCJFcnJvckxpc3RzX3Z1ZV8xIiwiVXBsb2FkZWRFcnJvcnNfdnVlXzEiLCJlcnJvclZhbHVlIiwiaW1wb3J0RXJyb3JzIiwiaXNzdWVUeXBlIiwiaW1wb3J0RXJyb3JUeXBlcyIsInRlbXBEYXRhIiwiY3JpdGljYWwiLCJ3YXJuaW5ncyIsInVwZGF0ZVRlbXBNZXNzYWdlIiwiZXJyb3JEYXRhUHJvcHMiLCJlcnJvckRhdGFQcm9wc18xIiwic2V2ZXJpdHkiLCJpbXBvcnRFcnJvcmxlbmd0aCIsImRlbGV0ZUVycm9ycyIsIkVycm9yTGlzdHMiLCJVcGxvYWRlZEVycm9ycyIsImNvbG9yIiwibXVsdGlzZWxlY3RfMSIsImN1cnJlbmNpZXMiLCJidWRnZXROb3RQcm92aWRlZCIsImh1bWFuaXRhcmlhbiIsImRlZmF1bHRWYWx1ZXMiLCJidWRnZXRfbm90X3Byb3ZpZGVkIiwiZGVmYXVsdF9jdXJyZW5jeSIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJoaWVyYXJjaHkiLCJkZWZhdWx0RXJyb3JzIiwiZXJyb3JSZXNldCIsImRlZmF1bHREYXRhIiwibG9hZGVyVmlzaWJpbGl0eSIsInN1Ym1pdEZvcm0iLCJwdXQiLCJNdWx0aXNlbGVjdCIsImNvcmVfMiIsIkluZGV4XzEiLCJIb3ZlclRleHRfdnVlXzEiLCJSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMSIsIlB1Ymxpc2hCdXR0b25fdnVlXzEiLCJVblB1Ymxpc2hCdXR0b25fdnVlXzEiLCJEZWxldGVCdXR0b25fdnVlXzEiLCJTdGlja3lFcnJvcnNfdnVlXzEiLCJFcnJvclBvcFVwX3Z1ZV8xIiwiWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xIiwiUmVmcmVzaFRvYXN0X3Z1ZV8xIiwiUHVibGlzaFNlbGVjdGVkX3Z1ZV8xIiwiQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xIiwiQWN0aXZpdHlFbGVtZW50X3Z1ZV8xIiwiUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSIsIkhvdmVyVGV4dCIsIlByb2dyZXNzQmFyIiwiRWxlbWVudHMiLCJBY3Rpdml0eUVsZW1lbnQiLCJSZXN1bHQiLCJQdWJsaXNoIiwiRXJyb3JzIiwiVW5QdWJsaXNoIiwiRGVsZXRlQnV0dG9uIiwiUHJldmlvdXNseVB1Ymxpc2hlZCIsIkVycm9yUG9wVXAiLCJYbHNVcGxvYWRJbmRpY2F0b3IiLCJSZWZyZXNoVG9hc3RNZXNzYWdlIiwiUHVibGlzaFNlbGVjdGVkIiwiZWxlbWVudHMiLCJncm91cHMiLCJwcm9ncmVzcyIsInR5cGVzIiwicmVzdWx0cyIsInRyYW5zYWN0aW9ucyIsImlhdGlWYWxpZGF0b3JSZXNwb25zZSIsImltcG9ydEFjdGl2aXR5RXJyb3IiLCJyZW1vdmVkIiwiaW5kZXhTdG9yZSIsInBvc2l0aW9uWSIsInNjcmVlbldpZHRoIiwiZG93bmxvYWRWYWx1ZSIsImRvd25sb2FkVG9nZ2xlIiwidG9nZ2xlU2lkZWJhciIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFkiLCJpc3RvcFZpc2libGUiLCJjYWxjV2lkdGgiLCJvbmxvYWQiLCJjbGVhciIsImlnbm9yZVRvYXN0VXBkYXRlIiwiZ3JvdXBlZERhdGEiLCJhY3Rpdml0eVByb3BzIiwiZWxlbWVudFByb3BzIiwic3RhdHVzUHJvcHMiLCJ0cmFuc2FjdGlvblByb3BzIiwiZmxhZyIsImsiLCJwYWdlVGl0bGUiLCJkZWZhdWx0X2ZpZWxkX3ZhbHVlcyIsImZvcm1hdFRpdGxlIiwiaWdub3JlVXBkYXRlcyIsIndhdGNoSWdub3JhYmxlIiwidW5kZWZpbmVkIiwiZmx1c2giLCJoYXNfZXZlcl9iZWVuX3B1Ymxpc2hlZCIsInZhbGlkYXRpb25SZXN1bHQiLCJtZXRob2RzIiwib25seURlcHJlY2F0ZWRTdGF0dXNNYXAiLCJPbkJvYXJkaW5nSW5kZXhfdnVlXzEiLCJFbXB0eUFjdGl2aXR5X3Z1ZV8xIiwiVGFibGVMYXlvdXRfdnVlXzEiLCJUYWJsZVBhZ2luYXRpb25fdnVlXzEiLCJQYWdlVGl0bGVfdnVlXzEiLCJFcnJvck1lc3NhZ2VfdnVlXzEiLCJhY3Rpdml0eVN0b3JlIiwiRW1wdHlBY3Rpdml0eSIsIlBhZ2VUaXRsZSIsIlBhZ2luYXRpb24iLCJUYWJsZUxheW91dCIsIkVycm9yTWVzc2FnZSIsIk9uQm9hcmRpbmdJbmRleCIsImRlZmF1bHRGbG93VHlwZSIsImRlZmF1bHRGaW5hbmNlVHlwZSIsImRlZmF1bHRBaWRUeXBlIiwiZGVmYXVsdFRpZWRTdGF0dXMiLCJvcmdhbml6YXRpb25PbmJvYXJkaW5nIiwib3JnYW5pemF0aW9uVHlwZSIsImlzRmlyc3RUaW1lIiwiY2xvc2VNb2RlbCIsInVwbG9hZENvbXBsZXRlIiwiaW1wb3J0Q29tcGxldGVkIiwidGFibGVMb2FkZXIiLCJjdXJyZW50RmlsdGVyQnkiLCJzaG93RW1wdHlUZW1wbGF0ZSIsInZhbGlkRmlsdGVyQnkiLCJhbGxQdWJsaXNoU3RhdHVzQ291bnRNYXAiLCJwdWJsaXNoZWQiLCJyZWFkeV9mb3JfcmVwdWJsaXNoaW5nIiwiZHJhZnQiLCJmZXRjaEFjdGl2aXRpZXNDb3VudEJ5UHVibGlzaFN0YXR1cyIsInBvbGxpbmdGb3JYbHNTdGF0dXMiLCJfZyIsIl9oIiwiX2oiLCJfayIsInRvdGFsX2NvdW50IiwicHJvY2Vzc2VkX2NvdW50Iiwic3RhcnRYbHNEb3dubG9hZCIsImNoZWNrRG93bmxvYWRTdGF0dXMiLCJjbG9zZVhsc01vZGVsIiwiY2hlY2tYbHNzdGF0dXMiLCJ0ZW1wbGF0ZSIsImNoZWNrRG93bmxvYWQiLCJmaWxlX2NvdW50IiwiZ2V0Q3VycmVudEZpbHRlckJ5Iiwic2hvd0J1dHRvbnMiLCJzaG93T3JIaWRlIiwiZmV0Y2hBY3Rpdml0aWVzIiwiZmlsdGVyQnlQdWJsaXNoU3RhdHVzIiwicGFyYW1zIiwiaGFzIiwic2V0IiwibmV3UXVlcnlTdHJpbmciLCJmaWx0ZXJCeSIsImFjdGl2aXRpZXNMaXN0IiwiZm9ybURhdGEiLCJhY3Rpdml0eV9pZGVudGlmaWVyIiwiY2xvc2VNb2RhbCIsInN0b3JlQWN0aXZpdHkiLCJCdWxrUHVibGlzaF92dWVfMSIsInVzZVNoYXJlZExvY2FsU3RvcmFnZV8xIiwic2hhcmVkTWluaW1pemUiLCJ1c2VTaGFyZWRNaW5pbWl6ZSIsInN0YXJ0UHVibGlzaCIsImNvcmVFbGVtZW50TG9hZGVyIiwiY2FuY2VsQnVsa1B1Ymxpc2giLCJjYW5jZWxWYWxpZGF0aW9uIiwiY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMiLCJjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzIiwiY2FuY2VsQnVsa1B1Ymxpc2hpbmciLCJkaXNwbGF5VG9hc3QiLCJ2ZXJpZnlDb3JlRWxlbWVudHMiLCJkZXByZWNhdGlvbl9zdGF0dXNfbWFwIiwiY29yZV9lbGVtZW50c19jb21wbGV0aW9uIiwiaW5jb21wbGV0ZSIsInZhbGlkYXRlQWN0aXZpdGllcyIsInZhbGlkYXRpb25FcnJvcnMiLCJvcmdhbml6YXRpb25faWQiLCJqb2JfYmF0Y2hfdXVpZCIsInN0b3BWYWxpZGF0aW5nIiwic3RhcnRDb3JlVmFsaWRhdGlvbiIsIlBhZ2VMb2FkZXIiLCJCdWxrUHVibGlzaGluZ01vZGFsIiwiY2xhc3NOYW1lMiIsIldpemFyZEluZGV4X3Z1ZV8xIiwiQ2hlY2tpbmdBY3Rpdml0aWVzX3Z1ZV8xIiwiUm9sbGluZ0xvYWRlckNvbXBvbmVudF92dWVfMSIsIklhdGlWYWxpZGF0ZV92dWVfMSIsIlB1Ymxpc2hpbmdBY3Rpdml0eV92dWVfMSIsIm5ld1NlbGVjdGVkQWN0aXZpdGllcyIsInNob3dQdWJsaXNoaW5nQWN0aXZpdHlNb2RhbCIsImNhbmNlbEFjdGl2aXR5UHVibGlzaGluZyIsImNvcmVDb21wbGV0ZWRDb3VudCIsImNvcmVJbkNvbXBsZXRlZENvdW50IiwiV2l6YXJkSW5kZXgiLCJDaGVja2luZ0FjdGl2aXRpZXMiLCJSb2xsaW5nTG9hZGVyIiwiSWF0aVZhbGlkYXRlIiwiUHVibGlzaGluZ0FjdGl2aXR5IiwiVGFiSW5kZXhfdnVlXzEiLCJUYWJJbmRleCIsImFjdGl2ZVRhYiIsImhhbmRsZUFjdGl2ZVRhYiIsInNlbGVjdEFsbEFjdGl2aXRpZXMiLCJjaGVja2VkIiwidmFsaWRBY3Rpdml0aWVzIiwicGFyc2VJbnQiLCJpblZhbGlkZWRBY3Rpdml0aWVzIiwiaW1tZWRpYXRlIiwidGFicyIsInNob3dCb3R0b21CYW5uZXIiLCJmb3JtYXREYXRlIiwiZGF0ZUZvcm1hdF8xIiwiZGF0ZUZvcm1hdCIsImlzRXZlcnlWYWx1ZU51bGwiLCJyb3VuZEZsb2F0IiwibnVtIiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJIYXZlTm90QWRkZWRZZXRfdnVlXzEiLCJIZWxwZXJUZXh0X3Z1ZV8xIiwiSW5kaWNhdG9yX3Z1ZV8xIiwiSGVscGVyVGV4dCIsIk5vdFlldCIsInRvb2x0aXAiLCJlbGVtZW50SGFzRGVwcmVjYXRlZENvZGUiLCJyZXN1bHREYXRhIiwiY3VycmVudExhbmd1YWdlIiwibW9tZW50IiwiaW5kaWNhdG9yIiwiVGl0bGVFbGVtZW50IiwiTWVhc3VyZSIsIkFzY2VuZGluZyIsIkFnZ3JlZ2F0aW9uU3RhdHVzIiwiRGVzY3JpcHRpb24iLCJSZWZlcmVuY2UiLCJCYXNlbGluZSIsIkRvY3VtZW50TGluayIsIlBlcmlvZCIsInJlc3VsdFRpdGxlIiwicGVyaW9kIiwibGlua0NsYXNzZXMiLCJpbmRpY2F0b3JEYXRhIiwicGVyaW9kRGF0YSIsInBhcmVudERhdGEiLCJyZXN1bHRfaWQiLCJhY3Rpdml0eUxpbmsiLCJyZXN1bHRJZCIsImFjdGl2aXR5VGl0bGUiLCJyZXN1bHRUaXRsZWQiLCJyZXN1bHRMaW5rIiwiaW5kaWNhdG9yTGluayIsImluZGljYXRvclRpdGxlIiwiaXNNYW5kYXRvcnlGb3JJbmRpY2F0b3IiLCJlbGVtZW50T3JBdHRyaWJ1dGUiLCJtYW5kYXRvcnlFbGVtZW50T3JBdHRyaWJ1dGUiLCJjb3VudERvY3VtZW50TGluayIsIkRlbGV0ZUFjdGlvbl92dWVfMSIsIkRlbGV0ZUFjdGlvbiIsImluZGljYXRvcnMiLCJpbmRpY2F0b3JzRGF0YSIsImhhbmRsZU5hdmlnYXRlIiwiZmV0Y2hMaXN0aW5ncyIsInN0YXR1c0RhdGEiLCJiYXNlVHlwZSIsImVsZW1lbnRTcGFjaW5nIiwiYmFzZWxpbmUiLCJsb2NhdGlvbnMiLCJyZWZlcmVuY2UiLCJsYXN0TG9jYXRpb24iLCJkaW1lbnNpb25zIiwiZGVzY1R5cGUiLCJkZXNjcmlwdGlvbkRhdGEiLCJhbGlnbm1lbnQiLCJkbERhdGEiLCJtZWFzdXJlVHlwZSIsIm1lYXN1cmVEYXRhIiwicmVmVHlwZSIsInJlZkRhdGEiLCJ0aXRsZVR5cGUiLCJ0aXRsZURhdGEiLCJTdGVwQmFyX3Z1ZV8xIiwiUHVibGlzaGluZ1NldHRpbmdzU3RlcF92dWVfMSIsIkRlZmF1bHRWYWx1ZXNTdGVwX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRGF0YVN0ZXBfdnVlXzEiLCJBY3Rpdml0eVN0ZXBfdnVlXzEiLCJtb2RhbFN0YXRlIiwiaW5pdGlhbFJlbmRlciIsInB1Ymxpc2hlclNldHRpbmciLCJkZWZhdWx0VmFsdWUiLCJpc0ZvcmNlT3Blbk1vZGFsIiwib3JnYW5pemF0aW9uU3RlcHMiLCJzdGVwc19zdGF0dXMiLCJmaXJzdEluY29tcGxldGVTdGVwIiwiZmluZEluZGV4IiwiZmV0Y2hEYXRhIiwicHVibGlzaGluZ19pbmZvIiwiYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXMiLCJkZWZhdWx0X3ZhbHVlcyIsImxvZyIsImNvbXBsZXRlZF9vbmJvYXJkaW5nIiwiZG9udF9zaG93X2FnYWluIiwicHJvY2VlZFN0ZXAiLCJwcmV2aW91c1N0ZXAiLCJoYW5kbGVDaGFuZ2VSZW5kZXIiLCJjb21wbGV0ZVN0ZXAiLCJyZW1vdmVDb21wbGV0ZWRTdGVwIiwiY2hhbmdlU3RlcCIsIlN0ZXBCYXIiLCJQdWJsaXNoaW5nU2V0dGluZ3NTdGVwIiwiRGVmYXVsdFZhbHVlc1N0ZXAiLCJPcmdhbmlzYXRpb25EYXRhU3RlcCIsIkFjdGl2aXR5U3RlcCIsIkxpbmVzTG9hZGVyX3Z1ZV8xIiwiRnVuY3Rpb24iLCJhbGxEZWZhdWx0VmFsdWUiLCJkZWZhdWx0X2Zsb3dfdHlwZSIsImRlZmF1bHRfZmluYW5jZV90eXBlIiwiZGVmYXVsdF9haWRfdHlwZSIsImRlZmF1bHRfdGllZF9zdGF0dXMiLCJpc1NhdmluZ1N0YXJ0ZWQiLCJpc1NhdmVkIiwiZGVmYXVsdFZhbHVlc18xIiwiZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2siLCJMaW5lc0xvYWRlciIsIlNpZGVIZWxwVGV4dF92dWVfMSIsIm9yZ2FuaXphdGlvblR5cGVPcHRpb25zIiwicHJldmlvdXNWYWx1ZXMiLCJzZWNvbmRhcnlSZXBvcnRlck9wdGlvbnMiLCJvcmdhbml6YXRpb25EYXRhIiwic2Vjb25kYXJ5X3JlcG9ydGVyIiwiaGVscFRpdGxlIiwiaGVscENvbnRlbnQiLCJoZWxwVmlzaWJsZSIsImlzU2F2aW5nIiwiZXJyb3JNZXNzYWdlcyIsImhhc1JlZmVyZW5jZUVycm9yIiwicmVmZXJlbmNlRXJyb3JNZXNzYWdlIiwiY29udGVudFZhbHVlcyIsInNob3dIZWxwIiwiZmluZCIsImNvbnRhaW5zIiwidHJhbnNmb3JtTWVzc2FnZXMiLCJtZXNzYWdlcyIsImZpbmFsRGF0YSIsInJlcG9ydGluZ19vcmciLCJTaWRlSGVscFRleHQiLCJUb2FzdE1lc3NhZ2UiLCJwdWJsaXNoZXJJZCIsIm9yZ2FuaXphdGlvbklkIiwicmVnaXN0cmF0aW9uVHlwZSIsImFwaVRva2VuIiwiaXNWZXJpZnlpbmdUb2tlbiIsImlzU3VjY2VzcyIsInRva2VuU3RhdHVzIiwidmVyaWZ5VG9rZW5TdGF0dXMiLCJvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlIiwibmV3U3RhdHVzIiwiYXBpX3Rva2VuIiwidmVyaWZ5VG9rZW4iLCJwdWJsaXNoZXJfaWQiLCJwdWJsaXNoZXJfdmVyaWZpY2F0aW9uIiwidG9rZW5fdmVyaWZpY2F0aW9uIiwiY29yZUVsZW1lbnRzXzEiLCJkcm9wZG93biIsImRyb3Bkb3duQnRuIiwic2VhcmNoQnRuVmFsdWUiLCJzZWFyY2hCdG5Ub2dnbGUiLCJlbGVtZW50SWNvbnMiLCJub3RfY29tcGxldGVkIiwiY29yZSIsImZpbHRlcmVkRWxlbWVudHMiLCJqdXN0U3RyaW5ncyIsImFjdGl2aXR5Q29yZUVsZW1lbnRzIiwiZHJvcGRvd25GaWx0ZXIiLCJnZXRMaW5rIiwiaGFzX2RhdGEiLCJFbGVtZW50U3RhdHVzX3Z1ZV8xIiwid2FybmluZ0luZm9UZXh0IiwiaGFzRXZlckJlZW5QdWJsaXNoZWQiLCJkZXByZWNhdGlvbkNvZGVVc2FnZSIsImxheW91dCIsImRlbGV0ZUFjdGl2aXR5RWxlbWVudCIsImRlbGV0ZUVsZW1lbnQiLCJzY3JvbGxUbyIsIkFjdGl2aXR5RGF0ZSIsIkNvbmRpdGlvbnMiLCJDb250YWN0SW5mbyIsIkh1bWFuaXRhcmlhblNjb3BlIiwiSWF0aUlkZW50aWZpZXIiLCJMZWdhY3lEYXRhIiwiTG9jYXRpb24iLCJPdGhlcklkZW50aWZpZXIiLCJQYXJ0aWNpcGF0aW5nT3JnIiwiUGxhbm5lZERpc2J1cnNlbWVudCIsIlBvbGljeU1hcmtlciIsIlJlY2lwaWVudENvdW50cnkiLCJSZWNpcGllbnRSZWdpb24iLCJSZWxhdGVkQWN0aXZpdHkiLCJSZXBvcnRpbmdPcmdhbml6YXRpb24iLCJTZWN0b3IiLCJUYWciLCJUcmFuc2FjdGlvbnMiLCJTdGF0dXMiLCJpc1Zpc2libGUiLCJtb2RlbFZpc2libGUiLCJ0b2dnbGVNb2RlbCIsInRvYXN0bWVzc2FnZVR5cGUiLCJzaG93RXJyb3Jwb3B1cCIsImRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UiLCJkb3dubG9hZGluZ0luUHJvY2VzcyIsImRvd25sb2FkRXJyb3IiLCJmaWxlbmFtZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZUNoaWxkIiwiZG93bmxvYWRBbnl3YXkiLCJkb3dubG9hZEVycm9yeG1sIiwiY291bnRBY3Rpdml0aWVzIiwicXVlcnlQYXJhbWV0ZXJzIiwiYWRkUXVlcnlQYXJhbXMiLCJkb3dubG9hZCIsImRvd25sb2FkWG1sIiwieG1sX2Vycm9yIiwiZG93bmxvYWRYbHMiLCJkb3dubG9hZENzdiIsIkFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwiQWN0aXZpdHlCdXR0b24iLCJkaXNtaXNzIiwiRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMSIsInB1Ymxpc2hSZWYiLCJEb3dubG9hZEFjdGl2aXR5QnV0dG9uIiwiQWRkQWN0aXZpdHlCdXR0b24iLCJzZWxlY3RBbGxWYWx1ZSIsInNlbGVjdEFsbFRvZ2dsZSIsImZyb21Ob3ciLCJ0b2dnbGVTZWxlY3RBbGwiLCJkYXR1bSIsImRpcmVjdGlvbiIsInNvcnRpbmdEaXJlY3Rpb24iLCJzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MiLCJxdWVyeSIsInNvcnRCeURhdGVVcmwiLCJUYXJnZXRWYWx1ZSIsIkFjdHVhbFZhbHVlIiwiaW5kaWNhdG9ySWQiLCJwZXJpb2RMaW5rIiwicGVyaW9kc0RhdGEiLCJkbFR5cGUiLCJhY3R1YWxWYWx1ZSIsImdldExvY2F0aW9uIiwidGFyZ2V0VmFsdWUiLCJSZXN1bHRFbGVtZW50X3Z1ZV8xIiwiUmVzdWx0RWxlbWVudCIsIkluZGljYXRvciIsImhhc0luZGljYXRvcnMiLCJyZXN1bHRzRGF0YSIsImlzTWFuZGF0b3J5Rm9yUmVzdWx0IiwiVGl0bGVEZXNjcmlwdGlvbiIsIlJlc3VsdFR5cGUiLCJlbGVtZW50TmFtZSIsImVkaXRVcmwiLCJlbGVtZW50RGF0YSIsInJlc3VsdFR5cGUiLCJyZXN1bHRWb2NhYnVsYXJ5IiwidG9vbFRpcCIsInJldmVyc2UiLCJyZWZlcmVuY2VEYXRhIiwidHlwZURhdGEiLCJ0ZERhdGEiLCJUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEiLCJUcmFuc2FjdGlvbkVsZW1lbnQiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uRGF0YSIsInRyYW5zYWN0aW9uTGluayIsImlzTWFuZGF0b3J5SWNvbiIsInIiLCJBaWRUeXBlIiwiVHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25EYXRlIiwiVmFsdWUiLCJQcm92aWRlck9yZ2FuaXphdGlvbiIsIlJlY2VpdmVyT3JnYW5pemF0aW9uIiwiRGlzYnVyc2VtZW50Q2hhbm5lbCIsIkZsb3dUeXBlIiwiRmluYW5jZVR5cGUiLCJUaWVkU3RhdHVzIiwiZ2V0TGFuZ3VhZ2VzIiwiZW50cnkiLCJ0cmFuc2FjdGlvbnNEYXRhIiwiYXREYXRhIiwiY29kZSIsImZpbmFuY2VEYXRhIiwiZmxvd0RhdGEiLCJQb0RhdGEiLCJjb3VudHJ5Iiwic2VjdG9yIiwidHNEYXRhIiwiYXVkaXREYXRhIiwiZmV0Y2hBdWRpdExpc3QiLCJyb3V0ZSIsImxhYmVscyIsInJvdW5kZWRMYWJlbHMiLCJzaG93R3JhcGhMb2FkZXIiLCJncmFwaEFtb3VudCIsInlheGlzVGlja3MiLCJtYXhWYWx1ZSIsImNoYXJ0IiwiZ3JhcGhDb2xvciIsInRvb2x0aXBUZXh0IiwiY2hhcnRPcHRpb25zIiwib2Zmc2V0WSIsInpvb20iLCJlbmFibGVkIiwib3B0aW9ucyIsInhheGlzIiwicGFkZGluZyIsInRvb2xiYXIiLCJtYXJrZXJzIiwic2l6ZSIsInN0cm9rZVdpZHRoIiwiY29sb3JzIiwiaG92ZXIiLCJzdHJva2UiLCJjdXJ2ZSIsImN1c3RvbSIsInNlcmllcyIsInNlcmllc0luZGV4IiwiZGF0YVBvaW50SW5kZXgiLCJ3IiwiZ2V0RGF5IiwiZm9ybWF0dGVkRGF0ZSIsImdsb2JhbHMiLCJjYXRlZ29yeUxhYmVscyIsInRpY2tBbW91bnQiLCJyb3RhdGUiLCJ5YXhpcyIsIm1pbiIsIm1heCIsImZvcm1hdHRlciIsInlBeGlzU2NhbGUiLCJNYXRoIiwicm91bmQiLCJUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMSIsInRhYmxlRGF0YSIsInRhYmxlSGVhZGVyIiwiYWN0aXZpdHlOYXZMaXN0IiwiYXBpUGFyYW1zIiwicHVibGlzaGVyTmF2TGlzdCIsImN1cnJlbnRwYWdlIiwicmVzZXRwYWdpbmF0aW9uIiwib3JkZXJCeSIsInNvcnQiLCJzb3J0RWxlbWVudCIsInVzZXJOYXZsaXN0IiwiY3VycmVudEl0ZW0iLCJjdXJyZW50TmF2TGlzdCIsImZldGNoVGFibGVEYXRhIiwic29ydFRhYmxlIiwidHJpZ2dlcnBhZ2luYXRpb24iLCJhY3RpdmVDbGFzcyIsIk5hdmlnYXRlV2l0aEZpbHRlciIsInRhYkNoYW5nZSIsInRvZ2dsZVNvcnQiLCJvcmRlciIsImNvbXBsZXRlTmVzcyIsInNob3dUYWJsZUxvYWRlciIsInRydW5jYXRlVGV4dCIsIlRhYmxlTG9hZGVyQ29tcG9uZW50IiwiRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xIiwiRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEiLCJEYXRlUmFuZ2VXaWRnZXRfdnVlXzEiLCJvbGRlc3REYXRlcyIsImN1cnJlbnROYXYiLCJEYXRlTGFiZWwiLCJncmFwaFRvdGFsIiwicHVibGlzaGVyIiwiaGFuZGxlQ2hhbmdlVGFibGVOYXYiLCJzZXREYXRlUmFuZ2VEYXRlIiwiZmV0Y2hHcmFwaERhdGEiLCJkb3dubG9hZFJlcG9ydCIsImFwcGVuZCIsImdyYXBoRGF0YUZvcm1hdHRlciIsImdyYXBoRGF0YSIsIngiLCJzdGFydCIsImVuZCIsImtlYmFiQ2FzZVRvU25ha2VjYXNlIiwiY29kZUxpc3QiLCJvYmplY3RMZW5ndGgiLCJwYWdpbmF0ZWREYXRhIiwiaXRlbUluUGFnaW5hdGVkRGF0YSIsInB1Ymxpc2hlclR5cGVLZXkiLCJEYXNoYm9hcmRTdGF0c1NlY3Rpb24iLCJEYXNoYm9hcmRMaXN0U2VjdGlvbiIsIkRhdGVSYW5nZVdpZGdldCIsIkJ1dHRvbkNvbXBvbmVudCIsIkRhc2hib2FyZEdyYXBoX3Z1ZV8xIiwiaW5hY3RpdmVQdWJsaXNoZXIiLCJwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkiLCJsYXN0UmVnaXN0ZXJlZCIsImxhc3RVcGRhdGVkUHVibGlzaGVyIiwibGFzdFVwZGF0ZWRBY3Rpdml0eSIsInNob3dTdGF0c0xvYWRlciIsInB1Ymxpc2hlclN0YXRzIiwic2hvd1B1Ymxpc2hlclN0YXRzIiwidXNlcklkIiwiZmV0Y2hTdGF0c0RhdGEiLCJwcm94eVVzZXIiLCJsYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlciIsInVzZXJfaWQiLCJpbkFjdGl2ZVB1Ymxpc2hlciIsIkRhc2hib2FyZEdyYXBoIiwiZmlsZSIsInVwbG9hZEZpbGUiLCJmaWxlcyIsImNvbmZpZyIsIkZvcm1EYXRhIiwiZG93bmxvYWRFeGNlbCIsInhsc0luZGljYXRvck1vdW50ZWQiLCJ1cGxvYWRUeXBlIiwic2hvd0Rvd25sb2FkRHJvcGRvd24iLCJzaG93RG93bmxvYWRDb2RlIiwic2hvd0NhbmNlbE1vZGVsIiwiZG93bmxvYWRDb2RlIiwicmVxIiwiY2FuY2VsVXBsb2FkIiwiY2FuY2VsSW1wb3J0IiwiaW1wb3J0QW55d2F5Iiwic2VsZWN0QWxsIiwieGxzVHlwZSIsIl9sIiwiX20iLCJJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSIsIkxpc3RFbGVtZW50X3Z1ZV8xIiwic2VsZWN0ZWRDb3VudCIsImFjdGl2aXRpZXNMZW5ndGgiLCJ0YWJsZVJvdyIsInRhYmxlV2lkdGgiLCJ0aW1lciIsImdldERpbWVuc2lvbnMiLCJuZXh0VGljayIsImNsaWVudFdpZHRoIiwidXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzIiwic3BsaWNlIiwiaW1wb3J0QWN0aXZpdGllcyIsImZpbGV0eXBlIiwiUGxhY2Vob2xkZXIiLCJMaXN0RWxlbWVudCIsIlNoaW1tZXIiLCJ0b2dnbGVFcnJvciIsInNlbGVjdEVsZW1lbnQiLCJzZWxlY3RlZERhdGEiLCJYbHNMaXN0RXJyb3JfdnVlXzEiLCJnbG9iYWxFcnJvciIsInNvcnRPcmRlciIsInNob3dDcml0aWNhbEVycm9yTW9kZWwiLCJzaG93SWRlbnRpZmllckVycm9yTW9kZWwiLCJzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UiLCJzaG93R0xvYmFsRXJyb3IiLCJzb3J0ZWREYXRhIiwiYSIsImIiLCJjaGVja0NyaXRpY2FsRXJyb3IiLCJkb3dubG9hZElkZW50aWZpZXJFcnJvciIsIkZpbGUiLCJhbmNob3JUYWciLCJyZXZva2VPYmplY3RVUkwiLCJjcml0aWNhbEFycnkiLCJ0b3RhbENyaXJpY2FsRXJyb3JDb3VudCIsImFkZEFjdGl2aXRpZXMiLCJYbHNMaXN0RXJyb3IiLCJPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMSIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xIiwiT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbl92dWVfMSIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJQdWJsaXNoVW5wdWJsaXNoIiwibWFuZGF0b3J5Q29tcGxldGVkIiwidXNlclJvbGUiLCJvcmdhbml6YXRpb25Qcm9wcyIsInB1Ymxpc2hNZXNzYWdlIiwibWFuZGF0b3J5Iiwib3JnTWFuZGF0b3J5RWxlbWVudHMiLCJyZXBsYWNlVW5kZXJzY29yZSIsInN0cmluZyIsInJlZ2V4Iiwibm90RGVsZXRhYmxlRWxlbWVudHMiLCJSZXBvcnRpbmdPcmdhbmlzYXRpb24iLCJUb3RhbEJ1ZGdldCIsIlJlcG9ydGluZ09yZ0J1ZGdldCIsIlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCIsIlJlY2lwaWVudENvdW50cnlCdWRnZXQiLCJUb3RhbEV4cGVuZGl0dXJlIiwiZW1haWwiLCJlbWFpbEVycm9yIiwicmVxdWVzdCIsInJlc3BvbnNlVVJMIiwiZW5jcnlwdGlvbl8xIiwidG9rZW4iLCJwYXNzd29yZCIsInBhc3N3b3JkX2NvbmZpcm1hdGlvbiIsImZvcm0iLCJwcm9jZXNzIiwiZW52IiwiTUlYX0VOQ1JZUFRJT05fS0VZIiwic3RvcmVfMSIsImFjdGlvbnNfMSIsImRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZSIsImRlZmF1bHRGb3JtIiwiZGVmYXVsdEVycm9yIiwidXBkYXRlU3RvcmUiLCJBY3Rpb25UeXBlcyIsIlVQREFURV9ERUZBVUxUX1ZBTFVFUyIsIlNldHRpbmdEZWZhdWx0Rm9ybV92dWVfMSIsIlNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSIsIlNldHRpbmdEZWZhdWx0Rm9ybSIsIlNldHRpbmdQdWJsaXNoaW5nRm9ybSIsImlzU3VwZXJhZG1pbiIsInRvYXN0VGltZW91dElkIiwiaW5pdGlhbEFwaUNhbGxDb21wbGV0ZWQiLCJ0YWIiLCJwdWJsaXNoaW5nRm9ybSIsInB1Ymxpc2hpbmdJbmZvIiwicHVibGlzaGluZ0Vycm9yIiwic2hvd1Rva2VuVGFnIiwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STSIsInNldHRpbmdEYXRhIiwicHVibGlzaGVySW5mbyIsImFjdGl2aXR5VmFsdWVzIiwic2V0RXJyb3JzIiwidG9nZ2xlVGFiIiwic3VibWl0RGVmYXVsdCIsImNsZWFyVGltZW91dCIsImhpZXJhcmNoaWFsIiwic3VibWl0UHVibGlzaGluZyIsInNob3dUYWciLCJhdXRvVmVyaWZ5IiwiVGFibGVMaXN0X3Z1ZV8xIiwiY291bnRyaWVzIiwic2V0dXBDb21wbGV0ZW5lc3MiLCJyZWdpc3RyYXRpb25UeXBlcyIsInB1Ymxpc2hlclR5cGVzIiwiZGF0YUxpY2Vuc2VzIiwiVGFibGVMaXN0IiwibGFuZ18xIiwicGhwRGVwZW5kZW5jaWVzIiwibm9kZURlcGVuZGVuY2llcyIsInBhY2thZ2VNYW5hZ2VyVmVyc2lvbiIsImxhdGVzdE1hbmFnZXJWZXJzaW9uIiwiZ2V0U3RhdHVzQ2xhc3MiLCJ1cGRhdGVTdGF0dXMiLCJnZXRTdGF0dXNNZXNzYWdlIiwicmVzb2x2ZUxhdGVzdFZlcnNpb24iLCJnZXRJbmRleCIsIm9yZ2FuaXphdGlvbk5hbWUiLCJzd2l0Y2hCYWNrIiwiTXVsdGlTZWxlY3RXaXRoU2VhcmNoX3Z1ZV8xIiwiUG9wdXBNb2RhbCIsImRlbGV0ZUlkIiwiZGVsZXRlT3JnTmFtZSIsImRlbGV0ZU1vZGFsIiwibWFya0FzU3BhbSIsInNob3dMb2FkZXIiLCJ0b2dnbGVEZWxldGVDb25maXJtYXRpb24iLCJvcGVuRGVsZXRlTW9kYWwiLCJkZWxldGVPcmciLCJvcmdJZCIsImZldGNoT3JnYW5pc2F0aW9uIiwiZ2V0Q291bnRyaWVzV2l0aFByZWZpeCIsInJldHVyblZhbHVlRm9yQ291bnRyaWVzIiwiY291bnRyeUNvZGVzIiwiY291bnRyaWVzV2l0aFByZWZpeCIsIm9yZ2FuaXNhdGlvbkRhdGEiLCJtdWx0aXNlbGVjdFN0eWxlIiwicHVibGlzaGVyX3R5cGUiLCJkYXRhX2xpY2Vuc2UiLCJjb21wbGV0ZW5lc3MiLCJyZWdpc3RyYXRpb25fdHlwZSIsInN0YXJ0X2RhdGUiLCJlbmRfZGF0ZSIsImRhdGVfdHlwZSIsInNlbGVjdGVkX2RhdGVfZmlsdGVyIiwicmVzZXRQYWdpbmF0aW9uIiwidG90YWxPcmdhbmlzYXRpb24iLCJyZWdpc3RyeUFwaUtleVN0YXR1cyIsImRlZmF1bHRWYWx1ZVN0YXR1cyIsInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJjcmVhdGVkX2F0IiwibGFzdF9sb2dnZWRfaW4iLCJzb3J0UGFyYW1zIiwicm90YXRlQ2xhc3MiLCJjbG9zZVB1Ymxpc2hlck1vZGVsIiwiY2xlYXJEYXRlRmlsdGVyIiwiZ2VuZXJhdGVMYWJlbCIsImZpbHRlclBhcmFtcyIsImdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UiLCJxdWVyeVBhcmFtc0luS2V5VmFsIiwicXVlcnlQYXJhbXMiLCJpc0ZpbHRlckFwcGxpZWQiLCJmaWx0ZXJLZXkiLCJyZWZyZXNoU3RhdHVzQXJyYXlzIiwiZGVmYXVsdFNvcnREaXJlY3Rpb24iLCJzb3J0RGlyZWN0aW9uIiwib3JkZXJUeXBlIiwic29ydEJ5IiwicmVzZXRBbGxGaWx0ZXJzIiwib3JnRGF0YSIsIm9yZ0RhdHVtIiwic2V0dGluZ3MiLCJjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkIiwiYWN0aXZpdHlEZWZhdWx0VmFsdWVzIiwic2VsZWN0ZWREYXRlRmlsdGVyIiwic2V0RGF0ZVR5cGUiLCJ0b2dnbGVTaG93TXVsdGlTZWxlY3QiLCJyZWN0Iiwic2V0U2VsZWN0ZWRQdWJsaXNoZXIiLCJzaG93TWFwcGVkRGF0YSIsImxpY2Vuc2UiLCJ0cmltIiwiTXVsdGlTZWxlY3RXaXRoU2VhcmNoIiwic25ha2VDYXNlVG9TZW50ZW5jZUNhc2UiLCJvcmdhbml6YXRpb25zIiwicm9sZXMiLCJjdXJyZW50VXNlcklkIiwicSIsImFkZFVzZXJGb3JtIiwiZWRpdFVzZXJGb3JtIiwidXNlcnNEYXRhIiwiYWxsU2VsZWN0ZWQiLCJ0b3RhbFVzZXIiLCJzdGF0dXNJZCIsInN0YXR1c01vZGFsIiwic3RhdHVzVmFsdWUiLCJzdGF0dXNVc2VybmFtZSIsImRlbGV0ZVVzZXJuYW1lIiwiZmV0Y2hpbmdUYWJsZURhdGEiLCJzZWxlY3RlZElkcyIsImNoZWNrbGlzdCIsImN1cnJlbnRwYWdlRGF0YSIsImVkaXRVc2VySWQiLCJ1c2VybmFtZSIsImZ1bGxfbmFtZSIsInJvbGVfaWQiLCJmb3JtRXJyb3IiLCJmdWxsbmFtZSIsImdlbmVyYXRlVXNlcm5hbWUiLCJjbGVhckRhdGVSYW5nZUZpbHRlciIsInJvbGUiLCJ0ZXh0QnViYmxlZGF0YSIsImZpZWxkIiwiY2xlYXJGaWx0ZXIiLCJjcmVhdGVVc2VyIiwicGFzc3dvcmREYXRhIiwic2V0Rm9ybUVycm9yIiwiZmV0Y2hVc2Vyc0xpc3QiLCJlbXB0eUZvcm1EYXRhIiwiZWRpdFVzZXIiLCJvcGVuU3RhdHVzTW9kZWwiLCJ1cGRhdGVVc2VyIiwicGF0Y2giLCJmaWx0ZXJfa2V5Iiwib3BlbkRlbGV0ZW1vZGVsIiwiZGVsZXRlVXNlciIsInRvZ2dsZVVzZXJTdGF0dXMiLCJ0b2dnbGVTZWxlY3RhbGwiLCJlbCIsImRvd25sb2FkQWxsIiwiYWxsUGFnZVNlbGVjdGVkIiwiZmxhdCIsImxhbmd1YWdlUHJlZmVyZW5jZSIsImVkaXRQcm9maWxlRm9ybSIsImVkaXRQYXNzd29yZEZvcm0iLCJzaG93Q3VycmVudFBhc3N3b3JkIiwic2hvd05ld1Bhc3N3b3JkIiwic2hvd0NvbmZpcm1QYXNzd29yZCIsInVzZXJEYXRhIiwidXNlcl9yb2xlIiwibGFuZ3VhZ2VfcHJlZmVyZW5jZSIsImVycm9yRm9ybURhdGEiLCJjdXJyZW50X3Bhc3N3b3JkIiwiZXJyb3JQYXNzd29yZERhdGEiLCJ1cGRhdGVQYXNzd29yZCIsInBhc3N3b3JkRm9ybURhdGEiLCJmb3JtX3R5cGUiLCJ1cGRhdGVQcm9maWxlIiwiRW1haWxWZXJpZmljYXRpb25fdnVlXzEiLCJFbWFpbFZlcmlmaWNhdGlvbiIsInB1Ymxpc2hlckV4aXN0cyIsInRleHRhcmVhIiwicHVibGlzaGVyX25hbWUiLCJyZWdpc3RyYXRpb25fYWdlbmN5IiwicmVnaXN0cmF0aW9uX251bWJlciIsImlkZW50aWZpZXIiLCJsaWNlbnNlX2lkIiwiaW1hZ2VfdXJsIiwiY29udGFjdF9lbWFpbCIsIndlYnNpdGUiLCJhZGRyZXNzIiwic291cmNlIiwicmVjb3JkX2V4Y2x1c2lvbnMiLCJpYXRpRXJyb3IiLCJyZXNpemUiLCJzY3JvbGxIZWlnaHQiLCJhZ2VuY2llcyIsInJlZ2lzdHJhdGlvbkFnZW5jeSIsInVuY2F0ZWdvcml6ZWRfMSIsInVuY2F0ZWdvcml6ZWRSZWdpc3RyYXRpb25BZ2VuY3lQcmVmaXgiLCJzdGFydHNXaXRoIiwiaXNUZXh0RmllbGQiLCJmaWVsZFR5cGUiLCJmaWVsZE5hbWUiLCJjaGVja1N0ZXAiLCJmb3JtU3RlcCIsInJlZ2lzdGVyRm9ybSIsImlzX2NvbXBsZXRlIiwiaG92ZXJfdGV4dCIsImZpZWxkcyIsInBsYWNlaG9sZGVyIiwiaGVscF90ZXh0IiwicHVibGlzaGVyVHlwZSIsImRhdGFMaWNlbnNlIiwidXBkYXRlVmFsaWRhdGlvbkVycm9ycyIsImVycm9yUmVzcG9uc2UiLCJjbGVhblZhbGlkYXRpb25FcnJvcnMiLCJ1cGRhdGVFcnJvcnMiLCJldmVyeSIsImNsZWFuSWF0aUVycm9ycyIsInZlcmlmeVB1Ymxpc2hlciIsInVwZGF0ZVN0ZXAiLCJ2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24iLCJ2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24iLCJnZXRDdXJyZW50U3RlcCIsImN1cnJlbnRfc3RlcCIsImdvVG9OZXh0Rm9ybSIsImdvVG9QcmV2aW91c0Zvcm0iLCJkb3dubG9hZE1hbnVhbCIsIm9yaWdpbiIsInRyaWdnZXJNb2RlbCIsImFnZW5jeSIsInVuY2F0ZWdvcml6ZWRPcmdhbmlzYXRpb25SZWdpc3RyYXRpb25BZ2VuY3kiLCJvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeSIsIm9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm8iLCJpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXIiLCJjb25maXJtX3Bhc3N3b3JkIiwidXBkYXRlRm9ybUVycm9ycyIsImVycktleSIsInB1Ymxpc2hlcl9zb3VyY2VfdHlwZSIsImludGVudCIsImVtYWlsT3JVc2VybmFtZSIsImxvZ2luIiwiTmF2RHJvcGRvd25fdnVlXzEiLCJOYXZEcm9wZG93biIsImF1dGgiLCJyZW5kZXIiLCJfaG9pc3RlZF8xIiwiY3JlYXRlRWxlbWVudFZOb2RlIiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiX2hvaXN0ZWRfNSIsIl9ob2lzdGVkXzYiLCJfaG9pc3RlZF83IiwiX2hvaXN0ZWRfOCIsIl9ob2lzdGVkXzkiLCJfaG9pc3RlZF8xMCIsIl9ob2lzdGVkXzExIiwiX2hvaXN0ZWRfMTIiLCJfaG9pc3RlZF8xMyIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX2NvbXBvbmVudF9zdmdfdnVlIiwicmVzb2x2ZUNvbXBvbmVudCIsIm9wZW5CbG9jayIsImNyZWF0ZUVsZW1lbnRCbG9jayIsIkZyYWdtZW50Iiwib25DbGljayIsImNyZWF0ZVZOb2RlIiwiY3JlYXRlQ29tbWVudFZOb2RlIiwidG9EaXNwbGF5U3RyaW5nIiwiY3JlYXRlQmxvY2siLCJub3JtYWxpemVTdHlsZSIsInRydW5jIiwiJGV2ZW50Iiwid2l0aEN0eCIsImNyZWF0ZVRleHRWTm9kZSIsIl9ob2lzdGVkXzE0IiwiX2hvaXN0ZWRfMTUiLCJfaG9pc3RlZF8xNiIsIl9ob2lzdGVkXzE3IiwiX2hvaXN0ZWRfMTgiLCJfaG9pc3RlZF8xOSIsIl9ob2lzdGVkXzIwIiwiX2hvaXN0ZWRfMjEiLCJfaG9pc3RlZF8yMiIsIl9ob2lzdGVkXzIzIiwibm9ybWFsaXplQ2xhc3MiLCJfd2l0aFNjb3BlSWQiLCJwdXNoU2NvcGVJZCIsInBvcFNjb3BlSWQiLCJfaG9pc3RlZF8yNCIsIl9ob2lzdGVkXzI1IiwiX2hvaXN0ZWRfMjYiLCJfaG9pc3RlZF8yNyIsIl9ob2lzdGVkXzI4IiwiX2hvaXN0ZWRfMjkiLCJfaG9pc3RlZF8zMCIsIl9ob2lzdGVkXzMxIiwiX2hvaXN0ZWRfMzIiLCJfaG9pc3RlZF8zMyIsIl9ob2lzdGVkXzM0IiwiX2hvaXN0ZWRfMzUiLCJfaG9pc3RlZF8zNiIsIl9ob2lzdGVkXzM3IiwiX2hvaXN0ZWRfMzgiLCJfaG9pc3RlZF8zOSIsIl9ob2lzdGVkXzQwIiwicmVuZGVyTGlzdCIsIm5hdl9fcG9pbnRlciIsIndpdGhEaXJlY3RpdmVzIiwib25LZXl1cCIsIndpdGhLZXlzIiwidk1vZGVsVGV4dCIsIm9uQ2xvc2UiLCJvbkNsb3NlTW9kYWwiLCJvblRvYXN0IiwiYmMiLCJkIiwiJGVtaXQiLCJfY29tcG9uZW50X1NwaW5uZXJMb2FkZXIiLCJ2U2hvdyIsImVtcHR5IiwibW9kZWxWYWx1ZSIsImNsZWFyYWJsZSIsInRlbGVwb3J0Iiwib25PcGVuIiwib25DbGVhcmVkIiwieWVhcmx5IiwicHJlc2V0RGF0ZVJhbmdlIiwiYWN0aW9uIiwiY3JlYXRlU3RhdGljVk5vZGUiLCJhcyIsImVudGVyIiwibGVhdmUiLCJpbm5lckhUTUwiLCJvbklucHV0Iiwidk1vZGVsQ2hlY2tib3giLCJUZWxlcG9ydCIsIlRyYW5zaXRpb24iLCJhcmdzIiwicmVuZGVyU2xvdCIsIiRzbG90cyIsIl9jb21wb25lbnRfcmFkaWFsX3Byb2dyZXNzX2JhciIsImRpYW1ldGVyIiwicm93IiwiY29sIiwibSIsImVsZV9lcnIiLCJiYWNrZ3JvdW5kX2JsaW5rIiwib25TdG9wVmFsaWRhdGlvbiIsIm9uUHJvY2VlZCIsIm9uQWN0aXZpdHlQdWJsaXNoZWREYXRhIiwib25IaWRlTG9hZGVyIiwib25SZXNldCIsImlhdGlfcGF0aCIsIl9jb21wb25lbnRfQnRuIiwiX2NvbXBvbmVudF9CcmVhZGNydW1iIiwiZXJyb3JJbmRleCIsImVycm9yTGlzdCIsImxpc3RJbmRleCIsIl9jb21wb25lbnRfSG92ZXJUZXh0Iiwic2VhcmNoYWJsZSIsIl9ob2lzdGVkXzQxIiwiX2hvaXN0ZWRfNDIiLCJfaG9pc3RlZF80MyIsIl9ob2lzdGVkXzQ0IiwiX2hvaXN0ZWRfNDUiLCJfaG9pc3RlZF80NiIsIl9ob2lzdGVkXzQ3IiwiX2hvaXN0ZWRfNDgiLCJfaG9pc3RlZF80OSIsIl9ob2lzdGVkXzUwIiwiX2hvaXN0ZWRfNTEiLCJfaG9pc3RlZF81MiIsIl9ob2lzdGVkXzUzIiwiX2hvaXN0ZWRfNTQiLCJfaG9pc3RlZF81NSIsIl9ob2lzdGVkXzU2IiwiX2hvaXN0ZWRfNTciLCJfaG9pc3RlZF81OCIsIl9ob2lzdGVkXzU5IiwiX2hvaXN0ZWRfNjAiLCJfaG9pc3RlZF82MSIsIl9ob2lzdGVkXzYyIiwiX2hvaXN0ZWRfNjMiLCJfaG9pc3RlZF82NCIsIl9ob2lzdGVkXzY1IiwiX2hvaXN0ZWRfNjYiLCJfY29tcG9uZW50X1RvYXN0IiwiX2NvbXBvbmVudF9SZWZyZXNoVG9hc3RNZXNzYWdlIiwiX2NvbXBvbmVudF9FcnJvclBvcFVwIiwiX2NvbXBvbmVudF9EZWxldGVCdXR0b24iLCJfY29tcG9uZW50X1VuUHVibGlzaCIsIl9jb21wb25lbnRfUHVibGlzaCIsIl9jb21wb25lbnRfRXJyb3JzIiwiX2NvbXBvbmVudF9QcmV2aW91c2x5UHVibGlzaGVkIiwiX2NvbXBvbmVudF9Qcm9ncmVzc0JhciIsIl9jb21wb25lbnRfRWxlbWVudHMiLCJfY29tcG9uZW50X0FjdGl2aXR5RWxlbWVudCIsIl9jb21wb25lbnRfUmVzdWx0IiwiX2NvbXBvbmVudF9YbHNVcGxvYWRJbmRpY2F0b3IiLCJfY29tcG9uZW50X1B1Ymxpc2hTZWxlY3RlZCIsIl9kaXJlY3RpdmVfc3RpY2t5X2NvbXBvbmVudCIsInJlc29sdmVEaXJlY3RpdmUiLCJfZGlyZWN0aXZlX3Ntb290aF9zY3JvbGwiLCJvbkNsb3NlUG9wdXAiLCJ1blB1Ymxpc2hlZCIsInNob3dQdWJsaXNoZWQiLCJwdWJsaXNoRXJyb3JzIiwiYm91bmRhcnkiLCJpY29uX3NpemUiLCJ3YXJuaW5nX2luZm9fdGV4dCIsIl9jb21wb25lbnRfTG9hZGVyIiwiX2NvbXBvbmVudF9QYWdlVGl0bGUiLCJfY29tcG9uZW50X0Vycm9yTWVzc2FnZSIsIl9jb21wb25lbnRfRW1wdHlBY3Rpdml0eSIsIl9jb21wb25lbnRfVGFibGVMYXlvdXQiLCJfY29tcG9uZW50X1BhZ2luYXRpb24iLCJfY29tcG9uZW50X09uQm9hcmRpbmdJbmRleCIsIm9uU2hvd09ySGlkZSIsIm9uRmV0Y2hBY3Rpdml0aWVzIiwiX2NvbXBvbmVudF9NdWx0aXNlbGVjdCIsIl9jb21wb25lbnRfQnRuQ29tcG9uZW50IiwiX2NvbXBvbmVudF9Nb2RhbCIsImVycm9yX19pbnB1dCIsImlhdGlfaWRlbnRpZmllcl90ZXh0Iiwib25DYW5jZWxWYWxpZGF0aW9uIiwib25DYW5jZWxCdWxrUHVibGlzaGluZyIsIm9uVmFsaWRhdGVBY3Rpdml0aWVzIiwiX28iLCJfcCIsIl9xIiwiX3IiLCJfcyIsIl90IiwidGFiT25lIiwiYWN0IiwidGFiVHdvIiwiS2VlcEFsaXZlIiwib25BY3RpdmVUYWIiLCJvbkNoYW5nZSIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJhY3Rpdml0eURhdGUiLCJjb25kaXRpb25fYXR0YWNoZWQiLCJjb25kaXRpb24iLCJjb25kaXRpb25fdHlwZSIsImNvbmRpdGlvblR5cGUiLCJjb250YWN0VHlwZSIsIm9yZ2FuaXNhdGlvbiIsInBlcnNvbl9uYW1lIiwiZGVwYXJ0bWVudCIsImpvYl90aXRsZSIsImVtYWlsX3ZhbHVlIiwidGVsZXBob25lIiwidGVsIiwibWFpbGluZ19hZGRyZXNzIiwiYWRkcmVzc19pbmRleCIsImRlc2NyaXB0aW9uVHlwZSIsImh1bWFuaXRhcmlhblNjb3BlVHlwZSIsImh1bWFuaXRhcmlhblNjb3BlVm9jYWJ1bGFyeSIsInZvY2FidWxhcnkiLCJ2b2NhYnVsYXJ5X3VyaSIsImxlZ2FjeV9uYW1lIiwiaWF0aV9lcXVpdmFsZW50IiwiX2hvaXN0ZWRfNjciLCJfaG9pc3RlZF82OCIsIl9ob2lzdGVkXzY5IiwiX2hvaXN0ZWRfNzAiLCJfaG9pc3RlZF83MSIsIl9ob2lzdGVkXzcyIiwiX2hvaXN0ZWRfNzMiLCJfaG9pc3RlZF83NCIsIl9ob2lzdGVkXzc1IiwiX2hvaXN0ZWRfNzYiLCJsb2NhdGlvbl9yZWFjaCIsImdlb2dyYXBoaWNMb2NhdGlvblJlYWNoIiwibG9jYXRpb25faWQiLCJnZW9ncmFwaGljVm9jYWJ1bGFyeSIsImFjdGl2aXR5X2Rlc2NyaXB0aW9uIiwiYWRtaW5pc3RyYXRpdmUiLCJsZXZlbCIsInBvaW50Iiwic3JzX25hbWUiLCJwb3MiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImV4YWN0bmVzcyIsImdlb2dyYXBoaWNFeGFjdG5lc3MiLCJsb2NhdGlvbl9jbGFzcyIsImdlb2dyYXBoaWNMb2NhdGlvbkNsYXNzIiwiZmVhdHVyZV9kZXNpZ25hdGlvbiIsImxvY2F0aW9uVHlwZSIsInJlZmVyZW5jZV90eXBlIiwib3RoZXJJZGVudGlmaWVyVHlwZSIsIm93bmVyX29yZyIsInBhcnRpY2lwYXRpbmdfb3JnIiwib3JnYW5pemF0aW9uX3JvbGUiLCJvcmdhbmlzYXRpb25Sb2xlIiwiY3JzX2NoYW5uZWxfY29kZSIsImNyc0NoYW5uZWxDb2RlIiwiYnVkZ2V0VHlwZSIsInBsYW5uZWRfZGlzYnVyc2VtZW50X3R5cGUiLCJhbW91bnQiLCJ0b0xvY2FsZVN0cmluZyIsImN1cnJlbmN5IiwidmFsdWVfZGF0ZSIsInByb3ZpZGVyX29yZyIsInByb3ZpZGVyX2FjdGl2aXR5X2lkIiwicmVjZWl2ZXJfb3JnIiwicmVjZWl2ZXJfYWN0aXZpdHlfaWQiLCJwb2xpY3lfbWFya2VyX3ZvY2FidWxhcnkiLCJwb2xpY3lNYXJrZXJWb2NhYnVsYXJ5IiwicG9saWN5X21hcmtlciIsInBvbGljeU1hcmtlciIsInBvbGljeV9tYXJrZXJfdGV4dCIsInNpZ25pZmljYW5jZSIsInBvbGljeVNpZ25pZmljYW5jZSIsImNvdW50cnlfY29kZSIsInBlcmNlbnRhZ2UiLCJyZWdpb25fdm9jYWJ1bGFyeSIsInJlZ2lvblZvY2FidWxhcnkiLCJyZWdpb25fY29kZSIsInJlZ2lvbiIsImN1c3RvbV9jb2RlIiwicmVsYXRpb25zaGlwX3R5cGUiLCJyZWxhdGVkQWN0aXZpdHlUeXBlIiwiX2NvbXBvbmVudF9IZWxwZXJUZXh0IiwiX2NvbXBvbmVudF9Ob3RZZXQiLCJpbmRpYyIsInBlcmlvZHMiLCJzZWN0b3Jfdm9jYWJ1bGFyeSIsInNlY3RvclZvY2FidWxhcnkiLCJzZWN0b3JDb2RlIiwiY2F0ZWdvcnlfY29kZSIsInNlY3RvckNhdGVnb3J5Iiwic2RnX2dvYWwiLCJzZGdHb2FscyIsInNkZ190YXJnZXQiLCJzZGdUYXJnZXQiLCJ0YWdfdm9jYWJ1bGFyeSIsInRhZ1ZvY2FidWxhcnkiLCJ0YWdfdGV4dCIsImdvYWxzX3RhZ19jb2RlIiwidGFyZ2V0c190YWdfY29kZSIsInRyYW5zIiwidHJhbnNhY3Rpb25UeXBlIiwidHJhbnNhY3Rpb25fdHlwZSIsInRyYW5zYWN0aW9uX3R5cGVfY29kZSIsInZhbCIsIl9jb21wb25lbnRfVGl0bGVFbGVtZW50IiwiX2NvbXBvbmVudF9Bc2NlbmRpbmciLCJfY29tcG9uZW50X01lYXN1cmUiLCJfY29tcG9uZW50X0FnZ3JlZ2F0aW9uU3RhdHVzIiwiX2NvbXBvbmVudF9EZXNjcmlwdGlvbiIsIl9jb21wb25lbnRfUmVmZXJlbmNlIiwiX2NvbXBvbmVudF9CYXNlbGluZSIsIl9jb21wb25lbnRfUGVyaW9kIiwiX2NvbXBvbmVudF9Eb2N1bWVudExpbmsiLCJpbmRpY2F0b3JfY29kZSIsInJEYXRhIiwicmkiLCJkb2N1bWVudF9saW5rIiwiYXNjZW5kaW5nIiwibWVhc3VyZSIsImluZGljYXRvck1lYXN1cmUiLCJhZ2dyZWdhdGlvbl9zdGF0dXMiLCJzY29wZSIsImNvbHNwYW4iLCJfY29tcG9uZW50X0RlbGV0ZUFjdGlvbiIsImJhc2UiLCJkaW1lbnNpb24iLCJjb21tZW50IiwiY29tIiwiYyIsIm5hIiwiY2F0ZWdvcnkiLCJjYXQiLCJkb2N1bWVudENhdGVnb3J5IiwiZG9jdW1lbnRfZGF0ZSIsImluZGljYXRvclZvY2FidWxhcnkiLCJpbmRpY2F0b3JfdXJpIiwib25DaGFuZ2VTdGVwIiwibW9kZSIsIm9uYm9hcmRpbmdTdGVwIiwib25Qcm9jZWVkU3RlcCIsIm9uQ2hhbmdlUmVuZGVyIiwib25Db21wbGV0ZVN0ZXAiLCJvblJlbW92ZUNvbXBsZXRlZFN0ZXAiLCJvblByZXZpb3VzU3RlcCIsIm9uQ2xpY2tPbmNlIiwiX2hvaXN0ZWRfNzciLCJfaG9pc3RlZF83OCIsIl9ob2lzdGVkXzc5IiwiX2hvaXN0ZWRfODAiLCJfaG9pc3RlZF84MSIsIl9ob2lzdGVkXzgyIiwiX2hvaXN0ZWRfODMiLCJfaG9pc3RlZF84NCIsIl9ob2lzdGVkXzg1IiwiX2hvaXN0ZWRfODYiLCJfaG9pc3RlZF84NyIsIl9ob2lzdGVkXzg4IiwiX2hvaXN0ZWRfODkiLCJfaG9pc3RlZF85MCIsIl9ob2lzdGVkXzkxIiwiX2hvaXN0ZWRfOTIiLCJfaG9pc3RlZF85MyIsIl9ob2lzdGVkXzk0IiwiX2hvaXN0ZWRfOTUiLCJfaG9pc3RlZF85NiIsIl9ob2lzdGVkXzk3IiwiX2hvaXN0ZWRfOTgiLCJfaG9pc3RlZF85OSIsIl9ob2lzdGVkXzEwMCIsIl9ob2lzdGVkXzEwMSIsIl9ob2lzdGVkXzEwMiIsIl9ob2lzdGVkXzEwMyIsIl9ob2lzdGVkXzEwNCIsIl9ob2lzdGVkXzEwNSIsIl9ob2lzdGVkXzEwNiIsIl9ob2lzdGVkXzEwNyIsIl9ob2lzdGVkXzEwOCIsIl9ob2lzdGVkXzEwOSIsIl9ob2lzdGVkXzExMCIsImRlZmF1bHRfYWlkX3R5cGVfdm9jYWJ1bGFyeSIsImFpZFR5cGVWb2NhYnVsYXJ5IiwiZWFybWFya2luZ19jYXRlZ29yeSIsImVhcm1hcmtpbmdDYXRlZ29yeSIsImVhcm1hcmtpbmdfbW9kYWxpdHkiLCJlYXJtYXJraW5nTW9kYWxpdHkiLCJjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMiLCJjYXNoYW5kVm91Y2hlck1vZGFsaXRpZXMiLCJhaWRUeXBlIiwiY291bnRyeV9idWRnZXRfdm9jYWJ1bGFyeSIsImJ1ZGdldElkZW50aWZpZXJWb2NhYnVsYXJ5IiwiYnVkZ2V0X2l0ZW0iLCJidWRnZXRJZGVudGlmaWVyIiwiYnVkZ2V0X3R5cGUiLCJidWRnZXRfdmFsdWUiLCJidWRnZXRfc3RhdHVzIiwiYnVkZ2V0U3RhdHVzIiwiYWN0aXZpdHlTdGF0dXMiLCJhY3Rpdml0eVNjb3BlIiwiY29sbGFib3JhdGlvblR5cGUiLCJmbG93VHlwZSIsInRpZWRTdGF0dXMiLCJmaW5hbmNlVHlwZSIsIl9jb21wb25lbnRfQ3JlYXRlTW9kYWwiLCJfY29tcG9uZW50X0FjdGl2aXR5QnV0dG9uIiwicmVsIiwidXBkYXRlZF9hdCIsIl9jb21wb25lbnRfVGFyZ2V0VmFsdWUiLCJfY29tcG9uZW50X0FjdHVhbFZhbHVlIiwicGVyaW9kX2NvZGUiLCJhY3R1YWwiLCJwZSIsInRWYWx1ZSIsImRpbSIsIl9jb21wb25lbnRfUmVzdWx0RWxlbWVudCIsIl9jb21wb25lbnRfSW5kaWNhdG9yIiwicmVzdWx0X2NvZGUiLCJfY29tcG9uZW50X1RpdGxlRGVzY3JpcHRpb24iLCJfY29tcG9uZW50X1Jlc3VsdFR5cGUiLCJfaG9pc3RlZF8xMTEiLCJfaG9pc3RlZF8xMTIiLCJfaG9pc3RlZF8xMTMiLCJfaG9pc3RlZF8xMTQiLCJfaG9pc3RlZF8xMTUiLCJfaG9pc3RlZF8xMTYiLCJfaG9pc3RlZF8xMTciLCJfaG9pc3RlZF8xMTgiLCJfaG9pc3RlZF8xMTkiLCJfaG9pc3RlZF8xMjAiLCJfaG9pc3RlZF8xMjEiLCJfaG9pc3RlZF8xMjIiLCJfaG9pc3RlZF8xMjMiLCJfaG9pc3RlZF8xMjQiLCJfaG9pc3RlZF8xMjUiLCJfaG9pc3RlZF8xMjYiLCJfaG9pc3RlZF8xMjciLCJfaG9pc3RlZF8xMjgiLCJfaG9pc3RlZF8xMjkiLCJfaG9pc3RlZF8xMzAiLCJsb2MiLCJ0YXIiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uRWxlbWVudCIsIl9jb21wb25lbnRfQWlkVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25UeXBlIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkRhdGUiLCJfY29tcG9uZW50X1ZhbHVlIiwiX2NvbXBvbmVudF9Qcm92aWRlck9yZ2FuaXphdGlvbiIsIl9jb21wb25lbnRfUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X0Rpc2J1cnNlbWVudENoYW5uZWwiLCJfY29tcG9uZW50X1NlY3RvciIsIl9jb21wb25lbnRfUmVjaXBpZW50Q291bnRyeSIsIl9jb21wb25lbnRfUmVjaXBpZW50UmVnaW9uIiwiX2NvbXBvbmVudF9GbG93VHlwZSIsIl9jb21wb25lbnRfRmluYW5jZVR5cGUiLCJfY29tcG9uZW50X1RpZWRTdGF0dXMiLCJ0cmFuc2FjdGlvbl9kYXRlIiwiY2xhcyIsImF0IiwiYWlkX3R5cGVfdm9jYWJ1bGFyeSIsImFpZF90eXBlX2NvZGUiLCJjYXNoQW5kVm91Y2hlck1vZGFsaXRpZXMiLCJlYXJNYXJraW5nQ2F0ZWdvcnkiLCJlYXJNYXJraW5nTW9kYWxpdHkiLCJkaXNidXJzZW1lbnRfY2hhbm5lbF9jb2RlIiwiZGlzYnVyc2VtZW50Q2hhbm5lbCIsImZpbmFuY2VfdHlwZSIsImZsb3dfdHlwZSIsIm9yZ2FuaXphdGlvbl9pZGVudGlmaWVyX2NvZGUiLCJwbyIsImNvdSIsImNvdW50cnlDb2RlIiwic2QiLCJyZWdpb25Db2RlIiwic2VjIiwidW5zZGdHb2FscyIsInVuc2RnVGFyZ2V0cyIsInRpZWRfc3RhdHVzX2NvZGUiLCJ0aWVkU3RhdHVzVHlwZSIsIl9jb21wb25lbnRfYXBleGNoYXJ0IiwiYWRtaW5fdXNlcl9jb3VudCIsImdlbmVyYWxfdXNlcl9jb3VudCIsImFjdGl2ZV91c2VyX2NvdW50IiwiZGVhY3RpdmF0ZWRfdXNlcl9jb3VudCIsInRvdGFsX3VzZXJfY291bnQiLCJjb21wbGV0ZVNldHVwIiwiaW5jb21wbGV0ZVNldHVwIiwiYm90aCIsIm9uVHJpZ2dlclNldERhdGVSYW5nZSIsIm9uVGFibGVOYXYiLCJyb2xlSWQiLCJ2TW9kZWxSYWRpbyIsInJlZl9mb3IiLCJvblNlbGVjdEVsZW1lbnQiLCJjbG9zZWQiLCJleGlzdGluZyIsIndhcm5pbmciLCJfY29tcG9uZW50X1B1Ymxpc2hVbnB1Ymxpc2giLCJfY29tcG9uZW50X1JhZGlhbFByb2dyZXNzQmFyIiwiX2NvbXBvbmVudF9PcmdhbmlzYXRpb25FbGVtZW50cyIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJyZWNpcGllbnRfY291bnRyeSIsInJlY2lwaWVudF9jb3VudHJ5X2J1ZGdldCIsImJ1ZGdldF9saW5lIiwicmVjaXBpZW50X29yZ19idWRnZXQiLCJyZWNpcGllbnRfb3JnIiwicmVjaXBpZW50X29yZ19pbmRleCIsIm5hcnJhdGl2ZV9pbmRleCIsInJlY2lwaWVudF9yZWdpb25fYnVkZ2V0IiwicmVjaXBpZW50X3JlZ2lvbiIsInRvdGFsX2J1ZGdldCIsInRvdGFsX2J1ZGdldF9zdGF0dXMiLCJ0b3RhbF9leHBlbmRpdHVyZSIsImV4cGVuc2VfbGluZSIsImxpbmtlZF9kYXRhX3VyaSIsImRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlIiwiX2NvbXBvbmVudF9TZXR0aW5nUHVibGlzaGluZ0Zvcm0iLCJfY29tcG9uZW50X1NldHRpbmdEZWZhdWx0Rm9ybSIsImFjdGl2ZV9fdGFiIiwib25TdWJtaXRQdWJsaXNoaW5nIiwiX2NvbXBvbmVudF9TaGltbWVyTG9hZGluZyIsImlzVmVyaWZpY2F0aW9uUmVxdWVzdGVkIiwidGFnX19jb3JyZWN0IiwidGFnX19wZW5kaW5nIiwidGFnX19pbmNvcnJlY3QiLCJwa2ciLCJ2ZXJzaW9uIiwibGF0ZXN0IiwiX2NvbXBvbmVudF9EYXRlUmFuZ2VXaWRnZXQiLCJfY29tcG9uZW50X1BvcHVwTW9kYWwiLCJ0YWdnYWJsZSIsIm9uVHJpZ2dlclNldERhdGVUeXBlIiwib25EYXRlQ2xlYXJlZCIsImFsbF9hY3Rpdml0aWVzX2NvdW50Iiwidk1vZGVsRHluYW1pYyIsIl9jb21wb25lbnRfRW1haWxWZXJpZmljYXRpb24iLCJlcnJvcl9rZXkiLCJvblVwZGF0ZU1vZGVsVmFsdWUiLCJmb3JtX19pbnB1dCIsIm9uRm9jdXMiLCJ3aXRoTW9kaWZpZXJzIiwidnVlX19zZWxlY3QiLCJfY29tcG9uZW50X1N0cm9uZyIsImVycm9yX2lucHV0IiwiX2NvbXBvbmVudF9OYXZEcm9wZG93biIsInZ1ZTNfc21vb3RoX3Njcm9sbF8xIiwic3ZnX3Z1ZTNfMSIsIldlYkhlYWRlcl92dWVfMSIsIldlYkZvb3Rlcl92dWVfMSIsIkFkbWluRm9vdGVyX3Z1ZV8xIiwiV2VsY29tZVBhZ2VfdnVlXzEiLCJSZWdpc3RlclBhZ2VfdnVlXzEiLCJBYm91dFBhZ2VfdnVlXzEiLCJTdXBwb3J0UGFnZV92dWVfMSIsIklhdGlTdGFuZGFyZF92dWVfMSIsIlB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEiLCJJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xIiwiUmVzdWx0RGV0YWlsX3Z1ZV8xIiwiUmVzdWx0TGlzdF92dWVfMSIsIkluZGljYXRvckRldGFpbF92dWVfMSIsIkluZGljYXRvckxpc3RfdnVlXzEiLCJQZXJpb2RzRGV0YWlsX3Z1ZV8xIiwiUGVyaW9kc0xpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkxpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkRldGFpbF92dWVfMSIsIkRlc2NyaXB0aW9uRm9ybV92dWVfMSIsIkVsZW1lbnRzTm90ZV92dWVfMSIsIkFjdGl2aXR5SW5kZXhfdnVlXzEiLCJBZG1pbkhlYWRlcl92dWVfMSIsIkFjdGl2aXR5RGV0YWlsX3Z1ZV8xIiwiU2lkZWJhckhlbHBCbG9ja192dWVfMSIsIkFjdGl2aXR5VXBsb2FkX3Z1ZV8xIiwiQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEiLCJEYXNoYm9hcmRQYWdlX3Z1ZV8xIiwiSW1wb3J0TGlzdF92dWVfMSIsIlhsc0xpc3RfdnVlXzEiLCJTZXR0aW5nUGFnZV92dWVfMSIsIkFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xIiwiUmVzZXRQYWdlX3Z1ZV8xIiwiUGFzc3dvcmRSZWNvdmVyeV92dWVfMSIsIlJlc2V0UGFzc3dvcmRfdnVlXzEiLCJPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uTGlzdF92dWVfMSIsIkFkbWluQmFyX3Z1ZV8xIiwiVXNlclByb2ZpbGVfdnVlXzEiLCJVc2VyTGlzdGluZ192dWVfMSIsIkF1ZGl0TGlzdGluZ192dWVfMSIsIlN5c3RlbVZlcnNpb25fdnVlXzEiLCJ2dWUzX2FwZXhjaGFydHNfMSIsImFwcCIsImNyZWF0ZUFwcCIsInVzZSIsImNvbXBvbmVudCIsImxhc3RTY3JvbGxUb3AiLCJhZmZpeFR5cGUiLCJzdGlja3lTaWRlYmFyIiwicGFyZW50V3JhcHBlciIsInN0aWNreUVsZW1lbnQiLCJmaXJzdENoaWxkIiwib2Zmc2V0SGVpZ2h0Iiwic3RpY2t5Q3VycmVudFRvcCIsInN0aWNreUN1cnJlbnRCb3R0b20iLCJlbFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJlbFNjcm9sbExlZnQiLCJlbFNjcm9sbFRvcCIsImVsU2Nyb2xsQm90dG9tIiwidmlld3BvcnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24iLCJwYWdlWU9mZnNldCIsInRhcmdldFNjcm9sbFBvc2l0aW9uIiwiZWxQYXJlbnQiLCJjbG9zZXN0IiwiZWxQYXJlbnRCb3R0b20iLCJpc1Njcm9sbERvd24iLCJpc1Njcm9sbFVwIiwic2Nyb2xsRG93blN0aWNreUJvdHRvbSIsInNjcm9sbERvd25TdGlja3lUb3AiLCJzY3JvbGxEb3duU3RpY2t5VHJhbnNsYXRlIiwic2Nyb2xsRG93bkZpeGVkVG9wIiwic2Nyb2xsRG93blN0aWNreU5vbmUiLCJzY3JvbGxEb3duU3RpY2t5Qm91bmQiLCJoYW5kbGVTY3JvbGxEb3duIiwic2Nyb2xsVXBTdGlja3lUb3AiLCJzY3JvbGxVcFN0aWNreUJvdHRvbSIsInNjcm9sbFVwRml4ZWRUb3AiLCJzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSIsInNjcm9sbFVwU3RpY2t5Qm91bmQiLCJoYW5kbGVTY3JvbGxVcCIsImJvcmRlciIsImRpcmVjdGl2ZSIsIm1vdW50ZWQiLCJiaW5kaW5nIiwidW5tb3VudGVkIiwicGFyZW50IiwibW91bnQiLCJjb3JlRWxlbWVudHNfanNvbl8xIiwiZm9ybWF0X2RhdGUiLCJjcnlwdG9fanNfMSIsImVuY3J5cHQiLCJpdiIsImxpYiIsIldvcmRBcnJheSIsInJhbmRvbSIsInNhbHQiLCJpdGVyYXRpb25zIiwiZW5jcnlwdE1ldGhvZExlbmd0aCIsImhhc2hLZXkiLCJQQktERjIiLCJoYXNoZXIiLCJhbGdvIiwiU0hBNTEyIiwia2V5U2l6ZSIsImVuY3J5cHRlZCIsIkFFUyIsIkNCQyIsImVuY3J5cHRlZFN0cmluZyIsImVuYyIsIkJhc2U2NCIsImNpcGhlcnRleHQiLCJvdXRwdXQiLCJIZXgiLCJVdGY4IiwiZGF0YV8xIiwic2VudGVuY2VDYXNlVG9LZWJhYkNhc2UiLCJyZWR1Y2VEb2N1bWVudExpbmsiLCJuYW5vaWRfMSIsImRvY3VtZW50Q291bnQiLCJkb2N1bWVudF8xIiwid29yZHMiLCJzZW50ZW5jZSIsIm1heExlbmd0aCIsInN1YnN0cmluZyIsInNuYWtlQ2FzZVN0cmluZyIsInJhbmRvbURpZ2l0cyIsImN1c3RvbUFscGhhYmV0IiwiZGVwcmVjYXRlZFN0YXR1cyIsImNsc3hfMSIsInRhaWx3aW5kX21lcmdlXzEiLCJpbnB1dHMiLCJ0d01lcmdlIiwiY2xzeCIsInZ1ZXhfMSIsIm1heGltaXplWGxzIiwiYWN0aXZpdHlfdGl0bGUiLCJtdXRhdGlvbnMiLCJtdXRhdGVTZWxlY3RlZEFjdGl2aXRpZXMiLCJwYXlsb2FkIiwibXV0YXRlQ2xvc2VYbHNNb2RlbCIsIm11dGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMiLCJtdXRhdGVCdWxrUHVibGlzaExlbmd0aCIsIm11dGF0ZUNhbmNlbFVwbG9hZCIsIm11dGF0ZU1heGltaXplWGxzIiwibXV0YXRlU3RhcnRYbHNEb3dubG9hZCIsIm11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJtdXRhdGVDYW5jZWxEb3dubG9hZCIsIm11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsIm11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJtdXRhdGVTdGFydFZhbGlkYXRpb24iLCJtdXRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcyIsIm11dGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24iLCJtdXRhdGVQdWJsaXNoUmV0cnkiLCJhY3Rpb25zIiwiY29tbWl0IiwidXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcyIsInVwZGF0ZUNsb3NlWGxzTW9kZWwiLCJ1cGRhdGVCdWxrUHVibGlzaExlbmd0aCIsInVwZGF0ZUNhbmNlbFVwbG9hZCIsInVwZGF0ZU1heGltaXplWGxzIiwidXBkYXRlU3RhcnRYbHNEb3dubG9hZCIsInVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJ1cGRhdGVDYW5jZWxEb3dubG9hZCIsInVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJ1cGRhdGVTdGFydFZhbGlkYXRpb24iLCJ1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24iLCJ1cGRhdGVQdWJsaXNoUmV0cnkiLCJhY3Rpdml0eUxpc3RTdG9yZSIsImNyZWF0ZVN0b3JlIiwiYnVsa3B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVVblB1Ymxpc2hlZCIsIm11dGF0ZVNob3dQdWJsaXNoZWQiLCJtdXRhdGVQdWJsaXNoRXJyb3JzIiwibXV0YXRlSXNMb2FkaW5nIiwibXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJ1cGRhdGVVblB1Ymxpc2hlZCIsInVwZGF0ZVNob3dQdWJsaXNoZWQiLCJ1cGRhdGVQdWJsaXNoRXJyb3JzIiwidXBkYXRlSXNMb2FkaW5nIiwidXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJhY3Rpdml0eURldGFpbFN0b3JlIiwic3RhdGVfMSIsIm11dGF0aW9uXzEiLCJNdXRhdGlvblR5cGVzIiwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPIiwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IiLCJVUERBVEVfREVGQVVMVF9FUlJPUiIsIlVQREFURV9JU19MT0FESU5HIiwiSVNfTE9BRElORyIsIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEgiLCJCVUxLUFVCTElTSF9MRU5HVEgiLCJSZXN1bHRfdnVlXzEiLCJJYXRpSWRlbnRpZmllcl92dWVfMSIsIk90aGVySWRlbnRpZmllcl92dWVfMSIsIlRpdGxlX3Z1ZV8xIiwiRGVzY3JpcHRpb25fdnVlXzEiLCJBY3Rpdml0eURhdGVfdnVlXzEiLCJDb250YWN0SW5mb192dWVfMSIsIlBhcnRpY2lwYXRpbmdPcmdfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xIiwiUmVjaXBpZW50UmVnaW9uX3Z1ZV8xIiwiVHJhbnNhY3Rpb25zX3Z1ZV8xIiwiTG9jYXRpb25fdnVlXzEiLCJTZWN0b3JfdnVlXzEiLCJMZWdhY3lEYXRhX3Z1ZV8xIiwiQ29uZGl0aW9uc192dWVfMSIsIlJlbGF0ZWRBY3Rpdml0eV92dWVfMSIsIlBvbGljeU1hcmtlcl92dWVfMSIsIlRhZ192dWVfMSIsIkh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xIiwiUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSIsIk1lYXN1cmVfdnVlXzEiLCJJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEiLCJBZ2dyZWdhdGlvblN0YXR1c192dWVfMSIsIlJlZmVyZW5jZV92dWVfMSIsIkRvY3VtZW50TGlua192dWVfMSIsIkJhc2VsaW5lX3Z1ZV8xIiwiUGVyaW9kX3Z1ZV8xIiwiVGFyZ2V0VmFsdWVfdnVlXzEiLCJBY3R1YWxWYWx1ZV92dWVfMSIsIlRpdGxlRGVzY3JpcHRpb25fdnVlXzEiLCJSZXN1bHRUeXBlX3Z1ZV8xIiwiQWlkVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uRGF0ZV92dWVfMSIsIlZhbHVlX3Z1ZV8xIiwiUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEiLCJSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSIsIkRpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEiLCJGbG93VHlwZV92dWVfMSIsIkZpbmFuY2VUeXBlX3Z1ZV8xIiwiVGllZFN0YXR1c192dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSIsIlRvdGFsQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xIiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSIsIlRvdGFsRXhwZW5kaXR1cmVfdnVlXzEiLCJTaWduSW4iLCJKb2luTm93IiwicGFnZUNvbnRlbnQiLCJ0b2dnbGVQYWdlIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfY3JlYXRlVk5vZGUiLCJfY3JlYXRlQmxvY2siLCJfY29tcG9uZW50X1NpZ25JbiIsIl9jb21wb25lbnRfSm9pbk5vdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEIrRDtBQUNsQjtBQUNMOztBQUV2RCxDQUErRztBQUMvRyxpQ0FBaUMsNkhBQWUsQ0FBQyw4RUFBTSxhQUFhLHdGQUFNO0FBQzFFO0FBQ0EsSUFBSSxLQUFVLEVBQUUsRUFZZjs7O0FBR0QsaUVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJvUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTBCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQXBDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQXdCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbkI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0ExQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBckM7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBNU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1N0ZXBCYXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL0J1bGtQdWJsaXNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9wdWJsaXNoaW5nQWN0aXZpdHkvUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC90YWJzL1RhYkluZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC93aXphcmRTdGVwcy9XaXphcmRJbmRleC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvT3JnYW5pc2F0aW9uRGF0YVN0ZXAudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvYXBwLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS9jb3JlRWxlbWVudHMudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2RhdGVGb3JtYXQudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3RpdGxlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS91c2VTaGFyZWRMb2NhbFN0b3JhZ2UudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3V0aWxzLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvbGlicy91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9hY3Rpdml0aWVzL3Nob3cudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvYWN0aW9ucy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvbXV0YXRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9zZXR0aW5nL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWU/Nzk4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT8yMmNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzhmM2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlP2M4MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL09uQm9hcmRpbmdJbmRleC52dWU/MWFiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvRGVmYXVsdFZhbHVlc1N0ZXAudnVlPzdjZTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT85ZTYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT8zMWRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzI0ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlPzk3OGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/NmUwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlPzhhN2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT80ODhkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/YjljZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT83YmNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlP2Q1OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/N2NlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSGVscGVyVGV4dC52dWU/Y2MxZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT83ODNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzU5MzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlPzFmMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9iN2RhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT82MzExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/OWRlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9mMzVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/MTYxMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzVkYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/OGRmNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlPzUzNjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZT9iODMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT80NTExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/N2Q3ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/YjRjYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT8xOTA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlPzVmYTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlPzJkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/OGIwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzExNDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT8yNzBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3Mvd2VicG9ydGFsLWFwcC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlLyBzeW5jIF5cXC5cXC8uKiQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X2RhdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3N0YXR1cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY2FwaXRhbF9zcGVuZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbGxhYm9yYXRpb25fdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbmRpdGlvbnMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb250YWN0X2luZm8uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Nycy1hZGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2FpZF90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2lhdGlfaWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2luZGljYXRvci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9vdGhlcl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGFydGljaXBhdGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wZXJpb2Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BvbGljeV9tYXJrZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdHMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9zZWN0b3Iuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RyYW5zYWN0aW9ucy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FkZC1tb3JlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQtb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tY2VudGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tcmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcHByb3ZlZC1jbG91ZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LWRvd24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1sZWZ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctcmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1zaG9ydC1sZWZ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXNjZW5kaW5nLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYmlsbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JveC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2J1aWxkaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNsb3VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2stY2lyY2xlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tib3guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hldnJvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NpcmNsZS1yZWQtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jbG9zZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcHlyaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcmUtc3F1YXJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlbGV0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtY29kZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Ryb3Bkb3duLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC1hY3Rpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy1maWxsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXllLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncmVlbi1jaXJjbGUtdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2dyb3VwLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGFuZC13YXZlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZGVyLWxvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWFkcGhvbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWxwLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlkZS1wYXNzd29yZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpc3Rvcnkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pYy12ZXJpZmljYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pbmRpY2F0b3ItaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2tleS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xlZnQtYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvLXdoaXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ291dC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21hZ25pZnlpbmctZ2xhc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWlsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWVzc2FnZS1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWluaW1pemUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tb29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbm90ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29wZW4tbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pc2F0aW9uX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pemF0aW9uX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnlfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9vcmdfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90aXRsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfZXhwZW5kaXR1cmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wYW5lbC1zZWFyY2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wZXJpb2QtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BsdXMtb3V0bGluZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHJvZ3Jlc3MtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3B1Ymxpc2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWRvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVzdWx0LWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yaWdodC1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JvY2tldC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2VhcmNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2V0dGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NoaWVsZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NpbmdsZS1kb3Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zbWlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtYXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0ZXAtdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stY2xvdWQtc3F1YXJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2tlZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpbWVzLWNpcmNsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3R3aXR0ZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cC1hcnJvdy1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXBsb2FkLWZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLXByb2ZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1hY3Rpdml0eS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctZmlsbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5pZy1hY3Rpdml0eS1yZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy95b3V0dWJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlPzQ5YzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/OTcwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT81Yjk3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT8zYzNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9PbkJvYXJkaW5nSW5kZXgudnVlP2ZhOTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT9jYTkyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/ZWMyYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/YzcxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT8wMmNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9hYmNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlPzViNDkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT9mMjVkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/ZjU3NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2Y2ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/MWIyZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT83OTI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlPzg4OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlP2VlYWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/Yjc3ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT82ODc0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT9mZDg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/YjRiYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/Y2U5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlPzZhMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/NWQyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlP2I2MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT9lM2U3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzJlOGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT9iM2UxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWU/MWI2NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NzczNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP2ZlYWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP2M0ZmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/NmNkNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT84MWQ1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT8wZWFiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlP2Q2MGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT82OWIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/ZDM4MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWU/NGY2OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZT9lMmI4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/M2MyZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnJlYWRDcnVtYi52dWU/YWExZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT84MGYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlPzdhOTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWU/NmYxMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT9jNjk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlPzE0MTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/ZTFkMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWU/MzJmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSGVscGVyVGV4dC52dWU/Njk1NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT9hMmU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWU/YTE1YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT80MmI3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP2Y1NTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZT9hZTBjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT9lZDMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWU/NzRhNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlPzI2N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWU/YTBjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU3RlcEJhci52dWU/NDNjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlPzViMWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/MjdiMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8zOTFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzAxMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/NmE1YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT84MmJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/NmU0MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT8yNDdjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlP2E4ZDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT80MWEyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlPzhjOTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzg4OGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/OTM2MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/OTE3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT9lMmYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/ZmRjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9hZmNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/ZjI0NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/NTA2YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlP2RhNTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT9mODczIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP2Q0YTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/OTQ2NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzA0NmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/OGU2ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlPzM5ZGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZT85MWJhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvQnVsa1B1Ymxpc2gudnVlPzNkZjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT80MmZlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvY2hlY2tpbmdBY3Rpdml0aWVzL0NoZWNraW5nQWN0aXZpdGllcy52dWU/NjE0YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2lhdGlWYWxpZGF0ZS9JYXRpVmFsaWRhdGUudnVlPzQ4M2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9wdWJsaXNoaW5nQWN0aXZpdHkvUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT9kNTU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL3RhYnMvVGFiSW5kZXgudnVlPzBjZTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvd2l6YXJkU3RlcHMvV2l6YXJkSW5kZXgudnVlPzBkZDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlPzJmMGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZT9jMThlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlPzYwNzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/NmI1YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT81OWJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSWF0aUlkZW50aWZpZXIudnVlPzJkNzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZT9iOGRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlPzJiYmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlPzcyM2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT84OThiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWU/MGRjNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWU/OGViOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlPzgxMGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlP2JiODgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlPzVlOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlPzNiZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlPzE4ZGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlPzIyNzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlPzhkMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWU/YzNlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWU/NTAyNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZT80OTA2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZT8wOTU4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWU/NDFiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlPzgwNjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT85NzllIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzRkODciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWU/NDZkNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWU/MWM2YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUGVyaW9kLnZ1ZT8yZTc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlP2FiNzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZT8wMTMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9PbkJvYXJkaW5nSW5kZXgudnVlPzJkMzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWU/ODMxMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvRGVmYXVsdFZhbHVlc1N0ZXAudnVlPzc2MzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT82MTEyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZT82YjE4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT83NWUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZT8yMTZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlPzQ3NDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT8xMTJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZT80NmE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWU/NTQxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWU/MjExYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlPzM4ODYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/NzA0NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWU/ZTY0YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlP2MzMmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZT80ZWE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9UYXJnZXRWYWx1ZS52dWU/MmM5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZT80N2VlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZT8zZWYxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZT84YjNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzdkMTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWU/ODVlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT8yOTMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZXN1bHRUeXBlLnZ1ZT9mM2Y0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZT9lMDlhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT81OGYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/ZGI1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlPzE1MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWU/MzJmOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/MTk1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT84MWQxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0ZpbmFuY2VUeXBlLnZ1ZT80YTg0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Zsb3dUeXBlLnZ1ZT83MTM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT8zMTUxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT82MmVjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlPzAxNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9kZjYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1NlY3Rvci52dWU/YWIzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UaWVkU3RhdHVzLnZ1ZT83OGQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWU/ZTg5ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlPzgzY2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVmFsdWUudnVlPzExODciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlPzk2ZjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlPzZmZDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlPzQwOWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWU/YmM2ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlPzY1MzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlP2Y4NzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlPzE1MzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/ZmY4ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRQbGFjZWhvbGRlci52dWU/MWE1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/ZTYxNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT9hYWViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlP2QyZTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP2FhNGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP2I4NzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT8wMDQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlPzM3ZWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT85ZWFiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/OWVhNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP2IxMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxCdWRnZXQudnVlP2RkMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxFeHBlbmRpdHVyZS52dWU/N2IzNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlPzljYmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlP2YxYWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZT80MzYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlPzkxNWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZT8wMTAzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP2UyNDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlP2U1MDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlPzgxOTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlPzY2NjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT8zMTE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/MDhiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlPzdiYmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZT83OGRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT9jMGE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzIzZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZT82NTJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlPzg2OWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT8xNWU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZT8wNThjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT8wZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZT80MjJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlPzVhNTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT8wMzVkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWU/YTdkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlP2FlYjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlPzMyZmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/ZGQyOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2Q0ODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlPzFiMjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/OThkOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT9lMjJmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlPzUxMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWU/ZmUyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZT9kZDFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlP2Q3YjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlPzQyODEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hlbHBlclRleHQudnVlP2Q4M2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/MTIwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT9lZThjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzU2YmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZT9iY2RlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT8zOTQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWU/MDFiOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2lkZUhlbHBUZXh0LnZ1ZT8yNDM5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TdGVwQmFyLnZ1ZT9jOTE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/YjEyZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZT82ZDNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlPzM1ZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/YmNhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTG9hZGVyLnZ1ZT8xNzQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP2ZlNTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZT84YjJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlP2ZhNWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWU/YWJlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlPzBlOGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWU/MTMzNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/MGNiNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZT84OTRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT9jYjJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlP2IyNmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT9mNzgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlPzZlOTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT8wYTBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWU/ZjQzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlPzJhZWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/NjVjMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZT9iMWUzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/YzI2ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT9mNTg4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWU/Nzc0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlP2Y5NjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9CdWxrUHVibGlzaC52dWU/Mjg5NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlPzZhNDkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZT9kMTMyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvcHVibGlzaGluZ0FjdGl2aXR5L1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/MjE3MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC90YWJzL1RhYkluZGV4LnZ1ZT9kOTM4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL3dpemFyZFN0ZXBzL1dpemFyZEluZGV4LnZ1ZT9kZTQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZT8zM2I2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWU/NTlhNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZT85ZGE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzRiZTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWU/YzI3MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZT8yNmUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWU/NzFhNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZT8zNDBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZT9hMmM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWU/NzBjMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP2ZmNGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlP2RlYjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT9kODU3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9kMzhjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZT8zZGU3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT9kNWNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZT83NGY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZT80OTZjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZT8wMzE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlPzgxMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlPzAxZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWU/OTcxNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWU/MmNjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlPzAxOGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZT8wYzJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/ZmY4ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT80NDI0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlPzEzYWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlP2VhZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWU/MzhmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT85MjQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWU/OWZmMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZT80NGI0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9BY3Rpdml0eVN0ZXAudnVlPzhmOWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT80N2RkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/ODViMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvU3RlcHMvUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/YzUyMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/OGM5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWU/NWM1MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT9jMjBkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/OTQyNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWU/MDYxNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlPzI4MWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlPzlkMWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZT8wZGY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzYzNDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlPzdhODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZT82NzQzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWU/MzMwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlPzE2YjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWU/MGE5YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWU/ODUxYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWU/NmE3MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT9hY2NkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlPzBiNzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/NjNhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWU/MTYzMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWU/NWUzMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWU/MmU1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlPzUzYjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZT85MjA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlPzM0NzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzgzZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/MWU1MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWU/NWRjMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWU/YjVkNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/ODgwYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/OWM0NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT9jNWFhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/NGJiNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlPzZmODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWU/ODI3OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlPzBiOTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZT80NTRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZT84YmY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZT8yOWQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZT8yZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT82MmRlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlP2Q5NzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT9lOTc3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZT9jZjY1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT83NTFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzg1NDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlPzJhYjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2M5NjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/ZDVjOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT9iMzI5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT84NzhiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT9hYzRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NTM5MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT83YTAyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/NmFmMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlPzA5ODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT9hMDc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZT80YmFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlPzUxZDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlP2U4YjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZT9lZTQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlPzg1ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZT9mMGUzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlPzNmMzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlPzQ0MGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlPzE4NmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlPzQyNGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT9lNWU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/MGI2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlPzkwZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlPzVhMTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/N2NiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlPzA2YTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/ZjYzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzk4NjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlP2I4N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT82M2QzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWU/ODJlNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlPzAyZjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT9hNmFhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT9jNjYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy8gc3luYyBeXFwuXFwvLiokIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eURvd25sb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dSZXRyeURvd25sb2FkTW9kZWwgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRvd25sb2FkRmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiXCIuY29uY2F0KGRvd25sb2FkQXBpVXJsLnZhbHVlLnNwbGl0KClbMF0uc3BsaXQoJy8nKVszXSwgXCIvXCIpLmNvbmNhdChkb3dubG9hZEFwaVVybC52YWx1ZS5zcGxpdCgpWzBdLnNwbGl0KCcvJylbNF0pO1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhcGlVcmwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLnNwbGl0KCdmaWxlbmFtZT0nKVsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXMuZGF0YV0sIHt9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5RG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICBzaG93UmV0cnlEb3dubG9hZE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJ2FjdGl2aXRpZXMvcmV0cnkteGxzLWRvd25sb2FkJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9ICdjYW5jZWxsZWQnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvY2FuY2VsLXhscy1kb3dubG9hZCcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChmaWxlQ291bnQudmFsdWUgLyA0KSAqIDEwMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZmlsZUNvdW50Jyk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNEb3dubG9hZFN0YXR1cycpO1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZG93bmxvYWRBcGlVcmwnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBzaG93UmV0cnlEb3dubG9hZE1vZGVsOiBzaG93UmV0cnlEb3dubG9hZE1vZGVsLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgZG93bmxvYWRGaWxlOiBkb3dubG9hZEZpbGUsIHJldHJ5RG93bmxvYWQ6IHJldHJ5RG93bmxvYWQsIGNhbmNlbERvd25sb2FkOiBjYW5jZWxEb3dubG9hZCwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIGZpbGVDb3VudDogZmlsZUNvdW50LCB4bHNEb3dubG9hZFN0YXR1czogeGxzRG93bmxvYWRTdGF0dXMsIGRvd25sb2FkQXBpVXJsOiBkb3dubG9hZEFwaVVybCwgc3Bpbm5lckxvYWRlcjogc3Bpbm5lckxvYWRlcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi9saWJzL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5VmFsaWRhdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdmFsaWRhdGlvblN0YXRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbk5hbWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlcnJvclRhYjoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydzdG9wVmFsaWRhdGlvbicsICdwcm9jZWVkJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIC8vc2V0dGluZyBwZXJjZW50YWdlIG9mIHZhbGlkYXRpb24gcHJvZ3Jlc3NiYXIgLCB0byBtYWludGFpbiBjb25zaXN0ZW5jeSB3aGVuIHBhZ2UgaXMgcmVsb2FkZWQgb3IgbmF2aWdhdGVkXG4gICAgICAgIHZhciBoYXNFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy9zZXR0aW5nIGRhdGEgZnJvbSBsb2NhbCBzdG9yYWdlIHRvIHZ1ZXggLHRvIHByZXNlcnZlIHN0YXRlIHdoZW4gd2luZG93IGlzIHJlbG9hZGVkXG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vdG8gY2hlY2sgaWYgdmFsaWRhdGlvbiBuZWVkIHRvIGJlIHNob3cgb2Ygbm90IHdoZW4gbmF2aWdhdGVkIG9yIHJlZnJlc2hlZFxuICAgICAgICAgICAgdmFyIHNob3dQb3B1cCA9IEJvb2xlYW4obG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpKTtcbiAgICAgICAgICAgIGlmIChzaG93UG9wdXApIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRWYWxpZGF0aW9uJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYWN0aXZpdGllc0lkcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgaWYgKGFjdGl2aXRpZXNJZHMpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXMnLCBhY3Rpdml0aWVzSWRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuZXJyb3JUYWI7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaGFzRXJyb3IudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB2YWxpZGF0aW9uQ2FuY2VsSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdzdG9wVmFsaWRhdGlvbicpO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9kZWxldGUtdmFsaWRhdGlvbi1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydENvcmVWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXMnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnB1Ymxpc2hBbGVydFZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpLCB7IGNvbXBsZXRlOiAwLCB0b3RhbDogMCwgZmFpbGVkOiAwIH0pIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5jb21wbGV0ZWRTdGVwcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgIGVtaXQoJ3Byb2NlZWQnKTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICgoKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmNvbXBsZXRlICtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5mYWlsZWQpIC9cbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCkgKlxuICAgICAgICAgICAgICAgIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaGFuZGxlTWluaW1pemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5pc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCcsICdmYWxzZScpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdG90YWxWYWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pbXBvcnRlZEFjdGl2aXRpZXNMaXN0KS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuICEoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmlzX3ZhbGlkKTsgfSkubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICAgICAgZXhwb3NlKHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25DYW5jZWxIYW5kbGVyOiB2YWxpZGF0aW9uQ2FuY2VsSGFuZGxlcixcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdHlDb3VudCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgdmFyIGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzO1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKF9hID0gYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gbnVsbCB8fCBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hpbmdTdGF0dXMgPSAoX2MgPSAoX2IgPSBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSBudWxsIHx8IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlc3BvbnNlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzO1xuICAgICAgICAgICAgdmFyIHZhbGlkYXRpb25TdGF0c1RvdGFsID0gKChfZCA9IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IG51bGwgfHwgYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50b3RhbCkgfHwgMDtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoaW5nU3RhdHVzID09PSAnY29tcGxldGVkJyB8fCBwdWJsaXNoaW5nU3RhdHVzID09PSAncHJvY2Vzc2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHB1Ymxpc2hpbmdBY3Rpdml0aWVzKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25TdGF0c1RvdGFsID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHNUb3RhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGhhc0Vycm9yOiBoYXNFcnJvciwgdmFsaWRhdGlvbkNhbmNlbEhhbmRsZXI6IHZhbGlkYXRpb25DYW5jZWxIYW5kbGVyLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgaGFuZGxlTWluaW1pemU6IGhhbmRsZU1pbmltaXplLCB0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzOiB0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzLCBwdWJsaXNoaW5nQWN0aXZpdHlDb3VudDogcHVibGlzaGluZ0FjdGl2aXR5Q291bnQsIGNuOiB1dGlsc18xLmNuIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWRtaW5IZWFkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvbmJvYXJkaW5nOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdiA9PT0gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBoYXNBZG1pbkJhcjogeyB0eXBlOiBOdW1iZXIgfHwgQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dVc2VyRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZXJyb3JUb2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBlcnJvclRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxhbmd1YWdlTmF2TGlDbGFzc2VzOiAnZmxleCcsXG4gICAgICAgICAgICBsYW5ndWFnZU5hdkFuY2hvckNsYXNzZXM6ICdmbGV4IHRleHQtd2hpdGUgaXRlbXMtY2VudGVyIHVwcGVyY2FzZSBuYXZfX3BvaW50ZXItaG92ZXIgcHgtMS41JyxcbiAgICAgICAgICAgIG1lbnVOYXZMaUNsYXNzZXM6ICdmbGV4IHB4LTQgcmVsYXRpdmUnLFxuICAgICAgICAgICAgbWVudU5hdkFuY2hvckNsYXNzZXM6ICdmbGV4IHRleHQtd2hpdGUgaXRlbXMtY2VudGVyIHVwcGVyY2FzZSBuYXZfX3BvaW50ZXItaG92ZXInLFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0VOJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdGUicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJyMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0VTJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBvcmdfbWVudXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBY3Rpdml0eSBEQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdPcmdhbmlzYXRpb24gREFUQScsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9vcmdhbmlzYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvc2V0dGluZycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBZGQgLyBJbXBvcnQgQWN0aXZpdHknLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcjJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL3VzZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN1cGVyYWRtaW5fbWVudXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdEYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvZGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ09yZ2FuaXNhdGlvbiBMaXN0JyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xpc3Qtb3JnYW5pc2F0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdVc2VycycsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy91c2VycycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBuYW1lOiAnTG9ncycsXG4gICAgICAgICAgICAgICAgLy8gICBwZXJtYWxpbms6ICcvc3lzdGVtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgIC8vICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuaXNMb2FkaW5nOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxpQ2xhc3MgPSAnYmxvY2sgcC0yLjUgdGV4dC1uLTQwIHRleHQtdGlueSB1cHBlcmNhc2UgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6IXRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfY1swXSwgbW9kYWxUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgZnVuY3Rpb24gdG9hc3QobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gbWVzc2FnZTtcbiAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzVG91Y2hEZXZpY2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIFRvZ2dsZU1vZGVsKCkge1xuICAgICAgICAgICAgbW9kYWxUb2dnbGUoKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb3BlbkFkZE1vZGVsJyk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWN0aXZlTWVudSgpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICAgICAgZGF0YS5vcmdfbWVudXMuZm9yRWFjaChmdW5jdGlvbiAobWVudSwga2V5KSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNba2V5XVsnYWN0aXZlJ10gPSBtZW51LnBlcm1hbGluayA9PT0gcGF0aCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2FjdGl2aXR5JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdyZXN1bHQnKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2luZGljYXRvcicpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbMF1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdvcmdhbmlzYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnaW1wb3J0JykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1szXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2Rhc2hib2FyZCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygndXNlcnMnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzRdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnbGlzdC1vcmdhbmlzYXRpb25zJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN1cGVyYWRtaW5fbWVudXNbMV1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdzeXN0ZW0tdmVyc2lvbicpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygnbG9nLXZpZXdlcicpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygnbGluazMnKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbms0JykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN1cGVyYWRtaW5fbWVudXNbMl1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBsb2NhbCBzdG9yYWdlIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBsb2dvdXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQucG9zdCgnL2xvZ291dCcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdpc01vZGVsQ2xvc2VDbGlja2VkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyksIHNlYXJjaCA9IHVybFBhcmFtcy5nZXQoJ3EnKTtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gc2VhcmNoO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzcGlubmVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VhcmNoRnVuY3Rpb24gPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzcGlubmVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbSA9IChfYSA9IHNlYXJjaFZhbHVlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVwbGFjZSgnIycsICcnKTtcbiAgICAgICAgICAgIHZhciBzb3J0aW5nUGFyYW0gPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykgJiYgY3VycmVudFVSTC5pbmNsdWRlcygnJicpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmdBcnIgPSBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIHNvcnRpbmdQYXJhbSA9ICcmJyArIHF1ZXJ5U3RyaW5nQXJyLnNsaWNlKDEpLmpvaW4oJyYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBocmVmID0gcGFyYW1cbiAgICAgICAgICAgICAgICA/IFwiXCIuY29uY2F0KHVybCwgXCI/cT1cIikuY29uY2F0KHBhcmFtKS5jb25jYXQoc29ydGluZ1BhcmFtKVxuICAgICAgICAgICAgICAgIDogcHJvcHMuc3VwZXJBZG1pblxuICAgICAgICAgICAgICAgICAgICA/ICcvbGlzdC1vcmdhbmlzYXRpb25zJ1xuICAgICAgICAgICAgICAgICAgICA6ICcvYWN0aXZpdGllcy8nO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0U3RhcnRlZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpc01vZGVsQ2xvc2VDbGlja2VkLCBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kZWxDbG9zZUNsaWNrZWQgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCdpc01vZGVsQ2xvc2VDbGlja2VkJywgZmFsc2UsIHNlc3Npb25TdG9yYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5wb3N0KCcvb3JnYW5pc2F0aW9uLW9uYm9hcmRpbmcvdG9nZ2xlLWRvbnQtc2hvdy8nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kZWxDbG9zZUNsaWNrZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2lzRm9yY2VPcGVuTW9kYWwnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAoZXJyb3JUb2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2FzdE1lc3NhZ2UudmFsdWUgPSAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVG9hc3RUeXBlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGFuZ2VBY3RpdmVNZW51KCk7XG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ29wZW5BZGRNb2RlbCcpID09PSAndHJ1ZScgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvYWN0aXZpdGllcycpIHtcbiAgICAgICAgICAgICAgICBtb2RhbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWRpcmVjdFByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcHJvZmlsZSc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdkZWZhdWx0TGFuZ3VhZ2UnLCBwcm9wcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHByb3BzOiBwcm9wcywgc2hvd1VzZXJEcm9wZG93bjogc2hvd1VzZXJEcm9wZG93biwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIGlzTG9hZGluZzogaXNMb2FkaW5nLCBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgZXJyb3JUb2FzdFZpc2liaWxpdHk6IGVycm9yVG9hc3RWaXNpYmlsaXR5LCBlcnJvclRvYXN0TWVzc2FnZTogZXJyb3JUb2FzdE1lc3NhZ2UsIGVycm9yVG9hc3RUeXBlOiBlcnJvclRvYXN0VHlwZSwgZGF0YTogZGF0YSwgbGlDbGFzczogbGlDbGFzcywgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSwgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLCB0b2FzdDogdG9hc3QsIGlzVG91Y2hEZXZpY2U6IGlzVG91Y2hEZXZpY2UsIFRvZ2dsZU1vZGVsOiBUb2dnbGVNb2RlbCwgY2hhbmdlQWN0aXZlTWVudTogY2hhbmdlQWN0aXZlTWVudSwgcGE6IHBhLCBsb2dvdXQ6IGxvZ291dCwgc2VhcmNoVmFsdWU6IHNlYXJjaFZhbHVlLCBjdXJyZW50VVJMOiBjdXJyZW50VVJMLCBzcGlubmVyOiBzcGlubmVyLCBzZWFyY2hGdW5jdGlvbjogc2VhcmNoRnVuY3Rpb24sIGdldFN0YXJ0ZWQ6IGdldFN0YXJ0ZWQsIHJlZGlyZWN0UHJvZmlsZTogcmVkaXJlY3RQcm9maWxlLCBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQnJlYWRDcnVtYicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCwgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQnVsa3B1Ymxpc2hMb2FkZXJDYXJkJyxcbiAgICBlbWl0czogW1xuICAgICAgICAnY2xvc2UnLFxuICAgICAgICAndG9nZ2xlJyxcbiAgICAgICAgJ2FjdGl2aXR5UHVibGlzaGVkRGF0YScsXG4gICAgICAgICdoaWRlTG9hZGVyJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaExlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgb3Blbk1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGFTdG9yYWdlID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHt9LFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHt9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoKF9jID0gcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZnJlc2hUb2FzdE1zZycpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYXNGYWlsZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICBlbWl0KCdoaWRlTG9hZGVyJyk7XG4gICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXM7XG4gICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPVxuICAgICAgICAgICAgICAgIChfYyA9IChfYiA9IChfYSA9IHBhU3RvcmFnZSA9PT0gbnVsbCB8fCBwYVN0b3JhZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhU3RvcmFnZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc3RhdHVzKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHN0b3JlLnN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoO1xuICAgICAgICAgICAgdmFyIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UucHVibGlzaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdhY3Rpdml0eVB1Ymxpc2hlZERhdGEnLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkLnZhbHVlID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllcyhwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBoYXNGYWlsZWRBY3Rpdml0aWVzID09PSBudWxsIHx8IGhhc0ZhaWxlZEFjdGl2aXRpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2VUeXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU29tZSBhY3Rpdml0aWVzIGhhdmUgZmFpbGVkIHRvIHB1Ymxpc2guIFJlZnJlc2ggdG8gc2VlIGNoYW5nZXMuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQsIGNoZWNrU3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGF0dXMgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdhY3Rpdml0eVB1Ymxpc2hlZERhdGEnLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdjbG9zZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ2FjdGl2aXR5UHVibGlzaGVkRGF0YScsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F2aW5nIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UuZGF0YS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXMgPSBmdW5jdGlvbiAobmVzdGVkT2JqZWN0KSB7XG4gICAgICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllc0lEID0gW107XG4gICAgICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBuZXN0ZWRPYmplY3QgJiYgT2JqZWN0LmVudHJpZXMobmVzdGVkT2JqZWN0KTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhID09PSBudWxsIHx8IGFzQXJyYXlEYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBPYmplY3QudmFsdWVzKHZhbHVlKS5pbmRleE9mKCdmYWlsZWQnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXNJRC5wdXNoKHZhbHVlLmFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzRGF0YSA9IGZpbHRlcmVkICYmIE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICBpZiAoKGZhaWxlZEFjdGl2aXRpZXNJRCA9PT0gbnVsbCB8fCBmYWlsZWRBY3Rpdml0aWVzSUQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZhaWxlZEFjdGl2aXRpZXNJRC5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IGZhaWxlZEFjdGl2aXRpZXNJRDtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPSBmYWlsZWRBY3Rpdml0aWVzRGF0YTtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2VUeXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgJ1NvbWUgYWN0aXZpdGllcyBoYXZlIGZhaWxlZCB0byBwdWJsaXNoLiBSZWZyZXNoIHRvIHNlZSBjaGFuZ2VzLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID0gW107XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2FjdGl2aXRpZXMudmFsdWUsIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGFjdGl2aXRpZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdoaWRlTG9hZGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RGF0YVRvTG9jYWxzdG9yYWdlKCk7XG4gICAgICAgICAgICBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBvcGVuTW9kZWwudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gZW1pdCgndG9nZ2xlJywgdmFsdWUpOyB9KTtcbiAgICAgICAgdmFyIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWxrUHVibGlzaEFjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSAoMCwgdXRpbHNfMS5pc0pzb24pKGFjdGl2aXRpZXMudmFsdWUpICYmIEpTT04ucGFyc2UoYWN0aXZpdGllcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJywgSlNPTi5zdHJpbmdpZnkocGFTdG9yYWdlLnZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgc3RhdHVzXzEgaW4gcHVibGlzaGluZ0FjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHVibGlzaGluZ0FjdGl2aXRpZXNbc3RhdHVzXzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHBhOiBwYSwgYnVsa1B1Ymxpc2hMZW5ndGg6IGJ1bGtQdWJsaXNoTGVuZ3RoLCBvcGVuTW9kZWw6IG9wZW5Nb2RlbCwgcGFTdG9yYWdlOiBwYVN0b3JhZ2UsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgY29tcGxldGVkOiBjb21wbGV0ZWQsIGVtaXQ6IGVtaXQsIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBoYXNGYWlsZWRBY3Rpdml0aWVzOiBoYXNGYWlsZWRBY3Rpdml0aWVzLCBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhOiBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhLCBidWxrUHVibGlzaFN0YXR1czogYnVsa1B1Ymxpc2hTdGF0dXMsIGZhaWxlZEFjdGl2aXRpZXM6IGZhaWxlZEFjdGl2aXRpZXMsIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlOiBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSwgc2V0RGF0YVRvTG9jYWxzdG9yYWdlOiBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UsIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXM6IGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdCdWxrcHVibGlzaFdpdGhYbHMnLFxuICAgIGVtaXRzOiBbXG4gICAgICAgICdjbG9zZScsXG4gICAgICAgICd0b2dnbGUnLFxuICAgICAgICAnYWN0aXZpdHlQdWJsaXNoZWREYXRhJyxcbiAgICAgICAgJ2hpZGVMb2FkZXInLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2IsIF9jO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGJ1bGtQdWJsaXNoTGVuZ3RoID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBvcGVuTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwYVN0b3JhZ2UgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgIHN0YXR1czoge30sXG4gICAgICAgICAgICAgICAgYWN0aXZpdGllczoge30sXG4gICAgICAgICAgICAgICAgbWVzc2FnZToge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSgoX2MgPSBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1snYWN0aXZpdGllcyddKTtcbiAgICAgICAgdmFyIGNvbXBsZXRlZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVmcmVzaFRvYXN0TXNnJyk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnaGlkZUxvYWRlcicpO1xuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlID0gc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzO1xuICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoX2MgPSAoX2IgPSAoX2EgPSBwYVN0b3JhZ2UgPT09IG51bGwgfHwgcGFTdG9yYWdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnN0YXR1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDtcbiAgICAgICAgICAgIHZhciBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5yZXNwb25zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ2FjdGl2aXR5UHVibGlzaGVkRGF0YScsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F2aW5nIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UuZGF0YS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQudmFsdWUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gWzEsIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKF9iID0gKF9hID0gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pZHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTb21lIGFjdGl2aXRpZXMgaGF2ZSBmYWlsZWQgdG8gcHVibGlzaC4gUmVmcmVzaCB0byBzZWUgY2hhbmdlcy4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FjdGl2aXR5IGhhcyBiZWVuIHB1Ymxpc2hlZCBzdWNjZXNzZnVsbHksIHJlZnJlc2ggdG8gc2VlIGNoYW5nZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCwgY2hlY2tTdGF0dXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdkYXRhJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5yZXNwb25zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmFjdGl2aXRpZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgnYWN0aXZpdHlQdWJsaXNoZWREYXRhJywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F2aW5nIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzICE9PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHJldHJ5UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMV07XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcucmVzcG9uc2UgPSBudWxsO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZ1xuICAgICAgICAgICAgICAgIC5oYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhW2tleV0uc3RhdHVzID0gJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmFjdGl2aXRpZXMgPVxuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGE7XG4gICAgICAgICAgICAvLyBhcGkgZW5kcG9pbnQgY2FsbFxuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvYWN0aXZpdGllcy9zdGFydC1idWxrLXB1Ymxpc2g/YWN0aXZpdGllcz1bXCIuY29uY2F0KHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmlkcywgXCJdXCIpO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID1cbiAgICAgICAgICAgICAgICBmYWxzZTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9XG4gICAgICAgICAgICAgICAge307XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllcyA9IGZ1bmN0aW9uIChuZXN0ZWRPYmplY3QpIHtcbiAgICAgICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzSUQgPSBbXTtcbiAgICAgICAgICAgIHZhciBhc0FycmF5RGF0YSA9IG5lc3RlZE9iamVjdCAmJiBPYmplY3QuZW50cmllcyhuZXN0ZWRPYmplY3QpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEgPT09IG51bGwgfHwgYXNBcnJheURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIE9iamVjdC52YWx1ZXModmFsdWUpLmluZGV4T2YoJ2ZhaWxlZCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllc0lELnB1c2godmFsdWUuYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNEYXRhID0gZmlsdGVyZWQgJiYgT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIGlmICgoZmFpbGVkQWN0aXZpdGllc0lEID09PSBudWxsIHx8IGZhaWxlZEFjdGl2aXRpZXNJRCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmFpbGVkQWN0aXZpdGllc0lELmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPVxuICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzSUQ7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXNEYXRhO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAnU29tZSBhY3Rpdml0aWVzIGhhdmUgZmFpbGVkIHRvIHB1Ymxpc2guIFJlZnJlc2ggdG8gc2VlIGNoYW5nZXMuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9XG4gICAgICAgICAgICAgICAgICAgIFtdO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5oYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPVxuICAgICAgICAgICAgICAgICAgICB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDxcbiAgICAgICAgICAgICAgICAoKChfYiA9IChfYSA9IHBhU3RvcmFnZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbJ2FjdGl2aXRpZXMnXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcygoX2QgPSAoX2MgPSBwYVN0b3JhZ2UgPT09IG51bGwgfHwgcGFTdG9yYWdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kWydhY3Rpdml0aWVzJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMoKF9mID0gKF9lID0gcGFTdG9yYWdlID09PSBudWxsIHx8IHBhU3RvcmFnZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFTdG9yYWdlLnZhbHVlKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZlsnYWN0aXZpdGllcyddKVtpXVsnc3RhdHVzJ10gPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoKGNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgL1xuICAgICAgICAgICAgICAgICgoKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKSAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pLmxlbmd0aCkpICpcbiAgICAgICAgICAgICAgICAxMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcuYWN0aXZpdGllcyxcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdoaWRlTG9hZGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RGF0YVRvTG9jYWxzdG9yYWdlKCk7XG4gICAgICAgICAgICBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBvcGVuTW9kZWwudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gZW1pdCgndG9nZ2xlJywgdmFsdWUpOyB9KTtcbiAgICAgICAgdmFyIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nLmFjdGl2aXRpZXMgPVxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWxrUHVibGlzaEFjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAoMCwgdXRpbHNfMS5pc0pzb24pKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICBKU09OLnBhcnNlKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZy5hY3Rpdml0aWVzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGFUb0xvY2Fsc3RvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdidWxrUHVibGlzaEFjdGl2aXRpZXMnLCBKU09OLnN0cmluZ2lmeShwYVN0b3JhZ2UudmFsdWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRCdWxrUHVibGlzaCcsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgc3RhdHVzXzEgaW4gcHVibGlzaGluZ0FjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHVibGlzaGluZ0FjdGl2aXRpZXNbc3RhdHVzXzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlTWluaW1pemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5pc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCcsICdmYWxzZScpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0UHVibGlzaGluZ1JldHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXRyeVB1Ymxpc2hpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcGE6IHBhLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIG9wZW5Nb2RlbDogb3Blbk1vZGVsLCBwYVN0b3JhZ2U6IHBhU3RvcmFnZSwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBjb21wbGV0ZWQ6IGNvbXBsZXRlZCwgZW1pdDogZW1pdCwgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csIHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGE6IHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEsIGJ1bGtQdWJsaXNoU3RhdHVzOiBidWxrUHVibGlzaFN0YXR1cywgcmV0cnlQdWJsaXNoaW5nOiByZXRyeVB1Ymxpc2hpbmcsIGZhaWxlZEFjdGl2aXRpZXM6IGZhaWxlZEFjdGl2aXRpZXMsIGNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvbXBsZXRlZEFjdGl2aXRpZXMsIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZTogZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UsIHNldERhdGFUb0xvY2Fsc3RvcmFnZTogc2V0RGF0YVRvTG9jYWxzdG9yYWdlLCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBoYW5kbGVNaW5pbWl6ZTogaGFuZGxlTWluaW1pemUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdCdXR0b25Db21wb25lbnQnLFxuICAgIGNvbXBvbmVudHM6IHsgU3Bpbm5lckxvYWRlcjogc3Bpbm5lckxvYWRlcl92dWVfMS5kZWZhdWx0IH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzTG9hZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUxlbmd0aDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBkaXNhYmxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgYnRuVHlwZSA9ICcnO1xuICAgICAgICBpZiAocHJvcHMudHlwZSA9PT0gJ3NlY29uZGFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnc2Vjb25kYXJ5LWJ0biBmb250LWJvbGQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdvdXRsaW5lJykge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdwcmltYXJ5LW91dGxpbmUtYnRuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAncHJpbWFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAncHJpbWFyeS1idG4gZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBidG5UeXBlOiBidG5UeXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlX2Zuc18xID0gcmVxdWlyZShcImRhdGUtZm5zXCIpO1xudmFyIHZ1ZV9kYXRlcGlja2VyXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVwaWMvdnVlLWRhdGVwaWNrZXJcIikpO1xucmVxdWlyZShcIkB2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC9tYWluLmNzc1wiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXRlUmFuZ2VXaWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRyb3Bkb3duUmFuZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0RGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVMYWJlbDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0aW5nRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGVuZGluZ0RhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlTmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogW1xuICAgICAgICAndHJpZ2dlclNldERhdGVSYW5nZScsXG4gICAgICAgICd0cmlnZ2VyU2V0RGF0ZVR5cGUnLFxuICAgICAgICAnZGF0ZUNsZWFyZWQnLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzZWxlY3RlZFByZXNlbnRJbmRleCA9ICgwLCB2dWVfMi5yZWYpKDk5KTtcbiAgICAgICAgdmFyIGRhdGVSYW5nZU1haW4gPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZURyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlTmFtZSA9ICgwLCB2dWVfMi5yZWYpKHByb3BzLmRhdGVOYW1lKTtcbiAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSBwcm9wcy5kcm9wZG93blJhbmdlICYmIE9iamVjdC52YWx1ZXMocHJvcHMuZHJvcGRvd25SYW5nZSlbMF07XG4gICAgICAgIHZhciBkYXRlVHlwZUtleSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgZGF0ZVR5cGVLZXkudmFsdWUgPSBwcm9wcy5kcm9wZG93blJhbmdlICYmIE9iamVjdC5rZXlzKHByb3BzLmRyb3Bkb3duUmFuZ2UpWzBdO1xuICAgICAgICB2YXIgc2hvd1JhbmdlRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpbml0aWFsRGF0ZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuZmlyc3REYXRlOyB9KTtcbiAgICAgICAgdmFyIGZpeGVkID0gKDAsIHZ1ZV8yLnJlZikocHJvcHMuZGF0ZU5hbWUpO1xuICAgICAgICB2YXIgdG9kYXlEYXRlID0gKDAsIG1vbWVudF8xLmRlZmF1bHQpKG5ldyBEYXRlKCkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICB2YXIgc2VsZWN0ZWREYXRlID0gKDAsIHZ1ZV8yLnJlZikoW1xuICAgICAgICAgICAgbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDcpKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHZhciBkYXRlcGlja2VyID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gdG9kYXlEYXRlO1xuICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZSgnJywgdG9kYXlEYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtwcm9wcy5lbmRpbmdEYXRlLCBwcm9wcy5zdGFydGluZ0RhdGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuZW5kaW5nRGF0ZSAmJiBwcm9wcy5zdGFydGluZ0RhdGUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSBwcm9wcy5zdGFydGluZ0RhdGU7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gcHJvcHMuZW5kaW5nRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IGluZGV4O1xuICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaW5kZXhdLmNsYXNzTGlzdC5hZGQoJ3ByZXNldC1yYW5nZS1pdGVtLWFjdGl2ZScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChqICE9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tqXS5jbGFzc0xpc3QucmVtb3ZlKCdwcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY2xlYXJEYXRlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNldERhdGUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdkYXRlQ2xlYXJlZCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSA5OTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFkZEV2ZW50c0ZvckNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrKGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhbGVuZGFySXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fY2FsZW5kYXJfaXRlbScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxlbmRhckl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJdGVtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayhpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgX2xvb3BfMihpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWxlbmRhckl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX2NhbGVuZGFyX2l0ZW0nKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsZW5kYXJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNhbGVuZGFySXRlbXNbaV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2dnbGVTaG93UmFuZ2VEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gIXNob3dSYW5nZURyb3Bkb3duLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVzZXREYXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2UoJycsICcnKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSAnJztcbiAgICAgICAgICAgICAgICBmaXhlZC52YWx1ZSA9ICdBbGwgdGltZSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHsgc3VjY2VzczogdHJ1ZSB9XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHByZXNldFJhbmdlcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVG9kYXknLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZkRheSkobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB3ZWVrJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZXZWVrKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDcgZGF5cycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdWJEYXlzKShuZXcgRGF0ZSgpLCA2KSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIG1vbnRoJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mTW9udGgpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDYgbW9udGgnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKSgoMCwgZGF0ZV9mbnNfMS5zdWJNb250aHMpKG5ldyBEYXRlKCksIDYpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZNb250aCkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgeWVhcicsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mWWVhcikobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCAxMiBtb250aHMnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKSgoMCwgZGF0ZV9mbnNfMS5zdWJNb250aHMpKG5ldyBEYXRlKCksIDEyKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQWxsIHRpbWUnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbbmV3IERhdGUoaW5pdGlhbERhdGUudmFsdWUpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTsgfSk7XG4gICAgICAgIHZhciBjb252ZXJ0RGF0ZSA9IGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICB2YXIgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgdmFyIHllYXIgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB2YXIgbW9udGggPSBTdHJpbmcoZGF0ZU9iai5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgIHZhciBkYXkgPSBTdHJpbmcoZGF0ZU9iai5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoeWVhciwgXCItXCIpLmNvbmNhdChtb250aCwgXCItXCIpLmNvbmNhdChkYXkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb3BlbkNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLm9wZW5NZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZUNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVFdmVudHNPZkNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNlbGVjdERhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUuc2VsZWN0RGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZm9ybWF0ID0gZnVuY3Rpb24gKGRhdGVzKSB7XG4gICAgICAgICAgICB2YXIgdGVtcEFycmF5ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGVtcEFycmF5W2ldID0gZGF0ZXNbaV0udG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGVtcEFycmF5LmpvaW4oJyAtICcpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VEYXRlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlRGF0ZURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAoX2EgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwTW9kZWxPcGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VEYXRlRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIChfYiA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBNb2RlbE9wZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGtlZXBNb2RlbE9wZW4gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzZWxlY3RlZERhdGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVswXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzBdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMV1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCgpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2Uoc3RhcnREYXRlLCBlbmREYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZGF0ZVR5cGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVR5cGUoZGF0ZVR5cGVLZXkudmFsdWUpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3Byb3BzLmN1cnJlbnRWaWV3XTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSAnJztcbiAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gJ0FsbCB0aW1lJztcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgdHJpZ2dlclNldERhdGVSYW5nZSA9IGZ1bmN0aW9uIChzdGFydERhdGUsIGVuZERhdGUsIGZpbHRlcmVkRGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZERhdGVUeXBlID09PSB2b2lkIDApIHsgZmlsdGVyZWREYXRlVHlwZSA9ICcnOyB9XG4gICAgICAgICAgICBlbWl0KCd0cmlnZ2VyU2V0RGF0ZVJhbmdlJywgc3RhcnREYXRlLCBlbmREYXRlLCBmaWx0ZXJlZERhdGVUeXBlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5kYXRlTmFtZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBkYXRlVHlwZU5hbWUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZml4ZWQudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMF0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHZhciBlbmREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzFdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRyaWdnZXJTZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGVtaXQoJ3RyaWdnZXJTZXREYXRlVHlwZScsIGV2ZW50VHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGZpeGVkLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoX2IgPSAoX2EgPSBwcmVzZXRSYW5nZXMudmFsdWVbc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFiZWwpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICdDdXN0b20nO1xuICAgICAgICAgICAgLy8gc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSA5OTtcbiAgICAgICAgICAgIGlmIChkYXRlVHlwZU5hbWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmaXhlZC52YWx1ZSA9IGRhdGVUeXBlTmFtZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBkYXRlVHlwZU5hbWUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGN1c3RvbVBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgIHZhciBsZWZ0UG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgaWYgKGRhdGVSYW5nZU1haW4udmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZWZ0UG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCAtICgoX2IgPSAoX2EgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yaWdodCkgPlxuICAgICAgICAgICAgICAgICAgICAgICAgMTUwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IE51bWJlcigoX2MgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIC0gMzAwXG4gICAgICAgICAgICAgICAgICAgICAgICA6IE51bWJlcigoX2QgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIC0gNDIwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b3A6IE51bWJlcigoX2UgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tKSArIDIwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnRQb3NpdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93biA9IGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGRhdGVUeXBlS2V5LnZhbHVlID0ga2V5O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHNlbGVjdGVkUHJlc2VudEluZGV4OiBzZWxlY3RlZFByZXNlbnRJbmRleCwgZGF0ZVJhbmdlTWFpbjogZGF0ZVJhbmdlTWFpbiwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBkYXRlRHJvcGRvd246IGRhdGVEcm9wZG93biwgZGF0ZVR5cGVOYW1lOiBkYXRlVHlwZU5hbWUsIGRhdGVUeXBlS2V5OiBkYXRlVHlwZUtleSwgc2hvd1JhbmdlRHJvcGRvd246IHNob3dSYW5nZURyb3Bkb3duLCBlbWl0OiBlbWl0LCBpbml0aWFsRGF0ZTogaW5pdGlhbERhdGUsIGZpeGVkOiBmaXhlZCwgdG9kYXlEYXRlOiB0b2RheURhdGUsIHNlbGVjdGVkRGF0ZTogc2VsZWN0ZWREYXRlLCBkYXRlcGlja2VyOiBkYXRlcGlja2VyLCBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2s6IGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljaywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2s6IGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrLCBhZGRFdmVudHNGb3JDYWxlbmRhcjogYWRkRXZlbnRzRm9yQ2FsZW5kYXIsIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXI6IHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIsIHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duOiB0b2dnbGVTaG93UmFuZ2VEcm9wZG93biwgcmVzZXREYXRlOiByZXNldERhdGUsIHByZXNldFJhbmdlczogcHJlc2V0UmFuZ2VzLCBjb252ZXJ0RGF0ZTogY29udmVydERhdGUsIG9wZW5DYWxlbmRhcjogb3BlbkNhbGVuZGFyLCBjbG9zZUNhbGVuZGFyOiBjbG9zZUNhbGVuZGFyLCBzZWxlY3REYXRlOiBzZWxlY3REYXRlLCBmb3JtYXQ6IGZvcm1hdCwgY2xvc2VEYXRlRHJvcGRvd246IGNsb3NlRGF0ZURyb3Bkb3duLCBrZWVwTW9kZWxPcGVuOiBrZWVwTW9kZWxPcGVuLCB0cmlnZ2VyU2V0RGF0ZVJhbmdlOiB0cmlnZ2VyU2V0RGF0ZVJhbmdlLCB0cmlnZ2VyU2V0RGF0ZVR5cGU6IHRyaWdnZXJTZXREYXRlVHlwZSwgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dDogc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCwgY3VzdG9tUG9zaXRpb246IGN1c3RvbVBvc2l0aW9uLCBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93bjogc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24sIFZ1ZURhdGVQaWNrZXI6IHZ1ZV9kYXRlcGlja2VyXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0Rlc2NyaXB0aW9uRm9ybScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHt9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcIkBoZWFkbGVzc3VpL3Z1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Vycm9yTWVzc2FnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXNFbXB0eToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc2hvdyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc0Vycm9ycyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgYWNjb3VudF92ZXJpZmllZDogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHRfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICB0b2tlbl9zdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvc2V0dGluZy9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3VzZXIvdmVyaWZpY2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvb3JnYW5pc2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGF4aW9zXzEuZGVmYXVsdC5zcHJlYWQoZnVuY3Rpb24gKHNldHRpbmdfcmVzLCB1c2VyX3Jlcywgb3JnX3Jlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBzZXR0aW5nX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdXNlcl9yZXNwb25zZSA9IHVzZXJfcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmdfcmVzcG9uc2UgPSBvcmdfcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5kZWZhdWx0X3NldHRpbmcgPSAoX2EgPSByZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRfc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucHVibGlzaGVyX3NldHRpbmcgPSAoX2IgPSByZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hlcl9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50b2tlbl9zdGF0dXMgPSAoX2MgPSByZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRva2VuX3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmFjY291bnRfdmVyaWZpZWQgPSB1c2VyX3Jlc3BvbnNlLmRhdGEuYWNjb3VudF92ZXJpZmllZDtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnB1Ymxpc2hlcl9hY3RpdmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9lID0gKF9kID0gb3JnX3Jlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5wdWJsaXNoZXJfYWN0aXZlKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwZWRFcnJvciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0X3NldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxpc2hlcl9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbl9zdGF0dXMnLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJvciBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JEYXRhW2Vycm9yXSAmJiBncm91cGVkRXJyb3IuaW5kZXhPZihlcnJvcikgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGVycm9yRGF0YS5wdWJsaXNoZXJfc2V0dGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnRva2VuX3N0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmRlZmF1bHRfc2V0dGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmluZGV4T2YoZmFsc2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2hvdzogc2hvdywgaGFzRXJyb3JzOiBoYXNFcnJvcnMsIGVycm9yQ291bnQ6IGVycm9yQ291bnQsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgVHJhbnNpdGlvblJvb3Q6IHZ1ZV8zLlRyYW5zaXRpb25Sb290LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JQb3BVcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiBBcnJheSB8fCBTdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlLXBvcHVwJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlLXBvcHVwJywgJ2Nsb3NlZCcpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZW1pdDogZW1pdCwgcHJvcHM6IHByb3BzLCBjbG9zZTogY2xvc2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdIZWxwZXJUZXh0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBoZWxwZXJUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNob3dBY2NvcmRpYW5JdGVtcyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc1RydWVQYXRoID0gdHlwZW9mIHByb3BzLmhlbHBlclRleHQgPT09ICdzdHJpbmcnO1xuICAgICAgICB2YXIgcGF0aEFycmF5cyA9IGhhc1RydWVQYXRoID8gW10gOiBmaW5kVHJ1ZVBhdGhzKHByb3BzLmhlbHBlclRleHQpO1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd0FjY29yZGlhbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dBY2NvcmRpYW5JdGVtcy52YWx1ZSA9ICFzaG93QWNjb3JkaWFuSXRlbXMudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGZpbmRUcnVlUGF0aHMob2JqLCBwYXRoLCBwYXRocykge1xuICAgICAgICAgICAgaWYgKHBhdGggPT09IHZvaWQgMCkgeyBwYXRoID0gW107IH1cbiAgICAgICAgICAgIGlmIChwYXRocyA9PT0gdm9pZCAwKSB7IHBhdGhzID0gW107IH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHNuYWtlVG9LZWJhYihzdHIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL18vZywgJy0nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzU25ha2VDYXNlKHN0cikge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHIuaW5jbHVkZXMoJ18nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldE9yZGluYWwobikge1xuICAgICAgICAgICAgICAgIHZhciBzID0gWyd0aCcsICdzdCcsICduZCcsICdyZCddO1xuICAgICAgICAgICAgICAgIHZhciB2ID0gbiAlIDEwMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbiArIChzWyh2IC0gMjApICUgMTBdIHx8IHNbdl0gfHwgc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHBhdGguam9pbignIOKepCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgICAgICBvYmouZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluZFRydWVQYXRocyhpdGVtLCBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHBhdGgsIHRydWUpLCBbZ2V0T3JkaW5hbChpbmRleCArIDEpXSwgZmFsc2UpLCBwYXRocyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3S2V5ID0gaXNTbmFrZUNhc2Uoa2V5KSA/IHNuYWtlVG9LZWJhYihrZXkpIDoga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgZmluZFRydWVQYXRocyhvYmpba2V5XSwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBwYXRoLCB0cnVlKSwgW25ld0tleV0sIGZhbHNlKSwgcGF0aHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdGhzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2hvd0FjY29yZGlhbkl0ZW1zOiBzaG93QWNjb3JkaWFuSXRlbXMsIGhhc1RydWVQYXRoOiBoYXNUcnVlUGF0aCwgcGF0aEFycmF5czogcGF0aEFycmF5cywgdG9nZ2xlU2hvd0FjY29yZGlhbjogdG9nZ2xlU2hvd0FjY29yZGlhbiwgZmluZFRydWVQYXRoczogZmluZFRydWVQYXRocyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAndy02MCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGljb25TaXplOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0lhdGlSZWZlcmVuY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0xvYWRlckNtcCcsXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ011bHRpU2VsZWN0V2l0aFNlYXJjaCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbGlzdEl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2NoYW5nZVNlbGVjdGVkUHVibGlzaGVyJywgJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0ZW1wTGlzdEl0ZW1zID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0ID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy5saXN0SXRlbXMpO1xuICAgICAgICB2YXIgc2VhcmNoSW5wdXQgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBjaGVja2VkQm94ZXMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciA9IGZ1bmN0aW9uIChzZWxlY3RlZFB1Ymxpc2hlclR5cGUpIHtcbiAgICAgICAgICAgIGVtaXQoJ2NoYW5nZVNlbGVjdGVkUHVibGlzaGVyJywgc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybWF0UHVibGlzaGVyVHlwZSgpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXRQdWJsaXNoZXJUeXBlKCkge1xuICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy5saXN0SXRlbXMpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGVtcExpc3RJdGVtcy52YWx1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBrZXlzW2ldLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHMubGlzdEl0ZW1zW2tleXNbaV1dLFxuICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uQmVmb3JlVW5tb3VudCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywga2VlcFB1Ymxpc2hlck1vZGVsT3Blbik7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2hvd05vRGF0YUNvbXBvbmVudCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2hvdykge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICFjb3VudDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB1cGRhdGVBcnJheUJ5U2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlYXJjaFN0cmluZyA9IHNlYXJjaElucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRlbXBMaXN0SXRlbXMudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgdGVtcExpc3RJdGVtcy52YWx1ZVtpXS5zaG93ID0gaXRlbS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYXBwbHlGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZScpO1xuICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIoY2hlY2tlZEJveGVzLnZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCB0ZW1wTGlzdEl0ZW1zOiB0ZW1wTGlzdEl0ZW1zLCBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3Q6IHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCwgZW1pdDogZW1pdCwga2V5czoga2V5cywgc2VhcmNoSW5wdXQ6IHNlYXJjaElucHV0LCBjaGVja2VkQm94ZXM6IGNoZWNrZWRCb3hlcywgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXI6IGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyLCBmb3JtYXRQdWJsaXNoZXJUeXBlOiBmb3JtYXRQdWJsaXNoZXJUeXBlLCBzaG93Tm9EYXRhQ29tcG9uZW50OiBzaG93Tm9EYXRhQ29tcG9uZW50LCB1cGRhdGVBcnJheUJ5U2VhcmNoOiB1cGRhdGVBcnJheUJ5U2VhcmNoLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuOiBrZWVwUHVibGlzaGVyTW9kZWxPcGVuLCBhcHBseUZpbHRlcjogYXBwbHlGaWx0ZXIsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYnRuVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0bkxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUG9wdXBNb2RhbCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kYWxBY3RpdmU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbm9QYWRkaW5nOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnODA5JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGlzYWJsZUJvZHlPdmVyZmxvdzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UnLCAncmVzZXQnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5tb2RhbEFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMubW9kYWxBY3RpdmU7IH0sIGZ1bmN0aW9uIChtb2RhbEFjdGl2ZSkge1xuICAgICAgICAgICAgaWYgKG1vZGFsQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wcy5kaXNhYmxlQm9keU92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uXzEgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbl8xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghcHJvcHMuZGlzYWJsZUJvZHlPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b25fMiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbl8yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgICBlbWl0KCdyZXNldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xvc2U6IGNsb3NlLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWUzX3JhZGlhbF9wcm9ncmVzc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ2dWUzLXJhZGlhbC1wcm9ncmVzc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBSYWRpYWxQcm9ncmVzc0JhcjogdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcGVyY2VudDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGNvbXBsZXRlZFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKShwcm9wcy5wZXJjZW50KTtcbiAgICAgICAgdmFyIHRvdGFsUGVyY2VudCA9ICgwLCB2dWVfMS5yZWYpKDEwMCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21wbGV0ZWRQZXJjZW50OiBjb21wbGV0ZWRQZXJjZW50LFxuICAgICAgICAgICAgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1NpZGVIZWxwVGV4dCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdmlzaWJsZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGNsb3NlU2lkZWJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgY2xvc2VTaWRlYmFyOiBjbG9zZVNpZGViYXIgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnU3RlcEJhcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFN0ZXA6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2NoYW5nZS1zdGVwJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjaGVja01hcmsgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoY2hlY2tNYXJrLCBmdW5jdGlvbiAobmV3VmFsKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JfMTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQucG9zdCgnb3JnYW5pc2F0aW9uLW9uYm9hcmRpbmcvdG9nZ2xlLWRvbnQtc2hvdy8nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdWYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdpc0ZvcmNlT3Blbk1vZGFsJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgb29fdHgoXCIzMjgwOTE2NTU2Xzc0XzRfNzRfMzNfMTFcIiwgJ0Vycm9yJywgZXJyb3JfMSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgY2hlY2tNYXJrOiBjaGVja01hcmssIG9vX2NtOiBvb19jbSwgb29fb286IG9vX29vLCBvb190cjogb29fdHIsIG9vX3R4OiBvb190eCwgb29fdHM6IG9vX3RzLCBvb190ZTogb29fdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVGFibGVMb2FkZXJDb21wb25lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHJvd0NvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgY29sQ291bnQ6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDEgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGFnaW5hdGlvbkNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2ZldGNoQWN0aXZpdGllcyddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGFjdGl2ZV9wYWdlID0gKDAsIHZ1ZV8xLnJlZikoMSk7XG4gICAgICAgIHZhciBsYXN0X3BhZ2VsaXN0ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIG1pZF9wYWdlbGlzdCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMucmVzZXQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShhY3RpdmVfcGFnZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnZmV0Y2hBY3Rpdml0aWVzJywgYWN0aXZlX3BhZ2UudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxhc3RwYWdlcyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3RfcGFnZWxpc3QudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbWlkcGFnZXMgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBtaWRfcGFnZWxpc3QudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmVQYWdlKHBhZ2UpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gcGFnZTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjaGFuZ2VQYWdlKHBhZ2VOdW0pIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gcGFnZU51bTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBuZXh0UGFnZSgpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID1cbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9PT0gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgPyAxIDogYWN0aXZlX3BhZ2UudmFsdWUgKyAxO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gYWN0aXZlX3BhZ2UudmFsdWU7IH0sIGZ1bmN0aW9uIChjdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgbGFzdF9wYWdlbGlzdC52YWx1ZSA9IEFycmF5LmZyb20oQXJyYXkocHJvcHMuZGF0YS5sYXN0X3BhZ2UpLCBmdW5jdGlvbiAoXywgaW5kZXgpIHsgcmV0dXJuIGluZGV4ICsgMTsgfSk7XG4gICAgICAgICAgICBsYXN0X3BhZ2VsaXN0LnZhbHVlID0gbGFzdF9wYWdlbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSA+IHByb3BzLmRhdGEubGFzdF9wYWdlIC0gNSAmJiBwcm9wcy5kYXRhLmxhc3RfcGFnZSAhPSB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pZF9wYWdlbGlzdC52YWx1ZSA9IEFycmF5LmZyb20oQXJyYXkoY3VycmVudFBhZ2UgKyAyKSwgZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiBpbmRleCArIDE7IH0pO1xuICAgICAgICAgICAgbWlkX3BhZ2VsaXN0LnZhbHVlID0gbWlkX3BhZ2VsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiBjdXJyZW50UGFnZSAtIDM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHByZXZpb3VzUGFnZSgpIHtcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID1cbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9PT0gMSA/IHByb3BzLmRhdGEubGFzdF9wYWdlIDogYWN0aXZlX3BhZ2UudmFsdWUgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVfcGFnZTogYWN0aXZlX3BhZ2UsXG4gICAgICAgICAgICB1cGRhdGVBY3RpdmVQYWdlOiB1cGRhdGVBY3RpdmVQYWdlLFxuICAgICAgICAgICAgbmV4dFBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcHJldmlvdXNQYWdlOiBwcmV2aW91c1BhZ2UsXG4gICAgICAgICAgICBjaGFuZ2VQYWdlOiBjaGFuZ2VQYWdlLFxuICAgICAgICAgICAgbGFzdHBhZ2VzOiBsYXN0cGFnZXMsXG4gICAgICAgICAgICBtaWRwYWdlczogbWlkcGFnZXMsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb2FzdE1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGljb25OYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgaWNvbkNsYXNzID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdXBkYXRlVUkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLnR5cGUgPT09ICdzdHJpbmcnICYmIHByb3BzLnR5cGUgPT09ICd3YXJuaW5nJykge1xuICAgICAgICAgICAgICAgIGljb25OYW1lLnZhbHVlID0gJ2V4Y2xhbWF0aW9uLXdhcm5pbmcnO1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLWVnZ3NoZWxsIGJvcmRlciBib3JkZXItY2FtZWwtNDAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICAgICAgICAgIGljb25DbGFzcy52YWx1ZSA9ICdoLTUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJvcHMudHlwZSkge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLW1pbnQgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICAgICAgICAgIGljb25OYW1lLnZhbHVlID0gJ2NoZWNrLWNpcmNsZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpY29uTmFtZS52YWx1ZSA9ICd0aW1lcy1jaXJjbGUnO1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICdyb3VuZGVkLWxnIGJnLWNyaW1zb24tMTAgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gSW5pdGlhbCBjYWxsIHRvIHVwZGF0ZVVJXG4gICAgICAgIHVwZGF0ZVVJKCk7XG4gICAgICAgIC8vIFdhdGNoIGZvciBjaGFuZ2VzIGluIHByb3BzLnR5cGVcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy50eXBlOyB9LCB1cGRhdGVVSSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGljb25OYW1lOiBpY29uTmFtZSwgaWNvbkNsYXNzOiBpY29uQ2xhc3MsIHVwZGF0ZVVJOiB1cGRhdGVVSSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3RFcnJvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzaG93RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93V2FybmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICAoKF9hID0gcHJvcHMuYWN0aXZpdHkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcnNbY3VycmVudEVycm9yXSkgJiZcbiAgICAgICAgICAgICAgICAoKF9iID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2EgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYiA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9zdGFydFswXS5kYXRlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpKTtcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2MgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1VudGl0bGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNob3dFcnJvcnM6IHNob3dFcnJvcnMsIHNob3dDcml0aWNhbDogc2hvd0NyaXRpY2FsLCBjcml0aWNhbFRvZ2dsZTogY3JpdGljYWxUb2dnbGUsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgcHJvcHM6IHByb3BzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHRpdGxlOiB0aXRsZSwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGU6IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgbWFwQWN0aXZpdHlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCYXNpYyBBY3Rpdml0eSBFbGVtZW50cyc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSW5kaWNhdG9ycyBleGNlcHQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1Jlc3VsdCBleGNlcHQgSW5kaWNhdG9ycyBhbmQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjdXJyZW50QWN0aXZpdHkudmFsdWUgPSBtYXBBY3Rpdml0eU5hbWUocHJvcHMuYWN0aXZpdHlOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b3RhbENvdW50ICE9PSAwICYmIHByb3BzLnRvdGFsQ291bnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnByb2Nlc3NlZENvdW50IC8gcHJvcHMudG90YWxDb3VudCkgKiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNGYWlsZWRNZXNzYWdlJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Byb2Nlc3NpbmcnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIHByb3BzOiBwcm9wcywgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIHJldHJ5OiByZXRyeSwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsIHByb2Nlc3Npbmc6IHByb2Nlc3NpbmcsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEFjdGl2aXR5RG93bmxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWN0aXZpdHlEb3dubG9hZC52dWVcIikpO1xudmFyIFhsc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9YbHNMb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlWYWxpZGF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWVcIikpO1xudmFyIEJ1bGtwdWJsaXNoTG9hZGVyQ2FyZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzVXBsb2FkSW5kaWNhdG9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eU5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG90YWxDb3VudDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyIHx8IG51bGwsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzZWRDb3VudDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgeGxzRmFpbGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0RhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1hsc1N0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjYW5jZWxEb3dubG9hZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dCdWxrcHVibGlzaExvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhcmVudEVsZW1lbnRSZWYgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGhlaWdodCA9ICgwLCBjb3JlXzEudXNlRWxlbWVudFNpemUpKHBhcmVudEVsZW1lbnRSZWYpLmhlaWdodDtcbiAgICAgICAgdmFyIG1pbmltaXplID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgnbWluaW1pemVCYWNrZ3JvdW5kTW9kYWwnLCB0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5UHVibGlzaGVkRGF0YSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNEb3dubG9hZFN0YXR1cycpO1xuICAgICAgICB2YXIgaXNCbGlua2luZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b247XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvbk5hbWVzID0gKHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZS5zdGF0ZS52YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJ3wnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3dWYWxpZGF0aW9uUG9wdXAudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9iID0gcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2MgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU3VwcG9ydEJ1dHRvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50UmVmID09PSBudWxsIHx8IHBhcmVudEVsZW1lbnRSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEVsZW1lbnRSZWYudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5pbWl6ZSA9PT0gbnVsbCB8fCBtaW5pbWl6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWluaW1pemUudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXgoLTQ1MHB4KScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgY2hlY2tWYWxpZGF0aW9uKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIHByb2NlZWRWYWxpZGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGNhbmNlbFZhbGlkYXRpb25Qb2xsaW5nKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja1ZhbGlkYXRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGFjdGl2aXRpZXNfMSwgYWN0aXZpdHlJZCwgZXJyb3JfMTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmlhdGlWYWxpZGF0b3JMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2NoZWNrcy1mb3ItYWN0aXZpdHktYnVsay12YWxpZGF0aW9uXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pYXRpVmFsaWRhdG9yTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNfMSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9ICFyZXNwb25zZS5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXRpZXNfMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycsIE9iamVjdC52YWx1ZXMoSlNPTi5wYXJzZShhY3Rpdml0aWVzXzEpKS5qb2luKCd8JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eUlkID0gT2JqZWN0LmtleXMoSlNPTi5wYXJzZShhY3Rpdml0aWVzXzEpKS5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcycsIGFjdGl2aXR5SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1ZhbGlkYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgb29fdHgoXCIzNTgxODU0MzI3XzI0M180XzI0M181NF8xMVwiLCAnRXJyb3IgY2hlY2tpbmcgdmFsaWRhdGlvbjonLCBlcnJvcl8xKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgY2FuY2VsVmFsaWRhdGlvblBvbGxpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoLCBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXNdOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gc3RvcmUgPT09IG51bGwgfHwgc3RvcmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0b3JlLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgKChfYyA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnZhbGlkYXRpb25SdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyB2YXIgX2E7IHJldHVybiAoX2EgPSBzdG9yZSA9PT0gbnVsbCB8fCBzdG9yZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RvcmUuc3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdGFydEJ1bGtQdWJsaXNoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIC8vIHdhdGNoKFxuICAgICAgICAvLyAgICgpID0+IHNob3dWYWxpZGF0aW9uUG9wdXAudmFsdWUsXG4gICAgICAgIC8vICAgKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgLy8gICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyApO1xuICAgICAgICB2YXIgY2hlY2tWYWxpZGF0aW9uU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9nZXQtdmFsaWRhdGlvbi1zdGF0dXM/YWN0aXZpdGllcz1bXCIuY29uY2F0KHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzLCBcIl1cIikpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuY29tcGxldGUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmZhaWxlZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuaW1wb3J0ZWRBY3Rpdml0aWVzTGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uTmFtZXMgPSAoKChfYSA9IHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZS5zdGF0ZS52YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc3BsaXQoJ3wnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS50b3RhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmNvbXBsZXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmNvbXBsZXRlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMuZmFpbGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmZhaWxlZF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuaWF0aVZhbGlkYXRvckxvYWRlciA9IGZhbHNlOyAvLyBBc3N1bWluZyB5b3UgbmVlZCB0byBzZXQgdGhpcyB0byBmYWxzZSB0byBzdG9wIHRoZSBsb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbkZhaWxlZEFjdGl2aXRpZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHBvbGwsIDMwMDApOyAvLyBDYWxsIHBvbGwgYWdhaW4gYWZ0ZXIgMyBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5zaG93VmFsaWRhdGlvbkVycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICAgICFyZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQocG9sbCwgMzAwMCk7IC8vIFJldHJ5IGFmdGVyIDMgc2Vjb25kcyBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcG9sbCgpOyAvLyBJbml0aWFsIGNhbGwgdG8gc3RhcnQgdGhlIHBvbGxpbmdcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb247IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycsIHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrVmFsaWRhdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1ZhbGlkYXRpb25Qb3B1cDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjbG9zZUJ1bGtwdWJsaXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb24sIHN0b3JlLnN0YXRlLnZhbGlkYXRpb25SdW5uaW5nXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnN0YXJ0VmFsaWRhdGlvbiB8fCBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZykge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dWYWxpZGF0aW9uUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb24gfHwgc3RvcmUuc3RhdGUudmFsaWRhdGlvblJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwcHggLDBweCknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNsb3NlQnVsa3B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMpLCB7IGNvbXBsZXRlOiAwLCB0b3RhbDogMCwgZmFpbGVkOiAwIH0pIH0pO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuc2hvd0J1bGtwdWJsaXNoID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzOnt9Jyk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSwgeyByZXNwb25zZTogbnVsbCwgaGFzRmFpbGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LCBhY3Rpdml0aWVzOiBudWxsIH0pO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VYbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbFVwbG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDbG9zZVhsc01vZGVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIGZhbHNlKTsgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2FuY2VsRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FuY2VsRG93bmxvYWQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhcmVudEVsZW1lbnRSZWYudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uXzEgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGV5KDBweCknO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b25fMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBtaW5pbWl6ZS52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnRSZWYudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXgoLTQ1MHB4KScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkaW5nJyk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXRpZXMnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmdBY3Rpdml0eUNvdW50ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNob3dCdWxrcHVibGlzaCAmJlxuICAgICAgICAgICAgICAgIChhY3Rpdml0aWVzID09PSBudWxsIHx8IGFjdGl2aXRpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXRpZXMudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllcyA9PT0gbnVsbCB8fCBhY3Rpdml0aWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0aWVzLnZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoZG93bmxvYWRpbmcgPT09IG51bGwgfHwgZG93bmxvYWRpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvd25sb2FkaW5nLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICEoZG93bmxvYWRDb21wbGV0ZWQgPT09IG51bGwgfHwgZG93bmxvYWRDb21wbGV0ZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvd25sb2FkQ29tcGxldGVkLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICEoY2FuY2VsRG93bmxvYWQgPT09IG51bGwgfHwgY2FuY2VsRG93bmxvYWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmNlbERvd25sb2FkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMueGxzRGF0YSAmJiAoc2hvd1hsc1N0YXR1cyA9PT0gbnVsbCB8fCBzaG93WGxzU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG93WGxzU3RhdHVzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2hvd1ZhbGlkYXRpb25Qb3B1cC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAobWluaW1pemUgPT09IG51bGwgfHwgbWluaW1pemUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1pbmltaXplLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtMjBweCknKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleCgtNDUwcHgpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvbXBsZXRlQWN0aXZpdHlDb3VudCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmICgoKF9hID0gYWN0aXZpdHlQdWJsaXNoZWREYXRhID09PSBudWxsIHx8IGFjdGl2aXR5UHVibGlzaGVkRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlQdWJsaXNoZWREYXRhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcgJiZcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5zaG93QnVsa3B1Ymxpc2gpIHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChkb3dubG9hZFN0YXR1cyA9PT0gbnVsbCB8fCBkb3dubG9hZFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG93bmxvYWRTdGF0dXMudmFsdWUpID09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhpZGVCdWxrcHVibGlzaExvYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaExvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlQWN0aXZpdHlQdWJsaXNoZWREYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIGFjdGl2aXR5UHVibGlzaGVkRGF0YS52YWx1ZSA9IGRhdGE7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB2YWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pbXBvcnRlZEFjdGl2aXRpZXNMaXN0KS5zb21lKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmlzX3ZhbGlkKSA9PT0gZmFsc2U7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGhhbmRsZUJhY2tncm91bmRQcm9jZXNzVG9nZ2xlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1pbmltaXplLnZhbHVlID0gIW1pbmltaXplLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2hFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmYWlsZWQgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5mYWlsZWQ7XG4gICAgICAgICAgICB2YXIgdG90YWwgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbDtcbiAgICAgICAgICAgIHZhciBjb21wbGV0ZWQgPSBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5jb21wbGV0ZTtcbiAgICAgICAgICAgIGlmICh0b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZmFpbGVkID09PSB0b3RhbCB8fCB0b3RhbCA9PT0gY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJsaW5rQmFja2dyb3VuZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlmICgoKF9iID0gKF9hID0gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzcG9uc2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zdGF0dXMpID09PVxuICAgICAgICAgICAgICAgICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgYmxpbmtCYWNrZ3JvdW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBibGlua0JhY2tncm91bmQoKSB7XG4gICAgICAgICAgICBpc0JsaW5raW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzQmxpbmtpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc2hvd1hsc1N0YXR1czogc2hvd1hsc1N0YXR1cywgZG93bmxvYWRDb21wbGV0ZWQ6IGRvd25sb2FkQ29tcGxldGVkLCBjYW5jZWxEb3dubG9hZDogY2FuY2VsRG93bmxvYWQsIHNob3dCdWxrcHVibGlzaExvYWRlcjogc2hvd0J1bGtwdWJsaXNoTG9hZGVyLCBwYXJlbnRFbGVtZW50UmVmOiBwYXJlbnRFbGVtZW50UmVmLCBoZWlnaHQ6IGhlaWdodCwgbWluaW1pemU6IG1pbmltaXplLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIGJ1bGtQdWJsaXNoTGVuZ3RoOiBidWxrUHVibGlzaExlbmd0aCwgYWN0aXZpdHlQdWJsaXNoZWREYXRhOiBhY3Rpdml0eVB1Ymxpc2hlZERhdGEsIGRvd25sb2FkU3RhdHVzOiBkb3dubG9hZFN0YXR1cywgaXNCbGlua2luZzogaXNCbGlua2luZywgcGE6IHBhLCBwcm9wczogcHJvcHMsIHByb2NlZWRWYWxpZGF0aW9uOiBwcm9jZWVkVmFsaWRhdGlvbiwgY2hlY2tWYWxpZGF0aW9uOiBjaGVja1ZhbGlkYXRpb24sIGNhbmNlbFZhbGlkYXRpb25Qb2xsaW5nOiBjYW5jZWxWYWxpZGF0aW9uUG9sbGluZywgY2hlY2tWYWxpZGF0aW9uU3RhdHVzOiBjaGVja1ZhbGlkYXRpb25TdGF0dXMsIHNob3dWYWxpZGF0aW9uUG9wdXA6IHNob3dWYWxpZGF0aW9uUG9wdXAsIGNsb3NlQnVsa3B1Ymxpc2g6IGNsb3NlQnVsa3B1Ymxpc2gsIGNsb3NlWGxzOiBjbG9zZVhscywgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBwcm9jZXNzaW5nQWN0aXZpdHlDb3VudDogcHJvY2Vzc2luZ0FjdGl2aXR5Q291bnQsIGNvbXBsZXRlQWN0aXZpdHlDb3VudDogY29tcGxldGVBY3Rpdml0eUNvdW50LCBoaWRlQnVsa3B1Ymxpc2hMb2FkZXI6IGhpZGVCdWxrcHVibGlzaExvYWRlciwgaGFuZGxlQWN0aXZpdHlQdWJsaXNoZWREYXRhOiBoYW5kbGVBY3Rpdml0eVB1Ymxpc2hlZERhdGEsIHZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzOiB2YWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcywgaGFuZGxlQmFja2dyb3VuZFByb2Nlc3NUb2dnbGVyOiBoYW5kbGVCYWNrZ3JvdW5kUHJvY2Vzc1RvZ2dsZXIsIGJsaW5rQmFja2dyb3VuZDogYmxpbmtCYWNrZ3JvdW5kLCBvb19jbTogb29fY20sIG9vX29vOiBvb19vbywgb29fdHI6IG9vX3RyLCBvb190eDogb29fdHgsIG9vX3RzOiBvb190cywgb29fdGU6IG9vX3RlLCBBY3Rpdml0eURvd25sb2FkOiBBY3Rpdml0eURvd25sb2FkX3Z1ZV8xLmRlZmF1bHQsIFhsc0xvYWRlcjogWGxzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoV2l0aFhsczogQnVsa3B1Ymxpc2hXaXRoWGxzX3Z1ZV8xLmRlZmF1bHQsIEFjdGl2aXR5VmFsaWRhdGlvbjogQWN0aXZpdHlWYWxpZGF0aW9uX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoTG9hZGVyQ2FyZDogQnVsa3B1Ymxpc2hMb2FkZXJDYXJkX3Z1ZV8xLmRlZmF1bHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogJ1BsZWFzZSBXYWl0JyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB1bnB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdE1lc3NhZ2UnKTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gJ0RlbGV0aW5nJztcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgZGVsZXRlRW5kUG9pbnQgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoZGVsZXRlRW5kUG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMaW5rQnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlZGl0JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzaWduOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnaWNvblRleHQnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGVzaWduID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRlc2lnbjtcbiAgICAgICAgdmFyIHN0eWxlVHlwZSA9IGRlc2lnbi52YWx1ZTtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSAnJztcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JnVGV4dCc6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciBiZy1uLTEwIHAtMSB0ZXh0LXRpbnkgZm9udC1ib2xkIHVwcGVyY2FzZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIHVwcGVyY2FzZSB0ZXh0LXRpbnknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNsYXNzZXM6IGNsYXNzZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBsaW5rZWRUb0lhdGk6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3RhdHVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgY29yZUNvbXBsZXRlZDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcHVibGlzaDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgZGVwcmVjYXRpb25TdGF0dXNNYXA6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwYTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIGxpbmtlZFRvSWF0aSA9IF9iLmxpbmtlZFRvSWF0aSwgc3RhdHVzID0gX2Iuc3RhdHVzLCBjb3JlQ29tcGxldGVkID0gX2IuY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZCA9IF9iLmFjdGl2aXR5SWQ7XG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxvYWRlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMyB8fFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID09PSAyIHx8XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIHZhciB2YWxpZGF0aW9uU3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgLy9hY3Rpdml0eSBpZFxuICAgICAgICB2YXIgaWQgPSBhY3Rpdml0eUlkLnZhbHVlO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfY1swXSwgcHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgcHVibGlzaFN0ZXAgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIGNvcmVFbGVtZW50U3RhdHVzID0gY29yZUNvbXBsZXRlZC52YWx1ZTtcbiAgICAgICAgdmFyIGhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlID0gY2hlY2tJZkhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGNoZWNrSWZIYXNEZXByZWNhdGVkVmFsdWVJblVzZSgpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUNoZWNrKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1fMSA9IGl0ZW07IF9pIDwgaXRlbV8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBpdGVtXzFbX2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZUNoZWNrKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmVDaGVjayhpdGVtW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWN1cnNpdmVDaGVjayhwcm9wcy5kZXByZWNhdGlvblN0YXR1c01hcCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgLy8gcmVzZXQgc3RlcCB0byB6ZXJvIGFmdGVyIGNsb3NpbmcgbW9kYWxcbiAgICAgICAgdmFyIHJlc2V0UHVibGlzaFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gJycsIGRlc2NyaXB0aW9uID0gJycsIGljb24gPSAndGljayc7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKGNvcmVFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSAnQ29yZSBFbGVtZW50cyBDb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAnQ29uZ3JhdHVsYXRpb25zISBBbGwgdGhlIGNvcmUgZWxlbWVudHMgYXJlIGNvbXBsZXRlLiBDb250aW51ZSB0byBWYWxpZGF0ZSB0aGlzIGFjdGl2aXR5Lic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZSA9ICdDb3JlIEVsZW1lbnRzIG5vdCBjb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAnPHA+VGhlcmUgaXMgbWlzc2luZyBkYXRhIGluIHNvbWUgb2YgdGhlIGNvcmUgZWxlbWVudHMuIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgY29tcGxldGUgdGhlc2UgZGF0YSBmaWVsZHMgdG8gaGVscCBlbnN1cmUgeW91ciBkYXRhIGlzIHVzZWZ1bC48L3A+PHA+RG8geW91IHdhbnQgdG8gY29udGludWUgYW55d2F5IGFuZCBydW4gY2hlY2tzIG9uICh2YWxpZGF0ZSkgdGhpcyBkYXRhLjwvcD4nO1xuICAgICAgICAgICAgICAgIGljb24gPSAnd2FybmluZy1maWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAocHVibGlzaFN0ZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBjb3JlRWxlbWVudFN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy9zZWNvbmQgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gXCJBY3Rpdml0eSB3aWxsIGJlIHZhbGlkYXRlZCBiZWZvcmUgcHVibGlzaGluZ1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIlRoaXMgYWN0aXZpdHkgd2lsbCBiZSBmaXJzdCB2YWxpZGF0ZWQgYmVmb3JlIHB1Ymxpc2hpbmcgdGhlIGFjdGl2aXR5IHRvIHRoZSBJQVRJIFJlZ2lzdHJ5LiBcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gXCJJQVRJIFZhbGlkYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD5Db25ncmF0dWxhdGlvbnMhIE5vIGVycm9ycyB3ZXJlIGZvdW5kLiBQdWJsaXNoIHlvdXIgZGF0YSBub3cuPC9wPjxwPlRoaXMgZGF0YSB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgSUFUSSBEYXRhc3RvcmUgYW5kIG90aGVyIGRhdGEgcG9ydGFscy90b29scy9zb2Z0d2FyZSB0aGF0IHVzZSBJQVRJIGRhdGEuPC9wPlwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwidGlja1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vY2FzZSAzIGlzIGZvciB2YWxpZGF0aW9uIHdpdGggY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBcIklBVEkgVmFsaWRhdGlvbiBJc3N1ZVwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIjxwPjxiPlwiLmNvbmNhdChlcnIuY3JpdGljYWxOdW1iZXIsIFwiIGNyaXRpY2FsIGVycm9yczwvYj4sIDxiPlwiKS5jb25jYXQoZXJyLmVycm9yTnVtYmVyLCBcIiBlcnJvcnM8L2I+IGFuZCA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiB3YXJuaW5nczwvYj4gd2VyZSBmb3VuZC4gVmlldyBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBlcnJvcnMvd2FybmluZ3MgYXQgdGhlIHRvcCBvZiB0aGUgYWN0aXZpdHkgcGFnZS48L3A+PHA+QXMgeW91ciBkYXRhIGhhcyBhdCBsZWFzdCBvbmUgY3JpdGljYWwgZXJyb3IsIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGUgSUFUSSBEYXRhc3RvcmUgYW5kIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIG90aGVyIGRhdGEgcG9ydGFscy90b29scy9zb2Z0d2FyZSB0aGF0IHVzZSBJQVRJIGRhdGEuPC9wPjxwPldlIGhpZ2hseSByZWNvbW1lbmQgeW91IGZpeCB0aGVzZSBpc3N1ZShzKSBiZWZvcmUgcHVibGlzaGluZyB5b3VyIGFjdGl2aXR5IHRvIGltcHJvdmUgdGhlIHF1YWxpdHkgYW5kIHVzZWZ1bG5lc3Mgb2YgeW91ciBkYXRhLjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBcIklBVEkgVmFsaWRhdGlvbiBJc3N1ZVwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBcIjxwPjxiPlwiLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIGVycm9yczwvYj4gYW5kIDxiPlwiKS5jb25jYXQoZXJyLndhcm5pbmdOdW1iZXIsIFwiIHdhcm5pbmdzPC9iPiB3ZXJlIGZvdW5kLiBWaWV3IGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIGVycm9ycy93YXJuaW5ncyBhdCB0aGUgdG9wIG9mIHRoZSBhY3Rpdml0eSBwYWdlLjwvcD48cD5XZSBoaWdobHkgcmVjb21tZW5kIHlvdSBmaXggdGhlc2UgaXNzdWUocykgYmVmb3JlIHB1Ymxpc2hpbmcgeW91ciBhY3Rpdml0eSB0byBpbXByb3ZlIHRoZSBxdWFsaXR5IGFuZCB1c2VmdWxuZXNzIG9mIHlvdXIgZGF0YS48L3A+XCIpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwid2FybmluZy1maWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIC8vIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9uXG4gICAgICAgIC8vIGNvbnN0IHN0ZXBQbHVzT25lID0gKCkgPT4ge1xuICAgICAgICAvLyAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA+PSAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAvLyAgICAgcHVibGlzaFN0ZXAudmFsdWUrKztcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH07XG4gICAgICAgIC8vIGNvbnN0IHN0ZXBNaW51c09uZSA9ICgpID0+IHtcbiAgICAgICAgLy8gICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPiAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDw9IDQpIHtcbiAgICAgICAgLy8gICAgIHB1Ymxpc2hTdGVwLnZhbHVlLS07XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9O1xuICAgICAgICAvLyByZWFjdGl2ZSB2YXJpYWJsZSBmb3IgZXJyb3JzIG51bWJlclxuICAgICAgICB2YXIgZXJyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjcml0aWNhbE51bWJlcjogMCxcbiAgICAgICAgICAgIGVycm9yTnVtYmVyOiAwLFxuICAgICAgICAgICAgd2FybmluZ051bWJlcjogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdG9wQnVsa3B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC1idWxrLXB1Ymxpc2gnKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZGF0b3JTdWNjZXNzLCB2YWxpZGF0aW9uUmVzcG9uc2UsIHB1Ymxpc2hSZXNwb25zZSwgcmVzcG9uc2UsIGVycm9yXzE7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2MubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBwcm9wcy5wYSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfYiA9IHByb3BzLnBhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF9jLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2MudHJ5cy5wdXNoKFsxLCA0LCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvclN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstdmFsaWRhdGlvblwiKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25SZXNwb25zZSA9IF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvclN1Y2Nlc3MgPSB2YWxpZGF0aW9uUmVzcG9uc2UuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0b3JTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1idWxrLXB1Ymxpc2hcIildO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoUmVzcG9uc2UgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHB1Ymxpc2hSZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wQnVsa3B1Ymxpc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMgPSBbaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmlzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3tcInB1Ymxpc2hpbmdBY3Rpdml0aWVzXCI6e319Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaW5fcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqLyBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIG9vX3R4KFwiMzYzMTkwMzc2N180NThfNF80NThfNDZfMTFcIiwgJ0FuIGVycm9yIG9jY3VycmVkOicsIGVycm9yXzEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciByZXNldFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzKSwgeyBpYXRpVmFsaWRhdG9yTG9hZGVyOiBmYWxzZSwgdmFsaWRhdGlvblN0YXRzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25TdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFsaWRhdGlvblN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyksIHsgcmVzcG9uc2U6IG51bGwsIGhhc0ZhaWxlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSwgYWN0aXZpdGllczogbnVsbCB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcHVibGlzaC1yZXB1Ymxpc2hcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBsaW5rZWRUb0lhdGkudmFsdWUsXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidG5UZXh0ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnUmVwdWJsaXNoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmXG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdkcmFmdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1B1Ymxpc2gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0YXJ0TmV3UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uU3RvcmUuc3RhdGUuc3RhcnROZXdQdWJsaXNoaW5nID0ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogIXZhbGlkYXRpb25TdG9yZS5zdGF0ZS5zdGFydE5ld1B1Ymxpc2hpbmcuc3RhdGUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsOiBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwsIGxpbmtlZFRvSWF0aTogbGlua2VkVG9JYXRpLCBzdGF0dXM6IHN0YXR1cywgY29yZUNvbXBsZXRlZDogY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgc3RvcmU6IHN0b3JlLCB2YWxpZGF0aW9uU3RvcmU6IHZhbGlkYXRpb25TdG9yZSwgaWQ6IGlkLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgcHVibGlzaFN0ZXA6IHB1Ymxpc2hTdGVwLCBsb2FkZXI6IGxvYWRlciwgY29yZUVsZW1lbnRTdGF0dXM6IGNvcmVFbGVtZW50U3RhdHVzLCBoYXNEZXByZWNhdGVkVmFsdWVJblVzZTogaGFzRGVwcmVjYXRlZFZhbHVlSW5Vc2UsIGNoZWNrSWZIYXNEZXByZWNhdGVkVmFsdWVJblVzZTogY2hlY2tJZkhhc0RlcHJlY2F0ZWRWYWx1ZUluVXNlLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCByZXNldFB1Ymxpc2hTdGVwOiByZXNldFB1Ymxpc2hTdGVwLCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgZXJyOiBlcnIsIHN0b3BCdWxrcHVibGlzaDogc3RvcEJ1bGtwdWJsaXNoLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHJlc2V0U3RhdHVzOiByZXNldFN0YXR1cywgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgc3RhcnROZXdQdWJsaXNoaW5nOiBzdGFydE5ld1B1Ymxpc2hpbmcsIG9vX2NtOiBvb19jbSwgb29fb286IG9vX29vLCBvb190cjogb29fdHIsIG9vX3R4OiBvb190eCwgb29fdHM6IG9vX3RzLCBvb190ZTogb29fdGUsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VuUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmFjdGl2aXR5SWQ7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHVucHVibGlzaFZhbHVlID0gX2JbMF0sIHVucHVibGlzaFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvL0dsb2JhbCBTdGF0ZVxuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICAvL2FjdGl2aXR5IGlkXG4gICAgICAgIHZhciBpZCA9IGFjdGl2aXR5SWQudmFsdWU7XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6ICdQbGVhc2UgV2FpdCcsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gJ1VucHVibGlzaGluZyc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQucG9zdChcIi9hY3Rpdml0eS9cIi5jb25jYXQoaWQsIFwiL3VucHVibGlzaFwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB1bnB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgW10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG4vLyBwcm9wc1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RlbGV0ZUFjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbUlkOiB7IHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGl0ZW1UeXBlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgZGVsZXRlRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdyZXN1bHQnIHx8IHByb3BzLml0ZW1UeXBlID09PSAndHJhbnNhY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdpbmRpY2F0b3InKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMuaXRlbVR5cGUgPT09ICdwZXJpb2QnKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIlwiLmNvbmNhdChwcm9wcy5pdGVtVHlwZSwgXCIvXCIpLmNvbmNhdChwcm9wcy5pdGVtSWQpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL3Byb3BzXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JMaXN0cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdlcnJvcicgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgZXJyb3JUeXBlLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoKF9hID0gZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHR5cGUudmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICB9O1xuICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9ycy52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdHlwZTogdHlwZSwgZXJyb3JzOiBlcnJvcnMsIGVycm9yVHlwZTogZXJyb3JUeXBlLCBiZ0NvbG9yOiBiZ0NvbG9yLCBpY29uQ29sb3I6IGljb25Db2xvciwgdG9nZ2xlOiB0b2dnbGUsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlLCB1cGRhdGVFcnJvckNvdW50TWVzc2FnZTogdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0hhdmVOb3RBZGRlZFlldCcsXG4gICAgY29tcG9uZW50czogeyBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gcHVibGlzaC1yZXB1Ymxpc2hcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgcHVibGlzaFZhbHVlID0gX2JbMF0sIHB1Ymxpc2hUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHVucHVibGlzaFZhbHVlID0gX2NbMF0sIHVucHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBzdGF0ZSBmb3IgZmlyc3Qgc3RlcFxuICAgICAgICAvLyBkZXRlcm1pbmUgaWYgY29yZSBlbGVtZW50IGNvbXBsZXRlZCBvciBub3RcbiAgICAgICAgLy8gdHJ1ZSBmb3IgY29tcGxldGVkIGFuZCBmYWxzZSBmb3Igbm90IGNvbXBsZXRlZFxuICAgICAgICB2YXIgbWFuZGF0b3J5RWxlbWVudFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCdtYW5kYXRvcnlDb21wbGV0ZWQnKTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogbWFuZGF0b3J5RWxlbWVudFN0YXR1cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcnlFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gJ0NvcmUgRWxlbWVudHMgQ29tcGxldGUnO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICdDb25ncmF0dWxhdGlvbnMhIEFsbCB0aGUgY29yZSBlbGVtZW50cyBhcmUgY29tcGxldGUuIENvbnRpbnVlIHRvIHB1Ymxpc2ggdGhpcyBvcmdhbml6YXRpb24uJztcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd0aWNrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9ICdDb3JlIEVsZW1lbnRzIG5vdCBjb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgJzxwPlRoZXJlIGlzIG1pc3NpbmcgZGF0YSBpbiBzb21lIG9mIHRoZSBjb3JlIGVsZW1lbnRzLiBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGNvbXBsZXRlIHRoZXNlIGRhdGEgZmllbGRzIHRvIGhlbHAgZW5zdXJlIHlvdXIgZGF0YSBpcyB1c2VmdWwuPC9wPic7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSAnd2FybmluZy1maWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwdWJsaXNoU3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgcHVibGlzaCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjaGVja1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL29yZ2FuaXNhdGlvbi9jaGVja3MtZm9yLW9yZ2FuaXNhdGlvbi1wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSAnUHVibGlzaGluZyc7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gJ3B1Ymxpc2hlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdVbnB1Ymxpc2hpbmcnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvb3JnYW5pc2F0aW9uL3VucHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5pc19wdWJsaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgncHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdSZXB1Ymxpc2gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdQdWJsaXNoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLCBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLCB1bnB1Ymxpc2hWYWx1ZTogdW5wdWJsaXNoVmFsdWUsIHVucHVibGlzaFRvZ2dsZTogdW5wdWJsaXNoVG9nZ2xlLCBsb2FkZXI6IGxvYWRlciwgbWFuZGF0b3J5RWxlbWVudFN0YXR1czogbWFuZGF0b3J5RWxlbWVudFN0YXR1cywgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgcHVibGlzaFN0YXRlQ2hhbmdlOiBwdWJsaXNoU3RhdGVDaGFuZ2UsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHB1Ymxpc2hGdW5jdGlvbjogcHVibGlzaEZ1bmN0aW9uLCB1blB1Ymxpc2hGdW5jdGlvbjogdW5QdWJsaXNoRnVuY3Rpb24sIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsIGJ0blRleHQ6IGJ0blRleHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRzXG52YXIgQnJlYWRDcnVtYl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BhZ2VUaXRsZScsXG4gICAgY29tcG9uZW50czogeyBCcmVhZGNydW1iOiBCcmVhZENydW1iX3Z1ZV8xLmRlZmF1bHQgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBicmVhZGNydW1iRGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFja0xpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnb3ZlcmZsb3cteS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvdmVyZmxvdy15LWhpZGRlbicpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7fTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N0aWNreUVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JEYXRhOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgLy8gdG9nZ2xlIGlzc3Vlc1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZXJyb3JWYWx1ZSA9IF9iWzBdLCBlcnJvclRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdHlJZCcpO1xuICAgICAgICB2YXIgaXNzdWVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGxpc3Qgb2YgZXJyb3JzXG4gICAgICAgICAqKi9cbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5lcnJvckRhdGE7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvclR5cGVzID0gWydlcnJvcicsICd3YXJuaW5nJ107XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChlcnJvckRhdGEudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3ZhbGlkYXRvcic7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3VwbG9hZCc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGVtcERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjcml0aWNhbDogW10sXG4gICAgICAgICAgICB3YXJuaW5nczogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlVGVtcE1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JEYXRhUHJvcHMgPSBlcnJvckRhdGEudmFsdWU7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIHRlbXBEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGVtcERhdGFbZGF0YV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgZXJyb3JEYXRhUHJvcHNfMSA9IGVycm9yRGF0YVByb3BzOyBfaSA8IGVycm9yRGF0YVByb3BzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlcnJvckRhdGFQcm9wc18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgc2V2ZXJpdHkgPSBkYXRhLnNldmVyaXR5O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuY3JpdGljYWwucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5lcnJvcnMucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLndhcm5pbmdzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvcmxlbmd0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gaW1wb3J0RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gaW1wb3J0RXJyb3JzW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGltcG9ydEVycm9yc1t0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yRGF0YS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlVGVtcE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWxldGVFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC9lcnJvcnMvXCIuY29uY2F0KGFjdGl2aXR5SWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZW1vdmVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZXJyb3JWYWx1ZTogZXJyb3JWYWx1ZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCBpbXBvcnRFcnJvcnM6IGltcG9ydEVycm9ycywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBpbXBvcnRFcnJvclR5cGVzOiBpbXBvcnRFcnJvclR5cGVzLCB0ZW1wRGF0YTogdGVtcERhdGEsIHVwZGF0ZVRlbXBNZXNzYWdlOiB1cGRhdGVUZW1wTWVzc2FnZSwgaW1wb3J0RXJyb3JsZW5ndGg6IGltcG9ydEVycm9ybGVuZ3RoLCBkZWxldGVFcnJvcnM6IGRlbGV0ZUVycm9ycywgRXJyb3JMaXN0czogRXJyb3JMaXN0c192dWVfMS5kZWZhdWx0LCBVcGxvYWRlZEVycm9yczogVXBsb2FkZWRFcnJvcnNfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VwbG9hZGVkRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChwcm9wcy5pbmRleCA9PT0gY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLml0ZW1bdHlwZV0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWNvbnRhaW5lcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGFjdGl2ZTogYWN0aXZlLCBwcm9wczogcHJvcHMsIHRvZ2dsZTogdG9nZ2xlLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRWxlbWVudFN0YXR1cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvbG9yID0gZGF0YS52YWx1ZSA/ICd0ZXh0LXNwcmluZy01MCcgOiAndGV4dC1jcmltc29uLTUwJywgdGV4dCA9IGRhdGEudmFsdWUgPyAnY29tcGxldGVkJyA6ICdub3QgY29tcGxldGVkJztcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBkYXRhOiBkYXRhLCBjb2xvcjogY29sb3IsIHRleHQ6IHRleHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ByZXZpb3VzbHlQdWJsaXNoZWQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnUHJldmlvdXNseSBQdWJsaXNoZWQgb24gSUFUSScgfSxcbiAgICAgICAgaWNvbjogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdhcHByb3ZlZC1jbG91ZCcgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7fTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLyoqXG4gKiBQcm9wc1xuICovXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlEZWZhdWx0VmFsdWUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBodW1hbml0YXJpYW46IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFjdGl2ZSB2YXJpYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIH0pLCBkZWZhdWx0RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogW10sXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6IFtdLFxuICAgICAgICAgICAgaGllcmFyY2h5OiBbXSxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JSZXNldCA9IGRlZmF1bHRFcnJvcnMudmFsdWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbiBNb3VudGVkXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSwgZGVmYXVsdERhdGE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzL2RhdGFcIikpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMudmFsdWUgPSBkZWZhdWx0RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVmXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyksIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1Ym1pdCBmb3JtXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0RXJyb3JzLnZhbHVlID0gZXJyb3JSZXNldDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wdXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzXCIpLCBkZWZhdWx0VmFsdWVzLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVycm9ycy52YWx1ZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0RXJyb3JzLnZhbHVlKSwgKF9hID0gZXJyb3IucmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSAoX2IgPSBlcnJvci5yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGRlZmF1bHRWYWx1ZXM6IGRlZmF1bHRWYWx1ZXMsIGRlZmF1bHRFcnJvcnM6IGRlZmF1bHRFcnJvcnMsIGVycm9yUmVzZXQ6IGVycm9yUmVzZXQsIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlXzIgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbnZhciBTdGlja3lFcnJvcnNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBSZWZyZXNoVG9hc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlXCIpKTtcbnZhciBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCIpKTtcbi8vIEFjdGl2aXR5IENvbXBvbmVudHNcbnZhciBBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIikpO1xudmFyIEFjdGl2aXR5RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZVwiKSk7XG52YXIgUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFbGVtZW50czogQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEFjdGl2aXR5RWxlbWVudDogQWN0aXZpdHlFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJlc3VsdDogSW5kZXhfMS5SZXN1bHQsXG4gICAgICAgIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JzOiBTdGlja3lFcnJvcnNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFhsc1VwbG9hZEluZGljYXRvcjogWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUmVmcmVzaFRvYXN0TWVzc2FnZTogUmVmcmVzaFRvYXN0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFB1Ymxpc2hTZWxlY3RlZDogUHVibGlzaFNlbGVjdGVkX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb3JlQ29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlhdGlWYWxpZGF0b3JSZXNwb25zZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltcG9ydEFjdGl2aXR5RXJyb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXByZWNhdGlvblN0YXR1c01hcDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2VUeXBlOiB0cnVlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2U6ICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzIudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2MgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHR5cGVzID0gX2MudHlwZXMsIGNvcmVDb21wbGV0ZWQgPSBfYy5jb3JlQ29tcGxldGVkO1xuICAgICAgICB2YXIgcmVtb3ZlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JlbW92ZWQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIGluZGV4U3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvd1NpZGViYXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgbW9kYWwgcG9wdXAgY29tcGxldGVkXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2QgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfZFswXSwgZGVsZXRlVG9nZ2xlID0gX2RbMV07XG4gICAgICAgIHZhciBfZSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkb3dubG9hZFZhbHVlID0gX2VbMF0sIGRvd25sb2FkVG9nZ2xlID0gX2VbMV07XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPSAoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICdSZW1vdmVkIHN1Y2Nlc3NmdWxseSc7XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgdmFyIF9hOyByZXR1cm4gKF9hID0gaW5kZXhTdG9yZSA9PT0gbnVsbCB8fCBpbmRleFN0b3JlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbmRleFN0b3JlLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBidWxrUHVibGlzaFN0YXR1cygpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPSAoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQsIGNoZWNrU3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHBhLnZhbHVlID0geyBwdWJsaXNoaW5nQWN0aXZpdGllczoge30gfTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgY2hlY2tTdGF0dXMgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F2aW5nIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIHRoZSBkYXRhJ3MgZm9yIHNjcm9sbCBmdW5jdGlvblxuICAgICAgICAgKlxuICAgICAgICAgKiB0aGlzIGRhdGEgaXMgY3JlYXRlZCB1c2luZyBwcm9wcy5lbGVtZW50X2dyb3VwIGFuZCBwcm9wcy5hY3Rpdml0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIF9mID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBncm91cHMgPSBfZi5ncm91cHMsIGFjdGl2aXR5ID0gX2YuYWN0aXZpdHksIGVsZW1lbnRzID0gX2YuZWxlbWVudHMsIHN0YXR1cyA9IF9mLnN0YXR1cywgdHJhbnNhY3Rpb25zID0gX2YudHJhbnNhY3Rpb25zLCBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZSwgYWN0aXZpdHlQcm9wcyA9IGFjdGl2aXR5LnZhbHVlLCBhY3Rpdml0aWVzID0gZ3JvdXBzLnZhbHVlLCBlbGVtZW50UHJvcHMgPSBlbGVtZW50cy52YWx1ZSwgc3RhdHVzUHJvcHMgPSBzdGF0dXMudmFsdWUsIHRyYW5zYWN0aW9uUHJvcHMgPSB0cmFuc2FjdGlvbnMudmFsdWU7XG4gICAgICAgIHZhciByZXN1bHRzID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLnJlc3VsdHM7XG4gICAgICAgIGFjdGl2aXR5UHJvcHMucmVzdWx0ID0gcmVzdWx0cy52YWx1ZTtcbiAgICAgICAgYWN0aXZpdHlQcm9wcy50cmFuc2FjdGlvbnMgPSB0cmFuc2FjdGlvblByb3BzO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXSkubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2aXR5UHJvcHNba10gPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trXSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba10gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba10pLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWydjb250ZW50J10gPSBhY3Rpdml0eVByb3BzW2tdO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2hvdmVyX3RleHQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBlbGVtZW50UHJvcHNba11bJ2hvdmVyX3RleHQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnd2FybmluZ19pbmZvX3RleHQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSBlbGVtZW50UHJvcHNba11bJ3dhcm5pbmdfaW5mb190ZXh0J10pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhY3Rpdml0aWVzW2tleV1ba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgYWN0aXZpdGllc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2VuZXJhdGluZyBhdmFpbGFibGUgY2F0ZWdvcmllcyBvZiBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhncm91cGVkRGF0YSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWN0aXZpdGllcywga2V5KSkge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2VuYWJsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZGlzYWJsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdyb3VwaW5nIGFsbCBlbGVtZW50cyBhbmQgdGhlaXJzIGNvbXBsZXRlZCBzdGF0dXNcbiAgICAgICAgICpcbiAgICAgICAgICogY29tYmluaW5nIHByb3BzLmVsZW1lbnRzIGFuZCBwcm9wcy5zdGF0dXNcbiAgICAgICAgICpcbiAgICAgICAgICogQHJldHVybnMgb2JqZWN0XG4gICAgICAgICAqL1xuICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50UHJvcHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2NvbXBsZXRlZCddID0gKF9hID0gc3RhdHVzUHJvcHNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2U7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnbm90X2NvbXBsZXRlZCddID0gISgoX2IgPSBzdGF0dXNQcm9wc1trZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZSk7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnaGFzX2RhdGEnXSA9IDA7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGFjdGl2aXR5UHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2aXR5UHJvcHNba2V5XSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tleV0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tleV0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba2V5XSkubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trZXldKS5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tleV0udG9TdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2hhc19kYXRhJ10gPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbmRpbmcgY3VycmVudCBsYW5ndWFnZSAtIGFjdGl2aXR5IHRpdGxlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgcGFnZVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlQcm9wcy50aXRsZSwgKF9iID0gYWN0aXZpdHlQcm9wcy5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlZmF1bHRfbGFuZ3VhZ2UpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXRUaXRsZSh0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRpdGxlLnJlcGxhY2UoL18vZ2ksICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBhY3Rpdml0eVByb3BzLmxpbmtlZF90b19pYXRpLFxuICAgICAgICAgICAgc3RhdHVzOiBhY3Rpdml0eVByb3BzLnN0YXR1cyxcbiAgICAgICAgICAgIGhhc19ldmVyX2JlZW5fcHVibGlzaGVkOiBhY3Rpdml0eVByb3BzLmhhc19ldmVyX2JlZW5fcHVibGlzaGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVzXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcy52YWx1ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnY29yZUNvbXBsZXRlZCcsIGNvcmVDb21wbGV0ZWQudmFsdWUpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0TWVzc2FnZScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3REYXRhJywgdG9hc3REYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InLCBwcm9wcy5pbXBvcnRBY3Rpdml0eUVycm9yKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdhY3Rpdml0eUlkJywgcHJvcHMuYWN0aXZpdHkuaWQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2VsZW1lbnRzJywgcHJvcHMuZWxlbWVudHMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2FjdGl2aXRpZXMnLCBwdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncmVmcmVzaFRvYXN0TXNnJywgcmVmcmVzaFRvYXN0TXNnKTtcbiAgICAgICAgaW5kZXhTdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW2FjdGl2aXR5LnZhbHVlLmlkXSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAgR2xvYmFsIFN0YXRlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgaWF0aVZhbGlkYXRvclJlc3BvbnNlID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmlhdGlWYWxpZGF0b3JSZXNwb25zZTtcbiAgICAgICAgdmFyIHZhbGlkYXRpb25SZXN1bHQgPSBpYXRpVmFsaWRhdG9yUmVzcG9uc2UudmFsdWU7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgdmFsaWRhdGlvblJlc3VsdC5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAncHVibGlzaGVkJykpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgYWN0aXZpdGllczogYWN0aXZpdGllcyxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIFhsc1VwbG9hZEluZGljYXRvcjogWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGRvd25sb2FkVmFsdWU6IGRvd25sb2FkVmFsdWUsXG4gICAgICAgICAgICBkb3dubG9hZFRvZ2dsZTogZG93bmxvYWRUb2dnbGUsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wczogZWxlbWVudFByb3BzLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybWF0VGl0bGU6IGZvcm1hdFRpdGxlLFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBwYWdlVGl0bGUsXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBhY3Rpdml0eVByb3BzOiBhY3Rpdml0eVByb3BzLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICB0b2dnbGVTaWRlYmFyOiB0b2dnbGVTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBzY3JlZW5XaWR0aDogc2NyZWVuV2lkdGgsXG4gICAgICAgICAgICByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZyxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcyxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGluZGV4U3RvcmU6IGluZGV4U3RvcmUsXG4gICAgICAgICAgICBwYTogcGEsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IG9ubHlEZXByZWNhdGVkU3RhdHVzTWFwOiB1dGlsc18xLm9ubHlEZXByZWNhdGVkU3RhdHVzTWFwIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZVwiKSk7XG52YXIgT25Cb2FyZGluZ0luZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZVwiKSk7XG52YXIgRW1wdHlBY3Rpdml0eV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiKSk7XG52YXIgVGFibGVMYXlvdXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBFcnJvck1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xudmFyIGFjdGl2aXR5U3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbXB0eUFjdGl2aXR5OiBFbXB0eUFjdGl2aXR5X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUYWJsZUxheW91dDogVGFibGVMYXlvdXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT25Cb2FyZGluZ0luZGV4OiBPbkJvYXJkaW5nSW5kZXhfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb25PbmJvYXJkaW5nOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzRmlyc3RUaW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYW1lID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBkb3dubG9hZENvbXBsZXRlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGNsb3NlTW9kZWwgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHhsc0RhdGEgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZyA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXJ0QnVsa1B1Ymxpc2ggPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWRNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgcHJvY2Vzc2luZyA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciB1cGxvYWRDb21wbGV0ZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGltcG9ydENvbXBsZXRlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsQ291bnQgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd1hsc1N0YXR1cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgdGFibGVMb2FkZXIgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQXBpVXJsID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB2YXIgY3VycmVudEZpbHRlckJ5ID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZW5kcG9pbnQgPSAnJztcbiAgICAgICAgdmFyIHNob3dFbXB0eVRlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgIHZhciBjdXJyZW50UGFnZSA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgdmFsaWRGaWx0ZXJCeSA9IFtcbiAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgJ3B1Ymxpc2hlZCcsXG4gICAgICAgICAgICAncmVhZHlfZm9yX3JlcHVibGlzaGluZycsXG4gICAgICAgICAgICAnZHJhZnQnLFxuICAgICAgICBdO1xuICAgICAgICB2YXIgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwID0gKDAsIHZ1ZV8xLnJlZikoe1xuICAgICAgICAgICAgYWxsOiAwLFxuICAgICAgICAgICAgcHVibGlzaGVkOiAwLFxuICAgICAgICAgICAgcmVhZHlfZm9yX3JlcHVibGlzaGluZzogMCxcbiAgICAgICAgICAgIGRyYWZ0OiAwLFxuICAgICAgICB9KTtcbiAgICAgICAgZmV0Y2hBY3Rpdml0aWVzQ291bnRCeVB1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMi51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiO1xuICAgICAgICAgICAgc2hvd0VtcHR5VGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vZm9yIHNlc3Npb24gbWVzc2FnZVxuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZm9yIHB1Ymxpc2ggYnV0dG9uXG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwb2xsaW5nRm9yWGxzU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1lc3NhZ2UpID09PSAnU3RhcnRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gKF9iID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvdGFsX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAoX2MgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHJvY2Vzc2VkX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gISgoX2QgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9lID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2YgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YubWVzc2FnZSkgPT09ICdQcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKF9oID0gKF9nID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5kYXRhKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guc3VjY2VzcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2sgPSAoX2ogPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLmRhdGEpID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5tZXNzYWdlKSA9PT0gJ0NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3N0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2gsIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllc107IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZS52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoKChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdGF0dXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5zdGF0dXMpID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9oID0gKF9nID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5zdGF0dXMpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JYbHNTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudC52YWx1ZSA9IHJlcy5kYXRhLmZpbGVfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEFwaVVybC52YWx1ZSA9IHJlcy5kYXRhLnVybDtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSAhIXJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnY29tcGxldGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhcmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrRG93bmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9IChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgY3VycmVudEZpbHRlckJ5LnZhbHVlID0gZ2V0Q3VycmVudEZpbHRlckJ5KCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dFbXB0eVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNob3dCdXR0b25zOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd09ySGlkZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gdm9pZCAwKSB7IGRhdGEgPSBBcnJheTsgfVxuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvcGFnZS8nICsgYWN0aXZlX3BhZ2UgKyBxdWVyeVN0cmluZykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2UudmFsdWUgPSBhY3RpdmVfcGFnZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGZvciByZWZyZXNoIHRvYXN0IG1lc3NhZ2VcbiAgICAgICAgLy8gbGV0IHJlZnJlc2hUb2FzdE1zZyA9IHJlZihmYWxzZSk7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2VUeXBlOiB0cnVlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2U6ICdBY3Rpdml0eSBoYXMgYmVlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LCByZWZyZXNoIHRvIHNlZSBjaGFuZ2VzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZpbHRlckJ5UHVibGlzaFN0YXR1cyhzdGF0dXMpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICBpZiAoIXBhcmFtcy5oYXMoJ3EnKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3EnLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdmaWx0ZXJCeScsIHN0YXR1cyk7XG4gICAgICAgICAgICB2YXIgbmV3UXVlcnlTdHJpbmcgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCJcIi5jb25jYXQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBcIj9cIikuY29uY2F0KG5ld1F1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50RmlsdGVyQnkoKSB7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlckJ5ID0gdXJsUGFyYW1zLmdldCgnZmlsdGVyQnknKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyQnkgJiYgdmFsaWRGaWx0ZXJCeS5pbmNsdWRlcyhmaWx0ZXJCeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnYWxsJztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaEFjdGl2aXRpZXNDb3VudEJ5UHVibGlzaFN0YXR1cygpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoJy9hY3Rpdml0aWVzL2FjdGl2aXRpZXNfY291bnRfYnlfcHVibGlzaGVkX3N0YXR1cycpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGFsbFB1Ymxpc2hTdGF0dXNDb3VudE1hcC52YWx1ZS5hbGwgPSByZXNwb25zZS5kYXRhLmFsbDtcbiAgICAgICAgICAgICAgICBhbGxQdWJsaXNoU3RhdHVzQ291bnRNYXAudmFsdWUucHVibGlzaGVkID0gcmVzcG9uc2UuZGF0YS5wdWJsaXNoZWQ7XG4gICAgICAgICAgICAgICAgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwLnZhbHVlLnJlYWR5X2Zvcl9yZXB1Ymxpc2hpbmcgPVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLnJlYWR5X2Zvcl9yZXB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgICAgYWxsUHVibGlzaFN0YXR1c0NvdW50TWFwLnZhbHVlLmRyYWZ0ID0gcmVzcG9uc2UuZGF0YS5kcmFmdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3YXRjaFxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5hY3Rpdml0aWVzTGlzdCA9IGFjdGl2aXRpZXM7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZVxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdyZWZyZXNoVG9hc3RNc2cnLCByZWZyZXNoVG9hc3RNc2cpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd4bHNEb3dubG9hZFN0YXR1cycsIHhsc0Rvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZEFwaVVybCcsIGRvd25sb2FkQXBpVXJsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjbG9zZU1vZGVsJywgY2xvc2VNb2RlbCk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjb21wbGV0ZWQnLCB1cGxvYWRDb21wbGV0ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZGVmYXVsdExhbmd1YWdlJywgcHJvcHMuZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBzaG93T3JIaWRlOiBzaG93T3JIaWRlLFxuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyOiB0YWJsZUxvYWRlcixcbiAgICAgICAgICAgIHhsc0RhdGE6IHhsc0RhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSxcbiAgICAgICAgICAgIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLFxuICAgICAgICAgICAgeGxzRmFpbGVkOiB4bHNGYWlsZWQsXG4gICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLFxuICAgICAgICAgICAgaW1wb3J0Q29tcGxldGVkOiBpbXBvcnRDb21wbGV0ZWQsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsXG4gICAgICAgICAgICB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLFxuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLFxuICAgICAgICAgICAgYWN0aXZpdHlTdG9yZTogYWN0aXZpdHlTdG9yZSxcbiAgICAgICAgICAgIHBhOiBwYSxcbiAgICAgICAgICAgIGZpbHRlckJ5UHVibGlzaFN0YXR1czogZmlsdGVyQnlQdWJsaXNoU3RhdHVzLFxuICAgICAgICAgICAgY3VycmVudEZpbHRlckJ5OiBjdXJyZW50RmlsdGVyQnksXG4gICAgICAgICAgICBhbGxQdWJsaXNoU3RhdHVzQ291bnRNYXA6IGFsbFB1Ymxpc2hTdGF0dXNDb3VudE1hcCxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBtb2RhbFZhbHVlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2VNb2RhbCcsICd0b2FzdCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jb2RlbGlzdHMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFuZ3VhZ2VzLCByZXNwb25zZS5kYXRhLmxhbmd1YWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JnYW5pemF0aW9uLCByZXNwb25zZS5kYXRhLm9yZ2FuaXphdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdG9yZUFjdGl2aXR5KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2FjdGl2aXR5JywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlbWl0KCdjbG9zZU1vZGFsJyk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHJlc3BvbnNlLmRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubmFycmF0aXZlID0gZXJyb3JzLm5hcnJhdGl2ZSA/IGVycm9ycy5uYXJyYXRpdmVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubGFuZ3VhZ2UgPSBlcnJvcnMubGFuZ3VhZ2UgPyBlcnJvcnMubGFuZ3VhZ2VbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWN0aXZpdHlfaWRlbnRpZmllciA9IGVycm9ycy5hY3Rpdml0eV9pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJbMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVmYXVsdExhbmd1YWdlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ2RlZmF1bHRMYW5ndWFnZScpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGNsb3NlTW9kYWw6IGNsb3NlTW9kYWwsXG4gICAgICAgICAgICBzdG9yZUFjdGl2aXR5OiBzdG9yZUFjdGl2aXR5LFxuICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrUHVibGlzaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9idWxrUHVibGlzaE1vZGFsL0J1bGtQdWJsaXNoLnZ1ZVwiKSk7XG52YXIgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91c2VTaGFyZWRMb2NhbFN0b3JhZ2VcIik7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hTZWxlY3RlZCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVmVyaWZ5IGNvcmUgZWxlbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hhcmVkTWluaW1pemUgPSAoMCwgdXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEudXNlU2hhcmVkTWluaW1pemUpKCk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKCdQbGVhc2UgV2FpdCcpO1xuICAgICAgICB2YXIgY29yZUVsZW1lbnRMb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciBjYW5jZWxCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvY2FuY2VsLWJ1bGstcHVibGlzaCcpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNhbmNlbFZhbGlkYXRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS52YWxpZGF0aW9uUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2RlbGV0ZS12YWxpZGF0aW9uLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUucHVibGlzaEFsZXJ0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyksIHsgaWF0aVZhbGlkYXRvckxvYWRlcjogZmFsc2UsIHZhbGlkYXRpb25TdGF0czogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgY2FuY2VsQnVsa1B1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuc2hvd0J1bGtwdWJsaXNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZSA9IHsgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHt9IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdWxrUHVibGlzaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5jb21wbGV0ZWRTdGVwcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpLCB7IHJlc3BvbnNlOiBudWxsLCBoYXNGYWlsZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBhY3Rpdml0aWVzOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAvLyB0b2FzdCB2aXNpYmlsaXR5XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBkaXNwbGF5VG9hc3QgPSBmdW5jdGlvbiAobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIGJ1bGtQdWJsaXNoU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGJ1bGtQdWJsaXNoU3RhdHVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHZhbGlkYXRvclN1Y2Nlc3M7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstdmFsaWRhdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JTdWNjZXNzID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFeGlzdGluZ1Byb2Nlc3NNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstcHVibGlzaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnVsa1B1Ymxpc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5wdWJsaXNoQWxlcnRWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCcsICdmYWxzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICd7XCJwdWJsaXNoaW5nQWN0aXZpdGllc1wiOnt9fScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUgPSB7IHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7fSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5Q29yZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVsa1B1Ymxpc2hTdGF0dXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pLCBwZXJtYWxpbmsgPSBcIi9hY3Rpdml0eS9cIjtcbiAgICAgICAgdmFyIGRlcHJlY2F0aW9uU3RhdHVzTWFwID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgdmVyaWZ5Q29yZUVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0aWVzL2NvcmUtZWxlbWVudHMtY29tcGxldGVkP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRlcHJlY2F0aW9uX3N0YXR1c19tYXAubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmluY29tcGxldGUubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmNvbXBsZXRlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0VmFsaWRhdGlvbicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWN0aXZpdGllcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29yZV9lbGVtZW50c19jb21wbGV0aW9uLmluY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0aW9uU3RhdHVzTWFwLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kZXByZWNhdGlvbl9zdGF0dXNfbWFwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29yZUVsZW1lbnRMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvcmVFbGVtZW50TG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhbGlkYXRpbmcgQWN0aXZpdGllc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHZhbGlkYXRpb25FcnJvcnMgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzP29yZ2FuaXphdGlvbl9pZD1cIi5jb25jYXQoKF9iID0gKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm9yZ2FuaXphdGlvbl9pZCwgXCImJnV1aWQ9XCIpLmNvbmNhdCgoX2QgPSAoX2MgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quam9iX2JhdGNoX3V1aWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcykgJiYgKChfYiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZXMuZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbMSwgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBvb190eChcIjMxOTY4NzcyODNfMzI3XzEyXzMyN181NF8xMVwiLCAnRXJyb3IgcGFyc2luZyBkYXRhJywgZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUgPSB7IHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiB7fSB9O1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3tcInB1Ymxpc2hpbmdBY3Rpdml0aWVzXCI6e319Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBvb190eChcIjMxOTY4NzcyODNfMzM5XzZfMzM5XzQ5XzExXCIsICdFcnJvciBmZXRjaGluZyBkYXRhJywgZXJyb3IpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0b3BWYWxpZGF0aW5nID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvZGVsZXRlLXZhbGlkYXRpb24tc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhY3Rpdml0eVZhbGlkYXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHN0YXJ0VmFsaWRhdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzLCByZXMsIHJlc3BvbnNlLCBlcnJvcl8xO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCA0LCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc3RvcFZhbGlkYXRpbmcoKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcycsIGFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbGlkYXRpbmdBY3Rpdml0aWVzJywgYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRCdWxrUHVibGlzaCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGNhbmNlbEJ1bGtQdWJsaXNoKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQucG9zdChcIi9hY3Rpdml0aWVzL3ZhbGlkYXRlLWFjdGl2aXRpZXM/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMnLCByZXNwb25zZS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzJywgcmVzcG9uc2UuYWN0aXZpdGllcy5qb2luKCd8JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBvb190eChcIjMxOTY4NzcyODNfMzc4XzRfMzc4XzQ1XzExXCIsICdWYWxpZGF0aW9uIGVycm9yOicsIGVycm9yXzEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciB2YWxpZGF0ZUFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5pYXRpVmFsaWRhdG9yTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdGFydFZhbGlkYXRpb24oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCdWxrIHB1Ymxpc2hpbmcgYWN0aXZpdGllc1xuICAgICAgICAgKi9cbiAgICAgICAgLy8gbGV0IHNlbGVjdGVkQWN0aXZpdGllczogUmVmPG51bWJlcltdPiA9IHJlZihbXSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnc2VsZWN0ZWRBY3Rpdml0aWVzJywgc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgLy8gbG9jYWwgc3RvcmFnZSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0YXJ0QnVsa1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRCdWxrUHVibGlzaCcsIHRydWUpO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdTdGFydGluZyB0byBwdWJsaXNoJztcbiAgICAgICAgICAgIGlmIChwYS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCAne1wicHVibGlzaGluZ0FjdGl2aXRpZXNcIjp7fX0nKTtcbiAgICAgICAgICAgICAgICBwYS52YWx1ZSA9IHsgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqLyBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIG9vX3R4KFwiMzE5Njg3NzI4M180MTlfNF80MTlfNDJfMTFcIiwgJ3BhLnZhbHVlIGlzIHVuZGVmaW5lZCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9zdGFydC1idWxrLXB1Ymxpc2g/YWN0aXZpdGllcz1bXCIuY29uY2F0KHN0b3JlLnN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzLCBcIl1cIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzJywgJycpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbFZhbGlkYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwYS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgKChfYiA9IChfYSA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYWN0aXZpdGllcykgJiZcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2QgPSAoX2MgPSBwYSA9PT0gbnVsbCB8fCBwYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGEudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmFjdGl2aXRpZXMpXG4gICAgICAgICAgICAgICAgICAgIC5sZW5ndGgpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0QnVsa1B1Ymxpc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHNob3dWYWxpZGF0aW9uUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFZhbGlkYXRpb24gfHwgc3RvcmUuc3RhdGUudmFsaWRhdGlvblJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhcnROZXdQdWJsaXNoaW5nID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBcbiAgICAgICAgICAgICAgICAgICAgLy8gUnVuIGFsbCB0aHJlZSBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5kIHdhaXQgZm9yIGFsbCBvZiB0aGVtIHRvIGNvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdWxrUHVibGlzaCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbEJ1bGtQdWJsaXNoaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVmFsaWRhdGlvbigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSdW4gYWxsIHRocmVlIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgd2FpdCBmb3IgYWxsIG9mIHRoZW0gdG8gY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlcmZvcm0gdGhlIG90aGVyIHRhc2tzIGFmdGVyIHRoZSBwcmV2aW91cyBmdW5jdGlvbnMgY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFeGlzdGluZ1Byb2Nlc3NNb2RhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgMyBzZWNvbmRzIGJlZm9yZSBydW5uaW5nIGNoZWNrUHVibGlzaFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZSwgMTUwMCk7IH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgMyBzZWNvbmRzIGJlZm9yZSBydW5uaW5nIGNoZWNrUHVibGlzaFxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSBmaW5hbCBmdW5jdGlvbiBhZnRlciB0aGUgZGVsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGNoZWNrUHVibGlzaCgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSBmaW5hbCBmdW5jdGlvbiBhZnRlciB0aGUgZGVsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciByZXNldFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuY29tcGxldGVkU3RlcHMgPSBbXTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyksIHsgaWF0aVZhbGlkYXRvckxvYWRlcjogZmFsc2UsIHZhbGlkYXRpb25TdGF0czogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSwgeyBjb21wbGV0ZTogMCwgdG90YWw6IDAsIGZhaWxlZDogMCB9KSB9KTtcbiAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMucHVibGlzaGluZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpLCB7IHJlc3BvbnNlOiBudWxsLCBoYXNGYWlsZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICBpZHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sIGFjdGl2aXRpZXM6IG51bGwgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1ZhbGlkYXRpb25Qb3B1cC52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0Q29yZVZhbGlkYXRpb247IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmVyaWZ5Q29yZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUucHVibGlzaEFsZXJ0VmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydE5ld1B1Ymxpc2hpbmc7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXJ0TmV3UHVibGlzaGluZygpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaEVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHNoYXJlZE1pbmltaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCA9IHNoYXJlZE1pbmltaXplLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdwYVN0b3JhZ2UnLCBwYSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYnVsa1B1Ymxpc2hTdGF0dXMnLCBidWxrUHVibGlzaFN0YXR1cyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnc3RhcnRQdWJsaXNoJywgc3RhcnRQdWJsaXNoKTtcbiAgICAgICAgZXhwb3NlKHsgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2ggfSk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc2hhcmVkTWluaW1pemU6IHNoYXJlZE1pbmltaXplLCBidWxrUHVibGlzaFN0YXR1czogYnVsa1B1Ymxpc2hTdGF0dXMsIGlzTG9hZGluZzogaXNMb2FkaW5nLCBzdGFydFB1Ymxpc2g6IHN0YXJ0UHVibGlzaCwgc2hvd0V4aXN0aW5nUHJvY2Vzc01vZGFsOiBzaG93RXhpc3RpbmdQcm9jZXNzTW9kYWwsIHB1Ymxpc2hlZDogcHVibGlzaGVkLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgY29yZUVsZW1lbnRMb2FkZXI6IGNvcmVFbGVtZW50TG9hZGVyLCBjYW5jZWxCdWxrUHVibGlzaDogY2FuY2VsQnVsa1B1Ymxpc2gsIGNhbmNlbFZhbGlkYXRpb246IGNhbmNlbFZhbGlkYXRpb24sIGNhbmNlbEJ1bGtQdWJsaXNoaW5nOiBjYW5jZWxCdWxrUHVibGlzaGluZywgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGRpc3BsYXlUb2FzdDogZGlzcGxheVRvYXN0LCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJtYWxpbms6IHBlcm1hbGluaywgZGVwcmVjYXRpb25TdGF0dXNNYXA6IGRlcHJlY2F0aW9uU3RhdHVzTWFwLCB2ZXJpZnlDb3JlRWxlbWVudHM6IHZlcmlmeUNvcmVFbGVtZW50cywgdmFsaWRhdGlvbkVycm9yczogdmFsaWRhdGlvbkVycm9ycywgc3RvcFZhbGlkYXRpbmc6IHN0b3BWYWxpZGF0aW5nLCBzdGFydFZhbGlkYXRpb246IHN0YXJ0VmFsaWRhdGlvbiwgdmFsaWRhdGVBY3Rpdml0aWVzOiB2YWxpZGF0ZUFjdGl2aXRpZXMsIHBhOiBwYSwgc3RhcnRCdWxrUHVibGlzaDogc3RhcnRCdWxrUHVibGlzaCwgc2hvd1ZhbGlkYXRpb25Qb3B1cDogc2hvd1ZhbGlkYXRpb25Qb3B1cCwgc3RhcnROZXdQdWJsaXNoaW5nOiBzdGFydE5ld1B1Ymxpc2hpbmcsIHJlc2V0U3RhdHVzOiByZXNldFN0YXR1cywgb29fY206IG9vX2NtLCBvb19vbzogb29fb28sIG9vX3RyOiBvb190ciwgb29fdHg6IG9vX3R4LCBvb190czogb29fdHMsIG9vX3RlOiBvb190ZSwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBQYWdlTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnVsa1B1Ymxpc2hpbmdNb2RhbDogQnVsa1B1Ymxpc2hfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlZnJlc2hUb2FzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHR5cGU6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ2JnLW1pbnQgYm9yZGVyLXNwcmluZy0xMCdcbiAgICAgICAgICAgIDogJ2JnLWNyaW1zb24tMTAgYm9yZGVyLWNyaW1zb24tMjAnO1xuICAgICAgICB2YXIgY2xhc3NOYW1lMiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgY2xhc3NOYW1lMi52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwIGhvdmVyOnRleHQtc3ByaW5nLTUwJ1xuICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwIGhvdmVyOnRleHQtY3JpbXNvbi01MCc7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNsYXNzTmFtZTI6IGNsYXNzTmFtZTIgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBXaXphcmRJbmRleF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vd2l6YXJkU3RlcHMvV2l6YXJkSW5kZXgudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgQ2hlY2tpbmdBY3Rpdml0aWVzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlXCIpKTtcbnZhciBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlXCIpKTtcbnZhciBJYXRpVmFsaWRhdGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBQdWJsaXNoaW5nQWN0aXZpdHlfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcHVibGlzaGluZ0FjdGl2aXR5L1B1Ymxpc2hpbmdBY3Rpdml0eS52dWVcIikpO1xudmFyIHVzZVNoYXJlZExvY2FsU3RvcmFnZV8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXNlU2hhcmVkTG9jYWxTdG9yYWdlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0J1bGtQdWJsaXNoJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBjb3JlQ29tcGxldGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcmVjYXRpb25TdGF0dXNNYXA6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1hbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gJyc7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcmVFbGVtZW50TG9hZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25Qb3B1cDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbXG4gICAgICAgICdjYW5jZWxWYWxpZGF0aW9uJyxcbiAgICAgICAgJ3ZhbGlkYXRlQWN0aXZpdGllcycsXG4gICAgICAgICdzdGFydEJ1bGtQdWJsaXNoJyxcbiAgICAgICAgJ2NhbmNlbEJ1bGtQdWJsaXNoaW5nJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNoYXJlZE1pbmltaXplID0gKDAsIHVzZVNoYXJlZExvY2FsU3RvcmFnZV8xLnVzZVNoYXJlZE1pbmltaXplKSgpO1xuICAgICAgICB2YXIgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ25ld1NlbGVjdGVkQWN0aXZpdGllcycsIG5ld1NlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgIHZhciB2YWxpZGF0ZUFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCd2YWxpZGF0ZUFjdGl2aXRpZXMnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICgoKHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmNvbXBsZXRlICtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5mYWlsZWQpIC9cbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy50b3RhbCkgKlxuICAgICAgICAgICAgICAgIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBlcmNlbnRhZ2VXaWR0aCA9PT0gbnVsbCB8fCBwZXJjZW50YWdlV2lkdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBlcmNlbnRhZ2VXaWR0aC52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsaWRhdGlvblBlcmNlbnQnLCAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogMCkudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJyk7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLmNvbXBsZXRlZFN0ZXBzID0gWzFdO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlTWluaW1pemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaGFyZWRNaW5pbWl6ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzaG93UHVibGlzaGluZ0FjdGl2aXR5TW9kYWwgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAocHJvcHMucHVibGlzaGluZ0FjdGl2aXRpZXMgJiZcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5wdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoID4gMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FuY2VsQWN0aXZpdHlQdWJsaXNoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICdwdWJsaXNoaW5nQWN0aXZpdGllczp7fScpO1xuICAgICAgICAgICAgZW1pdCgnY2FuY2VsQnVsa1B1Ymxpc2hpbmcnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNhbmNlbFZhbGlkYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRDb3JlVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGVtaXQoJ2NhbmNlbFZhbGlkYXRpb24nKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0eUNvdW50ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZjtcbiAgICAgICAgICAgIHZhciBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID0gc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cztcbiAgICAgICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9IChfYSA9IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IG51bGwgfHwgYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy5wdWJsaXNoaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWN0aXZpdGllcztcbiAgICAgICAgICAgIHZhciBwdWJsaXNoaW5nU3RhdHVzID0gKF9jID0gKF9iID0gYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cyA9PT0gbnVsbCB8fCBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnB1Ymxpc2hpbmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZXNwb25zZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cztcbiAgICAgICAgICAgIHZhciB2YWxpZGF0aW9uU3RhdHNUb3RhbCA9ICgoX2QgPSBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzID09PSBudWxsIHx8IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudG90YWwpIHx8IDA7XG4gICAgICAgICAgICBpZiAocHVibGlzaGluZ0FjdGl2aXRpZXMgJiYgT2JqZWN0LmtleXMocHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocHVibGlzaGluZ1N0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgfHwgcHVibGlzaGluZ1N0YXR1cyA9PT0gJ3Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uU3RhdHNUb3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvblN0YXRzVG90YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY29yZUNvbXBsZXRlZENvdW50ID0gKChfZSA9IHByb3BzLmNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubGVuZ3RoKSB8fCAwO1xuICAgICAgICAgICAgdmFyIGNvcmVJbkNvbXBsZXRlZENvdW50ID0gKChfZiA9IHByb3BzLmNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5sZW5ndGgpIHx8IDA7XG4gICAgICAgICAgICByZXR1cm4gY29yZUNvbXBsZXRlZENvdW50ICsgY29yZUluQ29tcGxldGVkQ291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2hFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzaGFyZWRNaW5pbWl6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmlzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQgPSBzaGFyZWRNaW5pbWl6ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcHJvcHM6IHByb3BzLCBzaGFyZWRNaW5pbWl6ZTogc2hhcmVkTWluaW1pemUsIG5ld1NlbGVjdGVkQWN0aXZpdGllczogbmV3U2VsZWN0ZWRBY3Rpdml0aWVzLCBlbWl0OiBlbWl0LCB2YWxpZGF0ZUFjdGl2aXRpZXM6IHZhbGlkYXRlQWN0aXZpdGllcywgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIHN0YXJ0QnVsa1B1Ymxpc2g6IHN0YXJ0QnVsa1B1Ymxpc2gsIGhhbmRsZU1pbmltaXplOiBoYW5kbGVNaW5pbWl6ZSwgc2hvd1B1Ymxpc2hpbmdBY3Rpdml0eU1vZGFsOiBzaG93UHVibGlzaGluZ0FjdGl2aXR5TW9kYWwsIGNhbmNlbEFjdGl2aXR5UHVibGlzaGluZzogY2FuY2VsQWN0aXZpdHlQdWJsaXNoaW5nLCBjYW5jZWxWYWxpZGF0aW9uOiBjYW5jZWxWYWxpZGF0aW9uLCBwdWJsaXNoaW5nQWN0aXZpdHlDb3VudDogcHVibGlzaGluZ0FjdGl2aXR5Q291bnQsIFdpemFyZEluZGV4OiBXaXphcmRJbmRleF92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBDaGVja2luZ0FjdGl2aXRpZXM6IENoZWNraW5nQWN0aXZpdGllc192dWVfMS5kZWZhdWx0LCBSb2xsaW5nTG9hZGVyOiBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIElhdGlWYWxpZGF0ZTogSWF0aVZhbGlkYXRlX3Z1ZV8xLmRlZmF1bHQsIFB1Ymxpc2hpbmdBY3Rpdml0eTogUHVibGlzaGluZ0FjdGl2aXR5X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFRhYkluZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi90YWJzL1RhYkluZGV4LnZ1ZVwiKSk7XG52YXIgYWN0aXZpdGllc18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQ2hlY2tpbmdBY3Rpdml0aWVzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBjb3JlQ29tcGxldGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcmVjYXRpb25TdGF0dXNNYXA6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1hbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gJyc7IH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgYWN0aXZpdGllc18xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHByb3BzOiBwcm9wcywgVGFiSW5kZXg6IFRhYkluZGV4X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgUm9sbGluZ0xvYWRlckNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYkluZGV4X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi90YWJzL1RhYkluZGV4LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSWF0aVZhbGlkYXRlJyxcbiAgICBwcm9wczoge1xuICAgICAgICB2YWxpZGF0aW9uU3RhdHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0aWVzTGlzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWFsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyY2VudGFnZVdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ25ld1NlbGVjdGVkQWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgYWN0aXZlVGFiID0gKDAsIHZ1ZV8yLnJlZikoMSk7XG4gICAgICAgIHZhciBoYW5kbGVBY3RpdmVUYWIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGFjdGl2ZVRhYi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAvL3NldHRpbmcgZGF0YSBmcm9tIGxvY2FsIHN0b3JhZ2UgdG8gdnVleCAsdG8gcHJlc2VydmUgc3RhdGUgd2hlbiB3aW5kb3cgaXMgcmVsb2FkZWRcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy90byBjaGVjayBpZiB2YWxpZGF0aW9uIG5lZWQgdG8gYmUgc2hvdyBvZiBub3Qgd2hlbiBuYXZpZ2F0ZWQgb3IgcmVmcmVzaGVkXG4gICAgICAgICAgICB2YXIgc2hvd1BvcHVwID0gQm9vbGVhbihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJykpO1xuICAgICAgICAgICAgaWYgKHNob3dQb3B1cCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBoYXNFcnJvciA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMuc2hvd1ZhbGlkYXRpb25FcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGxBY3Rpdml0aWVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgPSBPYmplY3Qua2V5cyh2YWxpZEFjdGl2aXRpZXMudmFsdWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBwYXJzZUludChrZXkpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ld1NlbGVjdGVkQWN0aXZpdGllcy52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoc3RvcmUuc3RhdGUuYnVsa0FjdGl2aXR5UHVibGlzaFN0YXR1cy52YWxpZGF0aW9uU3RhdHMudG90YWwgPT1cbiAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzLnZhbGlkYXRpb25TdGF0cy5jb21wbGV0ZSArXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMudmFsaWRhdGlvblN0YXRzLmZhaWxlZCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcycsIHZhbHVlLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHZhbGlkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhwcm9wcy5hY3Rpdml0aWVzTGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuc3RhdHVzICE9PSAnZmFpbGVkJztcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpblZhbGlkZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BzLmFjdGl2aXRpZXNMaXN0KS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdGF0dXMgPT0gJ2ZhaWxlZCc7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdG90YWxWYWxpZGF0aW9uRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocHJvcHMuYWN0aXZpdGllc0xpc3QpLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gIWl0ZW0uaXNfdmFsaWQ7IH0pXG4gICAgICAgICAgICAgICAgLmxlbmd0aDtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhwcm9wcy5hY3Rpdml0aWVzTGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuc3RhdHVzICE9PSAnZmFpbGVkJztcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgaWRzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgICAgbmV3U2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlID0gaWRzLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBwYXJzZUludChrZXkpOyB9KTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZGVlcDogdHJ1ZSxcbiAgICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcHJvcHM6IHByb3BzLCBuZXdTZWxlY3RlZEFjdGl2aXRpZXM6IG5ld1NlbGVjdGVkQWN0aXZpdGllcywgYWN0aXZlVGFiOiBhY3RpdmVUYWIsIGhhbmRsZUFjdGl2ZVRhYjogaGFuZGxlQWN0aXZlVGFiLCBoYXNFcnJvcjogaGFzRXJyb3IsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIHZhbGlkQWN0aXZpdGllczogdmFsaWRBY3Rpdml0aWVzLCBpblZhbGlkZWRBY3Rpdml0aWVzOiBpblZhbGlkZWRBY3Rpdml0aWVzLCB0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzOiB0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzLCBSb2xsaW5nTG9hZGVyOiBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIFRhYkluZGV4OiBUYWJJbmRleF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hpbmdBY3Rpdml0eScsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciByZXRyeVB1Ymxpc2hpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaFJldHJ5JywgIXN0b3JlLnN0YXRlLnN0YXJ0UHVibGlzaGluZ1JldHJ5KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCByZXRyeVB1Ymxpc2hpbmc6IHJldHJ5UHVibGlzaGluZywgUm9sbGluZ0xvYWRlcjogUm9sbGluZ0xvYWRlckNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVGFiSW5kZXgnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRhYnM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBbXTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0JvdHRvbUJhbm5lcjoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnYWN0aXZlVGFiJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3RpdmVUYWIgPSAoMCwgdnVlXzIucmVmKSgxKTtcbiAgICAgICAgdmFyIGhhbmRsZUFjdGl2ZVRhYiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgYWN0aXZlVGFiLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBlbWl0KCdhY3RpdmVUYWInLCB2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgYWN0aXZlVGFiOiBhY3RpdmVUYWIsIGVtaXQ6IGVtaXQsIGhhbmRsZUFjdGl2ZVRhYjogaGFuZGxlQWN0aXZlVGFiIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnV2l6YXJkSW5kZXgnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbXBsZXRlZFN0ZXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdOyB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzdGVwcyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ2hlY2tpbmcnLFxuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUHVibGlzaCcsXG4gICAgICAgICAgICAgICAgaWQ6IDIsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHN0ZXBzOiBzdGVwcyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbmRpdGlvbnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29udGFjdEluZm8nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdIdW1hbml0YXJpYW5TY29wZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSWF0aUlkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5TG9jYXRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdPdGhlcklkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlQYXJ0aWNpcGF0aW5nT3JnJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BsYW5uZWREaXNidXJzZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvbGljeU1hcmtlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZWNpcGllbnRDb3VudHJ5JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiByb3VuZEZsb2F0KG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtKS50b0ZpeGVkKDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50UmVnaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiByb3VuZEZsb2F0KG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtKS50b0ZpeGVkKDIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZWxhdGVkQWN0aXZpdHknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ2FuaXphdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbi8vY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciBIZWxwZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hlbHBlclRleHQudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVJlc3VsdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIZWxwZXJUZXh0OiBIZWxwZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBOb3RZZXQ6IEhhdmVOb3RBZGRlZFlldF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50SGFzRGVwcmVjYXRlZENvZGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtCb29sZWFuXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZm9ybWF0ID0gJ01NTU0gREQsIFlZWVknO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgcmVzdWx0RGF0YSA9IGRhdGEudmFsdWUuY29udGVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRMYW5ndWFnZSA9ICdlbic7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb21lbnQ6IG1vbWVudF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgICAgIHJlc3VsdERhdGE6IHJlc3VsdERhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgaW5kaWNhdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQ7XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBtZXRob2RzOiB7IG9ubHlEZXByZWNhdGVkU3RhdHVzTWFwOiB1dGlsc18xLm9ubHlEZXByZWNhdGVkU3RhdHVzTWFwIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUYWcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUcmFuc2FjdGlvbnMnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2hlbHBlclxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRpdGxlRWxlbWVudDogSW5kZXhfMS5UaXRsZUVsZW1lbnQsXG4gICAgICAgIE1lYXN1cmU6IEluZGV4XzEuTWVhc3VyZSxcbiAgICAgICAgQXNjZW5kaW5nOiBJbmRleF8xLkFzY2VuZGluZyxcbiAgICAgICAgQWdncmVnYXRpb25TdGF0dXM6IEluZGV4XzEuQWdncmVnYXRpb25TdGF0dXMsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBCYXNlbGluZTogSW5kZXhfMS5CYXNlbGluZSxcbiAgICAgICAgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayxcbiAgICAgICAgUGVyaW9kOiBJbmRleF8xLlBlcmlvZCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0VGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGluZGljYXRvciA9IF9iLmluZGljYXRvciwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eSwgcGVyaW9kID0gX2IucGVyaW9kLCByZXN1bHRUaXRsZSA9IF9iLnJlc3VsdFRpdGxlO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIC8vaW5kaWNhdG9yXG4gICAgICAgIHZhciBpbmRpY2F0b3JEYXRhID0gaW5kaWNhdG9yLnZhbHVlLmluZGljYXRvcjtcbiAgICAgICAgdmFyIHBlcmlvZERhdGEgPSBwZXJpb2QudmFsdWU7XG4gICAgICAgIC8vIHZ1ZSBwcm92aWRlc1xuICAgICAgICB2YXIgcGFyZW50RGF0YSA9IHtcbiAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0eS52YWx1ZS5pZCxcbiAgICAgICAgICAgIHJlc3VsdDogaW5kaWNhdG9yLnZhbHVlLnJlc3VsdF9pZCxcbiAgICAgICAgICAgIGluZGljYXRvcjogaW5kaWNhdG9yLnZhbHVlLmlkLFxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudERhdGEnLCBwYXJlbnREYXRhKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IGluZGljYXRvci52YWx1ZS5yZXN1bHRfaWQsIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFuZ3VhZ2UsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0VGl0bGVkID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0VGl0bGUudmFsdWVbMF0ubmFycmF0aXZlLCBkZWZhdWx0TGFuZ3VhZ2UpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JcIiksIGluZGljYXRvclRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoaW5kaWNhdG9yRGF0YS50aXRsZVswXS5uYXJyYXRpdmUsIGRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUmVzdWx0IExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZWQsXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdJbmRpY2F0b3IgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlGb3JJbmRpY2F0b3IgPSBmdW5jdGlvbiAoZWxlbWVudE9yQXR0cmlidXRlKSB7XG4gICAgICAgICAgICB2YXIgbWFuZGF0b3J5RWxlbWVudE9yQXR0cmlidXRlID0gWydtZWFzdXJlJywgJ3RpdGxlJ107XG4gICAgICAgICAgICByZXR1cm4gbWFuZGF0b3J5RWxlbWVudE9yQXR0cmlidXRlLmluY2x1ZGVzKGVsZW1lbnRPckF0dHJpYnV0ZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBpbmRpY2F0b3JUaXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICBpbmRpY2F0b3JEYXRhOiBpbmRpY2F0b3JEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICByZXN1bHRMaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgaW5kaWNhdG9yTGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcGVyaW9kRGF0YTogcGVyaW9kRGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgY291bnREb2N1bWVudExpbms6IHV0aWxzXzEuY291bnREb2N1bWVudExpbmssXG4gICAgICAgICAgICBpc01hbmRhdG9yeUZvckluZGljYXRvcjogaXNNYW5kYXRvcnlGb3JJbmRpY2F0b3IsXG4gICAgICAgICAgICBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kaWNhdG9yczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHBhcmVudERhdGEgPSBfYS5wYXJlbnREYXRhO1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC5pZCwgcmVzdWx0VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC50aXRsZSwgJ2VuJyksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvclwiKTtcbiAgICAgICAgdmFyIGluZGljYXRvcnNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdSZXN1bHQgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdFwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnSW5kaWNhdG9yIExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9ycy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpbmRpY2F0b3JzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5kaWNhdG9yc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIHJlc3VsdElkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGluZGljYXRvcnNEYXRhOiBpbmRpY2F0b3JzRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICByZXN1bHRMaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgaW5kaWNhdG9yTGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcmVzdWx0SWQ6IHJlc3VsdElkLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yQWdncmVnYXRpb25TdGF0dXMnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgc3RhdHVzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHN0YXR1c0RhdGE6IHN0YXR1c0RhdGEgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL0luZGV4XCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yQmFzZWxpbmUnLFxuICAgIGNvbXBvbmVudHM6IHsgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJhc2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgYmFzZWxpbmUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgbG9jYXRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5yZWZlcmVuY2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gbG9jYXRpb25zLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuam9pbignLCAnKSArICcgJyArICdhbmQnICsgJyAnICsgbGFzdExvY2F0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RMb2NhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9uIHRvIHJldHVybiBkaW1lbnNpb25zIG9mIGJhc2VsaW5lXG4gICAgICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZGltZW5zaW9ucyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGl0ZW0ubmFtZVxuICAgICAgICAgICAgICAgICAgICA/IFwiPHNwYW4+XCIuY29uY2F0KGl0ZW0ubmFtZSwgXCI8L3NwYW4+XCIpXG4gICAgICAgICAgICAgICAgICAgIDogXCI8c3BhbiBjbGFzcz1cXFwidGV4dC14cyBpdGFsaWMgdGV4dC1saWdodC1ncmF5XFxcIj5OL0E8L3NwYW4+XCI7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gaXRlbS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IFwiPHNwYW4+XCIuY29uY2F0KGl0ZW0udmFsdWUsIFwiPC9zcGFuPlwiKVxuICAgICAgICAgICAgICAgICAgICA6IFwiPHNwYW4gY2xhc3M9XFxcInRleHQteHMgaXRhbGljIHRleHQtbGlnaHQtZ3JheVxcXCI+Ti9BPC9zcGFuPlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBcImNvZGUgLSBcIi5jb25jYXQobmFtZSwgXCIsIHZhbHVlIC0gXCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCc7ICcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmFzZWxpbmU6IGJhc2VsaW5lLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgICAgIGVsZW1lbnRTcGFjaW5nOiBlbGVtZW50U3BhY2luZyxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckRlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGVzY3JpcHRpb25EYXRhOiBkZXNjcmlwdGlvbkRhdGEsIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEb2N1bWVudExpbmsnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhbGlnbm1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGxEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGxEYXRhOiBkbERhdGEsIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yQXNjZW5kaW5nJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvck1lYXN1cmUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtZWFzdXJlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBtZWFzdXJlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVEYXRhOiBtZWFzdXJlRGF0YSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUGVyaW9kJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWQgPSAoMCwgdnVlXzEuaW5qZWN0KSgncGFyZW50RGF0YScpO1xuICAgICAgICByZXR1cm4geyBpZDogaWQsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmRGF0YTogcmVmRGF0YSwgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yVGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGl0bGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdGl0bGVEYXRhOiB0aXRsZURhdGEsIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgU3RlcEJhcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TdGVwQmFyLnZ1ZVwiKSk7XG52YXIgUHVibGlzaGluZ1NldHRpbmdzU3RlcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZVwiKSk7XG52YXIgRGVmYXVsdFZhbHVlc1N0ZXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vU3RlcHMvRGVmYXVsdFZhbHVlc1N0ZXAudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25EYXRhU3RlcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWVcIikpO1xudmFyIEFjdGl2aXR5U3RlcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TdGVwcy9BY3Rpdml0eVN0ZXAudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT25Cb2FyZGluZ0luZGV4JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW5jaWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZsb3dUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEFpZFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VGllZFN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbk9uYm9hcmRpbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaXNGaXJzdFRpbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdGVwID0gKDAsIHZ1ZV8yLnJlZikoMSk7XG4gICAgICAgIHZhciBtb2RhbFN0YXRlID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpbml0aWFsUmVuZGVyID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJTZXR0aW5nID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgaXNNb2RlbENsb3NlQ2xpY2tlZCA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ2lzTW9kZWxDbG9zZUNsaWNrZWQnLCBmYWxzZSwgc2Vzc2lvblN0b3JhZ2UpO1xuICAgICAgICB2YXIgaXNGb3JjZU9wZW5Nb2RhbCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lzRm9yY2VPcGVuTW9kYWwnKSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uU3RlcHMgPSAoMCwgdnVlXzIucmVmKShwcm9wcy5vcmdhbml6YXRpb25PbmJvYXJkaW5nLnN0ZXBzX3N0YXR1cyk7XG4gICAgICAgIHZhciBmaXJzdEluY29tcGxldGVTdGVwID0gb3JnYW5pemF0aW9uU3RlcHMudmFsdWUuZmluZEluZGV4KGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiAhc3RlcC5jb21wbGV0ZTsgfSkgKyAxO1xuICAgICAgICBpZiAoIXByb3BzLmlzRmlyc3RUaW1lICYmIGZpcnN0SW5jb21wbGV0ZVN0ZXAgPiAwKSB7XG4gICAgICAgICAgICBzdGVwLnZhbHVlID0gZmlyc3RJbmNvbXBsZXRlU3RlcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZmV0Y2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldCgnL3NldHRpbmcvZGF0YScpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlclNldHRpbmcudmFsdWUgPSAoX2IgPSAoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nX2luZm87XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlLnZhbHVlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzKSwgKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuZGVmYXVsdF92YWx1ZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikgeyAvKiBlc2xpbnQtZGlzYWJsZSAqLyByZXR1cm4gY29uc29sZS5sb2cuYXBwbHkoLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZSwgb29fb28oXCI4MTczNzI4MDJfMjM2XzIwXzIzNl80NV80XCIsICdFcnJvcicsIGVycikpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGlzRm9yY2VPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgIG1vZGFsU3RhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcbiAgICAgICAgICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XG4gICAgICAgICAgICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlKSB7XG4gICAgICAgICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyxcbiAgICAgICAgLy8gICBwcm9wcy5vcmdhbml6YXRpb25PbmJvYXJkaW5nLmRvbnRfc2hvd19hZ2FpbixcbiAgICAgICAgLy8gICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlLFxuICAgICAgICAvLyAgICdTdGF0dXMnXG4gICAgICAgIC8vICk7XG4gICAgICAgIC8vIGlmIChcbiAgICAgICAgLy8gICAhcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyB8fFxuICAgICAgICAvLyAgICFwcm9wcy5vcmdhbml6YXRpb25PbmJvYXJkaW5nLmRvbnRfc2hvd19hZ2FpbiB8fFxuICAgICAgICAvLyAgICFpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXG4gICAgICAgIC8vICkge1xuICAgICAgICAvLyAgIG1vZGFsU3RhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmKHByb3BzLilcbiAgICAgICAgLy8gd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyAgIGlmIChcbiAgICAgICAgLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcbiAgICAgICAgLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XG4gICAgICAgIC8vICAgICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXG4gICAgICAgIC8vICAgKSB7XG4gICAgICAgIC8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIC8vICAgfSBlbHNlIGlmIChzdG9yZS5zdGF0ZS5nZXRTdGFydGVkQnV0dG9uKSB7XG4gICAgICAgIC8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2hFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChtb2RhbFN0YXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZU1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdpc0ZvcmNlT3Blbk1vZGFsJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm9jZWVkU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsb3NlTW9kYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByZXZpb3VzU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUtLTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZUNoYW5nZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlU3RlcCA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcy52YWx1ZVtzdGVwIC0gMV0uY29tcGxldGUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVtb3ZlQ29tcGxldGVkU3RlcCA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcy52YWx1ZVtzdGVwIC0gMV0uY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoYW5nZVN0ZXAgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgPSBpbmRleDtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAvKiBjOCBpZ25vcmUgc3RhcnQgKi8gLyogZXNsaW50LWRpc2FibGUgKi8gO1xuICAgICAgICBmdW5jdGlvbiBvb19jbSgpIHsgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgZXZhbCkoXCJnbG9iYWxUaGlzLl9jb25zb2xlX25pbmphXCIpIHx8ICgwLCBldmFsKShcIi8qIGh0dHBzOi8vZ2l0aHViLmNvbS93YWxsYWJ5anMvY29uc29sZS1uaW5qYSNob3ctZG9lcy1pdC13b3JrICovJ3VzZSBzdHJpY3QnO3ZhciBfMHhiMzg0Nzk9XzB4MjY5MDsoZnVuY3Rpb24oXzB4M2RhOWE3LF8weDEyOTk4Myl7dmFyIF8weDI0MTNmMj1fMHgyNjkwLF8weDRlZDdiYT1fMHgzZGE5YTcoKTt3aGlsZSghIVtdKXt0cnl7dmFyIF8weDE1MzU2MD0tcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk1KSkvMHgxKihwYXJzZUludChfMHgyNDEzZjIoMHgxYzgpKS8weDIpKy1wYXJzZUludChfMHgyNDEzZjIoMHgxOTEpKS8weDMqKHBhcnNlSW50KF8weDI0MTNmMigweDFhZikpLzB4NCkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWQyKSkvMHg1Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxYWEpKS8weDYqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOTkpKS8weDcpK3BhcnNlSW50KF8weDI0MTNmMigweDFjOSkpLzB4OCstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWVhKSkvMHg5K3BhcnNlSW50KF8weDI0MTNmMigweDFmNykpLzB4YSooLXBhcnNlSW50KF8weDI0MTNmMigweDE4YikpLzB4Yik7aWYoXzB4MTUzNTYwPT09XzB4MTI5OTgzKWJyZWFrO2Vsc2UgXzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO31jYXRjaChfMHgxMTRkZTYpe18weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9fX0oXzB4NDlmYiwweDc1Nzc5KSk7ZnVuY3Rpb24gXzB4NDlmYigpe3ZhciBfMHgzMTNjMjk9WydfcXVvdGVkUmVnRXhwJywnd2FybicsJ2F1dG9FeHBhbmRQcmV2aW91c09iamVjdHMnLCdnZXRQcm90b3R5cGVPZicsJ19XZWJTb2NrZXQnLCdnZXR0ZXInLCcxMjMwVEVwbGxoJywnZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdDpcXFxceDIwJywnX3NvcnRQcm9wcycsJ2NvdW50Jywnc29ydCcsJ3NldCcsJ251bGwnLCd0b0xvd2VyQ2FzZScsJ25lZ2F0aXZlWmVybycsJ2pvaW4nLCdzdGFjaycsJ19oYXNTeW1ib2xQcm9wZXJ0eU9uSXRzUGF0aCcsJ2N1cnJlbnQnLCdfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywndGhlbicsJ2dldE93blByb3BlcnR5U3ltYm9scycsJ0hUTUxBbGxDb2xsZWN0aW9uJywndXJsJywncGF0aFRvRmlsZVVSTCcsJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJywnY2FwcGVkJywnX2lzTWFwJywnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJywncm9vdEV4cHJlc3Npb24nLCd1bnJlZicsJ2Z1bmN0aW9uJywnaGl0cycsJ3N0ckxlbmd0aCcsJ19oYXNNYXBPbkl0c1BhdGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwZmluZFxcXFx4MjBhbmRcXFxceDIwbG9hZFxcXFx4MjBXZWJTb2NrZXQnLCdfdW5kZWZpbmVkJywnbmFtZScsJ19zZW5kRXJyb3JNZXNzYWdlJywnZXZlbnRSZWNlaXZlZENhbGxiYWNrJywnX3BfbGVuZ3RoJywnZ2xvYmFsJywnZXJyb3InLCdcXFxceDIwYnJvd3NlcicsJ25lZ2F0aXZlSW5maW5pdHknLCdbb2JqZWN0XFxcXHgyMFNldF0nLCdzZW5kJywncHJvdG90eXBlJywnZGVwdGgnLCdyZWFkeVN0YXRlJywnX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZScsJ3VuZGVmaW5lZCcsJ19TeW1ib2wnLCdfcHJvcGVydHknLCdTZXQnLCdtYXAnLCdfaW5OZXh0RWRnZScsJ3ZhbHVlT2YnLCdzZWVcXFxceDIwaHR0cHM6Ly90aW55dXJsLmNvbS8ydnQ4anh6d1xcXFx4MjBmb3JcXFxceDIwbW9yZVxcXFx4MjBpbmZvLicsJ19vYmplY3RUb1N0cmluZycsJ3Bvc2l0aXZlSW5maW5pdHknLCdiaW5kJywnY2FsbCcsJ19pc05lZ2F0aXZlWmVybycsJ05FWFRfUlVOVElNRScsJ2xvZ2dlclxcXFx4MjB3ZWJzb2NrZXRcXFxceDIwZXJyb3InLCdfZ2V0T3duUHJvcGVydHlOYW1lcycsJ21lc3NhZ2UnLCdiaWdpbnQnLCd0aW1lJywnc3RhcnRzV2l0aCcsJ19jbGVhbk5vZGUnLCdfZGlzcG9zZVdlYnNvY2tldCcsJ19yZWdFeHBUb1N0cmluZycsJ29uZXJyb3InLCdjb25jYXQnLCcxLjAuMCcsJ2Jvb2xlYW4nLCdbb2JqZWN0XFxcXHgyMERhdGVdJywncmVtaXgnLCdsZW5ndGgnLCdzb3J0UHJvcHMnLCdvbm9wZW4nLCdfa2V5U3RyUmVnRXhwJywnZGF0YScsJ3JlZHVjZUxpbWl0cycsJ3Byb3BzJywnc29tZScsJ19jYXBJZlN0cmluZycsJzE3MzEwNDA5MzQ3MDQnLCdwZXJmX2hvb2tzJywnb2JqZWN0JywndmVyc2lvbnMnLCdmcm9tQ2hhckNvZGUnLCduYW4nLCdhdXRvRXhwYW5kTGltaXQnLCdsb2cnLCdnZXQnLCdwYXJzZScsJ19jb25uZWN0ZWQnLCdzdWJzdHInLCdub2RlTW9kdWxlcycsJ1xcXFx4MjBzZXJ2ZXInLCdfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0JywnX2Nvbm5lY3RpbmcnLCdNYXAnLFxcXCIvaG9tZS9mbHVmZnkvLnZzY29kZS9leHRlbnNpb25zL3dhbGxhYnlqcy5jb25zb2xlLW5pbmphLTEuMC4zNjYvbm9kZV9tb2R1bGVzXFxcIiwnTkVHQVRJVkVfSU5GSU5JVFknLCdfd3MnLCdjb25zb2xlJywnZG9ja2VyaXplZEFwcCcsJ190eXBlJywnX2NvbnNvbGVfbmluamFfc2Vzc2lvbicsJ2VsZW1lbnRzJywnYWxsU3RyTGVuZ3RoJywnX2FkZExvYWROb2RlJywnc3ltYm9sJywncm9vdF9leHBfaWQnLCdfYWxsb3dlZFRvU2VuZCcsJ3dzL2luZGV4LmpzJywncGVyZm9ybWFuY2UnLCdfc2V0Tm9kZUlkJywnX2JsYWNrbGlzdGVkUHJvcGVydHknLCdSZWdFeHAnLCdyZXBsYWNlJywnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnLCd0aW1lU3RhbXAnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlc3RhcnRpbmdcXFxceDIwdGhlXFxcXHgyMHByb2Nlc3NcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJ2FuZ3VsYXInLCdjYXBwZWRFbGVtZW50cycsJ19zb2NrZXQnLCdfaXNVbmRlZmluZWQnLCdfaXNQcmltaXRpdmVXcmFwcGVyVHlwZScsJ2dldFdlYlNvY2tldENsYXNzJywnbWV0aG9kJywnW29iamVjdFxcXFx4MjBNYXBdJywndGVzdCcsJ19zZXROb2RlRXhwYW5kYWJsZVN0YXRlJywnc3RhY2tUcmFjZUxpbWl0JywnW29iamVjdFxcXFx4MjBBcnJheV0nLCcyMTIxOVlyUmxVZScsJ19tYXhDb25uZWN0QXR0ZW1wdENvdW50JywnaHR0cHM6Ly90aW55dXJsLmNvbS8zN3g4Yjc5dCcsJzEyNy4wLjAuMScsJ29uY2xvc2UnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlZnJlc2hpbmdcXFxceDIwdGhlXFxcXHgyMHBhZ2VcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJzIyNjE2MW5adGZXSCcsJ19uaW5qYUlnbm9yZU5leHRFcnJvcicsJ2FyZ3MnLCdkaXNhYmxlZExvZycsJzI5NTNzQm9pZlMnLCdtYXRjaCcsW1xcXCJsb2NhbGhvc3RcXFwiLFxcXCIxMjcuMC4wLjFcXFwiLFxcXCJleGFtcGxlLmN5cHJlc3MuaW9cXFwiLFxcXCJmbHVmZnlcXFwiLFxcXCIxOTIuMTY4LjEwLjE3MVxcXCJdLCdzdHJpbmdpZnknLCc4MDE5NjJTQ1FRREUnLCdpbmNsdWRlcycsJ19pc1ByaW1pdGl2ZVR5cGUnLCdocnRpbWUnLCdmdW5jTmFtZScsJ3B1c2gnLCd3czovLycsJ29ubWVzc2FnZScsJ2xvY2F0aW9uJywndW5zaGlmdCcsJ3Byb2Nlc3MnLCdfaXNTZXQnLCdfSFRNTEFsbENvbGxlY3Rpb24nLCdfV2ViU29ja2V0Q2xhc3MnLCd0b1VwcGVyQ2FzZScsJ2F1dG9FeHBhbmRNYXhEZXB0aCcsJ3RvdGFsU3RyTGVuZ3RoJywnNnZHRGFVZicsJ3RyYWNlJywnZGF0ZScsJ251bWJlcicsJ3ZhbHVlJywnNFRuZEZIQicsJ3JlbG9hZCcsJ25vRnVuY3Rpb25zJywnY292ZXJhZ2UnLCdjcmVhdGUnLCdfYXR0ZW1wdFRvUmVjb25uZWN0U2hvcnRseScsJ3RvU3RyaW5nJywnX2FkZE9iamVjdFByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywnX2FkZEZ1bmN0aW9uc05vZGUnLCdfYWRkUHJvcGVydHknLCdhdXRvRXhwYW5kJywnYXJyYXknLCdfY29ubmVjdFRvSG9zdE5vdycsJ3BhcmVudCcsJ2NhcHBlZFByb3BzJywnZGVmaW5lUHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywnbm9kZScsJ3Vua25vd24nLCdfaW5Ccm93c2VyJywnY29uc3RydWN0b3InLCdfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnLCdjYXRjaCcsJ2xvZ2dlclxcXFx4MjBmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0JywnNDEyZFpXbWpQJywnNTk5OTEyOHpVSHNmaycsJ3N0cmluZycsJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnLCdfcHJvcGVydHlOYW1lJywnX2NvbnNvbGVfbmluamEnLCcnLCdzZXJpYWxpemUnLCcuLi4nLCdpbmRleCcsJzM3NjY4MDVMWnVXT0knLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQWZ0ZXJGdWxsVmFsdWUnLCdleHBJZCcsJ3R5cGUnLCdOdW1iZXInLCdfc2V0Tm9kZVBlcm1pc3Npb25zJywnX3BfbmFtZScsJ2dhdGV3YXkuZG9ja2VyLmludGVybmFsJywnU3RyaW5nJywnaG9zdCcsJ3Jlc29sdmVHZXR0ZXJzJywnb3JpZ2luJywnbmV4dC5qcycsJzMzNDUzJywnX3JlY29ubmVjdFRpbWVvdXQnLCdmb3JFYWNoJywnX3BfJywnX3NldE5vZGVMYWJlbCcsJ2VudicsJ19jb25uZWN0QXR0ZW1wdENvdW50JywnaG9zdG5hbWUnLCdTeW1ib2wnLCdlbGFwc2VkJywnZWRnZScsJzE5NDEzMDlsY2NWUFMnLCdfYWRkaXRpb25hbE1ldGFkYXRhJywnbGV2ZWwnLCdfZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnd2VicGFjaycsJ25vdycsJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ107XzB4NDlmYj1mdW5jdGlvbigpe3JldHVybiBfMHgzMTNjMjk7fTtyZXR1cm4gXzB4NDlmYigpO312YXIgSz1PYmplY3RbXzB4YjM4NDc5KDB4MWIzKV0sUT1PYmplY3RbXzB4YjM4NDc5KDB4MWJmKV0sRz1PYmplY3RbXzB4YjM4NDc5KDB4MWI3KV0sZWU9T2JqZWN0W18weGIzODQ3OSgweDFjMCldLHRlPU9iamVjdFtfMHhiMzg0NzkoMHgxZjQpXSxuZT1PYmplY3RbXzB4YjM4NDc5KDB4MjIwKV1bJ2hhc093blByb3BlcnR5J10scmU9KF8weDUxMDEyMixfMHg1ODcwNGYsXzB4MmU0NGY2LF8weDIwYmIzOSk9Pnt2YXIgXzB4MmZjYTkxPV8weGIzODQ3OTtpZihfMHg1ODcwNGYmJnR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDI0Yyl8fHR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDIxMCkpe2ZvcihsZXQgXzB4NTczNGEwIG9mIGVlKF8weDU4NzA0ZikpIW5lWydjYWxsJ10oXzB4NTEwMTIyLF8weDU3MzRhMCkmJl8weDU3MzRhMCE9PV8weDJlNDRmNiYmUShfMHg1MTAxMjIsXzB4NTczNGEwLHsnZ2V0JzooKT0+XzB4NTg3MDRmW18weDU3MzRhMF0sJ2VudW1lcmFibGUnOiEoXzB4MjBiYjM5PUcoXzB4NTg3MDRmLF8weDU3MzRhMCkpfHxfMHgyMGJiMzlbJ2VudW1lcmFibGUnXX0pO31yZXR1cm4gXzB4NTEwMTIyO30sVj0oXzB4MTQ4ZDFkLF8weDQzN2Q3OCxfMHg1ZWMxMzEpPT4oXzB4NWVjMTMxPV8weDE0OGQxZCE9bnVsbD9LKHRlKF8weDE0OGQxZCkpOnt9LHJlKF8weDQzN2Q3OHx8IV8weDE0OGQxZHx8IV8weDE0OGQxZFsnX19lcycrJ01vZHVsZSddP1EoXzB4NWVjMTMxLCdkZWZhdWx0Jyx7J3ZhbHVlJzpfMHgxNDhkMWQsJ2VudW1lcmFibGUnOiEweDB9KTpfMHg1ZWMxMzEsXzB4MTQ4ZDFkKSksWj1jbGFzc3tjb25zdHJ1Y3RvcihfMHgzYjQ2NTUsXzB4MWQ1YmU4LF8weDM2OGRjZixfMHg1ZjRlYjEsXzB4NWU4NDJmLF8weDg2ODc5ZCl7dmFyIF8weDVlMGU1NT1fMHhiMzg0NzksXzB4MTg1OWZiLF8weGM1N2IwLF8weDUzZjU4NCxfMHgyZWUzNjQ7dGhpc1tfMHg1ZTBlNTUoMHgyMWEpXT1fMHgzYjQ2NTUsdGhpc1tfMHg1ZTBlNTUoMHgxZGIpXT1fMHgxZDViZTgsdGhpc1sncG9ydCddPV8weDM2OGRjZix0aGlzWydub2RlTW9kdWxlcyddPV8weDVmNGViMSx0aGlzW18weDVlMGU1NSgweDI1ZildPV8weDVlODQyZix0aGlzW18weDVlMGU1NSgweDIxOCldPV8weDg2ODc5ZCx0aGlzW18weDVlMGU1NSgweDE3NSldPSEweDAsdGhpc1tfMHg1ZTBlNTUoMHgxZjApXT0hMHgwLHRoaXNbJ19jb25uZWN0ZWQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDVlMGU1NSgweDIyOSldPSgoXzB4YzU3YjA9KF8weDE4NTlmYj1fMHgzYjQ2NTVbXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDE4NTlmYltfMHg1ZTBlNTUoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4YzU3YjBbXzB4NWUwZTU1KDB4MjMxKV0pPT09XzB4NWUwZTU1KDB4MWU5KSx0aGlzW18weDVlMGU1NSgweDFjMyldPSEoKF8weDJlZTM2ND0oXzB4NTNmNTg0PXRoaXNbJ2dsb2JhbCddW18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1M2Y1ODRbXzB4NWUwZTU1KDB4MjRkKV0pIT1udWxsJiZfMHgyZWUzNjRbXzB4NWUwZTU1KDB4MWMxKV0pJiYhdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXSx0aGlzWydfV2ViU29ja2V0Q2xhc3MnXT1udWxsLHRoaXNbXzB4NWUwZTU1KDB4MWU1KV09MHgwLHRoaXNbXzB4NWUwZTU1KDB4MThjKV09MHgxNCx0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddPV8weDVlMGU1NSgweDE4ZCksdGhpc1tfMHg1ZTBlNTUoMHgyMTcpXT0odGhpc1snX2luQnJvd3NlciddP18weDVlMGU1NSgweDE5MCk6XzB4NWUwZTU1KDB4MTdlKSkrdGhpc1tfMHg1ZTBlNTUoMHgyMGEpXTt9YXN5bmNbXzB4YjM4NDc5KDB4MTg0KV0oKXt2YXIgXzB4NWI0MGM0PV8weGIzODQ3OSxfMHg0M2FkYWMsXzB4M2YwOGQ5O2lmKHRoaXNbXzB4NWI0MGM0KDB4MWE2KV0pcmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV07bGV0IF8weDFlZmU3MztpZih0aGlzW18weDViNDBjNCgweDFjMyldfHx0aGlzW18weDViNDBjNCgweDIyOSldKV8weDFlZmU3Mz10aGlzW18weDViNDBjNCgweDIxYSldWydXZWJTb2NrZXQnXTtlbHNle2lmKChfMHg0M2FkYWM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsncHJvY2VzcyddKSE9bnVsbCYmXzB4NDNhZGFjW18weDViNDBjNCgweDFmNSldKV8weDFlZmU3Mz0oXzB4M2YwOGQ5PXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bXzB4NWI0MGM0KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmMDhkOVsnX1dlYlNvY2tldCddO2Vsc2UgdHJ5e2xldCBfMHgxNzkyNWE9YXdhaXQgaW1wb3J0KCdwYXRoJyk7XzB4MWVmZTczPShhd2FpdCBpbXBvcnQoKGF3YWl0IGltcG9ydChfMHg1YjQwYzQoMHgyMDgpKSlbXzB4NWI0MGM0KDB4MjA5KV0oXzB4MTc5MjVhWydqb2luJ10odGhpc1snbm9kZU1vZHVsZXMnXSxfMHg1YjQwYzQoMHgxNzYpKSlbXzB4NWI0MGM0KDB4MWI1KV0oKSkpWydkZWZhdWx0J107fWNhdGNoe3RyeXtfMHgxZWZlNzM9cmVxdWlyZShyZXF1aXJlKCdwYXRoJylbXzB4NWI0MGM0KDB4MjAwKV0odGhpc1tfMHg1YjQwYzQoMHgyNTYpXSwnd3MnKSk7fWNhdGNoe3Rocm93IG5ldyBFcnJvcihfMHg1YjQwYzQoMHgyMTQpKTt9fX1yZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXT1fMHgxZWZlNzMsXzB4MWVmZTczO31bXzB4YjM4NDc5KDB4MWJjKV0oKXt2YXIgXzB4M2UzYTY5PV8weGIzODQ3OTt0aGlzW18weDNlM2E2OSgweDI1OSldfHx0aGlzW18weDNlM2E2OSgweDI1NCldfHx0aGlzWydfY29ubmVjdEF0dGVtcHRDb3VudCddPj10aGlzW18weDNlM2E2OSgweDE4YyldfHwodGhpc1snX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MCx0aGlzW18weDNlM2E2OSgweDFlNSldKyssdGhpc1snX3dzJ109bmV3IFByb21pc2UoKF8weDIyN2M5OCxfMHgyZDIwNjUpPT57dmFyIF8weDQzYzg2OT1fMHgzZTNhNjk7dGhpc1snZ2V0V2ViU29ja2V0Q2xhc3MnXSgpW18weDQzYzg2OSgweDIwNSldKF8weDU4NTIyND0+e3ZhciBfMHgzZjNhODc9XzB4NDNjODY5O2xldCBfMHgyZGQ1OTQ9bmV3IF8weDU4NTIyNChfMHgzZjNhODcoMHgxOWYpKyghdGhpc1snX2luQnJvd3NlciddJiZ0aGlzWydkb2NrZXJpemVkQXBwJ10/XzB4M2YzYTg3KDB4MWQ5KTp0aGlzW18weDNmM2E4NygweDFkYildKSsnOicrdGhpc1sncG9ydCddKTtfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjNiKV09KCk9Pnt2YXIgXzB4MTI2ODZhPV8weDNmM2E4Nzt0aGlzW18weDEyNjg2YSgweDE3NSldPSEweDEsdGhpc1tfMHgxMjY4NmEoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4MTI2ODZhKDB4MWI0KV0oKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDEyNjg2YSgweDIzMikpKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgyNDMpXT0oKT0+e3ZhciBfMHg0ZGFmZjY9XzB4M2YzYTg3O3RoaXNbJ19pbkJyb3dzZXInXXx8XzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSgpLF8weDIyN2M5OChfMHgyZGQ1OTQpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDE4ZildPSgpPT57dmFyIF8weDNhNTgzZj1fMHgzZjNhODc7dGhpc1tfMHgzYTU4M2YoMHgxZjApXT0hMHgwLHRoaXNbXzB4M2E1ODNmKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDNhNTgzZigweDFiNCldKCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MWEwKV09XzB4MjYyMTVhPT57dmFyIF8weDFhZGJkMT1fMHgzZjNhODc7dHJ5e2lmKCEoXzB4MjYyMTVhIT1udWxsJiZfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pfHwhdGhpc1tfMHgxYWRiZDEoMHgyMTgpXSlyZXR1cm47bGV0IF8weDJiYWJkOT1KU09OW18weDFhZGJkMSgweDI1MyldKF8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSk7dGhpc1tfMHgxYWRiZDEoMHgyMTgpXShfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTg1KV0sXzB4MmJhYmQ5W18weDFhZGJkMSgweDE5MyldLHRoaXNbXzB4MWFkYmQxKDB4MjFhKV0sdGhpc1snX2luQnJvd3NlciddKTt9Y2F0Y2h7fX07fSlbXzB4NDNjODY5KDB4MjA1KV0oXzB4NGY3MTRlPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgwLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDQzYzg2OSgweDFmMCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NDNjODY5KDB4MWU1KV09MHgwLF8weDRmNzE0ZSkpW18weDQzYzg2OSgweDFjNildKF8weDIyZWM5ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MSx0aGlzW18weDQzYzg2OSgweDI1OSldPSEweDEsY29uc29sZVtfMHg0M2M4NjkoMHgxZjIpXSgnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QsXFxcXHgyMHNlZVxcXFx4MjAnK3RoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ10pLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4NDNjODY5KDB4MWY4KSsoXzB4MjJlYzllJiZfMHgyMmVjOWVbXzB4NDNjODY5KDB4MjM0KV0pKSkpKTt9KSk7fVtfMHhiMzg0NzkoMHgyMzkpXShfMHgyNThlYTMpe3ZhciBfMHgzMTYwN2U9XzB4YjM4NDc5O3RoaXNbXzB4MzE2MDdlKDB4MjU0KV09ITB4MSx0aGlzW18weDMxNjA3ZSgweDI1OSldPSEweDE7dHJ5e18weDI1OGVhM1snb25jbG9zZSddPW51bGwsXzB4MjU4ZWEzWydvbmVycm9yJ109bnVsbCxfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjQzKV09bnVsbDt9Y2F0Y2h7fXRyeXtfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjIyKV08MHgyJiZfMHgyNThlYTNbJ2Nsb3NlJ10oKTt9Y2F0Y2h7fX1bXzB4YjM4NDc5KDB4MWI0KV0oKXt2YXIgXzB4MjMzYmE2PV8weGIzODQ3OTtjbGVhclRpbWVvdXQodGhpc1tfMHgyMzNiYTYoMHgxZTApXSksISh0aGlzW18weDIzM2JhNigweDFlNSldPj10aGlzW18weDIzM2JhNigweDE4YyldKSYmKHRoaXNbXzB4MjMzYmE2KDB4MWUwKV09c2V0VGltZW91dCgoKT0+e3ZhciBfMHg0MDFmZWM9XzB4MjMzYmE2LF8weDUyYjNkOTt0aGlzW18weDQwMWZlYygweDI1NCldfHx0aGlzW18weDQwMWZlYygweDI1OSldfHwodGhpc1tfMHg0MDFmZWMoMHgxYmMpXSgpLChfMHg1MmIzZDk9dGhpc1tfMHg0MDFmZWMoMHgyNWQpXSk9PW51bGx8fF8weDUyYjNkOVtfMHg0MDFmZWMoMHgxYzYpXSgoKT0+dGhpc1tfMHg0MDFmZWMoMHgxYjQpXSgpKSk7fSwweDFmNCksdGhpc1tfMHgyMzNiYTYoMHgxZTApXVtfMHgyMzNiYTYoMHgyMGYpXSYmdGhpc1tfMHgyMzNiYTYoMHgxZTApXVsndW5yZWYnXSgpKTt9YXN5bmNbXzB4YjM4NDc5KDB4MjFmKV0oXzB4NTg2YjFkKXt2YXIgXzB4NWQ4NTA4PV8weGIzODQ3OTt0cnl7aWYoIXRoaXNbXzB4NWQ4NTA4KDB4MTc1KV0pcmV0dXJuO3RoaXNbXzB4NWQ4NTA4KDB4MWYwKV0mJnRoaXNbXzB4NWQ4NTA4KDB4MWJjKV0oKSwoYXdhaXQgdGhpc1tfMHg1ZDg1MDgoMHgyNWQpXSlbXzB4NWQ4NTA4KDB4MjFmKV0oSlNPTltfMHg1ZDg1MDgoMHgxOTgpXShfMHg1ODZiMWQpKTt9Y2F0Y2goXzB4ZmQzYTk3KXtjb25zb2xlW18weDVkODUwOCgweDFmMildKHRoaXNbXzB4NWQ4NTA4KDB4MjE3KV0rJzpcXFxceDIwJysoXzB4ZmQzYTk3JiZfMHhmZDNhOTdbXzB4NWQ4NTA4KDB4MjM0KV0pKSx0aGlzW18weDVkODUwOCgweDE3NSldPSEweDEsdGhpc1tfMHg1ZDg1MDgoMHgxYjQpXSgpO319fTtmdW5jdGlvbiBxKF8weDQyMzY3YSxfMHgyY2JmYjYsXzB4NWE5NTAxLF8weDFhYWY5MCxfMHg0Mjk3YjIsXzB4MTNlZjg5LF8weDgyNTI1NixfMHhmNjgyYTc9aWUpe3ZhciBfMHhhM2ZiNDI9XzB4YjM4NDc5O2xldCBfMHg0Y2YxNmQ9XzB4NWE5NTAxWydzcGxpdCddKCcsJylbXzB4YTNmYjQyKDB4MjI4KV0oXzB4NTFiNGQ2PT57dmFyIF8weDEwOGM5OD1fMHhhM2ZiNDIsXzB4MTJmMzIyLF8weDEyYmVkNCxfMHg1YmVkMjEsXzB4MjQzNGE4O3RyeXtpZighXzB4NDIzNjdhW18weDEwOGM5OCgweDI2MSldKXtsZXQgXzB4MTczMGI1PSgoXzB4MTJiZWQ0PShfMHgxMmYzMjI9XzB4NDIzNjdhWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDEyZjMyMltfMHgxMDhjOTgoMHgyNGQpXSk9PW51bGw/dm9pZCAweDA6XzB4MTJiZWQ0W18weDEwOGM5OCgweDFjMSldKXx8KChfMHgyNDM0YTg9KF8weDViZWQyMT1fMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDViZWQyMVtfMHgxMDhjOTgoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4MjQzNGE4W18weDEwOGM5OCgweDIzMSldKT09PV8weDEwOGM5OCgweDFlOSk7KF8weDQyOTdiMj09PV8weDEwOGM5OCgweDFkZSl8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDI0MCl8fF8weDQyOTdiMj09PSdhc3Rybyd8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDE3ZikpJiYoXzB4NDI5N2IyKz1fMHgxNzMwYjU/XzB4MTA4Yzk4KDB4MjU3KTpfMHgxMDhjOTgoMHgyMWMpKSxfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV09eydpZCc6K25ldyBEYXRlKCksJ3Rvb2wnOl8weDQyOTdiMn0sXzB4ODI1MjU2JiZfMHg0Mjk3YjImJiFfMHgxNzMwYjUmJmNvbnNvbGVbXzB4MTA4Yzk4KDB4MjUxKV0oJyVjXFxcXHgyMENvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZXh0ZW5zaW9uXFxcXHgyMGlzXFxcXHgyMGNvbm5lY3RlZFxcXFx4MjB0b1xcXFx4MjAnKyhfMHg0Mjk3YjJbJ2NoYXJBdCddKDB4MClbXzB4MTA4Yzk4KDB4MWE3KV0oKStfMHg0Mjk3YjJbJ3N1YnN0ciddKDB4MSkpKycsJywnYmFja2dyb3VuZDpcXFxceDIwcmdiKDMwLDMwLDMwKTtcXFxceDIwY29sb3I6XFxcXHgyMHJnYigyNTUsMjEzLDkyKScsXzB4MTA4Yzk4KDB4MjJiKSk7fWxldCBfMHg0YWJlOTY9bmV3IFooXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1MWI0ZDYsXzB4MWFhZjkwLF8weDEzZWY4OSxfMHhmNjgyYTcpO3JldHVybiBfMHg0YWJlOTZbXzB4MTA4Yzk4KDB4MjFmKV1bXzB4MTA4Yzk4KDB4MjJlKV0oXzB4NGFiZTk2KTt9Y2F0Y2goXzB4NWJmNDliKXtyZXR1cm4gY29uc29sZVsnd2FybiddKF8weDEwOGM5OCgweDFjNyksXzB4NWJmNDliJiZfMHg1YmY0OWJbXzB4MTA4Yzk4KDB4MjM0KV0pLCgpPT57fTt9fSk7cmV0dXJuIF8weDM3OWZkMz0+XzB4NGNmMTZkW18weGEzZmI0MigweDFlMSldKF8weDM3MTEyMT0+XzB4MzcxMTIxKF8weDM3OWZkMykpO31mdW5jdGlvbiBpZShfMHgzZThmMjUsXzB4MzlmZWE1LF8weDI1MTUwZixfMHgyNjUyOGUpe3ZhciBfMHgxY2M5Njc9XzB4YjM4NDc5O18weDI2NTI4ZSYmXzB4M2U4ZjI1PT09XzB4MWNjOTY3KDB4MWIwKSYmXzB4MjUxNTBmW18weDFjYzk2NygweDFhMSldWydyZWxvYWQnXSgpO31mdW5jdGlvbiBCKF8weDMwOTg0Mil7dmFyIF8weDI0ZGZjMj1fMHhiMzg0NzksXzB4MmFjMDQ4LF8weDUwYWJkZjtsZXQgXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDExYTY3MyxfMHg1ZjA2OTMpe3JldHVybiBfMHg1ZjA2OTMtXzB4MTFhNjczO30sXzB4MWM3ZmFmO2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxNzcpXSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4OGRiZTE9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4OGRiZTEoMHgxNzcpXVtfMHg4ZGJlMSgweDFlZildKCk7fTtlbHNle2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxYTMpXSYmXzB4MzA5ODQyWydwcm9jZXNzJ11bXzB4MjRkZmMyKDB4MTljKV0mJigoXzB4NTBhYmRmPShfMHgyYWMwNDg9XzB4MzA5ODQyWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDJhYzA0OFsnZW52J10pPT1udWxsP3ZvaWQgMHgwOl8weDUwYWJkZlsnTkVYVF9SVU5USU1FJ10pIT09XzB4MjRkZmMyKDB4MWU5KSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NTJkNjQwPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDUyZDY0MCgweDFhMyldWydocnRpbWUnXSgpO30sXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDU1MGJhOSxfMHgxNmEzZTIpe3JldHVybiAweDNlOCooXzB4MTZhM2UyWzB4MF0tXzB4NTUwYmE5WzB4MF0pKyhfMHgxNmEzZTJbMHgxXS1fMHg1NTBiYTlbMHgxXSkvMHhmNDI0MDt9O2Vsc2UgdHJ5e2xldCB7cGVyZm9ybWFuY2U6XzB4MzRkZTRhfT1yZXF1aXJlKF8weDI0ZGZjMigweDI0YikpO18weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg0ZjFkNjk9XzB4MjRkZmMyO3JldHVybiBfMHgzNGRlNGFbXzB4NGYxZDY5KDB4MWVmKV0oKTt9O31jYXRjaHtfMHgxYzdmYWY9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGUoKTt9O319cmV0dXJueydlbGFwc2VkJzpfMHhkZGJkZWYsJ3RpbWVTdGFtcCc6XzB4MWM3ZmFmLCdub3cnOigpPT5EYXRlW18weDI0ZGZjMigweDFlZildKCl9O31mdW5jdGlvbiBfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpe3ZhciBfMHg0OWZiZGM9XzB4NDlmYigpO3JldHVybiBfMHgyNjkwPWZ1bmN0aW9uKF8weDI2OTAxYixfMHgzNThmMWYpe18weDI2OTAxYj1fMHgyNjkwMWItMHgxNzM7dmFyIF8weDFmZjI4Nz1fMHg0OWZiZGNbXzB4MjY5MDFiXTtyZXR1cm4gXzB4MWZmMjg3O30sXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKTt9ZnVuY3Rpb24gSChfMHgyNjU1ZTMsXzB4MTRjYmY3LF8weDRjZDYwOSl7dmFyIF8weDI2YWMyYz1fMHhiMzg0NzksXzB4NGJlNzBkLF8weDNmYjRjYyxfMHgxZmZjNjIsXzB4NDdlOGFhLF8weDVmMDk0MjtpZihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddIT09dm9pZCAweDApcmV0dXJuIF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107bGV0IF8weDI1MTI5NT0oKF8weDNmYjRjYz0oXzB4NGJlNzBkPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NGJlNzBkW18weDI2YWMyYygweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgzZmI0Y2NbXzB4MjZhYzJjKDB4MWMxKV0pfHwoKF8weDQ3ZThhYT0oXzB4MWZmYzYyPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MWZmYzYyW18weDI2YWMyYygweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHg0N2U4YWFbJ05FWFRfUlVOVElNRSddKT09PV8weDI2YWMyYygweDFlOSk7ZnVuY3Rpb24gXzB4NTlkOWRlKF8weDE5NDkzOCl7dmFyIF8weDVlNWQ1Yz1fMHgyNmFjMmM7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDIzNyldKCcvJykmJl8weDE5NDkzOFsnZW5kc1dpdGgnXSgnLycpKXtsZXQgXzB4Y2I3ODA0PW5ldyBSZWdFeHAoXzB4MTk0OTM4WydzbGljZSddKDB4MSwtMHgxKSk7cmV0dXJuIF8weDQ5ZDc0Mj0+XzB4Y2I3ODA0W18weDVlNWQ1YygweDE4NyldKF8weDQ5ZDc0Mik7fWVsc2V7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCcqJyl8fF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnPycpKXtsZXQgXzB4NTBmYTJmPW5ldyBSZWdFeHAoJ14nK18weDE5NDkzOFtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXC4vZyxTdHJpbmdbXzB4NWU1ZDVjKDB4MjRlKV0oMHg1YykrJy4nKVsncmVwbGFjZSddKC9cXFxcKi9nLCcuKicpW18weDVlNWQ1YygweDE3YildKC9cXFxcPy9nLCcuJykrU3RyaW5nWydmcm9tQ2hhckNvZGUnXSgweDI0KSk7cmV0dXJuIF8weDFhZWZjND0+XzB4NTBmYTJmW18weDVlNWQ1YygweDE4NyldKF8weDFhZWZjNCk7fWVsc2UgcmV0dXJuIF8weDQ2YmNmNj0+XzB4NDZiY2Y2PT09XzB4MTk0OTM4O319bGV0IF8weDIwNTQ2Zj1fMHgxNGNiZjdbXzB4MjZhYzJjKDB4MjI4KV0oXzB4NTlkOWRlKTtyZXR1cm4gXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldPV8weDI1MTI5NXx8IV8weDE0Y2JmNywhXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldJiYoKF8weDVmMDk0Mj1fMHgyNjU1ZTNbJ2xvY2F0aW9uJ10pPT1udWxsP3ZvaWQgMHgwOl8weDVmMDk0MltfMHgyNmFjMmMoMHgxZTYpXSkmJihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddPV8weDIwNTQ2ZltfMHgyNmFjMmMoMHgyNDgpXShfMHg0Mzg1YjQ9Pl8weDQzODViNChfMHgyNjU1ZTNbJ2xvY2F0aW9uJ11bJ2hvc3RuYW1lJ10pKSksXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTt9ZnVuY3Rpb24gWChfMHgyMmNjYjMsXzB4MmM3M2RlLF8weDRlMTcxYixfMHgzNWZjNjMpe3ZhciBfMHg0NzRlMjg9XzB4YjM4NDc5O18weDIyY2NiMz1fMHgyMmNjYjMsXzB4MmM3M2RlPV8weDJjNzNkZSxfMHg0ZTE3MWI9XzB4NGUxNzFiLF8weDM1ZmM2Mz1fMHgzNWZjNjM7bGV0IF8weDQxNTQ2OD1CKF8weDIyY2NiMyksXzB4MzdmNTYxPV8weDQxNTQ2OFtfMHg0NzRlMjgoMHgxZTgpXSxfMHg1OTE1OGI9XzB4NDE1NDY4Wyd0aW1lU3RhbXAnXTtjbGFzcyBfMHg0MzI4YmN7Y29uc3RydWN0b3IoKXt2YXIgXzB4MWFmNmY2PV8weDQ3NGUyODt0aGlzW18weDFhZjZmNigweDI0NCldPS9eKD8hKD86ZG98aWZ8aW58Zm9yfGxldHxuZXd8dHJ5fHZhcnxjYXNlfGVsc2V8ZW51bXxldmFsfGZhbHNlfG51bGx8dGhpc3x0cnVlfHZvaWR8d2l0aHxicmVha3xjYXRjaHxjbGFzc3xjb25zdHxzdXBlcnx0aHJvd3x3aGlsZXx5aWVsZHxkZWxldGV8ZXhwb3J0fGltcG9ydHxwdWJsaWN8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dHlwZW9mfGRlZmF1bHR8ZXh0ZW5kc3xmaW5hbGx5fHBhY2thZ2V8cHJpdmF0ZXxjb250aW51ZXxkZWJ1Z2dlcnxmdW5jdGlvbnxhcmd1bWVudHN8aW50ZXJmYWNlfHByb3RlY3RlZHxpbXBsZW1lbnRzfGluc3RhbmNlb2YpJClbXyRhLXpBLVpcXFxceEEwLVxcXFx1RkZGRl1bXyRhLXpBLVowLTlcXFxceEEwLVxcXFx1RkZGRl0qJC8sdGhpc1snX251bWJlclJlZ0V4cCddPS9eKDB8WzEtOV1bMC05XSopJC8sdGhpc1tfMHgxYWY2ZjYoMHgxZjEpXT0vJyhbXlxcXFxcXFxcJ118XFxcXFxcXFwnKSonLyx0aGlzW18weDFhZjZmNigweDIxNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMjQpXSx0aGlzW18weDFhZjZmNigweDFhNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMDcpXSx0aGlzW18weDFhZjZmNigweDIwNCldPU9iamVjdFtfMHgxYWY2ZjYoMHgxYjcpXSx0aGlzWydfZ2V0T3duUHJvcGVydHlOYW1lcyddPU9iamVjdFtfMHgxYWY2ZjYoMHgxYzApXSx0aGlzW18weDFhZjZmNigweDIyNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgxZTcpXSx0aGlzW18weDFhZjZmNigweDIzYSldPVJlZ0V4cFsncHJvdG90eXBlJ11bXzB4MWFmNmY2KDB4MWI1KV0sdGhpc1snX2RhdGVUb1N0cmluZyddPURhdGVbXzB4MWFmNmY2KDB4MjIwKV1bJ3RvU3RyaW5nJ107fVtfMHg0NzRlMjgoMHgxY2YpXShfMHg1MDcyMWEsXzB4NGM4MjhjLF8weDVlMmZmYyxfMHgzZWY4MzIpe3ZhciBfMHg0ZWJkOWQ9XzB4NDc0ZTI4LF8weGY2NDU5NT10aGlzLF8weGEwMTYxPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXTtmdW5jdGlvbiBfMHgyNDMxMDkoXzB4NDAwMmI3LF8weDM0YjVlYyxfMHg0NzY3NDMpe3ZhciBfMHg0Njk2NjQ9XzB4NGViZDlkO18weDM0YjVlY1sndHlwZSddPV8weDQ2OTY2NCgweDFjMiksXzB4MzRiNWVjW18weDQ2OTY2NCgweDIxYildPV8weDQwMDJiN1tfMHg0Njk2NjQoMHgyMzQpXSxfMHgyYTIwMTA9XzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldLF8weDQ3Njc0M1tfMHg0Njk2NjQoMHgxYzEpXVtfMHg0Njk2NjQoMHgyMDMpXT1fMHgzNGI1ZWMsXzB4ZjY0NTk1WydfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJ10oXzB4MzRiNWVjLF8weDQ3Njc0Myk7fXRyeXtfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWVjKV0rKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVtfMHg0ZWJkOWQoMHgxOWUpXShfMHg0YzgyOGMpO3ZhciBfMHg3ODkyODYsXzB4NGIzYTNhLF8weDEwYTU5LF8weDQzMjk2NixfMHgzYjQ5YjM9W10sXzB4NTc1ODA4PVtdLF8weDI1YTQ4NCxfMHg0MWUxMWQ9dGhpc1tfMHg0ZWJkOWQoMHgyNjApXShfMHg0YzgyOGMpLF8weDI1ZTM2Nj1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxYmIpLF8weDIyODgzMD0hMHgxLF8weDM1MWE0MT1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMTApLF8weDUzZTMwMz10aGlzW18weDRlYmQ5ZCgweDE5YildKF8weDQxZTExZCksXzB4M2U0NWIyPXRoaXNbXzB4NGViZDlkKDB4MTgzKV0oXzB4NDFlMTFkKSxfMHgzNDUwMjg9XzB4NTNlMzAzfHxfMHgzZTQ1YjIsXzB4NWMzYzhhPXt9LF8weDFjYmUzNj0weDAsXzB4MmU2Y2ZjPSEweDEsXzB4MmEyMDEwLF8weDEyODIwYT0vXigoWzEtOV17MX1bMC05XSopfDApJC87aWYoXzB4NWUyZmZjWydkZXB0aCddKXtpZihfMHgyNWUzNjYpe2lmKF8weDRiM2EzYT1fMHg0YzgyOGNbXzB4NGViZDlkKDB4MjQxKV0sXzB4NGIzYTNhPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNjIpXSl7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NWUyZmZjWydlbGVtZW50cyddLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxODApXT0hMHgwO31lbHNle2ZvcihfMHgxMGE1OT0weDAsXzB4NDMyOTY2PV8weDRiM2EzYSxfMHg3ODkyODY9XzB4MTBhNTk7XzB4Nzg5Mjg2PF8weDQzMjk2NjtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDc4OTI4NixfMHg1ZTJmZmMpKTt9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKz1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07fWlmKCEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09J3VuZGVmaW5lZCcpJiYhXzB4NTNlMzAzJiZfMHg0MWUxMWQhPT0nU3RyaW5nJyYmXzB4NDFlMTFkIT09J0J1ZmZlcicmJl8weDQxZTExZCE9PV8weDRlYmQ5ZCgweDIzNSkpe3ZhciBfMHgyNTIxMmI9XzB4M2VmODMyW18weDRlYmQ5ZCgweDI0NyldfHxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjQ3KV07aWYodGhpc1tfMHg0ZWJkOWQoMHgxYTQpXShfMHg0YzgyOGMpPyhfMHg3ODkyODY9MHgwLF8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzMTYyNWIpe3ZhciBfMHhhMTE0N2Q9XzB4NGViZDlkO2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO3JldHVybjt9aWYoIV8weDVlMmZmY1tfMHhhMTE0N2QoMHgxY2IpXSYmXzB4NWUyZmZjW18weGExMTQ3ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MTdjKV0+XzB4NWUyZmZjW18weGExMTQ3ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fV8weDU3NTgwOFtfMHhhMTE0N2QoMHgxOWUpXShfMHhmNjQ1OTVbXzB4YTExNDdkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHhhMTE0N2QoMHgyMjcpLF8weDc4OTI4NisrLF8weDVlMmZmYyxmdW5jdGlvbihfMHgxMGQxNWEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfMHgxMGQxNWE7fTt9KF8weDMxNjI1YikpKTt9KSk6dGhpc1tfMHg0ZWJkOWQoMHgyMGMpXShfMHg0YzgyOGMpJiZfMHg0YzgyOGNbXzB4NGViZDlkKDB4MWUxKV0oZnVuY3Rpb24oXzB4MzgyNGRmLF8weDM5MjY1Yyl7dmFyIF8weDhlOTllND1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDhlOTllNCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDhlOTllNCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fXZhciBfMHgxMGRkMzQ9XzB4MzkyNjVjWyd0b1N0cmluZyddKCk7XzB4MTBkZDM0W18weDhlOTllNCgweDI0MSldPjB4NjQmJihfMHgxMGRkMzQ9XzB4MTBkZDM0WydzbGljZSddKDB4MCwweDY0KStfMHg4ZTk5ZTQoMHgxZDApKSxfMHg1NzU4MDhbXzB4OGU5OWU0KDB4MTllKV0oXzB4ZjY0NTk1W18weDhlOTllNCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4OGU5OWU0KDB4MjVhKSxfMHgxMGRkMzQsXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEzNTE1Nil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEzNTE1Njt9O30oXzB4MzgyNGRmKSkpO30pLCFfMHgyMjg4MzApe3RyeXtmb3IoXzB4MjVhNDg0IGluIF8weDRjODI4YylpZighKF8weDI1ZTM2NiYmXzB4MTI4MjBhWyd0ZXN0J10oXzB4MjVhNDg0KSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVsnX2FkZE9iamVjdFByb3BlcnR5J10oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fWNhdGNoe31pZihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MjE5KV09ITB4MCxfMHgzNTFhNDEmJihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWQ4KV09ITB4MCksIV8weDJlNmNmYyl7dmFyIF8weDExMzMyOD1bXVtfMHg0ZWJkOWQoMHgyM2MpXSh0aGlzW18weDRlYmQ5ZCgweDIzMyldKF8weDRjODI4YykpWydjb25jYXQnXSh0aGlzW18weDRlYmQ5ZCgweDFlZCldKF8weDRjODI4YykpO2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHgxMTMzMjhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylpZihfMHgyNWE0ODQ9XzB4MTEzMzI4W18weDc4OTI4Nl0sIShfMHgyNWUzNjYmJl8weDEyODIwYVtfMHg0ZWJkOWQoMHgxODcpXShfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKSkpJiYhdGhpc1tfMHg0ZWJkOWQoMHgxNzkpXShfMHg0YzgyOGMsXzB4MjVhNDg0LF8weDVlMmZmYykmJiFfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWUyKStfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKV0pe2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO2JyZWFrO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4WydwdXNoJ10oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiNildKF8weDNiNDliMyxfMHg1YzNjOGEsXzB4NGM4MjhjLF8weDQxZTExZCxfMHgyNWE0ODQsXzB4NWUyZmZjKSk7fX19fX1pZihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWQ1KV09XzB4NDFlMTFkLF8weDM0NTAyOD8oXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyMmEpXSgpLHRoaXNbJ19jYXBJZlN0cmluZyddKF8weDQxZTExZCxfMHg1MDcyMWEsXzB4NWUyZmZjLF8weDNlZjgzMikpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFhYyk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbJ19kYXRlVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjM1KT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjWyd0b1N0cmluZyddKCk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTdhKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX3JlZ0V4cFRvU3RyaW5nJ11bJ2NhbGwnXShfMHg0YzgyOGMpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDE3MykmJnRoaXNbXzB4NGViZDlkKDB4MjI1KV0/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbXzB4NGViZDlkKDB4MjI1KV1bXzB4NGViZDlkKDB4MjIwKV1bXzB4NGViZDlkKDB4MWI1KV1bXzB4NGViZDlkKDB4MjJmKV0oXzB4NGM4MjhjKTohXzB4NWUyZmZjW18weDRlYmQ5ZCgweDIyMSldJiYhKF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFmZCl8fF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIyNCkpJiYoZGVsZXRlIF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXSxfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjBiKV09ITB4MCksXzB4MmU2Y2ZjJiYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFiZSldPSEweDApLF8weDJhMjAxMD1fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bXzB4NGViZDlkKDB4MjAzKV0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFjMSldWydjdXJyZW50J109XzB4NTA3MjFhLHRoaXNbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHg1MDcyMWEsXzB4NWUyZmZjKSxfMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV0pe2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4Nzg5Mjg2XShfMHg3ODkyODYpO31fMHgzYjQ5YjNbXzB4NGViZDlkKDB4MjQxKV0mJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjQ3KV09XzB4M2I0OWIzKTt9Y2F0Y2goXzB4M2M5MGM3KXtfMHgyNDMxMDkoXzB4M2M5MGM3LF8weDUwNzIxYSxfMHg1ZTJmZmMpO31yZXR1cm4gdGhpc1tfMHg0ZWJkOWQoMHgxZWIpXShfMHg0YzgyOGMsXzB4NTA3MjFhKSx0aGlzW18weDRlYmQ5ZCgweDFkMyldKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDVlMmZmY1snbm9kZSddWydjdXJyZW50J109XzB4MmEyMDEwLF8weDVlMmZmY1snbGV2ZWwnXS0tLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXT1fMHhhMDE2MSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVsncG9wJ10oKSxfMHg1MDcyMWE7fVsnX2dldE93blByb3BlcnR5U3ltYm9scyddKF8weDIxZjU0OCl7dmFyIF8weDFiMDFhMT1fMHg0NzRlMjg7cmV0dXJuIE9iamVjdFtfMHgxYjAxYTEoMHgyMDYpXT9PYmplY3RbXzB4MWIwMWExKDB4MjA2KV0oXzB4MjFmNTQ4KTpbXTt9W18weDQ3NGUyOCgweDFhNCldKF8weDE1YjFhNyl7dmFyIF8weDM3MDY1Mz1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTViMWE3JiZfMHgyMmNjYjNbXzB4MzcwNjUzKDB4MjI3KV0mJnRoaXNbXzB4MzcwNjUzKDB4MjJjKV0oXzB4MTViMWE3KT09PV8weDM3MDY1MygweDIxZSkmJl8weDE1YjFhN1tfMHgzNzA2NTMoMHgxZTEpXSk7fVtfMHg0NzRlMjgoMHgxNzkpXShfMHg0NWZiZWQsXzB4NWI4NmRiLF8weDM3NmYzZil7dmFyIF8weDMyZmIwMz1fMHg0NzRlMjg7cmV0dXJuIF8weDM3NmYzZltfMHgzMmZiMDMoMHgxYjEpXT90eXBlb2YgXzB4NDVmYmVkW18weDViODZkYl09PV8weDMyZmIwMygweDIxMCk6ITB4MTt9W18weDQ3NGUyOCgweDI2MCldKF8weDJiNTZlYyl7dmFyIF8weDFlMDE1Mj1fMHg0NzRlMjgsXzB4MzZiZGI3PScnO3JldHVybiBfMHgzNmJkYjc9dHlwZW9mIF8weDJiNTZlYyxfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyNGMpP3RoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PV8weDFlMDE1MigweDE4YSk/XzB4MzZiZGI3PV8weDFlMDE1MigweDFiYik6dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MjNmKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWFjKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT0nW29iamVjdFxcXFx4MjBCaWdJbnRdJz9fMHgzNmJkYjc9J2JpZ2ludCc6XzB4MmI1NmVjPT09bnVsbD9fMHgzNmJkYjc9J251bGwnOl8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXSYmKF8weDM2YmRiNz1fMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV1bXzB4MWUwMTUyKDB4MjE2KV18fF8weDM2YmRiNyk6XzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjI0KSYmdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmXzB4MmI1NmVjIGluc3RhbmNlb2YgdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmKF8weDM2YmRiNz1fMHgxZTAxNTIoMHgyMDcpKSxfMHgzNmJkYjc7fVsnX29iamVjdFRvU3RyaW5nJ10oXzB4ZDU2NzY0KXt2YXIgXzB4NWFiZDIzPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDVhYmQyMygweDIyMCldW18weDVhYmQyMygweDFiNSldW18weDVhYmQyMygweDIyZildKF8weGQ1Njc2NCk7fVsnX2lzUHJpbWl0aXZlVHlwZSddKF8weGI4OGQ5Nyl7dmFyIF8weDUwNmFmND1fMHg0NzRlMjg7cmV0dXJuIF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDIzZSl8fF8weGI4OGQ5Nz09PSdzdHJpbmcnfHxfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgxYWQpO31bXzB4NDc0ZTI4KDB4MTgzKV0oXzB4MmIzYmZkKXt2YXIgXzB4MzA3OTU2PV8weDQ3NGUyODtyZXR1cm4gXzB4MmIzYmZkPT09J0Jvb2xlYW4nfHxfMHgyYjNiZmQ9PT1fMHgzMDc5NTYoMHgxZGEpfHxfMHgyYjNiZmQ9PT0nTnVtYmVyJzt9WydfYWRkUHJvcGVydHknXShfMHgzNWYyYWMsXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSl7dmFyIF8weDMxNTdmMT10aGlzO3JldHVybiBmdW5jdGlvbihfMHgxZjhhNzEpe3ZhciBfMHgxOWMzYjg9XzB4MjY5MCxfMHg0MGJmZmM9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDIwMyldLF8weDE2MjhjZj1fMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXSxfMHg5M2VkNWY9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldO18weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVsncGFyZW50J109XzB4NDBiZmZjLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxZDEpXT10eXBlb2YgXzB4NGEyYWIxPT1fMHgxOWMzYjgoMHgxYWQpP18weDRhMmFiMTpfMHgxZjhhNzEsXzB4MzVmMmFjW18weDE5YzNiOCgweDE5ZSldKF8weDMxNTdmMVsnX3Byb3BlcnR5J10oXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSkpLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXT1fMHg5M2VkNWYsXzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV09XzB4MTYyOGNmO307fVtfMHg0NzRlMjgoMHgxYjYpXShfMHhjODRiOTMsXzB4M2UyZjQ0LF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApe3ZhciBfMHgxZDdhNWY9XzB4NDc0ZTI4LF8weGI5NmE2MD10aGlzO3JldHVybiBfMHgzZTJmNDRbXzB4MWQ3YTVmKDB4MWUyKStfMHg0ZTE0OGRbXzB4MWQ3YTVmKDB4MWI1KV0oKV09ITB4MCxmdW5jdGlvbihfMHg1ZDRjOTQpe3ZhciBfMHg1NDYzZDk9XzB4MWQ3YTVmLF8weDM3ZmQ2Mj1fMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgyMDMpXSxfMHgyZThjZjc9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFkMSldLF8weDQxMWU2Nj1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ3BhcmVudCddO18weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxYmQpXT1fMHgzN2ZkNjIsXzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MWQxKV09XzB4NWQ0Yzk0LF8weGM4NGI5M1tfMHg1NDYzZDkoMHgxOWUpXShfMHhiOTZhNjBbXzB4NTQ2M2Q5KDB4MjI2KV0oXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCkpLF8weDJlY2Q1Zlsnbm9kZSddWydwYXJlbnQnXT1fMHg0MTFlNjYsXzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydpbmRleCddPV8weDJlOGNmNzt9O31bXzB4NDc0ZTI4KDB4MjI2KV0oXzB4MzA5MDA0LF8weDI3ZjhmNCxfMHgyZDQwNmEsXzB4M2QxZWIyLF8weDVkYzE0OCl7dmFyIF8weDJmNjdjMD1fMHg0NzRlMjgsXzB4M2QyMzUxPXRoaXM7XzB4NWRjMTQ4fHwoXzB4NWRjMTQ4PWZ1bmN0aW9uKF8weDE2ZTViNCxfMHg5ZDU5Nzgpe3JldHVybiBfMHgxNmU1YjRbXzB4OWQ1OTc4XTt9KTt2YXIgXzB4MTIxZDc5PV8weDJkNDA2YVsndG9TdHJpbmcnXSgpLF8weDEwYTM1Zj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV18fHt9LF8weDU4OTc0Mj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0sXzB4ODJhYmY0PV8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXTt0cnl7dmFyIF8weDI1YTYyYT10aGlzW18weDJmNjdjMCgweDIwYyldKF8weDMwOTAwNCksXzB4MTdiY2I1PV8weDEyMWQ3OTtfMHgyNWE2MmEmJl8weDE3YmNiNVsweDBdPT09J1xcXFx4MjcnJiYoXzB4MTdiY2I1PV8weDE3YmNiNVsnc3Vic3RyJ10oMHgxLF8weDE3YmNiNVsnbGVuZ3RoJ10tMHgyKSk7dmFyIF8weDUzODU4MT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV09XzB4MTBhMzVmW18weDJmNjdjMCgweDFlMikrXzB4MTdiY2I1XTtfMHg1Mzg1ODEmJihfMHgzZDFlYjJbJ2RlcHRoJ109XzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldKzB4MSksXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPSEhXzB4NTM4NTgxO3ZhciBfMHg1N2E3NDI9dHlwZW9mIF8weDJkNDA2YT09XzB4MmY2N2MwKDB4MTczKSxfMHg0Mjg3Njc9eyduYW1lJzpfMHg1N2E3NDJ8fF8weDI1YTYyYT9fMHgxMjFkNzk6dGhpc1snX3Byb3BlcnR5TmFtZSddKF8weDEyMWQ3OSl9O2lmKF8weDU3YTc0MiYmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxNzMpXT0hMHgwKSwhKF8weDI3ZjhmND09PV8weDJmNjdjMCgweDFiYil8fF8weDI3ZjhmND09PSdFcnJvcicpKXt2YXIgXzB4MjdjMzdiPXRoaXNbXzB4MmY2N2MwKDB4MjA0KV0oXzB4MzA5MDA0LF8weDJkNDA2YSk7aWYoXzB4MjdjMzdiJiYoXzB4MjdjMzdiW18weDJmNjdjMCgweDFmYyldJiYoXzB4NDI4NzY3WydzZXR0ZXInXT0hMHgwKSxfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MjUyKV0mJiFfMHg1Mzg1ODEmJiFfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWRjKV0pKXJldHVybiBfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWY2KV09ITB4MCx0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDUzZGIzZjt0cnl7XzB4NTNkYjNmPV8weDVkYzE0OChfMHgzMDkwMDQsXzB4MmQ0MDZhKTt9Y2F0Y2goXzB4MTc1ZjZjKXtyZXR1cm4gXzB4NDI4NzY3PXsnbmFtZSc6XzB4MTIxZDc5LCd0eXBlJzpfMHgyZjY3YzAoMHgxYzIpLCdlcnJvcic6XzB4MTc1ZjZjW18weDJmNjdjMCgweDIzNCldfSx0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4M2NjZDA5PXRoaXNbXzB4MmY2N2MwKDB4MjYwKV0oXzB4NTNkYjNmKSxfMHg0OTU0NTc9dGhpc1tfMHgyZjY3YzAoMHgxOWIpXShfMHgzY2NkMDkpO2lmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZDUpXT1fMHgzY2NkMDksXzB4NDk1NDU3KXRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHgyOTQyNmE9XzB4MmY2N2MwO18weDQyODc2N1tfMHgyOTQyNmEoMHgxYWUpXT1fMHg1M2RiM2ZbXzB4Mjk0MjZhKDB4MjJhKV0oKSwhXzB4NTM4NTgxJiZfMHgzZDIzNTFbXzB4Mjk0MjZhKDB4MjQ5KV0oXzB4M2NjZDA5LF8weDQyODc2NyxfMHgzZDFlYjIse30pO30pO2Vsc2V7dmFyIF8weGQ4MGU2PV8weDNkMWViMlsnYXV0b0V4cGFuZCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWVjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTWF4RGVwdGgnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFmMyldWydpbmRleE9mJ10oXzB4NTNkYjNmKTwweDAmJl8weDNjY2QwOSE9PSdmdW5jdGlvbicmJl8weDNkMWViMltfMHgyZjY3YzAoMHgxN2MpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRMaW1pdCddO18weGQ4MGU2fHxfMHgzZDFlYjJbJ2xldmVsJ108XzB4NTg5NzQyfHxfMHg1Mzg1ODE/KHRoaXNbXzB4MmY2N2MwKDB4MWNmKV0oXzB4NDI4NzY3LF8weDUzZGIzZixfMHgzZDFlYjIsXzB4NTM4NTgxfHx7fSksdGhpc1tfMHgyZjY3YzAoMHgxZWIpXShfMHg1M2RiM2YsXzB4NDI4NzY3KSk6dGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHg1NDJkZTE9XzB4MmY2N2MwO18weDNjY2QwOT09PV8weDU0MmRlMSgweDFmZCl8fF8weDNjY2QwOT09PV8weDU0MmRlMSgweDIyNCl8fChkZWxldGUgXzB4NDI4NzY3W18weDU0MmRlMSgweDFhZSldLF8weDQyODc2N1tfMHg1NDJkZTEoMHgyMGIpXT0hMHgwKTt9KTt9cmV0dXJuIF8weDQyODc2Nzt9ZmluYWxseXtfMHgzZDFlYjJbJ2V4cHJlc3Npb25zVG9FdmFsdWF0ZSddPV8weDEwYTM1ZixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV09XzB4NTg5NzQyLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT1fMHg4MmFiZjQ7fX1bXzB4NDc0ZTI4KDB4MjQ5KV0oXzB4NGQxMTJlLF8weDQ1MWFlNSxfMHg1NmQ2MTAsXzB4M2JmNDhlKXt2YXIgXzB4Njc4MTY4PV8weDQ3NGUyOCxfMHhmOWQ3Nzc9XzB4M2JmNDhlW18weDY3ODE2OCgweDIxMildfHxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjEyKV07aWYoKF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFjYSl8fF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFkYSkpJiZfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pe2xldCBfMHgzYTAwZDQ9XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI0MSldO18weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXSs9XzB4M2EwMGQ0LF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXT5fMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MWE5KV0/KF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT0nJyxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTpfMHgzYTAwZDQ+XzB4ZjlkNzc3JiYoXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNTUpXSgweDAsXzB4ZjlkNzc3KSxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTt9fVtfMHg0NzRlMjgoMHgyMGMpXShfMHgxOWNiZTUpe3ZhciBfMHg0OWE0NTE9XzB4NDc0ZTI4O3JldHVybiEhKF8weDE5Y2JlNSYmXzB4MjJjY2IzWydNYXAnXSYmdGhpc1tfMHg0OWE0NTEoMHgyMmMpXShfMHgxOWNiZTUpPT09XzB4NDlhNDUxKDB4MTg2KSYmXzB4MTljYmU1Wydmb3JFYWNoJ10pO31bXzB4NDc0ZTI4KDB4MWNjKV0oXzB4NTcxZjZhKXt2YXIgXzB4Mzg0OTRlPV8weDQ3NGUyODtpZihfMHg1NzFmNmFbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFxcZCskLykpcmV0dXJuIF8weDU3MWY2YTt2YXIgXzB4MmFjMWUwO3RyeXtfMHgyYWMxZTA9SlNPTlsnc3RyaW5naWZ5J10oJycrXzB4NTcxZjZhKTt9Y2F0Y2h7XzB4MmFjMWUwPSdcXFxceDIyJyt0aGlzW18weDM4NDk0ZSgweDIyYyldKF8weDU3MWY2YSkrJ1xcXFx4MjInO31yZXR1cm4gXzB4MmFjMWUwW18weDM4NDk0ZSgweDE5NildKC9eXFxcIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVxcXCIkLyk/XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNTUpXSgweDEsXzB4MmFjMWUwW18weDM4NDk0ZSgweDI0MSldLTB4Mik6XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgxN2IpXSgvJy9nLCdcXFxceDVjXFxcXHgyNycpW18weDM4NDk0ZSgweDE3YildKC9cXFxcXFxcXFxcXCIvZywnXFxcXHgyMicpW18weDM4NDk0ZSgweDE3YildKC8oXlxcXCJ8XFxcIiQpL2csJ1xcXFx4MjcnKSxfMHgyYWMxZTA7fVtfMHg0NzRlMjgoMHgyNTgpXShfMHg0Y2RmMjQsXzB4NDVkYTEyLF8weDE4ZTE2NyxfMHhlYzNmNil7dmFyIF8weDFkMTlmNT1fMHg0NzRlMjg7dGhpc1tfMHgxZDE5ZjUoMHgyMjMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKSxfMHhlYzNmNiYmXzB4ZWMzZjYoKSx0aGlzW18weDFkMTlmNSgweDFlYildKF8weDE4ZTE2NyxfMHg0Y2RmMjQpLHRoaXNbXzB4MWQxOWY1KDB4MWQzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMik7fVtfMHg0NzRlMjgoMHgyMjMpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKXt2YXIgXzB4MmVlZmMwPV8weDQ3NGUyODt0aGlzW18weDJlZWZjMCgweDE3OCldKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUGVybWlzc2lvbnMnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKTt9W18weDQ3NGUyOCgweDE3OCldKF8weDNkMGQ0NSxfMHgzODZiYTUpe31bJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4MmY4MzMwLF8weDQ1NjY2MCl7fVtfMHg0NzRlMjgoMHgxZTMpXShfMHg1NTk2YzIsXzB4M2Y3YTkyKXt9W18weDQ3NGUyOCgweDE4MildKF8weDc1Y2VhKXt2YXIgXzB4NTg2YmFjPV8weDQ3NGUyODtyZXR1cm4gXzB4NzVjZWE9PT10aGlzW18weDU4NmJhYygweDIxNSldO31bXzB4NDc0ZTI4KDB4MWQzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSl7dmFyIF8weDRkY2JmYz1fMHg0NzRlMjg7dGhpc1tfMHg0ZGNiZmMoMHgxZTMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDE4OCldKF8weDQzNGVjOSksXzB4MzQ0MDhlW18weDRkY2JmYygweDI0MildJiZ0aGlzW18weDRkY2JmYygweDFmOSldKF8weDQzNGVjOSksdGhpc1tfMHg0ZGNiZmMoMHgxYjgpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDI2NCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbJ19jbGVhbk5vZGUnXShfMHg0MzRlYzkpO31bXzB4NDc0ZTI4KDB4MWViKV0oXzB4NTk5ZDI0LF8weDQxMzM1Nyl7dmFyIF8weDJkMGZjNz1fMHg0NzRlMjg7bGV0IF8weGMyZDg0Nzt0cnl7XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldJiYoXzB4YzJkODQ3PV8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXSxfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV09ZnVuY3Rpb24oKXt9KSxfMHg1OTlkMjQmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV09PV8weDJkMGZjNygweDFhZCkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjQxKV09XzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldKTt9Y2F0Y2h7fWZpbmFsbHl7XzB4YzJkODQ3JiYoXzB4MjJjY2IzWydjb25zb2xlJ11bJ2Vycm9yJ109XzB4YzJkODQ3KTt9aWYoXzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxYWQpfHxfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFkNikpe2lmKGlzTmFOKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkpXzB4NDEzMzU3W18weDJkMGZjNygweDI0ZildPSEweDAsZGVsZXRlIF8weDQxMzM1N1sndmFsdWUnXTtlbHNlIHN3aXRjaChfMHg0MTMzNTdbJ3ZhbHVlJ10pe2Nhc2UgTnVtYmVyWydQT1NJVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMmQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSBOdW1iZXJbJ05FR0FUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIxZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIDB4MDp0aGlzW18weDJkMGZjNygweDIzMCldKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWZmKV09ITB4MCk7YnJlYWs7fX1lbHNlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZDUpXT09PV8weDJkMGZjNygweDIxMCkmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV09PV8weDJkMGZjNygweDFjYSkmJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0hPT1fMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MTlkKV09XzB4NTk5ZDI0WyduYW1lJ10pO31bXzB4NDc0ZTI4KDB4MjMwKV0oXzB4ZDU1MzlmKXt2YXIgXzB4MmVhZTYzPV8weDQ3NGUyODtyZXR1cm4gMHgxL18weGQ1NTM5Zj09PU51bWJlcltfMHgyZWFlNjMoMHgyNWMpXTt9Wydfc29ydFByb3BzJ10oXzB4MzgwMjM1KXt2YXIgXzB4MTQ2MTM1PV8weDQ3NGUyODshXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldfHwhXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDI0MSldfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgxYmIpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgyNWEpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT0nU2V0J3x8XzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDFmYildKGZ1bmN0aW9uKF8weDQxNDkyOCxfMHgxOTQ1ZmMpe3ZhciBfMHgyNjY4OTI9XzB4MTQ2MTM1LF8weDFiNjZiNz1fMHg0MTQ5MjhbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKSxfMHg1MzI4YmI9XzB4MTk0NWZjW18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCk7cmV0dXJuIF8weDFiNjZiNzxfMHg1MzI4YmI/LTB4MTpfMHgxYjY2Yjc+XzB4NTMyOGJiPzB4MToweDA7fSk7fVtfMHg0NzRlMjgoMHgxYjgpXShfMHgzNjliZmYsXzB4MWUxYzY4KXt2YXIgXzB4MjU3OGU5PV8weDQ3NGUyODtpZighKF8weDFlMWM2OFtfMHgyNTc4ZTkoMHgxYjEpXXx8IV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXXx8IV8weDM2OWJmZlsncHJvcHMnXVsnbGVuZ3RoJ10pKXtmb3IodmFyIF8weDQxMjRiMD1bXSxfMHg1ZDhjMTI9W10sXzB4MWIwMmY3PTB4MCxfMHgyOTExNGY9XzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDI0MSldO18weDFiMDJmNzxfMHgyOTExNGY7XzB4MWIwMmY3Kyspe3ZhciBfMHg0ZGFkMDc9XzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldW18weDFiMDJmN107XzB4NGRhZDA3W18weDI1NzhlOSgweDFkNSldPT09XzB4MjU3OGU5KDB4MjEwKT9fMHg0MTI0YjBbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTpfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTt9aWYoISghXzB4NWQ4YzEyW18weDI1NzhlOSgweDI0MSldfHxfMHg0MTI0YjBbXzB4MjU3OGU5KDB4MjQxKV08PTB4MSkpe18weDM2OWJmZlsncHJvcHMnXT1fMHg1ZDhjMTI7dmFyIF8weDNmNTEzZT17J2Z1bmN0aW9uc05vZGUnOiEweDAsJ3Byb3BzJzpfMHg0MTI0YjB9O3RoaXNbXzB4MjU3OGU5KDB4MTc4KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxZTMpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDE4OCldKF8weDNmNTEzZSksdGhpc1tfMHgyNTc4ZTkoMHgxZDcpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSxfMHgzZjUxM2VbJ2lkJ10rPSdcXFxceDIwZicsXzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDFhMildKF8weDNmNTEzZSk7fX19WydfYWRkTG9hZE5vZGUnXShfMHgyNTFmZWEsXzB4MWM3YmVkKXt9W18weDQ3NGUyOCgweDE4OCldKF8weDQyMGM1ZSl7fVsnX2lzQXJyYXknXShfMHgxNzFkMzgpe3ZhciBfMHg0MTYyMzQ9XzB4NDc0ZTI4O3JldHVybiBBcnJheVsnaXNBcnJheSddKF8weDE3MWQzOCl8fHR5cGVvZiBfMHgxNzFkMzg9PV8weDQxNjIzNCgweDI0YykmJnRoaXNbJ19vYmplY3RUb1N0cmluZyddKF8weDE3MWQzOCk9PT1fMHg0MTYyMzQoMHgxOGEpO31bXzB4NDc0ZTI4KDB4MWQ3KV0oXzB4MzFiZGM0LF8weDUxNzliMSl7fVtfMHg0NzRlMjgoMHgyMzgpXShfMHg0ZTBlY2Mpe3ZhciBfMHg0MTIwNzk9XzB4NDc0ZTI4O2RlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjAyKV0sZGVsZXRlIF8weDRlMGVjY1snX2hhc1NldE9uSXRzUGF0aCddLGRlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjEzKV07fVsnX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDExYmVhNixfMHg0N2UwMzIpe319bGV0IF8weDNhNDU2ND1uZXcgXzB4NDMyOGJjKCksXzB4NDYwYjM2PXsncHJvcHMnOjB4NjQsJ2VsZW1lbnRzJzoweDY0LCdzdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ3RvdGFsU3RyTGVuZ3RoJzoweDQwMCoweDMyLCdhdXRvRXhwYW5kTGltaXQnOjB4MTM4OCwnYXV0b0V4cGFuZE1heERlcHRoJzoweGF9LF8weDE1ODY2YT17J3Byb3BzJzoweDUsJ2VsZW1lbnRzJzoweDUsJ3N0ckxlbmd0aCc6MHgxMDAsJ3RvdGFsU3RyTGVuZ3RoJzoweDEwMCoweDMsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxZSwnYXV0b0V4cGFuZE1heERlcHRoJzoweDJ9O2Z1bmN0aW9uIF8weDI4MTYyNChfMHgyMzkwMGIsXzB4NTk4YTRhLF8weDFiNTRhYyxfMHgyNTRiZDQsXzB4NTE0OGE0LF8weDRmYjk0MCl7dmFyIF8weDM1NjdjYz1fMHg0NzRlMjg7bGV0IF8weDJkYmUwMSxfMHg1NGU5ZmU7dHJ5e18weDU0ZTlmZT1fMHg1OTE1OGIoKSxfMHgyZGJlMDE9XzB4NGUxNzFiW18weDU5OGE0YV0sIV8weDJkYmUwMXx8XzB4NTRlOWZlLV8weDJkYmUwMVsndHMnXT4weDFmNCYmXzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldJiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0vXzB4MmRiZTAxWydjb3VudCddPDB4NjQ/KF8weDRlMTcxYltfMHg1OThhNGFdPV8weDJkYmUwMT17J2NvdW50JzoweDAsJ3RpbWUnOjB4MCwndHMnOl8weDU0ZTlmZX0sXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldPXt9KTpfMHg1NGU5ZmUtXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPjB4MzImJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsnY291bnQnXSYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildL18weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldPDB4NjQmJihfMHg0ZTE3MWJbJ2hpdHMnXT17fSk7bGV0IF8weDE3NGQxYT1bXSxfMHg1YTJkYjY9XzB4MmRiZTAxW18weDM1NjdjYygweDI0NildfHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjQ2KV0/XzB4MTU4NjZhOl8weDQ2MGIzNixfMHgzNjlmYjA9XzB4NDY1ZGM3PT57dmFyIF8weDFlNzk4Nz1fMHgzNTY3Y2M7bGV0IF8weDM1YjMxZT17fTtyZXR1cm4gXzB4MzViMzFlW18weDFlNzk4NygweDI0NyldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNDcpXSxfMHgzNWIzMWVbJ2VsZW1lbnRzJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDI2MildLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMTIpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjEyKV0sXzB4MzViMzFlWyd0b3RhbFN0ckxlbmd0aCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTkpXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRMaW1pdCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNTApXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWE4KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOCldLF8weDM1YjMxZVsnc29ydFByb3BzJ109ITB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWIxKV09IV8weDJjNzNkZSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjIxKV09MHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZWMpXT0weDAsXzB4MzViMzFlW18weDFlNzk4NygweDFkNCldPV8weDFlNzk4NygweDE3NCksXzB4MzViMzFlW18weDFlNzk4NygweDIwZSldPSdyb290X2V4cCcsXzB4MzViMzFlW18weDFlNzk4NygweDFiYSldPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDFmMyldPVtdLF8weDM1YjMxZVsnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT0weDAsXzB4MzViMzFlWydyZXNvbHZlR2V0dGVycyddPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDI2MyldPTB4MCxfMHgzNWIzMWVbJ25vZGUnXT17J2N1cnJlbnQnOnZvaWQgMHgwLCdwYXJlbnQnOnZvaWQgMHgwLCdpbmRleCc6MHgwfSxfMHgzNWIzMWU7fTtmb3IodmFyIF8weDU0NGUxZT0weDA7XzB4NTQ0ZTFlPF8weDUxNDhhNFsnbGVuZ3RoJ107XzB4NTQ0ZTFlKyspXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3RpbWVOb2RlJzpfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMzYpfHx2b2lkIDB4MH0sXzB4NTE0OGE0W18weDU0NGUxZV0sXzB4MzY5ZmIwKF8weDVhMmRiNikse30pKTtpZihfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgxYWIpfHxfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMWIpKXtsZXQgXzB4MTZiYzUwPUVycm9yW18weDM1NjdjYygweDE4OSldO3RyeXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT0weDEvMHgwLF8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeydzdGFja05vZGUnOiEweDB9LG5ldyBFcnJvcigpW18weDM1NjdjYygweDIwMSldLF8weDM2OWZiMChfMHg1YTJkYjYpLHsnc3RyTGVuZ3RoJzoweDEvMHgwfSkpO31maW5hbGx5e0Vycm9yW18weDM1NjdjYygweDE4OSldPV8weDE2YmM1MDt9fXJldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6XzB4MTc0ZDFhLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWNhdGNoKF8weDY1N2ZiMCl7cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpbeyd0eXBlJzpfMHgzNTY3Y2MoMHgxYzIpLCdlcnJvcic6XzB4NjU3ZmIwJiZfMHg2NTdmYjBbXzB4MzU2N2NjKDB4MjM0KV19XSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31maW5hbGx5e3RyeXtpZihfMHgyZGJlMDEmJl8weDU0ZTlmZSl7bGV0IF8weDU2OWUyYT1fMHg1OTE1OGIoKTtfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHgyZGJlMDFbJ3RzJ109XzB4NTY5ZTJhLF8weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldKyssXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPV8weDU2OWUyYSwoXzB4MmRiZTAxWydjb3VudCddPjB4MzJ8fF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXT4weDY0KSYmKF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXT0hMHgwKSwoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDFmYSldPjB4M2U4fHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RpbWUnXT4weDEyYykmJihfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3JlZHVjZUxpbWl0cyddPSEweDApO319Y2F0Y2h7fX19cmV0dXJuIF8weDI4MTYyNDt9KChfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDI2YTY5OSxfMHg1NmFkNTIsXzB4Y2YxMzI1LF8weDQ1ZGNjYyxfMHgxNWNjNmIsXzB4NGI1MDdmKT0+e3ZhciBfMHgxMjhjMzY9XzB4YjM4NDc5O2lmKF8weDIyM2QzN1snX2NvbnNvbGVfbmluamEnXSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2lmKCFIKF8weDIyM2QzNyxfMHhjZjEzMjUsXzB4NWYyYzZkKSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KCk9Pnt9LCdjb25zb2xlVHJhY2UnOigpPT57fSwnY29uc29sZVRpbWUnOigpPT57fSwnY29uc29sZVRpbWVFbmQnOigpPT57fSwnYXV0b0xvZyc6KCk9Pnt9LCdhdXRvTG9nTWFueSc6KCk9Pnt9LCdhdXRvVHJhY2VNYW55JzooKT0+e30sJ2NvdmVyYWdlJzooKT0+e30sJ2F1dG9UcmFjZSc6KCk9Pnt9LCdhdXRvVGltZSc6KCk9Pnt9LCdhdXRvVGltZUVuZCc6KCk9Pnt9fSxfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07bGV0IF8weDRjODg5ND1CKF8weDIyM2QzNyksXzB4NGZjZTcwPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZTgpXSxfMHhmMDRlM2Y9XzB4NGM4ODk0W18weDEyOGMzNigweDE3ZCldLF8weDM0ZGJkMj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWVmKV0sXzB4NTUzMWUwPXsnaGl0cyc6e30sJ3RzJzp7fX0sXzB4NThmMWNkPVgoXzB4MjIzZDM3LF8weDQ1ZGNjYyxfMHg1NTMxZTAsXzB4MjZhNjk5KSxfMHgyYjhiMGY9XzB4M2ZhYzc4PT57XzB4NTUzMWUwWyd0cyddW18weDNmYWM3OF09XzB4ZjA0ZTNmKCk7fSxfMHg5NWEwMmY9KF8weDE0MzViOSxfMHgzNGZmOTIpPT57bGV0IF8weDEyNGQyZT1fMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXTtpZihkZWxldGUgXzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml0sXzB4MTI0ZDJlKXtsZXQgXzB4NTliMDQ1PV8weDRmY2U3MChfMHgxMjRkMmUsXzB4ZjA0ZTNmKCkpO18weDUwNjM5ZihfMHg1OGYxY2QoJ3RpbWUnLF8weDE0MzViOSxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDU5YjA0NV0sXzB4MzRmZjkyKSk7fX0sXzB4M2MyZjIzPV8weDEzYmY3Yj0+e3ZhciBfMHg0NTdmNmI9XzB4MTI4YzM2LF8weDM0ZWI3YjtyZXR1cm4gXzB4NWYyYzZkPT09XzB4NDU3ZjZiKDB4MWRlKSYmXzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldJiYoKF8weDM0ZWI3Yj1fMHgxM2JmN2I9PW51bGw/dm9pZCAweDA6XzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldKT09bnVsbD92b2lkIDB4MDpfMHgzNGViN2JbXzB4NDU3ZjZiKDB4MjQxKV0pJiYoXzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldWzB4MF1bXzB4NDU3ZjZiKDB4MWRkKV09XzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldKSxfMHgxM2JmN2I7fTtfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooXzB4NWNhZmQ4LF8weDQ4N2NmNik9Pnt2YXIgXzB4NTUxODljPV8weDEyOGMzNjtfMHgyMjNkMzdbJ2NvbnNvbGUnXVtfMHg1NTE4OWMoMHgyNTEpXVtfMHg1NTE4OWMoMHgyMTYpXSE9PV8weDU1MTg5YygweDE5NCkmJl8weDUwNjM5ZihfMHg1OGYxY2QoXzB4NTUxODljKDB4MjUxKSxfMHg1Y2FmZDgsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ4N2NmNikpO30sJ2NvbnNvbGVUcmFjZSc6KF8weDVlNjQ3MyxfMHgzZDM1YzgpPT57dmFyIF8weDU2MTkwNj1fMHgxMjhjMzYsXzB4MTM5MWViLF8weDJiYjA2NTtfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MjVlKV1bJ2xvZyddWyduYW1lJ10hPT0nZGlzYWJsZWRUcmFjZScmJigoXzB4MmJiMDY1PShfMHgxMzkxZWI9XzB4MjIzZDM3W18weDU2MTkwNigweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxMzkxZWJbXzB4NTYxOTA2KDB4MjRkKV0pIT1udWxsJiZfMHgyYmIwNjVbXzB4NTYxOTA2KDB4MWMxKV0mJihfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MTkyKV09ITB4MCksXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoJ3RyYWNlJyxfMHg1ZTY0NzMsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDNkMzVjOCkpKSk7fSwnY29uc29sZUVycm9yJzooXzB4NDhmMjM0LF8weDUwYWNiNSk9Pnt2YXIgXzB4M2FjOTMwPV8weDEyOGMzNjtfMHgyMjNkMzdbXzB4M2FjOTMwKDB4MTkyKV09ITB4MCxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzYWM5MzAoMHgyMWIpLF8weDQ4ZjIzNCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NTBhY2I1KSkpO30sJ2NvbnNvbGVUaW1lJzpfMHgzYjQ1Mjg9PntfMHgyYjhiMGYoXzB4M2I0NTI4KTt9LCdjb25zb2xlVGltZUVuZCc6KF8weDFkMmExYSxfMHg4ZmVjZDcpPT57XzB4OTVhMDJmKF8weDhmZWNkNyxfMHgxZDJhMWEpO30sJ2F1dG9Mb2cnOihfMHgyMDI2ODMsXzB4MmNmZTViKT0+e18weDUwNjM5ZihfMHg1OGYxY2QoJ2xvZycsXzB4MmNmZTViLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MjAyNjgzXSkpO30sJ2F1dG9Mb2dNYW55JzooXzB4NGI2YzQ3LF8weDQ1MGI2Nik9Pnt2YXIgXzB4NDczODAyPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4NThmMWNkKF8weDQ3MzgwMigweDI1MSksXzB4NGI2YzQ3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0NTBiNjYpKTt9LCdhdXRvVHJhY2UnOihfMHgzMmE3NixfMHgxNGJjMTIpPT57dmFyIF8weDU3Y2Y4YT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4NTdjZjhhKDB4MWFiKSxfMHgxNGJjMTIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgzMmE3Nl0pKSk7fSwnYXV0b1RyYWNlTWFueSc6KF8weGUzNjBmNyxfMHgzM2MwZTIpPT57dmFyIF8weDNkYjAwZT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2RiMDBlKDB4MWFiKSxfMHhlMzYwZjcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDMzYzBlMikpKTt9LCdhdXRvVGltZSc6KF8weGQyMzc0OSxfMHgxZWYyZDgsXzB4NDExNmRiKT0+e18weDJiOGIwZihfMHg0MTE2ZGIpO30sJ2F1dG9UaW1lRW5kJzooXzB4MTRkNTkyLF8weDU5ZWZlNyxfMHgxMWY3YWMpPT57XzB4OTVhMDJmKF8weDU5ZWZlNyxfMHgxMWY3YWMpO30sJ2NvdmVyYWdlJzpfMHgyMDc0MmE9Pnt2YXIgXzB4NjQ0ODk3PV8weDEyOGMzNjtfMHg1MDYzOWYoeydtZXRob2QnOl8weDY0NDg5NygweDFiMiksJ3ZlcnNpb24nOl8weDI2YTY5OSwnYXJncyc6W3snaWQnOl8weDIwNzQyYX1dfSk7fX07bGV0IF8weDUwNjM5Zj1xKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MTVjYzZiLF8weDRiNTA3ZiksXzB4NTI5MDM0PV8weDIyM2QzN1tfMHgxMjhjMzYoMHgyNjEpXTtyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO30pKGdsb2JhbFRoaXMsXzB4YjM4NDc5KDB4MThlKSxfMHhiMzg0NzkoMHgxZGYpLF8weGIzODQ3OSgweDI1YiksXzB4YjM4NDc5KDB4MWVlKSxfMHhiMzg0NzkoMHgyM2QpLF8weGIzODQ3OSgweDI0YSksXzB4YjM4NDc5KDB4MTk3KSxfMHhiMzg0NzkoMHgxY2UpLCcnLCcxJyk7XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gfVxuICAgICAgICA7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX29vKGkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZUxvZyhpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fb287IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RyKGkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRyYWNlKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb190cjsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHgoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlRXJyb3IoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3R4OyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190cyh2KSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lKHYpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190czsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdGUodiwgaSkgeyB0cnkge1xuICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVGltZUVuZCh2LCBpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9IHJldHVybiB2OyB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdGU7IC8qZXNsaW50IHVuaWNvcm4vbm8tYWJ1c2l2ZS1lc2xpbnQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL2Rpc2FibGUtZW5hYmxlLXBhaXI6LGVzbGludC1jb21tZW50cy9uby11bmxpbWl0ZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWFnZ3JlZ2F0aW5nLWVuYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWR1cGxpY2F0ZS1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZW5hYmxlOiwqL1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHN0ZXA6IHN0ZXAsIG1vZGFsU3RhdGU6IG1vZGFsU3RhdGUsIGluaXRpYWxSZW5kZXI6IGluaXRpYWxSZW5kZXIsIHB1Ymxpc2hlclNldHRpbmc6IHB1Ymxpc2hlclNldHRpbmcsIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLCBpc01vZGVsQ2xvc2VDbGlja2VkOiBpc01vZGVsQ2xvc2VDbGlja2VkLCBpc0ZvcmNlT3Blbk1vZGFsOiBpc0ZvcmNlT3Blbk1vZGFsLCBvcmdhbml6YXRpb25TdGVwczogb3JnYW5pemF0aW9uU3RlcHMsIGZpcnN0SW5jb21wbGV0ZVN0ZXA6IGZpcnN0SW5jb21wbGV0ZVN0ZXAsIGZldGNoRGF0YTogZmV0Y2hEYXRhLCBjbG9zZU1vZGFsOiBjbG9zZU1vZGFsLCBwcm9jZWVkU3RlcDogcHJvY2VlZFN0ZXAsIHByZXZpb3VzU3RlcDogcHJldmlvdXNTdGVwLCBoYW5kbGVDaGFuZ2VSZW5kZXI6IGhhbmRsZUNoYW5nZVJlbmRlciwgY29tcGxldGVTdGVwOiBjb21wbGV0ZVN0ZXAsIHJlbW92ZUNvbXBsZXRlZFN0ZXA6IHJlbW92ZUNvbXBsZXRlZFN0ZXAsIGNoYW5nZVN0ZXA6IGNoYW5nZVN0ZXAsIG9vX2NtOiBvb19jbSwgb29fb286IG9vX29vLCBvb190cjogb29fdHIsIG9vX3R4OiBvb190eCwgb29fdHM6IG9vX3RzLCBvb190ZTogb29fdGUsIFN0ZXBCYXI6IFN0ZXBCYXJfdnVlXzEuZGVmYXVsdCwgUHVibGlzaGluZ1NldHRpbmdzU3RlcDogUHVibGlzaGluZ1NldHRpbmdzU3RlcF92dWVfMS5kZWZhdWx0LCBEZWZhdWx0VmFsdWVzU3RlcDogRGVmYXVsdFZhbHVlc1N0ZXBfdnVlXzEuZGVmYXVsdCwgT3JnYW5pc2F0aW9uRGF0YVN0ZXA6IE9yZ2FuaXNhdGlvbkRhdGFTdGVwX3Z1ZV8xLmRlZmF1bHQsIEFjdGl2aXR5U3RlcDogQWN0aXZpdHlTdGVwX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVN0ZXAnLFxuICAgIGVtaXRzOiBbJ3Byb2NlZWRTdGVwJywgJ3ByZXZpb3VzU3RlcCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvY2VlZFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KCcvb3JnYW5pc2F0aW9uLW9uYm9hcmRpbmcvY29tcGxldGUtYWN0aXZpdHknKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovIGNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsIG9vX29vKFwiODYyNjQwMzExXzY2XzZfNjZfMjJfNFwiLCBlcnIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHJldmlvdXNTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgncHJldmlvdXNTdGVwJyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGVtaXQ6IGVtaXQsIHByb2NlZWRTdGVwOiBwcm9jZWVkU3RlcCwgcHJldmlvdXNTdGVwOiBwcmV2aW91c1N0ZXAsIG9vX2NtOiBvb19jbSwgb29fb286IG9vX29vLCBvb190cjogb29fdHIsIG9vX3R4OiBvb190eCwgb29fdHM6IG9vX3RzLCBvb190ZTogb29fdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMaW5lc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9MaW5lc0xvYWRlci52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RlZmF1bHRWYWx1ZXNTdGVwJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW5jaWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZsb3dUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEFpZFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VGllZFN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmZXRjaERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ3Byb2NlZWRTdGVwJyxcbiAgICAgICAgJ3ByZXZpb3VzU3RlcCcsXG4gICAgICAgICdjb21wbGV0ZVN0ZXAnLFxuICAgICAgICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXG4gICAgXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFsbERlZmF1bHRWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfZmxvd190eXBlOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF90aWVkX3N0YXR1czogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNTYXZpbmdTdGFydGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNTYXZlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFsbERlZmF1bHRWYWx1ZS52YWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsRGVmYXVsdFZhbHVlLnZhbHVlW2tleV0gPSBwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwcm9jZWVkU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzU2F2aW5nU3RhcnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGFsbERlZmF1bHRWYWx1ZS52YWx1ZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWVzXzEgPSByZXNwb25zZS5kYXRhLmRhdGEuZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmZldGNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2soZGVmYXVsdFZhbHVlc18xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ3Byb2NlZWRTdGVwJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsgLyogZXNsaW50LWRpc2FibGUgKi8gcmV0dXJuIGNvbnNvbGUubG9nLmFwcGx5KC8qIGVzbGludC1kaXNhYmxlICovIGNvbnNvbGUsIG9vX29vKFwiMzkxNzg4MTc3M180NjlfMjBfNDY5XzQ1XzRcIiwgJ0Vycm9yJywgZXJyKSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2sgPSBmdW5jdGlvbiAoZGVmYXVsdFZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfY3VycmVuY3kgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9jdXJyZW5jeSAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9sYW5ndWFnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdjb21wbGV0ZVN0ZXAnLCAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVtaXQoJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLCAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByZXZpb3VzU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ3ByZXZpb3VzU3RlcCcpO1xuICAgICAgICB9O1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAvKiBjOCBpZ25vcmUgc3RhcnQgKi8gLyogZXNsaW50LWRpc2FibGUgKi8gO1xuICAgICAgICBmdW5jdGlvbiBvb19jbSgpIHsgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgZXZhbCkoXCJnbG9iYWxUaGlzLl9jb25zb2xlX25pbmphXCIpIHx8ICgwLCBldmFsKShcIi8qIGh0dHBzOi8vZ2l0aHViLmNvbS93YWxsYWJ5anMvY29uc29sZS1uaW5qYSNob3ctZG9lcy1pdC13b3JrICovJ3VzZSBzdHJpY3QnO3ZhciBfMHhiMzg0Nzk9XzB4MjY5MDsoZnVuY3Rpb24oXzB4M2RhOWE3LF8weDEyOTk4Myl7dmFyIF8weDI0MTNmMj1fMHgyNjkwLF8weDRlZDdiYT1fMHgzZGE5YTcoKTt3aGlsZSghIVtdKXt0cnl7dmFyIF8weDE1MzU2MD0tcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk1KSkvMHgxKihwYXJzZUludChfMHgyNDEzZjIoMHgxYzgpKS8weDIpKy1wYXJzZUludChfMHgyNDEzZjIoMHgxOTEpKS8weDMqKHBhcnNlSW50KF8weDI0MTNmMigweDFhZikpLzB4NCkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWQyKSkvMHg1Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxYWEpKS8weDYqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOTkpKS8weDcpK3BhcnNlSW50KF8weDI0MTNmMigweDFjOSkpLzB4OCstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWVhKSkvMHg5K3BhcnNlSW50KF8weDI0MTNmMigweDFmNykpLzB4YSooLXBhcnNlSW50KF8weDI0MTNmMigweDE4YikpLzB4Yik7aWYoXzB4MTUzNTYwPT09XzB4MTI5OTgzKWJyZWFrO2Vsc2UgXzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO31jYXRjaChfMHgxMTRkZTYpe18weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9fX0oXzB4NDlmYiwweDc1Nzc5KSk7ZnVuY3Rpb24gXzB4NDlmYigpe3ZhciBfMHgzMTNjMjk9WydfcXVvdGVkUmVnRXhwJywnd2FybicsJ2F1dG9FeHBhbmRQcmV2aW91c09iamVjdHMnLCdnZXRQcm90b3R5cGVPZicsJ19XZWJTb2NrZXQnLCdnZXR0ZXInLCcxMjMwVEVwbGxoJywnZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdDpcXFxceDIwJywnX3NvcnRQcm9wcycsJ2NvdW50Jywnc29ydCcsJ3NldCcsJ251bGwnLCd0b0xvd2VyQ2FzZScsJ25lZ2F0aXZlWmVybycsJ2pvaW4nLCdzdGFjaycsJ19oYXNTeW1ib2xQcm9wZXJ0eU9uSXRzUGF0aCcsJ2N1cnJlbnQnLCdfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywndGhlbicsJ2dldE93blByb3BlcnR5U3ltYm9scycsJ0hUTUxBbGxDb2xsZWN0aW9uJywndXJsJywncGF0aFRvRmlsZVVSTCcsJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJywnY2FwcGVkJywnX2lzTWFwJywnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJywncm9vdEV4cHJlc3Npb24nLCd1bnJlZicsJ2Z1bmN0aW9uJywnaGl0cycsJ3N0ckxlbmd0aCcsJ19oYXNNYXBPbkl0c1BhdGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwZmluZFxcXFx4MjBhbmRcXFxceDIwbG9hZFxcXFx4MjBXZWJTb2NrZXQnLCdfdW5kZWZpbmVkJywnbmFtZScsJ19zZW5kRXJyb3JNZXNzYWdlJywnZXZlbnRSZWNlaXZlZENhbGxiYWNrJywnX3BfbGVuZ3RoJywnZ2xvYmFsJywnZXJyb3InLCdcXFxceDIwYnJvd3NlcicsJ25lZ2F0aXZlSW5maW5pdHknLCdbb2JqZWN0XFxcXHgyMFNldF0nLCdzZW5kJywncHJvdG90eXBlJywnZGVwdGgnLCdyZWFkeVN0YXRlJywnX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZScsJ3VuZGVmaW5lZCcsJ19TeW1ib2wnLCdfcHJvcGVydHknLCdTZXQnLCdtYXAnLCdfaW5OZXh0RWRnZScsJ3ZhbHVlT2YnLCdzZWVcXFxceDIwaHR0cHM6Ly90aW55dXJsLmNvbS8ydnQ4anh6d1xcXFx4MjBmb3JcXFxceDIwbW9yZVxcXFx4MjBpbmZvLicsJ19vYmplY3RUb1N0cmluZycsJ3Bvc2l0aXZlSW5maW5pdHknLCdiaW5kJywnY2FsbCcsJ19pc05lZ2F0aXZlWmVybycsJ05FWFRfUlVOVElNRScsJ2xvZ2dlclxcXFx4MjB3ZWJzb2NrZXRcXFxceDIwZXJyb3InLCdfZ2V0T3duUHJvcGVydHlOYW1lcycsJ21lc3NhZ2UnLCdiaWdpbnQnLCd0aW1lJywnc3RhcnRzV2l0aCcsJ19jbGVhbk5vZGUnLCdfZGlzcG9zZVdlYnNvY2tldCcsJ19yZWdFeHBUb1N0cmluZycsJ29uZXJyb3InLCdjb25jYXQnLCcxLjAuMCcsJ2Jvb2xlYW4nLCdbb2JqZWN0XFxcXHgyMERhdGVdJywncmVtaXgnLCdsZW5ndGgnLCdzb3J0UHJvcHMnLCdvbm9wZW4nLCdfa2V5U3RyUmVnRXhwJywnZGF0YScsJ3JlZHVjZUxpbWl0cycsJ3Byb3BzJywnc29tZScsJ19jYXBJZlN0cmluZycsJzE3MzEwNDA5MzQ3MDQnLCdwZXJmX2hvb2tzJywnb2JqZWN0JywndmVyc2lvbnMnLCdmcm9tQ2hhckNvZGUnLCduYW4nLCdhdXRvRXhwYW5kTGltaXQnLCdsb2cnLCdnZXQnLCdwYXJzZScsJ19jb25uZWN0ZWQnLCdzdWJzdHInLCdub2RlTW9kdWxlcycsJ1xcXFx4MjBzZXJ2ZXInLCdfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0JywnX2Nvbm5lY3RpbmcnLCdNYXAnLFxcXCIvaG9tZS9mbHVmZnkvLnZzY29kZS9leHRlbnNpb25zL3dhbGxhYnlqcy5jb25zb2xlLW5pbmphLTEuMC4zNjYvbm9kZV9tb2R1bGVzXFxcIiwnTkVHQVRJVkVfSU5GSU5JVFknLCdfd3MnLCdjb25zb2xlJywnZG9ja2VyaXplZEFwcCcsJ190eXBlJywnX2NvbnNvbGVfbmluamFfc2Vzc2lvbicsJ2VsZW1lbnRzJywnYWxsU3RyTGVuZ3RoJywnX2FkZExvYWROb2RlJywnc3ltYm9sJywncm9vdF9leHBfaWQnLCdfYWxsb3dlZFRvU2VuZCcsJ3dzL2luZGV4LmpzJywncGVyZm9ybWFuY2UnLCdfc2V0Tm9kZUlkJywnX2JsYWNrbGlzdGVkUHJvcGVydHknLCdSZWdFeHAnLCdyZXBsYWNlJywnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnLCd0aW1lU3RhbXAnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlc3RhcnRpbmdcXFxceDIwdGhlXFxcXHgyMHByb2Nlc3NcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJ2FuZ3VsYXInLCdjYXBwZWRFbGVtZW50cycsJ19zb2NrZXQnLCdfaXNVbmRlZmluZWQnLCdfaXNQcmltaXRpdmVXcmFwcGVyVHlwZScsJ2dldFdlYlNvY2tldENsYXNzJywnbWV0aG9kJywnW29iamVjdFxcXFx4MjBNYXBdJywndGVzdCcsJ19zZXROb2RlRXhwYW5kYWJsZVN0YXRlJywnc3RhY2tUcmFjZUxpbWl0JywnW29iamVjdFxcXFx4MjBBcnJheV0nLCcyMTIxOVlyUmxVZScsJ19tYXhDb25uZWN0QXR0ZW1wdENvdW50JywnaHR0cHM6Ly90aW55dXJsLmNvbS8zN3g4Yjc5dCcsJzEyNy4wLjAuMScsJ29uY2xvc2UnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlZnJlc2hpbmdcXFxceDIwdGhlXFxcXHgyMHBhZ2VcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJzIyNjE2MW5adGZXSCcsJ19uaW5qYUlnbm9yZU5leHRFcnJvcicsJ2FyZ3MnLCdkaXNhYmxlZExvZycsJzI5NTNzQm9pZlMnLCdtYXRjaCcsW1xcXCJsb2NhbGhvc3RcXFwiLFxcXCIxMjcuMC4wLjFcXFwiLFxcXCJleGFtcGxlLmN5cHJlc3MuaW9cXFwiLFxcXCJmbHVmZnlcXFwiLFxcXCIxOTIuMTY4LjEwLjE3MVxcXCJdLCdzdHJpbmdpZnknLCc4MDE5NjJTQ1FRREUnLCdpbmNsdWRlcycsJ19pc1ByaW1pdGl2ZVR5cGUnLCdocnRpbWUnLCdmdW5jTmFtZScsJ3B1c2gnLCd3czovLycsJ29ubWVzc2FnZScsJ2xvY2F0aW9uJywndW5zaGlmdCcsJ3Byb2Nlc3MnLCdfaXNTZXQnLCdfSFRNTEFsbENvbGxlY3Rpb24nLCdfV2ViU29ja2V0Q2xhc3MnLCd0b1VwcGVyQ2FzZScsJ2F1dG9FeHBhbmRNYXhEZXB0aCcsJ3RvdGFsU3RyTGVuZ3RoJywnNnZHRGFVZicsJ3RyYWNlJywnZGF0ZScsJ251bWJlcicsJ3ZhbHVlJywnNFRuZEZIQicsJ3JlbG9hZCcsJ25vRnVuY3Rpb25zJywnY292ZXJhZ2UnLCdjcmVhdGUnLCdfYXR0ZW1wdFRvUmVjb25uZWN0U2hvcnRseScsJ3RvU3RyaW5nJywnX2FkZE9iamVjdFByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywnX2FkZEZ1bmN0aW9uc05vZGUnLCdfYWRkUHJvcGVydHknLCdhdXRvRXhwYW5kJywnYXJyYXknLCdfY29ubmVjdFRvSG9zdE5vdycsJ3BhcmVudCcsJ2NhcHBlZFByb3BzJywnZGVmaW5lUHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywnbm9kZScsJ3Vua25vd24nLCdfaW5Ccm93c2VyJywnY29uc3RydWN0b3InLCdfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnLCdjYXRjaCcsJ2xvZ2dlclxcXFx4MjBmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0JywnNDEyZFpXbWpQJywnNTk5OTEyOHpVSHNmaycsJ3N0cmluZycsJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnLCdfcHJvcGVydHlOYW1lJywnX2NvbnNvbGVfbmluamEnLCcnLCdzZXJpYWxpemUnLCcuLi4nLCdpbmRleCcsJzM3NjY4MDVMWnVXT0knLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQWZ0ZXJGdWxsVmFsdWUnLCdleHBJZCcsJ3R5cGUnLCdOdW1iZXInLCdfc2V0Tm9kZVBlcm1pc3Npb25zJywnX3BfbmFtZScsJ2dhdGV3YXkuZG9ja2VyLmludGVybmFsJywnU3RyaW5nJywnaG9zdCcsJ3Jlc29sdmVHZXR0ZXJzJywnb3JpZ2luJywnbmV4dC5qcycsJzMzNDUzJywnX3JlY29ubmVjdFRpbWVvdXQnLCdmb3JFYWNoJywnX3BfJywnX3NldE5vZGVMYWJlbCcsJ2VudicsJ19jb25uZWN0QXR0ZW1wdENvdW50JywnaG9zdG5hbWUnLCdTeW1ib2wnLCdlbGFwc2VkJywnZWRnZScsJzE5NDEzMDlsY2NWUFMnLCdfYWRkaXRpb25hbE1ldGFkYXRhJywnbGV2ZWwnLCdfZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnd2VicGFjaycsJ25vdycsJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ107XzB4NDlmYj1mdW5jdGlvbigpe3JldHVybiBfMHgzMTNjMjk7fTtyZXR1cm4gXzB4NDlmYigpO312YXIgSz1PYmplY3RbXzB4YjM4NDc5KDB4MWIzKV0sUT1PYmplY3RbXzB4YjM4NDc5KDB4MWJmKV0sRz1PYmplY3RbXzB4YjM4NDc5KDB4MWI3KV0sZWU9T2JqZWN0W18weGIzODQ3OSgweDFjMCldLHRlPU9iamVjdFtfMHhiMzg0NzkoMHgxZjQpXSxuZT1PYmplY3RbXzB4YjM4NDc5KDB4MjIwKV1bJ2hhc093blByb3BlcnR5J10scmU9KF8weDUxMDEyMixfMHg1ODcwNGYsXzB4MmU0NGY2LF8weDIwYmIzOSk9Pnt2YXIgXzB4MmZjYTkxPV8weGIzODQ3OTtpZihfMHg1ODcwNGYmJnR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDI0Yyl8fHR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDIxMCkpe2ZvcihsZXQgXzB4NTczNGEwIG9mIGVlKF8weDU4NzA0ZikpIW5lWydjYWxsJ10oXzB4NTEwMTIyLF8weDU3MzRhMCkmJl8weDU3MzRhMCE9PV8weDJlNDRmNiYmUShfMHg1MTAxMjIsXzB4NTczNGEwLHsnZ2V0JzooKT0+XzB4NTg3MDRmW18weDU3MzRhMF0sJ2VudW1lcmFibGUnOiEoXzB4MjBiYjM5PUcoXzB4NTg3MDRmLF8weDU3MzRhMCkpfHxfMHgyMGJiMzlbJ2VudW1lcmFibGUnXX0pO31yZXR1cm4gXzB4NTEwMTIyO30sVj0oXzB4MTQ4ZDFkLF8weDQzN2Q3OCxfMHg1ZWMxMzEpPT4oXzB4NWVjMTMxPV8weDE0OGQxZCE9bnVsbD9LKHRlKF8weDE0OGQxZCkpOnt9LHJlKF8weDQzN2Q3OHx8IV8weDE0OGQxZHx8IV8weDE0OGQxZFsnX19lcycrJ01vZHVsZSddP1EoXzB4NWVjMTMxLCdkZWZhdWx0Jyx7J3ZhbHVlJzpfMHgxNDhkMWQsJ2VudW1lcmFibGUnOiEweDB9KTpfMHg1ZWMxMzEsXzB4MTQ4ZDFkKSksWj1jbGFzc3tjb25zdHJ1Y3RvcihfMHgzYjQ2NTUsXzB4MWQ1YmU4LF8weDM2OGRjZixfMHg1ZjRlYjEsXzB4NWU4NDJmLF8weDg2ODc5ZCl7dmFyIF8weDVlMGU1NT1fMHhiMzg0NzksXzB4MTg1OWZiLF8weGM1N2IwLF8weDUzZjU4NCxfMHgyZWUzNjQ7dGhpc1tfMHg1ZTBlNTUoMHgyMWEpXT1fMHgzYjQ2NTUsdGhpc1tfMHg1ZTBlNTUoMHgxZGIpXT1fMHgxZDViZTgsdGhpc1sncG9ydCddPV8weDM2OGRjZix0aGlzWydub2RlTW9kdWxlcyddPV8weDVmNGViMSx0aGlzW18weDVlMGU1NSgweDI1ZildPV8weDVlODQyZix0aGlzW18weDVlMGU1NSgweDIxOCldPV8weDg2ODc5ZCx0aGlzW18weDVlMGU1NSgweDE3NSldPSEweDAsdGhpc1tfMHg1ZTBlNTUoMHgxZjApXT0hMHgwLHRoaXNbJ19jb25uZWN0ZWQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDVlMGU1NSgweDIyOSldPSgoXzB4YzU3YjA9KF8weDE4NTlmYj1fMHgzYjQ2NTVbXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDE4NTlmYltfMHg1ZTBlNTUoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4YzU3YjBbXzB4NWUwZTU1KDB4MjMxKV0pPT09XzB4NWUwZTU1KDB4MWU5KSx0aGlzW18weDVlMGU1NSgweDFjMyldPSEoKF8weDJlZTM2ND0oXzB4NTNmNTg0PXRoaXNbJ2dsb2JhbCddW18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1M2Y1ODRbXzB4NWUwZTU1KDB4MjRkKV0pIT1udWxsJiZfMHgyZWUzNjRbXzB4NWUwZTU1KDB4MWMxKV0pJiYhdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXSx0aGlzWydfV2ViU29ja2V0Q2xhc3MnXT1udWxsLHRoaXNbXzB4NWUwZTU1KDB4MWU1KV09MHgwLHRoaXNbXzB4NWUwZTU1KDB4MThjKV09MHgxNCx0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddPV8weDVlMGU1NSgweDE4ZCksdGhpc1tfMHg1ZTBlNTUoMHgyMTcpXT0odGhpc1snX2luQnJvd3NlciddP18weDVlMGU1NSgweDE5MCk6XzB4NWUwZTU1KDB4MTdlKSkrdGhpc1tfMHg1ZTBlNTUoMHgyMGEpXTt9YXN5bmNbXzB4YjM4NDc5KDB4MTg0KV0oKXt2YXIgXzB4NWI0MGM0PV8weGIzODQ3OSxfMHg0M2FkYWMsXzB4M2YwOGQ5O2lmKHRoaXNbXzB4NWI0MGM0KDB4MWE2KV0pcmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV07bGV0IF8weDFlZmU3MztpZih0aGlzW18weDViNDBjNCgweDFjMyldfHx0aGlzW18weDViNDBjNCgweDIyOSldKV8weDFlZmU3Mz10aGlzW18weDViNDBjNCgweDIxYSldWydXZWJTb2NrZXQnXTtlbHNle2lmKChfMHg0M2FkYWM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsncHJvY2VzcyddKSE9bnVsbCYmXzB4NDNhZGFjW18weDViNDBjNCgweDFmNSldKV8weDFlZmU3Mz0oXzB4M2YwOGQ5PXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bXzB4NWI0MGM0KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmMDhkOVsnX1dlYlNvY2tldCddO2Vsc2UgdHJ5e2xldCBfMHgxNzkyNWE9YXdhaXQgaW1wb3J0KCdwYXRoJyk7XzB4MWVmZTczPShhd2FpdCBpbXBvcnQoKGF3YWl0IGltcG9ydChfMHg1YjQwYzQoMHgyMDgpKSlbXzB4NWI0MGM0KDB4MjA5KV0oXzB4MTc5MjVhWydqb2luJ10odGhpc1snbm9kZU1vZHVsZXMnXSxfMHg1YjQwYzQoMHgxNzYpKSlbXzB4NWI0MGM0KDB4MWI1KV0oKSkpWydkZWZhdWx0J107fWNhdGNoe3RyeXtfMHgxZWZlNzM9cmVxdWlyZShyZXF1aXJlKCdwYXRoJylbXzB4NWI0MGM0KDB4MjAwKV0odGhpc1tfMHg1YjQwYzQoMHgyNTYpXSwnd3MnKSk7fWNhdGNoe3Rocm93IG5ldyBFcnJvcihfMHg1YjQwYzQoMHgyMTQpKTt9fX1yZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXT1fMHgxZWZlNzMsXzB4MWVmZTczO31bXzB4YjM4NDc5KDB4MWJjKV0oKXt2YXIgXzB4M2UzYTY5PV8weGIzODQ3OTt0aGlzW18weDNlM2E2OSgweDI1OSldfHx0aGlzW18weDNlM2E2OSgweDI1NCldfHx0aGlzWydfY29ubmVjdEF0dGVtcHRDb3VudCddPj10aGlzW18weDNlM2E2OSgweDE4YyldfHwodGhpc1snX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MCx0aGlzW18weDNlM2E2OSgweDFlNSldKyssdGhpc1snX3dzJ109bmV3IFByb21pc2UoKF8weDIyN2M5OCxfMHgyZDIwNjUpPT57dmFyIF8weDQzYzg2OT1fMHgzZTNhNjk7dGhpc1snZ2V0V2ViU29ja2V0Q2xhc3MnXSgpW18weDQzYzg2OSgweDIwNSldKF8weDU4NTIyND0+e3ZhciBfMHgzZjNhODc9XzB4NDNjODY5O2xldCBfMHgyZGQ1OTQ9bmV3IF8weDU4NTIyNChfMHgzZjNhODcoMHgxOWYpKyghdGhpc1snX2luQnJvd3NlciddJiZ0aGlzWydkb2NrZXJpemVkQXBwJ10/XzB4M2YzYTg3KDB4MWQ5KTp0aGlzW18weDNmM2E4NygweDFkYildKSsnOicrdGhpc1sncG9ydCddKTtfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjNiKV09KCk9Pnt2YXIgXzB4MTI2ODZhPV8weDNmM2E4Nzt0aGlzW18weDEyNjg2YSgweDE3NSldPSEweDEsdGhpc1tfMHgxMjY4NmEoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4MTI2ODZhKDB4MWI0KV0oKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDEyNjg2YSgweDIzMikpKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgyNDMpXT0oKT0+e3ZhciBfMHg0ZGFmZjY9XzB4M2YzYTg3O3RoaXNbJ19pbkJyb3dzZXInXXx8XzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSgpLF8weDIyN2M5OChfMHgyZGQ1OTQpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDE4ZildPSgpPT57dmFyIF8weDNhNTgzZj1fMHgzZjNhODc7dGhpc1tfMHgzYTU4M2YoMHgxZjApXT0hMHgwLHRoaXNbXzB4M2E1ODNmKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDNhNTgzZigweDFiNCldKCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MWEwKV09XzB4MjYyMTVhPT57dmFyIF8weDFhZGJkMT1fMHgzZjNhODc7dHJ5e2lmKCEoXzB4MjYyMTVhIT1udWxsJiZfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pfHwhdGhpc1tfMHgxYWRiZDEoMHgyMTgpXSlyZXR1cm47bGV0IF8weDJiYWJkOT1KU09OW18weDFhZGJkMSgweDI1MyldKF8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSk7dGhpc1tfMHgxYWRiZDEoMHgyMTgpXShfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTg1KV0sXzB4MmJhYmQ5W18weDFhZGJkMSgweDE5MyldLHRoaXNbXzB4MWFkYmQxKDB4MjFhKV0sdGhpc1snX2luQnJvd3NlciddKTt9Y2F0Y2h7fX07fSlbXzB4NDNjODY5KDB4MjA1KV0oXzB4NGY3MTRlPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgwLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDQzYzg2OSgweDFmMCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NDNjODY5KDB4MWU1KV09MHgwLF8weDRmNzE0ZSkpW18weDQzYzg2OSgweDFjNildKF8weDIyZWM5ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MSx0aGlzW18weDQzYzg2OSgweDI1OSldPSEweDEsY29uc29sZVtfMHg0M2M4NjkoMHgxZjIpXSgnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QsXFxcXHgyMHNlZVxcXFx4MjAnK3RoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ10pLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4NDNjODY5KDB4MWY4KSsoXzB4MjJlYzllJiZfMHgyMmVjOWVbXzB4NDNjODY5KDB4MjM0KV0pKSkpKTt9KSk7fVtfMHhiMzg0NzkoMHgyMzkpXShfMHgyNThlYTMpe3ZhciBfMHgzMTYwN2U9XzB4YjM4NDc5O3RoaXNbXzB4MzE2MDdlKDB4MjU0KV09ITB4MSx0aGlzW18weDMxNjA3ZSgweDI1OSldPSEweDE7dHJ5e18weDI1OGVhM1snb25jbG9zZSddPW51bGwsXzB4MjU4ZWEzWydvbmVycm9yJ109bnVsbCxfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjQzKV09bnVsbDt9Y2F0Y2h7fXRyeXtfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjIyKV08MHgyJiZfMHgyNThlYTNbJ2Nsb3NlJ10oKTt9Y2F0Y2h7fX1bXzB4YjM4NDc5KDB4MWI0KV0oKXt2YXIgXzB4MjMzYmE2PV8weGIzODQ3OTtjbGVhclRpbWVvdXQodGhpc1tfMHgyMzNiYTYoMHgxZTApXSksISh0aGlzW18weDIzM2JhNigweDFlNSldPj10aGlzW18weDIzM2JhNigweDE4YyldKSYmKHRoaXNbXzB4MjMzYmE2KDB4MWUwKV09c2V0VGltZW91dCgoKT0+e3ZhciBfMHg0MDFmZWM9XzB4MjMzYmE2LF8weDUyYjNkOTt0aGlzW18weDQwMWZlYygweDI1NCldfHx0aGlzW18weDQwMWZlYygweDI1OSldfHwodGhpc1tfMHg0MDFmZWMoMHgxYmMpXSgpLChfMHg1MmIzZDk9dGhpc1tfMHg0MDFmZWMoMHgyNWQpXSk9PW51bGx8fF8weDUyYjNkOVtfMHg0MDFmZWMoMHgxYzYpXSgoKT0+dGhpc1tfMHg0MDFmZWMoMHgxYjQpXSgpKSk7fSwweDFmNCksdGhpc1tfMHgyMzNiYTYoMHgxZTApXVtfMHgyMzNiYTYoMHgyMGYpXSYmdGhpc1tfMHgyMzNiYTYoMHgxZTApXVsndW5yZWYnXSgpKTt9YXN5bmNbXzB4YjM4NDc5KDB4MjFmKV0oXzB4NTg2YjFkKXt2YXIgXzB4NWQ4NTA4PV8weGIzODQ3OTt0cnl7aWYoIXRoaXNbXzB4NWQ4NTA4KDB4MTc1KV0pcmV0dXJuO3RoaXNbXzB4NWQ4NTA4KDB4MWYwKV0mJnRoaXNbXzB4NWQ4NTA4KDB4MWJjKV0oKSwoYXdhaXQgdGhpc1tfMHg1ZDg1MDgoMHgyNWQpXSlbXzB4NWQ4NTA4KDB4MjFmKV0oSlNPTltfMHg1ZDg1MDgoMHgxOTgpXShfMHg1ODZiMWQpKTt9Y2F0Y2goXzB4ZmQzYTk3KXtjb25zb2xlW18weDVkODUwOCgweDFmMildKHRoaXNbXzB4NWQ4NTA4KDB4MjE3KV0rJzpcXFxceDIwJysoXzB4ZmQzYTk3JiZfMHhmZDNhOTdbXzB4NWQ4NTA4KDB4MjM0KV0pKSx0aGlzW18weDVkODUwOCgweDE3NSldPSEweDEsdGhpc1tfMHg1ZDg1MDgoMHgxYjQpXSgpO319fTtmdW5jdGlvbiBxKF8weDQyMzY3YSxfMHgyY2JmYjYsXzB4NWE5NTAxLF8weDFhYWY5MCxfMHg0Mjk3YjIsXzB4MTNlZjg5LF8weDgyNTI1NixfMHhmNjgyYTc9aWUpe3ZhciBfMHhhM2ZiNDI9XzB4YjM4NDc5O2xldCBfMHg0Y2YxNmQ9XzB4NWE5NTAxWydzcGxpdCddKCcsJylbXzB4YTNmYjQyKDB4MjI4KV0oXzB4NTFiNGQ2PT57dmFyIF8weDEwOGM5OD1fMHhhM2ZiNDIsXzB4MTJmMzIyLF8weDEyYmVkNCxfMHg1YmVkMjEsXzB4MjQzNGE4O3RyeXtpZighXzB4NDIzNjdhW18weDEwOGM5OCgweDI2MSldKXtsZXQgXzB4MTczMGI1PSgoXzB4MTJiZWQ0PShfMHgxMmYzMjI9XzB4NDIzNjdhWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDEyZjMyMltfMHgxMDhjOTgoMHgyNGQpXSk9PW51bGw/dm9pZCAweDA6XzB4MTJiZWQ0W18weDEwOGM5OCgweDFjMSldKXx8KChfMHgyNDM0YTg9KF8weDViZWQyMT1fMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDViZWQyMVtfMHgxMDhjOTgoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4MjQzNGE4W18weDEwOGM5OCgweDIzMSldKT09PV8weDEwOGM5OCgweDFlOSk7KF8weDQyOTdiMj09PV8weDEwOGM5OCgweDFkZSl8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDI0MCl8fF8weDQyOTdiMj09PSdhc3Rybyd8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDE3ZikpJiYoXzB4NDI5N2IyKz1fMHgxNzMwYjU/XzB4MTA4Yzk4KDB4MjU3KTpfMHgxMDhjOTgoMHgyMWMpKSxfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV09eydpZCc6K25ldyBEYXRlKCksJ3Rvb2wnOl8weDQyOTdiMn0sXzB4ODI1MjU2JiZfMHg0Mjk3YjImJiFfMHgxNzMwYjUmJmNvbnNvbGVbXzB4MTA4Yzk4KDB4MjUxKV0oJyVjXFxcXHgyMENvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZXh0ZW5zaW9uXFxcXHgyMGlzXFxcXHgyMGNvbm5lY3RlZFxcXFx4MjB0b1xcXFx4MjAnKyhfMHg0Mjk3YjJbJ2NoYXJBdCddKDB4MClbXzB4MTA4Yzk4KDB4MWE3KV0oKStfMHg0Mjk3YjJbJ3N1YnN0ciddKDB4MSkpKycsJywnYmFja2dyb3VuZDpcXFxceDIwcmdiKDMwLDMwLDMwKTtcXFxceDIwY29sb3I6XFxcXHgyMHJnYigyNTUsMjEzLDkyKScsXzB4MTA4Yzk4KDB4MjJiKSk7fWxldCBfMHg0YWJlOTY9bmV3IFooXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1MWI0ZDYsXzB4MWFhZjkwLF8weDEzZWY4OSxfMHhmNjgyYTcpO3JldHVybiBfMHg0YWJlOTZbXzB4MTA4Yzk4KDB4MjFmKV1bXzB4MTA4Yzk4KDB4MjJlKV0oXzB4NGFiZTk2KTt9Y2F0Y2goXzB4NWJmNDliKXtyZXR1cm4gY29uc29sZVsnd2FybiddKF8weDEwOGM5OCgweDFjNyksXzB4NWJmNDliJiZfMHg1YmY0OWJbXzB4MTA4Yzk4KDB4MjM0KV0pLCgpPT57fTt9fSk7cmV0dXJuIF8weDM3OWZkMz0+XzB4NGNmMTZkW18weGEzZmI0MigweDFlMSldKF8weDM3MTEyMT0+XzB4MzcxMTIxKF8weDM3OWZkMykpO31mdW5jdGlvbiBpZShfMHgzZThmMjUsXzB4MzlmZWE1LF8weDI1MTUwZixfMHgyNjUyOGUpe3ZhciBfMHgxY2M5Njc9XzB4YjM4NDc5O18weDI2NTI4ZSYmXzB4M2U4ZjI1PT09XzB4MWNjOTY3KDB4MWIwKSYmXzB4MjUxNTBmW18weDFjYzk2NygweDFhMSldWydyZWxvYWQnXSgpO31mdW5jdGlvbiBCKF8weDMwOTg0Mil7dmFyIF8weDI0ZGZjMj1fMHhiMzg0NzksXzB4MmFjMDQ4LF8weDUwYWJkZjtsZXQgXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDExYTY3MyxfMHg1ZjA2OTMpe3JldHVybiBfMHg1ZjA2OTMtXzB4MTFhNjczO30sXzB4MWM3ZmFmO2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxNzcpXSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4OGRiZTE9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4OGRiZTEoMHgxNzcpXVtfMHg4ZGJlMSgweDFlZildKCk7fTtlbHNle2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxYTMpXSYmXzB4MzA5ODQyWydwcm9jZXNzJ11bXzB4MjRkZmMyKDB4MTljKV0mJigoXzB4NTBhYmRmPShfMHgyYWMwNDg9XzB4MzA5ODQyWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDJhYzA0OFsnZW52J10pPT1udWxsP3ZvaWQgMHgwOl8weDUwYWJkZlsnTkVYVF9SVU5USU1FJ10pIT09XzB4MjRkZmMyKDB4MWU5KSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NTJkNjQwPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDUyZDY0MCgweDFhMyldWydocnRpbWUnXSgpO30sXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDU1MGJhOSxfMHgxNmEzZTIpe3JldHVybiAweDNlOCooXzB4MTZhM2UyWzB4MF0tXzB4NTUwYmE5WzB4MF0pKyhfMHgxNmEzZTJbMHgxXS1fMHg1NTBiYTlbMHgxXSkvMHhmNDI0MDt9O2Vsc2UgdHJ5e2xldCB7cGVyZm9ybWFuY2U6XzB4MzRkZTRhfT1yZXF1aXJlKF8weDI0ZGZjMigweDI0YikpO18weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg0ZjFkNjk9XzB4MjRkZmMyO3JldHVybiBfMHgzNGRlNGFbXzB4NGYxZDY5KDB4MWVmKV0oKTt9O31jYXRjaHtfMHgxYzdmYWY9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGUoKTt9O319cmV0dXJueydlbGFwc2VkJzpfMHhkZGJkZWYsJ3RpbWVTdGFtcCc6XzB4MWM3ZmFmLCdub3cnOigpPT5EYXRlW18weDI0ZGZjMigweDFlZildKCl9O31mdW5jdGlvbiBfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpe3ZhciBfMHg0OWZiZGM9XzB4NDlmYigpO3JldHVybiBfMHgyNjkwPWZ1bmN0aW9uKF8weDI2OTAxYixfMHgzNThmMWYpe18weDI2OTAxYj1fMHgyNjkwMWItMHgxNzM7dmFyIF8weDFmZjI4Nz1fMHg0OWZiZGNbXzB4MjY5MDFiXTtyZXR1cm4gXzB4MWZmMjg3O30sXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKTt9ZnVuY3Rpb24gSChfMHgyNjU1ZTMsXzB4MTRjYmY3LF8weDRjZDYwOSl7dmFyIF8weDI2YWMyYz1fMHhiMzg0NzksXzB4NGJlNzBkLF8weDNmYjRjYyxfMHgxZmZjNjIsXzB4NDdlOGFhLF8weDVmMDk0MjtpZihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddIT09dm9pZCAweDApcmV0dXJuIF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107bGV0IF8weDI1MTI5NT0oKF8weDNmYjRjYz0oXzB4NGJlNzBkPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NGJlNzBkW18weDI2YWMyYygweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgzZmI0Y2NbXzB4MjZhYzJjKDB4MWMxKV0pfHwoKF8weDQ3ZThhYT0oXzB4MWZmYzYyPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MWZmYzYyW18weDI2YWMyYygweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHg0N2U4YWFbJ05FWFRfUlVOVElNRSddKT09PV8weDI2YWMyYygweDFlOSk7ZnVuY3Rpb24gXzB4NTlkOWRlKF8weDE5NDkzOCl7dmFyIF8weDVlNWQ1Yz1fMHgyNmFjMmM7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDIzNyldKCcvJykmJl8weDE5NDkzOFsnZW5kc1dpdGgnXSgnLycpKXtsZXQgXzB4Y2I3ODA0PW5ldyBSZWdFeHAoXzB4MTk0OTM4WydzbGljZSddKDB4MSwtMHgxKSk7cmV0dXJuIF8weDQ5ZDc0Mj0+XzB4Y2I3ODA0W18weDVlNWQ1YygweDE4NyldKF8weDQ5ZDc0Mik7fWVsc2V7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCcqJyl8fF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnPycpKXtsZXQgXzB4NTBmYTJmPW5ldyBSZWdFeHAoJ14nK18weDE5NDkzOFtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXC4vZyxTdHJpbmdbXzB4NWU1ZDVjKDB4MjRlKV0oMHg1YykrJy4nKVsncmVwbGFjZSddKC9cXFxcKi9nLCcuKicpW18weDVlNWQ1YygweDE3YildKC9cXFxcPy9nLCcuJykrU3RyaW5nWydmcm9tQ2hhckNvZGUnXSgweDI0KSk7cmV0dXJuIF8weDFhZWZjND0+XzB4NTBmYTJmW18weDVlNWQ1YygweDE4NyldKF8weDFhZWZjNCk7fWVsc2UgcmV0dXJuIF8weDQ2YmNmNj0+XzB4NDZiY2Y2PT09XzB4MTk0OTM4O319bGV0IF8weDIwNTQ2Zj1fMHgxNGNiZjdbXzB4MjZhYzJjKDB4MjI4KV0oXzB4NTlkOWRlKTtyZXR1cm4gXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldPV8weDI1MTI5NXx8IV8weDE0Y2JmNywhXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldJiYoKF8weDVmMDk0Mj1fMHgyNjU1ZTNbJ2xvY2F0aW9uJ10pPT1udWxsP3ZvaWQgMHgwOl8weDVmMDk0MltfMHgyNmFjMmMoMHgxZTYpXSkmJihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddPV8weDIwNTQ2ZltfMHgyNmFjMmMoMHgyNDgpXShfMHg0Mzg1YjQ9Pl8weDQzODViNChfMHgyNjU1ZTNbJ2xvY2F0aW9uJ11bJ2hvc3RuYW1lJ10pKSksXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTt9ZnVuY3Rpb24gWChfMHgyMmNjYjMsXzB4MmM3M2RlLF8weDRlMTcxYixfMHgzNWZjNjMpe3ZhciBfMHg0NzRlMjg9XzB4YjM4NDc5O18weDIyY2NiMz1fMHgyMmNjYjMsXzB4MmM3M2RlPV8weDJjNzNkZSxfMHg0ZTE3MWI9XzB4NGUxNzFiLF8weDM1ZmM2Mz1fMHgzNWZjNjM7bGV0IF8weDQxNTQ2OD1CKF8weDIyY2NiMyksXzB4MzdmNTYxPV8weDQxNTQ2OFtfMHg0NzRlMjgoMHgxZTgpXSxfMHg1OTE1OGI9XzB4NDE1NDY4Wyd0aW1lU3RhbXAnXTtjbGFzcyBfMHg0MzI4YmN7Y29uc3RydWN0b3IoKXt2YXIgXzB4MWFmNmY2PV8weDQ3NGUyODt0aGlzW18weDFhZjZmNigweDI0NCldPS9eKD8hKD86ZG98aWZ8aW58Zm9yfGxldHxuZXd8dHJ5fHZhcnxjYXNlfGVsc2V8ZW51bXxldmFsfGZhbHNlfG51bGx8dGhpc3x0cnVlfHZvaWR8d2l0aHxicmVha3xjYXRjaHxjbGFzc3xjb25zdHxzdXBlcnx0aHJvd3x3aGlsZXx5aWVsZHxkZWxldGV8ZXhwb3J0fGltcG9ydHxwdWJsaWN8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dHlwZW9mfGRlZmF1bHR8ZXh0ZW5kc3xmaW5hbGx5fHBhY2thZ2V8cHJpdmF0ZXxjb250aW51ZXxkZWJ1Z2dlcnxmdW5jdGlvbnxhcmd1bWVudHN8aW50ZXJmYWNlfHByb3RlY3RlZHxpbXBsZW1lbnRzfGluc3RhbmNlb2YpJClbXyRhLXpBLVpcXFxceEEwLVxcXFx1RkZGRl1bXyRhLXpBLVowLTlcXFxceEEwLVxcXFx1RkZGRl0qJC8sdGhpc1snX251bWJlclJlZ0V4cCddPS9eKDB8WzEtOV1bMC05XSopJC8sdGhpc1tfMHgxYWY2ZjYoMHgxZjEpXT0vJyhbXlxcXFxcXFxcJ118XFxcXFxcXFwnKSonLyx0aGlzW18weDFhZjZmNigweDIxNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMjQpXSx0aGlzW18weDFhZjZmNigweDFhNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMDcpXSx0aGlzW18weDFhZjZmNigweDIwNCldPU9iamVjdFtfMHgxYWY2ZjYoMHgxYjcpXSx0aGlzWydfZ2V0T3duUHJvcGVydHlOYW1lcyddPU9iamVjdFtfMHgxYWY2ZjYoMHgxYzApXSx0aGlzW18weDFhZjZmNigweDIyNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgxZTcpXSx0aGlzW18weDFhZjZmNigweDIzYSldPVJlZ0V4cFsncHJvdG90eXBlJ11bXzB4MWFmNmY2KDB4MWI1KV0sdGhpc1snX2RhdGVUb1N0cmluZyddPURhdGVbXzB4MWFmNmY2KDB4MjIwKV1bJ3RvU3RyaW5nJ107fVtfMHg0NzRlMjgoMHgxY2YpXShfMHg1MDcyMWEsXzB4NGM4MjhjLF8weDVlMmZmYyxfMHgzZWY4MzIpe3ZhciBfMHg0ZWJkOWQ9XzB4NDc0ZTI4LF8weGY2NDU5NT10aGlzLF8weGEwMTYxPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXTtmdW5jdGlvbiBfMHgyNDMxMDkoXzB4NDAwMmI3LF8weDM0YjVlYyxfMHg0NzY3NDMpe3ZhciBfMHg0Njk2NjQ9XzB4NGViZDlkO18weDM0YjVlY1sndHlwZSddPV8weDQ2OTY2NCgweDFjMiksXzB4MzRiNWVjW18weDQ2OTY2NCgweDIxYildPV8weDQwMDJiN1tfMHg0Njk2NjQoMHgyMzQpXSxfMHgyYTIwMTA9XzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldLF8weDQ3Njc0M1tfMHg0Njk2NjQoMHgxYzEpXVtfMHg0Njk2NjQoMHgyMDMpXT1fMHgzNGI1ZWMsXzB4ZjY0NTk1WydfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJ10oXzB4MzRiNWVjLF8weDQ3Njc0Myk7fXRyeXtfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWVjKV0rKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVtfMHg0ZWJkOWQoMHgxOWUpXShfMHg0YzgyOGMpO3ZhciBfMHg3ODkyODYsXzB4NGIzYTNhLF8weDEwYTU5LF8weDQzMjk2NixfMHgzYjQ5YjM9W10sXzB4NTc1ODA4PVtdLF8weDI1YTQ4NCxfMHg0MWUxMWQ9dGhpc1tfMHg0ZWJkOWQoMHgyNjApXShfMHg0YzgyOGMpLF8weDI1ZTM2Nj1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxYmIpLF8weDIyODgzMD0hMHgxLF8weDM1MWE0MT1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMTApLF8weDUzZTMwMz10aGlzW18weDRlYmQ5ZCgweDE5YildKF8weDQxZTExZCksXzB4M2U0NWIyPXRoaXNbXzB4NGViZDlkKDB4MTgzKV0oXzB4NDFlMTFkKSxfMHgzNDUwMjg9XzB4NTNlMzAzfHxfMHgzZTQ1YjIsXzB4NWMzYzhhPXt9LF8weDFjYmUzNj0weDAsXzB4MmU2Y2ZjPSEweDEsXzB4MmEyMDEwLF8weDEyODIwYT0vXigoWzEtOV17MX1bMC05XSopfDApJC87aWYoXzB4NWUyZmZjWydkZXB0aCddKXtpZihfMHgyNWUzNjYpe2lmKF8weDRiM2EzYT1fMHg0YzgyOGNbXzB4NGViZDlkKDB4MjQxKV0sXzB4NGIzYTNhPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNjIpXSl7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NWUyZmZjWydlbGVtZW50cyddLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxODApXT0hMHgwO31lbHNle2ZvcihfMHgxMGE1OT0weDAsXzB4NDMyOTY2PV8weDRiM2EzYSxfMHg3ODkyODY9XzB4MTBhNTk7XzB4Nzg5Mjg2PF8weDQzMjk2NjtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDc4OTI4NixfMHg1ZTJmZmMpKTt9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKz1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07fWlmKCEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09J3VuZGVmaW5lZCcpJiYhXzB4NTNlMzAzJiZfMHg0MWUxMWQhPT0nU3RyaW5nJyYmXzB4NDFlMTFkIT09J0J1ZmZlcicmJl8weDQxZTExZCE9PV8weDRlYmQ5ZCgweDIzNSkpe3ZhciBfMHgyNTIxMmI9XzB4M2VmODMyW18weDRlYmQ5ZCgweDI0NyldfHxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjQ3KV07aWYodGhpc1tfMHg0ZWJkOWQoMHgxYTQpXShfMHg0YzgyOGMpPyhfMHg3ODkyODY9MHgwLF8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzMTYyNWIpe3ZhciBfMHhhMTE0N2Q9XzB4NGViZDlkO2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO3JldHVybjt9aWYoIV8weDVlMmZmY1tfMHhhMTE0N2QoMHgxY2IpXSYmXzB4NWUyZmZjW18weGExMTQ3ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MTdjKV0+XzB4NWUyZmZjW18weGExMTQ3ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fV8weDU3NTgwOFtfMHhhMTE0N2QoMHgxOWUpXShfMHhmNjQ1OTVbXzB4YTExNDdkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHhhMTE0N2QoMHgyMjcpLF8weDc4OTI4NisrLF8weDVlMmZmYyxmdW5jdGlvbihfMHgxMGQxNWEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfMHgxMGQxNWE7fTt9KF8weDMxNjI1YikpKTt9KSk6dGhpc1tfMHg0ZWJkOWQoMHgyMGMpXShfMHg0YzgyOGMpJiZfMHg0YzgyOGNbXzB4NGViZDlkKDB4MWUxKV0oZnVuY3Rpb24oXzB4MzgyNGRmLF8weDM5MjY1Yyl7dmFyIF8weDhlOTllND1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDhlOTllNCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDhlOTllNCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fXZhciBfMHgxMGRkMzQ9XzB4MzkyNjVjWyd0b1N0cmluZyddKCk7XzB4MTBkZDM0W18weDhlOTllNCgweDI0MSldPjB4NjQmJihfMHgxMGRkMzQ9XzB4MTBkZDM0WydzbGljZSddKDB4MCwweDY0KStfMHg4ZTk5ZTQoMHgxZDApKSxfMHg1NzU4MDhbXzB4OGU5OWU0KDB4MTllKV0oXzB4ZjY0NTk1W18weDhlOTllNCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4OGU5OWU0KDB4MjVhKSxfMHgxMGRkMzQsXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEzNTE1Nil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEzNTE1Njt9O30oXzB4MzgyNGRmKSkpO30pLCFfMHgyMjg4MzApe3RyeXtmb3IoXzB4MjVhNDg0IGluIF8weDRjODI4YylpZighKF8weDI1ZTM2NiYmXzB4MTI4MjBhWyd0ZXN0J10oXzB4MjVhNDg0KSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVsnX2FkZE9iamVjdFByb3BlcnR5J10oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fWNhdGNoe31pZihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MjE5KV09ITB4MCxfMHgzNTFhNDEmJihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWQ4KV09ITB4MCksIV8weDJlNmNmYyl7dmFyIF8weDExMzMyOD1bXVtfMHg0ZWJkOWQoMHgyM2MpXSh0aGlzW18weDRlYmQ5ZCgweDIzMyldKF8weDRjODI4YykpWydjb25jYXQnXSh0aGlzW18weDRlYmQ5ZCgweDFlZCldKF8weDRjODI4YykpO2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHgxMTMzMjhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylpZihfMHgyNWE0ODQ9XzB4MTEzMzI4W18weDc4OTI4Nl0sIShfMHgyNWUzNjYmJl8weDEyODIwYVtfMHg0ZWJkOWQoMHgxODcpXShfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKSkpJiYhdGhpc1tfMHg0ZWJkOWQoMHgxNzkpXShfMHg0YzgyOGMsXzB4MjVhNDg0LF8weDVlMmZmYykmJiFfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWUyKStfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKV0pe2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO2JyZWFrO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4WydwdXNoJ10oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiNildKF8weDNiNDliMyxfMHg1YzNjOGEsXzB4NGM4MjhjLF8weDQxZTExZCxfMHgyNWE0ODQsXzB4NWUyZmZjKSk7fX19fX1pZihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWQ1KV09XzB4NDFlMTFkLF8weDM0NTAyOD8oXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyMmEpXSgpLHRoaXNbJ19jYXBJZlN0cmluZyddKF8weDQxZTExZCxfMHg1MDcyMWEsXzB4NWUyZmZjLF8weDNlZjgzMikpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFhYyk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbJ19kYXRlVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjM1KT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjWyd0b1N0cmluZyddKCk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTdhKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX3JlZ0V4cFRvU3RyaW5nJ11bJ2NhbGwnXShfMHg0YzgyOGMpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDE3MykmJnRoaXNbXzB4NGViZDlkKDB4MjI1KV0/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbXzB4NGViZDlkKDB4MjI1KV1bXzB4NGViZDlkKDB4MjIwKV1bXzB4NGViZDlkKDB4MWI1KV1bXzB4NGViZDlkKDB4MjJmKV0oXzB4NGM4MjhjKTohXzB4NWUyZmZjW18weDRlYmQ5ZCgweDIyMSldJiYhKF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFmZCl8fF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIyNCkpJiYoZGVsZXRlIF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXSxfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjBiKV09ITB4MCksXzB4MmU2Y2ZjJiYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFiZSldPSEweDApLF8weDJhMjAxMD1fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bXzB4NGViZDlkKDB4MjAzKV0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFjMSldWydjdXJyZW50J109XzB4NTA3MjFhLHRoaXNbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHg1MDcyMWEsXzB4NWUyZmZjKSxfMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV0pe2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4Nzg5Mjg2XShfMHg3ODkyODYpO31fMHgzYjQ5YjNbXzB4NGViZDlkKDB4MjQxKV0mJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjQ3KV09XzB4M2I0OWIzKTt9Y2F0Y2goXzB4M2M5MGM3KXtfMHgyNDMxMDkoXzB4M2M5MGM3LF8weDUwNzIxYSxfMHg1ZTJmZmMpO31yZXR1cm4gdGhpc1tfMHg0ZWJkOWQoMHgxZWIpXShfMHg0YzgyOGMsXzB4NTA3MjFhKSx0aGlzW18weDRlYmQ5ZCgweDFkMyldKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDVlMmZmY1snbm9kZSddWydjdXJyZW50J109XzB4MmEyMDEwLF8weDVlMmZmY1snbGV2ZWwnXS0tLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXT1fMHhhMDE2MSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVsncG9wJ10oKSxfMHg1MDcyMWE7fVsnX2dldE93blByb3BlcnR5U3ltYm9scyddKF8weDIxZjU0OCl7dmFyIF8weDFiMDFhMT1fMHg0NzRlMjg7cmV0dXJuIE9iamVjdFtfMHgxYjAxYTEoMHgyMDYpXT9PYmplY3RbXzB4MWIwMWExKDB4MjA2KV0oXzB4MjFmNTQ4KTpbXTt9W18weDQ3NGUyOCgweDFhNCldKF8weDE1YjFhNyl7dmFyIF8weDM3MDY1Mz1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTViMWE3JiZfMHgyMmNjYjNbXzB4MzcwNjUzKDB4MjI3KV0mJnRoaXNbXzB4MzcwNjUzKDB4MjJjKV0oXzB4MTViMWE3KT09PV8weDM3MDY1MygweDIxZSkmJl8weDE1YjFhN1tfMHgzNzA2NTMoMHgxZTEpXSk7fVtfMHg0NzRlMjgoMHgxNzkpXShfMHg0NWZiZWQsXzB4NWI4NmRiLF8weDM3NmYzZil7dmFyIF8weDMyZmIwMz1fMHg0NzRlMjg7cmV0dXJuIF8weDM3NmYzZltfMHgzMmZiMDMoMHgxYjEpXT90eXBlb2YgXzB4NDVmYmVkW18weDViODZkYl09PV8weDMyZmIwMygweDIxMCk6ITB4MTt9W18weDQ3NGUyOCgweDI2MCldKF8weDJiNTZlYyl7dmFyIF8weDFlMDE1Mj1fMHg0NzRlMjgsXzB4MzZiZGI3PScnO3JldHVybiBfMHgzNmJkYjc9dHlwZW9mIF8weDJiNTZlYyxfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyNGMpP3RoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PV8weDFlMDE1MigweDE4YSk/XzB4MzZiZGI3PV8weDFlMDE1MigweDFiYik6dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MjNmKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWFjKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT0nW29iamVjdFxcXFx4MjBCaWdJbnRdJz9fMHgzNmJkYjc9J2JpZ2ludCc6XzB4MmI1NmVjPT09bnVsbD9fMHgzNmJkYjc9J251bGwnOl8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXSYmKF8weDM2YmRiNz1fMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV1bXzB4MWUwMTUyKDB4MjE2KV18fF8weDM2YmRiNyk6XzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjI0KSYmdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmXzB4MmI1NmVjIGluc3RhbmNlb2YgdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmKF8weDM2YmRiNz1fMHgxZTAxNTIoMHgyMDcpKSxfMHgzNmJkYjc7fVsnX29iamVjdFRvU3RyaW5nJ10oXzB4ZDU2NzY0KXt2YXIgXzB4NWFiZDIzPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDVhYmQyMygweDIyMCldW18weDVhYmQyMygweDFiNSldW18weDVhYmQyMygweDIyZildKF8weGQ1Njc2NCk7fVsnX2lzUHJpbWl0aXZlVHlwZSddKF8weGI4OGQ5Nyl7dmFyIF8weDUwNmFmND1fMHg0NzRlMjg7cmV0dXJuIF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDIzZSl8fF8weGI4OGQ5Nz09PSdzdHJpbmcnfHxfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgxYWQpO31bXzB4NDc0ZTI4KDB4MTgzKV0oXzB4MmIzYmZkKXt2YXIgXzB4MzA3OTU2PV8weDQ3NGUyODtyZXR1cm4gXzB4MmIzYmZkPT09J0Jvb2xlYW4nfHxfMHgyYjNiZmQ9PT1fMHgzMDc5NTYoMHgxZGEpfHxfMHgyYjNiZmQ9PT0nTnVtYmVyJzt9WydfYWRkUHJvcGVydHknXShfMHgzNWYyYWMsXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSl7dmFyIF8weDMxNTdmMT10aGlzO3JldHVybiBmdW5jdGlvbihfMHgxZjhhNzEpe3ZhciBfMHgxOWMzYjg9XzB4MjY5MCxfMHg0MGJmZmM9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDIwMyldLF8weDE2MjhjZj1fMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXSxfMHg5M2VkNWY9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldO18weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVsncGFyZW50J109XzB4NDBiZmZjLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxZDEpXT10eXBlb2YgXzB4NGEyYWIxPT1fMHgxOWMzYjgoMHgxYWQpP18weDRhMmFiMTpfMHgxZjhhNzEsXzB4MzVmMmFjW18weDE5YzNiOCgweDE5ZSldKF8weDMxNTdmMVsnX3Byb3BlcnR5J10oXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSkpLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXT1fMHg5M2VkNWYsXzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV09XzB4MTYyOGNmO307fVtfMHg0NzRlMjgoMHgxYjYpXShfMHhjODRiOTMsXzB4M2UyZjQ0LF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApe3ZhciBfMHgxZDdhNWY9XzB4NDc0ZTI4LF8weGI5NmE2MD10aGlzO3JldHVybiBfMHgzZTJmNDRbXzB4MWQ3YTVmKDB4MWUyKStfMHg0ZTE0OGRbXzB4MWQ3YTVmKDB4MWI1KV0oKV09ITB4MCxmdW5jdGlvbihfMHg1ZDRjOTQpe3ZhciBfMHg1NDYzZDk9XzB4MWQ3YTVmLF8weDM3ZmQ2Mj1fMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgyMDMpXSxfMHgyZThjZjc9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFkMSldLF8weDQxMWU2Nj1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ3BhcmVudCddO18weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxYmQpXT1fMHgzN2ZkNjIsXzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MWQxKV09XzB4NWQ0Yzk0LF8weGM4NGI5M1tfMHg1NDYzZDkoMHgxOWUpXShfMHhiOTZhNjBbXzB4NTQ2M2Q5KDB4MjI2KV0oXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCkpLF8weDJlY2Q1Zlsnbm9kZSddWydwYXJlbnQnXT1fMHg0MTFlNjYsXzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydpbmRleCddPV8weDJlOGNmNzt9O31bXzB4NDc0ZTI4KDB4MjI2KV0oXzB4MzA5MDA0LF8weDI3ZjhmNCxfMHgyZDQwNmEsXzB4M2QxZWIyLF8weDVkYzE0OCl7dmFyIF8weDJmNjdjMD1fMHg0NzRlMjgsXzB4M2QyMzUxPXRoaXM7XzB4NWRjMTQ4fHwoXzB4NWRjMTQ4PWZ1bmN0aW9uKF8weDE2ZTViNCxfMHg5ZDU5Nzgpe3JldHVybiBfMHgxNmU1YjRbXzB4OWQ1OTc4XTt9KTt2YXIgXzB4MTIxZDc5PV8weDJkNDA2YVsndG9TdHJpbmcnXSgpLF8weDEwYTM1Zj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV18fHt9LF8weDU4OTc0Mj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0sXzB4ODJhYmY0PV8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXTt0cnl7dmFyIF8weDI1YTYyYT10aGlzW18weDJmNjdjMCgweDIwYyldKF8weDMwOTAwNCksXzB4MTdiY2I1PV8weDEyMWQ3OTtfMHgyNWE2MmEmJl8weDE3YmNiNVsweDBdPT09J1xcXFx4MjcnJiYoXzB4MTdiY2I1PV8weDE3YmNiNVsnc3Vic3RyJ10oMHgxLF8weDE3YmNiNVsnbGVuZ3RoJ10tMHgyKSk7dmFyIF8weDUzODU4MT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV09XzB4MTBhMzVmW18weDJmNjdjMCgweDFlMikrXzB4MTdiY2I1XTtfMHg1Mzg1ODEmJihfMHgzZDFlYjJbJ2RlcHRoJ109XzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldKzB4MSksXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPSEhXzB4NTM4NTgxO3ZhciBfMHg1N2E3NDI9dHlwZW9mIF8weDJkNDA2YT09XzB4MmY2N2MwKDB4MTczKSxfMHg0Mjg3Njc9eyduYW1lJzpfMHg1N2E3NDJ8fF8weDI1YTYyYT9fMHgxMjFkNzk6dGhpc1snX3Byb3BlcnR5TmFtZSddKF8weDEyMWQ3OSl9O2lmKF8weDU3YTc0MiYmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxNzMpXT0hMHgwKSwhKF8weDI3ZjhmND09PV8weDJmNjdjMCgweDFiYil8fF8weDI3ZjhmND09PSdFcnJvcicpKXt2YXIgXzB4MjdjMzdiPXRoaXNbXzB4MmY2N2MwKDB4MjA0KV0oXzB4MzA5MDA0LF8weDJkNDA2YSk7aWYoXzB4MjdjMzdiJiYoXzB4MjdjMzdiW18weDJmNjdjMCgweDFmYyldJiYoXzB4NDI4NzY3WydzZXR0ZXInXT0hMHgwKSxfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MjUyKV0mJiFfMHg1Mzg1ODEmJiFfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWRjKV0pKXJldHVybiBfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWY2KV09ITB4MCx0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDUzZGIzZjt0cnl7XzB4NTNkYjNmPV8weDVkYzE0OChfMHgzMDkwMDQsXzB4MmQ0MDZhKTt9Y2F0Y2goXzB4MTc1ZjZjKXtyZXR1cm4gXzB4NDI4NzY3PXsnbmFtZSc6XzB4MTIxZDc5LCd0eXBlJzpfMHgyZjY3YzAoMHgxYzIpLCdlcnJvcic6XzB4MTc1ZjZjW18weDJmNjdjMCgweDIzNCldfSx0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4M2NjZDA5PXRoaXNbXzB4MmY2N2MwKDB4MjYwKV0oXzB4NTNkYjNmKSxfMHg0OTU0NTc9dGhpc1tfMHgyZjY3YzAoMHgxOWIpXShfMHgzY2NkMDkpO2lmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZDUpXT1fMHgzY2NkMDksXzB4NDk1NDU3KXRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHgyOTQyNmE9XzB4MmY2N2MwO18weDQyODc2N1tfMHgyOTQyNmEoMHgxYWUpXT1fMHg1M2RiM2ZbXzB4Mjk0MjZhKDB4MjJhKV0oKSwhXzB4NTM4NTgxJiZfMHgzZDIzNTFbXzB4Mjk0MjZhKDB4MjQ5KV0oXzB4M2NjZDA5LF8weDQyODc2NyxfMHgzZDFlYjIse30pO30pO2Vsc2V7dmFyIF8weGQ4MGU2PV8weDNkMWViMlsnYXV0b0V4cGFuZCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWVjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTWF4RGVwdGgnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFmMyldWydpbmRleE9mJ10oXzB4NTNkYjNmKTwweDAmJl8weDNjY2QwOSE9PSdmdW5jdGlvbicmJl8weDNkMWViMltfMHgyZjY3YzAoMHgxN2MpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRMaW1pdCddO18weGQ4MGU2fHxfMHgzZDFlYjJbJ2xldmVsJ108XzB4NTg5NzQyfHxfMHg1Mzg1ODE/KHRoaXNbXzB4MmY2N2MwKDB4MWNmKV0oXzB4NDI4NzY3LF8weDUzZGIzZixfMHgzZDFlYjIsXzB4NTM4NTgxfHx7fSksdGhpc1tfMHgyZjY3YzAoMHgxZWIpXShfMHg1M2RiM2YsXzB4NDI4NzY3KSk6dGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHg1NDJkZTE9XzB4MmY2N2MwO18weDNjY2QwOT09PV8weDU0MmRlMSgweDFmZCl8fF8weDNjY2QwOT09PV8weDU0MmRlMSgweDIyNCl8fChkZWxldGUgXzB4NDI4NzY3W18weDU0MmRlMSgweDFhZSldLF8weDQyODc2N1tfMHg1NDJkZTEoMHgyMGIpXT0hMHgwKTt9KTt9cmV0dXJuIF8weDQyODc2Nzt9ZmluYWxseXtfMHgzZDFlYjJbJ2V4cHJlc3Npb25zVG9FdmFsdWF0ZSddPV8weDEwYTM1ZixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV09XzB4NTg5NzQyLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT1fMHg4MmFiZjQ7fX1bXzB4NDc0ZTI4KDB4MjQ5KV0oXzB4NGQxMTJlLF8weDQ1MWFlNSxfMHg1NmQ2MTAsXzB4M2JmNDhlKXt2YXIgXzB4Njc4MTY4PV8weDQ3NGUyOCxfMHhmOWQ3Nzc9XzB4M2JmNDhlW18weDY3ODE2OCgweDIxMildfHxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjEyKV07aWYoKF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFjYSl8fF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFkYSkpJiZfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pe2xldCBfMHgzYTAwZDQ9XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI0MSldO18weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXSs9XzB4M2EwMGQ0LF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXT5fMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MWE5KV0/KF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT0nJyxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTpfMHgzYTAwZDQ+XzB4ZjlkNzc3JiYoXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNTUpXSgweDAsXzB4ZjlkNzc3KSxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTt9fVtfMHg0NzRlMjgoMHgyMGMpXShfMHgxOWNiZTUpe3ZhciBfMHg0OWE0NTE9XzB4NDc0ZTI4O3JldHVybiEhKF8weDE5Y2JlNSYmXzB4MjJjY2IzWydNYXAnXSYmdGhpc1tfMHg0OWE0NTEoMHgyMmMpXShfMHgxOWNiZTUpPT09XzB4NDlhNDUxKDB4MTg2KSYmXzB4MTljYmU1Wydmb3JFYWNoJ10pO31bXzB4NDc0ZTI4KDB4MWNjKV0oXzB4NTcxZjZhKXt2YXIgXzB4Mzg0OTRlPV8weDQ3NGUyODtpZihfMHg1NzFmNmFbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFxcZCskLykpcmV0dXJuIF8weDU3MWY2YTt2YXIgXzB4MmFjMWUwO3RyeXtfMHgyYWMxZTA9SlNPTlsnc3RyaW5naWZ5J10oJycrXzB4NTcxZjZhKTt9Y2F0Y2h7XzB4MmFjMWUwPSdcXFxceDIyJyt0aGlzW18weDM4NDk0ZSgweDIyYyldKF8weDU3MWY2YSkrJ1xcXFx4MjInO31yZXR1cm4gXzB4MmFjMWUwW18weDM4NDk0ZSgweDE5NildKC9eXFxcIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVxcXCIkLyk/XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNTUpXSgweDEsXzB4MmFjMWUwW18weDM4NDk0ZSgweDI0MSldLTB4Mik6XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgxN2IpXSgvJy9nLCdcXFxceDVjXFxcXHgyNycpW18weDM4NDk0ZSgweDE3YildKC9cXFxcXFxcXFxcXCIvZywnXFxcXHgyMicpW18weDM4NDk0ZSgweDE3YildKC8oXlxcXCJ8XFxcIiQpL2csJ1xcXFx4MjcnKSxfMHgyYWMxZTA7fVtfMHg0NzRlMjgoMHgyNTgpXShfMHg0Y2RmMjQsXzB4NDVkYTEyLF8weDE4ZTE2NyxfMHhlYzNmNil7dmFyIF8weDFkMTlmNT1fMHg0NzRlMjg7dGhpc1tfMHgxZDE5ZjUoMHgyMjMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKSxfMHhlYzNmNiYmXzB4ZWMzZjYoKSx0aGlzW18weDFkMTlmNSgweDFlYildKF8weDE4ZTE2NyxfMHg0Y2RmMjQpLHRoaXNbXzB4MWQxOWY1KDB4MWQzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMik7fVtfMHg0NzRlMjgoMHgyMjMpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKXt2YXIgXzB4MmVlZmMwPV8weDQ3NGUyODt0aGlzW18weDJlZWZjMCgweDE3OCldKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUGVybWlzc2lvbnMnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKTt9W18weDQ3NGUyOCgweDE3OCldKF8weDNkMGQ0NSxfMHgzODZiYTUpe31bJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4MmY4MzMwLF8weDQ1NjY2MCl7fVtfMHg0NzRlMjgoMHgxZTMpXShfMHg1NTk2YzIsXzB4M2Y3YTkyKXt9W18weDQ3NGUyOCgweDE4MildKF8weDc1Y2VhKXt2YXIgXzB4NTg2YmFjPV8weDQ3NGUyODtyZXR1cm4gXzB4NzVjZWE9PT10aGlzW18weDU4NmJhYygweDIxNSldO31bXzB4NDc0ZTI4KDB4MWQzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSl7dmFyIF8weDRkY2JmYz1fMHg0NzRlMjg7dGhpc1tfMHg0ZGNiZmMoMHgxZTMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDE4OCldKF8weDQzNGVjOSksXzB4MzQ0MDhlW18weDRkY2JmYygweDI0MildJiZ0aGlzW18weDRkY2JmYygweDFmOSldKF8weDQzNGVjOSksdGhpc1tfMHg0ZGNiZmMoMHgxYjgpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDI2NCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbJ19jbGVhbk5vZGUnXShfMHg0MzRlYzkpO31bXzB4NDc0ZTI4KDB4MWViKV0oXzB4NTk5ZDI0LF8weDQxMzM1Nyl7dmFyIF8weDJkMGZjNz1fMHg0NzRlMjg7bGV0IF8weGMyZDg0Nzt0cnl7XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldJiYoXzB4YzJkODQ3PV8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXSxfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV09ZnVuY3Rpb24oKXt9KSxfMHg1OTlkMjQmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV09PV8weDJkMGZjNygweDFhZCkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjQxKV09XzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldKTt9Y2F0Y2h7fWZpbmFsbHl7XzB4YzJkODQ3JiYoXzB4MjJjY2IzWydjb25zb2xlJ11bJ2Vycm9yJ109XzB4YzJkODQ3KTt9aWYoXzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxYWQpfHxfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFkNikpe2lmKGlzTmFOKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkpXzB4NDEzMzU3W18weDJkMGZjNygweDI0ZildPSEweDAsZGVsZXRlIF8weDQxMzM1N1sndmFsdWUnXTtlbHNlIHN3aXRjaChfMHg0MTMzNTdbJ3ZhbHVlJ10pe2Nhc2UgTnVtYmVyWydQT1NJVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMmQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSBOdW1iZXJbJ05FR0FUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIxZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIDB4MDp0aGlzW18weDJkMGZjNygweDIzMCldKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWZmKV09ITB4MCk7YnJlYWs7fX1lbHNlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZDUpXT09PV8weDJkMGZjNygweDIxMCkmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV09PV8weDJkMGZjNygweDFjYSkmJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0hPT1fMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MTlkKV09XzB4NTk5ZDI0WyduYW1lJ10pO31bXzB4NDc0ZTI4KDB4MjMwKV0oXzB4ZDU1MzlmKXt2YXIgXzB4MmVhZTYzPV8weDQ3NGUyODtyZXR1cm4gMHgxL18weGQ1NTM5Zj09PU51bWJlcltfMHgyZWFlNjMoMHgyNWMpXTt9Wydfc29ydFByb3BzJ10oXzB4MzgwMjM1KXt2YXIgXzB4MTQ2MTM1PV8weDQ3NGUyODshXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldfHwhXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDI0MSldfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgxYmIpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgyNWEpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT0nU2V0J3x8XzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDFmYildKGZ1bmN0aW9uKF8weDQxNDkyOCxfMHgxOTQ1ZmMpe3ZhciBfMHgyNjY4OTI9XzB4MTQ2MTM1LF8weDFiNjZiNz1fMHg0MTQ5MjhbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKSxfMHg1MzI4YmI9XzB4MTk0NWZjW18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCk7cmV0dXJuIF8weDFiNjZiNzxfMHg1MzI4YmI/LTB4MTpfMHgxYjY2Yjc+XzB4NTMyOGJiPzB4MToweDA7fSk7fVtfMHg0NzRlMjgoMHgxYjgpXShfMHgzNjliZmYsXzB4MWUxYzY4KXt2YXIgXzB4MjU3OGU5PV8weDQ3NGUyODtpZighKF8weDFlMWM2OFtfMHgyNTc4ZTkoMHgxYjEpXXx8IV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXXx8IV8weDM2OWJmZlsncHJvcHMnXVsnbGVuZ3RoJ10pKXtmb3IodmFyIF8weDQxMjRiMD1bXSxfMHg1ZDhjMTI9W10sXzB4MWIwMmY3PTB4MCxfMHgyOTExNGY9XzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDI0MSldO18weDFiMDJmNzxfMHgyOTExNGY7XzB4MWIwMmY3Kyspe3ZhciBfMHg0ZGFkMDc9XzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldW18weDFiMDJmN107XzB4NGRhZDA3W18weDI1NzhlOSgweDFkNSldPT09XzB4MjU3OGU5KDB4MjEwKT9fMHg0MTI0YjBbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTpfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTt9aWYoISghXzB4NWQ4YzEyW18weDI1NzhlOSgweDI0MSldfHxfMHg0MTI0YjBbXzB4MjU3OGU5KDB4MjQxKV08PTB4MSkpe18weDM2OWJmZlsncHJvcHMnXT1fMHg1ZDhjMTI7dmFyIF8weDNmNTEzZT17J2Z1bmN0aW9uc05vZGUnOiEweDAsJ3Byb3BzJzpfMHg0MTI0YjB9O3RoaXNbXzB4MjU3OGU5KDB4MTc4KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxZTMpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDE4OCldKF8weDNmNTEzZSksdGhpc1tfMHgyNTc4ZTkoMHgxZDcpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSxfMHgzZjUxM2VbJ2lkJ10rPSdcXFxceDIwZicsXzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDFhMildKF8weDNmNTEzZSk7fX19WydfYWRkTG9hZE5vZGUnXShfMHgyNTFmZWEsXzB4MWM3YmVkKXt9W18weDQ3NGUyOCgweDE4OCldKF8weDQyMGM1ZSl7fVsnX2lzQXJyYXknXShfMHgxNzFkMzgpe3ZhciBfMHg0MTYyMzQ9XzB4NDc0ZTI4O3JldHVybiBBcnJheVsnaXNBcnJheSddKF8weDE3MWQzOCl8fHR5cGVvZiBfMHgxNzFkMzg9PV8weDQxNjIzNCgweDI0YykmJnRoaXNbJ19vYmplY3RUb1N0cmluZyddKF8weDE3MWQzOCk9PT1fMHg0MTYyMzQoMHgxOGEpO31bXzB4NDc0ZTI4KDB4MWQ3KV0oXzB4MzFiZGM0LF8weDUxNzliMSl7fVtfMHg0NzRlMjgoMHgyMzgpXShfMHg0ZTBlY2Mpe3ZhciBfMHg0MTIwNzk9XzB4NDc0ZTI4O2RlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjAyKV0sZGVsZXRlIF8weDRlMGVjY1snX2hhc1NldE9uSXRzUGF0aCddLGRlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjEzKV07fVsnX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDExYmVhNixfMHg0N2UwMzIpe319bGV0IF8weDNhNDU2ND1uZXcgXzB4NDMyOGJjKCksXzB4NDYwYjM2PXsncHJvcHMnOjB4NjQsJ2VsZW1lbnRzJzoweDY0LCdzdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ3RvdGFsU3RyTGVuZ3RoJzoweDQwMCoweDMyLCdhdXRvRXhwYW5kTGltaXQnOjB4MTM4OCwnYXV0b0V4cGFuZE1heERlcHRoJzoweGF9LF8weDE1ODY2YT17J3Byb3BzJzoweDUsJ2VsZW1lbnRzJzoweDUsJ3N0ckxlbmd0aCc6MHgxMDAsJ3RvdGFsU3RyTGVuZ3RoJzoweDEwMCoweDMsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxZSwnYXV0b0V4cGFuZE1heERlcHRoJzoweDJ9O2Z1bmN0aW9uIF8weDI4MTYyNChfMHgyMzkwMGIsXzB4NTk4YTRhLF8weDFiNTRhYyxfMHgyNTRiZDQsXzB4NTE0OGE0LF8weDRmYjk0MCl7dmFyIF8weDM1NjdjYz1fMHg0NzRlMjg7bGV0IF8weDJkYmUwMSxfMHg1NGU5ZmU7dHJ5e18weDU0ZTlmZT1fMHg1OTE1OGIoKSxfMHgyZGJlMDE9XzB4NGUxNzFiW18weDU5OGE0YV0sIV8weDJkYmUwMXx8XzB4NTRlOWZlLV8weDJkYmUwMVsndHMnXT4weDFmNCYmXzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldJiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0vXzB4MmRiZTAxWydjb3VudCddPDB4NjQ/KF8weDRlMTcxYltfMHg1OThhNGFdPV8weDJkYmUwMT17J2NvdW50JzoweDAsJ3RpbWUnOjB4MCwndHMnOl8weDU0ZTlmZX0sXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldPXt9KTpfMHg1NGU5ZmUtXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPjB4MzImJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsnY291bnQnXSYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildL18weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldPDB4NjQmJihfMHg0ZTE3MWJbJ2hpdHMnXT17fSk7bGV0IF8weDE3NGQxYT1bXSxfMHg1YTJkYjY9XzB4MmRiZTAxW18weDM1NjdjYygweDI0NildfHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjQ2KV0/XzB4MTU4NjZhOl8weDQ2MGIzNixfMHgzNjlmYjA9XzB4NDY1ZGM3PT57dmFyIF8weDFlNzk4Nz1fMHgzNTY3Y2M7bGV0IF8weDM1YjMxZT17fTtyZXR1cm4gXzB4MzViMzFlW18weDFlNzk4NygweDI0NyldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNDcpXSxfMHgzNWIzMWVbJ2VsZW1lbnRzJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDI2MildLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMTIpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjEyKV0sXzB4MzViMzFlWyd0b3RhbFN0ckxlbmd0aCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTkpXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRMaW1pdCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNTApXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWE4KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOCldLF8weDM1YjMxZVsnc29ydFByb3BzJ109ITB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWIxKV09IV8weDJjNzNkZSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjIxKV09MHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZWMpXT0weDAsXzB4MzViMzFlW18weDFlNzk4NygweDFkNCldPV8weDFlNzk4NygweDE3NCksXzB4MzViMzFlW18weDFlNzk4NygweDIwZSldPSdyb290X2V4cCcsXzB4MzViMzFlW18weDFlNzk4NygweDFiYSldPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDFmMyldPVtdLF8weDM1YjMxZVsnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT0weDAsXzB4MzViMzFlWydyZXNvbHZlR2V0dGVycyddPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDI2MyldPTB4MCxfMHgzNWIzMWVbJ25vZGUnXT17J2N1cnJlbnQnOnZvaWQgMHgwLCdwYXJlbnQnOnZvaWQgMHgwLCdpbmRleCc6MHgwfSxfMHgzNWIzMWU7fTtmb3IodmFyIF8weDU0NGUxZT0weDA7XzB4NTQ0ZTFlPF8weDUxNDhhNFsnbGVuZ3RoJ107XzB4NTQ0ZTFlKyspXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3RpbWVOb2RlJzpfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMzYpfHx2b2lkIDB4MH0sXzB4NTE0OGE0W18weDU0NGUxZV0sXzB4MzY5ZmIwKF8weDVhMmRiNikse30pKTtpZihfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgxYWIpfHxfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMWIpKXtsZXQgXzB4MTZiYzUwPUVycm9yW18weDM1NjdjYygweDE4OSldO3RyeXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT0weDEvMHgwLF8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeydzdGFja05vZGUnOiEweDB9LG5ldyBFcnJvcigpW18weDM1NjdjYygweDIwMSldLF8weDM2OWZiMChfMHg1YTJkYjYpLHsnc3RyTGVuZ3RoJzoweDEvMHgwfSkpO31maW5hbGx5e0Vycm9yW18weDM1NjdjYygweDE4OSldPV8weDE2YmM1MDt9fXJldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6XzB4MTc0ZDFhLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWNhdGNoKF8weDY1N2ZiMCl7cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpbeyd0eXBlJzpfMHgzNTY3Y2MoMHgxYzIpLCdlcnJvcic6XzB4NjU3ZmIwJiZfMHg2NTdmYjBbXzB4MzU2N2NjKDB4MjM0KV19XSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31maW5hbGx5e3RyeXtpZihfMHgyZGJlMDEmJl8weDU0ZTlmZSl7bGV0IF8weDU2OWUyYT1fMHg1OTE1OGIoKTtfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHgyZGJlMDFbJ3RzJ109XzB4NTY5ZTJhLF8weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldKyssXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPV8weDU2OWUyYSwoXzB4MmRiZTAxWydjb3VudCddPjB4MzJ8fF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXT4weDY0KSYmKF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXT0hMHgwKSwoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDFmYSldPjB4M2U4fHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RpbWUnXT4weDEyYykmJihfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3JlZHVjZUxpbWl0cyddPSEweDApO319Y2F0Y2h7fX19cmV0dXJuIF8weDI4MTYyNDt9KChfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDI2YTY5OSxfMHg1NmFkNTIsXzB4Y2YxMzI1LF8weDQ1ZGNjYyxfMHgxNWNjNmIsXzB4NGI1MDdmKT0+e3ZhciBfMHgxMjhjMzY9XzB4YjM4NDc5O2lmKF8weDIyM2QzN1snX2NvbnNvbGVfbmluamEnXSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2lmKCFIKF8weDIyM2QzNyxfMHhjZjEzMjUsXzB4NWYyYzZkKSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KCk9Pnt9LCdjb25zb2xlVHJhY2UnOigpPT57fSwnY29uc29sZVRpbWUnOigpPT57fSwnY29uc29sZVRpbWVFbmQnOigpPT57fSwnYXV0b0xvZyc6KCk9Pnt9LCdhdXRvTG9nTWFueSc6KCk9Pnt9LCdhdXRvVHJhY2VNYW55JzooKT0+e30sJ2NvdmVyYWdlJzooKT0+e30sJ2F1dG9UcmFjZSc6KCk9Pnt9LCdhdXRvVGltZSc6KCk9Pnt9LCdhdXRvVGltZUVuZCc6KCk9Pnt9fSxfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07bGV0IF8weDRjODg5ND1CKF8weDIyM2QzNyksXzB4NGZjZTcwPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZTgpXSxfMHhmMDRlM2Y9XzB4NGM4ODk0W18weDEyOGMzNigweDE3ZCldLF8weDM0ZGJkMj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWVmKV0sXzB4NTUzMWUwPXsnaGl0cyc6e30sJ3RzJzp7fX0sXzB4NThmMWNkPVgoXzB4MjIzZDM3LF8weDQ1ZGNjYyxfMHg1NTMxZTAsXzB4MjZhNjk5KSxfMHgyYjhiMGY9XzB4M2ZhYzc4PT57XzB4NTUzMWUwWyd0cyddW18weDNmYWM3OF09XzB4ZjA0ZTNmKCk7fSxfMHg5NWEwMmY9KF8weDE0MzViOSxfMHgzNGZmOTIpPT57bGV0IF8weDEyNGQyZT1fMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXTtpZihkZWxldGUgXzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml0sXzB4MTI0ZDJlKXtsZXQgXzB4NTliMDQ1PV8weDRmY2U3MChfMHgxMjRkMmUsXzB4ZjA0ZTNmKCkpO18weDUwNjM5ZihfMHg1OGYxY2QoJ3RpbWUnLF8weDE0MzViOSxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDU5YjA0NV0sXzB4MzRmZjkyKSk7fX0sXzB4M2MyZjIzPV8weDEzYmY3Yj0+e3ZhciBfMHg0NTdmNmI9XzB4MTI4YzM2LF8weDM0ZWI3YjtyZXR1cm4gXzB4NWYyYzZkPT09XzB4NDU3ZjZiKDB4MWRlKSYmXzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldJiYoKF8weDM0ZWI3Yj1fMHgxM2JmN2I9PW51bGw/dm9pZCAweDA6XzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldKT09bnVsbD92b2lkIDB4MDpfMHgzNGViN2JbXzB4NDU3ZjZiKDB4MjQxKV0pJiYoXzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldWzB4MF1bXzB4NDU3ZjZiKDB4MWRkKV09XzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldKSxfMHgxM2JmN2I7fTtfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooXzB4NWNhZmQ4LF8weDQ4N2NmNik9Pnt2YXIgXzB4NTUxODljPV8weDEyOGMzNjtfMHgyMjNkMzdbJ2NvbnNvbGUnXVtfMHg1NTE4OWMoMHgyNTEpXVtfMHg1NTE4OWMoMHgyMTYpXSE9PV8weDU1MTg5YygweDE5NCkmJl8weDUwNjM5ZihfMHg1OGYxY2QoXzB4NTUxODljKDB4MjUxKSxfMHg1Y2FmZDgsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ4N2NmNikpO30sJ2NvbnNvbGVUcmFjZSc6KF8weDVlNjQ3MyxfMHgzZDM1YzgpPT57dmFyIF8weDU2MTkwNj1fMHgxMjhjMzYsXzB4MTM5MWViLF8weDJiYjA2NTtfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MjVlKV1bJ2xvZyddWyduYW1lJ10hPT0nZGlzYWJsZWRUcmFjZScmJigoXzB4MmJiMDY1PShfMHgxMzkxZWI9XzB4MjIzZDM3W18weDU2MTkwNigweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxMzkxZWJbXzB4NTYxOTA2KDB4MjRkKV0pIT1udWxsJiZfMHgyYmIwNjVbXzB4NTYxOTA2KDB4MWMxKV0mJihfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MTkyKV09ITB4MCksXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoJ3RyYWNlJyxfMHg1ZTY0NzMsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDNkMzVjOCkpKSk7fSwnY29uc29sZUVycm9yJzooXzB4NDhmMjM0LF8weDUwYWNiNSk9Pnt2YXIgXzB4M2FjOTMwPV8weDEyOGMzNjtfMHgyMjNkMzdbXzB4M2FjOTMwKDB4MTkyKV09ITB4MCxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzYWM5MzAoMHgyMWIpLF8weDQ4ZjIzNCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NTBhY2I1KSkpO30sJ2NvbnNvbGVUaW1lJzpfMHgzYjQ1Mjg9PntfMHgyYjhiMGYoXzB4M2I0NTI4KTt9LCdjb25zb2xlVGltZUVuZCc6KF8weDFkMmExYSxfMHg4ZmVjZDcpPT57XzB4OTVhMDJmKF8weDhmZWNkNyxfMHgxZDJhMWEpO30sJ2F1dG9Mb2cnOihfMHgyMDI2ODMsXzB4MmNmZTViKT0+e18weDUwNjM5ZihfMHg1OGYxY2QoJ2xvZycsXzB4MmNmZTViLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MjAyNjgzXSkpO30sJ2F1dG9Mb2dNYW55JzooXzB4NGI2YzQ3LF8weDQ1MGI2Nik9Pnt2YXIgXzB4NDczODAyPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4NThmMWNkKF8weDQ3MzgwMigweDI1MSksXzB4NGI2YzQ3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0NTBiNjYpKTt9LCdhdXRvVHJhY2UnOihfMHgzMmE3NixfMHgxNGJjMTIpPT57dmFyIF8weDU3Y2Y4YT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4NTdjZjhhKDB4MWFiKSxfMHgxNGJjMTIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgzMmE3Nl0pKSk7fSwnYXV0b1RyYWNlTWFueSc6KF8weGUzNjBmNyxfMHgzM2MwZTIpPT57dmFyIF8weDNkYjAwZT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2RiMDBlKDB4MWFiKSxfMHhlMzYwZjcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDMzYzBlMikpKTt9LCdhdXRvVGltZSc6KF8weGQyMzc0OSxfMHgxZWYyZDgsXzB4NDExNmRiKT0+e18weDJiOGIwZihfMHg0MTE2ZGIpO30sJ2F1dG9UaW1lRW5kJzooXzB4MTRkNTkyLF8weDU5ZWZlNyxfMHgxMWY3YWMpPT57XzB4OTVhMDJmKF8weDU5ZWZlNyxfMHgxMWY3YWMpO30sJ2NvdmVyYWdlJzpfMHgyMDc0MmE9Pnt2YXIgXzB4NjQ0ODk3PV8weDEyOGMzNjtfMHg1MDYzOWYoeydtZXRob2QnOl8weDY0NDg5NygweDFiMiksJ3ZlcnNpb24nOl8weDI2YTY5OSwnYXJncyc6W3snaWQnOl8weDIwNzQyYX1dfSk7fX07bGV0IF8weDUwNjM5Zj1xKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MTVjYzZiLF8weDRiNTA3ZiksXzB4NTI5MDM0PV8weDIyM2QzN1tfMHgxMjhjMzYoMHgyNjEpXTtyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO30pKGdsb2JhbFRoaXMsXzB4YjM4NDc5KDB4MThlKSxfMHhiMzg0NzkoMHgxZGYpLF8weGIzODQ3OSgweDI1YiksXzB4YjM4NDc5KDB4MWVlKSxfMHhiMzg0NzkoMHgyM2QpLF8weGIzODQ3OSgweDI0YSksXzB4YjM4NDc5KDB4MTk3KSxfMHhiMzg0NzkoMHgxY2UpLCcnLCcxJyk7XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gfVxuICAgICAgICA7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX29vKGkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZUxvZyhpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fb287IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RyKGkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRyYWNlKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb190cjsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHgoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlRXJyb3IoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3R4OyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190cyh2KSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lKHYpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190czsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdGUodiwgaSkgeyB0cnkge1xuICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVGltZUVuZCh2LCBpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9IHJldHVybiB2OyB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdGU7IC8qZXNsaW50IHVuaWNvcm4vbm8tYWJ1c2l2ZS1lc2xpbnQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL2Rpc2FibGUtZW5hYmxlLXBhaXI6LGVzbGludC1jb21tZW50cy9uby11bmxpbWl0ZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWFnZ3JlZ2F0aW5nLWVuYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWR1cGxpY2F0ZS1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZW5hYmxlOiwqL1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFsbERlZmF1bHRWYWx1ZTogYWxsRGVmYXVsdFZhbHVlLCBpc1NhdmluZ1N0YXJ0ZWQ6IGlzU2F2aW5nU3RhcnRlZCwgaXNTYXZlZDogaXNTYXZlZCwgcHJvY2VlZFN0ZXA6IHByb2NlZWRTdGVwLCBkZWZhdWx0VmFsdWVDb21wbGV0ZWRDaGVjazogZGVmYXVsdFZhbHVlQ29tcGxldGVkQ2hlY2ssIHByZXZpb3VzU3RlcDogcHJldmlvdXNTdGVwLCBvb19jbTogb29fY20sIG9vX29vOiBvb19vbywgb29fdHI6IG9vX3RyLCBvb190eDogb29fdHgsIG9vX3RzOiBvb190cywgb29fdGU6IG9vX3RlLCBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBMaW5lc0xvYWRlcjogTGluZXNMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFNpZGVIZWxwVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaWRlSGVscFRleHQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTGluZXNMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkRhdGFTdGVwJyxcbiAgICBwcm9wczoge1xuICAgICAgICBvcmdhbml6YXRpb25UeXBlT3B0aW9uczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpb3VzVmFsdWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbXG4gICAgICAgICdwcm9jZWVkU3RlcCcsXG4gICAgICAgICdwcmV2aW91c1N0ZXAnLFxuICAgICAgICAnY29tcGxldGVTdGVwJyxcbiAgICAgICAgJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2IsIF9jLCBfZDtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2Vjb25kYXJ5UmVwb3J0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogJzEnLCBsYWJlbDogJ1RydWUnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnMCcsIGxhYmVsOiAnRmFsc2UnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBvcmdhbml6YXRpb25EYXRhID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgcmVmOiAoKF9iID0gcHJvcHMucHJldmlvdXNWYWx1ZXNbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZWYpIHx8ICcnLFxuICAgICAgICAgICAgdHlwZTogKChfYyA9IHByb3BzLnByZXZpb3VzVmFsdWVzWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudHlwZSkgfHwgJycsXG4gICAgICAgICAgICBzZWNvbmRhcnlfcmVwb3J0ZXI6ICgoX2QgPSBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnNlY29uZGFyeV9yZXBvcnRlcikgfHwgJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaGVscFRpdGxlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgaGVscENvbnRlbnQgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBoZWxwVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzU2F2aW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNTYXZlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc0Vycm9yID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZXJyb3JNZXNzYWdlcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc1JlZmVyZW5jZUVycm9yID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcmVmZXJlbmNlRXJyb3JNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY29udGVudFZhbHVlcyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3JlZmVyZW5jZScsXG4gICAgICAgICAgICAgICAgY29udGVudDogJzxkaXYgY2xhc3M9XCJzcGFjZS15LTEuNVwiPiBQcm92aWRlIHRoZSBJQVRJIE9yZ2FuaXNhdGlvbiBJZGVudGlmaWVyIG9mIHRoZSBvcmdhbmlzYXRpb24gcHVibGlzaGluZyB0aGUgZGF0YS4gVGhlIHF1aWNrZXN0IHdheSB0byBmaW5kIHRoaXMgaXMgdG8gc2VhcmNoIGZvciB0aGUgb3JnYW5pc2F0aW9uIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cuaWF0aXJlZ2lzdHJ5Lm9yZy9wdWJsaXNoZXIvXCI+SUFUSSBQdWJsaXNoZXIgTGlzdDwvYT4uIElmIHlvdSBjYW5ub3QgZmluZCB0aGUgb3JnYW5pc2F0aW9uLCBzZWUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9ndWlkYW5jZS9wdWJsaXNoaW5nLWRhdGEvZGF0YS1xdWFsaXR5LWFuZC12aXN1YWxpc2F0aW9uL2ZpbmRpbmctb3RoZXItb3JnYW5pc2F0aW9ucy1pZGVudGlmaWVycy9cIj5mdXJ0aGVyIGd1aWRhbmNlPC9hPi4gPC9kaXY+JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnPGRpdiBjbGFzcz1cInNwYWNlLXktMS41XCI+IFNlbGVjdCB0aGUgdHlwZSB0aGF0IGJlc3QgZGVzY3JpYmVzIHRoZSBvcmdhbmlzYXRpb24gcHVibGlzaGluZyB0aGUgZGF0YS48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL2NvZGVsaXN0cy9vcmdhbmlzYXRpb250eXBlL1wiPkluZm9ybWF0aW9uIG9uIGFsbCBvcmdhbmlzYXRpb24gdHlwZXMuPC9hPjwvZGl2PicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnc2Vjb25kYXJ5LXJlcG9ydGVyJyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIjxkaXYgY2xhc3M9XFxcInNwYWNlLXktMS41XFxcIj4gQXJlIHlvdSByZXByb2R1Y2luZyB0aGUgZGF0YSByZXBvcnRlZCBieSBhbm90aGVyIG9yZ2FuaXNhdGlvbj8gSWYgc28sIHlvdXIgb3JnYW5pc2F0aW9uIGlzIGEgXFx1MjAxOHNlY29uZGFyeSByZXBvcnRlclxcdTIwMTkgYW5kIHlvdSBzaG91bGQgc2VsZWN0ICc8Yj5ZZXM8L2I+XFx1MjAxOS4gSWYgeW91IGFyZSByZXBvcnRpbmcgeW91ciBvd24gb3JnYW5pc2F0aW9uXFx1MjAxOXMgZGF0YSwgc2VsZWN0IFxcdTIwMTg8Yj5ObzwvYj5cXHUyMDE5Ljxicj48YnI+UGxlYXNlIG5vdGU6IHlvdSBhcmUgPGI+bm90PC9iPiBhIHNlY29uZGFyeSByZXBvcnRlciBpZiB5b3VyIG9yZ2FuaXNhdGlvbiBpcyBvZmZpY2lhbGx5IGFzc2lnbmVkIGFzIGEgcHJveHkgdG8gcmVwb3J0IElBVEkgZGF0YSBvbiBiZWhhbGYgb2YgYW5vdGhlciBvcmdhbmlzYXRpb24uIDwvZGl2PlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIHNob3dIZWxwID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBoZWxwVGl0bGUudmFsdWUgPSB0aXRsZTtcbiAgICAgICAgICAgIGhlbHBDb250ZW50LnZhbHVlID0gKF9hID0gY29udGVudFZhbHVlcy5maW5kKGZ1bmN0aW9uIChjb250ZW50KSB7IHJldHVybiBjb250ZW50LnRpdGxlID09PSB0aXRsZTsgfSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250ZW50O1xuICAgICAgICAgICAgaGVscFZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAzMDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMzAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2VuZC12ZXJpZmljYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNmb3JtTWVzc2FnZXMgPSBmdW5jdGlvbiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlcy5tYXAoZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnWW91IGhhdmUgbm90IHZlcmlmaWVkIHlvdXIgZW1haWwgYWRkcmVzcy4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiWW91ciBlbWFpbCBhZGRyZXNzIGhhcyBub3QgYmVlbiB2ZXJpZmllZC4gPHNwYW4gY2xhc3M9XFxcInJlc2VuZC12ZXJpZmljYXRpb24gdGV4dC1ibHVlY29yYWwgY3Vyc29yLXBvaW50ZXIgaG92ZXI6dGV4dC1zcHJpbmctNTAgdW5kZXJsaW5lIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLVs0MDBtc11cXFwiPlJlc2VuZCBWZXJpZmljYXRpb24gZW1haWw8L3NwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RoZSBQdWJsaXNoZXIgSUQgaXMgbm90IHZlcmlmaWVkIGluIElBVEkgUmVnaXN0cnkuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnWW91ciBJQVRJIFJlZ2lzdHJ5IGFjY291bnQgaXMgcGVuZGluZyBhcHByb3ZhbC4gQ29udGFjdCA8YSBocmVmPVwibWFpbHRvOnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZ1wiPnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZzwvYT4gaWYgeW91ciBhY2NvdW50IGhhcyBub3QgYmVlbiBhcHByb3ZlZCB3aXRoaW4gdHdvIHdvcmtpbmcgZGF5cyBvZiByZWdpc3RlcmluZy4nO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcmV2aW91c1N0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdwcmV2aW91c1N0ZXAnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHByb2NlZWRTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaGFzRXJyb3IudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmaW5hbERhdGEgPSBbXG4gICAgICAgICAgICAgICAgX19hc3NpZ24oX19hc3NpZ24oe30sIG9yZ2FuaXphdGlvbkRhdGEudmFsdWUpLCB7IG5hcnJhdGl2ZTogKChfYSA9IHByb3BzLnByZXZpb3VzVmFsdWVzWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFycmF0aXZlKSB8fCAnJyB9KSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucHV0KCcvb3JnYW5pc2F0aW9uL3JlcG9ydGluZ19vcmcnLCB7XG4gICAgICAgICAgICAgICAgcmVwb3J0aW5nX29yZzogZmluYWxEYXRhLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ29yZ2FuaXNhdGlvbi9jaGVja3MtZm9yLW9yZ2FuaXNhdGlvbi1wdWJsaXNoJylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvb3JnYW5pc2F0aW9uL3B1Ymxpc2gnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NhdmVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZmV0Y2hEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdjb21wbGV0ZVN0ZXAnLCAzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ3Byb2NlZWRTdGVwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3IudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnZhbHVlID0gdHJhbnNmb3JtTWVzc2FnZXMocmVzcG9uc2UuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3IudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlcy52YWx1ZSA9IHRyYW5zZm9ybU1lc3NhZ2VzKHJlc3BvbnNlLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgb29fb28oXCIxMTYxMjQxNTI2XzQ1Nl8xMF80NTZfMzVfNFwiLCAnRXJyb3InLCBlcnIpKTtcbiAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGVtaXQoJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLCAzKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnJlc3BvbnNlICYmIGVyci5yZXNwb25zZS5kYXRhICYmIGVyci5yZXNwb25zZS5kYXRhLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzWydyZXBvcnRpbmdfb3JnLjAucmVmJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1JlZmVyZW5jZUVycm9yLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUVycm9yTWVzc2FnZS52YWx1ZSA9IGVycm9yc1sncmVwb3J0aW5nX29yZy4wLnJlZiddWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgc2Vjb25kYXJ5UmVwb3J0ZXJPcHRpb25zOiBzZWNvbmRhcnlSZXBvcnRlck9wdGlvbnMsIG9yZ2FuaXphdGlvbkRhdGE6IG9yZ2FuaXphdGlvbkRhdGEsIGhlbHBUaXRsZTogaGVscFRpdGxlLCBoZWxwQ29udGVudDogaGVscENvbnRlbnQsIGhlbHBWaXNpYmxlOiBoZWxwVmlzaWJsZSwgaXNTYXZpbmc6IGlzU2F2aW5nLCBpc1NhdmVkOiBpc1NhdmVkLCBoYXNFcnJvcjogaGFzRXJyb3IsIGVycm9yTWVzc2FnZXM6IGVycm9yTWVzc2FnZXMsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBoYXNSZWZlcmVuY2VFcnJvcjogaGFzUmVmZXJlbmNlRXJyb3IsIHJlZmVyZW5jZUVycm9yTWVzc2FnZTogcmVmZXJlbmNlRXJyb3JNZXNzYWdlLCBjb250ZW50VmFsdWVzOiBjb250ZW50VmFsdWVzLCBzaG93SGVscDogc2hvd0hlbHAsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgdHJhbnNmb3JtTWVzc2FnZXM6IHRyYW5zZm9ybU1lc3NhZ2VzLCBwcmV2aW91c1N0ZXA6IHByZXZpb3VzU3RlcCwgcHJvY2VlZFN0ZXA6IHByb2NlZWRTdGVwLCBvb19jbTogb29fY20sIG9vX29vOiBvb19vbywgb29fdHI6IG9vX3RyLCBvb190eDogb29fdHgsIG9vX3RzOiBvb190cywgb29fdGU6IG9vX3RlLCByZWY6IHZ1ZV8yLnJlZiwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgU2lkZUhlbHBUZXh0OiBTaWRlSGVscFRleHRfdnVlXzEuZGVmYXVsdCwgTGluZXNMb2FkZXI6IExpbmVzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0TWVzc2FnZTogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMaW5lc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9MaW5lc0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQdWJsaXNoaW5nU2V0dGluZ3NTdGVwJyxcbiAgICBwcm9wczoge1xuICAgICAgICBwdWJsaXNoZXJJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHB1Ymxpc2hlclNldHRpbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb25JZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZldGNoRGF0YToge1xuICAgICAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdGlhbFJlbmRlcjoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogW1xuICAgICAgICAncHJvY2VlZFN0ZXAnLFxuICAgICAgICAnY2hhbmdlUmVuZGVyJyxcbiAgICAgICAgJ2NvbXBsZXRlU3RlcCcsXG4gICAgICAgICdyZW1vdmVDb21wbGV0ZWRTdGVwJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhcGlUb2tlbiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGlzVmVyaWZ5aW5nVG9rZW4gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc1NhdmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzU3VjY2VzcyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRva2VuU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikoKChfYiA9IHByb3BzLnB1Ymxpc2hlclNldHRpbmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b2tlbl9zdGF0dXMpIHx8ICcnKTtcbiAgICAgICAgdmFyIHZlcmlmeVRva2VuU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHZhciBfYTsgcmV0dXJuIChfYSA9IHByb3BzLnB1Ymxpc2hlclNldHRpbmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b2tlbl9zdGF0dXM7IH0sIGZ1bmN0aW9uIChuZXdTdGF0dXMpIHtcbiAgICAgICAgICAgIHRva2VuU3RhdHVzLnZhbHVlID0gbmV3U3RhdHVzO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBhcGlUb2tlbi52YWx1ZSA9IChfYSA9IHByb3BzID09PSBudWxsIHx8IHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wcy5wdWJsaXNoZXJTZXR0aW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYXBpX3Rva2VuO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlLnZhbHVlID0gcHJvcHMucmVnaXN0cmF0aW9uVHlwZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB2ZXJpZnlUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzVmVyaWZ5aW5nVG9rZW4udmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmVyaWZ5VG9rZW5TdGF0dXMudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGVtaXQoJ2NoYW5nZVJlbmRlcicpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3ZlcmlmeScsIHtcbiAgICAgICAgICAgICAgICBhcGlfdG9rZW46IGFwaVRva2VuLnZhbHVlLFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogcHJvcHMucHVibGlzaGVySWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZlcmlmeVRva2VuU3RhdHVzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2tlblN0YXR1cy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXM7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdDb3JyZWN0JyB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnUGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTdWNjZXNzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgb29fb28oXCIzMTg3NTA0MjAzXzI5M182XzI5M18zMV80XCIsICdFcnJvcicsIGVycikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNWZXJpZnlpbmdUb2tlbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpc1N1Y2Nlc3MudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHJvY2VlZFN0ZXAgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2MubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvc2V0dGluZy9zdG9yZS9wdWJsaXNoZXInLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV90b2tlbjogYXBpVG9rZW4udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogcHJvcHMucHVibGlzaGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9pZDogcHJvcHMub3JnYW5pemF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl92ZXJpZmljYXRpb246IChfYSA9IHByb3BzLnB1Ymxpc2hlclNldHRpbmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoZXJfdmVyaWZpY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbl92ZXJpZmljYXRpb246IChfYiA9IHByb3BzLnB1Ymxpc2hlclNldHRpbmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b2tlbl92ZXJpZmljYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnQ29ycmVjdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnUGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdjb21wbGV0ZVN0ZXAnLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmZldGNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCgncHJvY2VlZFN0ZXAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDMwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXNwb25zZS5kYXRhLm1lc3NhZ2Uuam9pbignPGJyPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsgLyogZXNsaW50LWRpc2FibGUgKi8gcmV0dXJuIGNvbnNvbGUubG9nLmFwcGx5KC8qIGVzbGludC1kaXNhYmxlICovIGNvbnNvbGUsIG9vX29vKFwiMzE4NzUwNDIwM18zNDVfMjBfMzQ1XzM2XzRcIiwgZXJyKSk7IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIC8qIGM4IGlnbm9yZSBzdGFydCAqLyAvKiBlc2xpbnQtZGlzYWJsZSAqLyA7XG4gICAgICAgIGZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcIikgfHwgKDAsIGV2YWwpKFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0OlxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFx4MjB0b1xcXFx4MjBmaW5kXFxcXHgyMGFuZFxcXFx4MjBsb2FkXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXHgyMGZvclxcXFx4MjBtb3JlXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXHgyMHdlYnNvY2tldFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVzdGFydGluZ1xcXFx4MjB0aGVcXFxceDIwcHJvY2Vzc1xcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMHNlbmRcXFxceDIwbG9ncyxcXFxceDIwcmVmcmVzaGluZ1xcXFx4MjB0aGVcXFxceDIwcGFnZVxcXFx4MjBtYXlcXFxceDIwaGVscDtcXFxceDIwYWxzb1xcXFx4MjBzZWVcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcImxvY2FsaG9zdFxcXCIsXFxcIjEyNy4wLjAuMVxcXCIsXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXCIsXFxcImZsdWZmeVxcXCIsXFxcIjE5Mi4xNjguMTAuMTcxXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxceDIwZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdCxcXFxceDIwc2VlXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxceDIwQ29uc29sZVxcXFx4MjBOaW5qYVxcXFx4MjBleHRlbnNpb25cXFxceDIwaXNcXFxceDIwY29ubmVjdGVkXFxcXHgyMHRvXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFx4MjBjb2xvcjpcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFx4QTAtXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFx4QTAtXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFwnXXxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFx4NWNcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcIi9nLCdcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcInxcXFwiJCkvZywnXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSB9XG4gICAgICAgIDsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fb28oaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlTG9nKGksIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICBvb19vbzsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gb29fdHIoaSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190eChpKSB7XG4gICAgICAgICAgICB2YXIgdiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICAgICAgb29fdHg7IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGZ1bmN0aW9uIG9vX3RzKHYpIHsgdHJ5IHtcbiAgICAgICAgICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuICAgICAgICA7XG4gICAgICAgIG9vX3RzOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBvb190ZSh2LCBpKSB7IHRyeSB7XG4gICAgICAgICAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH0gcmV0dXJuIHY7IH1cbiAgICAgICAgO1xuICAgICAgICBvb190ZTsgLyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovXG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgYXBpVG9rZW46IGFwaVRva2VuLCBpc1ZlcmlmeWluZ1Rva2VuOiBpc1ZlcmlmeWluZ1Rva2VuLCBpc1NhdmluZzogaXNTYXZpbmcsIGlzU3VjY2VzczogaXNTdWNjZXNzLCB0b2tlblN0YXR1czogdG9rZW5TdGF0dXMsIHZlcmlmeVRva2VuU3RhdHVzOiB2ZXJpZnlUb2tlblN0YXR1cywgb3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZTogb3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgdmVyaWZ5VG9rZW46IHZlcmlmeVRva2VuLCBwcm9jZWVkU3RlcDogcHJvY2VlZFN0ZXAsIG9vX2NtOiBvb19jbSwgb29fb286IG9vX29vLCBvb190cjogb29fdHIsIG9vX3R4OiBvb190eCwgb29fdHM6IG9vX3RzLCBvb190ZTogb29fdGUsIExpbmVzTG9hZGVyOiBMaW5lc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCwgVG9hc3RNZXNzYWdlOiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdGllc0VsZW1lbnRzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VhcmNoQnRuVmFsdWUgPSBfYlswXSwgc2VhcmNoQnRuVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGVsZW1lbnRzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbGVtZW50SWNvbnMgPSB7XG4gICAgICAgICAgICBjb21wbGV0ZWQ6ICdkb3VibGUtdGljaycsXG4gICAgICAgICAgICBub3RfY29tcGxldGVkOiAncmVkLWNyb3NzJyxcbiAgICAgICAgICAgIGNvcmU6ICdjb3JlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gT2JqZWN0LmVudHJpZXMoZGF0YS52YWx1ZSk7XG4gICAgICAgIHZhciBmaWx0ZXJlZEVsZW1lbnRzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICcnKS5yZXBsYWNlKCctJywgJ18nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbZWxlbWVudHMuc3RhdHVzXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnJykucmVwbGFjZSgnLScsICdfJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIganVzdFN0cmluZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgcmV0dXJuIGp1c3RTdHJpbmdzO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFkZGluZyBjb3JlIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEudmFsdWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoKDAsIGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzKSgpLmluY2x1ZGVzKGtleS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIGRhdGEudmFsdWVba2V5XVsnY29yZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkcm9wZG93bkZpbHRlciA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zdGF0dXMgPSBzO1xuICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWRyb3Bkb3duLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmsoaGFzX2RhdGEsIGluZGV4KSB7XG4gICAgICAgICAgICBpZiAoaGFzX2RhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIjXCIuY29uY2F0KGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGluZGV4ID09ICdyZXN1bHQnIHx8IGluZGV4ID09ICd0cmFuc2FjdGlvbnMnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBpbmRleCA9PSAncmVzdWx0JyA/ICdyZXN1bHQnIDogJ3RyYW5zYWN0aW9uJztcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL1wiKS5jb25jYXQoZWxlbWVudCwgXCIvY3JlYXRlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiL2FjdGl2aXR5L1wiLmNvbmNhdChwcm9wcy5hY3Rpdml0eUlkLCBcIi9cIikuY29uY2F0KGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGRhdGE6IGRhdGEsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCBzZWFyY2hCdG5WYWx1ZTogc2VhcmNoQnRuVmFsdWUsIHNlYXJjaEJ0blRvZ2dsZTogc2VhcmNoQnRuVG9nZ2xlLCBlbGVtZW50czogZWxlbWVudHMsIGVsZW1lbnRJY29uczogZWxlbWVudEljb25zLCBhc0FycmF5RGF0YTogYXNBcnJheURhdGEsIGZpbHRlcmVkRWxlbWVudHM6IGZpbHRlcmVkRWxlbWVudHMsIGRyb3Bkb3duRmlsdGVyOiBkcm9wZG93bkZpbHRlciwgZ2V0TGluazogZ2V0TGluaywgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG4vL2NvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2VsZW1lbnRzL0luZGV4XCIpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgRWxlbWVudFN0YXR1c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgSGVscGVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2FybmluZ0luZm9UZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgaGFzRXZlckJlZW5QdWJsaXNoZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcmVjYXRpb25Db2RlVXNhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFtCb29sZWFuLCBCb29sZWFuXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgZWxlbWVudHMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZWxlbWVudHMnKTtcbiAgICAgICAgdmFyIGxheW91dCA9ICdiYXNpcy1mdWxsICBsZzpiYXNpcy02LzEyJztcbiAgICAgICAgaWYgKHByb3BzLndpZHRoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgIGxheW91dCA9ICdiYXNpcy1mdWxsJztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGV0ZUFjdGl2aXR5RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRWxlbWVudChpZCwgZWxlbWVudCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5kZWxldGUoXCIvYXBpL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgXCJDb3VsZG4ndCBkZWxldGUgdGhlIGFjdGl2aXR5IHRpdGxlIGR1ZSB0byBzeXN0ZW0gZXJyb3IuXCI7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlbGVtZW50czogZWxlbWVudHMsIGxheW91dDogbGF5b3V0LCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0LCBkZWxldGVBY3Rpdml0eUVsZW1lbnQ6IGRlbGV0ZUFjdGl2aXR5RWxlbWVudCwgZGVsZXRlRWxlbWVudDogZGVsZXRlRWxlbWVudCwgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzLCBBY3Rpdml0eURhdGU6IEluZGV4XzEuQWN0aXZpdHlEYXRlLCBDb25kaXRpb25zOiBJbmRleF8xLkNvbmRpdGlvbnMsIENvbnRhY3RJbmZvOiBJbmRleF8xLkNvbnRhY3RJbmZvLCBEZXNjcmlwdGlvbjogSW5kZXhfMS5EZXNjcmlwdGlvbiwgSHVtYW5pdGFyaWFuU2NvcGU6IEluZGV4XzEuSHVtYW5pdGFyaWFuU2NvcGUsIElhdGlJZGVudGlmaWVyOiBJbmRleF8xLklhdGlJZGVudGlmaWVyLCBMZWdhY3lEYXRhOiBJbmRleF8xLkxlZ2FjeURhdGEsIExvY2F0aW9uOiBJbmRleF8xLkxvY2F0aW9uLCBPdGhlcklkZW50aWZpZXI6IEluZGV4XzEuT3RoZXJJZGVudGlmaWVyLCBQYXJ0aWNpcGF0aW5nT3JnOiBJbmRleF8xLlBhcnRpY2lwYXRpbmdPcmcsIFBsYW5uZWREaXNidXJzZW1lbnQ6IEluZGV4XzEuUGxhbm5lZERpc2J1cnNlbWVudCwgUG9saWN5TWFya2VyOiBJbmRleF8xLlBvbGljeU1hcmtlciwgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LCBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLCBSZWxhdGVkQWN0aXZpdHk6IEluZGV4XzEuUmVsYXRlZEFjdGl2aXR5LCBSZXBvcnRpbmdPcmdhbml6YXRpb246IEluZGV4XzEuUmVwb3J0aW5nT3JnYW5pemF0aW9uLCBTZWN0b3I6IEluZGV4XzEuU2VjdG9yLCBUYWc6IEluZGV4XzEuVGFnLCBUaXRsZUVsZW1lbnQ6IEluZGV4XzEuVGl0bGVFbGVtZW50LCBUcmFuc2FjdGlvbnM6IEluZGV4XzEuVHJhbnNhY3Rpb25zLCBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCwgU3RhdHVzOiBFbGVtZW50U3RhdHVzX3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhlbHBlclRleHQ6IEhlbHBlclRleHRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ3JlYXRlTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL0NyZWF0ZU1vZGFsLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWRkQWN0aXZpdHlCdXR0b24nLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQ3JlYXRlTW9kYWw6IENyZWF0ZU1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2EgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgbW9kYWxWYWx1ZSA9IF9hWzBdLCBtb2RhbFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgbW9kZWxWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9nZ2xlTW9kZWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbGlDbGFzcyA9ICdibG9jayBwLTIuNSB0ZXh0LW4tNDAgdGV4dC10aW55IGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOnRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSAhc3RhdGUuaXNWaXNpYmxlO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbGlDbGFzczogbGlDbGFzcyxcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZTogbW9kZWxWaXNpYmxlLFxuICAgICAgICAgICAgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSxcbiAgICAgICAgICAgIHRvZ2dsZTogdG9nZ2xlLFxuICAgICAgICAgICAgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLFxuICAgICAgICAgICAgdG9nZ2xlTW9kZWw6IHRvZ2dsZU1vZGVsLFxuICAgICAgICAgICAgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ3JlYXRlTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL0NyZWF0ZU1vZGFsLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLyoqXG4gKiAgR2xvYmFsIFN0YXRlXG4gKi9cbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBZGRBY3Rpdml0eUJ1dHRvbicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfYVswXSwgbW9kYWxUb2dnbGUgPSBfYVsxXTtcbiAgICAgICAgdmFyIG1vZGVsVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0bWVzc2FnZVR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3Jwb3B1cCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmdJblByb2Nlc3MgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRFcnJvcihmaWxlbmFtZSwgdGV4dCkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSAhc3RhdGUuaXNWaXNpYmxlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3MudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbnl3YXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2Vzcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC14bHMtZG93bmxvYWQnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjaGVja0Rvd25sb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkRXJyb3J4bWwgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICBzaG93RXJyb3Jwb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbC90cnVlP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC14bWwvdHJ1ZT9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhtbCA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbD9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS54bWxfZXJyb3IgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhscyA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvcHJlcGFyZS14bHM/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3ByZXBhcmUteGxzP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ3N2ID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQtY3N2P2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC1jc3Y/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbGlDbGFzczogbGlDbGFzcyxcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZTogbW9kZWxWaXNpYmxlLFxuICAgICAgICAgICAgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSxcbiAgICAgICAgICAgIHRvZ2dsZTogdG9nZ2xlLFxuICAgICAgICAgICAgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLFxuICAgICAgICAgICAgdG9nZ2xlTW9kZWw6IHRvZ2dsZU1vZGVsLFxuICAgICAgICAgICAgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLFxuICAgICAgICAgICAgZG93bmxvYWRDc3Y6IGRvd25sb2FkQ3N2LFxuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksXG4gICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlOiBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlOiB0b2FzdG1lc3NhZ2VUeXBlLFxuICAgICAgICAgICAgZG93bmxvYWRYbWw6IGRvd25sb2FkWG1sLFxuICAgICAgICAgICAgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwOiBzaG93RXJyb3Jwb3B1cCxcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWQ6IGNoZWNrRG93bmxvYWQsXG4gICAgICAgICAgICBkb3dubG9hZEVycm9yeG1sOiBkb3dubG9hZEVycm9yeG1sLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIGRvd25sb2FkRXJyb3I6IGRvd25sb2FkRXJyb3IsXG4gICAgICAgICAgICBkb3dubG9hZFhsczogZG93bmxvYWRYbHMsXG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2VzczogZG93bmxvYWRpbmdJblByb2Nlc3MsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICAgICAgICAgIGRvd25sb2FkQW55d2F5OiBkb3dubG9hZEFueXdheSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdFbGVtZW50Tm90ZScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdFbXB0eUFjdGl2aXR5JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEFjdGl2aXR5QnV0dG9uOiBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkaXNtaXNzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHN0YXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbnZhciBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBSZWZyZXNoVG9hc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlXCIpKTtcbnZhciBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BhZ2VUaXRsZScsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCdlcnJvckRhdGEnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoUmVmID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBjaGVja1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFJlZi52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hSZWYudmFsdWUuY2hlY2tQdWJsaXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIHN0b3JlOiBzdG9yZSwgcHVibGlzaFJlZjogcHVibGlzaFJlZiwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIERvd25sb2FkQWN0aXZpdHlCdXR0b246IERvd25sb2FkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCwgQWRkQWN0aXZpdHlCdXR0b246IEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgUmVmcmVzaFRvYXN0TWVzc2FnZTogUmVmcmVzaFRvYXN0X3Z1ZV8xLmRlZmF1bHQsIFB1Ymxpc2hTZWxlY3RlZDogUHVibGlzaFNlbGVjdGVkX3Z1ZV8xLmRlZmF1bHQsIERlbGV0ZUJ1dHRvbjogRGVsZXRlQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEVycm9yUG9wVXA6IEVycm9yUG9wVXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1NpZGViYXJIZWxwQmxvY2snLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWVcIikpO1xudmFyIFB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG4vLyBpbXBvcnQgU2hpbW1lciBmcm9tIFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIjtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUYWJsZUxheW91dCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGxvYWRlcjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgY3VycmVudFBhZ2U6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogMSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlbGVjdEFsbFZhbHVlID0gX2JbMF0sIHNlbGVjdEFsbFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZyb21Ob3coKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoYWN0aXZpdGllcywgc2VsZWN0QWxsVmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZGF0dW0gaW4gYWN0aXZpdGllcykge1xuICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChhY3Rpdml0aWVzW2RhdHVtXS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdEFsbFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vU29ydGluZyBieSB1cGRhdGVfYXRcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5ID0gKF9hID0gcGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBwYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdxJywgcXVlcnkpO1xuICAgICAgICAgICAgcGFyYW1zLnNldCgnb3JkZXJCeScsICdjb21wbGV0ZV9wZXJjZW50YWdlJyk7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIFwiP1wiLmNvbmNhdChwYXJhbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnlEYXRlVXJsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgIHZhciBxdWVyeSA9IChfYSA9IHBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gcGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgcGFyYW1zLnNldCgncScsIHF1ZXJ5KTtcbiAgICAgICAgICAgIHBhcmFtcy5zZXQoJ29yZGVyQnknLCAndXBkYXRlZF9hdCcpO1xuICAgICAgICAgICAgcGFyYW1zLnNldCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiBcIj9cIi5jb25jYXQocGFyYW1zLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzZWxlY3RBbGxWYWx1ZTogc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZTogc2VsZWN0QWxsVG9nZ2xlLCBzdG9yZTogc3RvcmUsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHRvZ2dsZVNlbGVjdEFsbDogdG9nZ2xlU2VsZWN0QWxsLCBkaXJlY3Rpb246IGRpcmVjdGlvbiwgc29ydGluZ0RpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiwgc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzOiBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MsIHNvcnRCeURhdGVVcmw6IHNvcnRCeURhdGVVcmwsIFByZXZpb3VzbHlQdWJsaXNoZWQ6IFByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEuZGVmYXVsdCwgUHVibGlzaDogUHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0LCBVblB1Ymxpc2g6IFVuUHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGVyaW9kRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRhcmdldFZhbHVlOiBJbmRleF8xLlRhcmdldFZhbHVlLFxuICAgICAgICBBY3R1YWxWYWx1ZTogSW5kZXhfMS5BY3R1YWxWYWx1ZSxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBwZXJpb2QgPSBfYi5wZXJpb2QsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBhcmVudERhdGEgPSBfYi5wYXJlbnREYXRhLCB0eXBlcyA9IF9iLnR5cGVzO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0eXBlcycsIHR5cGVzLnZhbHVlKTtcbiAgICAgICAgLy9pbmRpY2F0b3JcbiAgICAgICAgdmFyIHBlcmlvZERhdGEgPSBwZXJpb2QudmFsdWUucGVyaW9kO1xuICAgICAgICAvL3RpdGxlc1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRfbGFuZ3VhZ2UsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvcklkID0gcGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IuaWQsIGluZGljYXRvclRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3IvXCIpLmNvbmNhdChpbmRpY2F0b3JJZCksIHBlcmlvZExpbmsgPSBcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RcIik7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1Jlc3VsdCBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0XCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzdWx0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdJbmRpY2F0b3IgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQZXJpb2QgTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1BlcmlvZCcsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBwZXJpb2REYXRhOiBwZXJpb2REYXRhLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgcGVyaW9kTGluazogcGVyaW9kTGluayxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGVyaW9kTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgYWN0aXZpdHkgPSBfYS5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9hLnBhcmVudERhdGE7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRUaXRsZSA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvclRpdGxlID0gcGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IudGl0bGUsIGluZGljYXRvcklkID0gcGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IuaWQsIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3IvXCIpLmNvbmNhdChpbmRpY2F0b3JJZCksIHBlcmlvZExpbmsgPSBcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RcIik7XG4gICAgICAgIHZhciBwZXJpb2RzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdZb3VyIEFjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdHknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1Jlc3VsdCBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0XCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnSW5kaWNhdG9yIExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvclwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvclRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1BlcmlvZCBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZHMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBpbmRpY2F0b3JJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgcGVyaW9kTGluazogcGVyaW9kTGluayxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgcGVyaW9kc0RhdGE6IHBlcmlvZHNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIGluZGljYXRvcklkOiBpbmRpY2F0b3JJZCxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0dWFsVmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHsgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICAvLyB2dWUgaW5qZWN0XG4gICAgICAgIHZhciBkbFR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgYWN0dWFsVmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0dWFsVmFsdWU6IGFjdHVhbFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZ2V0TG9jYXRpb246IHV0aWxzXzEuZ2V0TG9jYXRpb24sXG4gICAgICAgICAgICBkbFR5cGU6IGRsVHlwZSxcbiAgICAgICAgICAgIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RhcmdldFZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgLy8gdnVlIGluamVjdFxuICAgICAgICAvLyBjb25zdCBsYW5ndWFnZVR5cGUgPSBpbmplY3QoJ3R5cGVzJykubGFuZ3VhZ2U7XG4gICAgICAgIHZhciBkbFR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgdGFyZ2V0VmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWU6IHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZ2V0TG9jYXRpb246IHV0aWxzXzEuZ2V0TG9jYXRpb24sXG4gICAgICAgICAgICAvLyBsYW5ndWFnZVR5cGUsXG4gICAgICAgICAgICBkbFR5cGU6IGRsVHlwZSxcbiAgICAgICAgICAgIGlzRXZlcnlWYWx1ZU51bGw6IHV0aWxzXzEuaXNFdmVyeVZhbHVlTnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudFxudmFyIFJlc3VsdEVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vUmVzdWx0RWxlbWVudC52dWVcIikpO1xudmFyIEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERldGFpbCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBSZXN1bHRFbGVtZW50OiBSZXN1bHRFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEluZGljYXRvcjogSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHJlc3VsdCA9IF9iLnJlc3VsdCwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGhhc0luZGljYXRvcnMgPSByZXN1bHQudmFsdWUuaW5kaWNhdG9ycy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB2YXIgcmVzdWx0c0RhdGEgPSByZXN1bHQudmFsdWUucmVzdWx0O1xuICAgICAgICAvLyBjb25zdCBkZXByZWNhdGlvblN0YXR1c01hcCA9IHJlc3VsdHNEYXRhLmRlcHJlY2F0aW9uX3N0YXR1c19tYXA7XG4gICAgICAgIGRlbGV0ZSByZXN1bHRzRGF0YS5kZXByZWNhdGlvbl9zdGF0dXNfbWFwO1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShyZXN1bHRzRGF0YS50aXRsZVswXS5uYXJyYXRpdmUsICdlbicpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHQudmFsdWUuaWQpLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgZGVmYXVsdExhbmd1YWdlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc01hbmRhdG9yeUZvclJlc3VsdCA9IGZ1bmN0aW9uIChlbGVtZW50T3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIHZhciBtYW5kYXRvcnlFbGVtZW50T3JBdHRyaWJ1dGUgPSBbJ3R5cGUnLCAndGl0bGUnLCAnaW5kaWNhdG9yJ107XG4gICAgICAgICAgICByZXR1cm4gbWFuZGF0b3J5RWxlbWVudE9yQXR0cmlidXRlLmluY2x1ZGVzKGVsZW1lbnRPckF0dHJpYnV0ZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdFRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGhhc0luZGljYXRvcnM6IGhhc0luZGljYXRvcnMsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgaXNNYW5kYXRvcnlGb3JSZXN1bHQ6IGlzTWFuZGF0b3J5Rm9yUmVzdWx0LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVGl0bGVEZXNjcmlwdGlvbjogSW5kZXhfMS5UaXRsZURlc2NyaXB0aW9uLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBSZXN1bHRUeXBlOiBJbmRleF8xLlJlc3VsdFR5cGUsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnROYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdFVybDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWUsIHJlc3VsdFR5cGUgPSB0eXBlcy52YWx1ZS5yZXN1bHRUeXBlLCByZXN1bHRWb2NhYnVsYXJ5ID0gdHlwZXMudmFsdWUucmVzdWx0Vm9jYWJ1bGFyeSwgbGFuZ3VhZ2UgPSB0eXBlcy52YWx1ZS5sYW5ndWFnZTtcbiAgICAgICAgcmV0dXJuIHsgZWxlbWVudERhdGE6IGVsZW1lbnREYXRhLCByZXN1bHRUeXBlOiByZXN1bHRUeXBlLCByZXN1bHRWb2NhYnVsYXJ5OiByZXN1bHRWb2NhYnVsYXJ5LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRzTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhY3Rpdml0eSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlc3VsdHNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdZb3VyIEFjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnUmVzdWx0IExpc3QnLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdHMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHRzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgYWN0aXZpdHlJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERvY3VtZW50TGluaycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRsRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRsRGF0YTogZGxEYXRhLCBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG4vL2NvbXBvbmVudHNcbnZhciBIYXZlTm90QWRkZWRZZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbi8vIGhlbHBlciBmdW5jdGlvblxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBIZWxwZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hlbHBlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0SW5kaWNhdG9yJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhlbHBlclRleHQ6IEhlbHBlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTm90WWV0OiBIYXZlTm90QWRkZWRZZXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbFRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0O1xuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbWV0aG9kczogeyBvbmx5RGVwcmVjYXRlZFN0YXR1c01hcDogdXRpbHNfMS5vbmx5RGVwcmVjYXRlZFN0YXR1c01hcCB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRSZWZlcmVuY2UnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZlcmVuY2VEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlRGF0YTogcmVmZXJlbmNlRGF0YSwgaXNFdmVyeVZhbHVlTnVsbDogdXRpbHNfMS5pc0V2ZXJ5VmFsdWVOdWxsIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRUeXBlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0eXBlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHR5cGVEYXRhOiB0eXBlRGF0YSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0VEQnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0ZERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRyYW5zYWN0aW9uRWxlbWVudDogVHJhbnNhY3Rpb25FbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHRyYW5zYWN0aW9uID0gX2EudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctcmVsYXhlZCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRpdGxlc1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb25EYXRhID0gdHJhbnNhY3Rpb24udmFsdWUudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCB0cmFuc2FjdGlvbkxpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3RyYW5zYWN0aW9uL1wiKS5jb25jYXQodHJhbnNhY3Rpb24udmFsdWUuaWQpO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1lvdXIgQWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0eScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdUcmFuc2FjdGlvbiBMaXN0JyxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvdHJhbnNhY3Rpb25cIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnVHJhbnNhY3Rpb24nLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTWFuZGF0b3J5SWNvbiA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICByZXR1cm4gKHIudG9TdHJpbmcoKSA9PT0gJ3ZhbHVlJyB8fFxuICAgICAgICAgICAgICAgIHIudG9TdHJpbmcoKSA9PT0gJ3RyYW5zYWN0aW9uX3R5cGUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fZGF0ZScpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0aXZpdHlUaXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25EYXRhOiB0cmFuc2FjdGlvbkRhdGEsXG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uTGluazogdHJhbnNhY3Rpb25MaW5rLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBpc01hbmRhdG9yeUljb246IGlzTWFuZGF0b3J5SWNvbixcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vY29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgSGVscGVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIZWxwZXJUZXh0OiBIZWxwZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBBaWRUeXBlOiBJbmRleF8xLkFpZFR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZTogSW5kZXhfMS5UcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uRGF0ZTogSW5kZXhfMS5UcmFuc2FjdGlvbkRhdGUsXG4gICAgICAgIFZhbHVlOiBJbmRleF8xLlZhbHVlLFxuICAgICAgICBQcm92aWRlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5Qcm92aWRlck9yZ2FuaXphdGlvbixcbiAgICAgICAgUmVjZWl2ZXJPcmdhbml6YXRpb246IEluZGV4XzEuUmVjZWl2ZXJPcmdhbml6YXRpb24sXG4gICAgICAgIERpc2J1cnNlbWVudENoYW5uZWw6IEluZGV4XzEuRGlzYnVyc2VtZW50Q2hhbm5lbCxcbiAgICAgICAgU2VjdG9yOiBJbmRleF8xLlNlY3RvcixcbiAgICAgICAgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LFxuICAgICAgICBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLFxuICAgICAgICBGbG93VHlwZTogSW5kZXhfMS5GbG93VHlwZSxcbiAgICAgICAgRmluYW5jZVR5cGU6IEluZGV4XzEuRmluYW5jZVR5cGUsXG4gICAgICAgIFRpZWRTdGF0dXM6IEluZGV4XzEuVGllZFN0YXR1cyxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcHJlY2F0aW9uU3RhdHVzTWFwOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBkYXRhID0gX2EuZGF0YSwgdHlwZXMgPSBfYS50eXBlcywgZWxlbWVudERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMpO1xuICAgICAgICBmdW5jdGlvbiBnZXRMYW5ndWFnZXMobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeS5sYW5ndWFnZTsgfSkuam9pbignLCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudERhdGE6IGVsZW1lbnREYXRhLFxuICAgICAgICAgICAgZ2V0TGFuZ3VhZ2VzOiBnZXRMYW5ndWFnZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxudmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2FbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9hWzFdO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkxpc3QnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQWN0aW9uOiBEZWxldGVBY3Rpb25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhY3Rpdml0eSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0cmFuc2FjdGlvbnNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25zRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBhY3Rpdml0eUlkKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnWW91ciBBY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnVHJhbnNhY3Rpb24gTGlzdCcsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uc0RhdGE6IHRyYW5zYWN0aW9uc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkFpZFR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGF0RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdERhdGE6IGF0RGF0YSxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICBpc0V2ZXJ5VmFsdWVOdWxsOiB1dGlsc18xLmlzRXZlcnlWYWx1ZU51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkRlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0ZERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EaXNidXJzZW1lbnRDaGFubmVsJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2RlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogY29kZSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25GaW5hbmNlVHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZmluYW5jZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBmaW5hbmNlRGF0YTogZmluYW5jZURhdGEsIHR5cGU6IHR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRmxvd1R5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGZsb3dEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgZmxvd0RhdGE6IGZsb3dEYXRhLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblByb3ZpZGVyT3JnYW5pc2F0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBQb0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBQb0RhdGE6IFBvRGF0YSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25SZWNlaXZlck9yZ2FuaXNhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgUG9EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgUG9EYXRhOiBQb0RhdGEsIHR5cGU6IHR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50Q291bnRyeScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgY291bnRyeSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGNvdW50cnk6IGNvdW50cnksIHR5cGU6IHR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50UmVnaW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb3VudHJ5ID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY291bnRyeTogY291bnRyeSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25TZWN0b3InLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIHNlY3RvciA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWN0b3I6IHNlY3RvcixcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblRpZWRTdGF0dXMnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRzRGF0YTogdHNEYXRhLCB0eXBlOiB0eXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkRhdGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRhdGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkYXRlOiBkYXRlLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25UeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2RlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogY29kZSwgdHlwZTogdHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vLi4vY29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25WYWx1ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0IH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBdWRpdExpc3RpbmcnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBhdWRpdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBmZXRjaEF1ZGl0TGlzdCgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaEF1ZGl0TGlzdChhY3RpdmVfcGFnZSwgZmlsdGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkID0gZmFsc2U7IH1cbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL2F1ZGl0L3BhZ2UvXCIuY29uY2F0KGZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdWRpdERhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgYXVkaXREYXRhOiBhdWRpdERhdGEsIGlzRW1wdHk6IGlzRW1wdHksIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBmZXRjaEF1ZGl0TGlzdDogZmV0Y2hBdWRpdExpc3QsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRHcmFwaCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhYmVscyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHJvdW5kZWRMYWJlbHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBzaG93R3JhcGhMb2FkZXIgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2hvd0dyYXBoTG9hZGVyJyk7XG4gICAgICAgIHZhciBncmFwaEFtb3VudCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaEFtb3VudCcpO1xuICAgICAgICB2YXIgeWF4aXNUaWNrcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIG1heFZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBjaGFydCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGdyYXBoQ29sb3IgPSAnIzE3OTk3Qic7XG4gICAgICAgIHZhciB0b29sdGlwVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5jdXJyZW50Vmlldykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3B1Ymxpc2hlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbm8uIG9mIHB1Ymxpc2hlciByZWdpc3RyYXRpb24nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBuby4gb2YgYWN0aXZpdGllcyBhZGRlZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBudW1iZXIgb2YgdXNlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hhcnRPcHRpb25zID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogNSxcbiAgICAgICAgICAgICAgICB6b29tOiB7XG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCwgLy8gQWRqdXN0IHRoZSBsZWZ0IHBhZGRpbmcgdmFsdWUgYXMgbmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWFya2Vyczoge1xuICAgICAgICAgICAgICAgIHNpemU6IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aCA+IDEgPyAwIDogMixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFsnIzE3OTk3QiddLFxuICAgICAgICAgICAgICAgIGhvdmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDYsIC8vIEN1c3RvbWl6ZSB0aGUgbWFya2VyIHNpemUgb24gaG92ZXJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0cm9rZToge1xuICAgICAgICAgICAgICAgIGN1cnZlOiAnc3RyYWlnaHQnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yczogW2dyYXBoQ29sb3JdLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgIGN1c3RvbTogZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBfYS5zZXJpZXMsIHNlcmllc0luZGV4ID0gX2Euc2VyaWVzSW5kZXgsIGRhdGFQb2ludEluZGV4ID0gX2EuZGF0YVBvaW50SW5kZXgsIHcgPSBfYS53O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0RGF5ID0gZnVuY3Rpb24gKGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZm9ybWF0dGVkRGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiPGRpdiBjbGFzcz1cXFwicC00XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj4gXCIuY29uY2F0KGdldERheSh3Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHNbZGF0YVBvaW50SW5kZXhdKSwgXCI8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCB0ZXh0LW4tNTAgc3BhY2UteC00IGp1c3RpZnktYmV0d2VlblxcXCI+PGRpdj5cIikuY29uY2F0KHRvb2x0aXBUZXh0LnZhbHVlLCBcIjwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb250LWJvbGRcXFwiPlwiKS5jb25jYXQoc2VyaWVzW3Nlcmllc0luZGV4XVtkYXRhUG9pbnRJbmRleF0sIFwiPC9kaXY+PC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cIik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IDMsXG4gICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAyMCwgLy8gSW5jcmVhc2UgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGxhc3QgdGljayBhbmQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGNoYXJ0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcm90YXRlOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeWF4aXM6IHtcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBtYXhWYWx1ZS52YWx1ZSArIDMsXG4gICAgICAgICAgICAgICAgdGlja0Ftb3VudDogbWF4VmFsdWUudmFsdWUgPiA0ID8gNSA6IG1heFZhbHVlLnZhbHVlICsgMyxcbiAgICAgICAgICAgICAgICAvLyBBZGRpdGlvbmFsIHNwYWNpbmcgb3B0aW9uc1xuICAgICAgICAgICAgICAgIG9mZnNldFk6IDEwLFxuICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gY2hhcnQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jaGFydCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLncuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgbGFiZWxzLnZhbHVlLmxlbmd0aDsgY291bnQrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcm91bmRlZExhYmVscy52YWx1ZS5pbmNsdWRlcyhNYXRoLnJvdW5kKGxhYmVscy52YWx1ZVtjb3VudF0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlLnB1c2goTWF0aC5yb3VuZChsYWJlbHMudmFsdWVbY291bnRdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kZWRMYWJlbHMudmFsdWVbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBzZXJpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGVza3RvcHMnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBncmFwaEFtb3VudC52YWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdyYXBoQW1vdW50LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IDA7XG4gICAgICAgICAgICB5YXhpc1RpY2tzLnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heFZhbHVlLnZhbHVlIDwgZ3JhcGhBbW91bnQudmFsdWVbaV1bJ3knXSkge1xuICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IGdyYXBoQW1vdW50LnZhbHVlW2ldWyd5J107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VyaWVzWydkYXRhJ10gPSBncmFwaEFtb3VudC52YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYWJlbHM6IGxhYmVscywgcm91bmRlZExhYmVsczogcm91bmRlZExhYmVscywgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgeWF4aXNUaWNrczogeWF4aXNUaWNrcywgbWF4VmFsdWU6IG1heFZhbHVlLCBjaGFydDogY2hhcnQsIGdyYXBoQ29sb3I6IGdyYXBoQ29sb3IsIHByb3BzOiBwcm9wcywgdG9vbHRpcFRleHQ6IHRvb2x0aXBUZXh0LCBjaGFydE9wdGlvbnM6IGNoYXJ0T3B0aW9ucywgc2VyaWVzOiBzZXJpZXMsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgVGFibGVMb2FkZXJDb21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRMaXN0U2VjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0YWJsZURhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlSGVhZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3RhYmxlTmF2J10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2IsIF9jO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hdkxpc3QgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZpdHkgU3RhdHVzJywgYXBpUGFyYW1zOiAnc3RhdHVzJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IEFkZGVkJywgYXBpUGFyYW1zOiAnbWV0aG9kJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IENvbXBsZXRpb24nLCBhcGlQYXJhbXM6ICdjb21wbGV0ZW5lc3MnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBwdWJsaXNoZXJOYXZMaXN0ID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ09yZ2FuaXNhdGlvbiBUeXBlJywgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnRGF0YSBMaWNlbmNlJywgYXBpUGFyYW1zOiAnZGF0YS1saWNlbnNlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0NvdW50cnknLCBhcGlQYXJhbXM6ICdjb3VudHJ5JyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1JlZ2lzdHJhdGlvbiBUeXBlJywgYXBpUGFyYW1zOiAncmVnaXN0cmF0aW9uLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnU2V0dXAgQ29tcGxldGVuZXNzJywgYXBpUGFyYW1zOiAnc2V0dXAnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjdXJyZW50cGFnZSA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgcmVzZXRwYWdpbmF0aW9uID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8yLnJlZikoeyBvcmRlckJ5OiAnJywgc29ydDogJycgfSk7XG4gICAgICAgIHZhciBzb3J0RWxlbWVudCA9ICgwLCB2dWVfMi5yZWYpKHsgbGFiZWw6ICcnLCBhcGlQYXJhbXM6ICcnIH0pO1xuICAgICAgICB2YXIgdXNlck5hdmxpc3QgPSBbeyBsYWJlbDogJ3VzZXInLCBhcGlQYXJhbXM6ICcnIH1dO1xuICAgICAgICB2YXIgY3VycmVudEl0ZW0gPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjdXJyZW50TmF2TGlzdCA9ICgwLCB2dWVfMi5yZWYpKHB1Ymxpc2hlck5hdkxpc3QpO1xuICAgICAgICB2YXIgdGl0bGUgPSAoMCwgdnVlXzIucmVmKSgoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNvcnRUYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0cmlnZ2VycGFnaW5hdGlvbiA9IGZ1bmN0aW9uIChwYWdlKSB7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IHBhZ2U7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZmlsdGVyLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSAxO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY3VycmVudFZpZXc7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gMTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0geyBsYWJlbDogJ0FjdGl2aXR5IFN0YXR1cycsIGFwaVBhcmFtczogJ3N0YXR1cycgfTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TmF2TGlzdC52YWx1ZSA9IGFjdGl2aXR5TmF2TGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSBwdWJsaXNoZXJOYXZMaXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSB1c2VyTmF2bGlzdDtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAnJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICAgICAgYWN0aXZlQ2xhc3MudmFsdWUgPSAoX2EgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsO1xuICAgICAgICAgICAgdGl0bGUudmFsdWUgPSAoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gKHByb3BzLnRhYmxlRGF0YS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoISh0aXRsZS52YWx1ZSA9PT0gJ1JlZ2lzdHJhdGlvbiBUeXBlJyB8fFxuICAgICAgICAgICAgICAgICAgICB0aXRsZS52YWx1ZSA9PT0gJ1NldHVwIENvbXBsZXRlbmVzcycpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2IgPSAoX2EgPSBwcm9wcy50YWJsZURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGFjdGl2ZUNsYXNzID0gKDAsIHZ1ZV8yLnJlZikoKF9jID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sYWJlbCk7XG4gICAgICAgIHZhciBOYXZpZ2F0ZVdpdGhGaWx0ZXIgPSBmdW5jdGlvbiAocGFnZSwga2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCEhcHJvcHMuc3RhcnREYXRlICYmICEhcHJvcHMuZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCIuY29uY2F0KHBhZ2UsIFwiP1wiKS5jb25jYXQoa2V5LCBcIj1cIikuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiLmNvbmNhdChwYWdlLCBcIj9cIikuY29uY2F0KGtleSwgXCI9XCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaFRhYmxlRGF0YSA9IGZ1bmN0aW9uIChpdGVtLCB0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UgPT09IHZvaWQgMCkgeyB0YWJDaGFuZ2UgPSB0cnVlOyB9XG4gICAgICAgICAgICBhY3RpdmVDbGFzcy52YWx1ZSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHRpdGxlLnZhbHVlID0gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgc29ydEVsZW1lbnQudmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgZW1pdCgndGFibGVOYXYnLCBpdGVtLCBmaWx0ZXIsIGN1cnJlbnRwYWdlLnZhbHVlLCB0YWJDaGFuZ2UpO1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2dnbGVTb3J0ID0gZnVuY3Rpb24gKG9yZGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIudmFsdWUuc29ydCA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChmaWx0ZXIudmFsdWUuc29ydCA9ICdkZXNjJylcbiAgICAgICAgICAgICAgICA6IChmaWx0ZXIudmFsdWUuc29ydCA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XG4gICAgICAgICAgICBzb3J0VGFibGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlTmVzcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdjb21wbGV0ZU5lc3MnKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVnaXN0cmF0aW9uVHlwZScpO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dUYWJsZUxvYWRlcicpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFjdGl2aXR5TmF2TGlzdDogYWN0aXZpdHlOYXZMaXN0LCBwdWJsaXNoZXJOYXZMaXN0OiBwdWJsaXNoZXJOYXZMaXN0LCBjdXJyZW50cGFnZTogY3VycmVudHBhZ2UsIHJlc2V0cGFnaW5hdGlvbjogcmVzZXRwYWdpbmF0aW9uLCBmaWx0ZXI6IGZpbHRlciwgc29ydEVsZW1lbnQ6IHNvcnRFbGVtZW50LCB1c2VyTmF2bGlzdDogdXNlck5hdmxpc3QsIGN1cnJlbnRJdGVtOiBjdXJyZW50SXRlbSwgY3VycmVudE5hdkxpc3Q6IGN1cnJlbnROYXZMaXN0LCB0aXRsZTogdGl0bGUsIHNvcnRUYWJsZTogc29ydFRhYmxlLCB0cmlnZ2VycGFnaW5hdGlvbjogdHJpZ2dlcnBhZ2luYXRpb24sIHNob3dOb0RhdGFDb21wb25lbnQ6IHNob3dOb0RhdGFDb21wb25lbnQsIGFjdGl2ZUNsYXNzOiBhY3RpdmVDbGFzcywgTmF2aWdhdGVXaXRoRmlsdGVyOiBOYXZpZ2F0ZVdpdGhGaWx0ZXIsIGZldGNoVGFibGVEYXRhOiBmZXRjaFRhYmxlRGF0YSwgdG9nZ2xlU29ydDogdG9nZ2xlU29ydCwgY29tcGxldGVOZXNzOiBjb21wbGV0ZU5lc3MsIHJlZ2lzdHJhdGlvblR5cGU6IHJlZ2lzdHJhdGlvblR5cGUsIHNob3dUYWJsZUxvYWRlcjogc2hvd1RhYmxlTG9hZGVyLCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgdHJ1bmNhdGVUZXh0OiB1dGlsc18xLnRydW5jYXRlVGV4dCwgVGFibGVMb2FkZXJDb21wb25lbnQ6IFRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlXCIpKTtcbnZhciBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIikpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkUGFnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnROYXYgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0YWJsZURhdGEgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBEYXRlTGFiZWwgPSAoMCwgdnVlXzIucmVmKSgnUmVnaXN0ZXJlZCBkYXRlOicpO1xuICAgICAgICB2YXIgc3RhcnREYXRlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZW5kRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGdyYXBoQW1vdW50ID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlTGFiZWwgPSB7XG4gICAgICAgICAgICBwdWJsaXNoZXI6ICdSZWdpc3RlcmVkIGRhdGU6JyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnQWN0aXZpdHkgQWRkZWQgb246JyxcbiAgICAgICAgICAgIHVzZXI6ICdVc2VyIENyZWF0ZWQgRGF0ZTonLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3VycmVudFZpZXcgPSAoMCwgdnVlXzIucmVmKSgncHVibGlzaGVyJyk7XG4gICAgICAgIHZhciBjb21wbGV0ZU5lc3MgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYW5kbGVDaGFuZ2VUYWJsZU5hdiA9IGZ1bmN0aW9uIChpdGVtLCBmaWx0ZXIsIHBhZ2UsIHRhYkNoYW5nZSkge1xuICAgICAgICAgICAgaWYgKHRhYkNoYW5nZSA9PT0gdm9pZCAwKSB7IHRhYkNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUub3JkZXJCeSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZS5zb3J0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50TmF2LnZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGZpbHRlci52YWx1ZSwgcGFnZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGVSYW5nZURhdGUoJycsICcnKTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKCk7XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgZG93bmxvYWRSZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZS52YWx1ZSAmJiBlbmREYXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvZG93bmxvYWRcIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBcIlwiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCItcmVwb3J0LmNzdlwiKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdyYXBoRGF0YUZvcm1hdHRlciA9IGZ1bmN0aW9uIChncmFwaERhdGEpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGUgaW4gZ3JhcGhEYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ01NTSBERCBZWVlZJyksXG4gICAgICAgICAgICAgICAgICAgIHk6IGdyYXBoRGF0YVtkYXRlXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdyYXBoQW1vdW50LnZhbHVlLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaEdyYXBoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dHcmFwaExvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9jb3VudC9cIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhBbW91bnQudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICBncmFwaFRvdGFsLnZhbHVlID0gcmVzLmRhdGEuZGF0YVsnY291bnQnXTtcbiAgICAgICAgICAgICAgICBncmFwaERhdGFGb3JtYXR0ZXIocmVzLmRhdGEuZGF0YVsnZ3JhcGgnXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93R3JhcGhMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlRGF0ZSA9IGZ1bmN0aW9uIChzdGFydCwgZW5kLCB0eXBlKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSAnJzsgfVxuICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHR5cGU7XG4gICAgICAgICAgICBpZiAoc3RhcnQgIT0gJzE5OTAtMTItMzEnKSB7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmREYXRlLnZhbHVlID0gZW5kO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBmZXRjaFRhYmxlRGF0YSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBjdXJyZW50Vmlldy52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgRGF0ZUxhYmVsLnZhbHVlID0gKF9hID0gZGF0ZUxhYmVsW2N1cnJlbnRWaWV3LnZhbHVlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY3VycmVudFZpZXcudmFsdWU7XG4gICAgICAgICAgICBzdGFydERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGVuZERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmV0Y2hUYWJsZURhdGEgPSBmdW5jdGlvbiAoZmlsdGVyLCBwYWdlKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB2b2lkIDApIHsgZmlsdGVyID0geyBvcmRlckJ5OiAnJywgc29ydDogJycgfTsgfVxuICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHZvaWQgMCkgeyBwYWdlID0gJzEnOyB9XG4gICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhY3RpdmVUYWIgPSBjdXJyZW50TmF2LnZhbHVlWydhcGlQYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIub3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyLm9yZGVyQnkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBwYWdlKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuc29ydCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIGZpbHRlci5zb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGFydERhdGUudmFsdWUgJiYgZW5kRGF0ZS52YWx1ZSAmJiBjdXJyZW50TmF2LnZhbHVlLmxhYmVsICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdzdGFydF9kYXRlJywgc3RhcnREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL1wiKS5jb25jYXQoYWN0aXZlVGFiKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZpZXcudmFsdWUgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIgIT09ICdzZXR1cCcgJiYgYWN0aXZlVGFiICE9PSAncmVnaXN0cmF0aW9uLXR5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVMaXN0ID0gKF9hID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvZGVMaXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iamVjdExlbmd0aCA9IChfYyA9IChfYiA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wYWdpbmF0ZWREYXRhLmRhdGEubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtSW5QYWdpbmF0ZWREYXRhID0gKF9kID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnBhZ2luYXRlZERhdGEuZGF0YVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHVibGlzaGVyVHlwZUtleSA9IGl0ZW1JblBhZ2luYXRlZERhdGFbKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGFjdGl2ZVRhYildO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29kZUxpc3RbcHVibGlzaGVyVHlwZUtleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwdWJsaXNoZXJUeXBlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogaXRlbUluUGFnaW5hdGVkRGF0YS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZVRhYiA9PT0gJ3JlZ2lzdHJhdGlvbi10eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uVHlwZS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTmVzcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlID09PSAndXNlcicgfHwgY3VycmVudFZpZXcudmFsdWUgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2NvbXBsZXRlTmVzcycsIGNvbXBsZXRlTmVzcyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncmVnaXN0cmF0aW9uVHlwZScsIHJlZ2lzdHJhdGlvblR5cGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoQW1vdW50JywgZ3JhcGhBbW91bnQpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoVG90YWwnLCBncmFwaFRvdGFsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzaG93VGFibGVMb2FkZXInLCBzaG93VGFibGVMb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Nob3dHcmFwaExvYWRlcicsIHNob3dHcmFwaExvYWRlcik7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY3VycmVudFZpZXcnLCBjdXJyZW50Vmlldyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGN1cnJlbnROYXY6IGN1cnJlbnROYXYsIHRhYmxlRGF0YTogdGFibGVEYXRhLCBEYXRlTGFiZWw6IERhdGVMYWJlbCwgc3RhcnREYXRlOiBzdGFydERhdGUsIGVuZERhdGU6IGVuZERhdGUsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgZ3JhcGhUb3RhbDogZ3JhcGhUb3RhbCwgc2hvd1RhYmxlTG9hZGVyOiBzaG93VGFibGVMb2FkZXIsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRhdGVMYWJlbDogZGF0ZUxhYmVsLCBjdXJyZW50VmlldzogY3VycmVudFZpZXcsIGNvbXBsZXRlTmVzczogY29tcGxldGVOZXNzLCByZWdpc3RyYXRpb25UeXBlOiByZWdpc3RyYXRpb25UeXBlLCBoYW5kbGVDaGFuZ2VUYWJsZU5hdjogaGFuZGxlQ2hhbmdlVGFibGVOYXYsIHByb3BzOiBwcm9wcywgZG93bmxvYWRSZXBvcnQ6IGRvd25sb2FkUmVwb3J0LCBncmFwaERhdGFGb3JtYXR0ZXI6IGdyYXBoRGF0YUZvcm1hdHRlciwgZmV0Y2hHcmFwaERhdGE6IGZldGNoR3JhcGhEYXRhLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBmZXRjaFRhYmxlRGF0YTogZmV0Y2hUYWJsZURhdGEsIERhc2hib2FyZFN0YXRzU2VjdGlvbjogRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhc2hib2FyZExpc3RTZWN0aW9uOiBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMS5kZWZhdWx0LCBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LCBCdXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGFzaGJvYXJkR3JhcGhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkR3JhcGgudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRTdGF0c1NlY3Rpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b3RhbCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBpbmFjdGl2ZVB1Ymxpc2hlciA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFJlZ2lzdGVyZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRQdWJsaXNoZXIgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKSh7IHN0YXR1czogZmFsc2UsIHRleHQ6ICcnIH0pO1xuICAgICAgICB2YXIgc2hvd1N0YXRzTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaFRvdGFsJyk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHNob3dQdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dHcmFwaExvYWRlcicpO1xuICAgICAgICB2YXIgdXNlcklkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hTdGF0c0RhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtYXREYXRlID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdNTU1NIERELCBZWVlZJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm94eVVzZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZS50ZXh0ID0gJ1Byb3h5IExvZ2luJztcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL3Byb3h5LW9yZ2FuaXNhdGlvbi9cIi5jb25jYXQodXNlcklkLnZhbHVlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmN1cnJlbnRWaWV3OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFN0YXRzRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZldGNoU3RhdHNEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1N0YXRzTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChwcm9wcy5jdXJyZW50VmlldywgXCIvc3RhdHNcIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvdGFsLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgIGxhc3RSZWdpc3RlcmVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5sYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICBsYXN0VXBkYXRlZFB1Ymxpc2hlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgbGFzdFVwZGF0ZWRBY3Rpdml0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY3VycmVudFZpZXcgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IGxhc3RSZWdpc3RlcmVkLnZhbHVlLnVzZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgIGluYWN0aXZlUHVibGlzaGVyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5pbkFjdGl2ZVB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudXNlcklkO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1B1Ymxpc2hlclN0YXRzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyU3RhdHMudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNob3dTdGF0c0xvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdG90YWw6IHRvdGFsLCBpbmFjdGl2ZVB1Ymxpc2hlcjogaW5hY3RpdmVQdWJsaXNoZXIsIHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTogcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5LCBsYXN0UmVnaXN0ZXJlZDogbGFzdFJlZ2lzdGVyZWQsIGxhc3RVcGRhdGVkUHVibGlzaGVyOiBsYXN0VXBkYXRlZFB1Ymxpc2hlciwgbGFzdFVwZGF0ZWRBY3Rpdml0eTogbGFzdFVwZGF0ZWRBY3Rpdml0eSwgbG9hZGVyOiBsb2FkZXIsIHNob3dTdGF0c0xvYWRlcjogc2hvd1N0YXRzTG9hZGVyLCBncmFwaFRvdGFsOiBncmFwaFRvdGFsLCBwdWJsaXNoZXJTdGF0czogcHVibGlzaGVyU3RhdHMsIHNob3dQdWJsaXNoZXJTdGF0czogc2hvd1B1Ymxpc2hlclN0YXRzLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgdXNlcklkOiB1c2VySWQsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHByb3h5VXNlcjogcHJveHlVc2VyLCBmZXRjaFN0YXRzRGF0YTogZmV0Y2hTdGF0c0RhdGEsIERhc2hib2FyZEdyYXBoOiBEYXNoYm9hcmRHcmFwaF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIHRydW5jYXRlVGV4dDogdXRpbHNfMS50cnVuY2F0ZVRleHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVVwbG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGZpbGUgPSAoMCwgdnVlXzIucmVmKSgpLCBlcnJvciA9ICgwLCB2dWVfMi5yZWYpKCcnKSwgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ1BsZWFzZSBXYWl0Jyk7XG4gICAgICAgIGZ1bmN0aW9uIHVwbG9hZEZpbGUoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdVcGxvYWRpbmcgLmNzdi8ueG1sIGZpbGUnO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXR5ID0gZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggPyBmaWxlLnZhbHVlLmZpbGVzWzBdIDogJyc7XG4gICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pbXBvcnQnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L2xpc3QnO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gT2JqZWN0LnZhbHVlcyhyZXMuZGF0YS5lcnJvcnMpLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gJ0Vycm9yIGhhcyBvY2N1cmVkIHdoaWxlIHVwbG9hZGluZyBmaWxlLic7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZEV4Y2VsKCkge1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIHVybDogJ2ltcG9ydC9kb3dubG9hZC9jc3YnLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gJ0ltcG9ydF9BY3Rpdml0eV9DU1ZfVGVtcGxhdGUuY3N2JztcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBmaWxlOiBmaWxlLCBlcnJvcjogZXJyb3IsIGxvYWRlcjogbG9hZGVyLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlLCBkb3dubG9hZEV4Y2VsOiBkb3dubG9hZEV4Y2VsLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVhsc1VwbG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgeGxzSW5kaWNhdG9yTW91bnRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB1cGxvYWRUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNob3dEb3dubG9hZERyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkQ29kZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjdXJyZW50QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNEYXRhID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NhbmNlbE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgc2VsZWN0QWxsVmFsdWUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1cGxvYWRDb21wbGV0ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsQ291bnQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGZpbGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZXJyb3IgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ1BsZWFzZSBXYWl0Jyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2VhcmNoVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24udmFsdWUgPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgPyAoZGlyZWN0aW9uLnZhbHVlID0gJ2Rlc2MnKVxuICAgICAgICAgICAgICAgIDogKGRpcmVjdGlvbi52YWx1ZSA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYWN0aXZpdHlMZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHVwbG9hZFR5cGUgPT09IG51bGwgfHwgdXBsb2FkVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBsb2FkVHlwZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tEb3dubG9hZDtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudC52YWx1ZSA9IHJlcy5kYXRhLmZpbGVfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSByZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSAhIXJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdjb21wbGV0ZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tEb3dubG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29kZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcGlVcmwsIGFjdGl2aXRpZXNfMSwgcmVxLCBibG9iLCBsaW5rO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLWNvZGVzLz9hY3Rpdml0aWVzPWFsbCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzXzEgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQtY29kZXMvP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzXzEsIFwiXVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcGlVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmxvYiA9IG5ldyBCbG9iKFtyZXEuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gJ2lkZW50aWZpZXJzLnhsc3gnO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGF0ZS5jYW5jZWxVcGxvYWQ7XG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNhbmNlbEltcG9ydCgpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBpbXBvcnRBbnl3YXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwbG9hZEZpbGUoKTtcbiAgICAgICAgICAgICAgICB1cGxvYWRUeXBlLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNlbGVjdEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPYmplY3QudmFsdWVzKGFjdGl2aXRpZXMuZGF0YSkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goYWN0aXZpdGllcy5kYXRhW2ldWydpZCddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiB1cGxvYWRGaWxlKCkge1xuICAgICAgICAgICAgaWYgKCF4bHNEYXRhLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ0ZldGNoaW5nIC54bHMgZmlsZSc7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXR5ID0gZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggPyBmaWxlLnZhbHVlLmZpbGVzWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgdmFyIHhsc1R5cGUgPSB1cGxvYWRUeXBlO1xuICAgICAgICAgICAgICAgIHZhciBjb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpdml0eScsIGFjdGl2aXR5KTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgneGxzVHlwZScsIHhsc1R5cGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvaW1wb3J0L3hscycsIGRhdGEsIGNvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCAmJiAoKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5lcnJvcnMgJiYgT2JqZWN0LnZhbHVlcyhyZXMuZGF0YS5lcnJvcnMpLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gJ0Vycm9yIGhhcyBvY2N1cmVkIHdoaWxlIHVwbG9hZGluZyBmaWxlLic7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmaWxlLnZhbHVlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hBY3Rpdml0aWVzKGFjdGl2ZV9wYWdlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT09IHZvaWQgMCkgeyBkaXJlY3Rpb24gPSAnJzsgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvcGFnZS9cIi5jb25jYXQoYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzYnKTtcbiAgICAgICAgICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdvcmRlckJ5JywgJ3VwZGF0ZWRfYXQnKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlYXJjaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncScsIHNlYXJjaFZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9ICFyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbmNlbEltcG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvaW1wb3J0L3hsc1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB4bHNEYXRhLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbGUudmFsdWUudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwb2xsaW5nRm9yWGxzU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWVzc2FnZSkgPT09ICdTdGFydGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSAoX2IgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG90YWxfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IChfYyA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wcm9jZXNzZWRfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSAhKChfZCA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2UgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfZiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5tZXNzYWdlKSA9PT0gJ1Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoISgoX2ggPSAoX2cgPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLmRhdGEpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5zdWNjZXNzKSB8fCAoKF9rID0gKF9qID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5kYXRhKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9tID0gKF9sID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbC5kYXRhKSA9PT0gbnVsbCB8fCBfbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX20ubWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja1hsc3N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3Byb2dyZXNzX3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eU5hbWUudmFsdWUgPSAoX2IgPSAoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0YXR1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eS52YWx1ZSA9IG1hcEFjdGl2aXR5TmFtZShhY3Rpdml0eU5hbWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2QgPSAoX2MgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN0YXR1cykgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKChfZiA9IChfZSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uuc3RhdHVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yuc3RhdHVzKSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfaCA9IChfZyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuc3RhdHVzKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2gubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yWGxzU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNGYWlsZWRNZXNzYWdlJywgeGxzRmFpbGVkTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdHlMZW5ndGgnLCBhY3Rpdml0eUxlbmd0aCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY29tcGxldGVkJywgdXBsb2FkQ29tcGxldGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Byb2Nlc3NpbmcnLCBwcm9jZXNzaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0luZGljYXRvck1vdW50ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxKTtcbiAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgJiYgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgeGxzSW5kaWNhdG9yTW91bnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdhY3Rpdml0eUxlbmd0aCcsIGFjdGl2aXR5TGVuZ3RoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNJbmRpY2F0b3JNb3VudGVkJywgeGxzSW5kaWNhdG9yTW91bnRlZCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRG93bmxvYWRTdGF0dXMnLCB4bHNEb3dubG9hZFN0YXR1cyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRBcGlVcmwnLCBkb3dubG9hZEFwaVVybCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdmaWxlQ291bnQnLCBmaWxlQ291bnQpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB4bHNJbmRpY2F0b3JNb3VudGVkOiB4bHNJbmRpY2F0b3JNb3VudGVkLCB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLCB1cGxvYWRUeXBlOiB1cGxvYWRUeXBlLCBzaG93RG93bmxvYWREcm9wZG93bjogc2hvd0Rvd25sb2FkRHJvcGRvd24sIGFjdGl2aXR5TmFtZTogYWN0aXZpdHlOYW1lLCBmaWxlQ291bnQ6IGZpbGVDb3VudCwgeGxzRG93bmxvYWRTdGF0dXM6IHhsc0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBzaG93RG93bmxvYWRDb2RlOiBzaG93RG93bmxvYWRDb2RlLCBpc0VtcHR5OiBpc0VtcHR5LCB4bHNGYWlsZWQ6IHhsc0ZhaWxlZCwgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB4bHNEYXRhOiB4bHNEYXRhLCBzaG93Q2FuY2VsTW9kZWw6IHNob3dDYW5jZWxNb2RlbCwgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0QWxsVmFsdWU6IHNlbGVjdEFsbFZhbHVlLCB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCwgZmlsZTogZmlsZSwgZXJyb3I6IGVycm9yLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc3RvcmU6IHN0b3JlLCBzZWFyY2hWYWx1ZTogc2VhcmNoVmFsdWUsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBwcm9jZXNzaW5nOiBwcm9jZXNzaW5nLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBkb3dubG9hZEFwaVVybDogZG93bmxvYWRBcGlVcmwsIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZywgcGE6IHBhLCBtYXBBY3Rpdml0eU5hbWU6IG1hcEFjdGl2aXR5TmFtZSwgYWN0aXZpdHlMZW5ndGg6IGFjdGl2aXR5TGVuZ3RoLCBjaGVja0Rvd25sb2FkU3RhdHVzOiBjaGVja0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvZGU6IGRvd25sb2FkQ29kZSwgaW1wb3J0QW55d2F5OiBpbXBvcnRBbnl3YXksIHNlbGVjdEFsbDogc2VsZWN0QWxsLCB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlLCBmZXRjaEFjdGl2aXRpZXM6IGZldGNoQWN0aXZpdGllcywgY2FuY2VsSW1wb3J0OiBjYW5jZWxJbXBvcnQsIHBvbGxpbmdGb3JYbHNTdGF0dXM6IHBvbGxpbmdGb3JYbHNTdGF0dXMsIGNoZWNrWGxzc3RhdHVzOiBjaGVja1hsc3N0YXR1cywgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBYbHNVcGxvYWRJbmRpY2F0b3I6IFhsc1VwbG9hZEluZGljYXRvcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgUHVibGlzaFNlbGVjdGVkOiBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIEltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZVwiKSk7XG52YXIgTGlzdEVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vTGlzdEVsZW1lbnQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSW1wb3J0TGlzdCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgYWN0aXZpdGllc0xlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VsZWN0QWxsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKCdQbGVhc2UgV2FpdCcpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0YWJsZVdpZHRoID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdGltZXI7XG4gICAgICAgIHZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgdnVlXzIubmV4dFRpY2spKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoLnZhbHVlID0gdGFibGVSb3cgPT09IG51bGwgfHwgdGFibGVSb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlUm93LnZhbHVlWycwJ10uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ1BsZWFzZSBXYWl0JztcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgLmdldCgnL2ltcG9ydC9jaGVja19zdGF0dXMnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNMZW5ndGgudmFsdWUgPSByZXMuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzID09PSAnZXJyb3InIHx8ICghcmVzLmRhdGEuZGF0YSAmJiBjb3VudCA+PSA0MCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZ2V0RGltZW5zaW9ucywgMjAwKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy5pbmRleE9mKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlIC0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZWxlY3RBbGxBY3Rpdml0aWVzKCkge1xuICAgICAgICAgICAgc2VsZWN0QWxsLnZhbHVlID0gIXNlbGVjdEFsbC52YWx1ZTtcbiAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy5pbmRleE9mKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZpdGllc1thY3Rpdml0eV9pZF1bJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMucHVzaChhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpbXBvcnRBY3Rpdml0aWVzKCkge1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdJbXBvcnRpbmcgLmNzdi8ueG1sIGZpbGUnO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaW1wb3J0L2FjdGl2aXR5Jywge1xuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBmaWxldHlwZTogJ2NzdicsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQsIGFjdGl2aXRpZXNMZW5ndGg6IGFjdGl2aXRpZXNMZW5ndGgsIGxvYWRlcjogbG9hZGVyLCBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgdGFibGVSb3c6IHRhYmxlUm93LCB0YWJsZVdpZHRoOiB0YWJsZVdpZHRoLCB0aW1lcjogdGltZXIsIGdldERpbWVuc2lvbnM6IGdldERpbWVuc2lvbnMsIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzLCBzZWxlY3RBbGxBY3Rpdml0aWVzOiBzZWxlY3RBbGxBY3Rpdml0aWVzLCBpbXBvcnRBY3Rpdml0aWVzOiBpbXBvcnRBY3Rpdml0aWVzLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBsYWNlaG9sZGVyOiBJbXBvcnRQbGFjZWhvbGRlcl92dWVfMS5kZWZhdWx0LCBMaXN0RWxlbWVudDogTGlzdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRQbGFjZWhvbGRlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgU2hpbW1lcjogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0xpc3RFbGVtZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDAgfSxcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3NlbGVjdEVsZW1lbnQnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDcml0aWNhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dXYXJuaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUVycm9yKCkge1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VsZWN0RWxlbWVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgZW1pdCgnc2VsZWN0RWxlbWVudCcsIGluZGV4KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0Vycm9yLnZhbHVlID0gIXNob3dFcnJvci52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoZXJyb3JUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIC8vIGlmIChPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eSkuaW5kZXhPZignZXJyb3JzJykgIT09IC0xKSB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnNlbGVjdGVkQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGVjdGVkRGF0YSA9IEpTT04ucGFyc2UocHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCBzZWxlY3RlZERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdGllcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhY3RpdmU6IGFjdGl2ZSwgc2hvd0NyaXRpY2FsOiBzaG93Q3JpdGljYWwsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBzaG93V2FybmluZzogc2hvd1dhcm5pbmcsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIGNyaXRpY2FsVG9nZ2xlOiBjcml0aWNhbFRvZ2dsZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCB3YXJuaW5nVG9nZ2xlOiB3YXJuaW5nVG9nZ2xlLCB0b2dnbGVFcnJvcjogdG9nZ2xlRXJyb3IsIHNlbGVjdEVsZW1lbnQ6IHNlbGVjdEVsZW1lbnQsIGNvdW50RXJyb3JzOiBjb3VudEVycm9ycywgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGU6IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlLCBlcnJvckFjY29yZGlvblRvZ2dsZTogZXJyb3JBY2NvcmRpb25Ub2dnbGUsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgd2FybmluZ0FjY29yZGlvblRvZ2dsZTogd2FybmluZ0FjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgWGxzTGlzdEVycm9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgICBpbXBvcnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2xvYmFsRXJyb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlcnJvckNvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzb3J0T3JkZXIgPSAoMCwgdnVlXzIucmVmKSgnYXNjZWRpbmcnKTtcbiAgICAgICAgdmFyIHRhYmxlUm93ID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKCdBZGRpbmcgYWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0dMb2JhbEVycm9yID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBzZWxlY3RlZENvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzTGVuZ3RoID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciB0YWJsZVdpZHRoID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZ2V0RGltZW5zaW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgKDAsIHZ1ZV8yLm5leHRUaWNrKSgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVXaWR0aC52YWx1ZSA9IChfYSA9IHRhYmxlUm93ID09PSBudWxsIHx8IHRhYmxlUm93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZVJvdy52YWx1ZVsnMCddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgc29ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNvcnRPcmRlci52YWx1ZSA9PT0gJ2FzY2VuZGluZydcbiAgICAgICAgICAgICAgICA/IChzb3J0T3JkZXIudmFsdWUgPSAnZGVzY2VuZGluZycpXG4gICAgICAgICAgICAgICAgOiAoc29ydE9yZGVyLnZhbHVlID0gJ2FzY2VuZGluZycpO1xuICAgICAgICAgICAgdmFyIHNvcnRlZERhdGEgPSBwcm9wcy5pbXBvcnREYXRhO1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDwgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVzdWx0JzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZ2V0RGltZW5zaW9ucygpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICAgICAgY2hlY2tDcml0aWNhbEVycm9yKCk7XG4gICAgICAgICAgICBpZiAocHJvcHMuZ2xvYmFsRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzaG93SWRlbnRpZmllckVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHByb3BzLmltcG9ydERhdGEubGVuZ3RoO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IFwiQWRkaW5nIFwiLmNvbmNhdChwcm9wcy5zdGF0dXMudGVtcGxhdGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNhbmNlbEltcG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNob3dHTG9iYWxFcnJvci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L3hscyc7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkSWRlbnRpZmllckVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRleHQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLmdsb2JhbEVycm9yID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRleHQgPSBPYmplY3QudmFsdWVzKHByb3BzLmdsb2JhbEVycm9yKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmaWxlID0gbmV3IEZpbGUoWydcXHVmZWZmJyArIHRleHRdLCAnaWRlbnRpZmllci1lcnJvcnMudHh0Jywge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L3BsYWluOmNoYXJzZXQ9VVRGLTgnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gICAgICAgICAgICB2YXIgYW5jaG9yVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgYW5jaG9yVGFnLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICBhbmNob3JUYWcuZG93bmxvYWQgPSBmaWxlLm5hbWU7XG4gICAgICAgICAgICBhbmNob3JUYWcuY2xpY2soKTtcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja0NyaXRpY2FsRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3JpdGljYWxBcnJ5ID0gcHJvcHMuaW1wb3J0RGF0YSAmJlxuICAgICAgICAgICAgICAgIHByb3BzLmltcG9ydERhdGEubWFwKGZ1bmN0aW9uIChkYXRhLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JMZW5ndGgoJ2NyaXRpY2FsJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3JpdGljYWxBcnJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgKz0gY3JpdGljYWxBcnJ5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwIHx8ICgoX2EgPSBwcm9wcy5nbG9iYWxFcnJvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFkZEFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdChcIi9pbXBvcnQveGxzL2FjdGl2aXR5XCIsIHsgYWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoZXJyb3JUeXBlLCBhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXSkge1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGEpLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNlbGVjdEFsbDogc2VsZWN0QWxsLCBzb3J0T3JkZXI6IHNvcnRPcmRlciwgdGFibGVSb3c6IHRhYmxlUm93LCBzaG93Q3JpdGljYWxFcnJvck1vZGVsOiBzaG93Q3JpdGljYWxFcnJvck1vZGVsLCBzaG93SWRlbnRpZmllckVycm9yTW9kZWw6IHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZTogc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLCBzaG93R0xvYmFsRXJyb3I6IHNob3dHTG9iYWxFcnJvciwgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgYWN0aXZpdGllc0xlbmd0aDogYWN0aXZpdGllc0xlbmd0aCwgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHRhYmxlV2lkdGg6IHRhYmxlV2lkdGgsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHByb3BzOiBwcm9wcywgZ2V0RGltZW5zaW9uczogZ2V0RGltZW5zaW9ucywgc29ydDogc29ydCwgY2FuY2VsSW1wb3J0OiBjYW5jZWxJbXBvcnQsIGRvd25sb2FkSWRlbnRpZmllckVycm9yOiBkb3dubG9hZElkZW50aWZpZXJFcnJvciwgY2hlY2tDcml0aWNhbEVycm9yOiBjaGVja0NyaXRpY2FsRXJyb3IsIGNvdW50RXJyb3JzOiBjb3VudEVycm9ycywgYWRkQWN0aXZpdGllczogYWRkQWN0aXZpdGllcywgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCBzZWxlY3RBbGxBY3Rpdml0aWVzOiBzZWxlY3RBbGxBY3Rpdml0aWVzLCBYbHNMaXN0RXJyb3I6IFhsc0xpc3RFcnJvcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGNvcmVfMiA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRXJyb3JQb3BVcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ09yZ2FuaXNhdGlvbkRhdGEnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE9yZ2FuaXNhdGlvbkVsZW1lbnRzOiBPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMS5kZWZhdWx0LFxuICAgICAgICBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbDogT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQdWJsaXNoVW5wdWJsaXNoOiBPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEVycm9yUG9wVXA6IEVycm9yUG9wVXBfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbWFuZGF0b3J5Q29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJSb2xlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfYVswXSwgcHVibGlzaFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9jWzBdLCBkZWxldGVUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgdmFyIF9kID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRvd25sb2FkVmFsdWUgPSBfZFswXSwgZG93bmxvYWRUb2dnbGUgPSBfZFsxXTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9nZ2xlU2lkZWJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlID0gIXNob3dTaWRlYmFyLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlID09PSAnc3VjY2VzcycgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8yLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIHRoZSBkYXRhJ3MgZm9yIHNjcm9sbCBmdW5jdGlvblxuICAgICAgICAgKlxuICAgICAgICAgKiB0aGlzIGRhdGEgaXMgY3JlYXRlZCB1c2luZyBwcm9wcy5ncm91cHMgYW5kIHByb3BzLmFjdGl2aXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGdyb3VwcyA9IF9lLmdyb3Vwcywgb3JnYW5pemF0aW9uID0gX2Uub3JnYW5pemF0aW9uLCBlbGVtZW50cyA9IF9lLmVsZW1lbnRzLCBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZSwgb3JnYW5pemF0aW9uUHJvcHMgPSBvcmdhbml6YXRpb24udmFsdWUsIG9yZ2FuaXphdGlvbkRhdGEgPSBncm91cHMudmFsdWUsIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnRzLnZhbHVlO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhvcmdhbml6YXRpb25EYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGFba2V5XVsnZWxlbWVudHMnXSkubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9yZ2FuaXphdGlvblByb3BzW2tdIHx8IHR5cGVvZiBvcmdhbml6YXRpb25Qcm9wc1trXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydjb250ZW50J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uUHJvcHNba107XG4gICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XVtrXTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydoYXNfZGF0YSddID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29yZSddID1cbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydtYW5kYXRvcnknXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2NvbXBsZXRlZCddID1cbiAgICAgICAgICAgICAgICAgICAgayA9PT0gJ29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBvcmdhbml6YXRpb25Qcm9wc1snZWxlbWVudF9zdGF0dXMnXVsnaWRlbnRpZmllciddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddW2tdO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnbm90X2NvbXBsZXRlZCddID0gIWVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbGFnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcmdhbml6YXRpb25EYXRhW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBjYXRlZ29yaWVzIG9mIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWREYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmdhbml6YXRpb25EYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZW5hYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdkaXNhYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNfcHVibGlzaGVkOiBvcmdhbml6YXRpb25Qcm9wcy5pc19wdWJsaXNoZWQsXG4gICAgICAgICAgICBzdGF0dXM6IG9yZ2FuaXphdGlvblByb3BzLnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaE1lc3NhZ2UnLCBwdWJsaXNoTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnbWFuZGF0b3J5Q29tcGxldGVkJywgcHJvcHMubWFuZGF0b3J5Q29tcGxldGVkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdERhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3B1Ymxpc2hTdGF0dXMnLCBwdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3VzZXJSb2xlJywgcHJvcHMudXNlclJvbGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YTogb3JnYW5pemF0aW9uRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSxcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlOiB1bnB1Ymxpc2hWYWx1ZSxcbiAgICAgICAgICAgIHVucHVibGlzaFRvZ2dsZTogdW5wdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBkb3dubG9hZFZhbHVlOiBkb3dubG9hZFZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRUb2dnbGU6IGRvd25sb2FkVG9nZ2xlLFxuICAgICAgICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRvZ2dsZVNpZGViYXI6IHRvZ2dsZVNpZGViYXIsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvblByb3BzOiBvcmdhbml6YXRpb25Qcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtYW5kYXRvcnk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlYXJjaEJ0blZhbHVlID0gX2JbMF0sIHNlYXJjaEJ0blRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgZHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZWxlbWVudHMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVsZW1lbnRJY29ucyA9IHtcbiAgICAgICAgICAgIGNvbXBsZXRlZDogJ2RvdWJsZS10aWNrJyxcbiAgICAgICAgICAgIG5vdF9jb21wbGV0ZWQ6ICdyZWQtY3Jvc3MnLFxuICAgICAgICAgICAgY29yZTogJ2NvcmUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBPYmplY3QuZW50cmllcyhwcm9wcy5kYXRhKTtcbiAgICAgICAgdmFyIGZpbHRlcmVkRWxlbWVudHMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50cy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvLS9nLCAnXycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtlbGVtZW50cy5zdGF0dXNdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoLy0vZywgJ18nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBqdXN0U3RyaW5ncyA9IE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICByZXR1cm4ganVzdFN0cmluZ3M7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICFkcm9wZG93bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZHJvcGRvd25GaWx0ZXIgPSBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgZWxlbWVudHMuc3RhdHVzID0gcztcbiAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHNlYXJjaEJ0blZhbHVlOiBzZWFyY2hCdG5WYWx1ZSwgc2VhcmNoQnRuVG9nZ2xlOiBzZWFyY2hCdG5Ub2dnbGUsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCB1c2VyUm9sZTogdXNlclJvbGUsIGVsZW1lbnRzOiBlbGVtZW50cywgZWxlbWVudEljb25zOiBlbGVtZW50SWNvbnMsIGFzQXJyYXlEYXRhOiBhc0FycmF5RGF0YSwgZmlsdGVyZWRFbGVtZW50czogZmlsdGVyZWRFbGVtZW50cywgZHJvcGRvd25GaWx0ZXI6IGRyb3Bkb3duRmlsdGVyLCBvcmdNYW5kYXRvcnlFbGVtZW50czogY29yZUVsZW1lbnRzXzEub3JnTWFuZGF0b3J5RWxlbWVudHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJPcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIEhlbHBlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSGVscGVyVGV4dC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0IHx8IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnZW4nLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcHJlY2F0aW9uQ29kZVVzYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICB2YXIgbGF5b3V0ID0gJ2Jhc2lzLTYvMTInO1xuICAgICAgICBpZiAocHJvcHMud2lkdGggPT09ICdmdWxsJykge1xuICAgICAgICAgICAgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwnO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnb3JnVHlwZXMnLCBwcm9wcy50eXBlcyk7XG4gICAgICAgIHZhciByZXBsYWNlVW5kZXJzY29yZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHZhciByZWdleCA9IC9fL2c7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gc3RyaW5nLnJlcGxhY2UocmVnZXgsICctJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbm90RGVsZXRhYmxlRWxlbWVudHMgPSBbJ29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJywgJ25hbWUnLCAncmVwb3J0aW5nX29yZyddO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBkZWxldGVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZGVsZXRlKFwiL29yZ2FuaXNhdGlvbi9cIi5jb25jYXQoZWxlbWVudCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZGVsZXRlIHRoZSBvcmdhbmlzYXRpb24gZWxlbWVudCBkdWUgdG8gc3lzdGVtIGVycm9yLlwiO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdXNlclJvbGU6IHVzZXJSb2xlLCBsYXlvdXQ6IGxheW91dCwgcmVwbGFjZVVuZGVyc2NvcmU6IHJlcGxhY2VVbmRlcnNjb3JlLCBub3REZWxldGFibGVFbGVtZW50czogbm90RGVsZXRhYmxlRWxlbWVudHMsIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBkZWxldGVFbGVtZW50OiBkZWxldGVFbGVtZW50LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBvcmdNYW5kYXRvcnlFbGVtZW50czogY29yZUVsZW1lbnRzXzEub3JnTWFuZGF0b3J5RWxlbWVudHMsIFJlcG9ydGluZ09yZ2FuaXNhdGlvbjogSW5kZXhfMS5SZXBvcnRpbmdPcmdhbmlzYXRpb24sIFRvdGFsQnVkZ2V0OiBJbmRleF8xLlRvdGFsQnVkZ2V0LCBSZXBvcnRpbmdPcmdCdWRnZXQ6IEluZGV4XzEuUmVwb3J0aW5nT3JnQnVkZ2V0LCBSZXBvcnRpbmdSZWdpb25CdWRnZXQ6IEluZGV4XzEuUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LCBSZWNpcGllbnRDb3VudHJ5QnVkZ2V0OiBJbmRleF8xLlJlY2lwaWVudENvdW50cnlCdWRnZXQsIFRvdGFsRXhwZW5kaXR1cmU6IEluZGV4XzEuVG90YWxFeHBlbmRpdHVyZSwgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluaywgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgSGVscGVyVGV4dDogSGVscGVyVGV4dF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRG9jdW1lbnRMaW5rJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6ICdEYXRlIE1pc3NpbmcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlY2lwaWVudENvdW50cnlCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6ICdEYXRlIE1pc3NpbmcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ2FuaXNhdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nUmVnaW9uQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6ICdEYXRlIE1pc3NpbmcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvdGFsQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6ICdEYXRlIE1pc3NpbmcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvdGFsRXhwZW5kaXR1cmUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogJ0RhdGUgTWlzc2luZyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVtYWlsRXJyb3IgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9wYXNzd29yZC9lbWFpbCcsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIGVtYWlsRXJyb3IudmFsdWUgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcGFzc3dvcmQvY29uZmlybSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlbWFpbEVycm9yLnZhbHVlID0gZXJyb3JzLmVtYWlsID8gZXJyb3JzLmVtYWlsWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICBlbWFpbEVycm9yOiBlbWFpbEVycm9yLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogcHJvcHMuZW1haWwsXG4gICAgICAgICAgICB0b2tlbjogcHJvcHMudG9rZW4sXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBlbWFpbDogZm9ybURhdGEuZW1haWwsXG4gICAgICAgICAgICAgICAgdG9rZW46IHByb3BzLnRva2VuLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmQ6IGVuY3J5cHQoXG4gICAgICAgICAgICAgICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVzZXQnLCBmb3JtKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBzdG9yZV8xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZS9zZXR0aW5nL2FjdGlvbnNcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1ZGdldE5vdFByb3ZpZGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGRlZmF1bHRGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEZvcm07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGVmYXVsdEVycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEVycm9yO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUoa2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTLCB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRlZmF1bHRGb3JtLnZhbHVlW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgZGVmYXVsdEZvcm06IGRlZmF1bHRGb3JtLFxuICAgICAgICAgICAgZGVmYXVsdEVycm9yOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICB1cGRhdGVTdG9yZTogdXBkYXRlU3RvcmUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzdG9yZV8xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZS9zZXR0aW5nL2FjdGlvbnNcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFNldHRpbmdEZWZhdWx0Rm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlXCIpKTtcbnZhciBTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFNldHRpbmdEZWZhdWx0Rm9ybTogU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFNldHRpbmdQdWJsaXNoaW5nRm9ybTogU2V0dGluZ1B1Ymxpc2hpbmdGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1ZGdldE5vdFByb3ZpZGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdXNlclJvbGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Q29sbGFib3JhdGlvblR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZsb3dUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0QWlkVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VGllZFN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpc1N1cGVyYWRtaW46IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0b2FzdFRpbWVvdXRJZDtcbiAgICAgICAgdmFyIGluaXRpYWxBcGlDYWxsQ29tcGxldGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdGFiID0gKDAsIHZ1ZV8xLnJlZikoJ3B1Ymxpc2gnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHN0b3JlXzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Zvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdGb3JtOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdJbmZvID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nSW5mbzsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdFcnJvcjsgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0Rm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEZvcm07IH0pO1xuICAgICAgICB2YXIgZGVmYXVsdEVycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0RXJyb3I7IH0pO1xuICAgICAgICB2YXIgc2hvd1Rva2VuVGFnID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdG9yZShuYW1lLCBrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXNbbmFtZV0sIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTdG9yZShhY3Rpb25zXzEuQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STSwgJ3B1Ymxpc2hlcl9pZCcsIHByb3BzLm9yZ2FuaXphdGlvbi5wdWJsaXNoZXJfaWQpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSwgc2V0dGluZ0RhdGEsIGVycm9ycywgZGVmYXVsdFZhbHVlcywgcHVibGlzaGVySW5mbywgYWN0aXZpdHlWYWx1ZXMsIGtleSwga2V5LCBrZXk7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9zZXR0aW5nL2RhdGEnKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSAoX2Iuc2VudCgpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEFwaUNhbGxDb21wbGV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ0RhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRk9STScsICdvcmdhbml6YXRpb25faWQnLCBwcm9wcy5vcmdhbml6YXRpb24uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gKF9hID0gZGF0YS5lcnJvcnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ0RhdGEuZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckluZm8gPSBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVZhbHVlcyA9IHNldHRpbmdEYXRhLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVibGlzaGVySW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSh0eXBlb2YgcHVibGlzaGVySW5mb1trZXldID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1VQREFURV9QVUJMSVNISU5HX0ZPUk0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywga2V5LCBwdWJsaXNoZXJJbmZvW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvLmFwaV90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGRlZmF1bHRWYWx1ZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX0RFRkFVTFRfVkFMVUVTJywga2V5LCBhY3Rpdml0eVZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBzZXRFcnJvcnMoZXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBrZXksIGVycm9yc1trZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2hvd1Rva2VuVGFnLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93VG9rZW5UYWcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYihwYWdlKSB7XG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0RGVmYXVsdCgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gZGVmYXVsdEVycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodG9hc3RUaW1lb3V0SWQpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3N0b3JlL2RlZmF1bHQnLCBkZWZhdWx0Rm9ybS52YWx1ZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3RUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgcmVzcG9uc2UuZGF0YS5oaWVyYXJjaGlhbCwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZSwgZXJyb3JzW2VdWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZyh1cmwpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRvYXN0VGltZW91dElkKTtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gcHVibGlzaGluZ0Vycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNISU5HX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QodXJsLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHVibGlzaGluZ0luZm8udmFsdWUpLCBwdWJsaXNoaW5nRm9ybS52YWx1ZSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IChfYSA9IHJlc3BvbnNlLmVycm9ycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgICAgICAgICAgc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3Rva2VuX3ZlcmlmaWNhdGlvbicsIChfYiA9IHJlc3BvbnNlLmRhdGEudG9rZW5fdmVyaWZpY2F0aW9uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdwdWJsaXNoZXJfdmVyaWZpY2F0aW9uJywgcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJfdmVyaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNISU5HX0ZPUk0nLCAndG9rZW5fc3RhdHVzJywgcmVzcG9uc2UuZGF0YS50b2tlbl9zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmwgPT09ICdzZXR0aW5nL3ZlcmlmeScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnRva2VuX3N0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSAnd2FybmluZyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5kYXRhLnRva2VuX3N0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY29ycmVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9hc3RUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBlLCBlcnJvcnNbZV1bMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKHVybCkge1xuICAgICAgICAgICAgaWYgKHVybCA9PT0gdm9pZCAwKSB7IHVybCA9ICdzZXR0aW5nL3ZlcmlmeSc7IH1cbiAgICAgICAgICAgIGlmIChwcm9wcy51c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdwdWJsaXNoJylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZyh1cmwpO1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdkZWZhdWx0JylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnaXNTdXBlcmFkbWluJywgcHJvcHMuaXNTdXBlcmFkbWluKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHRhYjogdGFiLFxuICAgICAgICAgICAgZGVmYXVsdEVycm9yOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICBwdWJsaXNoaW5nRXJyb3I6IHB1Ymxpc2hpbmdFcnJvcixcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RUeXBlOiB0b2FzdFR5cGUsXG4gICAgICAgICAgICB0b2dnbGVUYWI6IHRvZ2dsZVRhYixcbiAgICAgICAgICAgIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sXG4gICAgICAgICAgICBpbml0aWFsQXBpQ2FsbENvbXBsZXRlZDogaW5pdGlhbEFwaUNhbGxDb21wbGV0ZWQsXG4gICAgICAgICAgICBzaG93VG9rZW5UYWc6IHNob3dUb2tlblRhZyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc3RvcmVfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZVwiKTtcbnZhciBhY3Rpb25zXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmUvc2V0dGluZy9hY3Rpb25zXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluaXRpYWxBcGlDYWxsQ29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBzaG93VGFnOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydzdWJtaXRQdWJsaXNoaW5nJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICB2YXIgdGFiID0gKDAsIHZ1ZV8xLnJlZikoJ3B1Ymxpc2gnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHN0b3JlXzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICB2YXIgaXNTdXBlcmFkbWluID0gKDAsIHZ1ZV8xLmluamVjdCkoJ2lzU3VwZXJhZG1pbicpO1xuICAgICAgICB2YXIgcHVibGlzaGVySWQgPSAoMCwgdnVlXzEucmVmKShwcm9wcy5vcmdhbml6YXRpb24ucHVibGlzaGVyX2lkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwdWJsaXNoZXJJZC52YWx1ZTsgfSwgZnVuY3Rpb24gKHB1Ymxpc2hlcklkKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXNbJ1VQREFURV9QVUJMSVNISU5HX0ZPUk0nXSwge1xuICAgICAgICAgICAgICAgIGtleTogJ3B1Ymxpc2hlcl9pZCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHB1Ymxpc2hlcklkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Zvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdGb3JtOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdJbmZvID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nSW5mbzsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdFcnJvcjsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdFB1Ymxpc2hpbmcoKSB7XG4gICAgICAgICAgICBpZiAodXNlclJvbGUgPT09ICdhZG1pbicpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdzdWJtaXRQdWJsaXNoaW5nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYXV0b1ZlcmlmeSgpIHtcbiAgICAgICAgICAgIGVtaXQoJ3N1Ym1pdFB1Ymxpc2hpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdG9yZShrZXkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNLCB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHB1Ymxpc2hpbmdGb3JtLnZhbHVlW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b2dnbGVUYWIoKSB7XG4gICAgICAgICAgICB0YWIudmFsdWUgPSB0YWIudmFsdWUgPT09ICdwdWJsaXNoJyA/ICdkZWZhdWx0JyA6ICdwdWJsaXNoJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFiOiB0YWIsXG4gICAgICAgICAgICBwdWJsaXNoaW5nRm9ybTogcHVibGlzaGluZ0Zvcm0sXG4gICAgICAgICAgICBwdWJsaXNoaW5nSW5mbzogcHVibGlzaGluZ0luZm8sXG4gICAgICAgICAgICBwdWJsaXNoaW5nRXJyb3I6IHB1Ymxpc2hpbmdFcnJvcixcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHVzZXJSb2xlOiB1c2VyUm9sZSxcbiAgICAgICAgICAgIHN1Ym1pdFB1Ymxpc2hpbmc6IHN1Ym1pdFB1Ymxpc2hpbmcsXG4gICAgICAgICAgICB0b2dnbGVUYWI6IHRvZ2dsZVRhYixcbiAgICAgICAgICAgIHVwZGF0ZVN0b3JlOiB1cGRhdGVTdG9yZSxcbiAgICAgICAgICAgIGF1dG9WZXJpZnk6IGF1dG9WZXJpZnksXG4gICAgICAgICAgICBpc1N1cGVyYWRtaW46IGlzU3VwZXJhZG1pbixcbiAgICAgICAgICAgIHB1Ymxpc2hlcklkOiBwdWJsaXNoZXJJZCxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gQ29tcG9uZW50c1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFRhYmxlTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkxpc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICB0ZXh0OiAnUGxlYXNlIFdhaXQnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbG9hZGVyJywgbG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFRhYmxlTGlzdDogVGFibGVMaXN0X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGxhbmdfMSA9IHJlcXVpcmUoXCJsb2Rhc2gvbGFuZ1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdTeXN0ZW1WZXJzaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBwaHBEZXBlbmRlbmNpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBub2RlRGVwZW5kZW5jaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcGFja2FnZU1hbmFnZXJWZXJzaW9uOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbGF0ZXN0TWFuYWdlclZlcnNpb246IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgLyogU2V0cyBVcGRhdGUgc3RhdHVzIGNsYXNzICovXG4gICAgICAgIHZhciBnZXRTdGF0dXNDbGFzcyA9IGZ1bmN0aW9uICh1cGRhdGVTdGF0dXMpIHtcbiAgICAgICAgICAgIGlmICh1cGRhdGVTdGF0dXMgPT0gJ3NlbXZlci1zYWZlLXVwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JvdW5kZWQtZnVsbCBiZy1zcHJpbmctNTAgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHgtNSBweS0xIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LXdoaXRlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAncm91bmRlZC1mdWxsIGJnLXNhbG1vbi01MCBib3JkZXIgYm9yZGVyLXNhbG1vbi01MCBweC01IHB5LTEgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtd2hpdGUnO1xuICAgICAgICB9O1xuICAgICAgICAvKiBSZXR1cm5zIFVwZGF0ZSBzdGF0dXMgKi9cbiAgICAgICAgdmFyIGdldFN0YXR1c01lc3NhZ2UgPSBmdW5jdGlvbiAodXBkYXRlU3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAodXBkYXRlU3RhdHVzID09ICdzZW12ZXItc2FmZS11cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTYWZlIHVwZGF0ZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ01heSBicmVhayBzeXN0ZW0nO1xuICAgICAgICB9O1xuICAgICAgICAvKiBSZXR1cm5zIExhdGVzdCB2ZXJzaW9uIG9mIHBhY2thZ2UgbWFuYWdlciAqL1xuICAgICAgICB2YXIgcmVzb2x2ZUxhdGVzdFZlcnNpb24gPSBmdW5jdGlvbiAobGF0ZXN0TWFuYWdlclZlcnNpb24sIGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBsYXRlc3RNYW5hZ2VyVmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXRlc3RNYW5hZ2VyVmVyc2lvbltrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICdjb21wb3NlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJzIuNS40JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnTkEnO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0SW5kZXggPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbmRleC50b1N0cmluZygpKSArIDE7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGdldFN0YXR1c0NsYXNzOiBnZXRTdGF0dXNDbGFzcywgZ2V0U3RhdHVzTWVzc2FnZTogZ2V0U3RhdHVzTWVzc2FnZSwgcmVzb2x2ZUxhdGVzdFZlcnNpb246IHJlc29sdmVMYXRlc3RWZXJzaW9uLCBnZXRJbmRleDogZ2V0SW5kZXgsIGlzRW1wdHk6IGxhbmdfMS5pc0VtcHR5IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBZG1pbkJhcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbk5hbWU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaCBCYWNrXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc3dpdGNoQmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvbGlzdC1vcmdhbmlzYXRpb25zJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN3aXRjaEJhY2s6IHN3aXRjaEJhY2sgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RhYmxlTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBTcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3VudHJpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzZXR1cENvbXBsZXRlbmVzczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJlZ2lzdHJhdGlvblR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcHVibGlzaGVyVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBkYXRhTGljZW5zZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvbGRlc3REYXRlczoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMS5pbmplY3QpKCdsb2FkZXInKTtcbiAgICAgICAgdmFyIGRhdGVEcm9wZG93biA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBjbGVhckRhdGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMS5yZWYpKCdBbGwgVGltZScpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGRlbGV0ZUlkID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZGVsZXRlT3JnTmFtZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRlbGV0ZU1vZGFsID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWFya0FzU3BhbSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dMb2FkZXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZURlbGV0ZUNvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gIWRlbGV0ZU1vZGFsLnZhbHVlO1xuICAgICAgICAgICAgbWFya0FzU3BhbS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0xvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvcGVuRGVsZXRlTW9kYWwgPSBmdW5jdGlvbiAob3JnYW5pemF0aW9uKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGVJZC52YWx1ZSA9IG9yZ2FuaXphdGlvbi5pZDtcbiAgICAgICAgICAgIGRlbGV0ZU9yZ05hbWUudmFsdWUgPSAoX2EgPSBvcmdhbml6YXRpb24ubmFtZVswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hcnJhdGl2ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRlbGV0ZU9yZyA9IGZ1bmN0aW9uIChvcmdJZCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL29yZ2FuaXphdGlvbi9cIi5jb25jYXQob3JnSWQpICsgKG1hcmtBc1NwYW0udmFsdWUgPyAnP21hcmtBc1NwYW09dHJ1ZScgOiAnJykpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVNb2RhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFya0FzU3BhbS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgZ2V0Q291bnRyaWVzV2l0aFByZWZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXR1cm5WYWx1ZUZvckNvdW50cmllcyA9IHt9O1xuICAgICAgICAgICAgdmFyIGNvdW50cnlDb2RlcyA9IE9iamVjdC5rZXlzKHByb3BzLmNvdW50cmllcyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50cnlDb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlRm9yQ291bnRyaWVzW2NvdW50cnlDb2Rlc1tpXV0gPSBcIlwiLmNvbmNhdChjb3VudHJ5Q29kZXNbaV0sIFwiIC0gXCIpLmNvbmNhdChwcm9wcy5jb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWVGb3JDb3VudHJpZXM7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb3VudHJpZXNXaXRoUHJlZml4ID0gZ2V0Q291bnRyaWVzV2l0aFByZWZpeCgpO1xuICAgICAgICAvLyByZWFjdGl2aXR5XG4gICAgICAgIHZhciBvcmdhbmlzYXRpb25EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgIHN0YXR1czogJ2ZldGNoaW5nJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtdWx0aXNlbGVjdFN0eWxlID0gKDAsIHZ1ZV8xLnJlZikoe30pO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogW10sXG4gICAgICAgICAgICBkYXRhX2xpY2Vuc2U6IFtdLFxuICAgICAgICAgICAgY291bnRyeTogW10sXG4gICAgICAgICAgICBjb21wbGV0ZW5lc3M6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogJycsXG4gICAgICAgICAgICBlbmRfZGF0ZTogJycsXG4gICAgICAgICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcbiAgICAgICAgICAgIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXNldFBhZ2luYXRpb24gPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b3RhbE9yZ2FuaXNhdGlvbiA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgcmVnaXN0cnlBcGlLZXlTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZVN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duUmFuZ2UgPSB7XG4gICAgICAgICAgICBjcmVhdGVkX2F0OiAnUmVnaXN0ZXJlZCBkYXRlIHJhbmdlJyxcbiAgICAgICAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlIHJhbmdlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRQYXJhbXMgPSAoMCwgdnVlXzEucmVmKSh7IG9yZGVyQnk6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKGZpbHRlciwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTE4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbGVhckRhdGVGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZVB1Ymxpc2hlck1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2VuZXJhdGVMYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBcIidcIi5jb25jYXQobGFiZWwsIFwiJ1wiKSB9O1xuICAgICAgICB9O1xuICAgICAgICAvL2xpZmVjeWNsZVxuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydwdWJsaXNoZXJfdHlwZScsICdkYXRhX2xpY2Vuc2UnLCAnY291bnRyeSddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXNJbktleVZhbCA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nID09PSBudWxsIHx8IHF1ZXJ5U3RyaW5nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2IgPSBxdWVyeVBhcmFtc1tpXS5zcGxpdCgnPScpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogJyddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZldGNoaW5nIG9yZ2FuaXphdGlvbiBsaXN0XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB2YXIgZmV0Y2hPcmdhbmlzYXRpb24gPSBmdW5jdGlvbiAoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVfcGFnZSA9PT0gdm9pZCAwKSB7IGFjdGl2ZV9wYWdlID0gMTsgfVxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmV0Y2hpbmcnO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlX3BhZ2UgPSBhY3RpdmVfcGFnZSAhPT0gbnVsbCAmJiBhY3RpdmVfcGFnZSAhPT0gdm9pZCAwID8gYWN0aXZlX3BhZ2UgOiAxO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvbGlzdC1vcmdhbmlzYXRpb25zL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKS5jb25jYXQocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkpO1xuICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcbiAgICAgICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nICE9PSBudWxsICYmIHF1ZXJ5U3RyaW5nICE9PSB2b2lkIDAgPyBxdWVyeVN0cmluZyA6ICcmcT0nO1xuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gcXVlcnlTdHJpbmcgIT09ICcnID8gZW5kcG9pbnQgOiBcIlwiLmNvbmNhdChlbmRwb2ludCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyS2V5IGluIGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcktleV0gJiYgZmlsdGVyW2ZpbHRlcktleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZChmaWx0ZXJLZXksIGZpbHRlcltmaWx0ZXJLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgPyB1cmxQYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbi52YWx1ZSA9IChfYSA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b3RhbDtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZW1wdHknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFN0YXR1c0FycmF5cyhvcmdhbmlzYXRpb25EYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmYWlsZWQgdG8gcmV0cmlldmUgZGF0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByb3h5IFVzZXJcbiAgICAgICAgICovXG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBwcm94eVVzZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyLnRleHQgPSAnUHJveHkgTG9naW4nO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvcHJveHktb3JnYW5pc2F0aW9uL1wiLmNvbmNhdChpZCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcycpO1xuICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndmFsaWRhdGluZ0FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjdGl2aXR5VmFsaWRhdGluZycpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRWYWxpZGF0aW9uJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTb3J0aW5nIEJ5IHVwZGF0ZSBvblxuICAgICAgICAgKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcXVlcnkgPSAnJywgZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVzY2VuZGluZycsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgIHZhciB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgdmFyIG9yZGVyVHlwZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgb3JkZXJUeXBlLnZhbHVlID0gKF9hID0gdXJsUGFyYW1zLmdldCgnb3JkZXJCeScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcmFuZ2UgPSAnJztcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnkgPSBmdW5jdGlvbiAob3JkZXIpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUsIGVuZERhdGU7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlID0gKF9iID0gdXJsUGFyYW1zLmdldCgnc3RhcnRfZGF0ZScpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gKF9jID0gdXJsUGFyYW1zLmdldCgnZW5kX2RhdGUnKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gXCImc3RhcnRfZGF0ZT1cIi5jb25jYXQoc3RhcnREYXRlLCBcIiZlbmRfZGF0ZT1cIikuY29uY2F0KGVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGZldGNoT3JnYW5pc2F0aW9uKDEpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5LFxuICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyxcbiAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHJlc2V0QWxsRmlsdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5ID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXNGaWx0ZXJBcHBsaWVkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5jb3VudHJ5Lmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZS5sZW5ndGggIT1cbiAgICAgICAgICAgICAgICAwIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyAhPT0gJycgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XG4gICAgICAgICAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICE9PSAnJyAmJiBmaWx0ZXIuZW5kX2RhdGUgIT09ICcnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVmcmVzaFN0YXR1c0FycmF5cyA9IGZ1bmN0aW9uIChvcmdEYXRhKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2QgPSBvcmdEYXRhLmRhdGE7IF9pIDwgX2QubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9yZ0RhdHVtID0gX2RbX2ldO1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW29yZ0RhdHVtLmlkXSA9XG4gICAgICAgICAgICAgICAgICAgIChfYyA9IChfYiA9IChfYSA9IG9yZ0RhdHVtID09PSBudWxsIHx8IG9yZ0RhdHVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmdEYXR1bS5zZXR0aW5ncykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdfaW5mbykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRva2VuX3ZlcmlmaWNhdGlvbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW29yZ0RhdHVtLmlkXSA9IGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQob3JnRGF0dW0gPyBvcmdEYXR1bS5zZXR0aW5ncyA6IGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQgPSBmdW5jdGlvbiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xuICAgICAgICAgICAgICAgIHJldHVybiAhISgoKF9hID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfY3VycmVuY3kpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9jID0gYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmhpZXJhcmNoeSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2QgPSBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuYnVkZ2V0X25vdF9wcm92aWRlZCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5odW1hbml0YXJpYW4pICE9ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGVGaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGVGaWx0ZXIgPT09IHZvaWQgMCkgeyBzZWxlY3RlZERhdGVGaWx0ZXIgPSAnJzsgfVxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gc2VsZWN0ZWREYXRlRmlsdGVyO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVR5cGUgPSBmdW5jdGlvbiAoZGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSBkYXRlVHlwZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJvdGF0ZUNsYXNzID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHZhciByZWN0ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgbXVsdGlzZWxlY3RTdHlsZS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICB0b3A6IE51bWJlcihyZWN0LnRvcCkgPCAxMDAgPyAyMTAgKyAncHgnIDogTnVtYmVyKHJlY3QudG9wKSArIDUwICsgJ3B4JyxcbiAgICAgICAgICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9ICFzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0U2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAocHVibGlzaGVyVHlwZXMpIHtcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IHB1Ymxpc2hlclR5cGVzO1xuICAgICAgICB9O1xuICAgICAgICAvKlxuICAgICAgICAgKiBGb3IgbWFwcGluZyBjb3VudHJ5LCBwdWJsaXNoZXJfdHlwZSBhbmQgZGF0YSBsaWNlbnNlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2hvd01hcHBlZERhdGEgPSBmdW5jdGlvbiAoa2V5LCBkYXRhLCBtYXApIHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnZGF0YV9saWNlbnNlJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGljZW5zZSA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UgPT09IG51bGwgfHwgbGljZW5zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGljZW5zZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogJ05vdCBhdmFpbGFibGUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldID8gbWFwW2RhdGFba2V5XV0gOiAnTm90IGF2YWlsYWJsZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ05vdCBhdmFpbGFibGUnO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoOiBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGE6IG9yZ2FuaXNhdGlvbkRhdGEsXG4gICAgICAgICAgICBkcm9wZG93blJhbmdlOiBkcm9wZG93blJhbmdlLFxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRQdWJsaXNoZXI6IHNldFNlbGVjdGVkUHVibGlzaGVyLFxuICAgICAgICAgICAgdG9nZ2xlU2hvd011bHRpU2VsZWN0OiB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXG4gICAgICAgICAgICBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsXG4gICAgICAgICAgICBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLFxuICAgICAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgICAgICByZXNldEFsbEZpbHRlcnM6IHJlc2V0QWxsRmlsdGVycyxcbiAgICAgICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sXG4gICAgICAgICAgICBkZWZhdWx0U29ydERpcmVjdGlvbjogZGVmYXVsdFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICBwcm94eVVzZXI6IHByb3h5VXNlcixcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb246IGZldGNoT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzOiBkZWZhdWx0VmFsdWVTdGF0dXMsXG4gICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1czogcmVnaXN0cnlBcGlLZXlTdGF0dXMsXG4gICAgICAgICAgICBvcmRlclR5cGU6IG9yZGVyVHlwZSxcbiAgICAgICAgICAgIGNsZWFyRGF0ZTogY2xlYXJEYXRlLFxuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTogdXRpbHNfMS5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaDogc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCxcbiAgICAgICAgICAgIGRhdGVUeXBlOiBkYXRlVHlwZSxcbiAgICAgICAgICAgIHJvdGF0ZUNsYXNzOiByb3RhdGVDbGFzcyxcbiAgICAgICAgICAgIG11bHRpc2VsZWN0U3R5bGU6IG11bHRpc2VsZWN0U3R5bGUsXG4gICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXI6IGNsZWFyRGF0ZUZpbHRlcixcbiAgICAgICAgICAgIGRhdGVEcm9wZG93bjogZGF0ZURyb3Bkb3duLFxuICAgICAgICAgICAgc29ydFBhcmFtczogc29ydFBhcmFtcyxcbiAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgc2hvd01hcHBlZERhdGE6IHNob3dNYXBwZWREYXRhLFxuICAgICAgICAgICAgdG90YWxPcmdhbmlzYXRpb246IHRvdGFsT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgY291bnRyaWVzV2l0aFByZWZpeDogY291bnRyaWVzV2l0aFByZWZpeCxcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsOiBkZWxldGVNb2RhbCxcbiAgICAgICAgICAgIGRlbGV0ZU9yZ05hbWU6IGRlbGV0ZU9yZ05hbWUsXG4gICAgICAgICAgICBkZWxldGVJZDogZGVsZXRlSWQsXG4gICAgICAgICAgICBnZW5lcmF0ZUxhYmVsOiBnZW5lcmF0ZUxhYmVsLFxuICAgICAgICAgICAgdG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uOiB0b2dnbGVEZWxldGVDb25maXJtYXRpb24sXG4gICAgICAgICAgICBvcGVuRGVsZXRlTW9kYWw6IG9wZW5EZWxldGVNb2RhbCxcbiAgICAgICAgICAgIGRlbGV0ZU9yZzogZGVsZXRlT3JnLFxuICAgICAgICAgICAgbWFya0FzU3BhbTogbWFya0FzU3BhbSxcbiAgICAgICAgICAgIHNob3dMb2FkZXI6IHNob3dMb2FkZXIsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlckxpc3RpbmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9yZ2FuaXphdGlvbnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByb2xlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGN1cnJlbnRVc2VySWQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB1c2VyUm9sZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogW10sXG4gICAgICAgICAgICByb2xlczogW10sXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgb3JkZXJCeTogJycsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnLFxuICAgICAgICAgICAgcTogJycsXG4gICAgICAgICAgICBzdGFydF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGVuZF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGRhdGVfdHlwZTogJ2NyZWF0ZWRfYXQnLFxuICAgICAgICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFkZFVzZXJGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFVzZXJGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdXNlcnNEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7IGRhdGE6IFtdIH0pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgYWxsU2VsZWN0ZWQgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBkZWxldGVNb2RhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRlbGV0ZUlkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHRvdGFsVXNlciA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc3RhdHVzSWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc3RhdHVzTW9kYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzdGF0dXNWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzdGF0dXNVc2VybmFtZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkZWxldGVVc2VybmFtZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGZldGNoaW5nVGFibGVEYXRhID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VsZWN0ZWRJZHMgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBjaGVja2xpc3QgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBjdXJyZW50cGFnZURhdGEgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBjbGVhckRhdGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0VXNlcklkID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnQWxsIFRpbWUnKTtcbiAgICAgICAgdmFyIGlzU3VwZXJhZG1pbiA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgaXNTdXBlcmFkbWluLnZhbHVlID1cbiAgICAgICAgICAgIHByb3BzLnVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgcHJvcHMudXNlclJvbGUgPT09ICdpYXRpX2FkbWluJztcbiAgICAgICAgdmFyIGRyb3Bkb3duUmFuZ2UgPSB7XG4gICAgICAgICAgICBjcmVhdGVkX2F0OiAnVXNlciBjcmVhdGVkIGRhdGUnLFxuICAgICAgICAgICAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcxJyxcbiAgICAgICAgICAgIHJvbGVfaWQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRXJyb3IgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgcm9sZV9pZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzRmlsdGVyQXBwbGllZCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aCArIGZpbHRlci5yb2xlcy5sZW5ndGggIT0gMCB8fFxuICAgICAgICAgICAgICAgIGZpbHRlci5zdGF0dXMgIT0gJycgfHxcbiAgICAgICAgICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgJiYgZmlsdGVyLmVuZF9kYXRlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmZ1bGxfbmFtZTsgfSwgZnVuY3Rpb24gKGZ1bGxuYW1lKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9ICgwLCB1dGlsc18xLmdlbmVyYXRlVXNlcm5hbWUpKGZ1bGxuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi91c2Vycy9wYWdlLzFcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnXycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgdGV4dEJ1YmJsZWRhdGEgPSBmdW5jdGlvbiAoaWQsIGZpZWxkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3JnJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcbiAgICAgICAgICAgICAgICBjYXNlICdyb2xlcyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcbiAgICAgICAgICAgIGZpbHRlci5yb2xlcyA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5xID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVSYW5nZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JlYXRlVXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIHBhc3N3b3JkRGF0YSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyRmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZWRpdFVzZXIgPSBmdW5jdGlvbiAodXNlcikge1xuICAgICAgICAgICAgZm9ybURhdGEudXNlcm5hbWUgPSB1c2VyLnVzZXJuYW1lO1xuICAgICAgICAgICAgZm9ybURhdGEuZnVsbF9uYW1lID0gdXNlci5mdWxsX25hbWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5lbWFpbCA9IHVzZXIuZW1haWw7XG4gICAgICAgICAgICBmb3JtRGF0YS5yb2xlX2lkID0gdXNlci5yb2xlX2lkO1xuICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9IHVzZXIuaWQ7XG4gICAgICAgICAgICBlZGl0VXNlckZvcm0udmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlGb3JtRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhW2tleV0gPSBrZXkgPT09ICdzdGF0dXMnID8gMSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0Rm9ybUVycm9yID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgaWYgKGVycm9ycyA9PT0gdm9pZCAwKSB7IGVycm9ycyA9IHt9OyB9XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FcnJvcltrZXldID0gZXJyb3JzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRXJyb3Jba2V5XSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wZW5TdGF0dXNNb2RlbCA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBzdGF0dXNJZC52YWx1ZSA9IHVzZXIuaWQ7XG4gICAgICAgICAgICBzdGF0dXNWYWx1ZS52YWx1ZSA9IHVzZXIuc3RhdHVzO1xuICAgICAgICAgICAgc3RhdHVzTW9kYWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdHVzVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlVXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL1wiLmNvbmNhdChlZGl0VXNlcklkLnZhbHVlKSwgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWx0ZXIucm9sZXMsXG4gICAgICAgICAgICBmaWx0ZXIucSxcbiAgICAgICAgICAgIGZpbHRlci5zdGF0dXMsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoVXNlcnNMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvdXNlcnMvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3BlbkRlbGV0ZW1vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZUlkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGRlbGV0ZVVzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlVXNlcihpZCkge1xuICAgICAgICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvdXNlci9cIi5jb25jYXQoaWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydCA9IGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XG4gICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xuICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QoMSk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVVzZXJTdGF0dXMoaWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBhdGNoKFwiL3VzZXIvc3RhdHVzL1wiLmNvbmNhdChpZCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9nZ2xlU2VsZWN0YWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2Vyc0RhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghY2hlY2tsaXN0LnZhbHVlLmluY2x1ZGVzKHVzZXJzRGF0YS5kYXRhW2ldWydpZCddKSlcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlW2NoZWNrbGlzdC52YWx1ZS5sZW5ndGggKyBpXSA9IHVzZXJzRGF0YS5kYXRhW2ldWydpZCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBjaGVja2xpc3QudmFsdWU7XG4gICAgICAgICAgICBpZiAoYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0pIHtcbiAgICAgICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiAhT2JqZWN0LnZhbHVlcyhjdXJyZW50cGFnZURhdGEudmFsdWUpLmluY2x1ZGVzKG4pOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID1cbiAgICAgICAgICAgICAgICAhYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV07XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gY2hlY2tsaXN0LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV1baV0gPSBjaGVja2xpc3QudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZW5lcmF0ZUxhYmVsID0gZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAnLS1sYWJlbCc6IFwiJ1wiLmNvbmNhdChsYWJlbCwgXCInXCIpIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL2Rvd25sb2FkL1wiO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhbGxQYWdlU2VsZWN0ZWQ7XG4gICAgICAgICAgICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XG4gICAgICAgICAgICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd1c2VycycsIGFsbFBhZ2VTZWxlY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBmaWx0ZXI6IGZpbHRlciwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIGFkZFVzZXJGb3JtOiBhZGRVc2VyRm9ybSwgZWRpdFVzZXJGb3JtOiBlZGl0VXNlckZvcm0sIHVzZXJzRGF0YTogdXNlcnNEYXRhLCBpc0VtcHR5OiBpc0VtcHR5LCBhbGxTZWxlY3RlZDogYWxsU2VsZWN0ZWQsIGRlbGV0ZU1vZGFsOiBkZWxldGVNb2RhbCwgZGVsZXRlSWQ6IGRlbGV0ZUlkLCB0b3RhbFVzZXI6IHRvdGFsVXNlciwgc3RhdHVzSWQ6IHN0YXR1c0lkLCBzdGF0dXNNb2RhbDogc3RhdHVzTW9kYWwsIHN0YXR1c1ZhbHVlOiBzdGF0dXNWYWx1ZSwgc3RhdHVzVXNlcm5hbWU6IHN0YXR1c1VzZXJuYW1lLCBkZWxldGVVc2VybmFtZTogZGVsZXRlVXNlcm5hbWUsIGxvYWRlcjogbG9hZGVyLCBmZXRjaGluZ1RhYmxlRGF0YTogZmV0Y2hpbmdUYWJsZURhdGEsIHNlbGVjdGVkSWRzOiBzZWxlY3RlZElkcywgY2hlY2tsaXN0OiBjaGVja2xpc3QsIGN1cnJlbnRwYWdlRGF0YTogY3VycmVudHBhZ2VEYXRhLCBjbGVhckRhdGU6IGNsZWFyRGF0ZSwgZWRpdFVzZXJJZDogZWRpdFVzZXJJZCwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBpc1N1cGVyYWRtaW46IGlzU3VwZXJhZG1pbiwgZHJvcGRvd25SYW5nZTogZHJvcGRvd25SYW5nZSwgZm9ybURhdGE6IGZvcm1EYXRhLCBmb3JtRXJyb3I6IGZvcm1FcnJvciwgaXNGaWx0ZXJBcHBsaWVkOiBpc0ZpbHRlckFwcGxpZWQsIGlnbm9yZVVwZGF0ZXM6IGlnbm9yZVVwZGF0ZXMsIGlnbm9yZVRvYXN0VXBkYXRlOiBpZ25vcmVUb2FzdFVwZGF0ZSwgY2xlYXJEYXRlRmlsdGVyOiBjbGVhckRhdGVGaWx0ZXIsIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2U6IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UsIHRleHRCdWJibGVkYXRhOiB0ZXh0QnViYmxlZGF0YSwgY2xlYXJGaWx0ZXI6IGNsZWFyRmlsdGVyLCBjbGVhckRhdGVSYW5nZUZpbHRlcjogY2xlYXJEYXRlUmFuZ2VGaWx0ZXIsIHNldERhdGVSYW5nZURhdGU6IHNldERhdGVSYW5nZURhdGUsIHNldERhdGVUeXBlOiBzZXREYXRlVHlwZSwgY3JlYXRlVXNlcjogY3JlYXRlVXNlciwgZWRpdFVzZXI6IGVkaXRVc2VyLCBlbXB0eUZvcm1EYXRhOiBlbXB0eUZvcm1EYXRhLCBzZXRGb3JtRXJyb3I6IHNldEZvcm1FcnJvciwgb3BlblN0YXR1c01vZGVsOiBvcGVuU3RhdHVzTW9kZWwsIHVwZGF0ZVVzZXI6IHVwZGF0ZVVzZXIsIGZldGNoVXNlcnNMaXN0OiBmZXRjaFVzZXJzTGlzdCwgb3BlbkRlbGV0ZW1vZGVsOiBvcGVuRGVsZXRlbW9kZWwsIGRlbGV0ZVVzZXI6IGRlbGV0ZVVzZXIsIHNvcnQ6IHNvcnQsIHRvZ2dsZVVzZXJTdGF0dXM6IHRvZ2dsZVVzZXJTdGF0dXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHRvZ2dsZVNlbGVjdGFsbDogdG9nZ2xlU2VsZWN0YWxsLCBnZW5lcmF0ZUxhYmVsOiBnZW5lcmF0ZUxhYmVsLCBkb3dubG9hZEFsbDogZG93bmxvYWRBbGwsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgUG9wdXBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VzZXJQcm9maWxlJyxcbiAgICBwcm9wczoge1xuICAgICAgICB1c2VyOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbGFuZ3VhZ2VQcmVmZXJlbmNlOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRQcm9maWxlRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRQYXNzd29yZEZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q3VycmVudFBhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd05ld1Bhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NvbmZpcm1QYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVzZXJEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7IHVzZXJfcm9sZTogJycgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlckRhdGEsIHByb3BzLnVzZXIpO1xuICAgICAgICAgICAgdXNlckRhdGEudXNlcl9yb2xlID0gdXNlckRhdGEudXNlcl9yb2xlLnNwbGl0KCdfJykuam9pbignICcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogcHJvcHMudXNlci51c2VybmFtZSxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogcHJvcHMudXNlci5mdWxsX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogcHJvcHMudXNlci5lbWFpbCxcbiAgICAgICAgICAgIGxhbmd1YWdlX3ByZWZlcmVuY2U6IHByb3BzLnVzZXIubGFuZ3VhZ2VfcHJlZmVyZW5jZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2VfcHJlZmVyZW5jZTogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JQYXNzd29yZERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gKF9hID0gcmVzLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IChfYSA9IGVycm9yLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlUGFzc3dvcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhc3N3b3JkRm9ybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgLy8gY3VycmVudF9wYXNzd29yZDogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIHBhc3N3b3JkRGF0YS5jdXJyZW50X3Bhc3N3b3JkLFxuICAgICAgICAgICAgICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgICAvLyBwYXNzd29yZDogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIHBhc3N3b3JkRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgcGFzc3dvcmREYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgY3VycmVudF9wYXNzd29yZDogcGFzc3dvcmREYXRhLmN1cnJlbnRfcGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IHBhc3N3b3JkRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgZm9ybV90eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXBkYXRlL3Bhc3N3b3JkJywgcGFzc3dvcmRGb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFBhc3N3b3JkRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JQYXNzd29yZERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUGFzc3dvcmREYXRhW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHJlcy5kYXRhLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQYXNzd29yZERhdGFba2V5XSA9IHJlcy5kYXRhLmVycm9yc1trZXldWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlUHJvZmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VwZGF0ZS9wcm9maWxlJywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRQcm9maWxlRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JGb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JGb3JtRGF0YVtrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YVtrZXldID0gZm9ybURhdGFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHJlcy5kYXRhLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JGb3JtRGF0YVtrZXldID0gcmVzLmRhdGEuZXJyb3JzW2tleV1bMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBlZGl0UHJvZmlsZUZvcm06IGVkaXRQcm9maWxlRm9ybSwgZWRpdFBhc3N3b3JkRm9ybTogZWRpdFBhc3N3b3JkRm9ybSwgc2hvd0N1cnJlbnRQYXNzd29yZDogc2hvd0N1cnJlbnRQYXNzd29yZCwgc2hvd05ld1Bhc3N3b3JkOiBzaG93TmV3UGFzc3dvcmQsIHNob3dDb25maXJtUGFzc3dvcmQ6IHNob3dDb25maXJtUGFzc3dvcmQsIHVzZXJEYXRhOiB1c2VyRGF0YSwgZm9ybURhdGE6IGZvcm1EYXRhLCBlcnJvckZvcm1EYXRhOiBlcnJvckZvcm1EYXRhLCBwYXNzd29yZERhdGE6IHBhc3N3b3JkRGF0YSwgZXJyb3JQYXNzd29yZERhdGE6IGVycm9yUGFzc3dvcmREYXRhLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgdXBkYXRlUGFzc3dvcmQ6IHVwZGF0ZVBhc3N3b3JkLCB1cGRhdGVQcm9maWxlOiB1cGRhdGVQcm9maWxlLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgZW1haWw6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbWFpbFZlcmlmaWNhdGlvbjogRW1haWxWZXJpZmljYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlckV4aXN0cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdGV4dGFyZWEgPSAoMCwgdnVlXzEucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWF0aUVycm9yID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgICAgICBzdGVwOiAnMScsXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmNvdW50cnk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2l6ZShldmVudCkge1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5oZWlnaHQgPSBcIlwiLmNvbmNhdChldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0LCBcInB4XCIpO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2Zvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeVxuICAgICAgICAgICAgICAgID8gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSArICctJyArIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJcbiAgICAgICAgICAgICAgICA6IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXI7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5mdWxsX25hbWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnVzZXJuYW1lID0gKDAsIHV0aWxzXzEuZ2VuZXJhdGVVc2VybmFtZSkoZm9ybURhdGEuZnVsbF9uYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25fYWdlbmN5ID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWdlbmNpZXMgPSBwcm9wcy50eXBlcy5yZWdpc3RyYXRpb25BZ2VuY3k7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEuY291bnRyeSkge1xuICAgICAgICAgICAgICAgIHZhciB1bmNhdGVnb3JpemVkXzEgPSBwcm9wcy50eXBlcy51bmNhdGVnb3JpemVkUmVnaXN0cmF0aW9uQWdlbmN5UHJlZml4O1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYWdlbmNpZXMpLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoZm9ybURhdGEuY291bnRyeSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2F0ZWdvcml6ZWRfMS5zb21lKGZ1bmN0aW9uIChrKSB7IHJldHVybiBrZXkuc3RhcnRzV2l0aChrKTsgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZW5jaWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzVGV4dEZpZWxkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZpZWxkVHlwZSwgZmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoZmllbGRUeXBlID09PSAndGV4dCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAncGFzc3dvcmQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ2VtYWlsJykgJiZcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lICE9ICdpZGVudGlmaWVyJyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrU3RlcCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmb3JtU3RlcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChmb3JtU3RlcC50b1N0cmluZygpKSA9PT0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogb2JqZWN0IHdpdGggbXVsdGktc3RlcCBmb3JtIGluZm9ybWF0aW9uXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgcmVnaXN0ZXJGb3JtID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQdWJsaXNoZXIgSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIHRvIHJlZ2lzdGVyIHlvdXIgb3JnYW5pc2F0aW9uIGFzIGFuIElBVEkgcHVibGlzaGVyJyxcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIldlIHJlZmVyIHRvIG9yZ2FuaXNhdGlvbnMgd2hvIHB1Ymxpc2ggSUFUSSBkYXRhIGFzICdQdWJsaXNoZXJzJy4gQmVmb3JlIHB1Ymxpc2hpbmcgZGF0YSwgYWxsIG9yZ2FuaXNhdGlvbnMgbmVlZCB0aGVpciBvd24gJ1B1Ymxpc2hlciBBY2NvdW50JyBvbiB0aGUgSUFUSSBSZWdpc3RyeSAoaWF0aXJlZ2lzdHJ5Lm9yZykuIEVudGVyIHlvdXIgb3JnYW5pc2F0aW9uJ3MgZGF0YSBoZXJlIGFuZCB3ZSdsbCBjcmVhdGUgeW91ciBvcmdhbmlzYXRpb24ncyBQdWJsaXNoZXIgQWNjb3VudCBmb3IgeW91LiBUaGVzZSBkZXRhaWxzIHdpbGwgYWxzbyBiZSBzYXZlZCBoZXJlIGluIElBVEkgUHVibGlzaGVyLiBcIixcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUHVibGlzaGVyIE5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIG9yZ2FuaXNhdGlvbiBuYW1lIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdUaGUgbmFtZSBvZiB5b3VyIG9yZ2FuaXNhdGlvbiBwdWJsaXNoaW5nIHRoZSBkYXRhLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zcGFuLTIgbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgSUQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgeW91ciBwdWJsaXNoZXIgSUQgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IFwiUHJvdmlkZSBhIHVuaXF1ZSBJRCBmb3IgeW91ciBvcmdhbmlzYXRpb24uIEl0IG11c3QgYmUgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9uZyBhbmQgdXNlIGxvd2VyIGNhc2UgbGV0dGVycy4gWW91IGNhbiBpbmNsdWRlIGxldHRlcnMsIG51bWJlcnMgYW5kIGFsc28gLSAoZGFzaCkgYW5kIF8gKHVuZGVyc2NvcmUpLiBXaGVyZSBwb3NzaWJsZSB1c2UgYSBzaG9ydCBhYmJyZXZpYXRpb24gb2YgeW91ciBvcmdhbmlzYXRpb24ncyBuYW1lLCBmb3IgZXhhbXBsZTogJ25lZl9tYWxpJyBmb3IgTmVhciBFYXN0IEZvdW5kYXRpb24gTWFsaS5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhIENvdW50cnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb3VudHJ5X3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdBZGQgdGhlIGxvY2F0aW9uIG9mIHlvdXIgb3JnYW5pc2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdPcmdhbmlzYXRpb24gUmVnaXN0cmF0aW9uIEFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBPcmdhbmlzYXRpb24gUmVnaXN0cmF0aW9uIEFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBcIlNlbGVjdCB0aGUgYWdlbmN5IGluIHlvdXIgY291bnRyeSB3aGVyZSB5b3VyIG9yZ2FuaXNhdGlvbiBpcyByZWdpc3RlcmVkLiBJZiB5b3UgZG8gbm90IGtub3cgdGhpcyBpbmZvcm1hdGlvbiBwbGVhc2UgZW1haWwgPGEgaHJlZj0nbWFpbHRvOnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZycgdGFyZ2V0PSdfYmxhbmsnPnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZzwvYT5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmVnaXN0cmF0aW9uIE51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgeW91ciBSZWdpc3RyYXRpb24gTnVtYmVyIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJQcm92aWRlIHRoZSByZWdpc3RyYXRpb24gbnVtYmVyIGZvciB5b3VyIG9yZ2FuaXNhdGlvbiB0aGF0IGhhcyBiZWVuIHByb3ZpZGVkIGJ5IG9yZ2FuaXNhdGlvbiByZWdpc3RyYXRpb24gYWdlbmN5LiBJZiB5b3UgZG8gbm90IGtub3cgdGhpcyBwbGVhc2UgZW1haWwgPGEgaHJlZj0nbWFpbHRvOnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZycgdGFyZ2V0PSdfYmxhbmsnPnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZzwvYT4uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICdFLmcuIDEyMzQ1NicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSUFUSSBPcmdhbmlzYXRpb24gSWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnVGhlIE9yZ2FuaXNhdGlvbiBJZGVudGlmaWVyIGlzIGEgdW5pcXVlIGNvZGUgZm9yIHlvdXIgb3JnYW5pc2F0aW9uLiBUaGlzIGlzIGdlbmVyZWF0ZWQgZnJvbSB0aGUgT3JnYW5pc2F0aW9uIFJlZ2lzdHJhdGlvbiBBZ2VuY3kgYW5kIFJlZ2lzdHJhdGlvbiBOdW1iZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlYWQ6ICA8YSBocmVmPVwiaHR0cDovL2lhdGlzdGFuZGFyZC5vcmcvZW4vZ3VpZGFuY2UvcHJlcGFyaW5nLW9yZ2FuaXNhdGlvbi9vcmdhbmlzYXRpb24tYWNjb3VudC9ob3ctdG8tY3JlYXRlLXlvdXItaWF0aS1vcmdhbmlzYXRpb24taWRlbnRpZmllci9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Ib3cgdG8gY3JlYXRlIHlvdXIgSUFUSSBvcmdhbmlzYXRpb24gaWRlbnRpZmllci48L2E+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ1RoaXMgaXMgYXV0b2dlbmVyYXRlZCwgcGxlYXNlIG1ha2Ugc3VyZSB0byBmaWxsIHRoZSBhYm92ZSBmaWVsZHMgY29ycmVjdGx5LicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBvcmdhbmlzYXRpb24gdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1NlbGVjdCB0aGUgdHlwZSB0aGF0IGJlc3QgZGVzY3JpYmVzIHlvdXIgb3JnYW5pc2F0aW9uLiAgPGEgaHJlZj1cImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9pYXRpLXN0YW5kYXJkLzIwMy9jb2RlbGlzdHMvb3JnYW5pc2F0aW9udHlwZS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj4gUmVhZCBtb3JlIG9uIE9yZ2FuaXNhdGlvbiB0eXBlcy48L2E+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMucHVibGlzaGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRGF0YSBMaWNlbmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdsaWNlbnNlX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGEgRGF0YSBMaWNlbmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YS1saWNlbnNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCIgU2VsZWN0IHRoZSBMaWNlbnNlIHVuZGVyIHdoaWNoIHlvdXIgZGF0YSBpcyBiZWluZyBwdWJsaXNoZWQuIElBVEkgaXMgYW4gb3BlbiBkYXRhIHN0YW5kYXJkIGFuZCByZXF1aXJlcyB5b3UgdG8gbWFrZSB5b3VyIGRhdGEgYXZhaWxhYmxlIHVuZGVyIGFuIG9wZW4gbGljZW5jZSBzbyBpdCBjYW4gYmUgZnJlZWx5IHVzZWQuIE9uZSBvZiB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgbGljZW5zZXMgaXMgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi4gPGEgaHJlZj0naHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2d1aWRhbmNlL3N0YW5kYXJkLW92ZXJ2aWV3L3ByZXBhcmluZy15b3VyLW9yZ2FuaXNhdGlvbi1kYXRhLXB1YmxpY2F0aW9uL2hvdy10by1saWNlbnNlLXlvdXItZGF0YS8nIHRhcmdldD0nX2JsYW5rJyA+IEZvciBtb3JlIGluZm9ybWF0aW9uIHJlYWQ6IEhvdyB0byBsaWNlbnNlIHlvdXIgZGF0YS48L2E+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLmRhdGFMaWNlbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfdXJsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBMb2dvIFVybCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaW1hZ2VfdXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRS5nLiBodHRwOi8vbXlsb2dvLmNvbSAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbG9nby11cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCIgUHJvdmlkZSBhIGxpbmsgdG8gYW4gaW1hZ2UgdG8geW91ciBvcmdhbmlzYXRpb24ncyBsb2dvIChPcHRpbXVtIHNpemU6IDIwMCB4IDEyMCBweClcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBEZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIERlc2NyaXB0aW9uIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdvcmdhbml6YXRpb24tZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJyBQcm92aWRlIGEgc2hvcnQgZGVzY3JpcHRpb24gYWJvdXQgeW91ciBvcmdhbmlzYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb250YWN0IEluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhpcyBpcyB5b3VyIG9yZ2FuaXNhdGlvbidzIGNvbnRhY3QgaW5mb3JtYXRpb25cIixcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFjdF9lbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDb250YWN0IEVtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb250YWN0X2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnY29udGFjdC1lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdQbGVhc2UgYWRkIGEgY29udGFjdCBlbWFpbCBhZGRyZXNzIGZvciB5b3VyIG9yZ2FuaXNhdGlvbi4gUGxlYXNlIG5vdGUgdGhhdCBJQVRJIGlzIGFuIG9wZW4gZGF0YSBzdGFuZGFyZCBhbmQgdGhlIGVtYWlsIHByb3ZpZGVkIGhlcmUgd2lsbCBiZSB2aXNpYmxlIHRvIG90aGVycyBvbiB0aGUgSUFUSSBSZWdpc3RyeS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00ICBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdXZWJzaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd3ZWJzaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRS5nLiBodHRwOi8vbXl3ZWJzaXRlLmNvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3dlYnNpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJBZGQgdGhlIFVSTCB0byB5b3VyIG9yZ2FuaXNhdGlvbidzIHdlYnNpdGUuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgYWRkcmVzcyBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnUHJvdmlkZSBhIGNvbnRhY3QgYWRkcmVzcyBmb3IgeW91ciBvcmdhbmlzYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1B1Ymxpc2hpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyBhYm91dCBob3cgeW91ciBvcmdhbmlzYXRpb24gd2lsbCBwdWJsaXNoIGRhdGEnLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU291cmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzb3VyY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgYSBTb3VyY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb250YWN0LWVtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJTZWxlY3QgYW4gb3B0aW9uOjxicj5QcmltYXJ5IC0geW91ciBvcmdhbmlzYXRpb24gaXMgcHVibGlzaGluZyBpdHMgb3duIG9yIChhc3NvY2lhdGVkIG9yZ2FuaXNhdGlvbnMnKSBkYXRhIDxicj5TZWNvbmRhcnkgLSB5b3VyIG9yZ2FuaXNhdGlvbiBpcyByZXByb2R1Y2luZyBkYXRhIG9uIHRoZSBhY3Rpdml0aWVzIG9mIGFub3RoZXIgb3JnYW5pc2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdEZWZhdWx0IGxhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZWZhdWx0X2xhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHlvdXIgZGVmYXVsdCBsYW5ndWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RlZmF1bHQtbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLmxhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmVjb3JkIEV4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlY29yZF9leGNsdXNpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBSZWNvcmQgRXhjbHVzaW9ucyBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVjb3JkLWV4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogXCJEb2VzIHlvdXIgb3JnYW5pc2F0aW9uIGhhdmUgYW4gZXhjbHVzaW9uIHBvbGljeSB0aGF0IHByb3ZpZGUgZGV0YWlscyBvbiB3aGF0IGRhdGEgdGhhdCBpdCBjYW5ub3QgcHVibGlzaD8gRm9yIGV4YW1wbGUgYW4gb3JnYW5pc2F0aW9uIG1heSBub3QgYmUgYWJsZSB0byBwdWJsaXNoIGRhdGEgYmVjYXVzZSBvZiBwb2xpdGljYWwgc2Vuc2l0aXZpdHkgaXNzdWVzIG9yIGlmIGluZm9ybWF0aW9uIGlzIGNvbW1lcmNpYWxseSByZXN0cmljdGVkLiBQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGhlcmUgYWJvdXQgd2hhdCBkYXRhIHlvdXIgb3JnYW5pc2F0aW9uIG5lZWRzIHRvIGV4Y2x1ZGUgKGlmIGFueSksIGFuZCBhIFVSTCB0byB5b3VyIG9yZ2FuaXNhdGlvbidzIGV4Y2x1c2lvbiBwb2xpY3kgKGlmIGl0IGhhcyBvbmUpLjxhIGhyZWY9J2h0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9ndWlkYW5jZS9zdGFuZGFyZC1vdmVydmlldy9wcmVwYXJpbmcteW91ci1vcmdhbmlzYXRpb24tZGF0YS1wdWJsaWNhdGlvbi9pbmZvcm1hdGlvbi1hbmQtZGF0YS15b3UtY2FudC1wdWJsaXNoLWV4Y2x1c2lvbnMvJyB0YXJnZXQ9J19ibGFuayc+IEZvciBtb3JlIGluZm9ybWF0aW9uIHJlYWQ6IEluZm9ybWF0aW9uIGFuZCBkYXRhIHlvdSBjYW4ndCBwdWJsaXNoIChleGNsdXNpb25zKTwvYT5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgIGNvbC1zcGFuLTIgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdBZG1pbmlzdHJhdG9yIEluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpbGwgY3JlYXRlIGFuIGFkbWluIGFjY291bnQgZm9yIHlvdSBhcyBhbiBpbmRpdmlkdWFsJyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0Z1bGwgTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZnVsbF9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIGZ1bGwgbmFtZSBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0VtYWlsIEFkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB2YWxpZCBlbWFpbCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zdGFydC0xIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgdXNlcm5hbWUgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1lvdSB3aWxsIG5lZWQgdGhpcyBsYXRlciB0byBsb2dpbiBpbnRvIElBVEkgUHVibGlzaGVyLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHBhc3N3b3JkIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ01pbmltdW0gbGVuZ3RoOiA4IGNoYXJhY3RlcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NvbmZpcm0gUGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgcGFzc3dvcmQgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkLWNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ1RoaXMgc2hvdWxkIG1hdGNoIHRoZSBwYXNzd29yZCBvbiB0aGUgbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnRW1haWwgVmVyaWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQbGVhc2UgdmVyaWZ5IGFuZCBhY3RpdmF0ZSB5b3VyIElBVEkgUHVibGlzaGVyIGFjY291bnQgdGhyb3VnaCB5b3VyIHByb3ZpZGVkIGVtYWlsJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmllbGQgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhW2ZpZWxkXSA9IGVycm9yUmVzcG9uc2VbZmllbGRdID8gZXJyb3JSZXNwb25zZVtmaWVsZF1bMF0gOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBjbGVhblZhbGlkYXRpb25FcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVwZGF0ZSBJQVRJIGFuZCBzeXN0ZW0gRXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUVycm9ycyhlcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmV2ZXJ5KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT09ICcnOyB9KSB8fFxuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgdHlwZW9mIGVycm9yUmVzcG9uc2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8geyBlcnJvcjogZXJyb3JSZXNwb25zZSB9XG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuSWF0aUVycm9ycygpO1xuICAgICAgICAgICAgICAgIH0sIDM1MDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjbGVhbklhdGlFcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBlcnIgaW4gaWF0aUVycm9yKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGlhdGlFcnJvcltlcnJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWZXJpZmllcyBwdWJsaXNoZXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMSc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICAvLyBwYXNzd29yZDogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgICAvLyBwYXNzd29yZF9jb25maXJtYXRpb246IGVuY3J5cHQoXG4gICAgICAgICAgICAgICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgLy8gICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBmb3JtRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2lhdGkvcmVnaXN0ZXIvcHVibGlzaGVyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzEnXS5pc19jb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICgncHVibGlzaGVyX2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMSddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnIpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1Ym1pdHMgcmVnaXN0cmF0aW9uIEZvcm1cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeUNvbnRhY3RJbmZvcm1hdGlvbigpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzInO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmQ6IGVuY3J5cHQoXG4gICAgICAgICAgICAgICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2NvbnRhY3QnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuc3RlcCA9ICczJztcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgLy8gICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9hZGRpdGlvbmFsJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzQnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmQ6IGVuY3J5cHQoXG4gICAgICAgICAgICAgICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgLy8gcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGNsZWFuSWF0aUVycm9ycygpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaWF0aUVycm9yLCBlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnNCddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnNCddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCg0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyb3IpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q3VycmVudFN0ZXAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcC52YWx1ZS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0ZXAoY3VycmVudF9zdGVwKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudF9zdGVwID09PSBzdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RlcC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxscyBzdWJtaXQgZnVuY3Rpb24gYmFzZWQgb24gY3VycmVudCBzdGVwIHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnb1RvTmV4dEZvcm0oKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0ZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHZlcmlmeVB1Ymxpc2hlcigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHZlcmlmeUNvbnRhY3RJbmZvcm1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIHZlcmlmeUFkZGl0aW9uYWxJbmZvcm1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzRm9ybSgpIHtcbiAgICAgICAgICAgIGNsZWFuSWF0aUVycm9ycygpO1xuICAgICAgICAgICAgc3RlcC52YWx1ZSAtPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZWdpc3RlckZvcm06IHJlZ2lzdGVyRm9ybSxcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzOiBwdWJsaXNoZXJFeGlzdHMsXG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGdvVG9OZXh0Rm9ybTogZ29Ub05leHRGb3JtLFxuICAgICAgICAgICAgZ29Ub1ByZXZpb3VzRm9ybTogZ29Ub1ByZXZpb3VzRm9ybSxcbiAgICAgICAgICAgIGdldEN1cnJlbnRTdGVwOiBnZXRDdXJyZW50U3RlcCxcbiAgICAgICAgICAgIGNoZWNrU3RlcDogY2hlY2tTdGVwLFxuICAgICAgICAgICAgaWF0aUVycm9yOiBpYXRpRXJyb3IsXG4gICAgICAgICAgICBpc1RleHRGaWVsZDogaXNUZXh0RmllbGQsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBzdGVwOiBzdGVwLFxuICAgICAgICAgICAgcmVzaXplOiByZXNpemUsXG4gICAgICAgICAgICB0ZXh0YXJlYTogdGV4dGFyZWEsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJYXRpU3RhbmRhcmQnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ0lBVElfUHVibGlzaGVyX0FjdGl2aXR5X1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uOiAnSUFUSV9QdWJsaXNoZXJfT3JnYW5pc2F0aW9uX1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaGluZ0NoZWNrbGlzdCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlck1vZGVsKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ29wZW5BZGRNb2RlbCcsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJpZ2dlck1vZGVsOiB0cmlnZ2VyTW9kZWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgRW1haWxWZXJpZmljYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRW1haWxWZXJpZmljYXRpb24udnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtYWlsVmVyaWZpY2F0aW9uOiBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhZ2VuY3k6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdW5jYXRlZ29yaXplZE9yZ2FuaXNhdGlvblJlZ2lzdHJhdGlvbkFnZW5jeToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhZ2VuY3kgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWdlbmN5O1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybURhdGEuY291bnRyeTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSA9ICcnO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcl07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmlkZW50aWZpZXIgPSBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5XG4gICAgICAgICAgICAgICAgPyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ICsgJy0nICsgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlclxuICAgICAgICAgICAgICAgIDogZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcjtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmZ1bGxfbmFtZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEudXNlcm5hbWUgPSAoMCwgdXRpbHNfMS5nZW5lcmF0ZVVzZXJuYW1lKShmb3JtRGF0YS5mdWxsX25hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhZ2VuY2llcyA9IGFnZW5jeS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmb3JtRGF0YS5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHVuY2F0ZWdvcml6ZWRfMSA9IHByb3BzLnVuY2F0ZWdvcml6ZWRPcmdhbmlzYXRpb25SZWdpc3RyYXRpb25BZ2VuY3k7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1B1Ymxpc2hlciBJbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgdG8gcmVnaXN0ZXIgeW91ciBvcmdhbmlzYXRpb24nLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgb3JnYW5pc2F0aW9uLiBZb3Ugd2lsbCBuZWVkIHRvIHByb3ZpZGUgdGhlIHNhbWUgaW5mb3JtYXRpb24gdGhhdCB5b3UgdXNlZCB0byBjcmVhdGUgeW91ciBQdWJsaXNoZXIgQWNjb3VudCBvbiB0aGUgSUFUSSBSZWdpc3RyeSAoaWF0aXJlZ2lzdHJ5Lm9yZykuJyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUHVibGlzaGVyIE5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIFB1Ymxpc2hlciBOYW1lIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdQcm92aWRlIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pc2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zcGFuLTIgbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgSUQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgeW91ciBwdWJsaXNoZXIgSUQgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IFwiVGhpcyBpcyB0aGUgdW5pcXVlIElEIGZvciB5b3VyIG9yZ2FuaXNhdGlvbiB0aGF0IHlvdSBjcmVhdGVkIHdoZW4geW91IHNldCB1cCB5b3VyIElBVEkgUmVnaXN0cnkgUHVibGlzaGVyIEFjY291bnQuIEl0IHNob3VsZCBiZSBhIHNob3J0ZXIgdmVyc2lvbiBvZiB5b3VyIG9yZ2FuaXNhdGlvbidzIG5hbWUsIHdoaWNoIHdpbGwgaW5jbHVkZSBsb3dlcmNhc2UgbGV0dGVycyBhbmQgbWF5IGluY2x1ZGUgbnVtYmVycywgLSAoZGFzaCkgb3IgXyAodW5kZXJzY29yZSkuIEZvciBleGFtcGxlIG5lZl9tYWxpJyBmb3IgTmVhciBFYXN0IEZvdW5kYXRpb24gTWFsaS5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhIENvdW50cnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb3VudHJ5X3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdBZGQgdGhlIGxvY2F0aW9uIG9mIHlvdXIgb3JnYW5pc2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3k6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnT3JnYW5pc2F0aW9uIFJlZ2lzdHJhdGlvbiBBZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgYW4gT3JnYW5pc2F0aW9uIFJlZ2lzdHJhdGlvbiBBZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tYWdlbmN5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1Byb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIGFnZW5jeSBpbiB5b3VyIGNvdW50cnkgd2hlcmUgeW91IG9yZ2FuaXNhdGlvbiBpcyByZWdpc3RlcmVkLiBJZiB5b3UgZG8gbm90IGtub3cgdGhpcyBpbmZvcm1hdGlvbiBwbGVhc2UgZW1haWwgc3VwcG9ydEBpYXRpc3RhbmRhcmQub3JnLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbl9hZ2VuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX25vOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ09yZ2FuaXNhdGlvbiBSZWdpc3RyYXRpb24gTnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpc3RyYXRpb25fbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIFJlZ2lzdHJhdGlvbiBOdW1iZXIgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnQWRkIHRoZSByZWdpc3RyYXRpb24gbnVtYmVyIGZvciB5b3VyIG9yZ2FuaXNhdGlvbiB0aGF0IGhhcyBiZWVuIHByb3ZpZGVkIGJ5IHRoZSByZWdpc3RyYXRpb24gYWdlbmN5IG5hbWVkIGFib3ZlLicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICdFLmcuIDEyMzQ1NicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlhdGlfb3JnYW5pemF0aW9uYWxfaWRlbnRpZmllcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJQVRJIE9yZ2FuaXNhdGlvbiBJZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdUaGUgT3JnYW5pc2F0aW9uIElkZW50aWZpZXIgaXMgYSB1bmlxdWUgY29kZSBmb3IgeW91ciBvcmdhbmlzYXRpb24uIFRoaXMgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIE9yZ2FuaXNhdGlvbiBSZWdpc3RyYXRpb24gQWdlbmN5IGFuZCBSZWdpc3RyYXRpb24gTnVtYmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWFkOiA8YSBocmVmPVwiaHR0cDovL2lhdGlzdGFuZGFyZC5vcmcvZW4vZ3VpZGFuY2UvcHJlcGFyaW5nLW9yZ2FuaXNhdGlvbi9vcmdhbmlzYXRpb24tYWNjb3VudC9ob3ctdG8tY3JlYXRlLXlvdXItaWF0aS1vcmdhbmlzYXRpb24taWRlbnRpZmllci9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Ib3cgdG8gY3JlYXRlIHlvdXIgSUFUSSBvcmdhbmlzYXRpb24gaWRlbnRpZmllci48L2E+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJ1RoaXMgaXMgYXV0b2dlbmVyYXRlZCwgcGxlYXNlIG1ha2Ugc3VyZSB0byBmaWxsIHRoZSBhYm92ZSBmaWVsZHMgY29ycmVjdGx5LicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdBZG1pbmlzdHJhdG9yIEluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYW4gYWRtaW4gYWNjb3VudCBpbiBJQVRJIFB1Ymxpc2hlcicsXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJ1Byb3ZpZGUgeW91ciBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYW4gYWRtaW4gYWNjb3VudCBoZXJlIG9uIElBVEkgUHVibGlzaGVyLicsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bGxfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdGdWxsIE5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Z1bGxfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgeW91ciBmdWxsIG5hbWUgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Z1bGwtbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgdmFsaWQgZW1haWwgaGVyZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdVc2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIHVzZXJuYW1lIGhlcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICdZb3Ugd2lsbCBuZWVkIHRoaXMgbGF0ZXIgdG8gbG9naW4gaW50byBJQVRJIFB1Ymxpc2hlci4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdEZWZhdWx0IGxhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZWZhdWx0X2xhbmd1YWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHlvdXIgZGVmYXVsdCBsYW5ndWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RlZmF1bHQtbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLmxhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBwYXNzd29yZCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ29uZmlybSBQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRfY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBwYXNzd29yZCBoZXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncGFzc3dvcmQtY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnRW1haWwgVmVyaWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQbGVhc2UgdmVyaWZ5IGFuZCBhY3RpdmF0ZSB5b3VyIElBVEkgUHVibGlzaGVyIGFjY291bnQgdGhyb3VnaCB5b3VyIHByb3ZpZGVkIGVtYWlsJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlRm9ybUVycm9ycyA9IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnMgPT09IHZvaWQgMCkgeyBlcnJvcnMgPSBbXTsgfVxuICAgICAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJLZXkgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YVtlcnJLZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSBlcnJLZXkgaW4gZXJyb3JzID8gZXJyb3JzW2VycktleV1bMF0gOiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgLy8gICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdmVyaWZ5UHVibGlzaGVyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKCdwdWJsaXNoZXJfZXJyb3InIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzEnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuc291cmNlID0gcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJfc291cmNlX3R5cGU7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmNyeXB0KFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgLy8gICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1EYXRhLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JzLnBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzInXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDEpXG4gICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICBpZiAoc3RlcC52YWx1ZSA9PT0gMilcbiAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzRm9ybSgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluRm9vdGVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsT3JVc2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbE9yVXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gbG9naW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZvcm07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3JtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxPclVzZXJuYW1lOiBmb3JtRGF0YS5lbWFpbE9yVXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzd29yZDogZW5jcnlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZm9ybURhdGEucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBmb3JtRGF0YS5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAucG9zdCgnL2xvZ2luJywgZm9ybSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmVtYWlsT3JVc2VybmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgnZXJyb3JzJyBpbiByZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWxPclVzZXJuYW1lID0gZXJyb3JzLmVtYWlsT3JVc2VybmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLmVtYWlsT3JVc2VybmFtZVswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBsb2dpbjogbG9naW4sXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdXZWJGb290ZXInLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIE5hdkRyb3Bkb3duX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBOYXZEcm9wZG93bjogTmF2RHJvcGRvd25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYXV0aDogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN1cGVyQWRtaW46IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1uYXYnKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1uYXYnKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEZpcnN0IHdlIHdpbGwgbG9hZCBhbGwgb2YgdGhpcyBwcm9qZWN0J3MgSmF2YVNjcmlwdCBkZXBlbmRlbmNpZXMgd2hpY2hcbiAqIGluY2x1ZGVzIFZ1ZSBhbmQgb3RoZXIgbGlicmFyaWVzLiBJdCBpcyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IHdoZW5cbiAqIGJ1aWxkaW5nIHJvYnVzdCwgcG93ZXJmdWwgd2ViIGFwcGxpY2F0aW9ucyB1c2luZyBWdWUgYW5kIExhcmF2ZWwuXG4gKi9cbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19zbW9vdGhfc2Nyb2xsXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtc21vb3RoLXNjcm9sbFwiKSk7XG52YXIgc3ZnX3Z1ZTNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwic3ZnLXZ1ZTNcIikpO1xudmFyIFdlYkhlYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZVwiKSk7XG52YXIgV2ViRm9vdGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlXCIpKTtcbnZhciBBZG1pbkZvb3Rlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCIpKTtcbnZhciBXZWxjb21lUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlXCIpKTtcbnZhciBSZWdpc3RlclBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIikpO1xudmFyIEFib3V0UGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiKSk7XG52YXIgU3VwcG9ydFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiKSk7XG52YXIgSWF0aVN0YW5kYXJkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlXCIpKTtcbnZhciBQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZVwiKSk7XG52YXIgSWF0aVJlZ2lzdGVyUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIikpO1xuLyoqXG4gKiBWdWUgY29tcG9uZW50cyBmb3IgQWN0aXZpdGllcyBMaXN0aW5nXG4gKi9cbnZhciBSZXN1bHREZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlXCIpKTtcbnZhciBSZXN1bHRMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWVcIikpO1xudmFyIEluZGljYXRvckRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWVcIikpO1xudmFyIEluZGljYXRvckxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZVwiKSk7XG52YXIgUGVyaW9kc0RldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlXCIpKTtcbnZhciBQZXJpb2RzTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlXCIpKTtcbnZhciBUcmFuc2FjdGlvbkRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlXCIpKTtcbnZhciBEZXNjcmlwdGlvbkZvcm1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCIpKTtcbnZhciBFbGVtZW50c05vdGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlJbmRleF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiKSk7XG52YXIgQWRtaW5IZWFkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIikpO1xudmFyIEFjdGl2aXR5RGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZVwiKSk7XG52YXIgU2lkZWJhckhlbHBCbG9ja192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiKSk7XG52YXIgRGFzaGJvYXJkUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWVcIikpO1xudmFyIEltcG9ydExpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCIpKTtcbnZhciBYbHNMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiKSk7XG4vKipcbiAqIFNldHRpbmcgcGFnZVxuICovXG52YXIgU2V0dGluZ1BhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWVcIikpO1xuLy9BY3Rpdml0eSBEZWZhdWx0IFZhbHVlc1xudmFyIEFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZVwiKSk7XG4vKipcbiAqIHZ1ZSBjb21wb25lbnQgZm9yIHBhc3N3b3JkIHJlc2V0XG4gKi9cbnZhciBSZXNldFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiKSk7XG52YXIgUGFzc3dvcmRSZWNvdmVyeV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZVwiKSk7XG52YXIgUmVzZXRQYXNzd29yZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBkYXRhXG4gKi9cbnZhciBPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBMaXN0IC8gUHJveHlcbiAqL1xudmFyIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiKSk7XG52YXIgQWRtaW5CYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZVwiKSk7XG4vKipcbiAqIFVzZXIgTW9kdWxlIGNvbXBvbmVudHNcbiAqL1xudmFyIFVzZXJQcm9maWxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlXCIpKTtcbnZhciBVc2VyTGlzdGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZVwiKSk7XG4vKipcbiAqIEF1ZGl0IGNvbXBvbmVudFxuICovXG52YXIgQXVkaXRMaXN0aW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWVcIikpO1xuLyoqXG4gKiBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFN5c3RlbVZlcnNpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZVwiKSk7XG52YXIgdnVlM19hcGV4Y2hhcnRzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtYXBleGNoYXJ0c1wiKSk7XG52YXIgYXBwID0gKDAsIHZ1ZV8xLmNyZWF0ZUFwcCkoe30pO1xuYXBwLnVzZSh2dWUzX2FwZXhjaGFydHNfMS5kZWZhdWx0KTtcbi8qKlxuICogR2xvYmFsIENvbXBvbmVudHNcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnV2ViSGVhZGVyJywgV2ViSGVhZGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnV2ViRm9vdGVyJywgV2ViRm9vdGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWRtaW5Gb290ZXInLCBBZG1pbkZvb3Rlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1dlbGNvbWVTaWduaW4nLCBXZWxjb21lUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1JlZ2lzdGVyRm9ybScsIFJlZ2lzdGVyUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0lhdGlSZWdpc3RlckZvcm0nLCBJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiByZWdpc3RlcmluZyB3ZWIgcG9ydGFsIHBhZ2VzXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0Fib3V0UGFnZScsIEFib3V0UGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1N1cHBvcnRQYWdlJywgU3VwcG9ydFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJYXRpU3RhbmRhcmQnLCBJYXRpU3RhbmRhcmRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQdWJsaXNoaW5nQ2hlY2tsaXN0JywgUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgYWN0aXZpdHkgbGlzdGluZ1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVRlbXBsYXRlJywgQWN0aXZpdHlJbmRleF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0xvZ2dlZGluSGVhZGVyJywgQWRtaW5IZWFkZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0aWVzRGV0YWlsJywgQWN0aXZpdHlEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdEZXNjcmlwdGlvbkZvcm0nLCBEZXNjcmlwdGlvbkZvcm1fdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdFbGVtZW50c05vdGUnLCBFbGVtZW50c05vdGVfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHREZXRhaWwnLCBSZXN1bHREZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHRMaXN0JywgUmVzdWx0TGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckRldGFpbCcsIEluZGljYXRvckRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckxpc3QnLCBJbmRpY2F0b3JMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGVyaW9kc0RldGFpbCcsIFBlcmlvZHNEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQZXJpb2RzTGlzdCcsIFBlcmlvZHNMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25MaXN0JywgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25EZXRhaWwnLCBUcmFuc2FjdGlvbkRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1NpZGViYXJIZWxwQmxvY2snLCBTaWRlYmFySGVscEJsb2NrX3Z1ZV8xLmRlZmF1bHQpO1xuLypcbiAqIEltcG9ydCBwYWdlXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXR5VXBsb2FkJywgQWN0aXZpdHlVcGxvYWRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVhsc1VwbG9hZCcsIEFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSW1wb3J0TGlzdCcsIEltcG9ydExpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdYbHNMaXN0JywgWGxzTGlzdF92dWVfMS5kZWZhdWx0KTtcbi8vIGRhc2hib2FyZCBwYWdlXG5hcHAuY29tcG9uZW50KCdEYXNoYm9hcmRQYWdlJywgRGFzaGJvYXJkUGFnZV92dWVfMS5kZWZhdWx0KTtcbi8qXG4gKiBTZXR0aW5nIHBhZ2VcbiAqL1xuYXBwLmNvbXBvbmVudCgnU2V0dGluZ1BhZ2UnLCBTZXR0aW5nUGFnZV92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ1N5c3RlbVZlcnNpb24nLCBTeXN0ZW1WZXJzaW9uX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnQWN0aXZpdHlEZWZhdWx0VmFsdWVzJywgQWN0aXZpdHlEZWZhdWx0VmFsdWVfdnVlXzEuZGVmYXVsdCk7XG4vKlxuUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgcGFzc3dvcmQgcmVzZXRcbiovXG5hcHBcbiAgICAuY29tcG9uZW50KCdSZXNldFBhZ2UnLCBSZXNldFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQYXNzd29yZFJlY292ZXJ5JywgUGFzc3dvcmRSZWNvdmVyeV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Jlc2V0UGFzc3dvcmQnLCBSZXNldFBhc3N3b3JkX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyB1c2VyIG1vZHVsZSByZWxhdGVkIHZ1ZSBjb21wb25lbnRzXG4gKi9cbmFwcC5jb21wb25lbnQoJ1VzZXJQcm9maWxlJywgVXNlclByb2ZpbGVfdnVlXzEuZGVmYXVsdCkuY29tcG9uZW50KCdVc2VyTGlzdGluZycsIFVzZXJMaXN0aW5nX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xuYXBwLmNvbXBvbmVudCgnSG92ZXJUZXh0JywgSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnUGFnZVRpdGxlJywgUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnTG9hZGluZ1N0YXRlJywgTG9hZGVyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gZGF0YVxuICovXG5hcHAuY29tcG9uZW50KCdPcmdhbmlzYXRpb25EYXRhJywgT3JnYW5pc2F0aW9uRGF0YV92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUHJveHlcbiAqL1xuYXBwLmNvbXBvbmVudCgnT3JnYW5pc2F0aW9uTGlzdCcsIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdBZG1pbkJhcicsIEFkbWluQmFyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBBdWRpdFxuICovXG5hcHAuY29tcG9uZW50KCdBdWRpdExpc3RpbmcnLCBBdWRpdExpc3RpbmdfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIEV4dGVuc2lvbiB0byBpbmxpbmUgU1ZHIGZpbGVzIHdpdGggVnVlLmpzIGFuZCBvcHRpbWl6ZSB0aGVtIGF1dG9tYXRpY2FsbHkgd2l0aCBTVkdPXG4gKi9cbmFwcC51c2Uoc3ZnX3Z1ZTNfMS5kZWZhdWx0KTtcbmFwcC51c2UodnVlM19zbW9vdGhfc2Nyb2xsXzEuZGVmYXVsdCk7XG4vLyBkZXRlY3Qgc2Nyb2xsIHVwIG9yIGRvd25cbnZhciBsYXN0U2Nyb2xsVG9wID0gMCwgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbnZhciBzdGlja3lTaWRlYmFyID0gZnVuY3Rpb24gKGVsLCBwYXJlbnRXcmFwcGVyKSB7XG4gICAgLy9zdGlja3kgZWxlbWVudC9jaGlsZCBkYXRhXG4gICAgdmFyIHN0aWNreUVsZW1lbnQgPSBlbC5maXJzdENoaWxkLCBlbEhlaWdodCA9IHN0aWNreUVsZW1lbnQub2Zmc2V0SGVpZ2h0LCBzdGlja3lDdXJyZW50VG9wID0gc3RpY2t5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIHN0aWNreUN1cnJlbnRCb3R0b20gPSBzdGlja3lFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAvL3N0aWNreSBlbGVtZW50J3MgcGFyZW50L3dyYXBwZXIgZGF0YVxuICAgIHZhciBlbFdpZHRoID0gZWwub2Zmc2V0V2lkdGgsIGVsU2Nyb2xsTGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsIGVsU2Nyb2xsVG9wID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLCBlbFNjcm9sbEJvdHRvbSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSwgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgLy8gd2luZG93L2RvY3VtZW50IGRhdGFcbiAgICB2YXIgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5wYWdlWU9mZnNldCwgdGFyZ2V0U2Nyb2xsUG9zaXRpb24gPSBlbFNjcm9sbEJvdHRvbSArIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gLSB2aWV3cG9ydEhlaWdodDtcbiAgICAvLyBwYXJlbnQgd3JhcHBlciAvIHN0aWNreSBib3VuZGFyeVxuICAgIHZhciBlbFBhcmVudCA9IHN0aWNreUVsZW1lbnQuY2xvc2VzdChwYXJlbnRXcmFwcGVyKSwgZWxQYXJlbnRCb3R0b20gPSBlbFBhcmVudCA9PT0gbnVsbCB8fCBlbFBhcmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWxQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgIC8vIHNjcm9sbCBiZWhhdmlvdXJcbiAgICB2YXIgaXNTY3JvbGxEb3duID0gY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA+IGxhc3RTY3JvbGxUb3AgPyB0cnVlIDogZmFsc2U7XG4gICAgdmFyIGlzU2Nyb2xsVXAgPSAhaXNTY3JvbGxEb3duO1xuICAgIGxhc3RTY3JvbGxUb3AgPVxuICAgICAgICBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIDw9IDAgPyAwIDogY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbjtcbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5VG9wKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCBcIi5jb25jYXQoc3RpY2t5Q3VycmVudFRvcCAtIGVsU2Nyb2xsVG9wLCBcInB4LCAwKTtcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpIHtcbiAgICAgICAge1xuICAgICAgICAgICAgKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAwKVxuICAgICAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIDogMTY7XG4gICAgICAgIH1cbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogYXV0bzsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IGJvdHRvbTpcIikuY29uY2F0KCh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgIDE2KVxuICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICA6IDE2LCBcInB4OyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25GaXhlZFRvcCgpIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6MHB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreU5vbmUoKSB7XG4gICAgICAgIGlmICh0YXJnZXRTY3JvbGxQb3NpdGlvbiA8PSBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAodmlld3BvcnRIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSArIDQ1MCA+PSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyBib3R0b206IDA7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreUJvdW5kKCkge1xuICAgICAgICBpZiAoZWxQYXJlbnRCb3R0b20gJiYgZWxQYXJlbnRCb3R0b20gPCBzdGlja3lDdXJyZW50Qm90dG9tKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGxEb3duKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdHRvbSc6XG4gICAgICAgICAgICAgICAgaWYgKGVsUGFyZW50Qm90dG9tICYmIGVsUGFyZW50Qm90dG9tIDwgc3RpY2t5Q3VycmVudEJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRyYW5zbGF0ZSc6XG4gICAgICAgICAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRCb3R0b20gPD0gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeGVkLXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93bkZpeGVkVG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreU5vbmUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreUJvdW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lUb3AoKSB7XG4gICAgICAgIGlmIChlbFNjcm9sbFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgIFwiO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGJvdHRvbTpcIi5jb25jYXQoKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAxNilcbiAgICAgICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICA6IDE2LCBcInB4OyBsZWZ0OiBcIikuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHggXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4IFwiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwRml4ZWRUb3AoKSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOjBweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCkge1xuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm91bmQoKSB7XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmZpeGVkOyB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIiB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbFVwKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3R0b20nOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhlZC10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwRml4ZWRUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10cmFuc2xhdGUnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgLy9ub3RoaW5nIHRvIGRvIGhlcmVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lCb3VuZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbEhlaWdodCA8IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgaWYgKGlzU2Nyb2xsRG93biAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbERvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1Njcm9sbFVwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsVXAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG59O1xud2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL2NoZWNrIGNvbnN0YW50bHkgaW4gYSBpbnRlciBmb3Igd2hlbiBzdXBwb3J0IGJ1dHRvbiBlbnRlcnMgdGhlIGRvbVxuICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b24gPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkIHJnYigyMSwgODMsIDEwMiknO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICB9XG4gICAgfSwgMTApO1xufTtcbi8vIGN1c3RvbSBkaXJlY3RpdmVcbmFwcC5kaXJlY3RpdmUoJ3N0aWNreS1jb21wb25lbnQnLCB7XG4gICAgbW91bnRlZDogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIHZhciBib3VuZGFyeSA9IChiaW5kaW5nLnZhbHVlIHx8IHt9KS5ib3VuZGFyeTtcbiAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeSB8fCAnYm9keSc7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBib3VuZGFyeSk7IH0pO1xuICAgIH0sXG4gICAgdW5tb3VudGVkOiBmdW5jdGlvbiAoZWwsIGJpbmRpbmcpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IGJpbmRpbmcudmFsdWUuYm91bmRhcnk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBwYXJlbnQpOyB9KTtcbiAgICB9LFxufSk7XG4vKipcbiAqIE5leHQsIHdlIHdpbGwgY3JlYXRlIGEgZnJlc2ggVnVlIGFwcGxpY2F0aW9uIGluc3RhbmNlIGFuZCBhdHRhY2ggaXQgdG9cbiAqIHRoZSBwYWdlLiBUaGVuLCB5b3UgbWF5IGJlZ2luIGFkZGluZyBjb21wb25lbnRzIHRvIHRoaXMgYXBwbGljYXRpb25cbiAqIG9yIGN1c3RvbWl6ZSB0aGUgSmF2YVNjcmlwdCBzY2FmZm9sZGluZyB0byBmaXQgeW91ciB1bmlxdWUgbmVlZHMuXG4gKi9cbmFwcC5tb3VudCgnI2FwcCcpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IHZvaWQgMDtcbnZhciBjb3JlRWxlbWVudHNfanNvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9wdWJsaWMvRGF0YS9jb3JlRWxlbWVudHMuanNvblwiKSk7XG5mdW5jdGlvbiBhY3Rpdml0eUNvcmVFbGVtZW50cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY29yZUVsZW1lbnRzX2pzb25fMS5kZWZhdWx0KTtcbn1cbmV4cG9ydHMuYWN0aXZpdHlDb3JlRWxlbWVudHMgPSBhY3Rpdml0eUNvcmVFbGVtZW50cztcbmZ1bmN0aW9uIG9yZ01hbmRhdG9yeUVsZW1lbnRzKCkge1xuICAgIHZhciBlbGVtZW50cyA9IFsncmVwb3J0aW5nX29yZycsICduYW1lJ107XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuZXhwb3J0cy5vcmdNYW5kYXRvcnlFbGVtZW50cyA9IG9yZ01hbmRhdG9yeUVsZW1lbnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5mdW5jdGlvbiBkYXRlRm9ybWF0KGRhdGUsIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSAnTU1NTSBERCwgWVlZWSc7IH1cbiAgICB2YXIgZm9ybWF0X2RhdGU7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnZnJvbU5vdyc6XG4gICAgICAgICAgICBmb3JtYXRfZGF0ZSA9IGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZnJvbU5vdygpIDogJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoZm9ybWF0KSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0X2RhdGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkYXRlRm9ybWF0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEdldCBjdXJyZW50IGFjdGl2aXR5IHRpdGxlXG4gKlxuICogQHJldHVybiB0aXRsZSB0ZXh0XG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGdldEFjdGl2aXR5VGl0bGUoZGF0YSwgbGFuZ3VhZ2UpIHtcbiAgICB2YXIgdGl0bGUgPSAnVW50aXRsZWQnO1xuICAgIC8vIHRpdGxlIHJldHVybiBpZiBsYW5ndWFnZSBleGlzdCBpbiBkYXRhXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBkYXRhXzEgPSBkYXRhOyBfaSA8IGRhdGFfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciB0ID0gZGF0YV8xW19pXTtcbiAgICAgICAgICAgIGlmICh0Lmxhbmd1YWdlICYmIHQubGFuZ3VhZ2UgPT09IGxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSB0Lm5hcnJhdGl2ZSAmJiB0Lm5hcnJhdGl2ZSAhPT0gJycgPyB0Lm5hcnJhdGl2ZSA6ICdVbnRpdGxlZCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGRlZmF1bHQgdGl0bGUgcmV0dXJuIGlmIGxhbmd1YWdlIGRvZXMgbm90IGV4aXN0cyBpbiBkYXRhXG4gICAgICAgIHRpdGxlID1cbiAgICAgICAgICAgIGRhdGFbJzAnXS5uYXJyYXRpdmUgJiYgZGF0YVsnMCddLm5hcnJhdGl2ZSAhPT0gJydcbiAgICAgICAgICAgICAgICA/IGRhdGFbJzAnXS5uYXJyYXRpdmVcbiAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCc7XG4gICAgfVxuICAgIHJldHVybiB0aXRsZTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGdldEFjdGl2aXR5VGl0bGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU2hhcmVkTWluaW1pemUgPSB2b2lkIDA7XG4vLyB1c2VTaGFyZWRTdGF0ZS5qc1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdXNlU2hhcmVkTWluaW1pemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGlzUHVibGlzaGVkTW9kYWxNaW5pbWl6ZWQgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCdpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkJywgZmFsc2UpO1xuICAgIHJldHVybiBpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkO1xufTtcbmV4cG9ydHMudXNlU2hhcmVkTWluaW1pemUgPSB1c2VTaGFyZWRNaW5pbWl6ZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc0V2ZXJ5VmFsdWVOdWxsID0gZXhwb3J0cy5vbmx5RGVwcmVjYXRlZFN0YXR1c01hcCA9IGV4cG9ydHMuZ2VuZXJhdGVVc2VybmFtZSA9IGV4cG9ydHMudHJ1bmNhdGVUZXh0ID0gZXhwb3J0cy5rZWJhYkNhc2VUb1NuYWtlY2FzZSA9IGV4cG9ydHMuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UgPSBleHBvcnRzLnNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlID0gZXhwb3J0cy5pc0pzb24gPSBleHBvcnRzLnJlZHVjZURvY3VtZW50TGluayA9IGV4cG9ydHMuY291bnREb2N1bWVudExpbmsgPSBleHBvcnRzLmdldExvY2F0aW9uID0gdm9pZCAwO1xudmFyIG5hbm9pZF8xID0gcmVxdWlyZShcIm5hbm9pZFwiKTtcbmZ1bmN0aW9uIGdldExvY2F0aW9uKGRhdGEpIHtcbiAgICB2YXIgbG9jYXRpb25zID0gW107XG4gICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmVmZXJlbmNlO1xuICAgIH0pO1xuICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5zbGljZSgwLCAtMSk7XG4gICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbnMuam9pbignLCAnKSArICcgJyArICdhbmQnICsgJyAnICsgbGFzdExvY2F0aW9uO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxhc3RMb2NhdGlvbjtcbiAgICB9XG59XG5leHBvcnRzLmdldExvY2F0aW9uID0gZ2V0TG9jYXRpb247XG5mdW5jdGlvbiBjb3VudERvY3VtZW50TGluayhkb2N1bWVudF9saW5rKSB7XG4gICAgdmFyIGRvY3VtZW50Q291bnQgPSAwO1xuICAgIGZvciAodmFyIGRvY3VtZW50XzEgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmtbZG9jdW1lbnRfMV0sIFtdKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0gPT09IG51bGw7IH0pKSB7XG4gICAgICAgICAgICBkb2N1bWVudENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50Q291bnQ7XG59XG5leHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gY291bnREb2N1bWVudExpbms7XG5mdW5jdGlvbiByZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaywgdmFsdWVzKSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudF9saW5rID09PSAnb2JqZWN0JyAmJiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgICAgICB2YWx1ZXMuY29uY2F0KHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2tleV0sIHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YWx1ZXMucHVzaChkb2N1bWVudF9saW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydHMucmVkdWNlRG9jdW1lbnRMaW5rID0gcmVkdWNlRG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gaXNKc29uKHN0cikge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04ucGFyc2Uoc3RyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNKc29uID0gaXNKc29uO1xuZnVuY3Rpb24gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnICcpLmpvaW4oJy0nKTtcbn1cbmV4cG9ydHMuc2VudGVuY2VDYXNlVG9LZWJhYkNhc2UgPSBzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZTtcbmZ1bmN0aW9uIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKHN0cikge1xuICAgIHZhciB3b3JkcyA9IHN0ci5zcGxpdCgnXycpO1xuICAgIHZhciBzZW50ZW5jZSA9IHdvcmRzWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZHNbMF0uc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbnRlbmNlICs9ICcgJyArIHdvcmRzW2ldLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzZW50ZW5jZTtcbn1cbmV4cG9ydHMuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UgPSBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTtcbmZ1bmN0aW9uIGtlYmFiQ2FzZVRvU25ha2VjYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvLS9nLCAnXycpO1xufVxuZXhwb3J0cy5rZWJhYkNhc2VUb1NuYWtlY2FzZSA9IGtlYmFiQ2FzZVRvU25ha2VjYXNlO1xuZnVuY3Rpb24gdHJ1bmNhdGVUZXh0KHRleHQsIG1heExlbmd0aCkge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKSArICcuLi4nO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbn1cbmV4cG9ydHMudHJ1bmNhdGVUZXh0ID0gdHJ1bmNhdGVUZXh0O1xuZnVuY3Rpb24gZ2VuZXJhdGVVc2VybmFtZShmdWxsbmFtZSkge1xuICAgIGlmIChmdWxsbmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBzbmFrZUNhc2VTdHJpbmcgPSBmdWxsbmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJ18nKTtcbiAgICAgICAgdmFyIHJhbmRvbURpZ2l0cyA9ICgwLCBuYW5vaWRfMS5jdXN0b21BbHBoYWJldCkoJzAxMjM0NTY3ODknLCAyKTtcbiAgICAgICAgcmV0dXJuIHNuYWtlQ2FzZVN0cmluZyArICdfJyArIHBhcnNlSW50KHJhbmRvbURpZ2l0cygpKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZXhwb3J0cy5nZW5lcmF0ZVVzZXJuYW1lID0gZ2VuZXJhdGVVc2VybmFtZTtcbmZ1bmN0aW9uIG9ubHlEZXByZWNhdGVkU3RhdHVzTWFwKGVsZW1lbnRzKSB7XG4gICAgdmFyIGRlcHJlY2F0ZWRTdGF0dXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE9iamVjdC5rZXlzKGVsZW1lbnRzKS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSBpbiBlbGVtZW50cyAmJiAnZGVwcmVjYXRpb25fc3RhdHVzX21hcCcgaW4gZWxlbWVudHNbaV0pIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGRlcHJlY2F0ZWRTdGF0dXMucHVzaChlbGVtZW50c1tpXVsnZGVwcmVjYXRpb25fc3RhdHVzX21hcCddKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVwcmVjYXRlZFN0YXR1cztcbn1cbmV4cG9ydHMub25seURlcHJlY2F0ZWRTdGF0dXNNYXAgPSBvbmx5RGVwcmVjYXRlZFN0YXR1c01hcDtcbmZ1bmN0aW9uIGlzRXZlcnlWYWx1ZU51bGwoZGF0YSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBkYXRhLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpc0V2ZXJ5VmFsdWVOdWxsKGl0ZW0pOyB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGF0YSkuZXZlcnkoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc0V2ZXJ5VmFsdWVOdWxsKHZhbHVlKTsgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0YSA9PT0gbnVsbDtcbiAgICB9XG59XG5leHBvcnRzLmlzRXZlcnlWYWx1ZU51bGwgPSBpc0V2ZXJ5VmFsdWVOdWxsO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNuID0gdm9pZCAwO1xudmFyIGNsc3hfMSA9IHJlcXVpcmUoXCJjbHN4XCIpO1xudmFyIHRhaWx3aW5kX21lcmdlXzEgPSByZXF1aXJlKFwidGFpbHdpbmQtbWVyZ2VcIik7XG5mdW5jdGlvbiBjbigpIHtcbiAgICB2YXIgaW5wdXRzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgaW5wdXRzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiAoMCwgdGFpbHdpbmRfbWVyZ2VfMS50d01lcmdlKSgoMCwgY2xzeF8xLmNsc3gpKGlucHV0cykpO1xufVxuZXhwb3J0cy5jbiA9IGNuO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVzZVN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlID0ge1xuICAgIHNlbGVjdGVkQWN0aXZpdGllczogW10sXG4gICAgYnVsa1B1Ymxpc2hMZW5ndGg6IDAsXG4gICAgY2FuY2VsVXBsb2FkOiBmYWxzZSxcbiAgICBzdGFydEJ1bGtQdWJsaXNoOiBmYWxzZSxcbiAgICBzdGFydFZhbGlkYXRpb246IGZhbHNlLFxuICAgIHN0YXJ0Q29yZVZhbGlkYXRpb246IGZhbHNlLFxuICAgIHN0YXJ0UHVibGlzaGluZ1JldHJ5OiBmYWxzZSxcbiAgICB2YWxpZGF0aW9uUnVubmluZzogZmFsc2UsXG4gICAgdmFsaWRhdGluZ0FjdGl2aXRpZXM6ICcnLFxuICAgIG1heGltaXplWGxzOiB0cnVlLFxuICAgIHN0YXJ0WGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNvbXBsZXRlWGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNhbmNlbERvd25sb2FkOiBmYWxzZSxcbiAgICBjbG9zZVhsc01vZGVsOiBmYWxzZSxcbiAgICB2YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzOiBbXSxcbiAgICBidWxrcHVibGlzaEFjdGl2aXRpZXM6IHtcbiAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eV9pZDogMCxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eV90aXRsZTogJycsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25faWQ6IDAsXG4gICAgICAgICAgICBqb2JfYmF0Y2hfdXVpZDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBidWxrQWN0aXZpdHlQdWJsaXNoU3RhdHVzOiB7XG4gICAgICAgIGlhdGlWYWxpZGF0b3JMb2FkZXI6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uTmFtZXM6IFtdLFxuICAgICAgICB2YWxpZGF0aW9uU3RhdHM6IHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiAwLFxuICAgICAgICAgICAgdG90YWw6IDAsXG4gICAgICAgICAgICBmYWlsZWQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIGltcG9ydGVkQWN0aXZpdGllc0xpc3Q6IFtdLFxuICAgICAgICBzaG93VmFsaWRhdGlvbkVycm9yOiBmYWxzZSxcbiAgICAgICAgY29tcGxldGVkU3RlcHM6IFtdLFxuICAgICAgICBwdWJsaXNoaW5nOiB7XG4gICAgICAgICAgICByZXNwb25zZTogbnVsbCxcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IG51bGwsXG4gICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgaWRzOiBbXSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHB1Ymxpc2hBbGVydFZhbHVlOiBmYWxzZSxcbiAgICBpc1B1Ymxpc2hlZE1vZGFsTWluaW1pemVkOiBmYWxzZSxcbiAgICBzaG93QnVsa3B1Ymxpc2g6IHRydWUsXG4gICAgc3RhcnROZXdQdWJsaXNoaW5nOiB7XG4gICAgICAgIHN0YXRlOiBmYWxzZSxcbiAgICB9LFxuICAgIGFjdGl2aXRpZXNMaXN0OiB7fSxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2xvc2VYbHNNb2RlbCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVWYWxpZGF0aW5nQWN0aXZpdGllc05hbWVzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUudmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbFVwbG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLm1heGltaXplWGxzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydFhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2FuY2VsRG93bmxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydEJ1bGtQdWJsaXNoID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0VmFsaWRhdGlvbjogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnN0YXJ0VmFsaWRhdGlvbiA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVWYWxpZGF0aW5nQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnZhbGlkYXRpbmdBY3Rpdml0aWVzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb246IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydENvcmVWYWxpZGF0aW9uID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVB1Ymxpc2hSZXRyeTogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnN0YXJ0UHVibGlzaGluZ1JldHJ5ID0gcGF5bG9hZDtcbiAgICB9LFxufTtcbnZhciBhY3Rpb25zID0ge1xuICAgIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllc05hbWVzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVWYWxpZGF0aW5nQWN0aXZpdGllc05hbWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDbG9zZVhsc01vZGVsJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsVXBsb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlTWF4aW1pemVYbHMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDYW5jZWxEb3dubG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0VmFsaWRhdGlvbjogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlU3RhcnRWYWxpZGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlVmFsaWRhdGluZ0FjdGl2aXRpZXMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb246IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVB1Ymxpc2hSZXRyeTogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlUHVibGlzaFJldHJ5JywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlMaXN0U3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlLFxuICAgIG11dGF0aW9uczogbXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnMsXG59KTtcbmZ1bmN0aW9uIHVzZVN0b3JlKCkge1xuICAgIHJldHVybiBhY3Rpdml0eUxpc3RTdG9yZTtcbn1cbmV4cG9ydHMudXNlU3RvcmUgPSB1c2VTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZXRhaWxTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICB1blB1Ymxpc2hlZDogZmFsc2UsXG4gICAgc2hvd1B1Ymxpc2hlZDogZmFsc2UsXG4gICAgcHVibGlzaEVycm9yczogW10sXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBidWxrcHVibGlzaExlbmd0aDogMCxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVVuUHVibGlzaGVkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUudW5QdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlU2hvd1B1Ymxpc2hlZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNob3dQdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlUHVibGlzaEVycm9yczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hFcnJvcnMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlSXNMb2FkaW5nOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuaXNMb2FkaW5nID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hMZW5ndGggPSBwYXlsb2FkO1xuICAgIH0sXG59O1xudmFyIGFjdGlvbnMgPSB7XG4gICAgdXBkYXRlVW5QdWJsaXNoZWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVVuUHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTaG93UHVibGlzaGVkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTaG93UHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVQdWJsaXNoRXJyb3JzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVQdWJsaXNoRXJyb3JzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVJc0xvYWRpbmc6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUlzTG9hZGluZycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlEZXRhaWxTdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gZGV0YWlsU3RvcmUoKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5RGV0YWlsU3RvcmU7XG59XG5leHBvcnRzLmRldGFpbFN0b3JlID0gZGV0YWlsU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU3RvcmUgPSBleHBvcnRzLnN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL3N0YXRlXCIpO1xudmFyIG11dGF0aW9uXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL211dGF0aW9uXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvYWN0aW9uc1wiKTtcbmV4cG9ydHMuc3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlXzEuc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbl8xLm11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zXzEuYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuc3RvcmU7XG59XG5leHBvcnRzLnVzZVN0b3JlID0gdXNlU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWN0aW9ucyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgbXV0YXRpb25fMSA9IHJlcXVpcmUoXCIuL211dGF0aW9uXCIpO1xudmFyIEFjdGlvblR5cGVzO1xuKGZ1bmN0aW9uIChBY3Rpb25UeXBlcykge1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCJdID0gXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCJdID0gXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX0VSUk9SXCJdID0gXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0lTX0xPQURJTkdcIl0gPSBcIlVQREFURV9JU19MT0FESU5HXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCJdID0gXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCI7XG59KShBY3Rpb25UeXBlcyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgfHwgKGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB7fSkpO1xuZXhwb3J0cy5hY3Rpb25zID0gKF9hID0ge30sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STV0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GT10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk8sIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFUywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUiwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfSVNfTE9BRElOR10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5JU19MT0FESU5HLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuQlVMS1BVQkxJU0hfTEVOR1RILCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdXRhdGlvbnMgPSBleHBvcnRzLk11dGF0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgTXV0YXRpb25UeXBlcztcbihmdW5jdGlvbiAoTXV0YXRpb25UeXBlcykge1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiXSA9IFwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIl0gPSBcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiXSA9IFwiVVBEQVRFX0RFRkFVTFRfRVJST1JcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiSVNfTE9BRElOR1wiXSA9IFwiSVNfTE9BRElOR1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJCVUxLUFVCTElTSF9MRU5HVEhcIl0gPSBcIkJVTEtQVUJMSVNIX0xFTkdUSFwiO1xufSkoTXV0YXRpb25UeXBlcyA9IGV4cG9ydHMuTXV0YXRpb25UeXBlcyB8fCAoZXhwb3J0cy5NdXRhdGlvblR5cGVzID0ge30pKTtcbmV4cG9ydHMubXV0YXRpb25zID0gKF9hID0ge30sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoaW5nRm9ybVtwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk9dID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdJbmZvW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFU10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEZvcm1bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLklTX0xPQURJTkddID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2EpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0YXRlID0gdm9pZCAwO1xuZXhwb3J0cy5zdGF0ZSA9IHtcbiAgICBwdWJsaXNoaW5nRm9ybToge1xuICAgICAgICBvcmdhbml6YXRpb25faWQ6ICcnLFxuICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgICAgICB0b2tlbl9zdGF0dXM6ICcnLFxuICAgIH0sXG4gICAgcHVibGlzaGluZ0luZm86IHtcbiAgICAgICAgcHVibGlzaGVyX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIHRva2VuX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzVmVyaWZpY2F0aW9uUmVxdWVzdGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGRlZmF1bHRGb3JtOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIHB1Ymxpc2hpbmdFcnJvcjoge1xuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgIH0sXG4gICAgZGVmYXVsdEVycm9yOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIGlzTG9hZGluZzoge30sXG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlcG9ydGluZ09yZ2FuaXphdGlvbiA9IGV4cG9ydHMuUGxhbm5lZERpc2J1cnNlbWVudCA9IGV4cG9ydHMuSHVtYW5pdGFyaWFuU2NvcGUgPSBleHBvcnRzLlRhZyA9IGV4cG9ydHMuUG9saWN5TWFya2VyID0gZXhwb3J0cy5SZWxhdGVkQWN0aXZpdHkgPSBleHBvcnRzLkNvbmRpdGlvbnMgPSBleHBvcnRzLkxlZ2FjeURhdGEgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuTG9jYXRpb24gPSBleHBvcnRzLlRyYW5zYWN0aW9ucyA9IGV4cG9ydHMuUmVjaXBpZW50UmVnaW9uID0gZXhwb3J0cy5SZWNpcGllbnRDb3VudHJ5ID0gZXhwb3J0cy5QYXJ0aWNpcGF0aW5nT3JnID0gZXhwb3J0cy5Db250YWN0SW5mbyA9IGV4cG9ydHMuQWN0aXZpdHlEYXRlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IGV4cG9ydHMuVGl0bGVFbGVtZW50ID0gZXhwb3J0cy5PdGhlcklkZW50aWZpZXIgPSBleHBvcnRzLklhdGlJZGVudGlmaWVyID0gZXhwb3J0cy5SZXN1bHQgPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBSZXN1bHRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVzdWx0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIElhdGlJZGVudGlmaWVyX3Z1ZV8xID0gcmVxdWlyZShcIi4vSWF0aUlkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSWF0aUlkZW50aWZpZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJYXRpSWRlbnRpZmllcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBPdGhlcklkZW50aWZpZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9PdGhlcklkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiT3RoZXJJZGVudGlmaWVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoT3RoZXJJZGVudGlmaWVyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdGl2aXR5RGF0ZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FjdGl2aXR5RGF0ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBY3Rpdml0eURhdGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3Rpdml0eURhdGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29udGFjdEluZm9fdnVlXzEgPSByZXF1aXJlKFwiLi9Db250YWN0SW5mby52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb250YWN0SW5mb1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KENvbnRhY3RJbmZvX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBhcnRpY2lwYXRpbmdPcmdfdnVlXzEgPSByZXF1aXJlKFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnRpY2lwYXRpbmdPcmdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQYXJ0aWNpcGF0aW5nT3JnX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25zLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMb2NhdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0xvY2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxvY2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTG9jYXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgU2VjdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vU2VjdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNlY3RvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFNlY3Rvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMZWdhY3lEYXRhX3Z1ZV8xID0gcmVxdWlyZShcIi4vTGVnYWN5RGF0YS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMZWdhY3lEYXRhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTGVnYWN5RGF0YV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBDb25kaXRpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vQ29uZGl0aW9ucy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb25kaXRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQ29uZGl0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWxhdGVkQWN0aXZpdHlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVsYXRlZEFjdGl2aXR5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVsYXRlZEFjdGl2aXR5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBvbGljeU1hcmtlcl92dWVfMSA9IHJlcXVpcmUoXCIuL1BvbGljeU1hcmtlci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQb2xpY3lNYXJrZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQb2xpY3lNYXJrZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGFnX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGFnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBIdW1hbml0YXJpYW5TY29wZV92dWVfMSA9IHJlcXVpcmUoXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkh1bWFuaXRhcmlhblNjb3BlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSHVtYW5pdGFyaWFuU2NvcGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSA9IHJlcXVpcmUoXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGxhbm5lZERpc2J1cnNlbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBsYW5uZWREaXNidXJzZW1lbnRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QZXJpb2QgPSBleHBvcnRzLkJhc2VsaW5lID0gZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSBleHBvcnRzLkFnZ3JlZ2F0aW9uU3RhdHVzID0gZXhwb3J0cy5Bc2NlbmRpbmcgPSBleHBvcnRzLk1lYXN1cmUgPSBleHBvcnRzLlRpdGxlRWxlbWVudCA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgTWVhc3VyZV92dWVfMSA9IHJlcXVpcmUoXCIuL01lYXN1cmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWVhc3VyZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KE1lYXN1cmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW5kaWNhdG9yQXNjZW5kaW5nX3Z1ZV8xID0gcmVxdWlyZShcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFzY2VuZGluZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEluZGljYXRvckFzY2VuZGluZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBZ2dyZWdhdGlvblN0YXR1c192dWVfMSA9IHJlcXVpcmUoXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFnZ3JlZ2F0aW9uU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWdncmVnYXRpb25TdGF0dXNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlZmVyZW5jZV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlZmVyZW5jZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWZlcmVuY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWZlcmVuY2VfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBCYXNlbGluZV92dWVfMSA9IHJlcXVpcmUoXCIuL0Jhc2VsaW5lLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhc2VsaW5lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQmFzZWxpbmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGVyaW9kX3Z1ZV8xID0gcmVxdWlyZShcIi4vUGVyaW9kLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBlcmlvZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBlcmlvZF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BY3R1YWxWYWx1ZSA9IGV4cG9ydHMuVGFyZ2V0VmFsdWUgPSB2b2lkIDA7XG52YXIgVGFyZ2V0VmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9UYXJnZXRWYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYXJnZXRWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhcmdldFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdHVhbFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWN0dWFsVmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWN0dWFsVmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3R1YWxWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JbmRpY2F0b3IgPSBleHBvcnRzLlJlc3VsdFR5cGUgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5UaXRsZURlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgVGl0bGVEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpdGxlRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWZlcmVuY2VfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWZlcmVuY2UudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmZXJlbmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVmZXJlbmNlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlc3VsdFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlc3VsdFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXN1bHRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEluZGljYXRvcl92dWVfMSA9IHJlcXVpcmUoXCIuL0luZGljYXRvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbmRpY2F0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJbmRpY2F0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGllZFN0YXR1cyA9IGV4cG9ydHMuRmluYW5jZVR5cGUgPSBleHBvcnRzLkZsb3dUeXBlID0gZXhwb3J0cy5SZWNpcGllbnRSZWdpb24gPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnkgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuRGlzYnVyc2VtZW50Q2hhbm5lbCA9IGV4cG9ydHMuUmVjZWl2ZXJPcmdhbml6YXRpb24gPSBleHBvcnRzLlByb3ZpZGVyT3JnYW5pemF0aW9uID0gZXhwb3J0cy5WYWx1ZSA9IGV4cG9ydHMuVHJhbnNhY3Rpb25EYXRlID0gZXhwb3J0cy5UcmFuc2FjdGlvblR5cGUgPSBleHBvcnRzLkFpZFR5cGUgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFpZFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9BaWRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFpZFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBaWRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRyYW5zYWN0aW9uVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUcmFuc2FjdGlvblR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUcmFuc2FjdGlvblR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uRGF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uRGF0ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1ZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQcm92aWRlck9yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFByb3ZpZGVyT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjZWl2ZXJPcmdhbml6YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEaXNidXJzZW1lbnRDaGFubmVsX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEaXNidXJzZW1lbnRDaGFubmVsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGlzYnVyc2VtZW50Q2hhbm5lbF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBTZWN0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9TZWN0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2VjdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoU2VjdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmxvd1R5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9GbG93VHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGbG93VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEZsb3dUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEZpbmFuY2VUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vRmluYW5jZVR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmluYW5jZVR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChGaW5hbmNlVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUaWVkU3RhdHVzX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGllZFN0YXR1cy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaWVkU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGllZFN0YXR1c192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlRvdGFsRXhwZW5kaXR1cmUgPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnlCdWRnZXQgPSBleHBvcnRzLlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnQnVkZ2V0ID0gZXhwb3J0cy5Ub3RhbEJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnYW5pc2F0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXNhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUb3RhbEJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1RvdGFsQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVG90YWxCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ0J1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ0J1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5QnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRvdGFsRXhwZW5kaXR1cmVfdnVlXzEgPSByZXF1aXJlKFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsRXhwZW5kaXR1cmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUb3RhbEV4cGVuZGl0dXJlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERvY3VtZW50TGlua192dWVfMSA9IHJlcXVpcmUoXCIuL0RvY3VtZW50TGluay52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudExpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEb2N1bWVudExpbmtfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbiBtdC0xMCBzbTpteC0xMCB4bDpteC0yNCB4bDpweC0xXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtYWluX19jb250YWluZXIgcm91bmRlZC1sZyBiZy1ibHVlY29yYWwgcGItOCBzbTptYi0xMCBtZDptYi0yMCBtZDpmbGV4IG1kOmJnLW5vbmUgbWQ6cGItMFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnQgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZWNvcmFsIHB4LTMgcGItNzIgcHQtNSB0ZXh0LXdoaXRlIHNtOnJvdW5kZWQtbC1sZyBzbTpyb3VuZGVkLXItbGcgc206cHgtNSBzbTpwdC0xMCBtZDpiYXNpcy0yLzQgbWQ6cm91bmRlZC1yLW5vbmUgbWQ6cGItMTYgbGc6cGItNDQgbGc6cHQtNDQgeGw6cHgtMjRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdF9fY29udGFpbmVyIHJvdW5kZWQtbGcgcC01IHNtOnAtMTBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnRfX3RpdGxlIGZvbnQtYm9sZFwiPklBVEkgUHVibGlzaGVyPC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwicHQtMiBzbTpwYi04IHNtOnB0LTZcIj5cbiAgICAgICAgICAgIFdlbGNvbWUgdG8gSUFUSSBQdWJsaXNoZXIuIFRoaXMgbGV0cyB5b3UgcHVibGlzaCBJQVRJIGRhdGEgb24geW91clxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uJ3MgZGV2ZWxvcG1lbnQgYW5kIGh1bWFuaXRhcmlhbiBhY3Rpdml0aWVzLlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8c3BhbiB2LWlmPVwicGFnZUNvbnRlbnQgIT09ICdKb2luIE5vdydcIj5cbiAgICAgICAgICAgICAgVXNlIHRoaXMgcGFnZSB0byBjcmVhdGUgYSBuZXcgYWNjb3VudCBmb3IgeW91ciBvcmdhbmlzYXRpb24uXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9ja1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50ID09PSAnSm9pbiBOb3cnXG4gICAgICAgICAgICAgICAgICA/IFwiSGF2ZW4ndCByZWdpc3RlcmVkIHlldD9cIlxuICAgICAgICAgICAgICAgICAgOiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/J1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0xIGJvcmRlci1iLTIgYm9yZGVyLWItdHJhbnNwYXJlbnQgdGV4dC1iYXNlIHRleHQtdHVycXVvaXNlIGhvdmVyOmJvcmRlci1iLTIgaG92ZXI6Ym9yZGVyLWItdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJ0b2dnbGVQYWdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHBhZ2VDb250ZW50IH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8U2lnbkluXG4gICAgICAgIHYtaWY9XCJwYWdlQ29udGVudCA9PT0gJ0pvaW4gTm93J1wiXG4gICAgICAgIDptZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgIDppbnRlbnQ9XCJpbnRlbnRcIlxuICAgICAgLz5cbiAgICAgIDxKb2luTm93IHYtZWxzZSAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCByZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IFNpZ25JbiBmcm9tICcuL3BhcnRpYWxzL1NpZ25Jbi52dWUnO1xuaW1wb3J0IEpvaW5Ob3cgZnJvbSAnLi9wYXJ0aWFscy9Kb2luTm93LnZ1ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBKb2luTm93LFxuICAgIFNpZ25JbixcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBwYWdlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAnc2lnbmluJyxcbiAgICB9LFxuICAgIG1lc3NhZ2U6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAgaW50ZW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBzZXR1cChwcm9wcykge1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gcmVmKHByb3BzLnBhZ2UgPT09ICdzaWduaW4nID8gJ0pvaW4gTm93JyA6ICdTaWduIEluJyk7XG5cbiAgICBmdW5jdGlvbiB0b2dnbGVQYWdlKCkge1xuICAgICAgcGFnZUNvbnRlbnQudmFsdWUgPVxuICAgICAgICBwYWdlQ29udGVudC52YWx1ZSA9PT0gJ0pvaW4gTm93JyA/ICdTaWduIEluJyA6ICdKb2luIE5vdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgdG9nZ2xlUGFnZSxcbiAgICB9O1xuICB9LFxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNwaW5uZXIgY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYmxhZGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ibGFkZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJsYWRlXCI+PC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi5zcGlubmVyIHtcbiAgZm9udC1zaXplOiAyOHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG59XG5cbi5zcGlubmVyLmNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBtYXJnaW46IGF1dG87XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwLjQ2MjllbTtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMC4wNzRlbTtcbiAgaGVpZ2h0OiAwLjI3NzdlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4wNTU1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAtMC4yMjIyZW07XG4gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgLTAuMjIyMmVtO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgLTAuMjIyMmVtO1xuICBhbmltYXRpb246IHNwaW5uZXItZmFkZTkyMzQgMXMgaW5maW5pdGUgbGluZWFyO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMSkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMHM7XG4gIGFuaW1hdGlvbi1kZWxheTogMHM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCgyKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjA4M3M7XG4gIGFuaW1hdGlvbi1kZWxheTogMC4wODNzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDMwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMykge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4xNjZzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuMTY2cztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDQpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMjQ5cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0OXM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCg1KSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjMzMnM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC4zMzJzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNikge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC40MTVzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNDE1cztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxNTBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTUwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTUwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDcpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNDk4cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjQ5OHM7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCg4KSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjU4MXM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC41ODFzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDIxMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoOSkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC42NjRzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNjY0cztcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNDBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTtcbn1cblxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDEwKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjc0N3M7XG4gIGFuaW1hdGlvbi1kZWxheTogMC43NDdzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMTEpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuODNzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuODNzO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xufVxuXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMTIpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuOTEzcztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjkxM3M7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzMwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDMzMGRlZyk7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1mYWRlOTIzNCB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTc5OTdiO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzaGltbWVyX19ibG9ja1wiIHN0eWxlPVwibWF4LXdpZHRoOiA1MTVweFwiPjwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuLnNoaW1tZXJfX2Jsb2NrIHtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gIGFuaW1hdGlvbi1kZWxheTogMC41cztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgIDkwZGVnLFxuICAgICNlZGVkZWQgMTQuMzYlLFxuICAgICNkN2Q2ZDYgNTYuMjklLFxuICAgICNlZGVkZWQgMTAwJVxuICApO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0NHB4IDEwNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAzcHggNnB4IDNweCAwcHg7XG59XG5cbkBrZXlmcmFtZXMgcGxhY2VIb2xkZXJTaGltbWVyIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcbiAgfVxuXG4gIDIwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xuICB9XG5cbiAgODAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuPHN0eWxlPlxuLmxvYWRlciB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRpb24ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInB0LTIuNVwiPlxuICAgIDxwXG4gICAgICBjbGFzcz1cIiFtYi0wIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHBiLTIuNSB0ZXh0LXNtIGZvbnQtYm9sZCBsZWFkaW5nLVsyMnB4XSB0cmFja2luZy1ub3JtYWwgdGV4dC1ibHVlY29yYWxcIlxuICAgID5cbiAgICAgIDxzdmctdnVlIGNsYXNzPVwidGV4dC14bFwiIGljb249XCJwcm9ncmVzcy1pY29uXCIgLz5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzQmFyX2NvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzX2JhclwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IGRlZmluZVByb3BzIH0gZnJvbSAndnVlJztcbmRlZmluZVByb3BzKHtcbiAgaGVhZGVyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdMb2FkaW5nLi4nLFxuICB9LFxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cbi5wcm9ncmVzc0Jhcl9jb250YWluZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgaC1bN3B4XSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy1bI0M0QzRDNF07XG59XG5cbi5wcm9ncmVzc19iYXIge1xuICBAYXBwbHkgYWJzb2x1dGUgaC1mdWxsIHctMjggcm91bmRlZC1sZyBiZy1zcHJpbmctNTA7XG4gIGFuaW1hdGlvbjogbW92ZVJpZ2h0TGVmdCAycyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbW92ZVJpZ2h0TGVmdCB7XG4gIDAlIHtcbiAgICBsZWZ0OiAtNDBweDtcbiAgfVxuICAxMDAlIHtcbiAgICBsZWZ0OiAxMDAlO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwibXQtMTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVzZXQgdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxoMj5QYXNzd29yZCBSZWNvdmVyeTwvaDI+XG4gICAgICA8cCBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgQW4gZW1haWwgaGFzIGJlZW4gc2VudCB3aXRoIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zLCBwbGVhc2UgY2hlY2sgaXQgb3V0XG4gICAgICAgIHdoZW4geW91IGdldCBpdC5cbiAgICAgIDwvcD5cbiAgICAgIDxzdmctdnVlIGNsYXNzPVwidmVyaWZpY2F0aW9uIG0tYXV0b1wiIGljb249XCJpYy12ZXJpZmljYXRpb25cIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzbW9vdGggLW1iLTcgcHgtNSBweS03IHNtOnB4LTEwIHNtOnB5LTE0IG1kOi1tYi0yMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIG1heC13LVs3MDBweF1cIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwicm91bmRlZCBiZy13aGl0ZSBweS00IHNoYWRvdy10ZXh0Ym94IHNtOnB5LThcIj5cbiAgICAgICAgPGFydGljbGUgY2xhc3M9XCJweC02IHB5LTQgc206cHgtMTIgc206cHktNlwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTIgdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXCI+XG4gICAgICAgICAgICBXaGF0IGlzIElBVEkgUHVibGlzaGVyP1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgSUFUSSBQdWJsaXNoZXIgZW5hYmxlcyBvcmdhbmlzYXRpb25zIHRvIHB1Ymxpc2ggZGF0YSBvbiBhY3Rpdml0aWVzXG4gICAgICAgICAgICBhbmQgcmVzb3VyY2UgZmxvd3MgYWNjb3JkaW5nIHRvIHRoZSBJQVRJIFN0YW5kYXJkLiBUaGUgSUFUSSBTdGFuZGFyZFxuICAgICAgICAgICAgaXMgYSBzZXQgb2YgcnVsZXMgYW5kIGd1aWRhbmNlIG9uIGhvdyB0byBwdWJsaXNoIHVzZWZ1bCBkZXZlbG9wbWVudFxuICAgICAgICAgICAgYW5kIGh1bWFuaXRhcmlhbiBkYXRhLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cInB4LTYgcHktNCBzbTpweC0xMiBzbTpweS02XCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibXktMiB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIFVzZSBJQVRJIFB1Ymxpc2hlciB0bzpcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDx1bCBjbGFzcz1cIm1sLTQgbXQtNCBsaXN0LWRpc2MgdGV4dC1iYXNlIHRleHQtYmx1ZWNvcmFsXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICA+UmVnaXN0ZXIgeW91ciBvcmdhbmlzYXRpb24gd2l0aCBhbiBJQVRJIFB1Ymxpc2hlciBhY2NvdW50PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICA+VW5kZXJzdGFuZCB0aGUgZGF0YSBmaWVsZHMgaW4gdGhlIElBVEkgU3RhbmRhcmQgKHdpdGggSUFUSVxuICAgICAgICAgICAgICAgIFN0YW5kYXJkIFJlZmVyZW5jZSBkZWZpbml0aW9ucywgaGVscGZ1bCBleHBsYW5hdGlvbnMgYW5kIGxpbmtzXG4gICAgICAgICAgICAgICAgdG8gZ3VpZGFuY2UpPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICA+UHJvdmlkZSB5b3VyIG9yZ2FuaXNhdGlvbuKAmXMgZGF0YSBlYXNpbHkgYnkgY29tcGxldGluZyBvbmxpbmVcbiAgICAgICAgICAgICAgICBmb3Jtcy4gT3IgdXBsb2FkIGRhdGEgb24gbXVsdGlwbGUgYWN0aXZpdGllcyBvbiBhIENTViBvciAueG1sXG4gICAgICAgICAgICAgICAgZmlsZSB3aXRoIHRoZSBCdWxrIFVwbG9hZCBmZWF0dXJlPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICA+UnVuIGF1dG9tYXRpYyBjaGVja3MgKHZpYSB0aGUgSUFUSSBWYWxpZGF0b3IpIGZvciBlcnJvcnMgYmVmb3JlXG4gICAgICAgICAgICAgICAgcHVibGlzaGluZyB5b3VyIGRhdGE8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtYmFzZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmxhY2tcIlxuICAgICAgICAgICAgICAgID5QdWJsaXNoIHlvdXIgZGF0YS4gSUFUSSBQdWJsaXNoZXIgd2lsbCBhZGQgeW91ciBkYXRhIHRvIHRoZVxuICAgICAgICAgICAgICAgIElBVEkgUmVnaXN0cnkgKHdoZXJlIGxpbmtzIHRvIGFsbCBJQVRJIGRhdGEgaXMgZm91bmQpPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICBJQVRJIFB1Ymxpc2hlciBoYXMgYmVlbiBidWlsdCB0byBzdXBwb3J0IG9yZ2FuaXNhdGlvbnMgdGhhdCBwdWJsaXNoXG4gICAgICAgICAgICBhIGxpbWl0ZWQgbnVtYmVyIG9mIGRldmVsb3BtZW50IGFuZCBodW1hbml0YXJpYW4gYWN0aXZpdGllcy4gQW5cbiAgICAgICAgICAgIOKAmGFjdGl2aXR54oCZIGlzIGFuIGluZGl2aWR1YWwgcHJvamVjdCBvciBhbm90aGVyIHVuaXQgb2YgZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIGFuZCBodW1hbml0YXJpYW4gd29yaywgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JnYW5pc2F0aW9uIHRoYXRcbiAgICAgICAgICAgIGlzIHB1Ymxpc2hpbmcgdGhlIGRhdGEuIE9yZ2FuaXNhdGlvbnMgd2hvIHB1Ymxpc2ggYSBsaW1pdGVkIG51bWJlclxuICAgICAgICAgICAgb2YgYWN0aXZpdGllcyB0ZW5kIHRvIHJlcHJlc2VudCBzbWFsbCBhbmQgbWVkaXVtIHNpemVkXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25zLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICBMYXJnZSBvcmdhbmlzYXRpb25zLCBzdWNoIGFzIGRvbm9yIGdvdmVybm1lbnRzIG9yIFVOIGFnZW5jaWVzXG4gICAgICAgICAgICBkZWxpdmVyaW5nIDEwMCsgYWN0aXZpdGllcyBhcmUgYWR2aXNlZCBub3QgdG8gdXNlIElBVEkgUHVibGlzaGVyLlxuICAgICAgICAgICAgSW5zdGVhZCB0aGVzZSBvcmdhbmlzYXRpb25zIGxpa2VseSBuZWVkIHRvIHVzZSBhbiBhbHRlcm5hdGl2ZVxuICAgICAgICAgICAgdGVjaG5pY2FsIHNvbHV0aW9uIHRoYXQgZW5hYmxlcyB0aGUgcHVibGljYXRpb24gb2YgbGFyZ2Ugdm9sdW1lcyBvZlxuICAgICAgICAgICAgZGF0YS4gUGxlYXNlIGVtYWlsIHRoZSBJQVRJIEhlbHBkZXNrIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGhyZWY9XCJtYWlsdG86IHN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZyA8L2FcbiAgICAgICAgICAgID4uXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwib3VuZGVkIHB4LTYgcHktNCBzbTpweC0xMiBzbTpweS02XCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibXktMiB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIERldmVsb3BtZW50IG9mIElBVEkgUHVibGlzaGVyXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICBJQVRJIFB1Ymxpc2hlciB3YXMgZmlyc3QgbGF1bmNoZWQgaW4gRGVjZW1iZXIgMjAyMiBieSB0aGUgSUFUSVxuICAgICAgICAgICAgU2VjcmV0YXJpYXQgYW5kIGhhcyBiZWVuIGRldmVsb3BlZCBieVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3lvdW5naW5ub3ZhdGlvbnMuY29tLm5wL1wiXG4gICAgICAgICAgICAgID5Zb3VuZyBJbm5vdmF0aW9ucyA8L2FcbiAgICAgICAgICAgID4sIGEgc29mdHdhcmUgZGV2ZWxvcG1lbnQgZmlybSBiYXNlZCBpbiBOZXBhbC4gSUFUSSBQdWJsaXNoZXIgaXNcbiAgICAgICAgICAgIGZ1bGx5IGFsaWduZWQgd2l0aCB0aGUgSUFUSSBTdGFuZGFyZCBYTUxcbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvc2NoZW1hL1wiPlxuICAgICAgICAgICAgICBzY2hlbWE8L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIGFuZFxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvcnVsZXNldHMvXCJcbiAgICAgICAgICAgICAgPnJ1bGVzZXRzIDwvYVxuICAgICAgICAgICAgPi5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNtb290aCAtbWItNyBweC01IHB5LTcgc206cHgtMTAgc206cHktMTQgbWQ6LW1iLTIwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gbWF4LXctWzcwMHB4XVwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJyb3VuZGVkIGJnLXdoaXRlIHB5LTQgc2hhZG93LXRleHRib3ggc206cHktOFwiPlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cInB4LTYgcHktNCBzbTpweC0xMiBzbTpweS02XCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXCI+U3VwcG9ydDwvaDM+XG5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICBJZiB5b3VyIG9yZ2FuaXNhdGlvbiBuZWVkcyBzdXBwb3J0IHRvIHVzZSBJQVRJIFB1Ymxpc2hlciBvciBoYXNcbiAgICAgICAgICAgIHF1ZXN0aW9ucyBhYm91dCB3aGF0IGRhdGEgdG8gcHVibGlzaCBwbGVhc2UgY29udGFjdCBJQVRJ4oCZcyBIZWxwZGVzazpcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZ1wiXG4gICAgICAgICAgICAgID5zdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmcuPC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIFlvdSBtYXkgYWxzbyBqb2luIElBVEnigJlzIG9ubGluZSBjb21tdW5pdHkgYXRcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9pYXRpY29ubmVjdC5vcmcvXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgSUFUSSBDb25uZWN0XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAsIHdoZXJlIHlvdSBjYW4gcG9zdCBtZXNzYWdlcyBhYm91dCBJQVRJIHB1Ymxpc2hpbmcgaW4gdGhlXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vaWF0aWNvbm5lY3Qub3JnL2RhdGEtcHVibGlzaGluZy1jb3AvYWJvdXRcIlxuICAgICAgICAgICAgICA+RGF0YSBQdWJsaXNoaW5nIENvbW11bml0eSBvZiBQcmFjdGljZS48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJyaWdodCBqb2luLW5vdyBtLWF1dG8gZmxleCBiYXNpcy0yLzQgaXRlbXMtY2VudGVyIHJvdW5kZWQtbC1sZyByb3VuZGVkLXItbGcgYmctd2hpdGUgcHgtNSBweS01IHNtOnB4LTcgc206cHktMTAgbWQ6bXktMCBtZDpyb3VuZGVkLWwtbm9uZSBsZzpweS0yOCB4bDpweC0xNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRfX2NvbnRhaW5lciBmbGV4IGZsZXgtY29sXCI+XG4gICAgICA8aDIgY2xhc3M9XCJtYi0yIGhpZGRlbiBzbTpibG9ja1wiPkpvaW4gTm93PC9oMj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWItOCB0ZXh0LW4tNDAgeGw6cHItNlwiPlxuICAgICAgICBUbyBiZWdpbiwgeW91ciBvcmdhbmlzYXRpb24gbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCBhcyBhbiBJQVRJIHB1Ymxpc2hlci5cbiAgICAgICAgU2VsZWN0IGFuIG9wdGlvbiBhbmQgd2XigJlsbCBndWlkZSB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MuXG4gICAgICA8L3NwYW4+XG4gICAgICA8YSBocmVmPVwiL2lhdGkvcmVnaXN0ZXJcIiBjbGFzcz1cInJpZ2h0X19jb250ZW50IG1iLTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0X19pY29uXCI+XG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XCJ0ZXh0LTZ4bFwiIGljb249XCJkZWZhdWx0LTFcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMgbXgtNCB4bDpweC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiXG4gICAgICAgICAgICA+TXkgb3JnYW5pc2F0aW9uIGlzIG5ldyB0byBJQVRJPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTUgdGV4dC1uLTQwXCI+XG4gICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gaWYgeW91ciBvcmdhbmlzYXRpb24gPHU+aGFzIG5vdDwvdT4gcmVnaXN0ZXJlZCBhblxuICAgICAgICAgICAgYWNjb3VudCB3aXRoIElBVEkgb24gdGhlXG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuaWF0aXJlZ2lzdHJ5Lm9yZy9cIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICA+SUFUSSBSZWdpc3RyeTwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XCJyaWdodF9fYXJyb3cgdGV4dC0yeGxcIiBpY29uPVwicmlnaHQtYXJyb3dcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCIvcmVnaXN0ZXJcIiBjbGFzcz1cInJpZ2h0X19jb250ZW50IG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0X19pY29uXCI+XG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XCJ0ZXh0LTZ4bFwiIGljb249XCJkZWZhdWx0LTJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMgbXgtNCB4bDpweC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiXG4gICAgICAgICAgICA+TXkgb3JnYW5pc2F0aW9uIGhhcyByZWdpc3RlcmVkIHdpdGggSUFUSTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgbGVhZGluZy01IHRleHQtbi00MFwiPlxuICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIGlmIHlvdXIgb3JnYW5pc2F0aW9uIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgb24gdGhlXG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuaWF0aXJlZ2lzdHJ5Lm9yZy9cIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICA+SUFUSSBSZWdpc3RyeTwvYVxuICAgICAgICAgICAgPiwgYnV0IGlzIG5ldyB0byB1c2luZyBJQVRJIFB1Ymxpc2hlclxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XCJyaWdodF9fYXJyb3cgdGV4dC0yeGxcIiBpY29uPVwicmlnaHQtYXJyb3dcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSB0ZXh0LW4tNDBcIj5cbiAgICAgICAgSWYgeW91IGFyZSBhIG5ldyB1c2VyIG9mIGFuIG9yZ2FuaXNhdGlvbiBhbHJlYWR5IHVzaW5nIElBVEkgUHVibGlzaGVyLFxuICAgICAgICBhbiBhZG1pbiB1c2VyIGZyb20geW91ciBvcmdhbmlzYXRpb24gY2FuIGNyZWF0ZSBhbiBhY2NvdW50IGZvciB5b3UuIElmXG4gICAgICAgIHlvdSBuZWVkIGhlbHAsIG9yIGFyZSBub3Qgc3VyZSB3aGljaCBvcHRpb24gdG8gc2VsZWN0LCBwbGVhc2VcbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImJvcmRlci1iLTIgYm9yZGVyLWItdHJhbnNwYXJlbnQgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsIGhvdmVyOmJvcmRlci1iLTIgaG92ZXI6Ym9yZGVyLWItdHVycXVvaXNlIGhvdmVyOnRleHQtYmx1ZWNvcmFsXCJcbiAgICAgICAgICBocmVmPVwibWFpbHRvOnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZ1wiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICA+Q29udGFjdCBTdXBwb3J0LjwvYVxuICAgICAgICA+PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+PC9zY3JpcHQ+XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5zcGlubmVyW2RhdGEtdi0wOWFlMWE4Yl0ge1xcbiAgZm9udC1zaXplOiAyOHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDFlbTtcXG4gIGhlaWdodDogMWVtO1xcbn1cXG4uc3Bpbm5lci5jZW50ZXJbZGF0YS12LTA5YWUxYThiXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMC40NjI5ZW07XFxuICBib3R0b206IDA7XFxuICB3aWR0aDogMC4wNzRlbTtcXG4gIGhlaWdodDogMC4yNzc3ZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjA1NTVlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcXG4gIGFuaW1hdGlvbjogc3Bpbm5lci1mYWRlOTIzNC0wOWFlMWE4YiAxcyBpbmZpbml0ZSBsaW5lYXI7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDEpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMHM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoMikge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjA4M3M7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDMpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4xNjZzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCg0KSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuMjQ5cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoNSkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjMzMnM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCg2KSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNDE1cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE1MGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDcpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC40OThzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoOCkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjU4MXM7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xcbn1cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZVtkYXRhLXYtMDlhZTFhOGJdOm50aC1jaGlsZCg5KSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNjY0cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDEwKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNzQ3cztcXG4gIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxufVxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlW2RhdGEtdi0wOWFlMWE4Yl06bnRoLWNoaWxkKDExKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuODNzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTtcXG59XFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGVbZGF0YS12LTA5YWUxYThiXTpudGgtY2hpbGQoMTIpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC45MTNzO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzMwZGVnKTtcXG59XFxuQGtleWZyYW1lcyBzcGlubmVyLWZhZGU5MjM0LTA5YWUxYThiIHtcXG4wJSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzk5N2I7XFxufVxcbjEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQWtCQTtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLFVBQVU7RUFDVixXQUFXO0FBQ2I7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixPQUFPO0VBQ1AsUUFBUTtFQUNSLE1BQU07RUFDTixTQUFTO0VBQ1QsWUFBWTtBQUNkO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLFNBQVM7RUFDVCxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLHVCQUF1QjtFQUN2Qiw2QkFBNkI7RUFHN0Isa0NBQWtDO0VBQ2xDLHVEQUE4QztBQUNoRDtBQUVBO0VBRUUsbUJBQW1CO0VBR25CLHVCQUF1QjtBQUN6QjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHdCQUF3QjtBQUMxQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHdCQUF3QjtBQUMxQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHdCQUF3QjtBQUMxQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsc0JBQXNCO0VBR3RCLHlCQUF5QjtBQUMzQjtBQUVBO0VBRUUsdUJBQXVCO0VBR3ZCLHlCQUF5QjtBQUMzQjtBQUVBO0FBQ0U7SUFDRSx5QkFBeUI7QUFDM0I7QUFFQTtJQUNFLDZCQUE2QjtBQUMvQjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcInNwaW5uZXIgY2VudGVyXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwic3Bpbm5lci1ibGFkZVxcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNwaW5uZXItYmxhZGVcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzcGlubmVyLWJsYWRlXFxcIj48L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHN0eWxlIHNjb3BlZD5cXG4uc3Bpbm5lciB7XFxuICBmb250LXNpemU6IDI4cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogMWVtO1xcbiAgaGVpZ2h0OiAxZW07XFxufVxcblxcbi5zcGlubmVyLmNlbnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBtYXJnaW46IGF1dG87XFxufVxcblxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDAuNDYyOWVtO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lkdGg6IDAuMDc0ZW07XFxuICBoZWlnaHQ6IDAuMjc3N2VtO1xcbiAgYm9yZGVyLXJhZGl1czogMC4wNTU1ZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcXG4gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgLTAuMjIyMmVtO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIC0wLjIyMjJlbTtcXG4gIGFuaW1hdGlvbjogc3Bpbm5lci1mYWRlOTIzNCAxcyBpbmZpbml0ZSBsaW5lYXI7XFxufVxcblxcbi5zcGlubmVyIC5zcGlubmVyLWJsYWRlOm50aC1jaGlsZCgxKSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMHM7XFxuICBhbmltYXRpb24tZGVsYXk6IDBzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMikge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMDgzcztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4wODNzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMykge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMTY2cztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4xNjZzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNCkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMjQ5cztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4yNDlzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNSkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMzMycztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC4zMzJzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNikge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNDE1cztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC40MTVzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxNTBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE1MGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxNTBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoNykge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNDk4cztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC40OThzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoOCkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNTgxcztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC41ODFzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDIxMGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgyMTBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoOSkge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNjY0cztcXG4gIGFuaW1hdGlvbi1kZWxheTogMC42NjRzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNDBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNDBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMTApIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjc0N3M7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNzQ3cztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG59XFxuXFxuLnNwaW5uZXIgLnNwaW5uZXItYmxhZGU6bnRoLWNoaWxkKDExKSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC44M3M7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuODNzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgzMDBkZWcpO1xcbn1cXG5cXG4uc3Bpbm5lciAuc3Bpbm5lci1ibGFkZTpudGgtY2hpbGQoMTIpIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjkxM3M7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuOTEzcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzMwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzMzBkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMzMwZGVnKTtcXG59XFxuXFxuQGtleWZyYW1lcyBzcGlubmVyLWZhZGU5MjM0IHtcXG4gIDAlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3OTk3YjtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIH1cXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uYm9yZGVyLXRoaXMge1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xcbn1cXG4ubWFyZ2luLTIwIHtcXG4gIG1hcmdpbjogMjBweDtcXG59XFxuLmZvb3Rlci1yaWJib24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBwYWRkaW5nOiA4cHggMjBweDtcXG4gIGJhY2tncm91bmQ6ICNmZmZkZTc7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFvSkE7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLFlBQVk7QUFDZDtBQUVBO0VBQ0UsYUFBYTtFQUNiLHlCQUF5QjtFQUN6QixpQkFBaUI7RUFDakIsbUJBQW1CO0FBQ3JCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgcmVmPVxcXCJwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3RcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW4tMjBcXFwiPlxcbiAgICAgIDxwIGNsYXNzPVxcXCJtLTIgcGItMiB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgIHt7IHByb3BzLmhlYWRlciB9fVxcbiAgICAgIDwvcD5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJzZWFyY2hcXFwiIHN0eWxlPVxcXCJtYXJnaW4tcmlnaHQ6IDRweCAhaW1wb3J0YW50XFxcIj5cXG4gICAgICAgIDxpbnB1dFxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJzZWFyY2hJbnB1dFxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInNlYXJjaF9faW5wdXQgbXItMy41XFxcIlxcbiAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcImBTZWFyY2ggJHtwcm9wcy5oZWFkZXJ9Li4uYFxcXCJcXG4gICAgICAgICAgc3R5bGU9XFxcIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwcHhcXFwiXFxuICAgICAgICAgIEBpbnB1dD1cXFwidXBkYXRlQXJyYXlCeVNlYXJjaCgpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICAgIDxzdmctdnVlIGljb249XFxcInNlYXJjaFxcXCIgLz5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJteS0xXFxcIj5cXG4gICAgICAgIDxkaXYgdi1pZj1cXFwic2hvd05vRGF0YUNvbXBvbmVudFxcXCIgY2xhc3M9XFxcInAtNSB0ZXh0LWNlbnRlciBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgbm8gZGF0YSBmb3VuZFxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8dWwgdi1lbHNlIGNsYXNzPVxcXCJtYXgtaC1bMzUwcHhdIG92ZXJmbG93LXktc2Nyb2xsXFxcIj5cXG4gICAgICAgICAgPGxpIHYtZm9yPVxcXCJpdGVtIGluIHRlbXBMaXN0SXRlbXNcXFwiIDprZXk9XFxcIml0ZW0ua2V5XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IHYtaWY9XFxcIml0ZW0uc2hvd1xcXCIgY2xhc3M9XFxcIm10LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm0tMlxcXCI+XFxuICAgICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICAgIDppZD1cXFwiaXRlbS5rZXlcXFwiXFxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiY2hlY2tlZEJveGVzXFxcIlxcbiAgICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiaXRlbS5rZXlcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcIm0tMiBweC0zIHRleHQtbi00MFxcXCIgOmZvcj1cXFwiaXRlbS5rZXlcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGl0ZW0ubGFiZWxcXG4gICAgICAgICAgICAgIH19PC9sYWJlbD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcblxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmb290ZXItcmliYm9uXFxcIiBzdHlsZT1cXFwiXFxcIj5cXG4gICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICBjbGFzcz1cXFwic3BhY2VcXFwiXFxuICAgICAgICB0ZXh0PVxcXCJBcHBseVxcXCJcXG4gICAgICAgIHR5cGU9XFxcInByaW1hcnlcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcImFwcGx5RmlsdGVyXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IGxhbmc9XFxcInRzXFxcIiBzZXR1cD5cXG5pbXBvcnQge1xcbiAgZGVmaW5lRW1pdHMsXFxuICBkZWZpbmVQcm9wcyxcXG4gIHJlZixcXG4gIG9uTW91bnRlZCxcXG4gIG9uQmVmb3JlVW5tb3VudCxcXG4gIGNvbXB1dGVkLFxcbn0gZnJvbSAndnVlJztcXG5pbXBvcnQgQnRuQ29tcG9uZW50IGZyb20gJ0NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSc7XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBsaXN0SXRlbXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBoZWFkZXI6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuaW50ZXJmYWNlIFRlbXBJdGVtIHtcXG4gIGtleTogc3RyaW5nO1xcbiAgbGFiZWw6IHN0cmluZztcXG4gIHNob3c6IGJvb2xlYW47XFxufVxcblxcbmxldCB0ZW1wTGlzdEl0ZW1zID0gcmVmPFRlbXBJdGVtW10+KFtdKTtcXG5jb25zdCBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QgPSByZWYoKTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddKTtcXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzLmxpc3RJdGVtcyk7XFxubGV0IHNlYXJjaElucHV0ID0gcmVmKCcnKTtcXG5sZXQgY2hlY2tlZEJveGVzID0gcmVmKFtdKTtcXG5cXG5sZXQgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSA9PiB7XFxuICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XFxufTtcXG5cXG5mb3JtYXRQdWJsaXNoZXJUeXBlKCk7XFxuXFxuZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcXG4gIGxldCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xcbiAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLnB1c2goe1xcbiAgICAgIGtleToga2V5c1tpXSxcXG4gICAgICBsYWJlbDogcHJvcHMubGlzdEl0ZW1zW2tleXNbaV1dLFxcbiAgICAgIHNob3c6IHRydWUsXFxuICAgIH0pO1xcbiAgfVxcbn1cXG5vbk1vdW50ZWQoKCkgPT4ge1xcbiAgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXFxuICAgICdjbGljaycsXFxuICAgIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW5cXG4gICk7XFxufSk7XFxuXFxub25CZWZvcmVVbm1vdW50KCgpID0+IHtcXG4gIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKFxcbiAgICAnY2xpY2snLFxcbiAgICBrZWVwUHVibGlzaGVyTW9kZWxPcGVuXFxuICApO1xcbn0pO1xcblxcbmNvbnN0IHNob3dOb0RhdGFDb21wb25lbnQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcbiAgdGVtcExpc3RJdGVtcy52YWx1ZS5tYXAoKGl0ZW0pID0+IHtcXG4gICAgaWYgKGl0ZW0uc2hvdykge1xcbiAgICAgIGNvdW50Kys7XFxuICAgIH1cXG4gIH0pO1xcbiAgcmV0dXJuICFjb3VudDtcXG59KTtcXG5cXG5jb25zdCB1cGRhdGVBcnJheUJ5U2VhcmNoID0gKCkgPT4ge1xcbiAgbGV0IHNlYXJjaFN0cmluZyA9IHNlYXJjaElucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XFxuXFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcXG4gICAgbGV0IGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xcbiAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldLnNob3cgPSBpdGVtLmxhYmVsXFxuICAgICAgLnRvTG93ZXJDYXNlKClcXG4gICAgICAuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKTtcXG4gIH1cXG59O1xcbmNvbnN0IGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4gPSAoZXZlbnQpID0+IHtcXG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xcbn07XFxuY29uc3QgYXBwbHlGaWx0ZXIgPSAoKSA9PiB7XFxuICBlbWl0KCdjbG9zZScpO1xcblxcbiAgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIoY2hlY2tlZEJveGVzLnZhbHVlKTtcXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZT5cXG4uYm9yZGVyLXRoaXMge1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xcbn1cXG4ubWFyZ2luLTIwIHtcXG4gIG1hcmdpbjogMjBweDtcXG59XFxuXFxuLmZvb3Rlci1yaWJib24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBwYWRkaW5nOiA4cHggMjBweDtcXG4gIGJhY2tncm91bmQ6ICNmZmZkZTc7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZmY7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uY3JpdGljYWwtY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl0sIFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdLCBcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl0ge1xcbiAgaGVpZ2h0OiAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG59XFxuLndhcm5pbmctY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi00MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tcm9zZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLndhcm5pbmctY29udGFpbmVyW2RhdGEtdi0zNzYxNzcwMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jYW1lbC00MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uZXJyb3ItaGVscFtkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIHBhZGRpbmctbGVmdDogMzBweDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lciBwW2RhdGEtdi0zNzYxNzcwMl0ge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBb1ZBO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFLRTs7O0VBQUEsV0FBc0Q7RUFBdEQsZ0JBQXNEO0VBQXRELHdCQUFzRDtFQUF0RCx3REFBc0Q7RUFBdEQsMEJBQUE7QUFBc0Q7QUFHeEQ7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBb0I7RUFBcEIsK0RBQW9CO0VBQ3BCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFFVixrQkFBYztFQUFkLHlEQUFjO0FBQ2hCO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBa0I7RUFBbEIsNkRBQWtCO0VBQ2xCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0UsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixzQkFBc0I7QUFDeEI7QUFFQTtFQUNFLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJncm91cCByZWxhdGl2ZVxcXCI+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIDpjbGFzcz1cXFwieyAnZm9udC1ib2xkJzogY291bnRFcnJvcnMoaW5kZXgpIH1cXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJncm91cCBtYXgtdy1bMzAwcHhdIG92ZXJmbG93LWhpZGRlbiBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gdXBwZXJjYXNlIHRleHQtbi01MFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdGl0bGUgfX1cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgbGVmdC1bODAlXSB0b3AtMCB6LVsxMTBdIGhpZGRlbiBtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtc2Nyb2xsIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQgYmctZWdnc2hlbGwgcHgtNCBweS0yIHRleHQtc20gZm9udC1ub3JtYWwgc2hhZG93LXNtIGdyb3VwLWhvdmVyOmJsb2NrXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICB7eyB0aXRsZSB9fVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwidGVjdC14cyBteC0zIGZvbnQtbm9ybWFsIHRleHQtbi00MFxcXCI+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY2FwaXRhbGl6ZVxcXCI+ICh7eyBzdGF0dXNbJ3RlbXBsYXRlJ10gfX0gSWRlbnRpZmllciA8L3NwYW4+XFxuICAgICAgICA6IHt7IGFjdGl2aXR5LmlkZW50aWZpZXIgfX0pXFxuICAgICAgPC9kaXY+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtaWY9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDBcXFwiXFxuICAgICAgICBjbGFzcz1cXFwibWwtNCBpbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICBzaG93RXJyb3JzID0gIXNob3dFcnJvcnM7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3Bhbj5zaG93IHt7IGNvdW50RXJyb3JzKGluZGV4KSB9fSBlcnJvcjwvc3Bhbj5cXG4gICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LVs2cHhdXFxcIiBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCIgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IHYtaWY9XFxcInNob3dFcnJvcnNcXFwiIGNsYXNzPVxcXCJtdC02IHB4LTcgcHktMlxcXCI+XFxuICAgICAgPGRpdlxcbiAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpICE9PSAtMVxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNzB9cHg7YFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJjcml0aWNhbC1jb250YWluZXIgbXQtMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiY3JpdGljYWxBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBwLTMgcGItMC41XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgICA8c3Bhbj4ge3sgZXJyb3JMZW5ndGgoJ2NyaXRpY2FsJykgfX0gQ3JpdGljYWwgZXJyb3JzPC9zcGFuPlxcbiAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0NyaXRpY2FsLCAnJzogIXNob3dDcml0aWNhbCB9XFxcIlxcbiAgICAgICAgICAvPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgKFRoZSBhY3Rpdml0eSBjb250YWlucyBjcml0aWNhbCBlcnJvcnMgYW5kIHRodXMgY2Fubm90IGJlIHVwbG9hZGVkIHRvXFxuICAgICAgICAgIHRoZSBzeXN0ZW0uKVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ2NyaXRpY2FsJ11cXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInAtNFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICBhY3Rpdml0eVsnZXJyb3JzJ10gJiZcXG4gICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdlcnJvcicpICE9PSAtMVxcbiAgICAgICAgXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA3MH1weDtgXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImVycm9yLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJlcnJvckFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIGJnLXJvc2UgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW4+e3sgZXJyb3JMZW5ndGgoJ2Vycm9yJykgfX0gRXJyb3JzPC9zcGFuPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0Vycm9yLCAnJzogIXNob3dFcnJvciB9XFxcIlxcbiAgICAgICAgICAvPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgKFRoZSBhY3Rpdml0eSB3aXRoIHRoZSBlcnJvcnMgd2lsbCBiZSB1cGxvYWRlZCB0byBvdXIgc3lzdGVtLCBidXQgdGhlXFxuICAgICAgICAgIGZpZWxkIGNvbnRhaW5pbmcgdGhlIGVycm9yIHdpbGwgYmUgcmVtb3ZlZC4gWW91IHdpbGwgbmVlZCB0byByZWZpbGxcXG4gICAgICAgICAgdGhlc2UgZmllbGRzIHdpdGggY29ycmVjdCBkYXRhIG9uY2UgdGhlIGFjdGl2aXR5IGlzIHVwbG9hZGVkIHRvIG91clxcbiAgICAgICAgICBzeXN0ZW0uKVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ2Vycm9yJ11cXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtcHJpbWFyeS1ibGFjayBiZy1yb3NlIHAtNFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICBhY3Rpdml0eVsnZXJyb3JzJ10gJiZcXG4gICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCd3YXJuaW5nJykgIT09IC0xXFxuICAgICAgICBcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDcwfXB4O2BcXFwiXFxuICAgICAgICBjbGFzcz1cXFwid2FybmluZy1jb250YWluZXIgbXktMiBjdXJzb3ItcG9pbnRlciBib3JkZXItbm9uZSBiZy1lZ2dzaGVsbFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwid2FybmluZ0FjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYmctZWdnc2hlbGwgcC0zIHBiLTAuNVxcXCI+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImFsZXJ0XFxcIiBjbGFzcz1cXFwidGV4dC1jYW1lbC00MFxcXCIgLz48c3Bhbj5cXG4gICAgICAgICAgICAgIHt7IGVycm9yTGVuZ3RoKCd3YXJuaW5nJykgfX0gV2FybmluZ3M8L3NwYW5cXG4gICAgICAgICAgICA+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93V2FybmluZywgJyc6ICFzaG93V2FybmluZyB9XFxcIlxcbiAgICAgICAgICAvPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwIGJnLWVnZ3NoZWxsXFxcIj5cXG4gICAgICAgICAgKFRoZSBmaWVsZCB3aXRoIHdhcm5pbmdzIHdpbGwgYmUgdXBsb2FkZWQgdG8gb3VyIHN5c3RlbS4gVGhlc2UgZmllbGRzXFxuICAgICAgICAgIGNvbnRhaW4gZGF0YSB0aGF0IGFyZSBhZ2FpbnN0IHRoZSBydWxlcyBvZiB0aGUgSUFUSSBWYWxpZGF0b3IgYW5kIHdpbGxcXG4gICAgICAgICAgY2F1c2UgdmFsaWRhdGlvbiBlcnJvcnMgd2hpbGUgcHVibGlzaGluZy4pXFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ3dhcm5pbmcnXVxcXCJcXG4gICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiYmctZWdnc2hlbGwgcC00XFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XFxuY29uc3Qgc2hvd0Vycm9ycyA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0NyaXRpY2FsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBjcml0aWNhbFRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0Vycm9yID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlcnJvclRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgd2FybmluZ1RvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd1dhcm5pbmcgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXFxuICBpbXBvcnREYXRhOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgd2lkdGg6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDAgfSxcXG4gIGFjdGl2aXR5OiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaW5kZXg6IHtcXG4gICAgdHlwZTogTnVtYmVyLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBzdGF0dXM6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuXFxuY29uc3QgZXJyb3JMZW5ndGggPSAoY3VycmVudEVycm9yKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgcHJvcHMuYWN0aXZpdHk/LmVycm9yc1tjdXJyZW50RXJyb3JdICYmXFxuICAgIE9iamVjdC52YWx1ZXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW2N1cnJlbnRFcnJvcl0pPy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtIGFzIG9iamVjdCkubGVuZ3RoO1xcbiAgICB9KTtcXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IHRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xcbiAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcXG4gICAgY2FzZSAnYWN0aXZpdHknOlxcbiAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXFxuICAgICAgICA/IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlID8/ICdVbnRpdGxlZCdcXG4gICAgICAgIDogJ1VudGl0bGVkJztcXG5cXG4gICAgY2FzZSAncmVzdWx0JzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10gPz8gJ1VudGl0bGVkJ1xcbiAgICAgICAgOiAnVW50aXRsZWQnO1xcbiAgICBjYXNlICdwZXJpb2QnOlxcbiAgICAgIHJldHVybiAoXFxuICAgICAgICAocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2Rfc3RhcnQgJiZcXG4gICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2Rfc3RhcnRbMF0uZGF0ZSkgK1xcbiAgICAgICAgJyAtICcgK1xcbiAgICAgICAgKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX2VuZCAmJlxcbiAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmRbMF0uZGF0ZSlcXG4gICAgICApO1xcbiAgICBjYXNlICdpbmRpY2F0b3InOlxcbiAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXFxuICAgICAgICA/IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSA/PyAnVW50aXRsZWQnXFxuICAgICAgICA6ICdVbnRpdGxlZCc7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuICdVbnRpdGxlZCc7XFxuICB9XFxufSk7XFxuXFxuY29uc3QgY291bnRFcnJvcnMgPSAoYWN0aXZpdHlJbmRleCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG4gIGZvciAoY29uc3QgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XFxuICAgICAgY291bnQgKz1cXG4gICAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF0gJiZcXG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdW2luZGV4XSlcXG4gICAgICAgICAgLmxlbmd0aDtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuY29uc3QgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcblxcbiAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XFxuICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICB9LCAxMDApO1xcbiAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgfSBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG5cXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgIH0sIDYwMCk7XFxuXFxuICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dXYXJuaW5nLnZhbHVlID0gIXNob3dXYXJuaW5nLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuICBpZiAod2FybmluZ1RvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgfSBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgIH0sIDEwMCk7XFxuXFxuICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgfVxcbn07XFxuY29uc3QgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XFxuICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICB9LCAxMDApO1xcbiAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgfSBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG5cXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgIH0sIDYwMCk7XFxuXFxuICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuLmNyaXRpY2FsLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLmNyaXRpY2FsLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTY2ZWU5O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIsXFxuLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyLFxcbi5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXIge1xcbiAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbn1cXG5cXG4ud2FybmluZy1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY3JpbXNvbi00MDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuXFxuICBAYXBwbHkgYmctcm9zZTtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIEBhcHBseSBiZy1jYW1lbC00MDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItaGVscCB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcblxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcCB7XFxuICBjb2xvcjogYmxhY2s7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmxvYWRlciB7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuQGtleWZyYW1lcyByb3RhdGlvbiB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQUtBO0VBQ0UsV0FBVztFQUNYLFlBQVk7RUFDWix5QkFBeUI7RUFDekIsZ0NBQWdDO0VBQ2hDLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsc0JBQXNCO0VBQ3RCLHNDQUFzQztBQUN4QztBQUVBO0FBQ0U7SUFDRSx1QkFBdUI7QUFDekI7QUFDQTtJQUNFLHlCQUF5QjtBQUMzQjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxzcGFuIGNsYXNzPVxcXCJsb2FkZXJcXFwiPjwvc3Bhbj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPjwvc2NyaXB0PlxcbjxzdHlsZT5cXG4ubG9hZGVyIHtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyOiAzcHggc29saWQgI2Q1ZGNkZTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGFuaW1hdGlvbjogcm90YXRpb24gMXMgbGluZWFyIGluZmluaXRlO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uZmFkZS1lbnRlci1hY3RpdmVbZGF0YS12LTBkZmY4NDYwXSxcXG4uZmFkZS1sZWF2ZS1hY3RpdmVbZGF0YS12LTBkZmY4NDYwXSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG4uZmFkZS1lbnRlci1mcm9tW2RhdGEtdi0wZGZmODQ2MF0sXFxuLmZhZGUtbGVhdmUtdG9bZGF0YS12LTBkZmY4NDYwXSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgc2NhbGU6IDA7XFxufVxcbi52LWVudGVyLWFjdGl2ZVtkYXRhLXYtMGRmZjg0NjBdLFxcbi52LWxlYXZlLWFjdGl2ZVtkYXRhLXYtMGRmZjg0NjBdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XFxufVxcbi52LWVudGVyLWZyb21bZGF0YS12LTBkZmY4NDYwXSxcXG4udi1sZWF2ZS10b1tkYXRhLXYtMGRmZjg0NjBdIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9PbkJvYXJkaW5nSW5kZXgudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFzVUE7O0VBRUUseUJBQXlCO0FBQzNCO0FBRUE7O0VBRUUsVUFBVTtFQUNWLFFBQVE7QUFDVjtBQUVBOztFQUVFLHlCQUF5QjtBQUMzQjtBQUVBOztFQUVFLFVBQVU7QUFDWlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8IS0tIE1vZGFsIC0tPlxcbiAgPFRyYW5zaXRpb24gbmFtZT1cXFwiZmFkZVxcXCI+XFxuICAgIDxkaXZcXG4gICAgICB2LWlmPVxcXCJtb2RhbFN0YXRlXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJmaXhlZCBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsYWNrIGJnLW9wYWNpdHktNDBcXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyZWxhdGl2ZSBmbGV4IGJnLXdoaXRlXFxcIj5cXG4gICAgICAgIDwhLS0gTGVmdCAtLT5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIm1heC13LVszNjVweF0gYmctYmx1ZWNvcmFsIHB4LVszNXB4XSBweS0xMiB0ZXh0LXdoaXRlXFxcIj5cXG4gICAgICAgICAgPGgzIGNsYXNzPVxcXCJ0ZXh0LVsyOHB4XSBmb250LWJvbGQgbGVhZGluZy05XFxcIj5cXG4gICAgICAgICAgICBHZXQgc3RhcnRlZCB3aXRoIDxiciAvPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1xcXCI+XFxuICAgICAgICAgICAgICA8c3Bhbj4gSUFUSSBQdWJsaXNoZXIgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImhhbmQtd2F2ZVxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvaDM+XFxuICAgICAgICAgIDxwIGNsYXNzPVxcXCJwdC1bMnB4XSB0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICBUbyBnZXQgeW91IHN0YXJ0ZWQgd2l0aCBwdWJsaXNoaW5nLCB0aGVyZSBhcmUgYSBmZXcga2V5IHN0ZXBzIHlvdVxcbiAgICAgICAgICAgIG5lZWQgdG8gY29tcGxldGUuIExldCdzIHdhbGsgdGhyb3VnaCB0aGVtIVxcbiAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDxTdGVwQmFyXFxuICAgICAgICAgICAgOmN1cnJlbnQtc3RlcD1cXFwic3RlcFxcXCJcXG4gICAgICAgICAgICA6c3RlcHM9XFxcIm9yZ2FuaXphdGlvblN0ZXBzXFxcIlxcbiAgICAgICAgICAgIEBjaGFuZ2Utc3RlcD1cXFwiY2hhbmdlU3RlcFxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPCEtLSBSaWdodCAtLT5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlIGZsZXggdy1bOTAwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC1bNDBweF1cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxUcmFuc2l0aW9uIG1vZGU9XFxcIm91dC1pblxcXCI+XFxuICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJzdGVwID09PSAxXFxcIiBjbGFzcz1cXFwiaC1mdWxsXFxcIj5cXG4gICAgICAgICAgICAgIDxQdWJsaXNoaW5nU2V0dGluZ3NTdGVwXFxuICAgICAgICAgICAgICAgIDpwdWJsaXNoZXItaWQ9XFxcInByb3BzLm9yZ2FuaXphdGlvbi5wdWJsaXNoZXJfaWRcXFwiXFxuICAgICAgICAgICAgICAgIDpvcmdhbml6YXRpb24taWQ9XFxcInByb3BzLm9yZ2FuaXphdGlvbi5pZFxcXCJcXG4gICAgICAgICAgICAgICAgOnJlZ2lzdHJhdGlvbi10eXBlPVxcXCJwcm9wcy5vcmdhbml6YXRpb24ucmVnaXN0cmF0aW9uX3R5cGVcXFwiXFxuICAgICAgICAgICAgICAgIDpwdWJsaXNoZXItc2V0dGluZz1cXFwicHVibGlzaGVyU2V0dGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgOmZldGNoLWRhdGE9XFxcImZldGNoRGF0YVxcXCJcXG4gICAgICAgICAgICAgICAgOmluaXRpYWwtcmVuZGVyPVxcXCJpbml0aWFsUmVuZGVyXFxcIlxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcz8uZmluZChcXG4gICAgICAgICAgICAgICAgICAgIChvbmJvYXJkaW5nU3RlcCkgPT4gb25ib2FyZGluZ1N0ZXAuc3RlcCA9PT0gMVxcbiAgICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlID8/IGZhbHNlXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQHByb2NlZWQtc3RlcD1cXFwicHJvY2VlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBjaGFuZ2UtcmVuZGVyPVxcXCJoYW5kbGVDaGFuZ2VSZW5kZXJcXFwiXFxuICAgICAgICAgICAgICAgIEBjb21wbGV0ZS1zdGVwPVxcXCJjb21wbGV0ZVN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEByZW1vdmUtY29tcGxldGVkLXN0ZXA9XFxcInJlbW92ZUNvbXBsZXRlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZWxzZS1pZj1cXFwic3RlcCA9PT0gMlxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICAgICAnaC1mdWxsJzogb3JnYW5pemF0aW9uU3RlcHM/LmZpbmQoXFxuICAgICAgICAgICAgICAgICAgKG9uYm9hcmRpbmdTdGVwKSA9PiBvbmJvYXJkaW5nU3RlcC5zdGVwID09PSAyXFxuICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlLFxcbiAgICAgICAgICAgICAgfVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGxcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPERlZmF1bHRWYWx1ZXNTdGVwXFxuICAgICAgICAgICAgICAgIDpjdXJyZW5jaWVzPVxcXCJwcm9wcy5jdXJyZW5jaWVzXFxcIlxcbiAgICAgICAgICAgICAgICA6bGFuZ3VhZ2VzPVxcXCJwcm9wcy5sYW5ndWFnZXNcXFwiXFxuICAgICAgICAgICAgICAgIDpodW1hbml0YXJpYW49XFxcInByb3BzLmh1bWFuaXRhcmlhblxcXCJcXG4gICAgICAgICAgICAgICAgOmRlZmF1bHQtZmxvdy10eXBlPVxcXCJwcm9wcy5kZWZhdWx0Rmxvd1R5cGVcXFwiXFxuICAgICAgICAgICAgICAgIDpkZWZhdWx0LWZpbmFuY2UtdHlwZT1cXFwicHJvcHMuZGVmYXVsdEZpbmFuY2VUeXBlXFxcIlxcbiAgICAgICAgICAgICAgICA6ZGVmYXVsdC1haWQtdHlwZT1cXFwicHJvcHMuZGVmYXVsdEFpZFR5cGVcXFwiXFxuICAgICAgICAgICAgICAgIDpkZWZhdWx0LXRpZWQtc3RhdHVzPVxcXCJwcm9wcy5kZWZhdWx0VGllZFN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOmRlZmF1bHQtdmFsdWVzPVxcXCJkZWZhdWx0VmFsdWVcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcIlxcbiAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvblN0ZXBzPy5maW5kKFxcbiAgICAgICAgICAgICAgICAgICAgKG9uYm9hcmRpbmdTdGVwKSA9PiBvbmJvYXJkaW5nU3RlcC5zdGVwID09PSAyXFxuICAgICAgICAgICAgICAgICAgKT8uY29tcGxldGUgPz8gZmFsc2VcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICA6ZmV0Y2gtZGF0YT1cXFwiZmV0Y2hEYXRhXFxcIlxcbiAgICAgICAgICAgICAgICBAcHJvY2VlZC1zdGVwPVxcXCJwcm9jZWVkU3RlcFxcXCJcXG4gICAgICAgICAgICAgICAgQHByZXZpb3VzLXN0ZXA9XFxcInByZXZpb3VzU3RlcFxcXCJcXG4gICAgICAgICAgICAgICAgQGNvbXBsZXRlLXN0ZXA9XFxcImNvbXBsZXRlU3RlcFxcXCJcXG4gICAgICAgICAgICAgICAgQHJlbW92ZS1jb21wbGV0ZWQtc3RlcD1cXFwicmVtb3ZlQ29tcGxldGVkU3RlcFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1lbHNlLWlmPVxcXCJzdGVwID09PSAzXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAgICdoLWZ1bGwnOiBvcmdhbml6YXRpb25TdGVwcz8uZmluZChcXG4gICAgICAgICAgICAgICAgICAob25ib2FyZGluZ1N0ZXApID0+IG9uYm9hcmRpbmdTdGVwLnN0ZXAgPT09IDNcXG4gICAgICAgICAgICAgICAgKT8uY29tcGxldGUsXFxuICAgICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8T3JnYW5pc2F0aW9uRGF0YVN0ZXBcXG4gICAgICAgICAgICAgICAgOm9yZ2FuaXphdGlvbi10eXBlLW9wdGlvbnM9XFxcInByb3BzLm9yZ2FuaXphdGlvblR5cGVcXFwiXFxuICAgICAgICAgICAgICAgIDpwcmV2aW91cy12YWx1ZXM9XFxcInByb3BzLm9yZ2FuaXphdGlvbi5yZXBvcnRpbmdfb3JnXFxcIlxcbiAgICAgICAgICAgICAgICA6ZmV0Y2gtZGF0YT1cXFwiZmV0Y2hEYXRhXFxcIlxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25TdGVwcz8uZmluZChcXG4gICAgICAgICAgICAgICAgICAgIChvbmJvYXJkaW5nU3RlcCkgPT4gb25ib2FyZGluZ1N0ZXAuc3RlcCA9PT0gM1xcbiAgICAgICAgICAgICAgICAgICk/LmNvbXBsZXRlID8/IGZhbHNlXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQHByb2NlZWQtc3RlcD1cXFwicHJvY2VlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBwcmV2aW91cy1zdGVwPVxcXCJwcmV2aW91c1N0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEBjb21wbGV0ZS1zdGVwPVxcXCJjb21wbGV0ZVN0ZXBcXFwiXFxuICAgICAgICAgICAgICAgIEByZW1vdmUtY29tcGxldGVkLXN0ZXA9XFxcInJlbW92ZUNvbXBsZXRlZFN0ZXBcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVxcXCJoLWZ1bGwgc2VsZi1zdGFydFxcXCI+XFxuICAgICAgICAgICAgICA8QWN0aXZpdHlTdGVwXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcIlxcbiAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvblN0ZXBzPy5maW5kKFxcbiAgICAgICAgICAgICAgICAgICAgKG9uYm9hcmRpbmdTdGVwKSA9PiBvbmJvYXJkaW5nU3RlcC5zdGVwID09PSA0XFxuICAgICAgICAgICAgICAgICAgKT8uY29tcGxldGVcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAcHJvY2VlZC1zdGVwPVxcXCJwcm9jZWVkU3RlcFxcXCJcXG4gICAgICAgICAgICAgICAgQHByZXZpb3VzLXN0ZXA9XFxcInByZXZpb3VzU3RlcFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvVHJhbnNpdGlvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPCEtLSBDbG9zZSBCdXR0b24gLS0+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtNCByaWdodC00XFxcIiBAY2xpY2sub25jZT1cXFwiY2xvc2VNb2RhbFxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWJsYWNrXFxcIiBpY29uPVxcXCJjYW5jZWwtY3Jvc3NcXFwiIC8+XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L1RyYW5zaXRpb24+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyByZWYsIGRlZmluZVByb3BzLCB3YXRjaEVmZmVjdCwgb25Nb3VudGVkIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgeyB1c2VTdG9yYWdlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5cXG5pbXBvcnQgU3RlcEJhciBmcm9tICdDb21wb25lbnRzL1N0ZXBCYXIudnVlJztcXG5pbXBvcnQgUHVibGlzaGluZ1NldHRpbmdzU3RlcCBmcm9tICcuL1N0ZXBzL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlJztcXG5pbXBvcnQgRGVmYXVsdFZhbHVlc1N0ZXAgZnJvbSAnLi9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWUnO1xcbmltcG9ydCBPcmdhbmlzYXRpb25EYXRhU3RlcCBmcm9tICcuL1N0ZXBzL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZSc7XFxuaW1wb3J0IEFjdGl2aXR5U3RlcCBmcm9tICcuL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuXFxuaW50ZXJmYWNlIE9yZ2FuaXphdGlvblN0ZXBzIHtcXG4gIHN0ZXA6IG51bWJlcjtcXG4gIHRpdGxlOiBzdHJpbmc7XFxuICBjb21wbGV0ZTogYm9vbGVhbjtcXG59XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBjdXJyZW5jaWVzOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgbGFuZ3VhZ2VzOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaHVtYW5pdGFyaWFuOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdEZsb3dUeXBlOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdEFpZFR5cGU6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0VGllZFN0YXR1czoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIG9yZ2FuaXphdGlvbk9uYm9hcmRpbmc6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBvcmdhbml6YXRpb246IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBvcmdhbml6YXRpb25UeXBlOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaXNGaXJzdFRpbWU6IHtcXG4gICAgdHlwZTogQm9vbGVhbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IHN0ZXAgPSByZWYoMSk7XFxuY29uc3QgbW9kYWxTdGF0ZSA9IHJlZih0cnVlKTtcXG5jb25zdCBpbml0aWFsUmVuZGVyID0gcmVmKHRydWUpO1xcblxcbmNvbnN0IHB1Ymxpc2hlclNldHRpbmcgPSByZWYoe30pO1xcbmNvbnN0IGRlZmF1bHRWYWx1ZSA9IHJlZih7fSk7XFxuXFxuY29uc3QgaXNNb2RlbENsb3NlQ2xpY2tlZCA9IHVzZVN0b3JhZ2UoXFxuICAnaXNNb2RlbENsb3NlQ2xpY2tlZCcsXFxuICBmYWxzZSxcXG4gIHNlc3Npb25TdG9yYWdlXFxuKTtcXG5cXG5jb25zdCBpc0ZvcmNlT3Blbk1vZGFsID1cXG4gIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lzRm9yY2VPcGVuTW9kYWwnKSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xcblxcbmNvbnN0IG9yZ2FuaXphdGlvblN0ZXBzID0gcmVmPE9yZ2FuaXphdGlvblN0ZXBzW10+KFxcbiAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5zdGVwc19zdGF0dXNcXG4pO1xcblxcbmNvbnN0IGZpcnN0SW5jb21wbGV0ZVN0ZXAgPVxcbiAgb3JnYW5pemF0aW9uU3RlcHMudmFsdWUuZmluZEluZGV4KFxcbiAgICAoc3RlcDogeyBjb21wbGV0ZTogYm9vbGVhbiB9KSA9PiAhc3RlcC5jb21wbGV0ZVxcbiAgKSArIDE7XFxuXFxuaWYgKCFwcm9wcy5pc0ZpcnN0VGltZSAmJiBmaXJzdEluY29tcGxldGVTdGVwID4gMCkge1xcbiAgc3RlcC52YWx1ZSA9IGZpcnN0SW5jb21wbGV0ZVN0ZXA7XFxufVxcblxcbmNvbnN0IGZldGNoRGF0YSA9ICgpID0+IHtcXG4gIGF4aW9zXFxuICAgIC5nZXQoJy9zZXR0aW5nL2RhdGEnKVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgcHVibGlzaGVyU2V0dGluZy52YWx1ZSA9IHJlcz8uZGF0YT8uZGF0YT8ucHVibGlzaGluZ19pbmZvO1xcbiAgICAgIGRlZmF1bHRWYWx1ZS52YWx1ZSA9IHtcXG4gICAgICAgIC4uLnJlcz8uZGF0YT8uZGF0YT8uYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXMsXFxuICAgICAgICAuLi5yZXM/LmRhdGE/LmRhdGE/LmRlZmF1bHRfdmFsdWVzLFxcbiAgICAgIH07XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyKSA9PiAvKiBlc2xpbnQtZGlzYWJsZSAqL2NvbnNvbGUubG9nKC4uLm9vX29vKGA4MTczNzI4MDJfMjM2XzIwXzIzNl80NV80YCwnRXJyb3InLCBlcnIpKSk7XFxufTtcXG5cXG5pZiAoaXNGb3JjZU9wZW5Nb2RhbCkge1xcbiAgbW9kYWxTdGF0ZS52YWx1ZSA9IHRydWU7XFxufSBlbHNlIGlmIChcXG4gIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcXG4gIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XFxuICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlXFxuKSB7XFxuICBtb2RhbFN0YXRlLnZhbHVlID0gZmFsc2U7XFxufVxcbi8vIGNvbnNvbGUubG9nKFxcbi8vICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyxcXG4vLyAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluLFxcbi8vICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZSxcXG4vLyAgICdTdGF0dXMnXFxuLy8gKTtcXG5cXG4vLyBpZiAoXFxuLy8gICAhcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5jb21wbGV0ZWRfb25ib2FyZGluZyB8fFxcbi8vICAgIXByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuZG9udF9zaG93X2FnYWluIHx8XFxuLy8gICAhaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZVxcbi8vICkge1xcbi8vICAgbW9kYWxTdGF0ZS52YWx1ZSA9IHRydWU7XFxuLy8gfVxcblxcbi8vIGlmKHByb3BzLilcXG5cXG4vLyB3YXRjaEVmZmVjdCgoKSA9PiB7XFxuLy8gICBpZiAoXFxuLy8gICAgIHByb3BzLm9yZ2FuaXphdGlvbk9uYm9hcmRpbmcuY29tcGxldGVkX29uYm9hcmRpbmcgfHxcXG4vLyAgICAgcHJvcHMub3JnYW5pemF0aW9uT25ib2FyZGluZy5kb250X3Nob3dfYWdhaW4gfHxcXG4vLyAgICAgaXNNb2RlbENsb3NlQ2xpY2tlZC52YWx1ZVxcbi8vICAgKSB7XFxuLy8gICAgIG1vZGFsU3RhdGUudmFsdWUgPSBmYWxzZTtcXG4vLyAgIH0gZWxzZSBpZiAoc3RvcmUuc3RhdGUuZ2V0U3RhcnRlZEJ1dHRvbikge1xcbi8vICAgICBtb2RhbFN0YXRlLnZhbHVlID0gdHJ1ZTtcXG4vLyAgIH1cXG4vLyB9KTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBpZiAobW9kYWxTdGF0ZS52YWx1ZSkge1xcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XFxuICB9IGVsc2Uge1xcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IGNsb3NlTW9kYWwgPSAoKSA9PiB7XFxuICBpc01vZGVsQ2xvc2VDbGlja2VkLnZhbHVlID0gdHJ1ZTtcXG4gIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2lzRm9yY2VPcGVuTW9kYWwnLCAnZmFsc2UnKTtcXG4gIG1vZGFsU3RhdGUudmFsdWUgPSBmYWxzZTtcXG59O1xcblxcbmNvbnN0IHByb2NlZWRTdGVwID0gKCkgPT4ge1xcbiAgaW5pdGlhbFJlbmRlci52YWx1ZSA9IGZhbHNlO1xcbiAgaWYgKHN0ZXAudmFsdWUgPCA0KSB7XFxuICAgIHN0ZXAudmFsdWUrKztcXG4gIH0gZWxzZSB7XFxuICAgIGNsb3NlTW9kYWwoKTtcXG4gIH1cXG59O1xcblxcbmNvbnN0IHByZXZpb3VzU3RlcCA9ICgpID0+IHtcXG4gIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcXG4gIHN0ZXAudmFsdWUtLTtcXG59O1xcblxcbmNvbnN0IGhhbmRsZUNoYW5nZVJlbmRlciA9ICgpID0+IHtcXG4gIGluaXRpYWxSZW5kZXIudmFsdWUgPSBmYWxzZTtcXG59O1xcblxcbmNvbnN0IGNvbXBsZXRlU3RlcCA9IChzdGVwOiBudW1iZXIpID0+IHtcXG4gIG9yZ2FuaXphdGlvblN0ZXBzLnZhbHVlW3N0ZXAgLSAxXS5jb21wbGV0ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCByZW1vdmVDb21wbGV0ZWRTdGVwID0gKHN0ZXA6IG51bWJlcikgPT4ge1xcbiAgb3JnYW5pemF0aW9uU3RlcHMudmFsdWVbc3RlcCAtIDFdLmNvbXBsZXRlID0gZmFsc2U7XFxufTtcXG5cXG5jb25zdCBjaGFuZ2VTdGVwID0gKGluZGV4OiBudW1iZXIpID0+IHtcXG4gIHN0ZXAudmFsdWUgPSBpbmRleDtcXG59O1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBmZXRjaERhdGEoKTtcXG59KTtcXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLy8qIGM4IGlnbm9yZSBzdGFydCAqLy8qIGVzbGludC1kaXNhYmxlICovO2Z1bmN0aW9uIG9vX2NtKCl7dHJ5e3JldHVybiAoMCxldmFsKShcXFwiZ2xvYmFsVGhpcy5fY29uc29sZV9uaW5qYVxcXCIpIHx8ICgwLGV2YWwpKFxcXCIvKiBodHRwczovL2dpdGh1Yi5jb20vd2FsbGFieWpzL2NvbnNvbGUtbmluamEjaG93LWRvZXMtaXQtd29yayAqLyd1c2Ugc3RyaWN0Jzt2YXIgXzB4YjM4NDc5PV8weDI2OTA7KGZ1bmN0aW9uKF8weDNkYTlhNyxfMHgxMjk5ODMpe3ZhciBfMHgyNDEzZjI9XzB4MjY5MCxfMHg0ZWQ3YmE9XzB4M2RhOWE3KCk7d2hpbGUoISFbXSl7dHJ5e3ZhciBfMHgxNTM1NjA9LXBhcnNlSW50KF8weDI0MTNmMigweDE5NSkpLzB4MSoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM4KSkvMHgyKSstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTkxKSkvMHgzKihwYXJzZUludChfMHgyNDEzZjIoMHgxYWYpKS8weDQpK3BhcnNlSW50KF8weDI0MTNmMigweDFkMikpLzB4NSstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFhKSkvMHg2KigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk5KSkvMHg3KStwYXJzZUludChfMHgyNDEzZjIoMHgxYzkpKS8weDgrLXBhcnNlSW50KF8weDI0MTNmMigweDFlYSkpLzB4OStwYXJzZUludChfMHgyNDEzZjIoMHgxZjcpKS8weGEqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOGIpKS8weGIpO2lmKF8weDE1MzU2MD09PV8weDEyOTk4MylicmVhaztlbHNlIF8weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9Y2F0Y2goXzB4MTE0ZGU2KXtfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fX19KF8weDQ5ZmIsMHg3NTc3OSkpO2Z1bmN0aW9uIF8weDQ5ZmIoKXt2YXIgXzB4MzEzYzI5PVsnX3F1b3RlZFJlZ0V4cCcsJ3dhcm4nLCdhdXRvRXhwYW5kUHJldmlvdXNPYmplY3RzJywnZ2V0UHJvdG90eXBlT2YnLCdfV2ViU29ja2V0JywnZ2V0dGVyJywnMTIzMFRFcGxsaCcsJ2ZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGNvbm5lY3RcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBob3N0OlxcXFxcXFxceDIwJywnX3NvcnRQcm9wcycsJ2NvdW50Jywnc29ydCcsJ3NldCcsJ251bGwnLCd0b0xvd2VyQ2FzZScsJ25lZ2F0aXZlWmVybycsJ2pvaW4nLCdzdGFjaycsJ19oYXNTeW1ib2xQcm9wZXJ0eU9uSXRzUGF0aCcsJ2N1cnJlbnQnLCdfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywndGhlbicsJ2dldE93blByb3BlcnR5U3ltYm9scycsJ0hUTUxBbGxDb2xsZWN0aW9uJywndXJsJywncGF0aFRvRmlsZVVSTCcsJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJywnY2FwcGVkJywnX2lzTWFwJywnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJywncm9vdEV4cHJlc3Npb24nLCd1bnJlZicsJ2Z1bmN0aW9uJywnaGl0cycsJ3N0ckxlbmd0aCcsJ19oYXNNYXBPbkl0c1BhdGgnLCdmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBmaW5kXFxcXFxcXFx4MjBhbmRcXFxcXFxcXHgyMGxvYWRcXFxcXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFxcXFxceDIwYnJvd3NlcicsJ25lZ2F0aXZlSW5maW5pdHknLCdbb2JqZWN0XFxcXFxcXFx4MjBTZXRdJywnc2VuZCcsJ3Byb3RvdHlwZScsJ2RlcHRoJywncmVhZHlTdGF0ZScsJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnLCd1bmRlZmluZWQnLCdfU3ltYm9sJywnX3Byb3BlcnR5JywnU2V0JywnbWFwJywnX2luTmV4dEVkZ2UnLCd2YWx1ZU9mJywnc2VlXFxcXFxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXFxcXFx4MjBmb3JcXFxcXFxcXHgyMG1vcmVcXFxcXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXFxcXFx4MjB3ZWJzb2NrZXRcXFxcXFxcXHgyMGVycm9yJywnX2dldE93blByb3BlcnR5TmFtZXMnLCdtZXNzYWdlJywnYmlnaW50JywndGltZScsJ3N0YXJ0c1dpdGgnLCdfY2xlYW5Ob2RlJywnX2Rpc3Bvc2VXZWJzb2NrZXQnLCdfcmVnRXhwVG9TdHJpbmcnLCdvbmVycm9yJywnY29uY2F0JywnMS4wLjAnLCdib29sZWFuJywnW29iamVjdFxcXFxcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXFxcXFx4MjBzZXJ2ZXInLCdfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0JywnX2Nvbm5lY3RpbmcnLCdNYXAnLFxcXFxcXFwiL2hvbWUvZmx1ZmZ5Ly52c2NvZGUvZXh0ZW5zaW9ucy93YWxsYWJ5anMuY29uc29sZS1uaW5qYS0xLjAuMzY2L25vZGVfbW9kdWxlc1xcXFxcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBzZW5kXFxcXFxcXFx4MjBsb2dzLFxcXFxcXFxceDIwcmVzdGFydGluZ1xcXFxcXFxceDIwdGhlXFxcXFxcXFx4MjBwcm9jZXNzXFxcXFxcXFx4MjBtYXlcXFxcXFxcXHgyMGhlbHA7XFxcXFxcXFx4MjBhbHNvXFxcXFxcXFx4MjBzZWVcXFxcXFxcXHgyMCcsJ2FuZ3VsYXInLCdjYXBwZWRFbGVtZW50cycsJ19zb2NrZXQnLCdfaXNVbmRlZmluZWQnLCdfaXNQcmltaXRpdmVXcmFwcGVyVHlwZScsJ2dldFdlYlNvY2tldENsYXNzJywnbWV0aG9kJywnW29iamVjdFxcXFxcXFxceDIwTWFwXScsJ3Rlc3QnLCdfc2V0Tm9kZUV4cGFuZGFibGVTdGF0ZScsJ3N0YWNrVHJhY2VMaW1pdCcsJ1tvYmplY3RcXFxcXFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBzZW5kXFxcXFxcXFx4MjBsb2dzLFxcXFxcXFxceDIwcmVmcmVzaGluZ1xcXFxcXFxceDIwdGhlXFxcXFxcXFx4MjBwYWdlXFxcXFxcXFx4MjBtYXlcXFxcXFxcXHgyMGhlbHA7XFxcXFxcXFx4MjBhbHNvXFxcXFxcXFx4MjBzZWVcXFxcXFxcXHgyMCcsJzIyNjE2MW5adGZXSCcsJ19uaW5qYUlnbm9yZU5leHRFcnJvcicsJ2FyZ3MnLCdkaXNhYmxlZExvZycsJzI5NTNzQm9pZlMnLCdtYXRjaCcsW1xcXFxcXFwibG9jYWxob3N0XFxcXFxcXCIsXFxcXFxcXCIxMjcuMC4wLjFcXFxcXFxcIixcXFxcXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXFxcXFwiLFxcXFxcXFwiZmx1ZmZ5XFxcXFxcXCIsXFxcXFxcXCIxOTIuMTY4LjEwLjE3MVxcXFxcXFwiXSwnc3RyaW5naWZ5JywnODAxOTYyU0NRUURFJywnaW5jbHVkZXMnLCdfaXNQcmltaXRpdmVUeXBlJywnaHJ0aW1lJywnZnVuY05hbWUnLCdwdXNoJywnd3M6Ly8nLCdvbm1lc3NhZ2UnLCdsb2NhdGlvbicsJ3Vuc2hpZnQnLCdwcm9jZXNzJywnX2lzU2V0JywnX0hUTUxBbGxDb2xsZWN0aW9uJywnX1dlYlNvY2tldENsYXNzJywndG9VcHBlckNhc2UnLCdhdXRvRXhwYW5kTWF4RGVwdGgnLCd0b3RhbFN0ckxlbmd0aCcsJzZ2R0RhVWYnLCd0cmFjZScsJ2RhdGUnLCdudW1iZXInLCd2YWx1ZScsJzRUbmRGSEInLCdyZWxvYWQnLCdub0Z1bmN0aW9ucycsJ2NvdmVyYWdlJywnY3JlYXRlJywnX2F0dGVtcHRUb1JlY29ubmVjdFNob3J0bHknLCd0b1N0cmluZycsJ19hZGRPYmplY3RQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsJ19hZGRGdW5jdGlvbnNOb2RlJywnX2FkZFByb3BlcnR5JywnYXV0b0V4cGFuZCcsJ2FycmF5JywnX2Nvbm5lY3RUb0hvc3ROb3cnLCdwYXJlbnQnLCdjYXBwZWRQcm9wcycsJ2RlZmluZVByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlOYW1lcycsJ25vZGUnLCd1bmtub3duJywnX2luQnJvd3NlcicsJ2NvbnN0cnVjdG9yJywnX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0JywnY2F0Y2gnLCdsb2dnZXJcXFxcXFxcXHgyMGZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGNvbm5lY3RcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBob3N0JywnNDEyZFpXbWpQJywnNTk5OTEyOHpVSHNmaycsJ3N0cmluZycsJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnLCdfcHJvcGVydHlOYW1lJywnX2NvbnNvbGVfbmluamEnLCcnLCdzZXJpYWxpemUnLCcuLi4nLCdpbmRleCcsJzM3NjY4MDVMWnVXT0knLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQWZ0ZXJGdWxsVmFsdWUnLCdleHBJZCcsJ3R5cGUnLCdOdW1iZXInLCdfc2V0Tm9kZVBlcm1pc3Npb25zJywnX3BfbmFtZScsJ2dhdGV3YXkuZG9ja2VyLmludGVybmFsJywnU3RyaW5nJywnaG9zdCcsJ3Jlc29sdmVHZXR0ZXJzJywnb3JpZ2luJywnbmV4dC5qcycsJzMzNDUzJywnX3JlY29ubmVjdFRpbWVvdXQnLCdmb3JFYWNoJywnX3BfJywnX3NldE5vZGVMYWJlbCcsJ2VudicsJ19jb25uZWN0QXR0ZW1wdENvdW50JywnaG9zdG5hbWUnLCdTeW1ib2wnLCdlbGFwc2VkJywnZWRnZScsJzE5NDEzMDlsY2NWUFMnLCdfYWRkaXRpb25hbE1ldGFkYXRhJywnbGV2ZWwnLCdfZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnd2VicGFjaycsJ25vdycsJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ107XzB4NDlmYj1mdW5jdGlvbigpe3JldHVybiBfMHgzMTNjMjk7fTtyZXR1cm4gXzB4NDlmYigpO312YXIgSz1PYmplY3RbXzB4YjM4NDc5KDB4MWIzKV0sUT1PYmplY3RbXzB4YjM4NDc5KDB4MWJmKV0sRz1PYmplY3RbXzB4YjM4NDc5KDB4MWI3KV0sZWU9T2JqZWN0W18weGIzODQ3OSgweDFjMCldLHRlPU9iamVjdFtfMHhiMzg0NzkoMHgxZjQpXSxuZT1PYmplY3RbXzB4YjM4NDc5KDB4MjIwKV1bJ2hhc093blByb3BlcnR5J10scmU9KF8weDUxMDEyMixfMHg1ODcwNGYsXzB4MmU0NGY2LF8weDIwYmIzOSk9Pnt2YXIgXzB4MmZjYTkxPV8weGIzODQ3OTtpZihfMHg1ODcwNGYmJnR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDI0Yyl8fHR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDIxMCkpe2ZvcihsZXQgXzB4NTczNGEwIG9mIGVlKF8weDU4NzA0ZikpIW5lWydjYWxsJ10oXzB4NTEwMTIyLF8weDU3MzRhMCkmJl8weDU3MzRhMCE9PV8weDJlNDRmNiYmUShfMHg1MTAxMjIsXzB4NTczNGEwLHsnZ2V0JzooKT0+XzB4NTg3MDRmW18weDU3MzRhMF0sJ2VudW1lcmFibGUnOiEoXzB4MjBiYjM5PUcoXzB4NTg3MDRmLF8weDU3MzRhMCkpfHxfMHgyMGJiMzlbJ2VudW1lcmFibGUnXX0pO31yZXR1cm4gXzB4NTEwMTIyO30sVj0oXzB4MTQ4ZDFkLF8weDQzN2Q3OCxfMHg1ZWMxMzEpPT4oXzB4NWVjMTMxPV8weDE0OGQxZCE9bnVsbD9LKHRlKF8weDE0OGQxZCkpOnt9LHJlKF8weDQzN2Q3OHx8IV8weDE0OGQxZHx8IV8weDE0OGQxZFsnX19lcycrJ01vZHVsZSddP1EoXzB4NWVjMTMxLCdkZWZhdWx0Jyx7J3ZhbHVlJzpfMHgxNDhkMWQsJ2VudW1lcmFibGUnOiEweDB9KTpfMHg1ZWMxMzEsXzB4MTQ4ZDFkKSksWj1jbGFzc3tjb25zdHJ1Y3RvcihfMHgzYjQ2NTUsXzB4MWQ1YmU4LF8weDM2OGRjZixfMHg1ZjRlYjEsXzB4NWU4NDJmLF8weDg2ODc5ZCl7dmFyIF8weDVlMGU1NT1fMHhiMzg0NzksXzB4MTg1OWZiLF8weGM1N2IwLF8weDUzZjU4NCxfMHgyZWUzNjQ7dGhpc1tfMHg1ZTBlNTUoMHgyMWEpXT1fMHgzYjQ2NTUsdGhpc1tfMHg1ZTBlNTUoMHgxZGIpXT1fMHgxZDViZTgsdGhpc1sncG9ydCddPV8weDM2OGRjZix0aGlzWydub2RlTW9kdWxlcyddPV8weDVmNGViMSx0aGlzW18weDVlMGU1NSgweDI1ZildPV8weDVlODQyZix0aGlzW18weDVlMGU1NSgweDIxOCldPV8weDg2ODc5ZCx0aGlzW18weDVlMGU1NSgweDE3NSldPSEweDAsdGhpc1tfMHg1ZTBlNTUoMHgxZjApXT0hMHgwLHRoaXNbJ19jb25uZWN0ZWQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDVlMGU1NSgweDIyOSldPSgoXzB4YzU3YjA9KF8weDE4NTlmYj1fMHgzYjQ2NTVbXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDE4NTlmYltfMHg1ZTBlNTUoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4YzU3YjBbXzB4NWUwZTU1KDB4MjMxKV0pPT09XzB4NWUwZTU1KDB4MWU5KSx0aGlzW18weDVlMGU1NSgweDFjMyldPSEoKF8weDJlZTM2ND0oXzB4NTNmNTg0PXRoaXNbJ2dsb2JhbCddW18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1M2Y1ODRbXzB4NWUwZTU1KDB4MjRkKV0pIT1udWxsJiZfMHgyZWUzNjRbXzB4NWUwZTU1KDB4MWMxKV0pJiYhdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXSx0aGlzWydfV2ViU29ja2V0Q2xhc3MnXT1udWxsLHRoaXNbXzB4NWUwZTU1KDB4MWU1KV09MHgwLHRoaXNbXzB4NWUwZTU1KDB4MThjKV09MHgxNCx0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddPV8weDVlMGU1NSgweDE4ZCksdGhpc1tfMHg1ZTBlNTUoMHgyMTcpXT0odGhpc1snX2luQnJvd3NlciddP18weDVlMGU1NSgweDE5MCk6XzB4NWUwZTU1KDB4MTdlKSkrdGhpc1tfMHg1ZTBlNTUoMHgyMGEpXTt9YXN5bmNbXzB4YjM4NDc5KDB4MTg0KV0oKXt2YXIgXzB4NWI0MGM0PV8weGIzODQ3OSxfMHg0M2FkYWMsXzB4M2YwOGQ5O2lmKHRoaXNbXzB4NWI0MGM0KDB4MWE2KV0pcmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV07bGV0IF8weDFlZmU3MztpZih0aGlzW18weDViNDBjNCgweDFjMyldfHx0aGlzW18weDViNDBjNCgweDIyOSldKV8weDFlZmU3Mz10aGlzW18weDViNDBjNCgweDIxYSldWydXZWJTb2NrZXQnXTtlbHNle2lmKChfMHg0M2FkYWM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsncHJvY2VzcyddKSE9bnVsbCYmXzB4NDNhZGFjW18weDViNDBjNCgweDFmNSldKV8weDFlZmU3Mz0oXzB4M2YwOGQ5PXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bXzB4NWI0MGM0KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmMDhkOVsnX1dlYlNvY2tldCddO2Vsc2UgdHJ5e2xldCBfMHgxNzkyNWE9YXdhaXQgaW1wb3J0KCdwYXRoJyk7XzB4MWVmZTczPShhd2FpdCBpbXBvcnQoKGF3YWl0IGltcG9ydChfMHg1YjQwYzQoMHgyMDgpKSlbXzB4NWI0MGM0KDB4MjA5KV0oXzB4MTc5MjVhWydqb2luJ10odGhpc1snbm9kZU1vZHVsZXMnXSxfMHg1YjQwYzQoMHgxNzYpKSlbXzB4NWI0MGM0KDB4MWI1KV0oKSkpWydkZWZhdWx0J107fWNhdGNoe3RyeXtfMHgxZWZlNzM9cmVxdWlyZShyZXF1aXJlKCdwYXRoJylbXzB4NWI0MGM0KDB4MjAwKV0odGhpc1tfMHg1YjQwYzQoMHgyNTYpXSwnd3MnKSk7fWNhdGNoe3Rocm93IG5ldyBFcnJvcihfMHg1YjQwYzQoMHgyMTQpKTt9fX1yZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXT1fMHgxZWZlNzMsXzB4MWVmZTczO31bXzB4YjM4NDc5KDB4MWJjKV0oKXt2YXIgXzB4M2UzYTY5PV8weGIzODQ3OTt0aGlzW18weDNlM2E2OSgweDI1OSldfHx0aGlzW18weDNlM2E2OSgweDI1NCldfHx0aGlzWydfY29ubmVjdEF0dGVtcHRDb3VudCddPj10aGlzW18weDNlM2E2OSgweDE4YyldfHwodGhpc1snX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MCx0aGlzW18weDNlM2E2OSgweDFlNSldKyssdGhpc1snX3dzJ109bmV3IFByb21pc2UoKF8weDIyN2M5OCxfMHgyZDIwNjUpPT57dmFyIF8weDQzYzg2OT1fMHgzZTNhNjk7dGhpc1snZ2V0V2ViU29ja2V0Q2xhc3MnXSgpW18weDQzYzg2OSgweDIwNSldKF8weDU4NTIyND0+e3ZhciBfMHgzZjNhODc9XzB4NDNjODY5O2xldCBfMHgyZGQ1OTQ9bmV3IF8weDU4NTIyNChfMHgzZjNhODcoMHgxOWYpKyghdGhpc1snX2luQnJvd3NlciddJiZ0aGlzWydkb2NrZXJpemVkQXBwJ10/XzB4M2YzYTg3KDB4MWQ5KTp0aGlzW18weDNmM2E4NygweDFkYildKSsnOicrdGhpc1sncG9ydCddKTtfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjNiKV09KCk9Pnt2YXIgXzB4MTI2ODZhPV8weDNmM2E4Nzt0aGlzW18weDEyNjg2YSgweDE3NSldPSEweDEsdGhpc1tfMHgxMjY4NmEoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4MTI2ODZhKDB4MWI0KV0oKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDEyNjg2YSgweDIzMikpKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgyNDMpXT0oKT0+e3ZhciBfMHg0ZGFmZjY9XzB4M2YzYTg3O3RoaXNbJ19pbkJyb3dzZXInXXx8XzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSgpLF8weDIyN2M5OChfMHgyZGQ1OTQpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDE4ZildPSgpPT57dmFyIF8weDNhNTgzZj1fMHgzZjNhODc7dGhpc1tfMHgzYTU4M2YoMHgxZjApXT0hMHgwLHRoaXNbXzB4M2E1ODNmKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDNhNTgzZigweDFiNCldKCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MWEwKV09XzB4MjYyMTVhPT57dmFyIF8weDFhZGJkMT1fMHgzZjNhODc7dHJ5e2lmKCEoXzB4MjYyMTVhIT1udWxsJiZfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pfHwhdGhpc1tfMHgxYWRiZDEoMHgyMTgpXSlyZXR1cm47bGV0IF8weDJiYWJkOT1KU09OW18weDFhZGJkMSgweDI1MyldKF8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSk7dGhpc1tfMHgxYWRiZDEoMHgyMTgpXShfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTg1KV0sXzB4MmJhYmQ5W18weDFhZGJkMSgweDE5MyldLHRoaXNbXzB4MWFkYmQxKDB4MjFhKV0sdGhpc1snX2luQnJvd3NlciddKTt9Y2F0Y2h7fX07fSlbXzB4NDNjODY5KDB4MjA1KV0oXzB4NGY3MTRlPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgwLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDQzYzg2OSgweDFmMCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NDNjODY5KDB4MWU1KV09MHgwLF8weDRmNzE0ZSkpW18weDQzYzg2OSgweDFjNildKF8weDIyZWM5ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MSx0aGlzW18weDQzYzg2OSgweDI1OSldPSEweDEsY29uc29sZVtfMHg0M2M4NjkoMHgxZjIpXSgnbG9nZ2VyXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBjb25uZWN0XFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwaG9zdCxcXFxcXFxcXHgyMHNlZVxcXFxcXFxceDIwJyt0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDQzYzg2OSgweDFmOCkrKF8weDIyZWM5ZSYmXzB4MjJlYzllW18weDQzYzg2OSgweDIzNCldKSkpKSk7fSkpO31bXzB4YjM4NDc5KDB4MjM5KV0oXzB4MjU4ZWEzKXt2YXIgXzB4MzE2MDdlPV8weGIzODQ3OTt0aGlzW18weDMxNjA3ZSgweDI1NCldPSEweDEsdGhpc1tfMHgzMTYwN2UoMHgyNTkpXT0hMHgxO3RyeXtfMHgyNThlYTNbJ29uY2xvc2UnXT1udWxsLF8weDI1OGVhM1snb25lcnJvciddPW51bGwsXzB4MjU4ZWEzW18weDMxNjA3ZSgweDI0MyldPW51bGw7fWNhdGNoe310cnl7XzB4MjU4ZWEzW18weDMxNjA3ZSgweDIyMildPDB4MiYmXzB4MjU4ZWEzWydjbG9zZSddKCk7fWNhdGNoe319W18weGIzODQ3OSgweDFiNCldKCl7dmFyIF8weDIzM2JhNj1fMHhiMzg0Nzk7Y2xlYXJUaW1lb3V0KHRoaXNbXzB4MjMzYmE2KDB4MWUwKV0pLCEodGhpc1tfMHgyMzNiYTYoMHgxZTUpXT49dGhpc1tfMHgyMzNiYTYoMHgxOGMpXSkmJih0aGlzW18weDIzM2JhNigweDFlMCldPXNldFRpbWVvdXQoKCk9Pnt2YXIgXzB4NDAxZmVjPV8weDIzM2JhNixfMHg1MmIzZDk7dGhpc1tfMHg0MDFmZWMoMHgyNTQpXXx8dGhpc1tfMHg0MDFmZWMoMHgyNTkpXXx8KHRoaXNbXzB4NDAxZmVjKDB4MWJjKV0oKSwoXzB4NTJiM2Q5PXRoaXNbXzB4NDAxZmVjKDB4MjVkKV0pPT1udWxsfHxfMHg1MmIzZDlbXzB4NDAxZmVjKDB4MWM2KV0oKCk9PnRoaXNbXzB4NDAxZmVjKDB4MWI0KV0oKSkpO30sMHgxZjQpLHRoaXNbXzB4MjMzYmE2KDB4MWUwKV1bXzB4MjMzYmE2KDB4MjBmKV0mJnRoaXNbXzB4MjMzYmE2KDB4MWUwKV1bJ3VucmVmJ10oKSk7fWFzeW5jW18weGIzODQ3OSgweDIxZildKF8weDU4NmIxZCl7dmFyIF8weDVkODUwOD1fMHhiMzg0Nzk7dHJ5e2lmKCF0aGlzW18weDVkODUwOCgweDE3NSldKXJldHVybjt0aGlzW18weDVkODUwOCgweDFmMCldJiZ0aGlzW18weDVkODUwOCgweDFiYyldKCksKGF3YWl0IHRoaXNbXzB4NWQ4NTA4KDB4MjVkKV0pW18weDVkODUwOCgweDIxZildKEpTT05bXzB4NWQ4NTA4KDB4MTk4KV0oXzB4NTg2YjFkKSk7fWNhdGNoKF8weGZkM2E5Nyl7Y29uc29sZVtfMHg1ZDg1MDgoMHgxZjIpXSh0aGlzW18weDVkODUwOCgweDIxNyldKyc6XFxcXFxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxcXFxcXHgyMENvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBleHRlbnNpb25cXFxcXFxcXHgyMGlzXFxcXFxcXFx4MjBjb25uZWN0ZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjAnKyhfMHg0Mjk3YjJbJ2NoYXJBdCddKDB4MClbXzB4MTA4Yzk4KDB4MWE3KV0oKStfMHg0Mjk3YjJbJ3N1YnN0ciddKDB4MSkpKycsJywnYmFja2dyb3VuZDpcXFxcXFxcXHgyMHJnYigzMCwzMCwzMCk7XFxcXFxcXFx4MjBjb2xvcjpcXFxcXFxcXHgyMHJnYigyNTUsMjEzLDkyKScsXzB4MTA4Yzk4KDB4MjJiKSk7fWxldCBfMHg0YWJlOTY9bmV3IFooXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1MWI0ZDYsXzB4MWFhZjkwLF8weDEzZWY4OSxfMHhmNjgyYTcpO3JldHVybiBfMHg0YWJlOTZbXzB4MTA4Yzk4KDB4MjFmKV1bXzB4MTA4Yzk4KDB4MjJlKV0oXzB4NGFiZTk2KTt9Y2F0Y2goXzB4NWJmNDliKXtyZXR1cm4gY29uc29sZVsnd2FybiddKF8weDEwOGM5OCgweDFjNyksXzB4NWJmNDliJiZfMHg1YmY0OWJbXzB4MTA4Yzk4KDB4MjM0KV0pLCgpPT57fTt9fSk7cmV0dXJuIF8weDM3OWZkMz0+XzB4NGNmMTZkW18weGEzZmI0MigweDFlMSldKF8weDM3MTEyMT0+XzB4MzcxMTIxKF8weDM3OWZkMykpO31mdW5jdGlvbiBpZShfMHgzZThmMjUsXzB4MzlmZWE1LF8weDI1MTUwZixfMHgyNjUyOGUpe3ZhciBfMHgxY2M5Njc9XzB4YjM4NDc5O18weDI2NTI4ZSYmXzB4M2U4ZjI1PT09XzB4MWNjOTY3KDB4MWIwKSYmXzB4MjUxNTBmW18weDFjYzk2NygweDFhMSldWydyZWxvYWQnXSgpO31mdW5jdGlvbiBCKF8weDMwOTg0Mil7dmFyIF8weDI0ZGZjMj1fMHhiMzg0NzksXzB4MmFjMDQ4LF8weDUwYWJkZjtsZXQgXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDExYTY3MyxfMHg1ZjA2OTMpe3JldHVybiBfMHg1ZjA2OTMtXzB4MTFhNjczO30sXzB4MWM3ZmFmO2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxNzcpXSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4OGRiZTE9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4OGRiZTEoMHgxNzcpXVtfMHg4ZGJlMSgweDFlZildKCk7fTtlbHNle2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxYTMpXSYmXzB4MzA5ODQyWydwcm9jZXNzJ11bXzB4MjRkZmMyKDB4MTljKV0mJigoXzB4NTBhYmRmPShfMHgyYWMwNDg9XzB4MzA5ODQyWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDJhYzA0OFsnZW52J10pPT1udWxsP3ZvaWQgMHgwOl8weDUwYWJkZlsnTkVYVF9SVU5USU1FJ10pIT09XzB4MjRkZmMyKDB4MWU5KSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NTJkNjQwPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDUyZDY0MCgweDFhMyldWydocnRpbWUnXSgpO30sXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDU1MGJhOSxfMHgxNmEzZTIpe3JldHVybiAweDNlOCooXzB4MTZhM2UyWzB4MF0tXzB4NTUwYmE5WzB4MF0pKyhfMHgxNmEzZTJbMHgxXS1fMHg1NTBiYTlbMHgxXSkvMHhmNDI0MDt9O2Vsc2UgdHJ5e2xldCB7cGVyZm9ybWFuY2U6XzB4MzRkZTRhfT1yZXF1aXJlKF8weDI0ZGZjMigweDI0YikpO18weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg0ZjFkNjk9XzB4MjRkZmMyO3JldHVybiBfMHgzNGRlNGFbXzB4NGYxZDY5KDB4MWVmKV0oKTt9O31jYXRjaHtfMHgxYzdmYWY9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGUoKTt9O319cmV0dXJueydlbGFwc2VkJzpfMHhkZGJkZWYsJ3RpbWVTdGFtcCc6XzB4MWM3ZmFmLCdub3cnOigpPT5EYXRlW18weDI0ZGZjMigweDFlZildKCl9O31mdW5jdGlvbiBfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpe3ZhciBfMHg0OWZiZGM9XzB4NDlmYigpO3JldHVybiBfMHgyNjkwPWZ1bmN0aW9uKF8weDI2OTAxYixfMHgzNThmMWYpe18weDI2OTAxYj1fMHgyNjkwMWItMHgxNzM7dmFyIF8weDFmZjI4Nz1fMHg0OWZiZGNbXzB4MjY5MDFiXTtyZXR1cm4gXzB4MWZmMjg3O30sXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKTt9ZnVuY3Rpb24gSChfMHgyNjU1ZTMsXzB4MTRjYmY3LF8weDRjZDYwOSl7dmFyIF8weDI2YWMyYz1fMHhiMzg0NzksXzB4NGJlNzBkLF8weDNmYjRjYyxfMHgxZmZjNjIsXzB4NDdlOGFhLF8weDVmMDk0MjtpZihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddIT09dm9pZCAweDApcmV0dXJuIF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107bGV0IF8weDI1MTI5NT0oKF8weDNmYjRjYz0oXzB4NGJlNzBkPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NGJlNzBkW18weDI2YWMyYygweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgzZmI0Y2NbXzB4MjZhYzJjKDB4MWMxKV0pfHwoKF8weDQ3ZThhYT0oXzB4MWZmYzYyPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MWZmYzYyW18weDI2YWMyYygweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHg0N2U4YWFbJ05FWFRfUlVOVElNRSddKT09PV8weDI2YWMyYygweDFlOSk7ZnVuY3Rpb24gXzB4NTlkOWRlKF8weDE5NDkzOCl7dmFyIF8weDVlNWQ1Yz1fMHgyNmFjMmM7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDIzNyldKCcvJykmJl8weDE5NDkzOFsnZW5kc1dpdGgnXSgnLycpKXtsZXQgXzB4Y2I3ODA0PW5ldyBSZWdFeHAoXzB4MTk0OTM4WydzbGljZSddKDB4MSwtMHgxKSk7cmV0dXJuIF8weDQ5ZDc0Mj0+XzB4Y2I3ODA0W18weDVlNWQ1YygweDE4NyldKF8weDQ5ZDc0Mik7fWVsc2V7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCcqJyl8fF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnPycpKXtsZXQgXzB4NTBmYTJmPW5ldyBSZWdFeHAoJ14nK18weDE5NDkzOFtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXFxcXFwuL2csU3RyaW5nW18weDVlNWQ1YygweDI0ZSldKDB4NWMpKycuJylbJ3JlcGxhY2UnXSgvXFxcXFxcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFxcXFxcPy9nLCcuJykrU3RyaW5nWydmcm9tQ2hhckNvZGUnXSgweDI0KSk7cmV0dXJuIF8weDFhZWZjND0+XzB4NTBmYTJmW18weDVlNWQ1YygweDE4NyldKF8weDFhZWZjNCk7fWVsc2UgcmV0dXJuIF8weDQ2YmNmNj0+XzB4NDZiY2Y2PT09XzB4MTk0OTM4O319bGV0IF8weDIwNTQ2Zj1fMHgxNGNiZjdbXzB4MjZhYzJjKDB4MjI4KV0oXzB4NTlkOWRlKTtyZXR1cm4gXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldPV8weDI1MTI5NXx8IV8weDE0Y2JmNywhXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldJiYoKF8weDVmMDk0Mj1fMHgyNjU1ZTNbJ2xvY2F0aW9uJ10pPT1udWxsP3ZvaWQgMHgwOl8weDVmMDk0MltfMHgyNmFjMmMoMHgxZTYpXSkmJihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddPV8weDIwNTQ2ZltfMHgyNmFjMmMoMHgyNDgpXShfMHg0Mzg1YjQ9Pl8weDQzODViNChfMHgyNjU1ZTNbJ2xvY2F0aW9uJ11bJ2hvc3RuYW1lJ10pKSksXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTt9ZnVuY3Rpb24gWChfMHgyMmNjYjMsXzB4MmM3M2RlLF8weDRlMTcxYixfMHgzNWZjNjMpe3ZhciBfMHg0NzRlMjg9XzB4YjM4NDc5O18weDIyY2NiMz1fMHgyMmNjYjMsXzB4MmM3M2RlPV8weDJjNzNkZSxfMHg0ZTE3MWI9XzB4NGUxNzFiLF8weDM1ZmM2Mz1fMHgzNWZjNjM7bGV0IF8weDQxNTQ2OD1CKF8weDIyY2NiMyksXzB4MzdmNTYxPV8weDQxNTQ2OFtfMHg0NzRlMjgoMHgxZTgpXSxfMHg1OTE1OGI9XzB4NDE1NDY4Wyd0aW1lU3RhbXAnXTtjbGFzcyBfMHg0MzI4YmN7Y29uc3RydWN0b3IoKXt2YXIgXzB4MWFmNmY2PV8weDQ3NGUyODt0aGlzW18weDFhZjZmNigweDI0NCldPS9eKD8hKD86ZG98aWZ8aW58Zm9yfGxldHxuZXd8dHJ5fHZhcnxjYXNlfGVsc2V8ZW51bXxldmFsfGZhbHNlfG51bGx8dGhpc3x0cnVlfHZvaWR8d2l0aHxicmVha3xjYXRjaHxjbGFzc3xjb25zdHxzdXBlcnx0aHJvd3x3aGlsZXx5aWVsZHxkZWxldGV8ZXhwb3J0fGltcG9ydHxwdWJsaWN8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dHlwZW9mfGRlZmF1bHR8ZXh0ZW5kc3xmaW5hbGx5fHBhY2thZ2V8cHJpdmF0ZXxjb250aW51ZXxkZWJ1Z2dlcnxmdW5jdGlvbnxhcmd1bWVudHN8aW50ZXJmYWNlfHByb3RlY3RlZHxpbXBsZW1lbnRzfGluc3RhbmNlb2YpJClbXyRhLXpBLVpcXFxcXFxcXHhBMC1cXFxcXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFxcXFxceEEwLVxcXFxcXFxcdUZGRkZdKiQvLHRoaXNbJ19udW1iZXJSZWdFeHAnXT0vXigwfFsxLTldWzAtOV0qKSQvLHRoaXNbXzB4MWFmNmY2KDB4MWYxKV09LycoW15cXFxcXFxcXFxcXFxcXFxcJ118XFxcXFxcXFxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXFxcXFx4MjBCaWdJbnRdJz9fMHgzNmJkYjc9J2JpZ2ludCc6XzB4MmI1NmVjPT09bnVsbD9fMHgzNmJkYjc9J251bGwnOl8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXSYmKF8weDM2YmRiNz1fMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV1bXzB4MWUwMTUyKDB4MjE2KV18fF8weDM2YmRiNyk6XzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjI0KSYmdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmXzB4MmI1NmVjIGluc3RhbmNlb2YgdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmKF8weDM2YmRiNz1fMHgxZTAxNTIoMHgyMDcpKSxfMHgzNmJkYjc7fVsnX29iamVjdFRvU3RyaW5nJ10oXzB4ZDU2NzY0KXt2YXIgXzB4NWFiZDIzPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDVhYmQyMygweDIyMCldW18weDVhYmQyMygweDFiNSldW18weDVhYmQyMygweDIyZildKF8weGQ1Njc2NCk7fVsnX2lzUHJpbWl0aXZlVHlwZSddKF8weGI4OGQ5Nyl7dmFyIF8weDUwNmFmND1fMHg0NzRlMjg7cmV0dXJuIF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDIzZSl8fF8weGI4OGQ5Nz09PSdzdHJpbmcnfHxfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgxYWQpO31bXzB4NDc0ZTI4KDB4MTgzKV0oXzB4MmIzYmZkKXt2YXIgXzB4MzA3OTU2PV8weDQ3NGUyODtyZXR1cm4gXzB4MmIzYmZkPT09J0Jvb2xlYW4nfHxfMHgyYjNiZmQ9PT1fMHgzMDc5NTYoMHgxZGEpfHxfMHgyYjNiZmQ9PT0nTnVtYmVyJzt9WydfYWRkUHJvcGVydHknXShfMHgzNWYyYWMsXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSl7dmFyIF8weDMxNTdmMT10aGlzO3JldHVybiBmdW5jdGlvbihfMHgxZjhhNzEpe3ZhciBfMHgxOWMzYjg9XzB4MjY5MCxfMHg0MGJmZmM9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDIwMyldLF8weDE2MjhjZj1fMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXSxfMHg5M2VkNWY9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldO18weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVsncGFyZW50J109XzB4NDBiZmZjLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxZDEpXT10eXBlb2YgXzB4NGEyYWIxPT1fMHgxOWMzYjgoMHgxYWQpP18weDRhMmFiMTpfMHgxZjhhNzEsXzB4MzVmMmFjW18weDE5YzNiOCgweDE5ZSldKF8weDMxNTdmMVsnX3Byb3BlcnR5J10oXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSkpLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXT1fMHg5M2VkNWYsXzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV09XzB4MTYyOGNmO307fVtfMHg0NzRlMjgoMHgxYjYpXShfMHhjODRiOTMsXzB4M2UyZjQ0LF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApe3ZhciBfMHgxZDdhNWY9XzB4NDc0ZTI4LF8weGI5NmE2MD10aGlzO3JldHVybiBfMHgzZTJmNDRbXzB4MWQ3YTVmKDB4MWUyKStfMHg0ZTE0OGRbXzB4MWQ3YTVmKDB4MWI1KV0oKV09ITB4MCxmdW5jdGlvbihfMHg1ZDRjOTQpe3ZhciBfMHg1NDYzZDk9XzB4MWQ3YTVmLF8weDM3ZmQ2Mj1fMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgyMDMpXSxfMHgyZThjZjc9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFkMSldLF8weDQxMWU2Nj1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ3BhcmVudCddO18weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxYmQpXT1fMHgzN2ZkNjIsXzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MWQxKV09XzB4NWQ0Yzk0LF8weGM4NGI5M1tfMHg1NDYzZDkoMHgxOWUpXShfMHhiOTZhNjBbXzB4NTQ2M2Q5KDB4MjI2KV0oXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCkpLF8weDJlY2Q1Zlsnbm9kZSddWydwYXJlbnQnXT1fMHg0MTFlNjYsXzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydpbmRleCddPV8weDJlOGNmNzt9O31bXzB4NDc0ZTI4KDB4MjI2KV0oXzB4MzA5MDA0LF8weDI3ZjhmNCxfMHgyZDQwNmEsXzB4M2QxZWIyLF8weDVkYzE0OCl7dmFyIF8weDJmNjdjMD1fMHg0NzRlMjgsXzB4M2QyMzUxPXRoaXM7XzB4NWRjMTQ4fHwoXzB4NWRjMTQ4PWZ1bmN0aW9uKF8weDE2ZTViNCxfMHg5ZDU5Nzgpe3JldHVybiBfMHgxNmU1YjRbXzB4OWQ1OTc4XTt9KTt2YXIgXzB4MTIxZDc5PV8weDJkNDA2YVsndG9TdHJpbmcnXSgpLF8weDEwYTM1Zj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV18fHt9LF8weDU4OTc0Mj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0sXzB4ODJhYmY0PV8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXTt0cnl7dmFyIF8weDI1YTYyYT10aGlzW18weDJmNjdjMCgweDIwYyldKF8weDMwOTAwNCksXzB4MTdiY2I1PV8weDEyMWQ3OTtfMHgyNWE2MmEmJl8weDE3YmNiNVsweDBdPT09J1xcXFxcXFxceDI3JyYmKF8weDE3YmNiNT1fMHgxN2JjYjVbJ3N1YnN0ciddKDB4MSxfMHgxN2JjYjVbJ2xlbmd0aCddLTB4MikpO3ZhciBfMHg1Mzg1ODE9XzB4M2QxZWIyW18weDJmNjdjMCgweDIwZCldPV8weDEwYTM1ZltfMHgyZjY3YzAoMHgxZTIpK18weDE3YmNiNV07XzB4NTM4NTgxJiYoXzB4M2QxZWIyWydkZXB0aCddPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSsweDEpLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT0hIV8weDUzODU4MTt2YXIgXzB4NTdhNzQyPXR5cGVvZiBfMHgyZDQwNmE9PV8weDJmNjdjMCgweDE3MyksXzB4NDI4NzY3PXsnbmFtZSc6XzB4NTdhNzQyfHxfMHgyNWE2MmE/XzB4MTIxZDc5OnRoaXNbJ19wcm9wZXJ0eU5hbWUnXShfMHgxMjFkNzkpfTtpZihfMHg1N2E3NDImJihfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MTczKV09ITB4MCksIShfMHgyN2Y4ZjQ9PT1fMHgyZjY3YzAoMHgxYmIpfHxfMHgyN2Y4ZjQ9PT0nRXJyb3InKSl7dmFyIF8weDI3YzM3Yj10aGlzW18weDJmNjdjMCgweDIwNCldKF8weDMwOTAwNCxfMHgyZDQwNmEpO2lmKF8weDI3YzM3YiYmKF8weDI3YzM3YltfMHgyZjY3YzAoMHgxZmMpXSYmKF8weDQyODc2N1snc2V0dGVyJ109ITB4MCksXzB4MjdjMzdiW18weDJmNjdjMCgweDI1MildJiYhXzB4NTM4NTgxJiYhXzB4M2QxZWIyW18weDJmNjdjMCgweDFkYyldKSlyZXR1cm4gXzB4NDI4NzY3W18weDJmNjdjMCgweDFmNildPSEweDAsdGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHg1M2RiM2Y7dHJ5e18weDUzZGIzZj1fMHg1ZGMxNDgoXzB4MzA5MDA0LF8weDJkNDA2YSk7fWNhdGNoKF8weDE3NWY2Yyl7cmV0dXJuIF8weDQyODc2Nz17J25hbWUnOl8weDEyMWQ3OSwndHlwZSc6XzB4MmY2N2MwKDB4MWMyKSwnZXJyb3InOl8weDE3NWY2Y1tfMHgyZjY3YzAoMHgyMzQpXX0sdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDNjY2QwOT10aGlzW18weDJmNjdjMCgweDI2MCldKF8weDUzZGIzZiksXzB4NDk1NDU3PXRoaXNbXzB4MmY2N2MwKDB4MTliKV0oXzB4M2NjZDA5KTtpZihfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWQ1KV09XzB4M2NjZDA5LF8weDQ5NTQ1Nyl0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMixfMHg1M2RiM2YsZnVuY3Rpb24oKXt2YXIgXzB4Mjk0MjZhPV8weDJmNjdjMDtfMHg0Mjg3NjdbXzB4Mjk0MjZhKDB4MWFlKV09XzB4NTNkYjNmW18weDI5NDI2YSgweDIyYSldKCksIV8weDUzODU4MSYmXzB4M2QyMzUxW18weDI5NDI2YSgweDI0OSldKF8weDNjY2QwOSxfMHg0Mjg3NjcsXzB4M2QxZWIyLHt9KTt9KTtlbHNle3ZhciBfMHhkODBlNj1fMHgzZDFlYjJbJ2F1dG9FeHBhbmQnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFlYyldPF8weDNkMWViMlsnYXV0b0V4cGFuZE1heERlcHRoJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZjMpXVsnaW5kZXhPZiddKF8weDUzZGIzZik8MHgwJiZfMHgzY2NkMDkhPT0nZnVuY3Rpb24nJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MTdjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTGltaXQnXTtfMHhkODBlNnx8XzB4M2QxZWIyWydsZXZlbCddPF8weDU4OTc0Mnx8XzB4NTM4NTgxPyh0aGlzW18weDJmNjdjMCgweDFjZildKF8weDQyODc2NyxfMHg1M2RiM2YsXzB4M2QxZWIyLF8weDUzODU4MXx8e30pLHRoaXNbXzB4MmY2N2MwKDB4MWViKV0oXzB4NTNkYjNmLF8weDQyODc2NykpOnRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMixfMHg1M2RiM2YsZnVuY3Rpb24oKXt2YXIgXzB4NTQyZGUxPV8weDJmNjdjMDtfMHgzY2NkMDk9PT1fMHg1NDJkZTEoMHgxZmQpfHxfMHgzY2NkMDk9PT1fMHg1NDJkZTEoMHgyMjQpfHwoZGVsZXRlIF8weDQyODc2N1tfMHg1NDJkZTEoMHgxYWUpXSxfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MjBiKV09ITB4MCk7fSk7fXJldHVybiBfMHg0Mjg3Njc7fWZpbmFsbHl7XzB4M2QxZWIyWydleHByZXNzaW9uc1RvRXZhbHVhdGUnXT1fMHgxMGEzNWYsXzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldPV8weDU4OTc0MixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09XzB4ODJhYmY0O319W18weDQ3NGUyOCgweDI0OSldKF8weDRkMTEyZSxfMHg0NTFhZTUsXzB4NTZkNjEwLF8weDNiZjQ4ZSl7dmFyIF8weDY3ODE2OD1fMHg0NzRlMjgsXzB4ZjlkNzc3PV8weDNiZjQ4ZVtfMHg2NzgxNjgoMHgyMTIpXXx8XzB4NTZkNjEwW18weDY3ODE2OCgweDIxMildO2lmKChfMHg0ZDExMmU9PT1fMHg2NzgxNjgoMHgxY2EpfHxfMHg0ZDExMmU9PT1fMHg2NzgxNjgoMHgxZGEpKSYmXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKXtsZXQgXzB4M2EwMGQ0PV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNDEpXTtfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjYzKV0rPV8weDNhMDBkNCxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjYzKV0+XzB4NTZkNjEwW18weDY3ODE2OCgweDFhOSldPyhfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09JycsZGVsZXRlIF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSk6XzB4M2EwMGQ0Pl8weGY5ZDc3NyYmKF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjU1KV0oMHgwLF8weGY5ZDc3NyksZGVsZXRlIF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSk7fX1bXzB4NDc0ZTI4KDB4MjBjKV0oXzB4MTljYmU1KXt2YXIgXzB4NDlhNDUxPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxOWNiZTUmJl8weDIyY2NiM1snTWFwJ10mJnRoaXNbXzB4NDlhNDUxKDB4MjJjKV0oXzB4MTljYmU1KT09PV8weDQ5YTQ1MSgweDE4NikmJl8weDE5Y2JlNVsnZm9yRWFjaCddKTt9W18weDQ3NGUyOCgweDFjYyldKF8weDU3MWY2YSl7dmFyIF8weDM4NDk0ZT1fMHg0NzRlMjg7aWYoXzB4NTcxZjZhW18weDM4NDk0ZSgweDE5NildKC9eXFxcXFxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFxcXFxceDIyJyt0aGlzW18weDM4NDk0ZSgweDIyYyldKF8weDU3MWY2YSkrJ1xcXFxcXFxceDIyJzt9cmV0dXJuIF8weDJhYzFlMFtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxcXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcXFxcXCIkLyk/XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNTUpXSgweDEsXzB4MmFjMWUwW18weDM4NDk0ZSgweDI0MSldLTB4Mik6XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgxN2IpXSgvJy9nLCdcXFxcXFxcXHg1Y1xcXFxcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcIi9nLCdcXFxcXFxcXHgyMicpW18weDM4NDk0ZSgweDE3YildKC8oXlxcXFxcXFwifFxcXFxcXFwiJCkvZywnXFxcXFxcXFx4MjcnKSxfMHgyYWMxZTA7fVtfMHg0NzRlMjgoMHgyNTgpXShfMHg0Y2RmMjQsXzB4NDVkYTEyLF8weDE4ZTE2NyxfMHhlYzNmNil7dmFyIF8weDFkMTlmNT1fMHg0NzRlMjg7dGhpc1tfMHgxZDE5ZjUoMHgyMjMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKSxfMHhlYzNmNiYmXzB4ZWMzZjYoKSx0aGlzW18weDFkMTlmNSgweDFlYildKF8weDE4ZTE2NyxfMHg0Y2RmMjQpLHRoaXNbXzB4MWQxOWY1KDB4MWQzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMik7fVtfMHg0NzRlMjgoMHgyMjMpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKXt2YXIgXzB4MmVlZmMwPV8weDQ3NGUyODt0aGlzW18weDJlZWZjMCgweDE3OCldKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUGVybWlzc2lvbnMnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKTt9W18weDQ3NGUyOCgweDE3OCldKF8weDNkMGQ0NSxfMHgzODZiYTUpe31bJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4MmY4MzMwLF8weDQ1NjY2MCl7fVtfMHg0NzRlMjgoMHgxZTMpXShfMHg1NTk2YzIsXzB4M2Y3YTkyKXt9W18weDQ3NGUyOCgweDE4MildKF8weDc1Y2VhKXt2YXIgXzB4NTg2YmFjPV8weDQ3NGUyODtyZXR1cm4gXzB4NzVjZWE9PT10aGlzW18weDU4NmJhYygweDIxNSldO31bXzB4NDc0ZTI4KDB4MWQzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSl7dmFyIF8weDRkY2JmYz1fMHg0NzRlMjg7dGhpc1tfMHg0ZGNiZmMoMHgxZTMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDE4OCldKF8weDQzNGVjOSksXzB4MzQ0MDhlW18weDRkY2JmYygweDI0MildJiZ0aGlzW18weDRkY2JmYygweDFmOSldKF8weDQzNGVjOSksdGhpc1tfMHg0ZGNiZmMoMHgxYjgpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDI2NCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbJ19jbGVhbk5vZGUnXShfMHg0MzRlYzkpO31bXzB4NDc0ZTI4KDB4MWViKV0oXzB4NTk5ZDI0LF8weDQxMzM1Nyl7dmFyIF8weDJkMGZjNz1fMHg0NzRlMjg7bGV0IF8weGMyZDg0Nzt0cnl7XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldJiYoXzB4YzJkODQ3PV8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXSxfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV09ZnVuY3Rpb24oKXt9KSxfMHg1OTlkMjQmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV09PV8weDJkMGZjNygweDFhZCkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjQxKV09XzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldKTt9Y2F0Y2h7fWZpbmFsbHl7XzB4YzJkODQ3JiYoXzB4MjJjY2IzWydjb25zb2xlJ11bJ2Vycm9yJ109XzB4YzJkODQ3KTt9aWYoXzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxYWQpfHxfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFkNikpe2lmKGlzTmFOKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkpXzB4NDEzMzU3W18weDJkMGZjNygweDI0ZildPSEweDAsZGVsZXRlIF8weDQxMzM1N1sndmFsdWUnXTtlbHNlIHN3aXRjaChfMHg0MTMzNTdbJ3ZhbHVlJ10pe2Nhc2UgTnVtYmVyWydQT1NJVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMmQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSBOdW1iZXJbJ05FR0FUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIxZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIDB4MDp0aGlzW18weDJkMGZjNygweDIzMCldKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWZmKV09ITB4MCk7YnJlYWs7fX1lbHNlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZDUpXT09PV8weDJkMGZjNygweDIxMCkmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV09PV8weDJkMGZjNygweDFjYSkmJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0hPT1fMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MTlkKV09XzB4NTk5ZDI0WyduYW1lJ10pO31bXzB4NDc0ZTI4KDB4MjMwKV0oXzB4ZDU1MzlmKXt2YXIgXzB4MmVhZTYzPV8weDQ3NGUyODtyZXR1cm4gMHgxL18weGQ1NTM5Zj09PU51bWJlcltfMHgyZWFlNjMoMHgyNWMpXTt9Wydfc29ydFByb3BzJ10oXzB4MzgwMjM1KXt2YXIgXzB4MTQ2MTM1PV8weDQ3NGUyODshXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldfHwhXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDI0MSldfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgxYmIpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgyNWEpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT0nU2V0J3x8XzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDFmYildKGZ1bmN0aW9uKF8weDQxNDkyOCxfMHgxOTQ1ZmMpe3ZhciBfMHgyNjY4OTI9XzB4MTQ2MTM1LF8weDFiNjZiNz1fMHg0MTQ5MjhbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKSxfMHg1MzI4YmI9XzB4MTk0NWZjW18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCk7cmV0dXJuIF8weDFiNjZiNzxfMHg1MzI4YmI/LTB4MTpfMHgxYjY2Yjc+XzB4NTMyOGJiPzB4MToweDA7fSk7fVtfMHg0NzRlMjgoMHgxYjgpXShfMHgzNjliZmYsXzB4MWUxYzY4KXt2YXIgXzB4MjU3OGU5PV8weDQ3NGUyODtpZighKF8weDFlMWM2OFtfMHgyNTc4ZTkoMHgxYjEpXXx8IV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXXx8IV8weDM2OWJmZlsncHJvcHMnXVsnbGVuZ3RoJ10pKXtmb3IodmFyIF8weDQxMjRiMD1bXSxfMHg1ZDhjMTI9W10sXzB4MWIwMmY3PTB4MCxfMHgyOTExNGY9XzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDI0MSldO18weDFiMDJmNzxfMHgyOTExNGY7XzB4MWIwMmY3Kyspe3ZhciBfMHg0ZGFkMDc9XzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldW18weDFiMDJmN107XzB4NGRhZDA3W18weDI1NzhlOSgweDFkNSldPT09XzB4MjU3OGU5KDB4MjEwKT9fMHg0MTI0YjBbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTpfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTt9aWYoISghXzB4NWQ4YzEyW18weDI1NzhlOSgweDI0MSldfHxfMHg0MTI0YjBbXzB4MjU3OGU5KDB4MjQxKV08PTB4MSkpe18weDM2OWJmZlsncHJvcHMnXT1fMHg1ZDhjMTI7dmFyIF8weDNmNTEzZT17J2Z1bmN0aW9uc05vZGUnOiEweDAsJ3Byb3BzJzpfMHg0MTI0YjB9O3RoaXNbXzB4MjU3OGU5KDB4MTc4KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxZTMpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDE4OCldKF8weDNmNTEzZSksdGhpc1tfMHgyNTc4ZTkoMHgxZDcpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSxfMHgzZjUxM2VbJ2lkJ10rPSdcXFxcXFxcXHgyMGYnLF8weDM2OWJmZlsncHJvcHMnXVtfMHgyNTc4ZTkoMHgxYTIpXShfMHgzZjUxM2UpO319fVsnX2FkZExvYWROb2RlJ10oXzB4MjUxZmVhLF8weDFjN2JlZCl7fVtfMHg0NzRlMjgoMHgxODgpXShfMHg0MjBjNWUpe31bJ19pc0FycmF5J10oXzB4MTcxZDM4KXt2YXIgXzB4NDE2MjM0PV8weDQ3NGUyODtyZXR1cm4gQXJyYXlbJ2lzQXJyYXknXShfMHgxNzFkMzgpfHx0eXBlb2YgXzB4MTcxZDM4PT1fMHg0MTYyMzQoMHgyNGMpJiZ0aGlzWydfb2JqZWN0VG9TdHJpbmcnXShfMHgxNzFkMzgpPT09XzB4NDE2MjM0KDB4MThhKTt9W18weDQ3NGUyOCgweDFkNyldKF8weDMxYmRjNCxfMHg1MTc5YjEpe31bXzB4NDc0ZTI4KDB4MjM4KV0oXzB4NGUwZWNjKXt2YXIgXzB4NDEyMDc5PV8weDQ3NGUyODtkZWxldGUgXzB4NGUwZWNjW18weDQxMjA3OSgweDIwMildLGRlbGV0ZSBfMHg0ZTBlY2NbJ19oYXNTZXRPbkl0c1BhdGgnXSxkZWxldGUgXzB4NGUwZWNjW18weDQxMjA3OSgweDIxMyldO31bJ19zZXROb2RlRXhwcmVzc2lvblBhdGgnXShfMHgxMWJlYTYsXzB4NDdlMDMyKXt9fWxldCBfMHgzYTQ1NjQ9bmV3IF8weDQzMjhiYygpLF8weDQ2MGIzNj17J3Byb3BzJzoweDY0LCdlbGVtZW50cyc6MHg2NCwnc3RyTGVuZ3RoJzoweDQwMCoweDMyLCd0b3RhbFN0ckxlbmd0aCc6MHg0MDAqMHgzMiwnYXV0b0V4cGFuZExpbWl0JzoweDEzODgsJ2F1dG9FeHBhbmRNYXhEZXB0aCc6MHhhfSxfMHgxNTg2NmE9eydwcm9wcyc6MHg1LCdlbGVtZW50cyc6MHg1LCdzdHJMZW5ndGgnOjB4MTAwLCd0b3RhbFN0ckxlbmd0aCc6MHgxMDAqMHgzLCdhdXRvRXhwYW5kTGltaXQnOjB4MWUsJ2F1dG9FeHBhbmRNYXhEZXB0aCc6MHgyfTtmdW5jdGlvbiBfMHgyODE2MjQoXzB4MjM5MDBiLF8weDU5OGE0YSxfMHgxYjU0YWMsXzB4MjU0YmQ0LF8weDUxNDhhNCxfMHg0ZmI5NDApe3ZhciBfMHgzNTY3Y2M9XzB4NDc0ZTI4O2xldCBfMHgyZGJlMDEsXzB4NTRlOWZlO3RyeXtfMHg1NGU5ZmU9XzB4NTkxNThiKCksXzB4MmRiZTAxPV8weDRlMTcxYltfMHg1OThhNGFdLCFfMHgyZGJlMDF8fF8weDU0ZTlmZS1fMHgyZGJlMDFbJ3RzJ10+MHgxZjQmJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSYmXzB4MmRiZTAxW18weDM1NjdjYygweDIzNildL18weDJkYmUwMVsnY291bnQnXTwweDY0PyhfMHg0ZTE3MWJbXzB4NTk4YTRhXT1fMHgyZGJlMDE9eydjb3VudCc6MHgwLCd0aW1lJzoweDAsJ3RzJzpfMHg1NGU5ZmV9LF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXT17fSk6XzB4NTRlOWZlLV8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndHMnXT4weDMyJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ2NvdW50J10mJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHg0ZTE3MWJbJ2hpdHMnXVtfMHgzNTY3Y2MoMHgxZmEpXTwweDY0JiYoXzB4NGUxNzFiWydoaXRzJ109e30pO2xldCBfMHgxNzRkMWE9W10sXzB4NWEyZGI2PV8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXXx8XzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDI0NildP18weDE1ODY2YTpfMHg0NjBiMzYsXzB4MzY5ZmIwPV8weDQ2NWRjNz0+e3ZhciBfMHgxZTc5ODc9XzB4MzU2N2NjO2xldCBfMHgzNWIzMWU9e307cmV0dXJuIF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyNDcpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjQ3KV0sXzB4MzViMzFlWydlbGVtZW50cyddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNjIpXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjEyKV09XzB4NDY1ZGM3W18weDFlNzk4NygweDIxMildLF8weDM1YjMxZVsndG90YWxTdHJMZW5ndGgnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE5KV0sXzB4MzViMzFlWydhdXRvRXhwYW5kTGltaXQnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjUwKV0sXzB4MzViMzFlW18weDFlNzk4NygweDFhOCldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTgpXSxfMHgzNWIzMWVbJ3NvcnRQcm9wcyddPSEweDEsXzB4MzViMzFlW18weDFlNzk4NygweDFiMSldPSFfMHgyYzczZGUsXzB4MzViMzFlW18weDFlNzk4NygweDIyMSldPTB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWVjKV09MHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZDQpXT1fMHgxZTc5ODcoMHgxNzQpLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMGUpXT0ncm9vdF9leHAnLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYmEpXT0hMHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZjMpXT1bXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J109MHgwLF8weDM1YjMxZVsncmVzb2x2ZUdldHRlcnMnXT0hMHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyNjMpXT0weDAsXzB4MzViMzFlWydub2RlJ109eydjdXJyZW50Jzp2b2lkIDB4MCwncGFyZW50Jzp2b2lkIDB4MCwnaW5kZXgnOjB4MH0sXzB4MzViMzFlO307Zm9yKHZhciBfMHg1NDRlMWU9MHgwO18weDU0NGUxZTxfMHg1MTQ4YTRbJ2xlbmd0aCddO18weDU0NGUxZSsrKV8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeyd0aW1lTm9kZSc6XzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MjM2KXx8dm9pZCAweDB9LF8weDUxNDhhNFtfMHg1NDRlMWVdLF8weDM2OWZiMChfMHg1YTJkYjYpLHt9KSk7aWYoXzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MWFiKXx8XzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MjFiKSl7bGV0IF8weDE2YmM1MD1FcnJvcltfMHgzNTY3Y2MoMHgxODkpXTt0cnl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09MHgxLzB4MCxfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsnc3RhY2tOb2RlJzohMHgwfSxuZXcgRXJyb3IoKVtfMHgzNTY3Y2MoMHgyMDEpXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7J3N0ckxlbmd0aCc6MHgxLzB4MH0pKTt9ZmluYWxseXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT1fMHgxNmJjNTA7fX1yZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOl8weDE3NGQxYSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31jYXRjaChfMHg2NTdmYjApe3JldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6W3sndHlwZSc6XzB4MzU2N2NjKDB4MWMyKSwnZXJyb3InOl8weDY1N2ZiMCYmXzB4NjU3ZmIwW18weDM1NjdjYygweDIzNCldfV0sJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9ZmluYWxseXt0cnl7aWYoXzB4MmRiZTAxJiZfMHg1NGU5ZmUpe2xldCBfMHg1NjllMmE9XzB4NTkxNThiKCk7XzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldKyssXzB4MmRiZTAxW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4MmRiZTAxWyd0cyddPV8weDU2OWUyYSxfMHg0ZTE3MWJbJ2hpdHMnXVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndHMnXT1fMHg1NjllMmEsKF8weDJkYmUwMVsnY291bnQnXT4weDMyfHxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0+MHg2NCkmJihfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV09ITB4MCksKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgxZmEpXT4weDNlOHx8XzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0aW1lJ10+MHgxMmMpJiYoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydyZWR1Y2VMaW1pdHMnXT0hMHgwKTt9fWNhdGNoe319fXJldHVybiBfMHgyODE2MjQ7fSgoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgyNmE2OTksXzB4NTZhZDUyLF8weGNmMTMyNSxfMHg0NWRjY2MsXzB4MTVjYzZiLF8weDRiNTA3Zik9Pnt2YXIgXzB4MTI4YzM2PV8weGIzODQ3OTtpZihfMHgyMjNkMzdbJ19jb25zb2xlX25pbmphJ10pcmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtpZighSChfMHgyMjNkMzcsXzB4Y2YxMzI1LF8weDVmMmM2ZCkpcmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOigpPT57fSwnY29uc29sZVRyYWNlJzooKT0+e30sJ2NvbnNvbGVUaW1lJzooKT0+e30sJ2NvbnNvbGVUaW1lRW5kJzooKT0+e30sJ2F1dG9Mb2cnOigpPT57fSwnYXV0b0xvZ01hbnknOigpPT57fSwnYXV0b1RyYWNlTWFueSc6KCk9Pnt9LCdjb3ZlcmFnZSc6KCk9Pnt9LCdhdXRvVHJhY2UnOigpPT57fSwnYXV0b1RpbWUnOigpPT57fSwnYXV0b1RpbWVFbmQnOigpPT57fX0sXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2xldCBfMHg0Yzg4OTQ9QihfMHgyMjNkMzcpLF8weDRmY2U3MD1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWU4KV0sXzB4ZjA0ZTNmPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxN2QpXSxfMHgzNGRiZDI9XzB4NGM4ODk0W18weDEyOGMzNigweDFlZildLF8weDU1MzFlMD17J2hpdHMnOnt9LCd0cyc6e319LF8weDU4ZjFjZD1YKF8weDIyM2QzNyxfMHg0NWRjY2MsXzB4NTUzMWUwLF8weDI2YTY5OSksXzB4MmI4YjBmPV8weDNmYWM3OD0+e18weDU1MzFlMFsndHMnXVtfMHgzZmFjNzhdPV8weGYwNGUzZigpO30sXzB4OTVhMDJmPShfMHgxNDM1YjksXzB4MzRmZjkyKT0+e2xldCBfMHgxMjRkMmU9XzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml07aWYoZGVsZXRlIF8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdLF8weDEyNGQyZSl7bGV0IF8weDU5YjA0NT1fMHg0ZmNlNzAoXzB4MTI0ZDJlLF8weGYwNGUzZigpKTtfMHg1MDYzOWYoXzB4NThmMWNkKCd0aW1lJyxfMHgxNDM1YjksXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHg1OWIwNDVdLF8weDM0ZmY5MikpO319LF8weDNjMmYyMz1fMHgxM2JmN2I9Pnt2YXIgXzB4NDU3ZjZiPV8weDEyOGMzNixfMHgzNGViN2I7cmV0dXJuIF8weDVmMmM2ZD09PV8weDQ1N2Y2YigweDFkZSkmJl8weDIyM2QzN1tfMHg0NTdmNmIoMHgxZGQpXSYmKChfMHgzNGViN2I9XzB4MTNiZjdiPT1udWxsP3ZvaWQgMHgwOl8weDEzYmY3YltfMHg0NTdmNmIoMHgxOTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MzRlYjdiW18weDQ1N2Y2YigweDI0MSldKSYmKF8weDEzYmY3YltfMHg0NTdmNmIoMHgxOTMpXVsweDBdW18weDQ1N2Y2YigweDFkZCldPV8weDIyM2QzN1tfMHg0NTdmNmIoMHgxZGQpXSksXzB4MTNiZjdiO307XzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KF8weDVjYWZkOCxfMHg0ODdjZjYpPT57dmFyIF8weDU1MTg5Yz1fMHgxMjhjMzY7XzB4MjIzZDM3Wydjb25zb2xlJ11bXzB4NTUxODljKDB4MjUxKV1bXzB4NTUxODljKDB4MjE2KV0hPT1fMHg1NTE4OWMoMHgxOTQpJiZfMHg1MDYzOWYoXzB4NThmMWNkKF8weDU1MTg5YygweDI1MSksXzB4NWNhZmQ4LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0ODdjZjYpKTt9LCdjb25zb2xlVHJhY2UnOihfMHg1ZTY0NzMsXzB4M2QzNWM4KT0+e3ZhciBfMHg1NjE5MDY9XzB4MTI4YzM2LF8weDEzOTFlYixfMHgyYmIwNjU7XzB4MjIzZDM3W18weDU2MTkwNigweDI1ZSldWydsb2cnXVsnbmFtZSddIT09J2Rpc2FibGVkVHJhY2UnJiYoKF8weDJiYjA2NT0oXzB4MTM5MWViPV8weDIyM2QzN1tfMHg1NjE5MDYoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTM5MWViW18weDU2MTkwNigweDI0ZCldKSE9bnVsbCYmXzB4MmJiMDY1W18weDU2MTkwNigweDFjMSldJiYoXzB4MjIzZDM3W18weDU2MTkwNigweDE5MildPSEweDApLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKCd0cmFjZScsXzB4NWU2NDczLF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHgzZDM1YzgpKSkpO30sJ2NvbnNvbGVFcnJvcic6KF8weDQ4ZjIzNCxfMHg1MGFjYjUpPT57dmFyIF8weDNhYzkzMD1fMHgxMjhjMzY7XzB4MjIzZDM3W18weDNhYzkzMCgweDE5MildPSEweDAsXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2FjOTMwKDB4MjFiKSxfMHg0OGYyMzQsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDUwYWNiNSkpKTt9LCdjb25zb2xlVGltZSc6XzB4M2I0NTI4PT57XzB4MmI4YjBmKF8weDNiNDUyOCk7fSwnY29uc29sZVRpbWVFbmQnOihfMHgxZDJhMWEsXzB4OGZlY2Q3KT0+e18weDk1YTAyZihfMHg4ZmVjZDcsXzB4MWQyYTFhKTt9LCdhdXRvTG9nJzooXzB4MjAyNjgzLF8weDJjZmU1Yik9PntfMHg1MDYzOWYoXzB4NThmMWNkKCdsb2cnLF8weDJjZmU1YixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDIwMjY4M10pKTt9LCdhdXRvTG9nTWFueSc6KF8weDRiNmM0NyxfMHg0NTBiNjYpPT57dmFyIF8weDQ3MzgwMj1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDU4ZjFjZChfMHg0NzM4MDIoMHgyNTEpLF8weDRiNmM0NyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDUwYjY2KSk7fSwnYXV0b1RyYWNlJzooXzB4MzJhNzYsXzB4MTRiYzEyKT0+e3ZhciBfMHg1N2NmOGE9XzB4MTI4YzM2O18weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDU3Y2Y4YSgweDFhYiksXzB4MTRiYzEyLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MzJhNzZdKSkpO30sJ2F1dG9UcmFjZU1hbnknOihfMHhlMzYwZjcsXzB4MzNjMGUyKT0+e3ZhciBfMHgzZGIwMGU9XzB4MTI4YzM2O18weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNkYjAwZSgweDFhYiksXzB4ZTM2MGY3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHgzM2MwZTIpKSk7fSwnYXV0b1RpbWUnOihfMHhkMjM3NDksXzB4MWVmMmQ4LF8weDQxMTZkYik9PntfMHgyYjhiMGYoXzB4NDExNmRiKTt9LCdhdXRvVGltZUVuZCc6KF8weDE0ZDU5MixfMHg1OWVmZTcsXzB4MTFmN2FjKT0+e18weDk1YTAyZihfMHg1OWVmZTcsXzB4MTFmN2FjKTt9LCdjb3ZlcmFnZSc6XzB4MjA3NDJhPT57dmFyIF8weDY0NDg5Nz1fMHgxMjhjMzY7XzB4NTA2MzlmKHsnbWV0aG9kJzpfMHg2NDQ4OTcoMHgxYjIpLCd2ZXJzaW9uJzpfMHgyNmE2OTksJ2FyZ3MnOlt7J2lkJzpfMHgyMDc0MmF9XX0pO319O2xldCBfMHg1MDYzOWY9cShfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDE1Y2M2YixfMHg0YjUwN2YpLF8weDUyOTAzND1fMHgyMjNkMzdbXzB4MTI4YzM2KDB4MjYxKV07cmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTt9KShnbG9iYWxUaGlzLF8weGIzODQ3OSgweDE4ZSksXzB4YjM4NDc5KDB4MWRmKSxfMHhiMzg0NzkoMHgyNWIpLF8weGIzODQ3OSgweDFlZSksXzB4YjM4NDc5KDB4MjNkKSxfMHhiMzg0NzkoMHgyNGEpLF8weGIzODQ3OSgweDE5NyksXzB4YjM4NDc5KDB4MWNlKSwnJywnMScpO1xcXCIpO31jYXRjaChlKXt9fTsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX29vKGk6c3RyaW5nLC4uLnY6YW55W10pe3RyeXtvb19jbSgpLmNvbnNvbGVMb2coaSwgdik7fWNhdGNoKGUpe30gcmV0dXJuIHZ9O29vX29vOy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fdHIoaTpzdHJpbmcsLi4udjphbnlbXSl7dHJ5e29vX2NtKCkuY29uc29sZVRyYWNlKGksIHYpO31jYXRjaChlKXt9IHJldHVybiB2fTtvb190cjsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3R4KGk6c3RyaW5nLC4uLnY6YW55W10pe3RyeXtvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdn07b29fdHg7LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb190cyh2PzpzdHJpbmcpOnN0cmluZ3t0cnl7b29fY20oKS5jb25zb2xlVGltZSh2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdiBhcyBzdHJpbmc7fTtvb190czsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3RlKHY6c3RyaW5nfHVuZGVmaW5lZCwgaTpzdHJpbmcpOnN0cmluZ3t0cnl7b29fY20oKS5jb25zb2xlVGltZUVuZCh2LCBpKTt9Y2F0Y2goZSl7fSByZXR1cm4gdiBhcyBzdHJpbmc7fTtvb190ZTsvKmVzbGludCB1bmljb3JuL25vLWFidXNpdmUtZXNsaW50LWRpc2FibGU6LGVzbGludC1jb21tZW50cy9kaXNhYmxlLWVuYWJsZS1wYWlyOixlc2xpbnQtY29tbWVudHMvbm8tdW5saW1pdGVkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby1hZ2dyZWdhdGluZy1lbmFibGU6LGVzbGludC1jb21tZW50cy9uby1kdXBsaWNhdGUtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWVuYWJsZTosKi88L3NjcmlwdD5cXG5cXG48c3R5bGUgc2NvcGVkPlxcbi5mYWRlLWVudGVyLWFjdGl2ZSxcXG4uZmFkZS1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLmZhZGUtZW50ZXItZnJvbSxcXG4uZmFkZS1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbiAgc2NhbGU6IDA7XFxufVxcblxcbi52LWVudGVyLWFjdGl2ZSxcXG4udi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLnYtZW50ZXItZnJvbSxcXG4udi1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi52LWVudGVyLWFjdGl2ZVtkYXRhLXYtNjFhNDUxYTBdLFxcbi52LWxlYXZlLWFjdGl2ZVtkYXRhLXYtNjFhNDUxYTBdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XFxufVxcbi52LWVudGVyLWZyb21bZGF0YS12LTYxYTQ1MWEwXSxcXG4udi1sZWF2ZS10b1tkYXRhLXYtNjFhNDUxYTBdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9EZWZhdWx0VmFsdWVzU3RlcC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQThlQTs7RUFFRSx5QkFBeUI7QUFDM0I7QUFFQTs7RUFFRSxVQUFVO0VBQ1YsMkJBQTJCO0FBQzdCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgdi1pZj1cXFwiIXByb3BzLnN0YXR1c1xcXCI+XFxuICAgIDxkaXYgdi1pZj1cXFwiIWlzU2F2aW5nU3RhcnRlZFxcXCI+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoMyBjbGFzcz1cXFwicGItWzJweF0gdGV4dC1bMjBweF0gZm9udC1ib2xkIGxlYWRpbmctOSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICBTZXQgRGVmYXVsdCBWYWx1ZXNcXG4gICAgICAgIDwvaDM+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtXFxcIj5cXG4gICAgICAgICAgVGhlc2UgY29tbW9ubHkgb2NjdXJyaW5nIHZhbHVlcyBjYW4gYmUgcG9wdWxhdGVkIGhlcmUgYW5kIElBVElcXG4gICAgICAgICAgUHVibGlzaGVyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSB0aGVtIHRvIGFsbCBvZiB5b3VyIGFjdGl2aXRpZXMuXFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcIm10LTMgbWF4LWgtWzM3M3B4XSBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LXNjcm9sbCByb3VuZGVkLWxnIGJnLW4tMTAgcHQtWzIwcHhdIHBsLVsyN3B4XSBwYi1bMjBweF0gcHItWzE4cHhdXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8IS0tIEFsbCBWYWx1ZXMgRGVmYXVsdCBTdGFydCAtLT5cXG4gICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPkRlZmF1bHQgZm9yIGFsbCBkYXRhPC9wPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLVsyMnB4XSBwdC00XFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBDdXJyZW5jeSBTdGFydCAtLT5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInctZnVsbCBtYXgtdy1bMzM1cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcGItMlxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwiZGVmYXVsdC1jdXJyZW5jeVxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIERlZmF1bHQgQ3VycmVuY3lcXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcIkRlZmF1bHQgQ3VycmVuY3lcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSBjdXJyZW5jeSBpbiB3aGljaCB5b3UgcmVwb3J0IHlvdXIgZmluYW5jaWFsIHRyYW5zYWN0aW9ucy4gWW91IGNhbiBsYXRlciBtYW51YWxseSBjaGFuZ2UgdGhlIGN1cnJlbmN5IG9uIGluZGl2aWR1YWwgdHJhbnNhY3Rpb25zIGFuZCBidWRnZXRzIGlmIHJlcXVpcmVkLlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtY3VycmVuY3lcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgZnJvbSBkcm9wZG93blxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMuY3VycmVuY2llc1xcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X2N1cnJlbmN5XFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfY3VycmVuY3kgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIFRoZSBjdXJyZW5jeSBpbiB3aGljaCB5b3Ugbm9ybWFsbHkgcmVwb3J0IHlvdXIgZmluYW5jaWFsXFxuICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zLiBTZWxlY3QgZnJvbSBkcm9wZG93bi5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgQ3VycmVuY3kgRW5kIC0tPlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IExhbmd1YWdlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWxhbmd1YWdlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBMYW5ndWFnZVxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiRGVmYXVsdCBMYW5ndWFnZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiVGhlIGxhbmd1YWdlIGluIHdoaWNoIHlvdSBwcm92aWRlIGRhdGEgb24geW91ciBhY3Rpdml0aWVzLiBZb3UgY2FuIGxhdGVyIG1hbnVhbGx5IGNoYW5nZSB0aGUgbGFuZ3VhZ2Ugb24gaW5kaXZpZHVhbCB0ZXh0IGlmIHJlcXVpcmVkLlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtbGFuZ3VhZ2VcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgbGFuZ3VhZ2UgZnJvbSBkcm9wZG93blxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMubGFuZ3VhZ2VzXFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfbGFuZ3VhZ2VcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9sYW5ndWFnZSA9IHZhbHVlKVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwicHQtMiB0ZXh0LXhzIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICAgICAgVGhlIGxhbmd1YWdlIGluIHdoaWNoIHlvdSBub3JtYWxseSByZXBvcnQuIFNlbGVjdCBmcm9tXFxuICAgICAgICAgICAgICAgICAgZHJvcGRvd24uXFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IExhbmd1YWdlIEVuZCAtLT5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwhLS0gQWxsIFZhbHVlcyBEZWZhdWx0IEVuZCAtLT5cXG4gICAgICAgICAgPCEtLSBBY3Rpdml0eSBEYXRhIERlZmF1bHQgU3RhcnQgLS0+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInB0LTZcXFwiPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+RGVmYXVsdCBmb3IgYWN0aXZpdHkgZGF0YTwvcD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIGdhcC1bMjJweF0gcHQtNFxcXCI+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgSGllcmFyY2h5IFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZGVmYXVsdC1oaWVyYXJjaHlcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IEhpZXJhcmNoeVxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XFxcInctNjRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcIkRlZmF1bHQgSGllcmFyY2h5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJJZiB5b3UgYXJlIHJlcG9ydGluZyBib3RoIHByb2dyYW1tZXMgKHBhcmVudCBhY3Rpdml0aWVzKSBhbmQgcHJvamVjdHMgKGNoaWxkIGFjdGl2aXRpZXMpLFxcbiAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCB0aGF0IG1vc3Qgb2YgeW91ciBhY3Rpdml0aWVzIGFyZSBhdC4gZS5nLiBwYXJlbnQgYWN0aXZpdHkgPSAxOyBjaGlsZCBhY3Rpdml0eSA9IDIuXFxuICAgICAgICAgICAgICAgIDxicj5JZiBhbGwgeW91ciBhY3Rpdml0aWVzIGFyZSBhdCB0aGUgc2FtZSBsZXZlbCBpLmUuIHlvdSBoYXZlIG5vIGNoaWxkIGFjdGl2aXRpZXMsIHRoZW4gY2hvb3NlIDEuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwiZGVmYXVsdC1oaWVyYXJjaHlcXFwiXFxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiYWxsRGVmYXVsdFZhbHVlLmhpZXJhcmNoeVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibWItMiB3LWZ1bGwgcm91bmRlZC1bNHB4XSBib3JkZXIgYm9yZGVyLW4tMjAgcHktMiBwbC00IGZvY3VzOm91dGxpbmUtMCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMFxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJUeXBlIGRlZmF1bHQgaGllcmFyY2h5IGhlcmVcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgICAgICBJZiBoaWVyYXJjaHkgaXMgbm90IHJlcG9ydGVkIHRoZW4gMSBpcyBhc3N1bWVkLiBJZiBtdWx0aXBsZVxcbiAgICAgICAgICAgICAgICAgIGxldmVscyBhcmUgcmVwb3J0ZWQgdGhlbiwgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nLCBmaW5hbmNpYWxcXG4gICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbnMgc2hvdWxkIG9ubHkgYmUgcmVwb3J0ZWQgYXQgdGhlIGxvd2VzdFxcbiAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWNhbCBsZXZlbC5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgSGVpcmFyY2h5IEVuZCAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gSHVtYW5pdGFyaWFuIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJodW1hbml0YXJpYW5cXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICBIdW1hbml0YXJpYW5cXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVxcXCJ3LTcyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJIdW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIkFkZCBhICdIdW1hbml0YXJpYW4gRmxhZycgdG8gZXZlcnkgYWN0aXZpdHkgdGhhdCB5b3VyIG9yZ2FuaXNhdGlvbiBwdWJsaXNoZXMgZGF0YSBvbi4gVGhpcyBtZWFucyB0aGF0IHlvdXIgb3JnYW5pc2F0aW9uIGlkZW50aWZpZXMgYWxsIHRoZWlyIGFjdGl2aXRpZXMgYXMgd2hvbGx5IG9yIHBhcnRpYWxseSBhZGRyZXNzaW5nIGEgaHVtYW5pdGFyaWFuIGNyaXNpcyBvciBtdWx0aXBsZSBjcmlzZXMuIFlvdSBjYW4gbGF0ZXIgbWFudWFsbHkgYWRkIG9yIHJlbW92ZSBhIEh1bWFuaXRhcmlhbiBGbGFnIG9uIGluZGl2aWR1YWwgYWN0aXZpdGllcyBpZiByZXF1aXJlZC5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJodW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgSHVtYW5pdGFyaWFuIGhlcmVcXFwiXFxuICAgICAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInByb3BzLmh1bWFuaXRhcmlhblxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5odW1hbml0YXJpYW5cXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuaHVtYW5pdGFyaWFuID0gdmFsdWUpXFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gSHVtYW5pdGFyaWFuIEVuZCAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBGbG93IFR5cGUgU3RhcnQgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImRlZmF1bHQtZmxvdy10eXBlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiXFxuICAgICAgICAgICAgICAgICAgICA+RGVmYXVsdCBGbG93IFR5cGU8L2xhYmVsXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIDxidXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8SG92ZXJUZXh0XFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVxcXCJ3LTcyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJkZWZhdWx0LWZsb3ctdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiV2hldGhlciB0aGUgYWN0aXZpdHkgaXMgZnVuZGVkIGJ5IE9mZmljaWFsIERldmVsb3BtZW50IEFzc2lzdGFuY2UgKE9EQSksIE90aGVyIE9mZmljaWFsIEZsb3dzIChPT0YpLCBldGMuIDxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC1mbG93LXR5cGUvJz5Gb3IgbW9yZSBpbmZvcm1hdGlvbjwvYT5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJkZWZhdWx0LWZsb3ctdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidnVlX19zZWxlY3RcXFwiXFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBEZWZhdWx0IEZsb3cgVHlwZSBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0Rmxvd1R5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9mbG93X3R5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cXFwiXFxuICAgICAgICAgICAgICAgICh2YWx1ZTpzdHJpbmcpID0+IChhbGxEZWZhdWx0VmFsdWUuZGVmYXVsdF9mbG93X3R5cGUgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgZmxvdyB0eXBlIHdpbGwgYmUgYXV0b21hdGljYWxseVxcbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRlZCBpbiBhY3Rpdml0eSB3aGVuIGNyZWF0ZWQuXFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IEZsb3cgVHlwZSBFbmQgLS0+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgRmluYW5jZSBUeXBlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWZpbmFuY2UtdHlwZVxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPkRlZmF1bHQgRmluYW5jZSBUeXBlPC9sYWJlbFxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cXFwidy03MlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiZGVmYXVsdC1maW5hbmNlLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSB0eXBlIG9mIGZpbmFuY2UgKGUuZy4gZ3JhbnQsIGxvYW4sIGRlYnQgcmVsaWVmLCBldGMpLiBUaGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgdHJhbnNhY3Rpb25zIGluIHRoZSBhY3Rpdml0eSByZXBvcnQ7IGl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluZGl2aWR1YWwgdHJhbnNhY3Rpb25zLiA8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL2FjdGl2aXR5LXN0YW5kYXJkL2lhdGktYWN0aXZpdGllcy9pYXRpLWFjdGl2aXR5L2RlZmF1bHQtZmluYW5jZS10eXBlLyc+Rm9yIG1vcmUgaW5mb3JtYXRpb248L2E+XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwiZGVmYXVsdC1maW5hbmNlLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBGaW5hbmNlIFR5cGUgaGVyZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicHJvcHMuZGVmYXVsdEZpbmFuY2VUeXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfZmluYW5jZV90eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfZmluYW5jZV90eXBlID0gdmFsdWUpXFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJwdC0yIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgICAgICBJZiBzZWxlY3RlZCwgdGhlbiBkZWZhdWx0IGZpbmFuY2UgdHlwZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcXG4gICAgICAgICAgICAgICAgICBwb3B1bGF0ZWQgaW4gYWN0aXZpdHkgd2hlbiBjcmVhdGVkLlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBGaW5hbmNlIFR5cGUgRW5kIC0tPlxcbiAgICAgICAgICAgICAgPCEtLSBEZWZhdWx0IEFpZCBUeXBlIFN0YXJ0IC0tPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy1mdWxsIG1heC13LVszMzVweF1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwYi0yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJkZWZhdWx0LWFpZC10eXBlXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiXFxuICAgICAgICAgICAgICAgICAgICA+RGVmYXVsdCBBaWQgVHlwZTwvbGFiZWxcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XFxcInctNzJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVxcXCJ0b3AtbGVmdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiZGVmYXVsdC1haWQtdHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiVGhlIHR5cGUgb2YgYWlkIGJlaW5nIHN1cHBsaWVkIChwcm9qZWN0LXR5cGUgaW50ZXJ2ZW50aW9uLCBidWRnZXQgc3VwcG9ydCwgZGVidCByZWxpZWYsIGV0Yy4pLiBUaGlzIGVsZW1lbnQgc3BlY2lmaWVzIGEgZGVmYXVsdCBmb3IgYWxsIHRoZSBhY3Rpdml0eeKAmXMgZmluYW5jaWFsIHRyYW5zYWN0aW9uczsgaXQgY2FuIGJlIG92ZXJyaWRkZW4gYXQgdGhlIGluZGl2aWR1YWwgdHJhbnNhY3Rpb24gbGV2ZWwuIDxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC1haWQtdHlwZS8nPkZvciBtb3JlIGluZm9ybWF0aW9uPC9hPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtYWlkLXR5cGVcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBBaWQgVHlwZSBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0QWlkVHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X2FpZF90eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfYWlkX3R5cGUgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgYWlkIHR5cGUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGVkIGluIGFjdGl2aXR5IHdoZW4gY3JlYXRlZC4gQWxzbywgVm9jYWJ1bGFyeSB0eXBlXFxuICAgICAgICAgICAgICAgICAgXFxcIk9FQ0QgREFDXFxcIiB3aWxsIGJlIGNob3NlbiBieSBkZWZhdWx0LlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBBaWQgVHlwZSBFbmQgLS0+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgVGllZCBTdGF0dXMgU3RhcnQgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImRlZmF1bHQtdGllZC1zdGF0dXNcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCJcXG4gICAgICAgICAgICAgICAgICAgID5EZWZhdWx0IFRpZWQgU3RhdHVzPC9sYWJlbFxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cXFwidy03MlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XFxcInRvcC1sZWZ0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJkZWZhdWx0LXRpZWQtc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJXaGV0aGVyIHRoZSBhaWQgaXMgdW50aWVkLCB0aWVkLCBvciBwYXJ0aWFsbHkgdGllZC4gVGhpcyBlbGVtZW50IHNwZWNpZmllcyBhIGRlZmF1bHQgZm9yIGFsbCB0aGUgYWN0aXZpdHnigJlzIGZpbmFuY2lhbCB0cmFuc2FjdGlvbnM7IGl0IGNhbiBiZSBvdmVycmlkZGVuIGF0IHRoZSBpbmRpdmlkdWFsIHRyYW5zYWN0aW9uIGxldmVsLjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvYWN0aXZpdHktc3RhbmRhcmQvaWF0aS1hY3Rpdml0aWVzL2lhdGktYWN0aXZpdHkvZGVmYXVsdC10aWVkLXN0YXR1cy8nPkZvciBtb3JlIGluZm9ybWF0aW9uPC9hPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgICAgaWQ9XFxcImRlZmF1bHQtdGllZC1zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgRGVmYXVsdCBUaWVkIFN0YXR1cyBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5kZWZhdWx0VGllZFN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImFsbERlZmF1bHRWYWx1ZS5kZWZhdWx0X3RpZWRfc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XFxcIlxcbiAgICAgICAgICAgICAgICAodmFsdWU6c3RyaW5nKSA9PiAoYWxsRGVmYXVsdFZhbHVlLmRlZmF1bHRfdGllZF9zdGF0dXMgPSB2YWx1ZSlcXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIElmIHNlbGVjdGVkLCB0aGVuIGRlZmF1bHQgdGllZCBzdGF0dXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGVkIGluIGFjdGl2aXR5IHdoZW4gY3JlYXRlZC5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgVGllZCBTdGF0dXMgRW5kIC0tPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPCEtLSBBY3Rpdml0eSBEYXRhIERlZmF1bHQgRW5kIC0tPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwdC0zIHRleHQteHMgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwibWVzc2FnZS1pY29uXFxcIiAvPlxcbiAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICBZb3UgY2FuIGFkanVzdCB0aGVzZSB2YWx1ZXMgbGF0ZXIgZnJvbSB0aGUgJ0RlZmF1bHQgVmFsdWVzJyBzZWN0aW9uLlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC0zIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwidGV4dC14cyBmb250LWJvbGQgdGV4dC1uLTQwXFxcIiBAY2xpY2s9XFxcInByZXZpb3VzU3RlcFxcXCI+XFxuICAgICAgICAgIFByZXZpb3VzXFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC00XFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LW4tNDBcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgU2tpcCB0byBuZXh0IHN0ZXBcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XFxcImJ1dHRvbiBwcmltYXJ5LWJ0biB0ZXh0LXhzXFxcIiBAY2xpY2s9XFxcInByb2NlZWRTdGVwXFxcIj5cXG4gICAgICAgICAgICBTYXZlIGFuZCBORVhUXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IHYtZWxzZT5cXG4gICAgICA8ZGl2XFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBtaW4taC1bMzYwcHhdIG1pbi13LVs3MzNweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYmctbi0xMFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8VHJhbnNpdGlvbiBtb2RlPVxcXCJvdXQtaW5cXFwiPlxcbiAgICAgICAgICA8ZGl2IHYtaWY9XFxcIiFpc1NhdmVkXFxcIiBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgIDxMaW5lc0xvYWRlciAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0zIGZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMlxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bNDFweF1cXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bMjAwcHhdIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgPkRlZmF1bHQgdmFsdWVzIGhhdmUgYmVlbiBzYXZlZCBzdWNjZXNzZnVsbHkuPC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvVHJhbnNpdGlvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG5cXG4gIDxkaXYgdi1lbHNlIGNsYXNzPVxcXCJoLWZ1bGwgbWluLXctWzczM3B4XSBwdC1bMTMwcHhdXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLW4tMTAgcHktWzYwcHhdIHB4LVs3M3B4XVxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bMzRweF1cXFwiIC8+XFxuICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgPGgyIGNsYXNzPVxcXCJtYXgtdy1bNTg3cHhdIHB5LVs1LjRweF0gdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXFxuICAgICAgICAgICAgPC9oMj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSB0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBtYWtlIGFueSBjaGFuZ2VzLCBnbyB0b1xcbiAgICAgICAgICAgICAgPGEgaHJlZj1cXFwiL3NldHRpbmdcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5zZXR0aW5nczwvYT4uXFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLVszMHB4XSBzZWxmLWVuZFxcXCI+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14c1xcXCIgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIj5cXG4gICAgICAgICAgTkVYVFxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgZGVmaW5lRW1pdHMsIHdhdGNoRWZmZWN0LCByZWYgfSBmcm9tICd2dWUnO1xcblxcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IEhvdmVyVGV4dCBmcm9tICdDb21wb25lbnRzL0hvdmVyVGV4dC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IExpbmVzTG9hZGVyIGZyb20gJ0NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlJztcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIGN1cnJlbmNpZXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBsYW5ndWFnZXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBodW1hbml0YXJpYW46IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0Rmxvd1R5cGU6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBkZWZhdWx0QWlkVHlwZToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGRlZmF1bHRUaWVkU3RhdHVzOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZGVmYXVsdFZhbHVlczoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGZldGNoRGF0YToge1xcbiAgICB0eXBlOiBGdW5jdGlvbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IEJvb2xlYW4sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1xcbiAgJ3Byb2NlZWRTdGVwJyxcXG4gICdwcmV2aW91c1N0ZXAnLFxcbiAgJ2NvbXBsZXRlU3RlcCcsXFxuICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXFxuXSk7XFxuY29uc3QgYWxsRGVmYXVsdFZhbHVlID0gcmVmKHtcXG4gIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxcbiAgZGVmYXVsdF9sYW5ndWFnZTogJycsXFxuICBoaWVyYXJjaHk6ICcnLFxcbiAgaHVtYW5pdGFyaWFuOiAnJyxcXG4gIGRlZmF1bHRfZmxvd190eXBlOiAnJyxcXG4gIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcXG4gIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxcbiAgZGVmYXVsdF90aWVkX3N0YXR1czogJycsXFxufSk7XFxuXFxuY29uc3QgaXNTYXZpbmdTdGFydGVkID0gcmVmKGZhbHNlKTtcXG5jb25zdCBpc1NhdmVkID0gcmVmKGZhbHNlKTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcykge1xcbiAgICBPYmplY3Qua2V5cyhhbGxEZWZhdWx0VmFsdWUudmFsdWUpLmZvckVhY2goKGtleSkgPT4ge1xcbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV0gIT09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgYWxsRGVmYXVsdFZhbHVlLnZhbHVlW2tleV0gPSBwcm9wcy5kZWZhdWx0VmFsdWVzW2tleV07XFxuICAgICAgfVxcbiAgICB9KTtcXG4gIH1cXG59KTtcXG5cXG5jb25zdCBwcm9jZWVkU3RlcCA9ICgpID0+IHtcXG4gIGlzU2F2aW5nU3RhcnRlZC52YWx1ZSA9IHRydWU7XFxuICBheGlvc1xcbiAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGFsbERlZmF1bHRWYWx1ZS52YWx1ZSlcXG4gICAgLnRoZW4oXFxuICAgICAgKHJlc3BvbnNlOiB7XFxuICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XFxuICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0X3ZhbHVlczoge1xcbiAgICAgICAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogc3RyaW5nO1xcbiAgICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogc3RyaW5nO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgIH0pID0+IHtcXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5kZWZhdWx0X3ZhbHVlcztcXG5cXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IHRydWU7XFxuICAgICAgICAgIH0sIDEwMDApO1xcblxcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgICAgICBwcm9wcy5mZXRjaERhdGEoKTtcXG5cXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVDb21wbGV0ZWRDaGVjayhkZWZhdWx0VmFsdWVzKTtcXG5cXG4gICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xcbiAgICAgICAgICB9LCAzMDAwKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIClcXG4gICAgLmNhdGNoKChlcnIpID0+IC8qIGVzbGludC1kaXNhYmxlICovY29uc29sZS5sb2coLi4ub29fb28oYDM5MTc4ODE3NzNfNDY5XzIwXzQ2OV80NV80YCwnRXJyb3InLCBlcnIpKSk7XFxufTtcXG5cXG5jb25zdCBkZWZhdWx0VmFsdWVDb21wbGV0ZWRDaGVjayA9IChkZWZhdWx0VmFsdWVzOiB7XFxuICBkZWZhdWx0X2N1cnJlbmN5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xcbiAgZGVmYXVsdF9sYW5ndWFnZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcXG59KSA9PiB7XFxuICBpZiAoXFxuICAgIGRlZmF1bHRWYWx1ZXMgJiZcXG4gICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2N1cnJlbmN5ICE9IG51bGwgJiZcXG4gICAgZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2N1cnJlbmN5ICE9PSAnJyAmJlxcbiAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UgIT0gbnVsbCAmJlxcbiAgICBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UgIT09ICcnXFxuICApIHtcXG4gICAgZW1pdCgnY29tcGxldGVTdGVwJywgMik7XFxuICB9IGVsc2Uge1xcbiAgICBlbWl0KCdyZW1vdmVDb21wbGV0ZWRTdGVwJywgMik7XFxuICB9XFxufTtcXG5cXG5jb25zdCBwcmV2aW91c1N0ZXAgPSAoKSA9PiB7XFxuICBlbWl0KCdwcmV2aW91c1N0ZXAnKTtcXG59O1xcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovLyogYzggaWdub3JlIHN0YXJ0ICovLyogZXNsaW50LWRpc2FibGUgKi87ZnVuY3Rpb24gb29fY20oKXt0cnl7cmV0dXJuICgwLGV2YWwpKFxcXCJnbG9iYWxUaGlzLl9jb25zb2xlX25pbmphXFxcIikgfHwgKDAsZXZhbCkoXFxcIi8qIGh0dHBzOi8vZ2l0aHViLmNvbS93YWxsYWJ5anMvY29uc29sZS1uaW5qYSNob3ctZG9lcy1pdC13b3JrICovJ3VzZSBzdHJpY3QnO3ZhciBfMHhiMzg0Nzk9XzB4MjY5MDsoZnVuY3Rpb24oXzB4M2RhOWE3LF8weDEyOTk4Myl7dmFyIF8weDI0MTNmMj1fMHgyNjkwLF8weDRlZDdiYT1fMHgzZGE5YTcoKTt3aGlsZSghIVtdKXt0cnl7dmFyIF8weDE1MzU2MD0tcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk1KSkvMHgxKihwYXJzZUludChfMHgyNDEzZjIoMHgxYzgpKS8weDIpKy1wYXJzZUludChfMHgyNDEzZjIoMHgxOTEpKS8weDMqKHBhcnNlSW50KF8weDI0MTNmMigweDFhZikpLzB4NCkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWQyKSkvMHg1Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxYWEpKS8weDYqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOTkpKS8weDcpK3BhcnNlSW50KF8weDI0MTNmMigweDFjOSkpLzB4OCstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWVhKSkvMHg5K3BhcnNlSW50KF8weDI0MTNmMigweDFmNykpLzB4YSooLXBhcnNlSW50KF8weDI0MTNmMigweDE4YikpLzB4Yik7aWYoXzB4MTUzNTYwPT09XzB4MTI5OTgzKWJyZWFrO2Vsc2UgXzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO31jYXRjaChfMHgxMTRkZTYpe18weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9fX0oXzB4NDlmYiwweDc1Nzc5KSk7ZnVuY3Rpb24gXzB4NDlmYigpe3ZhciBfMHgzMTNjMjk9WydfcXVvdGVkUmVnRXhwJywnd2FybicsJ2F1dG9FeHBhbmRQcmV2aW91c09iamVjdHMnLCdnZXRQcm90b3R5cGVPZicsJ19XZWJTb2NrZXQnLCdnZXR0ZXInLCcxMjMwVEVwbGxoJywnZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwY29ubmVjdFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGhvc3Q6XFxcXFxcXFx4MjAnLCdfc29ydFByb3BzJywnY291bnQnLCdzb3J0Jywnc2V0JywnbnVsbCcsJ3RvTG93ZXJDYXNlJywnbmVnYXRpdmVaZXJvJywnam9pbicsJ3N0YWNrJywnX2hhc1N5bWJvbFByb3BlcnR5T25JdHNQYXRoJywnY3VycmVudCcsJ19nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCd0aGVuJywnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnSFRNTEFsbENvbGxlY3Rpb24nLCd1cmwnLCdwYXRoVG9GaWxlVVJMJywnX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnLCdjYXBwZWQnLCdfaXNNYXAnLCdleHByZXNzaW9uc1RvRXZhbHVhdGUnLCdyb290RXhwcmVzc2lvbicsJ3VucmVmJywnZnVuY3Rpb24nLCdoaXRzJywnc3RyTGVuZ3RoJywnX2hhc01hcE9uSXRzUGF0aCcsJ2ZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGZpbmRcXFxcXFxcXHgyMGFuZFxcXFxcXFxceDIwbG9hZFxcXFxcXFxceDIwV2ViU29ja2V0JywnX3VuZGVmaW5lZCcsJ25hbWUnLCdfc2VuZEVycm9yTWVzc2FnZScsJ2V2ZW50UmVjZWl2ZWRDYWxsYmFjaycsJ19wX2xlbmd0aCcsJ2dsb2JhbCcsJ2Vycm9yJywnXFxcXFxcXFx4MjBicm93c2VyJywnbmVnYXRpdmVJbmZpbml0eScsJ1tvYmplY3RcXFxcXFxcXHgyMFNldF0nLCdzZW5kJywncHJvdG90eXBlJywnZGVwdGgnLCdyZWFkeVN0YXRlJywnX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZScsJ3VuZGVmaW5lZCcsJ19TeW1ib2wnLCdfcHJvcGVydHknLCdTZXQnLCdtYXAnLCdfaW5OZXh0RWRnZScsJ3ZhbHVlT2YnLCdzZWVcXFxcXFxcXHgyMGh0dHBzOi8vdGlueXVybC5jb20vMnZ0OGp4endcXFxcXFxcXHgyMGZvclxcXFxcXFxceDIwbW9yZVxcXFxcXFxceDIwaW5mby4nLCdfb2JqZWN0VG9TdHJpbmcnLCdwb3NpdGl2ZUluZmluaXR5JywnYmluZCcsJ2NhbGwnLCdfaXNOZWdhdGl2ZVplcm8nLCdORVhUX1JVTlRJTUUnLCdsb2dnZXJcXFxcXFxcXHgyMHdlYnNvY2tldFxcXFxcXFxceDIwZXJyb3InLCdfZ2V0T3duUHJvcGVydHlOYW1lcycsJ21lc3NhZ2UnLCdiaWdpbnQnLCd0aW1lJywnc3RhcnRzV2l0aCcsJ19jbGVhbk5vZGUnLCdfZGlzcG9zZVdlYnNvY2tldCcsJ19yZWdFeHBUb1N0cmluZycsJ29uZXJyb3InLCdjb25jYXQnLCcxLjAuMCcsJ2Jvb2xlYW4nLCdbb2JqZWN0XFxcXFxcXFx4MjBEYXRlXScsJ3JlbWl4JywnbGVuZ3RoJywnc29ydFByb3BzJywnb25vcGVuJywnX2tleVN0clJlZ0V4cCcsJ2RhdGEnLCdyZWR1Y2VMaW1pdHMnLCdwcm9wcycsJ3NvbWUnLCdfY2FwSWZTdHJpbmcnLCcxNzMxMDQwOTM0NzA0JywncGVyZl9ob29rcycsJ29iamVjdCcsJ3ZlcnNpb25zJywnZnJvbUNoYXJDb2RlJywnbmFuJywnYXV0b0V4cGFuZExpbWl0JywnbG9nJywnZ2V0JywncGFyc2UnLCdfY29ubmVjdGVkJywnc3Vic3RyJywnbm9kZU1vZHVsZXMnLCdcXFxcXFxcXHgyMHNlcnZlcicsJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnLCdfY29ubmVjdGluZycsJ01hcCcsXFxcXFxcXCIvaG9tZS9mbHVmZnkvLnZzY29kZS9leHRlbnNpb25zL3dhbGxhYnlqcy5jb25zb2xlLW5pbmphLTEuMC4zNjYvbm9kZV9tb2R1bGVzXFxcXFxcXCIsJ05FR0FUSVZFX0lORklOSVRZJywnX3dzJywnY29uc29sZScsJ2RvY2tlcml6ZWRBcHAnLCdfdHlwZScsJ19jb25zb2xlX25pbmphX3Nlc3Npb24nLCdlbGVtZW50cycsJ2FsbFN0ckxlbmd0aCcsJ19hZGRMb2FkTm9kZScsJ3N5bWJvbCcsJ3Jvb3RfZXhwX2lkJywnX2FsbG93ZWRUb1NlbmQnLCd3cy9pbmRleC5qcycsJ3BlcmZvcm1hbmNlJywnX3NldE5vZGVJZCcsJ19ibGFja2xpc3RlZFByb3BlcnR5JywnUmVnRXhwJywncmVwbGFjZScsJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50JywndGltZVN0YW1wJywnQ29uc29sZVxcXFxcXFxceDIwTmluamFcXFxcXFxcXHgyMGZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMHNlbmRcXFxcXFxcXHgyMGxvZ3MsXFxcXFxcXFx4MjByZXN0YXJ0aW5nXFxcXFxcXFx4MjB0aGVcXFxcXFxcXHgyMHByb2Nlc3NcXFxcXFxcXHgyMG1heVxcXFxcXFxceDIwaGVscDtcXFxcXFxcXHgyMGFsc29cXFxcXFxcXHgyMHNlZVxcXFxcXFxceDIwJywnYW5ndWxhcicsJ2NhcHBlZEVsZW1lbnRzJywnX3NvY2tldCcsJ19pc1VuZGVmaW5lZCcsJ19pc1ByaW1pdGl2ZVdyYXBwZXJUeXBlJywnZ2V0V2ViU29ja2V0Q2xhc3MnLCdtZXRob2QnLCdbb2JqZWN0XFxcXFxcXFx4MjBNYXBdJywndGVzdCcsJ19zZXROb2RlRXhwYW5kYWJsZVN0YXRlJywnc3RhY2tUcmFjZUxpbWl0JywnW29iamVjdFxcXFxcXFxceDIwQXJyYXldJywnMjEyMTlZclJsVWUnLCdfbWF4Q29ubmVjdEF0dGVtcHRDb3VudCcsJ2h0dHBzOi8vdGlueXVybC5jb20vMzd4OGI3OXQnLCcxMjcuMC4wLjEnLCdvbmNsb3NlJywnQ29uc29sZVxcXFxcXFxceDIwTmluamFcXFxcXFxcXHgyMGZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMHNlbmRcXFxcXFxcXHgyMGxvZ3MsXFxcXFxcXFx4MjByZWZyZXNoaW5nXFxcXFxcXFx4MjB0aGVcXFxcXFxcXHgyMHBhZ2VcXFxcXFxcXHgyMG1heVxcXFxcXFxceDIwaGVscDtcXFxcXFxcXHgyMGFsc29cXFxcXFxcXHgyMHNlZVxcXFxcXFxceDIwJywnMjI2MTYxblp0ZldIJywnX25pbmphSWdub3JlTmV4dEVycm9yJywnYXJncycsJ2Rpc2FibGVkTG9nJywnMjk1M3NCb2lmUycsJ21hdGNoJyxbXFxcXFxcXCJsb2NhbGhvc3RcXFxcXFxcIixcXFxcXFxcIjEyNy4wLjAuMVxcXFxcXFwiLFxcXFxcXFwiZXhhbXBsZS5jeXByZXNzLmlvXFxcXFxcXCIsXFxcXFxcXCJmbHVmZnlcXFxcXFxcIixcXFxcXFxcIjE5Mi4xNjguMTAuMTcxXFxcXFxcXCJdLCdzdHJpbmdpZnknLCc4MDE5NjJTQ1FRREUnLCdpbmNsdWRlcycsJ19pc1ByaW1pdGl2ZVR5cGUnLCdocnRpbWUnLCdmdW5jTmFtZScsJ3B1c2gnLCd3czovLycsJ29ubWVzc2FnZScsJ2xvY2F0aW9uJywndW5zaGlmdCcsJ3Byb2Nlc3MnLCdfaXNTZXQnLCdfSFRNTEFsbENvbGxlY3Rpb24nLCdfV2ViU29ja2V0Q2xhc3MnLCd0b1VwcGVyQ2FzZScsJ2F1dG9FeHBhbmRNYXhEZXB0aCcsJ3RvdGFsU3RyTGVuZ3RoJywnNnZHRGFVZicsJ3RyYWNlJywnZGF0ZScsJ251bWJlcicsJ3ZhbHVlJywnNFRuZEZIQicsJ3JlbG9hZCcsJ25vRnVuY3Rpb25zJywnY292ZXJhZ2UnLCdjcmVhdGUnLCdfYXR0ZW1wdFRvUmVjb25uZWN0U2hvcnRseScsJ3RvU3RyaW5nJywnX2FkZE9iamVjdFByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywnX2FkZEZ1bmN0aW9uc05vZGUnLCdfYWRkUHJvcGVydHknLCdhdXRvRXhwYW5kJywnYXJyYXknLCdfY29ubmVjdFRvSG9zdE5vdycsJ3BhcmVudCcsJ2NhcHBlZFByb3BzJywnZGVmaW5lUHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywnbm9kZScsJ3Vua25vd24nLCdfaW5Ccm93c2VyJywnY29uc3RydWN0b3InLCdfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnLCdjYXRjaCcsJ2xvZ2dlclxcXFxcXFxceDIwZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwY29ubmVjdFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGhvc3QnLCc0MTJkWldtalAnLCc1OTk5MTI4elVIc2ZrJywnc3RyaW5nJywnaXNFeHByZXNzaW9uVG9FdmFsdWF0ZScsJ19wcm9wZXJ0eU5hbWUnLCdfY29uc29sZV9uaW5qYScsJycsJ3NlcmlhbGl6ZScsJy4uLicsJ2luZGV4JywnMzc2NjgwNUxadVdPSScsJ190cmVlTm9kZVByb3BlcnRpZXNBZnRlckZ1bGxWYWx1ZScsJ2V4cElkJywndHlwZScsJ051bWJlcicsJ19zZXROb2RlUGVybWlzc2lvbnMnLCdfcF9uYW1lJywnZ2F0ZXdheS5kb2NrZXIuaW50ZXJuYWwnLCdTdHJpbmcnLCdob3N0JywncmVzb2x2ZUdldHRlcnMnLCdvcmlnaW4nLCduZXh0LmpzJywnMzM0NTMnLCdfcmVjb25uZWN0VGltZW91dCcsJ2ZvckVhY2gnLCdfcF8nLCdfc2V0Tm9kZUxhYmVsJywnZW52JywnX2Nvbm5lY3RBdHRlbXB0Q291bnQnLCdob3N0bmFtZScsJ1N5bWJvbCcsJ2VsYXBzZWQnLCdlZGdlJywnMTk0MTMwOWxjY1ZQUycsJ19hZGRpdGlvbmFsTWV0YWRhdGEnLCdsZXZlbCcsJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCd3ZWJwYWNrJywnbm93JywnX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXTtfMHg0OWZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxM2MyOTt9O3JldHVybiBfMHg0OWZiKCk7fXZhciBLPU9iamVjdFtfMHhiMzg0NzkoMHgxYjMpXSxRPU9iamVjdFtfMHhiMzg0NzkoMHgxYmYpXSxHPU9iamVjdFtfMHhiMzg0NzkoMHgxYjcpXSxlZT1PYmplY3RbXzB4YjM4NDc5KDB4MWMwKV0sdGU9T2JqZWN0W18weGIzODQ3OSgweDFmNCldLG5lPU9iamVjdFtfMHhiMzg0NzkoMHgyMjApXVsnaGFzT3duUHJvcGVydHknXSxyZT0oXzB4NTEwMTIyLF8weDU4NzA0ZixfMHgyZTQ0ZjYsXzB4MjBiYjM5KT0+e3ZhciBfMHgyZmNhOTE9XzB4YjM4NDc5O2lmKF8weDU4NzA0ZiYmdHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjRjKXx8dHlwZW9mIF8weDU4NzA0Zj09XzB4MmZjYTkxKDB4MjEwKSl7Zm9yKGxldCBfMHg1NzM0YTAgb2YgZWUoXzB4NTg3MDRmKSkhbmVbJ2NhbGwnXShfMHg1MTAxMjIsXzB4NTczNGEwKSYmXzB4NTczNGEwIT09XzB4MmU0NGY2JiZRKF8weDUxMDEyMixfMHg1NzM0YTAseydnZXQnOigpPT5fMHg1ODcwNGZbXzB4NTczNGEwXSwnZW51bWVyYWJsZSc6IShfMHgyMGJiMzk9RyhfMHg1ODcwNGYsXzB4NTczNGEwKSl8fF8weDIwYmIzOVsnZW51bWVyYWJsZSddfSk7fXJldHVybiBfMHg1MTAxMjI7fSxWPShfMHgxNDhkMWQsXzB4NDM3ZDc4LF8weDVlYzEzMSk9PihfMHg1ZWMxMzE9XzB4MTQ4ZDFkIT1udWxsP0sodGUoXzB4MTQ4ZDFkKSk6e30scmUoXzB4NDM3ZDc4fHwhXzB4MTQ4ZDFkfHwhXzB4MTQ4ZDFkWydfX2VzJysnTW9kdWxlJ10/UShfMHg1ZWMxMzEsJ2RlZmF1bHQnLHsndmFsdWUnOl8weDE0OGQxZCwnZW51bWVyYWJsZSc6ITB4MH0pOl8weDVlYzEzMSxfMHgxNDhkMWQpKSxaPWNsYXNze2NvbnN0cnVjdG9yKF8weDNiNDY1NSxfMHgxZDViZTgsXzB4MzY4ZGNmLF8weDVmNGViMSxfMHg1ZTg0MmYsXzB4ODY4NzlkKXt2YXIgXzB4NWUwZTU1PV8weGIzODQ3OSxfMHgxODU5ZmIsXzB4YzU3YjAsXzB4NTNmNTg0LF8weDJlZTM2NDt0aGlzW18weDVlMGU1NSgweDIxYSldPV8weDNiNDY1NSx0aGlzW18weDVlMGU1NSgweDFkYildPV8weDFkNWJlOCx0aGlzWydwb3J0J109XzB4MzY4ZGNmLHRoaXNbJ25vZGVNb2R1bGVzJ109XzB4NWY0ZWIxLHRoaXNbXzB4NWUwZTU1KDB4MjVmKV09XzB4NWU4NDJmLHRoaXNbXzB4NWUwZTU1KDB4MjE4KV09XzB4ODY4NzlkLHRoaXNbXzB4NWUwZTU1KDB4MTc1KV09ITB4MCx0aGlzW18weDVlMGU1NSgweDFmMCldPSEweDAsdGhpc1snX2Nvbm5lY3RlZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NWUwZTU1KDB4MjI5KV09KChfMHhjNTdiMD0oXzB4MTg1OWZiPV8weDNiNDY1NVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTg1OWZiW18weDVlMGU1NSgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHhjNTdiMFtfMHg1ZTBlNTUoMHgyMzEpXSk9PT1fMHg1ZTBlNTUoMHgxZTkpLHRoaXNbXzB4NWUwZTU1KDB4MWMzKV09ISgoXzB4MmVlMzY0PShfMHg1M2Y1ODQ9dGhpc1snZ2xvYmFsJ11bXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDUzZjU4NFtfMHg1ZTBlNTUoMHgyNGQpXSkhPW51bGwmJl8weDJlZTM2NFtfMHg1ZTBlNTUoMHgxYzEpXSkmJiF0aGlzW18weDVlMGU1NSgweDIyOSldLHRoaXNbJ19XZWJTb2NrZXRDbGFzcyddPW51bGwsdGhpc1tfMHg1ZTBlNTUoMHgxZTUpXT0weDAsdGhpc1tfMHg1ZTBlNTUoMHgxOGMpXT0weDE0LHRoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ109XzB4NWUwZTU1KDB4MThkKSx0aGlzW18weDVlMGU1NSgweDIxNyldPSh0aGlzWydfaW5Ccm93c2VyJ10/XzB4NWUwZTU1KDB4MTkwKTpfMHg1ZTBlNTUoMHgxN2UpKSt0aGlzW18weDVlMGU1NSgweDIwYSldO31hc3luY1tfMHhiMzg0NzkoMHgxODQpXSgpe3ZhciBfMHg1YjQwYzQ9XzB4YjM4NDc5LF8weDQzYWRhYyxfMHgzZjA4ZDk7aWYodGhpc1tfMHg1YjQwYzQoMHgxYTYpXSlyZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXTtsZXQgXzB4MWVmZTczO2lmKHRoaXNbXzB4NWI0MGM0KDB4MWMzKV18fHRoaXNbXzB4NWI0MGM0KDB4MjI5KV0pXzB4MWVmZTczPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ1dlYlNvY2tldCddO2Vsc2V7aWYoKF8weDQzYWRhYz10aGlzW18weDViNDBjNCgweDIxYSldWydwcm9jZXNzJ10pIT1udWxsJiZfMHg0M2FkYWNbXzB4NWI0MGM0KDB4MWY1KV0pXzB4MWVmZTczPShfMHgzZjA4ZDk9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVtfMHg1YjQwYzQoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4M2YwOGQ5WydfV2ViU29ja2V0J107ZWxzZSB0cnl7bGV0IF8weDE3OTI1YT1hd2FpdCBpbXBvcnQoJ3BhdGgnKTtfMHgxZWZlNzM9KGF3YWl0IGltcG9ydCgoYXdhaXQgaW1wb3J0KF8weDViNDBjNCgweDIwOCkpKVtfMHg1YjQwYzQoMHgyMDkpXShfMHgxNzkyNWFbJ2pvaW4nXSh0aGlzWydub2RlTW9kdWxlcyddLF8weDViNDBjNCgweDE3NikpKVtfMHg1YjQwYzQoMHgxYjUpXSgpKSlbJ2RlZmF1bHQnXTt9Y2F0Y2h7dHJ5e18weDFlZmU3Mz1yZXF1aXJlKHJlcXVpcmUoJ3BhdGgnKVtfMHg1YjQwYzQoMHgyMDApXSh0aGlzW18weDViNDBjNCgweDI1NildLCd3cycpKTt9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKF8weDViNDBjNCgweDIxNCkpO319fXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildPV8weDFlZmU3MyxfMHgxZWZlNzM7fVtfMHhiMzg0NzkoMHgxYmMpXSgpe3ZhciBfMHgzZTNhNjk9XzB4YjM4NDc5O3RoaXNbXzB4M2UzYTY5KDB4MjU5KV18fHRoaXNbXzB4M2UzYTY5KDB4MjU0KV18fHRoaXNbJ19jb25uZWN0QXR0ZW1wdENvdW50J10+PXRoaXNbXzB4M2UzYTY5KDB4MThjKV18fCh0aGlzWydfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddPSEweDEsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgwLHRoaXNbXzB4M2UzYTY5KDB4MWU1KV0rKyx0aGlzWydfd3MnXT1uZXcgUHJvbWlzZSgoXzB4MjI3Yzk4LF8weDJkMjA2NSk9Pnt2YXIgXzB4NDNjODY5PV8weDNlM2E2OTt0aGlzWydnZXRXZWJTb2NrZXRDbGFzcyddKClbXzB4NDNjODY5KDB4MjA1KV0oXzB4NTg1MjI0PT57dmFyIF8weDNmM2E4Nz1fMHg0M2M4Njk7bGV0IF8weDJkZDU5ND1uZXcgXzB4NTg1MjI0KF8weDNmM2E4NygweDE5ZikrKCF0aGlzWydfaW5Ccm93c2VyJ10mJnRoaXNbJ2RvY2tlcml6ZWRBcHAnXT9fMHgzZjNhODcoMHgxZDkpOnRoaXNbXzB4M2YzYTg3KDB4MWRiKV0pKyc6Jyt0aGlzWydwb3J0J10pO18weDJkZDU5NFtfMHgzZjNhODcoMHgyM2IpXT0oKT0+e3ZhciBfMHgxMjY4NmE9XzB4M2YzYTg3O3RoaXNbXzB4MTI2ODZhKDB4MTc1KV09ITB4MSx0aGlzW18weDEyNjg2YSgweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgxMjY4NmEoMHgxYjQpXSgpLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4MTI2ODZhKDB4MjMyKSkpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDI0MyldPSgpPT57dmFyIF8weDRkYWZmNj1fMHgzZjNhODc7dGhpc1snX2luQnJvd3NlciddfHxfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildKCksXzB4MjI3Yzk4KF8weDJkZDU5NCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MThmKV09KCk9Pnt2YXIgXzB4M2E1ODNmPV8weDNmM2E4Nzt0aGlzW18weDNhNTgzZigweDFmMCldPSEweDAsdGhpc1tfMHgzYTU4M2YoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4M2E1ODNmKDB4MWI0KV0oKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxYTApXT1fMHgyNjIxNWE9Pnt2YXIgXzB4MWFkYmQxPV8weDNmM2E4Nzt0cnl7aWYoIShfMHgyNjIxNWEhPW51bGwmJl8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSl8fCF0aGlzW18weDFhZGJkMSgweDIxOCldKXJldHVybjtsZXQgXzB4MmJhYmQ5PUpTT05bXzB4MWFkYmQxKDB4MjUzKV0oXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKTt0aGlzW18weDFhZGJkMSgweDIxOCldKF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxODUpXSxfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTkzKV0sdGhpc1tfMHgxYWRiZDEoMHgyMWEpXSx0aGlzWydfaW5Ccm93c2VyJ10pO31jYXRjaHt9fTt9KVtfMHg0M2M4NjkoMHgyMDUpXShfMHg0ZjcxNGU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDAsdGhpc1snX2Nvbm5lY3RpbmcnXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MWYwKV09ITB4MSx0aGlzW18weDQzYzg2OSgweDE3NSldPSEweDAsdGhpc1tfMHg0M2M4NjkoMHgxZTUpXT0weDAsXzB4NGY3MTRlKSlbXzB4NDNjODY5KDB4MWM2KV0oXzB4MjJlYzllPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MjU5KV09ITB4MSxjb25zb2xlW18weDQzYzg2OSgweDFmMildKCdsb2dnZXJcXFxcXFxcXHgyMGZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGNvbm5lY3RcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBob3N0LFxcXFxcXFxceDIwc2VlXFxcXFxcXFx4MjAnK3RoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ10pLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4NDNjODY5KDB4MWY4KSsoXzB4MjJlYzllJiZfMHgyMmVjOWVbXzB4NDNjODY5KDB4MjM0KV0pKSkpKTt9KSk7fVtfMHhiMzg0NzkoMHgyMzkpXShfMHgyNThlYTMpe3ZhciBfMHgzMTYwN2U9XzB4YjM4NDc5O3RoaXNbXzB4MzE2MDdlKDB4MjU0KV09ITB4MSx0aGlzW18weDMxNjA3ZSgweDI1OSldPSEweDE7dHJ5e18weDI1OGVhM1snb25jbG9zZSddPW51bGwsXzB4MjU4ZWEzWydvbmVycm9yJ109bnVsbCxfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjQzKV09bnVsbDt9Y2F0Y2h7fXRyeXtfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjIyKV08MHgyJiZfMHgyNThlYTNbJ2Nsb3NlJ10oKTt9Y2F0Y2h7fX1bXzB4YjM4NDc5KDB4MWI0KV0oKXt2YXIgXzB4MjMzYmE2PV8weGIzODQ3OTtjbGVhclRpbWVvdXQodGhpc1tfMHgyMzNiYTYoMHgxZTApXSksISh0aGlzW18weDIzM2JhNigweDFlNSldPj10aGlzW18weDIzM2JhNigweDE4YyldKSYmKHRoaXNbXzB4MjMzYmE2KDB4MWUwKV09c2V0VGltZW91dCgoKT0+e3ZhciBfMHg0MDFmZWM9XzB4MjMzYmE2LF8weDUyYjNkOTt0aGlzW18weDQwMWZlYygweDI1NCldfHx0aGlzW18weDQwMWZlYygweDI1OSldfHwodGhpc1tfMHg0MDFmZWMoMHgxYmMpXSgpLChfMHg1MmIzZDk9dGhpc1tfMHg0MDFmZWMoMHgyNWQpXSk9PW51bGx8fF8weDUyYjNkOVtfMHg0MDFmZWMoMHgxYzYpXSgoKT0+dGhpc1tfMHg0MDFmZWMoMHgxYjQpXSgpKSk7fSwweDFmNCksdGhpc1tfMHgyMzNiYTYoMHgxZTApXVtfMHgyMzNiYTYoMHgyMGYpXSYmdGhpc1tfMHgyMzNiYTYoMHgxZTApXVsndW5yZWYnXSgpKTt9YXN5bmNbXzB4YjM4NDc5KDB4MjFmKV0oXzB4NTg2YjFkKXt2YXIgXzB4NWQ4NTA4PV8weGIzODQ3OTt0cnl7aWYoIXRoaXNbXzB4NWQ4NTA4KDB4MTc1KV0pcmV0dXJuO3RoaXNbXzB4NWQ4NTA4KDB4MWYwKV0mJnRoaXNbXzB4NWQ4NTA4KDB4MWJjKV0oKSwoYXdhaXQgdGhpc1tfMHg1ZDg1MDgoMHgyNWQpXSlbXzB4NWQ4NTA4KDB4MjFmKV0oSlNPTltfMHg1ZDg1MDgoMHgxOTgpXShfMHg1ODZiMWQpKTt9Y2F0Y2goXzB4ZmQzYTk3KXtjb25zb2xlW18weDVkODUwOCgweDFmMildKHRoaXNbXzB4NWQ4NTA4KDB4MjE3KV0rJzpcXFxcXFxcXHgyMCcrKF8weGZkM2E5NyYmXzB4ZmQzYTk3W18weDVkODUwOCgweDIzNCldKSksdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXT0hMHgxLHRoaXNbXzB4NWQ4NTA4KDB4MWI0KV0oKTt9fX07ZnVuY3Rpb24gcShfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDVhOTUwMSxfMHgxYWFmOTAsXzB4NDI5N2IyLF8weDEzZWY4OSxfMHg4MjUyNTYsXzB4ZjY4MmE3PWllKXt2YXIgXzB4YTNmYjQyPV8weGIzODQ3OTtsZXQgXzB4NGNmMTZkPV8weDVhOTUwMVsnc3BsaXQnXSgnLCcpW18weGEzZmI0MigweDIyOCldKF8weDUxYjRkNj0+e3ZhciBfMHgxMDhjOTg9XzB4YTNmYjQyLF8weDEyZjMyMixfMHgxMmJlZDQsXzB4NWJlZDIxLF8weDI0MzRhODt0cnl7aWYoIV8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXSl7bGV0IF8weDE3MzBiNT0oKF8weDEyYmVkND0oXzB4MTJmMzIyPV8weDQyMzY3YVsncHJvY2VzcyddKT09bnVsbD92b2lkIDB4MDpfMHgxMmYzMjJbXzB4MTA4Yzk4KDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEyYmVkNFtfMHgxMDhjOTgoMHgxYzEpXSl8fCgoXzB4MjQzNGE4PShfMHg1YmVkMjE9XzB4NDIzNjdhW18weDEwOGM5OCgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1YmVkMjFbXzB4MTA4Yzk4KDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDI0MzRhOFtfMHgxMDhjOTgoMHgyMzEpXSk9PT1fMHgxMDhjOTgoMHgxZTkpOyhfMHg0Mjk3YjI9PT1fMHgxMDhjOTgoMHgxZGUpfHxfMHg0Mjk3YjI9PT1fMHgxMDhjOTgoMHgyNDApfHxfMHg0Mjk3YjI9PT0nYXN0cm8nfHxfMHg0Mjk3YjI9PT1fMHgxMDhjOTgoMHgxN2YpKSYmKF8weDQyOTdiMis9XzB4MTczMGI1P18weDEwOGM5OCgweDI1Nyk6XzB4MTA4Yzk4KDB4MjFjKSksXzB4NDIzNjdhW18weDEwOGM5OCgweDI2MSldPXsnaWQnOituZXcgRGF0ZSgpLCd0b29sJzpfMHg0Mjk3YjJ9LF8weDgyNTI1NiYmXzB4NDI5N2IyJiYhXzB4MTczMGI1JiZjb25zb2xlW18weDEwOGM5OCgweDI1MSldKCclY1xcXFxcXFxceDIwQ29uc29sZVxcXFxcXFxceDIwTmluamFcXFxcXFxcXHgyMGV4dGVuc2lvblxcXFxcXFxceDIwaXNcXFxcXFxcXHgyMGNvbm5lY3RlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMCcrKF8weDQyOTdiMlsnY2hhckF0J10oMHgwKVtfMHgxMDhjOTgoMHgxYTcpXSgpK18weDQyOTdiMlsnc3Vic3RyJ10oMHgxKSkrJywnLCdiYWNrZ3JvdW5kOlxcXFxcXFxceDIwcmdiKDMwLDMwLDMwKTtcXFxcXFxcXHgyMGNvbG9yOlxcXFxcXFxceDIwcmdiKDI1NSwyMTMsOTIpJyxfMHgxMDhjOTgoMHgyMmIpKTt9bGV0IF8weDRhYmU5Nj1uZXcgWihfMHg0MjM2N2EsXzB4MmNiZmI2LF8weDUxYjRkNixfMHgxYWFmOTAsXzB4MTNlZjg5LF8weGY2ODJhNyk7cmV0dXJuIF8weDRhYmU5NltfMHgxMDhjOTgoMHgyMWYpXVtfMHgxMDhjOTgoMHgyMmUpXShfMHg0YWJlOTYpO31jYXRjaChfMHg1YmY0OWIpe3JldHVybiBjb25zb2xlWyd3YXJuJ10oXzB4MTA4Yzk4KDB4MWM3KSxfMHg1YmY0OWImJl8weDViZjQ5YltfMHgxMDhjOTgoMHgyMzQpXSksKCk9Pnt9O319KTtyZXR1cm4gXzB4Mzc5ZmQzPT5fMHg0Y2YxNmRbXzB4YTNmYjQyKDB4MWUxKV0oXzB4MzcxMTIxPT5fMHgzNzExMjEoXzB4Mzc5ZmQzKSk7fWZ1bmN0aW9uIGllKF8weDNlOGYyNSxfMHgzOWZlYTUsXzB4MjUxNTBmLF8weDI2NTI4ZSl7dmFyIF8weDFjYzk2Nz1fMHhiMzg0Nzk7XzB4MjY1MjhlJiZfMHgzZThmMjU9PT1fMHgxY2M5NjcoMHgxYjApJiZfMHgyNTE1MGZbXzB4MWNjOTY3KDB4MWExKV1bJ3JlbG9hZCddKCk7fWZ1bmN0aW9uIEIoXzB4MzA5ODQyKXt2YXIgXzB4MjRkZmMyPV8weGIzODQ3OSxfMHgyYWMwNDgsXzB4NTBhYmRmO2xldCBfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4MTFhNjczLF8weDVmMDY5Myl7cmV0dXJuIF8weDVmMDY5My1fMHgxMWE2NzM7fSxfMHgxYzdmYWY7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDE3NyldKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg4ZGJlMT1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg4ZGJlMSgweDE3NyldW18weDhkYmUxKDB4MWVmKV0oKTt9O2Vsc2V7aWYoXzB4MzA5ODQyW18weDI0ZGZjMigweDFhMyldJiZfMHgzMDk4NDJbJ3Byb2Nlc3MnXVtfMHgyNGRmYzIoMHgxOWMpXSYmKChfMHg1MGFiZGY9KF8weDJhYzA0OD1fMHgzMDk4NDJbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MmFjMDQ4WydlbnYnXSk9PW51bGw/dm9pZCAweDA6XzB4NTBhYmRmWydORVhUX1JVTlRJTUUnXSkhPT1fMHgyNGRmYzIoMHgxZTkpKV8weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg1MmQ2NDA9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4NTJkNjQwKDB4MWEzKV1bJ2hydGltZSddKCk7fSxfMHhkZGJkZWY9ZnVuY3Rpb24oXzB4NTUwYmE5LF8weDE2YTNlMil7cmV0dXJuIDB4M2U4KihfMHgxNmEzZTJbMHgwXS1fMHg1NTBiYTlbMHgwXSkrKF8weDE2YTNlMlsweDFdLV8weDU1MGJhOVsweDFdKS8weGY0MjQwO307ZWxzZSB0cnl7bGV0IHtwZXJmb3JtYW5jZTpfMHgzNGRlNGF9PXJlcXVpcmUoXzB4MjRkZmMyKDB4MjRiKSk7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDRmMWQ2OT1fMHgyNGRmYzI7cmV0dXJuIF8weDM0ZGU0YVtfMHg0ZjFkNjkoMHgxZWYpXSgpO307fWNhdGNoe18weDFjN2ZhZj1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZSgpO307fX1yZXR1cm57J2VsYXBzZWQnOl8weGRkYmRlZiwndGltZVN0YW1wJzpfMHgxYzdmYWYsJ25vdyc6KCk9PkRhdGVbXzB4MjRkZmMyKDB4MWVmKV0oKX07fWZ1bmN0aW9uIF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSl7dmFyIF8weDQ5ZmJkYz1fMHg0OWZiKCk7cmV0dXJuIF8weDI2OTA9ZnVuY3Rpb24oXzB4MjY5MDFiLF8weDM1OGYxZil7XzB4MjY5MDFiPV8weDI2OTAxYi0weDE3Mzt2YXIgXzB4MWZmMjg3PV8weDQ5ZmJkY1tfMHgyNjkwMWJdO3JldHVybiBfMHgxZmYyODc7fSxfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpO31mdW5jdGlvbiBIKF8weDI2NTVlMyxfMHgxNGNiZjcsXzB4NGNkNjA5KXt2YXIgXzB4MjZhYzJjPV8weGIzODQ3OSxfMHg0YmU3MGQsXzB4M2ZiNGNjLF8weDFmZmM2MixfMHg0N2U4YWEsXzB4NWYwOTQyO2lmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J10hPT12b2lkIDB4MClyZXR1cm4gXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTtsZXQgXzB4MjUxMjk1PSgoXzB4M2ZiNGNjPShfMHg0YmU3MGQ9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg0YmU3MGRbXzB4MjZhYzJjKDB4MjRkKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmYjRjY1tfMHgyNmFjMmMoMHgxYzEpXSl8fCgoXzB4NDdlOGFhPShfMHgxZmZjNjI9XzB4MjY1NWUzW18weDI2YWMyYygweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxZmZjNjJbXzB4MjZhYzJjKDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weDQ3ZThhYVsnTkVYVF9SVU5USU1FJ10pPT09XzB4MjZhYzJjKDB4MWU5KTtmdW5jdGlvbiBfMHg1OWQ5ZGUoXzB4MTk0OTM4KXt2YXIgXzB4NWU1ZDVjPV8weDI2YWMyYztpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MjM3KV0oJy8nKSYmXzB4MTk0OTM4WydlbmRzV2l0aCddKCcvJykpe2xldCBfMHhjYjc4MDQ9bmV3IFJlZ0V4cChfMHgxOTQ5MzhbJ3NsaWNlJ10oMHgxLC0weDEpKTtyZXR1cm4gXzB4NDlkNzQyPT5fMHhjYjc4MDRbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4NDlkNzQyKTt9ZWxzZXtpZihfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJyonKXx8XzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCc/Jykpe2xldCBfMHg1MGZhMmY9bmV3IFJlZ0V4cCgnXicrXzB4MTk0OTM4W18weDVlNWQ1YygweDE3YildKC9cXFxcXFxcXC4vZyxTdHJpbmdbXzB4NWU1ZDVjKDB4MjRlKV0oMHg1YykrJy4nKVsncmVwbGFjZSddKC9cXFxcXFxcXCovZywnLionKVtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXFxcXFw/L2csJy4nKStTdHJpbmdbJ2Zyb21DaGFyQ29kZSddKDB4MjQpKTtyZXR1cm4gXzB4MWFlZmM0PT5fMHg1MGZhMmZbXzB4NWU1ZDVjKDB4MTg3KV0oXzB4MWFlZmM0KTt9ZWxzZSByZXR1cm4gXzB4NDZiY2Y2PT5fMHg0NmJjZjY9PT1fMHgxOTQ5Mzg7fX1sZXQgXzB4MjA1NDZmPV8weDE0Y2JmN1tfMHgyNmFjMmMoMHgyMjgpXShfMHg1OWQ5ZGUpO3JldHVybiBfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV09XzB4MjUxMjk1fHwhXzB4MTRjYmY3LCFfMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWM1KV0mJigoXzB4NWYwOTQyPV8weDI2NTVlM1snbG9jYXRpb24nXSk9PW51bGw/dm9pZCAweDA6XzB4NWYwOTQyW18weDI2YWMyYygweDFlNildKSYmKF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J109XzB4MjA1NDZmW18weDI2YWMyYygweDI0OCldKF8weDQzODViND0+XzB4NDM4NWI0KF8weDI2NTVlM1snbG9jYXRpb24nXVsnaG9zdG5hbWUnXSkpKSxfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO31mdW5jdGlvbiBYKF8weDIyY2NiMyxfMHgyYzczZGUsXzB4NGUxNzFiLF8weDM1ZmM2Myl7dmFyIF8weDQ3NGUyOD1fMHhiMzg0Nzk7XzB4MjJjY2IzPV8weDIyY2NiMyxfMHgyYzczZGU9XzB4MmM3M2RlLF8weDRlMTcxYj1fMHg0ZTE3MWIsXzB4MzVmYzYzPV8weDM1ZmM2MztsZXQgXzB4NDE1NDY4PUIoXzB4MjJjY2IzKSxfMHgzN2Y1NjE9XzB4NDE1NDY4W18weDQ3NGUyOCgweDFlOCldLF8weDU5MTU4Yj1fMHg0MTU0NjhbJ3RpbWVTdGFtcCddO2NsYXNzIF8weDQzMjhiY3tjb25zdHJ1Y3Rvcigpe3ZhciBfMHgxYWY2ZjY9XzB4NDc0ZTI4O3RoaXNbXzB4MWFmNmY2KDB4MjQ0KV09L14oPyEoPzpkb3xpZnxpbnxmb3J8bGV0fG5ld3x0cnl8dmFyfGNhc2V8ZWxzZXxlbnVtfGV2YWx8ZmFsc2V8bnVsbHx0aGlzfHRydWV8dm9pZHx3aXRofGJyZWFrfGNhdGNofGNsYXNzfGNvbnN0fHN1cGVyfHRocm93fHdoaWxlfHlpZWxkfGRlbGV0ZXxleHBvcnR8aW1wb3J0fHB1YmxpY3xyZXR1cm58c3RhdGljfHN3aXRjaHx0eXBlb2Z8ZGVmYXVsdHxleHRlbmRzfGZpbmFsbHl8cGFja2FnZXxwcml2YXRlfGNvbnRpbnVlfGRlYnVnZ2VyfGZ1bmN0aW9ufGFyZ3VtZW50c3xpbnRlcmZhY2V8cHJvdGVjdGVkfGltcGxlbWVudHN8aW5zdGFuY2VvZikkKVtfJGEtekEtWlxcXFxcXFxceEEwLVxcXFxcXFxcdUZGRkZdW18kYS16QS1aMC05XFxcXFxcXFx4QTAtXFxcXFxcXFx1RkZGRl0qJC8sdGhpc1snX251bWJlclJlZ0V4cCddPS9eKDB8WzEtOV1bMC05XSopJC8sdGhpc1tfMHgxYWY2ZjYoMHgxZjEpXT0vJyhbXlxcXFxcXFxcXFxcXFxcXFwnXXxcXFxcXFxcXFxcXFxcXFxcJykqJy8sdGhpc1tfMHgxYWY2ZjYoMHgyMTUpXT1fMHgyMmNjYjNbXzB4MWFmNmY2KDB4MjI0KV0sdGhpc1tfMHgxYWY2ZjYoMHgxYTUpXT1fMHgyMmNjYjNbXzB4MWFmNmY2KDB4MjA3KV0sdGhpc1tfMHgxYWY2ZjYoMHgyMDQpXT1PYmplY3RbXzB4MWFmNmY2KDB4MWI3KV0sdGhpc1snX2dldE93blByb3BlcnR5TmFtZXMnXT1PYmplY3RbXzB4MWFmNmY2KDB4MWMwKV0sdGhpc1tfMHgxYWY2ZjYoMHgyMjUpXT1fMHgyMmNjYjNbXzB4MWFmNmY2KDB4MWU3KV0sdGhpc1tfMHgxYWY2ZjYoMHgyM2EpXT1SZWdFeHBbJ3Byb3RvdHlwZSddW18weDFhZjZmNigweDFiNSldLHRoaXNbJ19kYXRlVG9TdHJpbmcnXT1EYXRlW18weDFhZjZmNigweDIyMCldWyd0b1N0cmluZyddO31bXzB4NDc0ZTI4KDB4MWNmKV0oXzB4NTA3MjFhLF8weDRjODI4YyxfMHg1ZTJmZmMsXzB4M2VmODMyKXt2YXIgXzB4NGViZDlkPV8weDQ3NGUyOCxfMHhmNjQ1OTU9dGhpcyxfMHhhMDE2MT1fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV07ZnVuY3Rpb24gXzB4MjQzMTA5KF8weDQwMDJiNyxfMHgzNGI1ZWMsXzB4NDc2NzQzKXt2YXIgXzB4NDY5NjY0PV8weDRlYmQ5ZDtfMHgzNGI1ZWNbJ3R5cGUnXT1fMHg0Njk2NjQoMHgxYzIpLF8weDM0YjVlY1tfMHg0Njk2NjQoMHgyMWIpXT1fMHg0MDAyYjdbXzB4NDY5NjY0KDB4MjM0KV0sXzB4MmEyMDEwPV8weDQ3Njc0M1tfMHg0Njk2NjQoMHgxYzEpXVtfMHg0Njk2NjQoMHgyMDMpXSxfMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV09XzB4MzRiNWVjLF8weGY2NDU5NVsnX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDM0YjVlYyxfMHg0NzY3NDMpO310cnl7XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFlYyldKyssXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWYzKV1bXzB4NGViZDlkKDB4MTllKV0oXzB4NGM4MjhjKTt2YXIgXzB4Nzg5Mjg2LF8weDRiM2EzYSxfMHgxMGE1OSxfMHg0MzI5NjYsXzB4M2I0OWIzPVtdLF8weDU3NTgwOD1bXSxfMHgyNWE0ODQsXzB4NDFlMTFkPXRoaXNbXzB4NGViZDlkKDB4MjYwKV0oXzB4NGM4MjhjKSxfMHgyNWUzNjY9XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWJiKSxfMHgyMjg4MzA9ITB4MSxfMHgzNTFhNDE9XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjEwKSxfMHg1M2UzMDM9dGhpc1tfMHg0ZWJkOWQoMHgxOWIpXShfMHg0MWUxMWQpLF8weDNlNDViMj10aGlzW18weDRlYmQ5ZCgweDE4MyldKF8weDQxZTExZCksXzB4MzQ1MDI4PV8weDUzZTMwM3x8XzB4M2U0NWIyLF8weDVjM2M4YT17fSxfMHgxY2JlMzY9MHgwLF8weDJlNmNmYz0hMHgxLF8weDJhMjAxMCxfMHgxMjgyMGE9L14oKFsxLTldezF9WzAtOV0qKXwwKSQvO2lmKF8weDVlMmZmY1snZGVwdGgnXSl7aWYoXzB4MjVlMzY2KXtpZihfMHg0YjNhM2E9XzB4NGM4MjhjW18weDRlYmQ5ZCgweDI0MSldLF8weDRiM2EzYT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjYyKV0pe2ZvcihfMHgxMGE1OT0weDAsXzB4NDMyOTY2PV8weDVlMmZmY1snZWxlbWVudHMnXSxfMHg3ODkyODY9XzB4MTBhNTk7XzB4Nzg5Mjg2PF8weDQzMjk2NjtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDc4OTI4NixfMHg1ZTJmZmMpKTtfMHg1MDcyMWFbXzB4NGViZDlkKDB4MTgwKV09ITB4MDt9ZWxzZXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg0YjNhM2EsXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7fV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXSs9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDI0MSldO31pZighKF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFmZCl8fF8weDQxZTExZD09PSd1bmRlZmluZWQnKSYmIV8weDUzZTMwMyYmXzB4NDFlMTFkIT09J1N0cmluZycmJl8weDQxZTExZCE9PSdCdWZmZXInJiZfMHg0MWUxMWQhPT1fMHg0ZWJkOWQoMHgyMzUpKXt2YXIgXzB4MjUyMTJiPV8weDNlZjgzMltfMHg0ZWJkOWQoMHgyNDcpXXx8XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI0NyldO2lmKHRoaXNbXzB4NGViZDlkKDB4MWE0KV0oXzB4NGM4MjhjKT8oXzB4Nzg5Mjg2PTB4MCxfMHg0YzgyOGNbXzB4NGViZDlkKDB4MWUxKV0oZnVuY3Rpb24oXzB4MzE2MjViKXt2YXIgXzB4YTExNDdkPV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWNiKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxYmEpXSYmXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldPl8weDVlMmZmY1tfMHhhMTE0N2QoMHgyNTApXSl7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31fMHg1NzU4MDhbXzB4YTExNDdkKDB4MTllKV0oXzB4ZjY0NTk1W18weGExMTQ3ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4YTExNDdkKDB4MjI3KSxfMHg3ODkyODYrKyxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTBkMTVhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTBkMTVhO307fShfMHgzMTYyNWIpKSk7fSkpOnRoaXNbXzB4NGViZDlkKDB4MjBjKV0oXzB4NGM4MjhjKSYmXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDM4MjRkZixfMHgzOTI2NWMpe3ZhciBfMHg4ZTk5ZTQ9XzB4NGViZDlkO2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHg4ZTk5ZTQoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO3JldHVybjt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmQnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPl8weDVlMmZmY1tfMHg4ZTk5ZTQoMHgyNTApXSl7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO312YXIgXzB4MTBkZDM0PV8weDM5MjY1Y1sndG9TdHJpbmcnXSgpO18weDEwZGQzNFtfMHg4ZTk5ZTQoMHgyNDEpXT4weDY0JiYoXzB4MTBkZDM0PV8weDEwZGQzNFsnc2xpY2UnXSgweDAsMHg2NCkrXzB4OGU5OWU0KDB4MWQwKSksXzB4NTc1ODA4W18weDhlOTllNCgweDE5ZSldKF8weGY2NDU5NVtfMHg4ZTk5ZTQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDhlOTllNCgweDI1YSksXzB4MTBkZDM0LF8weDVlMmZmYyxmdW5jdGlvbihfMHgxMzUxNTYpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfMHgxMzUxNTY7fTt9KF8weDM4MjRkZikpKTt9KSwhXzB4MjI4ODMwKXt0cnl7Zm9yKF8weDI1YTQ4NCBpbiBfMHg0YzgyOGMpaWYoIShfMHgyNWUzNjYmJl8weDEyODIwYVsndGVzdCddKF8weDI1YTQ4NCkpJiYhdGhpc1tfMHg0ZWJkOWQoMHgxNzkpXShfMHg0YzgyOGMsXzB4MjVhNDg0LF8weDVlMmZmYykpe2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO2JyZWFrO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNTApXSl7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbJ19hZGRPYmplY3RQcm9wZXJ0eSddKF8weDNiNDliMyxfMHg1YzNjOGEsXzB4NGM4MjhjLF8weDQxZTExZCxfMHgyNWE0ODQsXzB4NWUyZmZjKSk7fX1jYXRjaHt9aWYoXzB4NWMzYzhhW18weDRlYmQ5ZCgweDIxOSldPSEweDAsXzB4MzUxYTQxJiYoXzB4NWMzYzhhW18weDRlYmQ5ZCgweDFkOCldPSEweDApLCFfMHgyZTZjZmMpe3ZhciBfMHgxMTMzMjg9W11bXzB4NGViZDlkKDB4MjNjKV0odGhpc1tfMHg0ZWJkOWQoMHgyMzMpXShfMHg0YzgyOGMpKVsnY29uY2F0J10odGhpc1tfMHg0ZWJkOWQoMHgxZWQpXShfMHg0YzgyOGMpKTtmb3IoXzB4Nzg5Mjg2PTB4MCxfMHg0YjNhM2E9XzB4MTEzMzI4W18weDRlYmQ5ZCgweDI0MSldO18weDc4OTI4NjxfMHg0YjNhM2E7XzB4Nzg5Mjg2KyspaWYoXzB4MjVhNDg0PV8weDExMzMyOFtfMHg3ODkyODZdLCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbXzB4NGViZDlkKDB4MTg3KV0oXzB4MjVhNDg0W18weDRlYmQ5ZCgweDFiNSldKCkpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpJiYhXzB4NWMzYzhhW18weDRlYmQ5ZCgweDFlMikrXzB4MjVhNDg0W18weDRlYmQ5ZCgweDFiNSldKCldKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmQnXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNTApXSl7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fV8weDU3NTgwOFsncHVzaCddKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjYpXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319fX19aWYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFkNSldPV8weDQxZTExZCxfMHgzNDUwMjg/KF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbXzB4NGViZDlkKDB4MjJhKV0oKSx0aGlzWydfY2FwSWZTdHJpbmcnXShfMHg0MWUxMWQsXzB4NTA3MjFhLF8weDVlMmZmYyxfMHgzZWY4MzIpKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxYWMpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfZGF0ZVRvU3RyaW5nJ11bJ2NhbGwnXShfMHg0YzgyOGMpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIzNSk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPV8weDRjODI4Y1sndG9TdHJpbmcnXSgpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDE3YSk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbJ19yZWdFeHBUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxNzMpJiZ0aGlzW18weDRlYmQ5ZCgweDIyNSldP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzW18weDRlYmQ5ZCgweDIyNSldW18weDRlYmQ5ZCgweDIyMCldW18weDRlYmQ5ZCgweDFiNSldW18weDRlYmQ5ZCgweDIyZildKF8weDRjODI4Yyk6IV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyMjEpXSYmIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMjQpKSYmKGRlbGV0ZSBfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV0sXzB4NTA3MjFhW18weDRlYmQ5ZCgweDIwYildPSEweDApLF8weDJlNmNmYyYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYmUpXT0hMHgwKSxfMHgyYTIwMTA9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFjMSldW18weDRlYmQ5ZCgweDIwMyldLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVsnY3VycmVudCddPV8weDUwNzIxYSx0aGlzWydfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJ10oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NTc1ODA4W18weDRlYmQ5ZCgweDI0MSldKXtmb3IoXzB4Nzg5Mjg2PTB4MCxfMHg0YjNhM2E9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDI0MSldO18weDc4OTI4NjxfMHg0YjNhM2E7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDc4OTI4Nl0oXzB4Nzg5Mjg2KTt9XzB4M2I0OWIzW18weDRlYmQ5ZCgweDI0MSldJiYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDI0NyldPV8weDNiNDliMyk7fWNhdGNoKF8weDNjOTBjNyl7XzB4MjQzMTA5KF8weDNjOTBjNyxfMHg1MDcyMWEsXzB4NWUyZmZjKTt9cmV0dXJuIHRoaXNbXzB4NGViZDlkKDB4MWViKV0oXzB4NGM4MjhjLF8weDUwNzIxYSksdGhpc1tfMHg0ZWJkOWQoMHgxZDMpXShfMHg1MDcyMWEsXzB4NWUyZmZjKSxfMHg1ZTJmZmNbJ25vZGUnXVsnY3VycmVudCddPV8weDJhMjAxMCxfMHg1ZTJmZmNbJ2xldmVsJ10tLSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV09XzB4YTAxNjEsXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWYzKV1bJ3BvcCddKCksXzB4NTA3MjFhO31bJ19nZXRPd25Qcm9wZXJ0eVN5bWJvbHMnXShfMHgyMWY1NDgpe3ZhciBfMHgxYjAxYTE9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4MWIwMWExKDB4MjA2KV0/T2JqZWN0W18weDFiMDFhMSgweDIwNildKF8weDIxZjU0OCk6W107fVtfMHg0NzRlMjgoMHgxYTQpXShfMHgxNWIxYTcpe3ZhciBfMHgzNzA2NTM9XzB4NDc0ZTI4O3JldHVybiEhKF8weDE1YjFhNyYmXzB4MjJjY2IzW18weDM3MDY1MygweDIyNyldJiZ0aGlzW18weDM3MDY1MygweDIyYyldKF8weDE1YjFhNyk9PT1fMHgzNzA2NTMoMHgyMWUpJiZfMHgxNWIxYTdbXzB4MzcwNjUzKDB4MWUxKV0pO31bXzB4NDc0ZTI4KDB4MTc5KV0oXzB4NDVmYmVkLF8weDViODZkYixfMHgzNzZmM2Ype3ZhciBfMHgzMmZiMDM9XzB4NDc0ZTI4O3JldHVybiBfMHgzNzZmM2ZbXzB4MzJmYjAzKDB4MWIxKV0/dHlwZW9mIF8weDQ1ZmJlZFtfMHg1Yjg2ZGJdPT1fMHgzMmZiMDMoMHgyMTApOiEweDE7fVtfMHg0NzRlMjgoMHgyNjApXShfMHgyYjU2ZWMpe3ZhciBfMHgxZTAxNTI9XzB4NDc0ZTI4LF8weDM2YmRiNz0nJztyZXR1cm4gXzB4MzZiZGI3PXR5cGVvZiBfMHgyYjU2ZWMsXzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjRjKT90aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgxOGEpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYmIpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PV8weDFlMDE1MigweDIzZik/XzB4MzZiZGI3PV8weDFlMDE1MigweDFhYyk6dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09J1tvYmplY3RcXFxcXFxcXHgyMEJpZ0ludF0nP18weDM2YmRiNz0nYmlnaW50JzpfMHgyYjU2ZWM9PT1udWxsP18weDM2YmRiNz0nbnVsbCc6XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldJiYoXzB4MzZiZGI3PV8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXVtfMHgxZTAxNTIoMHgyMTYpXXx8XzB4MzZiZGI3KTpfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyMjQpJiZ0aGlzW18weDFlMDE1MigweDFhNSldJiZfMHgyYjU2ZWMgaW5zdGFuY2VvZiB0aGlzW18weDFlMDE1MigweDFhNSldJiYoXzB4MzZiZGI3PV8weDFlMDE1MigweDIwNykpLF8weDM2YmRiNzt9Wydfb2JqZWN0VG9TdHJpbmcnXShfMHhkNTY3NjQpe3ZhciBfMHg1YWJkMjM9XzB4NDc0ZTI4O3JldHVybiBPYmplY3RbXzB4NWFiZDIzKDB4MjIwKV1bXzB4NWFiZDIzKDB4MWI1KV1bXzB4NWFiZDIzKDB4MjJmKV0oXzB4ZDU2NzY0KTt9WydfaXNQcmltaXRpdmVUeXBlJ10oXzB4Yjg4ZDk3KXt2YXIgXzB4NTA2YWY0PV8weDQ3NGUyODtyZXR1cm4gXzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MjNlKXx8XzB4Yjg4ZDk3PT09J3N0cmluZyd8fF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDFhZCk7fVtfMHg0NzRlMjgoMHgxODMpXShfMHgyYjNiZmQpe3ZhciBfMHgzMDc5NTY9XzB4NDc0ZTI4O3JldHVybiBfMHgyYjNiZmQ9PT0nQm9vbGVhbid8fF8weDJiM2JmZD09PV8weDMwNzk1NigweDFkYSl8fF8weDJiM2JmZD09PSdOdW1iZXInO31bJ19hZGRQcm9wZXJ0eSddKF8weDM1ZjJhYyxfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKXt2YXIgXzB4MzE1N2YxPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKF8weDFmOGE3MSl7dmFyIF8weDE5YzNiOD1fMHgyNjkwLF8weDQwYmZmYz1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MjAzKV0sXzB4MTYyOGNmPV8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldLF8weDkzZWQ1Zj1fMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV07XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldWydwYXJlbnQnXT1fMHg0MGJmZmMsXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFkMSldPXR5cGVvZiBfMHg0YTJhYjE9PV8weDE5YzNiOCgweDFhZCk/XzB4NGEyYWIxOl8weDFmOGE3MSxfMHgzNWYyYWNbXzB4MTljM2I4KDB4MTllKV0oXzB4MzE1N2YxWydfcHJvcGVydHknXShfMHgyZjc1OWQsXzB4NDAzYmZiLF8weDRhMmFiMSxfMHgzODhkOTksXzB4MjQwNTllKSksXzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldPV8weDkzZWQ1ZixfMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXT1fMHgxNjI4Y2Y7fTt9W18weDQ3NGUyOCgweDFiNildKF8weGM4NGI5MyxfMHgzZTJmNDQsXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCl7dmFyIF8weDFkN2E1Zj1fMHg0NzRlMjgsXzB4Yjk2YTYwPXRoaXM7cmV0dXJuIF8weDNlMmY0NFtfMHgxZDdhNWYoMHgxZTIpK18weDRlMTQ4ZFtfMHgxZDdhNWYoMHgxYjUpXSgpXT0hMHgwLGZ1bmN0aW9uKF8weDVkNGM5NCl7dmFyIF8weDU0NjNkOT1fMHgxZDdhNWYsXzB4MzdmZDYyPV8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDIwMyldLF8weDJlOGNmNz1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWQxKV0sXzB4NDExZTY2PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsncGFyZW50J107XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFiZCldPV8weDM3ZmQ2MixfMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgxZDEpXT1fMHg1ZDRjOTQsXzB4Yzg0YjkzW18weDU0NjNkOSgweDE5ZSldKF8weGI5NmE2MFtfMHg1NDYzZDkoMHgyMjYpXShfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKSksXzB4MmVjZDVmWydub2RlJ11bJ3BhcmVudCddPV8weDQxMWU2NixfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ2luZGV4J109XzB4MmU4Y2Y3O307fVtfMHg0NzRlMjgoMHgyMjYpXShfMHgzMDkwMDQsXzB4MjdmOGY0LF8weDJkNDA2YSxfMHgzZDFlYjIsXzB4NWRjMTQ4KXt2YXIgXzB4MmY2N2MwPV8weDQ3NGUyOCxfMHgzZDIzNTE9dGhpcztfMHg1ZGMxNDh8fChfMHg1ZGMxNDg9ZnVuY3Rpb24oXzB4MTZlNWI0LF8weDlkNTk3OCl7cmV0dXJuIF8weDE2ZTViNFtfMHg5ZDU5NzhdO30pO3ZhciBfMHgxMjFkNzk9XzB4MmQ0MDZhWyd0b1N0cmluZyddKCksXzB4MTBhMzVmPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXXx8e30sXzB4NTg5NzQyPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSxfMHg4MmFiZjQ9XzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildO3RyeXt2YXIgXzB4MjVhNjJhPXRoaXNbXzB4MmY2N2MwKDB4MjBjKV0oXzB4MzA5MDA0KSxfMHgxN2JjYjU9XzB4MTIxZDc5O18weDI1YTYyYSYmXzB4MTdiY2I1WzB4MF09PT0nXFxcXFxcXFx4MjcnJiYoXzB4MTdiY2I1PV8weDE3YmNiNVsnc3Vic3RyJ10oMHgxLF8weDE3YmNiNVsnbGVuZ3RoJ10tMHgyKSk7dmFyIF8weDUzODU4MT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV09XzB4MTBhMzVmW18weDJmNjdjMCgweDFlMikrXzB4MTdiY2I1XTtfMHg1Mzg1ODEmJihfMHgzZDFlYjJbJ2RlcHRoJ109XzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldKzB4MSksXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPSEhXzB4NTM4NTgxO3ZhciBfMHg1N2E3NDI9dHlwZW9mIF8weDJkNDA2YT09XzB4MmY2N2MwKDB4MTczKSxfMHg0Mjg3Njc9eyduYW1lJzpfMHg1N2E3NDJ8fF8weDI1YTYyYT9fMHgxMjFkNzk6dGhpc1snX3Byb3BlcnR5TmFtZSddKF8weDEyMWQ3OSl9O2lmKF8weDU3YTc0MiYmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxNzMpXT0hMHgwKSwhKF8weDI3ZjhmND09PV8weDJmNjdjMCgweDFiYil8fF8weDI3ZjhmND09PSdFcnJvcicpKXt2YXIgXzB4MjdjMzdiPXRoaXNbXzB4MmY2N2MwKDB4MjA0KV0oXzB4MzA5MDA0LF8weDJkNDA2YSk7aWYoXzB4MjdjMzdiJiYoXzB4MjdjMzdiW18weDJmNjdjMCgweDFmYyldJiYoXzB4NDI4NzY3WydzZXR0ZXInXT0hMHgwKSxfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MjUyKV0mJiFfMHg1Mzg1ODEmJiFfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWRjKV0pKXJldHVybiBfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWY2KV09ITB4MCx0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDUzZGIzZjt0cnl7XzB4NTNkYjNmPV8weDVkYzE0OChfMHgzMDkwMDQsXzB4MmQ0MDZhKTt9Y2F0Y2goXzB4MTc1ZjZjKXtyZXR1cm4gXzB4NDI4NzY3PXsnbmFtZSc6XzB4MTIxZDc5LCd0eXBlJzpfMHgyZjY3YzAoMHgxYzIpLCdlcnJvcic6XzB4MTc1ZjZjW18weDJmNjdjMCgweDIzNCldfSx0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4M2NjZDA5PXRoaXNbXzB4MmY2N2MwKDB4MjYwKV0oXzB4NTNkYjNmKSxfMHg0OTU0NTc9dGhpc1tfMHgyZjY3YzAoMHgxOWIpXShfMHgzY2NkMDkpO2lmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZDUpXT1fMHgzY2NkMDksXzB4NDk1NDU3KXRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHgyOTQyNmE9XzB4MmY2N2MwO18weDQyODc2N1tfMHgyOTQyNmEoMHgxYWUpXT1fMHg1M2RiM2ZbXzB4Mjk0MjZhKDB4MjJhKV0oKSwhXzB4NTM4NTgxJiZfMHgzZDIzNTFbXzB4Mjk0MjZhKDB4MjQ5KV0oXzB4M2NjZDA5LF8weDQyODc2NyxfMHgzZDFlYjIse30pO30pO2Vsc2V7dmFyIF8weGQ4MGU2PV8weDNkMWViMlsnYXV0b0V4cGFuZCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWVjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTWF4RGVwdGgnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFmMyldWydpbmRleE9mJ10oXzB4NTNkYjNmKTwweDAmJl8weDNjY2QwOSE9PSdmdW5jdGlvbicmJl8weDNkMWViMltfMHgyZjY3YzAoMHgxN2MpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRMaW1pdCddO18weGQ4MGU2fHxfMHgzZDFlYjJbJ2xldmVsJ108XzB4NTg5NzQyfHxfMHg1Mzg1ODE/KHRoaXNbXzB4MmY2N2MwKDB4MWNmKV0oXzB4NDI4NzY3LF8weDUzZGIzZixfMHgzZDFlYjIsXzB4NTM4NTgxfHx7fSksdGhpc1tfMHgyZjY3YzAoMHgxZWIpXShfMHg1M2RiM2YsXzB4NDI4NzY3KSk6dGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHg1NDJkZTE9XzB4MmY2N2MwO18weDNjY2QwOT09PV8weDU0MmRlMSgweDFmZCl8fF8weDNjY2QwOT09PV8weDU0MmRlMSgweDIyNCl8fChkZWxldGUgXzB4NDI4NzY3W18weDU0MmRlMSgweDFhZSldLF8weDQyODc2N1tfMHg1NDJkZTEoMHgyMGIpXT0hMHgwKTt9KTt9cmV0dXJuIF8weDQyODc2Nzt9ZmluYWxseXtfMHgzZDFlYjJbJ2V4cHJlc3Npb25zVG9FdmFsdWF0ZSddPV8weDEwYTM1ZixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV09XzB4NTg5NzQyLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT1fMHg4MmFiZjQ7fX1bXzB4NDc0ZTI4KDB4MjQ5KV0oXzB4NGQxMTJlLF8weDQ1MWFlNSxfMHg1NmQ2MTAsXzB4M2JmNDhlKXt2YXIgXzB4Njc4MTY4PV8weDQ3NGUyOCxfMHhmOWQ3Nzc9XzB4M2JmNDhlW18weDY3ODE2OCgweDIxMildfHxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjEyKV07aWYoKF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFjYSl8fF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFkYSkpJiZfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pe2xldCBfMHgzYTAwZDQ9XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI0MSldO18weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXSs9XzB4M2EwMGQ0LF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXT5fMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MWE5KV0/KF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT0nJyxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTpfMHgzYTAwZDQ+XzB4ZjlkNzc3JiYoXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNTUpXSgweDAsXzB4ZjlkNzc3KSxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTt9fVtfMHg0NzRlMjgoMHgyMGMpXShfMHgxOWNiZTUpe3ZhciBfMHg0OWE0NTE9XzB4NDc0ZTI4O3JldHVybiEhKF8weDE5Y2JlNSYmXzB4MjJjY2IzWydNYXAnXSYmdGhpc1tfMHg0OWE0NTEoMHgyMmMpXShfMHgxOWNiZTUpPT09XzB4NDlhNDUxKDB4MTg2KSYmXzB4MTljYmU1Wydmb3JFYWNoJ10pO31bXzB4NDc0ZTI4KDB4MWNjKV0oXzB4NTcxZjZhKXt2YXIgXzB4Mzg0OTRlPV8weDQ3NGUyODtpZihfMHg1NzFmNmFbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFxcXFxcXGQrJC8pKXJldHVybiBfMHg1NzFmNmE7dmFyIF8weDJhYzFlMDt0cnl7XzB4MmFjMWUwPUpTT05bJ3N0cmluZ2lmeSddKCcnK18weDU3MWY2YSk7fWNhdGNoe18weDJhYzFlMD0nXFxcXFxcXFx4MjInK3RoaXNbXzB4Mzg0OTRlKDB4MjJjKV0oXzB4NTcxZjZhKSsnXFxcXFxcXFx4MjInO31yZXR1cm4gXzB4MmFjMWUwW18weDM4NDk0ZSgweDE5NildKC9eXFxcXFxcXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcXFxcXFxcIiQvKT9fMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDI1NSldKDB4MSxfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjQxKV0tMHgyKTpfMHgyYWMxZTA9XzB4MmFjMWUwW18weDM4NDk0ZSgweDE3YildKC8nL2csJ1xcXFxcXFxceDVjXFxcXFxcXFx4MjcnKVtfMHgzODQ5NGUoMHgxN2IpXSgvXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwiL2csJ1xcXFxcXFxceDIyJylbXzB4Mzg0OTRlKDB4MTdiKV0oLyheXFxcXFxcXCJ8XFxcXFxcXCIkKS9nLCdcXFxcXFxcXHgyNycpLF8weDJhYzFlMDt9W18weDQ3NGUyOCgweDI1OCldKF8weDRjZGYyNCxfMHg0NWRhMTIsXzB4MThlMTY3LF8weGVjM2Y2KXt2YXIgXzB4MWQxOWY1PV8weDQ3NGUyODt0aGlzW18weDFkMTlmNSgweDIyMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpLF8weGVjM2Y2JiZfMHhlYzNmNigpLHRoaXNbXzB4MWQxOWY1KDB4MWViKV0oXzB4MThlMTY3LF8weDRjZGYyNCksdGhpc1tfMHgxZDE5ZjUoMHgxZDMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKTt9W18weDQ3NGUyOCgweDIyMyldKF8weDQyODRiNCxfMHg1MDRjOGMpe3ZhciBfMHgyZWVmYzA9XzB4NDc0ZTI4O3RoaXNbXzB4MmVlZmMwKDB4MTc4KV0oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVRdWVyeVBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVQZXJtaXNzaW9ucyddKF8weDQyODRiNCxfMHg1MDRjOGMpO31bXzB4NDc0ZTI4KDB4MTc4KV0oXzB4M2QwZDQ1LF8weDM4NmJhNSl7fVsnX3NldE5vZGVRdWVyeVBhdGgnXShfMHgyZjgzMzAsXzB4NDU2NjYwKXt9W18weDQ3NGUyOCgweDFlMyldKF8weDU1OTZjMixfMHgzZjdhOTIpe31bXzB4NDc0ZTI4KDB4MTgyKV0oXzB4NzVjZWEpe3ZhciBfMHg1ODZiYWM9XzB4NDc0ZTI4O3JldHVybiBfMHg3NWNlYT09PXRoaXNbXzB4NTg2YmFjKDB4MjE1KV07fVtfMHg0NzRlMjgoMHgxZDMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKXt2YXIgXzB4NGRjYmZjPV8weDQ3NGUyODt0aGlzW18weDRkY2JmYygweDFlMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MTg4KV0oXzB4NDM0ZWM5KSxfMHgzNDQwOGVbXzB4NGRjYmZjKDB4MjQyKV0mJnRoaXNbXzB4NGRjYmZjKDB4MWY5KV0oXzB4NDM0ZWM5KSx0aGlzW18weDRkY2JmYygweDFiOCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbXzB4NGRjYmZjKDB4MjY0KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1snX2NsZWFuTm9kZSddKF8weDQzNGVjOSk7fVtfMHg0NzRlMjgoMHgxZWIpXShfMHg1OTlkMjQsXzB4NDEzMzU3KXt2YXIgXzB4MmQwZmM3PV8weDQ3NGUyODtsZXQgXzB4YzJkODQ3O3RyeXtfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV0mJihfMHhjMmQ4NDc9XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildLF8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXT1mdW5jdGlvbigpe30pLF8weDU5OWQyNCYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXT09XzB4MmQwZmM3KDB4MWFkKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNDEpXT1fMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV0pO31jYXRjaHt9ZmluYWxseXtfMHhjMmQ4NDcmJihfMHgyMmNjYjNbJ2NvbnNvbGUnXVsnZXJyb3InXT1fMHhjMmQ4NDcpO31pZihfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFhZCl8fF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWQ2KSl7aWYoaXNOYU4oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSlfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjRmKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3Wyd2YWx1ZSddO2Vsc2Ugc3dpdGNoKF8weDQxMzM1N1sndmFsdWUnXSl7Y2FzZSBOdW1iZXJbJ1BPU0lUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIyZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIE51bWJlclsnTkVHQVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjFkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgMHgwOnRoaXNbXzB4MmQwZmM3KDB4MjMwKV0oXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldKSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZmYpXT0hMHgwKTticmVhazt9fWVsc2UgXzB4NDEzMzU3W18weDJkMGZjNygweDFkNSldPT09XzB4MmQwZmM3KDB4MjEwKSYmdHlwZW9mIF8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXT09XzB4MmQwZmM3KDB4MWNhKSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildJiZfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSE9PV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxOWQpXT1fMHg1OTlkMjRbJ25hbWUnXSk7fVtfMHg0NzRlMjgoMHgyMzApXShfMHhkNTUzOWYpe3ZhciBfMHgyZWFlNjM9XzB4NDc0ZTI4O3JldHVybiAweDEvXzB4ZDU1MzlmPT09TnVtYmVyW18weDJlYWU2MygweDI1YyldO31bJ19zb3J0UHJvcHMnXShfMHgzODAyMzUpe3ZhciBfMHgxNDYxMzU9XzB4NDc0ZTI4OyFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV18fCFfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MjQxKV18fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDFiYil8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PV8weDE0NjEzNSgweDI1YSl8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgxZDUpXT09PSdTZXQnfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MjQ3KV1bXzB4MTQ2MTM1KDB4MWZiKV0oZnVuY3Rpb24oXzB4NDE0OTI4LF8weDE5NDVmYyl7dmFyIF8weDI2Njg5Mj1fMHgxNDYxMzUsXzB4MWI2NmI3PV8weDQxNDkyOFtfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpLF8weDUzMjhiYj1fMHgxOTQ1ZmNbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKTtyZXR1cm4gXzB4MWI2NmI3PF8weDUzMjhiYj8tMHgxOl8weDFiNjZiNz5fMHg1MzI4YmI/MHgxOjB4MDt9KTt9W18weDQ3NGUyOCgweDFiOCldKF8weDM2OWJmZixfMHgxZTFjNjgpe3ZhciBfMHgyNTc4ZTk9XzB4NDc0ZTI4O2lmKCEoXzB4MWUxYzY4W18weDI1NzhlOSgweDFiMSldfHwhXzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldfHwhXzB4MzY5YmZmWydwcm9wcyddWydsZW5ndGgnXSkpe2Zvcih2YXIgXzB4NDEyNGIwPVtdLF8weDVkOGMxMj1bXSxfMHgxYjAyZjc9MHgwLF8weDI5MTE0Zj1fMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MjQxKV07XzB4MWIwMmY3PF8weDI5MTE0ZjtfMHgxYjAyZjcrKyl7dmFyIF8weDRkYWQwNz1fMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV1bXzB4MWIwMmY3XTtfMHg0ZGFkMDdbXzB4MjU3OGU5KDB4MWQ1KV09PT1fMHgyNTc4ZTkoMHgyMTApP18weDQxMjRiMFtfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpOl8weDVkOGMxMltfMHgyNTc4ZTkoMHgxOWUpXShfMHg0ZGFkMDcpO31pZighKCFfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MjQxKV18fF8weDQxMjRiMFtfMHgyNTc4ZTkoMHgyNDEpXTw9MHgxKSl7XzB4MzY5YmZmWydwcm9wcyddPV8weDVkOGMxMjt2YXIgXzB4M2Y1MTNlPXsnZnVuY3Rpb25zTm9kZSc6ITB4MCwncHJvcHMnOl8weDQxMjRiMH07dGhpc1tfMHgyNTc4ZTkoMHgxNzgpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDFlMyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MTg4KV0oXzB4M2Y1MTNlKSx0aGlzW18weDI1NzhlOSgweDFkNyldKF8weDNmNTEzZSxfMHgxZTFjNjgpLF8weDNmNTEzZVsnaWQnXSs9J1xcXFxcXFxceDIwZicsXzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDFhMildKF8weDNmNTEzZSk7fX19WydfYWRkTG9hZE5vZGUnXShfMHgyNTFmZWEsXzB4MWM3YmVkKXt9W18weDQ3NGUyOCgweDE4OCldKF8weDQyMGM1ZSl7fVsnX2lzQXJyYXknXShfMHgxNzFkMzgpe3ZhciBfMHg0MTYyMzQ9XzB4NDc0ZTI4O3JldHVybiBBcnJheVsnaXNBcnJheSddKF8weDE3MWQzOCl8fHR5cGVvZiBfMHgxNzFkMzg9PV8weDQxNjIzNCgweDI0YykmJnRoaXNbJ19vYmplY3RUb1N0cmluZyddKF8weDE3MWQzOCk9PT1fMHg0MTYyMzQoMHgxOGEpO31bXzB4NDc0ZTI4KDB4MWQ3KV0oXzB4MzFiZGM0LF8weDUxNzliMSl7fVtfMHg0NzRlMjgoMHgyMzgpXShfMHg0ZTBlY2Mpe3ZhciBfMHg0MTIwNzk9XzB4NDc0ZTI4O2RlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjAyKV0sZGVsZXRlIF8weDRlMGVjY1snX2hhc1NldE9uSXRzUGF0aCddLGRlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjEzKV07fVsnX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDExYmVhNixfMHg0N2UwMzIpe319bGV0IF8weDNhNDU2ND1uZXcgXzB4NDMyOGJjKCksXzB4NDYwYjM2PXsncHJvcHMnOjB4NjQsJ2VsZW1lbnRzJzoweDY0LCdzdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ3RvdGFsU3RyTGVuZ3RoJzoweDQwMCoweDMyLCdhdXRvRXhwYW5kTGltaXQnOjB4MTM4OCwnYXV0b0V4cGFuZE1heERlcHRoJzoweGF9LF8weDE1ODY2YT17J3Byb3BzJzoweDUsJ2VsZW1lbnRzJzoweDUsJ3N0ckxlbmd0aCc6MHgxMDAsJ3RvdGFsU3RyTGVuZ3RoJzoweDEwMCoweDMsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxZSwnYXV0b0V4cGFuZE1heERlcHRoJzoweDJ9O2Z1bmN0aW9uIF8weDI4MTYyNChfMHgyMzkwMGIsXzB4NTk4YTRhLF8weDFiNTRhYyxfMHgyNTRiZDQsXzB4NTE0OGE0LF8weDRmYjk0MCl7dmFyIF8weDM1NjdjYz1fMHg0NzRlMjg7bGV0IF8weDJkYmUwMSxfMHg1NGU5ZmU7dHJ5e18weDU0ZTlmZT1fMHg1OTE1OGIoKSxfMHgyZGJlMDE9XzB4NGUxNzFiW18weDU5OGE0YV0sIV8weDJkYmUwMXx8XzB4NTRlOWZlLV8weDJkYmUwMVsndHMnXT4weDFmNCYmXzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldJiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0vXzB4MmRiZTAxWydjb3VudCddPDB4NjQ/KF8weDRlMTcxYltfMHg1OThhNGFdPV8weDJkYmUwMT17J2NvdW50JzoweDAsJ3RpbWUnOjB4MCwndHMnOl8weDU0ZTlmZX0sXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldPXt9KTpfMHg1NGU5ZmUtXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPjB4MzImJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsnY291bnQnXSYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildL18weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldPDB4NjQmJihfMHg0ZTE3MWJbJ2hpdHMnXT17fSk7bGV0IF8weDE3NGQxYT1bXSxfMHg1YTJkYjY9XzB4MmRiZTAxW18weDM1NjdjYygweDI0NildfHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjQ2KV0/XzB4MTU4NjZhOl8weDQ2MGIzNixfMHgzNjlmYjA9XzB4NDY1ZGM3PT57dmFyIF8weDFlNzk4Nz1fMHgzNTY3Y2M7bGV0IF8weDM1YjMxZT17fTtyZXR1cm4gXzB4MzViMzFlW18weDFlNzk4NygweDI0NyldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNDcpXSxfMHgzNWIzMWVbJ2VsZW1lbnRzJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDI2MildLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMTIpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjEyKV0sXzB4MzViMzFlWyd0b3RhbFN0ckxlbmd0aCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTkpXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRMaW1pdCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNTApXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWE4KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOCldLF8weDM1YjMxZVsnc29ydFByb3BzJ109ITB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWIxKV09IV8weDJjNzNkZSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjIxKV09MHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZWMpXT0weDAsXzB4MzViMzFlW18weDFlNzk4NygweDFkNCldPV8weDFlNzk4NygweDE3NCksXzB4MzViMzFlW18weDFlNzk4NygweDIwZSldPSdyb290X2V4cCcsXzB4MzViMzFlW18weDFlNzk4NygweDFiYSldPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDFmMyldPVtdLF8weDM1YjMxZVsnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT0weDAsXzB4MzViMzFlWydyZXNvbHZlR2V0dGVycyddPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDI2MyldPTB4MCxfMHgzNWIzMWVbJ25vZGUnXT17J2N1cnJlbnQnOnZvaWQgMHgwLCdwYXJlbnQnOnZvaWQgMHgwLCdpbmRleCc6MHgwfSxfMHgzNWIzMWU7fTtmb3IodmFyIF8weDU0NGUxZT0weDA7XzB4NTQ0ZTFlPF8weDUxNDhhNFsnbGVuZ3RoJ107XzB4NTQ0ZTFlKyspXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3RpbWVOb2RlJzpfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMzYpfHx2b2lkIDB4MH0sXzB4NTE0OGE0W18weDU0NGUxZV0sXzB4MzY5ZmIwKF8weDVhMmRiNikse30pKTtpZihfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgxYWIpfHxfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMWIpKXtsZXQgXzB4MTZiYzUwPUVycm9yW18weDM1NjdjYygweDE4OSldO3RyeXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT0weDEvMHgwLF8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeydzdGFja05vZGUnOiEweDB9LG5ldyBFcnJvcigpW18weDM1NjdjYygweDIwMSldLF8weDM2OWZiMChfMHg1YTJkYjYpLHsnc3RyTGVuZ3RoJzoweDEvMHgwfSkpO31maW5hbGx5e0Vycm9yW18weDM1NjdjYygweDE4OSldPV8weDE2YmM1MDt9fXJldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6XzB4MTc0ZDFhLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWNhdGNoKF8weDY1N2ZiMCl7cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpbeyd0eXBlJzpfMHgzNTY3Y2MoMHgxYzIpLCdlcnJvcic6XzB4NjU3ZmIwJiZfMHg2NTdmYjBbXzB4MzU2N2NjKDB4MjM0KV19XSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31maW5hbGx5e3RyeXtpZihfMHgyZGJlMDEmJl8weDU0ZTlmZSl7bGV0IF8weDU2OWUyYT1fMHg1OTE1OGIoKTtfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHgyZGJlMDFbJ3RzJ109XzB4NTY5ZTJhLF8weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldKyssXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPV8weDU2OWUyYSwoXzB4MmRiZTAxWydjb3VudCddPjB4MzJ8fF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXT4weDY0KSYmKF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXT0hMHgwKSwoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDFmYSldPjB4M2U4fHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RpbWUnXT4weDEyYykmJihfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3JlZHVjZUxpbWl0cyddPSEweDApO319Y2F0Y2h7fX19cmV0dXJuIF8weDI4MTYyNDt9KChfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDI2YTY5OSxfMHg1NmFkNTIsXzB4Y2YxMzI1LF8weDQ1ZGNjYyxfMHgxNWNjNmIsXzB4NGI1MDdmKT0+e3ZhciBfMHgxMjhjMzY9XzB4YjM4NDc5O2lmKF8weDIyM2QzN1snX2NvbnNvbGVfbmluamEnXSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2lmKCFIKF8weDIyM2QzNyxfMHhjZjEzMjUsXzB4NWYyYzZkKSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KCk9Pnt9LCdjb25zb2xlVHJhY2UnOigpPT57fSwnY29uc29sZVRpbWUnOigpPT57fSwnY29uc29sZVRpbWVFbmQnOigpPT57fSwnYXV0b0xvZyc6KCk9Pnt9LCdhdXRvTG9nTWFueSc6KCk9Pnt9LCdhdXRvVHJhY2VNYW55JzooKT0+e30sJ2NvdmVyYWdlJzooKT0+e30sJ2F1dG9UcmFjZSc6KCk9Pnt9LCdhdXRvVGltZSc6KCk9Pnt9LCdhdXRvVGltZUVuZCc6KCk9Pnt9fSxfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07bGV0IF8weDRjODg5ND1CKF8weDIyM2QzNyksXzB4NGZjZTcwPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZTgpXSxfMHhmMDRlM2Y9XzB4NGM4ODk0W18weDEyOGMzNigweDE3ZCldLF8weDM0ZGJkMj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWVmKV0sXzB4NTUzMWUwPXsnaGl0cyc6e30sJ3RzJzp7fX0sXzB4NThmMWNkPVgoXzB4MjIzZDM3LF8weDQ1ZGNjYyxfMHg1NTMxZTAsXzB4MjZhNjk5KSxfMHgyYjhiMGY9XzB4M2ZhYzc4PT57XzB4NTUzMWUwWyd0cyddW18weDNmYWM3OF09XzB4ZjA0ZTNmKCk7fSxfMHg5NWEwMmY9KF8weDE0MzViOSxfMHgzNGZmOTIpPT57bGV0IF8weDEyNGQyZT1fMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXTtpZihkZWxldGUgXzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml0sXzB4MTI0ZDJlKXtsZXQgXzB4NTliMDQ1PV8weDRmY2U3MChfMHgxMjRkMmUsXzB4ZjA0ZTNmKCkpO18weDUwNjM5ZihfMHg1OGYxY2QoJ3RpbWUnLF8weDE0MzViOSxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDU5YjA0NV0sXzB4MzRmZjkyKSk7fX0sXzB4M2MyZjIzPV8weDEzYmY3Yj0+e3ZhciBfMHg0NTdmNmI9XzB4MTI4YzM2LF8weDM0ZWI3YjtyZXR1cm4gXzB4NWYyYzZkPT09XzB4NDU3ZjZiKDB4MWRlKSYmXzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldJiYoKF8weDM0ZWI3Yj1fMHgxM2JmN2I9PW51bGw/dm9pZCAweDA6XzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldKT09bnVsbD92b2lkIDB4MDpfMHgzNGViN2JbXzB4NDU3ZjZiKDB4MjQxKV0pJiYoXzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldWzB4MF1bXzB4NDU3ZjZiKDB4MWRkKV09XzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldKSxfMHgxM2JmN2I7fTtfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooXzB4NWNhZmQ4LF8weDQ4N2NmNik9Pnt2YXIgXzB4NTUxODljPV8weDEyOGMzNjtfMHgyMjNkMzdbJ2NvbnNvbGUnXVtfMHg1NTE4OWMoMHgyNTEpXVtfMHg1NTE4OWMoMHgyMTYpXSE9PV8weDU1MTg5YygweDE5NCkmJl8weDUwNjM5ZihfMHg1OGYxY2QoXzB4NTUxODljKDB4MjUxKSxfMHg1Y2FmZDgsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ4N2NmNikpO30sJ2NvbnNvbGVUcmFjZSc6KF8weDVlNjQ3MyxfMHgzZDM1YzgpPT57dmFyIF8weDU2MTkwNj1fMHgxMjhjMzYsXzB4MTM5MWViLF8weDJiYjA2NTtfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MjVlKV1bJ2xvZyddWyduYW1lJ10hPT0nZGlzYWJsZWRUcmFjZScmJigoXzB4MmJiMDY1PShfMHgxMzkxZWI9XzB4MjIzZDM3W18weDU2MTkwNigweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxMzkxZWJbXzB4NTYxOTA2KDB4MjRkKV0pIT1udWxsJiZfMHgyYmIwNjVbXzB4NTYxOTA2KDB4MWMxKV0mJihfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MTkyKV09ITB4MCksXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoJ3RyYWNlJyxfMHg1ZTY0NzMsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDNkMzVjOCkpKSk7fSwnY29uc29sZUVycm9yJzooXzB4NDhmMjM0LF8weDUwYWNiNSk9Pnt2YXIgXzB4M2FjOTMwPV8weDEyOGMzNjtfMHgyMjNkMzdbXzB4M2FjOTMwKDB4MTkyKV09ITB4MCxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzYWM5MzAoMHgyMWIpLF8weDQ4ZjIzNCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NTBhY2I1KSkpO30sJ2NvbnNvbGVUaW1lJzpfMHgzYjQ1Mjg9PntfMHgyYjhiMGYoXzB4M2I0NTI4KTt9LCdjb25zb2xlVGltZUVuZCc6KF8weDFkMmExYSxfMHg4ZmVjZDcpPT57XzB4OTVhMDJmKF8weDhmZWNkNyxfMHgxZDJhMWEpO30sJ2F1dG9Mb2cnOihfMHgyMDI2ODMsXzB4MmNmZTViKT0+e18weDUwNjM5ZihfMHg1OGYxY2QoJ2xvZycsXzB4MmNmZTViLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MjAyNjgzXSkpO30sJ2F1dG9Mb2dNYW55JzooXzB4NGI2YzQ3LF8weDQ1MGI2Nik9Pnt2YXIgXzB4NDczODAyPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4NThmMWNkKF8weDQ3MzgwMigweDI1MSksXzB4NGI2YzQ3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0NTBiNjYpKTt9LCdhdXRvVHJhY2UnOihfMHgzMmE3NixfMHgxNGJjMTIpPT57dmFyIF8weDU3Y2Y4YT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4NTdjZjhhKDB4MWFiKSxfMHgxNGJjMTIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgzMmE3Nl0pKSk7fSwnYXV0b1RyYWNlTWFueSc6KF8weGUzNjBmNyxfMHgzM2MwZTIpPT57dmFyIF8weDNkYjAwZT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2RiMDBlKDB4MWFiKSxfMHhlMzYwZjcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDMzYzBlMikpKTt9LCdhdXRvVGltZSc6KF8weGQyMzc0OSxfMHgxZWYyZDgsXzB4NDExNmRiKT0+e18weDJiOGIwZihfMHg0MTE2ZGIpO30sJ2F1dG9UaW1lRW5kJzooXzB4MTRkNTkyLF8weDU5ZWZlNyxfMHgxMWY3YWMpPT57XzB4OTVhMDJmKF8weDU5ZWZlNyxfMHgxMWY3YWMpO30sJ2NvdmVyYWdlJzpfMHgyMDc0MmE9Pnt2YXIgXzB4NjQ0ODk3PV8weDEyOGMzNjtfMHg1MDYzOWYoeydtZXRob2QnOl8weDY0NDg5NygweDFiMiksJ3ZlcnNpb24nOl8weDI2YTY5OSwnYXJncyc6W3snaWQnOl8weDIwNzQyYX1dfSk7fX07bGV0IF8weDUwNjM5Zj1xKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MTVjYzZiLF8weDRiNTA3ZiksXzB4NTI5MDM0PV8weDIyM2QzN1tfMHgxMjhjMzYoMHgyNjEpXTtyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO30pKGdsb2JhbFRoaXMsXzB4YjM4NDc5KDB4MThlKSxfMHhiMzg0NzkoMHgxZGYpLF8weGIzODQ3OSgweDI1YiksXzB4YjM4NDc5KDB4MWVlKSxfMHhiMzg0NzkoMHgyM2QpLF8weGIzODQ3OSgweDI0YSksXzB4YjM4NDc5KDB4MTk3KSxfMHhiMzg0NzkoMHgxY2UpLCcnLCcxJyk7XFxcIik7fWNhdGNoKGUpe319Oy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fb28oaTpzdHJpbmcsLi4udjphbnlbXSl7dHJ5e29vX2NtKCkuY29uc29sZUxvZyhpLCB2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdn07b29fb287LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb190cihpOnN0cmluZywuLi52OmFueVtdKXt0cnl7b29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7fWNhdGNoKGUpe30gcmV0dXJuIHZ9O29vX3RyOy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fdHgoaTpzdHJpbmcsLi4udjphbnlbXSl7dHJ5e29vX2NtKCkuY29uc29sZUVycm9yKGksIHYpO31jYXRjaChlKXt9IHJldHVybiB2fTtvb190eDsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3RzKHY/OnN0cmluZyk6c3RyaW5ne3RyeXtvb19jbSgpLmNvbnNvbGVUaW1lKHYpO31jYXRjaChlKXt9IHJldHVybiB2IGFzIHN0cmluZzt9O29vX3RzOy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fdGUodjpzdHJpbmd8dW5kZWZpbmVkLCBpOnN0cmluZyk6c3RyaW5ne3RyeXtvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO31jYXRjaChlKXt9IHJldHVybiB2IGFzIHN0cmluZzt9O29vX3RlOy8qZXNsaW50IHVuaWNvcm4vbm8tYWJ1c2l2ZS1lc2xpbnQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL2Rpc2FibGUtZW5hYmxlLXBhaXI6LGVzbGludC1jb21tZW50cy9uby11bmxpbWl0ZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWFnZ3JlZ2F0aW5nLWVuYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWR1cGxpY2F0ZS1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZW5hYmxlOiwqLzwvc2NyaXB0PlxcblxcbjxzdHlsZSBzY29wZWQ+XFxuLnYtZW50ZXItYWN0aXZlLFxcbi52LWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG5cXG4udi1lbnRlci1mcm9tLFxcbi52LWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLnYtZW50ZXItYWN0aXZlW2RhdGEtdi1mZDA1NDJjMl0sXFxuLnYtbGVhdmUtYWN0aXZlW2RhdGEtdi1mZDA1NDJjMl0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuLnYtZW50ZXItZnJvbVtkYXRhLXYtZmQwNTQyYzJdLFxcbi52LWxlYXZlLXRvW2RhdGEtdi1mZDA1NDJjMl0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG59XFxuLnNsaWRlLWVudGVyLWFjdGl2ZVtkYXRhLXYtZmQwNTQyYzJdLFxcbi5zbGlkZS1sZWF2ZS1hY3RpdmVbZGF0YS12LWZkMDU0MmMyXSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xcbn1cXG4uc2xpZGUtZW50ZXItZnJvbVtkYXRhLXYtZmQwNTQyYzJdLFxcbi5zbGlkZS1sZWF2ZS10b1tkYXRhLXYtZmQwNTQyYzJdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQThkQTs7RUFFRSx5QkFBeUI7QUFDM0I7QUFFQTs7RUFFRSxVQUFVO0VBQ1YsMkJBQTJCO0FBQzdCO0FBRUE7O0VBRUUseUJBQXlCO0FBQzNCO0FBRUE7O0VBRUUsVUFBVTtFQUNWLDJCQUEyQjtBQUM3QlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8IS0tIGVzbGludC1kaXNhYmxlIHZ1ZS9uby12LWh0bWwgLS0+XFxuPHRlbXBsYXRlPlxcbiAgPFRvYXN0TWVzc2FnZVxcbiAgICB2LWlmPVxcXCJ0b2FzdFZpc2liaWxpdHlcXFwiXFxuICAgIGNsYXNzPVxcXCJ0b2FzdCBmaXhlZCB0b3AtMTAgcmlnaHQtMTBcXFwiXFxuICAgIDptZXNzYWdlPVxcXCJ0b2FzdE1lc3NhZ2VcXFwiXFxuICAgIDp0eXBlPVxcXCJ0b2FzdFR5cGVcXFwiXFxuICAvPlxcblxcbiAgPExvYWRlciB2LWlmPVxcXCJpc0xvYWRlclZpc2libGVcXFwiIC8+XFxuXFxuICA8ZGl2IHYtaWY9XFxcIiFwcm9wcy5zdGF0dXNcXFwiPlxcbiAgICA8ZGl2IHYtaWY9XFxcIiFpc1NhdmluZ1xcXCI+XFxuICAgICAgPCEtLSBFcnJvciAtLT5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJoYXNFcnJvclxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGdhcC0yIGJvcmRlci1sLVszcHhdIGJvcmRlci1jcmltc29uLTQwIGJnLXJvc2UgcHktWzEwcHhdIHB4LVsxNHB4XVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2PlxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LVsyMnB4XVxcXCJcXG4gICAgICAgICAgICBpY29uPVxcXCJleGNsYW1hdGlvbi13YXJuaW5nLWZpbGxcXFwiXFxuICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQteHMgbGVhZGluZy1bMjBweF0gdHJhY2tpbmctWy0yJV1cXFwiPlxcbiAgICAgICAgICA8cCBjbGFzcz1cXFwiZm9udC1ib2xkXFxcIj5WZXJpZmljYXRpb24gUmVxdWlyZWQ8L3A+XFxuICAgICAgICAgIDx1bCBjbGFzcz1cXFwibGlzdC1kaXNjXFxcIj5cXG4gICAgICAgICAgICA8bGlcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIobWVzc2FnZSwgaW5kZXgpIGluIGVycm9yTWVzc2FnZXNcXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0cmFuc2xhdGUteC0zXFxcIlxcbiAgICAgICAgICAgICAgdi1odG1sPVxcXCJtZXNzYWdlXFxcIlxcbiAgICAgICAgICAgID48L2xpPlxcbiAgICAgICAgICA8L3VsPlxcbiAgICAgICAgICA8ZW0+XFxuICAgICAgICAgICAgWW91IGNhbiBza2lwIHRoaXMgc3RlcCBmb3Igbm93IGFuZCBjb21lIGJhY2sgdG8gaXQgb25jZSB5b3VyIGFjY291bnRcXG4gICAgICAgICAgICBoYXMgYmVlbiB2ZXJpZmllZC5cXG4gICAgICAgICAgPC9lbT5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcblxcbiAgICAgIDwhLS0gT3JnYW5pemF0aW9uIERhdGEgUHVibGlzaCAtLT5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGgzIGNsYXNzPVxcXCJwYi1bMnB4XSB0ZXh0LVsyMHB4XSBmb250LWJvbGQgbGVhZGluZy05IHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgIFB1Ymxpc2ggT3JnYW5pc2F0aW9uIERhdGFcXG4gICAgICAgIDwvaDM+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtXFxcIj5cXG4gICAgICAgICAgUmV2aWV3IHRoZSBiYXNpYyBpbmZvcm1hdGlvbiBvbiB5b3VyIG9yZ2FuaXNhdGlvbiBhbmQgcHVibGlzaCBpdC5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwibXQtMyByb3VuZGVkLWxnIGJnLW4tMTAgcHQtWzIwcHhdIHBsLVsyN3B4XSBwYi1bMjBweF1cXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwieyAnbWF4LWgtWzI3MHB4XSBvdmVyZmxvdy15LWF1dG8nOiBoYXNFcnJvciB9XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJib3JkZXItYiBib3JkZXItbi0yMCBweS00XFxcIj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZm9udC1ib2xkXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LWJhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgICAgICAgIGljb249XFxcIm9yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZ1xcXCJcXG4gICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibWwtMSBtci1bMTBweF1cXFwiPnJlcG9ydGluZy1vcmdhbmlzYXRpb248L3NwYW4+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlIHRleHQtY2FtZWwtNTBcXFwiIGljb249XFxcImNvcmVcXFwiPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwdC1bMThweF0gcHItNVxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPnJlcG9ydGluZy1vcmc8L3A+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC14cyB0ZXh0LW4tNTBcXFwiPkhlbHA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICBuYW1lPVxcXCJyZXBvcnRpbmctb3JnXFxcIlxcbiAgICAgICAgICAgICAgICAgIGhvdmVyLXRleHQ9XFxcIlRoZSBvcmdhbmlzYXRpb24gaXNzdWluZyB0aGUgcmVwb3J0LiBNYXkgYmUgYSBwcmltYXJ5IHNvdXJjZSAocmVwb3J0aW5nIG9uIGl0cyBvd24gYWN0aXZpdHkgYXMgZG9ub3IsIGltcGxlbWVudGluZyBhZ2VuY3ksIGV0Yykgb3IgYSBzZWNvbmRhcnkgc291cmNlIChyZXBvcnRpbmcgb24gdGhlIGFjdGl2aXRpZXMgb2YgYW5vdGhlciBvcmdhbmlzYXRpb24pLlxcXCJcXG4gICAgICAgICAgICAgICAgICA6c2hvdy1pYXRpLXJlZmVyZW5jZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICBsaW5rPVxcXCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvb3JnYW5pc2F0aW9uLXN0YW5kYXJkL2lhdGktb3JnYW5pc2F0aW9ucy9pYXRpLW9yZ2FuaXNhdGlvbi9yZXBvcnRpbmctb3JnL1xcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIHB0LTRcXFwiPlxcbiAgICAgICAgICAgICAgPCEtLSBSZWZlcmVuY2UgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcInJlZmVyZW5jZVxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZVxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInJlcXVpcmVkLWljb25cXFwiPiAqPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwicmVmZXJlbmNlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJNYWNoaW5lLXJlYWRhYmxlIGlkZW50aWZpY2F0aW9uIHN0cmluZyBmb3IgdGhlIG9yZ2FuaXNhdGlvbiBpc3N1aW5nIHRoZSByZXBvcnQuIE11c3QgYmUgaW4gdGhlIGZvcm1hdCB7UmVnaXN0cmF0aW9uQWdlbmN5fS17UmVnaXN0cmF0aW9uTnVtYmVyfS5cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWlhdGktcmVmZXJlbmNlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rPVxcXCJodHRwczovL2lhdGlzdGFuZGFyZC5vcmcvZW4vaWF0aS1zdGFuZGFyZC8yMDMvb3JnYW5pc2F0aW9uLXN0YW5kYXJkL2lhdGktb3JnYW5pc2F0aW9ucy9pYXRpLW9yZ2FuaXNhdGlvbi9yZXBvcnRpbmctb3JnL1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwicmVmZXJlbmNlXFxcIlxcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcIm9yZ2FuaXphdGlvbkRhdGEucmVmXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZC1bNHB4XSBib3JkZXIgYm9yZGVyLW4tMjAgcHktMiBwbC00IGZvY3VzOm91dGxpbmUtMCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMFxcXCJcXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ2JvcmRlci1jcmltc29uLTUwJzogaGFzUmVmZXJlbmNlRXJyb3IgfVxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJUeXBlIHJlZmVyZW5jZVxcXCJcXG4gICAgICAgICAgICAgICAgICBAa2V5dXA9XFxcImhhc1JlZmVyZW5jZUVycm9yID0gZmFsc2VcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImhhc1JlZmVyZW5jZUVycm9yXFxcIiBjbGFzcz1cXFwidGV4dC1kYW5nZXIgZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlRXJyb3JNZXNzYWdlXFxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93SGVscChgcmVmZXJlbmNlYClcXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICBIZWxwXFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICA8IS0tIFR5cGUgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1iZXR3ZWVuIHBiLTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcInR5cGVcXFwiIGNsYXNzPVxcXCJ0ZXh0LVsxNHB4XVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICB0eXBlXFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicmVxdWlyZWQtaWNvblxcXCI+ICo8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVxcXCJ0eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJUaGUgdHlwZSBvZiBvcmdhbmlzYXRpb24gaXNzdWluZyB0aGUgcmVwb3J0LlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGxpbms9XFxcImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9pYXRpLXN0YW5kYXJkLzIwMy9vcmdhbmlzYXRpb24tc3RhbmRhcmQvaWF0aS1vcmdhbmlzYXRpb25zL2lhdGktb3JnYW5pc2F0aW9uL3JlcG9ydGluZy1vcmcvXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJ0eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ2dWVfX3NlbGVjdFxcXCJcXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VsZWN0IEB0eXBlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJwcm9wcy5vcmdhbml6YXRpb25UeXBlT3B0aW9uc1xcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcIm9yZ2FuaXphdGlvbkRhdGEudHlwZVxcXCJcXG4gICAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVxcXCJcXG4gICAgICAgICAgICAgICAgKHZhbHVlOnN0cmluZykgPT4gKG9yZ2FuaXphdGlvbkRhdGEudHlwZSA9IHZhbHVlKVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInB0LTIgdGV4dC14cyB0ZXh0LW4tNDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93SGVscChgdHlwZWApXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgSGVscFxcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgPCEtLSBTZWNvbmRhcnkgcmVwb3J0ZXIgLS0+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LWZ1bGwgbWF4LXctWzMzNXB4XSBwdC02XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcGItMlxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwic2Vjb25kYXJ5LXJlcG9ydGVyXFxcIiBjbGFzcz1cXFwidGV4dC1bMTRweF1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5LXJlcG9ydGVyXFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgPEhvdmVyVGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cXFwidG9wLWxlZnRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XFxcInNlY29uZGFyeS1yZXBvcnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXItdGV4dD1cXFwiQSBmbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgcmVwb3J0aW5nIG9yZ2FuaXNhdGlvbiBvZiB0aGlzIGFjdGl2aXR5IGlzIGFjdGluZyBhcyBhIHNlY29uZGFyeSByZXBvcnRlci4gQSBzZWNvbmRhcnkgcmVwb3J0ZXIgaXMgb25lIHRoYXQgcmVwcm9kdWNlcyBkYXRhIG9uIHRoZSBhY3Rpdml0aWVzIG9mIGFuIG9yZ2FuaXNhdGlvbiBmb3Igd2hpY2ggaXQgaXMgbm90IGRpcmVjdGx5IHJlc3BvbnNpYmxlLlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGxpbms9XFxcImh0dHBzOi8vaWF0aXN0YW5kYXJkLm9yZy9lbi9pYXRpLXN0YW5kYXJkLzIwMy9vcmdhbmlzYXRpb24tc3RhbmRhcmQvaWF0aS1vcmdhbmlzYXRpb25zL2lhdGktb3JnYW5pc2F0aW9uL3JlcG9ydGluZy1vcmcvXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICAgIGlkPVxcXCJzZWNvbmRhcnktcmVwb3J0ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInZ1ZV9fc2VsZWN0XFxcIlxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3Qgc2Vjb25kYXJ5LXJlcG9ydGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJzZWNvbmRhcnlSZXBvcnRlck9wdGlvbnNcXFwiXFxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJvcmdhbml6YXRpb25EYXRhLnNlY29uZGFyeV9yZXBvcnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVxcXCJcXG4gICAgICAgICAgICAgICAgKHZhbHVlOnN0cmluZykgPT4gKG9yZ2FuaXphdGlvbkRhdGEuc2Vjb25kYXJ5X3JlcG9ydGVyID0gdmFsdWUpXFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicHQtMiB0ZXh0LXhzIHRleHQtbi00MCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNob3dIZWxwKGBzZWNvbmRhcnktcmVwb3J0ZXJgKVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIEhlbHBcXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHB0LTMgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJtZXNzYWdlLWljb25cXFwiIC8+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIFlvdSBjYW4gYWRqdXN0IHRoZXNlIHZhbHVlcyBsYXRlciBmcm9tIHRoZSAnT3JnYW5pc2F0aW9uIERhdGEnXFxuICAgICAgICAgICAgc2VjdGlvbi5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwibXQtMyBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgIDxidXR0b24gY2xhc3M9XFxcInRleHQteHMgZm9udC1ib2xkIHRleHQtbi00MFxcXCIgQGNsaWNrPVxcXCJwcmV2aW91c1N0ZXBcXFwiPlxcbiAgICAgICAgICBQcmV2aW91c1xcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwidGV4dC14cyBmb250LWJvbGQgdGV4dC1uLTQwXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiZW1pdCgncHJvY2VlZFN0ZXAnKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIFNraXAgdG8gbmV4dCBzdGVwXFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14c1xcXCIgQGNsaWNrPVxcXCJwcm9jZWVkU3RlcFxcXCI+XFxuICAgICAgICAgICAgUHVibGlzaCBhbmQgTkVYVFxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxUcmFuc2l0aW9uIG5hbWU9XFxcInNsaWRlXFxcIiBtb2RlPVxcXCJvdXQtaW5cXFwiPlxcbiAgICAgICAgPFNpZGVIZWxwVGV4dFxcbiAgICAgICAgICA6dGl0bGU9XFxcImhlbHBUaXRsZVxcXCJcXG4gICAgICAgICAgOmNvbnRlbnQ9XFxcImhlbHBDb250ZW50XFxcIlxcbiAgICAgICAgICA6dmlzaWJsZT1cXFwiaGVscFZpc2libGVcXFwiXFxuICAgICAgICAgIEBjbG9zZT1cXFwiaGVscFZpc2libGUgPSBmYWxzZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9UcmFuc2l0aW9uPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiB2LWVsc2U+XFxuICAgICAgPGRpdlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggbWluLWgtWzM2MHB4XSBtaW4tdy1bNzMzcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJnLW4tMTBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPFRyYW5zaXRpb24gbW9kZT1cXFwib3V0LWluXFxcIj5cXG4gICAgICAgICAgPGRpdiB2LWlmPVxcXCIhaXNTYXZlZFxcXCIgY2xhc3M9XFxcInJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICA8TGluZXNMb2FkZXIgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICB2LWVsc2VcXG4gICAgICAgICAgICBjbGFzcz1cXFwibXQtMyBmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTJcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJncmVlbi1jaXJjbGUtdGlja1xcXCIgY2xhc3M9XFxcInRleHQtWzQxcHhdXFxcIiAvPlxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzIwMHB4XSB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgICAgID5PcmdhbmlzYXRpb24gZGF0YSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLjwvc3BhblxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L1RyYW5zaXRpb24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuXFxuICA8ZGl2IHYtZWxzZSBjbGFzcz1cXFwiaC1mdWxsIG1pbi13LVs3MzNweF0gcHQtWzEzMHB4XVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaC1mdWxsIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1uLTEwIHB5LVs2MHB4XSBweC1bNzNweF1cXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJncmVlbi1jaXJjbGUtdGlja1xcXCIgY2xhc3M9XFxcInRleHQtWzM0cHhdXFxcIiAvPlxcbiAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgIDxoMiBjbGFzcz1cXFwibWF4LXctWzY5M3B4XSBweS1bNS40cHhdIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgT3JnYW5pc2F0aW9uIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC5cXG4gICAgICAgICAgICA8L2gyPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYXgtdy1bNTg3cHhdIHRleHQtc20gdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIG1ha2UgY2hhbmdlcywgZ28gdG9cXG4gICAgICAgICAgICAgIDxhIGhyZWY9XFxcIi9vcmdhbmlzYXRpb25cXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5PcmdhbmlzYXRpb24gZGF0YTwvYT4uXFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLVszMHB4XSBzZWxmLWVuZFxcXCI+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14c1xcXCIgQGNsaWNrPVxcXCJlbWl0KGBwcm9jZWVkU3RlcGApXFxcIj5cXG4gICAgICAgICAgTkVYVFxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVFbWl0cywgZGVmaW5lUHJvcHMsIHJlZiB9IGZyb20gJ3Z1ZSc7XFxuXFxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJ0B2dWVmb3JtL211bHRpc2VsZWN0JztcXG5pbXBvcnQgSG92ZXJUZXh0IGZyb20gJ0NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZSc7XFxuaW1wb3J0IFNpZGVIZWxwVGV4dCBmcm9tICdDb21wb25lbnRzL1NpZGVIZWxwVGV4dC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IExpbmVzTG9hZGVyIGZyb20gJ0NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlJztcXG5pbXBvcnQgVG9hc3RNZXNzYWdlIGZyb20gJ0NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICdDb21wb25lbnRzL0xvYWRlci52dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgb3JnYW5pemF0aW9uVHlwZU9wdGlvbnM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBwcmV2aW91c1ZhbHVlczoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGZldGNoRGF0YToge1xcbiAgICB0eXBlOiBGdW5jdGlvbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IEJvb2xlYW4sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1xcbiAgJ3Byb2NlZWRTdGVwJyxcXG4gICdwcmV2aW91c1N0ZXAnLFxcbiAgJ2NvbXBsZXRlU3RlcCcsXFxuICAncmVtb3ZlQ29tcGxldGVkU3RlcCcsXFxuXSk7XFxuXFxuY29uc3Qgc2Vjb25kYXJ5UmVwb3J0ZXJPcHRpb25zID0gW1xcbiAgeyB2YWx1ZTogJzEnLCBsYWJlbDogJ1RydWUnIH0sXFxuICB7IHZhbHVlOiAnMCcsIGxhYmVsOiAnRmFsc2UnIH0sXFxuXTtcXG5cXG5jb25zdCBvcmdhbml6YXRpb25EYXRhID0gcmVmKHtcXG4gIHJlZjogcHJvcHMucHJldmlvdXNWYWx1ZXNbMF0/LnJlZiB8fCAnJyxcXG4gIHR5cGU6IHByb3BzLnByZXZpb3VzVmFsdWVzWzBdPy50eXBlIHx8ICcnLFxcbiAgc2Vjb25kYXJ5X3JlcG9ydGVyOiBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXT8uc2Vjb25kYXJ5X3JlcG9ydGVyIHx8ICcnLFxcbn0pO1xcblxcbmNvbnN0IGhlbHBUaXRsZSA9IHJlZignJyk7XFxuY29uc3QgaGVscENvbnRlbnQgPSByZWYoJycpO1xcbmNvbnN0IGhlbHBWaXNpYmxlID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBpc1NhdmluZyA9IHJlZihmYWxzZSk7XFxuY29uc3QgaXNTYXZlZCA9IHJlZihmYWxzZSk7XFxuXFxuY29uc3QgaGFzRXJyb3IgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSByZWY8c3RyaW5nW10+KFtdKTtcXG5cXG5jb25zdCBpc0xvYWRlclZpc2libGUgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IHRvYXN0VmlzaWJpbGl0eSA9IHJlZihmYWxzZSk7XFxuY29uc3QgdG9hc3RNZXNzYWdlID0gcmVmKCcnKTtcXG5jb25zdCB0b2FzdFR5cGUgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IGhhc1JlZmVyZW5jZUVycm9yID0gcmVmKGZhbHNlKTtcXG5jb25zdCByZWZlcmVuY2VFcnJvck1lc3NhZ2UgPSByZWYoJycpO1xcblxcbmNvbnN0IGNvbnRlbnRWYWx1ZXMgPSBbXFxuICB7XFxuICAgIHRpdGxlOiAncmVmZXJlbmNlJyxcXG4gICAgY29udGVudDpcXG4gICAgICAnPGRpdiBjbGFzcz1cXFwic3BhY2UteS0xLjVcXFwiPiBQcm92aWRlIHRoZSBJQVRJIE9yZ2FuaXNhdGlvbiBJZGVudGlmaWVyIG9mIHRoZSBvcmdhbmlzYXRpb24gcHVibGlzaGluZyB0aGUgZGF0YS4gVGhlIHF1aWNrZXN0IHdheSB0byBmaW5kIHRoaXMgaXMgdG8gc2VhcmNoIGZvciB0aGUgb3JnYW5pc2F0aW9uIGluIHRoZSA8YSB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgaHJlZj1cXFwiaHR0cHM6Ly93d3cuaWF0aXJlZ2lzdHJ5Lm9yZy9wdWJsaXNoZXIvXFxcIj5JQVRJIFB1Ymxpc2hlciBMaXN0PC9hPi4gSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBvcmdhbmlzYXRpb24sIHNlZSA8YSB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgaHJlZj1cXFwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2d1aWRhbmNlL3B1Ymxpc2hpbmctZGF0YS9kYXRhLXF1YWxpdHktYW5kLXZpc3VhbGlzYXRpb24vZmluZGluZy1vdGhlci1vcmdhbmlzYXRpb25zLWlkZW50aWZpZXJzL1xcXCI+ZnVydGhlciBndWlkYW5jZTwvYT4uIDwvZGl2PicsXFxuICB9LFxcbiAge1xcbiAgICB0aXRsZTogJ3R5cGUnLFxcbiAgICBjb250ZW50OlxcbiAgICAgICc8ZGl2IGNsYXNzPVxcXCJzcGFjZS15LTEuNVxcXCI+IFNlbGVjdCB0aGUgdHlwZSB0aGF0IGJlc3QgZGVzY3JpYmVzIHRoZSBvcmdhbmlzYXRpb24gcHVibGlzaGluZyB0aGUgZGF0YS48YSB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgaHJlZj1cXFwiaHR0cHM6Ly9pYXRpc3RhbmRhcmQub3JnL2VuL2lhdGktc3RhbmRhcmQvMjAzL2NvZGVsaXN0cy9vcmdhbmlzYXRpb250eXBlL1xcXCI+SW5mb3JtYXRpb24gb24gYWxsIG9yZ2FuaXNhdGlvbiB0eXBlcy48L2E+PC9kaXY+JyxcXG4gIH0sXFxuICB7XFxuICAgIHRpdGxlOiAnc2Vjb25kYXJ5LXJlcG9ydGVyJyxcXG4gICAgY29udGVudDogYDxkaXYgY2xhc3M9XFxcInNwYWNlLXktMS41XFxcIj4gQXJlIHlvdSByZXByb2R1Y2luZyB0aGUgZGF0YSByZXBvcnRlZCBieSBhbm90aGVyIG9yZ2FuaXNhdGlvbj8gSWYgc28sIHlvdXIgb3JnYW5pc2F0aW9uIGlzIGEg4oCYc2Vjb25kYXJ5IHJlcG9ydGVy4oCZIGFuZCB5b3Ugc2hvdWxkIHNlbGVjdCAnPGI+WWVzPC9iPuKAmS4gSWYgeW91IGFyZSByZXBvcnRpbmcgeW91ciBvd24gb3JnYW5pc2F0aW9u4oCZcyBkYXRhLCBzZWxlY3Qg4oCYPGI+Tm88L2I+4oCZLjxicj48YnI+UGxlYXNlIG5vdGU6IHlvdSBhcmUgPGI+bm90PC9iPiBhIHNlY29uZGFyeSByZXBvcnRlciBpZiB5b3VyIG9yZ2FuaXNhdGlvbiBpcyBvZmZpY2lhbGx5IGFzc2lnbmVkIGFzIGEgcHJveHkgdG8gcmVwb3J0IElBVEkgZGF0YSBvbiBiZWhhbGYgb2YgYW5vdGhlciBvcmdhbmlzYXRpb24uIDwvZGl2PmAsXFxuICB9LFxcbl07XFxuXFxuY29uc3Qgc2hvd0hlbHAgPSAodGl0bGU6IHN0cmluZykgPT4ge1xcbiAgaGVscFRpdGxlLnZhbHVlID0gdGl0bGU7XFxuICBoZWxwQ29udGVudC52YWx1ZSA9IGNvbnRlbnRWYWx1ZXMuZmluZCgoY29udGVudCkgPT4gY29udGVudC50aXRsZSA9PT0gdGl0bGUpXFxuICAgID8uY29udGVudCBhcyBzdHJpbmc7XFxuICBoZWxwVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCByZXNlbmRWZXJpZmljYXRpb25FbWFpbCA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBheGlvc1xcbiAgICAucG9zdCgnL3VzZXIvdmVyaWZpY2F0aW9uL2VtYWlsJylcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XFxuICAgICAgc2V0VGltZW91dCgoKSA9PiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpLCAzMDAwKTtcXG4gICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcXG4gICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKSwgMzAwMCk7XFxuICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcblxcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcXG4gIGlmICgoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygncmVzZW5kLXZlcmlmaWNhdGlvbicpKSB7XFxuICAgIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCk7XFxuICB9XFxufSk7XFxuXFxuY29uc3QgdHJhbnNmb3JtTWVzc2FnZXMgPSAobWVzc2FnZXM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xcbiAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xcbiAgICBzd2l0Y2ggKG1lc3NhZ2UpIHtcXG4gICAgICBjYXNlICdZb3UgaGF2ZSBub3QgdmVyaWZpZWQgeW91ciBlbWFpbCBhZGRyZXNzLic6XFxuICAgICAgICByZXR1cm4gYFlvdXIgZW1haWwgYWRkcmVzcyBoYXMgbm90IGJlZW4gdmVyaWZpZWQuIDxzcGFuIGNsYXNzPVxcXCJyZXNlbmQtdmVyaWZpY2F0aW9uIHRleHQtYmx1ZWNvcmFsIGN1cnNvci1wb2ludGVyIGhvdmVyOnRleHQtc3ByaW5nLTUwIHVuZGVybGluZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi1bNDAwbXNdXFxcIj5SZXNlbmQgVmVyaWZpY2F0aW9uIGVtYWlsPC9zcGFuPmA7XFxuXFxuICAgICAgY2FzZSAnVGhlIFB1Ymxpc2hlciBJRCBpcyBub3QgdmVyaWZpZWQgaW4gSUFUSSBSZWdpc3RyeS4nOlxcbiAgICAgICAgcmV0dXJuICdZb3VyIElBVEkgUmVnaXN0cnkgYWNjb3VudCBpcyBwZW5kaW5nIGFwcHJvdmFsLiBDb250YWN0IDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QGlhdGlzdGFuZGFyZC5vcmdcXFwiPnN1cHBvcnRAaWF0aXN0YW5kYXJkLm9yZzwvYT4gaWYgeW91ciBhY2NvdW50IGhhcyBub3QgYmVlbiBhcHByb3ZlZCB3aXRoaW4gdHdvIHdvcmtpbmcgZGF5cyBvZiByZWdpc3RlcmluZy4nO1xcblxcbiAgICAgIGRlZmF1bHQ6XFxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcXG4gICAgfVxcbiAgfSk7XFxufTtcXG5cXG5jb25zdCBwcmV2aW91c1N0ZXAgPSAoKSA9PiB7XFxuICBlbWl0KCdwcmV2aW91c1N0ZXAnKTtcXG59O1xcblxcbmNvbnN0IHByb2NlZWRTdGVwID0gKCkgPT4ge1xcbiAgaGFzRXJyb3IudmFsdWUgPSBmYWxzZTtcXG4gIGlzU2F2aW5nLnZhbHVlID0gdHJ1ZTtcXG4gIGNvbnN0IGZpbmFsRGF0YSA9IFtcXG4gICAge1xcbiAgICAgIC4uLm9yZ2FuaXphdGlvbkRhdGEudmFsdWUsXFxuICAgICAgbmFycmF0aXZlOiBwcm9wcy5wcmV2aW91c1ZhbHVlc1swXT8ubmFycmF0aXZlIHx8ICcnLFxcbiAgICB9LFxcbiAgXTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wdXQoJy9vcmdhbmlzYXRpb24vcmVwb3J0aW5nX29yZycsIHtcXG4gICAgICByZXBvcnRpbmdfb3JnOiBmaW5hbERhdGEsXFxuICAgIH0pXFxuICAgIC50aGVuKCgpID0+IHtcXG4gICAgICBheGlvc1xcbiAgICAgICAgLmdldCgnb3JnYW5pc2F0aW9uL2NoZWNrcy1mb3Itb3JnYW5pc2F0aW9uLXB1Ymxpc2gnKVxcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiB7IGRhdGE6IHsgc3VjY2VzczogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nW10gfSB9KSA9PiB7XFxuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICBheGlvc1xcbiAgICAgICAgICAgICAgLnBvc3QoJy9vcmdhbmlzYXRpb24vcHVibGlzaCcpXFxuICAgICAgICAgICAgICAudGhlbihcXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlOiB7XFxuICAgICAgICAgICAgICAgICAgZGF0YTogeyBzdWNjZXNzOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmdbXSB9O1xcbiAgICAgICAgICAgICAgICB9KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZmV0Y2hEYXRhKCk7XFxuICAgICAgICAgICAgICAgICAgICAgIGVtaXQoJ2NvbXBsZXRlU3RlcCcsIDMpO1xcbiAgICAgICAgICAgICAgICAgICAgICBlbWl0KCdwcm9jZWVkU3RlcCcpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgNDAwMCk7XFxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yLnZhbHVlID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXMudmFsdWUgPSB0cmFuc2Zvcm1NZXNzYWdlcyhcXG4gICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICk7XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaGFzRXJyb3IudmFsdWUgPSB0cnVlO1xcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZXMudmFsdWUgPSB0cmFuc2Zvcm1NZXNzYWdlcyhyZXNwb25zZS5kYXRhLm1lc3NhZ2UpO1xcblxcbiAgICAgICAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICAgICAgaXNTYXZlZC52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9jb25zb2xlLmxvZyguLi5vb19vbyhgMTE2MTI0MTUyNl80NTZfMTBfNDU2XzM1XzRgLCdFcnJvcicsIGVycikpO1xcbiAgICAgICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgICBpc1NhdmVkLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgLmNhdGNoKChlcnIpID0+IHtcXG4gICAgICBlbWl0KCdyZW1vdmVDb21wbGV0ZWRTdGVwJywgMyk7XFxuICAgICAgaWYgKGVyci5yZXNwb25zZSAmJiBlcnIucmVzcG9uc2UuZGF0YSAmJiBlcnIucmVzcG9uc2UuZGF0YS5lcnJvcnMpIHtcXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGVyci5yZXNwb25zZS5kYXRhLmVycm9ycztcXG5cXG4gICAgICAgIGlmIChlcnJvcnNbJ3JlcG9ydGluZ19vcmcuMC5yZWYnXSkge1xcbiAgICAgICAgICBoYXNSZWZlcmVuY2VFcnJvci52YWx1ZSA9IHRydWU7XFxuICAgICAgICAgIHJlZmVyZW5jZUVycm9yTWVzc2FnZS52YWx1ZSA9IGVycm9yc1sncmVwb3J0aW5nX29yZy4wLnJlZiddWzBdO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICBpc1NhdmluZy52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIGlzU2F2ZWQudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLy8qIGM4IGlnbm9yZSBzdGFydCAqLy8qIGVzbGludC1kaXNhYmxlICovO2Z1bmN0aW9uIG9vX2NtKCl7dHJ5e3JldHVybiAoMCxldmFsKShcXFwiZ2xvYmFsVGhpcy5fY29uc29sZV9uaW5qYVxcXCIpIHx8ICgwLGV2YWwpKFxcXCIvKiBodHRwczovL2dpdGh1Yi5jb20vd2FsbGFieWpzL2NvbnNvbGUtbmluamEjaG93LWRvZXMtaXQtd29yayAqLyd1c2Ugc3RyaWN0Jzt2YXIgXzB4YjM4NDc5PV8weDI2OTA7KGZ1bmN0aW9uKF8weDNkYTlhNyxfMHgxMjk5ODMpe3ZhciBfMHgyNDEzZjI9XzB4MjY5MCxfMHg0ZWQ3YmE9XzB4M2RhOWE3KCk7d2hpbGUoISFbXSl7dHJ5e3ZhciBfMHgxNTM1NjA9LXBhcnNlSW50KF8weDI0MTNmMigweDE5NSkpLzB4MSoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM4KSkvMHgyKSstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTkxKSkvMHgzKihwYXJzZUludChfMHgyNDEzZjIoMHgxYWYpKS8weDQpK3BhcnNlSW50KF8weDI0MTNmMigweDFkMikpLzB4NSstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFhKSkvMHg2KigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk5KSkvMHg3KStwYXJzZUludChfMHgyNDEzZjIoMHgxYzkpKS8weDgrLXBhcnNlSW50KF8weDI0MTNmMigweDFlYSkpLzB4OStwYXJzZUludChfMHgyNDEzZjIoMHgxZjcpKS8weGEqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOGIpKS8weGIpO2lmKF8weDE1MzU2MD09PV8weDEyOTk4MylicmVhaztlbHNlIF8weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9Y2F0Y2goXzB4MTE0ZGU2KXtfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fX19KF8weDQ5ZmIsMHg3NTc3OSkpO2Z1bmN0aW9uIF8weDQ5ZmIoKXt2YXIgXzB4MzEzYzI5PVsnX3F1b3RlZFJlZ0V4cCcsJ3dhcm4nLCdhdXRvRXhwYW5kUHJldmlvdXNPYmplY3RzJywnZ2V0UHJvdG90eXBlT2YnLCdfV2ViU29ja2V0JywnZ2V0dGVyJywnMTIzMFRFcGxsaCcsJ2ZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGNvbm5lY3RcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBob3N0OlxcXFxcXFxceDIwJywnX3NvcnRQcm9wcycsJ2NvdW50Jywnc29ydCcsJ3NldCcsJ251bGwnLCd0b0xvd2VyQ2FzZScsJ25lZ2F0aXZlWmVybycsJ2pvaW4nLCdzdGFjaycsJ19oYXNTeW1ib2xQcm9wZXJ0eU9uSXRzUGF0aCcsJ2N1cnJlbnQnLCdfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywndGhlbicsJ2dldE93blByb3BlcnR5U3ltYm9scycsJ0hUTUxBbGxDb2xsZWN0aW9uJywndXJsJywncGF0aFRvRmlsZVVSTCcsJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJywnY2FwcGVkJywnX2lzTWFwJywnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJywncm9vdEV4cHJlc3Npb24nLCd1bnJlZicsJ2Z1bmN0aW9uJywnaGl0cycsJ3N0ckxlbmd0aCcsJ19oYXNNYXBPbkl0c1BhdGgnLCdmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBmaW5kXFxcXFxcXFx4MjBhbmRcXFxcXFxcXHgyMGxvYWRcXFxcXFxcXHgyMFdlYlNvY2tldCcsJ191bmRlZmluZWQnLCduYW1lJywnX3NlbmRFcnJvck1lc3NhZ2UnLCdldmVudFJlY2VpdmVkQ2FsbGJhY2snLCdfcF9sZW5ndGgnLCdnbG9iYWwnLCdlcnJvcicsJ1xcXFxcXFxceDIwYnJvd3NlcicsJ25lZ2F0aXZlSW5maW5pdHknLCdbb2JqZWN0XFxcXFxcXFx4MjBTZXRdJywnc2VuZCcsJ3Byb3RvdHlwZScsJ2RlcHRoJywncmVhZHlTdGF0ZScsJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnLCd1bmRlZmluZWQnLCdfU3ltYm9sJywnX3Byb3BlcnR5JywnU2V0JywnbWFwJywnX2luTmV4dEVkZ2UnLCd2YWx1ZU9mJywnc2VlXFxcXFxcXFx4MjBodHRwczovL3Rpbnl1cmwuY29tLzJ2dDhqeHp3XFxcXFxcXFx4MjBmb3JcXFxcXFxcXHgyMG1vcmVcXFxcXFxcXHgyMGluZm8uJywnX29iamVjdFRvU3RyaW5nJywncG9zaXRpdmVJbmZpbml0eScsJ2JpbmQnLCdjYWxsJywnX2lzTmVnYXRpdmVaZXJvJywnTkVYVF9SVU5USU1FJywnbG9nZ2VyXFxcXFxcXFx4MjB3ZWJzb2NrZXRcXFxcXFxcXHgyMGVycm9yJywnX2dldE93blByb3BlcnR5TmFtZXMnLCdtZXNzYWdlJywnYmlnaW50JywndGltZScsJ3N0YXJ0c1dpdGgnLCdfY2xlYW5Ob2RlJywnX2Rpc3Bvc2VXZWJzb2NrZXQnLCdfcmVnRXhwVG9TdHJpbmcnLCdvbmVycm9yJywnY29uY2F0JywnMS4wLjAnLCdib29sZWFuJywnW29iamVjdFxcXFxcXFxceDIwRGF0ZV0nLCdyZW1peCcsJ2xlbmd0aCcsJ3NvcnRQcm9wcycsJ29ub3BlbicsJ19rZXlTdHJSZWdFeHAnLCdkYXRhJywncmVkdWNlTGltaXRzJywncHJvcHMnLCdzb21lJywnX2NhcElmU3RyaW5nJywnMTczMTA0MDkzNDcwNCcsJ3BlcmZfaG9va3MnLCdvYmplY3QnLCd2ZXJzaW9ucycsJ2Zyb21DaGFyQ29kZScsJ25hbicsJ2F1dG9FeHBhbmRMaW1pdCcsJ2xvZycsJ2dldCcsJ3BhcnNlJywnX2Nvbm5lY3RlZCcsJ3N1YnN0cicsJ25vZGVNb2R1bGVzJywnXFxcXFxcXFx4MjBzZXJ2ZXInLCdfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0JywnX2Nvbm5lY3RpbmcnLCdNYXAnLFxcXFxcXFwiL2hvbWUvZmx1ZmZ5Ly52c2NvZGUvZXh0ZW5zaW9ucy93YWxsYWJ5anMuY29uc29sZS1uaW5qYS0xLjAuMzY2L25vZGVfbW9kdWxlc1xcXFxcXFwiLCdORUdBVElWRV9JTkZJTklUWScsJ193cycsJ2NvbnNvbGUnLCdkb2NrZXJpemVkQXBwJywnX3R5cGUnLCdfY29uc29sZV9uaW5qYV9zZXNzaW9uJywnZWxlbWVudHMnLCdhbGxTdHJMZW5ndGgnLCdfYWRkTG9hZE5vZGUnLCdzeW1ib2wnLCdyb290X2V4cF9pZCcsJ19hbGxvd2VkVG9TZW5kJywnd3MvaW5kZXguanMnLCdwZXJmb3JtYW5jZScsJ19zZXROb2RlSWQnLCdfYmxhY2tsaXN0ZWRQcm9wZXJ0eScsJ1JlZ0V4cCcsJ3JlcGxhY2UnLCdhdXRvRXhwYW5kUHJvcGVydHlDb3VudCcsJ3RpbWVTdGFtcCcsJ0NvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBzZW5kXFxcXFxcXFx4MjBsb2dzLFxcXFxcXFxceDIwcmVzdGFydGluZ1xcXFxcXFxceDIwdGhlXFxcXFxcXFx4MjBwcm9jZXNzXFxcXFxcXFx4MjBtYXlcXFxcXFxcXHgyMGhlbHA7XFxcXFxcXFx4MjBhbHNvXFxcXFxcXFx4MjBzZWVcXFxcXFxcXHgyMCcsJ2FuZ3VsYXInLCdjYXBwZWRFbGVtZW50cycsJ19zb2NrZXQnLCdfaXNVbmRlZmluZWQnLCdfaXNQcmltaXRpdmVXcmFwcGVyVHlwZScsJ2dldFdlYlNvY2tldENsYXNzJywnbWV0aG9kJywnW29iamVjdFxcXFxcXFxceDIwTWFwXScsJ3Rlc3QnLCdfc2V0Tm9kZUV4cGFuZGFibGVTdGF0ZScsJ3N0YWNrVHJhY2VMaW1pdCcsJ1tvYmplY3RcXFxcXFxcXHgyMEFycmF5XScsJzIxMjE5WXJSbFVlJywnX21heENvbm5lY3RBdHRlbXB0Q291bnQnLCdodHRwczovL3Rpbnl1cmwuY29tLzM3eDhiNzl0JywnMTI3LjAuMC4xJywnb25jbG9zZScsJ0NvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBzZW5kXFxcXFxcXFx4MjBsb2dzLFxcXFxcXFxceDIwcmVmcmVzaGluZ1xcXFxcXFxceDIwdGhlXFxcXFxcXFx4MjBwYWdlXFxcXFxcXFx4MjBtYXlcXFxcXFxcXHgyMGhlbHA7XFxcXFxcXFx4MjBhbHNvXFxcXFxcXFx4MjBzZWVcXFxcXFxcXHgyMCcsJzIyNjE2MW5adGZXSCcsJ19uaW5qYUlnbm9yZU5leHRFcnJvcicsJ2FyZ3MnLCdkaXNhYmxlZExvZycsJzI5NTNzQm9pZlMnLCdtYXRjaCcsW1xcXFxcXFwibG9jYWxob3N0XFxcXFxcXCIsXFxcXFxcXCIxMjcuMC4wLjFcXFxcXFxcIixcXFxcXFxcImV4YW1wbGUuY3lwcmVzcy5pb1xcXFxcXFwiLFxcXFxcXFwiZmx1ZmZ5XFxcXFxcXCIsXFxcXFxcXCIxOTIuMTY4LjEwLjE3MVxcXFxcXFwiXSwnc3RyaW5naWZ5JywnODAxOTYyU0NRUURFJywnaW5jbHVkZXMnLCdfaXNQcmltaXRpdmVUeXBlJywnaHJ0aW1lJywnZnVuY05hbWUnLCdwdXNoJywnd3M6Ly8nLCdvbm1lc3NhZ2UnLCdsb2NhdGlvbicsJ3Vuc2hpZnQnLCdwcm9jZXNzJywnX2lzU2V0JywnX0hUTUxBbGxDb2xsZWN0aW9uJywnX1dlYlNvY2tldENsYXNzJywndG9VcHBlckNhc2UnLCdhdXRvRXhwYW5kTWF4RGVwdGgnLCd0b3RhbFN0ckxlbmd0aCcsJzZ2R0RhVWYnLCd0cmFjZScsJ2RhdGUnLCdudW1iZXInLCd2YWx1ZScsJzRUbmRGSEInLCdyZWxvYWQnLCdub0Z1bmN0aW9ucycsJ2NvdmVyYWdlJywnY3JlYXRlJywnX2F0dGVtcHRUb1JlY29ubmVjdFNob3J0bHknLCd0b1N0cmluZycsJ19hZGRPYmplY3RQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsJ19hZGRGdW5jdGlvbnNOb2RlJywnX2FkZFByb3BlcnR5JywnYXV0b0V4cGFuZCcsJ2FycmF5JywnX2Nvbm5lY3RUb0hvc3ROb3cnLCdwYXJlbnQnLCdjYXBwZWRQcm9wcycsJ2RlZmluZVByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlOYW1lcycsJ25vZGUnLCd1bmtub3duJywnX2luQnJvd3NlcicsJ2NvbnN0cnVjdG9yJywnX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0JywnY2F0Y2gnLCdsb2dnZXJcXFxcXFxcXHgyMGZhaWxlZFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGNvbm5lY3RcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBob3N0JywnNDEyZFpXbWpQJywnNTk5OTEyOHpVSHNmaycsJ3N0cmluZycsJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnLCdfcHJvcGVydHlOYW1lJywnX2NvbnNvbGVfbmluamEnLCcnLCdzZXJpYWxpemUnLCcuLi4nLCdpbmRleCcsJzM3NjY4MDVMWnVXT0knLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQWZ0ZXJGdWxsVmFsdWUnLCdleHBJZCcsJ3R5cGUnLCdOdW1iZXInLCdfc2V0Tm9kZVBlcm1pc3Npb25zJywnX3BfbmFtZScsJ2dhdGV3YXkuZG9ja2VyLmludGVybmFsJywnU3RyaW5nJywnaG9zdCcsJ3Jlc29sdmVHZXR0ZXJzJywnb3JpZ2luJywnbmV4dC5qcycsJzMzNDUzJywnX3JlY29ubmVjdFRpbWVvdXQnLCdmb3JFYWNoJywnX3BfJywnX3NldE5vZGVMYWJlbCcsJ2VudicsJ19jb25uZWN0QXR0ZW1wdENvdW50JywnaG9zdG5hbWUnLCdTeW1ib2wnLCdlbGFwc2VkJywnZWRnZScsJzE5NDEzMDlsY2NWUFMnLCdfYWRkaXRpb25hbE1ldGFkYXRhJywnbGV2ZWwnLCdfZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnd2VicGFjaycsJ25vdycsJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ107XzB4NDlmYj1mdW5jdGlvbigpe3JldHVybiBfMHgzMTNjMjk7fTtyZXR1cm4gXzB4NDlmYigpO312YXIgSz1PYmplY3RbXzB4YjM4NDc5KDB4MWIzKV0sUT1PYmplY3RbXzB4YjM4NDc5KDB4MWJmKV0sRz1PYmplY3RbXzB4YjM4NDc5KDB4MWI3KV0sZWU9T2JqZWN0W18weGIzODQ3OSgweDFjMCldLHRlPU9iamVjdFtfMHhiMzg0NzkoMHgxZjQpXSxuZT1PYmplY3RbXzB4YjM4NDc5KDB4MjIwKV1bJ2hhc093blByb3BlcnR5J10scmU9KF8weDUxMDEyMixfMHg1ODcwNGYsXzB4MmU0NGY2LF8weDIwYmIzOSk9Pnt2YXIgXzB4MmZjYTkxPV8weGIzODQ3OTtpZihfMHg1ODcwNGYmJnR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDI0Yyl8fHR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDIxMCkpe2ZvcihsZXQgXzB4NTczNGEwIG9mIGVlKF8weDU4NzA0ZikpIW5lWydjYWxsJ10oXzB4NTEwMTIyLF8weDU3MzRhMCkmJl8weDU3MzRhMCE9PV8weDJlNDRmNiYmUShfMHg1MTAxMjIsXzB4NTczNGEwLHsnZ2V0JzooKT0+XzB4NTg3MDRmW18weDU3MzRhMF0sJ2VudW1lcmFibGUnOiEoXzB4MjBiYjM5PUcoXzB4NTg3MDRmLF8weDU3MzRhMCkpfHxfMHgyMGJiMzlbJ2VudW1lcmFibGUnXX0pO31yZXR1cm4gXzB4NTEwMTIyO30sVj0oXzB4MTQ4ZDFkLF8weDQzN2Q3OCxfMHg1ZWMxMzEpPT4oXzB4NWVjMTMxPV8weDE0OGQxZCE9bnVsbD9LKHRlKF8weDE0OGQxZCkpOnt9LHJlKF8weDQzN2Q3OHx8IV8weDE0OGQxZHx8IV8weDE0OGQxZFsnX19lcycrJ01vZHVsZSddP1EoXzB4NWVjMTMxLCdkZWZhdWx0Jyx7J3ZhbHVlJzpfMHgxNDhkMWQsJ2VudW1lcmFibGUnOiEweDB9KTpfMHg1ZWMxMzEsXzB4MTQ4ZDFkKSksWj1jbGFzc3tjb25zdHJ1Y3RvcihfMHgzYjQ2NTUsXzB4MWQ1YmU4LF8weDM2OGRjZixfMHg1ZjRlYjEsXzB4NWU4NDJmLF8weDg2ODc5ZCl7dmFyIF8weDVlMGU1NT1fMHhiMzg0NzksXzB4MTg1OWZiLF8weGM1N2IwLF8weDUzZjU4NCxfMHgyZWUzNjQ7dGhpc1tfMHg1ZTBlNTUoMHgyMWEpXT1fMHgzYjQ2NTUsdGhpc1tfMHg1ZTBlNTUoMHgxZGIpXT1fMHgxZDViZTgsdGhpc1sncG9ydCddPV8weDM2OGRjZix0aGlzWydub2RlTW9kdWxlcyddPV8weDVmNGViMSx0aGlzW18weDVlMGU1NSgweDI1ZildPV8weDVlODQyZix0aGlzW18weDVlMGU1NSgweDIxOCldPV8weDg2ODc5ZCx0aGlzW18weDVlMGU1NSgweDE3NSldPSEweDAsdGhpc1tfMHg1ZTBlNTUoMHgxZjApXT0hMHgwLHRoaXNbJ19jb25uZWN0ZWQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDVlMGU1NSgweDIyOSldPSgoXzB4YzU3YjA9KF8weDE4NTlmYj1fMHgzYjQ2NTVbXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDE4NTlmYltfMHg1ZTBlNTUoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4YzU3YjBbXzB4NWUwZTU1KDB4MjMxKV0pPT09XzB4NWUwZTU1KDB4MWU5KSx0aGlzW18weDVlMGU1NSgweDFjMyldPSEoKF8weDJlZTM2ND0oXzB4NTNmNTg0PXRoaXNbJ2dsb2JhbCddW18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1M2Y1ODRbXzB4NWUwZTU1KDB4MjRkKV0pIT1udWxsJiZfMHgyZWUzNjRbXzB4NWUwZTU1KDB4MWMxKV0pJiYhdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXSx0aGlzWydfV2ViU29ja2V0Q2xhc3MnXT1udWxsLHRoaXNbXzB4NWUwZTU1KDB4MWU1KV09MHgwLHRoaXNbXzB4NWUwZTU1KDB4MThjKV09MHgxNCx0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddPV8weDVlMGU1NSgweDE4ZCksdGhpc1tfMHg1ZTBlNTUoMHgyMTcpXT0odGhpc1snX2luQnJvd3NlciddP18weDVlMGU1NSgweDE5MCk6XzB4NWUwZTU1KDB4MTdlKSkrdGhpc1tfMHg1ZTBlNTUoMHgyMGEpXTt9YXN5bmNbXzB4YjM4NDc5KDB4MTg0KV0oKXt2YXIgXzB4NWI0MGM0PV8weGIzODQ3OSxfMHg0M2FkYWMsXzB4M2YwOGQ5O2lmKHRoaXNbXzB4NWI0MGM0KDB4MWE2KV0pcmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV07bGV0IF8weDFlZmU3MztpZih0aGlzW18weDViNDBjNCgweDFjMyldfHx0aGlzW18weDViNDBjNCgweDIyOSldKV8weDFlZmU3Mz10aGlzW18weDViNDBjNCgweDIxYSldWydXZWJTb2NrZXQnXTtlbHNle2lmKChfMHg0M2FkYWM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsncHJvY2VzcyddKSE9bnVsbCYmXzB4NDNhZGFjW18weDViNDBjNCgweDFmNSldKV8weDFlZmU3Mz0oXzB4M2YwOGQ5PXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bXzB4NWI0MGM0KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmMDhkOVsnX1dlYlNvY2tldCddO2Vsc2UgdHJ5e2xldCBfMHgxNzkyNWE9YXdhaXQgaW1wb3J0KCdwYXRoJyk7XzB4MWVmZTczPShhd2FpdCBpbXBvcnQoKGF3YWl0IGltcG9ydChfMHg1YjQwYzQoMHgyMDgpKSlbXzB4NWI0MGM0KDB4MjA5KV0oXzB4MTc5MjVhWydqb2luJ10odGhpc1snbm9kZU1vZHVsZXMnXSxfMHg1YjQwYzQoMHgxNzYpKSlbXzB4NWI0MGM0KDB4MWI1KV0oKSkpWydkZWZhdWx0J107fWNhdGNoe3RyeXtfMHgxZWZlNzM9cmVxdWlyZShyZXF1aXJlKCdwYXRoJylbXzB4NWI0MGM0KDB4MjAwKV0odGhpc1tfMHg1YjQwYzQoMHgyNTYpXSwnd3MnKSk7fWNhdGNoe3Rocm93IG5ldyBFcnJvcihfMHg1YjQwYzQoMHgyMTQpKTt9fX1yZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXT1fMHgxZWZlNzMsXzB4MWVmZTczO31bXzB4YjM4NDc5KDB4MWJjKV0oKXt2YXIgXzB4M2UzYTY5PV8weGIzODQ3OTt0aGlzW18weDNlM2E2OSgweDI1OSldfHx0aGlzW18weDNlM2E2OSgweDI1NCldfHx0aGlzWydfY29ubmVjdEF0dGVtcHRDb3VudCddPj10aGlzW18weDNlM2E2OSgweDE4YyldfHwodGhpc1snX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MCx0aGlzW18weDNlM2E2OSgweDFlNSldKyssdGhpc1snX3dzJ109bmV3IFByb21pc2UoKF8weDIyN2M5OCxfMHgyZDIwNjUpPT57dmFyIF8weDQzYzg2OT1fMHgzZTNhNjk7dGhpc1snZ2V0V2ViU29ja2V0Q2xhc3MnXSgpW18weDQzYzg2OSgweDIwNSldKF8weDU4NTIyND0+e3ZhciBfMHgzZjNhODc9XzB4NDNjODY5O2xldCBfMHgyZGQ1OTQ9bmV3IF8weDU4NTIyNChfMHgzZjNhODcoMHgxOWYpKyghdGhpc1snX2luQnJvd3NlciddJiZ0aGlzWydkb2NrZXJpemVkQXBwJ10/XzB4M2YzYTg3KDB4MWQ5KTp0aGlzW18weDNmM2E4NygweDFkYildKSsnOicrdGhpc1sncG9ydCddKTtfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjNiKV09KCk9Pnt2YXIgXzB4MTI2ODZhPV8weDNmM2E4Nzt0aGlzW18weDEyNjg2YSgweDE3NSldPSEweDEsdGhpc1tfMHgxMjY4NmEoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4MTI2ODZhKDB4MWI0KV0oKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDEyNjg2YSgweDIzMikpKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgyNDMpXT0oKT0+e3ZhciBfMHg0ZGFmZjY9XzB4M2YzYTg3O3RoaXNbJ19pbkJyb3dzZXInXXx8XzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSgpLF8weDIyN2M5OChfMHgyZGQ1OTQpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDE4ZildPSgpPT57dmFyIF8weDNhNTgzZj1fMHgzZjNhODc7dGhpc1tfMHgzYTU4M2YoMHgxZjApXT0hMHgwLHRoaXNbXzB4M2E1ODNmKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDNhNTgzZigweDFiNCldKCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MWEwKV09XzB4MjYyMTVhPT57dmFyIF8weDFhZGJkMT1fMHgzZjNhODc7dHJ5e2lmKCEoXzB4MjYyMTVhIT1udWxsJiZfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pfHwhdGhpc1tfMHgxYWRiZDEoMHgyMTgpXSlyZXR1cm47bGV0IF8weDJiYWJkOT1KU09OW18weDFhZGJkMSgweDI1MyldKF8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSk7dGhpc1tfMHgxYWRiZDEoMHgyMTgpXShfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTg1KV0sXzB4MmJhYmQ5W18weDFhZGJkMSgweDE5MyldLHRoaXNbXzB4MWFkYmQxKDB4MjFhKV0sdGhpc1snX2luQnJvd3NlciddKTt9Y2F0Y2h7fX07fSlbXzB4NDNjODY5KDB4MjA1KV0oXzB4NGY3MTRlPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgwLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDQzYzg2OSgweDFmMCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NDNjODY5KDB4MWU1KV09MHgwLF8weDRmNzE0ZSkpW18weDQzYzg2OSgweDFjNildKF8weDIyZWM5ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MSx0aGlzW18weDQzYzg2OSgweDI1OSldPSEweDEsY29uc29sZVtfMHg0M2M4NjkoMHgxZjIpXSgnbG9nZ2VyXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBjb25uZWN0XFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwaG9zdCxcXFxcXFxcXHgyMHNlZVxcXFxcXFxceDIwJyt0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDQzYzg2OSgweDFmOCkrKF8weDIyZWM5ZSYmXzB4MjJlYzllW18weDQzYzg2OSgweDIzNCldKSkpKSk7fSkpO31bXzB4YjM4NDc5KDB4MjM5KV0oXzB4MjU4ZWEzKXt2YXIgXzB4MzE2MDdlPV8weGIzODQ3OTt0aGlzW18weDMxNjA3ZSgweDI1NCldPSEweDEsdGhpc1tfMHgzMTYwN2UoMHgyNTkpXT0hMHgxO3RyeXtfMHgyNThlYTNbJ29uY2xvc2UnXT1udWxsLF8weDI1OGVhM1snb25lcnJvciddPW51bGwsXzB4MjU4ZWEzW18weDMxNjA3ZSgweDI0MyldPW51bGw7fWNhdGNoe310cnl7XzB4MjU4ZWEzW18weDMxNjA3ZSgweDIyMildPDB4MiYmXzB4MjU4ZWEzWydjbG9zZSddKCk7fWNhdGNoe319W18weGIzODQ3OSgweDFiNCldKCl7dmFyIF8weDIzM2JhNj1fMHhiMzg0Nzk7Y2xlYXJUaW1lb3V0KHRoaXNbXzB4MjMzYmE2KDB4MWUwKV0pLCEodGhpc1tfMHgyMzNiYTYoMHgxZTUpXT49dGhpc1tfMHgyMzNiYTYoMHgxOGMpXSkmJih0aGlzW18weDIzM2JhNigweDFlMCldPXNldFRpbWVvdXQoKCk9Pnt2YXIgXzB4NDAxZmVjPV8weDIzM2JhNixfMHg1MmIzZDk7dGhpc1tfMHg0MDFmZWMoMHgyNTQpXXx8dGhpc1tfMHg0MDFmZWMoMHgyNTkpXXx8KHRoaXNbXzB4NDAxZmVjKDB4MWJjKV0oKSwoXzB4NTJiM2Q5PXRoaXNbXzB4NDAxZmVjKDB4MjVkKV0pPT1udWxsfHxfMHg1MmIzZDlbXzB4NDAxZmVjKDB4MWM2KV0oKCk9PnRoaXNbXzB4NDAxZmVjKDB4MWI0KV0oKSkpO30sMHgxZjQpLHRoaXNbXzB4MjMzYmE2KDB4MWUwKV1bXzB4MjMzYmE2KDB4MjBmKV0mJnRoaXNbXzB4MjMzYmE2KDB4MWUwKV1bJ3VucmVmJ10oKSk7fWFzeW5jW18weGIzODQ3OSgweDIxZildKF8weDU4NmIxZCl7dmFyIF8weDVkODUwOD1fMHhiMzg0Nzk7dHJ5e2lmKCF0aGlzW18weDVkODUwOCgweDE3NSldKXJldHVybjt0aGlzW18weDVkODUwOCgweDFmMCldJiZ0aGlzW18weDVkODUwOCgweDFiYyldKCksKGF3YWl0IHRoaXNbXzB4NWQ4NTA4KDB4MjVkKV0pW18weDVkODUwOCgweDIxZildKEpTT05bXzB4NWQ4NTA4KDB4MTk4KV0oXzB4NTg2YjFkKSk7fWNhdGNoKF8weGZkM2E5Nyl7Y29uc29sZVtfMHg1ZDg1MDgoMHgxZjIpXSh0aGlzW18weDVkODUwOCgweDIxNyldKyc6XFxcXFxcXFx4MjAnKyhfMHhmZDNhOTcmJl8weGZkM2E5N1tfMHg1ZDg1MDgoMHgyMzQpXSkpLHRoaXNbXzB4NWQ4NTA4KDB4MTc1KV09ITB4MSx0aGlzW18weDVkODUwOCgweDFiNCldKCk7fX19O2Z1bmN0aW9uIHEoXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1YTk1MDEsXzB4MWFhZjkwLF8weDQyOTdiMixfMHgxM2VmODksXzB4ODI1MjU2LF8weGY2ODJhNz1pZSl7dmFyIF8weGEzZmI0Mj1fMHhiMzg0Nzk7bGV0IF8weDRjZjE2ZD1fMHg1YTk1MDFbJ3NwbGl0J10oJywnKVtfMHhhM2ZiNDIoMHgyMjgpXShfMHg1MWI0ZDY9Pnt2YXIgXzB4MTA4Yzk4PV8weGEzZmI0MixfMHgxMmYzMjIsXzB4MTJiZWQ0LF8weDViZWQyMSxfMHgyNDM0YTg7dHJ5e2lmKCFfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV0pe2xldCBfMHgxNzMwYjU9KChfMHgxMmJlZDQ9KF8weDEyZjMyMj1fMHg0MjM2N2FbJ3Byb2Nlc3MnXSk9PW51bGw/dm9pZCAweDA6XzB4MTJmMzIyW18weDEwOGM5OCgweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgxMmJlZDRbXzB4MTA4Yzk4KDB4MWMxKV0pfHwoKF8weDI0MzRhOD0oXzB4NWJlZDIxPV8weDQyMzY3YVtfMHgxMDhjOTgoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NWJlZDIxW18weDEwOGM5OCgweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHgyNDM0YThbXzB4MTA4Yzk4KDB4MjMxKV0pPT09XzB4MTA4Yzk4KDB4MWU5KTsoXzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MWRlKXx8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MjQwKXx8XzB4NDI5N2IyPT09J2FzdHJvJ3x8XzB4NDI5N2IyPT09XzB4MTA4Yzk4KDB4MTdmKSkmJihfMHg0Mjk3YjIrPV8weDE3MzBiNT9fMHgxMDhjOTgoMHgyNTcpOl8weDEwOGM5OCgweDIxYykpLF8weDQyMzY3YVtfMHgxMDhjOTgoMHgyNjEpXT17J2lkJzorbmV3IERhdGUoKSwndG9vbCc6XzB4NDI5N2IyfSxfMHg4MjUyNTYmJl8weDQyOTdiMiYmIV8weDE3MzBiNSYmY29uc29sZVtfMHgxMDhjOTgoMHgyNTEpXSgnJWNcXFxcXFxcXHgyMENvbnNvbGVcXFxcXFxcXHgyME5pbmphXFxcXFxcXFx4MjBleHRlbnNpb25cXFxcXFxcXHgyMGlzXFxcXFxcXFx4MjBjb25uZWN0ZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjAnKyhfMHg0Mjk3YjJbJ2NoYXJBdCddKDB4MClbXzB4MTA4Yzk4KDB4MWE3KV0oKStfMHg0Mjk3YjJbJ3N1YnN0ciddKDB4MSkpKycsJywnYmFja2dyb3VuZDpcXFxcXFxcXHgyMHJnYigzMCwzMCwzMCk7XFxcXFxcXFx4MjBjb2xvcjpcXFxcXFxcXHgyMHJnYigyNTUsMjEzLDkyKScsXzB4MTA4Yzk4KDB4MjJiKSk7fWxldCBfMHg0YWJlOTY9bmV3IFooXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1MWI0ZDYsXzB4MWFhZjkwLF8weDEzZWY4OSxfMHhmNjgyYTcpO3JldHVybiBfMHg0YWJlOTZbXzB4MTA4Yzk4KDB4MjFmKV1bXzB4MTA4Yzk4KDB4MjJlKV0oXzB4NGFiZTk2KTt9Y2F0Y2goXzB4NWJmNDliKXtyZXR1cm4gY29uc29sZVsnd2FybiddKF8weDEwOGM5OCgweDFjNyksXzB4NWJmNDliJiZfMHg1YmY0OWJbXzB4MTA4Yzk4KDB4MjM0KV0pLCgpPT57fTt9fSk7cmV0dXJuIF8weDM3OWZkMz0+XzB4NGNmMTZkW18weGEzZmI0MigweDFlMSldKF8weDM3MTEyMT0+XzB4MzcxMTIxKF8weDM3OWZkMykpO31mdW5jdGlvbiBpZShfMHgzZThmMjUsXzB4MzlmZWE1LF8weDI1MTUwZixfMHgyNjUyOGUpe3ZhciBfMHgxY2M5Njc9XzB4YjM4NDc5O18weDI2NTI4ZSYmXzB4M2U4ZjI1PT09XzB4MWNjOTY3KDB4MWIwKSYmXzB4MjUxNTBmW18weDFjYzk2NygweDFhMSldWydyZWxvYWQnXSgpO31mdW5jdGlvbiBCKF8weDMwOTg0Mil7dmFyIF8weDI0ZGZjMj1fMHhiMzg0NzksXzB4MmFjMDQ4LF8weDUwYWJkZjtsZXQgXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDExYTY3MyxfMHg1ZjA2OTMpe3JldHVybiBfMHg1ZjA2OTMtXzB4MTFhNjczO30sXzB4MWM3ZmFmO2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxNzcpXSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4OGRiZTE9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4OGRiZTEoMHgxNzcpXVtfMHg4ZGJlMSgweDFlZildKCk7fTtlbHNle2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxYTMpXSYmXzB4MzA5ODQyWydwcm9jZXNzJ11bXzB4MjRkZmMyKDB4MTljKV0mJigoXzB4NTBhYmRmPShfMHgyYWMwNDg9XzB4MzA5ODQyWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDJhYzA0OFsnZW52J10pPT1udWxsP3ZvaWQgMHgwOl8weDUwYWJkZlsnTkVYVF9SVU5USU1FJ10pIT09XzB4MjRkZmMyKDB4MWU5KSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NTJkNjQwPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDUyZDY0MCgweDFhMyldWydocnRpbWUnXSgpO30sXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDU1MGJhOSxfMHgxNmEzZTIpe3JldHVybiAweDNlOCooXzB4MTZhM2UyWzB4MF0tXzB4NTUwYmE5WzB4MF0pKyhfMHgxNmEzZTJbMHgxXS1fMHg1NTBiYTlbMHgxXSkvMHhmNDI0MDt9O2Vsc2UgdHJ5e2xldCB7cGVyZm9ybWFuY2U6XzB4MzRkZTRhfT1yZXF1aXJlKF8weDI0ZGZjMigweDI0YikpO18weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg0ZjFkNjk9XzB4MjRkZmMyO3JldHVybiBfMHgzNGRlNGFbXzB4NGYxZDY5KDB4MWVmKV0oKTt9O31jYXRjaHtfMHgxYzdmYWY9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGUoKTt9O319cmV0dXJueydlbGFwc2VkJzpfMHhkZGJkZWYsJ3RpbWVTdGFtcCc6XzB4MWM3ZmFmLCdub3cnOigpPT5EYXRlW18weDI0ZGZjMigweDFlZildKCl9O31mdW5jdGlvbiBfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpe3ZhciBfMHg0OWZiZGM9XzB4NDlmYigpO3JldHVybiBfMHgyNjkwPWZ1bmN0aW9uKF8weDI2OTAxYixfMHgzNThmMWYpe18weDI2OTAxYj1fMHgyNjkwMWItMHgxNzM7dmFyIF8weDFmZjI4Nz1fMHg0OWZiZGNbXzB4MjY5MDFiXTtyZXR1cm4gXzB4MWZmMjg3O30sXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKTt9ZnVuY3Rpb24gSChfMHgyNjU1ZTMsXzB4MTRjYmY3LF8weDRjZDYwOSl7dmFyIF8weDI2YWMyYz1fMHhiMzg0NzksXzB4NGJlNzBkLF8weDNmYjRjYyxfMHgxZmZjNjIsXzB4NDdlOGFhLF8weDVmMDk0MjtpZihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddIT09dm9pZCAweDApcmV0dXJuIF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107bGV0IF8weDI1MTI5NT0oKF8weDNmYjRjYz0oXzB4NGJlNzBkPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NGJlNzBkW18weDI2YWMyYygweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgzZmI0Y2NbXzB4MjZhYzJjKDB4MWMxKV0pfHwoKF8weDQ3ZThhYT0oXzB4MWZmYzYyPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MWZmYzYyW18weDI2YWMyYygweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHg0N2U4YWFbJ05FWFRfUlVOVElNRSddKT09PV8weDI2YWMyYygweDFlOSk7ZnVuY3Rpb24gXzB4NTlkOWRlKF8weDE5NDkzOCl7dmFyIF8weDVlNWQ1Yz1fMHgyNmFjMmM7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDIzNyldKCcvJykmJl8weDE5NDkzOFsnZW5kc1dpdGgnXSgnLycpKXtsZXQgXzB4Y2I3ODA0PW5ldyBSZWdFeHAoXzB4MTk0OTM4WydzbGljZSddKDB4MSwtMHgxKSk7cmV0dXJuIF8weDQ5ZDc0Mj0+XzB4Y2I3ODA0W18weDVlNWQ1YygweDE4NyldKF8weDQ5ZDc0Mik7fWVsc2V7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCcqJyl8fF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnPycpKXtsZXQgXzB4NTBmYTJmPW5ldyBSZWdFeHAoJ14nK18weDE5NDkzOFtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXFxcXFwuL2csU3RyaW5nW18weDVlNWQ1YygweDI0ZSldKDB4NWMpKycuJylbJ3JlcGxhY2UnXSgvXFxcXFxcXFwqL2csJy4qJylbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFxcXFxcPy9nLCcuJykrU3RyaW5nWydmcm9tQ2hhckNvZGUnXSgweDI0KSk7cmV0dXJuIF8weDFhZWZjND0+XzB4NTBmYTJmW18weDVlNWQ1YygweDE4NyldKF8weDFhZWZjNCk7fWVsc2UgcmV0dXJuIF8weDQ2YmNmNj0+XzB4NDZiY2Y2PT09XzB4MTk0OTM4O319bGV0IF8weDIwNTQ2Zj1fMHgxNGNiZjdbXzB4MjZhYzJjKDB4MjI4KV0oXzB4NTlkOWRlKTtyZXR1cm4gXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldPV8weDI1MTI5NXx8IV8weDE0Y2JmNywhXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldJiYoKF8weDVmMDk0Mj1fMHgyNjU1ZTNbJ2xvY2F0aW9uJ10pPT1udWxsP3ZvaWQgMHgwOl8weDVmMDk0MltfMHgyNmFjMmMoMHgxZTYpXSkmJihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddPV8weDIwNTQ2ZltfMHgyNmFjMmMoMHgyNDgpXShfMHg0Mzg1YjQ9Pl8weDQzODViNChfMHgyNjU1ZTNbJ2xvY2F0aW9uJ11bJ2hvc3RuYW1lJ10pKSksXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTt9ZnVuY3Rpb24gWChfMHgyMmNjYjMsXzB4MmM3M2RlLF8weDRlMTcxYixfMHgzNWZjNjMpe3ZhciBfMHg0NzRlMjg9XzB4YjM4NDc5O18weDIyY2NiMz1fMHgyMmNjYjMsXzB4MmM3M2RlPV8weDJjNzNkZSxfMHg0ZTE3MWI9XzB4NGUxNzFiLF8weDM1ZmM2Mz1fMHgzNWZjNjM7bGV0IF8weDQxNTQ2OD1CKF8weDIyY2NiMyksXzB4MzdmNTYxPV8weDQxNTQ2OFtfMHg0NzRlMjgoMHgxZTgpXSxfMHg1OTE1OGI9XzB4NDE1NDY4Wyd0aW1lU3RhbXAnXTtjbGFzcyBfMHg0MzI4YmN7Y29uc3RydWN0b3IoKXt2YXIgXzB4MWFmNmY2PV8weDQ3NGUyODt0aGlzW18weDFhZjZmNigweDI0NCldPS9eKD8hKD86ZG98aWZ8aW58Zm9yfGxldHxuZXd8dHJ5fHZhcnxjYXNlfGVsc2V8ZW51bXxldmFsfGZhbHNlfG51bGx8dGhpc3x0cnVlfHZvaWR8d2l0aHxicmVha3xjYXRjaHxjbGFzc3xjb25zdHxzdXBlcnx0aHJvd3x3aGlsZXx5aWVsZHxkZWxldGV8ZXhwb3J0fGltcG9ydHxwdWJsaWN8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dHlwZW9mfGRlZmF1bHR8ZXh0ZW5kc3xmaW5hbGx5fHBhY2thZ2V8cHJpdmF0ZXxjb250aW51ZXxkZWJ1Z2dlcnxmdW5jdGlvbnxhcmd1bWVudHN8aW50ZXJmYWNlfHByb3RlY3RlZHxpbXBsZW1lbnRzfGluc3RhbmNlb2YpJClbXyRhLXpBLVpcXFxcXFxcXHhBMC1cXFxcXFxcXHVGRkZGXVtfJGEtekEtWjAtOVxcXFxcXFxceEEwLVxcXFxcXFxcdUZGRkZdKiQvLHRoaXNbJ19udW1iZXJSZWdFeHAnXT0vXigwfFsxLTldWzAtOV0qKSQvLHRoaXNbXzB4MWFmNmY2KDB4MWYxKV09LycoW15cXFxcXFxcXFxcXFxcXFxcJ118XFxcXFxcXFxcXFxcXFxcXCcpKicvLHRoaXNbXzB4MWFmNmY2KDB4MjE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIyNCldLHRoaXNbXzB4MWFmNmY2KDB4MWE1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDIwNyldLHRoaXNbXzB4MWFmNmY2KDB4MjA0KV09T2JqZWN0W18weDFhZjZmNigweDFiNyldLHRoaXNbJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJ109T2JqZWN0W18weDFhZjZmNigweDFjMCldLHRoaXNbXzB4MWFmNmY2KDB4MjI1KV09XzB4MjJjY2IzW18weDFhZjZmNigweDFlNyldLHRoaXNbXzB4MWFmNmY2KDB4MjNhKV09UmVnRXhwWydwcm90b3R5cGUnXVtfMHgxYWY2ZjYoMHgxYjUpXSx0aGlzWydfZGF0ZVRvU3RyaW5nJ109RGF0ZVtfMHgxYWY2ZjYoMHgyMjApXVsndG9TdHJpbmcnXTt9W18weDQ3NGUyOCgweDFjZildKF8weDUwNzIxYSxfMHg0YzgyOGMsXzB4NWUyZmZjLF8weDNlZjgzMil7dmFyIF8weDRlYmQ5ZD1fMHg0NzRlMjgsXzB4ZjY0NTk1PXRoaXMsXzB4YTAxNjE9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldO2Z1bmN0aW9uIF8weDI0MzEwOShfMHg0MDAyYjcsXzB4MzRiNWVjLF8weDQ3Njc0Myl7dmFyIF8weDQ2OTY2ND1fMHg0ZWJkOWQ7XzB4MzRiNWVjWyd0eXBlJ109XzB4NDY5NjY0KDB4MWMyKSxfMHgzNGI1ZWNbXzB4NDY5NjY0KDB4MjFiKV09XzB4NDAwMmI3W18weDQ2OTY2NCgweDIzNCldLF8weDJhMjAxMD1fMHg0NzY3NDNbXzB4NDY5NjY0KDB4MWMxKV1bXzB4NDY5NjY0KDB4MjAzKV0sXzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldPV8weDM0YjVlYyxfMHhmNjQ1OTVbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHgzNGI1ZWMsXzB4NDc2NzQzKTt9dHJ5e18weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZWMpXSsrLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldW18weDRlYmQ5ZCgweDE5ZSldKF8weDRjODI4Yyk7dmFyIF8weDc4OTI4NixfMHg0YjNhM2EsXzB4MTBhNTksXzB4NDMyOTY2LF8weDNiNDliMz1bXSxfMHg1NzU4MDg9W10sXzB4MjVhNDg0LF8weDQxZTExZD10aGlzW18weDRlYmQ5ZCgweDI2MCldKF8weDRjODI4YyksXzB4MjVlMzY2PV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFiYiksXzB4MjI4ODMwPSEweDEsXzB4MzUxYTQxPV8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIxMCksXzB4NTNlMzAzPXRoaXNbXzB4NGViZDlkKDB4MTliKV0oXzB4NDFlMTFkKSxfMHgzZTQ1YjI9dGhpc1tfMHg0ZWJkOWQoMHgxODMpXShfMHg0MWUxMWQpLF8weDM0NTAyOD1fMHg1M2UzMDN8fF8weDNlNDViMixfMHg1YzNjOGE9e30sXzB4MWNiZTM2PTB4MCxfMHgyZTZjZmM9ITB4MSxfMHgyYTIwMTAsXzB4MTI4MjBhPS9eKChbMS05XXsxfVswLTldKil8MCkkLztpZihfMHg1ZTJmZmNbJ2RlcHRoJ10pe2lmKF8weDI1ZTM2Nil7aWYoXzB4NGIzYTNhPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyNDEpXSxfMHg0YjNhM2E+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI2MildKXtmb3IoXzB4MTBhNTk9MHgwLF8weDQzMjk2Nj1fMHg1ZTJmZmNbJ2VsZW1lbnRzJ10sXzB4Nzg5Mjg2PV8weDEwYTU5O18weDc4OTI4NjxfMHg0MzI5NjY7XzB4Nzg5Mjg2KyspXzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVtfMHg0ZWJkOWQoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weDQxZTExZCxfMHg3ODkyODYsXzB4NWUyZmZjKSk7XzB4NTA3MjFhW18weDRlYmQ5ZCgweDE4MCldPSEweDA7fWVsc2V7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NGIzYTNhLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO31fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTt9aWYoIShfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxZmQpfHxfMHg0MWUxMWQ9PT0ndW5kZWZpbmVkJykmJiFfMHg1M2UzMDMmJl8weDQxZTExZCE9PSdTdHJpbmcnJiZfMHg0MWUxMWQhPT0nQnVmZmVyJyYmXzB4NDFlMTFkIT09XzB4NGViZDlkKDB4MjM1KSl7dmFyIF8weDI1MjEyYj1fMHgzZWY4MzJbXzB4NGViZDlkKDB4MjQ3KV18fF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNDcpXTtpZih0aGlzW18weDRlYmQ5ZCgweDFhNCldKF8weDRjODI4Yyk/KF8weDc4OTI4Nj0weDAsXzB4NGM4MjhjW18weDRlYmQ5ZCgweDFlMSldKGZ1bmN0aW9uKF8weDMxNjI1Yil7dmFyIF8weGExMTQ3ZD1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weGExMTQ3ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjW18weGExMTQ3ZCgweDFjYildJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4YTExNDdkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9XzB4NTc1ODA4W18weGExMTQ3ZCgweDE5ZSldKF8weGY2NDU5NVtfMHhhMTE0N2QoMHgxYjkpXShfMHgzYjQ5YjMsXzB4NGM4MjhjLF8weGExMTQ3ZCgweDIyNyksXzB4Nzg5Mjg2KyssXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEwZDE1YSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEwZDE1YTt9O30oXzB4MzE2MjViKSkpO30pKTp0aGlzW18weDRlYmQ5ZCgweDIwYyldKF8weDRjODI4YykmJl8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzODI0ZGYsXzB4MzkyNjVjKXt2YXIgXzB4OGU5OWU0PV8weDRlYmQ5ZDtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4OGU5OWU0KDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO3JldHVybjt9dmFyIF8weDEwZGQzND1fMHgzOTI2NWNbJ3RvU3RyaW5nJ10oKTtfMHgxMGRkMzRbXzB4OGU5OWU0KDB4MjQxKV0+MHg2NCYmKF8weDEwZGQzND1fMHgxMGRkMzRbJ3NsaWNlJ10oMHgwLDB4NjQpK18weDhlOTllNCgweDFkMCkpLF8weDU3NTgwOFtfMHg4ZTk5ZTQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4OGU5OWU0KDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg4ZTk5ZTQoMHgyNWEpLF8weDEwZGQzNCxfMHg1ZTJmZmMsZnVuY3Rpb24oXzB4MTM1MTU2KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXzB4MTM1MTU2O307fShfMHgzODI0ZGYpKSk7fSksIV8weDIyODgzMCl7dHJ5e2ZvcihfMHgyNWE0ODQgaW4gXzB4NGM4MjhjKWlmKCEoXzB4MjVlMzY2JiZfMHgxMjgyMGFbJ3Rlc3QnXShfMHgyNWE0ODQpKSYmIXRoaXNbXzB4NGViZDlkKDB4MTc5KV0oXzB4NGM4MjhjLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKXtpZihfMHgxY2JlMzYrKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0rKyxfMHgxY2JlMzY+XzB4MjUyMTJiKXtfMHgyZTZjZmM9ITB4MDticmVhazt9aWYoIV8weDVlMmZmY1snaXNFeHByZXNzaW9uVG9FdmFsdWF0ZSddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1WydfYWRkT2JqZWN0UHJvcGVydHknXShfMHgzYjQ5YjMsXzB4NWMzYzhhLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4MjVhNDg0LF8weDVlMmZmYykpO319Y2F0Y2h7fWlmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgyMTkpXT0hMHgwLF8weDM1MWE0MSYmKF8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZDgpXT0hMHgwKSwhXzB4MmU2Y2ZjKXt2YXIgXzB4MTEzMzI4PVtdW18weDRlYmQ5ZCgweDIzYyldKHRoaXNbXzB4NGViZDlkKDB4MjMzKV0oXzB4NGM4MjhjKSlbJ2NvbmNhdCddKHRoaXNbXzB4NGViZDlkKDB4MWVkKV0oXzB4NGM4MjhjKSk7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDExMzMyOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKWlmKF8weDI1YTQ4ND1fMHgxMTMzMjhbXzB4Nzg5Mjg2XSwhKF8weDI1ZTM2NiYmXzB4MTI4MjBhW18weDRlYmQ5ZCgweDE4NyldKF8weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpKSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSYmIV8weDVjM2M4YVtfMHg0ZWJkOWQoMHgxZTIpK18weDI1YTQ4NFtfMHg0ZWJkOWQoMHgxYjUpXSgpXSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjWydhdXRvRXhwYW5kJ10mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxN2MpXT5fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjUwKV0pe18weDJlNmNmYz0hMHgwO2JyZWFrO31fMHg1NzU4MDhbJ3B1c2gnXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI2KV0oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fX19fWlmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxZDUpXT1fMHg0MWUxMWQsXzB4MzQ1MDI4PyhfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjW18weDRlYmQ5ZCgweDIyYSldKCksdGhpc1snX2NhcElmU3RyaW5nJ10oXzB4NDFlMTFkLF8weDUwNzIxYSxfMHg1ZTJmZmMsXzB4M2VmODMyKSk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWFjKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX2RhdGVUb1N0cmluZyddWydjYWxsJ10oXzB4NGM4MjhjKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMzUpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT1fMHg0YzgyOGNbJ3RvU3RyaW5nJ10oKTpfMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxN2EpP18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXT10aGlzWydfcmVnRXhwVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTczKSYmdGhpc1tfMHg0ZWJkOWQoMHgyMjUpXT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1tfMHg0ZWJkOWQoMHgyMjUpXVtfMHg0ZWJkOWQoMHgyMjApXVtfMHg0ZWJkOWQoMHgxYjUpXVtfMHg0ZWJkOWQoMHgyMmYpXShfMHg0YzgyOGMpOiFfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjIxKV0mJiEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjI0KSkmJihkZWxldGUgXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldLF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyMGIpXT0hMHgwKSxfMHgyZTZjZmMmJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWJlKV09ITB4MCksXzB4MmEyMDEwPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYzEpXVtfMHg0ZWJkOWQoMHgyMDMpXSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bJ2N1cnJlbnQnXT1fMHg1MDcyMWEsdGhpc1snX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZSddKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXSl7Zm9yKF8weDc4OTI4Nj0weDAsXzB4NGIzYTNhPV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgyNDEpXTtfMHg3ODkyODY8XzB4NGIzYTNhO18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg3ODkyODZdKF8weDc4OTI4Nik7fV8weDNiNDliM1tfMHg0ZWJkOWQoMHgyNDEpXSYmKF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgyNDcpXT1fMHgzYjQ5YjMpO31jYXRjaChfMHgzYzkwYzcpe18weDI0MzEwOShfMHgzYzkwYzcsXzB4NTA3MjFhLF8weDVlMmZmYyk7fXJldHVybiB0aGlzW18weDRlYmQ5ZCgweDFlYildKF8weDRjODI4YyxfMHg1MDcyMWEpLHRoaXNbXzB4NGViZDlkKDB4MWQzKV0oXzB4NTA3MjFhLF8weDVlMmZmYyksXzB4NWUyZmZjWydub2RlJ11bJ2N1cnJlbnQnXT1fMHgyYTIwMTAsXzB4NWUyZmZjWydsZXZlbCddLS0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldPV8weGEwMTYxLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFmMyldWydwb3AnXSgpLF8weDUwNzIxYTt9WydfZ2V0T3duUHJvcGVydHlTeW1ib2xzJ10oXzB4MjFmNTQ4KXt2YXIgXzB4MWIwMWExPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDFiMDFhMSgweDIwNildP09iamVjdFtfMHgxYjAxYTEoMHgyMDYpXShfMHgyMWY1NDgpOltdO31bXzB4NDc0ZTI4KDB4MWE0KV0oXzB4MTViMWE3KXt2YXIgXzB4MzcwNjUzPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxNWIxYTcmJl8weDIyY2NiM1tfMHgzNzA2NTMoMHgyMjcpXSYmdGhpc1tfMHgzNzA2NTMoMHgyMmMpXShfMHgxNWIxYTcpPT09XzB4MzcwNjUzKDB4MjFlKSYmXzB4MTViMWE3W18weDM3MDY1MygweDFlMSldKTt9W18weDQ3NGUyOCgweDE3OSldKF8weDQ1ZmJlZCxfMHg1Yjg2ZGIsXzB4Mzc2ZjNmKXt2YXIgXzB4MzJmYjAzPV8weDQ3NGUyODtyZXR1cm4gXzB4Mzc2ZjNmW18weDMyZmIwMygweDFiMSldP3R5cGVvZiBfMHg0NWZiZWRbXzB4NWI4NmRiXT09XzB4MzJmYjAzKDB4MjEwKTohMHgxO31bXzB4NDc0ZTI4KDB4MjYwKV0oXzB4MmI1NmVjKXt2YXIgXzB4MWUwMTUyPV8weDQ3NGUyOCxfMHgzNmJkYjc9Jyc7cmV0dXJuIF8weDM2YmRiNz10eXBlb2YgXzB4MmI1NmVjLF8weDM2YmRiNz09PV8weDFlMDE1MigweDI0Yyk/dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MThhKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWJiKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT1fMHgxZTAxNTIoMHgyM2YpP18weDM2YmRiNz1fMHgxZTAxNTIoMHgxYWMpOnRoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PSdbb2JqZWN0XFxcXFxcXFx4MjBCaWdJbnRdJz9fMHgzNmJkYjc9J2JpZ2ludCc6XzB4MmI1NmVjPT09bnVsbD9fMHgzNmJkYjc9J251bGwnOl8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXSYmKF8weDM2YmRiNz1fMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV1bXzB4MWUwMTUyKDB4MjE2KV18fF8weDM2YmRiNyk6XzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjI0KSYmdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmXzB4MmI1NmVjIGluc3RhbmNlb2YgdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmKF8weDM2YmRiNz1fMHgxZTAxNTIoMHgyMDcpKSxfMHgzNmJkYjc7fVsnX29iamVjdFRvU3RyaW5nJ10oXzB4ZDU2NzY0KXt2YXIgXzB4NWFiZDIzPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDVhYmQyMygweDIyMCldW18weDVhYmQyMygweDFiNSldW18weDVhYmQyMygweDIyZildKF8weGQ1Njc2NCk7fVsnX2lzUHJpbWl0aXZlVHlwZSddKF8weGI4OGQ5Nyl7dmFyIF8weDUwNmFmND1fMHg0NzRlMjg7cmV0dXJuIF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDIzZSl8fF8weGI4OGQ5Nz09PSdzdHJpbmcnfHxfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgxYWQpO31bXzB4NDc0ZTI4KDB4MTgzKV0oXzB4MmIzYmZkKXt2YXIgXzB4MzA3OTU2PV8weDQ3NGUyODtyZXR1cm4gXzB4MmIzYmZkPT09J0Jvb2xlYW4nfHxfMHgyYjNiZmQ9PT1fMHgzMDc5NTYoMHgxZGEpfHxfMHgyYjNiZmQ9PT0nTnVtYmVyJzt9WydfYWRkUHJvcGVydHknXShfMHgzNWYyYWMsXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSl7dmFyIF8weDMxNTdmMT10aGlzO3JldHVybiBmdW5jdGlvbihfMHgxZjhhNzEpe3ZhciBfMHgxOWMzYjg9XzB4MjY5MCxfMHg0MGJmZmM9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDIwMyldLF8weDE2MjhjZj1fMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXSxfMHg5M2VkNWY9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldO18weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVsncGFyZW50J109XzB4NDBiZmZjLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxZDEpXT10eXBlb2YgXzB4NGEyYWIxPT1fMHgxOWMzYjgoMHgxYWQpP18weDRhMmFiMTpfMHgxZjhhNzEsXzB4MzVmMmFjW18weDE5YzNiOCgweDE5ZSldKF8weDMxNTdmMVsnX3Byb3BlcnR5J10oXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSkpLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXT1fMHg5M2VkNWYsXzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV09XzB4MTYyOGNmO307fVtfMHg0NzRlMjgoMHgxYjYpXShfMHhjODRiOTMsXzB4M2UyZjQ0LF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApe3ZhciBfMHgxZDdhNWY9XzB4NDc0ZTI4LF8weGI5NmE2MD10aGlzO3JldHVybiBfMHgzZTJmNDRbXzB4MWQ3YTVmKDB4MWUyKStfMHg0ZTE0OGRbXzB4MWQ3YTVmKDB4MWI1KV0oKV09ITB4MCxmdW5jdGlvbihfMHg1ZDRjOTQpe3ZhciBfMHg1NDYzZDk9XzB4MWQ3YTVmLF8weDM3ZmQ2Mj1fMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgyMDMpXSxfMHgyZThjZjc9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFkMSldLF8weDQxMWU2Nj1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ3BhcmVudCddO18weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxYmQpXT1fMHgzN2ZkNjIsXzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MWQxKV09XzB4NWQ0Yzk0LF8weGM4NGI5M1tfMHg1NDYzZDkoMHgxOWUpXShfMHhiOTZhNjBbXzB4NTQ2M2Q5KDB4MjI2KV0oXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCkpLF8weDJlY2Q1Zlsnbm9kZSddWydwYXJlbnQnXT1fMHg0MTFlNjYsXzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydpbmRleCddPV8weDJlOGNmNzt9O31bXzB4NDc0ZTI4KDB4MjI2KV0oXzB4MzA5MDA0LF8weDI3ZjhmNCxfMHgyZDQwNmEsXzB4M2QxZWIyLF8weDVkYzE0OCl7dmFyIF8weDJmNjdjMD1fMHg0NzRlMjgsXzB4M2QyMzUxPXRoaXM7XzB4NWRjMTQ4fHwoXzB4NWRjMTQ4PWZ1bmN0aW9uKF8weDE2ZTViNCxfMHg5ZDU5Nzgpe3JldHVybiBfMHgxNmU1YjRbXzB4OWQ1OTc4XTt9KTt2YXIgXzB4MTIxZDc5PV8weDJkNDA2YVsndG9TdHJpbmcnXSgpLF8weDEwYTM1Zj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV18fHt9LF8weDU4OTc0Mj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0sXzB4ODJhYmY0PV8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXTt0cnl7dmFyIF8weDI1YTYyYT10aGlzW18weDJmNjdjMCgweDIwYyldKF8weDMwOTAwNCksXzB4MTdiY2I1PV8weDEyMWQ3OTtfMHgyNWE2MmEmJl8weDE3YmNiNVsweDBdPT09J1xcXFxcXFxceDI3JyYmKF8weDE3YmNiNT1fMHgxN2JjYjVbJ3N1YnN0ciddKDB4MSxfMHgxN2JjYjVbJ2xlbmd0aCddLTB4MikpO3ZhciBfMHg1Mzg1ODE9XzB4M2QxZWIyW18weDJmNjdjMCgweDIwZCldPV8weDEwYTM1ZltfMHgyZjY3YzAoMHgxZTIpK18weDE3YmNiNV07XzB4NTM4NTgxJiYoXzB4M2QxZWIyWydkZXB0aCddPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXSsweDEpLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT0hIV8weDUzODU4MTt2YXIgXzB4NTdhNzQyPXR5cGVvZiBfMHgyZDQwNmE9PV8weDJmNjdjMCgweDE3MyksXzB4NDI4NzY3PXsnbmFtZSc6XzB4NTdhNzQyfHxfMHgyNWE2MmE/XzB4MTIxZDc5OnRoaXNbJ19wcm9wZXJ0eU5hbWUnXShfMHgxMjFkNzkpfTtpZihfMHg1N2E3NDImJihfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MTczKV09ITB4MCksIShfMHgyN2Y4ZjQ9PT1fMHgyZjY3YzAoMHgxYmIpfHxfMHgyN2Y4ZjQ9PT0nRXJyb3InKSl7dmFyIF8weDI3YzM3Yj10aGlzW18weDJmNjdjMCgweDIwNCldKF8weDMwOTAwNCxfMHgyZDQwNmEpO2lmKF8weDI3YzM3YiYmKF8weDI3YzM3YltfMHgyZjY3YzAoMHgxZmMpXSYmKF8weDQyODc2N1snc2V0dGVyJ109ITB4MCksXzB4MjdjMzdiW18weDJmNjdjMCgweDI1MildJiYhXzB4NTM4NTgxJiYhXzB4M2QxZWIyW18weDJmNjdjMCgweDFkYyldKSlyZXR1cm4gXzB4NDI4NzY3W18weDJmNjdjMCgweDFmNildPSEweDAsdGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHg1M2RiM2Y7dHJ5e18weDUzZGIzZj1fMHg1ZGMxNDgoXzB4MzA5MDA0LF8weDJkNDA2YSk7fWNhdGNoKF8weDE3NWY2Yyl7cmV0dXJuIF8weDQyODc2Nz17J25hbWUnOl8weDEyMWQ3OSwndHlwZSc6XzB4MmY2N2MwKDB4MWMyKSwnZXJyb3InOl8weDE3NWY2Y1tfMHgyZjY3YzAoMHgyMzQpXX0sdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDNjY2QwOT10aGlzW18weDJmNjdjMCgweDI2MCldKF8weDUzZGIzZiksXzB4NDk1NDU3PXRoaXNbXzB4MmY2N2MwKDB4MTliKV0oXzB4M2NjZDA5KTtpZihfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWQ1KV09XzB4M2NjZDA5LF8weDQ5NTQ1Nyl0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMixfMHg1M2RiM2YsZnVuY3Rpb24oKXt2YXIgXzB4Mjk0MjZhPV8weDJmNjdjMDtfMHg0Mjg3NjdbXzB4Mjk0MjZhKDB4MWFlKV09XzB4NTNkYjNmW18weDI5NDI2YSgweDIyYSldKCksIV8weDUzODU4MSYmXzB4M2QyMzUxW18weDI5NDI2YSgweDI0OSldKF8weDNjY2QwOSxfMHg0Mjg3NjcsXzB4M2QxZWIyLHt9KTt9KTtlbHNle3ZhciBfMHhkODBlNj1fMHgzZDFlYjJbJ2F1dG9FeHBhbmQnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFlYyldPF8weDNkMWViMlsnYXV0b0V4cGFuZE1heERlcHRoJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZjMpXVsnaW5kZXhPZiddKF8weDUzZGIzZik8MHgwJiZfMHgzY2NkMDkhPT0nZnVuY3Rpb24nJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MTdjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTGltaXQnXTtfMHhkODBlNnx8XzB4M2QxZWIyWydsZXZlbCddPF8weDU4OTc0Mnx8XzB4NTM4NTgxPyh0aGlzW18weDJmNjdjMCgweDFjZildKF8weDQyODc2NyxfMHg1M2RiM2YsXzB4M2QxZWIyLF8weDUzODU4MXx8e30pLHRoaXNbXzB4MmY2N2MwKDB4MWViKV0oXzB4NTNkYjNmLF8weDQyODc2NykpOnRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMixfMHg1M2RiM2YsZnVuY3Rpb24oKXt2YXIgXzB4NTQyZGUxPV8weDJmNjdjMDtfMHgzY2NkMDk9PT1fMHg1NDJkZTEoMHgxZmQpfHxfMHgzY2NkMDk9PT1fMHg1NDJkZTEoMHgyMjQpfHwoZGVsZXRlIF8weDQyODc2N1tfMHg1NDJkZTEoMHgxYWUpXSxfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MjBiKV09ITB4MCk7fSk7fXJldHVybiBfMHg0Mjg3Njc7fWZpbmFsbHl7XzB4M2QxZWIyWydleHByZXNzaW9uc1RvRXZhbHVhdGUnXT1fMHgxMGEzNWYsXzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldPV8weDU4OTc0MixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09XzB4ODJhYmY0O319W18weDQ3NGUyOCgweDI0OSldKF8weDRkMTEyZSxfMHg0NTFhZTUsXzB4NTZkNjEwLF8weDNiZjQ4ZSl7dmFyIF8weDY3ODE2OD1fMHg0NzRlMjgsXzB4ZjlkNzc3PV8weDNiZjQ4ZVtfMHg2NzgxNjgoMHgyMTIpXXx8XzB4NTZkNjEwW18weDY3ODE2OCgweDIxMildO2lmKChfMHg0ZDExMmU9PT1fMHg2NzgxNjgoMHgxY2EpfHxfMHg0ZDExMmU9PT1fMHg2NzgxNjgoMHgxZGEpKSYmXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKXtsZXQgXzB4M2EwMGQ0PV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNDEpXTtfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjYzKV0rPV8weDNhMDBkNCxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjYzKV0+XzB4NTZkNjEwW18weDY3ODE2OCgweDFhOSldPyhfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09JycsZGVsZXRlIF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSk6XzB4M2EwMGQ0Pl8weGY5ZDc3NyYmKF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjU1KV0oMHgwLF8weGY5ZDc3NyksZGVsZXRlIF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSk7fX1bXzB4NDc0ZTI4KDB4MjBjKV0oXzB4MTljYmU1KXt2YXIgXzB4NDlhNDUxPV8weDQ3NGUyODtyZXR1cm4hIShfMHgxOWNiZTUmJl8weDIyY2NiM1snTWFwJ10mJnRoaXNbXzB4NDlhNDUxKDB4MjJjKV0oXzB4MTljYmU1KT09PV8weDQ5YTQ1MSgweDE4NikmJl8weDE5Y2JlNVsnZm9yRWFjaCddKTt9W18weDQ3NGUyOCgweDFjYyldKF8weDU3MWY2YSl7dmFyIF8weDM4NDk0ZT1fMHg0NzRlMjg7aWYoXzB4NTcxZjZhW18weDM4NDk0ZSgweDE5NildKC9eXFxcXFxcXFxkKyQvKSlyZXR1cm4gXzB4NTcxZjZhO3ZhciBfMHgyYWMxZTA7dHJ5e18weDJhYzFlMD1KU09OWydzdHJpbmdpZnknXSgnJytfMHg1NzFmNmEpO31jYXRjaHtfMHgyYWMxZTA9J1xcXFxcXFxceDIyJyt0aGlzW18weDM4NDk0ZSgweDIyYyldKF8weDU3MWY2YSkrJ1xcXFxcXFxceDIyJzt9cmV0dXJuIF8weDJhYzFlMFtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxcXFwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcXFxcXCIkLyk/XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNTUpXSgweDEsXzB4MmFjMWUwW18weDM4NDk0ZSgweDI0MSldLTB4Mik6XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgxN2IpXSgvJy9nLCdcXFxcXFxcXHg1Y1xcXFxcXFxceDI3JylbXzB4Mzg0OTRlKDB4MTdiKV0oL1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcIi9nLCdcXFxcXFxcXHgyMicpW18weDM4NDk0ZSgweDE3YildKC8oXlxcXFxcXFwifFxcXFxcXFwiJCkvZywnXFxcXFxcXFx4MjcnKSxfMHgyYWMxZTA7fVtfMHg0NzRlMjgoMHgyNTgpXShfMHg0Y2RmMjQsXzB4NDVkYTEyLF8weDE4ZTE2NyxfMHhlYzNmNil7dmFyIF8weDFkMTlmNT1fMHg0NzRlMjg7dGhpc1tfMHgxZDE5ZjUoMHgyMjMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKSxfMHhlYzNmNiYmXzB4ZWMzZjYoKSx0aGlzW18weDFkMTlmNSgweDFlYildKF8weDE4ZTE2NyxfMHg0Y2RmMjQpLHRoaXNbXzB4MWQxOWY1KDB4MWQzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMik7fVtfMHg0NzRlMjgoMHgyMjMpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKXt2YXIgXzB4MmVlZmMwPV8weDQ3NGUyODt0aGlzW18weDJlZWZjMCgweDE3OCldKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUGVybWlzc2lvbnMnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKTt9W18weDQ3NGUyOCgweDE3OCldKF8weDNkMGQ0NSxfMHgzODZiYTUpe31bJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4MmY4MzMwLF8weDQ1NjY2MCl7fVtfMHg0NzRlMjgoMHgxZTMpXShfMHg1NTk2YzIsXzB4M2Y3YTkyKXt9W18weDQ3NGUyOCgweDE4MildKF8weDc1Y2VhKXt2YXIgXzB4NTg2YmFjPV8weDQ3NGUyODtyZXR1cm4gXzB4NzVjZWE9PT10aGlzW18weDU4NmJhYygweDIxNSldO31bXzB4NDc0ZTI4KDB4MWQzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSl7dmFyIF8weDRkY2JmYz1fMHg0NzRlMjg7dGhpc1tfMHg0ZGNiZmMoMHgxZTMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDE4OCldKF8weDQzNGVjOSksXzB4MzQ0MDhlW18weDRkY2JmYygweDI0MildJiZ0aGlzW18weDRkY2JmYygweDFmOSldKF8weDQzNGVjOSksdGhpc1tfMHg0ZGNiZmMoMHgxYjgpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDI2NCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbJ19jbGVhbk5vZGUnXShfMHg0MzRlYzkpO31bXzB4NDc0ZTI4KDB4MWViKV0oXzB4NTk5ZDI0LF8weDQxMzM1Nyl7dmFyIF8weDJkMGZjNz1fMHg0NzRlMjg7bGV0IF8weGMyZDg0Nzt0cnl7XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldJiYoXzB4YzJkODQ3PV8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXSxfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV09ZnVuY3Rpb24oKXt9KSxfMHg1OTlkMjQmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV09PV8weDJkMGZjNygweDFhZCkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjQxKV09XzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldKTt9Y2F0Y2h7fWZpbmFsbHl7XzB4YzJkODQ3JiYoXzB4MjJjY2IzWydjb25zb2xlJ11bJ2Vycm9yJ109XzB4YzJkODQ3KTt9aWYoXzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxYWQpfHxfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFkNikpe2lmKGlzTmFOKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkpXzB4NDEzMzU3W18weDJkMGZjNygweDI0ZildPSEweDAsZGVsZXRlIF8weDQxMzM1N1sndmFsdWUnXTtlbHNlIHN3aXRjaChfMHg0MTMzNTdbJ3ZhbHVlJ10pe2Nhc2UgTnVtYmVyWydQT1NJVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMmQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSBOdW1iZXJbJ05FR0FUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIxZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIDB4MDp0aGlzW18weDJkMGZjNygweDIzMCldKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWZmKV09ITB4MCk7YnJlYWs7fX1lbHNlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZDUpXT09PV8weDJkMGZjNygweDIxMCkmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV09PV8weDJkMGZjNygweDFjYSkmJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0hPT1fMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MTlkKV09XzB4NTk5ZDI0WyduYW1lJ10pO31bXzB4NDc0ZTI4KDB4MjMwKV0oXzB4ZDU1MzlmKXt2YXIgXzB4MmVhZTYzPV8weDQ3NGUyODtyZXR1cm4gMHgxL18weGQ1NTM5Zj09PU51bWJlcltfMHgyZWFlNjMoMHgyNWMpXTt9Wydfc29ydFByb3BzJ10oXzB4MzgwMjM1KXt2YXIgXzB4MTQ2MTM1PV8weDQ3NGUyODshXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldfHwhXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDI0MSldfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgxYmIpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgyNWEpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT0nU2V0J3x8XzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDFmYildKGZ1bmN0aW9uKF8weDQxNDkyOCxfMHgxOTQ1ZmMpe3ZhciBfMHgyNjY4OTI9XzB4MTQ2MTM1LF8weDFiNjZiNz1fMHg0MTQ5MjhbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKSxfMHg1MzI4YmI9XzB4MTk0NWZjW18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCk7cmV0dXJuIF8weDFiNjZiNzxfMHg1MzI4YmI/LTB4MTpfMHgxYjY2Yjc+XzB4NTMyOGJiPzB4MToweDA7fSk7fVtfMHg0NzRlMjgoMHgxYjgpXShfMHgzNjliZmYsXzB4MWUxYzY4KXt2YXIgXzB4MjU3OGU5PV8weDQ3NGUyODtpZighKF8weDFlMWM2OFtfMHgyNTc4ZTkoMHgxYjEpXXx8IV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXXx8IV8weDM2OWJmZlsncHJvcHMnXVsnbGVuZ3RoJ10pKXtmb3IodmFyIF8weDQxMjRiMD1bXSxfMHg1ZDhjMTI9W10sXzB4MWIwMmY3PTB4MCxfMHgyOTExNGY9XzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDI0MSldO18weDFiMDJmNzxfMHgyOTExNGY7XzB4MWIwMmY3Kyspe3ZhciBfMHg0ZGFkMDc9XzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldW18weDFiMDJmN107XzB4NGRhZDA3W18weDI1NzhlOSgweDFkNSldPT09XzB4MjU3OGU5KDB4MjEwKT9fMHg0MTI0YjBbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTpfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTt9aWYoISghXzB4NWQ4YzEyW18weDI1NzhlOSgweDI0MSldfHxfMHg0MTI0YjBbXzB4MjU3OGU5KDB4MjQxKV08PTB4MSkpe18weDM2OWJmZlsncHJvcHMnXT1fMHg1ZDhjMTI7dmFyIF8weDNmNTEzZT17J2Z1bmN0aW9uc05vZGUnOiEweDAsJ3Byb3BzJzpfMHg0MTI0YjB9O3RoaXNbXzB4MjU3OGU5KDB4MTc4KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxZTMpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDE4OCldKF8weDNmNTEzZSksdGhpc1tfMHgyNTc4ZTkoMHgxZDcpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSxfMHgzZjUxM2VbJ2lkJ10rPSdcXFxcXFxcXHgyMGYnLF8weDM2OWJmZlsncHJvcHMnXVtfMHgyNTc4ZTkoMHgxYTIpXShfMHgzZjUxM2UpO319fVsnX2FkZExvYWROb2RlJ10oXzB4MjUxZmVhLF8weDFjN2JlZCl7fVtfMHg0NzRlMjgoMHgxODgpXShfMHg0MjBjNWUpe31bJ19pc0FycmF5J10oXzB4MTcxZDM4KXt2YXIgXzB4NDE2MjM0PV8weDQ3NGUyODtyZXR1cm4gQXJyYXlbJ2lzQXJyYXknXShfMHgxNzFkMzgpfHx0eXBlb2YgXzB4MTcxZDM4PT1fMHg0MTYyMzQoMHgyNGMpJiZ0aGlzWydfb2JqZWN0VG9TdHJpbmcnXShfMHgxNzFkMzgpPT09XzB4NDE2MjM0KDB4MThhKTt9W18weDQ3NGUyOCgweDFkNyldKF8weDMxYmRjNCxfMHg1MTc5YjEpe31bXzB4NDc0ZTI4KDB4MjM4KV0oXzB4NGUwZWNjKXt2YXIgXzB4NDEyMDc5PV8weDQ3NGUyODtkZWxldGUgXzB4NGUwZWNjW18weDQxMjA3OSgweDIwMildLGRlbGV0ZSBfMHg0ZTBlY2NbJ19oYXNTZXRPbkl0c1BhdGgnXSxkZWxldGUgXzB4NGUwZWNjW18weDQxMjA3OSgweDIxMyldO31bJ19zZXROb2RlRXhwcmVzc2lvblBhdGgnXShfMHgxMWJlYTYsXzB4NDdlMDMyKXt9fWxldCBfMHgzYTQ1NjQ9bmV3IF8weDQzMjhiYygpLF8weDQ2MGIzNj17J3Byb3BzJzoweDY0LCdlbGVtZW50cyc6MHg2NCwnc3RyTGVuZ3RoJzoweDQwMCoweDMyLCd0b3RhbFN0ckxlbmd0aCc6MHg0MDAqMHgzMiwnYXV0b0V4cGFuZExpbWl0JzoweDEzODgsJ2F1dG9FeHBhbmRNYXhEZXB0aCc6MHhhfSxfMHgxNTg2NmE9eydwcm9wcyc6MHg1LCdlbGVtZW50cyc6MHg1LCdzdHJMZW5ndGgnOjB4MTAwLCd0b3RhbFN0ckxlbmd0aCc6MHgxMDAqMHgzLCdhdXRvRXhwYW5kTGltaXQnOjB4MWUsJ2F1dG9FeHBhbmRNYXhEZXB0aCc6MHgyfTtmdW5jdGlvbiBfMHgyODE2MjQoXzB4MjM5MDBiLF8weDU5OGE0YSxfMHgxYjU0YWMsXzB4MjU0YmQ0LF8weDUxNDhhNCxfMHg0ZmI5NDApe3ZhciBfMHgzNTY3Y2M9XzB4NDc0ZTI4O2xldCBfMHgyZGJlMDEsXzB4NTRlOWZlO3RyeXtfMHg1NGU5ZmU9XzB4NTkxNThiKCksXzB4MmRiZTAxPV8weDRlMTcxYltfMHg1OThhNGFdLCFfMHgyZGJlMDF8fF8weDU0ZTlmZS1fMHgyZGJlMDFbJ3RzJ10+MHgxZjQmJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSYmXzB4MmRiZTAxW18weDM1NjdjYygweDIzNildL18weDJkYmUwMVsnY291bnQnXTwweDY0PyhfMHg0ZTE3MWJbXzB4NTk4YTRhXT1fMHgyZGJlMDE9eydjb3VudCc6MHgwLCd0aW1lJzoweDAsJ3RzJzpfMHg1NGU5ZmV9LF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXT17fSk6XzB4NTRlOWZlLV8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndHMnXT4weDMyJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ2NvdW50J10mJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHg0ZTE3MWJbJ2hpdHMnXVtfMHgzNTY3Y2MoMHgxZmEpXTwweDY0JiYoXzB4NGUxNzFiWydoaXRzJ109e30pO2xldCBfMHgxNzRkMWE9W10sXzB4NWEyZGI2PV8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXXx8XzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDI0NildP18weDE1ODY2YTpfMHg0NjBiMzYsXzB4MzY5ZmIwPV8weDQ2NWRjNz0+e3ZhciBfMHgxZTc5ODc9XzB4MzU2N2NjO2xldCBfMHgzNWIzMWU9e307cmV0dXJuIF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyNDcpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjQ3KV0sXzB4MzViMzFlWydlbGVtZW50cyddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNjIpXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjEyKV09XzB4NDY1ZGM3W18weDFlNzk4NygweDIxMildLF8weDM1YjMxZVsndG90YWxTdHJMZW5ndGgnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE5KV0sXzB4MzViMzFlWydhdXRvRXhwYW5kTGltaXQnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjUwKV0sXzB4MzViMzFlW18weDFlNzk4NygweDFhOCldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTgpXSxfMHgzNWIzMWVbJ3NvcnRQcm9wcyddPSEweDEsXzB4MzViMzFlW18weDFlNzk4NygweDFiMSldPSFfMHgyYzczZGUsXzB4MzViMzFlW18weDFlNzk4NygweDIyMSldPTB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWVjKV09MHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZDQpXT1fMHgxZTc5ODcoMHgxNzQpLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMGUpXT0ncm9vdF9leHAnLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYmEpXT0hMHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZjMpXT1bXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J109MHgwLF8weDM1YjMxZVsncmVzb2x2ZUdldHRlcnMnXT0hMHgwLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyNjMpXT0weDAsXzB4MzViMzFlWydub2RlJ109eydjdXJyZW50Jzp2b2lkIDB4MCwncGFyZW50Jzp2b2lkIDB4MCwnaW5kZXgnOjB4MH0sXzB4MzViMzFlO307Zm9yKHZhciBfMHg1NDRlMWU9MHgwO18weDU0NGUxZTxfMHg1MTQ4YTRbJ2xlbmd0aCddO18weDU0NGUxZSsrKV8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeyd0aW1lTm9kZSc6XzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MjM2KXx8dm9pZCAweDB9LF8weDUxNDhhNFtfMHg1NDRlMWVdLF8weDM2OWZiMChfMHg1YTJkYjYpLHt9KSk7aWYoXzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MWFiKXx8XzB4MjM5MDBiPT09XzB4MzU2N2NjKDB4MjFiKSl7bGV0IF8weDE2YmM1MD1FcnJvcltfMHgzNTY3Y2MoMHgxODkpXTt0cnl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09MHgxLzB4MCxfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsnc3RhY2tOb2RlJzohMHgwfSxuZXcgRXJyb3IoKVtfMHgzNTY3Y2MoMHgyMDEpXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7J3N0ckxlbmd0aCc6MHgxLzB4MH0pKTt9ZmluYWxseXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT1fMHgxNmJjNTA7fX1yZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOl8weDE3NGQxYSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31jYXRjaChfMHg2NTdmYjApe3JldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6W3sndHlwZSc6XzB4MzU2N2NjKDB4MWMyKSwnZXJyb3InOl8weDY1N2ZiMCYmXzB4NjU3ZmIwW18weDM1NjdjYygweDIzNCldfV0sJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9ZmluYWxseXt0cnl7aWYoXzB4MmRiZTAxJiZfMHg1NGU5ZmUpe2xldCBfMHg1NjllMmE9XzB4NTkxNThiKCk7XzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldKyssXzB4MmRiZTAxW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4MmRiZTAxWyd0cyddPV8weDU2OWUyYSxfMHg0ZTE3MWJbJ2hpdHMnXVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndHMnXT1fMHg1NjllMmEsKF8weDJkYmUwMVsnY291bnQnXT4weDMyfHxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0+MHg2NCkmJihfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV09ITB4MCksKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgxZmEpXT4weDNlOHx8XzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0aW1lJ10+MHgxMmMpJiYoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydyZWR1Y2VMaW1pdHMnXT0hMHgwKTt9fWNhdGNoe319fXJldHVybiBfMHgyODE2MjQ7fSgoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgyNmE2OTksXzB4NTZhZDUyLF8weGNmMTMyNSxfMHg0NWRjY2MsXzB4MTVjYzZiLF8weDRiNTA3Zik9Pnt2YXIgXzB4MTI4YzM2PV8weGIzODQ3OTtpZihfMHgyMjNkMzdbJ19jb25zb2xlX25pbmphJ10pcmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtpZighSChfMHgyMjNkMzcsXzB4Y2YxMzI1LF8weDVmMmM2ZCkpcmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOigpPT57fSwnY29uc29sZVRyYWNlJzooKT0+e30sJ2NvbnNvbGVUaW1lJzooKT0+e30sJ2NvbnNvbGVUaW1lRW5kJzooKT0+e30sJ2F1dG9Mb2cnOigpPT57fSwnYXV0b0xvZ01hbnknOigpPT57fSwnYXV0b1RyYWNlTWFueSc6KCk9Pnt9LCdjb3ZlcmFnZSc6KCk9Pnt9LCdhdXRvVHJhY2UnOigpPT57fSwnYXV0b1RpbWUnOigpPT57fSwnYXV0b1RpbWVFbmQnOigpPT57fX0sXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2xldCBfMHg0Yzg4OTQ9QihfMHgyMjNkMzcpLF8weDRmY2U3MD1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWU4KV0sXzB4ZjA0ZTNmPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxN2QpXSxfMHgzNGRiZDI9XzB4NGM4ODk0W18weDEyOGMzNigweDFlZildLF8weDU1MzFlMD17J2hpdHMnOnt9LCd0cyc6e319LF8weDU4ZjFjZD1YKF8weDIyM2QzNyxfMHg0NWRjY2MsXzB4NTUzMWUwLF8weDI2YTY5OSksXzB4MmI4YjBmPV8weDNmYWM3OD0+e18weDU1MzFlMFsndHMnXVtfMHgzZmFjNzhdPV8weGYwNGUzZigpO30sXzB4OTVhMDJmPShfMHgxNDM1YjksXzB4MzRmZjkyKT0+e2xldCBfMHgxMjRkMmU9XzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml07aWYoZGVsZXRlIF8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdLF8weDEyNGQyZSl7bGV0IF8weDU5YjA0NT1fMHg0ZmNlNzAoXzB4MTI0ZDJlLF8weGYwNGUzZigpKTtfMHg1MDYzOWYoXzB4NThmMWNkKCd0aW1lJyxfMHgxNDM1YjksXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHg1OWIwNDVdLF8weDM0ZmY5MikpO319LF8weDNjMmYyMz1fMHgxM2JmN2I9Pnt2YXIgXzB4NDU3ZjZiPV8weDEyOGMzNixfMHgzNGViN2I7cmV0dXJuIF8weDVmMmM2ZD09PV8weDQ1N2Y2YigweDFkZSkmJl8weDIyM2QzN1tfMHg0NTdmNmIoMHgxZGQpXSYmKChfMHgzNGViN2I9XzB4MTNiZjdiPT1udWxsP3ZvaWQgMHgwOl8weDEzYmY3YltfMHg0NTdmNmIoMHgxOTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MzRlYjdiW18weDQ1N2Y2YigweDI0MSldKSYmKF8weDEzYmY3YltfMHg0NTdmNmIoMHgxOTMpXVsweDBdW18weDQ1N2Y2YigweDFkZCldPV8weDIyM2QzN1tfMHg0NTdmNmIoMHgxZGQpXSksXzB4MTNiZjdiO307XzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KF8weDVjYWZkOCxfMHg0ODdjZjYpPT57dmFyIF8weDU1MTg5Yz1fMHgxMjhjMzY7XzB4MjIzZDM3Wydjb25zb2xlJ11bXzB4NTUxODljKDB4MjUxKV1bXzB4NTUxODljKDB4MjE2KV0hPT1fMHg1NTE4OWMoMHgxOTQpJiZfMHg1MDYzOWYoXzB4NThmMWNkKF8weDU1MTg5YygweDI1MSksXzB4NWNhZmQ4LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0ODdjZjYpKTt9LCdjb25zb2xlVHJhY2UnOihfMHg1ZTY0NzMsXzB4M2QzNWM4KT0+e3ZhciBfMHg1NjE5MDY9XzB4MTI4YzM2LF8weDEzOTFlYixfMHgyYmIwNjU7XzB4MjIzZDM3W18weDU2MTkwNigweDI1ZSldWydsb2cnXVsnbmFtZSddIT09J2Rpc2FibGVkVHJhY2UnJiYoKF8weDJiYjA2NT0oXzB4MTM5MWViPV8weDIyM2QzN1tfMHg1NjE5MDYoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MTM5MWViW18weDU2MTkwNigweDI0ZCldKSE9bnVsbCYmXzB4MmJiMDY1W18weDU2MTkwNigweDFjMSldJiYoXzB4MjIzZDM3W18weDU2MTkwNigweDE5MildPSEweDApLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKCd0cmFjZScsXzB4NWU2NDczLF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHgzZDM1YzgpKSkpO30sJ2NvbnNvbGVFcnJvcic6KF8weDQ4ZjIzNCxfMHg1MGFjYjUpPT57dmFyIF8weDNhYzkzMD1fMHgxMjhjMzY7XzB4MjIzZDM3W18weDNhYzkzMCgweDE5MildPSEweDAsXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2FjOTMwKDB4MjFiKSxfMHg0OGYyMzQsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDUwYWNiNSkpKTt9LCdjb25zb2xlVGltZSc6XzB4M2I0NTI4PT57XzB4MmI4YjBmKF8weDNiNDUyOCk7fSwnY29uc29sZVRpbWVFbmQnOihfMHgxZDJhMWEsXzB4OGZlY2Q3KT0+e18weDk1YTAyZihfMHg4ZmVjZDcsXzB4MWQyYTFhKTt9LCdhdXRvTG9nJzooXzB4MjAyNjgzLF8weDJjZmU1Yik9PntfMHg1MDYzOWYoXzB4NThmMWNkKCdsb2cnLF8weDJjZmU1YixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDIwMjY4M10pKTt9LCdhdXRvTG9nTWFueSc6KF8weDRiNmM0NyxfMHg0NTBiNjYpPT57dmFyIF8weDQ3MzgwMj1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDU4ZjFjZChfMHg0NzM4MDIoMHgyNTEpLF8weDRiNmM0NyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDUwYjY2KSk7fSwnYXV0b1RyYWNlJzooXzB4MzJhNzYsXzB4MTRiYzEyKT0+e3ZhciBfMHg1N2NmOGE9XzB4MTI4YzM2O18weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDU3Y2Y4YSgweDFhYiksXzB4MTRiYzEyLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MzJhNzZdKSkpO30sJ2F1dG9UcmFjZU1hbnknOihfMHhlMzYwZjcsXzB4MzNjMGUyKT0+e3ZhciBfMHgzZGIwMGU9XzB4MTI4YzM2O18weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNkYjAwZSgweDFhYiksXzB4ZTM2MGY3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHgzM2MwZTIpKSk7fSwnYXV0b1RpbWUnOihfMHhkMjM3NDksXzB4MWVmMmQ4LF8weDQxMTZkYik9PntfMHgyYjhiMGYoXzB4NDExNmRiKTt9LCdhdXRvVGltZUVuZCc6KF8weDE0ZDU5MixfMHg1OWVmZTcsXzB4MTFmN2FjKT0+e18weDk1YTAyZihfMHg1OWVmZTcsXzB4MTFmN2FjKTt9LCdjb3ZlcmFnZSc6XzB4MjA3NDJhPT57dmFyIF8weDY0NDg5Nz1fMHgxMjhjMzY7XzB4NTA2MzlmKHsnbWV0aG9kJzpfMHg2NDQ4OTcoMHgxYjIpLCd2ZXJzaW9uJzpfMHgyNmE2OTksJ2FyZ3MnOlt7J2lkJzpfMHgyMDc0MmF9XX0pO319O2xldCBfMHg1MDYzOWY9cShfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDE1Y2M2YixfMHg0YjUwN2YpLF8weDUyOTAzND1fMHgyMjNkMzdbXzB4MTI4YzM2KDB4MjYxKV07cmV0dXJuIF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTt9KShnbG9iYWxUaGlzLF8weGIzODQ3OSgweDE4ZSksXzB4YjM4NDc5KDB4MWRmKSxfMHhiMzg0NzkoMHgyNWIpLF8weGIzODQ3OSgweDFlZSksXzB4YjM4NDc5KDB4MjNkKSxfMHhiMzg0NzkoMHgyNGEpLF8weGIzODQ3OSgweDE5NyksXzB4YjM4NDc5KDB4MWNlKSwnJywnMScpO1xcXCIpO31jYXRjaChlKXt9fTsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX29vKGk6c3RyaW5nLC4uLnY6YW55W10pe3RyeXtvb19jbSgpLmNvbnNvbGVMb2coaSwgdik7fWNhdGNoKGUpe30gcmV0dXJuIHZ9O29vX29vOy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fdHIoaTpzdHJpbmcsLi4udjphbnlbXSl7dHJ5e29vX2NtKCkuY29uc29sZVRyYWNlKGksIHYpO31jYXRjaChlKXt9IHJldHVybiB2fTtvb190cjsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3R4KGk6c3RyaW5nLC4uLnY6YW55W10pe3RyeXtvb19jbSgpLmNvbnNvbGVFcnJvcihpLCB2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdn07b29fdHg7LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb190cyh2PzpzdHJpbmcpOnN0cmluZ3t0cnl7b29fY20oKS5jb25zb2xlVGltZSh2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdiBhcyBzdHJpbmc7fTtvb190czsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3RlKHY6c3RyaW5nfHVuZGVmaW5lZCwgaTpzdHJpbmcpOnN0cmluZ3t0cnl7b29fY20oKS5jb25zb2xlVGltZUVuZCh2LCBpKTt9Y2F0Y2goZSl7fSByZXR1cm4gdiBhcyBzdHJpbmc7fTtvb190ZTsvKmVzbGludCB1bmljb3JuL25vLWFidXNpdmUtZXNsaW50LWRpc2FibGU6LGVzbGludC1jb21tZW50cy9kaXNhYmxlLWVuYWJsZS1wYWlyOixlc2xpbnQtY29tbWVudHMvbm8tdW5saW1pdGVkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby1hZ2dyZWdhdGluZy1lbmFibGU6LGVzbGludC1jb21tZW50cy9uby1kdXBsaWNhdGUtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWVuYWJsZTosKi88L3NjcmlwdD5cXG5cXG48c3R5bGUgc2NvcGVkPlxcbi52LWVudGVyLWFjdGl2ZSxcXG4udi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLnYtZW50ZXItZnJvbSxcXG4udi1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbn1cXG5cXG4uc2xpZGUtZW50ZXItYWN0aXZlLFxcbi5zbGlkZS1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcXG59XFxuXFxuLnNsaWRlLWVudGVyLWZyb20sXFxuLnNsaWRlLWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLnYtZW50ZXItYWN0aXZlW2RhdGEtdi00NzNiMjYxZV0sXFxuLnYtbGVhdmUtYWN0aXZlW2RhdGEtdi00NzNiMjYxZV0ge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7XFxufVxcbi52LWVudGVyLWZyb21bZGF0YS12LTQ3M2IyNjFlXSxcXG4udi1sZWF2ZS10b1tkYXRhLXYtNDczYjI2MWVdIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBZ1dBOztFQUVFLDZCQUE2QjtBQUMvQjtBQUVBOztFQUVFLFVBQVU7QUFDWlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8VG9hc3RNZXNzYWdlXFxuICAgIHYtaWY9XFxcInRvYXN0VmlzaWJpbGl0eVxcXCJcXG4gICAgY2xhc3M9XFxcInRvYXN0IGZpeGVkIHRvcC0xMCByaWdodC0xMFxcXCJcXG4gICAgOm1lc3NhZ2U9XFxcInRvYXN0TWVzc2FnZVxcXCJcXG4gICAgOnR5cGU9XFxcInRvYXN0VHlwZVxcXCJcXG4gIC8+XFxuXFxuICA8ZGl2XFxuICAgIHYtaWY9XFxcIm9yZ2FuaXphdGlvblJlZ2lzdHJhdGlvblR5cGUgIT09ICduZXdfb3JnJ1xcXCJcXG4gICAgY2xhc3M9XFxcImgtZnVsbCBwdC1bMTMwcHhdXFxcIlxcbiAgPlxcbiAgICA8ZGl2IHYtaWY9XFxcIiFwcm9wcy5zdGF0dXNcXFwiPlxcbiAgICAgIDxkaXYgdi1pZj1cXFwiIWlzU2F2aW5nXFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgPGgzIGNsYXNzPVxcXCJwYi1bMnB4XSB0ZXh0LVsyMHB4XSBmb250LWJvbGQgbGVhZGluZy05IHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgQ29tcGxldGUgUHVibGlzaGluZyBTZXR0aW5nc1xcbiAgICAgICAgICA8L2gzPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtXFxcIj5cXG4gICAgICAgICAgICBMaW5rIHlvdXIgYWNjb3VudCB0byB0aGUgSUFUSSBSZWdpc3RyeS4gR2VuZXJhdGUgYW4gQVBJIHRva2VuIGluXFxuICAgICAgICAgICAgeW91ciBJQVRJIFJlZ2lzdHJ5IGFjY291bnQgYW5kIGFkZCBpdCBoZXJlLlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPFRyYW5zaXRpb24gbW9kZT1cXFwib3V0LWluXFxcIj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWlmPVxcXCIhaXNTdWNjZXNzXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm10LTMgcm91bmRlZC1sZyBiZy1uLTEwIHB5LVsyMHB4XSBweC1bMjdweF1cXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCIhaXNWZXJpZnlpbmdUb2tlblxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggbWF4LXctWzM4MHB4XSBmbGV4LWNvbCBnYXAtMlxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImFwaS10b2tlblxcXCIgY2xhc3M9XFxcInRleHQtWzE0cHhdXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIEFQSSBUb2tlblxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInJlcXVpcmVkLWljb25cXFwiPiAqPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxIb3ZlclRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cXFwiQVBJIFRva2VuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBob3Zlci10ZXh0PVxcXCJUaGUgQVBJIHRva2VuIGlzIGEgdW5pcXVlIGtleSB0aGF0IGlzIGdlbmVyYXRlZCBmcm9tIHlvdXIgb3JnYW5pc2F0aW9uJ3MgSUFUSSBSZWdpc3RyeSBQdWJsaXNoZXIgQWNjb3VudC4gSXQgaXMgcmVxdWlyZWQgdG8gZ2l2ZSBJQVRJIFB1Ymxpc2hlciBwZXJtaXNzaW9uIHRvIGFkZCBkYXRhIHRvIHRoZSBJQVRJIFJlZ2lzdHJ5IG9uIHlvdXIgYmVoYWxmLiBHZW5lcmF0ZSBhIFRva2VuIGluIHRoZSAnTXkgQWNjb3VudCcgdGFiIGJ5IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmlhdGlyZWdpc3RyeS5vcmcvdXNlci9sb2dpbicgdGFyZ2V0PSdfYmxhbmsnIHRhcmdldD0nX2JsYW5rJz5sb2dnaW5nPC9hPiBpbnRvIHRvIHRoZSBJQVRJIFJlZ2lzdHJ5LlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOnNob3ctaWF0aS1yZWZlcmVuY2U9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgaWQ9XFxcImFwaS10b2tlblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImFwaVRva2VuXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0yIGgtMTIgdy1mdWxsIHJvdW5kZWQtWzRweF0gYm9yZGVyIGJvcmRlci1uLTMwIHB5LVsxM3B4XSBweC00IHRleHQtc20gZm9jdXMtd2l0aGluOm91dGxpbmUtMCBmb2N1czpvdXRsaW5lLTBcXFwiXFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiVHlwZSB5b3VyIEFQSSB0b2tlbiBoZXJlXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPFNoaW1tZXJMb2FkaW5nXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCIhdG9rZW5TdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiIWFic29sdXRlIHRvcC1bNTYlXSAhbS0wICFtbC0yICFoLTggIXctWzk2JV0gLXRyYW5zbGF0ZS15LTEvMlxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCIhcHJvcHMuaW5pdGlhbFJlbmRlciAmJiB0b2tlblN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtMS8yIHJpZ2h0LTMgcm91bmRlZC1bNHB4XSBweC0yIHRleHQteHMgdGV4dC13aGl0ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICAgICAgICAgICAnYmctc2FsbW9uLTUwJzogdG9rZW5TdGF0dXMgPT09ICdJbmNvcnJlY3QnLFxcbiAgICAgICAgICAgICAgICAgICAgICAnYmctc3ByaW5nLTQwJzogdG9rZW5TdGF0dXMgPT09ICdDb3JyZWN0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgJ2JnLW9yZ2FuZWlzaCc6IHRva2VuU3RhdHVzID09PSAnUGVuZGluZycsXFxuICAgICAgICAgICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHRva2VuU3RhdHVzIH19XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPCEtLSBJZiBWZXJpZnlpbmcgVG9rZW4gLS0+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXktNCBmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctWyNGMUY3RjldIHB5LVszNnB4XVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxMaW5lc0xvYWRlciAvPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVxcXCJwdC00IGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFxcXCI+XFxuICAgICAgICAgICAgICAgICAgVmVyaWZ5aW5nIEFQSSBUb2tlblxcbiAgICAgICAgICAgICAgICA8L2gzPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcIiFpc1ZlcmlmeWluZ1Rva2VuXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJidXR0b25cXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0zIHJvdW5kZWQtWzRweF0gYmctYmx1ZWNvcmFsIHB5LVsxMXB4XSBweC1bMzguNXB4XSB0ZXh0LXNtIGZvbnQtWzcwMF0gdGV4dC13aGl0ZVxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrLm9uY2U9XFxcInZlcmlmeVRva2VuXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICBWRVJJRllcXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwhLS0gSWYgU3VjY2VzcyAtLT5cXG4gICAgICAgICAgICA8ZGl2IHYtZWxzZT5cXG4gICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcIm10LTMgZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgYmctbi0xMCBweS1bNjJweF1cXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bMjlweF1cXFwiIC8+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgICAgICAgICA+QVBJIFRva2VuIHZlcmlmaWVkPC9zcGFuXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L1RyYW5zaXRpb24+XFxuXFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHB0LTMgdGV4dC14cyB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcIm1lc3NhZ2UtaWNvblxcXCIgLz5cXG4gICAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICAgIFlvdSBjYW4gYWx3YXlzIHJldmlzaXQgYW5kIGFkanVzdCB0aGVzZSBzZXR0aW5ncyBsYXRlciBieVxcbiAgICAgICAgICAgICAgbmF2aWdhdGluZyB0byB0aGUgJ1B1Ymxpc2hpbmcgU2V0dGluZ3MnIHNlY3Rpb24gYXQgYW55IHRpbWUuXFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgYm90dG9tLVszMHB4XSByaWdodC1bNDBweF0gZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFxcXCI+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQteHMgZm9udC1ib2xkIHRleHQtbi00MFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZW1pdChgcHJvY2VlZFN0ZXBgKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBTa2lwIHRvIG5leHQgc3RlcFxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJidXR0b24gcHJpbWFyeS1idG4gdGV4dC14cyBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6Ymctbi0yMCBkaXNhYmxlZDpzaGFkb3ctbm9uZVxcXCJcXG4gICAgICAgICAgICAgIDpkaXNhYmxlZD1cXFwiaXNTYXZpbmcgfHwgIWFwaVRva2VuXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJwcm9jZWVkU3RlcFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBTYXZlIGFuZCBORVhUXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPCEtLSBJcyBTYXZpbmcgLS0+XFxuICAgICAgPGRpdiB2LWVsc2U+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZWxhdGl2ZSByb3VuZGVkLWxnIGJnLW4tMTAgcHktWzE3MHB4XSBweC1bMzQ1cHhdXFxcIj5cXG4gICAgICAgICAgPExpbmVzTG9hZGVyIC8+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDwhLS0gSWYgU3RhdHVzIGlzIGZhbHNlIC0tPlxcbiAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cXFwiaC1mdWxsXFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGgtZnVsbCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1uLTEwIHB5LVs2MHB4XSBweC1bNzNweF1cXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIHRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJncmVlbi1jaXJjbGUtdGlja1xcXCIgY2xhc3M9XFxcInRleHQtWzM0cHhdXFxcIiAvPlxcbiAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XFxcIm1heC13LVs1ODdweF0gcHktWzUuNHB4XSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAgWW91ciBhY2NvdW50IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsaW5rZWQgdG8gdGhlIElBVEkgUmVnaXN0cnkuXFxuICAgICAgICAgICAgICA8L2gyPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1heC13LVs1ODdweF0gdGV4dC1zbSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICBUaGUgQVBJIHRva2VuIGhhcyBiZWVuIGdlbmVyYXRlZCBhbmQgYWRkZWQgc3VjY2Vzc2Z1bGx5LiBJZiB5b3VcXG4gICAgICAgICAgICAgICAgbmVlZCB0byBtYWtlIGFueSBjaGFuZ2VzIG9yIHVwZGF0ZXMsIHBsZWFzZSB2aXNpdCB5b3VyXFxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XFxcIi9zZXR0aW5nXFxcIiB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+YWNjb3VudCBzZXR0aW5nczwvYT4uXFxuICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtYi1bMzBweF0gc2VsZi1lbmRcXFwiPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcImJ1dHRvbiBwcmltYXJ5LWJ0biB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiZW1pdChgcHJvY2VlZFN0ZXBgKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIE5FWFRcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDwhLS0gSWYgUmVnaXN0cmF0aW9uIFR5cGUgTm90IE5ldyAtLT5cXG4gIDxkaXYgdi1lbHNlIGNsYXNzPVxcXCJoLWZ1bGwgcHQtWzEzMHB4XVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaC1mdWxsIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1uLTEwIHB5LVs2MHB4XSBweC1bNzNweF1cXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCB0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImdyZWVuLWNpcmNsZS10aWNrXFxcIiBjbGFzcz1cXFwidGV4dC1bMzRweF1cXFwiIC8+XFxuICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgPGgyIGNsYXNzPVxcXCJweS1bNS40cHhdIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgUHVibGlzaGluZyBzZXR0aW5ncyBjb21wbGV0ZWQuXFxuICAgICAgICAgICAgPC9oMj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWF4LXctWzU4N3B4XSB0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICBZb3VyIElBVEkgUmVnaXN0cnkgYWNjb3VudCBoYXMgYmVlbiBsaW5rZWQgYW5kIG5lZWRzIHRvIGJlXFxuICAgICAgICAgICAgICBhcHByb3ZlZCBiZWZvcmUgeW91IGNhbiBwdWJsaXNoIGRhdGEuIFNvbWVvbmUgZnJvbSB0aGUgSUFUSSB0ZWFtXFxuICAgICAgICAgICAgICB3aWxsIHJldmlldyBpdCBhbmQgYmUgaW4gY29udGFjdCB3aXRoaW4gdHdvIHdvcmtpbmcgZGF5cy4gWW91IGNhblxcbiAgICAgICAgICAgICAgc3RhcnQgZW50ZXJpbmcgZGF0YSBpbiBJQVRJIFB1Ymxpc2hlciBzdHJhaWdodCBhd2F5LlxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtYi1bMzBweF0gc2VsZi1lbmRcXFwiPlxcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiYnV0dG9uIHByaW1hcnktYnRuIHRleHQteHNcXFwiIEBjbGljaz1cXFwiZW1pdChgcHJvY2VlZFN0ZXBgKVxcXCI+XFxuICAgICAgICAgIE5FWFRcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgcmVmLCBkZWZpbmVQcm9wcywgd2F0Y2hFZmZlY3QsIGRlZmluZUVtaXRzLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExpbmVzTG9hZGVyIGZyb20gJ0NvbXBvbmVudHMvTGluZXNMb2FkZXIudnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBTaGltbWVyTG9hZGluZyBmcm9tICdDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZSc7XFxuaW1wb3J0IFRvYXN0TWVzc2FnZSBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgcHVibGlzaGVySWQ6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBwdWJsaXNoZXJTZXR0aW5nOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgb3JnYW5pemF0aW9uSWQ6IHtcXG4gICAgdHlwZTogTnVtYmVyLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBmZXRjaERhdGE6IHtcXG4gICAgdHlwZTogRnVuY3Rpb24sXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGluaXRpYWxSZW5kZXI6IHtcXG4gICAgdHlwZTogQm9vbGVhbixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgcmVnaXN0cmF0aW9uVHlwZToge1xcbiAgICB0eXBlOiBTdHJpbmcsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHN0YXR1czoge1xcbiAgICB0eXBlOiBCb29sZWFuLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcXG4gICdwcm9jZWVkU3RlcCcsXFxuICAnY2hhbmdlUmVuZGVyJyxcXG4gICdjb21wbGV0ZVN0ZXAnLFxcbiAgJ3JlbW92ZUNvbXBsZXRlZFN0ZXAnLFxcbl0pO1xcblxcbmNvbnN0IGFwaVRva2VuID0gcmVmKCcnKTtcXG5jb25zdCBpc1ZlcmlmeWluZ1Rva2VuID0gcmVmKGZhbHNlKTtcXG5jb25zdCBpc1NhdmluZyA9IHJlZihmYWxzZSk7XFxuY29uc3QgaXNTdWNjZXNzID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCB0b2tlblN0YXR1cyA9IHJlZihwcm9wcy5wdWJsaXNoZXJTZXR0aW5nPy50b2tlbl9zdGF0dXMgfHwgJycpO1xcbmNvbnN0IHZlcmlmeVRva2VuU3RhdHVzID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBvcmdhbml6YXRpb25SZWdpc3RyYXRpb25UeXBlID0gcmVmKCcnKTtcXG5cXG5jb25zdCB0b2FzdFZpc2liaWxpdHkgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHRvYXN0TWVzc2FnZSA9IHJlZignJyk7XFxuY29uc3QgdG9hc3RUeXBlID0gcmVmKGZhbHNlKTtcXG5cXG53YXRjaChcXG4gICgpID0+IHByb3BzLnB1Ymxpc2hlclNldHRpbmc/LnRva2VuX3N0YXR1cyxcXG4gIChuZXdTdGF0dXMpID0+IHtcXG4gICAgdG9rZW5TdGF0dXMudmFsdWUgPSBuZXdTdGF0dXM7XFxuICB9XFxuKTtcXG5cXG53YXRjaEVmZmVjdCgoKSA9PiB7XFxuICBhcGlUb2tlbi52YWx1ZSA9IHByb3BzPy5wdWJsaXNoZXJTZXR0aW5nPy5hcGlfdG9rZW47XFxufSk7XFxuXFxud2F0Y2hFZmZlY3QoKCkgPT4ge1xcbiAgb3JnYW5pemF0aW9uUmVnaXN0cmF0aW9uVHlwZS52YWx1ZSA9IHByb3BzLnJlZ2lzdHJhdGlvblR5cGU7XFxufSk7XFxuXFxuY29uc3QgdmVyaWZ5VG9rZW4gPSAoKSA9PiB7XFxuICBpc1ZlcmlmeWluZ1Rva2VuLnZhbHVlID0gdHJ1ZTtcXG4gIHZlcmlmeVRva2VuU3RhdHVzLnZhbHVlID0gZmFsc2U7XFxuICBlbWl0KCdjaGFuZ2VSZW5kZXInKTtcXG4gIGF4aW9zXFxuICAgIC5wb3N0KCcvc2V0dGluZy92ZXJpZnknLCB7XFxuICAgICAgYXBpX3Rva2VuOiBhcGlUb2tlbi52YWx1ZSxcXG4gICAgICBwdWJsaXNoZXJfaWQ6IHByb3BzLnB1Ymxpc2hlcklkLFxcbiAgICB9KVxcbiAgICAudGhlbigocmVzcG9uc2U6IHsgZGF0YTogeyBkYXRhOiB7IHRva2VuX3N0YXR1czogc3RyaW5nIH0gfSB9KSA9PiB7XFxuICAgICAgdmVyaWZ5VG9rZW5TdGF0dXMudmFsdWUgPSB0cnVlO1xcbiAgICAgIHRva2VuU3RhdHVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLnRva2VuX3N0YXR1cztcXG4gICAgICBpZiAoXFxuICAgICAgICByZXNwb25zZS5kYXRhLmRhdGEudG9rZW5fc3RhdHVzID09PSAnQ29ycmVjdCcgfHxcXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdQZW5kaW5nJ1xcbiAgICAgICkge1xcbiAgICAgICAgaXNTdWNjZXNzLnZhbHVlID0gdHJ1ZTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XFxuICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9jb25zb2xlLmxvZyguLi5vb19vbyhgMzE4NzUwNDIwM18yOTNfNl8yOTNfMzFfNGAsJ0Vycm9yJywgZXJyKSk7XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBpc1ZlcmlmeWluZ1Rva2VuLnZhbHVlID0gZmFsc2U7XFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICBpc1N1Y2Nlc3MudmFsdWUgPSBmYWxzZTtcXG4gICAgICB9LCAzMDAwKTtcXG4gICAgfSk7XFxufTtcXG5cXG5jb25zdCBwcm9jZWVkU3RlcCA9IGFzeW5jICgpID0+IHtcXG4gIGlzU2F2aW5nLnZhbHVlID0gdHJ1ZTtcXG4gIGF3YWl0IGF4aW9zXFxuICAgIC5wb3N0KCcvc2V0dGluZy9zdG9yZS9wdWJsaXNoZXInLCB7XFxuICAgICAgYXBpX3Rva2VuOiBhcGlUb2tlbi52YWx1ZSxcXG4gICAgICBwdWJsaXNoZXJfaWQ6IHByb3BzLnB1Ymxpc2hlcklkLFxcbiAgICAgIG9yZ2FuaXphdGlvbl9pZDogcHJvcHMub3JnYW5pemF0aW9uSWQsXFxuICAgICAgcHVibGlzaGVyX3ZlcmlmaWNhdGlvbjogcHJvcHMucHVibGlzaGVyU2V0dGluZz8ucHVibGlzaGVyX3ZlcmlmaWNhdGlvbixcXG4gICAgICB0b2tlbl92ZXJpZmljYXRpb246IHByb3BzLnB1Ymxpc2hlclNldHRpbmc/LnRva2VuX3ZlcmlmaWNhdGlvbixcXG4gICAgfSlcXG4gICAgLnRoZW4oXFxuICAgICAgKHJlc3BvbnNlOiB7XFxuICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XFxuICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdO1xcbiAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgdG9rZW5fc3RhdHVzOiBzdHJpbmc7XFxuICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgIH0pID0+IHtcXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgaWYgKFxcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdDb3JyZWN0JyB8fFxcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS50b2tlbl9zdGF0dXMgPT09ICdQZW5kaW5nJ1xcbiAgICAgICAgICApIHtcXG4gICAgICAgICAgICBlbWl0KCdjb21wbGV0ZVN0ZXAnLCAxKTtcXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBlbWl0KCdyZW1vdmVDb21wbGV0ZWRTdGVwJywgMSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgcHJvcHMuZmV0Y2hEYXRhKCk7XFxuICAgICAgICAgIGVtaXQoJ3Byb2NlZWRTdGVwJyk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSksIDMwMDApO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcXG4gICAgICAgICAgICA/IHJlc3BvbnNlLmRhdGEubWVzc2FnZS5qb2luKCc8YnI+JylcXG4gICAgICAgICAgICA6IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcXG5cXG4gICAgICAgICAgaXNTYXZpbmcudmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIClcXG4gICAgLmNhdGNoKChlcnIpID0+IC8qIGVzbGludC1kaXNhYmxlICovY29uc29sZS5sb2coLi4ub29fb28oYDMxODc1MDQyMDNfMzQ1XzIwXzM0NV8zNl80YCxlcnIpKSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzU2F2aW5nLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8vKiBjOCBpZ25vcmUgc3RhcnQgKi8vKiBlc2xpbnQtZGlzYWJsZSAqLztmdW5jdGlvbiBvb19jbSgpe3RyeXtyZXR1cm4gKDAsZXZhbCkoXFxcImdsb2JhbFRoaXMuX2NvbnNvbGVfbmluamFcXFwiKSB8fCAoMCxldmFsKShcXFwiLyogaHR0cHM6Ly9naXRodWIuY29tL3dhbGxhYnlqcy9jb25zb2xlLW5pbmphI2hvdy1kb2VzLWl0LXdvcmsgKi8ndXNlIHN0cmljdCc7dmFyIF8weGIzODQ3OT1fMHgyNjkwOyhmdW5jdGlvbihfMHgzZGE5YTcsXzB4MTI5OTgzKXt2YXIgXzB4MjQxM2YyPV8weDI2OTAsXzB4NGVkN2JhPV8weDNkYTlhNygpO3doaWxlKCEhW10pe3RyeXt2YXIgXzB4MTUzNTYwPS1wYXJzZUludChfMHgyNDEzZjIoMHgxOTUpKS8weDEqKHBhcnNlSW50KF8weDI0MTNmMigweDFjOCkpLzB4MikrLXBhcnNlSW50KF8weDI0MTNmMigweDE5MSkpLzB4MyoocGFyc2VJbnQoXzB4MjQxM2YyKDB4MWFmKSkvMHg0KStwYXJzZUludChfMHgyNDEzZjIoMHgxZDIpKS8weDUrLXBhcnNlSW50KF8weDI0MTNmMigweDFhYSkpLzB4NiooLXBhcnNlSW50KF8weDI0MTNmMigweDE5OSkpLzB4NykrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWM5KSkvMHg4Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxZWEpKS8weDkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWY3KSkvMHhhKigtcGFyc2VJbnQoXzB4MjQxM2YyKDB4MThiKSkvMHhiKTtpZihfMHgxNTM1NjA9PT1fMHgxMjk5ODMpYnJlYWs7ZWxzZSBfMHg0ZWQ3YmFbJ3B1c2gnXShfMHg0ZWQ3YmFbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDExNGRlNil7XzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO319fShfMHg0OWZiLDB4NzU3NzkpKTtmdW5jdGlvbiBfMHg0OWZiKCl7dmFyIF8weDMxM2MyOT1bJ19xdW90ZWRSZWdFeHAnLCd3YXJuJywnYXV0b0V4cGFuZFByZXZpb3VzT2JqZWN0cycsJ2dldFByb3RvdHlwZU9mJywnX1dlYlNvY2tldCcsJ2dldHRlcicsJzEyMzBURXBsbGgnLCdmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBjb25uZWN0XFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwaG9zdDpcXFxcXFxcXHgyMCcsJ19zb3J0UHJvcHMnLCdjb3VudCcsJ3NvcnQnLCdzZXQnLCdudWxsJywndG9Mb3dlckNhc2UnLCduZWdhdGl2ZVplcm8nLCdqb2luJywnc3RhY2snLCdfaGFzU3ltYm9sUHJvcGVydHlPbkl0c1BhdGgnLCdjdXJyZW50JywnX2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsJ3RoZW4nLCdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCdIVE1MQWxsQ29sbGVjdGlvbicsJ3VybCcsJ3BhdGhUb0ZpbGVVUkwnLCdfd2ViU29ja2V0RXJyb3JEb2NzTGluaycsJ2NhcHBlZCcsJ19pc01hcCcsJ2V4cHJlc3Npb25zVG9FdmFsdWF0ZScsJ3Jvb3RFeHByZXNzaW9uJywndW5yZWYnLCdmdW5jdGlvbicsJ2hpdHMnLCdzdHJMZW5ndGgnLCdfaGFzTWFwT25JdHNQYXRoJywnZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwZmluZFxcXFxcXFxceDIwYW5kXFxcXFxcXFx4MjBsb2FkXFxcXFxcXFx4MjBXZWJTb2NrZXQnLCdfdW5kZWZpbmVkJywnbmFtZScsJ19zZW5kRXJyb3JNZXNzYWdlJywnZXZlbnRSZWNlaXZlZENhbGxiYWNrJywnX3BfbGVuZ3RoJywnZ2xvYmFsJywnZXJyb3InLCdcXFxcXFxcXHgyMGJyb3dzZXInLCduZWdhdGl2ZUluZmluaXR5JywnW29iamVjdFxcXFxcXFxceDIwU2V0XScsJ3NlbmQnLCdwcm90b3R5cGUnLCdkZXB0aCcsJ3JlYWR5U3RhdGUnLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJywndW5kZWZpbmVkJywnX1N5bWJvbCcsJ19wcm9wZXJ0eScsJ1NldCcsJ21hcCcsJ19pbk5leHRFZGdlJywndmFsdWVPZicsJ3NlZVxcXFxcXFxceDIwaHR0cHM6Ly90aW55dXJsLmNvbS8ydnQ4anh6d1xcXFxcXFxceDIwZm9yXFxcXFxcXFx4MjBtb3JlXFxcXFxcXFx4MjBpbmZvLicsJ19vYmplY3RUb1N0cmluZycsJ3Bvc2l0aXZlSW5maW5pdHknLCdiaW5kJywnY2FsbCcsJ19pc05lZ2F0aXZlWmVybycsJ05FWFRfUlVOVElNRScsJ2xvZ2dlclxcXFxcXFxceDIwd2Vic29ja2V0XFxcXFxcXFx4MjBlcnJvcicsJ19nZXRPd25Qcm9wZXJ0eU5hbWVzJywnbWVzc2FnZScsJ2JpZ2ludCcsJ3RpbWUnLCdzdGFydHNXaXRoJywnX2NsZWFuTm9kZScsJ19kaXNwb3NlV2Vic29ja2V0JywnX3JlZ0V4cFRvU3RyaW5nJywnb25lcnJvcicsJ2NvbmNhdCcsJzEuMC4wJywnYm9vbGVhbicsJ1tvYmplY3RcXFxcXFxcXHgyMERhdGVdJywncmVtaXgnLCdsZW5ndGgnLCdzb3J0UHJvcHMnLCdvbm9wZW4nLCdfa2V5U3RyUmVnRXhwJywnZGF0YScsJ3JlZHVjZUxpbWl0cycsJ3Byb3BzJywnc29tZScsJ19jYXBJZlN0cmluZycsJzE3MzEwNDA5MzQ3MDQnLCdwZXJmX2hvb2tzJywnb2JqZWN0JywndmVyc2lvbnMnLCdmcm9tQ2hhckNvZGUnLCduYW4nLCdhdXRvRXhwYW5kTGltaXQnLCdsb2cnLCdnZXQnLCdwYXJzZScsJ19jb25uZWN0ZWQnLCdzdWJzdHInLCdub2RlTW9kdWxlcycsJ1xcXFxcXFxceDIwc2VydmVyJywnX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCcsJ19jb25uZWN0aW5nJywnTWFwJyxcXFxcXFxcIi9ob21lL2ZsdWZmeS8udnNjb2RlL2V4dGVuc2lvbnMvd2FsbGFieWpzLmNvbnNvbGUtbmluamEtMS4wLjM2Ni9ub2RlX21vZHVsZXNcXFxcXFxcIiwnTkVHQVRJVkVfSU5GSU5JVFknLCdfd3MnLCdjb25zb2xlJywnZG9ja2VyaXplZEFwcCcsJ190eXBlJywnX2NvbnNvbGVfbmluamFfc2Vzc2lvbicsJ2VsZW1lbnRzJywnYWxsU3RyTGVuZ3RoJywnX2FkZExvYWROb2RlJywnc3ltYm9sJywncm9vdF9leHBfaWQnLCdfYWxsb3dlZFRvU2VuZCcsJ3dzL2luZGV4LmpzJywncGVyZm9ybWFuY2UnLCdfc2V0Tm9kZUlkJywnX2JsYWNrbGlzdGVkUHJvcGVydHknLCdSZWdFeHAnLCdyZXBsYWNlJywnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnLCd0aW1lU3RhbXAnLCdDb25zb2xlXFxcXFxcXFx4MjBOaW5qYVxcXFxcXFxceDIwZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwc2VuZFxcXFxcXFxceDIwbG9ncyxcXFxcXFxcXHgyMHJlc3RhcnRpbmdcXFxcXFxcXHgyMHRoZVxcXFxcXFxceDIwcHJvY2Vzc1xcXFxcXFxceDIwbWF5XFxcXFxcXFx4MjBoZWxwO1xcXFxcXFxceDIwYWxzb1xcXFxcXFxceDIwc2VlXFxcXFxcXFx4MjAnLCdhbmd1bGFyJywnY2FwcGVkRWxlbWVudHMnLCdfc29ja2V0JywnX2lzVW5kZWZpbmVkJywnX2lzUHJpbWl0aXZlV3JhcHBlclR5cGUnLCdnZXRXZWJTb2NrZXRDbGFzcycsJ21ldGhvZCcsJ1tvYmplY3RcXFxcXFxcXHgyME1hcF0nLCd0ZXN0JywnX3NldE5vZGVFeHBhbmRhYmxlU3RhdGUnLCdzdGFja1RyYWNlTGltaXQnLCdbb2JqZWN0XFxcXFxcXFx4MjBBcnJheV0nLCcyMTIxOVlyUmxVZScsJ19tYXhDb25uZWN0QXR0ZW1wdENvdW50JywnaHR0cHM6Ly90aW55dXJsLmNvbS8zN3g4Yjc5dCcsJzEyNy4wLjAuMScsJ29uY2xvc2UnLCdDb25zb2xlXFxcXFxcXFx4MjBOaW5qYVxcXFxcXFxceDIwZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwc2VuZFxcXFxcXFxceDIwbG9ncyxcXFxcXFxcXHgyMHJlZnJlc2hpbmdcXFxcXFxcXHgyMHRoZVxcXFxcXFxceDIwcGFnZVxcXFxcXFxceDIwbWF5XFxcXFxcXFx4MjBoZWxwO1xcXFxcXFxceDIwYWxzb1xcXFxcXFxceDIwc2VlXFxcXFxcXFx4MjAnLCcyMjYxNjFuWnRmV0gnLCdfbmluamFJZ25vcmVOZXh0RXJyb3InLCdhcmdzJywnZGlzYWJsZWRMb2cnLCcyOTUzc0JvaWZTJywnbWF0Y2gnLFtcXFxcXFxcImxvY2FsaG9zdFxcXFxcXFwiLFxcXFxcXFwiMTI3LjAuMC4xXFxcXFxcXCIsXFxcXFxcXCJleGFtcGxlLmN5cHJlc3MuaW9cXFxcXFxcIixcXFxcXFxcImZsdWZmeVxcXFxcXFwiLFxcXFxcXFwiMTkyLjE2OC4xMC4xNzFcXFxcXFxcIl0sJ3N0cmluZ2lmeScsJzgwMTk2MlNDUVFERScsJ2luY2x1ZGVzJywnX2lzUHJpbWl0aXZlVHlwZScsJ2hydGltZScsJ2Z1bmNOYW1lJywncHVzaCcsJ3dzOi8vJywnb25tZXNzYWdlJywnbG9jYXRpb24nLCd1bnNoaWZ0JywncHJvY2VzcycsJ19pc1NldCcsJ19IVE1MQWxsQ29sbGVjdGlvbicsJ19XZWJTb2NrZXRDbGFzcycsJ3RvVXBwZXJDYXNlJywnYXV0b0V4cGFuZE1heERlcHRoJywndG90YWxTdHJMZW5ndGgnLCc2dkdEYVVmJywndHJhY2UnLCdkYXRlJywnbnVtYmVyJywndmFsdWUnLCc0VG5kRkhCJywncmVsb2FkJywnbm9GdW5jdGlvbnMnLCdjb3ZlcmFnZScsJ2NyZWF0ZScsJ19hdHRlbXB0VG9SZWNvbm5lY3RTaG9ydGx5JywndG9TdHJpbmcnLCdfYWRkT2JqZWN0UHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCdfYWRkRnVuY3Rpb25zTm9kZScsJ19hZGRQcm9wZXJ0eScsJ2F1dG9FeHBhbmQnLCdhcnJheScsJ19jb25uZWN0VG9Ib3N0Tm93JywncGFyZW50JywnY2FwcGVkUHJvcHMnLCdkZWZpbmVQcm9wZXJ0eScsJ2dldE93blByb3BlcnR5TmFtZXMnLCdub2RlJywndW5rbm93bicsJ19pbkJyb3dzZXInLCdjb25zdHJ1Y3RvcicsJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCcsJ2NhdGNoJywnbG9nZ2VyXFxcXFxcXFx4MjBmYWlsZWRcXFxcXFxcXHgyMHRvXFxcXFxcXFx4MjBjb25uZWN0XFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwaG9zdCcsJzQxMmRaV21qUCcsJzU5OTkxMjh6VUhzZmsnLCdzdHJpbmcnLCdpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJywnX3Byb3BlcnR5TmFtZScsJ19jb25zb2xlX25pbmphJywnJywnc2VyaWFsaXplJywnLi4uJywnaW5kZXgnLCczNzY2ODA1TFp1V09JJywnX3RyZWVOb2RlUHJvcGVydGllc0FmdGVyRnVsbFZhbHVlJywnZXhwSWQnLCd0eXBlJywnTnVtYmVyJywnX3NldE5vZGVQZXJtaXNzaW9ucycsJ19wX25hbWUnLCdnYXRld2F5LmRvY2tlci5pbnRlcm5hbCcsJ1N0cmluZycsJ2hvc3QnLCdyZXNvbHZlR2V0dGVycycsJ29yaWdpbicsJ25leHQuanMnLCczMzQ1MycsJ19yZWNvbm5lY3RUaW1lb3V0JywnZm9yRWFjaCcsJ19wXycsJ19zZXROb2RlTGFiZWwnLCdlbnYnLCdfY29ubmVjdEF0dGVtcHRDb3VudCcsJ2hvc3RuYW1lJywnU3ltYm9sJywnZWxhcHNlZCcsJ2VkZ2UnLCcxOTQxMzA5bGNjVlBTJywnX2FkZGl0aW9uYWxNZXRhZGF0YScsJ2xldmVsJywnX2dldE93blByb3BlcnR5U3ltYm9scycsJ3dlYnBhY2snLCdub3cnLCdfYWxsb3dlZFRvQ29ubmVjdE9uU2VuZCddO18weDQ5ZmI9ZnVuY3Rpb24oKXtyZXR1cm4gXzB4MzEzYzI5O307cmV0dXJuIF8weDQ5ZmIoKTt9dmFyIEs9T2JqZWN0W18weGIzODQ3OSgweDFiMyldLFE9T2JqZWN0W18weGIzODQ3OSgweDFiZildLEc9T2JqZWN0W18weGIzODQ3OSgweDFiNyldLGVlPU9iamVjdFtfMHhiMzg0NzkoMHgxYzApXSx0ZT1PYmplY3RbXzB4YjM4NDc5KDB4MWY0KV0sbmU9T2JqZWN0W18weGIzODQ3OSgweDIyMCldWydoYXNPd25Qcm9wZXJ0eSddLHJlPShfMHg1MTAxMjIsXzB4NTg3MDRmLF8weDJlNDRmNixfMHgyMGJiMzkpPT57dmFyIF8weDJmY2E5MT1fMHhiMzg0Nzk7aWYoXzB4NTg3MDRmJiZ0eXBlb2YgXzB4NTg3MDRmPT1fMHgyZmNhOTEoMHgyNGMpfHx0eXBlb2YgXzB4NTg3MDRmPT1fMHgyZmNhOTEoMHgyMTApKXtmb3IobGV0IF8weDU3MzRhMCBvZiBlZShfMHg1ODcwNGYpKSFuZVsnY2FsbCddKF8weDUxMDEyMixfMHg1NzM0YTApJiZfMHg1NzM0YTAhPT1fMHgyZTQ0ZjYmJlEoXzB4NTEwMTIyLF8weDU3MzRhMCx7J2dldCc6KCk9Pl8weDU4NzA0ZltfMHg1NzM0YTBdLCdlbnVtZXJhYmxlJzohKF8weDIwYmIzOT1HKF8weDU4NzA0ZixfMHg1NzM0YTApKXx8XzB4MjBiYjM5WydlbnVtZXJhYmxlJ119KTt9cmV0dXJuIF8weDUxMDEyMjt9LFY9KF8weDE0OGQxZCxfMHg0MzdkNzgsXzB4NWVjMTMxKT0+KF8weDVlYzEzMT1fMHgxNDhkMWQhPW51bGw/Syh0ZShfMHgxNDhkMWQpKTp7fSxyZShfMHg0MzdkNzh8fCFfMHgxNDhkMWR8fCFfMHgxNDhkMWRbJ19fZXMnKydNb2R1bGUnXT9RKF8weDVlYzEzMSwnZGVmYXVsdCcseyd2YWx1ZSc6XzB4MTQ4ZDFkLCdlbnVtZXJhYmxlJzohMHgwfSk6XzB4NWVjMTMxLF8weDE0OGQxZCkpLFo9Y2xhc3N7Y29uc3RydWN0b3IoXzB4M2I0NjU1LF8weDFkNWJlOCxfMHgzNjhkY2YsXzB4NWY0ZWIxLF8weDVlODQyZixfMHg4Njg3OWQpe3ZhciBfMHg1ZTBlNTU9XzB4YjM4NDc5LF8weDE4NTlmYixfMHhjNTdiMCxfMHg1M2Y1ODQsXzB4MmVlMzY0O3RoaXNbXzB4NWUwZTU1KDB4MjFhKV09XzB4M2I0NjU1LHRoaXNbXzB4NWUwZTU1KDB4MWRiKV09XzB4MWQ1YmU4LHRoaXNbJ3BvcnQnXT1fMHgzNjhkY2YsdGhpc1snbm9kZU1vZHVsZXMnXT1fMHg1ZjRlYjEsdGhpc1tfMHg1ZTBlNTUoMHgyNWYpXT1fMHg1ZTg0MmYsdGhpc1tfMHg1ZTBlNTUoMHgyMTgpXT1fMHg4Njg3OWQsdGhpc1tfMHg1ZTBlNTUoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NWUwZTU1KDB4MWYwKV09ITB4MCx0aGlzWydfY29ubmVjdGVkJ109ITB4MSx0aGlzWydfY29ubmVjdGluZyddPSEweDEsdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXT0oKF8weGM1N2IwPShfMHgxODU5ZmI9XzB4M2I0NjU1W18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxODU5ZmJbXzB4NWUwZTU1KDB4MWU0KV0pPT1udWxsP3ZvaWQgMHgwOl8weGM1N2IwW18weDVlMGU1NSgweDIzMSldKT09PV8weDVlMGU1NSgweDFlOSksdGhpc1tfMHg1ZTBlNTUoMHgxYzMpXT0hKChfMHgyZWUzNjQ9KF8weDUzZjU4ND10aGlzWydnbG9iYWwnXVtfMHg1ZTBlNTUoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NTNmNTg0W18weDVlMGU1NSgweDI0ZCldKSE9bnVsbCYmXzB4MmVlMzY0W18weDVlMGU1NSgweDFjMSldKSYmIXRoaXNbXzB4NWUwZTU1KDB4MjI5KV0sdGhpc1snX1dlYlNvY2tldENsYXNzJ109bnVsbCx0aGlzW18weDVlMGU1NSgweDFlNSldPTB4MCx0aGlzW18weDVlMGU1NSgweDE4YyldPTB4MTQsdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXT1fMHg1ZTBlNTUoMHgxOGQpLHRoaXNbXzB4NWUwZTU1KDB4MjE3KV09KHRoaXNbJ19pbkJyb3dzZXInXT9fMHg1ZTBlNTUoMHgxOTApOl8weDVlMGU1NSgweDE3ZSkpK3RoaXNbXzB4NWUwZTU1KDB4MjBhKV07fWFzeW5jW18weGIzODQ3OSgweDE4NCldKCl7dmFyIF8weDViNDBjND1fMHhiMzg0NzksXzB4NDNhZGFjLF8weDNmMDhkOTtpZih0aGlzW18weDViNDBjNCgweDFhNildKXJldHVybiB0aGlzW18weDViNDBjNCgweDFhNildO2xldCBfMHgxZWZlNzM7aWYodGhpc1tfMHg1YjQwYzQoMHgxYzMpXXx8dGhpc1tfMHg1YjQwYzQoMHgyMjkpXSlfMHgxZWZlNzM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsnV2ViU29ja2V0J107ZWxzZXtpZigoXzB4NDNhZGFjPXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bJ3Byb2Nlc3MnXSkhPW51bGwmJl8weDQzYWRhY1tfMHg1YjQwYzQoMHgxZjUpXSlfMHgxZWZlNzM9KF8weDNmMDhkOT10aGlzW18weDViNDBjNCgweDIxYSldW18weDViNDBjNCgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgzZjA4ZDlbJ19XZWJTb2NrZXQnXTtlbHNlIHRyeXtsZXQgXzB4MTc5MjVhPWF3YWl0IGltcG9ydCgncGF0aCcpO18weDFlZmU3Mz0oYXdhaXQgaW1wb3J0KChhd2FpdCBpbXBvcnQoXzB4NWI0MGM0KDB4MjA4KSkpW18weDViNDBjNCgweDIwOSldKF8weDE3OTI1YVsnam9pbiddKHRoaXNbJ25vZGVNb2R1bGVzJ10sXzB4NWI0MGM0KDB4MTc2KSkpW18weDViNDBjNCgweDFiNSldKCkpKVsnZGVmYXVsdCddO31jYXRjaHt0cnl7XzB4MWVmZTczPXJlcXVpcmUocmVxdWlyZSgncGF0aCcpW18weDViNDBjNCgweDIwMCldKHRoaXNbXzB4NWI0MGM0KDB4MjU2KV0sJ3dzJykpO31jYXRjaHt0aHJvdyBuZXcgRXJyb3IoXzB4NWI0MGM0KDB4MjE0KSk7fX19cmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV09XzB4MWVmZTczLF8weDFlZmU3Mzt9W18weGIzODQ3OSgweDFiYyldKCl7dmFyIF8weDNlM2E2OT1fMHhiMzg0Nzk7dGhpc1tfMHgzZTNhNjkoMHgyNTkpXXx8dGhpc1tfMHgzZTNhNjkoMHgyNTQpXXx8dGhpc1snX2Nvbm5lY3RBdHRlbXB0Q291bnQnXT49dGhpc1tfMHgzZTNhNjkoMHgxOGMpXXx8KHRoaXNbJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ109ITB4MSx0aGlzWydfY29ubmVjdGluZyddPSEweDAsdGhpc1tfMHgzZTNhNjkoMHgxZTUpXSsrLHRoaXNbJ193cyddPW5ldyBQcm9taXNlKChfMHgyMjdjOTgsXzB4MmQyMDY1KT0+e3ZhciBfMHg0M2M4Njk9XzB4M2UzYTY5O3RoaXNbJ2dldFdlYlNvY2tldENsYXNzJ10oKVtfMHg0M2M4NjkoMHgyMDUpXShfMHg1ODUyMjQ9Pnt2YXIgXzB4M2YzYTg3PV8weDQzYzg2OTtsZXQgXzB4MmRkNTk0PW5ldyBfMHg1ODUyMjQoXzB4M2YzYTg3KDB4MTlmKSsoIXRoaXNbJ19pbkJyb3dzZXInXSYmdGhpc1snZG9ja2VyaXplZEFwcCddP18weDNmM2E4NygweDFkOSk6dGhpc1tfMHgzZjNhODcoMHgxZGIpXSkrJzonK3RoaXNbJ3BvcnQnXSk7XzB4MmRkNTk0W18weDNmM2E4NygweDIzYildPSgpPT57dmFyIF8weDEyNjg2YT1fMHgzZjNhODc7dGhpc1tfMHgxMjY4NmEoMHgxNzUpXT0hMHgxLHRoaXNbXzB4MTI2ODZhKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDEyNjg2YSgweDFiNCldKCksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHgxMjY4NmEoMHgyMzIpKSk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjQzKV09KCk9Pnt2YXIgXzB4NGRhZmY2PV8weDNmM2E4Nzt0aGlzWydfaW5Ccm93c2VyJ118fF8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXSYmXzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldW18weDRkYWZmNigweDIwZildJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0oKSxfMHgyMjdjOTgoXzB4MmRkNTk0KTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgxOGYpXT0oKT0+e3ZhciBfMHgzYTU4M2Y9XzB4M2YzYTg3O3RoaXNbXzB4M2E1ODNmKDB4MWYwKV09ITB4MCx0aGlzW18weDNhNTgzZigweDIzOSldKF8weDJkZDU5NCksdGhpc1tfMHgzYTU4M2YoMHgxYjQpXSgpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDFhMCldPV8weDI2MjE1YT0+e3ZhciBfMHgxYWRiZDE9XzB4M2YzYTg3O3RyeXtpZighKF8weDI2MjE1YSE9bnVsbCYmXzB4MjYyMTVhW18weDFhZGJkMSgweDI0NSldKXx8IXRoaXNbXzB4MWFkYmQxKDB4MjE4KV0pcmV0dXJuO2xldCBfMHgyYmFiZDk9SlNPTltfMHgxYWRiZDEoMHgyNTMpXShfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pO3RoaXNbXzB4MWFkYmQxKDB4MjE4KV0oXzB4MmJhYmQ5W18weDFhZGJkMSgweDE4NSldLF8weDJiYWJkOVtfMHgxYWRiZDEoMHgxOTMpXSx0aGlzW18weDFhZGJkMSgweDIxYSldLHRoaXNbJ19pbkJyb3dzZXInXSk7fWNhdGNoe319O30pW18weDQzYzg2OSgweDIwNSldKF8weDRmNzE0ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MCx0aGlzWydfY29ubmVjdGluZyddPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxZjApXT0hMHgxLHRoaXNbXzB4NDNjODY5KDB4MTc1KV09ITB4MCx0aGlzW18weDQzYzg2OSgweDFlNSldPTB4MCxfMHg0ZjcxNGUpKVtfMHg0M2M4NjkoMHgxYzYpXShfMHgyMmVjOWU9Pih0aGlzW18weDQzYzg2OSgweDI1NCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgyNTkpXT0hMHgxLGNvbnNvbGVbXzB4NDNjODY5KDB4MWYyKV0oJ2xvZ2dlclxcXFxcXFxceDIwZmFpbGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwY29ubmVjdFxcXFxcXFxceDIwdG9cXFxcXFxcXHgyMGhvc3QsXFxcXFxcXFx4MjBzZWVcXFxcXFxcXHgyMCcrdGhpc1snX3dlYlNvY2tldEVycm9yRG9jc0xpbmsnXSksXzB4MmQyMDY1KG5ldyBFcnJvcihfMHg0M2M4NjkoMHgxZjgpKyhfMHgyMmVjOWUmJl8weDIyZWM5ZVtfMHg0M2M4NjkoMHgyMzQpXSkpKSkpO30pKTt9W18weGIzODQ3OSgweDIzOSldKF8weDI1OGVhMyl7dmFyIF8weDMxNjA3ZT1fMHhiMzg0Nzk7dGhpc1tfMHgzMTYwN2UoMHgyNTQpXT0hMHgxLHRoaXNbXzB4MzE2MDdlKDB4MjU5KV09ITB4MTt0cnl7XzB4MjU4ZWEzWydvbmNsb3NlJ109bnVsbCxfMHgyNThlYTNbJ29uZXJyb3InXT1udWxsLF8weDI1OGVhM1tfMHgzMTYwN2UoMHgyNDMpXT1udWxsO31jYXRjaHt9dHJ5e18weDI1OGVhM1tfMHgzMTYwN2UoMHgyMjIpXTwweDImJl8weDI1OGVhM1snY2xvc2UnXSgpO31jYXRjaHt9fVtfMHhiMzg0NzkoMHgxYjQpXSgpe3ZhciBfMHgyMzNiYTY9XzB4YjM4NDc5O2NsZWFyVGltZW91dCh0aGlzW18weDIzM2JhNigweDFlMCldKSwhKHRoaXNbXzB4MjMzYmE2KDB4MWU1KV0+PXRoaXNbXzB4MjMzYmE2KDB4MThjKV0pJiYodGhpc1tfMHgyMzNiYTYoMHgxZTApXT1zZXRUaW1lb3V0KCgpPT57dmFyIF8weDQwMWZlYz1fMHgyMzNiYTYsXzB4NTJiM2Q5O3RoaXNbXzB4NDAxZmVjKDB4MjU0KV18fHRoaXNbXzB4NDAxZmVjKDB4MjU5KV18fCh0aGlzW18weDQwMWZlYygweDFiYyldKCksKF8weDUyYjNkOT10aGlzW18weDQwMWZlYygweDI1ZCldKT09bnVsbHx8XzB4NTJiM2Q5W18weDQwMWZlYygweDFjNildKCgpPT50aGlzW18weDQwMWZlYygweDFiNCldKCkpKTt9LDB4MWY0KSx0aGlzW18weDIzM2JhNigweDFlMCldW18weDIzM2JhNigweDIwZildJiZ0aGlzW18weDIzM2JhNigweDFlMCldWyd1bnJlZiddKCkpO31hc3luY1tfMHhiMzg0NzkoMHgyMWYpXShfMHg1ODZiMWQpe3ZhciBfMHg1ZDg1MDg9XzB4YjM4NDc5O3RyeXtpZighdGhpc1tfMHg1ZDg1MDgoMHgxNzUpXSlyZXR1cm47dGhpc1tfMHg1ZDg1MDgoMHgxZjApXSYmdGhpc1tfMHg1ZDg1MDgoMHgxYmMpXSgpLChhd2FpdCB0aGlzW18weDVkODUwOCgweDI1ZCldKVtfMHg1ZDg1MDgoMHgyMWYpXShKU09OW18weDVkODUwOCgweDE5OCldKF8weDU4NmIxZCkpO31jYXRjaChfMHhmZDNhOTcpe2NvbnNvbGVbXzB4NWQ4NTA4KDB4MWYyKV0odGhpc1tfMHg1ZDg1MDgoMHgyMTcpXSsnOlxcXFxcXFxceDIwJysoXzB4ZmQzYTk3JiZfMHhmZDNhOTdbXzB4NWQ4NTA4KDB4MjM0KV0pKSx0aGlzW18weDVkODUwOCgweDE3NSldPSEweDEsdGhpc1tfMHg1ZDg1MDgoMHgxYjQpXSgpO319fTtmdW5jdGlvbiBxKF8weDQyMzY3YSxfMHgyY2JmYjYsXzB4NWE5NTAxLF8weDFhYWY5MCxfMHg0Mjk3YjIsXzB4MTNlZjg5LF8weDgyNTI1NixfMHhmNjgyYTc9aWUpe3ZhciBfMHhhM2ZiNDI9XzB4YjM4NDc5O2xldCBfMHg0Y2YxNmQ9XzB4NWE5NTAxWydzcGxpdCddKCcsJylbXzB4YTNmYjQyKDB4MjI4KV0oXzB4NTFiNGQ2PT57dmFyIF8weDEwOGM5OD1fMHhhM2ZiNDIsXzB4MTJmMzIyLF8weDEyYmVkNCxfMHg1YmVkMjEsXzB4MjQzNGE4O3RyeXtpZighXzB4NDIzNjdhW18weDEwOGM5OCgweDI2MSldKXtsZXQgXzB4MTczMGI1PSgoXzB4MTJiZWQ0PShfMHgxMmYzMjI9XzB4NDIzNjdhWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDEyZjMyMltfMHgxMDhjOTgoMHgyNGQpXSk9PW51bGw/dm9pZCAweDA6XzB4MTJiZWQ0W18weDEwOGM5OCgweDFjMSldKXx8KChfMHgyNDM0YTg9KF8weDViZWQyMT1fMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDViZWQyMVtfMHgxMDhjOTgoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4MjQzNGE4W18weDEwOGM5OCgweDIzMSldKT09PV8weDEwOGM5OCgweDFlOSk7KF8weDQyOTdiMj09PV8weDEwOGM5OCgweDFkZSl8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDI0MCl8fF8weDQyOTdiMj09PSdhc3Rybyd8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDE3ZikpJiYoXzB4NDI5N2IyKz1fMHgxNzMwYjU/XzB4MTA4Yzk4KDB4MjU3KTpfMHgxMDhjOTgoMHgyMWMpKSxfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV09eydpZCc6K25ldyBEYXRlKCksJ3Rvb2wnOl8weDQyOTdiMn0sXzB4ODI1MjU2JiZfMHg0Mjk3YjImJiFfMHgxNzMwYjUmJmNvbnNvbGVbXzB4MTA4Yzk4KDB4MjUxKV0oJyVjXFxcXFxcXFx4MjBDb25zb2xlXFxcXFxcXFx4MjBOaW5qYVxcXFxcXFxceDIwZXh0ZW5zaW9uXFxcXFxcXFx4MjBpc1xcXFxcXFxceDIwY29ubmVjdGVkXFxcXFxcXFx4MjB0b1xcXFxcXFxceDIwJysoXzB4NDI5N2IyWydjaGFyQXQnXSgweDApW18weDEwOGM5OCgweDFhNyldKCkrXzB4NDI5N2IyWydzdWJzdHInXSgweDEpKSsnLCcsJ2JhY2tncm91bmQ6XFxcXFxcXFx4MjByZ2IoMzAsMzAsMzApO1xcXFxcXFxceDIwY29sb3I6XFxcXFxcXFx4MjByZ2IoMjU1LDIxMyw5MiknLF8weDEwOGM5OCgweDIyYikpO31sZXQgXzB4NGFiZTk2PW5ldyBaKF8weDQyMzY3YSxfMHgyY2JmYjYsXzB4NTFiNGQ2LF8weDFhYWY5MCxfMHgxM2VmODksXzB4ZjY4MmE3KTtyZXR1cm4gXzB4NGFiZTk2W18weDEwOGM5OCgweDIxZildW18weDEwOGM5OCgweDIyZSldKF8weDRhYmU5Nik7fWNhdGNoKF8weDViZjQ5Yil7cmV0dXJuIGNvbnNvbGVbJ3dhcm4nXShfMHgxMDhjOTgoMHgxYzcpLF8weDViZjQ5YiYmXzB4NWJmNDliW18weDEwOGM5OCgweDIzNCldKSwoKT0+e307fX0pO3JldHVybiBfMHgzNzlmZDM9Pl8weDRjZjE2ZFtfMHhhM2ZiNDIoMHgxZTEpXShfMHgzNzExMjE9Pl8weDM3MTEyMShfMHgzNzlmZDMpKTt9ZnVuY3Rpb24gaWUoXzB4M2U4ZjI1LF8weDM5ZmVhNSxfMHgyNTE1MGYsXzB4MjY1MjhlKXt2YXIgXzB4MWNjOTY3PV8weGIzODQ3OTtfMHgyNjUyOGUmJl8weDNlOGYyNT09PV8weDFjYzk2NygweDFiMCkmJl8weDI1MTUwZltfMHgxY2M5NjcoMHgxYTEpXVsncmVsb2FkJ10oKTt9ZnVuY3Rpb24gQihfMHgzMDk4NDIpe3ZhciBfMHgyNGRmYzI9XzB4YjM4NDc5LF8weDJhYzA0OCxfMHg1MGFiZGY7bGV0IF8weGRkYmRlZj1mdW5jdGlvbihfMHgxMWE2NzMsXzB4NWYwNjkzKXtyZXR1cm4gXzB4NWYwNjkzLV8weDExYTY3Mzt9LF8weDFjN2ZhZjtpZihfMHgzMDk4NDJbXzB4MjRkZmMyKDB4MTc3KV0pXzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDhkYmUxPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDhkYmUxKDB4MTc3KV1bXzB4OGRiZTEoMHgxZWYpXSgpO307ZWxzZXtpZihfMHgzMDk4NDJbXzB4MjRkZmMyKDB4MWEzKV0mJl8weDMwOTg0MlsncHJvY2VzcyddW18weDI0ZGZjMigweDE5YyldJiYoKF8weDUwYWJkZj0oXzB4MmFjMDQ4PV8weDMwOTg0MlsncHJvY2VzcyddKT09bnVsbD92b2lkIDB4MDpfMHgyYWMwNDhbJ2VudiddKT09bnVsbD92b2lkIDB4MDpfMHg1MGFiZGZbJ05FWFRfUlVOVElNRSddKSE9PV8weDI0ZGZjMigweDFlOSkpXzB4MWM3ZmFmPWZ1bmN0aW9uKCl7dmFyIF8weDUyZDY0MD1fMHgyNGRmYzI7cmV0dXJuIF8weDMwOTg0MltfMHg1MmQ2NDAoMHgxYTMpXVsnaHJ0aW1lJ10oKTt9LF8weGRkYmRlZj1mdW5jdGlvbihfMHg1NTBiYTksXzB4MTZhM2UyKXtyZXR1cm4gMHgzZTgqKF8weDE2YTNlMlsweDBdLV8weDU1MGJhOVsweDBdKSsoXzB4MTZhM2UyWzB4MV0tXzB4NTUwYmE5WzB4MV0pLzB4ZjQyNDA7fTtlbHNlIHRyeXtsZXQge3BlcmZvcm1hbmNlOl8weDM0ZGU0YX09cmVxdWlyZShfMHgyNGRmYzIoMHgyNGIpKTtfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NGYxZDY5PV8weDI0ZGZjMjtyZXR1cm4gXzB4MzRkZTRhW18weDRmMWQ2OSgweDFlZildKCk7fTt9Y2F0Y2h7XzB4MWM3ZmFmPWZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlKCk7fTt9fXJldHVybnsnZWxhcHNlZCc6XzB4ZGRiZGVmLCd0aW1lU3RhbXAnOl8weDFjN2ZhZiwnbm93JzooKT0+RGF0ZVtfMHgyNGRmYzIoMHgxZWYpXSgpfTt9ZnVuY3Rpb24gXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKXt2YXIgXzB4NDlmYmRjPV8weDQ5ZmIoKTtyZXR1cm4gXzB4MjY5MD1mdW5jdGlvbihfMHgyNjkwMWIsXzB4MzU4ZjFmKXtfMHgyNjkwMWI9XzB4MjY5MDFiLTB4MTczO3ZhciBfMHgxZmYyODc9XzB4NDlmYmRjW18weDI2OTAxYl07cmV0dXJuIF8weDFmZjI4Nzt9LF8weDI2OTAoXzB4Mzc0NmRiLF8weDQxZjlkZSk7fWZ1bmN0aW9uIEgoXzB4MjY1NWUzLF8weDE0Y2JmNyxfMHg0Y2Q2MDkpe3ZhciBfMHgyNmFjMmM9XzB4YjM4NDc5LF8weDRiZTcwZCxfMHgzZmI0Y2MsXzB4MWZmYzYyLF8weDQ3ZThhYSxfMHg1ZjA5NDI7aWYoXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXSE9PXZvaWQgMHgwKXJldHVybiBfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddO2xldCBfMHgyNTEyOTU9KChfMHgzZmI0Y2M9KF8weDRiZTcwZD1fMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDRiZTcwZFtfMHgyNmFjMmMoMHgyNGQpXSk9PW51bGw/dm9pZCAweDA6XzB4M2ZiNGNjW18weDI2YWMyYygweDFjMSldKXx8KChfMHg0N2U4YWE9KF8weDFmZmM2Mj1fMHgyNjU1ZTNbXzB4MjZhYzJjKDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDFmZmM2MltfMHgyNmFjMmMoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4NDdlOGFhWydORVhUX1JVTlRJTUUnXSk9PT1fMHgyNmFjMmMoMHgxZTkpO2Z1bmN0aW9uIF8weDU5ZDlkZShfMHgxOTQ5Mzgpe3ZhciBfMHg1ZTVkNWM9XzB4MjZhYzJjO2lmKF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgyMzcpXSgnLycpJiZfMHgxOTQ5MzhbJ2VuZHNXaXRoJ10oJy8nKSl7bGV0IF8weGNiNzgwND1uZXcgUmVnRXhwKF8weDE5NDkzOFsnc2xpY2UnXSgweDEsLTB4MSkpO3JldHVybiBfMHg0OWQ3NDI9Pl8weGNiNzgwNFtfMHg1ZTVkNWMoMHgxODcpXShfMHg0OWQ3NDIpO31lbHNle2lmKF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnKicpfHxfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTlhKV0oJz8nKSl7bGV0IF8weDUwZmEyZj1uZXcgUmVnRXhwKCdeJytfMHgxOTQ5MzhbXzB4NWU1ZDVjKDB4MTdiKV0oL1xcXFxcXFxcLi9nLFN0cmluZ1tfMHg1ZTVkNWMoMHgyNGUpXSgweDVjKSsnLicpWydyZXBsYWNlJ10oL1xcXFxcXFxcKi9nLCcuKicpW18weDVlNWQ1YygweDE3YildKC9cXFxcXFxcXD8vZywnLicpK1N0cmluZ1snZnJvbUNoYXJDb2RlJ10oMHgyNCkpO3JldHVybiBfMHgxYWVmYzQ9Pl8weDUwZmEyZltfMHg1ZTVkNWMoMHgxODcpXShfMHgxYWVmYzQpO31lbHNlIHJldHVybiBfMHg0NmJjZjY9Pl8weDQ2YmNmNj09PV8weDE5NDkzODt9fWxldCBfMHgyMDU0NmY9XzB4MTRjYmY3W18weDI2YWMyYygweDIyOCldKF8weDU5ZDlkZSk7cmV0dXJuIF8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYzUpXT1fMHgyNTEyOTV8fCFfMHgxNGNiZjcsIV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYzUpXSYmKChfMHg1ZjA5NDI9XzB4MjY1NWUzWydsb2NhdGlvbiddKT09bnVsbD92b2lkIDB4MDpfMHg1ZjA5NDJbXzB4MjZhYzJjKDB4MWU2KV0pJiYoXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXT1fMHgyMDU0NmZbXzB4MjZhYzJjKDB4MjQ4KV0oXzB4NDM4NWI0PT5fMHg0Mzg1YjQoXzB4MjY1NWUzWydsb2NhdGlvbiddWydob3N0bmFtZSddKSkpLF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107fWZ1bmN0aW9uIFgoXzB4MjJjY2IzLF8weDJjNzNkZSxfMHg0ZTE3MWIsXzB4MzVmYzYzKXt2YXIgXzB4NDc0ZTI4PV8weGIzODQ3OTtfMHgyMmNjYjM9XzB4MjJjY2IzLF8weDJjNzNkZT1fMHgyYzczZGUsXzB4NGUxNzFiPV8weDRlMTcxYixfMHgzNWZjNjM9XzB4MzVmYzYzO2xldCBfMHg0MTU0Njg9QihfMHgyMmNjYjMpLF8weDM3ZjU2MT1fMHg0MTU0NjhbXzB4NDc0ZTI4KDB4MWU4KV0sXzB4NTkxNThiPV8weDQxNTQ2OFsndGltZVN0YW1wJ107Y2xhc3MgXzB4NDMyOGJje2NvbnN0cnVjdG9yKCl7dmFyIF8weDFhZjZmNj1fMHg0NzRlMjg7dGhpc1tfMHgxYWY2ZjYoMHgyNDQpXT0vXig/ISg/OmRvfGlmfGlufGZvcnxsZXR8bmV3fHRyeXx2YXJ8Y2FzZXxlbHNlfGVudW18ZXZhbHxmYWxzZXxudWxsfHRoaXN8dHJ1ZXx2b2lkfHdpdGh8YnJlYWt8Y2F0Y2h8Y2xhc3N8Y29uc3R8c3VwZXJ8dGhyb3d8d2hpbGV8eWllbGR8ZGVsZXRlfGV4cG9ydHxpbXBvcnR8cHVibGljfHJldHVybnxzdGF0aWN8c3dpdGNofHR5cGVvZnxkZWZhdWx0fGV4dGVuZHN8ZmluYWxseXxwYWNrYWdlfHByaXZhdGV8Y29udGludWV8ZGVidWdnZXJ8ZnVuY3Rpb258YXJndW1lbnRzfGludGVyZmFjZXxwcm90ZWN0ZWR8aW1wbGVtZW50c3xpbnN0YW5jZW9mKSQpW18kYS16QS1aXFxcXFxcXFx4QTAtXFxcXFxcXFx1RkZGRl1bXyRhLXpBLVowLTlcXFxcXFxcXHhBMC1cXFxcXFxcXHVGRkZGXSokLyx0aGlzWydfbnVtYmVyUmVnRXhwJ109L14oMHxbMS05XVswLTldKikkLyx0aGlzW18weDFhZjZmNigweDFmMSldPS8nKFteXFxcXFxcXFxcXFxcXFxcXCddfFxcXFxcXFxcXFxcXFxcXFwnKSonLyx0aGlzW18weDFhZjZmNigweDIxNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMjQpXSx0aGlzW18weDFhZjZmNigweDFhNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMDcpXSx0aGlzW18weDFhZjZmNigweDIwNCldPU9iamVjdFtfMHgxYWY2ZjYoMHgxYjcpXSx0aGlzWydfZ2V0T3duUHJvcGVydHlOYW1lcyddPU9iamVjdFtfMHgxYWY2ZjYoMHgxYzApXSx0aGlzW18weDFhZjZmNigweDIyNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgxZTcpXSx0aGlzW18weDFhZjZmNigweDIzYSldPVJlZ0V4cFsncHJvdG90eXBlJ11bXzB4MWFmNmY2KDB4MWI1KV0sdGhpc1snX2RhdGVUb1N0cmluZyddPURhdGVbXzB4MWFmNmY2KDB4MjIwKV1bJ3RvU3RyaW5nJ107fVtfMHg0NzRlMjgoMHgxY2YpXShfMHg1MDcyMWEsXzB4NGM4MjhjLF8weDVlMmZmYyxfMHgzZWY4MzIpe3ZhciBfMHg0ZWJkOWQ9XzB4NDc0ZTI4LF8weGY2NDU5NT10aGlzLF8weGEwMTYxPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXTtmdW5jdGlvbiBfMHgyNDMxMDkoXzB4NDAwMmI3LF8weDM0YjVlYyxfMHg0NzY3NDMpe3ZhciBfMHg0Njk2NjQ9XzB4NGViZDlkO18weDM0YjVlY1sndHlwZSddPV8weDQ2OTY2NCgweDFjMiksXzB4MzRiNWVjW18weDQ2OTY2NCgweDIxYildPV8weDQwMDJiN1tfMHg0Njk2NjQoMHgyMzQpXSxfMHgyYTIwMTA9XzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldLF8weDQ3Njc0M1tfMHg0Njk2NjQoMHgxYzEpXVtfMHg0Njk2NjQoMHgyMDMpXT1fMHgzNGI1ZWMsXzB4ZjY0NTk1WydfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJ10oXzB4MzRiNWVjLF8weDQ3Njc0Myk7fXRyeXtfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWVjKV0rKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVtfMHg0ZWJkOWQoMHgxOWUpXShfMHg0YzgyOGMpO3ZhciBfMHg3ODkyODYsXzB4NGIzYTNhLF8weDEwYTU5LF8weDQzMjk2NixfMHgzYjQ5YjM9W10sXzB4NTc1ODA4PVtdLF8weDI1YTQ4NCxfMHg0MWUxMWQ9dGhpc1tfMHg0ZWJkOWQoMHgyNjApXShfMHg0YzgyOGMpLF8weDI1ZTM2Nj1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxYmIpLF8weDIyODgzMD0hMHgxLF8weDM1MWE0MT1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMTApLF8weDUzZTMwMz10aGlzW18weDRlYmQ5ZCgweDE5YildKF8weDQxZTExZCksXzB4M2U0NWIyPXRoaXNbXzB4NGViZDlkKDB4MTgzKV0oXzB4NDFlMTFkKSxfMHgzNDUwMjg9XzB4NTNlMzAzfHxfMHgzZTQ1YjIsXzB4NWMzYzhhPXt9LF8weDFjYmUzNj0weDAsXzB4MmU2Y2ZjPSEweDEsXzB4MmEyMDEwLF8weDEyODIwYT0vXigoWzEtOV17MX1bMC05XSopfDApJC87aWYoXzB4NWUyZmZjWydkZXB0aCddKXtpZihfMHgyNWUzNjYpe2lmKF8weDRiM2EzYT1fMHg0YzgyOGNbXzB4NGViZDlkKDB4MjQxKV0sXzB4NGIzYTNhPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNjIpXSl7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NWUyZmZjWydlbGVtZW50cyddLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxODApXT0hMHgwO31lbHNle2ZvcihfMHgxMGE1OT0weDAsXzB4NDMyOTY2PV8weDRiM2EzYSxfMHg3ODkyODY9XzB4MTBhNTk7XzB4Nzg5Mjg2PF8weDQzMjk2NjtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDc4OTI4NixfMHg1ZTJmZmMpKTt9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKz1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07fWlmKCEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09J3VuZGVmaW5lZCcpJiYhXzB4NTNlMzAzJiZfMHg0MWUxMWQhPT0nU3RyaW5nJyYmXzB4NDFlMTFkIT09J0J1ZmZlcicmJl8weDQxZTExZCE9PV8weDRlYmQ5ZCgweDIzNSkpe3ZhciBfMHgyNTIxMmI9XzB4M2VmODMyW18weDRlYmQ5ZCgweDI0NyldfHxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjQ3KV07aWYodGhpc1tfMHg0ZWJkOWQoMHgxYTQpXShfMHg0YzgyOGMpPyhfMHg3ODkyODY9MHgwLF8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzMTYyNWIpe3ZhciBfMHhhMTE0N2Q9XzB4NGViZDlkO2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO3JldHVybjt9aWYoIV8weDVlMmZmY1tfMHhhMTE0N2QoMHgxY2IpXSYmXzB4NWUyZmZjW18weGExMTQ3ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MTdjKV0+XzB4NWUyZmZjW18weGExMTQ3ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fV8weDU3NTgwOFtfMHhhMTE0N2QoMHgxOWUpXShfMHhmNjQ1OTVbXzB4YTExNDdkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHhhMTE0N2QoMHgyMjcpLF8weDc4OTI4NisrLF8weDVlMmZmYyxmdW5jdGlvbihfMHgxMGQxNWEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfMHgxMGQxNWE7fTt9KF8weDMxNjI1YikpKTt9KSk6dGhpc1tfMHg0ZWJkOWQoMHgyMGMpXShfMHg0YzgyOGMpJiZfMHg0YzgyOGNbXzB4NGViZDlkKDB4MWUxKV0oZnVuY3Rpb24oXzB4MzgyNGRmLF8weDM5MjY1Yyl7dmFyIF8weDhlOTllND1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDhlOTllNCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDhlOTllNCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fXZhciBfMHgxMGRkMzQ9XzB4MzkyNjVjWyd0b1N0cmluZyddKCk7XzB4MTBkZDM0W18weDhlOTllNCgweDI0MSldPjB4NjQmJihfMHgxMGRkMzQ9XzB4MTBkZDM0WydzbGljZSddKDB4MCwweDY0KStfMHg4ZTk5ZTQoMHgxZDApKSxfMHg1NzU4MDhbXzB4OGU5OWU0KDB4MTllKV0oXzB4ZjY0NTk1W18weDhlOTllNCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4OGU5OWU0KDB4MjVhKSxfMHgxMGRkMzQsXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEzNTE1Nil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEzNTE1Njt9O30oXzB4MzgyNGRmKSkpO30pLCFfMHgyMjg4MzApe3RyeXtmb3IoXzB4MjVhNDg0IGluIF8weDRjODI4YylpZighKF8weDI1ZTM2NiYmXzB4MTI4MjBhWyd0ZXN0J10oXzB4MjVhNDg0KSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVsnX2FkZE9iamVjdFByb3BlcnR5J10oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fWNhdGNoe31pZihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MjE5KV09ITB4MCxfMHgzNTFhNDEmJihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWQ4KV09ITB4MCksIV8weDJlNmNmYyl7dmFyIF8weDExMzMyOD1bXVtfMHg0ZWJkOWQoMHgyM2MpXSh0aGlzW18weDRlYmQ5ZCgweDIzMyldKF8weDRjODI4YykpWydjb25jYXQnXSh0aGlzW18weDRlYmQ5ZCgweDFlZCldKF8weDRjODI4YykpO2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHgxMTMzMjhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylpZihfMHgyNWE0ODQ9XzB4MTEzMzI4W18weDc4OTI4Nl0sIShfMHgyNWUzNjYmJl8weDEyODIwYVtfMHg0ZWJkOWQoMHgxODcpXShfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKSkpJiYhdGhpc1tfMHg0ZWJkOWQoMHgxNzkpXShfMHg0YzgyOGMsXzB4MjVhNDg0LF8weDVlMmZmYykmJiFfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWUyKStfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKV0pe2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO2JyZWFrO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4WydwdXNoJ10oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiNildKF8weDNiNDliMyxfMHg1YzNjOGEsXzB4NGM4MjhjLF8weDQxZTExZCxfMHgyNWE0ODQsXzB4NWUyZmZjKSk7fX19fX1pZihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWQ1KV09XzB4NDFlMTFkLF8weDM0NTAyOD8oXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyMmEpXSgpLHRoaXNbJ19jYXBJZlN0cmluZyddKF8weDQxZTExZCxfMHg1MDcyMWEsXzB4NWUyZmZjLF8weDNlZjgzMikpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFhYyk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbJ19kYXRlVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjM1KT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjWyd0b1N0cmluZyddKCk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTdhKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX3JlZ0V4cFRvU3RyaW5nJ11bJ2NhbGwnXShfMHg0YzgyOGMpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDE3MykmJnRoaXNbXzB4NGViZDlkKDB4MjI1KV0/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbXzB4NGViZDlkKDB4MjI1KV1bXzB4NGViZDlkKDB4MjIwKV1bXzB4NGViZDlkKDB4MWI1KV1bXzB4NGViZDlkKDB4MjJmKV0oXzB4NGM4MjhjKTohXzB4NWUyZmZjW18weDRlYmQ5ZCgweDIyMSldJiYhKF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFmZCl8fF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIyNCkpJiYoZGVsZXRlIF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXSxfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjBiKV09ITB4MCksXzB4MmU2Y2ZjJiYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFiZSldPSEweDApLF8weDJhMjAxMD1fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bXzB4NGViZDlkKDB4MjAzKV0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFjMSldWydjdXJyZW50J109XzB4NTA3MjFhLHRoaXNbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHg1MDcyMWEsXzB4NWUyZmZjKSxfMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV0pe2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4Nzg5Mjg2XShfMHg3ODkyODYpO31fMHgzYjQ5YjNbXzB4NGViZDlkKDB4MjQxKV0mJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjQ3KV09XzB4M2I0OWIzKTt9Y2F0Y2goXzB4M2M5MGM3KXtfMHgyNDMxMDkoXzB4M2M5MGM3LF8weDUwNzIxYSxfMHg1ZTJmZmMpO31yZXR1cm4gdGhpc1tfMHg0ZWJkOWQoMHgxZWIpXShfMHg0YzgyOGMsXzB4NTA3MjFhKSx0aGlzW18weDRlYmQ5ZCgweDFkMyldKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDVlMmZmY1snbm9kZSddWydjdXJyZW50J109XzB4MmEyMDEwLF8weDVlMmZmY1snbGV2ZWwnXS0tLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXT1fMHhhMDE2MSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVsncG9wJ10oKSxfMHg1MDcyMWE7fVsnX2dldE93blByb3BlcnR5U3ltYm9scyddKF8weDIxZjU0OCl7dmFyIF8weDFiMDFhMT1fMHg0NzRlMjg7cmV0dXJuIE9iamVjdFtfMHgxYjAxYTEoMHgyMDYpXT9PYmplY3RbXzB4MWIwMWExKDB4MjA2KV0oXzB4MjFmNTQ4KTpbXTt9W18weDQ3NGUyOCgweDFhNCldKF8weDE1YjFhNyl7dmFyIF8weDM3MDY1Mz1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTViMWE3JiZfMHgyMmNjYjNbXzB4MzcwNjUzKDB4MjI3KV0mJnRoaXNbXzB4MzcwNjUzKDB4MjJjKV0oXzB4MTViMWE3KT09PV8weDM3MDY1MygweDIxZSkmJl8weDE1YjFhN1tfMHgzNzA2NTMoMHgxZTEpXSk7fVtfMHg0NzRlMjgoMHgxNzkpXShfMHg0NWZiZWQsXzB4NWI4NmRiLF8weDM3NmYzZil7dmFyIF8weDMyZmIwMz1fMHg0NzRlMjg7cmV0dXJuIF8weDM3NmYzZltfMHgzMmZiMDMoMHgxYjEpXT90eXBlb2YgXzB4NDVmYmVkW18weDViODZkYl09PV8weDMyZmIwMygweDIxMCk6ITB4MTt9W18weDQ3NGUyOCgweDI2MCldKF8weDJiNTZlYyl7dmFyIF8weDFlMDE1Mj1fMHg0NzRlMjgsXzB4MzZiZGI3PScnO3JldHVybiBfMHgzNmJkYjc9dHlwZW9mIF8weDJiNTZlYyxfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyNGMpP3RoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PV8weDFlMDE1MigweDE4YSk/XzB4MzZiZGI3PV8weDFlMDE1MigweDFiYik6dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MjNmKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWFjKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT0nW29iamVjdFxcXFxcXFxceDIwQmlnSW50XSc/XzB4MzZiZGI3PSdiaWdpbnQnOl8weDJiNTZlYz09PW51bGw/XzB4MzZiZGI3PSdudWxsJzpfMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV0mJihfMHgzNmJkYjc9XzB4MmI1NmVjW18weDFlMDE1MigweDFjNCldW18weDFlMDE1MigweDIxNildfHxfMHgzNmJkYjcpOl8weDM2YmRiNz09PV8weDFlMDE1MigweDIyNCkmJnRoaXNbXzB4MWUwMTUyKDB4MWE1KV0mJl8weDJiNTZlYyBpbnN0YW5jZW9mIHRoaXNbXzB4MWUwMTUyKDB4MWE1KV0mJihfMHgzNmJkYjc9XzB4MWUwMTUyKDB4MjA3KSksXzB4MzZiZGI3O31bJ19vYmplY3RUb1N0cmluZyddKF8weGQ1Njc2NCl7dmFyIF8weDVhYmQyMz1fMHg0NzRlMjg7cmV0dXJuIE9iamVjdFtfMHg1YWJkMjMoMHgyMjApXVtfMHg1YWJkMjMoMHgxYjUpXVtfMHg1YWJkMjMoMHgyMmYpXShfMHhkNTY3NjQpO31bJ19pc1ByaW1pdGl2ZVR5cGUnXShfMHhiODhkOTcpe3ZhciBfMHg1MDZhZjQ9XzB4NDc0ZTI4O3JldHVybiBfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgyM2UpfHxfMHhiODhkOTc9PT0nc3RyaW5nJ3x8XzB4Yjg4ZDk3PT09XzB4NTA2YWY0KDB4MWFkKTt9W18weDQ3NGUyOCgweDE4MyldKF8weDJiM2JmZCl7dmFyIF8weDMwNzk1Nj1fMHg0NzRlMjg7cmV0dXJuIF8weDJiM2JmZD09PSdCb29sZWFuJ3x8XzB4MmIzYmZkPT09XzB4MzA3OTU2KDB4MWRhKXx8XzB4MmIzYmZkPT09J051bWJlcic7fVsnX2FkZFByb3BlcnR5J10oXzB4MzVmMmFjLF8weDJmNzU5ZCxfMHg0MDNiZmIsXzB4NGEyYWIxLF8weDM4OGQ5OSxfMHgyNDA1OWUpe3ZhciBfMHgzMTU3ZjE9dGhpcztyZXR1cm4gZnVuY3Rpb24oXzB4MWY4YTcxKXt2YXIgXzB4MTljM2I4PV8weDI2OTAsXzB4NDBiZmZjPV8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgyMDMpXSxfMHgxNjI4Y2Y9XzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV0sXzB4OTNlZDVmPV8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXTtfMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bJ3BhcmVudCddPV8weDQwYmZmYyxfMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWQxKV09dHlwZW9mIF8weDRhMmFiMT09XzB4MTljM2I4KDB4MWFkKT9fMHg0YTJhYjE6XzB4MWY4YTcxLF8weDM1ZjJhY1tfMHgxOWMzYjgoMHgxOWUpXShfMHgzMTU3ZjFbJ19wcm9wZXJ0eSddKF8weDJmNzU5ZCxfMHg0MDNiZmIsXzB4NGEyYWIxLF8weDM4OGQ5OSxfMHgyNDA1OWUpKSxfMHgzODhkOTlbXzB4MTljM2I4KDB4MWMxKV1bXzB4MTljM2I4KDB4MWJkKV09XzB4OTNlZDVmLF8weDM4OGQ5OVsnbm9kZSddW18weDE5YzNiOCgweDFkMSldPV8weDE2MjhjZjt9O31bXzB4NDc0ZTI4KDB4MWI2KV0oXzB4Yzg0YjkzLF8weDNlMmY0NCxfMHgxODVhZjIsXzB4NDlkMWQ0LF8weDRlMTQ4ZCxfMHgyZWNkNWYsXzB4NDkyMmEwKXt2YXIgXzB4MWQ3YTVmPV8weDQ3NGUyOCxfMHhiOTZhNjA9dGhpcztyZXR1cm4gXzB4M2UyZjQ0W18weDFkN2E1ZigweDFlMikrXzB4NGUxNDhkW18weDFkN2E1ZigweDFiNSldKCldPSEweDAsZnVuY3Rpb24oXzB4NWQ0Yzk0KXt2YXIgXzB4NTQ2M2Q5PV8weDFkN2E1ZixfMHgzN2ZkNjI9XzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MjAzKV0sXzB4MmU4Y2Y3PV8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxZDEpXSxfMHg0MTFlNjY9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydwYXJlbnQnXTtfMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bXzB4NTQ2M2Q5KDB4MWJkKV09XzB4MzdmZDYyLF8weDJlY2Q1Zlsnbm9kZSddW18weDU0NjNkOSgweDFkMSldPV8weDVkNGM5NCxfMHhjODRiOTNbXzB4NTQ2M2Q5KDB4MTllKV0oXzB4Yjk2YTYwW18weDU0NjNkOSgweDIyNildKF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApKSxfMHgyZWNkNWZbJ25vZGUnXVsncGFyZW50J109XzB4NDExZTY2LF8weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVsnaW5kZXgnXT1fMHgyZThjZjc7fTt9W18weDQ3NGUyOCgweDIyNildKF8weDMwOTAwNCxfMHgyN2Y4ZjQsXzB4MmQ0MDZhLF8weDNkMWViMixfMHg1ZGMxNDgpe3ZhciBfMHgyZjY3YzA9XzB4NDc0ZTI4LF8weDNkMjM1MT10aGlzO18weDVkYzE0OHx8KF8weDVkYzE0OD1mdW5jdGlvbihfMHgxNmU1YjQsXzB4OWQ1OTc4KXtyZXR1cm4gXzB4MTZlNWI0W18weDlkNTk3OF07fSk7dmFyIF8weDEyMWQ3OT1fMHgyZDQwNmFbJ3RvU3RyaW5nJ10oKSxfMHgxMGEzNWY9XzB4M2QxZWIyW18weDJmNjdjMCgweDIwZCldfHx7fSxfMHg1ODk3NDI9XzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldLF8weDgyYWJmND1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV07dHJ5e3ZhciBfMHgyNWE2MmE9dGhpc1tfMHgyZjY3YzAoMHgyMGMpXShfMHgzMDkwMDQpLF8weDE3YmNiNT1fMHgxMjFkNzk7XzB4MjVhNjJhJiZfMHgxN2JjYjVbMHgwXT09PSdcXFxcXFxcXHgyNycmJihfMHgxN2JjYjU9XzB4MTdiY2I1WydzdWJzdHInXSgweDEsXzB4MTdiY2I1WydsZW5ndGgnXS0weDIpKTt2YXIgXzB4NTM4NTgxPV8weDNkMWViMltfMHgyZjY3YzAoMHgyMGQpXT1fMHgxMGEzNWZbXzB4MmY2N2MwKDB4MWUyKStfMHgxN2JjYjVdO18weDUzODU4MSYmKF8weDNkMWViMlsnZGVwdGgnXT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0rMHgxKSxfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWNiKV09ISFfMHg1Mzg1ODE7dmFyIF8weDU3YTc0Mj10eXBlb2YgXzB4MmQ0MDZhPT1fMHgyZjY3YzAoMHgxNzMpLF8weDQyODc2Nz17J25hbWUnOl8weDU3YTc0Mnx8XzB4MjVhNjJhP18weDEyMWQ3OTp0aGlzWydfcHJvcGVydHlOYW1lJ10oXzB4MTIxZDc5KX07aWYoXzB4NTdhNzQyJiYoXzB4NDI4NzY3W18weDJmNjdjMCgweDE3MyldPSEweDApLCEoXzB4MjdmOGY0PT09XzB4MmY2N2MwKDB4MWJiKXx8XzB4MjdmOGY0PT09J0Vycm9yJykpe3ZhciBfMHgyN2MzN2I9dGhpc1tfMHgyZjY3YzAoMHgyMDQpXShfMHgzMDkwMDQsXzB4MmQ0MDZhKTtpZihfMHgyN2MzN2ImJihfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MWZjKV0mJihfMHg0Mjg3NjdbJ3NldHRlciddPSEweDApLF8weDI3YzM3YltfMHgyZjY3YzAoMHgyNTIpXSYmIV8weDUzODU4MSYmIV8weDNkMWViMltfMHgyZjY3YzAoMHgxZGMpXSkpcmV0dXJuIF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZjYpXT0hMHgwLHRoaXNbXzB4MmY2N2MwKDB4MjU4KV0oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4NTNkYjNmO3RyeXtfMHg1M2RiM2Y9XzB4NWRjMTQ4KF8weDMwOTAwNCxfMHgyZDQwNmEpO31jYXRjaChfMHgxNzVmNmMpe3JldHVybiBfMHg0Mjg3Njc9eyduYW1lJzpfMHgxMjFkNzksJ3R5cGUnOl8weDJmNjdjMCgweDFjMiksJ2Vycm9yJzpfMHgxNzVmNmNbXzB4MmY2N2MwKDB4MjM0KV19LHRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyKSxfMHg0Mjg3Njc7fXZhciBfMHgzY2NkMDk9dGhpc1tfMHgyZjY3YzAoMHgyNjApXShfMHg1M2RiM2YpLF8weDQ5NTQ1Nz10aGlzW18weDJmNjdjMCgweDE5YildKF8weDNjY2QwOSk7aWYoXzB4NDI4NzY3W18weDJmNjdjMCgweDFkNSldPV8weDNjY2QwOSxfMHg0OTU0NTcpdGhpc1snX3Byb2Nlc3NUcmVlTm9kZVJlc3VsdCddKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDI5NDI2YT1fMHgyZjY3YzA7XzB4NDI4NzY3W18weDI5NDI2YSgweDFhZSldPV8weDUzZGIzZltfMHgyOTQyNmEoMHgyMmEpXSgpLCFfMHg1Mzg1ODEmJl8weDNkMjM1MVtfMHgyOTQyNmEoMHgyNDkpXShfMHgzY2NkMDksXzB4NDI4NzY3LF8weDNkMWViMix7fSk7fSk7ZWxzZXt2YXIgXzB4ZDgwZTY9XzB4M2QxZWIyWydhdXRvRXhwYW5kJ10mJl8weDNkMWViMltfMHgyZjY3YzAoMHgxZWMpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRNYXhEZXB0aCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWYzKV1bJ2luZGV4T2YnXShfMHg1M2RiM2YpPDB4MCYmXzB4M2NjZDA5IT09J2Z1bmN0aW9uJyYmXzB4M2QxZWIyW18weDJmNjdjMCgweDE3YyldPF8weDNkMWViMlsnYXV0b0V4cGFuZExpbWl0J107XzB4ZDgwZTZ8fF8weDNkMWViMlsnbGV2ZWwnXTxfMHg1ODk3NDJ8fF8weDUzODU4MT8odGhpc1tfMHgyZjY3YzAoMHgxY2YpXShfMHg0Mjg3NjcsXzB4NTNkYjNmLF8weDNkMWViMixfMHg1Mzg1ODF8fHt9KSx0aGlzW18weDJmNjdjMCgweDFlYildKF8weDUzZGIzZixfMHg0Mjg3NjcpKTp0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIsXzB4NTNkYjNmLGZ1bmN0aW9uKCl7dmFyIF8weDU0MmRlMT1fMHgyZjY3YzA7XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MWZkKXx8XzB4M2NjZDA5PT09XzB4NTQyZGUxKDB4MjI0KXx8KGRlbGV0ZSBfMHg0Mjg3NjdbXzB4NTQyZGUxKDB4MWFlKV0sXzB4NDI4NzY3W18weDU0MmRlMSgweDIwYildPSEweDApO30pO31yZXR1cm4gXzB4NDI4NzY3O31maW5hbGx5e18weDNkMWViMlsnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJ109XzB4MTBhMzVmLF8weDNkMWViMltfMHgyZjY3YzAoMHgyMjEpXT1fMHg1ODk3NDIsXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPV8weDgyYWJmNDt9fVtfMHg0NzRlMjgoMHgyNDkpXShfMHg0ZDExMmUsXzB4NDUxYWU1LF8weDU2ZDYxMCxfMHgzYmY0OGUpe3ZhciBfMHg2NzgxNjg9XzB4NDc0ZTI4LF8weGY5ZDc3Nz1fMHgzYmY0OGVbXzB4Njc4MTY4KDB4MjEyKV18fF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyMTIpXTtpZigoXzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWNhKXx8XzB4NGQxMTJlPT09XzB4Njc4MTY4KDB4MWRhKSkmJl8weDQ1MWFlNVtfMHg2NzgxNjgoMHgxYWUpXSl7bGV0IF8weDNhMDBkND1fMHg0NTFhZTVbJ3ZhbHVlJ11bXzB4Njc4MTY4KDB4MjQxKV07XzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldKz1fMHgzYTAwZDQsXzB4NTZkNjEwW18weDY3ODE2OCgweDI2MyldPl8weDU2ZDYxMFtfMHg2NzgxNjgoMHgxYTkpXT8oXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPScnLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pOl8weDNhMDBkND5fMHhmOWQ3NzcmJihfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MjBiKV09XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI1NSldKDB4MCxfMHhmOWQ3NzcpLGRlbGV0ZSBfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pO319W18weDQ3NGUyOCgweDIwYyldKF8weDE5Y2JlNSl7dmFyIF8weDQ5YTQ1MT1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTljYmU1JiZfMHgyMmNjYjNbJ01hcCddJiZ0aGlzW18weDQ5YTQ1MSgweDIyYyldKF8weDE5Y2JlNSk9PT1fMHg0OWE0NTEoMHgxODYpJiZfMHgxOWNiZTVbJ2ZvckVhY2gnXSk7fVtfMHg0NzRlMjgoMHgxY2MpXShfMHg1NzFmNmEpe3ZhciBfMHgzODQ5NGU9XzB4NDc0ZTI4O2lmKF8weDU3MWY2YVtfMHgzODQ5NGUoMHgxOTYpXSgvXlxcXFxcXFxcZCskLykpcmV0dXJuIF8weDU3MWY2YTt2YXIgXzB4MmFjMWUwO3RyeXtfMHgyYWMxZTA9SlNPTlsnc3RyaW5naWZ5J10oJycrXzB4NTcxZjZhKTt9Y2F0Y2h7XzB4MmFjMWUwPSdcXFxcXFxcXHgyMicrdGhpc1tfMHgzODQ5NGUoMHgyMmMpXShfMHg1NzFmNmEpKydcXFxcXFxcXHgyMic7fXJldHVybiBfMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFxcXFxcIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVxcXFxcXFwiJC8pP18weDJhYzFlMD1fMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MjU1KV0oMHgxLF8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNDEpXS0weDIpOl8weDJhYzFlMD1fMHgyYWMxZTBbXzB4Mzg0OTRlKDB4MTdiKV0oLycvZywnXFxcXFxcXFx4NWNcXFxcXFxcXHgyNycpW18weDM4NDk0ZSgweDE3YildKC9cXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCIvZywnXFxcXFxcXFx4MjInKVtfMHgzODQ5NGUoMHgxN2IpXSgvKF5cXFxcXFxcInxcXFxcXFxcIiQpL2csJ1xcXFxcXFxceDI3JyksXzB4MmFjMWUwO31bXzB4NDc0ZTI4KDB4MjU4KV0oXzB4NGNkZjI0LF8weDQ1ZGExMixfMHgxOGUxNjcsXzB4ZWMzZjYpe3ZhciBfMHgxZDE5ZjU9XzB4NDc0ZTI4O3RoaXNbXzB4MWQxOWY1KDB4MjIzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMiksXzB4ZWMzZjYmJl8weGVjM2Y2KCksdGhpc1tfMHgxZDE5ZjUoMHgxZWIpXShfMHgxOGUxNjcsXzB4NGNkZjI0KSx0aGlzW18weDFkMTlmNSgweDFkMyldKF8weDRjZGYyNCxfMHg0NWRhMTIpO31bXzB4NDc0ZTI4KDB4MjIzKV0oXzB4NDI4NGI0LF8weDUwNGM4Yyl7dmFyIF8weDJlZWZjMD1fMHg0NzRlMjg7dGhpc1tfMHgyZWVmYzAoMHgxNzgpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZVF1ZXJ5UGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlRXhwcmVzc2lvblBhdGgnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKSx0aGlzWydfc2V0Tm9kZVBlcm1pc3Npb25zJ10oXzB4NDI4NGI0LF8weDUwNGM4Yyk7fVtfMHg0NzRlMjgoMHgxNzgpXShfMHgzZDBkNDUsXzB4Mzg2YmE1KXt9Wydfc2V0Tm9kZVF1ZXJ5UGF0aCddKF8weDJmODMzMCxfMHg0NTY2NjApe31bXzB4NDc0ZTI4KDB4MWUzKV0oXzB4NTU5NmMyLF8weDNmN2E5Mil7fVtfMHg0NzRlMjgoMHgxODIpXShfMHg3NWNlYSl7dmFyIF8weDU4NmJhYz1fMHg0NzRlMjg7cmV0dXJuIF8weDc1Y2VhPT09dGhpc1tfMHg1ODZiYWMoMHgyMTUpXTt9W18weDQ3NGUyOCgweDFkMyldKF8weDQzNGVjOSxfMHgzNDQwOGUpe3ZhciBfMHg0ZGNiZmM9XzB4NDc0ZTI4O3RoaXNbXzB4NGRjYmZjKDB4MWUzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1tfMHg0ZGNiZmMoMHgxODgpXShfMHg0MzRlYzkpLF8weDM0NDA4ZVtfMHg0ZGNiZmMoMHgyNDIpXSYmdGhpc1tfMHg0ZGNiZmMoMHgxZjkpXShfMHg0MzRlYzkpLHRoaXNbXzB4NGRjYmZjKDB4MWI4KV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSksdGhpc1tfMHg0ZGNiZmMoMHgyNjQpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzWydfY2xlYW5Ob2RlJ10oXzB4NDM0ZWM5KTt9W18weDQ3NGUyOCgweDFlYildKF8weDU5OWQyNCxfMHg0MTMzNTcpe3ZhciBfMHgyZDBmYzc9XzB4NDc0ZTI4O2xldCBfMHhjMmQ4NDc7dHJ5e18weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXSYmKF8weGMyZDg0Nz1fMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV0sXzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldW18weDJkMGZjNygweDIxYildPWZ1bmN0aW9uKCl7fSksXzB4NTk5ZDI0JiZ0eXBlb2YgXzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldPT1fMHgyZDBmYzcoMHgxYWQpJiYoXzB4NDEzMzU3W18weDJkMGZjNygweDI0MSldPV8weDU5OWQyNFtfMHgyZDBmYzcoMHgyNDEpXSk7fWNhdGNoe31maW5hbGx5e18weGMyZDg0NyYmKF8weDIyY2NiM1snY29uc29sZSddWydlcnJvciddPV8weGMyZDg0Nyk7fWlmKF8weDQxMzM1N1sndHlwZSddPT09XzB4MmQwZmM3KDB4MWFkKXx8XzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxZDYpKXtpZihpc05hTihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV0pKV8weDQxMzM1N1tfMHgyZDBmYzcoMHgyNGYpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbJ3ZhbHVlJ107ZWxzZSBzd2l0Y2goXzB4NDEzMzU3Wyd2YWx1ZSddKXtjYXNlIE51bWJlclsnUE9TSVRJVkVfSU5GSU5JVFknXTpfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjJkKV09ITB4MCxkZWxldGUgXzB4NDEzMzU3W18weDJkMGZjNygweDFhZSldO2JyZWFrO2Nhc2UgTnVtYmVyWydORUdBVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMWQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSAweDA6dGhpc1tfMHgyZDBmYzcoMHgyMzApXShfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV0pJiYoXzB4NDEzMzU3W18weDJkMGZjNygweDFmZildPSEweDApO2JyZWFrO319ZWxzZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWQ1KV09PT1fMHgyZDBmYzcoMHgyMTApJiZ0eXBlb2YgXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildPT1fMHgyZDBmYzcoMHgxY2EpJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0mJl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NTk5ZDI0W18weDJkMGZjNygweDIxNildIT09XzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiYoXzB4NDEzMzU3W18weDJkMGZjNygweDE5ZCldPV8weDU5OWQyNFsnbmFtZSddKTt9W18weDQ3NGUyOCgweDIzMCldKF8weGQ1NTM5Zil7dmFyIF8weDJlYWU2Mz1fMHg0NzRlMjg7cmV0dXJuIDB4MS9fMHhkNTUzOWY9PT1OdW1iZXJbXzB4MmVhZTYzKDB4MjVjKV07fVsnX3NvcnRQcm9wcyddKF8weDM4MDIzNSl7dmFyIF8weDE0NjEzNT1fMHg0NzRlMjg7IV8weDM4MDIzNVtfMHgxNDYxMzUoMHgyNDcpXXx8IV8weDM4MDIzNVtfMHgxNDYxMzUoMHgyNDcpXVtfMHgxNDYxMzUoMHgyNDEpXXx8XzB4MzgwMjM1W18weDE0NjEzNSgweDFkNSldPT09XzB4MTQ2MTM1KDB4MWJiKXx8XzB4MzgwMjM1W18weDE0NjEzNSgweDFkNSldPT09XzB4MTQ2MTM1KDB4MjVhKXx8XzB4MzgwMjM1W18weDE0NjEzNSgweDFkNSldPT09J1NldCd8fF8weDM4MDIzNVtfMHgxNDYxMzUoMHgyNDcpXVtfMHgxNDYxMzUoMHgxZmIpXShmdW5jdGlvbihfMHg0MTQ5MjgsXzB4MTk0NWZjKXt2YXIgXzB4MjY2ODkyPV8weDE0NjEzNSxfMHgxYjY2Yjc9XzB4NDE0OTI4W18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCksXzB4NTMyOGJiPV8weDE5NDVmY1tfMHgyNjY4OTIoMHgyMTYpXVtfMHgyNjY4OTIoMHgxZmUpXSgpO3JldHVybiBfMHgxYjY2Yjc8XzB4NTMyOGJiPy0weDE6XzB4MWI2NmI3Pl8weDUzMjhiYj8weDE6MHgwO30pO31bXzB4NDc0ZTI4KDB4MWI4KV0oXzB4MzY5YmZmLF8weDFlMWM2OCl7dmFyIF8weDI1NzhlOT1fMHg0NzRlMjg7aWYoIShfMHgxZTFjNjhbXzB4MjU3OGU5KDB4MWIxKV18fCFfMHgzNjliZmZbXzB4MjU3OGU5KDB4MjQ3KV18fCFfMHgzNjliZmZbJ3Byb3BzJ11bJ2xlbmd0aCddKSl7Zm9yKHZhciBfMHg0MTI0YjA9W10sXzB4NWQ4YzEyPVtdLF8weDFiMDJmNz0weDAsXzB4MjkxMTRmPV8weDM2OWJmZlsncHJvcHMnXVtfMHgyNTc4ZTkoMHgyNDEpXTtfMHgxYjAyZjc8XzB4MjkxMTRmO18weDFiMDJmNysrKXt2YXIgXzB4NGRhZDA3PV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXVtfMHgxYjAyZjddO18weDRkYWQwN1tfMHgyNTc4ZTkoMHgxZDUpXT09PV8weDI1NzhlOSgweDIxMCk/XzB4NDEyNGIwW18weDI1NzhlOSgweDE5ZSldKF8weDRkYWQwNyk6XzB4NWQ4YzEyW18weDI1NzhlOSgweDE5ZSldKF8weDRkYWQwNyk7fWlmKCEoIV8weDVkOGMxMltfMHgyNTc4ZTkoMHgyNDEpXXx8XzB4NDEyNGIwW18weDI1NzhlOSgweDI0MSldPD0weDEpKXtfMHgzNjliZmZbJ3Byb3BzJ109XzB4NWQ4YzEyO3ZhciBfMHgzZjUxM2U9eydmdW5jdGlvbnNOb2RlJzohMHgwLCdwcm9wcyc6XzB4NDEyNGIwfTt0aGlzW18weDI1NzhlOSgweDE3OCldKF8weDNmNTEzZSxfMHgxZTFjNjgpLHRoaXNbXzB4MjU3OGU5KDB4MWUzKV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxODgpXShfMHgzZjUxM2UpLHRoaXNbXzB4MjU3OGU5KDB4MWQ3KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksXzB4M2Y1MTNlWydpZCddKz0nXFxcXFxcXFx4MjBmJyxfMHgzNjliZmZbJ3Byb3BzJ11bXzB4MjU3OGU5KDB4MWEyKV0oXzB4M2Y1MTNlKTt9fX1bJ19hZGRMb2FkTm9kZSddKF8weDI1MWZlYSxfMHgxYzdiZWQpe31bXzB4NDc0ZTI4KDB4MTg4KV0oXzB4NDIwYzVlKXt9WydfaXNBcnJheSddKF8weDE3MWQzOCl7dmFyIF8weDQxNjIzND1fMHg0NzRlMjg7cmV0dXJuIEFycmF5Wydpc0FycmF5J10oXzB4MTcxZDM4KXx8dHlwZW9mIF8weDE3MWQzOD09XzB4NDE2MjM0KDB4MjRjKSYmdGhpc1snX29iamVjdFRvU3RyaW5nJ10oXzB4MTcxZDM4KT09PV8weDQxNjIzNCgweDE4YSk7fVtfMHg0NzRlMjgoMHgxZDcpXShfMHgzMWJkYzQsXzB4NTE3OWIxKXt9W18weDQ3NGUyOCgweDIzOCldKF8weDRlMGVjYyl7dmFyIF8weDQxMjA3OT1fMHg0NzRlMjg7ZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMDIpXSxkZWxldGUgXzB4NGUwZWNjWydfaGFzU2V0T25JdHNQYXRoJ10sZGVsZXRlIF8weDRlMGVjY1tfMHg0MTIwNzkoMHgyMTMpXTt9Wydfc2V0Tm9kZUV4cHJlc3Npb25QYXRoJ10oXzB4MTFiZWE2LF8weDQ3ZTAzMil7fX1sZXQgXzB4M2E0NTY0PW5ldyBfMHg0MzI4YmMoKSxfMHg0NjBiMzY9eydwcm9wcyc6MHg2NCwnZWxlbWVudHMnOjB4NjQsJ3N0ckxlbmd0aCc6MHg0MDAqMHgzMiwndG90YWxTdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxMzg4LCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4YX0sXzB4MTU4NjZhPXsncHJvcHMnOjB4NSwnZWxlbWVudHMnOjB4NSwnc3RyTGVuZ3RoJzoweDEwMCwndG90YWxTdHJMZW5ndGgnOjB4MTAwKjB4MywnYXV0b0V4cGFuZExpbWl0JzoweDFlLCdhdXRvRXhwYW5kTWF4RGVwdGgnOjB4Mn07ZnVuY3Rpb24gXzB4MjgxNjI0KF8weDIzOTAwYixfMHg1OThhNGEsXzB4MWI1NGFjLF8weDI1NGJkNCxfMHg1MTQ4YTQsXzB4NGZiOTQwKXt2YXIgXzB4MzU2N2NjPV8weDQ3NGUyODtsZXQgXzB4MmRiZTAxLF8weDU0ZTlmZTt0cnl7XzB4NTRlOWZlPV8weDU5MTU4YigpLF8weDJkYmUwMT1fMHg0ZTE3MWJbXzB4NTk4YTRhXSwhXzB4MmRiZTAxfHxfMHg1NGU5ZmUtXzB4MmRiZTAxWyd0cyddPjB4MWY0JiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0mJl8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXS9fMHgyZGJlMDFbJ2NvdW50J108MHg2ND8oXzB4NGUxNzFiW18weDU5OGE0YV09XzB4MmRiZTAxPXsnY291bnQnOjB4MCwndGltZSc6MHgwLCd0cyc6XzB4NTRlOWZlfSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV09e30pOl8weDU0ZTlmZS1fMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ10+MHgzMiYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWydjb3VudCddJiZfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0vXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV08MHg2NCYmKF8weDRlMTcxYlsnaGl0cyddPXt9KTtsZXQgXzB4MTc0ZDFhPVtdLF8weDVhMmRiNj1fMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjQ2KV18fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVtfMHgzNTY3Y2MoMHgyNDYpXT9fMHgxNTg2NmE6XzB4NDYwYjM2LF8weDM2OWZiMD1fMHg0NjVkYzc9Pnt2YXIgXzB4MWU3OTg3PV8weDM1NjdjYztsZXQgXzB4MzViMzFlPXt9O3JldHVybiBfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjQ3KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDI0NyldLF8weDM1YjMxZVsnZWxlbWVudHMnXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjYyKV0sXzB4MzViMzFlW18weDFlNzk4NygweDIxMildPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyMTIpXSxfMHgzNWIzMWVbJ3RvdGFsU3RyTGVuZ3RoJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOSldLF8weDM1YjMxZVsnYXV0b0V4cGFuZExpbWl0J109XzB4NDY1ZGM3W18weDFlNzk4NygweDI1MCldLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYTgpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MWE4KV0sXzB4MzViMzFlWydzb3J0UHJvcHMnXT0hMHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxYjEpXT0hXzB4MmM3M2RlLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMjEpXT0weDEsXzB4MzViMzFlW18weDFlNzk4NygweDFlYyldPTB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWQ0KV09XzB4MWU3OTg3KDB4MTc0KSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjBlKV09J3Jvb3RfZXhwJyxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWJhKV09ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWYzKV09W10sXzB4MzViMzFlWydhdXRvRXhwYW5kUHJvcGVydHlDb3VudCddPTB4MCxfMHgzNWIzMWVbJ3Jlc29sdmVHZXR0ZXJzJ109ITB4MCxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjYzKV09MHgwLF8weDM1YjMxZVsnbm9kZSddPXsnY3VycmVudCc6dm9pZCAweDAsJ3BhcmVudCc6dm9pZCAweDAsJ2luZGV4JzoweDB9LF8weDM1YjMxZTt9O2Zvcih2YXIgXzB4NTQ0ZTFlPTB4MDtfMHg1NDRlMWU8XzB4NTE0OGE0WydsZW5ndGgnXTtfMHg1NDRlMWUrKylfMHgxNzRkMWFbXzB4MzU2N2NjKDB4MTllKV0oXzB4M2E0NTY0W18weDM1NjdjYygweDFjZildKHsndGltZU5vZGUnOl8weDIzOTAwYj09PV8weDM1NjdjYygweDIzNil8fHZvaWQgMHgwfSxfMHg1MTQ4YTRbXzB4NTQ0ZTFlXSxfMHgzNjlmYjAoXzB4NWEyZGI2KSx7fSkpO2lmKF8weDIzOTAwYj09PV8weDM1NjdjYygweDFhYil8fF8weDIzOTAwYj09PV8weDM1NjdjYygweDIxYikpe2xldCBfMHgxNmJjNTA9RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV07dHJ5e0Vycm9yW18weDM1NjdjYygweDE4OSldPTB4MS8weDAsXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3N0YWNrTm9kZSc6ITB4MH0sbmV3IEVycm9yKClbXzB4MzU2N2NjKDB4MjAxKV0sXzB4MzY5ZmIwKF8weDVhMmRiNikseydzdHJMZW5ndGgnOjB4MS8weDB9KSk7fWZpbmFsbHl7RXJyb3JbXzB4MzU2N2NjKDB4MTg5KV09XzB4MTZiYzUwO319cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpfMHgxNzRkMWEsJ2lkJzpfMHg1OThhNGEsJ2NvbnRleHQnOl8weDRmYjk0MH1dfTt9Y2F0Y2goXzB4NjU3ZmIwKXtyZXR1cm57J21ldGhvZCc6XzB4MzU2N2NjKDB4MjUxKSwndmVyc2lvbic6XzB4MzVmYzYzLCdhcmdzJzpbeyd0cyc6XzB4MWI1NGFjLCdzZXNzaW9uJzpfMHgyNTRiZDQsJ2FyZ3MnOlt7J3R5cGUnOl8weDM1NjdjYygweDFjMiksJ2Vycm9yJzpfMHg2NTdmYjAmJl8weDY1N2ZiMFtfMHgzNTY3Y2MoMHgyMzQpXX1dLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWZpbmFsbHl7dHJ5e2lmKF8weDJkYmUwMSYmXzB4NTRlOWZlKXtsZXQgXzB4NTY5ZTJhPV8weDU5MTU4YigpO18weDJkYmUwMVtfMHgzNTY3Y2MoMHgxZmEpXSsrLF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXSs9XzB4MzdmNTYxKF8weDU0ZTlmZSxfMHg1NjllMmEpLF8weDJkYmUwMVsndHMnXT1fMHg1NjllMmEsXzB4NGUxNzFiWydoaXRzJ11bXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RzJ109XzB4NTY5ZTJhLChfMHgyZGJlMDFbJ2NvdW50J10+MHgzMnx8XzB4MmRiZTAxW18weDM1NjdjYygweDIzNildPjB4NjQpJiYoXzB4MmRiZTAxW18weDM1NjdjYygweDI0NildPSEweDApLChfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MWZhKV0+MHgzZTh8fF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsndGltZSddPjB4MTJjKSYmKF8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsncmVkdWNlTGltaXRzJ109ITB4MCk7fX1jYXRjaHt9fX1yZXR1cm4gXzB4MjgxNjI0O30oKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MjZhNjk5LF8weDU2YWQ1MixfMHhjZjEzMjUsXzB4NDVkY2NjLF8weDE1Y2M2YixfMHg0YjUwN2YpPT57dmFyIF8weDEyOGMzNj1fMHhiMzg0Nzk7aWYoXzB4MjIzZDM3WydfY29uc29sZV9uaW5qYSddKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07aWYoIUgoXzB4MjIzZDM3LF8weGNmMTMyNSxfMHg1ZjJjNmQpKXJldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooKT0+e30sJ2NvbnNvbGVUcmFjZSc6KCk9Pnt9LCdjb25zb2xlVGltZSc6KCk9Pnt9LCdjb25zb2xlVGltZUVuZCc6KCk9Pnt9LCdhdXRvTG9nJzooKT0+e30sJ2F1dG9Mb2dNYW55JzooKT0+e30sJ2F1dG9UcmFjZU1hbnknOigpPT57fSwnY292ZXJhZ2UnOigpPT57fSwnYXV0b1RyYWNlJzooKT0+e30sJ2F1dG9UaW1lJzooKT0+e30sJ2F1dG9UaW1lRW5kJzooKT0+e319LF8weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXTtsZXQgXzB4NGM4ODk0PUIoXzB4MjIzZDM3KSxfMHg0ZmNlNzA9XzB4NGM4ODk0W18weDEyOGMzNigweDFlOCldLF8weGYwNGUzZj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MTdkKV0sXzB4MzRkYmQyPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZWYpXSxfMHg1NTMxZTA9eydoaXRzJzp7fSwndHMnOnt9fSxfMHg1OGYxY2Q9WChfMHgyMjNkMzcsXzB4NDVkY2NjLF8weDU1MzFlMCxfMHgyNmE2OTkpLF8weDJiOGIwZj1fMHgzZmFjNzg9PntfMHg1NTMxZTBbJ3RzJ11bXzB4M2ZhYzc4XT1fMHhmMDRlM2YoKTt9LF8weDk1YTAyZj0oXzB4MTQzNWI5LF8weDM0ZmY5Mik9PntsZXQgXzB4MTI0ZDJlPV8weDU1MzFlMFsndHMnXVtfMHgzNGZmOTJdO2lmKGRlbGV0ZSBfMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXSxfMHgxMjRkMmUpe2xldCBfMHg1OWIwNDU9XzB4NGZjZTcwKF8weDEyNGQyZSxfMHhmMDRlM2YoKSk7XzB4NTA2MzlmKF8weDU4ZjFjZCgndGltZScsXzB4MTQzNWI5LF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4NTliMDQ1XSxfMHgzNGZmOTIpKTt9fSxfMHgzYzJmMjM9XzB4MTNiZjdiPT57dmFyIF8weDQ1N2Y2Yj1fMHgxMjhjMzYsXzB4MzRlYjdiO3JldHVybiBfMHg1ZjJjNmQ9PT1fMHg0NTdmNmIoMHgxZGUpJiZfMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0mJigoXzB4MzRlYjdiPV8weDEzYmY3Yj09bnVsbD92b2lkIDB4MDpfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDM0ZWI3YltfMHg0NTdmNmIoMHgyNDEpXSkmJihfMHgxM2JmN2JbXzB4NDU3ZjZiKDB4MTkzKV1bMHgwXVtfMHg0NTdmNmIoMHgxZGQpXT1fMHgyMjNkMzdbXzB4NDU3ZjZiKDB4MWRkKV0pLF8weDEzYmY3Yjt9O18weDIyM2QzN1tfMHgxMjhjMzYoMHgxY2QpXT17J2NvbnNvbGVMb2cnOihfMHg1Y2FmZDgsXzB4NDg3Y2Y2KT0+e3ZhciBfMHg1NTE4OWM9XzB4MTI4YzM2O18weDIyM2QzN1snY29uc29sZSddW18weDU1MTg5YygweDI1MSldW18weDU1MTg5YygweDIxNildIT09XzB4NTUxODljKDB4MTk0KSYmXzB4NTA2MzlmKF8weDU4ZjFjZChfMHg1NTE4OWMoMHgyNTEpLF8weDVjYWZkOCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NDg3Y2Y2KSk7fSwnY29uc29sZVRyYWNlJzooXzB4NWU2NDczLF8weDNkMzVjOCk9Pnt2YXIgXzB4NTYxOTA2PV8weDEyOGMzNixfMHgxMzkxZWIsXzB4MmJiMDY1O18weDIyM2QzN1tfMHg1NjE5MDYoMHgyNWUpXVsnbG9nJ11bJ25hbWUnXSE9PSdkaXNhYmxlZFRyYWNlJyYmKChfMHgyYmIwNjU9KF8weDEzOTFlYj1fMHgyMjNkMzdbXzB4NTYxOTA2KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDEzOTFlYltfMHg1NjE5MDYoMHgyNGQpXSkhPW51bGwmJl8weDJiYjA2NVtfMHg1NjE5MDYoMHgxYzEpXSYmKF8weDIyM2QzN1tfMHg1NjE5MDYoMHgxOTIpXT0hMHgwKSxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZCgndHJhY2UnLF8weDVlNjQ3MyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4M2QzNWM4KSkpKTt9LCdjb25zb2xlRXJyb3InOihfMHg0OGYyMzQsXzB4NTBhY2I1KT0+e3ZhciBfMHgzYWM5MzA9XzB4MTI4YzM2O18weDIyM2QzN1tfMHgzYWM5MzAoMHgxOTIpXT0hMHgwLF8weDUwNjM5ZihfMHgzYzJmMjMoXzB4NThmMWNkKF8weDNhYzkzMCgweDIxYiksXzB4NDhmMjM0LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg1MGFjYjUpKSk7fSwnY29uc29sZVRpbWUnOl8weDNiNDUyOD0+e18weDJiOGIwZihfMHgzYjQ1MjgpO30sJ2NvbnNvbGVUaW1lRW5kJzooXzB4MWQyYTFhLF8weDhmZWNkNyk9PntfMHg5NWEwMmYoXzB4OGZlY2Q3LF8weDFkMmExYSk7fSwnYXV0b0xvZyc6KF8weDIwMjY4MyxfMHgyY2ZlNWIpPT57XzB4NTA2MzlmKF8weDU4ZjFjZCgnbG9nJyxfMHgyY2ZlNWIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgyMDI2ODNdKSk7fSwnYXV0b0xvZ01hbnknOihfMHg0YjZjNDcsXzB4NDUwYjY2KT0+e3ZhciBfMHg0NzM4MDI9XzB4MTI4YzM2O18weDUwNjM5ZihfMHg1OGYxY2QoXzB4NDczODAyKDB4MjUxKSxfMHg0YjZjNDcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ1MGI2NikpO30sJ2F1dG9UcmFjZSc6KF8weDMyYTc2LF8weDE0YmMxMik9Pnt2YXIgXzB4NTdjZjhhPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHg1N2NmOGEoMHgxYWIpLF8weDE0YmMxMixfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDMyYTc2XSkpKTt9LCdhdXRvVHJhY2VNYW55JzooXzB4ZTM2MGY3LF8weDMzYzBlMik9Pnt2YXIgXzB4M2RiMDBlPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzZGIwMGUoMHgxYWIpLF8weGUzNjBmNyxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4MzNjMGUyKSkpO30sJ2F1dG9UaW1lJzooXzB4ZDIzNzQ5LF8weDFlZjJkOCxfMHg0MTE2ZGIpPT57XzB4MmI4YjBmKF8weDQxMTZkYik7fSwnYXV0b1RpbWVFbmQnOihfMHgxNGQ1OTIsXzB4NTllZmU3LF8weDExZjdhYyk9PntfMHg5NWEwMmYoXzB4NTllZmU3LF8weDExZjdhYyk7fSwnY292ZXJhZ2UnOl8weDIwNzQyYT0+e3ZhciBfMHg2NDQ4OTc9XzB4MTI4YzM2O18weDUwNjM5Zih7J21ldGhvZCc6XzB4NjQ0ODk3KDB4MWIyKSwndmVyc2lvbic6XzB4MjZhNjk5LCdhcmdzJzpbeydpZCc6XzB4MjA3NDJhfV19KTt9fTtsZXQgXzB4NTA2MzlmPXEoXzB4MjIzZDM3LF8weDViZWY3ZixfMHgyOTM0NTUsXzB4MTk2OTAzLF8weDVmMmM2ZCxfMHgxNWNjNmIsXzB4NGI1MDdmKSxfMHg1MjkwMzQ9XzB4MjIzZDM3W18weDEyOGMzNigweDI2MSldO3JldHVybiBfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07fSkoZ2xvYmFsVGhpcyxfMHhiMzg0NzkoMHgxOGUpLF8weGIzODQ3OSgweDFkZiksXzB4YjM4NDc5KDB4MjViKSxfMHhiMzg0NzkoMHgxZWUpLF8weGIzODQ3OSgweDIzZCksXzB4YjM4NDc5KDB4MjRhKSxfMHhiMzg0NzkoMHgxOTcpLF8weGIzODQ3OSgweDFjZSksJycsJzEnKTtcXFwiKTt9Y2F0Y2goZSl7fX07LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb19vbyhpOnN0cmluZywuLi52OmFueVtdKXt0cnl7b29fY20oKS5jb25zb2xlTG9nKGksIHYpO31jYXRjaChlKXt9IHJldHVybiB2fTtvb19vbzsvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL2Z1bmN0aW9uIG9vX3RyKGk6c3RyaW5nLC4uLnY6YW55W10pe3RyeXtvb19jbSgpLmNvbnNvbGVUcmFjZShpLCB2KTt9Y2F0Y2goZSl7fSByZXR1cm4gdn07b29fdHI7LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb190eChpOnN0cmluZywuLi52OmFueVtdKXt0cnl7b29fY20oKS5jb25zb2xlRXJyb3IoaSwgdik7fWNhdGNoKGUpe30gcmV0dXJuIHZ9O29vX3R4Oy8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovZnVuY3Rpb24gb29fdHModj86c3RyaW5nKTpzdHJpbmd7dHJ5e29vX2NtKCkuY29uc29sZVRpbWUodik7fWNhdGNoKGUpe30gcmV0dXJuIHYgYXMgc3RyaW5nO307b29fdHM7LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9mdW5jdGlvbiBvb190ZSh2OnN0cmluZ3x1bmRlZmluZWQsIGk6c3RyaW5nKTpzdHJpbmd7dHJ5e29vX2NtKCkuY29uc29sZVRpbWVFbmQodiwgaSk7fWNhdGNoKGUpe30gcmV0dXJuIHYgYXMgc3RyaW5nO307b29fdGU7Lyplc2xpbnQgdW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvZGlzYWJsZS1lbmFibGUtcGFpcjosZXNsaW50LWNvbW1lbnRzL25vLXVubGltaXRlZC1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tYWdncmVnYXRpbmctZW5hYmxlOixlc2xpbnQtY29tbWVudHMvbm8tZHVwbGljYXRlLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLXVudXNlZC1lbmFibGU6LCovPC9zY3JpcHQ+XFxuXFxuPHN0eWxlIHNjb3BlZD5cXG4udi1lbnRlci1hY3RpdmUsXFxuLnYtbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlO1xcbn1cXG5cXG4udi1lbnRlci1mcm9tLFxcbi52LWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQGtleWZyYW1lcyBzcGlubmVyLTVkODRhMWQ4IHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF06OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItNWQ4NGExZDg7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF0ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFxUUE7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFFQTtFQUNFLGdEQUF1QztFQUN2Qyw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxxQ0FBcUM7RUFDckMsV0FBVztFQUNYLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSBtYi0xMFxcXCI+XFxuICAgIDx0YWJsZT5cXG4gICAgICA8dGhlYWQ+XFxuICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInNuXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3Bhbj5TLk48L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwidGl0bGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuPkFjdGl2aXR5IFRpdGxlPC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hpbmctcHJvZ3Jlc3NcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItaGVhZGVyXFxcIj5cXG4gICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmhyZWY9XFxcInNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcygpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCIgOmNsYXNzPVxcXCJzb3J0aW5nRGlyZWN0aW9uKClcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSA6aWNvbj1cXFwiYCR7c29ydGluZ0RpcmVjdGlvbigpfS1hcnJvd2BcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiXFxcIj5QdWJsaXNoaW5nIFByb2dyZXNzPC9zcGFuPlxcbiAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJkYXRlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpocmVmPVxcXCJzb3J0QnlEYXRlVXJsKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIiA6Y2xhc3M9XFxcInNvcnRpbmdEaXJlY3Rpb24oKVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIDppY29uPVxcXCJgJHtzb3J0aW5nRGlyZWN0aW9uKCl9LWFycm93YFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuPlVwZGF0ZWQgT248L3NwYW4+XFxuICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInN0YXR1c1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImhpZGRlblxcXCI+U3RhdHVzPC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJoaWRkZW5cXFwiPlB1Ymxpc2g8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdEFsbChkYXRhLmRhdGEsIHNlbGVjdEFsbFZhbHVlKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiY2hlY2tib3hcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgPC90cj5cXG4gICAgICA8L3RoZWFkPlxcbiAgICAgIDx0Ym9keSB2LWlmPVxcXCJkYXRhLnRvdGFsID4gMFxcXCI+XFxuICAgICAgICA8dHJcXG4gICAgICAgICAgdi1mb3I9XFxcIihkYXR1bSwgaW5kZXgpIGluIGRhdGEuZGF0YVxcXCJcXG4gICAgICAgICAgOmtleT1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICdhbHJlYWR5LXB1Ymxpc2hlZCc6XFxuICAgICAgICAgICAgICBkYXR1bVsnbGlua2VkX3RvX2lhdGknXSAmJiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcsXFxuICAgICAgICAgIH1cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwicmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgIDxQcmV2aW91c2x5UHVibGlzaGVkXFxuICAgICAgICAgICAgICB2LWlmPVxcXCJkYXR1bVsnbGlua2VkX3RvX2lhdGknXSAmJiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCdcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGlubGluZS1ibG9jayB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIHt7IChjdXJyZW50UGFnZSAtIDEpICogMTAgKyBOdW1iZXIoaW5kZXgpICsgMSB9fVxcbiAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1zdGFydCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZSB3LWZ1bGxcXFwiPlxcbiAgICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICAgIDpocmVmPVxcXCInL2FjdGl2aXR5LycgKyBkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZWxsaXBzaXMgdy1mdWxsICFtYXgtdy1mdWxsIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgPnt7XFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAmJlxcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gIT09ICcnXFxuICAgICAgICAgICAgICAgICAgICAgID8gZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ11cXG4gICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnXFxuICAgICAgICAgICAgICAgICAgfX08L2FcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCdcXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1wYXJlbnRcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLXdyYXBwZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItY29udGFpbmVyIGJnLXNwcmluZy0xMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInByb2dyZXNzLWJhci1maWxsIGJnLXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cXFwieyB3aWR0aDogZGF0dW1bJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnXSArICclJyB9XFxcIlxcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1udW1iZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID57eyBkYXR1bVsnY29tcGxldGVfcGVyY2VudGFnZSddIH19JTwvc3BhblxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIHt7IGZvcm1hdERhdGUoZGF0dW0udXBkYXRlZF9hdCkgfX1cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICAgJ3RleHQtbi00MCc6IGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgICAgICAgJ3RleHQtc3ByaW5nLTUwJzogZGF0dW1bJ3N0YXR1cyddID09PSAncHVibGlzaGVkJyxcXG4gICAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1yLTEgdGV4dC1iYXNlXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcgPyAnZG9jdW1lbnQtd3JpdGUnIDogJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj57eyBkYXR1bVsnc3RhdHVzJ10gfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8VW5QdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtLmxpbmtlZF90b19pYXRpXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG5cXG4gICAgICAgICAgICAgIDxQdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtWydzdGF0dXMnXSAhPT0gJ3B1Ymxpc2hlZCdcXFwiXFxuICAgICAgICAgICAgICAgIDpsaW5rZWQtdG8taWF0aT1cXFwiZGF0dW0ubGlua2VkX3RvX2lhdGlcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcImRhdHVtLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOmNvcmUtY29tcGxldGVkPVxcXCJkYXR1bS5jb3JlQ29tcGxldGVkXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICA6cHVibGlzaD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICAgIDpkZXByZWNhdGlvbi1zdGF0dXMtbWFwPVxcXCJkYXR1bVsnZGVwcmVjYXRpb25fc3RhdHVzX21hcCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRoXFxuICAgICAgICAgICAgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICBTZWxlY3QgXFxcInt7IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddIH19XFxcIlxcbiAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwic3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImRhdHVtLmlkXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGJvZHk+XFxuICAgICAgPHRib2R5IHYtZWxzZT5cXG4gICAgICAgIDx0ZCB2LWlmPVxcXCJsb2FkZXJcXFwiIGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIDxkaXYgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInNwaW5cXFwiPjwvZGl2PlxcbiAgICAgICAgPC90ZD5cXG4gICAgICAgIDx0ZCB2LWVsc2UgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5BY3Rpdml0aWVzIG5vdCBmb3VuZDwvdGQ+XFxuICAgICAgPC90Ym9keT5cXG4gICAgPC90YWJsZT5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMgfSBmcm9tICd2dWUnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgeyB1c2VUb2dnbGUgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xcblxcbi8vIFZ1ZXggU3RvcmVcXG5pbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gJ1N0b3JlL2FjdGl2aXRpZXMvaW5kZXgnO1xcblxcbmltcG9ydCBQcmV2aW91c2x5UHVibGlzaGVkIGZyb20gJ0NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlJztcXG5pbXBvcnQgUHVibGlzaCBmcm9tICdDb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWUnO1xcbmltcG9ydCBVblB1Ymxpc2ggZnJvbSAnQ29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWUnO1xcbi8vIGltcG9ydCBTaGltbWVyIGZyb20gXFxcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXFxcIjtcXG5cXG5jb25zdCBbc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZV0gPSB1c2VUb2dnbGUoKTtcXG5cXG5kZWZpbmVQcm9wcyh7XFxuICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIGxvYWRlcjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UgfSxcXG4gIGN1cnJlbnRQYWdlOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUsIGRlZmF1bHQ6IDEgfSxcXG59KTtcXG5cXG5jb25zdCBzdG9yZSA9IHVzZVN0b3JlKCk7XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZyb21Ob3coKTtcXG59XFxuXFxuZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsKFxcbiAgYWN0aXZpdGllczogeyBbeDogc3RyaW5nXTogeyBpZDogbnVtYmVyIH0gfSxcXG4gIHNlbGVjdEFsbFZhbHVlOiBib29sZWFuXFxuKSB7XFxuICBpZiAoIXNlbGVjdEFsbFZhbHVlKSB7XFxuICAgIGxldCBpZHMgPSBbXSBhcyBudW1iZXJbXTtcXG4gICAgZm9yIChjb25zdCBkYXR1bSBpbiBhY3Rpdml0aWVzKSB7XFxuICAgICAgaWRzLnB1c2goYWN0aXZpdGllc1tkYXR1bV0uaWQpO1xcbiAgICB9XFxuICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xcbiAgfSBlbHNlIHtcXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcXG4gIH1cXG4gIHNlbGVjdEFsbFRvZ2dsZSgpO1xcbn1cXG5cXG4vL1NvcnRpbmcgYnkgdXBkYXRlX2F0XFxubGV0IGRpcmVjdGlvbiA9ICdhc2MnO1xcblxcbmNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSAoKSA9PiB7XFxuICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xcbn07XFxuXFxuY29uc3Qgc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzID0gKCkgPT4ge1xcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG4gIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gIGxldCBxdWVyeSA9IHBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gIGxldCBkaXJlY3Rpb24gPSBwYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuXFxuICBwYXJhbXMuc2V0KCdxJywgcXVlcnkpO1xcbiAgcGFyYW1zLnNldCgnb3JkZXJCeScsICdjb21wbGV0ZV9wZXJjZW50YWdlJyk7XFxuICBwYXJhbXMuc2V0KCdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xcblxcbiAgcmV0dXJuIGA/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xcbn07XFxuXFxuY29uc3Qgc29ydEJ5RGF0ZVVybCA9ICgpID0+IHtcXG4gIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XFxuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICBsZXQgcXVlcnkgPSBwYXJhbXMuZ2V0KCdxJykgPz8gJyc7XFxuICBsZXQgZGlyZWN0aW9uID0gcGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcblxcbiAgcGFyYW1zLnNldCgncScsIHF1ZXJ5KTtcXG4gIHBhcmFtcy5zZXQoJ29yZGVyQnknLCAndXBkYXRlZF9hdCcpO1xcbiAgcGFyYW1zLnNldCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcXG5cXG4gIHJldHVybiBgPyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuQGtleWZyYW1lcyBzcGlubmVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuLnNwaW46OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUE2WEE7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUtFOzs7RUFBQSxXQUFzRDtFQUF0RCxnQkFBc0Q7RUFBdEQsd0JBQXNEO0VBQXRELHdEQUFzRDtFQUF0RCwwQkFBQTtBQUFzRDtBQUd4RDtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFvQjtFQUFwQiwrREFBb0I7RUFDcEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUVWLGtCQUFjO0VBQWQseURBQWM7QUFDaEI7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFrQjtFQUFsQiw2REFBa0I7RUFDbEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyAhaW5saW5lLWJsb2NrIHctWzQwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIGZvbnQtbm9ybWFsXFxcIlxcbiAgICAgICAgPnt7XFxuICAgICAgICAgIGFjdGl2aXR5WydkYXRhJ11bJ3RpdGxlJ11bMF1bJ25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgPyBhY3Rpdml0eVsnZGF0YSddWyd0aXRsZSddWzBdWyduYXJyYXRpdmUnXVxcbiAgICAgICAgICAgIDogJ01pc3NpbmcnXFxuICAgICAgICB9fTwvc3BhblxcbiAgICAgID5cXG5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5sZW5ndGggPiAwXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1iLTQgbWwtNCBpbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZUVycm9yXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgPHNwYW4+IFNob3cge3sgY291bnRFcnJvcnMoKSB9fSBJc3N1ZXM8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIm1sLTEgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IGFjdGl2ZSwgJyc6ICFhY3RpdmUgfVxcXCJcXG4gICAgICAgIC8+IDwvc3BhblxcbiAgICA+PC9zcGFuPlxcblxcbiAgICA8ZGl2XFxuICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJ1cGxvYWQtZXJyb3ItY29udGVudCBoLVthdXRvXSAhbWF4LWgtW2F1dG9dIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICA6Y2xhc3M9XFxcInsgY2xvc2VkOiAhYWN0aXZlIH1cXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJweS00XFxcIj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNyaXRpY2FsLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiY3JpdGljYWxBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBwLTMgcGItMC41XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgICAgIDxzcGFuPiB7eyBlcnJvckxlbmd0aCgnY3JpdGljYWwnKSB9fSBDcml0aWNhbCBlcnJvcnM8L3NwYW4+XFxuICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0NyaXRpY2FsLCAnJzogIXNob3dDcml0aWNhbCB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgICAoVGhlIGFjdGl2aXR5IGNvbnRhaW5zIGNyaXRpY2FsIGVycm9ycyBhbmQgdGh1cyBjYW5ub3QgYmUgdXBsb2FkZWRcXG4gICAgICAgICAgICB0byB0aGUgc3lzdGVtLilcXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnY3JpdGljYWwnXVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInAtNFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdlcnJvcicpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImVycm9yLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZXJyb3JBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBiZy1yb3NlIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgICAgPHNwYW4+e3sgZXJyb3JMZW5ndGgoJ2Vycm9yJykgfX0gRXJyb3JzPC9zcGFuPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgICAgKFRoZSBhY3Rpdml0eSB3aXRoIHRoZSBlcnJvcnMgd2lsbCBiZSB1cGxvYWRlZCB0byBvdXIgc3lzdGVtLCBidXRcXG4gICAgICAgICAgICB0aGUgZmllbGQgY29udGFpbmluZyB0aGUgZXJyb3Igd2lsbCBiZSByZW1vdmVkLiBZb3Ugd2lsbCBuZWVkIHRvXFxuICAgICAgICAgICAgcmVmaWxsIHRoZXNlIGZpZWxkcyB3aXRoIGNvcnJlY3QgZGF0YSBvbmNlIHRoZSBhY3Rpdml0eSBpcyB1cGxvYWRlZFxcbiAgICAgICAgICAgIHRvIG91ciBzeXN0ZW0uKVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1wcmltYXJ5LWJsYWNrIGJnLXJvc2UgcC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ3dhcm5pbmcnKSAhPT0gLTFcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJ3YXJuaW5nLWNvbnRhaW5lciBteS0yIGN1cnNvci1wb2ludGVyIGJvcmRlci1ub25lIGJnLWVnZ3NoZWxsXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwid2FybmluZ0FjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiYWxlcnRcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNhbWVsLTQwXFxcIiAvPjxzcGFuPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19IFdhcm5pbmdzPC9zcGFuXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd1dhcm5pbmcsICcnOiAhc2hvd1dhcm5pbmcgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscCBiZy1lZ2dzaGVsbFxcXCI+XFxuICAgICAgICAgICAgKFRoZSBmaWVsZCB3aXRoIHdhcm5pbmdzIHdpbGwgYmUgdXBsb2FkZWQgdG8gb3VyIHN5c3RlbS4gVGhlc2VcXG4gICAgICAgICAgICBmaWVsZHMgY29udGFpbiBkYXRhIHRoYXQgYXJlIGFnYWluc3QgdGhlIHJ1bGVzIG9mIHRoZSBJQVRJIFZhbGlkYXRvclxcbiAgICAgICAgICAgIGFuZCB3aWxsIGNhdXNlIHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHB1Ymxpc2hpbmcuKVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnd2FybmluZyddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYmctZWdnc2hlbGwgcC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDwhLS0gPGRpdiB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVxcXCIgOmtleT1cXFwiaVxcXCI+XFxuICAgICAgICA8dWw+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwiKGVyciwga2V5LCBqKSBpbiBlbGVfZXJyXFxcIiA6a2V5PVxcXCJqXFxcIj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAge3sga2V5LnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LnZhbHVlcyhlcnIpXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAge3sgaXRlbSB9fVxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgPC9kaXY+IC0tPlxcbiAgICA8L2Rpdj5cXG4gIDwvdGQ+XFxuXFxuICA8dGQ+XFxuICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZFxcXCI+e3tcXG4gICAgICAhYWN0aXZpdHlbJ2V4aXN0ZW5jZSddID8gJ05ldycgOiAnRXhpc3RpbmcnXFxuICAgIH19PC9zcGFuPlxcbiAgPC90ZD5cXG5cXG4gIDx0ZCBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIiBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIj5cXG4gICAgPGxhYmVsIGNsYXNzPVxcXCJzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+IFNlbGVjdCA8L2xhYmVsPlxcbiAgICA8bGFiZWxcXG4gICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJjaGVja2JveFxcXCJcXG4gICAgPlxcbiAgICAgIDxpbnB1dFxcbiAgICAgICAgdi1tb2RlbD1cXFwiYWN0aXZpdGllc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgOnZhbHVlPVxcXCJpbmRleFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwic2VsZWN0RWxlbWVudChpbmRleClcXFwiXFxuICAgICAgLz5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICA8L2xhYmVsPlxcbiAgICA8bGFiZWwgdi1lbHNlIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgPC9sYWJlbD5cXG4gIDwvdGQ+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgZGVmaW5lRW1pdHMsIHJlZiwgd2F0Y2gsIHJlYWN0aXZlIH0gZnJvbSAndnVlJztcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIGFjdGl2aXR5OiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaW5kZXg6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxcbiAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3NlbGVjdEVsZW1lbnQnXSk7XFxuXFxuY29uc3QgYWN0aXZlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93Q3JpdGljYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd1dhcm5pbmcgPSByZWYoZmFsc2UpO1xcbmxldCBhY3Rpdml0aWVzID0gcmVhY3RpdmUoW10pO1xcbmNvbnN0IGNyaXRpY2FsVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlcnJvclRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgd2FybmluZ1RvZ2dsZSA9IHJlZihmYWxzZSk7XFxuXFxuZnVuY3Rpb24gdG9nZ2xlRXJyb3IoKSB7XFxuICBhY3RpdmUudmFsdWUgPSAhYWN0aXZlLnZhbHVlO1xcbn1cXG5cXG5jb25zdCBzZWxlY3RFbGVtZW50ID0gKGluZGV4KSA9PiB7XFxuICBlbWl0KCdzZWxlY3RFbGVtZW50JywgaW5kZXgpO1xcbn07XFxuXFxuY29uc3QgY291bnRFcnJvcnMgPSAoKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgZm9yIChjb25zdCB0eXBlIGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXSkge1xcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuXFxuY29uc3QgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcblxcbiAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcblxcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgNjAwKTtcXG5cXG4gICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICAgIH1cXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmIChlcnJvclRvZ2dsZS52YWx1ZSkge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgICAgfSwgMTAwKTtcXG4gICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG5cXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICAgIH0sIDYwMCk7XFxuXFxuICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgICB9XFxuICB9XFxufTtcXG5jb25zdCBlcnJvckxlbmd0aCA9IChjdXJyZW50RXJyb3IpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICAvLyBpZiAoT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHkpLmluZGV4T2YoJ2Vycm9ycycpICE9PSAtMSkge1xcbiAgT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkubWFwKChpdGVtKSA9PiB7XFxuICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGl0ZW0gYXMgb2JqZWN0KS5sZW5ndGg7XFxuICB9KTtcXG4gIC8vIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dXYXJuaW5nLnZhbHVlID0gIXNob3dXYXJuaW5nLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuICBpZiAod2FybmluZ1RvZ2dsZS52YWx1ZSkge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgICAgfSwgMTAwKTtcXG4gICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgMTAwKTtcXG5cXG4gICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gICAgfVxcbiAgfVxcbn07XFxud2F0Y2goXFxuICAoKSA9PiBwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXMsXFxuICAoKSA9PiB7XFxuICAgIGxldCBzZWxlY3RlZERhdGEgPSBKU09OLnBhcnNlKHByb3BzLnNlbGVjdGVkQWN0aXZpdGllcyk7XFxuICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoKSB7XFxuICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCBzZWxlY3RlZERhdGEpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgIGFjdGl2aXRpZXMubGVuZ3RoID0gMDtcXG4gICAgfVxcbiAgfVxcbik7XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG4uY3JpdGljYWwtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZmY7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5cXG4uY3JpdGljYWwtY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXIsXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lciB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5cXG4uZXJyb3ItY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIEBhcHBseSBiZy1jcmltc29uLTQwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG5cXG4gIEBhcHBseSBiZy1yb3NlO1xcbn1cXG5cXG4ud2FybmluZy1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNhbWVsLTQwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1oZWxwIHtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIHBhZGRpbmctbGVmdDogMzBweDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lciBwIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ueGxzLWVycm9yW2RhdGEtdi01ZjUwMDhiNF0ge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNmZmYxZjAgNjBweCwgI2ZmZmZmZiAwJSk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUF5ZkE7RUFDRSwyREFBMkQ7QUFDN0RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdiBjbGFzcz1cXFwicHgtMTAgcHktOFxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgIEFkZC9VcGRhdGUgQWxsIDxzcGFuIGNsYXNzPVxcXCJjYXBpdGFsaXplXFxcIj57eyBzdGF0dXMudGVtcGxhdGUgfX08L3NwYW4+XFxuICAgICAgPC9oNj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWVuZCBnYXAtM1xcXCI+XFxuICAgICAgICA8VG9hc3RcXG4gICAgICAgICAgdi1pZj1cXFwidG9hc3RWaXNpYmlsaXR5XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwidG9hc3QgLWJvdHRvbS0yNFxcXCJcXG4gICAgICAgICAgOm1lc3NhZ2U9XFxcInRvYXN0TWVzc2FnZVxcXCJcXG4gICAgICAgICAgOnR5cGU9XFxcInRvYXN0VHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIGNsYXNzPVxcXCJyb3VuZGVkIGJnLW4tMCBweC00IHB5LTMgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsIHNoYWRvdy1tZFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJjYW5jZWxJbXBvcnRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPjxzdmctdnVlIGNsYXNzPVxcXCJwdC0xLjUgdGV4dC0yeGxcXFwiIGljb249XFxcImNyb3NzXFxcIiAvPjwvc3Bhbj5cXG4gICAgICAgICAgPHNwYW4+Y2FuY2VsIHRoaXMgaW1wb3J0PC9zcGFuPlxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIDpjbGFzcz1cXFwic2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCA9PT0gMCAmJiAnIGN1cnNvci1ub3QtYWxsb3dlZCdcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJyb3VuZGVkIGJnLWJsdWVjb3JhbCBweC00IHB5LTMgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi0wXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImFkZEFjdGl2aXRpZXNcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJtci0yIHRleHQtc21cXFwiIGljb249XFxcInVwLWFycm93LW91dGxpbmVcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtci0yXFxcIj5hZGQgPC9zcGFuPiAoe3sgc2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCB9fSAvXFxuICAgICAgICAgIHt7IGFjdGl2aXRpZXNMZW5ndGggPz8gMCB9fSlcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtNFxcXCI+XFxuICAgICAgPHAgY2xhc3M9XFxcIm10LTQgdGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgU2VsZWN0IGZyb20gdGhlIGxpc3QgYmVsb3cgdG8gYWRkIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSB0byB0aGVcXG4gICAgICAgIHB1Ymxpc2hlci4gTWFrZSB5b3VyIHNlbGVjdGlvbiBhbmQgZm9sbG93IHRoZSBvbi1zY3JlZW4gcHJvbXB0cyB0b1xcbiAgICAgICAgc3VjY2Vzc2Z1bGx5IGFkZC91cGRhdGUgeW91ciBzZWxlY3RlZCB7eyBzdGF0dXMudGVtcGxhdGUgfX1cXG4gICAgICAgIDxiPlxcbiAgICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHJlLXVwbG9hZCBhbnkgdW5zZWxlY3RlZFxcbiAgICAgICAgICB7eyBzdGF0dXMudGVtcGxhdGUgfX0sIGFuZCBpZiB0aGUgaW1wb3J0IGlzIGNhbmNlbGVkLCB5b3Ugd2lsbCBuZWVkIHRvXFxuICAgICAgICAgIHVwbG9hZCB0aGVtIGFnYWluLjwvYlxcbiAgICAgICAgPlxcbiAgICAgIDwvcD5cXG4gICAgICA8IS0tIDxkaXYgdi1pZj1cXFwiZ2xvYmFsRXJyb3JcXFwiIGNsYXNzPVxcXCJyZWxhdGl2ZSBtdC00XFxcIj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiIXNob3dHTG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggdy1bMjUwcHhdIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLWwtbGcgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIGJnLWNyaW1zb24tMTAgcC00XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1yLTEgLW10LTEuNSB0ZXh0LTJ4bCB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJ3YXJuaW5nLWZpbGxcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPlxcbiAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnMgZm91bmRcXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQteHMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0dMb2JhbEVycm9yID0gdHJ1ZVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHNob3dcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSAtdG9wLTQgcmlnaHQtMCB6LVsxMDBdIHctWzQ1MHB4XSByb3VuZGVkLWwtbGcgYmctd2hpdGUgcC00XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtYi00IGZsZXgganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnMgZm91bmRcXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0dMb2JhbEVycm9yID0gZmFsc2VcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgaGlkZVxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiYm9yZGVyLWwgYm9yZGVyLWNyaW1zb24tNDAgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm15LTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXItMSAtbXQtMS41IHRleHQtMnhsIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgICBpY29uPVxcXCJhbGVydFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnNcXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtci0xIC1tdC0xLjUgY3Vyc29yLXBvaW50ZXIgdGV4dC1bN3B4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInNob3dHbG9iYWxFcnJvckxpc3QgJiYgJyByb3RhdGUtMTgwJ1xcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R2xvYmFsRXJyb3JMaXN0ID0gIXNob3dHbG9iYWxFcnJvckxpc3RcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDx1bCB2LWlmPVxcXCJzaG93R2xvYmFsRXJyb3JMaXN0XFxcIj5cXG4gICAgICAgICAgICAgIDxsaVxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiZXJyb3IgaW4gZ2xvYmFsRXJyb3JcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImVycm9yXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYm9yZGVyLWIgYm9yZGVyLW4tMjAgcC00IHRleHQtc21cXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIHt7IGVycm9yIH19XFxuICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDwvdWw+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+IC0tPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlIHVwbG9hZC1saXN0LXRhYmxlIG10LTRcXFwiPlxcbiAgICAgIDx0YWJsZT5cXG4gICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlclxcXCIgQGNsaWNrPVxcXCJzb3J0XFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInNvcnRPcmRlciA9PT0gJ2Rlc2NlbmRpbmcnID8gJyByb3RhdGUtMTgwJyA6ICcnXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtaWNvblxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicHQtMSB0ZXh0LVs1cHhdXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4+e3sgc3RhdHVzLnRlbXBsYXRlIH19IFRpdGxlPC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJzdGF0dXNcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImJsb2NrIHRleHQtbGVmdFxcXCI+U3RhdHVzPC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJjYlxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgQGNsaWNrPVxcXCJzZWxlY3RBbGxBY3Rpdml0aWVzKClcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgIDx0ciB2LWlmPVxcXCIhaW1wb3J0RGF0YS5sZW5ndGhcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInAtNCB0ZXh0LWNlbnRlclxcXCI+Tm8gZGF0YSBmb3VuZCBmb3IgaW1wb3J0PC9kaXY+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0clxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoYWN0aXZpdHksIGluZGV4KSBpbiBpbXBvcnREYXRhXFxcIlxcbiAgICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICAgIHJlZj1cXFwidGFibGVSb3dcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAndXBsb2FkLWVycm9yJzpcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHkgJiZcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkubGVuZ3RoID4gMCxcXG4gICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0aXRsZVxcXCIgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICd4bHMtZXJyb3InXFxcIj5cXG4gICAgICAgICAgICAgIDxYbHNMaXN0RXJyb3JcXG4gICAgICAgICAgICAgICAgOndpZHRoPVxcXCJ0YWJsZVdpZHRoXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHk9XFxcImFjdGl2aXR5XFxcIlxcbiAgICAgICAgICAgICAgICA6aW5kZXg9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgICAgICA6aW1wb3J0LWRhdGE9XFxcImltcG9ydERhdGFcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICcgeGxzLWVycm9yJ1xcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGFjdGl2aXR5LmV4aXN0aW5nID8gJ0V4aXN0aW5nJyA6ICdOZXcnXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZFxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICcgeGxzLWVycm9yJ1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJjaGVjay1jb2x1bW5cXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCkgPT09IDBcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcInNlbGVjdGVkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPCEtLSA8dGQ+e3sgYWN0aXZpdHlbaW5kZXhdLmRhdGEudGl0bGVbMF0gfX08L3RkPiAtLT5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGJvZHk+XFxuICAgICAgPC90YWJsZT5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxMb2FkZXJcXG4gICAgdi1pZj1cXFwibG9hZGVyXFxcIlxcbiAgICA6dGV4dD1cXFwibG9hZGVyVGV4dFxcXCJcXG4gICAgOmNsYXNzPVxcXCJ7ICdhbmltYXRlLWxvYWRlcic6IGxvYWRlciB9XFxcIlxcbiAgLz5cXG4gIDxNb2RhbFxcbiAgICA6bW9kYWwtYWN0aXZlPVxcXCJzaG93SWRlbnRpZmllckVycm9yTW9kZWwgJiYgc2hvd0dMb2JhbEVycm9yXFxcIlxcbiAgICB3aWR0aD1cXFwiNTgzXFxcIlxcbiAgPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYi01IGZsZXggc3BhY2UteC0yLjVcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LTR4bCB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcIndhcm5pbmctZmlsbFxcXCIgLz5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LWJhc2UgZm9udC1ib2xkXFxcIj5FcnJvcnMgRGV0ZWN0ZWQ8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgV2UgZGV0ZWN0ZWQgc29tZSBlcnJvcnMgaW4gdGhlIHVwbG9hZGVkIGZpbGUuXFxuICAgICAgICA8L3A+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcblxcbiAgICA8ZGl2XFxuICAgICAgY2xhc3M9XFxcIm1iLTYgcm91bmRlZC1zbSBib3JkZXItY3JpbXNvbi0yMCBiZy1yb3NlIHAtNCB0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgPlxcbiAgICAgIDxoNiBjbGFzcz1cXFwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+SWRlbnRpZmllciBFcnJvcnM8L2g2PlxcbiAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICBXZSBoYXZlIGZvdW5kIHNvbWUgaWRlbnRpZmllciBlcnJvcnMgaW4gdGhlIGltcG9ydGVkIGZpbGUuIFlvdSBjYW5ub3RcXG4gICAgICAgIGltcG9ydCBkYXRhIHVudGlsIGFsbCB0aGUgaWRlbnRpZmllciBlcnJvcnMgYXJlIHJlc29sdmVkLlxcbiAgICAgIDwvcD5cXG4gICAgICA8dWwgY2xhc3M9XFxcIm1heC1oLVsyNTBweF0gb3ZlcmZsb3cteS1zY3JvbGxcXFwiPlxcbiAgICAgICAgPGxpXFxuICAgICAgICAgIHYtZm9yPVxcXCJlcnJvciBpbiBwcm9wcy5nbG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgOmtleT1cXFwiZXJyb3JcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJib3JkZXItYiBib3JkZXItbi0yMCBwLTQgdGV4dC1zbVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgZXJyb3IgfX1cXG4gICAgICAgIDwvbGk+XFxuICAgICAgPC91bD5cXG4gICAgPC9kaXY+XFxuICAgIDxwXFxuICAgICAgdi1pZj1cXFwiZXJyb3JDb3VudC5jcml0aWNhbCArIGVycm9yQ291bnQuZXJyb3IgKyBlcnJvckNvdW50Lndhcm5pbmcgPiAwXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCJcXG4gICAgPlxcbiAgICAgIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIHt7IGVycm9yQ291bnQuY3JpdGljYWwgfX0gY3JpdGljYWwgZXJyb3IsXFxuICAgICAge3sgZXJyb3JDb3VudC5lcnJvciB9fSBlcnJvcnMgYW5kIHt7IGVycm9yQ291bnQud2FybmluZyB9fSB3YXJuaW5nIGluIHRoZVxcbiAgICAgIGZpbGVcXG4gICAgPC9wPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtM1xcXCI+XFxuICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiZ2hvc3QtYnRuXFxcIiBAY2xpY2s9XFxcImNhbmNlbEltcG9ydFxcXCI+Q2FuY2VsIEltcG9ydDwvYnV0dG9uPlxcbiAgICAgIDxCdG5Db21wb25lbnRcXG4gICAgICAgIGNsYXNzPVxcXCJcXFwiXFxuICAgICAgICB0ZXh0PVxcXCJkb3dubG9hZCBpZGVudGlmaWVyIGVycm9yc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcInByaW1hcnlcXFwiXFxuICAgICAgICBpY29uPVxcXCJkb3dubG9hZFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiZG93bmxvYWRJZGVudGlmaWVyRXJyb3JcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICA8L01vZGFsPlxcbiAgPE1vZGFsXFxuICAgIDptb2RhbC1hY3RpdmU9XFxcInNob3dDcml0aWNhbEVycm9yTW9kZWwgJiYgIXNob3dJZGVudGlmaWVyRXJyb3JNb2RlbFxcXCJcXG4gICAgd2lkdGg9XFxcIjU4M1xcXCJcXG4gID5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWItNSBmbGV4IHNwYWNlLXgtMi41XFxcIj5cXG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC00eGwgdGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJ3YXJuaW5nLWZpbGxcXFwiIC8+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwidGV4dC1iYXNlIGZvbnQtYm9sZFxcXCI+RXJyb3JzIERldGVjdGVkPC9oNj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIFdlIGRldGVjdGVkIHNvbWUgZXJyb3JzIGluIHRoZSB1cGxvYWRlZCBmaWxlLlxcbiAgICAgICAgPC9wPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdlxcbiAgICAgIGNsYXNzPVxcXCJtYi02IHJvdW5kZWQtc20gYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIGJnLXJvc2UgcC00IHRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICA+XFxuICAgICAgPGRpdiB2LWlmPVxcXCJzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2VcXFwiIGNsYXNzPVxcXCJtYi02XFxcIj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+Q3JpdGljYWwgRXJyb3JzPC9oNj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIFNvbWUgb2YgdGhlIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSBjb250YWluIGNyaXRpY2FsIGVycm9ycyBhbmQgdGh1cyxcXG4gICAgICAgICAgY2Fubm90IGJlIHVwbG9hZGVkIHRvIElBVEkgUHVibGlzaGVyLiBQbGVhc2UgcmV2aWV3IHRoZSBlcnJvcnMgYW5kXFxuICAgICAgICAgIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGluIHRoZSB1c2VyIG1hbnVhbC5cXG4gICAgICAgIDwvcD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0zXFxcIj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJnaG9zdC1idG5cXFwiIEBjbGljaz1cXFwiY2FuY2VsSW1wb3J0XFxcIj5DYW5jZWwgSW1wb3J0PC9idXR0b24+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgdGV4dD1cXFwiUmV2aWV3IGVycm9yc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcInByaW1hcnlcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInNob3dDcml0aWNhbEVycm9yTW9kZWwgPSBmYWxzZVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvTW9kYWw+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgWGxzTGlzdEVycm9yIGZyb20gJ0NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZSc7XFxuaW1wb3J0IE1vZGFsIGZyb20gJ0NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFRvYXN0IGZyb20gJ0NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZSc7XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIG9uTW91bnRlZCwgcmVmLCBuZXh0VGljaywgb25Vbm1vdW50ZWQgfSBmcm9tICd2dWUnO1xcbmltcG9ydCBMb2FkZXIgZnJvbSAnQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWUnO1xcbmltcG9ydCBCdG5Db21wb25lbnQgZnJvbSAnQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlJztcXG5cXG5jb25zdCBzZWxlY3RBbGwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNvcnRPcmRlciA9IHJlZignYXNjZWRpbmcnKTtcXG5cXG5jb25zdCB0YWJsZVJvdyA9IHJlZih7fSk7XFxuY29uc3Qgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBsb2FkZXIgPSByZWYoZmFsc2UpLFxcbiAgbG9hZGVyVGV4dCA9IHJlZignQWRkaW5nIGFjdGl2aXRpZXMnKTtcXG5jb25zdCBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dHTG9iYWxFcnJvciA9IHJlZih0cnVlKTtcXG5jb25zdCBzZWxlY3RlZENvdW50ID0gcmVmKDApO1xcbmNvbnN0IGFjdGl2aXRpZXNMZW5ndGggPSByZWYoMCk7XFxuY29uc3Qgc2VsZWN0ZWRBY3Rpdml0aWVzID0gcmVmPHN0cmluZ1tdPihbXSk7XFxuY29uc3QgdGFibGVXaWR0aCA9IHJlZih7fSk7XFxuY29uc3QgdG9hc3RNZXNzYWdlID0gcmVmKCcnKTtcXG5jb25zdCB0b2FzdFR5cGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHRvYXN0VmlzaWJpbGl0eSA9IHJlZihmYWxzZSk7XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBzdGF0dXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICAvLyBOdW1iZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWVcXG4gIGltcG9ydERhdGE6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBnbG9iYWxFcnJvcjoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGVycm9yQ291bnQ6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuY29uc3QgZ2V0RGltZW5zaW9ucyA9IGFzeW5jICgpID0+IHtcXG4gIGF3YWl0IG5leHRUaWNrKCk7XFxuICB0YWJsZVdpZHRoLnZhbHVlID0gdGFibGVSb3c/LnZhbHVlWycwJ10/LmNsaWVudFdpZHRoO1xcbn07XFxuXFxuY29uc3Qgc29ydCA9ICgpID0+IHtcXG4gIHNvcnRPcmRlci52YWx1ZSA9PT0gJ2FzY2VuZGluZydcXG4gICAgPyAoc29ydE9yZGVyLnZhbHVlID0gJ2Rlc2NlbmRpbmcnKVxcbiAgICA6IChzb3J0T3JkZXIudmFsdWUgPSAnYXNjZW5kaW5nJyk7XFxuXFxuICBsZXQgc29ydGVkRGF0YSA9IHByb3BzLmltcG9ydERhdGE7XFxuICBzd2l0Y2ggKHByb3BzLnN0YXR1c1sndGVtcGxhdGUnXSkge1xcbiAgICBjYXNlICdhY3Rpdml0eSc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8IGIuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcbiAgICAgIGJyZWFrO1xcblxcbiAgICBjYXNlICdyZXN1bHQnOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBjYXNlICdwZXJpb2QnOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBjYXNlICdpbmRpY2F0b3InOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIGJyZWFrO1xcbiAgfVxcbn07XFxuXFxub25Vbm1vdW50ZWQoKCkgPT4ge1xcbiAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xcbn0pO1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBnZXREaW1lbnNpb25zKCk7XFxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XFxuICBjaGVja0NyaXRpY2FsRXJyb3IoKTtcXG5cXG4gIGlmIChwcm9wcy5nbG9iYWxFcnJvcikge1xcbiAgICBzaG93SWRlbnRpZmllckVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xcbiAgfVxcbiAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHByb3BzLmltcG9ydERhdGEubGVuZ3RoO1xcbiAgbG9hZGVyVGV4dC52YWx1ZSA9IGBBZGRpbmcgJHtwcm9wcy5zdGF0dXMudGVtcGxhdGV9YDtcXG59KTtcXG5cXG5jb25zdCBjYW5jZWxJbXBvcnQgPSAoKSA9PiB7XFxuICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gZmFsc2U7XFxuICBzaG93R0xvYmFsRXJyb3IudmFsdWUgPSBmYWxzZTtcXG4gIGF4aW9zLmRlbGV0ZShgL2ltcG9ydC94bHNgKS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcXG4gICAgc2V0VGltZW91dCgoKSA9PiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpLCAxNTAwMCk7XFxuICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XFxuICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQveGxzJztcXG4gICAgfSwgMjAwMCk7XFxuICB9KTtcXG59O1xcbmNvbnN0IGRvd25sb2FkSWRlbnRpZmllckVycm9yID0gKCkgPT4ge1xcbiAgbGV0IHRleHQ7XFxuICBpZiAodHlwZW9mIHByb3BzLmdsb2JhbEVycm9yID09PSAnb2JqZWN0Jykge1xcbiAgICB0ZXh0ID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5nbG9iYWxFcnJvcikuam9pbignXFxcXG4nKTtcXG4gIH1cXG4gIGxldCBmaWxlID0gbmV3IEZpbGUoWydcXFxcdWZlZmYnICsgdGV4dF0sICdpZGVudGlmaWVyLWVycm9ycy50eHQnLCB7XFxuICAgIHR5cGU6ICd0ZXh0L3BsYWluOmNoYXJzZXQ9VVRGLTgnLFxcbiAgfSk7XFxuICBsZXQgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XFxuICBsZXQgYW5jaG9yVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xcbiAgYW5jaG9yVGFnLmhyZWYgPSB1cmw7XFxuICBhbmNob3JUYWcuZG93bmxvYWQgPSBmaWxlLm5hbWU7XFxuICBhbmNob3JUYWcuY2xpY2soKTtcXG4gIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XFxufTtcXG5cXG5jb25zdCBjaGVja0NyaXRpY2FsRXJyb3IgPSAoKSA9PiB7XFxuICBjb25zdCBjcml0aWNhbEFycnkgPVxcbiAgICBwcm9wcy5pbXBvcnREYXRhICYmXFxuICAgIHByb3BzLmltcG9ydERhdGEubWFwKChkYXRhLCBpbmRleCkgPT4ge1xcbiAgICAgIHJldHVybiBlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCk7XFxuICAgIH0pO1xcbiAgbGV0IHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID0gMDtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY3JpdGljYWxBcnJ5Lmxlbmd0aDsgaSsrKSB7XFxuICAgIHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ICs9IGNyaXRpY2FsQXJyeVtpXTtcXG4gIH1cXG4gIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDApIHtcXG4gICAgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG4gIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDAgfHwgcHJvcHMuZ2xvYmFsRXJyb3I/Lmxlbmd0aCA+IDApIHtcXG4gICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG5jb25zdCBjb3VudEVycm9ycyA9IChhY3Rpdml0eUluZGV4KSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcbiAgZm9yIChjb25zdCB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XFxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcXG4gICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhcXG4gICAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdW2luZGV4XVxcbiAgICAgICkubGVuZ3RoO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCBhZGRBY3Rpdml0aWVzID0gKCkgPT4ge1xcbiAgaWYgKHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XFxuICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XFxuXFxuICAgIGF4aW9zXFxuICAgICAgLnBvc3QoYC9pbXBvcnQveGxzL2FjdGl2aXR5YCwgeyBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgfSlcXG4gICAgICAudGhlbigoKSA9PiB7XFxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XFxuICAgICAgfSk7XFxuICB9XFxufTtcXG5jb25zdCBlcnJvckxlbmd0aCA9IChlcnJvclR5cGUsIGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV0pIHtcXG4gICAgY291bnQgKz0gT2JqZWN0LmtleXMoXFxuICAgICAgcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXVtpbmRleF1cXG4gICAgKS5sZW5ndGg7XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5cXG5mdW5jdGlvbiBzZWxlY3RBbGxBY3Rpdml0aWVzKCkge1xcbiAgc2VsZWN0QWxsLnZhbHVlID0gIXNlbGVjdEFsbC52YWx1ZTtcXG4gIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xcbiAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA9IDA7XFxuICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhKS5mb3JFYWNoKChhY3Rpdml0eV9pZCkgPT4ge1xcbiAgICBsZXQgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuaW5kZXhPZihhY3Rpdml0eV9pZCk7XFxuICAgIGlmIChcXG4gICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoXFxuICAgICAgICAnY3JpdGljYWwnXFxuICAgICAgKSA9PT0gLTFcXG4gICAgKSB7XFxuICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnB1c2goYWN0aXZpdHlfaWQpO1xcbiAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0pO1xcbiAgaWYgKCFzZWxlY3RBbGwudmFsdWUpIHtcXG4gICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XFxuICB9XFxufVxcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuLnhscy1lcnJvciB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI2ZmZjFmMCA2MHB4LCAjZmZmZmZmIDAlKTtcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlLXdyYXBwZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNTtcXG4gIHdpZHRoOiA0MjRweDtcXG4gIGhlaWdodDogLW1vei1maXQtY29udGVudDtcXG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQWtyQ0E7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLFlBQVk7RUFDWix3QkFBbUI7RUFBbkIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsaUNBQWlDO0VBQ2pDLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixhQUFhO0VBQ2IsZUFBZTtBQUNqQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJmaWx0ZXJzIG1iLTQgZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC0yXFxcIj5cXG4gICAgPCEtLUZpbHRlciBvcHRpb25zIHN0YXJ0LS0+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNlbGVjdCBmaWx0ZXJzIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ3LTEwIHRleHQtbGdcXFwiIGljb249XFxcImZ1bm5lbFxcXCIgLz5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCIgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdjb3VudHJ5JylcXFwiPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJjb3VudHJ5LWZpbHRlclxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLmNvdW50cnlcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJDT1VOVFJZXFxcIlxcbiAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJjb3VudHJpZXNXaXRoUHJlZml4XFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcImNvdW50cnlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3NldHVwIGNvbXBsZXRlbmVzcycpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwic2V0dXAtY29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU0VUVVAgQ09NUExFVEVORVNTXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwic2V0dXBDb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJzZXR1cENvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlciB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgncmVnaXN0cmF0aW9uIHR5cGUnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcInJlZ2lzdHJhdGlvbi10eXBlXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGVcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJSRUdJU1RSQVRJT04gVFlQRVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcInJlZ2lzdHJhdGlvblR5cGVzXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwicmVnaXN0cmF0aW9uVHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcblxcbiAgICAgIDwhLS1NdWx0aXNlbGVjdCB3aXRoIHNlYXJjaCAtLT5cXG4gICAgICA8IS0tIHRvIGJlIGltcGxlbWVudGVkIC0tPlxcbiAgICAgIDwhLS0gPGRpdlxcbiAgICAgICAgY2xhc3M9XFxcIm9yZ2FuaXphdGlvbiBtdWx0aXNlbGVjdC1sb29rYWxpa2VcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNob3dNdWx0aVNlbGVjdCgkZXZlbnQpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggaC1mdWxsIHctZnVsbCBqdXN0aWZ5LWJldHdlZW4gYWxpZ24tbWlkZGxlIHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4+T3JnYW5pc2F0aW9uIFR5cGU8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIHYtaWY9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGhcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IHtcXG4gICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoID0gMDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMi41IHRyYW5zbGF0ZS14LTEgdGV4dC1bMTZweF0gdGV4dC1uLTMwXFxcIlxcbiAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwicm90YXRlQ2xhc3NcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgc3R5bGU9XFxcImhlaWdodDogZml0LWNvbnRlbnQ7IGZvbnQtc2l6ZTogMjBweDsgbWFyZ2luLXRvcDogLTJweFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhcnJvdy1kb3duXFxcIj48L3N2Zy12dWU+IDwvc3BhblxcbiAgICAgICAgICA+PC9zcGFuPlxcbiAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICA8VGVsZXBvcnQgdG89XFxcImJvZHlcXFwiPlxcbiAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgdi1pZj1cXFwic2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbG9va2FsaWtlLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJtdWx0aXNlbGVjdFN0eWxlXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPE11bHRpU2VsZWN0V2l0aFNlYXJjaFxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlICF6LVsxMDAwXVxcXCJcXG4gICAgICAgICAgICAgIGhlYWRlcj1cXFwiT3JnYW5pc2F0aW9uIFR5cGVcXFwiXFxuICAgICAgICAgICAgICA6bGlzdC1pdGVtcz1cXFwicHVibGlzaGVyVHlwZXNcXFwiXFxuICAgICAgICAgICAgICBAY2hhbmdlLXNlbGVjdGVkLXB1Ymxpc2hlcj1cXFwic2V0U2VsZWN0ZWRQdWJsaXNoZXJcXFwiXFxuICAgICAgICAgICAgICBAY2xvc2U9XFxcInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSBmYWxzZVxcXCJcXG4gICAgICAgICAgICA+PC9NdWx0aVNlbGVjdFdpdGhTZWFyY2g+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9UZWxlcG9ydD5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdPcmdhbmlzYXRpb24gVHlwZScpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwicHVibGlzaGVyLXR5cGVcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcInB1Ymxpc2hlclR5cGVzXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiT3JnYW5pc2F0aW9uIFR5cGVcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwicHVibGlzaGVyVHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnZGF0YSBsaWNlbnNlJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJkYXRhLWxpY2Vuc2VcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5kYXRhX2xpY2Vuc2VcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJkYXRhTGljZW5zZXNcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJEQVRBIExJQ0VOU0VcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwiZGF0YUxpY2Vuc2VcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9kaXY+XFxuICAgIDwhLS1GaWx0ZXIgb3B0aW9ucyBlbmQtLT5cXG5cXG4gICAgPCEtLURhdGUgcmFuZ2Ugc3RhcnQtLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTQgMnhsOnctYXV0b1xcXCI+XFxuICAgICAgPERhdGVSYW5nZVdpZGdldFxcbiAgICAgICAgOmRyb3Bkb3duLXJhbmdlPVxcXCJkcm9wZG93blJhbmdlXFxcIlxcbiAgICAgICAgOmZpcnN0LWRhdGU9XFxcIm9sZGVzdERhdGVzXFxcIlxcbiAgICAgICAgOmNsZWFyLWRhdGU9XFxcImNsZWFyRGF0ZVxcXCJcXG4gICAgICAgIDpzdGFydGluZy1kYXRlPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZVxcXCJcXG4gICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgOmRhdGUtbmFtZT1cXFwiZGF0ZVR5cGVcXFwiXFxuICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS1yYW5nZT1cXFwic2V0RGF0ZVJhbmdlRGF0ZVxcXCJcXG4gICAgICAgIEB0cmlnZ2VyLXNldC1kYXRlLXR5cGU9XFxcInNldERhdGVUeXBlXFxcIlxcbiAgICAgICAgQGRhdGUtY2xlYXJlZD1cXFwiY2xlYXJEYXRlID0gZmFsc2VcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICAgIDwhLS1EYXRlIHJhbmdlIHN0YXJ0LS0+XFxuICA8L2Rpdj5cXG5cXG4gIDwhLS1GaWx0ZXIgdGFnIHBpbGxzIHN0YXJ0LS0+XFxuICA8ZGl2XFxuICAgIHYtaWY9XFxcImlzRmlsdGVyQXBwbGllZFxcXCJcXG4gICAgY2xhc3M9XFxcIm1iLTQgZmxleCBtYXgtdy1mdWxsIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIlxcbiAgPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MFxcXCI+RmlsdGVyZWQgYnk6IDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIuY291bnRyeVxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5jb3VudHJ5XFxcIlxcbiAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+Q291bnRyeTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgaXRlbSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuY291bnRyeS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlNldHVwIENvbXBsZXRlbmVzczo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UoZmlsdGVyLmNvbXBsZXRlbmVzcykgfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGVcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+UmVnaXN0cmF0aW9uIFR5cGU6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSkgfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlID0gJydcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhblxcbiAgICAgIHYtc2hvdz1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aFxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5wdWJsaXNoZXJfdHlwZVxcXCJcXG4gICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPk9yZ2FuaXNhdGlvbiBUeXBlOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBwdWJsaXNoZXJUeXBlc1tpdGVtXSB9fVxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGUuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuXFxuICAgICAgdi1zaG93PVxcXCJmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aFxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5kYXRhX2xpY2Vuc2VcXFwiXFxuICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5EYXRhIExpY2Vuc2U6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IGl0ZW0gfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLmRhdGFfbGljZW5zZS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG4gICAgPHNwYW5cXG4gICAgICB2LXNob3c9XFxcImZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZVxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweC0yIHB5LTEgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+IERhdGUgcmFuZ2U6IDwvc3Bhbj5cXG4gICAgICAgICAge3sgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyIH19XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGNsZWFyRGF0ZUZpbHRlcigpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPGJ1dHRvbiBjbGFzcz1cXFwiZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCIgQGNsaWNrPVxcXCJyZXNldEFsbEZpbHRlcnNcXFwiPlxcbiAgICAgIENsZWFyIEZpbHRlclxcbiAgICA8L2J1dHRvbj5cXG4gIDwvZGl2PlxcbiAgPCEtLUZpbHRlciB0YWcgcGlsbHMgZW5kLS0+XFxuXFxuICA8ZGl2PlxcbiAgICA8cCBjbGFzcz1cXFwicHktMVxcXCI+VG90YWwgTnVtYmVyIG9mIE9yZ2FuaXNhdGlvbjoge3sgdG90YWxPcmdhbmlzYXRpb24gfX08L3A+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZVxcXCI+XFxuICAgICAgPHRhYmxlPlxcbiAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwib3JnYW5pc2F0aW9uX25hbWVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICduYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ25hbWUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiY291bnRyeVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2NvdW50cnknXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdjb3VudHJ5JylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnY291bnRyeSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+Q291bnRyeTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicmVnaXN0ZXJlZF9vblxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3JlZ2lzdGVyZWRfb24nXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdyZWdpc3RlcmVkX29uJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncmVnaXN0ZXJlZF9vbidcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+UmVnaXN0ZXJlZCBPbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwibGFzdF9sb2dpblxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2xhc3RfbG9nZ2VkX2luJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnbGFzdF9sb2dnZWRfaW4nKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdsYXN0X2xvZ2dlZF9pbidcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+TGFzdCBMb2dpbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiYWN0aXZpdGllc1xcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2FsbF9hY3Rpdml0aWVzX2NvdW50J1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnYWxsX2FjdGl2aXRpZXNfY291bnQnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdhbGxfYWN0aXZpdGllc19jb3VudCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+QWN0aXZpdGllczwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaGVyX3R5cGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdwdWJsaXNoZXJfdHlwZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ3B1Ymxpc2hlcl90eXBlJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncHVibGlzaGVyX3R5cGUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbiBUeXBlPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJkYXRhX2xpY2VuY2VcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdkYXRhX2xpY2Vuc2UnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkRhdGEgbGljZW5jZSA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInByb3h5XFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE1OHB4XFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90aGVhZD5cXG4gICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgPHRyIHYtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmV0Y2hpbmcnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmV0Y2hpbmcgRGF0YS4uLjwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWVsc2UtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmFpbGVkIHRvIHJldHJpZXZlIGRhdGEuLi48L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1lbHNlLWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9PT0gJ2VtcHR5J1xcXCI+XFxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPk5vIERhdGEgQXZhaWxhYmxlPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZm9yPVxcXCJkYXRhIGluIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiZGF0YS5pZFxcXCI+XFxuICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJkYXRhLm5hbWVcXFwiIGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImVsbGlwc2lzIG92ZXJmbG93LWhpZGRlblxcXCI+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5uYW1lWzBdPy5uYXJyYXRpdmUgPz8gJ05hbWUgTWlzc2luZycgfX1cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZT5OYW1lIE1pc3Npbmc8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JvdXAgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB0ZXh0LWJsdWUtNDBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8udXNlcj8uZW1haWwgfX1cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgbGVmdC0wIHRvcC1mdWxsIGhpZGRlbiByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtMiBzaGFkb3ctc20gZ3JvdXAtaG92ZXI6YmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8udXNlcj8uZW1haWwgfX1cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCB3LWZpdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1zcHJpbmctNTAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LW1kIG10LTEgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGljaydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NpcmNsZS1yZWQtY3Jvc3MnXFxuICAgICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHgtMVxcXCI+IFJlZ2lzdHJ5IEFQSSBLZXkgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgZmxleCB3LWZpdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1tZCBtdC0xIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2lyY2xlLXJlZC1jcm9zcydcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJweC0xXFxcIj4gRGVmYXVsdCBWYWx1ZXMgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IGNvdW50cmllc1dpdGhQcmVmaXhbZGF0YVsnY291bnRyeSddXSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYi0xXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBkYXRlRm9ybWF0KGRhdGFbJ2NyZWF0ZWRfYXQnXSwgJ01NTU0sIERELCBZWVlZJykgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQteHNcXFwiPlxcbiAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHlcXG4gICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVnaXN0cmF0aW9uX3R5cGUnXSAhPT0gJ2V4aXN0aW5nX29yZycgPyAnbm90JyA6ICcnXFxuICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgICByZWdpc3RlcmVkIGluIElBVEkgcGxhdGZvcm1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgZGF0YS5sYXN0X2xvZ2dlZF9pblxcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRlRm9ybWF0KGRhdGEubGFzdF9sb2dnZWRfaW4sICdNTU1NLCBERCxZWVlZJylcXG4gICAgICAgICAgICAgICAgICAgIDogJ05vdCBBdmFpbGFibGUnXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInB4LTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGEuYWxsX2FjdGl2aXRpZXNfY291bnQgfX0gYWN0aXZpdGllc1xcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC14c1xcXCI+XFxuICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ2xhdGVzdF91cGRhdGVkX2FjdGl2aXR5J11cXG4gICAgICAgICAgICAgICAgICAgICAgPyAnTGFzdCB1cGRhdGVkIG9uOicgK1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQoXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydsYXRlc3RfdXBkYXRlZF9hY3Rpdml0eSddLnVwZGF0ZWRfYXQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnTU1NTSwgREQsIFlZWVknXFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgICAgICAgICAgICA6ICdOb3QgYXZhaWxhYmxlJ1xcbiAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBzaG93TWFwcGVkRGF0YSgncHVibGlzaGVyX3R5cGUnLCBkYXRhLCBwdWJsaXNoZXJUeXBlcykgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3sgc2hvd01hcHBlZERhdGEoJ2RhdGFfbGljZW5zZScsIGRhdGEsIGRhdGFMaWNlbnNlcykgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJib3JkZXItdGhpcyBmbGV4XFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxCdG5Db21wb25lbnRcXG4gICAgICAgICAgICAgICAgICB0ZXh0PVxcXCJwcm94eVxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcInNtaWxlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwicHJveHlVc2VyKDxudW1iZXI+ZGF0YT8udXNlcj8uaWQpXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cXFwib3BlbkRlbGV0ZU1vZGFsKGRhdGEpXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInctMTAgdGV4dC1sZyB0ZXh0LW4tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3Rib2R5PlxcbiAgICAgIDwvdGFibGU+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICA8UGFnaW5hdGlvblxcbiAgICAgICAgdi1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5kYXRhICYmIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5sYXN0X3BhZ2UgPiAxXFxcIlxcbiAgICAgICAgOmRhdGE9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuZGF0YVxcXCJcXG4gICAgICAgIDpyZXNldD1cXFwicmVzZXRQYWdpbmF0aW9uXFxcIlxcbiAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcIihuKSA9PiBmZXRjaE9yZ2FuaXNhdGlvbihuKVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdj48L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPFBvcHVwTW9kYWwgOm1vZGFsLWFjdGl2ZT1cXFwiZGVsZXRlTW9kYWxcXFwiIEBjbG9zZT1cXFwidG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwidGl0bGUgbWItNiBmbGV4XFxcIj5cXG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICA8Yj5EZWxldGUgb3JnYW5pc2F0aW9uPC9iPlxcbiAgICA8L2Rpdj5cXG4gICAgPHAgY2xhc3M9XFxcInJvdW5kZWQtbGcgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGI+IHt7IGRlbGV0ZU9yZ05hbWUgfX08L2I+ID9cXG4gICAgPC9wPlxcbiAgICA8cCBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMlxcXCI+XFxuICAgICAgPGxhYmVsIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgICA8aW5wdXQgaWQ9XFxcIm1hcmtBc1NwYW1cXFwiIHYtbW9kZWw9XFxcIm1hcmtBc1NwYW1cXFwiIHR5cGU9XFxcImNoZWNrYm94XFxcIiAvPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgICA8L2xhYmVsPlxcbiAgICAgIDxsYWJlbCBmb3I9XFxcIm1hcmtBc1NwYW1cXFwiPiBNYXJrIGFzc29jaWF0ZWQgZW1haWxzIGFzIHNwYW0uPC9sYWJlbD5cXG4gICAgPC9wPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCIgQGNsaWNrPVxcXCJ0b2dnbGVEZWxldGVDb25maXJtYXRpb25cXFwiPlxcbiAgICAgICAgQ2FuY2VsXFxuICAgICAgPC9idXR0b24+XFxuICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZU9yZyhkZWxldGVJZClcXFwiPlxcbiAgICAgICAgRGVsZXRlIDxTcGlubmVyTG9hZGVyIHYtaWY9XFxcInNob3dMb2FkZXJcXFwiPjwvU3Bpbm5lckxvYWRlcj5cXG4gICAgICA8L2J1dHRvbj5cXG4gICAgPC9kaXY+XFxuICA8L1BvcHVwTW9kYWw+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQge1xcbiAgcmVhY3RpdmUsXFxuICBvbk1vdW50ZWQsXFxuICBpbmplY3QsXFxuICByZWYsXFxuICB3YXRjaCxcXG4gIGNvbXB1dGVkLFxcbiAgZGVmaW5lQ29tcG9uZW50LFxcbn0gZnJvbSAndnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBNdWx0aVNlbGVjdFdpdGhTZWFyY2ggZnJvbSAnQ29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlJztcXG5cXG5pbXBvcnQgZGF0ZUZvcm1hdCBmcm9tICdDb21wb3NhYmxlL2RhdGVGb3JtYXQnO1xcbmltcG9ydCB7XFxuICBrZWJhYkNhc2VUb1NuYWtlY2FzZSxcXG4gIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxcbn0gZnJvbSAnQ29tcG9zYWJsZS91dGlscyc7XFxuXFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJ0NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZSc7XFxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJ0B2dWVmb3JtL211bHRpc2VsZWN0JztcXG5pbXBvcnQgeyB3YXRjaElnbm9yYWJsZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuaW1wb3J0IERhdGVSYW5nZVdpZGdldCBmcm9tICdDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWUnO1xcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnU3RvcmUvYWN0aXZpdGllcy9pbmRleCc7XFxuaW1wb3J0IFBvcHVwTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IFNwaW5uZXJMb2FkZXIgZnJvbSAnQ29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZSc7XFxuXFxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcXG4gIG5hbWU6ICdUYWJsZUxpc3QnLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBTcGlubmVyTG9hZGVyLFxcbiAgICBQb3B1cE1vZGFsLFxcbiAgICBCdG5Db21wb25lbnQ6IEJ0bkNvbXBvbmVudCxcXG4gICAgUGFnaW5hdGlvbjogUGFnaW5hdGlvbixcXG4gICAgTXVsdGlzZWxlY3Q6IE11bHRpc2VsZWN0LFxcbiAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldCxcXG4gIH0sXFxuICBwcm9wczoge1xcbiAgICBjb3VudHJpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBzZXR1cENvbXBsZXRlbmVzczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHJlZ2lzdHJhdGlvblR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgcHVibGlzaGVyVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBkYXRhTGljZW5zZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBvbGRlc3REYXRlczoge1xcbiAgICAgIHR5cGU6IFN0cmluZyxcXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcXG4gICAgfSxcXG4gIH0sXFxuXFxuICBzZXR1cChwcm9wcykge1xcbiAgICAvLyBpbmplY3RcXG4gICAgaW50ZXJmYWNlIFRvYXN0SW50ZXJmYWNlIHtcXG4gICAgICB2aXNpYmlsaXR5OiBib29sZWFuO1xcbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcXG4gICAgICB0eXBlOiBib29sZWFuO1xcbiAgICB9XFxuICAgIGNvbnN0IHRvYXN0TWVzc2FnZSA9IGluamVjdCgndG9hc3REYXRhJykgYXMgVG9hc3RJbnRlcmZhY2U7XFxuXFxuICAgIGludGVyZmFjZSBMb2FkZXJJbnRlcmZhY2Uge1xcbiAgICAgIHN0YXR1czogYm9vbGVhbjtcXG4gICAgICB0ZXh0OiBzdHJpbmc7XFxuICAgIH1cXG5cXG4gICAgY29uc3QgbG9hZGVyID0gaW5qZWN0KCdsb2FkZXInKSBhcyBMb2FkZXJJbnRlcmZhY2U7XFxuICAgIGNvbnN0IGRhdGVEcm9wZG93biA9IHJlZigpO1xcbiAgICBjb25zdCBjbGVhckRhdGUgPSByZWYoZmFsc2UpO1xcbiAgICBjb25zdCBkYXRlVHlwZSA9IHJlZignQWxsIFRpbWUnKTtcXG5cXG4gICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSgpO1xcblxcbiAgICBjb25zdCBkZWxldGVJZCA9IHJlZignJyk7XFxuICAgIGNvbnN0IGRlbGV0ZU9yZ05hbWUgPSByZWYoJycpO1xcbiAgICBjb25zdCBkZWxldGVNb2RhbCA9IHJlZihmYWxzZSk7XFxuICAgIGNvbnN0IG1hcmtBc1NwYW0gPSByZWYoZmFsc2UpO1xcbiAgICBjb25zdCBzaG93TG9hZGVyID0gcmVmKGZhbHNlKTtcXG5cXG4gICAgZnVuY3Rpb24gdG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uKCkge1xcbiAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gIWRlbGV0ZU1vZGFsLnZhbHVlO1xcbiAgICAgIG1hcmtBc1NwYW0udmFsdWUgPSBmYWxzZTtcXG4gICAgICBzaG93TG9hZGVyLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG5cXG4gICAgY29uc3Qgb3BlbkRlbGV0ZU1vZGFsID0gKG9yZ2FuaXphdGlvbikgPT4ge1xcbiAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcXG4gICAgICBkZWxldGVJZC52YWx1ZSA9IG9yZ2FuaXphdGlvbi5pZDtcXG4gICAgICBkZWxldGVPcmdOYW1lLnZhbHVlID0gb3JnYW5pemF0aW9uLm5hbWVbMF0/Lm5hcnJhdGl2ZTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3QgZGVsZXRlT3JnID0gYXN5bmMgKG9yZ0lkKSA9PiB7XFxuICAgICAgc2hvd0xvYWRlci52YWx1ZSA9IHRydWU7XFxuXFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5kZWxldGUoXFxuICAgICAgICBgL29yZ2FuaXphdGlvbi8ke29yZ0lkfWAgKyAobWFya0FzU3BhbS52YWx1ZSA/ICc/bWFya0FzU3BhbT10cnVlJyA6ICcnKVxcbiAgICAgICk7XFxuXFxuICAgICAgc2hvd0xvYWRlci52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XFxuICAgICAgbWFya0FzU3BhbS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2UuZGF0YS5zdWNjZXNzO1xcbiAgICAgIHRvYXN0TWVzc2FnZS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG5cXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigpO1xcbiAgICAgIH1cXG5cXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgIHRvYXN0TWVzc2FnZS52aXNpYmlsaXR5ID0gZmFsc2U7XFxuICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9ICcnO1xcbiAgICAgIH0sIDMwMDApO1xcbiAgICB9O1xcblxcbiAgICAvL3R5cGVmYWNlXFxuICAgIGludGVyZmFjZSBvcmdhbml6YXRpb25JbnRlcmZhY2Uge1xcbiAgICAgIGRhdGE6IG9EYXRhSW50ZXJmYWNlO1xcbiAgICAgIHN0YXR1czogc3RyaW5nO1xcbiAgICB9XFxuXFxuICAgIGludGVyZmFjZSBvRGF0YUludGVyZmFjZSB7XFxuICAgICAgZGF0YToge1xcbiAgICAgICAgdG90YWw6IG51bWJlcjtcXG5cXG4gICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICBuYW1lOiB7XFxuICAgICAgICAgIG5hcnJhdGl2ZTogc3RyaW5nO1xcbiAgICAgICAgfVtdO1xcbiAgICAgICAgb3JnYW5pemF0aW9uX3VybDogc3RyaW5nO1xcbiAgICAgICAgdXNlcjoge1xcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xcbiAgICAgICAgICBpZDogbnVtYmVyO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBjb3VudHJ5OiBzdHJpbmc7XFxuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlO1xcbiAgICAgICAgbGFzdF9sb2dnZWRfaW46IERhdGU7XFxuICAgICAgICBhbGxfYWN0aXZpdGllc19jb3VudDogbnVtYmVyO1xcbiAgICAgICAgcHVibGlzaGVyX3R5cGU6IHN0cmluZyB8IG51bWJlcjtcXG4gICAgICAgIGRhdGFfbGljZW5zZTogc3RyaW5nO1xcbiAgICAgIH1bXTtcXG4gICAgICBsYXN0X3BhZ2U6IG51bWJlcjtcXG4gICAgICBjdXJyZW50X3BhZ2U6IG51bWJlcjtcXG4gICAgfVxcblxcbiAgICBjb25zdCBnZXRDb3VudHJpZXNXaXRoUHJlZml4ID0gKCkgPT4ge1xcbiAgICAgIGNvbnN0IHJldHVyblZhbHVlRm9yQ291bnRyaWVzID0ge307XFxuICAgICAgY29uc3QgY291bnRyeUNvZGVzID0gT2JqZWN0LmtleXMocHJvcHMuY291bnRyaWVzKTtcXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50cnlDb2Rlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSA9IGAke2NvdW50cnlDb2Rlc1tpXX0gLSAke1xcbiAgICAgICAgICBwcm9wcy5jb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXVxcbiAgICAgICAgfWA7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZUZvckNvdW50cmllcztcXG4gICAgfTtcXG5cXG4gICAgY29uc3QgY291bnRyaWVzV2l0aFByZWZpeCA9IGdldENvdW50cmllc1dpdGhQcmVmaXgoKTtcXG5cXG4gICAgLy8gcmVhY3Rpdml0eVxcbiAgICBsZXQgb3JnYW5pc2F0aW9uRGF0YTogb3JnYW5pemF0aW9uSW50ZXJmYWNlID0gcmVhY3RpdmUoe1xcbiAgICAgIGRhdGE6IHt9IGFzIG9EYXRhSW50ZXJmYWNlLFxcbiAgICAgIHN0YXR1czogJ2ZldGNoaW5nJyxcXG4gICAgfSk7XFxuXFxuICAgIGxldCBtdWx0aXNlbGVjdFN0eWxlID0gcmVmKHt9KTtcXG5cXG4gICAgbGV0IGZpbHRlciA9IHJlYWN0aXZlKHtcXG4gICAgICBwdWJsaXNoZXJfdHlwZTogW10sXFxuICAgICAgZGF0YV9saWNlbnNlOiBbXSxcXG4gICAgICBjb3VudHJ5OiBbXSxcXG4gICAgICBjb21wbGV0ZW5lc3M6ICcnLFxcbiAgICAgIHJlZ2lzdHJhdGlvbl90eXBlOiAnJyxcXG4gICAgICBzdGFydF9kYXRlOiAnJyxcXG4gICAgICBlbmRfZGF0ZTogJycsXFxuICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxcbiAgICB9KTtcXG4gICAgY29uc3QgcmVzZXRQYWdpbmF0aW9uID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgdG90YWxPcmdhbmlzYXRpb24gPSByZWYoMCk7XFxuICAgIGxldCByZWdpc3RyeUFwaUtleVN0YXR1czogYm9vbGVhbltdID0gcmVhY3RpdmUoW10pO1xcbiAgICBsZXQgZGVmYXVsdFZhbHVlU3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGNvbnN0IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSByZWYoZmFsc2UpO1xcbiAgICBsZXQgZHJvcGRvd25SYW5nZSA9IHtcXG4gICAgICBjcmVhdGVkX2F0OiAnUmVnaXN0ZXJlZCBkYXRlIHJhbmdlJyxcXG4gICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZSByYW5nZScsXFxuICAgIH07XFxuICAgIGNvbnN0IHNvcnRQYXJhbXMgPSByZWYoeyBvcmRlckJ5OiAnJywgZGlyZWN0aW9uOiAnJyB9KTtcXG5cXG4gICAgY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZShmaWx0ZXIsICgpID0+IHVuZGVmaW5lZCk7XFxuICAgIHdhdGNoKFxcbiAgICAgICgpID0+IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUsXFxuICAgICAgKHZhbHVlKSA9PiB7XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTE4MCc7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCBjbGVhckRhdGVGaWx0ZXIgPSAoKSA9PiB7XFxuICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjbG9zZVB1Ymxpc2hlck1vZGVsID0gKCkgPT4ge1xcbiAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG4gICAgY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgICAgIHJldHVybiB7ICctLWxhYmVsJzogYCcke2xhYmVsfSdgIH07XFxuICAgIH07XFxuXFxuICAgIC8vbGlmZWN5Y2xlXFxuICAgIG9uTW91bnRlZCgoKSA9PiB7XFxuICAgICAgbGV0IGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcXG5cXG4gICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICBsZXQga2V5ID0ga2ViYWJDYXNlVG9TbmFrZWNhc2UoZmlsdGVyUGFyYW1zW2ldWzBdKTtcXG4gICAgICAgICAgbGV0IHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xcblxcbiAgICAgICAgICBpZiAoWydwdWJsaXNoZXJfdHlwZScsICdkYXRhX2xpY2Vuc2UnLCAnY291bnRyeSddLmluY2x1ZGVzKGtleSkpIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XFxuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGZldGNoT3JnYW5pc2F0aW9uKDEpO1xcbiAgICB9KTtcXG5cXG4gICAgY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gICAgICBsZXQgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uaHJlZj8udG9TdHJpbmcoKTtcXG5cXG4gICAgICBpZiAocXVlcnlTdHJpbmcpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgICAgIGxldCBxdWVyeVBhcmFtc0luS2V5VmFsOiBvYmplY3RbXSA9IFtdO1xcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZz8uc3BsaXQoJyYnKTtcXG5cXG4gICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9Jyk7XFxuICAgICAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlID8/ICcnXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICAvKipcXG4gICAgICogRmV0Y2hpbmcgb3JnYW5pemF0aW9uIGxpc3RcXG4gICAgICpcXG4gICAgICovXFxuICAgIGNvbnN0IGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcXG4gICAgY29uc3QgZmV0Y2hPcmdhbmlzYXRpb24gPSAoYWN0aXZlX3BhZ2UgPSAxKSA9PiB7XFxuICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmV0Y2hpbmcnO1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG4gICAgICB9XFxuXFxuICAgICAgYWN0aXZlX3BhZ2UgPSBhY3RpdmVfcGFnZSA/PyAxO1xcbiAgICAgIGxldCBlbmRwb2ludCA9IGAvbGlzdC1vcmdhbmlzYXRpb25zL3BhZ2UvJHthY3RpdmVfcGFnZX0ke3F1ZXJ5U3RyaW5nfWA7XFxuXFxuICAgICAgaWYgKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSkge1xcbiAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSk7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbik7XFxuICAgICAgfVxcblxcbiAgICAgIGlmIChcXG4gICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pXFxuICAgICAgKSB7XFxuICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nID8/ICcmcT0nO1xcbiAgICAgICAgZW5kcG9pbnQgPSBxdWVyeVN0cmluZyAhPT0gJycgPyBlbmRwb2ludCA6IGAke2VuZHBvaW50fWA7XFxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcktleSBpbiBmaWx0ZXIpIHtcXG4gICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJLZXldICYmIGZpbHRlcltmaWx0ZXJLZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKGZpbHRlcktleSwgZmlsdGVyW2ZpbHRlcktleV0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGF4aW9zXFxuICAgICAgICAuZ2V0KGVuZHBvaW50LCB7XFxuICAgICAgICAgIHBhcmFtczpcXG4gICAgICAgICAgICBpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcXG4gICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICAgICAgICAgID8gdXJsUGFyYW1zXFxuICAgICAgICAgICAgICA6ICcnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICAgICAgdG90YWxPcmdhbmlzYXRpb24udmFsdWUgPSByZXNwb25zZS5kYXRhPy50b3RhbDtcXG5cXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZW1wdHknO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdzdWNjZXNzJztcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XFxuXFxuICAgICAgICAgICAgICByZWZyZXNoU3RhdHVzQXJyYXlzKG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJztcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBQcm94eSBVc2VyXFxuICAgICAqL1xcbiAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxcbiAgICBjb25zdCBwcm94eVVzZXIgPSAoaWQ6IG51bWJlcikgPT4ge1xcbiAgICAgIGxvYWRlci5zdGF0dXMgPSB0cnVlO1xcbiAgICAgIGxvYWRlci50ZXh0ID0gJ1Byb3h5IExvZ2luJztcXG4gICAgICBjb25zdCBlbmRwb2ludCA9IGAvcHJveHktb3JnYW5pc2F0aW9uLyR7aWR9YDtcXG5cXG4gICAgICBheGlvcy5nZXQoZW5kcG9pbnQpLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG5cXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XFxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzJyk7XFxuICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd2YWxpZGF0aW5nQWN0aXZpdGllcycpO1xcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWN0aXZpdHlWYWxpZGF0aW5nJyk7XFxuICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFZhbGlkYXRpb24nLCBmYWxzZSk7XFxuXFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xcbiAgICAgICAgICB9LCAxMDAwKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSBmYWxzZTtcXG4gICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBTb3J0aW5nIEJ5IHVwZGF0ZSBvblxcbiAgICAgKi9cXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICBsZXQgcXVlcnkgPSAnJyxcXG4gICAgICBkZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjZW5kaW5nJyxcXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgICAgc29ydERpcmVjdGlvbiA9ICdkZXNjJztcXG5cXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcblxcbiAgICBsZXQgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIGxldCBvcmRlclR5cGUgPSByZWYoJycpO1xcbiAgICBvcmRlclR5cGUudmFsdWUgPSB1cmxQYXJhbXMuZ2V0KCdvcmRlckJ5JykgPz8gJyc7XFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgbGV0IHJhbmdlID0gJyc7XFxuXFxuICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSAoKSA9PiB7XFxuICAgICAgcmV0dXJuIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzb3J0QnkgPSBhc3luYyAob3JkZXIpID0+IHtcXG4gICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xcbiAgICAgIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xcbiAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID1cXG4gICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XFxuICAgICAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgICAgIHNvcnREaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuXFxuICAgICAgICBsZXQgc3RhcnREYXRlID0gdXJsUGFyYW1zLmdldCgnc3RhcnRfZGF0ZScpID8/IGZhbHNlO1xcbiAgICAgICAgbGV0IGVuZERhdGUgPSB1cmxQYXJhbXMuZ2V0KCdlbmRfZGF0ZScpID8/IGZhbHNlO1xcblxcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XFxuICAgICAgICAgIHJhbmdlID0gYCZzdGFydF9kYXRlPSR7c3RhcnREYXRlfSZlbmRfZGF0ZT0ke2VuZERhdGV9YDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgYXdhaXQgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XFxuICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIHdhdGNoKFxcbiAgICAgICgpID0+IFtcXG4gICAgICAgIGZpbHRlci5jb3VudHJ5LFxcbiAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyxcXG4gICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSxcXG4gICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSxcXG4gICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UsXFxuICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcXG4gICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcXG4gICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXFxuICAgICAgXSxcXG4gICAgICAoKSA9PiB7XFxuICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigpO1xcbiAgICAgIH0sXFxuICAgICAgeyBkZWVwOiB0cnVlIH1cXG4gICAgKTtcXG5cXG4gICAgY29uc3QgcmVzZXRBbGxGaWx0ZXJzID0gKCkgPT4ge1xcbiAgICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xcbiAgICAgICAgZmlsdGVyLmNvdW50cnkgPSBbXTtcXG4gICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnO1xcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xcbiAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gJ2NyZWF0ZWRfYXQnO1xcbiAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XFxuICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbiAgICAgIH0pO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBpc0ZpbHRlckFwcGxpZWQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICAgICAgcmV0dXJuIChcXG4gICAgICAgIGZpbHRlci5jb3VudHJ5Lmxlbmd0aCArXFxuICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGggK1xcbiAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aCAhPVxcbiAgICAgICAgICAwIHx8XFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzICE9PSAnJyB8fFxcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlICE9PSAnJyB8fFxcbiAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICE9PSAnJyAmJiBmaWx0ZXIuZW5kX2RhdGUgIT09ICcnKVxcbiAgICAgICk7XFxuICAgIH0pO1xcblxcbiAgICBjb25zdCByZWZyZXNoU3RhdHVzQXJyYXlzID0gKG9yZ0RhdGEpID0+IHtcXG4gICAgICBmb3IgKGxldCBvcmdEYXR1bSBvZiBvcmdEYXRhLmRhdGEpIHtcXG4gICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW29yZ0RhdHVtLmlkXSA9XFxuICAgICAgICAgIG9yZ0RhdHVtPy5zZXR0aW5ncz8ucHVibGlzaGluZ19pbmZvPy50b2tlbl92ZXJpZmljYXRpb24gPz8gZmFsc2U7XFxuICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbb3JnRGF0dW0uaWRdID0gY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZChcXG4gICAgICAgICAgb3JnRGF0dW0gPyBvcmdEYXR1bS5zZXR0aW5ncyA6IGZhbHNlXFxuICAgICAgICApO1xcbiAgICAgIH1cXG4gICAgfTtcXG5cXG4gICAgY29uc3QgY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCA9IChzZXR0aW5ncykgPT4ge1xcbiAgICAgIGlmIChzZXR0aW5ncykge1xcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5kZWZhdWx0X3ZhbHVlcztcXG4gICAgICAgIGxldCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlcztcXG4gICAgICAgIHJldHVybiAhIShcXG4gICAgICAgICAgKGRlZmF1bHRWYWx1ZXM/LmRlZmF1bHRfY3VycmVuY3kgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChkZWZhdWx0VmFsdWVzPy5kZWZhdWx0X2xhbmd1YWdlID8/IGZhbHNlKSAmJlxcbiAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5oaWVyYXJjaHkgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/LmJ1ZGdldF9ub3RfcHJvdmlkZWQgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSBudWxsIHx8XFxuICAgICAgICAgICAgYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5odW1hbml0YXJpYW4gIT0gJycgfHxcXG4gICAgICAgICAgICBhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSBmYWxzZSlcXG4gICAgICAgICk7XFxuICAgICAgfVxcblxcbiAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0RGF0ZVJhbmdlRGF0ZSA9IChzdGFydERhdGUsIGVuZERhdGUsIHNlbGVjdGVkRGF0ZUZpbHRlciA9ICcnKSA9PiB7XFxuICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XFxuICAgICAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGVGaWx0ZXI7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldERhdGVUeXBlID0gKGRhdGVUeXBlKSA9PiB7XFxuICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCByb3RhdGVDbGFzcyA9IHJlZignJyk7XFxuXFxuICAgIGNvbnN0IHRvZ2dsZVNob3dNdWx0aVNlbGVjdCA9IChldmVudCkgPT4ge1xcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgIGNvbnN0IHJlY3QgPSBldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XFxuICAgICAgbXVsdGlzZWxlY3RTdHlsZS52YWx1ZSA9IHtcXG4gICAgICAgIHRvcDogTnVtYmVyKHJlY3QudG9wKSA8IDEwMCA/IDIxMCArICdweCcgOiBOdW1iZXIocmVjdC50b3ApICsgNTAgKyAncHgnLFxcbiAgICAgICAgbGVmdDogTnVtYmVyKHJlY3QubGVmdCkgKyAncHgnLFxcbiAgICAgIH07XFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9ICFzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXRTZWxlY3RlZFB1Ymxpc2hlciA9IChwdWJsaXNoZXJUeXBlcykgPT4ge1xcbiAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IHB1Ymxpc2hlclR5cGVzO1xcbiAgICB9O1xcblxcbiAgICAvKlxcbiAgICAgKiBGb3IgbWFwcGluZyBjb3VudHJ5LCBwdWJsaXNoZXJfdHlwZSBhbmQgZGF0YSBsaWNlbnNlXFxuICAgICAqL1xcbiAgICBjb25zdCBzaG93TWFwcGVkRGF0YSA9IChrZXksIGRhdGEsIG1hcCkgPT4ge1xcbiAgICAgIGlmIChkYXRhKSB7XFxuICAgICAgICBpZiAoa2V5ID09ICdkYXRhX2xpY2Vuc2UnKSB7XFxuICAgICAgICAgIGxldCBsaWNlbnNlID0gZGF0YVtrZXldO1xcbiAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZT8udHJpbSgpO1xcbiAgICAgICAgICByZXR1cm4gbGljZW5zZSA/IG1hcFtsaWNlbnNlXSA6ICdOb3QgYXZhaWxhYmxlJztcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBkYXRhW2tleV0gPyBtYXBbZGF0YVtrZXldXSA6ICdOb3QgYXZhaWxhYmxlJztcXG4gICAgICB9XFxuICAgICAgcmV0dXJuICdOb3QgYXZhaWxhYmxlJztcXG4gICAgfTtcXG5cXG4gICAgcmV0dXJuIHtcXG4gICAgICBCdG5Db21wb25lbnQsXFxuICAgICAgTXVsdGlzZWxlY3QsXFxuICAgICAgRGF0ZVJhbmdlV2lkZ2V0LFxcbiAgICAgIE11bHRpU2VsZWN0V2l0aFNlYXJjaCxcXG4gICAgICBvcmdhbmlzYXRpb25EYXRhLFxcbiAgICAgIGRyb3Bkb3duUmFuZ2UsXFxuICAgICAgc2V0U2VsZWN0ZWRQdWJsaXNoZXIsXFxuICAgICAgdG9nZ2xlU2hvd011bHRpU2VsZWN0LFxcbiAgICAgIHNldERhdGVUeXBlLFxcbiAgICAgIHNldERhdGVSYW5nZURhdGUsXFxuICAgICAgc29ydEJ5LFxcbiAgICAgIHJlc2V0QWxsRmlsdGVycyxcXG4gICAgICBzb3J0aW5nRGlyZWN0aW9uLFxcbiAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uLFxcbiAgICAgIHByb3h5VXNlcixcXG4gICAgICBkYXRlRm9ybWF0LFxcbiAgICAgIGZldGNoT3JnYW5pc2F0aW9uLFxcbiAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1cyxcXG4gICAgICByZWdpc3RyeUFwaUtleVN0YXR1cyxcXG4gICAgICBvcmRlclR5cGUsXFxuICAgICAgY2xlYXJEYXRlLFxcbiAgICAgIGZpbHRlcixcXG4gICAgICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcXG4gICAgICBpc0ZpbHRlckFwcGxpZWQsXFxuICAgICAgcHJvcHMsXFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCxcXG4gICAgICBkYXRlVHlwZSxcXG4gICAgICByb3RhdGVDbGFzcyxcXG4gICAgICBtdWx0aXNlbGVjdFN0eWxlLFxcbiAgICAgIGNsZWFyRGF0ZUZpbHRlcixcXG4gICAgICBkYXRlRHJvcGRvd24sXFxuICAgICAgc29ydFBhcmFtcyxcXG4gICAgICByZXNldFBhZ2luYXRpb24sXFxuICAgICAgc2hvd01hcHBlZERhdGEsXFxuICAgICAgdG90YWxPcmdhbmlzYXRpb24sXFxuICAgICAgY291bnRyaWVzV2l0aFByZWZpeCxcXG4gICAgICBkZWxldGVNb2RhbCxcXG4gICAgICBkZWxldGVPcmdOYW1lLFxcbiAgICAgIGRlbGV0ZUlkLFxcbiAgICAgIGdlbmVyYXRlTGFiZWwsXFxuICAgICAgdG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uLFxcbiAgICAgIG9wZW5EZWxldGVNb2RhbCxcXG4gICAgICBkZWxldGVPcmcsXFxuICAgICAgbWFya0FzU3BhbSxcXG4gICAgICBzaG93TG9hZGVyLFxcbiAgICB9O1xcbiAgfSxcXG59KTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGU+XFxuLm11bHRpc2VsZWN0LWxvb2thbGlrZS13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDU7XFxuICB3aWR0aDogNDI0cHg7XFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbn1cXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgd2lkdGg6IDE2MHB4ICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwYWRkaW5nOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbkBrZXlmcmFtZXMgc3Bpbm5lci0wNjExZDlmMCB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLTA2MTFkOWYwO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFpdENBO0FBQ0U7SUFDRSxrREFBa0Q7QUFDcEQ7QUFDQTtJQUNFLG9EQUFvRDtBQUN0RDtBQUNGO0FBRUE7RUFDRSxnREFBdUM7RUFDdkMsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC02IHB5LTQgbWQ6cHgtMTBcXFwiPlxcbiAgICA8TG9hZGVyIHYtaWY9XFxcImlzTG9hZGVyVmlzaWJsZVxcXCIgLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXktNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg0IGNsYXNzPVxcXCJtci00IHRleHQtM3hsIGZvbnQtYm9sZCB4bDp0ZXh0LWhlYWRpbmctNFxcXCI+VXNlcnM8L2g0PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtY29sIGl0ZW1zLWVuZCBqdXN0aWZ5LWVuZCBnYXAtMiBtZDpmbGV4LXJvd1xcXCI+XFxuICAgICAgICA8VG9hc3RcXG4gICAgICAgICAgdi1pZj1cXFwiXFxuICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgJiZcXG4gICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSAmJlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlICE9PSAnJ1xcbiAgICAgICAgICBcXFwiXFxuICAgICAgICAgIDptZXNzYWdlPVxcXCJ0b2FzdERhdGEubWVzc2FnZVxcXCJcXG4gICAgICAgICAgOnR5cGU9XFxcInRvYXN0RGF0YS50eXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgdi1pZj1cXFwidXNlcnNEYXRhWyd0b3RhbCddID4gMFxcXCJcXG4gICAgICAgICAgcmVmPVxcXCJkcm9wZG93bkJ0blxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImJ1dHRvbiBzZWNvbmRhcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJkb3dubG9hZEFsbFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiZG93bmxvYWQtZmlsZVxcXCIgLz5cXG4gICAgICAgICAge3sgY2hlY2tsaXN0Lmxlbmd0aCA9PT0gMCA/ICdEb3dubG9hZCBBbGwnIDogJycgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XFxuICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gdHJ1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtYmFzZVxcXCIgaWNvbj1cXFwicGx1cy1vdXRsaW5lZFxcXCIgLz4gQWRkIGEgbmV3XFxuICAgICAgICAgIHt7IHVzZXJSb2xlID09PSAnYWRtaW4nID8gJ3VzZXInIDogJ2lhdGkgYWRtaW4nIH19XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXY+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImFkZFVzZXJGb3JtIHx8IGVkaXRVc2VyRm9ybVxcXCJcXG4gICAgICAgIEBjbG9zZT1cXFwiXFxuICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICBhZGRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICAgIGVkaXRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICB9XFxuICAgICAgICBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwicG9wdXAtbW9kZWxcXFwiXFxuICAgICAgICAgIEBrZXl1cC5lbnRlcj1cXFwiYWRkVXNlckZvcm0gPyBjcmVhdGVVc2VyKCkgOiB1cGRhdGVVc2VyKClcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLTUgdGV4dC0yeGwgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsXFxcIj5cXG4gICAgICAgICAgICB7eyBhZGRVc2VyRm9ybSA/ICdBZGQgYSBuZXcgJyA6ICdFZGl0ICcgfX1cXG4gICAgICAgICAgICB7eyB1c2VyUm9sZSA9PT0gJ2FkbWluJyA/ICd1c2VyJyA6ICdJQVRJIEFkbWluJyB9fVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNlxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNwYW4tMiBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5GdWxsIE5hbWU8c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJmdWxsX25hbWVcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLmZ1bGxfbmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2Z1bGxfbmFtZSddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ2Z1bGxfbmFtZSddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZnVsbF9uYW1lJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPlVzZXJuYW1lPHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICo8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJ1c2VybmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEudXNlcm5hbWVcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3VzZXJuYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5FbWFpbDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5lbWFpbFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJlbWFpbFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ2VtYWlsJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydlbWFpbCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWlmPVxcXCJhZGRVc2VyRm9ybVxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwiZm9ybUVycm9yWydzdGF0dXMnXSAmJiAnZXJyb3JfX211bHRpc2VsZWN0J1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID5TdGF0dXM8c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnc3RhdHVzJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydzdGF0dXMnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdhZG1pbidcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImZvcm1FcnJvclsncm9sZV9pZCddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPlJvbGU8c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJyb2xlXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5yb2xlX2lkXFxcIlxcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicm9sZXNcXFwiXFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgdXNlciByb2xlXFxcIlxcbiAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3JvbGVfaWQnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3JvbGVfaWQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+TmV3IHBhc3N3b3JkPHNwYW4gdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCIgY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwicGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydwYXNzd29yZCddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+Q29uZmlybSBQYXNzd29yZDxzcGFuXFxuICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcblxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJwYXNzd29yZC1jb25maXJtYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbiddXFxuICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItY3JpbXNvbi01MCdcXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbiddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInNlY29uZGFyeS1idG4gZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBDYW5jZWxcXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBTYXZlXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9Qb3B1cE1vZGFsPlxcbiAgICAgIDxQb3B1cE1vZGFsXFxuICAgICAgICA6bW9kYWwtYWN0aXZlPVxcXCJkZWxldGVNb2RhbFxcXCJcXG4gICAgICAgIEBjbG9zZT1cXFwiXFxuICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICBkZWxldGVNb2RhbCA9IGZhbHNlO1xcbiAgICAgICAgICB9XFxuICAgICAgICBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwidGl0bGUgbWItNiBmbGV4XFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcIm1yLTEgbXQtMC41IHRleHQtbGcgdGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJkZWxldGVcXFwiIC8+XFxuICAgICAgICAgIDxiPkRlbGV0ZSB1c2VyPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGI+IHt7IGRlbGV0ZVVzZXJuYW1lIH19PC9iXFxuICAgICAgICAgID4/XFxuICAgICAgICA8L3A+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBkZWxldGVNb2RhbCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIENhbmNlbFxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZVVzZXIoZGVsZXRlSWQpXFxcIj5cXG4gICAgICAgICAgICBEZWxldGVcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuXFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcInN0YXR1c01vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIHN0YXR1c01vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8Yj5NYWtlIHVzZXIge3sgc3RhdHVzVmFsdWUgPyAnSW5hY3RpdmUnIDogJ0FjdGl2ZScgfX08L2I+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJyb3VuZGVkLWxnIGJnLXJvc2UgcC00XFxcIj5cXG4gICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIG1ha2UgPGI+IHt7IHN0YXR1c1VzZXJuYW1lIH19PC9iPlxcbiAgICAgICAgICB7eyBzdGF0dXNWYWx1ZSA/ICdJbmFjdGl2ZScgOiAnQWN0aXZlJyB9fSA/XFxuICAgICAgICA8L3A+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzdGF0dXNNb2RhbCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIENhbmNlbFxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVVc2VyU3RhdHVzKHN0YXR1c0lkKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIFllc1xcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmaWx0ZXJzIG1iLTQgZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC0yXFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInNlbGVjdCBmaWx0ZXJzIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidy0xMCB0ZXh0LWxnXFxcIiBpY29uPVxcXCJmdW5uZWxcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdzdXBlcmFkbWluJyB8fCB1c2VyUm9sZSA9PT0gJ2lhdGlfYWRtaW4nXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnb3JnYW5pc2F0aW9uJylcXFwiXFxuICAgICAgICAgICAgPjxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcIm9yZ2FuaXphdGlvbi1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcIm9yZ2FuaXphdGlvbnNcXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiT1JHQU5JU0FUSU9OXFxcIlxcbiAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICBsYWJlbD1cXFwibmFtZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdyb2xlJylcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgIGlkPVxcXCJyb2xlLWZpbHRlclxcXCJcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5yb2xlc1xcXCJcXG4gICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJyb2xlc1xcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJST0xFXFxcIlxcbiAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIucm9sZXMubGVuZ3RoID4gMFxcXCIgY2xhc3M9XFxcInN0YXR1c1xcXCI+XFxuICAgICAgICAgICAgICA8IS0tIHBsYWNlaG9sZGVyIC0tPlxcbiAgICAgICAgICAgICAgPCEtLSByb2xlIC0tPlxcbiAgICAgICAgICAgIDwvc3Bhbj48L3NwYW5cXG4gICAgICAgICAgPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnc3RhdHVzJylcXFwiXFxuICAgICAgICAgICAgPjxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcInN0YXR1cy1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTVEFUVVNcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0zIHNwYWNlLXgtMiBweC00IDJ4bDp3LWF1dG9cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwib3Blbi10ZXh0IGgtWzM4cHhdXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIGxlZnQtMiB0b3AtMS8yIHctMTAgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJtYWduaWZ5aW5nLWdsYXNzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucVxcXCJcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VhcmNoIGZvciB1c2Vyc1xcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcblxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcImlzRmlsdGVyQXBwbGllZFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJtYi00IGZsZXggbWF4LXctZnVsbCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTQwXFxcIj5maWx0ZXJlZCBieTogPC9zcGFuPlxcblxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5sZW5ndGhcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLm9yZ2FuaXphdGlvblxcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5Pcmc6PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdvcmcnKSB9fTwvc3BhblxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5vcmdhbml6YXRpb24uc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIucm9sZXMubGVuZ3RoXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIucm9sZXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+Um9sZXM6PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdyb2xlcycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnJvbGVzLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHNwYW4gdi1pZj1cXFwiZmlsdGVyLnN0YXR1cy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+U3RhdHVzOjwvc3BhblxcbiAgICAgICAgICAgID48c3Bhbj57eyB0ZXh0QnViYmxlZGF0YShpdGVtLCAnc3RhdHVzJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGZpbHRlci5zdGF0dXMgPSAnJztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIHYtaWY9XFxcImZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5EYXRlOjwvc3BhblxcbiAgICAgICAgICAgID48c3Bhbj57e1xcbiAgICAgICAgICAgICAgdGV4dEJ1YmJsZWRhdGEoXFxuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlcixcXG4gICAgICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyXFxuICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGNsZWFyRGF0ZUZpbHRlcigpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICBjbGFzcz1cXFwiZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICBjbGVhckZpbHRlcigpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICBDbGVhciBGaWx0ZXJcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxwIGNsYXNzPVxcXCJweS0xXFxcIj5Ub3RhbCBOdW1iZXIgb2YgVXNlcnM6IHt7IHRvdGFsVXNlciB9fTwvcD5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGUgdXNlci1saXN0LXRhYmxlIHRleHQtbi00MFxcXCI+XFxuICAgICAgICA8dGFibGU+XFxuICAgICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAndXNlcm5hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3VzZXJuYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCd1c2VybmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+VXNlcnM8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcIm1lYXN1cmVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMjEwcHhcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5FbWFpbDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuXFxuICAgICAgICAgICAgICA8dGggdi1pZj1cXFwiaXNTdXBlcmFkbWluXFxcIiBpZD1cXFwidGl0bGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9PT0gJ3B1Ymxpc2hlcl9uYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtZGVzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1hc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgncHVibGlzaGVyX25hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgICAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbiBuYW1lPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuPlVzZXIgUm9sZTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGg+XFxuICAgICAgICAgICAgICAgIDxzcGFuPlN0YXR1czwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGhcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImFnZ3JlZ2F0aW9uX3N0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICBzY29wZT1cXFwiY29sXFxcIlxcbiAgICAgICAgICAgICAgICB3aWR0aD1cXFwiMjA4cHhcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnZGVzYycgJiZcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAnY3JlYXRlZF9hdCdcXG4gICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdjcmVhdGVkX2F0JylcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgnbGFzdF9sb2dnZWRfaW4nKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ3aGl0ZXNwYWNlLW5vd3JhcFxcXCI+TGFzdCBMb2dpbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGhcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgIT09ICdnZW5lcmFsX3VzZXInXFxcIlxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWN0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICBzY29wZT1cXFwiY29sXFxcIlxcbiAgICAgICAgICAgICAgICB3aWR0aD1cXFwiMTkwcHhcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkFjdGlvbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgQGNsaWNrPVxcXCJ0b2dnbGVTZWxlY3RhbGxcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90aGVhZD5cXG4gICAgICAgICAgPHRib2R5IHYtaWY9XFxcInVzZXJzRGF0YT8uZGF0YS5sZW5ndGggPiAwIHx8IGZldGNoaW5nVGFibGVEYXRhXFxcIj5cXG4gICAgICAgICAgICA8dHIgdi1pZj1cXFwiZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPkZldGNoaW5nIERhdGEuLi48L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgPHRyIHYtZm9yPVxcXCIodXNlciwgaW5kZXgpIGluIHVzZXJzRGF0YT8uZGF0YVxcXCIgdi1lbHNlIDprZXk9XFxcImluZGV4XFxcIj5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIGNhcGl0YWxpemUgdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2Z1bGxfbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyB1c2VyWyd1c2VybmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImZsZXggc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1zLTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ2VtYWlsX3ZlcmlmaWVkX2F0J11cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrLW91dGxpbmUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYWxlcnQtb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCIuLi4gdHJ1bmNhdGVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2VtYWlsJ10gfX1cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCB2LWlmPVxcXCJpc1N1cGVyYWRtaW5cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ25hbWUnXSB9fVxcbiAgICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy01MlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyByb2xlc1t1c2VyWydyb2xlX2lkJ11dIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIDpjbGFzcz1cXFwidXNlclsnc3RhdHVzJ10gPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtbi00MCdcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyB1c2VyWydzdGF0dXMnXSA/ICdBY3RpdmUnIDogJ0luYWN0aXZlJyB9fVxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICB1c2VyWydsYXN0X2xvZ2dlZF9pbiddXFxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdERhdGUodXNlclsnbGFzdF9sb2dnZWRfaW4nXSlcXG4gICAgICAgICAgICAgICAgICAgIDogJ05vdCBhdmFpbGFibGUnXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBzcGFjZS14LTZcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIHYtaWY9XFxcImN1cnJlbnRVc2VySWQgIT09IHVzZXJbJ2lkJ11cXFwiIEBjbGljaz1cXFwiZWRpdFVzZXIodXNlcilcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwiZWRpdC1hY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8IS0tIDxwIEBjbGljaz1cXFwiZGVsZXRlVXNlcih1c2VyWydpZCddKVxcXCI+IC0tPlxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtaWY9XFxcImN1cnJlbnRVc2VySWQgIT09IHVzZXJbJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJvcGVuRGVsZXRlbW9kZWwodXNlcilcXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIiBpY29uPVxcXCJkZWxldGVcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJjdXJyZW50VXNlcklkICE9PSB1c2VyWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwib3BlblN0YXR1c01vZGVsKHVzZXIpXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwidXNlclsnc3RhdHVzJ10gPyAnYmctc3ByaW5nLTUwJyA6ICdiZy1uLTQwJ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJyZWxhdGl2ZSBibG9jayBoLTQgdy03IGN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ3N0YXR1cyddID8gJ3RyYW5zbGF0ZS14LTAnIDogJ3RyYW5zbGF0ZS14LWZ1bGwnXFxuICAgICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIGxlZnQtWzJweF0gdG9wLTEvMiBibG9jayBoLTMgdy0zIC10cmFuc2xhdGUteS0xLzIgcm91bmRlZC1mdWxsIGJnLXdoaXRlIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJzcGFjZS0yXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJjdXJyZW50VXNlcklkICE9PSB1c2VyWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJyZWxhdGl2ZSBoLTUgdy01XFxcIlxcbiAgICAgICAgICAgICAgICAgID48aW5wdXRcXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ1c2VyLWNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwidXNlclsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInBzZXVkby1jaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGlja2VkLXN2ZyB0ZXh0LXNwcmluZy01MFxcXCIgaWNvbj1cXFwidGlja2VkXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgIDx0Ym9keSB2LWVsc2U+XFxuICAgICAgICAgICAgPHRkIHYtaWY9XFxcImxvYWRlclxcXCIgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInNwaW5cXFwiPjwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIHYtZWxzZSBjb2xzcGFuPVxcXCI4XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlVzZXJzIG5vdCBmb3VuZDwvdGQ+XFxuICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICA8L3RhYmxlPlxcbiAgICAgIDwvZGl2PlxcblxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTZcXFwiPlxcbiAgICAgICAgPFBhZ2luYXRpb25cXG4gICAgICAgICAgdi1pZj1cXFwidXNlcnNEYXRhICYmIHVzZXJzRGF0YVsnbGFzdF9wYWdlJ10gPiAxXFxcIlxcbiAgICAgICAgICA6ZGF0YT1cXFwidXNlcnNEYXRhXFxcIlxcbiAgICAgICAgICBAZmV0Y2gtYWN0aXZpdGllcz1cXFwiZmV0Y2hVc2Vyc0xpc3RcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIHJlYWN0aXZlLCByZWYsIGNvbXB1dGVkLCB3YXRjaCwgb25Nb3VudGVkIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgTG9hZGVyIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZSc7XFxuaW1wb3J0IFRvYXN0IGZyb20gJ0NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZSc7XFxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcXG5pbXBvcnQgUG9wdXBNb2RhbCBmcm9tICdDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlJztcXG5pbXBvcnQgZW5jcnlwdCBmcm9tICdDb21wb3NhYmxlL2VuY3J5cHRpb24nO1xcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJ0NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZSc7XFxuaW1wb3J0IHsgd2F0Y2hJZ25vcmFibGUgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xcbmltcG9ydCBEYXRlUmFuZ2VXaWRnZXQgZnJvbSAnQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlJztcXG5pbXBvcnQgeyBnZW5lcmF0ZVVzZXJuYW1lLCBrZWJhYkNhc2VUb1NuYWtlY2FzZSB9IGZyb20gJ0NvbXBvc2FibGUvdXRpbHMnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgb3JnYW5pemF0aW9uczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgcm9sZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgY3VycmVudFVzZXJJZDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICB1c2VyUm9sZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICBvbGRlc3REYXRlczogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXFxufSk7XFxuXFxuY29uc3QgdG9hc3REYXRhID0gcmVhY3RpdmUoe1xcbiAgdmlzaWJpbGl0eTogZmFsc2UsXFxuICBtZXNzYWdlOiAnJyxcXG4gIHR5cGU6IGZhbHNlLFxcbn0pO1xcblxcbmNvbnN0IGZpbHRlciA9IHJlYWN0aXZlKHtcXG4gIG9yZ2FuaXphdGlvbjogW10sXFxuICByb2xlczogW10sXFxuICBzdGF0dXM6ICcnLFxcbiAgb3JkZXJCeTogJycsXFxuICBkaXJlY3Rpb246ICcnLFxcbiAgcTogJycsXFxuICBzdGFydF9kYXRlOiAnJyxcXG4gIGVuZF9kYXRlOiAnJyxcXG4gIGRhdGVfdHlwZTogJ2NyZWF0ZWRfYXQnLFxcbiAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxcbn0pO1xcblxcbmNvbnN0IGlzTG9hZGVyVmlzaWJsZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgYWRkVXNlckZvcm0gPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVkaXRVc2VyRm9ybSA9IHJlZihmYWxzZSk7XFxuY29uc3QgdXNlcnNEYXRhID0gcmVhY3RpdmUoeyBkYXRhOiBbXSB9KTtcXG5jb25zdCBpc0VtcHR5ID0gcmVmKHRydWUpO1xcbmNvbnN0IGFsbFNlbGVjdGVkID0gcmVmPGJvb2xlYW5bXT4oW10pO1xcbmNvbnN0IGRlbGV0ZU1vZGFsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBkZWxldGVJZCA9IHJlZigpO1xcbmNvbnN0IHRvdGFsVXNlciA9IHJlZigwKTtcXG5jb25zdCBzdGF0dXNJZCA9IHJlZigpO1xcbmNvbnN0IHN0YXR1c01vZGFsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzdGF0dXNWYWx1ZSA9IHJlZigpO1xcbmNvbnN0IHN0YXR1c1VzZXJuYW1lID0gcmVmKCk7XFxuY29uc3QgZGVsZXRlVXNlcm5hbWUgPSByZWYoKTtcXG5jb25zdCBsb2FkZXIgPSByZWYodHJ1ZSk7XFxuY29uc3QgZmV0Y2hpbmdUYWJsZURhdGEgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNlbGVjdGVkSWRzID0gcmVmKHt9KTtcXG5jb25zdCBjaGVja2xpc3QgPSByZWYoW10pO1xcbmNvbnN0IGN1cnJlbnRwYWdlRGF0YSA9IHJlZihbXSk7XFxuY29uc3QgY2xlYXJEYXRlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlZGl0VXNlcklkID0gcmVmKCcnKTtcXG5jb25zdCBkYXRlVHlwZSA9IHJlZignQWxsIFRpbWUnKTtcXG5jb25zdCBpc1N1cGVyYWRtaW4gPSByZWYoZmFsc2UpO1xcbmlzU3VwZXJhZG1pbi52YWx1ZSA9XFxuICBwcm9wcy51c2VyUm9sZSA9PT0gJ3N1cGVyYWRtaW4nIHx8IHByb3BzLnVzZXJSb2xlID09PSAnaWF0aV9hZG1pbic7XFxuXFxuY29uc3QgZHJvcGRvd25SYW5nZSA9IHtcXG4gIGNyZWF0ZWRfYXQ6ICdVc2VyIGNyZWF0ZWQgZGF0ZScsXFxuICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZScsXFxufTtcXG5cXG5jb25zdCBmb3JtRGF0YSA9IHJlYWN0aXZlKHtcXG4gIHVzZXJuYW1lOiAnJyxcXG4gIGZ1bGxfbmFtZTogJycsXFxuICBlbWFpbDogJycsXFxuICBzdGF0dXM6ICcxJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5cXG5jb25zdCBmb3JtRXJyb3IgPSByZWFjdGl2ZSh7XFxuICB1c2VybmFtZTogJycsXFxuICBmdWxsX25hbWU6ICcnLFxcbiAgZW1haWw6ICcnLFxcbiAgc3RhdHVzOiAnJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5cXG5jb25zdCBpc0ZpbHRlckFwcGxpZWQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICByZXR1cm4gKFxcbiAgICBmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aCArIGZpbHRlci5yb2xlcy5sZW5ndGggIT0gMCB8fFxcbiAgICBmaWx0ZXIuc3RhdHVzICE9ICcnIHx8XFxuICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGUpXFxuICApO1xcbn0pO1xcblxcbmNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gd2F0Y2hJZ25vcmFibGUodG9hc3REYXRhLCAoKSA9PiB1bmRlZmluZWQsIHtcXG4gIGZsdXNoOiAnc3luYycsXFxufSk7XFxuXFxud2F0Y2goXFxuICAoKSA9PiBmb3JtRGF0YS5mdWxsX25hbWUsXFxuICAoZnVsbG5hbWUpID0+IHtcXG4gICAgZm9ybURhdGEudXNlcm5hbWUgPSBnZW5lcmF0ZVVzZXJuYW1lKGZ1bGxuYW1lKTtcXG4gIH1cXG4pO1xcblxcbndhdGNoKFxcbiAgKCkgPT4gdG9hc3REYXRhLnZpc2liaWxpdHksXFxuICAoKSA9PiB7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XFxuICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcXG4gICAgfSwgMjAwMCk7XFxuICB9XFxuKTtcXG5cXG5jb25zdCBpZ25vcmVUb2FzdFVwZGF0ZSA9ICgpID0+IHtcXG4gIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xcbiAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xcbiAgfSk7XFxufTtcXG5cXG5jb25zdCBjbGVhckRhdGVGaWx0ZXIgPSAoKSA9PiB7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XFxufTtcXG5cXG5vbk1vdW50ZWQoKCkgPT4ge1xcbiAgbGV0IGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcXG4gIGlmIChmaWx0ZXJQYXJhbXMpIHtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICBsZXQga2V5ID0ga2ViYWJDYXNlVG9TbmFrZWNhc2UoZmlsdGVyUGFyYW1zW2ldWzBdKTtcXG4gICAgICBsZXQgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XFxuICAgICAgaWYgKFsncm9sZXMnLCAnb3JnYW5pemF0aW9uJ10uaW5jbHVkZXMoa2V5KSkge1xcbiAgICAgICAgZmlsdGVyW2tleV0ucHVzaCh2YWx1ZSk7XFxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XFxuICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn0pO1xcbmNvbnN0IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UgPSAoKSA9PiB7XFxuICBsZXQgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uaHJlZj8udG9TdHJpbmcoKTtcXG5cXG4gIGlmIChxdWVyeVN0cmluZykge1xcbiAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCc/JylbMV07XFxuXFxuICAgIGxldCBxdWVyeVBhcmFtc0luS2V5VmFsOiBvYmplY3RbXSA9IFtdO1xcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nPy5zcGxpdCgnJicpO1xcblxcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKTtcXG4gICAgICAgIGlmIChrZXkpIHtcXG4gICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlID8/ICcnXSk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xcbiAgfVxcblxcbiAgcmV0dXJuIGZhbHNlO1xcbn07XFxuXFxub25Nb3VudGVkKGFzeW5jICgpID0+IHtcXG4gIGF4aW9zLmdldChgL3VzZXJzL3BhZ2UvMWApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xcbiAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YVtpXS5yb2xlID0gcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGVcXG4gICAgICAgIC5zcGxpdCgnXycpXFxuICAgICAgICAuam9pbignICcpO1xcbiAgICB9XFxuICAgIE9iamVjdC5hc3NpZ24odXNlcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcXG4gICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XFxuICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xcbiAgfSk7XFxuXFxuICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcXG4gIH0sIDUwMDApO1xcbn0pO1xcblxcbmNvbnN0IHRleHRCdWJibGVkYXRhID0gKGlkLCBmaWVsZCkgPT4ge1xcbiAgc3dpdGNoIChmaWVsZCkge1xcbiAgICBjYXNlICdvcmcnOlxcbiAgICAgIHJldHVybiBwcm9wcy5vcmdhbml6YXRpb25zWytpZF07XFxuICAgIGNhc2UgJ3JvbGVzJzpcXG4gICAgICByZXR1cm4gcHJvcHMucm9sZXNbK2lkXTtcXG4gICAgY2FzZSAnc3RhdHVzJzpcXG4gICAgICByZXR1cm4gcHJvcHMuc3RhdHVzWytpZF07XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIGZpZWxkO1xcbiAgfVxcbn07XFxuXFxuY29uc3QgY2xlYXJGaWx0ZXIgPSAoKSA9PiB7XFxuICBmaWx0ZXIub3JnYW5pemF0aW9uID0gW107XFxuICBmaWx0ZXIucm9sZXMgPSBbXTtcXG4gIGZpbHRlci5zdGF0dXMgPSAnJztcXG4gIGZpbHRlci5kaXJlY3Rpb24gPSAnJztcXG4gIGZpbHRlci5vcmRlckJ5ID0gJyc7XFxuICBmaWx0ZXIucSA9ICcnO1xcbiAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XFxuICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xcbn07XFxuXFxuY29uc3QgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIgPSAoKSA9PiB7XFxuICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbn07XFxuXFxuY29uc3Qgc2V0RGF0ZVJhbmdlRGF0ZSA9IChzdGFydERhdGUsIGVuZERhdGUsIHNlbGVjdGVkRGF0ZSkgPT4ge1xcbiAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XFxuICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xcbiAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gc2VsZWN0ZWREYXRlO1xcbn07XFxuY29uc3Qgc2V0RGF0ZVR5cGUgPSAoZGF0ZVR5cGUpID0+IHtcXG4gIGZpbHRlci5kYXRlX3R5cGUgPSBkYXRlVHlwZTtcXG59O1xcblxcbmNvbnN0IGNyZWF0ZVVzZXIgPSAoKSA9PiB7XFxuICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xcbiAgbGV0IHBhc3N3b3JkRGF0YSA9IHtcXG4gICAgLy8gcGFzc3dvcmQ6IGVuY3J5cHQoZm9ybURhdGEucGFzc3dvcmQsIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJyksXFxuICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcXG4gICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXFxuICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXFxuICAgIC8vICksXFxuICAgIHBhc3N3b3JkOiBmb3JtRGF0YS5wYXNzd29yZCxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXFxuICB9O1xcblxcbiAgYXhpb3NcXG4gICAgLnBvc3QoJy91c2VyJywgeyAuLi5mb3JtRGF0YSwgLi4ucGFzc3dvcmREYXRhIH0pXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG4gICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICBzZXRGb3JtRXJyb3IocmVzLmRhdGEuZXJyb3JzKTtcXG5cXG4gICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xcbiAgICAgICAgY2xlYXJGaWx0ZXIoKTtcXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xcbiAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xcbiAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG5cXG5jb25zdCBlZGl0VXNlciA9ICh1c2VyKSA9PiB7XFxuICBmb3JtRGF0YS51c2VybmFtZSA9IHVzZXIudXNlcm5hbWU7XFxuICBmb3JtRGF0YS5mdWxsX25hbWUgPSB1c2VyLmZ1bGxfbmFtZTtcXG4gIGZvcm1EYXRhLmVtYWlsID0gdXNlci5lbWFpbDtcXG4gIGZvcm1EYXRhLnJvbGVfaWQgPSB1c2VyLnJvbGVfaWQ7XFxuICBlZGl0VXNlcklkLnZhbHVlID0gdXNlci5pZDtcXG4gIGVkaXRVc2VyRm9ybS52YWx1ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCBlbXB0eUZvcm1EYXRhID0gKCkgPT4ge1xcbiAgZm9yIChjb25zdCBrZXkgaW4gZm9ybURhdGEpIHtcXG4gICAgZm9ybURhdGFba2V5XSA9IGtleSA9PT0gJ3N0YXR1cycgPyAxIDogJyc7XFxuICB9XFxufTtcXG5jb25zdCBzZXRGb3JtRXJyb3IgPSAoZXJyb3JzID0ge30pID0+IHtcXG4gIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcXG4gICAgICBmb3JtRXJyb3Jba2V5XSA9IGVycm9yc1trZXldO1xcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRXJyb3IpIHtcXG4gICAgICBmb3JtRXJyb3Jba2V5XSA9ICcnO1xcbiAgICB9XFxuICB9XFxufTtcXG5cXG5jb25zdCBvcGVuU3RhdHVzTW9kZWwgPSAodXNlcikgPT4ge1xcbiAgc3RhdHVzSWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgc3RhdHVzVmFsdWUudmFsdWUgPSB1c2VyLnN0YXR1cztcXG4gIHN0YXR1c01vZGFsLnZhbHVlID0gdHJ1ZTtcXG4gIHN0YXR1c1VzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcXG59O1xcblxcbmNvbnN0IHVwZGF0ZVVzZXIgPSAoKSA9PiB7XFxuICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xcbiAgbGV0IHBhc3N3b3JkRGF0YSA9IHtcXG4gICAgLy8gcGFzc3dvcmQ6IGVuY3J5cHQoZm9ybURhdGEucGFzc3dvcmQsIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJyksXFxuICAgIC8vIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogZW5jcnlwdChcXG4gICAgLy8gICBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXFxuICAgIC8vICAgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnXFxuICAgIC8vICksXFxuICAgIHBhc3N3b3JkOiBmb3JtRGF0YS5wYXNzd29yZCxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sXFxuICB9O1xcblxcbiAgYXhpb3NcXG4gICAgLnBhdGNoKGAvdXNlci8ke2VkaXRVc2VySWQudmFsdWV9YCwgeyAuLi5mb3JtRGF0YSwgLi4ucGFzc3dvcmREYXRhIH0pXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICBzZXRGb3JtRXJyb3IocmVzLmRhdGEuZXJyb3JzKTtcXG5cXG4gICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xcbiAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcXG4gICAgICAgIGVkaXRVc2VySWQudmFsdWUgPSAnJztcXG4gICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xcbiAgICAgIGVkaXRVc2VySWQudmFsdWUgPSAnJztcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcblxcbndhdGNoKFxcbiAgKCkgPT4gW1xcbiAgICBmaWx0ZXIub3JnYW5pemF0aW9uLFxcbiAgICBmaWx0ZXIucm9sZXMsXFxuICAgIGZpbHRlci5xLFxcbiAgICBmaWx0ZXIuc3RhdHVzLFxcbiAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcXG4gICAgZmlsdGVyLmVuZF9kYXRlLFxcbiAgICBmaWx0ZXIuZGF0ZV90eXBlLFxcbiAgXSxcXG4gICgpID0+IHtcXG4gICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XFxuICB9LFxcbiAgeyBkZWVwOiB0cnVlIH1cXG4pO1xcblxcbmZ1bmN0aW9uIGZldGNoVXNlcnNMaXN0KGFjdGl2ZV9wYWdlOiBudW1iZXIsIGZpbHRlcmVkID0gZmFsc2UpIHtcXG4gIGxldCByb3V0ZSA9IGAvdXNlcnMvcGFnZS8ke2ZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2V9YDtcXG4gIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gdHJ1ZTtcXG4gIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XFxuXFxuICBmb3IgKGNvbnN0IGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XFxuICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0pIHtcXG4gICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIGF4aW9zXFxuICAgIC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xcbiAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xcbiAgICAgIHRvdGFsVXNlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWw7XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59XFxuXFxuY29uc3Qgb3BlbkRlbGV0ZW1vZGVsID0gKHVzZXIpID0+IHtcXG4gIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcXG4gIGRlbGV0ZUlkLnZhbHVlID0gdXNlci5pZDtcXG4gIGRlbGV0ZVVzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcXG59O1xcblxcbmZ1bmN0aW9uIGRlbGV0ZVVzZXIoaWQ6IG51bWJlcikge1xcbiAgZGVsZXRlTW9kYWwudmFsdWUgPSBmYWxzZTtcXG4gIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG5cXG4gIGF4aW9zLmRlbGV0ZShgL3VzZXIvJHtpZH1gKS50aGVuKChyZXMpID0+IHtcXG4gICAgaWYgKHJlcy5kYXRhLm1lc3NhZ2UpIHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG4gICAgfVxcblxcbiAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xcbiAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICB9XFxuICB9KTtcXG59XFxuXFxuY29uc3Qgc29ydCA9IChwYXJhbSkgPT4ge1xcbiAgZmlsdGVyLmRpcmVjdGlvbiA9XFxuICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdhc2MnICYmIGZpbHRlci5vcmRlckJ5ID09PSBwYXJhbSA/ICdkZXNjJyA6ICdhc2MnO1xcbiAgZmlsdGVyLm9yZGVyQnkgPSBwYXJhbTtcXG5cXG4gIGZldGNoVXNlcnNMaXN0KDEpO1xcbn07XFxuXFxuZnVuY3Rpb24gdG9nZ2xlVXNlclN0YXR1cyhpZDogbnVtYmVyKSB7XFxuICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xcbiAgc3RhdHVzTW9kYWwudmFsdWUgPSBmYWxzZTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wYXRjaChgL3VzZXIvc3RhdHVzLyR7aWR9YClcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIGlmIChyZXMuc3RhdHVzKSB7XFxuICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuXFxuICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufVxcblxcbmZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSkge1xcbiAgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQoJ0xMJyk7XFxufVxcblxcbmNvbnN0IHRvZ2dsZVNlbGVjdGFsbCA9ICgpID0+IHtcXG4gIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcCgodmFsdWUpID0+IHtcXG4gICAgcmV0dXJuIHZhbHVlWydpZCddO1xcbiAgfSk7XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZXJzRGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XFxuICAgIGlmICghY2hlY2tsaXN0LnZhbHVlLmluY2x1ZGVzKHVzZXJzRGF0YS5kYXRhW2ldWydpZCddKSlcXG4gICAgICBjaGVja2xpc3QudmFsdWVbY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCArIGldID0gdXNlcnNEYXRhLmRhdGFbaV1bJ2lkJ107XFxuICB9XFxuICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IGNoZWNrbGlzdC52YWx1ZTtcXG4gIGlmIChhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSkge1xcbiAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKFxcbiAgICAgIChuKSA9PiAhT2JqZWN0LnZhbHVlcyhjdXJyZW50cGFnZURhdGEudmFsdWUpLmluY2x1ZGVzKG4pXFxuICAgICk7XFxuICB9XFxuICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xcbiAgICByZXR1cm4gZWwgIT0gbnVsbDtcXG4gIH0pO1xcbiAgYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPVxcbiAgICAhYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV07XFxufTtcXG53YXRjaChcXG4gICgpID0+IGNoZWNrbGlzdC52YWx1ZSxcXG4gICgpID0+IHtcXG4gICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBbXTtcXG5cXG4gICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKCh2YWx1ZSkgPT4ge1xcbiAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcXG4gICAgfSk7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hlY2tsaXN0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgaWYgKGN1cnJlbnRwYWdlRGF0YS52YWx1ZS5pbmNsdWRlcyhjaGVja2xpc3QudmFsdWVbaV0pKSB7XFxuICAgICAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXVtpXSA9IGNoZWNrbGlzdC52YWx1ZVtpXTtcXG4gICAgICB9XFxuICAgIH1cXG4gICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBzZWxlY3RlZElkcy52YWx1ZVtcXG4gICAgICB1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXFxuICAgIF0uZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xcbiAgICAgIHJldHVybiBlbCAhPSBudWxsO1xcbiAgICB9KTtcXG4gIH1cXG4pO1xcblxcbmNvbnN0IGdlbmVyYXRlTGFiZWwgPSAobGFiZWwpID0+IHtcXG4gIHJldHVybiB7ICctLWxhYmVsJzogYCcke2xhYmVsfSdgIH07XFxufTtcXG5cXG5jb25zdCBkb3dubG9hZEFsbCA9ICgpID0+IHtcXG4gIGxldCByb3V0ZSA9IGAvdXNlcnMvZG93bmxvYWQvYDtcXG4gIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XFxuICBsZXQgYWxsUGFnZVNlbGVjdGVkO1xcbiAgYWxsUGFnZVNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyhzZWxlY3RlZElkcy52YWx1ZSkuZmxhdCgpO1xcblxcbiAgaWYgKGNoZWNrbGlzdC52YWx1ZS5sZW5ndGggPT0gMCkge1xcbiAgICBmb3IgKGNvbnN0IGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XFxuICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XFxuICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBwYXJhbXMuYXBwZW5kKCd1c2VycycsIGFsbFBhZ2VTZWxlY3RlZCk7XFxuICB9XFxuXFxuICBheGlvcy5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSkudGhlbigocmVzKSA9PiB7XFxuICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgIGxldCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xcbiAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxcbiAgICB9KTtcXG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XFxuICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xcbiAgICBsaW5rLmRvd25sb2FkID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnPScpWzFdO1xcbiAgICBsaW5rLmNsaWNrKCk7XFxuICB9KTtcXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuQGtleWZyYW1lcyBzcGlubmVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuLnNwaW46OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3Rpdml0eV9faGVhZGVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdG9wOiAwcHg7XFxuICB6LWluZGV4OiAxMDA7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdiBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciBuYXYgdWxbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCkge1xcbi5hY3Rpdml0eV9faGVhZGVyIC5hZGQtYnRuW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgLnVzZXItbmF2W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi50b2FzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHotaW5kZXg6IDUwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcbi50b2FzdC1lcnJvcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAxLjI1cmVtO1xcbiAgdG9wOiAxLjI1cmVtO1xcbiAgei1pbmRleDogNTA7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwLjc1cmVtO1xcbiAgei1pbmRleDogMjA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICBvcGFjaXR5OiAwO1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICByaWdodDogMi41cmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjc1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwYWRkaW5nOiAwLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHBhZGRpbmc6IDFyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGkgYVtkYXRhLXYtNmZlNTkwNTVdOmhvdmVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaSAudXNlci1wcm9maWxlW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZm9udC1zaXplOiAyNnB4O1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0W2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIC5kcm9wZG93bl9fbGlzdCBhW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2hbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMi41cmVtO1xcbiAgei1pbmRleDogMjA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2hbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjc1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcGFkZGluZzogMC43NXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGkgYVtkYXRhLXYtNmZlNTkwNTVdOmhvdmVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGkgLnVzZXItcHJvZmlsZVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGZvbnQtc2l6ZTogMjZweDtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggLmRyb3Bkb3duX19saXN0W2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3QgYVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyIC5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdLCBcXG4uZHJvcGRvd24tYnRuOmFjdGl2ZSAucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG59XFxuLmRyb3Bkb3duLWJ0bjpob3ZlciAuZHJvcGRvd25fX2Fycm93W2RhdGEtdi02ZmU1OTA1NV0sXFxuLmRyb3Bkb3duLWJ0bjphY3RpdmUgLmRyb3Bkb3duX19hcnJvd1tkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxufVxcbi5hZGQtaW1wb3J0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uYWRkLWltcG9ydC1kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5hZGQtaW1wb3J0OmhvdmVyIC5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbn1cXG4uc3Bpbm5lcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAxLjc1cmVtO1xcbiAgdG9wOiAwLjc1cmVtO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tNmZlNTkwNTUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGlubmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgYW5pbWF0aW9uOiBzcGluLTZmZTU5MDU1IDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiAxNXB4O1xcbiAgaGVpZ2h0OiAxNXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxRQUFBO0VBQ0EsWUFBQTtBQUFGO0FBRUU7RUFDRSxhQUFBO0FBQUo7QUFHTTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUdBO0VBQUEsYUFBQTtBQUFBO0FBSUY7QUFERjtJQUVJLGFBQUE7QUFESjtBQUNGO0FBSUk7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUlGO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtFQUNBLGdDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsY0FBQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0VBQUEsVUFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFERjtBQUdFO0FBTkY7SUFPSSxZQUFBO0FBQUY7QUFDRjtBQUdJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBRUU7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRjtFQUNFLGVBQUE7QUFDTjtBQUdJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBRUU7RUFBQSwwQkFBQTtBQUFBO0FBS0o7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7RUFBQSwwQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFIQTtBQUtBO0FBTkY7SUFPSSxZQUFBO0FBQ0Y7QUFDRjtBQUVJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBRUU7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRjtFQUNFLGVBQUE7QUFFTjtBQUVJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBRUU7RUFBQSwwQkFBQTtBQUFBO0FBT0Y7O0VBQUEsbUJBQUE7RUFBQSxVQUFBO0VBQ0EsMkJBQUE7QUFEQTtBQUdGOztFQUNFLHlCQUFBO0FBQ0o7QUFFQTtFQUNFLGVBQUE7QUFDRjtBQUNBO0VBQ0Usa0JBQUE7RUFDQSxVQUFBO0FBRUY7QUFBQTtFQUNFLDhCQUFBO0VBQ0EscUJBQUE7RUFDQSx3QkFBQTtBQUdGO0FBQ0U7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxZQUFBO0VBQUEscUJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSx5QkFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLDJDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHlEQUFBO0VBQUEseUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0FBSEFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFjdGl2aXR5X19oZWFkZXIge1xcbiAgdG9wOiAwcHg7XFxuICB6LWluZGV4OiAxMDA7XFxuXFxuICBuYXYge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcblxcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcXG4gICAgfVxcbiAgICB1bCB7XFxuICAgICAgQGFwcGx5IGZsZXg7XFxuICAgIH1cXG4gIH1cXG4gIC5hZGQtYnRuIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxuICAudXNlci1uYXYge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXI7XFxuICB9XFxufVxcbi50b2FzdCB7XFxuICBAYXBwbHkgYWJzb2x1dGUgIGxlZnQtMi80IHotNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuXFxuLnRvYXN0LWVycm9yIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSByaWdodC01IHRvcC01IHotNTA7XFxufVxcblxcbi5wcm9maWxlX19kcm9wZG93biB7XFxuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTMgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBvcGFjaXR5LTAgc2hhZG93LWRyb3Bkb3duIGR1cmF0aW9uLTMwMCBzbTpyaWdodC0xMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSAgcmlnaHQtMTAgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctZHJvcGRvd24gIGR1cmF0aW9uLTMwMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyLFxcbi5kcm9wZG93bi1idG46YWN0aXZlIHtcXG4gIC5wcm9maWxlX19kcm9wZG93biB7XFxuICAgIEBhcHBseSB2aXNpYmxlIG9wYWNpdHktMTAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XFxuICB9XFxuICAuZHJvcGRvd25fX2Fycm93IHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gIH1cXG59XFxuLmFkZC1pbXBvcnQge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uYWRkLWltcG9ydC1kcm9wZG93biB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uYWRkLWltcG9ydDpob3ZlciAuYWRkLWltcG9ydC1kcm9wZG93biB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcblxcbi5zcGlubmVyIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSByaWdodC03IHRvcC0zIGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICB3aWR0aDogMTVweDtcXG4gIGhlaWdodDogMTVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubWludXNbZGF0YS12LTFjNGE3YmI5XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiAwLjc1cmVtO1xcbiAgd2lkdGg6IDAuNzVyZW07XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ubWludXNbZGF0YS12LTFjNGE3YmI5XTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGhlaWdodDogMC4xMjVyZW07XFxuICB3aWR0aDogMC43NXJlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuI3B1Ymxpc2hpbmdfYWN0aXZpdGllc1tkYXRhLXYtMWM0YTdiYjldIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGJvdHRvbTogMHB4O1xcbiAgcmlnaHQ6IDBweDtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XFxufVxcbi5yb2xsaW5nW2RhdGEtdi0xYzRhN2JiOV0ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tMWM0YTdiYjkge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5yb2xsaW5nW2RhdGEtdi0xYzRhN2JiOV0ge1xcbiAgYW5pbWF0aW9uOiBzcGluLTFjNGE3YmI5IDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcbi5hY3Rpdml0eS10aXRsZVtkYXRhLXYtMWM0YTdiYjldIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsYUFBQTtFQUFBLGVBQUE7RUFBQSxjQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUNBO0VBQ0UsV0FBQTtFQUNBLGNBQUE7RUFBQSxnQkFBQTtFQUFBLGNBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsaUVBQUE7QUFDSjtBQUlFO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxVQUFBO0VBQ0Esb0RBQUE7QUFEQTtBQUtBO0VBQUEscUJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSx5QkFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLDJDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0FBSEE7QUFNRjtFQUNFLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5taW51cyB7XFxuICBAYXBwbHkgZmxleCBoLTMgdy0zIGl0ZW1zLWNlbnRlcjtcXG4gICY6YmVmb3JlIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIEBhcHBseSBibG9jayBoLTAuNSB3LTMgcm91bmRlZC14bCBiZy1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cXG4jcHVibGlzaGluZ19hY3Rpdml0aWVzIHtcXG4gIEBhcHBseSBmaXhlZCBib3R0b20tMCByaWdodC0wO1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcXG59XFxuXFxuLnJvbGxpbmcge1xcbiAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTIwO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuLmFjdGl2aXR5LXRpdGxlIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5taW51c1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDAuNzVyZW07XFxuICB3aWR0aDogMC43NXJlbTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5taW51c1tkYXRhLXYtMjQ0M2RmNTNdOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgaGVpZ2h0OiAwLjEyNXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4jcHVibGlzaGluZ19hY3Rpdml0aWVzW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgYm90dG9tOiAwcHg7XFxuICByaWdodDogMHB4O1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcXG59XFxuLnJvbGxpbmdbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi0yNDQzZGY1MyB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnJvbGxpbmdbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBhbmltYXRpb246IHNwaW4tMjQ0M2RmNTMgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuLmFjdGl2aXR5LXRpdGxlW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxhQUFBO0VBQUEsZUFBQTtFQUFBLGNBQUE7RUFBQSxtQkFBQTtBQUFBO0FBQ0E7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUFBLGdCQUFBO0VBQUEsY0FBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSxpRUFBQTtBQUNKO0FBSUU7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLFVBQUE7RUFDQSxvREFBQTtBQURBO0FBS0E7RUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUFIQTtBQU1GO0VBQ0UsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1pbnVzIHtcXG4gIEBhcHBseSBmbGV4IGgtMyB3LTMgaXRlbXMtY2VudGVyO1xcbiAgJjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IGJsb2NrIGgtMC41IHctMyByb3VuZGVkLXhsIGJnLWJsdWUtNTA7XFxuICB9XFxufVxcblxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXMge1xcbiAgQGFwcGx5IGZpeGVkIGJvdHRvbS0wIHJpZ2h0LTA7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG5cXG4ucm9sbGluZyB7XFxuICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4uYWN0aXZpdHktdGl0bGUge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFsZXJ0W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMS41cmVtO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XFxuLmFsZXJ0X19jb250YWluZXJbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW1cXG59XFxuLmFsZXJ0X19jb250ZW50W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLmFsZXJ0X19jb250ZW50W2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDFyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLmFsZXJ0X19jb250ZW50IHNwYW5bZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XFxuLmFsZXJ0X19tZXNzYWdlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLmFsZXJ0X19tZXNzYWdlW2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuMjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcbi50ZXh0LXNob3dbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC41cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MHB4LCAzMHB4KVxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC0tdHctdHJhbnNsYXRlLXk6IC0wcHg7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLnRleHQtaGlkZVtkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXNcXG59XFxuLmJvcmRlci1oaWRlW2RhdGEtdi1iNzdiMTFkNF06OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXNhbG1vbi01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKVxcbn1cXG4uYm9yZGVyLXNob3dbZGF0YS12LWI3N2IxMWQ0XTo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc2FsbW9uLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQUEsYUFBQTtFQUFBLHFCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQSxhQUFBO0VBQUEsc0JBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxvREFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHNEQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsVUFBQTtFQUFBLDBCQUFBO0VBQ0E7QUFEQTtBQUlBO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0VBQUEsK0xBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHNEQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0VBQUEsc0RBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQTtBQUpBO0FBT0E7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7RUFBQSxzREFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBO0FBSkFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFsZXJ0IHtcXG4gIEBhcHBseSByb3VuZGVkIGJnLWNhbWVsLTEwIHAtNCBwci02IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtbi01MDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGxlYWRpbmctNjtcXG4gIH1cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00O1xcblxcbiAgICBzcGFuIHtcXG4gICAgICBAYXBwbHkgdGV4dC1zbSBmb250LWJvbGQgdGV4dC1uLTUwO1xcbiAgICB9XFxuICB9XFxuICAmX19tZXNzYWdlIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMTtcXG4gIH1cXG59XFxuLnRleHQtc2hvdyB7XFxuICBAYXBwbHkgaW52aXNpYmxlIGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBvcGFjaXR5LTAgZHVyYXRpb24tMzAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwcHgsIDMwcHgpO1xcbn1cXG4udGV4dC1oaWRlIHtcXG4gIEBhcHBseSBmbGV4IC10cmFuc2xhdGUteS0wIGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgZHVyYXRpb24tMzAwO1xcbn1cXG4uYm9yZGVyLWhpZGU6OmJlZm9yZSB7XFxuICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIHJvdW5kZWQgYmctc2FsbW9uLTUwIGR1cmF0aW9uLTMwMCBlYXNlLW91dDtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiAnJztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XFxufVxcbi5ib3JkZXItc2hvdzo6YmVmb3JlIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgcm91bmRlZCBiZy1zYWxtb24tNTAgZHVyYXRpb24tMzAwIGVhc2Utb3V0O1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnJvdGF0ZS0xODAge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9IZWxwZXJUZXh0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLHlCQUFBO0VBQ0EsK0JBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucm90YXRlLTE4MCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmhlbHAge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uaGVscF9fdGV4dCB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDFyZW07XFxuICB6LWluZGV4OiAyMDtcXG59XFxuLmhlbHBfX3RleHQgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteS1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXRvcDogY2FsYygwLjM3NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTtcXG4gIG1hcmdpbi1ib3R0b206IGNhbGMoMC4zNzVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG59XFxuLmhlbHBfX3RleHQge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tZWdnc2hlbGwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjAwbXM7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBsaW5lYXI7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4uaGVscF9fdGV4dCBwIGEge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XFxuLmhlbHA6aG92ZXIgLmhlbHBfX3RleHQge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcXG4uaGVscDpob3ZlciAuaGVscF9fdGV4dCB7XFxuICAgIHdpZHRoOiAyMDBweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsa0JBQUE7QUFBQTtBQUdFO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsZ0VBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFBQSxhQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLFVBQUE7RUFBQSwwQkFBQTtFQUVBLDJCQUFBO0VBQ0EsMkNBQUE7QUFIQTtBQUtBO0VBQ0UsZ0JBQUE7QUFETjtBQU9FO0VBR0UsbUJBQUE7RUFDQSxVQUFBO0FBTko7QUFPSTtBQUxGO0lBTUksWUFBQTtBQUpKO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmhlbHAge1xcbiAgQGFwcGx5IHJlbGF0aXZlO1xcblxcbiAgJl9fdGV4dCB7XFxuICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcXG4gICAgLy8gQ2hhbmdlZCBlYXNlLW91dCB0byBsaW5lYXJcXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgbGluZWFyO1xcbiAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcXG5cXG4gICAgcCBhIHtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5oZWxwOmhvdmVyIHtcXG4gIC5oZWxwX190ZXh0IHtcXG4gICAgLy8hIFJlbW92ZWQgVHJhbnNpdGlvbiBvZiBIb3ZlciBIZXJlXFxuICAgIC8vIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgNXB4KTtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xcbiAgICAgIHdpZHRoOiAyMDBweDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIub3ZlcmxheSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibGFjayksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDAuNztcXG4gIHotaW5kZXg6IDEwMDBcXG59XFxuLm92ZXJsYXlfX2lubmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCVcXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCAuc3Bpbm5lciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcXG59XFxuQGtleWZyYW1lcyBzcGluIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbi5vdmVybGF5X19jb250ZW50IC5zcGlubmVyIHtcXG4gIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsZUFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQ0EsWUFBQTtFQUNBO0FBRkE7QUFLRTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxZQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSxrQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5vdmVybGF5IHtcXG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgIHRvcC0wICBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xcbiAgb3BhY2l0eTogMC43O1xcbiAgei1pbmRleDogMTAwMDtcXG5cXG4gICZfX2lubmVyIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG5cXG4gICAgLnNwaW5uZXIge1xcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xcbiAgICAgIHdpZHRoOiA3NXB4O1xcbiAgICAgIGhlaWdodDogNzVweDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubW9kYWwtYW5pbWF0aW9uLWVudGVyLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1mcm9tW2RhdGEtdi01YTJiZGE1OF0sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS10b1tkYXRhLXYtNWEyYmRhNThdIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpIDAuMTVzO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1mcm9tW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS10b1tkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBOztFQUVFLDZEQUFBO0FBQUY7QUFHQTs7RUFFRSxVQUFBO0FBQUY7QUFHQTtFQUNFLCtEQUFBO0FBQUY7QUFHQTtFQUNFLHlEQUFBO0FBQUY7QUFHQTtFQUNFLFVBQUE7RUFDQSxxQkFBQTtBQUFGO0FBR0E7RUFDRSxxQkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5tb2RhbC1hbmltYXRpb24tZW50ZXItYWN0aXZlLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24tZW50ZXItZnJvbSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKSAwLjE1cztcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWZyb20ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS10byB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5zaGltbWVyX19ibG9ja1tkYXRhLXYtNzQzNTYxNzJdIHtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgYW5pbWF0aW9uLW5hbWU6IHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MjtcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcXG4gIGFuaW1hdGlvbi1kZWxheTogMC41cztcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlZGVkZWQgMTQuMzYlLCAjZDdkNmQ2IDU2LjI5JSwgI2VkZWRlZCAxMDAlKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDI0NHB4IDEwNHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiA4cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDNweCA2cHggM3B4IDBweDtcXG59XFxuQGtleWZyYW1lcyBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzIge1xcbjAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbn1cXG4yMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbn1cXG4xMDAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usc0JBQUE7RUFDQSw2QkFBQTtFQUNBLG1DQUFBO0VBQ0EsMkNBQUE7RUFDQSxpQ0FBQTtFQUNBLHFCQUFBO0VBQ0EseUJBQUE7RUFDQSxzRkFBQTtFQU1BLDRCQUFBO0VBQ0EsNEJBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBQUxGO0FBUUE7QUFDRTtJQUNFLHVDQUFBO0FBTEY7QUFRQTtJQUNFLHVDQUFBO0FBTkY7QUFTQTtJQUNFLHlDQUFBO0FBUEY7QUFVQTtJQUNFLHlDQUFBO0FBUkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uc2hpbW1lcl9fYmxvY2sge1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcXG4gICAgOTBkZWcsXFxuICAgICNlZGVkZWQgMTQuMzYlLFxcbiAgICAjZDdkNmQ2IDU2LjI5JSxcXG4gICAgI2VkZWRlZCAxMDAlXFxuICApO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDhweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lciB7XFxuICAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcblxcbiAgMTAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXJyb3JzW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4XFxufVxcbi5lcnJvcnNfX2hlYWRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgcGFkZGluZzogMXJlbVxcbn1cXG4uZXJyb3JzX19oZWFkLS10aXRsZVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1ncm93OiAxO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNjI1XFxufVxcbi5lcnJvcnNfX2xpc3RbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGhlaWdodDogMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zXFxufVxcbi5lcnJvcnNfX2xpc3QgdWxbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW1cXG59XFxuLmVycm9yc19faXRlbVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNVxcbn1cXG4uZXJyb3JzX19pdGVtW2RhdGEtdi1mNjdjN2U3Ml06bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcXG4gICAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpXFxufVxcbi5lcnJvcnNfX2VsZW1lbnRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLDhCQUFBO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLFlBQUE7SUFBQSxtQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBS0Y7SUFBQSxXQUFBO0lBQUEsZ0JBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsd0JBQUE7SUFBQSx3REFBQTtJQUFBO0FBQUE7QUFHRTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUtGO0lBQUEsaUJBQUE7SUFBQSxvQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQSx3QkFBQTtJQUFBLHNCQUFBO0lBQUE7QUFBQTtBQUlBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5lcnJvcnMge1xcbiAgQGFwcGx5IGJvcmRlci1sLTI7XFxuXFxuICAmX19oZWFkIHtcXG4gICAgQGFwcGx5IGZsZXgganVzdGlmeS1iZXR3ZWVuIHAtNDtcXG5cXG4gICAgJi0tdGl0bGUge1xcbiAgICAgIEBhcHBseSBmbGV4IGdyb3cgaXRlbXMtY2VudGVyIHRleHQtc20gbGVhZGluZy1yZWxheGVkO1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19saXN0IHtcXG4gICAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gcHgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuXFxuICAgIHVsIHtcXG4gICAgICBAYXBwbHkgcHgtNjtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9faXRlbSB7XFxuICAgIEBhcHBseSBweS00IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XFxuICB9XFxuXFxuICAmX19pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLW4tMjA7XFxuICB9XFxuXFxuICAmX19lbGVtZW50IHtcXG4gICAgQGFwcGx5IGxpc3QtZGlzYyBweC00IHRleHQtYmx1ZS01MDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnByb2dyZXNzX2JhcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0b3A6IDAgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDk5OTk5OTtcXG4gIGhlaWdodDogMTAwdmg7XFxufVxcbi5wcm9ncmVzc19iYXJfX3dyYXBwZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICB3aWR0aDogMjUwcHg7XFxuICBib3JkZXItcmFkaXVzOiAxcmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5wcm9ncmVzc19iYXJfX3ZpZXdlcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG59XFxuLnByb2dyZXNzX2Jhci5hbmltYXRlLWxvYWRlciAucHJvZ3Jlc3NfYmFyX192aWV3ZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBhbmltYXRpb246IEZpbGxBbmltYXRpb24tNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyLmFuaW1hdGUtbG9hZGVyIC5wcm9ncmVzc19iYXJfX3N0YXRlW2RhdGEtdi01YzMyYmYwY106OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGFuaW1hdGlvbjogVGV4dENoYW5nZS01YzMyYmYwYyA2cyBsaW5lYXIgZm9yd2FyZHM7XFxufVxcbi5wcm9ncmVzc19iYXJfX2NvbnRlbnRbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLnByb2dyZXNzX2Jhcl9fc3RhdGVbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBtYXJnaW4tdG9wOiAxLjVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBrZXlmcmFtZXMgRmlsbEFuaW1hdGlvbi01YzMyYmYwYyB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlLTVjMzJiZjBjIHtcXG4wJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjEwMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsbUJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0FBSEE7QUFNRTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsZ0JBQUE7QUFGQTtBQU1BO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7QUFKQTtBQU9GO0VBQ0Usb0RBQUE7QUFGSjtBQUtFO0VBQ0UsV0FBQTtFQUNBLGlEQUFBO0FBSEo7QUFPSTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHdEQUFBO0FBQUE7QUFJSjtBQUNFO0lBQ0Usb0JBQUE7QUFORjtBQVFBO0lBQ0Usb0JBQUE7QUFORjtBQUNGO0FBU0E7QUFDRTtJQUNFLHlCQUFBO0FBUEY7QUFVQTtJQUNFLHlCQUFBO0FBUkY7QUFXQTtJQUNFLHVCQUFBO0FBVEY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucHJvZ3Jlc3NfYmFyIHtcXG4gIEBhcHBseSBmaXhlZCAgbGVmdC0wIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZTtcXG4gIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogOTk5OTk5O1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG5cXG4gICZfX3dyYXBwZXIge1xcbiAgICBAYXBwbHkgdy1bMjUwcHhdIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLTJ4bDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gICZfX3ZpZXdlciB7XFxuICAgIEBhcHBseSBiZy1zcHJpbmctNTA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3ZpZXdlciB7XFxuICAgIGFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbiA2cyBsaW5lYXIgZm9yd2FyZHM7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3N0YXRlOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgYW5pbWF0aW9uOiBUZXh0Q2hhbmdlIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbDtcXG4gIH1cXG5cXG4gICZfX3N0YXRlIHtcXG4gICAgQGFwcGx5IG10LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIEZpbGxBbmltYXRpb24ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlIHtcXG4gIDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIH1cXG5cXG4gIDk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi52YWxpZGF0aW9uW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9ySGVhZFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIHdpZHRoOiAyMTJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JzW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgei1pbmRleDogMTA7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDU5NXB4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVxcbi52YWxpZGF0aW9uX19oZWFkaW5nW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi52YWxpZGF0aW9uX19lcnJvcnMtbGlzdFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnZhbGlkYXRpb25fX3RvZ2dsZVtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZlW2RhdGEtdi0xZTM4ZDEwZV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiAycHg7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZkYmU0O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0b3A6IGNhbGMoMTAwJSArIDNweCk7XFxuICBsZWZ0OiAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGlDQUFBO0VBQUEsOEJBQUE7RUFBQSxpQkFBQTtFQUFBLHdCQUFBO0VBQUEsd0RBQUE7RUFBQSwwQkFBQTtFQUNBLDJDQUFBO0FBREE7QUFJRTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0VBQUEsa0JBQUE7RUFBQSwrREFBQTtFQUNBLDJDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsVUFBQTtFQUFBLFFBQUE7RUFBQSxXQUFBO0VBQUEsYUFBQTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLGdCQUFBO0VBQUEsc0JBQUE7RUFBQSwwREFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSw4QkFBQTtBQURBO0FBS0E7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxZQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEseUJBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsd0RBQUE7QUFBQTtBQUlGO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxPQUFBO0FBTEpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnZhbGlkYXRpb24ge1xcbiAgQGFwcGx5IHJvdW5kZWQtYmwtbGcgcm91bmRlZC10bC1sZyBib3JkZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG5cXG4gICZfX2Vycm9ySGVhZCB7XFxuICAgIEBhcHBseSB3LVsyMTJweF0gYm9yZGVyLWNyaW1zb24tMjAgYmctY3JpbXNvbi0xMDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIH1cXG5cXG4gICZfX2Vycm9ycyB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0wIHRvcC0wIHotMTAgZmxleCB3LVs1OTVweF0gZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlci13aGl0ZSBiZy13aGl0ZTtcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbiAgfVxcblxcbiAgJl9faGVhZGluZyB7XFxuICAgIEBhcHBseSBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX19lcnJvcnMtbGlzdCB7XFxuICAgIEBhcHBseSBncm93IG92ZXJmbG93LXktYXV0byBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX190b2dnbGUge1xcbiAgICBAYXBwbHkgdGV4dC14cyB1cHBlcmNhc2UgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG4uYWN0aXZlIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiAycHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA2ZGJlNDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRvcDogY2FsYygxMDAlICsgM3B4KTtcXG4gICAgbGVmdDogMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmVycm9yLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMzRkNWI7XFxufVxcbi53YXJuaW5nLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGI3ODQ7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5saXN0LWluZGV4W2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcbn1cXG4ubGlzdC1pbmRleFtkYXRhLXYtNmYxN2VjNDVdOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHotaW5kZXg6IDEwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB3aWR0aDogNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGxlZnQ6IDhweDtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG59XFxuLmNvbnRhaW5lcltkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4uZXJyb3ItZWxlbWVudFtkYXRhLXYtNmYxN2VjNDVdOm5vdCg6bGFzdC1vZi10eXBlKSB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q1ZGNkZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUNFLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtBQURKO0FBS0U7RUFDRSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7QUFGSjtBQUtBO0VBQ0UsZ0JBQUE7RUFDQSxnQ0FBQTtFQUNBLFlBQUE7QUFGRjtBQUtBO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtBQUZGO0FBSUU7RUFDRSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7RUFDQSxtQkFBQTtBQUZKO0FBTUU7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0FBQUE7QUFFRjtFQUNFLGdDQUFBO0FBREZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmVycm9yLWJvcmRlciB7XFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgd2lkdGg6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzNGQ1YjtcXG4gIH1cXG59XFxuLndhcm5pbmctYm9yZGVyIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiNzg0O1xcbiAgfVxcbn1cXG4uZXJyb3ItY29udGFpbmVyIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlLW91dDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuXFxuLmxpc3QtaW5kZXgge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcblxcbiAgJjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHdpZHRoOiA0cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgIGxlZnQ6IDhweDtcXG4gICAgdG9wOiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcXG4gICAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG4gIH1cXG59XFxuLmNvbnRhaW5lciB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiBweC00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuLmVycm9yLWVsZW1lbnQ6bm90KDpsYXN0LW9mLXR5cGUpIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDVkY2RlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsOEJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZm9ybS1ncm91cFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbi5mb3JtLWdyb3VwW2RhdGEtdi1jN2NhMjhiOF06bGFzdC1jaGlsZCB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4uZm9ybS1ncm91cCAuZm9ybV9fY29udGVudFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBnYXA6IDI1cHg7XFxufVxcbi5mb3JtLWdyb3VwIC5mb3JtX19jb250ZW50IC5sYWJlbC1maWVsZFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZS1jb250YWluZXJbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lcltkYXRhLXYtYzdjYTI4YjhdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZVtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxnQkFBQTtBQUFBO0FBRUE7RUFDRSxnQkFBQTtBQUFKO0FBR0U7RUFDRSxhQUFBO0VBQ0EsU0FBQTtBQURKO0FBSU07RUFBQSxxQkFBQTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtFQUFBLDhCQUFBO0FBQUE7QUFLSjtFQUFBLHVCQUFBO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHVEQUFBO0VBQUEsZ0VBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5mb3JtLWdyb3VwIHtcXG4gIEBhcHBseSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItbi0yMCBwLTU7XFxuXFxuICAmOmxhc3QtY2hpbGQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgfVxcblxcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBnYXA6IDI1cHg7XFxuXFxuICAgIC5sYWJlbC1maWVsZCB7XFxuICAgICAgQGFwcGx5IG1iLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuO1xcbiAgICB9XFxuICB9XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lciB7XFxuICBAYXBwbHkgbWItMS41IGZsZXggc3BhY2UteC0xO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZSB7XFxuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdGV4dC1ibHVlY29yYWw7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5wcm9ncmVzc0Jhcl9jb250YWluZXJbZGF0YS12LTBiM2JmYjQ2XSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDdweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTk2IDE5NiAxOTYgLyB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9ncmVzc19iYXJbZGF0YS12LTBiM2JmYjQ2XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogN3JlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYW5pbWF0aW9uOiBtb3ZlUmlnaHRMZWZ0LTBiM2JmYjQ2IDJzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuQGtleWZyYW1lcyBtb3ZlUmlnaHRMZWZ0LTBiM2JmYjQ2IHtcXG4wJSB7XFxuICAgIGxlZnQ6IC00MHB4O1xcbn1cXG4xMDAlIHtcXG4gICAgbGVmdDogMTAwJTtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLHFCQUFBO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0Esb0RBQUE7QUFEQTtBQUlGO0FBQ0U7SUFDRSxXQUFBO0FBQUY7QUFFQTtJQUNFLFVBQUE7QUFBRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5wcm9ncmVzc0Jhcl9jb250YWluZXIge1xcbiAgQGFwcGx5IHJlbGF0aXZlIGgtWzdweF0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctWyNDNEM0QzRdO1xcbn1cXG5cXG4ucHJvZ3Jlc3NfYmFyIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBoLWZ1bGwgdy0yOCByb3VuZGVkLWxnIGJnLXNwcmluZy01MDtcXG4gIGFuaW1hdGlvbjogbW92ZVJpZ2h0TGVmdCAycyBsaW5lYXIgaW5maW5pdGU7XFxufVxcblxcbkBrZXlmcmFtZXMgbW92ZVJpZ2h0TGVmdCB7XFxuICAwJSB7XFxuICAgIGxlZnQ6IC00MHB4O1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIGxlZnQ6IDEwMCU7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5jaGVja2JveF9jb250YWluZXJbZGF0YS12LTc3ZjE0ZjNlXSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmctbGVmdDogMTBweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZvbnQtc2l6ZTogMjJweDtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi8qIEhpZGUgdGhlIGJyb3dzZXIncyBkZWZhdWx0IGNoZWNrYm94ICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciBpbnB1dFtkYXRhLXYtNzdmMTRmM2VdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG59XFxuXFxuLyogQ3JlYXRlIGEgY3VzdG9tIGNoZWNrYm94ICovXFxuLmNoZWNrbWFya1tkYXRhLXYtNzdmMTRmM2VdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogM3B4O1xcbiAgbGVmdDogMDtcXG4gIGhlaWdodDogMTdweDtcXG4gIHdpZHRoOiAxN3B4O1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG5cXG4vKiBPbiBtb3VzZS1vdmVyLCBhZGQgYSBncmV5IGJhY2tncm91bmQgY29sb3IgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyOmhvdmVyIGlucHV0IH4gLmNoZWNrbWFya1tkYXRhLXYtNzdmMTRmM2VdIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG59XFxuXFxuLyogV2hlbiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCwgYWRkIGEgYmx1ZSBiYWNrZ3JvdW5kICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciBpbnB1dDpjaGVja2VkIH4gLmNoZWNrbWFya1tkYXRhLXYtNzdmMTRmM2VdIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG5cXG4vKiBDcmVhdGUgdGhlIGNoZWNrbWFyay9pbmRpY2F0b3IgKGhpZGRlbiB3aGVuIG5vdCBjaGVja2VkKSAqL1xcbi5jaGVja21hcmtbZGF0YS12LTc3ZjE0ZjNlXTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi8qIFNob3cgdGhlIGNoZWNrbWFyayB3aGVuIGNoZWNrZWQgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIGlucHV0OmNoZWNrZWQgfiAuY2hlY2ttYXJrW2RhdGEtdi03N2YxNGYzZV06YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi8qIFN0eWxlIHRoZSBjaGVja21hcmsvaW5kaWNhdG9yICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciAuY2hlY2ttYXJrW2RhdGEtdi03N2YxNGYzZV06YWZ0ZXIge1xcbiAgbGVmdDogNHB4O1xcbiAgdG9wOiAxcHg7XFxuICB3aWR0aDogNXB4O1xcbiAgaGVpZ2h0OiAxMHB4O1xcbiAgYm9yZGVyOiBzb2xpZCB3aGl0ZTtcXG4gIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL2J1bGtQdWJsaXNoTW9kYWwvaWF0aVZhbGlkYXRlL0lhdGlWYWxpZGF0ZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7RUFDQSxzQkFBQTtFQUVBLGlCQUFBO0FBQUY7O0FBR0Esd0NBQUE7QUFDQTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtBQUFGOztBQUdBLDZCQUFBO0FBQ0E7RUFDRSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxPQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtBQUFGOztBQUdBLCtDQUFBO0FBRUU7RUFBQSxzQkFBQTtFQUFBLDhEQUFBO0FBQUE7O0FBR0Ysd0RBQUE7QUFFRTtFQUFBLHNCQUFBO0VBQUEsOERBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0FBQUE7O0FBR0YsNkRBQUE7QUFDQTtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7QUFBRjs7QUFHQSxvQ0FBQTtBQUNBO0VBQ0UsY0FBQTtBQUFGOztBQUdBLGtDQUFBO0FBQ0E7RUFDRSxTQUFBO0VBQ0EsUUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSx5QkFBQTtFQUdBLHdCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmNoZWNrYm94X2NvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmctbGVmdDogMTBweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZvbnQtc2l6ZTogMjJweDtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi8qIEhpZGUgdGhlIGJyb3dzZXIncyBkZWZhdWx0IGNoZWNrYm94ICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciBpbnB1dCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBvcGFjaXR5OiAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxufVxcblxcbi8qIENyZWF0ZSBhIGN1c3RvbSBjaGVja2JveCAqL1xcbi5jaGVja21hcmsge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAzcHg7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAxN3B4O1xcbiAgd2lkdGg6IDE3cHg7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBAYXBwbHkgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XFxufVxcblxcbi8qIE9uIG1vdXNlLW92ZXIsIGFkZCBhIGdyZXkgYmFja2dyb3VuZCBjb2xvciAqL1xcbi5jaGVja2JveF9jb250YWluZXI6aG92ZXIgaW5wdXQgfiAuY2hlY2ttYXJrIHtcXG4gIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xcbn1cXG5cXG4vKiBXaGVuIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLCBhZGQgYSBibHVlIGJhY2tncm91bmQgKi9cXG4uY2hlY2tib3hfY29udGFpbmVyIGlucHV0OmNoZWNrZWQgfiAuY2hlY2ttYXJrIHtcXG4gIEBhcHBseSBib3JkZXItc3ByaW5nLTUwIGJnLXNwcmluZy01MDtcXG59XFxuXFxuLyogQ3JlYXRlIHRoZSBjaGVja21hcmsvaW5kaWNhdG9yIChoaWRkZW4gd2hlbiBub3QgY2hlY2tlZCkgKi9cXG4uY2hlY2ttYXJrOmFmdGVyIHtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLyogU2hvdyB0aGUgY2hlY2ttYXJrIHdoZW4gY2hlY2tlZCAqL1xcbi5jaGVja2JveF9jb250YWluZXIgaW5wdXQ6Y2hlY2tlZCB+IC5jaGVja21hcms6YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi8qIFN0eWxlIHRoZSBjaGVja21hcmsvaW5kaWNhdG9yICovXFxuLmNoZWNrYm94X2NvbnRhaW5lciAuY2hlY2ttYXJrOmFmdGVyIHtcXG4gIGxlZnQ6IDRweDtcXG4gIHRvcDogMXB4O1xcbiAgd2lkdGg6IDVweDtcXG4gIGhlaWdodDogMTBweDtcXG4gIGJvcmRlcjogc29saWQgd2hpdGU7XFxuICBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWN0aXZpdGllcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50cyB7XFxuICBib3JkZXItcmFkaXVzOiAwcHggOHB4IDhweCAwcHg7XFxuICB3aWR0aDogMTI1cHg7XFxuICBtaW4taGVpZ2h0OiAxNzRweDtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwgLnBhbmVsX19pbnB1dDpmb2N1cywgXFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCAucGFuZWxfX3NlYXJjaDpmb2N1cyB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2aXRpZXMgLmhvdmVyX190ZXh0IHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMHB4O1xcbiAgdG9wOiAxMDAlO1xcbiAgei1pbmRleDogMTA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxuICBtaW4td2lkdGg6IDE1MHB4O1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgcGFkZGluZy1sZWZ0OiAwLjg3NXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuODc1cmVtO1xcbiAgcGFkZGluZy10b3A6IDAuMzc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaSBzdmcge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxrQkFBQTtBQUFGO0FBQ0U7RUFDRSw4QkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQUNKO0FBR0k7RUFBQSxxQkFBQTtFQUFBLGFBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7QUFBQTtBQUlFOztFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUtGO0VBQUEsb0JBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxVQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUNBLGdCQUFBO0FBREE7QUFJRTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtFQUFBLHVCQUFBO0VBQUEscUJBQUE7RUFBQSx3QkFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0FBQUE7QUFHRTtFQUFBLHFCQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFjdGl2aXRpZXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLmVsZW1lbnRzIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDhweCA4cHggMHB4O1xcbiAgICB3aWR0aDogMTI1cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xcbiAgfVxcblxcbiAgLmVsZW1lbnRzX19wYW5lbCB7XFxuICAgIEBhcHBseSByb3VuZGVkLWxnIHAtNCBzaGFkb3ctZHJvcGRvd247XFxuXFxuICAgIC5wYW5lbF9faW5wdXQ6Zm9jdXMsXFxuICAgIC5wYW5lbF9fc2VhcmNoOmZvY3VzIHtcXG4gICAgICBAYXBwbHkgdGV4dC1uLTQwO1xcbiAgICB9XFxuICB9XFxuXFxuICAuaG92ZXJfX3RleHQge1xcbiAgICBAYXBwbHkgbWwtMTtcXG4gIH1cXG4gIC5idXR0b25fX2Ryb3Bkb3duIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLWZ1bGwgei0xMCB0ZXh0LWxlZnQgc2hhZG93LWRyb3Bkb3duO1xcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xcblxcbiAgICBsaSB7XFxuICAgICAgQGFwcGx5IGZsZXggcHgtMy41IHB5LTEuNSBob3ZlcjpiZy13aGl0ZTtcXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgQGFwcGx5IG1yLTE7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5zcGlubmVyW2RhdGEtdi02NjFlNmY4ZV0ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrXFxufVxcbkBrZXlmcmFtZXMgc3Bpbi02NjFlNmY4ZSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpXFxufVxcbn1cXG4uc3Bpbm5lcltkYXRhLXYtNjYxZTZmOGVdIHtcXG4gIGFuaW1hdGlvbjogc3Bpbi02NjFlNmY4ZSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEseURBQUE7RUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0E7QUFIQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uc3Bpbm5lciB7XFxuICBAYXBwbHkgaW5saW5lLWJsb2NrICBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWN0aXZlTmF2IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLm5hdmxpc3Qtd2lkdGgge1xcbiAgd2lkdGg6IDEwMHB4O1xcbn1cXG4udGV4dC1zZW1pLWRhcmsge1xcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsa0JBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSxvQkFBQTtFQUFBLGlEQUFBO0FBQUE7QUFHRjtFQUNFLFlBQUE7QUFBRjtBQUdBO0VBQ0UseUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZlTmF2IHtcXG4gIEBhcHBseSByZWxhdGl2ZSAgcm91bmRlZCBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcXG59XFxuXFxuLm5hdmxpc3Qtd2lkdGgge1xcbiAgd2lkdGg6IDEwMHB4O1xcbn1cXG5cXG4udGV4dC1zZW1pLWRhcmsge1xcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnVwbG9hZC1lcnJvcltkYXRhLXYtNDBkNzg3MGFdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogMTtcXG59XFxuLnVwbG9hZC1lcnJvcltkYXRhLXYtNDBkNzg3MGFdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGhlaWdodDogNjhweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZDEwMDFlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XFxuICB6LWluZGV4OiAtMTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSw2QkFBQTtFQUNBLHVDQUFBO0VBQ0EsVUFBQTtBQUFGO0FBRUU7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4udXBsb2FkLWVycm9yIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogMTtcXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgaGVpZ2h0OiA2OHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZDEwMDFlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XFxuICAgIHotaW5kZXg6IC0xO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubWFuZGF0b3J5OjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiAwLjVweDtcXG4gIGhlaWdodDogMTQwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogLTEuNXJlbTtcXG4gIHRvcDogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLmVsZW1lbnQge1xcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XFxufVxcbi5lbGVtZW50X19pbm5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZWxlbWVudF9faW5uZXIgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjYyNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLmVsZW1lbnRfX25vdGVzIHtcXG4gIGhlaWdodDogMXJlbTtcXG4gIHdpZHRoOiAycmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaCB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG4gIGhlaWdodDogMi41cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxufVxcbi5lbGVtZW50X19zZWFyY2g6OnBsYWNlaG9sZGVyIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi50YWJfX2xpbmtzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcXG59XFxuLnRhYl9fbGlua3M6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBoZWlnaHQ6IDAuMjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctc2NhbGUteDogMDtcXG4gIC0tdHctc2NhbGUteTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuLnRhYl9fbGlua3M6aG92ZXI6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIC0tdHctc2NhbGUteDogMTtcXG4gIC0tdHctc2NhbGUteTogMTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbn1cXG4udGFiX19saW5rcy0tYWN0aXZlIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4udGFiX19saW5rcy0tYWN0aXZlOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMHB4O1xcbiAgbGVmdDogMHB4O1xcbiAgaGVpZ2h0OiAwLjI1cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4uc2VwYXJhdG9yIHtcXG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcbn1cXG4ubGFzdCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxZQUFBO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFGO0FBSUU7RUFBQSxzQkFBQTtFQUFBLG1CQUFBO0FBQUE7QUFHRTtFQUFBLGFBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx3REFBQTtFQUFBLGlFQUFBO0FBQUE7QUFJQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0VBQUEsdUJBQUE7RUFBQSxpQkFBQTtBQUFBO0FBS0Y7RUFBQSxnQkFBQTtFQUFBLG1CQUFBO0VBQUEsY0FBQTtFQUFBLFdBQUE7RUFBQSxzQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0VBQUEsb0JBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSw4QkFBQTtFQUFBLG1CQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUdFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSwwQkFBQTtFQUNBLHVCQUFBO0FBREE7QUFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsMEJBQUE7RUFDQSx1QkFBQTtBQURBO0FBS0E7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0FBQUE7QUFFQTtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUFBLFdBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFQUFBLCtMQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0FBSko7QUFPRTtFQUNFLFdBQUE7RUFDQSxtQkFBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VBQUEsK0xBQUE7QUFMSjtBQVNJO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFJSjtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUFBLFdBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7QUFQRjtBQVdFO0VBQUEsaUJBQUE7RUFBQSxrQkFBQTtBQUFBO0FBSUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1hbmRhdG9yeTo6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICB3aWR0aDogMC41cHg7XFxuICBoZWlnaHQ6IDE0MHB4O1xcbiAgQGFwcGx5IGFic29sdXRlIC1yaWdodC02IHRvcC0xIGJnLW4tMjA7XFxufVxcblxcbi5lbGVtZW50IHtcXG4gIEBhcHBseSBtYi0zIG1sLTI7XFxuXFxuICAmX19pbm5lciB7XFxuICAgIEBhcHBseSBmbGV4IHNwYWNlLXgtMi41O1xcbiAgfVxcblxcbiAgJl9fbm90ZXMge1xcbiAgICBAYXBwbHkgaC00IHctOCByb3VuZGVkLXNtIGJvcmRlcjtcXG4gIH1cXG59XFxuXFxuLmVsZW1lbnRfX3NlYXJjaCB7XFxuICBAYXBwbHkgbXktNCBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy13aGl0ZSBweS0zIHBsLTEwIHByLTMgdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XFxuXFxuICAmOjpwbGFjZWhvbGRlciB7XFxuICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XFxuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbiAgfVxcblxcbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xcbiAgfVxcbn1cXG5cXG4udGFiX19saW5rcyB7XFxuICBAYXBwbHkgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgcHgtMiBwYi02O1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLTAgYmctYmx1ZWNvcmFsIGR1cmF0aW9uLTMwMDtcXG4gIH1cXG5cXG4gICY6aG92ZXI6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIEBhcHBseSB2aXNpYmxlIHNjYWxlLTEwMDtcXG4gIH1cXG5cXG4gICYtLWFjdGl2ZSB7XFxuICAgIEBhcHBseSBmb250LWJvbGQgdGV4dC1ibHVlY29yYWw7XFxuICB9XFxufVxcblxcbi50YWJfX2xpbmtzLS1hY3RpdmU6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIGJnLWJsdWVjb3JhbCBkdXJhdGlvbi0zMDA7XFxufVxcblxcbi5zZXBhcmF0b3Ige1xcbiAgQGFwcGx5IG14LTQ7XFxufVxcblxcbi5sYXN0IHtcXG4gIEBhcHBseSB0ZXh0LW4tMzA7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5yZXNldCB7XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnJlc2V0IHtcXG4gICAgcGFkZGluZzogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQge1xcbiAgICB3aWR0aDogNTgzcHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG4gICAgcGFkZGluZzogNnJlbTtcXG59XFxufVxcbi5yZXNldF9fY29udGVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLnJlc2V0X19jb250ZW50IC5pbnB1dCB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBwYWRkaW5nLXRvcDogMS4yNXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtO1xcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLmxvY2staWNvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAxLjVyZW07XFxuICBmb250LXNpemU6IDEuMTI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxuICB0b3A6IDQ3cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0X19jb250ZW50IC5sb2NrLWljb24ge1xcbiAgICB0b3A6IDUwcHg7XFxuICAgIGZvbnQtc2l6ZTogMjBweDtcXG59XFxufVxcbi5yZXNldF9fY29udGVudCAubWFpbC1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDEuNXJlbTtcXG4gIHRvcDogNDdweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXRfX2NvbnRlbnQgLm1haWwtaWNvbiB7XFxuICAgIHRvcDogNTFweDtcXG59XFxufVxcbi5yZXNldCBoMiB7XFxuICBmb250LXNpemU6IDI0cHg7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBoMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgZm9udC1zaXplOiA0MHB4O1xcbiAgICBsaW5lLWhlaWdodDogNjBweDtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgZm9udC1zaXplOiAzMnB4O1xcbiAgICBsaW5lLWhlaWdodDogNTBweDtcXG59XFxufVxcbi5yZXNldCBwIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgcCB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxufVxcbi5yZXNldCAucmVzZXQtYnRuIHtcXG4gIG1hcmdpbi10b3A6IDAuNzVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZzogMTRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgLnJlc2V0LWJ0biB7XFxuICAgIHBhZGRpbmc6IDE4cHggOTRweDtcXG4gICAgZm9udC1zaXplOiAxNHB4O1xcbn1cXG59XFxuLnJlc2V0IC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxNTBweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgLnZlcmlmaWNhdGlvbiB7XFxuICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxufVxcbn1cXG4ucmVzZXRfX3Bhc3N3b3JkIHtcXG4gIGhlaWdodDogNjEwcHg7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQVdFLGtEQUFBO0VBQ0Esb0JBQUE7RUFBQSxxQkFBQTtFQUFBLHFCQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBVkY7QUFERTtBQUNFO0lBQUEsZUFBQTtBQUFBO0FBS0o7QUFGRTtBQUxGO0lBTUksWUFBQTtJQUNBLFlBQUE7SUFFQSxhQUFBO0FBSUY7QUFDRjtBQUNJO0VBQUEsa0JBQUE7RUFBQSxhQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUdFO0VBQUEsa0JBQUE7RUFBQSxxQkFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUNBLFNBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxTQUFBO0lBQ0EsZUFBQTtBQUVOO0FBQ0Y7QUFFTTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUNBLFNBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxTQUFBO0FBRU47QUFDRjtBQVdJO0VBQUEsZUFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0FBQUE7QUFBQTtBQVRBO0FBQ0U7SUFBQSxlQUFBO0lBQ0EsaUJBQUE7QUFEQTtBQU1OO0FBRkk7QUFDRTtJQUFBLGVBQUE7SUFDQSxpQkFBQTtBQURBO0FBT047QUFESTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUdBO0VBQUEsbUJBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUNBLGFBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxrQkFBQTtJQUNBLGVBQUE7QUFLSjtBQUNGO0FBSEU7RUFDRSxnQkFBQTtBQUtKO0FBSEk7QUFIRjtJQUlJLGdCQUFBO0FBTUo7QUFDRjtBQUhBO0VBQ0UsYUFBQTtBQU1GXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5yZXNldCB7XFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICBAYXBwbHkgcC0xMDtcXG4gIH1cXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiA1ODNweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICBAYXBwbHkgcC0yNDtcXG4gIH1cXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgQGFwcGx5IG14LTMgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTU7XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IHJlbGF0aXZlIGZsZXggZmxleC1jb2w7XFxuXFxuICAgIC5pbnB1dCB7XFxuICAgICAgQGFwcGx5IG15LTIgcHktNTtcXG4gICAgfVxcblxcbiAgICAubG9jay1pY29uIHtcXG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC02IHRleHQtbGc7XFxuICAgICAgdG9wOiA0N3B4O1xcblxcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgICB0b3A6IDUwcHg7XFxuICAgICAgICBmb250LXNpemU6IDIwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5tYWlsLWljb24ge1xcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTY7XFxuICAgICAgdG9wOiA0N3B4O1xcblxcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgICB0b3A6IDUxcHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICBoMiB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgQGFwcGx5IHRleHQtaGVhZGluZy0zO1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xcbiAgICB9XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgQGFwcGx5IHRleHQtaGVhZGluZy00O1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xcbiAgICB9XFxuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNSBmb250LWJvbGQgdGV4dC1uLTUwIHNtOm1iLTI7XFxuICB9XFxuICBwIHtcXG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gIH1cXG4gIC5yZXNldC1idG4ge1xcbiAgICBAYXBwbHkgbXQtMyB3LWZ1bGwgdGV4dC14cztcXG4gICAgcGFkZGluZzogMTRweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XFxuICAgICAgZm9udC1zaXplOiAxNHB4O1xcbiAgICB9XFxuICB9XFxuICAudmVyaWZpY2F0aW9uIHtcXG4gICAgZm9udC1zaXplOiAxNTBweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICB9XFxuICB9XFxufVxcbi5yZXNldF9fcGFzc3dvcmQge1xcbiAgaGVpZ2h0OiA2MTBweDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHtcXG4gICAgd2lkdGg6IDcwMnB4O1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sgcCB7XFxuICBsaW5lLWhlaWdodDogMjJweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciAudmVyaWZpY2F0aW9uIHtcXG4gIGZvbnQtc2l6ZTogMTkwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXRvcDogMS43NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuNzVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xcbiAgICBtYXJnaW4tdG9wOiAzLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuMjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tZWdnc2hlbGwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gIHdpZHRoOiAzNDRweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWwge1xcbiAgd2lkdGg6IDI1M3B4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bDo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDRweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAuZGV0YWlsIHtcXG4gIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAtMXB4O1xcbiAgd2lkdGg6IDZweDtcXG4gIGhlaWdodDogODVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdHVycXVvaXNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICB6LWluZGV4OiA1O1xcbn1cXG4uZm9ybSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xcbn1cXG59XFxuLmZvcm0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciAuZXJyb3JfX2lucHV0IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG59XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMjRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUlBO0VBSUUsZ0JBQUE7RUFDQSxZQUFBO0FBSko7QUFBSTtBQURGO0lBRUksaUJBQUE7QUFHSjtBQUVFO0lBRUksWUFBQTtBQUNOO0FBSkY7QUFNTTtFQUNFLGlCQUFBO0FBQ1I7QUFHSTtFQUNFLGtEQUFBO0FBRE47QUFHTTtFQUNFLGdCQUFBO0FBRFI7QUFVTTtFQUFBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxtQkFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxxQkFBQTtJQUFBLGtCQUFBO0FBQUE7QUFBQTtBQUpBO0FBQ0U7SUFBQSxvQkFBQTtBQUFBO0FBQ1I7QUFJTTtFQUNFLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUZSO0FBRVE7QUFBQTtJQUFBLGVBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFLRjtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7QUFGQTtBQUlBO0VBQ0UsWUFBQTtBQUpSO0FBT007RUFDRSxXQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLHlEQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0FBTFI7QUFRTTtFQUNFLGlCQUFBO0FBTlI7QUFTTTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEsOERBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0FBUFI7QUFjRTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG9CQUFBO0lBQUEscUJBQUE7SUFBQSxtQkFBQTtJQUFBLHNCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsMkJBQUE7RUFDQSw4QkFBQTtFQUNBLFlBQUE7QUFWRjtBQWFJO0VBQUEsd0JBQUE7RUFBQSxzQkFBQTtFQUFBLGdFQUFBO0VBQ0EsbUJBQUE7QUFEQTtBQUlFO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0FBQUE7QUFJSjtFQUNFLGdCQUFBO0FBWko7QUFnQkE7QUFDRTtJQUNFLGFBQUE7SUFDQSxxQ0FBQTtJQUNBLFNBQUE7QUFiRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5sYWJlbCB7XFxuICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNTA7XFxufVxcblxcbi5zZWN0aW9uIHtcXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgIG1heC13aWR0aDogMTIwNnB4O1xcbiAgICB9XFxuICAgIG1heC13aWR0aDogODY1cHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG5cXG4gICAgLmZlZWRiYWNrIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4gICAgICAgIHdpZHRoOiA3MDJweDtcXG4gICAgICB9XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcblxcbiAgICAgIC52ZXJpZmljYXRpb24ge1xcbiAgICAgICAgZm9udC1zaXplOiAxOTBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICAgICAgQGFwcGx5IGxlYWRpbmctOTtcXG4gICAgICB9XFxuXFxuICAgICAgQGFwcGx5IG14LTMgbXktNyB0ZXh0LWNlbnRlciBsZWFkaW5nLTcgc206bGVhZGluZy0xMCBsZzptYi0xMCBsZzptdC0xNDtcXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgICAgIEBhcHBseSBiZy1lZ2dzaGVsbDtcXG4gICAgICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gICAgICB3aWR0aDogMzQ0cHg7XFxuXFxuICAgICAgdWwge1xcbiAgICAgICAgd2lkdGg6IDI1M3B4O1xcbiAgICAgIH1cXG5cXG4gICAgICB1bDo6YmVmb3JlIHtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgd2lkdGg6IDRweDtcXG4gICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgIEBhcHBseSBiZy1uLTIwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgbGVmdDogMHB4O1xcbiAgICAgICAgdG9wOiAwcHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5kZXRhaWwge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogMDtcXG4gICAgICAgIGxlZnQ6IC0xcHg7XFxuICAgICAgICB3aWR0aDogNnB4O1xcbiAgICAgICAgaGVpZ2h0OiA4NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgei1pbmRleDogNTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvcm0ge1xcbiAgQGFwcGx5IGJnLXdoaXRlIHAtNSBzbTpweC0xMCBzbTpweS0xMCBsZzpweC0yMDtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci1iLW4tMTA7XFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XFxuXFxuICAgIC5lcnJvcl9faW5wdXQge1xcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4gIC5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gIG1heC13aWR0aDogODY1cHg7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sge1xcbiAgICB3aWR0aDogNzAycHg7XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayBwIHtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxOTBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgd2lkdGg6IDM0NHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bCB7XFxuICB3aWR0aDogMjUzcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogNHB4O1xcbiAgaGVpZ2h0OiAxNzVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAuZGV0YWlsIHtcXG4gIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAtMXB4O1xcbiAgd2lkdGg6IDZweDtcXG4gIGhlaWdodDogODVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdHVycXVvaXNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICB6LWluZGV4OiA1O1xcbn1cXG4uZm9ybSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xcbn1cXG59XFxuLmZvcm0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciAuZXJyb3JfX2lucHV0IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG59XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMjRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBSUE7RUFJRSxnQkFBQTtFQUNBLFlBQUE7QUFKSjtBQUFJO0FBREY7SUFFSSxpQkFBQTtBQUdKO0FBRUU7SUFFSSxZQUFBO0FBQ047QUFKRjtBQU1NO0VBQ0UsaUJBQUE7QUFDUjtBQUdJO0VBQ0Usa0RBQUE7QUFETjtBQUdNO0VBQ0UsZ0JBQUE7QUFEUjtBQVVNO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLG1CQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7QUFBQTtBQUFBO0FBSkE7QUFDRTtJQUFBLG9CQUFBO0FBQUE7QUFDUjtBQUlNO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBRlI7QUFFUTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQUZBO0FBSUE7RUFDRSxZQUFBO0FBSlI7QUFPTTtFQUNFLFdBQUE7RUFDQSxVQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQUEseURBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFMUjtBQVFNO0VBQ0UsaUJBQUE7QUFOUjtBQVNNO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSw4REFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUFQUjtBQWNFO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsb0JBQUE7SUFBQSxxQkFBQTtJQUFBLG1CQUFBO0lBQUEsc0JBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBREY7RUFFRSwyQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQVZGO0FBYUk7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsZ0VBQUE7RUFDQSxtQkFBQTtBQURBO0FBSUU7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7QUFBQTtBQUlKO0VBQ0UsZ0JBQUE7QUFaSjtBQWdCQTtBQUNFO0lBQ0UsYUFBQTtJQUNBLHFDQUFBO0lBQ0EsU0FBQTtBQWJGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmxhYmVsIHtcXG4gIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi01MDtcXG59XFxuXFxuLnNlY3Rpb24ge1xcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxuICAgIH1cXG4gICAgbWF4LXdpZHRoOiA4NjVweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICAuZmVlZGJhY2sge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgICAgd2lkdGg6IDcwMnB4O1xcbiAgICAgIH1cXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICAgICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuXFxuICAgICAgLnZlcmlmaWNhdGlvbiB7XFxuICAgICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgICBAYXBwbHkgbGVhZGluZy05O1xcbiAgICAgIH1cXG5cXG4gICAgICBAYXBwbHkgbXgtMyBteS03IHRleHQtY2VudGVyIGxlYWRpbmctNyBzbTpsZWFkaW5nLTEwIGxnOm1iLTEwIGxnOm10LTE0O1xcblxcbiAgICAgIHAge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAgICAgQGFwcGx5IGJnLWVnZ3NoZWxsO1xcbiAgICAgIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgICAgIHdpZHRoOiAzNDRweDtcXG5cXG4gICAgICB1bCB7XFxuICAgICAgICB3aWR0aDogMjUzcHg7XFxuICAgICAgfVxcblxcbiAgICAgIHVsOjpiZWZvcmUge1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB3aWR0aDogNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNzVweDtcXG4gICAgICAgIEBhcHBseSBiZy1uLTIwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgbGVmdDogMHB4O1xcbiAgICAgICAgdG9wOiAwcHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5kZXRhaWwge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogMDtcXG4gICAgICAgIGxlZnQ6IC0xcHg7XFxuICAgICAgICB3aWR0aDogNnB4O1xcbiAgICAgICAgaGVpZ2h0OiA4NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgei1pbmRleDogNTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvcm0ge1xcbiAgQGFwcGx5IGJnLXdoaXRlIHAtNSBzbTpweC0xMCBzbTpweS0xMCBsZzpweC0yMDtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci1iLW4tMTA7XFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XFxuXFxuICAgIC5lcnJvcl9faW5wdXQge1xcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4gIC5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIjYnRuW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgcGFkZGluZzogMTNweCAwO1xcbn1cXG4jYnRuIHN2Z1tkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAxLjc1cmVtO1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxuICBsaW5lLWhlaWdodDogMnJlbTtcXG4gIHRyYW5zaXRpb246IDAuNHM7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuI2J0bltkYXRhLXYtYTE4NjFmM2VdIHtcXG4gICAgcGFkZGluZzogMThweCAwO1xcbn1cXG59XFxuLnVzZXJuYW1lW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ucGFzc3dvcmRbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbmxhYmVsW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLGVBQUE7QUFBRjtBQUdJO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsaUJBQUE7RUFBQSxpQkFBQTtFQUNBLGdCQUFBO0FBREE7QUFJSjtBQUNFO0lBQ0UsZUFBQTtBQUFGO0FBQ0Y7QUFHRTtFQUFBLHFCQUFBO0FBQUE7QUFHQTtFQUFBLHFCQUFBO0FBQUE7QUFHQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4jYnRuIHtcXG4gIHBhZGRpbmc6IDEzcHggMDtcXG5cXG4gIHN2ZyB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC03IHRleHQtMnhsO1xcbiAgICB0cmFuc2l0aW9uOiAwLjRzO1xcbiAgfVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgI2J0biB7XFxuICAgIHBhZGRpbmc6IDE4cHggMDtcXG4gIH1cXG59XFxuLnVzZXJuYW1lIHtcXG4gIEBhcHBseSBtYi0yO1xcbn1cXG4ucGFzc3dvcmQge1xcbiAgQGFwcGx5IG1iLTI7XFxufVxcbmxhYmVsIHtcXG4gIEBhcHBseSBtYi0yIGZvbnQtYm9sZDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsInZhciBtYXAgPSB7XG5cdFwiLi9hZlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanNcIixcblx0XCIuL2FmLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9hci1kelwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanNcIixcblx0XCIuL2FyLWR6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXIta3dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1rdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWx5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbHkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1tYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanNcIixcblx0XCIuL2FyLW1hLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItcHNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXBzLmpzXCIsXG5cdFwiLi9hci1wcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItcHMuanNcIixcblx0XCIuL2FyLXNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItc2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci10blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9helwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2F6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanNcIixcblx0XCIuL2JnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYmcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9ibVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ibi1iZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLWJkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qc1wiLFxuXHRcIi4vYm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ib1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vYnMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jeVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2N5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vZGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZGUtYXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1hdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2R2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9lbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZW4tYXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1hdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanNcIixcblx0XCIuL2VuLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1nYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWdiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4taWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanNcIixcblx0XCIuL2VuLWlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qc1wiLFxuXHRcIi4vZW4tbnpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1uei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VuLXNnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW4tc2cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzXCIsXG5cdFwiLi9lb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9lcy1kb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtbXhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy1teC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanNcIixcblx0XCIuL2VzLXVzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMtdXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2V0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2V1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9mYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanNcIixcblx0XCIuL2ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9maWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qc1wiLFxuXHRcIi4vZmlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2ZyLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9meVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2Z5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZ2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ29tLWRldmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tZGV2YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanNcIixcblx0XCIuL2dvbS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ29tLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9ndVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2d1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vaGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanNcIixcblx0XCIuL2hpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaGkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2hyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9odS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanNcIixcblx0XCIuL2h5LWFtXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaHktYW0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9pZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanNcIixcblx0XCIuL2l0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vaXQtY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanNcIixcblx0XCIuL2l0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vamFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanNcIixcblx0XCIuL2p2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4vanYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9rYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2thLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2tcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9ray5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanNcIixcblx0XCIuL2ttXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va20uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va29cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanNcIixcblx0XCIuL2t1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3Uta21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS1rbXIuanNcIixcblx0XCIuL2t1LWttci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3Uta21yLmpzXCIsXG5cdFwiLi9rdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4va3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9sYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanNcIixcblx0XCIuL2xiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2x0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanNcIixcblx0XCIuL2x2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9tZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21pXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9ta1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanNcIixcblx0XCIuL21rLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanNcIixcblx0XCIuL21yLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tcy1teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanNcIixcblx0XCIuL21zLW15LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanNcIixcblx0XCIuL210LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL25iXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanNcIixcblx0XCIuL25lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ubC1iZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanNcIixcblx0XCIuL25sLWJlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ublwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanNcIixcblx0XCIuL25uLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vb2MtbG5jXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL29jLWxuYy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzXCIsXG5cdFwiLi9wYS1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BhLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3B0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcHQtYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC1ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9yby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3J1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vcnUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9zZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9za1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NxXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NyLWN5cmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLWN5cmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3N3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vdGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGV0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90aFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzXCIsXG5cdFwiLi90ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RsLXBoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGwtcGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdGxoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90emxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHpsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanNcIixcblx0XCIuL3R6bVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi90em0tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3VnLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWctY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanNcIixcblx0XCIuL3VrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3V6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdXotbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXotbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi92aVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4veC1wc2V1ZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi94LXBzZXVkby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3lvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qc1wiLFxuXHRcIi4veW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi96aC1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWNuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtaGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1oay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLW1vXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qc1wiLFxuXHRcIi4vemgtbW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC10d1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIixcblx0XCIuL3poLXR3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuNjY3IDIuNjY2aC0xLjMzM1YyQS42NjYuNjY2IDAgMSAwIDEwIDJ2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2SDMuMzM0YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzMzYTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NyAxMGEuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWOGgxMC42NjZ2NC42NjZabTAtNkgyLjY2N3YtMkEuNjY3LjY2NyAwIDAgMSAzLjMzNCA0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMFY0aDR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjRoMS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42NjZ2MlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0IDEzLjMzM0gyLjY2N1YxMmgyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLTJWOS4zMzNoNC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0gyLjY2N1Y2LjY2NkgxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDIuNjY3VjRoMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNGgtMTBWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjEyYS42NjcuNjY3IDAgMCAwIC42NjYuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjMzNCA3LjMzNGg1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTAuNjY3IDMuMkEuNjY3LjY2NyAwIDAgMCAxMCAyLjY2N0g2YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY3LjY2NyAwIDAgMCAuNTI3LjI0N1pNNi41NDcgNGgyLjkwN2wuNCAySDYuMTQ3bC40LTJabTguMTIgNS4yQS42NjcuNjY3IDAgMCAwIDE0IDguNjY3aC00YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTQuNjY3IDkuMlptLTQuNTIgMi44LjQtMmgyLjkwNmwuNCAyaC0zLjcwNlpNNiA4LjY2OEgyYS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMNi42NjcgOS4yQS42NjcuNjY3IDAgMCAwIDYgOC42NjdabS0zLjg1MyAzLjMzNC40LTJoMi45MDdsLjQgMkgyLjE0N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk03LjMzNCA2SDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNIOC42NjdWNGEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdhMiAyIDAgMCAwIDAgNGgxLjMzM2EuNjY3LjY2NyAwIDAgMSAwIDEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGgxLjMzNFYxMmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwdi0uNjY2YTIgMiAwIDAgMCAwLTRINy4zMzRhLjY2Ny42NjcgMCAwIDEgMC0xLjMzNFpNOCAuNjY3YTcuMzMzIDcuMzMzIDAgMSAwIDAgMTQuNjY3QTcuMzMzIDcuMzMzIDAgMCAwIDggLjY2N1pNOCAxNEE2IDYgMCAxIDEgOCAyYTYgNiAwIDAgMSAwIDEyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMTIgNC41ODdhMi45MzMgMi45MzMgMCAwIDAtMi4yMDYtLjIxMyAyLjkxMyAyLjkxMyAwIDAgMC01LjgyIDAgMi45ODcgMi45ODcgMCAwIDAtMi4yMDcuMTkzQTIuOTEzIDIuOTEzIDAgMCAwIDMuMjk0IDkuOWEyLjkzMyAyLjkzMyAwIDAgMC0uNTM0IDEuNjY3Yy4wMDMuMTY4LjAxOS4zMzUuMDQ3LjVhMi44OTMgMi44OTMgMCAwIDAgMi44NiAyLjQyYy4xNDIuMDEuMjg1LjAxLjQyNyAwQTIuOTQ3IDIuOTQ3IDAgMCAwIDggMTMuMzM0YTIuOTQ3IDIuOTQ3IDAgMCAwIDEuOTA3IDEuMTI2Yy4xNDIuMDEuMjg1LjAxLjQyNyAwYTIuOTA3IDIuOTA3IDAgMCAwIDIuMzczLTQuNTggMi45MDcgMi45MDcgMCAwIDAgLjQxMy01LjMzM3YuMDRaTTYuODk0IDMuMjk0YTEuNiAxLjYgMCAwIDEgMi4yMTMgMCAxLjYyIDEuNjIgMCAwIDEgLjM0NyAxLjc3M2wtLjE3NC4zOTMtLjQ0LjM4N0EyLjcxMyAyLjcxMyAwIDAgMCA4IDUuN2MtLjM3IDAtLjczNS4wNzgtMS4wNzMuMjI3bC0uMzczLS44NmExLjU5MyAxLjU5MyAwIDAgMSAuMzQtMS43NzNabS00LjA2NyA0LjU2QTEuNTggMS41OCAwIDAgMSA1LjI5NCA2bC4zMjYuMjg3LjIzNC41MzNhMi42MTMgMi42MTMgMCAwIDAtLjUyIDEuNTQ3IDEuOSAxLjkgMCAwIDAgMCAuM2gtLjM2N2wtLjU2LjA1M2ExLjU4IDEuNTggMCAwIDEtMS41OC0uODY2Wm00LjQgNC4wNTNhMS41ODcgMS41ODcgMCAwIDEtMy4xMDctLjA1MyAyLjA0NyAyLjA0NyAwIDAgMSAwLS4yOCAxLjU1MyAxLjU1MyAwIDAgMSAuNzgtMS4zMzRsLjM0LS4yNC42MDctLjA2NmMuMzgyLjUzMi45NDcuOTA0IDEuNTg3IDEuMDQ2bC0uMjA3LjkyN1pNOCA5LjdhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2NkExLjMzMyAxLjMzMyAwIDAgMSA4IDkuN1ptMy44OCAyLjE0N2ExLjU3MyAxLjU3MyAwIDAgMS0xLjc4NiAxLjI5MyAxLjU5MyAxLjU5MyAwIDAgMS0xLjMzNC0xLjIzM2wtLjA5My0uNC4xNC0uNjEzYTIuNjY3IDIuNjY3IDAgMCAwIDEuNDY3LTEuMTc0bC4zMzMuMmguMDZsLjQ0LjI2YTEuNTg3IDEuNTg3IDAgMCAxIC43NzMgMS42NjdabTEuMjk0LTRhMS41OTQgMS41OTQgMCAwIDEtMS40Mi44ODdoLS4xNmwtLjQyNy0uMDY3LS41LS4yNzNjMC0uNjQ5LS4yMzgtMS4yNzQtLjY2Ny0xLjc2bC4yODctLjI0Ny40Mi0uMzg3YTEuNTggMS41OCAwIDAgMSAyLjQ2NyAxLjg4di0uMDMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMzM0IDUuOTZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE2LjcxNiAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjdoLS4wNmEuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoNi42NjdhMiAyIDAgMCAwIDItMlY1Ljk2Wm0tNC0yLjM1NCAxLjcyNiAxLjcyN0gxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZaTTEyIDEyLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N0g0LjY2N0EuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMnY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTYgOC42NjZjLS4xNDcgMC0uMy0uMDQ2LS40NDctLjA4YTYuMjkgNi4yOSAwIDAgMS0uODczLS4yNiAxLjMzMyAxLjMzMyAwIDAgMC0xLjY1My42NjdsLS4xNDcuM0E4LjEyIDguMTIgMCAwIDEgOC4wNjcgNy45NmE4LjEyIDguMTIgMCAwIDEtMS4zMzQtMS43NzRMNy4wMTMgNmExLjMzMyAxLjMzMyAwIDAgMCAuNjY3LTEuNjU0IDYuODg3IDYuODg3IDAgMCAxLS4yNi0uODczYy0uMDMzLS4xNDctLjA2LS4zLS4wOC0uNDUzYTIgMiAwIDAgMC0yLTEuNjZoLTJhMiAyIDAgMCAwLTIgMi4yNzMgMTIuNjY3IDEyLjY2NyAwIDAgMCAxMS4wMTMgMTAuOTczaC4yNTRhMiAyIDAgMCAwIDEuODI3LTEuMTg1IDIgMiAwIDAgMCAuMTczLS44MjF2LTJhMiAyIDAgMCAwLTEuNjQ3LTEuOTM0Wm0uMzMzIDRhLjY2Ni42NjYgMCAwIDEtLjQ4Mi42NDEuNzA3LjcwNyAwIDAgMS0uMjkuMDI2QTExLjMzMyAxMS4zMzMgMCAwIDEgMi43MTIgMy40OGEuNzI3LjcyNyAwIDAgMSAuMTY3LS41NDcuNjY3LjY2NyAwIDAgMSAuNS0uMjI3aDJhLjY2Ny42NjcgMCAwIDEgLjY2Ny41MjcgNy40MTQgNy40MTQgMCAwIDAgLjQwNyAxLjU3M2wtLjkzNC40MzRhLjY2Ny42NjcgMCAwIDAtLjMyNy44ODYgOS42NiA5LjY2IDAgMCAwIDQuNjY3IDQuNjY3LjY2Ni42NjYgMCAwIDAgLjUwNyAwIC42NjUuNjY1IDAgMCAwIC4zOC0uMzQ3bC40MTMtLjkzM2MuMzQ1LjEyMy42OTcuMjI2IDEuMDUzLjMwNy4xNzguMDQuMzU4LjA3My41NC4xYS42NjcuNjY3IDAgMCAxIC41MjcuNjY2bC4wMTMgMi4wOFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjE0NiA4YTIgMiAwIDAgMCAuNTItMS4zMzMgMiAyIDAgMCAwLTItMkg5LjIxM0EyIDIgMCAwIDAgNy4zMzMgMmgtNGEyIDIgMCAwIDAtMiAyIDIgMiAwIDAgMCAuNTIgMS4zMzMgMiAyIDAgMCAwIDAgMi42NjcgMiAyIDAgMCAwIDAgMi42NjdBMiAyIDAgMCAwIDEuMzMzIDEyYTIgMiAwIDAgMCAyIDJoOS4zMzNhMiAyIDAgMCAwIDEuNDgtMy4zMzMgMiAyIDAgMCAwIDAtMi42NjdabS02LjgxMyA0LjY2N2gtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0aDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzNFptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzMzaDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDEgMSAwLTEuMzMzaDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1ptMC0yLjY2NmgtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0aDRhLjY2Ny42NjcgMCAxIDEgMCAxLjMzNFptNS43OTMgNy44MDZhLjYyLjYyIDAgMCAxLS40Ni4xOTRIOS4yMTNjLjE2LS40My4xNi0uOTA0IDAtMS4zMzRoMy40NTNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3M1ptMC0yLjY2NmEuNjIuNjIgMCAwIDEtLjQ2LjE5M0g5LjIxM2MuMTYtLjQzLjE2LS45MDMgMC0xLjMzM2gzLjQ1M2EuNjY2LjY2NiAwIDAgMSAuNjY3LjY2Ni42NjYuNjY2IDAgMCAxLS4yMDcuNDc0Wm0wLTIuNjY3YS42Mi42MiAwIDAgMS0uNDYuMTkzSDkuMjEzYy4xNi0uNDMuMTYtLjkwMyAwLTEuMzMzaDMuNDUzYS42NjYuNjY2IDAgMCAxIC42NjcuNjY3LjY2Ni42NjYgMCAwIDEtLjIwNy40NzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzMyA1LjMzM0gxMEEuNjY3LjY2NyAwIDEgMCAxMCA0aC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNGgtLjY2N2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY2YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjdWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjYgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNabS01LjMzNCAwSDcuMzMzdi0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzQgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY3LS42NjdINi42NjZBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjMzNC42NjdIMi42NjdhMiAyIDAgMCAwLTIgMnYxMC42NjdhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlYyLjY2N2EyIDIgMCAwIDAtMi0yWk01LjMzNCAxNEgyLjY2N0EuNjY3LjY2NyAwIDAgMSAyIDEzLjMzNHYtLjc4N2EyIDIgMCAwIDAgLjY2Ny4xMmgyLjY2N1YxNFptMC0yLjY2NkgyLjY2N0EuNjY3LjY2NyAwIDAgMSAyIDEwLjY2N1Y5Ljg4YTIgMiAwIDAgMCAuNjY3LjEyaDIuNjY3djEuMzM0Wm0wLTIuNjY3SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgOFYyLjY2N0EuNjY3LjY2NyAwIDAgMSAyLjY2NyAyaDIuNjY3djYuNjY3Wm00IDUuMzMzSDYuNjY3di00aDIuNjY3djRabTAtNS4zMzNINi42NjdWMmgyLjY2N3Y2LjY2N1pNMTQgMTMuMzM0YS42NjcuNjY3IDAgMCAxLS42NjYuNjY2aC0yLjY2N3YtMS4zMzNoMi42NjdhMiAyIDAgMCAwIC42NjYtLjEydi43ODdabTAtMi42NjdhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdoLTIuNjY3VjEwaDIuNjY3QTIgMiAwIDAgMCAxNCA5Ljg4di43ODdaTTE0IDhhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdoLTIuNjY3VjJoMi42NjdhLjY2Ny42NjcgMCAwIDEgLjY2Ni42NjdWOFptLTItMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNC42NjcuNjY3IDAgMCAwIDAtMS4zMzRaTTQgNmEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzQS42NjcuNjY3IDAgMCAwIDQgNlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQgNy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzMy42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTggMGEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0LjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMS4zMzQtNEgyLjY2N2EyIDIgMCAwIDAtMiAydjUuMzMzYTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWNS4zMzNhMiAyIDAgMCAwLTItMlpNMTQgMTAuNjY2YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDIuNjY3QS42NjYuNjY2IDAgMCAxIDIgMTAuNjY2VjUuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2gxMC42NjdhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2NS4zMzNaTTggNmEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRabTAgMi42NjZhLjY2Ny42NjcgMCAxIDEgMC0xLjMzMy42NjcuNjY3IDAgMCAxIDAgMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMS4zMzMgNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY1LjA2TDUuMTQgNC4xOTNhLjY3LjY3IDAgMCAwLS45NDcuOTQ3bDUuNTMzIDUuNTI2aC01LjA2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoNi42NjdhLjY2Ny42NjcgMCAwIDAgLjY2Ny0uNjY3VjQuNjY2QS42NjYuNjY2IDAgMCAwIDExLjMzMyA0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTYuNjY2IDExLjctMS4xOCAxLjE0N2ExLjY1IDEuNjUgMCAwIDEtMi4zMzMtMi4zMzNMNi4xOCA3LjQ4YTEuNjQgMS42NCAwIDAgMSAyLjI2LS4wNmwuMDguMDY3YS42NjcuNjY3IDAgMCAwIC45MzMtLjk1MyAxLjgzNiAxLjgzNiAwIDAgMC0uMTItLjE0IDIuOTczIDIuOTczIDAgMCAwLTQuMDYuMTQ2TDIuMjA2IDkuNTc0YTIuOTg3IDIuOTg3IDAgMCAwIDQuMjIgNC4yMmwxLjE1NC0xLjEyN2EuNjY3LjY2NyAwIDAgMC0uOTE0LS45NjdabTcuMTI3LTkuNDkzYTIuOTkzIDIuOTkzIDAgMCAwLTQuMjIgMEw4LjQyIDMuMzM0YS42NjcuNjY3IDAgMCAwIC45MTMuOTY2bDEuMTUzLTEuMTQ2YTEuNjUgMS42NSAwIDAgMSAyLjMzNCAyLjMzM0w5Ljc5MyA4LjUyYTEuNjQgMS42NCAwIDAgMS0yLjI2LjA2bC0uMDgtLjA2NmEuNjY3LjY2NyAwIDAgMC0uOTMzLjk1MyAyLjk4IDIuOTggMCAwIDAgNC4yMTMtLjAwN2wzLjAzMy0zLjAzM2EyLjk5MyAyLjk5MyAwIDAgMCAuMDI3LTQuMjJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzMyA3LjMzNGgtLjY2NnYtLjY2N2EuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjdoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2guNjY2di42NjdhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMHYtLjY2N2guNjY2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTQuMTA3LTRBNC4xOTQgNC4xOTQgMCAwIDAgOCAyLjk0YTQuMTggNC4xOCAwIDAgMC01LjQ0IDYuMzJsNCA0LjAzNGEyIDIgMCAwIDAgMi44MjcgMGw0LTQuMDM0YTQuMTggNC4xOCAwIDAgMCAuMDUzLTUuOTI2Wm0tLjk0IDQuOTczLTQgNGEuNjY2LjY2NiAwIDAgMS0uOTQ3IDBsLTQtNGEyLjg2IDIuODYgMCAwIDEgMC00IDIuODQ3IDIuODQ3IDAgMCAxIDQgMCAuNjY3LjY2NyAwIDAgMCAuOTQ3IDAgMi44NDcgMi44NDcgMCAwIDEgNCAwIDIuODYgMi44NiAwIDAgMSAwIDQuMDEzdi0uMDEzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy4zMzMgNS4zMzNoOS4zMzRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0gzLjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xMC42NjcgMkgyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptLTEuMzMzIDMuMzM0SDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjA4NyAyLjQzM2EuNjY3LjY2NyAwIDAgMC0uNTYtLjEzMyA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ny0uODQ3LjY2Ny42NjcgMCAwIDAtLjc2IDAgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDYuODQ3LjY2Ny42NjcgMCAwIDAtLjgwNy42NTNWNy45MmE2IDYgMCAwIDAgMi41MTMgNC44ODZsMi40MzQgMS43MzRhLjY2Ny42NjcgMCAwIDAgLjc3MyAwbDIuNDMzLTEuNzM0YTYgNiAwIDAgMCAyLjUxNC00Ljg4NlYyLjk1M2EuNjY3LjY2NyAwIDAgMC0uMjQ3LS41MlpNMTIgNy45MmE0LjY2NiA0LjY2NiAwIDAgMS0xLjk1MyAzLjhMOCAxMy4xOGwtMi4wNDYtMS40NkE0LjY2NyA0LjY2NyAwIDAgMSA0IDcuOTJ2LTQuMmE2LjY2NyA2LjY2NyAwIDAgMCA0LS45MjcgNi42NjcgNi42NjcgMCAwIDAgNCAuOTI3djQuMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTcuMzMzIDcuOTMzdjMuNGEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwdi0zLjRhMy4zMzMgMy4zMzMgMCAxIDAtMS4zMzQgMFpNOCAyLjY2N2EyIDIgMCAxIDEgMCA0IDIgMiAwIDAgMSAwLTRabTIuODA3IDYuOTQ2YS42ODEuNjgxIDAgMCAwLS4yOCAxLjMzNGMxLjUxMy4zIDIuMTQuODQgMi4xNCAxLjA1MyAwIC4zODctMS42MzQgMS4zMzMtNC42NjcgMS4zMzNTMy4zMzMgMTIuMzg3IDMuMzMzIDEyYzAtLjIxMy42MjctLjc1MyAyLjE0LTEuMDhhLjY4MS42ODEgMCAwIDAtLjI4LTEuMzMzQzMuMTY3IDEwLjA1MyAyIDEwLjkyNyAyIDEyYzAgMS43NTMgMy4wMiAyLjY2NyA2IDIuNjY3czYtLjkxNCA2LTIuNjY3YzAtMS4wNzMtMS4xNjctMS45NDctMy4xOTMtMi4zODdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0yIDMuMzMzaDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMiAxNCAySDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NlptMTIgOS4zMzRINy4zMzNjLS40IDAtLjY2Ni4yNjYtLjY2Ni42NjZzLjI2Ny42NjcuNjY3LjY2N0gxNGMuNCAwIC42NjctLjI2Ny42NjctLjY2N3MtLjI2Ny0uNjY2LS42NjctLjY2NlptMC01LjMzNEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY3LjY2Ny42NjdoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA3LjMzMyAxNCA3LjMzM1pNMTQgMTBIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2aDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMTAgMTQgMTBabTAtNS4zMzNIMmMtLjQgMC0uNjY3LjI2Ni0uNjY3LjY2NlMxLjYgNiAyIDZoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA0LjY2NyAxNCA0LjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTEzLjMzMyA1LjMzMy00LTMuNTA2YTIgMiAwIDAgMC0yLjY2NiAwbC00IDMuNTA2QTIgMiAwIDAgMCAyIDYuODR2NS44MjdhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNi44MzNhMiAyIDAgMCAwLS42NjctMS41Wm0tNCA4SDYuNjY3VjEwYS42NjcuNjY3IDAgMCAxIC42NjYtLjY2N2gxLjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YzLjMzM1ptMy4zMzQtLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2NmgtMS4zMzNWMTBhMiAyIDAgMCAwLTItMkg3LjMzM2EyIDIgMCAwIDAtMiAydjMuMzMzSDRhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY2VjYuODMzYS42NjcuNjY3IDAgMCAxIC4yMjctLjVsNC0zLjVhLjY2Ny42NjcgMCAwIDEgLjg4IDBsNCAzLjVhLjY2Ny42NjcgMCAwIDEgLjIyNy41djUuODM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxN1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA4LjVhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00Wm0wIDIuNjY2YS42NjcuNjY3IDAgMSAxIDAtMS4zMzQuNjY3LjY2NyAwIDAgMSAwIDEuMzM0Wm0tLjQ3My00LjE5M2MuMDYzLjA2LjEzOC4xMDguMjIuMTRhLjYyNy42MjcgMCAwIDAgLjUwNyAwIC42NjcuNjY3IDAgMCAwIC4yMi0uMTRMMTAgNS40NzNhLjY4OC42ODggMCAxIDAtLjk3My0uOTczbC0uMzYuMzkzVjIuNWEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjIuMzkzbC0uMzYtLjM5M0EuNjg4LjY4OCAwIDAgMCA2IDUuNDczbDEuNTI3IDEuNVptNS4xNCAzLjUyN2EuNjY2LjY2NiAwIDEgMC0xLjMzMiAwIC42NjYuNjY2IDAgMCAwIDEuMzMyIDBabS42NjctNC42NjdoLTJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gyYS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djUuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDIuNjY3QS42NjYuNjY2IDAgMCAxIDIgMTMuMTY2VjcuODMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2gyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTJhMiAyIDAgMCAwLTIgMnY1LjMzM2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjcuODMzYTIgMiAwIDAgMC0yLTJabS0xMCA0LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwIC42NjcuNjY3IDAgMCAwLTEuMzM0IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTEwIDhINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAxIDAgMTAgOFptMCAyLjY2Nkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0zLjE0IDIuODZhMS4wODUgMS4wODUgMCAwIDAtLjEtLjA4LjUwNy41MDcgMCAwIDAtLjEyLS4wNmwtLjEyLS4wNTNhLjY2Ny42NjcgMCAwIDAtLjM4Ni4wNC41OTkuNTk5IDAgMCAwLS4zNi4zNkEuNTYuNTYgMCAwIDAgMTIgMTRhLjY2OC42NjggMCAxIDAgMS4yOC0uMjU0Ljc2Ni43NjYgMCAwIDAtLjE0LS4yMlptLjE5NC03LjU2NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTYuNzE2IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMkgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDQuNjY3QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgyVjhhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY1Ljk2Wk0xMCA1LjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZsMS43MjYgMS43MjdIMTBaTTEyLjY2NyAxMGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NlYxMmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwdi0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LS42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0xNC4yMTMgMy4zNjctNC0xLjMzM2gtLjA0NmEuNDY2LjQ2NiAwIDAgMC0uMDk0IDBoLS4yODZMNiAzLjMzNGwtMy43ODctMS4zYS42NjcuNjY3IDAgMCAwLS42LjA5My42NjcuNjY3IDAgMCAwLS4yOC41NFYxMmEuNjY2LjY2NiAwIDAgMCAuNDU0LjYzM2w0IDEuMzM0YS42NjcuNjY3IDAgMCAwIC40MTMgMEwxMCAxMi43bDMuNzg3IDEuM2MuMDcuMDEuMTQyLjAxLjIxMyAwYS42MjYuNjI2IDAgMCAwIC4zODctLjEyNy42NjYuNjY2IDAgMCAwIC4yOC0uNTRWNGEuNjY3LjY2NyAwIDAgMC0uNDU0LS42MzNabS04Ljg4IDkuMDQtMi42NjYtLjg4N1YzLjU5NGwyLjY2Ny44ODZ2Ny45MjdabTQtLjg4Ny0yLjY2Ni44ODdWNC40OGwyLjY2Ny0uODg2djcuOTI2Wm00IC44ODctMi42NjYtLjg4N1YzLjU5NGwyLjY2Ny44ODZ2Ny45MjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy42NCA2LjQyYTUuNjY2IDUuNjY2IDAgMCAwLTguNzczLTQuMThBNS43MDcgNS43MDcgMCAwIDAgMi4zNiA2LjQyIDUuNjQgNS42NCAwIDAgMCA0IDEwLjk3M2wzLjUzMyAzLjU0YS42NjYuNjY2IDAgMCAwIC45NDcgMGwzLjUyLTMuNTRhNS42MzggNS42MzggMCAwIDAgMS42NC00LjU1M1ptLTIuNTczIDMuNjEzTDggMTMuMWwtMy4wNjctMy4wNjdhNC4zMjcgNC4zMjcgMCAwIDEtMS4yNDYtMy40OCA0LjM4IDQuMzggMCAwIDEgMS45MjYtMy4yMkE0LjMxMyA0LjMxMyAwIDAgMSAxMS43MSA0LjcyYy4zMzQuNTU1LjU0IDEuMTc2LjYwNCAxLjgyYTQuMzI2IDQuMzI2IDAgMCAxLTEuMjQ2IDMuNDkzWk04IDRhMyAzIDAgMSAwIDMgMyAzLjAwNyAzLjAwNyAwIDAgMC0zLTNabTAgNC42NjZhMS42NjcgMS42NjcgMCAxIDEgMC0zLjMzMyAxLjY2NyAxLjY2NyAwIDAgMSAwIDMuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNC42NjcgMTAuNjY2YTEgMSAwIDAgMCAxLTEgLjUxNC41MTQgMCAwIDAgMC0uMWwxLjg2LTEuODZoLjMwNkw4LjkwNyA4Ljc4di4wNTNhMSAxIDAgMSAwIDIgMFY4Ljc4bDIuNDI2LTIuNDQ3YTEgMSAwIDEgMC0xLTEgLjUyMi41MjIgMCAwIDAgMCAuMUw5LjkyNyA3Ljg0SDkuODJMOC42NjcgNi42NjZhMSAxIDAgMCAwLTIgMGwtMiAyYTEgMSAwIDAgMCAwIDJabTkgMi42NjdIMi4zMzNWMkEuNjY3LjY2NyAwIDEgMCAxIDJ2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ny42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjA4NyAyLjQzM2EuNjY3LjY2NyAwIDAgMC0uNTYtLjEzMyA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ny0uODQ3LjY2Ny42NjcgMCAwIDAtLjc2IDAgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDYuODQ3LjY2Ny42NjcgMCAwIDAtLjgwNy42NTNWNy45MmE2IDYgMCAwIDAgMi41MTMgNC44ODZsMi40MzQgMS43MzRhLjY2Ny42NjcgMCAwIDAgLjc3MyAwbDIuNDMzLTEuNzM0YTYgNiAwIDAgMCAyLjUxNC00Ljg4NlYyLjk1M2EuNjY3LjY2NyAwIDAgMC0uMjQ3LS41MlpNMTIgNy45MmE0LjY2NiA0LjY2NiAwIDAgMS0xLjk1MyAzLjhMOCAxMy4xOGwtMi4wNDYtMS40NkE0LjY2NyA0LjY2NyAwIDAgMSA0IDcuOTJ2LTQuMmE2LjY2NyA2LjY2NyAwIDAgMCA0LS45MjcgNi42NjcgNi42NjcgMCAwIDAgNCAuOTI3djQuMlpNOS4wMjcgNi4zOTNsLTEuNzkzIDEuOC0uNTk0LS42YS42Ny42NyAwIDAgMC0uOTQ2Ljk0N0w2Ljc2IDkuNjA2YS42NjcuNjY3IDAgMCAwIC45NDcgMEwxMCA3LjMzM2EuNjcuNjcgMCAxIDAtLjk0Ni0uOTQ3bC0uMDI3LjAwN1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNjM0IDE3LjlhLjUuNSAwIDAgMS0uNTI0LjA0N2wtLjE0OS4yOTcuMTQ5LS4yOTdhLjUuNSAwIDAgMS0uMjAyLS4xODRsLS4yODMuMTc0LjI4My0uMTc0YS41LjUgMCAwIDEtLjA3NS0uMjYzdi0xNWEuNS41IDAgMCAxIC41LS41aDEzLjMzNGEuNS41IDAgMCAxIC41LjV2MTQuOTk5YS41LjUgMCAwIDEtLjI3NS40NDVoLS4wMDFhLjUuNSAwIDAgMS0uNTI1LS4wNDVsLTEuNzI0LTEuMjktLjItLjE1LS4yLjE1LTEuNzE3IDEuMjkxYS41LjUgMCAwIDEtLjYgMEwxMC4yIDE2LjYwOGwtLjItLjE1LS4yLjE1TDguMDc1IDE3LjlhLjUuNSAwIDAgMS0uNiAwbC0xLjcxNi0xLjI5MS0uMi0uMTUtLjIuMTUtMS43MjUgMS4yOVptMTItMS44LjUzMy4zOTlWM0gzLjgzM3YxMy40OTlsLjUzMy0uMzk5Ljg5Mi0uNjY2YS41LjUgMCAwIDEgLjYgMGwxLjcxNyAxLjI5LjIuMTUxLjItLjE1TDkuNyAxNS40MzNhLjUuNSAwIDAgMSAuNiAwbDEuNzI1IDEuMjkyLjIuMTUuMi0uMTUgMS43MTctMS4yOTJhLjUuNSAwIDAgMSAuNiAwbC44OTIuNjY3Wm0tMi4zLTkuNzY3aC01YS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzRINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzNINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDEgMSAwIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDcuMmExLjMzMyAxLjMzMyAwIDEgMCAwLTIuNjY3QTEuMzMzIDEuMzMzIDAgMCAwIDggNy4yWm0tLjQ3MyA0LjYwNmEuNjY2LjY2NiAwIDAgMCAuOTQ2IDBMMTEuMiA5LjA3M2E0LjUyNyA0LjUyNyAwIDEgMC02LjQgMGwyLjcyNyAyLjczM1pNNC44MiA1LjU2YTMuMjA3IDMuMjA3IDAgMCAxIDEuNDItMi4zNjcgMy4yMDcgMy4yMDcgMCAwIDEgMy41MiAwIDMuMjEzIDMuMjEzIDAgMCAxIC41IDQuOTRMOCAxMC4zOTNsLTIuMjYtMi4yNmEzLjE4IDMuMTggMCAwIDEtLjkyLTIuNTczWm03Ljg0NiA3Ljc3M0gzLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDkuMzM0YS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NiA0YS42NjcuNjY3IDAgMSAwIDAgMS4zMzMuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm05LjgwNyAzLjg1My02LjMyLTYuMzA3YS42NjcuNjY3IDAgMCAwLS40ODctLjIxM2gtNGEuNjY3LjY2NyAwIDAgMC0uNDczLjE5M2wtMS42NjcgMS42NmEuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3NHY0YS43LjcgMCAwIDAgLjE5My40NzNsNi4zMjcgNi4zMzNhLjcuNyAwIDAgMCAuNDczLjE5NC42NjYuNjY2IDAgMCAwIC40NzQtLjE5NGw1LjY3My01LjY3M2EuNjY3LjY2NyAwIDAgMCAwLS45NFpNOC4zMjYgMTMuMDZsLTUuNjYtNS42Njd2LTMuNDZsMS4yNjctMS4yNjdoMy40NTNsNS42NjcgNS42Ni00LjcyNyA0LjczNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYuNjY3IDUuMzMzaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk01LjMzMyA4aDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFptMCAyLjY2Nmg1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtOS4zMzNIMi42NjdBLjY2Ny42NjcgMCAwIDAgMiAydjEyYS42NjcuNjY3IDAgMCAwIDEuMDY3LjUzM2wxLjM4LTEuMDMzIDEuMzczIDEuMDMzYS42NjYuNjY2IDAgMCAwIC44IDBMOCAxMy41bDEuMzggMS4wMzNhLjY2Ni42NjYgMCAwIDAgLjggMGwxLjM3My0xLjAzMyAxLjM4IDEuMDMzQS42NjcuNjY3IDAgMCAwIDE0IDE0VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMS4zMzMtLjcxNC0uNTMzYS42NjcuNjY3IDAgMCAwLS44IDBMOS43OCAxMy4xNjYgOC40IDEyLjEzM2EuNjY3LjY2NyAwIDAgMC0uOCAwbC0xLjM4IDEuMDMzLTEuMzczLTEuMDMzYS42NjcuNjY3IDAgMCAwLS44IDBsLS43MTQuNTMzdi0xMGg5LjMzNHYxMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3Qgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiOVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PHBhdGggZD1cXFwiTTIgOWE3IDcgMCAxIDEgMTQgMEE3IDcgMCAxIDEgMiA5WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PHBhdGggZD1cXFwiTTEzLjA4MyA4LjQxNmgtMy41di0zLjVhLjU4My41ODMgMCAwIDAtMS4xNjcgMHYzLjVoLTMuNWEuNTgzLjU4MyAwIDAgMCAwIDEuMTY3aDMuNXYzLjVhLjU4My41ODMgMCAwIDAgMS4xNjcgMHYtMy41aDMuNWEuNTgzLjU4MyAwIDAgMCAwLTEuMTY3WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjkzNSA3LjMzM2gtNHYtNGEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdjRoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0djRhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMHYtNGg0YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMCA1YTEgMSAwIDAgMC0xIDF2NGExIDEgMCAxIDAgMiAwVjZhMSAxIDAgMCAwLTEtMVptLjkyIDguNjJhLjc1OC43NTggMCAwIDAtLjA5LS4xOGwtLjEyLS4xNWEuOTk5Ljk5OSAwIDAgMC0xLjA5LS4yMSAxLjE1IDEuMTUgMCAwIDAtLjMzLjIxIDEgMSAwIDAgMC0uMjEgMS4wOS45LjkgMCAwIDAgLjU0LjU0Ljk0Ljk0IDAgMCAwIC43NiAwIC45LjkgMCAwIDAgLjU0LS41NGMuMDUxLS4xMi4wNzgtLjI1LjA4LS4zOGExLjM2MiAxLjM2MiAwIDAgMCAwLS4yLjYzOS42MzkgMCAwIDAtLjA4LS4xOFpNMTAgMGExMCAxMCAwIDEgMCAwIDIwIDEwIDEwIDAgMCAwIDAtMjBabTAgMThhOCA4IDAgMSAxIDAtMTYgOCA4IDAgMCAxIDAgMTZaXFxcIiBmaWxsPVxcXCIjRjZDMzk4XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMSAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNDY0IDEuNjY3QzUuODggMS42NjcgMi4xMyA1LjQxNyAyLjEzIDEwYzAgNC41ODQgMy43NSA4LjMzNCA4LjMzMyA4LjMzNHM4LjMzMy0zLjc1IDguMzMzLTguMzM0YzAtNC41ODMtMy43NS04LjMzMy04LjMzMy04LjMzM1ptMCAxMi41Yy0uNSAwLS44MzMtLjMzMy0uODMzLS44MzMgMC0uNS4zMzMtLjgzNC44MzMtLjgzNC41IDAgLjgzMy4zMzQuODMzLjgzNCAwIC41LS4zMzMuODMzLS44MzMuODMzWk0xMS4yOTcgMTBjMCAuNS0uMzMzLjgzNC0uODMzLjgzNC0uNSAwLS44MzMtLjMzNC0uODMzLS44MzRWNi42NjdjMC0uNS4zMzMtLjgzMy44MzMtLjgzMy41IDAgLjgzMy4zMzMuODMzLjgzM1YxMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuMzMzIDUuMzMzaDkuMzM0YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNIMy4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMTAuNjY3IDJIMmEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabS0xLjMzMyAzLjMzNEgzLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDkuMzM0YS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0yIDMuMzMzaDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMiAxNCAySDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NlptMTIgOS4zMzRINy4zMzNjLS40IDAtLjY2Ni4yNjYtLjY2Ni42NjZzLjI2Ny42NjcuNjY3LjY2N0gxNGMuNCAwIC42NjctLjI2Ny42NjctLjY2N3MtLjI2Ny0uNjY2LS42NjctLjY2NlptMC01LjMzNEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY3LjY2Ny42NjdoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA3LjMzMyAxNCA3LjMzM1pNMTQgMTBIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2aDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMTAgMTQgMTBabTAtNS4zMzNIMmMtLjQgMC0uNjY3LjI2Ni0uNjY3LjY2NlMxLjYgNiAyIDZoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA0LjY2NyAxNCA0LjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtOS41MjcgOS40Ni0yLjE5NCAyLjE5NC0uODYtLjg2YS42NjguNjY4IDAgMSAwLS45NDYuOTRsMS4zMzMgMS4zMzNhLjY2Ni42NjYgMCAwIDAgLjk0NyAwbDIuNjY2LTIuNjY3YS42NjcuNjY3IDAgMSAwLS45NDYtLjk0Wm0yLjc1My0zLjkxM2E0LjY2NyA0LjY2NyAwIDAgMC04LjkwNyAxLjI2NyAyLjY2NyAyLjY2NyAwIDAgMC0uMjUzIDUuMS42NjguNjY4IDAgMSAwIC40MjctMS4yNDcgMS4zMzMgMS4zMzMgMCAwIDEtLjg4LTEuMjY3QTEuMzMzIDEuMzMzIDAgMCAxIDQgOC4wNjdhLjY2Ny42NjcgMCAwIDAgLjY2Ny0uNjY3IDMuMzMzIDMuMzMzIDAgMCAxIDYuNDg2LTEuMDY2LjY2OC42NjggMCAwIDAgLjUyLjQ0IDIgMiAwIDAgMSAuMTYgMy44OTNBLjY3Mi42NzIgMCAxIDAgMTIgMTJoLjE2N2EzLjMzMyAzLjMzMyAwIDAgMCAuMTEzLTYuNDEzdi0uMDRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMTY3IDcuNjRhLjgzNC44MzQgMCAwIDAtMS4xNzUgMEwxMCAxMC41OSA3LjA1IDcuNjRhLjgzMy44MzMgMCAxIDAtMS4xNzUgMS4xODRsMy41MzQgMy41MzNhLjgzMy44MzMgMCAwIDAgMS4xODMgMGwzLjU3NS0zLjUzM2EuODMzLjgzMyAwIDAgMCAwLTEuMTgzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA4IDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDEuMDU0IDYuODA1IDAgMCA2bDYuODA1IDZMOCAxMC45NDcgMi4zOSA2IDggMS4wNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDggMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTAgMS4wNTQgMS4xOTUgMCA4IDZsLTYuODA1IDZMMCAxMC45NDcgNS42MSA2IDAgMS4wNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMThcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTQuMzExIDcuNDMgMy43NCA4aDEwLjkyNmExIDEgMCAwIDEgMCAySDMuNzRsLjU3MS41NjkgNC40IDQuMzg3YS45OTkuOTk5IDAgMCAxIDAgMS40MmwtLjAwMS4wMDJhMS4wMDEgMS4wMDEgMCAwIDEtMS40MiAwaC0uMDAxTC42MjUgOS43MTJhMSAxIDAgMCAxLS4yMDgtLjMyN0wuNDE1IDkuMzhhMSAxIDAgMCAxIDAtLjc2bC4wMDItLjAwN2ExIDEgMCAwIDEgLjIwOC0uMzI3bDYuNjY0LTYuNjY0QTEuMDA1IDEuMDA1IDAgMSAxIDguNzEgMy4wNDRMNC4zMSA3LjQzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNNS45NTUgMTAuMzMzaDQuNjdsLTIuMzM2IDIuMjUzLTIuMzM0LTIuMjUzWm0xLjg0NCAzLjE5NGMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40MTQuMTMyLTEuMTM0LS40ODMtMS4xMzRINS4xMjZjLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTYzIDMuMDUzWm0tMi42OC02Ljg2aDYuMzQxYy42MTUgMCAuOTI2LS43Mi40OS0xLjE0bC0zLjE3LTMuMDZhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDItLjEzMiAxLjE0LjQ4MyAxLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNjM0IDE3LjlhLjUuNSAwIDAgMS0uNTI0LjA0N2wtLjE0OS4yOTcuMTQ5LS4yOTdhLjUuNSAwIDAgMS0uMjAyLS4xODRsLS4yODMuMTc0LjI4My0uMTc0YS41LjUgMCAwIDEtLjA3NS0uMjYzdi0xNWEuNS41IDAgMCAxIC41LS41aDEzLjMzNGEuNS41IDAgMCAxIC41LjV2MTQuOTk5YS41LjUgMCAwIDEtLjI3NS40NDVoLS4wMDFhLjUuNSAwIDAgMS0uNTI1LS4wNDVsLTEuNzI0LTEuMjktLjItLjE1LS4yLjE1LTEuNzE3IDEuMjkxYS41LjUgMCAwIDEtLjYgMEwxMC4yIDE2LjYwOGwtLjItLjE1LS4yLjE1TDguMDc1IDE3LjlhLjUuNSAwIDAgMS0uNiAwbC0xLjcxNi0xLjI5MS0uMi0uMTUtLjIuMTUtMS43MjUgMS4yOVptMTItMS44LjUzMy4zOTlWM0gzLjgzM3YxMy40OTlsLjUzMy0uMzk5Ljg5Mi0uNjY2YS41LjUgMCAwIDEgLjYgMGwxLjcxNyAxLjI5LjIuMTUxLjItLjE1TDkuNyAxNS40MzNhLjUuNSAwIDAgMSAuNiAwbDEuNzI1IDEuMjkyLjIuMTUuMi0uMTUgMS43MTctMS4yOTJhLjUuNSAwIDAgMSAuNiAwbC44OTIuNjY3Wm0tMi4zLTkuNzY3aC01YS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzRINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzNINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDEgMSAwIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy42NDcgNC45MTNWNC44NmwtLjA0LS4xYS40NjYuNDY2IDAgMCAwLS4wNDctLjA2LjYyMy42MjMgMCAwIDAtLjA2LS4wOGwtLjA2LS4wNDctLjEwNy0uMDUzLTUtMy4wODdhLjY2Ny42NjcgMCAwIDAtLjcwNiAwTDIuNjY3IDQuNTJsLS4wNi4wNTMtLjA2LjA0N2EuNjI3LjYyNyAwIDAgMC0uMDYuMDguNDczLjQ3MyAwIDAgMC0uMDQ3LjA2bC0uMDQuMXYuMDUzYS43NjcuNzY3IDAgMCAwIDAgLjE3NHY1LjgyNmEuNjY3LjY2NyAwIDAgMCAuMzEzLjU2N2w1IDMuMDg3Yy4wMzEuMDE5LjA2NS4wMzIuMS4wNGguMDU0YS41NzQuNTc0IDAgMCAwIC4zNDYgMGguMDU0YS4zMTQuMzE0IDAgMCAwIC4xLS4wNGw0Ljk2Ni0zLjA4N2EuNjY4LjY2OCAwIDAgMCAuMzE0LS41NjdWNS4wODdhLjc2MS43NjEgMCAwIDAgMC0uMTc0Wm0tNi4zMTQgNy44OTRMMy42NjcgMTAuNTRWNi4yODdsMy42NjYgMi4yNnY0LjI2Wk04IDcuMzkzIDQuMjY3IDUuMDg3IDggMi43ODdsMy43MzMgMi4zTDggNy4zOTNabTQuMzMzIDMuMTQ3LTMuNjY2IDIuMjY3di00LjI2bDMuNjY2LTIuMjZ2NC4yNTNaXFxcIiBmaWxsPVxcXCIjQTY2RUU5XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNS4zMzQgNy4zMzRoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDEwLjY2NyAzLjJBLjY2Ny42NjcgMCAwIDAgMTAgMi42NjdINmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ny42NjcgMCAwIDAgLjUyNy4yNDdaTTYuNTQ3IDRoMi45MDdsLjQgMkg2LjE0N2wuNC0yWm04LjEyIDUuMkEuNjY3LjY2NyAwIDAgMCAxNCA4LjY2N2gtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDE0LjY2NyA5LjJabS00LjUyIDIuOC40LTJoMi45MDZsLjQgMmgtMy43MDZaTTYgOC42NjhIMmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDYuNjY3IDkuMkEuNjY3LjY2NyAwIDAgMCA2IDguNjY3Wm0tMy44NTMgMy4zMzQuNC0yaDIuOTA3bC40IDJIMi4xNDdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzNCA1LjMzM0gxMEEuNjY3LjY2NyAwIDAgMCAxMCA0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjZWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjcgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabS01LjMzMyAwSDcuMzM0di0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzMgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdINi42NjdBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTIuMzIyIDUuNjguMDkyLjIxMi4yMjEuMDY3YTIuODM0IDIuODM0IDAgMCAxLS4wOTQgNS40NS4xNjguMTY4IDAgMCAxLS4wODMtLjMyNWwuMDA4LS4wMDJhMi41IDIuNSAwIDAgMC0uMi00Ljg2NmwtLjAwOC0uMDAyYS4xNjcuMTY3IDAgMCAxLS4xMy0uMTEybC0uMDAyLS4wMDRhMy44MzQgMy44MzQgMCAwIDAtNy40NiAxLjIzNS4xNjcuMTY3IDAgMCAxLS4xNjYuMTY3IDEuODMzIDEuODMzIDAgMSAwIDAgMy42NjcuMTY3LjE2NyAwIDAgMSAwIC4zMzNoLS4wMDFhMi4xNjcgMi4xNjcgMCAwIDEtLjUxLTQuMjczbC4zMzYtLjA4LjA0NC0uMzQyYTQuMTY3IDQuMTY3IDAgMCAxIDcuOTUzLTEuMTI1Wm0tMi4zNyA0LjE5OS4wMDIuMDAzYS4xNjcuMTY3IDAgMCAxIDAgLjIzN2wtLjg2Ni44Ni0uMzU4LjM1NS4zNTguMzU0Ljg2Ni44NmEuMTY3LjE2NyAwIDAgMSAwIC4yMzdsLS4wMDIuMDAzYS4xNjYuMTY2IDAgMCAxLS4xODMuMDM3LjE2Ni4xNjYgMCAwIDEtLjA1NC0uMDM3bC0uODYtLjg2Ny0uMzU1LS4zNTctLjM1NS4zNTctLjg2Ljg2N2EuMTY2LjE2NiAwIDAgMS0uMTgzLjAzNy4xNjYuMTY2IDAgMCAxLS4wNTQtLjAzN2wtLjAwMy0uMDAzYS4xNjcuMTY3IDAgMCAxIDAtLjIzNmwuODY3LS44Ni4zNTgtLjM1NS0uMzU4LS4zNTUtLjg2NS0uODU5YS4xNy4xNyAwIDAgMSAuMjQtLjI0bC44NTguODY2LjM1NS4zNTcuMzU1LS4zNTcuODYtLjg2N2EuMTY3LjE2NyAwIDAgMSAuMjM3IDBaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBmaWxsPVxcXCIjMkEyRjMwXFxcIiBkPVxcXCJtOC40MSA3IDQuMy00LjI5YTEuMDA0IDEuMDA0IDAgMCAwLTEuNDItMS40Mkw3IDUuNTlsLTQuMjktNC4zYTEuMDA0IDEuMDA0IDAgMSAwLTEuNDIgMS40Mkw1LjU5IDdsLTQuMyA0LjI5YS45OTkuOTk5IDAgMCAwIDAgMS40MiAxIDEgMCAwIDAgMS40MiAwTDcgOC40MWw0LjI5IDQuM2ExLjAwMSAxLjAwMSAwIDAgMCAxLjYzOS0uMzI1IDEgMSAwIDAgMC0uMjItMS4wOTVMOC40MSA3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZD1cXFwiTTcgLjMzMmMtMy42NjcgMC02LjY2NyAzLTYuNjY3IDYuNjY3IDAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAzLjY2NiAwIDYuNjY2LTMgNi42NjYtNi42NjYgMC0zLjY2Ny0zLTYuNjY3LTYuNjY2LTYuNjY3Wm0yLjggNS41MzMtMy4yIDMuMmEuNjQ0LjY0NCAwIDAgMS0uOTM0IDBMNC4yIDcuNmEuNjQ0LjY0NCAwIDAgMSAwLS45MzQuNjQ0LjY0NCAwIDAgMSAuOTMzIDBsMSAxIDIuNzMzLTIuNzMzYS42NDQuNjQ0IDAgMCAxIC45MzQgMCAuNjQ1LjY0NSAwIDAgMSAwIC45MzNaXFxcIiBmaWxsPVxcXCIjMTc5OTdCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTcuMTY3IDMuMzM0di0uNWgtMTF2MTFoMTF2LTEwLjVaTTguMjA0IDguNzVsLjQ2My0uNDY2IDEuMzcgMS4zNzYuMzU1LjM1Ny4zNTQtLjM1NyAzLjkyLTMuOTUuNDYzLjQ2NS00LjczNyA0Ljc4TDguMjA0IDguNzVabS01LjM3IDcuOTE2di41SDE0LjV2LjY2N0gzLjMzM2MtLjY0IDAtMS4xNjYtLjUyNi0xLjE2Ni0xLjE2N1Y1LjVoLjY2NnYxMS4xNjdabTMuODMzLTE0LjVoMTBjLjY0IDAgMS4xNjYuNTI2IDEuMTY2IDEuMTY3djEwYzAgLjY0LS41MjYgMS4xNjYtMS4xNjYgMS4xNjZoLTEwYy0uNjQgMC0xLjE2Ny0uNTI2LTEuMTY3LTEuMTY2di0xMGMwLS42NC41MjYtMS4xNjcgMS4xNjctMS4xNjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDEwXFxcIj48cGF0aCBkPVxcXCJtLjc1IDUuMjUgMy41IDMuNSA3LTcuNVxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNVxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBjbGFzcz1cXFwiY2hldnJvbl9zdmdfX2ZlYXRoZXIgY2hldnJvbl9zdmdfX2ZlYXRoZXItY2hldnJvbnMtcmlnaHRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwibTEzIDE3IDUtNS01LTVNNiAxN2w1LTUtNS01XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMCAxMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNSAuNWMtMi43NSAwLTUgMi4yNS01IDVzMi4yNSA1IDUgNSA1LTIuMjUgNS01LTIuMjUtNS01LTVabTEuODUgNi4xNWMuMi4yLjIuNSAwIC43LS4yLjItLjUuMi0uNyAwTDUgNi4yIDMuODUgNy4zNWMtLjIuMi0uNS4yLS43IDAtLjItLjItLjItLjUgMC0uN0w0LjMgNS41IDMuMTUgNC4zNWMtLjItLjItLjItLjUgMC0uNy4yLS4yLjUtLjIuNyAwTDUgNC44bDEuMTUtMS4xNWMuMi0uMi41LS4yLjcgMCAuMi4yLjIuNSAwIC43TDUuNyA1LjVsMS4xNSAxLjE1WlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMTlcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkgMi40MzRjLTQuMTI1IDAtNy41IDMuMzc1LTcuNSA3LjVzMy4zNzUgNy41IDcuNSA3LjUgNy41LTMuMzc1IDcuNS03LjUtMy4zNzUtNy41LTcuNS03LjVabTIuNzc1IDkuMjI1Yy4zLjMuMy43NSAwIDEuMDUtLjMuMy0uNzUuMy0xLjA1IDBMOSAxMC45ODRsLTEuNzI1IDEuNzI1Yy0uMy4zLS43NS4zLTEuMDUgMC0uMy0uMy0uMy0uNzUgMC0xLjA1TDcuOTUgOS45MzQgNi4yMjUgOC4yMDljLS4zLS4zLS4zLS43NSAwLTEuMDUuMy0uMy43NS0uMyAxLjA1IDBMOSA4Ljg4NGwxLjcyNS0xLjcyNWMuMy0uMy43NS0uMyAxLjA1IDAgLjMuMy4zLjc1IDAgMS4wNUwxMC4wNSA5LjkzNGwxLjcyNSAxLjcyNVpcXFwiIGZpbGw9XFxcIiNFMzRENUJcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGQ9XFxcIk04Ljc1IDUuNDU3aC0xLjVBMS4wODMgMS4wODMgMCAwIDAgNi4xNjcgNi41NHYzYTEuMDgzIDEuMDgzIDAgMCAwIDEuMDgzIDEuMDgzaDEuNUExLjA4NCAxLjA4NCAwIDAgMCA5LjgzMyA5LjU0YS40MTcuNDE3IDAgMCAxIC44MzQgMCAxLjkxNyAxLjkxNyAwIDAgMS0xLjkxNyAxLjkxN2gtMS41QTEuOTE2IDEuOTE2IDAgMCAxIDUuMzMzIDkuNTR2LTNBMS45MTcgMS45MTcgMCAwIDEgNy4yNSA0LjYyM2gxLjVhMS45MTcgMS45MTcgMCAwIDEgMS45MTcgMS45MTcuNDE2LjQxNiAwIDEgMS0uODM0IDBBMS4wODMgMS4wODMgMCAwIDAgOC43NSA1LjQ1N1pNNC4wMTggMi4wOEE3LjE2NyA3LjE2NyAwIDEgMSAxMS45ODIgMTQgNy4xNjcgNy4xNjcgMCAwIDEgNC4wMTggMi4wOFptLjQ2MyAxMS4yMjVBNi4zMzQgNi4zMzQgMCAxIDAgMTEuNTIgMi43NzRhNi4zMzQgNi4zMzQgMCAwIDAtNy4wNCAxMC41MzJaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIiBzdHJva2U9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiMS4xODhcXFwiIHk9XFxcIjEuMjVcXFwiIHdpZHRoPVxcXCIyMS42MjVcXFwiIGhlaWdodD1cXFwiMjEuNjI0XFxcIiByeD1cXFwiMS43MjZcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiLz48cGF0aCBkPVxcXCJNMTMuNSA5LjgzOGMuMjI2LjAwMS40NTEuMDIuNjc0LjA2LjAzNy4yMTcuMDU1LjQzNy4wNTYuNjU3YTMuODQzIDMuODQzIDAgMCAxLS4wNjMuNjczTDEyLjgzIDkuOWMuMjIxLS4wNC40NDYtLjA2MS42NzEtLjA2M1ptLTMuNzQ5LS4wMTNhNS4yODMgNS4yODMgMCAwIDAtMS41MjggMy42OCAzLjcyMiAzLjcyMiAwIDEgMSA1LjItNS4yNDZjLTEuMzguMDIyLTIuNy41ODQtMy42NzIgMS41NjZabS4wNTUgMy4wMzggMS4zMzMgMS4zMzNjLS4yMjIuMDQtLjQ0Ny4wNjEtLjY3My4wNjJoLS4wMDJhMy45NiAzLjk2IDAgMCAxLS42Ni0uMDM4IDMuOTY4IDMuOTY4IDAgMCAxLS4wNi0uNjg1YzAtLjIyNS4wMjEtLjQ1LjA2Mi0uNjcyWm00LjQyIDEuNDI0YTUuMjg0IDUuMjg0IDAgMCAwIDEuNTUtMy42NzcgMy43MjMgMy43MjMgMCAwIDEtNC4wMTQgNi4yNDIgMy43MzYgMy43MzYgMCAwIDEtMS4yMTMtMS4wMiA1LjI4MyA1LjI4MyAwIDAgMCAzLjY3OC0xLjU0NVptMS4xOTItNS42NDRhNS4yNyA1LjI3IDAgMSAwLTYuODM2IDYuODM3IDUuMjcgNS4yNyAwIDEgMCA2LjgzNi02LjgzN1ptLTEuOTIyIDQuMDk3YTMuODkgMy44OSAwIDAgMS0uODE4LjgxOGwtMi4xNzQtMi4xNzVhMy44OSAzLjg5IDAgMCAxIC44MTgtLjgxN2wyLjE3NCAyLjE3NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjIyXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS45MTcgNC4wODNhNC41MTUgNC41MTUgMCAxIDAtNS44MzQgNS44MzQgNC41MTUgNC41MTUgMCAxIDAgNS44MzQtNS44MzRabS0uOTM0LjkzNGEzLjQ1MyAzLjQ1MyAwIDAgMS0uMDMgMS40NDdMNy41MzIgNS4wNTFjLjI1Ni0uMDYxLjUxOC0uMDkzLjc4MS0uMDk0LjIyNCAwIC40NDYuMDIyLjY2NS4wNjRsLjAwNi0uMDA1Wm0tLjU0OCAyLjU2NmEzLjUgMy41IDAgMCAxLS44NTIuODUyTDUuNTY1IDYuNDE3YTMuNSAzLjUgMCAwIDEgLjg1Mi0uODUybDIuMDE4IDIuMDE4Wm0tNC42NjcuODUyYTMuMzU0IDMuMzU0IDAgMSAxIDQuNjY3LTQuNjY3aC0uMTQ2YTQuNTI3IDQuNTI3IDAgMCAwLTQuNDk3IDQuNTQ0YzAgLjA0Ny4wMDUuMS4wMDUuMTQ2bC0uMDI5LS4wMjNabTEuMjI1LjUxOWEzLjU3IDMuNTcgMCAwIDEtLjA2NC0uNjY1Yy4wMDEtLjI2My4wMzMtLjUyNi4wOTMtLjc4Mkw2LjQ0IDguOTI1Yy0uMjU2LjA2LS41MTkuMDkyLS43ODIuMDkzYTMuNTcgMy41NyAwIDAgMS0uNjM2LS4wNGwtLjAyOS0uMDI0Wm0zLjMyIDIuNzEyYTMuMzY1IDMuMzY1IDAgMCAxLTIuNzcxLTEuNDY0aC4xNDVhNC41MjcgNC41MjcgMCAwIDAgNC41MjEtNC41MTV2LS4xNDVhMy4zNTQgMy4zNTQgMCAwIDEtMS44OTYgNi4xMjRaXFxcIiBmaWxsPVxcXCIjRjRCNzg0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjNjg3OTdFXFxcIiBkPVxcXCJNMTAuNzgzIDUuMjE4YS43NS43NSAwIDAgMC0xLjA2NSAwTDggNi45NDIgNi4yODMgNS4yMThhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjRMNi45NDMgOCA1LjIxOCA5LjcxN2EuNzUuNzUgMCAwIDAgMCAxLjA2Ni43NS43NSAwIDAgMCAxLjA2NSAwTDggOS4wNTZsMS43MTggMS43MjZhLjc1Ljc1IDAgMCAwIDEuMjI5LS4yNDUuNzUuNzUgMCAwIDAtLjE2NC0uODJMOS4wNTggOGwxLjcyNS0xLjcxOGEuNzQ4Ljc0OCAwIDAgMCAwLTEuMDY0Wm0yLjUyLTIuNTJBNy41MDEgNy41MDEgMCAxIDAgMi42OTggMTMuMzAxIDcuNTAxIDcuNTAxIDAgMSAwIDEzLjMwMyAyLjY5OVptLTEuMDU4IDkuNTQ3QTYgNiAwIDEgMSAxNCA4YTUuOTY1IDUuOTY1IDAgMCAxLTEuNzU1IDQuMjQ1WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzJBMkYzMFxcXCIgZD1cXFwiTTQuNTg4IDMuNSA3LjIxMi44OGEuNDE4LjQxOCAwIDAgMC0uNTkxLS41OTJMNCAyLjkxMyAxLjM4LjI4OGEuNDE4LjQxOCAwIDEgMC0uNTkzLjU5MUwzLjQxMyAzLjUuNzg3IDYuMTJhLjQxNy40MTcgMCAwIDAgLjEzNi42ODQuNDE3LjQxNyAwIDAgMCAuNDU2LS4wOTFMNCA0LjA4OGwyLjYyIDIuNjI1YS40MTcuNDE3IDAgMCAwIC42ODQtLjEzNi40MTcuNDE3IDAgMCAwLS4wOTItLjQ1Nkw0LjU4OCAzLjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDUyIDUyXFxcIj48Y2lyY2xlIGN4PVxcXCIyNlxcXCIgY3k9XFxcIjI2XFxcIiByPVxcXCIyNS4yNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIi8+PHBhdGggZD1cXFwiTTM3LjQgMzcuODJjLS4wNTEtLjYwOS0uMDUtNS4zODMtLjAzNi04LjMxOGEuNi42IDAgMCAwLS41OTgtLjYwNGgtLjAwM2EuNi42IDAgMCAwLS42LjU5OGMwIC4wMjItLjAxIDIuMTItLjAxIDQuMjA0LjAwMiAyLjExMi4wMDQgMy4yMjQuMDI5IDMuODM0bC05Ljg0OSAyLjk2M2EuNTk3LjU5NyAwIDAgMCAuMDU0LS4yNDh2LTcuODk3YS42LjYgMCAxIDAtMS4yMDIgMHY3Ljg5N2MwIC4wNTUuMDA5LjEwOC4wMjIuMTU5bC05LjU2LTIuOTA4LS4wMDgtNy45YS42LjYgMCAwIDAtLjYtLjYwMWgtLjAwMWEuNi42IDAgMCAwLS42LjZsLjAwNyA4LjM0N2EuNi42IDAgMCAwIC40MjUuNTc0bDEwLjg2OCAzLjMwNGEuNTkyLjU5MiAwIDAgMCAuMzQ4IDBsMTAuOTAzLTMuMjhhLjYuNiAwIDAgMCAuNDEtLjcyNFptLS40NzItLjQ0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJtNDAuMDQgMjMuNzQ2LTMuMzY1LTEuOTAyLS4wMTMtLjAwNmExMi4wMDQgMTIuMDA0IDAgMCAwLTIuMzMxLTMuMjU5LjYuNiAwIDEgMC0uODQ3Ljg1MiAxMC43NzggMTAuNzc4IDAgMCAxIDIuNjI0IDQuMjE3bC0xLjU4Mi40MzNjLTEuMjU4LTMuNjMzLTQuNzMzLTYuMTMyLTguNjEzLTYuMTMyYTkuMTE1IDkuMTE1IDAgMCAwLTQuNTcyIDEuMjI4LjYwMS42MDEgMCAwIDAgLjYwMyAxLjAzOSA3LjkwOCA3LjkwOCAwIDAgMSAzLjk2OS0xLjA2NiA3Ljk1IDcuOTUgMCAwIDEgNy40NSA1LjI1bC0xLjU4My40MzNhNi4zMTIgNi4zMTIgMCAwIDAtNS44NjctNC4wNDcgNi4yOTUgNi4yOTUgMCAwIDAtNS44NzkgNC4wNzVsLTEuNTg2LS40MjVhNy45NCA3Ljk0IDAgMCAxIDEuODcxLTIuOTcuNi42IDAgMSAwLS44NS0uODQ5IDkuMTQ4IDkuMTQ4IDAgMCAwLTIuMTg0IDMuNTA2bC0xLjU4My0uNDI1Yy4xMDItLjMxLjIxOC0uNjEzLjM0Ni0uOTA5YS42MDcuNjA3IDAgMCAwIC4xNzItLjM3NiAxMC43NzYgMTAuNzc2IDAgMCAxIDkuNjkzLTYuMWMxLjg5IDAgMy43NDkuNDk3IDUuMzc1IDEuNDM5YS42MDEuNjAxIDAgMCAwIC42MDItMS4wNCAxMS45NDkgMTEuOTQ5IDAgMCAwLTUuOTc3LTEuNiAxMS45OCAxMS45OCAwIDAgMC0xMC44MTQgNi44NmwtMy4xMzkgMS43NzRhLjYuNiAwIDAgMCAuMzU4IDEuMTJsMS4zMi0uMTM2LTEuNDczIDEuODdhLjU5OS41OTkgMCAwIDAgLjMwMS45NDdsMTEuMzYxIDMuMzc4YS42MDEuNjAxIDAgMCAwIC42OTEtLjI3NGwxLjQwOS0yLjQxOCAxLjMxIDIuMTc3YS42LjYgMCAwIDAgLjY3My4yN2wxMS40NDctMy4xMjlhLjYwMi42MDIgMCAwIDAgLjMxMy0uOTUxbC0xLjQ4Ny0xLjg4OSAxLjQ5OS4xNTZhLjYuNiAwIDAgMCAuMzU4LTEuMTJabS0xNC4xMjctMS43NThhNS4xMDQgNS4xMDQgMCAwIDEgNC43MDIgMy4xNjVsLTQuNzAzIDEuMjg4LTQuNzEtMS4yNjVhNS4wOSA1LjA5IDAgMCAxIDQuNzExLTMuMTg4Wm0tMi4xOTYgNy42NTItMTAuMDYxLTIuOTkyIDEuNDYtMS44NTVMMjUgMjcuNDM5bC0xLjI4MiAyLjIwMVptNC4zMTUtLjI0LTEuMTg0LTEuOTY0IDkuODctMi42NDMgMS40NDggMS44MzgtMTAuMTM0IDIuNzdabS02LjQ0Ny0xNS45N2EuNjAxLjYwMSAwIDAgMCAxLjE1NS0uMzNsLS44LTIuODAzYS42MDEuNjAxIDAgMCAwLTEuMTU2LjMzbC44MDEgMi44MDRabTcuNzU1LjQ3OWEuNjAxLjYwMSAwIDAgMCAuNzQyLS40MTJsLjgtMi44MDRhLjYuNiAwIDEgMC0xLjE1NS0uMzNsLS44IDIuODA0YS42LjYgMCAwIDAgLjQxMi43NDJabTYuNTcgMy42NzdhLjYwMS42MDEgMCAwIDAgLjQyLS4xN2wyLjA1My0yLjAwM2EuNi42IDAgMSAwLS44MzktLjg2bC0yLjA1MiAyLjAwMmEuNi42IDAgMCAwIC40MTkgMS4wM1ptLTIwLjU0LS4yMjFhLjYwMi42MDIgMCAwIDAgLjg0LS44NmwtMi4wMDMtMS45NTJhLjYuNiAwIDEgMC0uODM4Ljg2bDIuMDAxIDEuOTUyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNTIgNTJcXFwiPjxjaXJjbGUgY3g9XFxcIjI2XFxcIiBjeT1cXFwiMjZcXFwiIHI9XFxcIjI1LjI1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiLz48cGF0aCBkPVxcXCJNMjAuODcxIDE3LjIwOEExMC4xNjcgMTAuMTY3IDAgMCAxIDI2IDE1LjgyM2ExMC4xMSAxMC4xMSAwIDAgMSA3LjE5NiAyLjk4LjU2Ni41NjYgMCAwIDAgLjgwNCAwQS41Ny41NyAwIDAgMCAzNCAxOGExMS4yNCAxMS4yNCAwIDAgMC04LTMuMzEzYy0yLjAwOCAwLTMuOTguNTMyLTUuNzAzIDEuNTRhLjU2OC41NjggMCAxIDAgLjU3NC45ODJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIk0yNiAxMmMtMy43OCAwLTcuMzIxIDEuNDgyLTkuOTc0IDQuMTc1YS41Ny41NyAwIDAgMCAuODEuNzk4QTEyLjc3IDEyLjc3IDAgMCAxIDI2IDEzLjEzN2M3LjA5MiAwIDEyLjg2MyA1Ljc3IDEyLjg2MyAxMi44NjMgMCAyLjE4NC0uNTQ4IDQuMjQ0LTEuNTEzIDYuMDQ3bC0xLjc3LTIuNzA3YTQuMzgxIDQuMzgxIDAgMCAwIDEuNzM0LTMuNDkgNC4zOTIgNC4zOTIgMCAwIDAtNC4zODgtNC4zODggNC4zNCA0LjM0IDAgMCAwLTIuMzg5LjcwNyA1LjkzIDUuOTMgMCAwIDAtOS4xMjMuMDYgNC4zNzcgNC4zNzcgMCAwIDAtMi40NzktLjc2NyA0LjM5MiA0LjM5MiAwIDAgMC00LjM4NyA0LjM4N2MwIDEuNDE1LjY3NCAyLjY3NCAxLjcxNiAzLjQ3N2wtMS42MzUgMi42ODFhMTIuODYgMTIuODYgMCAwIDEgLjIwNC0xMi4zOTMuNTY5LjU2OSAwIDEgMC0uOTg3LS41NjVBMTQgMTQgMCAwIDAgMTIgMjZjMCA1LjA5NSAyLjczNiA5LjU2NCA2LjgxNyAxMi4wMTNhLjU2Ni41NjYgMCAwIDAgLjMyNS4xODlBMTMuOTExIDEzLjkxMSAwIDAgMCAyNiA0MGM3LjcxOSAwIDE0LTYuMjggMTQtMTRzLTYuMjgxLTE0LTE0LTE0Wm02LjkyNSAxMC41OTlhMy4yNTMgMy4yNTMgMCAwIDEgMy4yNSAzLjI1IDMuMjUzIDMuMjUzIDAgMCAxLTMuMjUgMy4yNWMtLjU3NiAwLTEuMTI3LS4xNS0xLjYxOC0uNDM0QTUuOTA2IDUuOTA2IDAgMCAwIDMxLjk0IDI2YTUuOTAzIDUuOTAzIDAgMCAwLS43NTctMi44OTYgMy4yMTcgMy4yMTcgMCAwIDEgMS43NC0uNTA1Wk0yNiAyMS4xOTZBNC44MSA0LjgxIDAgMCAxIDMwLjgwMyAyNiA0LjgxIDQuODEgMCAwIDEgMjYgMzAuODA0IDQuODEgNC44MSAwIDAgMSAyMS4xOTUgMjYgNC44MSA0LjgxIDAgMCAxIDI2IDIxLjE5NlptLTEwLjMxNiA0LjY1M2EzLjI1MyAzLjI1MyAwIDAgMSA1LjA5Mi0yLjY3OEE1LjkwNSA1LjkwNSAwIDAgMCAyMC4wNTggMjZjMCAuOTMzLjIxNyAxLjgxNi42MDEgMi42MDNhMy4yNTMgMy4yNTMgMCAwIDEtNC45NzYtMi43NTRabTMuMzgxIDEwLjk4MWExMi45NjIgMTIuOTYyIDAgMCAxLTMuNzc5LTMuNzE5bDEuOTU5LTMuMjEzYy41Mi4yMTggMS4wOS4zMzkgMS42ODkuMzM5LjgzMiAwIDEuNjI3LS4yMyAyLjMyMS0uNjY1YTYgNiAwIDAgMCAxLjMgMS4yNjVsLTMuNDkgNS45OTNaTTI2IDM4Ljg2NGMtMi4xNDYgMC00LjE3LS41My01Ljk1MS0xLjQ2M2wzLjQ5LTUuOTk1YTUuOSA1LjkgMCAwIDAgMi40Ni41MzVjLjg2MSAwIDEuNjgtLjE4NSAyLjQxOC0uNTE2bDMuNDk1IDUuOTk3QTEyLjc4NCAxMi43ODQgMCAwIDEgMjYgMzguODY0Wm02Ljg5Ny0yLjAxLTMuNDktNS45OWMuNDktLjM0NS45MjYtLjc2MiAxLjI5Mi0xLjIzNWE0LjM0OSA0LjM0OSAwIDAgMCAyLjIyNi42MDdjLjU5IDAgMS4xNTItLjExOCAxLjY2Ni0uMzNsMi4xMSAzLjIyNGExMi45NzMgMTIuOTczIDAgMCAxLTMuODA0IDMuNzIzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJNMjYgMjkuODAzYTMuODIzIDMuODIzIDAgMCAwIDMuMDQ4LTEuNTI4LjU2OS41NjkgMCAwIDAtLjkxLS42OCAyLjY2OCAyLjY2OCAwIDAgMS00LjMzNy0uMDg2LjU2OS41NjkgMCAwIDAtLjkzOC42NDNBMy44MDQgMy44MDQgMCAwIDAgMjYgMjkuODAzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyAzdi41aDMuMTY2YS4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtMS4xNjZ2Ny44MzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDMuMzMzYTEuNSAxLjUgMCAwIDEtMS4wNi0uNDM5bC0uMzU0LjM1NC4zNTQtLjM1NGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjMuODMySC42NjdhLjE2Ny4xNjcgMCAxIDEgMC0uMzMzaDMuMTY2VjIuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgxLjMzNGExLjUgMS41IDAgMCAxIDEuNSAxLjVWM1ptLS44MzQuNWguNVYyLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2Ni0xLjE2N0g1LjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2NiAxLjE2N1YzLjVoMy4xNjZabS00LjY2Ni4zMzNoLS41djcuODMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2IDEuMTY3aDUuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2LTEuMTY3VjMuODMzSDIuNjY3Wm0yLjExOCA2LjYxOGEuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTRhLjE2Ny4xNjcgMCAxIDEgLjMzMyAwdjRhLjE2Ny4xNjcgMCAwIDEtLjA0OC4xMThabTIuNjY2IDBhLjE2Ny4xNjcgMCAwIDEtLjI4NC0uMTE4di00YS4xNjcuMTY3IDAgMCAxIC4zMzMgMHY0YS4xNjcuMTY3IDAgMCAxLS4wNDkuMTE4WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTAuNjI0IDUuNjY3aC00LjY3TDguMjkgMy40MTRsMi4zMzUgMi4yNTNaTTguNzggMi40NzRhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDEzLS4xMzIgMS4xMzMuNDgzIDEuMTMzaDYuMzM0Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDguNzggMi40NzRabTIuNjggNi44Nkg1LjExOWMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQyLjEzMi0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEzLjgwNyAxMS4xNC0xLjYxNC0xLjYxNGEuNjY2LjY2NiAwIDAgMC0uOTQ2IDBMOC44NiAxMS45MTNhLjY2Ny42NjcgMCAwIDAtLjE5My40NzNWMTRhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMS42MTRhLjY2OC42NjggMCAwIDAgLjQ3My0uMTkzbDIuMzg3LTIuMzg3YS42NjcuNjY3IDAgMCAwIDAtLjk0NlptLTMuMTQgMi4xOTNIMTB2LS42NjdsMS43Mi0xLjcyLjY2Ny42NjctMS43MiAxLjcyWm0tNCAwSDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjMuMzMzQS42NjcuNjY3IDAgMCAxIDQgMi42NjZoMy4zMzN2MmEyIDIgMCAwIDAgMiAyaDJ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMGwtLjIxMy0uMDczSDRhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDIuNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNabTItOS43MjcgMS43MjYgMS43MjdoLTEuMDZhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY3di0xLjA2Wk01LjMzMyA5LjMzM2g0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1ptMC0yLjY2N0g2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMS4zMzQgNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjZG91YmxlLXRpY2tfc3ZnX19hKVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIj48cGF0aCBkPVxcXCJNOS44NDUgMy43MDZhLjY0Ny42NDcgMCAwIDAtLjk0NyAwbC01LjA3IDUuMTRMMS43MzMgNi43MmEuNjQ3LjY0NyAwIDAgMC0uOTQ3IDAgLjY2OS42NjkgMCAwIDAgMCAuOTZsMi41NyAyLjYwNGEuNjEuNjEgMCAwIDAgLjQ3Mi4yMDYuNjEuNjEgMCAwIDAgLjQ3NC0uMjA2bDUuNTQzLTUuNjJhLjY2OS42NjkgMCAwIDAgMC0uOTZaXFxcIi8+PHBhdGggZD1cXFwiTTEzLjYzMiAzLjM2YTEuMjM0IDEuMjM0IDAgMCAwLTEuNzgzIDBMNy4xOTcgOC4wNzhsLTEuNjc3LTEuN2ExLjIzNCAxLjIzNCAwIDAgMC0xLjc4MyAwIDEuMjU2IDEuMjU2IDAgMCAwIDAgMS43ODRsMi41NyAyLjYwNGMuMTAxLjEwMy4yMjcuMjA1LjM4Ny4yNzcuMTY0LjA3NC4zMzMuMTA0LjUwMy4xMDQuMTcxIDAgLjM0LS4wMy41MDQtLjEwNC4xNi0uMDcyLjI4Ni0uMTc0LjM4OC0uMjc3bDUuNTQzLTUuNjJhMS4yNTYgMS4yNTYgMCAwIDAgMC0xLjc4NFpcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjE3NVxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcImRvdWJsZS10aWNrX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgxNHYxNEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNOC4xNjcgOS43MzN2MS4yMDhsLjg1My0uODU0Ljg2Ny0uODY3QS4xNi4xNiAwIDAgMSAxMCA5LjE2N2MuMDMgMCAuMDcuMDEuMTEzLjA1M2EuMTYuMTYgMCAwIDEgLjA1NC4xMTQuMTYuMTYgMCAwIDEtLjA1NC4xMTNsLTIgMmMtLjAzNy4wMzctLjA1NC4wNDUtLjA1OC4wNDZBLjEzNi4xMzYgMCAwIDEgOCAxMS41YS4xMzYuMTM2IDAgMCAxLS4wNTUtLjAwNy4yMDUuMjA1IDAgMCAxLS4wNTgtLjA0NmwtMi0yYS4xNi4xNiAwIDAgMS0uMDU0LS4xMTMuMTYuMTYgMCAwIDEgLjA1NC0uMTE0QS4xNi4xNiAwIDAgMSA2IDkuMTY3Yy4wMyAwIC4wNy4wMS4xMTMuMDUzbC44NjcuODY3Ljg1My44NTRWMmMwLS4wODYuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDQtLjAzNy4xMy0uMDM3LjA4NiAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDQuMDM3LjEzdjcuNzMzWm0yLjUtMy4yMzNIMTJjLjg1NyAwIDEuNS42NDMgMS41IDEuNXY0LjY2N2MwIC44NTctLjY0MyAxLjUtMS41IDEuNUg0Yy0uODU3IDAtMS41LS42NDMtMS41LTEuNVY4YzAtLjg1Ny42NDMtMS41IDEuNS0xLjVoMS4zMzNjLjA4NyAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDMuMDM3LjEzIDAgLjA4Ni0uMDI3LjEyLS4wMzcuMTMtLjAxLjAxLS4wNDMuMDM3LS4xMy4wMzdINGMtLjMxNCAwLS42MTQuMTA2LS44MzcuMzMtLjIyMy4yMjItLjMzLjUyMy0uMzMuODM2djQuNjY3YzAgLjMxMy4xMDcuNjE0LjMzLjgzNy4yMjMuMjIzLjUyMy4zMy44MzcuMzNoOGMuMzE0IDAgLjYxNC0uMTA3LjgzNy0uMzMuMjIzLS4yMjMuMzMtLjUyNC4zMy0uODM3VjhjMC0uMzEzLS4xMDctLjYxNC0uMzMtLjgzN2ExLjE2NiAxLjE2NiAwIDAgMC0uODM3LS4zM2gtMS4zMzNjLS4wODcgMC0uMTItLjAyNi0uMTMtLjAzNi0uMDEtLjAxLS4wMzctLjA0NC0uMDM3LS4xMyAwLS4wODcuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDMtLjAzNy4xMy0uMDM3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEyLjc5NiA1Ljg3LjAyMy4wN2EuMzA1LjMwNSAwIDAgMSAuMDE0LjA1NHY2LjY3MmExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjUtMS41VjMuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk3OGEuMjMzLjIzMyAwIDAgMSAuMDMzLjAxNGwuMTEuMDZoLjA0NWwzLjk2MyAzLjk2MlptLTMuMTEtMi42MTctLjg1My0uODU0djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEwIDUuODMzaDIuMjY3bC0uODUzLS44NTQtMS43MjctMS43MjZaTTguNSAyLjY2NnYtLjVINC42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMy41IDMuMzMzdjkuMzMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY3aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY3di02LjVIMTBhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjMzMyA3LjA2djEuMjM3bC44Ni0uODkuMTg5LS4xOTVhLjE3LjE3IDAgMCAxIC4yMzcuMjQybC0xLjMyOCAxLjMyOGEuMTY3LjE2NyAwIDAgMS0uMDUyLjAzMmwtLjAxMS4wMDQtLjAxLjAwNWEuMTI3LjEyNyAwIDAgMS0uMTAzIDBsLS4wMS0uMDA1LS4wMTItLjAwNGEuMTY3LjE2NyAwIDAgMS0uMDUyLS4wMzJsLTEuMzI4LTEuMzI5YS4xNy4xNyAwIDAgMSAuMjM3LS4yNDFsLjE5LjE5Ni44Ni44ODlWOGEuMTY3LjE2NyAwIDAgMSAuMzMzIDB2MS43MjZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMi42MjYgMTMuMzc0LjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g5LjMzNGExIDEgMCAwIDAgLjcwNy0uMjkzbC0uMjM2LS4yMzYuMjM2LjIzNmExIDEgMCAwIDAgLjI5My0uNzA3VjEwYS4zMzMuMzMzIDAgMCAxIC41NjktLjIzNmwuMjM1LS4yMzUtLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjA5Ny4yMzZ2Mi42NjdhMS42NjcgMS42NjcgMCAwIDEtMS42NjYgMS42NjZIMy4zMzNhMS42NjcgMS42NjcgMCAwIDEtMS42NjYtMS42NjZWMTBjMC0uMDg4LjAzNS0uMTczLjA5Ny0uMjM2TDEuNTMgOS41M2wuMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuNDcyIDBsLjIzNS0uMjM1LS4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC4wOTcuMjM2djIuNjY3YTEgMSAwIDAgMCAuMjkzLjcwN1ptNS4yNTUtMy4wNjYtLjAwNy0uMDAzLS4wMDctLjAwMmEuMzMzLjMzMyAwIDAgMS0uMTA4LS4wNjhMNS4wOTYgNy41N2EuMzM2LjMzNiAwIDAgMSAuMzY2LS41NDhsLjEyOC0uMzA4LS4xMjguMzA4Yy4wNC4wMTcuMDc4LjA0MS4xMDkuMDcyTDcuMDk3IDguNjNsLjU3LjU3MlYyYS4zMzMuMzMzIDAgMSAxIC42NjYgMHY3LjIwMWwuNTctLjU3MiAxLjUyNi0xLjUzM2EuMzM2LjMzNiAwIDAgMSAuNDc1LjQ3NWwtMi42NjMgMi42NjRhLjMzMy4zMzMgMCAwIDEtLjEwOC4wNjhsLS4wMDcuMDAyLS4wMDcuMDAzYS4yOTIuMjkyIDAgMCAxLS4yMzggMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMCA2XFxcIj48cGF0aCBkPVxcXCJNOC45MzIuODc4YS41LjUgMCAwIDEgMCAuNzFMNS4zNTcgNS4xMjFsLS4wMDIuMDAzYS41LjUgMCAwIDEtLjcxIDB2LS4wMDFMMS4xMSAxLjU4OWEuNS41IDAgMCAxIDAtLjcxVi44NzdhLjUuNSAwIDAgMSAuNzA1IDBsMi45NSAyLjk1LjIzMy4yMzMuMjM2LS4yMzJMOC4yMjYuODc5Vi44NzhhLjUuNSAwIDAgMSAuNzA2IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNy41IDEwYS44MzMuODMzIDAgMCAwLS44MzMuODMzdjVhLjgzMy44MzMgMCAwIDEtLjgzNC44MzRINC4xNjdhLjgzMy44MzMgMCAwIDEtLjgzNC0uODM0VjQuMTY3YS44MzMuODMzIDAgMCAxIC44MzQtLjgzNGg1YS44MzMuODMzIDAgMSAwIDAtMS42NjZoLTVhMi41IDIuNSAwIDAgMC0yLjUgMi41djExLjY2NmEyLjUgMi41IDAgMCAwIDIuNSAyLjVoMTEuNjY2YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtNUEuODMzLjgzMyAwIDAgMCAxNy41IDEwWk01IDEwLjYzM3YzLjUzNGEuODMzLjgzMyAwIDAgMCAuODMzLjgzM2gzLjUzNGEuODMzLjgzMyAwIDAgMCAuNTkxLS4yNDJsNS43NjctNS43NzUgMi4zNjctMi4zMTZhLjgzMy44MzMgMCAwIDAgMC0xLjE4NGwtMy41MzQtMy41NzVhLjgzNC44MzQgMCAwIDAtMS4xODMgMGwtMi4zNSAyLjM1OS01Ljc4MyA1Ljc3NWEuODM0LjgzNCAwIDAgMC0uMjQyLjU5MVptOC45NjctNi45NTggMi4zNTggMi4zNTgtMS4xODMgMS4xODQtMi4zNTktMi4zNTkgMS4xODQtMS4xODNabS03LjMgNy4zIDQuOTQxLTQuOTQyIDIuMzU5IDIuMzU5LTQuOTQyIDQuOTQxSDYuNjY3di0yLjM1OFpcXFwiIGZpbGw9XFxcIiM2ODc5N0VcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjcxOCAxMmgyLjgyN2EuNjY2LjY2NiAwIDAgMCAuNDczLS4xOTRsNC42MTQtNC42MiAxLjg5My0xLjg1M2EuNjY4LjY2OCAwIDAgMCAwLS45NDdsLTIuODI3LTIuODZhLjY2Ny42NjcgMCAwIDAtLjk0NiAwbC0xLjg4IDEuODg3LTQuNjI3IDQuNjJhLjY2Ny42NjcgMCAwIDAtLjE5My40NzN2Mi44MjdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjdabTYuNTA3LTkuMDYgMS44ODcgMS44ODYtLjk0Ny45NDctMS44ODctMS44ODcuOTQ3LS45NDZabS01Ljg0IDUuODQgMy45NTMtMy45NTQgMS44ODcgMS44ODctMy45NTMgMy45NTNINC4zODVWOC43OFptMTAgNC41NTNoLTEyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjIgMjNcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTExIDIuNjI2Yy01LjA0MiAwLTkuMTY3IDQuMTI1LTkuMTY3IDkuMTY3UzUuOTU4IDIwLjk2IDExIDIwLjk2czkuMTY3LTQuMTI1IDkuMTY3LTkuMTY3UzE2LjA0MiAyLjYyNiAxMSAyLjYyNlptMCAxMy43NWMtLjU1IDAtLjkxNy0uMzY2LS45MTctLjkxNnMuMzY3LS45MTcuOTE3LS45MTcuOTE3LjM2Ny45MTcuOTE3LS4zNjcuOTE2LS45MTcuOTE2Wm0uOTE3LTQuNTgzYzAgLjU1LS4zNjcuOTE3LS45MTcuOTE3cy0uOTE3LS4zNjctLjkxNy0uOTE3VjguMTI2YzAtLjU1LjM2Ny0uOTE2LjkxNy0uOTE2cy45MTcuMzY2LjkxNy45MTZ2My42NjdaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGNsYXNzPVxcXCJleGNsYW1hdGlvbi13YXJuaW5nX3N2Z19fZWxlbWVudHMtc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkgNC43OTVhLjgzMy44MzMgMCAwIDAtLjgzNC44MzR2My4zMzNhLjgzMy44MzMgMCAwIDAgMS42NjcgMFY1LjYyOWEuODMzLjgzMyAwIDAgMC0uODM0LS44MzRabS43NjYgNy4xODRhLjYzMi42MzIgMCAwIDAtLjA3NS0uMTVsLS4xLS4xMjVhLjgzMy44MzMgMCAwIDAtLjkwOC0uMTc1Ljk1OC45NTggMCAwIDAtLjI3NS4xNzUuODMzLjgzMyAwIDAgMC0uMTc1LjkwOC43NS43NSAwIDAgMCAuNDUuNDUuNzgzLjc4MyAwIDAgMCAuNjMzIDAgLjc1Ljc1IDAgMCAwIC40NS0uNDUuODM0LjgzNCAwIDAgMCAuMDY3LS4zMTcgMS4xMzMgMS4xMzMgMCAwIDAgMC0uMTY2LjUzMi41MzIgMCAwIDAtLjA2Ny0uMTVaTTguOTk5LjYyOWE4LjMzMyA4LjMzMyAwIDEgMCAwIDE2LjY2NkE4LjMzMyA4LjMzMyAwIDAgMCA5IC42M1ptMCAxNUE2LjY2NiA2LjY2NiAwIDEgMSA5IDIuMjk2IDYuNjY2IDYuNjY2IDAgMCAxIDkgMTUuNjNaXFxcIiBmaWxsPVxcXCIjRjRCNzg0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIxIDIwXFxcIj48bWFzayBpZD1cXFwiZXhwb3J0X3N2Z19fYVxcXCIgd2lkdGg9XFxcIjIxXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB4PVxcXCIwXFxcIiB5PVxcXCIwXFxcIiBtYXNrVW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIiBzdHlsZT1cXFwibWFzay10eXBlOmFscGhhXFxcIj48cGF0aCBmaWxsPVxcXCIjRDlEOUQ5XFxcIiBkPVxcXCJNLjUgMGgyMHYyMEguNXpcXFwiLz48L21hc2s+PGcgbWFzaz1cXFwidXJsKCNleHBvcnRfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTQuNjY3IDE3LjVjLS40NTkgMC0uODUxLS4xNjMtMS4xNzctLjQ5QTEuNjA1IDEuNjA1IDAgMCAxIDMgMTUuODMzVjQuMTY3YzAtLjQ1OS4xNjMtLjg1MS40OS0xLjE3Ny4zMjYtLjMyNy43MTgtLjQ5IDEuMTc3LS40OUgxMC41djEuNjY3SDQuNjY3djExLjY2NmgxMS42NjZWMTBIMTh2NS44MzNjMCAuNDU5LS4xNjMuODUxLS40OSAxLjE3Ny0uMzI2LjMyNy0uNzE4LjQ5LTEuMTc3LjQ5SDQuNjY3Wm0zLjkxNi00LjQxNy0xLjE2Ni0xLjE2NiA3Ljc1LTcuNzVoLTNWMi41SDE4djUuODMzaC0xLjY2N3YtM2wtNy43NSA3Ljc1WlxcXCIvPjwvZz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi43NTEgNy4yMTNhLjczMi43MzIgMCAwIDAtLjUuMTk1LjY0Ny42NDcgMCAwIDAtLjIwOC40NzJ2NC43ODZhLjY0Ny42NDcgMCAwIDEtLjIwNy40NzIuNzMxLjczMSAwIDAgMS0uNTAxLjE5NUgzLjU0M2EuNzMxLjczMSAwIDAgMS0uNS0uMTk1LjY0Ny42NDcgMCAwIDEtLjIwOC0uNDcyVjUuMzMzYzAtLjE3Ny4wNzQtLjM0Ni4yMDctLjQ3MWEuNzMxLjczMSAwIDAgMSAuNTAxLS4xOTZoNS4wODZjLjE4OCAwIC4zNjgtLjA3LjUtLjE5NUEuNjQ3LjY0NyAwIDAgMCA5LjMzOCA0YS42NDcuNjQ3IDAgMCAwLS4yMDctLjQ3Mi43MzEuNzMxIDAgMCAwLS41MDEtLjE5NUgzLjU0M2MtLjU2NCAwLTEuMTA0LjIxLTEuNTAzLjU4NmExLjk0MiAxLjk0MiAwIDAgMC0uNjIyIDEuNDE0djcuMzMzYzAgLjUzLjIyNCAxLjA0LjYyMiAxLjQxNS4zOTkuMzc1Ljk0LjU4NSAxLjUwMy41ODVoNy43OTJjLjU2MyAwIDEuMTA0LS4yMSAxLjUwMi0uNTg1LjM5OS0uMzc1LjYyMy0uODg0LjYyMy0xLjQxNVY3Ljg4YS42NDcuNjQ3IDAgMCAwLS4yMDgtLjQ3Mi43MzIuNzMyIDAgMCAwLS41LS4xOTVabTIuNzc3LTUuNDY3YS42OS42OSAwIDAgMC0uMzgzLS4zNi43NDcuNzQ3IDAgMCAwLS4yNjktLjA1M2gtNC4yNWEuNzMyLjczMiAwIDAgMC0uNS4xOTUuNjQ3LjY0NyAwIDAgMC0uMjA4LjQ3MmMwIC4xNzYuMDc1LjM0Ni4yMDcuNDcxYS43MzIuNzMyIDAgMCAwIC41MDEuMTk1aDIuNTQzbC03LjI5NiA2Ljg2YS42NjYuNjY2IDAgMCAwLS4xNTUuMjE3LjYzMy42MzMgMCAwIDAgLjE1NS43My43NDYuNzQ2IDAgMCAwIDEuMDA2IDBsNy4yODktNi44NjdWNmMwIC4xNzYuMDc1LjM0Ni4yMDcuNDcxYS43MzIuNzMyIDAgMCAwIC41MDEuMTk1Yy4xODggMCAuMzY4LS4wNy41MDEtLjE5NUEuNjQ3LjY0NyAwIDAgMCAxNS41ODUgNlYyYS42MzMuNjMzIDAgMCAwLS4wNTctLjI1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjYxMyA3Ljk4QzEzLjI2NyA0Ljg1MyAxMC43MzMgMi45MTMgOCAyLjkxM2MtMi43MzMgMC01LjI2NyAxLjk0LTYuNjEzIDUuMDY3YS42NjcuNjY3IDAgMCAwIDAgLjUzM0MyLjczMyAxMS42NCA1LjI2NyAxMy41OCA4IDEzLjU4YzIuNzMzIDAgNS4yNjctMS45NCA2LjYxMy01LjA2N2EuNjY3LjY2NyAwIDAgMCAwLS41MzNaTTggMTIuMjQ2Yy0yLjExMyAwLTQuMTEzLTEuNTI2LTUuMjY3LTQgMS4xNTQtMi40NzMgMy4xNTQtNCA1LjI2Ny00IDIuMTEzIDAgNC4xMTMgMS41MjcgNS4yNjcgNC0xLjE1NCAyLjQ3NC0zLjE1NCA0LTUuMjY3IDRaTTggNS41OGEyLjY2NyAyLjY2NyAwIDEgMCAwIDUuMzMzQTIuNjY3IDIuNjY3IDAgMCAwIDggNS41OFptMCA0YTEuMzMzIDEuMzMzIDAgMSAxIDAtMi42NjdBMS4zMzMgMS4zMzMgMCAwIDEgOCA5LjU4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNTAgMTUwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgY3g9XFxcIjc1XFxcIiBjeT1cXFwiNzVcXFwiIHI9XFxcIjc1XFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTQ1LjU0OCA1NC4yMmMwLTIuMzggMC0zLjU3LjQ3LTQuNDc1YTQuMTc4IDQuMTc4IDAgMCAxIDEuNzgyLTEuNzgxYy45MDYtLjQ3IDIuMDk1LS40NyA0LjQ3NS0uNDdoMTcuNTU3YzEuMDEyIDAgMS41MTggMCAxLjk5NS4xMTMuNDA2LjA5Ni43OTUuMjUzIDEuMTU0LjQ2NS40MjMuMjUuNzg4LjYgMS41MTcgMS4zMDJsLjQzLjQxNmMuNzMuNzAyIDEuMDk0IDEuMDUzIDEuNTE3IDEuMzAyLjM2LjIxMi43NDguMzY5IDEuMTU0LjQ2NS40NzcuMTE0Ljk4My4xMTQgMS45OTYuMTE0aDE3LjcxOGMyLjM3OSAwIDMuNTY4IDAgNC40NzQuNDdhNC4xODIgNC4xODIgMCAwIDEgMS43ODIgMS43ODJjLjQ3LjkwNi40NyAyLjA5NS40NyA0LjQ3NHY0MC4wNDZjMCAxLjE5IDAgMS43ODQtLjIzNSAyLjIzN2EyLjA4MyAyLjA4MyAwIDAgMS0uODkxLjg5MWMtLjQ1My4yMzUtMS4wNDguMjM1LTIuMjM3LjIzNUg1MS42MDJjLTIuMTQxIDAtMy4yMTIgMC00LjAyNy0uNDIzYTMuNzYzIDMuNzYzIDAgMCAxLTEuNjA0LTEuNjA0Yy0uNDIzLS44MTUtLjQyMy0xLjg4NS0uNDIzLTQuMDI3VjU0LjIyWlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19iKVxcXCIvPjxwYXRoIGQ9XFxcIk02Ni42NTYgNjIuMzExaDM4LjUzMWMxLjY3MiAwIDIuOTA0IDAgMy44My4xMzMuOTIuMTMzIDEuNDk5LjM5IDEuODk0Ljg3Ny4zOTQuNDg2LjUyOCAxLjEwNi40NjcgMi4wMzQtLjA2MS45MzMtLjMxNCAyLjE0LS42NTggMy43NzVsLTUuODk0IDI3Ljk5MmMtLjIzNSAxLjExNy0uNDA4IDEuOTM4LS42MjEgMi41NjItLjIxMS42MTktLjQ1NSAxLjAyMy0uODE5IDEuMzE4LS4zNjMuMjk1LS44MDguNDUtMS40NTguNTI5LS42NTQuMDgtMS40OTMuMDgxLTIuNjM0LjA4MUg1MC4xNTdjLjkyLTEuMTAxIDEuNDIyLTIuMjQ1IDEuOTE3LTMuODYxLjIyNS0uNzM0LjQ1LTEuNTY4LjcxMi0yLjU0MmwuMTY4LS42MjJjLjMzNy0xLjI0OC43NDItMi43MTQgMS4yOC00LjQ3NCAxLjU1Mi01LjA2IDUuMTA1LTE3LjI0MyA2Ljk4OC0yMy43MjIuMjk3LTEuMDIxLjUxNS0xLjc3Ljc1NS0yLjMzOS4yMzgtLjU2My40OS0uOTMuODQyLTEuMTk0LjM1Mi0uMjY1Ljc3NC0uNDA0IDEuMzgyLS40NzUuNjEyLS4wNzIgMS4zOTItLjA3MiAyLjQ1NS0uMDcyWlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2MpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zOVxcXCIvPjxwYXRoIGQ9XFxcIk02Ni42NTYgNjIuMzExaDM4LjUzMWMxLjY3MiAwIDIuOTA0IDAgMy44My4xMzMuOTIuMTMzIDEuNDk5LjM5IDEuODk0Ljg3Ny4zOTQuNDg2LjUyOCAxLjEwNi40NjcgMi4wMzQtLjA2MS45MzMtLjMxNCAyLjE0LS42NTggMy43NzVsLTUuODk0IDI3Ljk5MmMtLjIzNSAxLjExNy0uNDA4IDEuOTM4LS42MjEgMi41NjItLjIxMS42MTktLjQ1NSAxLjAyMy0uODE5IDEuMzE4LS4zNjMuMjk1LS44MDguNDUtMS40NTguNTI5LS42NTQuMDgtMS40OTMuMDgxLTIuNjM0LjA4MUg1MC4xNTdjLjkyLTEuMTAxIDEuNDIyLTIuMjQ1IDEuOTE3LTMuODYxLjIyNS0uNzM0LjQ1LTEuNTY4LjcxMi0yLjU0MmwuMTY4LS42MjJjLjMzNy0xLjI0OC43NDItMi43MTQgMS4yOC00LjQ3NCAxLjU1Mi01LjA2IDUuMTA1LTE3LjI0MyA2Ljk4OC0yMy43MjIuMjk3LTEuMDIxLjUxNS0xLjc3Ljc1NS0yLjMzOS4yMzgtLjU2My40OS0uOTMuODQyLTEuMTk0LjM1Mi0uMjY1Ljc3NC0uNDA0IDEuMzgyLS40NzUuNjEyLS4wNzIgMS4zOTItLjA3MiAyLjQ1NS0uMDcyWlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19kKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuOFxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2UpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zOVxcXCIvPjxwYXRoIGQ9XFxcIk01NS45OTMgNTEuODI4aDguMzU2YTEuOTMzIDEuOTMzIDAgMCAxIDAgMy44NjZoLTguMzU2YTEuOTMzIDEuOTMzIDAgMSAxIDAtMy44NjZaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2YpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi45XFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fZylcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjMxMlxcXCIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fYVxcXCIgeDE9XFxcIjc1XFxcIiB5MT1cXFwiMFxcXCIgeDI9XFxcIjc1XFxcIiB5Mj1cXFwiMTUwXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI0UzRUNGQVxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI0RBRTdGRlxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19iXFxcIiB4MT1cXFwiNjIuNDJcXFwiIHkxPVxcXCI1OS4zNzRcXFwiIHgyPVxcXCIxMDYuNTU0XFxcIiB5Mj1cXFwiNzUuNzE5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzdGQzBGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzQwODhGNFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19jXFxcIiB4MT1cXFwiNDYuNTkzXFxcIiB5MT1cXFwiNjQuOTUxXFxcIiB4Mj1cXFwiNjguNzQ2XFxcIiB5Mj1cXFwiMTE4LjM3MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19kXFxcIiB4MT1cXFwiMTA4LjVcXFwiIHkxPVxcXCI5OFxcXCIgeDI9XFxcIjQxXFxcIiB5Mj1cXFwiOTkuNVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNCNEQ0RjdcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi4xMjhcXFwiIHN0b3AtY29sb3I9XFxcIiM4QkJERkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi4yNjJcXFwiIHN0b3AtY29sb3I9XFxcIiM5MUMyRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NTlcXFwiIHN0b3AtY29sb3I9XFxcIiM5RkNGRkRcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM5RUNFRkRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZVxcXCIgeDE9XFxcIjQ2LjU5M1xcXCIgeTE9XFxcIjY0Ljk1MVxcXCIgeDI9XFxcIjY4Ljc0NlxcXCIgeTI9XFxcIjExOC4zNzJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZlxcXCIgeDE9XFxcIjUyLjk1MlxcXCIgeTE9XFxcIjUxLjM5M1xcXCIgeDI9XFxcIjcwLjEwNlxcXCIgeTI9XFxcIjU2LjQ2MVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19nXFxcIiB4MT1cXFwiNTEuNzgyXFxcIiB5MT1cXFwiNTIuNTYyXFxcIiB4Mj1cXFwiNjAuMTcxXFxcIiB5Mj1cXFwiNTUuODVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjY2IDYzXFxcIj48cGF0aCBkPVxcXCJNLjgzIDU4LjkxVjI4LjdoOC43MjV2MzAuMjFILjgzWm0zNS4wMTctMi45M2MtMS45ODMgMi40MTYtNC44MzUgMy43NzctOC42MTUgMy43NzctNi4wNzYgMC0xMC45NzEtMy43NzgtMTAuOTcxLTkuNjAzIDAtNS43NjMgNC44OTgtOC42MSAxMS43NzctOC45ODUgNS4yNy0uMzEgNi45NDMtLjg2OCA2Ljk0My0yLjY2MyAwLTEuNzM2LTEuNjExLTIuOTEzLTQuNDYzLTIuOTEzLTMuNDcgMC00Ljk2IDEuNzM2LTUuMTQ1IDMuNTk0aC04LjQ5NGMuNDM0LTYuNjI4IDUuMzkyLTExLjIxNCAxMy43MDEtMTEuMjE0IDguMTIyIDAgMTMuMzMgNC4zOTggMTMuMzMgMTIuNjM3djE4LjQ2M2gtNy4yNTRsLS44MDktMy4wOTRabS0xMC43ODYtNi4xOTVjMCAxLjczNiAxLjU1IDIuNzg4IDQuMDMgMi43ODggMy4zNDggMCA2LjAxMi0xLjg1OCA2LjAxMi01LjYzOFY0NS44MnMtMS42MTEuNzQzLTQuOTYuOTNjLTMuNjU4LjE4NS01LjA4MiAxLjM2Mi01LjA4MiAzLjAzNVptMzguMzA3IDkuNDE2Yy02LjYzMiAwLTEwLjQ3Ny0zLjg0LTEwLjQ3Ny0xMC41MzNWMzYuODM2aC01LjA4M3YtOC4xMTdoNS4wODN2LTQuNDYxbDguODAyLTcuNDM0VjI4LjcyaDcuNjI2djguMTE3aC03LjYyNlY0Ny40M2MwIDIuOTEyIDEuOTIyIDMuNTkzIDMuNzIgMy41OTNhOS41MzkgOS41MzkgMCAwIDAgMy43MjEtLjgwNXY3Ljk5MmMwIC4wMDItMi4zNTUuOTkyLTUuNzY2Ljk5MlpNLjA4IDE5LjYzNGMwLTIuODUgMi4yMy01LjE0MiA1LjA4Mi01LjE0MmE1LjEzIDUuMTMgMCAwIDEgNS4xNDUgNS4xNDJjMCAyLjc4OC0yLjI5MyA1LjA4LTUuMTQ1IDUuMDhhNS4wNjMgNS4wNjMgMCAwIDEtNS4wODItNS4wOFpNNzUuODA5IDU4LjkxVjI4LjdoOC43MjZ2MzAuMjFoLTguNzI2Wm0yMC4xNTQtMzkuMjAyYzAtMS40LS4xOS0yLjc2LS41MzctNC4wNTNhMTUuNTEgMTUuNTEgMCAwIDAtMS41NjktMy43NzIgMTUuNjY1IDE1LjY2NSAwIDAgMC0yLjQ4OS0zLjI0MSAxNS43MzIgMTUuNzMyIDAgMCAwLTcuMDE4LTQuMDUgMTUuNjU4IDE1LjY1OCAwIDAgMC00LjA1Mi0uNTMzaC0uMDA2YTE1Ljc1IDE1Ljc1IDAgMCAwLTQuMDQ5LjUzYy0xLjM0LjM1Ny0yLjYwNS44ODgtMy43NzcgMS41NjVBMTUuNjcgMTUuNjcgMCAwIDAgNjkuMjIgOC42NGExNS43NyAxNS43NyAwIDAgMC0yLjQ5MiAzLjI0MiAxNS42NDggMTUuNjQ4IDAgMCAwLTEuNTcyIDMuNzc0bDIuMjQyLjYwMmExMy40MjcgMTMuNDI3IDAgMCAxIDMuNDYyLTUuOTc4IDEzLjQyNiAxMy40MjYgMCAwIDEgNS45ODQtMy40NSAxMy40MjYgMTMuNDI2IDAgMCAxIDMuNDQ4LS40NWguMDA2YzEuMTk1IDAgMi4zNS4xNTggMy40NTQuNDUzYTEzLjQxMiAxMy40MTIgMCAwIDEgNS45OCAzLjQ0OWMuODE5LjgyIDEuNTMxIDEuNzUgMi4xMTkgMi43NmExMy4zIDEzLjMgMCAwIDEgMS43OTMgNi42NjR2LjAxMmExMy4zOCAxMy4zOCAwIDAgMS0uNDUxIDMuNDQzIDEzLjIxNyAxMy4yMTcgMCAwIDEtMS4zMzQgMy4yMTlsMi4wMSAxLjE2YTE1LjUzOSAxNS41MzkgMCAwIDAgMS41NjYtMy43NzggMTUuNyAxNS43IDAgMCAwIC41My00LjA0MWwtLjAwMi0uMDEyWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xMDAuMDIzIDE5LjcwOGExOS42NTUgMTkuNjU1IDAgMCAwLTIuNjQ0LTkuODU1IDE5LjgxIDE5LjgxIDAgMCAwLTcuMjItNy4yMTNBMTkuNjEyIDE5LjYxMiAwIDAgMCA4NS40MDMuNjcgMTkuODEgMTkuODEgMCAwIDAgODAuMjk4IDBoLS4wMDZjLTEuNzY1IDAtMy40NzMuMjMzLTUuMTAyLjY2NmExOS41MTMgMTkuNTEzIDAgMCAwLTQuNzU5IDEuOTY5IDE5LjgyNCAxOS44MjQgMCAwIDAtNC4wODYgMy4xMzRsMS4yMzEgMS4yM2ExOC4xMDYgMTguMTA2IDAgMCAxIDMuNzI2LTIuODU1IDE3LjgwMyAxNy44MDMgMCAwIDEgNC4zNC0xLjc5MyAxOC4wODQgMTguMDg0IDAgMCAxIDQuNjQ4LS42MDdoLjAwNWExNy45NSAxNy45NSAwIDAgMSAxMi43MTMgNS4yNjEgMTcuOTMzIDE3LjkzMyAwIDAgMSA1LjI3MyAxMi43MDN2LjAxMWExOC4wMyAxOC4wMyAwIDAgMS0uNjA3IDQuNjQzIDE3LjY3NSAxNy42NzUgMCAwIDEtMS43OTcgNC4zMzcgMTguMDIzIDE4LjAyMyAwIDAgMS0yLjg1NyAzLjcyM2wxLjIzMSAxLjIzMWExOS43NDMgMTkuNzQzIDAgMCAwIDMuMTM2LTQuMDg0IDE5LjYgMTkuNiAwIDAgMCAxLjk3LTQuNzU2Yy40MzQtMS42MjUuNjY2LTMuMzMyLjY2Ni01LjA5NHYtLjAxWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk05MC45NDUgMTYuODU1YTEwLjk0OCAxMC45NDggMCAwIDAtMS4xMDQtMi42NTUgMTEuMTU1IDExLjE1NSAwIDAgMC0xLjc1LTIuMjggMTEuMDQ4IDExLjA0OCAwIDAgMC0yLjI4Mi0xLjc0N0ExMC45NjQgMTAuOTY0IDAgMCAwIDgwLjMgOC42OTVoLS4wMDZjLS45ODcgMC0xLjk0LjEzLTIuODQ5LjM3MmExMC45MSAxMC45MSAwIDAgMC0yLjY2IDEuMSAxMC45OTQgMTAuOTk0IDAgMCAwLTQuMDM3IDQuMDI3IDExIDExIDAgMCAwLTEuNDg0IDUuNTF2LjAxMmExMC45MjQgMTAuOTI0IDAgMCAwIDEuNDc2IDUuNTA1bDMuMDEzLTEuNzM4YTcuNTM1IDcuNTM1IDAgMCAxLTEuMDEtMy43N3YtLjAxYTcuNTUzIDcuNTUzIDAgMCAxIDcuNTQ4LTcuNTMzaC4wMDZhNy41MjQgNy41MjQgMCAwIDEgMy43NjkgMS4wMTIgNy41NSA3LjU1IDAgMCAxIDMuNTEzIDQuNTcyYy4xNjcuNjIuMjU4IDEuMjc2LjI1OCAxLjk1MWgzLjQ3OWMuMDAzLS45ODQtLjEyOC0xLjk0LS4zNzItMi44NVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNODcuNTg1IDE3Ljc2NWE3LjU0MiA3LjU0MiAwIDAgMC0xLjk1NS0zLjM4bC0xLjY0IDEuNjM5YTUuMjY0IDUuMjY0IDAgMCAxIDEuMzU0IDIuMzQzIDUuMTg0IDUuMTg0IDAgMCAxIDAgMi43MDUgNS4yMzkgNS4yMzkgMCAwIDEtMy42OTggMy42OTUgNS4xOTUgNS4xOTUgMCAwIDEtMi43MDcgMCA1LjI5NiA1LjI5NiAwIDAgMS0xLjI2LS41MjFsLTEuMTYgMi4wMDhhNy41MjggNy41MjggMCAwIDAgMy43NzQgMS4wMWMuNjc3IDAgMS4zMy0uMDkxIDEuOTU0LS4yNTZhNy41NTMgNy41NTMgMCAwIDAgNC41ODQtMy41MTcgNy41NDQgNy41NDQgMCAwIDAgMS4wMTMtMy43NzEgNy41IDcuNSAwIDAgMC0uMjU5LTEuOTU1WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05MS44NTMgMTMuMDQ2YTEzLjQzNSAxMy40MzUgMCAwIDAtMi4xMi0yLjc2NSAxMy4zNDMgMTMuMzQzIDAgMCAwLTIuNzY2LTIuMTE4IDEzLjI4NyAxMy4yODcgMCAwIDAtNi42NzUtMS43OWMtMS4xOTcgMC0yLjM1Mi4xNTktMy40NTYuNDU0LTEuMTQxLjMwMy0yLjIyLjc1Ny0zLjIxOCAxLjMzNmExMy40MzYgMTMuNDM2IDAgMCAwLTIuNzY3IDIuMTE4IDEzLjMzNCAxMy4zMzQgMCAwIDAtMi4xMiAyLjc2NSAxMy4yNzIgMTMuMjcyIDAgMCAwLTEuNzkgNi42N2gyLjMyYzAtLjk4Ni4xMzEtMS45NDIuMzc1LTIuODUyYTExLjA4OCAxMS4wODggMCAwIDEgMi44NTUtNC45NCAxMS4wMDIgMTEuMDAyIDAgMCAxIDIuMjg0LTEuNzUgMTEuMDMgMTEuMDMgMCAwIDEgMi42Ni0xLjEwNCAxMS4wMiAxMS4wMiAwIDAgMSAyLjg1NC0uMzc0Yy45ODggMCAxLjk0NC4xMyAyLjg1NS4zNzRhMTEuMDk5IDExLjA5OSAwIDAgMSA0Ljk0MyAyLjg1MyAxMC45OSAxMC45OSAwIDAgMSAxLjc1MSAyLjI4M2MuNDc3LjgyNi44NTIgMS43MTYgMS4xMDQgMi42NThsMi4yNDItLjYwMmExMy4xOTQgMTMuMTk0IDAgMCAwLTEuMzMtMy4yMTZaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTk3LjY3NCAxNS4wNjNhMTcuNzkxIDE3Ljc5MSAwIDAgMC0xLjgtNC4zMzYgMTguMDQzIDE4LjA0MyAwIDAgMC02LjU4Ni02LjU4MyAxNy45MyAxNy45MyAwIDAgMC04Ljk5Ni0yLjQwOGMtMS42MTIgMC0zLjE3Mi4yMTMtNC42NTcuNjFhMTcuODE3IDE3LjgxNyAwIDAgMC00LjMzOSAxLjc5OCAxOC4wMzIgMTguMDMyIDAgMCAwLTYuNTg2IDYuNTgzbDIuMDEyIDEuMTYzYTE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODktMy4yNDVjLjk2NS0uOTY0IDIuMDU3LTEuOCAzLjI0Ni0yLjQ4N2ExNS43MDYgMTUuNzA2IDAgMCAxIDMuNzc3LTEuNTY5IDE1LjY4IDE1LjY4IDAgMCAxIDguMTEgMGMxLjM0LjM1OCAyLjYwNi44OTEgMy43NzggMS41NjlhMTUuNjg1IDE1LjY4NSAwIDAgMSAzLjI0NiAyLjQ4NyAxNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5IDMuMjQ1IDE1LjY4NCAxNS42ODQgMCAwIDEgMS41NjkgMy43NzQgMTUuNjU0IDE1LjY1NCAwIDAgMSAwIDguMTA2bDIuMjQ1LjYwMWMuMzk3LTEuNDgzLjYxLTMuMDQzLjYxLTQuNjU0YTE3Ljg3NSAxNy44NzUgMCAwIDAtLjYwOC00LjY1NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNODAuMjkzIDI0Ljk0NGMyLjg4OCAwIDUuMjMtMi4zNCA1LjIzLTUuMjI3YTUuMjI5IDUuMjI5IDAgMCAwLTUuMjMtNS4yMjcgNS4yMjggNS4yMjggMCAwIDAtNS4yMyA1LjIyNyA1LjIyOCA1LjIyOCAwIDAgMCA1LjIzIDUuMjI3Wm0yMC42MTUgMTUuNDM2VjI5LjU0M2gyLjMwNFY0MC4zOGgtMi4zMDRabTYuNjE4LTMuNzg3djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOSAyLjUzOSAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm05LjY2NiAzLjgxN2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjh2LTIuMDI1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTEwLjE5My0zLjIzaC01LjM1MmMuMTI1Ljc3NS43NTcgMS4zNjIgMS43IDEuMzYyLjYzNSAwIDEuMDA0LS4yNjQgMS4yMzctLjY1aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4xOTgtLjAxNC41Ny0uMDE0LjU3Wm0tMy43MTUtMi42MjhjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDYtLjY2NC0uNjE5LTEuMTYtMS40MDgtMS4xNlptMTAuMjM5LTEuMzE1djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM1LS43NDMgMS41MTYtLjc0My45MjggMCAxLjM2Mi41NDIgMS4zNjIuNTQyWm0zLjQwMyAzLjM1NnYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NDMgMi41NDMgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTExLjE2NiAzLjAxNWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODExbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNS42OTQuODM0IDAgMS41MDEtLjQ2MiAxLjUwMS0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OXYtMi4wMjVoMS4yNjl2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41OS4yNDctMS40MzguMjQ3Wm0yLjk1MS05Ljc1M2MwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyLjcxMyAwIDEuMjg2LjU3MyAxLjI4NiAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NiAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4yNzIgMS43NDgtMy45NzQgNC4wMzgtMy45NzRzNC4wMzUgMS43MDIgNC4wMzUgMy45NzRjMCAyLjI3MS0xLjc0OCAzLjk1Ni00LjAzNSAzLjk1Ni0yLjI5IDAtNC4wMzgtMS42ODUtNC4wMzgtMy45NTZabTIuMjQ1IDBjMCAxLjExMS43NTcgMS45MTcgMS43OTMgMS45MTdzMS43OTQtLjgwMyAxLjc5NC0xLjkxN2MwLTEuMTEyLS43NTgtMS45MTgtMS43OTQtMS45MThzLTEuNzkzLjgwMy0xLjc5MyAxLjkxOFptOS41NCAwdjMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuMTY3IDMuMDE1Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjIxLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTE5Yy4xMDctMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDQuNjk0LjgzNSAwIDEuNTAyLS40NjIgMS41MDItMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM4LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm02LjUyNCAyLjMxN1YyOS41NDNoMi4xOTZWNDAuMzhoLTIuMTk2Wm0xNC4wODktMTAuODM3IDQuMjQgMTAuODM3aC0yLjM4MWwtLjg2Ni0yLjEzM2gtNC4xOTFsLS44NTEgMi4xMzNoLTIuMzgxbDQuMjM5LTEwLjgzN2gyLjE5MVptLTEuMDk4IDMuMTIzLTEuMzQ1IDMuNTM5aDIuNjlsLTEuMzQ1LTMuNTRabTYuMzg1LTIuMDA5YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjM5NiAxLjcxNi0zLjk3MyAzLjgxOS0zLjk3My44NjYgMCAxLjU5Mi4zMjMgMS45ODEuNjY0di0zLjc0MWgyLjE5NlY0MC4zOGgtMi4xNjV2LS41NDJjLS40LjM4Ni0xLjE2LjcxMi0yLjAwOS43MTItMi4xMDYgMC0zLjgyMi0xLjUxNS0zLjgyMi0zLjk1NlptNS44MzEgMGMwLTEuMTc0LS43NzItMS45OC0xLjc5My0xLjk4LTEuMDIyIDAtMS43OTQuODAzLTEuNzk0IDEuOTggMCAxLjE3NS43NzIgMS45OCAxLjc5NCAxLjk4IDEuMDIxIDAgMS43OTMtLjgwNSAxLjc5My0xLjk4Wk0xMDAuMTk2IDQ4LjA5aDguNTIydjIuMTE4aC0zLjExdjguNzE5aC0yLjMwNHYtOC43MTloLTMuMTExVjQ4LjA5aC4wMDNabTEzLjg4OCAzLjY5MnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk2di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTMxLjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm01Ljg5MSA2LjM3MWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM4LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk5LS43NzRabS0yLjY5LTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOC43MjEtMS40N3YzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMC43OTUgMS42MDdjMC0uMjMyLS4xMzktLjQxNi0uNzQ0LS41NDFsLTEuMTQzLS4yMzNjLTEuNzE3LS4zNC0yLjQ0NC0xLjE2LTIuNDQ0LTIuMjg4IDAtMS4zMyAxLjAwNS0yLjUxOSAzLjA5NC0yLjUxOSAyLjEwMiAwIDMuMDQ3IDEuMTc0IDMuMjAxIDIuNDloLTIuMDg5Yy0uMTI1LS40MTctLjQ4LS42NjQtMS4xMjktLjY2NC0uNjE5IDAtLjk2LjIxNi0uOTYuNTI1IDAgLjIzMy4xODUuMzcyLjc1OC40OGwxLjE0NC4yMzJjMS42MjMuMzIzIDIuNDI5IDEuMDgzIDIuNDI5IDIuMzggMCAxLjQ2OS0xLjA2NyAyLjQ5LTMuMTg3IDIuNDktMi4xNjUgMC0zLjMyNi0xLjAyMS0zLjU0Mi0yLjU5OGgyLjIxNGMuMTI1LjUyNC41MTEuODAyIDEuMzI4LjgwMi43NDYgMCAxLjA3LS4yMTUgMS4wNy0uNTU2Wm0xMS41NTItMS42MDhjMCAyLjM5Ny0xLjcxNyAzLjk1Ny0zLjgxOSAzLjk1Ny0uODY2IDAtMS41OTItLjMxLTEuOTgxLS42NXYzLjQ3N2gtMi4xOTdWNTEuMzQ4aDIuMTY2di41NDJjLjQwMy0uMzg2IDEuMTYtLjcyNiAyLjAxMi0uNzI2IDIuMTAyIDAgMy44MTkgMS41MTcgMy44MTkgMy45NzNabS01LjgzMSAwYzAgMS4xNzUuNzc0IDEuOTggMS43OTMgMS45OCAxLjAyMiAwIDEuNzk0LS44MDMgMS43OTQtMS45OCAwLTEuMTc0LS43NzItMS45OC0xLjc5NC0xLjk4LTEuMDE5LjAwNC0xLjc5My44MDYtMS43OTMgMS45OFptMTEuODc5IDMuMDE2Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ2LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTgtLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA0LjY5NS44MzUgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptMTEuNTY2LTQuODI2djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY2di42MzVjLS4wMTUgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MjguMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTguNDI4IDMuOTQ0aC01LjM1MmMuMTI1Ljc3NC43NTggMS4zNiAxLjcwMyAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzctLjY0OWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NiAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjEtNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4yLS4wMTcuNTctLjAxNy41N1ptLTMuNzExLTIuNjI3Yy0uODM1IDAtMS4zOTQuNTEtMS41MzMgMS4xNmgyLjk0Yy0uMDQ1LS42NjYtLjYxOS0xLjE2LTEuNDA3LTEuMTZabTcuMzkyIDIuMDM5djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS41NjcuODM3aDIuNDEyYy0uMzU3IDEuODQtMS43NDggMy4xMjMtMy43OTEgMy4xMjMtMi4yOSAwLTMuOTktMS42ODUtMy45OS0zLjk1NyAwLTIuMjcxIDEuNzAzLTMuOTczIDMuOTktMy45NzMgMS45OTUgMCAzLjM4OCAxLjIzNiAzLjY2NiAzLjAyOWgtMi40MTVjLS4xNy0uNTczLS42NjQtLjk1OS0xLjMyOC0uOTU5LS45MjggMC0xLjY3MS43ODktMS42NzEgMS45IDAgMS4xMTIuNzQzIDEuOSAxLjcwMyAxLjkuNzEyLjAwNCAxLjI0LS40MTYgMS40MjQtMS4wNjNabTUuMTAyIDYuMDI3Yy0uOTkgMC0xLjQ4NC0uMjY0LTEuNDg0LS4yNjR2LTIuMDFzLjQ0OC4yMzIuOTI4LjIzMmMuNDk2IDAgMS4xNDMtLjE4NCAxLjI5OS0xLjAzNWwtMi45NTQtNy41NzVoMi40NDRsMS43MTcgNC42OTkgMS43NDgtNC43aDIuMzQ5bC0zLjA3OSA3LjdjLS44MDMgMi4wMjYtMS40NTMgMi45NTMtMi45NjggMi45NTNabTExLjU5OC0zLjA3NVY0OC4wOWgyLjMwNXYxMC44MzdoLTIuMzA1Wm02LjYxOC0zLjc4OXYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY2di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTUtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTYuNTQxLTUuOTM2YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTcuMjU0LjAyOWMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI2LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0yLjk1NC05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm04Ljc1NC0uNzc0Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI3IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODFsLS4xOTktLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDhjLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk3LTEuODU1djIuOTdoMS45MDF2Mi4wMjRoLTEuOTAxdjIuNjQzYzAgLjcyNi40NzkuODk3LjkyOC44OTcuNTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODguMjQ3LTEuNDM5LjI0N1ptMi45NTEtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0xMC45ODMtNy41NzUtMi42OTEgNy41NzVoLTIuMjU4bC0yLjY5MS03LjU3NWgyLjMzNmwxLjQ4NCA0LjY4NSAxLjQ4NC00LjY4NWgyLjMzNlptNy45OCA0LjM3NGgtNS4zNTJjLjEyNS43NzQuNzU3IDEuMzYgMS43MDIgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM4LS42NDloMi4zNjZjLS41MSAxLjY0LTEuNjg1IDIuNjYtMy41NzIgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg4IDAgMy43NiAxLjk2MyAzLjc2IDMuOTg4LS4wMDYuMi0uMDIuNTctLjAyLjU3Wm0tMy43MTItMi42MjdjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDktLjY2Ni0uNjE5LTEuMTYtMS40MDgtMS4xNlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgZD1cXFwibTcuMzMzIDEyLjM2MS0uMjIzLjExMi4yMjMuNDQ3aC41di0uMjVsLjgzNC0uNDE3LTEuMzM0LjEwOFptMCAwVjkuMzMzdjMuMDI4Wm0tNS41LTguMjQ4di0uNzhhMS41IDEuNSAwIDAgMSAxLjUtMS41aDkuMzM0YTEuNSAxLjUgMCAwIDEgMS41IDEuNXYuNzcyYTEuNDk5IDEuNDk5IDAgMCAxLS4xNDUuNTkzbC0uMDQ5LjEwMnYuMDRhMS4zNzEgMS4zNzEgMCAwIDEtLjI0Ni4zMzJ2LjAwMWwtNC4wOCA0LjA4TDkuNSA5LjR2My4yNjZjMCAuMDMtLjAwOS4wNi0uMDI1LjA4NmwuNDI1LjI2My0uNDI1LS4yNjNhLjE2Ny4xNjcgMCAwIDEtLjA2Ni4wNjFsLTIuNjY2IDEuMzMzLS4wMDQuMDAyYS4xNjcuMTY3IDAgMCAxLS4wNzUuMDE5LjE2Ny4xNjcgMCAwIDEtLjA4Ny0uMDI1LjE2Ni4xNjYgMCAwIDEtLjA3Ny0uMTQxVjkuMzk5bC0uMTQ4LS4xNDctNC4xMDYtNC4wOEExLjM3MyAxLjM3MyAwIDAgMSAyIDQuODR2LS4wM2wtLjA0Mi0uMDk3YTEuNSAxLjUgMCAwIDEtLjEyNS0uNlpNNiA5LjYwN1YxNGEuNjY2LjY2NiAwIDAgMCAuNjY3LjY2Ny42NjYuNjY2IDAgMCAwIC4zLS4wNzRMNiA5LjYwN1ptMy4xNjctLjI3NFY5LjMzYS4xNjcuMTY3IDAgMCAxIC4wNDgtLjExOGwzLjUzMS0zLjUyNS44NTYtLjg1NEgyLjM5N2wuODU2Ljg1NCAzLjUzMiAzLjUyNWEuMTY3LjE2NyAwIDAgMSAuMDQ4LjExOHY0LjM5OWwuNzI0LS4zNjJMOC44OSAxMi43bC4yNzctLjEzOFY5LjMzM1pNMTMuMzMzIDQuNWguNVYzLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2Ni0xLjE2NkgzLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2NiAxLjE2NlY0LjVoMTEuMTY2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjkgMjlcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggb3BhY2l0eT1cXFwiLjk5XFxcIiBkPVxcXCJNMTIuNDYgMTkuNDQ3YTEuMjAzIDEuMjAzIDAgMCAxLS44NTMtLjM1NGwtMy4zOTktMy4zOTlhMS4yMDggMS4yMDggMCAwIDEgMS43MDktMS43MDhsMi41NDQgMi41NDQgNi42MjItNi42MjJhMS4yMDggMS4yMDggMCAwIDEgMS43MDkgMS43MDhsLTcuNDc3IDcuNDc3YTEuMjA1IDEuMjA1IDAgMCAxLS44NTQuMzU0WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xNC41IDIuNDE3QTEyLjA4MyAxMi4wODMgMCAxIDAgMjYuNTgzIDE0LjUgMTIuMDk3IDEyLjA5NyAwIDAgMCAxNC41IDIuNDE2Wm02LjI5MiA5LjE5OS03LjQ3NyA3LjQ3NmExLjIwNiAxLjIwNiAwIDAgMS0xLjcwOCAwbC0zLjM5OS0zLjM5OGExLjIwOCAxLjIwOCAwIDAgMSAxLjcwOS0xLjcwOWwyLjU0NCAyLjU0NCA2LjYyMi02LjYyMmExLjIwOCAxLjIwOCAwIDAgMSAxLjcwOSAxLjcwOVpcXFwiIGZpbGw9XFxcIiMxNzk5N0JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgOTUwIDI5MlxcXCI+PGcgb3BhY2l0eT1cXFwiLjNcXFwiPjxwYXRoIG9wYWNpdHk9XFxcIi40XFxcIiBkPVxcXCJNMzkzLjM4MyA1MzcuNTkyYTIxMy4wNTggMjEzLjA1OCAwIDAgMS01NS4xMzMtNy4yNDhjLTE4LjE5Ni00Ljg2LTM1LjQxOS0xMi4wOS01MS4zNDctMjEuMzE2LTE2LjE2Ni05LjM0NS0zMS4wMDMtMjAuNzAzLTQ0LjExNy0zMy44MTctMTMuMTEzLTEzLjExMy0yNC40NzEtMjcuOTY3LTMzLjgxNi00NC4xMTZhMjExLjgyNiAyMTEuODI2IDAgMCAxLTIxLjMxNy01MS4zNDcgMjEyLjkwNiAyMTIuOTA2IDAgMCAxLTcuMjQ3LTU1LjEzMyAyMTMuMDkgMjEzLjA5IDAgMCAxIDcuMjQ3LTU1LjEzM2M0Ljg2MS0xOC4xOTYgMTIuMDkxLTM1LjQyIDIxLjMxNy01MS4zNDhsNTYuNjg1IDMyLjcyNWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAtMTQuNzY4IDM1LjU3MyAxNDcuNTMxIDE0Ny41MzEgMCAwIDAtNS4wMTQgMzguMTgzIDE0Ny41MyAxNDcuNTMgMCAwIDAgNS4wMTQgMzguMTgyIDE0Ni41MjcgMTQ2LjUyNyAwIDAgMCAxNC43NjggMzUuNTczYzYuNDggMTEuMTg3IDE0LjM0MSAyMS40NyAyMy40MzEgMzAuNTU5IDkuMDg5IDkuMDg5IDE5LjM3MiAxNi45NTEgMzAuNTU5IDIzLjQzMWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAgMzUuNTczIDE0Ljc2OCAxNDcuNjI3IDE0Ny42MjcgMCAwIDAgMzguMTgyIDUuMDE0YzEzLjIgMCAyNi4wMDYtMS43NTcgMzguMTgyLTUuMDE0YTE0Ni40OTQgMTQ2LjQ5NCAwIDAgMCAzNS41NzMtMTQuNzY4YzExLjE4Ny02LjQ4IDIxLjQ3LTE0LjM0MiAzMC41Ni0yMy40MzFsNDYuMjgyIDQ2LjI4MmMtMTMuMTE0IDEzLjExNC0yNy45NjcgMjQuNDcyLTQ0LjExNyAzMy44MTdhMjExLjc1IDIxMS43NSAwIDAgMS01MS4zNDcgMjEuMzE2IDIxMy4yOCAyMTMuMjggMCAwIDEtNTUuMTUgNy4yNDhaTTU4MS42NjggNjUwLjc0YzI4LjU4MS0xNi41MjQgNTQuODI2LTM2LjYxMyA3OC4wMTgtNTkuODA1IDIzLjE5Mi0yMy4xOTMgNDMuMjgxLTQ5LjQ1NSA1OS44MDYtNzguMDE5IDE2LjMwMy0yOC4xNzIgMjkuMDc1LTU4LjYyOSAzNy42ODctOTAuODA4YTM3Ni41OTIgMzc2LjU5MiAwIDAgMCAxMi44MDctOTcuNDc2IDM3Ny4yMyAzNzcuMjMgMCAwIDAtMTIuODA3LTk3LjQ3N2MtOC41OTUtMzIuMTc5LTIxLjM4NC02Mi42MzYtMzcuNjg3LTkwLjgwOC0xNi41NDItMjguNTgxLTM2LjYxNC01NC44MjYtNTkuODA2LTc4LjAxOC0yMy4xOTItMjMuMTkzLTQ5LjQ1NC00My4yODEtNzguMDE4LTU5LjgwNi0yOC4xNzItMTYuMzAzLTU4LjYyOS0yOS4wOTMtOTAuODA5LTM3LjY4N2EzNzYuNTkyIDM3Ni41OTIgMCAwIDAtOTcuNDc2LTEyLjgwN3Y2NS40NWMyNy44NjUgMCA1NC44NDMgMy43MTcgODAuNTQzIDEwLjU5IDI2LjU4NSA3LjExMSA1MS43MzkgMTcuNjY3IDc1LjAxNyAzMS4xMzkgMjMuNjAxIDEzLjY2IDQ1LjMxIDMwLjI1MiA2NC40NjEgNDkuNDIgMTkuMTY3IDE5LjE2OCAzNS43NiA0MC44NiA0OS40MiA2NC40NjEgMTMuNDcyIDIzLjI3OCAyNC4wMjggNDguNDMxIDMxLjEzOSA3NS4wMTdhMzExLjI2NiAzMTEuMjY2IDAgMCAxIDEwLjU5IDgwLjU0M2MwIDI3Ljg2NS0zLjcxNyA1NC44NDMtMTAuNTkgODAuNTQyLTcuMTExIDI2LjU4Ni0xNy42NjcgNTEuNzM5LTMxLjEzOSA3NS4wMTctMTMuNjYgMjMuNjAyLTMwLjI1MyA0NS4zMS00OS40MiA2NC40NjEtMTkuMTUxIDE5LjE1MS00MC44NiAzNS43NjEtNjQuNDYxIDQ5LjQyLTIzLjI3OCAxMy40NzItNDguNDMyIDI0LjAyOC03NS4wMTcgMzEuMTM5bDE2LjkzMyA2My4yMzRjMzIuMTk3LTguNjQ2IDYyLjYzNy0yMS40MTkgOTAuODA5LTM3LjcyMlptLTU2LjkwNyAxNjQuMTg4YTUwNC4zMTIgNTA0LjMxMiAwIDAgMCAxMjIuNDI1LTUwLjczMyA1MTAuNCA1MTAuNCAwIDAgMCAxMDUuMDgyLTgwLjcxM0E1MDkuMjI2IDUwOS4yMjYgMCAwIDAgODMyLjk4MSA1NzguNGE1MDQuNzMgNTA0LjczIDAgMCAwIDUwLjczMy0xMjIuNDI1YzExLjIwNC00MS45MTYgMTcuMjA3LTg1Ljk0OCAxNy4yMDctMTMxLjM3NyAwLTQ1LjQ0Ny02LjAwMy04OS40NzktMTcuMjA3LTEzMS4zNzhhNTA0LjM0MyA1MDQuMzQzIDAgMCAwLTUwLjczMy0xMjIuNDI1QzgxMC43MDkgMzIuMjg4IDc4My41MDktMy4wMyA3NTIuMjY4LTM0LjI4N0E1MDkuMjE3IDUwOS4yMTcgMCAwIDAgNjQ3LjE4Ni0xMTVsLTMyLjc5MyA1Ni43ODdjMzMuNTQzIDE5LjQwNyA2NC4zNTkgNDIuOTkxIDkxLjU5MiA3MC4yMDggMjcuMjE3IDI3LjIxNyA1MC44MDIgNTguMDUgNzAuMjA5IDkxLjU3NiAxOS4xMzMgMzMuMDY2IDM0LjE0IDY4LjgxIDQ0LjIzNiAxMDYuNTgyIDkuNzU0IDM2LjUxMSAxNS4wNDEgNzQuODQ3IDE1LjA0MSAxMTQuNDI4IDAgMzkuNTgtNS4yNyA3Ny45MTYtMTUuMDQxIDExNC40MjYtMTAuMDk2IDM3Ljc3My0yNS4xMDMgNzMuNTE3LTQ0LjIzNiAxMDYuNTgzLTE5LjQwNyAzMy41NDQtNDIuOTkyIDY0LjM1OS03MC4yMDkgOTEuNTc2LTI3LjIxNiAyNy4yMTctNTguMDQ5IDUwLjgwMS05MS41OTIgNzAuMjA4LTMzLjA2NiAxOS4xMzQtNjguODEgMzQuMTQtMTA2LjU4MyA0NC4yMzYtMzYuNTExIDkuNzU0LTc0Ljg0NiAxNS4wNDEtMTE0LjQyNyAxNS4wNDEtMzkuNTggMC03Ny45MTYtNS4yODctMTE0LjQyNy0xNS4wNDFsLTE2Ljk1MSA2My4yODRjNDEuOSAxMS4yMDQgODUuOTMxIDE3LjIwNyAxMzEuMzc4IDE3LjIwNyA0NS40NDcuMDM0IDg5LjQ3OC01Ljk2OSAxMzEuMzc4LTE3LjE3M1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk0zOTMuMzgzIDc2Ni42ODZhNDQyLjQ4OSA0NDIuNDg5IDAgMCAxLTExNC4xMDMtMTQuOTM4Yy0zNy43NzMtMTAuMDYyLTczLjUxNi0yNS4wNTItMTA2LjU5OS00NC4xNTFsMzIuNzI1LTU2LjY4NWMyOC4xODkgMTYuMjY5IDU4LjY0NiAyOS4wMjQgOTAuODI1IDM3LjYwMmEzNzcuMTI2IDM3Ny4xMjYgMCAwIDAgOTcuMTUyIDEyLjcyMmguMzA3YTM3Ni45NTggMzc2Ljk1OCAwIDAgMCA5Ny40MjUtMTIuODc1YzMyLjE0Ni04LjYxMiA2Mi41NjgtMjEuNDAyIDkwLjcyMy0zNy43MDUgMjguNTQ3LTE2LjUyNCA1NC43NzUtMzYuNjEzIDc3LjkzMy01OS43ODggMjMuMTU5LTIzLjE3NiA0My4yMy00OS40MDQgNTkuNzU1LTc3Ljk1MSAxNi4yODYtMjguMTU0IDI5LjA1OS01OC41NiAzNy42Ny05MC43MjNhMzc2LjU3NSAzNzYuNTc1IDAgMCAwIDEyLjgyNC05Ny4zOXYtLjE4OGMwLTMzLjYyOS00LjQ2Ny02Ni4yMDEtMTIuNzM4LTk3LjIzNy04LjU3OC0zMi4xNjMtMjEuMzM0LTYyLjYwMy0zNy42MDMtOTAuNzc1LTE2LjUwNy0yOC41ODEtMzYuNTYyLTU0Ljg0My01OS43Mi03OC4wMzUtMjMuMTc1LTIzLjIxLTQ5LjQwMy00My4zMzItNzcuOTUtNTkuODkxLTI4LjE3Mi0xNi4zMzctNTguNjEyLTI5LjE0NC05MC43NzQtMzcuNzczbDE2LjkzMy02My4yMzNjMzcuNzczIDEwLjEzIDczLjUgMjUuMTUzIDEwNi41NjYgNDQuMzIxIDMzLjUyNyAxOS40MjQgNjQuMzA4IDQzLjA0MiA5MS41MDcgNzAuMjc2IDI3LjE4MyAyNy4yMzQgNTAuNzUxIDU4LjA2NyA3MC4xMjMgOTEuNjEgMTkuMSAzMy4wNjYgMzQuMDcyIDY4Ljc5MyA0NC4xNTEgMTA2LjU2NmE0NDIuMjggNDQyLjI4IDAgMCAxIDE0Ljk3MyAxMTQuMTcxdi4xODhhNDQyLjc4NCA0NDIuNzg0IDAgMCAxLTE1LjA1OCAxMTQuMzQxYy0xMC4wOTYgMzcuNzM5LTI1LjA4NiA3My40NDgtNDQuMjE5IDEwNi40OTctMTkuMzkgMzMuNTEtNDIuOTU3IDY0LjMwOC03MC4xNCA5MS41MjUtMjcuMiAyNy4yLTU3Ljk4MSA1MC43ODQtOTEuNDkxIDcwLjE5MS0zMy4wMzIgMTkuMTM0LTY4Ljc1OCAzNC4xNDEtMTA2LjQ5NyA0NC4yNTNhNDQyLjA1MiA0NDIuMDUyIDAgMCAxLTExNC4zNTkgMTUuMDkyYy0uMTM2LS4wMTctLjIzOC0uMDE3LS4zNDEtLjAxN1ptLjMwNyAxMTQuNTQ3YzQ5LjgxMy0uMDM1IDk4LjA5LTYuNjM0IDE0NC4wMzItMTguOTI5YTU1My4zMTYgNTUzLjMxNiAwIDAgMCAxMzQuMTc0LTU1LjY2MiA1NTcuODg3IDU1Ny44ODcgMCAwIDAgMTE1LjE0My04OC41MDYgNTU4LjkzOCA1NTguOTM4IDAgMCAwIDg4LjQ1NS0xMTUuMTc4IDU1Mi44NjMgNTUyLjg2MyAwIDAgMCA1NS42MTEtMTM0LjE3NEM5NDMuNCA0MjIuODQyIDk0OS45ODMgMzc0LjU4MiA5NTAgMzI0Ljc4NnYtLjE4N2MwLTQ5Ljc0NC02LjU2Ni05Ny45NTQtMTguODEtMTQzLjg0NGE1NTMuNDU0IDU1My40NTQgMCAwIDAtNTUuNTQyLTEzNC4yNDNDODUxLjI0NSA0LjI3MiA4MjEuNDUzLTM0LjQ1NiA3ODcuMjEtNjguNzVsLTM0LjcyIDM0LjcyYTUwOC45MDggNTA4LjkwOCAwIDAgMSA4MC42MjcgMTA1LjA5OSA1MDQuNDY1IDUwNC40NjUgMCAwIDEgNTAuNjMxIDEyMi4zOTFjMTEuMTUzIDQxLjgzMSAxNy4xMzkgODUuNzc3IDE3LjEzOSAxMzEuMTM5di4xODdjLS4wMTcgNDUuNDEzLTYuMDIgODkuNDEtMTcuMjI0IDEzMS4yOTNhNTA0LjkwMiA1MDQuOTAyIDAgMCAxLTUwLjY5OSAxMjIuMzIzIDUwOS43MTUgNTA5LjcxNSAwIDAgMS04MC42NjIgMTA1LjAxMyA1MDkuMjc4IDUwOS4yNzggMCAwIDEtMTA0Ljk5NiA4MC42OTYgNTA0LjMyIDUwNC4zMiAwIDAgMS0xMjIuMzIzIDUwLjc1Yy00MS44ODMgMTEuMjIxLTg1Ljg5NyAxNy4yNDEtMTMxLjMyNyAxNy4yNzVoLS4zMDdjLTQ1LjMyNyAwLTg5LjIzOS01Ljk2OC0xMzEuMDU0LTE3LjEyMWE1MDQuODk5IDUwNC44OTkgMCAwIDEtMTIyLjQ0Mi01MC42MzFBNTA5LjI4NCA1MDkuMjg0IDAgMCAxIDM0LjcyIDY4My43MjJMMCA3MTguNDQzYTU1OS4yMjIgNTU5LjIyMiAwIDAgMCAxMTUuMjk3IDg4LjQ3MiA1NTMuNTYzIDU1My41NjMgMCAwIDAgMTM0LjI5NCA1NS41NDJjNDUuODU2IDEyLjIyNyA5NC4wMzEgMTguNzc2IDE0My43NTggMTguNzc2aC4zNDFabTgwLjQ3NC0yNTYuMTA2YTMwOS4yOCAzMDkuMjggMCAwIDAgNzQuOTMyLTMxLjE1NmMyMy41NjgtMTMuNjU5IDQ1LjI0Mi0zMC4yNTIgNjQuMzc2LTQ5LjM4NiAxOS4xMzQtMTkuMTUxIDM1LjcwOS00MC44MDggNDkuMzUyLTY0LjM5MyAxMy40NTUtMjMuMjQzIDI0LjAxMS00OC4zOCAzMS4xMDUtNzQuOTMxYTMxMS4zOTYgMzExLjM5NiAwIDAgMCAxMC42MDctODAuNDU3di0uMTg4YzAtMjcuNzgtMy42ODMtNTQuNjczLTEwLjUwNS04MC4yODctNy4wNzctMjYuNTY4LTE3LjYxNi01MS43MjItMzEuMDU0LTc1LTEzLjYyNS0yMy42MTgtMzAuMjAxLTQ1LjMxLTQ5LjMzNC02NC40NzgtMTkuMTM0LTE5LjE4NS00MC44MDktMzUuODExLTY0LjM5My00OS40ODgtMjMuMjYxLTEzLjQ5LTQ4LjQxNC0yNC4wOC03NS0zMS4yMjVhMzExLjQ1MSAzMTEuNDUxIDAgMCAwLTgwLjU2LTEwLjY3NWgtLjMwN2EzMTAuOTk3IDMxMC45OTcgMCAwIDAtODAuMzAzIDEwLjUyMmMtMjYuNjIgNy4wOTQtNTEuODA4IDE3LjY1LTc1LjEyIDMxLjEyMmw0OS4wOTcgODUuMDI3YTIxMS42NzggMjExLjY3OCAwIDAgMSA1MS40MzItMjEuMjk5IDIxMy4zMTQgMjEzLjMxNCAwIDAgMSA1NC44OTQtNy4xOGguMzA3YTIxMy4yIDIxMy4yIDAgMCAxIDU1LjE1IDcuMzMzIDIxMS4yNDUgMjExLjI0NSAwIDAgMSA1MS4zMzEgMjEuNDAyYzE2LjEzMiA5LjM3OSAzMC45NTEgMjAuNzcxIDQ0LjA0OCAzMy45MDIgMTMuMDggMTMuMTMxIDI0LjQyIDI3Ljk4NCAzMy43NDggNDQuMTM0YTIxMS40MDggMjExLjQwOCAwIDAgMSAyMS4yMzEgNTEuMzMgMjEzLjI3NiAyMTMuMjc2IDAgMCAxIDcuMTggNTQuODc3di4xODhhMjEyLjkxMSAyMTIuOTExIDAgMCAxLTcuMjY1IDU1LjAzYy00Ljg2IDE4LjE2Mi0xMi4wOTEgMzUuMzUyLTIxLjI4MiA1MS4yNjItOS4zMjggMTYuMTMzLTIwLjY2OSAzMC45NTItMzMuNzY2IDQ0LjA0OS0xMy4wNzkgMTMuMDk2LTI3Ljg5OSAyNC40NTQtNDQuMDMxIDMzLjc5OS0xNS45MTEgOS4yMjYtMzMuMSAxNi40NTYtNTEuMjYyIDIxLjMzNGEyMTIuNDk1IDIxMi40OTUgMCAwIDEtNTUuMDY1IDcuMjk4djk4LjE3NmEzMTIuMDkgMzEyLjA5IDAgMCAwIDgwLjQ1Ny0xMC42NDJabTY2Ljc0Ny0zMDAuNTExYzAtODEuNDgtNjYuMDQ3LTE0Ny41MjctMTQ3LjUyOC0xNDcuNTI3LTgxLjQ4IDAtMTQ3LjUyNyA2Ni4wNDctMTQ3LjUyNyAxNDcuNTI3IDAgODEuNDggNjYuMDQ3IDE0Ny41MjcgMTQ3LjUyNyAxNDcuNTI3IDgxLjQ4MSAwIDE0Ny41MjgtNjYuMDY0IDE0Ny41MjgtMTQ3LjUyN1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19iKVxcXCIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImdyb3VwX3N2Z19fYVxcXCIgeDE9XFxcIjEyNy44OTVcXFwiIHkxPVxcXCI1ODIuNjQ3XFxcIiB4Mj1cXFwiODc4LjM0MlxcXCIgeTI9XFxcIjE0OS4zNzdcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBvZmZzZXQ9XFxcIi42XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZ3JvdXBfc3ZnX19iXFxcIiB4MT1cXFwiLTExLjA3MVxcXCIgeTE9XFxcIjY5OS4xOTNcXFwiIHgyPVxcXCI5MzYuNTg5XFxcIiB5Mj1cXFwiMTUyLjA2MVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIG9mZnNldD1cXFwiLjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMzEgMzFcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiPjxwYXRoIGZpbGw9XFxcInVybCgjaGFuZC13YXZlX3N2Z19fYSlcXFwiIGQ9XFxcIk0wIDBoMzF2MzFIMHpcXFwiLz48ZGVmcz48cGF0dGVybiBpZD1cXFwiaGFuZC13YXZlX3N2Z19fYVxcXCIgcGF0dGVybkNvbnRlbnRVbml0cz1cXFwib2JqZWN0Qm91bmRpbmdCb3hcXFwiIHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjFcXFwiPjx1c2UgeGxpbms6aHJlZj1cXFwiI2hhbmQtd2F2ZV9zdmdfX2JcXFwiIHRyYW5zZm9ybT1cXFwic2NhbGUoLjAxKVxcXCIvPjwvcGF0dGVybj48aW1hZ2UgaWQ9XFxcImhhbmQtd2F2ZV9zdmdfX2JcXFwiIHdpZHRoPVxcXCIxMDBcXFwiIGhlaWdodD1cXFwiMTAwXFxcIiB4bGluazpocmVmPVxcXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBZ0FFbEVRVlI0bk8yZENYeVYxWm4vWTdkcE83V3RDY2hPdG51elFsWVNRaUFFU01LT0xBS0N1TENJMm0yMHk5U1o2VGo4cDA0N2puVmNXbXUxcmUyb1k3VUlCR1JKV0VQSUhtNXkxOXpzQkxDV1dxM2s1dTdMKy83K24rZWM4OTc3NXVZbUJnVnhOT2Z6ZVQ0MzVPYUc5ejNmOTFuUGMwNmlvc2JHMkJnYlkyTnNqSTJ4TVRZK3pnUEFaNi8zTll3Tk1YcmZ3OWQ2MzhKMHkzbFBXdU41VDFxRjFURUp3QTNLKzJQakl4eTdkdUV6YncxZ1hPdDVUMXA5ajIvdXlUYlA4Z05HNytaWG0xMTN2dERnbkwyckNwOGJBM0lkQm9BYmpuUzkrOVdEQnU4TUJxUFc5Y09uVDdwLzh1aFIxOFAvdkg4Z2JRektkUnk3ZCtPelQxWTVzaDZyZEQveThBSG5TOS9mNDloLzN5djJiKzhDUGpNRzVqcU83KzdHbDM3d3VtUG4vYThNbkxyN2R3T3Q2NThiZUtING1iZS9NZ2JsT285dEx3d1VyMy9PWmw3MjgvNTNpaCszTlM5OUdsKzkzdGYwaWZZZDdlKzhjMk5qMTd0ZnhRZ21hZFZUNzJVc2VMei93cUluK3Aycm5ySHQyYkFiWC9oSUwvVC80b0JKbXdCRDRsSVl0TE5SUC9WTG8vbE0zOXVZYUhyVG0xSFY2Uzg5YVBTcy8xMmpxK2huUnkvOWZhU2ZYZlQwUU5xcVovbzdOdi9hWnQzNXN2MlJxS2l4MERneUNFdmFWeVNENXBCczBFSTJhZ0VtU1pkaDBENEJmZXpYUndMUy9nNXVQTjNwU1gzRDdGLzFZcjNud1orZmN2NzBrVGNjVDMzM05mdkNTRCsvNmJmT1dmZThhS3QrOEkvT0l6L2E3eTZOK2hERGZ1RG1DUU9IYnI3WHRqL214LzNsTWJlLzljYWtMMGQ5RW9hazF6NkxFQWpBcEVneS9mdlBNQ2ZsamNaMFBYblNsdnpqZzQ2SHYvKzY0OENPRndjYWIzMSs0T0VOdTRkbThQL3dxbTNsdjVRN1gvM3BFZmRUdnpodWk3blM2MFZWMU9jY1J5Yys3S2lZYUxjZm1ZQ0JnK05oT3pBTy9lVXhiL2FYajh1TityZ011bEJmWGV3M3ZmVnhoL3lOOGRYKzVvVGYrSFVKSzRDb1liTm1WQlYvRHNZazV5QUlwaFRBbkNva2pWNGRNS2N2R2MwMUVJQWRMOXJ1dnZVNVczZnBFLzMyMGlmN240OGFrclhqaHA5VU9COTQ2cVR6MGQrY2NkMXhSZmRZUC9WTHJsTlREcmhPVElIejJDUTRLaWJDZnZobUJxVi8vemhjTG8rKzlNNyttQnVqcnZmQTdxalBldXVtVi9nYTR1QnZpa2ZnYkFJa1hTS2tsa1FFV2hKYllkQmtSL3hjUy9Ma29TQUlRanBnbmlGa0pva1g1b3hiUjNzOXBVL2FiaWw5b3I5Ly9YTzIzbnRlR3JnMy9QMG55eTkvL1RjMXJ1Ly80YXp2L29ONlRCbnQ3L1djbWZwNzkrbXBjSjJhQXVlSnlYQWNuUVI3eFVRTUhMb1p0amZHazVhUTNCZDF2WWVuZHZxdGtXQklyUnJJZWcwa3ZjWUZvMlo5K09lZ3kvMHlUQ21CRUFnQndVSVFNZ0JMcHBBc2VnM0FrcjF0dE5lMDdqbmJxbnRldHRmOTQxN0gzcDhjR1pxdHYxTHZ6S2N5UzFVSDVvM3FIbXRpMTNscnBzTlRQUTN1S2dIbHVJQkNwb3VnSEJpSHkvdWlYNHE2M3NQYkVQdGZERWJ6VUJoTURGcElCbTBBQnMzMjhNL0NuTllRMUFTTEFpRWJzT1FCYmJPQnRueWdMUWRveXdVc3VUS3NPUStPOXJwKzhQckF6cDhjY2Z6cTJXclBnK0YxTFowT256L1I1UytyNi9ZVmRuV05uSnNBVVoveDFjVzFlZXRpTVFqS1NUSmRrK0dvSk5QRi9Vbi8vaGg5MVBVZS9zYjRuM01ZQ1FLR0ZySStHYkloaGIrR25MWU1VOHEzMVorRk9mM09FQWpTaEd6QU9ndG9ud08wRndIdDgvbHIyeHdCaHlUdi80M211bmJ0eGhkK2VjcjV3QithM1BkWFd0eWE4UGVidXpGTmY4R2IvaWNiUm5UdS91YllaZjdHT1BqcTQrQ3RqWVhuekhTNFQwK0QrOVJVS1A1RU1WMzlCMkxjNUUranJ1Y0luSTI3THhDRVFWcWhoV3hJZzJ6S2dFeW14elNUK3dqeUZXU2VUR2tQcVo4K1dETHJHQWhGRTlvSXlGeWdZeUhRVVFwMGxnTHRKUnlPdFVDUnAwWUtHSlR4YXBNbnFiTE52NmJ4QW5MRHkvS2tKVjF2T3FkZUFpTG1Mc3J3bjAzNFg3SUEvb1k0K0VoTGFxZkRjMllhZ3Y3a3VOQVNFWFVON0l0T2picWVBN3FrY1FGZGdrZHFUWVNzQURIT2dHek80cE5ySWFISnpndzViRXZHSThIUEcyZE9oU1gzejJqTEV4b3dHMmlmQjNTVUFGM0xnSzZWUU5jSy9qVUJzaFlCMXJra3Z3TTJqTGc0UlJEcXozdHpPaTRoUHRKQzFrVmd4Q1NVSHBpQUx2RTk4bzBFaFh4bFpOUEZvNjZCdzZRbDR6WkdYZThodFNZK3ltRndueUdiMGpnRTYyekFXaWdtVUpnZEFtWEpvdGNubEtjYzFvSWN0T1VQOEtkL0R2OTVBdEs1SE9pK0JlaGVCM1N2QWJwV0FaMUxnZllGM0pSWjUrMkJKVzNFVW9qcEFtNTZDL2hBaVJ2MDJpeW0rYnBFNWlQOWpmRmhwbXVvZzdlOU1mN0hVZGQ3UURmcHk1SmVvMk13RE9RdmtvRTIwaER5QmZPQmprVkEreUtnbzFqQXlSZm1LZTk1ZWdyWjcyaWZzd1RXUWg5N256U0VKcDJBZEswQmVqWUMzYmVKMTNWY1l6cktCSmppb3pDVURXdDJQc3dLSWxvVDdpWXp6RUo0b1NWQjB6V01sdGdPalMrUCtqZ002RkltU1FidGVlYkFLYitneUttdFFQaUN4ZnpKSnFHSjdGZ29OSWMwcU9CbFNoTFo3N0RPdlJ2VytUTGFpL2xrZHkwQnVsY0R2UnVBM3R1QjNpMUE3MmFnWndQUWRRdi92UXoyd2xyb2kwY3N0WHlRSWJWcS9vTTBuOHh4RU1vUUxabW0waElXY2ZWRWZWd0d6TnBVR0xSLzR3bGZLdmNoMW1LZ2N6SFF2WktiSDVySXJoVkFKejNoaXNiTWV3Tjl4VjlrdjZOOXdZODRSTktvVW02bWVtNFZRTzVReVNhdVBjeTNsSkJZMEY0NitXcmVqMlRRN21hNWxLSWx1Z1Q0bTBmV2tvR0tpZEtsb3hOR0RCUSswZ0dqdGdqR0ZEZFA5aWlNSlFkZHhpZVcrWUlOUVBldC9NbnZYQ2FpS0lxZ2lvL2dZZ0Z6c3Vnb2VZNUhXUFM1WlVEM1dxQm5NOUI3SjlCN2x4RDZlalAvblozQ2hIV1Vkc0JTT3YxcTNZdGswT2lWZkdwa0xSa2NjZlVmbkpBZjlWRU1YM044WHFBcGJtOUFsOWdaMENWWXBKYkUzME9mT0tTNkNrdmFlcGpTSlpaMVU5UkVUM3NuYVFnOTZiZnhwNXRlZTJneVZ3RWRTNFJHTEtxQ3BmZ3JGRDJoYy9HQm9Ka2pyU0wvUVpweDdtNHV2WGNMTUxjTHdLUjFaTUxLTHNCYWtuUTE3bGN5YUFhWVh3elhrdUY4aVNpcERCeVpzQ1BxV2c5L2JleENYMk9jbDVWSDFOazRaZUo2YlNYTWlkUFVQdzl6K2dNODRjdmhHa0FUUzA4Nmc3RlptS0RidVQrZ0NJbzk1VFNoaXh2UXQvcnJlR3ZsbDlHeHZJR0h2Q3M0UFBiWnU0QnpXME5nR0p3dFFQZDZEcjJUNEM3K0N6ckxzajdNL2NJVVA0SDhvUUpra0M4SlJseXF2R1NRYzUvd1pOUzFIdjZHdUZxeW40T1RRQkhtOG16OEVrekpzd2JkbERuemNaN3dVVzZ4aU9jVTdFbmZISExTNSs0QWVqWnhQMEdhUUdhc1kza3J1cGFPUjhmS2NlaGExY245em1vT2ozMW1tNUN0SVZFMGhjQ3k0R0hKWmJRdkx2eWc5d3R6Y2lFdENkQzlEZEdTc0x4a2lIT3ZuSGppcWt6NnNCZUhxQnQ4alhGMlZpSWhHSlQ4NlpORVZpNUtJN3h5NjRBcHBVejlPVmh5WG1MNUJ5VjBOTmxrODN0Vk1NN2RLVVJvUzg5YWtReXVha2ZuaWlub1dCV1BydFdYdUI5UnRJUitmcnNRRlp5ZTJ3WFlGUUxzWWlmYVM1ZDhvSHMySlc5ajl4U3VKY0c4SkI2c3BCTFpiUDMxcWdLSUNLUXB6aDR5Vi9Ua3BFSTJwa0VtNTAwUlZiQTBrdTZCWldhd3VrdUpHeXo1eDFuQ1IxcENacVZuQTNCdWl3ckdYY0wwa0xZSTMwSm1ySHR0SDdyV0pLSm5ReTY2MTluUnN4N29KYmxkZkdaN21Oek5uVC9CVTZCMEx2YWl2V3o5RmQrek9mVnhEaVNKQXdscVNTVG5QalRhc2grZGNIUFV0UnorcHJnemlybmltcEVLMmFTVXlqUEUya1d3Tk9LSEpYTnI4T2IweFY5SFc2R1pKWHhrNDd2WGNMT2xoc0dFek05ZDRrbW5KUEJXZXVJdm92ZTJKUFRjdGd3OUcvME1HRE41VzhSbnRnTjlPMVJRN2hKUVY2czFKWUQyc3VEMWpHYkFsRkxCMTJwR1liYlUwUllCT1Q0WjlpTTNsMFJkeXhGb1R0akd5dXRLellvQnlSQ2xFUElUUWlqVVphV1JIQm1XM084RmI5QmNOQTNXb2oraGZTRzM4OHgwM2FFQ1FqQzJBWDNpU1dkSjRDWWxTNytFbm8wejBMdHBPM28yeXlFZlJFQzNjaUJCS052NFoxbnl1QXJvV2k1OHltSVo3YVVQalBaK1lVcTl5SXVpa2MyV0VtMEYvVWpOWUQ5aXI1dzA2cVdDRDd3eUdHaEphR1ZBNk1LTUtVSkRDSVJZdjJCMUtIcWxmODhTM3k5NE5QZzcyaGFtbzJQaGV6d3ZFYUVzQTZLQ3dXU0grQjVOT0lFaGpkbnlIczdkTVJzOVcvNk5KNGIwL1R1QVBnRzBiNXNLQ0lYRFpMcFUvb1JGWDVTTWxqejZ2dmVxeS8wYVRPa3lOOEZoUUJTekZheHZoZmtSVnBZbklCTi9lMDJCc0F0dDBhWUdXaEwvTnFpSXlHcFcrYnhrenRZd2lrUXRpb3FKckRSQzJmaXp3WnBWeDhKRjZDanhzZ25xSWtkTlRscE1xQUtqN3g0dXpGbVQ5bEFTeVB4TlAzcnZuSWZldTM3TlFMTGtVQ1NMZlhlcklpK0NSQnEwa1VkbkRBcmxOQlJXVXlLNklGallqSGlmYlRPVzg0VXo0UnVIOHlQcThIZVFZNThDKzlGSlRkY2NDTHZZMXNSQ3FUV1JKVXk4WnBYQmdiQ2k0QUplcDJLRlJGYjQ0NkRZZS9OZmhXVURxOHlpdmZSMmRDeVJnOGtpK1l6ZXJTb1lPNEh6TzRGek8wUGFRdERZNnpZSHptMWRnbk4zSCtTd0NJeUkxbGlPb2lTTXd1UXhMVmtwU3ZjVVdGQWxlUkZWQnY2b1ZBYUczS01sNDJVT2hBS1dVZmdSeGJHcjhoSEhzVWtPN09JUDRiV0hZdFFXU1hxTm5ZVzdkTkVzK1NzVVFNcjRrOWhGQmNWU2tZRVhpOVcvQlVlZ1c4bEs0ZWhZOGtPZTlLbXljS1loOTNBWTUrOEYra2gyQ20yNVIrVXJkcmh4YnV0dE9MZTFLYWdSYWpQR2ZJZ0NaQzFrNnp6SVpsWmRCanJwZWtxVUVuNEQydVpyQjkxYlcyWTZ6Smx1SHFRUWtLRitKRElRY3V5REk2Myt5dkZEVmlxdkhaUldUVEdNR2dlN1dNckltZGtxRm5XckpXSnhpUnpxRW1FcUZnbnRLYWxGSDYvTW9tdjVMeGdRSllPbmlTVW9CT1A4ZldGeXJ3b1N5VDArbkwvbld6aTNyVHNFUmZFMzVQUTNRZTVjRHNrMEM1SXBHekxMZ3hTelZTSXF6bFJEbSt0QjI1ei9nV1gyTmxoeS93bVduTGZaL1NoUjQyaUFSSXEwamsyQzgvQ2tOUjhaa0ZBaFVXdG50cFlpTEdZT1NnWURJWFBSR1l4MHVPbm9XR3hoU1I5MmZRYWR0K3hoUUxxVi9FSXhYUVRnZnFEdkc4QUYxZXQ1UmU0amt4YkF1ZTMvZ1hOYi94TE1ZMWpHdmdHU3VRZ0JmVFlrRTlYU2xxdnpFdUZIQ0FoVmxVbHo1L0ZnaEFVaE9XSjlmM2dndzBaYVlhR3ZvMkxpdjM2a1FBU1UrVENuT0pndnNRb3RZU1pMQllTVjNWZXBuT3NTbXB4ejZGNmxvYkk3dXRiVzhLUnZvL0FGNU9CM0NzMmd5ZjhHY1A2YlFyNGxYcjhCOUJHVWUyU2MyLzR5enQxdEp3Y3ZkNjFEb0RVUGdaWXNTT1o1WXFYeEZ2RmdLTkZXcWRBU1drc3BodHhHcTQ4Rm9TNFhOUkR6QndBU0txSDg4U01Id3FDWVVzcGdtdUZHRzVYYkMvbU5oZ05oRTBNbGR5VTNJRmw1Q1oxck0yRmRFNFB1OWUzQk9sZlFkTzBNQWJud1RlREN0NEVMMytHdkRNcDl3c2RzcDZDZ0lXQmRMdm5PWnNHdnk0WmtYU3Fxd0dzakEya3ZoZHkrRUhMYkFsYldJVC9EZ2VRS0lCa2ZIa2pGQk90MUFjS2dtTk1YdzV6aFptcFBvUy96SldGQVdKMkt6Sk1DaGlacDlYdm9YbDJJdnR2aTBMM3hVakFMUDA5K1lZZndHL2R6SUtRZGtZQ2Myd2EvWVNGOFRabnc2WElnZDRoQVlSZ2dja2NaWkdzSjVQWVN5TlpGUUp2b2FHRW02K29Cc1ZkTTlLTXE5b3ZYYnRMMTJpbG8xZXlBWHZNUTlKb05hTldNSHhxL1ozbVlQV1pyNGt1R0FxSGlYNCtZS0diS1Z0UFhEblJ0S0VQM3hoejBiaHJnWlJIS084aDBVWFIxbjlBU2xlbWlyOG5QOUc2RlQxY0liMk1tZk0xNWtEdlhpK3F4c2hDbW1LeVFENUhiU2lGWlM5bHJhTlZ5T0IrU3FncDlrNjdVWk1GeFpGekVWdG9QUFFKbkU3OFRhRW53cXJ0TFlOVDZZTlMrQkhONmNDMEU1b3hWYU12MW9xMlFoNWlzd2t0QXFId3VLclk5NjFWUEx5c2lVaW5GaTY0TjY5RzllUWw2Ti90NElxZ2tqUGVvL01uOXdzbmZCN243TG5pYjh1R3B6NEJQTndkeTl5WVJaZDBtZ0t5TENFU3lsQ0ZnS1lOa1dTUWNldUZRSUdaYXl4RjlaU3duU2VmRlZHb0FiRTBhQ21SSWxNV2NPbXdIeDk5MTFXSDRHbU1MQW1jVFpGWllIQXhFSklmSmwyRktEWVo0YU10YWpiWThMM3Z5S0JlaHlXQkExb1NBOUd3VVlOWXBRQ2c2Q3FCN3cwNzAzTDRWUFZ2a3dXVVZNbDg3ZzJHdjFIazdQSFc1Y05kbXdOY3lYK1FkU2hPRStuZFRwaTc4VnNkU1NHMkxJWmxMSVpsTCtIby9BeUtxQ3F6Y2s2T3F6VkZkVHFuTlpmTG1QOU1NU1BvMFNDMUpFY0plMFVDbjd0VTZlUE5qVngySXZ6SCt4OEZLYjdBN01VbTFEa0oybG1vL00vODExR3VWdHhiVzJUNitEbEltVnYwVUlMZUt0UTh4Y2F6Y1RrS1R1RkZHejIwUG9XZnp3NE9MajZKVzFiY0RnZmIxY05Wa3dWMHpFNzZ6OC9tNmloTHlCclVqM0g4c2gyd3RROEJVZ29CcEVTUlRNQThKOVl4UlUxK3dCaWVFOVJublFiYk1nbXpKZ1d6S2dtVElnS1JQUjBDWE5HSmlhSytnYnNhYmoxd0xJTDhLcllYUUNtRUtVMTlRTFl2WldOcE9rQ2FhcGpOZlJiMW9WckRrcjRlMXdNOXVuUG1UVlNvL3NsNEEyUmlhd0M2Vjl2UnVlZ3c5bTM4ZExJc0lNSkoxSFZ4bk11R3FuZ252MlNKVkZ3ckIyQlNtSGFLNXJtc0ZaT3NTQk15bENCZzVETmtzK29ZWkVDWGt6USsxcTdLZU1nSkZYeGRBSmpIbk16Q1NNUWVTSVJPQjFqVDRtN1hEcjRtd3hybWIzN3pxUUh3TjhkOExBcUdWUXVyZE5aUDZpaTBEYkUxRTJVNUFYMmMzb3oyYnRlU2dyV0FqckhQOExETm1heUdpKzRSTlBHbUowZ0NuK0JWRmUyNER1amY5SHIyYmp5Z2xFY202QnE0ekdYQlZ6NEMzbVdDb3paUWFodHFacjRUVXZoUUJZd2tDNWtVSUdCY2dZQ2dXUU5UK1k3WUtCTlhlUk1NZWhjTlVlaUZwbXd2WlhNQ3pmMk1PQWkwWjhEZW53TmVRTUtTNEdOeXFRRjN4aDc1MjAxVUZncnE0V0g5enZEKzRsczZBWkVHbTBqdnIzUldxcnRoYjNzbitaMWh5V1RzTTJ1WnNRUHRjUDQrOHFFZUxubG9xbDlERXE0VWdxYUd3dFpCajZOM2NLclVUakpsd1ZhZkQyenhYTEZJSlVhQ3Fnd1hoTytTTzVmQWJGOEZ2WEFqSnZCQisvWHo0VzRzZ1d4VHRVUHlIcXUyVlZheXBERVJDTmE4RmtLMExJTGZOaDl4R2RiRTVrSTE1a0ZxekVUaWJEbCtERnQ2YTJHRDVuVy9vQ1RWZ3YxYytyaWpxYWc5L1Uvenp3UVVxZllyb2JxZVlYYXlEc0MwRHFqMGQ1Qmd0dVM1WVoyOWlVQ3lGVzJDZEYyQWxpeTdLMUZlS2lhTUpwSWtrR0lxSTd3c3RDbGlXZDduT3pKQUpocWN4WDdTVmJsS0IyQkFXSUNpT2ZBVUQ0ZE1YSTJCYUFNbThBUDdXZWZDM3pCVkFDb1ZXVUpndWVvcUQyeUJZM1UxazlaUkVsb3E4WlFIN3JHU2VnNEErRi82ekdmQTFKc05UbXhEZTZNQzJ2TEhkVlh0anZuWFZnYUEyK1VaL2M0STFxQ1hVNFc3SlpiYVZyMy9RVGN3ZnZCYkNrcXc4R2RiOFIxakRnM1h1WGJET2w5ak5VaStXVXUxbDZ5TEMyWGNSaUxYQnlFdXlyb0NuTmgzdU0ybndOT1RJSWUxUmFSV0RxcXpES3pCV0ltQXBoVTlYeExRQ1ZqSlo4K0U3T3dlK3N3UkJhQWN6VitRM0NrT2F3VlkxUzBUejNSTEluVXNoZDVBczVtQ3NwRzN6RU5EUFpsVUJYMk1hdkxXSlF5TXNaV2RWZWZTdnJqb1FCcVZsMnVTQUxyR0xteTNTa2t6bTZGZ2t4VXJ2ZzByYjRvYVZiUVlGZTZrcEd1MUZXMkV0bGtJOXY4dkRFa2NCbzJzTjVJNFY4TlFSakZSNDZqSWdkMUlTS1V4YUVJS2lGWXJQRUU2OGZTbDh1cmxNSkJPWm5rVUlHT2JDMTF3QVg3Tmlub1F6RDNiY1U0V0I3cU5FMVkrOERISUhpWURTdmhTeXRaVDl6b0JoRHZ5NkhQZ2FaOEpibHdSMzlmVEJFVllRU0V6dE5RSENvRFFuVGd1MEpwNW40Uy9yT3FGNFhheUZzSVVwUmMxTHhOTldLT3d6YzVwNldPWk9SMXZSamlBVUNvbFpOWFpWS0hObk5hK1Y4TlJud24wbWhXbUkzTDVNYUVDNHJGYUJFSHRKT3BmQjExb0ViMU1CdkdjTG1hbWgveXZRT2dmZWhqeDRHL05VdmlOUFdkVVVKUis2cGxLbEFBcFpEWVJndEMrRlpLWGtrZ0RQZzErWEIxOXpKcngxeVhDZmpnOXRDRlVjK3Y0WTlPK0xlZS85SnpaQ216NTlyL2N2OWdtV2k0Z2U4Yk02VFdLZ05mRXRsaUNhWmtLbVdKMnB1OUlrcmFoN21iREZ0QzB0R0U2K2c3YWkrV2lmdnoya0tXSUNXTkdSVDZ5M0tSdnVNOGx3MTZSQ3NvaW1hemJ4YWxrVkJvSSt2d3lTcFFUdStqem1iN2gyMERVVXczYzJueVdUbnZwY1ZXWStLd1NFd25QMlVKV0pyRjZCRVFha2JRbTdwb0JoUHZ3dEJmQTFaY0ZUbHdwM2RmeFEvOEYzNTQ0Y2FWMjZoTC92dTR3aDdmc1hMK0pMNWo5N1VtdTZ2ZW52QzdSRm15cnBFLzlLQ1NMclBySGtpNVZCbFphd3A1L1dIeGFFUS9Fd2Y5SmVkRCtzeFRLSElpRFMwNjNMZy90TUVnTkNUeUV2VXE0WVJwVEs4YkpnYWQvVGxBOTNmUzY4emZsQkdQVC9VNjNMWFpNSlQ2M29BMkJKSUFtdG1RZ2dyQTk1Y1JpUUVBelpxZ0JaaklDeEdQN1dBdmdhcytHcFM0TzdPbUhRbmtOeHFBQ1gvVEdEdWpyVld2QVpPaWVrOHk5SUNIK3ZDL2c3T3AydHd1UlpVVFdLRTluUUVwOGh0U2IramZrVHRvVk5GQlhWV3NJV2hFUXpkZEN2RkNnaDV0T0RvU3lDWkN3UU1KS1lPZUNtUXpSZGkwa0tpZko5c1NyWldRYkpYTXl5ZUZkdE5sdWtVbUJRTHVGcnlvWHI5RXk0ejh4VWxVbHloUjhoczZ0b3lKTDMwUTVLTWduSVF2aGFDcGsyazFsMW5VNkE0OWdVbGJsU0FkbDcwOUxoZ054Z3Vlald0RnhBN3U3NmkwTVcrU3ZiL1F0M3QzaTN2ZERvelh3L0lPejNHYlN6V2RPRE1ZWG5IeXpxVWtFaExlRmQ2VUpUYU4xaHRocEtCYXhGRHhNVTJUd1hucHBrZUdxMDhEWm1DRjhrUGorc0NOTW8vSmFuSVJmTzZneTRHMFNUZHpBYkw0U3ZLUnV1MCtsd241NGhJa0RLbTBRYkUydUFFRDZFUlZZamFZY0FRaVgvbGpud051YkFVeU9BVVBkN3VMa3FqOEhsL2RGcmg1MUV3NTg4U1RYZC9nWEhUZTRoV3JKSDUwbjVmWjNuKzA4ZmQvenpyaXA4Y2JUcjY1SkI2MlJRU0ZPc0NoU1Y2VkxXc3BWeWQ1dFNwaUNuUDljTXk1eGZlZXRUNEtuUndGdWZLaEl6dGtWQjJaQVR6QWxDb255Zi94d2xiczdUTTVoSUpwcGd5cktWOEphaXF5eTRxdExnT2syN2hMTkZsVUZzVG1YWHJPeitYVHcwc2dyWERwUFFFRmI2NTBDY0p4T29RVzZvdVdJYU1vN2xZeEZIOVhsTU90cnVYN1d2MWJNNjNMblRNWG0vT09GODhKSER6dWNmZXQwNTZvUUdyWm95U2E5MXk3Uy8wS3cwUGN3UGc2STQrWG1oZ3A3WTZPbHJtdUVoR0o1YUxjdUV1YWtSVzl2WUpBMG5QSk5tVHJzNWo4RncxMllHdFNLVWErU3paVjFYVlFvVHlVQjFOeUdzc3F1RXY4VjhBV3NrMzhHQWxNR3ZYd0NmcmdDZWhteTRhOUxnUEJrUCs1R0pYRHNvdWxJQnNaV1BXejdzNU8wR1BrdG5UTDNTNVA3Rzg3WHV4UEQzZjFycDFqeTB6L0hhTjE0WnFOcnlPOXYyMFVOSlhDMFpOTDVRdjlZc3NZTkt0ZWVjT2RuNVFqTjRRVS9TWjhGVGs4akUzNUwxVG1qanA1STF6MWNCVW92eUhtL1FvOUlLQWZHM0NoT2taT0VpbWdvWUNFZ3lYS2VURVdoUmp2TklGd2NYa0MrWnc3cFRaTXJNMVRBaWFJZmZTRURvSVNpQXB5NEw3dXBVT0k3SFllRHd4S0hhUVVEMlJoZU1PSG12TlRvTDZBVFBYNXh5UGhEcFNOVnZ2bUpiZnNjTEE4YlZ2N1M5dGZDLysvOTc2TWs2dzBIUjNDN3B0Ukx2MmFKaVk2NllISkU4S2hOcDVhdDBzcGtjb2dhZUd0cS9sNjVFWVZKb083VUNaeGhoeGIrNUNCanpHUXlxQW9kQUtKRVUrWXNjeU9aTXVLcVM0RHFsaGE5QlZLaU5xZUk2Y3lCYjhua1IwYm9RY3Z2aXdUREN0Y05RQXA5dUhyeE5lV3hOaG42djQraDBmcUpEbUhhUXZMZm42N0VqVHR4dUM3N3dUSlhuSHgrcmREMzk3d2VjcXlQOXpDM1A5bjlyMGVQOXJySW5iUU4wa09TOXJ3eU1HeFVVdldhYnBOZktmTDBrVlJRYktWZWhTUloyblgxTklXTVNnK0Z0MElvaVpiNDZrUlF3U1FvamlQTGVIQmJwRUJCZmM3WnlCSWZZZXAyaktucG13SDFHQzFjVlBRQ2FVSXNQTFNOUXNkUkM2eDZGa051S1JZbGt5VkJITHJURDE3b0F2ck9GOERia3dIVm1CcHduTmJCWFRJMm9IZjM3b2dkR2MvSkUxR05ISFZuL2Z0RDV1eC91ZGJ6MnpUL1lJK1llSlUvMGIxbjNuTTI2N1VWNzAzZGZjL3h4MTBIbkxidXErdDdYMmNPZy9VRndWZEdjek12ejdBZ05NaWY4NlpYMEdmRFV4TFBDbkd6TUdIeThSdkJrQnpXZ0NDSTB3VlhEelpWc3lvMEFna3dTWDRyMTFtdmhPcFVBVjFVQ1B6U05IWndXS3BiS2x0bTh6RzZoNm01cEJFZE9wbXFoMEk3WkxLZHhWYWZDZVN3QkE0Y25SOVNPeS90aTZxSkdPeDdhNTN6Z082ODZqdTE0eVY2NTRmbjNJdTVnM2Y2L3J0Z0hYbk04c2VzTjUvODhlZHo5c3hkcVBBL3UwZnZtVnVrdmo3ZzNYTkpyZnh5RUltNmNMMkpsczBueTFjWERXeHVIUUV2SzRBTm9XQ2lxVEd5RVZieWdLTy9OWXY2RDF0WjVsVmtOUXIxM0pRMytzMlN5NHBoSU9pci8wSUtiV09NeFpVSXkwOG9nTFViTlk5VmhWaUpocTR4OGNjdHZXQUJmU3hHODVEc2FjbGxPNHp5WkJQdlJXRnFNR3FvZEJLUThabFFINWdSUHpibm5SZHR2TnYvRzNuYkxMMjFuRmovK3QwR2JOME1ETnp4MXdwdnhRbzE3eCtzdDN1MFVwVFdjODgybUFHRmtLSnJIUS9zUXhlbHg1aFQ0bXpWczJkUGZLSHpOb0NPYTFIQUVJUFVlRkVXVTcxdXlJUmxvZlVZRklRaENORTJ6VG5aYTZVeUN1eW9XcmxQVDRhbU5WMjB6U0dhUkY3V2RTcVk4bHFBR2pITWhHWXNRTUJYRGJ5aG1WV1BTREtvWVUwM01VNXNKWnhVNWM5S09xVlN6aWdpa2YxLzBsVzJUdnZORlc4eWFaL3ZyeXA3c3Q4MTdyUC9OSmM5RU5sL0txTFFndXZrQ0Vyb0dNS2dOS0NKR1JOMGd0V3ArSFhiUUpVZ3phT21UYjRWVFRwSkxENE9qQnFSQVVvdjZ2WEFJNllOQUtLMDgvUDhtSUxSMk1SMVNpN0xuUXdQSmtNcWg2TE1SME05Q1FKK1BnSDRPL0MxeldMNUJuUzFVS2ZZMnpSS21LaDNPRTFyWUs2ZGo0STBKa2JWalgzVDNCK3FDWC82TVkyTFJ6L3IxaTUreTlhOTl0dDl5NXd2MkQzVnk1eUFvdTZNK0s3VW03ZzJkaGFKbHpRR3NVV0xZWS82R0hQVW5RQWxSZnkvNGN3cUVDQ0NVWmplakZvR3ppV3hsajRRNlJwVG1hZFpKMHBLS2dHNEd5MW1vdE83WHpXSzFOVi96TEE2aUlRZnV1a3k0emxBaW1BVEhzVGdNSEpvY1dUTW91dG9YUGVwZFcwUEcwcWZmL2VxYVoyMnZiWG5CWnI3M1pYdk45MTUzL09EN3c1eUZlOFZRcW1LL0tPa1RUd2MzdmhpR09ZMlVUV0w0WVpocFlhQVVVYitYR2daaEtBajFwaHRQOVZTNFQwNkJ1Mm9LMytwTk82S29yYWRadzliSktRVDNOYzNrM1pCTldmRFdaekFmNWE2bDBEb056bE5hT0k3R1krRHdGUFR2SHorY2R2emwzU1BSSCs0MGJUcmRjK2ZMdHUwUDduWWMrTkYreHl1UFZqai84eGZIWFhNb2cvL1FVQm8xWDVWYUUvbHhGVVBBaE1OUkFLa2dSUlJsQjdBU3dvWk0weEFRcW0xcHZzWjR0cGhFNHF1WkZqcnRoN2FvTlNUQ1Y1L0VjaFZ2ZlJxcjVIcHFVOWxTQUNXV3pwTmEyRWt6amt4Qi80SElqcHc3OCtncjJtZzY0dmluUGU2RW54eHgvTnZUSjl6LytkczZ6ME92NlFKYkRyWjZ0TS9yZEovL1VGQmFraWRMclpyejZqTVpnMklNZ3pNRWtCcVVXbnRVNXJLeGNWNEFBQWFQU1VSQlZNMUUwVkthMkxhZE1naEM2RVFHRGRNSUR5MjVucGdNOTRrcGJKOGdtUzkrT2tNc2MvaXNlbkFtRWU0ekdyaFBhK0NxU29UelJEd2NSNmZCZm5neWJNUDREUkhxVmw3MUhWVDBaeDVlcUhGay9ySFpld2VkNG5taXc3K3NzY3RYWUh6VE9aVks5UjhjaWpZMTBLcnBEM1pCUm9JakFBMkZsQUpRVHhpYmZMNHRtekp3SnFZczhTcTZESTNwUEp3bE1Qb2tsYStnVFpzSlhFdE9USWJyK0dUV3VrT3RQSHhybW1qcG9hYUZxdWx3bllxRjY4UjBPSTlOZzZOaUNnWU9UWWljQUFhanFwZysyNzRici9pZzVpc0NjN0xORmR2VTU4MHlYUFRPNkhvWFU5OStHeC9xenovNGRackZnZFlFUDV1a2NEQVJBVkd1a015ZmZscWxaSlBPVzVGNFFwY0xtWElJMHl6K2IxTU9aR00ySkdNbUpDTkZUbW1RV2xNZzZjaXBKL0NUR0pyaTJjUlRIeTR0TEJFWWQvVzB3Y2ZCbnVEdnFVOGZIUWtHSGFqOGtaNjdhTEZZdnREWE43cXkvUHVOZ0M3aEg0SlBMTzFzVmVCRUFrUkE5R1NHS0J1bkpyMXNQdkZtS25kUVIyR0JTT2hJcUVZMlcrUVR1WkFNMlpEMDFHbEkwVk1xNnpaa3UyZkZpVDdzZE5Hams5aGFCc0Z4blZMdGdqcXFuR0w5TVlSeExZYi9iTUl2bFNobk1Kd1FJQ2FVdU9uSkJNMFVUejd0SGN6bkFGajlpY29kSlBPRVVKZGhJU1RqYkVpR1BFaDY2alRNUkVDWHpyc05Helh3MXNXSmprTXlSMkw3UU1WRU9Dc25oczVSVkIwcFBxS1pLbzk1MDdabjNLQU5wUDhuQitpZzRxYjRWMm5QTnpNbDZ0T3hnNEFJQ2dGSlkvVXZpWUF3MDFRQTJWVEl5aHl5WlQ1a1N6RjdsY3doQ1pqbUlXQXNaRW1ldjRVYTJ5aU1UWWV2a2JwWktQeU5EWjdEcXdDaEpWZ0dnbHA1Umdtai84Qkh1T1AyV2cvb2NqL3ZhNGc5eU1KT2RrbzJQeWxiQVJTZ0hLRWxtVFUzQjZqem5Fd1FQZlZHNnJPZE93Z0FoekFmQVNOSkVSY0RiUUF0aEw4bG55Vjd0TG5IMjVER1duYzgxZkZ3VTlhdW5GRWl6Qk16VWVKY2Q5ditUeEVNOWFsQjN2cllTbmFPUEVrakNRZmtiNktFVFF1L2pyTG9tUWkwWnZIU2htRTJBa2JTZ0RBQUNnUURkUzBLYVozSHl4L05lZkExNWNCYk40UG5GdFdKY0ZYRmNwTVZORkVoR0pHcXQ2cG82dUluRW9ZeVVEWCtLOTY2NmFkWVRsQ3ZDSzk1K1JvVDRXdE9odjlzR3Z5NlRHNStXbWNqMEZvWW5QeUFNdmxNNXZFK1h0SExTOEk2R1pzTDRHMmszcXhNMFppZ1pVdXZ3VzZSUTZNeVVSekd2dkZEVmxzL2NRTkhOSC9uUFROdHI1SVRjSW5sRHJpZXIvU3hrZ2JiYlp2SEd0VUdUVDRERUFaQmlQZnNYSGlicVV0a0ZqejFXYXdlNVRxVkJNZUpPRGdxcC9MODR2MU4xS2NIaHJvWTZhbWU5Z0xsQTdRcktTaTFDZkRXYWVGdFNJVzNrZXBNMmZDZHpXT05CcEVBaENBVWNta2lHSFBncVovRkd1YW9KY2g1TWhtT1k3d21OZHg2eHFjYWhqS283T0E2TmVYbmxLQXhPVTB5RGU0emNhd3p4Vk9mQ20vRERIZ2JzbGdWbGpyYWZUVDVUQW9IUTFCQU5CYkFVejhiN3BwY3VLb3o0RHlWQnNkeExld1ZjYkFSa1AzdkMrVDg1UU5maTQvNk5BL25xU24zT2s5TTlpbUZRTmRKQWhRSGQ3V0dOMkxYcE1OVFIxRlRMcnlOK1dFQUJJU0dBcmhKNmd2Z3FwMEZWM1UybkZVejREaWVBdnRSRFFhT3hNSjJhQXBzSXhRSysvZkZYT2pmYy9PUVByWlA1WEJWVENweUhwdjBOanZRaFpVNXByRGFFbHNiUDAzYkFGTGhQc1A3c2R5MU9mRFV6WUs3bnZwN1p6TUk3cnA4dUd2ejRLcWhyc1lzT0t0bXduRThGZmFqV2d4VUpIQWdCMGNBTWdaajZIQlZUcDVtUHpLaGhSSTNKcFZVNnBqR2VxR2NKeFBaWXBHVE5jSE5nTE42Smx5bmFXTW9MU1JsdzhrMEloT09VelBoT0pIT1lSeExncjJTYThmQUllb1dtWVQrU0NackRNYnc0KzNkNDc4eWNQRG0zN1BRVklqOThDVFlLNmZDWGhITEZvenN4eExoT0o3RXpGRlFqdEc2ZHdyc0pNZVNtWm15VnlaaTRBZzF0azJEN2VEa3lQNWpYMHpmKy9aVGpZMm9xTXNIb3RmMUh4ajNMdVVLWE1iRDlnYjlxWWpKN0drZk9CeUxnWW80Wm81bzRra1R1Q1J5RTBYdkhSYWFRVEFPVEJqY3FTNDA0MVB2d0svMHIyMWUzaGQ5ZU5BazdpYzRsR0ZUZisxazVxZzVvR2tZT0RTZHZ4NmN5aDA0dmYvR1JMSGlOeVR2R0l1bVBzaWdqcGJMNWRFN0xwZEgvM1dvTXg3SDFyckpGSkVHMkE1TUZFSmZVN3RuUkJEb0w0OXVlZmRnOUtqL3Z1SFlpREJvdTlqbDh1aG5McGZIQk40M3NSdEJMcGRIdi95SitidTJINGR4dVh4ODF1WHltS09YOThYSVZ3UmpYNHp4OHQ2WVJkZjcrait4NDI4SGJrcnZMNDk1cW45ZmpHVjRPTkc5L2Z0aWZqdXc1NmE1MS90NlAxWER0dS9HR05JYzI3NmJsdldYMzdTRTJqb2R1OGRQdk43WE5UYkd4dGdZRzJOamJJeU5zVEUyb3E3QitQK0QvbEEyTlNsY3pBQUFBQUJKUlU1RXJrSmdnZz09XFxcIi8+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA5MzQgMjIwXFxcIj48ZyBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNMi42IDIwOC43VjEwMi4yaDMwLjh2MTA2LjV6TTEyNiAxOTguNGMtNyA4LjUtMTcgMTMuMy0zMC40IDEzLjMtMjEuNCAwLTM4LjctMTMuMy0zOC43LTMzLjkgMC0yMC4zIDE3LjMtMzAuNCA0MS41LTMxLjcgMTguNi0xLjEgMjQuNS0zLjEgMjQuNS05LjQgMC02LjEtNS43LTEwLjMtMTUuNy0xMC4zLTEyLjIgMC0xNy41IDYuMS0xOC4xIDEyLjdINTkuMmMxLjUtMjMuNCAxOS0zOS41IDQ4LjMtMzkuNSAyOC42IDAgNDcgMTUuNSA0NyA0NC42djY1LjFoLTI1LjZsLTIuOS0xMC45em0tMzgtMjEuOWMwIDYuMSA1LjUgOS44IDE0LjIgOS44IDExLjggMCAyMS4yLTYuNiAyMS4yLTE5Ljl2LTMuOXMtNS43IDIuNi0xNy41IDMuM2MtMTIuOC43LTE3LjkgNC44LTE3LjkgMTAuN3ptMTM1IDMzLjJjLTIzLjQgMC0zNi45LTEzLjUtMzYuOS0zNy4xdi00MS43aC0xNy45di0yOC42aDE3LjlWODYuNWwzMS0yNi4ydjQxLjlIMjQ0djI4LjZoLTI2Ljl2MzcuNGMwIDEwLjMgNi44IDEyLjcgMTMuMSAxMi43IDcuMiAwIDEzLjEtMi44IDEzLjEtMi44djI4LjJzLTguMyAzLjQtMjAuMyAzLjR6TTAgNzAuMmMwLTEwIDcuOS0xOC4xIDE3LjktMTguMSAxMCAwIDE4LjEgOC4xIDE4LjEgMTguMSAwIDkuOC04LjEgMTcuOS0xOC4xIDE3LjktMTAgMC0xNy45LTgtMTcuOS0xNy45em0yNjYuOSAxMzguNVYxMDIuMmgzMC44djEwNi41elxcXCIvPjxnIHRyYW5zZm9ybT1cXFwidHJhbnNsYXRlKDIyNylcXFwiPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMTAuOSA3MC41YzAtNC45LS43LTkuNy0xLjktMTQuMy0xLjMtNC43LTMuMS05LjItNS41LTEzLjMtMi40LTQuMi01LjQtOC04LjgtMTEuNC0zLjQtMy40LTcuMi02LjMtMTEuNC04LjgtNC4xLTIuNC04LjYtNC4zLTEzLjMtNS41LTQuNi0xLjItOS4zLTEuOS0xNC4zLTEuOS00LjkgMC05LjcuNy0xNC4zIDEuOS00LjcgMS4zLTkuMiAzLjEtMTMuMyA1LjUtNC4yIDIuNC04IDUuNC0xMS40IDguOC0zLjQgMy40LTYuNCA3LjItOC44IDExLjQtMi40IDQuMS00LjMgOC42LTUuNSAxMy4zbDcuOSAyLjFjMS4xLTQgMi43LTcuOCA0LjctMTEuMyAyLjEtMy42IDQuNi02LjggNy41LTkuNyAyLjktMi45IDYuMi01LjQgOS43LTcuNSAzLjUtMiA3LjMtMy42IDExLjMtNC43IDMuOS0xIDcuOS0xLjYgMTIuMS0xLjYgNC4yIDAgOC4zLjYgMTIuMiAxLjYgNCAxLjEgNy44IDIuNyAxMS4zIDQuNyAzLjYgMi4xIDYuOCA0LjYgOS43IDcuNSAyLjkgMi45IDUuNCA2LjIgNy41IDkuNyAyIDMuNSAzLjYgNy4zIDQuNyAxMS4zIDEgMy45IDEuNiA4IDEuNiAxMi4yIDAgNC4yLS42IDguMy0xLjYgMTIuMS0xLjEgNC0yLjcgNy44LTQuNyAxMS4zbDcuMSA0LjFjMi40LTQuMSA0LjMtOC42IDUuNS0xMy4zIDEuMy00LjUgMi05LjIgMi0xNC4yWlxcXCIvPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMjUuMiA3MC41YzAtNi4yLS44LTEyLjMtMi40LTE4LTEuNi01LjktMy45LTExLjYtNy0xNi44LTMuMS01LjMtNi44LTEwLjEtMTEuMS0xNC40LTQuMy00LjMtOS4xLTgtMTQuNC0xMS4xLTUuMi0zLTEwLjgtNS40LTE2LjgtNi45QzY3LjggMS44IDYxLjcuOSA1NS41LjljLTYuMiAwLTEyLjIuOC0xOCAyLjMtNS45IDEuNi0xMS42IDMuOS0xNi44IDYuOS01LjMgMy0xMC4xIDYuOC0xNC40IDExbDQuMyA0LjNjMy45LTMuOSA4LjMtNy4zIDEzLjEtMTAuMSA0LjctMi43IDkuOS00LjkgMTUuMy02LjMgNS4yLTEuNCAxMC43LTIuMSAxNi40LTIuMSA1LjcgMCAxMS4yLjggMTYuNCAyLjIgNS40IDEuNCAxMC41IDMuNiAxNS4zIDYuM2E2NC40NjYgNjQuNDY2IDAgMCAxIDIzLjIgMjMuMmMyLjcgNC43IDQuOSA5LjkgNi4zIDE1LjMgMS40IDUuMiAyLjIgMTAuNyAyLjIgMTYuNCAwIDUuNy0uNyAxMS4xLTIuMSAxNi40LTEuNCA1LjQtMy42IDEwLjYtNi4zIDE1LjMtMi44IDQuOC02LjIgOS4yLTEwLjEgMTMuMWw0LjMgNC4zYzQuMy00LjMgOC05LjEgMTEuMS0xNC40IDMtNS4yIDUuNC0xMC44IDYuOS0xNi44IDEuOC01LjQgMi42LTExLjUgMi42LTE3LjdaXFxcIi8+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTkzLjIgNjAuNGMtLjktMy4zLTIuMi02LjUtMy45LTkuNC0xLjctMi45LTMuOC01LjctNi4yLTgtMi40LTIuNC01LjEtNC41LTgtNi4yLTIuOS0xLjctNi0zLTkuNC0zLjktMy4yLS45LTYuNi0xLjMtMTAtMS4zLTMuNSAwLTYuOC41LTEwIDEuMy0zLjMuOS02LjUgMi4yLTkuNCAzLjktMi45IDEuNy01LjcgMy44LTguMSA2LjItMi40IDIuNC00LjUgNS4xLTYuMiA4LTEuNyAyLjktMyA2LTMuOSA5LjQtLjkgMy4yLTEuMyA2LjYtMS4zIDEwLjFzLjUgNi44IDEuMyAxMGMuOSAzLjMgMi4yIDYuNSAzLjkgOS40bDEwLjYtNi4xYy0xLjItMi0yLjEtNC4xLTIuNy02LjQtLjYtMi4yLS45LTQuNS0uOS02LjkgMC0yLjQuMy00LjcuOS02LjkuNi0yLjMgMS41LTQuNCAyLjctNi40IDEuMi0yIDIuNi0zLjkgNC4yLTUuNXMzLjUtMy4xIDUuNS00LjIgNC4xLTIgNi40LTIuN2MyLjItLjYgNC41LS45IDYuOS0uOSAyLjQgMCA0LjcuMyA2LjkuOSAyLjMuNiA0LjQgMS41IDYuNCAyLjcgMiAxLjIgMy45IDIuNiA1LjUgNC4yczMuMSAzLjUgNC4yIDUuNWMxLjIgMiAyLjEgNC4xIDIuNyA2LjQuNiAyLjIuOSA0LjUuOSA2LjloMTIuM2MwLTMuNS0uNC02LjktMS4zLTEwLjFaXFxcIi8+PGcgZmlsbD1cXFwiI0E3RUJFRlxcXCI+PHBhdGggZD1cXFwiTTgxLjQgNjMuNmMtLjYtMi4zLTEuNS00LjQtMi43LTYuNC0xLjItMi0yLjYtMy45LTQuMi01LjVsLTUuOCA1LjhjMS4xIDEuMSAyLjEgMi40IDIuOSAzLjguOCAxLjQgMS40IDIuOSAxLjggNC40LjQgMS41LjYgMy4xLjYgNC44IDAgMS43LS4yIDMuMi0uNiA0LjgtLjQgMS42LTEgMy4xLTEuOCA0LjQtLjggMS40LTEuOCAyLjctMi45IDMuOC0xLjEgMS4xLTIuNCAyLjEtMy44IDIuOS0xLjQuOC0yLjkgMS40LTQuNCAxLjgtMS41LjQtMy4xLjYtNC44LjYtMS43IDAtMy4yLS4yLTQuOC0uNi0xLjYtLjQtMy4xLTEtNC40LTEuOGwtNC4xIDcuMWMyIDEuMiA0LjEgMi4xIDYuNCAyLjcgMi4yLjYgNC41LjkgNi45LjkgMi40IDAgNC43LS4zIDYuOS0uOSAyLjMtLjYgNC40LTEuNSA2LjQtMi43IDItMS4yIDMuOS0yLjYgNS41LTQuMnMzLjEtMy41IDQuMi01LjVjMS4yLTIgMi4xLTQuMSAyLjctNi40LjYtMi4yLjktNC41LjktNi45IDAtMi40LS4zLTQuNy0uOS02LjlaXFxcIi8+PHBhdGggZD1cXFwiTTk2LjQgNDdjLTIuMS0zLjYtNC42LTYuOC03LjUtOS43LTIuOS0yLjktNi4yLTUuNC05LjctNy41LTMuNS0yLTcuMy0zLjYtMTEuMy00LjctMy45LTEtOC0xLjYtMTIuMi0xLjYtNC4yIDAtOC4zLjYtMTIuMiAxLjYtNCAxLjEtNy44IDIuNy0xMS4zIDQuNy0zLjYgMi4xLTYuOCA0LjYtOS43IDcuNS0yLjkgMi45LTUuNCA2LjItNy41IDkuNy0yIDMuNS0zLjYgNy4zLTQuNyAxMS4zLTEgMy45LTEuNiA4LTEuNiAxMi4yaDguMmMwLTMuNS41LTYuOSAxLjMtMTAuMS45LTMuMyAyLjItNi41IDMuOS05LjQgMS43LTIuOSAzLjgtNS43IDYuMi04LjEgMi40LTIuNCA1LjEtNC41IDguMS02LjIgMi45LTEuNyA2LjEtMyA5LjQtMy45IDMuMi0uOSA2LjYtMS4zIDEwLjEtMS4zczYuOS41IDEwLjEgMS4zYzMuMy45IDYuNSAyLjIgOS40IDMuOSAyLjkgMS43IDUuNyAzLjggOC4xIDYuMiAyLjQgMi40IDQuNSA1LjEgNi4yIDguMSAxLjcgMi45IDMgNi4xIDMuOSA5LjRsNy45LTIuMWMtMS41LTQtMy4xLTcuOC01LjEtMTEuM1pcXFwiLz48cGF0aCBkPVxcXCJNMTE2LjkgNTQuMWMtMS40LTUuNC0zLjYtMTAuNS02LjMtMTUuM2E2NC40NjYgNjQuNDY2IDAgMCAwLTIzLjItMjMuMmMtNC43LTIuNy05LjktNC45LTE1LjMtNi4zLTUuMi0xLjQtMTAuNy0yLjEtMTYuNC0yLjEtNS43IDAtMTEuMi44LTE2LjQgMi4xLTUuNCAxLjQtMTAuNSAzLjYtMTUuMyA2LjNBNjQuNDY2IDY0LjQ2NiAwIDAgMCAuOCAzOC44bDcuMSA0LjFjMi40LTQuMiA1LjQtOCA4LjgtMTEuNCAzLjQtMy40IDcuMy02LjMgMTEuNC04LjggNC4xLTIuNCA4LjYtNC4zIDEzLjMtNS41IDQuNi0xLjIgOS4zLTEuOSAxNC4zLTEuOXM5LjcuNyAxNC4zIDEuOWM0LjcgMS4zIDkuMiAzLjEgMTMuMyA1LjUgNC4yIDIuNCA4IDUuNCAxMS40IDguOCAzLjQgMy40IDYuMyA3LjMgOC44IDExLjQgMi40IDQuMSA0LjMgOC42IDUuNSAxMy4zIDEuMiA0LjYgMS45IDkuMyAxLjkgMTQuMyAwIDQuOS0uNyA5LjctMS45IDE0LjNsNy45IDIuMWMxLjQtNS4yIDIuMS0xMC43IDIuMS0xNi40LjEtNS42LS43LTExLjEtMi4xLTE2LjRaXFxcIi8+PC9nPjxjaXJjbGUgY3g9XFxcIjU1LjdcXFwiIGN5PVxcXCI3MC41XFxcIiByPVxcXCIxOC40XFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjxwYXRoIGQ9XFxcIk0zNTUuMyAxNDMuNHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDM4OHYtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTUgMi42LTUgNi43em0zNC4xIDEzLjVjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNEgzOTl2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTM1LjktMTEuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjIuNy4xIDIgLjEgMnptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjF6bTM2LjEtNC42djcuNnMtMi0yLjEtNS4xLTIuMWMtMi4zIDAtNSAxLjMtNSA1LjJ2MTQuNGgtNy43di0yNi43aDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0xMiAxMS44djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41aC03Ljd2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS00LjkgMi42LTQuOSA2Ljd6bTM5LjMgMTAuN2MtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS40LTUuNWMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMi4yLTQuNCAxLjItNC40IDIuN3ptMzMuNiA4LjNjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTggNi4yLTE0IDE0LjItMTQgOC4xIDAgMTQuMiA2IDE0LjIgMTRzLTYuMiAxNC0xNC4yIDE0Yy04LjEgMC0xNC4yLTYtMTQuMi0xNHptNy45IDBjMCAzLjkgMi43IDYuOCA2LjMgNi44IDMuNyAwIDYuMy0yLjggNi4zLTYuOCAwLTMuOS0yLjctNi44LTYuMy02LjgtMy42LjEtNi4zIDIuOS02LjMgNi44em0zMy42IDB2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVoLTcuN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOSAyLjYtNC45IDYuN3ptMzkuNCAxMC43Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS41YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0yMyA4LjJ2LTM4LjJoNy43djM4LjJ6bTQ5LjYtMzguMiAxNC45IDM4LjJINzIybC0zLjEtNy41aC0xNC44bC0zIDcuNWgtOC40bDE0LjktMzguMmg3Ljl6bS0zLjkgMTEtNC43IDEyLjVoOS41bC00LjgtMTIuNXptMjIuNS03LjFjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTguNCA2LjEtMTQgMTMuNS0xNCAzLjEgMCA1LjYgMS4xIDcgMi4zdi0xMy4yaDcuN3YzOC4yaC03LjZ2LTEuOWMtMS40IDEuNC00LjEgMi41LTcuMSAyLjUtNy41LjEtMTMuNS01LjMtMTMuNS0xMy45em0yMC41IDBjMC00LjEtMi43LTctNi4zLTctMy42IDAtNi4zIDIuOC02LjMgNyAwIDQuMSAyLjcgNyA2LjMgNyAzLjYgMCA2LjMtMi44IDYuMy03em0tNDE1LjggNDAuNmgzMHY3LjVoLTExdjMwLjdoLTguMVYxNzhoLTExdi03LjR6bTQ4LjkgMTN2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40SDM4NFYxODJoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy4zLjEgNC44IDIgNC44IDJ6bTIwLjggMjIuNGMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMS4yLTQuNCAxLjItNC40IDIuN3ptMzAuOC01LjJ2MTMuNEg0MzZ2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg0NTN2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNi0uMS00LjggMi42LTQuOCA2Ljd6bTM4IDUuN2MwLS44LS41LTEuNS0yLjYtMS45bC00LS44Yy02LjEtMS4yLTguNi00LjEtOC42LTguMSAwLTQuNyAzLjUtOC45IDEwLjktOC45czEwLjcgNC4xIDExLjMgOC44aC03LjRjLS40LTEuNS0xLjctMi4zLTQtMi4zLTIuMiAwLTMuNC44LTMuNCAxLjkgMCAuOC43IDEuMyAyLjcgMS43bDQgLjhjNS43IDEuMSA4LjYgMy44IDguNiA4LjQgMCA1LjItMy44IDguOC0xMS4yIDguOC03LjYgMC0xMS43LTMuNi0xMi41LTkuMmg3LjhjLjQgMS45IDEuOCAyLjggNC43IDIuOCAyLjUtLjEgMy43LS44IDMuNy0yem00MC43LTUuN2MwIDguNC02LjEgMTQtMTMuNSAxNC0zLjEgMC01LjYtMS4xLTctMi4zdjEyLjNoLTcuN3YtMzcuM2g3LjZ2MS45YzEuNC0xLjQgNC4xLTIuNiA3LjEtMi42IDcuNSAwIDEzLjUgNS40IDEzLjUgMTR6bS0yMC41IDBjMCA0LjEgMi43IDcgNi4zIDcgMy42IDAgNi4zLTIuOCA2LjMtNyAwLTQuMS0yLjctNy02LjMtNy0zLjYgMC02LjMgMi45LTYuMyA3em00MS44IDEwLjZjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjEuMi00LjQgMS4yLTQuNCAyLjd6bTQwLjgtMTd2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40aC03LjdWMTgyaDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0yOS43IDEzLjloLTE4LjljLjQgMi43IDIuNyA0LjggNiA0LjggMi4yIDAgMy41LS45IDQuNC0yLjNoOC4zYy0xLjggNS44LTUuOSA5LjQtMTIuNiA5LjQtNy43IDAtMTQtNS40LTE0LTEzLjggMC04LjEgNS43LTE0LjIgMTMuNS0xNC4yIDguOCAwIDEzLjIgNi45IDEzLjIgMTQuMS4xLjcuMSAyIC4xIDJ6bS0xMy4xLTkuM2MtMi45IDAtNC45IDEuOC01LjQgNC4xaDEwLjRjLS4yLTIuMy0yLjItNC4xLTUtNC4xem0yNi4xIDcuMnYxMy40SDYxMHYtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDYyN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOCAyLjYtNC44IDYuN3ptNDAuNyAzaDguNWMtMS4zIDYuNS02LjIgMTEtMTMuNCAxMS04LjEgMC0xNC4xLTUuOS0xNC4xLTE0IDAtOCA2LTE0IDE0LjEtMTQgNyAwIDExLjkgNC40IDEyLjkgMTAuN0g2NThjLS42LTItMi4zLTMuNC00LjctMy40LTMuMyAwLTUuOSAyLjgtNS45IDYuNyAwIDMuOSAyLjYgNi43IDYgNi43IDIuNiAwIDQuNS0xLjQgNS4xLTMuN3ptMTggMjEuMmMtMy41IDAtNS4yLS45LTUuMi0uOXYtNy4xczEuNi44IDMuMy44YzEuNyAwIDQtLjcgNC42LTMuN0w2NjguOCAxODJoOC42bDYuMSAxNi42IDYuMi0xNi42aDguM2wtMTEgMjcuMmMtMi45IDcuMS01LjIgMTAuNC0xMC41IDEwLjR6bTQwLjktMTAuOHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRINzMzdi0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINzUwdi0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNC45IDIuNi00LjkgNi43em0yMy0yMC45YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0yNS42LjFjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTMwLjgtMi44Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjQtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0zMy42IDguM2MtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMzguNy0yNi43LTkuNSAyNi43aC04bC05LjUtMjYuN2g4LjJsNS4yIDE2LjUgNS4yLTE2LjV6bTI4LjIgMTUuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjEuNy4xIDIgLjEgMlptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjFaXFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSAyNFxcXCI+PHBhdGggZD1cXFwiTTIwLjgzNCAxMS4yM1Y4Ljk1N2E4LjMzMyA4LjMzMyAwIDAgMC0xNi42NjcgMHYyLjI3MWEzLjEyNSAzLjEyNSAwIDAgMC0yLjA4MyAyLjkzOHYyLjA4M2EzLjEyNSAzLjEyNSAwIDAgMCAzLjEyNCAzLjEyNWgzLjEyNmExLjA0MSAxLjA0MSAwIDAgMCAxLjA0MS0xLjA0MnYtNi4yNWExLjA0MiAxLjA0MiAwIDAgMC0xLjA0MS0xLjA0MUg2LjI1VjguOTU4YTYuMjUgNi4yNSAwIDEgMSAxMi41IDB2Mi4wODRoLTIuMDgzYTEuMDQxIDEuMDQxIDAgMCAwLTEuMDQyIDEuMDQxdjYuMjVhMS4wNDEgMS4wNDEgMCAwIDAgMS4wNDIgMS4wNDJoMy4xMjVhMy4xMjUgMy4xMjUgMCAwIDAgMy4xMjUtMy4xMjV2LTIuMDgzYTMuMTI1IDMuMTI1IDAgMCAwLTIuMDg0LTIuOTM4Wk03LjI5MiAxMy4xMjR2NC4xNjdINS4yMDlhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDItMS4wNDJ2LTIuMDgzYTEuMDQyIDEuMDQyIDAgMCAxIDEuMDQyLTEuMDQyaDIuMDgzWm0xMy41NDIgMy4xMjVhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDIgMS4wNDJoLTIuMDg0di00LjE2N2gyLjA4NGExLjA0MiAxLjA0MiAwIDAgMSAxLjA0MSAxLjA0MnYyLjA4M1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTguMzg0IDIxLjYxNkE0LjYzIDQuNjMgMCAwIDEgMTUuMTIgMjNsLS4wMS0xLjE1OGEzLjQ3MiAzLjQ3MiAwIDAgMCAzLjQ0NS0zLjVsMS4xNTctLjAwOWE0LjYzIDQuNjMgMCAwIDEtMS4zMyAzLjI4NFpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjA0MlxcXCIvPjxyZWN0IHg9XFxcIjExLjI1XFxcIiB5PVxcXCIyMC40MTZcXFwiIHdpZHRoPVxcXCI0LjY4OFxcXCIgaGVpZ2h0PVxcXCIzLjEyNVxcXCIgcng9XFxcIjEuNTYzXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIj48cGF0aCBkPVxcXCJNNy4zODUgNC42NjdhMS4xIDEuMSAwIDAgMC0uNTE4LjEyOGMtLjE2LjA4NS0uMjk1LjIwOS0uMzkuMzYybC0uMDA0LjAwNi0uMDAzLjAwN2EuMzQ2LjM0NiAwIDAgMS0uMDkzLjEwNS40MzguNDM4IDAgMCAxLS40NTUuMDMzLjM3LjM3IDAgMCAxLS4xMTMtLjA5My4zMTMuMzEzIDAgMCAxLS4wNi0uMTE3LjI4Ny4yODcgMCAwIDEtLjAwNS0uMTI0bC0uMzI5LS4wNTguMzI5LjA1OGEuMzA1LjMwNSAwIDAgMSAuMDQ5LS4xMmwuMDA0LS4wMDUuMDA0LS4wMDZhMS43NSAxLjc1IDAgMCAxIC42NjMtLjYxNSAxLjkyIDEuOTIgMCAwIDEgMi4wOTIuMTc2Yy4zMjQuMjU2LjUzNy42MDUuNjA3Ljk4NS4wNy4zNzgtLjAwNS43Ny0uMjE1IDEuMTA1LS4yMTEuMzM3LS41NDYuNi0uOTUyLjczN2wtLjIyNy4wNzZ2LjM2YS4zMS4zMSAwIDAgMS0uMTA0LjIyNy40MTQuNDE0IDAgMCAxLS4yOC4xMDZjLS4xMSAwLS4yMS0uMDQtLjI4MS0uMTA2QS4zMS4zMSAwIDAgMSA3IDcuNjY3VjdhLjMxLjMxIDAgMCAxIC4xMDQtLjIyNy40MTQuNDE0IDAgMCAxIC4yOC0uMTA2Yy4yNzIgMCAuNTM2LS4xLjczNS0uMjg1YS45NzcuOTc3IDAgMCAwIC4zMTctLjcxNS45NzcuOTc3IDAgMCAwLS4zMTctLjcxNiAxLjA4IDEuMDggMCAwIDAtLjczNC0uMjg0Wm0wIDBWNXYtLjMzM1ptLS4zNjkgNC45MDYuMDEyLS4wMjEuMDA5LS4wMjNhLjE2LjE2IDAgMCAxIC4wMi0uMDM3LjczNi43MzYgMCAwIDEgLjA1LS4wNi4zOTEuMzkxIDAgMCAxIC4xMjItLjA3NC40MzMuNDMzIDAgMCAxIC4zMTEgMGwuMTItLjMxLS4xMi4zMWEuMzkuMzkgMCAwIDEgLjEyNy4wNzljLjAzNC4wMzIuMDYuMDcuMDc3LjEwOGEuMy4zIDAgMCAxIC4wMjUuMTJ2LjAxNWEuMjkuMjkgMCAwIDEtLjAyLjExOC4yNjMuMjYzIDAgMCAxLS4wNjcuMDk4bC4yMjcuMjQ0LS4yMjctLjI0NGEuMzIxLjMyMSAwIDAgMS0uMTE2LjA2OGwtLjAxLjAwMy0uMDEuMDA1YS4zODYuMzg2IDAgMCAxLS4yOTMgMGwtLjAxLS4wMDUtLjAxLS4wMDNhLjMyMS4zMjEgMCAwIDEtLjExNy0uMDY4bC0uMjI3LjI0NC4yMjctLjI0NGEuMjYzLjI2MyAwIDAgMS0uMDY3LS4wOTdsLS4wMDYtLjAxNS0uMDA3LS4wMTVhLjE5My4xOTMgMCAwIDEtLjAyMi0uMDkzVjkuNjRhLjUxLjUxIDAgMCAxLS4wMDItLjA1Ny4wNzguMDc4IDAgMCAxIC4wMDQtLjAxWk0zLjU3MiAxLjc0QTcuMjQ1IDcuMjQ1IDAgMCAxIDcuMzg1LjY2N2MuOTAyIDAgMS43OTUuMTY1IDIuNjI3LjQ4NS44MzMuMzIgMS41ODguNzg5IDIuMjIyIDEuMzc4YTYuMzIzIDYuMzIzIDAgMCAxIDEuNDggMi4wNTVjLjM0MS43NjYuNTE3IDEuNTg3LjUxNyAyLjQxNWE2IDYgMCAwIDEtMS4xNDcgMy41MSA2Ljc2IDYuNzYgMCAwIDEtMy4wNzIgMi4zMzggNy4zNjIgNy4zNjIgMCAwIDEtMy45NjguMzYzIDcuMDMzIDcuMDMzIDAgMCAxLTMuNTEtMS43NDFBNi4yMDEgNi4yMDEgMCAwIDEgLjY3IDguMjNhNS44OTIgNS44OTIgMCAwIDEgLjM4Ny0zLjY0NUE2LjQ2NyA2LjQ2NyAwIDAgMSAzLjU3MiAxLjc0Wm0uNDQ2IDkuOTc4YTYuMzkgNi4zOSAwIDAgMCAzLjM2Ny45NDljMS42MDQgMCAzLjE0Ni0uNTkyIDQuMjg4LTEuNjUyQzEyLjgxNSA5Ljk1NSAxMy40NiA4LjUxMSAxMy40NiA3YTUuNCA1LjQgMCAwIDAtMS4wMy0zLjE1OCA2LjAwNyA2LjAwNyAwIDAgMC0yLjcyOS0yLjA4IDYuNDg4IDYuNDg4IDAgMCAwLTMuNDk4LS4zMiA2LjIyNiA2LjIyNiAwIDAgMC0zLjEwOCAxLjU0MiA1LjU2IDUuNTYgMCAwIDAtMS42NyAyLjkwNiA1LjMxNCA1LjMxNCAwIDAgMCAuMzQ4IDMuMjg3IDUuNzczIDUuNzczIDAgMCAwIDIuMjQ0IDIuNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiM2ODc5N0VcXFwiIHN0cm9rZT1cXFwiIzY4Nzk3RVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtMTIuMzMgMTQuNjAyLS41OS4xMzJhOC4wNzUgOC4wNzUgMCAwIDEtMS43NC4xODNsMi4zMy0uMzE1Wm0wIDAtLjQyNy0uNDI5bS40MjcuNDMtLjQyNy0uNDNtMCAwLTEuOS0xLjkwOC0uMDgzLS4wODRtMS45ODMgMS45OTJMOS45MiAxMi4xODFtMCAwLS4xMTgtLjAxMm0uMTE4LjAxMi0uMTE4LS4wMTJtMCAwYTIuMjIgMi4yMiAwIDAgMS0xLjk3LTEuOTcxbC0uMDEzLS4xMTdtMS45ODMgMi4wODhMNy44MiAxMC4wOG0wIDAtLjA4My0uMDgzbS4wODMuMDgzLS4wODMtLjA4M20wIDBMNC45MDMgNy4xNTZsLS4yMTktLjIxOW0zLjA1MiAzLjA2MS0zLjA1Mi0zLjA2bTAgMC0uMjM0LjJtLjIzNC0uMi0uMjM0LjJtMCAwYTguNTQ0IDguNTQ0IDAgMCAwLTIuMDc2IDIuNjcuNDMyLjQzMiAwIDAgMCAwIC4zODUgOC41MTggOC41MTggMCAwIDAgMy4xMTkgMy40MzRNNC40NSA3LjEzOWwxLjA0MyA2LjQ4OE0xOC44MDggMTBDMTcuMzg0IDYuNTI5IDEzLjk3OCA0LjA4MyAxMCA0LjA4M2E5LjU0NSA5LjU0NSAwIDAgMC0zLjMyMi41OTZsLjc4Mi43NzdBOC45NzMgOC45NzMgMCAwIDEgMTAgNS4wODNMMTguODA4IDEwWm0wIDBhOS40OTIgOS40OTIgMCAwIDEtMi45NDMgMy44ODNsLS43MDQtLjcwOWE4LjU1MSA4LjU1MSAwIDAgMCAyLjQ2Ni0yLjk4MS40MzIuNDMyIDAgMCAwIDAtLjM4NUE4LjUxNyA4LjUxNyAwIDAgMCAxMCA1LjA4M0wxOC44MDggMTBaTTUuNDkzIDEzLjYyN0E4LjUxOCA4LjUxOCAwIDAgMCAxMCAxNC45MTdsLTQuNTA3LTEuMjlabTcuNzg0IDEuOTA0LS4xNDUtLjE0NS0uMTk1LjA2NGE5LjMxMiA5LjMxMiAwIDAgMS0yLjkzNy40NjdjLTMuOTc4IDAtNy4zODQtMi40NDYtOC44MDctNS45MTdhOS40NjQgOS40NjQgMCAwIDEgMi41MTktMy41MzNsLjI2Ny0uMjM1LS4yNTEtLjI1MS0xLjI5Mi0xLjI5MmEuNDE4LjQxOCAwIDEgMSAuNTkxLS41OWwxMi44NzUgMTIuODc0YS40MTguNDE4IDAgMCAxLS41OTEuNTkxbC0yLjAzNC0yLjAzM1pNMTAgNy44MzNBMi4xNjcgMi4xNjcgMCAwIDEgMTIuMTY3IDEwYzAgLjA1NS0uMDAyLjExLS4wMDYuMTY0TDkuODM2IDcuODRjLjA1NC0uMDA0LjEwOS0uMDA2LjE2NC0uMDA2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTEuMzMzIDIuMmMtMi42LTEuNDY3LTUuOC0xLTcuOTMzIDFWMmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMi4wNjcgMS42IDIuMDY3IDJ2M2MwIC40LjI2Ni42NjYuNjY2LjY2NmgzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2cy0uMjY3LS42NjctLjY2Ny0uNjY3aC0xLjZjMS0xLjA2NyAyLjQtMS42NjcgMy44NjctMS42NjcgMi45MzMgMCA1LjMzMyAyLjQgNS4zMzMgNS4zMzQgMCAyLjkzMy0yLjQgNS4zMzMtNS4zMzMgNS4zMzMtMi45MzMgMC01LjMzMy0yLjQtNS4zMzMtNS4zMzMgMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzEuMzMzIDcuNiAxLjMzMyA4YzAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAyLjQgMCA0LjYtMS4yNjYgNS44LTMuMzMzIDEuOC0zLjIuNzMzLTcuMjY3LTIuNDY3LTkuMTMzWk04IDUuMzMzYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3djJjMCAuNC4yNjcuNjY2LjY2Ny42NjZoMS4zMzNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZzLS4yNjctLjY2Ny0uNjY3LS42NjdoLS42NjZWNmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOTAgMTkwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgY3g9XFxcIjk1XFxcIiBjeT1cXFwiOTVcXFwiIHI9XFxcIjg1XFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PGNpcmNsZSBjeD1cXFwiOTVcXFwiIGN5PVxcXCI5NVxcXCIgcj1cXFwiOTVcXFwiIGZpbGw9XFxcIiNDREY4RkFcXFwiLz48cGF0aCBkPVxcXCJNNTEuMTcyIDc5LjYzNmMwLTEuODQ4IDAtMi43NzIuMjQyLTMuNjIyYTYuMzMxIDYuMzMxIDAgMCAxIC45ODEtMi4wMDdjLjUyMy0uNzEzIDEuMjUyLTEuMjggMi43MS0yLjQxNmwzNC4xMTYtMjYuNTM3Yy45MjgtLjcyMyAxLjM5Mi0xLjA4NCAxLjktMS4zNDlhNi4zMjkgNi4zMjkgMCAwIDEgMi4wNDctLjY1NWMuNTY3LS4wOCAxLjE1NS0uMDU2IDIuMzMtLjAwOCAxLjAyNy4wNDIgMS41NC4wNjMgMi4wMzMuMTYzLjYyMi4xMjYgMS4yMi4zNDQgMS43NzcuNjQ4LjQ0Mi4yNDEuODQ4LjU1NSAxLjY2MSAxLjE4NGwzNC42ODggMjYuODI0YzEuNDY3IDEuMTM0IDIuMiAxLjcwMiAyLjcyNiAyLjQxNi40NDYuNjA2Ljc4IDEuMjg4Ljk4NyAyLjAxMi4yNDQuODUyLjI0NCAxLjc4LjI0NCAzLjYzNHY1Mi4xMDFjMCAxLjgwMiAwIDIuNzA0LS4zNTYgMy4zOWEzLjE2NyAzLjE2NyAwIDAgMS0xLjM1IDEuMzQ5Yy0uNjg2LjM1Ny0xLjU4Ny4zNTctMy4zOS4zNTdINjAuMzQ1Yy0zLjI0NSAwLTQuODY3IDAtNi4xMDItLjY0MmE1LjY5NyA1LjY5NyAwIDAgMS0yLjQzLTIuNDI5Yy0uNjQxLTEuMjM1LS42NDEtMi44NTctLjY0MS02LjEwMlY3OS42MzZaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTU5Ljc3NSA3MS45MjRjMS4yODYgMCAxLjg5LjAwMiAyLjQ2LjExNC43NC4xNDYgMS40NDYuNDI5IDIuMDgxLjgzNC40OS4zMTMuOTI4LjczIDEuODU4IDEuNjE4bDI2Ljc2IDI1LjU2MmE1LjM2IDUuMzYgMCAwIDEgLjAxMiA3LjczOGwtMjYuMTM0IDI1LjExM2MtMS44MzIgMS43Ni0yLjY5MyAyLjU4MS0zLjc2NiAzLjAxMy0xLjA3Mi40MzEtMi4yNjIuNDM2LTQuODAyLjQzNmgtLjc0MmMtMS41IDAtMi41OTYgMC0zLjQzNC0uMTEzLS44MjktLjExMS0xLjM2MS0uMzI4LTEuNzYtLjcyNy0uNC0uNC0uNjE2LS45MzItLjcyOC0xLjc2MS0uMTEyLS44MzgtLjExMy0xLjkzMy0uMTEzLTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjIuMDU2LTMuMTYuMDU1LS43OTQuMTY0LTEuMzYzLjM3Mi0xLjg1M2E1LjQwMiA1LjQwMiAwIDAgMSAyLjg2Ny0yLjg2N2MuNDktLjIwOCAxLjA1OC0uMzE3IDEuODUzLS4zNzIuNzk4LS4wNTYgMS44MDItLjA1NiAzLjE2LS4wNTZaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi42XFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxwYXRoIGQ9XFxcIk0xMzEuNzggNzEuOTI0Yy0xLjI4NiAwLTEuODkuMDAyLTIuNDYxLjExNGE2LjA0MSA2LjA0MSAwIDAgMC0yLjA4MS44MzRjLS40OS4zMTMtLjkyNy43My0xLjg1NyAxLjYxOGwtMjYuNzYgMjUuNTYyYTUuMzYgNS4zNiAwIDAgMC0uMDEyIDcuNzM4bDI2LjEzNCAyNS4xMTNjMS44MzIgMS43NiAyLjY5MyAyLjU4MSAzLjc2NSAzLjAxMyAxLjA3My40MzEgMi4yNjMuNDM2IDQuODAzLjQzNmguNzQyYzEuNSAwIDIuNTk2IDAgMy40MzMtLjExMy44My0uMTExIDEuMzYyLS4zMjggMS43NjEtLjcyNy40LS40LjYxNi0uOTMyLjcyNy0xLjc2MS4xMTMtLjgzOC4xMTQtMS45MzMuMTE0LTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjItLjA1Ni0zLjE2LS4wNTUtLjc5NC0uMTY1LTEuMzYzLS4zNzItMS44NTNhNS40MDIgNS40MDIgMCAwIDAtMi44NjgtMi44NjdjLS40ODktLjIwOC0xLjA1OC0uMzE3LTEuODUzLS4zNzItLjc5Ny0uMDU2LTEuODAxLS4wNTYtMy4xNTktLjA1NlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19jKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0LjAzOC4wNzMuMDc1LjE0Ny4xMS4yMjIuNTYzIDEuMjAzLjU3IDIuNTg5LjU3IDUuNTQ3IDAgMS40MzEtLjAwMSAyLjQ3Ni0uMTA0IDMuMjc4LS4xMDIuNzk1LS4zIDEuMzA5LS42NjYgMS43MDJhMi43MzUgMi43MzUgMCAwIDEtLjE0My4xNDJjLS4zOTMuMzY2LS45MDcuNTY1LTEuNzAyLjY2Ny0uODAyLjEwMy0xLjg0Ny4xMDQtMy4yNzguMTA0SDU4LjU0MmMtMi4yODYgMC0zLjM1NC0uMDA0LTQuMjA1LS4zYTUuNDAzIDUuNDAzIDAgMCAxLTMuMzI2LTMuMzI3Yy0uMjk2LS44NS0uMy0xLjkxOC0uMy00LjIwNVpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19kKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0bC4yNjItLjEzNy0uMjYyLjEzN2MuMDM4LjA3My4wNzUuMTQ3LjExLjIyMmwuMjY3LS4xMjUtLjI2Ny4xMjVjLjU2MyAxLjIwMy41NyAyLjU4OS41NyA1LjU0NyAwIDEuNDMxLS4wMDEgMi40NzYtLjEwNCAzLjI3OC0uMTAyLjc5NS0uMyAxLjMwOS0uNjY2IDEuNzAyYTMuMjE0IDMuMjE0IDAgMCAxLS4xNDMuMTQzYy0uMzkzLjM2NS0uOTA3LjU2NC0xLjcwMi42NjYtLjgwMi4xMDMtMS44NDcuMTA0LTMuMjc4LjEwNEg1OC41NDJjLTIuMjg2IDAtMy4zNTQtLjAwNC00LjIwNS0uM2E1LjQwMyA1LjQwMyAwIDAgMS0zLjMyNi0zLjMyN2MtLjI5Ni0uODUtLjMtMS45MTgtLjMtNC4yMDVaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2UpXFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxjaXJjbGUgY3g9XFxcIjEzMy43MzNcXFwiIGN5PVxcXCIxMzIuMjEzXFxcIiByPVxcXCIyMS4yMTNcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48bWFzayBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19faVxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2cpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi45XFxcIi8+PHBhdGggZD1cXFwibTE0Ni41NDEgMTIzLjEyMS0uMTczLjE3My4xNzMtLjE3M1ptMCA0LjI0My0uMTczLS4xNzQuMTczLjE3NFptLTQuMjQzLTQuMjQzLS4xNzMtLjE3My4xNzMuMTczWm0tMTIuMTMxIDEyLjEzMS0uMTczLjE3My4xNzMuMTc0LjE3My0uMTc0LS4xNzMtLjE3M1ptLTQuMjgzLTQuMjgzLjE3My0uMTczLS4xNzMuMTczWm0tNC4yNDMgNC4yNDMuMTc0LS4xNzQtLjE3NC4xNzRabTYuMzY0IDYuMzY0LS4xNzMuMTczLjE3My0uMTczWm0zLjQ2LjU2NC0uMDk3LS4yMjUtLjAxMi4wMDYuMTA5LjIxOVptLjkzNC0uNjM0LS4xNzQtLjE3NC4xNzQuMTc0Wm0xMy45NjktMTguMjEyYTIuNzU2IDIuNzU2IDAgMCAxIDAgMy44OTZsLjM0Ni4zNDdhMy4yNDUgMy4yNDUgMCAwIDAgMC00LjU4OWwtLjM0Ni4zNDZabS0zLjg5NyAwYTIuNzU2IDIuNzU2IDAgMCAxIDMuODk3IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ni4zNDZabS0xMi4xMzEgMTIuMTMxIDEyLjEzMS0xMi4xMzEtLjM0Ni0uMzQ2LTEyLjEzMSAxMi4xMzEuMzQ2LjM0NlptLTQuNjI5LTQuMjgzIDQuMjgzIDQuMjgzLjM0Ni0uMzQ2LTQuMjgzLTQuMjgzLS4zNDYuMzQ2Wm0tMy44OTYgMGEyLjc1NSAyLjc1NSAwIDAgMSAzLjg5NiAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDcuMzQ2Wm0wIDMuODk2YTIuNzU1IDIuNzU1IDAgMCAxIDAtMy44OTZsLS4zNDctLjM0NmEzLjI0NSAzLjI0NSAwIDAgMCAwIDQuNTg5bC4zNDctLjM0N1ptNi4zNjQgNi4zNjQtNi4zNjQtNi4zNjQtLjM0Ny4zNDcgNi4zNjQgNi4zNjQuMzQ3LS4zNDdabTMuMTc3LjUxOWEyLjc1NSAyLjc1NSAwIDAgMS0zLjE3Ny0uNTE5bC0uMzQ3LjM0N2EzLjI0NCAzLjI0NCAwIDAgMCAzLjc0Mi42MWwtLjIxOC0uNDM4Wm0uODY5LS41ODlhMi43MzUgMi43MzUgMCAwIDEtLjg1Ny41ODNsLjE5NC40NWEzLjIzNyAzLjIzNyAwIDAgMCAxLjAxLS42ODZsLS4zNDctLjM0N1ptMTQuMTQzLTE0LjE0Mi0xNC4xNDMgMTQuMTQyLjM0Ny4zNDcgMTQuMTQyLTE0LjE0Mi0uMzQ2LS4zNDdaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2gpXFxcIiBtYXNrPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2kpXFxcIi8+PG1hc2sgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2xcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiLz48L21hc2s+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19qKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNzVcXFwiLz48cGF0aCBkPVxcXCJtMTQ2LjU0MSAxMjMuMTIxLS4xNzMuMTczLjE3My0uMTczWm0wIDQuMjQzLS4xNzMtLjE3NC4xNzMuMTc0Wm0tNC4yNDMtNC4yNDMtLjE3My0uMTczLjE3My4xNzNabS0xMi4xMzEgMTIuMTMxLS4xNzMuMTczLjE3My4xNzQuMTczLS4xNzQtLjE3My0uMTczWm0tNC4yODMtNC4yODMuMTczLS4xNzMtLjE3My4xNzNabS00LjI0MyA0LjI0My4xNzQtLjE3NC0uMTc0LjE3NFptNi4zNjQgNi4zNjQtLjE3My4xNzMuMTczLS4xNzNabTMuNDYuNTY0LS4wOTctLjIyNS0uMDEyLjAwNi4xMDkuMjE5Wm0uOTM0LS42MzQtLjE3NC0uMTc0LjE3NC4xNzRabTEzLjk2OS0xOC4yMTJhMi43NTYgMi43NTYgMCAwIDEgMCAzLjg5NmwuMzQ2LjM0N2EzLjI0NSAzLjI0NSAwIDAgMCAwLTQuNTg5bC0uMzQ2LjM0NlptLTMuODk3IDBhMi43NTYgMi43NTYgMCAwIDEgMy44OTcgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ2LjM0NlptLTEyLjEzMSAxMi4xMzEgMTIuMTMxLTEyLjEzMS0uMzQ2LS4zNDYtMTIuMTMxIDEyLjEzMS4zNDYuMzQ2Wm0tNC42MjktNC4yODMgNC4yODMgNC4yODMuMzQ2LS4zNDYtNC4yODMtNC4yODMtLjM0Ni4zNDZabS0zLjg5NiAwYTIuNzU1IDIuNzU1IDAgMCAxIDMuODk2IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ny4zNDZabTAgMy44OTZhMi43NTUgMi43NTUgMCAwIDEgMC0zLjg5NmwtLjM0Ny0uMzQ2YTMuMjQ1IDMuMjQ1IDAgMCAwIDAgNC41ODlsLjM0Ny0uMzQ3Wm02LjM2NCA2LjM2NC02LjM2NC02LjM2NC0uMzQ3LjM0NyA2LjM2NCA2LjM2NC4zNDctLjM0N1ptMy4xNzcuNTE5YTIuNzU1IDIuNzU1IDAgMCAxLTMuMTc3LS41MTlsLS4zNDcuMzQ3YTMuMjQ0IDMuMjQ0IDAgMCAwIDMuNzQyLjYxbC0uMjE4LS40MzhabS44NjktLjU4OWEyLjczNSAyLjczNSAwIDAgMS0uODU3LjU4M2wuMTk0LjQ1YTMuMjM3IDMuMjM3IDAgMCAwIDEuMDEtLjY4NmwtLjM0Ny0uMzQ3Wm0xNC4xNDMtMTQuMTQyLTE0LjE0MyAxNC4xNDIuMzQ3LjM0NyAxNC4xNDItMTQuMTQyLS4zNDYtLjM0N1pcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faylcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjFcXFwiIG1hc2s9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fbClcXFwiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2FcXFwiIHgxPVxcXCI3Ni42ODRcXFwiIHkxPVxcXCI4Ni41NjhcXFwiIHgyPVxcXCIxNDMuNDE3XFxcIiB5Mj1cXFwiMTExLjI4M1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiM3RkMwRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM0MDg4RjRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fYlxcXCIgeDE9XFxcIjkxLjg4OVxcXCIgeTE9XFxcIjY4LjM3OFxcXCIgeDI9XFxcIjM0LjAwOFxcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19jXFxcIiB4MT1cXFwiOTkuNjY1XFxcIiB5MT1cXFwiNjguMzc4XFxcIiB4Mj1cXFwiMTU3LjU0N1xcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19kXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19lXFxcIiB4MT1cXFwiOTUuNFxcXCIgeTE9XFxcIjkzXFxcIiB4Mj1cXFwiOTUuNFxcXCIgeTI9XFxcIjEzNy41OTJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjQTdEMkZEXFxcIiBzdG9wLW9wYWNpdHk9XFxcIi4yNVxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzk3QzhGQ1xcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19mXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19nXFxcIiB4MT1cXFwiMTUwLjM0M1xcXCIgeTE9XFxcIjEyNC4xMjhcXFwiIHgyPVxcXCIxMTcuMzIyXFxcIiB5Mj1cXFwiMTM3LjM5NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19oXFxcIiB4MT1cXFwiMTUwLjg3MVxcXCIgeTE9XFxcIjEyMS4yMjVcXFwiIHgyPVxcXCIxMzQuMDM1XFxcIiB5Mj1cXFwiMTI1Ljg5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2pcXFwiIHgxPVxcXCIxNTAuMzQzXFxcIiB5MT1cXFwiMTI0LjEyOFxcXCIgeDI9XFxcIjExNy4zMjJcXFwiIHkyPVxcXCIxMzcuMzk1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2tcXFwiIHgxPVxcXCIxNTAuODcxXFxcIiB5MT1cXFwiMTIxLjIyNVxcXCIgeDI9XFxcIjEzNC4wMzVcXFwiIHkyPVxcXCIxMjUuODlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTlcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNMTEgNS42NjdWNmgyLjMzM2EuMzMzLjMzMyAwIDAgMSAuMzM0LjMzM3Y5LjMzNEExLjY2NyAxLjY2NyAwIDAgMSAxMiAxNy4zMzNINGExLjY2NyAxLjY2NyAwIDAgMS0xLjY2Ny0xLjY2NlY2LjMzM0EuMzMzLjMzMyAwIDAgMSAyLjY2NyA2SDVWNWEuMzMzLjMzMyAwIDEgMSAuNjY3IDB2MWgyVjVhLjMzMy4zMzMgMCAxIDEgLjY2NiAwdjFoMlY1YzAtLjA4OC4wMzUtLjE3My4wOTgtLjIzNmwtLjIzNi0uMjM1LjIzNi4yMzVBLjMzMy4zMzMgMCAwIDEgMTEgNXYuNjY3Wk0zLjI5MyAxNi4zNzRsLjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g4YTEgMSAwIDAgMCAxLTF2LTloLTJ2MWEuMzMzLjMzMyAwIDEgMS0uNjY3IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY2IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY3IDB2LTFIM3Y5YTEgMSAwIDAgMCAuMjkzLjcwN1ptMi4wNC0zLjcwN2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZINS4zMzNhLjMzMy4zMzMgMCAwIDEtLjIzNS0uMDk3bC0uMjM2LjIzNS4yMzYtLjIzNWEuMzMzLjMzMyAwIDAgMSAwLS40NzJsLS4yMzYtLjIzNi4yMzYuMjM2YS4zMzMuMzMzIDAgMCAxIC4yMzUtLjA5N1ptMS4wOTgtMi41N0EuMzMzLjMzMyAwIDAgMSA2LjY2NyAxMGg0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N2gtNGEuMzMzLjMzMyAwIDAgMS0uMjM2LS41N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIm0xNy41IDMuNjY3LjU4My0uNTg0YS44MDYuODA2IDAgMCAwIDAtMS4xNjYuODA2LjgwNiAwIDAgMC0xLjE2NiAwbC04Ljc1IDguNzVBNC40OCA0LjQ4IDAgMCAwIDUuODMyIDEwYTQuMTI2IDQuMTI2IDAgMCAwLTQuMTY3IDQuMTY3IDQuMTI2IDQuMTI2IDAgMCAwIDQuMTY3IDQuMTY2QTQuMTI2IDQuMTI2IDAgMCAwIDEwIDE0LjE2N2E0LjQ4IDQuNDggMCAwIDAtLjY2Ny0yLjMzNEwxNCA3LjE2N2wxLjc1IDEuNzVhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3TDE1LjE2NiA2bDEuMTY3LTEuMTY3LjU4NC41ODRhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3bC0uNTgzLS41ODNabS0xMS42NjcgMTNjLTEuNDE3IDAtMi41LTEuMDg0LTIuNS0yLjUgMC0xLjQxNyAxLjA4My0yLjUgMi41LTIuNXMyLjUgMS4wODMgMi41IDIuNWMwIDEuNDE2LTEuMDgzIDIuNS0yLjUgMi41WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZD1cXFwiTTQuMzExIDcuNDMgMy43NCA4aDEwLjkyNmExIDEgMCAxIDEgMCAySDMuNzRsLjU3MS41NyA0LjQgNC4zODZhMSAxIDAgMCAxIDAgMS40MmwtLjAwMS4wMDNhMSAxIDAgMCAxLTEuNDIgMGwtLjAwMS0uMDAxTC42MjUgOS43MTRhMSAxIDAgMCAxLS4yMDgtLjMyOEwuNDE1IDkuMzhhMSAxIDAgMCAxIDAtLjc2bC4wMDItLjAwNmExIDEgMCAwIDEgLjIwOC0uMzI4bDYuNjY0LTYuNjY0LS4yMzYtLjIzNS4yMzYuMjM1QTEuMDA1IDEuMDA1IDAgMSAxIDguNzEgMy4wNDRsLTQuNCA0LjM4N1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI2NiA2M1xcXCI+PHBhdGggZD1cXFwiTS44MyA1OC45MVYyOC43aDguNzI1djMwLjIxSC44M1ptMzUuMDE3LTIuOTNjLTEuOTgzIDIuNDE2LTQuODM1IDMuNzc3LTguNjE1IDMuNzc3LTYuMDc2IDAtMTAuOTcxLTMuNzc4LTEwLjk3MS05LjYwMyAwLTUuNzYzIDQuODk4LTguNjEgMTEuNzc3LTguOTg1IDUuMjctLjMxIDYuOTQzLS44NjggNi45NDMtMi42NjMgMC0xLjczNi0xLjYxMS0yLjkxMy00LjQ2My0yLjkxMy0zLjQ3IDAtNC45NiAxLjczNi01LjE0NSAzLjU5NGgtOC40OTRjLjQzNC02LjYyOCA1LjM5Mi0xMS4yMTQgMTMuNzAxLTExLjIxNCA4LjEyMiAwIDEzLjMzIDQuMzk4IDEzLjMzIDEyLjYzN3YxOC40NjNoLTcuMjU0bC0uODA5LTMuMDk0Wm0tMTAuNzg2LTYuMTk1YzAgMS43MzYgMS41NSAyLjc4OCA0LjAzIDIuNzg4IDMuMzQ4IDAgNi4wMTItMS44NTggNi4wMTItNS42MzhWNDUuODJzLTEuNjExLjc0My00Ljk2LjkzYy0zLjY1OC4xODUtNS4wODIgMS4zNjItNS4wODIgMy4wMzVabTM4LjMwNyA5LjQxNmMtNi42MzIgMC0xMC40NzctMy44NC0xMC40NzctMTAuNTMzVjM2LjgzNmgtNS4wODN2LTguMTE3aDUuMDgzdi00LjQ2MWw4LjgwMi03LjQzNFYyOC43Mmg3LjYyNnY4LjExN2gtNy42MjZWNDcuNDNjMCAyLjkxMiAxLjkyMiAzLjU5MyAzLjcyIDMuNTkzYTkuNTM5IDkuNTM5IDAgMCAwIDMuNzIxLS44MDV2Ny45OTJjMCAuMDAyLTIuMzU1Ljk5Mi01Ljc2Ni45OTJaTS4wOCAxOS42MzRjMC0yLjg1IDIuMjMtNS4xNDIgNS4wODItNS4xNDJhNS4xMyA1LjEzIDAgMCAxIDUuMTQ1IDUuMTQyYzAgMi43ODgtMi4yOTMgNS4wOC01LjE0NSA1LjA4YTUuMDYzIDUuMDYzIDAgMCAxLTUuMDgyLTUuMDhaTTc1LjgwOSA1OC45MVYyOC43aDguNzI2djMwLjIxaC04LjcyNlptMjAuMTU0LTM5LjIwMmMwLTEuNC0uMTktMi43Ni0uNTM3LTQuMDUzYTE1LjUxIDE1LjUxIDAgMCAwLTEuNTY5LTMuNzcyIDE1LjY2NSAxNS42NjUgMCAwIDAtMi40ODktMy4yNDEgMTUuNzMyIDE1LjczMiAwIDAgMC03LjAxOC00LjA1IDE1LjY1OCAxNS42NTggMCAwIDAtNC4wNTItLjUzM2gtLjAwNmExNS43NSAxNS43NSAwIDAgMC00LjA0OS41M2MtMS4zNC4zNTctMi42MDUuODg4LTMuNzc3IDEuNTY1QTE1LjY3IDE1LjY3IDAgMCAwIDY5LjIyIDguNjRhMTUuNzcgMTUuNzcgMCAwIDAtMi40OTIgMy4yNDIgMTUuNjQ4IDE1LjY0OCAwIDAgMC0xLjU3MiAzLjc3NGwyLjI0Mi42MDJhMTMuNDI3IDEzLjQyNyAwIDAgMSAzLjQ2Mi01Ljk3OCAxMy40MjYgMTMuNDI2IDAgMCAxIDUuOTg0LTMuNDUgMTMuNDI2IDEzLjQyNiAwIDAgMSAzLjQ0OC0uNDVoLjAwNmMxLjE5NSAwIDIuMzUuMTU4IDMuNDU0LjQ1M2ExMy40MTIgMTMuNDEyIDAgMCAxIDUuOTggMy40NDljLjgxOS44MiAxLjUzMSAxLjc1IDIuMTE5IDIuNzZhMTMuMyAxMy4zIDAgMCAxIDEuNzkzIDYuNjY0di4wMTJhMTMuMzggMTMuMzggMCAwIDEtLjQ1MSAzLjQ0MyAxMy4yMTcgMTMuMjE3IDAgMCAxLTEuMzM0IDMuMjE5bDIuMDEgMS4xNmExNS41MzkgMTUuNTM5IDAgMCAwIDEuNTY2LTMuNzc4IDE1LjcgMTUuNyAwIDAgMCAuNTMtNC4wNDFsLS4wMDItLjAxMlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTAwLjAyMyAxOS43MDhhMTkuNjU1IDE5LjY1NSAwIDAgMC0yLjY0NC05Ljg1NSAxOS44MSAxOS44MSAwIDAgMC03LjIyLTcuMjEzQTE5LjYxMiAxOS42MTIgMCAwIDAgODUuNDAzLjY3IDE5LjgxIDE5LjgxIDAgMCAwIDgwLjI5OCAwaC0uMDA2Yy0xLjc2NSAwLTMuNDczLjIzMy01LjEwMi42NjZhMTkuNTEzIDE5LjUxMyAwIDAgMC00Ljc1OSAxLjk2OSAxOS44MjQgMTkuODI0IDAgMCAwLTQuMDg2IDMuMTM0bDEuMjMxIDEuMjNhMTguMTA2IDE4LjEwNiAwIDAgMSAzLjcyNi0yLjg1NSAxNy44MDMgMTcuODAzIDAgMCAxIDQuMzQtMS43OTMgMTguMDg0IDE4LjA4NCAwIDAgMSA0LjY0OC0uNjA3aC4wMDVhMTcuOTUgMTcuOTUgMCAwIDEgMTIuNzEzIDUuMjYxIDE3LjkzMyAxNy45MzMgMCAwIDEgNS4yNzMgMTIuNzAzdi4wMTFhMTguMDMgMTguMDMgMCAwIDEtLjYwNyA0LjY0MyAxNy42NzUgMTcuNjc1IDAgMCAxLTEuNzk3IDQuMzM3IDE4LjAyMyAxOC4wMjMgMCAwIDEtMi44NTcgMy43MjNsMS4yMzEgMS4yMzFhMTkuNzQzIDE5Ljc0MyAwIDAgMCAzLjEzNi00LjA4NCAxOS42IDE5LjYgMCAwIDAgMS45Ny00Ljc1NmMuNDM0LTEuNjI1LjY2Ni0zLjMzMi42NjYtNS4wOTR2LS4wMVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNOTAuOTQ1IDE2Ljg1NWExMC45NDggMTAuOTQ4IDAgMCAwLTEuMTA0LTIuNjU1IDExLjE1NSAxMS4xNTUgMCAwIDAtMS43NS0yLjI4IDExLjA0OCAxMS4wNDggMCAwIDAtMi4yODItMS43NDdBMTAuOTY0IDEwLjk2NCAwIDAgMCA4MC4zIDguNjk1aC0uMDA2Yy0uOTg3IDAtMS45NC4xMy0yLjg0OS4zNzJhMTAuOTEgMTAuOTEgMCAwIDAtMi42NiAxLjEgMTAuOTk0IDEwLjk5NCAwIDAgMC00LjAzNyA0LjAyNyAxMSAxMSAwIDAgMC0xLjQ4NCA1LjUxdi4wMTJhMTAuOTI0IDEwLjkyNCAwIDAgMCAxLjQ3NiA1LjUwNWwzLjAxMy0xLjczOGE3LjUzNSA3LjUzNSAwIDAgMS0xLjAxLTMuNzd2LS4wMWE3LjU1MyA3LjU1MyAwIDAgMSA3LjU0OC03LjUzM2guMDA2YTcuNTI0IDcuNTI0IDAgMCAxIDMuNzY5IDEuMDEyIDcuNTUgNy41NSAwIDAgMSAzLjUxMyA0LjU3MmMuMTY3LjYyLjI1OCAxLjI3Ni4yNTggMS45NTFoMy40NzljLjAwMy0uOTg0LS4xMjgtMS45NC0uMzcyLTIuODVaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTg3LjU4NSAxNy43NjVhNy41NDIgNy41NDIgMCAwIDAtMS45NTUtMy4zOGwtMS42NCAxLjYzOWE1LjI2NCA1LjI2NCAwIDAgMSAxLjM1NCAyLjM0MyA1LjE4NCA1LjE4NCAwIDAgMSAwIDIuNzA1IDUuMjM5IDUuMjM5IDAgMCAxLTMuNjk4IDMuNjk1IDUuMTk1IDUuMTk1IDAgMCAxLTIuNzA3IDAgNS4yOTYgNS4yOTYgMCAwIDEtMS4yNi0uNTIxbC0xLjE2IDIuMDA4YTcuNTI4IDcuNTI4IDAgMCAwIDMuNzc0IDEuMDFjLjY3NyAwIDEuMzMtLjA5MSAxLjk1NC0uMjU2YTcuNTUzIDcuNTUzIDAgMCAwIDQuNTg0LTMuNTE3IDcuNTQ0IDcuNTQ0IDAgMCAwIDEuMDEzLTMuNzcxIDcuNSA3LjUgMCAwIDAtLjI1OS0xLjk1NVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTEuODUzIDEzLjA0NmExMy40MzUgMTMuNDM1IDAgMCAwLTIuMTItMi43NjUgMTMuMzQzIDEzLjM0MyAwIDAgMC0yLjc2Ni0yLjExOCAxMy4yODcgMTMuMjg3IDAgMCAwLTYuNjc1LTEuNzljLTEuMTk3IDAtMi4zNTIuMTU5LTMuNDU2LjQ1NC0xLjE0MS4zMDMtMi4yMi43NTctMy4yMTggMS4zMzZhMTMuNDM2IDEzLjQzNiAwIDAgMC0yLjc2NyAyLjExOCAxMy4zMzQgMTMuMzM0IDAgMCAwLTIuMTIgMi43NjUgMTMuMjcyIDEzLjI3MiAwIDAgMC0xLjc5IDYuNjdoMi4zMmMwLS45ODYuMTMxLTEuOTQyLjM3NS0yLjg1MmExMS4wODggMTEuMDg4IDAgMCAxIDIuODU1LTQuOTQgMTEuMDAyIDExLjAwMiAwIDAgMSAyLjI4NC0xLjc1IDExLjAzIDExLjAzIDAgMCAxIDIuNjYtMS4xMDQgMTEuMDIgMTEuMDIgMCAwIDEgMi44NTQtLjM3NGMuOTg4IDAgMS45NDQuMTMgMi44NTUuMzc0YTExLjA5OSAxMS4wOTkgMCAwIDEgNC45NDMgMi44NTMgMTAuOTkgMTAuOTkgMCAwIDEgMS43NTEgMi4yODNjLjQ3Ny44MjYuODUyIDEuNzE2IDEuMTA0IDIuNjU4bDIuMjQyLS42MDJhMTMuMTk0IDEzLjE5NCAwIDAgMC0xLjMzLTMuMjE2WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05Ny42NzQgMTUuMDYzYTE3Ljc5MSAxNy43OTEgMCAwIDAtMS44LTQuMzM2IDE4LjA0MyAxOC4wNDMgMCAwIDAtNi41ODYtNi41ODMgMTcuOTMgMTcuOTMgMCAwIDAtOC45OTYtMi40MDhjLTEuNjEyIDAtMy4xNzIuMjEzLTQuNjU3LjYxYTE3LjgxNyAxNy44MTcgMCAwIDAtNC4zMzkgMS43OTggMTguMDMyIDE4LjAzMiAwIDAgMC02LjU4NiA2LjU4M2wyLjAxMiAxLjE2M2ExNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5LTMuMjQ1Yy45NjUtLjk2NCAyLjA1Ny0xLjggMy4yNDYtMi40ODdhMTUuNzA2IDE1LjcwNiAwIDAgMSAzLjc3Ny0xLjU2OSAxNS42OCAxNS42OCAwIDAgMSA4LjExIDBjMS4zNC4zNTggMi42MDYuODkxIDMuNzc4IDEuNTY5YTE1LjY4NSAxNS42ODUgMCAwIDEgMy4yNDYgMi40ODcgMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OSAzLjI0NSAxNS42ODQgMTUuNjg0IDAgMCAxIDEuNTY5IDMuNzc0IDE1LjY1NCAxNS42NTQgMCAwIDEgMCA4LjEwNmwyLjI0NS42MDFjLjM5Ny0xLjQ4My42MS0zLjA0My42MS00LjY1NGExNy44NzUgMTcuODc1IDAgMCAwLS42MDgtNC42NTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTgwLjI5MyAyNC45NDRjMi44ODggMCA1LjIzLTIuMzQgNS4yMy01LjIyN2E1LjIyOSA1LjIyOSAwIDAgMC01LjIzLTUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwLTUuMjMgNS4yMjcgNS4yMjggNS4yMjggMCAwIDAgNS4yMyA1LjIyN1ptMjAuNjE1IDE1LjQzNlYyOS41NDNoMi4zMDRWNDAuMzhoLTIuMzA0Wm02LjYxOC0zLjc4N3YzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzkgMi41MzkgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptOS42NjYgMy44MTdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY4di0yLjAyNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0xMC4xOTMtMy4yM2gtNS4zNTJjLjEyNS43NzUuNzU3IDEuMzYyIDEuNyAxLjM2Mi42MzUgMCAxLjAwNC0uMjY0IDEuMjM3LS42NWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMTk4LS4wMTQuNTctLjAxNC41N1ptLTMuNzE1LTIuNjI4Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ2LS42NjQtLjYxOS0xLjE2LTEuNDA4LTEuMTZabTEwLjIzOS0xLjMxNXYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNS0uNzQzIDEuNTE2LS43NDMuOTI4IDAgMS4zNjIuNTQyIDEuMzYyLjU0MlptMy40MDMgMy4zNTZ2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQzIDIuNTQzIDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMS4xNjYgMy4wMTVjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxMWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDUuNjk0LjgzNCAwIDEuNTAxLS40NjIgMS41MDEtMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0N2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjl2LTIuMDI1aDEuMjY5di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTkuMjQ3LTEuNDM4LjI0N1ptMi45NTEtOS43NTNjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4Mi43MTMgMCAxLjI4Ni41NzMgMS4yODYgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODYgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMjcyIDEuNzQ4LTMuOTc0IDQuMDM4LTMuOTc0czQuMDM1IDEuNzAyIDQuMDM1IDMuOTc0YzAgMi4yNzEtMS43NDggMy45NTYtNC4wMzUgMy45NTYtMi4yOSAwLTQuMDM4LTEuNjg1LTQuMDM4LTMuOTU2Wm0yLjI0NSAwYzAgMS4xMTEuNzU3IDEuOTE3IDEuNzkzIDEuOTE3czEuNzk0LS44MDMgMS43OTQtMS45MTdjMC0xLjExMi0uNzU4LTEuOTE4LTEuNzk0LTEuOTE4cy0xLjc5My44MDMtMS43OTMgMS45MThabTkuNTQgMHYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjE2NyAzLjAxNWMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyMS0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjExOWMuMTA3LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA0LjY5NC44MzUgMCAxLjUwMi0uNDYyIDEuNTAyLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzOC4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptNi41MjQgMi4zMTdWMjkuNTQzaDIuMTk2VjQwLjM4aC0yLjE5NlptMTQuMDg5LTEwLjgzNyA0LjI0IDEwLjgzN2gtMi4zODFsLS44NjYtMi4xMzNoLTQuMTkxbC0uODUxIDIuMTMzaC0yLjM4MWw0LjIzOS0xMC44MzdoMi4xOTFabS0xLjA5OCAzLjEyMy0xLjM0NSAzLjUzOWgyLjY5bC0xLjM0NS0zLjU0Wm02LjM4NS0yLjAwOWMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4zOTYgMS43MTYtMy45NzMgMy44MTktMy45NzMuODY2IDAgMS41OTIuMzIzIDEuOTgxLjY2NHYtMy43NDFoMi4xOTZWNDAuMzhoLTIuMTY1di0uNTQyYy0uNC4zODYtMS4xNi43MTItMi4wMDkuNzEyLTIuMTA2IDAtMy44MjItMS41MTUtMy44MjItMy45NTZabTUuODMxIDBjMC0xLjE3NC0uNzcyLTEuOTgtMS43OTMtMS45OC0xLjAyMiAwLTEuNzk0LjgwMy0xLjc5NCAxLjk4IDAgMS4xNzUuNzcyIDEuOTggMS43OTQgMS45OCAxLjAyMSAwIDEuNzkzLS44MDUgMS43OTMtMS45OFpNMTAwLjE5NiA0OC4wOWg4LjUyMnYyLjExOGgtMy4xMXY4LjcxOWgtMi4zMDR2LTguNzE5aC0zLjExMVY0OC4wOWguMDAzWm0xMy44ODggMy42OTJ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5NnYtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkzMS4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptNS44OTEgNi4zNzFjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzOC40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OS0uNzc0Wm0tMi42OS0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTguNzIxLTEuNDd2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTAuNzk1IDEuNjA3YzAtLjIzMi0uMTM5LS40MTYtLjc0NC0uNTQxbC0xLjE0My0uMjMzYy0xLjcxNy0uMzQtMi40NDQtMS4xNi0yLjQ0NC0yLjI4OCAwLTEuMzMgMS4wMDUtMi41MTkgMy4wOTQtMi41MTkgMi4xMDIgMCAzLjA0NyAxLjE3NCAzLjIwMSAyLjQ5aC0yLjA4OWMtLjEyNS0uNDE3LS40OC0uNjY0LTEuMTI5LS42NjQtLjYxOSAwLS45Ni4yMTYtLjk2LjUyNSAwIC4yMzMuMTg1LjM3Mi43NTguNDhsMS4xNDQuMjMyYzEuNjIzLjMyMyAyLjQyOSAxLjA4MyAyLjQyOSAyLjM4IDAgMS40NjktMS4wNjcgMi40OS0zLjE4NyAyLjQ5LTIuMTY1IDAtMy4zMjYtMS4wMjEtMy41NDItMi41OThoMi4yMTRjLjEyNS41MjQuNTExLjgwMiAxLjMyOC44MDIuNzQ2IDAgMS4wNy0uMjE1IDEuMDctLjU1NlptMTEuNTUyLTEuNjA4YzAgMi4zOTctMS43MTcgMy45NTctMy44MTkgMy45NTctLjg2NiAwLTEuNTkyLS4zMS0xLjk4MS0uNjV2My40NzdoLTIuMTk3VjUxLjM0OGgyLjE2NnYuNTQyYy40MDMtLjM4NiAxLjE2LS43MjYgMi4wMTItLjcyNiAyLjEwMiAwIDMuODE5IDEuNTE3IDMuODE5IDMuOTczWm0tNS44MzEgMGMwIDEuMTc1Ljc3NCAxLjk4IDEuNzkzIDEuOTggMS4wMjIgMCAxLjc5NC0uODAzIDEuNzk0LTEuOTggMC0xLjE3NC0uNzcyLTEuOTgtMS43OTQtMS45OC0xLjAxOS4wMDQtMS43OTMuODA2LTEuNzkzIDEuOThabTExLjg3OSAzLjAxNmMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0Ni0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk4LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNC42OTUuODM1IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTExLjU2Ni00LjgyNnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NnYuNjM1Yy0uMDE1IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTI4LjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm04LjQyOCAzLjk0NGgtNS4zNTJjLjEyNS43NzQuNzU4IDEuMzYgMS43MDMgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM3LS42NDloMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTYgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYxLTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMi0uMDE3LjU3LS4wMTcuNTdabS0zLjcxMS0yLjYyN2MtLjgzNSAwLTEuMzk0LjUxLTEuNTMzIDEuMTZoMi45NGMtLjA0NS0uNjY2LS42MTktMS4xNi0xLjQwNy0xLjE2Wm03LjM5MiAyLjAzOXYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuNTY3LjgzN2gyLjQxMmMtLjM1NyAxLjg0LTEuNzQ4IDMuMTIzLTMuNzkxIDMuMTIzLTIuMjkgMC0zLjk5LTEuNjg1LTMuOTktMy45NTcgMC0yLjI3MSAxLjcwMy0zLjk3MyAzLjk5LTMuOTczIDEuOTk1IDAgMy4zODggMS4yMzYgMy42NjYgMy4wMjloLTIuNDE1Yy0uMTctLjU3My0uNjY0LS45NTktMS4zMjgtLjk1OS0uOTI4IDAtMS42NzEuNzg5LTEuNjcxIDEuOSAwIDEuMTEyLjc0MyAxLjkgMS43MDMgMS45LjcxMi4wMDQgMS4yNC0uNDE2IDEuNDI0LTEuMDYzWm01LjEwMiA2LjAyN2MtLjk5IDAtMS40ODQtLjI2NC0xLjQ4NC0uMjY0di0yLjAxcy40NDguMjMyLjkyOC4yMzJjLjQ5NiAwIDEuMTQzLS4xODQgMS4yOTktMS4wMzVsLTIuOTU0LTcuNTc1aDIuNDQ0bDEuNzE3IDQuNjk5IDEuNzQ4LTQuN2gyLjM0OWwtMy4wNzkgNy43Yy0uODAzIDIuMDI2LTEuNDUzIDIuOTUzLTIuOTY4IDIuOTUzWm0xMS41OTgtMy4wNzVWNDguMDloMi4zMDV2MTAuODM3aC0yLjMwNVptNi42MTgtMy43ODl2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NnYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU1LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm02LjU0MS01LjkzNmMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm03LjI1NC4wMjljLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNi40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMi45NTQtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptOC43NTQtLjc3NGMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNyAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxbC0uMTk5LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ4Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ny0xLjg1NXYyLjk3aDEuOTAxdjIuMDI0aC0xLjkwMXYyLjY0M2MwIC43MjYuNDc5Ljg5Ny45MjguODk3LjUxIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg4LjI0Ny0xLjQzOS4yNDdabTIuOTUxLTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMTAuOTgzLTcuNTc1LTIuNjkxIDcuNTc1aC0yLjI1OGwtMi42OTEtNy41NzVoMi4zMzZsMS40ODQgNC42ODUgMS40ODQtNC42ODVoMi4zMzZabTcuOTggNC4zNzRoLTUuMzUyYy4xMjUuNzc0Ljc1NyAxLjM2IDEuNzAyIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzOC0uNjQ5aDIuMzY2Yy0uNTEgMS42NC0xLjY4NSAyLjY2LTMuNTcyIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OCAwIDMuNzYgMS45NjMgMy43NiAzLjk4OC0uMDA2LjItLjAyLjU3LS4wMi41N1ptLTMuNzEyLTIuNjI3Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ5LS42NjYtLjYxOS0xLjE2LTEuNDA4LTEuMTZaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMjIgMzZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiPjxwYXRoIGQ9XFxcIk00NC4wMTkgMjdWMTYuOTc5aDMuMjQ3YzEuMjMgMCAyLjAzMi4wNSAyLjQwNi4xNS41NzQuMTUgMS4wNTUuNDc4IDEuNDQyLjk4NC4zODguNTAyLjU4MSAxLjE1MS41ODEgMS45NDggMCAuNjE2LS4xMTEgMS4xMzMtLjMzNSAxLjU1Mi0uMjIzLjQyLS41MDguNzUtLjg1NC45OTItLjM0Mi4yMzYtLjY5LjM5NC0xLjA0Ni40NzEtLjQ4My4wOTYtMS4xODMuMTQ0LTIuMDk5LjE0NGgtMS4zMTlWMjdoLTIuMDIzWm0yLjAyMy04LjMyNnYyLjg0NGgxLjEwN2MuNzk4IDAgMS4zMzEtLjA1MyAxLjYtLjE1OGExLjMzMyAxLjMzMyAwIDAgMCAuODYxLTEuMjcxYzAtLjM2NS0uMTA3LS42NjUtLjMyLS45MDJhMS4zOTkgMS4zOTkgMCAwIDAtLjgxNC0uNDQ1Yy0uMjQyLS4wNDUtLjcyNy0uMDY4LTEuNDU2LS4wNjhoLS45NzhabTcuMDItMS42OTVoMi4wMjR2NS40MjdjMCAuODYyLjAyNSAxLjQyLjA3NSAxLjY3NS4wODcuNDEuMjkyLjc0LjYxNi45OTEuMzI4LjI0Ni43NzQuMzcgMS4zNC4zNy41NzQgMCAxLjAwNy0uMTE3IDEuMjk4LS4zNS4yOTItLjIzNi40NjctLjUyNi41MjctLjg2Ny4wNTktLjM0Mi4wODktLjkxLjA4OS0xLjcwM1YxNi45OGgyLjAyM3Y1LjI2M2MwIDEuMjAzLS4wNTUgMi4wNTMtLjE2NCAyLjU1LS4xMS40OTctLjMxMi45MTYtLjYwOCAxLjI1OC0uMjkyLjM0Mi0uNjg0LjYxNS0xLjE3Ni44Mi0uNDkyLjItMS4xMzUuMy0xLjkyOC4zLS45NTcgMC0xLjY4NC0uMTA5LTIuMTgtLjMyNy0uNDkzLS4yMjQtLjg4My0uNTEtMS4xNy0uODYyYTIuNzg4IDIuNzg4IDAgMCAxLS41NjctMS4xMTRjLS4xMzItLjU3NC0uMTk4LTEuNDIyLS4xOTgtMi41NDN2LTUuMzQ2Wm05Ljg1OCAwaDQuMDA2Yy43OTMgMCAxLjM4My4wMzQgMS43Ny4xMDIuMzkzLjA2NC43NDEuMiAxLjA0Ny40MS4zMS4yMS41NjcuNDkuNzcyLjg0MS4yMDUuMzQ2LjMwOC43MzYuMzA4IDEuMTY5IDAgLjQ3LS4xMjguOS0uMzgzIDEuMjkyYTIuMzMgMi4zMyAwIDAgMS0xLjAyNS44ODJjLjYxLjE3NyAxLjA4LjQ4IDEuNDA4LjkwOS4zMjguNDI4LjQ5Mi45MzIuNDkyIDEuNTEgMCAuNDU2LS4xMDcuOS0uMzIxIDEuMzM0LS4yMS40MjgtLjUuNzcyLS44NjggMS4wMzItLjM2NS4yNTUtLjgxNi40MTItMS4zNTQuNDcyLS4zMzcuMDM2LTEuMTUuMDU5LTIuNDQuMDY4SDYyLjkyVjE2Ljk3OVptMi4wMjQgMS42Njh2Mi4zMTdoMS4zMjZjLjc4OCAwIDEuMjc4LS4wMTEgMS40Ny0uMDM0LjM0Ni0uMDQxLjYxNy0uMTYuODEzLS4zNTYuMi0uMi4zMDEtLjQ2Mi4zMDEtLjc4NiAwLS4zMS0uMDg3LS41Ni0uMjYtLjc1Mi0uMTY4LS4xOTYtLjQyMS0uMzE0LS43NTgtLjM1NS0uMjAxLS4wMjMtLjc3OC0uMDM1LTEuNzMtLjAzNWgtMS4xNjJabTAgMy45ODV2Mi42OGgxLjg3M2MuNzMgMCAxLjE5Mi0uMDIxIDEuMzg4LS4wNjIuMy0uMDU1LjU0NC0uMTg3LjczMS0uMzk2LjE5MS0uMjE1LjI4Ny0uNS4yODctLjg1NSAwLS4zLS4wNzMtLjU1Ni0uMjE5LS43NjZhMS4yMzcgMS4yMzcgMCAwIDAtLjYzNS0uNDU4Yy0uMjc0LS4wOTUtLjg3LS4xNDMtMS43OTEtLjE0M2gtMS42MzRaTTcyLjgwNSAyN3YtOS45NGgyLjAyNHY4LjI1Mmg1LjAzMVYyN2gtNy4wNTVabTguMTYzIDBWMTYuOTc5aDIuMDIzVjI3aC0yLjAyM1ptMy4xNjUtMy4yNiAxLjk2OS0uMTkyYy4xMTguNjYuMzU4IDEuMTQ2LjcxOCAxLjQ1Ni4zNjQuMzEuODU0LjQ2NSAxLjQ3LjQ2NS42NTEgMCAxLjE0MS0uMTM3IDEuNDctLjQxLjMzMi0uMjc4LjQ5OC0uNjAyLjQ5OC0uOTcxYS44OS44OSAwIDAgMC0uMjEyLS42MDJjLS4xMzYtLjE2OC0uMzc4LS4zMTQtLjcyNC0uNDM3LS4yMzctLjA4Mi0uNzc3LS4yMjgtMS42Mi0uNDM4LTEuMDg1LS4yNjktMS44NDYtLjU5OS0yLjI4NC0uOTktLjYxNS0uNTUyLS45MjItMS4yMjQtLjkyMi0yLjAxNyAwLS41MS4xNDMtLjk4Ny40My0xLjQzLjI5Mi0uNDQ2LjcwOS0uNzg1IDEuMjUxLTEuMDE4LjU0Ny0uMjMyIDEuMjA2LS4zNDggMS45NzYtLjM0OCAxLjI1NyAwIDIuMjAzLjI3NSAyLjgzNy44MjcuNjM4LjU1MS45NzMgMS4yODcgMS4wMDUgMi4yMDhsLTIuMDI0LjA4OWMtLjA4Ny0uNTE1LS4yNzMtLjg4NC0uNTYtMS4xMDgtLjI4My0uMjI4LS43MS0uMzQyLTEuMjc5LS4zNDItLjU4OCAwLTEuMDQ4LjEyMS0xLjM4LjM2M2EuNzMuNzMgMCAwIDAtLjMyMi42MjJjMCAuMjM3LjEuNDQuMy42MDguMjU2LjIxNC44NzYuNDM4IDEuODYuNjcuOTg1LjIzMiAxLjcxMi40NzQgMi4xOC43MjUuNDc1LjI0Ni44NDQuNTg1IDEuMTA4IDEuMDE4LjI3LjQyOS40MDQuOTYuNDA0IDEuNTkzIDAgLjU3NC0uMTYgMS4xMTItLjQ3OSAxLjYxMy0uMzE5LjUwMi0uNzcuODc1LTEuMzUzIDEuMTIxLS41ODQuMjQyLTEuMzEuMzYzLTIuMTgxLjM2My0xLjI2NyAwLTIuMjQtLjI5Mi0yLjkxOS0uODc1LS42NzktLjU4OC0xLjA4NS0xLjQ0My0xLjIxNy0yLjU2NFpNOTMuNzExIDI3VjE2Ljk3OWgyLjAyM3YzLjk0NEg5OS43di0zLjk0NGgyLjAyM1YyN2gtMi4wMjN2LTQuMzgyaC0zLjk2NVYyN2gtMi4wMjNabTkuODMgMFYxNi45NzloNy40MzF2MS42OTVoLTUuNDA4djIuMjIxaDUuMDMydjEuNjg5aC01LjAzMnYyLjcyN2g1LjU5OVYyN2gtNy42MjJabTkuMDY1IDBWMTYuOTc5aDQuMjU4YzEuMDcxIDAgMS44NDguMDkgMi4zMzIuMjczYTIuMjggMi4yOCAwIDAgMSAxLjE2OC45NTdjLjI5Mi40Ni40MzguOTg3LjQzOCAxLjU4IDAgLjc1MS0uMjIxIDEuMzczLS42NjMgMS44NjUtLjQ0Mi40ODgtMS4xMDMuNzk2LTEuOTgzLjkyMy40MzguMjU1Ljc5OC41MzYgMS4wODEuODQxLjI4Ny4zMDUuNjcyLjg0OCAxLjE1NSAxLjYyN0wxMjEuNjE1IDI3aC0yLjQxOWwtMS40NjMtMi4xOGMtLjUyLS43OC0uODc1LTEuMjctMS4wNjctMS40N2ExLjUwMyAxLjUwMyAwIDAgMC0uNjA4LS40MTdjLS4yMTQtLjA3OC0uNTU0LS4xMTctMS4wMTktLjExN2gtLjQxVjI3aC0yLjAyM1ptMi4wMjMtNS43ODNoMS40OTdjLjk3MSAwIDEuNTc3LS4wNDEgMS44MTktLjEyMy4yNDEtLjA4Mi40My0uMjI0LjU2Ny0uNDI0LjEzNy0uMi4yMDUtLjQ1MS4yMDUtLjc1MiAwLS4zMzctLjA5MS0uNjA4LS4yNzMtLjgxMy0uMTc4LS4yMS0uNDMxLS4zNDItLjc1OS0uMzk3LS4xNjQtLjAyMy0uNjU2LS4wMzQtMS40NzctLjAzNGgtMS41Nzl2Mi41NDNaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZmlsbD1cXFwidXJsKCNsb2dvX3N2Z19fYSlcXFwiIGQ9XFxcIk0wIDBoNDF2MzZIMHpcXFwiLz48ZGVmcz48cGF0dGVybiBpZD1cXFwibG9nb19zdmdfX2FcXFwiIHBhdHRlcm5Db250ZW50VW5pdHM9XFxcIm9iamVjdEJvdW5kaW5nQm94XFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCIxXFxcIj48dXNlIHhsaW5rOmhyZWY9XFxcIiNsb2dvX3N2Z19fYlxcXCIgdHJhbnNmb3JtPVxcXCJtYXRyaXgoLjAwMDkzIDAgMCAuMDAxMDYgLS4xMjIgLS4wMDcpXFxcIi8+PC9wYXR0ZXJuPjxpbWFnZSBpZD1cXFwibG9nb19zdmdfX2JcXFwiIHdpZHRoPVxcXCIyMjM1XFxcIiBoZWlnaHQ9XFxcIjk1OVxcXCIgeGxpbms6aHJlZj1cXFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUNMc0FBQU8vQ0FZQUFBQXRLbGFrQUFBQUNYQklXWE1BQUNFM0FBQWhOd0V6V0o5NkFBQWdBRWxFUVZSNDJ1emRQWWhkNlowbThPY2RPakRzRFdwaFlDb3diRFd1b0lPQnZnM09YR0Fwc3BMRjNiU1NpVlJpY2FUQXJVaFIwMm9jS2VxZVFKR0RMa1dUcUxITUp0V1JOU0REQkF0ekd5YVlvSXhyWVlKYUdKZ2FxSVVKQnQ0TjNsdXJzdHdmK3JqM1BlZmMrL3RCY1V0cSs1NnY5MVNwZEI0OS93UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEb29EZ0ZBQUFBTUU2MTFwMGs4ei83WWI2VXA4NE9BQUFBQU50SzJBVUFBQUJXck5hNmwyUnYrY3Q1a3AzbDUvL3R5dTluK2Z2ek5lekMweGQrdlVqeTc4dlBUNWNmU2JJb3BaeTdZZ0FBQUFCTWliQUxBQUFBdktKYTYyV0E1ZHJ5dDM2NmZMMGFiSm1TMCtYSGVaS3ZsNitMSktlbGxGTlhIQUFBQUlBeEVYWUJBQUNBYjNCbGhOQThyWkZsbnRiS3NyZUZwMk9SRm9ENSt5eURNVVlwQVFBQUFEQVVZUmNBQUFDMjNyS3BaUzh0MFBMVFRMZWhwYmZUdENETTEybWprelRCQUFBQUFMQjJ3aTRBQUFCc2xXVmp5N1VJdHF6TGVWcnc1VElBc3lpbG5Ec3RBQUFBQUt5S3NBc0FBQUFiYmRuYWNobHN1WmJ0SEVNMHRFV3VCR0MwdndBQUFBRHdKb1JkQUFBQTJDaTExcjIwVU12UGw2OWFXOGJuTkMzODh0dTA4SXZtRndBQUFBQmVtckFMQUFBQWszWmxMTkZsdUdYUFdabWN5K2FYMzVaU25qb2RBQUFBQUh3WFlSY0FBQUFtWjluZThuNmVCMXpZSE9kNTN2cnlST3NMQUFBQUFDOFNkZ0VBQUdBU2FxM3pKTGZTUWk1N3pzaldXQ1I1bEJaOE9YVTZBQUFBQUJCMkFRQUFZTFFFWEhpQjRBc0FBQUFBd2k0QUFBQ01pNEFMTDBud0JRQUFBR0JMQ2JzQUFBQXd1RnJyWGxxNDVaY1JjT0hWUGMzejRNdTUwd0VBQUFDdzJZUmRBQUFBR0V5dDlUREp6OU9DTHJBS1Iwa2VsVktlT2hVQUFBQUFtMG5ZQlFBQWdLNldMUzYvVEhLWVpNY1pZVTFPMDlwZWpvdzVBZ0FBQU5nc3dpNEFBQUIwc1d4eHVaWGttck5CWjBmUjlnSUFBQUN3TVlSZEFBQUFXSnRsaTh0aFdwT0xGaGVHZHByazB5UlBTaW5uVGdjQUFBREFOQW03QUFBQXNISzExbXRwTFM2SHpnWWpkSjdXOXZLM1Jod0JBQUFBVEkrd0N3QUFBQ3RUYTMwL3JjWGxtclB4VWhiZjhIc25TZjd2Szd6SGo1TE1Ydmk5V1pKOXAvZWxITVdJSXdBQUFJQkpFWFlCQUFEZ2pkVmFENU44a21SdnkwL0ZSVnBZSlVtK1hyNmVMVCt5L0c4WEErelg3dklqYVNHWVdaTC9rdWVCbUxsVm5LZEpQaFY2QVFBQUFCZy9ZUmNBQUFCZTI1YUdYQzdESzVjTkxJdjhhY2hseXVaNTNncnpWMmtCbWN0d3pMWjRtdGIwY3VRT0J3QUFBQmduWVJjQUFBQmVTYTExSjhsSGFlT0tkamI0VUM4RExDZEovcEFXY0ZsczZXVy9ETURzcDQxTjJzM210OEdjcGpXOUhMbnJBUUFBQU1aRjJBVUFBSUNYVm11OW44ME51U3pTUmc5ZEJsek9YUEh2ZFRVQU04L3pzVWliNURSQ0x3QUFBQUNqSXV3Q0FBREE5OXJBY1VXWExTMS9XTDZldU1vck0xOStYQVpnTm1VRTBpTEozVkxLVTVjWUFBQUFZRmpDTGdBQUFIeXJEUXE1WENSNWx0YmNzb2pXbHA3MjAwSXY3Mll6d2k5UDA1cGVucnEwQUFBQUFNTVFkZ0VBQU9EUDFGcXZwWVZjcmszNE1CWkpmaC9OTFdOejJmenlrMHg3N05HVHRLYVhVNWNVQUFBQW9DOWhGd0FBQVA2L1d1dGVraTh5elpETDVXaWl5NERMaFNzNmVyTWtCMm5CbDZtMnZueWUxdlJ5N25JQ0FBQUE5Q0hzQWdBQVFHcXRPMmxOTGg5TmJOZlAwc1lUZlJYdExadmdNdmh5a0drRlg4N1RBaStmdTRRQUFBQUE2eWZzQWdBQXNPVnFyUitsQlYxMkpyTExBaTdiWVlyQmw5TWt0MHNwVDEwK0FBQUFnUFVSZGdFQUFOaFN0ZFpyU1Q1TEd4OHpkaGRKamlQZ3NxMm1Gbng1a3VSdUtlWFVwUU1BQUFCWVBXRVhBQUNBTGJNY1dmUlprc01KN081eGt0K25OYm5BTEMzdzhyT01QNlIxbnVSdlN5bjNYVFlBQUFDQTFSSjJBUUFBMkNLMTFzTzBvTXVZUnhhZHBEVzRIS2MxdXNBMzJVMXlJeTM0c2p2aS9WeWt0Ync4ZGNrQUFBQUFWa1BZQlFBQVlBdlVXdmVTZkpIazJvaDM4empKbHpHbWlGZDMyZlp5TU9KOS9EekpwNldVYzVjTEFBQUE0TTBJdXdBQUFHeTRXdXRIU1Q3Sk9OdGN6dElDTGxwY1dJWGRKQittTmI3TVJyaC81MGx1bDFLZXVGUUFBQUFBcjAvWUJRQUFZRVBWV3VkcGJTN3pFZTdlSWkzazhzeVZZZzFtYVMwdnR6TE9FVWRQMGtJdldsNEFBQUFBWG9Pd0N3QUF3QWFxdGQ1UGEzTVpHNk9LNk8wZ3JlMWxiS0V2TFM4QUFBQUFyMG5ZQlFBQVlJUFVXdmZTMmx5dWpXelhqcE04U2h0YkJFT1lwNFZlRGthMlgxcGVBQUFBQUY2UnNBc0FBTUNHcUxWK2xOYm1zak9TWGJwSWEzRjV2UHdjeG1BM2JielJqUkh0MDJsYTRPV3B5d01BQUFEdy9ZUmRBQUFBSnE3V3VwUFc1dkwrU0haSnlJVXBHR1BvNWZOU3lsMlhCZ0FBQU9DN0Nic0FBQUJNV0szMVdwTGZaQnh0TGtJdVROSFlRaStMSkIrVVVrNWRHZ0FBQUlCdkp1d0NBQUF3VWJYVysybGppOGJnT01uRENMa3dYYnRKN2lXWmoyQmZ6cFBjTGFVY3VTd0FBQUFBZjA3WUJRQUFZR0pxclh0cGJTNWplQ2gvbk9SUmtqTlhoZzB4VDJ0NkdjUDlkWlFXZWpsM1dRQUFBQUNlRTNZQkFBQ1lrQkdOTFZxa2hWd1dyc3JhekpMc2Y4ODFZSDBPa3R4SmEzd1orbDY3WFVweHZRRUFBQUNXaEYwQUFBQW1ZaVJqaTg3U3hoVTljMFZleXRYQXl0V21rSGV2Zkw2YjFRWXFUdktuNDZTK1hyNWVMUDliSWlqektnNlRmTGk4bGtNNVR3dThQSEU1QUFBQUFJUmRBQUFBUnEvV3VwUFc1bkp0d04yNFNQSmwybGdWL3RSK1doQmludVMvTEgrOTZnREx1bHdHWTc3Tzh6RE1XWXlsZXRFc3JlWGx4c0Q3OFhrcDVhN0xBUUFBQUd3N1lSY0FBSUFScTdYTzA0SXVld1B1eHJPME5wZHREMEJjQmxqbVNYNjAvSHgvZzQ5M3Niem1mMGdMd2J6WUdMT041bW1obHlHdis5TWtINVJTem4yRkJBQUFBTGFWc0FzQUFNQkkxVm9QazN5V1pHZWdYVGhMOGlEYk9mTG1jdnpRWmJCbG5tSEgySXpGV1ZybzVldmw2N2FPUTdxWjVOYUFhK0kwTGZCaUhCVUFBQUN3bFlSZEFBQUFScWpXZWovSkp3UHV3cU5zMThpaXl6RkU3eTVmOTYzQ2w3WklDNzhzc2wzdEw3TWs5NUljRExUOTh5UjNTeWxIbGlBQUFBQ3diWVJkQUFBQVJxVFd1cFBXNW5JNDBDNHMwa1lXbld6NHFSWnVXZThhdWd5L2JFUHp5RHd0OUxJNzBQWS9MYVhjdCt3QUFBQ0FiU0xzQWdBQU1CTExvTXZ2MGg2ZTkzYVIxdWJ5ZUlOUDhXNWFDOGRQQmpySDIrZ2lMZkR5K3lUUHNybXRMN08wc1VZM0I5citVU25sdHVVR0FBQUFiQXRoRndBQWdCR290YzdUZ2k0N0EyeCtrZVJCa3JNTlBMWDdTWDZXRm5MWnRkSUdkNUxrcTdUZ3l5YXV0eUZiWGhaSnJwZFN6aTB6QUFBQVlOTUp1d0FBQUF5czFub3R5Vy9TUCtpeXFXMHVBaTdUc0tuQmx5RmJYaFpKYnBkU0ZwWVhBQUFBc01tRVhRQUFBQVpVYXoxTThzVUFtejVKOG5FMkoyU3dtK1REQ0xoTTFXWHc1VGliTStwb251UlhhZUdYbnM3VEdsNEVYZ0FBQUlDTkpld0NBQUF3a0ZyclIwaytHMkRUajVJY2JjQXBuS1dGV3o1TWEzTmhNenhMOHZ1MDRNc21yTkY3eTNYYTAzbGF3OHNUeXdrQUFBRFlSTUl1QUFBQUE2aTFmcEhrc1BObXo1SThTQnQxTW1YenRERkZONnlralhhUkZuajVNdE52SUxxUjVFNzZ0N3pjTHFVY1dVb0FBQURBcGhGMkFRQUE2R3lnb011enRLRExWRWZFWExhNDNJb3hSZHRva2VkampxWnFQNjNscFhjTGtjQUxBQUFBc0hHRVhRQUFBRHFwdGU2a2pTMDY3THpwaDBrZVQvUzA3YWFOS2JxUi9xMFlqTTlaV3VqbGNhWVozSnFsTmJ6MGJpWDZ0SlJ5My9JQkFBQUFOb1d3Q3dBQVFBZkxvTXZ2MGtidzlIS1c1T01rSnhNOFpmTzBrTXVCMWNNM3VFaHJLM3FVYVk0NEdtS3MwVkVwNWJhbEF3QUFBR3dDWVJjQUFJQTFHeWpvTXRXeFJRZHBJWmU1bGNOTE9rNXJlMWxNYkwrSEdHc2s4QUlBQUFCc0JHRVhBQUNBTlJvbzZQSW95ZEhFVHRXTkpMZlN4aGJCNjFnczEvNlVRaSt6dE1CTHp3WWpnUmNBQUFCZzhvUmRBQUFBMW1TQW9NdEZXcHZMc3dtZEppRVhWbTJLb1pmRDVYM1FpOEFMQUFBQU1HbkNMZ0FBQUd2U09leHlraFowT1puSTZUbEljaWRDTHF6UDFFSXZCMmt0TDdOTzJ4TjRBUUFBQUNaTDJBVUFBR0NOT2dWZUZraytUbXQyR2J0NVdvUEYzT3FnaytPMDBNdlpCUFoxUDhtdjBpOEVKdkFDQUFBQVRKS3dDd0FBd0pxdE9mQnluTmJvTW5hN2FhMFZRaTRNNVhGYTZHWHNvYkJaa3MvU2dpODlDTHdBQUFBQWt5UHNBZ0FBME1HYUFpOFAweDdnajlrc3JjbmxwbFhBQ0Z3aytUTEowUVQyOVY2U0c1MjJKZkFDQUFBQVRJcXdDd0FBUUNjckRMeGNwQVZkamtkK3lEZlRnaTR6VjUrUk9WdmVRODlHdnArSHkzdW9oODlMS1hjdERRQUFBR0FLaEYwQUFBQTZXa0hnNVNMSjNTUW5JejdNZVpJNzZUZUdCVjdYSW0wTTJObUk5L0ZHV3N0TEQ3ZExLVWVXQlFBQUFEQjJ3aTRBQUFDZHZVSGc1U3pKeHhsdjBHV1dGbks1NFNxL2xwTzBNTlByMm84V25kZjFLT01lYlhTUUZuanBjWDBGWGdBQUFJRFJFM1lCQUFBWXdHc0VYazdTR2wwdVJucElOOUtDTHNJV2Yrb2l6ME1zZjFqKzN1S0YvN1l1bDJ0cmx1Y3RPKysrOE45NDdpeXQ1V1V4MHYzYlQvSlpCRjRBQUFBQWhGMEFBQUNHOGdxQmx6RUhYWGJUR2llMlBUeHh0dno0K3Nybmk1SHY4MlVJWmovSlgxMzVmTnNEUzQvVG1sN0dlTC8xQ3J5Y0o3bGVTbGtFQUFBQVlJU0VYUUFBQUFiMEVvR1hNUWRkYmlhNWxlMExSMXdHV2Y2d3ZENmJGZ2k0RE1ITWsveG8rYnFOMTNpc0xTLzdhUUd6L1RWdlIrQUZBQUFBR0MxaEZ3QUFnSUY5UitEbE9NbkRqQy9vc20xdExwZUJscStYcnhkYnVFeDNsOWY3M2VYcjdwWWM5MWhiWG1acERTL3JEcnljSm5tdmxITHVLelVBQUFBd0pzSXVBQUFBSS9BTmdaZmp0R2FKc2RtR05oZmhsdSszVGVHWHNiYTg5QXE4TE5JYVhnUmVBQUFBZ05FUWRnRUFBQmlKSzRHWHk0ZnJZekpMYTNNNTJORFQveXd0M1BKc2VmNTVOWmRqajM2VzlZY3Zodkk0cldscGJQZGxqOERMVVNubHRtVU9BQUFBaklXd0N3QUF3RWpVV3QvS09NTWs4eVMveW1hMXVWemtUd011Mmx0VzU3TDE1U2ZadkhEVVNaS1BNNjVBVksvQXkrZWxsTHVXTndBQUFEQUd3aTRBQUFBanNBeTZ6RE8rUU1saDJ0aWlUZkVzeVZmTFY5WnZsaFo0K1RDYjAvaHlrZGJ3Y2p5eTg5d2o4SEs3bEhKa1dRTUFBQUJERTNZQkFBQVkyRWlETHIwZW52ZHdrdVRMYUhBWjJtNlNHMm1qam5ZMzRIaU8wMEl2RjF0MHo1NG51VjVLV1ZqT0FBQUF3SkNFWFFBQUFBWldhLzNySkg4NW9sM2FoTEZGRjJsaGhDOHpycEV6UEY5alAwc0x2MHpaMk1ZYTlRcTh2RjFLT2JlTUFRQUFnS0VJdXdBQUFBeW8xdnBPeHRWeWNUUEpuUW1mMHNzV2wyT3JheEptYVlHWER6UGR0cGVMSkE4eW50RlkrMm1CbDNXRzFSYWxsUGNzWHdBQUFHQW93aTRBQUFBREdWblFaWmJrWHBLRGlaN080eVJmSlRGZVpib08wa0l2ODRudS82TWtSeVBabHg2Qmw2TlN5bTNMRmdBQUFCaUNzQXNBQU1BQWFxMzdTWDQ0a3QzWlRSdGJ0RCt4MDJoVTBXYmFUd3U5VEhIRTBiTzBscGVMa1p6SGRRZGVicGRTaml4WkFBQUFvRGRoRndBQWdNNXFyYnRKM2huSjd2UjRJTDVxRjJrQmw4Y1pSNmlBOWRoTmNpdlRDNzJjSlBrNDR3aGd6WmYzOTdxY0o3bGVTdEdvQkFBQUFIUWw3QUlBQU5EUnlJSXVOOUpHRjAyRmtNdDJtbUxvNVNMSjNiVGd5NmJmNTZkSjNpdWxuRnVxQUFBQVFDL0NMZ0FBQUozVVdtZEpmanlTM1RsTUN4Qk1nWkFMeWZSQ0x4ZEpIcWFOMmhyYXpTUjMxdmorVDBvcEgxaWlBQUFBUUMvQ0xnQUFBQjBzZ3k3ekpHK05ZSGZ1WlRxQmdjZEpIa1hJaGVkMjA0SWJCeFBaM3djWlIrQmwzZmY5M1ZMSzU1WW5BQUFBMElPd0N3QUF3SnJWV3Q5S0M3ck1CdDZWV1pKZkxmZGw3STdUUWk1blZoRGZZcDdXOURLVjlmeGdCUHZ4MlJyUDEzbVM2NldVaGFVSkFBQUFySnV3Q3dBQXdKclZXbitjY1FSZFBrdXlQL0xUZFpJMitzVURjMTdXamJUUXkrN0k5M01NZ1pkMWZ4MVlwQVZlemkxTEFBQUFZSjJFWFFBQUFOYW8xdnBPaG44SVA0V2d5MFZheU9YWXF1RTExL2pOdE5ETG1CMHYxL21RWTduMmwxOFAxaFhBKzd5VWN0ZVNCQUFBQU5aSjJBVUFBR0JOYXEyN1NkNFplRGYyMDBZWGpibjE0bkhheUtJTHE0WTN0SnZrWHNZOTJ1Z2t5ZDJCMS9zOExmQ3lMaCtVVXA1WWpnQUFBTUM2Q0xzQUFBQ3NRYTExSjhNL2NGOTNnOE9iTXJLSWRibVI1TTdJMS83UWdaZWJ5M08wRHVkSjNqYk9DQUFBQUZpWHYzQUtBQUFBVnF2VytvTWtmejN3Ym93OTZQSW95UzhpNk1KNkhDZjVteVRQUnJwL1k3Zy9IMmQ5WThOMmtueGhHUUlBQUFEcm90a0ZBQUJneFdxdFA4NndEN0hISEhRNVNmSmcrUW85SEtTTk5ocnIvVEJrdzh0cytiVmlmMDN2Zjd1VWNtUUpBZ0FBQUtzbTdBSUFBTEJDdGRaM2t1d091QXRqRHJvOFNuSzA1VXRrZC9reHkvT0F3WSt1WEsrcnYvOHFyamJrbkNYNVB5Lzgva21HSFprenRGbGE0T1ZnaFBzMmRPQmxOOG12MS9RMTR6ekplNldVVTk4ZEFBQUFnRlVTZGdFQUFGaVJXdXR1a25jRzNJV3hCbDNPa255YzdXcHptZWQ1c09YZHZINklaZFVXYWFHS1B5eXZ4OW1XWFpleHRyd01IWGc1U1BLck5iMzMwMUxLZGQ4aEFBQUFnRlVTZGdFQUFGaUJXdXNzTGVEdzFrQzdzTTUyaGpkeG5PUmhOcnRWWkgvNThlNlZ6NmRta1JhNCtNUHk4N01Odmw2N2FZR1grY2oyYStqQXk1MGtOOWYwM3NZWkFRQUFBQ3NsN0FJQUFQQ0dhcTF2cFQwNEh5cG9Na3RyZEJsVHlPSWlMZVJ5dklHWGZIOTV2ZDhkK0xxdjAxbGE2T1hyYkc3NDVUREpyWkh0MDdPMEZxU2gvSHBOWDBmT2s3eGRTam4zSFFNQUFBQllCV0VYQUFDQU4xUnIzVS95dzRFMlA4YWd5MG1TQjltYzhUaXp0REV2N3k1ZloxdTR6Qy9ETDc5UEMyUnNpbm5hK0o0eFhkUGo1ZjB6aEhVMlJEMHBwWHpnT3dZQUFBQ3dDc0l1QUFBQWI2RFcrcGRKL25xZ3pZOHg2TElwWTR0MjA0SXRQOHMweHhLdDI3TThENzVNL1ZxUDlUNGFLdkJ5a0JZQVdvY1BTaWxQM0Q0QUFBREFteEoyQVFBQWVFMjExaDhrK1hHU3R3YmFoWHRKYm96b2xEekl0TWNXelpiblU4RGwxV3hLOEdWczk5UERKSTgzN0Z5Y0publBPQ01BQUFEZ1RRbTdBQUFBdktaYTZ6ekp6a0NiSDlPRCtZc2tkelBkc1VVM2t2d2tyZEdDTjFzSHo1SjhsVGJ5YUtwcjRkNkk5bWVvQU5rc2JaelI3aHJlKzlOU3luMjNDd0FBQVBBbWhGMEFBQUJlUTYzMWh4bXUvV05NRCtSUGtueWM1R3hpbDNBM3lZZkxjem16b2xmdUxNbVhhVUdOcWJXOTdLZU5OUnJMdXZoRmhnbVM3YWNGWHRiaHZWTEt3bTBDQUFBQXZDNWhGd0FBZ0ZkVWE1MGxtV2VZOFVVSFNYNDFrbFB4TEsxNVlrcGhobmxheUVXTFN6L0hTUjVsV29HbzNlVjlOb1p4VmtNMkp4MG11YldHOTMxYVNybnUxZ0FBQUFCZWw3QUxBQURBSzZxMS9qakR0RDZNcVhIaU9DM29NaFUzMGg3YTcxckJnMW1raFY2bTB1Z3hXOTV2WXdpOG5LUUZYb1lJbHYxNlRlZmdkaW5seUcwQkFBQUF2QTVoRndBQWdGZFFhOTFMc2pmQXBtZHBENTNIRU5aNG1PVHhCQzdYTEszQlJjaGxYQlpKdmtvTFRFM0J2YlN3MU5DZXBZME02MjFkNDR4TzA4WVpuYnNsQUFBQWdGY2w3QUlBQVBDU2x1T0xmanpRNWo5TEc4RXp0QWVaUmtqaE1HMWMwY3pLSGEyenRLYVhLYXluc1FSZUhxZUZ6WWE0bjlZeHp1alRVc3A5dHdJQUFBRHdxb1JkQUFBQVhsS3RkWjVrWjRCTjMwbHljK0REdjBoN3lENzJZSUp4UmRNemxmRkdONWYzNHRDR0NweXRhNXpSMjZXVVU3Y0JBQUFBOENxRVhRQUFBRjVDcmZXSFdjK0QzdTl6STYxVllrZ1hTZTRtT1JueEpUcElDeUlJdVV6WElpMVFOZVoxdHMzMzR6eXRZV3JWamtvcHR5MS9BQUFBNEZVSXV3QUFBSHlQV3VzUDBzWVh2ZFY1MC90cEQ1ZUhITVV6OXFETGZscklaVzZsYm96anROREx4VWozYnd5Qmw1UGxmZG43SEsyclplcDZLZVdwcFE4QUFBQzhMR0VYQUFDQTcxRnIvZXNrZjlsNXM3TzBvTXYrZ0ljKzVxRExMRzFjMFUwcmRDTmRwSTAyZWp6Uy9SdEQ0T1Zaa284SHVPOStuZFUzS0QwdHBWeTM3QUVBQUlDWDlSZE9BUUFBd0xlcnRlNmtmOUFsYVEwS2dpN2Y3Q0RKMzBYUVpaUE5sdmZBcnpQTzFwN2pKQTlHY0IvY0hPRHJ3c00xdk8rMVd1djdsajBBQUFEd3NqUzdBQUFBZkl0YTYxdHA0NHQrMEhuVFE3ZEdqRFhvc3JzOEwwWVdiWi9IYVUwdll4dHROSWFHbDE4TWNLOSt0b2I3OExTVThyYWxEZ0FBQUx3TXpTNEFBQURmN29mcEgzVFpUV3UwR01wWWd5NDNNOTZXRDdiMytvK2g0ZVZlV2hOT1QrczQ1cjFhNjZHbERnQUFBTHdNelM0QUFBRGZvTmI2ZzdSV2w3YzZiL3JYR1haODBkMGtpeEZkQ20wdXZHaU1MUzlETjd3OHpuckdDMzJYd3lTM1Z2eWUybDBBQUFDQWw2TFpCUUFBNEp2OU1QMkRMb2NaTnVqeUlPTUt1aHhFbXd0LzdyTGxaWDlFKzNTOC9CanluQngwM3ViakpHY3Jmay90TGdBQUFNQkwwZXdDQUFEd0xXcXR1MmtQMUh1RVh1WkpQaHZ3Y0I5azJJZjFWODNTUmpuZHNBcjVIbytTSEkxb2YrNE51RzR2a3Z4TitqYmVyS1BSUnJzTEFBQUE4TDAwdXdBQUFIeUxVc3Baa245SWNycm1UYzB5L0FpVXNRUmQ5dE5DUDRJdXZJeGJ5L1V5RzhuK0RObU9OTVRYa2VNMUhLOTJGd0FBQU9CN0Nic0FBQUI4aDFMS2Y1WlNUdE5DTC8rNnBzM2NTckk3MENFZUozazRrdE45SXkyNHNHL2w4UXJtU2Y1dVJPdm00eVFuQTIzN0lQM0hHVDFhdzN0K1lsa0RBQUFBMzBYWUJRQUE0Q1dVVXY2amxQSlBhUzBHLzdIQ3Q1NG51VG5RWVoxa1BFR1hlOHVQbWRYR2E1Z2wrWFhHMFFoMGtSWjR1Ump3WHVwNUh5MlNQRnZ4ZTJwM0FRQUFBTDVUY1FvQUFBQmVYYTMxaDBuMmtyejFCbTl6K1lCK2lGYVhzeVMveUhBUDVLK2VBMjB1ck5KeDJqaWhvZTB2Nys4aFBFc0wzUFN5bTlhdXMwcW5wWlMzTFdjQUFBRGdtMmgyQVFBQWVBMmxsSDlKRzIzMEwyL3dOamN6VE5CbDZPYUpTNWRoQUVFWFZ1bkdjbDBOM1JKMGt1RkNONzNIR1oybGhZeFdTYnNMQUFBQThLMkVYUUFBQUY1VEtlVS9TeWtuU2Y1WGt2TlgvTC92SjdrMTBLNC9USHNRUDZSNVdxUExycFhFR3V4bkhJMUJ4MGtlRDdUdE8ra2IrSG0waHZmOHhGSUdBQUFBdm9td0N3QUF3QnNxcFZ5VVVoWkovaW5KZjd6ay8rM09RTHY3T0t0dllIaFZOOUtDQ0RPcmh6VWFTK0RsWVpMRkFOdmRUZDlBM1ZsV0gzalpxN1crYnlrREFBQUFMeEoyQVFBQVdKRlN5citXVXY0aHlXbVMvL3lPLytuTnRHYVQzaFpwRDk2SGREUEpQYXVGVG1acGdaZURnZmRqcUxGaE45TTM3UE40RGNmNVM4c1lBQUFBZUpHd0N3QUF3SXFWVWs2VC9FTmEwOEdMWmhsbWZORkYyZ1AzSWQzTGNJMDJiSzlaa2wrbE5Rb041U0xKM1lHMmZhZnpjWDY1NHZlOFZtdTlaaGtEQUFBQVZ3bTdBQUFBckVFcDVUOUxLZitjMXFaeWZ1VS8zY2t3NDN1R2FwYTRkQy9EaGcxZzZEVjRrbUdhbGVhZGozc2Q3UzYzTEY4QUFBRGdLbUVYQUFDQU5TcWxuSmRTRmtuK09XU0c5c0FBQUNBQVNVUkJWTWtQTTh6RDlrZHBvWnVoQ0xvd0ZrT3Z4Y2NEM1lzOVEzYnJhSGM1ckxYdVdiNEFBQURBSldFWEFBQ0FEa29wWjBuK3h3Q2JYaVE1R3ZEUUJWMFltNkhYNUJBdFM3TWtOenR1Ny9FYTN2UFEwZ1VBQUFBdUNic0FBQUIwVUdzOVRIS3Q4Mll2a2p3WThMQUZYUmlySWRmbVVQZmxyU1M3SFkveGVNWHYrVXZMRmdBQUFMZ2s3QUlBQU5ESEp3TnM4MkdTczRHT1Y5Q0ZzUnR5alQ3TGV0cFB2cytkanR0NnRPTDMyMW1HQmdFQUFBRHlsbE1BQUFDd1hyWFcrMG4yT20vMldWYmZyUEN5RGlQbzhyS2VKamxQOHZXVlgxODZMNlVzdm1OZFhidnl5NTBrOCtYblAzM2gxM3k3ZTh2WEllNlZSMGtPMHE5dEpjdnR6ZFBHbTYzYjJmSzhydkpyd1M4ejdGZzJBQUFBWUNTS1V3QUFBTEErdGRhZEpIOU1DeC8wY3BIa2I1YXZ2ZDNJOHdBQno1Mm1CUXkrVGd1MExFb3A1eDNXMzE1YXVHR2U1TjIwVVZvN0xzZWYzUzkzazV3TXNPMTVrczg2YjNPeFBONGU5cFA4ZXNYditkNTNoY0FBQUFDQTdTRHNBZ0FBc0ViTFZwZmVJNHcrVG10MjZVM1E1YmxGV3FqbDc1TTg3UkZzZVlVMXVaY1dldm5wOG5YUDVSbzA4SElueWMzTzI3eWJQdTB1U1F2enJMSmw2S2lVY3R1U0JRQUFnTzBtN0FJQUFMQW1BN1c2UEVzTHUvUzJuL1pRZTdiRmwveEprdCttaFZ0T0o3Uk81Mm1obDF2Wjd0RkhaMGwra2Y2TlNMTzA5cE9lNDR4T2xzZmF3MEdTWDYzdy9jNlR2RDJtQUJrQUFBRFEzMTg0QlFBQUFHdnpVZnFQTDNvNHdISHVabnVETGsrUzNFN3lYMHNwSDVSU2pxWVVkRW1TVXNxaWxQSjVLZVc5SkcrbmIrdkhtRnl1NDk0dWtqem92TTM5dENhbUhwNmxCWWxXWlNmSis3NjlBQUFBd0hZVGRnRUFBRmlEWmF2TEx6dHY5bEZXKzFENVpjelNXaHUyS2VoeW11VFR0SGFKeTRETFJyUk1sRkpPcndSZjNrdnllVnFUeHJiWXp6Q2p1QmJwUDNyc1ZzZHRmVG5oZlFjQUFBQkdTTmdGQUFCZ1BYcTN1cHdrZVR6QWNkNUpDd2hzZzZkSlBpaWx2RjFLdVQrMUJwZFh0V3g4dVp2VzluSTdMZVN6RFc0a3VUbkFkaCttN3dpbDNmUnJkemxlOGJGZHE3WHUrVFlEQUFBQTIwdllCUUFBWU1VR2FuVVpZbnpSemZSN1dENmtvN1FXbCt1bGxDZmJ0cDVMS2VmTDlwcTNrMXhQQy8xc3VqdEo1cDIzZVpiV3p0UlRyNGFVaTZ5K3VlYlFkeHNBQUFEWVhzSXVBQUFBcTllNzFlVTRiUXhLVC9PMFFNQW1PMG9MdWR6ZTlCYVhsMVZLZVZwS3VaN3RDTDBNTVo3cmNmcU9JdHROdjFDUFVVWUFBQURBeWdpN0FBQUFyTkFBclM0WDZkL3FNa3NMQW15cW93aTVmS2N0Q2IwTXRjNGZkTjVlcjlESXlmSmpWZlpxclhOM0l3QUFBR3duWVJjQUFJRFY2dDNxOG1WYTRLV25JUm92ZW5pYTVMcVF5OHU3RW5xNW5XUVR6OWs4L2NmbExOSzNxV21lNmJhNy9OSmRDQUFBQU50SjJBVUFBR0MxZW83V09FdHJJZW5wTVAwZWpQZHludVIyS2VWNktlV3BKZnpxU2lsSFNkNUw4dW1HM3RPOTEzenZkcGNQTzIzbldWWWJ6bnZmM1FjQUFBRGJTZGdGQUFCZ1JXcXRoMG4yT203eVVlZEQzRS9mTUU4UFIya2ppNDZzNERkVFNqa3ZwZHhQOG5ZMmI3VFJ2ZlJ0TXpwTGN0eHhld2RKZGp0czV5SXQ4TElxTzdWV2dSY0FBQURZUXNJdUFBQUFxOU56cEVidmgrR3p0QWYrbStJMHowY1duVnU2cTFOS09WMk9OcnFiMXBxekNYWUhXUDhQMDNkRVdhOGcyMWNyZnIrZnUrc0FBQUJnK3dpN0FBQUFyRUN0OVZyNmpqcnBQZWJrVmxxenl5WTRTdktla1VYclZVcjVQRzIwMGFhYzU0UGxSeThYU2I3c2ZIdzkybXNXYVdHOVZkSHNBZ0FBQUZ0STJBVUFBR0ExZW83M1dTdy9lcGtudWJrQjErZzh5UWZhWFBxNTB2THk2WVljVXU5eFJvL1RyOTFsbHVSR3AyMFpaUVFBQUFDOEVXRVhBQUNBTjFScjNVdHkySEdUanpvZjRpYU1MMXFrdGJrOHNXTDdLNlhjVDNJOTB4OXIxSHVjVis5Mmx3ODdiV2ZWeDJTVUVRQUFBR3daWVJjQUFJQTNkOWh4VzcxYlhRNlQ3RTc4K2h3bHVWNUtPYlZVaDdNY0cvVjI1L1c3RGdmcE83S3NaN3ZMYnFkak8wdHlzc0wzdStZT0F3QUFnTzBpN0FJQUFQRG1lbzR3NnRucXN0djUyTmJocnJGRjQxRktPUytsdkpjV1FKcXludU9NZXJlNy9LelRkcjVhNFh2dDFWcm43akFBQUFEWUhzSXVBQUFBYjZEVytuNlN2VTZiNjkzcU11WHhSZWRKUGlpbGZHNlZqazhwNVhhU3V4TStoTjBrTnp0dXIyZTd5NDMwQ2ZJOFcvSDczWEpuQVFBQXdQWVFkZ0VBQUhnelBSK3dmdFZ4VzcxSHRhelNlZHJZb2llVzUzZ3RnMGkzSjM3djl4cnhkWkhrdU9PeDNlaXdEYU9NQUFBQWdOY203QUlBQVBDYWFxMDdTZDd2dExtejlIdllQVXR5WjZLWDVUTG9zckJDeDYrVWNwVGtnK1YxbTZLZTdVYzlSeGw5MkdrN3F3end6V3V0ZSs0cUFBQUEyQTdDTGdBQUFLL3ZzT08ySG5YYzFzMzBhNnhZcFVXU3R3VmRwbVhad0hNOTB3eTh6Tk92QWFsbjRHMDN5WDZIN2F4NmxORTFkeFFBQUFCc0IyRVhBQUNBMTlkcmhORkZWdjlRK052TTBxL1ZZWlVXYVkwdTU1Ymw5Q3dEU3JlWGEzMXFlcllnOVd4MytWbUhiWnd0UDFibDUrNG1BQUFBMkE1dk9RWHdhcGExeUZjL0xyMmJaT2ZLcnhkSi92M0tyNThtU1NubHFiTUlBTEF4Znk3czFlaHduSDRoZ0R0cGdaY3AyWWlneTVXZk5YWmVXRnN2L3F4eG11Ui92M0Q4NTBrV1V6MEh0ZFozbHNkd044bG5FMXVEKzBsdXBFL3J5c255ZXZmNDJuTWp5Y01PMjNtVzFpYTFDdGQ4ZHdJQUFJRHRVSndDK0hhMTFubmFYNWE5bTlYV1U1K24vUVhsM3k5Zm4vb1hxQUFBay91ejR2MGtuM1RhM045a3RlMEgzMlkzeWQ5TjdGS2Nwd1ZkRmhOYlAxZC8xdGpMNmg3U1gvNnNzVWp5OWZKbmpkT1JuNHQzOHFkanMrWnBnWmNwT1Z2ZXB6M2NTSEt2MDdZK3p2cGJwVlo5dmQ4enlnd0FBQUEybjdBTFhGRnIzVW55ZmxyMThiWDg2YitlWExkRld2dkxiN1cvQUFCTTRzK09mOHlmTnYydHk3TzBCODQ5M0V0N2tENFZrd202RFB5enh1bVZueldlak95OHZCaDB1ZFF6MExFcUQ5S24zU1ZKL21mNnROOGNMNDlyU3NmemFTbmx2dTlTQUFBQXNObUVYZGg2TC95bDgvc2oyYTN6SkUrUy9LMS9rUVlBTU1vL1E4NlQvR09uemZWb1ZraW0yZW95NmdhSGtmNnNrZVhQR28rR0RyNThSOURsMHMyMHNWcFQwYlBkNVU1V04vcm51MXdrK2U4ZHRyUEtvTjNUVXNwMTM2a0FBQUJncy8yRlU4QzJxclhPYTYxZkpQbGpraTh5cnI5ODNrbHltT1FmYTYxL3JMVit0UHlMY2dBQXhxSFhueDNQMGlmb2tpUzNKbllOYm84MTZITGxaNDEvRytIUEdwZnI5emUxMW4rcnRYNVdhOTBiNEJ4OVg5QWxTUjZuWDFQS0t1eW1YelBTbDUyMk0wdHkwR0U3WDYvd3ZhNzVGZ1VBQUFDYlQ5aUZyVk5ydlZaci9WM2F2OFE5VE4vNjhOZXhsemEvL0krMTF2dEQvRVUwQUFCLzV1ZWR0dE1yNk5MeklmMHFmRjVLT1JyaHp4cnZ2L0N6eHRqdEpQbG8rYlBHRjdYV2E1M08wOHNFWFM0OVNCdjVPaFc5UW1ObkhjL0xUenBzWTdIaU5YWXRBQUFBd0VZVGRtRnJYQW01L0M3VC9KZGVPMGsrU2Z1TDZNODB2UUFBRFBibnlyMGs4MDZiNjlYZU1LVldsNmVsbExzai9GbmpqMGwrayttMlNod20rVjJ0OVhmTE1WM3JPbGV2RW5TNTlIRmF1R01LZWdiSHZ1cTBuUjdOTG1kSlRsYjRmbE85RHdFQUFJQ1hKT3pDeHF1MTd0VmFmNVBwaGx5K3llVy92cnp2Q2dNQWROZHJKTTFKK2p6Z24yVTZyUzduU1Q0WTBjOGFWd1AxZXh1eXZxK2xqVlA5WXRXdGtxOFpkRW1TaTdUQXkxVDBDbzg5VzU2YkhsOGo5anRzWjVYdExqLzFyUW9BQUFBMm03QUxHMjBaQnZuSDlIc2cwZE5Pa2s5cXJYOVUwUXdBLzQrOXV3ZVI1TXpUUmYrOGc0eUJJOWdjV0RneUZpYWJsWEU4bGVCNlowSFoxbzZuYXM0NjExSzJjYTFycU50YWErbHVqclZXdDR5MXE5cTYxOWhEbCtBYWM2ek9CaTJNc2RBbEdHT01YcFFEWS9RQndlWkNINUFoZUs4UlVlcFNUWDlVVlVaRVJtYitmdEQwaktUS3lQaEh2Rkh4OGNUL2hVRU5OWVhSVUYxZC9tNkxhbitybExJYXdYWEdwTlo2bE4wSzFGODBUeE42dWQ5UnphNGJkRG56SXNrL2JVbnRQc293M1o5ZVpiaXB6djUyZ0dWODIrRm51VVlHQUFDQUhTZnN3azZxdFI3VVdwK25tZlpuMTZmN21hWnBOMjVxSXdDQS9zOHpKeG51SWVwUUQ3SC8yNWFVLzBFcFpUR0NmZUF3eVhkcHdpQzc3aXhnLzN5ZHFZMDZDTHFjK2VkMDIvMmpUME4xZC9tWGdaWXpSSGpudE9PeGVoQUFBQUJnWndtN3NITnFyWGZTZEhQWnR4dGJkOUs4ZVRtekZ3QUE5R2FvYzYyaHBpZjVUWm9wU3NidXRKUnlmOFBYR1pOMmV0UW4yZjFBL1VVSHVXYVhsdzZETG1mK1lhQ3gwVVhOUHRxaFk4WEhBNnpQcXpRZGZMYnRlQTBBQUFCc2dMQUxPK1BjemVlSGUxeUdhWm91TC9mdEVRQUF2UmhxQ3FPaHVqVnNRMWVYVlpKYkc3N1dPTWp1VG85NkZmZHFyVTh2MjFHeWg2QkwwZ1FpL25GTDZqWFUrQnFxQzlTMmRYZjV4SzhzQUFBQTJGM0NMdXlFOXViejA3ajVmT1plcmZXSmFZMEFBRG8zRzJnNVF6eTgvcmo5TTNaZmxWS1dHN3pXbUtjSnVrenQvaitOZ2UvZU4wVk1UMEdYOCtQam15Mm8xVzhHV3M1UTRiZ2h3aVBmYnVIeEdnQUFBTmdBWVJlMjNybWdpL200Zis0d1RaY1hnUmNBZ0k2VVVtNGt1Wm5rVWJydFFIRGVVTk9TYkVOWGw0MU9YMVJyZlpqa3lKNy9aeVpwcGpXYXY2VnVmUVpkenZ4VHhqK2QwWWNaSnZBeTFESGpiNFlZOHgxKzF0VDFNQUFBQU93dVlSZTIycm0zTE4zQWVyT0RYT0t0U3dBQUxxK1VzaWlsM0MybGZKcmtWMm1tMkRsT3N1eG9FZDhPdENwL3N3WGx2cnZCYTQyakpIZnM4ZTkwVkd1OWM2RnVRd1Jka3VSbGtzZGJVS08vSFdnNVEzUzYrVEQ5ZDRONjFXN2JMcStKQVFBQWdCMGs3TUxXYW9NdTNySjh2MG1hRGk5dThnRUFkS3lVc2lxbG5KUlNicmRkWDI0a3VaM2tKTW5xbWg4N3hFUHIzNlI1Y0QxbXg2V1V4UWF1TXlhMTF1ZEo1dmJ3UzNuWUJvT0dETHFjK2Vja0wwWmVuNE9CYXZMdGdPdlR0eTY3dTh3TVVRQUFBTmhOd2k1c0pVR1hLeE40QVFBWVFDbGxXVW81THFYY0txWDhLc21uU1I0a1dWenlJMTZrMjY0R2IvTmZSMTdLVlRiUTFhV2Q4c1FVcVZjM3I3VSt5YkJCbHpQL3RBWDFHYUtMMGpjRHJjc25BeXpqMzdicyt3SUFBQUFiSU96QzFoRjB1VGFCRndDQWdaVlNUa3NwOTBzcE4wc3BKYzJVUjQveTlzNEZwd044clE4ei9pbU12aXFscklaY29LREwyZzZUL1AwR2xuczYwTGhaeDM4YllCbXZCcXJERU9PankyNDlVME1UQUFBQWRwT3dDMXVsRFdvOFZJbHJPd3U4VEpVQ0FHQjQ3WlJIZDBzcG55YjVWWm9wajQ2VExOdi81RjhHK0JwakQ3b3Mwd1NDaG5ZVVFaZDEvU2FibWY3cEgwZGVsNCtTZkR6QWNvYVl5dWpEOU4vQnA4dlFqakVOQUFBQU8wclloYTNSQmpTZXBnbHNjSDJUSkUvYU4xY0JBTmlRVXNxcW5mTG9kaW5sUnBvcGo0Ym96REQyS1l3ZWJLQ3J5MUdhemlTczc0czBvWmNodlV6eTI1SFg1Vzk3L3Z4Vmt2OTNvSFhacXU0dXRkYVpZUWtBQUFDN1I5aUZyZEFHTTU1RTBLVXJCMjA5QVFBWWoxY0RMR1BzVXhndFN5bkhBMTlyM01sbXVwSHNzci9QOEIwMUhtL0JOVmpYeDRzL0pmbDlrbS9hS2ROK215YjAwcmUvSG1BWnBqSUNBQUFBM2tuWWhXM3hNTm9QZDIxV2E3MnZEQUFBb3pGRXNIdnNVeGc5R0hKaGJjY0gwNlQyNDcrbi8rbHV6aHQ3ZDVlUDE2ekhqKzA2L2lISjcwb3AvMXBLZVZGSytiNlU4dU81LzI0eHdMb01jVzMrdnpyOHJLbmhDQUFBQUx0SDJJWFJxN1hPNDAzTHZ0elQwaGtBWUJUbnZCK2s2YnJTdHpGUFliUWFzcXRMTzAycWJvZjkrVEJONEdWSVkrL3VjdFd3MmZkcE9wejhheW5sbTFMS0gwb3BMMHNwUDd6alo1NE5zQjRmRDdDTUxxZDArOHh3QkFBQWdOMGo3TUtvdFRlZ3ZXblpyeWZ0TkZFQUFHek9VT2RqWSs2VytOWEF5enVLYVZMNzluR1MvM3ZBNWIxTXR5R0pybjN5bm4vL0tza3l5V2twWlZGSytYMHA1VStsbEt0TWNiYllrV09KYVl3QUFBQ0FkeEoyWWV6Y2dPN2ZwSzB6QUFDYlBTZnIyMEdHNlI1elhZK0dXbEE3bmVmTWJqZUl2OHV3SWFzeGQzZTUyTm5saHlSL1N2TDdKTiswVXhNdFN5bXI2eTZnbERKVTJLZnY3aTZ2Mmo5ZG1CcUdBQUFBc0h1RVhSaXRkdnFpbVVvTTRyRFdlcWdNQU1DSXpnVVBhcTM3Tk1YTUVDR1VNWGQxT1Y3bkFmOFY5NjFwa250RzJhRCtQc01GclU3VGRIZ1pxNE1rZjBqeXUxTEs3MG9wTDBvcDM1ZFNmdXh3R1lzQjF1TS9EN0NNRngyTyt3UERFQUFBQUhhTHNBdWoxRTZyWS9xaVlUMDBuUkVBTUpKendYbVNwOW12RG45RHJPc25JMTcvSWJ0eDZHbzR2SS9TZEhnWnl2OFljUzErWFVwNVdVcjVvY2RsUEJ0Z1BUNGVZQmxkVG1Ya1doY0FBQUIyakxBTFkzVXZia1lOYlpya2pqSUFBSnRVYTcyVFBadktzdFk2Vk1lTHNYWTJXSlpTRmdQVmVoN2RJemZsaXpTaGx5SDhkc1IxR0dML0cySXFveUdPSi85N3krb09BQUFBREVqWWhkRnAyNG9MWFd6R3ZiYitBQUNiT0E4OHluNTI5OXYzS1l5K0dtai8wajF5OC81K29PVzhTdkxOU0d0d01FQkh6ZE9CMXVXakxWcVB2ekQ4QUFBQVlMY0l1ekJHOTVSQS9RR0EvVkZybmRSYW55ZVo3MmtKOWozc2NqTFFjdTVFOThoTk94aHdYL3lmSTY5RGIwb3B5eVNyQWRhajc3RExxejA1QmdJQUFBRFhJT3pDcUxSZFJlWXFzVkZ6M1YwQWdBSFAvdzZTUE0xK1A0Z2NJdXp5eVVqWC9iUjlNTi8zZmpaSjhxVVJOd3BmRExTY2I5SnRXS0pMc3lIRzFnREw2UHU0L2NKd0FRQUFBTjVHMklXeDBWWEVkZ0FBOWtTdGRSWkJsMlNZYmlNZmozVGRIdyswSEYxZHhtUEk3aTVqbmNyb3N3R1dNVVRZNVQ4TnNJeVhIWDNPek5BREFBQ0EzU0xzd21qbzZqSXF1cnNBQUgyZis4M1RCRjBtZTE2SFh3NndtSTh6VFBlWTZ6Z1pvTWE2dW96UFVOMWR2aDNwK2c4Ujl2bmpRTWVXdnIwMFhBQUFBSUEzRVhaaFRPWktZSHNBQUx1djF2b3d5WkZLSkVtR0NMdDhOTkoxSDJRS28vYThWbGVYY1JtcXU4dFlPN3RNQm5pNVlJak9Ma01jV3pxYmlxcnRKZ1lBQUFEc0NHRVh4dVFMSlJnVmI3OENBSjJxdFU1cXJVL1NUQ2xEWTUrbk1GbzRyOTFyZnp2QU1sNWxtTkRIZGZRZDl0bVZzTXUvR1NvQUFBREFtd2k3TUFxMTFzTWtVNVVZbFVrN3ZRQUFRQmZuZTVNMDB4WWRxc2JQZkREQU1qNFo2YnAvN1RwanIvMG13MHl2dFpkVEdaVlNWa2xXQTZ6SFIxdTB6emtXQUFBQXdBNFJkbUVzUGxjQzJ3VUEyRTIxMW9NazMyV1lhVXUyelJBUCswZjVNTHFVc25BK3UvZCtNOEF5eHRyWjVaTWRXZmVQdG1nZHBvWWNBQUFBN0E1aEY4YkNHNzRqM1M3dFc5Z0FBTmZTZG9wN21tR202OWxHUTNSMkdXUFlaVEhBdmpkSk1yZUxqZG9RVXhtTk5ld3lIV0FaT3JzQUFBQUFPMHZZaFkxclc0dDcrREZlZ2tnQXdIWFA4KzRrT1hLdTkwNTlkM1laYXplZFo4NWpTZkp4aGdsTGpESHdNc1RZSEdJS3A3NjMzOHNPUCtzVFF3NEFBQUIyaDdBTFkvQ1pFdGcrQU1CdXFiVWVKWG1vRXUrczBSQmRYVDRjNmVvUEVUNHdoZEYyK0pzQmx2SHRTSThCMDU0WHNkcUIvYVBMc0l2Z0pRQUFBT3dRWVJmR3dCdVh0ZzhBc0NOcXJaTmE2L09ZUHVZeWhnaWlmRHpTZFI4aTdES3ppMjJGL3pyQU1sNk1kTjJuT3pET2RFc0JBQUFBTmtMWWhZMXEzMlNicXNTb1RXcXRCOG9BQUZ6aTNPNGd5Zk9NZCtxY2ZmU2ZSdmlkVnFXVVpjLzc0aXk2T0d5TElZNFhMMGU2N3E2Rmg5MStqZ2tBQUFDd1E0UmQyRFFQUXJiRFRBa0FnSGRwd3dWUDQrSHRWUXp4NEhXTW5WMTBkV0hvNjhLOTdPeFNTbG5zeVA3eGNrdjJNd0FBQUdCQXdpNXMybWRLWURzQkFOdXQxanBQRTNUeDFqeVhNVVRZeGZucmRqbllrZjN1cXY3Q3RnTUFBQUM0bmcrVWdBMXpZOHgyQWdDMldLMzFLTWxjSlp6SFhjRi9PSC9sZ2s4R1dNWXI0eE1BQUFCZ2QranN3cWE1dWJjZHBrb0FBSnhYYTUzVVdwOUUwR1VkKzlvSlo5SHp2am1OTGtQYlpvanB0djdOZU50YUx3d1JBQUFBNENKaEZ6YW0xanFKbTlEYnRMMW1xZ0FBdE9jRjB6VFRGaDJxeHFoOXVLZnJMVkMvbmZ0cTMvdXJ6aTdiZTZ6NTN4Mysvbko4QUFBQWdCMGg3TUltdWNtMFhRU1RBSUN6QjRYUG5jdHRoWS9IK0tWS0tRdlhHV3hnZngxamQ1Q0piYWZtQUFBQXdQVUl1N0JKYmpKdEZ3OE5BR0RQMVZybmFUcTZPSTlqekg2dEJGdnBZeVhveFVvSkFBQUFnRjBrN01JbUNVOEFBR3lKV3V2OUpFY1JkT25TUHRaeU9jQXlwbmF0cmRUM1ZEZ3Y5clN1MzlxMUFBQUFnRjBrN0FKYzFpZEtBQUQ3cWRaNmxPU2VTdENCNVFETEVNamFUdis1NTg5L05kTGpxNWRBQUFBQUFLN2hBeVVBTHNsREF3RFlNN1hXU1pwcGl6eU0zVTRIMXBzdDhwSHJMTjdpbFJJQUFBQUFGK25zd2licEZBSUFNRkp0dDRIbkVSd0FZTE5lS0FFQUFBQndrYkFMbStRTk5nQ0FFYXExenRKMGRKbXFCckJEWGlvQkFBQUF3RzRRZGdFQUFINVNhNTJuQ2JvSUp0T0hsUkt3UWNJdUFBQUFBRHZpQXlVQUFBQ1NwTlo2bEdTdUV2VG9XeVZnZzM2ZjhRV3VCTUFBQUFBQXJrSFlCUUFBOWx5dGRaTGtTWktaYWd5bmxMTG9lYnZhbnZCei8xQktXU29EQUFBQXdQWXpqUkdiNUEwMkFJQU5xN1ZPMDB4Yk5GTU5CdkNKRWdBQUFBQUE2eEoyWVpPME1BY0EyS0JhNjBHUzUwa09WSU9CVEpTQURmcEJDUUFBQUFCMmc3QUxjRmxMSlFDQTNWRnJuYWNKdWdnZkFQdEMyQVVBQUFCZ1J3aTdBSmYxUnlVQWdOMVFhNzJmNUVnbGR0N0tlZ003UVBjeEFBQUE0TThJdTdCSkN5VUFBQmhPclhWU2F6MUtjazgxOXNLcDlXYUxtT1lXQUFBQWdFdjdRQW5ZSUc5Y2JwZUZFZ0RBOXFxMVRwSThqVGZrMlN6N0g1djBveElBQUFBQTdBYWRYZGlZVW9vM0xyZUxjQklBYktsYTYwR1M1eEUwWVBNbUF5emptVEp2cFJjRFhJTysyc082Zm1iWEFnQUFBSGFSc0F1YnRsU0M3U0NjQkFEYnFkWjZtS2FqeTFRMUdNaysyWGZnUlVoN083MVNBdHNPQUFBQTRMS0VYZGcwQVlydHNGQUNBTmcrdGRaNWtpY1pwcHNHSTFOS0dlczVYTjhkaGx4anVEWjhFNEdNL3J6WW91KzZ0TGtBQUFCZ053aTdzR25mS3NGVzhNQUFBTFpNcmZVb3laRktNRUo5aDYrY3UyNmZsd01zNDBmamJXdjlkVmNmVkVwWkdtNEFBQUN3RzRSZDJMU0ZFbXlGWjBvQUFOdWgxanFwdFQ1Tk1sY05NczRwZlhydDdGSktXVVgzaG0welJFQnBYenU3SE96QU9ueG9pQUFBQUFBWENidXdVU051cmM3UDJVNEFzQVZxcmRNa1Q1UE1WSVBXR0x1Yy9OcjVLeGY4MndETCtFR1plMkY2S0FBQUFHQWpoRjBZZzRVU2pOcHArM1lzQURCaXRkYURKTSt6RzIveHM5dUcyRWRObDdwbDF4d0RMR1B2UWhsdEFMSnZMK3krQUFBQXdDWUl1ekFHWHl2QnFDMlVBQURHcmRZNlR4TjBtYWdHRjR4eE9zb2h3aTRuTnYzV2VKVmhBaFA3MklGa3VpUHI4YkZyV3dBQUFPQWlZUmZHd0kzb2NYdXNCQUF3WHJYV2gwbU9WSUl0MjI5N0RieVVVcFpKbGlxOUZiNFpZQmsvbEZKK1ZPcGV2QnhnR1I4cU13QUFBSENSc0FzYjE5NklQbFdKVVZxV1Vtd2JBQmloV3V1azFucVU1STVxOEE2TGtYNHYzVjA0TThTVVU2LzJ0TGF6QVpieHYrekNBQUFBd0NZSXV6QVd1b2ZZTGdEQUpkVmFKMG1lSnBtckJ1K3hHdW4zK3N5NUxLMGhPcnU4VXVhdDlYR0huK1ZGRGdBQUFOZ2h3aTZNaGJjdXgrbFlDUUJnWE5ycFg3N0xNSjB4MkhJajd0STNHMmpkbC9hQ1VmdHRoZ21pclBhMHZrT0V5dm8reG5RNWhkRi9HSElBQUFDd080UmRHSVYyS2lPQmwzRlp0TnNGQUJpSld1dGhtbzR1RTlYZ0NzWVllSm5XV3FjRExNYzF4cmo5eTBEWG0vc2FkdG1GM3hVZkdpWUFBQURBbXdpN01DWmZLWUh0QVFDOFdhMzFUcEluRVhUaDZwWWovVjR6NTdSNzdXV0dtY0pvdGNjMUhxSUQySXVlUDcvTGFZd1doaDBBQUFEc0RtRVhScU9Vc29nMjQyT3hMS1Y0Q3hZQVJxTFdlcFRrb1Vwd1RkK085SHYxUHNWSzI2bHdZUmNZcGY4NTBISyszOVBmRzlPQkZ2WEtyZ3dBQUFCc2dyQUxZL05BQ1d3SEFLQlJhNTNVV3A4bW1hc0dhMWlNOUhzZE9yZmRhLzg4MEhMMnRiUExkSUJsdkJoZ0daOTArRmxMd3c0QUFBQjJoN0FMbzFKS09ZNGJVSnUyYkxjREFMQkJ0ZGFESkU4enpGUXY3TGJUa1g2dlNidWY5MzJOc1hDTk1UcS96VEFkUVg0b3BleHI1NUVoZm5kc1ZXM2JUazhBQUFEQWpoQjJZWXk4ZWJsWmQ1VUFBRGJyWE5EbFFEVllWeWxsbGZHR1BiNXdqYkdYSGcrMG5PLzN1TWEvSG1BWlEweVIxdFh2d1pWaEJ3QUFBTHRGMklYUmFidUtMRlJpSXhhbGxCTmxBSUROcWJYT2t6eFBNbEVOdWp6UEcrbjNHbVFxSXgwa1IrVzNTVjRPdEt5WGUxem5BL1g5bVZORER3QUFBSGFMc0F0ajVjM0x6ZERWQlFBMnFOYjZNTW1SU3RDRGIwZjZ2YVpEVEdYVXVtMDMyTGhYR2E2cnl6NVBZWlRzUnRpbHkzWFEyUVVBQUFCMmpMQUxvMVJLV1NRNVZvbEJQU3FsZU5zTkFEYWcxanFwdFI0bHVhTWE5R1F4NHUvMjVZRFhHQXU3d2tiOWp3elhEV1J2cHpDcXRjNEdXdFNMbmovL3d3NC82MXZERHdBQUFIYUxzQXRqZGpmZXZocktNcnJwQU1CRzFGb25TWjRtbWFzR2ZXbER6V005dHo1c3g4RlExeGhzeHNzay96emc4djYweDdVZXFxdEwzNTF6UHU3d3M5eGJBQUFBZ0IwajdNSm9sVkpXMFdwOEtMZmJlZ01BQTJxbmIva3V3enlZaE1WSXY5Y2t5ZUZBMXhpbkVmTGVsSDlLLytHSU02dFN5Zzk3WE90UEJsakdFQjE2L3JyRHo5TEZGQUFBQUhhTXNBdWpWa281aWVtTSt2YWdiZWtPQUF5bzFqcFAwOUZsb2hvTTVObUl2OXVYQXk3clVack9oZ3pubS9iUFVGN3VlYjJIQ0ZBT01TM1FSeDErbGpFUEFBQUFPMGJZaFcxd045N0M2c3VpbEhKZkdRQmdXTFhXTzBtT0l1akNzRTVHL04wT2FxMnpJUmJVZGpTOFpYY1l6S3NrL3pqZzhuNG9wZXh0MktXZEVteUlzTXVMQVpieGNZZmpmbWtvQWdBQXdHNFJkbUgwemsxblpKcWRicm5KRHdBYlVHczlTdkpRSmRqQWVmVXk0KzV1OE1XQXRUQ2QwWEQrSWNOTlg1VG82akliYURsOWgxMCs3dkN6Rm9ZaEFBQUE3QjVoRjdaQ2V6UDZ0a3AwWnBYa1poc2tBZ0FHVUd1ZDFGcWZKNW1yQmhzMDV1NHU4MXJyZE1CcmpQdnhFTHh2anpOc2w4NGZrL3hwejJ2KzJRRExlSlgrUTBXbU1BSUFBQURlU2RpRnJWRktPWW5BUzFkdXR3RWlBR0FBdGRhREpFOHp6TlFTOEM1ZmovejczUnQ0ZWJmaVFYaGZUcE1jRDd6TVA1VlNmdHp6dXM4R1dNWldUV0dVNUkrR0l3QUFBT3dlWVJlMlNpbmxPTVBmTU4wMXQ5dmdFQUF3Z0ZyckxJSXVqT2Q4ZXBGeFR3ODZkSGVYczZrOWRUenMxb3MwMHhjTmFlKzd1dFJhSndQOXJ2bDJnR1Y4MHVGbmVkRURBQUFBZHBDd0MxdW5sSEk3QWkvWGRic05EQUVBQTZpMXp0TUVYU2Fxd1lpTVBmZzhhSGNYVTZaMjdsV1NmMnovSHBLdUxzTjBkVW1HNmV6UzVUUkd3aTRBQUFDd2c0UmQyRW9DTDljaTZBSUFBNnExUGt4eXBCS00wTmluTWhxMHUwdDdmV0hLMUc2OFNuSTN3NFFoenR2N3JpNnR6d1phVHQvaGtRL1RZZGlsbExLMGF3QUFBTUR1RVhaaGF3bThYSW1nQ3dBTXBOWTZxYlUrU1hKSE5SanBlZlJKK3N4YnZnQUFJQUJKUkVGVXhqOXR6OE1OMU9VNEFpL3IyRlRRSmRIVjVjemhBTXQ0a2Y2NzluUTVGZFBDYmdFQUFBQzdTZGlGcmRZR1h1NnF4RnV0a3R3VWRBR0FZZFJhSjJtbUxUcFVEVVp1N09lSGg3WFdnNkVYS3ZCeWJac011dndRWFYzU2RrT2FEckNvSWFZRStuakx2aThBQUFDd0FjSXViTDFTeXFNME42UlhxdkV6eXpSQmw0VlNBRUQvMmdmejM2WGJOOUtoTDQrMzREeDJJdytwQlY2dWJKTkJseVI1b2F0TGt1RkNsdDhPc0l4UHR1ejdBZ0FBQUJzZzdNSk9hRzlJMzB4elk1emtKTW1ubTNwQUFBRDdwdFk2VDlQUlphSWFiTW41OCtrSXo1MVhTZTZXVW01c09yQjlMdkFpVVA5dW13NjZyRW9wMzlzTVNaSXZCbHFPemk0QUFBREFLQWk3c0RQYUcvYWZwZ2w2N0xPN3BaUmJwUlEzNWdGZ0FMWFdPMG1PSXVqQzl2bHFSTi9sVVpJYmJkZkdzVnhmSEtjSjFEdXZmck1YU2Y3UGJDN29raVIvc0JsK21rTHZZS0J0L3FyblpYeWM1TU9PN3hNQUFBQUFPMGpZaFoxU1NsbVZVbTVsUDkvQ1BFM1R6ZVdSUFFFQWhsRnJQVXJ5VUNYWVVzY2orQTZMOWh6MjdoakQydTJEOGh2UkhlS2kzNmJwNlBKcWc5OWhXVXI1d2FaSU10d1VSdjlma3QrbENSbDluNlNQNmFPNkRPMHM3Qm9BQUFDd3U0UmQyRW50VzVqNzB1VmxsZVJCS2NXMFJRQXdrRnJycE5iNlBNbGNOZGppYytaVk5oZDRXU2E1VlVxNU9mWnoyRFpRLzJtYTdqUDc3bFdTZjJ6L2JETG84cXFVc3JRNWZ2TDVRTXQ1VmtyNW9aVHlzcFR5KzFMS04wbit0UjNQWFlYVi9yckQ3K3Y2R0FBQUFIWllVUUoyWGEzMU1NMGIxOU1kWEwyVE5OTVdMVzFwQUJqczNPSWd5Wk1kUGJjWW0wVXA1YVl5OUw0L1B4OXdrYXNrWDVWUzdtOXB2V1pwcGkzYngvSC9Jc2svSkhrNWd1L3lyNldVVjBid1QxTVkvZnNReXlxbGxFdDhuNzlNTTYzZkpOZWJqdWovU2ZKUlIxLzVWaW5seEY0Q0FBQUF1MGxuRjNaZUtlV2tsSElqVFp2dFhabmFhSkhrWmlubGxxQUxBQXluZmREOU5JSXU3TTY1OG1tR20rcmpPTTJVUmZlM3VGNkxOQjBrOTZuTHk2c2tqNVA4WHhsSDBPV0ZvTXZQRERXRjBja2x4OGozcFpRWHBaUi9UZkpObWltUFhpYTV6SlJUSDZXN29FdWlzd3NBQUFEc05HRVg5a1lwNVZHU0cwa2VaSHRETDRzMElaZWI3WTEyQUdBZ3RkWjVtcURMUkRYWU1ZOEhPb2U5dlF0QjdYWmFvN3RKYm1iM0g2Wi9reWJrY2p5UzcvTjlLZVZQaHV6UGZEblFjcjYreGxqNXNaM3k2QStsbE44bCtWMmFEa0hmSi9ueERUOXkwT0gzWFhveEJBQUFBSGFiYVl6WVcrMERxeS9UN1EyMXZoeW5hZmZ1elRRQTJOeTV3OU1rTTVVWWxHbU1odHUvdjB2M0hZdVdTUjZVVW81M3RHWWZKUGsvMG5UVytDTGRkcVRZdEJkSi9pbmpDdlA4a0diNm9oK04ySi8yd1dtUzd3WmEzSTJ1d3lQdEZFem4vL3ozSkgvVDFUVjBLZVcydlFRQUFBQjIxd2RLd0w1cWI3b2YxMW9QMG9SZURqT3VON1ZQazN5VjVLU1VzckxGQUFEbzBZTWtSeDEvM3FNZFA0LzlxeVMvVFBMYk5CMVEvaTdKMzJhN1F5OHYwM1Q2K2UwSXY5dnZCVjMrekh5b2E5TSt1cVMweDRkVjhsTjRyTXNYVVo3WlBRQUFBR0MzNmV3QzU5UmFENU44bGliNE10M0FWMWlrYVE5OW91VXlBSXp1UEVGbmx3MmNHK25zTXRqK1BVblRJV0xkOFBkSmtydTdmaTViYS8xbG1xNHViM3FCNURmWnZrNHZwMmxDTG1QdEpQbUhVc3BMSS9YUDlzTStPaks5eWQxMld1QSsxK1VneWZNT1AvSlRuVkVCQUFCZ3QrbnNBdWVVVWs3UzNxQnZXMExQMG9SZkR0TDlkRWVyTkRlVG42VjVrTE93QlFBQTJOQjU4S3JXK2xXU2U5ZjhpTk0wRDhUMzVaeDIrbzdyNmQrMmZ3N1NkSHI1elVqWDRWWDdQZjlIbW80dVkvVW5RWmMvMTc2b01SMW9jU2NETEdQVzViVzJvQXNBQUFEc1BwMWQ0QXJhdDgwbWVYMGo3cE5jN3UzWDB5VC9rV1RaL2prMU5SRUFiTjE1Z000dXc5UFpaZGg5L0RyZFhWWnBRaTdIZTFhbnF3VGhQMHp5TjBuK2EvdjNKcjFLTStYU3Y3Ui9qOTNMVXNvZmpNNDM3b2RQMG5RazdkdHBLZVhUTGZzZGUxeEt1VzB2QVFBQWdOMm1zd3Rjd2JtM3d4YXFBUURBanAzclhyVzd5Nk1rRC9Zd3hQM3hGZi83c3c0cXYyMy8vOStrQ2MwZlhPT3pydU0weWJkcHdpMHZ0cWpPcjdicyt3Nm03VUo2T05EaUhnK3dQdWRmS09uQ00zc0pBQUFBN0Q1aEZ3QUFBSklrcFpUN3RkWXY4dTdwVVJaSmJwZFNsdnRXbjFyclIyazZ0YXpqbS95OHE4cFo2T1UvdDM5LzFQNjVxaGRwQWlMZnBwbVc2RVcyTnl6eUtrMUhrUitOeWplYUQ3aXNJYVl3NmpxNHM3Q0xBQUFBd080VGRnRUFBT0M4QjBtTzN2RFBsMmxDTG90OUxFcXQ5WVAwMDRubHRQM3pKdStiTG1rWHU1OEl1cnpmbHdNdDUzU2dVTnRuSFg3V2NoK0RlQUFBQUxDUGhGMEFBQUQ0U1NubHVOWjZMNis3dTZ5U2ZGVkt1Yi9ucGZtckRWeERuKzVaalFWZDNxUFdPazh5R1doeGp3ZGFUcGVkWFU3c0pRQUFBTEFmZnFFRUFBQUFYSEM3L2ZzNHlZMTlEN3JVV24rWmQwL3R4UG9FWFM3bnl3R1hkVHpBMkRwTXQrR2RaM1lSQUFBQTJBODZ1d0FBQVBBenBaUkZyZldHNlVCKzhyRVM5RXJRNVJKcXJiTzhmMnFycnB5VVVsWURMT2Z6am85ZE9yc0FBQURBbmhCMkFRQUE0TThJdWpScXJaTWtmNmtTdlZrbCtiMmd5NlhjRzNCWnBqQUNBQUFBUmszWUJRQUFBTjd1dnloQmIxNldVdjZnRE8vWGRuV1pEYlM0NVJBZFVucVl3dWhyZXdvQUFBRHNEMkVYQUFBQWVJTmE2MThsK2FWSzlPSkZLZVZQeW5CcFh3NjRyS0c2dW56ZThlY3Q3Q1lBQUFDd1A0UmRBQUFBNElKYTZ3ZEpwaXJSdVIvVFRGdTBVb3BMNzR2VGREdmR6L3NjRDdTY0x0ZnAxTlJyQUFBQXNGK0VYUUFBQU9EUFRWMHpkKzVWbXFETEQwcHhKUThIWE5iSkVLR1JIcVl3ZW13M0FRQUFnUDNpeGgwQUFBQ2NVMnY5WlpLL1VvbE8vYW1VOGtJWnJyd3Z6akpzVjVldkJscE8xMU1ZbmRoYkFBQUFZTDhJdXdBQUFNRFAvUmNsNk13UFNmNWcycUpydXpmZ3NwYWxsRVhmQzZtMVRwTE1PL3hJVXhnQkFBREFIaEoyQVFBQWdGYXQ5Uy9UN2ZRcSsreGxraGVsbEIrVjRscjc0aXpKYk1CRlBoaG9PVjEzcWpHRkVRQUFBT3doWVJjQUFBQjQ3V01sV0p0dUx0MFlzcXZMS3NOTkJmUmx4NTluQ2lNQUFBRFlROEl1QUFBQWtLVFdPazN5UzVWWXl6TEpuM1J6V1h0Zm5HZllyaTVmRFJGT2FzZllRWWNmYVFvakFBQUEyRlBDTGdBQUFOQll0WDlNWTNSMTM2ZVpzdWdIcFZoUHJYV1NZYnU2Sk1tamdaYlRkVmNYVXhnQkFBREFuaEoyQVFBQWdDUnRaNHZUV3V0SFNhYlI1ZVV5VmttV3BpenExTkJocStNQnQ5Kzg0ODh6aFJFQUFBRHNxVjhvQVFBQUFMeFdTbmxaU3ZsZGtqOGswYW5relZacHBwQTVGWFRwZlA5Ykp2azB5WU8yem4xN01NUjZ0Vk16ZFJua1daakNDQUFBQVBhWHNBc0FBQUM4d1lYUXl5c1ZTU0xrTXRTK3R5cWwzRThUZXVtemU4bnhnSUdSTHpyK1BGTVlBUUFBd0I0clNnQUFBTzlYYTMyYVpLWVNnMXFVVW00cUF5TTZEa3lTZk5UKzJTYy9KdmsrelhSRk90MXNadCtiSlhtWTVLRGpqNzR4Uk5pbDFqcE44bDJISDdscXY3dkFGUUFBQU95cEQ1UUFBQUFBM3E5OXNMNnF0Uzd6T3ZUeXl4MWU1VmRKL3BUaysxTEtqL2FBamU1N2l5U2Z0bE1CUFV3MzB3RU4yZFhsWHNlZmR5TG9BZ0FBQVB0Tlp4Y0FBTGdFblYwMlFtY1h0dUhZOEdHYTBNdGZaamVDTHo4a2VabmtwUzR1bzkzbkprbnVaUDBBeVZCZFhTWnB1cnBNT3Z6WW0yMEFDQUFBQU5oVE9yc0FBQURBTlpWU1hpVjVrZVRGdWVETEpNbUhXN1FhcXpUVEZIMHY0TElWKzl3cXlmMWE2M0dTbzF3dmlEbGtWNWM3NlRib3NoUjBBUUFBQUlSZEFBQUFvQVBuZ2krcHRmNHl6UVArcytETG1NSXZxelJURksyU3JFeFJ0TFg3MnpMSnpWcnJMRTNvWlhxRkgzOHc0RmY5b3VQUCs4cldCd0FBQUlSZEFBQUFvR050aDVTWDdaL1VXajlJRTNpWnBKbnU2Q3dNMDdkVm1xbUpYaVY1MVhZRlliZjJ0VVdTRzdYV3M2bU4zcmRmUFJpcXEwdXRkWjZyaFhBdTQ5aFdCd0FBQUlvU0FBREErOVZhbitaNlUwVndmWXRTeWsxbFlNZVBMV2ZCbDdNd1RQSTZESE5acjVLY2RXYzVDN084MHJGbEwvZW5TWktIU2VaditVOVdTVzRNRlhxcXRYNlhic011eDZXVTI3WTBBQUFBb0xNTEFBQUFiRWpiQWVhSDl2OStyeUtzdVQrdGt0eXV0WDZWSnZReXUvQ2ZmRFZnMEdXVzdydTZQTGFWQVFBQWdDVDVoUklBQUFBQTdJNVN5bW5iR2V0V2ttWDdqNWVsbFBzRGZvMTdIWC9lYVR0bEV3QUFBSURPTGdBQUFBQzdxSlJ5a3VTazFuby95ZWxReTIyN3VzdzYvdGl2YkZFQUFBRGdqTEFMQUFBQXdBNGJ1S05MMG4xWGwxVXA1ZGlXQkFBQUFNNll4Z2dBQUFDQVR1anFBZ0FBQUF4QjJBVUFBQUNBcnR6cjRUTWZLU3NBQUFCd25yQUxBQUFBQUd2cnFhdkxjU2xscGJvQUFBREFlUjhvQVFCY1hYc2ovOHhCa3NtRi8rU3pqaGU1VFBMSEMvOXNjZjdmbDFLV3Rnd0FBQnZVUjFlWEI4b0tBQUFBWENUc0FnRG4xRnFuU2M3LytZczBZWmFrKzdkVTEzWHZ3bmMvKzUrblNWYnRuMi9idjArVHJFb3BwN1l5QUFBOW5FZlAwazlYbDZYcUFnQUFBQmNKdXdDd2QycXRrelFCbG9Na3YyNy9uclovZHNIQnVmOTllR0hkazlmaGwyV2FiakdMNkF3REFNQjYrdWpxOGxoWkFRQUFnRGNSZGdGZ3A5VmF6MEl0bitSMXdHV3k1MldaNU9kdjNkNXJhNVcwd1pjMEhXRk9TeWtMZXhFQUFPODU1NTZuKzY0dUMrZWlBQUFBd05zSXV3Q3dNOW9waUdaNUhXeVpxY3FWelM3VU5HbTZ3SndtZVpZbUFHTXFKQUFBenV1anE4c0RaUVVBQUFEZVJ0Z0ZnSzNWZG0yWkpmbXMvWHVpS3IwNDY0Z3piK3UrU3RNQjVsbWFOMjZGWHdBQTl2ZWMvSDY2bnc1VVZ4Y0FBQURnbllSZEFOZ2E1enEzZkI3aGxrMmFKRGxzLzV5RlgwN3lPdnl5VkNJQWdMMDRQNThrK2JLSGo5YlZCWUJOLzQ2YnBnbHp6dEpNOTd3VXhBUUFHQmRoRjhaOFFYRVFEN0tIdE5LZGdaRWVDMlpwd2kySDZmNk5VYm94U2RQMVpkNXVzOU0wblY4ZU82NEFNTEx6aWttYWJtVU1aeWtJdTlQdTlYRGR2ckd1TGgwY0kwNUxLU3U3QmNCV255OGV0ci9mRHQ3dzc4NWU5cm5yZU04ZWo1SFpkWDlXWUF5QXJoVWxZTVFuVFUvVEpPY1p4cUtVY2xNWkdNbjRQOHpyZ0l2UTIzWmJwdTM2VWtvNVVZNjlHY1AzMDl3Y0JEYnZRU25sdmpMOGRIeWFKWG1xRXZaQk9obFBCMG1lOS9EUk56Y1lkbG4zR0hIVFF4eUFyZjI5TmtseWxMYUw3WHVza3R4Mm40TTlIU3YxdWo5YlN2Rk1Fb0JPL1VJSkFCakpoZEpocmZWSmU4SDBKRTJYRUVHWDdUZE5jaWZKazFycnY5ZGFIN1lQUmdBQTJHNFBlL2pNaGJBSWw3aDJuS29DR1BjOWVKTExCVjJTNW43VmsvWmxMUUFBTmtUWUJZQ05xYlhPYXExSHRkWi96OVZ1S3JDZEptbUNMODlycmQvVld1KzdVUTBBc0pYbjhZZnBweFByWGRYbFBmdmUvVFNkRjREOStwM3p2T2RsM0wvbTc3VWo5elVBQURaSDJBV0FRZFZhcDIzSTRiczBMY0xuMGNGbEgwM1RUSFB6WGEzMWFhMTFyaVFBQUZ0eFBqOUpQMTFkamtzcHB5ck0yL2E3V3V0UlRKVUoremIyNzZSNU9XclM0ekltU2I2ODVvOVBISmNBQURaSDJBV0FRWnhOVTVUa3UvWkd3RlJWYU0zU3ZBMzE3N3E5QUFDTVhsL244ZytVbHJkY1MwN3kra1VKWUgvRy9sSDZDVmRlTk05NllScGRpZ0VBTmtUWUJZRGV0Ry9mblhWeE1VMFI3M1AyUnRSMzdmUldNeVVCQUJqVitmMUJtbWtwdS9hb2xMSlVZZDZ5enoxUGNxQWFzRGZqZmxKckhUTGc5dG1hUHo5eC93SUFZRE9FWFFEb1hEdFYwVkYwY2VINjVrbWV0bE1jQ1VrQkFJekRVUStmdVlxdUxyejV1dkl3VFVjWDE1T3dQK1Arb0IzM3N3RVgyOFVVU1FKNUFBQWJJT3dDUUdkcXJiTnpJWmQ1ZXB4VG1iMHhTL0trMXZwZHJYV3VIQUFBR3p2WHY1TitIdVo5VlVwWnFUQnYyTitldUthRXZScjNzelJCbDIwTWpqaFdBUUJzZ0xBTEFHdHJReTVQWXg1MStqTk5jaVQwQWdDd2tmUDlhWnFPalYxYmxsTHVxekFYOXJlakpBOVZBdlpxM00vVDNGUGExdERJcWEwSUFEQThZUmNBcnUxQ3lHV21JZ3hnbXRlaEYvc2NBTUF3anRMUEE4aTdTc3U1Njh0SmUzMDVWdzNZcTdIL01QMU1rM2RacHlQNURBQUFya2pZQllBcnE3Vk9oVnpZc0dtU3A3WFdwMEl2QUFDOW52dmY2ZW1jZjFGS09WRmgydjNzd1BVbDdOMjRuOVJhbnlTNXMrR3Y4dldhUDM5YVNsbmFvZ0FBd3hOMkFlRFMycERMVVpMdjRpWWs0ekJMRTNvNWF0dnJBd0RRNGZsLytwbStLRWx1cXpEdGZuWVdkRGxRRGRpYmNUOXB4LzNocHI5TEtXV1JaTEhHUnp5d1JRRUFOa1BZQllEM2F0KzJ1Wi9rZWJTVVpwem1TWjYzK3lrQUFOM29hL3FpQjk2Q3A3M1duTGZYbVJQVmdMMFo5d2RwWHFJYVU4RHRicExWTlg3dVdKY3lBSURORVhZQjRKMXFyWWRwYmo3ZWl4dVFqTnNreWIxYTYzZW1OZ0lBV1BzNjRINzY2ZWE0VFBKSWhhbTFQa3dUcUFMMlo5elAwM1IwR2RYOXBWTEthYTRlZUZtMFB3TUF3SVlJdXdEd1J1MlVSVStUUEVreVZSRzJ5RFN2cHpZUzBBSUF1UHExd0VINm03N29iaWxscGNwN3Y0L05rdHhSQ2RnN2ZYVU1XMXNwNVRqSnpieC9TcU5WbWc1bE4vMCtBd0RZckErVUFJQ0wycmM0djR4T0xteTNlWkxEV3V0dGJZVUJBQzU5TFRCSmY5MDJUcHlYQVRCV2JZZVhtMjBnNy9QOGZLcWxWWkpuYWFZdUVuSUJBQmdCWVJjQWZ0Syt3WG1VY2MyYkRPdVlKSGxTYXoxSmN0c05LUUNBOTNyWTAvWEFLcVo3QUdBTGxGSVdlWCtIRndBQU5zdzBSZ0FrK2FtYnkvTUl1ckNiRHBNOGI5L09BZ0RnemRjRWgybTY0L1hoUVNsbHFjb0FBQUJBRjRSZEFQWmNyZldnMXZvOHlUM1ZZTWROa3p4dGcxMEFBUHo4dW1DYS9xWXZXcFJTSHFreUFBQUEwQlZoRjRBOVZtdWRKM2thM1Z6WUwvZHFyYy9iQnpvQUFEU2VwSmtDc2crbUx3SUFBQUE2OVlFU0FPeWZXdXNrelZ1Ymg2ckJuanBJTTYzUnJYWXViZ0NBZmI0K09FcC9BZmdIcFpSVFZkN0lOZCtzM2E2ZjVNK0RUTXNrZjB4eW11VFVGRk9kMXY2Z3JmczB5YS9idnk4NlRmSWZ1MWIvZHI4N2Z5eFpqVzM4dDl0bjFtNmJOeDMzbmlWWnRkdGxzUVUxbjdicmNaRGtMOTV4TEQrL3p5MGRsM2ZxZUhPMkQ3enRlSE4ydkYrMisvWHBqdFZnZG01TVgxei9WWkp2dDJuZEwvd09lZGVZZnRiK3ZXakh0Ti9qQU93bFlSZUEvYndRZnZLV0MyRFlKNU0wMHhyZDFWWWZBTmpqNjRONWtubFBIMzlhU3JtdnlwZmFCdGU1UGx1V1VvNHZmTlpoa2k5eXhSY2JhcTNMSkNkSnZ1cmlnZGtsMXVuWGEzejg5QnBUa3g3MytTQ3dyZnZuYmQwdjB5RnA5b2I2TDVJOEhpSmdzY2JVcm0vYjU5NjY3clhXdE92MmRic2RWcGY4anRNMWprMC8yOTduUHV1TFM0eTEyWVh2ZnBMazY0dnJQWUpqeG1kWDJOL2V0TSt0em0yWGs4dHVsL2Q4cjluRjVXeDR2MTFjZGp5dGNSenUvZmh5NFh0TzJ1MytlVnZyeVRVK28vTnQzL2YrY2ZGY29yMjMrZVVseDhEaGhYVS9HZXBZZTQxdGVwWGYzV2UxdkhmaDk4alhwWlFUWjFjQTdJdWlCSXhWcmZWcG54ZEl2UEVDOEtZeTdQeTRtaWQ1bVA3YWs4TzJPazV5ZDZpYlBIdHdyTG1mOW9ZTHNIRVBQR2orMmZGcGxtWUtSK3lENUtlSFJVOTd1ajVZSmZsMG05NDA3dUFZY2ZNNkQ4L1d1UC94MDNWOCs5MlAwczFMRFl0MjdDN1dxT1hZN3VuYzdQckJadnVBOGs2YUI2NWRqcUZsa3E5eWhXRElOYjU3dmU2K3NlWSt0MnJYN2RINzFtM044WGl6bExKb3Q5RzlkanQxY1V5NzFIZnZhWnROMjMxdDNzTXhlOVZlRTY4VmRodmhkZUNsejBIV1BHYmQ3RHM0Y1M3Y01lL2g0OCtDam4ydnc3WDNqMUpLT1RjT0hxYWJUdFhMZGg4NTN1QTV4eGM5YmRObGtzZDlIYS9XK0IzeTA3WUVnSzc4UWdrQTlrT3Q5V0dhRzFHQ0x2RG41bW02dkJnZkFNQytYQjlNMG5SODdPdjg1NEdXK3NOc3gvWmE3Mm02Njk0NWE4K05Iem8vZm12Tjd5ZjVMczJEMjY1ck5FM3pNUGQ1KzhMS1dPOHZYR2VmT3d1ZlBHMGYzdmY1SFdkSm5xZWJvTXY1Ny82OC9leWh4L2gzN2JyME1TYlBnbHZmcmRIMWgzNjIvN1FONGp4UGYxM1lEdHN4K1hUSWZmc2F0WmkzZGVocVN2WnBrcU4ydmFjRGI5TW43VEcwcjIwNmJZOVgzNDMxOXdnQWRFWFlCV0QzTDR3bjdZWHhIZFdBZHpwSWMrUHlRQ2tBZ0QzUTU5U21DOU5FRG1LUzVtRlpYOWQ2ZHpKQUtHSExycTluYVI2MjloRnl1V2lhMXc5aUp5T3F3VkVIKzl4WlY2bStmSkZ1QTJBWHQ4dlRJVUloUFFSMkx1TmVyZFYxOGViSDJmbVEwMnlneGM3YWZmdG9iRUhIOXJqVDF3dDhzd3dVTHF5MTNrbTNnWjNMbkNjYzFWcWZDSzhDc0t1RVhRQjIrK0w0N0FiU1REWGdVcVp4UXg4QTJQM3JoSWM5WGlPc2t0eFM1VUVjdEgvNlhvYno0L3cwQlVkZkFZcDNtYVY1TzM4TTIyQ1c3am9SOVBuZ2RUNUFMZTYxRCtENzJ0L21HOXJmalB2Tkgydk83dVZ0NnFXMWVYdk1tWTJvTEgyUDZiTlF5THpIN1hxVXpVMHRmOWE5WjJxRUFiQnJoRjBBZHYvaTJNMEp1SnBKZXhOZ3JoUUF3QTVlSjh6VDd3TzAyNldVbFVydjVQbnh3UjZQbTZNMDNWdzJ1UTJldTBZWm5Ya2ZnWmQyT3grTllOenI4TEtaMzlGanVKZTNyL2RGZWdtOHRNZUpUZGZ5ckp1eERpOEE3QlJoRjREZHZqaDJBUVBYMC90YlBRQUFHN2hPbUtYZkI2aVBTaWtuS3IyejU4ZDdPUTNDU0I1U25uR05Najd6THJmSlNJSXU1K253TXR5eDVtemJqK2s0ZTlSbkI2T1JPdXB5bngvWjc1Q3pFSlA3eFFEc0RHRVhBQmZId051NW1Rd0E3TXAxd2tHU0p6MHU0alRKQTVYZWFkTTBVekRzMDdnWjAwUEs4OWNvd2dmajhyQ0w2VUhhN1RxMllNRmtoTjlwRjQ4MTh4SFhlYjZIZ1pkT3dwMjExanNqL0IxeWtNMTJLZ09BVGdtN0FMZzRCdDVONEFVQTJQYnJoTE9IbFgwRjRsY3hmZEcrbUxjZGd2WmgzTnpQK0I1U252Rm0vcmgwRlFoNU10TDFPMmpIQS8wY2F3NHovbnQ1OHoyN0x6TE5tbE0rdGdHNHNRWkU3K3pMNzNJQWRwK3dDOER1WEJ6UEkrZ0NmUkY0QVFDMjlUcGhrbWFLMHo0N1Fkd3RwWnlxOXQ2NHR3ZmpaamJ5OVp4a3ZNR0lmVFZiNStGeEd5YVpqbmo5dmhTdzZ1VllNOFp1UG05enRHY0JpWFgzK2JGdlY5MWRBTmdKd2k0QXUzRngvRENDTHRBM2dSY0FZQnM5VEw5QmwrTlN5ckV5NzVYWkxqL3diQjl1UHRtUzdlRDZaRnp1cmJIUGZUbnlkWnRrelU0WHZORzJUVVArWkk5Q1Q5ZmU1OXZma1dQL1BUblQzUVdBWFNEc0FyRGwycHRiYmpqQU1JN2FGc01BQU50d3JYQ1VmcWRoT1UxeVY2WDMwaGM3dkc3M3NqMFBueC9xdGpFcXMzYnFrcXM2M0pKOTdndWJ1TlBmMGZmVGJ4aTFENU9NZDJxZU1lM3oyekpXdmpRU0FkaDJIeWdCd0ZaZkdNK2pvd3NNN2FqV3V0U3FId0FZK2JYQ3cvUWJkRmtsdVZWS1dhbjJYanBNY25zSHg4MDAzYjVNY3ByazYvWi9MOU5NVS9NWGFkNzQ3K0loOTFubmdmdDJ5VkdOalVkWC9Ka3VIaml2a3B3a2VkYnVhK2NkSlBrazY0ZHFwclhXV1NsbFlUTjNjcXpaMXFEQnZOYjZlRS8yZ3l2djgyMEFzWXZ6citXNU1YM3hYR3QyYmt5dmRieXF0VTZjeXdHd3pZUmRBTGIzd25nZVFSZlloRW1TcDdYV213SXZBTUNJcnhYNjd2NTR1NVN5Vk8xUk9rM3l1UDE3V1VwWnRsTVZUTk84YlQ3cjRweTQxbnBZU2puWnNkcmQ2K2h6SHFTWjRtdjVqbkU2YlpjM1gzTlpYMGJZNVRMT3dpQmZKMW1WVWhidE5wZ20rYnpkRGwxMFYva2lWd2k3dEEvR0R6clkzeDY5NDRIMW9sM1czVFJkT2RiWjV6NC8renpXUHRaMDJjMW4yVzZYaTJHbmFWNkhJcVlkZi85Tjd3ZkxDMlA2dE5aNmNHRk1kK0dxKy95NnYyTlhTZTYrWjRySXhibmZJMC9XUEliTTJqb0N3RllTZGdIWVFvSXVzSEdUTkhOVmYrb05HQUJnRDY4Vkh1eGd5R0VYbkhYYldWejhGK2YrMlhFYmZEbksrZzgrUDh2Ykg1RGR6YnNmNUI3aytsTmhYR2Y2ck5OTGpKMXAxbjg0ZXBvbUNQYmU1YlZCbU51MTFzZHBIbFplOThIM3BOWTZmOCtEMGI2ZEQxZ2xyN3ZZVE52OVpKWnVIN1JmMVhHYWg4ZXJOMnlEWlpKRnJmVkJtZ2Y0NndZRkQ2N1lLV0cyNXZJK3ZleExHTzEzdWwxcnpScjcrc0Y3NnJ4NHo4OC9YV05kYjE3eHYxK085UGQwRjhlYTgrdjQ0QkxqLzI1NzdMK1hiZ0tQc3cxMytibGJTbm4waG4zOHREME9uYlJqK3FpRDliM3F6MysyNXZhOGVka3djUnRtdmRtT3Erc0dYdDcxdXh3QVJrL1lCV0RMdEc4cENMckE1azNUM0ZENFZDa0FnSkZjSzh3SHVGWTRLYVhjViszUldTVzVjWmtIN0cxSGkwK1RQTTk2QVlTRGR5emo5RDM3NmxycjJ0TUQxblduZ3poTjg1RHlTbUg0ZG51Y1BheThidURsOHpSQmc2R2Rwbm5vL0tidHNXei9QbTYzK1dHYUxqU3pnYi9qR3grS3YyRTdyTklFQXY2WTZ3ZXh6bytOeGJyajZKTHJkcDF1bzNkei9iREY3QjAxWE9ZOUFaTjF4djRPVFpzejcraHpIcFZTN2w2eGZvdGE2NTBPOXZHazZXSzBpVzF5NnpLQjIzWi92RmxyZmJMbThmMmc1Ly8rNHJvdHJ6Z3VWbTNYcHFjRHJSOEFqTW92bEFCZ2U3UkJsNmNxQWFOeFVHc1ZQZ01BeG5DdE1FLy9RWmZUSkxkVmU1U3VGTEk0Ni9DdzVqSm5PMWJETDlmNDJWV3VFWFE1dHoydTA2M212TU4yT3B3aEhaZFNQcjFzQUtHVWNsSkt1ZG11NTFEZE1VOHVFM1M1OEQwZlpmMEgrRmQ1ZUh6ZExoQ3JxNjdiaGZGLzdYVnNPNU53ZlY5MDhCbTNyeEowZWNNKzNzWHY4dmtHamp2WDZTeDNPMnQyK1dtNzR2UXgvaThlcjA2dnVVM1hPV1laendCc05XRVhnQzNSWGtDdTA5b1k2TWU4ZlRNS0FHQlQxd3J6OUI5ME9ac2l4eFNPNDNOOG5RZGs3Y094WStYNzZlSDlkSTJQdUx2dTJHaW5JVm11OFJHSEE1WnNVVXE1ZmMzMWZKU21PK2JwQU4venVnR2lkWU1BUTl5M09kbmdkNXc2YWx6N1dIUFFRZjBlckR0dFdmdnpYUVJlaGp6dUxLL1RXYTQ5Tmo4WWNMeGNkMnc5MjlCdWFUd0RzTlZNWXdTd1BaNjZBSUhSZWxoclhWejNMUndBZ0RWOU9jQXlibDYxdFQ2RCtXcU5uLzA2YTB5cFVXdWQ3Y2pVSXVzOHNGMnQrK0Q1bk1kSjdsM3paei9MY09HbHRSNlN0OGVTdnFlRFBiN3VNYXVVc3F5MW51YjZIUnF1MHEzbGJxNzNjSHk1eHJnOWlLbEx0dkZZa3lTblhVMGxXRW81cnJWK3Z1WjNHdks0czg3dnVwTTBVemRkTjRoeWtNc0h6RzVlZDl1dU1hYTlnQVhBM2hKMkFkZ0M3VFFwYmtUQXVEMnR0ZDd3dGpNQXNBRTMwNFRqKzdwbXVDM1VPMXJMZGJaTktlV2sxcXFLMTU5S0prbE9yempGeGJ1c2N5MHhHNmhXeDFzU2ZQdTZnNS92L1Q3TWtNZld0bVB3UE5jUFZMSFpZMDJ5M25SbmIvdThkY0l1c3dGcmQ3TEdPRnZWV2hjWm9CUE5rQUhRdGl1Wk1RM0FYaE4yQVJpNXRpWDVYQ1ZnOU02bUdydXBGQURBa05xSE9IMEZYaDUwMkxXQzdwMTA4Qm1MRFB2QWNveldHVGV6a2RSdk90Qnl2dDZTYmJybzRPZTM5Z0Z5RzJ3NWFLOVREOUtFTFBaOW5JL0JPdHRnMFhXUW91MWlkSnpyMzNlYzFscW5Bd1RnVGp0WXhyY1pkdHFscnNmMHREM09uLzNwYkV6dlVKYzJBUGFRc0F2QXVDOWtEcEljcVFSc2pWbXQ5WDVYYllVQkFDNnJwOERMc2ZPYTBmdTJnODlZS3VOdVRCbFl5SVNRQUFBZ0FFbEVRVlE4MEFQTGJlanl0T3lnNCtacXhOdjViQnFpYVpKZm45dC9KOUVWT0NQZmJ1dDQzTk5YVzJzNnUzYi82L3YzeUhJa245SGJzVHV2dzJtZjVQVjBTOU9ZMGg0QTNrbllCV0M4RnpwblhTS0E3WEt2MW5xaTFUOEFNTFNPQXkrTFVzcHRWUjI5WlFlZjhjYzl2L1lXRHJqYWNXYTVEK09pbEhJNmxpbSsybzRPaDBrK2orNHMyMnl5N3UvbG5zYjB1dFBaSGZUMTNjN1pxV0JuKzN2bmkzWTgreDBFQUd2NGhSSUFqTlpScFBkaFd6MXBBMnNBQUlOcXV4bmN6SHJkRjA2VDNGTE5yYkJTZ3JYdDBubjd6T2JjblhGUmE1M1hXcDhtK1M3SlE5dDM2MDNYMmFkN0Rwb3RIRU43SDgrVFd1dWRXdXQzU1o0bnVSTkJGd0JZbTdBTHdEZ3ZnTzVraStlUkJUTE5Gcy92RGdCc3R6VURMNmRKYm5Zd0JRakRiR3ZkQk9IUGZidk5YNzdXT21zZmlCOUZ3R1hYN2hOYzE3NGY2eGRiUHFibmVSMWFteG9LQU5BZFlSZUE4VjBBSGJRWFA4QjJ1OVBPdXd3QU1MaHJCbDVXU1c0SnVnQnNScTMxWVpxcDZLYXF3WUFFSi9zWno1TzJPOU5SZE1BQmdGNEl1d0NNejVFU3dPNk1aOU1aQVFDYmNzWEF5eXBOUjVlbHlnRU1xMzBvZmphMUNRek5mWXZ1eC9SQm1tNHVNOVVBZ1A0SXV3Q002MExvZnN6WENydGtHamNyQVlBTnVtVGc1U3pvNHMxdWdNMTRHdmVEZUx1K3d5aFRKZTVPclhYYWpta2hJZ0RvbWJBTHdIZ3VoQTZTM0ZNSjJEbjMydkVOQUxBUjd3bThDTG9BYkZBN2RaRnJ4dDIzenUvWnZ2ZVBxYzNUcVNjUmRBR0FRUWk3QUl5SDZZdGdkejFVQWdCZ2s5NFNlQkYwQWRpZ1d1c3N3M1lEWFNZNVRuS2krb05icmJtdkhQUzBEMDZ5WHRobGFkUCtySjczTTJ4NDdUVEpvNndYcGdLQXJmV0JFZ0RzNVlVUU1LeFpyWFZlU2psV0NnQmdVMG9wcTFycnpieWVMdU91b0F2R1JWblVXcS83NDh0U3lnMVZaQTFkZC9oZDVuWDRZSlhrMi9aL0w1S2N0c0hIcy90UWg4by9xSFYvMzM2UmZnSU5oeDNzYzd6MlpRLzd6ZXBjcmYvWS92L1RDMlA2cWRJRHNJK0VYUUEyckozSDlVdVZnSjEzcjlaNmNuWWpBZ0JnRTg0RlhtYWxGRy8yUTJPVjYwMDVNYTIxSGdpTmNSM3QvYUJaQi92dWNaS3ZTeWtMVlIzOTc5L3JIbXVTSnBSeXQ0ZXY5c1dhNjJXL2V6Mm01MWwvK3FKbG1zNUxqLzF1QVlEM000MFJ3T1k5akhsY1lSOU1NMng3YWdDQU55cWxyQVJkNEdmV2VhRG81Uld1YTkyT0dpZEpicFJTN2w0amNQQ0o4bS9FWW8yZm5iWmhpczYwMDJqTk5uVHMzRVdmcmZuekQwb3BaMlA2cXJXZEtqOEErMGpZQldDRDJvdEtiV05oZjN6WnpvY05BQUJjejdTSHozeTJ4cy9PMnc0ZGNGWHJCRTRXcFpSYmEzUU8zYnA5ZGtmRzJiTTFmLzVoVi9jVTJzODVXdk5qRm9ieHo4elcrTmtIcFpUN2EyeEx2NGNBMkV1bU1RTFlyQ01sZ0wweVNkUE42YlpTQUFEQXRVeHJyYk9PcDg0NFNYSnZqWjkva3VUVGRiNUErN0J5clU2UTEzMVF5dWIyNVRWKzl1NGErOW8weWNFVzFtdWVaTnYzOFpQMm5zQjFUWkk4WGZkNDAzcVk5UU1Tend6anpzYjBvelYrMW91VUFPd3RZUmVBRGFtMTNvblVQZXlqZWEzMVFTbGxxUlFBQU95cDFaby9meThkZGhRb3BaeldXcGRyWEtNZjFGcVBTaW5yaE5xUHN0NER5OU5zZnhDQUsreXphNDZmYmZSbHJmWFJHdDFzeHJEZGxyWFcwNndYTmpxb3RSNGx1WHZkV3JRL1AxOXpkWmFtUk96TVlzMzkrcDRTQXJDdlRHTUVzQUh0RzFzdVJHQi9HZjhBQU95dE5SL1VKOG1zMXZya2ZkT2ExRm9QMjRlNmwvRjR6ZTgwcjdVK3ZjNVVLKzEzWFBmTi9NZjJyUDF4M1NsOTJ1bTA1eHY4Nm9zMWZuYVM1R203RHU5YXg0TmE2OE5hNjFpNzEzelZ3V2ZNMjFvY1hIVy9xYlUrN1dnZmNNenB6c0VheHdJdlV3S3cxM1IyQWRpTU8rMUZPckNmZEhjQkFJRDFIQ1k1ckxVdTh1ZFRhWHlXNXVIaDJYWDNaVHF1SEdmOVVQb3N5Zk5hNjFkSjN0dUJvbjFvL3pEZFRDbHpiSmZZcjJ2S1hMR1RUeHVNZUxMbDYzMlFKdVJ4bWlZNDh4L24vdDBuN2IrZnR2Ly82NUd1dzlsVVJwTU9hdkc4MW5xYzVLdDNoUWpiYmY5bHVnMDZPZVowWjNLZDZmbHFyZk9zTnkwV0FHdzlZUmVBZ2JWZFhiNVVDZGg3OTNLNW0rNEFBTENMRm1uQ0lldWFkZkU1N2ZRaXgxbi9ZZkJaSjlkNzU0STR5L1pQMGp5Zy9uV2FzTTYwbzFvZWIvUFVMbHp2ZXJMV3VpeWxIRi9tUDI2N1A5ekw1bCs4ZXRiUnVEOUlOeUd4d1pWU1ZtMGdycXVPci9NMEw5UXMwMHhuOXUyNWYzY3hBTlNWWXkvdmRPNUpyZlhtWlRxZm5lc1lma2ZaQU5oM3dpNEF3eHZEelFWZzgzUjNBUUJnbjUybW00ZmVYWHFRYmpzZnpBWmF4d2QycDYyMGJ2RGpxTmI2UlpxdUhpY1gvMlhieldPVzVvV3I2WWpHL2Q0cnBkeHZ0MTJYMjJYYS9qbnMrZXV2a3R5MUZkOW9zY2FZbnVSMXA1N0hiK3J5MG5ZRCs3ejlQZVhlTWdBaytZVVNBQXlublZOWjZoNDRjMDhKQUFEWVU4L0c5b1hhSVBxMkJVZDBXTmhlWFFRL1ptazZRdFJhNjcvWFdwKzJmOWNrejlOTWNUSWQwVG92YlBhZmJHdW4xd2M2U2ZVNnB1ZHBwdXA2MDVoK211YStzcUFMQUxTRVhRQ0dOVmNDNEp6RHR2MHNBQURzbGJZVHhSZ2ZtRDdLOW5TZjBHRmh1eTA2L3J4Sm12RExaTVRqZnBYa3hLWlAyczRkajdadG55MmxQTEwxM3VyeHZvMXBBTmcwWVJlQWdiUVB0TDlVQ2VDY1NYUjdBZ0JnZngyUDdRdTFEK052WjV4Qm5JdHU2N0N3dmRwdGQ3eUhxLzdZMXYvSmcyeFh1TzZXVGZiT01YMmFaS2tTQURBY1lSZUE0V2d6Q2J6SkYwb0FBTUNlK2lvakRKVzBEeXpIM2pIbHVPMk93M1o3c0c4cjNPNjNwemI5VDRHbm14bC91RzZWNUtad25URU5BR01qN0FJd0hGMWRnRGVaMWxybnlnQUF3TDRwcFN6VEJGN0crTjJPMDNSNEdhTnRDT053K1RHd2o5UEMySDlmN3dOakQ3eWNCVjBFbEM3L3UwT3RBR0Fnd2k0QUEyZ2ZaT3ZxQXJ5TjdpNEFBT3lsVXNyOWpQVEI0RWdETDZmUllXSFhiTk5VTmwyTnJVWDJNK1R6dG5xY3BnbThMRWYyMVFSZHJtZGJwc0lEZ0swbjdBSXdqSHRLQUx6RHJOWTZWUVlBQVBiVXpZdzc4SElyNDNod0tlaXlnOXJ0dVltSDQ0c05yL2ZkSk1mMmdKL3FjWnJrMHhFZEM4K09ONEl1MTl1V20raGV0RkI5QVBhTnNBdEF6MnF0c3lSVGxRRGV3MVJuQUFEc3BYUFRlSXcxOEhLU3pUK0VQb21neXk2UGdiUE9Ia050MytOU3lzYW56aW1sM0k3QXk4K09oYVdVVDlOMCs5bWtSeEYwV1hkYkhtZll6bUMzTTk2cDl3Q2dOOEl1QVAwelBRbHdHWE1sQUFCZ1g1MEx2RHdhNmZkYnRnK2g3MmJZZ01BcXlkMVN5aTFCbDUwZkE2ZEpicVQvVU5XRE5tU1NOQ0dxVGEvMzdRMk1xN0h2Qy9mVEJPd1dBeTk2bVNia2N0ZnhwcFB0ZU54dXgyWFB2eU51bDFLT1N5bkxqRzhxTEFEb2xiQUxRSTlxclpONGdBMWN6cVRXZXFnTUFBRHNxN2Fyd2QwMER3ZTdlZ2kvNnZnN1Brb1RTSGlRL2gvT0h5ZTUwUzZUL1JrRG4vYTBmeTNUQkJudW4vdG56MGF5M21majZyakQ5VjV0K2I1dzJuYmZ1WlgrQTFETE5JR0pHNldVaFpIWTdYWnNmNmYxY1J4ZkpQbTBEZFdjLzJjQXNEZUVYUUQ2TlZjQzRBbytWd0lBQVBaZCs1RDNWcHFIMzNkejlZZDNwMmtlTE40cXBmeXFoKyszYWdNRFo5K3Z5d2ZSeXpSQmh4dWxsTnU2Syt6dEdEamJ2N29JdlN6VGRITjVVNUJoTWFKMVhyVmRYbTZrbVk3bDVJcnJ2a3dUbHJtZDVGZTdNZ1ZQS2VXa0RVRGRUTGRob0xRMXZ0WHVHOGRHWHEvNzl0MjhEblN0NnpSTk9PbG0yODNsdkdjcURzQmUvWjVWQXNhcTF2bzB5VXdsQnJObzN4YWcyLzM0dXlSVGxRQ3U0RmZiZmtPNzFuby95VDJiRWtiaHdZVzNkL2Y5M0d5VzVLbEsyQWZoTGNlSVNaS0ROVDdpOURybmNiWFdneVNUNnl5d2l6ZndhNjNUTmE1YlQ0YzhkejFYcTR2ZitUVE5BK0RWcGg1d3QzV2NKZm1zL2Z1eU5WMjEzLzlaa3BNaHZuLzcrekNiMnVjR0dJL0xOendBSHJKT25lK0hiUmZRejl1YVhLWXVwKzJmcjBzcEp4MnY1OURqL215OFg5d25sdTJmdGZmTGRZN0RROWZqM1A3d1dWdVBxMnkveGJuanpXSkQyM0VqTlI3RE1lWENkem04NHUrTDAzYjdQWDdYOGVXYTYzbWwrbTdEN3hBQTlvZXdDNk1sN0RJNFlaZnU5K0dESk05VllxK2MzV0E5VGZJZjUyNGt2UGNpOGkwWGltZi83Qy9hQzlWMWI3NnpIVzV2K3h0VndpNHdLb0lHZi83N1Z0akZQZ2d3NUgyQmR6MUFQOVc1aFRYT2FkN0l3K1M5M0IvZWQ3K28wN0FHZzI2LzFhNTBLUUtBUG55Z0JBQzkrVUlKZHRZeVRhRGwyelJobHJWdkdyemxadFRpTFJmQjB6UnZmY3lTL0RwWGUydVE4ZnM4M2JTMUJRQUFOc2dEU25yY3R4YXF3TG45WVpVUlRVbUY3UWNBUXhGMkFlalBvUkxzakxOV29ZTzNlWDNMUmZBeVRlRG1wd3ZoOWkyUVdab1dxSWNSZnRucVkwZXRkZUlOVHdBQUFBQUFnRGNUZGdIb1FUdDM3bFFsdHRwSlhzK1p2aHo3bDIyREVTZnRuN3R0OTVmRE5CMkdUSDIwZlE2anV3c0FBQUFBQU1BYi9VSUpBSHJ4dVJKc3BXV1N1MGx1bEZKdWxWSWViZXVjeHFXVVpmdjlQMDF5SThtakpEcUZPSVlBQUFBQUFBQnNQV0VYZ0g3TWxHQ3JIQ2U1V1VxNXNjMEJsN2RwZ3k5M1N5bS9Tbkk3VGFnSHh4QUFBQUFBQUlDdEpPd0MwTEZhNjBGTVliUXRqdE4wY2JsZFNsbnN3d3FYVW81TEtUY2k5REoyazFyclRCa0FBQUFBQUFEK25MQUxRUGUrVUlMUk84bnJrTXR5SHd0d0x2UnlONlkzR2l0VEdRRUFBQUFBQUx5QnNBdEE5MlpLTUZxbmFhWXJ1cld2SVplTFNpbVBrbnlhSmdDRVl3a0FBQUFBQU1Eb0Nic0FkS2pXT2sxeW9CS2o5S0NVOHVtK1RGZDBGYVdVWlNubFZwb3VMNHpIUVh0TUFRQUFBQUFBNEJ4aEY0QnV6WlJnZEpaSlBpMmwzRmVLZHp2WDVjVzBSbzRwQUFBQUFBQUFveVhzQXRDdHo1UmdWRTdTQkYxT2xlSnkybHJkU0RQbEU0NHBBQUFBQUFBQW95UHNBdEN0UXlVWWpRZWxsRnVsRkYxS3JxaXQyYzBJdkl6QlRBa0FBQUFBQUFCKzdnTWxBT2hHcmZVZ3lVUWxSdUYyS2VWWUdhNnZsTEtxdGQ1TThqVEpnWXBzekxUV09pMmxMTGZzZXg4bldlemc5bmhvUEF6dU5NbGRaVmpMVWdrQUFBQUFnRjBqN0FMUW5aa1NqSUtnUzBmYXdNdnROSUVYUWE3Tk9jaVdQYXh1d3puTFhkc1F0VmFkb29hM0txVXNsQUVBQUFBQWdQTk1Zd1RRblUrVVlPTUVYVHBXU2psTmNsc2xOdW96SlFBQUFBQUFBSGhOMkFXZ096TWwyS2k3Z2k3OUtLV2NKSG1rRWh0ajJod0FBQUFBQUlCemhGMEFPbEJyblNTWnFzVEdISmZ5LzdOM3IxZE9KTWtDZ0NQMzdQL1ZXckFhQzZheEFHRUJqUVdvTFlDMmdNWUNHQXRhV0VCakFSb0xSbU1CV2d0VzE0SzRQNVJhTkN6UWtySWtsYVR2TzZjUFR6MHFNaXZya1ZHUlJUTEdmcjJOQ0V1NEhNZElDQUFBQUFBQUFMNlM3QUxRalpFUUhNMnNsR0tablQwcnBTd2k0bFlramlNelZYY0JBQUFBQUFDb0pMc0FkTU5FOUhFc0l1S0ZNQnhHWFNacUxoTEdHQUFBQUFBQWdHT1M3QUxRalYrRjRDamVsbExtd25EWW1BdUJNUVlBQUFBQUFPQ1lKTHNBZEVQVmhjT2JsbExlQzhQQlBjU3lvZzdHR0FBQUFBQUFnS09RN0FMUUtETUhFVEVVaVlPN0ZZTERLNlVzWXBud3dtRkpkZ0VBQUFBQUFLZ2t1d0MwTXdsOWVKTlN5a3dZanVhVEVCemNvQ2JXQVFBQUFBQUFYRHpKTGdEdEpMc2MzbHNoT0txcEVCaHJBQUFBQUFBQWprV3lDMEE3MVJZT2ExSkttUXZEOGRTbGpGVFdPVHpKTGdBQUFBQUFBQ0haQmFBTFQ0WGdvSDRUZ2w2WUM4SEJTYXdEQUFBQUFBQUl5UzRBWFRBQmZUaXpVb3FLSXYzd3B4QWNuTVE2QUFBQUFBQ0FrT3dDMEFWTGl4eU9xaTVjTW9sMUFBQUFBQUFBSWRrRm9FbG1tbncrckFjaDZBMFZkZzVQWWgwQUFBQUFBRUJJZGdGb1pmTDVjS2FsbElVdzlJYTJPQUlKZGdBQUFBQUFBSkpkQUZxWmVENmNUMElBRXV3QUFBQUFBQUFrdXdDME1mRjhPRk1oNkpXaEVBQUFBQUFBQUhBTWtsMEFPQW1sbEprbzlNcFFDSTVpSkFRQUFBQUFBTUNsayt3QzBPWmZRbkFRVXlIb25YOElBUUFBQUFBQUFNY2cyUVdnelZBSURrSlZsLzZ4aE5keFNMQURBQUFBQUFBdW5tUVhBRTdCL3dsQjc0eUU0Q2lHUWdBQUFBQUFBRnc2eVM0QWJZWkNjQkJUSWVpUHpMd1dCUUFBQUFBQUFJN2w3MElBME9SR0NBN0NNa2I5OGx3SWptWW9CQUFBQUFBQXdLV1Q3QUxRb0pReUZRVXVTV1lPSW1Jc0VrY3pGQUlBQUFBQUFPRFNXY1lJQU5qR2F5RUFBQUFBQUFEZ21DUzdBQUFieWN5cmlIZ2pFZ0FBQUFBQUFCeVRaQmNBNEZGMSthSjdrZWhGV3d4RkFRQUFBQUFBdUdTU1hRQ0FUYnlMaUN0aDZJV2hFQUFBQUFBQUFKZE1zZ3NBOEZPWmVSOFJZNUVBQUFBQUFBQ2dEeVM3QUFEZmxaa0RpUzRBQUFBQUFBRDB6ZCtGQUFENFZtWmVSY1I5V0xvSUFBQUFBQUNBbmxIWkJRRDRpOHk4aTRnL1FxSUxBQUFBQUFBQVBhU3lDd0FRRVJHWk9ZNklOeEV4RkEwQUFBQUFBQUQ2U3JJTEFGdzRTUzRuUnpzQkFOQ1hhNGxoUkZ4SHhLOXI1Nm16aVBnekloNUtLUXRSQWdBQVlCOGt1d0RBQmNyTXE0aDRHUkhqaUJpSXlFa1pDZ0VBd0VtZGU0OGJ6dUdtcFpScEQ3ZHBFTXVFK2RmZitlZFIvZlZkWnY1V1NyblRsaEVSTVNtbHpNOXNtMDVGTDJNUEFBQzBrZXdDQUJlaUpyaU1ZcG5rY2lVaUFBQ3c5M1B3UVVTOGk5MFR6SjlHeExTSDIvUjVnMnVLUVVTOHljeW5FZkhpVEtxOHZJeXZ5VHpibWtiRS9NeTI2VlQwTmZZQUFFQUR5UzRBY0ticVRlaFJMRytRWDRlS0lBQUFjR2pYMFZaSmNaU1p3NzVVcGRnaTBlVXYyeEFSSHlQaW1lNEFBQUJBVnlTN0FNQ1p5TXhoTEc4ay8xcC9WYjBGQUFDTzYyVUg3L0VxSW01N3NqMnZkN3pPR0dYbXVKUXkwU1VBQUFEb2dtUVhBRGhCbVRtS1phV1dZU3dydDF4RjJ4T2pBQUJBdCtmc3craG1lWmh4OUNEWnBWWjFlZFh3Rm04aVlxSm5BQUFBMEFYSkxnRFFVL1htK0RDK0pySThqYThKTGdBQVFMKzk2dWg5QnBsNVhVcDVPUEwydEM3Sk5Nek1VU2xscW1zQUFBRFFTcklMQUJ4SnJjNFM4VFdCNVY5cnZ4K0tFQUFBbkxSeGgrLzFNaUtPbmV6U3hUWEtLQ0ttdWdZQUFBQ3RKTHNBUUljeWMzMDVvZlhmUDYyL0RtSzNOZTRCQUlEVHVTNFlSN2ZMakY1bjVyQ1VNai9pWmozVnNnQUFBUFNGWkJjQStNYmE4a0VyMy83NVg5LzhlU1JxQUFEQW11ZDdlTTl4Uk53SkxRQUFBRWgyQWVETWZaTzRNbHI3cC9XbkV0Zi9Ed0FBUU9zMXlQVWUzdnBsSERmWjVmZVE2QThBQUVCUFNIWUI0S1JsNWlqK3VqVFFLb2xsSkRvQUFNQVJqUGYwdnNQTXZDNmxQQnhwdTJZZHZNZUQ3Z0VBQUVBWEpMc0EwSHVaZVJYTHlpdFg4WFVKb2F0WUpya0FBQUQweWNzOXZ2ZnpPRkxDU0NubElUTVhEZGRoODFMS1RQY0FBQUNnQzVKZEFPaU56RnhWYUJuRk1xbmxLcjVXYkFFQUFPajdOYzExN0hlSjFIRm0zcFpTRmtmYXhMY1I4VzdIMTk3cUlRQUFBSFJGc2dzQVIvRk5Zc3V2OWZkRGtRRUFBRTdZeXdOOHhqZ2kzaDlqNDBvcDd6UHphVVJjYi9uU3lSR1hYd0lBQU9BTVNYWUI0Q0F5Y3hqTHhKYW5vV0lMQUFCd2Z0YzhnOWcrQ1dRWHIrSkl5UzdWVGYxMTAyMTlYMHBSMWFXL3VsNWFhdEI0dlQrdlAxMWFhR1lBQURnL2tsMEEySXR2a2x0R29Xb0xBQUJ3M3NZSCtweGhabDZWVW1iSDJNaTZoTktMekJ4SHhKdWZYT3ROSStKdEtXV3FhL1JYMTRsSW1UbUtpTThOYi9HaGxIS25aUUFBZ01kSWRnR2dNM1Y5K2xWSjY2R0lBQUFBRitUVmdUL3I1cGdiVzBxWlJNUWtNMWZMMHc3cVB5MGlZbnFzWkJ3QUFBQXVnMlFYQUhaV3E3ZXNKN2dBQUFCYzRyWFJLQTZiOEgrZG1iZTF5c3BSMWFRV2lTMEFBQUFjbEdRWEFMYXlsdUR5TXRyVzRRWUFBRGdYTHcvOGVZTjZYVFlSZWdBQUFDNlJaQmNBSGlYQkJRQUE0SWZYUzZ2RWswTjdGWkpkQUFBQXVGQ1NYUUQ0cnJVYnRpOWp1ZjQ2QUFBQS8rczZscFZXRHUwcU02L3FNa0lBQUFCd1VTUzdBUEFYZGEzNWx4RXhGZzBBQUlCSHZXcDQ3U0xhRW1WZVJvUmtsNTlmMzQ0aTR0ZUlHTWFQSzVYTzY4L3ZFVEV0cFV4Rmp5MzYyTlYzOXVOWlJNeEtLZk1EZnBlcjcvVDNuNDB2c3pvRy9WNS9QeTJsTEU2MEhhNGo0bW5kNXRFRysvbXNsUExROHpGckVJOC9mRGF0Mi9SbmJiL1pDYmJkVlN5VFJuK3Q3VGZjb0wrZXhEaGRIeVJjalJGUGE1dGVQWEpPTUR2MU5sM2I5aC90ajlPNkR5NE8vSjJHYS92WDFTTmo1R3E4bUszMXVaTWNIOWYyczVlUGJIZnZ4OGdOOXJIaFQ4YVFWZDliSDBlY1E4TVprT3dDd09yRWNCekxtN1JERVFFQUFOam9XbW8xYWJDcmgxamVwTi8xT213Y0ViY0gzTjV4TENkTGRuRjdpRW1GT3VuOVBMYXJ1RE9zUDZPSWVKT1ppOW8ydjVrSU9hdjk5Zk9PTDUyVlVtN1gzbWNZRVc4MjZXT1pPYXY5YUxMSE1lalZqdVBJYXV3YXJiM2ZOQ0krUk1URHZpWjJ1eHBINnIyczEvVzlobHZ1NTlHWC9YenRvYk5kcW9TTnZubXYxVFo5NkRvWnBQYTFkenUrL01QNlBsRDNvZkVXYmZkdGYzMlRtYXRqNktkOTdWODd4bW13dG0zYm5oOE12dE9tODdWK091L2grUGh0MjQ3cW1QU3o1UjNmckk4MysyeS9odlpZSHk5ZXI0L24reHdmZXpaR1JpeVh5L3pRcCtTeXhuMXN0WDlkNzJQTXJQMy9UZVBiN09WOHVYRU0vNTl6SVFBMlBNRktEdW16WG5lUis5a3dNKzh6OHo5MkFUZ1pkMFl2NXliT1QyRDNtMDkySzhjdDZIaGN1Vy9jUjBhWiticnhQY1lIM042N2xtM2Q4M2NiWithWGZaeVAxQW1DMXZQQjBZWHNFNk8rSGpkYXowa3pjNUNaNzNaOGp5OWQ5b0VhNTMxZW4veW43dStEUG80amRYLy9UOGY3K2ZBSSs4bysyL0R6SHZwYzAzNWQ5Nkg3VStxdk85eGp6Vk5wMDQ3R3gvVzIvZGg2bkQyUjl0aHJmK3Rvakx6ZXd4aDVkZVR6aTMzdlkxOWF6Nm5yZnRBYTkvczl4ZTlkNC9jYUIvVFUzNFFBNENKdnlJNHk4Mk5FZklsbEp2UkFWQUFBQUxaMjNmRGFlWDJLdExWTS9NdExib0I2ZmZzbEl1NWpQNVZLUnhIeGgrUzl5MVluTlQ5SGZjSi9COE9JK056QlJOcXdKdDk4anNlWHVHa3hpT1hUNlY5cXRhUytHTlQ3V2ZmUjdiMnNVZDNXdTBQMHBib04rMjdEVWUxekg0K1pCTEsyM2RmeDlUN2tQdnZyK0FqYmRyZkhiZnRlbTc3clE1dXViZjlWM2Y3cnh1MjY2bWovMm5kN3JQZTMxOUV2ZzVvczhYRVBZK1JSem9WV1NYSUgyTWVHRVhHZm1YL3NtbFJXSy82MG50ZnY2NWpiRXJzdXRndjJScklMd0FWWlBUVlNMNml2UlFRQUFHRG42NnR4dEUway9CWVJVWmNsYUxtQlBEcDBSWUtleEgrUW1lL3E5ZTBodHY5TjdIZGltdjVhSmJwMDhWVDdmVU9mSDBmRUh3ZnVoNE9JK0xpdko4MTNqTjgrNzJlOTJXZHlTQWRKQWJ1NGp1V2svREdyTXJ5TTdpZmZmOVJmNzJzVmlyMG5nOVRrc3oraWZkbVNiYjJPWmVMQlZRLzJ5WC9WOFhIUVFkdTk2MkQvT21SN0RDTGkzYUg2MnhaajVIalBZK1RCdG5mUFNYSS9jaFhMNUt1N2x2UDdsbjdWZFpKcGZiK1dOdHZyMGwzUVNySUx3QVg0SnNsbEpDSUFBQUROV2l1cXJDZTRmR3A4cjFjWGRvMTdGVzFWTm1BYlY5Rk5va3RMbjcrUDdxdVpiR05jbjNZLzlvVHVJVDcvT3BZVG5ZT08yM0ExYmcyT0ZMZGpMa015UFBEbmpXTFBDVDVyaVJYSGpPbm5IaVM4aktNSEZjUFhrZ0dIUi9qNHZmZTNubzJSbzMyTWtkKzA1NzRxMUd4anA4U2VVc29zSXVaSHZzYm8rdjErQytneHlTNEFaMHlTQ3dBQXdGNnV0WWFOMTFnUHRhSkxSRVNVVWlheExCRytxK3NMaXYxcXd2aEtUK1JDK3Z5K245VGYxRlVzSng0dndWVTBWT0g1eWJoMXpLU0FZeWU4SEdONy85akhza1k5YWM5TGJOTWZ0Y2U3THZkWGJiSHhHUGw1VCsyNXFxYldoK1BlS0haTDdHbE5Ecm51S3Btb3ZrL0xkY0tzSnZCQWIwbDJBVGpQay93clNTNEFBQUI3MDFwSjVYdVZYQ1lON3pmc3V1UjVYNjkxb3g4VGpIQ29Qdjg2K2pIaHR6S3FFOHVYNExwaEdZdjFOaHpFY2FzVHJGc3RTM1ZKWStoOWx3a3ZOZG0xVDhlaFZaTEZSUjRYYXpMZzY1NjF4Y1VrdkhSOVBGaExkT2xUREs5MjJNY21IWHh1VitmMXJlT2ZxaTcwbm1RWGdQTTZ3VitWK0R2MEdzNEFBQUNYWk56dzJrV3Q1UEt0RDQzZjZlVTVCN3lIRTR5dzd6NC9pb2crSnBhOHJ0L3RFcnpwWU9MNlRSeG5hWlVmR2NieHEyQWMybjJIQ1FoOVNWeGFON2pBTmwwdFhUVHVZVnRjVXZKUlo4ZURuaWE2ckd4VnlhYVVzb2oyaEpldWxpaHR1VDVZeEYrWFhZVmVrdXdDY0Q0bitIY1I4YVdISi9rQUFBRG5kTzExSFcwVFhkKzlhVnhMaExlVUNiK3VDU0huR1BNK1ZVYUFRN24zM1hwaDU0U2pPaWEvN3VFMlhWOVF3dEpLY3dKQ3ZmZmExNm9kMTVkUTRXMnRMVVk5SG9kVzV5ekd5TzJQSzMydWlyTnRKWnRQSFh6ZXNIRS91V3FNNlVOTjNJRmVrK3dDY0FZbjk1bjVSeXlmRkhIakR3QUFZTDlhSzZqOHJCeDRhM1dYOFpuRy9FMzBld0lFT2xVckZneDcvQldIWFM0TjAzT2poc1NRTnowZlZ5OUpVd0pDVFpSNTFmTnR2SWdseHRZU1lQcytidHhkeUw1MTFYbzhxTEU2aFdTdGpTdlpsRkllSW1KKzVQUDZmVjZ6UUc5SWRnRTQ0UlA3bWszYzEvSitBQUFBNTNZZE5veTJtL0d6V3NIbFJ5YU5YL0hsR2NaOEZQMnNqQUQ3OU1aMzdKVmRreHo2UEhrN090ZHFZSTlzODNqSDE3Nk8vajlrT0x5UWlqM3Y0alFlK0h4MVFmdll6dWVmdGZySW14UHJmNXM2OWhLbCs3eG1nZDZRN0FKd2d1cUZ5eC9oaGg4QUFNQWhqUnRmLzlPYjNyVlUrS1RoL2M5eG91dGV0K09TMUtWSWhoMi83U3dpcGhIUjVYSUV3d3RhQ21mclplSnFiQVlkdE52YmlMaU5pR2YxNTIwOVRzdzcySzVYRjdpTHZkdHhPYU91azBrWGRaK2NkL3krTDgrNThlcCtOVDZScnp1SXkwa0tiRW1lTzdXS1JOdFVzcGswZnRiT3g5a096aVZVZGVGay9GMElBRTdxaEg1MWtpekpCUUFBNFBCYUo1RW1HL3lmVDlFMmtmTXlsaE5vNTNBTlBJN3VKLzFYRTR4L3J2M2RQeUppRktxbWNoN2pUTlErL2lFaXBxV1UrWGYycmV1SWVCN3RrOGJQZXpiZXJIK1hVY2Z2ZlIwUjc3ZjQveTJmUDR1SUY5OXJ1L1Z0ckdOa1M1V0xVWS9hYmxaLy9yMzJkNy9XNzlobEZZOUJMTytyM20xeExCcDFjQ3hhSmJOKytGNjFoRnJkWWhUTEJLU1d6eHBIeE0wWmo0OWRKWThzSXVLaG5uUE5WMjFTMjJGWXg3YnJEdnJlT0RQZi9tQmZ2dlF4Y2pXR2pVNjBIejU2VGw5S21XZm1RN1JWV05uMXZQNTVCL3NIbkFTVlhRQk9SRDNaVnMwRkFBRGdPTmRrclU5SVB0VEtMVDlWU25tSXRpZTl4enMrdGQ1SFhUNFJQWTJJWjZXVWY1WlNYcFJTN3RaK2Jrc3BUeUxpbDFoV1RWam84ZXpRdjZiUlRaV0dVY05yRjdGTWtuaFdTcG44YUlLMWxQSlFTcm1KaUNleFRERFlWUitXNlpsRXhKT3k5R3p0cDBURWkrZ3VHZWZwbHYvLzF4MC9aMTdIcWtmN1VpbGxVc2V0WGNlc3F5TWZMeFoxelAybGxQS2tsSEx6emRqOG9wVHl6MWhXdEpsMitMbmJWclI1M2tFZi9hVWVhMlkvYU10WktlVjlLZVdYYUt3RzBiT0tTNHUxOFhIUndYWjFzVzJyUG5kVHg4TFpOKzJ3R2g5WDV3UjlPcGZaeHhqWlZWTEQ4eVBIWmg3TFpKdG5aVTF0eDV1T3g1QnRLcTU4YXZ5czZ4MzJsVUcwSmJOdWRNMENmU0haQmZmZjFSZ0FBQ0FBU1VSQlZPQUVaT2JyV0NhNkRFVURBQURnS0ZvbnV6NXM4WDliSng3R1ozQWRQT3JvR25nUnk0bVBaNldVNmMvK1l5bGxYa3E1aStYRWlDZGErWmw1TEplVytlV2JDY1JmNnVUYXMxaE91aTIyN1BkWHNYc2xnVlZmMzdqdjFrbmVsaW9Rd3lNbVM4eGpPWUY3ODVNRWdvZFN5clBvcHRMRmFNdi92MnRjdHBwa3JQLzNSY04ySGF1aTFVUGRmKzRlUyt3cHBVeHJPejZMYnBJUkIxc3NROUlhbzBudG85dTBhZXZFL0NpT2ExNzN1VjlxZ3VscWZQeG5SUHl6OXRmSkR1L2J1dXpXb280WmR4c21IeS9xT1VGcnZ6dFdFdkxxbVBEWUdQbWl0bGZydnJWVnYrdHd5YjVGUk56VzQrL3R0K2Q2OWR4dXNqYUd6RHVLNzhzTjkrZEpZMnkzSGE4aTJoTlJMV0hFU1pIc0F0QmptVG5Jekk5eGVtdFhBZ0FBbk5XMVdiUWxrQ3kybVlDTzlwdk1yODRnN0YwczVUS0w1V1RiZEpzWDFRbXVGN0ZNWm9CdnZhMlRhdTkvVWpsbFdrcTVqZTJyQmJWTXF2LzJvd25OUi9yN0xOcVN1NDZSTExHYXhKMXR1STJUYUU5NEdXVG04QURiTnRxaERhZTFEYWM3L0F5T3RBKzkyTFp5UU4zT1g2S3RHdEhLODMyMlNUV3ZpU3M3N2M4TjIvWnJITWQ2MHNGM0swdlY0K3VxY3NvL1k4UEtLZlU4N1BwUVk4WjMrbDNyK0hGOWhMWjR0dW41VHgwam04OTV0cXdxMU1WNTNyeHU1L3N0MnZKSlIyUElObTA2T2VCNDFYb2RNTnRsUDRGamt1d0MwRlAxYVo3UDBZK1NzQUFBQUpkczNQajZ5VGIvdVU0UXRkeG9IdFpyeWxQV2VpMjhtdWpaK1duYU9ubnlYdmRuelUxOTBuL1RQclRZc2xyUXNPRzd0ZlRWUDF2R215TzF3M3pML1hrUzdSV2JEckd0VjVuNWNkdkVtcG84OG15SG4wTlhzWHEvelQ3MHZYMHF1cW53Y3IxSnRZM0dpaHd0Q1N2VGh0Y2VzNHJJKzIzYXN2YUZUWklQeGgyTUdiT0dmdmNRYlFrTHp3L2NIcmZiYm04ZEl5ZU5uN3ZSdU5WQjh0S3F6ejNaWVR0WFk4aTg4Zk1IV3lUM3RDYXhYMjg2RnRWalIxUGlyRk05VHMzZmhRQ2dmK3FKMHNjalhad0FBQUR3VjYyVlVuN2I4VFgzamQvNTVoU0RYYStKVzYrSFg3UWt1cXlVVW01cjR0RElibkR4M3RmSndGMzYwU0lpWG1UbVk1Vjc1N0hiSlBlOHNiLy9xK0cxd3dPM3c3UWhRZU50dEUyd2pxSXRDV0ZUMTdHYzNIeUlaU0xTTkpaUDJ5OU9mQjlhVlR4cUhaY1htZmtpbGc4SlJtTjdQbXpRdjNkdDgybmpkOXZWTVpKZDMrNmFURkpLbVdYbXMwZjJ6YWRIR2pPK1BTOGJOK3pUaHpMZjlWaFZ4OGh4dzJjUER4aVBuUk9hNnhoeUc4djVsOVl4WkxyQjU4MHpjOXE0WDQ5anM2VFdsbXVXUlZqR2t4TWsyUVdnWitvYWpQY2lBUUFBMEl0cnRLdG9tOHlkYlZ1Qm9IcUk1WksydXlaOVhHZm03WWxPam80YVh6L1pkdW1pUjl4RXhCZDd3MFZieEliTGJmek1ZeFA5SFQxWnYrMFlONHIycWdtSDlLRWgvclBNbk1WaGtnRm1IWXhsMS9YblRXMnJXWDNmUCt1eFpYcGkrMUZuUzhPVlVxYVpPV25zdTAvamtZbmRtc0R4N01ENzVHRFY1anM2OU1PVDgyMHF1dndnem90SHhyN3JZNHdaM3hrLzVydWVFMmJtNkVENzdHOE4yemh2SENQL3NjVysxK0p0NjFJN3BaU0hsdmFzZnQyeUg3WWNFMTdHWnNrdUxmdkt3eGtrVlhLQkpMc0E5RWg5d3VlMVNBQUFBUFRHTWFxNnJKNDZmWWpkSi9KV0plSW5KeGp6NWttUUxyOU1uZnlaeEdrbEJOQ3RzNXNBcWtrdUwwK3dYN2MrZFQ2Tnd5UzcvTG1IOTd4YS8rNlpHYkZNZmxrbHdFeGJKNEQzYUxLSDc5WmFoZUtxWi92a3NCNjNYOFZ4bGdmcnhUSDNCMk5WaTE4ejg2NEhjUnJGWVNwRHRZNlJueHIyamFzdFlyR3JSWFMzeE9TenhuMXRzV1c3dENTeFgyWG04R2NKOUhWZmFka2VTeGh4a2lTN0FQVG5ndVkrM0RnREFBRG8wM1hhS21Ha1JjdWt3NGZHNjhSWGNackpMaTBUa0E4N1Z0SjV6Q2ZYN0JmdDB3bU9YVmZmN0ZPRFdDNVhOSXpUWFphcmk2VjgvdDN3Mm0yV2U1b2VjTHhjVDRDWjE4LyswTFBLTDUzdlF6VVI4YUhoT0QwNjhINjUyZytqL25vVnkwb1lxd3B5d3hQZEwvZmR6MXJqMHBjSFMvOTFnTTlZZEhBT2RJaUV1WlkyN1N6NXRNWnFmb2pHN3lDSmZYVmUvN01LV1M4Ymo2OTlUWmFFbjVMc0F0Q1BteEFTWFFBQUFQcm5PdHFXQTVpMDNKQ3Z5elRNWS9kSmdVZWZBdTJwbHBqL3ZvOHZWTXZkTCtMd3kwUFFEOU0rZnFuNkZQY29sa3NwRE9KMGsxZzIxY1ZZMWpLWnQvRllYQk14cGtkb2syRXM3ekdPNi9IanQ5WmpVVmRqNko3ZSt2ZG9UMHJ0Y3A5Y0pSLzlHcWVmeExKeFh6OUFuejRIaDlpT0xwSVZGbnZlUjFySHhFOG4zQWQraTdZNW9PdjRRYkpMQnduNnFycHdzaVM3QUJ6L0lraWlDd0FBUUQrMUxtSDA3dzV1NnMraWJZTGtzYWRBKzNhTmZOVkJ2UFpsRnVlZlRNQjM5R1VKbzdYSnJPZlJvd24rQS9yenhMN3YyeU9QR2NOWUxwdnhKak52U3ltVEkzMlBhVi9mT3pOSHJSVnc2bkhyVlczcjRZWHRrOU1EZk1iVE00blZJZnJHMlZmbTJHUGkzQ0crK3l3elo3RjdCY1BoVDhhc2xnVDlSYlF2ZndWSEk5a0Y0SWdrdWdBQUFQVDJldTB2UzBQczZFMzlPYVp4bkZDeVN6UldUdG56c2gyU1hUaldlRFNJNVZJY3IwSjFvWk5ScTNPMUxMUFQ1Ymg2bjVrdkkrTEZFWkszWm51TThTd3pqN1ZmanVzeGZxaTNzNEZEOUpQL080RTR0SnhIemMrZ0gzeG92TDU0R2Q5UE1tdFp3dWloTDBtOXNJdS9DUUhBY1VoMEFRQUE2TFdYWjdJZGd6b2hSN3YvRXdJT0xUTmZSOFNYV0U2cVMzUTVQVGZSbjJvTG80ajQwa0VGcllzZU96UHpLalAvaUlqN2tPZ0NoelEvZzIyWU5MNysranRqMGpEYWtvZ3NZY1JKayt3Q2NKeUxJb2t1QUFBQS9YWk8xMnd2TlNlY2xzd2NaT2JuV0M1REk4bmxSTlduNVo5RmZ4SmVCaEh4K1FnSkwrZXlYNDRqNG85b3Ivd0dYTzR4WWRJeWhuOG5pYjNsbW1WV1NwbHBHVTZaWkJlQXcxOFV2UXVKTGdBQUFIMitiaHZIZVUwdWorcFRuOEJwakVHRGlQZ2NsczA2Q3oxTmVMbXYvWXpOOTh2N1dGWnpBV2p4b2ZIMXo3LzVjMHRTdTZvdW5EekpMZ0NIdlNnYXgzS05aUUFBQVByckhDdWhqRFVyOU45YW9vdktFV2VrbExJb3BUeUppTGM5K1VwWGNiaDdsUDg0Zy8xeTdEZ0tSemM4aytQQk5OcVdaTHBlSmJIWEtsMjd4bVVSRVErNkZhZE9zZ3ZBNFM2S1JpSDdId0FBb08vWGJzTTR6Mm9LTHkray9mYVpJUERVSHNJQnZBbUpMbWVybEhJWEViOUUyeklXWFhsMW9Pb3VlK3ZQaDFpT3FYNkdlN3JRalduRGE0ZG5GSWZXNmk3WHEzRzg0VDBlYXVVeE9HbC9Gd0tBL2FzM1N6K0tCQUFBUU8rOU90UHRHbWJtZFNtbDEwOXdsbEttbWRueUZxUFkzMUloRWhEWXEzci82RkRWTm1iMTUvZFlQdDN0dnRYaHhybDVSTnhrNXR0WVZndDVHY2VaeEIzVXozKy81OCs1NnV0NzF3b0xqM2wzb1BhWXIrMlQwNGo0dzk3eTM3anNhaElSL3hiQ3N6cE85djVjZG91KythYmg5Uy9yMkgzZDhCNldNT0lzU0hZQjJQOEoyS0RlTUxBT0xnQUFRUDlkbi9HMnZZelRLRmUrYUxpR2ZocDdtTGpOekd2WDlSekFtdzdmYXhyTGlmUC9XL3R6Uk1TOEpsdXM5KytSMEI5ZWJZZTdpTGlyMVVPdTZ4aDJ5UFo0R2Z0UGRobnNjWUw2ZWVPeDVyR3gvNnJEOXBqWGZmTFArdWZaNmp0OEwrbW1NZkh6bkxRa3F5eHFOU1g2WTliQlBuL3l5UzZsbEhsbVBqUmNkMXhsNXJ1R2M5TlpLV1dtTzNJT0pMc0E3Tis3OFBRWEFBQkE3OVdFaHVFWmIrSjFaZzYvbmVqdW9WbnNQcm00cjIxOGJnL2hFUHRvQi92T2I2V1V5WmF2azhoMVpIWFNjYloyUEJyRjhuN2lyL1hYZmQxYnZNck13UUdXc3VoOGdycFdRcnB1M0Y4ZTAxcnRiUkhMNmdtVEV6ajI5dm1jb0dWTXZSWENYbzExaTh5Y041eHZYMmZtYlZkalZtWithVHozZjl1UVVQV2hjUXhycVFTbnFndG40MjlDQUxBLzlVYnBXQ1FBQUFCT3dzc0wyTVpUcUZ6VCtxUnBsOVV4VmhPcXJ1M1pxNXJjMEpKME1pbWxQTmtoMFNYQ1ExcTlVMHFabGxMZWwxSnVhcnVXaUhnV3k0bjdTWFM3WE5zaDJuOWN4OUl1dFk3MW04UncxUGorVDBvcGQ5c211dFJLNGJTZkV3eFZydXFsYWNOckI5SFJjbisxYnd5UDFUOXJ0YXZGRWVLL2lET29qZ01ya2wwQTlxUmV3TjJMQkFBQXdNbGN3MTFmd0thK09vSHYrSHZqNjhkMTZZbXV1TGJuRUVZTnI1MldVbTRhWHYrcjhQZmZ0d2t3RWZGTFJOekVjbm1jRm9kS3JPaHNMSzFqL1BnQXg1cGh3L3ZmTkZSekdlbngvKzMzODhZKy9rNFV6KzQ4NzAxSDUzbGRKRWRQRzE4L09VTDhIdzVRelFzT3hqSkdBUHU5Z0pPRkR3QUFjQnJHRjdLZHc4d2NsVkttUGY2T1hYeTNqNW41cFBWbWZtYmVoVWxIK3U5RFF4OGZ4R1VrK2gxRXJmSzg2eVRzZEp1eHVTWUJUQ0ppa3BuM0RjZXhxempNVS82anpMeHJXUEpqdmM5K2JQMHl0YXJDeno2blpleWYxcVdwZG1YcHZMOTZpTjJyZVZ4bDVuMWpRbUJrNXNmR3NmSnRhOTgvcy9ac1RYNXJPcy9yNlB4dTFrSFN5Ry9SVWFXYUxUOFR6b1prRjREOVhOaStEamZEQUFBQVRzbkxDOXZXYVYrL1hDbGxrWmtQMFRhcE5JeUl6NW41ckdFaVpCd2RMNGtFUC9Hdmh0Zk9HMTZyajNmcnFpR20vMm9ZbTIvak5KSTIzMlRtZk1mbHRsYUpMcCtqZmVtUjNpN2hZZW04Ny9vUWJRa0I0OHlNWFJOZTZyMys2M1B0Y3lkK25uZXpiV0paaCtkM0h6cUl4VHd6cDNHNHVhUlpZeUllOUk1a0Y0RDlYSkM0VWNBbG1MajRCZ0RnVEs3alJ0RStjVFk5NEZjZXhPNlZBeUtXa3o2M1BTOWgvaW5hSjVhdUl1S1BPaEV5M2FJL0RHSzU3SUhySFU3RjFTNWpVQjM3WGd0ZnAxb21FY2VaK1hhWHBXL3E1UEdweE9nK001OUd4RmJIb2RwZjd6czRYa2QwTUVuOWlKMitZMWRWYTg1TktXV1dtZlBHdGgvWCsvWmJMUzlWSzRDMDN1dWZTekQ0N2o3WXhYbmU1enB1dnQ5dy8zclQ0WEZ2MG1Fc1JnZUt1Nm91bkIzSkxnRGRleGVXTCtKOHplb0orS1RlU0JrTENRQUFaNkMxcXN1a3RUeitOdXJOK2krTjE1N2ppSGpmMXdZcHBVd3k4MDIwVDJvT1l6a1JNb21JMzM0MjJWVGpPbzdsUklqcmVnN3QzdzJ2ZlpXWmt4MFNCMHlxZDIvYStQcVB1MVNrYWwxeTV3aHhHa2ZFZFdhK3JjZlF4VSsyN1NvaVhrVjNDWWp6eDVZd3Fsb1NRb2VaK1hxVENmaHZqa0dmb3kyWjlaeTlqZmFsYjBZUjhhV2VFM3o0V1NMc1d2V1BZUWZmWFlMQi81N25QWFNRd0JUMWZPMWRacjZLWmZXY1Q5KzJheDBmbjljeHBLdnp1MGxYU2VQMW5QY1FjMHFMVUdHSU15VFpCYUJEOWNUSk9zZWNtMVdDeThNdVR4Y0JBRURQcitOV0NRNHRQaHp5TzYrVmYyLzUzaStqeDhrdWEzSHRxbkxxT0paUGRjOWpPYkg3YldMQjA3QWNNYWRyR011a3JoZVBYYmV2VlNRZUM5dmV4dWRaN0o2d3NIVkZxZzRTbDQ1VjVXdFZSZXRkWGNiajkyLysvVjkxWEI1Mi9MbHZOMnpMV1dPMW5IZDE2WnhOS2s2TXd3T1VqM25vTUVhcmM0S0lyOGxlODdXKzF1WDV3Q0s2cXdCeWJycElZRm8vRHI2T2lOY0hxbkwxZGcvOWU5L0g1WWVlVjNXRW5VaDJBZWpXdlJCd0JoYjFRdTlUUkV3bHVBQUFjT2JHamErZmI3TkVUb2QrYS96dVY1bDUxZk95K3U5am1aUXo3UEE5aDJHU24zNmFSbHR5MTFVc0t4WTh4REpwNE50OWV4UVJ2NGFIdEE3aFE3UlY1eGpHTW5scEhzc0owRDlqT1JHL2JyV2MzZlBHejRxZUhBZEdjWmlFdzNrcFpiTE4vMjg4QnEwcVRueUkvNjJnTTR4bG91VjFTSExacEo4dU12TTJ1ci8vdnU5Kzk1c0VneCsyNmFUdUg2ZFd6V2l5aC92bHJlZjFtMzRHbkIzSkxnQWR5Y3pYMGYyVEJuQW8wMWplREh1d2hpd0FBQmZtVmVQcmozTGp1RDV4UG8yMlNacFhFWEhUMTRaWm05aXkxQXBucjVReTdlaHA5T3VRMEhKc2sraG1PYlJoTENzVjdOT2xMV214N1RGdkd1MFQwTVBhSDk3WU5ackh5VWxtdm96VHFjUTJqLzVYMGV2RFB2bkhDWDNmUlhSZjFXVjFYdDlTRmV3eE0vZjhPVmQvRXdLQWRyWHN0UXNXVHNVOGxqY3piaVBpU1ZsNlZrcTVjOUlMQU1DRlhjdGRSZnREQzVNamJrTHI4a25YOVhxMnQwb3BEM0Y1azdGY0xuMzlETlFxRHBNVCticWZMcWhwM3U5UWllMkRIdDA3dDNHOHBiZTIvcTZxdWp3NlhzNWlEOGtqZS9SMmoxWFE5NWxBcjZvTFowdXlDMEEzWG9keWsvVFRQSlkzeTk1R3hMT0krR2NwNVpkU3lvdFN5bnZKTFFBQVhMaldxaTZUWTA1aTFLVVlXajUvRUtkUkFlSW1UbWRpQzFxWWpEb2ZiMDlnM0Zwc3VhVFBLZHRwUXIwbXg4eDE1LzZvOXpKdlQrQ3JQdFNFWFI1djA3czRqV1RQaDFMS1BpdjE3Q3NHaTVCTXl4bVQ3QUxRcUQ0Rjkwb2tPTEo1TEV1cnZxOFhmTTlxeFpaVllzdGRLV1hxYVFJQUFQakx0Vnhyb2tjZm5vaWZOTDcrWmQvYnFsN0hQQXNKTDV5NU9yRStGWW16YU10RjlIaVp1T3J0aFRUSElpSnVHdTZKdmRXamU3ZC9UYUxmeXdQTlRtRC83NXViR3JlTGJkTTlWZ1Y3TUNmQU9aUHNBdEJPVlJjT2VWSTlyUmR6cTBvdFQ5YVNXcDZWVW01cnhaYXBjQUVBd0U5ZE4xN0x6WHZ5eEc1ckpZaFJaZzc3M2xqMVNXNFRSMXlDV3lFNEQvVVlNZW5wMTV2dHVVSkJYeXhpK1VEWXJLRWRKeUVKclkvNzEyMVA5Ni9XNUtwTGJjOVZZdk9zcDIzNjRrQnR1bytsMDFTTjQ2ejlYUWdBbXFucVF1dko4bXp0OTMvVzM4L3JUMGhjQVFDQVhsN0xmZWpEUnBSUzVwazVqWWhSWXl4NlA4RmVTbm5JekdjUjhURThkTUtaS3FYTU12TW1JdTVGNHl6YTh5WXpJeUxHUGZwYWk0aDRjUUhoYjA1MFdmTWlJcjQ0OXZSeS8xckU4bUhVYyt0emw5aWVpM3FlOXpraXJucnl0ZWF4VEhTWkh5Z0cwOHljUjhTd283ZWM2WStjTzhrdUFBMHljK3dpaDdXTG1kbmFTZkMvdi9QMy96MXBGUzRBQURqcXRkd3cybStpVDNxMFNSK2lMZGxsSENkU1RhSk9BcXdTWG9aNk0rZW9sRExKektkeDJBU0o5N0dzZUdXLzZyNDkrNVR3c3BxTW41OTUyR2ZSNFFUMU41UHdnd051dzZlSWVHTXYrbW5iM0dibW54SHhMbzU3bjE2aVMwZjdXa1E4eWN6N0hveVpzOXFtaDY3UzgxdnR6MTI5RjV3MXlTNEFiVnhzWEpaWkxCTlovb3l2bFZmbUYzQ0RBQUFBemsxclZaZUhQbDBIMUlueGxrbWVRV2FPNjFJTnZWY3JYenlKWmVXTDZ3Tis5Q0k4OE1MaCt2bE5adjQ3RG5QdjZYMmRNQjVFdnlxUWFNOXV6V0s1dk1xNVQ4YS9qNGkzWFU5UTEyUFBvUkplWnJGYzBtVVk3ajl2ZWg0MGkyV0N3T2dJWDJFYWgxdm01cExHekUvMVhPOFk1MTV2U3lsM1I5cjhoK2dtMldWUjN3dk8ydCtFQUdBM21Ua0tUN3VjczJsRXZJM2xtdkJQeXRLVFVzcUxVc3BkS1dWU1NwbEtkQUVBZ0pNMGJuejloeDV1MDZUeDljOVBxUUZMS1l0U3lvdFlMaTJ4Nyt1eVJiMDI5SFFzaCs3bmQ3V1BML2JadDBzcHE4cE92NHY2M3R2elNTenZPUjNhK3poZTFZbHAvZng5bTlkdHZOMVgwa0dOM3k5N2JzT0h1aDJMK25rU0tEWnNtMUxLczNxOFBsVE1GaEZ4VzBwNUp0RmxMMjM2VVBlMzl3ZjgyR2tzNXdMdWpyamQ4K2dtU2VWQnYrUVNTSFlCMk4xTElUZ2JxeXpuMi9pYTJQSnNMYWxGK1VrQUFEZ1RIU3hITzY4MzMvdW1OUkhqdWk3dmRGSktLUStsbEY5aU9iazEzOE5IVENMaWwxT3Blc1A1MmVOazN6U1c5MERXKzdZbndQZmZucXNKK1dkeG1LU1gxUmgyZTh4Sno1cFF0YTlFbjNrc2s3WitPY1RTNFRVSjVka2VqanZ6V0ZZSCtiWkN5TlNlczFYN1RPcVllUnY3UzRaZHhQSWh5VjlLS2U5RmZlLzcyMjF0MDBuc0w1RnBWZm1xTDB0UmRaRllMMG1iaXlEWkJXQUh5cnFlaFZrc2J4UTlLYVg4czE1SXZwZllBZ0FBWjYrMWdra2ZxN3AwOVJUbzlhazJhbjFRNFpkWVZzR1lSTnRreUR5K1RtTGRlQ3FXSHZUdjljbSt0OUUyZ1R1SlpkV0laOTlXcTYxOTNYMlJ3N1RwdENaTVBJbmwvYWt1NHo2TDVVVC9hZ3liOTJTYloydmIzRHBPTDliNjhsRVNFdGVPT3pmUmxwQXlpNitWcGI5M0hGZHhhYmN4ODMySDV3VXIwOXBXdjlTSEpKMGZIUEE4dDVSeVU0K0ROOUZOY3VZOHZzNFBQT2xUWW5NZEMxckc3cGw1RGk1bWZCQUMraW96UDhkeDFsZThWS3NMTERicm4rTllyaGZKYVpuSDhzYjB4UEpEbmUwTEtRb0hkOHcxWTUyYk9EZHhmc0twNzhlamlQZ3NFbzVid0VXTis2T0krRFdXMVh5dTR2dFZmYWF4bkFUN3ZaNS9tQnpnRlByM1ZlM2ZUMnUvL3Q2MXlpcDVaYmJXdjAzTzlyZE5oM1djdXRwZzNGcHYzMFZFL0ZsL3Y1YzJianlQL3VGMTNUZmo5R3I3ZjdTZDg3cWR2UnluNjhPUjEzVmJyaHh6ZWoxdXJ2cmI2aWQrMEU1UjIybHYreGJOKzl6Vk4rZDZveC84OTNuOW1VWEV2MDloMzh2TS84VHUxU2h2VkNYa1V2eGRDQUIyWWdtajB6S0ppQStIS0dWNmdSZUlBQUFBdlZTdkFWMEhjcTc5ZTVYRVlnbU44Mm5UZVN3bll4OHVhSnZQWnB5dWlSQVRQZmtreGszT1o1ODd5M085ekx5TzNSTmRGbUZaUWk2SVpCZUE3VTgwaHVISi9sT3dpT1c2bEtxNDdNOUFDQUFBQUFBQW9ET3ZHbDc3b0FvUmwwU3lDOEQycm9XZzExWkpMdStkMUFFQUFBQUFBS2NnTThmUjlyRDFiNkxJSlpIc0FyQzlwMExRVzVPSWVLdVN5OEVNaFFBQUFBQUFBTnJVUkpmN2hyZVkxdVc2NEdMOFRRZ0F0anJaR0lUS0xuMDBqNGhucFpRYmlTNEhOUlFDQUFBQUFBRDRxOHk4eTh6N3pMeDY1UDhOTS9NKzJoSmRJaUkraURxWFJtVVhnTzJNaEtCM0poRnhhOG1pby9pSEVBQUFBQUFBd0hlTkkyS2NtWXVJbUViRW4ydi85bzlZempsZGRmQTU4MUxLUkxpNU5KSmRBTFpqQ2FOK3VYRUNkMVJYUWdBWVp3QUFBQURncDFhckJ1eHI1WUMzUXN3bGt1d0NzSjJSRVBUQ0lpSmVsRkttUW5GVVF5RUFEbkFqQUFBQUFBRDRQbFZkdUZoL0V3S0F6V1RtSUR4aDNnZUxpSGdtMGFVWGhrSUFIT2o0Q3dBQUFBRDhMMVZkdUZpU1hRQTJOeEtDWG5oV1Nwa0p3M0ZscHYwQk9CU0pwZ0FBQUFEd3YxUjE0YUpKZGdIWW5NbTI0N3VSNk5JYlF5RUFqRGNBQUFBQWNEUTNRc0Fsayt3Q3NMbW5RbkJVNzJVbzJ4K0FpL1NyRUFBQUFBREFYenlVVXFiQ3dDV1Q3QUt3T1pWZGptY2UxcDIwUHdER0d3QUFBQUJnSHFxNmdHUVhnRTFrNWlBaUJpSnhORGVsbElVdzlHcC9NUGtNSE1wSUNBQUFBQURndjE2WU13SEpMZ0NiTXJGL1BGT2wrSHBuSkFUQUlXV21jUWNBQUFBQWxnOEh6NFFCSkxzQWJFcXl5L0ZZdnFoL25nc0JjR0FqSVFBQUFBRGd3dDJVVWliQ0FFdVNYUUEyWXdtajQ1aXA2dEpMSXlFQURreVNIUUFBQUFDWGFoRVJ6eVM2d0Y5SmRnSFl6Rk1oT0lyZmhLQmZNdk1xSW9ZaUFSellWV1lhZXdBQUFBQTRGZk9PM3VkOVJQeml3V0Q0WDVKZEFPaXpCeUhvblpkQ0FCekpXQWdBQUFBQU9BVzFDc3N2RVhFYnk3bU8rUll2bjlYWC9WSkt1UzJsTEVRVS90ZmZoUUJnSTFkQ2NIQXpKM0M5TkJZQzRFaGVSc1NkTUFBQUFCeFdyU1pRUkFKZzYvRnpIc3ZLTE85WGY1ZVpvN1gvc3ZyOUlwWUpMcUdDQzJ4T3NndkFaZ1pDY0hCTzZIb21NNi90QzF3NENYakhOY3pNc2JXSkFRQUFBRGhWM3lTelRFVUVkbWNaSTRCSFpLYkovZVA0VXdoNnh4SkdHSmN3RGdFQUFBQUFjSFNTWFFBZVp3bWo0NWdMUVg5azVqQWlya1VDT0xKUlpvNkZBUUFBQUFEZ3NrbDJBYUN2WmtMUUsyK0VBREFlQVFBQUFBRFFCNUpkQU9pbFVzcENGUHFoTHVVMUZnbWdKNGFaZVNjTUFBQUFBQUNYUzdJTEFQQ1kxMElBRVJFaENhOC8zbVNtWlFZQkFBQUFBQzZVWkJlQXg0MkVnRXVWbWNPd1pBaXNXRjZ0WHo3V3lsTUFBQUFBQUZ3WXlTNEF3TTlJZEFINmFoZ1JINFVCQUFBQUFPRHlTSFlCQUw0ck0wY1JNUllKb01kR21Ya3ZEQUFBQUFBQWwwV3lDd0M5bEpsWG9uQjA3NFFBdmlxbFRFV2hsOFlTWGdBQUFBQUFMb3RrRndENmFpQUV4NU9aZHhFaDRRZzRGZVBNdk05TXg0N2xHRDdJektGSUFBQUFBQURuU3JJTEFIMDFFb0xqcUZWMTNvZ0VmTmRDQ0hwckhCR2ZMem5KSXpPSHRjck5sN0FNSFFBQUFBQnd4aVM3QU5CWHZ3ckI0ZFdxQ0pZRGdSK2JDVUd2WFVYRUg1bDVmVW5qZG1hT00vTnpmRTF5VWVFR0FBQUFBRGhyZnhjQ0FIcHFKQVJIOFM0c1h3U2N0a0ZFZk16TWg0aTRMYVhNejNFamEwTFA4NGk0RHNrdEFBQUFBTUNGVWRrRjRIRnpJVGlLUVYxT2h3UEp6TmRoMlF0NHpPOUNjREt1SStKTFp0N1ZxbFduUGtZUE12TTZNKzh6OHo4UjhURlVjUUVBQUFBQUxwUmtGNERIellYZ2FGNEp3V0hVQ2dIdlJBSTRRMjlpbWZSeW41bkRFeHVicnpMemRWMmlTSUlMQUFBQUFFQWwyUVdBUHJzK2g2ZngrNjVXMExrWENkaklWQWhPMGlDV1NTSmZNdk56Wm83N2VIeFpTMjc1V0t1My9CSExSTVNSSmdRQUFBQUErT3J2UWdCQWp3MGk0blZFM0FuRmZ0UkVsOCtoU2dCc2FpRUVKMjlVZis0emN4WVJueUppV2txWkhuajhIVVhFTUNKK2pZaXJrTkFDQUFBQUFMQXh5UzRBanpPeGVWeXZNdk45S1VVN2RFeWlDMnl2bERMTFRJRTRIMWYxNTAxdDExbjkrWGY5ZFJFUnMxMk9RWFdNSGRTZnE0ajRSLzExV0g4QUFBQUFBTmlSWkJlQVI1allQRHJWWGZaQW9nczBtWWRraFhPMVNuNzVkc3hjYi92NUQxNDcxQzhBQUFBQUFBNURzZ3NBcCtCTlpqNlVVbVpDMFM0enJ5UGlQaVM2d0s3bUlhbmhVZzIxUFFBQUFBREE4ZjFOQ0FBMk1oZUNvN3ZQVE1rWmpUSnpIQkVmUTZJTHRQaGRDQUFBQUFBQTRIZ2t1d0JzWmk0RVIzY1ZFZStFWVRlWk9jak0rMWhXZEFFY0V3QUFBQUFBNEdSWnhnaGdNM01oNklWeFprWXA1VVlvTnBlWlY3Rk1jcmtTRGVpRUpkVUFBQUFBQU9DSVZIWUIyTXkvaGFBM3hwbjVXaGcyVTJQMU9TUzZRR2RLS1pKZEFBQUFBQURnaUNTN0FHeG1MZ1M5OHE0dXljTVBaT1pWWm42TzVkSlBBeEdCemsyRkFBQUFBQUFBamtPeUM4Qm01a0xRTytQTS9KaVpFam5XWk9ZZ00rOGk0bytJR0lrSTdJM3FMZ0FBQUFBQWNDU1NYUUEyVUVxWmlrSXZYVWZFSDVrNUVvcUl6QnhIeEplSWVDTWFzSGQvQ2dFQUFBQUFBQnlIWkJlQXpjMkZvSmVHRWZFNU05OWRhcFdYekJ4bjVwZUl1QTlMRnNHaFRJVUFBQUFBQUFDT1E3SUx3T1lzV2RGdnJ5UGlTNjF1Y3ZaV3l4V3RKYmtNZFFFNG5GTEtQQ0lXSWdFQTBIUmRzMXFlZHQxLzZ0K05MelFtbzdyOS8va21McDlydkR6Z2NMNzd3YmR0ZnJIN0FRQUFiRUt5QzhEbUxGblJmNE9JdU0vTXMwMTZxVGMrN3lQaVA3RmNybWlvMmVGb3BrSUFBR2QzcnQxaUpJb2J4L29xTS8rSVplTCs5WGV1NjY3cnRkMGZtWGwxSVRFWlpPYm5pUGhjdC8vYnBKWlJqWmVsZk05M1AvaTJ6VmY3d1pkTDJROEFBR0Fia2wwQU5qY1ZncE14aks4M2hPNHljM2pLRzFOdmdMMnJWVncrUjhSWUUwTXYvQzRFQUFEYlg5L1U2NXBOSnUrdllybHM3ZFVGeE9STExCTmFOcm5lL2F6aXgwWHRCOE5ZSmpsZGl4d0FBSHdsMlFWZ2M1WXhPajNEV0ZZLytiSXEvM3NxSlovclU2V3JCSmMvWXJsTTAxQ1RRcTlNaFFBQVlLdnJuRUVzSi9pM3VTNGJ4REs1WTNpazcvejZBSlZVN3JlTVNjVHlBUS9WUHZiVDV1LzIyZVoxUC9pNFk1dTdMd0FBQUpWa0Y0QU5sVklXSWVIbGxGM0g4Z2JpZjJvcDdMdStsSDZ1NWFwSDlUdDl6c3lNNVExZ0NTN1E3K1BDTENMbUlnRUFzTEYzc2YwRWY5VFh2RG5DdGRwOS9jNzcvSXk3Mkt5NngvZmNrbkhiMlFBQUhrcEpSRUZVNjFLZFg1dC9yTmZpKzdUcmtzUURiUTRBQUYvOVhRZ0F0aktMM1c5QzBSOVg5ZWZOTXE4a1p2WG56L3JydkpReTM4Y0gxd1NiUWYzOFgrdXZRMDBDSjJzYWxoWURBTmprV21qUWVONDB6c3kzKzdwVys4NTMzWFNKbVZZdlc2NXRNM05VU3BucVlhZlI1aDNzQjZQTXZLcUo5d0FBY05Fa3V3QnM1L2N3cVhtT1Zza3YvMVdUWU9ieHRXckRMQ0wrYjh2M2ZWcC9IWVFrS1RoWG54d1hBQUEyY3QzUmU3emY1NWVzU3dQZEgrSWFybjdXc1BGdG5vZmxOYnRvaDIyWDE5clZxSVBQdVE2Vmh3RUFRTElMd0pZZVFzbllTektNcnpjZVI4SUJmTWRVQ0FBQU5yNithdld2Zlg3QldvbnpZeHdtNlNHaW00UWFEMWEwdGZrNGRsOWU2MWp0OWF1V0F3Q0FpTDhKQWNEbVNpbUw4UFFNQUg4OUxqeUlCQURBUWV3dHNhTW1QUnlxdXNmS1VKTWVUMmEranVVRFRZTVQrK29EclFjQUFKSmRBSFl4RlFJQTFud1NBZ0NBZzVqdjQwMHo4MTBjcDRyclFwTWVSMmJleDdLaUN3QUFjS0lrdXdCczc0TVFBTEJtS2dRQUFJL3FJckhqMzExK29jd2NaT2JIaUhoOXBKaDBVVGwycm10dDNlWi9STVQ0U0YraGkvYjZYVXNDQUlCa0Y0Q3RsVkptNGVrckFMNGVGK1loNFFVQTRERVBQWG1QaUZnbVBjUnkyYUxySTU1SFRxUDkvb0xFaDgzYi9LcTIrZFdKN3dldVBRQUFJQ1M3QU96cVFRZ0FXS1BxRndEQVQzU1FJRHl0RDU4MHEwa1BYK0s0U1E4ckxmY1g1cVdVaWQ2MVVadVA0dmlKTGxGS1dVVEVwTEhOcDFvVUFBQWt1d0RzNnBNUUFMQkdFaVFBd09OdWovVGEvOHJNY1N5VEhnWTlpc25pbURFNWR6MXM4N2NOYlg2alJRRUFZRW15QzhBT1Npa1BZU2tqQUw0ZUZ4WWg0UVVBNExGenBsbnNObGwvMDBWVmw4eDhIUkgzMFora2g5VjU1TFBZL2g3RCszcHZncCszK2J2YTVuM2FEK1lOKzhGVXF3SUF3SkprRjREZFRZUUFnRFdXTWdJQWVFUmRkdWRGYkpiY3NZaUlGMTBzMVZNVFhkNzFOQ2F6V0NhOHpEZU15VTBwUlZXWHg5djhYVVM4N21tYlA4VG1TVTZyTnA5b1ZRQUErRXF5QzhEdVRHb0M4Ri8xaHZWY0pBQUFOanB2K2lXV3k3bDg3L3hwWHYvdGx3NnJsd3g2SHBOWlJEeUo1ZEpFc3gvRTVIMUVQSkgwc0xHcm5yZjVkSXY5UUpzREFNQTMvaTRFQUxzcHBjd3ljeFk5djNrQ3dFRjlpSWczd2dBQThPZzE5U0lpN2lMaUxqTUhhOWZXcy9wdmx4cVQ5eEh4L3B1WXpPdlNOOWdQQUFDQVNySUxRSnZmb21kclB3TndWSk9RN0FJQXNKVTZxVDhWQ1RIUjV0b2NBQUEyWlJramdEWVBzZG42eWdCY2dQckU3VVFrQUFBQUFBQmdmeVM3QURTb1Q5MU1SQUtBTlIrRUFBQUFBQUFBOXNjeVJnRHRmb3VJMThJQVFFUkVLV1dhbWRPSUdJa0dBSEJNbVhrVkVZT0lHTmFmaUloWkxDdVVMa29wTTFGaWgzNDFpSWlyK3NmMTMwZXNMY05UU3BtS0ZqM3V4NnZydGZYeGNWSEh5SWlJZWEzY0NRQkFUMGwyQVdoVVNwbG41aVFpeHFJQlFQVTJKTHNBQUJ0WVMwaloxbmVUVlRKekhCSFA2N25JNEpIUGpsZ21KL3dlRVEvN1RuN0p6R0Y4blZUZTFrOG5udGNtcm4va1h3MWYvYXJHYXB0N0JkTU5ZL0p0c2tobk1lbTRqMTVIeE5QNlhYL1dyOTU4MDcvbXNVd2UrQlFSMHk2Lzd3WnRQdWhwbSs5bFAyanNTejhjVTQ0d3RtMFZ6eTMyczFVZkhtMGEvOHhjSmI4Y1pJd0VBR0E3a2wwQXV2RWhKTHNBVU5YcUx2UFkvU1kyQUhBNTNzVnVTYkxUaUhnVzhkK0ozTmNSOFNxMm4xd2UxWjgzbVRtTGlOOUtLWk05YmVzNDFwSWh0dlEySXU1Kzh1K2Y5OXhHVzU4U2J2ai9yaHErKzJNeDJWbE55QmhIeE12R2M5cGgvYm11N3p1TmlBOGQ5YkZUYmZPOTdBZWxsRVZtZm96ZEUwem1FZkZMaHpIOG8rRzFuWHlYbWhEMU1uYS9aemY0Wm95Y3g3TEM4NlF1YlE0QXdCSDlUUWdBMnRXblRhWWlBY0NhdDBJQUFPeGJuY3o5STVhVDU0UEd0N3VLaVB2TS9MSkIxUXpPc3o4Tk12TStJcjdVUGpYcytDTkdhMzNzV3NRNzk5RHcybUd0eHRKRlA3bys0blpFWm80eTgzTXNFNkxHSGNaM0dNdEVxQytaZVZjVERRRUFPQkxKTGdEZE1ha0p3SC9WcDFXVnVRWUE5aVl6WDhkeU1uZlk4VnNQSStKelpyNFQ1WXZxVCtOWUpybU1EL0J4dzRqNG1KbWZKUXgwNmxQajYxOTI5RDJlTjc3K3R4Mzc4S0JXdC9rYysxMVdkaERMWkxBL0pBWUNBQnlQWkJlQWpxanVBc0IzM0FvQkFMQW5vOWh0cVpWdHZKYU1jUDdXcXJuY1IzdDFvRjM2OFpldUtvcGN1bExLUTBTMExLL1RWYldkbHZlWmxWTG1PL1RqNjFnbWF4MnlZdEF3SkFZQ0FCeU5aQmVBYnQwSUFRQXJFaUVCZ0RNd2l1Vmtyb1NYTTFUYnRldWxYclkxcUgxTXdrczNKZzJ2SFdibXNMRlBYVWRiMHRTSEhUN3pkVVI4ak1NbmE2Mjh6c3lQeGtrQWdNT1M3QUxRb2Zya3lVUWtBRmhqbVRzQTROUmR4ZjZyeUhCZ2E0a3VmVWd5a2ZEU25RK05yMit0ak5LNmhOSERsdjM0dmlmajAzVklEQVFBT0NqSkxnRGRleHR0SldNQk9DTzF1c3RFSkFDQUV6ZXUxUk00SCsraUg0a3VLNE9JVUIyai9mcGpGaEh6aHJkNDJmZ1ZSZzJ2ZmRobUNhT2E2REx1VWZpdllya2NHQUFBQnlEWkJhQmo5YUw4TjVFQVlNMXRTSVFFQUU3Zkc0a0k1NkV1TlRQdTRWY2JSc1FiTGRTc3BickwxYTVMR2RYS1BNT0d6LzYweFdlTmU5cUhyek5USlN3QWdBT1E3QUt3QjZXVXUyaDdpZ2FBOHpvdUxNSnlSZ0RBNlJ1RTVZeE9YazFZNm5QMWlkZTdKbHZ3WDVQRzErKzZsRkZyVlppSERmdncxUW4wNFd2ZEVBQmd2eVM3QU96UGpSQUFzRkpLZVI4Uk01RUFBRTdjV0NMQ3lYc2R5OFNsUGxQZHBlM2FZOTU0N2ZGMHg5ZTFKSGc4MUljRWZxb21hMzA4Z1dhNFZ3a0xBR0MvSkxzQTdFa3BaUm9iUHBFQ3dNV1FDQWtBbklPeEVKeTBWNmZReHlSVk5XdFp5dWg2MjBTTkRwWXcydlQ3dm1uOG5FTVpoS1F0QUlDOWt1d0NzRjgzRWJFUUJnQWlJa29wczdDY0VRQncrbDRLd1duS3pIRjBWOVZsRnN2bGN0NnUvVXlqdS9zZ2xvRnBNemx3L0VjTm43VW9wVHhzMEgrSHNheE0xS1Y1N2JmVGp2dHZoQ1c1QUFEMjZ1OUNBTEEvcFpSRlp0N0VhWlJYQmVBd3g0YTd6SHdlRVZlaUFRRHN5U3lXazdiL3QvWjNUNk50TW5yZE1ET3ZhaUl2cCtWNTQrc1hFZkZiUkx6LzJaSXptVG1LWlZXTFVlTjNmYS9KZHI3dVdHVG1RK3llTlBROHRrdVlhVW1DMjdReWNsZVZVcWF4ckNUejNhV1RhcFdhbDdHc1l0V2FIUFltVlBnRUFOZ0x5UzRBZTFaS2VXaTh1UURBK2JtSmlEK0VBUURvMkNRaTNwWlM1dC83eDdvc3ladm9wakxDS0paSk5YM3hXUFc4bG1TZlNVVDgrMHo2eUtqaHRiT0llUGF6SkplVnVyVHpORFB2WS9kbHIwYU5iZjR5ZGwvdTVsemEvRlBzZmo5cTQ5ZlY2aVV0eWZ3Zk52eU1jV004RmhGeDgxZ1ZtWnJJTjh2TXR4RnhIMjMzOU1hWmVidkpmZ01Bd0hZa3V3QWN4azI5NkI4S0JRQ2xsRmxtM2tiRU85RUFBTHE2N2l5bFRCNDVCMWxFeEcxbS9obkxDZHdXVDZOSFZUZEtLWGMvKy9mTXZJdmRFejArMU9TTmsxYXJWZXhhcFdJUkd5YTZmTk11TjdYS3kzREg3eno2VWV3M2FQT25zZnQ5bUxObzgxaFdUTGx2NkRQWG15d3ZGRzNKSVBNTlkvMnFNUmFyUGp6Ym92OHVJdUpGWTlKVzFOZXFVZ1FBMExHL0NRSEEvdFdMWXlWTEFWZy9OcnlQemN0MUF3RDh6TzFqaVM3Zm5JZE1JdUsyOFRNdHlYaDZobzE5Yk5mS0ZCK085SjFkY3l6YmJOTHdGcHN1ZTNXSUpZeGFFbXEyVG5UNUpvNDMwVmJKNnFYZUNBRFFQY2t1QUFkU24xSjVLeElBckxtSmlMa3dBQUFOcGpXSmR0dHIxUGVONXlGRG9UODVMUWxLeDByUzFzL2FmV3A0N2FNSkpuVjV0SDB2WWRSYUxmbnRyb2t1YTFvU0JLOXFuQUFBNkpCbGpBQU9xSlJ5bDVtL1J0dlRLQUNjejNGaGtaa3ZJdUp6N0Y1U0hnQzRiTDgxdlBadHRDMXhjdFhCQkRLSE05M3hkWXVHcWk0Unl5V3ZPTjQxeDBObUxuYTgzaGhzc0pSUjZ4SkdtNHdoTHhzLzQzMEhjWnhtNWl4MlQreTVqcllxT3dBQWZFT3lDOERoM2NUeWFSUWxud0dJVXNvc00yK2pZYUlKQUxoWWkwY21vUi96MEhnT0lsbjN0TTQ3cDdGN3dzdE9Ndk11SWtZTmJ5RlJwaHNQRVRIZThiWFA0K2VWZlo0M2ZLOU5rL1g2VXBYb1U4TjMrVlUzQkFEb2xtUVhnQU9yVC9IZmhLZjRBZmg2YkpqVXlsK3ZSUU1BMk1LMGcrdlRsa29GOEJkMXFaWlJMSk5VcnNNeVJIM3hXK3llN0RKNnBMMWJLcnM4dEg2SFRWNmJtWjg3aW1OTGZ6Yk9BZ0IwVExJTHdCSFVwL2h2SXVLamFIREdKckg3elRTNHhHUERiYjFaYkw4QkFEYjFad2Z2c1JCR0hwT1p3MWhPOUEvaXI1UDIvNHF2Q1FBamtlcnR0Y1lzTStleFc3TEc4Q2RMbHJVa3VzeEtLZk1OK2w1cmtraGZra3pzSHdBQUhaUHNBbkFrZGMza203QnNCZWRwRmhHM3NieVJOaElPMk5odExHL0dldW9QQU5qRXRJUDMrTjA1Tyt1K3FjNXlwWCtjallmWXZaTGt5M3FkLzYyV1phWTJYY0pvY0U3N1ZpbEZnaUVBUUVmK0pnUUF4MU5LbVVURWU1SGd6TXdqNGxtOWdmTkpPR0NyNDhJaUlwN0Y5MjhrQXdEQTNtVG1kV1oraklqL3hMSVM3ZXVRNkhKT1BqUzg5bnJMdjkvRUlaWXc2aHNQTlFBQWRFaXlDOENSbFZKdVk3bmNDNXlEUlVTOFdIdFNhU29rc1BWeFFjSUxBTEFwNXdzMHEwa3VYMktaNEhJdEltZDduVEZyR0RPRzN5NG5sSm5Yc1h2VmxRY1ZUZ0FBYUNYWkJhQUhTaWszSWVHRjA3ZUlaVVdYMlZyZm50Vy9CN1k3TGtoNEFRQTJQV2VBbldUbUlETS94ekxKWlNnaUY2R2x1c3ZvbXo4L2IzZ3ZWV0FCQUdnbTJRV2dKMnJDeTROSWNNSmVyQ2U2ckprS0RleDBYSkR3QWdEQVh0UXFIVi9DTWtXWHB1VyswOHR2L3J4ckZhQkZ1UDhGQUVBSEpMc0E5TXRObU5Ua1JQdHVLV1g2ZzMvN1hYaGdOeEplQUFEb1drMTArUnk3TDBIRDZWNWZ6R1AzQjFLdU1uTzQxb2NzWVFRQXdGRkpkZ0hva2JWSnpZbG9jRUp1U2lrLzY3TlRJWUpPamcwU1hnQUFhSktaZzVEb2N1bGFsakphVlhONTJmQWVsakFDQUtBVGtsMEFlcWFVc3FoTEdrMUVneFB3V0tKTDFLV05QTFVGamNlR1dDYThURVVEQUlBRzkzSDRSQmRKMi8zU3hWSkdPeTloVkVxeGhCRUFBSjM0dXhBQTlGTXA1U1l6SXlMR29rRlBQWnJvc3VaQlg0Ym00OElpSXA1bDVyMzlDUUNBYldYbUtIWlBVdGpVTkpZUE8vd1p5eVNYYVVTc2xrMmlKOWNWbWZtd1kxKzRxdjFvdU9QSFQzYnNVMjhhK3VQYkhvVmY0aGNBUUlja3V3RDBXRTE0V1VURWE5R2dSeGF4VEhUWjVtbXMzOFBrUEhSNWJQZ3pJdDZKQmdBQVczalYwZnM4eERLWlpSckxTaDAvbmNDdkQvTFFMNTlpOThTbis0YlAzV1VKcFpaS3NjTlN5bFJ6QXdDY0o4c1lBZlJjS2VVMkltNUVncDVZUk1Tekhjb09UNFVPT2owMnZJL2xza2FXQ0FNQTJML0JtV3hIYTFXWHR4SHh6MUxLaTFMS1hTbGwrbGlpQzcyOW5wZzBYRXNNZDN6ZGZKZiswdGpIaHJVU0RRQUFaMGl5QzhBSnFEY2hUR3B5Ykt0RWwxMXVUczBqWWk2RTBPbXhZUm9SVDBJcGJBQ0FmYnM2OVEzb1lNTC9waWE0N0hKZlluU0NJUnRlUUw5K09QRG5mV2g0N2JUaHRXOENBSUN6WkJramdCTlJTcGxtNXJOWWxvdTlFaEVPYkJiTFJKZVdoS3RwV01vSXVqNDJ6Q1BpU1dhK0MwdmVBUURzeTY5bnNBMHQ5eEVtOVNHY1M0cmYwNGlZbkhtLy9uVGdhL1NXZVA0ZXV5ZE5qVEp6M05pSEl6TUhqZnRSV0ZJSkFLQmJrbDBBVGtncFpiYVc4SEl0SWh6SVF5eWY0bXV0TFBSN1NIYUJmUjBmYmpQejkzcDhHSWdJQUVDbnJqUHo2c1NYN0drNVIveDkxeGRtNWpDT2QvK2lKVUZpbkpsdmEzTDV1VjVEUEdUbVBBNVR4V2JXR011SGFLdlE4aTR6WjQzN2NPdTl1SWV3eERNQVFLY3NZd1J3WWtvcGkxTEtpNGk0RlEwTzRHMWRqNzJMSmJRZWhCUDJlbng0aUloZjdHc0FBSHZ4T1RNZnJlcVFtWVBNOUhES1YrOU8rTHQvck1rNm03VDVxVmJnUGRTMVE4c1NSbEdUVk9ZTmJ6R28rL0JvbHhkbjVsMjBKMjE5TWh3QUFIUkxzZ3ZBaVNxbHZJK0lKNDBYKy9Bamk0aDRVVXE1NjdEUExtSzVIQkt3djJQREtpSHlSZDJQQVFCWWFyMFdHVVRFSDVsNW41blhxeVNJekJ4bTVpZ3pYMmZteDRqNFQwUzhPclBZUGQzbFJaazVqdE91U250VjIveGRiZU5WbTEvVlA5OWw1dWZhNXFlNm5SOE85RGxkSk5YODFzRSsvTG51dzhNTisvQWdNKytqcmFwTTFHc3pEeVVBQUhSTXNndkFDYXRQdGp4eHdVekhaaEh4ckZhSjZOcFVlT0VneDRkVmxaZUphQUFBUkVSM2ljRGppUGdZRVY4eU15UGlTMFI4am1VRmszT3Q2REt1aVNzYnk4eDNzVnoyNVppNnVQNGNSTVRyMnNhck52K2ovdmxON0w1TVVsK3VHMW9ycG16aW9hUGxvQ1lkN2NmajJwYjNtVG4rTnZHbEpyaU1haC8rRXQwc3gvelFVY1ZjQUFEV1NIWUJPSEdlNHFkamsxZ211dXlyQXN2dlFnd0hQVDdjUk1TelVGVUpBSEJ1Tkwzd0VMUnUvMzJ0WkRMNDBYK29TUUxqelB3U3l3U1JZM01PdkpsOVYzZjUxTkUrdklqMjZpN3J4ckZNeVBxU2EySlpxZWR6N2NPRGpqN3JyVzRHQU5BOXlTNEFaNkkreGY4a1ZNNWdONnRsaTI3Mi9MU1IvZ21IUHo1TVN5bFBJdUkySkVVQ0FKZnRrcTlINWgyOHg1dUkrRTltZnE1TCs5elZuM2RyeS9uY1I4U3dKK2ZCaTdEMDh5WW1lMzcvTHF2R3ZqL0JOcDEwVk5rR0FJQnZTSFlCT0NPbGxIa3A1Vm1vOHNKMnBoSHh5NTZXTGZxMmp5N0MwM1Z3ckdQRSsxZ3ViZlRXTVFJQXVGQ2ZMblhENjJSN1Y5ZGlvMWhXdlhoVGYxNUhmNWZ6c2V6ellmdkd0eVpkUGxCVDMrdjJoTUo3YXQ4WEFPQ2tTSFlCT0VNMWFlR1gyUC9UT1p5MlJVVGNsbEtlSFhqdDZLblF3OUdPRDR0U3lsMDlScndYRVFEZ3dsejZOZktIQzl6bTMzVDdvL2FOemhQTTZqMnZVN21XZVh2Zyt5MEFBQmRGc2d2QW1hb1RtamNSOFN4VTB1Qi9QY1N5bXNzeGJoQjlFbjdveFRIaU5sUjZBUUF1N0J3b0xqdmhaWEpwNTMyMWFzbFU3OStvYjNSdHNhOEtzdlZhcHUvM3VoNk9kTThGQU9CaVNIWUJPSE9sbEdrcDVVbEUzSVRKVEpaclc3OG9wYnc0MXRORnBaU3Bab0RlSENQbWE1VmUzdFl4Z3RObnlUZ0ErTEdMVGZTdDE0Q1hXT25rUnJmZnFHOTBuWml5N3lXayt2eHcxMXkvQXdEWVA4a3VBQmVpbERJSlQvQmZza1Z0K3lmN2VySnFTMU5OQXIwNlJpeEtLWGVsbEY5aWVWTldvc1JwbXNReW9mR2ZQUm5yQWFDUDV6M3ppTGk5NE8yL3U3Unp2ZHJtYi9YK1IzVmRoZlhEbnR0MUVmMU1lRm5VYzNMMzNnQUE5a3l5QzhBRldVMW14akxwUlNuVnl6R0paWkxMWFk5dXR2eXVXYUMzeDRwSnJRajJKQzZ3MVAwSmVvaGxndEkvU3lrM2tsd0FZTFB6bmJqczVZeGVIT2tjYjNIRU5yKzc4RGJmOUx5eXF6YWFINktxYXc4VFhoWVI4YXlVNHVFQkFJQURrT3dDOFAvdDNkRnhHa2NBQnVEL1p2SWVwNExJRlZpdVFGSUZqaXB3cUNCREIzWUZjUW1vQTZXRGN3Zm5EbEFGd1JWY0huYlBNTEZrR1lIZ1RuemZEQU1qalJEc0x0emUzcis3SjZpR1h1WXBvWmVGRW5teDJwU1F5NnpPWkJ2YmF3UEdmYXpvNnZmSGJ5bGhDaUdLY1ZqVlkvZDFTc0RsdWdhVWhKSUFZTHUrenV4VXo0ZnIrZUZWRGhzK21ZM2dQSEN1VC92RGRySFByWXh1RC9tNmExai8ySk82dXBReEdFRVhBSUFERVhZQk9HRk4weXpyQUovdGpWNldObVVtMFdobkU5VVpYdG9iVE9kNHNXaWE1anFKNE12eHZ0ZUhyZWkrcmVBaTRBSUFPL2R4WmpuUjdXM3F1ZUpWa3VVei82dGhTNWRGanJ6Q1p3MUZYTWRLdHoreXI2Mk1ibzVRdi9NRHRlbjdmRW9aaDFscVFnQUFoeVBzQXNBUWV2bVFkZWpGeWZrMHRWbUhYTnFKdkY1Z1dzZUwxVDNCbDBXRTEvYXRTeGt3SDFadnVhcGIwWmtsQ2dENzc5OThTTm0rc1QzQjk5N1Y5LzVjNFkrdW5xUGVqdWtjY0NNVTRaejArN0xaeDFaRzNiSDZyWFVzNUcwT042RnJXZHY0WEJBZEFPRHdoRjBBMkJ3VVdOV0xhYTh6amlXRytUbUxKSzhuRkhJWmZGWjFNUGxqeG1KanE2TmhVTm14WXp1cnJGZHV1VW9KdDd5dEErWldid0dBdy9ScnVxWnBybXAvWnBHblh5UmZwZ1JINWhQcjArMDcvTEZLTXE5OW1tNnpuRE9Ta0hUVE5HMnQ4NnNkNjN3SUtTOWUwRWRpMTFVY2IwYlFwaitrVE9pYTUza21kSFZKWmszVHZKN1lPQXdBd0l2eWl5SUE0SUhCZ1VXU1JkLzM1MG4rU3ZKSGtsZEtaalNXS1FOSW55WjhJYlJWamZDaWpodGR5cUJ2a3FUdis4c2tsMGt1a3B3N2hpUXBGMUdHY3ZxU0k4NTZCZURCUHZiSEhmLytLVzV5M0NCNGU4RDMzQjdwZFc3VG41a2xtZFZ6NGN2YWg3bDQ0RSs2SkYvcmErdWVlRzYyUzd0cjkvamUyeVJ0My9kbkcyTUFaMXMrelcyU2YrcDR3a1BtV3o3djhwbnJ2SzNsT0t2OTEvTkg2dnp6UnRrL3RjNUgvVG1vN2ZGdWg3OGZ4WmFudFc0K0pmbFVQOC92NjJmNi9JbFAyYVZzODNTckR3OEFNQTZOSWdEZ1ovVjkvMmVTZHltRFhoekhiWktialdXZ3A5Nm0vbzBMNE52NldHZXB3ZFErNzJjcEE4dm5LUmNQenJMOUJaUXBhVk11enR3Tmo1dW1XV29KQU1CRSsyKy81dnVRd0xmZ2g5VXRtRmpidnN3NjJQVDdQZWNsUXo5K2xSSnEwcjRCQUVaSTJBV0Fwd3dLbktVRVh0N242VE5pK0hsZHltelAyNWQyb2JUdis3KzFvYTNkUERKVEVxYjJQWENaZGZEbFRjcUE4eFJXZ2xsdTNPNDJIbmUySGdJQUFBQUFlRjdDTGdEc1pDUDQ4aTVsT1ZqMlk1bjFLaTZXeHdWTzlSZ3poRjZHQUV4eS82emlYWTgvdy9aQ200WnRDWWJ2NU9Yd2MyRVdBQUFBQUlEakVuWUJZRy82dm4rVkVueTVxUGUycDlsT20vWCt6MHZGQVFBQUFBQUFBTjhUZGdIZzJkUVorWmV4NnN0RGxsa0hYRm9yQlFBQUFBQUFBTURqaEYwQU9KaU44TXRGeWhZVVp5ZFdCRjFLdU9WTFNyaGxxVlVBQUFBQUFBREFkb1JkQURpYXV1M1JFSUI1a3hKK09YOGhiNjlOV2JubFM1S3VhWnBXalFNQUFBQUFBTUR1aEYwQUdKMjZBc3haU3ZEbDkvcDR1STFKbDJSVjc3K21CbHlzMkFJQUFBQUFBQURQUjlnRmdFblpXQTBtOWY1VmZUeUVZalp0L3Y0eHkzcjcvOC91N3ZsOTF6VE5TbTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjSHIrQTNMQmQ0YXc4VXlMQUFBQUFFbEZUa1N1UW1DQ1xcXCIvPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGQ9XFxcIk0uNjY3IDdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoNS4wNkw0Ljg2IDkuMTkzYS42NjcuNjY3IDAgMCAwIC4yMTcgMS4wOTMuNjY4LjY2OCAwIDAgMCAuNzMtLjE0NmwyLjY2Ni0yLjY2N2EuNjY3LjY2NyAwIDAgMCAuMTQtLjIyLjY2Ny42NjcgMCAwIDAgMC0uNTA3LjY2Ny42NjcgMCAwIDAtLjE0LS4yMkw1LjgwNyAzLjg2YS42Ny42NyAwIDAgMC0uOTQ3Ljk0NmwxLjUzMyAxLjUyN2gtNS4wNkEuNjY3LjY2NyAwIDAgMCAuNjY3IDdaTTkuMzMzLjMzM0gyLjY2N2EyIDIgMCAwIDAtMiAydjJhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMHYtMmEuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoNi42NjZhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMS42NjZ2LTJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYyYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlYyLjMzM2EyIDIgMCAwIDAtMi0yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI21hZ25pZnlpbmctZ2xhc3Nfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiI0E2QjVCQVxcXCIgZD1cXFwiTTEyLjkxNyAxMS42NjdoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1Yy0uMzkxLTIuMzE3LTIuMzI1LTQuMTY3LTQuNjU4LTQuNDVBNS40MiA1LjQyIDAgMCAwIDIuNTQyIDguNmMuMjgzIDIuMzMzIDIuMTMzIDQuMjY3IDQuNDUgNC42NThhNS40MTcgNS40MTcgMCAwIDAgNC40NS0xLjIzM2wuMjI1LjIzM3YuNjU5bDMuNTQxIDMuNTQxYS44OC44OCAwIDAgMCAxLjI0MiAwIC44OC44OCAwIDAgMCAwLTEuMjQxbC0zLjUzMy0zLjU1Wm0tNSAwYTMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NSAzLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUgMy43NVpcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJtYWduaWZ5aW5nLWdsYXNzX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgyMHYyMEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAxNlxcXCI+PHBhdGggZD1cXFwiTTE3IDBIM2EzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNabS0uNDEgMi01Ljg4IDUuODhhMSAxIDAgMCAxLTEuNDIgMEwzLjQxIDJoMTMuMThaTTE4IDEzYTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNDFsNS44OCA1Ljg4YTMgMyAwIDAgMCA0LjI0IDBMMTggMy40MVYxM1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE1IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMS40NzYgMS45NkgzLjAyYTEuODEyIDEuODEyIDAgMCAwLTEuODEyIDEuODEydjYuMDRhMS44MTIgMS44MTIgMCAwIDAgMS44MTIgMS44MTJoN2wyLjIzNSAyLjI0YS42MDUuNjA1IDAgMCAwIDEuMDMzLS40MjhWMy43NzJhMS44MTIgMS44MTIgMCAwIDAtMS44MTItMS44MTJabS42MDQgMTAuMDItMS4zODMtMS4zODlhLjYwNC42MDQgMCAwIDAtLjQyOS0uMTc1SDMuMDJhLjYwNC42MDQgMCAwIDEtLjYwNC0uNjA0di02LjA0YS42MDQuNjA0IDAgMCAxIC42MDQtLjYwNGg4LjQ1NmEuNjA0LjYwNCAwIDAgMSAuNjA0LjYwNHY4LjIwOFpNNy4yNDggOGEuNjA0LjYwNCAwIDEgMCAwIDEuMjA4LjYwNC42MDQgMCAwIDAgMC0xLjIwOFptMC0zLjYyNGEuNjA0LjYwNCAwIDAgMC0uNjA0LjYwNHYxLjgxMmEuNjA0LjYwNCAwIDAgMCAxLjIwOCAwVjQuOThhLjYwNC42MDQgMCAwIDAtLjYwNC0uNjA0WlxcXCIgZmlsbD1cXFwiIzY4Nzk3RVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuOTU4IDBIMS45OTlDMS4yNCAwIC42NjYuMjQuNjY2IDFzLjU3NCAxIDEuMzMzIDFoMTJjLjc2IDAgMS4zMzQtLjI0IDEuMzM0LTFzLS42MTYtMS0xLjM3NS0xWlxcXCIgZmlsbD1cXFwiIzJBMkYzMFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjg0NiA3LjU4M2EuNTgzLjU4MyAwIDAgMC0uNjEyLS4wODIgNC42OTYgNC42OTYgMCAwIDEtMS45NjYuNDI2QTQuNzU0IDQuNzU0IDAgMCAxIDUuNTIgMy4yMDJhNS4wMSA1LjAxIDAgMCAxIC4xNDUtMS4xNjYuNTgzLjU4MyAwIDAgMC0uNzc1LS42NiA1LjkxNSA1LjkxNSAwIDEgMCA4LjE2NiA2LjgyLjU4My41ODMgMCAwIDAtLjIxLS42MTNabS01LjU0MSAzLjkwM2E0Ljc0OCA0Ljc0OCAwIDAgMS0yLjk1Mi04LjQ0MXYuMTU3YTUuOTIgNS45MiAwIDAgMCA3LjE0IDUuNzg3IDQuNzMxIDQuNzMxIDAgMCAxLTQuMTg4IDIuNTJ2LS4wMjNaXFxcIiBmaWxsPVxcXCIjQTY2RUU5XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMiAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTEgMEgxQy40IDAgMCAuNCAwIDFzLjQgMSAxIDFoNy42TC4zIDEwLjNjLS40LjQtLjQgMSAwIDEuNC40LjQgMSAuNCAxLjQgMEwxMCAzLjRWMTFjMCAuNi40IDEgMSAxczEtLjQgMS0xVjFjMC0uNi0uNC0xLTEtMVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzNCA1LjMzM0gxMEEuNjY3LjY2NyAwIDAgMCAxMCA0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjZWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjcgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabS01LjMzMyAwSDcuMzM0di0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzMgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdINi42NjdBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNVxcXCI+PHBhdGggZD1cXFwibTExLjc5IDYuODk2LjA1Ni40MzdIMTNhLjE2Ni4xNjYgMCAwIDEgLjExOC4yODVsLjM1My4zNTMtLjM1My0uMzUzYS4xNjYuMTY2IDAgMCAxLS4xMTguMDQ5aC0xLjE1NGwtLjA1NS40MzdhNC44MzMgNC44MzMgMCAwIDEtNC4xODcgNC4xODdsLS40MzcuMDU1VjEzLjVhLjE2Ny4xNjcgMCAwIDEtLjA1LjExOGwuMzU0LjM1My0uMzUzLS4zNTNhLjE2Ny4xNjcgMCAwIDEtLjI4NS0uMTE4di0xLjE1M2wtLjQzNy0uMDU2QTQuODMzIDQuODMzIDAgMCAxIDIuMjEgOC4xMDRsLS4wNTUtLjQzN0gxYS4xNjcuMTY3IDAgMSAxIDAtLjMzNGgxLjE1M2wuMDU2LS40MzdBNC44MzMgNC44MzMgMCAwIDEgNi4zOTYgMi43MWwuNDM3LS4wNTVWMS41YS4xNjcuMTY3IDAgMCAxIC4zMzQgMHYxLjE1M2wuNDM3LjA1NmE0LjgzNCA0LjgzNCAwIDAgMSA0LjE4NyA0LjE4N1ptLS4zNTcgMS4zNTQuMS0uNTgzaC0xLjJhLjE2Ni4xNjYgMCAxIDEgMC0uMzM0aDEuMTk5bC0uMS0uNTgzQTQuNSA0LjUgMCAwIDAgNy43NSAzLjA2N2wtLjU4My0uMXYxLjJhLjE2Ny4xNjcgMCAwIDEtLjA1LjExOGwuMzA0LjMwMy0uMzAzLS4zMDNhLjE2Ny4xNjcgMCAwIDEtLjI4NS0uMTE4VjIuOTY4bC0uNTgzLjFBNC41IDQuNSAwIDAgMCAyLjU2NyA2Ljc1bC0uMS41ODNoMS4yYS4xNjcuMTY3IDAgMCAxIC4xMTguMjg1bC4zMDMuMzAzLS4zMDQtLjMwM2EuMTY3LjE2NyAwIDAgMS0uMTE3LjA0OUgyLjQ2OGwuMS41ODNhNC41IDQuNSAwIDAgMCAzLjY4MiAzLjY4M2wuNTgzLjF2LTEuMmEuMTY2LjE2NiAwIDEgMSAuMzM0IDB2MS4xOTlsLjU4My0uMWE0LjUgNC41IDAgMCAwIDMuNjgzLTMuNjgyWm0tNC41MjYtLjg4OWEuMTY3LjE2NyAwIDEgMSAuMTg2LjI3OC4xNjcuMTY3IDAgMCAxLS4xODYtLjI3OFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NyAxMC42NjZhMSAxIDAgMCAwIDEtMSAuNTE0LjUxNCAwIDAgMCAwLS4xbDEuODYtMS44NmguMzA2TDguOTA3IDguNzh2LjA1M2ExIDEgMCAxIDAgMiAwVjguNzhsMi40MjYtMi40NDdhMSAxIDAgMSAwLTEtMSAuNTIyLjUyMiAwIDAgMCAwIC4xTDkuOTI3IDcuODRIOS44Mkw4LjY2NyA2LjY2NmExIDEgMCAwIDAtMiAwbC0yIDJhMSAxIDAgMCAwIDAgMlptOSAyLjY2N0gyLjMzM1YyQS42NjcuNjY3IDAgMSAwIDEgMnYxMmEuNjY3LjY2NyAwIDAgMCAuNjY3LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyIDE0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptNSAwYTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptLTUgNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFabTUgMGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaTTcgMTRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWk0xOSA0aC0xVjNhMSAxIDAgMCAwLTIgMHYxSDhWM2ExIDEgMCAwIDAtMiAwdjFINWEzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1Y3YTMgMyAwIDAgMC0zLTNabTEgMTVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMS0xLTF2LTloMTZabTAtMTFINFY3YTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMVpNNyAxOGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTVcXFwiPjxwYXRoIGQ9XFxcIm02LjE0IDEwLjc0Mi4wMi4wNTguMDA3LjAxdi4wMzZhLjA2LjA2IDAgMCAxLS4wMDYuMDI3bC0uMDEuMDIyLS4wMDguMDIxYS4xLjEgMCAwIDEtLjA2LjA2bC0uMDIyLjAwOC0uMDIxLjAxYS4wNi4wNiAwIDAgMS0uMDI3LjAwNmgtLjAwNmEuMTY2LjE2NiAwIDAgMS0uMTA2LS4wNC4yNjYuMjY2IDAgMCAxLS4wNC0uMDY2bC0uMDA0LS4wMS0uMDA1LS4wMWEuMDYuMDYgMCAwIDEtLjAwNS0uMDI4di0uMDIzbC0uMDAxLS4wMjMtLjAwMS0uMDE4LjAwMy0uMDA3LjAxMi0uMDMzYS41NzYuNTc2IDAgMCAxIC4wMjMtLjAzLjE2Ni4xNjYgMCAwIDEgLjA0NC0uMDI2bC4wMTQtLjAwNWEuMTY3LjE2NyAwIDAgMSAuMDk2LS4wMWwuMDk0LS40OTEtLjA5NC40OWEuMTY2LjE2NiAwIDAgMSAuMDc3LjAzOGMuMDA5LjAxLjAxOC4wMjIuMDI2LjAzNFptLjY5My05LjMzNSAzLjk2MyAzLjk2My4wMjMuMDdhLjM3LjM3IDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgyLjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYyLjgzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OWwuMDE1LjAwNy4xMTYuMDY3aC4wNDZabS44NTQgMS4zNDZMNi44MzMgMS45djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDggNS4zMzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNNi41IDIuMTY3di0uNUgyLjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAxLjUgMi44MzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUg4YTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS42MTggNS4yMTVhLjE2Ny4xNjcgMCAwIDEgLjI4NS4xMTh2MS4zMzNhLjE2Ny4xNjcgMCAwIDEtLjMzNCAwVjcuNWMwLS4wNDQuMDE4LS4wODcuMDUtLjExOFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTVcXFwiPjxwYXRoIGQ9XFxcIm02LjE0IDEwLjc0Mi4wMi4wNTguMDA3LjAxdi4wMzZhLjA2LjA2IDAgMCAxLS4wMDYuMDI3bC0uMDEuMDIyLS4wMDguMDIxYS4xLjEgMCAwIDEtLjA2LjA2bC0uMDIyLjAwOC0uMDIxLjAxYS4wNi4wNiAwIDAgMS0uMDI3LjAwNmgtLjAwNmEuMTY2LjE2NiAwIDAgMS0uMTA2LS4wNC4yNjYuMjY2IDAgMCAxLS4wNC0uMDY2bC0uMDA0LS4wMS0uMDA1LS4wMWEuMDYuMDYgMCAwIDEtLjAwNS0uMDI4di0uMDIzbC0uMDAxLS4wMjMtLjAwMS0uMDE4LjAwMy0uMDA3LjAxMi0uMDMzYS41NzYuNTc2IDAgMCAxIC4wMjMtLjAzLjE2Ni4xNjYgMCAwIDEgLjA0NC0uMDI2bC4wMTQtLjAwNWEuMTY3LjE2NyAwIDAgMSAuMDk2LS4wMWwuMDk0LS40OTEtLjA5NC40OWEuMTY2LjE2NiAwIDAgMSAuMDc3LjAzOGMuMDA5LjAxLjAxOC4wMjIuMDI2LjAzNFptLjY5My05LjMzNSAzLjk2MyAzLjk2My4wMjMuMDdhLjM3LjM3IDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgyLjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYyLjgzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OWwuMDE1LjAwNy4xMTYuMDY3aC4wNDZabS44NTQgMS4zNDZMNi44MzMgMS45djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDggNS4zMzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNNi41IDIuMTY3di0uNUgyLjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAxLjUgMi44MzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUg4YTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS42MTggNS4yMTVhLjE2Ny4xNjcgMCAwIDEgLjI4NS4xMTh2MS4zMzNhLjE2Ny4xNjcgMCAwIDEtLjMzNCAwVjcuNWMwLS4wNDQuMDE4LS4wODcuMDUtLjExOFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45NiA4LjY2NmMtLjE0NyAwLS4zLS4wNDYtLjQ0Ny0uMDhhNi4yOSA2LjI5IDAgMCAxLS44NzMtLjI2IDEuMzMzIDEuMzMzIDAgMCAwLTEuNjUzLjY2N2wtLjE0Ny4zQTguMTIgOC4xMiAwIDAgMSA4LjA2NyA3Ljk2YTguMTIgOC4xMiAwIDAgMS0xLjMzNC0xLjc3NEw3LjAxMyA2YTEuMzMzIDEuMzMzIDAgMCAwIC42NjctMS42NTQgNi44ODcgNi44ODcgMCAwIDEtLjI2LS44NzNjLS4wMzMtLjE0Ny0uMDYtLjMtLjA4LS40NTNhMiAyIDAgMCAwLTItMS42NmgtMmEyIDIgMCAwIDAtMiAyLjI3MyAxMi42NjcgMTIuNjY3IDAgMCAwIDExLjAxMyAxMC45NzNoLjI1NGEyIDIgMCAwIDAgMS44MjctMS4xODUgMiAyIDAgMCAwIC4xNzMtLjgyMXYtMmEyIDIgMCAwIDAtMS42NDctMS45MzRabS4zMzMgNGEuNjY2LjY2NiAwIDAgMS0uNDgyLjY0MS43MDcuNzA3IDAgMCAxLS4yOS4wMjZBMTEuMzMzIDExLjMzMyAwIDAgMSAyLjcxMiAzLjQ4YS43MjcuNzI3IDAgMCAxIC4xNjctLjU0Ny42NjcuNjY3IDAgMCAxIC41LS4yMjdoMmEuNjY3LjY2NyAwIDAgMSAuNjY3LjUyNyA3LjQxNCA3LjQxNCAwIDAgMCAuNDA3IDEuNTczbC0uOTM0LjQzNGEuNjY3LjY2NyAwIDAgMC0uMzI3Ljg4NiA5LjY2IDkuNjYgMCAwIDAgNC42NjcgNC42NjcuNjY2LjY2NiAwIDAgMCAuNTA3IDAgLjY2NS42NjUgMCAwIDAgLjM4LS4zNDdsLjQxMy0uOTMzYy4zNDUuMTIzLjY5Ny4yMjYgMS4wNTMuMzA3LjE3OC4wNC4zNTguMDczLjU0LjFhLjY2Ny42NjcgMCAwIDEgLjUyNy42NjZsLjAxMyAyLjA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE1XFxcIj48cGF0aCBkPVxcXCJNMTAuOTE3IDkuNjY2aC0uNjU5bC0uMjMzLS4yMjVhNS40MTcgNS40MTcgMCAwIDAgMS4yMzMtNC40NUMxMC44NjcgMi42NzUgOC45MzMuODI1IDYuNi41NDFBNS40MiA1LjQyIDAgMCAwIC41NDIgNi42Yy4yODMgMi4zMzMgMi4xMzMgNC4yNjYgNC40NSA0LjY1OGE1LjQxNyA1LjQxNyAwIDAgMCA0LjQ1LTEuMjMzbC4yMjUuMjMzdi42NThsMy41NDEgMy41NDJhLjg4Ljg4IDAgMCAwIDEuMjQyIDAgLjg4Ljg4IDAgMCAwIDAtMS4yNDJsLTMuNTMzLTMuNTVabS01IDBhMy43NDUgMy43NDUgMCAwIDEtMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1IDMuNzUgMy43NDUgMy43NDUgMCAwIDEtMy43NSAzLjc1WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48bWFzayBpZD1cXFwicGVyaW9kLWljb25fc3ZnX19hXFxcIiBmaWxsPVxcXCIjZmZmXFxcIj48cGF0aCBkPVxcXCJNOCA5LjMzM0EuNjY3LjY2NyAwIDEgMCA4IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNOCAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0QS42NjcuNjY3IDAgMCAwIDggMTJabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNS42NjcuNjY3IDAgMCAwIDAgMS4zMzVaTTQuNjY3IDkuMzMzYS42NjcuNjY3IDAgMSAwIDAtMS4zMzMuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm04LTYuNjY2SDEyVjJhLjY2Ny42NjcgMCAxIDAtMS4zMzMgMHYuNjY3SDUuMzMzVjJBLjY2Ny42NjcgMCAxIDAgNCAydi42NjdoLS42NjdhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjYuNjY2SDMuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2NnYtNmgxMC42NjZ2NlptMC03LjMzNEgyLjY2N3YtLjY2NkEuNjY3LjY2NyAwIDAgMSAzLjMzMyA0aDkuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3di42NjZaTTQuNjY3IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0WlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4zMzNcXFwiIGQ9XFxcIk04IDkuMzMzQS42NjcuNjY3IDAgMSAwIDggOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk04IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRBLjY2Ny42NjcgMCAwIDAgOCAxMlptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM1LjY2Ny42NjcgMCAwIDAgMCAxLjMzNVpNNC42NjcgOS4zMzNhLjY2Ny42NjcgMCAxIDAgMC0xLjMzMy42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtNi42NjZIMTJWMmEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdINS4zMzNWMkEuNjY3LjY2NyAwIDEgMCA0IDJ2LjY2N2gtLjY2N2EyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZIMy4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY2di02aDEwLjY2NnY2Wm0wLTcuMzM0SDIuNjY3di0uNjY2QS42NjcuNjY3IDAgMCAxIDMuMzMzIDRoOS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2LjY2NlpNNC42NjcgMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaXFxcIiBtYXNrPVxcXCJ1cmwoI3BlcmlvZC1pY29uX3N2Z19fYSlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNOC4zMzMgNy4zMzN2LjMzNGgyLjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZIOC4zMzN2Mi4zMzRhLjMzMy4zMzMgMCAxIDEtLjY2NiAwVjguMzMzSDUuMzMzYS4zMzMuMzMzIDAgMCAxIDAtLjY2NmgyLjMzNFY1LjMzM2EuMzMzLjMzMyAwIDAgMSAuNjY2IDB2MlpNNC40ODEgMi43MzRhNi4zMzMgNi4zMzMgMCAxIDEgNy4wMzggMTAuNTMyQTYuMzMzIDYuMzMzIDAgMCAxIDQuNDggMi43MzRabS4zNyA5Ljk3OGE1LjY2NiA1LjY2NiAwIDEgMCA2LjI5Ny05LjQyMyA1LjY2NiA1LjY2NiAwIDAgMC02LjI5NiA5LjQyM1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOC4xNjcgNy4zMzR2LjVoNC41YS4xNjcuMTY3IDAgMSAxIDAgLjMzM2gtNC41djQuNWEuMTY2LjE2NiAwIDEgMS0uMzM0IDB2LTQuNWgtNC41YS4xNjcuMTY3IDAgMCAxIDAtLjMzM2g0LjV2LTQuNWEuMTY3LjE2NyAwIDEgMSAuMzM0IDB2NFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjI0MiAxMC44NzVhLjc1Mi43NTIgMCAwIDAtLjc1Ljc1djEuMzM3QTUuOTggNS45OCAwIDAgMSAyLjk5MiA5YzAtLjIyLjAxMy0uNDQuMDQtLjY2YS43NS43NSAwIDEgMC0xLjQ5LS4xOCA2Ljg4IDYuODggMCAwIDAtLjA1Ljg0IDcuNDczIDcuNDczIDAgMCAwIDEuODEzIDQuODc1SDIuMjQyYS43NS43NSAwIDEgMCAwIDEuNWgzYS43MzYuNzM2IDAgMCAwIC41OTYtLjMxNmMuMDA5LS4wMTIuMDItLjAyLjAyOC0uMDMzLjAwNS0uMDA3LjAwNS0uMDE2LjAxLS4wMjRhLjcyNC43MjQgMCAwIDAgLjA4LS4xOTMuNzE1LjcxNSAwIDAgMCAuMDIzLS4xMTdjLjAwMi0uMDIzLjAxMy0uMDQzLjAxMy0uMDY3di0zYS43NS43NSAwIDAgMC0uNzUtLjc1Wk02LjM2NyA0LjVINS4wM0E1Ljk4IDUuOTggMCAwIDEgOC45OTIgM2MuMjIgMCAuNDQuMDEzLjY2LjA0YS43NS43NSAwIDEgMCAuMTgtMS40OSA2LjkyIDYuOTIgMCAwIDAtLjg0LS4wNSA3LjQ3MyA3LjQ3MyAwIDAgMC00Ljg3NSAxLjgxM1YyLjI1YS43NS43NSAwIDAgMC0xLjUgMHYzYy4wMDUuMDUuMDE1LjA5OS4wMy4xNDZ2LjAwMWMuMDE4LjA5Mi4wNTQuMTguMTA2LjI1OWwuMDA4LjAxMmEuNzMuNzMgMCAwIDAgLjE4NC4xODVjLjAwOC4wMDYuMDEyLjAxNS4wMi4wMjEuMDExLjAwNy4wMjMuMDEuMDM0LjAxNmEuNzE4LjcxOCAwIDAgMCAuMzMxLjEwM2MuMDEzIDAgLjAyNC4wMDcuMDM3LjAwN2gzYS43NS43NSAwIDAgMCAwLTEuNVptOC45NyA4LjEwM2EuNzI0LjcyNCAwIDAgMC0uMTA1LS4yNTlsLS4wMDktLjAxMmEuNzI4LjcyOCAwIDAgMC0uMTgzLS4xODVjLS4wMDktLjAwNi0uMDEzLS4wMTUtLjAyMS0uMDIxLS4wMDgtLjAwNS0uMDE4LS4wMDYtLjAyNi0uMDFhLjg2NS44NjUgMCAwIDAtLjMwNy0uMTAyYy0uMDI0LS4wMDItLjA0NC0uMDE0LS4wNjktLjAxNGgtM2EuNzUuNzUgMCAxIDAgMCAxLjVoMS4zMzdBNS45OCA1Ljk4IDAgMCAxIDguOTkyIDE1Yy0uMjIgMC0uNDQtLjAxMy0uNjYtLjA0YS43NS43NSAwIDAgMC0uMTggMS40OWMuMjc5LjAzMy41Ni4wNS44NC4wNWE3LjQ3MyA3LjQ3MyAwIDAgMCA0Ljg3NS0xLjgxM3YxLjA2M2EuNzUuNzUgMCAxIDAgMS41IDB2LTNhLjcxMi43MTIgMCAwIDAtLjAzLS4xNDZabS40MDUtOC40NzhhLjc1Ljc1IDAgMSAwIDAtMS41aC0zYS43MTYuNzE2IDAgMCAwLS4xNDQuMDI5bC0uMDA1LjAwMWEuNzI2LjcyNiAwIDAgMC0uMjU1LjEwNWwtLjAxNS4wMWEuNzMyLjczMiAwIDAgMC0uMTg0LjE4MmMtLjAwNi4wMDktLjAxNS4wMTMtLjAyLjAyLS4wMDYuMDA5LS4wMDYuMDE4LS4wMTEuMDI3YS44NTcuODU3IDAgMCAwLS4xMDIuMzFjLS4wMDIuMDIyLS4wMTQuMDQyLS4wMTQuMDY2djNhLjc1Ljc1IDAgMSAwIDEuNSAwVjUuMDM4QTUuOTgyIDUuOTgyIDAgMCAxIDE0Ljk5MiA5YzAgLjIyLS4wMTMuNDQtLjA0LjY2YS43NTEuNzUxIDAgMCAwIDEuNDkuMThjLjAzNC0uMjc5LjA1LS41Ni4wNS0uODRhNy40NzMgNy40NzMgMCAwIDAtMS44MTMtNC44NzVoMS4wNjNaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk04LjE2NyAzLjZ2LS44MDVsLS41Ny41NjktLjg2Ni44NjdhLjMxMi4zMTIgMCAwIDEtLjQ2MiAwIC4zMTIuMzEyIDAgMCAxIDAtLjQ2MmwyLTItLjIzNC0uMjM1LjIzNC4yMzVhLjMxMi4zMTIgMCAwIDEgLjQ2MiAwbC4yMzMtLjIzNC0uMjMzLjIzNCAyIDJhLjMxMi4zMTIgMCAwIDEgMCAuNDYyLjM2OC4zNjggMCAwIDEtLjEwOC4wOC4yOTIuMjkyIDAgMCAxLS4xMjMuMDIyLjI5Mi4yOTIgMCAwIDEtLjEyMy0uMDIxLjM2OC4zNjggMCAwIDEtLjEwOC0uMDgxbC0uODY3LS44NjctLjU2OS0uNTd2OC41MzljMCAuMTI0LS4wNC4yMDItLjA4NS4yNDgtLjA0Ni4wNDUtLjEyNC4wODUtLjI0OC4wODVzLS4yMDItLjA0LS4yNDgtLjA4NWMtLjA0NS0uMDQ2LS4wODUtLjEyNC0uMDg1LS4yNDhWMy42Wm0zIDIuNzMzSDEyLjVjLjk1IDAgMS42NjcuNzE3IDEuNjY3IDEuNjY3djQuNjY2YzAgLjk1LS43MTggMS42NjctMS42NjcgMS42NjdoLThjLS45NSAwLTEuNjY3LS43MTctMS42NjctMS42NjdWOGMwLS45NS43MTgtMS42NjcgMS42NjctMS42NjdoMS4zMzNjLjEyNSAwIC4yMDIuMDQuMjQ4LjA4Ni4wNDYuMDQ1LjA4Ni4xMjMuMDg2LjI0NyAwIC4xMjUtLjA0LjIwMi0uMDg2LjI0OC0uMDQ2LjA0Ni0uMTIzLjA4Ni0uMjQ4LjA4Nkg0LjVhMSAxIDAgMCAwLS43MTkuMjhBMSAxIDAgMCAwIDMuNSA4djQuNjY2YTEgMSAwIDAgMCAuMjgxLjcyIDEgMSAwIDAgMCAuNzE5LjI4aDhhMSAxIDAgMCAwIC43MTktLjI4IDEgMSAwIDAgMCAuMjgxLS43MlY4YTEgMSAwIDAgMC0uMjgxLS43MkExIDEgMCAwIDAgMTIuNSA3aC0xLjMzM2MtLjEyNSAwLS4yMDItLjA0LS4yNDgtLjA4Ni0uMDQ2LS4wNDYtLjA4Ni0uMTIzLS4wODYtLjI0OCAwLS4xMjQuMDQtLjIwMi4wODYtLjI0Ny4wNDYtLjA0Ni4xMjMtLjA4Ni4yNDgtLjA4NlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMjBcXFwiPjxwYXRoIGQ9XFxcIk0xMi42NjcgN3YuMzMzSDEzQTIuNjY3IDIuNjY3IDAgMCAxIDE1LjY2NyAxMHY3QTIuNjY3IDIuNjY3IDAgMCAxIDEzIDE5LjY2N0gzQTIuNjY3IDIuNjY3IDAgMCAxIC4zMzMgMTd2LTdBMi42NjcgMi42NjcgMCAwIDEgMyA3LjMzM2guMzMzVjVhNC42NjcgNC42NjcgMCAwIDEgOS4zMzQgMHYyWk0xMSA3LjMzM2guMzMzVjVhMy4zMzMgMy4zMzMgMCAwIDAtNi42NjYgMHYyLjMzM0gxMVptMi45NDMgMTAuNjFjLjI1LS4yNS4zOS0uNTkuMzktLjk0M3YtN0ExLjMzMyAxLjMzMyAwIDAgMCAxMyA4LjY2N0gzQTEuMzMzIDEuMzMzIDAgMCAwIDEuNjY3IDEwdjdBMS4zMzMgMS4zMzMgMCAwIDAgMyAxOC4zMzNoMTBjLjM1NCAwIC42OTMtLjE0Ljk0My0uMzlaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNSAxNFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNNy41IDQuNjY2YTEgMSAwIDAgMC0uODY5LjVsLS4wMDYuMDEyYS4zMzMuMzMzIDAgMCAxLS4yMDMuMTY2bC4wOTMuMzItLjA5My0uMzJhLjMzMy4zMzMgMCAwIDEtLjM2LS4xMmwtLjI2Ni4yLjI2Ny0uMmEuMzMzLjMzMyAwIDAgMS0uMDE1LS4zNzlsLjAwNC0uMDA2LjAwMy0uMDA2QTEuNjY3IDEuNjY3IDAgMCAxIDcuNSA0YTEuNjY3IDEuNjY3IDAgMCAxIC41NTQgMy4yMzNsLS4yMi4wOHYuMzUzYS4zMzMuMzMzIDAgMSAxLS42NjYgMFY3YS4zMzMuMzMzIDAgMCAxIC4zMzMtLjMzNCAxIDEgMCAwIDAgMC0yWm0wIDBWNWwuMDAxLS4zMzRabS0uMzE2IDQuODk4LjAxLS4wMi4wMDgtLjAyM2EuMTczLjE3MyAwIDAgMSAuMDItLjAzOSAxLjIgMS4yIDAgMCAxIC4wNDYtLjA2LjMzMy4zMzMgMCAwIDEgLjEwNC0uMDY3bC0uMTI4LS4zMDguMTI4LjMwOGEuMzMzLjMzMyAwIDAgMSAuMzY1LjA3My4zMzMuMzMzIDAgMCAxIC4wOTYuMjM2di4wMTVhLjMzMy4zMzMgMCAwIDEtLjAyLjEyNnYuMDAxYS4yNjcuMjY3IDAgMCAxLS4wNjIuMDk4bC4yMzYuMjM2LS4yMzYtLjIzNmEuMjY3LjI2NyAwIDAgMS0uMDk4LjA2MmwtLjAxLjAwNC0uMDExLjAwNWEuMjkzLjI5MyAwIDAgMS0uMjM3IDBsLS4wMS0uMDA1LS4wMTItLjAwNGEuMjY3LjI2NyAwIDAgMS0uMDk3LS4wNjJsLS4yMzYuMjM2LjIzNi0uMjM2YS4yNjcuMjY3IDAgMCAxLS4wNjMtLjA5OGwtLjAwNS0uMDE0LS4wMDctLjAxNWEuMjI3LjIyNyAwIDAgMS0uMDIxLS4xMDJ2LS4wMzNhLjU3My41NzMgMCAwIDEtLjAwMi0uMDY0LjA5NC4wOTQgMCAwIDEgLjAwNi0uMDE0Wk0zLjk4IDEuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSAzLjk4IDEuNzM0Wm0uMzcgOS45NzdhNS42NjYgNS42NjYgMCAxIDAgNi4yOTctOS40MjIgNS42NjYgNS42NjYgMCAwIDAtNi4yOTYgOS40MjJaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBmaWxsPVxcXCJyZWRcXFwiIGQ9XFxcIm04LjQxIDcgNC4zLTQuMjlhMS4wMDQgMS4wMDQgMCAwIDAtMS40Mi0xLjQyTDcgNS41OWwtNC4yOS00LjNhMS4wMDQgMS4wMDQgMCAxIDAtMS40MiAxLjQyTDUuNTkgN2wtNC4zIDQuMjlhLjk5OS45OTkgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBMNyA4LjQxbDQuMjkgNC4zYTEuMDAxIDEuMDAxIDAgMCAwIDEuNjM5LS4zMjUgMSAxIDAgMCAwLS4yMi0xLjA5NUw4LjQxIDdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDYgNlxcXCI+PGNpcmNsZSBjeD1cXFwiM1xcXCIgY3k9XFxcIjNcXFwiIHI9XFxcIjNcXFwiIGZpbGw9XFxcIiNGRjcyNjRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy45OTkgNy4zMzNjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjcgMCAxLjkzMy0xIDMuNjY2LTIuNjY3IDQuNi0yLjUzMyAxLjQ2Ni01LjguNi03LjI2Ni0xLjkzNC0xLjQ2Ny0yLjUzMy0uNi01LjggMS45MzMtNy4yNjZhNS4zMzggNS4zMzggMCAwIDEgNi41MzMuOTMzaC0xLjZjLS40IDAtLjY2Ni4yNjctLjY2Ni42NjdzLjI2Ni42NjYuNjY2LjY2NmgzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2VjJjMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzEyLjYgMS42IDEyLjYgMnYxLjJjLTEuMjY3LTEuMi0yLjg2Ny0xLjg2Ny00LjYtMS44NjctMy42NjcgMC02LjY2NyAzLTYuNjY3IDYuNjY3IDAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAzLjY2NiAwIDYuNjY2LTMgNi42NjYtNi42NjYgMC0uNC0uMjY2LS42NjctLjY2Ni0uNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE5XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwibTEzIDE2LjMzMi0uNTMzLS4zOTgtLjcxMy0uNTM0YS4zMzMuMzMzIDAgMCAwLS40IDBsMS42NDYuOTMyWm0wIDBWNS4zMzNIM3YxMC45OTlsLjUzMy0uMzk4LjcxMy0uNTM0YS4zMzMuMzMzIDAgMCAxIC40IDBsMS4zNzQgMS4wMzMuMi4xNS4yLS4xNUw3LjggMTUuNGEuMzMzLjMzMyAwIDAgMSAuNCAwbDEuMzggMS4wMzMuMi4xNS4yLS4xNSAxLjM3My0xLjAzMyAxLjY0Ny45MzJabS0xMC4xMzMuOTM0YS4zMzQuMzM0IDAgMCAxLS40ODQtLjA5bC0uMjgzLjE3NC4yODMtLjE3NWEuMzM0LjMzNCAwIDAgMS0uMDUtLjE3NVY1YS4zMzMuMzMzIDAgMCAxIC4zMzQtLjMzM2gxMC42NjZhLjMzMy4zMzMgMCAwIDEgLjMzNC4zMzN2MTEuOTk5YS4zMzQuMzM0IDAgMCAxLS4wNS4xNzRsLjI4My4xNzUtLjI4My0uMTc1YS4zMzMuMzMzIDAgMCAxLS4zMTQuMTU4bC0uMDI4LjMzMi4wMjgtLjMzMmEuMzM0LjMzNCAwIDAgMS0uMTctLjA2NWwtMS4zOC0xLjAzMy0uMi0uMTUtLjIuMTUtMS4zNzMgMS4wMzRhLjMzMy4zMzMgMCAwIDEtLjQgMEw4LjIgMTYuMjMybC0uMi0uMTUtLjIuMTUtMS4zOCAxLjAzM2EuMzMzLjMzMyAwIDAgMS0uNCAwbC0xLjM3My0xLjAzMi0uMi0uMTUtLjIuMTUtMS4zOCAxLjAzMlptMi4yMy00LjAzLS4yMzUuMjM1LjIzNi0uMjM1YS4zMzMuMzMzIDAgMCAxIDAtLjQ3MmwtLjIzNi0uMjM2LjIzNi4yMzZhLjMzMy4zMzMgMCAwIDEgLjIzNS0uMDk3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg1LjMzM2EuMzMzLjMzMyAwIDAgMS0uMjM1LS4wOTdaTTEwLjY2OCA4aC00YS4zMzMuMzMzIDAgMCAxIDAtLjY2N2g0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N1ptMCAyLjY2N0g1LjMzM2EuMzMzLjMzMyAwIDEgMSAwLS42NjdoNS4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTMgMTJoMThtLTUtNSA1IDUtNSA1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0zLjY0NCAxMi4xNDYgMy45OTgtMy45OTguNzA3LjcwNy0zLjk5OCAzLjk5OC0uNzA3LS43MDdaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTguNSAxNS41YS41MDMuNTAzIDAgMCAxLS4zOTMtLjE5LjUuNSAwIDAgMS0uMTAyLS4yNGwtLjUtMy41IDEtLjE0LjM3NSAyLjYzNSAxLjYyLTEuMzA1VjlhLjUuNSAwIDAgMSAuMTQ1LS4zNTVMMTIuNjggNi42MUE0LjQ3IDQuNDcgMCAwIDAgMTQgMy40M1YyLjVoLS45M2E0LjQ3IDQuNDcgMCAwIDAtMy4xOCAxLjMyTDcuODU1IDUuODU1QS41LjUgMCAwIDEgNy41IDZIMy43NEwyLjQzNSA3LjYzbDIuNjM1LjM3NS0uMTQgMS0zLjUtLjVhLjUuNSAwIDAgMS0uMzItLjgxbDItMi41QS41LjUgMCAwIDEgMy41IDVoMy43OTVMOS4xOCAzLjExYTUuNDYgNS40NiAwIDAgMSAzLjg5LTEuNjFIMTRhMSAxIDAgMCAxIDEgMXYuOTNhNS40NiA1LjQ2IDAgMCAxLTEuNjEgMy44OUwxMS41IDkuMjA1VjEzYS40OTkuNDk5IDAgMCAxLS4xOS4zOWwtMi41IDJhLjUuNSAwIDAgMS0uMzEuMTFaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBkPVxcXCJtMTAuMTY1IDkuNjYyLjE2My4xNjQuMjEtLjA5NmExLjcyIDEuNzIgMCAwIDEgMS44OTUuMzE0bDEuMzc2IDEuNDA5LjIzOC0uMjMzLS4yMzMuMjM4YTEuNjY1IDEuNjY1IDAgMCAxIDAgMi4zODRsLS4wMDMuMDAyYTEuNjY3IDEuNjY3IDAgMCAxLTIuMzU1IDBsLTEuNDEyLTEuNDEyYTEuNjY3IDEuNjY3IDAgMCAxLS4yOTMtMS45MmwuMTEtLjIxNi0uMTcyLS4xNzItLjU5My0uNTkzLS4yMDQtLjIwNC0uMjMxLjE3M2E0LjMzMyA0LjMzMyAwIDEgMSAuODcyLS44NzNsLS4xNzMuMjMxLjIwNS4yMDQuNi42Wm0yLjg1MyAzLjg5OGExIDEgMCAwIDAgLjU0My0uNTQyLjk5OS45OTkgMCAwIDAtLjIxOS0xLjA5NGwtMS40MTItMS40MTJhMSAxIDAgMCAwLTEuNjM3LjMyMyAxIDEgMCAwIDAgLjIxOSAxLjA5NWwxLjQxMiAxLjQxMXYuMDAxYS45OTkuOTk5IDAgMCAwIDEuMDk0LjIxOFpNNi43NTIgOS42M2EzLjY2NyAzLjY2NyAwIDEgMC0xLjQyNC03LjE5NEEzLjY2NyAzLjY2NyAwIDAgMCA2Ljc1MiA5LjYzWlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMiA2LjM2Ni0xLjI2LS40Mi41OTMtMS4xODZBLjY2Ny42NjcgMCAwIDAgMTMuNDIgNGwtMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwLS43NjctLjEyN2wtMS4xODcuNTkzLS40Mi0xLjI2QS42NjcuNjY3IDAgMCAwIDkgMS4zMzNoLTJhLjY2Ny42NjcgMCAwIDAtLjYzNC40NTNsLS40MiAxLjI2LTEuMTg2LS41OTNhLjY2Ny42NjcgMCAwIDAtLjc2LjEyN0wyLjU3OSA0YS42NjcuNjY3IDAgMCAwLS4xMjcuNzY2bC41OTMgMS4xODctMS4yNi40MkEuNjY3LjY2NyAwIDAgMCAxLjMzMiA3djJhLjY2Ny42NjcgMCAwIDAgLjQ1My42MzNsMS4yNi40Mi0uNTkzIDEuMTg3YS42NjcuNjY3IDAgMCAwIC4xMjcuNzZsMS40MiAxLjQyYS42NjcuNjY3IDAgMCAwIC43NjYuMTI2bDEuMTg3LS41OTMuNDIgMS4yNmEuNjY3LjY2NyAwIDAgMCAuNjMzLjQ1M2gyYS42NjcuNjY3IDAgMCAwIC42MzQtLjQ1M2wuNDItMS4yNiAxLjE4Ni41OTNBLjY2Ni42NjYgMCAwIDAgMTIgMTMuNDJsMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwIC4xMjYtLjc2N2wtLjU5My0xLjE4NyAxLjI2LS40MkEuNjY3LjY2NyAwIDAgMCAxNC42NjUgOVY3YS42NjcuNjY3IDAgMCAwLS40NTMtLjYzNFptLS44OCAyLjE1NC0uOC4yNjZhMS4zMzQgMS4zMzQgMCAwIDAtLjc3MyAxLjg4bC4zOC43Ni0uNzM0LjczNC0uNzQtLjRhMS4zMzUgMS4zMzUgMCAwIDAtMS44Ni43NzNsLS4yNjYuOGgtMS4wNmwtLjI2Ny0uOGExLjMzMyAxLjMzMyAwIDAgMC0xLjg4LS43NzNsLS43Ni4zOC0uNzMzLS43MzQuNC0uNzRhMS4zMzMgMS4zMzMgMCAwIDAtLjc3NC0xLjg4bC0uOC0uMjY2VjcuNDhsLjgtLjI2N2ExLjMzMyAxLjMzMyAwIDAgMCAuNzc0LTEuODhsLS4zOC0uNzQuNzMzLS43MzMuNzQuMzhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC0uNzc0bC4yNjctLjhoMS4wNGwuMjY2LjhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC43NzRsLjc2LS4zOC43MzQuNzMzLS40Ljc0YTEuMzMzIDEuMzMzIDAgMCAwIC43NzMgMS44NmwuOC4yNjd2MS4wNlpNNy45OTkgNS4zMzNhMi42NjcgMi42NjcgMCAxIDAgMCA1LjMzMyAyLjY2NyAyLjY2NyAwIDAgMCAwLTUuMzMzWm0wIDRhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2NyAxLjMzMyAxLjMzMyAwIDAgMSAwIDIuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuNzIzIDIuNzM4YS43NS43NSAwIDAgMC0uNjMtLjE1IDYgNiAwIDAgMS00LjY2NS0uOTUzLjc1Ljc1IDAgMCAwLS44NTYgMCA2IDYgMCAwIDEtNC42NjQuOTUzLjc1Ljc1IDAgMCAwLS45MDguNzM1VjguOTFhNi43NSA2Ljc1IDAgMCAwIDIuODI3IDUuNDk4bDIuNzM4IDEuOTVhLjc1Ljc1IDAgMCAwIC44NyAwbDIuNzM3LTEuOTVBNi43NSA2Ljc1IDAgMCAwIDE1IDguOTFWMy4zMjNhLjc0OS43NDkgMCAwIDAtLjI3Ny0uNTg1Wk0xMy41IDguOTFhNS4yNDkgNS4yNDkgMCAwIDEtMi4xOTcgNC4yNzVMOSAxNC44MjhsLTIuMzAzLTEuNjQzQTUuMjUgNS4yNSAwIDAgMSA0LjUgOC45MVY0LjE4NUE3LjUgNy41IDAgMCAwIDkgMy4xNDNhNy41IDcuNSAwIDAgMCA0LjUgMS4wNDJWOC45MVptLTMuMzQ1LTEuNzE3TDguMTM3IDkuMjE4bC0uNjY3LS42NzVhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjVsMS4yIDEuMmEuNzUuNzUgMCAwIDAgMS4wNjUgMGwyLjU4LTIuNTU4YS43NTMuNzUzIDAgMCAwLTEuMDY1LTEuMDY1bC0uMDMuMDA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA5YTEuODcgMS44NyAwIDEgMCAzLjc0IDBBMS44NyAxLjg3IDAgMCAwIDYgOVpcXFwiIGZpbGw9XFxcIiM2ODc5N0VcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4yNzMgNS43Njd2LS4wNGE2LjY2NyA2LjY2NyAwIDAgMC0xMi41Mi0uMDQuNTY3LjU2NyAwIDAgMC0uMDUzLjE2IDYuNjY3IDYuNjY3IDAgMSAwIDEyLjU3My0uMDhaTTggMi42NjdhNS4zMzMgNS4zMzMgMCAwIDEgNC42MTMgMi42NjZoLS44YTIgMiAwIDAgMC0zLjA4LjE0N0EyLjExMyAyLjExMyAwIDAgMCA4IDUuMzMzYy0uMjUxLjAwNS0uNS4wNTUtLjczMy4xNDdhMiAyIDAgMCAwLTMuMDgtLjE0N2gtLjhBNS4zMzMgNS4zMzMgMCAwIDEgOCAyLjY2N1ptMyA0YS42NjcuNjY3IDAgMSAxLTEuMzM0IDAgLjY2Ny42NjcgMCAwIDEgMS4zMzQgMFptLTQuNjY3IDBhLjY2Ny42NjcgMCAxIDEtMS4zMzMgMCAuNjY3LjY2NyAwIDAgMSAxLjMzMyAwWk04IDEzLjMzM0E1LjMzMyA1LjMzMyAwIDAgMSAyLjY2NyA4Yy4wMDMtLjQ1LjA2LS44OTguMTczLTEuMzMzaC44MjdhMiAyIDAgMCAwIDQgLjEyLjY2Ny42NjcgMCAwIDEgLjY2NiAwIDIgMiAwIDEgMCA0LS4xMmguODI3Yy4xMTIuNDM1LjE3Ljg4My4xNzMgMS4zMzNBNS4zMzQgNS4zMzQgMCAwIDEgOCAxMy4zMzNabTEuNTczLTMuODQ2YTIuNTA3IDIuNTA3IDAgMCAxLTMuMTQ2IDAgLjY2Ny42NjcgMCAwIDAtLjg1NCAxLjAyNiAzLjc4NyAzLjc4NyAwIDAgMCA0Ljg1NCAwIC42NjguNjY4IDAgMCAwLS44NTQtMS4wMjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDkgMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEuOTU1IDguMzMzaDQuNjdsLTIuMzM2IDIuMjU0LTIuMzM0LTIuMjU0Wm0xLjg0NCAzLjE5NGMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40MTQuMTMyLTEuMTM0LS40ODMtMS4xMzRIMS4xMjZjLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTYzIDMuMDU0Wm0tMi42OC02Ljg2SDcuNDZjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMNC43OC40NjdhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDItLjEzMiAxLjE0LjQ4MyAxLjE0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCA5IDEyXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNi42MjQgMy42NjdoLTQuNjdMNC4yOSAxLjQxM2wyLjMzNSAyLjI1NFpNNC43OC40NzNhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDE0LS4xMzIgMS4xMzQuNDgzIDEuMTM0aDYuMzM0Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDQuNzguNDczWm0yLjY4IDYuODZIMS4xMTljLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTcgMy4wNmMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40Mi4xMzItMS4xNC0uNDgzLTEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjlcXFwiIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk02LjYyNSAzLjY2N2gtNC42N0w0LjI5IDEuNDE0bDIuMzM1IDIuMjUzWk00Ljc4LjQ3NGEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNS40MTMtLjEzMSAxLjEzMy40ODMgMS4xMzNoNi4zMzVjLjYxNSAwIC45MjUtLjcyLjQ5LTEuMTRMNC43OC40NzRabTIuNjggNi44NkgxLjEyYy0uNjE1IDAtLjkyNi43Mi0uNDkxIDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDUuMjYuOTc1IDBsMy4xNy0zLjA2Yy40MzUtLjQyLjEzMS0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC44OSA2LjQ0N0EuNjY2LjY2NiAwIDAgMCAxNC4zMTYgNmwtMy43OTMtLjU1M0w4LjgyMyAyYS42NjcuNjY3IDAgMCAwLTEuMiAwbC0xLjcgMy40NEwyLjEzIDZhLjY2Ny42NjcgMCAwIDAtLjU0LjQ1My42NjcuNjY3IDAgMCAwIC4xNjYuNjY3TDQuNTEgOS43ODdsLS42NjcgMy43ODZhLjY2Ny42NjcgMCAwIDAgLjk2Ny43MTRsMy40MTMtMS43OCAzLjQgMS43ODZjLjA5NC4wNTMuMi4wOC4zMDcuMDhhLjY2Ny42NjcgMCAwIDAgLjYyNC0uNDIuNjY2LjY2NiAwIDAgMCAuMDM2LS4zNzNsLS42NjctMy43ODcgMi43NTMtMi42NjZhLjY2Ny42NjcgMCAwIDAgLjIxNC0uNjhabS00LjEgMi42NjZhLjY2Ni42NjYgMCAwIDAtLjE5NC41OTRsLjQ4IDIuNzkzLTIuNTA2LTEuMzMzYS42NjYuNjY2IDAgMCAwLS42MjcgMEw1LjQzNiAxMi41bC40OC0yLjc5M2EuNjY3LjY2NyAwIDAgMC0uMTkzLS41OTRsLTItMiAyLjgwNy0uNDA2YS42NjcuNjY3IDAgMCAwIC41MDYtLjM2N0w4LjIyMyAzLjhsMS4yNTMgMi41NDdhLjY2Ny42NjcgMCAwIDAgLjUwNy4zNjZsMi44MDcuNDA3LTIgMS45OTNaXFxcIiBmaWxsPVxcXCIjMDZEQkU0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMSAyMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTYuNDE2IDYuMzc1YS44My44MyAwIDAgMC0xLjIwNCAwTDguNzY2IDEyLjgybC0yLjY2NC0yLjY2NWEuODMuODMgMCAwIDAtMS4yMDQgMCAuODMuODMgMCAwIDAgMCAxLjIwNGwzLjI2NiAzLjI2NmEuNzguNzggMCAwIDAgLjYwMi4yNTguNzguNzggMCAwIDAgLjYwMi0uMjU4bDcuMDQ4LTcuMDQ4YS44My44MyAwIDAgMCAwLTEuMjAzWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiMS4xODhcXFwiIHk9XFxcIjEuMzc1XFxcIiB3aWR0aD1cXFwiMjEuNjI1XFxcIiBoZWlnaHQ9XFxcIjIxLjYyXFxcIiByeD1cXFwiMS43MjZcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiLz48cGF0aCBkPVxcXCJNMTYuNDcyIDkuNTlhNC44OTYgNC44OTYgMCAwIDAtOS4zMDQgMS4yMjggMi44OTMgMi44OTMgMCAwIDAtLjE0NCA1LjQ4Ny44ODguODg4IDAgMCAwIC45MDUtMS41MjRsLS4xMjUuMTguMTI1LS4xOGEuODkuODkgMCAwIDAtLjMzLS4xNDIgMS4xMTUgMS4xMTUgMCAwIDEtLjcyLTEuMDUzdi0uMDAyYTEuMTE1IDEuMTE1IDAgMCAxIDEuMTE1LTEuMTE2Ljg4OS44ODkgMCAwIDAgLjg4OC0uODg4aC0uMjJtNy44MS0xLjk5LTEuMzExLjkyMWEzLjM0IDMuMzQgMCAwIDAtNi41IDEuMDY5bTcuODExLTEuOTlhMy41NiAzLjU2IDAgMCAxLS4yNCA2LjgxMmwtLjAyNy4wMDdoLS4xODNhLjg5My44OTMgMCAwIDEtLjIyNS0xLjc3MyAxLjc4MyAxLjc4MyAwIDAgMC0uMTU0LTMuNDY3bS44My0xLjU3OS0uODMgMS41NzltLTYuOTgxLjQxLjIyLjAwMmEzLjEyIDMuMTIgMCAwIDEgNi4wNy0uOTk4Ljg4OC44ODggMCAwIDAgLjY5MS41ODZtLTYuOTgxLjQxYS42NjguNjY4IDAgMCAxLS42NjguNjY5IDEuMzM2IDEuMzM2IDAgMCAwLTEuMzM2IDEuMzM2bDguOTg1LTIuNDE1bS02LjI3NiA0LjkwOCAxLjMzNiAxLjMzNmEuODg3Ljg4NyAwIDAgMCAxLjI2MSAwbDIuNjcxLTIuNjcxLjAwMS0uMDAxYS44ODkuODg5IDAgMSAwLTEuMjYxLTEuMjUzbC0yLjA0MSAyLjA0MS0uNzA2LS43MDVhLjg4OC44ODggMCAxIDAtMS4yNjEgMS4yNTNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi40NDFcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNzk5N0JcXFwiIHN0cm9rZT1cXFwiIzE3OTk3QlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtNS43MTggNy45NjIuMjM2LjIzNi4yMzUtLjIzNiAyLjg2LTIuODY2YS4zMzMuMzMzIDAgMCAxIC40NyAwIC4zMzMuMzMzIDAgMCAxIDAgLjQ3NGwtLjAwMS4wMDEtMy4zMzMgMy4zMzJhLjMzMy4zMzMgMCAwIDEtLjQ3IDBMNC4xNDkgNy4zMzFsLS4wMDktLjAwOS0uMDEtLjAwOWEuMzMzLjMzMyAwIDEgMSAuNDctLjQ3bC4wMDguMDEuMDEuMDEgMS4xIDEuMVpNMy40OCAxLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgMy40OCAxLjczNFptLjM3IDkuOTc4YTUuNjY3IDUuNjY3IDAgMSAwIDYuMjk3LTkuNDI1IDUuNjY3IDUuNjY3IDAgMCAwLTYuMjk2IDkuNDI1WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTYuODc1IDEwLjcyOWEuNjY1LjY2NSAwIDAgMS0uNDcxLS4xOTZMNC41MjkgOC42NThhLjY2Ny42NjcgMCAwIDEgLjk0Mi0uOTQybDEuNDA0IDEuNDAzIDMuNjU0LTMuNjUzYS42NjcuNjY3IDAgMCAxIC45NDIuOTQybC00LjEyNSA0LjEyNWEuNjY0LjY2NCAwIDAgMS0uNDcxLjE5NlpcXFwiIG9wYWNpdHk9XFxcIi45OVxcXCIvPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTggMS4zMzNBNi42NjcgNi42NjcgMCAxIDAgMTQuNjY3IDggNi42NzQgNi42NzQgMCAwIDAgOCAxLjMzM1ptMy40NzEgNS4wNzYtNC4xMjUgNC4xMjVhLjY2Ny42NjcgMCAwIDEtLjk0MiAwTDQuNTI5IDguNjU5YS42NjcuNjY3IDAgMCAxIC45NDItLjk0M2wxLjQwNCAxLjQwMyAzLjY1NC0zLjY1M2EuNjY3LjY2NyAwIDAgMSAuOTQyLjk0M1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIHN0cm9rZT1cXFwiIzE3OTk3QlxcXCIgZmlsbD1cXFwiIzE3OTk3QlxcXCIgZD1cXFwiTTIwLjI4NSAyIDkgMTMuNTY3IDMuNzE0IDguNTU2IDAgMTIuMjcyIDkgMjEgMjQgNS43MTV6XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBkPVxcXCJNNyAuMzMyYy0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLTMuNjY3LTMtNi42NjctNi42NjYtNi42NjdabTIuNDY2IDguMmEuNjQ0LjY0NCAwIDAgMSAwIC45MzMuNjQ0LjY0NCAwIDAgMS0uOTMzIDBMNyA3LjkzMiA1LjQ2NiA5LjQ2NWEuNjQ0LjY0NCAwIDAgMS0uOTMzIDAgLjY0NC42NDQgMCAwIDEgMC0uOTMzbDEuNTMzLTEuNTMzLTEuNTMzLTEuNTM0YS42NDQuNjQ0IDAgMCAxIDAtLjkzMy42NDQuNjQ0IDAgMCAxIC45MzMgMEw3IDYuMDY1bDEuNTMzLTEuNTMzYS42NDQuNjQ0IDAgMCAxIC45MzMgMCAuNjQ0LjY0NCAwIDAgMSAwIC45MzNMNy45MzMgN2wxLjUzMyAxLjUzM1pcXFwiIGZpbGw9XFxcIiNEMTAwMUVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzIgMzJcXFwiPjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjE2XFxcIiBmaWxsPVxcXCIjRjFGN0Y5XFxcIi8+PHBhdGggZD1cXFwiTTEwLjcwMiAxNy42OWEyLjc0OSAyLjc0OSAwIDAgMCAyLjM1IDEuNDExbC45MzMuMDE4LS43MzQuNTc4YTYuNDk4IDYuNDk4IDAgMCAxLTMuNDAxIDEuMzYyIDguMzQyIDguMzQyIDAgMCAwIDMuMzY3LjcwNWguMDA0YTguMzU4IDguMzU4IDAgMCAwIDguNDQ2LTguNDI0di0uNTY4bC4xMzQtLjFjLjI2My0uMTk2LjUxLS40MTQuNzM3LS42NUwxMC43MDIgMTcuNjlabTAgMGguMDUyYy4zMTEtLjAwMy42Mi0uMDUuOTE4LS4xNDFsLS4wMzItLjY0NmEyLjc0MSAyLjc0MSAwIDAgMS0yLjE1OC0yLjE3N2MuMzIyLjExLjY2LjE3MiAxLjAwNC4xODJsMS4xNTYuMDMxLS45NjItLjY0MmEyLjczNCAyLjczNCAwIDAgMS0xLjIxNy0yLjI4YzAtLjMyMy4wNTYtLjY0Mi4xNjQtLjk0M2E5LjA2NCA5LjA2NCAwIDAgMCA2LjIzNiAyLjk0MWwuNDQ1LjAyMy0uMTA0LS40MzRhMi43NDIgMi43NDIgMCAwIDEgNC42OC0yLjVsLjEyOC4xMzYuMTgzLS4wMzZjLjM4NC0uMDc2Ljc2LS4xODYgMS4xMjItLjMyOWEyLjc2MyAyLjc2MyAwIDAgMS0uNzU4LjY2OEwxMC43MDIgMTcuNjlaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBkPVxcXCJtOC4wNjMgNS44NS4wMS4wMDNhLjE2Ni4xNjYgMCAwIDEgLjA1Mi4wMzJMMTAuMTIgNy44OHYuMDAyYS4xNjguMTY4IDAgMCAxIC4wMzcuMTgybC40NjIuMTkyLS40NjItLjE5MmEuMTY4LjE2OCAwIDAgMS0uMDM2LjA1NGwtLjAwMy4wMDNhLjE2Ny4xNjcgMCAwIDEtLjE4Mi4wMzdsLS4xOTMuNDYxLjE5My0uNDYxYS4xNjcuMTY3IDAgMCAxLS4wNTUtLjAzN2wtLjg2LS44NjctLjg1NS0uODYxVjEwYS4xNjcuMTY3IDAgMCAxLS4zMzMgMFY2LjM5M2wtLjg1NS44NjEtLjg1OS44NjZhLjE3LjE3IDAgMCAxLS4yNC0uMjRsMS45OTYtMS45OTVhLjE2Ni4xNjYgMCAwIDEgLjA1Mi0uMDMybC4wMS0uMDA0YS4xNjcuMTY3IDAgMCAxIC4xMjYgMFptLTMuNDktMi45NzdhNi4xNjcgNi4xNjcgMCAxIDEgNi44NTMgMTAuMjU0QTYuMTY3IDYuMTY3IDAgMCAxIDQuNTc0IDIuODczWm0uMTg2IDkuOTc3YTUuODM0IDUuODM0IDAgMSAwIDYuNDgxLTkuNyA1LjgzNCA1LjgzNCAwIDAgMC02LjQ4MiA5LjcwMVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjI3IDkuNDkxYS4xNjcuMTY3IDAgMCAxLS4wNTQtLjAzNWwtLjE5LS4xOTctLjg2LS44ODl2Mi45NjNhLjE2Ny4xNjcgMCAwIDEtLjMzMyAwVjguMzdsLS44Ni44OS0uMTg5LjE5NWEuMTcuMTcgMCAwIDEtLjIzNy0uMjQxbDEuMzI4LTEuMzI5YS4xNjYuMTY2IDAgMCAxIC4wNTItLjAzMmwuMDEtLjAwNGEuMTY3LjE2NyAwIDAgMSAuMTI2IDBsLjAxLjAwNGEuMTU2LjE1NiAwIDAgMSAuMDUyLjAzMmwxLjMyOCAxLjMyOS4wMDIuMDAxYS4xNjcuMTY3IDAgMCAxIC4wMzYuMTgybC40NjIuMTkzLS40NjItLjE5M2EuMTY3LjE2NyAwIDAgMS0uMDM2LjA1NWwtLjAwMy4wMDNhLjE2Ny4xNjcgMCAwIDEtLjE4My4wMzZabS0uNDM3LTcuNTg0IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzMuMzMgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDQuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjMuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk4YS4yMzMuMjMzIDAgMCAxIC4wMzIuMDE1bC4xMS4wNTloLjA0NVptLjg1NCAxLjM0Nkw4LjgzMyAyLjR2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgMTAgNS44MzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNOC41IDIuNjY3di0uNUg0LjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAzLjUgMy4zMzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUgxMGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudGNvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMy44MzcgMTEuNjQzLS4xMjguMzE0LjI0My4yMzVBNS44MzMgNS44MzMgMCAwIDAgOCAxMy44MzNoLjAwMmE1LjgzMyA1LjgzMyAwIDAgMCA0LjA0Ny0xLjY0bC4yNDMtLjIzNi0uMTI5LS4zMTRhNC41IDQuNSAwIDAgMC04LjMyNSAwWm04LjMzOC0uNzI0LjQzLjczNi40MzMtLjczNkE1Ljc4IDUuNzggMCAwIDAgMTMuODMzIDggNS44MzMgNS44MzMgMCAwIDAgMi4xNjcgOGE1Ljc4IDUuNzggMCAwIDAgLjc5NSAyLjkybC40MzIuNzM2LjQzLS43MzdhNC44MzMgNC44MzMgMCAwIDEgMi4zNjMtMi4wNDJsLjY1NS0uMjY1LS40NjctLjUzYTIuMTY3IDIuMTY3IDAgMSAxIDMuMjUgMGwtLjQ2Ny41My42NTUuMjY1YTQuODMzIDQuODMzIDAgMCAxIDIuMzYyIDIuMDQyWk00LjYzNSAyLjg0YzEtLjY1NSAyLjE3LTEuMDA1IDMuMzY1LTEuMDA3YTYuMTY2IDYuMTY2IDAgMCAxIDQuNTMyIDEwLjMzNSA2LjE2NyA2LjE2NyAwIDAgMS05LjA2NCAwQTYuMTY3IDYuMTY3IDAgMCAxIDQuNjM1IDIuODRabTEuODQgMi44MDhhMS44MzMgMS44MzMgMCAxIDAgMy4wNSAyLjAzNyAxLjgzMyAxLjgzMyAwIDAgMC0zLjA1LTIuMDM3WlxcXCIgZmlsbD1cXFwidHJhbnNwYXJlbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIyXFxcIj48cGF0aCBkPVxcXCJtMTMuNTA0IDExLjQ0OC0uNDU1LjM1OC41MzguMjE0YTkuNjY3IDkuNjY3IDAgMCAxIDYuMDQyIDcuOTE2LjY2Ny42NjcgMCAwIDEtLjU3LjczaC0uMDkxYS42NjcuNjY3IDAgMCAxLS42NjctLjU5MyA4LjMzMyA4LjMzMyAwIDAgMC0xNi41NjIgMEEuNjczLjY3MyAwIDAgMSAuNCAxOS45MjZhOS42NjcgOS42NjcgMCAwIDEgNi4wMTMtNy45MDdsLjUzNi0uMjE0LS40NTQtLjM1N2E1LjY2NyA1LjY2NyAwIDEgMSA3LjAwOCAwWm0tNS45MTEtLjg0NWE0LjMzNCA0LjMzNCAwIDEgMCA0LjgxNS03LjIwNyA0LjMzNCA0LjMzNCAwIDAgMC00LjgxNSA3LjIwN1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDE4XFxcIj48cGF0aCBkPVxcXCJtMTguOTE3IDEzLjU4My02Ljc1LTExLjY2NkMxMS41Ljc1IDkuOTE3LjMzMyA4Ljc1IDFjLS40MTcuMjUtLjc1LjU4My0uOTE3LjkxN2wtNi43NSAxMS42NjZDLjQxNyAxNC43NS44MzMgMTYuMzMzIDIgMTdjLjQxNy4yNS44MzMuMzMzIDEuMjUuMzMzaDEzLjQxN2MxLjQxNiAwIDIuNS0xLjE2NiAyLjUtMi41LjA4My0uNS0uMDg0LS45MTYtLjI1LTEuMjVaTTEwIDE0Yy0uNSAwLS44MzMtLjMzMy0uODMzLS44MzMgMC0uNS4zMzMtLjgzNC44MzMtLjgzNC41IDAgLjgzMy4zMzQuODMzLjgzNCAwIC41LS4zMzMuODMzLS44MzMuODMzWm0uODMzLTQuMTY3YzAgLjUtLjMzMy44MzQtLjgzMy44MzQtLjUgMC0uODMzLS4zMzQtLjgzMy0uODM0VjYuNWMwLS41LjMzMy0uODMzLjgzMy0uODMzLjUgMCAuODMzLjMzMy44MzMuODMzdjMuMzMzWlxcXCIgZmlsbD1cXFwiI0ZGNzI2NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxOCAxOVxcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI3dhcm5pbmctZmlsbF9zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xNy4wMiAxMy45OTItNi4wNzMtMTAuNWMtLjYtMS4wNS0yLjAyNS0xLjQyNS0zLjA3NC0uODI1LS4zNzUuMjI1LS42NzUuNTI1LS44MjUuODI1bC02LjA3MyAxMC41Yy0uNiAxLjA1LS4yMjUgMi40NzUuODI0IDMuMDc1LjM3NS4yMjUuNzUuMyAxLjEyNS4zaDEyLjA3MWMxLjI3NSAwIDIuMjUtMS4wNSAyLjI1LTIuMjUuMDc1LS40NS0uMDc1LS44MjUtLjIyNS0xLjEyNVptLTguMDIzLjM3NWMtLjQ1IDAtLjc1LS4zLS43NS0uNzVzLjMtLjc1Ljc1LS43NS43NS4zLjc1Ljc1LS4zLjc1LS43NS43NVptLjc1LTMuNzVjMCAuNDUtLjMuNzUtLjc1Ljc1cy0uNzUtLjMtLjc1LS43NXYtM2MwLS40NS4zLS43NS43NS0uNzVzLjc1LjMuNzUuNzV2M1pcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJ3YXJuaW5nLWZpbGxfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDE3Ljk5NXYxOEgwelxcXCIgdHJhbnNmb3JtPVxcXCJ0cmFuc2xhdGUoMCAuODY3KVxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMyAyMVxcXCI+PHBhdGggZD1cXFwiTTExLjg4NyAxNWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJabTEwLjY3IDEuNDctOC4wNS0xNGEzIDMgMCAwIDAtNS4yNCAwbC04IDE0QTMgMyAwIDAgMCAzLjgyNyAyMWgxNi4xMmEzIDMgMCAwIDAgMi42MS00LjUzWm0tMS43MyAyYTEgMSAwIDAgMS0uODguNTFIMy44MjdhMSAxIDAgMCAxLS44OC0uNTEgMSAxIDAgMCAxIDAtMWw4LTE0YTEgMSAwIDAgMSAxLjc4IDBsOC4wNSAxNGExIDEgMCAwIDEgLjA1IDEuMDJ2LS4wMlpNMTEuODg3IDdhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDAgMCAyIDBWOGExIDEgMCAwIDAtMS0xWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE3LjAyNCAxMi4xMjMtNi4wNzUtMTAuNUMxMC4zNDkuNTczIDguOTI0LjE5OCA3Ljg3NC43OThjLS4zNzUuMjI1LS42NzUuNTI1LS44MjUuODI1bC02LjA3NSAxMC41Yy0uNiAxLjA1LS4yMjUgMi40NzUuODI1IDMuMDc1LjM3NS4yMjUuNzUuMyAxLjEyNS4zaDEyLjA3NWMxLjI3NSAwIDIuMjUtMS4wNSAyLjI1LTIuMjUuMDc1LS40NS0uMDc1LS44MjUtLjIyNS0xLjEyNVptLTguMDI1LjM3NWMtLjQ1IDAtLjc1LS4zLS43NS0uNzVzLjMtLjc1Ljc1LS43NS43NS4zLjc1Ljc1LS4zLjc1LS43NS43NVptLjc1LTMuNzVjMCAuNDUtLjMuNzUtLjc1Ljc1cy0uNzUtLjMtLjc1LS43NXYtM2MwLS40NS4zLS43NS43NS0uNzVzLjc1LjMuNzUuNzV2M1pcXFwiIGZpbGw9XFxcIiNEMTAwMUVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzIgMzJcXFwiPjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjE2XFxcIiBmaWxsPVxcXCIjRjFGN0Y5XFxcIi8+PHBhdGggZD1cXFwiTTIzLjkxNyAxNC4yN3YuMDEyYzAgLjQ2MiAwIDIuOTc3LS4wMyAzLjM4MXYuMDI4YTcuNiA3LjYgMCAwIDEtLjM3NCAyLjQ0M3YuMDAxYTEuNTM1IDEuNTM1IDAgMCAxLS4zNzUuNjE1IDEuODI3IDEuODI3IDAgMCAxLS45NTUuNDkxYy0yLjcwMi4yMDgtNC45OS4yNDUtNy42MDMuMjA4aC0uMDEyYTMzLjU2MiAzMy41NjIgMCAwIDEtNC44MTctLjI0NCAxLjgxMSAxLjgxMSAwIDAgMS0uOTI3LS40ODUgMi4wMjIgMi4wMjIgMCAwIDEtLjQ1LS44NjhsLS4wMDEtLjAwNmE2LjgyOCA2LjgyOCAwIDAgMS0uMjE1LTEuNDN2LS4wMDlhMzUuODg3IDM1Ljg4NyAwIDAgMSAuMDAzLTQuODU3Yy4wMzctLjQ0Mi4wNzQtLjg4OC4xNzUtMS4yOTguMTA0LS40MjQuMjctLjc3NS41NC0xLjAyNWwuMDAzLS4wMDNjLjI1My0uMjQuNTctLjQwMS45MTEtLjQ2NmE1OC41MjcgNTguNTI3IDAgMCAxIDYuMjA0LS4yMjNoLjAxMmE1OC40MjYgNTguNDI2IDAgMCAxIDYuMjI2LjIzYy40MS4wNzguNzgyLjI5IDEuMDU2LjYwNS40NDcuOS42NjQgMS44OTYuNjI5IDIuOVptLTkuOTQ1IDMuODY3di41NmwuNDkyLS4yNjdhOTguOTcgOTguOTcgMCAwIDEgMi4yNjQtMS4xNzVsLjA2My0uMDMyYTcwLjQ1IDcwLjQ1IDAgMCAwIDIuMTE2LTEuMTA0bC41NC0uMy0uNTQ3LS4yODctNC40NC0yLjMzMi0uNDg4LS4yNTd2NS4xOTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGluZXNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDlhZTFhOGImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kYzcwNWY0OCZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAwODkyZGY2Jmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGRmZjg0NjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTYxYTQ1MWEwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mZDA1NDJjMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00NzNiMjYxZSZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDViMjYzNGImbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTZmZTU5MDU1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWM0YTdiYjkmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWI3N2IxMWQ0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ5NzQxOWYyJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04ZTM2ZjhlYyZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTJiZGE1OCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjY3YzdlNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTZmMTdlYzQ1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBhNTcxZmQ2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wYjNiZmI0NiZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVZhbGlkYXRlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc3ZjE0ZjNlJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmMjI1ZDNlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRhZGE1ZjM2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MzZiNzY0YmImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD01MjI2NjIwMCZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWExODYxZjNlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjZhZDc2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyNmFkNzZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzI2YWQ3NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzI2YWQ3NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFlZDFiNWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVZhbGlkYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eVZhbGlkYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRhZWQxYjVmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGFlZDFiNWYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YWVkMWI1ZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWVkMWI1ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRhZWQxYjVmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD02ZmU1OTA1NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi02ZmU1OTA1NVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZmZTU5MDU1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmZlNTkwNTUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZmU1OTA1NScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmZTU5MDU1JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmZlNTkwNTUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY1ZDBlM2RhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY1ZDBlM2RhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjVkMGUzZGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2NWQwZTNkYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVkMGUzZGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NWQwZTNkYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYzRhN2JiOSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1bGtwdWJsaXNoTG9hZGVyQ2FyZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFjNGE3YmI5Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTFjNGE3YmI5XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFjNGE3YmI5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWM0YTdiYjknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxYzRhN2JiOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYzRhN2JiOSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFjNGE3YmI5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjQ0M2RmNTMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMjQ0M2RmNTNcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjQ0M2RmNTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNDQzZGY1MycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI0NDNkZjUzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjQ0M2RmNTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWZmNWE4ZjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOWZmNWE4ZjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc5ZmY1YThmOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzlmZjVhOGY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlmZjVhOGY4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWZmNWE4ZjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ3N2M2ZWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM0NzdjNmVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzQ3N2M2ZWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczNDc3YzZlYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDc3YzZlYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM0NzdjNmVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlYmY0MWY5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZlYmY0MWY5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmViZjQxZjknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZWJmNDFmOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZWJmNDFmOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZlYmY0MWY5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI3N2IxMWQ0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Yjc3YjExZDQmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYjc3YjExZDRcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYjc3YjExZDRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiNzdiMTFkNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2I3N2IxMWQ0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI3N2IxMWQ0JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYjc3YjExZDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZjFkOGIxYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBmMWQ4YjFiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGYxZDhiMWInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGYxZDhiMWInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ5NzQxOWYyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0hlbHBlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDk3NDE5ZjImbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSGVscGVyVGV4dC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDk3NDE5ZjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0OTc0MTlmMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ5NzQxOWYyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00OTc0MTlmMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ5NzQxOWYyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MzhkN2UyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01NTM4ZDdlMiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1MzhkN2UyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTUzOGQ3ZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NTM4ZDdlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU1MzhkN2UyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDlhZTFhOGImc2NvcGVkPXRydWVcIlxuY29uc3Qgc2NyaXB0ID0ge31cblxuaW1wb3J0IFwiLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wOWFlMWE4YiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTA5YWUxYThiXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9MaW5lc0xvYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDlhZTFhOGJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwOWFlMWE4YicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA5YWUxYThiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaW5lc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDlhZTFhOGImc2NvcGVkPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDlhZTFhOGInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOGUzNmY4ZWNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4ZTM2ZjhlYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzhlMzZmOGVjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThlMzZmOGVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGUzNmY4ZWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGM3MDVmNDgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kYzcwNWY0OCZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGM3MDVmNDhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkYzcwNWY0OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RjNzA1ZjQ4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGM3MDVmNDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNjE5YTdlZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI2MTlhN2VkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjYxOWE3ZWQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2MTlhN2VkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWEyYmRhNTgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWEyYmRhNThcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVhMmJkYTU4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWEyYmRhNTgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YTJiZGE1OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWEyYmRhNTgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1YTJiZGE1OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE1NzM4ZTYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE1NzM4ZTYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTU3MzhlNjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNTczOGU2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE1NzM4ZTYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTU3MzhlNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NDM1NjE3MiZzY29wZWQ9dHJ1ZVwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc0MzU2MTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTc0MzU2MTcyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzQzNTYxNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NDM1NjE3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc0MzU2MTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaGltbWVyTG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzQzNTYxNzImc2NvcGVkPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzQzNTYxNzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NpZGVIZWxwVGV4dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjZmMTQxYmMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NpZGVIZWxwVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaWRlSGVscFRleHQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI2ZjE0MWJjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjZmMTQxYmMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNmYxNDFiYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2lkZUhlbHBUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNmYxNDFiYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2ZjE0MWJjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjFjZWE0MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU3RlcEJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU3RlcEJhci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTYxY2VhNDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjFjZWE0MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2MWNlYTQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjFjZWE0MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE2MWNlYTQwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q1MjA1OWEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkNTIwNTlhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q1MjA1OWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDUyMDU5YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNTIwNTlhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q1MjA1OWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOGM5N2E1YmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4Yzk3YTViZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzhjOTdhNWJlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThjOTdhNWJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGM5N2E1YmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDAxZDhjZDImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQwMWQ4Y2QyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDAxZDhjZDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMDFkOGNkMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QwMWQ4Y2QyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0zNzYxNzcwMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNzYxNzcwMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM3NjE3NzAyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzc2MTc3MDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNzYxNzcwMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZWE0YjA2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2VhNGIwNmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZWE0YjA2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdlYTRiMDZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdlYTRiMDZhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2VhNGIwNmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDJhYzJiZjQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAyYWMyYmY0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDJhYzJiZjQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMmFjMmJmNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAyYWMyYmY0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE5M2Q4NDdjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImE5M2Q4NDdjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYTkzZDg0N2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhOTNkODQ3YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTNkODQ3YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2E5M2Q4NDdjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImJmZTY1MTAyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYmZlNjUxMDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdiZmU2NTEwMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmZlNjUxMDImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdiZmU2NTEwMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWNjNTA4MjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWNjNTA4MjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlY2M1MDgyOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VjYzUwODI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lY2M1MDgyOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VjYzUwODI4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OWMzMTkzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1OWMzMTkzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU5YzMxOTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTljMzE5MycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTljMzE5MyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1OWMzMTkzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2YmNlOGNhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NmJjZThjYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU2YmNlOGNhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTZiY2U4Y2EnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZiY2U4Y2EmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NmJjZThjYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjY3YzdlNzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mNjdjN2U3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1mNjdjN2U3MlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZjY3YzdlNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmNjdjN2U3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Y2N2M3ZTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Y2N2M3ZTcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM5MjVlZjQ5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM5MjVlZjQ5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzkyNWVmNDknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczOTI1ZWY0OScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zOTI1ZWY0OSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM5MjVlZjQ5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZmI4ZjQwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmZiOGY0MDZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyZmI4ZjQwNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJmYjhmNDA2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZmI4ZjQwNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzJmYjhmNDA2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFiNTRlMDlmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFiNTRlMDlmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWI1NGUwOWYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxYjU0ZTA5ZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFiNTRlMDlmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWMzMmJmMGMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YzMyYmYwYyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01YzMyYmYwY1wiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVjMzJiZjBjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWMzMmJmMGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YzMyYmYwYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVjMzJiZjBjJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWMzMmJmMGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUzOGQxMGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZTM4ZDEwZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0xZTM4ZDEwZVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZTM4ZDEwZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFlMzhkMTBlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWUzOGQxMGUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUzOGQxMGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxZTM4ZDEwZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmMTdlYzQ1JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmYxN2VjNDUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNmYxN2VjNDVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZjE3ZWM0NVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmMTdlYzQ1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmYxN2VjNDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZjE3ZWM0NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmMTdlYzQ1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMDg5MmRmNlwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDA4OTJkZjYmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMDg5MmRmNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAwODkyZGY2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDA4OTJkZjYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAwODkyZGY2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFlYjhkZWIwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWViOGRlYjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxZWI4ZGViMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWViOGRlYjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxZWI4ZGViMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWYyZjlhYjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZjJmOWFiOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFmMmY5YWI4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWYyZjlhYjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWYyZjlhYjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIzZWUzNzVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjNlZTM3NWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyM2VlMzc1YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjNlZTM3NWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGU0MDJiMDZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ZTQwMmIwNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRlNDAyYjA2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGU0MDJiMDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZTQwMmIwNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE1NzFmZDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBhNTcxZmQ2Jmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTU3MWZkNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhNTcxZmQ2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGE1NzFmZDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGE1NzFmZDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2NhMjhiOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YzdjYTI4YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYzdjYTI4YjhcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYzdjYTI4YjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjN2NhMjhiOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2M3Y2EyOGI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdjYTI4Yjgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjN2NhMjhiOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZmIxZTFjYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzZmIxZTFjY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNmYjFlMWNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2ZiMWUxY2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZiMWUxY2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczZmIxZTFjYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDExODk3YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0MDExODk3YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQwMTE4OTdhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDAxMTg5N2EnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDAxMTg5N2EmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0MDExODk3YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa1B1Ymxpc2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjM2I0NTY4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9CdWxrUHVibGlzaC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmMzYjQ1NjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2YzNiNDU2OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZjM2I0NTY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrUHVibGlzaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMzYjQ1NjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2YzNiNDU2OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUm9sbGluZ0xvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGIzYmZiNDYmc2NvcGVkPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9anNcIlxuXG5pbXBvcnQgXCIuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGIzYmZiNDYmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMGIzYmZiNDZcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYjNiZmI0NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBiM2JmYjQ2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGIzYmZiNDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBiM2JmYjQ2JnNjb3BlZD10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBiM2JmYjQ2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9DaGVja2luZ0FjdGl2aXRpZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRkYTNhZDg0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DaGVja2luZ0FjdGl2aXRpZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9idWxrUHVibGlzaE1vZGFsL2NoZWNraW5nQWN0aXZpdGllcy9DaGVja2luZ0FjdGl2aXRpZXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRkYTNhZDg0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGRhM2FkODQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZGEzYWQ4NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZGEzYWQ4NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2RkYTNhZDg0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3ZjE0ZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVZhbGlkYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9JYXRpVmFsaWRhdGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzdmMTRmM2Umc2NvcGVkPXRydWUmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNzdmMTRmM2VcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9pYXRpVmFsaWRhdGUvSWF0aVZhbGlkYXRlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3N2YxNGYzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc3ZjE0ZjNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzdmMTRmM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlWYWxpZGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzdmMTRmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3N2YxNGYzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNWY0YmQ0NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvYnVsa1B1Ymxpc2hNb2RhbC9wdWJsaXNoaW5nQWN0aXZpdHkvUHVibGlzaGluZ0FjdGl2aXR5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNWY0YmQ0NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI1ZjRiZDQ0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjVmNGJkNDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjVmNGJkNDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNWY0YmQ0NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFiSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU0ZDEyOTIwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvdGFicy9UYWJJbmRleC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTRkMTI5MjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNGQxMjkyMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U0ZDEyOTIwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTRkMTI5MjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNGQxMjkyMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2l6YXJkSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU0YTE2NzE2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XaXphcmRJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9XaXphcmRJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvd2l6YXJkU3RlcHMvV2l6YXJkSW5kZXgudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU0YTE2NzE2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTRhMTY3MTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NGExNjcxNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2l6YXJkSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU0YTE2NzE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTRhMTY3MTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxMzhlYTg4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDEzOGVhODgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTM4ZWE4OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTM4ZWE4OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAxMzhlYTg4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iYWZiMjViYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmFmYjI1YmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiYWZiMjViYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JhZmIyNWJhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iYWZiMjViYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JhZmIyNWJhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjlhN2QzMTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI5YTdkMzEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjlhN2QzMTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyOWE3ZDMxMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5YTdkMzEzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjlhN2QzMTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYzdkNzk5YmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjN2Q3OTliZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2M3ZDc5OWJlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdkNzk5YmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjN2Q3OTliZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNkZmI3NDY4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2RmYjc0NjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjZGZiNzQ2OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NkZmI3NDY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjZGZiNzQ2OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyNjFhZmZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjYxYWZmZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyNjFhZmZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTI2MWFmZmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjYxYWZmZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzUyNjFhZmZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNlNDgwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2IzZTQ4MDRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjYjNlNDgwNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NiM2U0ODA0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNlNDgwNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2NiM2U0ODA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTJjMmU4NjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEyYzJlODYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTJjMmU4NjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMmMyZTg2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTJjMmU4NjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc4YjY0NDA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzhiNjQ0MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3OGI2NDQwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc4YjY0NDA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRkYWI3NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2Q0ZGFiNzRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZDRkYWI3NCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdkNGRhYjc0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRkYWI3NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdkNGRhYjc0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTcyYzJhYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxNzJjMmFjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDE3MmMyYWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTcyYzJhYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTcyYzJhYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmQ5ODg4OTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiZDk4ODg5MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JkOTg4ODkyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmQ5ODg4OTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmMThiZTMwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZjE4YmUzMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdmMThiZTMwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2YxOGJlMzAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmMThiZTMwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2YxOGJlMzAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWJkNjYyZGMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYmQ2NjJkY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ViZDY2MmRjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWJkNjYyZGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWJkNjYyZGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYmQ2NjJkYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmNhMDRjMDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyY2EwNGMwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJjYTA0YzAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJjYTA0YzAyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmNhMDRjMDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4YjBhZTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0MzhiMGFlNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQzOGIwYWU2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDM4YjBhZTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4YjBhZTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0MzhiMGFlNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNzdjYjRmMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjc3Y2I0ZjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNzdjYjRmMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI3N2NiNGYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjc3Y2I0ZjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyOTQ2ODUxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzI5NDY4NTEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjk0Njg1MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyOTQ2ODUxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMTE5NjY4MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAxMTk2NjgyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDExOTY2ODInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDExOTY2ODImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTE5NjY4MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3NGE3MTNkJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NzRhNzEzZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ3NGE3MTNkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDc0YTcxM2QnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzRhNzEzZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ3NGE3MTNkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyYjhhZmYwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzJiOGFmZjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMmI4YWZmMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI4YWZmMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyYjhhZmYwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZmYxNzc3MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVmZjE3NzcyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWZmMTc3NzInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWZmMTc3NzImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1ZmYxNzc3MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmY3OGNmN2YmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmY3OGNmN2ZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2Zjc4Y2Y3ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZmNzhjZjdmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmNzhjZjdmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGQ3NjNlNGNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkZDc2M2U0YycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RkNzYzZTRjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkZDc2M2U0YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYTZkMDYyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZhYTZkMDYyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmFhNmQwNjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2YWE2ZDA2MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYTZkMDYyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmFhNmQwNjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzViNjFlMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NzViNjFlMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc3NWI2MWUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzc1YjYxZTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzViNjFlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc3NWI2MWUyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjYjI2MDNmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNjYjI2MDNmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2NiMjYwM2YnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczY2IyNjAzZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zY2IyNjAzZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNjYjI2MDNmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImY3ZWQ2YWRhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZjdlZDZhZGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdmN2VkNmFkYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mN2VkNmFkYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Y3ZWQ2YWRhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03YTY0ZDk0NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3YTY0ZDk0NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdhNjRkOTQ0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2E2NGQ5NDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNjRkOTQ0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2E2NGQ5NDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgxNjg0NmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTgxNjg0NmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ODE2ODQ2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU4MTY4NDZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4MTY4NDZhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTgxNjg0NmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1YTRkOWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDg1YTRkOWVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ODVhNGQ5ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ4NWE0ZDllJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NWE0ZDllJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDg1YTRkOWUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZjZmZjY4NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4ZjZmZjY4NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhmNmZmNjg0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGY2ZmY2ODQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZjZmZjY4NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhmNmZmNjg0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBkZmY4NDYwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT25Cb2FyZGluZ0luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGRmZjg0NjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wZGZmODQ2MFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L29uYm9hcmRpbmcvT25Cb2FyZGluZ0luZGV4LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZGZmODQ2MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBkZmY4NDYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGRmZjg0NjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09uQm9hcmRpbmdJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGRmZjg0NjAmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZGZmODQ2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWVmYjYwYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5U3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0FjdGl2aXR5U3RlcC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjVlZmI2MGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2NWVmYjYwYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY1ZWZiNjBhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eVN0ZXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY1ZWZiNjBhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjVlZmI2MGEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MWE0NTFhMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTYxYTQ1MWEwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNjFhNDUxYTBcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9vbmJvYXJkaW5nL1N0ZXBzL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2MWE0NTFhMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYxYTQ1MWEwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjFhNDUxYTAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RlZmF1bHRWYWx1ZXNTdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MWE0NTFhMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYxYTQ1MWEwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmQwNTQyYzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGFTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mZDA1NDJjMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWZkMDU0MmMyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZmQwNTQyYzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmZDA1NDJjMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ZkMDU0MmMyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmQwNTQyYzImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmZDA1NDJjMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDczYjI2MWUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00NzNiMjYxZSZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTQ3M2IyNjFlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvb25ib2FyZGluZy9TdGVwcy9QdWJsaXNoaW5nU2V0dGluZ3NTdGVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NzNiMjYxZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ3M2IyNjFlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDczYjI2MWUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3M2IyNjFlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDczYjI2MWUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTQwZmNmNCZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YTQwZmNmNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVhNDBmY2Y0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWE0MGZjZjQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1YTQwZmNmNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjVkNjBhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdmNWQ2MGE2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Y1ZDYwYTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZjVkNjBhNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjVkNjBhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdmNWQ2MGE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDUwZTE3M2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA1MGUxNzNjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDUwZTE3M2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNTBlMTczYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDUwZTE3M2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi02NjFlNmY4ZVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY2MWU2ZjhlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjYxZTZmOGUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2NjFlNmY4ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NjFlNmY4ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YmMwNDFmOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWJjMDQxZjlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YmMwNDFmOScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzViYzA0MWY5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViYzA0MWY5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWJjMDQxZjknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhZWY5Njg4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI5YWVmOTY4OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzlhZWY5Njg4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOWFlZjk2ODgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhZWY5Njg4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWFlZjk2ODgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzU4OWU4NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NTg5ZTg2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc1ODllODZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzU4OWU4NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzU4OWU4NmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3NTg5ZTg2ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImZlZjI2YTgwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZmVmMjZhODAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdmZWYyNmE4MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmZWYyNmE4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01ZDg0YTFkOFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZDg0YTFkOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVkODRhMWQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWQ4NGExZDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVkODRhMWQ4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3MmUzYjU5OVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzcyZTNiNTk5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzJlM2I1OTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyZTNiNTk5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzJlM2I1OTknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkMzNiMjkzNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2QzM2IyOTM0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDMzYjI5MzQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QzM2IyOTM0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhODhmYzUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzlhODhmYzVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3OWE4OGZjNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc5YTg4ZmM1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhODhmYzUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3OWE4OGZjNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNTcxYjIyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlNTcxYjIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGU1NzFiMjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZTU3MWIyMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNTcxYjIyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGU1NzFiMjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmMyMGYxNzhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2YzIwZjE3OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZjMjBmMTc4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjMjBmMTc4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmMyMGYxNzgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4ZmU0MjE5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE4ZmU0MjE5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMThmZTQyMTknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxOGZlNDIxOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThmZTQyMTkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxOGZlNDIxOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWEwNmE4NWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYWEwNmE4NWVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdhYTA2YTg1ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2FhMDZhODVlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTA2YTg1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2FhMDZhODVlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlMmU4MzA3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlMmU4MzA3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGUyZTgzMDcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZTJlODMwNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlMmU4MzA3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRjMmU2ODJkJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRjMmU2ODJkXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGMyZTY4MmQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YzJlNjgyZCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YzJlNjgyZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRjMmU2ODJkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjgxYzIyOTJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnODFjMjI5MmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4MWMyMjkyZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWMyMjkyZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzgxYzIyOTJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYzIxYzQ2ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZXN1bHRUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzYzIxYzQ2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNjMjFjNDZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2MyMWM0NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjMjFjNDZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignM2MyMWM0NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQxMmZlZDU0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQxMmZlZDU0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDEyZmVkNTQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMTJmZWQ1NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDEyZmVkNTQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkMTJmZWQ1NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3YzA2YzEyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDdjMDZjMTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwN2MwNmMxMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA3YzA2YzEyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDdjMDZjMTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwN2MwNmMxMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNTZjMTFlYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQ1NmMxMWVhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDU2YzExZWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkNTZjMTFlYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNTZjMTFlYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Q1NmMxMWVhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2M4NzI3YzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjYzg3MjdjMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NjODcyN2MyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2M4NzI3YzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRmOTZjOTZhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGY5NmM5NmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkZjk2Yzk2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RmOTZjOTZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZjk2Yzk2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2RmOTZjOTZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJhOGE3MzEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyMmE4YTczMVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIyYThhNzMxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjJhOGE3MzEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMmE4YTczMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIyYThhNzMxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNzg1MzA1MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3ODUzMDUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzc4NTMwNTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjNzg1MzA1MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yzc4NTMwNTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjNzg1MzA1MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU1YzdjNTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTVjN2M1MmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNWM3YzUyZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U1YzdjNTJlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTVjN2M1MmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNWM3YzUyZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNDA2YWEzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGU0MDZhYTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZTQwNmFhMycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlNDA2YWEzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU0MDZhYTMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZTQwNmFhMycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM1ZWY2ODVmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzVlZjY4NWZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNWVmNjg1ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM1ZWY2ODVmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzVlZjY4NWYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNWVmNjg1ZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThhMDhkZjQ2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOGEwOGRmNDZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4YTA4ZGY0NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzhhMDhkZjQ2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGEwOGRmNDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4YTA4ZGY0NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDNkNTM2ZDgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0M2Q1MzZkOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQzZDUzNmQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDNkNTM2ZDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDNkNTM2ZDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGEzMGJhYTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTMwYmFhMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhMzBiYWEyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGEzMGJhYTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGEzMGJhYTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwYTMwYmFhMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZWViYWE0MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRlZWJhYTQxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGVlYmFhNDEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZWViYWE0MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZWViYWE0MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRlZWJhYTQxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU3MDg5ODQxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTcwODk4NDEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NzA4OTg0MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcwODk4NDEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NzA4OTg0MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MTJmY2M2MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYxMmZjYzYxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjEyZmNjNjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2MTJmY2M2MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MTJmY2M2MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYxMmZjYzYxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjNmNjc0MjZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2M2Y2NzQyNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzYzZjY3NDI2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjNmNjc0MjYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjk3MjgzNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE2OTcyODM0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTY5NzI4MzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNjk3MjgzNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2OTcyODM0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTY5NzI4MzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmI2MTlmMjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmYjYxOWYyMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ZiNjE5ZjIwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZmI2MTlmMjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmI2MTlmMjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmYjYxOWYyMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyMjU3ZjcwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyMjU3ZjcwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzIyNTdmNzAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjI1N2Y3MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyMjU3ZjcwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzIyNTdmNzAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjIyNWQzZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmMjI1ZDNlJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRmMjI1ZDNlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGYyMjVkM2UnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZjIyNWQzZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmMjI1ZDNlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGYyMjVkM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWUxMTljM2Y2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImUxMTljM2Y2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTExOWMzZjYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlMTE5YzNmNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTExOWMzZjYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlMTE5YzNmNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyN2M2ZmIzY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI3YzZmYjNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjdjNmZiM2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjdjNmZiM2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyN2M2ZmIzYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlZDVmZGQyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlZDVmZGQyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGVkNWZkZDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZWQ1ZmRkMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlZDVmZGQyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGVkNWZkZDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyODA3YzA4Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI4MDdjMDhjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjgwN2MwOGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI4MDdjMDhjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MGQ3ODcwYSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTQwZDc4NzBhXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQwZDc4NzBhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDBkNzg3MGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0MGQ3ODcwYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDBkNzg3MGEmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0MGQ3ODcwYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVkMTQ4ZDM3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWQxNDhkMzcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZDE0OGQzNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWQxNDhkMzcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YTYwODQzMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtOWE2MDg0MzJcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlhNjA4NDMyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWE2MDg0MzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5YTYwODQzMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWE2MDg0MzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01ZjUwMDhiNFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZjUwMDhiNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVmNTAwOGI0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWY1MDA4YjQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWY1MDA4YjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRhZGE1ZjM2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00YWRhNWYzNiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRhZGE1ZjM2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGFkYTVmMzYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YWRhNWYzNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFkYTVmMzYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0YWRhNWYzNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NGVhODAzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1NGVhODAzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU0ZWE4MDMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTRlYTgwMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NGVhODAzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDU0ZWE4MDMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyODM5ZTA5OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI4MzllMDk4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjgzOWUwOTgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI4MzllMDk4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVmNmQzMTJhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImVmNmQzMTJhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWY2ZDMxMmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlZjZkMzEyYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lZjZkMzEyYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VmNmQzMTJhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYmU4NzZkMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYmU4NzZkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NiZTg3NmQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2JlODc2ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiZTg3NmQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2JlODc2ZDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjQ2N2QyZjFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNDY3ZDJmMScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI0NjdkMmYxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NjdkMmYxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjQ2N2QyZjEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk5OWFlZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjk5OWFlZTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2OTk5YWVlMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY5OTlhZWUyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjk5OWFlZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODVjOWRjM2UmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiODVjOWRjM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4NWM5ZGMzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzg1YzlkYzNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTg1YzlkYzNlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODVjOWRjM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkM2MwZDMzYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2QzYzBkMzNhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDNjMGQzM2EnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QzYzBkMzNhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NjU1Zjk1MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NjU1Zjk1MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ2NTVmOTUxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDY1NWY5NTEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ2NTVmOTUxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDY1NWY5NTEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwMzg1ZGEzXCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3MDM4NWRhM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzcwMzg1ZGEzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzAzODVkYTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwMzg1ZGEzXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzcwMzg1ZGEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNmI3NjRiYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM2Yjc2NGJiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzZiNzY0YmInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzZiNzY0YmImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNmI3NjRiYicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDViNDJjYzcmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1YjQyY2M3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDViNDJjYzcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NWI0MmNjNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDViNDJjYzcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NWI0MmNjNycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDg2NDY2NyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZDg2NDY2N1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRkODY0NjY3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGQ4NjQ2NjcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQ4NjQ2NjcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZDg2NDY2NycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjgxYTdmZDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnODFhN2ZkODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4MWE3ZmQ4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODFhN2ZkODYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjMwNzczMDUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjMwNzczMDVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2MzA3NzMwNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzYzMDc3MzA1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzMDc3MzA1JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjMwNzczMDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NWI5OTA2MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc1Yjk5MDYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzViOTkwNjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzViOTkwNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzZTRmNTEyMVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNlNGY1MTIxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2U0ZjUxMjEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignM2U0ZjUxMjEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTk0YWNkNSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NTk0YWNkNVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1OTRhY2Q1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDU5NGFjZDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTk0YWNkNSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1OTRhY2Q1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1YjI2MzRiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNWIyNjM0YlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA1YjI2MzRiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDViMjYzNGInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViMjYzNGImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNWIyNjM0YicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wNjExZDlmMFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA2MTFkOWYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDYxMWQ5ZjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNjExZDlmMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDYxMWQ5ZjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzkyNzBhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzc5MjcwYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNzkyNzBhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM3OTI3MGE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc5MjcwYTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNzkyNzBhNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDlmYTkwNFwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2Q5ZmE5MDRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZDlmYTkwNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdkOWZhOTA0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkOWZhOTA0XCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdkOWZhOTA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2NkYTVjMTkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3Y2RhNWMxOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdjZGE1YzE5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2NkYTVjMTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdjZGE1YzE5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCJAdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiXG5pbXBvcnQgXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxN2U2MzJhNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzE3ZTYzMmE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMTdlNjMyYTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZTYzMmE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTdlNjMyYTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTY4NDk0ZDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTY4NDk0ZDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNjg0OTRkMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U2ODQ5NGQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU2ODQ5NGQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZTY4NDk0ZDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjYTY5Mzk2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRjYTY5Mzk2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGNhNjkzOTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkY2E2OTM5NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkY2E2OTM5NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjUyMjY2MjAwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTIyNjYyMDAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1MjI2NjIwMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzUyMjY2MjAwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZmZmY5ODBcIlxuY29uc3Qgc2NyaXB0ID0ge31cblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTZmZmY5ODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NmZmZjk4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU2ZmZmOTgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZmZmY5ODBcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTZmZmY5ODAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9mbHVmZnkvRG9jdW1lbnRzL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYWU0NDg1YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VhZTQ0ODVhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWFlNDQ4NWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYWU0NDg1YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1ZjliNGJiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTVmOWI0YmInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NWY5YjRiYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTVmOWI0YmInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2XCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjY5ZjUwODZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNjlmNTA4NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI2OWY1MDg2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjlmNTA4NlwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNjlmNTA4NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTg2MWYzZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYTE4NjFmM2VcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhMTg2MWYzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ExODYxZjNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYTE4NjFmM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTE4NjFmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhMTg2MWYzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMGQxMDY4MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL2ZsdWZmeS9Eb2N1bWVudHMvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyMGQxMDY4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIwZDEwNjgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjBkMTA2ODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjBkMTA2ODAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyMGQxMDY4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvZmx1ZmZ5L0RvY3VtZW50cy9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEwYzllMGIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTBjOWUwYjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzEwYzllMGIyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlWYWxpZGF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VmFsaWRhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaExvYWRlckNhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hMb2FkZXJDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSGVscGVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IZWxwZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlSGVscFRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lkZUhlbHBUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3RlcEJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGVwQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa1B1Ymxpc2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa1B1Ymxpc2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DaGVja2luZ0FjdGl2aXRpZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ2hlY2tpbmdBY3Rpdml0aWVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVZhbGlkYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlWYWxpZGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dpemFyZEluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dpemFyZEluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09uQm9hcmRpbmdJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PbkJvYXJkaW5nSW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVN0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlTdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVmYXVsdFZhbHVlc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ1NldHRpbmdzU3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWlkVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWlkVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9WYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JvbGxpbmdMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Sb2xsaW5nTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPWpzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsInZhciBtYXAgPSB7XG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X2RhdGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3N0YXR1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NhcGl0YWxfc3BlbmQuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb2xsYWJvcmF0aW9uX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb25kaXRpb25zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29udGFjdF9pbmZvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jcnMtYWRkLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2FpZF90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaHVtYW5pdGFyaWFuX3Njb3BlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2lhdGlfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pbmRpY2F0b3Iuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvb3RoZXJfaWRlbnRpZmllci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcGVyaW9kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wb2xpY3lfbWFya2VyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlbGF0ZWRfYWN0aXZpdHkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHRzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvc2VjdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RhZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RyYW5zYWN0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCIsXG5cdFwiLi9hZGQtbW9yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQtbW9yZS5zdmdcIixcblx0XCIuL2FkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQuc3ZnXCIsXG5cdFwiLi9hbGVydC1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LW91dGxpbmUuc3ZnXCIsXG5cdFwiLi9hbGVydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC5zdmdcIixcblx0XCIuL2FsaWduLWNlbnRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1jZW50ZXIuc3ZnXCIsXG5cdFwiLi9hbGlnbi1yaWdodC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1yaWdodC5zdmdcIixcblx0XCIuL2FwcHJvdmVkLWNsb3VkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FwcHJvdmVkLWNsb3VkLnN2Z1wiLFxuXHRcIi4vYXJyb3ctZG93bi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1kb3duLnN2Z1wiLFxuXHRcIi4vYXJyb3ctbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXNob3J0LWxlZnQuc3ZnXCIsXG5cdFwiLi9hc2NlbmRpbmctYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXNjZW5kaW5nLWFycm93LnN2Z1wiLFxuXHRcIi4vYmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9iaWxsLnN2Z1wiLFxuXHRcIi4vYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JveC5zdmdcIixcblx0XCIuL2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWRnZXQuc3ZnXCIsXG5cdFwiLi9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWlsZGluZy5zdmdcIixcblx0XCIuL2NhbmNlbC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY2xvdWQuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2hlY2stY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrLWNpcmNsZS5zdmdcIixcblx0XCIuL2NoZWNrYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrYm94LnN2Z1wiLFxuXHRcIi4vY2hlY2tlZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2VkLnN2Z1wiLFxuXHRcIi4vY2hldnJvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGV2cm9uLnN2Z1wiLFxuXHRcIi4vY2lyY2xlLXJlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaXJjbGUtcmVkLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2xvc2Uuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2xvc2Uuc3ZnXCIsXG5cdFwiLi9jb3B5cmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29weXJpZ2h0LnN2Z1wiLFxuXHRcIi4vY29yZS1zcXVhcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS1zcXVhcmUuc3ZnXCIsXG5cdFwiLi9jb3JlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcmUuc3ZnXCIsXG5cdFwiLi9jcm9zcy1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLWljb24uc3ZnXCIsXG5cdFwiLi9jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy5zdmdcIixcblx0XCIuL2RlZmF1bHQtMS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTEuc3ZnXCIsXG5cdFwiLi9kZWZhdWx0LTIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0yLnN2Z1wiLFxuXHRcIi4vZGVsZXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlbGV0ZS5zdmdcIixcblx0XCIuL2Rlc2NlbmRpbmctYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVzY2VuZGluZy1hcnJvdy5zdmdcIixcblx0XCIuL2RvY3VtZW50LXdyaXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvY3VtZW50LXdyaXRlLnN2Z1wiLFxuXHRcIi4vZG91YmxlLXRpY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG91YmxlLXRpY2suc3ZnXCIsXG5cdFwiLi9kb3dubG9hZC1jb2RlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWNvZGUuc3ZnXCIsXG5cdFwiLi9kb3dubG9hZC1maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWZpbGUuc3ZnXCIsXG5cdFwiLi9kb3dubG9hZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC5zdmdcIixcblx0XCIuL2Ryb3Bkb3duLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Ryb3Bkb3duLWFycm93LnN2Z1wiLFxuXHRcIi4vZWRpdC1hY3Rpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC1hY3Rpb24uc3ZnXCIsXG5cdFwiLi9lZGl0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQuc3ZnXCIsXG5cdFwiLi9leGNsYW1hdGlvbi13YXJuaW5nLWZpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy1maWxsLnN2Z1wiLFxuXHRcIi4vZXhjbGFtYXRpb24td2FybmluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leGNsYW1hdGlvbi13YXJuaW5nLnN2Z1wiLFxuXHRcIi4vZXhwb3J0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmdcIixcblx0XCIuL2V4dGVybmFsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2Z1wiLFxuXHRcIi4vZXllLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V5ZS5zdmdcIixcblx0XCIuL2ZvbGRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb2xkZXIuc3ZnXCIsXG5cdFwiLi9mb290ZXItbG9nby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb290ZXItbG9nby5zdmdcIixcblx0XCIuL2Z1bm5lbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnXCIsXG5cdFwiLi9ncmVlbi1jaXJjbGUtdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncmVlbi1jaXJjbGUtdGljay5zdmdcIixcblx0XCIuL2dyb3VwLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2dyb3VwLnN2Z1wiLFxuXHRcIi4vaGFuZC13YXZlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hhbmQtd2F2ZS5zdmdcIixcblx0XCIuL2hlYWRlci1sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2Z1wiLFxuXHRcIi4vaGVhZHBob25lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRwaG9uZS5zdmdcIixcblx0XCIuL2hlbHAuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmdcIixcblx0XCIuL2hpZGUtcGFzc3dvcmQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlkZS1wYXNzd29yZC5zdmdcIixcblx0XCIuL2hpc3Rvcnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlzdG9yeS5zdmdcIixcblx0XCIuL2ljLXZlcmlmaWNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pYy12ZXJpZmljYXRpb24uc3ZnXCIsXG5cdFwiLi9pbmRpY2F0b3ItaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pbmRpY2F0b3ItaWNvbi5zdmdcIixcblx0XCIuL2tleS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnXCIsXG5cdFwiLi9sZWZ0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xlZnQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9sb2dvLXdoaXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28td2hpdGUuc3ZnXCIsXG5cdFwiLi9sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnXCIsXG5cdFwiLi9sb2dvdXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nb3V0LnN2Z1wiLFxuXHRcIi4vbWFnbmlmeWluZy1nbGFzcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2Z1wiLFxuXHRcIi4vbWFpbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWlsLnN2Z1wiLFxuXHRcIi4vbWVzc2FnZS1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21lc3NhZ2UtaWNvbi5zdmdcIixcblx0XCIuL21pbmltaXplLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21pbmltaXplLnN2Z1wiLFxuXHRcIi4vbW9vbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tb29uLnN2Z1wiLFxuXHRcIi4vbm90ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ub3RlLnN2Z1wiLFxuXHRcIi4vb3Blbi1saW5rLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29wZW4tbGluay5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pc2F0aW9uX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbl9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfZXhwZW5kaXR1cmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiLFxuXHRcIi4vcGFuZWwtc2VhcmNoLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BhbmVsLXNlYXJjaC5zdmdcIixcblx0XCIuL3BlcmlvZC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BlcmlvZC1pY29uLnN2Z1wiLFxuXHRcIi4vcGx1cy1vdXRsaW5lZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2Z1wiLFxuXHRcIi4vcGx1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLnN2Z1wiLFxuXHRcIi4vcHJvZ3Jlc3MtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wcm9ncmVzcy1pY29uLnN2Z1wiLFxuXHRcIi4vcHVibGlzaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdWJsaXNoLnN2Z1wiLFxuXHRcIi4vcHctbG9jay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2Z1wiLFxuXHRcIi4vcXVlc3Rpb24tbWFyay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9xdWVzdGlvbi1tYXJrLnN2Z1wiLFxuXHRcIi4vcmVkLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmdcIixcblx0XCIuL3JlZC1kb3Quc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkLWRvdC5zdmdcIixcblx0XCIuL3JlZG8uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkby5zdmdcIixcblx0XCIuL3Jlc3VsdC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Jlc3VsdC1pY29uLnN2Z1wiLFxuXHRcIi4vcmlnaHQtYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmlnaHQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9yb2NrZXQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yb2NrZXQtaWNvbi5zdmdcIixcblx0XCIuL3NlYXJjaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZWFyY2guc3ZnXCIsXG5cdFwiLi9zZXR0aW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NldHRpbmcuc3ZnXCIsXG5cdFwiLi9zaGllbGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2hpZWxkLnN2Z1wiLFxuXHRcIi4vc2luZ2xlLWRvdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaW5nbGUtZG90LnN2Z1wiLFxuXHRcIi4vc21pbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc21pbGUuc3ZnXCIsXG5cdFwiLi9zb3J0LWFzY2VuZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWFzY2VuZGluZy5zdmdcIixcblx0XCIuL3NvcnQtZGVzY2VuZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWRlc2NlbmRpbmcuc3ZnXCIsXG5cdFwiLi9zb3J0LWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1pY29uLnN2Z1wiLFxuXHRcIi4vc3Rhci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zdGFyLnN2Z1wiLFxuXHRcIi4vc3RlcC10aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0ZXAtdGljay5zdmdcIixcblx0XCIuL3RpY2stY2xvdWQtc3F1YXJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stY2xvdWQtc3F1YXJlLnN2Z1wiLFxuXHRcIi4vdGljay1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stb3V0bGluZS5zdmdcIixcblx0XCIuL3RpY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay5zdmdcIixcblx0XCIuL3RpY2tlZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrZWQuc3ZnXCIsXG5cdFwiLi90aW1lcy1jaXJjbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGltZXMtY2lyY2xlLnN2Z1wiLFxuXHRcIi4vdHdpdHRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90d2l0dGVyLnN2Z1wiLFxuXHRcIi4vdXAtYXJyb3ctb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cC1hcnJvdy1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vdXBsb2FkLWZpbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXBsb2FkLWZpbGUuc3ZnXCIsXG5cdFwiLi91c2VyLXByb2ZpbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci1wcm9maWxlLnN2Z1wiLFxuXHRcIi4vdXNlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLnN2Z1wiLFxuXHRcIi4vd2FybmluZy1hY3Rpdml0eS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWFjdGl2aXR5LnN2Z1wiLFxuXHRcIi4vd2FybmluZy1maWxsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctZmlsbC5zdmdcIixcblx0XCIuL3dhcm5pbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy5zdmdcIixcblx0XCIuL3dhcm5pbmlnLWFjdGl2aXR5LXJlZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5pZy1hY3Rpdml0eS1yZWQuc3ZnXCIsXG5cdFwiLi95b3V0dWJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3lvdXR1YmUuc3ZnXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7Il0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsIm1vZCIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInZ1ZV8xIiwicmVxdWlyZSIsInZ1ZV8yIiwic3Bpbm5lckxvYWRlcl92dWVfMSIsIlBvcHVwTW9kYWxfdnVlXzEiLCJheGlvc18xIiwiaW5kZXhfMSIsImRlZmluZUNvbXBvbmVudCIsIl9fbmFtZSIsInNldHVwIiwiX19wcm9wcyIsIl9hIiwiZXhwb3NlIiwic3RvcmUiLCJ1c2VTdG9yZSIsInNob3dSZXRyeURvd25sb2FkTW9kZWwiLCJyZWYiLCJpc0xvYWRpbmciLCJkb3dubG9hZEZpbGUiLCJkaXNwYXRjaCIsImFwaVVybCIsImNvbmNhdCIsImRvd25sb2FkQXBpVXJsIiwic3BsaXQiLCJtZXRob2QiLCJ1cmwiLCJyZXNwb25zZVR5cGUiLCJ0aGVuIiwicmVzIiwiZmlsZU5hbWUiLCJoZWFkZXJzIiwiYmxvYiIsIkJsb2IiLCJkYXRhIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJldHJ5RG93bmxvYWQiLCJ4bHNEb3dubG9hZFN0YXR1cyIsImdldCIsImNhbmNlbERvd25sb2FkIiwic3VjY2VzcyIsInBlcmNlbnRhZ2VXaWR0aCIsImNvbXB1dGVkIiwiZmlsZUNvdW50IiwiaW5qZWN0IiwiX19yZXR1cm5lZF9fIiwic3Bpbm5lckxvYWRlciIsIk1vZGFsIiwiZW51bWVyYWJsZSIsIl9fYXNzaWduIiwiYXNzaWduIiwidCIsInMiLCJpIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInAiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJfX2dlbmVyYXRvciIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwiZiIsInkiLCJnIiwidmVyYiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwidiIsIm9wIiwiVHlwZUVycm9yIiwicG9wIiwicHVzaCIsInV0aWxzXzEiLCJwcm9wcyIsInZhbGlkYXRpb25TdGF0cyIsInR5cGUiLCJyZXF1aXJlZCIsInZhbGlkYXRpb25OYW1lcyIsIkFycmF5IiwiZXJyb3JUYWIiLCJCb29sZWFuIiwiZW1pdHMiLCJfdGhpcyIsImVtaXQiLCJoYXNFcnJvciIsIm9uTW91bnRlZCIsInNob3dQb3B1cCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJhY3Rpdml0aWVzSWRzIiwid2F0Y2giLCJ2YWxpZGF0aW9uQ2FuY2VsSGFuZGxlciIsInJlbW92ZUl0ZW0iLCJzdGF0ZSIsInB1Ymxpc2hBbGVydFZhbHVlIiwic2V0VGltZW91dCIsImJ1bGtBY3Rpdml0eVB1Ymxpc2hTdGF0dXMiLCJpYXRpVmFsaWRhdG9yTG9hZGVyIiwiY29tcGxldGUiLCJ0b3RhbCIsImZhaWxlZCIsImNvbXBsZXRlZFN0ZXBzIiwic3RhcnRCdWxrUHVibGlzaCIsImhhbmRsZU1pbmltaXplIiwiaXNQdWJsaXNoZWRNb2RhbE1pbmltaXplZCIsInNldEl0ZW0iLCJ0b3RhbFZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzIiwidmFsdWVzIiwiaW1wb3J0ZWRBY3Rpdml0aWVzTGlzdCIsImZpbHRlciIsIml0ZW0iLCJpc192YWxpZCIsInB1Ymxpc2hpbmdBY3Rpdml0eUNvdW50IiwiX2IiLCJfYyIsIl9kIiwicHVibGlzaGluZ0FjdGl2aXRpZXMiLCJwdWJsaXNoaW5nIiwiYWN0aXZpdGllcyIsInB1Ymxpc2hpbmdTdGF0dXMiLCJyZXNwb25zZSIsInN0YXR1cyIsInZhbGlkYXRpb25TdGF0c1RvdGFsIiwia2V5cyIsImNuIiwiX3R5cGVvZiIsIm9iaiIsImNvbnN0cnVjdG9yIiwic2hvd18xIiwiY29yZV8xIiwiQ3JlYXRlTW9kYWxfdnVlXzEiLCJUb2FzdE1lc3NhZ2VfdnVlXzEiLCJ1c2VyIiwib25ib2FyZGluZyIsIm9yZ2FuaXphdGlvbiIsInZhbGlkYXRvciIsIl9kZWZhdWx0Iiwic3VwZXJBZG1pbiIsImhhc0FkbWluQmFyIiwiTnVtYmVyIiwiZGVmYXVsdExhbmd1YWdlIiwiU3RyaW5nIiwiZGV0YWlsU3RvcmUiLCJzaG93VXNlckRyb3Bkb3duIiwidG9hc3RWaXNpYmlsaXR5Iiwic2hvd1NpZGViYXIiLCJ0b2FzdE1lc3NhZ2UiLCJ0b2FzdFR5cGUiLCJlcnJvclRvYXN0VmlzaWJpbGl0eSIsImVycm9yVG9hc3RNZXNzYWdlIiwiZXJyb3JUb2FzdFR5cGUiLCJyZWFjdGl2ZSIsImxhbmd1YWdlTmF2TGlDbGFzc2VzIiwibGFuZ3VhZ2VOYXZBbmNob3JDbGFzc2VzIiwibWVudU5hdkxpQ2xhc3NlcyIsIm1lbnVOYXZBbmNob3JDbGFzc2VzIiwibGFuZ3VhZ2VzIiwibGFuZ3VhZ2UiLCJwZXJtYWxpbmsiLCJhY3RpdmUiLCJvcmdfbWVudXMiLCJuYW1lIiwic3VwZXJhZG1pbl9tZW51cyIsImxpQ2xhc3MiLCJ1c2VUb2dnbGUiLCJtb2RhbFZhbHVlIiwibW9kYWxUb2dnbGUiLCJ0b2FzdCIsIm1lc3NhZ2UiLCJpc1RvdWNoRGV2aWNlIiwibmF2aWdhdG9yIiwibWF4VG91Y2hQb2ludHMiLCJUb2dnbGVNb2RlbCIsInNpZGViYXIiLCJkb2N1bWVudEVsZW1lbnQiLCJzdHlsZSIsIm92ZXJmbG93IiwiY2hhbmdlQWN0aXZlTWVudSIsInBhdGgiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiZm9yRWFjaCIsIm1lbnUiLCJrZXkiLCJpbmNsdWRlcyIsInBhIiwidXNlU3RvcmFnZSIsImxvZ291dCIsInBvc3QiLCJzZXNzaW9uU3RvcmFnZSIsInNlYXJjaFZhbHVlIiwiY3VycmVudFVSTCIsInF1ZXJ5U3RyaW5nIiwic2VhcmNoIiwidXJsUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic3Bpbm5lciIsInNlYXJjaEZ1bmN0aW9uIiwicGFyYW0iLCJyZXBsYWNlIiwic29ydGluZ1BhcmFtIiwicXVlcnlTdHJpbmdBcnIiLCJzbGljZSIsImpvaW4iLCJnZXRTdGFydGVkIiwiaXNNb2RlbENsb3NlQ2xpY2tlZCIsInJlZGlyZWN0UHJvZmlsZSIsIm9uVW5tb3VudGVkIiwicHJvdmlkZSIsIkNyZWF0ZU1vZGFsIiwiVG9hc3QiLCJ0aXRsZV8xIiwiY29tcG9uZW50cyIsInRvUmVmcyIsImJyZWFkY3J1bWJEYXRhIiwiZ2V0QWN0aXZpdHlUaXRsZSIsIlNoaW1tZXJMb2FkaW5nX3Z1ZV8xIiwiYnVsa1B1Ymxpc2hMZW5ndGgiLCJvcGVuTW9kZWwiLCJwYVN0b3JhZ2UiLCJjb21wbGV0ZWQiLCJyZWZyZXNoVG9hc3RNc2ciLCJoYXNGYWlsZWRBY3Rpdml0aWVzIiwiaWRzIiwiYnVsa3B1Ymxpc2hBY3Rpdml0aWVzIiwiYnVsa1B1Ymxpc2hTdGF0dXMiLCJwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhIiwiaW50ZXJ2YWxJRCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImZhaWxlZEFjdGl2aXRpZXMiLCJ2aXNpYmlsaXR5IiwicmVmcmVzaE1lc3NhZ2VUeXBlIiwicmVmcmVzaE1lc3NhZ2UiLCJjb3VudCIsImNoZWNrU3RhdHVzIiwibmVzdGVkT2JqZWN0IiwiZmFpbGVkQWN0aXZpdGllc0lEIiwiYXNBcnJheURhdGEiLCJlbnRyaWVzIiwiZmlsdGVyZWQiLCJpbmRleE9mIiwiYWN0aXZpdHlfaWQiLCJmYWlsZWRBY3Rpdml0aWVzRGF0YSIsImZyb21FbnRyaWVzIiwic2V0RGF0YVRvTG9jYWxzdG9yYWdlIiwiZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UiLCJpc0pzb24iLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzIiwic3RhdHVzXzEiLCJkZWVwIiwiU2hpbW1lckxvYWRpbmciLCJyZXRyeVB1Ymxpc2hpbmciLCJlbmRwb2ludCIsImNvbXBsZXRlZEFjdGl2aXRpZXMiLCJfZSIsIl9mIiwic3RhcnRQdWJsaXNoaW5nUmV0cnkiLCJTcGlubmVyTG9hZGVyIiwidGV4dCIsImljb24iLCJhY3Rpdml0eUxlbmd0aCIsImRpc2FibGVkIiwiYnRuVHlwZSIsImRhdGVfZm5zXzEiLCJ2dWVfZGF0ZXBpY2tlcl8xIiwibW9tZW50XzEiLCJkcm9wZG93blJhbmdlIiwiZmlyc3REYXRlIiwiZGF0ZUxhYmVsIiwiY3VycmVudFZpZXciLCJjbGVhckRhdGUiLCJzdGFydGluZ0RhdGUiLCJlbmRpbmdEYXRlIiwiZGF0ZU5hbWUiLCJzZWxlY3RlZFByZXNlbnRJbmRleCIsImRhdGVSYW5nZU1haW4iLCJkYXRlVHlwZSIsImRhdGVEcm9wZG93biIsImRhdGVUeXBlTmFtZSIsImRhdGVUeXBlS2V5Iiwic2hvd1JhbmdlRHJvcGRvd24iLCJpbml0aWFsRGF0ZSIsImZpeGVkIiwidG9kYXlEYXRlIiwiRGF0ZSIsImZvcm1hdCIsInNlbGVjdGVkRGF0ZSIsInNldERhdGUiLCJnZXREYXRlIiwiZGF0ZXBpY2tlciIsInRyaWdnZXJTZXREYXRlUmFuZ2UiLCJoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2siLCJpbmRleCIsInByZXNlbnRSYW5nZUl0ZW1zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImNsYXNzTGlzdCIsImFkZCIsImoiLCJyZW1vdmUiLCJyZXNldERhdGUiLCJoYW5kbGVDYWxlbmRhckl0ZW1DbGljayIsImFkZEV2ZW50c0ZvckNhbGVuZGFyIiwiX2xvb3BfMSIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYWxlbmRhckl0ZW1zIiwicmVtb3ZlRXZlbnRzT2ZDYWxlbmRhciIsIl9sb29wXzIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlU2hvd1JhbmdlRHJvcGRvd24iLCJwcmVzZXRSYW5nZXMiLCJyYW5nZSIsInN0YXJ0T2ZEYXkiLCJlbmRPZkRheSIsInN0YXJ0T2ZXZWVrIiwic3ViRGF5cyIsInN0YXJ0T2ZNb250aCIsImVuZE9mTW9udGgiLCJzdWJNb250aHMiLCJzdGFydE9mWWVhciIsImNvbnZlcnREYXRlIiwiZGF0ZSIsImRhdGVPYmoiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJtb250aCIsImdldE1vbnRoIiwicGFkU3RhcnQiLCJkYXkiLCJvcGVuQ2FsZW5kYXIiLCJvcGVuTWVudSIsImNsb3NlQ2FsZW5kYXIiLCJjbG9zZU1lbnUiLCJzZWxlY3REYXRlIiwiZGF0ZXMiLCJ0ZW1wQXJyYXkiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJjbG9zZURhdGVEcm9wZG93biIsImtlZXBNb2RlbE9wZW4iLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0IiwidHJpZ2dlclNldERhdGVUeXBlIiwiZmlsdGVyZWREYXRlVHlwZSIsImV2ZW50VHlwZSIsImN1c3RvbVBvc2l0aW9uIiwibGVmdFBvc2l0aW9uIiwiaW5uZXJXaWR0aCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwibGVmdCIsInNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duIiwiVnVlRGF0ZVBpY2tlciIsInZ1ZV8zIiwiTG9hZGVyX3Z1ZV8xIiwiaXNFbXB0eSIsInNob3ciLCJoYXNFcnJvcnMiLCJlcnJvckNvdW50IiwidG9hc3REYXRhIiwiZXJyb3JEYXRhIiwiYWNjb3VudF92ZXJpZmllZCIsInB1Ymxpc2hlcl9hY3RpdmUiLCJkZWZhdWx0X3NldHRpbmciLCJwdWJsaXNoZXJfc2V0dGluZyIsInRva2VuX3N0YXR1cyIsImlzTG9hZGVyVmlzaWJsZSIsInJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsIiwiZXJyb3IiLCJhbGwiLCJzcHJlYWQiLCJzZXR0aW5nX3JlcyIsInVzZXJfcmVzIiwib3JnX3JlcyIsInVzZXJfcmVzcG9uc2UiLCJvcmdfcmVzcG9uc2UiLCJkZWZhdWx0X3N0YXR1cyIsInB1Ymxpc2hlcl9zdGF0dXMiLCJncm91cGVkRXJyb3IiLCJUcmFuc2l0aW9uUm9vdCIsIkxvYWRlciIsInRpdGxlIiwiY2xvc2UiLCJfX3NwcmVhZEFycmF5IiwidG8iLCJmcm9tIiwicGFjayIsImwiLCJhciIsImhlbHBlclRleHQiLCJzaG93QWNjb3JkaWFuSXRlbXMiLCJoYXNUcnVlUGF0aCIsInBhdGhBcnJheXMiLCJmaW5kVHJ1ZVBhdGhzIiwidG9nZ2xlU2hvd0FjY29yZGlhbiIsInBhdGhzIiwic25ha2VUb0tlYmFiIiwic3RyIiwiaXNTbmFrZUNhc2UiLCJnZXRPcmRpbmFsIiwiaXNBcnJheSIsIm5ld0tleSIsImhvdmVyVGV4dCIsIndpZHRoIiwicG9zaXRpb24iLCJpY29uU2l6ZSIsInNob3dJYXRpUmVmZXJlbmNlIiwiQnV0dG9uQ29tcG9uZW50X3Z1ZV8xIiwibGlzdEl0ZW1zIiwiaGVhZGVyIiwidGVtcExpc3RJdGVtcyIsInB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCIsInNlYXJjaElucHV0IiwiY2hlY2tlZEJveGVzIiwiY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIiLCJzZWxlY3RlZFB1Ymxpc2hlclR5cGUiLCJmb3JtYXRQdWJsaXNoZXJUeXBlIiwia2VlcFB1Ymxpc2hlck1vZGVsT3BlbiIsIm9uQmVmb3JlVW5tb3VudCIsInNob3dOb0RhdGFDb21wb25lbnQiLCJtYXAiLCJ1cGRhdGVBcnJheUJ5U2VhcmNoIiwic2VhcmNoU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJhcHBseUZpbHRlciIsIkJ0bkNvbXBvbmVudCIsImJ0blRleHQiLCJidG5MaW5rIiwibW9kYWxBY3RpdmUiLCJub1BhZGRpbmciLCJkaXNhYmxlQm9keU92ZXJmbG93Iiwic3VwcG9ydEJ1dHRvbiIsInF1ZXJ5U2VsZWN0b3IiLCJkaXNwbGF5IiwiY2hlY2tTdXBwb3J0QnV0dG9uXzEiLCJjaGVja1N1cHBvcnRCdXR0b25fMiIsInZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEiLCJSYWRpYWxQcm9ncmVzc0JhciIsInBlcmNlbnQiLCJjb21wbGV0ZWRQZXJjZW50IiwidG90YWxQZXJjZW50IiwiY29udGVudCIsInZpc2libGUiLCJjbG9zZVNpZGViYXIiLCJjdXJyZW50U3RlcCIsInN0ZXBzIiwiY2hlY2tNYXJrIiwibmV3VmFsIiwiZXJyb3JfMSIsImNvbnNvbGUiLCJvb190eCIsIm9vX2NtIiwiZXZhbCIsIm9vX29vIiwiX2kiLCJjb25zb2xlTG9nIiwib29fdHIiLCJjb25zb2xlVHJhY2UiLCJjb25zb2xlRXJyb3IiLCJvb190cyIsImNvbnNvbGVUaW1lIiwib29fdGUiLCJjb25zb2xlVGltZUVuZCIsInJvd0NvdW50IiwiY29sQ291bnQiLCJyZXNldCIsImFjdGl2ZV9wYWdlIiwibGFzdF9wYWdlbGlzdCIsIm1pZF9wYWdlbGlzdCIsImxhc3RwYWdlcyIsIm1pZHBhZ2VzIiwidXBkYXRlQWN0aXZlUGFnZSIsInBhZ2UiLCJjaGFuZ2VQYWdlIiwicGFnZU51bSIsIm5leHRQYWdlIiwibGFzdF9wYWdlIiwiY3VycmVudFBhZ2UiLCJwcmV2aW91c1BhZ2UiLCJjbGFzc05hbWUiLCJpY29uTmFtZSIsImljb25DbGFzcyIsInVwZGF0ZVVJIiwiaW1wb3J0RGF0YSIsImFjdGl2aXR5Iiwic2hvd0Vycm9ycyIsInNob3dDcml0aWNhbCIsImNyaXRpY2FsVG9nZ2xlIiwic2hvd0Vycm9yIiwiZXJyb3JUb2dnbGUiLCJ3YXJuaW5nVG9nZ2xlIiwic2hvd1dhcm5pbmciLCJlcnJvckxlbmd0aCIsImN1cnJlbnRFcnJvciIsImVycm9ycyIsIm5hcnJhdGl2ZSIsInBlcmlvZF9zdGFydCIsInBlcmlvZF9lbmQiLCJjb3VudEVycm9ycyIsImFjdGl2aXR5SW5kZXgiLCJjcml0aWNhbEFjY29yZGlvblRvZ2dsZSIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwYXJlbnRFbGVtZW50IiwiZWxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJjc3NUZXh0Iiwid2FybmluZ0FjY29yZGlvblRvZ2dsZSIsImVycm9yQWNjb3JkaW9uVG9nZ2xlIiwiYWN0aXZpdHlOYW1lIiwidG90YWxDb3VudCIsInByb2Nlc3NlZENvdW50IiwieGxzRmFpbGVkIiwiY3VycmVudEFjdGl2aXR5IiwibWFwQWN0aXZpdHlOYW1lIiwicmV0cnkiLCJ4bHNGYWlsZWRNZXNzYWdlIiwicHJvY2Vzc2luZyIsIkFjdGl2aXR5RG93bmxvYWRfdnVlXzEiLCJYbHNMb2FkZXJfdnVlXzEiLCJCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEiLCJBY3Rpdml0eVZhbGlkYXRpb25fdnVlXzEiLCJCdWxrcHVibGlzaExvYWRlckNhcmRfdnVlXzEiLCJ4bHNEYXRhIiwic2hvd1hsc1N0YXR1cyIsImRvd25sb2FkQ29tcGxldGVkIiwic2hvd0J1bGtwdWJsaXNoTG9hZGVyIiwicGFyZW50RWxlbWVudFJlZiIsImhlaWdodCIsInVzZUVsZW1lbnRTaXplIiwibWluaW1pemUiLCJhY3Rpdml0eVB1Ymxpc2hlZERhdGEiLCJkb3dubG9hZFN0YXR1cyIsImlzQmxpbmtpbmciLCJjaGVja1N1cHBvcnRCdXR0b24iLCJ2YWxpZGF0aW5nQWN0aXZpdGllc05hbWVzIiwic2hvd1ZhbGlkYXRpb25Qb3B1cCIsInRyYW5zZm9ybSIsImNoZWNrVmFsaWRhdGlvbiIsInByb2NlZWRWYWxpZGF0aW9uIiwiY2FuY2VsVmFsaWRhdGlvblBvbGxpbmciLCJhY3Rpdml0aWVzXzEiLCJhY3Rpdml0eUlkIiwidmFsaWRhdGlvblJ1bm5pbmciLCJjaGVja1ZhbGlkYXRpb25TdGF0dXMiLCJzaG93QnVsa3B1Ymxpc2giLCJwb2xsIiwidmFsaWRhdGluZ0FjdGl2aXRpZXMiLCJjb21wbGV0ZV9jb3VudCIsImZhaWxlZF9jb3VudCIsInZhbGlkYXRpb25GYWlsZWRBY3Rpdml0aWVzIiwic2hvd1ZhbGlkYXRpb25FcnJvciIsInN0YXJ0VmFsaWRhdGlvbiIsInRvU3RyaW5nIiwiY2xvc2VCdWxrcHVibGlzaCIsImNsb3NlWGxzIiwiY29tcGxldGVYbHNEb3dubG9hZCIsImRvd25sb2FkaW5nIiwicHJvY2Vzc2luZ0FjdGl2aXR5Q291bnQiLCJjb21wbGV0ZUFjdGl2aXR5Q291bnQiLCJoaWRlQnVsa3B1Ymxpc2hMb2FkZXIiLCJoYW5kbGVBY3Rpdml0eVB1Ymxpc2hlZERhdGEiLCJzb21lIiwiaGFuZGxlQmFja2dyb3VuZFByb2Nlc3NUb2dnbGVyIiwid2F0Y2hFZmZlY3QiLCJibGlua0JhY2tncm91bmQiLCJBY3Rpdml0eURvd25sb2FkIiwiWGxzTG9hZGVyIiwiQnVsa3B1Ymxpc2hXaXRoWGxzIiwiQWN0aXZpdHlWYWxpZGF0aW9uIiwiQnVsa3B1Ymxpc2hMb2FkZXJDYXJkIiwiUHJvZ3Jlc3NMb2FkZXJfdnVlXzEiLCJkZWxldGVWYWx1ZSIsImRlbGV0ZVRvZ2dsZSIsImxvYWRlciIsImRlbGV0ZUZ1bmN0aW9uIiwiZGVsZXRlRW5kUG9pbnQiLCJzZWxlY3RlZEFjdGl2aXRpZXMiLCJyZWxvYWQiLCJkZXNpZ24iLCJzdHlsZVR5cGUiLCJjbGFzc2VzIiwibGlua2VkVG9JYXRpIiwiY29yZUNvbXBsZXRlZCIsInB1Ymxpc2giLCJkZXByZWNhdGlvblN0YXR1c01hcCIsInNob3dFeGlzdGluZ1Byb2Nlc3NNb2RhbCIsIm9uVXBkYXRlZCIsInB1Ymxpc2hWYWx1ZSIsInB1Ymxpc2hTdGVwIiwidmFsaWRhdGlvblN0b3JlIiwiaWQiLCJwdWJsaXNoVG9nZ2xlIiwiY29yZUVsZW1lbnRTdGF0dXMiLCJoYXNEZXByZWNhdGVkVmFsdWVJblVzZSIsImNoZWNrSWZIYXNEZXByZWNhdGVkVmFsdWVJblVzZSIsInJlY3Vyc2l2ZUNoZWNrIiwiaXRlbV8xIiwiZWxlbWVudCIsImxvYWRlclRleHQiLCJyZXNldFB1Ymxpc2hTdGVwIiwicHVibGlzaFN0YXRlQ2hhbmdlIiwicHVibGlzaFN0YXRlIiwiZGVzY3JpcHRpb24iLCJhbGVydFN0YXRlIiwiZXJyIiwiY3JpdGljYWxOdW1iZXIiLCJlcnJvck51bWJlciIsIndhcm5pbmdOdW1iZXIiLCJzdG9wQnVsa3B1Ymxpc2giLCJjaGVja1B1Ymxpc2giLCJ2YWxpZGF0b3JTdWNjZXNzIiwidmFsaWRhdGlvblJlc3BvbnNlIiwicHVibGlzaFJlc3BvbnNlIiwicmVzZXRTdGF0dXMiLCJpbl9wcm9ncmVzcyIsInB1Ymxpc2hTdGF0dXMiLCJsaW5rZWRfdG9faWF0aSIsInN0YXJ0TmV3UHVibGlzaGluZyIsInVucHVibGlzaFZhbHVlIiwidW5wdWJsaXNoVG9nZ2xlIiwidW5QdWJsaXNoRnVuY3Rpb24iLCJpdGVtSWQiLCJpdGVtVHlwZSIsImVycm9yVHlwZSIsImJnQ29sb3IiLCJpY29uQ29sb3IiLCJ0b2dnbGUiLCJhY2NvcmRpb25Ub2dnbGUiLCJ1cGRhdGVFcnJvckNvdW50TWVzc2FnZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwiTGlua192dWVfMSIsIkJ0biIsIm1hbmRhdG9yeUVsZW1lbnRTdGF0dXMiLCJwdWJsaXNoRnVuY3Rpb24iLCJpc19wdWJsaXNoZWQiLCJCcmVhZENydW1iX3Z1ZV8xIiwiQnJlYWRjcnVtYiIsImJhY2tMaW5rIiwiY2hhbmdlVGV4dCIsIkVycm9yTGlzdHNfdnVlXzEiLCJVcGxvYWRlZEVycm9yc192dWVfMSIsImVycm9yVmFsdWUiLCJpbXBvcnRFcnJvcnMiLCJpc3N1ZVR5cGUiLCJpbXBvcnRFcnJvclR5cGVzIiwidGVtcERhdGEiLCJjcml0aWNhbCIsIndhcm5pbmdzIiwidXBkYXRlVGVtcE1lc3NhZ2UiLCJlcnJvckRhdGFQcm9wcyIsImVycm9yRGF0YVByb3BzXzEiLCJzZXZlcml0eSIsImltcG9ydEVycm9ybGVuZ3RoIiwiZGVsZXRlRXJyb3JzIiwiRXJyb3JMaXN0cyIsIlVwbG9hZGVkRXJyb3JzIiwiY29sb3IiLCJtdWx0aXNlbGVjdF8xIiwiY3VycmVuY2llcyIsImJ1ZGdldE5vdFByb3ZpZGVkIiwiaHVtYW5pdGFyaWFuIiwiZGVmYXVsdFZhbHVlcyIsImJ1ZGdldF9ub3RfcHJvdmlkZWQiLCJkZWZhdWx0X2N1cnJlbmN5IiwiZGVmYXVsdF9sYW5ndWFnZSIsImhpZXJhcmNoeSIsImRlZmF1bHRFcnJvcnMiLCJlcnJvclJlc2V0IiwiZGVmYXVsdERhdGEiLCJsb2FkZXJWaXNpYmlsaXR5Iiwic3VibWl0Rm9ybSIsInB1dCIsIk11bHRpc2VsZWN0IiwiY29yZV8yIiwiSW5kZXhfMSIsIkhvdmVyVGV4dF92dWVfMSIsIlJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xIiwiUHVibGlzaEJ1dHRvbl92dWVfMSIsIlVuUHVibGlzaEJ1dHRvbl92dWVfMSIsIkRlbGV0ZUJ1dHRvbl92dWVfMSIsIlN0aWNreUVycm9yc192dWVfMSIsIkVycm9yUG9wVXBfdnVlXzEiLCJYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEiLCJSZWZyZXNoVG9hc3RfdnVlXzEiLCJQdWJsaXNoU2VsZWN0ZWRfdnVlXzEiLCJBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEiLCJBY3Rpdml0eUVsZW1lbnRfdnVlXzEiLCJQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xIiwiSG92ZXJUZXh0IiwiUHJvZ3Jlc3NCYXIiLCJFbGVtZW50cyIsIkFjdGl2aXR5RWxlbWVudCIsIlJlc3VsdCIsIlB1Ymxpc2giLCJFcnJvcnMiLCJVblB1Ymxpc2giLCJEZWxldGVCdXR0b24iLCJQcmV2aW91c2x5UHVibGlzaGVkIiwiRXJyb3JQb3BVcCIsIlhsc1VwbG9hZEluZGljYXRvciIsIlJlZnJlc2hUb2FzdE1lc3NhZ2UiLCJQdWJsaXNoU2VsZWN0ZWQiLCJlbGVtZW50cyIsImdyb3VwcyIsInByb2dyZXNzIiwidHlwZXMiLCJyZXN1bHRzIiwidHJhbnNhY3Rpb25zIiwiaWF0aVZhbGlkYXRvclJlc3BvbnNlIiwiaW1wb3J0QWN0aXZpdHlFcnJvciIsInJlbW92ZWQiLCJpbmRleFN0b3JlIiwicG9zaXRpb25ZIiwic2NyZWVuV2lkdGgiLCJkb3dubG9hZFZhbHVlIiwiZG93bmxvYWRUb2dnbGUiLCJ0b2dnbGVTaWRlYmFyIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsWSIsImlzdG9wVmlzaWJsZSIsImNhbGNXaWR0aCIsIm9ubG9hZCIsImNsZWFyIiwiaWdub3JlVG9hc3RVcGRhdGUiLCJncm91cGVkRGF0YSIsImFjdGl2aXR5UHJvcHMiLCJlbGVtZW50UHJvcHMiLCJzdGF0dXNQcm9wcyIsInRyYW5zYWN0aW9uUHJvcHMiLCJmbGFnIiwiayIsInBhZ2VUaXRsZSIsImRlZmF1bHRfZmllbGRfdmFsdWVzIiwiZm9ybWF0VGl0bGUiLCJpZ25vcmVVcGRhdGVzIiwid2F0Y2hJZ25vcmFibGUiLCJ1bmRlZmluZWQiLCJmbHVzaCIsImhhc19ldmVyX2JlZW5fcHVibGlzaGVkIiwidmFsaWRhdGlvblJlc3VsdCIsIm1ldGhvZHMiLCJvbmx5RGVwcmVjYXRlZFN0YXR1c01hcCIsIk9uQm9hcmRpbmdJbmRleF92dWVfMSIsIkVtcHR5QWN0aXZpdHlfdnVlXzEiLCJUYWJsZUxheW91dF92dWVfMSIsIlRhYmxlUGFnaW5hdGlvbl92dWVfMSIsIlBhZ2VUaXRsZV92dWVfMSIsIkVycm9yTWVzc2FnZV92dWVfMSIsImFjdGl2aXR5U3RvcmUiLCJFbXB0eUFjdGl2aXR5IiwiUGFnZVRpdGxlIiwiUGFnaW5hdGlvbiIsIlRhYmxlTGF5b3V0IiwiRXJyb3JNZXNzYWdlIiwiT25Cb2FyZGluZ0luZGV4IiwiZGVmYXVsdEZsb3dUeXBlIiwiZGVmYXVsdEZpbmFuY2VUeXBlIiwiZGVmYXVsdEFpZFR5cGUiLCJkZWZhdWx0VGllZFN0YXR1cyIsIm9yZ2FuaXphdGlvbk9uYm9hcmRpbmciLCJvcmdhbml6YXRpb25UeXBlIiwiaXNGaXJzdFRpbWUiLCJjbG9zZU1vZGVsIiwidXBsb2FkQ29tcGxldGUiLCJpbXBvcnRDb21wbGV0ZWQiLCJ0YWJsZUxvYWRlciIsImN1cnJlbnRGaWx0ZXJCeSIsInNob3dFbXB0eVRlbXBsYXRlIiwidmFsaWRGaWx0ZXJCeSIsImFsbFB1Ymxpc2hTdGF0dXNDb3VudE1hcCIsInB1Ymxpc2hlZCIsInJlYWR5X2Zvcl9yZXB1Ymxpc2hpbmciLCJkcmFmdCIsImZldGNoQWN0aXZpdGllc0NvdW50QnlQdWJsaXNoU3RhdHVzIiwicG9sbGluZ0Zvclhsc1N0YXR1cyIsIl9nIiwiX2giLCJfaiIsIl9rIiwidG90YWxfY291bnQiLCJwcm9jZXNzZWRfY291bnQiLCJzdGFydFhsc0Rvd25sb2FkIiwiY2hlY2tEb3dubG9hZFN0YXR1cyIsImNsb3NlWGxzTW9kZWwiLCJjaGVja1hsc3N0YXR1cyIsInRlbXBsYXRlIiwiY2hlY2tEb3dubG9hZCIsImZpbGVfY291bnQiLCJnZXRDdXJyZW50RmlsdGVyQnkiLCJzaG93QnV0dG9ucyIsInNob3dPckhpZGUiLCJmZXRjaEFjdGl2aXRpZXMiLCJmaWx0ZXJCeVB1Ymxpc2hTdGF0dXMiLCJwYXJhbXMiLCJoYXMiLCJzZXQiLCJuZXdRdWVyeVN0cmluZyIsImZpbHRlckJ5IiwiYWN0aXZpdGllc0xpc3QiLCJmb3JtRGF0YSIsImFjdGl2aXR5X2lkZW50aWZpZXIiLCJjbG9zZU1vZGFsIiwic3RvcmVBY3Rpdml0eSIsIkJ1bGtQdWJsaXNoX3Z1ZV8xIiwidXNlU2hhcmVkTG9jYWxTdG9yYWdlXzEiLCJzaGFyZWRNaW5pbWl6ZSIsInVzZVNoYXJlZE1pbmltaXplIiwic3RhcnRQdWJsaXNoIiwiY29yZUVsZW1lbnRMb2FkZXIiLCJjYW5jZWxCdWxrUHVibGlzaCIsImNhbmNlbFZhbGlkYXRpb24iLCJjb3JlQ29tcGxldGVkQWN0aXZpdGllcyIsImNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMiLCJjYW5jZWxCdWxrUHVibGlzaGluZyIsImRpc3BsYXlUb2FzdCIsInZlcmlmeUNvcmVFbGVtZW50cyIsImRlcHJlY2F0aW9uX3N0YXR1c19tYXAiLCJjb3JlX2VsZW1lbnRzX2NvbXBsZXRpb24iLCJpbmNvbXBsZXRlIiwidmFsaWRhdGVBY3Rpdml0aWVzIiwidmFsaWRhdGlvbkVycm9ycyIsIm9yZ2FuaXphdGlvbl9pZCIsImpvYl9iYXRjaF91dWlkIiwic3RvcFZhbGlkYXRpbmciLCJzdGFydENvcmVWYWxpZGF0aW9uIiwiUGFnZUxvYWRlciIsIkJ1bGtQdWJsaXNoaW5nTW9kYWwiLCJjbGFzc05hbWUyIiwiV2l6YXJkSW5kZXhfdnVlXzEiLCJDaGVja2luZ0FjdGl2aXRpZXNfdnVlXzEiLCJSb2xsaW5nTG9hZGVyQ29tcG9uZW50X3Z1ZV8xIiwiSWF0aVZhbGlkYXRlX3Z1ZV8xIiwiUHVibGlzaGluZ0FjdGl2aXR5X3Z1ZV8xIiwibmV3U2VsZWN0ZWRBY3Rpdml0aWVzIiwic2hvd1B1Ymxpc2hpbmdBY3Rpdml0eU1vZGFsIiwiY2FuY2VsQWN0aXZpdHlQdWJsaXNoaW5nIiwiY29yZUNvbXBsZXRlZENvdW50IiwiY29yZUluQ29tcGxldGVkQ291bnQiLCJXaXphcmRJbmRleCIsIkNoZWNraW5nQWN0aXZpdGllcyIsIlJvbGxpbmdMb2FkZXIiLCJJYXRpVmFsaWRhdGUiLCJQdWJsaXNoaW5nQWN0aXZpdHkiLCJUYWJJbmRleF92dWVfMSIsIlRhYkluZGV4IiwiYWN0aXZlVGFiIiwiaGFuZGxlQWN0aXZlVGFiIiwic2VsZWN0QWxsQWN0aXZpdGllcyIsImNoZWNrZWQiLCJ2YWxpZEFjdGl2aXRpZXMiLCJwYXJzZUludCIsImluVmFsaWRlZEFjdGl2aXRpZXMiLCJpbW1lZGlhdGUiLCJ0YWJzIiwic2hvd0JvdHRvbUJhbm5lciIsImZvcm1hdERhdGUiLCJkYXRlRm9ybWF0XzEiLCJkYXRlRm9ybWF0IiwiaXNFdmVyeVZhbHVlTnVsbCIsInJvdW5kRmxvYXQiLCJudW0iLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkhhdmVOb3RBZGRlZFlldF92dWVfMSIsIkhlbHBlclRleHRfdnVlXzEiLCJJbmRpY2F0b3JfdnVlXzEiLCJIZWxwZXJUZXh0IiwiTm90WWV0IiwidG9vbHRpcCIsImVsZW1lbnRIYXNEZXByZWNhdGVkQ29kZSIsInJlc3VsdERhdGEiLCJjdXJyZW50TGFuZ3VhZ2UiLCJtb21lbnQiLCJpbmRpY2F0b3IiLCJUaXRsZUVsZW1lbnQiLCJNZWFzdXJlIiwiQXNjZW5kaW5nIiwiQWdncmVnYXRpb25TdGF0dXMiLCJEZXNjcmlwdGlvbiIsIlJlZmVyZW5jZSIsIkJhc2VsaW5lIiwiRG9jdW1lbnRMaW5rIiwiUGVyaW9kIiwicmVzdWx0VGl0bGUiLCJwZXJpb2QiLCJsaW5rQ2xhc3NlcyIsImluZGljYXRvckRhdGEiLCJwZXJpb2REYXRhIiwicGFyZW50RGF0YSIsInJlc3VsdF9pZCIsImFjdGl2aXR5TGluayIsInJlc3VsdElkIiwiYWN0aXZpdHlUaXRsZSIsInJlc3VsdFRpdGxlZCIsInJlc3VsdExpbmsiLCJpbmRpY2F0b3JMaW5rIiwiaW5kaWNhdG9yVGl0bGUiLCJpc01hbmRhdG9yeUZvckluZGljYXRvciIsImVsZW1lbnRPckF0dHJpYnV0ZSIsIm1hbmRhdG9yeUVsZW1lbnRPckF0dHJpYnV0ZSIsImNvdW50RG9jdW1lbnRMaW5rIiwiRGVsZXRlQWN0aW9uX3Z1ZV8xIiwiRGVsZXRlQWN0aW9uIiwiaW5kaWNhdG9ycyIsImluZGljYXRvcnNEYXRhIiwiaGFuZGxlTmF2aWdhdGUiLCJmZXRjaExpc3RpbmdzIiwic3RhdHVzRGF0YSIsImJhc2VUeXBlIiwiZWxlbWVudFNwYWNpbmciLCJiYXNlbGluZSIsImxvY2F0aW9ucyIsInJlZmVyZW5jZSIsImxhc3RMb2NhdGlvbiIsImRpbWVuc2lvbnMiLCJkZXNjVHlwZSIsImRlc2NyaXB0aW9uRGF0YSIsImFsaWdubWVudCIsImRsRGF0YSIsIm1lYXN1cmVUeXBlIiwibWVhc3VyZURhdGEiLCJyZWZUeXBlIiwicmVmRGF0YSIsInRpdGxlVHlwZSIsInRpdGxlRGF0YSIsIlN0ZXBCYXJfdnVlXzEiLCJQdWJsaXNoaW5nU2V0dGluZ3NTdGVwX3Z1ZV8xIiwiRGVmYXVsdFZhbHVlc1N0ZXBfdnVlXzEiLCJPcmdhbmlzYXRpb25EYXRhU3RlcF92dWVfMSIsIkFjdGl2aXR5U3RlcF92dWVfMSIsIm1vZGFsU3RhdGUiLCJpbml0aWFsUmVuZGVyIiwicHVibGlzaGVyU2V0dGluZyIsImRlZmF1bHRWYWx1ZSIsImlzRm9yY2VPcGVuTW9kYWwiLCJvcmdhbml6YXRpb25TdGVwcyIsInN0ZXBzX3N0YXR1cyIsImZpcnN0SW5jb21wbGV0ZVN0ZXAiLCJmaW5kSW5kZXgiLCJmZXRjaERhdGEiLCJwdWJsaXNoaW5nX2luZm8iLCJhY3Rpdml0eV9kZWZhdWx0X3ZhbHVlcyIsImRlZmF1bHRfdmFsdWVzIiwibG9nIiwiY29tcGxldGVkX29uYm9hcmRpbmciLCJkb250X3Nob3dfYWdhaW4iLCJwcm9jZWVkU3RlcCIsInByZXZpb3VzU3RlcCIsImhhbmRsZUNoYW5nZVJlbmRlciIsImNvbXBsZXRlU3RlcCIsInJlbW92ZUNvbXBsZXRlZFN0ZXAiLCJjaGFuZ2VTdGVwIiwiU3RlcEJhciIsIlB1Ymxpc2hpbmdTZXR0aW5nc1N0ZXAiLCJEZWZhdWx0VmFsdWVzU3RlcCIsIk9yZ2FuaXNhdGlvbkRhdGFTdGVwIiwiQWN0aXZpdHlTdGVwIiwiTGluZXNMb2FkZXJfdnVlXzEiLCJGdW5jdGlvbiIsImFsbERlZmF1bHRWYWx1ZSIsImRlZmF1bHRfZmxvd190eXBlIiwiZGVmYXVsdF9maW5hbmNlX3R5cGUiLCJkZWZhdWx0X2FpZF90eXBlIiwiZGVmYXVsdF90aWVkX3N0YXR1cyIsImlzU2F2aW5nU3RhcnRlZCIsImlzU2F2ZWQiLCJkZWZhdWx0VmFsdWVzXzEiLCJkZWZhdWx0VmFsdWVDb21wbGV0ZWRDaGVjayIsIkxpbmVzTG9hZGVyIiwiU2lkZUhlbHBUZXh0X3Z1ZV8xIiwib3JnYW5pemF0aW9uVHlwZU9wdGlvbnMiLCJwcmV2aW91c1ZhbHVlcyIsInNlY29uZGFyeVJlcG9ydGVyT3B0aW9ucyIsIm9yZ2FuaXphdGlvbkRhdGEiLCJzZWNvbmRhcnlfcmVwb3J0ZXIiLCJoZWxwVGl0bGUiLCJoZWxwQ29udGVudCIsImhlbHBWaXNpYmxlIiwiaXNTYXZpbmciLCJlcnJvck1lc3NhZ2VzIiwiaGFzUmVmZXJlbmNlRXJyb3IiLCJyZWZlcmVuY2VFcnJvck1lc3NhZ2UiLCJjb250ZW50VmFsdWVzIiwic2hvd0hlbHAiLCJmaW5kIiwiY29udGFpbnMiLCJ0cmFuc2Zvcm1NZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZmluYWxEYXRhIiwicmVwb3J0aW5nX29yZyIsIlNpZGVIZWxwVGV4dCIsIlRvYXN0TWVzc2FnZSIsInB1Ymxpc2hlcklkIiwib3JnYW5pemF0aW9uSWQiLCJyZWdpc3RyYXRpb25UeXBlIiwiYXBpVG9rZW4iLCJpc1ZlcmlmeWluZ1Rva2VuIiwiaXNTdWNjZXNzIiwidG9rZW5TdGF0dXMiLCJ2ZXJpZnlUb2tlblN0YXR1cyIsIm9yZ2FuaXphdGlvblJlZ2lzdHJhdGlvblR5cGUiLCJuZXdTdGF0dXMiLCJhcGlfdG9rZW4iLCJ2ZXJpZnlUb2tlbiIsInB1Ymxpc2hlcl9pZCIsInB1Ymxpc2hlcl92ZXJpZmljYXRpb24iLCJ0b2tlbl92ZXJpZmljYXRpb24iLCJjb3JlRWxlbWVudHNfMSIsImRyb3Bkb3duIiwiZHJvcGRvd25CdG4iLCJzZWFyY2hCdG5WYWx1ZSIsInNlYXJjaEJ0blRvZ2dsZSIsImVsZW1lbnRJY29ucyIsIm5vdF9jb21wbGV0ZWQiLCJjb3JlIiwiZmlsdGVyZWRFbGVtZW50cyIsImp1c3RTdHJpbmdzIiwiYWN0aXZpdHlDb3JlRWxlbWVudHMiLCJkcm9wZG93bkZpbHRlciIsImdldExpbmsiLCJoYXNfZGF0YSIsIkVsZW1lbnRTdGF0dXNfdnVlXzEiLCJ3YXJuaW5nSW5mb1RleHQiLCJoYXNFdmVyQmVlblB1Ymxpc2hlZCIsImRlcHJlY2F0aW9uQ29kZVVzYWdlIiwibGF5b3V0IiwiZGVsZXRlQWN0aXZpdHlFbGVtZW50IiwiZGVsZXRlRWxlbWVudCIsInNjcm9sbFRvIiwiQWN0aXZpdHlEYXRlIiwiQ29uZGl0aW9ucyIsIkNvbnRhY3RJbmZvIiwiSHVtYW5pdGFyaWFuU2NvcGUiLCJJYXRpSWRlbnRpZmllciIsIkxlZ2FjeURhdGEiLCJMb2NhdGlvbiIsIk90aGVySWRlbnRpZmllciIsIlBhcnRpY2lwYXRpbmdPcmciLCJQbGFubmVkRGlzYnVyc2VtZW50IiwiUG9saWN5TWFya2VyIiwiUmVjaXBpZW50Q291bnRyeSIsIlJlY2lwaWVudFJlZ2lvbiIsIlJlbGF0ZWRBY3Rpdml0eSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbiIsIlNlY3RvciIsIlRhZyIsIlRyYW5zYWN0aW9ucyIsIlN0YXR1cyIsImlzVmlzaWJsZSIsIm1vZGVsVmlzaWJsZSIsInRvZ2dsZU1vZGVsIiwidG9hc3RtZXNzYWdlVHlwZSIsInNob3dFcnJvcnBvcHVwIiwiZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSIsImRvd25sb2FkaW5nSW5Qcm9jZXNzIiwiZG93bmxvYWRFcnJvciIsImZpbGVuYW1lIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlQ2hpbGQiLCJkb3dubG9hZEFueXdheSIsImRvd25sb2FkRXJyb3J4bWwiLCJjb3VudEFjdGl2aXRpZXMiLCJxdWVyeVBhcmFtZXRlcnMiLCJhZGRRdWVyeVBhcmFtcyIsImRvd25sb2FkIiwiZG93bmxvYWRYbWwiLCJ4bWxfZXJyb3IiLCJkb3dubG9hZFhscyIsImRvd25sb2FkQ3N2IiwiQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEiLCJBY3Rpdml0eUJ1dHRvbiIsImRpc21pc3MiLCJEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwicHVibGlzaFJlZiIsIkRvd25sb2FkQWN0aXZpdHlCdXR0b24iLCJBZGRBY3Rpdml0eUJ1dHRvbiIsInNlbGVjdEFsbFZhbHVlIiwic2VsZWN0QWxsVG9nZ2xlIiwiZnJvbU5vdyIsInRvZ2dsZVNlbGVjdEFsbCIsImRhdHVtIiwiZGlyZWN0aW9uIiwic29ydGluZ0RpcmVjdGlvbiIsInNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyIsInF1ZXJ5Iiwic29ydEJ5RGF0ZVVybCIsIlRhcmdldFZhbHVlIiwiQWN0dWFsVmFsdWUiLCJpbmRpY2F0b3JJZCIsInBlcmlvZExpbmsiLCJwZXJpb2RzRGF0YSIsImRsVHlwZSIsImFjdHVhbFZhbHVlIiwiZ2V0TG9jYXRpb24iLCJ0YXJnZXRWYWx1ZSIsIlJlc3VsdEVsZW1lbnRfdnVlXzEiLCJSZXN1bHRFbGVtZW50IiwiSW5kaWNhdG9yIiwiaGFzSW5kaWNhdG9ycyIsInJlc3VsdHNEYXRhIiwiaXNNYW5kYXRvcnlGb3JSZXN1bHQiLCJUaXRsZURlc2NyaXB0aW9uIiwiUmVzdWx0VHlwZSIsImVsZW1lbnROYW1lIiwiZWRpdFVybCIsImVsZW1lbnREYXRhIiwicmVzdWx0VHlwZSIsInJlc3VsdFZvY2FidWxhcnkiLCJ0b29sVGlwIiwicmV2ZXJzZSIsInJlZmVyZW5jZURhdGEiLCJ0eXBlRGF0YSIsInRkRGF0YSIsIlRyYW5zYWN0aW9uRWxlbWVudF92dWVfMSIsIlRyYW5zYWN0aW9uRWxlbWVudCIsInRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25EYXRhIiwidHJhbnNhY3Rpb25MaW5rIiwiaXNNYW5kYXRvcnlJY29uIiwiciIsIkFpZFR5cGUiLCJUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvbkRhdGUiLCJWYWx1ZSIsIlByb3ZpZGVyT3JnYW5pemF0aW9uIiwiUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJEaXNidXJzZW1lbnRDaGFubmVsIiwiRmxvd1R5cGUiLCJGaW5hbmNlVHlwZSIsIlRpZWRTdGF0dXMiLCJnZXRMYW5ndWFnZXMiLCJlbnRyeSIsInRyYW5zYWN0aW9uc0RhdGEiLCJhdERhdGEiLCJjb2RlIiwiZmluYW5jZURhdGEiLCJmbG93RGF0YSIsIlBvRGF0YSIsImNvdW50cnkiLCJzZWN0b3IiLCJ0c0RhdGEiLCJhdWRpdERhdGEiLCJmZXRjaEF1ZGl0TGlzdCIsInJvdXRlIiwibGFiZWxzIiwicm91bmRlZExhYmVscyIsInNob3dHcmFwaExvYWRlciIsImdyYXBoQW1vdW50IiwieWF4aXNUaWNrcyIsIm1heFZhbHVlIiwiY2hhcnQiLCJncmFwaENvbG9yIiwidG9vbHRpcFRleHQiLCJjaGFydE9wdGlvbnMiLCJvZmZzZXRZIiwiem9vbSIsImVuYWJsZWQiLCJvcHRpb25zIiwieGF4aXMiLCJwYWRkaW5nIiwidG9vbGJhciIsIm1hcmtlcnMiLCJzaXplIiwic3Ryb2tlV2lkdGgiLCJjb2xvcnMiLCJob3ZlciIsInN0cm9rZSIsImN1cnZlIiwiY3VzdG9tIiwic2VyaWVzIiwic2VyaWVzSW5kZXgiLCJkYXRhUG9pbnRJbmRleCIsInciLCJnZXREYXkiLCJmb3JtYXR0ZWREYXRlIiwiZ2xvYmFscyIsImNhdGVnb3J5TGFiZWxzIiwidGlja0Ftb3VudCIsInJvdGF0ZSIsInlheGlzIiwibWluIiwibWF4IiwiZm9ybWF0dGVyIiwieUF4aXNTY2FsZSIsIk1hdGgiLCJyb3VuZCIsIlRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xIiwidGFibGVEYXRhIiwidGFibGVIZWFkZXIiLCJhY3Rpdml0eU5hdkxpc3QiLCJhcGlQYXJhbXMiLCJwdWJsaXNoZXJOYXZMaXN0IiwiY3VycmVudHBhZ2UiLCJyZXNldHBhZ2luYXRpb24iLCJvcmRlckJ5Iiwic29ydCIsInNvcnRFbGVtZW50IiwidXNlck5hdmxpc3QiLCJjdXJyZW50SXRlbSIsImN1cnJlbnROYXZMaXN0IiwiZmV0Y2hUYWJsZURhdGEiLCJzb3J0VGFibGUiLCJ0cmlnZ2VycGFnaW5hdGlvbiIsImFjdGl2ZUNsYXNzIiwiTmF2aWdhdGVXaXRoRmlsdGVyIiwidGFiQ2hhbmdlIiwidG9nZ2xlU29ydCIsIm9yZGVyIiwiY29tcGxldGVOZXNzIiwic2hvd1RhYmxlTG9hZGVyIiwidHJ1bmNhdGVUZXh0IiwiVGFibGVMb2FkZXJDb21wb25lbnQiLCJEYXNoYm9hcmRTdGF0c1NlY3Rpb25fdnVlXzEiLCJEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMSIsIkRhdGVSYW5nZVdpZGdldF92dWVfMSIsIm9sZGVzdERhdGVzIiwiY3VycmVudE5hdiIsIkRhdGVMYWJlbCIsImdyYXBoVG90YWwiLCJwdWJsaXNoZXIiLCJoYW5kbGVDaGFuZ2VUYWJsZU5hdiIsInNldERhdGVSYW5nZURhdGUiLCJmZXRjaEdyYXBoRGF0YSIsImRvd25sb2FkUmVwb3J0IiwiYXBwZW5kIiwiZ3JhcGhEYXRhRm9ybWF0dGVyIiwiZ3JhcGhEYXRhIiwieCIsInN0YXJ0IiwiZW5kIiwia2ViYWJDYXNlVG9TbmFrZWNhc2UiLCJjb2RlTGlzdCIsIm9iamVjdExlbmd0aCIsInBhZ2luYXRlZERhdGEiLCJpdGVtSW5QYWdpbmF0ZWREYXRhIiwicHVibGlzaGVyVHlwZUtleSIsIkRhc2hib2FyZFN0YXRzU2VjdGlvbiIsIkRhc2hib2FyZExpc3RTZWN0aW9uIiwiRGF0ZVJhbmdlV2lkZ2V0IiwiQnV0dG9uQ29tcG9uZW50IiwiRGFzaGJvYXJkR3JhcGhfdnVlXzEiLCJpbmFjdGl2ZVB1Ymxpc2hlciIsInB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eSIsImxhc3RSZWdpc3RlcmVkIiwibGFzdFVwZGF0ZWRQdWJsaXNoZXIiLCJsYXN0VXBkYXRlZEFjdGl2aXR5Iiwic2hvd1N0YXRzTG9hZGVyIiwicHVibGlzaGVyU3RhdHMiLCJzaG93UHVibGlzaGVyU3RhdHMiLCJ1c2VySWQiLCJmZXRjaFN0YXRzRGF0YSIsInByb3h5VXNlciIsImxhc3RSZWdpc3RlcmVkUHVibGlzaGVyIiwidXNlcl9pZCIsImluQWN0aXZlUHVibGlzaGVyIiwiRGFzaGJvYXJkR3JhcGgiLCJmaWxlIiwidXBsb2FkRmlsZSIsImZpbGVzIiwiY29uZmlnIiwiRm9ybURhdGEiLCJkb3dubG9hZEV4Y2VsIiwieGxzSW5kaWNhdG9yTW91bnRlZCIsInVwbG9hZFR5cGUiLCJzaG93RG93bmxvYWREcm9wZG93biIsInNob3dEb3dubG9hZENvZGUiLCJzaG93Q2FuY2VsTW9kZWwiLCJkb3dubG9hZENvZGUiLCJyZXEiLCJjYW5jZWxVcGxvYWQiLCJjYW5jZWxJbXBvcnQiLCJpbXBvcnRBbnl3YXkiLCJzZWxlY3RBbGwiLCJ4bHNUeXBlIiwiX2wiLCJfbSIsIkltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xIiwiTGlzdEVsZW1lbnRfdnVlXzEiLCJzZWxlY3RlZENvdW50IiwiYWN0aXZpdGllc0xlbmd0aCIsInRhYmxlUm93IiwidGFibGVXaWR0aCIsInRpbWVyIiwiZ2V0RGltZW5zaW9ucyIsIm5leHRUaWNrIiwiY2xpZW50V2lkdGgiLCJ1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMiLCJzcGxpY2UiLCJpbXBvcnRBY3Rpdml0aWVzIiwiZmlsZXR5cGUiLCJQbGFjZWhvbGRlciIsIkxpc3RFbGVtZW50IiwiU2hpbW1lciIsInRvZ2dsZUVycm9yIiwic2VsZWN0RWxlbWVudCIsInNlbGVjdGVkRGF0YSIsIlhsc0xpc3RFcnJvcl92dWVfMSIsImdsb2JhbEVycm9yIiwic29ydE9yZGVyIiwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCIsInNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCIsInNob3dDcml0aWNhbEVycm9yTWVzc2FnZSIsInNob3dHTG9iYWxFcnJvciIsInNvcnRlZERhdGEiLCJhIiwiYiIsImNoZWNrQ3JpdGljYWxFcnJvciIsImRvd25sb2FkSWRlbnRpZmllckVycm9yIiwiRmlsZSIsImFuY2hvclRhZyIsInJldm9rZU9iamVjdFVSTCIsImNyaXRpY2FsQXJyeSIsInRvdGFsQ3JpcmljYWxFcnJvckNvdW50IiwiYWRkQWN0aXZpdGllcyIsIlhsc0xpc3RFcnJvciIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWxfdnVlXzEiLCJPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRWxlbWVudHMiLCJPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbCIsIlB1Ymxpc2hVbnB1Ymxpc2giLCJtYW5kYXRvcnlDb21wbGV0ZWQiLCJ1c2VyUm9sZSIsIm9yZ2FuaXphdGlvblByb3BzIiwicHVibGlzaE1lc3NhZ2UiLCJtYW5kYXRvcnkiLCJvcmdNYW5kYXRvcnlFbGVtZW50cyIsInJlcGxhY2VVbmRlcnNjb3JlIiwic3RyaW5nIiwicmVnZXgiLCJub3REZWxldGFibGVFbGVtZW50cyIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbiIsIlRvdGFsQnVkZ2V0IiwiUmVwb3J0aW5nT3JnQnVkZ2V0IiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0IiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldCIsIlRvdGFsRXhwZW5kaXR1cmUiLCJlbWFpbCIsImVtYWlsRXJyb3IiLCJyZXF1ZXN0IiwicmVzcG9uc2VVUkwiLCJ0b2tlbiIsInBhc3N3b3JkIiwicGFzc3dvcmRfY29uZmlybWF0aW9uIiwiZm9ybSIsInN0b3JlXzEiLCJhY3Rpb25zXzEiLCJkZWZhdWx0Q29sbGFib3JhdGlvblR5cGUiLCJkZWZhdWx0Rm9ybSIsImRlZmF1bHRFcnJvciIsInVwZGF0ZVN0b3JlIiwiQWN0aW9uVHlwZXMiLCJVUERBVEVfREVGQVVMVF9WQUxVRVMiLCJTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEiLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEiLCJTZXR0aW5nRGVmYXVsdEZvcm0iLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm0iLCJpc1N1cGVyYWRtaW4iLCJ0b2FzdFRpbWVvdXRJZCIsImluaXRpYWxBcGlDYWxsQ29tcGxldGVkIiwidGFiIiwicHVibGlzaGluZ0Zvcm0iLCJwdWJsaXNoaW5nSW5mbyIsInB1Ymxpc2hpbmdFcnJvciIsInNob3dUb2tlblRhZyIsIlVQREFURV9QVUJMSVNISU5HX0ZPUk0iLCJzZXR0aW5nRGF0YSIsInB1Ymxpc2hlckluZm8iLCJhY3Rpdml0eVZhbHVlcyIsInNldEVycm9ycyIsInRvZ2dsZVRhYiIsInN1Ym1pdERlZmF1bHQiLCJjbGVhclRpbWVvdXQiLCJoaWVyYXJjaGlhbCIsInN1Ym1pdFB1Ymxpc2hpbmciLCJzaG93VGFnIiwiYXV0b1ZlcmlmeSIsIlRhYmxlTGlzdF92dWVfMSIsImNvdW50cmllcyIsInNldHVwQ29tcGxldGVuZXNzIiwicmVnaXN0cmF0aW9uVHlwZXMiLCJwdWJsaXNoZXJUeXBlcyIsImRhdGFMaWNlbnNlcyIsIlRhYmxlTGlzdCIsImxhbmdfMSIsInBocERlcGVuZGVuY2llcyIsIm5vZGVEZXBlbmRlbmNpZXMiLCJwYWNrYWdlTWFuYWdlclZlcnNpb24iLCJsYXRlc3RNYW5hZ2VyVmVyc2lvbiIsImdldFN0YXR1c0NsYXNzIiwidXBkYXRlU3RhdHVzIiwiZ2V0U3RhdHVzTWVzc2FnZSIsInJlc29sdmVMYXRlc3RWZXJzaW9uIiwiZ2V0SW5kZXgiLCJvcmdhbml6YXRpb25OYW1lIiwic3dpdGNoQmFjayIsIk11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMSIsIlBvcHVwTW9kYWwiLCJkZWxldGVJZCIsImRlbGV0ZU9yZ05hbWUiLCJkZWxldGVNb2RhbCIsIm1hcmtBc1NwYW0iLCJzaG93TG9hZGVyIiwidG9nZ2xlRGVsZXRlQ29uZmlybWF0aW9uIiwib3BlbkRlbGV0ZU1vZGFsIiwiZGVsZXRlT3JnIiwib3JnSWQiLCJmZXRjaE9yZ2FuaXNhdGlvbiIsImdldENvdW50cmllc1dpdGhQcmVmaXgiLCJyZXR1cm5WYWx1ZUZvckNvdW50cmllcyIsImNvdW50cnlDb2RlcyIsImNvdW50cmllc1dpdGhQcmVmaXgiLCJvcmdhbmlzYXRpb25EYXRhIiwibXVsdGlzZWxlY3RTdHlsZSIsInB1Ymxpc2hlcl90eXBlIiwiZGF0YV9saWNlbnNlIiwiY29tcGxldGVuZXNzIiwicmVnaXN0cmF0aW9uX3R5cGUiLCJzdGFydF9kYXRlIiwiZW5kX2RhdGUiLCJkYXRlX3R5cGUiLCJzZWxlY3RlZF9kYXRlX2ZpbHRlciIsInJlc2V0UGFnaW5hdGlvbiIsInRvdGFsT3JnYW5pc2F0aW9uIiwicmVnaXN0cnlBcGlLZXlTdGF0dXMiLCJkZWZhdWx0VmFsdWVTdGF0dXMiLCJzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoIiwiY3JlYXRlZF9hdCIsImxhc3RfbG9nZ2VkX2luIiwic29ydFBhcmFtcyIsInJvdGF0ZUNsYXNzIiwiY2xvc2VQdWJsaXNoZXJNb2RlbCIsImNsZWFyRGF0ZUZpbHRlciIsImdlbmVyYXRlTGFiZWwiLCJmaWx0ZXJQYXJhbXMiLCJnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlIiwicXVlcnlQYXJhbXNJbktleVZhbCIsInF1ZXJ5UGFyYW1zIiwiaXNGaWx0ZXJBcHBsaWVkIiwiZmlsdGVyS2V5IiwicmVmcmVzaFN0YXR1c0FycmF5cyIsImRlZmF1bHRTb3J0RGlyZWN0aW9uIiwic29ydERpcmVjdGlvbiIsIm9yZGVyVHlwZSIsInNvcnRCeSIsInJlc2V0QWxsRmlsdGVycyIsIm9yZ0RhdGEiLCJvcmdEYXR1bSIsInNldHRpbmdzIiwiY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCIsImFjdGl2aXR5RGVmYXVsdFZhbHVlcyIsInNlbGVjdGVkRGF0ZUZpbHRlciIsInNldERhdGVUeXBlIiwidG9nZ2xlU2hvd011bHRpU2VsZWN0IiwicmVjdCIsInNldFNlbGVjdGVkUHVibGlzaGVyIiwic2hvd01hcHBlZERhdGEiLCJsaWNlbnNlIiwidHJpbSIsIk11bHRpU2VsZWN0V2l0aFNlYXJjaCIsInNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlIiwib3JnYW5pemF0aW9ucyIsInJvbGVzIiwiY3VycmVudFVzZXJJZCIsInEiLCJhZGRVc2VyRm9ybSIsImVkaXRVc2VyRm9ybSIsInVzZXJzRGF0YSIsImFsbFNlbGVjdGVkIiwidG90YWxVc2VyIiwic3RhdHVzSWQiLCJzdGF0dXNNb2RhbCIsInN0YXR1c1ZhbHVlIiwic3RhdHVzVXNlcm5hbWUiLCJkZWxldGVVc2VybmFtZSIsImZldGNoaW5nVGFibGVEYXRhIiwic2VsZWN0ZWRJZHMiLCJjaGVja2xpc3QiLCJjdXJyZW50cGFnZURhdGEiLCJlZGl0VXNlcklkIiwidXNlcm5hbWUiLCJmdWxsX25hbWUiLCJyb2xlX2lkIiwiZm9ybUVycm9yIiwiZnVsbG5hbWUiLCJnZW5lcmF0ZVVzZXJuYW1lIiwiY2xlYXJEYXRlUmFuZ2VGaWx0ZXIiLCJyb2xlIiwidGV4dEJ1YmJsZWRhdGEiLCJmaWVsZCIsImNsZWFyRmlsdGVyIiwiY3JlYXRlVXNlciIsInBhc3N3b3JkRGF0YSIsInNldEZvcm1FcnJvciIsImZldGNoVXNlcnNMaXN0IiwiZW1wdHlGb3JtRGF0YSIsImVkaXRVc2VyIiwib3BlblN0YXR1c01vZGVsIiwidXBkYXRlVXNlciIsInBhdGNoIiwiZmlsdGVyX2tleSIsIm9wZW5EZWxldGVtb2RlbCIsImRlbGV0ZVVzZXIiLCJ0b2dnbGVVc2VyU3RhdHVzIiwidG9nZ2xlU2VsZWN0YWxsIiwiZWwiLCJkb3dubG9hZEFsbCIsImFsbFBhZ2VTZWxlY3RlZCIsImZsYXQiLCJsYW5ndWFnZVByZWZlcmVuY2UiLCJlZGl0UHJvZmlsZUZvcm0iLCJlZGl0UGFzc3dvcmRGb3JtIiwic2hvd0N1cnJlbnRQYXNzd29yZCIsInNob3dOZXdQYXNzd29yZCIsInNob3dDb25maXJtUGFzc3dvcmQiLCJ1c2VyRGF0YSIsInVzZXJfcm9sZSIsImxhbmd1YWdlX3ByZWZlcmVuY2UiLCJlcnJvckZvcm1EYXRhIiwiY3VycmVudF9wYXNzd29yZCIsImVycm9yUGFzc3dvcmREYXRhIiwidXBkYXRlUGFzc3dvcmQiLCJwYXNzd29yZEZvcm1EYXRhIiwiZm9ybV90eXBlIiwidXBkYXRlUHJvZmlsZSIsIkVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xIiwiRW1haWxWZXJpZmljYXRpb24iLCJwdWJsaXNoZXJFeGlzdHMiLCJ0ZXh0YXJlYSIsInB1Ymxpc2hlcl9uYW1lIiwicmVnaXN0cmF0aW9uX2FnZW5jeSIsInJlZ2lzdHJhdGlvbl9udW1iZXIiLCJpZGVudGlmaWVyIiwibGljZW5zZV9pZCIsImltYWdlX3VybCIsImNvbnRhY3RfZW1haWwiLCJ3ZWJzaXRlIiwiYWRkcmVzcyIsInNvdXJjZSIsInJlY29yZF9leGNsdXNpb25zIiwiaWF0aUVycm9yIiwicmVzaXplIiwic2Nyb2xsSGVpZ2h0IiwiYWdlbmNpZXMiLCJyZWdpc3RyYXRpb25BZ2VuY3kiLCJ1bmNhdGVnb3JpemVkXzEiLCJ1bmNhdGVnb3JpemVkUmVnaXN0cmF0aW9uQWdlbmN5UHJlZml4Iiwic3RhcnRzV2l0aCIsImlzVGV4dEZpZWxkIiwiZmllbGRUeXBlIiwiZmllbGROYW1lIiwiY2hlY2tTdGVwIiwiZm9ybVN0ZXAiLCJyZWdpc3RlckZvcm0iLCJpc19jb21wbGV0ZSIsImhvdmVyX3RleHQiLCJmaWVsZHMiLCJwbGFjZWhvbGRlciIsImhlbHBfdGV4dCIsInB1Ymxpc2hlclR5cGUiLCJkYXRhTGljZW5zZSIsInVwZGF0ZVZhbGlkYXRpb25FcnJvcnMiLCJlcnJvclJlc3BvbnNlIiwiY2xlYW5WYWxpZGF0aW9uRXJyb3JzIiwidXBkYXRlRXJyb3JzIiwiZXZlcnkiLCJjbGVhbklhdGlFcnJvcnMiLCJ2ZXJpZnlQdWJsaXNoZXIiLCJ1cGRhdGVTdGVwIiwidmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uIiwidmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uIiwiZ2V0Q3VycmVudFN0ZXAiLCJjdXJyZW50X3N0ZXAiLCJnb1RvTmV4dEZvcm0iLCJnb1RvUHJldmlvdXNGb3JtIiwiZG93bmxvYWRNYW51YWwiLCJvcmlnaW4iLCJ0cmlnZ2VyTW9kZWwiLCJhZ2VuY3kiLCJ1bmNhdGVnb3JpemVkT3JnYW5pc2F0aW9uUmVnaXN0cmF0aW9uQWdlbmN5Iiwib3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3kiLCJvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX25vIiwiaWF0aV9vcmdhbml6YXRpb25hbF9pZGVudGlmaWVyIiwiY29uZmlybV9wYXNzd29yZCIsInVwZGF0ZUZvcm1FcnJvcnMiLCJlcnJLZXkiLCJwdWJsaXNoZXJfc291cmNlX3R5cGUiLCJpbnRlbnQiLCJlbWFpbE9yVXNlcm5hbWUiLCJsb2dpbiIsIk5hdkRyb3Bkb3duX3Z1ZV8xIiwiTmF2RHJvcGRvd24iLCJhdXRoIiwicmVuZGVyIiwiX2hvaXN0ZWRfMSIsImNyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ob2lzdGVkXzIiLCJfaG9pc3RlZF8zIiwiX2hvaXN0ZWRfNCIsIl9ob2lzdGVkXzUiLCJfaG9pc3RlZF82IiwiX2hvaXN0ZWRfNyIsIl9ob2lzdGVkXzgiLCJfaG9pc3RlZF85IiwiX2hvaXN0ZWRfMTAiLCJfaG9pc3RlZF8xMSIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfY3R4IiwiX2NhY2hlIiwiJHByb3BzIiwiJHNldHVwIiwiJGRhdGEiLCIkb3B0aW9ucyIsIl9jb21wb25lbnRfc3ZnX3Z1ZSIsInJlc29sdmVDb21wb25lbnQiLCJvcGVuQmxvY2siLCJjcmVhdGVFbGVtZW50QmxvY2siLCJGcmFnbWVudCIsIm9uQ2xpY2siLCJjcmVhdGVWTm9kZSIsImNyZWF0ZUNvbW1lbnRWTm9kZSIsInRvRGlzcGxheVN0cmluZyIsImNyZWF0ZUJsb2NrIiwibm9ybWFsaXplU3R5bGUiLCJ0cnVuYyIsIiRldmVudCIsIndpdGhDdHgiLCJjcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8xNCIsIl9ob2lzdGVkXzE1IiwiX2hvaXN0ZWRfMTYiLCJfaG9pc3RlZF8xNyIsIl9ob2lzdGVkXzE4IiwiX2hvaXN0ZWRfMTkiLCJfaG9pc3RlZF8yMCIsIl9ob2lzdGVkXzIxIiwiX2hvaXN0ZWRfMjIiLCJfaG9pc3RlZF8yMyIsIm5vcm1hbGl6ZUNsYXNzIiwiX3dpdGhTY29wZUlkIiwicHVzaFNjb3BlSWQiLCJwb3BTY29wZUlkIiwiX2hvaXN0ZWRfMjQiLCJfaG9pc3RlZF8yNSIsIl9ob2lzdGVkXzI2IiwiX2hvaXN0ZWRfMjciLCJfaG9pc3RlZF8yOCIsIl9ob2lzdGVkXzI5IiwiX2hvaXN0ZWRfMzAiLCJfaG9pc3RlZF8zMSIsIl9ob2lzdGVkXzMyIiwiX2hvaXN0ZWRfMzMiLCJfaG9pc3RlZF8zNCIsIl9ob2lzdGVkXzM1IiwiX2hvaXN0ZWRfMzYiLCJfaG9pc3RlZF8zNyIsIl9ob2lzdGVkXzM4IiwiX2hvaXN0ZWRfMzkiLCJfaG9pc3RlZF80MCIsInJlbmRlckxpc3QiLCJuYXZfX3BvaW50ZXIiLCJ3aXRoRGlyZWN0aXZlcyIsIm9uS2V5dXAiLCJ3aXRoS2V5cyIsInZNb2RlbFRleHQiLCJvbkNsb3NlIiwib25DbG9zZU1vZGFsIiwib25Ub2FzdCIsImJjIiwiZCIsIiRlbWl0IiwiX2NvbXBvbmVudF9TcGlubmVyTG9hZGVyIiwidlNob3ciLCJlbXB0eSIsIm1vZGVsVmFsdWUiLCJjbGVhcmFibGUiLCJ0ZWxlcG9ydCIsIm9uT3BlbiIsIm9uQ2xlYXJlZCIsInllYXJseSIsInByZXNldERhdGVSYW5nZSIsImFjdGlvbiIsImNyZWF0ZVN0YXRpY1ZOb2RlIiwiYXMiLCJlbnRlciIsImxlYXZlIiwiaW5uZXJIVE1MIiwib25JbnB1dCIsInZNb2RlbENoZWNrYm94IiwiVGVsZXBvcnQiLCJUcmFuc2l0aW9uIiwiYXJncyIsInJlbmRlclNsb3QiLCIkc2xvdHMiLCJfY29tcG9uZW50X3JhZGlhbF9wcm9ncmVzc19iYXIiLCJkaWFtZXRlciIsInJvdyIsImNvbCIsIm0iLCJlbGVfZXJyIiwiYmFja2dyb3VuZF9ibGluayIsIm9uU3RvcFZhbGlkYXRpb24iLCJvblByb2NlZWQiLCJvbkFjdGl2aXR5UHVibGlzaGVkRGF0YSIsIm9uSGlkZUxvYWRlciIsIm9uUmVzZXQiLCJpYXRpX3BhdGgiLCJfY29tcG9uZW50X0J0biIsIl9jb21wb25lbnRfQnJlYWRjcnVtYiIsImVycm9ySW5kZXgiLCJlcnJvckxpc3QiLCJsaXN0SW5kZXgiLCJfY29tcG9uZW50X0hvdmVyVGV4dCIsInNlYXJjaGFibGUiLCJfaG9pc3RlZF80MSIsIl9ob2lzdGVkXzQyIiwiX2hvaXN0ZWRfNDMiLCJfaG9pc3RlZF80NCIsIl9ob2lzdGVkXzQ1IiwiX2hvaXN0ZWRfNDYiLCJfaG9pc3RlZF80NyIsIl9ob2lzdGVkXzQ4IiwiX2hvaXN0ZWRfNDkiLCJfaG9pc3RlZF81MCIsIl9ob2lzdGVkXzUxIiwiX2hvaXN0ZWRfNTIiLCJfaG9pc3RlZF81MyIsIl9ob2lzdGVkXzU0IiwiX2hvaXN0ZWRfNTUiLCJfaG9pc3RlZF81NiIsIl9ob2lzdGVkXzU3IiwiX2hvaXN0ZWRfNTgiLCJfaG9pc3RlZF81OSIsIl9ob2lzdGVkXzYwIiwiX2hvaXN0ZWRfNjEiLCJfaG9pc3RlZF82MiIsIl9ob2lzdGVkXzYzIiwiX2hvaXN0ZWRfNjQiLCJfaG9pc3RlZF82NSIsIl9ob2lzdGVkXzY2IiwiX2NvbXBvbmVudF9Ub2FzdCIsIl9jb21wb25lbnRfUmVmcmVzaFRvYXN0TWVzc2FnZSIsIl9jb21wb25lbnRfRXJyb3JQb3BVcCIsIl9jb21wb25lbnRfRGVsZXRlQnV0dG9uIiwiX2NvbXBvbmVudF9VblB1Ymxpc2giLCJfY29tcG9uZW50X1B1Ymxpc2giLCJfY29tcG9uZW50X0Vycm9ycyIsIl9jb21wb25lbnRfUHJldmlvdXNseVB1Ymxpc2hlZCIsIl9jb21wb25lbnRfUHJvZ3Jlc3NCYXIiLCJfY29tcG9uZW50X0VsZW1lbnRzIiwiX2NvbXBvbmVudF9BY3Rpdml0eUVsZW1lbnQiLCJfY29tcG9uZW50X1Jlc3VsdCIsIl9jb21wb25lbnRfWGxzVXBsb2FkSW5kaWNhdG9yIiwiX2NvbXBvbmVudF9QdWJsaXNoU2VsZWN0ZWQiLCJfZGlyZWN0aXZlX3N0aWNreV9jb21wb25lbnQiLCJyZXNvbHZlRGlyZWN0aXZlIiwiX2RpcmVjdGl2ZV9zbW9vdGhfc2Nyb2xsIiwib25DbG9zZVBvcHVwIiwidW5QdWJsaXNoZWQiLCJzaG93UHVibGlzaGVkIiwicHVibGlzaEVycm9ycyIsImJvdW5kYXJ5IiwiaWNvbl9zaXplIiwid2FybmluZ19pbmZvX3RleHQiLCJfY29tcG9uZW50X0xvYWRlciIsIl9jb21wb25lbnRfUGFnZVRpdGxlIiwiX2NvbXBvbmVudF9FcnJvck1lc3NhZ2UiLCJfY29tcG9uZW50X0VtcHR5QWN0aXZpdHkiLCJfY29tcG9uZW50X1RhYmxlTGF5b3V0IiwiX2NvbXBvbmVudF9QYWdpbmF0aW9uIiwiX2NvbXBvbmVudF9PbkJvYXJkaW5nSW5kZXgiLCJvblNob3dPckhpZGUiLCJvbkZldGNoQWN0aXZpdGllcyIsIl9jb21wb25lbnRfTXVsdGlzZWxlY3QiLCJfY29tcG9uZW50X0J0bkNvbXBvbmVudCIsIl9jb21wb25lbnRfTW9kYWwiLCJlcnJvcl9faW5wdXQiLCJpYXRpX2lkZW50aWZpZXJfdGV4dCIsIm9uQ2FuY2VsVmFsaWRhdGlvbiIsIm9uQ2FuY2VsQnVsa1B1Ymxpc2hpbmciLCJvblZhbGlkYXRlQWN0aXZpdGllcyIsIl9vIiwiX3AiLCJfcSIsIl9yIiwiX3MiLCJfdCIsInRhYk9uZSIsImFjdCIsInRhYlR3byIsIktlZXBBbGl2ZSIsIm9uQWN0aXZlVGFiIiwib25DaGFuZ2UiLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwiYWN0aXZpdHlEYXRlIiwiY29uZGl0aW9uX2F0dGFjaGVkIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uX3R5cGUiLCJjb25kaXRpb25UeXBlIiwiY29udGFjdFR5cGUiLCJvcmdhbmlzYXRpb24iLCJwZXJzb25fbmFtZSIsImRlcGFydG1lbnQiLCJqb2JfdGl0bGUiLCJlbWFpbF92YWx1ZSIsInRlbGVwaG9uZSIsInRlbCIsIm1haWxpbmdfYWRkcmVzcyIsImFkZHJlc3NfaW5kZXgiLCJkZXNjcmlwdGlvblR5cGUiLCJodW1hbml0YXJpYW5TY29wZVR5cGUiLCJodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkiLCJ2b2NhYnVsYXJ5Iiwidm9jYWJ1bGFyeV91cmkiLCJsZWdhY3lfbmFtZSIsImlhdGlfZXF1aXZhbGVudCIsIl9ob2lzdGVkXzY3IiwiX2hvaXN0ZWRfNjgiLCJfaG9pc3RlZF82OSIsIl9ob2lzdGVkXzcwIiwiX2hvaXN0ZWRfNzEiLCJfaG9pc3RlZF83MiIsIl9ob2lzdGVkXzczIiwiX2hvaXN0ZWRfNzQiLCJfaG9pc3RlZF83NSIsIl9ob2lzdGVkXzc2IiwibG9jYXRpb25fcmVhY2giLCJnZW9ncmFwaGljTG9jYXRpb25SZWFjaCIsImxvY2F0aW9uX2lkIiwiZ2VvZ3JhcGhpY1ZvY2FidWxhcnkiLCJhY3Rpdml0eV9kZXNjcmlwdGlvbiIsImFkbWluaXN0cmF0aXZlIiwibGV2ZWwiLCJwb2ludCIsInNyc19uYW1lIiwicG9zIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJleGFjdG5lc3MiLCJnZW9ncmFwaGljRXhhY3RuZXNzIiwibG9jYXRpb25fY2xhc3MiLCJnZW9ncmFwaGljTG9jYXRpb25DbGFzcyIsImZlYXR1cmVfZGVzaWduYXRpb24iLCJsb2NhdGlvblR5cGUiLCJyZWZlcmVuY2VfdHlwZSIsIm90aGVySWRlbnRpZmllclR5cGUiLCJvd25lcl9vcmciLCJwYXJ0aWNpcGF0aW5nX29yZyIsIm9yZ2FuaXphdGlvbl9yb2xlIiwib3JnYW5pc2F0aW9uUm9sZSIsImNyc19jaGFubmVsX2NvZGUiLCJjcnNDaGFubmVsQ29kZSIsImJ1ZGdldFR5cGUiLCJwbGFubmVkX2Rpc2J1cnNlbWVudF90eXBlIiwiYW1vdW50IiwidG9Mb2NhbGVTdHJpbmciLCJjdXJyZW5jeSIsInZhbHVlX2RhdGUiLCJwcm92aWRlcl9vcmciLCJwcm92aWRlcl9hY3Rpdml0eV9pZCIsInJlY2VpdmVyX29yZyIsInJlY2VpdmVyX2FjdGl2aXR5X2lkIiwicG9saWN5X21hcmtlcl92b2NhYnVsYXJ5IiwicG9saWN5TWFya2VyVm9jYWJ1bGFyeSIsInBvbGljeV9tYXJrZXIiLCJwb2xpY3lNYXJrZXIiLCJwb2xpY3lfbWFya2VyX3RleHQiLCJzaWduaWZpY2FuY2UiLCJwb2xpY3lTaWduaWZpY2FuY2UiLCJjb3VudHJ5X2NvZGUiLCJwZXJjZW50YWdlIiwicmVnaW9uX3ZvY2FidWxhcnkiLCJyZWdpb25Wb2NhYnVsYXJ5IiwicmVnaW9uX2NvZGUiLCJyZWdpb24iLCJjdXN0b21fY29kZSIsInJlbGF0aW9uc2hpcF90eXBlIiwicmVsYXRlZEFjdGl2aXR5VHlwZSIsIl9jb21wb25lbnRfSGVscGVyVGV4dCIsIl9jb21wb25lbnRfTm90WWV0IiwiaW5kaWMiLCJwZXJpb2RzIiwic2VjdG9yX3ZvY2FidWxhcnkiLCJzZWN0b3JWb2NhYnVsYXJ5Iiwic2VjdG9yQ29kZSIsImNhdGVnb3J5X2NvZGUiLCJzZWN0b3JDYXRlZ29yeSIsInNkZ19nb2FsIiwic2RnR29hbHMiLCJzZGdfdGFyZ2V0Iiwic2RnVGFyZ2V0IiwidGFnX3ZvY2FidWxhcnkiLCJ0YWdWb2NhYnVsYXJ5IiwidGFnX3RleHQiLCJnb2Fsc190YWdfY29kZSIsInRhcmdldHNfdGFnX2NvZGUiLCJ0cmFucyIsInRyYW5zYWN0aW9uVHlwZSIsInRyYW5zYWN0aW9uX3R5cGUiLCJ0cmFuc2FjdGlvbl90eXBlX2NvZGUiLCJ2YWwiLCJfY29tcG9uZW50X1RpdGxlRWxlbWVudCIsIl9jb21wb25lbnRfQXNjZW5kaW5nIiwiX2NvbXBvbmVudF9NZWFzdXJlIiwiX2NvbXBvbmVudF9BZ2dyZWdhdGlvblN0YXR1cyIsIl9jb21wb25lbnRfRGVzY3JpcHRpb24iLCJfY29tcG9uZW50X1JlZmVyZW5jZSIsIl9jb21wb25lbnRfQmFzZWxpbmUiLCJfY29tcG9uZW50X1BlcmlvZCIsIl9jb21wb25lbnRfRG9jdW1lbnRMaW5rIiwiaW5kaWNhdG9yX2NvZGUiLCJyRGF0YSIsInJpIiwiZG9jdW1lbnRfbGluayIsImFzY2VuZGluZyIsIm1lYXN1cmUiLCJpbmRpY2F0b3JNZWFzdXJlIiwiYWdncmVnYXRpb25fc3RhdHVzIiwic2NvcGUiLCJjb2xzcGFuIiwiX2NvbXBvbmVudF9EZWxldGVBY3Rpb24iLCJiYXNlIiwiZGltZW5zaW9uIiwiY29tbWVudCIsImNvbSIsImMiLCJuYSIsImNhdGVnb3J5IiwiY2F0IiwiZG9jdW1lbnRDYXRlZ29yeSIsImRvY3VtZW50X2RhdGUiLCJpbmRpY2F0b3JWb2NhYnVsYXJ5IiwiaW5kaWNhdG9yX3VyaSIsIm9uQ2hhbmdlU3RlcCIsIm1vZGUiLCJvbmJvYXJkaW5nU3RlcCIsIm9uUHJvY2VlZFN0ZXAiLCJvbkNoYW5nZVJlbmRlciIsIm9uQ29tcGxldGVTdGVwIiwib25SZW1vdmVDb21wbGV0ZWRTdGVwIiwib25QcmV2aW91c1N0ZXAiLCJvbkNsaWNrT25jZSIsIl9ob2lzdGVkXzc3IiwiX2hvaXN0ZWRfNzgiLCJfaG9pc3RlZF83OSIsIl9ob2lzdGVkXzgwIiwiX2hvaXN0ZWRfODEiLCJfaG9pc3RlZF84MiIsIl9ob2lzdGVkXzgzIiwiX2hvaXN0ZWRfODQiLCJfaG9pc3RlZF84NSIsIl9ob2lzdGVkXzg2IiwiX2hvaXN0ZWRfODciLCJfaG9pc3RlZF84OCIsIl9ob2lzdGVkXzg5IiwiX2hvaXN0ZWRfOTAiLCJfaG9pc3RlZF85MSIsIl9ob2lzdGVkXzkyIiwiX2hvaXN0ZWRfOTMiLCJfaG9pc3RlZF85NCIsIl9ob2lzdGVkXzk1IiwiX2hvaXN0ZWRfOTYiLCJfaG9pc3RlZF85NyIsIl9ob2lzdGVkXzk4IiwiX2hvaXN0ZWRfOTkiLCJfaG9pc3RlZF8xMDAiLCJfaG9pc3RlZF8xMDEiLCJfaG9pc3RlZF8xMDIiLCJfaG9pc3RlZF8xMDMiLCJfaG9pc3RlZF8xMDQiLCJfaG9pc3RlZF8xMDUiLCJfaG9pc3RlZF8xMDYiLCJfaG9pc3RlZF8xMDciLCJfaG9pc3RlZF8xMDgiLCJfaG9pc3RlZF8xMDkiLCJfaG9pc3RlZF8xMTAiLCJkZWZhdWx0X2FpZF90eXBlX3ZvY2FidWxhcnkiLCJhaWRUeXBlVm9jYWJ1bGFyeSIsImVhcm1hcmtpbmdfY2F0ZWdvcnkiLCJlYXJtYXJraW5nQ2F0ZWdvcnkiLCJlYXJtYXJraW5nX21vZGFsaXR5IiwiZWFybWFya2luZ01vZGFsaXR5IiwiY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzIiwiY2FzaGFuZFZvdWNoZXJNb2RhbGl0aWVzIiwiYWlkVHlwZSIsImNvdW50cnlfYnVkZ2V0X3ZvY2FidWxhcnkiLCJidWRnZXRJZGVudGlmaWVyVm9jYWJ1bGFyeSIsImJ1ZGdldF9pdGVtIiwiYnVkZ2V0SWRlbnRpZmllciIsImJ1ZGdldF90eXBlIiwiYnVkZ2V0X3ZhbHVlIiwiYnVkZ2V0X3N0YXR1cyIsImJ1ZGdldFN0YXR1cyIsImFjdGl2aXR5U3RhdHVzIiwiYWN0aXZpdHlTY29wZSIsImNvbGxhYm9yYXRpb25UeXBlIiwiZmxvd1R5cGUiLCJ0aWVkU3RhdHVzIiwiZmluYW5jZVR5cGUiLCJfY29tcG9uZW50X0NyZWF0ZU1vZGFsIiwiX2NvbXBvbmVudF9BY3Rpdml0eUJ1dHRvbiIsInJlbCIsInVwZGF0ZWRfYXQiLCJfY29tcG9uZW50X1RhcmdldFZhbHVlIiwiX2NvbXBvbmVudF9BY3R1YWxWYWx1ZSIsInBlcmlvZF9jb2RlIiwiYWN0dWFsIiwicGUiLCJ0VmFsdWUiLCJkaW0iLCJfY29tcG9uZW50X1Jlc3VsdEVsZW1lbnQiLCJfY29tcG9uZW50X0luZGljYXRvciIsInJlc3VsdF9jb2RlIiwiX2NvbXBvbmVudF9UaXRsZURlc2NyaXB0aW9uIiwiX2NvbXBvbmVudF9SZXN1bHRUeXBlIiwiX2hvaXN0ZWRfMTExIiwiX2hvaXN0ZWRfMTEyIiwiX2hvaXN0ZWRfMTEzIiwiX2hvaXN0ZWRfMTE0IiwiX2hvaXN0ZWRfMTE1IiwiX2hvaXN0ZWRfMTE2IiwiX2hvaXN0ZWRfMTE3IiwiX2hvaXN0ZWRfMTE4IiwiX2hvaXN0ZWRfMTE5IiwiX2hvaXN0ZWRfMTIwIiwiX2hvaXN0ZWRfMTIxIiwiX2hvaXN0ZWRfMTIyIiwiX2hvaXN0ZWRfMTIzIiwiX2hvaXN0ZWRfMTI0IiwiX2hvaXN0ZWRfMTI1IiwiX2hvaXN0ZWRfMTI2IiwiX2hvaXN0ZWRfMTI3IiwiX2hvaXN0ZWRfMTI4IiwiX2hvaXN0ZWRfMTI5IiwiX2hvaXN0ZWRfMTMwIiwibG9jIiwidGFyIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkVsZW1lbnQiLCJfY29tcG9uZW50X0FpZFR5cGUiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25EYXRlIiwiX2NvbXBvbmVudF9WYWx1ZSIsIl9jb21wb25lbnRfUHJvdmlkZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X1JlY2VpdmVyT3JnYW5pemF0aW9uIiwiX2NvbXBvbmVudF9EaXNidXJzZW1lbnRDaGFubmVsIiwiX2NvbXBvbmVudF9TZWN0b3IiLCJfY29tcG9uZW50X1JlY2lwaWVudENvdW50cnkiLCJfY29tcG9uZW50X1JlY2lwaWVudFJlZ2lvbiIsIl9jb21wb25lbnRfRmxvd1R5cGUiLCJfY29tcG9uZW50X0ZpbmFuY2VUeXBlIiwiX2NvbXBvbmVudF9UaWVkU3RhdHVzIiwidHJhbnNhY3Rpb25fZGF0ZSIsImNsYXMiLCJhdCIsImFpZF90eXBlX3ZvY2FidWxhcnkiLCJhaWRfdHlwZV9jb2RlIiwiY2FzaEFuZFZvdWNoZXJNb2RhbGl0aWVzIiwiZWFyTWFya2luZ0NhdGVnb3J5IiwiZWFyTWFya2luZ01vZGFsaXR5IiwiZGlzYnVyc2VtZW50X2NoYW5uZWxfY29kZSIsImRpc2J1cnNlbWVudENoYW5uZWwiLCJmaW5hbmNlX3R5cGUiLCJmbG93X3R5cGUiLCJvcmdhbml6YXRpb25faWRlbnRpZmllcl9jb2RlIiwicG8iLCJjb3UiLCJjb3VudHJ5Q29kZSIsInNkIiwicmVnaW9uQ29kZSIsInNlYyIsInVuc2RnR29hbHMiLCJ1bnNkZ1RhcmdldHMiLCJ0aWVkX3N0YXR1c19jb2RlIiwidGllZFN0YXR1c1R5cGUiLCJfY29tcG9uZW50X2FwZXhjaGFydCIsImFkbWluX3VzZXJfY291bnQiLCJnZW5lcmFsX3VzZXJfY291bnQiLCJhY3RpdmVfdXNlcl9jb3VudCIsImRlYWN0aXZhdGVkX3VzZXJfY291bnQiLCJ0b3RhbF91c2VyX2NvdW50IiwiY29tcGxldGVTZXR1cCIsImluY29tcGxldGVTZXR1cCIsImJvdGgiLCJvblRyaWdnZXJTZXREYXRlUmFuZ2UiLCJvblRhYmxlTmF2Iiwicm9sZUlkIiwidk1vZGVsUmFkaW8iLCJyZWZfZm9yIiwib25TZWxlY3RFbGVtZW50IiwiY2xvc2VkIiwiZXhpc3RpbmciLCJ3YXJuaW5nIiwiX2NvbXBvbmVudF9QdWJsaXNoVW5wdWJsaXNoIiwiX2NvbXBvbmVudF9SYWRpYWxQcm9ncmVzc0JhciIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHMiLCJfY29tcG9uZW50X09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsIiwicmVjaXBpZW50X2NvdW50cnkiLCJyZWNpcGllbnRfY291bnRyeV9idWRnZXQiLCJidWRnZXRfbGluZSIsInJlY2lwaWVudF9vcmdfYnVkZ2V0IiwicmVjaXBpZW50X29yZyIsInJlY2lwaWVudF9vcmdfaW5kZXgiLCJuYXJyYXRpdmVfaW5kZXgiLCJyZWNpcGllbnRfcmVnaW9uX2J1ZGdldCIsInJlY2lwaWVudF9yZWdpb24iLCJ0b3RhbF9idWRnZXQiLCJ0b3RhbF9idWRnZXRfc3RhdHVzIiwidG90YWxfZXhwZW5kaXR1cmUiLCJleHBlbnNlX2xpbmUiLCJsaW5rZWRfZGF0YV91cmkiLCJkZWZhdWx0X2NvbGxhYm9yYXRpb25fdHlwZSIsIl9jb21wb25lbnRfU2V0dGluZ1B1Ymxpc2hpbmdGb3JtIiwiX2NvbXBvbmVudF9TZXR0aW5nRGVmYXVsdEZvcm0iLCJhY3RpdmVfX3RhYiIsIm9uU3VibWl0UHVibGlzaGluZyIsIl9jb21wb25lbnRfU2hpbW1lckxvYWRpbmciLCJpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCIsInRhZ19fY29ycmVjdCIsInRhZ19fcGVuZGluZyIsInRhZ19faW5jb3JyZWN0IiwicGtnIiwidmVyc2lvbiIsImxhdGVzdCIsIl9jb21wb25lbnRfRGF0ZVJhbmdlV2lkZ2V0IiwiX2NvbXBvbmVudF9Qb3B1cE1vZGFsIiwidGFnZ2FibGUiLCJvblRyaWdnZXJTZXREYXRlVHlwZSIsIm9uRGF0ZUNsZWFyZWQiLCJhbGxfYWN0aXZpdGllc19jb3VudCIsInZNb2RlbER5bmFtaWMiLCJfY29tcG9uZW50X0VtYWlsVmVyaWZpY2F0aW9uIiwiZXJyb3Jfa2V5Iiwib25VcGRhdGVNb2RlbFZhbHVlIiwiZm9ybV9faW5wdXQiLCJvbkZvY3VzIiwid2l0aE1vZGlmaWVycyIsInZ1ZV9fc2VsZWN0IiwiX2NvbXBvbmVudF9TdHJvbmciLCJlcnJvcl9pbnB1dCIsIl9jb21wb25lbnRfTmF2RHJvcGRvd24iLCJ2dWUzX3Ntb290aF9zY3JvbGxfMSIsInN2Z192dWUzXzEiLCJXZWJIZWFkZXJfdnVlXzEiLCJXZWJGb290ZXJfdnVlXzEiLCJBZG1pbkZvb3Rlcl92dWVfMSIsIldlbGNvbWVQYWdlX3Z1ZV8xIiwiUmVnaXN0ZXJQYWdlX3Z1ZV8xIiwiQWJvdXRQYWdlX3Z1ZV8xIiwiU3VwcG9ydFBhZ2VfdnVlXzEiLCJJYXRpU3RhbmRhcmRfdnVlXzEiLCJQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xIiwiSWF0aVJlZ2lzdGVyUGFnZV92dWVfMSIsIlJlc3VsdERldGFpbF92dWVfMSIsIlJlc3VsdExpc3RfdnVlXzEiLCJJbmRpY2F0b3JEZXRhaWxfdnVlXzEiLCJJbmRpY2F0b3JMaXN0X3Z1ZV8xIiwiUGVyaW9kc0RldGFpbF92dWVfMSIsIlBlcmlvZHNMaXN0X3Z1ZV8xIiwiVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xIiwiVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEiLCJEZXNjcmlwdGlvbkZvcm1fdnVlXzEiLCJFbGVtZW50c05vdGVfdnVlXzEiLCJBY3Rpdml0eUluZGV4X3Z1ZV8xIiwiQWRtaW5IZWFkZXJfdnVlXzEiLCJBY3Rpdml0eURldGFpbF92dWVfMSIsIlNpZGViYXJIZWxwQmxvY2tfdnVlXzEiLCJBY3Rpdml0eVVwbG9hZF92dWVfMSIsIkFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xIiwiRGFzaGJvYXJkUGFnZV92dWVfMSIsIkltcG9ydExpc3RfdnVlXzEiLCJYbHNMaXN0X3Z1ZV8xIiwiU2V0dGluZ1BhZ2VfdnVlXzEiLCJBY3Rpdml0eURlZmF1bHRWYWx1ZV92dWVfMSIsIlJlc2V0UGFnZV92dWVfMSIsIlBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEiLCJSZXNldFBhc3N3b3JkX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRGF0YV92dWVfMSIsIk9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEiLCJBZG1pbkJhcl92dWVfMSIsIlVzZXJQcm9maWxlX3Z1ZV8xIiwiVXNlckxpc3RpbmdfdnVlXzEiLCJBdWRpdExpc3RpbmdfdnVlXzEiLCJTeXN0ZW1WZXJzaW9uX3Z1ZV8xIiwidnVlM19hcGV4Y2hhcnRzXzEiLCJhcHAiLCJjcmVhdGVBcHAiLCJ1c2UiLCJjb21wb25lbnQiLCJsYXN0U2Nyb2xsVG9wIiwiYWZmaXhUeXBlIiwic3RpY2t5U2lkZWJhciIsInBhcmVudFdyYXBwZXIiLCJzdGlja3lFbGVtZW50IiwiZmlyc3RDaGlsZCIsIm9mZnNldEhlaWdodCIsInN0aWNreUN1cnJlbnRUb3AiLCJzdGlja3lDdXJyZW50Qm90dG9tIiwiZWxXaWR0aCIsIm9mZnNldFdpZHRoIiwiZWxTY3JvbGxMZWZ0IiwiZWxTY3JvbGxUb3AiLCJlbFNjcm9sbEJvdHRvbSIsInZpZXdwb3J0SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIiwicGFnZVlPZmZzZXQiLCJ0YXJnZXRTY3JvbGxQb3NpdGlvbiIsImVsUGFyZW50IiwiY2xvc2VzdCIsImVsUGFyZW50Qm90dG9tIiwiaXNTY3JvbGxEb3duIiwiaXNTY3JvbGxVcCIsInNjcm9sbERvd25TdGlja3lCb3R0b20iLCJzY3JvbGxEb3duU3RpY2t5VG9wIiwic2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSIsInNjcm9sbERvd25GaXhlZFRvcCIsInNjcm9sbERvd25TdGlja3lOb25lIiwic2Nyb2xsRG93blN0aWNreUJvdW5kIiwiaGFuZGxlU2Nyb2xsRG93biIsInNjcm9sbFVwU3RpY2t5VG9wIiwic2Nyb2xsVXBTdGlja3lCb3R0b20iLCJzY3JvbGxVcEZpeGVkVG9wIiwic2Nyb2xsVXBTdGlja3lUcmFuc2xhdGUiLCJzY3JvbGxVcFN0aWNreUJvdW5kIiwiaGFuZGxlU2Nyb2xsVXAiLCJib3JkZXIiLCJkaXJlY3RpdmUiLCJtb3VudGVkIiwiYmluZGluZyIsInVubW91bnRlZCIsInBhcmVudCIsIm1vdW50IiwiY29yZUVsZW1lbnRzX2pzb25fMSIsImZvcm1hdF9kYXRlIiwiZGF0YV8xIiwic2VudGVuY2VDYXNlVG9LZWJhYkNhc2UiLCJyZWR1Y2VEb2N1bWVudExpbmsiLCJuYW5vaWRfMSIsImRvY3VtZW50Q291bnQiLCJkb2N1bWVudF8xIiwid29yZHMiLCJzZW50ZW5jZSIsIm1heExlbmd0aCIsInN1YnN0cmluZyIsInNuYWtlQ2FzZVN0cmluZyIsInJhbmRvbURpZ2l0cyIsImN1c3RvbUFscGhhYmV0IiwiZGVwcmVjYXRlZFN0YXR1cyIsImNsc3hfMSIsInRhaWx3aW5kX21lcmdlXzEiLCJpbnB1dHMiLCJ0d01lcmdlIiwiY2xzeCIsInZ1ZXhfMSIsIm1heGltaXplWGxzIiwiYWN0aXZpdHlfdGl0bGUiLCJtdXRhdGlvbnMiLCJtdXRhdGVTZWxlY3RlZEFjdGl2aXRpZXMiLCJwYXlsb2FkIiwibXV0YXRlQ2xvc2VYbHNNb2RlbCIsIm11dGF0ZVZhbGlkYXRpbmdBY3Rpdml0aWVzTmFtZXMiLCJtdXRhdGVCdWxrUHVibGlzaExlbmd0aCIsIm11dGF0ZUNhbmNlbFVwbG9hZCIsIm11dGF0ZU1heGltaXplWGxzIiwibXV0YXRlU3RhcnRYbHNEb3dubG9hZCIsIm11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJtdXRhdGVDYW5jZWxEb3dubG9hZCIsIm11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsIm11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJtdXRhdGVTdGFydFZhbGlkYXRpb24iLCJtdXRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcyIsIm11dGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24iLCJtdXRhdGVQdWJsaXNoUmV0cnkiLCJhY3Rpb25zIiwiY29tbWl0IiwidXBkYXRlVmFsaWRhdGluZ0FjdGl2aXRpZXNOYW1lcyIsInVwZGF0ZUNsb3NlWGxzTW9kZWwiLCJ1cGRhdGVCdWxrUHVibGlzaExlbmd0aCIsInVwZGF0ZUNhbmNlbFVwbG9hZCIsInVwZGF0ZU1heGltaXplWGxzIiwidXBkYXRlU3RhcnRYbHNEb3dubG9hZCIsInVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJ1cGRhdGVDYW5jZWxEb3dubG9hZCIsInVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJ1cGRhdGVTdGFydFZhbGlkYXRpb24iLCJ1cGRhdGVWYWxpZGF0aW5nQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0Q29yZVZhbGlkYXRpb24iLCJ1cGRhdGVQdWJsaXNoUmV0cnkiLCJhY3Rpdml0eUxpc3RTdG9yZSIsImNyZWF0ZVN0b3JlIiwiYnVsa3B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVVblB1Ymxpc2hlZCIsIm11dGF0ZVNob3dQdWJsaXNoZWQiLCJtdXRhdGVQdWJsaXNoRXJyb3JzIiwibXV0YXRlSXNMb2FkaW5nIiwibXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJ1cGRhdGVVblB1Ymxpc2hlZCIsInVwZGF0ZVNob3dQdWJsaXNoZWQiLCJ1cGRhdGVQdWJsaXNoRXJyb3JzIiwidXBkYXRlSXNMb2FkaW5nIiwidXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJhY3Rpdml0eURldGFpbFN0b3JlIiwic3RhdGVfMSIsIm11dGF0aW9uXzEiLCJNdXRhdGlvblR5cGVzIiwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPIiwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IiLCJVUERBVEVfREVGQVVMVF9FUlJPUiIsIlVQREFURV9JU19MT0FESU5HIiwiSVNfTE9BRElORyIsIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEgiLCJCVUxLUFVCTElTSF9MRU5HVEgiLCJSZXN1bHRfdnVlXzEiLCJJYXRpSWRlbnRpZmllcl92dWVfMSIsIk90aGVySWRlbnRpZmllcl92dWVfMSIsIlRpdGxlX3Z1ZV8xIiwiRGVzY3JpcHRpb25fdnVlXzEiLCJBY3Rpdml0eURhdGVfdnVlXzEiLCJDb250YWN0SW5mb192dWVfMSIsIlBhcnRpY2lwYXRpbmdPcmdfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xIiwiUmVjaXBpZW50UmVnaW9uX3Z1ZV8xIiwiVHJhbnNhY3Rpb25zX3Z1ZV8xIiwiTG9jYXRpb25fdnVlXzEiLCJTZWN0b3JfdnVlXzEiLCJMZWdhY3lEYXRhX3Z1ZV8xIiwiQ29uZGl0aW9uc192dWVfMSIsIlJlbGF0ZWRBY3Rpdml0eV92dWVfMSIsIlBvbGljeU1hcmtlcl92dWVfMSIsIlRhZ192dWVfMSIsIkh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xIiwiUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSIsIk1lYXN1cmVfdnVlXzEiLCJJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEiLCJBZ2dyZWdhdGlvblN0YXR1c192dWVfMSIsIlJlZmVyZW5jZV92dWVfMSIsIkRvY3VtZW50TGlua192dWVfMSIsIkJhc2VsaW5lX3Z1ZV8xIiwiUGVyaW9kX3Z1ZV8xIiwiVGFyZ2V0VmFsdWVfdnVlXzEiLCJBY3R1YWxWYWx1ZV92dWVfMSIsIlRpdGxlRGVzY3JpcHRpb25fdnVlXzEiLCJSZXN1bHRUeXBlX3Z1ZV8xIiwiQWlkVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uRGF0ZV92dWVfMSIsIlZhbHVlX3Z1ZV8xIiwiUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEiLCJSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSIsIkRpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEiLCJGbG93VHlwZV92dWVfMSIsIkZpbmFuY2VUeXBlX3Z1ZV8xIiwiVGllZFN0YXR1c192dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSIsIlRvdGFsQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xIiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSIsIlRvdGFsRXhwZW5kaXR1cmVfdnVlXzEiLCJTaWduSW4iLCJKb2luTm93IiwicGFnZUNvbnRlbnQiLCJ0b2dnbGVQYWdlIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfY3JlYXRlVk5vZGUiLCJfY3JlYXRlQmxvY2siLCJfY29tcG9uZW50X1NpZ25JbiIsIl9jb21wb25lbnRfSm9pbk5vdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/public/js/formbuilder.js b/public/js/formbuilder.js index ecbff2645..2aaa4c7c5 100644 --- a/public/js/formbuilder.js +++ b/public/js/formbuilder.js @@ -920,7 +920,8 @@ var FormBuilder = /** @class */function () { var optionalLabel = label ? getOptionalTextDom(label) : null; var subelement = label ? getClosestParentSubelementDom(label) : null; var thisButtonBelongsToOptionalForm = optionalLabel !== null; - console.log(subelement); + /* eslint-disable */ + console.log.apply(console, oo_oo("736882328_640_4_640_27_4", subelement)); button.addEventListener('click', function () { if (optionalLabel) { toggleOptionalText(optionalLabel); @@ -930,7 +931,8 @@ var FormBuilder = /** @class */function () { } button.classList.toggle('rotate-180'); }); - console.log(thisButtonBelongsToOptionalForm, !errorMessageExists(subelement)); + /* eslint-disable */ + console.log.apply(console, oo_oo("736882328_654_4_657_5_4", thisButtonBelongsToOptionalForm, !errorMessageExists(subelement))); if (thisButtonBelongsToOptionalForm && !errorMessageExists(subelement)) { button.click(); } @@ -1078,6 +1080,66 @@ var FormBuilder = /** @class */function () { function escapeHtml(unsafe) { return unsafe.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); } +/* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ +; +function oo_cm() { + try { + return (0, eval)("globalThis._console_ninja") || (0, eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0xb38479=_0x2690;(function(_0x3da9a7,_0x129983){var _0x2413f2=_0x2690,_0x4ed7ba=_0x3da9a7();while(!![]){try{var _0x153560=-parseInt(_0x2413f2(0x195))/0x1*(parseInt(_0x2413f2(0x1c8))/0x2)+-parseInt(_0x2413f2(0x191))/0x3*(parseInt(_0x2413f2(0x1af))/0x4)+parseInt(_0x2413f2(0x1d2))/0x5+-parseInt(_0x2413f2(0x1aa))/0x6*(-parseInt(_0x2413f2(0x199))/0x7)+parseInt(_0x2413f2(0x1c9))/0x8+-parseInt(_0x2413f2(0x1ea))/0x9+parseInt(_0x2413f2(0x1f7))/0xa*(-parseInt(_0x2413f2(0x18b))/0xb);if(_0x153560===_0x129983)break;else _0x4ed7ba['push'](_0x4ed7ba['shift']());}catch(_0x114de6){_0x4ed7ba['push'](_0x4ed7ba['shift']());}}}(_0x49fb,0x75779));function _0x49fb(){var _0x313c29=['_quotedRegExp','warn','autoExpandPreviousObjects','getPrototypeOf','_WebSocket','getter','1230TEpllh','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_sortProps','count','sort','set','null','toLowerCase','negativeZero','join','stack','_hasSymbolPropertyOnItsPath','current','_getOwnPropertyDescriptor','then','getOwnPropertySymbols','HTMLAllCollection','url','pathToFileURL','_webSocketErrorDocsLink','capped','_isMap','expressionsToEvaluate','rootExpression','unref','function','hits','strLength','_hasMapOnItsPath','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_undefined','name','_sendErrorMessage','eventReceivedCallback','_p_length','global','error','\\x20browser','negativeInfinity','[object\\x20Set]','send','prototype','depth','readyState','_treeNodePropertiesBeforeFullValue','undefined','_Symbol','_property','Set','map','_inNextEdge','valueOf','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','_objectToString','positiveInfinity','bind','call','_isNegativeZero','NEXT_RUNTIME','logger\\x20websocket\\x20error','_getOwnPropertyNames','message','bigint','time','startsWith','_cleanNode','_disposeWebsocket','_regExpToString','onerror','concat','1.0.0','boolean','[object\\x20Date]','remix','length','sortProps','onopen','_keyStrRegExp','data','reduceLimits','props','some','_capIfString','1731040934704','perf_hooks','object','versions','fromCharCode','nan','autoExpandLimit','log','get','parse','_connected','substr','nodeModules','\\x20server','_processTreeNodeResult','_connecting','Map',\"/home/fluffy/.vscode/extensions/wallabyjs.console-ninja-1.0.366/node_modules\",'NEGATIVE_INFINITY','_ws','console','dockerizedApp','_type','_console_ninja_session','elements','allStrLength','_addLoadNode','symbol','root_exp_id','_allowedToSend','ws/index.js','performance','_setNodeId','_blacklistedProperty','RegExp','replace','autoExpandPropertyCount','timeStamp','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','angular','cappedElements','_socket','_isUndefined','_isPrimitiveWrapperType','getWebSocketClass','method','[object\\x20Map]','test','_setNodeExpandableState','stackTraceLimit','[object\\x20Array]','21219YrRlUe','_maxConnectAttemptCount','https://tinyurl.com/37x8b79t','127.0.0.1','onclose','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','226161nZtfWH','_ninjaIgnoreNextError','args','disabledLog','2953sBoifS','match',[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"fluffy\",\"192.168.10.171\"],'stringify','801962SCQQDE','includes','_isPrimitiveType','hrtime','funcName','push','ws://','onmessage','location','unshift','process','_isSet','_HTMLAllCollection','_WebSocketClass','toUpperCase','autoExpandMaxDepth','totalStrLength','6vGDaUf','trace','date','number','value','4TndFHB','reload','noFunctions','coverage','create','_attemptToReconnectShortly','toString','_addObjectProperty','getOwnPropertyDescriptor','_addFunctionsNode','_addProperty','autoExpand','array','_connectToHostNow','parent','cappedProps','defineProperty','getOwnPropertyNames','node','unknown','_inBrowser','constructor','_consoleNinjaAllowedToStart','catch','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','412dZWmjP','5999128zUHsfk','string','isExpressionToEvaluate','_propertyName','_console_ninja','','serialize','...','index','3766805LZuWOI','_treeNodePropertiesAfterFullValue','expId','type','Number','_setNodePermissions','_p_name','gateway.docker.internal','String','host','resolveGetters','origin','next.js','33453','_reconnectTimeout','forEach','_p_','_setNodeLabel','env','_connectAttemptCount','hostname','Symbol','elapsed','edge','1941309lccVPS','_additionalMetadata','level','_getOwnPropertySymbols','webpack','now','_allowedToConnectOnSend'];_0x49fb=function(){return _0x313c29;};return _0x49fb();}var K=Object[_0xb38479(0x1b3)],Q=Object[_0xb38479(0x1bf)],G=Object[_0xb38479(0x1b7)],ee=Object[_0xb38479(0x1c0)],te=Object[_0xb38479(0x1f4)],ne=Object[_0xb38479(0x220)]['hasOwnProperty'],re=(_0x510122,_0x58704f,_0x2e44f6,_0x20bb39)=>{var _0x2fca91=_0xb38479;if(_0x58704f&&typeof _0x58704f==_0x2fca91(0x24c)||typeof _0x58704f==_0x2fca91(0x210)){for(let _0x5734a0 of ee(_0x58704f))!ne['call'](_0x510122,_0x5734a0)&&_0x5734a0!==_0x2e44f6&&Q(_0x510122,_0x5734a0,{'get':()=>_0x58704f[_0x5734a0],'enumerable':!(_0x20bb39=G(_0x58704f,_0x5734a0))||_0x20bb39['enumerable']});}return _0x510122;},V=(_0x148d1d,_0x437d78,_0x5ec131)=>(_0x5ec131=_0x148d1d!=null?K(te(_0x148d1d)):{},re(_0x437d78||!_0x148d1d||!_0x148d1d['__es'+'Module']?Q(_0x5ec131,'default',{'value':_0x148d1d,'enumerable':!0x0}):_0x5ec131,_0x148d1d)),Z=class{constructor(_0x3b4655,_0x1d5be8,_0x368dcf,_0x5f4eb1,_0x5e842f,_0x86879d){var _0x5e0e55=_0xb38479,_0x1859fb,_0xc57b0,_0x53f584,_0x2ee364;this[_0x5e0e55(0x21a)]=_0x3b4655,this[_0x5e0e55(0x1db)]=_0x1d5be8,this['port']=_0x368dcf,this['nodeModules']=_0x5f4eb1,this[_0x5e0e55(0x25f)]=_0x5e842f,this[_0x5e0e55(0x218)]=_0x86879d,this[_0x5e0e55(0x175)]=!0x0,this[_0x5e0e55(0x1f0)]=!0x0,this['_connected']=!0x1,this['_connecting']=!0x1,this[_0x5e0e55(0x229)]=((_0xc57b0=(_0x1859fb=_0x3b4655[_0x5e0e55(0x1a3)])==null?void 0x0:_0x1859fb[_0x5e0e55(0x1e4)])==null?void 0x0:_0xc57b0[_0x5e0e55(0x231)])===_0x5e0e55(0x1e9),this[_0x5e0e55(0x1c3)]=!((_0x2ee364=(_0x53f584=this['global'][_0x5e0e55(0x1a3)])==null?void 0x0:_0x53f584[_0x5e0e55(0x24d)])!=null&&_0x2ee364[_0x5e0e55(0x1c1)])&&!this[_0x5e0e55(0x229)],this['_WebSocketClass']=null,this[_0x5e0e55(0x1e5)]=0x0,this[_0x5e0e55(0x18c)]=0x14,this['_webSocketErrorDocsLink']=_0x5e0e55(0x18d),this[_0x5e0e55(0x217)]=(this['_inBrowser']?_0x5e0e55(0x190):_0x5e0e55(0x17e))+this[_0x5e0e55(0x20a)];}async[_0xb38479(0x184)](){var _0x5b40c4=_0xb38479,_0x43adac,_0x3f08d9;if(this[_0x5b40c4(0x1a6)])return this[_0x5b40c4(0x1a6)];let _0x1efe73;if(this[_0x5b40c4(0x1c3)]||this[_0x5b40c4(0x229)])_0x1efe73=this[_0x5b40c4(0x21a)]['WebSocket'];else{if((_0x43adac=this[_0x5b40c4(0x21a)]['process'])!=null&&_0x43adac[_0x5b40c4(0x1f5)])_0x1efe73=(_0x3f08d9=this[_0x5b40c4(0x21a)][_0x5b40c4(0x1a3)])==null?void 0x0:_0x3f08d9['_WebSocket'];else try{let _0x17925a=await import('path');_0x1efe73=(await import((await import(_0x5b40c4(0x208)))[_0x5b40c4(0x209)](_0x17925a['join'](this['nodeModules'],_0x5b40c4(0x176)))[_0x5b40c4(0x1b5)]()))['default'];}catch{try{_0x1efe73=require(require('path')[_0x5b40c4(0x200)](this[_0x5b40c4(0x256)],'ws'));}catch{throw new Error(_0x5b40c4(0x214));}}}return this[_0x5b40c4(0x1a6)]=_0x1efe73,_0x1efe73;}[_0xb38479(0x1bc)](){var _0x3e3a69=_0xb38479;this[_0x3e3a69(0x259)]||this[_0x3e3a69(0x254)]||this['_connectAttemptCount']>=this[_0x3e3a69(0x18c)]||(this['_allowedToConnectOnSend']=!0x1,this['_connecting']=!0x0,this[_0x3e3a69(0x1e5)]++,this['_ws']=new Promise((_0x227c98,_0x2d2065)=>{var _0x43c869=_0x3e3a69;this['getWebSocketClass']()[_0x43c869(0x205)](_0x585224=>{var _0x3f3a87=_0x43c869;let _0x2dd594=new _0x585224(_0x3f3a87(0x19f)+(!this['_inBrowser']&&this['dockerizedApp']?_0x3f3a87(0x1d9):this[_0x3f3a87(0x1db)])+':'+this['port']);_0x2dd594[_0x3f3a87(0x23b)]=()=>{var _0x12686a=_0x3f3a87;this[_0x12686a(0x175)]=!0x1,this[_0x12686a(0x239)](_0x2dd594),this[_0x12686a(0x1b4)](),_0x2d2065(new Error(_0x12686a(0x232)));},_0x2dd594[_0x3f3a87(0x243)]=()=>{var _0x4daff6=_0x3f3a87;this['_inBrowser']||_0x2dd594[_0x4daff6(0x181)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)]&&_0x2dd594[_0x4daff6(0x181)][_0x4daff6(0x20f)](),_0x227c98(_0x2dd594);},_0x2dd594[_0x3f3a87(0x18f)]=()=>{var _0x3a583f=_0x3f3a87;this[_0x3a583f(0x1f0)]=!0x0,this[_0x3a583f(0x239)](_0x2dd594),this[_0x3a583f(0x1b4)]();},_0x2dd594[_0x3f3a87(0x1a0)]=_0x26215a=>{var _0x1adbd1=_0x3f3a87;try{if(!(_0x26215a!=null&&_0x26215a[_0x1adbd1(0x245)])||!this[_0x1adbd1(0x218)])return;let _0x2babd9=JSON[_0x1adbd1(0x253)](_0x26215a[_0x1adbd1(0x245)]);this[_0x1adbd1(0x218)](_0x2babd9[_0x1adbd1(0x185)],_0x2babd9[_0x1adbd1(0x193)],this[_0x1adbd1(0x21a)],this['_inBrowser']);}catch{}};})[_0x43c869(0x205)](_0x4f714e=>(this[_0x43c869(0x254)]=!0x0,this['_connecting']=!0x1,this[_0x43c869(0x1f0)]=!0x1,this[_0x43c869(0x175)]=!0x0,this[_0x43c869(0x1e5)]=0x0,_0x4f714e))[_0x43c869(0x1c6)](_0x22ec9e=>(this[_0x43c869(0x254)]=!0x1,this[_0x43c869(0x259)]=!0x1,console[_0x43c869(0x1f2)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this['_webSocketErrorDocsLink']),_0x2d2065(new Error(_0x43c869(0x1f8)+(_0x22ec9e&&_0x22ec9e[_0x43c869(0x234)])))));}));}[_0xb38479(0x239)](_0x258ea3){var _0x31607e=_0xb38479;this[_0x31607e(0x254)]=!0x1,this[_0x31607e(0x259)]=!0x1;try{_0x258ea3['onclose']=null,_0x258ea3['onerror']=null,_0x258ea3[_0x31607e(0x243)]=null;}catch{}try{_0x258ea3[_0x31607e(0x222)]<0x2&&_0x258ea3['close']();}catch{}}[_0xb38479(0x1b4)](){var _0x233ba6=_0xb38479;clearTimeout(this[_0x233ba6(0x1e0)]),!(this[_0x233ba6(0x1e5)]>=this[_0x233ba6(0x18c)])&&(this[_0x233ba6(0x1e0)]=setTimeout(()=>{var _0x401fec=_0x233ba6,_0x52b3d9;this[_0x401fec(0x254)]||this[_0x401fec(0x259)]||(this[_0x401fec(0x1bc)](),(_0x52b3d9=this[_0x401fec(0x25d)])==null||_0x52b3d9[_0x401fec(0x1c6)](()=>this[_0x401fec(0x1b4)]()));},0x1f4),this[_0x233ba6(0x1e0)][_0x233ba6(0x20f)]&&this[_0x233ba6(0x1e0)]['unref']());}async[_0xb38479(0x21f)](_0x586b1d){var _0x5d8508=_0xb38479;try{if(!this[_0x5d8508(0x175)])return;this[_0x5d8508(0x1f0)]&&this[_0x5d8508(0x1bc)](),(await this[_0x5d8508(0x25d)])[_0x5d8508(0x21f)](JSON[_0x5d8508(0x198)](_0x586b1d));}catch(_0xfd3a97){console[_0x5d8508(0x1f2)](this[_0x5d8508(0x217)]+':\\x20'+(_0xfd3a97&&_0xfd3a97[_0x5d8508(0x234)])),this[_0x5d8508(0x175)]=!0x1,this[_0x5d8508(0x1b4)]();}}};function q(_0x42367a,_0x2cbfb6,_0x5a9501,_0x1aaf90,_0x4297b2,_0x13ef89,_0x825256,_0xf682a7=ie){var _0xa3fb42=_0xb38479;let _0x4cf16d=_0x5a9501['split'](',')[_0xa3fb42(0x228)](_0x51b4d6=>{var _0x108c98=_0xa3fb42,_0x12f322,_0x12bed4,_0x5bed21,_0x2434a8;try{if(!_0x42367a[_0x108c98(0x261)]){let _0x1730b5=((_0x12bed4=(_0x12f322=_0x42367a['process'])==null?void 0x0:_0x12f322[_0x108c98(0x24d)])==null?void 0x0:_0x12bed4[_0x108c98(0x1c1)])||((_0x2434a8=(_0x5bed21=_0x42367a[_0x108c98(0x1a3)])==null?void 0x0:_0x5bed21[_0x108c98(0x1e4)])==null?void 0x0:_0x2434a8[_0x108c98(0x231)])===_0x108c98(0x1e9);(_0x4297b2===_0x108c98(0x1de)||_0x4297b2===_0x108c98(0x240)||_0x4297b2==='astro'||_0x4297b2===_0x108c98(0x17f))&&(_0x4297b2+=_0x1730b5?_0x108c98(0x257):_0x108c98(0x21c)),_0x42367a[_0x108c98(0x261)]={'id':+new Date(),'tool':_0x4297b2},_0x825256&&_0x4297b2&&!_0x1730b5&&console[_0x108c98(0x251)]('%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20'+(_0x4297b2['charAt'](0x0)[_0x108c98(0x1a7)]()+_0x4297b2['substr'](0x1))+',','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)',_0x108c98(0x22b));}let _0x4abe96=new Z(_0x42367a,_0x2cbfb6,_0x51b4d6,_0x1aaf90,_0x13ef89,_0xf682a7);return _0x4abe96[_0x108c98(0x21f)][_0x108c98(0x22e)](_0x4abe96);}catch(_0x5bf49b){return console['warn'](_0x108c98(0x1c7),_0x5bf49b&&_0x5bf49b[_0x108c98(0x234)]),()=>{};}});return _0x379fd3=>_0x4cf16d[_0xa3fb42(0x1e1)](_0x371121=>_0x371121(_0x379fd3));}function ie(_0x3e8f25,_0x39fea5,_0x25150f,_0x26528e){var _0x1cc967=_0xb38479;_0x26528e&&_0x3e8f25===_0x1cc967(0x1b0)&&_0x25150f[_0x1cc967(0x1a1)]['reload']();}function B(_0x309842){var _0x24dfc2=_0xb38479,_0x2ac048,_0x50abdf;let _0xddbdef=function(_0x11a673,_0x5f0693){return _0x5f0693-_0x11a673;},_0x1c7faf;if(_0x309842[_0x24dfc2(0x177)])_0x1c7faf=function(){var _0x8dbe1=_0x24dfc2;return _0x309842[_0x8dbe1(0x177)][_0x8dbe1(0x1ef)]();};else{if(_0x309842[_0x24dfc2(0x1a3)]&&_0x309842['process'][_0x24dfc2(0x19c)]&&((_0x50abdf=(_0x2ac048=_0x309842['process'])==null?void 0x0:_0x2ac048['env'])==null?void 0x0:_0x50abdf['NEXT_RUNTIME'])!==_0x24dfc2(0x1e9))_0x1c7faf=function(){var _0x52d640=_0x24dfc2;return _0x309842[_0x52d640(0x1a3)]['hrtime']();},_0xddbdef=function(_0x550ba9,_0x16a3e2){return 0x3e8*(_0x16a3e2[0x0]-_0x550ba9[0x0])+(_0x16a3e2[0x1]-_0x550ba9[0x1])/0xf4240;};else try{let {performance:_0x34de4a}=require(_0x24dfc2(0x24b));_0x1c7faf=function(){var _0x4f1d69=_0x24dfc2;return _0x34de4a[_0x4f1d69(0x1ef)]();};}catch{_0x1c7faf=function(){return+new Date();};}}return{'elapsed':_0xddbdef,'timeStamp':_0x1c7faf,'now':()=>Date[_0x24dfc2(0x1ef)]()};}function _0x2690(_0x3746db,_0x41f9de){var _0x49fbdc=_0x49fb();return _0x2690=function(_0x26901b,_0x358f1f){_0x26901b=_0x26901b-0x173;var _0x1ff287=_0x49fbdc[_0x26901b];return _0x1ff287;},_0x2690(_0x3746db,_0x41f9de);}function H(_0x2655e3,_0x14cbf7,_0x4cd609){var _0x26ac2c=_0xb38479,_0x4be70d,_0x3fb4cc,_0x1ffc62,_0x47e8aa,_0x5f0942;if(_0x2655e3['_consoleNinjaAllowedToStart']!==void 0x0)return _0x2655e3['_consoleNinjaAllowedToStart'];let _0x251295=((_0x3fb4cc=(_0x4be70d=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x4be70d[_0x26ac2c(0x24d)])==null?void 0x0:_0x3fb4cc[_0x26ac2c(0x1c1)])||((_0x47e8aa=(_0x1ffc62=_0x2655e3[_0x26ac2c(0x1a3)])==null?void 0x0:_0x1ffc62[_0x26ac2c(0x1e4)])==null?void 0x0:_0x47e8aa['NEXT_RUNTIME'])===_0x26ac2c(0x1e9);function _0x59d9de(_0x194938){var _0x5e5d5c=_0x26ac2c;if(_0x194938[_0x5e5d5c(0x237)]('/')&&_0x194938['endsWith']('/')){let _0xcb7804=new RegExp(_0x194938['slice'](0x1,-0x1));return _0x49d742=>_0xcb7804[_0x5e5d5c(0x187)](_0x49d742);}else{if(_0x194938[_0x5e5d5c(0x19a)]('*')||_0x194938[_0x5e5d5c(0x19a)]('?')){let _0x50fa2f=new RegExp('^'+_0x194938[_0x5e5d5c(0x17b)](/\\./g,String[_0x5e5d5c(0x24e)](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x5e5d5c(0x17b)](/\\?/g,'.')+String['fromCharCode'](0x24));return _0x1aefc4=>_0x50fa2f[_0x5e5d5c(0x187)](_0x1aefc4);}else return _0x46bcf6=>_0x46bcf6===_0x194938;}}let _0x20546f=_0x14cbf7[_0x26ac2c(0x228)](_0x59d9de);return _0x2655e3[_0x26ac2c(0x1c5)]=_0x251295||!_0x14cbf7,!_0x2655e3[_0x26ac2c(0x1c5)]&&((_0x5f0942=_0x2655e3['location'])==null?void 0x0:_0x5f0942[_0x26ac2c(0x1e6)])&&(_0x2655e3['_consoleNinjaAllowedToStart']=_0x20546f[_0x26ac2c(0x248)](_0x4385b4=>_0x4385b4(_0x2655e3['location']['hostname']))),_0x2655e3['_consoleNinjaAllowedToStart'];}function X(_0x22ccb3,_0x2c73de,_0x4e171b,_0x35fc63){var _0x474e28=_0xb38479;_0x22ccb3=_0x22ccb3,_0x2c73de=_0x2c73de,_0x4e171b=_0x4e171b,_0x35fc63=_0x35fc63;let _0x415468=B(_0x22ccb3),_0x37f561=_0x415468[_0x474e28(0x1e8)],_0x59158b=_0x415468['timeStamp'];class _0x4328bc{constructor(){var _0x1af6f6=_0x474e28;this[_0x1af6f6(0x244)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x1af6f6(0x1f1)]=/'([^\\\\']|\\\\')*'/,this[_0x1af6f6(0x215)]=_0x22ccb3[_0x1af6f6(0x224)],this[_0x1af6f6(0x1a5)]=_0x22ccb3[_0x1af6f6(0x207)],this[_0x1af6f6(0x204)]=Object[_0x1af6f6(0x1b7)],this['_getOwnPropertyNames']=Object[_0x1af6f6(0x1c0)],this[_0x1af6f6(0x225)]=_0x22ccb3[_0x1af6f6(0x1e7)],this[_0x1af6f6(0x23a)]=RegExp['prototype'][_0x1af6f6(0x1b5)],this['_dateToString']=Date[_0x1af6f6(0x220)]['toString'];}[_0x474e28(0x1cf)](_0x50721a,_0x4c828c,_0x5e2ffc,_0x3ef832){var _0x4ebd9d=_0x474e28,_0xf64595=this,_0xa0161=_0x5e2ffc[_0x4ebd9d(0x1ba)];function _0x243109(_0x4002b7,_0x34b5ec,_0x476743){var _0x469664=_0x4ebd9d;_0x34b5ec['type']=_0x469664(0x1c2),_0x34b5ec[_0x469664(0x21b)]=_0x4002b7[_0x469664(0x234)],_0x2a2010=_0x476743[_0x469664(0x1c1)][_0x469664(0x203)],_0x476743[_0x469664(0x1c1)][_0x469664(0x203)]=_0x34b5ec,_0xf64595['_treeNodePropertiesBeforeFullValue'](_0x34b5ec,_0x476743);}try{_0x5e2ffc[_0x4ebd9d(0x1ec)]++,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)][_0x4ebd9d(0x19e)](_0x4c828c);var _0x789286,_0x4b3a3a,_0x10a59,_0x432966,_0x3b49b3=[],_0x575808=[],_0x25a484,_0x41e11d=this[_0x4ebd9d(0x260)](_0x4c828c),_0x25e366=_0x41e11d===_0x4ebd9d(0x1bb),_0x228830=!0x1,_0x351a41=_0x41e11d===_0x4ebd9d(0x210),_0x53e303=this[_0x4ebd9d(0x19b)](_0x41e11d),_0x3e45b2=this[_0x4ebd9d(0x183)](_0x41e11d),_0x345028=_0x53e303||_0x3e45b2,_0x5c3c8a={},_0x1cbe36=0x0,_0x2e6cfc=!0x1,_0x2a2010,_0x12820a=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x5e2ffc['depth']){if(_0x25e366){if(_0x4b3a3a=_0x4c828c[_0x4ebd9d(0x241)],_0x4b3a3a>_0x5e2ffc[_0x4ebd9d(0x262)]){for(_0x10a59=0x0,_0x432966=_0x5e2ffc['elements'],_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));_0x50721a[_0x4ebd9d(0x180)]=!0x0;}else{for(_0x10a59=0x0,_0x432966=_0x4b3a3a,_0x789286=_0x10a59;_0x789286<_0x432966;_0x789286++)_0x575808[_0x4ebd9d(0x19e)](_0xf64595[_0x4ebd9d(0x1b9)](_0x3b49b3,_0x4c828c,_0x41e11d,_0x789286,_0x5e2ffc));}_0x5e2ffc[_0x4ebd9d(0x17c)]+=_0x575808[_0x4ebd9d(0x241)];}if(!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d==='undefined')&&!_0x53e303&&_0x41e11d!=='String'&&_0x41e11d!=='Buffer'&&_0x41e11d!==_0x4ebd9d(0x235)){var _0x25212b=_0x3ef832[_0x4ebd9d(0x247)]||_0x5e2ffc[_0x4ebd9d(0x247)];if(this[_0x4ebd9d(0x1a4)](_0x4c828c)?(_0x789286=0x0,_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x31625b){var _0xa1147d=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0xa1147d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc[_0xa1147d(0x1cb)]&&_0x5e2ffc[_0xa1147d(0x1ba)]&&_0x5e2ffc[_0xa1147d(0x17c)]>_0x5e2ffc[_0xa1147d(0x250)]){_0x2e6cfc=!0x0;return;}_0x575808[_0xa1147d(0x19e)](_0xf64595[_0xa1147d(0x1b9)](_0x3b49b3,_0x4c828c,_0xa1147d(0x227),_0x789286++,_0x5e2ffc,function(_0x10d15a){return function(){return _0x10d15a;};}(_0x31625b)));})):this[_0x4ebd9d(0x20c)](_0x4c828c)&&_0x4c828c[_0x4ebd9d(0x1e1)](function(_0x3824df,_0x39265c){var _0x8e99e4=_0x4ebd9d;if(_0x1cbe36++,_0x5e2ffc[_0x8e99e4(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;return;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x8e99e4(0x250)]){_0x2e6cfc=!0x0;return;}var _0x10dd34=_0x39265c['toString']();_0x10dd34[_0x8e99e4(0x241)]>0x64&&(_0x10dd34=_0x10dd34['slice'](0x0,0x64)+_0x8e99e4(0x1d0)),_0x575808[_0x8e99e4(0x19e)](_0xf64595[_0x8e99e4(0x1b9)](_0x3b49b3,_0x4c828c,_0x8e99e4(0x25a),_0x10dd34,_0x5e2ffc,function(_0x135156){return function(){return _0x135156;};}(_0x3824df)));}),!_0x228830){try{for(_0x25a484 in _0x4c828c)if(!(_0x25e366&&_0x12820a['test'](_0x25a484))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)){if(_0x1cbe36++,_0x5e2ffc[_0x4ebd9d(0x17c)]++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc['autoExpandPropertyCount']>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808[_0x4ebd9d(0x19e)](_0xf64595['_addObjectProperty'](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}catch{}if(_0x5c3c8a[_0x4ebd9d(0x219)]=!0x0,_0x351a41&&(_0x5c3c8a[_0x4ebd9d(0x1d8)]=!0x0),!_0x2e6cfc){var _0x113328=[][_0x4ebd9d(0x23c)](this[_0x4ebd9d(0x233)](_0x4c828c))['concat'](this[_0x4ebd9d(0x1ed)](_0x4c828c));for(_0x789286=0x0,_0x4b3a3a=_0x113328[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)if(_0x25a484=_0x113328[_0x789286],!(_0x25e366&&_0x12820a[_0x4ebd9d(0x187)](_0x25a484[_0x4ebd9d(0x1b5)]()))&&!this[_0x4ebd9d(0x179)](_0x4c828c,_0x25a484,_0x5e2ffc)&&!_0x5c3c8a[_0x4ebd9d(0x1e2)+_0x25a484[_0x4ebd9d(0x1b5)]()]){if(_0x1cbe36++,_0x5e2ffc['autoExpandPropertyCount']++,_0x1cbe36>_0x25212b){_0x2e6cfc=!0x0;break;}if(!_0x5e2ffc['isExpressionToEvaluate']&&_0x5e2ffc['autoExpand']&&_0x5e2ffc[_0x4ebd9d(0x17c)]>_0x5e2ffc[_0x4ebd9d(0x250)]){_0x2e6cfc=!0x0;break;}_0x575808['push'](_0xf64595[_0x4ebd9d(0x1b6)](_0x3b49b3,_0x5c3c8a,_0x4c828c,_0x41e11d,_0x25a484,_0x5e2ffc));}}}}}if(_0x50721a[_0x4ebd9d(0x1d5)]=_0x41e11d,_0x345028?(_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c[_0x4ebd9d(0x22a)](),this['_capIfString'](_0x41e11d,_0x50721a,_0x5e2ffc,_0x3ef832)):_0x41e11d===_0x4ebd9d(0x1ac)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_dateToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x235)?_0x50721a[_0x4ebd9d(0x1ae)]=_0x4c828c['toString']():_0x41e11d===_0x4ebd9d(0x17a)?_0x50721a[_0x4ebd9d(0x1ae)]=this['_regExpToString']['call'](_0x4c828c):_0x41e11d===_0x4ebd9d(0x173)&&this[_0x4ebd9d(0x225)]?_0x50721a[_0x4ebd9d(0x1ae)]=this[_0x4ebd9d(0x225)][_0x4ebd9d(0x220)][_0x4ebd9d(0x1b5)][_0x4ebd9d(0x22f)](_0x4c828c):!_0x5e2ffc[_0x4ebd9d(0x221)]&&!(_0x41e11d===_0x4ebd9d(0x1fd)||_0x41e11d===_0x4ebd9d(0x224))&&(delete _0x50721a[_0x4ebd9d(0x1ae)],_0x50721a[_0x4ebd9d(0x20b)]=!0x0),_0x2e6cfc&&(_0x50721a[_0x4ebd9d(0x1be)]=!0x0),_0x2a2010=_0x5e2ffc[_0x4ebd9d(0x1c1)][_0x4ebd9d(0x203)],_0x5e2ffc[_0x4ebd9d(0x1c1)]['current']=_0x50721a,this['_treeNodePropertiesBeforeFullValue'](_0x50721a,_0x5e2ffc),_0x575808[_0x4ebd9d(0x241)]){for(_0x789286=0x0,_0x4b3a3a=_0x575808[_0x4ebd9d(0x241)];_0x789286<_0x4b3a3a;_0x789286++)_0x575808[_0x789286](_0x789286);}_0x3b49b3[_0x4ebd9d(0x241)]&&(_0x50721a[_0x4ebd9d(0x247)]=_0x3b49b3);}catch(_0x3c90c7){_0x243109(_0x3c90c7,_0x50721a,_0x5e2ffc);}return this[_0x4ebd9d(0x1eb)](_0x4c828c,_0x50721a),this[_0x4ebd9d(0x1d3)](_0x50721a,_0x5e2ffc),_0x5e2ffc['node']['current']=_0x2a2010,_0x5e2ffc['level']--,_0x5e2ffc[_0x4ebd9d(0x1ba)]=_0xa0161,_0x5e2ffc[_0x4ebd9d(0x1ba)]&&_0x5e2ffc[_0x4ebd9d(0x1f3)]['pop'](),_0x50721a;}['_getOwnPropertySymbols'](_0x21f548){var _0x1b01a1=_0x474e28;return Object[_0x1b01a1(0x206)]?Object[_0x1b01a1(0x206)](_0x21f548):[];}[_0x474e28(0x1a4)](_0x15b1a7){var _0x370653=_0x474e28;return!!(_0x15b1a7&&_0x22ccb3[_0x370653(0x227)]&&this[_0x370653(0x22c)](_0x15b1a7)===_0x370653(0x21e)&&_0x15b1a7[_0x370653(0x1e1)]);}[_0x474e28(0x179)](_0x45fbed,_0x5b86db,_0x376f3f){var _0x32fb03=_0x474e28;return _0x376f3f[_0x32fb03(0x1b1)]?typeof _0x45fbed[_0x5b86db]==_0x32fb03(0x210):!0x1;}[_0x474e28(0x260)](_0x2b56ec){var _0x1e0152=_0x474e28,_0x36bdb7='';return _0x36bdb7=typeof _0x2b56ec,_0x36bdb7===_0x1e0152(0x24c)?this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x18a)?_0x36bdb7=_0x1e0152(0x1bb):this[_0x1e0152(0x22c)](_0x2b56ec)===_0x1e0152(0x23f)?_0x36bdb7=_0x1e0152(0x1ac):this[_0x1e0152(0x22c)](_0x2b56ec)==='[object\\x20BigInt]'?_0x36bdb7='bigint':_0x2b56ec===null?_0x36bdb7='null':_0x2b56ec[_0x1e0152(0x1c4)]&&(_0x36bdb7=_0x2b56ec[_0x1e0152(0x1c4)][_0x1e0152(0x216)]||_0x36bdb7):_0x36bdb7===_0x1e0152(0x224)&&this[_0x1e0152(0x1a5)]&&_0x2b56ec instanceof this[_0x1e0152(0x1a5)]&&(_0x36bdb7=_0x1e0152(0x207)),_0x36bdb7;}['_objectToString'](_0xd56764){var _0x5abd23=_0x474e28;return Object[_0x5abd23(0x220)][_0x5abd23(0x1b5)][_0x5abd23(0x22f)](_0xd56764);}['_isPrimitiveType'](_0xb88d97){var _0x506af4=_0x474e28;return _0xb88d97===_0x506af4(0x23e)||_0xb88d97==='string'||_0xb88d97===_0x506af4(0x1ad);}[_0x474e28(0x183)](_0x2b3bfd){var _0x307956=_0x474e28;return _0x2b3bfd==='Boolean'||_0x2b3bfd===_0x307956(0x1da)||_0x2b3bfd==='Number';}['_addProperty'](_0x35f2ac,_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e){var _0x3157f1=this;return function(_0x1f8a71){var _0x19c3b8=_0x2690,_0x40bffc=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x203)],_0x1628cf=_0x388d99['node'][_0x19c3b8(0x1d1)],_0x93ed5f=_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)];_0x388d99[_0x19c3b8(0x1c1)]['parent']=_0x40bffc,_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1d1)]=typeof _0x4a2ab1==_0x19c3b8(0x1ad)?_0x4a2ab1:_0x1f8a71,_0x35f2ac[_0x19c3b8(0x19e)](_0x3157f1['_property'](_0x2f759d,_0x403bfb,_0x4a2ab1,_0x388d99,_0x24059e)),_0x388d99[_0x19c3b8(0x1c1)][_0x19c3b8(0x1bd)]=_0x93ed5f,_0x388d99['node'][_0x19c3b8(0x1d1)]=_0x1628cf;};}[_0x474e28(0x1b6)](_0xc84b93,_0x3e2f44,_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0){var _0x1d7a5f=_0x474e28,_0xb96a60=this;return _0x3e2f44[_0x1d7a5f(0x1e2)+_0x4e148d[_0x1d7a5f(0x1b5)]()]=!0x0,function(_0x5d4c94){var _0x5463d9=_0x1d7a5f,_0x37fd62=_0x2ecd5f['node'][_0x5463d9(0x203)],_0x2e8cf7=_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1d1)],_0x411e66=_0x2ecd5f[_0x5463d9(0x1c1)]['parent'];_0x2ecd5f[_0x5463d9(0x1c1)][_0x5463d9(0x1bd)]=_0x37fd62,_0x2ecd5f['node'][_0x5463d9(0x1d1)]=_0x5d4c94,_0xc84b93[_0x5463d9(0x19e)](_0xb96a60[_0x5463d9(0x226)](_0x185af2,_0x49d1d4,_0x4e148d,_0x2ecd5f,_0x4922a0)),_0x2ecd5f['node']['parent']=_0x411e66,_0x2ecd5f[_0x5463d9(0x1c1)]['index']=_0x2e8cf7;};}[_0x474e28(0x226)](_0x309004,_0x27f8f4,_0x2d406a,_0x3d1eb2,_0x5dc148){var _0x2f67c0=_0x474e28,_0x3d2351=this;_0x5dc148||(_0x5dc148=function(_0x16e5b4,_0x9d5978){return _0x16e5b4[_0x9d5978];});var _0x121d79=_0x2d406a['toString'](),_0x10a35f=_0x3d1eb2[_0x2f67c0(0x20d)]||{},_0x589742=_0x3d1eb2[_0x2f67c0(0x221)],_0x82abf4=_0x3d1eb2[_0x2f67c0(0x1cb)];try{var _0x25a62a=this[_0x2f67c0(0x20c)](_0x309004),_0x17bcb5=_0x121d79;_0x25a62a&&_0x17bcb5[0x0]==='\\x27'&&(_0x17bcb5=_0x17bcb5['substr'](0x1,_0x17bcb5['length']-0x2));var _0x538581=_0x3d1eb2[_0x2f67c0(0x20d)]=_0x10a35f[_0x2f67c0(0x1e2)+_0x17bcb5];_0x538581&&(_0x3d1eb2['depth']=_0x3d1eb2[_0x2f67c0(0x221)]+0x1),_0x3d1eb2[_0x2f67c0(0x1cb)]=!!_0x538581;var _0x57a742=typeof _0x2d406a==_0x2f67c0(0x173),_0x428767={'name':_0x57a742||_0x25a62a?_0x121d79:this['_propertyName'](_0x121d79)};if(_0x57a742&&(_0x428767[_0x2f67c0(0x173)]=!0x0),!(_0x27f8f4===_0x2f67c0(0x1bb)||_0x27f8f4==='Error')){var _0x27c37b=this[_0x2f67c0(0x204)](_0x309004,_0x2d406a);if(_0x27c37b&&(_0x27c37b[_0x2f67c0(0x1fc)]&&(_0x428767['setter']=!0x0),_0x27c37b[_0x2f67c0(0x252)]&&!_0x538581&&!_0x3d1eb2[_0x2f67c0(0x1dc)]))return _0x428767[_0x2f67c0(0x1f6)]=!0x0,this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2),_0x428767;}var _0x53db3f;try{_0x53db3f=_0x5dc148(_0x309004,_0x2d406a);}catch(_0x175f6c){return _0x428767={'name':_0x121d79,'type':_0x2f67c0(0x1c2),'error':_0x175f6c[_0x2f67c0(0x234)]},this['_processTreeNodeResult'](_0x428767,_0x3d1eb2),_0x428767;}var _0x3ccd09=this[_0x2f67c0(0x260)](_0x53db3f),_0x495457=this[_0x2f67c0(0x19b)](_0x3ccd09);if(_0x428767[_0x2f67c0(0x1d5)]=_0x3ccd09,_0x495457)this['_processTreeNodeResult'](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x29426a=_0x2f67c0;_0x428767[_0x29426a(0x1ae)]=_0x53db3f[_0x29426a(0x22a)](),!_0x538581&&_0x3d2351[_0x29426a(0x249)](_0x3ccd09,_0x428767,_0x3d1eb2,{});});else{var _0xd80e6=_0x3d1eb2['autoExpand']&&_0x3d1eb2[_0x2f67c0(0x1ec)]<_0x3d1eb2['autoExpandMaxDepth']&&_0x3d1eb2[_0x2f67c0(0x1f3)]['indexOf'](_0x53db3f)<0x0&&_0x3ccd09!=='function'&&_0x3d1eb2[_0x2f67c0(0x17c)]<_0x3d1eb2['autoExpandLimit'];_0xd80e6||_0x3d1eb2['level']<_0x589742||_0x538581?(this[_0x2f67c0(0x1cf)](_0x428767,_0x53db3f,_0x3d1eb2,_0x538581||{}),this[_0x2f67c0(0x1eb)](_0x53db3f,_0x428767)):this[_0x2f67c0(0x258)](_0x428767,_0x3d1eb2,_0x53db3f,function(){var _0x542de1=_0x2f67c0;_0x3ccd09===_0x542de1(0x1fd)||_0x3ccd09===_0x542de1(0x224)||(delete _0x428767[_0x542de1(0x1ae)],_0x428767[_0x542de1(0x20b)]=!0x0);});}return _0x428767;}finally{_0x3d1eb2['expressionsToEvaluate']=_0x10a35f,_0x3d1eb2[_0x2f67c0(0x221)]=_0x589742,_0x3d1eb2[_0x2f67c0(0x1cb)]=_0x82abf4;}}[_0x474e28(0x249)](_0x4d112e,_0x451ae5,_0x56d610,_0x3bf48e){var _0x678168=_0x474e28,_0xf9d777=_0x3bf48e[_0x678168(0x212)]||_0x56d610[_0x678168(0x212)];if((_0x4d112e===_0x678168(0x1ca)||_0x4d112e===_0x678168(0x1da))&&_0x451ae5[_0x678168(0x1ae)]){let _0x3a00d4=_0x451ae5['value'][_0x678168(0x241)];_0x56d610[_0x678168(0x263)]+=_0x3a00d4,_0x56d610[_0x678168(0x263)]>_0x56d610[_0x678168(0x1a9)]?(_0x451ae5[_0x678168(0x20b)]='',delete _0x451ae5[_0x678168(0x1ae)]):_0x3a00d4>_0xf9d777&&(_0x451ae5[_0x678168(0x20b)]=_0x451ae5['value'][_0x678168(0x255)](0x0,_0xf9d777),delete _0x451ae5[_0x678168(0x1ae)]);}}[_0x474e28(0x20c)](_0x19cbe5){var _0x49a451=_0x474e28;return!!(_0x19cbe5&&_0x22ccb3['Map']&&this[_0x49a451(0x22c)](_0x19cbe5)===_0x49a451(0x186)&&_0x19cbe5['forEach']);}[_0x474e28(0x1cc)](_0x571f6a){var _0x38494e=_0x474e28;if(_0x571f6a[_0x38494e(0x196)](/^\\d+$/))return _0x571f6a;var _0x2ac1e0;try{_0x2ac1e0=JSON['stringify'](''+_0x571f6a);}catch{_0x2ac1e0='\\x22'+this[_0x38494e(0x22c)](_0x571f6a)+'\\x22';}return _0x2ac1e0[_0x38494e(0x196)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x2ac1e0=_0x2ac1e0[_0x38494e(0x255)](0x1,_0x2ac1e0[_0x38494e(0x241)]-0x2):_0x2ac1e0=_0x2ac1e0[_0x38494e(0x17b)](/'/g,'\\x5c\\x27')[_0x38494e(0x17b)](/\\\\\"/g,'\\x22')[_0x38494e(0x17b)](/(^\"|\"$)/g,'\\x27'),_0x2ac1e0;}[_0x474e28(0x258)](_0x4cdf24,_0x45da12,_0x18e167,_0xec3f6){var _0x1d19f5=_0x474e28;this[_0x1d19f5(0x223)](_0x4cdf24,_0x45da12),_0xec3f6&&_0xec3f6(),this[_0x1d19f5(0x1eb)](_0x18e167,_0x4cdf24),this[_0x1d19f5(0x1d3)](_0x4cdf24,_0x45da12);}[_0x474e28(0x223)](_0x4284b4,_0x504c8c){var _0x2eefc0=_0x474e28;this[_0x2eefc0(0x178)](_0x4284b4,_0x504c8c),this['_setNodeQueryPath'](_0x4284b4,_0x504c8c),this['_setNodeExpressionPath'](_0x4284b4,_0x504c8c),this['_setNodePermissions'](_0x4284b4,_0x504c8c);}[_0x474e28(0x178)](_0x3d0d45,_0x386ba5){}['_setNodeQueryPath'](_0x2f8330,_0x456660){}[_0x474e28(0x1e3)](_0x5596c2,_0x3f7a92){}[_0x474e28(0x182)](_0x75cea){var _0x586bac=_0x474e28;return _0x75cea===this[_0x586bac(0x215)];}[_0x474e28(0x1d3)](_0x434ec9,_0x34408e){var _0x4dcbfc=_0x474e28;this[_0x4dcbfc(0x1e3)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x188)](_0x434ec9),_0x34408e[_0x4dcbfc(0x242)]&&this[_0x4dcbfc(0x1f9)](_0x434ec9),this[_0x4dcbfc(0x1b8)](_0x434ec9,_0x34408e),this[_0x4dcbfc(0x264)](_0x434ec9,_0x34408e),this['_cleanNode'](_0x434ec9);}[_0x474e28(0x1eb)](_0x599d24,_0x413357){var _0x2d0fc7=_0x474e28;let _0xc2d847;try{_0x22ccb3[_0x2d0fc7(0x25e)]&&(_0xc2d847=_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)],_0x22ccb3[_0x2d0fc7(0x25e)][_0x2d0fc7(0x21b)]=function(){}),_0x599d24&&typeof _0x599d24[_0x2d0fc7(0x241)]==_0x2d0fc7(0x1ad)&&(_0x413357[_0x2d0fc7(0x241)]=_0x599d24[_0x2d0fc7(0x241)]);}catch{}finally{_0xc2d847&&(_0x22ccb3['console']['error']=_0xc2d847);}if(_0x413357['type']===_0x2d0fc7(0x1ad)||_0x413357['type']===_0x2d0fc7(0x1d6)){if(isNaN(_0x413357[_0x2d0fc7(0x1ae)]))_0x413357[_0x2d0fc7(0x24f)]=!0x0,delete _0x413357['value'];else switch(_0x413357['value']){case Number['POSITIVE_INFINITY']:_0x413357[_0x2d0fc7(0x22d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case Number['NEGATIVE_INFINITY']:_0x413357[_0x2d0fc7(0x21d)]=!0x0,delete _0x413357[_0x2d0fc7(0x1ae)];break;case 0x0:this[_0x2d0fc7(0x230)](_0x413357[_0x2d0fc7(0x1ae)])&&(_0x413357[_0x2d0fc7(0x1ff)]=!0x0);break;}}else _0x413357[_0x2d0fc7(0x1d5)]===_0x2d0fc7(0x210)&&typeof _0x599d24[_0x2d0fc7(0x216)]==_0x2d0fc7(0x1ca)&&_0x599d24[_0x2d0fc7(0x216)]&&_0x413357[_0x2d0fc7(0x216)]&&_0x599d24[_0x2d0fc7(0x216)]!==_0x413357[_0x2d0fc7(0x216)]&&(_0x413357[_0x2d0fc7(0x19d)]=_0x599d24['name']);}[_0x474e28(0x230)](_0xd5539f){var _0x2eae63=_0x474e28;return 0x1/_0xd5539f===Number[_0x2eae63(0x25c)];}['_sortProps'](_0x380235){var _0x146135=_0x474e28;!_0x380235[_0x146135(0x247)]||!_0x380235[_0x146135(0x247)][_0x146135(0x241)]||_0x380235[_0x146135(0x1d5)]===_0x146135(0x1bb)||_0x380235[_0x146135(0x1d5)]===_0x146135(0x25a)||_0x380235[_0x146135(0x1d5)]==='Set'||_0x380235[_0x146135(0x247)][_0x146135(0x1fb)](function(_0x414928,_0x1945fc){var _0x266892=_0x146135,_0x1b66b7=_0x414928[_0x266892(0x216)][_0x266892(0x1fe)](),_0x5328bb=_0x1945fc[_0x266892(0x216)][_0x266892(0x1fe)]();return _0x1b66b7<_0x5328bb?-0x1:_0x1b66b7>_0x5328bb?0x1:0x0;});}[_0x474e28(0x1b8)](_0x369bff,_0x1e1c68){var _0x2578e9=_0x474e28;if(!(_0x1e1c68[_0x2578e9(0x1b1)]||!_0x369bff[_0x2578e9(0x247)]||!_0x369bff['props']['length'])){for(var _0x4124b0=[],_0x5d8c12=[],_0x1b02f7=0x0,_0x29114f=_0x369bff['props'][_0x2578e9(0x241)];_0x1b02f7<_0x29114f;_0x1b02f7++){var _0x4dad07=_0x369bff[_0x2578e9(0x247)][_0x1b02f7];_0x4dad07[_0x2578e9(0x1d5)]===_0x2578e9(0x210)?_0x4124b0[_0x2578e9(0x19e)](_0x4dad07):_0x5d8c12[_0x2578e9(0x19e)](_0x4dad07);}if(!(!_0x5d8c12[_0x2578e9(0x241)]||_0x4124b0[_0x2578e9(0x241)]<=0x1)){_0x369bff['props']=_0x5d8c12;var _0x3f513e={'functionsNode':!0x0,'props':_0x4124b0};this[_0x2578e9(0x178)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x1e3)](_0x3f513e,_0x1e1c68),this[_0x2578e9(0x188)](_0x3f513e),this[_0x2578e9(0x1d7)](_0x3f513e,_0x1e1c68),_0x3f513e['id']+='\\x20f',_0x369bff['props'][_0x2578e9(0x1a2)](_0x3f513e);}}}['_addLoadNode'](_0x251fea,_0x1c7bed){}[_0x474e28(0x188)](_0x420c5e){}['_isArray'](_0x171d38){var _0x416234=_0x474e28;return Array['isArray'](_0x171d38)||typeof _0x171d38==_0x416234(0x24c)&&this['_objectToString'](_0x171d38)===_0x416234(0x18a);}[_0x474e28(0x1d7)](_0x31bdc4,_0x5179b1){}[_0x474e28(0x238)](_0x4e0ecc){var _0x412079=_0x474e28;delete _0x4e0ecc[_0x412079(0x202)],delete _0x4e0ecc['_hasSetOnItsPath'],delete _0x4e0ecc[_0x412079(0x213)];}['_setNodeExpressionPath'](_0x11bea6,_0x47e032){}}let _0x3a4564=new _0x4328bc(),_0x460b36={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x15866a={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x281624(_0x23900b,_0x598a4a,_0x1b54ac,_0x254bd4,_0x5148a4,_0x4fb940){var _0x3567cc=_0x474e28;let _0x2dbe01,_0x54e9fe;try{_0x54e9fe=_0x59158b(),_0x2dbe01=_0x4e171b[_0x598a4a],!_0x2dbe01||_0x54e9fe-_0x2dbe01['ts']>0x1f4&&_0x2dbe01[_0x3567cc(0x1fa)]&&_0x2dbe01[_0x3567cc(0x236)]/_0x2dbe01['count']<0x64?(_0x4e171b[_0x598a4a]=_0x2dbe01={'count':0x0,'time':0x0,'ts':_0x54e9fe},_0x4e171b[_0x3567cc(0x211)]={}):_0x54e9fe-_0x4e171b[_0x3567cc(0x211)]['ts']>0x32&&_0x4e171b[_0x3567cc(0x211)]['count']&&_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]/_0x4e171b['hits'][_0x3567cc(0x1fa)]<0x64&&(_0x4e171b['hits']={});let _0x174d1a=[],_0x5a2db6=_0x2dbe01[_0x3567cc(0x246)]||_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x246)]?_0x15866a:_0x460b36,_0x369fb0=_0x465dc7=>{var _0x1e7987=_0x3567cc;let _0x35b31e={};return _0x35b31e[_0x1e7987(0x247)]=_0x465dc7[_0x1e7987(0x247)],_0x35b31e['elements']=_0x465dc7[_0x1e7987(0x262)],_0x35b31e[_0x1e7987(0x212)]=_0x465dc7[_0x1e7987(0x212)],_0x35b31e['totalStrLength']=_0x465dc7[_0x1e7987(0x1a9)],_0x35b31e['autoExpandLimit']=_0x465dc7[_0x1e7987(0x250)],_0x35b31e[_0x1e7987(0x1a8)]=_0x465dc7[_0x1e7987(0x1a8)],_0x35b31e['sortProps']=!0x1,_0x35b31e[_0x1e7987(0x1b1)]=!_0x2c73de,_0x35b31e[_0x1e7987(0x221)]=0x1,_0x35b31e[_0x1e7987(0x1ec)]=0x0,_0x35b31e[_0x1e7987(0x1d4)]=_0x1e7987(0x174),_0x35b31e[_0x1e7987(0x20e)]='root_exp',_0x35b31e[_0x1e7987(0x1ba)]=!0x0,_0x35b31e[_0x1e7987(0x1f3)]=[],_0x35b31e['autoExpandPropertyCount']=0x0,_0x35b31e['resolveGetters']=!0x0,_0x35b31e[_0x1e7987(0x263)]=0x0,_0x35b31e['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x35b31e;};for(var _0x544e1e=0x0;_0x544e1e<_0x5148a4['length'];_0x544e1e++)_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'timeNode':_0x23900b===_0x3567cc(0x236)||void 0x0},_0x5148a4[_0x544e1e],_0x369fb0(_0x5a2db6),{}));if(_0x23900b===_0x3567cc(0x1ab)||_0x23900b===_0x3567cc(0x21b)){let _0x16bc50=Error[_0x3567cc(0x189)];try{Error[_0x3567cc(0x189)]=0x1/0x0,_0x174d1a[_0x3567cc(0x19e)](_0x3a4564[_0x3567cc(0x1cf)]({'stackNode':!0x0},new Error()[_0x3567cc(0x201)],_0x369fb0(_0x5a2db6),{'strLength':0x1/0x0}));}finally{Error[_0x3567cc(0x189)]=_0x16bc50;}}return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':_0x174d1a,'id':_0x598a4a,'context':_0x4fb940}]};}catch(_0x657fb0){return{'method':_0x3567cc(0x251),'version':_0x35fc63,'args':[{'ts':_0x1b54ac,'session':_0x254bd4,'args':[{'type':_0x3567cc(0x1c2),'error':_0x657fb0&&_0x657fb0[_0x3567cc(0x234)]}],'id':_0x598a4a,'context':_0x4fb940}]};}finally{try{if(_0x2dbe01&&_0x54e9fe){let _0x569e2a=_0x59158b();_0x2dbe01[_0x3567cc(0x1fa)]++,_0x2dbe01[_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x2dbe01['ts']=_0x569e2a,_0x4e171b['hits'][_0x3567cc(0x1fa)]++,_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x236)]+=_0x37f561(_0x54e9fe,_0x569e2a),_0x4e171b[_0x3567cc(0x211)]['ts']=_0x569e2a,(_0x2dbe01['count']>0x32||_0x2dbe01[_0x3567cc(0x236)]>0x64)&&(_0x2dbe01[_0x3567cc(0x246)]=!0x0),(_0x4e171b[_0x3567cc(0x211)][_0x3567cc(0x1fa)]>0x3e8||_0x4e171b[_0x3567cc(0x211)]['time']>0x12c)&&(_0x4e171b[_0x3567cc(0x211)]['reduceLimits']=!0x0);}}catch{}}}return _0x281624;}((_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x26a699,_0x56ad52,_0xcf1325,_0x45dccc,_0x15cc6b,_0x4b507f)=>{var _0x128c36=_0xb38479;if(_0x223d37['_console_ninja'])return _0x223d37[_0x128c36(0x1cd)];if(!H(_0x223d37,_0xcf1325,_0x5f2c6d))return _0x223d37[_0x128c36(0x1cd)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x223d37[_0x128c36(0x1cd)];let _0x4c8894=B(_0x223d37),_0x4fce70=_0x4c8894[_0x128c36(0x1e8)],_0xf04e3f=_0x4c8894[_0x128c36(0x17d)],_0x34dbd2=_0x4c8894[_0x128c36(0x1ef)],_0x5531e0={'hits':{},'ts':{}},_0x58f1cd=X(_0x223d37,_0x45dccc,_0x5531e0,_0x26a699),_0x2b8b0f=_0x3fac78=>{_0x5531e0['ts'][_0x3fac78]=_0xf04e3f();},_0x95a02f=(_0x1435b9,_0x34ff92)=>{let _0x124d2e=_0x5531e0['ts'][_0x34ff92];if(delete _0x5531e0['ts'][_0x34ff92],_0x124d2e){let _0x59b045=_0x4fce70(_0x124d2e,_0xf04e3f());_0x50639f(_0x58f1cd('time',_0x1435b9,_0x34dbd2(),_0x529034,[_0x59b045],_0x34ff92));}},_0x3c2f23=_0x13bf7b=>{var _0x457f6b=_0x128c36,_0x34eb7b;return _0x5f2c6d===_0x457f6b(0x1de)&&_0x223d37[_0x457f6b(0x1dd)]&&((_0x34eb7b=_0x13bf7b==null?void 0x0:_0x13bf7b[_0x457f6b(0x193)])==null?void 0x0:_0x34eb7b[_0x457f6b(0x241)])&&(_0x13bf7b[_0x457f6b(0x193)][0x0][_0x457f6b(0x1dd)]=_0x223d37[_0x457f6b(0x1dd)]),_0x13bf7b;};_0x223d37[_0x128c36(0x1cd)]={'consoleLog':(_0x5cafd8,_0x487cf6)=>{var _0x55189c=_0x128c36;_0x223d37['console'][_0x55189c(0x251)][_0x55189c(0x216)]!==_0x55189c(0x194)&&_0x50639f(_0x58f1cd(_0x55189c(0x251),_0x5cafd8,_0x34dbd2(),_0x529034,_0x487cf6));},'consoleTrace':(_0x5e6473,_0x3d35c8)=>{var _0x561906=_0x128c36,_0x1391eb,_0x2bb065;_0x223d37[_0x561906(0x25e)]['log']['name']!=='disabledTrace'&&((_0x2bb065=(_0x1391eb=_0x223d37[_0x561906(0x1a3)])==null?void 0x0:_0x1391eb[_0x561906(0x24d)])!=null&&_0x2bb065[_0x561906(0x1c1)]&&(_0x223d37[_0x561906(0x192)]=!0x0),_0x50639f(_0x3c2f23(_0x58f1cd('trace',_0x5e6473,_0x34dbd2(),_0x529034,_0x3d35c8))));},'consoleError':(_0x48f234,_0x50acb5)=>{var _0x3ac930=_0x128c36;_0x223d37[_0x3ac930(0x192)]=!0x0,_0x50639f(_0x3c2f23(_0x58f1cd(_0x3ac930(0x21b),_0x48f234,_0x34dbd2(),_0x529034,_0x50acb5)));},'consoleTime':_0x3b4528=>{_0x2b8b0f(_0x3b4528);},'consoleTimeEnd':(_0x1d2a1a,_0x8fecd7)=>{_0x95a02f(_0x8fecd7,_0x1d2a1a);},'autoLog':(_0x202683,_0x2cfe5b)=>{_0x50639f(_0x58f1cd('log',_0x2cfe5b,_0x34dbd2(),_0x529034,[_0x202683]));},'autoLogMany':(_0x4b6c47,_0x450b66)=>{var _0x473802=_0x128c36;_0x50639f(_0x58f1cd(_0x473802(0x251),_0x4b6c47,_0x34dbd2(),_0x529034,_0x450b66));},'autoTrace':(_0x32a76,_0x14bc12)=>{var _0x57cf8a=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x57cf8a(0x1ab),_0x14bc12,_0x34dbd2(),_0x529034,[_0x32a76])));},'autoTraceMany':(_0xe360f7,_0x33c0e2)=>{var _0x3db00e=_0x128c36;_0x50639f(_0x3c2f23(_0x58f1cd(_0x3db00e(0x1ab),_0xe360f7,_0x34dbd2(),_0x529034,_0x33c0e2)));},'autoTime':(_0xd23749,_0x1ef2d8,_0x4116db)=>{_0x2b8b0f(_0x4116db);},'autoTimeEnd':(_0x14d592,_0x59efe7,_0x11f7ac)=>{_0x95a02f(_0x59efe7,_0x11f7ac);},'coverage':_0x20742a=>{var _0x644897=_0x128c36;_0x50639f({'method':_0x644897(0x1b2),'version':_0x26a699,'args':[{'id':_0x20742a}]});}};let _0x50639f=q(_0x223d37,_0x5bef7f,_0x293455,_0x196903,_0x5f2c6d,_0x15cc6b,_0x4b507f),_0x529034=_0x223d37[_0x128c36(0x261)];return _0x223d37[_0x128c36(0x1cd)];})(globalThis,_0xb38479(0x18e),_0xb38479(0x1df),_0xb38479(0x25b),_0xb38479(0x1ee),_0xb38479(0x23d),_0xb38479(0x24a),_0xb38479(0x197),_0xb38479(0x1ce),'','1');"); + } catch (e) {} +} +; /* istanbul ignore next */ +function oo_oo(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; +} +; +oo_oo; /* istanbul ignore next */ +function oo_tr(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; +} +; +oo_tr; /* istanbul ignore next */ +function oo_tx(i) { + var v = []; + for (var _i = 1; _i < arguments.length; _i++) { + v[_i - 1] = arguments[_i]; + } + try { + oo_cm().consoleError(i, v); + } catch (e) {} + return v; +} +; +oo_tx; /* istanbul ignore next */ +function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; +} +; +oo_ts; /* istanbul ignore next */ +function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; +} +; +oo_te; /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ /***/ }) @@ -1088,4 +1150,4 @@ function escapeHtml(unsafe) { /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBQ0YsU0FBU2xGLFVBQVVBLENBQUNzRixNQUFNLEVBQUU7RUFDeEIsT0FBT0EsTUFBTSxDQUNSOUksT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FDdEJBLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQ3JCQSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUNyQkEsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDdkJBLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO0FBQ2hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zY3JpcHRzL0R5bmFtaWNGaWVsZC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3NjcmlwdHMvZm9ybWJ1aWxkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkR5bmFtaWNGaWVsZCA9IHZvaWQgMDtcbnZhciBqcXVlcnlfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwianF1ZXJ5XCIpKTtcbnJlcXVpcmUoXCJzZWxlY3QyXCIpO1xudmFyIER5bmFtaWNGaWVsZCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEeW5hbWljRmllbGQoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZGUgYW5kIFNob3cgZGlmZmVyZW50IGZvcm0gZmllbGRzIGJhc2VkIG9uIHZvY2FidWxhcnkgYW5kIG90aGVyIHR5cGVzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlU2hvd0Zvcm1GaWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaHVtYW5pdGFyaWFuU2NvcGVIaWRlVm9jYWJ1bGFyeVVyaSgpO1xuICAgICAgICB0aGlzLmNvdW50cnlCdWRnZXRIaWRlQ29kZUZpZWxkKCk7XG4gICAgICAgIHRoaXMuYWlkVHlwZVZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgdGhpcy5zZWN0b3JWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIHRoaXMucG9saWN5Vm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICB0aGlzLnJlY2lwaWVudFZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgdGhpcy5zZWN0b3JWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIHRoaXMudGFnVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uQWlkVHlwZVZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGRVcmkoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEh1bWFuaXRhcmlhbiBTY29wZSBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdFtpZF49XCJodW1hbml0YXJpYW5fc2NvcGVcIl1baWQqPVwiW3ZvY2FidWxhcnldXCJdJyk7XG4gICAgICAgIGlmIChodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gaGlkZSBmaWVsZHMgb24gcGFnZSBsb2FkXG4gICAgICAgICAgICBqcXVlcnlfMS5kZWZhdWx0LmVhY2goaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5LCBmdW5jdGlvbiAoaW5kZXgsIHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2NvcGUpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlSHVtYW5pdGFyaWFuU2NvcGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2NvcGUpLCB2YWwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGhpZGUvc2hvdyBmaWVsZHMgb24gdmFsdWUgY2hhbmdlXG4gICAgICAgICAgICBodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkub24oJ3NlbGVjdDI6c2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsID0gZS5wYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlSHVtYW5pdGFyaWFuU2NvcGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaW5kZXgpLCB2YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgZmllbGRzIG9uIHZhbHVlIGNsZWFyXG4gICAgICAgICAgICBodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVIdW1hbml0YXJpYW5TY29wZUZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShpbmRleCksICcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBoaWRlIGNvdW50cnkgYnVkZ2V0IGJhc2VkIG9uIHZvY2FidWxhcnlcbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVIdW1hbml0YXJpYW5TY29wZUZpZWxkID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB2YXIgaHVtYW5pdGFyaWFuU2NvcGVIaWRlVm9jYWJ1bGFyeVVyaSA9ICdpbnB1dFtpZF49XCJodW1hbml0YXJpYW5fc2NvcGVcIl1baWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSc7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJzk5Jykge1xuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgIC5maW5kKGh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkpXG4gICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgIC5maW5kKGh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkpXG4gICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEh1bWFuaXRhcmlhbiBTY29wZSBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmluZGljYXRvclJlZmVyZW5jZUhpZGVGaWVsZFVyaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJlZmVyZW5jZVZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdFtpZF49XCJyZWZlcmVuY2VcIl1baWQqPVwiW3ZvY2FidWxhcnldXCJdJyk7XG4gICAgICAgIGlmIChyZWZlcmVuY2VWb2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGhpZGUgZmllbGRzIG9uIHBhZ2UgbG9hZFxuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKHJlZmVyZW5jZVZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgc2NvcGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShzY29wZSkudmFsKCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIF90aGlzLmluZGljYXRvclJlZmVyZW5jZUhpZGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2NvcGUpLCB2YWwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGhpZGUvc2hvdyBmaWVsZHMgb24gdmFsdWUgY2hhbmdlXG4gICAgICAgICAgICByZWZlcmVuY2VWb2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShpbmRleCksIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGhpZGUvc2hvdyBmaWVsZHMgb24gdmFsdWUgY2xlYXJcbiAgICAgICAgICAgIHJlZmVyZW5jZVZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmluZGljYXRvclJlZmVyZW5jZUhpZGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaW5kZXgpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gaGlkZSBjb3VudHJ5IGJ1ZGdldCBiYXNlZCBvbiB2b2NhYnVsYXJ5XG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciByZWZlcmVuY2VVcmkgPSAnaW5wdXRbaWRePVwicmVmZXJlbmNlXCJdW2lkKj1cIltpbmRpY2F0b3JfdXJpXVwiXSc7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJzk5Jykge1xuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgIC5maW5kKHJlZmVyZW5jZVVyaSlcbiAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgLmZpbmQocmVmZXJlbmNlVXJpKVxuICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb3VudHJ5IEJ1ZGdldCBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBzaG93L2hpZGUgJ2NvZGUnIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmNvdW50cnlCdWRnZXRIaWRlQ29kZUZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnc2VsZWN0I2NvdW50cnlfYnVkZ2V0X3ZvY2FidWxhcnknKTtcbiAgICAgICAgaWYgKGNvdW50cnlCdWRnZXRWb2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGhpZGUvc2hvdyBvbiBwYWdlIGxvYWRcbiAgICAgICAgICAgIHZhciB2YWwgPSAoX2EgPSBjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgdGhpcy5oaWRlQ291bnRyeUJ1ZGdldEZpZWxkKHZhbC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIC8vIGhpZGUvc2hvdyBvbiB2YWx1ZSBjaGFuZ2VcbiAgICAgICAgICAgIGNvdW50cnlCdWRnZXRWb2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUNvdW50cnlCdWRnZXRGaWVsZCh2YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvL2hpZGUvc2hvdyBiYXNlZCBvbiB2YWx1ZSBjbGVhcmVkXG4gICAgICAgICAgICBjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeS5vbignc2VsZWN0MjpjbGVhcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlQ291bnRyeUJ1ZGdldEZpZWxkKCcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIaWRlIENvdW50cnkgQnVkZ2V0IEZpZWxkc1xuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuaGlkZUNvdW50cnlCdWRnZXRGaWVsZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgY291bnRyeUJ1ZGdldENvZGVJbnB1dCA9ICdpbnB1dFtpZF49XCJidWRnZXRfaXRlbVwiXVtpZCo9XCJbY29kZV90ZXh0XVwiXScsIGNvdW50cnlCdWRnZXRDb2RlU2VsZWN0ID0gJ3NlbGVjdFtpZF49XCJidWRnZXRfaXRlbVwiXVtpZCo9XCJbY29kZV1cIl0nO1xuICAgICAgICBpZiAodmFsdWUgPT09ICcxJykge1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGNvdW50cnlCdWRnZXRDb2RlU2VsZWN0KVxuICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoY291bnRyeUJ1ZGdldENvZGVJbnB1dClcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShjb3VudHJ5QnVkZ2V0Q29kZVNlbGVjdClcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShjb3VudHJ5QnVkZ2V0Q29kZUlucHV0KVxuICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBaWRUeXBlIEZvcm0gUGFnZVxuICAgICAqXG4gICAgICogQExvZ2ljIGhpZGUgdm9jYWJ1bGFyeS11cmkgYW5kIGNvZGVzIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYWlkdHlwZV92b2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWQqPVwiZGVmYXVsdF9haWRfdHlwZV92b2NhYnVsYXJ5XCJdJyk7XG4gICAgICAgIGlmIChhaWR0eXBlX3ZvY2FidWxhcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKGFpZHR5cGVfdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGl0ZW0pLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnMSc7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUFpZFR5cGVTZWxlY3RGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaXRlbSksIGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFpZHR5cGVfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZS5wYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUFpZFR5cGVTZWxlY3RGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFpZHR5cGVfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpjbGVhcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVBaWRUeXBlU2VsZWN0RmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksICcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBaWRUeXBlIEZvcm0gUGFnZVxuICAgICAqXG4gICAgICogQExvZ2ljIGhpZGUgdm9jYWJ1bGFyeS11cmkgYW5kIGNvZGVzIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLnRyYW5zYWN0aW9uQWlkVHlwZVZvY2FidWxhcnlIaWRlRmllbGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhaWR0eXBlX3ZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdFtpZCo9XCJhaWRfdHlwZV92b2NhYnVsYXJ5XCJdJyk7XG4gICAgICAgIGlmIChhaWR0eXBlX3ZvY2FidWxhcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKGFpZHR5cGVfdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGl0ZW0pLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnMSc7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVRyYW5zYWN0aW9uQWlkVHlwZVNlbGVjdEZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShpdGVtKSwgZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWlkdHlwZV92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlVHJhbnNhY3Rpb25BaWRUeXBlU2VsZWN0RmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhaWR0eXBlX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlVHJhbnNhY3Rpb25BaWRUeXBlU2VsZWN0RmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksICcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIaWRlIEFpZCBUeXBlIFNlbGVjdCBGaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVBaWRUeXBlU2VsZWN0RmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBkZWZhdWx0X2FpZF90eXBlID0gJ3NlbGVjdFtpZCo9XCJbZGVmYXVsdF9haWRfdHlwZV1cIl0nLCBlYXJtYXJraW5nX2NhdGVnb3J5ID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0nLCBlYXJtYXJraW5nX21vZGFsaXR5ID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0nLCBjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMgPSAnc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTEgPSAnc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX2NhdGVnb3J5XVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdLHNlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2UyID0gJ3NlbGVjdFtpZCo9XCJbZGVmYXVsdF9haWRfdHlwZV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX21vZGFsaXR5XVwiXSxzZWxlY3RbaWQqPVwiW2Nhc2hfYW5kX3ZvdWNoZXJfbW9kYWxpdGllc11cIl0nLCBjYXNlMyA9ICdzZWxlY3RbaWQqPVwiW2RlZmF1bHRfYWlkX3R5cGVdXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0sc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTQgPSAnc2VsZWN0W2lkKj1cIltkZWZhdWx0X2FpZF90eXBlXVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0nO1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChlYXJtYXJraW5nX2NhdGVnb3J5KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTIpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChlYXJtYXJraW5nX21vZGFsaXR5KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTMpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlNClcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZGVmYXVsdF9haWRfdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIaWRlIFRyYW5zYWN0aW9uIEFpZCBUeXBlIFNlbGVjdCBGaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVUcmFuc2FjdGlvbkFpZFR5cGVTZWxlY3RGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGFpZF90eXBlID0gJ3NlbGVjdFtpZCo9XCJbYWlkX3R5cGVfY29kZV1cIl0nLCBlYXJtYXJraW5nX2NhdGVnb3J5ID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0nLCBlYXJtYXJraW5nX21vZGFsaXR5ID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0nLCBjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMgPSAnc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTEgPSAnc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX2NhdGVnb3J5XVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdLHNlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2UyID0gJ3NlbGVjdFtpZCo9XCJbYWlkX3R5cGVfY29kZV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX21vZGFsaXR5XVwiXSxzZWxlY3RbaWQqPVwiW2Nhc2hfYW5kX3ZvdWNoZXJfbW9kYWxpdGllc11cIl0nLCBjYXNlMyA9ICdzZWxlY3RbaWQqPVwiW2FpZF90eXBlX2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0sc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTQgPSAnc2VsZWN0W2lkKj1cIlthaWRfdHlwZV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0nO1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChlYXJtYXJraW5nX2NhdGVnb3J5KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTIpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChlYXJtYXJraW5nX21vZGFsaXR5KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTMpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlNClcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoYWlkX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUG9saWN5IE1hcmtlciBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGFuZCBjb2RlcyBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5wb2xpY3lWb2NhYnVsYXJ5SGlkZUZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcG9saWN5bWFrZXJfdm9jYWJ1bGFyeSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnc2VsZWN0W2lkKj1cInBvbGljeV9tYXJrZXJfdm9jYWJ1bGFyeVwiXScpO1xuICAgICAgICBpZiAocG9saWN5bWFrZXJfdm9jYWJ1bGFyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBqcXVlcnlfMS5kZWZhdWx0LmVhY2gocG9saWN5bWFrZXJfdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCBwb2xpY3lfbWFya2VyKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHBvbGljeV9tYXJrZXIpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnMSc7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVBvbGljeU1ha2VyRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHBvbGljeV9tYXJrZXIpLCBkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwb2xpY3ltYWtlcl92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlUG9saWN5TWFrZXJGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBvbGljeW1ha2VyX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlUG9saWN5TWFrZXJGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgJzk5Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZXMgUG9saWN5IE1hcmtlciBGb3JtIEZpZWxkc1xuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuaGlkZVBvbGljeU1ha2VyRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjYXNlMV9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbcG9saWN5X21hcmtlcl1cIl0nLCBjYXNlMl9zaG93ID0gJ2lucHV0W2lkKj1cIltwb2xpY3lfbWFya2VyX3RleHRdXCJdLGlucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0nLCBjYXNlMSA9ICdpbnB1dFtpZCo9XCJbcG9saWN5X21hcmtlcl90ZXh0XVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJywgY2FzZTIgPSAnc2VsZWN0W2lkKj1cIltwb2xpY3lfbWFya2VyXVwiXSc7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzk5JzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTJfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWN0b3IgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBhbmQgY29kZXMgZmllbGQgYmFzZWQgb24gJ0B2b2NhYnVsYXJ5JyBmaWVsZCB2YWx1ZVxuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuc2VjdG9yVm9jYWJ1bGFyeUhpZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHNlY3Rvcl92b2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWQqPVwic2VjdG9yX3ZvY2FidWxhcnlcIl0nKTtcbiAgICAgICAgaWYgKHNlY3Rvcl92b2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaChzZWN0b3Jfdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCBzZWN0b3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2VjdG9yKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVTZWN0b3JGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2VjdG9yKSwgZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VjdG9yX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6c2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVTZWN0b3JGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlY3Rvcl92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVNlY3RvckZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZSBTZWN0b3IgRm9ybSBmaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVTZWN0b3JGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGNhc2UxX3Nob3cgPSAnc2VsZWN0W2lkKj1cIltjb2RlXVwiXScsIGNhc2UyX3Nob3cgPSAnc2VsZWN0W2lkKj1cIltjYXRlZ29yeV9jb2RlXVwiXScsIGNhc2U3X3Nob3cgPSAnc2VsZWN0W2lkKj1cIltzZGdfZ29hbF1cIl0nLCBjYXNlOF9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0nLCBjYXNlOThfOTlfc2hvdyA9ICdpbnB1dFtpZCo9XCJbdGV4dF1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXScsIGRlZmF1bHRfc2hvdyA9ICdpbnB1dFtpZCo9XCJbdGV4dF1cIl0nLCBjYXNlMSA9ICdzZWxlY3RbaWQqPVwiW2NhdGVnb3J5X2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX2dvYWxdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSxpbnB1dFtpZCo9XCJbdGV4dF1cIl0nLCBjYXNlMiA9ICdpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdLHNlbGVjdFtpZCo9XCJbc2RnX2dvYWxdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0sc2VsZWN0W2lkKj1cIltjb2RlXVwiXSxpbnB1dFtpZCo9XCJbdGV4dF1cIl0nLCBjYXNlNyA9ICdpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdLHNlbGVjdFtpZCo9XCJbY2F0ZWdvcnlfY29kZV1cIl0sc2VsZWN0W2lkKj1cIltzZGdfdGFyZ2V0XVwiXSxzZWxlY3RbaWQqPVwiW2NvZGVdXCJdLGlucHV0W2lkKj1cIlt0ZXh0XVwiXScsIGNhc2U4ID0gJ2lucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0sc2VsZWN0W2lkKj1cIltjYXRlZ29yeV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ19nb2FsXVwiXSxzZWxlY3RbaWQqPVwiW2NvZGVdXCJdLGlucHV0W2lkKj1cIlt0ZXh0XVwiXScsIGNhc2U5OF85OSA9ICdzZWxlY3RbaWQqPVwiW2NhdGVnb3J5X2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX2dvYWxdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0sc2VsZWN0W2lkKj1cIltjb2RlXVwiXScsIGRlZmF1bHRfaGlkZSA9ICdzZWxlY3RbaWQqPVwiW2NhdGVnb3J5X2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX2dvYWxdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0sc2VsZWN0W2lkKj1cIltjb2RlXVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJztcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTFfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTJfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnNyc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTdfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U3KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnOCc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZThfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U4KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnOTgnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OF85OV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTk4Xzk5KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnOTknOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OF85OV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTk4Xzk5KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChkZWZhdWx0X3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChkZWZhdWx0X2hpZGUpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqICBSZWNpcGllbnQgVm9jYWJ1bGFyeSBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGFuZCBjb2RlcyBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5yZWNpcGllbnRWb2NhYnVsYXJ5SGlkZUZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcmVnaW9uX3ZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdFtpZCo9XCJyZWdpb25fdm9jYWJ1bGFyeVwiXScpO1xuICAgICAgICBpZiAocmVnaW9uX3ZvY2FidWxhcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKHJlZ2lvbl92b2NhYnVsYXJ5LCBmdW5jdGlvbiAoaW5kZXgsIHJlZ2lvbl92b2NhYikge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShyZWdpb25fdm9jYWIpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnMSc7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVJlY2lwaWVudFJlZ2lvbkZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShyZWdpb25fdm9jYWIpLCBkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWdpb25fdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZS5wYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVJlY2lwaWVudFJlZ2lvbkZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVnaW9uX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlUmVjaXBpZW50UmVnaW9uRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksICcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIaWRlcyBSZWNpcGllbnQgUmVnaW9uIEZvcm0gRmllbGRzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlUmVjaXBpZW50UmVnaW9uRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjYXNlMV9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbcmVnaW9uX2NvZGVdXCJdJywgY2FzZTJfc2hvdyA9ICdpbnB1dFtpZCo9XCJbY3VzdG9tX2NvZGVdXCJdLCBpbnB1dFtpZCo9XCJbY29kZV1cIl0nLCBjYXNlOTlfc2hvdyA9ICdpbnB1dFtpZCo9XCJbY3VzdG9tX2NvZGVdXCJdLGlucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0sIGlucHV0W2lkKj1cIltjb2RlXVwiXScsIGNhc2UxID0gJ2lucHV0W2lkKj1cIltjdXN0b21fY29kZV1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSxpbnB1dFtpZCo9XCJbY29kZV1cIl0nLCBjYXNlMiA9ICdzZWxlY3RbaWQqPVwiW3JlZ2lvbl9jb2RlXVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJywgY2FzZTk5ID0gJ3NlbGVjdFtpZCo9XCJbcmVnaW9uX2NvZGVdXCJdJztcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTFfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTJfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnOTknOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTk5KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMl9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTIpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgQWN0aXZpdHkgaWRlbnRpZmllclxuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUudXBkYXRlQWN0aXZpdHlJZGVudGlmaWVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYWN0aXZpdHlfaWRlbnRpZmllciA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI2FjdGl2aXR5X2lkZW50aWZpZXInKTtcbiAgICAgICAgaWYgKGFjdGl2aXR5X2lkZW50aWZpZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllci5vbigna2V5dXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjaWF0aV9pZGVudGlmaWVyX3RleHQnKS52YWwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuaWRlbnRpZmllcicpLmF0dHIoJ2FjdGl2aXR5X2lkZW50aWZpZXInKSArIFwiLVwiLmNvbmNhdCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcykudmFsKCkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUYWcgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBhbmQgY29kZXMgZmllbGQgYmFzZWQgb24gJ0B2b2NhYnVsYXJ5JyBmaWVsZCB2YWx1ZVxuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUudGFnVm9jYWJ1bGFyeUhpZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRhZ192b2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWQqPVwidGFnX3ZvY2FidWxhcnlcIl0nKTtcbiAgICAgICAgaWYgKHRhZ192b2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaCh0YWdfdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCB0YWcpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFnKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVUYWdGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFnKSwgZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFnX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6c2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVUYWdGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhZ192b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVRhZ0ZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZSBUYWcgRm9ybSBmaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVUYWdGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGNhc2UxX3Nob3cgPSAnaW5wdXRbaWQqPVwiW3RhZ190ZXh0XVwiXScsIGNhc2UyX3Nob3cgPSAnc2VsZWN0W2lkKj1cIltnb2Fsc190YWdfY29kZV1cIl0nLCBjYXNlM19zaG93ID0gJ3NlbGVjdFtpZCo9XCJbdGFyZ2V0c190YWdfY29kZV1cIl0nLCBjYXNlOTlfc2hvdyA9ICdpbnB1dFtpZCo9XCJbdGFnX3RleHRdXCJdLCBpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJywgY2FzZTEgPSAnc2VsZWN0W2lkKj1cIltnb2Fsc190YWdfY29kZV1cIl0sc2VsZWN0W2lkKj1cIlt0YXJnZXRzX3RhZ19jb2RlXVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJywgY2FzZTIgPSAnaW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSxzZWxlY3RbaWQqPVwiW3RhcmdldHNfdGFnX2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbdGFyZ2V0c190YWdfY29kZV1cIl0saW5wdXRbaWQqPVwiW3RhZ190ZXh0XVwiXScsIGNhc2UzID0gJ2lucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0sc2VsZWN0W2lkKj1cIltnb2Fsc190YWdfY29kZV1cIl0saW5wdXRbaWQqPVwiW3RhZ190ZXh0XVwiXScsIGNhc2U5OSA9ICdzZWxlY3RbaWQqPVwiW2dvYWxzX3RhZ19jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3RhcmdldHNfdGFnX2NvZGVdXCJdJztcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTFfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTJfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTNfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UzKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnOTknOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTk5KVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTEpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBEeW5hbWljRmllbGQ7XG59KCkpO1xuZXhwb3J0cy5EeW5hbWljRmllbGQgPSBEeW5hbWljRmllbGQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIganF1ZXJ5XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImpxdWVyeVwiKSk7XG5yZXF1aXJlKFwic2VsZWN0MlwiKTtcbnZhciBEeW5hbWljRmllbGRfMSA9IHJlcXVpcmUoXCIuL0R5bmFtaWNGaWVsZFwiKTtcbnZhciBkeW5hbWljRmllbGQgPSBuZXcgRHluYW1pY0ZpZWxkXzEuRHluYW1pY0ZpZWxkKCk7XG52YXIgRm9ybUJ1aWxkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRm9ybUJ1aWxkZXIoKSB7XG4gICAgfVxuICAgIC8vIGFkZHMgbmV3IGNvbGxlY3Rpb24gb2Ygc3ViLWVsZW1lbnRcbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUuYWRkRm9ybSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0O1xuICAgICAgICB2YXIgY29udGFpbmVyID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignZm9ybV90eXBlJylcbiAgICAgICAgICAgID8gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKFwiLmNvbGxlY3Rpb24tY29udGFpbmVyW2Zvcm1fdHlwZSA9J1wiLmNvbmNhdCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdmb3JtX3R5cGUnKSwgXCInXVwiKSlcbiAgICAgICAgICAgIDogKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuY29sbGVjdGlvbi1jb250YWluZXInKTtcbiAgICAgICAgdmFyIGNvdW50ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignY2hpbGRfY291bnQnKVxuICAgICAgICAgICAgPyBwYXJzZUludCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdjaGlsZF9jb3VudCcpKSArIDFcbiAgICAgICAgICAgIDogKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucGFyZW50KCkuZmluZCgnLmZvcm0tY2hpbGQtYm9keScpLmxlbmd0aDtcbiAgICAgICAgdmFyIHBhcmVudF9jb3VudCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3BhcmVudF9jb3VudCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3BhcmVudF9jb3VudCcpKVxuICAgICAgICAgICAgOiAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wYXJlbnRzKCcubXVsdGktZm9ybScpLmluZGV4KCkgLSAxO1xuICAgICAgICB2YXIgd3JhcHBlcl9wYXJlbnRfY291bnQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCd3cmFwcGVkX3BhcmVudF9jb3VudCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3dyYXBwZWRfcGFyZW50X2NvdW50JykpXG4gICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnBhcmVudHMoJy53cmFwcGVkLWNoaWxkLWJvZHknKS5pbmRleCgpIC0gMTtcbiAgICAgICAgdmFyIHByb3RvID0gY29udGFpbmVyXG4gICAgICAgICAgICAuZGF0YSgncHJvdG90eXBlJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fX1BBUkVOVF9OQU1FX18vZywgcGFyZW50X2NvdW50KTtcbiAgICAgICAgaWYgKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2hhc19jaGlsZF9jb2xsZWN0aW9uJykpIHtcbiAgICAgICAgICAgIHByb3RvID0gcHJvdG8ucmVwbGFjZSgvX19XUkFQUEVSX05BTUVfXy9nLCBjb3VudCk7XG4gICAgICAgICAgICBwcm90byA9IHByb3RvLnJlcGxhY2UoL19fTkFNRV9fL2csIDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvdG8gPSBwcm90by5yZXBsYWNlKC9fX05BTUVfXy9nLCBjb3VudCk7XG4gICAgICAgICAgICBwcm90byA9IHByb3RvLnJlcGxhY2UoL19fV1JBUFBFUl9OQU1FX18vZywgd3JhcHBlcl9wYXJlbnRfY291bnQpO1xuICAgICAgICB9XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnByZXYoKS5hcHBlbmQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHByb3RvKSk7XG4gICAgICAgIGlmICgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdoYXNfY2hpbGRfY29sbGVjdGlvbicpKSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KVxuICAgICAgICAgICAgICAgIC5wcmV2KCcuc3ViZWxlbWVudCcpXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKCcud3JhcHBlZC1jaGlsZC1ib2R5JylcbiAgICAgICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAgICAgLmZpbmQoJy5hZGRfdG9fY29sbGVjdGlvbicpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ3dyYXBwZWRfcGFyZW50X2NvdW50JywgY291bnQpO1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgICAgICAucHJldignLnN1YmVsZW1lbnQnKVxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbignLndyYXBwZWQtY2hpbGQtYm9keScpXG4gICAgICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuYWRkX3RvX2NvbGxlY3Rpb24nKVxuICAgICAgICAgICAgICAgIC5hdHRyKCdwYXJlbnRfY291bnQnLCBwYXJlbnRfY291bnQpO1xuICAgICAgICB9XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAucHJldigpXG4gICAgICAgICAgICAuZmluZCgnLndyYXBwZWQtY2hpbGQtYm9keScpXG4gICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAuZmluZCgnLmFkZF90b19jb2xsZWN0aW9uJylcbiAgICAgICAgICAgIC5hdHRyKCd3cmFwcGVyX3BhcmVudF9jb3VudCcsIHdyYXBwZXJfcGFyZW50X2NvdW50ICE9PSBudWxsICYmIHdyYXBwZXJfcGFyZW50X2NvdW50ICE9PSB2b2lkIDAgPyB3cmFwcGVyX3BhcmVudF9jb3VudCA6IDApO1xuICAgICAgICBpZiAoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignZm9ybV90eXBlJykpIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnByZXYoKS5sYXN0KCkuZmluZCgnLnNlbGVjdDInKS5zZWxlY3QyKHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBvcHRpb24nLFxuICAgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuc3ViLWF0dHJpYnV0ZScpXG4gICAgICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBmbGV4IGZsZXgtd3JhcCBzdWItYXR0cmlidXRlLXdyYXBwZXJcIj48L2Rpdj4nKSk7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KVxuICAgICAgICAgICAgICAgIC5wcmV2KCcuc3ViZWxlbWVudCcpXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKCcud3JhcHBlZC1jaGlsZC1ib2R5JylcbiAgICAgICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAgICAgLmZpbmQoJy5zdWItYXR0cmlidXRlJylcbiAgICAgICAgICAgICAgICAud3JhcEFsbCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJzxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWdyb3VwIGZsZXggZmxleC13cmFwIHN1Yi1hdHRyaWJ1dGUtd3JhcHBlciBtdC02XCI+PC9kaXY+JykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgICAgICAucGFyZW50KClcbiAgICAgICAgICAgICAgICAuZmluZCgnLmZvcm0tY2hpbGQtYm9keScpXG4gICAgICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuc2VsZWN0MicpXG4gICAgICAgICAgICAgICAgLnNlbGVjdDIoe1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGFuIG9wdGlvbicsXG4gICAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2NoaWxkX2NvdW50JywgY291bnQpO1xuICAgICAgICBkeW5hbWljRmllbGQuYWlkVHlwZVZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgZHluYW1pY0ZpZWxkLnNlY3RvclZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICB9O1xuICAgIC8vIGFkZHMgcGFyZW50IGNvbGxlY3Rpb25cbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUuYWRkUGFyZW50Rm9ybSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0O1xuICAgICAgICB2YXIgY29udGFpbmVyID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignZm9ybV90eXBlJylcbiAgICAgICAgICAgID8gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKFwiLnBhcmVudC1jb2xsZWN0aW9uW2Zvcm1fdHlwZSA9J1wiLmNvbmNhdCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdmb3JtX3R5cGUnKSwgXCInXVwiKSlcbiAgICAgICAgICAgIDogKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcucGFyZW50LWNvbGxlY3Rpb24nKTtcbiAgICAgICAgdmFyIGNvdW50ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cigncGFyZW50X2NvdW50JylcbiAgICAgICAgICAgID8gcGFyc2VJbnQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cigncGFyZW50X2NvdW50JykpICsgMVxuICAgICAgICAgICAgOiAoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucHJldigpLmZpbmQoJy5tdWx0aS1mb3JtJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkuZmluZCgnLm11bHRpLWZvcm0nKS5sZW5ndGhcbiAgICAgICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnByZXYoKS5maW5kKCcud3JhcHBlZC1jaGlsZC1ib2R5JykubGVuZ3RoKSArIDE7XG4gICAgICAgIHZhciBwcm90byA9IGNvbnRhaW5lci5kYXRhKCdwcm90b3R5cGUnKS5yZXBsYWNlKC9fX1BBUkVOVF9OQU1FX18vZywgY291bnQpO1xuICAgICAgICBwcm90byA9IHByb3RvLnJlcGxhY2UoL19fTkFNRV9fL2csIDApO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkuYXBwZW5kKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShwcm90bykpO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkuZmluZCgnLm11bHRpLWZvcm0nKS5sYXN0KCkuZmluZCgnLnNlbGVjdDInKS5zZWxlY3QyKHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGFuIG9wdGlvbicsXG4gICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgIC5wcmV2KClcbiAgICAgICAgICAgIC5maW5kKCcubXVsdGktZm9ybScpXG4gICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAuZmluZCgnLmFkZF90b19jb2xsZWN0aW9uJylcbiAgICAgICAgICAgIC5hdHRyKCdwYXJlbnRfY291bnQnLCBjb3VudCk7XG4gICAgICAgIHRoaXMuYWRkV3JhcHBlck9uQWRkKHRhcmdldCk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3BhcmVudF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgZHluYW1pY0ZpZWxkLmh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkoKTtcbiAgICAgICAgZHluYW1pY0ZpZWxkLmNvdW50cnlCdWRnZXRIaWRlQ29kZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5zZWN0b3JWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5yZWNpcGllbnRWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5wb2xpY3lWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC50YWdWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC50cmFuc2FjdGlvbkFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGRVcmkoKTtcbiAgICB9O1xuICAgIC8vIGRlbGV0ZXMgY29sbGVjdGlvblxuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS5kZWxldGVGb3JtID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldi50YXJnZXQ7XG4gICAgICAgIHZhciBjb2xsZWN0aW9uTGVuZ3RoID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcubXVsdGktZm9ybScpLmxlbmd0aFxuICAgICAgICAgICAgPyAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5jbG9zZXN0KCcuc3ViZWxlbWVudCcpLmZpbmQoJy5mb3JtLWNoaWxkLWJvZHknKS5sZW5ndGhcbiAgICAgICAgICAgIDogKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuZm9ybS1jaGlsZC1ib2R5JykubGVuZ3RoO1xuICAgICAgICB2YXIgY291bnQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5hZGRfdG9fY29sbGVjdGlvbicpLmF0dHIoJ2NoaWxkX2NvdW50JylcbiAgICAgICAgICAgID8gcGFyc2VJbnQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX2NvbGxlY3Rpb24nKS5hdHRyKCdjaGlsZF9jb3VudCcpKSArIDFcbiAgICAgICAgICAgIDogY29sbGVjdGlvbkxlbmd0aDtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX2NvbGxlY3Rpb24nKS5hdHRyKCdjaGlsZF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb25MZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgdGcgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5jbG9zZXN0KCcuZm9ybS1jaGlsZC1ib2R5Jyk7XG4gICAgICAgICAgICB0Zy5uZXh0KCcuZXJyb3InKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRnLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBkZWxldGVzIHBhcmVudCBjb2xsZWN0aW9uXG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmRlbGV0ZVBhcmVudEZvcm0gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldDtcbiAgICAgICAgdmFyIGNvbGxlY3Rpb25MZW5ndGggPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5zdWJlbGVtZW50JykubGVuZ3RoO1xuICAgICAgICB2YXIgY291bnQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5hZGRfdG9fcGFyZW50JykuYXR0cignY2hpbGRfY291bnQnKVxuICAgICAgICAgICAgPyBwYXJzZUludCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5hZGRfdG9fcGFyZW50JykuYXR0cignY2hpbGRfY291bnQnKSkgKyAxXG4gICAgICAgICAgICA6IGNvbGxlY3Rpb25MZW5ndGg7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmFkZF90b19wYXJlbnQnKS5hdHRyKCdjaGlsZF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX3BhcmVudCcpLmF0dHIoJ3BhcmVudF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb25MZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wYXJlbnQoKS5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy9hZGQgd3JhcHBlciBkaXYgYXJvdW5kIHRoZSBhdHRyaWJ1dGVzXG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmFkZFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLm11bHRpLWZvcm0nKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuYXR0cmlidXRlJylcbiAgICAgICAgICAgICAgICAud3JhcEFsbCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJzxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWdyb3VwIGZsZXggZmxleC13cmFwIGF0dHJpYnV0ZS13cmFwcGVyIG1iLTRcIj48L2Rpdj4nKSk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5zdWJlbGVtZW50JylcbiAgICAgICAgICAgIC5maW5kKCcud3JhcHBlZC1jaGlsZC1ib2R5JylcbiAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuc3ViLWF0dHJpYnV0ZScpXG4gICAgICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBmbGV4IGZsZXgtd3JhcCBzdWItYXR0cmlidXRlLXdyYXBwZXIgbWItNFwiPjwvZGl2PicpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRmllbGQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2Zvcm0+LmZvcm0tZmllbGQnKTtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQud3JhcEFsbCgnPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZ3JvdXAtb3V0ZXIgZ3JpZCB4bDpncmlkLWNvbHMtMiBtYi02IC1teC0zIGdhcC15LTZcIj48L2Rpdj4nKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmFkZFdyYXBwZXJPbkFkZCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgIC5wcmV2KClcbiAgICAgICAgICAgIC5maW5kKCcubXVsdGktZm9ybScpXG4gICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAuZmluZCgnLmF0dHJpYnV0ZScpXG4gICAgICAgICAgICAud3JhcEFsbCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJzxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWdyb3VwIGdyaWQgeGw6Z3JpZC1jb2xzLTIgYXR0cmlidXRlLXdyYXBwZXIgbWItNFwiPjwvZGl2PicpKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgIC5wcmV2KClcbiAgICAgICAgICAgIC5maW5kKCcubXVsdGktZm9ybScpXG4gICAgICAgICAgICAubGFzdCgpXG4gICAgICAgICAgICAuZmluZCgnLnN1YmVsZW1lbnQnKVxuICAgICAgICAgICAgLmZpbmQoJy53cmFwcGVkLWNoaWxkLWJvZHknKVxuICAgICAgICAgICAgLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpXG4gICAgICAgICAgICAgICAgLmZpbmQoJy5zdWItYXR0cmlidXRlJylcbiAgICAgICAgICAgICAgICAud3JhcEFsbCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJzxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWdyb3VwIGZsZXggZmxleC13cmFwIHN1Yi1hdHRyaWJ1dGUtd3JhcHBlciBtYi00XCI+PC9kaXY+JykpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS50ZXh0QXJlYUhlaWdodCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0O1xuICAgICAgICB2YXIgaGVpZ2h0ID0gdGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuY3NzKCdoZWlnaHQnLCBoZWlnaHQpO1xuICAgIH07XG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmFkZFRvQ29sbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2NsaWNrJywgJy5hZGRfdG9fY29sbGVjdGlvbicsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgaWYgKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShldmVudC50YXJnZXQpLmhhc0NsYXNzKCdhZGQtaWNvbicpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGV2ZW50LnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgnYnV0dG9uJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NsaWNrJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5hZGRGb3JtKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYW5kbGVEZWxldGVQYXJlbnRCdXR0b25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5hZGRfdG9fcGFyZW50Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ2FkZC1pY29uJykpIHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoZXZlbnQudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAucGFyZW50KCdidXR0b24nKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzLmFkZFBhcmVudEZvcm0oZXZlbnQpO1xuICAgICAgICAgICAgICAgIF90aGlzLmhhbmRsZURlbGV0ZVBhcmVudEJ1dHRvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUuZGVsZXRlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGRlbGV0ZUNvbmZpcm1hdGlvbiA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmRlbGV0ZS1jb25maXJtYXRpb24nKSwgY2FuY2VsUG9wdXAgPSAnLmNhbmNlbC1wb3B1cCcsIGRlbGV0ZUNvbmZpcm0gPSAnLmRlbGV0ZS1jb25maXJtJztcbiAgICAgICAgdmFyIGRlbGV0ZUluZGV4ID0ge30sIGNoaWxkT3JQYXJlbnQgPSAnJztcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2NsaWNrJywgJy5kZWxldGUnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGRlbGV0ZUNvbmZpcm1hdGlvbi5mYWRlSW4oKTtcbiAgICAgICAgICAgIGRlbGV0ZUluZGV4ID0gZXZlbnQ7XG4gICAgICAgICAgICBjaGlsZE9yUGFyZW50ID0gJ2NoaWxkJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjbGljaycsIGNhbmNlbFBvcHVwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkZWxldGVDb25maXJtYXRpb24uZmFkZU91dCgpO1xuICAgICAgICAgICAgZGVsZXRlSW5kZXggPSB7fTtcbiAgICAgICAgICAgIGNoaWxkT3JQYXJlbnQgPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjbGljaycsIGRlbGV0ZUNvbmZpcm0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZE9yUGFyZW50ID09PSAnY2hpbGQnKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZGVsZXRlRm9ybShkZWxldGVJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZE9yUGFyZW50ID09PSAncGFyZW50Jykge1xuICAgICAgICAgICAgICAgIF90aGlzLmRlbGV0ZVBhcmVudEZvcm0oZGVsZXRlSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlQ29uZmlybWF0aW9uLmZhZGVPdXQoKTtcbiAgICAgICAgICAgIGRlbGV0ZUluZGV4ID0ge307XG4gICAgICAgICAgICBjaGlsZE9yUGFyZW50ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignbW91c2VlbnRlcicsICcuZGVsZXRlLXBhcmVudCcsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9uID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHZhciBtdWx0aUZvcm0gPSBkZWxldGVCdXR0b24uY2xvc2VzdCgnLm11bHRpLWZvcm0sIC53cmFwcGVkLWNoaWxkLWJvZHknKTtcbiAgICAgICAgICAgIG11bHRpRm9ybS5jc3Moe1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjRkZGOEY3JyxcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAnMnB4IHNvbGlkICNGMTlCQTAnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignbW91c2VsZWF2ZScsICcuZGVsZXRlLXBhcmVudCcsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9uID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHZhciBtdWx0aUZvcm0gPSBkZWxldGVCdXR0b24uY2xvc2VzdCgnLm11bHRpLWZvcm0sIC53cmFwcGVkLWNoaWxkLWJvZHknKTtcbiAgICAgICAgICAgIG11bHRpRm9ybS5jc3Moe1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcnLFxuICAgICAgICAgICAgICAgIG91dGxpbmU6ICcnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignY2xpY2snLCAnLmRlbGV0ZS1wYXJlbnQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGRlbGV0ZUNvbmZpcm1hdGlvbi5mYWRlSW4oKTtcbiAgICAgICAgICAgIGRlbGV0ZUluZGV4ID0gZXZlbnQ7XG4gICAgICAgICAgICBjaGlsZE9yUGFyZW50ID0gJ3BhcmVudCc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5zZWxlY3QyJykuc2VsZWN0Mih7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBvcHRpb24nLFxuICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHVwZGF0ZSBmb3JtYXQgb24gY2hhbmdlIG9mIGRvY3VtZW50IGxpbmtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2NoYW5nZScsICdpbnB1dFtpZCo9XCJbdXJsXVwiXScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgZmlsZVBhdGggPSAoKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJykudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHZhciBkb2N1bWVudCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W2lkKj1cIltkb2N1bWVudF1cIl0nKVxuICAgICAgICAgICAgICAgIC52YWwoKTtcbiAgICAgICAgICAgIHZhciB1cmwgPSBcIi9taW1ldHlwZT91cmw9XCIuY29uY2F0KGZpbGVQYXRoLCBcIiZ0eXBlPXVybFwiKTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS5jbG9zZXN0KCcuZm9ybS1maWVsZCcpLmZpbmQoJy50ZXh0LWRhbmdlcicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQodXJsKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVzcG9uc2UuZGF0YS5kYXRhLm1pbWV0eXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbChmb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKS5jbG9zZXN0KCcuZm9ybS1maWVsZCcpLmZpbmQoJy50ZXh0LWRhbmdlcicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChcIjxkaXYgY2xhc3M9J3RleHQtZGFuZ2VyIGVycm9yJz5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5tZXNzYWdlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoX3RoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0W2lkKj1cIltmb3JtYXRdXCJdJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoX3RoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W2lkKj1cIltkb2N1bWVudF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFkb2N1bWVudCB8fCBkb2N1bWVudCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjaGFuZ2UnLCAnaW5wdXRbaWQqPVwiW2RvY3VtZW50XVwiXScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgZmlsZVBhdGggPSAoKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJykudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHZhciB1cmwgPSBcIi9taW1ldHlwZT91cmw9XCIuY29uY2F0KGZpbGVQYXRoLCBcIiYmdHlwZT1kb2N1bWVudFwiKTtcbiAgICAgICAgICAgIHZhciBmaWxlVXJsID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXRbaWQqPVwiW3VybF1cIl0nKVxuICAgICAgICAgICAgICAgIC52YWwoKTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS5jbG9zZXN0KCcuZm9ybS1maWVsZCcpLmZpbmQoJy50ZXh0LWRhbmdlcicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQodXJsKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gcmVzcG9uc2UuZGF0YS5kYXRhLm1pbWV0eXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbChmb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W2lkKj1cIlt1cmxdXCJdJylcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWZpbGVVcmwgfHwgZmlsZVVybCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUuaGFuZGxlRGVsZXRlUGFyZW50QnV0dG9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVsZXRlLXBhcmVudC1zZWxlY3RvcicpO1xuICAgICAgICB2YXIgY2hhbmdlRGVsZXRlQnV0dG9uSW5uZXJIdG1sID0gZnVuY3Rpb24gKGJ1dHRvbikge1xuICAgICAgICAgICAgdmFyIGluaXRpYWxUZXh0ID0gZXNjYXBlSHRtbChidXR0b24udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgYnV0dG9uLmlubmVySFRNTCA9IFwiXFxuICAgICAgICAgPHN2ZyBjbGFzcz1cXFwidGV4dC1bMXJlbV0gbWItMC41XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+XFxuICAgICAgICAgICA8cGF0aCBkPVxcXCJNNi42NjY2NyAxMkM2Ljg0MzQ4IDEyIDcuMDEzMDUgMTEuOTI5OCA3LjEzODA3IDExLjgwNDdDNy4yNjMxIDExLjY3OTcgNy4zMzMzMyAxMS41MTAxIDcuMzMzMzMgMTEuMzMzM1Y3LjMzMzM0QzcuMzMzMzMgNy4xNTY1MyA3LjI2MzEgNi45ODY5NiA3LjEzODA3IDYuODYxOTNDNy4wMTMwNSA2LjczNjkxIDYuODQzNDggNi42NjY2NyA2LjY2NjY3IDYuNjY2NjdDNi40ODk4NiA2LjY2NjY3IDYuMzIwMjkgNi43MzY5MSA2LjE5NTI2IDYuODYxOTNDNi4wNzAyNCA2Ljk4Njk2IDYgNy4xNTY1MyA2IDcuMzMzMzRWMTEuMzMzM0M2IDExLjUxMDEgNi4wNzAyNCAxMS42Nzk3IDYuMTk1MjYgMTEuODA0N0M2LjMyMDI5IDExLjkyOTggNi40ODk4NiAxMiA2LjY2NjY3IDEyWk0xMy4zMzMzIDRIMTAuNjY2N1YzLjMzMzM0QzEwLjY2NjcgMi44MDI5IDEwLjQ1NiAyLjI5NDIgMTAuMDgwOSAxLjkxOTEyQzkuNzA1ODEgMS41NDQwNSA5LjE5NzEgMS4zMzMzNCA4LjY2NjY3IDEuMzMzMzRINy4zMzMzM0M2LjgwMjkgMS4zMzMzNCA2LjI5NDE5IDEuNTQ0MDUgNS45MTkxMiAxLjkxOTEyQzUuNTQ0MDUgMi4yOTQyIDUuMzMzMzMgMi44MDI5IDUuMzMzMzMgMy4zMzMzNFY0SDIuNjY2NjdDMi40ODk4NiA0IDIuMzIwMjkgNC4wNzAyNCAyLjE5NTI2IDQuMTk1MjZDMi4wNzAyNCA0LjMyMDI5IDIgNC40ODk4NiAyIDQuNjY2NjdDMiA0Ljg0MzQ4IDIuMDcwMjQgNS4wMTMwNSAyLjE5NTI2IDUuMTM4MDdDMi4zMjAyOSA1LjI2MzEgMi40ODk4NiA1LjMzMzM0IDIuNjY2NjcgNS4zMzMzNEgzLjMzMzMzVjEyLjY2NjdDMy4zMzMzMyAxMy4xOTcxIDMuNTQ0MDUgMTMuNzA1OCAzLjkxOTEyIDE0LjA4MDlDNC4yOTQxOSAxNC40NTYgNC44MDI5IDE0LjY2NjcgNS4zMzMzMyAxNC42NjY3SDEwLjY2NjdDMTEuMTk3MSAxNC42NjY3IDExLjcwNTggMTQuNDU2IDEyLjA4MDkgMTQuMDgwOUMxMi40NTYgMTMuNzA1OCAxMi42NjY3IDEzLjE5NzEgMTIuNjY2NyAxMi42NjY3VjUuMzMzMzRIMTMuMzMzM0MxMy41MTAxIDUuMzMzMzQgMTMuNjc5NyA1LjI2MzEgMTMuODA0NyA1LjEzODA3QzEzLjkyOTggNS4wMTMwNSAxNCA0Ljg0MzQ4IDE0IDQuNjY2NjdDMTQgNC40ODk4NiAxMy45Mjk4IDQuMzIwMjkgMTMuODA0NyA0LjE5NTI2QzEzLjY3OTcgNC4wNzAyNCAxMy41MTAxIDQgMTMuMzMzMyA0Wk02LjY2NjY3IDMuMzMzMzRDNi42NjY2NyAzLjE1NjUyIDYuNzM2OSAyLjk4Njk2IDYuODYxOTMgMi44NjE5M0M2Ljk4Njk1IDIuNzM2OTEgNy4xNTY1MiAyLjY2NjY3IDcuMzMzMzMgMi42NjY2N0g4LjY2NjY3QzguODQzNDggMi42NjY2NyA5LjAxMzA1IDIuNzM2OTEgOS4xMzgwNyAyLjg2MTkzQzkuMjYzMSAyLjk4Njk2IDkuMzMzMzMgMy4xNTY1MiA5LjMzMzMzIDMuMzMzMzRWNEg2LjY2NjY3VjMuMzMzMzRaTTExLjMzMzMgMTIuNjY2N0MxMS4zMzMzIDEyLjg0MzUgMTEuMjYzMSAxMy4wMTMxIDExLjEzODEgMTMuMTM4MUMxMS4wMTMgMTMuMjYzMSAxMC44NDM1IDEzLjMzMzMgMTAuNjY2NyAxMy4zMzMzSDUuMzMzMzNDNS4xNTY1MiAxMy4zMzMzIDQuOTg2OTUgMTMuMjYzMSA0Ljg2MTkzIDEzLjEzODFDNC43MzY5IDEzLjAxMzEgNC42NjY2NyAxMi44NDM1IDQuNjY2NjcgMTIuNjY2N1Y1LjMzMzM0SDExLjMzMzNWMTIuNjY2N1pNOS4zMzMzMyAxMkM5LjUxMDE0IDEyIDkuNjc5NzEgMTEuOTI5OCA5LjgwNDc0IDExLjgwNDdDOS45Mjk3NiAxMS42Nzk3IDEwIDExLjUxMDEgMTAgMTEuMzMzM1Y3LjMzMzM0QzEwIDcuMTU2NTMgOS45Mjk3NiA2Ljk4Njk2IDkuODA0NzQgNi44NjE5M0M5LjY3OTcxIDYuNzM2OTEgOS41MTAxNCA2LjY2NjY3IDkuMzMzMzMgNi42NjY2N0M5LjE1NjUyIDYuNjY2NjcgOC45ODY5NSA2LjczNjkxIDguODYxOTMgNi44NjE5M0M4LjczNjkxIDYuOTg2OTYgOC42NjY2NyA3LjE1NjUzIDguNjY2NjcgNy4zMzMzNFYxMS4zMzMzQzguNjY2NjcgMTEuNTEwMSA4LjczNjkxIDExLjY3OTcgOC44NjE5MyAxMS44MDQ3QzguOTg2OTUgMTEuOTI5OCA5LjE1NjUyIDEyIDkuMzMzMzMgMTJaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+XFxuICAgICAgICAgPC9zdmc+XFxuICAgICAgICAgXCIuY29uY2F0KGluaXRpYWxUZXh0LCBcIlxcbiAgICAgIFwiKTtcbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlQnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgIGNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbChidXR0b24pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBGb3JtQnVpbGRlcjtcbn0oKSk7XG4oMCwganF1ZXJ5XzEuZGVmYXVsdCkoZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb3JtQnVpbGRlciA9IG5ldyBGb3JtQnVpbGRlcigpO1xuICAgIGZvcm1CdWlsZGVyLmFkZFdyYXBwZXIoKTtcbiAgICBkeW5hbWljRmllbGQuaGlkZVNob3dGb3JtRmllbGRzKCk7XG4gICAgZHluYW1pY0ZpZWxkLnVwZGF0ZUFjdGl2aXR5SWRlbnRpZmllcigpO1xuICAgIGZvcm1CdWlsZGVyLmFkZFRvQ29sbGVjdGlvbigpO1xuICAgIGZvcm1CdWlsZGVyLmRlbGV0ZUNvbGxlY3Rpb24oKTtcbiAgICAvKipcbiAgICAgKiBUZXh0IGFyZWEgaGVpZ2h0IG9uIHR5cGluZ1xuICAgICAqL1xuICAgIHZhciB0ZXh0QXJlYVRhcmdldCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgndGV4dGFyZWEuZm9ybV9faW5wdXQnKTtcbiAgICBpZiAodGV4dEFyZWFUYXJnZXQubGVuZ3RoID4gMCkge1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignaW5wdXQnLCAndGV4dGFyZWEuZm9ybV9faW5wdXQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGZvcm1CdWlsZGVyLnRleHRBcmVhSGVpZ2h0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdzZWxlY3QyOm9wZW4nLCAnLnNlbGVjdDInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZWxlY3Rfc2VhcmNoID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdDItc2VhcmNoX19maWVsZCcpO1xuICAgICAgICBpZiAoc2VsZWN0X3NlYXJjaCkge1xuICAgICAgICAgICAgc2VsZWN0X3NlYXJjaC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogY2hlY2tzIHJlZ2lzdHJhdGlvbiBhZ2VuY3ksIGNvdW50cnkgYW5kIHJlZ2lzdHJhdGlvbiBudW1iZXIgdG8gZGVkdWNlIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICB1cGRhdGVSZWdpc3RyYXRpb25BZ2VuY3koKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pemF0aW9uX2NvdW50cnknKSk7XG4gICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInKS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVJlZ2lzdHJhdGlvbkFnZW5jeShjb3VudHJ5KSB7XG4gICAgICAgIHZhciBlbmRwb2ludCA9IGNvdW50cnkudmFsKClcbiAgICAgICAgICAgID8gJy9vcmdhbmlzYXRpb24vYWdlbmN5LycgKyBjb3VudHJ5LnZhbCgpXG4gICAgICAgICAgICA6ICcvb3JnYW5pc2F0aW9uL2FnZW5jeS8nO1xuICAgICAgICBqcXVlcnlfMS5kZWZhdWx0LmFqYXgoeyB1cmw6IGVuZHBvaW50IH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudF92YWwgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeScpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgIHZhciB2YWwgPSBmYWxzZTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5JykuZW1wdHkoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhID09PSBjdXJyZW50X3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeScpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQobmV3IE9wdGlvbihyZXNwb25zZS5kYXRhW2RhdGFdLCBkYXRhLCB0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knKVxuICAgICAgICAgICAgICAgIC52YWwodmFsID8gY3VycmVudF92YWwgOiAnJylcbiAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignc2VsZWN0MjpzZWxlY3QnLCAnI29yZ2FuaXphdGlvbl9jb3VudHJ5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICB1cGRhdGVSZWdpc3RyYXRpb25BZ2VuY3koKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpKTtcbiAgICB9KTtcbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignc2VsZWN0MjpjbGVhcicsICcjb3JnYW5pemF0aW9uX2NvdW50cnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbkFnZW5jeSgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcykpO1xuICAgIH0pO1xuICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdzZWxlY3QyOnNlbGVjdCcsICcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpLnZhbCgpICsgJy0nICsgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjcmVnaXN0cmF0aW9uX251bWJlcicpLnZhbCgpO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNvcmdhbmlzYXRpb25faWRlbnRpZmllcicpLnZhbChpZGVudGlmaWVyKTtcbiAgICB9KTtcbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignc2VsZWN0MjpjbGVhcicsICcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gJy0nICsgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjcmVnaXN0cmF0aW9uX251bWJlcicpLnZhbCgpO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNvcmdhbmlzYXRpb25faWRlbnRpZmllcicpLnZhbChpZGVudGlmaWVyKTtcbiAgICB9KTtcbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbigna2V5dXAnLCAnI3JlZ2lzdHJhdGlvbl9udW1iZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knKS52YWwoKSArICctJyArICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS52YWwoKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInKS52YWwoaWRlbnRpZmllcik7XG4gICAgfSk7XG4gICAgLy8gYWRkIGNsYXNzIHRvIHRpdGxlIG9mIGNvbGxlY3Rpb24gd2hlbiB2YWxpZGF0aW9uIGVycm9yIG9jY3VycyBvbiBjb2xsZWN0aW9uIGxldmVsXG4gICAgdmFyIHN1YmVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3ViZWxlbWVudCcpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ViZWxlbWVudC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdGl0bGUgPSBzdWJlbGVtZW50W2ldLnF1ZXJ5U2VsZWN0b3IoJy5jb250cm9sLWxhYmVsJyk7XG4gICAgICAgIHZhciBlcnJvckNvbnRhaW5lciA9IHN1YmVsZW1lbnRbaV0ucXVlcnlTZWxlY3RvcignLmNvbGxlY3Rpb25fZXJyb3InKTtcbiAgICAgICAgdmFyIGNoaWxkQ291bnQgPSBlcnJvckNvbnRhaW5lciA9PT0gbnVsbCB8fCBlcnJvckNvbnRhaW5lciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JDb250YWluZXIuY2hpbGRFbGVtZW50Q291bnQ7XG4gICAgICAgIGlmIChjaGlsZENvdW50ICYmIGNoaWxkQ291bnQgPiAwKSB7XG4gICAgICAgICAgICB0aXRsZSA9PT0gbnVsbCB8fCB0aXRsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGl0bGUuY2xhc3NMaXN0LmFkZCgnZXJyb3ItdGl0bGUnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZGRpbmcgY3Vyc29yIG5vdCBhbGxvd2VkIHRvIDxzZWxlY3Q+IHdoZXJlIGVsZW1lbnRKc29uU2NoZW1hIHJlYWRfb25seSA6IHRydWVcbiAgICB2YXIgcmVhZE9ubHlTZWxlY3RzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0LmN1cnNvci1ub3QtYWxsb3dlZCcpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVhZE9ubHlTZWxlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWxlY3QgPSByZWFkT25seVNlbGVjdHNbaV07XG4gICAgICAgIHZhciBzZWxlY3RFbGVtZW50UGFyZW50V3JhcHBlciA9IHNlbGVjdC5uZXh0U2libGluZztcbiAgICAgICAgdmFyIHNlbGVjdEVsZW1lbnRQYXJlbnQgPSBzZWxlY3RFbGVtZW50UGFyZW50V3JhcHBlciA9PT0gbnVsbCB8fCBzZWxlY3RFbGVtZW50UGFyZW50V3JhcHBlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VsZWN0RWxlbWVudFBhcmVudFdyYXBwZXIuZmlyc3RDaGlsZDtcbiAgICAgICAgdmFyIHNlbGVjdEVsZW1lbnQgPSBzZWxlY3RFbGVtZW50UGFyZW50ID09PSBudWxsIHx8IHNlbGVjdEVsZW1lbnRQYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlbGVjdEVsZW1lbnRQYXJlbnQuZmlyc3RDaGlsZDtcbiAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ25vdC1hbGxvd2VkJztcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZWxldGUtcGFyZW50LXNlbGVjdG9yJyk7XG4gICAgZnVuY3Rpb24gY2hhbmdlRGVsZXRlQnV0dG9uSW5uZXJIdG1sKGJ1dHRvbikge1xuICAgICAgICB2YXIgaW5pdGlhbFRleHQgPSBlc2NhcGVIdG1sKGJ1dHRvbi50ZXh0Q29udGVudCk7XG4gICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBcIlxcbiAgICAgIDxzdmcgd2lkdGg9XFxcIjE2XFxcIiBoZWlnaHQ9XFxcIjE2XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+XFxuICAgICAgICA8cGF0aCBkPVxcXCJNNi42NjY2NyAxMkM2Ljg0MzQ4IDEyIDcuMDEzMDUgMTEuOTI5OCA3LjEzODA3IDExLjgwNDdDNy4yNjMxIDExLjY3OTcgNy4zMzMzMyAxMS41MTAxIDcuMzMzMzMgMTEuMzMzM1Y3LjMzMzM0QzcuMzMzMzMgNy4xNTY1MyA3LjI2MzEgNi45ODY5NiA3LjEzODA3IDYuODYxOTNDNy4wMTMwNSA2LjczNjkxIDYuODQzNDggNi42NjY2NyA2LjY2NjY3IDYuNjY2NjdDNi40ODk4NiA2LjY2NjY3IDYuMzIwMjkgNi43MzY5MSA2LjE5NTI2IDYuODYxOTNDNi4wNzAyNCA2Ljk4Njk2IDYgNy4xNTY1MyA2IDcuMzMzMzRWMTEuMzMzM0M2IDExLjUxMDEgNi4wNzAyNCAxMS42Nzk3IDYuMTk1MjYgMTEuODA0N0M2LjMyMDI5IDExLjkyOTggNi40ODk4NiAxMiA2LjY2NjY3IDEyWk0xMy4zMzMzIDRIMTAuNjY2N1YzLjMzMzM0QzEwLjY2NjcgMi44MDI5IDEwLjQ1NiAyLjI5NDIgMTAuMDgwOSAxLjkxOTEyQzkuNzA1ODEgMS41NDQwNSA5LjE5NzEgMS4zMzMzNCA4LjY2NjY3IDEuMzMzMzRINy4zMzMzM0M2LjgwMjkgMS4zMzMzNCA2LjI5NDE5IDEuNTQ0MDUgNS45MTkxMiAxLjkxOTEyQzUuNTQ0MDUgMi4yOTQyIDUuMzMzMzMgMi44MDI5IDUuMzMzMzMgMy4zMzMzNFY0SDIuNjY2NjdDMi40ODk4NiA0IDIuMzIwMjkgNC4wNzAyNCAyLjE5NTI2IDQuMTk1MjZDMi4wNzAyNCA0LjMyMDI5IDIgNC40ODk4NiAyIDQuNjY2NjdDMiA0Ljg0MzQ4IDIuMDcwMjQgNS4wMTMwNSAyLjE5NTI2IDUuMTM4MDdDMi4zMjAyOSA1LjI2MzEgMi40ODk4NiA1LjMzMzM0IDIuNjY2NjcgNS4zMzMzNEgzLjMzMzMzVjEyLjY2NjdDMy4zMzMzMyAxMy4xOTcxIDMuNTQ0MDUgMTMuNzA1OCAzLjkxOTEyIDE0LjA4MDlDNC4yOTQxOSAxNC40NTYgNC44MDI5IDE0LjY2NjcgNS4zMzMzMyAxNC42NjY3SDEwLjY2NjdDMTEuMTk3MSAxNC42NjY3IDExLjcwNTggMTQuNDU2IDEyLjA4MDkgMTQuMDgwOUMxMi40NTYgMTMuNzA1OCAxMi42NjY3IDEzLjE5NzEgMTIuNjY2NyAxMi42NjY3VjUuMzMzMzRIMTMuMzMzM0MxMy41MTAxIDUuMzMzMzQgMTMuNjc5NyA1LjI2MzEgMTMuODA0NyA1LjEzODA3QzEzLjkyOTggNS4wMTMwNSAxNCA0Ljg0MzQ4IDE0IDQuNjY2NjdDMTQgNC40ODk4NiAxMy45Mjk4IDQuMzIwMjkgMTMuODA0NyA0LjE5NTI2QzEzLjY3OTcgNC4wNzAyNCAxMy41MTAxIDQgMTMuMzMzMyA0Wk02LjY2NjY3IDMuMzMzMzRDNi42NjY2NyAzLjE1NjUyIDYuNzM2OSAyLjk4Njk2IDYuODYxOTMgMi44NjE5M0M2Ljk4Njk1IDIuNzM2OTEgNy4xNTY1MiAyLjY2NjY3IDcuMzMzMzMgMi42NjY2N0g4LjY2NjY3QzguODQzNDggMi42NjY2NyA5LjAxMzA1IDIuNzM2OTEgOS4xMzgwNyAyLjg2MTkzQzkuMjYzMSAyLjk4Njk2IDkuMzMzMzMgMy4xNTY1MiA5LjMzMzMzIDMuMzMzMzRWNEg2LjY2NjY3VjMuMzMzMzRaTTExLjMzMzMgMTIuNjY2N0MxMS4zMzMzIDEyLjg0MzUgMTEuMjYzMSAxMy4wMTMxIDExLjEzODEgMTMuMTM4MUMxMS4wMTMgMTMuMjYzMSAxMC44NDM1IDEzLjMzMzMgMTAuNjY2NyAxMy4zMzMzSDUuMzMzMzNDNS4xNTY1MiAxMy4zMzMzIDQuOTg2OTUgMTMuMjYzMSA0Ljg2MTkzIDEzLjEzODFDNC43MzY5IDEzLjAxMzEgNC42NjY2NyAxMi44NDM1IDQuNjY2NjcgMTIuNjY2N1Y1LjMzMzM0SDExLjMzMzNWMTIuNjY2N1pNOS4zMzMzMyAxMkM5LjUxMDE0IDEyIDkuNjc5NzEgMTEuOTI5OCA5LjgwNDc0IDExLjgwNDdDOS45Mjk3NiAxMS42Nzk3IDEwIDExLjUxMDEgMTAgMTEuMzMzM1Y3LjMzMzM0QzEwIDcuMTU2NTMgOS45Mjk3NiA2Ljk4Njk2IDkuODA0NzQgNi44NjE5M0M5LjY3OTcxIDYuNzM2OTEgOS41MTAxNCA2LjY2NjY3IDkuMzMzMzMgNi42NjY2N0M5LjE1NjUyIDYuNjY2NjcgOC45ODY5NSA2LjczNjkxIDguODYxOTMgNi44NjE5M0M4LjczNjkxIDYuOTg2OTYgOC42NjY2NyA3LjE1NjUzIDguNjY2NjcgNy4zMzMzNFYxMS4zMzMzQzguNjY2NjcgMTEuNTEwMSA4LjczNjkxIDExLjY3OTcgOC44NjE5MyAxMS44MDQ3QzguOTg2OTUgMTEuOTI5OCA5LjE1NjUyIDEyIDkuMzMzMzMgMTJaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+XFxuICAgICAgPC9zdmc+XFxuICAgICAgXCIuY29uY2F0KGluaXRpYWxUZXh0KTtcbiAgICB9XG4gICAgZGVsZXRlQnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHsgcmV0dXJuIGNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbChidXR0b24pOyB9KTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkge1xuICAgICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goZnVuY3Rpb24gKG11dGF0aW9uKSB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubWF0Y2hlcygnLmRlbGV0ZS1pdGVtLXNlbGVjdG9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZWxldGVCdXR0b25Jbm5lckh0bWwobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3RGVsZXRlQnV0dG9ucyA9IG5vZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbGV0ZS1pdGVtLXNlbGVjdG9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVsZXRlQnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbChidXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBkb2VzIHR3byBtYWluIHRoaW5nczpcbiAgICAgKlxuICAgICAqIDEuIEFkZHMgYSBjbGljayBldmVudCBsaXN0ZW5lciB0byB0aGUgYnV0dG9uIHRvIGNvbnRyb2wgdGhlIGNvbGxhcHNpYmxlIGZsb3c6XG4gICAgICogICAgLSBJdCBmaW5kcyB0aGUgY2xvc2VzdCA8bGFiZWw+IGVsZW1lbnQgcmVsYXRlZCB0byB0aGUgYnV0dG9uLlxuICAgICAqICAgIC0gV2l0aGluIHRoYXQgPGxhYmVsPiwgaXQgbG9va3MgZm9yIGFuIGVsZW1lbnQgd2l0aCB0aGUgY2xhc3MgJ29wdGlvbmFsLXRleHQnLiBJZiBpdCBmaW5kcyAnb3B0aW9uYWwtdGV4dCcsIGl0IHRvZ2dsZXMgaG93IHRoYXQgdGV4dCBpcyBkaXNwbGF5ZWQgKGVpdGhlciB3aXRoIGJyYWNrZXRzIG9yIGFuIGljb24pLlxuICAgICAqICAgIC0gSXQgYWxzbyBsb2NhdGVzIHRoZSBuZWFyZXN0IHBhcmVudCBlbGVtZW50IHdpdGggdGhlIGNsYXNzZXMgJ3N1YmVsZW1lbnQgcm91bmRlZC10LXNtJy4gSWYgdGhhdCBwYXJlbnQgc3ViZWxlbWVudCBleGlzdHMsIGl0IHRvZ2dsZXMgaXRzIHN0YXRlIHRvIGVpdGhlciBjb2xsYXBzZSBvciBleHBhbmQgdGhlIGZvcm0gc2VjdGlvbi5cbiAgICAgKiAgICAtIEZpbmFsbHksIGl0IHJvdGF0ZXMgdGhlIGNvbGxhcHNlIGJ1dHRvbiBlYWNoIHRpbWUgaXTigJlzIGNsaWNrZWQuXG4gICAgICpcbiAgICAgKiAyLiBJdCB0cmlnZ2VycyB0aGUgYnV0dG9uIGNsaWNrIGV2ZW50IGlmIHRoZSBzdWJlbGVtZW50IGlzIG9wdGlvbmFsIHVzaW5nIHRoZSBmbGFnOiB0aGlzQnV0dG9uQmVsb25nc1RvT3B0aW9uYWxGb3JtLlxuICAgICAqICAgIFRoaXMgZW5zdXJlcyBvcHRpb25hbCBmb3JtcyBzdGFydCBvZmYgY29sbGFwc2VkIGJ5IGRlZmF1bHQgd2hlbiByZW5kZXJlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBidXR0b24gLSBUaGUgYnV0dG9uIGVsZW1lbnQgdGhhdCBtYW5hZ2VzIHRoZSBjb2xsYXBzaWJsZSBmb3JtIHNlY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXR0YWNoQ29sbGFwc2FibGVCdXR0b25FdmVudHMoYnV0dG9uKSB7XG4gICAgICAgIHZhciBsYWJlbCA9IGdldENsb3Nlc3RMYWJlbERvbShidXR0b24pO1xuICAgICAgICB2YXIgb3B0aW9uYWxMYWJlbCA9IGxhYmVsID8gZ2V0T3B0aW9uYWxUZXh0RG9tKGxhYmVsKSA6IG51bGw7XG4gICAgICAgIHZhciBzdWJlbGVtZW50ID0gbGFiZWwgPyBnZXRDbG9zZXN0UGFyZW50U3ViZWxlbWVudERvbShsYWJlbCkgOiBudWxsO1xuICAgICAgICB2YXIgdGhpc0J1dHRvbkJlbG9uZ3NUb09wdGlvbmFsRm9ybSA9IG9wdGlvbmFsTGFiZWwgIT09IG51bGw7XG4gICAgICAgIGNvbnNvbGUubG9nKHN1YmVsZW1lbnQpO1xuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uYWxMYWJlbCkge1xuICAgICAgICAgICAgICAgIHRvZ2dsZU9wdGlvbmFsVGV4dChvcHRpb25hbExhYmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQWNjb3JkaW9uSXRlbXMoc3ViZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgncm90YXRlLTE4MCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2codGhpc0J1dHRvbkJlbG9uZ3NUb09wdGlvbmFsRm9ybSwgIWVycm9yTWVzc2FnZUV4aXN0cyhzdWJlbGVtZW50KSk7XG4gICAgICAgIGlmICh0aGlzQnV0dG9uQmVsb25nc1RvT3B0aW9uYWxGb3JtICYmICFlcnJvck1lc3NhZ2VFeGlzdHMoc3ViZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGJ1dHRvbi5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGFueSBlcnJvciBtZXNzYWdlIGV4aXN0cyBpbiB0aGUgc3ViZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWJlbGVtZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gZXJyb3JNZXNzYWdlRXhpc3RzKHN1YmVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGVycm9yRGl2cyA9IHN1YmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yJyk7XG4gICAgICAgIHZhciBlcnJvclRleHRzID0gc3ViZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGV4dC1kYW5nZXItZXJyb3InKTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBlcnJvckRpdnNfMSA9IGVycm9yRGl2czsgX2kgPCBlcnJvckRpdnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBkaXYgPSBlcnJvckRpdnNfMVtfaV07XG4gICAgICAgICAgICBpZiAoZGl2LnRleHRDb250ZW50LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBfYSA9IDAsIGVycm9yVGV4dHNfMSA9IGVycm9yVGV4dHM7IF9hIDwgZXJyb3JUZXh0c18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICAgICAgdmFyIGRpdiA9IGVycm9yVGV4dHNfMVtfYV07XG4gICAgICAgICAgICBpZiAoZGl2LnRleHRDb250ZW50LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY2xvc2VzdCA8bGFiZWw+IGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnV0dG9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0Q2xvc2VzdExhYmVsRG9tKGJ1dHRvbikge1xuICAgICAgICByZXR1cm4gYnV0dG9uLmNsb3Nlc3QoJ2xhYmVsJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY2xvc2VzdCBlbGVtZW50IHdpdGggY2xhc3MgJ29wdGlvbmFsLXRleHQnLlxuICAgICAqXG4gICAgICogQHBhcmFtIGxhYmVsXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0T3B0aW9uYWxUZXh0RG9tKGxhYmVsKSB7XG4gICAgICAgIHJldHVybiBsYWJlbC5xdWVyeVNlbGVjdG9yKCcub3B0aW9uYWwtdGV4dCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBOdGggcGFyZW50IHRoYXQgaGFzIGNsYXNzICdzdWJlbGVtZW50Jy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBsYWJlbFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldENsb3Nlc3RQYXJlbnRTdWJlbGVtZW50RG9tKGxhYmVsKSB7XG4gICAgICAgIHJldHVybiBsYWJlbC5jbG9zZXN0KCcuc3ViZWxlbWVudC5yb3VuZGVkLXQtc20nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB3aGF0IGlzIHJlbmRlcmVkIG9uIG9wdGlvbmFsIHRleHQuIChkb3Qgb3IgYnJhY2tldClcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25hbExhYmVsXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9nZ2xlT3B0aW9uYWxUZXh0KG9wdGlvbmFsTGFiZWwpIHtcbiAgICAgICAgdmFyIG9wdGlvbmFsTGFiZWxXaXRoU3ZnID0gJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiA5YTEuODcgMS44NyAwIDEgMCAzLjc0IDBBMS44NyAxLjg3IDAgMCAwIDYgOVpcIiBmaWxsPVwiIzY4Nzk3RVwiPjwvcGF0aD48L3N2Zz48c3Bhbj5PcHRpb25hbDwvc3Bhbj4nO1xuICAgICAgICB2YXIgb3B0aW9uYWxMYWJlbFdpdGhCcmFja2V0cyA9ICc8c3Bhbj4oIE9wdGlvbmFsICk8L3NwYW4+JztcbiAgICAgICAgdmFyIHN2Z0V4aXN0cyA9IG9wdGlvbmFsTGFiZWwucXVlcnlTZWxlY3Rvcignc3ZnJykgIT09IG51bGw7XG4gICAgICAgIGlmIChzdmdFeGlzdHMpIHtcbiAgICAgICAgICAgIG9wdGlvbmFsTGFiZWwuaW5uZXJIVE1MID0gb3B0aW9uYWxMYWJlbFdpdGhCcmFja2V0cztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbmFsTGFiZWwuaW5uZXJIVE1MID0gb3B0aW9uYWxMYWJlbFdpdGhTdmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyBjb2xsYXBzZWQgc3RhdGUuIChleHBhbmQgb3IgY29sbGFwc2VkKVxuICAgICAqXG4gICAgICogS2V5IGNvbnNpZGVyYXRpb25zOlxuICAgICAqIDEuIFRoZSBcIkFkZCBBZGRpdGlvbmFsXCIgYnV0dG9uIGNhbiBiZSBlaXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgdGhlIHN1YmVsZW1lbnQuXG4gICAgICogMi4gV2hlbiB0aGUgYnV0dG9uIGlzIG91dHNpZGUsIGl0IHdpbGwgYWx3YXlzIGJlIHRoZSBpbW1lZGlhdGUgc2libGluZyB0byB0aGUgc3ViZWxlbWVudC5cbiAgICAgKiAzLiBUaGUgY29sbGFwc2UgbWVjaGFuaXNtIGlzIGhhbmRsZWQgYnkgYWRqdXN0aW5nIHRoZSBtYXggaGVpZ2h0IHRvIGdpdmUgdGhlIGlsbHVzaW9uIG9mIHNsaWRpbmcgdXAuXG4gICAgICogNC4gSWYgdGhlIGJ1dHRvbiBpcyBvdXRzaWRlIHRoZSBzdWJlbGVtZW50LCB0aGUgc2xpZGUtdXAgZWZmZWN0IHdpbGwgbm90IGFmZmVjdCB0aGUgYnV0dG9uLlxuICAgICAqICAgIFRoZXJlZm9yZSwgd2UgdG9nZ2xlIHRoZSAnZGlzcGxheS1ub25lJyBjbGFzcyB0byBjb250cm9sIGl0cyB2aXNpYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN1YmVsZW1lbnRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b2dnbGVBY2NvcmRpb25JdGVtcyhzdWJlbGVtZW50KSB7XG4gICAgICAgIGZ1bmN0aW9uIGlzQWRkQWRkaXRpb25hbEJ1dHRvbk91dHNpZGUoc3ViZWxlbWVudCkge1xuICAgICAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gc3ViZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmcudGFnTmFtZSA9PT0gJ0JVVFRPTicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG5leHRTaWJsaW5nLmNsYXNzTGlzdC5jb250YWlucygnYWRkX21vcmUnKSAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0U2libGluZy5jbGFzc0xpc3QuY29udGFpbnMoJ2J1dHRvbicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGlkZWFibGVTdWJlbGVtZW50cyA9IF9fc3ByZWFkQXJyYXkoW10sIHN1YmVsZW1lbnQuY2hpbGRyZW4sIHRydWUpLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNoaWxkLnRhZ05hbWUgIT09ICdMQUJFTCc7IH0pO1xuICAgICAgICB2YXIgb3V0c2lkZUJ1dHRvbiA9IG51bGw7XG4gICAgICAgIHZhciBoYXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSA9IGlzQWRkQWRkaXRpb25hbEJ1dHRvbk91dHNpZGUoc3ViZWxlbWVudCk7XG4gICAgICAgIGlmIChoYXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSkge1xuICAgICAgICAgICAgb3V0c2lkZUJ1dHRvbiA9IHN1YmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG91dHNpZGVCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBvdXRzaWRlQnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoJ2Rpc3BsYXktbm9uZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGhpZGVhYmxlU3ViZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmIChoYXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSAmJiBvdXRzaWRlQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgc3ViZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdtYi02Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdoZWlnaHQtaGlkZScpKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LnJlbW92ZSgnaGVpZ2h0LWhpZGUnKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCdoZWlnaHQtc2hvdycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LnJlbW92ZSgnaGVpZ2h0LXNob3cnKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCdoZWlnaHQtaGlkZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBmb3JtcyByZW5kZXJlZCBvbiBpbml0aWFsIHBhZ2UgbG9hZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhdHRhY2hJbml0aWFsQ29sbGFwc2FibGVCdXR0b25FdmVudHMoKSB7XG4gICAgICAgIHZhciBhbGxDb2xsYXBzYWJsZUJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29sbGFwc2FibGUtYnV0dG9uJyk7XG4gICAgICAgIGFsbENvbGxhcHNhYmxlQnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgIHJldHVybiBhdHRhY2hDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cyhidXR0b24pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBmb3JtcyByZW5kZXJlZCBvbiBjbGlja2luZyAnQUREIEFERElUSU9OQUwgWCcgYnV0dG9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9ic2VydmVOZXdDb2xsYXBzYWJsZUJ1dHRvbnMoKSB7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnNMaXN0KSB7XG4gICAgICAgICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goZnVuY3Rpb24gKG11dGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdDb2xsYXBzYWJsZUJ1dHRvbnMgPSBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2xsYXBzYWJsZS1idXR0b24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb2xsYXBzYWJsZUJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2hDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cyhidXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gICAgfVxuICAgIGF0dGFjaEluaXRpYWxDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cygpO1xuICAgIG9ic2VydmVOZXdDb2xsYXBzYWJsZUJ1dHRvbnMoKTtcbn0pO1xuZnVuY3Rpb24gZXNjYXBlSHRtbCh1bnNhZmUpIHtcbiAgICByZXR1cm4gdW5zYWZlXG4gICAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICAgICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAgIC5yZXBsYWNlKC8nL2csICcmIzAzOTsnKTtcbn1cbiJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJEeW5hbWljRmllbGQiLCJqcXVlcnlfMSIsInJlcXVpcmUiLCJwcm90b3R5cGUiLCJoaWRlU2hvd0Zvcm1GaWVsZHMiLCJodW1hbml0YXJpYW5TY29wZUhpZGVWb2NhYnVsYXJ5VXJpIiwiY291bnRyeUJ1ZGdldEhpZGVDb2RlRmllbGQiLCJhaWRUeXBlVm9jYWJ1bGFyeUhpZGVGaWVsZCIsInNlY3RvclZvY2FidWxhcnlIaWRlRmllbGQiLCJwb2xpY3lWb2NhYnVsYXJ5SGlkZUZpZWxkIiwicmVjaXBpZW50Vm9jYWJ1bGFyeUhpZGVGaWVsZCIsInRhZ1ZvY2FidWxhcnlIaWRlRmllbGQiLCJ0cmFuc2FjdGlvbkFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkIiwiaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkVXJpIiwiX3RoaXMiLCJodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkiLCJsZW5ndGgiLCJlYWNoIiwiaW5kZXgiLCJzY29wZSIsIl9hIiwidmFsIiwiaGlkZUh1bWFuaXRhcmlhblNjb3BlRmllbGQiLCJ0b1N0cmluZyIsIm9uIiwiZSIsInBhcmFtcyIsImRhdGEiLCJpZCIsInRhcmdldCIsImNsb3Nlc3QiLCJmaW5kIiwic2hvdyIsInJlbW92ZUF0dHIiLCJ0cmlnZ2VyIiwiaGlkZSIsImF0dHIiLCJyZWZlcmVuY2VWb2NhYnVsYXJ5IiwiaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkIiwicmVmZXJlbmNlVXJpIiwiY291bnRyeUJ1ZGdldFZvY2FidWxhcnkiLCJoaWRlQ291bnRyeUJ1ZGdldEZpZWxkIiwiY291bnRyeUJ1ZGdldENvZGVJbnB1dCIsImNvdW50cnlCdWRnZXRDb2RlU2VsZWN0IiwiYWlkdHlwZV92b2NhYnVsYXJ5IiwiaXRlbSIsImhpZGVBaWRUeXBlU2VsZWN0RmllbGQiLCJoaWRlVHJhbnNhY3Rpb25BaWRUeXBlU2VsZWN0RmllbGQiLCJkZWZhdWx0X2FpZF90eXBlIiwiZWFybWFya2luZ19jYXRlZ29yeSIsImVhcm1hcmtpbmdfbW9kYWxpdHkiLCJjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMiLCJjYXNlMSIsImNhc2UyIiwiY2FzZTMiLCJjYXNlNCIsImFpZF90eXBlIiwicG9saWN5bWFrZXJfdm9jYWJ1bGFyeSIsInBvbGljeV9tYXJrZXIiLCJoaWRlUG9saWN5TWFrZXJGaWVsZCIsImNhc2UxX3Nob3ciLCJjYXNlMl9zaG93Iiwic2VjdG9yX3ZvY2FidWxhcnkiLCJzZWN0b3IiLCJoaWRlU2VjdG9yRmllbGQiLCJjYXNlN19zaG93IiwiY2FzZThfc2hvdyIsImNhc2U5OF85OV9zaG93IiwiZGVmYXVsdF9zaG93IiwiY2FzZTciLCJjYXNlOCIsImNhc2U5OF85OSIsImRlZmF1bHRfaGlkZSIsInJlZ2lvbl92b2NhYnVsYXJ5IiwicmVnaW9uX3ZvY2FiIiwiaGlkZVJlY2lwaWVudFJlZ2lvbkZpZWxkIiwiY2FzZTk5X3Nob3ciLCJjYXNlOTkiLCJ1cGRhdGVBY3Rpdml0eUlkZW50aWZpZXIiLCJhY3Rpdml0eV9pZGVudGlmaWVyIiwiY29uY2F0IiwidGFnX3ZvY2FidWxhcnkiLCJ0YWciLCJoaWRlVGFnRmllbGQiLCJjYXNlM19zaG93IiwiX19zcHJlYWRBcnJheSIsInRvIiwiZnJvbSIsInBhY2siLCJhcmd1bWVudHMiLCJpIiwibCIsImFyIiwiQXJyYXkiLCJzbGljZSIsImNhbGwiLCJheGlvc18xIiwiRHluYW1pY0ZpZWxkXzEiLCJkeW5hbWljRmllbGQiLCJGb3JtQnVpbGRlciIsImFkZEZvcm0iLCJldiIsInByZXZlbnREZWZhdWx0IiwiY29udGFpbmVyIiwiY291bnQiLCJwYXJzZUludCIsInBhcmVudCIsInBhcmVudF9jb3VudCIsInBhcmVudHMiLCJ3cmFwcGVyX3BhcmVudF9jb3VudCIsInByb3RvIiwicmVwbGFjZSIsInByZXYiLCJhcHBlbmQiLCJjaGlsZHJlbiIsImxhc3QiLCJzZWxlY3QyIiwicGxhY2Vob2xkZXIiLCJhbGxvd0NsZWFyIiwid3JhcEFsbCIsImFkZFBhcmVudEZvcm0iLCJhZGRXcmFwcGVyT25BZGQiLCJkZWxldGVGb3JtIiwiY29sbGVjdGlvbkxlbmd0aCIsInRnIiwibmV4dCIsInJlbW92ZSIsImRlbGV0ZVBhcmVudEZvcm0iLCJhZGRXcmFwcGVyIiwiZm9ybUZpZWxkIiwidGV4dEFyZWFIZWlnaHQiLCJoZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJjc3MiLCJhZGRUb0NvbGxlY3Rpb24iLCJldmVudCIsImhhc0NsYXNzIiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlRGVsZXRlUGFyZW50QnV0dG9ucyIsImRlbGV0ZUNvbGxlY3Rpb24iLCJkZWxldGVDb25maXJtYXRpb24iLCJjYW5jZWxQb3B1cCIsImRlbGV0ZUNvbmZpcm0iLCJkZWxldGVJbmRleCIsImNoaWxkT3JQYXJlbnQiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZGVsZXRlQnV0dG9uIiwibXVsdGlGb3JtIiwiYmFja2dyb3VuZCIsIm91dGxpbmUiLCJmaWxlUGF0aCIsImRvY3VtZW50IiwidXJsIiwiZ2V0IiwidGhlbiIsInJlc3BvbnNlIiwic3VjY2VzcyIsImZvcm1hdCIsIm1pbWV0eXBlIiwibWVzc2FnZSIsImZpbGVVcmwiLCJkZWxldGVCdXR0b25zIiwicXVlcnlTZWxlY3RvckFsbCIsImNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbCIsImJ1dHRvbiIsImluaXRpYWxUZXh0IiwiZXNjYXBlSHRtbCIsInRleHRDb250ZW50IiwiaW5uZXJIVE1MIiwiZm9yRWFjaCIsImZvcm1CdWlsZGVyIiwidGV4dEFyZWFUYXJnZXQiLCJzZWxlY3Rfc2VhcmNoIiwicXVlcnlTZWxlY3RvciIsImZvY3VzIiwidXBkYXRlUmVnaXN0cmF0aW9uQWdlbmN5IiwiY291bnRyeSIsImVuZHBvaW50IiwiYWpheCIsImN1cnJlbnRfdmFsIiwiZW1wdHkiLCJPcHRpb24iLCJpZGVudGlmaWVyIiwic3ViZWxlbWVudCIsInRpdGxlIiwiZXJyb3JDb250YWluZXIiLCJjaGlsZENvdW50IiwiY2hpbGRFbGVtZW50Q291bnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZWFkT25seVNlbGVjdHMiLCJzZWxlY3QiLCJzZWxlY3RFbGVtZW50UGFyZW50V3JhcHBlciIsIm5leHRTaWJsaW5nIiwic2VsZWN0RWxlbWVudFBhcmVudCIsImZpcnN0Q2hpbGQiLCJzZWxlY3RFbGVtZW50Iiwic3R5bGUiLCJjdXJzb3IiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnNMaXN0IiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwibm9kZSIsIkVsZW1lbnQiLCJtYXRjaGVzIiwibmV3RGVsZXRlQnV0dG9ucyIsIm9ic2VydmUiLCJib2R5IiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImF0dGFjaENvbGxhcHNhYmxlQnV0dG9uRXZlbnRzIiwibGFiZWwiLCJnZXRDbG9zZXN0TGFiZWxEb20iLCJvcHRpb25hbExhYmVsIiwiZ2V0T3B0aW9uYWxUZXh0RG9tIiwiZ2V0Q2xvc2VzdFBhcmVudFN1YmVsZW1lbnREb20iLCJ0aGlzQnV0dG9uQmVsb25nc1RvT3B0aW9uYWxGb3JtIiwiY29uc29sZSIsImxvZyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0b2dnbGVPcHRpb25hbFRleHQiLCJ0b2dnbGVBY2NvcmRpb25JdGVtcyIsInRvZ2dsZSIsImVycm9yTWVzc2FnZUV4aXN0cyIsImNsaWNrIiwiZXJyb3JEaXZzIiwiZXJyb3JUZXh0cyIsIl9pIiwiZXJyb3JEaXZzXzEiLCJkaXYiLCJ0cmltIiwiZXJyb3JUZXh0c18xIiwib3B0aW9uYWxMYWJlbFdpdGhTdmciLCJvcHRpb25hbExhYmVsV2l0aEJyYWNrZXRzIiwic3ZnRXhpc3RzIiwiaXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSIsIm5leHRFbGVtZW50U2libGluZyIsInRhZ05hbWUiLCJjb250YWlucyIsImhpZGVhYmxlU3ViZWxlbWVudHMiLCJmaWx0ZXIiLCJjaGlsZCIsIm91dHNpZGVCdXR0b24iLCJoYXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSIsImF0dGFjaEluaXRpYWxDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cyIsImFsbENvbGxhcHNhYmxlQnV0dG9ucyIsIm9ic2VydmVOZXdDb2xsYXBzYWJsZUJ1dHRvbnMiLCJ0eXBlIiwiSFRNTEVsZW1lbnQiLCJuZXdDb2xsYXBzYWJsZUJ1dHRvbnMiLCJ1bnNhZmUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RixLQUFLLENBQUMsQ0FBQyxDQUFDUyxXQUFXLENBQUNQLENBQUMsQ0FBQztFQUMxQixDQUFDLENBQ0QsT0FBT3pPLENBQUMsRUFBRSxDQUFFO0VBQUUsT0FBT3lPLENBQUM7QUFBRTtBQUN4QjtBQUNBTSxLQUFLLENBQUMsQ0FBQztBQUNQLFNBQVNFLEtBQUtBLENBQUNSLENBQUMsRUFBRXhLLENBQUMsRUFBRTtFQUFFLElBQUk7SUFDdkJzSyxLQUFLLENBQUMsQ0FBQyxDQUFDVyxjQUFjLENBQUNULENBQUMsRUFBRXhLLENBQUMsQ0FBQztFQUNoQyxDQUFDLENBQ0QsT0FBT2pFLENBQUMsRUFBRSxDQUFFO0VBQUUsT0FBT3lPLENBQUM7QUFBRTtBQUN4QjtBQUNBUSxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvc2NyaXB0cy9EeW5hbWljRmllbGQudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zY3JpcHRzL2Zvcm1idWlsZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5EeW5hbWljRmllbGQgPSB2b2lkIDA7XG52YXIganF1ZXJ5XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImpxdWVyeVwiKSk7XG5yZXF1aXJlKFwic2VsZWN0MlwiKTtcbnZhciBEeW5hbWljRmllbGQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRHluYW1pY0ZpZWxkKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWRlIGFuZCBTaG93IGRpZmZlcmVudCBmb3JtIGZpZWxkcyBiYXNlZCBvbiB2b2NhYnVsYXJ5IGFuZCBvdGhlciB0eXBlc1xuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuaGlkZVNob3dGb3JtRmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkoKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5QnVkZ2V0SGlkZUNvZGVGaWVsZCgpO1xuICAgICAgICB0aGlzLmFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIHRoaXMuc2VjdG9yVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICB0aGlzLnBvbGljeVZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgdGhpcy5yZWNpcGllbnRWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIHRoaXMuc2VjdG9yVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICB0aGlzLnRhZ1ZvY2FidWxhcnlIaWRlRmllbGQoKTtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkVXJpKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIdW1hbml0YXJpYW4gU2NvcGUgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5odW1hbml0YXJpYW5TY29wZUhpZGVWb2NhYnVsYXJ5VXJpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWRePVwiaHVtYW5pdGFyaWFuX3Njb3BlXCJdW2lkKj1cIlt2b2NhYnVsYXJ5XVwiXScpO1xuICAgICAgICBpZiAoaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGhpZGUgZmllbGRzIG9uIHBhZ2UgbG9hZFxuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKGh1bWFuaXRhcmlhblNjb3BlVm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCBzY29wZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHNjb3BlKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUh1bWFuaXRhcmlhblNjb3BlRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHNjb3BlKSwgdmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgZmllbGRzIG9uIHZhbHVlIGNoYW5nZVxuICAgICAgICAgICAgaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUh1bWFuaXRhcmlhblNjb3BlRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGluZGV4KSwgdmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaGlkZS9zaG93IGZpZWxkcyBvbiB2YWx1ZSBjbGVhclxuICAgICAgICAgICAgaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlSHVtYW5pdGFyaWFuU2NvcGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaW5kZXgpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gaGlkZSBjb3VudHJ5IGJ1ZGdldCBiYXNlZCBvbiB2b2NhYnVsYXJ5XG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlSHVtYW5pdGFyaWFuU2NvcGVGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkgPSAnaW5wdXRbaWRePVwiaHVtYW5pdGFyaWFuX3Njb3BlXCJdW2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0nO1xuICAgICAgICBpZiAodmFsdWUgPT09ICc5OScpIHtcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAuZmluZChodW1hbml0YXJpYW5TY29wZUhpZGVWb2NhYnVsYXJ5VXJpKVxuICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAuZmluZChodW1hbml0YXJpYW5TY29wZUhpZGVWb2NhYnVsYXJ5VXJpKVxuICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBIdW1hbml0YXJpYW4gU2NvcGUgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGRVcmkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByZWZlcmVuY2VWb2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWRePVwicmVmZXJlbmNlXCJdW2lkKj1cIlt2b2NhYnVsYXJ5XVwiXScpO1xuICAgICAgICBpZiAocmVmZXJlbmNlVm9jYWJ1bGFyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBoaWRlIGZpZWxkcyBvbiBwYWdlIGxvYWRcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaChyZWZlcmVuY2VWb2NhYnVsYXJ5LCBmdW5jdGlvbiAoaW5kZXgsIHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoc2NvcGUpLnZhbCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICBfdGhpcy5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHNjb3BlKSwgdmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgZmllbGRzIG9uIHZhbHVlIGNoYW5nZVxuICAgICAgICAgICAgcmVmZXJlbmNlVm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmluZGljYXRvclJlZmVyZW5jZUhpZGVGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaW5kZXgpLCB2YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgZmllbGRzIG9uIHZhbHVlIGNsZWFyXG4gICAgICAgICAgICByZWZlcmVuY2VWb2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5pbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGluZGV4KSwgJycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIGhpZGUgY291bnRyeSBidWRnZXQgYmFzZWQgb24gdm9jYWJ1bGFyeVxuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB2YXIgcmVmZXJlbmNlVXJpID0gJ2lucHV0W2lkXj1cInJlZmVyZW5jZVwiXVtpZCo9XCJbaW5kaWNhdG9yX3VyaV1cIl0nO1xuICAgICAgICBpZiAodmFsdWUgPT09ICc5OScpIHtcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAuZmluZChyZWZlcmVuY2VVcmkpXG4gICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgIC5maW5kKHJlZmVyZW5jZVVyaSlcbiAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQ291bnRyeSBCdWRnZXQgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgc2hvdy9oaWRlICdjb2RlJyBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5jb3VudHJ5QnVkZ2V0SGlkZUNvZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgY291bnRyeUJ1ZGdldFZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdCNjb3VudHJ5X2J1ZGdldF92b2NhYnVsYXJ5Jyk7XG4gICAgICAgIGlmIChjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgb24gcGFnZSBsb2FkXG4gICAgICAgICAgICB2YXIgdmFsID0gKF9hID0gY291bnRyeUJ1ZGdldFZvY2FidWxhcnkudmFsKCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcxJztcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvdW50cnlCdWRnZXRGaWVsZCh2YWwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAvLyBoaWRlL3Nob3cgb24gdmFsdWUgY2hhbmdlXG4gICAgICAgICAgICBjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVDb3VudHJ5QnVkZ2V0RmllbGQodmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy9oaWRlL3Nob3cgYmFzZWQgb24gdmFsdWUgY2xlYXJlZFxuICAgICAgICAgICAgY291bnRyeUJ1ZGdldFZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZUNvdW50cnlCdWRnZXRGaWVsZCgnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZSBDb3VudHJ5IEJ1ZGdldCBGaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVDb3VudHJ5QnVkZ2V0RmllbGQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIGNvdW50cnlCdWRnZXRDb2RlSW5wdXQgPSAnaW5wdXRbaWRePVwiYnVkZ2V0X2l0ZW1cIl1baWQqPVwiW2NvZGVfdGV4dF1cIl0nLCBjb3VudHJ5QnVkZ2V0Q29kZVNlbGVjdCA9ICdzZWxlY3RbaWRePVwiYnVkZ2V0X2l0ZW1cIl1baWQqPVwiW2NvZGVdXCJdJztcbiAgICAgICAgaWYgKHZhbHVlID09PSAnMScpIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShjb3VudHJ5QnVkZ2V0Q29kZVNlbGVjdClcbiAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGNvdW50cnlCdWRnZXRDb2RlSW5wdXQpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoY291bnRyeUJ1ZGdldENvZGVTZWxlY3QpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoY291bnRyeUJ1ZGdldENvZGVJbnB1dClcbiAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQWlkVHlwZSBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGFuZCBjb2RlcyBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5haWRUeXBlVm9jYWJ1bGFyeUhpZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGFpZHR5cGVfdm9jYWJ1bGFyeSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnc2VsZWN0W2lkKj1cImRlZmF1bHRfYWlkX3R5cGVfdm9jYWJ1bGFyeVwiXScpO1xuICAgICAgICBpZiAoYWlkdHlwZV92b2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaChhaWR0eXBlX3ZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShpdGVtKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVBaWRUeXBlU2VsZWN0RmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGl0ZW0pLCBkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhaWR0eXBlX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6c2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVBaWRUeXBlU2VsZWN0RmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhaWR0eXBlX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6Y2xlYXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlQWlkVHlwZVNlbGVjdEZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQWlkVHlwZSBGb3JtIFBhZ2VcbiAgICAgKlxuICAgICAqIEBMb2dpYyBoaWRlIHZvY2FidWxhcnktdXJpIGFuZCBjb2RlcyBmaWVsZCBiYXNlZCBvbiAnQHZvY2FidWxhcnknIGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS50cmFuc2FjdGlvbkFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYWlkdHlwZV92b2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWQqPVwiYWlkX3R5cGVfdm9jYWJ1bGFyeVwiXScpO1xuICAgICAgICBpZiAoYWlkdHlwZV92b2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaChhaWR0eXBlX3ZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShpdGVtKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVUcmFuc2FjdGlvbkFpZFR5cGVTZWxlY3RGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoaXRlbSksIGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFpZHR5cGVfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZS5wYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVRyYW5zYWN0aW9uQWlkVHlwZVNlbGVjdEZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWlkdHlwZV92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVRyYW5zYWN0aW9uQWlkVHlwZVNlbGVjdEZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZSBBaWQgVHlwZSBTZWxlY3QgRmllbGRzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlQWlkVHlwZVNlbGVjdEZpZWxkID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGVmYXVsdF9haWRfdHlwZSA9ICdzZWxlY3RbaWQqPVwiW2RlZmF1bHRfYWlkX3R5cGVdXCJdJywgZWFybWFya2luZ19jYXRlZ29yeSA9ICdzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdJywgZWFybWFya2luZ19tb2RhbGl0eSA9ICdzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdJywgY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzID0gJ3NlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2UxID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX21vZGFsaXR5XVwiXSxzZWxlY3RbaWQqPVwiW2Nhc2hfYW5kX3ZvdWNoZXJfbW9kYWxpdGllc11cIl0nLCBjYXNlMiA9ICdzZWxlY3RbaWQqPVwiW2RlZmF1bHRfYWlkX3R5cGVdXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0sc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTMgPSAnc2VsZWN0W2lkKj1cIltkZWZhdWx0X2FpZF90eXBlXVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdLHNlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2U0ID0gJ3NlbGVjdFtpZCo9XCJbZGVmYXVsdF9haWRfdHlwZV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX2NhdGVnb3J5XVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdJztcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZWFybWFya2luZ19jYXRlZ29yeSlcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZWFybWFya2luZ19tb2RhbGl0eSlcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UzKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnNCc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTQpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGRlZmF1bHRfYWlkX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZSBUcmFuc2FjdGlvbiBBaWQgVHlwZSBTZWxlY3QgRmllbGRzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlVHJhbnNhY3Rpb25BaWRUeXBlU2VsZWN0RmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBhaWRfdHlwZSA9ICdzZWxlY3RbaWQqPVwiW2FpZF90eXBlX2NvZGVdXCJdJywgZWFybWFya2luZ19jYXRlZ29yeSA9ICdzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdJywgZWFybWFya2luZ19tb2RhbGl0eSA9ICdzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdJywgY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzID0gJ3NlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2UxID0gJ3NlbGVjdFtpZCo9XCJbZWFybWFya2luZ19jYXRlZ29yeV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX21vZGFsaXR5XVwiXSxzZWxlY3RbaWQqPVwiW2Nhc2hfYW5kX3ZvdWNoZXJfbW9kYWxpdGllc11cIl0nLCBjYXNlMiA9ICdzZWxlY3RbaWQqPVwiW2FpZF90eXBlX2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbZWFybWFya2luZ19tb2RhbGl0eV1cIl0sc2VsZWN0W2lkKj1cIltjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXNdXCJdJywgY2FzZTMgPSAnc2VsZWN0W2lkKj1cIlthaWRfdHlwZV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfY2F0ZWdvcnldXCJdLHNlbGVjdFtpZCo9XCJbY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzXVwiXScsIGNhc2U0ID0gJ3NlbGVjdFtpZCo9XCJbYWlkX3R5cGVfY29kZV1cIl0sc2VsZWN0W2lkKj1cIltlYXJtYXJraW5nX2NhdGVnb3J5XVwiXSxzZWxlY3RbaWQqPVwiW2Vhcm1hcmtpbmdfbW9kYWxpdHldXCJdJztcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZWFybWFya2luZ19jYXRlZ29yeSlcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZWFybWFya2luZ19tb2RhbGl0eSlcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UzKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnNCc6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTQpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGFpZF90eXBlKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTEpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBvbGljeSBNYXJrZXIgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBhbmQgY29kZXMgZmllbGQgYmFzZWQgb24gJ0B2b2NhYnVsYXJ5JyBmaWVsZCB2YWx1ZVxuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUucG9saWN5Vm9jYWJ1bGFyeUhpZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHBvbGljeW1ha2VyX3ZvY2FidWxhcnkgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3NlbGVjdFtpZCo9XCJwb2xpY3lfbWFya2VyX3ZvY2FidWxhcnlcIl0nKTtcbiAgICAgICAgaWYgKHBvbGljeW1ha2VyX3ZvY2FidWxhcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5lYWNoKHBvbGljeW1ha2VyX3ZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgcG9saWN5X21hcmtlcikge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShwb2xpY3lfbWFya2VyKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVQb2xpY3lNYWtlckZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShwb2xpY3lfbWFya2VyKSwgZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcG9saWN5bWFrZXJfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpzZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZS5wYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVBvbGljeU1ha2VyRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwb2xpY3ltYWtlcl92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVBvbGljeU1ha2VyRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksICc5OScpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEhpZGVzIFBvbGljeSBNYXJrZXIgRm9ybSBGaWVsZHNcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLmhpZGVQb2xpY3lNYWtlckZpZWxkID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB2YXIgY2FzZTFfc2hvdyA9ICdzZWxlY3RbaWQqPVwiW3BvbGljeV9tYXJrZXJdXCJdJywgY2FzZTJfc2hvdyA9ICdpbnB1dFtpZCo9XCJbcG9saWN5X21hcmtlcl90ZXh0XVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdJywgY2FzZTEgPSAnaW5wdXRbaWQqPVwiW3BvbGljeV9tYXJrZXJfdGV4dF1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXScsIGNhc2UyID0gJ3NlbGVjdFtpZCo9XCJbcG9saWN5X21hcmtlcl1cIl0nO1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMV9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTEpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc5OSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMilcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VjdG9yIEZvcm0gUGFnZVxuICAgICAqXG4gICAgICogQExvZ2ljIGhpZGUgdm9jYWJ1bGFyeS11cmkgYW5kIGNvZGVzIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLnNlY3RvclZvY2FidWxhcnlIaWRlRmllbGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzZWN0b3Jfdm9jYWJ1bGFyeSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnc2VsZWN0W2lkKj1cInNlY3Rvcl92b2NhYnVsYXJ5XCJdJyk7XG4gICAgICAgIGlmIChzZWN0b3Jfdm9jYWJ1bGFyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBqcXVlcnlfMS5kZWZhdWx0LmVhY2goc2VjdG9yX3ZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgc2VjdG9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHNlY3RvcikudmFsKCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcxJztcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlU2VjdG9yRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHNlY3RvciksIGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlY3Rvcl92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlU2VjdG9yRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWN0b3Jfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpjbGVhcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVTZWN0b3JGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgJycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEhpZGUgU2VjdG9yIEZvcm0gZmllbGRzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlU2VjdG9yRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjYXNlMV9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbY29kZV1cIl0nLCBjYXNlMl9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbY2F0ZWdvcnlfY29kZV1cIl0nLCBjYXNlN19zaG93ID0gJ3NlbGVjdFtpZCo9XCJbc2RnX2dvYWxdXCJdJywgY2FzZThfc2hvdyA9ICdzZWxlY3RbaWQqPVwiW3NkZ190YXJnZXRdXCJdJywgY2FzZTk4Xzk5X3Nob3cgPSAnaW5wdXRbaWQqPVwiW3RleHRdXCJdLGlucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0nLCBkZWZhdWx0X3Nob3cgPSAnaW5wdXRbaWQqPVwiW3RleHRdXCJdJywgY2FzZTEgPSAnc2VsZWN0W2lkKj1cIltjYXRlZ29yeV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ19nb2FsXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ190YXJnZXRdXCJdLGlucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0saW5wdXRbaWQqPVwiW3RleHRdXCJdJywgY2FzZTIgPSAnaW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ19nb2FsXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ190YXJnZXRdXCJdLHNlbGVjdFtpZCo9XCJbY29kZV1cIl0saW5wdXRbaWQqPVwiW3RleHRdXCJdJywgY2FzZTcgPSAnaW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSxzZWxlY3RbaWQqPVwiW2NhdGVnb3J5X2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbc2RnX3RhcmdldF1cIl0sc2VsZWN0W2lkKj1cIltjb2RlXVwiXSxpbnB1dFtpZCo9XCJbdGV4dF1cIl0nLCBjYXNlOCA9ICdpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdLHNlbGVjdFtpZCo9XCJbY2F0ZWdvcnlfY29kZV1cIl0sc2VsZWN0W2lkKj1cIltzZGdfZ29hbF1cIl0sc2VsZWN0W2lkKj1cIltjb2RlXVwiXSxpbnB1dFtpZCo9XCJbdGV4dF1cIl0nLCBjYXNlOThfOTkgPSAnc2VsZWN0W2lkKj1cIltjYXRlZ29yeV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ19nb2FsXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ190YXJnZXRdXCJdLHNlbGVjdFtpZCo9XCJbY29kZV1cIl0nLCBkZWZhdWx0X2hpZGUgPSAnc2VsZWN0W2lkKj1cIltjYXRlZ29yeV9jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ19nb2FsXVwiXSxzZWxlY3RbaWQqPVwiW3NkZ190YXJnZXRdXCJdLHNlbGVjdFtpZCo9XCJbY29kZV1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXSc7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMilcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzcnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U3X3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlNylcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzgnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U4X3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlOClcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzk4JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlOThfOTlfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OF85OSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzk5JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlOThfOTlfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OF85OSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZGVmYXVsdF9zaG93KVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZCcpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoZGVmYXVsdF9oaWRlKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiAgUmVjaXBpZW50IFZvY2FidWxhcnkgRm9ybSBQYWdlXG4gICAgICpcbiAgICAgKiBATG9naWMgaGlkZSB2b2NhYnVsYXJ5LXVyaSBhbmQgY29kZXMgZmllbGQgYmFzZWQgb24gJ0B2b2NhYnVsYXJ5JyBmaWVsZCB2YWx1ZVxuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUucmVjaXBpZW50Vm9jYWJ1bGFyeUhpZGVGaWVsZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJlZ2lvbl92b2NhYnVsYXJ5ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdzZWxlY3RbaWQqPVwicmVnaW9uX3ZvY2FidWxhcnlcIl0nKTtcbiAgICAgICAgaWYgKHJlZ2lvbl92b2NhYnVsYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpxdWVyeV8xLmRlZmF1bHQuZWFjaChyZWdpb25fdm9jYWJ1bGFyeSwgZnVuY3Rpb24gKGluZGV4LCByZWdpb25fdm9jYWIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAoX2EgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkocmVnaW9uX3ZvY2FiKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJzEnO1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVSZWNpcGllbnRSZWdpb25GaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkocmVnaW9uX3ZvY2FiKSwgZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVnaW9uX3ZvY2FidWxhcnkub24oJ3NlbGVjdDI6c2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUucGFyYW1zLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVSZWNpcGllbnRSZWdpb25GaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZ2lvbl92b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOmNsZWFyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGlkZVJlY2lwaWVudFJlZ2lvbkZpZWxkKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLCAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGlkZXMgUmVjaXBpZW50IFJlZ2lvbiBGb3JtIEZpZWxkc1xuICAgICAqL1xuICAgIER5bmFtaWNGaWVsZC5wcm90b3R5cGUuaGlkZVJlY2lwaWVudFJlZ2lvbkZpZWxkID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB2YXIgY2FzZTFfc2hvdyA9ICdzZWxlY3RbaWQqPVwiW3JlZ2lvbl9jb2RlXVwiXScsIGNhc2UyX3Nob3cgPSAnaW5wdXRbaWQqPVwiW2N1c3RvbV9jb2RlXVwiXSwgaW5wdXRbaWQqPVwiW2NvZGVdXCJdJywgY2FzZTk5X3Nob3cgPSAnaW5wdXRbaWQqPVwiW2N1c3RvbV9jb2RlXVwiXSxpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdLCBpbnB1dFtpZCo9XCJbY29kZV1cIl0nLCBjYXNlMSA9ICdpbnB1dFtpZCo9XCJbY3VzdG9tX2NvZGVdXCJdLGlucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0saW5wdXRbaWQqPVwiW2NvZGVdXCJdJywgY2FzZTIgPSAnc2VsZWN0W2lkKj1cIltyZWdpb25fY29kZV1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXScsIGNhc2U5OSA9ICdzZWxlY3RbaWQqPVwiW3JlZ2lvbl9jb2RlXVwiXSc7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMilcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzk5JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlOTlfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTJfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIEFjdGl2aXR5IGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLnVwZGF0ZUFjdGl2aXR5SWRlbnRpZmllciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFjdGl2aXR5X2lkZW50aWZpZXIgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNhY3Rpdml0eV9pZGVudGlmaWVyJyk7XG4gICAgICAgIGlmIChhY3Rpdml0eV9pZGVudGlmaWVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGFjdGl2aXR5X2lkZW50aWZpZXIub24oJ2tleXVwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI2lhdGlfaWRlbnRpZmllcl90ZXh0JykudmFsKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmlkZW50aWZpZXInKS5hdHRyKCdhY3Rpdml0eV9pZGVudGlmaWVyJykgKyBcIi1cIi5jb25jYXQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpLnZhbCgpKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogVGFnIEZvcm0gUGFnZVxuICAgICAqXG4gICAgICogQExvZ2ljIGhpZGUgdm9jYWJ1bGFyeS11cmkgYW5kIGNvZGVzIGZpZWxkIGJhc2VkIG9uICdAdm9jYWJ1bGFyeScgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBEeW5hbWljRmllbGQucHJvdG90eXBlLnRhZ1ZvY2FidWxhcnlIaWRlRmllbGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0YWdfdm9jYWJ1bGFyeSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnc2VsZWN0W2lkKj1cInRhZ192b2NhYnVsYXJ5XCJdJyk7XG4gICAgICAgIGlmICh0YWdfdm9jYWJ1bGFyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBqcXVlcnlfMS5kZWZhdWx0LmVhY2godGFnX3ZvY2FidWxhcnksIGZ1bmN0aW9uIChpbmRleCwgdGFnKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhZykudmFsKCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcxJztcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlVGFnRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhZyksIGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhZ192b2NhYnVsYXJ5Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlLnBhcmFtcy5kYXRhLmlkO1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlVGFnRmllbGQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCksIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YWdfdm9jYWJ1bGFyeS5vbignc2VsZWN0MjpjbGVhcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVUYWdGaWVsZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KSwgJycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEhpZGUgVGFnIEZvcm0gZmllbGRzXG4gICAgICovXG4gICAgRHluYW1pY0ZpZWxkLnByb3RvdHlwZS5oaWRlVGFnRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjYXNlMV9zaG93ID0gJ2lucHV0W2lkKj1cIlt0YWdfdGV4dF1cIl0nLCBjYXNlMl9zaG93ID0gJ3NlbGVjdFtpZCo9XCJbZ29hbHNfdGFnX2NvZGVdXCJdJywgY2FzZTNfc2hvdyA9ICdzZWxlY3RbaWQqPVwiW3RhcmdldHNfdGFnX2NvZGVdXCJdJywgY2FzZTk5X3Nob3cgPSAnaW5wdXRbaWQqPVwiW3RhZ190ZXh0XVwiXSwgaW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXScsIGNhc2UxID0gJ3NlbGVjdFtpZCo9XCJbZ29hbHNfdGFnX2NvZGVdXCJdLHNlbGVjdFtpZCo9XCJbdGFyZ2V0c190YWdfY29kZV1cIl0saW5wdXRbaWQqPVwiW3ZvY2FidWxhcnlfdXJpXVwiXScsIGNhc2UyID0gJ2lucHV0W2lkKj1cIlt2b2NhYnVsYXJ5X3VyaV1cIl0sc2VsZWN0W2lkKj1cIlt0YXJnZXRzX3RhZ19jb2RlXVwiXSxzZWxlY3RbaWQqPVwiW3RhcmdldHNfdGFnX2NvZGVdXCJdLGlucHV0W2lkKj1cIlt0YWdfdGV4dF1cIl0nLCBjYXNlMyA9ICdpbnB1dFtpZCo9XCJbdm9jYWJ1bGFyeV91cmldXCJdLHNlbGVjdFtpZCo9XCJbZ29hbHNfdGFnX2NvZGVdXCJdLGlucHV0W2lkKj1cIlt0YWdfdGV4dF1cIl0nLCBjYXNlOTkgPSAnc2VsZWN0W2lkKj1cIltnb2Fsc190YWdfY29kZV1cIl0sc2VsZWN0W2lkKj1cIlt0YXJnZXRzX3RhZ19jb2RlXVwiXSc7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UyX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMilcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UzX3Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlMylcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzk5JzpcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAuZmluZChjYXNlOTlfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2U5OSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpXG4gICAgICAgICAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoY2FzZTFfc2hvdylcbiAgICAgICAgICAgICAgICAgICAgLnNob3coKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKGNhc2UxKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRHluYW1pY0ZpZWxkO1xufSgpKTtcbmV4cG9ydHMuRHluYW1pY0ZpZWxkID0gRHluYW1pY0ZpZWxkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGpxdWVyeV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJqcXVlcnlcIikpO1xucmVxdWlyZShcInNlbGVjdDJcIik7XG52YXIgRHluYW1pY0ZpZWxkXzEgPSByZXF1aXJlKFwiLi9EeW5hbWljRmllbGRcIik7XG52YXIgZHluYW1pY0ZpZWxkID0gbmV3IER5bmFtaWNGaWVsZF8xLkR5bmFtaWNGaWVsZCgpO1xudmFyIEZvcm1CdWlsZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZvcm1CdWlsZGVyKCkge1xuICAgIH1cbiAgICAvLyBhZGRzIG5ldyBjb2xsZWN0aW9uIG9mIHN1Yi1lbGVtZW50XG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmFkZEZvcm0gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldDtcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2Zvcm1fdHlwZScpXG4gICAgICAgICAgICA/ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShcIi5jb2xsZWN0aW9uLWNvbnRhaW5lcltmb3JtX3R5cGUgPSdcIi5jb25jYXQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignZm9ybV90eXBlJyksIFwiJ11cIikpXG4gICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmNvbGxlY3Rpb24tY29udGFpbmVyJyk7XG4gICAgICAgIHZhciBjb3VudCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2NoaWxkX2NvdW50JylcbiAgICAgICAgICAgID8gcGFyc2VJbnQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignY2hpbGRfY291bnQnKSkgKyAxXG4gICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnBhcmVudCgpLmZpbmQoJy5mb3JtLWNoaWxkLWJvZHknKS5sZW5ndGg7XG4gICAgICAgIHZhciBwYXJlbnRfY291bnQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdwYXJlbnRfY291bnQnKVxuICAgICAgICAgICAgPyBwYXJzZUludCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdwYXJlbnRfY291bnQnKSlcbiAgICAgICAgICAgIDogKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucGFyZW50cygnLm11bHRpLWZvcm0nKS5pbmRleCgpIC0gMTtcbiAgICAgICAgdmFyIHdyYXBwZXJfcGFyZW50X2NvdW50ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignd3JhcHBlZF9wYXJlbnRfY291bnQnKVxuICAgICAgICAgICAgPyBwYXJzZUludCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCd3cmFwcGVkX3BhcmVudF9jb3VudCcpKVxuICAgICAgICAgICAgOiAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wYXJlbnRzKCcud3JhcHBlZC1jaGlsZC1ib2R5JykuaW5kZXgoKSAtIDE7XG4gICAgICAgIHZhciBwcm90byA9IGNvbnRhaW5lclxuICAgICAgICAgICAgLmRhdGEoJ3Byb3RvdHlwZScpXG4gICAgICAgICAgICAucmVwbGFjZSgvX19QQVJFTlRfTkFNRV9fL2csIHBhcmVudF9jb3VudCk7XG4gICAgICAgIGlmICgoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdoYXNfY2hpbGRfY29sbGVjdGlvbicpKSB7XG4gICAgICAgICAgICBwcm90byA9IHByb3RvLnJlcGxhY2UoL19fV1JBUFBFUl9OQU1FX18vZywgY291bnQpO1xuICAgICAgICAgICAgcHJvdG8gPSBwcm90by5yZXBsYWNlKC9fX05BTUVfXy9nLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb3RvID0gcHJvdG8ucmVwbGFjZSgvX19OQU1FX18vZywgY291bnQpO1xuICAgICAgICAgICAgcHJvdG8gPSBwcm90by5yZXBsYWNlKC9fX1dSQVBQRVJfTkFNRV9fL2csIHdyYXBwZXJfcGFyZW50X2NvdW50KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkuYXBwZW5kKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShwcm90bykpO1xuICAgICAgICBpZiAoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignaGFzX2NoaWxkX2NvbGxlY3Rpb24nKSkge1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgICAgICAucHJldignLnN1YmVsZW1lbnQnKVxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbignLndyYXBwZWQtY2hpbGQtYm9keScpXG4gICAgICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuYWRkX3RvX2NvbGxlY3Rpb24nKVxuICAgICAgICAgICAgICAgIC5hdHRyKCd3cmFwcGVkX3BhcmVudF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgLnByZXYoJy5zdWJlbGVtZW50JylcbiAgICAgICAgICAgICAgICAuY2hpbGRyZW4oJy53cmFwcGVkLWNoaWxkLWJvZHknKVxuICAgICAgICAgICAgICAgIC5sYXN0KClcbiAgICAgICAgICAgICAgICAuZmluZCgnLmFkZF90b19jb2xsZWN0aW9uJylcbiAgICAgICAgICAgICAgICAuYXR0cigncGFyZW50X2NvdW50JywgcGFyZW50X2NvdW50KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KVxuICAgICAgICAgICAgLnByZXYoKVxuICAgICAgICAgICAgLmZpbmQoJy53cmFwcGVkLWNoaWxkLWJvZHknKVxuICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgLmZpbmQoJy5hZGRfdG9fY29sbGVjdGlvbicpXG4gICAgICAgICAgICAuYXR0cignd3JhcHBlcl9wYXJlbnRfY291bnQnLCB3cmFwcGVyX3BhcmVudF9jb3VudCAhPT0gbnVsbCAmJiB3cmFwcGVyX3BhcmVudF9jb3VudCAhPT0gdm9pZCAwID8gd3JhcHBlcl9wYXJlbnRfY291bnQgOiAwKTtcbiAgICAgICAgaWYgKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2Zvcm1fdHlwZScpKSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkubGFzdCgpLmZpbmQoJy5zZWxlY3QyJykuc2VsZWN0Mih7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgYW4gb3B0aW9uJyxcbiAgICAgICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAuZmluZCgnLnN1Yi1hdHRyaWJ1dGUnKVxuICAgICAgICAgICAgICAgIC53cmFwQWxsKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZ3JvdXAgZmxleCBmbGV4LXdyYXAgc3ViLWF0dHJpYnV0ZS13cmFwcGVyXCI+PC9kaXY+JykpO1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldClcbiAgICAgICAgICAgICAgICAucHJldignLnN1YmVsZW1lbnQnKVxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbignLndyYXBwZWQtY2hpbGQtYm9keScpXG4gICAgICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuc3ViLWF0dHJpYnV0ZScpXG4gICAgICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBmbGV4IGZsZXgtd3JhcCBzdWItYXR0cmlidXRlLXdyYXBwZXIgbXQtNlwiPjwvZGl2PicpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgLnBhcmVudCgpXG4gICAgICAgICAgICAgICAgLmZpbmQoJy5mb3JtLWNoaWxkLWJvZHknKVxuICAgICAgICAgICAgICAgIC5sYXN0KClcbiAgICAgICAgICAgICAgICAuZmluZCgnLnNlbGVjdDInKVxuICAgICAgICAgICAgICAgIC5zZWxlY3QyKHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBvcHRpb24nLFxuICAgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdjaGlsZF9jb3VudCcsIGNvdW50KTtcbiAgICAgICAgZHluYW1pY0ZpZWxkLmFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5zZWN0b3JWb2NhYnVsYXJ5SGlkZUZpZWxkKCk7XG4gICAgfTtcbiAgICAvLyBhZGRzIHBhcmVudCBjb2xsZWN0aW9uXG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmFkZFBhcmVudEZvcm0gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldDtcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ2Zvcm1fdHlwZScpXG4gICAgICAgICAgICA/ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShcIi5wYXJlbnQtY29sbGVjdGlvbltmb3JtX3R5cGUgPSdcIi5jb25jYXQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuYXR0cignZm9ybV90eXBlJyksIFwiJ11cIikpXG4gICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLnBhcmVudC1jb2xsZWN0aW9uJyk7XG4gICAgICAgIHZhciBjb3VudCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3BhcmVudF9jb3VudCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmF0dHIoJ3BhcmVudF9jb3VudCcpKSArIDFcbiAgICAgICAgICAgIDogKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLnByZXYoKS5maW5kKCcubXVsdGktZm9ybScpLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucHJldigpLmZpbmQoJy5tdWx0aS1mb3JtJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5wcmV2KCkuZmluZCgnLndyYXBwZWQtY2hpbGQtYm9keScpLmxlbmd0aCkgKyAxO1xuICAgICAgICB2YXIgcHJvdG8gPSBjb250YWluZXIuZGF0YSgncHJvdG90eXBlJykucmVwbGFjZSgvX19QQVJFTlRfTkFNRV9fL2csIGNvdW50KTtcbiAgICAgICAgcHJvdG8gPSBwcm90by5yZXBsYWNlKC9fX05BTUVfXy9nLCAwKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucHJldigpLmFwcGVuZCgoMCwganF1ZXJ5XzEuZGVmYXVsdCkocHJvdG8pKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucHJldigpLmZpbmQoJy5tdWx0aS1mb3JtJykubGFzdCgpLmZpbmQoJy5zZWxlY3QyJykuc2VsZWN0Mih7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhbiBvcHRpb24nLFxuICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAucHJldigpXG4gICAgICAgICAgICAuZmluZCgnLm11bHRpLWZvcm0nKVxuICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgLmZpbmQoJy5hZGRfdG9fY29sbGVjdGlvbicpXG4gICAgICAgICAgICAuYXR0cigncGFyZW50X2NvdW50JywgY291bnQpO1xuICAgICAgICB0aGlzLmFkZFdyYXBwZXJPbkFkZCh0YXJnZXQpO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGFyZ2V0KS5hdHRyKCdwYXJlbnRfY291bnQnLCBjb3VudCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5odW1hbml0YXJpYW5TY29wZUhpZGVWb2NhYnVsYXJ5VXJpKCk7XG4gICAgICAgIGR5bmFtaWNGaWVsZC5jb3VudHJ5QnVkZ2V0SGlkZUNvZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQuc2VjdG9yVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQucmVjaXBpZW50Vm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQucG9saWN5Vm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQudGFnVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQudHJhbnNhY3Rpb25BaWRUeXBlVm9jYWJ1bGFyeUhpZGVGaWVsZCgpO1xuICAgICAgICBkeW5hbWljRmllbGQuaW5kaWNhdG9yUmVmZXJlbmNlSGlkZUZpZWxkVXJpKCk7XG4gICAgfTtcbiAgICAvLyBkZWxldGVzIGNvbGxlY3Rpb25cbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUuZGVsZXRlRm9ybSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0O1xuICAgICAgICB2YXIgY29sbGVjdGlvbkxlbmd0aCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLm11bHRpLWZvcm0nKS5sZW5ndGhcbiAgICAgICAgICAgID8gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuY2xvc2VzdCgnLnN1YmVsZW1lbnQnKS5maW5kKCcuZm9ybS1jaGlsZC1ib2R5JykubGVuZ3RoXG4gICAgICAgICAgICA6ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmZvcm0tY2hpbGQtYm9keScpLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvdW50ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX2NvbGxlY3Rpb24nKS5hdHRyKCdjaGlsZF9jb3VudCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmFkZF90b19jb2xsZWN0aW9uJykuYXR0cignY2hpbGRfY291bnQnKSkgKyAxXG4gICAgICAgICAgICA6IGNvbGxlY3Rpb25MZW5ndGg7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmFkZF90b19jb2xsZWN0aW9uJykuYXR0cignY2hpbGRfY291bnQnLCBjb3VudCk7XG4gICAgICAgIGlmIChjb2xsZWN0aW9uTGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIHRnID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkuY2xvc2VzdCgnLmZvcm0tY2hpbGQtYm9keScpO1xuICAgICAgICAgICAgdGcubmV4dCgnLmVycm9yJykucmVtb3ZlKCk7XG4gICAgICAgICAgICB0Zy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gZGVsZXRlcyBwYXJlbnQgY29sbGVjdGlvblxuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS5kZWxldGVQYXJlbnRGb3JtID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldi50YXJnZXQ7XG4gICAgICAgIHZhciBjb2xsZWN0aW9uTGVuZ3RoID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuc3ViZWxlbWVudCcpLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvdW50ID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX3BhcmVudCcpLmF0dHIoJ2NoaWxkX2NvdW50JylcbiAgICAgICAgICAgID8gcGFyc2VJbnQoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX3BhcmVudCcpLmF0dHIoJ2NoaWxkX2NvdW50JykpICsgMVxuICAgICAgICAgICAgOiBjb2xsZWN0aW9uTGVuZ3RoO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5hZGRfdG9fcGFyZW50JykuYXR0cignY2hpbGRfY291bnQnLCBjb3VudCk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnLmFkZF90b19wYXJlbnQnKS5hdHRyKCdwYXJlbnRfY291bnQnLCBjb3VudCk7XG4gICAgICAgIGlmIChjb2xsZWN0aW9uTGVuZ3RoID4gMikge1xuICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRhcmdldCkucGFyZW50KCkucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vYWRkIHdyYXBwZXIgZGl2IGFyb3VuZCB0aGUgYXR0cmlidXRlc1xuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS5hZGRXcmFwcGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5tdWx0aS1mb3JtJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAuZmluZCgnLmF0dHJpYnV0ZScpXG4gICAgICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBmbGV4IGZsZXgtd3JhcCBhdHRyaWJ1dGUtd3JhcHBlciBtYi00XCI+PC9kaXY+JykpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuc3ViZWxlbWVudCcpXG4gICAgICAgICAgICAuZmluZCgnLndyYXBwZWQtY2hpbGQtYm9keScpXG4gICAgICAgICAgICAuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAuZmluZCgnLnN1Yi1hdHRyaWJ1dGUnKVxuICAgICAgICAgICAgICAgIC53cmFwQWxsKCgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZ3JvdXAgZmxleCBmbGV4LXdyYXAgc3ViLWF0dHJpYnV0ZS13cmFwcGVyIG1iLTRcIj48L2Rpdj4nKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybUZpZWxkID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdmb3JtPi5mb3JtLWZpZWxkJyk7XG4gICAgICAgIGlmIChmb3JtRmllbGQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLndyYXBBbGwoJzxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWdyb3VwLW91dGVyIGdyaWQgeGw6Z3JpZC1jb2xzLTIgbWItNiAtbXgtMyBnYXAteS02XCI+PC9kaXY+Jyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS5hZGRXcmFwcGVyT25BZGQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAucHJldigpXG4gICAgICAgICAgICAuZmluZCgnLm11bHRpLWZvcm0nKVxuICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgLmZpbmQoJy5hdHRyaWJ1dGUnKVxuICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBncmlkIHhsOmdyaWQtY29scy0yIGF0dHJpYnV0ZS13cmFwcGVyIG1iLTRcIj48L2Rpdj4nKSk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpXG4gICAgICAgICAgICAucHJldigpXG4gICAgICAgICAgICAuZmluZCgnLm11bHRpLWZvcm0nKVxuICAgICAgICAgICAgLmxhc3QoKVxuICAgICAgICAgICAgLmZpbmQoJy5zdWJlbGVtZW50JylcbiAgICAgICAgICAgIC5maW5kKCcud3JhcHBlZC1jaGlsZC1ib2R5JylcbiAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuc3ViLWF0dHJpYnV0ZScpXG4gICAgICAgICAgICAgICAgLndyYXBBbGwoKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCc8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1ncm91cCBmbGV4IGZsZXgtd3JhcCBzdWItYXR0cmlidXRlLXdyYXBwZXIgbWItNFwiPjwvZGl2PicpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGb3JtQnVpbGRlci5wcm90b3R5cGUudGV4dEFyZWFIZWlnaHQgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldDtcbiAgICAgICAgdmFyIGhlaWdodCA9IHRhcmdldC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0YXJnZXQpLmNzcygnaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICB9O1xuICAgIEZvcm1CdWlsZGVyLnByb3RvdHlwZS5hZGRUb0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjbGljaycsICcuYWRkX3RvX2NvbGxlY3Rpb24nLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICgoMCwganF1ZXJ5XzEuZGVmYXVsdCkoZXZlbnQudGFyZ2V0KS5oYXNDbGFzcygnYWRkLWljb24nKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShldmVudC50YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoJ2J1dHRvbicpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjbGljaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuYWRkRm9ybShldmVudCk7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGFuZGxlRGVsZXRlUGFyZW50QnV0dG9ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuYWRkX3RvX3BhcmVudCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgaWYgKCgwLCBqcXVlcnlfMS5kZWZhdWx0KShldmVudC50YXJnZXQpLmhhc0NsYXNzKCdhZGQtaWNvbicpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGV2ZW50LnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgnYnV0dG9uJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NsaWNrJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5hZGRQYXJlbnRGb3JtKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYW5kbGVEZWxldGVQYXJlbnRCdXR0b25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmRlbGV0ZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBkZWxldGVDb25maXJtYXRpb24gPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJy5kZWxldGUtY29uZmlybWF0aW9uJyksIGNhbmNlbFBvcHVwID0gJy5jYW5jZWwtcG9wdXAnLCBkZWxldGVDb25maXJtID0gJy5kZWxldGUtY29uZmlybSc7XG4gICAgICAgIHZhciBkZWxldGVJbmRleCA9IHt9LCBjaGlsZE9yUGFyZW50ID0gJyc7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjbGljaycsICcuZGVsZXRlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBkZWxldGVDb25maXJtYXRpb24uZmFkZUluKCk7XG4gICAgICAgICAgICBkZWxldGVJbmRleCA9IGV2ZW50O1xuICAgICAgICAgICAgY2hpbGRPclBhcmVudCA9ICdjaGlsZCc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignY2xpY2snLCBjYW5jZWxQb3B1cCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGVsZXRlQ29uZmlybWF0aW9uLmZhZGVPdXQoKTtcbiAgICAgICAgICAgIGRlbGV0ZUluZGV4ID0ge307XG4gICAgICAgICAgICBjaGlsZE9yUGFyZW50ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignY2xpY2snLCBkZWxldGVDb25maXJtLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRPclBhcmVudCA9PT0gJ2NoaWxkJykge1xuICAgICAgICAgICAgICAgIF90aGlzLmRlbGV0ZUZvcm0oZGVsZXRlSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRPclBhcmVudCA9PT0gJ3BhcmVudCcpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5kZWxldGVQYXJlbnRGb3JtKGRlbGV0ZUluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZUNvbmZpcm1hdGlvbi5mYWRlT3V0KCk7XG4gICAgICAgICAgICBkZWxldGVJbmRleCA9IHt9O1xuICAgICAgICAgICAgY2hpbGRPclBhcmVudCA9ICcnO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ21vdXNlZW50ZXInLCAnLmRlbGV0ZS1wYXJlbnQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbiA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgbXVsdGlGb3JtID0gZGVsZXRlQnV0dG9uLmNsb3Nlc3QoJy5tdWx0aS1mb3JtLCAud3JhcHBlZC1jaGlsZC1ib2R5Jyk7XG4gICAgICAgICAgICBtdWx0aUZvcm0uY3NzKHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI0ZGRjhGNycsXG4gICAgICAgICAgICAgICAgb3V0bGluZTogJzJweCBzb2xpZCAjRjE5QkEwJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ21vdXNlbGVhdmUnLCAnLmRlbGV0ZS1wYXJlbnQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbiA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KShldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgbXVsdGlGb3JtID0gZGVsZXRlQnV0dG9uLmNsb3Nlc3QoJy5tdWx0aS1mb3JtLCAud3JhcHBlZC1jaGlsZC1ib2R5Jyk7XG4gICAgICAgICAgICBtdWx0aUZvcm0uY3NzKHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnJyxcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAnJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2NsaWNrJywgJy5kZWxldGUtcGFyZW50JywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBkZWxldGVDb25maXJtYXRpb24uZmFkZUluKCk7XG4gICAgICAgICAgICBkZWxldGVJbmRleCA9IGV2ZW50O1xuICAgICAgICAgICAgY2hpbGRPclBhcmVudCA9ICdwYXJlbnQnO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcuc2VsZWN0MicpLnNlbGVjdDIoe1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgYW4gb3B0aW9uJyxcbiAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyB1cGRhdGUgZm9ybWF0IG9uIGNoYW5nZSBvZiBkb2N1bWVudCBsaW5rXG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnYm9keScpLm9uKCdjaGFuZ2UnLCAnaW5wdXRbaWQqPVwiW3VybF1cIl0nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gKChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB2YXIgZG9jdW1lbnQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcylcbiAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFtpZCo9XCJbZG9jdW1lbnRdXCJdJylcbiAgICAgICAgICAgICAgICAudmFsKCk7XG4gICAgICAgICAgICB2YXIgdXJsID0gXCIvbWltZXR5cGU/dXJsPVwiLmNvbmNhdChmaWxlUGF0aCwgXCImdHlwZT11cmxcIik7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcykuY2xvc2VzdCgnLmZvcm0tZmllbGQnKS5maW5kKCcudGV4dC1kYW5nZXInKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHVybCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdCA9IHJlc3BvbnNlLmRhdGEuZGF0YS5taW1ldHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShfdGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3RbaWQqPVwiW2Zvcm1hdF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWwoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShfdGhpcykuY2xvc2VzdCgnLmZvcm0tZmllbGQnKS5maW5kKCcudGV4dC1kYW5nZXInKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShfdGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoXCI8ZGl2IGNsYXNzPSd0ZXh0LWRhbmdlciBlcnJvcic+XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEubWVzc2FnZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdFtpZCo9XCJbZm9ybWF0XVwiXScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKF90aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5mb3JtLWZpZWxkLWdyb3VwJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFtpZCo9XCJbZG9jdW1lbnRdXCJdJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3RbaWQqPVwiW2Zvcm1hdF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignY2hhbmdlJywgJ2lucHV0W2lkKj1cIltkb2N1bWVudF1cIl0nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gKChfYSA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB2YXIgdXJsID0gXCIvbWltZXR5cGU/dXJsPVwiLmNvbmNhdChmaWxlUGF0aCwgXCImJnR5cGU9ZG9jdW1lbnRcIik7XG4gICAgICAgICAgICB2YXIgZmlsZVVybCA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKVxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W2lkKj1cIlt1cmxdXCJdJylcbiAgICAgICAgICAgICAgICAudmFsKCk7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcykuY2xvc2VzdCgnLmZvcm0tZmllbGQnKS5maW5kKCcudGV4dC1kYW5nZXInKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHVybCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdCA9IHJlc3BvbnNlLmRhdGEuZGF0YS5taW1ldHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShfdGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3RbaWQqPVwiW2Zvcm1hdF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWwoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KShfdGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLmZvcm0tZmllbGQtZ3JvdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3RbaWQqPVwiW2Zvcm1hdF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFtpZCo9XCJbdXJsXVwiXScpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFmaWxlVXJsIHx8IGZpbGVVcmwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuZm9ybS1maWVsZC1ncm91cCcpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3RbaWQqPVwiW2Zvcm1hdF1cIl0nKVxuICAgICAgICAgICAgICAgICAgICAudmFsKCcnKVxuICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgRm9ybUJ1aWxkZXIucHJvdG90eXBlLmhhbmRsZURlbGV0ZVBhcmVudEJ1dHRvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlbGV0ZS1wYXJlbnQtc2VsZWN0b3InKTtcbiAgICAgICAgdmFyIGNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbCA9IGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgIHZhciBpbml0aWFsVGV4dCA9IGVzY2FwZUh0bWwoYnV0dG9uLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBcIlxcbiAgICAgICAgIDxzdmcgY2xhc3M9XFxcInRleHQtWzFyZW1dIG1iLTAuNVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPlxcbiAgICAgICAgICAgPHBhdGggZD1cXFwiTTYuNjY2NjcgMTJDNi44NDM0OCAxMiA3LjAxMzA1IDExLjkyOTggNy4xMzgwNyAxMS44MDQ3QzcuMjYzMSAxMS42Nzk3IDcuMzMzMzMgMTEuNTEwMSA3LjMzMzMzIDExLjMzMzNWNy4zMzMzNEM3LjMzMzMzIDcuMTU2NTMgNy4yNjMxIDYuOTg2OTYgNy4xMzgwNyA2Ljg2MTkzQzcuMDEzMDUgNi43MzY5MSA2Ljg0MzQ4IDYuNjY2NjcgNi42NjY2NyA2LjY2NjY3QzYuNDg5ODYgNi42NjY2NyA2LjMyMDI5IDYuNzM2OTEgNi4xOTUyNiA2Ljg2MTkzQzYuMDcwMjQgNi45ODY5NiA2IDcuMTU2NTMgNiA3LjMzMzM0VjExLjMzMzNDNiAxMS41MTAxIDYuMDcwMjQgMTEuNjc5NyA2LjE5NTI2IDExLjgwNDdDNi4zMjAyOSAxMS45Mjk4IDYuNDg5ODYgMTIgNi42NjY2NyAxMlpNMTMuMzMzMyA0SDEwLjY2NjdWMy4zMzMzNEMxMC42NjY3IDIuODAyOSAxMC40NTYgMi4yOTQyIDEwLjA4MDkgMS45MTkxMkM5LjcwNTgxIDEuNTQ0MDUgOS4xOTcxIDEuMzMzMzQgOC42NjY2NyAxLjMzMzM0SDcuMzMzMzNDNi44MDI5IDEuMzMzMzQgNi4yOTQxOSAxLjU0NDA1IDUuOTE5MTIgMS45MTkxMkM1LjU0NDA1IDIuMjk0MiA1LjMzMzMzIDIuODAyOSA1LjMzMzMzIDMuMzMzMzRWNEgyLjY2NjY3QzIuNDg5ODYgNCAyLjMyMDI5IDQuMDcwMjQgMi4xOTUyNiA0LjE5NTI2QzIuMDcwMjQgNC4zMjAyOSAyIDQuNDg5ODYgMiA0LjY2NjY3QzIgNC44NDM0OCAyLjA3MDI0IDUuMDEzMDUgMi4xOTUyNiA1LjEzODA3QzIuMzIwMjkgNS4yNjMxIDIuNDg5ODYgNS4zMzMzNCAyLjY2NjY3IDUuMzMzMzRIMy4zMzMzM1YxMi42NjY3QzMuMzMzMzMgMTMuMTk3MSAzLjU0NDA1IDEzLjcwNTggMy45MTkxMiAxNC4wODA5QzQuMjk0MTkgMTQuNDU2IDQuODAyOSAxNC42NjY3IDUuMzMzMzMgMTQuNjY2N0gxMC42NjY3QzExLjE5NzEgMTQuNjY2NyAxMS43MDU4IDE0LjQ1NiAxMi4wODA5IDE0LjA4MDlDMTIuNDU2IDEzLjcwNTggMTIuNjY2NyAxMy4xOTcxIDEyLjY2NjcgMTIuNjY2N1Y1LjMzMzM0SDEzLjMzMzNDMTMuNTEwMSA1LjMzMzM0IDEzLjY3OTcgNS4yNjMxIDEzLjgwNDcgNS4xMzgwN0MxMy45Mjk4IDUuMDEzMDUgMTQgNC44NDM0OCAxNCA0LjY2NjY3QzE0IDQuNDg5ODYgMTMuOTI5OCA0LjMyMDI5IDEzLjgwNDcgNC4xOTUyNkMxMy42Nzk3IDQuMDcwMjQgMTMuNTEwMSA0IDEzLjMzMzMgNFpNNi42NjY2NyAzLjMzMzM0QzYuNjY2NjcgMy4xNTY1MiA2LjczNjkgMi45ODY5NiA2Ljg2MTkzIDIuODYxOTNDNi45ODY5NSAyLjczNjkxIDcuMTU2NTIgMi42NjY2NyA3LjMzMzMzIDIuNjY2NjdIOC42NjY2N0M4Ljg0MzQ4IDIuNjY2NjcgOS4wMTMwNSAyLjczNjkxIDkuMTM4MDcgMi44NjE5M0M5LjI2MzEgMi45ODY5NiA5LjMzMzMzIDMuMTU2NTIgOS4zMzMzMyAzLjMzMzM0VjRINi42NjY2N1YzLjMzMzM0Wk0xMS4zMzMzIDEyLjY2NjdDMTEuMzMzMyAxMi44NDM1IDExLjI2MzEgMTMuMDEzMSAxMS4xMzgxIDEzLjEzODFDMTEuMDEzIDEzLjI2MzEgMTAuODQzNSAxMy4zMzMzIDEwLjY2NjcgMTMuMzMzM0g1LjMzMzMzQzUuMTU2NTIgMTMuMzMzMyA0Ljk4Njk1IDEzLjI2MzEgNC44NjE5MyAxMy4xMzgxQzQuNzM2OSAxMy4wMTMxIDQuNjY2NjcgMTIuODQzNSA0LjY2NjY3IDEyLjY2NjdWNS4zMzMzNEgxMS4zMzMzVjEyLjY2NjdaTTkuMzMzMzMgMTJDOS41MTAxNCAxMiA5LjY3OTcxIDExLjkyOTggOS44MDQ3NCAxMS44MDQ3QzkuOTI5NzYgMTEuNjc5NyAxMCAxMS41MTAxIDEwIDExLjMzMzNWNy4zMzMzNEMxMCA3LjE1NjUzIDkuOTI5NzYgNi45ODY5NiA5LjgwNDc0IDYuODYxOTNDOS42Nzk3MSA2LjczNjkxIDkuNTEwMTQgNi42NjY2NyA5LjMzMzMzIDYuNjY2NjdDOS4xNTY1MiA2LjY2NjY3IDguOTg2OTUgNi43MzY5MSA4Ljg2MTkzIDYuODYxOTNDOC43MzY5MSA2Ljk4Njk2IDguNjY2NjcgNy4xNTY1MyA4LjY2NjY3IDcuMzMzMzRWMTEuMzMzM0M4LjY2NjY3IDExLjUxMDEgOC43MzY5MSAxMS42Nzk3IDguODYxOTMgMTEuODA0N0M4Ljk4Njk1IDExLjkyOTggOS4xNTY1MiAxMiA5LjMzMzMzIDEyWlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPlxcbiAgICAgICAgIDwvc3ZnPlxcbiAgICAgICAgIFwiLmNvbmNhdChpbml0aWFsVGV4dCwgXCJcXG4gICAgICBcIik7XG4gICAgICAgIH07XG4gICAgICAgIGRlbGV0ZUJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoYnV0dG9uKSB7XG4gICAgICAgICAgICBjaGFuZ2VEZWxldGVCdXR0b25Jbm5lckh0bWwoYnV0dG9uKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gRm9ybUJ1aWxkZXI7XG59KCkpO1xuKDAsIGpxdWVyeV8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9ybUJ1aWxkZXIgPSBuZXcgRm9ybUJ1aWxkZXIoKTtcbiAgICBmb3JtQnVpbGRlci5hZGRXcmFwcGVyKCk7XG4gICAgZHluYW1pY0ZpZWxkLmhpZGVTaG93Rm9ybUZpZWxkcygpO1xuICAgIGR5bmFtaWNGaWVsZC51cGRhdGVBY3Rpdml0eUlkZW50aWZpZXIoKTtcbiAgICBmb3JtQnVpbGRlci5hZGRUb0NvbGxlY3Rpb24oKTtcbiAgICBmb3JtQnVpbGRlci5kZWxldGVDb2xsZWN0aW9uKCk7XG4gICAgLyoqXG4gICAgICogVGV4dCBhcmVhIGhlaWdodCBvbiB0eXBpbmdcbiAgICAgKi9cbiAgICB2YXIgdGV4dEFyZWFUYXJnZXQgPSAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ3RleHRhcmVhLmZvcm1fX2lucHV0Jyk7XG4gICAgaWYgKHRleHRBcmVhVGFyZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2lucHV0JywgJ3RleHRhcmVhLmZvcm1fX2lucHV0JywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBmb3JtQnVpbGRlci50ZXh0QXJlYUhlaWdodChldmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignc2VsZWN0MjpvcGVuJywgJy5zZWxlY3QyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2VsZWN0X3NlYXJjaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QyLXNlYXJjaF9fZmllbGQnKTtcbiAgICAgICAgaWYgKHNlbGVjdF9zZWFyY2gpIHtcbiAgICAgICAgICAgIHNlbGVjdF9zZWFyY2guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIGNoZWNrcyByZWdpc3RyYXRpb24gYWdlbmN5LCBjb3VudHJ5IGFuZCByZWdpc3RyYXRpb24gbnVtYmVyIHRvIGRlZHVjZSBpZGVudGlmaWVyXG4gICAgICovXG4gICAgdXBkYXRlUmVnaXN0cmF0aW9uQWdlbmN5KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXphdGlvbl9jb3VudHJ5JykpO1xuICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJykuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVSZWdpc3RyYXRpb25BZ2VuY3koY291bnRyeSkge1xuICAgICAgICB2YXIgZW5kcG9pbnQgPSBjb3VudHJ5LnZhbCgpXG4gICAgICAgICAgICA/ICcvb3JnYW5pc2F0aW9uL2FnZW5jeS8nICsgY291bnRyeS52YWwoKVxuICAgICAgICAgICAgOiAnL29yZ2FuaXNhdGlvbi9hZ2VuY3kvJztcbiAgICAgICAganF1ZXJ5XzEuZGVmYXVsdC5hamF4KHsgdXJsOiBlbmRwb2ludCB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRfdmFsID0gKF9hID0gKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knKS52YWwoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICB2YXIgdmFsID0gZmFsc2U7XG4gICAgICAgICAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJyNvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeScpLmVtcHR5KCk7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gY3VycmVudF92YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3knKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKG5ldyBPcHRpb24ocmVzcG9uc2UuZGF0YVtkYXRhXSwgZGF0YSwgdHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5JylcbiAgICAgICAgICAgICAgICAudmFsKHZhbCA/IGN1cnJlbnRfdmFsIDogJycpXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ3NlbGVjdDI6c2VsZWN0JywgJyNvcmdhbml6YXRpb25fY291bnRyeScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdXBkYXRlUmVnaXN0cmF0aW9uQWdlbmN5KCgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKSk7XG4gICAgfSk7XG4gICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ3NlbGVjdDI6Y2xlYXInLCAnI29yZ2FuaXphdGlvbl9jb3VudHJ5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICB1cGRhdGVSZWdpc3RyYXRpb25BZ2VuY3koKDAsIGpxdWVyeV8xLmRlZmF1bHQpKHRoaXMpKTtcbiAgICB9KTtcbiAgICAoMCwganF1ZXJ5XzEuZGVmYXVsdCkoJ2JvZHknKS5vbignc2VsZWN0MjpzZWxlY3QnLCAnI29yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWRlbnRpZmllciA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSh0aGlzKS52YWwoKSArICctJyArICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI3JlZ2lzdHJhdGlvbl9udW1iZXInKS52YWwoKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInKS52YWwoaWRlbnRpZmllcik7XG4gICAgfSk7XG4gICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ3NlbGVjdDI6Y2xlYXInLCAnI29yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWRlbnRpZmllciA9ICctJyArICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI3JlZ2lzdHJhdGlvbl9udW1iZXInKS52YWwoKTtcbiAgICAgICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCcjb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInKS52YWwoaWRlbnRpZmllcik7XG4gICAgfSk7XG4gICAgKDAsIGpxdWVyeV8xLmRlZmF1bHQpKCdib2R5Jykub24oJ2tleXVwJywgJyNyZWdpc3RyYXRpb25fbnVtYmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWRlbnRpZmllciA9ICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5JykudmFsKCkgKyAnLScgKyAoMCwganF1ZXJ5XzEuZGVmYXVsdCkodGhpcykudmFsKCk7XG4gICAgICAgICgwLCBqcXVlcnlfMS5kZWZhdWx0KSgnI29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJykudmFsKGlkZW50aWZpZXIpO1xuICAgIH0pO1xuICAgIC8vIGFkZCBjbGFzcyB0byB0aXRsZSBvZiBjb2xsZWN0aW9uIHdoZW4gdmFsaWRhdGlvbiBlcnJvciBvY2N1cnMgb24gY29sbGVjdGlvbiBsZXZlbFxuICAgIHZhciBzdWJlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN1YmVsZW1lbnQnKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmVsZW1lbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHRpdGxlID0gc3ViZWxlbWVudFtpXS5xdWVyeVNlbGVjdG9yKCcuY29udHJvbC1sYWJlbCcpO1xuICAgICAgICB2YXIgZXJyb3JDb250YWluZXIgPSBzdWJlbGVtZW50W2ldLnF1ZXJ5U2VsZWN0b3IoJy5jb2xsZWN0aW9uX2Vycm9yJyk7XG4gICAgICAgIHZhciBjaGlsZENvdW50ID0gZXJyb3JDb250YWluZXIgPT09IG51bGwgfHwgZXJyb3JDb250YWluZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVycm9yQ29udGFpbmVyLmNoaWxkRWxlbWVudENvdW50O1xuICAgICAgICBpZiAoY2hpbGRDb3VudCAmJiBjaGlsZENvdW50ID4gMCkge1xuICAgICAgICAgICAgdGl0bGUgPT09IG51bGwgfHwgdGl0bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRpdGxlLmNsYXNzTGlzdC5hZGQoJ2Vycm9yLXRpdGxlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWRkaW5nIGN1cnNvciBub3QgYWxsb3dlZCB0byA8c2VsZWN0PiB3aGVyZSBlbGVtZW50SnNvblNjaGVtYSByZWFkX29ubHkgOiB0cnVlXG4gICAgdmFyIHJlYWRPbmx5U2VsZWN0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NlbGVjdC5jdXJzb3Itbm90LWFsbG93ZWQnKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlYWRPbmx5U2VsZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VsZWN0ID0gcmVhZE9ubHlTZWxlY3RzW2ldO1xuICAgICAgICB2YXIgc2VsZWN0RWxlbWVudFBhcmVudFdyYXBwZXIgPSBzZWxlY3QubmV4dFNpYmxpbmc7XG4gICAgICAgIHZhciBzZWxlY3RFbGVtZW50UGFyZW50ID0gc2VsZWN0RWxlbWVudFBhcmVudFdyYXBwZXIgPT09IG51bGwgfHwgc2VsZWN0RWxlbWVudFBhcmVudFdyYXBwZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlbGVjdEVsZW1lbnRQYXJlbnRXcmFwcGVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHZhciBzZWxlY3RFbGVtZW50ID0gc2VsZWN0RWxlbWVudFBhcmVudCA9PT0gbnVsbCB8fCBzZWxlY3RFbGVtZW50UGFyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWxlY3RFbGVtZW50UGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmIChzZWxlY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBzZWxlY3RFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdub3QtYWxsb3dlZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVsZXRlLXBhcmVudC1zZWxlY3RvcicpO1xuICAgIGZ1bmN0aW9uIGNoYW5nZURlbGV0ZUJ1dHRvbklubmVySHRtbChidXR0b24pIHtcbiAgICAgICAgdmFyIGluaXRpYWxUZXh0ID0gZXNjYXBlSHRtbChidXR0b24udGV4dENvbnRlbnQpO1xuICAgICAgICBidXR0b24uaW5uZXJIVE1MID0gXCJcXG4gICAgICA8c3ZnIHdpZHRoPVxcXCIxNlxcXCIgaGVpZ2h0PVxcXCIxNlxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPlxcbiAgICAgICAgPHBhdGggZD1cXFwiTTYuNjY2NjcgMTJDNi44NDM0OCAxMiA3LjAxMzA1IDExLjkyOTggNy4xMzgwNyAxMS44MDQ3QzcuMjYzMSAxMS42Nzk3IDcuMzMzMzMgMTEuNTEwMSA3LjMzMzMzIDExLjMzMzNWNy4zMzMzNEM3LjMzMzMzIDcuMTU2NTMgNy4yNjMxIDYuOTg2OTYgNy4xMzgwNyA2Ljg2MTkzQzcuMDEzMDUgNi43MzY5MSA2Ljg0MzQ4IDYuNjY2NjcgNi42NjY2NyA2LjY2NjY3QzYuNDg5ODYgNi42NjY2NyA2LjMyMDI5IDYuNzM2OTEgNi4xOTUyNiA2Ljg2MTkzQzYuMDcwMjQgNi45ODY5NiA2IDcuMTU2NTMgNiA3LjMzMzM0VjExLjMzMzNDNiAxMS41MTAxIDYuMDcwMjQgMTEuNjc5NyA2LjE5NTI2IDExLjgwNDdDNi4zMjAyOSAxMS45Mjk4IDYuNDg5ODYgMTIgNi42NjY2NyAxMlpNMTMuMzMzMyA0SDEwLjY2NjdWMy4zMzMzNEMxMC42NjY3IDIuODAyOSAxMC40NTYgMi4yOTQyIDEwLjA4MDkgMS45MTkxMkM5LjcwNTgxIDEuNTQ0MDUgOS4xOTcxIDEuMzMzMzQgOC42NjY2NyAxLjMzMzM0SDcuMzMzMzNDNi44MDI5IDEuMzMzMzQgNi4yOTQxOSAxLjU0NDA1IDUuOTE5MTIgMS45MTkxMkM1LjU0NDA1IDIuMjk0MiA1LjMzMzMzIDIuODAyOSA1LjMzMzMzIDMuMzMzMzRWNEgyLjY2NjY3QzIuNDg5ODYgNCAyLjMyMDI5IDQuMDcwMjQgMi4xOTUyNiA0LjE5NTI2QzIuMDcwMjQgNC4zMjAyOSAyIDQuNDg5ODYgMiA0LjY2NjY3QzIgNC44NDM0OCAyLjA3MDI0IDUuMDEzMDUgMi4xOTUyNiA1LjEzODA3QzIuMzIwMjkgNS4yNjMxIDIuNDg5ODYgNS4zMzMzNCAyLjY2NjY3IDUuMzMzMzRIMy4zMzMzM1YxMi42NjY3QzMuMzMzMzMgMTMuMTk3MSAzLjU0NDA1IDEzLjcwNTggMy45MTkxMiAxNC4wODA5QzQuMjk0MTkgMTQuNDU2IDQuODAyOSAxNC42NjY3IDUuMzMzMzMgMTQuNjY2N0gxMC42NjY3QzExLjE5NzEgMTQuNjY2NyAxMS43MDU4IDE0LjQ1NiAxMi4wODA5IDE0LjA4MDlDMTIuNDU2IDEzLjcwNTggMTIuNjY2NyAxMy4xOTcxIDEyLjY2NjcgMTIuNjY2N1Y1LjMzMzM0SDEzLjMzMzNDMTMuNTEwMSA1LjMzMzM0IDEzLjY3OTcgNS4yNjMxIDEzLjgwNDcgNS4xMzgwN0MxMy45Mjk4IDUuMDEzMDUgMTQgNC44NDM0OCAxNCA0LjY2NjY3QzE0IDQuNDg5ODYgMTMuOTI5OCA0LjMyMDI5IDEzLjgwNDcgNC4xOTUyNkMxMy42Nzk3IDQuMDcwMjQgMTMuNTEwMSA0IDEzLjMzMzMgNFpNNi42NjY2NyAzLjMzMzM0QzYuNjY2NjcgMy4xNTY1MiA2LjczNjkgMi45ODY5NiA2Ljg2MTkzIDIuODYxOTNDNi45ODY5NSAyLjczNjkxIDcuMTU2NTIgMi42NjY2NyA3LjMzMzMzIDIuNjY2NjdIOC42NjY2N0M4Ljg0MzQ4IDIuNjY2NjcgOS4wMTMwNSAyLjczNjkxIDkuMTM4MDcgMi44NjE5M0M5LjI2MzEgMi45ODY5NiA5LjMzMzMzIDMuMTU2NTIgOS4zMzMzMyAzLjMzMzM0VjRINi42NjY2N1YzLjMzMzM0Wk0xMS4zMzMzIDEyLjY2NjdDMTEuMzMzMyAxMi44NDM1IDExLjI2MzEgMTMuMDEzMSAxMS4xMzgxIDEzLjEzODFDMTEuMDEzIDEzLjI2MzEgMTAuODQzNSAxMy4zMzMzIDEwLjY2NjcgMTMuMzMzM0g1LjMzMzMzQzUuMTU2NTIgMTMuMzMzMyA0Ljk4Njk1IDEzLjI2MzEgNC44NjE5MyAxMy4xMzgxQzQuNzM2OSAxMy4wMTMxIDQuNjY2NjcgMTIuODQzNSA0LjY2NjY3IDEyLjY2NjdWNS4zMzMzNEgxMS4zMzMzVjEyLjY2NjdaTTkuMzMzMzMgMTJDOS41MTAxNCAxMiA5LjY3OTcxIDExLjkyOTggOS44MDQ3NCAxMS44MDQ3QzkuOTI5NzYgMTEuNjc5NyAxMCAxMS41MTAxIDEwIDExLjMzMzNWNy4zMzMzNEMxMCA3LjE1NjUzIDkuOTI5NzYgNi45ODY5NiA5LjgwNDc0IDYuODYxOTNDOS42Nzk3MSA2LjczNjkxIDkuNTEwMTQgNi42NjY2NyA5LjMzMzMzIDYuNjY2NjdDOS4xNTY1MiA2LjY2NjY3IDguOTg2OTUgNi43MzY5MSA4Ljg2MTkzIDYuODYxOTNDOC43MzY5MSA2Ljk4Njk2IDguNjY2NjcgNy4xNTY1MyA4LjY2NjY3IDcuMzMzMzRWMTEuMzMzM0M4LjY2NjY3IDExLjUxMDEgOC43MzY5MSAxMS42Nzk3IDguODYxOTMgMTEuODA0N0M4Ljk4Njk1IDExLjkyOTggOS4xNTY1MiAxMiA5LjMzMzMzIDEyWlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPlxcbiAgICAgIDwvc3ZnPlxcbiAgICAgIFwiLmNvbmNhdChpbml0aWFsVGV4dCk7XG4gICAgfVxuICAgIGRlbGV0ZUJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoYnV0dG9uKSB7IHJldHVybiBjaGFuZ2VEZWxldGVCdXR0b25Jbm5lckh0bWwoYnV0dG9uKTsgfSk7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9uc0xpc3QpIHtcbiAgICAgICAgbXV0YXRpb25zTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLm1hdGNoZXMoJy5kZWxldGUtaXRlbS1zZWxlY3RvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGVsZXRlQnV0dG9uSW5uZXJIdG1sKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0RlbGV0ZUJ1dHRvbnMgPSBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZWxldGUtaXRlbS1zZWxlY3RvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlbGV0ZUJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VEZWxldGVCdXR0b25Jbm5lckh0bWwoYnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gZG9lcyB0d28gbWFpbiB0aGluZ3M6XG4gICAgICpcbiAgICAgKiAxLiBBZGRzIGEgY2xpY2sgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGJ1dHRvbiB0byBjb250cm9sIHRoZSBjb2xsYXBzaWJsZSBmbG93OlxuICAgICAqICAgIC0gSXQgZmluZHMgdGhlIGNsb3Nlc3QgPGxhYmVsPiBlbGVtZW50IHJlbGF0ZWQgdG8gdGhlIGJ1dHRvbi5cbiAgICAgKiAgICAtIFdpdGhpbiB0aGF0IDxsYWJlbD4sIGl0IGxvb2tzIGZvciBhbiBlbGVtZW50IHdpdGggdGhlIGNsYXNzICdvcHRpb25hbC10ZXh0Jy4gSWYgaXQgZmluZHMgJ29wdGlvbmFsLXRleHQnLCBpdCB0b2dnbGVzIGhvdyB0aGF0IHRleHQgaXMgZGlzcGxheWVkIChlaXRoZXIgd2l0aCBicmFja2V0cyBvciBhbiBpY29uKS5cbiAgICAgKiAgICAtIEl0IGFsc28gbG9jYXRlcyB0aGUgbmVhcmVzdCBwYXJlbnQgZWxlbWVudCB3aXRoIHRoZSBjbGFzc2VzICdzdWJlbGVtZW50IHJvdW5kZWQtdC1zbScuIElmIHRoYXQgcGFyZW50IHN1YmVsZW1lbnQgZXhpc3RzLCBpdCB0b2dnbGVzIGl0cyBzdGF0ZSB0byBlaXRoZXIgY29sbGFwc2Ugb3IgZXhwYW5kIHRoZSBmb3JtIHNlY3Rpb24uXG4gICAgICogICAgLSBGaW5hbGx5LCBpdCByb3RhdGVzIHRoZSBjb2xsYXBzZSBidXR0b24gZWFjaCB0aW1lIGl04oCZcyBjbGlja2VkLlxuICAgICAqXG4gICAgICogMi4gSXQgdHJpZ2dlcnMgdGhlIGJ1dHRvbiBjbGljayBldmVudCBpZiB0aGUgc3ViZWxlbWVudCBpcyBvcHRpb25hbCB1c2luZyB0aGUgZmxhZzogdGhpc0J1dHRvbkJlbG9uZ3NUb09wdGlvbmFsRm9ybS5cbiAgICAgKiAgICBUaGlzIGVuc3VyZXMgb3B0aW9uYWwgZm9ybXMgc3RhcnQgb2ZmIGNvbGxhcHNlZCBieSBkZWZhdWx0IHdoZW4gcmVuZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnV0dG9uIC0gVGhlIGJ1dHRvbiBlbGVtZW50IHRoYXQgbWFuYWdlcyB0aGUgY29sbGFwc2libGUgZm9ybSBzZWN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGF0dGFjaENvbGxhcHNhYmxlQnV0dG9uRXZlbnRzKGJ1dHRvbikge1xuICAgICAgICB2YXIgbGFiZWwgPSBnZXRDbG9zZXN0TGFiZWxEb20oYnV0dG9uKTtcbiAgICAgICAgdmFyIG9wdGlvbmFsTGFiZWwgPSBsYWJlbCA/IGdldE9wdGlvbmFsVGV4dERvbShsYWJlbCkgOiBudWxsO1xuICAgICAgICB2YXIgc3ViZWxlbWVudCA9IGxhYmVsID8gZ2V0Q2xvc2VzdFBhcmVudFN1YmVsZW1lbnREb20obGFiZWwpIDogbnVsbDtcbiAgICAgICAgdmFyIHRoaXNCdXR0b25CZWxvbmdzVG9PcHRpb25hbEZvcm0gPSBvcHRpb25hbExhYmVsICE9PSBudWxsO1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqLyBjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLCBvb19vbyhcIjczNjg4MjMyOF82NDBfNF82NDBfMjdfNFwiLCBzdWJlbGVtZW50KSk7XG4gICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25hbExhYmVsKSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlT3B0aW9uYWxUZXh0KG9wdGlvbmFsTGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN1YmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGVBY2NvcmRpb25JdGVtcyhzdWJlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdyb3RhdGUtMTgwJyk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqLyBjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLCBvb19vbyhcIjczNjg4MjMyOF82NTRfNF82NTdfNV80XCIsIHRoaXNCdXR0b25CZWxvbmdzVG9PcHRpb25hbEZvcm0sICFlcnJvck1lc3NhZ2VFeGlzdHMoc3ViZWxlbWVudCkpKTtcbiAgICAgICAgaWYgKHRoaXNCdXR0b25CZWxvbmdzVG9PcHRpb25hbEZvcm0gJiYgIWVycm9yTWVzc2FnZUV4aXN0cyhzdWJlbGVtZW50KSkge1xuICAgICAgICAgICAgYnV0dG9uLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYW55IGVycm9yIG1lc3NhZ2UgZXhpc3RzIGluIHRoZSBzdWJlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN1YmVsZW1lbnRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcnJvck1lc3NhZ2VFeGlzdHMoc3ViZWxlbWVudCkge1xuICAgICAgICB2YXIgZXJyb3JEaXZzID0gc3ViZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3InKTtcbiAgICAgICAgdmFyIGVycm9yVGV4dHMgPSBzdWJlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50ZXh0LWRhbmdlci1lcnJvcicpO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGVycm9yRGl2c18xID0gZXJyb3JEaXZzOyBfaSA8IGVycm9yRGl2c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGRpdiA9IGVycm9yRGl2c18xW19pXTtcbiAgICAgICAgICAgIGlmIChkaXYudGV4dENvbnRlbnQudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIF9hID0gMCwgZXJyb3JUZXh0c18xID0gZXJyb3JUZXh0czsgX2EgPCBlcnJvclRleHRzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgICAgICB2YXIgZGl2ID0gZXJyb3JUZXh0c18xW19hXTtcbiAgICAgICAgICAgIGlmIChkaXYudGV4dENvbnRlbnQudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjbG9zZXN0IDxsYWJlbD4gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBidXR0b25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRDbG9zZXN0TGFiZWxEb20oYnV0dG9uKSB7XG4gICAgICAgIHJldHVybiBidXR0b24uY2xvc2VzdCgnbGFiZWwnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjbG9zZXN0IGVsZW1lbnQgd2l0aCBjbGFzcyAnb3B0aW9uYWwtdGV4dCcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFiZWxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRPcHRpb25hbFRleHREb20obGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIGxhYmVsLnF1ZXJ5U2VsZWN0b3IoJy5vcHRpb25hbC10ZXh0Jyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZpcnN0IE50aCBwYXJlbnQgdGhhdCBoYXMgY2xhc3MgJ3N1YmVsZW1lbnQnLlxuICAgICAqXG4gICAgICogQHBhcmFtIGxhYmVsXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0Q2xvc2VzdFBhcmVudFN1YmVsZW1lbnREb20obGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIGxhYmVsLmNsb3Nlc3QoJy5zdWJlbGVtZW50LnJvdW5kZWQtdC1zbScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHdoYXQgaXMgcmVuZGVyZWQgb24gb3B0aW9uYWwgdGV4dC4gKGRvdCBvciBicmFja2V0KVxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbmFsTGFiZWxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b2dnbGVPcHRpb25hbFRleHQob3B0aW9uYWxMYWJlbCkge1xuICAgICAgICB2YXIgb3B0aW9uYWxMYWJlbFdpdGhTdmcgPSAnPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDlhMS44NyAxLjg3IDAgMSAwIDMuNzQgMEExLjg3IDEuODcgMCAwIDAgNiA5WlwiIGZpbGw9XCIjNjg3OTdFXCI+PC9wYXRoPjwvc3ZnPjxzcGFuPk9wdGlvbmFsPC9zcGFuPic7XG4gICAgICAgIHZhciBvcHRpb25hbExhYmVsV2l0aEJyYWNrZXRzID0gJzxzcGFuPiggT3B0aW9uYWwgKTwvc3Bhbj4nO1xuICAgICAgICB2YXIgc3ZnRXhpc3RzID0gb3B0aW9uYWxMYWJlbC5xdWVyeVNlbGVjdG9yKCdzdmcnKSAhPT0gbnVsbDtcbiAgICAgICAgaWYgKHN2Z0V4aXN0cykge1xuICAgICAgICAgICAgb3B0aW9uYWxMYWJlbC5pbm5lckhUTUwgPSBvcHRpb25hbExhYmVsV2l0aEJyYWNrZXRzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9uYWxMYWJlbC5pbm5lckhUTUwgPSBvcHRpb25hbExhYmVsV2l0aFN2ZztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGNvbGxhcHNlZCBzdGF0ZS4gKGV4cGFuZCBvciBjb2xsYXBzZWQpXG4gICAgICpcbiAgICAgKiBLZXkgY29uc2lkZXJhdGlvbnM6XG4gICAgICogMS4gVGhlIFwiQWRkIEFkZGl0aW9uYWxcIiBidXR0b24gY2FuIGJlIGVpdGhlciBpbnNpZGUgb3Igb3V0c2lkZSB0aGUgc3ViZWxlbWVudC5cbiAgICAgKiAyLiBXaGVuIHRoZSBidXR0b24gaXMgb3V0c2lkZSwgaXQgd2lsbCBhbHdheXMgYmUgdGhlIGltbWVkaWF0ZSBzaWJsaW5nIHRvIHRoZSBzdWJlbGVtZW50LlxuICAgICAqIDMuIFRoZSBjb2xsYXBzZSBtZWNoYW5pc20gaXMgaGFuZGxlZCBieSBhZGp1c3RpbmcgdGhlIG1heCBoZWlnaHQgdG8gZ2l2ZSB0aGUgaWxsdXNpb24gb2Ygc2xpZGluZyB1cC5cbiAgICAgKiA0LiBJZiB0aGUgYnV0dG9uIGlzIG91dHNpZGUgdGhlIHN1YmVsZW1lbnQsIHRoZSBzbGlkZS11cCBlZmZlY3Qgd2lsbCBub3QgYWZmZWN0IHRoZSBidXR0b24uXG4gICAgICogICAgVGhlcmVmb3JlLCB3ZSB0b2dnbGUgdGhlICdkaXNwbGF5LW5vbmUnIGNsYXNzIHRvIGNvbnRyb2wgaXRzIHZpc2liaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3ViZWxlbWVudFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvZ2dsZUFjY29yZGlvbkl0ZW1zKHN1YmVsZW1lbnQpIHtcbiAgICAgICAgZnVuY3Rpb24gaXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZShzdWJlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSBzdWJlbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgIGlmIChuZXh0U2libGluZyAmJiBuZXh0U2libGluZy50YWdOYW1lID09PSAnQlVUVE9OJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAobmV4dFNpYmxpbmcuY2xhc3NMaXN0LmNvbnRhaW5zKCdhZGRfbW9yZScpICYmXG4gICAgICAgICAgICAgICAgICAgIG5leHRTaWJsaW5nLmNsYXNzTGlzdC5jb250YWlucygnYnV0dG9uJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoaWRlYWJsZVN1YmVsZW1lbnRzID0gX19zcHJlYWRBcnJheShbXSwgc3ViZWxlbWVudC5jaGlsZHJlbiwgdHJ1ZSkuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gY2hpbGQudGFnTmFtZSAhPT0gJ0xBQkVMJzsgfSk7XG4gICAgICAgIHZhciBvdXRzaWRlQnV0dG9uID0gbnVsbDtcbiAgICAgICAgdmFyIGhhc0FkZEFkZGl0aW9uYWxCdXR0b25PdXRzaWRlID0gaXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZShzdWJlbGVtZW50KTtcbiAgICAgICAgaWYgKGhhc0FkZEFkZGl0aW9uYWxCdXR0b25PdXRzaWRlKSB7XG4gICAgICAgICAgICBvdXRzaWRlQnV0dG9uID0gc3ViZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAob3V0c2lkZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIG91dHNpZGVCdXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgnZGlzcGxheS1ub25lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaGlkZWFibGVTdWJlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgaWYgKGhhc0FkZEFkZGl0aW9uYWxCdXR0b25PdXRzaWRlICYmIG91dHNpZGVCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBzdWJlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ21iLTYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoJ2hlaWdodC1oaWRlJykpIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QucmVtb3ZlKCdoZWlnaHQtaGlkZScpO1xuICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ2hlaWdodC1zaG93Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QucmVtb3ZlKCdoZWlnaHQtc2hvdycpO1xuICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ2hlaWdodC1oaWRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGZvcm1zIHJlbmRlcmVkIG9uIGluaXRpYWwgcGFnZSBsb2FkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGF0dGFjaEluaXRpYWxDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cygpIHtcbiAgICAgICAgdmFyIGFsbENvbGxhcHNhYmxlQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2xsYXBzYWJsZS1idXR0b24nKTtcbiAgICAgICAgYWxsQ29sbGFwc2FibGVCdXR0b25zLmZvckVhY2goZnVuY3Rpb24gKGJ1dHRvbikge1xuICAgICAgICAgICAgcmV0dXJuIGF0dGFjaENvbGxhcHNhYmxlQnV0dG9uRXZlbnRzKGJ1dHRvbik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGZvcm1zIHJlbmRlcmVkIG9uIGNsaWNraW5nICdBREQgQURESVRJT05BTCBYJyBidXR0b24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JzZXJ2ZU5ld0NvbGxhcHNhYmxlQnV0dG9ucygpIHtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9uc0xpc3QpIHtcbiAgICAgICAgICAgIG11dGF0aW9uc0xpc3QuZm9yRWFjaChmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0NvbGxhcHNhYmxlQnV0dG9ucyA9IG5vZGUucXVlcnlTZWxlY3RvckFsbCgnLmNvbGxhcHNhYmxlLWJ1dHRvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbGxhcHNhYmxlQnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaENvbGxhcHNhYmxlQnV0dG9uRXZlbnRzKGJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgYXR0YWNoSW5pdGlhbENvbGxhcHNhYmxlQnV0dG9uRXZlbnRzKCk7XG4gICAgb2JzZXJ2ZU5ld0NvbGxhcHNhYmxlQnV0dG9ucygpO1xufSk7XG5mdW5jdGlvbiBlc2NhcGVIdG1sKHVuc2FmZSkge1xuICAgIHJldHVybiB1bnNhZmVcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAgICAgLnJlcGxhY2UoLycvZywgJyYjMDM5OycpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gLyogYzggaWdub3JlIHN0YXJ0ICovIC8qIGVzbGludC1kaXNhYmxlICovIDtcbmZ1bmN0aW9uIG9vX2NtKCkgeyB0cnkge1xuICAgIHJldHVybiAoMCwgZXZhbCkoXCJnbG9iYWxUaGlzLl9jb25zb2xlX25pbmphXCIpIHx8ICgwLCBldmFsKShcIi8qIGh0dHBzOi8vZ2l0aHViLmNvbS93YWxsYWJ5anMvY29uc29sZS1uaW5qYSNob3ctZG9lcy1pdC13b3JrICovJ3VzZSBzdHJpY3QnO3ZhciBfMHhiMzg0Nzk9XzB4MjY5MDsoZnVuY3Rpb24oXzB4M2RhOWE3LF8weDEyOTk4Myl7dmFyIF8weDI0MTNmMj1fMHgyNjkwLF8weDRlZDdiYT1fMHgzZGE5YTcoKTt3aGlsZSghIVtdKXt0cnl7dmFyIF8weDE1MzU2MD0tcGFyc2VJbnQoXzB4MjQxM2YyKDB4MTk1KSkvMHgxKihwYXJzZUludChfMHgyNDEzZjIoMHgxYzgpKS8weDIpKy1wYXJzZUludChfMHgyNDEzZjIoMHgxOTEpKS8weDMqKHBhcnNlSW50KF8weDI0MTNmMigweDFhZikpLzB4NCkrcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWQyKSkvMHg1Ky1wYXJzZUludChfMHgyNDEzZjIoMHgxYWEpKS8weDYqKC1wYXJzZUludChfMHgyNDEzZjIoMHgxOTkpKS8weDcpK3BhcnNlSW50KF8weDI0MTNmMigweDFjOSkpLzB4OCstcGFyc2VJbnQoXzB4MjQxM2YyKDB4MWVhKSkvMHg5K3BhcnNlSW50KF8weDI0MTNmMigweDFmNykpLzB4YSooLXBhcnNlSW50KF8weDI0MTNmMigweDE4YikpLzB4Yik7aWYoXzB4MTUzNTYwPT09XzB4MTI5OTgzKWJyZWFrO2Vsc2UgXzB4NGVkN2JhWydwdXNoJ10oXzB4NGVkN2JhWydzaGlmdCddKCkpO31jYXRjaChfMHgxMTRkZTYpe18weDRlZDdiYVsncHVzaCddKF8weDRlZDdiYVsnc2hpZnQnXSgpKTt9fX0oXzB4NDlmYiwweDc1Nzc5KSk7ZnVuY3Rpb24gXzB4NDlmYigpe3ZhciBfMHgzMTNjMjk9WydfcXVvdGVkUmVnRXhwJywnd2FybicsJ2F1dG9FeHBhbmRQcmV2aW91c09iamVjdHMnLCdnZXRQcm90b3R5cGVPZicsJ19XZWJTb2NrZXQnLCdnZXR0ZXInLCcxMjMwVEVwbGxoJywnZmFpbGVkXFxcXHgyMHRvXFxcXHgyMGNvbm5lY3RcXFxceDIwdG9cXFxceDIwaG9zdDpcXFxceDIwJywnX3NvcnRQcm9wcycsJ2NvdW50Jywnc29ydCcsJ3NldCcsJ251bGwnLCd0b0xvd2VyQ2FzZScsJ25lZ2F0aXZlWmVybycsJ2pvaW4nLCdzdGFjaycsJ19oYXNTeW1ib2xQcm9wZXJ0eU9uSXRzUGF0aCcsJ2N1cnJlbnQnLCdfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywndGhlbicsJ2dldE93blByb3BlcnR5U3ltYm9scycsJ0hUTUxBbGxDb2xsZWN0aW9uJywndXJsJywncGF0aFRvRmlsZVVSTCcsJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJywnY2FwcGVkJywnX2lzTWFwJywnZXhwcmVzc2lvbnNUb0V2YWx1YXRlJywncm9vdEV4cHJlc3Npb24nLCd1bnJlZicsJ2Z1bmN0aW9uJywnaGl0cycsJ3N0ckxlbmd0aCcsJ19oYXNNYXBPbkl0c1BhdGgnLCdmYWlsZWRcXFxceDIwdG9cXFxceDIwZmluZFxcXFx4MjBhbmRcXFxceDIwbG9hZFxcXFx4MjBXZWJTb2NrZXQnLCdfdW5kZWZpbmVkJywnbmFtZScsJ19zZW5kRXJyb3JNZXNzYWdlJywnZXZlbnRSZWNlaXZlZENhbGxiYWNrJywnX3BfbGVuZ3RoJywnZ2xvYmFsJywnZXJyb3InLCdcXFxceDIwYnJvd3NlcicsJ25lZ2F0aXZlSW5maW5pdHknLCdbb2JqZWN0XFxcXHgyMFNldF0nLCdzZW5kJywncHJvdG90eXBlJywnZGVwdGgnLCdyZWFkeVN0YXRlJywnX3RyZWVOb2RlUHJvcGVydGllc0JlZm9yZUZ1bGxWYWx1ZScsJ3VuZGVmaW5lZCcsJ19TeW1ib2wnLCdfcHJvcGVydHknLCdTZXQnLCdtYXAnLCdfaW5OZXh0RWRnZScsJ3ZhbHVlT2YnLCdzZWVcXFxceDIwaHR0cHM6Ly90aW55dXJsLmNvbS8ydnQ4anh6d1xcXFx4MjBmb3JcXFxceDIwbW9yZVxcXFx4MjBpbmZvLicsJ19vYmplY3RUb1N0cmluZycsJ3Bvc2l0aXZlSW5maW5pdHknLCdiaW5kJywnY2FsbCcsJ19pc05lZ2F0aXZlWmVybycsJ05FWFRfUlVOVElNRScsJ2xvZ2dlclxcXFx4MjB3ZWJzb2NrZXRcXFxceDIwZXJyb3InLCdfZ2V0T3duUHJvcGVydHlOYW1lcycsJ21lc3NhZ2UnLCdiaWdpbnQnLCd0aW1lJywnc3RhcnRzV2l0aCcsJ19jbGVhbk5vZGUnLCdfZGlzcG9zZVdlYnNvY2tldCcsJ19yZWdFeHBUb1N0cmluZycsJ29uZXJyb3InLCdjb25jYXQnLCcxLjAuMCcsJ2Jvb2xlYW4nLCdbb2JqZWN0XFxcXHgyMERhdGVdJywncmVtaXgnLCdsZW5ndGgnLCdzb3J0UHJvcHMnLCdvbm9wZW4nLCdfa2V5U3RyUmVnRXhwJywnZGF0YScsJ3JlZHVjZUxpbWl0cycsJ3Byb3BzJywnc29tZScsJ19jYXBJZlN0cmluZycsJzE3MzEwNDA5MzQ3MDQnLCdwZXJmX2hvb2tzJywnb2JqZWN0JywndmVyc2lvbnMnLCdmcm9tQ2hhckNvZGUnLCduYW4nLCdhdXRvRXhwYW5kTGltaXQnLCdsb2cnLCdnZXQnLCdwYXJzZScsJ19jb25uZWN0ZWQnLCdzdWJzdHInLCdub2RlTW9kdWxlcycsJ1xcXFx4MjBzZXJ2ZXInLCdfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0JywnX2Nvbm5lY3RpbmcnLCdNYXAnLFxcXCIvaG9tZS9mbHVmZnkvLnZzY29kZS9leHRlbnNpb25zL3dhbGxhYnlqcy5jb25zb2xlLW5pbmphLTEuMC4zNjYvbm9kZV9tb2R1bGVzXFxcIiwnTkVHQVRJVkVfSU5GSU5JVFknLCdfd3MnLCdjb25zb2xlJywnZG9ja2VyaXplZEFwcCcsJ190eXBlJywnX2NvbnNvbGVfbmluamFfc2Vzc2lvbicsJ2VsZW1lbnRzJywnYWxsU3RyTGVuZ3RoJywnX2FkZExvYWROb2RlJywnc3ltYm9sJywncm9vdF9leHBfaWQnLCdfYWxsb3dlZFRvU2VuZCcsJ3dzL2luZGV4LmpzJywncGVyZm9ybWFuY2UnLCdfc2V0Tm9kZUlkJywnX2JsYWNrbGlzdGVkUHJvcGVydHknLCdSZWdFeHAnLCdyZXBsYWNlJywnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnLCd0aW1lU3RhbXAnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlc3RhcnRpbmdcXFxceDIwdGhlXFxcXHgyMHByb2Nlc3NcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJ2FuZ3VsYXInLCdjYXBwZWRFbGVtZW50cycsJ19zb2NrZXQnLCdfaXNVbmRlZmluZWQnLCdfaXNQcmltaXRpdmVXcmFwcGVyVHlwZScsJ2dldFdlYlNvY2tldENsYXNzJywnbWV0aG9kJywnW29iamVjdFxcXFx4MjBNYXBdJywndGVzdCcsJ19zZXROb2RlRXhwYW5kYWJsZVN0YXRlJywnc3RhY2tUcmFjZUxpbWl0JywnW29iamVjdFxcXFx4MjBBcnJheV0nLCcyMTIxOVlyUmxVZScsJ19tYXhDb25uZWN0QXR0ZW1wdENvdW50JywnaHR0cHM6Ly90aW55dXJsLmNvbS8zN3g4Yjc5dCcsJzEyNy4wLjAuMScsJ29uY2xvc2UnLCdDb25zb2xlXFxcXHgyME5pbmphXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBzZW5kXFxcXHgyMGxvZ3MsXFxcXHgyMHJlZnJlc2hpbmdcXFxceDIwdGhlXFxcXHgyMHBhZ2VcXFxceDIwbWF5XFxcXHgyMGhlbHA7XFxcXHgyMGFsc29cXFxceDIwc2VlXFxcXHgyMCcsJzIyNjE2MW5adGZXSCcsJ19uaW5qYUlnbm9yZU5leHRFcnJvcicsJ2FyZ3MnLCdkaXNhYmxlZExvZycsJzI5NTNzQm9pZlMnLCdtYXRjaCcsW1xcXCJsb2NhbGhvc3RcXFwiLFxcXCIxMjcuMC4wLjFcXFwiLFxcXCJleGFtcGxlLmN5cHJlc3MuaW9cXFwiLFxcXCJmbHVmZnlcXFwiLFxcXCIxOTIuMTY4LjEwLjE3MVxcXCJdLCdzdHJpbmdpZnknLCc4MDE5NjJTQ1FRREUnLCdpbmNsdWRlcycsJ19pc1ByaW1pdGl2ZVR5cGUnLCdocnRpbWUnLCdmdW5jTmFtZScsJ3B1c2gnLCd3czovLycsJ29ubWVzc2FnZScsJ2xvY2F0aW9uJywndW5zaGlmdCcsJ3Byb2Nlc3MnLCdfaXNTZXQnLCdfSFRNTEFsbENvbGxlY3Rpb24nLCdfV2ViU29ja2V0Q2xhc3MnLCd0b1VwcGVyQ2FzZScsJ2F1dG9FeHBhbmRNYXhEZXB0aCcsJ3RvdGFsU3RyTGVuZ3RoJywnNnZHRGFVZicsJ3RyYWNlJywnZGF0ZScsJ251bWJlcicsJ3ZhbHVlJywnNFRuZEZIQicsJ3JlbG9hZCcsJ25vRnVuY3Rpb25zJywnY292ZXJhZ2UnLCdjcmVhdGUnLCdfYXR0ZW1wdFRvUmVjb25uZWN0U2hvcnRseScsJ3RvU3RyaW5nJywnX2FkZE9iamVjdFByb3BlcnR5JywnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywnX2FkZEZ1bmN0aW9uc05vZGUnLCdfYWRkUHJvcGVydHknLCdhdXRvRXhwYW5kJywnYXJyYXknLCdfY29ubmVjdFRvSG9zdE5vdycsJ3BhcmVudCcsJ2NhcHBlZFByb3BzJywnZGVmaW5lUHJvcGVydHknLCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywnbm9kZScsJ3Vua25vd24nLCdfaW5Ccm93c2VyJywnY29uc3RydWN0b3InLCdfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnLCdjYXRjaCcsJ2xvZ2dlclxcXFx4MjBmYWlsZWRcXFxceDIwdG9cXFxceDIwY29ubmVjdFxcXFx4MjB0b1xcXFx4MjBob3N0JywnNDEyZFpXbWpQJywnNTk5OTEyOHpVSHNmaycsJ3N0cmluZycsJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnLCdfcHJvcGVydHlOYW1lJywnX2NvbnNvbGVfbmluamEnLCcnLCdzZXJpYWxpemUnLCcuLi4nLCdpbmRleCcsJzM3NjY4MDVMWnVXT0knLCdfdHJlZU5vZGVQcm9wZXJ0aWVzQWZ0ZXJGdWxsVmFsdWUnLCdleHBJZCcsJ3R5cGUnLCdOdW1iZXInLCdfc2V0Tm9kZVBlcm1pc3Npb25zJywnX3BfbmFtZScsJ2dhdGV3YXkuZG9ja2VyLmludGVybmFsJywnU3RyaW5nJywnaG9zdCcsJ3Jlc29sdmVHZXR0ZXJzJywnb3JpZ2luJywnbmV4dC5qcycsJzMzNDUzJywnX3JlY29ubmVjdFRpbWVvdXQnLCdmb3JFYWNoJywnX3BfJywnX3NldE5vZGVMYWJlbCcsJ2VudicsJ19jb25uZWN0QXR0ZW1wdENvdW50JywnaG9zdG5hbWUnLCdTeW1ib2wnLCdlbGFwc2VkJywnZWRnZScsJzE5NDEzMDlsY2NWUFMnLCdfYWRkaXRpb25hbE1ldGFkYXRhJywnbGV2ZWwnLCdfZ2V0T3duUHJvcGVydHlTeW1ib2xzJywnd2VicGFjaycsJ25vdycsJ19hbGxvd2VkVG9Db25uZWN0T25TZW5kJ107XzB4NDlmYj1mdW5jdGlvbigpe3JldHVybiBfMHgzMTNjMjk7fTtyZXR1cm4gXzB4NDlmYigpO312YXIgSz1PYmplY3RbXzB4YjM4NDc5KDB4MWIzKV0sUT1PYmplY3RbXzB4YjM4NDc5KDB4MWJmKV0sRz1PYmplY3RbXzB4YjM4NDc5KDB4MWI3KV0sZWU9T2JqZWN0W18weGIzODQ3OSgweDFjMCldLHRlPU9iamVjdFtfMHhiMzg0NzkoMHgxZjQpXSxuZT1PYmplY3RbXzB4YjM4NDc5KDB4MjIwKV1bJ2hhc093blByb3BlcnR5J10scmU9KF8weDUxMDEyMixfMHg1ODcwNGYsXzB4MmU0NGY2LF8weDIwYmIzOSk9Pnt2YXIgXzB4MmZjYTkxPV8weGIzODQ3OTtpZihfMHg1ODcwNGYmJnR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDI0Yyl8fHR5cGVvZiBfMHg1ODcwNGY9PV8weDJmY2E5MSgweDIxMCkpe2ZvcihsZXQgXzB4NTczNGEwIG9mIGVlKF8weDU4NzA0ZikpIW5lWydjYWxsJ10oXzB4NTEwMTIyLF8weDU3MzRhMCkmJl8weDU3MzRhMCE9PV8weDJlNDRmNiYmUShfMHg1MTAxMjIsXzB4NTczNGEwLHsnZ2V0JzooKT0+XzB4NTg3MDRmW18weDU3MzRhMF0sJ2VudW1lcmFibGUnOiEoXzB4MjBiYjM5PUcoXzB4NTg3MDRmLF8weDU3MzRhMCkpfHxfMHgyMGJiMzlbJ2VudW1lcmFibGUnXX0pO31yZXR1cm4gXzB4NTEwMTIyO30sVj0oXzB4MTQ4ZDFkLF8weDQzN2Q3OCxfMHg1ZWMxMzEpPT4oXzB4NWVjMTMxPV8weDE0OGQxZCE9bnVsbD9LKHRlKF8weDE0OGQxZCkpOnt9LHJlKF8weDQzN2Q3OHx8IV8weDE0OGQxZHx8IV8weDE0OGQxZFsnX19lcycrJ01vZHVsZSddP1EoXzB4NWVjMTMxLCdkZWZhdWx0Jyx7J3ZhbHVlJzpfMHgxNDhkMWQsJ2VudW1lcmFibGUnOiEweDB9KTpfMHg1ZWMxMzEsXzB4MTQ4ZDFkKSksWj1jbGFzc3tjb25zdHJ1Y3RvcihfMHgzYjQ2NTUsXzB4MWQ1YmU4LF8weDM2OGRjZixfMHg1ZjRlYjEsXzB4NWU4NDJmLF8weDg2ODc5ZCl7dmFyIF8weDVlMGU1NT1fMHhiMzg0NzksXzB4MTg1OWZiLF8weGM1N2IwLF8weDUzZjU4NCxfMHgyZWUzNjQ7dGhpc1tfMHg1ZTBlNTUoMHgyMWEpXT1fMHgzYjQ2NTUsdGhpc1tfMHg1ZTBlNTUoMHgxZGIpXT1fMHgxZDViZTgsdGhpc1sncG9ydCddPV8weDM2OGRjZix0aGlzWydub2RlTW9kdWxlcyddPV8weDVmNGViMSx0aGlzW18weDVlMGU1NSgweDI1ZildPV8weDVlODQyZix0aGlzW18weDVlMGU1NSgweDIxOCldPV8weDg2ODc5ZCx0aGlzW18weDVlMGU1NSgweDE3NSldPSEweDAsdGhpc1tfMHg1ZTBlNTUoMHgxZjApXT0hMHgwLHRoaXNbJ19jb25uZWN0ZWQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDVlMGU1NSgweDIyOSldPSgoXzB4YzU3YjA9KF8weDE4NTlmYj1fMHgzYjQ2NTVbXzB4NWUwZTU1KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDE4NTlmYltfMHg1ZTBlNTUoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4YzU3YjBbXzB4NWUwZTU1KDB4MjMxKV0pPT09XzB4NWUwZTU1KDB4MWU5KSx0aGlzW18weDVlMGU1NSgweDFjMyldPSEoKF8weDJlZTM2ND0oXzB4NTNmNTg0PXRoaXNbJ2dsb2JhbCddW18weDVlMGU1NSgweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHg1M2Y1ODRbXzB4NWUwZTU1KDB4MjRkKV0pIT1udWxsJiZfMHgyZWUzNjRbXzB4NWUwZTU1KDB4MWMxKV0pJiYhdGhpc1tfMHg1ZTBlNTUoMHgyMjkpXSx0aGlzWydfV2ViU29ja2V0Q2xhc3MnXT1udWxsLHRoaXNbXzB4NWUwZTU1KDB4MWU1KV09MHgwLHRoaXNbXzB4NWUwZTU1KDB4MThjKV09MHgxNCx0aGlzWydfd2ViU29ja2V0RXJyb3JEb2NzTGluayddPV8weDVlMGU1NSgweDE4ZCksdGhpc1tfMHg1ZTBlNTUoMHgyMTcpXT0odGhpc1snX2luQnJvd3NlciddP18weDVlMGU1NSgweDE5MCk6XzB4NWUwZTU1KDB4MTdlKSkrdGhpc1tfMHg1ZTBlNTUoMHgyMGEpXTt9YXN5bmNbXzB4YjM4NDc5KDB4MTg0KV0oKXt2YXIgXzB4NWI0MGM0PV8weGIzODQ3OSxfMHg0M2FkYWMsXzB4M2YwOGQ5O2lmKHRoaXNbXzB4NWI0MGM0KDB4MWE2KV0pcmV0dXJuIHRoaXNbXzB4NWI0MGM0KDB4MWE2KV07bGV0IF8weDFlZmU3MztpZih0aGlzW18weDViNDBjNCgweDFjMyldfHx0aGlzW18weDViNDBjNCgweDIyOSldKV8weDFlZmU3Mz10aGlzW18weDViNDBjNCgweDIxYSldWydXZWJTb2NrZXQnXTtlbHNle2lmKChfMHg0M2FkYWM9dGhpc1tfMHg1YjQwYzQoMHgyMWEpXVsncHJvY2VzcyddKSE9bnVsbCYmXzB4NDNhZGFjW18weDViNDBjNCgweDFmNSldKV8weDFlZmU3Mz0oXzB4M2YwOGQ5PXRoaXNbXzB4NWI0MGM0KDB4MjFhKV1bXzB4NWI0MGM0KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDNmMDhkOVsnX1dlYlNvY2tldCddO2Vsc2UgdHJ5e2xldCBfMHgxNzkyNWE9YXdhaXQgaW1wb3J0KCdwYXRoJyk7XzB4MWVmZTczPShhd2FpdCBpbXBvcnQoKGF3YWl0IGltcG9ydChfMHg1YjQwYzQoMHgyMDgpKSlbXzB4NWI0MGM0KDB4MjA5KV0oXzB4MTc5MjVhWydqb2luJ10odGhpc1snbm9kZU1vZHVsZXMnXSxfMHg1YjQwYzQoMHgxNzYpKSlbXzB4NWI0MGM0KDB4MWI1KV0oKSkpWydkZWZhdWx0J107fWNhdGNoe3RyeXtfMHgxZWZlNzM9cmVxdWlyZShyZXF1aXJlKCdwYXRoJylbXzB4NWI0MGM0KDB4MjAwKV0odGhpc1tfMHg1YjQwYzQoMHgyNTYpXSwnd3MnKSk7fWNhdGNoe3Rocm93IG5ldyBFcnJvcihfMHg1YjQwYzQoMHgyMTQpKTt9fX1yZXR1cm4gdGhpc1tfMHg1YjQwYzQoMHgxYTYpXT1fMHgxZWZlNzMsXzB4MWVmZTczO31bXzB4YjM4NDc5KDB4MWJjKV0oKXt2YXIgXzB4M2UzYTY5PV8weGIzODQ3OTt0aGlzW18weDNlM2E2OSgweDI1OSldfHx0aGlzW18weDNlM2E2OSgweDI1NCldfHx0aGlzWydfY29ubmVjdEF0dGVtcHRDb3VudCddPj10aGlzW18weDNlM2E2OSgweDE4YyldfHwodGhpc1snX2FsbG93ZWRUb0Nvbm5lY3RPblNlbmQnXT0hMHgxLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MCx0aGlzW18weDNlM2E2OSgweDFlNSldKyssdGhpc1snX3dzJ109bmV3IFByb21pc2UoKF8weDIyN2M5OCxfMHgyZDIwNjUpPT57dmFyIF8weDQzYzg2OT1fMHgzZTNhNjk7dGhpc1snZ2V0V2ViU29ja2V0Q2xhc3MnXSgpW18weDQzYzg2OSgweDIwNSldKF8weDU4NTIyND0+e3ZhciBfMHgzZjNhODc9XzB4NDNjODY5O2xldCBfMHgyZGQ1OTQ9bmV3IF8weDU4NTIyNChfMHgzZjNhODcoMHgxOWYpKyghdGhpc1snX2luQnJvd3NlciddJiZ0aGlzWydkb2NrZXJpemVkQXBwJ10/XzB4M2YzYTg3KDB4MWQ5KTp0aGlzW18weDNmM2E4NygweDFkYildKSsnOicrdGhpc1sncG9ydCddKTtfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MjNiKV09KCk9Pnt2YXIgXzB4MTI2ODZhPV8weDNmM2E4Nzt0aGlzW18weDEyNjg2YSgweDE3NSldPSEweDEsdGhpc1tfMHgxMjY4NmEoMHgyMzkpXShfMHgyZGQ1OTQpLHRoaXNbXzB4MTI2ODZhKDB4MWI0KV0oKSxfMHgyZDIwNjUobmV3IEVycm9yKF8weDEyNjg2YSgweDIzMikpKTt9LF8weDJkZDU5NFtfMHgzZjNhODcoMHgyNDMpXT0oKT0+e3ZhciBfMHg0ZGFmZjY9XzB4M2YzYTg3O3RoaXNbJ19pbkJyb3dzZXInXXx8XzB4MmRkNTk0W18weDRkYWZmNigweDE4MSldJiZfMHgyZGQ1OTRbXzB4NGRhZmY2KDB4MTgxKV1bXzB4NGRhZmY2KDB4MjBmKV0mJl8weDJkZDU5NFtfMHg0ZGFmZjYoMHgxODEpXVtfMHg0ZGFmZjYoMHgyMGYpXSgpLF8weDIyN2M5OChfMHgyZGQ1OTQpO30sXzB4MmRkNTk0W18weDNmM2E4NygweDE4ZildPSgpPT57dmFyIF8weDNhNTgzZj1fMHgzZjNhODc7dGhpc1tfMHgzYTU4M2YoMHgxZjApXT0hMHgwLHRoaXNbXzB4M2E1ODNmKDB4MjM5KV0oXzB4MmRkNTk0KSx0aGlzW18weDNhNTgzZigweDFiNCldKCk7fSxfMHgyZGQ1OTRbXzB4M2YzYTg3KDB4MWEwKV09XzB4MjYyMTVhPT57dmFyIF8weDFhZGJkMT1fMHgzZjNhODc7dHJ5e2lmKCEoXzB4MjYyMTVhIT1udWxsJiZfMHgyNjIxNWFbXzB4MWFkYmQxKDB4MjQ1KV0pfHwhdGhpc1tfMHgxYWRiZDEoMHgyMTgpXSlyZXR1cm47bGV0IF8weDJiYWJkOT1KU09OW18weDFhZGJkMSgweDI1MyldKF8weDI2MjE1YVtfMHgxYWRiZDEoMHgyNDUpXSk7dGhpc1tfMHgxYWRiZDEoMHgyMTgpXShfMHgyYmFiZDlbXzB4MWFkYmQxKDB4MTg1KV0sXzB4MmJhYmQ5W18weDFhZGJkMSgweDE5MyldLHRoaXNbXzB4MWFkYmQxKDB4MjFhKV0sdGhpc1snX2luQnJvd3NlciddKTt9Y2F0Y2h7fX07fSlbXzB4NDNjODY5KDB4MjA1KV0oXzB4NGY3MTRlPT4odGhpc1tfMHg0M2M4NjkoMHgyNTQpXT0hMHgwLHRoaXNbJ19jb25uZWN0aW5nJ109ITB4MSx0aGlzW18weDQzYzg2OSgweDFmMCldPSEweDEsdGhpc1tfMHg0M2M4NjkoMHgxNzUpXT0hMHgwLHRoaXNbXzB4NDNjODY5KDB4MWU1KV09MHgwLF8weDRmNzE0ZSkpW18weDQzYzg2OSgweDFjNildKF8weDIyZWM5ZT0+KHRoaXNbXzB4NDNjODY5KDB4MjU0KV09ITB4MSx0aGlzW18weDQzYzg2OSgweDI1OSldPSEweDEsY29uc29sZVtfMHg0M2M4NjkoMHgxZjIpXSgnbG9nZ2VyXFxcXHgyMGZhaWxlZFxcXFx4MjB0b1xcXFx4MjBjb25uZWN0XFxcXHgyMHRvXFxcXHgyMGhvc3QsXFxcXHgyMHNlZVxcXFx4MjAnK3RoaXNbJ193ZWJTb2NrZXRFcnJvckRvY3NMaW5rJ10pLF8weDJkMjA2NShuZXcgRXJyb3IoXzB4NDNjODY5KDB4MWY4KSsoXzB4MjJlYzllJiZfMHgyMmVjOWVbXzB4NDNjODY5KDB4MjM0KV0pKSkpKTt9KSk7fVtfMHhiMzg0NzkoMHgyMzkpXShfMHgyNThlYTMpe3ZhciBfMHgzMTYwN2U9XzB4YjM4NDc5O3RoaXNbXzB4MzE2MDdlKDB4MjU0KV09ITB4MSx0aGlzW18weDMxNjA3ZSgweDI1OSldPSEweDE7dHJ5e18weDI1OGVhM1snb25jbG9zZSddPW51bGwsXzB4MjU4ZWEzWydvbmVycm9yJ109bnVsbCxfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjQzKV09bnVsbDt9Y2F0Y2h7fXRyeXtfMHgyNThlYTNbXzB4MzE2MDdlKDB4MjIyKV08MHgyJiZfMHgyNThlYTNbJ2Nsb3NlJ10oKTt9Y2F0Y2h7fX1bXzB4YjM4NDc5KDB4MWI0KV0oKXt2YXIgXzB4MjMzYmE2PV8weGIzODQ3OTtjbGVhclRpbWVvdXQodGhpc1tfMHgyMzNiYTYoMHgxZTApXSksISh0aGlzW18weDIzM2JhNigweDFlNSldPj10aGlzW18weDIzM2JhNigweDE4YyldKSYmKHRoaXNbXzB4MjMzYmE2KDB4MWUwKV09c2V0VGltZW91dCgoKT0+e3ZhciBfMHg0MDFmZWM9XzB4MjMzYmE2LF8weDUyYjNkOTt0aGlzW18weDQwMWZlYygweDI1NCldfHx0aGlzW18weDQwMWZlYygweDI1OSldfHwodGhpc1tfMHg0MDFmZWMoMHgxYmMpXSgpLChfMHg1MmIzZDk9dGhpc1tfMHg0MDFmZWMoMHgyNWQpXSk9PW51bGx8fF8weDUyYjNkOVtfMHg0MDFmZWMoMHgxYzYpXSgoKT0+dGhpc1tfMHg0MDFmZWMoMHgxYjQpXSgpKSk7fSwweDFmNCksdGhpc1tfMHgyMzNiYTYoMHgxZTApXVtfMHgyMzNiYTYoMHgyMGYpXSYmdGhpc1tfMHgyMzNiYTYoMHgxZTApXVsndW5yZWYnXSgpKTt9YXN5bmNbXzB4YjM4NDc5KDB4MjFmKV0oXzB4NTg2YjFkKXt2YXIgXzB4NWQ4NTA4PV8weGIzODQ3OTt0cnl7aWYoIXRoaXNbXzB4NWQ4NTA4KDB4MTc1KV0pcmV0dXJuO3RoaXNbXzB4NWQ4NTA4KDB4MWYwKV0mJnRoaXNbXzB4NWQ4NTA4KDB4MWJjKV0oKSwoYXdhaXQgdGhpc1tfMHg1ZDg1MDgoMHgyNWQpXSlbXzB4NWQ4NTA4KDB4MjFmKV0oSlNPTltfMHg1ZDg1MDgoMHgxOTgpXShfMHg1ODZiMWQpKTt9Y2F0Y2goXzB4ZmQzYTk3KXtjb25zb2xlW18weDVkODUwOCgweDFmMildKHRoaXNbXzB4NWQ4NTA4KDB4MjE3KV0rJzpcXFxceDIwJysoXzB4ZmQzYTk3JiZfMHhmZDNhOTdbXzB4NWQ4NTA4KDB4MjM0KV0pKSx0aGlzW18weDVkODUwOCgweDE3NSldPSEweDEsdGhpc1tfMHg1ZDg1MDgoMHgxYjQpXSgpO319fTtmdW5jdGlvbiBxKF8weDQyMzY3YSxfMHgyY2JmYjYsXzB4NWE5NTAxLF8weDFhYWY5MCxfMHg0Mjk3YjIsXzB4MTNlZjg5LF8weDgyNTI1NixfMHhmNjgyYTc9aWUpe3ZhciBfMHhhM2ZiNDI9XzB4YjM4NDc5O2xldCBfMHg0Y2YxNmQ9XzB4NWE5NTAxWydzcGxpdCddKCcsJylbXzB4YTNmYjQyKDB4MjI4KV0oXzB4NTFiNGQ2PT57dmFyIF8weDEwOGM5OD1fMHhhM2ZiNDIsXzB4MTJmMzIyLF8weDEyYmVkNCxfMHg1YmVkMjEsXzB4MjQzNGE4O3RyeXtpZighXzB4NDIzNjdhW18weDEwOGM5OCgweDI2MSldKXtsZXQgXzB4MTczMGI1PSgoXzB4MTJiZWQ0PShfMHgxMmYzMjI9XzB4NDIzNjdhWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDEyZjMyMltfMHgxMDhjOTgoMHgyNGQpXSk9PW51bGw/dm9pZCAweDA6XzB4MTJiZWQ0W18weDEwOGM5OCgweDFjMSldKXx8KChfMHgyNDM0YTg9KF8weDViZWQyMT1fMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MWEzKV0pPT1udWxsP3ZvaWQgMHgwOl8weDViZWQyMVtfMHgxMDhjOTgoMHgxZTQpXSk9PW51bGw/dm9pZCAweDA6XzB4MjQzNGE4W18weDEwOGM5OCgweDIzMSldKT09PV8weDEwOGM5OCgweDFlOSk7KF8weDQyOTdiMj09PV8weDEwOGM5OCgweDFkZSl8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDI0MCl8fF8weDQyOTdiMj09PSdhc3Rybyd8fF8weDQyOTdiMj09PV8weDEwOGM5OCgweDE3ZikpJiYoXzB4NDI5N2IyKz1fMHgxNzMwYjU/XzB4MTA4Yzk4KDB4MjU3KTpfMHgxMDhjOTgoMHgyMWMpKSxfMHg0MjM2N2FbXzB4MTA4Yzk4KDB4MjYxKV09eydpZCc6K25ldyBEYXRlKCksJ3Rvb2wnOl8weDQyOTdiMn0sXzB4ODI1MjU2JiZfMHg0Mjk3YjImJiFfMHgxNzMwYjUmJmNvbnNvbGVbXzB4MTA4Yzk4KDB4MjUxKV0oJyVjXFxcXHgyMENvbnNvbGVcXFxceDIwTmluamFcXFxceDIwZXh0ZW5zaW9uXFxcXHgyMGlzXFxcXHgyMGNvbm5lY3RlZFxcXFx4MjB0b1xcXFx4MjAnKyhfMHg0Mjk3YjJbJ2NoYXJBdCddKDB4MClbXzB4MTA4Yzk4KDB4MWE3KV0oKStfMHg0Mjk3YjJbJ3N1YnN0ciddKDB4MSkpKycsJywnYmFja2dyb3VuZDpcXFxceDIwcmdiKDMwLDMwLDMwKTtcXFxceDIwY29sb3I6XFxcXHgyMHJnYigyNTUsMjEzLDkyKScsXzB4MTA4Yzk4KDB4MjJiKSk7fWxldCBfMHg0YWJlOTY9bmV3IFooXzB4NDIzNjdhLF8weDJjYmZiNixfMHg1MWI0ZDYsXzB4MWFhZjkwLF8weDEzZWY4OSxfMHhmNjgyYTcpO3JldHVybiBfMHg0YWJlOTZbXzB4MTA4Yzk4KDB4MjFmKV1bXzB4MTA4Yzk4KDB4MjJlKV0oXzB4NGFiZTk2KTt9Y2F0Y2goXzB4NWJmNDliKXtyZXR1cm4gY29uc29sZVsnd2FybiddKF8weDEwOGM5OCgweDFjNyksXzB4NWJmNDliJiZfMHg1YmY0OWJbXzB4MTA4Yzk4KDB4MjM0KV0pLCgpPT57fTt9fSk7cmV0dXJuIF8weDM3OWZkMz0+XzB4NGNmMTZkW18weGEzZmI0MigweDFlMSldKF8weDM3MTEyMT0+XzB4MzcxMTIxKF8weDM3OWZkMykpO31mdW5jdGlvbiBpZShfMHgzZThmMjUsXzB4MzlmZWE1LF8weDI1MTUwZixfMHgyNjUyOGUpe3ZhciBfMHgxY2M5Njc9XzB4YjM4NDc5O18weDI2NTI4ZSYmXzB4M2U4ZjI1PT09XzB4MWNjOTY3KDB4MWIwKSYmXzB4MjUxNTBmW18weDFjYzk2NygweDFhMSldWydyZWxvYWQnXSgpO31mdW5jdGlvbiBCKF8weDMwOTg0Mil7dmFyIF8weDI0ZGZjMj1fMHhiMzg0NzksXzB4MmFjMDQ4LF8weDUwYWJkZjtsZXQgXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDExYTY3MyxfMHg1ZjA2OTMpe3JldHVybiBfMHg1ZjA2OTMtXzB4MTFhNjczO30sXzB4MWM3ZmFmO2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxNzcpXSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4OGRiZTE9XzB4MjRkZmMyO3JldHVybiBfMHgzMDk4NDJbXzB4OGRiZTEoMHgxNzcpXVtfMHg4ZGJlMSgweDFlZildKCk7fTtlbHNle2lmKF8weDMwOTg0MltfMHgyNGRmYzIoMHgxYTMpXSYmXzB4MzA5ODQyWydwcm9jZXNzJ11bXzB4MjRkZmMyKDB4MTljKV0mJigoXzB4NTBhYmRmPShfMHgyYWMwNDg9XzB4MzA5ODQyWydwcm9jZXNzJ10pPT1udWxsP3ZvaWQgMHgwOl8weDJhYzA0OFsnZW52J10pPT1udWxsP3ZvaWQgMHgwOl8weDUwYWJkZlsnTkVYVF9SVU5USU1FJ10pIT09XzB4MjRkZmMyKDB4MWU5KSlfMHgxYzdmYWY9ZnVuY3Rpb24oKXt2YXIgXzB4NTJkNjQwPV8weDI0ZGZjMjtyZXR1cm4gXzB4MzA5ODQyW18weDUyZDY0MCgweDFhMyldWydocnRpbWUnXSgpO30sXzB4ZGRiZGVmPWZ1bmN0aW9uKF8weDU1MGJhOSxfMHgxNmEzZTIpe3JldHVybiAweDNlOCooXzB4MTZhM2UyWzB4MF0tXzB4NTUwYmE5WzB4MF0pKyhfMHgxNmEzZTJbMHgxXS1fMHg1NTBiYTlbMHgxXSkvMHhmNDI0MDt9O2Vsc2UgdHJ5e2xldCB7cGVyZm9ybWFuY2U6XzB4MzRkZTRhfT1yZXF1aXJlKF8weDI0ZGZjMigweDI0YikpO18weDFjN2ZhZj1mdW5jdGlvbigpe3ZhciBfMHg0ZjFkNjk9XzB4MjRkZmMyO3JldHVybiBfMHgzNGRlNGFbXzB4NGYxZDY5KDB4MWVmKV0oKTt9O31jYXRjaHtfMHgxYzdmYWY9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGUoKTt9O319cmV0dXJueydlbGFwc2VkJzpfMHhkZGJkZWYsJ3RpbWVTdGFtcCc6XzB4MWM3ZmFmLCdub3cnOigpPT5EYXRlW18weDI0ZGZjMigweDFlZildKCl9O31mdW5jdGlvbiBfMHgyNjkwKF8weDM3NDZkYixfMHg0MWY5ZGUpe3ZhciBfMHg0OWZiZGM9XzB4NDlmYigpO3JldHVybiBfMHgyNjkwPWZ1bmN0aW9uKF8weDI2OTAxYixfMHgzNThmMWYpe18weDI2OTAxYj1fMHgyNjkwMWItMHgxNzM7dmFyIF8weDFmZjI4Nz1fMHg0OWZiZGNbXzB4MjY5MDFiXTtyZXR1cm4gXzB4MWZmMjg3O30sXzB4MjY5MChfMHgzNzQ2ZGIsXzB4NDFmOWRlKTt9ZnVuY3Rpb24gSChfMHgyNjU1ZTMsXzB4MTRjYmY3LF8weDRjZDYwOSl7dmFyIF8weDI2YWMyYz1fMHhiMzg0NzksXzB4NGJlNzBkLF8weDNmYjRjYyxfMHgxZmZjNjIsXzB4NDdlOGFhLF8weDVmMDk0MjtpZihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddIT09dm9pZCAweDApcmV0dXJuIF8weDI2NTVlM1snX2NvbnNvbGVOaW5qYUFsbG93ZWRUb1N0YXJ0J107bGV0IF8weDI1MTI5NT0oKF8weDNmYjRjYz0oXzB4NGJlNzBkPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4NGJlNzBkW18weDI2YWMyYygweDI0ZCldKT09bnVsbD92b2lkIDB4MDpfMHgzZmI0Y2NbXzB4MjZhYzJjKDB4MWMxKV0pfHwoKF8weDQ3ZThhYT0oXzB4MWZmYzYyPV8weDI2NTVlM1tfMHgyNmFjMmMoMHgxYTMpXSk9PW51bGw/dm9pZCAweDA6XzB4MWZmYzYyW18weDI2YWMyYygweDFlNCldKT09bnVsbD92b2lkIDB4MDpfMHg0N2U4YWFbJ05FWFRfUlVOVElNRSddKT09PV8weDI2YWMyYygweDFlOSk7ZnVuY3Rpb24gXzB4NTlkOWRlKF8weDE5NDkzOCl7dmFyIF8weDVlNWQ1Yz1fMHgyNmFjMmM7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDIzNyldKCcvJykmJl8weDE5NDkzOFsnZW5kc1dpdGgnXSgnLycpKXtsZXQgXzB4Y2I3ODA0PW5ldyBSZWdFeHAoXzB4MTk0OTM4WydzbGljZSddKDB4MSwtMHgxKSk7cmV0dXJuIF8weDQ5ZDc0Mj0+XzB4Y2I3ODA0W18weDVlNWQ1YygweDE4NyldKF8weDQ5ZDc0Mik7fWVsc2V7aWYoXzB4MTk0OTM4W18weDVlNWQ1YygweDE5YSldKCcqJyl8fF8weDE5NDkzOFtfMHg1ZTVkNWMoMHgxOWEpXSgnPycpKXtsZXQgXzB4NTBmYTJmPW5ldyBSZWdFeHAoJ14nK18weDE5NDkzOFtfMHg1ZTVkNWMoMHgxN2IpXSgvXFxcXC4vZyxTdHJpbmdbXzB4NWU1ZDVjKDB4MjRlKV0oMHg1YykrJy4nKVsncmVwbGFjZSddKC9cXFxcKi9nLCcuKicpW18weDVlNWQ1YygweDE3YildKC9cXFxcPy9nLCcuJykrU3RyaW5nWydmcm9tQ2hhckNvZGUnXSgweDI0KSk7cmV0dXJuIF8weDFhZWZjND0+XzB4NTBmYTJmW18weDVlNWQ1YygweDE4NyldKF8weDFhZWZjNCk7fWVsc2UgcmV0dXJuIF8weDQ2YmNmNj0+XzB4NDZiY2Y2PT09XzB4MTk0OTM4O319bGV0IF8weDIwNTQ2Zj1fMHgxNGNiZjdbXzB4MjZhYzJjKDB4MjI4KV0oXzB4NTlkOWRlKTtyZXR1cm4gXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldPV8weDI1MTI5NXx8IV8weDE0Y2JmNywhXzB4MjY1NWUzW18weDI2YWMyYygweDFjNSldJiYoKF8weDVmMDk0Mj1fMHgyNjU1ZTNbJ2xvY2F0aW9uJ10pPT1udWxsP3ZvaWQgMHgwOl8weDVmMDk0MltfMHgyNmFjMmMoMHgxZTYpXSkmJihfMHgyNjU1ZTNbJ19jb25zb2xlTmluamFBbGxvd2VkVG9TdGFydCddPV8weDIwNTQ2ZltfMHgyNmFjMmMoMHgyNDgpXShfMHg0Mzg1YjQ9Pl8weDQzODViNChfMHgyNjU1ZTNbJ2xvY2F0aW9uJ11bJ2hvc3RuYW1lJ10pKSksXzB4MjY1NWUzWydfY29uc29sZU5pbmphQWxsb3dlZFRvU3RhcnQnXTt9ZnVuY3Rpb24gWChfMHgyMmNjYjMsXzB4MmM3M2RlLF8weDRlMTcxYixfMHgzNWZjNjMpe3ZhciBfMHg0NzRlMjg9XzB4YjM4NDc5O18weDIyY2NiMz1fMHgyMmNjYjMsXzB4MmM3M2RlPV8weDJjNzNkZSxfMHg0ZTE3MWI9XzB4NGUxNzFiLF8weDM1ZmM2Mz1fMHgzNWZjNjM7bGV0IF8weDQxNTQ2OD1CKF8weDIyY2NiMyksXzB4MzdmNTYxPV8weDQxNTQ2OFtfMHg0NzRlMjgoMHgxZTgpXSxfMHg1OTE1OGI9XzB4NDE1NDY4Wyd0aW1lU3RhbXAnXTtjbGFzcyBfMHg0MzI4YmN7Y29uc3RydWN0b3IoKXt2YXIgXzB4MWFmNmY2PV8weDQ3NGUyODt0aGlzW18weDFhZjZmNigweDI0NCldPS9eKD8hKD86ZG98aWZ8aW58Zm9yfGxldHxuZXd8dHJ5fHZhcnxjYXNlfGVsc2V8ZW51bXxldmFsfGZhbHNlfG51bGx8dGhpc3x0cnVlfHZvaWR8d2l0aHxicmVha3xjYXRjaHxjbGFzc3xjb25zdHxzdXBlcnx0aHJvd3x3aGlsZXx5aWVsZHxkZWxldGV8ZXhwb3J0fGltcG9ydHxwdWJsaWN8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dHlwZW9mfGRlZmF1bHR8ZXh0ZW5kc3xmaW5hbGx5fHBhY2thZ2V8cHJpdmF0ZXxjb250aW51ZXxkZWJ1Z2dlcnxmdW5jdGlvbnxhcmd1bWVudHN8aW50ZXJmYWNlfHByb3RlY3RlZHxpbXBsZW1lbnRzfGluc3RhbmNlb2YpJClbXyRhLXpBLVpcXFxceEEwLVxcXFx1RkZGRl1bXyRhLXpBLVowLTlcXFxceEEwLVxcXFx1RkZGRl0qJC8sdGhpc1snX251bWJlclJlZ0V4cCddPS9eKDB8WzEtOV1bMC05XSopJC8sdGhpc1tfMHgxYWY2ZjYoMHgxZjEpXT0vJyhbXlxcXFxcXFxcJ118XFxcXFxcXFwnKSonLyx0aGlzW18weDFhZjZmNigweDIxNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMjQpXSx0aGlzW18weDFhZjZmNigweDFhNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgyMDcpXSx0aGlzW18weDFhZjZmNigweDIwNCldPU9iamVjdFtfMHgxYWY2ZjYoMHgxYjcpXSx0aGlzWydfZ2V0T3duUHJvcGVydHlOYW1lcyddPU9iamVjdFtfMHgxYWY2ZjYoMHgxYzApXSx0aGlzW18weDFhZjZmNigweDIyNSldPV8weDIyY2NiM1tfMHgxYWY2ZjYoMHgxZTcpXSx0aGlzW18weDFhZjZmNigweDIzYSldPVJlZ0V4cFsncHJvdG90eXBlJ11bXzB4MWFmNmY2KDB4MWI1KV0sdGhpc1snX2RhdGVUb1N0cmluZyddPURhdGVbXzB4MWFmNmY2KDB4MjIwKV1bJ3RvU3RyaW5nJ107fVtfMHg0NzRlMjgoMHgxY2YpXShfMHg1MDcyMWEsXzB4NGM4MjhjLF8weDVlMmZmYyxfMHgzZWY4MzIpe3ZhciBfMHg0ZWJkOWQ9XzB4NDc0ZTI4LF8weGY2NDU5NT10aGlzLF8weGEwMTYxPV8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXTtmdW5jdGlvbiBfMHgyNDMxMDkoXzB4NDAwMmI3LF8weDM0YjVlYyxfMHg0NzY3NDMpe3ZhciBfMHg0Njk2NjQ9XzB4NGViZDlkO18weDM0YjVlY1sndHlwZSddPV8weDQ2OTY2NCgweDFjMiksXzB4MzRiNWVjW18weDQ2OTY2NCgweDIxYildPV8weDQwMDJiN1tfMHg0Njk2NjQoMHgyMzQpXSxfMHgyYTIwMTA9XzB4NDc2NzQzW18weDQ2OTY2NCgweDFjMSldW18weDQ2OTY2NCgweDIwMyldLF8weDQ3Njc0M1tfMHg0Njk2NjQoMHgxYzEpXVtfMHg0Njk2NjQoMHgyMDMpXT1fMHgzNGI1ZWMsXzB4ZjY0NTk1WydfdHJlZU5vZGVQcm9wZXJ0aWVzQmVmb3JlRnVsbFZhbHVlJ10oXzB4MzRiNWVjLF8weDQ3Njc0Myk7fXRyeXtfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWVjKV0rKyxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVtfMHg0ZWJkOWQoMHgxOWUpXShfMHg0YzgyOGMpO3ZhciBfMHg3ODkyODYsXzB4NGIzYTNhLF8weDEwYTU5LF8weDQzMjk2NixfMHgzYjQ5YjM9W10sXzB4NTc1ODA4PVtdLF8weDI1YTQ4NCxfMHg0MWUxMWQ9dGhpc1tfMHg0ZWJkOWQoMHgyNjApXShfMHg0YzgyOGMpLF8weDI1ZTM2Nj1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgxYmIpLF8weDIyODgzMD0hMHgxLF8weDM1MWE0MT1fMHg0MWUxMWQ9PT1fMHg0ZWJkOWQoMHgyMTApLF8weDUzZTMwMz10aGlzW18weDRlYmQ5ZCgweDE5YildKF8weDQxZTExZCksXzB4M2U0NWIyPXRoaXNbXzB4NGViZDlkKDB4MTgzKV0oXzB4NDFlMTFkKSxfMHgzNDUwMjg9XzB4NTNlMzAzfHxfMHgzZTQ1YjIsXzB4NWMzYzhhPXt9LF8weDFjYmUzNj0weDAsXzB4MmU2Y2ZjPSEweDEsXzB4MmEyMDEwLF8weDEyODIwYT0vXigoWzEtOV17MX1bMC05XSopfDApJC87aWYoXzB4NWUyZmZjWydkZXB0aCddKXtpZihfMHgyNWUzNjYpe2lmKF8weDRiM2EzYT1fMHg0YzgyOGNbXzB4NGViZDlkKDB4MjQxKV0sXzB4NGIzYTNhPl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgyNjIpXSl7Zm9yKF8weDEwYTU5PTB4MCxfMHg0MzI5NjY9XzB4NWUyZmZjWydlbGVtZW50cyddLF8weDc4OTI4Nj1fMHgxMGE1OTtfMHg3ODkyODY8XzB4NDMyOTY2O18weDc4OTI4NisrKV8weDU3NTgwOFtfMHg0ZWJkOWQoMHgxOWUpXShfMHhmNjQ1OTVbXzB4NGViZDlkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHg0MWUxMWQsXzB4Nzg5Mjg2LF8weDVlMmZmYykpO18weDUwNzIxYVtfMHg0ZWJkOWQoMHgxODApXT0hMHgwO31lbHNle2ZvcihfMHgxMGE1OT0weDAsXzB4NDMyOTY2PV8weDRiM2EzYSxfMHg3ODkyODY9XzB4MTBhNTk7XzB4Nzg5Mjg2PF8weDQzMjk2NjtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4NGViZDlkKDB4MTllKV0oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDc4OTI4NixfMHg1ZTJmZmMpKTt9XzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKz1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07fWlmKCEoXzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MWZkKXx8XzB4NDFlMTFkPT09J3VuZGVmaW5lZCcpJiYhXzB4NTNlMzAzJiZfMHg0MWUxMWQhPT0nU3RyaW5nJyYmXzB4NDFlMTFkIT09J0J1ZmZlcicmJl8weDQxZTExZCE9PV8weDRlYmQ5ZCgweDIzNSkpe3ZhciBfMHgyNTIxMmI9XzB4M2VmODMyW18weDRlYmQ5ZCgweDI0NyldfHxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MjQ3KV07aWYodGhpc1tfMHg0ZWJkOWQoMHgxYTQpXShfMHg0YzgyOGMpPyhfMHg3ODkyODY9MHgwLF8weDRjODI4Y1tfMHg0ZWJkOWQoMHgxZTEpXShmdW5jdGlvbihfMHgzMTYyNWIpe3ZhciBfMHhhMTE0N2Q9XzB4NGViZDlkO2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1tfMHhhMTE0N2QoMHgxN2MpXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO3JldHVybjt9aWYoIV8weDVlMmZmY1tfMHhhMTE0N2QoMHgxY2IpXSYmXzB4NWUyZmZjW18weGExMTQ3ZCgweDFiYSldJiZfMHg1ZTJmZmNbXzB4YTExNDdkKDB4MTdjKV0+XzB4NWUyZmZjW18weGExMTQ3ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fV8weDU3NTgwOFtfMHhhMTE0N2QoMHgxOWUpXShfMHhmNjQ1OTVbXzB4YTExNDdkKDB4MWI5KV0oXzB4M2I0OWIzLF8weDRjODI4YyxfMHhhMTE0N2QoMHgyMjcpLF8weDc4OTI4NisrLF8weDVlMmZmYyxmdW5jdGlvbihfMHgxMGQxNWEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfMHgxMGQxNWE7fTt9KF8weDMxNjI1YikpKTt9KSk6dGhpc1tfMHg0ZWJkOWQoMHgyMGMpXShfMHg0YzgyOGMpJiZfMHg0YzgyOGNbXzB4NGViZDlkKDB4MWUxKV0oZnVuY3Rpb24oXzB4MzgyNGRmLF8weDM5MjY1Yyl7dmFyIF8weDhlOTllND1fMHg0ZWJkOWQ7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDhlOTllNCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7cmV0dXJuO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDhlOTllNCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDtyZXR1cm47fXZhciBfMHgxMGRkMzQ9XzB4MzkyNjVjWyd0b1N0cmluZyddKCk7XzB4MTBkZDM0W18weDhlOTllNCgweDI0MSldPjB4NjQmJihfMHgxMGRkMzQ9XzB4MTBkZDM0WydzbGljZSddKDB4MCwweDY0KStfMHg4ZTk5ZTQoMHgxZDApKSxfMHg1NzU4MDhbXzB4OGU5OWU0KDB4MTllKV0oXzB4ZjY0NTk1W18weDhlOTllNCgweDFiOSldKF8weDNiNDliMyxfMHg0YzgyOGMsXzB4OGU5OWU0KDB4MjVhKSxfMHgxMGRkMzQsXzB4NWUyZmZjLGZ1bmN0aW9uKF8weDEzNTE1Nil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8weDEzNTE1Njt9O30oXzB4MzgyNGRmKSkpO30pLCFfMHgyMjg4MzApe3RyeXtmb3IoXzB4MjVhNDg0IGluIF8weDRjODI4YylpZighKF8weDI1ZTM2NiYmXzB4MTI4MjBhWyd0ZXN0J10oXzB4MjVhNDg0KSkmJiF0aGlzW18weDRlYmQ5ZCgweDE3OSldKF8weDRjODI4YyxfMHgyNWE0ODQsXzB4NWUyZmZjKSl7aWYoXzB4MWNiZTM2KyssXzB4NWUyZmZjW18weDRlYmQ5ZCgweDE3YyldKyssXzB4MWNiZTM2Pl8weDI1MjEyYil7XzB4MmU2Y2ZjPSEweDA7YnJlYWs7fWlmKCFfMHg1ZTJmZmNbJ2lzRXhwcmVzc2lvblRvRXZhbHVhdGUnXSYmXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFiYSldJiZfMHg1ZTJmZmNbJ2F1dG9FeHBhbmRQcm9wZXJ0eUNvdW50J10+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4W18weDRlYmQ5ZCgweDE5ZSldKF8weGY2NDU5NVsnX2FkZE9iamVjdFByb3BlcnR5J10oXzB4M2I0OWIzLF8weDVjM2M4YSxfMHg0YzgyOGMsXzB4NDFlMTFkLF8weDI1YTQ4NCxfMHg1ZTJmZmMpKTt9fWNhdGNoe31pZihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MjE5KV09ITB4MCxfMHgzNTFhNDEmJihfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWQ4KV09ITB4MCksIV8weDJlNmNmYyl7dmFyIF8weDExMzMyOD1bXVtfMHg0ZWJkOWQoMHgyM2MpXSh0aGlzW18weDRlYmQ5ZCgweDIzMyldKF8weDRjODI4YykpWydjb25jYXQnXSh0aGlzW18weDRlYmQ5ZCgweDFlZCldKF8weDRjODI4YykpO2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHgxMTMzMjhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylpZihfMHgyNWE0ODQ9XzB4MTEzMzI4W18weDc4OTI4Nl0sIShfMHgyNWUzNjYmJl8weDEyODIwYVtfMHg0ZWJkOWQoMHgxODcpXShfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKSkpJiYhdGhpc1tfMHg0ZWJkOWQoMHgxNzkpXShfMHg0YzgyOGMsXzB4MjVhNDg0LF8weDVlMmZmYykmJiFfMHg1YzNjOGFbXzB4NGViZDlkKDB4MWUyKStfMHgyNWE0ODRbXzB4NGViZDlkKDB4MWI1KV0oKV0pe2lmKF8weDFjYmUzNisrLF8weDVlMmZmY1snYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXSsrLF8weDFjYmUzNj5fMHgyNTIxMmIpe18weDJlNmNmYz0hMHgwO2JyZWFrO31pZighXzB4NWUyZmZjWydpc0V4cHJlc3Npb25Ub0V2YWx1YXRlJ10mJl8weDVlMmZmY1snYXV0b0V4cGFuZCddJiZfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MTdjKV0+XzB4NWUyZmZjW18weDRlYmQ5ZCgweDI1MCldKXtfMHgyZTZjZmM9ITB4MDticmVhazt9XzB4NTc1ODA4WydwdXNoJ10oXzB4ZjY0NTk1W18weDRlYmQ5ZCgweDFiNildKF8weDNiNDliMyxfMHg1YzNjOGEsXzB4NGM4MjhjLF8weDQxZTExZCxfMHgyNWE0ODQsXzB4NWUyZmZjKSk7fX19fX1pZihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MWQ1KV09XzB4NDFlMTFkLF8weDM0NTAyOD8oXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPV8weDRjODI4Y1tfMHg0ZWJkOWQoMHgyMmEpXSgpLHRoaXNbJ19jYXBJZlN0cmluZyddKF8weDQxZTExZCxfMHg1MDcyMWEsXzB4NWUyZmZjLF8weDNlZjgzMikpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFhYyk/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbJ19kYXRlVG9TdHJpbmcnXVsnY2FsbCddKF8weDRjODI4Yyk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MjM1KT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09XzB4NGM4MjhjWyd0b1N0cmluZyddKCk6XzB4NDFlMTFkPT09XzB4NGViZDlkKDB4MTdhKT9fMHg1MDcyMWFbXzB4NGViZDlkKDB4MWFlKV09dGhpc1snX3JlZ0V4cFRvU3RyaW5nJ11bJ2NhbGwnXShfMHg0YzgyOGMpOl8weDQxZTExZD09PV8weDRlYmQ5ZCgweDE3MykmJnRoaXNbXzB4NGViZDlkKDB4MjI1KV0/XzB4NTA3MjFhW18weDRlYmQ5ZCgweDFhZSldPXRoaXNbXzB4NGViZDlkKDB4MjI1KV1bXzB4NGViZDlkKDB4MjIwKV1bXzB4NGViZDlkKDB4MWI1KV1bXzB4NGViZDlkKDB4MjJmKV0oXzB4NGM4MjhjKTohXzB4NWUyZmZjW18weDRlYmQ5ZCgweDIyMSldJiYhKF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDFmZCl8fF8weDQxZTExZD09PV8weDRlYmQ5ZCgweDIyNCkpJiYoZGVsZXRlIF8weDUwNzIxYVtfMHg0ZWJkOWQoMHgxYWUpXSxfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjBiKV09ITB4MCksXzB4MmU2Y2ZjJiYoXzB4NTA3MjFhW18weDRlYmQ5ZCgweDFiZSldPSEweDApLF8weDJhMjAxMD1fMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWMxKV1bXzB4NGViZDlkKDB4MjAzKV0sXzB4NWUyZmZjW18weDRlYmQ5ZCgweDFjMSldWydjdXJyZW50J109XzB4NTA3MjFhLHRoaXNbJ190cmVlTm9kZVByb3BlcnRpZXNCZWZvcmVGdWxsVmFsdWUnXShfMHg1MDcyMWEsXzB4NWUyZmZjKSxfMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV0pe2ZvcihfMHg3ODkyODY9MHgwLF8weDRiM2EzYT1fMHg1NzU4MDhbXzB4NGViZDlkKDB4MjQxKV07XzB4Nzg5Mjg2PF8weDRiM2EzYTtfMHg3ODkyODYrKylfMHg1NzU4MDhbXzB4Nzg5Mjg2XShfMHg3ODkyODYpO31fMHgzYjQ5YjNbXzB4NGViZDlkKDB4MjQxKV0mJihfMHg1MDcyMWFbXzB4NGViZDlkKDB4MjQ3KV09XzB4M2I0OWIzKTt9Y2F0Y2goXzB4M2M5MGM3KXtfMHgyNDMxMDkoXzB4M2M5MGM3LF8weDUwNzIxYSxfMHg1ZTJmZmMpO31yZXR1cm4gdGhpc1tfMHg0ZWJkOWQoMHgxZWIpXShfMHg0YzgyOGMsXzB4NTA3MjFhKSx0aGlzW18weDRlYmQ5ZCgweDFkMyldKF8weDUwNzIxYSxfMHg1ZTJmZmMpLF8weDVlMmZmY1snbm9kZSddWydjdXJyZW50J109XzB4MmEyMDEwLF8weDVlMmZmY1snbGV2ZWwnXS0tLF8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxYmEpXT1fMHhhMDE2MSxfMHg1ZTJmZmNbXzB4NGViZDlkKDB4MWJhKV0mJl8weDVlMmZmY1tfMHg0ZWJkOWQoMHgxZjMpXVsncG9wJ10oKSxfMHg1MDcyMWE7fVsnX2dldE93blByb3BlcnR5U3ltYm9scyddKF8weDIxZjU0OCl7dmFyIF8weDFiMDFhMT1fMHg0NzRlMjg7cmV0dXJuIE9iamVjdFtfMHgxYjAxYTEoMHgyMDYpXT9PYmplY3RbXzB4MWIwMWExKDB4MjA2KV0oXzB4MjFmNTQ4KTpbXTt9W18weDQ3NGUyOCgweDFhNCldKF8weDE1YjFhNyl7dmFyIF8weDM3MDY1Mz1fMHg0NzRlMjg7cmV0dXJuISEoXzB4MTViMWE3JiZfMHgyMmNjYjNbXzB4MzcwNjUzKDB4MjI3KV0mJnRoaXNbXzB4MzcwNjUzKDB4MjJjKV0oXzB4MTViMWE3KT09PV8weDM3MDY1MygweDIxZSkmJl8weDE1YjFhN1tfMHgzNzA2NTMoMHgxZTEpXSk7fVtfMHg0NzRlMjgoMHgxNzkpXShfMHg0NWZiZWQsXzB4NWI4NmRiLF8weDM3NmYzZil7dmFyIF8weDMyZmIwMz1fMHg0NzRlMjg7cmV0dXJuIF8weDM3NmYzZltfMHgzMmZiMDMoMHgxYjEpXT90eXBlb2YgXzB4NDVmYmVkW18weDViODZkYl09PV8weDMyZmIwMygweDIxMCk6ITB4MTt9W18weDQ3NGUyOCgweDI2MCldKF8weDJiNTZlYyl7dmFyIF8weDFlMDE1Mj1fMHg0NzRlMjgsXzB4MzZiZGI3PScnO3JldHVybiBfMHgzNmJkYjc9dHlwZW9mIF8weDJiNTZlYyxfMHgzNmJkYjc9PT1fMHgxZTAxNTIoMHgyNGMpP3RoaXNbXzB4MWUwMTUyKDB4MjJjKV0oXzB4MmI1NmVjKT09PV8weDFlMDE1MigweDE4YSk/XzB4MzZiZGI3PV8weDFlMDE1MigweDFiYik6dGhpc1tfMHgxZTAxNTIoMHgyMmMpXShfMHgyYjU2ZWMpPT09XzB4MWUwMTUyKDB4MjNmKT9fMHgzNmJkYjc9XzB4MWUwMTUyKDB4MWFjKTp0aGlzW18weDFlMDE1MigweDIyYyldKF8weDJiNTZlYyk9PT0nW29iamVjdFxcXFx4MjBCaWdJbnRdJz9fMHgzNmJkYjc9J2JpZ2ludCc6XzB4MmI1NmVjPT09bnVsbD9fMHgzNmJkYjc9J251bGwnOl8weDJiNTZlY1tfMHgxZTAxNTIoMHgxYzQpXSYmKF8weDM2YmRiNz1fMHgyYjU2ZWNbXzB4MWUwMTUyKDB4MWM0KV1bXzB4MWUwMTUyKDB4MjE2KV18fF8weDM2YmRiNyk6XzB4MzZiZGI3PT09XzB4MWUwMTUyKDB4MjI0KSYmdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmXzB4MmI1NmVjIGluc3RhbmNlb2YgdGhpc1tfMHgxZTAxNTIoMHgxYTUpXSYmKF8weDM2YmRiNz1fMHgxZTAxNTIoMHgyMDcpKSxfMHgzNmJkYjc7fVsnX29iamVjdFRvU3RyaW5nJ10oXzB4ZDU2NzY0KXt2YXIgXzB4NWFiZDIzPV8weDQ3NGUyODtyZXR1cm4gT2JqZWN0W18weDVhYmQyMygweDIyMCldW18weDVhYmQyMygweDFiNSldW18weDVhYmQyMygweDIyZildKF8weGQ1Njc2NCk7fVsnX2lzUHJpbWl0aXZlVHlwZSddKF8weGI4OGQ5Nyl7dmFyIF8weDUwNmFmND1fMHg0NzRlMjg7cmV0dXJuIF8weGI4OGQ5Nz09PV8weDUwNmFmNCgweDIzZSl8fF8weGI4OGQ5Nz09PSdzdHJpbmcnfHxfMHhiODhkOTc9PT1fMHg1MDZhZjQoMHgxYWQpO31bXzB4NDc0ZTI4KDB4MTgzKV0oXzB4MmIzYmZkKXt2YXIgXzB4MzA3OTU2PV8weDQ3NGUyODtyZXR1cm4gXzB4MmIzYmZkPT09J0Jvb2xlYW4nfHxfMHgyYjNiZmQ9PT1fMHgzMDc5NTYoMHgxZGEpfHxfMHgyYjNiZmQ9PT0nTnVtYmVyJzt9WydfYWRkUHJvcGVydHknXShfMHgzNWYyYWMsXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSl7dmFyIF8weDMxNTdmMT10aGlzO3JldHVybiBmdW5jdGlvbihfMHgxZjhhNzEpe3ZhciBfMHgxOWMzYjg9XzB4MjY5MCxfMHg0MGJmZmM9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDIwMyldLF8weDE2MjhjZj1fMHgzODhkOTlbJ25vZGUnXVtfMHgxOWMzYjgoMHgxZDEpXSxfMHg5M2VkNWY9XzB4Mzg4ZDk5W18weDE5YzNiOCgweDFjMSldW18weDE5YzNiOCgweDFiZCldO18weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVsncGFyZW50J109XzB4NDBiZmZjLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxZDEpXT10eXBlb2YgXzB4NGEyYWIxPT1fMHgxOWMzYjgoMHgxYWQpP18weDRhMmFiMTpfMHgxZjhhNzEsXzB4MzVmMmFjW18weDE5YzNiOCgweDE5ZSldKF8weDMxNTdmMVsnX3Byb3BlcnR5J10oXzB4MmY3NTlkLF8weDQwM2JmYixfMHg0YTJhYjEsXzB4Mzg4ZDk5LF8weDI0MDU5ZSkpLF8weDM4OGQ5OVtfMHgxOWMzYjgoMHgxYzEpXVtfMHgxOWMzYjgoMHgxYmQpXT1fMHg5M2VkNWYsXzB4Mzg4ZDk5Wydub2RlJ11bXzB4MTljM2I4KDB4MWQxKV09XzB4MTYyOGNmO307fVtfMHg0NzRlMjgoMHgxYjYpXShfMHhjODRiOTMsXzB4M2UyZjQ0LF8weDE4NWFmMixfMHg0OWQxZDQsXzB4NGUxNDhkLF8weDJlY2Q1ZixfMHg0OTIyYTApe3ZhciBfMHgxZDdhNWY9XzB4NDc0ZTI4LF8weGI5NmE2MD10aGlzO3JldHVybiBfMHgzZTJmNDRbXzB4MWQ3YTVmKDB4MWUyKStfMHg0ZTE0OGRbXzB4MWQ3YTVmKDB4MWI1KV0oKV09ITB4MCxmdW5jdGlvbihfMHg1ZDRjOTQpe3ZhciBfMHg1NDYzZDk9XzB4MWQ3YTVmLF8weDM3ZmQ2Mj1fMHgyZWNkNWZbJ25vZGUnXVtfMHg1NDYzZDkoMHgyMDMpXSxfMHgyZThjZjc9XzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldW18weDU0NjNkOSgweDFkMSldLF8weDQxMWU2Nj1fMHgyZWNkNWZbXzB4NTQ2M2Q5KDB4MWMxKV1bJ3BhcmVudCddO18weDJlY2Q1ZltfMHg1NDYzZDkoMHgxYzEpXVtfMHg1NDYzZDkoMHgxYmQpXT1fMHgzN2ZkNjIsXzB4MmVjZDVmWydub2RlJ11bXzB4NTQ2M2Q5KDB4MWQxKV09XzB4NWQ0Yzk0LF8weGM4NGI5M1tfMHg1NDYzZDkoMHgxOWUpXShfMHhiOTZhNjBbXzB4NTQ2M2Q5KDB4MjI2KV0oXzB4MTg1YWYyLF8weDQ5ZDFkNCxfMHg0ZTE0OGQsXzB4MmVjZDVmLF8weDQ5MjJhMCkpLF8weDJlY2Q1Zlsnbm9kZSddWydwYXJlbnQnXT1fMHg0MTFlNjYsXzB4MmVjZDVmW18weDU0NjNkOSgweDFjMSldWydpbmRleCddPV8weDJlOGNmNzt9O31bXzB4NDc0ZTI4KDB4MjI2KV0oXzB4MzA5MDA0LF8weDI3ZjhmNCxfMHgyZDQwNmEsXzB4M2QxZWIyLF8weDVkYzE0OCl7dmFyIF8weDJmNjdjMD1fMHg0NzRlMjgsXzB4M2QyMzUxPXRoaXM7XzB4NWRjMTQ4fHwoXzB4NWRjMTQ4PWZ1bmN0aW9uKF8weDE2ZTViNCxfMHg5ZDU5Nzgpe3JldHVybiBfMHgxNmU1YjRbXzB4OWQ1OTc4XTt9KTt2YXIgXzB4MTIxZDc5PV8weDJkNDA2YVsndG9TdHJpbmcnXSgpLF8weDEwYTM1Zj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV18fHt9LF8weDU4OTc0Mj1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV0sXzB4ODJhYmY0PV8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXTt0cnl7dmFyIF8weDI1YTYyYT10aGlzW18weDJmNjdjMCgweDIwYyldKF8weDMwOTAwNCksXzB4MTdiY2I1PV8weDEyMWQ3OTtfMHgyNWE2MmEmJl8weDE3YmNiNVsweDBdPT09J1xcXFx4MjcnJiYoXzB4MTdiY2I1PV8weDE3YmNiNVsnc3Vic3RyJ10oMHgxLF8weDE3YmNiNVsnbGVuZ3RoJ10tMHgyKSk7dmFyIF8weDUzODU4MT1fMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjBkKV09XzB4MTBhMzVmW18weDJmNjdjMCgweDFlMikrXzB4MTdiY2I1XTtfMHg1Mzg1ODEmJihfMHgzZDFlYjJbJ2RlcHRoJ109XzB4M2QxZWIyW18weDJmNjdjMCgweDIyMSldKzB4MSksXzB4M2QxZWIyW18weDJmNjdjMCgweDFjYildPSEhXzB4NTM4NTgxO3ZhciBfMHg1N2E3NDI9dHlwZW9mIF8weDJkNDA2YT09XzB4MmY2N2MwKDB4MTczKSxfMHg0Mjg3Njc9eyduYW1lJzpfMHg1N2E3NDJ8fF8weDI1YTYyYT9fMHgxMjFkNzk6dGhpc1snX3Byb3BlcnR5TmFtZSddKF8weDEyMWQ3OSl9O2lmKF8weDU3YTc0MiYmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxNzMpXT0hMHgwKSwhKF8weDI3ZjhmND09PV8weDJmNjdjMCgweDFiYil8fF8weDI3ZjhmND09PSdFcnJvcicpKXt2YXIgXzB4MjdjMzdiPXRoaXNbXzB4MmY2N2MwKDB4MjA0KV0oXzB4MzA5MDA0LF8weDJkNDA2YSk7aWYoXzB4MjdjMzdiJiYoXzB4MjdjMzdiW18weDJmNjdjMCgweDFmYyldJiYoXzB4NDI4NzY3WydzZXR0ZXInXT0hMHgwKSxfMHgyN2MzN2JbXzB4MmY2N2MwKDB4MjUyKV0mJiFfMHg1Mzg1ODEmJiFfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWRjKV0pKXJldHVybiBfMHg0Mjg3NjdbXzB4MmY2N2MwKDB4MWY2KV09ITB4MCx0aGlzW18weDJmNjdjMCgweDI1OCldKF8weDQyODc2NyxfMHgzZDFlYjIpLF8weDQyODc2Nzt9dmFyIF8weDUzZGIzZjt0cnl7XzB4NTNkYjNmPV8weDVkYzE0OChfMHgzMDkwMDQsXzB4MmQ0MDZhKTt9Y2F0Y2goXzB4MTc1ZjZjKXtyZXR1cm4gXzB4NDI4NzY3PXsnbmFtZSc6XzB4MTIxZDc5LCd0eXBlJzpfMHgyZjY3YzAoMHgxYzIpLCdlcnJvcic6XzB4MTc1ZjZjW18weDJmNjdjMCgweDIzNCldfSx0aGlzWydfcHJvY2Vzc1RyZWVOb2RlUmVzdWx0J10oXzB4NDI4NzY3LF8weDNkMWViMiksXzB4NDI4NzY3O312YXIgXzB4M2NjZDA5PXRoaXNbXzB4MmY2N2MwKDB4MjYwKV0oXzB4NTNkYjNmKSxfMHg0OTU0NTc9dGhpc1tfMHgyZjY3YzAoMHgxOWIpXShfMHgzY2NkMDkpO2lmKF8weDQyODc2N1tfMHgyZjY3YzAoMHgxZDUpXT1fMHgzY2NkMDksXzB4NDk1NDU3KXRoaXNbJ19wcm9jZXNzVHJlZU5vZGVSZXN1bHQnXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHgyOTQyNmE9XzB4MmY2N2MwO18weDQyODc2N1tfMHgyOTQyNmEoMHgxYWUpXT1fMHg1M2RiM2ZbXzB4Mjk0MjZhKDB4MjJhKV0oKSwhXzB4NTM4NTgxJiZfMHgzZDIzNTFbXzB4Mjk0MjZhKDB4MjQ5KV0oXzB4M2NjZDA5LF8weDQyODc2NyxfMHgzZDFlYjIse30pO30pO2Vsc2V7dmFyIF8weGQ4MGU2PV8weDNkMWViMlsnYXV0b0V4cGFuZCddJiZfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MWVjKV08XzB4M2QxZWIyWydhdXRvRXhwYW5kTWF4RGVwdGgnXSYmXzB4M2QxZWIyW18weDJmNjdjMCgweDFmMyldWydpbmRleE9mJ10oXzB4NTNkYjNmKTwweDAmJl8weDNjY2QwOSE9PSdmdW5jdGlvbicmJl8weDNkMWViMltfMHgyZjY3YzAoMHgxN2MpXTxfMHgzZDFlYjJbJ2F1dG9FeHBhbmRMaW1pdCddO18weGQ4MGU2fHxfMHgzZDFlYjJbJ2xldmVsJ108XzB4NTg5NzQyfHxfMHg1Mzg1ODE/KHRoaXNbXzB4MmY2N2MwKDB4MWNmKV0oXzB4NDI4NzY3LF8weDUzZGIzZixfMHgzZDFlYjIsXzB4NTM4NTgxfHx7fSksdGhpc1tfMHgyZjY3YzAoMHgxZWIpXShfMHg1M2RiM2YsXzB4NDI4NzY3KSk6dGhpc1tfMHgyZjY3YzAoMHgyNTgpXShfMHg0Mjg3NjcsXzB4M2QxZWIyLF8weDUzZGIzZixmdW5jdGlvbigpe3ZhciBfMHg1NDJkZTE9XzB4MmY2N2MwO18weDNjY2QwOT09PV8weDU0MmRlMSgweDFmZCl8fF8weDNjY2QwOT09PV8weDU0MmRlMSgweDIyNCl8fChkZWxldGUgXzB4NDI4NzY3W18weDU0MmRlMSgweDFhZSldLF8weDQyODc2N1tfMHg1NDJkZTEoMHgyMGIpXT0hMHgwKTt9KTt9cmV0dXJuIF8weDQyODc2Nzt9ZmluYWxseXtfMHgzZDFlYjJbJ2V4cHJlc3Npb25zVG9FdmFsdWF0ZSddPV8weDEwYTM1ZixfMHgzZDFlYjJbXzB4MmY2N2MwKDB4MjIxKV09XzB4NTg5NzQyLF8weDNkMWViMltfMHgyZjY3YzAoMHgxY2IpXT1fMHg4MmFiZjQ7fX1bXzB4NDc0ZTI4KDB4MjQ5KV0oXzB4NGQxMTJlLF8weDQ1MWFlNSxfMHg1NmQ2MTAsXzB4M2JmNDhlKXt2YXIgXzB4Njc4MTY4PV8weDQ3NGUyOCxfMHhmOWQ3Nzc9XzB4M2JmNDhlW18weDY3ODE2OCgweDIxMildfHxfMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MjEyKV07aWYoKF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFjYSl8fF8weDRkMTEyZT09PV8weDY3ODE2OCgweDFkYSkpJiZfMHg0NTFhZTVbXzB4Njc4MTY4KDB4MWFlKV0pe2xldCBfMHgzYTAwZDQ9XzB4NDUxYWU1Wyd2YWx1ZSddW18weDY3ODE2OCgweDI0MSldO18weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXSs9XzB4M2EwMGQ0LF8weDU2ZDYxMFtfMHg2NzgxNjgoMHgyNjMpXT5fMHg1NmQ2MTBbXzB4Njc4MTY4KDB4MWE5KV0/KF8weDQ1MWFlNVtfMHg2NzgxNjgoMHgyMGIpXT0nJyxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTpfMHgzYTAwZDQ+XzB4ZjlkNzc3JiYoXzB4NDUxYWU1W18weDY3ODE2OCgweDIwYildPV8weDQ1MWFlNVsndmFsdWUnXVtfMHg2NzgxNjgoMHgyNTUpXSgweDAsXzB4ZjlkNzc3KSxkZWxldGUgXzB4NDUxYWU1W18weDY3ODE2OCgweDFhZSldKTt9fVtfMHg0NzRlMjgoMHgyMGMpXShfMHgxOWNiZTUpe3ZhciBfMHg0OWE0NTE9XzB4NDc0ZTI4O3JldHVybiEhKF8weDE5Y2JlNSYmXzB4MjJjY2IzWydNYXAnXSYmdGhpc1tfMHg0OWE0NTEoMHgyMmMpXShfMHgxOWNiZTUpPT09XzB4NDlhNDUxKDB4MTg2KSYmXzB4MTljYmU1Wydmb3JFYWNoJ10pO31bXzB4NDc0ZTI4KDB4MWNjKV0oXzB4NTcxZjZhKXt2YXIgXzB4Mzg0OTRlPV8weDQ3NGUyODtpZihfMHg1NzFmNmFbXzB4Mzg0OTRlKDB4MTk2KV0oL15cXFxcZCskLykpcmV0dXJuIF8weDU3MWY2YTt2YXIgXzB4MmFjMWUwO3RyeXtfMHgyYWMxZTA9SlNPTlsnc3RyaW5naWZ5J10oJycrXzB4NTcxZjZhKTt9Y2F0Y2h7XzB4MmFjMWUwPSdcXFxceDIyJyt0aGlzW18weDM4NDk0ZSgweDIyYyldKF8weDU3MWY2YSkrJ1xcXFx4MjInO31yZXR1cm4gXzB4MmFjMWUwW18weDM4NDk0ZSgweDE5NildKC9eXFxcIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVxcXCIkLyk/XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgyNTUpXSgweDEsXzB4MmFjMWUwW18weDM4NDk0ZSgweDI0MSldLTB4Mik6XzB4MmFjMWUwPV8weDJhYzFlMFtfMHgzODQ5NGUoMHgxN2IpXSgvJy9nLCdcXFxceDVjXFxcXHgyNycpW18weDM4NDk0ZSgweDE3YildKC9cXFxcXFxcXFxcXCIvZywnXFxcXHgyMicpW18weDM4NDk0ZSgweDE3YildKC8oXlxcXCJ8XFxcIiQpL2csJ1xcXFx4MjcnKSxfMHgyYWMxZTA7fVtfMHg0NzRlMjgoMHgyNTgpXShfMHg0Y2RmMjQsXzB4NDVkYTEyLF8weDE4ZTE2NyxfMHhlYzNmNil7dmFyIF8weDFkMTlmNT1fMHg0NzRlMjg7dGhpc1tfMHgxZDE5ZjUoMHgyMjMpXShfMHg0Y2RmMjQsXzB4NDVkYTEyKSxfMHhlYzNmNiYmXzB4ZWMzZjYoKSx0aGlzW18weDFkMTlmNSgweDFlYildKF8weDE4ZTE2NyxfMHg0Y2RmMjQpLHRoaXNbXzB4MWQxOWY1KDB4MWQzKV0oXzB4NGNkZjI0LF8weDQ1ZGExMik7fVtfMHg0NzRlMjgoMHgyMjMpXShfMHg0Mjg0YjQsXzB4NTA0YzhjKXt2YXIgXzB4MmVlZmMwPV8weDQ3NGUyODt0aGlzW18weDJlZWZjMCgweDE3OCldKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4NDI4NGI0LF8weDUwNGM4YyksdGhpc1snX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDQyODRiNCxfMHg1MDRjOGMpLHRoaXNbJ19zZXROb2RlUGVybWlzc2lvbnMnXShfMHg0Mjg0YjQsXzB4NTA0YzhjKTt9W18weDQ3NGUyOCgweDE3OCldKF8weDNkMGQ0NSxfMHgzODZiYTUpe31bJ19zZXROb2RlUXVlcnlQYXRoJ10oXzB4MmY4MzMwLF8weDQ1NjY2MCl7fVtfMHg0NzRlMjgoMHgxZTMpXShfMHg1NTk2YzIsXzB4M2Y3YTkyKXt9W18weDQ3NGUyOCgweDE4MildKF8weDc1Y2VhKXt2YXIgXzB4NTg2YmFjPV8weDQ3NGUyODtyZXR1cm4gXzB4NzVjZWE9PT10aGlzW18weDU4NmJhYygweDIxNSldO31bXzB4NDc0ZTI4KDB4MWQzKV0oXzB4NDM0ZWM5LF8weDM0NDA4ZSl7dmFyIF8weDRkY2JmYz1fMHg0NzRlMjg7dGhpc1tfMHg0ZGNiZmMoMHgxZTMpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDE4OCldKF8weDQzNGVjOSksXzB4MzQ0MDhlW18weDRkY2JmYygweDI0MildJiZ0aGlzW18weDRkY2JmYygweDFmOSldKF8weDQzNGVjOSksdGhpc1tfMHg0ZGNiZmMoMHgxYjgpXShfMHg0MzRlYzksXzB4MzQ0MDhlKSx0aGlzW18weDRkY2JmYygweDI2NCldKF8weDQzNGVjOSxfMHgzNDQwOGUpLHRoaXNbJ19jbGVhbk5vZGUnXShfMHg0MzRlYzkpO31bXzB4NDc0ZTI4KDB4MWViKV0oXzB4NTk5ZDI0LF8weDQxMzM1Nyl7dmFyIF8weDJkMGZjNz1fMHg0NzRlMjg7bGV0IF8weGMyZDg0Nzt0cnl7XzB4MjJjY2IzW18weDJkMGZjNygweDI1ZSldJiYoXzB4YzJkODQ3PV8weDIyY2NiM1tfMHgyZDBmYzcoMHgyNWUpXVtfMHgyZDBmYzcoMHgyMWIpXSxfMHgyMmNjYjNbXzB4MmQwZmM3KDB4MjVlKV1bXzB4MmQwZmM3KDB4MjFiKV09ZnVuY3Rpb24oKXt9KSxfMHg1OTlkMjQmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjQxKV09PV8weDJkMGZjNygweDFhZCkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjQxKV09XzB4NTk5ZDI0W18weDJkMGZjNygweDI0MSldKTt9Y2F0Y2h7fWZpbmFsbHl7XzB4YzJkODQ3JiYoXzB4MjJjY2IzWydjb25zb2xlJ11bJ2Vycm9yJ109XzB4YzJkODQ3KTt9aWYoXzB4NDEzMzU3Wyd0eXBlJ109PT1fMHgyZDBmYzcoMHgxYWQpfHxfMHg0MTMzNTdbJ3R5cGUnXT09PV8weDJkMGZjNygweDFkNikpe2lmKGlzTmFOKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkpXzB4NDEzMzU3W18weDJkMGZjNygweDI0ZildPSEweDAsZGVsZXRlIF8weDQxMzM1N1sndmFsdWUnXTtlbHNlIHN3aXRjaChfMHg0MTMzNTdbJ3ZhbHVlJ10pe2Nhc2UgTnVtYmVyWydQT1NJVElWRV9JTkZJTklUWSddOl8weDQxMzM1N1tfMHgyZDBmYzcoMHgyMmQpXT0hMHgwLGRlbGV0ZSBfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWFlKV07YnJlYWs7Y2FzZSBOdW1iZXJbJ05FR0FUSVZFX0lORklOSVRZJ106XzB4NDEzMzU3W18weDJkMGZjNygweDIxZCldPSEweDAsZGVsZXRlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXTticmVhaztjYXNlIDB4MDp0aGlzW18weDJkMGZjNygweDIzMCldKF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxYWUpXSkmJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MWZmKV09ITB4MCk7YnJlYWs7fX1lbHNlIF8weDQxMzM1N1tfMHgyZDBmYzcoMHgxZDUpXT09PV8weDJkMGZjNygweDIxMCkmJnR5cGVvZiBfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV09PV8weDJkMGZjNygweDFjYSkmJl8weDU5OWQyNFtfMHgyZDBmYzcoMHgyMTYpXSYmXzB4NDEzMzU3W18weDJkMGZjNygweDIxNildJiZfMHg1OTlkMjRbXzB4MmQwZmM3KDB4MjE2KV0hPT1fMHg0MTMzNTdbXzB4MmQwZmM3KDB4MjE2KV0mJihfMHg0MTMzNTdbXzB4MmQwZmM3KDB4MTlkKV09XzB4NTk5ZDI0WyduYW1lJ10pO31bXzB4NDc0ZTI4KDB4MjMwKV0oXzB4ZDU1MzlmKXt2YXIgXzB4MmVhZTYzPV8weDQ3NGUyODtyZXR1cm4gMHgxL18weGQ1NTM5Zj09PU51bWJlcltfMHgyZWFlNjMoMHgyNWMpXTt9Wydfc29ydFByb3BzJ10oXzB4MzgwMjM1KXt2YXIgXzB4MTQ2MTM1PV8weDQ3NGUyODshXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldfHwhXzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDI0MSldfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgxYmIpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT1fMHgxNDYxMzUoMHgyNWEpfHxfMHgzODAyMzVbXzB4MTQ2MTM1KDB4MWQ1KV09PT0nU2V0J3x8XzB4MzgwMjM1W18weDE0NjEzNSgweDI0NyldW18weDE0NjEzNSgweDFmYildKGZ1bmN0aW9uKF8weDQxNDkyOCxfMHgxOTQ1ZmMpe3ZhciBfMHgyNjY4OTI9XzB4MTQ2MTM1LF8weDFiNjZiNz1fMHg0MTQ5MjhbXzB4MjY2ODkyKDB4MjE2KV1bXzB4MjY2ODkyKDB4MWZlKV0oKSxfMHg1MzI4YmI9XzB4MTk0NWZjW18weDI2Njg5MigweDIxNildW18weDI2Njg5MigweDFmZSldKCk7cmV0dXJuIF8weDFiNjZiNzxfMHg1MzI4YmI/LTB4MTpfMHgxYjY2Yjc+XzB4NTMyOGJiPzB4MToweDA7fSk7fVtfMHg0NzRlMjgoMHgxYjgpXShfMHgzNjliZmYsXzB4MWUxYzY4KXt2YXIgXzB4MjU3OGU5PV8weDQ3NGUyODtpZighKF8weDFlMWM2OFtfMHgyNTc4ZTkoMHgxYjEpXXx8IV8weDM2OWJmZltfMHgyNTc4ZTkoMHgyNDcpXXx8IV8weDM2OWJmZlsncHJvcHMnXVsnbGVuZ3RoJ10pKXtmb3IodmFyIF8weDQxMjRiMD1bXSxfMHg1ZDhjMTI9W10sXzB4MWIwMmY3PTB4MCxfMHgyOTExNGY9XzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDI0MSldO18weDFiMDJmNzxfMHgyOTExNGY7XzB4MWIwMmY3Kyspe3ZhciBfMHg0ZGFkMDc9XzB4MzY5YmZmW18weDI1NzhlOSgweDI0NyldW18weDFiMDJmN107XzB4NGRhZDA3W18weDI1NzhlOSgweDFkNSldPT09XzB4MjU3OGU5KDB4MjEwKT9fMHg0MTI0YjBbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTpfMHg1ZDhjMTJbXzB4MjU3OGU5KDB4MTllKV0oXzB4NGRhZDA3KTt9aWYoISghXzB4NWQ4YzEyW18weDI1NzhlOSgweDI0MSldfHxfMHg0MTI0YjBbXzB4MjU3OGU5KDB4MjQxKV08PTB4MSkpe18weDM2OWJmZlsncHJvcHMnXT1fMHg1ZDhjMTI7dmFyIF8weDNmNTEzZT17J2Z1bmN0aW9uc05vZGUnOiEweDAsJ3Byb3BzJzpfMHg0MTI0YjB9O3RoaXNbXzB4MjU3OGU5KDB4MTc4KV0oXzB4M2Y1MTNlLF8weDFlMWM2OCksdGhpc1tfMHgyNTc4ZTkoMHgxZTMpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSx0aGlzW18weDI1NzhlOSgweDE4OCldKF8weDNmNTEzZSksdGhpc1tfMHgyNTc4ZTkoMHgxZDcpXShfMHgzZjUxM2UsXzB4MWUxYzY4KSxfMHgzZjUxM2VbJ2lkJ10rPSdcXFxceDIwZicsXzB4MzY5YmZmWydwcm9wcyddW18weDI1NzhlOSgweDFhMildKF8weDNmNTEzZSk7fX19WydfYWRkTG9hZE5vZGUnXShfMHgyNTFmZWEsXzB4MWM3YmVkKXt9W18weDQ3NGUyOCgweDE4OCldKF8weDQyMGM1ZSl7fVsnX2lzQXJyYXknXShfMHgxNzFkMzgpe3ZhciBfMHg0MTYyMzQ9XzB4NDc0ZTI4O3JldHVybiBBcnJheVsnaXNBcnJheSddKF8weDE3MWQzOCl8fHR5cGVvZiBfMHgxNzFkMzg9PV8weDQxNjIzNCgweDI0YykmJnRoaXNbJ19vYmplY3RUb1N0cmluZyddKF8weDE3MWQzOCk9PT1fMHg0MTYyMzQoMHgxOGEpO31bXzB4NDc0ZTI4KDB4MWQ3KV0oXzB4MzFiZGM0LF8weDUxNzliMSl7fVtfMHg0NzRlMjgoMHgyMzgpXShfMHg0ZTBlY2Mpe3ZhciBfMHg0MTIwNzk9XzB4NDc0ZTI4O2RlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjAyKV0sZGVsZXRlIF8weDRlMGVjY1snX2hhc1NldE9uSXRzUGF0aCddLGRlbGV0ZSBfMHg0ZTBlY2NbXzB4NDEyMDc5KDB4MjEzKV07fVsnX3NldE5vZGVFeHByZXNzaW9uUGF0aCddKF8weDExYmVhNixfMHg0N2UwMzIpe319bGV0IF8weDNhNDU2ND1uZXcgXzB4NDMyOGJjKCksXzB4NDYwYjM2PXsncHJvcHMnOjB4NjQsJ2VsZW1lbnRzJzoweDY0LCdzdHJMZW5ndGgnOjB4NDAwKjB4MzIsJ3RvdGFsU3RyTGVuZ3RoJzoweDQwMCoweDMyLCdhdXRvRXhwYW5kTGltaXQnOjB4MTM4OCwnYXV0b0V4cGFuZE1heERlcHRoJzoweGF9LF8weDE1ODY2YT17J3Byb3BzJzoweDUsJ2VsZW1lbnRzJzoweDUsJ3N0ckxlbmd0aCc6MHgxMDAsJ3RvdGFsU3RyTGVuZ3RoJzoweDEwMCoweDMsJ2F1dG9FeHBhbmRMaW1pdCc6MHgxZSwnYXV0b0V4cGFuZE1heERlcHRoJzoweDJ9O2Z1bmN0aW9uIF8weDI4MTYyNChfMHgyMzkwMGIsXzB4NTk4YTRhLF8weDFiNTRhYyxfMHgyNTRiZDQsXzB4NTE0OGE0LF8weDRmYjk0MCl7dmFyIF8weDM1NjdjYz1fMHg0NzRlMjg7bGV0IF8weDJkYmUwMSxfMHg1NGU5ZmU7dHJ5e18weDU0ZTlmZT1fMHg1OTE1OGIoKSxfMHgyZGJlMDE9XzB4NGUxNzFiW18weDU5OGE0YV0sIV8weDJkYmUwMXx8XzB4NTRlOWZlLV8weDJkYmUwMVsndHMnXT4weDFmNCYmXzB4MmRiZTAxW18weDM1NjdjYygweDFmYSldJiZfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0vXzB4MmRiZTAxWydjb3VudCddPDB4NjQ/KF8weDRlMTcxYltfMHg1OThhNGFdPV8weDJkYmUwMT17J2NvdW50JzoweDAsJ3RpbWUnOjB4MCwndHMnOl8weDU0ZTlmZX0sXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldPXt9KTpfMHg1NGU5ZmUtXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPjB4MzImJl8weDRlMTcxYltfMHgzNTY3Y2MoMHgyMTEpXVsnY291bnQnXSYmXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildL18weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldPDB4NjQmJihfMHg0ZTE3MWJbJ2hpdHMnXT17fSk7bGV0IF8weDE3NGQxYT1bXSxfMHg1YTJkYjY9XzB4MmRiZTAxW18weDM1NjdjYygweDI0NildfHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bXzB4MzU2N2NjKDB4MjQ2KV0/XzB4MTU4NjZhOl8weDQ2MGIzNixfMHgzNjlmYjA9XzB4NDY1ZGM3PT57dmFyIF8weDFlNzk4Nz1fMHgzNTY3Y2M7bGV0IF8weDM1YjMxZT17fTtyZXR1cm4gXzB4MzViMzFlW18weDFlNzk4NygweDI0NyldPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNDcpXSxfMHgzNWIzMWVbJ2VsZW1lbnRzJ109XzB4NDY1ZGM3W18weDFlNzk4NygweDI2MildLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgyMTIpXT1fMHg0NjVkYzdbXzB4MWU3OTg3KDB4MjEyKV0sXzB4MzViMzFlWyd0b3RhbFN0ckxlbmd0aCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgxYTkpXSxfMHgzNWIzMWVbJ2F1dG9FeHBhbmRMaW1pdCddPV8weDQ2NWRjN1tfMHgxZTc5ODcoMHgyNTApXSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWE4KV09XzB4NDY1ZGM3W18weDFlNzk4NygweDFhOCldLF8weDM1YjMxZVsnc29ydFByb3BzJ109ITB4MSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MWIxKV09IV8weDJjNzNkZSxfMHgzNWIzMWVbXzB4MWU3OTg3KDB4MjIxKV09MHgxLF8weDM1YjMxZVtfMHgxZTc5ODcoMHgxZWMpXT0weDAsXzB4MzViMzFlW18weDFlNzk4NygweDFkNCldPV8weDFlNzk4NygweDE3NCksXzB4MzViMzFlW18weDFlNzk4NygweDIwZSldPSdyb290X2V4cCcsXzB4MzViMzFlW18weDFlNzk4NygweDFiYSldPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDFmMyldPVtdLF8weDM1YjMxZVsnYXV0b0V4cGFuZFByb3BlcnR5Q291bnQnXT0weDAsXzB4MzViMzFlWydyZXNvbHZlR2V0dGVycyddPSEweDAsXzB4MzViMzFlW18weDFlNzk4NygweDI2MyldPTB4MCxfMHgzNWIzMWVbJ25vZGUnXT17J2N1cnJlbnQnOnZvaWQgMHgwLCdwYXJlbnQnOnZvaWQgMHgwLCdpbmRleCc6MHgwfSxfMHgzNWIzMWU7fTtmb3IodmFyIF8weDU0NGUxZT0weDA7XzB4NTQ0ZTFlPF8weDUxNDhhNFsnbGVuZ3RoJ107XzB4NTQ0ZTFlKyspXzB4MTc0ZDFhW18weDM1NjdjYygweDE5ZSldKF8weDNhNDU2NFtfMHgzNTY3Y2MoMHgxY2YpXSh7J3RpbWVOb2RlJzpfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMzYpfHx2b2lkIDB4MH0sXzB4NTE0OGE0W18weDU0NGUxZV0sXzB4MzY5ZmIwKF8weDVhMmRiNikse30pKTtpZihfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgxYWIpfHxfMHgyMzkwMGI9PT1fMHgzNTY3Y2MoMHgyMWIpKXtsZXQgXzB4MTZiYzUwPUVycm9yW18weDM1NjdjYygweDE4OSldO3RyeXtFcnJvcltfMHgzNTY3Y2MoMHgxODkpXT0weDEvMHgwLF8weDE3NGQxYVtfMHgzNTY3Y2MoMHgxOWUpXShfMHgzYTQ1NjRbXzB4MzU2N2NjKDB4MWNmKV0oeydzdGFja05vZGUnOiEweDB9LG5ldyBFcnJvcigpW18weDM1NjdjYygweDIwMSldLF8weDM2OWZiMChfMHg1YTJkYjYpLHsnc3RyTGVuZ3RoJzoweDEvMHgwfSkpO31maW5hbGx5e0Vycm9yW18weDM1NjdjYygweDE4OSldPV8weDE2YmM1MDt9fXJldHVybnsnbWV0aG9kJzpfMHgzNTY3Y2MoMHgyNTEpLCd2ZXJzaW9uJzpfMHgzNWZjNjMsJ2FyZ3MnOlt7J3RzJzpfMHgxYjU0YWMsJ3Nlc3Npb24nOl8weDI1NGJkNCwnYXJncyc6XzB4MTc0ZDFhLCdpZCc6XzB4NTk4YTRhLCdjb250ZXh0JzpfMHg0ZmI5NDB9XX07fWNhdGNoKF8weDY1N2ZiMCl7cmV0dXJueydtZXRob2QnOl8weDM1NjdjYygweDI1MSksJ3ZlcnNpb24nOl8weDM1ZmM2MywnYXJncyc6W3sndHMnOl8weDFiNTRhYywnc2Vzc2lvbic6XzB4MjU0YmQ0LCdhcmdzJzpbeyd0eXBlJzpfMHgzNTY3Y2MoMHgxYzIpLCdlcnJvcic6XzB4NjU3ZmIwJiZfMHg2NTdmYjBbXzB4MzU2N2NjKDB4MjM0KV19XSwnaWQnOl8weDU5OGE0YSwnY29udGV4dCc6XzB4NGZiOTQwfV19O31maW5hbGx5e3RyeXtpZihfMHgyZGJlMDEmJl8weDU0ZTlmZSl7bGV0IF8weDU2OWUyYT1fMHg1OTE1OGIoKTtfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MWZhKV0rKyxfMHgyZGJlMDFbXzB4MzU2N2NjKDB4MjM2KV0rPV8weDM3ZjU2MShfMHg1NGU5ZmUsXzB4NTY5ZTJhKSxfMHgyZGJlMDFbJ3RzJ109XzB4NTY5ZTJhLF8weDRlMTcxYlsnaGl0cyddW18weDM1NjdjYygweDFmYSldKyssXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDIzNildKz1fMHgzN2Y1NjEoXzB4NTRlOWZlLF8weDU2OWUyYSksXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldWyd0cyddPV8weDU2OWUyYSwoXzB4MmRiZTAxWydjb3VudCddPjB4MzJ8fF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyMzYpXT4weDY0KSYmKF8weDJkYmUwMVtfMHgzNTY3Y2MoMHgyNDYpXT0hMHgwKSwoXzB4NGUxNzFiW18weDM1NjdjYygweDIxMSldW18weDM1NjdjYygweDFmYSldPjB4M2U4fHxfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3RpbWUnXT4weDEyYykmJihfMHg0ZTE3MWJbXzB4MzU2N2NjKDB4MjExKV1bJ3JlZHVjZUxpbWl0cyddPSEweDApO319Y2F0Y2h7fX19cmV0dXJuIF8weDI4MTYyNDt9KChfMHgyMjNkMzcsXzB4NWJlZjdmLF8weDI5MzQ1NSxfMHgxOTY5MDMsXzB4NWYyYzZkLF8weDI2YTY5OSxfMHg1NmFkNTIsXzB4Y2YxMzI1LF8weDQ1ZGNjYyxfMHgxNWNjNmIsXzB4NGI1MDdmKT0+e3ZhciBfMHgxMjhjMzY9XzB4YjM4NDc5O2lmKF8weDIyM2QzN1snX2NvbnNvbGVfbmluamEnXSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO2lmKCFIKF8weDIyM2QzNyxfMHhjZjEzMjUsXzB4NWYyYzZkKSlyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldPXsnY29uc29sZUxvZyc6KCk9Pnt9LCdjb25zb2xlVHJhY2UnOigpPT57fSwnY29uc29sZVRpbWUnOigpPT57fSwnY29uc29sZVRpbWVFbmQnOigpPT57fSwnYXV0b0xvZyc6KCk9Pnt9LCdhdXRvTG9nTWFueSc6KCk9Pnt9LCdhdXRvVHJhY2VNYW55JzooKT0+e30sJ2NvdmVyYWdlJzooKT0+e30sJ2F1dG9UcmFjZSc6KCk9Pnt9LCdhdXRvVGltZSc6KCk9Pnt9LCdhdXRvVGltZUVuZCc6KCk9Pnt9fSxfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV07bGV0IF8weDRjODg5ND1CKF8weDIyM2QzNyksXzB4NGZjZTcwPV8weDRjODg5NFtfMHgxMjhjMzYoMHgxZTgpXSxfMHhmMDRlM2Y9XzB4NGM4ODk0W18weDEyOGMzNigweDE3ZCldLF8weDM0ZGJkMj1fMHg0Yzg4OTRbXzB4MTI4YzM2KDB4MWVmKV0sXzB4NTUzMWUwPXsnaGl0cyc6e30sJ3RzJzp7fX0sXzB4NThmMWNkPVgoXzB4MjIzZDM3LF8weDQ1ZGNjYyxfMHg1NTMxZTAsXzB4MjZhNjk5KSxfMHgyYjhiMGY9XzB4M2ZhYzc4PT57XzB4NTUzMWUwWyd0cyddW18weDNmYWM3OF09XzB4ZjA0ZTNmKCk7fSxfMHg5NWEwMmY9KF8weDE0MzViOSxfMHgzNGZmOTIpPT57bGV0IF8weDEyNGQyZT1fMHg1NTMxZTBbJ3RzJ11bXzB4MzRmZjkyXTtpZihkZWxldGUgXzB4NTUzMWUwWyd0cyddW18weDM0ZmY5Ml0sXzB4MTI0ZDJlKXtsZXQgXzB4NTliMDQ1PV8weDRmY2U3MChfMHgxMjRkMmUsXzB4ZjA0ZTNmKCkpO18weDUwNjM5ZihfMHg1OGYxY2QoJ3RpbWUnLF8weDE0MzViOSxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsW18weDU5YjA0NV0sXzB4MzRmZjkyKSk7fX0sXzB4M2MyZjIzPV8weDEzYmY3Yj0+e3ZhciBfMHg0NTdmNmI9XzB4MTI4YzM2LF8weDM0ZWI3YjtyZXR1cm4gXzB4NWYyYzZkPT09XzB4NDU3ZjZiKDB4MWRlKSYmXzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldJiYoKF8weDM0ZWI3Yj1fMHgxM2JmN2I9PW51bGw/dm9pZCAweDA6XzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldKT09bnVsbD92b2lkIDB4MDpfMHgzNGViN2JbXzB4NDU3ZjZiKDB4MjQxKV0pJiYoXzB4MTNiZjdiW18weDQ1N2Y2YigweDE5MyldWzB4MF1bXzB4NDU3ZjZiKDB4MWRkKV09XzB4MjIzZDM3W18weDQ1N2Y2YigweDFkZCldKSxfMHgxM2JmN2I7fTtfMHgyMjNkMzdbXzB4MTI4YzM2KDB4MWNkKV09eydjb25zb2xlTG9nJzooXzB4NWNhZmQ4LF8weDQ4N2NmNik9Pnt2YXIgXzB4NTUxODljPV8weDEyOGMzNjtfMHgyMjNkMzdbJ2NvbnNvbGUnXVtfMHg1NTE4OWMoMHgyNTEpXVtfMHg1NTE4OWMoMHgyMTYpXSE9PV8weDU1MTg5YygweDE5NCkmJl8weDUwNjM5ZihfMHg1OGYxY2QoXzB4NTUxODljKDB4MjUxKSxfMHg1Y2FmZDgsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDQ4N2NmNikpO30sJ2NvbnNvbGVUcmFjZSc6KF8weDVlNjQ3MyxfMHgzZDM1YzgpPT57dmFyIF8weDU2MTkwNj1fMHgxMjhjMzYsXzB4MTM5MWViLF8weDJiYjA2NTtfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MjVlKV1bJ2xvZyddWyduYW1lJ10hPT0nZGlzYWJsZWRUcmFjZScmJigoXzB4MmJiMDY1PShfMHgxMzkxZWI9XzB4MjIzZDM3W18weDU2MTkwNigweDFhMyldKT09bnVsbD92b2lkIDB4MDpfMHgxMzkxZWJbXzB4NTYxOTA2KDB4MjRkKV0pIT1udWxsJiZfMHgyYmIwNjVbXzB4NTYxOTA2KDB4MWMxKV0mJihfMHgyMjNkMzdbXzB4NTYxOTA2KDB4MTkyKV09ITB4MCksXzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoJ3RyYWNlJyxfMHg1ZTY0NzMsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDNkMzVjOCkpKSk7fSwnY29uc29sZUVycm9yJzooXzB4NDhmMjM0LF8weDUwYWNiNSk9Pnt2YXIgXzB4M2FjOTMwPV8weDEyOGMzNjtfMHgyMjNkMzdbXzB4M2FjOTMwKDB4MTkyKV09ITB4MCxfMHg1MDYzOWYoXzB4M2MyZjIzKF8weDU4ZjFjZChfMHgzYWM5MzAoMHgyMWIpLF8weDQ4ZjIzNCxfMHgzNGRiZDIoKSxfMHg1MjkwMzQsXzB4NTBhY2I1KSkpO30sJ2NvbnNvbGVUaW1lJzpfMHgzYjQ1Mjg9PntfMHgyYjhiMGYoXzB4M2I0NTI4KTt9LCdjb25zb2xlVGltZUVuZCc6KF8weDFkMmExYSxfMHg4ZmVjZDcpPT57XzB4OTVhMDJmKF8weDhmZWNkNyxfMHgxZDJhMWEpO30sJ2F1dG9Mb2cnOihfMHgyMDI2ODMsXzB4MmNmZTViKT0+e18weDUwNjM5ZihfMHg1OGYxY2QoJ2xvZycsXzB4MmNmZTViLF8weDM0ZGJkMigpLF8weDUyOTAzNCxbXzB4MjAyNjgzXSkpO30sJ2F1dG9Mb2dNYW55JzooXzB4NGI2YzQ3LF8weDQ1MGI2Nik9Pnt2YXIgXzB4NDczODAyPV8weDEyOGMzNjtfMHg1MDYzOWYoXzB4NThmMWNkKF8weDQ3MzgwMigweDI1MSksXzB4NGI2YzQ3LF8weDM0ZGJkMigpLF8weDUyOTAzNCxfMHg0NTBiNjYpKTt9LCdhdXRvVHJhY2UnOihfMHgzMmE3NixfMHgxNGJjMTIpPT57dmFyIF8weDU3Y2Y4YT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4NTdjZjhhKDB4MWFiKSxfMHgxNGJjMTIsXzB4MzRkYmQyKCksXzB4NTI5MDM0LFtfMHgzMmE3Nl0pKSk7fSwnYXV0b1RyYWNlTWFueSc6KF8weGUzNjBmNyxfMHgzM2MwZTIpPT57dmFyIF8weDNkYjAwZT1fMHgxMjhjMzY7XzB4NTA2MzlmKF8weDNjMmYyMyhfMHg1OGYxY2QoXzB4M2RiMDBlKDB4MWFiKSxfMHhlMzYwZjcsXzB4MzRkYmQyKCksXzB4NTI5MDM0LF8weDMzYzBlMikpKTt9LCdhdXRvVGltZSc6KF8weGQyMzc0OSxfMHgxZWYyZDgsXzB4NDExNmRiKT0+e18weDJiOGIwZihfMHg0MTE2ZGIpO30sJ2F1dG9UaW1lRW5kJzooXzB4MTRkNTkyLF8weDU5ZWZlNyxfMHgxMWY3YWMpPT57XzB4OTVhMDJmKF8weDU5ZWZlNyxfMHgxMWY3YWMpO30sJ2NvdmVyYWdlJzpfMHgyMDc0MmE9Pnt2YXIgXzB4NjQ0ODk3PV8weDEyOGMzNjtfMHg1MDYzOWYoeydtZXRob2QnOl8weDY0NDg5NygweDFiMiksJ3ZlcnNpb24nOl8weDI2YTY5OSwnYXJncyc6W3snaWQnOl8weDIwNzQyYX1dfSk7fX07bGV0IF8weDUwNjM5Zj1xKF8weDIyM2QzNyxfMHg1YmVmN2YsXzB4MjkzNDU1LF8weDE5NjkwMyxfMHg1ZjJjNmQsXzB4MTVjYzZiLF8weDRiNTA3ZiksXzB4NTI5MDM0PV8weDIyM2QzN1tfMHgxMjhjMzYoMHgyNjEpXTtyZXR1cm4gXzB4MjIzZDM3W18weDEyOGMzNigweDFjZCldO30pKGdsb2JhbFRoaXMsXzB4YjM4NDc5KDB4MThlKSxfMHhiMzg0NzkoMHgxZGYpLF8weGIzODQ3OSgweDI1YiksXzB4YjM4NDc5KDB4MWVlKSxfMHhiMzg0NzkoMHgyM2QpLF8weGIzODQ3OSgweDI0YSksXzB4YjM4NDc5KDB4MTk3KSxfMHhiMzg0NzkoMHgxY2UpLCcnLCcxJyk7XCIpO1xufVxuY2F0Y2ggKGUpIHsgfSB9XG47IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBvb19vbyhpKSB7XG4gICAgdmFyIHYgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2W19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBvb19jbSgpLmNvbnNvbGVMb2coaSwgdik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbiAgICByZXR1cm4gdjtcbn1cbjtcbm9vX29vOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gb29fdHIoaSkge1xuICAgIHZhciB2ID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgb29fY20oKS5jb25zb2xlVHJhY2UoaSwgdik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbiAgICByZXR1cm4gdjtcbn1cbjtcbm9vX3RyOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gb29fdHgoaSkge1xuICAgIHZhciB2ID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdltfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgb29fY20oKS5jb25zb2xlRXJyb3IoaSwgdik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbiAgICByZXR1cm4gdjtcbn1cbjtcbm9vX3R4OyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gb29fdHModikgeyB0cnkge1xuICAgIG9vX2NtKCkuY29uc29sZVRpbWUodik7XG59XG5jYXRjaCAoZSkgeyB9IHJldHVybiB2OyB9XG47XG5vb190czsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIG9vX3RlKHYsIGkpIHsgdHJ5IHtcbiAgICBvb19jbSgpLmNvbnNvbGVUaW1lRW5kKHYsIGkpO1xufVxuY2F0Y2ggKGUpIHsgfSByZXR1cm4gdjsgfVxuO1xub29fdGU7IC8qZXNsaW50IHVuaWNvcm4vbm8tYWJ1c2l2ZS1lc2xpbnQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL2Rpc2FibGUtZW5hYmxlLXBhaXI6LGVzbGludC1jb21tZW50cy9uby11bmxpbWl0ZWQtZGlzYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWFnZ3JlZ2F0aW5nLWVuYWJsZTosZXNsaW50LWNvbW1lbnRzL25vLWR1cGxpY2F0ZS1kaXNhYmxlOixlc2xpbnQtY29tbWVudHMvbm8tdW51c2VkLWRpc2FibGU6LGVzbGludC1jb21tZW50cy9uby11bnVzZWQtZW5hYmxlOiwqL1xuIl0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsIm1vZCIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIkR5bmFtaWNGaWVsZCIsImpxdWVyeV8xIiwicmVxdWlyZSIsInByb3RvdHlwZSIsImhpZGVTaG93Rm9ybUZpZWxkcyIsImh1bWFuaXRhcmlhblNjb3BlSGlkZVZvY2FidWxhcnlVcmkiLCJjb3VudHJ5QnVkZ2V0SGlkZUNvZGVGaWVsZCIsImFpZFR5cGVWb2NhYnVsYXJ5SGlkZUZpZWxkIiwic2VjdG9yVm9jYWJ1bGFyeUhpZGVGaWVsZCIsInBvbGljeVZvY2FidWxhcnlIaWRlRmllbGQiLCJyZWNpcGllbnRWb2NhYnVsYXJ5SGlkZUZpZWxkIiwidGFnVm9jYWJ1bGFyeUhpZGVGaWVsZCIsInRyYW5zYWN0aW9uQWlkVHlwZVZvY2FidWxhcnlIaWRlRmllbGQiLCJpbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGRVcmkiLCJfdGhpcyIsImh1bWFuaXRhcmlhblNjb3BlVm9jYWJ1bGFyeSIsImxlbmd0aCIsImVhY2giLCJpbmRleCIsInNjb3BlIiwiX2EiLCJ2YWwiLCJoaWRlSHVtYW5pdGFyaWFuU2NvcGVGaWVsZCIsInRvU3RyaW5nIiwib24iLCJlIiwicGFyYW1zIiwiZGF0YSIsImlkIiwidGFyZ2V0IiwiY2xvc2VzdCIsImZpbmQiLCJzaG93IiwicmVtb3ZlQXR0ciIsInRyaWdnZXIiLCJoaWRlIiwiYXR0ciIsInJlZmVyZW5jZVZvY2FidWxhcnkiLCJpbmRpY2F0b3JSZWZlcmVuY2VIaWRlRmllbGQiLCJyZWZlcmVuY2VVcmkiLCJjb3VudHJ5QnVkZ2V0Vm9jYWJ1bGFyeSIsImhpZGVDb3VudHJ5QnVkZ2V0RmllbGQiLCJjb3VudHJ5QnVkZ2V0Q29kZUlucHV0IiwiY291bnRyeUJ1ZGdldENvZGVTZWxlY3QiLCJhaWR0eXBlX3ZvY2FidWxhcnkiLCJpdGVtIiwiaGlkZUFpZFR5cGVTZWxlY3RGaWVsZCIsImhpZGVUcmFuc2FjdGlvbkFpZFR5cGVTZWxlY3RGaWVsZCIsImRlZmF1bHRfYWlkX3R5cGUiLCJlYXJtYXJraW5nX2NhdGVnb3J5IiwiZWFybWFya2luZ19tb2RhbGl0eSIsImNhc2hfYW5kX3ZvdWNoZXJfbW9kYWxpdGllcyIsImNhc2UxIiwiY2FzZTIiLCJjYXNlMyIsImNhc2U0IiwiYWlkX3R5cGUiLCJwb2xpY3ltYWtlcl92b2NhYnVsYXJ5IiwicG9saWN5X21hcmtlciIsImhpZGVQb2xpY3lNYWtlckZpZWxkIiwiY2FzZTFfc2hvdyIsImNhc2UyX3Nob3ciLCJzZWN0b3Jfdm9jYWJ1bGFyeSIsInNlY3RvciIsImhpZGVTZWN0b3JGaWVsZCIsImNhc2U3X3Nob3ciLCJjYXNlOF9zaG93IiwiY2FzZTk4Xzk5X3Nob3ciLCJkZWZhdWx0X3Nob3ciLCJjYXNlNyIsImNhc2U4IiwiY2FzZTk4Xzk5IiwiZGVmYXVsdF9oaWRlIiwicmVnaW9uX3ZvY2FidWxhcnkiLCJyZWdpb25fdm9jYWIiLCJoaWRlUmVjaXBpZW50UmVnaW9uRmllbGQiLCJjYXNlOTlfc2hvdyIsImNhc2U5OSIsInVwZGF0ZUFjdGl2aXR5SWRlbnRpZmllciIsImFjdGl2aXR5X2lkZW50aWZpZXIiLCJjb25jYXQiLCJ0YWdfdm9jYWJ1bGFyeSIsInRhZyIsImhpZGVUYWdGaWVsZCIsImNhc2UzX3Nob3ciLCJfX3NwcmVhZEFycmF5IiwidG8iLCJmcm9tIiwicGFjayIsImFyZ3VtZW50cyIsImkiLCJsIiwiYXIiLCJBcnJheSIsInNsaWNlIiwiY2FsbCIsImF4aW9zXzEiLCJEeW5hbWljRmllbGRfMSIsImR5bmFtaWNGaWVsZCIsIkZvcm1CdWlsZGVyIiwiYWRkRm9ybSIsImV2IiwicHJldmVudERlZmF1bHQiLCJjb250YWluZXIiLCJjb3VudCIsInBhcnNlSW50IiwicGFyZW50IiwicGFyZW50X2NvdW50IiwicGFyZW50cyIsIndyYXBwZXJfcGFyZW50X2NvdW50IiwicHJvdG8iLCJyZXBsYWNlIiwicHJldiIsImFwcGVuZCIsImNoaWxkcmVuIiwibGFzdCIsInNlbGVjdDIiLCJwbGFjZWhvbGRlciIsImFsbG93Q2xlYXIiLCJ3cmFwQWxsIiwiYWRkUGFyZW50Rm9ybSIsImFkZFdyYXBwZXJPbkFkZCIsImRlbGV0ZUZvcm0iLCJjb2xsZWN0aW9uTGVuZ3RoIiwidGciLCJuZXh0IiwicmVtb3ZlIiwiZGVsZXRlUGFyZW50Rm9ybSIsImFkZFdyYXBwZXIiLCJmb3JtRmllbGQiLCJ0ZXh0QXJlYUhlaWdodCIsImhlaWdodCIsInNjcm9sbEhlaWdodCIsImNzcyIsImFkZFRvQ29sbGVjdGlvbiIsImV2ZW50IiwiaGFzQ2xhc3MiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVEZWxldGVQYXJlbnRCdXR0b25zIiwiZGVsZXRlQ29sbGVjdGlvbiIsImRlbGV0ZUNvbmZpcm1hdGlvbiIsImNhbmNlbFBvcHVwIiwiZGVsZXRlQ29uZmlybSIsImRlbGV0ZUluZGV4IiwiY2hpbGRPclBhcmVudCIsImZhZGVJbiIsImZhZGVPdXQiLCJkZWxldGVCdXR0b24iLCJtdWx0aUZvcm0iLCJiYWNrZ3JvdW5kIiwib3V0bGluZSIsImZpbGVQYXRoIiwiZG9jdW1lbnQiLCJ1cmwiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJzdWNjZXNzIiwiZm9ybWF0IiwibWltZXR5cGUiLCJtZXNzYWdlIiwiZmlsZVVybCIsImRlbGV0ZUJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY2hhbmdlRGVsZXRlQnV0dG9uSW5uZXJIdG1sIiwiYnV0dG9uIiwiaW5pdGlhbFRleHQiLCJlc2NhcGVIdG1sIiwidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJmb3JFYWNoIiwiZm9ybUJ1aWxkZXIiLCJ0ZXh0QXJlYVRhcmdldCIsInNlbGVjdF9zZWFyY2giLCJxdWVyeVNlbGVjdG9yIiwiZm9jdXMiLCJ1cGRhdGVSZWdpc3RyYXRpb25BZ2VuY3kiLCJjb3VudHJ5IiwiZW5kcG9pbnQiLCJhamF4IiwiY3VycmVudF92YWwiLCJlbXB0eSIsIk9wdGlvbiIsImlkZW50aWZpZXIiLCJzdWJlbGVtZW50IiwidGl0bGUiLCJlcnJvckNvbnRhaW5lciIsImNoaWxkQ291bnQiLCJjaGlsZEVsZW1lbnRDb3VudCIsImNsYXNzTGlzdCIsImFkZCIsInJlYWRPbmx5U2VsZWN0cyIsInNlbGVjdCIsInNlbGVjdEVsZW1lbnRQYXJlbnRXcmFwcGVyIiwibmV4dFNpYmxpbmciLCJzZWxlY3RFbGVtZW50UGFyZW50IiwiZmlyc3RDaGlsZCIsInNlbGVjdEVsZW1lbnQiLCJzdHlsZSIsImN1cnNvciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9uc0xpc3QiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJub2RlIiwiRWxlbWVudCIsIm1hdGNoZXMiLCJuZXdEZWxldGVCdXR0b25zIiwib2JzZXJ2ZSIsImJvZHkiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiYXR0YWNoQ29sbGFwc2FibGVCdXR0b25FdmVudHMiLCJsYWJlbCIsImdldENsb3Nlc3RMYWJlbERvbSIsIm9wdGlvbmFsTGFiZWwiLCJnZXRPcHRpb25hbFRleHREb20iLCJnZXRDbG9zZXN0UGFyZW50U3ViZWxlbWVudERvbSIsInRoaXNCdXR0b25CZWxvbmdzVG9PcHRpb25hbEZvcm0iLCJjb25zb2xlIiwibG9nIiwiYXBwbHkiLCJvb19vbyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0b2dnbGVPcHRpb25hbFRleHQiLCJ0b2dnbGVBY2NvcmRpb25JdGVtcyIsInRvZ2dsZSIsImVycm9yTWVzc2FnZUV4aXN0cyIsImNsaWNrIiwiZXJyb3JEaXZzIiwiZXJyb3JUZXh0cyIsIl9pIiwiZXJyb3JEaXZzXzEiLCJkaXYiLCJ0cmltIiwiZXJyb3JUZXh0c18xIiwib3B0aW9uYWxMYWJlbFdpdGhTdmciLCJvcHRpb25hbExhYmVsV2l0aEJyYWNrZXRzIiwic3ZnRXhpc3RzIiwiaXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSIsIm5leHRFbGVtZW50U2libGluZyIsInRhZ05hbWUiLCJjb250YWlucyIsImhpZGVhYmxlU3ViZWxlbWVudHMiLCJmaWx0ZXIiLCJjaGlsZCIsIm91dHNpZGVCdXR0b24iLCJoYXNBZGRBZGRpdGlvbmFsQnV0dG9uT3V0c2lkZSIsImF0dGFjaEluaXRpYWxDb2xsYXBzYWJsZUJ1dHRvbkV2ZW50cyIsImFsbENvbGxhcHNhYmxlQnV0dG9ucyIsIm9ic2VydmVOZXdDb2xsYXBzYWJsZUJ1dHRvbnMiLCJ0eXBlIiwiSFRNTEVsZW1lbnQiLCJuZXdDb2xsYXBzYWJsZUJ1dHRvbnMiLCJ1bnNhZmUiLCJvb19jbSIsImV2YWwiLCJ2IiwiY29uc29sZUxvZyIsIm9vX3RyIiwiY29uc29sZVRyYWNlIiwib29fdHgiLCJjb25zb2xlRXJyb3IiLCJvb190cyIsImNvbnNvbGVUaW1lIiwib29fdGUiLCJjb25zb2xlVGltZUVuZCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/public/js/vendor.js b/public/js/vendor.js index 8aff7bfc6..db11ca5ee 100644 --- a/public/js/vendor.js +++ b/public/js/vendor.js @@ -24450,7361 +24450,6 @@ function r(e){var o,t,f="";if("string"==typeof e||"number"==typeof e)f+=e;else i /***/ }), -/***/ "./node_modules/crypto-js/aes.js": -/*!***************************************!*\ - !*** ./node_modules/crypto-js/aes.js ***! - \***************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Lookup tables - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX_0 = []; - var SUB_MIX_1 = []; - var SUB_MIX_2 = []; - var SUB_MIX_3 = []; - var INV_SUB_MIX_0 = []; - var INV_SUB_MIX_1 = []; - var INV_SUB_MIX_2 = []; - var INV_SUB_MIX_3 = []; - - // Compute lookup tables - (function () { - // Compute double table - var d = []; - for (var i = 0; i < 256; i++) { - if (i < 128) { - d[i] = i << 1; - } else { - d[i] = (i << 1) ^ 0x11b; - } - } - - // Walk GF(2^8) - var x = 0; - var xi = 0; - for (var i = 0; i < 256; i++) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; - - // Compute multiplication - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100); - SUB_MIX_0[x] = (t << 24) | (t >>> 8); - SUB_MIX_1[x] = (t << 16) | (t >>> 16); - SUB_MIX_2[x] = (t << 8) | (t >>> 24); - SUB_MIX_3[x] = t; - - // Compute inv sub bytes, inv mix columns tables - var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); - INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); - INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); - INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); - INV_SUB_MIX_3[sx] = t; - - // Compute next counter - if (!x) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - }()); - - // Precomputed Rcon lookup - var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - - /** - * AES block cipher algorithm. - */ - var AES = C_algo.AES = BlockCipher.extend({ - _doReset: function () { - var t; - - // Skip reset of nRounds has been set before and key did not change - if (this._nRounds && this._keyPriorReset === this._key) { - return; - } - - // Shortcuts - var key = this._keyPriorReset = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - // Compute number of rounds - var nRounds = this._nRounds = keySize + 6; - - // Compute number of key schedule rows - var ksRows = (nRounds + 1) * 4; - - // Compute key schedule - var keySchedule = this._keySchedule = []; - for (var ksRow = 0; ksRow < ksRows; ksRow++) { - if (ksRow < keySize) { - keySchedule[ksRow] = keyWords[ksRow]; - } else { - t = keySchedule[ksRow - 1]; - - if (!(ksRow % keySize)) { - // Rot word - t = (t << 8) | (t >>> 24); - - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - - // Mix Rcon - t ^= RCON[(ksRow / keySize) | 0] << 24; - } else if (keySize > 6 && ksRow % keySize == 4) { - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - } - - keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; - } - } - - // Compute inv key schedule - var invKeySchedule = this._invKeySchedule = []; - for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { - var ksRow = ksRows - invKsRow; - - if (invKsRow % 4) { - var t = keySchedule[ksRow]; - } else { - var t = keySchedule[ksRow - 4]; - } - - if (invKsRow < 4 || ksRow <= 4) { - invKeySchedule[invKsRow] = t; - } else { - invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ - INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; - } - } - }, - - encryptBlock: function (M, offset) { - this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); - }, - - decryptBlock: function (M, offset) { - // Swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - - this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); - - // Inv swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - }, - - _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { - // Shortcut - var nRounds = this._nRounds; - - // Get input, add round key - var s0 = M[offset] ^ keySchedule[0]; - var s1 = M[offset + 1] ^ keySchedule[1]; - var s2 = M[offset + 2] ^ keySchedule[2]; - var s3 = M[offset + 3] ^ keySchedule[3]; - - // Key schedule row counter - var ksRow = 4; - - // Rounds - for (var round = 1; round < nRounds; round++) { - // Shift rows, sub bytes, mix columns, add round key - var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; - var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; - var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; - var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; - - // Update state - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - // Shift rows, sub bytes, add round key - var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - - // Set output - M[offset] = t0; - M[offset + 1] = t1; - M[offset + 2] = t2; - M[offset + 3] = t3; - }, - - keySize: 256/32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); - */ - C.AES = BlockCipher._createHelper(AES); - }()); - - - return CryptoJS.AES; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/blowfish.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/blowfish.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - const N = 16; - - //Origin pbox and sbox, derived from PI - const ORIG_P = [ - 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, - 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, - 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, - 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, - 0x9216D5D9, 0x8979FB1B - ]; - - const ORIG_S = [ - [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, - 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, - 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, - 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, - 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, - 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, - 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, - 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, - 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, - 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, - 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, - 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, - 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, - 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, - 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, - 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, - 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, - 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, - 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, - 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, - 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, - 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, - 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, - 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, - 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, - 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, - 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, - 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, - 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, - 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, - 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, - 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, - 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, - 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, - 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, - 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, - 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, - 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, - 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, - 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, - 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, - 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, - 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, - 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, - 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, - 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, - 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, - 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, - 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, - 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, - 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, - 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, - 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, - 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, - 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, - 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, - 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, - 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, - 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, - 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, - 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, - 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, - 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, - 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ], - [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, - 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, - 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, - 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, - 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, - 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, - 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, - 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, - 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, - 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, - 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, - 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, - 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, - 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, - 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, - 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, - 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, - 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, - 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, - 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, - 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, - 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, - 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, - 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, - 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, - 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, - 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, - 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, - 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, - 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, - 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, - 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, - 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, - 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, - 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, - 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, - 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, - 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, - 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, - 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, - 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, - 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, - 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, - 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, - 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, - 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, - 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, - 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, - 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, - 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, - 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, - 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, - 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, - 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, - 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, - 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, - 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, - 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, - 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, - 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, - 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, - 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, - 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, - 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ], - [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, - 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, - 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, - 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, - 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, - 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, - 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, - 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, - 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, - 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, - 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, - 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, - 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, - 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, - 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, - 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, - 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, - 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, - 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, - 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, - 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, - 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, - 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, - 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, - 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, - 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, - 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, - 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, - 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, - 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, - 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, - 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, - 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, - 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, - 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, - 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, - 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, - 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, - 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, - 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, - 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, - 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, - 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, - 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, - 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, - 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, - 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, - 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, - 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, - 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, - 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, - 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, - 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, - 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, - 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, - 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, - 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, - 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, - 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, - 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, - 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, - 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, - 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, - 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ], - [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, - 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, - 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, - 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, - 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, - 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, - 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, - 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, - 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, - 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, - 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, - 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, - 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, - 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, - 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, - 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, - 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, - 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, - 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, - 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, - 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, - 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, - 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, - 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, - 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, - 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, - 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, - 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, - 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, - 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, - 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, - 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, - 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, - 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, - 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, - 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, - 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, - 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, - 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, - 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, - 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, - 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, - 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, - 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, - 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, - 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, - 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, - 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, - 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, - 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, - 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, - 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, - 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, - 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, - 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, - 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, - 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, - 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, - 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, - 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, - 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, - 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, - 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, - 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ] - ]; - - var BLOWFISH_CTX = { - pbox: [], - sbox: [] - } - - function F(ctx, x){ - let a = (x >> 24) & 0xFF; - let b = (x >> 16) & 0xFF; - let c = (x >> 8) & 0xFF; - let d = x & 0xFF; - - let y = ctx.sbox[0][a] + ctx.sbox[1][b]; - y = y ^ ctx.sbox[2][c]; - y = y + ctx.sbox[3][d]; - - return y; - } - - function BlowFish_Encrypt(ctx, left, right){ - let Xl = left; - let Xr = right; - let temp; - - for(let i = 0; i < N; ++i){ - Xl = Xl ^ ctx.pbox[i]; - Xr = F(ctx, Xl) ^ Xr; - - temp = Xl; - Xl = Xr; - Xr = temp; - } - - temp = Xl; - Xl = Xr; - Xr = temp; - - Xr = Xr ^ ctx.pbox[N]; - Xl = Xl ^ ctx.pbox[N + 1]; - - return {left: Xl, right: Xr}; - } - - function BlowFish_Decrypt(ctx, left, right){ - let Xl = left; - let Xr = right; - let temp; - - for(let i = N + 1; i > 1; --i){ - Xl = Xl ^ ctx.pbox[i]; - Xr = F(ctx, Xl) ^ Xr; - - temp = Xl; - Xl = Xr; - Xr = temp; - } - - temp = Xl; - Xl = Xr; - Xr = temp; - - Xr = Xr ^ ctx.pbox[1]; - Xl = Xl ^ ctx.pbox[0]; - - return {left: Xl, right: Xr}; - } - - /** - * Initialization ctx's pbox and sbox. - * - * @param {Object} ctx The object has pbox and sbox. - * @param {Array} key An array of 32-bit words. - * @param {int} keysize The length of the key. - * - * @example - * - * BlowFishInit(BLOWFISH_CTX, key, 128/32); - */ - function BlowFishInit(ctx, key, keysize) - { - for(let Row = 0; Row < 4; Row++) - { - ctx.sbox[Row] = []; - for(let Col = 0; Col < 256; Col++) - { - ctx.sbox[Row][Col] = ORIG_S[Row][Col]; - } - } - - let keyIndex = 0; - for(let index = 0; index < N + 2; index++) - { - ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex]; - keyIndex++; - if(keyIndex >= keysize) - { - keyIndex = 0; - } - } - - let Data1 = 0; - let Data2 = 0; - let res = 0; - for(let i = 0; i < N + 2; i += 2) - { - res = BlowFish_Encrypt(ctx, Data1, Data2); - Data1 = res.left; - Data2 = res.right; - ctx.pbox[i] = Data1; - ctx.pbox[i + 1] = Data2; - } - - for(let i = 0; i < 4; i++) - { - for(let j = 0; j < 256; j += 2) - { - res = BlowFish_Encrypt(ctx, Data1, Data2); - Data1 = res.left; - Data2 = res.right; - ctx.sbox[i][j] = Data1; - ctx.sbox[i][j + 1] = Data2; - } - } - - return true; - } - - /** - * Blowfish block cipher algorithm. - */ - var Blowfish = C_algo.Blowfish = BlockCipher.extend({ - _doReset: function () { - // Skip reset of nRounds has been set before and key did not change - if (this._keyPriorReset === this._key) { - return; - } - - // Shortcuts - var key = this._keyPriorReset = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - //Initialization pbox and sbox - BlowFishInit(BLOWFISH_CTX, keyWords, keySize); - }, - - encryptBlock: function (M, offset) { - var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]); - M[offset] = res.left; - M[offset + 1] = res.right; - }, - - decryptBlock: function (M, offset) { - var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]); - M[offset] = res.left; - M[offset + 1] = res.right; - }, - - blockSize: 64/32, - - keySize: 128/32, - - ivSize: 64/32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg); - * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg); - */ - C.Blowfish = BlockCipher._createHelper(Blowfish); - }()); - - - return CryptoJS.Blowfish; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/cipher-core.js": -/*!***********************************************!*\ - !*** ./node_modules/crypto-js/cipher-core.js ***! - \***********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Cipher core components. - */ - CryptoJS.lib.Cipher || (function (undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var Base64 = C_enc.Base64; - var C_algo = C.algo; - var EvpKDF = C_algo.EvpKDF; - - /** - * Abstract base cipher template. - * - * @property {number} keySize This cipher's key size. Default: 4 (128 bits) - * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) - * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. - * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. - */ - var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - * - * @property {WordArray} iv The IV to use for this operation. - */ - cfg: Base.extend(), - - /** - * Creates this cipher in encryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); - */ - createEncryptor: function (key, cfg) { - return this.create(this._ENC_XFORM_MODE, key, cfg); - }, - - /** - * Creates this cipher in decryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); - */ - createDecryptor: function (key, cfg) { - return this.create(this._DEC_XFORM_MODE, key, cfg); - }, - - /** - * Initializes a newly created cipher. - * - * @param {number} xformMode Either the encryption or decryption transormation mode constant. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @example - * - * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); - */ - init: function (xformMode, key, cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Store transform mode and key - this._xformMode = xformMode; - this._key = key; - - // Set initial values - this.reset(); - }, - - /** - * Resets this cipher to its initial state. - * - * @example - * - * cipher.reset(); - */ - reset: function () { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-cipher logic - this._doReset(); - }, - - /** - * Adds data to be encrypted or decrypted. - * - * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. - * - * @return {WordArray} The data after processing. - * - * @example - * - * var encrypted = cipher.process('data'); - * var encrypted = cipher.process(wordArray); - */ - process: function (dataUpdate) { - // Append - this._append(dataUpdate); - - // Process available blocks - return this._process(); - }, - - /** - * Finalizes the encryption or decryption process. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. - * - * @return {WordArray} The data after final processing. - * - * @example - * - * var encrypted = cipher.finalize(); - * var encrypted = cipher.finalize('data'); - * var encrypted = cipher.finalize(wordArray); - */ - finalize: function (dataUpdate) { - // Final data update - if (dataUpdate) { - this._append(dataUpdate); - } - - // Perform concrete-cipher logic - var finalProcessedData = this._doFinalize(); - - return finalProcessedData; - }, - - keySize: 128/32, - - ivSize: 128/32, - - _ENC_XFORM_MODE: 1, - - _DEC_XFORM_MODE: 2, - - /** - * Creates shortcut functions to a cipher's object interface. - * - * @param {Cipher} cipher The cipher to create a helper for. - * - * @return {Object} An object with encrypt and decrypt shortcut functions. - * - * @static - * - * @example - * - * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); - */ - _createHelper: (function () { - function selectCipherStrategy(key) { - if (typeof key == 'string') { - return PasswordBasedCipher; - } else { - return SerializableCipher; - } - } - - return function (cipher) { - return { - encrypt: function (message, key, cfg) { - return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); - }, - - decrypt: function (ciphertext, key, cfg) { - return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); - } - }; - }; - }()) - }); - - /** - * Abstract base stream cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) - */ - var StreamCipher = C_lib.StreamCipher = Cipher.extend({ - _doFinalize: function () { - // Process partial blocks - var finalProcessedBlocks = this._process(!!'flush'); - - return finalProcessedBlocks; - }, - - blockSize: 1 - }); - - /** - * Mode namespace. - */ - var C_mode = C.mode = {}; - - /** - * Abstract base block cipher mode template. - */ - var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ - /** - * Creates this mode for encryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); - */ - createEncryptor: function (cipher, iv) { - return this.Encryptor.create(cipher, iv); - }, - - /** - * Creates this mode for decryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); - */ - createDecryptor: function (cipher, iv) { - return this.Decryptor.create(cipher, iv); - }, - - /** - * Initializes a newly created mode. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @example - * - * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); - */ - init: function (cipher, iv) { - this._cipher = cipher; - this._iv = iv; - } - }); - - /** - * Cipher Block Chaining mode. - */ - var CBC = C_mode.CBC = (function () { - /** - * Abstract base CBC mode. - */ - var CBC = BlockCipherMode.extend(); - - /** - * CBC encryptor. - */ - CBC.Encryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // XOR and encrypt - xorBlock.call(this, words, offset, blockSize); - cipher.encryptBlock(words, offset); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - /** - * CBC decryptor. - */ - CBC.Decryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - // Decrypt and XOR - cipher.decryptBlock(words, offset); - xorBlock.call(this, words, offset, blockSize); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function xorBlock(words, offset, blockSize) { - var block; - - // Shortcut - var iv = this._iv; - - // Choose mixing block - if (iv) { - block = iv; - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - block = this._prevBlock; - } - - // XOR blocks - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= block[i]; - } - } - - return CBC; - }()); - - /** - * Padding namespace. - */ - var C_pad = C.pad = {}; - - /** - * PKCS #5/7 padding strategy. - */ - var Pkcs7 = C_pad.Pkcs7 = { - /** - * Pads data using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to pad. - * @param {number} blockSize The multiple that the data should be padded to. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.pad(wordArray, 4); - */ - pad: function (data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Create padding word - var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; - - // Create padding - var paddingWords = []; - for (var i = 0; i < nPaddingBytes; i += 4) { - paddingWords.push(paddingWord); - } - var padding = WordArray.create(paddingWords, nPaddingBytes); - - // Add padding - data.concat(padding); - }, - - /** - * Unpads data that had been padded using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to unpad. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.unpad(wordArray); - */ - unpad: function (data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - /** - * Abstract base block cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) - */ - var BlockCipher = C_lib.BlockCipher = Cipher.extend({ - /** - * Configuration options. - * - * @property {Mode} mode The block mode to use. Default: CBC - * @property {Padding} padding The padding strategy to use. Default: Pkcs7 - */ - cfg: Cipher.cfg.extend({ - mode: CBC, - padding: Pkcs7 - }), - - reset: function () { - var modeCreator; - - // Reset cipher - Cipher.reset.call(this); - - // Shortcuts - var cfg = this.cfg; - var iv = cfg.iv; - var mode = cfg.mode; - - // Reset block mode - if (this._xformMode == this._ENC_XFORM_MODE) { - modeCreator = mode.createEncryptor; - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - modeCreator = mode.createDecryptor; - // Keep at least one block in the buffer for unpadding - this._minBufferSize = 1; - } - - if (this._mode && this._mode.__creator == modeCreator) { - this._mode.init(this, iv && iv.words); - } else { - this._mode = modeCreator.call(mode, this, iv && iv.words); - this._mode.__creator = modeCreator; - } - }, - - _doProcessBlock: function (words, offset) { - this._mode.processBlock(words, offset); - }, - - _doFinalize: function () { - var finalProcessedBlocks; - - // Shortcut - var padding = this.cfg.padding; - - // Finalize - if (this._xformMode == this._ENC_XFORM_MODE) { - // Pad data - padding.pad(this._data, this.blockSize); - - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - - // Unpad data - padding.unpad(finalProcessedBlocks); - } - - return finalProcessedBlocks; - }, - - blockSize: 128/32 - }); - - /** - * A collection of cipher parameters. - * - * @property {WordArray} ciphertext The raw ciphertext. - * @property {WordArray} key The key to this ciphertext. - * @property {WordArray} iv The IV used in the ciphering operation. - * @property {WordArray} salt The salt used with a key derivation function. - * @property {Cipher} algorithm The cipher algorithm. - * @property {Mode} mode The block mode used in the ciphering operation. - * @property {Padding} padding The padding scheme used in the ciphering operation. - * @property {number} blockSize The block size of the cipher. - * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. - */ - var CipherParams = C_lib.CipherParams = Base.extend({ - /** - * Initializes a newly created cipher params object. - * - * @param {Object} cipherParams An object with any of the possible cipher parameters. - * - * @example - * - * var cipherParams = CryptoJS.lib.CipherParams.create({ - * ciphertext: ciphertextWordArray, - * key: keyWordArray, - * iv: ivWordArray, - * salt: saltWordArray, - * algorithm: CryptoJS.algo.AES, - * mode: CryptoJS.mode.CBC, - * padding: CryptoJS.pad.PKCS7, - * blockSize: 4, - * formatter: CryptoJS.format.OpenSSL - * }); - */ - init: function (cipherParams) { - this.mixIn(cipherParams); - }, - - /** - * Converts this cipher params object to a string. - * - * @param {Format} formatter (Optional) The formatting strategy to use. - * - * @return {string} The stringified cipher params. - * - * @throws Error If neither the formatter nor the default formatter is set. - * - * @example - * - * var string = cipherParams + ''; - * var string = cipherParams.toString(); - * var string = cipherParams.toString(CryptoJS.format.OpenSSL); - */ - toString: function (formatter) { - return (formatter || this.formatter).stringify(this); - } - }); - - /** - * Format namespace. - */ - var C_format = C.format = {}; - - /** - * OpenSSL formatting strategy. - */ - var OpenSSLFormatter = C_format.OpenSSL = { - /** - * Converts a cipher params object to an OpenSSL-compatible string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The OpenSSL-compatible string. - * - * @static - * - * @example - * - * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); - */ - stringify: function (cipherParams) { - var wordArray; - - // Shortcuts - var ciphertext = cipherParams.ciphertext; - var salt = cipherParams.salt; - - // Format - if (salt) { - wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); - } else { - wordArray = ciphertext; - } - - return wordArray.toString(Base64); - }, - - /** - * Converts an OpenSSL-compatible string to a cipher params object. - * - * @param {string} openSSLStr The OpenSSL-compatible string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); - */ - parse: function (openSSLStr) { - var salt; - - // Parse base64 - var ciphertext = Base64.parse(openSSLStr); - - // Shortcut - var ciphertextWords = ciphertext.words; - - // Test for salt - if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { - // Extract salt - salt = WordArray.create(ciphertextWords.slice(2, 4)); - - // Remove salt from ciphertext - ciphertextWords.splice(0, 4); - ciphertext.sigBytes -= 16; - } - - return CipherParams.create({ ciphertext: ciphertext, salt: salt }); - } - }; - - /** - * A cipher wrapper that returns ciphertext as a serializable cipher params object. - */ - var SerializableCipher = C_lib.SerializableCipher = Base.extend({ - /** - * Configuration options. - * - * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL - */ - cfg: Base.extend({ - format: OpenSSLFormatter - }), - - /** - * Encrypts a message. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - encrypt: function (cipher, message, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Encrypt - var encryptor = cipher.createEncryptor(key, cfg); - var ciphertext = encryptor.finalize(message); - - // Shortcut - var cipherCfg = encryptor.cfg; - - // Create and return serializable cipher params - return CipherParams.create({ - ciphertext: ciphertext, - key: key, - iv: cipherCfg.iv, - algorithm: cipher, - mode: cipherCfg.mode, - padding: cipherCfg.padding, - blockSize: cipher.blockSize, - formatter: cfg.format - }); - }, - - /** - * Decrypts serialized ciphertext. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - decrypt: function (cipher, ciphertext, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Decrypt - var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); - - return plaintext; - }, - - /** - * Converts serialized ciphertext to CipherParams, - * else assumed CipherParams already and returns ciphertext unchanged. - * - * @param {CipherParams|string} ciphertext The ciphertext. - * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. - * - * @return {CipherParams} The unserialized ciphertext. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); - */ - _parse: function (ciphertext, format) { - if (typeof ciphertext == 'string') { - return format.parse(ciphertext, this); - } else { - return ciphertext; - } - } - }); - - /** - * Key derivation function namespace. - */ - var C_kdf = C.kdf = {}; - - /** - * OpenSSL key derivation function. - */ - var OpenSSLKdf = C_kdf.OpenSSL = { - /** - * Derives a key and IV from a password. - * - * @param {string} password The password to derive from. - * @param {number} keySize The size in words of the key to generate. - * @param {number} ivSize The size in words of the IV to generate. - * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. - * - * @return {CipherParams} A cipher params object with the key, IV, and salt. - * - * @static - * - * @example - * - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); - */ - execute: function (password, keySize, ivSize, salt, hasher) { - // Generate random salt - if (!salt) { - salt = WordArray.random(64/8); - } - - // Derive key and IV - if (!hasher) { - var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); - } else { - var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt); - } - - - // Separate key and IV - var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); - key.sigBytes = keySize * 4; - - // Return params - return CipherParams.create({ key: key, iv: iv, salt: salt }); - } - }; - - /** - * A serializable cipher wrapper that derives the key from a password, - * and returns ciphertext as a serializable cipher params object. - */ - var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ - /** - * Configuration options. - * - * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL - */ - cfg: SerializableCipher.cfg.extend({ - kdf: OpenSSLKdf - }), - - /** - * Encrypts a message using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); - */ - encrypt: function (cipher, message, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Encrypt - var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); - - // Mix in derived params - ciphertext.mixIn(derivedParams); - - return ciphertext; - }, - - /** - * Decrypts serialized ciphertext using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); - */ - decrypt: function (cipher, ciphertext, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Decrypt - var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); - - return plaintext; - } - }); - }()); - - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/core.js": -/*!****************************************!*\ - !*** ./node_modules/crypto-js/core.js ***! - \****************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(); - } - else {} -}(this, function () { - - /*globals window, global, require*/ - - /** - * CryptoJS core components. - */ - var CryptoJS = CryptoJS || (function (Math, undefined) { - - var crypto; - - // Native crypto from window (Browser) - if (typeof window !== 'undefined' && window.crypto) { - crypto = window.crypto; - } - - // Native crypto in web worker (Browser) - if (typeof self !== 'undefined' && self.crypto) { - crypto = self.crypto; - } - - // Native crypto from worker - if (typeof globalThis !== 'undefined' && globalThis.crypto) { - crypto = globalThis.crypto; - } - - // Native (experimental IE 11) crypto from window (Browser) - if (!crypto && typeof window !== 'undefined' && window.msCrypto) { - crypto = window.msCrypto; - } - - // Native crypto from global (NodeJS) - if (!crypto && typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.crypto) { - crypto = __webpack_require__.g.crypto; - } - - // Native crypto import via require (NodeJS) - if (!crypto && "function" === 'function') { - try { - crypto = __webpack_require__(/*! crypto */ "?599d"); - } catch (err) {} - } - - /* - * Cryptographically secure pseudorandom number generator - * - * As Math.random() is cryptographically not safe to use - */ - var cryptoSecureRandomInt = function () { - if (crypto) { - // Use getRandomValues method (Browser) - if (typeof crypto.getRandomValues === 'function') { - try { - return crypto.getRandomValues(new Uint32Array(1))[0]; - } catch (err) {} - } - - // Use randomBytes method (NodeJS) - if (typeof crypto.randomBytes === 'function') { - try { - return crypto.randomBytes(4).readInt32LE(); - } catch (err) {} - } - } - - throw new Error('Native crypto module could not be used to get secure random number.'); - }; - - /* - * Local polyfill of Object.create - - */ - var create = Object.create || (function () { - function F() {} - - return function (obj) { - var subtype; - - F.prototype = obj; - - subtype = new F(); - - F.prototype = null; - - return subtype; - }; - }()); - - /** - * CryptoJS namespace. - */ - var C = {}; - - /** - * Library namespace. - */ - var C_lib = C.lib = {}; - - /** - * Base object for prototypal inheritance. - */ - var Base = C_lib.Base = (function () { - - - return { - /** - * Creates a new object that inherits from this object. - * - * @param {Object} overrides Properties to copy into the new object. - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * field: 'value', - * - * method: function () { - * } - * }); - */ - extend: function (overrides) { - // Spawn - var subtype = create(this); - - // Augment - if (overrides) { - subtype.mixIn(overrides); - } - - // Create default initializer - if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { - subtype.init = function () { - subtype.$super.init.apply(this, arguments); - }; - } - - // Initializer's prototype is the subtype object - subtype.init.prototype = subtype; - - // Reference supertype - subtype.$super = this; - - return subtype; - }, - - /** - * Extends this object and runs the init method. - * Arguments to create() will be passed to init(). - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var instance = MyType.create(); - */ - create: function () { - var instance = this.extend(); - instance.init.apply(instance, arguments); - - return instance; - }, - - /** - * Initializes a newly created object. - * Override this method to add some logic when your objects are created. - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * init: function () { - * // ... - * } - * }); - */ - init: function () { - }, - - /** - * Copies properties into this object. - * - * @param {Object} properties The properties to mix in. - * - * @example - * - * MyType.mixIn({ - * field: 'value' - * }); - */ - mixIn: function (properties) { - for (var propertyName in properties) { - if (properties.hasOwnProperty(propertyName)) { - this[propertyName] = properties[propertyName]; - } - } - - // IE won't copy toString using the loop above - if (properties.hasOwnProperty('toString')) { - this.toString = properties.toString; - } - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = instance.clone(); - */ - clone: function () { - return this.init.prototype.extend(this); - } - }; - }()); - - /** - * An array of 32-bit words. - * - * @property {Array} words The array of 32-bit words. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var WordArray = C_lib.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of 32-bit words. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.create(); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); - */ - init: function (words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 4; - } - }, - - /** - * Converts this word array to a string. - * - * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex - * - * @return {string} The stringified word array. - * - * @example - * - * var string = wordArray + ''; - * var string = wordArray.toString(); - * var string = wordArray.toString(CryptoJS.enc.Utf8); - */ - toString: function (encoder) { - return (encoder || Hex).stringify(this); - }, - - /** - * Concatenates a word array to this word array. - * - * @param {WordArray} wordArray The word array to append. - * - * @return {WordArray} This word array. - * - * @example - * - * wordArray1.concat(wordArray2); - */ - concat: function (wordArray) { - // Shortcuts - var thisWords = this.words; - var thatWords = wordArray.words; - var thisSigBytes = this.sigBytes; - var thatSigBytes = wordArray.sigBytes; - - // Clamp excess bits - this.clamp(); - - // Concat - if (thisSigBytes % 4) { - // Copy one byte at a time - for (var i = 0; i < thatSigBytes; i++) { - var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); - } - } else { - // Copy one word at a time - for (var j = 0; j < thatSigBytes; j += 4) { - thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; - } - } - this.sigBytes += thatSigBytes; - - // Chainable - return this; - }, - - /** - * Removes insignificant bits. - * - * @example - * - * wordArray.clamp(); - */ - clamp: function () { - // Shortcuts - var words = this.words; - var sigBytes = this.sigBytes; - - // Clamp - words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); - words.length = Math.ceil(sigBytes / 4); - }, - - /** - * Creates a copy of this word array. - * - * @return {WordArray} The clone. - * - * @example - * - * var clone = wordArray.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone.words = this.words.slice(0); - - return clone; - }, - - /** - * Creates a word array filled with random bytes. - * - * @param {number} nBytes The number of random bytes to generate. - * - * @return {WordArray} The random word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.random(16); - */ - random: function (nBytes) { - var words = []; - - for (var i = 0; i < nBytes; i += 4) { - words.push(cryptoSecureRandomInt()); - } - - return new WordArray.init(words, nBytes); - } - }); - - /** - * Encoder namespace. - */ - var C_enc = C.enc = {}; - - /** - * Hex encoding strategy. - */ - var Hex = C_enc.Hex = { - /** - * Converts a word array to a hex string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The hex string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.enc.Hex.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var hexChars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - hexChars.push((bite >>> 4).toString(16)); - hexChars.push((bite & 0x0f).toString(16)); - } - - return hexChars.join(''); - }, - - /** - * Converts a hex string to a word array. - * - * @param {string} hexStr The hex string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Hex.parse(hexString); - */ - parse: function (hexStr) { - // Shortcut - var hexStrLength = hexStr.length; - - // Convert - var words = []; - for (var i = 0; i < hexStrLength; i += 2) { - words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); - } - - return new WordArray.init(words, hexStrLength / 2); - } - }; - - /** - * Latin1 encoding strategy. - */ - var Latin1 = C_enc.Latin1 = { - /** - * Converts a word array to a Latin1 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Latin1 string. - * - * @static - * - * @example - * - * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var latin1Chars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - latin1Chars.push(String.fromCharCode(bite)); - } - - return latin1Chars.join(''); - }, - - /** - * Converts a Latin1 string to a word array. - * - * @param {string} latin1Str The Latin1 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); - */ - parse: function (latin1Str) { - // Shortcut - var latin1StrLength = latin1Str.length; - - // Convert - var words = []; - for (var i = 0; i < latin1StrLength; i++) { - words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); - } - - return new WordArray.init(words, latin1StrLength); - } - }; - - /** - * UTF-8 encoding strategy. - */ - var Utf8 = C_enc.Utf8 = { - /** - * Converts a word array to a UTF-8 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-8 string. - * - * @static - * - * @example - * - * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); - */ - stringify: function (wordArray) { - try { - return decodeURIComponent(escape(Latin1.stringify(wordArray))); - } catch (e) { - throw new Error('Malformed UTF-8 data'); - } - }, - - /** - * Converts a UTF-8 string to a word array. - * - * @param {string} utf8Str The UTF-8 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); - */ - parse: function (utf8Str) { - return Latin1.parse(unescape(encodeURIComponent(utf8Str))); - } - }; - - /** - * Abstract buffered block algorithm template. - * - * The property blockSize must be implemented in a concrete subtype. - * - * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 - */ - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ - /** - * Resets this block algorithm's data buffer to its initial state. - * - * @example - * - * bufferedBlockAlgorithm.reset(); - */ - reset: function () { - // Initial values - this._data = new WordArray.init(); - this._nDataBytes = 0; - }, - - /** - * Adds new data to this block algorithm's buffer. - * - * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. - * - * @example - * - * bufferedBlockAlgorithm._append('data'); - * bufferedBlockAlgorithm._append(wordArray); - */ - _append: function (data) { - // Convert string to WordArray, else assume WordArray already - if (typeof data == 'string') { - data = Utf8.parse(data); - } - - // Append - this._data.concat(data); - this._nDataBytes += data.sigBytes; - }, - - /** - * Processes available data blocks. - * - * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. - * - * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. - * - * @return {WordArray} The processed data. - * - * @example - * - * var processedData = bufferedBlockAlgorithm._process(); - * var processedData = bufferedBlockAlgorithm._process(!!'flush'); - */ - _process: function (doFlush) { - var processedWords; - - // Shortcuts - var data = this._data; - var dataWords = data.words; - var dataSigBytes = data.sigBytes; - var blockSize = this.blockSize; - var blockSizeBytes = blockSize * 4; - - // Count blocks ready - var nBlocksReady = dataSigBytes / blockSizeBytes; - if (doFlush) { - // Round up to include partial blocks - nBlocksReady = Math.ceil(nBlocksReady); - } else { - // Round down to include only full blocks, - // less the number of blocks that must remain in the buffer - nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); - } - - // Count words ready - var nWordsReady = nBlocksReady * blockSize; - - // Count bytes ready - var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); - - // Process blocks - if (nWordsReady) { - for (var offset = 0; offset < nWordsReady; offset += blockSize) { - // Perform concrete-algorithm logic - this._doProcessBlock(dataWords, offset); - } - - // Remove processed words - processedWords = dataWords.splice(0, nWordsReady); - data.sigBytes -= nBytesReady; - } - - // Return processed words - return new WordArray.init(processedWords, nBytesReady); - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = bufferedBlockAlgorithm.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone._data = this._data.clone(); - - return clone; - }, - - _minBufferSize: 0 - }); - - /** - * Abstract hasher template. - * - * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) - */ - var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - */ - cfg: Base.extend(), - - /** - * Initializes a newly created hasher. - * - * @param {Object} cfg (Optional) The configuration options to use for this hash computation. - * - * @example - * - * var hasher = CryptoJS.algo.SHA256.create(); - */ - init: function (cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Set initial values - this.reset(); - }, - - /** - * Resets this hasher to its initial state. - * - * @example - * - * hasher.reset(); - */ - reset: function () { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-hasher logic - this._doReset(); - }, - - /** - * Updates this hasher with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {Hasher} This hasher. - * - * @example - * - * hasher.update('message'); - * hasher.update(wordArray); - */ - update: function (messageUpdate) { - // Append - this._append(messageUpdate); - - // Update the hash - this._process(); - - // Chainable - return this; - }, - - /** - * Finalizes the hash computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The hash. - * - * @example - * - * var hash = hasher.finalize(); - * var hash = hasher.finalize('message'); - * var hash = hasher.finalize(wordArray); - */ - finalize: function (messageUpdate) { - // Final message update - if (messageUpdate) { - this._append(messageUpdate); - } - - // Perform concrete-hasher logic - var hash = this._doFinalize(); - - return hash; - }, - - blockSize: 512/32, - - /** - * Creates a shortcut function to a hasher's object interface. - * - * @param {Hasher} hasher The hasher to create a helper for. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); - */ - _createHelper: function (hasher) { - return function (message, cfg) { - return new hasher.init(cfg).finalize(message); - }; - }, - - /** - * Creates a shortcut function to the HMAC's object interface. - * - * @param {Hasher} hasher The hasher to use in this HMAC helper. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); - */ - _createHmacHelper: function (hasher) { - return function (message, key) { - return new C_algo.HMAC.init(hasher, key).finalize(message); - }; - } - }); - - /** - * Algorithm namespace. - */ - var C_algo = C.algo = {}; - - return C; - }(Math)); - - - return CryptoJS; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/enc-base64.js": -/*!**********************************************!*\ - !*** ./node_modules/crypto-js/enc-base64.js ***! - \**********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64 encoding strategy. - */ - var Base64 = C_enc.Base64 = { - /** - * Converts a word array to a Base64 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Base64 string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64 string to a word array. - * - * @param {string} base64Str The Base64 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64.parse(base64String); - */ - parse: function (base64Str) { - // Shortcuts - var base64StrLength = base64Str.length; - var map = this._map; - var reverseMap = this._reverseMap; - - if (!reverseMap) { - reverseMap = this._reverseMap = []; - for (var j = 0; j < map.length; j++) { - reverseMap[map.charCodeAt(j)] = j; - } - } - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex !== -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - return parseLoop(base64Str, base64StrLength, reverseMap); - - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' - }; - - function parseLoop(base64Str, base64StrLength, reverseMap) { - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); - var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); - var bitsCombined = bits1 | bits2; - words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - return WordArray.create(words, nBytes); - } - }()); - - - return CryptoJS.enc.Base64; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/enc-base64url.js": -/*!*************************************************!*\ - !*** ./node_modules/crypto-js/enc-base64url.js ***! - \*************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64url encoding strategy. - */ - var Base64url = C_enc.Base64url = { - /** - * Converts a word array to a Base64url string. - * - * @param {WordArray} wordArray The word array. - * - * @param {boolean} urlSafe Whether to use url safe - * - * @return {string} The Base64url string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64url.stringify(wordArray); - */ - stringify: function (wordArray, urlSafe) { - if (urlSafe === undefined) { - urlSafe = true - } - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = urlSafe ? this._safe_map : this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64url string to a word array. - * - * @param {string} base64Str The Base64url string. - * - * @param {boolean} urlSafe Whether to use url safe - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64url.parse(base64String); - */ - parse: function (base64Str, urlSafe) { - if (urlSafe === undefined) { - urlSafe = true - } - - // Shortcuts - var base64StrLength = base64Str.length; - var map = urlSafe ? this._safe_map : this._map; - var reverseMap = this._reverseMap; - - if (!reverseMap) { - reverseMap = this._reverseMap = []; - for (var j = 0; j < map.length; j++) { - reverseMap[map.charCodeAt(j)] = j; - } - } - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex !== -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - return parseLoop(base64Str, base64StrLength, reverseMap); - - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', - _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', - }; - - function parseLoop(base64Str, base64StrLength, reverseMap) { - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); - var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); - var bitsCombined = bits1 | bits2; - words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - return WordArray.create(words, nBytes); - } - }()); - - - return CryptoJS.enc.Base64url; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/enc-utf16.js": -/*!*********************************************!*\ - !*** ./node_modules/crypto-js/enc-utf16.js ***! - \*********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * UTF-16 BE encoding strategy. - */ - var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { - /** - * Converts a word array to a UTF-16 BE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 BE string. - * - * @static - * - * @example - * - * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 BE string to a word array. - * - * @param {string} utf16Str The UTF-16 BE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); - */ - parse: function (utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - /** - * UTF-16 LE encoding strategy. - */ - C_enc.Utf16LE = { - /** - * Converts a word array to a UTF-16 LE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 LE string. - * - * @static - * - * @example - * - * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 LE string to a word array. - * - * @param {string} utf16Str The UTF-16 LE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); - */ - parse: function (utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - function swapEndian(word) { - return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); - } - }()); - - - return CryptoJS.enc.Utf16; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/evpkdf.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/evpkdf.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./sha1 */ "./node_modules/crypto-js/sha1.js"), __webpack_require__(/*! ./hmac */ "./node_modules/crypto-js/hmac.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var MD5 = C_algo.MD5; - - /** - * This key derivation function is meant to conform with EVP_BytesToKey. - * www.openssl.org/docs/crypto/EVP_BytesToKey.html - */ - var EvpKDF = C_algo.EvpKDF = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hash algorithm to use. Default: MD5 - * @property {number} iterations The number of iterations to perform. Default: 1 - */ - cfg: Base.extend({ - keySize: 128/32, - hasher: MD5, - iterations: 1 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.EvpKDF.create(); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); - */ - init: function (cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function (password, salt) { - var block; - - // Shortcut - var cfg = this.cfg; - - // Init hasher - var hasher = cfg.hasher.create(); - - // Initial values - var derivedKey = WordArray.create(); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - if (block) { - hasher.update(block); - } - block = hasher.update(password).finalize(salt); - hasher.reset(); - - // Iterations - for (var i = 1; i < iterations; i++) { - block = hasher.finalize(block); - hasher.reset(); - } - - derivedKey.concat(block); - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.EvpKDF(password, salt); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.EvpKDF = function (password, salt, cfg) { - return EvpKDF.create(cfg).compute(password, salt); - }; - }()); - - - return CryptoJS.EvpKDF; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/format-hex.js": -/*!**********************************************!*\ - !*** ./node_modules/crypto-js/format-hex.js ***! - \**********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function (undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var CipherParams = C_lib.CipherParams; - var C_enc = C.enc; - var Hex = C_enc.Hex; - var C_format = C.format; - - var HexFormatter = C_format.Hex = { - /** - * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The hexadecimally encoded string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.format.Hex.stringify(cipherParams); - */ - stringify: function (cipherParams) { - return cipherParams.ciphertext.toString(Hex); - }, - - /** - * Converts a hexadecimally encoded ciphertext string to a cipher params object. - * - * @param {string} input The hexadecimally encoded string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.Hex.parse(hexString); - */ - parse: function (input) { - var ciphertext = Hex.parse(input); - return CipherParams.create({ ciphertext: ciphertext }); - } - }; - }()); - - - return CryptoJS.format.Hex; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/hmac.js": -/*!****************************************!*\ - !*** ./node_modules/crypto-js/hmac.js ***! - \****************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var C_algo = C.algo; - - /** - * HMAC algorithm. - */ - var HMAC = C_algo.HMAC = Base.extend({ - /** - * Initializes a newly created HMAC. - * - * @param {Hasher} hasher The hash algorithm to use. - * @param {WordArray|string} key The secret key. - * - * @example - * - * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); - */ - init: function (hasher, key) { - // Init hasher - hasher = this._hasher = new hasher.init(); - - // Convert string to WordArray, else assume WordArray already - if (typeof key == 'string') { - key = Utf8.parse(key); - } - - // Shortcuts - var hasherBlockSize = hasher.blockSize; - var hasherBlockSizeBytes = hasherBlockSize * 4; - - // Allow arbitrary length keys - if (key.sigBytes > hasherBlockSizeBytes) { - key = hasher.finalize(key); - } - - // Clamp excess bits - key.clamp(); - - // Clone key for inner and outer pads - var oKey = this._oKey = key.clone(); - var iKey = this._iKey = key.clone(); - - // Shortcuts - var oKeyWords = oKey.words; - var iKeyWords = iKey.words; - - // XOR keys with pad constants - for (var i = 0; i < hasherBlockSize; i++) { - oKeyWords[i] ^= 0x5c5c5c5c; - iKeyWords[i] ^= 0x36363636; - } - oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; - - // Set initial values - this.reset(); - }, - - /** - * Resets this HMAC to its initial state. - * - * @example - * - * hmacHasher.reset(); - */ - reset: function () { - // Shortcut - var hasher = this._hasher; - - // Reset - hasher.reset(); - hasher.update(this._iKey); - }, - - /** - * Updates this HMAC with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {HMAC} This HMAC instance. - * - * @example - * - * hmacHasher.update('message'); - * hmacHasher.update(wordArray); - */ - update: function (messageUpdate) { - this._hasher.update(messageUpdate); - - // Chainable - return this; - }, - - /** - * Finalizes the HMAC computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The HMAC. - * - * @example - * - * var hmac = hmacHasher.finalize(); - * var hmac = hmacHasher.finalize('message'); - * var hmac = hmacHasher.finalize(wordArray); - */ - finalize: function (messageUpdate) { - // Shortcut - var hasher = this._hasher; - - // Compute HMAC - var innerHash = hasher.finalize(messageUpdate); - hasher.reset(); - var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); - - return hmac; - } - }); - }()); - - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/index.js": -/*!*****************************************!*\ - !*** ./node_modules/crypto-js/index.js ***! - \*****************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./x64-core */ "./node_modules/crypto-js/x64-core.js"), __webpack_require__(/*! ./lib-typedarrays */ "./node_modules/crypto-js/lib-typedarrays.js"), __webpack_require__(/*! ./enc-utf16 */ "./node_modules/crypto-js/enc-utf16.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./enc-base64url */ "./node_modules/crypto-js/enc-base64url.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./sha1 */ "./node_modules/crypto-js/sha1.js"), __webpack_require__(/*! ./sha256 */ "./node_modules/crypto-js/sha256.js"), __webpack_require__(/*! ./sha224 */ "./node_modules/crypto-js/sha224.js"), __webpack_require__(/*! ./sha512 */ "./node_modules/crypto-js/sha512.js"), __webpack_require__(/*! ./sha384 */ "./node_modules/crypto-js/sha384.js"), __webpack_require__(/*! ./sha3 */ "./node_modules/crypto-js/sha3.js"), __webpack_require__(/*! ./ripemd160 */ "./node_modules/crypto-js/ripemd160.js"), __webpack_require__(/*! ./hmac */ "./node_modules/crypto-js/hmac.js"), __webpack_require__(/*! ./pbkdf2 */ "./node_modules/crypto-js/pbkdf2.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js"), __webpack_require__(/*! ./mode-cfb */ "./node_modules/crypto-js/mode-cfb.js"), __webpack_require__(/*! ./mode-ctr */ "./node_modules/crypto-js/mode-ctr.js"), __webpack_require__(/*! ./mode-ctr-gladman */ "./node_modules/crypto-js/mode-ctr-gladman.js"), __webpack_require__(/*! ./mode-ofb */ "./node_modules/crypto-js/mode-ofb.js"), __webpack_require__(/*! ./mode-ecb */ "./node_modules/crypto-js/mode-ecb.js"), __webpack_require__(/*! ./pad-ansix923 */ "./node_modules/crypto-js/pad-ansix923.js"), __webpack_require__(/*! ./pad-iso10126 */ "./node_modules/crypto-js/pad-iso10126.js"), __webpack_require__(/*! ./pad-iso97971 */ "./node_modules/crypto-js/pad-iso97971.js"), __webpack_require__(/*! ./pad-zeropadding */ "./node_modules/crypto-js/pad-zeropadding.js"), __webpack_require__(/*! ./pad-nopadding */ "./node_modules/crypto-js/pad-nopadding.js"), __webpack_require__(/*! ./format-hex */ "./node_modules/crypto-js/format-hex.js"), __webpack_require__(/*! ./aes */ "./node_modules/crypto-js/aes.js"), __webpack_require__(/*! ./tripledes */ "./node_modules/crypto-js/tripledes.js"), __webpack_require__(/*! ./rc4 */ "./node_modules/crypto-js/rc4.js"), __webpack_require__(/*! ./rabbit */ "./node_modules/crypto-js/rabbit.js"), __webpack_require__(/*! ./rabbit-legacy */ "./node_modules/crypto-js/rabbit-legacy.js"), __webpack_require__(/*! ./blowfish */ "./node_modules/crypto-js/blowfish.js")); - } - else {} -}(this, function (CryptoJS) { - - return CryptoJS; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/lib-typedarrays.js": -/*!***************************************************!*\ - !*** ./node_modules/crypto-js/lib-typedarrays.js ***! - \***************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Check if typed arrays are supported - if (typeof ArrayBuffer != 'function') { - return; - } - - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - - // Reference original init - var superInit = WordArray.init; - - // Augment WordArray.init to handle typed arrays - var subInit = WordArray.init = function (typedArray) { - // Convert buffers to uint8 - if (typedArray instanceof ArrayBuffer) { - typedArray = new Uint8Array(typedArray); - } - - // Convert other array views to uint8 - if ( - typedArray instanceof Int8Array || - (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || - typedArray instanceof Int16Array || - typedArray instanceof Uint16Array || - typedArray instanceof Int32Array || - typedArray instanceof Uint32Array || - typedArray instanceof Float32Array || - typedArray instanceof Float64Array - ) { - typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); - } - - // Handle Uint8Array - if (typedArray instanceof Uint8Array) { - // Shortcut - var typedArrayByteLength = typedArray.byteLength; - - // Extract bytes - var words = []; - for (var i = 0; i < typedArrayByteLength; i++) { - words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); - } - - // Initialize this word array - superInit.call(this, words, typedArrayByteLength); - } else { - // Else call normal init - superInit.apply(this, arguments); - } - }; - - subInit.prototype = WordArray; - }()); - - - return CryptoJS.lib.WordArray; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/md5.js": -/*!***************************************!*\ - !*** ./node_modules/crypto-js/md5.js ***! - \***************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function (Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var T = []; - - // Compute constants - (function () { - for (var i = 0; i < 64; i++) { - T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; - } - }()); - - /** - * MD5 hash algorithm. - */ - var MD5 = C_algo.MD5 = Hasher.extend({ - _doReset: function () { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476 - ]); - }, - - _doProcessBlock: function (M, offset) { - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - - // Shortcuts - var H = this._hash.words; - - var M_offset_0 = M[offset + 0]; - var M_offset_1 = M[offset + 1]; - var M_offset_2 = M[offset + 2]; - var M_offset_3 = M[offset + 3]; - var M_offset_4 = M[offset + 4]; - var M_offset_5 = M[offset + 5]; - var M_offset_6 = M[offset + 6]; - var M_offset_7 = M[offset + 7]; - var M_offset_8 = M[offset + 8]; - var M_offset_9 = M[offset + 9]; - var M_offset_10 = M[offset + 10]; - var M_offset_11 = M[offset + 11]; - var M_offset_12 = M[offset + 12]; - var M_offset_13 = M[offset + 13]; - var M_offset_14 = M[offset + 14]; - var M_offset_15 = M[offset + 15]; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - - // Computation - a = FF(a, b, c, d, M_offset_0, 7, T[0]); - d = FF(d, a, b, c, M_offset_1, 12, T[1]); - c = FF(c, d, a, b, M_offset_2, 17, T[2]); - b = FF(b, c, d, a, M_offset_3, 22, T[3]); - a = FF(a, b, c, d, M_offset_4, 7, T[4]); - d = FF(d, a, b, c, M_offset_5, 12, T[5]); - c = FF(c, d, a, b, M_offset_6, 17, T[6]); - b = FF(b, c, d, a, M_offset_7, 22, T[7]); - a = FF(a, b, c, d, M_offset_8, 7, T[8]); - d = FF(d, a, b, c, M_offset_9, 12, T[9]); - c = FF(c, d, a, b, M_offset_10, 17, T[10]); - b = FF(b, c, d, a, M_offset_11, 22, T[11]); - a = FF(a, b, c, d, M_offset_12, 7, T[12]); - d = FF(d, a, b, c, M_offset_13, 12, T[13]); - c = FF(c, d, a, b, M_offset_14, 17, T[14]); - b = FF(b, c, d, a, M_offset_15, 22, T[15]); - - a = GG(a, b, c, d, M_offset_1, 5, T[16]); - d = GG(d, a, b, c, M_offset_6, 9, T[17]); - c = GG(c, d, a, b, M_offset_11, 14, T[18]); - b = GG(b, c, d, a, M_offset_0, 20, T[19]); - a = GG(a, b, c, d, M_offset_5, 5, T[20]); - d = GG(d, a, b, c, M_offset_10, 9, T[21]); - c = GG(c, d, a, b, M_offset_15, 14, T[22]); - b = GG(b, c, d, a, M_offset_4, 20, T[23]); - a = GG(a, b, c, d, M_offset_9, 5, T[24]); - d = GG(d, a, b, c, M_offset_14, 9, T[25]); - c = GG(c, d, a, b, M_offset_3, 14, T[26]); - b = GG(b, c, d, a, M_offset_8, 20, T[27]); - a = GG(a, b, c, d, M_offset_13, 5, T[28]); - d = GG(d, a, b, c, M_offset_2, 9, T[29]); - c = GG(c, d, a, b, M_offset_7, 14, T[30]); - b = GG(b, c, d, a, M_offset_12, 20, T[31]); - - a = HH(a, b, c, d, M_offset_5, 4, T[32]); - d = HH(d, a, b, c, M_offset_8, 11, T[33]); - c = HH(c, d, a, b, M_offset_11, 16, T[34]); - b = HH(b, c, d, a, M_offset_14, 23, T[35]); - a = HH(a, b, c, d, M_offset_1, 4, T[36]); - d = HH(d, a, b, c, M_offset_4, 11, T[37]); - c = HH(c, d, a, b, M_offset_7, 16, T[38]); - b = HH(b, c, d, a, M_offset_10, 23, T[39]); - a = HH(a, b, c, d, M_offset_13, 4, T[40]); - d = HH(d, a, b, c, M_offset_0, 11, T[41]); - c = HH(c, d, a, b, M_offset_3, 16, T[42]); - b = HH(b, c, d, a, M_offset_6, 23, T[43]); - a = HH(a, b, c, d, M_offset_9, 4, T[44]); - d = HH(d, a, b, c, M_offset_12, 11, T[45]); - c = HH(c, d, a, b, M_offset_15, 16, T[46]); - b = HH(b, c, d, a, M_offset_2, 23, T[47]); - - a = II(a, b, c, d, M_offset_0, 6, T[48]); - d = II(d, a, b, c, M_offset_7, 10, T[49]); - c = II(c, d, a, b, M_offset_14, 15, T[50]); - b = II(b, c, d, a, M_offset_5, 21, T[51]); - a = II(a, b, c, d, M_offset_12, 6, T[52]); - d = II(d, a, b, c, M_offset_3, 10, T[53]); - c = II(c, d, a, b, M_offset_10, 15, T[54]); - b = II(b, c, d, a, M_offset_1, 21, T[55]); - a = II(a, b, c, d, M_offset_8, 6, T[56]); - d = II(d, a, b, c, M_offset_15, 10, T[57]); - c = II(c, d, a, b, M_offset_6, 15, T[58]); - b = II(b, c, d, a, M_offset_13, 21, T[59]); - a = II(a, b, c, d, M_offset_4, 6, T[60]); - d = II(d, a, b, c, M_offset_11, 10, T[61]); - c = II(c, d, a, b, M_offset_2, 15, T[62]); - b = II(b, c, d, a, M_offset_9, 21, T[63]); - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - - var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); - var nBitsTotalL = nBitsTotal; - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( - (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | - (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) - ); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | - (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) - ); - - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 4; i++) { - // Shortcut - var H_i = H[i]; - - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - function FF(a, b, c, d, x, s, t) { - var n = a + ((b & c) | (~b & d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function GG(a, b, c, d, x, s, t) { - var n = a + ((b & d) | (c & ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function HH(a, b, c, d, x, s, t) { - var n = a + (b ^ c ^ d) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function II(a, b, c, d, x, s, t) { - var n = a + (c ^ (b | ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.MD5('message'); - * var hash = CryptoJS.MD5(wordArray); - */ - C.MD5 = Hasher._createHelper(MD5); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacMD5(message, key); - */ - C.HmacMD5 = Hasher._createHmacHelper(MD5); - }(Math)); - - - return CryptoJS.MD5; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/mode-cfb.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/mode-cfb.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Cipher Feedback block mode. - */ - CryptoJS.mode.CFB = (function () { - var CFB = CryptoJS.lib.BlockCipherMode.extend(); - - CFB.Encryptor = CFB.extend({ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - CFB.Decryptor = CFB.extend({ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { - var keystream; - - // Shortcut - var iv = this._iv; - - // Generate keystream - if (iv) { - keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - keystream = this._prevBlock; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - - return CFB; - }()); - - - return CryptoJS.mode.CFB; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/mode-ctr-gladman.js": -/*!****************************************************!*\ - !*** ./node_modules/crypto-js/mode-ctr-gladman.js ***! - \****************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** @preserve - * Counter block mode compatible with Dr Brian Gladman fileenc.c - * derived from CryptoJS.mode.CTR - * Jan Hruby jhruby.web@gmail.com - */ - CryptoJS.mode.CTRGladman = (function () { - var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); - - function incWord(word) - { - if (((word >> 24) & 0xff) === 0xff) { //overflow - var b1 = (word >> 16)&0xff; - var b2 = (word >> 8)&0xff; - var b3 = word & 0xff; - - if (b1 === 0xff) // overflow b1 - { - b1 = 0; - if (b2 === 0xff) - { - b2 = 0; - if (b3 === 0xff) - { - b3 = 0; - } - else - { - ++b3; - } - } - else - { - ++b2; - } - } - else - { - ++b1; - } - - word = 0; - word += (b1 << 16); - word += (b2 << 8); - word += b3; - } - else - { - word += (0x01 << 24); - } - return word; - } - - function incCounter(counter) - { - if ((counter[0] = incWord(counter[0])) === 0) - { - // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 - counter[1] = incWord(counter[1]); - } - return counter; - } - - var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - - incCounter(counter); - - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTRGladman.Decryptor = Encryptor; - - return CTRGladman; - }()); - - - - - return CryptoJS.mode.CTRGladman; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/mode-ctr.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/mode-ctr.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Counter block mode. - */ - CryptoJS.mode.CTR = (function () { - var CTR = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = CTR.Encryptor = CTR.extend({ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Increment counter - counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTR.Decryptor = Encryptor; - - return CTR; - }()); - - - return CryptoJS.mode.CTR; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/mode-ecb.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/mode-ecb.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Electronic Codebook block mode. - */ - CryptoJS.mode.ECB = (function () { - var ECB = CryptoJS.lib.BlockCipherMode.extend(); - - ECB.Encryptor = ECB.extend({ - processBlock: function (words, offset) { - this._cipher.encryptBlock(words, offset); - } - }); - - ECB.Decryptor = ECB.extend({ - processBlock: function (words, offset) { - this._cipher.decryptBlock(words, offset); - } - }); - - return ECB; - }()); - - - return CryptoJS.mode.ECB; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/mode-ofb.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/mode-ofb.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Output Feedback block mode. - */ - CryptoJS.mode.OFB = (function () { - var OFB = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = OFB.Encryptor = OFB.extend({ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var keystream = this._keystream; - - // Generate keystream - if (iv) { - keystream = this._keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - OFB.Decryptor = Encryptor; - - return OFB; - }()); - - - return CryptoJS.mode.OFB; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pad-ansix923.js": -/*!************************************************!*\ - !*** ./node_modules/crypto-js/pad-ansix923.js ***! - \************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * ANSI X.923 padding strategy. - */ - CryptoJS.pad.AnsiX923 = { - pad: function (data, blockSize) { - // Shortcuts - var dataSigBytes = data.sigBytes; - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; - - // Compute last byte position - var lastBytePos = dataSigBytes + nPaddingBytes - 1; - - // Pad - data.clamp(); - data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); - data.sigBytes += nPaddingBytes; - }, - - unpad: function (data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - - return CryptoJS.pad.Ansix923; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pad-iso10126.js": -/*!************************************************!*\ - !*** ./node_modules/crypto-js/pad-iso10126.js ***! - \************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * ISO 10126 padding strategy. - */ - CryptoJS.pad.Iso10126 = { - pad: function (data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Pad - data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). - concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); - }, - - unpad: function (data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - - return CryptoJS.pad.Iso10126; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pad-iso97971.js": -/*!************************************************!*\ - !*** ./node_modules/crypto-js/pad-iso97971.js ***! - \************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * ISO/IEC 9797-1 Padding Method 2. - */ - CryptoJS.pad.Iso97971 = { - pad: function (data, blockSize) { - // Add 0x80 byte - data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); - - // Zero pad the rest - CryptoJS.pad.ZeroPadding.pad(data, blockSize); - }, - - unpad: function (data) { - // Remove zero padding - CryptoJS.pad.ZeroPadding.unpad(data); - - // Remove one more byte -- the 0x80 byte - data.sigBytes--; - } - }; - - - return CryptoJS.pad.Iso97971; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pad-nopadding.js": -/*!*************************************************!*\ - !*** ./node_modules/crypto-js/pad-nopadding.js ***! - \*************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * A noop padding strategy. - */ - CryptoJS.pad.NoPadding = { - pad: function () { - }, - - unpad: function () { - } - }; - - - return CryptoJS.pad.NoPadding; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pad-zeropadding.js": -/*!***************************************************!*\ - !*** ./node_modules/crypto-js/pad-zeropadding.js ***! - \***************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** - * Zero padding strategy. - */ - CryptoJS.pad.ZeroPadding = { - pad: function (data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Pad - data.clamp(); - data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); - }, - - unpad: function (data) { - // Shortcut - var dataWords = data.words; - - // Unpad - var i = data.sigBytes - 1; - for (var i = data.sigBytes - 1; i >= 0; i--) { - if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { - data.sigBytes = i + 1; - break; - } - } - } - }; - - - return CryptoJS.pad.ZeroPadding; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/pbkdf2.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/pbkdf2.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./sha256 */ "./node_modules/crypto-js/sha256.js"), __webpack_require__(/*! ./hmac */ "./node_modules/crypto-js/hmac.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA256 = C_algo.SHA256; - var HMAC = C_algo.HMAC; - - /** - * Password-Based Key Derivation Function 2 algorithm. - */ - var PBKDF2 = C_algo.PBKDF2 = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hasher to use. Default: SHA256 - * @property {number} iterations The number of iterations to perform. Default: 250000 - */ - cfg: Base.extend({ - keySize: 128/32, - hasher: SHA256, - iterations: 250000 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.PBKDF2.create(); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); - */ - init: function (cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function (password, salt) { - // Shortcut - var cfg = this.cfg; - - // Init HMAC - var hmac = HMAC.create(cfg.hasher, password); - - // Initial values - var derivedKey = WordArray.create(); - var blockIndex = WordArray.create([0x00000001]); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var blockIndexWords = blockIndex.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - var block = hmac.update(salt).finalize(blockIndex); - hmac.reset(); - - // Shortcuts - var blockWords = block.words; - var blockWordsLength = blockWords.length; - - // Iterations - var intermediate = block; - for (var i = 1; i < iterations; i++) { - intermediate = hmac.finalize(intermediate); - hmac.reset(); - - // Shortcut - var intermediateWords = intermediate.words; - - // XOR intermediate with block - for (var j = 0; j < blockWordsLength; j++) { - blockWords[j] ^= intermediateWords[j]; - } - } - - derivedKey.concat(block); - blockIndexWords[0]++; - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.PBKDF2(password, salt); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.PBKDF2 = function (password, salt, cfg) { - return PBKDF2.create(cfg).compute(password, salt); - }; - }()); - - - return CryptoJS.PBKDF2; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/rabbit-legacy.js": -/*!*************************************************!*\ - !*** ./node_modules/crypto-js/rabbit-legacy.js ***! - \*************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm. - * - * This is a legacy version that neglected to convert the key to little-endian. - * This error doesn't affect the cipher's security, - * but it does affect its compatibility with other implementations. - */ - var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ - _doReset: function () { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function (M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128/32, - - ivSize: 64/32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); - */ - C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); - }()); - - - return CryptoJS.RabbitLegacy; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/rabbit.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/rabbit.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm - */ - var Rabbit = C_algo.Rabbit = StreamCipher.extend({ - _doReset: function () { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Swap endian - for (var i = 0; i < 4; i++) { - K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | - (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); - } - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function (M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128/32, - - ivSize: 64/32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); - * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); - */ - C.Rabbit = StreamCipher._createHelper(Rabbit); - }()); - - - return CryptoJS.Rabbit; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/rc4.js": -/*!***************************************!*\ - !*** ./node_modules/crypto-js/rc4.js ***! - \***************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - /** - * RC4 stream cipher algorithm. - */ - var RC4 = C_algo.RC4 = StreamCipher.extend({ - _doReset: function () { - // Shortcuts - var key = this._key; - var keyWords = key.words; - var keySigBytes = key.sigBytes; - - // Init sbox - var S = this._S = []; - for (var i = 0; i < 256; i++) { - S[i] = i; - } - - // Key setup - for (var i = 0, j = 0; i < 256; i++) { - var keyByteIndex = i % keySigBytes; - var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; - - j = (j + S[i] + keyByte) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - } - - // Counters - this._i = this._j = 0; - }, - - _doProcessBlock: function (M, offset) { - M[offset] ^= generateKeystreamWord.call(this); - }, - - keySize: 256/32, - - ivSize: 0 - }); - - function generateKeystreamWord() { - // Shortcuts - var S = this._S; - var i = this._i; - var j = this._j; - - // Generate keystream word - var keystreamWord = 0; - for (var n = 0; n < 4; n++) { - i = (i + 1) % 256; - j = (j + S[i]) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - - keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); - } - - // Update counters - this._i = i; - this._j = j; - - return keystreamWord; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); - */ - C.RC4 = StreamCipher._createHelper(RC4); - - /** - * Modified RC4 stream cipher algorithm. - */ - var RC4Drop = C_algo.RC4Drop = RC4.extend({ - /** - * Configuration options. - * - * @property {number} drop The number of keystream words to drop. Default 192 - */ - cfg: RC4.cfg.extend({ - drop: 192 - }), - - _doReset: function () { - RC4._doReset.call(this); - - // Drop - for (var i = this.cfg.drop; i > 0; i--) { - generateKeystreamWord.call(this); - } - } - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); - */ - C.RC4Drop = StreamCipher._createHelper(RC4Drop); - }()); - - - return CryptoJS.RC4; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/ripemd160.js": -/*!*********************************************!*\ - !*** ./node_modules/crypto-js/ripemd160.js ***! - \*********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - /** @preserve - (c) 2012 by Cédric Mesnil. All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - (function (Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var _zl = WordArray.create([ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]); - var _zr = WordArray.create([ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]); - var _sl = WordArray.create([ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]); - var _sr = WordArray.create([ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]); - - var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); - var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); - - /** - * RIPEMD160 hash algorithm. - */ - var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ - _doReset: function () { - this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); - }, - - _doProcessBlock: function (M, offset) { - - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - // Shortcut - var H = this._hash.words; - var hl = _hl.words; - var hr = _hr.words; - var zl = _zl.words; - var zr = _zr.words; - var sl = _sl.words; - var sr = _sr.words; - - // Working variables - var al, bl, cl, dl, el; - var ar, br, cr, dr, er; - - ar = al = H[0]; - br = bl = H[1]; - cr = cl = H[2]; - dr = dl = H[3]; - er = el = H[4]; - // Computation - var t; - for (var i = 0; i < 80; i += 1) { - t = (al + M[offset+zl[i]])|0; - if (i<16){ - t += f1(bl,cl,dl) + hl[0]; - } else if (i<32) { - t += f2(bl,cl,dl) + hl[1]; - } else if (i<48) { - t += f3(bl,cl,dl) + hl[2]; - } else if (i<64) { - t += f4(bl,cl,dl) + hl[3]; - } else {// if (i<80) { - t += f5(bl,cl,dl) + hl[4]; - } - t = t|0; - t = rotl(t,sl[i]); - t = (t+el)|0; - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = t; - - t = (ar + M[offset+zr[i]])|0; - if (i<16){ - t += f5(br,cr,dr) + hr[0]; - } else if (i<32) { - t += f4(br,cr,dr) + hr[1]; - } else if (i<48) { - t += f3(br,cr,dr) + hr[2]; - } else if (i<64) { - t += f2(br,cr,dr) + hr[3]; - } else {// if (i<80) { - t += f1(br,cr,dr) + hr[4]; - } - t = t|0; - t = rotl(t,sr[i]) ; - t = (t+er)|0; - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = t; - } - // Intermediate hash value - t = (H[1] + cl + dr)|0; - H[1] = (H[2] + dl + er)|0; - H[2] = (H[3] + el + ar)|0; - H[3] = (H[4] + al + br)|0; - H[4] = (H[0] + bl + cr)|0; - H[0] = t; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ); - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 5; i++) { - // Shortcut - var H_i = H[i]; - - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - - function f1(x, y, z) { - return ((x) ^ (y) ^ (z)); - - } - - function f2(x, y, z) { - return (((x)&(y)) | ((~x)&(z))); - } - - function f3(x, y, z) { - return (((x) | (~(y))) ^ (z)); - } - - function f4(x, y, z) { - return (((x) & (z)) | ((y)&(~(z)))); - } - - function f5(x, y, z) { - return ((x) ^ ((y) |(~(z)))); - - } - - function rotl(x,n) { - return (x<>>(32-n)); - } - - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.RIPEMD160('message'); - * var hash = CryptoJS.RIPEMD160(wordArray); - */ - C.RIPEMD160 = Hasher._createHelper(RIPEMD160); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacRIPEMD160(message, key); - */ - C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); - }(Math)); - - - return CryptoJS.RIPEMD160; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha1.js": -/*!****************************************!*\ - !*** ./node_modules/crypto-js/sha1.js ***! - \****************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Reusable object - var W = []; - - /** - * SHA-1 hash algorithm. - */ - var SHA1 = C_algo.SHA1 = Hasher.extend({ - _doReset: function () { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476, - 0xc3d2e1f0 - ]); - }, - - _doProcessBlock: function (M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - - // Computation - for (var i = 0; i < 80; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - W[i] = (n << 1) | (n >>> 31); - } - - var t = ((a << 5) | (a >>> 27)) + e + W[i]; - if (i < 20) { - t += ((b & c) | (~b & d)) + 0x5a827999; - } else if (i < 40) { - t += (b ^ c ^ d) + 0x6ed9eba1; - } else if (i < 60) { - t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; - } else /* if (i < 80) */ { - t += (b ^ c ^ d) - 0x359d3e2a; - } - - e = d; - d = c; - c = (b << 30) | (b >>> 2); - b = a; - a = t; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA1('message'); - * var hash = CryptoJS.SHA1(wordArray); - */ - C.SHA1 = Hasher._createHelper(SHA1); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA1(message, key); - */ - C.HmacSHA1 = Hasher._createHmacHelper(SHA1); - }()); - - - return CryptoJS.SHA1; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha224.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/sha224.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./sha256 */ "./node_modules/crypto-js/sha256.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA256 = C_algo.SHA256; - - /** - * SHA-224 hash algorithm. - */ - var SHA224 = C_algo.SHA224 = SHA256.extend({ - _doReset: function () { - this._hash = new WordArray.init([ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 - ]); - }, - - _doFinalize: function () { - var hash = SHA256._doFinalize.call(this); - - hash.sigBytes -= 4; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA224('message'); - * var hash = CryptoJS.SHA224(wordArray); - */ - C.SHA224 = SHA256._createHelper(SHA224); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA224(message, key); - */ - C.HmacSHA224 = SHA256._createHmacHelper(SHA224); - }()); - - - return CryptoJS.SHA224; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha256.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/sha256.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function (Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Initialization and round constants tables - var H = []; - var K = []; - - // Compute constants - (function () { - function isPrime(n) { - var sqrtN = Math.sqrt(n); - for (var factor = 2; factor <= sqrtN; factor++) { - if (!(n % factor)) { - return false; - } - } - - return true; - } - - function getFractionalBits(n) { - return ((n - (n | 0)) * 0x100000000) | 0; - } - - var n = 2; - var nPrime = 0; - while (nPrime < 64) { - if (isPrime(n)) { - if (nPrime < 8) { - H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); - } - K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); - - nPrime++; - } - - n++; - } - }()); - - // Reusable object - var W = []; - - /** - * SHA-256 hash algorithm. - */ - var SHA256 = C_algo.SHA256 = Hasher.extend({ - _doReset: function () { - this._hash = new WordArray.init(H.slice(0)); - }, - - _doProcessBlock: function (M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - var f = H[5]; - var g = H[6]; - var h = H[7]; - - // Computation - for (var i = 0; i < 64; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var gamma0x = W[i - 15]; - var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ - ((gamma0x << 14) | (gamma0x >>> 18)) ^ - (gamma0x >>> 3); - - var gamma1x = W[i - 2]; - var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ - ((gamma1x << 13) | (gamma1x >>> 19)) ^ - (gamma1x >>> 10); - - W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; - } - - var ch = (e & f) ^ (~e & g); - var maj = (a & b) ^ (a & c) ^ (b & c); - - var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); - var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); - - var t1 = h + sigma1 + ch + K[i] + W[i]; - var t2 = sigma0 + maj; - - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - H[5] = (H[5] + f) | 0; - H[6] = (H[6] + g) | 0; - H[7] = (H[7] + h) | 0; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA256('message'); - * var hash = CryptoJS.SHA256(wordArray); - */ - C.SHA256 = Hasher._createHelper(SHA256); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA256(message, key); - */ - C.HmacSHA256 = Hasher._createHmacHelper(SHA256); - }(Math)); - - - return CryptoJS.SHA256; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha3.js": -/*!****************************************!*\ - !*** ./node_modules/crypto-js/sha3.js ***! - \****************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./x64-core */ "./node_modules/crypto-js/x64-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function (Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var C_algo = C.algo; - - // Constants tables - var RHO_OFFSETS = []; - var PI_INDEXES = []; - var ROUND_CONSTANTS = []; - - // Compute Constants - (function () { - // Compute rho offset constants - var x = 1, y = 0; - for (var t = 0; t < 24; t++) { - RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; - - var newX = y % 5; - var newY = (2 * x + 3 * y) % 5; - x = newX; - y = newY; - } - - // Compute pi index constants - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; - } - } - - // Compute round constants - var LFSR = 0x01; - for (var i = 0; i < 24; i++) { - var roundConstantMsw = 0; - var roundConstantLsw = 0; - - for (var j = 0; j < 7; j++) { - if (LFSR & 0x01) { - var bitPosition = (1 << j) - 1; - if (bitPosition < 32) { - roundConstantLsw ^= 1 << bitPosition; - } else /* if (bitPosition >= 32) */ { - roundConstantMsw ^= 1 << (bitPosition - 32); - } - } - - // Compute next LFSR - if (LFSR & 0x80) { - // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 - LFSR = (LFSR << 1) ^ 0x71; - } else { - LFSR <<= 1; - } - } - - ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); - } - }()); - - // Reusable objects for temporary values - var T = []; - (function () { - for (var i = 0; i < 25; i++) { - T[i] = X64Word.create(); - } - }()); - - /** - * SHA-3 hash algorithm. - */ - var SHA3 = C_algo.SHA3 = Hasher.extend({ - /** - * Configuration options. - * - * @property {number} outputLength - * The desired number of bits in the output hash. - * Only values permitted are: 224, 256, 384, 512. - * Default: 512 - */ - cfg: Hasher.cfg.extend({ - outputLength: 512 - }), - - _doReset: function () { - var state = this._state = [] - for (var i = 0; i < 25; i++) { - state[i] = new X64Word.init(); - } - - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - - _doProcessBlock: function (M, offset) { - // Shortcuts - var state = this._state; - var nBlockSizeLanes = this.blockSize / 2; - - // Absorb - for (var i = 0; i < nBlockSizeLanes; i++) { - // Shortcuts - var M2i = M[offset + 2 * i]; - var M2i1 = M[offset + 2 * i + 1]; - - // Swap endian - M2i = ( - (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | - (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) - ); - M2i1 = ( - (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | - (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) - ); - - // Absorb message into state - var lane = state[i]; - lane.high ^= M2i1; - lane.low ^= M2i; - } - - // Rounds - for (var round = 0; round < 24; round++) { - // Theta - for (var x = 0; x < 5; x++) { - // Mix column lanes - var tMsw = 0, tLsw = 0; - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - tMsw ^= lane.high; - tLsw ^= lane.low; - } - - // Temporary values - var Tx = T[x]; - Tx.high = tMsw; - Tx.low = tLsw; - } - for (var x = 0; x < 5; x++) { - // Shortcuts - var Tx4 = T[(x + 4) % 5]; - var Tx1 = T[(x + 1) % 5]; - var Tx1Msw = Tx1.high; - var Tx1Lsw = Tx1.low; - - // Mix surrounding columns - var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); - var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - lane.high ^= tMsw; - lane.low ^= tLsw; - } - } - - // Rho Pi - for (var laneIndex = 1; laneIndex < 25; laneIndex++) { - var tMsw; - var tLsw; - - // Shortcuts - var lane = state[laneIndex]; - var laneMsw = lane.high; - var laneLsw = lane.low; - var rhoOffset = RHO_OFFSETS[laneIndex]; - - // Rotate lanes - if (rhoOffset < 32) { - tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); - tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); - } else /* if (rhoOffset >= 32) */ { - tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); - tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); - } - - // Transpose lanes - var TPiLane = T[PI_INDEXES[laneIndex]]; - TPiLane.high = tMsw; - TPiLane.low = tLsw; - } - - // Rho pi at x = y = 0 - var T0 = T[0]; - var state0 = state[0]; - T0.high = state0.high; - T0.low = state0.low; - - // Chi - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - // Shortcuts - var laneIndex = x + 5 * y; - var lane = state[laneIndex]; - var TLane = T[laneIndex]; - var Tx1Lane = T[((x + 1) % 5) + 5 * y]; - var Tx2Lane = T[((x + 2) % 5) + 5 * y]; - - // Mix rows - lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); - lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); - } - } - - // Iota - var lane = state[0]; - var roundConstant = ROUND_CONSTANTS[round]; - lane.high ^= roundConstant.high; - lane.low ^= roundConstant.low; - } - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - var blockSizeBits = this.blockSize * 32; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); - dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var state = this._state; - var outputLengthBytes = this.cfg.outputLength / 8; - var outputLengthLanes = outputLengthBytes / 8; - - // Squeeze - var hashWords = []; - for (var i = 0; i < outputLengthLanes; i++) { - // Shortcuts - var lane = state[i]; - var laneMsw = lane.high; - var laneLsw = lane.low; - - // Swap endian - laneMsw = ( - (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | - (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) - ); - laneLsw = ( - (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | - (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) - ); - - // Squeeze state to retrieve hash - hashWords.push(laneLsw); - hashWords.push(laneMsw); - } - - // Return final computed hash - return new WordArray.init(hashWords, outputLengthBytes); - }, - - clone: function () { - var clone = Hasher.clone.call(this); - - var state = clone._state = this._state.slice(0); - for (var i = 0; i < 25; i++) { - state[i] = state[i].clone(); - } - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA3('message'); - * var hash = CryptoJS.SHA3(wordArray); - */ - C.SHA3 = Hasher._createHelper(SHA3); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA3(message, key); - */ - C.HmacSHA3 = Hasher._createHmacHelper(SHA3); - }(Math)); - - - return CryptoJS.SHA3; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha384.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/sha384.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./x64-core */ "./node_modules/crypto-js/x64-core.js"), __webpack_require__(/*! ./sha512 */ "./node_modules/crypto-js/sha512.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - var SHA512 = C_algo.SHA512; - - /** - * SHA-384 hash algorithm. - */ - var SHA384 = C_algo.SHA384 = SHA512.extend({ - _doReset: function () { - this._hash = new X64WordArray.init([ - new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), - new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), - new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), - new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) - ]); - }, - - _doFinalize: function () { - var hash = SHA512._doFinalize.call(this); - - hash.sigBytes -= 16; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA384('message'); - * var hash = CryptoJS.SHA384(wordArray); - */ - C.SHA384 = SHA512._createHelper(SHA384); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA384(message, key); - */ - C.HmacSHA384 = SHA512._createHmacHelper(SHA384); - }()); - - - return CryptoJS.SHA384; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/sha512.js": -/*!******************************************!*\ - !*** ./node_modules/crypto-js/sha512.js ***! - \******************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./x64-core */ "./node_modules/crypto-js/x64-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - - function X64Word_create() { - return X64Word.create.apply(X64Word, arguments); - } - - // Constants - var K = [ - X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), - X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), - X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), - X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), - X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), - X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), - X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), - X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), - X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), - X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), - X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), - X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), - X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), - X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), - X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), - X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), - X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), - X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), - X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), - X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), - X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), - X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), - X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), - X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), - X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), - X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), - X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), - X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), - X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), - X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), - X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), - X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), - X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), - X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), - X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), - X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), - X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), - X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), - X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), - X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) - ]; - - // Reusable objects - var W = []; - (function () { - for (var i = 0; i < 80; i++) { - W[i] = X64Word_create(); - } - }()); - - /** - * SHA-512 hash algorithm. - */ - var SHA512 = C_algo.SHA512 = Hasher.extend({ - _doReset: function () { - this._hash = new X64WordArray.init([ - new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), - new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), - new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), - new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) - ]); - }, - - _doProcessBlock: function (M, offset) { - // Shortcuts - var H = this._hash.words; - - var H0 = H[0]; - var H1 = H[1]; - var H2 = H[2]; - var H3 = H[3]; - var H4 = H[4]; - var H5 = H[5]; - var H6 = H[6]; - var H7 = H[7]; - - var H0h = H0.high; - var H0l = H0.low; - var H1h = H1.high; - var H1l = H1.low; - var H2h = H2.high; - var H2l = H2.low; - var H3h = H3.high; - var H3l = H3.low; - var H4h = H4.high; - var H4l = H4.low; - var H5h = H5.high; - var H5l = H5.low; - var H6h = H6.high; - var H6l = H6.low; - var H7h = H7.high; - var H7l = H7.low; - - // Working variables - var ah = H0h; - var al = H0l; - var bh = H1h; - var bl = H1l; - var ch = H2h; - var cl = H2l; - var dh = H3h; - var dl = H3l; - var eh = H4h; - var el = H4l; - var fh = H5h; - var fl = H5l; - var gh = H6h; - var gl = H6l; - var hh = H7h; - var hl = H7l; - - // Rounds - for (var i = 0; i < 80; i++) { - var Wil; - var Wih; - - // Shortcut - var Wi = W[i]; - - // Extend message - if (i < 16) { - Wih = Wi.high = M[offset + i * 2] | 0; - Wil = Wi.low = M[offset + i * 2 + 1] | 0; - } else { - // Gamma0 - var gamma0x = W[i - 15]; - var gamma0xh = gamma0x.high; - var gamma0xl = gamma0x.low; - var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); - var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); - - // Gamma1 - var gamma1x = W[i - 2]; - var gamma1xh = gamma1x.high; - var gamma1xl = gamma1x.low; - var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); - var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7 = W[i - 7]; - var Wi7h = Wi7.high; - var Wi7l = Wi7.low; - - var Wi16 = W[i - 16]; - var Wi16h = Wi16.high; - var Wi16l = Wi16.low; - - Wil = gamma0l + Wi7l; - Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); - Wil = Wil + gamma1l; - Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); - Wil = Wil + Wi16l; - Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); - - Wi.high = Wih; - Wi.low = Wil; - } - - var chh = (eh & fh) ^ (~eh & gh); - var chl = (el & fl) ^ (~el & gl); - var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); - var majl = (al & bl) ^ (al & cl) ^ (bl & cl); - - var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); - var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); - var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); - var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); - - // t1 = h + sigma1 + ch + K[i] + W[i] - var Ki = K[i]; - var Kih = Ki.high; - var Kil = Ki.low; - - var t1l = hl + sigma1l; - var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); - var t1l = t1l + chl; - var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); - var t1l = t1l + Kil; - var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); - var t1l = t1l + Wil; - var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); - - // t2 = sigma0 + maj - var t2l = sigma0l + majl; - var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); - - // Update working variables - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = (dl + t1l) | 0; - eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = (t1l + t2l) | 0; - ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; - } - - // Intermediate hash value - H0l = H0.low = (H0l + al); - H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); - H1l = H1.low = (H1l + bl); - H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); - H2l = H2.low = (H2l + cl); - H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); - H3l = H3.low = (H3l + dl); - H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); - H4l = H4.low = (H4l + el); - H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); - H5l = H5.low = (H5l + fl); - H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); - H6l = H6.low = (H6l + gl); - H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); - H7l = H7.low = (H7l + hl); - H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Convert hash to 32-bit word array before returning - var hash = this._hash.toX32(); - - // Return final computed hash - return hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - }, - - blockSize: 1024/32 - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA512('message'); - * var hash = CryptoJS.SHA512(wordArray); - */ - C.SHA512 = Hasher._createHelper(SHA512); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA512(message, key); - */ - C.HmacSHA512 = Hasher._createHmacHelper(SHA512); - }()); - - - return CryptoJS.SHA512; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/tripledes.js": -/*!*********************************************!*\ - !*** ./node_modules/crypto-js/tripledes.js ***! - \*********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory, undef) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js"), __webpack_require__(/*! ./enc-base64 */ "./node_modules/crypto-js/enc-base64.js"), __webpack_require__(/*! ./md5 */ "./node_modules/crypto-js/md5.js"), __webpack_require__(/*! ./evpkdf */ "./node_modules/crypto-js/evpkdf.js"), __webpack_require__(/*! ./cipher-core */ "./node_modules/crypto-js/cipher-core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Permuted Choice 1 constants - var PC1 = [ - 57, 49, 41, 33, 25, 17, 9, 1, - 58, 50, 42, 34, 26, 18, 10, 2, - 59, 51, 43, 35, 27, 19, 11, 3, - 60, 52, 44, 36, 63, 55, 47, 39, - 31, 23, 15, 7, 62, 54, 46, 38, - 30, 22, 14, 6, 61, 53, 45, 37, - 29, 21, 13, 5, 28, 20, 12, 4 - ]; - - // Permuted Choice 2 constants - var PC2 = [ - 14, 17, 11, 24, 1, 5, - 3, 28, 15, 6, 21, 10, - 23, 19, 12, 4, 26, 8, - 16, 7, 27, 20, 13, 2, - 41, 52, 31, 37, 47, 55, - 30, 40, 51, 45, 33, 48, - 44, 49, 39, 56, 34, 53, - 46, 42, 50, 36, 29, 32 - ]; - - // Cumulative bit shift constants - var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; - - // SBOXes and round permutation constants - var SBOX_P = [ - { - 0x0: 0x808200, - 0x10000000: 0x8000, - 0x20000000: 0x808002, - 0x30000000: 0x2, - 0x40000000: 0x200, - 0x50000000: 0x808202, - 0x60000000: 0x800202, - 0x70000000: 0x800000, - 0x80000000: 0x202, - 0x90000000: 0x800200, - 0xa0000000: 0x8200, - 0xb0000000: 0x808000, - 0xc0000000: 0x8002, - 0xd0000000: 0x800002, - 0xe0000000: 0x0, - 0xf0000000: 0x8202, - 0x8000000: 0x0, - 0x18000000: 0x808202, - 0x28000000: 0x8202, - 0x38000000: 0x8000, - 0x48000000: 0x808200, - 0x58000000: 0x200, - 0x68000000: 0x808002, - 0x78000000: 0x2, - 0x88000000: 0x800200, - 0x98000000: 0x8200, - 0xa8000000: 0x808000, - 0xb8000000: 0x800202, - 0xc8000000: 0x800002, - 0xd8000000: 0x8002, - 0xe8000000: 0x202, - 0xf8000000: 0x800000, - 0x1: 0x8000, - 0x10000001: 0x2, - 0x20000001: 0x808200, - 0x30000001: 0x800000, - 0x40000001: 0x808002, - 0x50000001: 0x8200, - 0x60000001: 0x200, - 0x70000001: 0x800202, - 0x80000001: 0x808202, - 0x90000001: 0x808000, - 0xa0000001: 0x800002, - 0xb0000001: 0x8202, - 0xc0000001: 0x202, - 0xd0000001: 0x800200, - 0xe0000001: 0x8002, - 0xf0000001: 0x0, - 0x8000001: 0x808202, - 0x18000001: 0x808000, - 0x28000001: 0x800000, - 0x38000001: 0x200, - 0x48000001: 0x8000, - 0x58000001: 0x800002, - 0x68000001: 0x2, - 0x78000001: 0x8202, - 0x88000001: 0x8002, - 0x98000001: 0x800202, - 0xa8000001: 0x202, - 0xb8000001: 0x808200, - 0xc8000001: 0x800200, - 0xd8000001: 0x0, - 0xe8000001: 0x8200, - 0xf8000001: 0x808002 - }, - { - 0x0: 0x40084010, - 0x1000000: 0x4000, - 0x2000000: 0x80000, - 0x3000000: 0x40080010, - 0x4000000: 0x40000010, - 0x5000000: 0x40084000, - 0x6000000: 0x40004000, - 0x7000000: 0x10, - 0x8000000: 0x84000, - 0x9000000: 0x40004010, - 0xa000000: 0x40000000, - 0xb000000: 0x84010, - 0xc000000: 0x80010, - 0xd000000: 0x0, - 0xe000000: 0x4010, - 0xf000000: 0x40080000, - 0x800000: 0x40004000, - 0x1800000: 0x84010, - 0x2800000: 0x10, - 0x3800000: 0x40004010, - 0x4800000: 0x40084010, - 0x5800000: 0x40000000, - 0x6800000: 0x80000, - 0x7800000: 0x40080010, - 0x8800000: 0x80010, - 0x9800000: 0x0, - 0xa800000: 0x4000, - 0xb800000: 0x40080000, - 0xc800000: 0x40000010, - 0xd800000: 0x84000, - 0xe800000: 0x40084000, - 0xf800000: 0x4010, - 0x10000000: 0x0, - 0x11000000: 0x40080010, - 0x12000000: 0x40004010, - 0x13000000: 0x40084000, - 0x14000000: 0x40080000, - 0x15000000: 0x10, - 0x16000000: 0x84010, - 0x17000000: 0x4000, - 0x18000000: 0x4010, - 0x19000000: 0x80000, - 0x1a000000: 0x80010, - 0x1b000000: 0x40000010, - 0x1c000000: 0x84000, - 0x1d000000: 0x40004000, - 0x1e000000: 0x40000000, - 0x1f000000: 0x40084010, - 0x10800000: 0x84010, - 0x11800000: 0x80000, - 0x12800000: 0x40080000, - 0x13800000: 0x4000, - 0x14800000: 0x40004000, - 0x15800000: 0x40084010, - 0x16800000: 0x10, - 0x17800000: 0x40000000, - 0x18800000: 0x40084000, - 0x19800000: 0x40000010, - 0x1a800000: 0x40004010, - 0x1b800000: 0x80010, - 0x1c800000: 0x0, - 0x1d800000: 0x4010, - 0x1e800000: 0x40080010, - 0x1f800000: 0x84000 - }, - { - 0x0: 0x104, - 0x100000: 0x0, - 0x200000: 0x4000100, - 0x300000: 0x10104, - 0x400000: 0x10004, - 0x500000: 0x4000004, - 0x600000: 0x4010104, - 0x700000: 0x4010000, - 0x800000: 0x4000000, - 0x900000: 0x4010100, - 0xa00000: 0x10100, - 0xb00000: 0x4010004, - 0xc00000: 0x4000104, - 0xd00000: 0x10000, - 0xe00000: 0x4, - 0xf00000: 0x100, - 0x80000: 0x4010100, - 0x180000: 0x4010004, - 0x280000: 0x0, - 0x380000: 0x4000100, - 0x480000: 0x4000004, - 0x580000: 0x10000, - 0x680000: 0x10004, - 0x780000: 0x104, - 0x880000: 0x4, - 0x980000: 0x100, - 0xa80000: 0x4010000, - 0xb80000: 0x10104, - 0xc80000: 0x10100, - 0xd80000: 0x4000104, - 0xe80000: 0x4010104, - 0xf80000: 0x4000000, - 0x1000000: 0x4010100, - 0x1100000: 0x10004, - 0x1200000: 0x10000, - 0x1300000: 0x4000100, - 0x1400000: 0x100, - 0x1500000: 0x4010104, - 0x1600000: 0x4000004, - 0x1700000: 0x0, - 0x1800000: 0x4000104, - 0x1900000: 0x4000000, - 0x1a00000: 0x4, - 0x1b00000: 0x10100, - 0x1c00000: 0x4010000, - 0x1d00000: 0x104, - 0x1e00000: 0x10104, - 0x1f00000: 0x4010004, - 0x1080000: 0x4000000, - 0x1180000: 0x104, - 0x1280000: 0x4010100, - 0x1380000: 0x0, - 0x1480000: 0x10004, - 0x1580000: 0x4000100, - 0x1680000: 0x100, - 0x1780000: 0x4010004, - 0x1880000: 0x10000, - 0x1980000: 0x4010104, - 0x1a80000: 0x10104, - 0x1b80000: 0x4000004, - 0x1c80000: 0x4000104, - 0x1d80000: 0x4010000, - 0x1e80000: 0x4, - 0x1f80000: 0x10100 - }, - { - 0x0: 0x80401000, - 0x10000: 0x80001040, - 0x20000: 0x401040, - 0x30000: 0x80400000, - 0x40000: 0x0, - 0x50000: 0x401000, - 0x60000: 0x80000040, - 0x70000: 0x400040, - 0x80000: 0x80000000, - 0x90000: 0x400000, - 0xa0000: 0x40, - 0xb0000: 0x80001000, - 0xc0000: 0x80400040, - 0xd0000: 0x1040, - 0xe0000: 0x1000, - 0xf0000: 0x80401040, - 0x8000: 0x80001040, - 0x18000: 0x40, - 0x28000: 0x80400040, - 0x38000: 0x80001000, - 0x48000: 0x401000, - 0x58000: 0x80401040, - 0x68000: 0x0, - 0x78000: 0x80400000, - 0x88000: 0x1000, - 0x98000: 0x80401000, - 0xa8000: 0x400000, - 0xb8000: 0x1040, - 0xc8000: 0x80000000, - 0xd8000: 0x400040, - 0xe8000: 0x401040, - 0xf8000: 0x80000040, - 0x100000: 0x400040, - 0x110000: 0x401000, - 0x120000: 0x80000040, - 0x130000: 0x0, - 0x140000: 0x1040, - 0x150000: 0x80400040, - 0x160000: 0x80401000, - 0x170000: 0x80001040, - 0x180000: 0x80401040, - 0x190000: 0x80000000, - 0x1a0000: 0x80400000, - 0x1b0000: 0x401040, - 0x1c0000: 0x80001000, - 0x1d0000: 0x400000, - 0x1e0000: 0x40, - 0x1f0000: 0x1000, - 0x108000: 0x80400000, - 0x118000: 0x80401040, - 0x128000: 0x0, - 0x138000: 0x401000, - 0x148000: 0x400040, - 0x158000: 0x80000000, - 0x168000: 0x80001040, - 0x178000: 0x40, - 0x188000: 0x80000040, - 0x198000: 0x1000, - 0x1a8000: 0x80001000, - 0x1b8000: 0x80400040, - 0x1c8000: 0x1040, - 0x1d8000: 0x80401000, - 0x1e8000: 0x400000, - 0x1f8000: 0x401040 - }, - { - 0x0: 0x80, - 0x1000: 0x1040000, - 0x2000: 0x40000, - 0x3000: 0x20000000, - 0x4000: 0x20040080, - 0x5000: 0x1000080, - 0x6000: 0x21000080, - 0x7000: 0x40080, - 0x8000: 0x1000000, - 0x9000: 0x20040000, - 0xa000: 0x20000080, - 0xb000: 0x21040080, - 0xc000: 0x21040000, - 0xd000: 0x0, - 0xe000: 0x1040080, - 0xf000: 0x21000000, - 0x800: 0x1040080, - 0x1800: 0x21000080, - 0x2800: 0x80, - 0x3800: 0x1040000, - 0x4800: 0x40000, - 0x5800: 0x20040080, - 0x6800: 0x21040000, - 0x7800: 0x20000000, - 0x8800: 0x20040000, - 0x9800: 0x0, - 0xa800: 0x21040080, - 0xb800: 0x1000080, - 0xc800: 0x20000080, - 0xd800: 0x21000000, - 0xe800: 0x1000000, - 0xf800: 0x40080, - 0x10000: 0x40000, - 0x11000: 0x80, - 0x12000: 0x20000000, - 0x13000: 0x21000080, - 0x14000: 0x1000080, - 0x15000: 0x21040000, - 0x16000: 0x20040080, - 0x17000: 0x1000000, - 0x18000: 0x21040080, - 0x19000: 0x21000000, - 0x1a000: 0x1040000, - 0x1b000: 0x20040000, - 0x1c000: 0x40080, - 0x1d000: 0x20000080, - 0x1e000: 0x0, - 0x1f000: 0x1040080, - 0x10800: 0x21000080, - 0x11800: 0x1000000, - 0x12800: 0x1040000, - 0x13800: 0x20040080, - 0x14800: 0x20000000, - 0x15800: 0x1040080, - 0x16800: 0x80, - 0x17800: 0x21040000, - 0x18800: 0x40080, - 0x19800: 0x21040080, - 0x1a800: 0x0, - 0x1b800: 0x21000000, - 0x1c800: 0x1000080, - 0x1d800: 0x40000, - 0x1e800: 0x20040000, - 0x1f800: 0x20000080 - }, - { - 0x0: 0x10000008, - 0x100: 0x2000, - 0x200: 0x10200000, - 0x300: 0x10202008, - 0x400: 0x10002000, - 0x500: 0x200000, - 0x600: 0x200008, - 0x700: 0x10000000, - 0x800: 0x0, - 0x900: 0x10002008, - 0xa00: 0x202000, - 0xb00: 0x8, - 0xc00: 0x10200008, - 0xd00: 0x202008, - 0xe00: 0x2008, - 0xf00: 0x10202000, - 0x80: 0x10200000, - 0x180: 0x10202008, - 0x280: 0x8, - 0x380: 0x200000, - 0x480: 0x202008, - 0x580: 0x10000008, - 0x680: 0x10002000, - 0x780: 0x2008, - 0x880: 0x200008, - 0x980: 0x2000, - 0xa80: 0x10002008, - 0xb80: 0x10200008, - 0xc80: 0x0, - 0xd80: 0x10202000, - 0xe80: 0x202000, - 0xf80: 0x10000000, - 0x1000: 0x10002000, - 0x1100: 0x10200008, - 0x1200: 0x10202008, - 0x1300: 0x2008, - 0x1400: 0x200000, - 0x1500: 0x10000000, - 0x1600: 0x10000008, - 0x1700: 0x202000, - 0x1800: 0x202008, - 0x1900: 0x0, - 0x1a00: 0x8, - 0x1b00: 0x10200000, - 0x1c00: 0x2000, - 0x1d00: 0x10002008, - 0x1e00: 0x10202000, - 0x1f00: 0x200008, - 0x1080: 0x8, - 0x1180: 0x202000, - 0x1280: 0x200000, - 0x1380: 0x10000008, - 0x1480: 0x10002000, - 0x1580: 0x2008, - 0x1680: 0x10202008, - 0x1780: 0x10200000, - 0x1880: 0x10202000, - 0x1980: 0x10200008, - 0x1a80: 0x2000, - 0x1b80: 0x202008, - 0x1c80: 0x200008, - 0x1d80: 0x0, - 0x1e80: 0x10000000, - 0x1f80: 0x10002008 - }, - { - 0x0: 0x100000, - 0x10: 0x2000401, - 0x20: 0x400, - 0x30: 0x100401, - 0x40: 0x2100401, - 0x50: 0x0, - 0x60: 0x1, - 0x70: 0x2100001, - 0x80: 0x2000400, - 0x90: 0x100001, - 0xa0: 0x2000001, - 0xb0: 0x2100400, - 0xc0: 0x2100000, - 0xd0: 0x401, - 0xe0: 0x100400, - 0xf0: 0x2000000, - 0x8: 0x2100001, - 0x18: 0x0, - 0x28: 0x2000401, - 0x38: 0x2100400, - 0x48: 0x100000, - 0x58: 0x2000001, - 0x68: 0x2000000, - 0x78: 0x401, - 0x88: 0x100401, - 0x98: 0x2000400, - 0xa8: 0x2100000, - 0xb8: 0x100001, - 0xc8: 0x400, - 0xd8: 0x2100401, - 0xe8: 0x1, - 0xf8: 0x100400, - 0x100: 0x2000000, - 0x110: 0x100000, - 0x120: 0x2000401, - 0x130: 0x2100001, - 0x140: 0x100001, - 0x150: 0x2000400, - 0x160: 0x2100400, - 0x170: 0x100401, - 0x180: 0x401, - 0x190: 0x2100401, - 0x1a0: 0x100400, - 0x1b0: 0x1, - 0x1c0: 0x0, - 0x1d0: 0x2100000, - 0x1e0: 0x2000001, - 0x1f0: 0x400, - 0x108: 0x100400, - 0x118: 0x2000401, - 0x128: 0x2100001, - 0x138: 0x1, - 0x148: 0x2000000, - 0x158: 0x100000, - 0x168: 0x401, - 0x178: 0x2100400, - 0x188: 0x2000001, - 0x198: 0x2100000, - 0x1a8: 0x0, - 0x1b8: 0x2100401, - 0x1c8: 0x100401, - 0x1d8: 0x400, - 0x1e8: 0x2000400, - 0x1f8: 0x100001 - }, - { - 0x0: 0x8000820, - 0x1: 0x20000, - 0x2: 0x8000000, - 0x3: 0x20, - 0x4: 0x20020, - 0x5: 0x8020820, - 0x6: 0x8020800, - 0x7: 0x800, - 0x8: 0x8020000, - 0x9: 0x8000800, - 0xa: 0x20800, - 0xb: 0x8020020, - 0xc: 0x820, - 0xd: 0x0, - 0xe: 0x8000020, - 0xf: 0x20820, - 0x80000000: 0x800, - 0x80000001: 0x8020820, - 0x80000002: 0x8000820, - 0x80000003: 0x8000000, - 0x80000004: 0x8020000, - 0x80000005: 0x20800, - 0x80000006: 0x20820, - 0x80000007: 0x20, - 0x80000008: 0x8000020, - 0x80000009: 0x820, - 0x8000000a: 0x20020, - 0x8000000b: 0x8020800, - 0x8000000c: 0x0, - 0x8000000d: 0x8020020, - 0x8000000e: 0x8000800, - 0x8000000f: 0x20000, - 0x10: 0x20820, - 0x11: 0x8020800, - 0x12: 0x20, - 0x13: 0x800, - 0x14: 0x8000800, - 0x15: 0x8000020, - 0x16: 0x8020020, - 0x17: 0x20000, - 0x18: 0x0, - 0x19: 0x20020, - 0x1a: 0x8020000, - 0x1b: 0x8000820, - 0x1c: 0x8020820, - 0x1d: 0x20800, - 0x1e: 0x820, - 0x1f: 0x8000000, - 0x80000010: 0x20000, - 0x80000011: 0x800, - 0x80000012: 0x8020020, - 0x80000013: 0x20820, - 0x80000014: 0x20, - 0x80000015: 0x8020000, - 0x80000016: 0x8000000, - 0x80000017: 0x8000820, - 0x80000018: 0x8020820, - 0x80000019: 0x8000020, - 0x8000001a: 0x8000800, - 0x8000001b: 0x0, - 0x8000001c: 0x20800, - 0x8000001d: 0x820, - 0x8000001e: 0x20020, - 0x8000001f: 0x8020800 - } - ]; - - // Masks that select the SBOX input - var SBOX_MASK = [ - 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, - 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f - ]; - - /** - * DES block cipher algorithm. - */ - var DES = C_algo.DES = BlockCipher.extend({ - _doReset: function () { - // Shortcuts - var key = this._key; - var keyWords = key.words; - - // Select 56 bits according to PC1 - var keyBits = []; - for (var i = 0; i < 56; i++) { - var keyBitPos = PC1[i] - 1; - keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; - } - - // Assemble 16 subkeys - var subKeys = this._subKeys = []; - for (var nSubKey = 0; nSubKey < 16; nSubKey++) { - // Create subkey - var subKey = subKeys[nSubKey] = []; - - // Shortcut - var bitShift = BIT_SHIFTS[nSubKey]; - - // Select 48 bits according to PC2 - for (var i = 0; i < 24; i++) { - // Select from the left 28 key bits - subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); - - // Select from the right 28 key bits - subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); - } - - // Since each subkey is applied to an expanded 32-bit input, - // the subkey can be broken into 8 values scaled to 32-bits, - // which allows the key to be used without expansion - subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); - for (var i = 1; i < 7; i++) { - subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); - } - subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); - } - - // Compute inverse subkeys - var invSubKeys = this._invSubKeys = []; - for (var i = 0; i < 16; i++) { - invSubKeys[i] = subKeys[15 - i]; - } - }, - - encryptBlock: function (M, offset) { - this._doCryptBlock(M, offset, this._subKeys); - }, - - decryptBlock: function (M, offset) { - this._doCryptBlock(M, offset, this._invSubKeys); - }, - - _doCryptBlock: function (M, offset, subKeys) { - // Get input - this._lBlock = M[offset]; - this._rBlock = M[offset + 1]; - - // Initial permutation - exchangeLR.call(this, 4, 0x0f0f0f0f); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeRL.call(this, 2, 0x33333333); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeLR.call(this, 1, 0x55555555); - - // Rounds - for (var round = 0; round < 16; round++) { - // Shortcuts - var subKey = subKeys[round]; - var lBlock = this._lBlock; - var rBlock = this._rBlock; - - // Feistel function - var f = 0; - for (var i = 0; i < 8; i++) { - f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; - } - this._lBlock = rBlock; - this._rBlock = lBlock ^ f; - } - - // Undo swap from last round - var t = this._lBlock; - this._lBlock = this._rBlock; - this._rBlock = t; - - // Final permutation - exchangeLR.call(this, 1, 0x55555555); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeRL.call(this, 2, 0x33333333); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeLR.call(this, 4, 0x0f0f0f0f); - - // Set output - M[offset] = this._lBlock; - M[offset + 1] = this._rBlock; - }, - - keySize: 64/32, - - ivSize: 64/32, - - blockSize: 64/32 - }); - - // Swap bits across the left and right words - function exchangeLR(offset, mask) { - var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; - this._rBlock ^= t; - this._lBlock ^= t << offset; - } - - function exchangeRL(offset, mask) { - var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; - this._lBlock ^= t; - this._rBlock ^= t << offset; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); - */ - C.DES = BlockCipher._createHelper(DES); - - /** - * Triple-DES block cipher algorithm. - */ - var TripleDES = C_algo.TripleDES = BlockCipher.extend({ - _doReset: function () { - // Shortcuts - var key = this._key; - var keyWords = key.words; - // Make sure the key length is valid (64, 128 or >= 192 bit) - if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { - throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); - } - - // Extend the key according to the keying options defined in 3DES standard - var key1 = keyWords.slice(0, 2); - var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); - var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); - - // Create DES instances - this._des1 = DES.createEncryptor(WordArray.create(key1)); - this._des2 = DES.createEncryptor(WordArray.create(key2)); - this._des3 = DES.createEncryptor(WordArray.create(key3)); - }, - - encryptBlock: function (M, offset) { - this._des1.encryptBlock(M, offset); - this._des2.decryptBlock(M, offset); - this._des3.encryptBlock(M, offset); - }, - - decryptBlock: function (M, offset) { - this._des3.decryptBlock(M, offset); - this._des2.encryptBlock(M, offset); - this._des1.decryptBlock(M, offset); - }, - - keySize: 192/32, - - ivSize: 64/32, - - blockSize: 64/32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); - */ - C.TripleDES = BlockCipher._createHelper(TripleDES); - }()); - - - return CryptoJS.TripleDES; - -})); - -/***/ }), - -/***/ "./node_modules/crypto-js/x64-core.js": -/*!********************************************!*\ - !*** ./node_modules/crypto-js/x64-core.js ***! - \********************************************/ -/***/ (function(module, exports, __webpack_require__) { - -;(function (root, factory) { - if (true) { - // CommonJS - module.exports = exports = factory(__webpack_require__(/*! ./core */ "./node_modules/crypto-js/core.js")); - } - else {} -}(this, function (CryptoJS) { - - (function (undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var X32WordArray = C_lib.WordArray; - - /** - * x64 namespace. - */ - var C_x64 = C.x64 = {}; - - /** - * A 64-bit word. - */ - var X64Word = C_x64.Word = Base.extend({ - /** - * Initializes a newly created 64-bit word. - * - * @param {number} high The high 32 bits. - * @param {number} low The low 32 bits. - * - * @example - * - * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); - */ - init: function (high, low) { - this.high = high; - this.low = low; - } - - /** - * Bitwise NOTs this word. - * - * @return {X64Word} A new x64-Word object after negating. - * - * @example - * - * var negated = x64Word.not(); - */ - // not: function () { - // var high = ~this.high; - // var low = ~this.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ANDs this word with the passed word. - * - * @param {X64Word} word The x64-Word to AND with this word. - * - * @return {X64Word} A new x64-Word object after ANDing. - * - * @example - * - * var anded = x64Word.and(anotherX64Word); - */ - // and: function (word) { - // var high = this.high & word.high; - // var low = this.low & word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to OR with this word. - * - * @return {X64Word} A new x64-Word object after ORing. - * - * @example - * - * var ored = x64Word.or(anotherX64Word); - */ - // or: function (word) { - // var high = this.high | word.high; - // var low = this.low | word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise XORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to XOR with this word. - * - * @return {X64Word} A new x64-Word object after XORing. - * - * @example - * - * var xored = x64Word.xor(anotherX64Word); - */ - // xor: function (word) { - // var high = this.high ^ word.high; - // var low = this.low ^ word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the left. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftL(25); - */ - // shiftL: function (n) { - // if (n < 32) { - // var high = (this.high << n) | (this.low >>> (32 - n)); - // var low = this.low << n; - // } else { - // var high = this.low << (n - 32); - // var low = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the right. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftR(7); - */ - // shiftR: function (n) { - // if (n < 32) { - // var low = (this.low >>> n) | (this.high << (32 - n)); - // var high = this.high >>> n; - // } else { - // var low = this.high >>> (n - 32); - // var high = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Rotates this word n bits to the left. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotL(25); - */ - // rotL: function (n) { - // return this.shiftL(n).or(this.shiftR(64 - n)); - // }, - - /** - * Rotates this word n bits to the right. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotR(7); - */ - // rotR: function (n) { - // return this.shiftR(n).or(this.shiftL(64 - n)); - // }, - - /** - * Adds this word with the passed word. - * - * @param {X64Word} word The x64-Word to add with this word. - * - * @return {X64Word} A new x64-Word object after adding. - * - * @example - * - * var added = x64Word.add(anotherX64Word); - */ - // add: function (word) { - // var low = (this.low + word.low) | 0; - // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; - // var high = (this.high + word.high + carry) | 0; - - // return X64Word.create(high, low); - // } - }); - - /** - * An array of 64-bit words. - * - * @property {Array} words The array of CryptoJS.x64.Word objects. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var X64WordArray = C_x64.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.x64.WordArray.create(); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ]); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ], 10); - */ - init: function (words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 8; - } - }, - - /** - * Converts this 64-bit word array to a 32-bit word array. - * - * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. - * - * @example - * - * var x32WordArray = x64WordArray.toX32(); - */ - toX32: function () { - // Shortcuts - var x64Words = this.words; - var x64WordsLength = x64Words.length; - - // Convert - var x32Words = []; - for (var i = 0; i < x64WordsLength; i++) { - var x64Word = x64Words[i]; - x32Words.push(x64Word.high); - x32Words.push(x64Word.low); - } - - return X32WordArray.create(x32Words, this.sigBytes); - }, - - /** - * Creates a copy of this word array. - * - * @return {X64WordArray} The clone. - * - * @example - * - * var clone = x64WordArray.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - - // Clone "words" array - var words = clone.words = this.words.slice(0); - - // Clone each X64Word object - var wordsLength = words.length; - for (var i = 0; i < wordsLength; i++) { - words[i] = words[i].clone(); - } - - return clone; - } - }); - }()); - - - return CryptoJS; - -})); - -/***/ }), - /***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-11.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-11.use[2]!./node_modules/@vuepic/vue-datepicker/dist/main.css": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-11.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-11.use[2]!./node_modules/@vuepic/vue-datepicker/dist/main.css ***! @@ -109083,9 +101728,7 @@ if (false) {} else { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var shared = __webpack_require__(/*! @vueuse/shared */ "./node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs"); +var shared = __webpack_require__(/*! @vueuse/shared */ "./node_modules/@vueuse/shared/index.cjs"); var vueDemi = __webpack_require__(/*! vue-demi */ "./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs"); function computedAsync(evaluationCallback, initialState, optionsOrRef) { @@ -109100,10 +101743,11 @@ function computedAsync(evaluationCallback, initialState, optionsOrRef) { const { lazy = false, evaluating = void 0, + shallow = true, onError = shared.noop } = options; const started = vueDemi.ref(!lazy); - const current = vueDemi.ref(initialState); + const current = shallow ? vueDemi.shallowRef(initialState) : vueDemi.ref(initialState); let counter = 0; vueDemi.watchEffect(async (onInvalidate) => { if (!started.value) @@ -109161,16 +101805,104 @@ function computedInject(key, options, defaultSource, treatDefaultAsFactory) { } } -const createUnrefFn = (fn) => { +function createReusableTemplate(options = {}) { + if (!vueDemi.isVue3 && !vueDemi.version.startsWith("2.7.")) { + if (true) + throw new Error("[VueUse] createReusableTemplate only works in Vue 2.7 or above."); + return; + } + const { + inheritAttrs = true + } = options; + const render = vueDemi.shallowRef(); + const define = /* #__PURE__ */ vueDemi.defineComponent({ + setup(_, { slots }) { + return () => { + render.value = slots.default; + }; + } + }); + const reuse = /* #__PURE__ */ vueDemi.defineComponent({ + inheritAttrs, + setup(_, { attrs, slots }) { + return () => { + var _a; + if (!render.value && "development" !== "production") + throw new Error("[VueUse] Failed to find the definition of reusable template"); + const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots }); + return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode; + }; + } + }); + return shared.makeDestructurable( + { define, reuse }, + [define, reuse] + ); +} +function keysToCamelKebabCase(obj) { + const newObj = {}; + for (const key in obj) + newObj[shared.camelize(key)] = obj[key]; + return newObj; +} + +function createTemplatePromise(options = {}) { + if (!vueDemi.isVue3) { + if (true) + throw new Error("[VueUse] createTemplatePromise only works in Vue 3 or above."); + return; + } + let index = 0; + const instances = vueDemi.ref([]); + function create(...args) { + const props = vueDemi.shallowReactive({ + key: index++, + args, + promise: void 0, + resolve: () => { + }, + reject: () => { + }, + isResolving: false, + options + }); + instances.value.push(props); + props.promise = new Promise((_resolve, _reject) => { + props.resolve = (v) => { + props.isResolving = true; + return _resolve(v); + }; + props.reject = _reject; + }).finally(() => { + props.promise = void 0; + const index2 = instances.value.indexOf(props); + if (index2 !== -1) + instances.value.splice(index2, 1); + }); + return props.promise; + } + function start(...args) { + if (options.singleton && instances.value.length > 0) + return instances.value[0].promise; + return create(...args); + } + const component = /* #__PURE__ */ vueDemi.defineComponent((_, { slots }) => { + const renderList = () => instances.value.map((props) => { + var _a; + return vueDemi.h(vueDemi.Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props)); + }); + if (options.transition) + return () => vueDemi.h(vueDemi.TransitionGroup, options.transition, renderList); + return renderList; + }); + component.start = start; + return component; +} + +function createUnrefFn(fn) { return function(...args) { - return fn.apply(this, args.map((i) => vueDemi.unref(i))); + return fn.apply(this, args.map((i) => shared.toValue(i))); }; -}; - -function unrefElement(elRef) { - var _a; - const plain = vueDemi.unref(elRef); - return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; } const defaultWindow = shared.isClient ? window : void 0; @@ -109178,30 +101910,53 @@ const defaultDocument = shared.isClient ? window.document : void 0; const defaultNavigator = shared.isClient ? window.navigator : void 0; const defaultLocation = shared.isClient ? window.location : void 0; +function unrefElement(elRef) { + var _a; + const plain = shared.toValue(elRef); + return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; +} + function useEventListener(...args) { let target; - let event; - let listener; + let events; + let listeners; let options; - if (shared.isString(args[0])) { - [event, listener, options] = args; + if (typeof args[0] === "string" || Array.isArray(args[0])) { + [events, listeners, options] = args; target = defaultWindow; } else { - [target, event, listener, options] = args; + [target, events, listeners, options] = args; } if (!target) return shared.noop; - let cleanup = shared.noop; - const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => { - cleanup(); - if (!el) - return; - el.addEventListener(event, listener, options); - cleanup = () => { - el.removeEventListener(event, listener, options); - cleanup = shared.noop; - }; - }, { immediate: true, flush: "post" }); + if (!Array.isArray(events)) + events = [events]; + if (!Array.isArray(listeners)) + listeners = [listeners]; + const cleanups = []; + const cleanup = () => { + cleanups.forEach((fn) => fn()); + cleanups.length = 0; + }; + const register = (el, event, listener, options2) => { + el.addEventListener(event, listener, options2); + return () => el.removeEventListener(event, listener, options2); + }; + const stopWatch = vueDemi.watch( + () => [unrefElement(target), shared.toValue(options)], + ([el, options2]) => { + cleanup(); + if (!el) + return; + const optionsClone = shared.isObject(options2) ? { ...options2 } : options2; + cleanups.push( + ...events.flatMap((event) => { + return listeners.map((listener) => register(el, event, listener, optionsClone)); + }) + ); + }, + { immediate: true, flush: "post" } + ); const stop = () => { stopWatch(); cleanup(); @@ -109210,111 +101965,157 @@ function useEventListener(...args) { return stop; } +let _iOSWorkaround = false; function onClickOutside(target, handler, options = {}) { - const { window = defaultWindow, ignore, capture = true, detectIframe = false } = options; + const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; if (!window) - return; - const shouldListen = vueDemi.ref(true); - let fallback; + return shared.noop; + if (shared.isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + Array.from(window.document.body.children).forEach((el) => el.addEventListener("click", shared.noop)); + window.document.documentElement.addEventListener("click", shared.noop); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return shared.toValue(ignore).some((target2) => { + if (typeof target2 === "string") { + return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); + } else { + const el = unrefElement(target2); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; const listener = (event) => { - window.clearTimeout(fallback); const el = unrefElement(target); - const composedPath = event.composedPath(); - if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value) + if (!el || el === event.target || event.composedPath().includes(el)) + return; + if (event.detail === 0) + shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; return; - if (ignore && ignore.length > 0) { - if (ignore.some((target2) => { - const el2 = unrefElement(target2); - return el2 && (event.target === el2 || composedPath.includes(el2)); - })) - return; } handler(event); }; + let isProcessingClick = false; const cleanup = [ - useEventListener(window, "click", listener, { passive: true, capture }), + useEventListener(window, "click", (event) => { + if (!isProcessingClick) { + isProcessingClick = true; + setTimeout(() => { + isProcessingClick = false; + }, 0); + listener(event); + } + }, { passive: true, capture }), useEventListener(window, "pointerdown", (e) => { const el = unrefElement(target); - shouldListen.value = !!el && !e.composedPath().includes(el); - }, { passive: true }), - useEventListener(window, "pointerup", (e) => { - if (e.button === 0) { - const path = e.composedPath(); - e.composedPath = () => path; - fallback = window.setTimeout(() => listener(e), 50); - } + shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)); }, { passive: true }), detectIframe && useEventListener(window, "blur", (event) => { - var _a; - const el = unrefElement(target); - if (((_a = document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(document.activeElement))) - handler(event); + setTimeout(() => { + var _a; + const el = unrefElement(target); + if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window.document.activeElement))) { + handler(event); + } + }, 0); }) ].filter(Boolean); const stop = () => cleanup.forEach((fn) => fn()); return stop; } -var __defProp$j = Object.defineProperty; -var __defProps$8 = Object.defineProperties; -var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$l = Object.getOwnPropertySymbols; -var __hasOwnProp$l = Object.prototype.hasOwnProperty; -var __propIsEnum$l = Object.prototype.propertyIsEnumerable; -var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$j = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$l.call(b, prop)) - __defNormalProp$j(a, prop, b[prop]); - if (__getOwnPropSymbols$l) - for (var prop of __getOwnPropSymbols$l(b)) { - if (__propIsEnum$l.call(b, prop)) - __defNormalProp$j(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b)); -const createKeyPredicate = (keyFilter) => { +function createKeyPredicate(keyFilter) { if (typeof keyFilter === "function") return keyFilter; else if (typeof keyFilter === "string") return (event) => event.key === keyFilter; else if (Array.isArray(keyFilter)) return (event) => keyFilter.includes(event.key); - else if (keyFilter) - return () => true; - else - return () => false; -}; -function onKeyStroke(key, handler, options = {}) { - const { target = defaultWindow, eventName = "keydown", passive = false } = options; + return () => true; +} +function onKeyStroke(...args) { + let key; + let handler; + let options = {}; + if (args.length === 3) { + key = args[0]; + handler = args[1]; + options = args[2]; + } else if (args.length === 2) { + if (typeof args[1] === "object") { + key = true; + handler = args[0]; + options = args[1]; + } else { + key = args[0]; + handler = args[1]; + } + } else { + key = true; + handler = args[0]; + } + const { + target = defaultWindow, + eventName = "keydown", + passive = false, + dedupe = false + } = options; const predicate = createKeyPredicate(key); const listener = (e) => { + if (e.repeat && shared.toValue(dedupe)) + return; if (predicate(e)) handler(e); }; return useEventListener(target, eventName, listener, passive); } function onKeyDown(key, handler, options = {}) { - return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$j({}, options), { eventName: "keydown" })); + return onKeyStroke(key, handler, { ...options, eventName: "keydown" }); } function onKeyPressed(key, handler, options = {}) { - return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$j({}, options), { eventName: "keypress" })); + return onKeyStroke(key, handler, { ...options, eventName: "keypress" }); } function onKeyUp(key, handler, options = {}) { - return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$j({}, options), { eventName: "keyup" })); + return onKeyStroke(key, handler, { ...options, eventName: "keyup" }); } const DEFAULT_DELAY = 500; +const DEFAULT_THRESHOLD = 10; function onLongPress(target, handler, options) { var _a, _b; const elementRef = vueDemi.computed(() => unrefElement(target)); - let timeout = null; + let timeout; + let posStart; + let startTimestamp; + let hasLongPressed = false; function clear() { - if (timeout != null) { + if (timeout) { clearTimeout(timeout); - timeout = null; + timeout = void 0; } + posStart = void 0; + startTimestamp = void 0; + hasLongPressed = false; + } + function onRelease(ev) { + var _a2, _b2, _c; + const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed]; + clear(); + if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp) + return; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + const dx = ev.x - _posStart.x; + const dy = ev.y - _posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed); } function onDown(ev) { var _a2, _b2, _c, _d; @@ -109325,18 +102126,49 @@ function onLongPress(target, handler, options) { ev.preventDefault(); if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) ev.stopPropagation(); - timeout = setTimeout(() => handler(ev), (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY); + posStart = { + x: ev.x, + y: ev.y + }; + startTimestamp = ev.timeStamp; + timeout = setTimeout( + () => { + hasLongPressed = true; + handler(ev); + }, + (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY + ); + } + function onMove(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false) + return; + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + const dx = ev.x - posStart.x; + const dy = ev.y - posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD)) + clear(); } const listenerOptions = { capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture, once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once }; - useEventListener(elementRef, "pointerdown", onDown, listenerOptions); - useEventListener(elementRef, "pointerup", clear, listenerOptions); - useEventListener(elementRef, "pointerleave", clear, listenerOptions); + const cleanup = [ + useEventListener(elementRef, "pointerdown", onDown, listenerOptions), + useEventListener(elementRef, "pointermove", onMove, listenerOptions), + useEventListener(elementRef, ["pointerup", "pointerleave"], onRelease, listenerOptions) + ]; + const stop = () => cleanup.forEach((fn) => fn()); + return stop; } -const isFocusedElementEditable = () => { +function isFocusedElementEditable() { const { activeElement, body } = document; if (!activeElement) return false; @@ -109348,25 +102180,29 @@ const isFocusedElementEditable = () => { return true; } return activeElement.hasAttribute("contenteditable"); -}; -const isTypedCharValid = ({ +} +function isTypedCharValid({ keyCode, metaKey, ctrlKey, altKey -}) => { +}) { if (metaKey || ctrlKey || altKey) return false; - if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) + if (keyCode >= 48 && keyCode <= 57) return true; if (keyCode >= 65 && keyCode <= 90) return true; + if (keyCode >= 97 && keyCode <= 122) + return true; return false; -}; +} function onStartTyping(callback, options = {}) { const { document: document2 = defaultDocument } = options; const keydown = (event) => { - !isFocusedElementEditable() && isTypedCharValid(event) && callback(event); + if (!isFocusedElementEditable() && isTypedCharValid(event)) { + callback(event); + } }; if (document2) useEventListener(document2, "keydown", keydown, { passive: true }); @@ -109393,31 +102229,379 @@ function templateRef(key, initialValue = null) { return element; } +function useMounted() { + const isMounted = vueDemi.ref(false); + const instance = vueDemi.getCurrentInstance(); + if (instance) { + vueDemi.onMounted(() => { + isMounted.value = true; + }, vueDemi.isVue2 ? void 0 : instance); + } + return isMounted; +} + +function useSupported(callback) { + const isMounted = useMounted(); + return vueDemi.computed(() => { + isMounted.value; + return Boolean(callback()); + }); +} + +function useMutationObserver(target, callback, options = {}) { + const { window = defaultWindow, ...mutationOptions } = options; + let observer; + const isSupported = useSupported(() => window && "MutationObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = vueDemi.computed(() => { + const value = shared.toValue(target); + const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(shared.notNullish); + return new Set(items); + }); + const stopWatch = vueDemi.watch( + () => targets.value, + (targets2) => { + cleanup(); + if (isSupported.value && targets2.size) { + observer = new MutationObserver(callback); + targets2.forEach((el) => observer.observe(el, mutationOptions)); + } + }, + { immediate: true, flush: "post" } + ); + const takeRecords = () => { + return observer == null ? void 0 : observer.takeRecords(); + }; + const stop = () => { + stopWatch(); + cleanup(); + }; + shared.tryOnScopeDispose(stop); + return { + isSupported, + stop, + takeRecords + }; +} + function useActiveElement(options = {}) { - const { window = defaultWindow } = options; - const counter = vueDemi.ref(0); + var _a; + const { + window = defaultWindow, + deep = true, + triggerOnRemoval = false + } = options; + const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document; + const getDeepActiveElement = () => { + var _a2; + let element = document == null ? void 0 : document.activeElement; + if (deep) { + while (element == null ? void 0 : element.shadowRoot) + element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement; + } + return element; + }; + const activeElement = vueDemi.ref(); + const trigger = () => { + activeElement.value = getDeepActiveElement(); + }; if (window) { - useEventListener(window, "blur", () => counter.value += 1, true); - useEventListener(window, "focus", () => counter.value += 1, true); + useEventListener(window, "blur", (event) => { + if (event.relatedTarget !== null) + return; + trigger(); + }, true); + useEventListener(window, "focus", trigger, true); } - return vueDemi.computed(() => { - counter.value; - return window == null ? void 0 : window.document.activeElement; + if (triggerOnRemoval) { + useMutationObserver(document, (mutations) => { + mutations.filter((m) => m.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => { + if (node === activeElement.value) + trigger(); + }); + }, { + childList: true, + subtree: true + }); + } + trigger(); + return activeElement; +} + +function useRafFn(fn, options = {}) { + const { + immediate = true, + fpsLimit = void 0, + window = defaultWindow + } = options; + const isActive = vueDemi.ref(false); + const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null; + let previousFrameTimestamp = 0; + let rafId = null; + function loop(timestamp) { + if (!isActive.value || !window) + return; + if (!previousFrameTimestamp) + previousFrameTimestamp = timestamp; + const delta = timestamp - previousFrameTimestamp; + if (intervalLimit && delta < intervalLimit) { + rafId = window.requestAnimationFrame(loop); + return; + } + previousFrameTimestamp = timestamp; + fn({ delta, timestamp }); + rafId = window.requestAnimationFrame(loop); + } + function resume() { + if (!isActive.value && window) { + isActive.value = true; + previousFrameTimestamp = 0; + rafId = window.requestAnimationFrame(loop); + } + } + function pause() { + isActive.value = false; + if (rafId != null && window) { + window.cancelAnimationFrame(rafId); + rafId = null; + } + } + if (immediate) + resume(); + shared.tryOnScopeDispose(pause); + return { + isActive: vueDemi.readonly(isActive), + pause, + resume + }; +} + +function useAnimate(target, keyframes, options) { + let config; + let animateOptions; + if (shared.isObject(options)) { + config = options; + animateOptions = shared.objectOmit(options, ["window", "immediate", "commitStyles", "persist", "onReady", "onError"]); + } else { + config = { duration: options }; + animateOptions = options; + } + const { + window = defaultWindow, + immediate = true, + commitStyles, + persist, + playbackRate: _playbackRate = 1, + onReady, + onError = (e) => { + console.error(e); + } + } = config; + const isSupported = useSupported(() => window && HTMLElement && "animate" in HTMLElement.prototype); + const animate = vueDemi.shallowRef(void 0); + const store = vueDemi.shallowReactive({ + startTime: null, + currentTime: null, + timeline: null, + playbackRate: _playbackRate, + pending: false, + playState: immediate ? "idle" : "paused", + replaceState: "active" + }); + const pending = vueDemi.computed(() => store.pending); + const playState = vueDemi.computed(() => store.playState); + const replaceState = vueDemi.computed(() => store.replaceState); + const startTime = vueDemi.computed({ + get() { + return store.startTime; + }, + set(value) { + store.startTime = value; + if (animate.value) + animate.value.startTime = value; + } + }); + const currentTime = vueDemi.computed({ + get() { + return store.currentTime; + }, + set(value) { + store.currentTime = value; + if (animate.value) { + animate.value.currentTime = value; + syncResume(); + } + } + }); + const timeline = vueDemi.computed({ + get() { + return store.timeline; + }, + set(value) { + store.timeline = value; + if (animate.value) + animate.value.timeline = value; + } + }); + const playbackRate = vueDemi.computed({ + get() { + return store.playbackRate; + }, + set(value) { + store.playbackRate = value; + if (animate.value) + animate.value.playbackRate = value; + } + }); + const play = () => { + if (animate.value) { + try { + animate.value.play(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + } else { + update(); + } + }; + const pause = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.pause(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const reverse = () => { + var _a; + if (!animate.value) + update(); + try { + (_a = animate.value) == null ? void 0 : _a.reverse(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + }; + const finish = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.finish(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const cancel = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.cancel(); + syncPause(); + } catch (e) { + onError(e); + } + }; + vueDemi.watch(() => unrefElement(target), (el) => { + if (el) + update(); }); + vueDemi.watch(() => keyframes, (value) => { + if (animate.value) + update(); + if (!unrefElement(target) && animate.value) { + animate.value.effect = new KeyframeEffect( + unrefElement(target), + shared.toValue(value), + animateOptions + ); + } + }, { deep: true }); + shared.tryOnMounted(() => update(true), false); + shared.tryOnScopeDispose(cancel); + function update(init) { + const el = unrefElement(target); + if (!isSupported.value || !el) + return; + if (!animate.value) + animate.value = el.animate(shared.toValue(keyframes), animateOptions); + if (persist) + animate.value.persist(); + if (_playbackRate !== 1) + animate.value.playbackRate = _playbackRate; + if (init && !immediate) + animate.value.pause(); + else + syncResume(); + onReady == null ? void 0 : onReady(animate.value); + } + useEventListener(animate, ["cancel", "finish", "remove"], syncPause); + useEventListener(animate, "finish", () => { + var _a; + if (commitStyles) + (_a = animate.value) == null ? void 0 : _a.commitStyles(); + }); + const { resume: resumeRef, pause: pauseRef } = useRafFn(() => { + if (!animate.value) + return; + store.pending = animate.value.pending; + store.playState = animate.value.playState; + store.replaceState = animate.value.replaceState; + store.startTime = animate.value.startTime; + store.currentTime = animate.value.currentTime; + store.timeline = animate.value.timeline; + store.playbackRate = animate.value.playbackRate; + }, { immediate: false }); + function syncResume() { + if (isSupported.value) + resumeRef(); + } + function syncPause() { + if (isSupported.value && window) + window.requestAnimationFrame(pauseRef); + } + return { + isSupported, + animate, + // actions + play, + pause, + reverse, + finish, + cancel, + // state + pending, + playState, + replaceState, + startTime, + currentTime, + timeline, + playbackRate + }; } -function useAsyncQueue(tasks, options = {}) { +function useAsyncQueue(tasks, options) { const { interrupt = true, onError = shared.noop, - onFinished = shared.noop - } = options; + onFinished = shared.noop, + signal + } = options || {}; const promiseState = { + aborted: "aborted", + fulfilled: "fulfilled", pending: "pending", - rejected: "rejected", - fulfilled: "fulfilled" + rejected: "rejected" }; - const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null })); + const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null })); const result = vueDemi.reactive(initialResult); const activeIndex = vueDemi.ref(-1); if (!tasks || tasks.length === 0) { @@ -109435,16 +102619,28 @@ function useAsyncQueue(tasks, options = {}) { tasks.reduce((prev, curr) => { return prev.then((prevRes) => { var _a; + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, new Error("aborted")); + return; + } if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) { onFinished(); return; } - return curr(prevRes).then((currentRes) => { + const done = curr(prevRes).then((currentRes) => { updateResult(promiseState.fulfilled, currentRes); - activeIndex.value === tasks.length - 1 && onFinished(); + if (activeIndex.value === tasks.length - 1) + onFinished(); return currentRes; }); + if (!signal) + return done; + return Promise.race([done, whenAborted(signal)]); }).catch((e) => { + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, e); + return e; + } updateResult(promiseState.rejected, e); onError(); return e; @@ -109455,19 +102651,30 @@ function useAsyncQueue(tasks, options = {}) { result }; } +function whenAborted(signal) { + return new Promise((resolve, reject) => { + const error = new Error("aborted"); + if (signal.aborted) + reject(error); + else + signal.addEventListener("abort", () => reject(error), { once: true }); + }); +} function useAsyncState(promise, initialState, options) { const { immediate = true, delay = 0, onError = shared.noop, + onSuccess = shared.noop, resetOnExecute = true, - shallow = true + shallow = true, + throwError } = options != null ? options : {}; const state = shallow ? vueDemi.shallowRef(initialState) : vueDemi.ref(initialState); const isReady = vueDemi.ref(false); const isLoading = vueDemi.ref(false); - const error = vueDemi.ref(void 0); + const error = vueDemi.shallowRef(void 0); async function execute(delay2 = 0, ...args) { if (resetOnExecute) state.value = initialState; @@ -109481,9 +102688,12 @@ function useAsyncState(promise, initialState, options) { const data = await _promise; state.value = data; isReady.value = true; + onSuccess(data); } catch (e) { error.value = e; onError(e); + if (throwError) + throw e; } finally { isLoading.value = false; } @@ -109491,13 +102701,24 @@ function useAsyncState(promise, initialState, options) { } if (immediate) execute(delay); - return { + const shell = { state, isReady, isLoading, error, execute }; + function waitUntilIsLoaded() { + return new Promise((resolve, reject) => { + shared.until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject); + }); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilIsLoaded().then(onFulfilled, onRejected); + } + }; } const defaults = { @@ -109528,7 +102749,7 @@ function useBase64(target, options) { return; promise.value = new Promise((resolve, reject) => { try { - const _target = vueDemi.unref(target); + const _target = shared.toValue(target); if (_target == null) { resolve(""); } else if (typeof _target === "string") { @@ -109564,7 +102785,7 @@ function useBase64(target, options) { promise.value.then((res) => base64.value = res); return promise.value; } - if (vueDemi.isRef(target)) + if (vueDemi.isRef(target) || typeof target === "function") vueDemi.watch(target, execute, { immediate: true }); else execute(); @@ -109597,9 +102818,10 @@ function blobToBase64(blob) { }); } -function useBattery({ navigator = defaultNavigator } = {}) { +function useBattery(options = {}) { + const { navigator = defaultNavigator } = options; const events = ["chargingchange", "chargingtimechange", "dischargingtimechange", "levelchange"]; - const isSupported = navigator && "getBattery" in navigator; + const isSupported = useSupported(() => navigator && "getBattery" in navigator && typeof navigator.getBattery === "function"); const charging = vueDemi.ref(false); const chargingTime = vueDemi.ref(0); const dischargingTime = vueDemi.ref(0); @@ -109611,12 +102833,11 @@ function useBattery({ navigator = defaultNavigator } = {}) { dischargingTime.value = this.dischargingTime || 0; level.value = this.level; } - if (isSupported) { + if (isSupported.value) { navigator.getBattery().then((_battery) => { battery = _battery; updateBatteryInfo.call(battery); - for (const event of events) - useEventListener(battery, event, updateBatteryInfo, { passive: true }); + useEventListener(battery, events, updateBatteryInfo, { passive: true }); }); } return { @@ -109637,14 +102858,14 @@ function useBluetooth(options) { optionalServices = void 0, navigator = defaultNavigator } = options || {}; - const isSupported = navigator && "bluetooth" in navigator; - const device = vueDemi.ref(void 0); - const error = vueDemi.ref(null); + const isSupported = useSupported(() => navigator && "bluetooth" in navigator); + const device = vueDemi.shallowRef(void 0); + const error = vueDemi.shallowRef(null); vueDemi.watch(device, () => { connectToBluetoothGATTServer(); }); async function requestDevice() { - if (!isSupported) + if (!isSupported.value) return; error.value = null; if (filters && filters.length > 0) @@ -109689,39 +102910,47 @@ function useBluetooth(options) { return { isSupported, isConnected, + // Device: device, requestDevice, + // Server: server, + // Errors: error }; } function useMediaQuery(query, options = {}) { const { window = defaultWindow } = options; - const isSupported = Boolean(window && "matchMedia" in window && typeof window.matchMedia === "function"); + const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function"); let mediaQuery; const matches = vueDemi.ref(false); - const update = () => { - if (!isSupported) - return; - if (!mediaQuery) - mediaQuery = window.matchMedia(query); - matches.value = mediaQuery.matches; + const handler = (event) => { + matches.value = event.matches; }; - shared.tryOnBeforeMount(() => { - update(); + const cleanup = () => { if (!mediaQuery) return; + if ("removeEventListener" in mediaQuery) + mediaQuery.removeEventListener("change", handler); + else + mediaQuery.removeListener(handler); + }; + const stopWatch = vueDemi.watchEffect(() => { + if (!isSupported.value) + return; + cleanup(); + mediaQuery = window.matchMedia(shared.toValue(query)); if ("addEventListener" in mediaQuery) - mediaQuery.addEventListener("change", update); + mediaQuery.addEventListener("change", handler); else - mediaQuery.addListener(update); - shared.tryOnScopeDispose(() => { - if ("removeEventListener" in mediaQuery) - mediaQuery.removeEventListener("change", update); - else - mediaQuery.removeListener(update); - }); + mediaQuery.addListener(handler); + matches.value = mediaQuery.matches; + }); + shared.tryOnScopeDispose(() => { + stopWatch(); + cleanup(); + mediaQuery = void 0; }); return matches; } @@ -109734,18 +102963,29 @@ const breakpointsTailwind = { "2xl": 1536 }; const breakpointsBootstrapV5 = { + xs: 0, sm: 576, md: 768, lg: 992, xl: 1200, xxl: 1400 }; -const breakpointsVuetify = { - xs: 600, - sm: 960, - md: 1264, - lg: 1904 +const breakpointsVuetifyV2 = { + xs: 0, + sm: 600, + md: 960, + lg: 1264, + xl: 1904 +}; +const breakpointsVuetifyV3 = { + xs: 0, + sm: 600, + md: 960, + lg: 1280, + xl: 1920, + xxl: 2560 }; +const breakpointsVuetify = breakpointsVuetifyV2; const breakpointsAntDesign = { xs: 480, sm: 576, @@ -109755,10 +102995,11 @@ const breakpointsAntDesign = { xxl: 1600 }; const breakpointsQuasar = { - xs: 600, - sm: 1024, - md: 1440, - lg: 1920 + xs: 0, + sm: 600, + md: 1024, + lg: 1440, + xl: 1920 }; const breakpointsSematic = { mobileS: 320, @@ -109769,79 +103010,103 @@ const breakpointsSematic = { laptopL: 1440, desktop4K: 2560 }; - -var __defProp$i = Object.defineProperty; -var __getOwnPropSymbols$k = Object.getOwnPropertySymbols; -var __hasOwnProp$k = Object.prototype.hasOwnProperty; -var __propIsEnum$k = Object.prototype.propertyIsEnumerable; -var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$i = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$k.call(b, prop)) - __defNormalProp$i(a, prop, b[prop]); - if (__getOwnPropSymbols$k) - for (var prop of __getOwnPropSymbols$k(b)) { - if (__propIsEnum$k.call(b, prop)) - __defNormalProp$i(a, prop, b[prop]); - } - return a; +const breakpointsMasterCss = { + "3xs": 360, + "2xs": 480, + "xs": 600, + "sm": 768, + "md": 1024, + "lg": 1280, + "xl": 1440, + "2xl": 1600, + "3xl": 1920, + "4xl": 2560 +}; +const breakpointsPrimeFlex = { + sm: 576, + md: 768, + lg: 992, + xl: 1200 }; + function useBreakpoints(breakpoints, options = {}) { function getValue(k, delta) { - let v = breakpoints[k]; + let v = shared.toValue(breakpoints[shared.toValue(k)]); if (delta != null) v = shared.increaseWithUnit(v, delta); if (typeof v === "number") v = `${v}px`; return v; } - const { window = defaultWindow } = options; + const { window = defaultWindow, strategy = "min-width" } = options; function match(query) { if (!window) return false; return window.matchMedia(query).matches; } - const greater = (k) => { - return useMediaQuery(`(min-width: ${getValue(k)})`, options); + const greaterOrEqual = (k) => { + return useMediaQuery(() => `(min-width: ${getValue(k)})`, options); + }; + const smallerOrEqual = (k) => { + return useMediaQuery(() => `(max-width: ${getValue(k)})`, options); }; const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { Object.defineProperty(shortcuts, k, { - get: () => greater(k), + get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k), enumerable: true, configurable: true }); return shortcuts; }, {}); - return __spreadValues$i({ - greater, + function current() { + const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]); + return vueDemi.computed(() => points.filter(([, v]) => v.value).map(([k]) => k)); + } + return Object.assign(shortcutMethods, { + greaterOrEqual, + smallerOrEqual, + greater(k) { + return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options); + }, smaller(k) { - return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options); + return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options); }, between(a, b) { - return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options); + return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options); }, isGreater(k) { + return match(`(min-width: ${getValue(k, 0.1)})`); + }, + isGreaterOrEqual(k) { return match(`(min-width: ${getValue(k)})`); }, isSmaller(k) { return match(`(max-width: ${getValue(k, -0.1)})`); }, + isSmallerOrEqual(k) { + return match(`(max-width: ${getValue(k)})`); + }, isInBetween(a, b) { return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`); + }, + current, + active() { + const bps = current(); + return vueDemi.computed(() => bps.value.length === 0 ? "" : bps.value.at(-1)); } - }, shortcutMethods); + }); } -const useBroadcastChannel = (options) => { +function useBroadcastChannel(options) { const { name, window = defaultWindow } = options; - const isSupported = window && "BroadcastChannel" in window; + const isSupported = useSupported(() => window && "BroadcastChannel" in window); const isClosed = vueDemi.ref(false); const channel = vueDemi.ref(); const data = vueDemi.ref(); - const error = vueDemi.ref(null); + const error = vueDemi.shallowRef(null); const post = (data2) => { if (channel.value) channel.value.postMessage(data2); @@ -109851,7 +103116,7 @@ const useBroadcastChannel = (options) => { channel.value.close(); isClosed.value = true; }; - if (isSupported) { + if (isSupported.value) { shared.tryOnMounted(() => { error.value = null; channel.value = new BroadcastChannel(name); @@ -109878,26 +103143,43 @@ const useBroadcastChannel = (options) => { error, isClosed }; -}; +} -function useBrowserLocation({ window = defaultWindow } = {}) { +const WRITABLE_PROPERTIES = [ + "hash", + "host", + "hostname", + "href", + "pathname", + "port", + "protocol", + "search" +]; +function useBrowserLocation(options = {}) { + const { window = defaultWindow } = options; + const refs = Object.fromEntries( + WRITABLE_PROPERTIES.map((key) => [key, vueDemi.ref()]) + ); + for (const [key, ref2] of shared.objectEntries(refs)) { + vueDemi.watch(ref2, (value) => { + if (!(window == null ? void 0 : window.location) || window.location[key] === value) + return; + window.location[key] = value; + }); + } const buildState = (trigger) => { + var _a; const { state: state2, length } = (window == null ? void 0 : window.history) || {}; - const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {}; - return { + const { origin } = (window == null ? void 0 : window.location) || {}; + for (const key of WRITABLE_PROPERTIES) + refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key]; + return vueDemi.reactive({ trigger, state: state2, length, - hash, - host, - hostname, - href, origin, - pathname, - port, - protocol, - search - }; + ...refs + }); }; const state = vueDemi.ref(buildState("load")); if (window) { @@ -109916,16 +103198,45 @@ function useCached(refValue, comparator = (a, b) => a === b, watchOptions) { return cachedValue; } -function useClamp(value, min, max) { - const _value = vueDemi.ref(value); - return vueDemi.computed({ - get() { - return _value.value = shared.clamp(_value.value, vueDemi.unref(min), vueDemi.unref(max)); - }, - set(value2) { - _value.value = shared.clamp(value2, vueDemi.unref(min), vueDemi.unref(max)); +function usePermission(permissionDesc, options = {}) { + const { + controls = false, + navigator = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator && "permissions" in navigator); + const permissionStatus = vueDemi.shallowRef(); + const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; + const state = vueDemi.shallowRef(); + const update = () => { + var _a, _b; + state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : "prompt"; + }; + useEventListener(permissionStatus, "change", update); + const query = shared.createSingletonPromise(async () => { + if (!isSupported.value) + return; + if (!permissionStatus.value) { + try { + permissionStatus.value = await navigator.permissions.query(desc); + } catch (e) { + permissionStatus.value = void 0; + } finally { + update(); + } } + if (controls) + return vueDemi.toRaw(permissionStatus.value); }); + query(); + if (controls) { + return { + state, + isSupported, + query + }; + } else { + return state; + } } function useClipboard(options = {}) { @@ -109933,30 +103244,55 @@ function useClipboard(options = {}) { navigator = defaultNavigator, read = false, source, - copiedDuring = 1500 + copiedDuring = 1500, + legacy = false } = options; - const events = ["copy", "cut"]; - const isSupported = Boolean(navigator && "clipboard" in navigator); + const isClipboardApiSupported = useSupported(() => navigator && "clipboard" in navigator); + const permissionRead = usePermission("clipboard-read"); + const permissionWrite = usePermission("clipboard-write"); + const isSupported = vueDemi.computed(() => isClipboardApiSupported.value || legacy); const text = vueDemi.ref(""); const copied = vueDemi.ref(false); const timeout = shared.useTimeoutFn(() => copied.value = false, copiedDuring); function updateText() { - navigator.clipboard.readText().then((value) => { - text.value = value; - }); - } - if (isSupported && read) { - for (const event of events) - useEventListener(event, updateText); + if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) { + navigator.clipboard.readText().then((value) => { + text.value = value; + }); + } else { + text.value = legacyRead(); + } } - async function copy(value = vueDemi.unref(source)) { - if (isSupported && value != null) { - await navigator.clipboard.writeText(value); + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateText); + async function copy(value = shared.toValue(source)) { + if (isSupported.value && value != null) { + if (isClipboardApiSupported.value && isAllowed(permissionWrite.value)) + await navigator.clipboard.writeText(value); + else + legacyCopy(value); text.value = value; copied.value = true; timeout.start(); } } + function legacyCopy(value) { + const ta = document.createElement("textarea"); + ta.value = value != null ? value : ""; + ta.style.position = "absolute"; + ta.style.opacity = "0"; + document.body.appendChild(ta); + ta.select(); + document.execCommand("copy"); + ta.remove(); + } + function legacyRead() { + var _a, _b, _c; + return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : ""; + } + function isAllowed(status) { + return status === "granted" || status === "prompt"; + } return { isSupported, text, @@ -109965,10 +103301,77 @@ function useClipboard(options = {}) { }; } +function useClipboardItems(options = {}) { + const { + navigator = defaultNavigator, + read = false, + source, + copiedDuring = 1500 + } = options; + const isSupported = useSupported(() => navigator && "clipboard" in navigator); + const content = vueDemi.ref([]); + const copied = vueDemi.ref(false); + const timeout = shared.useTimeoutFn(() => copied.value = false, copiedDuring); + function updateContent() { + if (isSupported.value) { + navigator.clipboard.read().then((items) => { + content.value = items; + }); + } + } + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateContent); + async function copy(value = shared.toValue(source)) { + if (isSupported.value && value != null) { + await navigator.clipboard.write(value); + content.value = value; + copied.value = true; + timeout.start(); + } + } + return { + isSupported, + content, + copied, + copy + }; +} + +function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); +} +function useCloned(source, options = {}) { + const cloned = vueDemi.ref({}); + const { + manual, + clone = cloneFnJSON, + // watch options + deep = true, + immediate = true + } = options; + function sync() { + cloned.value = clone(shared.toValue(source)); + } + if (!manual && (vueDemi.isRef(source) || typeof source === "function")) { + vueDemi.watch(source, sync, { + ...options, + deep, + immediate + }); + } else { + sync(); + } + return { cloned, sync }; +} + const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof self !== "undefined" ? self : {}; const globalKey = "__vueuse_ssr_handlers__"; -_global[globalKey] = _global[globalKey] || {}; -const handlers = _global[globalKey]; +const handlers = /* @__PURE__ */ getHandlers(); +function getHandlers() { + if (!(globalKey in _global)) + _global[globalKey] = _global[globalKey] || {}; + return _global[globalKey]; +} function getSSRHandler(key, fallback) { return handlers[key] || fallback; } @@ -109976,8 +103379,12 @@ function setSSRHandler(key, fn) { handlers[key] = fn; } +function usePreferredDark(options) { + return useMediaQuery("(prefers-color-scheme: dark)", options); +} + function guessSerializerType(rawInit) { - return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; + return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; } const StorageSerializers = { @@ -110014,21 +103421,24 @@ const StorageSerializers = { write: (v) => v.toISOString() } }; -function useStorage(key, initialValue, storage, options = {}) { +const customStorageEventName = "vueuse-storage"; +function useStorage(key, defaults, storage, options = {}) { var _a; const { flush = "pre", deep = true, listenToStorageChanges = true, writeDefaults = true, + mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => { console.error(e); - } + }, + initOnMounted } = options; - const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue); + const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(typeof defaults === "function" ? defaults() : defaults); if (!storage) { try { storage = getSSRHandler("getDefaultStorage", () => { @@ -110041,119 +103451,173 @@ function useStorage(key, initialValue, storage, options = {}) { } if (!storage) return data; - const rawInit = vueDemi.unref(initialValue); + const rawInit = shared.toValue(defaults); const type = guessSerializerType(rawInit); const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; - const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(data, () => write(data.value), { flush, deep, eventFilter }); - if (window && listenToStorageChanges) - useEventListener(window, "storage", update); - update(); - return data; + const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch( + data, + () => write(data.value), + { flush, deep, eventFilter } + ); + if (window && listenToStorageChanges) { + shared.tryOnMounted(() => { + if (storage instanceof Storage) + useEventListener(window, "storage", update); + else + useEventListener(window, customStorageEventName, updateFromCustomEvent); + if (initOnMounted) + update(); + }); + } + if (!initOnMounted) + update(); + function dispatchWriteEvent(oldValue, newValue) { + if (window) { + const payload = { + key, + oldValue, + newValue, + storageArea: storage + }; + window.dispatchEvent(storage instanceof Storage ? new StorageEvent("storage", payload) : new CustomEvent(customStorageEventName, { + detail: payload + })); + } + } function write(v) { try { - if (v == null) + const oldValue = storage.getItem(key); + if (v == null) { + dispatchWriteEvent(oldValue, null); storage.removeItem(key); - else - storage.setItem(key, serializer.write(v)); + } else { + const serialized = serializer.write(v); + if (oldValue !== serialized) { + storage.setItem(key, serialized); + dispatchWriteEvent(oldValue, serialized); + } + } } catch (e) { onError(e); } } function read(event) { + const rawValue = event ? event.newValue : storage.getItem(key); + if (rawValue == null) { + if (writeDefaults && rawInit != null) + storage.setItem(key, serializer.write(rawInit)); + return rawInit; + } else if (!event && mergeDefaults) { + const value = serializer.read(rawValue); + if (typeof mergeDefaults === "function") + return mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + return { ...rawInit, ...value }; + return value; + } else if (typeof rawValue !== "string") { + return rawValue; + } else { + return serializer.read(rawValue); + } + } + function update(event) { + if (event && event.storageArea !== storage) + return; + if (event && event.key == null) { + data.value = rawInit; + return; + } if (event && event.key !== key) return; pauseWatch(); try { - const rawValue = event ? event.newValue : storage.getItem(key); - if (rawValue == null) { - if (writeDefaults && rawInit !== null) - storage.setItem(key, serializer.write(rawInit)); - return rawInit; - } else if (typeof rawValue !== "string") { - return rawValue; - } else { - return serializer.read(rawValue); - } + if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value)) + data.value = read(event); } catch (e) { onError(e); } finally { - resumeWatch(); + if (event) + vueDemi.nextTick(resumeWatch); + else + resumeWatch(); } } - function update(event) { - if (event && event.key !== key) - return; - data.value = read(event); + function updateFromCustomEvent(event) { + update(event.detail); } + return data; } -function usePreferredDark(options) { - return useMediaQuery("(prefers-color-scheme: dark)", options); -} - -var __defProp$h = Object.defineProperty; -var __getOwnPropSymbols$j = Object.getOwnPropertySymbols; -var __hasOwnProp$j = Object.prototype.hasOwnProperty; -var __propIsEnum$j = Object.prototype.propertyIsEnumerable; -var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$h = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$j.call(b, prop)) - __defNormalProp$h(a, prop, b[prop]); - if (__getOwnPropSymbols$j) - for (var prop of __getOwnPropSymbols$j(b)) { - if (__propIsEnum$j.call(b, prop)) - __defNormalProp$h(a, prop, b[prop]); - } - return a; -}; +const CSS_DISABLE_TRANS = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}"; function useColorMode(options = {}) { const { selector = "html", attribute = "class", + initialValue = "auto", window = defaultWindow, storage, storageKey = "vueuse-color-scheme", listenToStorageChanges = true, storageRef, - emitAuto + emitAuto, + disableTransition = true } = options; - const modes = __spreadValues$h({ + const modes = { auto: "", light: "light", - dark: "dark" - }, options.modes || {}); + dark: "dark", + ...options.modes || {} + }; const preferredDark = usePreferredDark({ window }); - const preferredMode = vueDemi.computed(() => preferredDark.value ? "dark" : "light"); - const store = storageRef || (storageKey == null ? vueDemi.ref("auto") : useStorage(storageKey, "auto", storage, { window, listenToStorageChanges })); - const state = vueDemi.computed({ - get() { - return store.value === "auto" && !emitAuto ? preferredMode.value : store.value; - }, - set(v) { - store.value = v; - } - }); - const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector2, attribute2, value) => { - const el = window == null ? void 0 : window.document.querySelector(selector2); - if (!el) - return; - if (attribute2 === "class") { - const current = value.split(/\s/g); - Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { - if (current.includes(v)) - el.classList.add(v); - else - el.classList.remove(v); - }); - } else { - el.setAttribute(attribute2, value); + const system = vueDemi.computed(() => preferredDark.value ? "dark" : "light"); + const store = storageRef || (storageKey == null ? shared.toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges })); + const state = vueDemi.computed(() => store.value === "auto" ? system.value : store.value); + const updateHTMLAttrs = getSSRHandler( + "updateHTMLAttrs", + (selector2, attribute2, value) => { + const el = typeof selector2 === "string" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2); + if (!el) + return; + const classesToAdd = /* @__PURE__ */ new Set(); + const classesToRemove = /* @__PURE__ */ new Set(); + let attributeToChange = null; + if (attribute2 === "class") { + const current = value.split(/\s/g); + Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { + if (current.includes(v)) + classesToAdd.add(v); + else + classesToRemove.add(v); + }); + } else { + attributeToChange = { key: attribute2, value }; + } + if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null) + return; + let style; + if (disableTransition) { + style = window.document.createElement("style"); + style.appendChild(document.createTextNode(CSS_DISABLE_TRANS)); + window.document.head.appendChild(style); + } + for (const c of classesToAdd) { + el.classList.add(c); + } + for (const c of classesToRemove) { + el.classList.remove(c); + } + if (attributeToChange) { + el.setAttribute(attributeToChange.key, attributeToChange.value); + } + if (disableTransition) { + window.getComputedStyle(style).opacity; + document.head.removeChild(style); + } } - }); + ); function defaultOnChanged(mode) { var _a; - const resolvedMode = mode === "auto" ? preferredMode.value : mode; - updateHTMLAttrs(selector, attribute, (_a = modes[resolvedMode]) != null ? _a : resolvedMode); + updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode); } function onChanged(mode) { if (options.onChanged) @@ -110163,7 +103627,19 @@ function useColorMode(options = {}) { } vueDemi.watch(state, onChanged, { flush: "post", immediate: true }); shared.tryOnMounted(() => onChanged(state.value)); - return state; + const auto = vueDemi.computed({ + get() { + return emitAuto ? store.value : state.value; + }, + set(v) { + store.value = v; + } + }); + try { + return Object.assign(auto, { store, system, state }); + } catch (e) { + return auto; + } } function useConfirmDialog(revealed = vueDemi.ref(false)) { @@ -110199,51 +103675,74 @@ function useConfirmDialog(revealed = vueDemi.ref(false)) { }; } -function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } = {}) { +function useCssVar(prop, target, options = {}) { + const { window = defaultWindow, initialValue, observe = false } = options; const variable = vueDemi.ref(initialValue); const elRef = vueDemi.computed(() => { var _a; return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement); }); - vueDemi.watch([elRef, () => vueDemi.unref(prop)], ([el, prop2]) => { + function updateCssVar() { var _a; - if (el && window) { - const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim(); + const key = shared.toValue(prop); + const el = shared.toValue(elRef); + if (el && window && key) { + const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim(); variable.value = value || initialValue; } - }, { immediate: true }); - vueDemi.watch(variable, (val) => { - var _a; - if ((_a = elRef.value) == null ? void 0 : _a.style) - elRef.value.style.setProperty(vueDemi.unref(prop), val); - }); + } + if (observe) { + useMutationObserver(elRef, updateCssVar, { + attributeFilter: ["style", "class"], + window + }); + } + vueDemi.watch( + [elRef, () => shared.toValue(prop)], + (_, old) => { + if (old[0] && old[1]) + old[0].style.removeProperty(old[1]); + updateCssVar(); + }, + { immediate: true } + ); + vueDemi.watch( + variable, + (val) => { + var _a; + const raw_prop = shared.toValue(prop); + if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) { + if (val == null) + elRef.value.style.removeProperty(raw_prop); + else + elRef.value.style.setProperty(raw_prop, val); + } + } + ); return variable; } -function useCurrentElement() { +function useCurrentElement(rootComponent) { const vm = vueDemi.getCurrentInstance(); - const count = vueDemi.ref(0); - vueDemi.onUpdated(() => { - count.value += 1; - }); - vueDemi.onMounted(() => { - count.value += 1; - }); - return vueDemi.computed(() => { - count.value; - return vm.proxy.$el; - }); + const currentElement = shared.computedWithControl( + () => null, + () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el + ); + vueDemi.onUpdated(currentElement.trigger); + vueDemi.onMounted(currentElement.trigger); + return currentElement; } function useCycleList(list, options) { - var _a; - const state = vueDemi.shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]); + const state = vueDemi.shallowRef(getInitialValue()); + const listRef = shared.toRef(list); const index = vueDemi.computed({ get() { - var _a2; - let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value); + var _a; + const targetList = listRef.value; + let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value); if (index2 < 0) - index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0; + index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0; return index2; }, set(v) { @@ -110251,9 +103750,10 @@ function useCycleList(list, options) { } }); function set(i) { - const length = list.length; + const targetList = listRef.value; + const length = targetList.length; const index2 = (i % length + length) % length; - const value = list[index2]; + const value = targetList[index2]; state.value = value; return value; } @@ -110266,44 +103766,32 @@ function useCycleList(list, options) { function prev(n = 1) { return shift(-n); } + function getInitialValue() { + var _a, _b; + return (_b = shared.toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : shared.toValue(list)[0])) != null ? _b : void 0; + } + vueDemi.watch(listRef, () => set(index.value)); return { state, index, next, - prev - }; -} - -var __defProp$g = Object.defineProperty; -var __defProps$7 = Object.defineProperties; -var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$i = Object.getOwnPropertySymbols; -var __hasOwnProp$i = Object.prototype.hasOwnProperty; -var __propIsEnum$i = Object.prototype.propertyIsEnumerable; -var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$g = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$i.call(b, prop)) - __defNormalProp$g(a, prop, b[prop]); - if (__getOwnPropSymbols$i) - for (var prop of __getOwnPropSymbols$i(b)) { - if (__propIsEnum$i.call(b, prop)) - __defNormalProp$g(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b)); + prev, + go: set + }; +} + function useDark(options = {}) { const { valueDark = "dark", valueLight = "", window = defaultWindow } = options; - const mode = useColorMode(__spreadProps$7(__spreadValues$g({}, options), { + const mode = useColorMode({ + ...options, onChanged: (mode2, defaultHandler) => { var _a; if (options.onChanged) - (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === "dark"); + (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === "dark", defaultHandler, mode2); else defaultHandler(mode2); }, @@ -110311,30 +103799,41 @@ function useDark(options = {}) { dark: valueDark, light: valueLight } - })); - const preferredDark = usePreferredDark({ window }); + }); + const system = vueDemi.computed(() => { + if (mode.system) { + return mode.system.value; + } else { + const preferredDark = usePreferredDark({ window }); + return preferredDark.value ? "dark" : "light"; + } + }); const isDark = vueDemi.computed({ get() { return mode.value === "dark"; }, set(v) { - if (v === preferredDark.value) + const modeVal = v ? "dark" : "light"; + if (system.value === modeVal) mode.value = "auto"; else - mode.value = v ? "dark" : "light"; + mode.value = modeVal; } }); return isDark; } -const fnClone = (v) => JSON.parse(JSON.stringify(v)); -const fnBypass = (v) => v; -const fnSetSource = (source, value) => source.value = value; +function fnBypass(v) { + return v; +} +function fnSetSource(source, value) { + return source.value = value; +} function defaultDump(clone) { - return clone ? shared.isFunction(clone) ? clone : fnClone : fnBypass; + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; } function defaultParse(clone) { - return clone ? shared.isFunction(clone) ? clone : fnClone : fnBypass; + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; } function useManualRefHistory(source, options = {}) { const { @@ -110360,7 +103859,7 @@ function useManualRefHistory(source, options = {}) { undoStack.value.unshift(last.value); last.value = _createHistoryRecord(); if (options.capacity && undoStack.value.length > options.capacity) - undoStack.value.splice(options.capacity, Infinity); + undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY); if (redoStack.value.length) redoStack.value.splice(0, redoStack.value.length); }; @@ -110404,25 +103903,6 @@ function useManualRefHistory(source, options = {}) { }; } -var __defProp$f = Object.defineProperty; -var __defProps$6 = Object.defineProperties; -var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$h = Object.getOwnPropertySymbols; -var __hasOwnProp$h = Object.prototype.hasOwnProperty; -var __propIsEnum$h = Object.prototype.propertyIsEnumerable; -var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$f = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$h.call(b, prop)) - __defNormalProp$f(a, prop, b[prop]); - if (__getOwnPropSymbols$h) - for (var prop of __getOwnPropSymbols$h(b)) { - if (__propIsEnum$h.call(b, prop)) - __defNormalProp$f(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); function useRefHistory(source, options = {}) { const { deep = false, @@ -110439,14 +103919,18 @@ function useRefHistory(source, options = {}) { ignoreUpdates, ignorePrevAsyncUpdates, stop - } = shared.watchIgnorable(source, commit, { deep, flush, eventFilter: composedFilter }); + } = shared.watchIgnorable( + source, + commit, + { deep, flush, eventFilter: composedFilter } + ); function setSource(source2, value) { ignorePrevAsyncUpdates(); ignoreUpdates(() => { source2.value = value; }); } - const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$f({}, options), { clone: options.clone || deep, setSource })); + const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource }); const { clear, commit: manualCommit } = manualHistory; function commit() { ignorePrevAsyncUpdates(); @@ -110470,39 +103954,23 @@ function useRefHistory(source, options = {}) { stop(); clear(); } - return __spreadProps$6(__spreadValues$f({}, manualHistory), { + return { + ...manualHistory, isTracking, pause, resume, commit, batch, dispose - }); + }; } -var __defProp$e = Object.defineProperty; -var __defProps$5 = Object.defineProperties; -var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$g = Object.getOwnPropertySymbols; -var __hasOwnProp$g = Object.prototype.hasOwnProperty; -var __propIsEnum$g = Object.prototype.propertyIsEnumerable; -var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$e = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$g.call(b, prop)) - __defNormalProp$e(a, prop, b[prop]); - if (__getOwnPropSymbols$g) - for (var prop of __getOwnPropSymbols$g(b)) { - if (__propIsEnum$g.call(b, prop)) - __defNormalProp$e(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b)); function useDebouncedRefHistory(source, options = {}) { const filter = options.debounce ? shared.debounceFilter(options.debounce) : void 0; - const history = useRefHistory(source, __spreadProps$5(__spreadValues$e({}, options), { eventFilter: filter })); - return __spreadValues$e({}, history); + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; } function useDeviceMotion(options = {}) { @@ -110519,12 +103987,15 @@ function useDeviceMotion(options = {}) { z: null }); if (window) { - const onDeviceMotion = shared.createFilterWrapper(eventFilter, (event) => { - acceleration.value = event.acceleration; - accelerationIncludingGravity.value = event.accelerationIncludingGravity; - rotationRate.value = event.rotationRate; - interval.value = event.interval; - }); + const onDeviceMotion = shared.createFilterWrapper( + eventFilter, + (event) => { + acceleration.value = event.acceleration; + accelerationIncludingGravity.value = event.accelerationIncludingGravity; + rotationRate.value = event.rotationRate; + interval.value = event.interval; + } + ); useEventListener(window, "devicemotion", onDeviceMotion); } return { @@ -110537,12 +104008,12 @@ function useDeviceMotion(options = {}) { function useDeviceOrientation(options = {}) { const { window = defaultWindow } = options; - const isSupported = Boolean(window && "DeviceOrientationEvent" in window); + const isSupported = useSupported(() => window && "DeviceOrientationEvent" in window); const isAbsolute = vueDemi.ref(false); const alpha = vueDemi.ref(null); const beta = vueDemi.ref(null); const gamma = vueDemi.ref(null); - if (window && isSupported) { + if (window && isSupported.value) { useEventListener(window, "deviceorientation", (event) => { isAbsolute.value = event.absolute; alpha.value = event.alpha; @@ -110559,78 +104030,25 @@ function useDeviceOrientation(options = {}) { }; } -const DEVICE_PIXEL_RATIO_SCALES = [ - 1, - 1.325, - 1.4, - 1.5, - 1.8, - 2, - 2.4, - 2.5, - 2.75, - 3, - 3.5, - 4 -]; -function useDevicePixelRatio({ - window = defaultWindow -} = {}) { - if (!window) { - return { - pixelRatio: vueDemi.ref(1) - }; - } - const pixelRatio = vueDemi.ref(window.devicePixelRatio); - const handleDevicePixelRatio = () => { - pixelRatio.value = window.devicePixelRatio; - }; - useEventListener(window, "resize", handleDevicePixelRatio, { passive: true }); - DEVICE_PIXEL_RATIO_SCALES.forEach((dppx) => { - const mqlMin = useMediaQuery(`screen and (min-resolution: ${dppx}dppx)`); - const mqlMax = useMediaQuery(`screen and (max-resolution: ${dppx}dppx)`); - vueDemi.watch([mqlMin, mqlMax], handleDevicePixelRatio); - }); - return { pixelRatio }; -} - -function usePermission(permissionDesc, options = {}) { +function useDevicePixelRatio(options = {}) { const { - controls = false, - navigator = defaultNavigator + window = defaultWindow } = options; - const isSupported = Boolean(navigator && "permissions" in navigator); - let permissionStatus; - const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; - const state = vueDemi.ref(); - const onChange = () => { - if (permissionStatus) - state.value = permissionStatus.state; - }; - const query = shared.createSingletonPromise(async () => { - if (!isSupported) - return; - if (!permissionStatus) { - try { - permissionStatus = await navigator.permissions.query(desc); - useEventListener(permissionStatus, "change", onChange); - onChange(); - } catch (e) { - state.value = "prompt"; - } - } - return permissionStatus; - }); - query(); - if (controls) { - return { - state, - isSupported, - query + const pixelRatio = vueDemi.ref(1); + if (window) { + let observe2 = function() { + pixelRatio.value = window.devicePixelRatio; + cleanup2(); + media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`); + media.addEventListener("change", observe2, { once: true }); + }, cleanup2 = function() { + media == null ? void 0 : media.removeEventListener("change", observe2); }; - } else { - return state; + let media; + observe2(); + shared.tryOnScopeDispose(cleanup2); } + return { pixelRatio }; } function useDevicesList(options = {}) { @@ -110644,24 +104062,28 @@ function useDevicesList(options = {}) { const videoInputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === "videoinput")); const audioInputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === "audioinput")); const audioOutputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === "audiooutput")); - let isSupported = false; + const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices); const permissionGranted = vueDemi.ref(false); + let stream; async function update() { - if (!isSupported) + if (!isSupported.value) return; devices.value = await navigator.mediaDevices.enumerateDevices(); onUpdated == null ? void 0 : onUpdated(devices.value); + if (stream) { + stream.getTracks().forEach((t) => t.stop()); + stream = null; + } } async function ensurePermissions() { - if (!isSupported) + if (!isSupported.value) return false; if (permissionGranted.value) return true; const { state, query } = usePermission("camera", { controls: true }); await query(); if (state.value !== "granted") { - const stream = await navigator.mediaDevices.getUserMedia(constraints); - stream.getTracks().forEach((t) => t.stop()); + stream = await navigator.mediaDevices.getUserMedia(constraints); update(); permissionGranted.value = true; } else { @@ -110669,14 +104091,11 @@ function useDevicesList(options = {}) { } return permissionGranted.value; } - if (navigator) { - isSupported = Boolean(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices); - if (isSupported) { - if (requestPermissions) - ensurePermissions(); - useEventListener(navigator.mediaDevices, "devicechange", update); - update(); - } + if (isSupported.value) { + if (requestPermissions) + ensurePermissions(); + useEventListener(navigator.mediaDevices, "devicechange", update); + update(); } return { devices, @@ -110690,18 +104109,23 @@ function useDevicesList(options = {}) { } function useDisplayMedia(options = {}) { - var _a, _b; + var _a; const enabled = vueDemi.ref((_a = options.enabled) != null ? _a : false); const video = options.video; const audio = options.audio; const { navigator = defaultNavigator } = options; - const isSupported = Boolean((_b = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _b.getDisplayMedia); + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia; + }); const constraint = { audio, video }; const stream = vueDemi.shallowRef(); async function _start() { - if (!isSupported || stream.value) + var _a2; + if (!isSupported.value || stream.value) return; stream.value = await navigator.mediaDevices.getDisplayMedia(constraint); + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.addEventListener("ended", stop)); return stream.value; } async function _stop() { @@ -110719,12 +104143,16 @@ function useDisplayMedia(options = {}) { enabled.value = true; return stream.value; } - vueDemi.watch(enabled, (v) => { - if (v) - _start(); - else - _stop(); - }, { immediate: true }); + vueDemi.watch( + enabled, + (v) => { + if (v) + _start(); + else + _stop(); + }, + { immediate: true } + ); return { isSupported, stream, @@ -110734,7 +104162,8 @@ function useDisplayMedia(options = {}) { }; } -function useDocumentVisibility({ document = defaultDocument } = {}) { +function useDocumentVisibility(options = {}) { + const { document = defaultDocument } = options; if (!document) return vueDemi.ref("visible"); const visibility = vueDemi.ref(document.visibilityState); @@ -110744,160 +104173,219 @@ function useDocumentVisibility({ document = defaultDocument } = {}) { return visibility; } -var __defProp$d = Object.defineProperty; -var __defProps$4 = Object.defineProperties; -var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$f = Object.getOwnPropertySymbols; -var __hasOwnProp$f = Object.prototype.hasOwnProperty; -var __propIsEnum$f = Object.prototype.propertyIsEnumerable; -var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$d = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$f.call(b, prop)) - __defNormalProp$d(a, prop, b[prop]); - if (__getOwnPropSymbols$f) - for (var prop of __getOwnPropSymbols$f(b)) { - if (__propIsEnum$f.call(b, prop)) - __defNormalProp$d(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b)); function useDraggable(target, options = {}) { var _a, _b; - const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow; - const position = vueDemi.ref((_b = options.initialValue) != null ? _b : { x: 0, y: 0 }); + const { + pointerTypes, + preventDefault, + stopPropagation, + exact, + onMove, + onEnd, + onStart, + initialValue, + axis = "both", + draggingElement = defaultWindow, + containerElement, + handle: draggingHandle = target, + buttons = [0] + } = options; + const position = vueDemi.ref( + (_a = shared.toValue(initialValue)) != null ? _a : { x: 0, y: 0 } + ); const pressedDelta = vueDemi.ref(); const filterEvent = (e) => { - if (options.pointerTypes) - return options.pointerTypes.includes(e.pointerType); + if (pointerTypes) + return pointerTypes.includes(e.pointerType); return true; }; const handleEvent = (e) => { - if (vueDemi.unref(options.preventDefault)) + if (shared.toValue(preventDefault)) e.preventDefault(); - if (vueDemi.unref(options.stopPropagation)) + if (shared.toValue(stopPropagation)) e.stopPropagation(); }; const start = (e) => { var _a2; - if (!filterEvent(e)) + if (!shared.toValue(buttons).includes(e.button)) + return; + if (shared.toValue(options.disabled) || !filterEvent(e)) return; - if (vueDemi.unref(options.exact) && e.target !== vueDemi.unref(target)) + if (shared.toValue(exact) && e.target !== shared.toValue(target)) return; - const rect = vueDemi.unref(target).getBoundingClientRect(); + const container = shared.toValue(containerElement); + const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container); + const targetRect = shared.toValue(target).getBoundingClientRect(); const pos = { - x: e.pageX - rect.left, - y: e.pageY - rect.top + x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left), + y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top) }; - if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, pos, e)) === false) + if ((onStart == null ? void 0 : onStart(pos, e)) === false) return; pressedDelta.value = pos; handleEvent(e); }; const move = (e) => { - var _a2; - if (!filterEvent(e)) + if (shared.toValue(options.disabled) || !filterEvent(e)) return; if (!pressedDelta.value) return; + const container = shared.toValue(containerElement); + const targetRect = shared.toValue(target).getBoundingClientRect(); + let { x, y } = position.value; + if (axis === "x" || axis === "both") { + x = e.clientX - pressedDelta.value.x; + if (container) + x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width); + } + if (axis === "y" || axis === "both") { + y = e.clientY - pressedDelta.value.y; + if (container) + y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height); + } position.value = { - x: e.pageX - pressedDelta.value.x, - y: e.pageY - pressedDelta.value.y + x, + y }; - (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e); + onMove == null ? void 0 : onMove(position.value, e); handleEvent(e); }; const end = (e) => { - var _a2; - if (!filterEvent(e)) + if (shared.toValue(options.disabled) || !filterEvent(e)) return; if (!pressedDelta.value) return; pressedDelta.value = void 0; - (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e); + onEnd == null ? void 0 : onEnd(position.value, e); handleEvent(e); }; if (shared.isClient) { - useEventListener(target, "pointerdown", start, true); - useEventListener(draggingElement, "pointermove", move, true); - useEventListener(draggingElement, "pointerup", end, true); + const config = { capture: (_b = options.capture) != null ? _b : true }; + useEventListener(draggingHandle, "pointerdown", start, config); + useEventListener(draggingElement, "pointermove", move, config); + useEventListener(draggingElement, "pointerup", end, config); } - return __spreadProps$4(__spreadValues$d({}, shared.toRefs(position)), { + return { + ...shared.toRefs(position), position, isDragging: vueDemi.computed(() => !!pressedDelta.value), - style: vueDemi.computed(() => `left:${position.value.x}px;top:${position.value.y}px;`) - }); + style: vueDemi.computed( + () => `left:${position.value.x}px;top:${position.value.y}px;` + ) + }; } -function useDropZone(target, onDrop) { +function useDropZone(target, options = {}) { + var _a, _b; const isOverDropZone = vueDemi.ref(false); + const files = vueDemi.shallowRef(null); let counter = 0; + let isValid = true; if (shared.isClient) { - useEventListener(target, "dragenter", (event) => { - event.preventDefault(); - counter += 1; - isOverDropZone.value = true; - }); - useEventListener(target, "dragover", (event) => { - event.preventDefault(); - }); - useEventListener(target, "dragleave", (event) => { - event.preventDefault(); - counter -= 1; - if (counter === 0) - isOverDropZone.value = false; - }); - useEventListener(target, "drop", (event) => { - var _a, _b; - event.preventDefault(); - counter = 0; - isOverDropZone.value = false; - const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []); - if (files.length === 0) { - onDrop(null); + const _options = typeof options === "function" ? { onDrop: options } : options; + const multiple = (_a = _options.multiple) != null ? _a : true; + const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false; + const getFiles = (event) => { + var _a2, _b2; + const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []); + return list.length === 0 ? null : multiple ? list : [list[0]]; + }; + const checkDataTypes = (types) => { + if (_options.dataTypes) { + const dataTypes = vueDemi.unref(_options.dataTypes); + return typeof dataTypes === "function" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true; + } + return true; + }; + const checkValidity = (event) => { + var _a2, _b2; + const items = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items) != null ? _b2 : []); + const types = items.filter((item) => item.kind === "file").map((item) => item.type); + const dataTypesValid = checkDataTypes(types); + const multipleFilesValid = multiple || items.filter((item) => item.kind === "file").length <= 1; + return dataTypesValid && multipleFilesValid; + }; + const handleDragEvent = (event, eventType) => { + var _a2, _b2, _c, _d; + isValid = checkValidity(event); + if (!isValid) { + if (preventDefaultForUnhandled) { + event.preventDefault(); + } + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "none"; + } return; } - onDrop(files); - }); + event.preventDefault(); + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "copy"; + } + const currentFiles = getFiles(event); + switch (eventType) { + case "enter": + counter += 1; + isOverDropZone.value = true; + (_a2 = _options.onEnter) == null ? void 0 : _a2.call(_options, null, event); + break; + case "over": + (_b2 = _options.onOver) == null ? void 0 : _b2.call(_options, null, event); + break; + case "leave": + counter -= 1; + if (counter === 0) + isOverDropZone.value = false; + (_c = _options.onLeave) == null ? void 0 : _c.call(_options, null, event); + break; + case "drop": + counter = 0; + isOverDropZone.value = false; + if (isValid) { + files.value = currentFiles; + (_d = _options.onDrop) == null ? void 0 : _d.call(_options, currentFiles, event); + } + break; + } + }; + useEventListener(target, "dragenter", (event) => handleDragEvent(event, "enter")); + useEventListener(target, "dragover", (event) => handleDragEvent(event, "over")); + useEventListener(target, "dragleave", (event) => handleDragEvent(event, "leave")); + useEventListener(target, "drop", (event) => handleDragEvent(event, "drop")); } return { + files, isOverDropZone }; } -var __getOwnPropSymbols$e = Object.getOwnPropertySymbols; -var __hasOwnProp$e = Object.prototype.hasOwnProperty; -var __propIsEnum$e = Object.prototype.propertyIsEnumerable; -var __objRest$2 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$e.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$e) - for (var prop of __getOwnPropSymbols$e(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$e.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; function useResizeObserver(target, callback, options = {}) { - const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, ["window"]); + const { window = defaultWindow, ...observerOptions } = options; let observer; - const isSupported = window && "ResizeObserver" in window; + const isSupported = useSupported(() => window && "ResizeObserver" in window); const cleanup = () => { if (observer) { observer.disconnect(); observer = void 0; } }; - const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => { - cleanup(); - if (isSupported && window && el) { - observer = new ResizeObserver(callback); - observer.observe(el, observerOptions); - } - }, { immediate: true, flush: "post" }); + const targets = vueDemi.computed(() => { + const _targets = shared.toValue(target); + return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)]; + }); + const stopWatch = vueDemi.watch( + targets, + (els) => { + cleanup(); + if (isSupported.value && window) { + observer = new ResizeObserver(callback); + for (const _el of els) { + if (_el) + observer.observe(_el, observerOptions); + } + } + }, + { immediate: true, flush: "post" } + ); const stop = () => { cleanup(); stopWatch(); @@ -110914,7 +104402,8 @@ function useElementBounding(target, options = {}) { reset = true, windowResize = true, windowScroll = true, - immediate = true + immediate = true, + updateTiming = "sync" } = options; const height = vueDemi.ref(0); const bottom = vueDemi.ref(0); @@ -110924,7 +104413,7 @@ function useElementBounding(target, options = {}) { const width = vueDemi.ref(0); const x = vueDemi.ref(0); const y = vueDemi.ref(0); - function update() { + function recalculate() { const el = unrefElement(target); if (!el) { if (reset) { @@ -110949,10 +104438,19 @@ function useElementBounding(target, options = {}) { x.value = rect.x; y.value = rect.y; } + function update() { + if (updateTiming === "sync") + recalculate(); + else if (updateTiming === "next-frame") + requestAnimationFrame(() => recalculate()); + } useResizeObserver(target, update); vueDemi.watch(() => unrefElement(target), (ele) => !ele && update()); + useMutationObserver(target, update, { + attributeFilter: ["style", "class"] + }); if (windowScroll) - useEventListener("scroll", update, { passive: true }); + useEventListener("scroll", update, { capture: true, passive: true }); if (windowResize) useEventListener("resize", update, { passive: true }); shared.tryOnMounted(() => { @@ -110972,120 +104470,208 @@ function useElementBounding(target, options = {}) { }; } -function useRafFn(fn, options = {}) { +function useElementByPoint(options) { const { - immediate = true, - window = defaultWindow + x, + y, + document = defaultDocument, + multiple, + interval = "requestAnimationFrame", + immediate = true } = options; - const isActive = vueDemi.ref(false); - let rafId = null; - function loop() { - if (!isActive.value || !window) - return; - fn(); - rafId = window.requestAnimationFrame(loop); - } - function resume() { - if (!isActive.value && window) { - isActive.value = true; - loop(); - } - } - function pause() { - isActive.value = false; - if (rafId != null && window) { - window.cancelAnimationFrame(rafId); - rafId = null; - } - } - if (immediate) - resume(); - shared.tryOnScopeDispose(pause); + const isSupported = useSupported(() => { + if (shared.toValue(multiple)) + return document && "elementsFromPoint" in document; + return document && "elementFromPoint" in document; + }); + const element = vueDemi.ref(null); + const cb = () => { + var _a, _b; + element.value = shared.toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(shared.toValue(x), shared.toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(shared.toValue(x), shared.toValue(y))) != null ? _b : null; + }; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : shared.useIntervalFn(cb, interval, { immediate }); return { - isActive, - pause, - resume + isSupported, + element, + ...controls }; } -var __defProp$c = Object.defineProperty; -var __getOwnPropSymbols$d = Object.getOwnPropertySymbols; -var __hasOwnProp$d = Object.prototype.hasOwnProperty; -var __propIsEnum$d = Object.prototype.propertyIsEnumerable; -var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$c = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$d.call(b, prop)) - __defNormalProp$c(a, prop, b[prop]); - if (__getOwnPropSymbols$d) - for (var prop of __getOwnPropSymbols$d(b)) { - if (__propIsEnum$d.call(b, prop)) - __defNormalProp$c(a, prop, b[prop]); - } - return a; -}; -function useElementByPoint(options) { - const element = vueDemi.ref(null); - const { x, y } = options; - const controls = useRafFn(() => { - element.value = document.elementFromPoint(vueDemi.unref(x), vueDemi.unref(y)); - }); - return __spreadValues$c({ - element - }, controls); -} - -function useElementHover(el) { +function useElementHover(el, options = {}) { + const { + delayEnter = 0, + delayLeave = 0, + window = defaultWindow + } = options; const isHovered = vueDemi.ref(false); - useEventListener(el, "mouseenter", () => isHovered.value = true); - useEventListener(el, "mouseleave", () => isHovered.value = false); + let timer; + const toggle = (entering) => { + const delay = entering ? delayEnter : delayLeave; + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (delay) + timer = setTimeout(() => isHovered.value = entering, delay); + else + isHovered.value = entering; + }; + if (!window) + return isHovered; + useEventListener(el, "mouseenter", () => toggle(true), { passive: true }); + useEventListener(el, "mouseleave", () => toggle(false), { passive: true }); return isHovered; } function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) { + const { window = defaultWindow, box = "content-box" } = options; + const isSVG = vueDemi.computed(() => { + var _a, _b; + return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg"); + }); const width = vueDemi.ref(initialSize.width); const height = vueDemi.ref(initialSize.height); - useResizeObserver(target, ([entry]) => { - width.value = entry.contentRect.width; - height.value = entry.contentRect.height; - }, options); - vueDemi.watch(() => unrefElement(target), (ele) => { - width.value = ele ? initialSize.width : 0; - height.value = ele ? initialSize.height : 0; + const { stop: stop1 } = useResizeObserver( + target, + ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const rect = $elem.getBoundingClientRect(); + width.value = rect.width; + height.value = rect.height; + } + } else { + if (boxSize) { + const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize]; + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + } + }, + options + ); + shared.tryOnMounted(() => { + const ele = unrefElement(target); + if (ele) { + width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width; + height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height; + } }); + const stop2 = vueDemi.watch( + () => unrefElement(target), + (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + } + ); + function stop() { + stop1(); + stop2(); + } return { width, - height + height, + stop + }; +} + +function useIntersectionObserver(target, callback, options = {}) { + const { + root, + rootMargin = "0px", + threshold = 0, + window = defaultWindow, + immediate = true + } = options; + const isSupported = useSupported(() => window && "IntersectionObserver" in window); + const targets = vueDemi.computed(() => { + const _target = shared.toValue(target); + return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(shared.notNullish); + }); + let cleanup = shared.noop; + const isActive = vueDemi.ref(immediate); + const stopWatch = isSupported.value ? vueDemi.watch( + () => [targets.value, unrefElement(root), isActive.value], + ([targets2, root2]) => { + cleanup(); + if (!isActive.value) + return; + if (!targets2.length) + return; + const observer = new IntersectionObserver( + callback, + { + root: unrefElement(root2), + rootMargin, + threshold + } + ); + targets2.forEach((el) => el && observer.observe(el)); + cleanup = () => { + observer.disconnect(); + cleanup = shared.noop; + }; + }, + { immediate, flush: "post" } + ) : shared.noop; + const stop = () => { + cleanup(); + stopWatch(); + isActive.value = false; + }; + shared.tryOnScopeDispose(stop); + return { + isSupported, + isActive, + pause() { + cleanup(); + isActive.value = false; + }, + resume() { + isActive.value = true; + }, + stop }; } -function useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) { +function useElementVisibility(element, options = {}) { + const { window = defaultWindow, scrollTarget, threshold = 0 } = options; const elementIsVisible = vueDemi.ref(false); - const testBounding = () => { - if (!window) - return; - const document = window.document; - if (!vueDemi.unref(element)) { - elementIsVisible.value = false; - } else { - const rect = vueDemi.unref(element).getBoundingClientRect(); - elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0; + useIntersectionObserver( + element, + (intersectionObserverEntries) => { + let isIntersecting = elementIsVisible.value; + let latestTime = 0; + for (const entry of intersectionObserverEntries) { + if (entry.time >= latestTime) { + latestTime = entry.time; + isIntersecting = entry.isIntersecting; + } + } + elementIsVisible.value = isIntersecting; + }, + { + root: scrollTarget, + window, + threshold } - }; - shared.tryOnMounted(testBounding); - if (window) - shared.tryOnMounted(() => useEventListener(vueDemi.unref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true })); + ); return elementIsVisible; } -const events = new Map(); +const events = /* @__PURE__ */ new Map(); function useEventBus(key) { const scope = vueDemi.getCurrentScope(); function on(listener) { var _a; - const listeners = events.get(key) || []; - listeners.push(listener); + const listeners = events.get(key) || /* @__PURE__ */ new Set(); + listeners.add(listener); events.set(key, listeners); const _off = () => off(listener); (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off); @@ -111102,11 +104688,9 @@ function useEventBus(key) { const listeners = events.get(key); if (!listeners) return; - const index = listeners.indexOf(listener); - if (index > -1) - listeners.splice(index, 1); - if (!listeners.length) - events.delete(key); + listeners.delete(listener); + if (!listeners.size) + reset(); } function reset() { events.delete(key); @@ -111118,61 +104702,103 @@ function useEventBus(key) { return { on, once, off, emit, reset }; } +function resolveNestedOptions$1(options) { + if (options === true) + return {}; + return options; +} function useEventSource(url, events = [], options = {}) { const event = vueDemi.ref(null); const data = vueDemi.ref(null); const status = vueDemi.ref("CONNECTING"); const eventSource = vueDemi.ref(null); - const error = vueDemi.ref(null); + const error = vueDemi.shallowRef(null); + const urlRef = shared.toRef(url); + const lastEventId = vueDemi.shallowRef(null); + let explicitlyClosed = false; + let retried = 0; const { - withCredentials = false + withCredentials = false, + immediate = true } = options; const close = () => { - if (eventSource.value) { + if (shared.isClient && eventSource.value) { eventSource.value.close(); eventSource.value = null; status.value = "CLOSED"; + explicitlyClosed = true; } }; - const es = new EventSource(url, { withCredentials }); - eventSource.value = es; - es.onopen = () => { - status.value = "OPEN"; - error.value = null; - }; - es.onerror = (e) => { - status.value = "CLOSED"; - error.value = e; - }; - es.onmessage = (e) => { - event.value = null; - data.value = e.data; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const es = new EventSource(urlRef.value, { withCredentials }); + status.value = "CONNECTING"; + eventSource.value = es; + es.onopen = () => { + status.value = "OPEN"; + error.value = null; + }; + es.onerror = (e) => { + status.value = "CLOSED"; + error.value = e; + if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) { + es.close(); + const { + retries = -1, + delay = 1e3, + onFailed + } = resolveNestedOptions$1(options.autoReconnect); + retried += 1; + if (typeof retries === "number" && (retries < 0 || retried < retries)) + setTimeout(_init, delay); + else if (typeof retries === "function" && retries()) + setTimeout(_init, delay); + else + onFailed == null ? void 0 : onFailed(); + } + }; + es.onmessage = (e) => { + event.value = null; + data.value = e.data; + lastEventId.value = e.lastEventId; + }; + for (const event_name of events) { + useEventListener(es, event_name, (e) => { + event.value = event_name; + data.value = e.data || null; + }); + } }; - for (const event_name of events) { - useEventListener(es, event_name, (e) => { - event.value = event_name; - data.value = e.data || null; - }); - } - shared.tryOnScopeDispose(() => { + const open = () => { + if (!shared.isClient) + return; close(); - }); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) + vueDemi.watch(urlRef, open, { immediate: true }); + shared.tryOnScopeDispose(close); return { eventSource, event, data, status, error, - close + open, + close, + lastEventId }; } function useEyeDropper(options = {}) { const { initialValue = "" } = options; - const isSupported = Boolean(typeof window !== "undefined" && "EyeDropper" in window); + const isSupported = useSupported(() => typeof window !== "undefined" && "EyeDropper" in window); const sRGBHex = vueDemi.ref(initialValue); async function open(openOptions) { - if (!isSupported) + if (!isSupported.value) return; const eyeDropper = new window.EyeDropper(); const result = await eyeDropper.open(openOptions); @@ -111188,67 +104814,107 @@ function useFavicon(newIcon = null, options = {}) { rel = "icon", document = defaultDocument } = options; - const favicon = vueDemi.isRef(newIcon) ? newIcon : vueDemi.ref(newIcon); + const favicon = shared.toRef(newIcon); const applyIcon = (icon) => { - document == null ? void 0 : document.head.querySelectorAll(`link[rel*="${rel}"]`).forEach((el) => el.href = `${baseUrl}${icon}`); + const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*="${rel}"]`); + if (!elements || elements.length === 0) { + const link = document == null ? void 0 : document.createElement("link"); + if (link) { + link.rel = rel; + link.href = `${baseUrl}${icon}`; + link.type = `image/${icon.split(".").pop()}`; + document == null ? void 0 : document.head.append(link); + } + return; + } + elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`); }; - vueDemi.watch(favicon, (i, o) => { - if (shared.isString(i) && i !== o) - applyIcon(i); - }, { immediate: true }); + vueDemi.watch( + favicon, + (i, o) => { + if (typeof i === "string" && i !== o) + applyIcon(i); + }, + { immediate: true } + ); return favicon; } -var __defProp$b = Object.defineProperty; -var __defProps$3 = Object.defineProperties; -var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$c = Object.getOwnPropertySymbols; -var __hasOwnProp$c = Object.prototype.hasOwnProperty; -var __propIsEnum$c = Object.prototype.propertyIsEnumerable; -var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$b = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$c.call(b, prop)) - __defNormalProp$b(a, prop, b[prop]); - if (__getOwnPropSymbols$c) - for (var prop of __getOwnPropSymbols$c(b)) { - if (__propIsEnum$c.call(b, prop)) - __defNormalProp$b(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b)); const payloadMapping = { json: "application/json", - text: "text/plain", - formData: "multipart/form-data" + text: "text/plain" }; function isFetchOptions(obj) { - return shared.containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch"); + return obj && shared.containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch", "updateDataOnError"); +} +const reAbsolute = /^(?:[a-z][a-z\d+\-.]*:)?\/\//i; +function isAbsoluteURL(url) { + return reAbsolute.test(url); } function headersToObject(headers) { if (typeof Headers !== "undefined" && headers instanceof Headers) - return Object.fromEntries([...headers.entries()]); + return Object.fromEntries(headers.entries()); return headers; } +function combineCallbacks(combination, ...callbacks) { + if (combination === "overwrite") { + return async (ctx) => { + const callback = callbacks[callbacks.length - 1]; + if (callback) + return { ...ctx, ...await callback(ctx) }; + return ctx; + }; + } else { + return async (ctx) => { + for (const callback of callbacks) { + if (callback) + ctx = { ...ctx, ...await callback(ctx) }; + } + return ctx; + }; + } +} function createFetch(config = {}) { + const _combination = config.combination || "chain"; const _options = config.options || {}; const _fetchOptions = config.fetchOptions || {}; function useFactoryFetch(url, ...args) { - const computedUrl = vueDemi.computed(() => config.baseUrl ? joinPaths(vueDemi.unref(config.baseUrl), vueDemi.unref(url)) : vueDemi.unref(url)); + const computedUrl = vueDemi.computed(() => { + const baseUrl = shared.toValue(config.baseUrl); + const targetUrl = shared.toValue(url); + return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl; + }); let options = _options; let fetchOptions = _fetchOptions; if (args.length > 0) { if (isFetchOptions(args[0])) { - options = __spreadValues$b(__spreadValues$b({}, options), args[0]); + options = { + ...options, + ...args[0], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError) + }; } else { - fetchOptions = __spreadProps$3(__spreadValues$b(__spreadValues$b({}, fetchOptions), args[0]), { - headers: __spreadValues$b(__spreadValues$b({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {}) - }); + fetchOptions = { + ...fetchOptions, + ...args[0], + headers: { + ...headersToObject(fetchOptions.headers) || {}, + ...headersToObject(args[0].headers) || {} + } + }; } } - if (args.length > 1 && isFetchOptions(args[1])) - options = __spreadValues$b(__spreadValues$b({}, options), args[1]); + if (args.length > 1 && isFetchOptions(args[1])) { + options = { + ...options, + ...args[1], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError) + }; + } return useFetch(computedUrl, fetchOptions, options); } return useFactoryFetch; @@ -111257,7 +104923,12 @@ function useFetch(url, ...args) { var _a; const supportsAbort = typeof AbortController === "function"; let fetchOptions = {}; - let options = { immediate: true, refetch: false, timeout: 0 }; + let options = { + immediate: true, + refetch: false, + timeout: 0, + updateDataOnError: false + }; const config = { method: "GET", type: "text", @@ -111265,13 +104936,13 @@ function useFetch(url, ...args) { }; if (args.length > 0) { if (isFetchOptions(args[0])) - options = __spreadValues$b(__spreadValues$b({}, options), args[0]); + options = { ...options, ...args[0] }; else fetchOptions = args[0]; } if (args.length > 1) { if (isFetchOptions(args[1])) - options = __spreadValues$b(__spreadValues$b({}, options), args[1]); + options = { ...options, ...args[1] }; } const { fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch, @@ -111287,13 +104958,20 @@ function useFetch(url, ...args) { const statusCode = vueDemi.ref(null); const response = vueDemi.shallowRef(null); const error = vueDemi.shallowRef(null); - const data = vueDemi.shallowRef(initialData); + const data = vueDemi.shallowRef(initialData || null); const canAbort = vueDemi.computed(() => supportsAbort && isFetching.value); let controller; let timer; const abort = () => { - if (supportsAbort && controller) - controller.abort(); + if (supportsAbort) { + controller == null ? void 0 : controller.abort(); + controller = new AbortController(); + controller.signal.onabort = () => aborted.value = true; + fetchOptions = { + ...fetchOptions, + signal: controller.signal + }; + } }; const loading = (isLoading) => { isFetching.value = isLoading; @@ -111301,34 +104979,40 @@ function useFetch(url, ...args) { }; if (timeout) timer = shared.useTimeoutFn(abort, timeout, { immediate: false }); + let executeCounter = 0; const execute = async (throwOnFailed = false) => { - var _a2; + var _a2, _b; + abort(); loading(true); error.value = null; statusCode.value = null; aborted.value = false; - controller = void 0; - if (supportsAbort) { - controller = new AbortController(); - controller.signal.onabort = () => aborted.value = true; - fetchOptions = __spreadProps$3(__spreadValues$b({}, fetchOptions), { - signal: controller.signal - }); - } + executeCounter += 1; + const currentExecuteCounter = executeCounter; const defaultFetchOptions = { method: config.method, headers: {} }; if (config.payload) { const headers = headersToObject(defaultFetchOptions.headers); + const payload = shared.toValue(config.payload); + if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData)) + config.payloadType = "json"; if (config.payloadType) headers["Content-Type"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType; - defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(vueDemi.unref(config.payload)) : vueDemi.unref(config.payload); + defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(payload) : payload; } let isCanceled = false; - const context = { url: vueDemi.unref(url), options: __spreadValues$b(__spreadValues$b({}, defaultFetchOptions), fetchOptions), cancel: () => { - isCanceled = true; - } }; + const context = { + url: shared.toValue(url), + options: { + ...defaultFetchOptions, + ...fetchOptions + }, + cancel: () => { + isCanceled = true; + } + }; if (options.beforeFetch) Object.assign(context, await options.beforeFetch(context)); if (isCanceled || !fetch) { @@ -111338,50 +105022,73 @@ function useFetch(url, ...args) { let responseData = null; if (timer) timer.start(); - return new Promise((resolve, reject) => { - var _a3; - fetch(context.url, __spreadProps$3(__spreadValues$b(__spreadValues$b({}, defaultFetchOptions), context.options), { - headers: __spreadValues$b(__spreadValues$b({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)) - })).then(async (fetchResponse) => { - response.value = fetchResponse; - statusCode.value = fetchResponse.status; - responseData = await fetchResponse[config.type](); - if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300) - ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse })); - data.value = responseData; - if (!fetchResponse.ok) - throw new Error(fetchResponse.statusText); - responseEvent.trigger(fetchResponse); - return resolve(fetchResponse); - }).catch(async (fetchError) => { - let errorData = fetchError.message || fetchError.name; - if (options.onFetchError) - ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value })); + return fetch( + context.url, + { + ...defaultFetchOptions, + ...context.options, + headers: { + ...headersToObject(defaultFetchOptions.headers), + ...headersToObject((_b = context.options) == null ? void 0 : _b.headers) + } + } + ).then(async (fetchResponse) => { + response.value = fetchResponse; + statusCode.value = fetchResponse.status; + responseData = await fetchResponse.clone()[config.type](); + if (!fetchResponse.ok) { + data.value = initialData || null; + throw new Error(fetchResponse.statusText); + } + if (options.afterFetch) { + ({ data: responseData } = await options.afterFetch({ + data: responseData, + response: fetchResponse + })); + } + data.value = responseData; + responseEvent.trigger(fetchResponse); + return fetchResponse; + }).catch(async (fetchError) => { + let errorData = fetchError.message || fetchError.name; + if (options.onFetchError) { + ({ error: errorData, data: responseData } = await options.onFetchError({ + data: responseData, + error: fetchError, + response: response.value + })); + } + error.value = errorData; + if (options.updateDataOnError) data.value = responseData; - error.value = errorData; - errorEvent.trigger(fetchError); - if (throwOnFailed) - return reject(fetchError); - return resolve(null); - }).finally(() => { + errorEvent.trigger(fetchError); + if (throwOnFailed) + throw fetchError; + return null; + }).finally(() => { + if (currentExecuteCounter === executeCounter) loading(false); - if (timer) - timer.stop(); - finallyEvent.trigger(null); - }); + if (timer) + timer.stop(); + finallyEvent.trigger(null); }); }; - vueDemi.watch(() => [ - vueDemi.unref(url), - vueDemi.unref(options.refetch) - ], () => vueDemi.unref(options.refetch) && execute(), { deep: true }); + const refetch = shared.toRef(options.refetch); + vueDemi.watch( + [ + refetch, + shared.toRef(url) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); const shell = { - isFinished, + isFinished: vueDemi.readonly(isFinished), + isFetching: vueDemi.readonly(isFetching), statusCode, response, error, data, - isFetching, canAbort, aborted, abort, @@ -111389,6 +105096,7 @@ function useFetch(url, ...args) { onFetchResponse: responseEvent.on, onFetchError: errorEvent.on, onFetchFinally: finallyEvent.on, + // method get: setMethod("GET"), put: setMethod("PUT"), post: setMethod("POST"), @@ -111396,6 +105104,7 @@ function useFetch(url, ...args) { patch: setMethod("PATCH"), head: setMethod("HEAD"), options: setMethod("OPTIONS"), + // type json: setType("json"), text: setType("text"), blob: setType("blob"), @@ -111409,18 +105118,21 @@ function useFetch(url, ...args) { config.payload = payload; config.payloadType = payloadType; if (vueDemi.isRef(config.payload)) { - vueDemi.watch(() => [ - vueDemi.unref(config.payload), - vueDemi.unref(options.refetch) - ], () => vueDemi.unref(options.refetch) && execute(), { deep: true }); - } - if (!payloadType && vueDemi.unref(payload) && Object.getPrototypeOf(vueDemi.unref(payload)) === Object.prototype) - config.payloadType = "json"; - return __spreadProps$3(__spreadValues$b({}, shell), { + vueDemi.watch( + [ + refetch, + shared.toRef(config.payload) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); + } + return { + ...shell, then(onFulfilled, onRejected) { return waitUntilFinished().then(onFulfilled, onRejected); } - }); + }; } return void 0; }; @@ -111434,22 +105146,24 @@ function useFetch(url, ...args) { return () => { if (!isFetching.value) { config.type = type; - return __spreadProps$3(__spreadValues$b({}, shell), { + return { + ...shell, then(onFulfilled, onRejected) { return waitUntilFinished().then(onFulfilled, onRejected); } - }); + }; } return void 0; }; } if (options.immediate) - setTimeout(execute, 0); - return __spreadProps$3(__spreadValues$b({}, shell), { + Promise.resolve().then(() => execute()); + return { + ...shell, then(onFulfilled, onRejected) { return waitUntilFinished().then(onFulfilled, onRejected); } - }); + }; } function joinPaths(start, end) { if (!start.endsWith("/") && !end.startsWith("/")) @@ -111457,31 +105171,19 @@ function joinPaths(start, end) { return `${start}${end}`; } -var __defProp$a = Object.defineProperty; -var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; -var __hasOwnProp$b = Object.prototype.hasOwnProperty; -var __propIsEnum$b = Object.prototype.propertyIsEnumerable; -var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$a = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$b.call(b, prop)) - __defNormalProp$a(a, prop, b[prop]); - if (__getOwnPropSymbols$b) - for (var prop of __getOwnPropSymbols$b(b)) { - if (__propIsEnum$b.call(b, prop)) - __defNormalProp$a(a, prop, b[prop]); - } - return a; -}; const DEFAULT_OPTIONS = { multiple: true, - accept: "*" + accept: "*", + reset: false, + directory: false }; function useFileDialog(options = {}) { const { document = defaultDocument } = options; const files = vueDemi.ref(null); + const { on: onChange, trigger: changeTrigger } = shared.createEventHook(); + const { on: onCancel, trigger: cancelTrigger } = shared.createEventHook(); let input; if (document) { input = document.createElement("input"); @@ -111489,52 +105191,52 @@ function useFileDialog(options = {}) { input.onchange = (event) => { const result = event.target; files.value = result.files; + changeTrigger(files.value); + }; + input.oncancel = () => { + cancelTrigger(); }; } + const reset = () => { + files.value = null; + if (input && input.value) { + input.value = ""; + changeTrigger(null); + } + }; const open = (localOptions) => { if (!input) return; - const _options = __spreadValues$a(__spreadValues$a(__spreadValues$a({}, DEFAULT_OPTIONS), options), localOptions); + const _options = { + ...DEFAULT_OPTIONS, + ...options, + ...localOptions + }; input.multiple = _options.multiple; input.accept = _options.accept; - input.capture = _options.capture; + input.webkitdirectory = _options.directory; + if (shared.hasOwn(_options, "capture")) + input.capture = _options.capture; + if (_options.reset) + reset(); input.click(); }; - const reset = () => { - files.value = null; - if (input) - input.value = ""; - }; return { files: vueDemi.readonly(files), open, - reset + reset, + onCancel, + onChange }; } -var __defProp$9 = Object.defineProperty; -var __getOwnPropSymbols$a = Object.getOwnPropertySymbols; -var __hasOwnProp$a = Object.prototype.hasOwnProperty; -var __propIsEnum$a = Object.prototype.propertyIsEnumerable; -var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$9 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$a.call(b, prop)) - __defNormalProp$9(a, prop, b[prop]); - if (__getOwnPropSymbols$a) - for (var prop of __getOwnPropSymbols$a(b)) { - if (__propIsEnum$a.call(b, prop)) - __defNormalProp$9(a, prop, b[prop]); - } - return a; -}; function useFileSystemAccess(options = {}) { const { window: _window = defaultWindow, dataType = "Text" - } = vueDemi.unref(options); + } = options; const window = _window; - const isSupported = Boolean(window && "showSaveFilePicker" in window && "showOpenFilePicker" in window); + const isSupported = useSupported(() => window && "showSaveFilePicker" in window && "showOpenFilePicker" in window); const fileHandle = vueDemi.ref(); const data = vueDemi.ref(); const file = vueDemi.ref(); @@ -111555,23 +105257,21 @@ function useFileSystemAccess(options = {}) { return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0; }); async function open(_options = {}) { - if (!isSupported) + if (!isSupported.value) return; - const [handle] = await window.showOpenFilePicker(__spreadValues$9(__spreadValues$9({}, vueDemi.unref(options)), _options)); + const [handle] = await window.showOpenFilePicker({ ...shared.toValue(options), ..._options }); fileHandle.value = handle; - await updateFile(); await updateData(); } async function create(_options = {}) { - if (!isSupported) + if (!isSupported.value) return; - fileHandle.value = await window.showSaveFilePicker(__spreadValues$9(__spreadValues$9({}, vueDemi.unref(options)), _options)); + fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options }); data.value = void 0; - await updateFile(); await updateData(); } async function save(_options = {}) { - if (!isSupported) + if (!isSupported.value) return; if (!fileHandle.value) return saveAs(_options); @@ -111583,9 +105283,9 @@ function useFileSystemAccess(options = {}) { await updateFile(); } async function saveAs(_options = {}) { - if (!isSupported) + if (!isSupported.value) return; - fileHandle.value = await window.showSaveFilePicker(__spreadValues$9(__spreadValues$9({}, vueDemi.unref(options)), _options)); + fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options }); if (data.value) { const writableStream = await fileHandle.value.createWritable(); await writableStream.write(data.value); @@ -111599,14 +105299,16 @@ function useFileSystemAccess(options = {}) { } async function updateData() { var _a, _b; - if (vueDemi.unref(dataType) === "Text") + await updateFile(); + const type = shared.toValue(dataType); + if (type === "Text") data.value = await ((_a = file.value) == null ? void 0 : _a.text()); - if (vueDemi.unref(dataType) === "ArrayBuffer") + else if (type === "ArrayBuffer") data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer()); - if (vueDemi.unref(dataType) === "Blob") + else if (type === "Blob") data.value = file.value; } - vueDemi.watch(() => vueDemi.unref(dataType), updateData); + vueDemi.watch(() => shared.toValue(dataType), updateData); return { isSupported, data, @@ -111624,31 +105326,48 @@ function useFileSystemAccess(options = {}) { } function useFocus(target, options = {}) { - const { initialValue = false } = options; - const activeElement = useActiveElement(options); + const { initialValue = false, focusVisible = false, preventScroll = false } = options; + const innerFocused = vueDemi.ref(false); const targetElement = vueDemi.computed(() => unrefElement(target)); + useEventListener(targetElement, "focus", (event) => { + var _a, _b; + if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, ":focus-visible"))) + innerFocused.value = true; + }); + useEventListener(targetElement, "blur", () => innerFocused.value = false); const focused = vueDemi.computed({ - get() { - return shared.isDef(activeElement.value) && shared.isDef(targetElement.value) && activeElement.value === targetElement.value; - }, + get: () => innerFocused.value, set(value) { var _a, _b; - if (!value && focused.value) + if (!value && innerFocused.value) (_a = targetElement.value) == null ? void 0 : _a.blur(); - if (value && !focused.value) - (_b = targetElement.value) == null ? void 0 : _b.focus(); + else if (value && !innerFocused.value) + (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll }); } }); - vueDemi.watch(targetElement, () => { - focused.value = initialValue; - }, { immediate: true, flush: "post" }); + vueDemi.watch( + targetElement, + () => { + focused.value = initialValue; + }, + { immediate: true, flush: "post" } + ); return { focused }; } +const EVENT_FOCUS_IN = "focusin"; +const EVENT_FOCUS_OUT = "focusout"; function useFocusWithin(target, options = {}) { - const activeElement = useActiveElement(options); + const { window = defaultWindow } = options; const targetElement = vueDemi.computed(() => unrefElement(target)); - const focused = vueDemi.computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false); + const _focused = vueDemi.ref(false); + const focused = vueDemi.computed(() => _focused.value); + const activeElement = useActiveElement(options); + if (!window || !activeElement.value) { + return { focused }; + } + useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true); + useEventListener(targetElement, EVENT_FOCUS_OUT, () => _focused.value = false); return { focused }; } @@ -111673,94 +105392,113 @@ function useFps(options) { return fps; } -const functionsMap = [ - [ - "requestFullscreen", - "exitFullscreen", - "fullscreenElement", - "fullscreenEnabled", - "fullscreenchange", - "fullscreenerror" - ], - [ - "webkitRequestFullscreen", - "webkitExitFullscreen", - "webkitFullscreenElement", - "webkitFullscreenEnabled", - "webkitfullscreenchange", - "webkitfullscreenerror" - ], - [ - "webkitRequestFullScreen", - "webkitCancelFullScreen", - "webkitCurrentFullScreenElement", - "webkitCancelFullScreen", - "webkitfullscreenchange", - "webkitfullscreenerror" - ], - [ - "mozRequestFullScreen", - "mozCancelFullScreen", - "mozFullScreenElement", - "mozFullScreenEnabled", - "mozfullscreenchange", - "mozfullscreenerror" - ], - [ - "msRequestFullscreen", - "msExitFullscreen", - "msFullscreenElement", - "msFullscreenEnabled", - "MSFullscreenChange", - "MSFullscreenError" - ] +const eventHandlers = [ + "fullscreenchange", + "webkitfullscreenchange", + "webkitendfullscreen", + "mozfullscreenchange", + "MSFullscreenChange" ]; function useFullscreen(target, options = {}) { - const { document = defaultDocument, autoExit = false } = options; - const targetRef = target || (document == null ? void 0 : document.querySelector("html")); + const { + document = defaultDocument, + autoExit = false + } = options; + const targetRef = vueDemi.computed(() => { + var _a; + return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector("html"); + }); const isFullscreen = vueDemi.ref(false); - let isSupported = false; - let map = functionsMap[0]; - if (!document) { - isSupported = false; - } else { - for (const m of functionsMap) { - if (m[1] in document) { - map = m; - isSupported = true; - break; + const requestMethod = vueDemi.computed(() => { + return [ + "requestFullscreen", + "webkitRequestFullscreen", + "webkitEnterFullscreen", + "webkitEnterFullScreen", + "webkitRequestFullScreen", + "mozRequestFullScreen", + "msRequestFullscreen" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const exitMethod = vueDemi.computed(() => { + return [ + "exitFullscreen", + "webkitExitFullscreen", + "webkitExitFullScreen", + "webkitCancelFullScreen", + "mozCancelFullScreen", + "msExitFullscreen" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const fullscreenEnabled = vueDemi.computed(() => { + return [ + "fullScreen", + "webkitIsFullScreen", + "webkitDisplayingFullscreen", + "mozFullScreen", + "msFullscreenElement" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const fullscreenElementMethod = [ + "fullscreenElement", + "webkitFullscreenElement", + "mozFullScreenElement", + "msFullscreenElement" + ].find((m) => document && m in document); + const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0); + const isCurrentElementFullScreen = () => { + if (fullscreenElementMethod) + return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value; + return false; + }; + const isElementFullScreen = () => { + if (fullscreenEnabled.value) { + if (document && document[fullscreenEnabled.value] != null) { + return document[fullscreenEnabled.value]; + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) { + return Boolean(target2[fullscreenEnabled.value]); + } } } - } - const [REQUEST, EXIT, ELEMENT, , EVENT] = map; + return false; + }; async function exit() { - if (!isSupported) + if (!isSupported.value || !isFullscreen.value) return; - if (document == null ? void 0 : document[ELEMENT]) - await document[EXIT](); + if (exitMethod.value) { + if ((document == null ? void 0 : document[exitMethod.value]) != null) { + await document[exitMethod.value](); + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[exitMethod.value]) != null) + await target2[exitMethod.value](); + } + } isFullscreen.value = false; } async function enter() { - if (!isSupported) + if (!isSupported.value || isFullscreen.value) return; - await exit(); - const target2 = unrefElement(targetRef); - if (target2) { - await target2[REQUEST](); + if (isElementFullScreen()) + await exit(); + const target2 = targetRef.value; + if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) { + await target2[requestMethod.value](); isFullscreen.value = true; } } async function toggle() { - if (isFullscreen.value) - await exit(); - else - await enter(); - } - if (document) { - useEventListener(document, EVENT, () => { - isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]); - }, false); + await (isFullscreen.value ? exit() : enter()); } + const handlerCallback = () => { + const isElementFullScreenValue = isElementFullScreen(); + if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) + isFullscreen.value = isElementFullScreenValue; + }; + useEventListener(document, eventHandlers, handlerCallback, false); + useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false); if (autoExit) shared.tryOnScopeDispose(exit); return { @@ -111819,7 +105557,7 @@ function useGamepad(options = {}) { const { navigator = defaultNavigator } = options; - const isSupported = navigator && "getGamepads" in navigator; + const isSupported = useSupported(() => navigator && "getGamepads" in navigator); const gamepads = vueDemi.ref([]); const onConnectedHook = shared.createEventHook(); const onDisconnectedHook = shared.createEventHook(); @@ -111832,24 +105570,21 @@ function useGamepad(options = {}) { hapticActuators.push(...gamepad.hapticActuators); return { id: gamepad.id, - hapticActuators, index: gamepad.index, - mapping: gamepad.mapping, connected: gamepad.connected, + mapping: gamepad.mapping, timestamp: gamepad.timestamp, + vibrationActuator: gamepad.vibrationActuator, + hapticActuators, axes: gamepad.axes.map((axes) => axes), buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value })) }; }; const updateGamepadState = () => { const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; - for (let i = 0; i < _gamepads.length; ++i) { - const gamepad = _gamepads[i]; - if (gamepad) { - const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index); - if (index > -1) - gamepads.value[index] = stateFromGamepad(gamepad); - } + for (const gamepad of _gamepads) { + if (gamepad && gamepads.value[gamepad.index]) + gamepads.value[gamepad.index] = stateFromGamepad(gamepad); } }; const { isActive, pause, resume } = useRafFn(updateGamepadState); @@ -111868,12 +105603,9 @@ function useGamepad(options = {}) { useEventListener("gamepaddisconnected", (e) => onGamepadDisconnected(e.gamepad)); shared.tryOnMounted(() => { const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; - if (_gamepads) { - for (let i = 0; i < _gamepads.length; ++i) { - const gamepad = _gamepads[i]; - if (gamepad) - onGamepadConnected(gamepad); - } + for (const gamepad of _gamepads) { + if (gamepad && gamepads.value[gamepad.index]) + onGamepadConnected(gamepad); } }); pause(); @@ -111893,15 +105625,16 @@ function useGeolocation(options = {}) { enableHighAccuracy = true, maximumAge = 3e4, timeout = 27e3, - navigator = defaultNavigator + navigator = defaultNavigator, + immediate = true } = options; - const isSupported = navigator && "geolocation" in navigator; + const isSupported = useSupported(() => navigator && "geolocation" in navigator); const locatedAt = vueDemi.ref(null); - const error = vueDemi.ref(null); + const error = vueDemi.shallowRef(null); const coords = vueDemi.ref({ accuracy: 0, - latitude: Infinity, - longitude: Infinity, + latitude: Number.POSITIVE_INFINITY, + longitude: Number.POSITIVE_INFINITY, altitude: null, altitudeAccuracy: null, heading: null, @@ -111913,22 +105646,35 @@ function useGeolocation(options = {}) { error.value = null; } let watcher; - if (isSupported) { - watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, { - enableHighAccuracy, - maximumAge, - timeout - }); + function resume() { + if (isSupported.value) { + watcher = navigator.geolocation.watchPosition( + updatePosition, + (err) => error.value = err, + { + enableHighAccuracy, + maximumAge, + timeout + } + ); + } } - shared.tryOnScopeDispose(() => { + if (immediate) + resume(); + function pause() { if (watcher && navigator) navigator.geolocation.clearWatch(watcher); + } + shared.tryOnScopeDispose(() => { + pause(); }); return { isSupported, coords, locatedAt, - error + error, + resume, + pause }; } @@ -111945,12 +105691,18 @@ function useIdle(timeout = oneMinute, options = {}) { const idle = vueDemi.ref(initialState); const lastActive = vueDemi.ref(shared.timestamp()); let timer; - const onEvent = shared.createFilterWrapper(eventFilter, () => { + const reset = () => { idle.value = false; - lastActive.value = shared.timestamp(); clearTimeout(timer); timer = setTimeout(() => idle.value = true, timeout); - }); + }; + const onEvent = shared.createFilterWrapper( + eventFilter, + () => { + lastActive.value = shared.timestamp(); + reset(); + } + ); if (window) { const document = window.document; for (const event of events) @@ -111961,48 +105713,62 @@ function useIdle(timeout = oneMinute, options = {}) { onEvent(); }); } + reset(); } - timer = setTimeout(() => idle.value = true, timeout); - return { idle, lastActive }; + return { + idle, + lastActive, + reset + }; } -var __defProp$8 = Object.defineProperty; -var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; -var __hasOwnProp$9 = Object.prototype.hasOwnProperty; -var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$8 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$9.call(b, prop)) - __defNormalProp$8(a, prop, b[prop]); - if (__getOwnPropSymbols$9) - for (var prop of __getOwnPropSymbols$9(b)) { - if (__propIsEnum$9.call(b, prop)) - __defNormalProp$8(a, prop, b[prop]); - } - return a; -}; async function loadImage(options) { return new Promise((resolve, reject) => { const img = new Image(); - const { src, srcset, sizes } = options; + const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options; img.src = src; if (srcset) img.srcset = srcset; if (sizes) img.sizes = sizes; + if (clazz) + img.className = clazz; + if (loading) + img.loading = loading; + if (crossorigin) + img.crossOrigin = crossorigin; + if (referrerPolicy) + img.referrerPolicy = referrerPolicy; img.onload = () => resolve(img); img.onerror = reject; }); } -const useImage = (options, asyncStateOptions = {}) => { - const state = useAsyncState(() => loadImage(vueDemi.unref(options)), void 0, __spreadValues$8({ - resetOnExecute: true - }, asyncStateOptions)); - vueDemi.watch(() => vueDemi.unref(options), () => state.execute(asyncStateOptions.delay), { deep: true }); +function useImage(options, asyncStateOptions = {}) { + const state = useAsyncState( + () => loadImage(shared.toValue(options)), + void 0, + { + resetOnExecute: true, + ...asyncStateOptions + } + ); + vueDemi.watch( + () => shared.toValue(options), + () => state.execute(asyncStateOptions.delay), + { deep: true } + ); return state; -}; +} +function resolveElement(el) { + if (typeof Window !== "undefined" && el instanceof Window) + return el.document.documentElement; + if (typeof Document !== "undefined" && el instanceof Document) + return el.documentElement; + return el; +} + +const ARRIVED_STATE_THRESHOLD_PIXELS = 1; function useScroll(element, options = {}) { const { throttle = 0, @@ -112018,10 +105784,49 @@ function useScroll(element, options = {}) { eventListenerOptions = { capture: false, passive: true + }, + behavior = "auto", + window = defaultWindow, + onError = (e) => { + console.error(e); } } = options; - const x = vueDemi.ref(0); - const y = vueDemi.ref(0); + const internalX = vueDemi.ref(0); + const internalY = vueDemi.ref(0); + const x = vueDemi.computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo(x2, void 0); + } + }); + const y = vueDemi.computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo(void 0, y2); + } + }); + function scrollTo(_x, _y) { + var _a, _b, _c, _d; + if (!window) + return; + const _element = shared.toValue(element); + if (!_element) + return; + (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({ + top: (_a = shared.toValue(_y)) != null ? _a : y.value, + left: (_b = shared.toValue(_x)) != null ? _b : x.value, + behavior: shared.toValue(behavior) + }); + const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element; + if (x != null) + internalX.value = scrollContainer.scrollLeft; + if (y != null) + internalY.value = scrollContainer.scrollTop; + } const isScrolling = vueDemi.ref(false); const arrivedState = vueDemi.reactive({ left: true, @@ -112035,129 +105840,150 @@ function useScroll(element, options = {}) { top: false, bottom: false }); - if (element) { - const onScrollEnd = shared.useDebounceFn((e) => { - isScrolling.value = false; - directions.left = false; - directions.right = false; - directions.top = false; - directions.bottom = false; - onStop(e); - }, throttle + idle); - const onScrollHandler = (e) => { - const eventTarget = e.target === document ? e.target.documentElement : e.target; - const scrollLeft = eventTarget.scrollLeft; - directions.left = scrollLeft < x.value; - directions.right = scrollLeft > x.value; - arrivedState.left = scrollLeft <= 0 + (offset.left || 0); - arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0); - x.value = scrollLeft; - let scrollTop = eventTarget.scrollTop; - if (e.target === document && !scrollTop) - scrollTop = document.body.scrollTop; - directions.top = scrollTop < y.value; - directions.bottom = scrollTop > y.value; - arrivedState.top = scrollTop <= 0 + (offset.top || 0); - arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0); - y.value = scrollTop; - isScrolling.value = true; - onScrollEnd(e); - onScroll(e); - }; - useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions); - } + const onScrollEnd = (e) => { + if (!isScrolling.value) + return; + isScrolling.value = false; + directions.left = false; + directions.right = false; + directions.top = false; + directions.bottom = false; + onStop(e); + }; + const onScrollEndDebounced = shared.useDebounceFn(onScrollEnd, throttle + idle); + const setArrivedState = (target) => { + var _a; + if (!window) + return; + const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target); + const { display, flexDirection } = getComputedStyle(el); + const scrollLeft = el.scrollLeft; + directions.left = scrollLeft < internalX.value; + directions.right = scrollLeft > internalX.value; + const left = Math.abs(scrollLeft) <= (offset.left || 0); + const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "row-reverse") { + arrivedState.left = right; + arrivedState.right = left; + } else { + arrivedState.left = left; + arrivedState.right = right; + } + internalX.value = scrollLeft; + let scrollTop = el.scrollTop; + if (target === window.document && !scrollTop) + scrollTop = window.document.body.scrollTop; + directions.top = scrollTop < internalY.value; + directions.bottom = scrollTop > internalY.value; + const top = Math.abs(scrollTop) <= (offset.top || 0); + const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "column-reverse") { + arrivedState.top = bottom; + arrivedState.bottom = top; + } else { + arrivedState.top = top; + arrivedState.bottom = bottom; + } + internalY.value = scrollTop; + }; + const onScrollHandler = (e) => { + var _a; + if (!window) + return; + const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target; + setArrivedState(eventTarget); + isScrolling.value = true; + onScrollEndDebounced(e); + onScroll(e); + }; + useEventListener( + element, + "scroll", + throttle ? shared.useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, + eventListenerOptions + ); + shared.tryOnMounted(() => { + try { + const _element = shared.toValue(element); + if (!_element) + return; + setArrivedState(_element); + } catch (e) { + onError(e); + } + }); + useEventListener( + element, + "scrollend", + onScrollEnd, + eventListenerOptions + ); return { x, y, isScrolling, arrivedState, - directions - }; -} - -var __defProp$7 = Object.defineProperty; -var __defProps$2 = Object.defineProperties; -var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; -var __hasOwnProp$8 = Object.prototype.hasOwnProperty; -var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$7 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$8.call(b, prop)) - __defNormalProp$7(a, prop, b[prop]); - if (__getOwnPropSymbols$8) - for (var prop of __getOwnPropSymbols$8(b)) { - if (__propIsEnum$8.call(b, prop)) - __defNormalProp$7(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b)); -function useInfiniteScroll(element, onLoadMore, options = {}) { - var _a, _b; - const direction = (_a = options.direction) != null ? _a : "bottom"; - const state = vueDemi.reactive(useScroll(element, __spreadProps$2(__spreadValues$7({}, options), { - offset: __spreadValues$7({ - [direction]: (_b = options.distance) != null ? _b : 0 - }, options.offset) - }))); - vueDemi.watch(() => state.arrivedState[direction], async (v) => { - var _a2, _b2; - if (v) { - const elem = vueDemi.unref(element); - const previous = { - height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0, - width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0 - }; - await onLoadMore(state); - if (options.preserveScrollPosition && elem) { - vueDemi.nextTick(() => { - elem.scrollTo({ - top: elem.scrollHeight - previous.height, - left: elem.scrollWidth - previous.width - }); - }); - } + directions, + measure() { + const _element = shared.toValue(element); + if (window && _element) + setArrivedState(_element); } - }); + }; } -function useIntersectionObserver(target, callback, options = {}) { +function useInfiniteScroll(element, onLoadMore, options = {}) { + var _a; const { - root, - rootMargin = "0px", - threshold = 0.1, - window = defaultWindow + direction = "bottom", + interval = 100, + canLoadMore = () => true } = options; - const isSupported = window && "IntersectionObserver" in window; - let cleanup = shared.noop; - const stopWatch = isSupported ? vueDemi.watch(() => ({ - el: unrefElement(target), - root: unrefElement(root) - }), ({ el, root: root2 }) => { - cleanup(); - if (!el) + const state = vueDemi.reactive(useScroll( + element, + { + ...options, + offset: { + [direction]: (_a = options.distance) != null ? _a : 0, + ...options.offset + } + } + )); + const promise = vueDemi.ref(); + const isLoading = vueDemi.computed(() => !!promise.value); + const observedElement = vueDemi.computed(() => { + return resolveElement(shared.toValue(element)); + }); + const isElementVisible = useElementVisibility(observedElement); + function checkAndLoad() { + state.measure(); + if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value)) return; - const observer = new IntersectionObserver(callback, { - root: root2, - rootMargin, - threshold - }); - observer.observe(el); - cleanup = () => { - observer.disconnect(); - cleanup = shared.noop; - }; - }, { immediate: true, flush: "post" }) : shared.noop; - const stop = () => { - cleanup(); - stopWatch(); - }; - shared.tryOnScopeDispose(stop); + const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value; + const isNarrower = direction === "bottom" || direction === "top" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth; + if (state.arrivedState[direction] || isNarrower) { + if (!promise.value) { + promise.value = Promise.all([ + onLoadMore(state), + new Promise((resolve) => setTimeout(resolve, interval)) + ]).finally(() => { + promise.value = null; + vueDemi.nextTick(() => checkAndLoad()); + }); + } + } + } + const stop = vueDemi.watch( + () => [state.arrivedState[direction], isElementVisible.value], + checkAndLoad, + { immediate: true } + ); + shared.tryOnUnmounted(stop); return { - isSupported, - stop + isLoading, + reset() { + vueDemi.nextTick(() => checkAndLoad()); + } }; } @@ -112204,13 +106030,16 @@ function useMagicKeys(options = {}) { passive = true, onEventFired = shared.noop } = options; - const current = vueDemi.reactive(new Set()); - const obj = { toJSON() { - return {}; - }, current }; + const current = vueDemi.reactive(/* @__PURE__ */ new Set()); + const obj = { + toJSON() { + return {}; + }, + current + }; const refs = useReactive ? vueDemi.reactive(obj) : obj; - const metaDeps = new Set(); - const usedKeys = new Set(); + const metaDeps = /* @__PURE__ */ new Set(); + const usedKeys = /* @__PURE__ */ new Set(); function setRefs(key, value) { if (key in refs) { if (useReactive) @@ -112220,6 +106049,7 @@ function useMagicKeys(options = {}) { } } function reset() { + current.clear(); for (const key of usedKeys) setRefs(key, false); } @@ -112228,11 +106058,11 @@ function useMagicKeys(options = {}) { const key = (_a = e.key) == null ? void 0 : _a.toLowerCase(); const code = (_b = e.code) == null ? void 0 : _b.toLowerCase(); const values = [code, key].filter(Boolean); - if (code) { + if (key) { if (value) - current.add(e.code); + current.add(key); else - current.delete(e.code); + current.delete(key); } for (const key2 of values) { usedKeys.add(key2); @@ -112248,59 +106078,44 @@ function useMagicKeys(options = {}) { [...current, ...values].forEach((key2) => metaDeps.add(key2)); } } - if (target) { - useEventListener(target, "keydown", (e) => { - updateRefs(e, true); - return onEventFired(e); - }, { passive }); - useEventListener(target, "keyup", (e) => { - updateRefs(e, false); - return onEventFired(e); - }, { passive }); - useEventListener("blur", reset, { passive: true }); - useEventListener("focus", reset, { passive: true }); - } - const proxy = new Proxy(refs, { - get(target2, prop, rec) { - if (typeof prop !== "string") - return Reflect.get(target2, prop, rec); - prop = prop.toLowerCase(); - if (prop in aliasMap) - prop = aliasMap[prop]; - if (!(prop in refs)) { - if (/[+_-]/.test(prop)) { - const keys = prop.split(/[+_-]/g).map((i) => i.trim()); - refs[prop] = vueDemi.computed(() => keys.every((key) => vueDemi.unref(proxy[key]))); - } else { - refs[prop] = vueDemi.ref(false); + useEventListener(target, "keydown", (e) => { + updateRefs(e, true); + return onEventFired(e); + }, { passive }); + useEventListener(target, "keyup", (e) => { + updateRefs(e, false); + return onEventFired(e); + }, { passive }); + useEventListener("blur", reset, { passive: true }); + useEventListener("focus", reset, { passive: true }); + const proxy = new Proxy( + refs, + { + get(target2, prop, rec) { + if (typeof prop !== "string") + return Reflect.get(target2, prop, rec); + prop = prop.toLowerCase(); + if (prop in aliasMap) + prop = aliasMap[prop]; + if (!(prop in refs)) { + if (/[+_-]/.test(prop)) { + const keys = prop.split(/[+_-]/g).map((i) => i.trim()); + refs[prop] = vueDemi.computed(() => keys.every((key) => shared.toValue(proxy[key]))); + } else { + refs[prop] = vueDemi.ref(false); + } } + const r = Reflect.get(target2, prop, rec); + return useReactive ? shared.toValue(r) : r; } - const r = Reflect.get(target2, prop, rec); - return useReactive ? vueDemi.unref(r) : r; } - }); + ); return proxy; } -var __defProp$6 = Object.defineProperty; -var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols; -var __hasOwnProp$7 = Object.prototype.hasOwnProperty; -var __propIsEnum$7 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$6 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$7.call(b, prop)) - __defNormalProp$6(a, prop, b[prop]); - if (__getOwnPropSymbols$7) - for (var prop of __getOwnPropSymbols$7(b)) { - if (__propIsEnum$7.call(b, prop)) - __defNormalProp$6(a, prop, b[prop]); - } - return a; -}; function usingElRef(source, cb) { - if (vueDemi.unref(source)) - cb(vueDemi.unref(source)); + if (shared.toValue(source)) + cb(shared.toValue(source)); } function timeRangeToArray(timeRanges) { let ranges = []; @@ -112316,7 +106131,11 @@ const defaultOptions = { tracks: [] }; function useMediaControls(target, options = {}) { - options = __spreadValues$6(__spreadValues$6({}, defaultOptions), options); + target = shared.toRef(target); + options = { + ...defaultOptions, + ...options + }; const { document = defaultDocument } = options; @@ -112339,7 +106158,7 @@ function useMediaControls(target, options = {}) { const disableTrack = (track) => { usingElRef(target, (el) => { if (track) { - const id = shared.isNumber(track) ? track : track.id; + const id = typeof track === "number" ? track : track.id; el.textTracks[id].mode = "disabled"; } else { for (let i = 0; i < el.textTracks.length; ++i) @@ -112350,7 +106169,7 @@ function useMediaControls(target, options = {}) { }; const enableTrack = (track, disableTracks = true) => { usingElRef(target, (el) => { - const id = shared.isNumber(track) ? track : track.id; + const id = typeof track === "number" ? track : track.id; if (disableTracks) disableTrack(); el.textTracks[id].mode = "showing"; @@ -112373,14 +106192,14 @@ function useMediaControls(target, options = {}) { vueDemi.watchEffect(() => { if (!document) return; - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; - const src = vueDemi.unref(options.src); + const src = shared.toValue(options.src); let sources = []; if (!src) return; - if (shared.isString(src)) + if (typeof src === "string") sources = [{ src }]; else if (Array.isArray(src)) sources = src; @@ -112400,34 +106219,34 @@ function useMediaControls(target, options = {}) { el.load(); }); shared.tryOnScopeDispose(() => { - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; el.querySelectorAll("source").forEach((e) => e.removeEventListener("error", sourceErrorEvent.trigger)); }); - vueDemi.watch(volume, (vol) => { - const el = vueDemi.unref(target); + vueDemi.watch([target, volume], () => { + const el = shared.toValue(target); if (!el) return; - el.volume = vol; + el.volume = volume.value; }); - vueDemi.watch(muted, (mute) => { - const el = vueDemi.unref(target); + vueDemi.watch([target, muted], () => { + const el = shared.toValue(target); if (!el) return; - el.muted = mute; + el.muted = muted.value; }); - vueDemi.watch(rate, (rate2) => { - const el = vueDemi.unref(target); + vueDemi.watch([target, rate], () => { + const el = shared.toValue(target); if (!el) return; - el.playbackRate = rate2; + el.playbackRate = rate.value; }); vueDemi.watchEffect(() => { if (!document) return; - const textTracks = vueDemi.unref(options.tracks); - const el = vueDemi.unref(target); + const textTracks = shared.toValue(options.tracks); + const el = shared.toValue(target); if (!textTracks || !textTracks.length || !el) return; el.querySelectorAll("track").forEach((e) => e.remove()); @@ -112444,25 +106263,36 @@ function useMediaControls(target, options = {}) { }); }); const { ignoreUpdates: ignoreCurrentTimeUpdates } = shared.watchIgnorable(currentTime, (time) => { - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; el.currentTime = time; }); const { ignoreUpdates: ignorePlayingUpdates } = shared.watchIgnorable(playing, (isPlaying) => { - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; - isPlaying ? el.play() : el.pause(); + if (isPlaying) + el.play(); + else + el.pause(); }); - useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = vueDemi.unref(target).currentTime)); - useEventListener(target, "durationchange", () => duration.value = vueDemi.unref(target).duration); - useEventListener(target, "progress", () => buffered.value = timeRangeToArray(vueDemi.unref(target).buffered)); + useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = shared.toValue(target).currentTime)); + useEventListener(target, "durationchange", () => duration.value = shared.toValue(target).duration); + useEventListener(target, "progress", () => buffered.value = timeRangeToArray(shared.toValue(target).buffered)); useEventListener(target, "seeking", () => seeking.value = true); useEventListener(target, "seeked", () => seeking.value = false); - useEventListener(target, "waiting", () => waiting.value = true); - useEventListener(target, "playing", () => waiting.value = false); - useEventListener(target, "ratechange", () => rate.value = vueDemi.unref(target).playbackRate); + useEventListener(target, ["waiting", "loadstart"], () => { + waiting.value = true; + ignorePlayingUpdates(() => playing.value = false); + }); + useEventListener(target, "loadeddata", () => waiting.value = false); + useEventListener(target, "playing", () => { + waiting.value = false; + ended.value = false; + ignorePlayingUpdates(() => playing.value = true); + }); + useEventListener(target, "ratechange", () => rate.value = shared.toValue(target).playbackRate); useEventListener(target, "stalled", () => stalled.value = true); useEventListener(target, "ended", () => ended.value = true); useEventListener(target, "pause", () => ignorePlayingUpdates(() => playing.value = false)); @@ -112470,7 +106300,7 @@ function useMediaControls(target, options = {}) { useEventListener(target, "enterpictureinpicture", () => isPictureInPicture.value = true); useEventListener(target, "leavepictureinpicture", () => isPictureInPicture.value = false); useEventListener(target, "volumechange", () => { - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; volume.value = el.volume; @@ -112478,7 +106308,7 @@ function useMediaControls(target, options = {}) { }); const listeners = []; const stop = vueDemi.watch([target], () => { - const el = vueDemi.unref(target); + const el = shared.toValue(target); if (!el) return; stop(); @@ -112497,25 +106327,29 @@ function useMediaControls(target, options = {}) { buffered, playing, rate, + // Volume volume, muted, + // Tracks tracks, selectedTrack, enableTrack, disableTrack, + // Picture in Picture supportsPictureInPicture, togglePictureInPicture, isPictureInPicture, + // Events onSourceError: sourceErrorEvent.on }; } -const getMapVue2Compat = () => { - const data = vueDemi.reactive({}); +function getMapVue2Compat() { + const data = vueDemi.shallowReactive({}); return { get: (key) => data[key], set: (key, value) => vueDemi.set(data, key, value), - has: (key) => Object.prototype.hasOwnProperty.call(data, key), + has: (key) => shared.hasOwn(data, key), delete: (key) => vueDemi.del(data, key), clear: () => { Object.keys(data).forEach((key) => { @@ -112523,14 +106357,14 @@ const getMapVue2Compat = () => { }); } }; -}; +} function useMemoize(resolver, options) { const initCache = () => { if (options == null ? void 0 : options.cache) - return vueDemi.reactive(options.cache); + return vueDemi.shallowReactive(options.cache); if (vueDemi.isVue2) return getMapVue2Compat(); - return vueDemi.reactive(new Map()); + return vueDemi.shallowReactive(/* @__PURE__ */ new Map()); }; const cache = initCache(); const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args); @@ -112561,8 +106395,8 @@ function useMemoize(resolver, options) { function useMemory(options = {}) { const memory = vueDemi.ref(); - const isSupported = typeof performance !== "undefined" && "memory" in performance; - if (isSupported) { + const isSupported = useSupported(() => typeof performance !== "undefined" && "memory" in performance); + if (isSupported.value) { const { interval = 1e3 } = options; shared.useIntervalFn(() => { memory.value = performance.memory; @@ -112571,14 +106405,12 @@ function useMemory(options = {}) { return { isSupported, memory }; } -function useMounted() { - const isMounted = vueDemi.ref(false); - vueDemi.onMounted(() => { - isMounted.value = true; - }); - return isMounted; -} - +const UseMouseBuiltinExtractors = { + page: (event) => [event.pageX, event.pageY], + client: (event) => [event.clientX, event.clientY], + screen: (event) => [event.screenX, event.screenY], + movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY] +}; function useMouse(options = {}) { const { type = "page", @@ -112586,53 +106418,58 @@ function useMouse(options = {}) { resetOnTouchEnds = false, initialValue = { x: 0, y: 0 }, window = defaultWindow, + target = window, + scroll = true, eventFilter } = options; + let _prevMouseEvent = null; const x = vueDemi.ref(initialValue.x); const y = vueDemi.ref(initialValue.y); const sourceType = vueDemi.ref(null); + const extractor = typeof type === "function" ? type : UseMouseBuiltinExtractors[type]; const mouseHandler = (event) => { - if (type === "page") { - x.value = event.pageX; - y.value = event.pageY; - } else if (type === "client") { - x.value = event.clientX; - y.value = event.clientY; + const result = extractor(event); + _prevMouseEvent = event; + if (result) { + [x.value, y.value] = result; + sourceType.value = "mouse"; } - sourceType.value = "mouse"; - }; - const reset = () => { - x.value = initialValue.x; - y.value = initialValue.y; }; const touchHandler = (event) => { if (event.touches.length > 0) { - const touch2 = event.touches[0]; - if (type === "page") { - x.value = touch2.pageX; - y.value = touch2.pageY; - } else if (type === "client") { - x.value = touch2.clientX; - y.value = touch2.clientY; + const result = extractor(event.touches[0]); + if (result) { + [x.value, y.value] = result; + sourceType.value = "touch"; } - sourceType.value = "touch"; } }; - const mouseHandlerWrapper = (event) => { - return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {}); + const scrollHandler = () => { + if (!_prevMouseEvent || !window) + return; + const pos = extractor(_prevMouseEvent); + if (_prevMouseEvent instanceof MouseEvent && pos) { + x.value = pos[0] + window.scrollX; + y.value = pos[1] + window.scrollY; + } }; - const touchHandlerWrapper = (event) => { - return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {}); + const reset = () => { + x.value = initialValue.x; + y.value = initialValue.y; }; - if (window) { - useEventListener(window, "mousemove", mouseHandlerWrapper, { passive: true }); - useEventListener(window, "dragover", mouseHandlerWrapper, { passive: true }); - if (touch) { - useEventListener(window, "touchstart", touchHandlerWrapper, { passive: true }); - useEventListener(window, "touchmove", touchHandlerWrapper, { passive: true }); + const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event); + const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event); + const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler(); + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["mousemove", "dragover"], mouseHandlerWrapper, listenerOptions); + if (touch && type !== "movement") { + useEventListener(target, ["touchstart", "touchmove"], touchHandlerWrapper, listenerOptions); if (resetOnTouchEnds) - useEventListener(window, "touchend", reset, { passive: true }); + useEventListener(target, "touchend", reset, listenerOptions); } + if (scroll && type === "page") + useEventListener(window, "scroll", scrollHandlerWrapper, { passive: true }); } return { x, @@ -112646,6 +106483,7 @@ function useMouseInElement(target, options = {}) { handleOutside = true, window = defaultWindow } = options; + const type = options.type || "page"; const { x, y, sourceType } = useMouse(options); const targetRef = vueDemi.ref(target != null ? target : window == null ? void 0 : window.document.body); const elementX = vueDemi.ref(0); @@ -112658,28 +106496,35 @@ function useMouseInElement(target, options = {}) { let stop = () => { }; if (window) { - stop = vueDemi.watch([targetRef, x, y], () => { - const el = unrefElement(targetRef); - if (!el) - return; - const { - left, - top, - width, - height - } = el.getBoundingClientRect(); - elementPositionX.value = left + window.pageXOffset; - elementPositionY.value = top + window.pageYOffset; - elementHeight.value = height; - elementWidth.value = width; - const elX = x.value - elementPositionX.value; - const elY = y.value - elementPositionY.value; - isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; - if (handleOutside || !isOutside.value) { - elementX.value = elX; - elementY.value = elY; - } - }, { immediate: true }); + stop = vueDemi.watch( + [targetRef, x, y], + () => { + const el = unrefElement(targetRef); + if (!el || !(el instanceof Element)) + return; + const { + left, + top, + width, + height + } = el.getBoundingClientRect(); + elementPositionX.value = left + (type === "page" ? window.pageXOffset : 0); + elementPositionY.value = top + (type === "page" ? window.pageYOffset : 0); + elementHeight.value = height; + elementWidth.value = width; + const elX = x.value - elementPositionX.value; + const elY = y.value - elementPositionY.value; + isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; + if (handleOutside || !isOutside.value) { + elementX.value = elX; + elementY.value = elY; + } + }, + { immediate: true } + ); + useEventListener(document, "mouseleave", () => { + isOutside.value = true; + }); } return { x, @@ -112700,6 +106545,7 @@ function useMousePressed(options = {}) { const { touch = true, drag = true, + capture = false, initialValue = false, window = defaultWindow } = options; @@ -112720,18 +106566,18 @@ function useMousePressed(options = {}) { sourceType.value = null; }; const target = vueDemi.computed(() => unrefElement(options.target) || window); - useEventListener(target, "mousedown", onPressed("mouse"), { passive: true }); - useEventListener(window, "mouseleave", onReleased, { passive: true }); - useEventListener(window, "mouseup", onReleased, { passive: true }); + useEventListener(target, "mousedown", onPressed("mouse"), { passive: true, capture }); + useEventListener(window, "mouseleave", onReleased, { passive: true, capture }); + useEventListener(window, "mouseup", onReleased, { passive: true, capture }); if (drag) { - useEventListener(target, "dragstart", onPressed("mouse"), { passive: true }); - useEventListener(window, "drop", onReleased, { passive: true }); - useEventListener(window, "dragend", onReleased, { passive: true }); + useEventListener(target, "dragstart", onPressed("mouse"), { passive: true, capture }); + useEventListener(window, "drop", onReleased, { passive: true, capture }); + useEventListener(window, "dragend", onReleased, { passive: true, capture }); } if (touch) { - useEventListener(target, "touchstart", onPressed("touch"), { passive: true }); - useEventListener(window, "touchend", onReleased, { passive: true }); - useEventListener(window, "touchcancel", onReleased, { passive: true }); + useEventListener(target, "touchstart", onPressed("touch"), { passive: true, capture }); + useEventListener(window, "touchend", onReleased, { passive: true, capture }); + useEventListener(window, "touchcancel", onReleased, { passive: true, capture }); } return { pressed, @@ -112739,53 +106585,10 @@ function useMousePressed(options = {}) { }; } -var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols; -var __hasOwnProp$6 = Object.prototype.hasOwnProperty; -var __propIsEnum$6 = Object.prototype.propertyIsEnumerable; -var __objRest$1 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$6) - for (var prop of __getOwnPropSymbols$6(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -function useMutationObserver(target, callback, options = {}) { - const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, ["window"]); - let observer; - const isSupported = window && "MutationObserver" in window; - const cleanup = () => { - if (observer) { - observer.disconnect(); - observer = void 0; - } - }; - const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => { - cleanup(); - if (isSupported && window && el) { - observer = new MutationObserver(callback); - observer.observe(el, mutationOptions); - } - }, { immediate: true }); - const stop = () => { - cleanup(); - stopWatch(); - }; - shared.tryOnScopeDispose(stop); - return { - isSupported, - stop - }; -} - -const useNavigatorLanguage = (options = {}) => { +function useNavigatorLanguage(options = {}) { const { window = defaultWindow } = options; const navigator = window == null ? void 0 : window.navigator; - const isSupported = Boolean(navigator && "language" in navigator); + const isSupported = useSupported(() => navigator && "language" in navigator); const language = vueDemi.ref(navigator == null ? void 0 : navigator.language); useEventListener(window, "languagechange", () => { if (navigator) @@ -112795,12 +106598,12 @@ const useNavigatorLanguage = (options = {}) => { isSupported, language }; -}; +} function useNetwork(options = {}) { const { window = defaultWindow } = options; const navigator = window == null ? void 0 : window.navigator; - const isSupported = Boolean(navigator && "connection" in navigator); + const isSupported = useSupported(() => navigator && "connection" in navigator); const isOnline = vueDemi.ref(true); const saveData = vueDemi.ref(false); const offlineAt = vueDemi.ref(void 0); @@ -112810,7 +106613,7 @@ function useNetwork(options = {}) { const rtt = vueDemi.ref(void 0); const effectiveType = vueDemi.ref(void 0); const type = vueDemi.ref("unknown"); - const connection = isSupported && navigator.connection; + const connection = isSupported.value && navigator.connection; function updateNetworkInformation() { if (!navigator) return; @@ -112840,47 +106643,32 @@ function useNetwork(options = {}) { useEventListener(connection, "change", updateNetworkInformation, false); updateNetworkInformation(); return { - isSupported, - isOnline, - saveData, - offlineAt, - onlineAt, - downlink, - downlinkMax, - effectiveType, - rtt, - type - }; -} - -var __defProp$5 = Object.defineProperty; -var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols; -var __hasOwnProp$5 = Object.prototype.hasOwnProperty; -var __propIsEnum$5 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$5 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$5.call(b, prop)) - __defNormalProp$5(a, prop, b[prop]); - if (__getOwnPropSymbols$5) - for (var prop of __getOwnPropSymbols$5(b)) { - if (__propIsEnum$5.call(b, prop)) - __defNormalProp$5(a, prop, b[prop]); - } - return a; -}; + isSupported: vueDemi.readonly(isSupported), + isOnline: vueDemi.readonly(isOnline), + saveData: vueDemi.readonly(saveData), + offlineAt: vueDemi.readonly(offlineAt), + onlineAt: vueDemi.readonly(onlineAt), + downlink: vueDemi.readonly(downlink), + downlinkMax: vueDemi.readonly(downlinkMax), + effectiveType: vueDemi.readonly(effectiveType), + rtt: vueDemi.readonly(rtt), + type: vueDemi.readonly(type) + }; +} + function useNow(options = {}) { const { controls: exposeControls = false, interval = "requestAnimationFrame" } = options; - const now = vueDemi.ref(new Date()); - const update = () => now.value = new Date(); + const now = vueDemi.ref(/* @__PURE__ */ new Date()); + const update = () => now.value = /* @__PURE__ */ new Date(); const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : shared.useIntervalFn(update, interval, { immediate: true }); if (exposeControls) { - return __spreadValues$5({ - now - }, controls); + return { + now, + ...controls + }; } else { return now; } @@ -112893,33 +106681,60 @@ function useObjectUrl(object) { URL.revokeObjectURL(url.value); url.value = void 0; }; - vueDemi.watch(() => vueDemi.unref(object), (newObject) => { - release(); - if (newObject) - url.value = URL.createObjectURL(newObject); - }, { immediate: true }); + vueDemi.watch( + () => shared.toValue(object), + (newObject) => { + release(); + if (newObject) + url.value = URL.createObjectURL(newObject); + }, + { immediate: true } + ); shared.tryOnScopeDispose(release); return vueDemi.readonly(url); } +function useClamp(value, min, max) { + if (typeof value === "function" || vueDemi.isReadonly(value)) + return vueDemi.computed(() => shared.clamp(shared.toValue(value), shared.toValue(min), shared.toValue(max))); + const _value = vueDemi.ref(value); + return vueDemi.computed({ + get() { + return _value.value = shared.clamp(_value.value, shared.toValue(min), shared.toValue(max)); + }, + set(value2) { + _value.value = shared.clamp(value2, shared.toValue(min), shared.toValue(max)); + } + }); +} + function useOffsetPagination(options) { const { - total = Infinity, + total = Number.POSITIVE_INFINITY, pageSize = 10, page = 1, onPageChange = shared.noop, onPageSizeChange = shared.noop, onPageCountChange = shared.noop } = options; - const currentPageSize = useClamp(pageSize, 1, Infinity); - const pageCount = vueDemi.computed(() => Math.ceil(vueDemi.unref(total) / vueDemi.unref(currentPageSize))); + const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY); + const pageCount = vueDemi.computed(() => Math.max( + 1, + Math.ceil(shared.toValue(total) / shared.toValue(currentPageSize)) + )); const currentPage = useClamp(page, 1, pageCount); const isFirstPage = vueDemi.computed(() => currentPage.value === 1); const isLastPage = vueDemi.computed(() => currentPage.value === pageCount.value); - if (vueDemi.isRef(page)) - shared.syncRef(page, currentPage); - if (vueDemi.isRef(pageSize)) - shared.syncRef(pageSize, currentPageSize); + if (vueDemi.isRef(page)) { + shared.syncRef(page, currentPage, { + direction: vueDemi.isReadonly(page) ? "ltr" : "both" + }); + } + if (vueDemi.isRef(pageSize)) { + shared.syncRef(pageSize, currentPageSize, { + direction: vueDemi.isReadonly(pageSize) ? "ltr" : "both" + }); + } function prev() { currentPage.value--; } @@ -112970,6 +106785,38 @@ function usePageLeave(options = {}) { return isLeft; } +function useScreenOrientation(options = {}) { + const { + window = defaultWindow + } = options; + const isSupported = useSupported(() => window && "screen" in window && "orientation" in window.screen); + const screenOrientation = isSupported.value ? window.screen.orientation : {}; + const orientation = vueDemi.ref(screenOrientation.type); + const angle = vueDemi.ref(screenOrientation.angle || 0); + if (isSupported.value) { + useEventListener(window, "orientationchange", () => { + orientation.value = screenOrientation.type; + angle.value = screenOrientation.angle; + }); + } + const lockOrientation = (type) => { + if (isSupported.value && typeof screenOrientation.lock === "function") + return screenOrientation.lock(type); + return Promise.reject(new Error("Not supported")); + }; + const unlockOrientation = () => { + if (isSupported.value && typeof screenOrientation.unlock === "function") + screenOrientation.unlock(); + }; + return { + isSupported, + orientation, + angle, + lockOrientation, + unlockOrientation + }; +} + function useParallax(target, options = {}) { const { deviceOrientationTiltAdjust = (i) => i, @@ -112979,6 +106826,7 @@ function useParallax(target, options = {}) { window = defaultWindow } = options; const orientation = vueDemi.reactive(useDeviceOrientation({ window })); + const screenOrientation = vueDemi.reactive(useScreenOrientation({ window })); const { elementX: x, elementY: y, @@ -112986,13 +106834,30 @@ function useParallax(target, options = {}) { elementHeight: height } = useMouseInElement(target, { handleOutside: false, window }); const source = vueDemi.computed(() => { - if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) + if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) { return "deviceOrientation"; + } return "mouse"; }); const roll = vueDemi.computed(() => { if (source.value === "deviceOrientation") { - const value = -orientation.beta / 90; + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.gamma / 90; + break; + case "landscape-secondary": + value = -orientation.gamma / 90; + break; + case "portrait-primary": + value = -orientation.beta / 90; + break; + case "portrait-secondary": + value = orientation.beta / 90; + break; + default: + value = -orientation.beta / 90; + } return deviceOrientationRollAdjust(value); } else { const value = -(y.value - height.value / 2) / height.value; @@ -113001,7 +106866,23 @@ function useParallax(target, options = {}) { }); const tilt = vueDemi.computed(() => { if (source.value === "deviceOrientation") { - const value = orientation.gamma / 90; + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.beta / 90; + break; + case "landscape-secondary": + value = -orientation.beta / 90; + break; + case "portrait-primary": + value = orientation.gamma / 90; + break; + case "portrait-secondary": + value = -orientation.gamma / 90; + break; + default: + value = orientation.gamma / 90; + } return deviceOrientationTiltAdjust(value); } else { const value = (x.value - width.value / 2) / width.value; @@ -113011,25 +106892,46 @@ function useParallax(target, options = {}) { return { roll, tilt, source }; } -var __defProp$4 = Object.defineProperty; -var __defProps$1 = Object.defineProperties; -var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols; -var __hasOwnProp$4 = Object.prototype.hasOwnProperty; -var __propIsEnum$4 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$4 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$4.call(b, prop)) - __defNormalProp$4(a, prop, b[prop]); - if (__getOwnPropSymbols$4) - for (var prop of __getOwnPropSymbols$4(b)) { - if (__propIsEnum$4.call(b, prop)) - __defNormalProp$4(a, prop, b[prop]); +function useParentElement(element = useCurrentElement()) { + const parentElement = vueDemi.shallowRef(); + const update = () => { + const el = unrefElement(element); + if (el) + parentElement.value = el.parentElement; + }; + shared.tryOnMounted(update); + vueDemi.watch(() => shared.toValue(element), update); + return parentElement; +} + +function usePerformanceObserver(options, callback) { + const { + window = defaultWindow, + immediate = true, + ...performanceOptions + } = options; + const isSupported = useSupported(() => window && "PerformanceObserver" in window); + let observer; + const stop = () => { + observer == null ? void 0 : observer.disconnect(); + }; + const start = () => { + if (isSupported.value) { + stop(); + observer = new PerformanceObserver(callback); + observer.observe(performanceOptions); } - return a; -}; -var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b)); + }; + shared.tryOnScopeDispose(stop); + if (immediate) + start(); + return { + isSupported, + start, + stop + }; +} + const defaultState = { x: 0, y: 0, @@ -113057,122 +106959,76 @@ function usePointer(options = {}) { state.value = shared.objectPick(event, keys, false); }; if (target) { - useEventListener(target, "pointerdown", handler, { passive: true }); - useEventListener(target, "pointermove", handler, { passive: true }); - useEventListener(target, "pointerleave", () => isInside.value = false, { passive: true }); + const listenerOptions = { passive: true }; + useEventListener(target, ["pointerdown", "pointermove", "pointerup"], handler, listenerOptions); + useEventListener(target, "pointerleave", () => isInside.value = false, listenerOptions); } - return __spreadProps$1(__spreadValues$4({}, shared.toRefs(state)), { - isInside - }); -} - -exports.SwipeDirection = void 0; -(function(SwipeDirection2) { - SwipeDirection2["UP"] = "UP"; - SwipeDirection2["RIGHT"] = "RIGHT"; - SwipeDirection2["DOWN"] = "DOWN"; - SwipeDirection2["LEFT"] = "LEFT"; - SwipeDirection2["NONE"] = "NONE"; -})(exports.SwipeDirection || (exports.SwipeDirection = {})); -function useSwipe(target, options = {}) { - const { - threshold = 50, - onSwipe, - onSwipeEnd, - onSwipeStart, - passive = true, - window = defaultWindow - } = options; - const coordsStart = vueDemi.reactive({ x: 0, y: 0 }); - const coordsEnd = vueDemi.reactive({ x: 0, y: 0 }); - const diffX = vueDemi.computed(() => coordsStart.x - coordsEnd.x); - const diffY = vueDemi.computed(() => coordsStart.y - coordsEnd.y); - const { max, abs } = Math; - const isThresholdExceeded = vueDemi.computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); - const isSwiping = vueDemi.ref(false); - const direction = vueDemi.computed(() => { - if (!isThresholdExceeded.value) - return exports.SwipeDirection.NONE; - if (abs(diffX.value) > abs(diffY.value)) { - return diffX.value > 0 ? exports.SwipeDirection.LEFT : exports.SwipeDirection.RIGHT; - } else { - return diffY.value > 0 ? exports.SwipeDirection.UP : exports.SwipeDirection.DOWN; - } - }); - const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; - const updateCoordsStart = (x, y) => { - coordsStart.x = x; - coordsStart.y = y; - }; - const updateCoordsEnd = (x, y) => { - coordsEnd.x = x; - coordsEnd.y = y; - }; - let listenerOptions; - const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document); - if (!passive) - listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }; - else - listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }; - const onTouchEnd = (e) => { - if (isSwiping.value) - onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); - isSwiping.value = false; - }; - const stops = [ - useEventListener(target, "touchstart", (e) => { - if (listenerOptions.capture && !listenerOptions.passive) - e.preventDefault(); - const [x, y] = getTouchEventCoords(e); - updateCoordsStart(x, y); - updateCoordsEnd(x, y); - onSwipeStart == null ? void 0 : onSwipeStart(e); - }, listenerOptions), - useEventListener(target, "touchmove", (e) => { - const [x, y] = getTouchEventCoords(e); - updateCoordsEnd(x, y); - if (!isSwiping.value && isThresholdExceeded.value) - isSwiping.value = true; - if (isSwiping.value) - onSwipe == null ? void 0 : onSwipe(e); - }, listenerOptions), - useEventListener(target, "touchend", onTouchEnd, listenerOptions), - useEventListener(target, "touchcancel", onTouchEnd, listenerOptions) - ]; - const stop = () => stops.forEach((s) => s()); return { - isPassiveEventSupported, - isSwiping, - direction, - coordsStart, - coordsEnd, - lengthX: diffX, - lengthY: diffY, - stop + ...shared.toRefs(state), + isInside }; } -function checkPassiveEventSupport(document) { - if (!document) - return false; - let supportsPassive = false; - const optionsBlock = { - get passive() { - supportsPassive = true; + +function usePointerLock(target, options = {}) { + const { document = defaultDocument } = options; + const isSupported = useSupported(() => document && "pointerLockElement" in document); + const element = vueDemi.ref(); + const triggerElement = vueDemi.ref(); + let targetElement; + if (isSupported.value) { + useEventListener(document, "pointerlockchange", () => { + var _a; + const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + element.value = document.pointerLockElement; + if (!element.value) + targetElement = triggerElement.value = null; + } + }); + useEventListener(document, "pointerlockerror", () => { + var _a; + const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + const action = document.pointerLockElement ? "release" : "acquire"; + throw new Error(`Failed to ${action} pointer lock.`); + } + }); + } + async function lock(e) { + var _a; + if (!isSupported.value) + throw new Error("Pointer Lock API is not supported by your browser."); + triggerElement.value = e instanceof Event ? e.currentTarget : null; + targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e); + if (!targetElement) + throw new Error("Target element undefined."); + targetElement.requestPointerLock(); + return await shared.until(element).toBe(targetElement); + } + async function unlock() { + if (!element.value) return false; - } + document.exitPointerLock(); + await shared.until(element).toBeNull(); + return true; + } + return { + isSupported, + element, + triggerElement, + lock, + unlock }; - document.addEventListener("x", shared.noop, optionsBlock); - document.removeEventListener("x", shared.noop); - return supportsPassive; } function usePointerSwipe(target, options = {}) { - const targetRef = vueDemi.ref(target); + const targetRef = shared.toRef(target); const { threshold = 50, onSwipe, onSwipeEnd, - onSwipeStart + onSwipeStart, + disableTextSelect = false } = options; const posStart = vueDemi.reactive({ x: 0, y: 0 }); const updatePosStart = (x, y) => { @@ -113192,25 +107048,24 @@ function usePointerSwipe(target, options = {}) { const isPointerDown = vueDemi.ref(false); const direction = vueDemi.computed(() => { if (!isThresholdExceeded.value) - return exports.SwipeDirection.NONE; + return "none"; if (abs(distanceX.value) > abs(distanceY.value)) { - return distanceX.value > 0 ? exports.SwipeDirection.LEFT : exports.SwipeDirection.RIGHT; + return distanceX.value > 0 ? "left" : "right"; } else { - return distanceY.value > 0 ? exports.SwipeDirection.UP : exports.SwipeDirection.DOWN; + return distanceY.value > 0 ? "up" : "down"; } }); - const filterEvent = (e) => { - if (options.pointerTypes) - return options.pointerTypes.includes(e.pointerType); - return true; + const eventIsAllowed = (e) => { + var _a, _b, _c; + const isReleasingButton = e.buttons === 0; + const isPrimaryButton = e.buttons === 1; + return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true; }; const stops = [ useEventListener(target, "pointerdown", (e) => { - var _a, _b; - if (!filterEvent(e)) + if (!eventIsAllowed(e)) return; isPointerDown.value = true; - (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none"); const eventTarget = e.target; eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId); const { clientX: x, clientY: y } = e; @@ -113219,7 +107074,7 @@ function usePointerSwipe(target, options = {}) { onSwipeStart == null ? void 0 : onSwipeStart(e); }), useEventListener(target, "pointermove", (e) => { - if (!filterEvent(e)) + if (!eventIsAllowed(e)) return; if (!isPointerDown.value) return; @@ -113231,16 +107086,23 @@ function usePointerSwipe(target, options = {}) { onSwipe == null ? void 0 : onSwipe(e); }), useEventListener(target, "pointerup", (e) => { - var _a, _b; - if (!filterEvent(e)) + if (!eventIsAllowed(e)) return; if (isSwiping.value) onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); isPointerDown.value = false; isSwiping.value = false; - (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "initial"); }) ]; + shared.tryOnMounted(() => { + var _a, _b, _c, _d, _e, _f, _g, _h; + (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none"); + if (disableTextSelect) { + (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty("-webkit-user-select", "none"); + (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty("-ms-user-select", "none"); + (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty("user-select", "none"); + } + }); const stop = () => stops.forEach((s) => s()); return { isSwiping: vueDemi.readonly(isSwiping), @@ -113265,6 +107127,21 @@ function usePreferredColorScheme(options) { }); } +function usePreferredContrast(options) { + const isMore = useMediaQuery("(prefers-contrast: more)", options); + const isLess = useMediaQuery("(prefers-contrast: less)", options); + const isCustom = useMediaQuery("(prefers-contrast: custom)", options); + return vueDemi.computed(() => { + if (isMore.value) + return "more"; + if (isLess.value) + return "less"; + if (isCustom.value) + return "custom"; + return "no-preference"; + }); +} + function usePreferredLanguages(options = {}) { const { window = defaultWindow } = options; if (!window) @@ -113277,37 +107154,26 @@ function usePreferredLanguages(options = {}) { return value; } -const useScreenOrientation = (options = {}) => { - const { - window = defaultWindow - } = options; - const isSupported = !!(window && "screen" in window && "orientation" in window.screen); - const screenOrientation = isSupported ? window.screen.orientation : {}; - const orientation = vueDemi.ref(screenOrientation.type); - const angle = vueDemi.ref(screenOrientation.angle || 0); - if (isSupported) { - useEventListener(window, "orientationchange", () => { - orientation.value = screenOrientation.type; - angle.value = screenOrientation.angle; - }); - } - const lockOrientation = (type) => { - if (!isSupported) - return Promise.reject(new Error("Not supported")); - return screenOrientation.lock(type); - }; - const unlockOrientation = () => { - if (isSupported) - screenOrientation.unlock(); - }; - return { - isSupported, - orientation, - angle, - lockOrientation, - unlockOrientation - }; -}; +function usePreferredReducedMotion(options) { + const isReduced = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return vueDemi.computed(() => { + if (isReduced.value) + return "reduce"; + return "no-preference"; + }); +} + +function usePrevious(value, initialValue) { + const previous = vueDemi.shallowRef(initialValue); + vueDemi.watch( + shared.toRef(value), + (_, oldValue) => { + previous.value = oldValue; + }, + { flush: "sync" } + ); + return vueDemi.readonly(previous); +} const topVarName = "--vueuse-safe-area-top"; const rightVarName = "--vueuse-safe-area-right"; @@ -113374,12 +107240,12 @@ function useScriptTag(src, onLoaded = shared.noop, options = {}) { return; } let shouldAppend = false; - let el = document.querySelector(`script[src="${src}"]`); + let el = document.querySelector(`script[src="${shared.toValue(src)}"]`); if (!el) { el = document.createElement("script"); el.type = type; el.async = async; - el.src = vueDemi.unref(src); + el.src = shared.toValue(src); if (defer) el.defer = defer; if (crossOrigin) @@ -113416,7 +107282,7 @@ function useScriptTag(src, onLoaded = shared.noop, options = {}) { _promise = null; if (scriptTag.value) scriptTag.value = null; - const el = document.querySelector(`script[src="${src}"]`); + const el = document.querySelector(`script[src="${shared.toValue(src)}"]`); if (el) document.head.removeChild(el); }; @@ -113427,44 +107293,74 @@ function useScriptTag(src, onLoaded = shared.noop, options = {}) { return { scriptTag, load, unload }; } +function checkOverflowScroll(ele) { + const style = window.getComputedStyle(ele); + if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) { + return true; + } else { + const parent = ele.parentNode; + if (!parent || parent.tagName === "BODY") + return false; + return checkOverflowScroll(parent); + } +} function preventDefault(rawEvent) { const e = rawEvent || window.event; + const _target = e.target; + if (checkOverflowScroll(_target)) + return false; if (e.touches.length > 1) return true; if (e.preventDefault) e.preventDefault(); return false; } +const elInitialOverflow = /* @__PURE__ */ new WeakMap(); function useScrollLock(element, initialState = false) { const isLocked = vueDemi.ref(initialState); let stopTouchMoveListener = null; - let initialOverflow; - vueDemi.watch(() => vueDemi.unref(element), (el) => { - if (el) { - const ele = el; - initialOverflow = ele.style.overflow; + let initialOverflow = ""; + vueDemi.watch(shared.toRef(element), (el) => { + const target = resolveElement(shared.toValue(el)); + if (target) { + const ele = target; + if (!elInitialOverflow.get(ele)) + elInitialOverflow.set(ele, ele.style.overflow); + if (ele.style.overflow !== "hidden") + initialOverflow = ele.style.overflow; + if (ele.style.overflow === "hidden") + return isLocked.value = true; if (isLocked.value) - ele.style.overflow = "hidden"; + return ele.style.overflow = "hidden"; } }, { immediate: true }); const lock = () => { - const ele = vueDemi.unref(element); - if (!ele || isLocked.value) + const el = resolveElement(shared.toValue(element)); + if (!el || isLocked.value) return; if (shared.isIOS) { - stopTouchMoveListener = useEventListener(ele, "touchmove", preventDefault, { passive: false }); + stopTouchMoveListener = useEventListener( + el, + "touchmove", + (e) => { + preventDefault(e); + }, + { passive: false } + ); } - ele.style.overflow = "hidden"; + el.style.overflow = "hidden"; isLocked.value = true; }; const unlock = () => { - const ele = vueDemi.unref(element); - if (!ele || !isLocked.value) + const el = resolveElement(shared.toValue(element)); + if (!el || !isLocked.value) return; - shared.isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener()); - ele.style.overflow = initialOverflow; + if (shared.isIOS) + stopTouchMoveListener == null ? void 0 : stopTouchMoveListener(); + el.style.overflow = initialOverflow; + elInitialOverflow.delete(el); isLocked.value = false; }; shared.tryOnScopeDispose(unlock); @@ -113475,8 +107371,7 @@ function useScrollLock(element, initialState = false) { set(v) { if (v) lock(); - else - unlock(); + else unlock(); } }); } @@ -113486,29 +107381,16 @@ function useSessionStorage(key, initialValue, options = {}) { return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options); } -var __defProp$3 = Object.defineProperty; -var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; -var __hasOwnProp$3 = Object.prototype.hasOwnProperty; -var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$3 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$3.call(b, prop)) - __defNormalProp$3(a, prop, b[prop]); - if (__getOwnPropSymbols$3) - for (var prop of __getOwnPropSymbols$3(b)) { - if (__propIsEnum$3.call(b, prop)) - __defNormalProp$3(a, prop, b[prop]); - } - return a; -}; function useShare(shareOptions = {}, options = {}) { const { navigator = defaultNavigator } = options; const _navigator = navigator; - const isSupported = _navigator && "canShare" in _navigator; + const isSupported = useSupported(() => _navigator && "canShare" in _navigator); const share = async (overrideOptions = {}) => { - if (isSupported) { - const data = __spreadValues$3(__spreadValues$3({}, vueDemi.unref(shareOptions)), vueDemi.unref(overrideOptions)); + if (isSupported.value) { + const data = { + ...shared.toValue(shareOptions), + ...shared.toValue(overrideOptions) + }; let granted = true; if (data.files && _navigator.canShare) granted = _navigator.canShare({ files: data.files }); @@ -113522,13 +107404,48 @@ function useShare(shareOptions = {}, options = {}) { }; } +const defaultSortFn = (source, compareFn) => source.sort(compareFn); +const defaultCompare = (a, b) => a - b; +function useSorted(...args) { + var _a, _b, _c, _d; + const [source] = args; + let compareFn = defaultCompare; + let options = {}; + if (args.length === 2) { + if (typeof args[1] === "object") { + options = args[1]; + compareFn = (_a = options.compareFn) != null ? _a : defaultCompare; + } else { + compareFn = (_b = args[1]) != null ? _b : defaultCompare; + } + } else if (args.length > 2) { + compareFn = (_c = args[1]) != null ? _c : defaultCompare; + options = (_d = args[2]) != null ? _d : {}; + } + const { + dirty = false, + sortFn = defaultSortFn + } = options; + if (!dirty) + return vueDemi.computed(() => sortFn([...shared.toValue(source)], compareFn)); + vueDemi.watchEffect(() => { + const result = sortFn(shared.toValue(source), compareFn); + if (vueDemi.isRef(source)) + source.value = result; + else + source.splice(0, source.length, ...result); + }); + return source; +} + function useSpeechRecognition(options = {}) { const { interimResults = true, continuous = true, + maxAlternatives = 1, window = defaultWindow } = options; - const lang = vueDemi.ref(options.lang || "en-US"); + const lang = shared.toRef(options.lang || "en-US"); const isListening = vueDemi.ref(false); const isFinal = vueDemi.ref(false); const result = vueDemi.ref(""); @@ -113543,13 +107460,14 @@ function useSpeechRecognition(options = {}) { isListening.value = false; }; const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition); - const isSupported = Boolean(SpeechRecognition); + const isSupported = useSupported(() => SpeechRecognition); let recognition; - if (isSupported) { + if (isSupported.value) { recognition = new SpeechRecognition(); recognition.continuous = continuous; recognition.interimResults = interimResults; - recognition.lang = vueDemi.unref(lang); + recognition.lang = shared.toValue(lang); + recognition.maxAlternatives = maxAlternatives; recognition.onstart = () => { isFinal.value = false; }; @@ -113558,10 +107476,9 @@ function useSpeechRecognition(options = {}) { recognition.lang = lang2; }); recognition.onresult = (event) => { - const transcript = Array.from(event.results).map((result2) => { - isFinal.value = result2.isFinal; - return result2[0]; - }).map((result2) => result2.transcript).join(""); + const currentResult = event.results[event.resultIndex]; + const { transcript } = currentResult[0]; + isFinal.value = currentResult.isFinal; result.value = transcript; error.value = void 0; }; @@ -113570,7 +107487,7 @@ function useSpeechRecognition(options = {}) { }; recognition.onend = () => { isListening.value = false; - recognition.lang = vueDemi.unref(lang); + recognition.lang = shared.toValue(lang); }; vueDemi.watch(isListening, () => { if (isListening.value) @@ -113596,7 +107513,6 @@ function useSpeechRecognition(options = {}) { } function useSpeechSynthesis(text, options = {}) { - var _a, _b; const { pitch = 1, rate = 1, @@ -113604,24 +107520,20 @@ function useSpeechSynthesis(text, options = {}) { window = defaultWindow } = options; const synth = window && window.speechSynthesis; - const isSupported = Boolean(synth); + const isSupported = useSupported(() => synth); const isPlaying = vueDemi.ref(false); const status = vueDemi.ref("init"); - const voiceInfo = { - lang: ((_a = options.voice) == null ? void 0 : _a.lang) || "default", - name: ((_b = options.voice) == null ? void 0 : _b.name) || "" - }; - const spokenText = vueDemi.ref(text || ""); - const lang = vueDemi.ref(options.lang || "en-US"); + const spokenText = shared.toRef(text || ""); + const lang = shared.toRef(options.lang || "en-US"); const error = vueDemi.shallowRef(void 0); const toggle = (value = !isPlaying.value) => { isPlaying.value = value; }; const bindEventsForUtterance = (utterance2) => { - utterance2.lang = vueDemi.unref(lang); - options.voice && (utterance2.voice = options.voice); - utterance2.pitch = pitch; - utterance2.rate = rate; + utterance2.lang = shared.toValue(lang); + utterance2.voice = shared.toValue(options.voice) || null; + utterance2.pitch = shared.toValue(pitch); + utterance2.rate = shared.toValue(rate); utterance2.volume = volume; utterance2.onstart = () => { isPlaying.value = true; @@ -113642,10 +107554,6 @@ function useSpeechSynthesis(text, options = {}) { utterance2.onerror = (event) => { error.value = event; }; - utterance2.onend = () => { - isPlaying.value = false; - utterance2.lang = vueDemi.unref(lang); - }; }; const utterance = vueDemi.computed(() => { isPlaying.value = false; @@ -113656,14 +107564,24 @@ function useSpeechSynthesis(text, options = {}) { }); const speak = () => { synth.cancel(); - utterance && synth.speak(utterance.value); + if (utterance) + synth.speak(utterance.value); }; - if (isSupported) { + const stop = () => { + synth.cancel(); + isPlaying.value = false; + }; + if (isSupported.value) { bindEventsForUtterance(utterance.value); vueDemi.watch(lang, (lang2) => { if (utterance.value && !isPlaying.value) utterance.value.lang = lang2; }); + if (options.voice) { + vueDemi.watch(options.voice, () => { + synth.cancel(); + }); + } vueDemi.watch(isPlaying, () => { if (isPlaying.value) synth.resume(); @@ -113678,9 +107596,9 @@ function useSpeechSynthesis(text, options = {}) { isSupported, isPlaying, status, - voiceInfo, utterance, error, + stop, toggle, speak }; @@ -113768,6 +107686,7 @@ function useStorageAsync(key, initialValue, storage, options = {}) { deep = true, listenToStorageChanges = true, writeDefaults = true, + mergeDefaults = false, shallow, window = defaultWindow, eventFilter, @@ -113775,13 +107694,13 @@ function useStorageAsync(key, initialValue, storage, options = {}) { console.error(e); } } = options; - const rawInit = vueDemi.unref(initialValue); + const rawInit = shared.toValue(initialValue); const type = guessSerializerType(rawInit); const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue); const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; if (!storage) { try { - storage = getSSRHandler("getDefaultStorage", () => { + storage = getSSRHandler("getDefaultStorageAsync", () => { var _a2; return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; })(); @@ -113798,6 +107717,13 @@ function useStorageAsync(key, initialValue, storage, options = {}) { data.value = rawInit; if (writeDefaults && rawInit !== null) await storage.setItem(key, await serializer.write(rawInit)); + } else if (mergeDefaults) { + const value = await serializer.read(rawValue); + if (typeof mergeDefaults === "function") + data.value = mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + data.value = { ...rawInit, ...value }; + else data.value = value; } else { data.value = await serializer.read(rawValue); } @@ -113807,22 +107733,26 @@ function useStorageAsync(key, initialValue, storage, options = {}) { } read(); if (window && listenToStorageChanges) - useEventListener(window, "storage", (e) => setTimeout(() => read(e), 0)); + useEventListener(window, "storage", (e) => Promise.resolve().then(() => read(e))); if (storage) { - shared.watchWithFilter(data, async () => { - try { - if (data.value == null) - await storage.removeItem(key); - else - await storage.setItem(key, await serializer.write(data.value)); - } catch (e) { - onError(e); + shared.watchWithFilter( + data, + async () => { + try { + if (data.value == null) + await storage.removeItem(key); + else + await storage.setItem(key, await serializer.write(data.value)); + } catch (e) { + onError(e); + } + }, + { + flush, + deep, + eventFilter } - }, { - flush, - deep, - eventFilter - }); + ); } return data; } @@ -113843,16 +107773,21 @@ function useStyleTag(css, options = {}) { if (!document) return; const el = document.getElementById(id) || document.createElement("style"); - el.type = "text/css"; - el.id = id; - if (options.media) - el.media = options.media; - document.head.appendChild(el); + if (!el.isConnected) { + el.id = id; + if (options.media) + el.media = options.media; + document.head.appendChild(el); + } if (isLoaded.value) return; - stop = vueDemi.watch(cssRef, (value) => { - el.innerText = value; - }, { immediate: true }); + stop = vueDemi.watch( + cssRef, + (value) => { + el.textContent = value; + }, + { immediate: true } + ); isLoaded.value = true; }; const unload = () => { @@ -113875,6 +107810,101 @@ function useStyleTag(css, options = {}) { }; } +function useSwipe(target, options = {}) { + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + passive = true, + window = defaultWindow + } = options; + const coordsStart = vueDemi.reactive({ x: 0, y: 0 }); + const coordsEnd = vueDemi.reactive({ x: 0, y: 0 }); + const diffX = vueDemi.computed(() => coordsStart.x - coordsEnd.x); + const diffY = vueDemi.computed(() => coordsStart.y - coordsEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = vueDemi.computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); + const isSwiping = vueDemi.ref(false); + const direction = vueDemi.computed(() => { + if (!isThresholdExceeded.value) + return "none"; + if (abs(diffX.value) > abs(diffY.value)) { + return diffX.value > 0 ? "left" : "right"; + } else { + return diffY.value > 0 ? "up" : "down"; + } + }); + const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; + const updateCoordsStart = (x, y) => { + coordsStart.x = x; + coordsStart.y = y; + }; + const updateCoordsEnd = (x, y) => { + coordsEnd.x = x; + coordsEnd.y = y; + }; + let listenerOptions; + const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document); + if (!passive) + listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }; + else + listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }; + const onTouchEnd = (e) => { + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isSwiping.value = false; + }; + const stops = [ + useEventListener(target, "touchstart", (e) => { + if (e.touches.length !== 1) + return; + if (listenerOptions.capture && !listenerOptions.passive) + e.preventDefault(); + const [x, y] = getTouchEventCoords(e); + updateCoordsStart(x, y); + updateCoordsEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "touchmove", (e) => { + if (e.touches.length !== 1) + return; + const [x, y] = getTouchEventCoords(e); + updateCoordsEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }, listenerOptions), + useEventListener(target, ["touchend", "touchcancel"], onTouchEnd, listenerOptions) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isPassiveEventSupported, + isSwiping, + direction, + coordsStart, + coordsEnd, + lengthX: diffX, + lengthY: diffY, + stop + }; +} +function checkPassiveEventSupport(document) { + if (!document) + return false; + let supportsPassive = false; + const optionsBlock = { + get passive() { + supportsPassive = true; + return false; + } + }; + document.addEventListener("x", shared.noop, optionsBlock); + document.removeEventListener("x", shared.noop); + return supportsPassive; +} + function useTemplateRefsList() { const refs = vueDemi.ref([]); refs.value.set = (el) => { @@ -113887,15 +107917,47 @@ function useTemplateRefsList() { return refs; } +function useTextDirection(options = {}) { + const { + document = defaultDocument, + selector = "html", + observe = false, + initialValue = "ltr" + } = options; + function getValue() { + var _a, _b; + return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute("dir")) != null ? _b : initialValue; + } + const dir = vueDemi.ref(getValue()); + shared.tryOnMounted(() => dir.value = getValue()); + if (observe && document) { + useMutationObserver( + document.querySelector(selector), + () => dir.value = getValue(), + { attributes: true } + ); + } + return vueDemi.computed({ + get() { + return dir.value; + }, + set(v) { + var _a, _b; + dir.value = v; + if (!document) + return; + if (dir.value) + (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute("dir", dir.value); + else + (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute("dir"); + } + }); +} + function getRangesFromSelection(selection) { var _a; const rangeCount = (_a = selection.rangeCount) != null ? _a : 0; - const ranges = new Array(rangeCount); - for (let i = 0; i < rangeCount; i++) { - const range = selection.getRangeAt(i); - ranges[i] = range; - } - return ranges; + return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i)); } function useTextSelection(options = {}) { const { @@ -113924,17 +107986,37 @@ function useTextSelection(options = {}) { } function useTextareaAutosize(options) { + var _a; const textarea = vueDemi.ref(options == null ? void 0 : options.element); const input = vueDemi.ref(options == null ? void 0 : options.input); + const styleProp = (_a = options == null ? void 0 : options.styleProp) != null ? _a : "height"; + const textareaScrollHeight = vueDemi.ref(1); + const textareaOldWidth = vueDemi.ref(0); function triggerResize() { - var _a, _b; + var _a2; if (!textarea.value) return; - textarea.value.style.height = "1px"; - textarea.value.style.height = `${(_a = textarea.value) == null ? void 0 : _a.scrollHeight}px`; - (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options); + let height = ""; + textarea.value.style[styleProp] = "1px"; + textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight; + const _styleTarget = shared.toValue(options == null ? void 0 : options.styleTarget); + if (_styleTarget) + _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`; + else + height = `${textareaScrollHeight.value}px`; + textarea.value.style[styleProp] = height; } - vueDemi.watch([input, textarea], triggerResize, { immediate: true }); + vueDemi.watch([input, textarea], () => vueDemi.nextTick(triggerResize), { immediate: true }); + vueDemi.watch(textareaScrollHeight, () => { + var _a2; + return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options); + }); + useResizeObserver(textarea, ([{ contentRect }]) => { + if (textareaOldWidth.value === contentRect.width) + return; + textareaOldWidth.value = contentRect.width; + triggerResize(); + }); if (options == null ? void 0 : options.watch) vueDemi.watch(options.watch, triggerResize, { immediate: true, deep: true }); return { @@ -113944,68 +108026,23 @@ function useTextareaAutosize(options) { }; } -var __defProp$2 = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; -var __hasOwnProp$2 = Object.prototype.hasOwnProperty; -var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$2 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$2.call(b, prop)) - __defNormalProp$2(a, prop, b[prop]); - if (__getOwnPropSymbols$2) - for (var prop of __getOwnPropSymbols$2(b)) { - if (__propIsEnum$2.call(b, prop)) - __defNormalProp$2(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); function useThrottledRefHistory(source, options = {}) { const { throttle = 200, trailing = true } = options; const filter = shared.throttleFilter(throttle, trailing); - const history = useRefHistory(source, __spreadProps(__spreadValues$2({}, options), { eventFilter: filter })); - return __spreadValues$2({}, history); -} - -var __defProp$1 = Object.defineProperty; -var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; -var __hasOwnProp$1 = Object.prototype.hasOwnProperty; -var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$1 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$1.call(b, prop)) - __defNormalProp$1(a, prop, b[prop]); - if (__getOwnPropSymbols$1) - for (var prop of __getOwnPropSymbols$1(b)) { - if (__propIsEnum$1.call(b, prop)) - __defNormalProp$1(a, prop, b[prop]); - } - return a; -}; -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$1) - for (var prop of __getOwnPropSymbols$1(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -const UNITS = [ + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; +} + +const DEFAULT_UNITS = [ { max: 6e4, value: 1e3, name: "second" }, { max: 276e4, value: 6e4, name: "minute" }, { max: 72e6, value: 36e5, name: "hour" }, { max: 5184e5, value: 864e5, name: "day" }, { max: 24192e5, value: 6048e5, name: "week" }, { max: 28512e6, value: 2592e6, name: "month" }, - { max: Infinity, value: 31536e6, name: "year" } + { max: Number.POSITIVE_INFINITY, value: 31536e6, name: "year" } ]; const DEFAULT_MESSAGES = { justNow: "just now", @@ -114017,36 +108054,49 @@ const DEFAULT_MESSAGES = { week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`, hour: (n) => `${n} hour${n > 1 ? "s" : ""}`, minute: (n) => `${n} minute${n > 1 ? "s" : ""}`, - second: (n) => `${n} second${n > 1 ? "s" : ""}` + second: (n) => `${n} second${n > 1 ? "s" : ""}`, + invalid: "" }; -const DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10); +function DEFAULT_FORMATTER(date) { + return date.toISOString().slice(0, 10); +} function useTimeAgo(time, options = {}) { const { controls: exposeControls = false, + updateInterval = 3e4 + } = options; + const { now, ...controls } = useNow({ interval: updateInterval, controls: true }); + const timeAgo = vueDemi.computed(() => formatTimeAgo(new Date(shared.toValue(time)), options, shared.toValue(now))); + if (exposeControls) { + return { + timeAgo, + ...controls + }; + } else { + return timeAgo; + } +} +function formatTimeAgo(from, options = {}, now = Date.now()) { + var _a; + const { max, - updateInterval = 3e4, messages = DEFAULT_MESSAGES, - fullDateFormatter = DEFAULT_FORMATTER + fullDateFormatter = DEFAULT_FORMATTER, + units = DEFAULT_UNITS, + showSecond = false, + rounding = "round" } = options; - const { abs, round } = Math; - const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, ["now"]); - function getTimeago(from, now2) { - var _a2; - const diff = +now2 - +from; - const absDiff = abs(diff); - if (absDiff < 6e4) - return messages.justNow; - if (typeof max === "number" && absDiff > max) - return fullDateFormatter(new Date(from)); - if (typeof max === "string") { - const unitMax = (_a2 = UNITS.find((i) => i.name === max)) == null ? void 0 : _a2.max; - if (unitMax && absDiff > unitMax) - return fullDateFormatter(new Date(from)); - } - for (const unit of UNITS) { - if (absDiff < unit.max) - return format(diff, unit); - } + const roundFn = typeof rounding === "number" ? (n) => +n.toFixed(rounding) : Math[rounding]; + const diff = +now - +from; + const absDiff = Math.abs(diff); + function getValue(diff2, unit) { + return roundFn(Math.abs(diff2) / unit.value); + } + function format(diff2, unit) { + const val = getValue(diff2, unit); + const past = diff2 > 0; + const str = applyFormat(unit.name, val, past); + return applyFormat(past ? "past" : "future", str, past); } function applyFormat(name, val, isPast) { const formatter = messages[name]; @@ -114054,24 +108104,27 @@ function useTimeAgo(time, options = {}) { return formatter(val, isPast); return formatter.replace("{0}", val.toString()); } - function format(diff, unit) { - const val = round(abs(diff) / unit.value); - const past = diff > 0; - const str = applyFormat(unit.name, val, past); - return applyFormat(past ? "past" : "future", str, past); + if (absDiff < 6e4 && !showSecond) + return messages.justNow; + if (typeof max === "number" && absDiff > max) + return fullDateFormatter(new Date(from)); + if (typeof max === "string") { + const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max; + if (unitMax && absDiff > unitMax) + return fullDateFormatter(new Date(from)); } - const timeAgo = vueDemi.computed(() => getTimeago(new Date(vueDemi.unref(time)), vueDemi.unref(now.value))); - if (exposeControls) { - return __spreadValues$1({ - timeAgo - }, controls); - } else { - return timeAgo; + for (const [idx, unit] of units.entries()) { + const val = getValue(diff, unit); + if (val <= 0 && units[idx - 1]) + return format(diff, units[idx - 1]); + if (absDiff < unit.max) + return format(diff, unit); } + return messages.invalid; } function useTimeoutPoll(fn, interval, timeoutPollOptions) { - const { start } = shared.useTimeoutFn(loop, interval); + const { start } = shared.useTimeoutFn(loop, interval, { immediate: false }); const isActive = vueDemi.ref(false); async function loop() { if (!isActive.value) @@ -114098,64 +108151,75 @@ function useTimeoutPoll(fn, interval, timeoutPollOptions) { }; } -var __defProp = Object.defineProperty; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; function useTimestamp(options = {}) { const { controls: exposeControls = false, offset = 0, immediate = true, - interval = "requestAnimationFrame" + interval = "requestAnimationFrame", + callback } = options; const ts = vueDemi.ref(shared.timestamp() + offset); const update = () => ts.value = shared.timestamp() + offset; - const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate }) : shared.useIntervalFn(update, interval, { immediate }); + const cb = callback ? () => { + update(); + callback(ts.value); + } : update; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : shared.useIntervalFn(cb, interval, { immediate }); if (exposeControls) { - return __spreadValues({ - timestamp: ts - }, controls); + return { + timestamp: ts, + ...controls + }; } else { return ts; } } function useTitle(newTitle = null, options = {}) { - var _a, _b; + var _a, _b, _c; const { document = defaultDocument, - observe = false, - titleTemplate = "%s" + restoreOnUnmount = (t) => t } = options; - const title = vueDemi.ref((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null); - vueDemi.watch(title, (t, o) => { - if (shared.isString(t) && t !== o && document) - document.title = titleTemplate.replace("%s", t); - }, { immediate: true }); - if (observe && document) { - useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector("title"), () => { - if (document && document.title !== title.value) - title.value = titleTemplate.replace("%s", document.title); - }, { childList: true }); + const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : ""; + const title = shared.toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null); + const isReadonly = newTitle && typeof newTitle === "function"; + function format(t) { + if (!("titleTemplate" in options)) + return t; + const template = options.titleTemplate || "%s"; + return typeof template === "function" ? template(t) : shared.toValue(template).replace(/%s/g, t); + } + vueDemi.watch( + title, + (t, o) => { + if (t !== o && document) + document.title = format(typeof t === "string" ? t : ""); + }, + { immediate: true } + ); + if (options.observe && !options.titleTemplate && document && !isReadonly) { + useMutationObserver( + (_c = document.head) == null ? void 0 : _c.querySelector("title"), + () => { + if (document && document.title !== title.value) + title.value = format(document.title); + }, + { childList: true } + ); } + shared.tryOnBeforeUnmount(() => { + if (restoreOnUnmount) { + const restoredTitle = restoreOnUnmount(originalTitle, title.value || ""); + if (restoredTitle != null && document) + document.title = restoredTitle; + } + }); return title; } -const TransitionPresets = { - linear: shared.identity, +const _TransitionPresets = { easeInSine: [0.12, 0, 0.39, 0], easeOutSine: [0.61, 1, 0.88, 1], easeInOutSine: [0.37, 0, 0.63, 1], @@ -114181,6 +108245,7 @@ const TransitionPresets = { easeOutBack: [0.34, 1.56, 0.64, 1], easeInOutBack: [0.68, -0.6, 0.32, 1.6] }; +const TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: shared.identity }, _TransitionPresets); function createEasingFunction([p0, p1, p2, p3]) { const a = (a1, a2) => 1 - 3 * a2 + 3 * a1; const b = (a1, a2) => 3 * a2 - 6 * a1; @@ -114200,70 +108265,88 @@ function createEasingFunction([p0, p1, p2, p3]) { }; return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3); } -function useTransition(source, options = {}) { - const { - delay = 0, - disabled = false, - duration = 1e3, - onFinished = shared.noop, - onStarted = shared.noop, - transition = shared.identity - } = options; - const currentTransition = vueDemi.computed(() => { - const t = vueDemi.unref(transition); - return shared.isFunction(t) ? t : createEasingFunction(t); - }); - const sourceValue = vueDemi.computed(() => { - const s = vueDemi.unref(source); - return shared.isNumber(s) ? s : s.map(vueDemi.unref); +function lerp(a, b, alpha) { + return a + alpha * (b - a); +} +function toVec(t) { + return (typeof t === "number" ? [t] : t) || []; +} +function executeTransition(source, from, to, options = {}) { + var _a, _b; + const fromVal = shared.toValue(from); + const toVal = shared.toValue(to); + const v1 = toVec(fromVal); + const v2 = toVec(toVal); + const duration = (_a = shared.toValue(options.duration)) != null ? _a : 1e3; + const startedAt = Date.now(); + const endAt = Date.now() + duration; + const trans = typeof options.transition === "function" ? options.transition : (_b = shared.toValue(options.transition)) != null ? _b : shared.identity; + const ease = typeof trans === "function" ? trans : createEasingFunction(trans); + return new Promise((resolve) => { + source.value = fromVal; + const tick = () => { + var _a2; + if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) { + resolve(); + return; + } + const now = Date.now(); + const alpha = ease((now - startedAt) / duration); + const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha)); + if (Array.isArray(source.value)) + source.value = arr.map((n, i) => { + var _a3, _b2; + return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha); + }); + else if (typeof source.value === "number") + source.value = arr[0]; + if (now < endAt) { + requestAnimationFrame(tick); + } else { + source.value = toVal; + resolve(); + } + }; + tick(); }); - const sourceVector = vueDemi.computed(() => shared.isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value); - const outputVector = vueDemi.ref(sourceVector.value.slice(0)); - let currentDuration; - let diffVector; - let endAt; - let startAt; - let startVector; - const { resume, pause } = useRafFn(() => { - const now = Date.now(); - const progress = shared.clamp(1 - (endAt - now) / currentDuration, 0, 1); - outputVector.value = startVector.map((val, i) => { - var _a; - return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress); - }); - if (progress >= 1) { - pause(); - onFinished(); - } - }, { immediate: false }); - const start = () => { - pause(); - currentDuration = vueDemi.unref(duration); - diffVector = outputVector.value.map((n, i) => { - var _a, _b; - return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0); - }); - startVector = outputVector.value.slice(0); - startAt = Date.now(); - endAt = startAt + currentDuration; - resume(); - onStarted(); +} +function useTransition(source, options = {}) { + let currentId = 0; + const sourceVal = () => { + const v = shared.toValue(source); + return typeof v === "number" ? v : v.map(shared.toValue); }; - const timeout = shared.useTimeoutFn(start, delay, { immediate: false }); - vueDemi.watch(sourceVector, () => { - if (vueDemi.unref(disabled)) { - outputVector.value = sourceVector.value.slice(0); - } else { - if (vueDemi.unref(delay) <= 0) - start(); - else - timeout.start(); - } + const outputRef = vueDemi.ref(sourceVal()); + vueDemi.watch(sourceVal, async (to) => { + var _a, _b; + if (shared.toValue(options.disabled)) + return; + const id = ++currentId; + if (options.delay) + await shared.promiseTimeout(shared.toValue(options.delay)); + if (id !== currentId) + return; + const toVal = Array.isArray(to) ? to.map(shared.toValue) : shared.toValue(to); + (_a = options.onStarted) == null ? void 0 : _a.call(options); + await executeTransition(outputRef, outputRef.value, toVal, { + ...options, + abort: () => { + var _a2; + return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options)); + } + }); + (_b = options.onFinished) == null ? void 0 : _b.call(options); }, { deep: true }); - return vueDemi.computed(() => { - const targetVector = vueDemi.unref(disabled) ? sourceVector : outputVector; - return shared.isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value; + vueDemi.watch(() => shared.toValue(options.disabled), (disabled) => { + if (disabled) { + currentId++; + outputRef.value = sourceVal(); + } }); + shared.tryOnScopeDispose(() => { + currentId++; + }); + return vueDemi.computed(() => shared.toValue(options.disabled) ? sourceVal() : outputRef.value); } function useUrlSearchParams(mode = "history", options = {}) { @@ -114271,6 +108354,7 @@ function useUrlSearchParams(mode = "history", options = {}) { initialValue = {}, removeNullishValues = true, removeFalsyValues = false, + write: enableWrite = true, window = defaultWindow } = options; if (!window) @@ -114290,9 +108374,9 @@ function useUrlSearchParams(mode = "history", options = {}) { function constructQuery(params) { const stringified = params.toString(); if (mode === "history") - return `${stringified ? `?${stringified}` : ""}${location.hash || ""}`; + return `${stringified ? `?${stringified}` : ""}${window.location.hash || ""}`; if (mode === "hash-params") - return `${location.search || ""}${stringified ? `#${stringified}` : ""}`; + return `${window.location.search || ""}${stringified ? `#${stringified}` : ""}`; const hash = window.location.hash || "#"; const index = hash.indexOf("?"); if (index > 0) @@ -114311,29 +108395,39 @@ function useUrlSearchParams(mode = "history", options = {}) { } Array.from(unusedKeys).forEach((key) => delete state[key]); } - const { pause, resume } = shared.pausableWatch(state, () => { - const params = new URLSearchParams(""); - Object.keys(state).forEach((key) => { - const mapEntry = state[key]; - if (Array.isArray(mapEntry)) - mapEntry.forEach((value) => params.append(key, value)); - else if (removeNullishValues && mapEntry == null) - params.delete(key); - else if (removeFalsyValues && !mapEntry) - params.delete(key); - else - params.set(key, mapEntry); - }); - write(params); - }, { deep: true }); + const { pause, resume } = shared.pausableWatch( + state, + () => { + const params = new URLSearchParams(""); + Object.keys(state).forEach((key) => { + const mapEntry = state[key]; + if (Array.isArray(mapEntry)) + mapEntry.forEach((value) => params.append(key, value)); + else if (removeNullishValues && mapEntry == null) + params.delete(key); + else if (removeFalsyValues && !mapEntry) + params.delete(key); + else + params.set(key, mapEntry); + }); + write(params); + }, + { deep: true } + ); function write(params, shouldUpdate) { pause(); if (shouldUpdate) updateState(params); - window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params)); + window.history.replaceState( + window.history.state, + window.document.title, + window.location.pathname + constructQuery(params) + ); resume(); } function onChanged() { + if (!enableWrite) + return; write(read(), true); } useEventListener(window, "popstate", onChanged, false); @@ -114348,33 +108442,40 @@ function useUrlSearchParams(mode = "history", options = {}) { } function useUserMedia(options = {}) { - var _a, _b, _c; + var _a, _b; const enabled = vueDemi.ref((_a = options.enabled) != null ? _a : false); const autoSwitch = vueDemi.ref((_b = options.autoSwitch) != null ? _b : true); - const videoDeviceId = vueDemi.ref(options.videoDeviceId); - const audioDeviceId = vueDemi.ref(options.audioDeviceId); + const constraints = vueDemi.ref(options.constraints); const { navigator = defaultNavigator } = options; - const isSupported = Boolean((_c = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _c.getUserMedia); + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia; + }); const stream = vueDemi.shallowRef(); - function getDeviceOptions(device) { - if (device.value === "none" || device.value === false) - return false; - if (device.value == null) - return true; - return { - deviceId: device.value - }; + function getDeviceOptions(type) { + switch (type) { + case "video": { + if (constraints.value) + return constraints.value.video || false; + break; + } + case "audio": { + if (constraints.value) + return constraints.value.audio || false; + break; + } + } } async function _start() { - if (!isSupported || stream.value) + if (!isSupported.value || stream.value) return; stream.value = await navigator.mediaDevices.getUserMedia({ - video: getDeviceOptions(videoDeviceId), - audio: getDeviceOptions(audioDeviceId) + video: getDeviceOptions("video"), + audio: getDeviceOptions("audio") }); return stream.value; } - async function _stop() { + function _stop() { var _a2; (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); stream.value = void 0; @@ -114393,24 +108494,33 @@ function useUserMedia(options = {}) { _stop(); return await start(); } - vueDemi.watch(enabled, (v) => { - if (v) - _start(); - else - _stop(); - }, { immediate: true }); - vueDemi.watch([videoDeviceId, audioDeviceId], () => { - if (autoSwitch.value && stream.value) - restart(); - }, { immediate: true }); + vueDemi.watch( + enabled, + (v) => { + if (v) + _start(); + else _stop(); + }, + { immediate: true } + ); + vueDemi.watch( + constraints, + () => { + if (autoSwitch.value && stream.value) + restart(); + }, + { immediate: true } + ); + shared.tryOnScopeDispose(() => { + stop(); + }); return { isSupported, stream, start, stop, restart, - videoDeviceId, - audioDeviceId, + constraints, enabled, autoSwitch }; @@ -114419,10 +108529,12 @@ function useUserMedia(options = {}) { function useVModel(props, key, emit, options = {}) { var _a, _b, _c, _d, _e; const { + clone = false, passive = false, eventName, deep = false, - defaultValue + defaultValue, + shouldEmit } = options; const vm = vueDemi.getCurrentInstance(); const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy)); @@ -114437,17 +108549,39 @@ function useVModel(props, key, emit, options = {}) { key = "modelValue"; } } - event = eventName || event || `update:${key.toString()}`; - const getValue = () => shared.isDef(props[key]) ? props[key] : defaultValue; + event = event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : typeof clone === "function" ? clone(val) : cloneFnJSON(val); + const getValue = () => shared.isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + const triggerEmit = (value) => { + if (shouldEmit) { + if (shouldEmit(value)) + _emit(event, value); + } else { + _emit(event, value); + } + }; if (passive) { - const proxy = vueDemi.ref(getValue()); - vueDemi.watch(() => props[key], (v) => proxy.value = v); - vueDemi.watch(proxy, (v) => { - if (v !== props[key] || deep) - _emit(event, v); - }, { - deep - }); + const initialValue = getValue(); + const proxy = vueDemi.ref(initialValue); + let isUpdating = false; + vueDemi.watch( + () => props[key], + (v) => { + if (!isUpdating) { + isUpdating = true; + proxy.value = cloneFn(v); + vueDemi.nextTick(() => isUpdating = false); + } + } + ); + vueDemi.watch( + proxy, + (v) => { + if (!isUpdating && (v !== props[key] || deep)) + triggerEmit(v); + }, + { deep } + ); return proxy; } else { return vueDemi.computed({ @@ -114455,7 +108589,7 @@ function useVModel(props, key, emit, options = {}) { return getValue(); }, set(value) { - _emit(event, value); + triggerEmit(value); } }); } @@ -114463,8 +108597,14 @@ function useVModel(props, key, emit, options = {}) { function useVModels(props, emit, options = {}) { const ret = {}; - for (const key in props) - ret[key] = useVModel(props, key, emit, options); + for (const key in props) { + ret[key] = useVModel( + props, + key, + emit, + options + ); + } return ret; } @@ -114474,23 +108614,27 @@ function useVibrate(options) { interval = 0, navigator = defaultNavigator } = options || {}; - const isSupported = typeof navigator !== "undefined" && "vibrate" in navigator; - const patternRef = vueDemi.ref(pattern); + const isSupported = useSupported(() => typeof navigator !== "undefined" && "vibrate" in navigator); + const patternRef = shared.toRef(pattern); let intervalControls; const vibrate = (pattern2 = patternRef.value) => { - if (isSupported) + if (isSupported.value) navigator.vibrate(pattern2); }; const stop = () => { - if (isSupported) + if (isSupported.value) navigator.vibrate(0); intervalControls == null ? void 0 : intervalControls.pause(); }; if (interval > 0) { - intervalControls = shared.useIntervalFn(vibrate, interval, { - immediate: false, - immediateCallback: false - }); + intervalControls = shared.useIntervalFn( + vibrate, + interval, + { + immediate: false, + immediateCallback: false + } + ); } return { isSupported, @@ -114502,48 +108646,68 @@ function useVibrate(options) { } function useVirtualList(list, options) { - const containerRef = vueDemi.ref(); + const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = "itemHeight" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list); + return { + list: currentList, + scrollTo, + containerProps: { + ref: containerRef, + onScroll: () => { + calculateRange(); + }, + style: containerStyle + }, + wrapperProps + }; +} +function useVirtualListResources(list) { + const containerRef = vueDemi.ref(null); const size = useElementSize(containerRef); const currentList = vueDemi.ref([]); const source = vueDemi.shallowRef(list); const state = vueDemi.ref({ start: 0, end: 10 }); - const { itemHeight, overscan = 5 } = options; - const getViewCapacity = (containerHeight) => { - if (typeof itemHeight === "number") - return Math.ceil(containerHeight / itemHeight); + return { state, source, currentList, size, containerRef }; +} +function createGetViewCapacity(state, source, itemSize) { + return (containerSize) => { + if (typeof itemSize === "number") + return Math.ceil(containerSize / itemSize); const { start = 0 } = state.value; let sum = 0; let capacity = 0; for (let i = start; i < source.value.length; i++) { - const height = itemHeight(i); - sum += height; - if (sum >= containerHeight) { - capacity = i; + const size = itemSize(i); + sum += size; + capacity = i; + if (sum > containerSize) break; - } } return capacity - start; }; - const getOffset = (scrollTop) => { - if (typeof itemHeight === "number") - return Math.floor(scrollTop / itemHeight) + 1; +} +function createGetOffset(source, itemSize) { + return (scrollDirection) => { + if (typeof itemSize === "number") + return Math.floor(scrollDirection / itemSize) + 1; let sum = 0; let offset = 0; for (let i = 0; i < source.value.length; i++) { - const height = itemHeight(i); - sum += height; - if (sum >= scrollTop) { + const size = itemSize(i); + sum += size; + if (sum >= scrollDirection) { offset = i; break; } } return offset + 1; }; - const calculateRange = () => { +} +function createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) { + return () => { const element = containerRef.value; if (element) { - const offset = getOffset(element.scrollTop); - const viewCapacity = getViewCapacity(element.clientHeight); + const offset = getOffset(type === "vertical" ? element.scrollTop : element.scrollLeft); + const viewCapacity = getViewCapacity(type === "vertical" ? element.clientHeight : element.clientWidth); const from = offset - overscan; const to = offset + viewCapacity + overscan; state.value = { @@ -114556,29 +108720,86 @@ function useVirtualList(list, options) { })); } }; - vueDemi.watch([size.width, size.height, list], () => { +} +function createGetDistance(itemSize, source) { + return (index) => { + if (typeof itemSize === "number") { + const size2 = index * itemSize; + return size2; + } + const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0); + return size; + }; +} +function useWatchForSizes(size, list, containerRef, calculateRange) { + vueDemi.watch([size.width, size.height, list, containerRef], () => { calculateRange(); }); - const totalHeight = vueDemi.computed(() => { - if (typeof itemHeight === "number") - return source.value.length * itemHeight; - return source.value.reduce((sum, _, index) => sum + itemHeight(index), 0); +} +function createComputedTotalSize(itemSize, source) { + return vueDemi.computed(() => { + if (typeof itemSize === "number") + return source.value.length * itemSize; + return source.value.reduce((sum, _, index) => sum + itemSize(index), 0); }); - const getDistanceTop = (index) => { - if (typeof itemHeight === "number") { - const height2 = index * itemHeight; - return height2; - } - const height = source.value.slice(0, index).reduce((sum, _, i) => sum + itemHeight(i), 0); - return height; - }; - const scrollTo = (index) => { +} +const scrollToDictionaryForElementScrollKey = { + horizontal: "scrollLeft", + vertical: "scrollTop" +}; +function createScrollTo(type, calculateRange, getDistance, containerRef) { + return (index) => { if (containerRef.value) { - containerRef.value.scrollTop = getDistanceTop(index); + containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index); calculateRange(); } }; +} +function useHorizontalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowX: "auto" }; + const { itemWidth, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemWidth); + const getOffset = createGetOffset(source, itemWidth); + const calculateRange = createCalculateRange("horizontal", overscan, getOffset, getViewCapacity, resources); + const getDistanceLeft = createGetDistance(itemWidth, source); + const offsetLeft = vueDemi.computed(() => getDistanceLeft(state.value.start)); + const totalWidth = createComputedTotalSize(itemWidth, source); + useWatchForSizes(size, list, containerRef, calculateRange); + const scrollTo = createScrollTo("horizontal", calculateRange, getDistanceLeft, containerRef); + const wrapperProps = vueDemi.computed(() => { + return { + style: { + height: "100%", + width: `${totalWidth.value - offsetLeft.value}px`, + marginLeft: `${offsetLeft.value}px`, + display: "flex" + } + }; + }); + return { + scrollTo, + calculateRange, + wrapperProps, + containerStyle, + currentList, + containerRef + }; +} +function useVerticalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowY: "auto" }; + const { itemHeight, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemHeight); + const getOffset = createGetOffset(source, itemHeight); + const calculateRange = createCalculateRange("vertical", overscan, getOffset, getViewCapacity, resources); + const getDistanceTop = createGetDistance(itemHeight, source); const offsetTop = vueDemi.computed(() => getDistanceTop(state.value.start)); + const totalHeight = createComputedTotalSize(itemHeight, source); + useWatchForSizes(size, list, containerRef, calculateRange); + const scrollTo = createScrollTo("vertical", calculateRange, getDistanceTop, containerRef); const wrapperProps = vueDemi.computed(() => { return { style: { @@ -114588,85 +108809,107 @@ function useVirtualList(list, options) { } }; }); - const containerStyle = { overflowY: "auto" }; return { - list: currentList, + calculateRange, scrollTo, - containerProps: { - ref: containerRef, - onScroll: () => { - calculateRange(); - }, - style: containerStyle - }, - wrapperProps + containerStyle, + wrapperProps, + currentList, + containerRef }; } -const useWakeLock = (options = {}) => { +function useWakeLock(options = {}) { const { navigator = defaultNavigator, document = defaultDocument } = options; - let wakeLock; - const isSupported = navigator && "wakeLock" in navigator; - const isActive = vueDemi.ref(false); - async function onVisibilityChange() { - if (!isSupported || !wakeLock) - return; - if (document && document.visibilityState === "visible") - wakeLock = await navigator.wakeLock.request("screen"); - isActive.value = !wakeLock.released; + const requestedType = vueDemi.ref(false); + const sentinel = vueDemi.shallowRef(null); + const documentVisibility = useDocumentVisibility({ document }); + const isSupported = useSupported(() => navigator && "wakeLock" in navigator); + const isActive = vueDemi.computed(() => !!sentinel.value && documentVisibility.value === "visible"); + if (isSupported.value) { + useEventListener(sentinel, "release", () => { + var _a, _b; + requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false; + }); + shared.whenever( + () => documentVisibility.value === "visible" && (document == null ? void 0 : document.visibilityState) === "visible" && requestedType.value, + (type) => { + requestedType.value = false; + forceRequest(type); + } + ); + } + async function forceRequest(type) { + var _a; + await ((_a = sentinel.value) == null ? void 0 : _a.release()); + sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null; } - if (document) - useEventListener(document, "visibilitychange", onVisibilityChange, { passive: true }); async function request(type) { - if (!isSupported) - return; - wakeLock = await navigator.wakeLock.request(type); - isActive.value = !wakeLock.released; + if (documentVisibility.value === "visible") + await forceRequest(type); + else + requestedType.value = type; } async function release() { - if (!isSupported || !wakeLock) - return; - await wakeLock.release(); - isActive.value = !wakeLock.released; - wakeLock = null; + requestedType.value = false; + const s = sentinel.value; + sentinel.value = null; + await (s == null ? void 0 : s.release()); } return { + sentinel, isSupported, isActive, request, + forceRequest, release }; -}; +} -const useWebNotification = (defaultOptions = {}) => { +function useWebNotification(options = {}) { const { - window = defaultWindow - } = defaultOptions; - const isSupported = !!window && "Notification" in window; + window = defaultWindow, + requestPermissions: _requestForPermissions = true + } = options; + const defaultWebNotificationOptions = options; + const isSupported = useSupported(() => { + if (!window || !("Notification" in window)) + return false; + try { + new Notification(""); + } catch (e) { + return false; + } + return true; + }); + const permissionGranted = vueDemi.ref(isSupported.value && "permission" in Notification && Notification.permission === "granted"); const notification = vueDemi.ref(null); - const requestPermission = async () => { - if (!isSupported) + const ensurePermissions = async () => { + if (!isSupported.value) return; - if ("permission" in Notification && Notification.permission !== "denied") - await Notification.requestPermission(); + if (!permissionGranted.value && Notification.permission !== "denied") { + const result = await Notification.requestPermission(); + if (result === "granted") + permissionGranted.value = true; + } + return permissionGranted.value; }; - const onClick = shared.createEventHook(); - const onShow = shared.createEventHook(); - const onError = shared.createEventHook(); - const onClose = shared.createEventHook(); + const { on: onClick, trigger: clickTrigger } = shared.createEventHook(); + const { on: onShow, trigger: showTrigger } = shared.createEventHook(); + const { on: onError, trigger: errorTrigger } = shared.createEventHook(); + const { on: onClose, trigger: closeTrigger } = shared.createEventHook(); const show = async (overrides) => { - if (!isSupported) + if (!isSupported.value || !permissionGranted.value) return; - await requestPermission(); - const options = Object.assign({}, defaultOptions, overrides); - notification.value = new Notification(options.title || "", options); - notification.value.onclick = (event) => onClick.trigger(event); - notification.value.onshow = (event) => onShow.trigger(event); - notification.value.onerror = (event) => onError.trigger(event); - notification.value.onclose = (event) => onClose.trigger(event); + const options2 = Object.assign({}, defaultWebNotificationOptions, overrides); + notification.value = new Notification(options2.title || "", options2); + notification.value.onclick = clickTrigger; + notification.value.onshow = showTrigger; + notification.value.onerror = errorTrigger; + notification.value.onclose = closeTrigger; return notification.value; }; const close = () => { @@ -114674,12 +108917,10 @@ const useWebNotification = (defaultOptions = {}) => { notification.value.close(); notification.value = null; }; - shared.tryOnMounted(async () => { - if (isSupported) - await requestPermission(); - }); + if (_requestForPermissions) + shared.tryOnMounted(ensurePermissions); shared.tryOnScopeDispose(close); - if (isSupported && window) { + if (isSupported.value && window) { const document = window.document; useEventListener(document, "visibilitychange", (e) => { e.preventDefault(); @@ -114691,6 +108932,8 @@ const useWebNotification = (defaultOptions = {}) => { return { isSupported, notification, + ensurePermissions, + permissionGranted, show, close, onClick, @@ -114698,8 +108941,9 @@ const useWebNotification = (defaultOptions = {}) => { onError, onClose }; -}; +} +const DEFAULT_PING_MESSAGE = "ping"; function resolveNestedOptions(options) { if (options === true) return {}; @@ -114716,20 +108960,15 @@ function useWebSocket(url, options = {}) { protocols = [] } = options; const data = vueDemi.ref(null); - const status = vueDemi.ref("CONNECTING"); + const status = vueDemi.ref("CLOSED"); const wsRef = vueDemi.ref(); + const urlRef = shared.toRef(url); let heartbeatPause; let heartbeatResume; let explicitlyClosed = false; let retried = 0; let bufferedData = []; - const close = (code = 1e3, reason) => { - if (!wsRef.value) - return; - explicitlyClosed = true; - heartbeatPause == null ? void 0 : heartbeatPause(); - wsRef.value.close(code, reason); - }; + let pongTimeoutWait; const _sendBuffer = () => { if (bufferedData.length && wsRef.value && status.value === "OPEN") { for (const buffer of bufferedData) @@ -114737,6 +108976,19 @@ function useWebSocket(url, options = {}) { bufferedData = []; } }; + const resetHeartbeat = () => { + clearTimeout(pongTimeoutWait); + pongTimeoutWait = void 0; + }; + const close = (code = 1e3, reason) => { + if (!shared.isClient || !wsRef.value) + return; + explicitlyClosed = true; + resetHeartbeat(); + heartbeatPause == null ? void 0 : heartbeatPause(); + wsRef.value.close(code, reason); + wsRef.value = void 0; + }; const send = (data2, useBuffer = true) => { if (!wsRef.value || status.value !== "OPEN") { if (useBuffer) @@ -114748,63 +109000,92 @@ function useWebSocket(url, options = {}) { return true; }; const _init = () => { - const ws = new WebSocket(url, protocols); + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const ws = new WebSocket(urlRef.value, protocols); wsRef.value = ws; status.value = "CONNECTING"; - explicitlyClosed = false; ws.onopen = () => { status.value = "OPEN"; + retried = 0; onConnected == null ? void 0 : onConnected(ws); heartbeatResume == null ? void 0 : heartbeatResume(); _sendBuffer(); }; ws.onclose = (ev) => { status.value = "CLOSED"; - wsRef.value = void 0; onDisconnected == null ? void 0 : onDisconnected(ws, ev); - if (!explicitlyClosed && options.autoReconnect) { + if (!explicitlyClosed && options.autoReconnect && ws === wsRef.value) { const { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions(options.autoReconnect); - retried += 1; - if (typeof retries === "number" && (retries < 0 || retried < retries)) + if (typeof retries === "number" && (retries < 0 || retried < retries)) { + retried += 1; setTimeout(_init, delay); - else if (typeof retries === "function" && retries()) + } else if (typeof retries === "function" && retries()) { setTimeout(_init, delay); - else + } else { onFailed == null ? void 0 : onFailed(); + } } }; ws.onerror = (e) => { onError == null ? void 0 : onError(ws, e); }; ws.onmessage = (e) => { + if (options.heartbeat) { + resetHeartbeat(); + const { + message = DEFAULT_PING_MESSAGE, + responseMessage = message + } = resolveNestedOptions(options.heartbeat); + if (e.data === responseMessage) + return; + } data.value = e.data; onMessage == null ? void 0 : onMessage(ws, e); }; }; if (options.heartbeat) { const { - message = "ping", - interval = 1e3 + message = DEFAULT_PING_MESSAGE, + interval = 1e3, + pongTimeout = 1e3 } = resolveNestedOptions(options.heartbeat); - const { pause, resume } = shared.useIntervalFn(() => send(message, false), interval, { immediate: false }); + const { pause, resume } = shared.useIntervalFn( + () => { + send(message, false); + if (pongTimeoutWait != null) + return; + pongTimeoutWait = setTimeout(() => { + close(); + explicitlyClosed = false; + }, pongTimeout); + }, + interval, + { immediate: false } + ); heartbeatPause = pause; heartbeatResume = resume; } - if (immediate) - _init(); if (autoClose) { - useEventListener(window, "beforeunload", () => close()); + if (shared.isClient) + useEventListener("beforeunload", () => close()); shared.tryOnScopeDispose(close); } const open = () => { + if (!shared.isClient && !shared.isWorker) + return; close(); + explicitlyClosed = false; retried = 0; _init(); }; + if (immediate) + open(); + vueDemi.watch(urlRef, open); return { data, status, @@ -114815,16 +109096,16 @@ function useWebSocket(url, options = {}) { }; } -function useWebWorker(url, workerOptions, options = {}) { +function useWebWorker(arg0, workerOptions, options) { const { window = defaultWindow - } = options; + } = options != null ? options : {}; const data = vueDemi.ref(null); const worker = vueDemi.shallowRef(); - const post = function post2(val) { + const post = (...args) => { if (!worker.value) return; - worker.value.postMessage(val); + worker.value.postMessage(...args); }; const terminate = function terminate2() { if (!worker.value) @@ -114832,7 +109113,12 @@ function useWebWorker(url, workerOptions, options = {}) { worker.value.terminate(); }; if (window) { - worker.value = new Worker(url, workerOptions); + if (typeof arg0 === "string") + worker.value = new Worker(arg0, workerOptions); + else if (typeof arg0 === "function") + worker.value = arg0(); + else + worker.value = arg0; worker.value.onmessage = (e) => { data.value = e.data; }; @@ -114849,32 +109135,45 @@ function useWebWorker(url, workerOptions, options = {}) { }; } -const jobRunner = (userFunc) => (e) => { - const userFuncArgs = e.data[0]; - return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { - postMessage(["SUCCESS", result]); - }).catch((error) => { - postMessage(["ERROR", error]); - }); -}; - -const depsParser = (deps) => { - if (deps.length === 0) +function depsParser(deps, localDeps) { + if (deps.length === 0 && localDeps.length === 0) return ""; const depsString = deps.map((dep) => `'${dep}'`).toString(); - return `importScripts(${depsString})`; -}; + const depsFunctionString = localDeps.filter((dep) => typeof dep === "function").map((fn) => { + const str = fn.toString(); + if (str.trim().startsWith("function")) { + return str; + } else { + const name = fn.name; + return `const ${name} = ${str}`; + } + }).join(";"); + const importString = `importScripts(${depsString});`; + return `${depsString.trim() === "" ? "" : importString} ${depsFunctionString}`; +} + +function jobRunner(userFunc) { + return (e) => { + const userFuncArgs = e.data[0]; + return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { + postMessage(["SUCCESS", result]); + }).catch((error) => { + postMessage(["ERROR", error]); + }); + }; +} -const createWorkerBlobUrl = (fn, deps) => { - const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`; +function createWorkerBlobUrl(fn, deps, localDeps) { + const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`; const blob = new Blob([blobCode], { type: "text/javascript" }); const url = URL.createObjectURL(blob); return url; -}; +} -const useWebWorkerFn = (fn, options = {}) => { +function useWebWorkerFn(fn, options = {}) { const { dependencies = [], + localDependencies = [], timeout, window = defaultWindow } = options; @@ -114895,7 +109194,7 @@ const useWebWorkerFn = (fn, options = {}) => { workerTerminate(); shared.tryOnScopeDispose(workerTerminate); const generateWorker = () => { - const blobUrl = createWorkerBlobUrl(fn, dependencies); + const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies); const newWorker = new Worker(blobUrl); newWorker._url = blobUrl; newWorker.onmessage = (e) => { @@ -114917,25 +109216,32 @@ const useWebWorkerFn = (fn, options = {}) => { newWorker.onerror = (e) => { const { reject = () => { } } = promise.value; + e.preventDefault(); reject(e); workerTerminate("ERROR"); }; if (timeout) { - timeoutId.value = setTimeout(() => workerTerminate("TIMEOUT_EXPIRED"), timeout); + timeoutId.value = setTimeout( + () => workerTerminate("TIMEOUT_EXPIRED"), + timeout + ); } return newWorker; }; const callWorker = (...fnArgs) => new Promise((resolve, reject) => { + var _a; promise.value = { resolve, reject }; - worker.value && worker.value.postMessage([[...fnArgs]]); + (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]); workerStatus.value = "RUNNING"; }); const workerFn = (...fnArgs) => { if (workerStatus.value === "RUNNING") { - console.error("[useWebWorkerFn] You can only run one instance of the worker at a time."); + console.error( + "[useWebWorkerFn] You can only run one instance of the worker at a time." + ); return Promise.reject(); } worker.value = generateWorker(); @@ -114946,9 +109252,10 @@ const useWebWorkerFn = (fn, options = {}) => { workerStatus, workerTerminate }; -}; +} -function useWindowFocus({ window = defaultWindow } = {}) { +function useWindowFocus(options = {}) { + const { window = defaultWindow } = options; if (!window) return vueDemi.ref(false); const focused = vueDemi.ref(window.document.hasFocus()); @@ -114961,45 +109268,79 @@ function useWindowFocus({ window = defaultWindow } = {}) { return focused; } -function useWindowScroll({ window = defaultWindow } = {}) { +function useWindowScroll(options = {}) { + const { window = defaultWindow, behavior = "auto" } = options; if (!window) { return { x: vueDemi.ref(0), y: vueDemi.ref(0) }; } - const x = vueDemi.ref(window.pageXOffset); - const y = vueDemi.ref(window.pageYOffset); - useEventListener("scroll", () => { - x.value = window.pageXOffset; - y.value = window.pageYOffset; - }, { - capture: false, - passive: true + const internalX = vueDemi.ref(window.scrollX); + const internalY = vueDemi.ref(window.scrollY); + const x = vueDemi.computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo({ left: x2, behavior }); + } }); + const y = vueDemi.computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo({ top: y2, behavior }); + } + }); + useEventListener( + window, + "scroll", + () => { + internalX.value = window.scrollX; + internalY.value = window.scrollY; + }, + { + capture: false, + passive: true + } + ); return { x, y }; } function useWindowSize(options = {}) { const { window = defaultWindow, - initialWidth = Infinity, - initialHeight = Infinity, - listenOrientation = true + initialWidth = Number.POSITIVE_INFINITY, + initialHeight = Number.POSITIVE_INFINITY, + listenOrientation = true, + includeScrollbar = true, + type = "inner" } = options; const width = vueDemi.ref(initialWidth); const height = vueDemi.ref(initialHeight); const update = () => { if (window) { - width.value = window.innerWidth; - height.value = window.innerHeight; + if (type === "outer") { + width.value = window.outerWidth; + height.value = window.outerHeight; + } else if (includeScrollbar) { + width.value = window.innerWidth; + height.value = window.innerHeight; + } else { + width.value = window.document.documentElement.clientWidth; + height.value = window.document.documentElement.clientHeight; + } } }; update(); shared.tryOnMounted(update); useEventListener("resize", update, { passive: true }); - if (listenOrientation) - useEventListener("orientationchange", update, { passive: true }); + if (listenOrientation) { + const matches = useMediaQuery("(orientation: portrait)"); + vueDemi.watch(matches, () => update()); + } return { width, height }; } @@ -115009,18 +109350,28 @@ exports.TransitionPresets = TransitionPresets; exports.asyncComputed = computedAsync; exports.breakpointsAntDesign = breakpointsAntDesign; exports.breakpointsBootstrapV5 = breakpointsBootstrapV5; +exports.breakpointsMasterCss = breakpointsMasterCss; +exports.breakpointsPrimeFlex = breakpointsPrimeFlex; exports.breakpointsQuasar = breakpointsQuasar; exports.breakpointsSematic = breakpointsSematic; exports.breakpointsTailwind = breakpointsTailwind; exports.breakpointsVuetify = breakpointsVuetify; +exports.breakpointsVuetifyV2 = breakpointsVuetifyV2; +exports.breakpointsVuetifyV3 = breakpointsVuetifyV3; +exports.cloneFnJSON = cloneFnJSON; exports.computedAsync = computedAsync; exports.computedInject = computedInject; exports.createFetch = createFetch; +exports.createReusableTemplate = createReusableTemplate; +exports.createTemplatePromise = createTemplatePromise; exports.createUnrefFn = createUnrefFn; +exports.customStorageEventName = customStorageEventName; exports.defaultDocument = defaultDocument; exports.defaultLocation = defaultLocation; exports.defaultNavigator = defaultNavigator; exports.defaultWindow = defaultWindow; +exports.executeTransition = executeTransition; +exports.formatTimeAgo = formatTimeAgo; exports.getSSRHandler = getSSRHandler; exports.mapGamepadToXbox360Controller = mapGamepadToXbox360Controller; exports.onClickOutside = onClickOutside; @@ -115034,6 +109385,7 @@ exports.setSSRHandler = setSSRHandler; exports.templateRef = templateRef; exports.unrefElement = unrefElement; exports.useActiveElement = useActiveElement; +exports.useAnimate = useAnimate; exports.useAsyncQueue = useAsyncQueue; exports.useAsyncState = useAsyncState; exports.useBase64 = useBase64; @@ -115043,8 +109395,9 @@ exports.useBreakpoints = useBreakpoints; exports.useBroadcastChannel = useBroadcastChannel; exports.useBrowserLocation = useBrowserLocation; exports.useCached = useCached; -exports.useClamp = useClamp; exports.useClipboard = useClipboard; +exports.useClipboardItems = useClipboardItems; +exports.useCloned = useCloned; exports.useColorMode = useColorMode; exports.useConfirmDialog = useConfirmDialog; exports.useCssVar = useCssVar; @@ -115104,12 +109457,18 @@ exports.useOffsetPagination = useOffsetPagination; exports.useOnline = useOnline; exports.usePageLeave = usePageLeave; exports.useParallax = useParallax; +exports.useParentElement = useParentElement; +exports.usePerformanceObserver = usePerformanceObserver; exports.usePermission = usePermission; exports.usePointer = usePointer; +exports.usePointerLock = usePointerLock; exports.usePointerSwipe = usePointerSwipe; exports.usePreferredColorScheme = usePreferredColorScheme; +exports.usePreferredContrast = usePreferredContrast; exports.usePreferredDark = usePreferredDark; exports.usePreferredLanguages = usePreferredLanguages; +exports.usePreferredReducedMotion = usePreferredReducedMotion; +exports.usePrevious = usePrevious; exports.useRafFn = useRafFn; exports.useRefHistory = useRefHistory; exports.useResizeObserver = useResizeObserver; @@ -115120,14 +109479,17 @@ exports.useScroll = useScroll; exports.useScrollLock = useScrollLock; exports.useSessionStorage = useSessionStorage; exports.useShare = useShare; +exports.useSorted = useSorted; exports.useSpeechRecognition = useSpeechRecognition; exports.useSpeechSynthesis = useSpeechSynthesis; exports.useStepper = useStepper; exports.useStorage = useStorage; exports.useStorageAsync = useStorageAsync; exports.useStyleTag = useStyleTag; +exports.useSupported = useSupported; exports.useSwipe = useSwipe; exports.useTemplateRefsList = useTemplateRefsList; +exports.useTextDirection = useTextDirection; exports.useTextSelection = useTextSelection; exports.useTextareaAutosize = useTextareaAutosize; exports.useThrottledRefHistory = useThrottledRefHistory; @@ -115151,7 +109513,7 @@ exports.useWindowFocus = useWindowFocus; exports.useWindowScroll = useWindowScroll; exports.useWindowSize = useWindowSize; Object.keys(shared).forEach(function (k) { - if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return shared[k]; } }); @@ -115160,228 +109522,66 @@ Object.keys(shared).forEach(function (k) { /***/ }), -/***/ "./node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs": -/*!*************************************************************************!*\ - !*** ./node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs ***! - \*************************************************************************/ +/***/ "./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs": +/*!***********************************************************************!*\ + !*** ./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs ***! + \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; +var Vue = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js") +Object.keys(Vue).forEach(function(key) { + exports[key] = Vue[key] +}) -Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.set = function(target, key, val) { + if (Array.isArray(target)) { + target.length = Math.max(target.length, key) + target.splice(key, 1, val) + return val + } + target[key] = val + return val +} -var vueDemi = __webpack_require__(/*! vue-demi */ "./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs"); +exports.del = function(target, key) { + if (Array.isArray(target)) { + target.splice(key, 1) + return + } + delete target[key] +} + +exports.Vue = Vue +exports.Vue2 = undefined +exports.isVue2 = false +exports.isVue3 = true +exports.install = function(){} + + +/***/ }), + +/***/ "./node_modules/@vueuse/shared/index.cjs": +/*!***********************************************!*\ + !*** ./node_modules/@vueuse/shared/index.cjs ***! + \***********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var vueDemi = __webpack_require__(/*! vue-demi */ "./node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.cjs"); -var __defProp$9 = Object.defineProperty; -var __defProps$6 = Object.defineProperties; -var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; -var __hasOwnProp$b = Object.prototype.hasOwnProperty; -var __propIsEnum$b = Object.prototype.propertyIsEnumerable; -var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$9 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$b.call(b, prop)) - __defNormalProp$9(a, prop, b[prop]); - if (__getOwnPropSymbols$b) - for (var prop of __getOwnPropSymbols$b(b)) { - if (__propIsEnum$b.call(b, prop)) - __defNormalProp$9(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); function computedEager(fn, options) { var _a; const result = vueDemi.shallowRef(); vueDemi.watchEffect(() => { result.value = fn(); - }, __spreadProps$6(__spreadValues$9({}, options), { + }, { + ...options, flush: (_a = options == null ? void 0 : options.flush) != null ? _a : "sync" - })); - return vueDemi.readonly(result); -} - -var _a; -const isClient = typeof window !== "undefined"; -const isDef = (val) => typeof val !== "undefined"; -const assert = (condition, ...infos) => { - if (!condition) - console.warn(...infos); -}; -const toString = Object.prototype.toString; -const isBoolean = (val) => typeof val === "boolean"; -const isFunction = (val) => typeof val === "function"; -const isNumber = (val) => typeof val === "number"; -const isString = (val) => typeof val === "string"; -const isObject = (val) => toString.call(val) === "[object Object]"; -const isWindow = (val) => typeof window !== "undefined" && toString.call(val) === "[object Window]"; -const now = () => Date.now(); -const timestamp = () => +Date.now(); -const clamp = (n, min, max) => Math.min(max, Math.max(min, n)); -const noop = () => { -}; -const rand = (min, max) => { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min + 1)) + min; -}; -const isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); - -function createFilterWrapper(filter, fn) { - function wrapper(...args) { - filter(() => fn.apply(this, args), { fn, thisArg: this, args }); - } - return wrapper; -} -const bypassFilter = (invoke) => { - return invoke(); -}; -function debounceFilter(ms, options = {}) { - let timer; - let maxTimer; - const filter = (invoke) => { - const duration = vueDemi.unref(ms); - const maxDuration = vueDemi.unref(options.maxWait); - if (timer) - clearTimeout(timer); - if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { - if (maxTimer) { - clearTimeout(maxTimer); - maxTimer = null; - } - return invoke(); - } - if (maxDuration && !maxTimer) { - maxTimer = setTimeout(() => { - if (timer) - clearTimeout(timer); - maxTimer = null; - invoke(); - }, maxDuration); - } - timer = setTimeout(() => { - if (maxTimer) - clearTimeout(maxTimer); - maxTimer = null; - invoke(); - }, duration); - }; - return filter; -} -function throttleFilter(ms, trailing = true, leading = true) { - let lastExec = 0; - let timer; - let isLeading = true; - const clear = () => { - if (timer) { - clearTimeout(timer); - timer = void 0; - } - }; - const filter = (invoke) => { - const duration = vueDemi.unref(ms); - const elapsed = Date.now() - lastExec; - clear(); - if (duration <= 0) { - lastExec = Date.now(); - return invoke(); - } - if (elapsed > duration && (leading || !isLeading)) { - lastExec = Date.now(); - invoke(); - } else if (trailing) { - timer = setTimeout(() => { - lastExec = Date.now(); - isLeading = true; - clear(); - invoke(); - }, duration); - } - if (!leading && !timer) - timer = setTimeout(() => isLeading = true, duration); - isLeading = false; - }; - return filter; -} -function pausableFilter(extendFilter = bypassFilter) { - const isActive = vueDemi.ref(true); - function pause() { - isActive.value = false; - } - function resume() { - isActive.value = true; - } - const eventFilter = (...args) => { - if (isActive.value) - extendFilter(...args); - }; - return { isActive, pause, resume, eventFilter }; -} - -function __onlyVue3(name = "this function") { - if (vueDemi.isVue3) - return; - throw new Error(`[VueUse] ${name} is only works on Vue 3.`); -} -const directiveHooks = { - mounted: vueDemi.isVue3 ? "mounted" : "inserted", - updated: vueDemi.isVue3 ? "updated" : "componentUpdated", - unmounted: vueDemi.isVue3 ? "unmounted" : "unbind" -}; - -function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { - return new Promise((resolve, reject) => { - if (throwOnTimeout) - setTimeout(() => reject(reason), ms); - else - setTimeout(resolve, ms); }); -} -function identity(arg) { - return arg; -} -function createSingletonPromise(fn) { - let _promise; - function wrapper() { - if (!_promise) - _promise = fn(); - return _promise; - } - wrapper.reset = async () => { - const _prev = _promise; - _promise = void 0; - if (_prev) - await _prev; - }; - return wrapper; -} -function invoke(fn) { - return fn(); -} -function containsProp(obj, ...props) { - return props.some((k) => k in obj); -} -function increaseWithUnit(target, delta) { - var _a; - if (typeof target === "number") - return target + delta; - const value = ((_a = target.match(/^-?[0-9]+\.?[0-9]*/)) == null ? void 0 : _a[0]) || ""; - const unit = target.slice(value.length); - const result = parseFloat(value) + delta; - if (Number.isNaN(result)) - return target; - return result + unit; -} -function objectPick(obj, keys, omitUndefined = false) { - return keys.reduce((n, k) => { - if (k in obj) { - if (!omitUndefined || obj[k] !== void 0) - n[k] = obj[k]; - } - return n; - }, {}); + return vueDemi.readonly(result); } function computedWithControl(source, fn) { @@ -115394,15 +109594,15 @@ function computedWithControl(source, fn) { trigger(); }; vueDemi.watch(source, update, { flush: "sync" }); - const get = isFunction(fn) ? fn : fn.get; - const set = isFunction(fn) ? void 0 : fn.set; + const get = typeof fn === "function" ? fn : fn.get; + const set = typeof fn === "function" ? void 0 : fn.set; const result = vueDemi.customRef((_track, _trigger) => { track = _track; trigger = _trigger; return { get() { if (dirty.value) { - v = get(); + v = get(v); dirty.value = false; } track(); @@ -115418,21 +109618,29 @@ function computedWithControl(source, fn) { return result; } +function tryOnScopeDispose(fn) { + if (vueDemi.getCurrentScope()) { + vueDemi.onScopeDispose(fn); + return true; + } + return false; +} + function createEventHook() { - const fns = []; + const fns = /* @__PURE__ */ new Set(); const off = (fn) => { - const index = fns.indexOf(fn); - if (index !== -1) - fns.splice(index, 1); + fns.delete(fn); }; const on = (fn) => { - fns.push(fn); + fns.add(fn); + const offFn = () => off(fn); + tryOnScopeDispose(offFn); return { - off: () => off(fn) + off: offFn }; }; - const trigger = (param) => { - fns.forEach((fn) => fn(param)); + const trigger = (...args) => { + return Promise.all(Array.from(fns).map((fn) => fn(...args))); }; return { on, @@ -115445,32 +109653,52 @@ function createGlobalState(stateFactory) { let initialized = false; let state; const scope = vueDemi.effectScope(true); - return () => { + return (...args) => { if (!initialized) { - state = scope.run(stateFactory); + state = scope.run(() => stateFactory(...args)); initialized = true; } return state; }; } -function createInjectionState(composable) { - const key = Symbol("InjectionState"); +const localProvidedStateMap = /* @__PURE__ */ new WeakMap(); + +const injectLocal = (...args) => { + var _a; + const key = args[0]; + const instance = (_a = vueDemi.getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null) + throw new Error("injectLocal must be called in setup"); + if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance)) + return localProvidedStateMap.get(instance)[key]; + return vueDemi.inject(...args); +}; + +const provideLocal = (key, value) => { + var _a; + const instance = (_a = vueDemi.getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null) + throw new Error("provideLocal must be called in setup"); + if (!localProvidedStateMap.has(instance)) + localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null)); + const localProvidedState = localProvidedStateMap.get(instance); + localProvidedState[key] = value; + vueDemi.provide(key, value); +}; + +function createInjectionState(composable, options) { + const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || "InjectionState"); + const defaultValue = options == null ? void 0 : options.defaultValue; const useProvidingState = (...args) => { - vueDemi.provide(key, composable(...args)); + const state = composable(...args); + provideLocal(key, state); + return state; }; - const useInjectedState = () => vueDemi.inject(key); + const useInjectedState = () => injectLocal(key, defaultValue); return [useProvidingState, useInjectedState]; } -function tryOnScopeDispose(fn) { - if (vueDemi.getCurrentScope()) { - vueDemi.onScopeDispose(fn); - return true; - } - return false; -} - function createSharedComposable(composable) { let subscribers = 0; let state; @@ -115485,7 +109713,7 @@ function createSharedComposable(composable) { }; return (...args) => { subscribers += 1; - if (!state) { + if (!scope) { scope = vueDemi.effectScope(true); state = scope.run(() => composable(...args)); } @@ -115495,7 +109723,11 @@ function createSharedComposable(composable) { } function extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) { - __onlyVue3(); + if (!vueDemi.isVue3 && !vueDemi.version.startsWith("2.7.")) { + if (true) + throw new Error("[VueUse] extendRef only works in Vue 2.7 or above."); + return; + } for (const [key, value] of Object.entries(extend)) { if (key === "value") continue; @@ -115526,37 +109758,9 @@ function isDefined(v) { return vueDemi.unref(v) != null; } -function logicAnd(...args) { - return vueDemi.computed(() => args.every((i) => vueDemi.unref(i))); -} - -function logicNot(v) { - return vueDemi.computed(() => !vueDemi.unref(v)); -} - -function logicOr(...args) { - return vueDemi.computed(() => args.some((i) => vueDemi.unref(i))); -} - -var __defProp$8 = Object.defineProperty; -var __getOwnPropSymbols$a = Object.getOwnPropertySymbols; -var __hasOwnProp$a = Object.prototype.hasOwnProperty; -var __propIsEnum$a = Object.prototype.propertyIsEnumerable; -var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$8 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$a.call(b, prop)) - __defNormalProp$8(a, prop, b[prop]); - if (__getOwnPropSymbols$a) - for (var prop of __getOwnPropSymbols$a(b)) { - if (__propIsEnum$a.call(b, prop)) - __defNormalProp$8(a, prop, b[prop]); - } - return a; -}; function makeDestructurable(obj, arr) { if (typeof Symbol !== "undefined") { - const clone = __spreadValues$8({}, obj); + const clone = { ...obj }; Object.defineProperty(clone, Symbol.iterator, { enumerable: false, value() { @@ -115575,29 +109779,39 @@ function makeDestructurable(obj, arr) { } } -function reactify(fn) { +function toValue(r) { + return typeof r === "function" ? r() : vueDemi.unref(r); +} +const resolveUnref = toValue; + +function reactify(fn, options) { + const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? vueDemi.unref : toValue; return function(...args) { - return vueDemi.computed(() => fn.apply(this, args.map((i) => vueDemi.unref(i)))); + return vueDemi.computed(() => fn.apply(this, args.map((i) => unrefFn(i)))); }; } function reactifyObject(obj, optionsOrKeys = {}) { let keys = []; + let options; if (Array.isArray(optionsOrKeys)) { keys = optionsOrKeys; } else { + options = optionsOrKeys; const { includeOwnProperties = true } = optionsOrKeys; keys.push(...Object.keys(obj)); if (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj)); } - return Object.fromEntries(keys.map((key) => { - const value = obj[key]; - return [ - key, - typeof value === "function" ? reactify(value.bind(obj)) : value - ]; - })); + return Object.fromEntries( + keys.map((key) => { + const value = obj[key]; + return [ + key, + typeof value === "function" ? reactify(value.bind(obj), options) : value + ]; + }) + ); } function toReactive(objectRef) { @@ -115639,22 +109853,264 @@ function reactiveComputed(fn) { function reactiveOmit(obj, ...keys) { const flatKeys = keys.flat(); - return reactiveComputed(() => Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter((e) => !flatKeys.includes(e[0])))); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter((e) => !flatKeys.includes(e[0])))); } +const directiveHooks = { + mounted: vueDemi.isVue3 ? "mounted" : "inserted", + updated: vueDemi.isVue3 ? "updated" : "componentUpdated", + unmounted: vueDemi.isVue3 ? "unmounted" : "unbind" +}; + +const isClient = typeof window !== "undefined" && typeof document !== "undefined"; +const isWorker = typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; +const isDef = (val) => typeof val !== "undefined"; +const notNullish = (val) => val != null; +const assert = (condition, ...infos) => { + if (!condition) + console.warn(...infos); +}; +const toString = Object.prototype.toString; +const isObject = (val) => toString.call(val) === "[object Object]"; +const now = () => Date.now(); +const timestamp = () => +Date.now(); +const clamp = (n, min, max) => Math.min(max, Math.max(min, n)); +const noop = () => { +}; +const rand = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +}; +const hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key); +const isIOS = /* @__PURE__ */ getIsIOS(); +function getIsIOS() { + var _a, _b; + return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent)); +} + +function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject); + }); + } + return wrapper; +} +const bypassFilter = (invoke) => { + return invoke(); +}; +function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop; + const _clearTimeout = (timer2) => { + clearTimeout(timer2); + lastRejector(); + lastRejector = noop; + }; + const filter = (invoke) => { + const duration = toValue(ms); + const maxDuration = toValue(options.maxWait); + if (timer) + _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = null; + } + return Promise.resolve(invoke()); + } + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + if (maxDuration && !maxTimer) { + maxTimer = setTimeout(() => { + if (timer) + _clearTimeout(timer); + maxTimer = null; + resolve(invoke()); + }, maxDuration); + } + timer = setTimeout(() => { + if (maxTimer) + _clearTimeout(maxTimer); + maxTimer = null; + resolve(invoke()); + }, duration); + }); + }; + return filter; +} +function throttleFilter(...args) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop; + let lastValue; + let ms; + let trailing; + let leading; + let rejectOnCancel; + if (!vueDemi.isRef(args[0]) && typeof args[0] === "object") + ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]); + else + [ms, trailing = true, leading = true, rejectOnCancel = false] = args; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop; + } + }; + const filter = (_invoke) => { + const duration = toValue(ms); + const elapsed = Date.now() - lastExec; + const invoke = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke(); + } + if (elapsed > duration && (leading || !isLeading)) { + lastExec = Date.now(); + invoke(); + } else if (trailing) { + lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + } + if (!leading && !timer) + timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; +} +function pausableFilter(extendFilter = bypassFilter) { + const isActive = vueDemi.ref(true); + function pause() { + isActive.value = false; + } + function resume() { + isActive.value = true; + } + const eventFilter = (...args) => { + if (isActive.value) + extendFilter(...args); + }; + return { isActive: vueDemi.readonly(isActive), pause, resume, eventFilter }; +} + +function cacheStringFunction(fn) { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +} +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); + +function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { + return new Promise((resolve, reject) => { + if (throwOnTimeout) + setTimeout(() => reject(reason), ms); + else + setTimeout(resolve, ms); + }); +} +function identity(arg) { + return arg; +} +function createSingletonPromise(fn) { + let _promise; + function wrapper() { + if (!_promise) + _promise = fn(); + return _promise; + } + wrapper.reset = async () => { + const _prev = _promise; + _promise = void 0; + if (_prev) + await _prev; + }; + return wrapper; +} +function invoke(fn) { + return fn(); +} +function containsProp(obj, ...props) { + return props.some((k) => k in obj); +} +function increaseWithUnit(target, delta) { + var _a; + if (typeof target === "number") + return target + delta; + const value = ((_a = target.match(/^-?\d+\.?\d*/)) == null ? void 0 : _a[0]) || ""; + const unit = target.slice(value.length); + const result = Number.parseFloat(value) + delta; + if (Number.isNaN(result)) + return target; + return result + unit; +} +function objectPick(obj, keys, omitUndefined = false) { + return keys.reduce((n, k) => { + if (k in obj) { + if (!omitUndefined || obj[k] !== void 0) + n[k] = obj[k]; + } + return n; + }, {}); +} +function objectOmit(obj, keys, omitUndefined = false) { + return Object.fromEntries(Object.entries(obj).filter(([key, value]) => { + return (!omitUndefined || value !== void 0) && !keys.includes(key); + })); +} +function objectEntries(obj) { + return Object.entries(obj); +} +function getLifeCycleTarget(target) { + return target || vueDemi.getCurrentInstance(); +} + +function toRef(...args) { + if (args.length !== 1) + return vueDemi.toRef(...args); + const r = args[0]; + return typeof r === "function" ? vueDemi.readonly(vueDemi.customRef(() => ({ get: r, set: noop }))) : vueDemi.ref(r); +} +const resolveRef = toRef; + function reactivePick(obj, ...keys) { const flatKeys = keys.flat(); - return vueDemi.reactive(Object.fromEntries(flatKeys.map((k) => [k, vueDemi.toRef(obj, k)]))); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)]))); } function refAutoReset(defaultValue, afterMs = 1e4) { return vueDemi.customRef((track, trigger) => { - let value = defaultValue; + let value = toValue(defaultValue); let timer; const resetAfter = () => setTimeout(() => { - value = defaultValue; + value = toValue(defaultValue); trigger(); - }, vueDemi.unref(afterMs)); + }, toValue(afterMs)); tryOnScopeDispose(() => { clearTimeout(timer); }); @@ -115674,12 +110130,13 @@ function refAutoReset(defaultValue, afterMs = 1e4) { } function useDebounceFn(fn, ms = 200, options = {}) { - return createFilterWrapper(debounceFilter(ms, options), fn); + return createFilterWrapper( + debounceFilter(ms, options), + fn + ); } function refDebounced(value, ms = 200, options = {}) { - if (ms <= 0) - return value; const debounced = vueDemi.ref(value.value); const updater = useDebounceFn(() => { debounced.value = value.value; @@ -115700,8 +110157,11 @@ function refDefault(source, defaultValue) { }); } -function useThrottleFn(fn, ms = 200, trailing = true, leading = true) { - return createFilterWrapper(throttleFilter(ms, trailing, leading), fn); +function useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { + return createFilterWrapper( + throttleFilter(ms, trailing, leading, rejectOnCancel), + fn + ); } function refThrottled(value, delay = 200, trailing = true, leading = true) { @@ -115752,25 +110212,21 @@ function refWithControl(initial, options = {}) { const silentSet = (v) => set(v, false); const peek = () => get(false); const lay = (v) => set(v, false); - return extendRef(ref, { - get, - set, - untrackedGet, - silentSet, - peek, - lay - }, { enumerable: true }); + return extendRef( + ref, + { + get, + set, + untrackedGet, + silentSet, + peek, + lay + }, + { enumerable: true } + ); } const controlledRef = refWithControl; -function resolveRef(r) { - return typeof r === "function" ? vueDemi.computed(r) : vueDemi.ref(r); -} - -function resolveUnref(r) { - return typeof r === "function" ? r() : vueDemi.unref(r); -} - function set(...args) { if (args.length === 2) { const [ref, value] = args; @@ -115786,24 +110242,75 @@ function set(...args) { } } -function syncRef(left, right, options = {}) { +function watchWithFilter(source, cb, options = {}) { + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + return vueDemi.watch( + source, + createFilterWrapper( + eventFilter, + cb + ), + watchOptions + ); +} + +function watchPausable(source, cb, options = {}) { + const { + eventFilter: filter, + ...watchOptions + } = options; + const { eventFilter, pause, resume, isActive } = pausableFilter(filter); + const stop = watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter + } + ); + return { stop, pause, resume, isActive }; +} + +function syncRef(left, right, ...[options]) { const { flush = "sync", deep = false, immediate = true, - direction = "both" - } = options; - let stop1, stop2; + direction = "both", + transform = {} + } = options || {}; + const watchers = []; + const transformLTR = "ltr" in transform && transform.ltr || ((v) => v); + const transformRTL = "rtl" in transform && transform.rtl || ((v) => v); if (direction === "both" || direction === "ltr") { - stop1 = vueDemi.watch(left, (newValue) => right.value = newValue, { flush, deep, immediate }); + watchers.push(watchPausable( + left, + (newValue) => { + watchers.forEach((w) => w.pause()); + right.value = transformLTR(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); } if (direction === "both" || direction === "rtl") { - stop2 = vueDemi.watch(right, (newValue) => left.value = newValue, { flush, deep, immediate }); + watchers.push(watchPausable( + right, + (newValue) => { + watchers.forEach((w) => w.pause()); + left.value = transformRTL(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); } - return () => { - stop1 == null ? void 0 : stop1(); - stop2 == null ? void 0 : stop2(); + const stop = () => { + watchers.forEach((w) => w.stop()); }; + return stop; } function syncRefs(source, targets, options = {}) { @@ -115814,46 +110321,37 @@ function syncRefs(source, targets, options = {}) { } = options; if (!Array.isArray(targets)) targets = [targets]; - return vueDemi.watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate }); -} - -var __defProp$7 = Object.defineProperty; -var __defProps$5 = Object.defineProperties; -var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; -var __hasOwnProp$9 = Object.prototype.hasOwnProperty; -var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$7 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$9.call(b, prop)) - __defNormalProp$7(a, prop, b[prop]); - if (__getOwnPropSymbols$9) - for (var prop of __getOwnPropSymbols$9(b)) { - if (__propIsEnum$9.call(b, prop)) - __defNormalProp$7(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b)); -function toRefs(objectRef) { + return vueDemi.watch( + source, + (newValue) => targets.forEach((target) => target.value = newValue), + { flush, deep, immediate } + ); +} + +function toRefs(objectRef, options = {}) { if (!vueDemi.isRef(objectRef)) return vueDemi.toRefs(objectRef); - const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {}; + const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {}; for (const key in objectRef.value) { result[key] = vueDemi.customRef(() => ({ get() { return objectRef.value[key]; }, set(v) { - if (Array.isArray(objectRef.value)) { - const copy = [...objectRef.value]; - copy[key] = v; - objectRef.value = copy; + var _a; + const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true; + if (replaceRef) { + if (Array.isArray(objectRef.value)) { + const copy = [...objectRef.value]; + copy[key] = v; + objectRef.value = copy; + } else { + const newObject = { ...objectRef.value, [key]: v }; + Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value)); + objectRef.value = newObject; + } } else { - const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v }); - Object.setPrototypeOf(newObject, objectRef.value); - objectRef.value = newObject; + objectRef.value[key] = v; } } })); @@ -115861,53 +110359,65 @@ function toRefs(objectRef) { return result; } -function tryOnBeforeMount(fn, sync = true) { - if (vueDemi.getCurrentInstance()) - vueDemi.onBeforeMount(fn); +function tryOnBeforeMount(fn, sync = true, target) { + const instance = getLifeCycleTarget(target); + if (instance) + vueDemi.onBeforeMount(fn, target); else if (sync) fn(); else vueDemi.nextTick(fn); } -function tryOnBeforeUnmount(fn) { - if (vueDemi.getCurrentInstance()) - vueDemi.onBeforeUnmount(fn); +function tryOnBeforeUnmount(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + vueDemi.onBeforeUnmount(fn, target); } -function tryOnMounted(fn, sync = true) { - if (vueDemi.getCurrentInstance()) - vueDemi.onMounted(fn); +function tryOnMounted(fn, sync = true, target) { + const instance = getLifeCycleTarget(); + if (instance) + vueDemi.onMounted(fn, target); else if (sync) fn(); else vueDemi.nextTick(fn); } -function tryOnUnmounted(fn) { - if (vueDemi.getCurrentInstance()) - vueDemi.onUnmounted(fn); +function tryOnUnmounted(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + vueDemi.onUnmounted(fn, target); } -function until(r) { - let isNot = false; +function createUntil(r, isNot = false) { function toMatch(condition, { flush = "sync", deep = false, timeout, throwOnTimeout } = {}) { let stop = null; const watcher = new Promise((resolve) => { - stop = vueDemi.watch(r, (v) => { - if (condition(v) !== isNot) { - stop == null ? void 0 : stop(); - resolve(v); + stop = vueDemi.watch( + r, + (v) => { + if (condition(v) !== isNot) { + if (stop) + stop(); + else + vueDemi.nextTick(() => stop == null ? void 0 : stop()); + resolve(v); + } + }, + { + flush, + deep, + immediate: true } - }, { - flush, - deep, - immediate: true - }); + ); }); const promises = [watcher]; if (timeout != null) { - promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => vueDemi.unref(r)).finally(() => stop == null ? void 0 : stop())); + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop()) + ); } return Promise.race(promises); } @@ -115917,23 +110427,32 @@ function until(r) { const { flush = "sync", deep = false, timeout, throwOnTimeout } = options != null ? options : {}; let stop = null; const watcher = new Promise((resolve) => { - stop = vueDemi.watch([r, value], ([v1, v2]) => { - if (isNot !== (v1 === v2)) { - stop == null ? void 0 : stop(); - resolve(v1); + stop = vueDemi.watch( + [r, value], + ([v1, v2]) => { + if (isNot !== (v1 === v2)) { + if (stop) + stop(); + else + vueDemi.nextTick(() => stop == null ? void 0 : stop()); + resolve(v1); + } + }, + { + flush, + deep, + immediate: true } - }, { - flush, - deep, - immediate: true - }); + ); }); const promises = [watcher]; if (timeout != null) { - promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => vueDemi.unref(r)).finally(() => { - stop == null ? void 0 : stop(); - return vueDemi.unref(r); - })); + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => { + stop == null ? void 0 : stop(); + return toValue(r); + }) + ); } return Promise.race(promises); } @@ -115952,7 +110471,7 @@ function until(r) { function toContains(value, options) { return toMatch((v) => { const array = Array.from(v); - return array.includes(value) || array.includes(vueDemi.unref(value)); + return array.includes(value) || array.includes(toValue(value)); }, options); } function changed(options) { @@ -115965,15 +110484,14 @@ function until(r) { return count >= n; }, options); } - if (Array.isArray(vueDemi.unref(r))) { + if (Array.isArray(toValue(r))) { const instance = { toMatch, toContains, changed, changedTimes, get not() { - isNot = !isNot; - return this; + return createUntil(r, !isNot); } }; return instance; @@ -115988,34 +110506,159 @@ function until(r) { changed, changedTimes, get not() { - isNot = !isNot; - return this; + return createUntil(r, !isNot); } }; return instance; } } +function until(r) { + return createUntil(r); +} + +function defaultComparator(value, othVal) { + return value === othVal; +} +function useArrayDifference(...args) { + var _a; + const list = args[0]; + const values = args[1]; + let compareFn = (_a = args[2]) != null ? _a : defaultComparator; + if (typeof compareFn === "string") { + const key = compareFn; + compareFn = (value, othVal) => value[key] === othVal[key]; + } + return vueDemi.computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1)); +} + +function useArrayEvery(list, fn) { + return vueDemi.computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array))); +} + +function useArrayFilter(list, fn) { + return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).filter(fn)); +} + +function useArrayFind(list, fn) { + return vueDemi.computed(() => toValue( + toValue(list).find((element, index, array) => fn(toValue(element), index, array)) + )); +} + +function useArrayFindIndex(list, fn) { + return vueDemi.computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array))); +} + +function findLast(arr, cb) { + let index = arr.length; + while (index-- > 0) { + if (cb(arr[index], index, arr)) + return arr[index]; + } + return void 0; +} +function useArrayFindLast(list, fn) { + return vueDemi.computed(() => toValue( + !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array)) + )); +} + +function isArrayIncludesOptions(obj) { + return isObject(obj) && containsProp(obj, "formIndex", "comparator"); +} +function useArrayIncludes(...args) { + var _a; + const list = args[0]; + const value = args[1]; + let comparator = args[2]; + let formIndex = 0; + if (isArrayIncludesOptions(comparator)) { + formIndex = (_a = comparator.fromIndex) != null ? _a : 0; + comparator = comparator.comparator; + } + if (typeof comparator === "string") { + const key = comparator; + comparator = (element, value2) => element[key] === toValue(value2); + } + comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2); + return vueDemi.computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator( + toValue(element), + toValue(value), + index, + toValue(array) + ))); +} + +function useArrayJoin(list, separator) { + return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator))); +} + +function useArrayMap(list, fn) { + return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).map(fn)); +} + +function useArrayReduce(list, reducer, ...args) { + const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index); + return vueDemi.computed(() => { + const resolved = toValue(list); + return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback); + }); +} + +function useArraySome(list, fn) { + return vueDemi.computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array))); +} + +function uniq(array) { + return Array.from(new Set(array)); +} +function uniqueElementsBy(array, fn) { + return array.reduce((acc, v) => { + if (!acc.some((x) => fn(v, x, array))) + acc.push(v); + return acc; + }, []); +} +function useArrayUnique(list, compareFn) { + return vueDemi.computed(() => { + const resolvedList = toValue(list).map((element) => toValue(element)); + return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList); + }); +} function useCounter(initialValue = 0, options = {}) { + let _initialValue = vueDemi.unref(initialValue); const count = vueDemi.ref(initialValue); const { - max = Infinity, - min = -Infinity + max = Number.POSITIVE_INFINITY, + min = Number.NEGATIVE_INFINITY } = options; - const inc = (delta = 1) => count.value = Math.min(max, count.value + delta); - const dec = (delta = 1) => count.value = Math.max(min, count.value - delta); + const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min); + const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max); const get = () => count.value; - const set = (val) => count.value = val; - const reset = (val = initialValue) => { - initialValue = val; + const set = (val) => count.value = Math.max(min, Math.min(max, val)); + const reset = (val = _initialValue) => { + _initialValue = val; return set(val); }; return { count, inc, dec, get, set, reset }; } -const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; -const REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g; -const formatDate = (date, formatStr) => { +const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[T\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/i; +const REGEX_FORMAT = /[YMDHhms]o|\[([^\]]+)\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g; +function defaultMeridiem(hours, minutes, isLowercase, hasPeriod) { + let m = hours < 12 ? "AM" : "PM"; + if (hasPeriod) + m = m.split("").reduce((acc, curr) => acc += `${curr}.`, ""); + return isLowercase ? m.toLowerCase() : m; +} +function formatOrdinal(num) { + const suffixes = ["th", "st", "nd", "rd"]; + const v = num % 100; + return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]); +} +function formatDate(date, formatStr, options = {}) { + var _a; const years = date.getFullYear(); const month = date.getMonth(); const days = date.getDate(); @@ -116024,31 +110667,51 @@ const formatDate = (date, formatStr) => { const seconds = date.getSeconds(); const milliseconds = date.getMilliseconds(); const day = date.getDay(); + const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem; const matches = { - YY: String(years).slice(-2), - YYYY: years, - M: month + 1, - MM: `${month + 1}`.padStart(2, "0"), - D: String(days), - DD: `${days}`.padStart(2, "0"), - H: String(hours), - HH: `${hours}`.padStart(2, "0"), - h: `${hours % 12 || 12}`.padStart(1, "0"), - hh: `${hours % 12 || 12}`.padStart(2, "0"), - m: String(minutes), - mm: `${minutes}`.padStart(2, "0"), - s: String(seconds), - ss: `${seconds}`.padStart(2, "0"), - SSS: `${milliseconds}`.padStart(3, "0"), - d: day - }; - return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]); -}; -const normalizeDate = (date) => { + Yo: () => formatOrdinal(years), + YY: () => String(years).slice(-2), + YYYY: () => years, + M: () => month + 1, + Mo: () => formatOrdinal(month + 1), + MM: () => `${month + 1}`.padStart(2, "0"), + MMM: () => date.toLocaleDateString(toValue(options.locales), { month: "short" }), + MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: "long" }), + D: () => String(days), + Do: () => formatOrdinal(days), + DD: () => `${days}`.padStart(2, "0"), + H: () => String(hours), + Ho: () => formatOrdinal(hours), + HH: () => `${hours}`.padStart(2, "0"), + h: () => `${hours % 12 || 12}`.padStart(1, "0"), + ho: () => formatOrdinal(hours % 12 || 12), + hh: () => `${hours % 12 || 12}`.padStart(2, "0"), + m: () => String(minutes), + mo: () => formatOrdinal(minutes), + mm: () => `${minutes}`.padStart(2, "0"), + s: () => String(seconds), + so: () => formatOrdinal(seconds), + ss: () => `${seconds}`.padStart(2, "0"), + SSS: () => `${milliseconds}`.padStart(3, "0"), + d: () => day, + dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "narrow" }), + ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "short" }), + dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "long" }), + A: () => meridiem(hours, minutes), + AA: () => meridiem(hours, minutes, false, true), + a: () => meridiem(hours, minutes, true), + aa: () => meridiem(hours, minutes, true, true) + }; + return formatStr.replace(REGEX_FORMAT, (match, $1) => { + var _a2, _b; + return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match; + }); +} +function normalizeDate(date) { if (date === null) - return new Date(NaN); + return new Date(Number.NaN); if (date === void 0) - return new Date(); + return /* @__PURE__ */ new Date(); if (date instanceof Date) return new Date(date); if (typeof date === "string" && !/Z$/i.test(date)) { @@ -116060,9 +110723,9 @@ const normalizeDate = (date) => { } } return new Date(date); -}; -function useDateFormat(date, formatStr = "HH:mm:ss") { - return vueDemi.computed(() => formatDate(normalizeDate(vueDemi.unref(date)), vueDemi.unref(formatStr))); +} +function useDateFormat(date, formatStr = "HH:mm:ss", options = {}) { + return vueDemi.computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options)); } function useIntervalFn(cb, interval = 1e3, options = {}) { @@ -116083,17 +110746,18 @@ function useIntervalFn(cb, interval = 1e3, options = {}) { clean(); } function resume() { - if (vueDemi.unref(interval) <= 0) + const intervalValue = toValue(interval); + if (intervalValue <= 0) return; isActive.value = true; if (immediateCallback) cb(); clean(); - timer = setInterval(cb, vueDemi.unref(interval)); + timer = setInterval(cb, intervalValue); } if (immediate && isClient) resume(); - if (vueDemi.isRef(interval)) { + if (vueDemi.isRef(interval) || typeof interval === "function") { const stopWatch = vueDemi.watch(interval, () => { if (isActive.value && isClient) resume(); @@ -116108,33 +110772,31 @@ function useIntervalFn(cb, interval = 1e3, options = {}) { }; } -var __defProp$6 = Object.defineProperty; -var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; -var __hasOwnProp$8 = Object.prototype.hasOwnProperty; -var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$6 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$8.call(b, prop)) - __defNormalProp$6(a, prop, b[prop]); - if (__getOwnPropSymbols$8) - for (var prop of __getOwnPropSymbols$8(b)) { - if (__propIsEnum$8.call(b, prop)) - __defNormalProp$6(a, prop, b[prop]); - } - return a; -}; function useInterval(interval = 1e3, options = {}) { const { controls: exposeControls = false, - immediate = true + immediate = true, + callback } = options; const counter = vueDemi.ref(0); - const controls = useIntervalFn(() => counter.value += 1, interval, { immediate }); + const update = () => counter.value += 1; + const reset = () => { + counter.value = 0; + }; + const controls = useIntervalFn( + callback ? () => { + update(); + callback(counter.value); + } : update, + interval, + { immediate } + ); if (exposeControls) { - return __spreadValues$6({ - counter - }, controls); + return { + counter, + reset, + ...controls + }; } else { return counter; } @@ -116143,7 +110805,11 @@ function useInterval(interval = 1e3, options = {}) { function useLastChanged(source, options = {}) { var _a; const ms = vueDemi.ref((_a = options.initialValue) != null ? _a : null); - vueDemi.watch(source, () => ms.value = timestamp(), options); + vueDemi.watch( + source, + () => ms.value = timestamp(), + options + ); return ms; } @@ -116170,7 +110836,7 @@ function useTimeoutFn(cb, interval, options = {}) { isPending.value = false; timer = null; cb(...args); - }, vueDemi.unref(interval)); + }, toValue(interval)); } if (immediate) { isPending.value = true; @@ -116179,71 +110845,80 @@ function useTimeoutFn(cb, interval, options = {}) { } tryOnScopeDispose(stop); return { - isPending, + isPending: vueDemi.readonly(isPending), start, stop }; } -var __defProp$5 = Object.defineProperty; -var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols; -var __hasOwnProp$7 = Object.prototype.hasOwnProperty; -var __propIsEnum$7 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$5 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$7.call(b, prop)) - __defNormalProp$5(a, prop, b[prop]); - if (__getOwnPropSymbols$7) - for (var prop of __getOwnPropSymbols$7(b)) { - if (__propIsEnum$7.call(b, prop)) - __defNormalProp$5(a, prop, b[prop]); - } - return a; -}; function useTimeout(interval = 1e3, options = {}) { const { - controls: exposeControls = false + controls: exposeControls = false, + callback } = options; - const controls = useTimeoutFn(noop, interval, options); + const controls = useTimeoutFn( + callback != null ? callback : noop, + interval, + options + ); const ready = vueDemi.computed(() => !controls.isPending.value); if (exposeControls) { - return __spreadValues$5({ - ready - }, controls); + return { + ready, + ...controls + }; } else { return ready; } } +function useToNumber(value, options = {}) { + const { + method = "parseFloat", + radix, + nanToZero + } = options; + return vueDemi.computed(() => { + let resolved = toValue(value); + if (typeof resolved === "string") + resolved = Number[method](resolved, radix); + if (nanToZero && Number.isNaN(resolved)) + resolved = 0; + return resolved; + }); +} + +function useToString(value) { + return vueDemi.computed(() => `${toValue(value)}`); +} + function useToggle(initialValue = false, options = {}) { const { truthyValue = true, falsyValue = false } = options; const valueIsRef = vueDemi.isRef(initialValue); - const innerValue = vueDemi.ref(initialValue); + const _value = vueDemi.ref(initialValue); function toggle(value) { if (arguments.length) { - innerValue.value = value; - return innerValue.value; + _value.value = value; + return _value.value; } else { - innerValue.value = innerValue.value === vueDemi.unref(truthyValue) ? vueDemi.unref(falsyValue) : vueDemi.unref(truthyValue); - return innerValue.value; + const truthy = toValue(truthyValue); + _value.value = _value.value === truthy ? toValue(falsyValue) : truthy; + return _value.value; } } if (valueIsRef) return toggle; else - return [innerValue, toggle]; + return [_value, toggle]; } function watchArray(source, cb, options) { - let oldList = (options == null ? void 0 : options.immediate) ? [] : [ - ...source instanceof Function ? source() : Array.isArray(source) ? source : vueDemi.unref(source) - ]; + let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)]; return vueDemi.watch(source, (newList, _, onCleanup) => { - const oldListRemains = new Array(oldList.length); + const oldListRemains = Array.from({ length: oldList.length }); const added = []; for (const obj of newList) { let found = false; @@ -116263,143 +110938,61 @@ function watchArray(source, cb, options) { }, options); } -var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols; -var __hasOwnProp$6 = Object.prototype.hasOwnProperty; -var __propIsEnum$6 = Object.prototype.propertyIsEnumerable; -var __objRest$5 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$6) - for (var prop of __getOwnPropSymbols$6(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -function watchWithFilter(source, cb, options = {}) { - const _a = options, { - eventFilter = bypassFilter - } = _a, watchOptions = __objRest$5(_a, [ - "eventFilter" - ]); - return vueDemi.watch(source, createFilterWrapper(eventFilter, cb), watchOptions); -} - -var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols; -var __hasOwnProp$5 = Object.prototype.hasOwnProperty; -var __propIsEnum$5 = Object.prototype.propertyIsEnumerable; -var __objRest$4 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$5) - for (var prop of __getOwnPropSymbols$5(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; function watchAtMost(source, cb, options) { - const _a = options, { - count - } = _a, watchOptions = __objRest$4(_a, [ - "count" - ]); + const { + count, + ...watchOptions + } = options; const current = vueDemi.ref(0); - const stop = watchWithFilter(source, (...args) => { - current.value += 1; - if (current.value >= vueDemi.unref(count)) - vueDemi.nextTick(() => stop()); - cb(...args); - }, watchOptions); + const stop = watchWithFilter( + source, + (...args) => { + current.value += 1; + if (current.value >= toValue(count)) + vueDemi.nextTick(() => stop()); + cb(...args); + }, + watchOptions + ); return { count: current, stop }; } -var __defProp$4 = Object.defineProperty; -var __defProps$4 = Object.defineProperties; -var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols; -var __hasOwnProp$4 = Object.prototype.hasOwnProperty; -var __propIsEnum$4 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$4 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$4.call(b, prop)) - __defNormalProp$4(a, prop, b[prop]); - if (__getOwnPropSymbols$4) - for (var prop of __getOwnPropSymbols$4(b)) { - if (__propIsEnum$4.call(b, prop)) - __defNormalProp$4(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b)); -var __objRest$3 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$4) - for (var prop of __getOwnPropSymbols$4(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; function watchDebounced(source, cb, options = {}) { - const _a = options, { + const { debounce = 0, - maxWait = void 0 - } = _a, watchOptions = __objRest$3(_a, [ - "debounce", - "maxWait" - ]); - return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), { - eventFilter: debounceFilter(debounce, { maxWait }) - })); + maxWait = void 0, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: debounceFilter(debounce, { maxWait }) + } + ); } -var __defProp$3 = Object.defineProperty; -var __defProps$3 = Object.defineProperties; -var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; -var __hasOwnProp$3 = Object.prototype.hasOwnProperty; -var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$3 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$3.call(b, prop)) - __defNormalProp$3(a, prop, b[prop]); - if (__getOwnPropSymbols$3) - for (var prop of __getOwnPropSymbols$3(b)) { - if (__propIsEnum$3.call(b, prop)) - __defNormalProp$3(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b)); -var __objRest$2 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$3) - for (var prop of __getOwnPropSymbols$3(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop)) - target[prop] = source[prop]; +function watchDeep(source, cb, options) { + return vueDemi.watch( + source, + cb, + { + ...options, + deep: true } - return target; -}; + ); +} + function watchIgnorable(source, cb, options = {}) { - const _a = options, { - eventFilter = bypassFilter - } = _a, watchOptions = __objRest$2(_a, [ - "eventFilter" - ]); - const filteredCb = createFilterWrapper(eventFilter, cb); + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + const filteredCb = createFilterWrapper( + eventFilter, + cb + ); let ignoreUpdates; let ignorePrevAsyncUpdates; let stop; @@ -116412,10 +111005,14 @@ function watchIgnorable(source, cb, options = {}) { updater(); ignore.value = false; }; - stop = vueDemi.watch(source, (...args) => { - if (!ignore.value) - filteredCb(...args); - }, watchOptions); + stop = vueDemi.watch( + source, + (...args) => { + if (!ignore.value) + filteredCb(...args); + }, + watchOptions + ); } else { const disposables = []; const ignoreCounter = vueDemi.ref(0); @@ -116423,22 +111020,34 @@ function watchIgnorable(source, cb, options = {}) { ignorePrevAsyncUpdates = () => { ignoreCounter.value = syncCounter.value; }; - disposables.push(vueDemi.watch(source, () => { - syncCounter.value++; - }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: "sync" }))); + disposables.push( + vueDemi.watch( + source, + () => { + syncCounter.value++; + }, + { ...watchOptions, flush: "sync" } + ) + ); ignoreUpdates = (updater) => { const syncCounterPrev = syncCounter.value; updater(); ignoreCounter.value += syncCounter.value - syncCounterPrev; }; - disposables.push(vueDemi.watch(source, (...args) => { - const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value; - ignoreCounter.value = 0; - syncCounter.value = 0; - if (ignore) - return; - filteredCb(...args); - }, watchOptions)); + disposables.push( + vueDemi.watch( + source, + (...args) => { + const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value; + ignoreCounter.value = 0; + syncCounter.value = 0; + if (ignore) + return; + filteredCb(...args); + }, + watchOptions + ) + ); stop = () => { disposables.forEach((fn) => fn()); }; @@ -116446,122 +111055,42 @@ function watchIgnorable(source, cb, options = {}) { return { stop, ignoreUpdates, ignorePrevAsyncUpdates }; } +function watchImmediate(source, cb, options) { + return vueDemi.watch( + source, + cb, + { + ...options, + immediate: true + } + ); +} + function watchOnce(source, cb, options) { const stop = vueDemi.watch(source, (...args) => { vueDemi.nextTick(() => stop()); return cb(...args); }, options); + return stop; } -var __defProp$2 = Object.defineProperty; -var __defProps$2 = Object.defineProperties; -var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; -var __hasOwnProp$2 = Object.prototype.hasOwnProperty; -var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$2 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$2.call(b, prop)) - __defNormalProp$2(a, prop, b[prop]); - if (__getOwnPropSymbols$2) - for (var prop of __getOwnPropSymbols$2(b)) { - if (__propIsEnum$2.call(b, prop)) - __defNormalProp$2(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b)); -var __objRest$1 = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$2) - for (var prop of __getOwnPropSymbols$2(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -function watchPausable(source, cb, options = {}) { - const _a = options, { - eventFilter: filter - } = _a, watchOptions = __objRest$1(_a, [ - "eventFilter" - ]); - const { eventFilter, pause, resume, isActive } = pausableFilter(filter); - const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), { - eventFilter - })); - return { stop, pause, resume, isActive }; -} - -var __defProp$1 = Object.defineProperty; -var __defProps$1 = Object.defineProperties; -var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; -var __hasOwnProp$1 = Object.prototype.hasOwnProperty; -var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; -var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues$1 = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp$1.call(b, prop)) - __defNormalProp$1(a, prop, b[prop]); - if (__getOwnPropSymbols$1) - for (var prop of __getOwnPropSymbols$1(b)) { - if (__propIsEnum$1.call(b, prop)) - __defNormalProp$1(a, prop, b[prop]); - } - return a; -}; -var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b)); -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols$1) - for (var prop of __getOwnPropSymbols$1(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; function watchThrottled(source, cb, options = {}) { - const _a = options, { + const { throttle = 0, trailing = true, - leading = true - } = _a, watchOptions = __objRest(_a, [ - "throttle", - "trailing", - "leading" - ]); - return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), { - eventFilter: throttleFilter(throttle, trailing, leading) - })); + leading = true, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: throttleFilter(throttle, trailing, leading) + } + ); } -var __defProp = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); function watchTriggerable(source, cb, options = {}) { let cleanupFn; function onEffect() { @@ -116587,36 +111116,44 @@ function watchTriggerable(source, cb, options = {}) { }); return res2; }; - return __spreadProps(__spreadValues({}, res), { + return { + ...res, trigger - }); + }; } function getWatchSources(sources) { if (vueDemi.isReactive(sources)) return sources; if (Array.isArray(sources)) - return sources.map((item) => getOneWatchSource(item)); - return getOneWatchSource(sources); -} -function getOneWatchSource(source) { - return typeof source === "function" ? source() : vueDemi.unref(source); + return sources.map((item) => toValue(item)); + return toValue(sources); } function getOldValue(source) { return Array.isArray(source) ? source.map(() => void 0) : void 0; } function whenever(source, cb, options) { - return vueDemi.watch(source, (v, ov, onInvalidate) => { - if (v) - cb(v, ov, onInvalidate); - }, options); + const stop = vueDemi.watch( + source, + (v, ov, onInvalidate) => { + if (v) { + if (options == null ? void 0 : options.once) + vueDemi.nextTick(() => stop()); + cb(v, ov, onInvalidate); + } + }, + { + ...options, + once: false + } + ); + return stop; } -exports.__onlyVue3 = __onlyVue3; -exports.and = logicAnd; exports.assert = assert; exports.autoResetRef = refAutoReset; exports.bypassFilter = bypassFilter; +exports.camelize = camelize; exports.clamp = clamp; exports.computedEager = computedEager; exports.computedWithControl = computedWithControl; @@ -116638,33 +111175,32 @@ exports.eagerComputed = computedEager; exports.extendRef = extendRef; exports.formatDate = formatDate; exports.get = get; +exports.getLifeCycleTarget = getLifeCycleTarget; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; exports.identity = identity; exports.ignorableWatch = watchIgnorable; exports.increaseWithUnit = increaseWithUnit; +exports.injectLocal = injectLocal; exports.invoke = invoke; -exports.isBoolean = isBoolean; exports.isClient = isClient; exports.isDef = isDef; exports.isDefined = isDefined; -exports.isFunction = isFunction; exports.isIOS = isIOS; -exports.isNumber = isNumber; exports.isObject = isObject; -exports.isString = isString; -exports.isWindow = isWindow; -exports.logicAnd = logicAnd; -exports.logicNot = logicNot; -exports.logicOr = logicOr; +exports.isWorker = isWorker; exports.makeDestructurable = makeDestructurable; exports.noop = noop; exports.normalizeDate = normalizeDate; -exports.not = logicNot; +exports.notNullish = notNullish; exports.now = now; +exports.objectEntries = objectEntries; +exports.objectOmit = objectOmit; exports.objectPick = objectPick; -exports.or = logicOr; exports.pausableFilter = pausableFilter; exports.pausableWatch = watchPausable; exports.promiseTimeout = promiseTimeout; +exports.provideLocal = provideLocal; exports.rand = rand; exports.reactify = reactify; exports.reactifyObject = reactifyObject; @@ -116686,13 +111222,27 @@ exports.throttledRef = refThrottled; exports.throttledWatch = watchThrottled; exports.timestamp = timestamp; exports.toReactive = toReactive; +exports.toRef = toRef; exports.toRefs = toRefs; +exports.toValue = toValue; exports.tryOnBeforeMount = tryOnBeforeMount; exports.tryOnBeforeUnmount = tryOnBeforeUnmount; exports.tryOnMounted = tryOnMounted; exports.tryOnScopeDispose = tryOnScopeDispose; exports.tryOnUnmounted = tryOnUnmounted; exports.until = until; +exports.useArrayDifference = useArrayDifference; +exports.useArrayEvery = useArrayEvery; +exports.useArrayFilter = useArrayFilter; +exports.useArrayFind = useArrayFind; +exports.useArrayFindIndex = useArrayFindIndex; +exports.useArrayFindLast = useArrayFindLast; +exports.useArrayIncludes = useArrayIncludes; +exports.useArrayJoin = useArrayJoin; +exports.useArrayMap = useArrayMap; +exports.useArrayReduce = useArrayReduce; +exports.useArraySome = useArraySome; +exports.useArrayUnique = useArrayUnique; exports.useCounter = useCounter; exports.useDateFormat = useDateFormat; exports.useDebounce = refDebounced; @@ -116704,11 +111254,15 @@ exports.useThrottle = refThrottled; exports.useThrottleFn = useThrottleFn; exports.useTimeout = useTimeout; exports.useTimeoutFn = useTimeoutFn; +exports.useToNumber = useToNumber; +exports.useToString = useToString; exports.useToggle = useToggle; exports.watchArray = watchArray; exports.watchAtMost = watchAtMost; exports.watchDebounced = watchDebounced; +exports.watchDeep = watchDeep; exports.watchIgnorable = watchIgnorable; +exports.watchImmediate = watchImmediate; exports.watchOnce = watchOnce; exports.watchPausable = watchPausable; exports.watchThrottled = watchThrottled; @@ -116719,10 +111273,10 @@ exports.whenever = whenever; /***/ }), -/***/ "./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs": -/*!***********************************************************************!*\ - !*** ./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs ***! - \***********************************************************************/ +/***/ "./node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.cjs": +/*!*************************************************************************!*\ + !*** ./node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.cjs ***! + \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var Vue = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js") @@ -121234,4 +115788,4 @@ let urlAlphabet = /***/ }) }]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUUsc0RBQVM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2Q0FBSTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1Q0FBdUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxpREFBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBLEtBQUssSUFBcUM7QUFDMUMsSUFBSSwwREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLG1EQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhNQUE4TTtBQUMxTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWcyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNQbitCO0FBQzNWO0FBQ3VQOztBQUV6UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsS0FBSztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsUUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IscURBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHNEQUFTO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVU7QUFDckIsb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBb0I7QUFDOUMsNENBQTRDLCtEQUFrQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BELG9CQUFvQiwrREFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQsWUFBWSx1REFBSSx5QkFBeUIsSUFBSSxRQUFRLHlCQUF5QjtBQUM5RSx5QkFBeUIsT0FBTztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHNEQUFTO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkVBQTBCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaURBQUk7QUFDakI7QUFDQSxhQUFhLDREQUFlO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsdURBQVU7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHFEQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGtFQUFlO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCxnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBLGdDQUFnQyxjQUFjO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0QkFBNEI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGtCQUFrQixrQkFBa0I7QUFDN0M7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDLGdDQUFnQyxvREFBTztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsaURBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFRO0FBQzVCO0FBQ0Esc0JBQXNCLHFEQUFVO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHNEQUFTO0FBQy9DO0FBQ0E7QUFDQSxzQ0FBc0Msc0RBQVM7QUFDL0M7QUFDQTtBQUNBLHlDQUF5QyxzREFBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDhEQUFXLFlBQVksbURBQU0sR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixxRUFBa0I7QUFDM0M7QUFDQSxhQUFhLEtBQXFDLEtBQUssdURBQUk7QUFDM0QsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUMsS0FBSyx1REFBSTtBQUMzRCxtQkFBbUIsa0RBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCxnQkFBZ0IsdURBQUkscURBQXFELEtBQUs7QUFDOUUsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUVBQWtCO0FBQ3ZDO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxrRUFBZTtBQUNuQixJQUFJLDREQUFTO0FBQ2I7QUFDQSxxREFBcUQsaUJBQWlCO0FBQ3RFLFFBQVEsOERBQVc7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHVEQUFRO0FBQ3BDO0FBQ0E7QUFDQSw0QkFBNEIscURBQU07QUFDbEMsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxJQUFJO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixPQUFPLEtBQUssb0RBQUMsQ0FBQyw2REFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbURBQU0sR0FBRyxFQUFFLG1FQUFvQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0RBQU87QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0RBQWdELEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssc0lBQXNJLEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssYUFBYTtBQUN6WDtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdLQUFnSztBQUM1SztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXLG1EQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxREFBUTtBQUN4QixTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkJBQTJCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixtREFBTSxHQUFHO0FBQ2xDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLE9BQU87QUFDMUIseUJBQXlCLHFFQUFrQjtBQUMzQyxzQkFBc0IscUVBQWtCO0FBQ3hDO0FBQ0E7QUFDQSxRQUFRLDREQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsNkJBQTZCLHdEQUFLO0FBQ2xDO0FBQ0Esc0NBQXNDLHVEQUFRO0FBQzlDO0FBQ0EsdUNBQXVDLDJFQUF3QjtBQUMvRCw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQSxvQkFBb0IscUVBQWtCLFFBQVEseUVBQXNCO0FBQ3BFO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9ELG9CQUFvQix1REFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseUJBQXlCO0FBQ3pEO0FBQ0Esb0JBQW9CLHFFQUFrQixRQUFRLHlFQUFzQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOERBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxHQUFHLEtBQUssR0FBRztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0RBQU8sZ0JBQWdCLDJEQUFjO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsYUFBYSxzQkFBc0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIscURBQVE7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBLEtBQUs7QUFDTCx1QkFBdUIsb0JBQW9CLHNCQUFzQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHFEQUFRO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPO0FBQ3ZCLDhCQUE4Qix5REFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrREFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGlCQUFpQjtBQUMzQztBQUNBLFFBQVEsb0RBQU87QUFDZixxQkFBcUIseURBQVk7QUFDakM7QUFDQSxhQUFhLGtEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix1REFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsT0FBTztBQUN6QixxQkFBcUIsdURBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTCx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQSx5QkFBeUIsdURBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG9CQUFvQixVQUFVO0FBQ2hELDJCQUEyQixrREFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQVE7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9EQUFPLFlBQVksa0RBQUs7QUFDL0MsU0FBUyxLQUFxQztBQUM5QyxZQUFZLHVEQUFJO0FBQ2hCLDJCQUEyQixtREFBbUQ7QUFDOUU7QUFDQTtBQUNBLDJDQUEyQyxPQUFPO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QixrQ0FBa0MseURBQVk7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLE9BQU8sUUFBUSxPQUFPO0FBQ3RELGlDQUFpQyxPQUFPO0FBQ3hDLDJCQUEyQix1REFBVTtBQUNyQyxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLG9DQUFvQyxPQUFPO0FBQzNDLFlBQVksb0RBQU87QUFDbkIsK0JBQStCLHlEQUFZO0FBQzNDLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsaUJBQWlCLGtEQUFLO0FBQ3RCO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxFQUFFO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLE9BQU8sSUFBSSxZQUFZO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtCQUFrQixPQUFPLElBQUksWUFBWTtBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCLGlCQUFpQixJQUFJLFlBQVk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxtREFBTSxHQUFHLFdBQVc7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSwwRUFBdUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzREFBUyxTQUFTLHFEQUFRO0FBQ2xEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix1REFBSTtBQUNwQjtBQUNBLGFBQWE7QUFDYjtBQUNBLGdCQUFnQix1REFBSTtBQUNwQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCxZQUFZLHVEQUFJLGdEQUFnRCxVQUFVO0FBQzFFO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSSxtQ0FBbUMsZUFBZTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWdTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbHFEaFM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywrQkFBK0I7QUFDbkU7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLEtBQUssRUFBRSxpREFBaUQsS0FBSyxTQUFTO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxjQUFjO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxLQUFLO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0JBQXNCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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O0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMENBQUs7QUFDL0I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUssSUFBSSxlQUFlO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0EsNERBQTRELFdBQVc7QUFDdkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUksWUFBWTs7QUFFbkIsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLDBDQUFLOztBQUVQLEVBQUUsMENBQUs7QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVo7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQkFBa0IsNkNBQVE7QUFDMUI7QUFDQSxHQUFHOztBQUVILGlCQUFpQiw2Q0FBUTtBQUN6QjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUgsdUJBQXVCLDZDQUFRO0FBQy9CO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQiw2Q0FBUTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQSxHQUFHO0FBQ0g7QUFDQSx5Q0FBeUMsNkNBQVE7QUFDakQ7QUFDQSxHQUFHOztBQUVILHdDQUF3Qyw2Q0FBUTtBQUNoRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0NBQXdDLDZDQUFRO0FBQ2hEO0FBQ0E7QUFDQSxHQUFHOztBQUVILHFDQUFxQyw2Q0FBUTtBQUM3QztBQUNBLEdBQUc7O0FBRUgscUNBQXFDLDZDQUFRO0FBQzdDO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUksNkNBQVE7QUFDWjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDZDQUFRO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2Q0FBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQyxPQUFPOztBQUVSO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3RELCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsS0FBSztBQUNMO0FBQ0EsR0FBRyxJQUFJLEdBQUc7O0FBRVY7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBLFFBQVE7QUFDUixNQUFNOzs7QUFHTjtBQUNBOztBQUVBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7QUFDRjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRTtBQUMvRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsdUJBQXVC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SztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVosZ0JBQWdCLHVEQUFrQjs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7QUFDRDtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVILG9CQUFvQiw2Q0FBUTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDJDQUFNOztBQUVaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQkFBbUIsd0NBQUc7O0FBRXRCLHlCQUF5QiwrQ0FBVTs7QUFFbkM7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5QkFBeUI7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxNQUFNLDZDQUFRO0FBQ2Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUgsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUcsSUFBSSxlQUFlOztBQUV0QixFQUFFLDBDQUFLO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJLGlDQUFpQzs7QUFFeEM7O0FBRUEsRUFBRSw4Q0FBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDJDQUFNOztBQUVaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGdCQUFnQix3Q0FBRzs7QUFFbkI7O0FBRUE7QUFDQSxPQUFPLCtCQUErQjtBQUN0Qzs7QUFFQTtBQUNBLE9BQU8sK0JBQStCO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0Qjs7QUFFQSxrQkFBa0IsaUVBQWlFOztBQUVuRjs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVILGdCQUFnQiw2Q0FBUTtBQUN4QixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsa0JBQWtCLEVBQUUseUJBQXlCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxnQkFBZ0IsSUFBSSxvQkFBb0I7QUFDekU7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQSxPQUFPLCtCQUErQixxQkFBcUIsd0JBQXdCO0FBQ25GOztBQUVBO0FBQ0EsT0FBTywrQkFBK0Isb0JBQW9CLGFBQWE7QUFDdkU7O0FBRUEsd0NBQXdDLE1BQU07O0FBRTlDLHVDQUF1QyxNQUFNOztBQUU3QyxxQ0FBcUMsT0FBTzs7QUFFNUM7O0FBRUEsRUFBRSw4Q0FBUztBQUNYO0FBQ0E7QUFDQSxtREFBbUQsU0FBUztBQUM1RDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVo7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiwrQ0FBVTtBQUNoQztBQUNBLGtCQUFrQiwrQ0FBVTs7QUFFNUIsZUFBZSwrQ0FBVTs7QUFFekIsZ0JBQWdCLCtDQUFVOztBQUUxQixtQkFBbUIsK0NBQVU7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsT0FBTztBQUNQO0FBQ0E7QUFD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QkFBaUI7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsRUFBRTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZUFBZTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSx5QkFBeUIsUUFBUTtBQUNqQztBQUNBLHNCQUFzQixlQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsU0FBUztBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLFNBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLFNBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0Esb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdEQUF3RCxPQUFPO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3REFBd0QsT0FBTztBQUMvRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsUUFBUTtBQUM5QjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUztBQUM3QjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixZQUFZO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsWUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUM1dkRBLGNBQWMsYUFBYSwrQ0FBK0MsZ0RBQWdELGVBQWUsUUFBUSxJQUFJLDBDQUEwQyx5Q0FBeUMsU0FBUyxhQUFhLHdDQUF3QyxJQUFJLG1EQUFtRCxTQUFTLGlCQUFpQixtQkFBbUI7Ozs7Ozs7Ozs7QUNBMVksQ0FBQztBQUNELEtBQUssSUFBMkI7QUFDaEM7QUFDQSxxQ0FBcUMsbUJBQU8sQ0FBQyxnREFBUSxHQUFHLG1CQUFPLENBQUMsNERBQWMsR0FBRyxtQkFBTyxDQUFDLDhDQUFPLEdBQUcsbUJBQU8sQ0FBQyxvREFBVSxHQUFHLG1CQUFPLENBQUMsOERBQWU7QUFDL0k7QUFDQSxNQUFNLEVBT0o7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MsbUJBQW1CO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLGlCQUFpQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjs7QUFFQSxDQUFDOzs7Ozs7Ozs7O0FDek9ELENBQUM7QUFDRCxLQUFLLElBQTJCO0FBQ2hDO0FBQ0EscUNBQXFDLG1CQUFPLENBQUMsZ0RBQVEsR0FBRyxtQkFBTyxDQUFDLDREQUFjLEdBQUcsbUJBQU8sQ0FBQyw4Q0FBTyxHQUFHLG1CQUFPLENBQUMsb0RBQVUsR0FBRyxtQkFBTyxDQUFDLDhEQUFlO0FBQy9JO0FBQ0EsTUFBTSxFQU9KO0FBQ0YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVB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LEVBT0o7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixRQUFRO0FBQ2pDO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBLDZCQUE2QixRQUFRO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztB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QUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsUUFBUTtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVOztBQUVWO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0EsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEMsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBLGlCQUFpQixXQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjs7QUFFQSxDQUFDOzs7Ozs7Ozs7O0FDclVELENBQUM7QUFDRCxLQUFLLElBQTJCO0FBQ2hDO0FBQ0EscUNBQXFDLG1CQUFPLENBQUMsZ0RBQVEsR0FBRyxtQkFBTyxDQUFDLDREQUFjLEdBQUcsbUJBQU8sQ0FBQyw4Q0FBTyxHQUFHLG1CQUFPLENBQUMsb0RBQVUsR0FBRyxtQkFBTyxDQUFDLDhEQUFlO0FBQy9JO0FBQ0EsTUFBTSxFQU9KO0FBQ0YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRUFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGVBQWUsb0VBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxxRUFBZTtBQUMxQixHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQix1RUFBYTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxXQUFXLHFFQUFlO0FBQzFCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxtRUFBaUI7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IseUVBQWU7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxxRUFBZTtBQUMxQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7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QUk7QUFDSjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRSx3QkFBd0IsNENBQTRDO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCQTtBQUNnRDtBQUN3QjtBQUNoQjtBQUNFO0FBQ2M7QUFDQTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0o7QUFDQTtBQUM4QjtBQUNwQztBQUNrQjtBQUNWO0FBQ0U7QUFDRTtBQUNBO0FBQzBCO0FBQ0E7QUFDZ0I7QUFDUjtBQUNKO0FBQ0k7QUFDTjtBQUNBO0FBQ2xCO0FBQ0U7QUFDYztBQUNBO0FBQ1Y7QUFDRjtBQUNJO0FBQ0Y7QUFDSjtBQUNBO0FBQ0E7QUFDRTtBQUNJO0FBQ0Y7QUFDSTtBQUNOO0FBQ007QUFDTjtBQUNGO0FBQ0U7QUFDcEI7QUFDTTtBQUNKO0FBQ007QUFDUTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0Y7QUFDTTtBQUNSO0FBQ0E7QUFDVTtBQUNoQjtBQUNnQjtBQUNZO0FBQ0Y7QUFDWTtBQUN0QjtBQUNWO0FBQ1E7QUFDUTtBQUNSO0FBQ0E7QUFDRTtBQUNKO0FBQ1Y7QUFDRjtBQUNZO0FBQ0k7QUFDRjtBQUNSO0FBQ2dCO0FBQ2xCO0FBQ0U7QUFDRTtBQUNRO0FBQ007QUFDSjtBQUNWO0FBQ0o7QUFDMEM7QUFDdEM7QUFDQTtBQUNOO0FBQ1E7QUFDUjtBQUNjO0FBQ047QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7QUFDcEUsd0JBQXdCLDRDQUE0QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLHlFQUFlO0FBQ3RCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsV0FBVyx5RUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFNBQVMseUVBQWU7QUFDeEI7QUFDQTtBQUNBLEdBQUc7QUFDSCxPQUFPLHlFQUFlO0FBQ3RCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsYUFBYSx5RUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGlFQUFlLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUl3QztBQUNjO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDTztBQUNQO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0d3RDtBQUNzQztBQUNuQztBQUNEO0FBQ2xCO0FBQ0s7QUFDdUI7QUFDMkI7QUFDNkI7QUFDekU7QUFDTTtBQUNLO0FBQ1o7QUFDa0IsQ0FBQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7O0FBR0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLFlBQVk7O0FBRXJCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRixvQkFBb0I7O0FBRXBCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLDhDQUE4QztBQUM5QztBQUNBO0FBQ0EsbUJBQW1CLGlDQUFpQztBQUNwRCxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxZQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsU0FBUztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsSUFBSTtBQUN0Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLElBQUk7O0FBRXBCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxJQUFJO0FBQzlDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBLGlDQUFpQyxNQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxlQUFlOztBQUVmLFNBQVM7O0FBRVQ7QUFDQSxTQUFTLGdDQUFnQztBQUN6QyxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLHFDQUFxQztBQUM5QyxTQUFTO0FBQ1QsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrREFBK0Q7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0Esa0VBQWtFLFVBQVU7QUFDNUUsdUNBQXVDLDJCQUEyQjtBQUNsRTtBQUNBLGlDQUFpQyxNQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxhQUFhLHVFQUF1RTtBQUNwRjtBQUNBO0FBQ0EsYUFBYSw0QkFBNEI7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDZEQUE2RDs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLFNBQVM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpREFBaUQ7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELFdBQVcsNENBQTRDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUI7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQSxFQUFFOzs7O0FBSUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUyxHQUFHO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7Ozs7QUFJQTs7QUFFQTs7QUFFQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUEsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsMkJBQTJCLHdCQUF3Qjs7QUFFbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsMkNBQTJDO0FBQzNDLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5QyxxQ0FBcUM7QUFDOUUscUNBQXFDLHNDQUFzQztBQUMzRSxxQ0FBcUMscUNBQXFDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZOztBQUVaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUM7QUFDckMsc0NBQXNDO0FBQ3RDLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7OztBQUtBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLGFBQWE7QUFDckMsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsU0FBUztBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTs7O0FBR0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWU7O0FBRWY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixnQkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7QUFDRjs7QUFFQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEdBQUc7QUFDSDs7QUFFQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxPQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLE9BQU87QUFDaEI7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVzs7QUFFWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxlQUFlLHNCQUFzQjtBQUNyQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxnRUFBZ0U7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLGNBQWM7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUJBQW1CO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdUNBQXVDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBdUQ7QUFDL0U7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGVBQWUsb0NBQW9DO0FBQ25EOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOzs7QUFHRjs7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QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMsY0FBYztBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhEQUE4RDtBQUMzRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLE9BQU87O0FBRWhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBOztBQUVBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFlBQVksU0FBUztBQUNyQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsZ0JBQWdCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxrREFBa0QsMEJBQTBCO0FBQzVFOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxnQkFBZ0I7QUFDM0I7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTs7QUFFQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBOztBQUVBLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxnQkFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsYUFBYTtBQUNsQyxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyxTQUFTO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxTQUFTO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsWUFBWSxpQkFBaUI7QUFDN0IsZUFBZTtBQUNmLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUyxtQkFBbUI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHVCQUF1QjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBOztBQUVBLEtBQUs7QUFDTDs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLFNBQVM7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7OztBQUdBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBOztBQUVBOztBQUVBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9DQUFvQzs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGNBQWM7O0FBRWQ7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSixHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBLHNCQUFzQjtBQUN0QiwyQkFBMkI7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLHdCQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQyxjQUFjLHVDQUF1QztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxxREFBcUQ7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLGVBQWUscURBQXFEO0FBQ3BFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0EsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSyxJQUEwQztBQUMvQyxDQUFDLGlDQUFrQixFQUFFLG1DQUFFO0FBQ3ZCO0FBQ0EsRUFBRTtBQUFBLGtHQUFFO0FBQ0o7Ozs7O0FBS0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBLEVBQUU7Ozs7Ozs7Ozs7O0FDNXBWRixnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDTkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMvQkEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQy9CQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDTkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQy9CQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDTkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ05BLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDMUJBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ0xBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNMQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDeEJBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDWEEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTs7QUFFdkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMzQkEsU0FBUyxtQkFBTyxDQUFDLHlDQUFNOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2hCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoQkEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNyQkEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsWUFBWSxtQkFBTyxDQUFDLCtDQUFTO0FBQzdCLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMzQixhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNyS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7O0FDN0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbkJBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNiQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDaEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDM0JBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbEZBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUM3REEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDOUNBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzNEQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDN0JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25CQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDcENBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjs7QUFFbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2JBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDWkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQSxrQkFBa0IsS0FBMEI7O0FBRTVDO0FBQ0EsZ0NBQWdDLFFBQWE7O0FBRTdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2xDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNmQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDaEJBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbkJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVEsVUFBVTtBQUM3QixXQUFXLFVBQVU7QUFDckIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDdkNBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsVUFBVTtBQUM3QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsVUFBVTtBQUM3QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ0xBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25CQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsSUFBSTtBQUNKLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7O0FDVkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNuRkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQy9HQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDekZBO0FBQ0Esd0JBQXdCLHFCQUFNLGdCQUFnQixxQkFBTSxJQUFJLHFCQUFNLHNCQUFzQixxQkFBTTs7QUFFMUY7Ozs7Ozs7Ozs7O0FDSEEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2ZBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBLHlCQUF5QixtQkFBTyxDQUFDLDJFQUF1QjtBQUN4RCxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDdkJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoQkEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ0xBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7QUM3QkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDeEJBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxVQUFVLG1CQUFPLENBQUMsNkNBQVE7QUFDMUIsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDekJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDaEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDN0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN0QkEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDdEJBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDekJBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDNUVBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZEEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDYkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ1pBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbENBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2xCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZkEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN6QkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3BCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2ZBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2ZBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2pCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNMQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQSxnQ0FBZ0MsUUFBYTs7QUFFN0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osQ0FBQzs7QUFFRDs7Ozs7Ozs7Ozs7QUM3QkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2RBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDUkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNqQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNiQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxVQUFVLG1CQUFPLENBQUMsNkNBQVE7QUFDMUIsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakNBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN6QkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRTtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN2Q0EsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMzQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRLElBQUksUUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25DQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRLElBQUksUUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzVCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN2Q0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsVUFBVTtBQUNyQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDekNBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0EsMEJBQTBCLG1CQUFtQixpQkFBaUI7QUFDOUQ7QUFDQTtBQUNBLDBCQUEwQixtQkFBbUIsaUJBQWlCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNwQ0EsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGdDQUFnQyxtQkFBTyxDQUFDLHlGQUE4Qjs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUM1QkEsZ0NBQWdDLG1CQUFPLENBQUMseUZBQThCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7OztBQzdCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsbUJBQW1CO0FBQ2xFO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3pCQSx3QkFBd0IsbUJBQU8sQ0FBQyx5RUFBc0I7QUFDdEQsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoQ0Esa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDNUJBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQSxrQkFBa0IsS0FBMEI7O0FBRTVDO0FBQ0EsZ0NBQWdDLFFBQWE7O0FBRTdDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNyQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCO0FBQzNDLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN4QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzVFQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDbENBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxXQUFXLFVBQVU7QUFDckIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDeENBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMzQyxvQkFBb0IsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTdDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25DQSxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNuQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDcENBLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2hDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNsQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQSx1QkFBdUIsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25DQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDeENBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDckNBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3ZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3JCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzVCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUM3REEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDMUJBLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNwQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUMxQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDN0JBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDNUJBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3JCQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDM0JBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzNCQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDcENBLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDL0JBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUztBQUM1QixlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxRQUFRLG1CQUFPLENBQUMseUNBQU07QUFDdEIsUUFBUSxtQkFBTyxDQUFDLHlDQUFNO0FBQ3RCLFNBQVMsbUJBQU8sQ0FBQywyQ0FBTztBQUN4QixpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7QUFDNUIsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUztBQUM1QixZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsUUFBUSxtQkFBTyxDQUFDLHlDQUFNO0FBQ3RCLFNBQVMsbUJBQU8sQ0FBQywyQ0FBTztBQUN4QixhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDOzs7Ozs7Ozs7OztBQ3pEQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZ0NBQWdDLG1CQUFPLENBQUMseUZBQThCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzVCQSxnQ0FBZ0MsbUJBQU8sQ0FBQyx5RkFBOEI7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7O0FDN0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2pCQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUN6REEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDekNBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ25DQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDckNBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDL0RBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLFdBQVc7QUFDWDtBQUNBLGNBQWMsUUFBUTtBQUN0QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDL0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7O0FDcENBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQzNCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7OztBQ2pDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RLRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2pFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN6R0Q7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDekdEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNyRkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hJRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0SUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JORDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDckZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNyRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQy9GRDtBQUNB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMvTkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzNGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDbkVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDakVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxpQ0FBaUM7QUFDakMsY0FBYztBQUNkLGdDQUFnQztBQUNoQyxjQUFjO0FBQ2QsbUNBQW1DO0FBQ25DLGNBQWM7QUFDZCxtQ0FBbUM7QUFDbkMsY0FBYztBQUNkLGdDQUFnQztBQUNoQyxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzdJRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNsR0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDL0hEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0VEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7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QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM3REQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzFGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFJLENBQ3lCO0FBQzdCLENBQUMsc0JBQXNCOztBQUV2Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLElBQUk7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZC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QSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQU87QUFDeEMsZ0JB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtCQUErQjtBQUNuRDtBQUNBOztBQUVBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRHQUE0RztBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxzQkFBc0I7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msc0JBQXNCO0FBQzFEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsbUJBQW1CO0FBQ3pDO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdmpMRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxNQUFNLElBQTBDO0FBQ2hEO0FBQ0EsSUFBSSxpQ0FBTyxDQUFDLHlFQUFRLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUMvQixJQUFJLEtBQUssRUFxQk47QUFDSCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxlQUFlO0FBQ3RCLFdBQVcsV0FBVyxPQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1QyxPQUFPO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLDBDQUEwQztBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQyxRQUFRO0FBQ1I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVixrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw2QkFBNkI7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0IsaUJBQWlCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQix3QkFBd0I7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixzQkFBc0I7QUFDNUM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1Qzs7QUFFdkM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsaUJBQWlCO0FBQ3ZDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLEdBQUcsUUFBUTs7QUFFdkM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtB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QUNBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEMsd0NBQXdDLE9BQU87QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Ozs7Ozs7Ozs7OztBQ3REWjs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBCQUEwQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsT0FBTyxtQkFBbUIsa0JBQWtCLGFBQWE7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsWUFBWTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkJBQTJCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FB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QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxZQUFZO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFLFlBQVk7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTSxHQUFHLElBQUk7QUFDM0IsWUFBWSxNQUFNLEVBQUUsSUFBSTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILG1DQUFtQztBQUNuQztBQUNBO0FBQ0EseUZBQXlGO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQSwyRkFBMkY7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0EsMkZBQTJGO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7QUFDdEMsVUFBVSx1QkFBdUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRyxJQUFJLGdDQUFnQztBQUN2QyxXQUFXO0FBQ1g7O0FBRUEsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDLFVBQVUsK0NBQStDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0EsSUFBSTtBQUNK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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELElBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxJQUFJO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUYsZ0JBQWdCO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSwwREFBMEQ7QUFDMUQsVUFBVSx5QkFBeUI7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGNBQWM7QUFDakQsVUFBVSwrQkFBK0I7QUFDekM7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0Esd0NBQXdDLG1CQUFtQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxlQUFlO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxvQ0FBb0MsSUFBSTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOLHdDQUF3QyxtQkFBbUI7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LE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsbUJBQW1CO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FB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VyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsUUFBUTtBQUNSLDhEQUE4RDtBQUM5RCxRQUFRO0FBQ1I7QUFDQSxzRkFBc0Y7QUFDdEY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7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QzlCOzs7Ozs7Ozs7Ozs7Ozs7QUNUZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ05rQztBQUNuQjtBQUNmLE1BQU0sc0RBQU87QUFDYjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVmtDO0FBQ1M7QUFDNUI7QUFDZixZQUFZLDJEQUFXO0FBQ3ZCLFNBQVMsc0RBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7OztBQ0xlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7OztBQ1JxRDtBQUN0QztBQUNmO0FBQ0Esb0NBQW9DLGdFQUFnQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxzRkFBc0YsZ0VBQWdCO0FBQ3RHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDaUU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQ3BFO0FBQ0E7QUFDc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1jb3JlL2Rpc3QvY29tcGlsZXItY29yZS5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1kb20vZGlzdC9jb21waWxlci1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vY29uc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vZW52LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3Byb3h5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3RpbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcmVhY3Rpdml0eS9kaXN0L3JlYWN0aXZpdHkuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcnVudGltZS1jb3JlL2Rpc3QvcnVudGltZS1jb3JlLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtZG9tL2Rpc3QvcnVudGltZS1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvc2hhcmVkL2Rpc3Qvc2hhcmVkLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC9kaXN0L211bHRpc2VsZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYXNlNjQtanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9hZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9ibG93ZmlzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2NpcGhlci1jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2VuYy1iYXNlNjQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9lbmMtYmFzZTY0dXJsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvZW5jLXV0ZjE2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvZXZwa2RmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvZm9ybWF0LWhleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2htYWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2xpYi10eXBlZGFycmF5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21kNS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21vZGUtY2ZiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbW9kZS1jdHItZ2xhZG1hbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21vZGUtY3RyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbW9kZS1lY2IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tb2RlLW9mYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3BhZC1hbnNpeDkyMy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3BhZC1pc28xMDEyNi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3BhZC1pc285Nzk3MS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3BhZC1ub3BhZGRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYWQtemVyb3BhZGRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYmtkZjIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9yYWJiaXQtbGVnYWN5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcmFiYml0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcmM0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcmlwZW1kMTYwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhMS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTIyNC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTI1Ni5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGEzODQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy90cmlwbGVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy94NjQtY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L21haW4uY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9hc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Nsb25lT2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZm9ybWF0L2Zvcm1hdHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9saWdodEZvcm1hdHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9sb25nRm9ybWF0dGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDRGF5T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3Byb3RlY3RlZFRva2Vucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDSVNPRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zZXRVVENJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zZXRVVENXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zdGFydE9mVVRDV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi90b0ludGVnZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRCdXNpbmVzc0RheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGREYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRJU09XZWVrWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRNaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRNaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRTZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FyZUludGVydmFsc092ZXJsYXBwaW5nL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY2xhbXAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jbG9zZXN0SW5kZXhUby9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Nsb3Nlc3RUby9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NvbXBhcmVBc2MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jb21wYXJlRGVzYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NvbnN0YW50cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RheXNUb1dlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5EYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5ZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hEYXlPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaEhvdXJPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaE1pbnV0ZU9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoTW9udGhPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFF1YXJ0ZXJPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFdlZWtPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFdlZWtlbmRPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFdlZWtlbmRPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoWWVhck9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZkRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mRGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mTWludXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mU2Vjb25kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZUb2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mVG9tb3Jyb3cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZldlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlllc3RlcmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RGlzdGFuY2VTdHJpY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREaXN0YW5jZVRvTm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdER1cmF0aW9uL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0SVNPL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0SVNPOTA3NS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdElTT0R1cmF0aW9uL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0UkZDMzMzOS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdFJGQzcyMzEvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zyb21Vbml4VGltZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXlzSW5Nb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERheXNJblllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREZWNhZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldEhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0SVNPRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0SVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0SVNPV2Vla3NJblllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRNaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRNaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0TW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRTZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0VGltZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFVuaXhUaW1lL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0V2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWtPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0V2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRXZWVrc0luTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaG91cnNUb01pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2hvdXJzVG9NaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaG91cnNUb1NlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2ludGVydmFsVG9EdXJhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2ludGxGb3JtYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbnRsRm9ybWF0RGlzdGFuY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0FmdGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNCZWZvcmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0RhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0VxdWFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNFeGlzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0ZpcnN0RGF5T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRnJpZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNGdXR1cmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0xhc3REYXlPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNMZWFwWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzTWF0Y2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc01vbmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzUGFzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZURheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZUhvdXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVNaW51dGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZVF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVTZWNvbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2F0dXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1N1bmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc0hvdXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzTWludXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzU2Vjb25kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RodXJzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUb2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVG9tb3Jyb3cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1R1ZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1ZhbGlkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNXZWRuZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1dlZWtlbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1dpdGhpbkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNZZXN0ZXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZEZWNhZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZlF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xpZ2h0Rm9ybWF0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRGb3JtYXRMb25nRm4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvX2xpYi9idWlsZExvY2FsaXplRm4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvX2xpYi9idWlsZE1hdGNoRm4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvX2xpYi9idWlsZE1hdGNoUGF0dGVybkZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0RGlzdGFuY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRMb25nL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0UmVsYXRpdmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9sb2NhbGl6ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL21hdGNoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWF4L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWlsbGlzZWNvbmRzVG9Ib3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kc1RvTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kc1RvU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbnV0ZXNUb0hvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWludXRlc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWludXRlc1RvU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21vbnRoc1RvUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9tb250aHNUb1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dERheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRGcmlkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0TW9uZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dFNhdHVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dFN1bmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRUaHVyc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRUdWVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dFdlZG5lc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9TZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9BTVBNTWlkbmlnaHRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvQU1QTVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXRlUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheU9mWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXlQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF5UGVyaW9kUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0VyYVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9FeHRlbmRlZFllYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRnJhY3Rpb25PZlNlY29uZFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMFRvMTFQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjB0bzIzUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxVG8yNFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMXRvMTJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPRGF5UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1RpbWV6b25lUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1RpbWV6b25lV2l0aFpQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPV2Vla1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09XZWVrWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbERheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbFdlZWtQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTG9jYWxXZWVrWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9NaW51dGVQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTW9udGhQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvUXVhcnRlclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TZWNvbmRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVNb250aFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TdGFuZEFsb25lUXVhcnRlclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9UaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvVGltZXN0YW1wU2Vjb25kc1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9ZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2VJU08vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZUpTT04vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzRnJpZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNNb25kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c1NhdHVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNTdW5kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c1RodXJzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNUdWVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNXZWRuZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9xdWFydGVyc1RvTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcXVhcnRlcnNUb1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcm91bmRUb05lYXJlc3RNaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2Vjb25kc1RvSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZWNvbmRzVG9NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZWNvbmRzVG9NaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0RGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldERheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldERheU9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldERlZmF1bHRPcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRJU09EYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRNaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRNaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0TW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0U2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFdlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZkRlY2FkZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZklTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mTWludXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mU2Vjb25kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlRvZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlRvbW9ycm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZldlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZZZXN0ZXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJCdXNpbmVzc0RheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJJU09XZWVrWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJTZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3RvRGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3dlZWtzVG9EYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20veWVhcnNUb01vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3llYXJzVG9RdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaWVlZTc1NC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0hhc2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5UHVzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNjaWlUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25Jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsYW1wLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDbG9uZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ29uZm9ybXNUby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcnJheUJ1ZmZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNEYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWF0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1JlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VMdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVEYXRhVmlldy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVJlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxBcnJheXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzVW5pY29kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXRlcmF0b3JUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdW5pY29kZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jYXN0QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lRGVlcFdpdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZVdpdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25mb3Jtc1RvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZXEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ndC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2d0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCb29sZWFuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VtcHR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcXVhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXF1YWxXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRmluaXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc01hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXRjaFdpdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc05hTi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOaWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc051bGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc051bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUmVnRXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTYWZlSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVW5kZWZpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNXZWFrTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNXZWFrU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2x0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0Zpbml0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TYWZlSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXBzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS1rbXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NlbGVjdDIvZGlzdC9qcy9zZWxlY3QyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvbWFpbi5jc3M/M2JlYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP2Q3YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdmctdnVlMy9kaXN0L3N2Zy12dWUuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9kaXN0L2J1bmRsZS1janMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz8wYWIzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtcmFkaWFsLXByb2dyZXNzL2Rpc3QvUmFkaWFsUHJvZ3Jlc3NCYXIuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLXNtb290aC1zY3JvbGwvZGlzdC92dWUtc21vb3RoLXNjcm9sbC5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXgvZGlzdC92dWV4LmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AaGVhZGxlc3N1aS92dWUvZGlzdC9oZWFkbGVzc3VpLmRldi5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BoZWFkbGVzc3VpL3Z1ZS9kaXN0L2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLnVtZC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9zaGFyZWQvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL2NvcmUvbm9kZV9tb2R1bGVzL3Z1ZS1kZW1pL2xpYi9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2Rpc3QvYnJvd3Nlci9heGlvcy5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtYXBleGNoYXJ0cy9kaXN0L3Z1ZTMtYXBleGNoYXJ0cy51bWQuY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9uYW5vaWQvaW5kZXguYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbmFub2lkL3VybC1hbHBoYWJldC9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaHlwaGVuYXRlLCBOT09QLCBleHRlbmQsIGlzT2JqZWN0LCBOTywgaXNBcnJheSwgbWFrZU1hcCwgaXNTeW1ib2wsIEVNUFRZX09CSiwgY2FwaXRhbGl6ZSwgY2FtZWxpemUgYXMgY2FtZWxpemUkMSwgUGF0Y2hGbGFnTmFtZXMsIHNsb3RGbGFnc1RleHQsIGlzT24sIGlzQnVpbHRJbkRpcmVjdGl2ZSwgaXNSZXNlcnZlZFByb3AsIHRvSGFuZGxlcktleSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcbmV4cG9ydCB7IGdlbmVyYXRlQ29kZUZyYW1lIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihlcnJvcikge1xyXG4gICAgdGhyb3cgZXJyb3I7XHJcbn1cclxuZnVuY3Rpb24gZGVmYXVsdE9uV2Fybihtc2cpIHtcclxuICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb25zb2xlLndhcm4oYFtWdWUgd2Fybl0gJHttc2cubWVzc2FnZX1gKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIGxvYywgbWVzc2FnZXMsIGFkZGl0aW9uYWxNZXNzYWdlKSB7XHJcbiAgICBjb25zdCBtc2cgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWVcclxuICAgICAgICA/IChtZXNzYWdlcyB8fCBlcnJvck1lc3NhZ2VzKVtjb2RlXSArIChhZGRpdGlvbmFsTWVzc2FnZSB8fCBgYClcclxuICAgICAgICA6IGNvZGU7XHJcbiAgICBjb25zdCBlcnJvciA9IG5ldyBTeW50YXhFcnJvcihTdHJpbmcobXNnKSk7XHJcbiAgICBlcnJvci5jb2RlID0gY29kZTtcclxuICAgIGVycm9yLmxvYyA9IGxvYztcclxuICAgIHJldHVybiBlcnJvcjtcclxufVxyXG5jb25zdCBlcnJvck1lc3NhZ2VzID0ge1xyXG4gICAgLy8gcGFyc2UgZXJyb3JzXHJcbiAgICBbMCAvKiBFcnJvckNvZGVzLkFCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlQgKi9dOiAnSWxsZWdhbCBjb21tZW50LicsXHJcbiAgICBbMSAvKiBFcnJvckNvZGVzLkNEQVRBX0lOX0hUTUxfQ09OVEVOVCAqL106ICdDREFUQSBzZWN0aW9uIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC4nLFxyXG4gICAgWzIgLyogRXJyb3JDb2Rlcy5EVVBMSUNBVEVfQVRUUklCVVRFICovXTogJ0R1cGxpY2F0ZSBhdHRyaWJ1dGUuJyxcclxuICAgIFszIC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX0FUVFJJQlVURVMgKi9dOiAnRW5kIHRhZyBjYW5ub3QgaGF2ZSBhdHRyaWJ1dGVzLicsXHJcbiAgICBbNCAvKiBFcnJvckNvZGVzLkVORF9UQUdfV0lUSF9UUkFJTElOR19TT0xJRFVTICovXTogXCJJbGxlZ2FsICcvJyBpbiB0YWdzLlwiLFxyXG4gICAgWzUgLyogRXJyb3JDb2Rlcy5FT0ZfQkVGT1JFX1RBR19OQU1FICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHRhZy4nLFxyXG4gICAgWzYgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ0RBVEEgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gQ0RBVEEgc2VjdGlvbi4nLFxyXG4gICAgWzcgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ09NTUVOVCAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiBjb21tZW50LicsXHJcbiAgICBbOCAvKiBFcnJvckNvZGVzLkVPRl9JTl9TQ1JJUFRfSFRNTF9DT01NRU5UX0xJS0VfVEVYVCAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiBzY3JpcHQuJyxcclxuICAgIFs5IC8qIEVycm9yQ29kZXMuRU9GX0lOX1RBRyAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiB0YWcuJyxcclxuICAgIFsxMCAvKiBFcnJvckNvZGVzLklOQ09SUkVDVExZX0NMT1NFRF9DT01NRU5UICovXTogJ0luY29ycmVjdGx5IGNsb3NlZCBjb21tZW50LicsXHJcbiAgICBbMTEgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCAqL106ICdJbmNvcnJlY3RseSBvcGVuZWQgY29tbWVudC4nLFxyXG4gICAgWzEyIC8qIEVycm9yQ29kZXMuSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUUgKi9dOiBcIklsbGVnYWwgdGFnIG5hbWUuIFVzZSAnJmx0OycgdG8gcHJpbnQgJzwnLlwiLFxyXG4gICAgWzEzIC8qIEVycm9yQ29kZXMuTUlTU0lOR19BVFRSSUJVVEVfVkFMVUUgKi9dOiAnQXR0cmlidXRlIHZhbHVlIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgWzE0IC8qIEVycm9yQ29kZXMuTUlTU0lOR19FTkRfVEFHX05BTUUgKi9dOiAnRW5kIHRhZyBuYW1lIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgWzE1IC8qIEVycm9yQ29kZXMuTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUyAqL106ICdXaGl0ZXNwYWNlIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgWzE2IC8qIEVycm9yQ29kZXMuTkVTVEVEX0NPTU1FTlQgKi9dOiBcIlVuZXhwZWN0ZWQgJzwhLS0nIGluIGNvbW1lbnQuXCIsXHJcbiAgICBbMTcgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRSAqL106ICdBdHRyaWJ1dGUgbmFtZSBjYW5ub3QgY29udGFpbiBVKzAwMjIgKFwiKSwgVSswMDI3IChcXCcpLCBhbmQgVSswMDNDICg8KS4nLFxyXG4gICAgWzE4IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFICovXTogJ1VucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBjYW5ub3QgY29udGFpbiBVKzAwMjIgKFwiKSwgVSswMDI3IChcXCcpLCBVKzAwM0MgKDwpLCBVKzAwM0QgKD0pLCBhbmQgVSswMDYwIChgKS4nLFxyXG4gICAgWzE5IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FUVVBTFNfU0lHTl9CRUZPUkVfQVRUUklCVVRFX05BTUUgKi9dOiBcIkF0dHJpYnV0ZSBuYW1lIGNhbm5vdCBzdGFydCB3aXRoICc9Jy5cIixcclxuICAgIFsyMSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FICovXTogXCInPD8nIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC5cIixcclxuICAgIFsyMCAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfTlVMTF9DSEFSQUNURVIgKi9dOiBgVW5leHBlY3RlZCBudWxsIGNoYXJhY3Rlci5gLFxyXG4gICAgWzIyIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRyAqL106IFwiSWxsZWdhbCAnLycgaW4gdGFncy5cIixcclxuICAgIC8vIFZ1ZS1zcGVjaWZpYyBwYXJzZSBlcnJvcnNcclxuICAgIFsyMyAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FTkRfVEFHICovXTogJ0ludmFsaWQgZW5kIHRhZy4nLFxyXG4gICAgWzI0IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0VORF9UQUcgKi9dOiAnRWxlbWVudCBpcyBtaXNzaW5nIGVuZCB0YWcuJyxcclxuICAgIFsyNSAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORCAqL106ICdJbnRlcnBvbGF0aW9uIGVuZCBzaWduIHdhcyBub3QgZm91bmQuJyxcclxuICAgIFsyNyAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19EWU5BTUlDX0RJUkVDVElWRV9BUkdVTUVOVF9FTkQgKi9dOiAnRW5kIGJyYWNrZXQgZm9yIGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IHdhcyBub3QgZm91bmQuICcgK1xyXG4gICAgICAgICdOb3RlIHRoYXQgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gc3BhY2VzLicsXHJcbiAgICBbMjYgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRElSRUNUSVZFX05BTUUgKi9dOiAnTGVnYWwgZGlyZWN0aXZlIG5hbWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICAvLyB0cmFuc2Zvcm0gZXJyb3JzXHJcbiAgICBbMjggLyogRXJyb3JDb2Rlcy5YX1ZfSUZfTk9fRVhQUkVTU0lPTiAqL106IGB2LWlmL3YtZWxzZS1pZiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFsyOSAvKiBFcnJvckNvZGVzLlhfVl9JRl9TQU1FX0tFWSAqL106IGB2LWlmL2Vsc2UgYnJhbmNoZXMgbXVzdCB1c2UgdW5pcXVlIGtleXMuYCxcclxuICAgIFszMCAvKiBFcnJvckNvZGVzLlhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovXTogYHYtZWxzZS92LWVsc2UtaWYgaGFzIG5vIGFkamFjZW50IHYtaWYgb3Igdi1lbHNlLWlmLmAsXHJcbiAgICBbMzEgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX05PX0VYUFJFU1NJT04gKi9dOiBgdi1mb3IgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMzIgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovXTogYHYtZm9yIGhhcyBpbnZhbGlkIGV4cHJlc3Npb24uYCxcclxuICAgIFszMyAvKiBFcnJvckNvZGVzLlhfVl9GT1JfVEVNUExBVEVfS0VZX1BMQUNFTUVOVCAqL106IGA8dGVtcGxhdGUgdi1mb3I+IGtleSBzaG91bGQgYmUgcGxhY2VkIG9uIHRoZSA8dGVtcGxhdGU+IHRhZy5gLFxyXG4gICAgWzM0IC8qIEVycm9yQ29kZXMuWF9WX0JJTkRfTk9fRVhQUkVTU0lPTiAqL106IGB2LWJpbmQgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMzUgLyogRXJyb3JDb2Rlcy5YX1ZfT05fTk9fRVhQUkVTU0lPTiAqL106IGB2LW9uIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzM2IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQgKi9dOiBgVW5leHBlY3RlZCBjdXN0b20gZGlyZWN0aXZlIG9uIDxzbG90PiBvdXRsZXQuYCxcclxuICAgIFszNyAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX01JWEVEX1NMT1RfVVNBR0UgKi9dOiBgTWl4ZWQgdi1zbG90IHVzYWdlIG9uIGJvdGggdGhlIGNvbXBvbmVudCBhbmQgbmVzdGVkIDx0ZW1wbGF0ZT4uYCArXHJcbiAgICAgICAgYFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG5hbWVkIHNsb3RzLCBhbGwgc2xvdHMgc2hvdWxkIHVzZSA8dGVtcGxhdGU+IGAgK1xyXG4gICAgICAgIGBzeW50YXggdG8gYXZvaWQgc2NvcGUgYW1iaWd1aXR5LmAsXHJcbiAgICBbMzggLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUyAqL106IGBEdXBsaWNhdGUgc2xvdCBuYW1lcyBmb3VuZC4gYCxcclxuICAgIFszOSAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOICovXTogYEV4dHJhbmVvdXMgY2hpbGRyZW4gZm91bmQgd2hlbiBjb21wb25lbnQgYWxyZWFkeSBoYXMgZXhwbGljaXRseSBuYW1lZCBgICtcclxuICAgICAgICBgZGVmYXVsdCBzbG90LiBUaGVzZSBjaGlsZHJlbiB3aWxsIGJlIGlnbm9yZWQuYCxcclxuICAgIFs0MCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX01JU1BMQUNFRCAqL106IGB2LXNsb3QgY2FuIG9ubHkgYmUgdXNlZCBvbiBjb21wb25lbnRzIG9yIDx0ZW1wbGF0ZT4gdGFncy5gLFxyXG4gICAgWzQxIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX05PX0VYUFJFU1NJT04gKi9dOiBgdi1tb2RlbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs0MiAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTiAqL106IGB2LW1vZGVsIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IG1lbWJlciBleHByZXNzaW9uLmAsXHJcbiAgICBbNDMgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fU0NPUEVfVkFSSUFCTEUgKi9dOiBgdi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiB2LWZvciBvciB2LXNsb3Qgc2NvcGUgdmFyaWFibGVzIGJlY2F1c2UgdGhleSBhcmUgbm90IHdyaXRhYmxlLmAsXHJcbiAgICBbNDQgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRVhQUkVTU0lPTiAqL106IGBFcnJvciBwYXJzaW5nIEphdmFTY3JpcHQgZXhwcmVzc2lvbjogYCxcclxuICAgIFs0NSAvKiBFcnJvckNvZGVzLlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOICovXTogYDxLZWVwQWxpdmU+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgY29tcG9uZW50LmAsXHJcbiAgICAvLyBnZW5lcmljIGVycm9yc1xyXG4gICAgWzQ2IC8qIEVycm9yQ29kZXMuWF9QUkVGSVhfSURfTk9UX1NVUFBPUlRFRCAqL106IGBcInByZWZpeElkZW50aWZpZXJzXCIgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci5gLFxyXG4gICAgWzQ3IC8qIEVycm9yQ29kZXMuWF9NT0RVTEVfTU9ERV9OT1RfU1VQUE9SVEVEICovXTogYEVTIG1vZHVsZSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci5gLFxyXG4gICAgWzQ4IC8qIEVycm9yQ29kZXMuWF9DQUNIRV9IQU5ETEVSX05PVF9TVVBQT1JURUQgKi9dOiBgXCJjYWNoZUhhbmRsZXJzXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdGhlIFwicHJlZml4SWRlbnRpZmllcnNcIiBvcHRpb24gaXMgZW5hYmxlZC5gLFxyXG4gICAgWzQ5IC8qIEVycm9yQ29kZXMuWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEICovXTogYFwic2NvcGVJZFwiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBtb2R1bGUgbW9kZS5gLFxyXG4gICAgLy8ganVzdCB0byBmdWxmaWxsIHR5cGVzXHJcbiAgICBbNTAgLyogRXJyb3JDb2Rlcy5fX0VYVEVORF9QT0lOVF9fICovXTogYGBcclxufTtcblxuY29uc3QgRlJBR01FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEZyYWdtZW50YCA6IGBgKTtcclxuY29uc3QgVEVMRVBPUlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRlbGVwb3J0YCA6IGBgKTtcclxuY29uc3QgU1VTUEVOU0UgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFN1c3BlbnNlYCA6IGBgKTtcclxuY29uc3QgS0VFUF9BTElWRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgS2VlcEFsaXZlYCA6IGBgKTtcclxuY29uc3QgQkFTRV9UUkFOU0lUSU9OID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBCYXNlVHJhbnNpdGlvbmAgOiBgYCk7XHJcbmNvbnN0IE9QRU5fQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG9wZW5CbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlQmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfRUxFTUVOVF9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlRWxlbWVudEJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1ZOT0RFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9FTEVNRU5UX1ZOT0RFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVFbGVtZW50Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfQ09NTUVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlQ29tbWVudFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1RFWFQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVRleHRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9TVEFUSUMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVN0YXRpY1ZOb2RlYCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9DT01QT05FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVDb21wb25lbnRgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRHluYW1pY0NvbXBvbmVudGAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRElSRUNUSVZFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRGlyZWN0aXZlYCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9GSUxURVIgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVGaWx0ZXJgIDogYGApO1xyXG5jb25zdCBXSVRIX0RJUkVDVElWRVMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhEaXJlY3RpdmVzYCA6IGBgKTtcclxuY29uc3QgUkVOREVSX0xJU1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlbmRlckxpc3RgIDogYGApO1xyXG5jb25zdCBSRU5ERVJfU0xPVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVuZGVyU2xvdGAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9TTE9UUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlU2xvdHNgIDogYGApO1xyXG5jb25zdCBUT19ESVNQTEFZX1NUUklORyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9EaXNwbGF5U3RyaW5nYCA6IGBgKTtcclxuY29uc3QgTUVSR0VfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG1lcmdlUHJvcHNgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfQ0xBU1MgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZUNsYXNzYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX1NUWUxFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVTdHlsZWAgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplUHJvcHNgIDogYGApO1xyXG5jb25zdCBHVUFSRF9SRUFDVElWRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgZ3VhcmRSZWFjdGl2ZVByb3BzYCA6IGBgKTtcclxuY29uc3QgVE9fSEFORExFUlMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvSGFuZGxlcnNgIDogYGApO1xyXG5jb25zdCBDQU1FTElaRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY2FtZWxpemVgIDogYGApO1xyXG5jb25zdCBDQVBJVEFMSVpFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjYXBpdGFsaXplYCA6IGBgKTtcclxuY29uc3QgVE9fSEFORExFUl9LRVkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvSGFuZGxlcktleWAgOiBgYCk7XHJcbmNvbnN0IFNFVF9CTE9DS19UUkFDS0lORyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgc2V0QmxvY2tUcmFja2luZ2AgOiBgYCk7XHJcbmNvbnN0IFBVU0hfU0NPUEVfSUQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHB1c2hTY29wZUlkYCA6IGBgKTtcclxuY29uc3QgUE9QX1NDT1BFX0lEID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBwb3BTY29wZUlkYCA6IGBgKTtcclxuY29uc3QgV0lUSF9DVFggPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhDdHhgIDogYGApO1xyXG5jb25zdCBVTlJFRiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdW5yZWZgIDogYGApO1xyXG5jb25zdCBJU19SRUYgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGlzUmVmYCA6IGBgKTtcclxuY29uc3QgV0lUSF9NRU1PID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoTWVtb2AgOiBgYCk7XHJcbmNvbnN0IElTX01FTU9fU0FNRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgaXNNZW1vU2FtZWAgOiBgYCk7XHJcbi8vIE5hbWUgbWFwcGluZyBmb3IgcnVudGltZSBoZWxwZXJzIHRoYXQgbmVlZCB0byBiZSBpbXBvcnRlZCBmcm9tICd2dWUnIGluXHJcbi8vIGdlbmVyYXRlZCBjb2RlLiBNYWtlIHN1cmUgdGhlc2UgYXJlIGNvcnJlY3RseSBleHBvcnRlZCBpbiB0aGUgcnVudGltZSFcclxuLy8gVXNpbmcgYGFueWAgaGVyZSBiZWNhdXNlIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9scyBhcyBpbmRleCB0eXBlLlxyXG5jb25zdCBoZWxwZXJOYW1lTWFwID0ge1xyXG4gICAgW0ZSQUdNRU5UXTogYEZyYWdtZW50YCxcclxuICAgIFtURUxFUE9SVF06IGBUZWxlcG9ydGAsXHJcbiAgICBbU1VTUEVOU0VdOiBgU3VzcGVuc2VgLFxyXG4gICAgW0tFRVBfQUxJVkVdOiBgS2VlcEFsaXZlYCxcclxuICAgIFtCQVNFX1RSQU5TSVRJT05dOiBgQmFzZVRyYW5zaXRpb25gLFxyXG4gICAgW09QRU5fQkxPQ0tdOiBgb3BlbkJsb2NrYCxcclxuICAgIFtDUkVBVEVfQkxPQ0tdOiBgY3JlYXRlQmxvY2tgLFxyXG4gICAgW0NSRUFURV9FTEVNRU5UX0JMT0NLXTogYGNyZWF0ZUVsZW1lbnRCbG9ja2AsXHJcbiAgICBbQ1JFQVRFX1ZOT0RFXTogYGNyZWF0ZVZOb2RlYCxcclxuICAgIFtDUkVBVEVfRUxFTUVOVF9WTk9ERV06IGBjcmVhdGVFbGVtZW50Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9DT01NRU5UXTogYGNyZWF0ZUNvbW1lbnRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX1RFWFRdOiBgY3JlYXRlVGV4dFZOb2RlYCxcclxuICAgIFtDUkVBVEVfU1RBVElDXTogYGNyZWF0ZVN0YXRpY1ZOb2RlYCxcclxuICAgIFtSRVNPTFZFX0NPTVBPTkVOVF06IGByZXNvbHZlQ29tcG9uZW50YCxcclxuICAgIFtSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UXTogYHJlc29sdmVEeW5hbWljQ29tcG9uZW50YCxcclxuICAgIFtSRVNPTFZFX0RJUkVDVElWRV06IGByZXNvbHZlRGlyZWN0aXZlYCxcclxuICAgIFtSRVNPTFZFX0ZJTFRFUl06IGByZXNvbHZlRmlsdGVyYCxcclxuICAgIFtXSVRIX0RJUkVDVElWRVNdOiBgd2l0aERpcmVjdGl2ZXNgLFxyXG4gICAgW1JFTkRFUl9MSVNUXTogYHJlbmRlckxpc3RgLFxyXG4gICAgW1JFTkRFUl9TTE9UXTogYHJlbmRlclNsb3RgLFxyXG4gICAgW0NSRUFURV9TTE9UU106IGBjcmVhdGVTbG90c2AsXHJcbiAgICBbVE9fRElTUExBWV9TVFJJTkddOiBgdG9EaXNwbGF5U3RyaW5nYCxcclxuICAgIFtNRVJHRV9QUk9QU106IGBtZXJnZVByb3BzYCxcclxuICAgIFtOT1JNQUxJWkVfQ0xBU1NdOiBgbm9ybWFsaXplQ2xhc3NgLFxyXG4gICAgW05PUk1BTElaRV9TVFlMRV06IGBub3JtYWxpemVTdHlsZWAsXHJcbiAgICBbTk9STUFMSVpFX1BST1BTXTogYG5vcm1hbGl6ZVByb3BzYCxcclxuICAgIFtHVUFSRF9SRUFDVElWRV9QUk9QU106IGBndWFyZFJlYWN0aXZlUHJvcHNgLFxyXG4gICAgW1RPX0hBTkRMRVJTXTogYHRvSGFuZGxlcnNgLFxyXG4gICAgW0NBTUVMSVpFXTogYGNhbWVsaXplYCxcclxuICAgIFtDQVBJVEFMSVpFXTogYGNhcGl0YWxpemVgLFxyXG4gICAgW1RPX0hBTkRMRVJfS0VZXTogYHRvSGFuZGxlcktleWAsXHJcbiAgICBbU0VUX0JMT0NLX1RSQUNLSU5HXTogYHNldEJsb2NrVHJhY2tpbmdgLFxyXG4gICAgW1BVU0hfU0NPUEVfSURdOiBgcHVzaFNjb3BlSWRgLFxyXG4gICAgW1BPUF9TQ09QRV9JRF06IGBwb3BTY29wZUlkYCxcclxuICAgIFtXSVRIX0NUWF06IGB3aXRoQ3R4YCxcclxuICAgIFtVTlJFRl06IGB1bnJlZmAsXHJcbiAgICBbSVNfUkVGXTogYGlzUmVmYCxcclxuICAgIFtXSVRIX01FTU9dOiBgd2l0aE1lbW9gLFxyXG4gICAgW0lTX01FTU9fU0FNRV06IGBpc01lbW9TYW1lYFxyXG59O1xyXG5mdW5jdGlvbiByZWdpc3RlclJ1bnRpbWVIZWxwZXJzKGhlbHBlcnMpIHtcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaGVscGVycykuZm9yRWFjaChzID0+IHtcclxuICAgICAgICBoZWxwZXJOYW1lTWFwW3NdID0gaGVscGVyc1tzXTtcclxuICAgIH0pO1xyXG59XG5cbi8vIEFTVCBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNvbWUgZXhwcmVzc2lvbnMsIGUuZy4gc2VxdWVuY2UgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLCBhcmUgbmV2ZXJcclxuLy8gYXNzb2NpYXRlZCB3aXRoIHRlbXBsYXRlIG5vZGVzLCBzbyB0aGVpciBzb3VyY2UgbG9jYXRpb25zIGFyZSBqdXN0IGEgc3R1Yi5cclxuLy8gQ29udGFpbmVyIHR5cGVzIGxpa2UgQ29tcG91bmRFeHByZXNzaW9uIGFsc28gZG9uJ3QgbmVlZCBhIHJlYWwgbG9jYXRpb24uXHJcbmNvbnN0IGxvY1N0dWIgPSB7XHJcbiAgICBzb3VyY2U6ICcnLFxyXG4gICAgc3RhcnQ6IHsgbGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDAgfSxcclxuICAgIGVuZDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZVJvb3QoY2hpbGRyZW4sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMCAvKiBOb2RlVHlwZXMuUk9PVCAqLyxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBoZWxwZXJzOiBbXSxcclxuICAgICAgICBjb21wb25lbnRzOiBbXSxcclxuICAgICAgICBkaXJlY3RpdmVzOiBbXSxcclxuICAgICAgICBob2lzdHM6IFtdLFxyXG4gICAgICAgIGltcG9ydHM6IFtdLFxyXG4gICAgICAgIGNhY2hlZDogMCxcclxuICAgICAgICB0ZW1wczogMCxcclxuICAgICAgICBjb2RlZ2VuTm9kZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgdGFnLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBkaXJlY3RpdmVzLCBpc0Jsb2NrID0gZmFsc2UsIGRpc2FibGVUcmFja2luZyA9IGZhbHNlLCBpc0NvbXBvbmVudCA9IGZhbHNlLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICBpZiAoY29udGV4dCkge1xyXG4gICAgICAgIGlmIChpc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlyZWN0aXZlcykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihXSVRIX0RJUkVDVElWRVMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8sXHJcbiAgICAgICAgdGFnLFxyXG4gICAgICAgIHByb3BzLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcHMsXHJcbiAgICAgICAgZGlyZWN0aXZlcyxcclxuICAgICAgICBpc0Jsb2NrLFxyXG4gICAgICAgIGRpc2FibGVUcmFja2luZyxcclxuICAgICAgICBpc0NvbXBvbmVudCxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBlbGVtZW50c1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBwcm9wZXJ0aWVzXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdFByb3BlcnR5KGtleSwgdmFsdWUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTYgLyogTm9kZVR5cGVzLkpTX1BST1BFUlRZICovLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YixcclxuICAgICAgICBrZXk6IGlzU3RyaW5nKGtleSkgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGtleSwgdHJ1ZSkgOiBrZXksXHJcbiAgICAgICAgdmFsdWVcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBpc1N0YXRpYyA9IGZhbHNlLCBsb2MgPSBsb2NTdHViLCBjb25zdFR5cGUgPSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGlzU3RhdGljLFxyXG4gICAgICAgIGNvbnN0VHlwZTogaXNTdGF0aWMgPyAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLyA6IGNvbnN0VHlwZVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbnRlcnBvbGF0aW9uKGNvbnRlbnQsIGxvYykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBjb250ZW50OiBpc1N0cmluZyhjb250ZW50KVxyXG4gICAgICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgZmFsc2UsIGxvYylcclxuICAgICAgICAgICAgOiBjb250ZW50XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihjaGlsZHJlbiwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBjaGlsZHJlblxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MgPSBbXSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBjYWxsZWUsXHJcbiAgICAgICAgYXJndW1lbnRzOiBhcmdzXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihwYXJhbXMsIHJldHVybnMgPSB1bmRlZmluZWQsIG5ld2xpbmUgPSBmYWxzZSwgaXNTbG90ID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTggLyogTm9kZVR5cGVzLkpTX0ZVTkNUSU9OX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIHJldHVybnMsXHJcbiAgICAgICAgbmV3bGluZSxcclxuICAgICAgICBpc1Nsb3QsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbih0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUsIG5ld2xpbmUgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIHRlc3QsXHJcbiAgICAgICAgY29uc2VxdWVudCxcclxuICAgICAgICBhbHRlcm5hdGUsXHJcbiAgICAgICAgbmV3bGluZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVFeHByZXNzaW9uKGluZGV4LCB2YWx1ZSwgaXNWTm9kZSA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIHZhbHVlLFxyXG4gICAgICAgIGlzVk5vZGUsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGJvZHkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjEgLyogTm9kZVR5cGVzLkpTX0JMT0NLX1NUQVRFTUVOVCAqLyxcclxuICAgICAgICBib2R5LFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZUxpdGVyYWwoZWxlbWVudHMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjIgLyogTm9kZVR5cGVzLkpTX1RFTVBMQVRFX0xJVEVSQUwgKi8sXHJcbiAgICAgICAgZWxlbWVudHMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUlmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMyAvKiBOb2RlVHlwZXMuSlNfSUZfU1RBVEVNRU5UICovLFxyXG4gICAgICAgIHRlc3QsXHJcbiAgICAgICAgY29uc2VxdWVudCxcclxuICAgICAgICBhbHRlcm5hdGUsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGxlZnQsIHJpZ2h0KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDI0IC8qIE5vZGVUeXBlcy5KU19BU1NJR05NRU5UX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbGVmdCxcclxuICAgICAgICByaWdodCxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU2VxdWVuY2VFeHByZXNzaW9uKGV4cHJlc3Npb25zKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDI1IC8qIE5vZGVUeXBlcy5KU19TRVFVRU5DRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGV4cHJlc3Npb25zLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQocmV0dXJucykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNiAvKiBOb2RlVHlwZXMuSlNfUkVUVVJOX1NUQVRFTUVOVCAqLyxcclxuICAgICAgICByZXR1cm5zLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxuXG5jb25zdCBpc1N0YXRpY0V4cCA9IChwKSA9PiBwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmIHAuaXNTdGF0aWM7XHJcbmNvbnN0IGlzQnVpbHRJblR5cGUgPSAodGFnLCBleHBlY3RlZCkgPT4gdGFnID09PSBleHBlY3RlZCB8fCB0YWcgPT09IGh5cGhlbmF0ZShleHBlY3RlZCk7XHJcbmZ1bmN0aW9uIGlzQ29yZUNvbXBvbmVudCh0YWcpIHtcclxuICAgIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgJ1RlbGVwb3J0JykpIHtcclxuICAgICAgICByZXR1cm4gVEVMRVBPUlQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgJ1N1c3BlbnNlJykpIHtcclxuICAgICAgICByZXR1cm4gU1VTUEVOU0U7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgJ0tlZXBBbGl2ZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIEtFRVBfQUxJVkU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgJ0Jhc2VUcmFuc2l0aW9uJykpIHtcclxuICAgICAgICByZXR1cm4gQkFTRV9UUkFOU0lUSU9OO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IG5vbklkZW50aWZpZXJSRSA9IC9eXFxkfFteXFwkXFx3XS87XHJcbmNvbnN0IGlzU2ltcGxlSWRlbnRpZmllciA9IChuYW1lKSA9PiAhbm9uSWRlbnRpZmllclJFLnRlc3QobmFtZSk7XHJcbmNvbnN0IHZhbGlkRmlyc3RJZGVudENoYXJSRSA9IC9bQS1aYS16XyRcXHhBMC1cXHVGRkZGXS87XHJcbmNvbnN0IHZhbGlkSWRlbnRDaGFyUkUgPSAvW1xcLlxcP1xcdyRcXHhBMC1cXHVGRkZGXS87XHJcbmNvbnN0IHdoaXRlc3BhY2VSRSA9IC9cXHMrWy5bXVxccyp8XFxzKlsuW11cXHMrL2c7XHJcbi8qKlxyXG4gKiBTaW1wbGUgbGV4ZXIgdG8gY2hlY2sgaWYgYW4gZXhwcmVzc2lvbiBpcyBhIG1lbWJlciBleHByZXNzaW9uLiBUaGlzIGlzXHJcbiAqIGxheCBhbmQgb25seSBjaGVja3MgdmFsaWRpdHkgYXQgdGhlIHJvb3QgbGV2ZWwgKGkuZS4gZG9lcyBub3QgdmFsaWRhdGUgZXhwc1xyXG4gKiBpbnNpZGUgc3F1YXJlIGJyYWNrZXRzKSwgYnV0IGl0J3Mgb2sgc2luY2UgdGhlc2UgYXJlIG9ubHkgdXNlZCBvbiB0ZW1wbGF0ZVxyXG4gKiBleHByZXNzaW9ucyBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBpbnZhbGlkIGV4cHJlc3Npb25zIGluIHRoZSBmaXJzdCBwbGFjZS5cclxuICovXHJcbmNvbnN0IGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIgPSAocGF0aCkgPT4ge1xyXG4gICAgLy8gcmVtb3ZlIHdoaXRlc3BhY2VzIGFyb3VuZCAuIG9yIFsgZmlyc3RcclxuICAgIHBhdGggPSBwYXRoLnRyaW0oKS5yZXBsYWNlKHdoaXRlc3BhY2VSRSwgcyA9PiBzLnRyaW0oKSk7XHJcbiAgICBsZXQgc3RhdGUgPSAwIC8qIE1lbWJlckV4cExleFN0YXRlLmluTWVtYmVyRXhwICovO1xyXG4gICAgbGV0IHN0YXRlU3RhY2sgPSBbXTtcclxuICAgIGxldCBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCA9IDA7XHJcbiAgICBsZXQgY3VycmVudE9wZW5QYXJlbnNDb3VudCA9IDA7XHJcbiAgICBsZXQgY3VycmVudFN0cmluZ1R5cGUgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hhciA9IHBhdGguY2hhckF0KGkpO1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAwIC8qIE1lbWJlckV4cExleFN0YXRlLmluTWVtYmVyRXhwICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICdbJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAxIC8qIE1lbWJlckV4cExleFN0YXRlLmluQnJhY2tldHMgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5CcmFja2V0Q291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09ICcoJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyIC8qIE1lbWJlckV4cExleFN0YXRlLmluUGFyZW5zICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuUGFyZW5zQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEoaSA9PT0gMCA/IHZhbGlkRmlyc3RJZGVudENoYXJSRSA6IHZhbGlkSWRlbnRDaGFyUkUpLnRlc3QoY2hhcikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxIC8qIE1lbWJlckV4cExleFN0YXRlLmluQnJhY2tldHMgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gYCdgIHx8IGNoYXIgPT09IGBcImAgfHwgY2hhciA9PT0gJ2AnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDMgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5TdHJpbmcgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBjaGFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYFtgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5CcmFja2V0Q291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGBdYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghLS1jdXJyZW50T3BlbkJyYWNrZXRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMiAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblBhcmVucyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBgJ2AgfHwgY2hhciA9PT0gYFwiYCB8fCBjaGFyID09PSAnYCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMyAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblN0cmluZyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IGNoYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgKGApIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlblBhcmVuc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgKWApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZXhwIGVuZHMgYXMgYSBjYWxsIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIHZhbGlkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghLS1jdXJyZW50T3BlblBhcmVuc0NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzIC8qIE1lbWJlckV4cExleFN0YXRlLmluU3RyaW5nICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGN1cnJlbnRTdHJpbmdUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAhY3VycmVudE9wZW5CcmFja2V0Q291bnQgJiYgIWN1cnJlbnRPcGVuUGFyZW5zQ291bnQ7XHJcbn07XHJcbmNvbnN0IGlzTWVtYmVyRXhwcmVzc2lvbk5vZGUgPSBOT09QXHJcbiAgICA7XHJcbmNvbnN0IGlzTWVtYmVyRXhwcmVzc2lvbiA9IGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXJcclxuICAgIDtcclxuZnVuY3Rpb24gZ2V0SW5uZXJSYW5nZShsb2MsIG9mZnNldCwgbGVuZ3RoKSB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBsb2Muc291cmNlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTtcclxuICAgIGNvbnN0IG5ld0xvYyA9IHtcclxuICAgICAgICBzb3VyY2UsXHJcbiAgICAgICAgc3RhcnQ6IGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZShsb2Muc3RhcnQsIGxvYy5zb3VyY2UsIG9mZnNldCksXHJcbiAgICAgICAgZW5kOiBsb2MuZW5kXHJcbiAgICB9O1xyXG4gICAgaWYgKGxlbmd0aCAhPSBudWxsKSB7XHJcbiAgICAgICAgbmV3TG9jLmVuZCA9IGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZShsb2Muc3RhcnQsIGxvYy5zb3VyY2UsIG9mZnNldCArIGxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3TG9jO1xyXG59XHJcbmZ1bmN0aW9uIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZShwb3MsIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihleHRlbmQoe30sIHBvcyksIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxufVxyXG4vLyBhZHZhbmNlIGJ5IG11dGF0aW9uIHdpdGhvdXQgY2xvbmluZyAoZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpLCBzaW5jZSB0aGlzXHJcbi8vIGdldHMgY2FsbGVkIGEgbG90IGluIHRoZSBwYXJzZXJcclxuZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKHBvcywgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMgPSBzb3VyY2UubGVuZ3RoKSB7XHJcbiAgICBsZXQgbGluZXNDb3VudCA9IDA7XHJcbiAgICBsZXQgbGFzdE5ld0xpbmVQb3MgPSAtMTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFyYWN0ZXJzOyBpKyspIHtcclxuICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaSkgPT09IDEwIC8qIG5ld2xpbmUgY2hhciBjb2RlICovKSB7XHJcbiAgICAgICAgICAgIGxpbmVzQ291bnQrKztcclxuICAgICAgICAgICAgbGFzdE5ld0xpbmVQb3MgPSBpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHBvcy5vZmZzZXQgKz0gbnVtYmVyT2ZDaGFyYWN0ZXJzO1xyXG4gICAgcG9zLmxpbmUgKz0gbGluZXNDb3VudDtcclxuICAgIHBvcy5jb2x1bW4gPVxyXG4gICAgICAgIGxhc3ROZXdMaW5lUG9zID09PSAtMVxyXG4gICAgICAgICAgICA/IHBvcy5jb2x1bW4gKyBudW1iZXJPZkNoYXJhY3RlcnNcclxuICAgICAgICAgICAgOiBudW1iZXJPZkNoYXJhY3RlcnMgLSBsYXN0TmV3TGluZVBvcztcclxuICAgIHJldHVybiBwb3M7XHJcbn1cclxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbXNnKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIGlmICghY29uZGl0aW9uKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCBgdW5leHBlY3RlZCBjb21waWxlciBjb25kaXRpb25gKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmaW5kRGlyKG5vZGUsIG5hbWUsIGFsbG93RW1wdHkgPSBmYWxzZSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgIChhbGxvd0VtcHR5IHx8IHAuZXhwKSAmJlxyXG4gICAgICAgICAgICAoaXNTdHJpbmcobmFtZSkgPyBwLm5hbWUgPT09IG5hbWUgOiBuYW1lLnRlc3QocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZpbmRQcm9wKG5vZGUsIG5hbWUsIGR5bmFtaWNPbmx5ID0gZmFsc2UsIGFsbG93RW1wdHkgPSBmYWxzZSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljT25seSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSBuYW1lICYmIChwLnZhbHVlIHx8IGFsbG93RW1wdHkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJlxyXG4gICAgICAgICAgICAocC5leHAgfHwgYWxsb3dFbXB0eSkgJiZcclxuICAgICAgICAgICAgaXNTdGF0aWNBcmdPZihwLmFyZywgbmFtZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU3RhdGljQXJnT2YoYXJnLCBuYW1lKSB7XHJcbiAgICByZXR1cm4gISEoYXJnICYmIGlzU3RhdGljRXhwKGFyZykgJiYgYXJnLmNvbnRlbnQgPT09IG5hbWUpO1xyXG59XHJcbmZ1bmN0aW9uIGhhc0R5bmFtaWNLZXlWQmluZChub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS5wcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICBwLm5hbWUgPT09ICdiaW5kJyAmJlxyXG4gICAgICAgICghcC5hcmcgfHwgLy8gdi1iaW5kPVwib2JqXCJcclxuICAgICAgICAgICAgcC5hcmcudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHwgLy8gdi1iaW5kOltfY3R4LmZvb11cclxuICAgICAgICAgICAgIXAuYXJnLmlzU3RhdGljKSAvLyB2LWJpbmQ6W2Zvb11cclxuICAgICk7XHJcbn1cclxuZnVuY3Rpb24gaXNUZXh0KG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8gfHwgbm9kZS50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovO1xyXG59XHJcbmZ1bmN0aW9uIGlzVlNsb3QocCkge1xyXG4gICAgcmV0dXJuIHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3Nsb3QnO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGVtcGxhdGVOb2RlKG5vZGUpIHtcclxuICAgIHJldHVybiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmIG5vZGUudGFnVHlwZSA9PT0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi8pO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2xvdE91dGxldChub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmIG5vZGUudGFnVHlwZSA9PT0gMiAvKiBFbGVtZW50VHlwZXMuU0xPVCAqLztcclxufVxyXG5mdW5jdGlvbiBnZXRWTm9kZUhlbHBlcihzc3IsIGlzQ29tcG9uZW50KSB7XHJcbiAgICByZXR1cm4gc3NyIHx8IGlzQ29tcG9uZW50ID8gQ1JFQVRFX1ZOT0RFIDogQ1JFQVRFX0VMRU1FTlRfVk5PREU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Vk5vZGVCbG9ja0hlbHBlcihzc3IsIGlzQ29tcG9uZW50KSB7XHJcbiAgICByZXR1cm4gc3NyIHx8IGlzQ29tcG9uZW50ID8gQ1JFQVRFX0JMT0NLIDogQ1JFQVRFX0VMRU1FTlRfQkxPQ0s7XHJcbn1cclxuY29uc3QgcHJvcHNIZWxwZXJTZXQgPSBuZXcgU2V0KFtOT1JNQUxJWkVfUFJPUFMsIEdVQVJEX1JFQUNUSVZFX1BST1BTXSk7XHJcbmZ1bmN0aW9uIGdldFVubm9ybWFsaXplZFByb3BzKHByb3BzLCBjYWxsUGF0aCA9IFtdKSB7XHJcbiAgICBpZiAocHJvcHMgJiZcclxuICAgICAgICAhaXNTdHJpbmcocHJvcHMpICYmXHJcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlZSA9IHByb3BzLmNhbGxlZTtcclxuICAgICAgICBpZiAoIWlzU3RyaW5nKGNhbGxlZSkgJiYgcHJvcHNIZWxwZXJTZXQuaGFzKGNhbGxlZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldFVubm9ybWFsaXplZFByb3BzKHByb3BzLmFyZ3VtZW50c1swXSwgY2FsbFBhdGguY29uY2F0KHByb3BzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtwcm9wcywgY2FsbFBhdGhdO1xyXG59XHJcbmZ1bmN0aW9uIGluamVjdFByb3Aobm9kZSwgcHJvcCwgY29udGV4dCkge1xyXG4gICAgbGV0IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgIC8qKlxyXG4gICAgICogMS4gbWVyZ2VQcm9wcyguLi4pXHJcbiAgICAgKiAyLiB0b0hhbmRsZXJzKC4uLilcclxuICAgICAqIDMuIG5vcm1hbGl6ZVByb3BzKC4uLilcclxuICAgICAqIDQuIG5vcm1hbGl6ZVByb3BzKGd1YXJkUmVhY3RpdmVQcm9wcyguLi4pKVxyXG4gICAgICpcclxuICAgICAqIHdlIG5lZWQgdG8gZ2V0IHRoZSByZWFsIHByb3BzIGJlZm9yZSBub3JtYWxpemF0aW9uXHJcbiAgICAgKi9cclxuICAgIGxldCBwcm9wcyA9IG5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8gPyBub2RlLnByb3BzIDogbm9kZS5hcmd1bWVudHNbMl07XHJcbiAgICBsZXQgY2FsbFBhdGggPSBbXTtcclxuICAgIGxldCBwYXJlbnRDYWxsO1xyXG4gICAgaWYgKHByb3BzICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHByb3BzKSAmJlxyXG4gICAgICAgIHByb3BzLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCByZXQgPSBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcyk7XHJcbiAgICAgICAgcHJvcHMgPSByZXRbMF07XHJcbiAgICAgICAgY2FsbFBhdGggPSByZXRbMV07XHJcbiAgICAgICAgcGFyZW50Q2FsbCA9IGNhbGxQYXRoW2NhbGxQYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzID09IG51bGwgfHwgaXNTdHJpbmcocHJvcHMpKSB7XHJcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIC8vIG1lcmdlZCBwcm9wcy4uLiBhZGQgb3Vyc1xyXG4gICAgICAgIC8vIG9ubHkgaW5qZWN0IGtleSB0byBvYmplY3QgbGl0ZXJhbCBpZiBpdCdzIHRoZSBmaXJzdCBhcmd1bWVudCBzbyB0aGF0XHJcbiAgICAgICAgLy8gaWYgZG9lc24ndCBvdmVycmlkZSB1c2VyIHByb3ZpZGVkIGtleXNcclxuICAgICAgICBjb25zdCBmaXJzdCA9IHByb3BzLmFyZ3VtZW50c1swXTtcclxuICAgICAgICBpZiAoIWlzU3RyaW5nKGZpcnN0KSAmJiBmaXJzdC50eXBlID09PSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgZmlyc3QucHJvcGVydGllcy51bnNoaWZ0KHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHByb3BzLmNhbGxlZSA9PT0gVE9fSEFORExFUlMpIHtcclxuICAgICAgICAgICAgICAgIC8vICMyMzY2XHJcbiAgICAgICAgICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSksXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuYXJndW1lbnRzLnVuc2hpZnQoY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAhcHJvcHNXaXRoSW5qZWN0aW9uICYmIChwcm9wc1dpdGhJbmplY3Rpb24gPSBwcm9wcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBsZXQgYWxyZWFkeUV4aXN0cyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIGNoZWNrIGV4aXN0aW5nIGtleSB0byBhdm9pZCBvdmVycmlkaW5nIHVzZXIgcHJvdmlkZWQga2V5c1xyXG4gICAgICAgIGlmIChwcm9wLmtleS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wS2V5TmFtZSA9IHByb3Aua2V5LmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGFscmVhZHlFeGlzdHMgPSBwcm9wcy5wcm9wZXJ0aWVzLnNvbWUocCA9PiBwLmtleS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgcC5rZXkuY29udGVudCA9PT0gcHJvcEtleU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcclxuICAgICAgICAgICAgcHJvcHMucHJvcGVydGllcy51bnNoaWZ0KHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBwcm9wcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHNpbmdsZSB2LWJpbmQgd2l0aCBleHByZXNzaW9uLCByZXR1cm4gYSBtZXJnZWQgcmVwbGFjZW1lbnRcclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pLFxyXG4gICAgICAgICAgICBwcm9wc1xyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIG5lc3RlZCBoZWxwZXIgY2FsbCwgZS5nLiBgbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKSlgLFxyXG4gICAgICAgIC8vIGl0IHdpbGwgYmUgcmV3cml0dGVuIGFzIGBub3JtYWxpemVQcm9wcyhtZXJnZVByb3BzKHsga2V5OiAwIH0sIHByb3BzKSlgLFxyXG4gICAgICAgIC8vIHRoZSBgZ3VhcmRSZWFjdGl2ZVByb3BzYCB3aWxsIG5vIGxvbmdlciBiZSBuZWVkZWRcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCAmJiBwYXJlbnRDYWxsLmNhbGxlZSA9PT0gR1VBUkRfUkVBQ1RJVkVfUFJPUFMpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbCA9IGNhbGxQYXRoW2NhbGxQYXRoLmxlbmd0aCAtIDJdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbC5hcmd1bWVudHNbMF0gPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlLnByb3BzID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChwYXJlbnRDYWxsKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENhbGwuYXJndW1lbnRzWzBdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hcmd1bWVudHNbMl0gPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRvVmFsaWRBc3NldElkKG5hbWUsIHR5cGUpIHtcclxuICAgIC8vIHNlZSBpc3N1ZSM0NDIyLCB3ZSBuZWVkIGFkZGluZyBpZGVudGlmaWVyIG9uIHZhbGlkQXNzZXRJZCBpZiB2YXJpYWJsZSBgbmFtZWAgaGFzIHNwZWNpZmljIGNoYXJhY3RlclxyXG4gICAgcmV0dXJuIGBfJHt0eXBlfV8ke25hbWUucmVwbGFjZSgvW15cXHddL2csIChzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHNlYXJjaFZhbHVlID09PSAnLScgPyAnXycgOiBuYW1lLmNoYXJDb2RlQXQocmVwbGFjZVZhbHVlKS50b1N0cmluZygpO1xyXG4gICAgfSl9YDtcclxufVxyXG4vLyBDaGVjayBpZiBhIG5vZGUgY29udGFpbnMgZXhwcmVzc2lvbnMgdGhhdCByZWZlcmVuY2UgY3VycmVudCBjb250ZXh0IHNjb3BlIGlkc1xyXG5mdW5jdGlvbiBoYXNTY29wZVJlZihub2RlLCBpZHMpIHtcclxuICAgIGlmICghbm9kZSB8fCBPYmplY3Qua2V5cyhpZHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGhhc1Njb3BlUmVmKHAuYXJnLCBpZHMpIHx8IGhhc1Njb3BlUmVmKHAuZXhwLCBpZHMpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgICAgIGlmIChoYXNTY29wZVJlZihub2RlLnNvdXJjZSwgaWRzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmJyYW5jaGVzLnNvbWUoYiA9PiBoYXNTY29wZVJlZihiLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIGlmIChoYXNTY29wZVJlZihub2RlLmNvbmRpdGlvbiwgaWRzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIHJldHVybiAoIW5vZGUuaXNTdGF0aWMgJiZcclxuICAgICAgICAgICAgICAgIGlzU2ltcGxlSWRlbnRpZmllcihub2RlLmNvbnRlbnQpICYmXHJcbiAgICAgICAgICAgICAgICAhIWlkc1tub2RlLmNvbnRlbnRdKTtcclxuICAgICAgICBjYXNlIDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBpc09iamVjdChjKSAmJiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgY2FzZSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovOlxyXG4gICAgICAgICAgICByZXR1cm4gaGFzU2NvcGVSZWYobm9kZS5jb250ZW50LCBpZHMpO1xyXG4gICAgICAgIGNhc2UgMiAvKiBOb2RlVHlwZXMuVEVYVCAqLzpcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSA7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRNZW1vZWRWTm9kZUNhbGwobm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLyAmJiBub2RlLmNhbGxlZSA9PT0gV0lUSF9NRU1PKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuYXJndW1lbnRzWzFdLnJldHVybnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBtYWtlQmxvY2sobm9kZSwgeyBoZWxwZXIsIHJlbW92ZUhlbHBlciwgaW5TU1IgfSkge1xyXG4gICAgaWYgKCFub2RlLmlzQmxvY2spIHtcclxuICAgICAgICBub2RlLmlzQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgIHJlbW92ZUhlbHBlcihnZXRWTm9kZUhlbHBlcihpblNTUiwgbm9kZS5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgIGhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihpblNTUiwgbm9kZS5pc0NvbXBvbmVudCkpO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGRlcHJlY2F0aW9uRGF0YSA9IHtcclxuICAgIFtcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgUGxhdGZvcm0tbmF0aXZlIGVsZW1lbnRzIHdpdGggXCJpc1wiIHByb3Agd2lsbCBubyBsb25nZXIgYmUgYCArXHJcbiAgICAgICAgICAgIGB0cmVhdGVkIGFzIGNvbXBvbmVudHMgaW4gVnVlIDMgdW5sZXNzIHRoZSBcImlzXCIgdmFsdWUgaXMgZXhwbGljaXRseSBgICtcclxuICAgICAgICAgICAgYHByZWZpeGVkIHdpdGggXCJ2dWU6XCIuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvY3VzdG9tLWVsZW1lbnRzLWludGVyb3AuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0JJTkRfU1lOQ1wiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfU1lOQyAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBrZXkgPT4gYC5zeW5jIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHYtbW9kZWwgd2l0aCBgICtcclxuICAgICAgICAgICAgYGFyZ3VtZW50IGluc3RlYWQuIFxcYHYtYmluZDoke2tleX0uc3luY1xcYCBzaG91bGQgYmUgY2hhbmdlZCB0byBgICtcclxuICAgICAgICAgICAgYFxcYHYtbW9kZWw6JHtrZXl9XFxgLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtbW9kZWwuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0JJTkRfUFJPUFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfUFJPUCAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgLnByb3AgbW9kaWZpZXIgZm9yIHYtYmluZCBoYXMgYmVlbiByZW1vdmVkIGFuZCBubyBsb25nZXIgbmVjZXNzYXJ5LiBgICtcclxuICAgICAgICAgICAgYFZ1ZSAzIHdpbGwgYXV0b21hdGljYWxseSBzZXQgYSBiaW5kaW5nIGFzIERPTSBwcm9wZXJ0eSB3aGVuIGFwcHJvcHJpYXRlLmBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYHYtYmluZD1cIm9ialwiIHVzYWdlIGlzIG5vdyBvcmRlciBzZW5zaXRpdmUgYW5kIGJlaGF2ZXMgbGlrZSBKYXZhU2NyaXB0IGAgK1xyXG4gICAgICAgICAgICBgb2JqZWN0IHNwcmVhZDogaXQgd2lsbCBub3cgb3ZlcndyaXRlIGFuIGV4aXN0aW5nIG5vbi1tZXJnZWFibGUgYXR0cmlidXRlIGAgK1xyXG4gICAgICAgICAgICBgdGhhdCBhcHBlYXJzIGJlZm9yZSB2LWJpbmQgaW4gdGhlIGNhc2Ugb2YgY29uZmxpY3QuIGAgK1xyXG4gICAgICAgICAgICBgVG8gcmV0YWluIDIueCBiZWhhdmlvciwgbW92ZSB2LWJpbmQgdG8gbWFrZSBpdCB0aGUgZmlyc3QgYXR0cmlidXRlLiBgICtcclxuICAgICAgICAgICAgYFlvdSBjYW4gYWxzbyBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgaWYgdGhlIHVzYWdlIGlzIGludGVuZGVkLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtYmluZC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfT05fTkFUSVZFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfT05fTkFUSVZFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGAubmF0aXZlIG1vZGlmaWVyIGZvciB2LW9uIGhhcyBiZWVuIHJlbW92ZWQgYXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LW9uLW5hdGl2ZS1tb2RpZmllci1yZW1vdmVkLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgdi1pZiAvIHYtZm9yIHByZWNlZGVuY2Ugd2hlbiB1c2VkIG9uIHRoZSBzYW1lIGVsZW1lbnQgaGFzIGNoYW5nZWQgYCArXHJcbiAgICAgICAgICAgIGBpbiBWdWUgMzogdi1pZiBub3cgdGFrZXMgaGlnaGVyIHByZWNlZGVuY2UgYW5kIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYCArXHJcbiAgICAgICAgICAgIGBhY2Nlc3MgdG8gdi1mb3Igc2NvcGUgdmFyaWFibGVzLiBJdCBpcyBiZXN0IHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgYCArXHJcbiAgICAgICAgICAgIGB3aXRoIDx0ZW1wbGF0ZT4gdGFncyBvciB1c2UgYSBjb21wdXRlZCBwcm9wZXJ0eSB0aGF0IGZpbHRlcnMgdi1mb3IgYCArXHJcbiAgICAgICAgICAgIGBkYXRhIHNvdXJjZS5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LWlmLXYtZm9yLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX05BVElWRV9URU1QTEFURSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgPHRlbXBsYXRlPiB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlcyB3aWxsIHJlbmRlciBhcyBhIG5hdGl2ZSB0ZW1wbGF0ZSBgICtcclxuICAgICAgICAgICAgYGVsZW1lbnQgaW5zdGVhZCBvZiBpdHMgaW5uZXIgY29udGVudCBpbiBWdWUgMy5gXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lOTElORV9URU1QTEFURSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgXCJpbmxpbmUtdGVtcGxhdGVcIiBoYXMgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2lubGluZS10ZW1wbGF0ZS1hdHRyaWJ1dGUuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfRklMVEVSUyAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgZmlsdGVycyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBWdWUgMy4gYCArXHJcbiAgICAgICAgICAgIGBUaGUgXCJ8XCIgc3ltYm9sIHdpbGwgYmUgdHJlYXRlZCBhcyBuYXRpdmUgSmF2YVNjcmlwdCBiaXR3aXNlIE9SIG9wZXJhdG9yLiBgICtcclxuICAgICAgICAgICAgYFVzZSBtZXRob2QgY2FsbHMgb3IgY29tcHV0ZWQgcHJvcGVydGllcyBpbnN0ZWFkLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2ZpbHRlcnMuaHRtbGBcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gZ2V0Q29tcGF0VmFsdWUoa2V5LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBjb250ZXh0Lm9wdGlvbnNcclxuICAgICAgICA/IGNvbnRleHQub3B0aW9ucy5jb21wYXRDb25maWdcclxuICAgICAgICA6IGNvbnRleHQuY29tcGF0Q29uZmlnO1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb25maWcgJiYgY29uZmlnW2tleV07XHJcbiAgICBpZiAoa2V5ID09PSAnTU9ERScpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUgfHwgMzsgLy8gY29tcGlsZXIgZGVmYXVsdHMgdG8gdjMgYmVoYXZpb3JcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBtb2RlID0gZ2V0Q29tcGF0VmFsdWUoJ01PREUnLCBjb250ZXh0KTtcclxuICAgIGNvbnN0IHZhbHVlID0gZ2V0Q29tcGF0VmFsdWUoa2V5LCBjb250ZXh0KTtcclxuICAgIC8vIGluIHYzIG1vZGUsIG9ubHkgZW5hYmxlIGlmIGV4cGxpY2l0bHkgc2V0IHRvIHRydWVcclxuICAgIC8vIG90aGVyd2lzZSBlbmFibGUgZm9yIGFueSBub24tZmFsc2UgdmFsdWVcclxuICAgIHJldHVybiBtb2RlID09PSAzID8gdmFsdWUgPT09IHRydWUgOiB2YWx1ZSAhPT0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gY2hlY2tDb21wYXRFbmFibGVkKGtleSwgY29udGV4dCwgbG9jLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zdCBlbmFibGVkID0gaXNDb21wYXRFbmFibGVkKGtleSwgY29udGV4dCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGVuYWJsZWQpIHtcclxuICAgICAgICB3YXJuRGVwcmVjYXRpb24oa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVuYWJsZWQ7XHJcbn1cclxuZnVuY3Rpb24gd2FybkRlcHJlY2F0aW9uKGtleSwgY29udGV4dCwgbG9jLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zdCB2YWwgPSBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpO1xyXG4gICAgaWYgKHZhbCA9PT0gJ3N1cHByZXNzLXdhcm5pbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtZXNzYWdlLCBsaW5rIH0gPSBkZXByZWNhdGlvbkRhdGFba2V5XTtcclxuICAgIGNvbnN0IG1zZyA9IGAoZGVwcmVjYXRpb24gJHtrZXl9KSAke3R5cGVvZiBtZXNzYWdlID09PSAnZnVuY3Rpb24nID8gbWVzc2FnZSguLi5hcmdzKSA6IG1lc3NhZ2V9JHtsaW5rID8gYFxcbiAgRGV0YWlsczogJHtsaW5rfWAgOiBgYH1gO1xyXG4gICAgY29uc3QgZXJyID0gbmV3IFN5bnRheEVycm9yKG1zZyk7XHJcbiAgICBlcnIuY29kZSA9IGtleTtcclxuICAgIGlmIChsb2MpXHJcbiAgICAgICAgZXJyLmxvYyA9IGxvYztcclxuICAgIGNvbnRleHQub25XYXJuKGVycik7XHJcbn1cblxuLy8gVGhlIGRlZmF1bHQgZGVjb2RlciBvbmx5IHByb3ZpZGVzIGVzY2FwZXMgZm9yIGNoYXJhY3RlcnMgcmVzZXJ2ZWQgYXMgcGFydCBvZlxyXG4vLyB0aGUgdGVtcGxhdGUgc3ludGF4LCBhbmQgaXMgb25seSB1c2VkIGlmIHRoZSBjdXN0b20gcmVuZGVyZXIgZGlkIG5vdCBwcm92aWRlXHJcbi8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgZGVjb2Rlci5cclxuY29uc3QgZGVjb2RlUkUgPSAvJihndHxsdHxhbXB8YXBvc3xxdW90KTsvZztcclxuY29uc3QgZGVjb2RlTWFwID0ge1xyXG4gICAgZ3Q6ICc+JyxcclxuICAgIGx0OiAnPCcsXHJcbiAgICBhbXA6ICcmJyxcclxuICAgIGFwb3M6IFwiJ1wiLFxyXG4gICAgcXVvdDogJ1wiJ1xyXG59O1xyXG5jb25zdCBkZWZhdWx0UGFyc2VyT3B0aW9ucyA9IHtcclxuICAgIGRlbGltaXRlcnM6IFtge3tgLCBgfX1gXSxcclxuICAgIGdldE5hbWVzcGFjZTogKCkgPT4gMCAvKiBOYW1lc3BhY2VzLkhUTUwgKi8sXHJcbiAgICBnZXRUZXh0TW9kZTogKCkgPT4gMCAvKiBUZXh0TW9kZXMuREFUQSAqLyxcclxuICAgIGlzVm9pZFRhZzogTk8sXHJcbiAgICBpc1ByZVRhZzogTk8sXHJcbiAgICBpc0N1c3RvbUVsZW1lbnQ6IE5PLFxyXG4gICAgZGVjb2RlRW50aXRpZXM6IChyYXdUZXh0KSA9PiByYXdUZXh0LnJlcGxhY2UoZGVjb2RlUkUsIChfLCBwMSkgPT4gZGVjb2RlTWFwW3AxXSksXHJcbiAgICBvbkVycm9yOiBkZWZhdWx0T25FcnJvcixcclxuICAgIG9uV2FybjogZGVmYXVsdE9uV2FybixcclxuICAgIGNvbW1lbnRzOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxufTtcclxuZnVuY3Rpb24gYmFzZVBhcnNlKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVBhcnNlckNvbnRleHQoY29udGVudCwgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIHJldHVybiBjcmVhdGVSb290KHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgMCAvKiBUZXh0TW9kZXMuREFUQSAqLywgW10pLCBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVQYXJzZXJDb250ZXh0KGNvbnRlbnQsIHJhd09wdGlvbnMpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRQYXJzZXJPcHRpb25zKTtcclxuICAgIGxldCBrZXk7XHJcbiAgICBmb3IgKGtleSBpbiByYXdPcHRpb25zKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIG9wdGlvbnNba2V5XSA9XHJcbiAgICAgICAgICAgIHJhd09wdGlvbnNba2V5XSA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICA/IGRlZmF1bHRQYXJzZXJPcHRpb25zW2tleV1cclxuICAgICAgICAgICAgICAgIDogcmF3T3B0aW9uc1trZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIGNvbHVtbjogMSxcclxuICAgICAgICBsaW5lOiAxLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBvcmlnaW5hbFNvdXJjZTogY29udGVudCxcclxuICAgICAgICBzb3VyY2U6IGNvbnRlbnQsXHJcbiAgICAgICAgaW5QcmU6IGZhbHNlLFxyXG4gICAgICAgIGluVlByZTogZmFsc2UsXHJcbiAgICAgICAgb25XYXJuOiBvcHRpb25zLm9uV2FyblxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUNoaWxkcmVuKGNvbnRleHQsIG1vZGUsIGFuY2VzdG9ycykge1xyXG4gICAgY29uc3QgcGFyZW50ID0gbGFzdChhbmNlc3RvcnMpO1xyXG4gICAgY29uc3QgbnMgPSBwYXJlbnQgPyBwYXJlbnQubnMgOiAwIC8qIE5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgIGNvbnN0IG5vZGVzID0gW107XHJcbiAgICB3aGlsZSAoIWlzRW5kKGNvbnRleHQsIG1vZGUsIGFuY2VzdG9ycykpIHtcclxuICAgICAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKG1vZGUgPT09IDAgLyogVGV4dE1vZGVzLkRBVEEgKi8gfHwgbW9kZSA9PT0gMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovKSB7XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgc3RhcnRzV2l0aChzLCBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVyc1swXSkpIHtcclxuICAgICAgICAgICAgICAgIC8vICd7eydcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUludGVycG9sYXRpb24oY29udGV4dCwgbW9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gMCAvKiBUZXh0TW9kZXMuREFUQSAqLyAmJiBzWzBdID09PSAnPCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCN0YWctb3Blbi1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDUgLyogRXJyb3JDb2Rlcy5FT0ZfQkVGT1JFX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICchJykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNtYXJrdXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICc8IS0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChzLCAnPCFET0NUWVBFJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIERPQ1RZUEUgYnkgYSBsaW1pdGF0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgocywgJzwhW0NEQVRBWycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChucyAhPT0gMCAvKiBOYW1lc3BhY2VzLkhUTUwgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUNEQVRBKGNvbnRleHQsIGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMSAvKiBFcnJvckNvZGVzLkNEQVRBX0lOX0hUTUxfQ09OVEVOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMSAvKiBFcnJvckNvZGVzLklOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICcvJykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmQtdGFnLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDUgLyogRXJyb3JDb2Rlcy5FT0ZfQkVGT1JFX1RBR19OQU1FICovLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc1syXSA9PT0gJz4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNCAvKiBFcnJvckNvZGVzLk1JU1NJTkdfRU5EX1RBR19OQU1FICovLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoL1thLXpdL2kudGVzdChzWzJdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjMgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRU5EX1RBRyAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVGFnKGNvbnRleHQsIDEgLyogVGFnVHlwZS5FbmQgKi8sIHBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEyIC8qIEVycm9yQ29kZXMuSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoL1thLXpdL2kudGVzdChzWzFdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUVsZW1lbnQoY29udGV4dCwgYW5jZXN0b3JzKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAyLnggPHRlbXBsYXRlPiB3aXRoIG5vIGRpcmVjdGl2ZSBjb21wYXRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX05BVElWRV9URU1QTEFURSAqLywgY29udGV4dCkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZyA9PT0gJ3RlbXBsYXRlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhbm9kZS5wcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlKHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKFwiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX05BVElWRV9URU1QTEFURSAqLywgY29udGV4dCwgbm9kZS5sb2MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdID09PSAnPycpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjEgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEyIC8qIEVycm9yQ29kZXMuSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUUgKi8sIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbm9kZSkge1xyXG4gICAgICAgICAgICBub2RlID0gcGFyc2VUZXh0KGNvbnRleHQsIG1vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNBcnJheShub2RlKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHB1c2hOb2RlKG5vZGVzLCBub2RlW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcHVzaE5vZGUobm9kZXMsIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcgc3RyYXRlZ3kgbGlrZSB2MlxyXG4gICAgbGV0IHJlbW92ZWRXaGl0ZXNwYWNlID0gZmFsc2U7XHJcbiAgICBpZiAobW9kZSAhPT0gMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLyAmJiBtb2RlICE9PSAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi8pIHtcclxuICAgICAgICBjb25zdCBzaG91bGRDb25kZW5zZSA9IGNvbnRleHQub3B0aW9ucy53aGl0ZXNwYWNlICE9PSAncHJlc2VydmUnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuaW5QcmUgJiYgbm9kZS50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIS9bXlxcdFxcclxcblxcZiBdLy50ZXN0KG5vZGUuY29udGVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gbm9kZXNbaSAtIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBub2Rlc1tpICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGlmOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gdGhlIHdoaXRlc3BhY2UgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZSwgb3I6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSAoY29uZGVuc2UgbW9kZSkgdGhlIHdoaXRlc3BhY2UgaXMgYWRqYWNlbnQgdG8gYSBjb21tZW50LCBvcjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIChjb25kZW5zZSBtb2RlKSB0aGUgd2hpdGVzcGFjZSBpcyBiZXR3ZWVuIHR3byBlbGVtZW50cyBBTkQgY29udGFpbnMgbmV3bGluZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJldiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhbmV4dCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2hvdWxkQ29uZGVuc2UgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2LnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldi50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvW1xcclxcbl0vLnRlc3Qobm9kZS5jb250ZW50KSkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkV2hpdGVzcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIHdoaXRlc3BhY2UgaXMgY29uZGVuc2VkIGludG8gYSBzaW5nbGUgc3BhY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0gJyAnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNob3VsZENvbmRlbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gY29uZGVuc2UgbW9kZSwgY29uc2VjdXRpdmUgd2hpdGVzcGFjZXMgaW4gdGV4dCBhcmUgY29uZGVuc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZG93biB0byBhIHNpbmdsZSBzcGFjZS5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNvbnRlbnQgPSBub2RlLmNvbnRlbnQucmVwbGFjZSgvW1xcdFxcclxcblxcZiBdKy9nLCAnICcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFJlbW92ZSBjb21tZW50IG5vZGVzIGlmIGRlc2lyZWQgYnkgY29uZmlndXJhdGlvbi5cclxuICAgICAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovICYmICFjb250ZXh0Lm9wdGlvbnMuY29tbWVudHMpIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZWRXaGl0ZXNwYWNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29udGV4dC5pblByZSAmJiBwYXJlbnQgJiYgY29udGV4dC5vcHRpb25zLmlzUHJlVGFnKHBhcmVudC50YWcpKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nIG5ld2xpbmUgcGVyIGh0bWwgc3BlY1xyXG4gICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9ncm91cGluZy1jb250ZW50Lmh0bWwjdGhlLXByZS1lbGVtZW50XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gbm9kZXNbMF07XHJcbiAgICAgICAgICAgIGlmIChmaXJzdCAmJiBmaXJzdC50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdC5jb250ZW50ID0gZmlyc3QuY29udGVudC5yZXBsYWNlKC9eXFxyP1xcbi8sICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZW1vdmVkV2hpdGVzcGFjZSA/IG5vZGVzLmZpbHRlcihCb29sZWFuKSA6IG5vZGVzO1xyXG59XHJcbmZ1bmN0aW9uIHB1c2hOb2RlKG5vZGVzLCBub2RlKSB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgY29uc3QgcHJldiA9IGxhc3Qobm9kZXMpO1xyXG4gICAgICAgIC8vIE1lcmdlIGlmIGJvdGggdGhpcyBhbmQgdGhlIHByZXZpb3VzIG5vZGUgYXJlIHRleHQgYW5kIHRob3NlIGFyZVxyXG4gICAgICAgIC8vIGNvbnNlY3V0aXZlLiBUaGlzIGhhcHBlbnMgZm9yIGNhc2VzIGxpa2UgXCJhIDwgYlwiLlxyXG4gICAgICAgIGlmIChwcmV2ICYmXHJcbiAgICAgICAgICAgIHByZXYudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyAmJlxyXG4gICAgICAgICAgICBwcmV2LmxvYy5lbmQub2Zmc2V0ID09PSBub2RlLmxvYy5zdGFydC5vZmZzZXQpIHtcclxuICAgICAgICAgICAgcHJldi5jb250ZW50ICs9IG5vZGUuY29udGVudDtcclxuICAgICAgICAgICAgcHJldi5sb2MuZW5kID0gbm9kZS5sb2MuZW5kO1xyXG4gICAgICAgICAgICBwcmV2LmxvYy5zb3VyY2UgKz0gbm9kZS5sb2Muc291cmNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbm9kZXMucHVzaChub2RlKTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUNEQVRBKGNvbnRleHQsIGFuY2VzdG9ycykge1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIDkpO1xyXG4gICAgY29uc3Qgbm9kZXMgPSBwYXJzZUNoaWxkcmVuKGNvbnRleHQsIDMgLyogVGV4dE1vZGVzLkNEQVRBICovLCBhbmNlc3RvcnMpO1xyXG4gICAgaWYgKGNvbnRleHQuc291cmNlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA2IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NEQVRBICovKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlcztcclxufVxyXG5mdW5jdGlvbiBwYXJzZUNvbW1lbnQoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIC8vIFJlZ3VsYXIgY29tbWVudC5cclxuICAgIGNvbnN0IG1hdGNoID0gLy0tKFxcISk/Pi8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKDQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjb250ZXh0LnNvdXJjZS5sZW5ndGgpO1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA3IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NPTU1FTlQgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKG1hdGNoLmluZGV4IDw9IDMpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDAgLyogRXJyb3JDb2Rlcy5BQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1hdGNoWzFdKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMCAvKiBFcnJvckNvZGVzLklOQ09SUkVDVExZX0NMT1NFRF9DT01NRU5UICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKDQsIG1hdGNoLmluZGV4KTtcclxuICAgICAgICAvLyBBZHZhbmNpbmcgd2l0aCByZXBvcnRpbmcgbmVzdGVkIGNvbW1lbnRzLlxyXG4gICAgICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCBtYXRjaC5pbmRleCk7XHJcbiAgICAgICAgbGV0IHByZXZJbmRleCA9IDEsIG5lc3RlZEluZGV4ID0gMDtcclxuICAgICAgICB3aGlsZSAoKG5lc3RlZEluZGV4ID0gcy5pbmRleE9mKCc8IS0tJywgcHJldkluZGV4KSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBuZXN0ZWRJbmRleCAtIHByZXZJbmRleCArIDEpO1xyXG4gICAgICAgICAgICBpZiAobmVzdGVkSW5kZXggKyA0IDwgcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNiAvKiBFcnJvckNvZGVzLk5FU1RFRF9DT01NRU5UICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcmV2SW5kZXggPSBuZXN0ZWRJbmRleCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCAtIHByZXZJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgY29udGVudFN0YXJ0ID0gY29udGV4dC5zb3VyY2VbMV0gPT09ICc/JyA/IDEgOiAyO1xyXG4gICAgbGV0IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBjbG9zZUluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZignPicpO1xyXG4gICAgaWYgKGNsb3NlSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKGNvbnRlbnRTdGFydCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoY29udGVudFN0YXJ0LCBjbG9zZUluZGV4KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY2xvc2VJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlRWxlbWVudChjb250ZXh0LCBhbmNlc3RvcnMpIHtcclxuICAgIC8vIFN0YXJ0IHRhZy5cclxuICAgIGNvbnN0IHdhc0luUHJlID0gY29udGV4dC5pblByZTtcclxuICAgIGNvbnN0IHdhc0luVlByZSA9IGNvbnRleHQuaW5WUHJlO1xyXG4gICAgY29uc3QgcGFyZW50ID0gbGFzdChhbmNlc3RvcnMpO1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHBhcnNlVGFnKGNvbnRleHQsIDAgLyogVGFnVHlwZS5TdGFydCAqLywgcGFyZW50KTtcclxuICAgIGNvbnN0IGlzUHJlQm91bmRhcnkgPSBjb250ZXh0LmluUHJlICYmICF3YXNJblByZTtcclxuICAgIGNvbnN0IGlzVlByZUJvdW5kYXJ5ID0gY29udGV4dC5pblZQcmUgJiYgIXdhc0luVlByZTtcclxuICAgIGlmIChlbGVtZW50LmlzU2VsZkNsb3NpbmcgfHwgY29udGV4dC5vcHRpb25zLmlzVm9pZFRhZyhlbGVtZW50LnRhZykpIHtcclxuICAgICAgICAvLyAjNDAzMCBzZWxmLWNsb3NpbmcgPHByZT4gdGFnXHJcbiAgICAgICAgaWYgKGlzUHJlQm91bmRhcnkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5pblByZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNWUHJlQm91bmRhcnkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5pblZQcmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICAvLyBDaGlsZHJlbi5cclxuICAgIGFuY2VzdG9ycy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgY29uc3QgbW9kZSA9IGNvbnRleHQub3B0aW9ucy5nZXRUZXh0TW9kZShlbGVtZW50LCBwYXJlbnQpO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJzZUNoaWxkcmVuKGNvbnRleHQsIG1vZGUsIGFuY2VzdG9ycyk7XHJcbiAgICBhbmNlc3RvcnMucG9wKCk7XHJcbiAgICAvLyAyLnggaW5saW5lLXRlbXBsYXRlIGNvbXBhdFxyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGlubGluZVRlbXBsYXRlUHJvcCA9IGVsZW1lbnQucHJvcHMuZmluZChwID0+IHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmIHAubmFtZSA9PT0gJ2lubGluZS10ZW1wbGF0ZScpO1xyXG4gICAgICAgIGlmIChpbmxpbmVUZW1wbGF0ZVByb3AgJiZcclxuICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lOTElORV9URU1QTEFURSAqLywgY29udGV4dCwgaW5saW5lVGVtcGxhdGVQcm9wLmxvYykpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGVsZW1lbnQubG9jLmVuZCk7XHJcbiAgICAgICAgICAgIGlubGluZVRlbXBsYXRlUHJvcC52YWx1ZSA9IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8sXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsb2Muc291cmNlLFxyXG4gICAgICAgICAgICAgICAgbG9jXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxlbWVudC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgLy8gRW5kIHRhZy5cclxuICAgIGlmIChzdGFydHNXaXRoRW5kVGFnT3Blbihjb250ZXh0LnNvdXJjZSwgZWxlbWVudC50YWcpKSB7XHJcbiAgICAgICAgcGFyc2VUYWcoY29udGV4dCwgMSAvKiBUYWdUeXBlLkVuZCAqLywgcGFyZW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNCAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19FTkRfVEFHICovLCAwLCBlbGVtZW50LmxvYy5zdGFydCk7XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc291cmNlLmxlbmd0aCA9PT0gMCAmJiBlbGVtZW50LnRhZy50b0xvd2VyQ2FzZSgpID09PSAnc2NyaXB0Jykge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgJiYgc3RhcnRzV2l0aChmaXJzdC5sb2Muc291cmNlLCAnPCEtLScpKSB7XHJcbiAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgOCAvKiBFcnJvckNvZGVzLkVPRl9JTl9TQ1JJUFRfSFRNTF9DT01NRU5UX0xJS0VfVEVYVCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LmxvYyA9IGdldFNlbGVjdGlvbihjb250ZXh0LCBlbGVtZW50LmxvYy5zdGFydCk7XHJcbiAgICBpZiAoaXNQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5QcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5WUHJlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxufVxyXG5jb25zdCBpc1NwZWNpYWxUZW1wbGF0ZURpcmVjdGl2ZSA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgaWYsZWxzZSxlbHNlLWlmLGZvcixzbG90YCk7XHJcbmZ1bmN0aW9uIHBhcnNlVGFnKGNvbnRleHQsIHR5cGUsIHBhcmVudCkge1xyXG4gICAgLy8gVGFnIG9wZW4uXHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IG1hdGNoID0gL148XFwvPyhbYS16XVteXFx0XFxyXFxuXFxmIC8+XSopL2kuZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBjb25zdCB0YWcgPSBtYXRjaFsxXTtcclxuICAgIGNvbnN0IG5zID0gY29udGV4dC5vcHRpb25zLmdldE5hbWVzcGFjZSh0YWcsIHBhcmVudCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgbWF0Y2hbMF0ubGVuZ3RoKTtcclxuICAgIGFkdmFuY2VTcGFjZXMoY29udGV4dCk7XHJcbiAgICAvLyBzYXZlIGN1cnJlbnQgc3RhdGUgaW4gY2FzZSB3ZSBuZWVkIHRvIHJlLXBhcnNlIGF0dHJpYnV0ZXMgd2l0aCB2LXByZVxyXG4gICAgY29uc3QgY3Vyc29yID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgY3VycmVudFNvdXJjZSA9IGNvbnRleHQuc291cmNlO1xyXG4gICAgLy8gY2hlY2sgPHByZT4gdGFnXHJcbiAgICBpZiAoY29udGV4dC5vcHRpb25zLmlzUHJlVGFnKHRhZykpIHtcclxuICAgICAgICBjb250ZXh0LmluUHJlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIEF0dHJpYnV0ZXMuXHJcbiAgICBsZXQgcHJvcHMgPSBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSk7XHJcbiAgICAvLyBjaGVjayB2LXByZVxyXG4gICAgaWYgKHR5cGUgPT09IDAgLyogVGFnVHlwZS5TdGFydCAqLyAmJlxyXG4gICAgICAgICFjb250ZXh0LmluVlByZSAmJlxyXG4gICAgICAgIHByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdwcmUnKSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5WUHJlID0gdHJ1ZTtcclxuICAgICAgICAvLyByZXNldCBjb250ZXh0XHJcbiAgICAgICAgZXh0ZW5kKGNvbnRleHQsIGN1cnNvcik7XHJcbiAgICAgICAgY29udGV4dC5zb3VyY2UgPSBjdXJyZW50U291cmNlO1xyXG4gICAgICAgIC8vIHJlLXBhcnNlIGF0dHJzIGFuZCBmaWx0ZXIgb3V0IHYtcHJlIGl0c2VsZlxyXG4gICAgICAgIHByb3BzID0gcGFyc2VBdHRyaWJ1dGVzKGNvbnRleHQsIHR5cGUpLmZpbHRlcihwID0+IHAubmFtZSAhPT0gJ3YtcHJlJyk7XHJcbiAgICB9XHJcbiAgICAvLyBUYWcgY2xvc2UuXHJcbiAgICBsZXQgaXNTZWxmQ2xvc2luZyA9IGZhbHNlO1xyXG4gICAgaWYgKGNvbnRleHQuc291cmNlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA5IC8qIEVycm9yQ29kZXMuRU9GX0lOX1RBRyAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpc1NlbGZDbG9zaW5nID0gc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8+Jyk7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogVGFnVHlwZS5FbmQgKi8gJiYgaXNTZWxmQ2xvc2luZykge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNCAvKiBFcnJvckNvZGVzLkVORF9UQUdfV0lUSF9UUkFJTElOR19TT0xJRFVTICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGlzU2VsZkNsb3NpbmcgPyAyIDogMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gMSAvKiBUYWdUeXBlLkVuZCAqLykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIDIueCBkZXByZWNhdGlvbiBjaGVja3NcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICBpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovLCBjb250ZXh0KSkge1xyXG4gICAgICAgIGxldCBoYXNJZiA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBoYXNGb3IgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwcm9wc1tpXTtcclxuICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5uYW1lID09PSAnaWYnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzSWYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocC5uYW1lID09PSAnZm9yJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0ZvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGhhc0lmICYmIGhhc0Zvcikge1xyXG4gICAgICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKFwiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSAqLywgY29udGV4dCwgZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0YWdUeXBlID0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLztcclxuICAgIGlmICghY29udGV4dC5pblZQcmUpIHtcclxuICAgICAgICBpZiAodGFnID09PSAnc2xvdCcpIHtcclxuICAgICAgICAgICAgdGFnVHlwZSA9IDIgLyogRWxlbWVudFR5cGVzLlNMT1QgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRhZyA9PT0gJ3RlbXBsYXRlJykge1xyXG4gICAgICAgICAgICBpZiAocHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlKHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0YWdUeXBlID0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNDb21wb25lbnQodGFnLCBwcm9wcywgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgdGFnVHlwZSA9IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8sXHJcbiAgICAgICAgbnMsXHJcbiAgICAgICAgdGFnLFxyXG4gICAgICAgIHRhZ1R5cGUsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgaXNTZWxmQ2xvc2luZyxcclxuICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpLFxyXG4gICAgICAgIGNvZGVnZW5Ob2RlOiB1bmRlZmluZWQgLy8gdG8gYmUgY3JlYXRlZCBkdXJpbmcgdHJhbnNmb3JtIHBoYXNlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcG9uZW50KHRhZywgcHJvcHMsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9ucy5pc0N1c3RvbUVsZW1lbnQodGFnKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0YWcgPT09ICdjb21wb25lbnQnIHx8XHJcbiAgICAgICAgL15bQS1aXS8udGVzdCh0YWcpIHx8XHJcbiAgICAgICAgaXNDb3JlQ29tcG9uZW50KHRhZykgfHxcclxuICAgICAgICAob3B0aW9ucy5pc0J1aWx0SW5Db21wb25lbnQgJiYgb3B0aW9ucy5pc0J1aWx0SW5Db21wb25lbnQodGFnKSkgfHxcclxuICAgICAgICAob3B0aW9ucy5pc05hdGl2ZVRhZyAmJiAhb3B0aW9ucy5pc05hdGl2ZVRhZyh0YWcpKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gYXQgdGhpcyBwb2ludCB0aGUgdGFnIHNob3VsZCBiZSBhIG5hdGl2ZSB0YWcsIGJ1dCBjaGVjayBmb3IgcG90ZW50aWFsIFwiaXNcIlxyXG4gICAgLy8gY2FzdGluZ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBwcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lzJyAmJiBwLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC52YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0LCBwLmxvYykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZGlyZWN0aXZlXHJcbiAgICAgICAgICAgIC8vIHYtaXMgKFRPRE8gRGVwcmVjYXRlKVxyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSAnaXMnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgLy8gOmlzIG9uIHBsYWluIGVsZW1lbnQgLSBvbmx5IHRyZWF0IGFzIGNvbXBvbmVudCBpbiBjb21wYXQgbW9kZVxyXG4gICAgICAgICAgICBwLm5hbWUgPT09ICdiaW5kJyAmJlxyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWNBcmdPZihwLmFyZywgJ2lzJykgJiZcclxuICAgICAgICAgICAgICAgIHRydWUgJiZcclxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCwgcC5sb2MpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBbXTtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVzID0gbmV3IFNldCgpO1xyXG4gICAgd2hpbGUgKGNvbnRleHQuc291cmNlLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAhc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJz4nKSAmJlxyXG4gICAgICAgICFzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLz4nKSkge1xyXG4gICAgICAgIGlmIChzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLycpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMiAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfU09MSURVU19JTl9UQUcgKi8pO1xyXG4gICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VTcGFjZXMoY29udGV4dCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gMSAvKiBUYWdUeXBlLkVuZCAqLykge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMyAvKiBFcnJvckNvZGVzLkVORF9UQUdfV0lUSF9BVFRSSUJVVEVTICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXR0ciA9IHBhcnNlQXR0cmlidXRlKGNvbnRleHQsIGF0dHJpYnV0ZU5hbWVzKTtcclxuICAgICAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmV0d2VlbiBjbGFzc1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy9jb3JlL2lzc3Vlcy80MjUxXHJcbiAgICAgICAgaWYgKGF0dHIudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmXHJcbiAgICAgICAgICAgIGF0dHIudmFsdWUgJiZcclxuICAgICAgICAgICAgYXR0ci5uYW1lID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgIGF0dHIudmFsdWUuY29udGVudCA9IGF0dHIudmFsdWUuY29udGVudC5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gMCAvKiBUYWdUeXBlLlN0YXJ0ICovKSB7XHJcbiAgICAgICAgICAgIHByb3BzLnB1c2goYXR0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgvXlteXFx0XFxyXFxuXFxmIC8+XS8udGVzdChjb250ZXh0LnNvdXJjZSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE1IC8qIEVycm9yQ29kZXMuTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUyAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkdmFuY2VTcGFjZXMoY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGUoY29udGV4dCwgbmFtZVNldCkge1xyXG4gICAgLy8gTmFtZS5cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXlteXFx0XFxyXFxuXFxmIC8+XVteXFx0XFxyXFxuXFxmIC8+PV0qLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGNvbnN0IG5hbWUgPSBtYXRjaFswXTtcclxuICAgIGlmIChuYW1lU2V0LmhhcyhuYW1lKSkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyIC8qIEVycm9yQ29kZXMuRFVQTElDQVRFX0FUVFJJQlVURSAqLyk7XHJcbiAgICB9XHJcbiAgICBuYW1lU2V0LmFkZChuYW1lKTtcclxuICAgIGlmIChuYW1lWzBdID09PSAnPScpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTkgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRSAqLyk7XHJcbiAgICB9XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IC9bXCInPF0vZztcclxuICAgICAgICBsZXQgbTtcclxuICAgICAgICB3aGlsZSAoKG0gPSBwYXR0ZXJuLmV4ZWMobmFtZSkpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNyAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX0FUVFJJQlVURV9OQU1FICovLCBtLmluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgbmFtZS5sZW5ndGgpO1xyXG4gICAgLy8gVmFsdWVcclxuICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIGlmICgvXltcXHRcXHJcXG5cXGYgXSo9Ly50ZXN0KGNvbnRleHQuc291cmNlKSkge1xyXG4gICAgICAgIGFkdmFuY2VTcGFjZXMoY29udGV4dCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgIGFkdmFuY2VTcGFjZXMoY29udGV4dCk7XHJcbiAgICAgICAgdmFsdWUgPSBwYXJzZUF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpO1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEzIC8qIEVycm9yQ29kZXMuTUlTU0lOR19BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGxvYyA9IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCk7XHJcbiAgICBpZiAoIWNvbnRleHQuaW5WUHJlICYmIC9eKHYtW0EtWmEtejAtOS1dfDp8XFwufEB8IykvLnRlc3QobmFtZSkpIHtcclxuICAgICAgICBjb25zdCBtYXRjaCA9IC8oPzpedi0oW2EtejAtOS1dKykpPyg/Oig/Ojp8XlxcLnxeQHxeIykoXFxbW15cXF1dK1xcXXxbXlxcLl0rKSk/KC4rKT8kL2kuZXhlYyhuYW1lKTtcclxuICAgICAgICBsZXQgaXNQcm9wU2hvcnRoYW5kID0gc3RhcnRzV2l0aChuYW1lLCAnLicpO1xyXG4gICAgICAgIGxldCBkaXJOYW1lID0gbWF0Y2hbMV0gfHxcclxuICAgICAgICAgICAgKGlzUHJvcFNob3J0aGFuZCB8fCBzdGFydHNXaXRoKG5hbWUsICc6JylcclxuICAgICAgICAgICAgICAgID8gJ2JpbmQnXHJcbiAgICAgICAgICAgICAgICA6IHN0YXJ0c1dpdGgobmFtZSwgJ0AnKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ29uJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ3Nsb3QnKTtcclxuICAgICAgICBsZXQgYXJnO1xyXG4gICAgICAgIGlmIChtYXRjaFsyXSkge1xyXG4gICAgICAgICAgICBjb25zdCBpc1Nsb3QgPSBkaXJOYW1lID09PSAnc2xvdCc7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gbmFtZS5sYXN0SW5kZXhPZihtYXRjaFsyXSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGdldFNlbGVjdGlvbihjb250ZXh0LCBnZXROZXdQb3NpdGlvbihjb250ZXh0LCBzdGFydCwgc3RhcnRPZmZzZXQpLCBnZXROZXdQb3NpdGlvbihjb250ZXh0LCBzdGFydCwgc3RhcnRPZmZzZXQgKyBtYXRjaFsyXS5sZW5ndGggKyAoKGlzU2xvdCAmJiBtYXRjaFszXSkgfHwgJycpLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICBsZXQgY29udGVudCA9IG1hdGNoWzJdO1xyXG4gICAgICAgICAgICBsZXQgaXNTdGF0aWMgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoY29udGVudC5zdGFydHNXaXRoKCdbJykpIHtcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnQuZW5kc1dpdGgoJ10nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNyAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19EWU5BTUlDX0RJUkVDVElWRV9BUkdVTUVOVF9FTkQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSwgY29udGVudC5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICAgICAgICAgIC8vICMxMjQxIHNwZWNpYWwgY2FzZSBmb3Igdi1zbG90OiB2dWV0aWZ5IHJlbGllcyBleHRlbnNpdmVseSBvbiBzbG90XHJcbiAgICAgICAgICAgICAgICAvLyBuYW1lcyBjb250YWluaW5nIGRvdHMuIHYtc2xvdCBkb2Vzbid0IGhhdmUgYW55IG1vZGlmaWVycyBhbmQgVnVlIDIueFxyXG4gICAgICAgICAgICAgICAgLy8gc3VwcG9ydHMgc3VjaCB1c2FnZSBzbyB3ZSBhcmUga2VlcGluZyBpdCBjb25zaXN0ZW50IHdpdGggMi54LlxyXG4gICAgICAgICAgICAgICAgY29udGVudCArPSBtYXRjaFszXSB8fCAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcmcgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpYyxcclxuICAgICAgICAgICAgICAgIGNvbnN0VHlwZTogaXNTdGF0aWNcclxuICAgICAgICAgICAgICAgICAgICA/IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovXHJcbiAgICAgICAgICAgICAgICAgICAgOiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovLFxyXG4gICAgICAgICAgICAgICAgbG9jXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc1F1b3RlZCkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUxvYyA9IHZhbHVlLmxvYztcclxuICAgICAgICAgICAgdmFsdWVMb2Muc3RhcnQub2Zmc2V0Kys7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnN0YXJ0LmNvbHVtbisrO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5lbmQgPSBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUodmFsdWVMb2Muc3RhcnQsIHZhbHVlLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zb3VyY2UgPSB2YWx1ZUxvYy5zb3VyY2Uuc2xpY2UoMSwgLTEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBtYXRjaFszXSA/IG1hdGNoWzNdLnNsaWNlKDEpLnNwbGl0KCcuJykgOiBbXTtcclxuICAgICAgICBpZiAoaXNQcm9wU2hvcnRoYW5kKVxyXG4gICAgICAgICAgICBtb2RpZmllcnMucHVzaCgncHJvcCcpO1xyXG4gICAgICAgIC8vIDIueCBjb21wYXQgdi1iaW5kOmZvby5zeW5jIC0+IHYtbW9kZWw6Zm9vXHJcbiAgICAgICAgaWYgKGRpck5hbWUgPT09ICdiaW5kJyAmJiBhcmcpIHtcclxuICAgICAgICAgICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygnc3luYycpICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfU1lOQ1wiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfU1lOQyAqLywgY29udGV4dCwgbG9jLCBhcmcubG9jLnNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIGRpck5hbWUgPSAnbW9kZWwnO1xyXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzLnNwbGljZShtb2RpZmllcnMuaW5kZXhPZignc3luYycpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG1vZGlmaWVycy5pbmNsdWRlcygncHJvcCcpKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfUFJPUFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfUFJPUCAqLywgY29udGV4dCwgbG9jKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0eXBlOiA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8sXHJcbiAgICAgICAgICAgIG5hbWU6IGRpck5hbWUsXHJcbiAgICAgICAgICAgIGV4cDogdmFsdWUgJiYge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiB2YWx1ZS5jb250ZW50LFxyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgLy8gVHJlYXQgYXMgbm9uLWNvbnN0YW50IGJ5IGRlZmF1bHQuIFRoaXMgY2FuIGJlIHBvdGVudGlhbGx5IHNldCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gb3RoZXIgdmFsdWVzIGJ5IGB0cmFuc2Zvcm1FeHByZXNzaW9uYCB0byBtYWtlIGl0IGVsaWdpYmxlIGZvciBob2lzdGluZy5cclxuICAgICAgICAgICAgICAgIGNvbnN0VHlwZTogMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgICAgIGxvYzogdmFsdWUubG9jXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFyZyxcclxuICAgICAgICAgICAgbW9kaWZpZXJzLFxyXG4gICAgICAgICAgICBsb2NcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gbWlzc2luZyBkaXJlY3RpdmUgbmFtZSBvciBpbGxlZ2FsIGRpcmVjdGl2ZSBuYW1lXHJcbiAgICBpZiAoIWNvbnRleHQuaW5WUHJlICYmIHN0YXJ0c1dpdGgobmFtZSwgJ3YtJykpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjYgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRElSRUNUSVZFX05BTUUgKi8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8sXHJcbiAgICAgICAgbmFtZSxcclxuICAgICAgICB2YWx1ZTogdmFsdWUgJiYge1xyXG4gICAgICAgICAgICB0eXBlOiAyIC8qIE5vZGVUeXBlcy5URVhUICovLFxyXG4gICAgICAgICAgICBjb250ZW50OiB2YWx1ZS5jb250ZW50LFxyXG4gICAgICAgICAgICBsb2M6IHZhbHVlLmxvY1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlVmFsdWUoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIGNvbnN0IHF1b3RlID0gY29udGV4dC5zb3VyY2VbMF07XHJcbiAgICBjb25zdCBpc1F1b3RlZCA9IHF1b3RlID09PSBgXCJgIHx8IHF1b3RlID09PSBgJ2A7XHJcbiAgICBpZiAoaXNRdW90ZWQpIHtcclxuICAgICAgICAvLyBRdW90ZWQgdmFsdWUuXHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihxdW90ZSk7XHJcbiAgICAgICAgaWYgKGVuZEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBjb250ZXh0LnNvdXJjZS5sZW5ndGgsIDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBlbmRJbmRleCwgNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIFVucXVvdGVkXHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlteXFx0XFxyXFxuXFxmID5dKy8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICAgICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1bmV4cGVjdGVkQ2hhcnMgPSAvW1wiJzw9YF0vZztcclxuICAgICAgICBsZXQgbTtcclxuICAgICAgICB3aGlsZSAoKG0gPSB1bmV4cGVjdGVkQ2hhcnMuZXhlYyhtYXRjaFswXSkpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxOCAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRSAqLywgbS5pbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIG1hdGNoWzBdLmxlbmd0aCwgNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGNvbnRlbnQsIGlzUXVvdGVkLCBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCkgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUludGVycG9sYXRpb24oY29udGV4dCwgbW9kZSkge1xyXG4gICAgY29uc3QgW29wZW4sIGNsb3NlXSA9IGNvbnRleHQub3B0aW9ucy5kZWxpbWl0ZXJzO1xyXG4gICAgY29uc3QgY2xvc2VJbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcclxuICAgIGlmIChjbG9zZUluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNSAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORCAqLyk7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG9wZW4ubGVuZ3RoKTtcclxuICAgIGNvbnN0IGlubmVyU3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBpbm5lckVuZCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IHJhd0NvbnRlbnRMZW5ndGggPSBjbG9zZUluZGV4IC0gb3Blbi5sZW5ndGg7XHJcbiAgICBjb25zdCByYXdDb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgcmF3Q29udGVudExlbmd0aCk7XHJcbiAgICBjb25zdCBwcmVUcmltQ29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgcmF3Q29udGVudExlbmd0aCwgbW9kZSk7XHJcbiAgICBjb25zdCBjb250ZW50ID0gcHJlVHJpbUNvbnRlbnQudHJpbSgpO1xyXG4gICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBwcmVUcmltQ29udGVudC5pbmRleE9mKGNvbnRlbnQpO1xyXG4gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gMCkge1xyXG4gICAgICAgIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihpbm5lclN0YXJ0LCByYXdDb250ZW50LCBzdGFydE9mZnNldCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbmRPZmZzZXQgPSByYXdDb250ZW50TGVuZ3RoIC0gKHByZVRyaW1Db250ZW50Lmxlbmd0aCAtIGNvbnRlbnQubGVuZ3RoIC0gc3RhcnRPZmZzZXQpO1xyXG4gICAgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGlubmVyRW5kLCByYXdDb250ZW50LCBlbmRPZmZzZXQpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNsb3NlLmxlbmd0aCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8sXHJcbiAgICAgICAgY29udGVudDoge1xyXG4gICAgICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgaXNTdGF0aWM6IGZhbHNlLFxyXG4gICAgICAgICAgICAvLyBTZXQgYGlzQ29uc3RhbnRgIHRvIGZhbHNlIGJ5IGRlZmF1bHQgYW5kIHdpbGwgZGVjaWRlIGluIHRyYW5zZm9ybUV4cHJlc3Npb25cclxuICAgICAgICAgICAgY29uc3RUeXBlOiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBpbm5lclN0YXJ0LCBpbm5lckVuZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZVRleHQoY29udGV4dCwgbW9kZSkge1xyXG4gICAgY29uc3QgZW5kVG9rZW5zID0gbW9kZSA9PT0gMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi8gPyBbJ11dPiddIDogWyc8JywgY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnNbMF1dO1xyXG4gICAgbGV0IGVuZEluZGV4ID0gY29udGV4dC5zb3VyY2UubGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmRUb2tlbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YoZW5kVG9rZW5zW2ldLCAxKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xICYmIGVuZEluZGV4ID4gaW5kZXgpIHtcclxuICAgICAgICAgICAgZW5kSW5kZXggPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGVuZEluZGV4LCBtb2RlKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogR2V0IHRleHQgZGF0YSB3aXRoIGEgZ2l2ZW4gbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgbG9jYXRpb24uXHJcbiAqIFRoaXMgdHJhbnNsYXRlcyBIVE1MIGVudGl0aWVzIGluIHRoZSB0ZXh0IGRhdGEuXHJcbiAqL1xyXG5mdW5jdGlvbiBwYXJzZVRleHREYXRhKGNvbnRleHQsIGxlbmd0aCwgbW9kZSkge1xyXG4gICAgY29uc3QgcmF3VGV4dCA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIGxlbmd0aCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgbGVuZ3RoKTtcclxuICAgIGlmIChtb2RlID09PSAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovIHx8XHJcbiAgICAgICAgbW9kZSA9PT0gMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi8gfHxcclxuICAgICAgICAhcmF3VGV4dC5pbmNsdWRlcygnJicpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhd1RleHQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBEQVRBIG9yIFJDREFUQSBjb250YWluaW5nIFwiJlwiXCIuIEVudGl0eSBkZWNvZGluZyByZXF1aXJlZC5cclxuICAgICAgICByZXR1cm4gY29udGV4dC5vcHRpb25zLmRlY29kZUVudGl0aWVzKHJhd1RleHQsIG1vZGUgPT09IDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q3Vyc29yKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29sdW1uLCBsaW5lLCBvZmZzZXQgfSA9IGNvbnRleHQ7XHJcbiAgICByZXR1cm4geyBjb2x1bW4sIGxpbmUsIG9mZnNldCB9O1xyXG59XHJcbmZ1bmN0aW9uIGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCwgZW5kKSB7XHJcbiAgICBlbmQgPSBlbmQgfHwgZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzdGFydCxcclxuICAgICAgICBlbmQsXHJcbiAgICAgICAgc291cmNlOiBjb250ZXh0Lm9yaWdpbmFsU291cmNlLnNsaWNlKHN0YXJ0Lm9mZnNldCwgZW5kLm9mZnNldClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gbGFzdCh4cykge1xyXG4gICAgcmV0dXJuIHhzW3hzLmxlbmd0aCAtIDFdO1xyXG59XHJcbmZ1bmN0aW9uIHN0YXJ0c1dpdGgoc291cmNlLCBzZWFyY2hTdHJpbmcpIHtcclxuICAgIHJldHVybiBzb3VyY2Uuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpO1xyXG59XHJcbmZ1bmN0aW9uIGFkdmFuY2VCeShjb250ZXh0LCBudW1iZXJPZkNoYXJhY3RlcnMpIHtcclxuICAgIGNvbnN0IHsgc291cmNlIH0gPSBjb250ZXh0O1xyXG4gICAgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGNvbnRleHQsIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxuICAgIGNvbnRleHQuc291cmNlID0gc291cmNlLnNsaWNlKG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZVNwYWNlcyhjb250ZXh0KSB7XHJcbiAgICBjb25zdCBtYXRjaCA9IC9eW1xcdFxcclxcblxcZiBdKy8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgbWF0Y2hbMF0ubGVuZ3RoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXROZXdQb3NpdGlvbihjb250ZXh0LCBzdGFydCwgbnVtYmVyT2ZDaGFyYWN0ZXJzKSB7XHJcbiAgICByZXR1cm4gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHN0YXJ0LCBjb250ZXh0Lm9yaWdpbmFsU291cmNlLnNsaWNlKHN0YXJ0Lm9mZnNldCwgbnVtYmVyT2ZDaGFyYWN0ZXJzKSwgbnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxufVxyXG5mdW5jdGlvbiBlbWl0RXJyb3IoY29udGV4dCwgY29kZSwgb2Zmc2V0LCBsb2MgPSBnZXRDdXJzb3IoY29udGV4dCkpIHtcclxuICAgIGlmIChvZmZzZXQpIHtcclxuICAgICAgICBsb2Mub2Zmc2V0ICs9IG9mZnNldDtcclxuICAgICAgICBsb2MuY29sdW1uICs9IG9mZnNldDtcclxuICAgIH1cclxuICAgIGNvbnRleHQub3B0aW9ucy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwge1xyXG4gICAgICAgIHN0YXJ0OiBsb2MsXHJcbiAgICAgICAgZW5kOiBsb2MsXHJcbiAgICAgICAgc291cmNlOiAnJ1xyXG4gICAgfSkpO1xyXG59XHJcbmZ1bmN0aW9uIGlzRW5kKGNvbnRleHQsIG1vZGUsIGFuY2VzdG9ycykge1xyXG4gICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlO1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgICAgY2FzZSAwIC8qIFRleHRNb2Rlcy5EQVRBICovOlxyXG4gICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzLCAnPC8nKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogcHJvYmFibHkgYmFkIHBlcmZvcm1hbmNlXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gYW5jZXN0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGhFbmRUYWdPcGVuKHMsIGFuY2VzdG9yc1tpXS50YWcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLzpcclxuICAgICAgICBjYXNlIDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi86IHtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gbGFzdChhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50ICYmIHN0YXJ0c1dpdGhFbmRUYWdPcGVuKHMsIHBhcmVudC50YWcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLzpcclxuICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJ11dPicpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiAhcztcclxufVxyXG5mdW5jdGlvbiBzdGFydHNXaXRoRW5kVGFnT3Blbihzb3VyY2UsIHRhZykge1xyXG4gICAgcmV0dXJuIChzdGFydHNXaXRoKHNvdXJjZSwgJzwvJykgJiZcclxuICAgICAgICBzb3VyY2Uuc2xpY2UoMiwgMiArIHRhZy5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHRhZy50b0xvd2VyQ2FzZSgpICYmXHJcbiAgICAgICAgL1tcXHRcXHJcXG5cXGYgLz5dLy50ZXN0KHNvdXJjZVsyICsgdGFnLmxlbmd0aF0gfHwgJz4nKSk7XHJcbn1cblxuZnVuY3Rpb24gaG9pc3RTdGF0aWMocm9vdCwgY29udGV4dCkge1xyXG4gICAgd2Fsayhyb290LCBjb250ZXh0LCBcclxuICAgIC8vIFJvb3Qgbm9kZSBpcyB1bmZvcnR1bmF0ZWx5IG5vbi1ob2lzdGFibGUgZHVlIHRvIHBvdGVudGlhbCBwYXJlbnRcclxuICAgIC8vIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZXMuXHJcbiAgICBpc1NpbmdsZUVsZW1lbnRSb290KHJvb3QsIHJvb3QuY2hpbGRyZW5bMF0pKTtcclxufVxyXG5mdW5jdGlvbiBpc1NpbmdsZUVsZW1lbnRSb290KHJvb3QsIGNoaWxkKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSByb290O1xyXG4gICAgcmV0dXJuIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICBjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgIWlzU2xvdE91dGxldChjaGlsZCkpO1xyXG59XHJcbmZ1bmN0aW9uIHdhbGsobm9kZSwgY29udGV4dCwgZG9Ob3RIb2lzdE5vZGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgIGNvbnN0IG9yaWdpbmFsQ291bnQgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICBsZXQgaG9pc3RlZENvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIC8vIG9ubHkgcGxhaW4gZWxlbWVudHMgJiB0ZXh0IGNhbGxzIGFyZSBlbGlnaWJsZSBmb3IgaG9pc3RpbmcuXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgY2hpbGQudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBjb25zdGFudFR5cGUgPSBkb05vdEhvaXN0Tm9kZVxyXG4gICAgICAgICAgICAgICAgPyAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovXHJcbiAgICAgICAgICAgICAgICA6IGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChjb25zdGFudFR5cGUgPiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRUeXBlID49IDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5jb2RlZ2VuTm9kZS5wYXRjaEZsYWcgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAtMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi8gKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiBIT0lTVEVEICovYCA6IGBgKTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuaG9pc3QoY2hpbGQuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGhvaXN0ZWRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gbm9kZSBtYXkgY29udGFpbiBkeW5hbWljIGNoaWxkcmVuLCBidXQgaXRzIHByb3BzIG1heSBiZSBlbGlnaWJsZSBmb3JcclxuICAgICAgICAgICAgICAgIC8vIGhvaXN0aW5nLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBjaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBnZXRQYXRjaEZsYWcoY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoIWZsYWcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9PT0gNTEyIC8qIFBhdGNoRmxhZ3MuTkVFRF9QQVRDSCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID09PSAxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID49XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzID0gZ2V0Tm9kZVByb3BzKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5wcm9wcyA9IGNvbnRleHQuaG9pc3QocHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS5keW5hbWljUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzID0gY29udGV4dC5ob2lzdChjb2RlZ2VuTm9kZS5keW5hbWljUHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovICYmXHJcbiAgICAgICAgICAgIGdldENvbnN0YW50VHlwZShjaGlsZC5jb250ZW50LCBjb250ZXh0KSA+PSAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSB7XHJcbiAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlID0gY29udGV4dC5ob2lzdChjaGlsZC5jb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgIGhvaXN0ZWRDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3YWxrIGZ1cnRoZXJcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBpc0NvbXBvbmVudCA9IGNoaWxkLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLztcclxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdhbGsoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLykge1xyXG4gICAgICAgICAgICAvLyBEbyBub3QgaG9pc3Qgdi1mb3Igc2luZ2xlIGNoaWxkIGJlY2F1c2UgaXQgaGFzIHRvIGJlIGEgYmxvY2tcclxuICAgICAgICAgICAgd2FsayhjaGlsZCwgY29udGV4dCwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoID09PSAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZC5icmFuY2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IGhvaXN0IHYtaWYgc2luZ2xlIGNoaWxkIGJlY2F1c2UgaXQgaGFzIHRvIGJlIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgIHdhbGsoY2hpbGQuYnJhbmNoZXNbaV0sIGNvbnRleHQsIGNoaWxkLmJyYW5jaGVzW2ldLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaG9pc3RlZENvdW50ICYmIGNvbnRleHQudHJhbnNmb3JtSG9pc3QpIHtcclxuICAgICAgICBjb250ZXh0LnRyYW5zZm9ybUhvaXN0KGNoaWxkcmVuLCBjb250ZXh0LCBub2RlKTtcclxuICAgIH1cclxuICAgIC8vIGFsbCBjaGlsZHJlbiB3ZXJlIGhvaXN0ZWQgLSB0aGUgZW50aXJlIGNoaWxkcmVuIGFycmF5IGlzIGhvaXN0YWJsZS5cclxuICAgIGlmIChob2lzdGVkQ291bnQgJiZcclxuICAgICAgICBob2lzdGVkQ291bnQgPT09IG9yaWdpbmFsQ291bnQgJiZcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlICYmXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLyAmJlxyXG4gICAgICAgIGlzQXJyYXkobm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuID0gY29udGV4dC5ob2lzdChjcmVhdGVBcnJheUV4cHJlc3Npb24obm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldENvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbnN0YW50Q2FjaGUgfSA9IGNvbnRleHQ7XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgaWYgKG5vZGUudGFnVHlwZSAhPT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gY29uc3RhbnRDYWNoZS5nZXQobm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlICE9PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmlzQmxvY2sgJiZcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnICE9PSAnc3ZnJyAmJlxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWcgIT09ICdmb3JlaWduT2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZmxhZyA9IGdldFBhdGNoRmxhZyhjb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgICAgICAgICAgICAgIC8vIEVsZW1lbnQgaXRzZWxmIGhhcyBubyBwYXRjaCBmbGFnLiBIb3dldmVyIHdlIHN0aWxsIG5lZWQgdG8gY2hlY2s6XHJcbiAgICAgICAgICAgICAgICAvLyAxLiBFdmVuIGZvciBhIG5vZGUgd2l0aCBubyBwYXRjaCBmbGFnLCBpdCBpcyBwb3NzaWJsZSBmb3IgaXQgdG8gY29udGFpblxyXG4gICAgICAgICAgICAgICAgLy8gbm9uLWhvaXN0YWJsZSBleHByZXNzaW9ucyB0aGF0IHJlZmVycyB0byBzY29wZSB2YXJpYWJsZXMsIGUuZy4gY29tcGlsZXJcclxuICAgICAgICAgICAgICAgIC8vIGluamVjdGVkIGtleXMgb3IgY2FjaGVkIGV2ZW50IGhhbmRsZXJzLiBUaGVyZWZvcmUgd2UgbmVlZCB0byBhbHdheXNcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBjb2RlZ2VuTm9kZSdzIHByb3BzIHRvIGJlIHN1cmUuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBnZW5lcmF0ZWRQcm9wc1R5cGUgPSBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRQcm9wc1R5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRQcm9wc1R5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGdlbmVyYXRlZFByb3BzVHlwZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIDIuIGl0cyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShub2RlLmNoaWxkcmVuW2ldLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGNoaWxkVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAzLiBpZiB0aGUgdHlwZSBpcyBub3QgYWxyZWFkeSBDQU5fU0tJUF9QQVRDSCB3aGljaCBpcyB0aGUgbG93ZXN0IG5vbi0wXHJcbiAgICAgICAgICAgICAgICAvLyB0eXBlLCBjaGVjayBpZiBhbnkgb2YgdGhlIHByb3BzIGNhbiBjYXVzZSB0aGUgdHlwZSB0byBiZSBsb3dlcmVkXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gc2tpcCBjYW5fcGF0Y2ggYmVjYXVzZSBpdCdzIGd1YXJhbnRlZWQgYnkgdGhlIGFic2VuY2Ugb2YgYVxyXG4gICAgICAgICAgICAgICAgLy8gcGF0Y2hGbGFnLlxyXG4gICAgICAgICAgICAgICAgaWYgKHJldHVyblR5cGUgPiAxIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NLSVBfUEFUQ0ggKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdiaW5kJyAmJiBwLmV4cCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwVHlwZSA9IGdldENvbnN0YW50VHlwZShwLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGV4cFR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvbmx5IHN2Zy9mb3JlaWduT2JqZWN0IGNvdWxkIGJlIGJsb2NrIGhlcmUsIGhvd2V2ZXIgaWYgdGhleSBhcmVcclxuICAgICAgICAgICAgICAgIC8vIHN0YXRpYyB0aGVuIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSBibG9ja3Mgc2luY2UgdGhlcmUgd2lsbCBiZSBub1xyXG4gICAgICAgICAgICAgICAgLy8gbmVzdGVkIHVwZGF0ZXMuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuaXNCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGV4Y2VwdCBzZXQgY3VzdG9tIGRpcmVjdGl2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVIZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVIZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjb2RlZ2VuTm9kZS5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLmlzQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcihnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBjb2RlZ2VuTm9kZS5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgcmV0dXJuVHlwZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIDIgLyogTm9kZVR5cGVzLlRFWFQgKi86XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICByZXR1cm4gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICBjYXNlIDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgY2FzZSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovOlxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICAgICAgY2FzZSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY29uc3RUeXBlO1xyXG4gICAgICAgIGNhc2UgOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoY2hpbGQpIHx8IGlzU3ltYm9sKGNoaWxkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gY2hpbGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIDtcclxuICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICB9XHJcbn1cclxuY29uc3QgYWxsb3dIb2lzdGVkSGVscGVyU2V0ID0gbmV3IFNldChbXHJcbiAgICBOT1JNQUxJWkVfQ0xBU1MsXHJcbiAgICBOT1JNQUxJWkVfU1RZTEUsXHJcbiAgICBOT1JNQUxJWkVfUFJPUFMsXHJcbiAgICBHVUFSRF9SRUFDVElWRV9QUk9QU1xyXG5dKTtcclxuZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsKHZhbHVlLCBjb250ZXh0KSB7XHJcbiAgICBpZiAodmFsdWUudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICFpc1N0cmluZyh2YWx1ZS5jYWxsZWUpICYmXHJcbiAgICAgICAgYWxsb3dIb2lzdGVkSGVscGVyU2V0Lmhhcyh2YWx1ZS5jYWxsZWUpKSB7XHJcbiAgICAgICAgY29uc3QgYXJnID0gdmFsdWUuYXJndW1lbnRzWzBdO1xyXG4gICAgICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZShhcmcsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmcudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBuZXN0ZWQgaGVscGVyIGNhbGwsIGUuZy4gYG5vcm1hbGl6ZVByb3BzKGd1YXJkUmVhY3RpdmVQcm9wcyhleHApKWBcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChhcmcsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG59XHJcbmZ1bmN0aW9uIGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGxldCByZXR1cm5UeXBlID0gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhub2RlKTtcclxuICAgIGlmIChwcm9wcyAmJiBwcm9wcy50eXBlID09PSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHByb3BlcnRpZXNbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IGtleVR5cGUgPSBnZXRDb25zdGFudFR5cGUoa2V5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGtleVR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBrZXlUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChrZXlUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGtleVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSBnZXRDb25zdGFudFR5cGUodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHNvbWUgaGVscGVyIGNhbGxzIGNhbiBiZSBob2lzdGVkLFxyXG4gICAgICAgICAgICAgICAgLy8gc3VjaCBhcyB0aGUgYG5vcm1hbGl6ZVByb3BzYCBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBwcmUtbm9ybWFsaXplIGNsYXNzLFxyXG4gICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gcmVzcGVjdCB0aGUgQ29uc3RhbnRUeXBlIG9mIHRoZSBoZWxwZXIncyBhcmd1bWVudHNcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbCh2YWx1ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0dXJuVHlwZTtcclxufVxyXG5mdW5jdGlvbiBnZXROb2RlUHJvcHMobm9kZSkge1xyXG4gICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvZGVnZW5Ob2RlLnByb3BzO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldFBhdGNoRmxhZyhub2RlKSB7XHJcbiAgICBjb25zdCBmbGFnID0gbm9kZS5wYXRjaEZsYWc7XHJcbiAgICByZXR1cm4gZmxhZyA/IHBhcnNlSW50KGZsYWcsIDEwKSA6IHVuZGVmaW5lZDtcclxufVxuXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KHJvb3QsIHsgZmlsZW5hbWUgPSAnJywgcHJlZml4SWRlbnRpZmllcnMgPSBmYWxzZSwgaG9pc3RTdGF0aWMgPSBmYWxzZSwgY2FjaGVIYW5kbGVycyA9IGZhbHNlLCBub2RlVHJhbnNmb3JtcyA9IFtdLCBkaXJlY3RpdmVUcmFuc2Zvcm1zID0ge30sIHRyYW5zZm9ybUhvaXN0ID0gbnVsbCwgaXNCdWlsdEluQ29tcG9uZW50ID0gTk9PUCwgaXNDdXN0b21FbGVtZW50ID0gTk9PUCwgZXhwcmVzc2lvblBsdWdpbnMgPSBbXSwgc2NvcGVJZCA9IG51bGwsIHNsb3R0ZWQgPSB0cnVlLCBzc3IgPSBmYWxzZSwgaW5TU1IgPSBmYWxzZSwgc3NyQ3NzVmFycyA9IGBgLCBiaW5kaW5nTWV0YWRhdGEgPSBFTVBUWV9PQkosIGlubGluZSA9IGZhbHNlLCBpc1RTID0gZmFsc2UsIG9uRXJyb3IgPSBkZWZhdWx0T25FcnJvciwgb25XYXJuID0gZGVmYXVsdE9uV2FybiwgY29tcGF0Q29uZmlnIH0pIHtcclxuICAgIGNvbnN0IG5hbWVNYXRjaCA9IGZpbGVuYW1lLnJlcGxhY2UoL1xcPy4qJC8sICcnKS5tYXRjaCgvKFteL1xcXFxdKylcXC5cXHcrJC8pO1xyXG4gICAgY29uc3QgY29udGV4dCA9IHtcclxuICAgICAgICAvLyBvcHRpb25zXHJcbiAgICAgICAgc2VsZk5hbWU6IG5hbWVNYXRjaCAmJiBjYXBpdGFsaXplKGNhbWVsaXplJDEobmFtZU1hdGNoWzFdKSksXHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgaG9pc3RTdGF0aWMsXHJcbiAgICAgICAgY2FjaGVIYW5kbGVycyxcclxuICAgICAgICBub2RlVHJhbnNmb3JtcyxcclxuICAgICAgICBkaXJlY3RpdmVUcmFuc2Zvcm1zLFxyXG4gICAgICAgIHRyYW5zZm9ybUhvaXN0LFxyXG4gICAgICAgIGlzQnVpbHRJbkNvbXBvbmVudCxcclxuICAgICAgICBpc0N1c3RvbUVsZW1lbnQsXHJcbiAgICAgICAgZXhwcmVzc2lvblBsdWdpbnMsXHJcbiAgICAgICAgc2NvcGVJZCxcclxuICAgICAgICBzbG90dGVkLFxyXG4gICAgICAgIHNzcixcclxuICAgICAgICBpblNTUixcclxuICAgICAgICBzc3JDc3NWYXJzLFxyXG4gICAgICAgIGJpbmRpbmdNZXRhZGF0YSxcclxuICAgICAgICBpbmxpbmUsXHJcbiAgICAgICAgaXNUUyxcclxuICAgICAgICBvbkVycm9yLFxyXG4gICAgICAgIG9uV2FybixcclxuICAgICAgICBjb21wYXRDb25maWcsXHJcbiAgICAgICAgLy8gc3RhdGVcclxuICAgICAgICByb290LFxyXG4gICAgICAgIGhlbHBlcnM6IG5ldyBNYXAoKSxcclxuICAgICAgICBjb21wb25lbnRzOiBuZXcgU2V0KCksXHJcbiAgICAgICAgZGlyZWN0aXZlczogbmV3IFNldCgpLFxyXG4gICAgICAgIGhvaXN0czogW10sXHJcbiAgICAgICAgaW1wb3J0czogW10sXHJcbiAgICAgICAgY29uc3RhbnRDYWNoZTogbmV3IE1hcCgpLFxyXG4gICAgICAgIHRlbXBzOiAwLFxyXG4gICAgICAgIGNhY2hlZDogMCxcclxuICAgICAgICBpZGVudGlmaWVyczogT2JqZWN0LmNyZWF0ZShudWxsKSxcclxuICAgICAgICBzY29wZXM6IHtcclxuICAgICAgICAgICAgdkZvcjogMCxcclxuICAgICAgICAgICAgdlNsb3Q6IDAsXHJcbiAgICAgICAgICAgIHZQcmU6IDAsXHJcbiAgICAgICAgICAgIHZPbmNlOiAwXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYXJlbnQ6IG51bGwsXHJcbiAgICAgICAgY3VycmVudE5vZGU6IHJvb3QsXHJcbiAgICAgICAgY2hpbGRJbmRleDogMCxcclxuICAgICAgICBpblZPbmNlOiBmYWxzZSxcclxuICAgICAgICAvLyBtZXRob2RzXHJcbiAgICAgICAgaGVscGVyKG5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY291bnQgPSBjb250ZXh0LmhlbHBlcnMuZ2V0KG5hbWUpIHx8IDA7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5zZXQobmFtZSwgY291bnQgKyAxKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVIZWxwZXIobmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IGNvbnRleHQuaGVscGVycy5nZXQobmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChjb3VudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvdW50ID0gY291bnQgLSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuZGVsZXRlKG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLnNldChuYW1lLCBjdXJyZW50Q291bnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoZWxwZXJTdHJpbmcobmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYF8ke2hlbHBlck5hbWVNYXBbY29udGV4dC5oZWxwZXIobmFtZSldfWA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXBsYWNlTm9kZShub2RlKSB7XHJcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQuY3VycmVudE5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgYmVpbmcgcmVwbGFjZWQgaXMgYWxyZWFkeSByZW1vdmVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlcGxhY2Ugcm9vdCBub2RlLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQucGFyZW50LmNoaWxkcmVuW2NvbnRleHQuY2hpbGRJbmRleF0gPSBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZU5vZGUobm9kZSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjb250ZXh0LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVtb3ZlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbW92YWxJbmRleCA9IG5vZGVcclxuICAgICAgICAgICAgICAgID8gbGlzdC5pbmRleE9mKG5vZGUpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnRleHQuY3VycmVudE5vZGVcclxuICAgICAgICAgICAgICAgICAgICA/IGNvbnRleHQuY2hpbGRJbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIDogLTE7XHJcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHJlbW92YWxJbmRleCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbm9kZSBiZWluZyByZW1vdmVkIGlzIG5vdCBhIGNoaWxkIG9mIGN1cnJlbnQgcGFyZW50YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUgPT09IGNvbnRleHQuY3VycmVudE5vZGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgbm9kZSByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc2libGluZyBub2RlIHJlbW92ZWRcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmNoaWxkSW5kZXggPiByZW1vdmFsSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNoaWxkSW5kZXgtLTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uTm9kZVJlbW92ZWQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnBhcmVudC5jaGlsZHJlbi5zcGxpY2UocmVtb3ZhbEluZGV4LCAxKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uTm9kZVJlbW92ZWQ6ICgpID0+IHsgfSxcclxuICAgICAgICBhZGRJZGVudGlmaWVycyhleHApIHtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUlkZW50aWZpZXJzKGV4cCkge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaG9pc3QoZXhwKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1N0cmluZyhleHApKVxyXG4gICAgICAgICAgICAgICAgZXhwID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihleHApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmhvaXN0cy5wdXNoKGV4cCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfaG9pc3RlZF8ke2NvbnRleHQuaG9pc3RzLmxlbmd0aH1gLCBmYWxzZSwgZXhwLmxvYywgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLyk7XHJcbiAgICAgICAgICAgIGlkZW50aWZpZXIuaG9pc3RlZCA9IGV4cDtcclxuICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYWNoZShleHAsIGlzVk5vZGUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FjaGVFeHByZXNzaW9uKGNvbnRleHQuY2FjaGVkKyssIGV4cCwgaXNWTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMgPSBuZXcgU2V0KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG5mdW5jdGlvbiB0cmFuc2Zvcm0ocm9vdCwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQocm9vdCwgb3B0aW9ucyk7XHJcbiAgICB0cmF2ZXJzZU5vZGUocm9vdCwgY29udGV4dCk7XHJcbiAgICBpZiAob3B0aW9ucy5ob2lzdFN0YXRpYykge1xyXG4gICAgICAgIGhvaXN0U3RhdGljKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zLnNzcikge1xyXG4gICAgICAgIGNyZWF0ZVJvb3RDb2RlZ2VuKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgLy8gZmluYWxpemUgbWV0YSBpbmZvcm1hdGlvblxyXG4gICAgcm9vdC5oZWxwZXJzID0gWy4uLmNvbnRleHQuaGVscGVycy5rZXlzKCldO1xyXG4gICAgcm9vdC5jb21wb25lbnRzID0gWy4uLmNvbnRleHQuY29tcG9uZW50c107XHJcbiAgICByb290LmRpcmVjdGl2ZXMgPSBbLi4uY29udGV4dC5kaXJlY3RpdmVzXTtcclxuICAgIHJvb3QuaW1wb3J0cyA9IGNvbnRleHQuaW1wb3J0cztcclxuICAgIHJvb3QuaG9pc3RzID0gY29udGV4dC5ob2lzdHM7XHJcbiAgICByb290LnRlbXBzID0gY29udGV4dC50ZW1wcztcclxuICAgIHJvb3QuY2FjaGVkID0gY29udGV4dC5jYWNoZWQ7XHJcbiAgICB7XHJcbiAgICAgICAgcm9vdC5maWx0ZXJzID0gWy4uLmNvbnRleHQuZmlsdGVyc107XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUm9vdENvZGVnZW4ocm9vdCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSByb290O1xyXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgLy8gaWYgdGhlIHNpbmdsZSBjaGlsZCBpcyBhbiBlbGVtZW50LCB0dXJuIGl0IGludG8gYSBibG9jay5cclxuICAgICAgICBpZiAoaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCBjaGlsZCkgJiYgY2hpbGQuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICAgICAgLy8gc2luZ2xlIGVsZW1lbnQgcm9vdCBpcyBuZXZlciBob2lzdGVkIHNvIGNvZGVnZW5Ob2RlIHdpbGwgbmV2ZXIgYmVcclxuICAgICAgICAgICAgLy8gU2ltcGxlRXhwcmVzc2lvbk5vZGVcclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBjaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICBtYWtlQmxvY2soY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjb2RlZ2VuTm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIC0gc2luZ2xlIDxzbG90Lz4sIElmTm9kZSwgRm9yTm9kZTogYWxyZWFkeSBibG9ja3MuXHJcbiAgICAgICAgICAgIC8vIC0gc2luZ2xlIHRleHQgbm9kZTogYWx3YXlzIHBhdGNoZWQuXHJcbiAgICAgICAgICAgIC8vIHJvb3QgY29kZWdlbiBmYWxscyB0aHJvdWdoIHZpYSBnZW5Ob2RlKClcclxuICAgICAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNoaWxkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyByb290IGhhcyBtdWx0aXBsZSBub2RlcyAtIHJldHVybiBhIGZyYWdtZW50IGJsb2NrLlxyXG4gICAgICAgIGxldCBwYXRjaEZsYWcgPSA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLztcclxuICAgICAgICBsZXQgcGF0Y2hGbGFnVGV4dCA9IFBhdGNoRmxhZ05hbWVzWzY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXTtcclxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgZnJhZ21lbnQgYWN0dWFsbHkgY29udGFpbnMgYSBzaW5nbGUgdmFsaWQgY2hpbGQgd2l0aFxyXG4gICAgICAgIC8vIHRoZSByZXN0IGJlaW5nIGNvbW1lbnRzXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBjaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovO1xyXG4gICAgICAgICAgICBwYXRjaEZsYWdUZXh0ICs9IGAsICR7UGF0Y2hGbGFnTmFtZXNbMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovXX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIHVuZGVmaW5lZCwgcm9vdC5jaGlsZHJlbiwgcGF0Y2hGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtwYXRjaEZsYWdUZXh0fSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCB1bmRlZmluZWQsIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovKTtcclxuICAgIH1cclxuICAgIGVsc2UgO1xyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlQ2hpbGRyZW4ocGFyZW50LCBjb250ZXh0KSB7XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBjb25zdCBub2RlUmVtb3ZlZCA9ICgpID0+IHtcclxuICAgICAgICBpLS07XHJcbiAgICB9O1xyXG4gICAgZm9yICg7IGkgPCBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IHBhcmVudC5jaGlsZHJlbltpXTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcoY2hpbGQpKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBjb250ZXh0LnBhcmVudCA9IHBhcmVudDtcclxuICAgICAgICBjb250ZXh0LmNoaWxkSW5kZXggPSBpO1xyXG4gICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCA9IG5vZGVSZW1vdmVkO1xyXG4gICAgICAgIHRyYXZlcnNlTm9kZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2VOb2RlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgLy8gYXBwbHkgdHJhbnNmb3JtIHBsdWdpbnNcclxuICAgIGNvbnN0IHsgbm9kZVRyYW5zZm9ybXMgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBleGl0Rm5zID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVUcmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgb25FeGl0ID0gbm9kZVRyYW5zZm9ybXNbaV0obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKG9uRXhpdCkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShvbkV4aXQpKSB7XHJcbiAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2goLi4ub25FeGl0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4aXRGbnMucHVzaChvbkV4aXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAvLyBub2RlIHdhcyByZW1vdmVkXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vZGUgbWF5IGhhdmUgYmVlbiByZXBsYWNlZFxyXG4gICAgICAgICAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LnNzcikge1xyXG4gICAgICAgICAgICAgICAgLy8gaW5qZWN0IGltcG9ydCBmb3IgdGhlIENvbW1lbnQgc3ltYm9sLCB3aGljaCBpcyBuZWVkZWQgZm9yIGNyZWF0aW5nXHJcbiAgICAgICAgICAgICAgICAvLyBjb21tZW50IG5vZGVzIHdpdGggYGNyZWF0ZVZOb2RlYFxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoQ1JFQVRFX0NPTU1FTlQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byB0cmF2ZXJzZSwgYnV0IHdlIG5lZWQgdG8gaW5qZWN0IHRvU3RyaW5nIGhlbHBlclxyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcihUT19ESVNQTEFZX1NUUklORyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gZm9yIGNvbnRhaW5lciB0eXBlcywgZnVydGhlciB0cmF2ZXJzZSBkb3dud2FyZHNcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYnJhbmNoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlTm9kZShub2RlLmJyYW5jaGVzW2ldLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICBjYXNlIDAgLyogTm9kZVR5cGVzLlJPT1QgKi86XHJcbiAgICAgICAgICAgIHRyYXZlcnNlQ2hpbGRyZW4obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgLy8gZXhpdCB0cmFuc2Zvcm1zXHJcbiAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcclxuICAgIGxldCBpID0gZXhpdEZucy5sZW5ndGg7XHJcbiAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgZXhpdEZuc1tpXSgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0obmFtZSwgZm4pIHtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSBpc1N0cmluZyhuYW1lKVxyXG4gICAgICAgID8gKG4pID0+IG4gPT09IG5hbWVcclxuICAgICAgICA6IChuKSA9PiBuYW1lLnRlc3Qobik7XHJcbiAgICByZXR1cm4gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgICAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMgfSA9IG5vZGU7XHJcbiAgICAgICAgICAgIC8vIHN0cnVjdHVyYWwgZGlyZWN0aXZlIHRyYW5zZm9ybXMgYXJlIG5vdCBjb25jZXJuZWQgd2l0aCBzbG90c1xyXG4gICAgICAgICAgICAvLyBhcyB0aGV5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgaW4gdlNsb3QudHNcclxuICAgICAgICAgICAgaWYgKG5vZGUudGFnVHlwZSA9PT0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi8gJiYgcHJvcHMuc29tZShpc1ZTbG90KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXRGbnMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIG1hdGNoZXMocHJvcC5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyYWwgZGlyZWN0aXZlcyBhcmUgcmVtb3ZlZCB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb25cclxuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHdlIHJlbW92ZSB0aGVtICpiZWZvcmUqIGFwcGx5aW5nIHNvIHRoYXQgaXQgY2FuIGZ1cnRoZXJcclxuICAgICAgICAgICAgICAgICAgICAvLyB0cmF2ZXJzZSBpdHNlbGYgaW4gY2FzZSBpdCBtb3ZlcyB0aGUgbm9kZSBhcm91bmRcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uRXhpdCA9IGZuKG5vZGUsIHByb3AsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkV4aXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRGbnMucHVzaChvbkV4aXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBleGl0Rm5zO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxuY29uc3QgUFVSRV9BTk5PVEFUSU9OID0gYC8qI19fUFVSRV9fKi9gO1xyXG5jb25zdCBhbGlhc0hlbHBlciA9IChzKSA9PiBgJHtoZWxwZXJOYW1lTWFwW3NdfTogXyR7aGVscGVyTmFtZU1hcFtzXX1gO1xyXG5mdW5jdGlvbiBjcmVhdGVDb2RlZ2VuQ29udGV4dChhc3QsIHsgbW9kZSA9ICdmdW5jdGlvbicsIHByZWZpeElkZW50aWZpZXJzID0gbW9kZSA9PT0gJ21vZHVsZScsIHNvdXJjZU1hcCA9IGZhbHNlLCBmaWxlbmFtZSA9IGB0ZW1wbGF0ZS52dWUuaHRtbGAsIHNjb3BlSWQgPSBudWxsLCBvcHRpbWl6ZUltcG9ydHMgPSBmYWxzZSwgcnVudGltZUdsb2JhbE5hbWUgPSBgVnVlYCwgcnVudGltZU1vZHVsZU5hbWUgPSBgdnVlYCwgc3NyUnVudGltZU1vZHVsZU5hbWUgPSAndnVlL3NlcnZlci1yZW5kZXJlcicsIHNzciA9IGZhbHNlLCBpc1RTID0gZmFsc2UsIGluU1NSID0gZmFsc2UgfSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IHtcclxuICAgICAgICBtb2RlLFxyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzLFxyXG4gICAgICAgIHNvdXJjZU1hcCxcclxuICAgICAgICBmaWxlbmFtZSxcclxuICAgICAgICBzY29wZUlkLFxyXG4gICAgICAgIG9wdGltaXplSW1wb3J0cyxcclxuICAgICAgICBydW50aW1lR2xvYmFsTmFtZSxcclxuICAgICAgICBydW50aW1lTW9kdWxlTmFtZSxcclxuICAgICAgICBzc3JSdW50aW1lTW9kdWxlTmFtZSxcclxuICAgICAgICBzc3IsXHJcbiAgICAgICAgaXNUUyxcclxuICAgICAgICBpblNTUixcclxuICAgICAgICBzb3VyY2U6IGFzdC5sb2Muc291cmNlLFxyXG4gICAgICAgIGNvZGU6IGBgLFxyXG4gICAgICAgIGNvbHVtbjogMSxcclxuICAgICAgICBsaW5lOiAxLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBpbmRlbnRMZXZlbDogMCxcclxuICAgICAgICBwdXJlOiBmYWxzZSxcclxuICAgICAgICBtYXA6IHVuZGVmaW5lZCxcclxuICAgICAgICBoZWxwZXIoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgXyR7aGVscGVyTmFtZU1hcFtrZXldfWA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwdXNoKGNvZGUsIG5vZGUpIHtcclxuICAgICAgICAgICAgY29udGV4dC5jb2RlICs9IGNvZGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmRlbnQoKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKytjb250ZXh0LmluZGVudExldmVsKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRlaW5kZW50KHdpdGhvdXROZXdMaW5lID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaWYgKHdpdGhvdXROZXdMaW5lKSB7XHJcbiAgICAgICAgICAgICAgICAtLWNvbnRleHQuaW5kZW50TGV2ZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuZXdsaW5lKC0tY29udGV4dC5pbmRlbnRMZXZlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG5ld2xpbmUoKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoY29udGV4dC5pbmRlbnRMZXZlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZ1bmN0aW9uIG5ld2xpbmUobikge1xyXG4gICAgICAgIGNvbnRleHQucHVzaCgnXFxuJyArIGAgIGAucmVwZWF0KG4pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG59XHJcbmZ1bmN0aW9uIGdlbmVyYXRlKGFzdCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQ29kZWdlbkNvbnRleHQoYXN0LCBvcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zLm9uQ29udGV4dENyZWF0ZWQpXHJcbiAgICAgICAgb3B0aW9ucy5vbkNvbnRleHRDcmVhdGVkKGNvbnRleHQpO1xyXG4gICAgY29uc3QgeyBtb2RlLCBwdXNoLCBwcmVmaXhJZGVudGlmaWVycywgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSwgc2NvcGVJZCwgc3NyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgaGFzSGVscGVycyA9IGFzdC5oZWxwZXJzLmxlbmd0aCA+IDA7XHJcbiAgICBjb25zdCB1c2VXaXRoQmxvY2sgPSAhcHJlZml4SWRlbnRpZmllcnMgJiYgbW9kZSAhPT0gJ21vZHVsZSc7XHJcbiAgICAvLyBwcmVhbWJsZXNcclxuICAgIC8vIGluIHNldHVwKCkgaW5saW5lIG1vZGUsIHRoZSBwcmVhbWJsZSBpcyBnZW5lcmF0ZWQgaW4gYSBzdWIgY29udGV4dFxyXG4gICAgLy8gYW5kIHJldHVybmVkIHNlcGFyYXRlbHkuXHJcbiAgICBjb25zdCBwcmVhbWJsZUNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAge1xyXG4gICAgICAgIGdlbkZ1bmN0aW9uUHJlYW1ibGUoYXN0LCBwcmVhbWJsZUNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgLy8gZW50ZXIgcmVuZGVyIGZ1bmN0aW9uXHJcbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBzc3IgPyBgc3NyUmVuZGVyYCA6IGByZW5kZXJgO1xyXG4gICAgY29uc3QgYXJncyA9IHNzciA/IFsnX2N0eCcsICdfcHVzaCcsICdfcGFyZW50JywgJ19hdHRycyddIDogWydfY3R4JywgJ19jYWNoZSddO1xyXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gYXJncy5qb2luKCcsICcpO1xyXG4gICAge1xyXG4gICAgICAgIHB1c2goYGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSgke3NpZ25hdHVyZX0pIHtgKTtcclxuICAgIH1cclxuICAgIGluZGVudCgpO1xyXG4gICAgaWYgKHVzZVdpdGhCbG9jaykge1xyXG4gICAgICAgIHB1c2goYHdpdGggKF9jdHgpIHtgKTtcclxuICAgICAgICBpbmRlbnQoKTtcclxuICAgICAgICAvLyBmdW5jdGlvbiBtb2RlIGNvbnN0IGRlY2xhcmF0aW9ucyBzaG91bGQgYmUgaW5zaWRlIHdpdGggYmxvY2tcclxuICAgICAgICAvLyBhbHNvIHRoZXkgc2hvdWxkIGJlIHJlbmFtZWQgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggdXNlciBwcm9wZXJ0aWVzXHJcbiAgICAgICAgaWYgKGhhc0hlbHBlcnMpIHtcclxuICAgICAgICAgICAgcHVzaChgY29uc3QgeyAke2FzdC5oZWxwZXJzLm1hcChhbGlhc0hlbHBlcikuam9pbignLCAnKX0gfSA9IF9WdWVgKTtcclxuICAgICAgICAgICAgcHVzaChgXFxuYCk7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBnZW5lcmF0ZSBhc3NldCByZXNvbHV0aW9uIHN0YXRlbWVudHNcclxuICAgIGlmIChhc3QuY29tcG9uZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmNvbXBvbmVudHMsICdjb21wb25lbnQnLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoYXN0LmRpcmVjdGl2ZXMubGVuZ3RoIHx8IGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuZGlyZWN0aXZlcy5sZW5ndGgpIHtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmRpcmVjdGl2ZXMsICdkaXJlY3RpdmUnLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5maWx0ZXJzICYmIGFzdC5maWx0ZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmZpbHRlcnMsICdmaWx0ZXInLCBjb250ZXh0KTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgIHB1c2goYGxldCBgKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzdC50ZW1wczsgaSsrKSB7XHJcbiAgICAgICAgICAgIHB1c2goYCR7aSA+IDAgPyBgLCBgIDogYGB9X3RlbXAke2l9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCB8fCBhc3QuZGlyZWN0aXZlcy5sZW5ndGggfHwgYXN0LnRlbXBzKSB7XHJcbiAgICAgICAgcHVzaChgXFxuYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhdGUgdGhlIFZOb2RlIHRyZWUgZXhwcmVzc2lvblxyXG4gICAgaWYgKCFzc3IpIHtcclxuICAgICAgICBwdXNoKGByZXR1cm4gYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmNvZGVnZW5Ob2RlKSB7XHJcbiAgICAgICAgZ2VuTm9kZShhc3QuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgbnVsbGApO1xyXG4gICAgfVxyXG4gICAgaWYgKHVzZVdpdGhCbG9jaykge1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgfWApO1xyXG4gICAgfVxyXG4gICAgZGVpbmRlbnQoKTtcclxuICAgIHB1c2goYH1gKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXN0LFxyXG4gICAgICAgIGNvZGU6IGNvbnRleHQuY29kZSxcclxuICAgICAgICBwcmVhbWJsZTogYGAsXHJcbiAgICAgICAgLy8gU291cmNlTWFwR2VuZXJhdG9yIGRvZXMgaGF2ZSB0b0pTT04oKSBtZXRob2QgYnV0IGl0J3Mgbm90IGluIHRoZSB0eXBlc1xyXG4gICAgICAgIG1hcDogY29udGV4dC5tYXAgPyBjb250ZXh0Lm1hcC50b0pTT04oKSA6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBnZW5GdW5jdGlvblByZWFtYmxlKGFzdCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBzc3IsIHByZWZpeElkZW50aWZpZXJzLCBwdXNoLCBuZXdsaW5lLCBydW50aW1lTW9kdWxlTmFtZSwgcnVudGltZUdsb2JhbE5hbWUsIHNzclJ1bnRpbWVNb2R1bGVOYW1lIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgVnVlQmluZGluZyA9IHJ1bnRpbWVHbG9iYWxOYW1lO1xyXG4gICAgLy8gR2VuZXJhdGUgY29uc3QgZGVjbGFyYXRpb24gZm9yIGhlbHBlcnNcclxuICAgIC8vIEluIHByZWZpeCBtb2RlLCB3ZSBwbGFjZSB0aGUgY29uc3QgZGVjbGFyYXRpb24gYXQgdG9wIHNvIGl0J3MgZG9uZVxyXG4gICAgLy8gb25seSBvbmNlOyBCdXQgaWYgd2Ugbm90IHByZWZpeGluZywgd2UgcGxhY2UgdGhlIGRlY2xhcmF0aW9uIGluc2lkZSB0aGVcclxuICAgIC8vIHdpdGggYmxvY2sgc28gaXQgZG9lc24ndCBpbmN1ciB0aGUgYGluYCBjaGVjayBjb3N0IGZvciBldmVyeSBoZWxwZXIgYWNjZXNzLlxyXG4gICAgaWYgKGFzdC5oZWxwZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vIFwid2l0aFwiIG1vZGUuXHJcbiAgICAgICAgICAgIC8vIHNhdmUgVnVlIGluIGEgc2VwYXJhdGUgdmFyaWFibGUgdG8gYXZvaWQgY29sbGlzaW9uXHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IF9WdWUgPSAke1Z1ZUJpbmRpbmd9XFxuYCk7XHJcbiAgICAgICAgICAgIC8vIGluIFwid2l0aFwiIG1vZGUsIGhlbHBlcnMgYXJlIGRlY2xhcmVkIGluc2lkZSB0aGUgd2l0aCBibG9jayB0byBhdm9pZFxyXG4gICAgICAgICAgICAvLyBoYXMgY2hlY2sgY29zdCwgYnV0IGhvaXN0cyBhcmUgbGlmdGVkIG91dCBvZiB0aGUgZnVuY3Rpb24gLSB3ZSBuZWVkXHJcbiAgICAgICAgICAgIC8vIHRvIHByb3ZpZGUgdGhlIGhlbHBlciBoZXJlLlxyXG4gICAgICAgICAgICBpZiAoYXN0LmhvaXN0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRpY0hlbHBlcnMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX1ZOT0RFLFxyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9FTEVNRU5UX1ZOT0RFLFxyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9DT01NRU5ULFxyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9URVhULFxyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9TVEFUSUNcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGhlbHBlciA9PiBhc3QuaGVscGVycy5pbmNsdWRlcyhoZWxwZXIpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoYWxpYXNIZWxwZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyk7XHJcbiAgICAgICAgICAgICAgICBwdXNoKGBjb25zdCB7ICR7c3RhdGljSGVscGVyc30gfSA9IF9WdWVcXG5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdlbkhvaXN0cyhhc3QuaG9pc3RzLCBjb250ZXh0KTtcclxuICAgIG5ld2xpbmUoKTtcclxuICAgIHB1c2goYHJldHVybiBgKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Bc3NldHMoYXNzZXRzLCB0eXBlLCB7IGhlbHBlciwgcHVzaCwgbmV3bGluZSwgaXNUUyB9KSB7XHJcbiAgICBjb25zdCByZXNvbHZlciA9IGhlbHBlcih0eXBlID09PSAnZmlsdGVyJ1xyXG4gICAgICAgID8gUkVTT0xWRV9GSUxURVJcclxuICAgICAgICA6IHR5cGUgPT09ICdjb21wb25lbnQnXHJcbiAgICAgICAgICAgID8gUkVTT0xWRV9DT01QT05FTlRcclxuICAgICAgICAgICAgOiBSRVNPTFZFX0RJUkVDVElWRSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzc2V0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBpZCA9IGFzc2V0c1tpXTtcclxuICAgICAgICAvLyBwb3RlbnRpYWwgY29tcG9uZW50IGltcGxpY2l0IHNlbGYtcmVmZXJlbmNlIGluZmVycmVkIGZyb20gU0ZDIGZpbGVuYW1lXHJcbiAgICAgICAgY29uc3QgbWF5YmVTZWxmUmVmZXJlbmNlID0gaWQuZW5kc1dpdGgoJ19fc2VsZicpO1xyXG4gICAgICAgIGlmIChtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgaWQgPSBpZC5zbGljZSgwLCAtNik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHB1c2goYGNvbnN0ICR7dG9WYWxpZEFzc2V0SWQoaWQsIHR5cGUpfSA9ICR7cmVzb2x2ZXJ9KCR7SlNPTi5zdHJpbmdpZnkoaWQpfSR7bWF5YmVTZWxmUmVmZXJlbmNlID8gYCwgdHJ1ZWAgOiBgYH0pJHtpc1RTID8gYCFgIDogYGB9YCk7XHJcbiAgICAgICAgaWYgKGkgPCBhc3NldHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkhvaXN0cyhob2lzdHMsIGNvbnRleHQpIHtcclxuICAgIGlmICghaG9pc3RzLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnRleHQucHVyZSA9IHRydWU7XHJcbiAgICBjb25zdCB7IHB1c2gsIG5ld2xpbmUsIGhlbHBlciwgc2NvcGVJZCwgbW9kZSB9ID0gY29udGV4dDtcclxuICAgIG5ld2xpbmUoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaG9pc3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgZXhwID0gaG9pc3RzW2ldO1xyXG4gICAgICAgIGlmIChleHApIHtcclxuICAgICAgICAgICAgcHVzaChgY29uc3QgX2hvaXN0ZWRfJHtpICsgMX0gPSAke2BgfWApO1xyXG4gICAgICAgICAgICBnZW5Ob2RlKGV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnB1cmUgPSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc1RleHQkMShuKSB7XHJcbiAgICByZXR1cm4gKGlzU3RyaW5nKG4pIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGVzLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBtdWx0aWxpbmVzID0gbm9kZXMubGVuZ3RoID4gMyB8fFxyXG4gICAgICAgICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSAmJiBub2Rlcy5zb21lKG4gPT4gaXNBcnJheShuKSB8fCAhaXNUZXh0JDEobikpKTtcclxuICAgIGNvbnRleHQucHVzaChgW2ApO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBjb250ZXh0LmluZGVudCgpO1xyXG4gICAgZ2VuTm9kZUxpc3Qobm9kZXMsIGNvbnRleHQsIG11bHRpbGluZXMpO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBjb250ZXh0LmRlaW5kZW50KCk7XHJcbiAgICBjb250ZXh0LnB1c2goYF1gKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlTGlzdChub2RlcywgY29udGV4dCwgbXVsdGlsaW5lcyA9IGZhbHNlLCBjb21tYSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XHJcbiAgICAgICAgICAgIHB1c2gobm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGkgPCBub2Rlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb21tYSAmJiBwdXNoKCcsJyk7XHJcbiAgICAgICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb21tYSAmJiBwdXNoKCcsICcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKG5vZGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChpc1N5bWJvbChub2RlKSkge1xyXG4gICAgICAgIGNvbnRleHQucHVzaChjb250ZXh0LmhlbHBlcihub2RlKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgYXNzZXJ0KG5vZGUuY29kZWdlbk5vZGUgIT0gbnVsbCwgYENvZGVnZW4gbm9kZSBpcyBtaXNzaW5nIGZvciBlbGVtZW50L2lmL2ZvciBub2RlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgQXBwbHkgYXBwcm9wcmlhdGUgdHJhbnNmb3JtcyBmaXJzdC5gKTtcclxuICAgICAgICAgICAgZ2VuTm9kZShub2RlLmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyIC8qIE5vZGVUeXBlcy5URVhUICovOlxyXG4gICAgICAgICAgICBnZW5UZXh0KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLzpcclxuICAgICAgICAgICAgZ2VuTm9kZShub2RlLmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5Db21wb3VuZEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgZ2VuQ29tbWVudChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLzpcclxuICAgICAgICAgICAgZ2VuVk5vZGVDYWxsKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNhbGxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuT2JqZWN0RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQXJyYXlFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE4IC8qIE5vZGVUeXBlcy5KU19GVU5DVElPTl9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5GdW5jdGlvbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ2FjaGVFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIxIC8qIE5vZGVUeXBlcy5KU19CTE9DS19TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGdlbk5vZGVMaXN0KG5vZGUuYm9keSwgY29udGV4dCwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBTU1Igb25seSB0eXBlc1xyXG4gICAgICAgIGNhc2UgMjIgLyogTm9kZVR5cGVzLkpTX1RFTVBMQVRFX0xJVEVSQUwgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjMgLyogTm9kZVR5cGVzLkpTX0lGX1NUQVRFTUVOVCAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNCAvKiBOb2RlVHlwZXMuSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI1IC8qIE5vZGVUeXBlcy5KU19TRVFVRU5DRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI2IC8qIE5vZGVUeXBlcy5KU19SRVRVUk5fU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgLy8gbm9vcFxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGB1bmhhbmRsZWQgY29kZWdlbiBub2RlIHR5cGU6ICR7bm9kZS50eXBlfWApO1xyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGV4aGF1c3QgYWxsIHBvc3NpYmxlIHR5cGVzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGhhdXN0aXZlQ2hlY2sgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4aGF1c3RpdmVDaGVjaztcclxuICAgICAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlblRleHQobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5wdXNoKEpTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCksIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50LCBpc1N0YXRpYyB9ID0gbm9kZTtcclxuICAgIGNvbnRleHQucHVzaChpc1N0YXRpYyA/IEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpIDogY29udGVudCwgbm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuSW50ZXJwb2xhdGlvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGlmIChwdXJlKVxyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIHB1c2goYCR7aGVscGVyKFRPX0RJU1BMQVlfU1RSSU5HKX0oYCk7XHJcbiAgICBnZW5Ob2RlKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICBwdXNoKGApYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQucHVzaChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW5Ob2RlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuRXhwcmVzc2lvbkFzUHJvcGVydHlLZXkobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIHB1c2goYFtgKTtcclxuICAgICAgICBnZW5Db21wb3VuZEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgXWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5pc1N0YXRpYykge1xyXG4gICAgICAgIC8vIG9ubHkgcXVvdGUga2V5cyBpZiBuZWNlc3NhcnlcclxuICAgICAgICBjb25zdCB0ZXh0ID0gaXNTaW1wbGVJZGVudGlmaWVyKG5vZGUuY29udGVudClcclxuICAgICAgICAgICAgPyBub2RlLmNvbnRlbnRcclxuICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpO1xyXG4gICAgICAgIHB1c2godGV4dCwgbm9kZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwdXNoKGBbJHtub2RlLmNvbnRlbnR9XWAsIG5vZGUpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbW1lbnQobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIHB1c2goYCR7aGVscGVyKENSRUFURV9DT01NRU5UKX0oJHtKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpfSlgLCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5WTm9kZUNhbGwobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHRhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgZGlyZWN0aXZlcywgaXNCbG9jaywgZGlzYWJsZVRyYWNraW5nLCBpc0NvbXBvbmVudCB9ID0gbm9kZTtcclxuICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgcHVzaChoZWxwZXIoV0lUSF9ESVJFQ1RJVkVTKSArIGAoYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgIHB1c2goYCgke2hlbHBlcihPUEVOX0JMT0NLKX0oJHtkaXNhYmxlVHJhY2tpbmcgPyBgdHJ1ZWAgOiBgYH0pLCBgKTtcclxuICAgIH1cclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2FsbEhlbHBlciA9IGlzQmxvY2tcclxuICAgICAgICA/IGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpXHJcbiAgICAgICAgOiBnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCk7XHJcbiAgICBwdXNoKGhlbHBlcihjYWxsSGVscGVyKSArIGAoYCwgbm9kZSk7XHJcbiAgICBnZW5Ob2RlTGlzdChnZW5OdWxsYWJsZUFyZ3MoW3RhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wc10pLCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxuICAgIGlmIChpc0Jsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICBwdXNoKGAsIGApO1xyXG4gICAgICAgIGdlbk5vZGUoZGlyZWN0aXZlcywgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbk51bGxhYmxlQXJncyhhcmdzKSB7XHJcbiAgICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGlmIChhcmdzW2ldICE9IG51bGwpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyZ3Muc2xpY2UoMCwgaSArIDEpLm1hcChhcmcgPT4gYXJnIHx8IGBudWxsYCk7XHJcbn1cclxuLy8gSmF2YVNjcmlwdFxyXG5mdW5jdGlvbiBnZW5DYWxsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGNhbGxlZSA9IGlzU3RyaW5nKG5vZGUuY2FsbGVlKSA/IG5vZGUuY2FsbGVlIDogaGVscGVyKG5vZGUuY2FsbGVlKTtcclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgcHVzaChjYWxsZWUgKyBgKGAsIG5vZGUpO1xyXG4gICAgZ2VuTm9kZUxpc3Qobm9kZS5hcmd1bWVudHMsIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSBub2RlO1xyXG4gICAgaWYgKCFwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIHB1c2goYHt9YCwgbm9kZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXVsdGlsaW5lcyA9IHByb3BlcnRpZXMubGVuZ3RoID4gMSB8fFxyXG4gICAgICAgICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSAmJlxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnNvbWUocCA9PiBwLnZhbHVlLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSk7XHJcbiAgICBwdXNoKG11bHRpbGluZXMgPyBge2AgOiBgeyBgKTtcclxuICAgIG11bHRpbGluZXMgJiYgaW5kZW50KCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHByb3BlcnRpZXNbaV07XHJcbiAgICAgICAgLy8ga2V5XHJcbiAgICAgICAgZ2VuRXhwcmVzc2lvbkFzUHJvcGVydHlLZXkoa2V5LCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGA6IGApO1xyXG4gICAgICAgIC8vIHZhbHVlXHJcbiAgICAgICAgZ2VuTm9kZSh2YWx1ZSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGkgPCBwcm9wZXJ0aWVzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgLy8gd2lsbCBvbmx5IHJlYWNoIHRoaXMgaWYgaXQncyBtdWx0aWxpbmVzXHJcbiAgICAgICAgICAgIHB1c2goYCxgKTtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG11bHRpbGluZXMgJiYgZGVpbmRlbnQoKTtcclxuICAgIHB1c2gobXVsdGlsaW5lcyA/IGB9YCA6IGAgfWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkFycmF5RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZS5lbGVtZW50cywgY29udGV4dCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaW5kZW50LCBkZWluZGVudCB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgcGFyYW1zLCByZXR1cm5zLCBib2R5LCBuZXdsaW5lLCBpc1Nsb3QgfSA9IG5vZGU7XHJcbiAgICBpZiAoaXNTbG90KSB7XHJcbiAgICAgICAgLy8gd3JhcCBzbG90IGZ1bmN0aW9ucyB3aXRoIG93bmVyIGNvbnRleHRcclxuICAgICAgICBwdXNoKGBfJHtoZWxwZXJOYW1lTWFwW1dJVEhfQ1RYXX0oYCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGAoYCwgbm9kZSk7XHJcbiAgICBpZiAoaXNBcnJheShwYXJhbXMpKSB7XHJcbiAgICAgICAgZ2VuTm9kZUxpc3QocGFyYW1zLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHBhcmFtcykge1xyXG4gICAgICAgIGdlbk5vZGUocGFyYW1zLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIHB1c2goYCkgPT4gYCk7XHJcbiAgICBpZiAobmV3bGluZSB8fCBib2R5KSB7XHJcbiAgICAgICAgcHVzaChge2ApO1xyXG4gICAgICAgIGluZGVudCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJldHVybnMpIHtcclxuICAgICAgICBpZiAobmV3bGluZSkge1xyXG4gICAgICAgICAgICBwdXNoKGByZXR1cm4gYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0FycmF5KHJldHVybnMpKSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGVMaXN0QXNBcnJheShyZXR1cm5zLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGUocmV0dXJucywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoYm9keSkge1xyXG4gICAgICAgIGdlbk5vZGUoYm9keSwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3bGluZSB8fCBib2R5KSB7XHJcbiAgICAgICAgZGVpbmRlbnQoKTtcclxuICAgICAgICBwdXNoKGB9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTbG90KSB7XHJcbiAgICAgICAgaWYgKG5vZGUuaXNOb25TY29wZWRTbG90KSB7XHJcbiAgICAgICAgICAgIHB1c2goYCwgdW5kZWZpbmVkLCB0cnVlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Db25kaXRpb25hbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUsIG5ld2xpbmU6IG5lZWROZXdsaW5lIH0gPSBub2RlO1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKHRlc3QudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCBuZWVkc1BhcmVucyA9ICFpc1NpbXBsZUlkZW50aWZpZXIodGVzdC5jb250ZW50KTtcclxuICAgICAgICBuZWVkc1BhcmVucyAmJiBwdXNoKGAoYCk7XHJcbiAgICAgICAgZ2VuRXhwcmVzc2lvbih0ZXN0LCBjb250ZXh0KTtcclxuICAgICAgICBuZWVkc1BhcmVucyAmJiBwdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwdXNoKGAoYCk7XHJcbiAgICAgICAgZ2VuTm9kZSh0ZXN0LCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICBuZWVkTmV3bGluZSAmJiBpbmRlbnQoKTtcclxuICAgIGNvbnRleHQuaW5kZW50TGV2ZWwrKztcclxuICAgIG5lZWROZXdsaW5lIHx8IHB1c2goYCBgKTtcclxuICAgIHB1c2goYD8gYCk7XHJcbiAgICBnZW5Ob2RlKGNvbnNlcXVlbnQsIGNvbnRleHQpO1xyXG4gICAgY29udGV4dC5pbmRlbnRMZXZlbC0tO1xyXG4gICAgbmVlZE5ld2xpbmUgJiYgbmV3bGluZSgpO1xyXG4gICAgbmVlZE5ld2xpbmUgfHwgcHVzaChgIGApO1xyXG4gICAgcHVzaChgOiBgKTtcclxuICAgIGNvbnN0IGlzTmVzdGVkID0gYWx0ZXJuYXRlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovO1xyXG4gICAgaWYgKCFpc05lc3RlZCkge1xyXG4gICAgICAgIGNvbnRleHQuaW5kZW50TGV2ZWwrKztcclxuICAgIH1cclxuICAgIGdlbk5vZGUoYWx0ZXJuYXRlLCBjb250ZXh0KTtcclxuICAgIGlmICghaXNOZXN0ZWQpIHtcclxuICAgICAgICBjb250ZXh0LmluZGVudExldmVsLS07XHJcbiAgICB9XHJcbiAgICBuZWVkTmV3bGluZSAmJiBkZWluZGVudCh0cnVlIC8qIHdpdGhvdXQgbmV3bGluZSAqLyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ2FjaGVFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dIHx8IChgKTtcclxuICAgIGlmIChub2RlLmlzVk5vZGUpIHtcclxuICAgICAgICBpbmRlbnQoKTtcclxuICAgICAgICBwdXNoKGAke2hlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpfSgtMSksYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dID0gYCk7XHJcbiAgICBnZW5Ob2RlKG5vZGUudmFsdWUsIGNvbnRleHQpO1xyXG4gICAgaWYgKG5vZGUuaXNWTm9kZSkge1xyXG4gICAgICAgIHB1c2goYCxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgcHVzaChgJHtoZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKX0oMSksYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XWApO1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGApYCk7XHJcbn1cblxuZnVuY3Rpb24gd2Fsa0lkZW50aWZpZXJzKHJvb3QsIG9uSWRlbnRpZmllciwgaW5jbHVkZUFsbCA9IGZhbHNlLCBwYXJlbnRTdGFjayA9IFtdLCBrbm93bklkcyA9IE9iamVjdC5jcmVhdGUobnVsbCkpIHtcclxuICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNSZWZlcmVuY2VkSWRlbnRpZmllcihpZCwgcGFyZW50LCBwYXJlbnRTdGFjaykge1xyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc0luRGVzdHJ1Y3R1cmVBc3NpZ25tZW50KHBhcmVudCwgcGFyZW50U3RhY2spIHtcclxuICAgIGlmIChwYXJlbnQgJiZcclxuICAgICAgICAocGFyZW50LnR5cGUgPT09ICdPYmplY3RQcm9wZXJ0eScgfHwgcGFyZW50LnR5cGUgPT09ICdBcnJheVBhdHRlcm4nKSkge1xyXG4gICAgICAgIGxldCBpID0gcGFyZW50U3RhY2subGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgcCA9IHBhcmVudFN0YWNrW2ldO1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSAnQXNzaWdubWVudEV4cHJlc3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChwLnR5cGUgIT09ICdPYmplY3RQcm9wZXJ0eScgJiYgIXAudHlwZS5lbmRzV2l0aCgnUGF0dGVybicpKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiB3YWxrRnVuY3Rpb25QYXJhbXMobm9kZSwgb25JZGVudCkge1xyXG4gICAgZm9yIChjb25zdCBwIG9mIG5vZGUucGFyYW1zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpZCBvZiBleHRyYWN0SWRlbnRpZmllcnMocCkpIHtcclxuICAgICAgICAgICAgb25JZGVudChpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHdhbGtCbG9ja0RlY2xhcmF0aW9ucyhibG9jaywgb25JZGVudCkge1xyXG4gICAgZm9yIChjb25zdCBzdG10IG9mIGJsb2NrLmJvZHkpIHtcclxuICAgICAgICBpZiAoc3RtdC50eXBlID09PSAnVmFyaWFibGVEZWNsYXJhdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyZSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlY2wgb2Ygc3RtdC5kZWNsYXJhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgZXh0cmFjdElkZW50aWZpZXJzKGRlY2wuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25JZGVudChpZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3RtdC50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbicgfHxcclxuICAgICAgICAgICAgc3RtdC50eXBlID09PSAnQ2xhc3NEZWNsYXJhdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyZSB8fCAhc3RtdC5pZClcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBvbklkZW50KHN0bXQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0sIG5vZGVzID0gW10pIHtcclxuICAgIHN3aXRjaCAocGFyYW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ0lkZW50aWZpZXInOlxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKHBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTWVtYmVyRXhwcmVzc2lvbic6XHJcbiAgICAgICAgICAgIGxldCBvYmplY3QgPSBwYXJhbTtcclxuICAgICAgICAgICAgd2hpbGUgKG9iamVjdC50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5vYmplY3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZXMucHVzaChvYmplY3QpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHBhcmFtLnByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09ICdSZXN0RWxlbWVudCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocHJvcC5hcmd1bWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHByb3AudmFsdWUsIG5vZGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxyXG4gICAgICAgICAgICBwYXJhbS5lbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKGVsZW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1Jlc3RFbGVtZW50JzpcclxuICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLmFyZ3VtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0Fzc2lnbm1lbnRQYXR0ZXJuJzpcclxuICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLmxlZnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbn1cclxuY29uc3QgaXNGdW5jdGlvblR5cGUgPSAobm9kZSkgPT4ge1xyXG4gICAgcmV0dXJuIC9GdW5jdGlvbig/OkV4cHJlc3Npb258RGVjbGFyYXRpb24pJHxNZXRob2QkLy50ZXN0KG5vZGUudHlwZSk7XHJcbn07XHJcbmNvbnN0IGlzU3RhdGljUHJvcGVydHkgPSAobm9kZSkgPT4gbm9kZSAmJlxyXG4gICAgKG5vZGUudHlwZSA9PT0gJ09iamVjdFByb3BlcnR5JyB8fCBub2RlLnR5cGUgPT09ICdPYmplY3RNZXRob2QnKSAmJlxyXG4gICAgIW5vZGUuY29tcHV0ZWQ7XHJcbmNvbnN0IGlzU3RhdGljUHJvcGVydHlLZXkgPSAobm9kZSwgcGFyZW50KSA9PiBpc1N0YXRpY1Byb3BlcnR5KHBhcmVudCkgJiYgcGFyZW50LmtleSA9PT0gbm9kZTtcblxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxpa2VcclxuLy8gdHlwZW9mLCBpbnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxyXG5jb25zdCBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICtcclxuICAgICgnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcclxuICAgICAgICAnc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xyXG4gICAgICAgICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRzLHR5cGVvZix2b2lkJylcclxuICAgICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAgIC5qb2luKCdcXFxcYnxcXFxcYicpICtcclxuICAgICdcXFxcYicpO1xyXG4vLyBzdHJpcCBzdHJpbmdzIGluIGV4cHJlc3Npb25zXHJcbmNvbnN0IHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcclxuLyoqXHJcbiAqIFZhbGlkYXRlIGEgbm9uLXByZWZpeGVkIGV4cHJlc3Npb24uXHJcbiAqIFRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiB1c2luZyB0aGUgaW4tYnJvd3NlciBydW50aW1lIGNvbXBpbGVyIHNpbmNlIGl0XHJcbiAqIGRvZXNuJ3QgcHJlZml4IGV4cHJlc3Npb25zLlxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcyA9IGZhbHNlLCBhc1Jhd1N0YXRlbWVudHMgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZXhwID0gbm9kZS5jb250ZW50O1xyXG4gICAgLy8gZW1wdHkgZXhwcmVzc2lvbnMgYXJlIHZhbGlkYXRlZCBwZXItZGlyZWN0aXZlIHNpbmNlIHNvbWUgZGlyZWN0aXZlc1xyXG4gICAgLy8gZG8gYWxsb3cgZW1wdHkgZXhwcmVzc2lvbnMuXHJcbiAgICBpZiAoIWV4cC50cmltKCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIG5ldyBGdW5jdGlvbihhc1Jhd1N0YXRlbWVudHNcclxuICAgICAgICAgICAgPyBgICR7ZXhwfSBgXHJcbiAgICAgICAgICAgIDogYHJldHVybiAke2FzUGFyYW1zID8gYCgke2V4cH0pID0+IHt9YCA6IGAoJHtleHB9KWB9YCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gZS5tZXNzYWdlO1xyXG4gICAgICAgIGNvbnN0IGtleXdvcmRNYXRjaCA9IGV4cFxyXG4gICAgICAgICAgICAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJylcclxuICAgICAgICAgICAgLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xyXG4gICAgICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IGBhdm9pZCB1c2luZyBKYXZhU2NyaXB0IGtleXdvcmQgYXMgcHJvcGVydHkgbmFtZTogXCIke2tleXdvcmRNYXRjaFswXX1cImA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ0IC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VYUFJFU1NJT04gKi8sIG5vZGUubG9jLCB1bmRlZmluZWQsIG1lc3NhZ2UpKTtcclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1FeHByZXNzaW9uID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8pIHtcclxuICAgICAgICBub2RlLmNvbnRlbnQgPSBwcm9jZXNzRXhwcmVzc2lvbihub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgLy8gaGFuZGxlIGRpcmVjdGl2ZXMgb24gZWxlbWVudFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkaXIgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgICAgICAvLyBkbyBub3QgcHJvY2VzcyBmb3Igdi1vbiAmIHYtZm9yIHNpbmNlIHRoZXkgYXJlIHNwZWNpYWwgaGFuZGxlZFxyXG4gICAgICAgICAgICBpZiAoZGlyLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBkaXIubmFtZSAhPT0gJ2ZvcicpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4cCA9IGRpci5leHA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcmcgPSBkaXIuYXJnO1xyXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb2Nlc3MgZXhwIGlmIHRoaXMgaXMgdi1vbjphcmcgLSB3ZSBuZWVkIHNwZWNpYWwgaGFuZGxpbmdcclxuICAgICAgICAgICAgICAgIC8vIGZvciB3cmFwcGluZyBpbmxpbmUgc3RhdGVtZW50cy5cclxuICAgICAgICAgICAgICAgIGlmIChleHAgJiZcclxuICAgICAgICAgICAgICAgICAgICBleHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAhKGRpci5uYW1lID09PSAnb24nICYmIGFyZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuZXhwID0gcHJvY2Vzc0V4cHJlc3Npb24oZXhwLCBjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgICAgICAvLyBzbG90IGFyZ3MgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZnVuY3Rpb24gcGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLm5hbWUgPT09ICdzbG90Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJnICYmIGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiAhYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLmFyZyA9IHByb2Nlc3NFeHByZXNzaW9uKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbi8vIEltcG9ydGFudDogc2luY2UgdGhpcyBmdW5jdGlvbiB1c2VzIE5vZGUuanMgb25seSBkZXBlbmRlbmNpZXMsIGl0IHNob3VsZFxyXG4vLyBhbHdheXMgYmUgdXNlZCB3aXRoIGEgbGVhZGluZyAhdHJ1ZSBjaGVjayBzbyB0aGF0IGl0IGNhbiBiZVxyXG4vLyB0cmVlLXNoYWtlbiBmcm9tIHRoZSBicm93c2VyIGJ1aWxkLlxyXG5mdW5jdGlvbiBwcm9jZXNzRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBcclxuLy8gc29tZSBleHByZXNzaW9ucyBsaWtlIHYtc2xvdCBwcm9wcyAmIHYtZm9yIGFsaWFzZXMgc2hvdWxkIGJlIHBhcnNlZCBhc1xyXG4vLyBmdW5jdGlvbiBwYXJhbXNcclxuYXNQYXJhbXMgPSBmYWxzZSwgXHJcbi8vIHYtb24gaGFuZGxlciB2YWx1ZXMgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc3RhdGVtZW50c1xyXG5hc1Jhd1N0YXRlbWVudHMgPSBmYWxzZSwgbG9jYWxWYXJzID0gT2JqZWN0LmNyZWF0ZShjb250ZXh0LmlkZW50aWZpZXJzKSkge1xyXG4gICAge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgLy8gc2ltcGxlIGluLWJyb3dzZXIgdmFsaWRhdGlvbiAoc2FtZSBsb2dpYyBpbiAyLngpXHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24obm9kZSwgY29udGV4dCwgYXNQYXJhbXMsIGFzUmF3U3RhdGVtZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHRyYW5zZm9ybUlmID0gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSgvXihpZnxlbHNlfGVsc2UtaWYpJC8sIChub2RlLCBkaXIsIGNvbnRleHQpID0+IHtcclxuICAgIHJldHVybiBwcm9jZXNzSWYobm9kZSwgZGlyLCBjb250ZXh0LCAoaWZOb2RlLCBicmFuY2gsIGlzUm9vdCkgPT4ge1xyXG4gICAgICAgIC8vICMxNTg3OiBXZSBuZWVkIHRvIGR5bmFtaWNhbGx5IGluY3JlbWVudCB0aGUga2V5IGJhc2VkIG9uIHRoZSBjdXJyZW50XHJcbiAgICAgICAgLy8gbm9kZSdzIHNpYmxpbmcgbm9kZXMsIHNpbmNlIGNoYWluZWQgdi1pZi9lbHNlIGJyYW5jaGVzIGFyZVxyXG4gICAgICAgIC8vIHJlbmRlcmVkIGF0IHRoZSBzYW1lIGRlcHRoXHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICBsZXQgaSA9IHNpYmxpbmdzLmluZGV4T2YoaWZOb2RlKTtcclxuICAgICAgICBsZXQga2V5ID0gMDtcclxuICAgICAgICB3aGlsZSAoaS0tID49IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzW2ldO1xyXG4gICAgICAgICAgICBpZiAoc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovKSB7XHJcbiAgICAgICAgICAgICAgICBrZXkgKz0gc2libGluZy5icmFuY2hlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRXhpdCBjYWxsYmFjay4gQ29tcGxldGUgdGhlIGNvZGVnZW5Ob2RlIHdoZW4gYWxsIGNoaWxkcmVuIGhhdmUgYmVlblxyXG4gICAgICAgIC8vIHRyYW5zZm9ybWVkLlxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpc1Jvb3QpIHtcclxuICAgICAgICAgICAgICAgIGlmTm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGF0dGFjaCB0aGlzIGJyYW5jaCdzIGNvZGVnZW4gbm9kZSB0byB0aGUgdi1pZiByb290LlxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q29uZGl0aW9uID0gZ2V0UGFyZW50Q29uZGl0aW9uKGlmTm9kZS5jb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25kaXRpb24uYWx0ZXJuYXRlID0gY3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYnJhbmNoLCBrZXkgKyBpZk5vZGUuYnJhbmNoZXMubGVuZ3RoIC0gMSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn0pO1xyXG4vLyB0YXJnZXQtYWdub3N0aWMgdHJhbnNmb3JtIHVzZWQgZm9yIGJvdGggQ2xpZW50IGFuZCBTU1JcclxuZnVuY3Rpb24gcHJvY2Vzc0lmKG5vZGUsIGRpciwgY29udGV4dCwgcHJvY2Vzc0NvZGVnZW4pIHtcclxuICAgIGlmIChkaXIubmFtZSAhPT0gJ2Vsc2UnICYmXHJcbiAgICAgICAgKCFkaXIuZXhwIHx8ICFkaXIuZXhwLmNvbnRlbnQudHJpbSgpKSkge1xyXG4gICAgICAgIGNvbnN0IGxvYyA9IGRpci5leHAgPyBkaXIuZXhwLmxvYyA6IG5vZGUubG9jO1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI4IC8qIEVycm9yQ29kZXMuWF9WX0lGX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICBkaXIuZXhwID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdHJ1ZWAsIGZhbHNlLCBsb2MpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlICYmIGRpci5leHApIHtcclxuICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKGRpci5leHAsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRpci5uYW1lID09PSAnaWYnKSB7XHJcbiAgICAgICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcclxuICAgICAgICBjb25zdCBpZk5vZGUgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6IDkgLyogTm9kZVR5cGVzLklGICovLFxyXG4gICAgICAgICAgICBsb2M6IG5vZGUubG9jLFxyXG4gICAgICAgICAgICBicmFuY2hlczogW2JyYW5jaF1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnRleHQucmVwbGFjZU5vZGUoaWZOb2RlKTtcclxuICAgICAgICBpZiAocHJvY2Vzc0NvZGVnZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NDb2RlZ2VuKGlmTm9kZSwgYnJhbmNoLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBsb2NhdGUgdGhlIGFkamFjZW50IHYtaWZcclxuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IGNvbW1lbnRzID0gW107XHJcbiAgICAgICAgbGV0IGkgPSBzaWJsaW5ncy5pbmRleE9mKG5vZGUpO1xyXG4gICAgICAgIHdoaWxlIChpLS0gPj0gLTEpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzW2ldO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoc2libGluZyk7XHJcbiAgICAgICAgICAgICAgICBjb21tZW50cy51bnNoaWZ0KHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiZcclxuICAgICAgICAgICAgICAgIHNpYmxpbmcudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgIXNpYmxpbmcuY29udGVudC50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoc2libGluZyk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB2LWVsc2Ugd2FzIGZvbGxvd2VkIGJ5IHYtZWxzZS1pZlxyXG4gICAgICAgICAgICAgICAgaWYgKGRpci5uYW1lID09PSAnZWxzZS1pZicgJiZcclxuICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLmJyYW5jaGVzW3NpYmxpbmcuYnJhbmNoZXMubGVuZ3RoIC0gMV0uY29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMCAvKiBFcnJvckNvZGVzLlhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovLCBub2RlLmxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0aGUgbm9kZSB0byB0aGUgaWYgbm9kZSdzIGJyYW5jaGVzXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGNyZWF0ZUlmQnJhbmNoKG5vZGUsIGRpcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudHMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzM2MTkgaWdub3JlIGNvbW1lbnRzIGlmIHRoZSB2LWlmIGlzIGRpcmVjdCBjaGlsZCBvZiA8dHJhbnNpdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAhKGNvbnRleHQucGFyZW50ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucGFyZW50LnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNCdWlsdEluVHlwZShjb250ZXh0LnBhcmVudC50YWcsICd0cmFuc2l0aW9uJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJhbmNoLmNoaWxkcmVuID0gWy4uLmNvbW1lbnRzLCAuLi5icmFuY2guY2hpbGRyZW5dO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdXNlciBpcyBmb3JjaW5nIHNhbWUga2V5IG9uIGRpZmZlcmVudCBicmFuY2hlc1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGJyYW5jaC51c2VyS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlcy5mb3JFYWNoKCh7IHVzZXJLZXkgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2FtZUtleSh1c2VyS2V5LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMjkgLyogRXJyb3JDb2Rlcy5YX1ZfSUZfU0FNRV9LRVkgKi8sIGJyYW5jaC51c2VyS2V5LmxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzaWJsaW5nLmJyYW5jaGVzLnB1c2goYnJhbmNoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9uRXhpdCA9IHByb2Nlc3NDb2RlZ2VuICYmIHByb2Nlc3NDb2RlZ2VuKHNpYmxpbmcsIGJyYW5jaCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhlIGJyYW5jaCB3YXMgcmVtb3ZlZCwgaXQgd2lsbCBub3QgYmUgdHJhdmVyc2VkLlxyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHRyYXZlcnNlIGhlcmUuXHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZU5vZGUoYnJhbmNoLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIC8vIGNhbGwgb24gZXhpdFxyXG4gICAgICAgICAgICAgICAgaWYgKG9uRXhpdClcclxuICAgICAgICAgICAgICAgICAgICBvbkV4aXQoKTtcclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byByZXNldCBjdXJyZW50Tm9kZSBhZnRlciB0cmF2ZXJzYWwgdG8gaW5kaWNhdGUgdGhpc1xyXG4gICAgICAgICAgICAgICAgLy8gbm9kZSBoYXMgYmVlbiByZW1vdmVkLlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMCAvKiBFcnJvckNvZGVzLlhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovLCBub2RlLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpIHtcclxuICAgIGNvbnN0IGlzVGVtcGxhdGVJZiA9IG5vZGUudGFnVHlwZSA9PT0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi87XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi8sXHJcbiAgICAgICAgbG9jOiBub2RlLmxvYyxcclxuICAgICAgICBjb25kaXRpb246IGRpci5uYW1lID09PSAnZWxzZScgPyB1bmRlZmluZWQgOiBkaXIuZXhwLFxyXG4gICAgICAgIGNoaWxkcmVuOiBpc1RlbXBsYXRlSWYgJiYgIWZpbmREaXIobm9kZSwgJ2ZvcicpID8gbm9kZS5jaGlsZHJlbiA6IFtub2RlXSxcclxuICAgICAgICB1c2VyS2V5OiBmaW5kUHJvcChub2RlLCBga2V5YCksXHJcbiAgICAgICAgaXNUZW1wbGF0ZUlmXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpIHtcclxuICAgIGlmIChicmFuY2guY29uZGl0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihicmFuY2guY29uZGl0aW9uLCBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpLCBcclxuICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcGFzcyBpbiBhc0Jsb2NrOiB0cnVlIHNvIHRoYXQgdGhlIGNvbW1lbnQgbm9kZSBjYWxsXHJcbiAgICAgICAgLy8gY2xvc2VzIHRoZSBjdXJyZW50IGJsb2NrLlxyXG4gICAgICAgIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKSwgW1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnXCJ2LWlmXCInIDogJ1wiXCInLFxyXG4gICAgICAgICAgICAndHJ1ZSdcclxuICAgICAgICBdKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3Qga2V5UHJvcGVydHkgPSBjcmVhdGVPYmplY3RQcm9wZXJ0eShga2V5YCwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtrZXlJbmRleH1gLCBmYWxzZSwgbG9jU3R1YiwgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykpO1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gYnJhbmNoO1xyXG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgY29uc3QgbmVlZEZyYWdtZW50V3JhcHBlciA9IGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fCBmaXJzdENoaWxkLnR5cGUgIT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi87XHJcbiAgICBpZiAobmVlZEZyYWdtZW50V3JhcHBlcikge1xyXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgZmlyc3RDaGlsZC50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovKSB7XHJcbiAgICAgICAgICAgIC8vIG9wdGltaXplIGF3YXkgbmVzdGVkIGZyYWdtZW50cyB3aGVuIGNoaWxkIGlzIGEgRm9yTm9kZVxyXG4gICAgICAgICAgICBjb25zdCB2bm9kZUNhbGwgPSBmaXJzdENoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpbmplY3RQcm9wKHZub2RlQ2FsbCwga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdm5vZGVDYWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovO1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hGbGFnVGV4dCA9IFBhdGNoRmxhZ05hbWVzWzY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXTtcclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGZyYWdtZW50IGFjdHVhbGx5IGNvbnRhaW5zIGEgc2luZ2xlIHZhbGlkIGNoaWxkIHdpdGhcclxuICAgICAgICAgICAgLy8gdGhlIHJlc3QgYmVpbmcgY29tbWVudHNcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgIWJyYW5jaC5pc1RlbXBsYXRlSWYgJiZcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovO1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqL119YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2tleVByb3BlcnR5XSksIGNoaWxkcmVuLCBwYXRjaEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3BhdGNoRmxhZ1RleHR9ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIGZhbHNlLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLywgYnJhbmNoLmxvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gZmlyc3RDaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICBjb25zdCB2bm9kZUNhbGwgPSBnZXRNZW1vZWRWTm9kZUNhbGwocmV0KTtcclxuICAgICAgICAvLyBDaGFuZ2UgY3JlYXRlVk5vZGUgdG8gY3JlYXRlQmxvY2suXHJcbiAgICAgICAgaWYgKHZub2RlQ2FsbC50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICBtYWtlQmxvY2sodm5vZGVDYWxsLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IGJyYW5jaCBrZXlcclxuICAgICAgICBpbmplY3RQcm9wKHZub2RlQ2FsbCwga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lS2V5KGEsIGIpIHtcclxuICAgIGlmICghYSB8fCBhLnR5cGUgIT09IGIudHlwZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChhLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgIGlmIChhLnZhbHVlLmNvbnRlbnQgIT09IGIudmFsdWUuY29udGVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gZGlyZWN0aXZlXHJcbiAgICAgICAgY29uc3QgZXhwID0gYS5leHA7XHJcbiAgICAgICAgY29uc3QgYnJhbmNoRXhwID0gYi5leHA7XHJcbiAgICAgICAgaWYgKGV4cC50eXBlICE9PSBicmFuY2hFeHAudHlwZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHAudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICAgICAgZXhwLmlzU3RhdGljICE9PSBicmFuY2hFeHAuaXNTdGF0aWMgfHxcclxuICAgICAgICAgICAgZXhwLmNvbnRlbnQgIT09IGJyYW5jaEV4cC5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiBnZXRQYXJlbnRDb25kaXRpb24obm9kZSkge1xyXG4gICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICBpZiAobm9kZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBpZiAobm9kZS5hbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmFsdGVybmF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgbm9kZSA9IG5vZGUudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IHRyYW5zZm9ybUZvciA9IGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oJ2ZvcicsIChub2RlLCBkaXIsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgaGVscGVyLCByZW1vdmVIZWxwZXIgfSA9IGNvbnRleHQ7XHJcbiAgICByZXR1cm4gcHJvY2Vzc0Zvcihub2RlLCBkaXIsIGNvbnRleHQsIGZvck5vZGUgPT4ge1xyXG4gICAgICAgIC8vIGNyZWF0ZSB0aGUgbG9vcCByZW5kZXIgZnVuY3Rpb24gZXhwcmVzc2lvbiBub3csIGFuZCBhZGQgdGhlXHJcbiAgICAgICAgLy8gaXRlcmF0b3Igb24gZXhpdCBhZnRlciBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuIHRyYXZlcnNlZFxyXG4gICAgICAgIGNvbnN0IHJlbmRlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGhlbHBlcihSRU5ERVJfTElTVCksIFtcclxuICAgICAgICAgICAgZm9yTm9kZS5zb3VyY2VcclxuICAgICAgICBdKTtcclxuICAgICAgICBjb25zdCBpc1RlbXBsYXRlID0gaXNUZW1wbGF0ZU5vZGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgbWVtbyA9IGZpbmREaXIobm9kZSwgJ21lbW8nKTtcclxuICAgICAgICBjb25zdCBrZXlQcm9wID0gZmluZFByb3Aobm9kZSwgYGtleWApO1xyXG4gICAgICAgIGNvbnN0IGtleUV4cCA9IGtleVByb3AgJiZcclxuICAgICAgICAgICAgKGtleVByb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oa2V5UHJvcC52YWx1ZS5jb250ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBrZXlQcm9wLmV4cCk7XHJcbiAgICAgICAgY29uc3Qga2V5UHJvcGVydHkgPSBrZXlQcm9wID8gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGtleUV4cCkgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGlzU3RhYmxlRnJhZ21lbnQgPSBmb3JOb2RlLnNvdXJjZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICBmb3JOb2RlLnNvdXJjZS5jb25zdFR5cGUgPiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50RmxhZyA9IGlzU3RhYmxlRnJhZ21lbnRcclxuICAgICAgICAgICAgPyA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL1xyXG4gICAgICAgICAgICA6IGtleVByb3BcclxuICAgICAgICAgICAgICAgID8gMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi9cclxuICAgICAgICAgICAgICAgIDogMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqLztcclxuICAgICAgICBmb3JOb2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIHVuZGVmaW5lZCwgcmVuZGVyRXhwLCBmcmFnbWVudEZsYWcgK1xyXG4gICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzW2ZyYWdtZW50RmxhZ119ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUgLyogaXNCbG9jayAqLywgIWlzU3RhYmxlRnJhZ21lbnQgLyogZGlzYWJsZVRyYWNraW5nICovLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLywgbm9kZS5sb2MpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGZpbmlzaCB0aGUgY29kZWdlbiBub3cgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuIHRyYXZlcnNlZFxyXG4gICAgICAgICAgICBsZXQgY2hpbGRCbG9jaztcclxuICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gZm9yTm9kZTtcclxuICAgICAgICAgICAgLy8gY2hlY2sgPHRlbXBsYXRlIHYtZm9yPiBrZXkgcGxhY2VtZW50XHJcbiAgICAgICAgICAgIGlmICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlKSAmJiBpc1RlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBmaW5kUHJvcChjLCAna2V5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMzIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UICovLCBrZXkubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5lZWRGcmFnbWVudFdyYXBwZXIgPSBjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgY2hpbGRyZW5bMF0udHlwZSAhPT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLztcclxuICAgICAgICAgICAgY29uc3Qgc2xvdE91dGxldCA9IGlzU2xvdE91dGxldChub2RlKVxyXG4gICAgICAgICAgICAgICAgPyBub2RlXHJcbiAgICAgICAgICAgICAgICA6IGlzVGVtcGxhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2xvdE91dGxldChub2RlLmNoaWxkcmVuWzBdKVxyXG4gICAgICAgICAgICAgICAgICAgID8gbm9kZS5jaGlsZHJlblswXSAvLyBhcGktZXh0cmFjdG9yIHNvbWVob3cgZmFpbHMgdG8gaW5mZXIgdGhpc1xyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHNsb3RPdXRsZXQpIHtcclxuICAgICAgICAgICAgICAgIC8vIDxzbG90IHYtZm9yPVwiLi4uXCI+IG9yIDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiPjxzbG90Lz48L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgY2hpbGRCbG9jayA9IHNsb3RPdXRsZXQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZW1wbGF0ZSAmJiBrZXlQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiIDprZXk9XCIuLi5cIj48c2xvdC8+PC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGluamVjdCB0aGUga2V5IHRvIHRoZSByZW5kZXJTbG90KCkgY2FsbC5cclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHJvcHMgZm9yIHJlbmRlclNsb3QgaXMgcGFzc2VkIGFzIHRoZSAzcmQgYXJndW1lbnQuXHJcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmVlZEZyYWdtZW50V3JhcHBlcikge1xyXG4gICAgICAgICAgICAgICAgLy8gPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCI+IHdpdGggdGV4dCBvciBtdWx0aS1lbGVtZW50c1xyXG4gICAgICAgICAgICAgICAgLy8gc2hvdWxkIGdlbmVyYXRlIGEgZnJhZ21lbnQgYmxvY2sgZm9yIGVhY2ggbG9vcFxyXG4gICAgICAgICAgICAgICAgY2hpbGRCbG9jayA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCBrZXlQcm9wZXJ0eSA/IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2tleVByb3BlcnR5XSkgOiB1bmRlZmluZWQsIG5vZGUuY2hpbGRyZW4sIDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovICtcclxuICAgICAgICAgICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzWzY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXX0gKi9gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwgdW5kZWZpbmVkLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBOb3JtYWwgZWxlbWVudCB2LWZvci4gRGlyZWN0bHkgdXNlIHRoZSBjaGlsZCdzIGNvZGVnZW5Ob2RlXHJcbiAgICAgICAgICAgICAgICAvLyBidXQgbWFyayBpdCBhcyBhIGJsb2NrLlxyXG4gICAgICAgICAgICAgICAgY2hpbGRCbG9jayA9IGNoaWxkcmVuWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGVtcGxhdGUgJiYga2V5UHJvcGVydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmplY3RQcm9wKGNoaWxkQmxvY2ssIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2sgIT09ICFpc1N0YWJsZUZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggZnJvbSBibG9jayB0byB2bm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBmcm9tIHZub2RlIHRvIGJsb2NrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2hpbGRCbG9jay5pc0Jsb2NrID0gIWlzU3RhYmxlRnJhZ21lbnQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgIGhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlbHBlcihnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1lbW8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxvb3AgPSBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhmb3JOb2RlLnBhcnNlUmVzdWx0LCBbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2NhY2hlZGApXHJcbiAgICAgICAgICAgICAgICBdKSk7XHJcbiAgICAgICAgICAgICAgICBsb29wLmJvZHkgPSBjcmVhdGVCbG9ja1N0YXRlbWVudChbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtgY29uc3QgX21lbW8gPSAoYCwgbWVtby5leHAsIGApYF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpZiAoX2NhY2hlZGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihrZXlFeHAgPyBbYCAmJiBfY2FjaGVkLmtleSA9PT0gYCwga2V5RXhwXSA6IFtdKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCAmJiAke2NvbnRleHQuaGVscGVyU3RyaW5nKElTX01FTU9fU0FNRSl9KF9jYWNoZWQsIF9tZW1vKSkgcmV0dXJuIF9jYWNoZWRgXHJcbiAgICAgICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtgY29uc3QgX2l0ZW0gPSBgLCBjaGlsZEJsb2NrXSksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2l0ZW0ubWVtbyA9IF9tZW1vYCksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgcmV0dXJuIF9pdGVtYClcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgcmVuZGVyRXhwLmFyZ3VtZW50cy5wdXNoKGxvb3AsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9jYWNoZWApLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFN0cmluZyhjb250ZXh0LmNhY2hlZCsrKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVuZGVyRXhwLmFyZ3VtZW50cy5wdXNoKGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGZvck5vZGUucGFyc2VSZXN1bHQpLCBjaGlsZEJsb2NrLCB0cnVlIC8qIGZvcmNlIG5ld2xpbmUgKi8pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufSk7XHJcbi8vIHRhcmdldC1hZ25vc3RpYyB0cmFuc2Zvcm0gdXNlZCBmb3IgYm90aCBDbGllbnQgYW5kIFNTUlxyXG5mdW5jdGlvbiBwcm9jZXNzRm9yKG5vZGUsIGRpciwgY29udGV4dCwgcHJvY2Vzc0NvZGVnZW4pIHtcclxuICAgIGlmICghZGlyLmV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMxIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9OT19FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZUZvckV4cHJlc3Npb24oXHJcbiAgICAvLyBjYW4gb25seSBiZSBzaW1wbGUgZXhwcmVzc2lvbiBiZWNhdXNlIHZGb3IgdHJhbnNmb3JtIGlzIGFwcGxpZWRcclxuICAgIC8vIGJlZm9yZSBleHByZXNzaW9uIHRyYW5zZm9ybS5cclxuICAgIGRpci5leHAsIGNvbnRleHQpO1xyXG4gICAgaWYgKCFwYXJzZVJlc3VsdCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgYWRkSWRlbnRpZmllcnMsIHJlbW92ZUlkZW50aWZpZXJzLCBzY29wZXMgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHNvdXJjZSwgdmFsdWUsIGtleSwgaW5kZXggfSA9IHBhcnNlUmVzdWx0O1xyXG4gICAgY29uc3QgZm9yTm9kZSA9IHtcclxuICAgICAgICB0eXBlOiAxMSAvKiBOb2RlVHlwZXMuRk9SICovLFxyXG4gICAgICAgIGxvYzogZGlyLmxvYyxcclxuICAgICAgICBzb3VyY2UsXHJcbiAgICAgICAgdmFsdWVBbGlhczogdmFsdWUsXHJcbiAgICAgICAga2V5QWxpYXM6IGtleSxcclxuICAgICAgICBvYmplY3RJbmRleEFsaWFzOiBpbmRleCxcclxuICAgICAgICBwYXJzZVJlc3VsdCxcclxuICAgICAgICBjaGlsZHJlbjogaXNUZW1wbGF0ZU5vZGUobm9kZSkgPyBub2RlLmNoaWxkcmVuIDogW25vZGVdXHJcbiAgICB9O1xyXG4gICAgY29udGV4dC5yZXBsYWNlTm9kZShmb3JOb2RlKTtcclxuICAgIC8vIGJvb2trZWVwaW5nXHJcbiAgICBzY29wZXMudkZvcisrO1xyXG4gICAgY29uc3Qgb25FeGl0ID0gcHJvY2Vzc0NvZGVnZW4gJiYgcHJvY2Vzc0NvZGVnZW4oZm9yTm9kZSk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIHNjb3Blcy52Rm9yLS07XHJcbiAgICAgICAgaWYgKG9uRXhpdClcclxuICAgICAgICAgICAgb25FeGl0KCk7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IGZvckFsaWFzUkUgPSAvKFtcXHNcXFNdKj8pXFxzKyg/OmlufG9mKVxccysoW1xcc1xcU10qKS87XHJcbi8vIFRoaXMgcmVnZXggZG9lc24ndCBjb3ZlciB0aGUgY2FzZSBpZiBrZXkgb3IgaW5kZXggYWxpYXNlcyBoYXZlIGRlc3RydWN0dXJpbmcsXHJcbi8vIGJ1dCB0aG9zZSBkbyBub3QgbWFrZSBzZW5zZSBpbiB0aGUgZmlyc3QgcGxhY2UsIHNvIHRoaXMgd29ya3MgaW4gcHJhY3RpY2UuXHJcbmNvbnN0IGZvckl0ZXJhdG9yUkUgPSAvLChbXixcXH1cXF1dKikoPzosKFteLFxcfVxcXV0qKSk/JC87XHJcbmNvbnN0IHN0cmlwUGFyZW5zUkUgPSAvXlxcKHxcXCkkL2c7XHJcbmZ1bmN0aW9uIHBhcnNlRm9yRXhwcmVzc2lvbihpbnB1dCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgbG9jID0gaW5wdXQubG9jO1xyXG4gICAgY29uc3QgZXhwID0gaW5wdXQuY29udGVudDtcclxuICAgIGNvbnN0IGluTWF0Y2ggPSBleHAubWF0Y2goZm9yQWxpYXNSRSk7XHJcbiAgICBpZiAoIWluTWF0Y2gpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgY29uc3QgWywgTEhTLCBSSFNdID0gaW5NYXRjaDtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICBzb3VyY2U6IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIFJIUy50cmltKCksIGV4cC5pbmRleE9mKFJIUywgTEhTLmxlbmd0aCkpLFxyXG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXHJcbiAgICAgICAga2V5OiB1bmRlZmluZWQsXHJcbiAgICAgICAgaW5kZXg6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LnNvdXJjZSwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWVDb250ZW50ID0gTEhTLnRyaW0oKS5yZXBsYWNlKHN0cmlwUGFyZW5zUkUsICcnKS50cmltKCk7XHJcbiAgICBjb25zdCB0cmltbWVkT2Zmc2V0ID0gTEhTLmluZGV4T2YodmFsdWVDb250ZW50KTtcclxuICAgIGNvbnN0IGl0ZXJhdG9yTWF0Y2ggPSB2YWx1ZUNvbnRlbnQubWF0Y2goZm9ySXRlcmF0b3JSRSk7XHJcbiAgICBpZiAoaXRlcmF0b3JNYXRjaCkge1xyXG4gICAgICAgIHZhbHVlQ29udGVudCA9IHZhbHVlQ29udGVudC5yZXBsYWNlKGZvckl0ZXJhdG9yUkUsICcnKS50cmltKCk7XHJcbiAgICAgICAgY29uc3Qga2V5Q29udGVudCA9IGl0ZXJhdG9yTWF0Y2hbMV0udHJpbSgpO1xyXG4gICAgICAgIGxldCBrZXlPZmZzZXQ7XHJcbiAgICAgICAgaWYgKGtleUNvbnRlbnQpIHtcclxuICAgICAgICAgICAga2V5T2Zmc2V0ID0gZXhwLmluZGV4T2Yoa2V5Q29udGVudCwgdHJpbW1lZE9mZnNldCArIHZhbHVlQ29udGVudC5sZW5ndGgpO1xyXG4gICAgICAgICAgICByZXN1bHQua2V5ID0gY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywga2V5Q29udGVudCwga2V5T2Zmc2V0KTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC5rZXksIGNvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVyYXRvck1hdGNoWzJdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4Q29udGVudCA9IGl0ZXJhdG9yTWF0Y2hbMl0udHJpbSgpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhDb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5kZXggPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBpbmRleENvbnRlbnQsIGV4cC5pbmRleE9mKGluZGV4Q29udGVudCwgcmVzdWx0LmtleVxyXG4gICAgICAgICAgICAgICAgICAgID8ga2V5T2Zmc2V0ICsga2V5Q29udGVudC5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICA6IHRyaW1tZWRPZmZzZXQgKyB2YWx1ZUNvbnRlbnQubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC5pbmRleCwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWVDb250ZW50KSB7XHJcbiAgICAgICAgcmVzdWx0LnZhbHVlID0gY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgdmFsdWVDb250ZW50LCB0cmltbWVkT2Zmc2V0KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQudmFsdWUsIGNvbnRleHQsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQWxpYXNFeHByZXNzaW9uKHJhbmdlLCBjb250ZW50LCBvZmZzZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGZhbHNlLCBnZXRJbm5lclJhbmdlKHJhbmdlLCBvZmZzZXQsIGNvbnRlbnQubGVuZ3RoKSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRm9yTG9vcFBhcmFtcyh7IHZhbHVlLCBrZXksIGluZGV4IH0sIG1lbW9BcmdzID0gW10pIHtcclxuICAgIHJldHVybiBjcmVhdGVQYXJhbXNMaXN0KFt2YWx1ZSwga2V5LCBpbmRleCwgLi4ubWVtb0FyZ3NdKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNMaXN0KGFyZ3MpIHtcclxuICAgIGxldCBpID0gYXJncy5sZW5ndGg7XHJcbiAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgaWYgKGFyZ3NbaV0pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyZ3NcclxuICAgICAgICAuc2xpY2UoMCwgaSArIDEpXHJcbiAgICAgICAgLm1hcCgoYXJnLCBpKSA9PiBhcmcgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2AucmVwZWF0KGkgKyAxKSwgZmFsc2UpKTtcclxufVxuXG5jb25zdCBkZWZhdWx0RmFsbGJhY2sgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB1bmRlZmluZWRgLCBmYWxzZSk7XHJcbi8vIEEgTm9kZVRyYW5zZm9ybSB0aGF0OlxyXG4vLyAxLiBUcmFja3Mgc2NvcGUgaWRlbnRpZmllcnMgZm9yIHNjb3BlZCBzbG90cyBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IHByZWZpeGVkXHJcbi8vICAgIGJ5IHRyYW5zZm9ybUV4cHJlc3Npb24uIFRoaXMgaXMgb25seSBhcHBsaWVkIGluIG5vbi1icm93c2VyIGJ1aWxkcyB3aXRoXHJcbi8vICAgIHsgcHJlZml4SWRlbnRpZmllcnM6IHRydWUgfS5cclxuLy8gMi4gVHJhY2sgdi1zbG90IGRlcHRocyBzbyB0aGF0IHdlIGtub3cgYSBzbG90IGlzIGluc2lkZSBhbm90aGVyIHNsb3QuXHJcbi8vICAgIE5vdGUgdGhlIGV4aXQgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgYmVmb3JlIGJ1aWxkU2xvdHMoKSBvbiB0aGUgc2FtZSBub2RlLFxyXG4vLyAgICBzbyBvbmx5IG5lc3RlZCBzbG90cyBzZWUgcG9zaXRpdmUgbnVtYmVycy5cclxuY29uc3QgdHJhY2tTbG90U2NvcGVzID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAobm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8gfHxcclxuICAgICAgICAgICAgbm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLykpIHtcclxuICAgICAgICAvLyBXZSBhcmUgb25seSBjaGVja2luZyBub24tZW1wdHkgdi1zbG90IGhlcmVcclxuICAgICAgICAvLyBzaW5jZSB3ZSBvbmx5IGNhcmUgYWJvdXQgc2xvdHMgdGhhdCBpbnRyb2R1Y2Ugc2NvcGUgdmFyaWFibGVzLlxyXG4gICAgICAgIGNvbnN0IHZTbG90ID0gZmluZERpcihub2RlLCAnc2xvdCcpO1xyXG4gICAgICAgIGlmICh2U2xvdCkge1xyXG4gICAgICAgICAgICB2U2xvdC5leHA7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90Kys7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdC0tO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuLy8gQSBOb2RlVHJhbnNmb3JtIHRoYXQgdHJhY2tzIHNjb3BlIGlkZW50aWZpZXJzIGZvciBzY29wZWQgc2xvdHMgd2l0aCB2LWZvci5cclxuLy8gVGhpcyB0cmFuc2Zvcm0gaXMgb25seSBhcHBsaWVkIGluIG5vbi1icm93c2VyIGJ1aWxkcyB3aXRoIHsgcHJlZml4SWRlbnRpZmllcnM6IHRydWUgfVxyXG5jb25zdCB0cmFja1ZGb3JTbG90U2NvcGVzID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGxldCB2Rm9yO1xyXG4gICAgaWYgKGlzVGVtcGxhdGVOb2RlKG5vZGUpICYmXHJcbiAgICAgICAgbm9kZS5wcm9wcy5zb21lKGlzVlNsb3QpICYmXHJcbiAgICAgICAgKHZGb3IgPSBmaW5kRGlyKG5vZGUsICdmb3InKSkpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSAodkZvci5wYXJzZVJlc3VsdCA9IHBhcnNlRm9yRXhwcmVzc2lvbih2Rm9yLmV4cCwgY29udGV4dCkpO1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwga2V5LCBpbmRleCB9ID0gcmVzdWx0O1xyXG4gICAgICAgICAgICBjb25zdCB7IGFkZElkZW50aWZpZXJzLCByZW1vdmVJZGVudGlmaWVycyB9ID0gY29udGV4dDtcclxuICAgICAgICAgICAgdmFsdWUgJiYgYWRkSWRlbnRpZmllcnModmFsdWUpO1xyXG4gICAgICAgICAgICBrZXkgJiYgYWRkSWRlbnRpZmllcnMoa2V5KTtcclxuICAgICAgICAgICAgaW5kZXggJiYgYWRkSWRlbnRpZmllcnMoaW5kZXgpO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgJiYgcmVtb3ZlSWRlbnRpZmllcnModmFsdWUpO1xyXG4gICAgICAgICAgICAgICAga2V5ICYmIHJlbW92ZUlkZW50aWZpZXJzKGtleSk7XHJcbiAgICAgICAgICAgICAgICBpbmRleCAmJiByZW1vdmVJZGVudGlmaWVycyhpbmRleCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCBidWlsZENsaWVudFNsb3RGbiA9IChwcm9wcywgY2hpbGRyZW4sIGxvYykgPT4gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHByb3BzLCBjaGlsZHJlbiwgZmFsc2UgLyogbmV3bGluZSAqLywgdHJ1ZSAvKiBpc1Nsb3QgKi8sIGNoaWxkcmVuLmxlbmd0aCA/IGNoaWxkcmVuWzBdLmxvYyA6IGxvYyk7XHJcbi8vIEluc3RlYWQgb2YgYmVpbmcgYSBEaXJlY3RpdmVUcmFuc2Zvcm0sIHYtc2xvdCBwcm9jZXNzaW5nIGlzIGNhbGxlZCBkdXJpbmdcclxuLy8gdHJhbnNmb3JtRWxlbWVudCB0byBidWlsZCB0aGUgc2xvdHMgb2JqZWN0IGZvciBhIGNvbXBvbmVudC5cclxuZnVuY3Rpb24gYnVpbGRTbG90cyhub2RlLCBjb250ZXh0LCBidWlsZFNsb3RGbiA9IGJ1aWxkQ2xpZW50U2xvdEZuKSB7XHJcbiAgICBjb250ZXh0LmhlbHBlcihXSVRIX0NUWCk7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBsb2MgfSA9IG5vZGU7XHJcbiAgICBjb25zdCBzbG90c1Byb3BlcnRpZXMgPSBbXTtcclxuICAgIGNvbnN0IGR5bmFtaWNTbG90cyA9IFtdO1xyXG4gICAgLy8gSWYgdGhlIHNsb3QgaXMgaW5zaWRlIGEgdi1mb3Igb3IgYW5vdGhlciB2LXNsb3QsIGZvcmNlIGl0IHRvIGJlIGR5bmFtaWNcclxuICAgIC8vIHNpbmNlIGl0IGxpa2VseSB1c2VzIGEgc2NvcGUgdmFyaWFibGUuXHJcbiAgICBsZXQgaGFzRHluYW1pY1Nsb3RzID0gY29udGV4dC5zY29wZXMudlNsb3QgPiAwIHx8IGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwO1xyXG4gICAgLy8gMS4gQ2hlY2sgZm9yIHNsb3Qgd2l0aCBzbG90UHJvcHMgb24gY29tcG9uZW50IGl0c2VsZi5cclxuICAgIC8vICAgIDxDb21wIHYtc2xvdD1cInsgcHJvcCB9XCIvPlxyXG4gICAgY29uc3Qgb25Db21wb25lbnRTbG90ID0gZmluZERpcihub2RlLCAnc2xvdCcsIHRydWUpO1xyXG4gICAgaWYgKG9uQ29tcG9uZW50U2xvdCkge1xyXG4gICAgICAgIGNvbnN0IHsgYXJnLCBleHAgfSA9IG9uQ29tcG9uZW50U2xvdDtcclxuICAgICAgICBpZiAoYXJnICYmICFpc1N0YXRpY0V4cChhcmcpKSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdkZWZhdWx0JywgdHJ1ZSksIGJ1aWxkU2xvdEZuKGV4cCwgY2hpbGRyZW4sIGxvYykpKTtcclxuICAgIH1cclxuICAgIC8vIDIuIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZHJlbiBhbmQgY2hlY2sgZm9yIHRlbXBsYXRlIHNsb3RzXHJcbiAgICAvLyAgICA8dGVtcGxhdGUgdi1zbG90OmZvbz1cInsgcHJvcCB9XCI+XHJcbiAgICBsZXQgaGFzVGVtcGxhdGVTbG90cyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc05hbWVkRGVmYXVsdFNsb3QgPSBmYWxzZTtcclxuICAgIGNvbnN0IGltcGxpY2l0RGVmYXVsdENoaWxkcmVuID0gW107XHJcbiAgICBjb25zdCBzZWVuU2xvdE5hbWVzID0gbmV3IFNldCgpO1xyXG4gICAgbGV0IGNvbmRpdGlvbmFsQnJhbmNoSW5kZXggPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHNsb3RFbGVtZW50ID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgbGV0IHNsb3REaXI7XHJcbiAgICAgICAgaWYgKCFpc1RlbXBsYXRlTm9kZShzbG90RWxlbWVudCkgfHxcclxuICAgICAgICAgICAgIShzbG90RGlyID0gZmluZERpcihzbG90RWxlbWVudCwgJ3Nsb3QnLCB0cnVlKSkpIHtcclxuICAgICAgICAgICAgLy8gbm90IGEgPHRlbXBsYXRlIHYtc2xvdD4sIHNraXAuXHJcbiAgICAgICAgICAgIGlmIChzbG90RWxlbWVudC50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5wdXNoKHNsb3RFbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uQ29tcG9uZW50U2xvdCkge1xyXG4gICAgICAgICAgICAvLyBhbHJlYWR5IGhhcyBvbi1jb21wb25lbnQgc2xvdCAtIHRoaXMgaXMgaW5jb3JyZWN0IHVzYWdlLlxyXG4gICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNyAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX01JWEVEX1NMT1RfVVNBR0UgKi8sIHNsb3REaXIubG9jKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoYXNUZW1wbGF0ZVNsb3RzID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuOiBzbG90Q2hpbGRyZW4sIGxvYzogc2xvdExvYyB9ID0gc2xvdEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgeyBhcmc6IHNsb3ROYW1lID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgZGVmYXVsdGAsIHRydWUpLCBleHA6IHNsb3RQcm9wcywgbG9jOiBkaXJMb2MgfSA9IHNsb3REaXI7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgbmFtZSBpcyBkeW5hbWljLlxyXG4gICAgICAgIGxldCBzdGF0aWNTbG90TmFtZTtcclxuICAgICAgICBpZiAoaXNTdGF0aWNFeHAoc2xvdE5hbWUpKSB7XHJcbiAgICAgICAgICAgIHN0YXRpY1Nsb3ROYW1lID0gc2xvdE5hbWUgPyBzbG90TmFtZS5jb250ZW50IDogYGRlZmF1bHRgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2xvdEZ1bmN0aW9uID0gYnVpbGRTbG90Rm4oc2xvdFByb3BzLCBzbG90Q2hpbGRyZW4sIHNsb3RMb2MpO1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgc2xvdCBpcyBjb25kaXRpb25hbCAodi1pZi92LWZvcilcclxuICAgICAgICBsZXQgdklmO1xyXG4gICAgICAgIGxldCB2RWxzZTtcclxuICAgICAgICBsZXQgdkZvcjtcclxuICAgICAgICBpZiAoKHZJZiA9IGZpbmREaXIoc2xvdEVsZW1lbnQsICdpZicpKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBkeW5hbWljU2xvdHMucHVzaChjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odklmLmV4cCwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uLCBjb25kaXRpb25hbEJyYW5jaEluZGV4KyspLCBkZWZhdWx0RmFsbGJhY2spKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHZFbHNlID0gZmluZERpcihzbG90RWxlbWVudCwgL15lbHNlKC1pZik/JC8sIHRydWUgLyogYWxsb3dFbXB0eSAqLykpKSB7XHJcbiAgICAgICAgICAgIC8vIGZpbmQgYWRqYWNlbnQgdi1pZlxyXG4gICAgICAgICAgICBsZXQgaiA9IGk7XHJcbiAgICAgICAgICAgIGxldCBwcmV2O1xyXG4gICAgICAgICAgICB3aGlsZSAoai0tKSB7XHJcbiAgICAgICAgICAgICAgICBwcmV2ID0gY2hpbGRyZW5bal07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldi50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByZXYgJiYgaXNUZW1wbGF0ZU5vZGUocHJldikgJiYgZmluZERpcihwcmV2LCAnaWYnKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIG5vZGVcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgIC8vIGF0dGFjaCB0aGlzIHNsb3QgdG8gcHJldmlvdXMgY29uZGl0aW9uYWxcclxuICAgICAgICAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IGR5bmFtaWNTbG90c1tkeW5hbWljU2xvdHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoY29uZGl0aW9uYWwuYWx0ZXJuYXRlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbC5hbHRlcm5hdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25kaXRpb25hbC5hbHRlcm5hdGUgPSB2RWxzZS5leHBcclxuICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbih2RWxzZS5leHAsIGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiwgY29uZGl0aW9uYWxCcmFuY2hJbmRleCsrKSwgZGVmYXVsdEZhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIDogYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uLCBjb25kaXRpb25hbEJyYW5jaEluZGV4KyspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqLywgdkVsc2UubG9jKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHZGb3IgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnZm9yJykpKSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gdkZvci5wYXJzZVJlc3VsdCB8fFxyXG4gICAgICAgICAgICAgICAgcGFyc2VGb3JFeHByZXNzaW9uKHZGb3IuZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKHBhcnNlUmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGR5bmFtaWMgc2xvdHMgYXMgYW4gYXJyYXkgYW5kIGFkZCBpdCB0byB0aGUgY3JlYXRlU2xvdCgpXHJcbiAgICAgICAgICAgICAgICAvLyBhcmdzLiBUaGUgcnVudGltZSBrbm93cyBob3cgdG8gaGFuZGxlIGl0IGFwcHJvcHJpYXRlbHkuXHJcbiAgICAgICAgICAgICAgICBkeW5hbWljU2xvdHMucHVzaChjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRU5ERVJfTElTVCksIFtcclxuICAgICAgICAgICAgICAgICAgICBwYXJzZVJlc3VsdC5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMocGFyc2VSZXN1bHQpLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pLCB0cnVlIC8qIGZvcmNlIG5ld2xpbmUgKi8pXHJcbiAgICAgICAgICAgICAgICBdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMiAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTUFMRk9STUVEX0VYUFJFU1NJT04gKi8sIHZGb3IubG9jKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGR1cGxpY2F0ZSBzdGF0aWMgbmFtZXNcclxuICAgICAgICAgICAgaWYgKHN0YXRpY1Nsb3ROYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VlblNsb3ROYW1lcy5oYXMoc3RhdGljU2xvdE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzggLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUyAqLywgZGlyTG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzZWVuU2xvdE5hbWVzLmFkZChzdGF0aWNTbG90TmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGljU2xvdE5hbWUgPT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc05hbWVkRGVmYXVsdFNsb3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW9uQ29tcG9uZW50U2xvdCkge1xyXG4gICAgICAgIGNvbnN0IGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSA9IChwcm9wcywgY2hpbGRyZW4pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSBidWlsZFNsb3RGbihwcm9wcywgY2hpbGRyZW4sIGxvYyk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmNvbXBhdENvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgZm4uaXNOb25TY29wZWRTbG90ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGRlZmF1bHRgLCBmbik7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWhhc1RlbXBsYXRlU2xvdHMpIHtcclxuICAgICAgICAgICAgLy8gaW1wbGljaXQgZGVmYXVsdCBzbG90IChvbiBjb21wb25lbnQpXHJcbiAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSh1bmRlZmluZWQsIGNoaWxkcmVuKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyAjMzc2NlxyXG4gICAgICAgICAgICAvLyB3aXRoIHdoaXRlc3BhY2U6ICdwcmVzZXJ2ZScsIHdoaXRlc3BhY2VzIGJldHdlZW4gc2xvdHMgd2lsbCBlbmQgdXAgaW5cclxuICAgICAgICAgICAgLy8gaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4uIElnbm9yZSBpZiBhbGwgaW1wbGljaXQgY2hpbGRyZW4gYXJlIHdoaXRlc3BhY2VzLlxyXG4gICAgICAgICAgICBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5zb21lKG5vZGUgPT4gaXNOb25XaGl0ZXNwYWNlQ29udGVudChub2RlKSkpIHtcclxuICAgICAgICAgICAgLy8gaW1wbGljaXQgZGVmYXVsdCBzbG90IChtaXhlZCB3aXRoIG5hbWVkIHNsb3RzKVxyXG4gICAgICAgICAgICBpZiAoaGFzTmFtZWREZWZhdWx0U2xvdCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzkgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiAqLywgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW5bMF0ubG9jKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodW5kZWZpbmVkLCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc2xvdEZsYWcgPSBoYXNEeW5hbWljU2xvdHNcclxuICAgICAgICA/IDIgLyogU2xvdEZsYWdzLkRZTkFNSUMgKi9cclxuICAgICAgICA6IGhhc0ZvcndhcmRlZFNsb3RzKG5vZGUuY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gMyAvKiBTbG90RmxhZ3MuRk9SV0FSREVEICovXHJcbiAgICAgICAgICAgIDogMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovO1xyXG4gICAgbGV0IHNsb3RzID0gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihzbG90c1Byb3BlcnRpZXMuY29uY2F0KGNyZWF0ZU9iamVjdFByb3BlcnR5KGBfYCwgXHJcbiAgICAvLyAyID0gY29tcGlsZWQgYnV0IGR5bmFtaWMgPSBjYW4gc2tpcCBub3JtYWxpemF0aW9uLCBidXQgbXVzdCBydW4gZGlmZlxyXG4gICAgLy8gMSA9IGNvbXBpbGVkIGFuZCBzdGF0aWMgPSBjYW4gc2tpcCBub3JtYWxpemF0aW9uIEFORCBkaWZmIGFzIG9wdGltaXplZFxyXG4gICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihzbG90RmxhZyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7c2xvdEZsYWdzVGV4dFtzbG90RmxhZ119ICovYCA6IGBgKSwgZmFsc2UpKSksIGxvYyk7XHJcbiAgICBpZiAoZHluYW1pY1Nsb3RzLmxlbmd0aCkge1xyXG4gICAgICAgIHNsb3RzID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoQ1JFQVRFX1NMT1RTKSwgW1xyXG4gICAgICAgICAgICBzbG90cyxcclxuICAgICAgICAgICAgY3JlYXRlQXJyYXlFeHByZXNzaW9uKGR5bmFtaWNTbG90cylcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgaGFzRHluYW1pY1Nsb3RzXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGJ1aWxkRHluYW1pY1Nsb3QobmFtZSwgZm4sIGluZGV4KSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IFtcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShgbmFtZWAsIG5hbWUpLFxyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBmbmAsIGZuKVxyXG4gICAgXTtcclxuICAgIGlmIChpbmRleCAhPSBudWxsKSB7XHJcbiAgICAgICAgcHJvcHMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShga2V5YCwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoaW5kZXgpLCB0cnVlKSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcHMpO1xyXG59XHJcbmZ1bmN0aW9uIGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkcmVuKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLnRhZ1R5cGUgPT09IDIgLyogRWxlbWVudFR5cGVzLlNMT1QgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICBoYXNGb3J3YXJkZWRTbG90cyhjaGlsZC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmJyYW5jaGVzKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChoYXNGb3J3YXJkZWRTbG90cyhjaGlsZC5jaGlsZHJlbikpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNOb25XaGl0ZXNwYWNlQ29udGVudChub2RlKSB7XHJcbiAgICBpZiAobm9kZS50eXBlICE9PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmIG5vZGUudHlwZSAhPT0gMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLylcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiBub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi9cclxuICAgICAgICA/ICEhbm9kZS5jb250ZW50LnRyaW0oKVxyXG4gICAgICAgIDogaXNOb25XaGl0ZXNwYWNlQ29udGVudChub2RlLmNvbnRlbnQpO1xyXG59XG5cbi8vIHNvbWUgZGlyZWN0aXZlIHRyYW5zZm9ybXMgKGUuZy4gdi1tb2RlbCkgbWF5IHJldHVybiBhIHN5bWJvbCBmb3IgcnVudGltZVxyXG4vLyBpbXBvcnQsIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgYSByZXNvbHZlRGlyZWN0aXZlIGNhbGwuXHJcbmNvbnN0IGRpcmVjdGl2ZUltcG9ydE1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbi8vIGdlbmVyYXRlIGEgSmF2YVNjcmlwdCBBU1QgZm9yIHRoaXMgZWxlbWVudCdzIGNvZGVnZW5cclxuY29uc3QgdHJhbnNmb3JtRWxlbWVudCA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAvLyBwZXJmb3JtIHRoZSB3b3JrIG9uIGV4aXQsIGFmdGVyIGFsbCBjaGlsZCBleHByZXNzaW9ucyBoYXZlIGJlZW5cclxuICAgIC8vIHByb2Nlc3NlZCBhbmQgbWVyZ2VkLlxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBvc3RUcmFuc2Zvcm1FbGVtZW50KCkge1xyXG4gICAgICAgIG5vZGUgPSBjb250ZXh0LmN1cnJlbnROb2RlO1xyXG4gICAgICAgIGlmICghKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAobm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyB0YWcsIHByb3BzIH0gPSBub2RlO1xyXG4gICAgICAgIGNvbnN0IGlzQ29tcG9uZW50ID0gbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi87XHJcbiAgICAgICAgLy8gVGhlIGdvYWwgb2YgdGhlIHRyYW5zZm9ybSBpcyB0byBjcmVhdGUgYSBjb2RlZ2VuTm9kZSBpbXBsZW1lbnRpbmcgdGhlXHJcbiAgICAgICAgLy8gVk5vZGVDYWxsIGludGVyZmFjZS5cclxuICAgICAgICBsZXQgdm5vZGVUYWcgPSBpc0NvbXBvbmVudFxyXG4gICAgICAgICAgICA/IHJlc29sdmVDb21wb25lbnRUeXBlKG5vZGUsIGNvbnRleHQpXHJcbiAgICAgICAgICAgIDogYFwiJHt0YWd9XCJgO1xyXG4gICAgICAgIGNvbnN0IGlzRHluYW1pY0NvbXBvbmVudCA9IGlzT2JqZWN0KHZub2RlVGFnKSAmJiB2bm9kZVRhZy5jYWxsZWUgPT09IFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQ7XHJcbiAgICAgICAgbGV0IHZub2RlUHJvcHM7XHJcbiAgICAgICAgbGV0IHZub2RlQ2hpbGRyZW47XHJcbiAgICAgICAgbGV0IHZub2RlUGF0Y2hGbGFnO1xyXG4gICAgICAgIGxldCBwYXRjaEZsYWcgPSAwO1xyXG4gICAgICAgIGxldCB2bm9kZUR5bmFtaWNQcm9wcztcclxuICAgICAgICBsZXQgZHluYW1pY1Byb3BOYW1lcztcclxuICAgICAgICBsZXQgdm5vZGVEaXJlY3RpdmVzO1xyXG4gICAgICAgIGxldCBzaG91bGRVc2VCbG9jayA9IFxyXG4gICAgICAgIC8vIGR5bmFtaWMgY29tcG9uZW50IG1heSByZXNvbHZlIHRvIHBsYWluIGVsZW1lbnRzXHJcbiAgICAgICAgaXNEeW5hbWljQ29tcG9uZW50IHx8XHJcbiAgICAgICAgICAgIHZub2RlVGFnID09PSBURUxFUE9SVCB8fFxyXG4gICAgICAgICAgICB2bm9kZVRhZyA9PT0gU1VTUEVOU0UgfHxcclxuICAgICAgICAgICAgKCFpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gPHN2Zz4gYW5kIDxmb3JlaWduT2JqZWN0PiBtdXN0IGJlIGZvcmNlZCBpbnRvIGJsb2NrcyBzbyB0aGF0IGJsb2NrXHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVzIGluc2lkZSBnZXQgcHJvcGVyIGlzU1ZHIGZsYWcgYXQgcnVudGltZS4gKCM2MzksICM2NDMpXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IHdlYi1zcGVjaWZpYywgYnV0IHNwbGl0dGluZyB0aGUgbG9naWMgb3V0IG9mIGNvcmVcclxuICAgICAgICAgICAgICAgIC8vIGxlYWRzIHRvIHRvbyBtdWNoIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkuXHJcbiAgICAgICAgICAgICAgICAodGFnID09PSAnc3ZnJyB8fCB0YWcgPT09ICdmb3JlaWduT2JqZWN0JykpO1xyXG4gICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgaWYgKHByb3BzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcHNCdWlsZFJlc3VsdCA9IGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgdW5kZWZpbmVkLCBpc0NvbXBvbmVudCwgaXNEeW5hbWljQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgdm5vZGVQcm9wcyA9IHByb3BzQnVpbGRSZXN1bHQucHJvcHM7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyA9IHByb3BzQnVpbGRSZXN1bHQucGF0Y2hGbGFnO1xyXG4gICAgICAgICAgICBkeW5hbWljUHJvcE5hbWVzID0gcHJvcHNCdWlsZFJlc3VsdC5keW5hbWljUHJvcE5hbWVzO1xyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gcHJvcHNCdWlsZFJlc3VsdC5kaXJlY3RpdmVzO1xyXG4gICAgICAgICAgICB2bm9kZURpcmVjdGl2ZXMgPVxyXG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlcyAmJiBkaXJlY3RpdmVzLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgID8gY3JlYXRlQXJyYXlFeHByZXNzaW9uKGRpcmVjdGl2ZXMubWFwKGRpciA9PiBidWlsZERpcmVjdGl2ZUFyZ3MoZGlyLCBjb250ZXh0KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGlmIChwcm9wc0J1aWxkUmVzdWx0LnNob3VsZFVzZUJsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hpbGRyZW5cclxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICh2bm9kZVRhZyA9PT0gS0VFUF9BTElWRSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQWx0aG91Z2ggYSBidWlsdC1pbiBjb21wb25lbnQsIHdlIGNvbXBpbGUgS2VlcEFsaXZlIHdpdGggcmF3IGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHNsb3QgZnVuY3Rpb25zIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW5zaWRlIFRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgIC8vIG9yIG90aGVyIFRyYW5zaXRpb24td3JhcHBpbmcgSE9Dcy5cclxuICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBjb3JyZWN0IHVwZGF0ZXMgd2l0aCBibG9jayBvcHRpbWl6YXRpb25zLCB3ZSBuZWVkIHRvOlxyXG4gICAgICAgICAgICAgICAgLy8gMS4gRm9yY2Uga2VlcC1hbGl2ZSBpbnRvIGEgYmxvY2suIFRoaXMgYXZvaWRzIGl0cyBjaGlsZHJlbiBiZWluZ1xyXG4gICAgICAgICAgICAgICAgLy8gICAgY29sbGVjdGVkIGJ5IGEgcGFyZW50IGJsb2NrLlxyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gMi4gRm9yY2Uga2VlcC1hbGl2ZSB0byBhbHdheXMgYmUgdXBkYXRlZCwgc2luY2UgaXQgdXNlcyByYXcgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ1IC8qIEVycm9yQ29kZXMuWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU4gKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5vZGUuY2hpbGRyZW5bMF0ubG9jLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJ1aWxkQXNTbG90cyA9IGlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAvLyBUZWxlcG9ydCBpcyBub3QgYSByZWFsIGNvbXBvbmVudCBhbmQgaGFzIGRlZGljYXRlZCBydW50aW1lIGhhbmRsaW5nXHJcbiAgICAgICAgICAgICAgICB2bm9kZVRhZyAhPT0gVEVMRVBPUlQgJiZcclxuICAgICAgICAgICAgICAgIC8vIGV4cGxhaW5lZCBhYm92ZS5cclxuICAgICAgICAgICAgICAgIHZub2RlVGFnICE9PSBLRUVQX0FMSVZFO1xyXG4gICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRBc1Nsb3RzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNsb3RzLCBoYXNEeW5hbWljU2xvdHMgfSA9IGJ1aWxkU2xvdHMobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gc2xvdHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1Nsb3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIHZub2RlVGFnICE9PSBURUxFUE9SVCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgZHluYW1pYyB0ZXh0IGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNEeW5hbWljVGV4dENoaWxkID0gdHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi87XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1RleHRDaGlsZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBwYXNzIGRpcmVjdGx5IGlmIHRoZSBvbmx5IGNoaWxkIGlzIGEgdGV4dCBub2RlXHJcbiAgICAgICAgICAgICAgICAvLyAocGxhaW4gLyBpbnRlcnBvbGF0aW9uIC8gZXhwcmVzc2lvbilcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljVGV4dENoaWxkIHx8IHR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhdGNoRmxhZyAmIGR5bmFtaWNQcm9wTmFtZXNcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBmbGFncyAobmVnYXRpdmUgYW5kIG11dHVhbGx5IGV4Y2x1c2l2ZSlcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IHBhdGNoRmxhZyArIGAgLyogJHtQYXRjaEZsYWdOYW1lc1twYXRjaEZsYWddfSAqL2A7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBiaXR3aXNlIGZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhZ05hbWVzID0gT2JqZWN0LmtleXMoUGF0Y2hGbGFnTmFtZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoTnVtYmVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG4gPT4gbiA+IDAgJiYgcGF0Y2hGbGFnICYgbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChuID0+IFBhdGNoRmxhZ05hbWVzW25dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbihgLCBgKTtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IHBhdGNoRmxhZyArIGAgLyogJHtmbGFnTmFtZXN9ICovYDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gU3RyaW5nKHBhdGNoRmxhZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMgJiYgZHluYW1pY1Byb3BOYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlRHluYW1pY1Byb3BzID0gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhkeW5hbWljUHJvcE5hbWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIHZub2RlVGFnLCB2bm9kZVByb3BzLCB2bm9kZUNoaWxkcmVuLCB2bm9kZVBhdGNoRmxhZywgdm5vZGVEeW5hbWljUHJvcHMsIHZub2RlRGlyZWN0aXZlcywgISFzaG91bGRVc2VCbG9jaywgZmFsc2UgLyogZGlzYWJsZVRyYWNraW5nICovLCBpc0NvbXBvbmVudCwgbm9kZS5sb2MpO1xyXG4gICAgfTtcclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudFR5cGUobm9kZSwgY29udGV4dCwgc3NyID0gZmFsc2UpIHtcclxuICAgIGxldCB7IHRhZyB9ID0gbm9kZTtcclxuICAgIC8vIDEuIGR5bmFtaWMgY29tcG9uZW50XHJcbiAgICBjb25zdCBpc0V4cGxpY2l0RHluYW1pYyA9IGlzQ29tcG9uZW50VGFnKHRhZyk7XHJcbiAgICBjb25zdCBpc1Byb3AgPSBmaW5kUHJvcChub2RlLCAnaXMnKTtcclxuICAgIGlmIChpc1Byb3ApIHtcclxuICAgICAgICBpZiAoaXNFeHBsaWNpdER5bmFtaWMgfHxcclxuICAgICAgICAgICAgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cCA9IGlzUHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi9cclxuICAgICAgICAgICAgICAgID8gaXNQcm9wLnZhbHVlICYmIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oaXNQcm9wLnZhbHVlLmNvbnRlbnQsIHRydWUpXHJcbiAgICAgICAgICAgICAgICA6IGlzUHJvcC5leHA7XHJcbiAgICAgICAgICAgIGlmIChleHApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNQcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICBpc1Byb3AudmFsdWUuY29udGVudC5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgLy8gPGJ1dHRvbiBpcz1cInZ1ZTp4eHhcIj5cclxuICAgICAgICAgICAgLy8gaWYgbm90IDxjb21wb25lbnQ+LCBvbmx5IGlzIHZhbHVlIHRoYXQgc3RhcnRzIHdpdGggXCJ2dWU6XCIgd2lsbCBiZVxyXG4gICAgICAgICAgICAvLyB0cmVhdGVkIGFzIGNvbXBvbmVudCBieSB0aGUgcGFyc2UgcGhhc2UgYW5kIHJlYWNoIGhlcmUsIHVubGVzcyBpdCdzXHJcbiAgICAgICAgICAgIC8vIGNvbXBhdCBtb2RlIHdoZXJlIGFsbCBpcyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgY29tcG9uZW50c1xyXG4gICAgICAgICAgICB0YWcgPSBpc1Byb3AudmFsdWUuY29udGVudC5zbGljZSg0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAxLjUgdi1pcyAoVE9ETzogRGVwcmVjYXRlKVxyXG4gICAgY29uc3QgaXNEaXIgPSAhaXNFeHBsaWNpdER5bmFtaWMgJiYgZmluZERpcihub2RlLCAnaXMnKTtcclxuICAgIGlmIChpc0RpciAmJiBpc0Rpci5leHApIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcclxuICAgICAgICAgICAgaXNEaXIuZXhwXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBidWlsdC1pbiBjb21wb25lbnRzIChUZWxlcG9ydCwgVHJhbnNpdGlvbiwgS2VlcEFsaXZlLCBTdXNwZW5zZS4uLilcclxuICAgIGNvbnN0IGJ1aWx0SW4gPSBpc0NvcmVDb21wb25lbnQodGFnKSB8fCBjb250ZXh0LmlzQnVpbHRJbkNvbXBvbmVudCh0YWcpO1xyXG4gICAgaWYgKGJ1aWx0SW4pIHtcclxuICAgICAgICAvLyBidWlsdC1pbnMgYXJlIHNpbXBseSBmYWxsdGhyb3VnaHMgLyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZHVyaW5nIHNzclxyXG4gICAgICAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gaW1wb3J0IHRoZWlyIHJ1bnRpbWUgZXF1aXZhbGVudHNcclxuICAgICAgICBpZiAoIXNzcilcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoYnVpbHRJbik7XHJcbiAgICAgICAgcmV0dXJuIGJ1aWx0SW47XHJcbiAgICB9XHJcbiAgICAvLyA1LiB1c2VyIGNvbXBvbmVudCAocmVzb2x2ZSlcclxuICAgIGNvbnRleHQuaGVscGVyKFJFU09MVkVfQ09NUE9ORU5UKTtcclxuICAgIGNvbnRleHQuY29tcG9uZW50cy5hZGQodGFnKTtcclxuICAgIHJldHVybiB0b1ZhbGlkQXNzZXRJZCh0YWcsIGBjb21wb25lbnRgKTtcclxufVxyXG5mdW5jdGlvbiBidWlsZFByb3BzKG5vZGUsIGNvbnRleHQsIHByb3BzID0gbm9kZS5wcm9wcywgaXNDb21wb25lbnQsIGlzRHluYW1pY0NvbXBvbmVudCwgc3NyID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgdGFnLCBsb2M6IGVsZW1lbnRMb2MsIGNoaWxkcmVuIH0gPSBub2RlO1xyXG4gICAgbGV0IHByb3BlcnRpZXMgPSBbXTtcclxuICAgIGNvbnN0IG1lcmdlQXJncyA9IFtdO1xyXG4gICAgY29uc3QgcnVudGltZURpcmVjdGl2ZXMgPSBbXTtcclxuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoID4gMDtcclxuICAgIGxldCBzaG91bGRVc2VCbG9jayA9IGZhbHNlO1xyXG4gICAgLy8gcGF0Y2hGbGFnIGFuYWx5c2lzXHJcbiAgICBsZXQgcGF0Y2hGbGFnID0gMDtcclxuICAgIGxldCBoYXNSZWYgPSBmYWxzZTtcclxuICAgIGxldCBoYXNDbGFzc0JpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNTdHlsZUJpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNEeW5hbWljS2V5cyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc1Zub2RlSG9vayA9IGZhbHNlO1xyXG4gICAgY29uc3QgZHluYW1pY1Byb3BOYW1lcyA9IFtdO1xyXG4gICAgY29uc3QgYW5hbHl6ZVBhdGNoRmxhZyA9ICh7IGtleSwgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBrZXkuY29udGVudDtcclxuICAgICAgICAgICAgY29uc3QgaXNFdmVudEhhbmRsZXIgPSBpc09uKG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNFdmVudEhhbmRsZXIgJiZcclxuICAgICAgICAgICAgICAgICghaXNDb21wb25lbnQgfHwgaXNEeW5hbWljQ29tcG9uZW50KSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCB0aGUgZmxhZyBmb3IgY2xpY2sgaGFuZGxlcnMgYmVjYXVzZSBoeWRyYXRpb24gZ2l2ZXMgY2xpY2tcclxuICAgICAgICAgICAgICAgIC8vIGRlZGljYXRlZCBmYXN0IHBhdGguXHJcbiAgICAgICAgICAgICAgICBuYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdvbmNsaWNrJyAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCB2LW1vZGVsIGhhbmRsZXJzXHJcbiAgICAgICAgICAgICAgICBuYW1lICE9PSAnb25VcGRhdGU6bW9kZWxWYWx1ZScgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgb25Wbm9kZVhYWCBob29rc1xyXG4gICAgICAgICAgICAgICAgIWlzUmVzZXJ2ZWRQcm9wKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJiBpc1Jlc2VydmVkUHJvcChuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzVm5vZGVIb29rID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICgodmFsdWUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCkgPiAwKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBpZiB0aGUgcHJvcCBpcyBhIGNhY2hlZCBoYW5kbGVyIG9yIGhhcyBjb25zdGFudCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAncmVmJykge1xyXG4gICAgICAgICAgICAgICAgaGFzUmVmID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNDbGFzc0JpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgIGhhc1N0eWxlQmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSAhPT0gJ2tleScgJiYgIWR5bmFtaWNQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMucHVzaChuYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0cmVhdCB0aGUgZHluYW1pYyBjbGFzcyBhbmQgc3R5bGUgYmluZGluZyBvZiB0aGUgY29tcG9uZW50IGFzIGR5bmFtaWMgcHJvcHNcclxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAobmFtZSA9PT0gJ2NsYXNzJyB8fCBuYW1lID09PSAnc3R5bGUnKSAmJlxyXG4gICAgICAgICAgICAgICAgIWR5bmFtaWNQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMucHVzaChuYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY0tleXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gc3RhdGljIGF0dHJpYnV0ZVxyXG4gICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1tpXTtcclxuICAgICAgICBpZiAocHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBsb2MsIG5hbWUsIHZhbHVlIH0gPSBwcm9wO1xyXG4gICAgICAgICAgICBsZXQgaXNTdGF0aWMgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3JlZicpIHtcclxuICAgICAgICAgICAgICAgIGhhc1JlZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5zY29wZXMudkZvciA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigncmVmX2ZvcicsIHRydWUpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCd0cnVlJykpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIGlzIG9uIDxjb21wb25lbnQ+LCBvciBpcz1cInZ1ZTp4eHhcIlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lzJyAmJlxyXG4gICAgICAgICAgICAgICAgKGlzQ29tcG9uZW50VGFnKHRhZykgfHxcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWUgJiYgdmFsdWUuY29udGVudC5zdGFydHNXaXRoKCd2dWU6JykpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCkpKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24obmFtZSwgdHJ1ZSwgZ2V0SW5uZXJSYW5nZShsb2MsIDAsIG5hbWUubGVuZ3RoKSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24odmFsdWUgPyB2YWx1ZS5jb250ZW50IDogJycsIGlzU3RhdGljLCB2YWx1ZSA/IHZhbHVlLmxvYyA6IGxvYykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgY29uc3QgeyBuYW1lLCBhcmcsIGV4cCwgbG9jIH0gPSBwcm9wO1xyXG4gICAgICAgICAgICBjb25zdCBpc1ZCaW5kID0gbmFtZSA9PT0gJ2JpbmQnO1xyXG4gICAgICAgICAgICBjb25zdCBpc1ZPbiA9IG5hbWUgPT09ICdvbic7XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1zbG90IC0gaXQgaXMgaGFuZGxlZCBieSBpdHMgZGVkaWNhdGVkIHRyYW5zZm9ybS5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdzbG90Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQwIC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlTUExBQ0VEICovLCBsb2MpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1vbmNlL3YtbWVtbyAtIHRoZXkgYXJlIGhhbmRsZWQgYnkgZGVkaWNhdGVkIHRyYW5zZm9ybXMuXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnb25jZScgfHwgbmFtZSA9PT0gJ21lbW8nKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIHYtaXMgYW5kIDppcyBvbiA8Y29tcG9uZW50PlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lzJyB8fFxyXG4gICAgICAgICAgICAgICAgKGlzVkJpbmQgJiZcclxuICAgICAgICAgICAgICAgICAgICBpc1N0YXRpY0FyZ09mKGFyZywgJ2lzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaXNDb21wb25lbnRUYWcodGFnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LW9uIGluIFNTUiBjb21waWxhdGlvblxyXG4gICAgICAgICAgICBpZiAoaXNWT24gJiYgc3NyKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIC8vICM5Mzg6IGVsZW1lbnRzIHdpdGggZHluYW1pYyBrZXlzIHNob3VsZCBiZSBmb3JjZWQgaW50byBibG9ja3NcclxuICAgICAgICAgICAgKGlzVkJpbmQgJiYgaXNTdGF0aWNBcmdPZihhcmcsICdrZXknKSkgfHxcclxuICAgICAgICAgICAgICAgIC8vIGlubGluZSBiZWZvcmUtdXBkYXRlIGhvb2tzIG5lZWQgdG8gZm9yY2UgYmxvY2sgc28gdGhhdCBpdCBpcyBpbnZva2VkXHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmUgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIChpc1ZPbiAmJiBoYXNDaGlsZHJlbiAmJiBpc1N0YXRpY0FyZ09mKGFyZywgJ3Z1ZTpiZWZvcmUtdXBkYXRlJykpKSB7XHJcbiAgICAgICAgICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzVkJpbmQgJiYgaXNTdGF0aWNBcmdPZihhcmcsICdyZWYnKSAmJiBjb250ZXh0LnNjb3Blcy52Rm9yID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3JlZl9mb3InLCB0cnVlKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigndHJ1ZScpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB2LWJpbmQgYW5kIHYtb24gd2l0aCBubyBhcmd1bWVudFxyXG4gICAgICAgICAgICBpZiAoIWFyZyAmJiAoaXNWQmluZCB8fCBpc1ZPbikpIHtcclxuICAgICAgICAgICAgICAgIGhhc0R5bmFtaWNLZXlzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChleHApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVkJpbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMi54IHYtYmluZCBvYmplY3Qgb3JkZXIgY29tcGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzT3ZlcnJpZGFibGVLZXlzID0gbWVyZ2VBcmdzLnNvbWUoYXJnID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZy50eXBlID09PSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmcucHJvcGVydGllcy5zb21lKCh7IGtleSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleS50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAha2V5LmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGtleS5jb250ZW50ICE9PSAnY2xhc3MnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5jb250ZW50ICE9PSAnc3R5bGUnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc09uKGtleS5jb250ZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR5bmFtaWMgZXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3ZlcnJpZGFibGVLZXlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiAqLywgY29udGV4dCwgbG9jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovLCBjb250ZXh0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy51bnNoaWZ0KGV4cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goZXhwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtb249XCJvYmpcIiAtPiB0b0hhbmRsZXJzKG9iailcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZTogY29udGV4dC5oZWxwZXIoVE9fSEFORExFUlMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzOiBpc0NvbXBvbmVudCA/IFtleHBdIDogW2V4cCwgYHRydWVgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihpc1ZCaW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMzQgLyogRXJyb3JDb2Rlcy5YX1ZfQklORF9OT19FWFBSRVNTSU9OICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMzUgLyogRXJyb3JDb2Rlcy5YX1ZfT05fTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVUcmFuc2Zvcm0gPSBjb250ZXh0LmRpcmVjdGl2ZVRyYW5zZm9ybXNbbmFtZV07XHJcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmVUcmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIC8vIGhhcyBidWlsdC1pbiBkaXJlY3RpdmUgdHJhbnNmb3JtLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwcm9wcywgbmVlZFJ1bnRpbWUgfSA9IGRpcmVjdGl2ZVRyYW5zZm9ybShwcm9wLCBub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICFzc3IgJiYgcHJvcHMuZm9yRWFjaChhbmFseXplUGF0Y2hGbGFnKTtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaCguLi5wcm9wcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmVlZFJ1bnRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBydW50aW1lRGlyZWN0aXZlcy5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N5bWJvbChuZWVkUnVudGltZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlSW1wb3J0TWFwLnNldChwcm9wLCBuZWVkUnVudGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0J1aWx0SW5EaXJlY3RpdmUobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vIGJ1aWx0LWluIHRyYW5zZm9ybSwgdGhpcyBpcyBhIHVzZXIgY3VzdG9tIGRpcmVjdGl2ZS5cclxuICAgICAgICAgICAgICAgIHJ1bnRpbWVEaXJlY3RpdmVzLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXN0b20gZGlycyBtYXkgdXNlIGJlZm9yZVVwZGF0ZSBzbyB0aGV5IG5lZWQgdG8gZm9yY2UgYmxvY2tzXHJcbiAgICAgICAgICAgICAgICAvLyB0byBlbnN1cmUgYmVmb3JlLXVwZGF0ZSBnZXRzIGNhbGxlZCBiZWZvcmUgY2hpbGRyZW4gdXBkYXRlXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvcHNFeHByZXNzaW9uID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gaGFzIHYtYmluZD1cIm9iamVjdFwiIG9yIHYtb249XCJvYmplY3RcIiwgd3JhcCB3aXRoIG1lcmdlUHJvcHNcclxuICAgIGlmIChtZXJnZUFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSwgZWxlbWVudExvYykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWVyZ2VBcmdzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBtZXJnZUFyZ3MsIGVsZW1lbnRMb2MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gc2luZ2xlIHYtYmluZCB3aXRoIG5vdGhpbmcgZWxzZSAtIG5vIG5lZWQgZm9yIGEgbWVyZ2VQcm9wcyBjYWxsXHJcbiAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IG1lcmdlQXJnc1swXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSwgZWxlbWVudExvYyk7XHJcbiAgICB9XHJcbiAgICAvLyBwYXRjaEZsYWcgYW5hbHlzaXNcclxuICAgIGlmIChoYXNEeW5hbWljS2V5cykge1xyXG4gICAgICAgIHBhdGNoRmxhZyB8PSAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi87XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoaGFzQ2xhc3NCaW5kaW5nICYmICFpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gMiAvKiBQYXRjaEZsYWdzLkNMQVNTICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFzU3R5bGVCaW5kaW5nICYmICFpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gNCAvKiBQYXRjaEZsYWdzLlNUWUxFICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZHluYW1pY1Byb3BOYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZykge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3VsZFVzZUJsb2NrICYmXHJcbiAgICAgICAgKHBhdGNoRmxhZyA9PT0gMCB8fCBwYXRjaEZsYWcgPT09IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi8pICYmXHJcbiAgICAgICAgKGhhc1JlZiB8fCBoYXNWbm9kZUhvb2sgfHwgcnVudGltZURpcmVjdGl2ZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICBwYXRjaEZsYWcgfD0gNTEyIC8qIFBhdGNoRmxhZ3MuTkVFRF9QQVRDSCAqLztcclxuICAgIH1cclxuICAgIC8vIHByZS1ub3JtYWxpemUgcHJvcHMsIFNTUiBpcyBza2lwcGVkIGZvciBub3dcclxuICAgIGlmICghY29udGV4dC5pblNTUiAmJiBwcm9wc0V4cHJlc3Npb24pIHtcclxuICAgICAgICBzd2l0Y2ggKHByb3BzRXhwcmVzc2lvbi50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGVyZSBpcyBubyB2LWJpbmQsXHJcbiAgICAgICAgICAgICAgICAvLyBidXQgc3RpbGwgbmVlZCB0byBkZWFsIHdpdGggZHluYW1pYyBrZXkgYmluZGluZ1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsYXNzS2V5SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIGxldCBzdHlsZUtleUluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzRHluYW1pY0tleSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzW2ldLmtleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdGF0aWNFeHAoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmNvbnRlbnQgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzS2V5SW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleS5jb250ZW50ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUtleUluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgha2V5LmlzSGFuZGxlcktleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNEeW5hbWljS2V5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFzc1Byb3AgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tjbGFzc0tleUluZGV4XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlUHJvcCA9IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzW3N0eWxlS2V5SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgLy8gbm8gZHluYW1pYyBrZXlcclxuICAgICAgICAgICAgICAgIGlmICghaGFzRHluYW1pY0tleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc1Byb3AgJiYgIWlzU3RhdGljRXhwKGNsYXNzUHJvcC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NQcm9wLnZhbHVlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX0NMQVNTKSwgW2NsYXNzUHJvcC52YWx1ZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVQcm9wICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzdGF0aWMgc3R5bGUgaXMgY29tcGlsZWQgaW50byBhbiBvYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHVzZSBgaGFzU3R5bGVCaW5kaW5nYCB0byBlbnN1cmUgdGhhdCBpdCBpcyBhIGR5bmFtaWMgc3R5bGUgYmluZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaGFzU3R5bGVCaW5kaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGVQcm9wLnZhbHVlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVQcm9wLnZhbHVlLmNvbnRlbnQudHJpbSgpWzBdID09PSBgW2ApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2LWJpbmQ6c3R5bGUgYW5kIHN0eWxlIGJvdGggZXhpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2LWJpbmQ6c3R5bGUgd2l0aCBzdGF0aWMgbGl0ZXJhbCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUHJvcC52YWx1ZS50eXBlID09PSAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVQcm9wLnZhbHVlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1NUWUxFKSwgW3N0eWxlUHJvcC52YWx1ZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGR5bmFtaWMga2V5IGJpbmRpbmcsIHdyYXAgd2l0aCBgbm9ybWFsaXplUHJvcHNgXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSwgW3Byb3BzRXhwcmVzc2lvbl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgICAgIC8vIG1lcmdlUHJvcHMgY2FsbCwgZG8gbm90aGluZ1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAvLyBzaW5nbGUgdi1iaW5kXHJcbiAgICAgICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoR1VBUkRfUkVBQ1RJVkVfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IHByb3BzRXhwcmVzc2lvbixcclxuICAgICAgICBkaXJlY3RpdmVzOiBydW50aW1lRGlyZWN0aXZlcyxcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BOYW1lcyxcclxuICAgICAgICBzaG91bGRVc2VCbG9ja1xyXG4gICAgfTtcclxufVxyXG4vLyBEZWR1cGUgcHJvcHMgaW4gYW4gb2JqZWN0IGxpdGVyYWwuXHJcbi8vIExpdGVyYWwgZHVwbGljYXRlZCBhdHRyaWJ1dGVzIHdvdWxkIGhhdmUgYmVlbiB3YXJuZWQgZHVyaW5nIHRoZSBwYXJzZSBwaGFzZSxcclxuLy8gaG93ZXZlciwgaXQncyBwb3NzaWJsZSB0byBlbmNvdW50ZXIgZHVwbGljYXRlZCBgb25YWFhgIGhhbmRsZXJzIHdpdGggZGlmZmVyZW50XHJcbi8vIG1vZGlmaWVycy4gV2UgYWxzbyBuZWVkIHRvIG1lcmdlIHN0YXRpYyBhbmQgZHluYW1pYyBjbGFzcyAvIHN0eWxlIGF0dHJpYnV0ZXMuXHJcbi8vIC0gb25YWFggaGFuZGxlcnMgLyBzdHlsZTogbWVyZ2UgaW50byBhcnJheVxyXG4vLyAtIGNsYXNzOiBtZXJnZSBpbnRvIHNpbmdsZSBleHByZXNzaW9uIHdpdGggY29uY2F0ZW5hdGlvblxyXG5mdW5jdGlvbiBkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcclxuICAgIGNvbnN0IGtub3duUHJvcHMgPSBuZXcgTWFwKCk7XHJcbiAgICBjb25zdCBkZWR1cGVkID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwcm9wID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAvLyBkeW5hbWljIGtleXMgYXJlIGFsd2F5cyBhbGxvd2VkXHJcbiAgICAgICAgaWYgKHByb3Aua2V5LnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8gfHwgIXByb3Aua2V5LmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgIGRlZHVwZWQucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0ga25vd25Qcm9wcy5nZXQobmFtZSk7XHJcbiAgICAgICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnc3R5bGUnIHx8IG5hbWUgPT09ICdjbGFzcycgfHwgaXNPbihuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgbWVyZ2VBc0FycmF5KGV4aXN0aW5nLCBwcm9wKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB1bmV4cGVjdGVkIGR1cGxpY2F0ZSwgc2hvdWxkIGhhdmUgZW1pdHRlZCBlcnJvciBkdXJpbmcgcGFyc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGtub3duUHJvcHMuc2V0KG5hbWUsIHByb3ApO1xyXG4gICAgICAgICAgICBkZWR1cGVkLnB1c2gocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlZHVwZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VBc0FycmF5KGV4aXN0aW5nLCBpbmNvbWluZykge1xyXG4gICAgaWYgKGV4aXN0aW5nLnZhbHVlLnR5cGUgPT09IDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgZXhpc3RpbmcudmFsdWUuZWxlbWVudHMucHVzaChpbmNvbWluZy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBleGlzdGluZy52YWx1ZSA9IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihbZXhpc3RpbmcudmFsdWUsIGluY29taW5nLnZhbHVlXSwgZXhpc3RpbmcubG9jKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBidWlsZERpcmVjdGl2ZUFyZ3MoZGlyLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBkaXJBcmdzID0gW107XHJcbiAgICBjb25zdCBydW50aW1lID0gZGlyZWN0aXZlSW1wb3J0TWFwLmdldChkaXIpO1xyXG4gICAgaWYgKHJ1bnRpbWUpIHtcclxuICAgICAgICAvLyBidWlsdC1pbiBkaXJlY3RpdmUgd2l0aCBydW50aW1lXHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGNvbnRleHQuaGVscGVyU3RyaW5nKHJ1bnRpbWUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gaW5qZWN0IHN0YXRlbWVudCBmb3IgcmVzb2x2aW5nIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0RJUkVDVElWRSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZGlyZWN0aXZlcy5hZGQoZGlyLm5hbWUpO1xyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2godG9WYWxpZEFzc2V0SWQoZGlyLm5hbWUsIGBkaXJlY3RpdmVgKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgeyBsb2MgfSA9IGRpcjtcclxuICAgIGlmIChkaXIuZXhwKVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChkaXIuZXhwKTtcclxuICAgIGlmIChkaXIuYXJnKSB7XHJcbiAgICAgICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChkaXIuYXJnKTtcclxuICAgIH1cclxuICAgIGlmIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzKS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoIWRpci5hcmcpIHtcclxuICAgICAgICAgICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRydWVFeHByZXNzaW9uID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdHJ1ZWAsIGZhbHNlLCBsb2MpO1xyXG4gICAgICAgIGRpckFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRpci5tb2RpZmllcnMubWFwKG1vZGlmaWVyID0+IGNyZWF0ZU9iamVjdFByb3BlcnR5KG1vZGlmaWVyLCB0cnVlRXhwcmVzc2lvbikpLCBsb2MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZGlyQXJncywgZGlyLmxvYyk7XHJcbn1cclxuZnVuY3Rpb24gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhwcm9wcykge1xyXG4gICAgbGV0IHByb3BzTmFtZXNTdHJpbmcgPSBgW2A7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHByb3BzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIHByb3BzTmFtZXNTdHJpbmcgKz0gSlNPTi5zdHJpbmdpZnkocHJvcHNbaV0pO1xyXG4gICAgICAgIGlmIChpIDwgbCAtIDEpXHJcbiAgICAgICAgICAgIHByb3BzTmFtZXNTdHJpbmcgKz0gJywgJztcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wc05hbWVzU3RyaW5nICsgYF1gO1xyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcG9uZW50VGFnKHRhZykge1xyXG4gICAgcmV0dXJuIHRhZyA9PT0gJ2NvbXBvbmVudCcgfHwgdGFnID09PSAnQ29tcG9uZW50JztcclxufVxuXG4ocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgID8gT2JqZWN0LmZyZWV6ZSh7fSlcclxuICAgIDoge307XHJcbihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IE9iamVjdC5mcmVlemUoW10pIDogW107XHJcbmNvbnN0IGNhY2hlU3RyaW5nRnVuY3Rpb24gPSAoZm4pID0+IHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAoKHN0cikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhpdCA9IGNhY2hlW3N0cl07XHJcbiAgICAgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCAoXywgYykgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xyXG59KTtcblxuY29uc3QgdHJhbnNmb3JtU2xvdE91dGxldCA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAoaXNTbG90T3V0bGV0KG5vZGUpKSB7XHJcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgbG9jIH0gPSBub2RlO1xyXG4gICAgICAgIGNvbnN0IHsgc2xvdE5hbWUsIHNsb3RQcm9wcyB9ID0gcHJvY2Vzc1Nsb3RPdXRsZXQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgY29uc3Qgc2xvdEFyZ3MgPSBbXHJcbiAgICAgICAgICAgIGNvbnRleHQucHJlZml4SWRlbnRpZmllcnMgPyBgX2N0eC4kc2xvdHNgIDogYCRzbG90c2AsXHJcbiAgICAgICAgICAgIHNsb3ROYW1lLFxyXG4gICAgICAgICAgICAne30nLFxyXG4gICAgICAgICAgICAndW5kZWZpbmVkJyxcclxuICAgICAgICAgICAgJ3RydWUnXHJcbiAgICAgICAgXTtcclxuICAgICAgICBsZXQgZXhwZWN0ZWRMZW4gPSAyO1xyXG4gICAgICAgIGlmIChzbG90UHJvcHMpIHtcclxuICAgICAgICAgICAgc2xvdEFyZ3NbMl0gPSBzbG90UHJvcHM7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gMztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzbG90QXJnc1szXSA9IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihbXSwgY2hpbGRyZW4sIGZhbHNlLCBmYWxzZSwgbG9jKTtcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSA0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29udGV4dC5zY29wZUlkICYmICFjb250ZXh0LnNsb3R0ZWQpIHtcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSA1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzbG90QXJncy5zcGxpY2UoZXhwZWN0ZWRMZW4pOyAvLyByZW1vdmUgdW51c2VkIGFyZ3VtZW50c1xyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRU5ERVJfU0xPVCksIHNsb3RBcmdzLCBsb2MpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBwcm9jZXNzU2xvdE91dGxldChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgc2xvdE5hbWUgPSBgXCJkZWZhdWx0XCJgO1xyXG4gICAgbGV0IHNsb3RQcm9wcyA9IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IG5vbk5hbWVQcm9wcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5uYW1lID09PSAnbmFtZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBzbG90TmFtZSA9IEpTT04uc3RyaW5naWZ5KHAudmFsdWUuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwLm5hbWUgPSBjYW1lbGl6ZShwLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbk5hbWVQcm9wcy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSAnYmluZCcgJiYgaXNTdGF0aWNBcmdPZihwLmFyZywgJ25hbWUnKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAuZXhwKVxyXG4gICAgICAgICAgICAgICAgICAgIHNsb3ROYW1lID0gcC5leHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5uYW1lID09PSAnYmluZCcgJiYgcC5hcmcgJiYgaXNTdGF0aWNFeHAocC5hcmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5hcmcuY29udGVudCA9IGNhbWVsaXplKHAuYXJnLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbm9uTmFtZVByb3BzLnB1c2gocCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobm9uTmFtZVByb3BzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCB7IHByb3BzLCBkaXJlY3RpdmVzIH0gPSBidWlsZFByb3BzKG5vZGUsIGNvbnRleHQsIG5vbk5hbWVQcm9wcywgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICBzbG90UHJvcHMgPSBwcm9wcztcclxuICAgICAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzYgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9VTkVYUEVDVEVEX0RJUkVDVElWRV9PTl9TTE9UX09VVExFVCAqLywgZGlyZWN0aXZlc1swXS5sb2MpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNsb3ROYW1lLFxyXG4gICAgICAgIHNsb3RQcm9wc1xyXG4gICAgfTtcclxufVxuXG5jb25zdCBmbkV4cFJFID0gL15cXHMqKFtcXHckX10rfChhc3luY1xccyopP1xcKFteKV0qP1xcKSlcXHMqPT58XlxccyooYXN5bmNcXHMrKT9mdW5jdGlvbig/OlxccytbXFx3JF0rKT9cXHMqXFwoLztcclxuY29uc3QgdHJhbnNmb3JtT24gPSAoZGlyLCBub2RlLCBjb250ZXh0LCBhdWdtZW50b3IpID0+IHtcclxuICAgIGNvbnN0IHsgbG9jLCBtb2RpZmllcnMsIGFyZyB9ID0gZGlyO1xyXG4gICAgaWYgKCFkaXIuZXhwICYmICFtb2RpZmllcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzUgLyogRXJyb3JDb2Rlcy5YX1ZfT05fTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgZXZlbnROYW1lO1xyXG4gICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgbGV0IHJhd05hbWUgPSBhcmcuY29udGVudDtcclxuICAgICAgICAgICAgLy8gVE9ETyBkZXByZWNhdGUgQHZub2RlWFhYIHVzYWdlXHJcbiAgICAgICAgICAgIGlmIChyYXdOYW1lLnN0YXJ0c1dpdGgoJ3Z1ZTonKSkge1xyXG4gICAgICAgICAgICAgICAgcmF3TmFtZSA9IGB2bm9kZS0ke3Jhd05hbWUuc2xpY2UoNCl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBldmVudFN0cmluZyA9IG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICByYXdOYW1lLnN0YXJ0c1dpdGgoJ3Zub2RlJykgfHxcclxuICAgICAgICAgICAgICAgICEvW0EtWl0vLnRlc3QocmF3TmFtZSlcclxuICAgICAgICAgICAgICAgID8gLy8gZm9yIGNvbXBvbmVudCBhbmQgdm5vZGUgbGlmZWN5Y2xlIGV2ZW50IGxpc3RlbmVycywgYXV0byBjb252ZXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gY2FtZWxDYXNlLiBTZWUgaXNzdWUgIzIyNDlcclxuICAgICAgICAgICAgICAgICAgICB0b0hhbmRsZXJLZXkoY2FtZWxpemUkMShyYXdOYW1lKSlcclxuICAgICAgICAgICAgICAgIC8vIHByZXNlcnZlIGNhc2UgZm9yIHBsYWluIGVsZW1lbnQgbGlzdGVuZXJzIHRoYXQgaGF2ZSB1cHBlcmNhc2VcclxuICAgICAgICAgICAgICAgIC8vIGxldHRlcnMsIGFzIHRoZXNlIG1heSBiZSBjdXN0b20gZWxlbWVudHMnIGN1c3RvbSBldmVudHNcclxuICAgICAgICAgICAgICAgIDogYG9uOiR7cmF3TmFtZX1gO1xyXG4gICAgICAgICAgICBldmVudE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV2ZW50U3RyaW5nLCB0cnVlLCBhcmcubG9jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vICMyMzg4XHJcbiAgICAgICAgICAgIGV2ZW50TmFtZSA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgICAgICBgJHtjb250ZXh0LmhlbHBlclN0cmluZyhUT19IQU5ETEVSX0tFWSl9KGAsXHJcbiAgICAgICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgICAgICBgKWBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gYWxyZWFkeSBhIGNvbXBvdW5kIGV4cHJlc3Npb24uXHJcbiAgICAgICAgZXZlbnROYW1lID0gYXJnO1xyXG4gICAgICAgIGV2ZW50TmFtZS5jaGlsZHJlbi51bnNoaWZ0KGAke2NvbnRleHQuaGVscGVyU3RyaW5nKFRPX0hBTkRMRVJfS0VZKX0oYCk7XHJcbiAgICAgICAgZXZlbnROYW1lLmNoaWxkcmVuLnB1c2goYClgKTtcclxuICAgIH1cclxuICAgIC8vIGhhbmRsZXIgcHJvY2Vzc2luZ1xyXG4gICAgbGV0IGV4cCA9IGRpci5leHA7XHJcbiAgICBpZiAoZXhwICYmICFleHAuY29udGVudC50cmltKCkpIHtcclxuICAgICAgICBleHAgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvdWxkQ2FjaGUgPSBjb250ZXh0LmNhY2hlSGFuZGxlcnMgJiYgIWV4cCAmJiAhY29udGV4dC5pblZPbmNlO1xyXG4gICAgaWYgKGV4cCkge1xyXG4gICAgICAgIGNvbnN0IGlzTWVtYmVyRXhwID0gaXNNZW1iZXJFeHByZXNzaW9uKGV4cC5jb250ZW50KTtcclxuICAgICAgICBjb25zdCBpc0lubGluZVN0YXRlbWVudCA9ICEoaXNNZW1iZXJFeHAgfHwgZm5FeHBSRS50ZXN0KGV4cC5jb250ZW50KSk7XHJcbiAgICAgICAgY29uc3QgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID0gZXhwLmNvbnRlbnQuaW5jbHVkZXMoYDtgKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihleHAsIGNvbnRleHQsIGZhbHNlLCBoYXNNdWx0aXBsZVN0YXRlbWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNJbmxpbmVTdGF0ZW1lbnQgfHwgKHNob3VsZENhY2hlICYmIGlzTWVtYmVyRXhwKSkge1xyXG4gICAgICAgICAgICAvLyB3cmFwIGlubGluZSBzdGF0ZW1lbnQgaW4gYSBmdW5jdGlvbiBleHByZXNzaW9uXHJcbiAgICAgICAgICAgIGV4cCA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgICAgICBgJHtpc0lubGluZVN0YXRlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgID8gYCRldmVudGBcclxuICAgICAgICAgICAgICAgICAgICA6IGAke2BgfSguLi5hcmdzKWB9ID0+ICR7aGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYHtgIDogYChgfWAsXHJcbiAgICAgICAgICAgICAgICBleHAsXHJcbiAgICAgICAgICAgICAgICBoYXNNdWx0aXBsZVN0YXRlbWVudHMgPyBgfWAgOiBgKWBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHJldCA9IHtcclxuICAgICAgICBwcm9wczogW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShldmVudE5hbWUsIGV4cCB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAoKSA9PiB7fWAsIGZhbHNlLCBsb2MpKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbiAgICAvLyBhcHBseSBleHRlbmRlZCBjb21waWxlciBhdWdtZW50b3JcclxuICAgIGlmIChhdWdtZW50b3IpIHtcclxuICAgICAgICByZXQgPSBhdWdtZW50b3IocmV0KTtcclxuICAgIH1cclxuICAgIGlmIChzaG91bGRDYWNoZSkge1xyXG4gICAgICAgIC8vIGNhY2hlIGhhbmRsZXJzIHNvIHRoYXQgaXQncyBhbHdheXMgdGhlIHNhbWUgaGFuZGxlciBiZWluZyBwYXNzZWQgZG93bi5cclxuICAgICAgICAvLyB0aGlzIGF2b2lkcyB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzIHdoZW4gdXNlcnMgdXNlIGlubGluZSBoYW5kbGVycyBvblxyXG4gICAgICAgIC8vIGNvbXBvbmVudHMuXHJcbiAgICAgICAgcmV0LnByb3BzWzBdLnZhbHVlID0gY29udGV4dC5jYWNoZShyZXQucHJvcHNbMF0udmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gbWFyayB0aGUga2V5IGFzIGhhbmRsZXIgZm9yIHByb3BzIG5vcm1hbGl6YXRpb24gY2hlY2tcclxuICAgIHJldC5wcm9wcy5mb3JFYWNoKHAgPT4gKHAua2V5LmlzSGFuZGxlcktleSA9IHRydWUpKTtcclxuICAgIHJldHVybiByZXQ7XHJcbn07XG5cbi8vIHYtYmluZCB3aXRob3V0IGFyZyBpcyBoYW5kbGVkIGRpcmVjdGx5IGluIC4vdHJhbnNmb3JtRWxlbWVudHMudHMgZHVlIHRvIGl0IGFmZmVjdGluZ1xyXG4vLyBjb2RlZ2VuIGZvciB0aGUgZW50aXJlIHByb3BzIG9iamVjdC4gVGhpcyB0cmFuc2Zvcm0gaGVyZSBpcyBvbmx5IGZvciB2LWJpbmRcclxuLy8gKndpdGgqIGFyZ3MuXHJcbmNvbnN0IHRyYW5zZm9ybUJpbmQgPSAoZGlyLCBfbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIG1vZGlmaWVycywgbG9jIH0gPSBkaXI7XHJcbiAgICBjb25zdCBhcmcgPSBkaXIuYXJnO1xyXG4gICAgaWYgKGFyZy50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAoYCk7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnB1c2goYCkgfHwgXCJcImApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgIGFyZy5jb250ZW50ID0gYCR7YXJnLmNvbnRlbnR9IHx8IFwiXCJgO1xyXG4gICAgfVxyXG4gICAgLy8gLnN5bmMgaXMgcmVwbGFjZWQgYnkgdi1tb2RlbDphcmdcclxuICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ2NhbWVsJykpIHtcclxuICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgIGFyZy5jb250ZW50ID0gY2FtZWxpemUkMShhcmcuY29udGVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhcmcuY29udGVudCA9IGAke2NvbnRleHQuaGVscGVyU3RyaW5nKENBTUVMSVpFKX0oJHthcmcuY29udGVudH0pYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoQ0FNRUxJWkUpfShgKTtcclxuICAgICAgICAgICAgYXJnLmNoaWxkcmVuLnB1c2goYClgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWNvbnRleHQuaW5TU1IpIHtcclxuICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdwcm9wJykpIHtcclxuICAgICAgICAgICAgaW5qZWN0UHJlZml4KGFyZywgJy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygnYXR0cicpKSB7XHJcbiAgICAgICAgICAgIGluamVjdFByZWZpeChhcmcsICdeJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFleHAgfHxcclxuICAgICAgICAoZXhwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmICFleHAuY29udGVudC50cmltKCkpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzQgLyogRXJyb3JDb2Rlcy5YX1ZfQklORF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGFyZywgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSwgbG9jKSldXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcsIGV4cCldXHJcbiAgICB9O1xyXG59O1xyXG5jb25zdCBpbmplY3RQcmVmaXggPSAoYXJnLCBwcmVmaXgpID0+IHtcclxuICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgIGFyZy5jb250ZW50ID0gcHJlZml4ICsgYXJnLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhcmcuY29udGVudCA9IGBcXGAke3ByZWZpeH1cXCR7JHthcmcuY29udGVudH19XFxgYDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgJyR7cHJlZml4fScgKyAoYCk7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnB1c2goYClgKTtcclxuICAgIH1cclxufTtcblxuLy8gTWVyZ2UgYWRqYWNlbnQgdGV4dCBub2RlcyBhbmQgZXhwcmVzc2lvbnMgaW50byBhIHNpbmdsZSBleHByZXNzaW9uXHJcbi8vIGUuZy4gPGRpdj5hYmMge3sgZCB9fSB7eyBlIH19PC9kaXY+IHNob3VsZCBoYXZlIGEgc2luZ2xlIGV4cHJlc3Npb24gbm9kZSBhcyBjaGlsZC5cclxuY29uc3QgdHJhbnNmb3JtVGV4dCA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAwIC8qIE5vZGVUeXBlcy5ST09UICovIHx8XHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovIHx8XHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovIHx8XHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovKSB7XHJcbiAgICAgICAgLy8gcGVyZm9ybSB0aGUgdHJhbnNmb3JtIG9uIG5vZGUgZXhpdCBzbyB0aGF0IGFsbCBleHByZXNzaW9ucyBoYXZlIGFscmVhZHlcclxuICAgICAgICAvLyBiZWVuIHByb2Nlc3NlZC5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBsZXQgaGFzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGV4dChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gY2hpbGRyZW5bal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1RleHQobmV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBjaGlsZHJlbltpXSA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbY2hpbGRdLCBjaGlsZC5sb2MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2RlIGludG8gY3VycmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lci5jaGlsZHJlbi5wdXNoKGAgKyBgLCBuZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGotLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWhhc1RleHQgfHxcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50IHdpdGggYSBzaW5nbGUgdGV4dCBjaGlsZCwgbGVhdmUgaXRcclxuICAgICAgICAgICAgICAgIC8vIGFzLWlzIHNpbmNlIHRoZSBydW50aW1lIGhhcyBkZWRpY2F0ZWQgZmFzdCBwYXRoIGZvciB0aGlzIGJ5IGRpcmVjdGx5XHJcbiAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHRleHRDb250ZW50IG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGNvbXBvbmVudCByb290IGl0J3MgYWx3YXlzIG5vcm1hbGl6ZWQgYW55d2F5LlxyXG4gICAgICAgICAgICAgICAgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChub2RlLnR5cGUgPT09IDAgLyogTm9kZVR5cGVzLlJPT1QgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMzc1NlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tIGRpcmVjdGl2ZXMgY2FuIHBvdGVudGlhbGx5IGFkZCBET00gZWxlbWVudHMgYXJiaXRyYXJpbHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYXQgcnVudGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgYWNjaWRlbnRhbGx5IG92ZXJ3cml0aW5nIHRoZSBET00gZWxlbWVudHMgYWRkZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSB1c2VyIHRocm91Z2ggY3VzdG9tIGRpcmVjdGl2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbm9kZS5wcm9wcy5maW5kKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGV4dC5kaXJlY3RpdmVUcmFuc2Zvcm1zW3AubmFtZV0pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBjb21wYXQgbW9kZSwgPHRlbXBsYXRlPiB0YWdzIHdpdGggbm8gc3BlY2lhbCBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHJlbmRlcmVkIGFzIGEgZnJhZ21lbnQgc28gaXRzIGNoaWxkcmVuIG11c3QgYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnRlZCBpbnRvIHZub2Rlcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEobm9kZS50YWcgPT09ICd0ZW1wbGF0ZScpKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJlLWNvbnZlcnQgdGV4dCBub2RlcyBpbnRvIGNyZWF0ZVRleHRWTm9kZSh0ZXh0KSBjYWxscyB0byBhdm9pZFxyXG4gICAgICAgICAgICAvLyBydW50aW1lIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZXh0KGNoaWxkKSB8fCBjaGlsZC50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FsbEFyZ3MgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGVUZXh0Vk5vZGUgZGVmYXVsdHMgdG8gc2luZ2xlIHdoaXRlc3BhY2UsIHNvIGlmIGl0IGlzIGFcclxuICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgc3BhY2UgdGhlIGNvZGUgY291bGQgYmUgYW4gZW1wdHkgY2FsbCB0byBzYXZlIGJ5dGVzLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlICE9PSAyIC8qIE5vZGVUeXBlcy5URVhUICovIHx8IGNoaWxkLmNvbnRlbnQgIT09ICcgJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQXJncy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBkeW5hbWljIHRleHQgd2l0aCBmbGFnIHNvIGl0IGdldHMgcGF0Y2hlZCBpbnNpZGUgYSBibG9ja1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQXJncy5wdXNoKDEgLyogUGF0Y2hGbGFncy5URVhUICovICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi9dfSAqL2AgOiBgYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogY2hpbGQubG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZTogY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoQ1JFQVRFX1RFWFQpLCBjYWxsQXJncylcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcblxuY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XHJcbmNvbnN0IHRyYW5zZm9ybU9uY2UgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBmaW5kRGlyKG5vZGUsICdvbmNlJywgdHJ1ZSkpIHtcclxuICAgICAgICBpZiAoc2Vlbi5oYXMobm9kZSkgfHwgY29udGV4dC5pblZPbmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2Vlbi5hZGQobm9kZSk7XHJcbiAgICAgICAgY29udGV4dC5pblZPbmNlID0gdHJ1ZTtcclxuICAgICAgICBjb250ZXh0LmhlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5WT25jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBjdXIgPSBjb250ZXh0LmN1cnJlbnROb2RlO1xyXG4gICAgICAgICAgICBpZiAoY3VyLmNvZGVnZW5Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICBjdXIuY29kZWdlbk5vZGUgPSBjb250ZXh0LmNhY2hlKGN1ci5jb2RlZ2VuTm9kZSwgdHJ1ZSAvKiBpc1ZOb2RlICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybU1vZGVsID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGFyZyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MSAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9OT19FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXdFeHAgPSBleHAubG9jLnNvdXJjZTtcclxuICAgIGNvbnN0IGV4cFN0cmluZyA9IGV4cC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyA/IGV4cC5jb250ZW50IDogcmF3RXhwO1xyXG4gICAgLy8gaW0gU0ZDIDxzY3JpcHQgc2V0dXA+IGlubGluZSBtb2RlLCB0aGUgZXhwIG1heSBoYXZlIGJlZW4gdHJhbnNmb3JtZWQgaW50b1xyXG4gICAgLy8gX3VucmVmKGV4cClcclxuICAgIGNvbnRleHQuYmluZGluZ01ldGFkYXRhW3Jhd0V4cF07XHJcbiAgICBjb25zdCBtYXliZVJlZiA9ICF0cnVlICAgIC8qIEJpbmRpbmdUeXBlcy5TRVRVUF9DT05TVCAqLztcclxuICAgIGlmICghZXhwU3RyaW5nLnRyaW0oKSB8fFxyXG4gICAgICAgICghaXNNZW1iZXJFeHByZXNzaW9uKGV4cFN0cmluZykgJiYgIW1heWJlUmVmKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQyIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX01BTEZPUk1FRF9FWFBSRVNTSU9OICovLCBleHAubG9jKSk7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm9wTmFtZSA9IGFyZyA/IGFyZyA6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ21vZGVsVmFsdWUnLCB0cnVlKTtcclxuICAgIGNvbnN0IGV2ZW50TmFtZSA9IGFyZ1xyXG4gICAgICAgID8gaXNTdGF0aWNFeHAoYXJnKVxyXG4gICAgICAgICAgICA/IGBvblVwZGF0ZToke2FyZy5jb250ZW50fWBcclxuICAgICAgICAgICAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oWydcIm9uVXBkYXRlOlwiICsgJywgYXJnXSlcclxuICAgICAgICA6IGBvblVwZGF0ZTptb2RlbFZhbHVlYDtcclxuICAgIGxldCBhc3NpZ25tZW50RXhwO1xyXG4gICAgY29uc3QgZXZlbnRBcmcgPSBjb250ZXh0LmlzVFMgPyBgKCRldmVudDogYW55KWAgOiBgJGV2ZW50YDtcclxuICAgIHtcclxuICAgICAgICBhc3NpZ25tZW50RXhwID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgYCR7ZXZlbnRBcmd9ID0+ICgoYCxcclxuICAgICAgICAgICAgZXhwLFxyXG4gICAgICAgICAgICBgKSA9ICRldmVudClgXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm9wcyA9IFtcclxuICAgICAgICAvLyBtb2RlbFZhbHVlOiBmb29cclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShwcm9wTmFtZSwgZGlyLmV4cCksXHJcbiAgICAgICAgLy8gXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6ICRldmVudCA9PiAoZm9vID0gJGV2ZW50KVxyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGV2ZW50TmFtZSwgYXNzaWdubWVudEV4cClcclxuICAgIF07XHJcbiAgICAvLyBtb2RlbE1vZGlmaWVyczogeyBmb286IHRydWUsIFwiYmFyLWJhelwiOiB0cnVlIH1cclxuICAgIGlmIChkaXIubW9kaWZpZXJzLmxlbmd0aCAmJiBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnNcclxuICAgICAgICAgICAgLm1hcChtID0+IChpc1NpbXBsZUlkZW50aWZpZXIobSkgPyBtIDogSlNPTi5zdHJpbmdpZnkobSkpICsgYDogdHJ1ZWApXHJcbiAgICAgICAgICAgIC5qb2luKGAsIGApO1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyc0tleSA9IGFyZ1xyXG4gICAgICAgICAgICA/IGlzU3RhdGljRXhwKGFyZylcclxuICAgICAgICAgICAgICAgID8gYCR7YXJnLmNvbnRlbnR9TW9kaWZpZXJzYFxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2FyZywgJyArIFwiTW9kaWZpZXJzXCInXSlcclxuICAgICAgICAgICAgOiBgbW9kZWxNb2RpZmllcnNgO1xyXG4gICAgICAgIHByb3BzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkobW9kaWZpZXJzS2V5LCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB7ICR7bW9kaWZpZXJzfSB9YCwgZmFsc2UsIGRpci5sb2MsIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMocHJvcHMpO1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcyhwcm9wcyA9IFtdKSB7XHJcbiAgICByZXR1cm4geyBwcm9wcyB9O1xyXG59XG5cbmNvbnN0IHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxdXS87XHJcbmNvbnN0IHRyYW5zZm9ybUZpbHRlciA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAoIWlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9GSUxURVJTICovLCBjb250ZXh0KSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8pIHtcclxuICAgICAgICAvLyBmaWx0ZXIgcmV3cml0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHByZXNzaW9uIHRyYW5zZm9ybSBzbyBvbmx5XHJcbiAgICAgICAgLy8gc2ltcGxlIGV4cHJlc3Npb25zIGFyZSBwb3NzaWJsZSBhdCB0aGlzIHN0YWdlXHJcbiAgICAgICAgcmV3cml0ZUZpbHRlcihub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIG5vZGUucHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgIHByb3AubmFtZSAhPT0gJ2ZvcicgJiZcclxuICAgICAgICAgICAgICAgIHByb3AuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKHByb3AuZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiByZXdyaXRlRmlsdGVyKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgcGFyc2VGaWx0ZXIobm9kZSwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkICE9PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHBhcnNlRmlsdGVyKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHJld3JpdGVGaWx0ZXIoY2hpbGQuY29udGVudCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VGaWx0ZXIobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgZXhwID0gbm9kZS5jb250ZW50O1xyXG4gICAgbGV0IGluU2luZ2xlID0gZmFsc2U7XHJcbiAgICBsZXQgaW5Eb3VibGUgPSBmYWxzZTtcclxuICAgIGxldCBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaW5SZWdleCA9IGZhbHNlO1xyXG4gICAgbGV0IGN1cmx5ID0gMDtcclxuICAgIGxldCBzcXVhcmUgPSAwO1xyXG4gICAgbGV0IHBhcmVuID0gMDtcclxuICAgIGxldCBsYXN0RmlsdGVySW5kZXggPSAwO1xyXG4gICAgbGV0IGMsIHByZXYsIGksIGV4cHJlc3Npb24sIGZpbHRlcnMgPSBbXTtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwcmV2ID0gYztcclxuICAgICAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgaWYgKGluU2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDI3ICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpblNpbmdsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbkRvdWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5Eb3VibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5UZW1wbGF0ZVN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHg2MCAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpblJlZ2V4KSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDJmICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpblJlZ2V4ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGMgPT09IDB4N2MgJiYgLy8gcGlwZVxyXG4gICAgICAgICAgICBleHAuY2hhckNvZGVBdChpICsgMSkgIT09IDB4N2MgJiZcclxuICAgICAgICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdjICYmXHJcbiAgICAgICAgICAgICFjdXJseSAmJlxyXG4gICAgICAgICAgICAhc3F1YXJlICYmXHJcbiAgICAgICAgICAgICFwYXJlbikge1xyXG4gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmaXJzdCBmaWx0ZXIsIGVuZCBvZiBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcclxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcHVzaEZpbHRlcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGMpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyMjpcclxuICAgICAgICAgICAgICAgICAgICBpbkRvdWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFwiXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4Mjc6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5TaW5nbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAnXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4NjA6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGBcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyODpcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbisrO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAoXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4Mjk6XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW4tLTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gKVxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDViOlxyXG4gICAgICAgICAgICAgICAgICAgIHNxdWFyZSsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBbXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4NWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgc3F1YXJlLS07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIF1cclxuICAgICAgICAgICAgICAgIGNhc2UgMHg3YjpcclxuICAgICAgICAgICAgICAgICAgICBjdXJseSsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4N2Q6XHJcbiAgICAgICAgICAgICAgICAgICAgY3VybHktLTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDJmKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAvXHJcbiAgICAgICAgICAgICAgICBsZXQgaiA9IGkgLSAxO1xyXG4gICAgICAgICAgICAgICAgbGV0IHA7XHJcbiAgICAgICAgICAgICAgICAvLyBmaW5kIGZpcnN0IG5vbi13aGl0ZXNwYWNlIHByZXYgY2hhclxyXG4gICAgICAgICAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT09ICcgJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXAgfHwgIXZhbGlkRGl2aXNpb25DaGFyUkUudGVzdChwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluUmVnZXggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFzdEZpbHRlckluZGV4ICE9PSAwKSB7XHJcbiAgICAgICAgcHVzaEZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcHVzaEZpbHRlcigpIHtcclxuICAgICAgICBmaWx0ZXJzLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwgaSkudHJpbSgpKTtcclxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcclxuICAgIH1cclxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfRklMVEVSUyAqLywgY29udGV4dCwgbm9kZS5sb2MpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGV4cHJlc3Npb24gPSB3cmFwRmlsdGVyKGV4cHJlc3Npb24sIGZpbHRlcnNbaV0sIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmNvbnRlbnQgPSBleHByZXNzaW9uO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHdyYXBGaWx0ZXIoZXhwLCBmaWx0ZXIsIGNvbnRleHQpIHtcclxuICAgIGNvbnRleHQuaGVscGVyKFJFU09MVkVfRklMVEVSKTtcclxuICAgIGNvbnN0IGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xyXG4gICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgY29udGV4dC5maWx0ZXJzLmFkZChmaWx0ZXIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0b1ZhbGlkQXNzZXRJZChmaWx0ZXIsICdmaWx0ZXInKX0oJHtleHB9KWA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xyXG4gICAgICAgIGNvbnN0IGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycy5hZGQobmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RvVmFsaWRBc3NldElkKG5hbWUsICdmaWx0ZXInKX0oJHtleHB9JHthcmdzICE9PSAnKScgPyAnLCcgKyBhcmdzIDogYXJnc31gO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHNlZW4kMSA9IG5ldyBXZWFrU2V0KCk7XHJcbmNvbnN0IHRyYW5zZm9ybU1lbW8gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IGRpciA9IGZpbmREaXIobm9kZSwgJ21lbW8nKTtcclxuICAgICAgICBpZiAoIWRpciB8fCBzZWVuJDEuaGFzKG5vZGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VlbiQxLmFkZChub2RlKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGUgfHxcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZSAmJiBjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gbm9uLWNvbXBvbmVudCBzdWIgdHJlZSBzaG91bGQgYmUgdHVybmVkIGludG8gYSBibG9ja1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUudGFnVHlwZSAhPT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFrZUJsb2NrKGNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihXSVRIX01FTU8pLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLmV4cCxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odW5kZWZpbmVkLCBjb2RlZ2VuTm9kZSksXHJcbiAgICAgICAgICAgICAgICAgICAgYF9jYWNoZWAsXHJcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKGNvbnRleHQuY2FjaGVkKyspXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XG5cbmZ1bmN0aW9uIGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQocHJlZml4SWRlbnRpZmllcnMpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm1PbmNlLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1JZixcclxuICAgICAgICAgICAgdHJhbnNmb3JtTWVtbyxcclxuICAgICAgICAgICAgdHJhbnNmb3JtRm9yLFxyXG4gICAgICAgICAgICAuLi4oW3RyYW5zZm9ybUZpbHRlcl0gKSxcclxuICAgICAgICAgICAgLi4uKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgID8gW3RyYW5zZm9ybUV4cHJlc3Npb25dXHJcbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVNsb3RPdXRsZXQsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUVsZW1lbnQsXHJcbiAgICAgICAgICAgIHRyYWNrU2xvdFNjb3BlcyxcclxuICAgICAgICAgICAgdHJhbnNmb3JtVGV4dFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBvbjogdHJhbnNmb3JtT24sXHJcbiAgICAgICAgICAgIGJpbmQ6IHRyYW5zZm9ybUJpbmQsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0cmFuc2Zvcm1Nb2RlbFxyXG4gICAgICAgIH1cclxuICAgIF07XHJcbn1cclxuLy8gd2UgbmFtZSBpdCBgYmFzZUNvbXBpbGVgIHNvIHRoYXQgaGlnaGVyIG9yZGVyIGNvbXBpbGVycyBsaWtlXHJcbi8vIEB2dWUvY29tcGlsZXItZG9tIGNhbiBleHBvcnQgYGNvbXBpbGVgIHdoaWxlIHJlLWV4cG9ydGluZyBldmVyeXRoaW5nIGVsc2UuXHJcbmZ1bmN0aW9uIGJhc2VDb21waWxlKHRlbXBsYXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IG9uRXJyb3IgPSBvcHRpb25zLm9uRXJyb3IgfHwgZGVmYXVsdE9uRXJyb3I7XHJcbiAgICBjb25zdCBpc01vZHVsZU1vZGUgPSBvcHRpb25zLm1vZGUgPT09ICdtb2R1bGUnO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMucHJlZml4SWRlbnRpZmllcnMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ2IC8qIEVycm9yQ29kZXMuWF9QUkVGSVhfSURfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc01vZHVsZU1vZGUpIHtcclxuICAgICAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ3IC8qIEVycm9yQ29kZXMuWF9NT0RVTEVfTU9ERV9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgcHJlZml4SWRlbnRpZmllcnMgPSAhdHJ1ZSA7XHJcbiAgICBpZiAob3B0aW9ucy5jYWNoZUhhbmRsZXJzKSB7XHJcbiAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ4IC8qIEVycm9yQ29kZXMuWF9DQUNIRV9IQU5ETEVSX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLnNjb3BlSWQgJiYgIWlzTW9kdWxlTW9kZSkge1xyXG4gICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0OSAvKiBFcnJvckNvZGVzLlhfU0NPUEVfSURfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXN0ID0gaXNTdHJpbmcodGVtcGxhdGUpID8gYmFzZVBhcnNlKHRlbXBsYXRlLCBvcHRpb25zKSA6IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgW25vZGVUcmFuc2Zvcm1zLCBkaXJlY3RpdmVUcmFuc2Zvcm1zXSA9IGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQoKTtcclxuICAgIHRyYW5zZm9ybShhc3QsIGV4dGVuZCh7fSwgb3B0aW9ucywge1xyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzLFxyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zOiBbXHJcbiAgICAgICAgICAgIC4uLm5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5ub2RlVHJhbnNmb3JtcyB8fCBbXSkgLy8gdXNlciB0cmFuc2Zvcm1zXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkaXJlY3RpdmVUcmFuc2Zvcm1zOiBleHRlbmQoe30sIGRpcmVjdGl2ZVRyYW5zZm9ybXMsIG9wdGlvbnMuZGlyZWN0aXZlVHJhbnNmb3JtcyB8fCB7fSAvLyB1c2VyIHRyYW5zZm9ybXNcclxuICAgICAgICApXHJcbiAgICB9KSk7XHJcbiAgICByZXR1cm4gZ2VuZXJhdGUoYXN0LCBleHRlbmQoe30sIG9wdGlvbnMsIHtcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVyc1xyXG4gICAgfSkpO1xyXG59XG5cbmNvbnN0IG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0gPSAoKSA9PiAoeyBwcm9wczogW10gfSk7XG5cbmV4cG9ydCB7IEJBU0VfVFJBTlNJVElPTiwgQ0FNRUxJWkUsIENBUElUQUxJWkUsIENSRUFURV9CTE9DSywgQ1JFQVRFX0NPTU1FTlQsIENSRUFURV9FTEVNRU5UX0JMT0NLLCBDUkVBVEVfRUxFTUVOVF9WTk9ERSwgQ1JFQVRFX1NMT1RTLCBDUkVBVEVfU1RBVElDLCBDUkVBVEVfVEVYVCwgQ1JFQVRFX1ZOT0RFLCBGUkFHTUVOVCwgR1VBUkRfUkVBQ1RJVkVfUFJPUFMsIElTX01FTU9fU0FNRSwgSVNfUkVGLCBLRUVQX0FMSVZFLCBNRVJHRV9QUk9QUywgTk9STUFMSVpFX0NMQVNTLCBOT1JNQUxJWkVfUFJPUFMsIE5PUk1BTElaRV9TVFlMRSwgT1BFTl9CTE9DSywgUE9QX1NDT1BFX0lELCBQVVNIX1NDT1BFX0lELCBSRU5ERVJfTElTVCwgUkVOREVSX1NMT1QsIFJFU09MVkVfQ09NUE9ORU5ULCBSRVNPTFZFX0RJUkVDVElWRSwgUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCwgUkVTT0xWRV9GSUxURVIsIFNFVF9CTE9DS19UUkFDS0lORywgU1VTUEVOU0UsIFRFTEVQT1JULCBUT19ESVNQTEFZX1NUUklORywgVE9fSEFORExFUlMsIFRPX0hBTkRMRVJfS0VZLCBVTlJFRiwgV0lUSF9DVFgsIFdJVEhfRElSRUNUSVZFUywgV0lUSF9NRU1PLCBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUsIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbiwgYXNzZXJ0LCBiYXNlQ29tcGlsZSwgYmFzZVBhcnNlLCBidWlsZERpcmVjdGl2ZUFyZ3MsIGJ1aWxkUHJvcHMsIGJ1aWxkU2xvdHMsIGNoZWNrQ29tcGF0RW5hYmxlZCwgY3JlYXRlQXJyYXlFeHByZXNzaW9uLCBjcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbiwgY3JlYXRlQmxvY2tTdGF0ZW1lbnQsIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbiwgY3JlYXRlQ2FsbEV4cHJlc3Npb24sIGNyZWF0ZUNvbXBpbGVyRXJyb3IsIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbiwgY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uLCBjcmVhdGVGb3JMb29wUGFyYW1zLCBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24sIGNyZWF0ZUlmU3RhdGVtZW50LCBjcmVhdGVJbnRlcnBvbGF0aW9uLCBjcmVhdGVPYmplY3RFeHByZXNzaW9uLCBjcmVhdGVPYmplY3RQcm9wZXJ0eSwgY3JlYXRlUmV0dXJuU3RhdGVtZW50LCBjcmVhdGVSb290LCBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24sIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24sIGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0sIGNyZWF0ZVRlbXBsYXRlTGl0ZXJhbCwgY3JlYXRlVHJhbnNmb3JtQ29udGV4dCwgY3JlYXRlVk5vZGVDYWxsLCBleHRyYWN0SWRlbnRpZmllcnMsIGZpbmREaXIsIGZpbmRQcm9wLCBnZW5lcmF0ZSwgZ2V0QmFzZVRyYW5zZm9ybVByZXNldCwgZ2V0Q29uc3RhbnRUeXBlLCBnZXRJbm5lclJhbmdlLCBnZXRNZW1vZWRWTm9kZUNhbGwsIGdldFZOb2RlQmxvY2tIZWxwZXIsIGdldFZOb2RlSGVscGVyLCBoYXNEeW5hbWljS2V5VkJpbmQsIGhhc1Njb3BlUmVmLCBoZWxwZXJOYW1lTWFwLCBpbmplY3RQcm9wLCBpc0J1aWx0SW5UeXBlLCBpc0NvcmVDb21wb25lbnQsIGlzRnVuY3Rpb25UeXBlLCBpc0luRGVzdHJ1Y3R1cmVBc3NpZ25tZW50LCBpc01lbWJlckV4cHJlc3Npb24sIGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIsIGlzTWVtYmVyRXhwcmVzc2lvbk5vZGUsIGlzUmVmZXJlbmNlZElkZW50aWZpZXIsIGlzU2ltcGxlSWRlbnRpZmllciwgaXNTbG90T3V0bGV0LCBpc1N0YXRpY0FyZ09mLCBpc1N0YXRpY0V4cCwgaXNTdGF0aWNQcm9wZXJ0eSwgaXNTdGF0aWNQcm9wZXJ0eUtleSwgaXNUZW1wbGF0ZU5vZGUsIGlzVGV4dCwgaXNWU2xvdCwgbG9jU3R1YiwgbWFrZUJsb2NrLCBub29wRGlyZWN0aXZlVHJhbnNmb3JtLCBwcm9jZXNzRXhwcmVzc2lvbiwgcHJvY2Vzc0ZvciwgcHJvY2Vzc0lmLCBwcm9jZXNzU2xvdE91dGxldCwgcmVnaXN0ZXJSdW50aW1lSGVscGVycywgcmVzb2x2ZUNvbXBvbmVudFR5cGUsIHRvVmFsaWRBc3NldElkLCB0cmFja1Nsb3RTY29wZXMsIHRyYWNrVkZvclNsb3RTY29wZXMsIHRyYW5zZm9ybSwgdHJhbnNmb3JtQmluZCwgdHJhbnNmb3JtRWxlbWVudCwgdHJhbnNmb3JtRXhwcmVzc2lvbiwgdHJhbnNmb3JtTW9kZWwsIHRyYW5zZm9ybU9uLCB0cmF2ZXJzZU5vZGUsIHdhbGtCbG9ja0RlY2xhcmF0aW9ucywgd2Fsa0Z1bmN0aW9uUGFyYW1zLCB3YWxrSWRlbnRpZmllcnMsIHdhcm5EZXByZWNhdGlvbiB9O1xuIiwiaW1wb3J0IHsgcmVnaXN0ZXJSdW50aW1lSGVscGVycywgaXNCdWlsdEluVHlwZSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlT2JqZWN0UHJvcGVydHksIGdldENvbnN0YW50VHlwZSwgY3JlYXRlQ2FsbEV4cHJlc3Npb24sIFRPX0RJU1BMQVlfU1RSSU5HLCB0cmFuc2Zvcm1Nb2RlbCBhcyB0cmFuc2Zvcm1Nb2RlbCQxLCBmaW5kUHJvcCwgaGFzRHluYW1pY0tleVZCaW5kLCB0cmFuc2Zvcm1PbiBhcyB0cmFuc2Zvcm1PbiQxLCBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24sIGlzU3RhdGljRXhwLCBjaGVja0NvbXBhdEVuYWJsZWQsIG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sIGJhc2VDb21waWxlLCBiYXNlUGFyc2UgfSBmcm9tICdAdnVlL2NvbXBpbGVyLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9jb21waWxlci1jb3JlJztcbmltcG9ydCB7IGlzVm9pZFRhZywgaXNIVE1MVGFnLCBpc1NWR1RhZywgbWFrZU1hcCwgcGFyc2VTdHJpbmdTdHlsZSwgY2FwaXRhbGl6ZSwgZXh0ZW5kIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBWX01PREVMX1JBRElPID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxSYWRpb2AgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfQ0hFQ0tCT1ggPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbENoZWNrYm94YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9URVhUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxUZXh0YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9TRUxFQ1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFNlbGVjdGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfRFlOQU1JQyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsRHluYW1pY2AgOiBgYCk7XHJcbmNvbnN0IFZfT05fV0lUSF9NT0RJRklFUlMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZPbk1vZGlmaWVyc0d1YXJkYCA6IGBgKTtcclxuY29uc3QgVl9PTl9XSVRIX0tFWVMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZPbktleXNHdWFyZGAgOiBgYCk7XHJcbmNvbnN0IFZfU0hPVyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdlNob3dgIDogYGApO1xyXG5jb25zdCBUUkFOU0lUSU9OID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUcmFuc2l0aW9uYCA6IGBgKTtcclxuY29uc3QgVFJBTlNJVElPTl9HUk9VUCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVHJhbnNpdGlvbkdyb3VwYCA6IGBgKTtcclxucmVnaXN0ZXJSdW50aW1lSGVscGVycyh7XHJcbiAgICBbVl9NT0RFTF9SQURJT106IGB2TW9kZWxSYWRpb2AsXHJcbiAgICBbVl9NT0RFTF9DSEVDS0JPWF06IGB2TW9kZWxDaGVja2JveGAsXHJcbiAgICBbVl9NT0RFTF9URVhUXTogYHZNb2RlbFRleHRgLFxyXG4gICAgW1ZfTU9ERUxfU0VMRUNUXTogYHZNb2RlbFNlbGVjdGAsXHJcbiAgICBbVl9NT0RFTF9EWU5BTUlDXTogYHZNb2RlbER5bmFtaWNgLFxyXG4gICAgW1ZfT05fV0lUSF9NT0RJRklFUlNdOiBgd2l0aE1vZGlmaWVyc2AsXHJcbiAgICBbVl9PTl9XSVRIX0tFWVNdOiBgd2l0aEtleXNgLFxyXG4gICAgW1ZfU0hPV106IGB2U2hvd2AsXHJcbiAgICBbVFJBTlNJVElPTl06IGBUcmFuc2l0aW9uYCxcclxuICAgIFtUUkFOU0lUSU9OX0dST1VQXTogYFRyYW5zaXRpb25Hcm91cGBcclxufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgZGVjb2RlcjtcclxuZnVuY3Rpb24gZGVjb2RlSHRtbEJyb3dzZXIocmF3LCBhc0F0dHIgPSBmYWxzZSkge1xyXG4gICAgaWYgKCFkZWNvZGVyKSB7XHJcbiAgICAgICAgZGVjb2RlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzQXR0cikge1xyXG4gICAgICAgIGRlY29kZXIuaW5uZXJIVE1MID0gYDxkaXYgZm9vPVwiJHtyYXcucmVwbGFjZSgvXCIvZywgJyZxdW90OycpfVwiPmA7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZXIuY2hpbGRyZW5bMF0uZ2V0QXR0cmlidXRlKCdmb28nKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGRlY29kZXIuaW5uZXJIVE1MID0gcmF3O1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50O1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGlzUmF3VGV4dENvbnRhaW5lciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnc3R5bGUsaWZyYW1lLHNjcmlwdCxub3NjcmlwdCcsIHRydWUpO1xyXG5jb25zdCBwYXJzZXJPcHRpb25zID0ge1xyXG4gICAgaXNWb2lkVGFnLFxyXG4gICAgaXNOYXRpdmVUYWc6IHRhZyA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpLFxyXG4gICAgaXNQcmVUYWc6IHRhZyA9PiB0YWcgPT09ICdwcmUnLFxyXG4gICAgZGVjb2RlRW50aXRpZXM6IGRlY29kZUh0bWxCcm93c2VyICxcclxuICAgIGlzQnVpbHRJbkNvbXBvbmVudDogKHRhZykgPT4ge1xyXG4gICAgICAgIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgYFRyYW5zaXRpb25gKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVFJBTlNJVElPTjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsIGBUcmFuc2l0aW9uR3JvdXBgKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVFJBTlNJVElPTl9HUk9VUDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RyZWUtY29uc3RydWN0aW9uLWRpc3BhdGNoZXJcclxuICAgIGdldE5hbWVzcGFjZSh0YWcsIHBhcmVudCkge1xyXG4gICAgICAgIGxldCBucyA9IHBhcmVudCA/IHBhcmVudC5ucyA6IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgICAgIGlmIChwYXJlbnQgJiYgbnMgPT09IDIgLyogRE9NTmFtZXNwYWNlcy5NQVRIX01MICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQudGFnID09PSAnYW5ub3RhdGlvbi14bWwnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFnID09PSAnc3ZnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIERPTU5hbWVzcGFjZXMuU1ZHICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wcm9wcy5zb21lKGEgPT4gYS50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICBhLm5hbWUgPT09ICdlbmNvZGluZycgJiZcclxuICAgICAgICAgICAgICAgICAgICBhLnZhbHVlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAoYS52YWx1ZS5jb250ZW50ID09PSAndGV4dC9odG1sJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnZhbHVlLmNvbnRlbnQgPT09ICdhcHBsaWNhdGlvbi94aHRtbCt4bWwnKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBucyA9IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKC9ebSg/Oltpb25zXXx0ZXh0KSQvLnRlc3QocGFyZW50LnRhZykgJiZcclxuICAgICAgICAgICAgICAgIHRhZyAhPT0gJ21nbHlwaCcgJiZcclxuICAgICAgICAgICAgICAgIHRhZyAhPT0gJ21hbGlnbm1hcmsnKSB7XHJcbiAgICAgICAgICAgICAgICBucyA9IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBhcmVudCAmJiBucyA9PT0gMSAvKiBET01OYW1lc3BhY2VzLlNWRyAqLykge1xyXG4gICAgICAgICAgICBpZiAocGFyZW50LnRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnIHx8XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudGFnID09PSAnZGVzYycgfHxcclxuICAgICAgICAgICAgICAgIHBhcmVudC50YWcgPT09ICd0aXRsZScpIHtcclxuICAgICAgICAgICAgICAgIG5zID0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5zID09PSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLykge1xyXG4gICAgICAgICAgICBpZiAodGFnID09PSAnc3ZnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogRE9NTmFtZXNwYWNlcy5TVkcgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ21hdGgnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMiAvKiBET01OYW1lc3BhY2VzLk1BVEhfTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5zO1xyXG4gICAgfSxcclxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzXHJcbiAgICBnZXRUZXh0TW9kZSh7IHRhZywgbnMgfSkge1xyXG4gICAgICAgIGlmIChucyA9PT0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3RleHRhcmVhJyB8fCB0YWcgPT09ICd0aXRsZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzUmF3VGV4dENvbnRhaW5lcih0YWcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMCAvKiBUZXh0TW9kZXMuREFUQSAqLztcclxuICAgIH1cclxufTtcblxuLy8gUGFyc2UgaW5saW5lIENTUyBzdHJpbmdzIGZvciBzdGF0aWMgc3R5bGUgYXR0cmlidXRlcyBpbnRvIGFuIG9iamVjdC5cclxuLy8gVGhpcyBpcyBhIE5vZGVUcmFuc2Zvcm0gc2luY2UgaXQgd29ya3Mgb24gdGhlIHN0YXRpYyBgc3R5bGVgIGF0dHJpYnV0ZSBhbmRcclxuLy8gY29udmVydHMgaXQgaW50byBhIGR5bmFtaWMgZXF1aXZhbGVudDpcclxuLy8gc3R5bGU9XCJjb2xvcjogcmVkXCIgLT4gOnN0eWxlPSd7IFwiY29sb3JcIjogXCJyZWRcIiB9J1xyXG4vLyBJdCBpcyB0aGVuIHByb2Nlc3NlZCBieSBgdHJhbnNmb3JtRWxlbWVudGAgYW5kIGluY2x1ZGVkIGluIHRoZSBnZW5lcmF0ZWRcclxuLy8gcHJvcHMuXHJcbmNvbnN0IHRyYW5zZm9ybVN0eWxlID0gbm9kZSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgbm9kZS5wcm9wcy5mb3JFYWNoKChwLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJiBwLm5hbWUgPT09ICdzdHlsZScgJiYgcC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBwIHdpdGggYW4gZXhwcmVzc2lvbiBub2RlXHJcbiAgICAgICAgICAgICAgICBub2RlLnByb3BzW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBgYmluZGAsXHJcbiAgICAgICAgICAgICAgICAgICAgYXJnOiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBzdHlsZWAsIHRydWUsIHAubG9jKSxcclxuICAgICAgICAgICAgICAgICAgICBleHA6IHBhcnNlSW5saW5lQ1NTKHAudmFsdWUuY29udGVudCwgcC5sb2MpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jOiBwLmxvY1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBwYXJzZUlubGluZUNTUyA9IChjc3NUZXh0LCBsb2MpID0+IHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBwYXJzZVN0cmluZ1N0eWxlKGNzc1RleHQpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZCksIGZhbHNlLCBsb2MsIDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovKTtcclxufTtcblxuZnVuY3Rpb24gY3JlYXRlRE9NQ29tcGlsZXJFcnJvcihjb2RlLCBsb2MpIHtcclxuICAgIHJldHVybiBjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIGxvYywgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlID8gRE9NRXJyb3JNZXNzYWdlcyA6IHVuZGVmaW5lZCk7XHJcbn1cclxuY29uc3QgRE9NRXJyb3JNZXNzYWdlcyA9IHtcclxuICAgIFs1MCAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX05PX0VYUFJFU1NJT04gKi9dOiBgdi1odG1sIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzUxIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfV0lUSF9DSElMRFJFTiAqL106IGB2LWh0bWwgd2lsbCBvdmVycmlkZSBlbGVtZW50IGNoaWxkcmVuLmAsXHJcbiAgICBbNTIgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9OT19FWFBSRVNTSU9OICovXTogYHYtdGV4dCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs1MyAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX1dJVEhfQ0hJTERSRU4gKi9dOiBgdi10ZXh0IHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi5gLFxyXG4gICAgWzU0IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0lOVkFMSURfRUxFTUVOVCAqL106IGB2LW1vZGVsIGNhbiBvbmx5IGJlIHVzZWQgb24gPGlucHV0PiwgPHRleHRhcmVhPiBhbmQgPHNlbGVjdD4gZWxlbWVudHMuYCxcclxuICAgIFs1NSAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCAqL106IGB2LW1vZGVsIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgb24gcGxhaW4gZWxlbWVudHMuYCxcclxuICAgIFs1NiAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9GSUxFX0lOUFVUX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBmaWxlIGlucHV0cyBzaW5jZSB0aGV5IGFyZSByZWFkLW9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuYCxcclxuICAgIFs1NyAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRSAqL106IGBVbm5lY2Vzc2FyeSB2YWx1ZSBiaW5kaW5nIHVzZWQgYWxvbmdzaWRlIHYtbW9kZWwuIEl0IHdpbGwgaW50ZXJmZXJlIHdpdGggdi1tb2RlbCdzIGJlaGF2aW9yLmAsXHJcbiAgICBbNTggLyogRE9NRXJyb3JDb2Rlcy5YX1ZfU0hPV19OT19FWFBSRVNTSU9OICovXTogYHYtc2hvdyBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs1OSAvKiBET01FcnJvckNvZGVzLlhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOICovXTogYDxUcmFuc2l0aW9uPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGVsZW1lbnQgb3IgY29tcG9uZW50LmAsXHJcbiAgICBbNjAgLyogRE9NRXJyb3JDb2Rlcy5YX0lHTk9SRURfU0lERV9FRkZFQ1RfVEFHICovXTogYFRhZ3Mgd2l0aCBzaWRlIGVmZmVjdCAoPHNjcmlwdD4gYW5kIDxzdHlsZT4pIGFyZSBpZ25vcmVkIGluIGNsaWVudCBjb21wb25lbnQgdGVtcGxhdGVzLmBcclxufTtcblxuY29uc3QgdHJhbnNmb3JtVkh0bWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUwIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MSAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX1dJVEhfQ0hJTERSRU4gKi8sIGxvYykpO1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgaW5uZXJIVE1MYCwgdHJ1ZSwgbG9jKSwgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUpKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVZUZXh0ID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MiAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTMgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9XSVRIX0NISUxEUkVOICovLCBsb2MpKTtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRleHRDb250ZW50YCwgdHJ1ZSksIGV4cFxyXG4gICAgICAgICAgICAgICAgPyBnZXRDb25zdGFudFR5cGUoZXhwLCBjb250ZXh0KSA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IGV4cFxyXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXJTdHJpbmcoVE9fRElTUExBWV9TVFJJTkcpLCBbZXhwXSwgbG9jKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IGJhc2VSZXN1bHQgPSB0cmFuc2Zvcm1Nb2RlbCQxKGRpciwgbm9kZSwgY29udGV4dCk7XHJcbiAgICAvLyBiYXNlIHRyYW5zZm9ybSBoYXMgZXJyb3JzIE9SIGNvbXBvbmVudCB2LW1vZGVsIChvbmx5IG5lZWQgcHJvcHMpXHJcbiAgICBpZiAoIWJhc2VSZXN1bHQucHJvcHMubGVuZ3RoIHx8IG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyLmFyZykge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU1IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX0FSR19PTl9FTEVNRU5UICovLCBkaXIuYXJnLmxvYykpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVkVmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmaW5kUHJvcChub2RlLCAndmFsdWUnKTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTcgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUgKi8sIHZhbHVlLmxvYykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFnIH0gPSBub2RlO1xyXG4gICAgY29uc3QgaXNDdXN0b21FbGVtZW50ID0gY29udGV4dC5pc0N1c3RvbUVsZW1lbnQodGFnKTtcclxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHxcclxuICAgICAgICB0YWcgPT09ICd0ZXh0YXJlYScgfHxcclxuICAgICAgICB0YWcgPT09ICdzZWxlY3QnIHx8XHJcbiAgICAgICAgaXNDdXN0b21FbGVtZW50KSB7XHJcbiAgICAgICAgbGV0IGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9URVhUO1xyXG4gICAgICAgIGxldCBpc0ludmFsaWRUeXBlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCBpc0N1c3RvbUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgdHlwZSA9IGZpbmRQcm9wKG5vZGUsIGB0eXBlYCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZS50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyA6dHlwZT1cImZvb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX0RZTkFNSUM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLnZhbHVlLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmFkaW8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1JBRElPO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9DSEVDS0JPWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmaWxlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZFR5cGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTYgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fRklMRV9JTlBVVF9FTEVNRU5UICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRleHQgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaGFzRHluYW1pY0tleVZCaW5kKG5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGhhcyBiaW5kaW5ncyB3aXRoIGR5bmFtaWMga2V5cywgd2hpY2ggY2FuIHBvc3NpYmx5IGNvbnRhaW5cclxuICAgICAgICAgICAgICAgIC8vIFwidHlwZVwiLlxyXG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX0RZTkFNSUM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0ZXh0IHR5cGVcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcclxuICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1NFTEVDVDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRleHRhcmVhXHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgcnVudGltZSBkaXJlY3RpdmVcclxuICAgICAgICAvLyBieSByZXR1cm5pbmcgdGhlIGhlbHBlciBzeW1ib2wgdmlhIG5lZWRSdW50aW1lXHJcbiAgICAgICAgLy8gdGhlIGltcG9ydCB3aWxsIHJlcGxhY2VkIGEgcmVzb2x2ZURpcmVjdGl2ZSBjYWxsLlxyXG4gICAgICAgIGlmICghaXNJbnZhbGlkVHlwZSkge1xyXG4gICAgICAgICAgICBiYXNlUmVzdWx0Lm5lZWRSdW50aW1lID0gY29udGV4dC5oZWxwZXIoZGlyZWN0aXZlVG9Vc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU0IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0lOVkFMSURfRUxFTUVOVCAqLywgZGlyLmxvYykpO1xyXG4gICAgfVxyXG4gICAgLy8gbmF0aXZlIHZtb2RlbCBkb2Vzbid0IG5lZWQgdGhlIGBtb2RlbFZhbHVlYCBwcm9wcyBzaW5jZSB0aGV5IGFyZSBhbHNvXHJcbiAgICAvLyBwYXNzZWQgdG8gdGhlIHJ1bnRpbWUgYXMgYGJpbmRpbmcudmFsdWVgLiByZW1vdmluZyBpdCByZWR1Y2VzIGNvZGUgc2l6ZS5cclxuICAgIGJhc2VSZXN1bHQucHJvcHMgPSBiYXNlUmVzdWx0LnByb3BzLmZpbHRlcihwID0+ICEocC5rZXkudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICBwLmtleS5jb250ZW50ID09PSAnbW9kZWxWYWx1ZScpKTtcclxuICAgIHJldHVybiBiYXNlUmVzdWx0O1xyXG59O1xuXG5jb25zdCBpc0V2ZW50T3B0aW9uTW9kaWZpZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYHBhc3NpdmUsb25jZSxjYXB0dXJlYCk7XHJcbmNvbnN0IGlzTm9uS2V5TW9kaWZpZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoXHJcbi8vIGV2ZW50IHByb3BhZ2F0aW9uIG1hbmFnZW1lbnRcclxuYHN0b3AscHJldmVudCxzZWxmLGAgK1xyXG4gICAgLy8gc3lzdGVtIG1vZGlmaWVycyArIGV4YWN0XHJcbiAgICBgY3RybCxzaGlmdCxhbHQsbWV0YSxleGFjdCxgICtcclxuICAgIC8vIG1vdXNlXHJcbiAgICBgbWlkZGxlYCk7XHJcbi8vIGxlZnQgJiByaWdodCBjb3VsZCBiZSBtb3VzZSBvciBrZXkgbW9kaWZpZXJzIGJhc2VkIG9uIGV2ZW50IHR5cGVcclxuY29uc3QgbWF5YmVLZXlNb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnbGVmdCxyaWdodCcpO1xyXG5jb25zdCBpc0tleWJvYXJkRXZlbnQgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYG9ua2V5dXAsb25rZXlkb3duLG9ua2V5cHJlc3NgLCB0cnVlKTtcclxuY29uc3QgcmVzb2x2ZU1vZGlmaWVycyA9IChrZXksIG1vZGlmaWVycywgY29udGV4dCwgbG9jKSA9PiB7XHJcbiAgICBjb25zdCBrZXlNb2RpZmllcnMgPSBbXTtcclxuICAgIGNvbnN0IG5vbktleU1vZGlmaWVycyA9IFtdO1xyXG4gICAgY29uc3QgZXZlbnRPcHRpb25Nb2RpZmllcnMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXIgPSBtb2RpZmllcnNbaV07XHJcbiAgICAgICAgaWYgKG1vZGlmaWVyID09PSAnbmF0aXZlJyAmJlxyXG4gICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX09OX05BVElWRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX09OX05BVElWRSAqLywgY29udGV4dCwgbG9jKSkge1xyXG4gICAgICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNFdmVudE9wdGlvbk1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAvLyBldmVudE9wdGlvbk1vZGlmaWVyczogbW9kaWZpZXJzIGZvciBhZGRFdmVudExpc3RlbmVyKCkgb3B0aW9ucyxcclxuICAgICAgICAgICAgLy8gZS5nLiAucGFzc2l2ZSAmIC5jYXB0dXJlXHJcbiAgICAgICAgICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gcnVudGltZU1vZGlmaWVyczogbW9kaWZpZXJzIHRoYXQgbmVlZHMgcnVudGltZSBndWFyZHNcclxuICAgICAgICAgICAgaWYgKG1heWJlS2V5TW9kaWZpZXIobW9kaWZpZXIpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGF0aWNFeHAoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0tleWJvYXJkRXZlbnQoa2V5LmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9uS2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTm9uS2V5TW9kaWZpZXIobW9kaWZpZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9uS2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXlNb2RpZmllcnMsXHJcbiAgICAgICAgbm9uS2V5TW9kaWZpZXJzLFxyXG4gICAgICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzXHJcbiAgICB9O1xyXG59O1xyXG5jb25zdCB0cmFuc2Zvcm1DbGljayA9IChrZXksIGV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBpc1N0YXRpY0NsaWNrID0gaXNTdGF0aWNFeHAoa2V5KSAmJiBrZXkuY29udGVudC50b0xvd2VyQ2FzZSgpID09PSAnb25jbGljayc7XHJcbiAgICByZXR1cm4gaXNTdGF0aWNDbGlja1xyXG4gICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihldmVudCwgdHJ1ZSlcclxuICAgICAgICA6IGtleS50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqL1xyXG4gICAgICAgICAgICA/IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgICAgICBgKGAsXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICBgKSA9PT0gXCJvbkNsaWNrXCIgPyBcIiR7ZXZlbnR9XCIgOiAoYCxcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIGApYFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICA6IGtleTtcclxufTtcclxuY29uc3QgdHJhbnNmb3JtT24gPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICByZXR1cm4gdHJhbnNmb3JtT24kMShkaXIsIG5vZGUsIGNvbnRleHQsIGJhc2VSZXN1bHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzIH0gPSBkaXI7XHJcbiAgICAgICAgaWYgKCFtb2RpZmllcnMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxuICAgICAgICBsZXQgeyBrZXksIHZhbHVlOiBoYW5kbGVyRXhwIH0gPSBiYXNlUmVzdWx0LnByb3BzWzBdO1xyXG4gICAgICAgIGNvbnN0IHsga2V5TW9kaWZpZXJzLCBub25LZXlNb2RpZmllcnMsIGV2ZW50T3B0aW9uTW9kaWZpZXJzIH0gPSByZXNvbHZlTW9kaWZpZXJzKGtleSwgbW9kaWZpZXJzLCBjb250ZXh0LCBkaXIubG9jKTtcclxuICAgICAgICAvLyBub3JtYWxpemUgY2xpY2sucmlnaHQgYW5kIGNsaWNrLm1pZGRsZSBzaW5jZSB0aGV5IGRvbid0IGFjdHVhbGx5IGZpcmVcclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmluY2x1ZGVzKCdyaWdodCcpKSB7XHJcbiAgICAgICAgICAgIGtleSA9IHRyYW5zZm9ybUNsaWNrKGtleSwgYG9uQ29udGV4dG1lbnVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5pbmNsdWRlcygnbWlkZGxlJykpIHtcclxuICAgICAgICAgICAga2V5ID0gdHJhbnNmb3JtQ2xpY2soa2V5LCBgb25Nb3VzZXVwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihWX09OX1dJVEhfTU9ESUZJRVJTKSwgW1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlckV4cCxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5vbktleU1vZGlmaWVycylcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlNb2RpZmllcnMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIC8vIGlmIGV2ZW50IG5hbWUgaXMgZHluYW1pYywgYWx3YXlzIHdyYXAgd2l0aCBrZXlzIGd1YXJkXHJcbiAgICAgICAgICAgICghaXNTdGF0aWNFeHAoa2V5KSB8fCBpc0tleWJvYXJkRXZlbnQoa2V5LmNvbnRlbnQpKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoVl9PTl9XSVRIX0tFWVMpLCBbXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyRXhwLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoa2V5TW9kaWZpZXJzKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50T3B0aW9uTW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllclBvc3RmaXggPSBldmVudE9wdGlvbk1vZGlmaWVycy5tYXAoY2FwaXRhbGl6ZSkuam9pbignJyk7XHJcbiAgICAgICAgICAgIGtleSA9IGlzU3RhdGljRXhwKGtleSlcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtrZXkuY29udGVudH0ke21vZGlmaWVyUG9zdGZpeH1gLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2AoYCwga2V5LCBgKSArIFwiJHttb2RpZmllclBvc3RmaXh9XCJgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCBoYW5kbGVyRXhwKV1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVNob3cgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU4IC8qIERPTUVycm9yQ29kZXMuWF9WX1NIT1dfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbXSxcclxuICAgICAgICBuZWVkUnVudGltZTogY29udGV4dC5oZWxwZXIoVl9TSE9XKVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtVHJhbnNpdGlvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBjb250ZXh0LmlzQnVpbHRJbkNvbXBvbmVudChub2RlLnRhZyk7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudCA9PT0gVFJBTlNJVElPTikge1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHdhcm4gbXVsdGlwbGUgdHJhbnNpdGlvbiBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc011bHRpcGxlQ2hpbGRyZW4obm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1OSAvKiBET01FcnJvckNvZGVzLlhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBub2RlLmNoaWxkcmVuWzBdLmxvYy5zdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ubG9jLmVuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGl0J3MgcyBzaW5nbGUgY2hpbGQgdy8gdi1zaG93XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB5ZXMsIGluamVjdCBcInBlcnNpc3RlZDogdHJ1ZVwiIHRvIHRoZSB0cmFuc2l0aW9uIHByb3BzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBjaGlsZC5wcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnc2hvdycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUucHJvcHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJzaXN0ZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBub2RlLmxvY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBoYXNNdWx0aXBsZUNoaWxkcmVuKG5vZGUpIHtcclxuICAgIC8vICMxMzUyIGZpbHRlciBvdXQgcG90ZW50aWFsIGNvbW1lbnQgbm9kZXMuXHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IChub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8gJiZcclxuICAgICAgICAhKGMudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyAmJiAhYy5jb250ZW50LnRyaW0oKSkpKTtcclxuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICByZXR1cm4gKGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fFxyXG4gICAgICAgIGNoaWxkLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8gfHxcclxuICAgICAgICAoY2hpbGQudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8gJiYgY2hpbGQuYnJhbmNoZXMuc29tZShoYXNNdWx0aXBsZUNoaWxkcmVuKSkpO1xyXG59XG5cbmNvbnN0IGlnbm9yZVNpZGVFZmZlY3RUYWdzID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAobm9kZS50YWcgPT09ICdzY3JpcHQnIHx8IG5vZGUudGFnID09PSAnc3R5bGUnKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDYwIC8qIERPTUVycm9yQ29kZXMuWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoKTtcclxuICAgIH1cclxufTtcblxuY29uc3QgRE9NTm9kZVRyYW5zZm9ybXMgPSBbXHJcbiAgICB0cmFuc2Zvcm1TdHlsZSxcclxuICAgIC4uLigocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBbdHJhbnNmb3JtVHJhbnNpdGlvbl0gOiBbXSlcclxuXTtcclxuY29uc3QgRE9NRGlyZWN0aXZlVHJhbnNmb3JtcyA9IHtcclxuICAgIGNsb2FrOiBub29wRGlyZWN0aXZlVHJhbnNmb3JtLFxyXG4gICAgaHRtbDogdHJhbnNmb3JtVkh0bWwsXHJcbiAgICB0ZXh0OiB0cmFuc2Zvcm1WVGV4dCxcclxuICAgIG1vZGVsOiB0cmFuc2Zvcm1Nb2RlbCxcclxuICAgIG9uOiB0cmFuc2Zvcm1PbixcclxuICAgIHNob3c6IHRyYW5zZm9ybVNob3dcclxufTtcclxuZnVuY3Rpb24gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICByZXR1cm4gYmFzZUNvbXBpbGUodGVtcGxhdGUsIGV4dGVuZCh7fSwgcGFyc2VyT3B0aW9ucywgb3B0aW9ucywge1xyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zOiBbXHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSA8c2NyaXB0PiBhbmQgPHRhZz5cclxuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgcHV0IGluc2lkZSBET01Ob2RlVHJhbnNmb3JtcyBiZWNhdXNlIHRoYXQgbGlzdCBpcyB1c2VkXHJcbiAgICAgICAgICAgIC8vIGJ5IGNvbXBpbGVyLXNzciB0byBnZW5lcmF0ZSB2bm9kZSBmYWxsYmFjayBicmFuY2hlc1xyXG4gICAgICAgICAgICBpZ25vcmVTaWRlRWZmZWN0VGFncyxcclxuICAgICAgICAgICAgLi4uRE9NTm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdKVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtczogZXh0ZW5kKHt9LCBET01EaXJlY3RpdmVUcmFuc2Zvcm1zLCBvcHRpb25zLmRpcmVjdGl2ZVRyYW5zZm9ybXMgfHwge30pLFxyXG4gICAgICAgIHRyYW5zZm9ybUhvaXN0OiBudWxsIFxyXG4gICAgfSkpO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlKHRlbXBsYXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBiYXNlUGFyc2UodGVtcGxhdGUsIGV4dGVuZCh7fSwgcGFyc2VyT3B0aW9ucywgb3B0aW9ucykpO1xyXG59XG5cbmV4cG9ydCB7IERPTURpcmVjdGl2ZVRyYW5zZm9ybXMsIERPTU5vZGVUcmFuc2Zvcm1zLCBUUkFOU0lUSU9OLCBUUkFOU0lUSU9OX0dST1VQLCBWX01PREVMX0NIRUNLQk9YLCBWX01PREVMX0RZTkFNSUMsIFZfTU9ERUxfUkFESU8sIFZfTU9ERUxfU0VMRUNULCBWX01PREVMX1RFWFQsIFZfT05fV0lUSF9LRVlTLCBWX09OX1dJVEhfTU9ESUZJRVJTLCBWX1NIT1csIGNvbXBpbGUsIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IsIHBhcnNlLCBwYXJzZXJPcHRpb25zLCB0cmFuc2Zvcm1TdHlsZSB9O1xuIiwiZXhwb3J0IGNvbnN0IEhPT0tfU0VUVVAgPSAnZGV2dG9vbHMtcGx1Z2luOnNldHVwJztcbmV4cG9ydCBjb25zdCBIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQgPSAncGx1Z2luOnNldHRpbmdzOnNldCc7XG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0RGV2dG9vbHNHbG9iYWxIb29rKCkge1xuICAgIHJldHVybiBnZXRUYXJnZXQoKS5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJylcbiAgICAgICAgPyB3aW5kb3dcbiAgICAgICAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBnbG9iYWxcbiAgICAgICAgICAgIDoge307XG59XG5leHBvcnQgY29uc3QgaXNQcm94eUF2YWlsYWJsZSA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJztcbiIsImltcG9ydCB7IGdldFRhcmdldCwgZ2V0RGV2dG9vbHNHbG9iYWxIb29rLCBpc1Byb3h5QXZhaWxhYmxlIH0gZnJvbSAnLi9lbnYuanMnO1xuaW1wb3J0IHsgSE9PS19TRVRVUCB9IGZyb20gJy4vY29uc3QuanMnO1xuaW1wb3J0IHsgQXBpUHJveHkgfSBmcm9tICcuL3Byb3h5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpL2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2luLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGltZS5qcyc7XG5leHBvcnQgZnVuY3Rpb24gc2V0dXBEZXZ0b29sc1BsdWdpbihwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHBsdWdpbkRlc2NyaXB0b3I7XG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KCk7XG4gICAgY29uc3QgaG9vayA9IGdldERldnRvb2xzR2xvYmFsSG9vaygpO1xuICAgIGNvbnN0IGVuYWJsZVByb3h5ID0gaXNQcm94eUF2YWlsYWJsZSAmJiBkZXNjcmlwdG9yLmVuYWJsZUVhcmx5UHJveHk7XG4gICAgaWYgKGhvb2sgJiYgKHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5fQVBJX0FWQUlMQUJMRV9fIHx8ICFlbmFibGVQcm94eSkpIHtcbiAgICAgICAgaG9vay5lbWl0KEhPT0tfU0VUVVAsIHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJveHkgPSBlbmFibGVQcm94eSA/IG5ldyBBcGlQcm94eShkZXNjcmlwdG9yLCBob29rKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOU19fID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyB8fCBbXTtcbiAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIHBsdWdpbkRlc2NyaXB0b3I6IGRlc2NyaXB0b3IsXG4gICAgICAgICAgICBzZXR1cEZuLFxuICAgICAgICAgICAgcHJveHksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJveHkpXG4gICAgICAgICAgICBzZXR1cEZuKHByb3h5LnByb3hpZWRUYXJnZXQpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCB9IGZyb20gJy4vY29uc3QuanMnO1xuaW1wb3J0IHsgbm93IH0gZnJvbSAnLi90aW1lLmpzJztcbmV4cG9ydCBjbGFzcyBBcGlQcm94eSB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBob29rKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLm9uUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9O1xuICAgICAgICBpZiAocGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIGluIHBsdWdpbi5zZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBwbHVnaW4uc2V0dGluZ3NbaWRdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5nc1tpZF0gPSBpdGVtLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbFNldHRpbmdzU2F2ZUlkID0gYF9fdnVlLWRldnRvb2xzLXBsdWdpbi1zZXR0aW5nc19fJHtwbHVnaW4uaWR9YDtcbiAgICAgICAgbGV0IGN1cnJlbnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTZXR0aW5ncyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGN1cnJlbnRTZXR0aW5ncywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgIGdldFNldHRpbmdzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2V0dGluZ3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0U2V0dGluZ3ModmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBub29wXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRTZXR0aW5ncyA9IHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vdygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm93KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpZiAoaG9vaykge1xuICAgICAgICAgICAgaG9vay5vbihIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQsIChwbHVnaW5JZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luSWQgPT09IHRoaXMucGx1Z2luLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFsbGJhY2tzLnNldFNldHRpbmdzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3hpZWRPbiA9IG5ldyBQcm94eSh7fSwge1xuICAgICAgICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQub25bcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByb3hpZWRUYXJnZXQgPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wID09PSAnb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3hpZWRPbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXModGhpcy5mYWxsYmFja3MpLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrc1twcm9wXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzZXRSZWFsVGFyZ2V0KHRhcmdldCkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMub25RdWV1ZSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub25baXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudGFyZ2V0UXVldWUpIHtcbiAgICAgICAgICAgIGl0ZW0ucmVzb2x2ZShhd2FpdCB0aGlzLnRhcmdldFtpdGVtLm1ldGhvZF0oLi4uaXRlbS5hcmdzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJsZXQgc3VwcG9ydGVkO1xubGV0IHBlcmY7XG5leHBvcnQgZnVuY3Rpb24gaXNQZXJmb3JtYW5jZVN1cHBvcnRlZCgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGVyZm9ybWFuY2UpIHtcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgcGVyZiA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfYSA9IGdsb2JhbC5wZXJmX2hvb2tzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucGVyZm9ybWFuY2UpKSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIHBlcmYgPSBnbG9iYWwucGVyZl9ob29rcy5wZXJmb3JtYW5jZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwcG9ydGVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdygpIHtcbiAgICByZXR1cm4gaXNQZXJmb3JtYW5jZVN1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCk7XG59XG4iLCJpbXBvcnQgeyBleHRlbmQsIGlzQXJyYXksIGlzTWFwLCBpc0ludGVnZXJLZXksIGhhc093biwgaXNTeW1ib2wsIGlzT2JqZWN0LCBoYXNDaGFuZ2VkLCBtYWtlTWFwLCBjYXBpdGFsaXplLCB0b1Jhd1R5cGUsIGRlZiwgaXNGdW5jdGlvbiwgTk9PUCB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuZnVuY3Rpb24gd2Fybihtc2csIC4uLmFyZ3MpIHtcclxuICAgIGNvbnNvbGUud2FybihgW1Z1ZSB3YXJuXSAke21zZ31gLCAuLi5hcmdzKTtcclxufVxuXG5sZXQgYWN0aXZlRWZmZWN0U2NvcGU7XHJcbmNsYXNzIEVmZmVjdFNjb3BlIHtcclxuICAgIGNvbnN0cnVjdG9yKGRldGFjaGVkID0gZmFsc2UpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQGludGVybmFsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5lZmZlY3RzID0gW107XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQGludGVybmFsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jbGVhbnVwcyA9IFtdO1xyXG4gICAgICAgIGlmICghZGV0YWNoZWQgJiYgYWN0aXZlRWZmZWN0U2NvcGUpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBhY3RpdmVFZmZlY3RTY29wZTtcclxuICAgICAgICAgICAgdGhpcy5pbmRleCA9XHJcbiAgICAgICAgICAgICAgICAoYWN0aXZlRWZmZWN0U2NvcGUuc2NvcGVzIHx8IChhY3RpdmVFZmZlY3RTY29wZS5zY29wZXMgPSBbXSkpLnB1c2godGhpcykgLSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJ1bihmbikge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWZmZWN0U2NvcGUgPSBhY3RpdmVFZmZlY3RTY29wZTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHJldHVybiBmbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSBjdXJyZW50RWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGNhbm5vdCBydW4gYW4gaW5hY3RpdmUgZWZmZWN0IHNjb3BlLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gbm9uLWRldGFjaGVkIHNjb3Blc1xyXG4gICAgICogQGludGVybmFsXHJcbiAgICAgKi9cclxuICAgIG9uKCkge1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcztcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gbm9uLWRldGFjaGVkIHNjb3Blc1xyXG4gICAgICogQGludGVybmFsXHJcbiAgICAgKi9cclxuICAgIG9mZigpIHtcclxuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXMucGFyZW50O1xyXG4gICAgfVxyXG4gICAgc3RvcChmcm9tUGFyZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGxldCBpLCBsO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gdGhpcy5lZmZlY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3RzW2ldLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gdGhpcy5jbGVhbnVwcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYW51cHNbaV0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zY29wZXMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLnNjb3Blcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjb3Blc1tpXS5zdG9wKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG5lc3RlZCBzY29wZSwgZGVyZWZlcmVuY2UgZnJvbSBwYXJlbnQgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudCAmJiAhZnJvbVBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgLy8gb3B0aW1pemVkIE8oMSkgcmVtb3ZhbFxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IHRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QgIT09IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zY29wZXNbdGhpcy5pbmRleF0gPSBsYXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3QuaW5kZXggPSB0aGlzLmluZGV4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGVmZmVjdFNjb3BlKGRldGFjaGVkKSB7XHJcbiAgICByZXR1cm4gbmV3IEVmZmVjdFNjb3BlKGRldGFjaGVkKTtcclxufVxyXG5mdW5jdGlvbiByZWNvcmRFZmZlY3RTY29wZShlZmZlY3QsIHNjb3BlID0gYWN0aXZlRWZmZWN0U2NvcGUpIHtcclxuICAgIGlmIChzY29wZSAmJiBzY29wZS5hY3RpdmUpIHtcclxuICAgICAgICBzY29wZS5lZmZlY3RzLnB1c2goZWZmZWN0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDdXJyZW50U2NvcGUoKSB7XHJcbiAgICByZXR1cm4gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbn1cclxuZnVuY3Rpb24gb25TY29wZURpc3Bvc2UoZm4pIHtcclxuICAgIGlmIChhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlLmNsZWFudXBzLnB1c2goZm4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2Fybihgb25TY29wZURpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgZWZmZWN0IHNjb3BlYCArXHJcbiAgICAgICAgICAgIGAgdG8gYmUgYXNzb2NpYXRlZCB3aXRoLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGNyZWF0ZURlcCA9IChlZmZlY3RzKSA9PiB7XHJcbiAgICBjb25zdCBkZXAgPSBuZXcgU2V0KGVmZmVjdHMpO1xyXG4gICAgZGVwLncgPSAwO1xyXG4gICAgZGVwLm4gPSAwO1xyXG4gICAgcmV0dXJuIGRlcDtcclxufTtcclxuY29uc3Qgd2FzVHJhY2tlZCA9IChkZXApID0+IChkZXAudyAmIHRyYWNrT3BCaXQpID4gMDtcclxuY29uc3QgbmV3VHJhY2tlZCA9IChkZXApID0+IChkZXAubiAmIHRyYWNrT3BCaXQpID4gMDtcclxuY29uc3QgaW5pdERlcE1hcmtlcnMgPSAoeyBkZXBzIH0pID0+IHtcclxuICAgIGlmIChkZXBzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBkZXBzW2ldLncgfD0gdHJhY2tPcEJpdDsgLy8gc2V0IHdhcyB0cmFja2VkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCBmaW5hbGl6ZURlcE1hcmtlcnMgPSAoZWZmZWN0KSA9PiB7XHJcbiAgICBjb25zdCB7IGRlcHMgfSA9IGVmZmVjdDtcclxuICAgIGlmIChkZXBzLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBwdHIgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkZXAgPSBkZXBzW2ldO1xyXG4gICAgICAgICAgICBpZiAod2FzVHJhY2tlZChkZXApICYmICFuZXdUcmFja2VkKGRlcCkpIHtcclxuICAgICAgICAgICAgICAgIGRlcC5kZWxldGUoZWZmZWN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRlcHNbcHRyKytdID0gZGVwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNsZWFyIGJpdHNcclxuICAgICAgICAgICAgZGVwLncgJj0gfnRyYWNrT3BCaXQ7XHJcbiAgICAgICAgICAgIGRlcC5uICY9IH50cmFja09wQml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZXBzLmxlbmd0aCA9IHB0cjtcclxuICAgIH1cclxufTtcblxuY29uc3QgdGFyZ2V0TWFwID0gbmV3IFdlYWtNYXAoKTtcclxuLy8gVGhlIG51bWJlciBvZiBlZmZlY3RzIGN1cnJlbnRseSBiZWluZyB0cmFja2VkIHJlY3Vyc2l2ZWx5LlxyXG5sZXQgZWZmZWN0VHJhY2tEZXB0aCA9IDA7XHJcbmxldCB0cmFja09wQml0ID0gMTtcclxuLyoqXHJcbiAqIFRoZSBiaXR3aXNlIHRyYWNrIG1hcmtlcnMgc3VwcG9ydCBhdCBtb3N0IDMwIGxldmVscyBvZiByZWN1cnNpb24uXHJcbiAqIFRoaXMgdmFsdWUgaXMgY2hvc2VuIHRvIGVuYWJsZSBtb2Rlcm4gSlMgZW5naW5lcyB0byB1c2UgYSBTTUkgb24gYWxsIHBsYXRmb3Jtcy5cclxuICogV2hlbiByZWN1cnNpb24gZGVwdGggaXMgZ3JlYXRlciwgZmFsbCBiYWNrIHRvIHVzaW5nIGEgZnVsbCBjbGVhbnVwLlxyXG4gKi9cclxuY29uc3QgbWF4TWFya2VyQml0cyA9IDMwO1xyXG5sZXQgYWN0aXZlRWZmZWN0O1xyXG5jb25zdCBJVEVSQVRFX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnaXRlcmF0ZScgOiAnJyk7XHJcbmNvbnN0IE1BUF9LRVlfSVRFUkFURV9LRVkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ01hcCBrZXkgaXRlcmF0ZScgOiAnJyk7XHJcbmNsYXNzIFJlYWN0aXZlRWZmZWN0IHtcclxuICAgIGNvbnN0cnVjdG9yKGZuLCBzY2hlZHVsZXIgPSBudWxsLCBzY29wZSkge1xyXG4gICAgICAgIHRoaXMuZm4gPSBmbjtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kZXBzID0gW107XHJcbiAgICAgICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVjb3JkRWZmZWN0U2NvcGUodGhpcywgc2NvcGUpO1xyXG4gICAgfVxyXG4gICAgcnVuKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBhcmVudCA9IGFjdGl2ZUVmZmVjdDtcclxuICAgICAgICBsZXQgbGFzdFNob3VsZFRyYWNrID0gc2hvdWxkVHJhY2s7XHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBpZiAocGFyZW50ID09PSB0aGlzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBhY3RpdmVFZmZlY3Q7XHJcbiAgICAgICAgICAgIGFjdGl2ZUVmZmVjdCA9IHRoaXM7XHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgdHJhY2tPcEJpdCA9IDEgPDwgKytlZmZlY3RUcmFja0RlcHRoO1xyXG4gICAgICAgICAgICBpZiAoZWZmZWN0VHJhY2tEZXB0aCA8PSBtYXhNYXJrZXJCaXRzKSB7XHJcbiAgICAgICAgICAgICAgICBpbml0RGVwTWFya2Vycyh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNsZWFudXBFZmZlY3QodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplRGVwTWFya2Vycyh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cmFja09wQml0ID0gMSA8PCAtLWVmZmVjdFRyYWNrRGVwdGg7XHJcbiAgICAgICAgICAgIGFjdGl2ZUVmZmVjdCA9IHRoaXMucGFyZW50O1xyXG4gICAgICAgICAgICBzaG91bGRUcmFjayA9IGxhc3RTaG91bGRUcmFjaztcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmVyU3RvcCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdG9wKCkge1xyXG4gICAgICAgIC8vIHN0b3BwZWQgd2hpbGUgcnVubmluZyBpdHNlbGYgLSBkZWZlciB0aGUgY2xlYW51cFxyXG4gICAgICAgIGlmIChhY3RpdmVFZmZlY3QgPT09IHRoaXMpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWZlclN0b3AgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBjbGVhbnVwRWZmZWN0KHRoaXMpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vblN0b3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2xlYW51cEVmZmVjdChlZmZlY3QpIHtcclxuICAgIGNvbnN0IHsgZGVwcyB9ID0gZWZmZWN0O1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlcHNbaV0uZGVsZXRlKGVmZmVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlcHMubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBlZmZlY3QoZm4sIG9wdGlvbnMpIHtcclxuICAgIGlmIChmbi5lZmZlY3QpIHtcclxuICAgICAgICBmbiA9IGZuLmVmZmVjdC5mbjtcclxuICAgIH1cclxuICAgIGNvbnN0IF9lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZm4pO1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICBleHRlbmQoX2VmZmVjdCwgb3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc2NvcGUpXHJcbiAgICAgICAgICAgIHJlY29yZEVmZmVjdFNjb3BlKF9lZmZlY3QsIG9wdGlvbnMuc2NvcGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmxhenkpIHtcclxuICAgICAgICBfZWZmZWN0LnJ1bigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcnVubmVyID0gX2VmZmVjdC5ydW4uYmluZChfZWZmZWN0KTtcclxuICAgIHJ1bm5lci5lZmZlY3QgPSBfZWZmZWN0O1xyXG4gICAgcmV0dXJuIHJ1bm5lcjtcclxufVxyXG5mdW5jdGlvbiBzdG9wKHJ1bm5lcikge1xyXG4gICAgcnVubmVyLmVmZmVjdC5zdG9wKCk7XHJcbn1cclxubGV0IHNob3VsZFRyYWNrID0gdHJ1ZTtcclxuY29uc3QgdHJhY2tTdGFjayA9IFtdO1xyXG5mdW5jdGlvbiBwYXVzZVRyYWNraW5nKCkge1xyXG4gICAgdHJhY2tTdGFjay5wdXNoKHNob3VsZFRyYWNrKTtcclxuICAgIHNob3VsZFRyYWNrID0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gZW5hYmxlVHJhY2tpbmcoKSB7XHJcbiAgICB0cmFja1N0YWNrLnB1c2goc2hvdWxkVHJhY2spO1xyXG4gICAgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIHJlc2V0VHJhY2tpbmcoKSB7XHJcbiAgICBjb25zdCBsYXN0ID0gdHJhY2tTdGFjay5wb3AoKTtcclxuICAgIHNob3VsZFRyYWNrID0gbGFzdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGxhc3Q7XHJcbn1cclxuZnVuY3Rpb24gdHJhY2sodGFyZ2V0LCB0eXBlLCBrZXkpIHtcclxuICAgIGlmIChzaG91bGRUcmFjayAmJiBhY3RpdmVFZmZlY3QpIHtcclxuICAgICAgICBsZXQgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcclxuICAgICAgICBpZiAoIWRlcHNNYXApIHtcclxuICAgICAgICAgICAgdGFyZ2V0TWFwLnNldCh0YXJnZXQsIChkZXBzTWFwID0gbmV3IE1hcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZXAgPSBkZXBzTWFwLmdldChrZXkpO1xyXG4gICAgICAgIGlmICghZGVwKSB7XHJcbiAgICAgICAgICAgIGRlcHNNYXAuc2V0KGtleSwgKGRlcCA9IGNyZWF0ZURlcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV2ZW50SW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICA/IHsgZWZmZWN0OiBhY3RpdmVFZmZlY3QsIHRhcmdldCwgdHlwZSwga2V5IH1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHJhY2tFZmZlY3RzKGRlcCwgZXZlbnRJbmZvKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmFja0VmZmVjdHMoZGVwLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICBsZXQgc2hvdWxkVHJhY2sgPSBmYWxzZTtcclxuICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICBpZiAoIW5ld1RyYWNrZWQoZGVwKSkge1xyXG4gICAgICAgICAgICBkZXAubiB8PSB0cmFja09wQml0OyAvLyBzZXQgbmV3bHkgdHJhY2tlZFxyXG4gICAgICAgICAgICBzaG91bGRUcmFjayA9ICF3YXNUcmFja2VkKGRlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRnVsbCBjbGVhbnVwIG1vZGUuXHJcbiAgICAgICAgc2hvdWxkVHJhY2sgPSAhZGVwLmhhcyhhY3RpdmVFZmZlY3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNob3VsZFRyYWNrKSB7XHJcbiAgICAgICAgZGVwLmFkZChhY3RpdmVFZmZlY3QpO1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdC5kZXBzLnB1c2goZGVwKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGFjdGl2ZUVmZmVjdC5vblRyYWNrKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZUVmZmVjdC5vblRyYWNrKE9iamVjdC5hc3NpZ24oeyBlZmZlY3Q6IGFjdGl2ZUVmZmVjdCB9LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXIodGFyZ2V0LCB0eXBlLCBrZXksIG5ld1ZhbHVlLCBvbGRWYWx1ZSwgb2xkVGFyZ2V0KSB7XHJcbiAgICBjb25zdCBkZXBzTWFwID0gdGFyZ2V0TWFwLmdldCh0YXJnZXQpO1xyXG4gICAgaWYgKCFkZXBzTWFwKSB7XHJcbiAgICAgICAgLy8gbmV2ZXIgYmVlbiB0cmFja2VkXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGRlcHMgPSBbXTtcclxuICAgIGlmICh0eXBlID09PSBcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8pIHtcclxuICAgICAgICAvLyBjb2xsZWN0aW9uIGJlaW5nIGNsZWFyZWRcclxuICAgICAgICAvLyB0cmlnZ2VyIGFsbCBlZmZlY3RzIGZvciB0YXJnZXRcclxuICAgICAgICBkZXBzID0gWy4uLmRlcHNNYXAudmFsdWVzKCldO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5ID09PSAnbGVuZ3RoJyAmJiBpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICBkZXBzTWFwLmZvckVhY2goKGRlcCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdsZW5ndGgnIHx8IGtleSA+PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHNjaGVkdWxlIHJ1bnMgZm9yIFNFVCB8IEFERCB8IERFTEVURVxyXG4gICAgICAgIGlmIChrZXkgIT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoa2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFsc28gcnVuIGZvciBpdGVyYXRpb24ga2V5IG9uIEFERCB8IERFTEVURSB8IE1hcC5TRVRcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLzpcclxuICAgICAgICAgICAgICAgIGlmICghaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KE1BUF9LRVlfSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0ludGVnZXJLZXkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5ldyBpbmRleCBhZGRlZCB0byBhcnJheSAtPiBsZW5ndGggY2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldCgnbGVuZ3RoJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChNQVBfS0VZX0lURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnRJbmZvID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyB7IHRhcmdldCwgdHlwZSwga2V5LCBuZXdWYWx1ZSwgb2xkVmFsdWUsIG9sZFRhcmdldCB9XHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBpZiAoZGVwc1swXSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhkZXBzWzBdLCBldmVudEluZm8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoZGVwc1swXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBlZmZlY3RzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xyXG4gICAgICAgICAgICBpZiAoZGVwKSB7XHJcbiAgICAgICAgICAgICAgICBlZmZlY3RzLnB1c2goLi4uZGVwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGNyZWF0ZURlcChlZmZlY3RzKSwgZXZlbnRJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGNyZWF0ZURlcChlZmZlY3RzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJFZmZlY3RzKGRlcCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykge1xyXG4gICAgLy8gc3ByZWFkIGludG8gYXJyYXkgZm9yIHN0YWJpbGl6YXRpb25cclxuICAgIGNvbnN0IGVmZmVjdHMgPSBpc0FycmF5KGRlcCkgPyBkZXAgOiBbLi4uZGVwXTtcclxuICAgIGZvciAoY29uc3QgZWZmZWN0IG9mIGVmZmVjdHMpIHtcclxuICAgICAgICBpZiAoZWZmZWN0LmNvbXB1dGVkKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3QoZWZmZWN0LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGVmZmVjdCBvZiBlZmZlY3RzKSB7XHJcbiAgICAgICAgaWYgKCFlZmZlY3QuY29tcHV0ZWQpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdChlZmZlY3QsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyRWZmZWN0KGVmZmVjdCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykge1xyXG4gICAgaWYgKGVmZmVjdCAhPT0gYWN0aXZlRWZmZWN0IHx8IGVmZmVjdC5hbGxvd1JlY3Vyc2UpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGVmZmVjdC5vblRyaWdnZXIpIHtcclxuICAgICAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlcihleHRlbmQoeyBlZmZlY3QgfSwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWZmZWN0LnNjaGVkdWxlcikge1xyXG4gICAgICAgICAgICBlZmZlY3Quc2NoZWR1bGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IGlzTm9uVHJhY2thYmxlS2V5cyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgX19wcm90b19fLF9fdl9pc1JlZixfX2lzVnVlYCk7XHJcbmNvbnN0IGJ1aWx0SW5TeW1ib2xzID0gbmV3IFNldChcclxuLyojX19QVVJFX18qL1xyXG5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpXHJcbiAgICAvLyBpb3MxMC54IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgY2FuIGVudW1lcmF0ZSAnYXJndW1lbnRzJyBhbmQgJ2NhbGxlcidcclxuICAgIC8vIGJ1dCBhY2Nlc3NpbmcgdGhlbSBvbiBTeW1ib2wgbGVhZHMgdG8gVHlwZUVycm9yIGJlY2F1c2UgU3ltYm9sIGlzIGEgc3RyaWN0IG1vZGVcclxuICAgIC8vIGZ1bmN0aW9uXHJcbiAgICAuZmlsdGVyKGtleSA9PiBrZXkgIT09ICdhcmd1bWVudHMnICYmIGtleSAhPT0gJ2NhbGxlcicpXHJcbiAgICAubWFwKGtleSA9PiBTeW1ib2xba2V5XSlcclxuICAgIC5maWx0ZXIoaXNTeW1ib2wpKTtcclxuY29uc3QgZ2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIoKTtcclxuY29uc3Qgc2hhbGxvd0dldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKGZhbHNlLCB0cnVlKTtcclxuY29uc3QgcmVhZG9ubHlHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcih0cnVlKTtcclxuY29uc3Qgc2hhbGxvd1JlYWRvbmx5R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIodHJ1ZSwgdHJ1ZSk7XHJcbmNvbnN0IGFycmF5SW5zdHJ1bWVudGF0aW9ucyA9IC8qI19fUFVSRV9fKi8gY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zKCk7XHJcbmZ1bmN0aW9uIGNyZWF0ZUFycmF5SW5zdHJ1bWVudGF0aW9ucygpIHtcclxuICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSB7fTtcclxuICAgIFsnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdsYXN0SW5kZXhPZiddLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpbnN0cnVtZW50YXRpb25zW2tleV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSB0b1Jhdyh0aGlzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soYXJyLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGkgKyAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgcnVuIHRoZSBtZXRob2QgdXNpbmcgdGhlIG9yaWdpbmFsIGFyZ3MgZmlyc3QgKHdoaWNoIG1heSBiZSByZWFjdGl2ZSlcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXJyW2tleV0oLi4uYXJncyk7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT09IC0xIHx8IHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoYXQgZGlkbid0IHdvcmssIHJ1biBpdCBhZ2FpbiB1c2luZyByYXcgdmFsdWVzLlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFycltrZXldKC4uLmFyZ3MubWFwKHRvUmF3KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgWydwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSddLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpbnN0cnVtZW50YXRpb25zW2tleV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRvUmF3KHRoaXMpW2tleV0uYXBwbHkodGhpcywgYXJncyk7XHJcbiAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9ucztcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVHZXR0ZXIoaXNSZWFkb25seSA9IGZhbHNlLCBzaGFsbG93ID0gZmFsc2UpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiBnZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuICFpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzU2hhbGxvd1wiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfU0hBTExPVyAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gc2hhbGxvdztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqLyAmJlxyXG4gICAgICAgICAgICByZWNlaXZlciA9PT1cclxuICAgICAgICAgICAgICAgIChpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgPyBzaGFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2hhbGxvd1JlYWRvbmx5TWFwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZG9ubHlNYXBcclxuICAgICAgICAgICAgICAgICAgICA6IHNoYWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaGFsbG93UmVhY3RpdmVNYXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFjdGl2ZU1hcCkuZ2V0KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNBcnJheSA9IGlzQXJyYXkodGFyZ2V0KTtcclxuICAgICAgICBpZiAoIWlzUmVhZG9ubHkgJiYgdGFyZ2V0SXNBcnJheSAmJiBoYXNPd24oYXJyYXlJbnN0cnVtZW50YXRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldChhcnJheUluc3RydW1lbnRhdGlvbnMsIGtleSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXMgPSBSZWZsZWN0LmdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIGlmIChpc1N5bWJvbChrZXkpID8gYnVpbHRJblN5bWJvbHMuaGFzKGtleSkgOiBpc05vblRyYWNrYWJsZUtleXMoa2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzUmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgdHJhY2sodGFyZ2V0LCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFsbG93KSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1JlZihyZXMpKSB7XHJcbiAgICAgICAgICAgIC8vIHJlZiB1bndyYXBwaW5nIC0gc2tpcCB1bndyYXAgZm9yIEFycmF5ICsgaW50ZWdlciBrZXkuXHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRJc0FycmF5ICYmIGlzSW50ZWdlcktleShrZXkpID8gcmVzIDogcmVzLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNPYmplY3QocmVzKSkge1xyXG4gICAgICAgICAgICAvLyBDb252ZXJ0IHJldHVybmVkIHZhbHVlIGludG8gYSBwcm94eSBhcyB3ZWxsLiB3ZSBkbyB0aGUgaXNPYmplY3QgY2hlY2tcclxuICAgICAgICAgICAgLy8gaGVyZSB0byBhdm9pZCBpbnZhbGlkIHZhbHVlIHdhcm5pbmcuIEFsc28gbmVlZCB0byBsYXp5IGFjY2VzcyByZWFkb25seVxyXG4gICAgICAgICAgICAvLyBhbmQgcmVhY3RpdmUgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5LlxyXG4gICAgICAgICAgICByZXR1cm4gaXNSZWFkb25seSA/IHJlYWRvbmx5KHJlcykgOiByZWFjdGl2ZShyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBzZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZVNldHRlcigpO1xyXG5jb25zdCBzaGFsbG93U2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVTZXR0ZXIodHJ1ZSk7XHJcbmZ1bmN0aW9uIGNyZWF0ZVNldHRlcihzaGFsbG93ID0gZmFsc2UpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiBzZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcikge1xyXG4gICAgICAgIGxldCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgICAgIGlmIChpc1JlYWRvbmx5KG9sZFZhbHVlKSAmJiBpc1JlZihvbGRWYWx1ZSkgJiYgIWlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghc2hhbGxvdykge1xyXG4gICAgICAgICAgICBpZiAoIWlzU2hhbGxvdyh2YWx1ZSkgJiYgIWlzUmVhZG9ubHkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9IHRvUmF3KG9sZFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaXNBcnJheSh0YXJnZXQpICYmIGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaGFkS2V5ID0gaXNBcnJheSh0YXJnZXQpICYmIGlzSW50ZWdlcktleShrZXkpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGtleSkgPCB0YXJnZXQubGVuZ3RoXHJcbiAgICAgICAgICAgIDogaGFzT3duKHRhcmdldCwga2V5KTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LnNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKTtcclxuICAgICAgICAvLyBkb24ndCB0cmlnZ2VyIGlmIHRhcmdldCBpcyBzb21ldGhpbmcgdXAgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBvZiBvcmlnaW5hbFxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IHRvUmF3KHJlY2VpdmVyKSkge1xyXG4gICAgICAgICAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovLCBrZXksIHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChoYXNDaGFuZ2VkKHZhbHVlLCBvbGRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLywga2V5LCB2YWx1ZSwgb2xkVmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KSB7XHJcbiAgICBjb25zdCBoYWRLZXkgPSBoYXNPd24odGFyZ2V0LCBrZXkpO1xyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKHJlc3VsdCAmJiBoYWRLZXkpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8sIGtleSwgdW5kZWZpbmVkLCBvbGRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGhhcyh0YXJnZXQsIGtleSkge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5oYXModGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFpc1N5bWJvbChrZXkpIHx8ICFidWlsdEluU3ltYm9scy5oYXMoa2V5KSkge1xyXG4gICAgICAgIHRyYWNrKHRhcmdldCwgXCJoYXNcIiAvKiBUcmFja09wVHlwZXMuSEFTICovLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBvd25LZXlzKHRhcmdldCkge1xyXG4gICAgdHJhY2sodGFyZ2V0LCBcIml0ZXJhdGVcIiAvKiBUcmFja09wVHlwZXMuSVRFUkFURSAqLywgaXNBcnJheSh0YXJnZXQpID8gJ2xlbmd0aCcgOiBJVEVSQVRFX0tFWSk7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XHJcbn1cclxuY29uc3QgbXV0YWJsZUhhbmRsZXJzID0ge1xyXG4gICAgZ2V0LFxyXG4gICAgc2V0LFxyXG4gICAgZGVsZXRlUHJvcGVydHksXHJcbiAgICBoYXMsXHJcbiAgICBvd25LZXlzXHJcbn07XHJcbmNvbnN0IHJlYWRvbmx5SGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IHJlYWRvbmx5R2V0LFxyXG4gICAgc2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBTZXQgb3BlcmF0aW9uIG9uIGtleSBcIiR7U3RyaW5nKGtleSl9XCIgZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gICAgZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYERlbGV0ZSBvcGVyYXRpb24gb24ga2V5IFwiJHtTdHJpbmcoa2V5KX1cIiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufTtcclxuY29uc3Qgc2hhbGxvd1JlYWN0aXZlSGFuZGxlcnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgbXV0YWJsZUhhbmRsZXJzLCB7XHJcbiAgICBnZXQ6IHNoYWxsb3dHZXQsXHJcbiAgICBzZXQ6IHNoYWxsb3dTZXRcclxufSk7XHJcbi8vIFByb3BzIGhhbmRsZXJzIGFyZSBzcGVjaWFsIGluIHRoZSBzZW5zZSB0aGF0IGl0IHNob3VsZCBub3QgdW53cmFwIHRvcC1sZXZlbFxyXG4vLyByZWZzIChpbiBvcmRlciB0byBhbGxvdyByZWZzIHRvIGJlIGV4cGxpY2l0bHkgcGFzc2VkIGRvd24pLCBidXQgc2hvdWxkXHJcbi8vIHJldGFpbiB0aGUgcmVhY3Rpdml0eSBvZiB0aGUgbm9ybWFsIHJlYWRvbmx5IG9iamVjdC5cclxuY29uc3Qgc2hhbGxvd1JlYWRvbmx5SGFuZGxlcnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgcmVhZG9ubHlIYW5kbGVycywge1xyXG4gICAgZ2V0OiBzaGFsbG93UmVhZG9ubHlHZXRcclxufSk7XG5cbmNvbnN0IHRvU2hhbGxvdyA9ICh2YWx1ZSkgPT4gdmFsdWU7XHJcbmNvbnN0IGdldFByb3RvID0gKHYpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yodik7XHJcbmZ1bmN0aW9uIGdldCQxKHRhcmdldCwga2V5LCBpc1JlYWRvbmx5ID0gZmFsc2UsIGlzU2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICAvLyAjMTc3MjogcmVhZG9ubHkocmVhY3RpdmUoTWFwKSkgc2hvdWxkIHJldHVybiByZWFkb25seSArIHJlYWN0aXZlIHZlcnNpb25cclxuICAgIC8vIG9mIHRoZSB2YWx1ZVxyXG4gICAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgaWYgKCFpc1JlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gcmF3S2V5KSB7XHJcbiAgICAgICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgcmF3S2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgaGFzIH0gPSBnZXRQcm90byhyYXdUYXJnZXQpO1xyXG4gICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgIGlmIChoYXMuY2FsbChyYXdUYXJnZXQsIGtleSkpIHtcclxuICAgICAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaGFzLmNhbGwocmF3VGFyZ2V0LCByYXdLZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXAodGFyZ2V0LmdldChyYXdLZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRhcmdldCAhPT0gcmF3VGFyZ2V0KSB7XHJcbiAgICAgICAgLy8gIzM2MDIgcmVhZG9ubHkocmVhY3RpdmUoTWFwKSlcclxuICAgICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgbmVzdGVkIHJlYWN0aXZlIGBNYXBgIGNhbiBkbyB0cmFja2luZyBmb3IgaXRzZWxmXHJcbiAgICAgICAgdGFyZ2V0LmdldChrZXkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGhhcyQxKGtleSwgaXNSZWFkb25seSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgaWYgKCFpc1JlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gcmF3S2V5KSB7XHJcbiAgICAgICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJoYXNcIiAvKiBUcmFja09wVHlwZXMuSEFTICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaGFzXCIgLyogVHJhY2tPcFR5cGVzLkhBUyAqLywgcmF3S2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXkgPT09IHJhd0tleVxyXG4gICAgICAgID8gdGFyZ2V0LmhhcyhrZXkpXHJcbiAgICAgICAgOiB0YXJnZXQuaGFzKGtleSkgfHwgdGFyZ2V0LmhhcyhyYXdLZXkpO1xyXG59XHJcbmZ1bmN0aW9uIHNpemUodGFyZ2V0LCBpc1JlYWRvbmx5ID0gZmFsc2UpIHtcclxuICAgIHRhcmdldCA9IHRhcmdldFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICAhaXNSZWFkb25seSAmJiB0cmFjayh0b1Jhdyh0YXJnZXQpLCBcIml0ZXJhdGVcIiAvKiBUcmFja09wVHlwZXMuSVRFUkFURSAqLywgSVRFUkFURV9LRVkpO1xyXG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgJ3NpemUnLCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xyXG4gICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHByb3RvID0gZ2V0UHJvdG8odGFyZ2V0KTtcclxuICAgIGNvbnN0IGhhZEtleSA9IHByb3RvLmhhcy5jYWxsKHRhcmdldCwgdmFsdWUpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICB0YXJnZXQuYWRkKHZhbHVlKTtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8sIHZhbHVlLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxufVxyXG5mdW5jdGlvbiBzZXQkMShrZXksIHZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgeyBoYXMsIGdldCB9ID0gZ2V0UHJvdG8odGFyZ2V0KTtcclxuICAgIGxldCBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIGtleSA9IHRvUmF3KGtleSk7XHJcbiAgICAgICAgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGdldC5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIHRhcmdldC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLywga2V5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChoYXNDaGFuZ2VkKHZhbHVlLCBvbGRWYWx1ZSkpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sIGtleSwgdmFsdWUsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59XHJcbmZ1bmN0aW9uIGRlbGV0ZUVudHJ5KGtleSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCB7IGhhcywgZ2V0IH0gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgbGV0IGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAga2V5ID0gdG9SYXcoa2V5KTtcclxuICAgICAgICBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0ID8gZ2V0LmNhbGwodGFyZ2V0LCBrZXkpIDogdW5kZWZpbmVkO1xyXG4gICAgLy8gZm9yd2FyZCB0aGUgb3BlcmF0aW9uIGJlZm9yZSBxdWV1ZWluZyByZWFjdGlvbnNcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5kZWxldGUoa2V5KTtcclxuICAgIGlmIChoYWRLZXkpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8sIGtleSwgdW5kZWZpbmVkLCBvbGRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGNsZWFyKCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCBoYWRJdGVtcyA9IHRhcmdldC5zaXplICE9PSAwO1xyXG4gICAgY29uc3Qgb2xkVGFyZ2V0ID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBpc01hcCh0YXJnZXQpXHJcbiAgICAgICAgICAgID8gbmV3IE1hcCh0YXJnZXQpXHJcbiAgICAgICAgICAgIDogbmV3IFNldCh0YXJnZXQpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAvLyBmb3J3YXJkIHRoZSBvcGVyYXRpb24gYmVmb3JlIHF1ZXVlaW5nIHJlYWN0aW9uc1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0LmNsZWFyKCk7XHJcbiAgICBpZiAoaGFkSXRlbXMpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb2xkVGFyZ2V0KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRm9yRWFjaChpc1JlYWRvbmx5LCBpc1NoYWxsb3cpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZWQgPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IG9ic2VydmVkW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgICAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICAgICAgIWlzUmVhZG9ubHkgJiYgdHJhY2socmF3VGFyZ2V0LCBcIml0ZXJhdGVcIiAvKiBUcmFja09wVHlwZXMuSVRFUkFURSAqLywgSVRFUkFURV9LRVkpO1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBpbXBvcnRhbnQ6IG1ha2Ugc3VyZSB0aGUgY2FsbGJhY2sgaXNcclxuICAgICAgICAgICAgLy8gMS4gaW52b2tlZCB3aXRoIHRoZSByZWFjdGl2ZSBtYXAgYXMgYHRoaXNgIGFuZCAzcmQgYXJnXHJcbiAgICAgICAgICAgIC8vIDIuIHRoZSB2YWx1ZSByZWNlaXZlZCBzaG91bGQgYmUgYSBjb3JyZXNwb25kaW5nIHJlYWN0aXZlL3JlYWRvbmx5LlxyXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB3cmFwKHZhbHVlKSwgd3JhcChrZXkpLCBvYnNlcnZlZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgaXNSZWFkb25seSwgaXNTaGFsbG93KSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgICAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldElzTWFwID0gaXNNYXAocmF3VGFyZ2V0KTtcclxuICAgICAgICBjb25zdCBpc1BhaXIgPSBtZXRob2QgPT09ICdlbnRyaWVzJyB8fCAobWV0aG9kID09PSBTeW1ib2wuaXRlcmF0b3IgJiYgdGFyZ2V0SXNNYXApO1xyXG4gICAgICAgIGNvbnN0IGlzS2V5T25seSA9IG1ldGhvZCA9PT0gJ2tleXMnICYmIHRhcmdldElzTWFwO1xyXG4gICAgICAgIGNvbnN0IGlubmVySXRlcmF0b3IgPSB0YXJnZXRbbWV0aG9kXSguLi5hcmdzKTtcclxuICAgICAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgICAgICFpc1JlYWRvbmx5ICYmXHJcbiAgICAgICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIGlzS2V5T25seSA/IE1BUF9LRVlfSVRFUkFURV9LRVkgOiBJVEVSQVRFX0tFWSk7XHJcbiAgICAgICAgLy8gcmV0dXJuIGEgd3JhcHBlZCBpdGVyYXRvciB3aGljaCByZXR1cm5zIG9ic2VydmVkIHZlcnNpb25zIG9mIHRoZVxyXG4gICAgICAgIC8vIHZhbHVlcyBlbWl0dGVkIGZyb20gdGhlIHJlYWwgaXRlcmF0b3JcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAvLyBpdGVyYXRvciBwcm90b2NvbFxyXG4gICAgICAgICAgICBuZXh0KCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gaW5uZXJJdGVyYXRvci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZVxyXG4gICAgICAgICAgICAgICAgICAgID8geyB2YWx1ZSwgZG9uZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpc1BhaXIgPyBbd3JhcCh2YWx1ZVswXSksIHdyYXAodmFsdWVbMV0pXSA6IHdyYXAodmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gaXRlcmFibGUgcHJvdG9jb2xcclxuICAgICAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlYWRvbmx5TWV0aG9kKHR5cGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gYXJnc1swXSA/IGBvbiBrZXkgXCIke2FyZ3NbMF19XCIgYCA6IGBgO1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7Y2FwaXRhbGl6ZSh0eXBlKX0gb3BlcmF0aW9uICR7a2V5fWZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsIHRvUmF3KHRoaXMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09IFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovID8gZmFsc2UgOiB0aGlzO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbnN0cnVtZW50YXRpb25zKCkge1xyXG4gICAgY29uc3QgbXV0YWJsZUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhczogaGFzJDEsXHJcbiAgICAgICAgYWRkLFxyXG4gICAgICAgIHNldDogc2V0JDEsXHJcbiAgICAgICAgZGVsZXRlOiBkZWxldGVFbnRyeSxcclxuICAgICAgICBjbGVhcixcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKGZhbHNlLCBmYWxzZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBzaGFsbG93SW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXksIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhczogaGFzJDEsXHJcbiAgICAgICAgYWRkLFxyXG4gICAgICAgIHNldDogc2V0JDEsXHJcbiAgICAgICAgZGVsZXRlOiBkZWxldGVFbnRyeSxcclxuICAgICAgICBjbGVhcixcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKGZhbHNlLCB0cnVlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXksIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaGFzJDEuY2FsbCh0aGlzLCBrZXksIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWRkOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLyksXHJcbiAgICAgICAgc2V0OiBjcmVhdGVSZWFkb25seU1ldGhvZChcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLyksXHJcbiAgICAgICAgZGVsZXRlOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLyksXHJcbiAgICAgICAgY2xlYXI6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLyksXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaCh0cnVlLCBmYWxzZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcywgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXMoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXMkMS5jYWxsKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovKSxcclxuICAgICAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovKSxcclxuICAgICAgICBkZWxldGU6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovKSxcclxuICAgICAgICBjbGVhcjogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovKSxcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKHRydWUsIHRydWUpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgaXRlcmF0b3JNZXRob2RzID0gWydrZXlzJywgJ3ZhbHVlcycsICdlbnRyaWVzJywgU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGl0ZXJhdG9yTWV0aG9kcy5mb3JFYWNoKG1ldGhvZCA9PiB7XHJcbiAgICAgICAgbXV0YWJsZUluc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICByZWFkb25seUluc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIHRydWUsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIG11dGFibGVJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyxcclxuICAgICAgICBzaGFsbG93SW5zdHJ1bWVudGF0aW9ucyxcclxuICAgICAgICBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICBdO1xyXG59XHJcbmNvbnN0IFttdXRhYmxlSW5zdHJ1bWVudGF0aW9ucywgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zLCBzaGFsbG93SW5zdHJ1bWVudGF0aW9ucywgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc10gPSAvKiAjX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25zKCk7XHJcbmZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihpc1JlYWRvbmx5LCBzaGFsbG93KSB7XHJcbiAgICBjb25zdCBpbnN0cnVtZW50YXRpb25zID0gc2hhbGxvd1xyXG4gICAgICAgID8gaXNSZWFkb25seVxyXG4gICAgICAgICAgICA/IHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiBzaGFsbG93SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgIDogaXNSZWFkb25seVxyXG4gICAgICAgICAgICA/IHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IG11dGFibGVJbnN0cnVtZW50YXRpb25zO1xyXG4gICAgcmV0dXJuICh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpID0+IHtcclxuICAgICAgICBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KGhhc093bihpbnN0cnVtZW50YXRpb25zLCBrZXkpICYmIGtleSBpbiB0YXJnZXRcclxuICAgICAgICAgICAgPyBpbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogdGFyZ2V0LCBrZXksIHJlY2VpdmVyKTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgbXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoZmFsc2UsIGZhbHNlKVxyXG59O1xyXG5jb25zdCBzaGFsbG93Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihmYWxzZSwgdHJ1ZSlcclxufTtcclxuY29uc3QgcmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKHRydWUsIGZhbHNlKVxyXG59O1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKHRydWUsIHRydWUpXHJcbn07XHJcbmZ1bmN0aW9uIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpIHtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAocmF3S2V5ICE9PSBrZXkgJiYgaGFzLmNhbGwodGFyZ2V0LCByYXdLZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHRvUmF3VHlwZSh0YXJnZXQpO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgUmVhY3RpdmUgJHt0eXBlfSBjb250YWlucyBib3RoIHRoZSByYXcgYW5kIHJlYWN0aXZlIGAgK1xyXG4gICAgICAgICAgICBgdmVyc2lvbnMgb2YgdGhlIHNhbWUgb2JqZWN0JHt0eXBlID09PSBgTWFwYCA/IGAgYXMga2V5c2AgOiBgYH0sIGAgK1xyXG4gICAgICAgICAgICBgd2hpY2ggY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzLiBgICtcclxuICAgICAgICAgICAgYEF2b2lkIGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHRoZSByYXcgYW5kIHJlYWN0aXZlIHZlcnNpb25zIGAgK1xyXG4gICAgICAgICAgICBgb2YgYW4gb2JqZWN0IGFuZCBvbmx5IHVzZSB0aGUgcmVhY3RpdmUgdmVyc2lvbiBpZiBwb3NzaWJsZS5gKTtcclxuICAgIH1cclxufVxuXG5jb25zdCByZWFjdGl2ZU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IHNoYWxsb3dSZWFjdGl2ZU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IHJlYWRvbmx5TWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3Qgc2hhbGxvd1JlYWRvbmx5TWFwID0gbmV3IFdlYWtNYXAoKTtcclxuZnVuY3Rpb24gdGFyZ2V0VHlwZU1hcChyYXdUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKHJhd1R5cGUpIHtcclxuICAgICAgICBjYXNlICdPYmplY3QnOlxyXG4gICAgICAgIGNhc2UgJ0FycmF5JzpcclxuICAgICAgICAgICAgcmV0dXJuIDEgLyogVGFyZ2V0VHlwZS5DT01NT04gKi87XHJcbiAgICAgICAgY2FzZSAnTWFwJzpcclxuICAgICAgICBjYXNlICdTZXQnOlxyXG4gICAgICAgIGNhc2UgJ1dlYWtNYXAnOlxyXG4gICAgICAgIGNhc2UgJ1dlYWtTZXQnOlxyXG4gICAgICAgICAgICByZXR1cm4gMiAvKiBUYXJnZXRUeXBlLkNPTExFQ1RJT04gKi87XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIDAgLyogVGFyZ2V0VHlwZS5JTlZBTElEICovO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldFRhcmdldFR5cGUodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZVtcIl9fdl9za2lwXCIgLyogUmVhY3RpdmVGbGFncy5TS0lQICovXSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWx1ZSlcclxuICAgICAgICA/IDAgLyogVGFyZ2V0VHlwZS5JTlZBTElEICovXHJcbiAgICAgICAgOiB0YXJnZXRUeXBlTWFwKHRvUmF3VHlwZSh2YWx1ZSkpO1xyXG59XHJcbmZ1bmN0aW9uIHJlYWN0aXZlKHRhcmdldCkge1xyXG4gICAgLy8gaWYgdHJ5aW5nIHRvIG9ic2VydmUgYSByZWFkb25seSBwcm94eSwgcmV0dXJuIHRoZSByZWFkb25seSB2ZXJzaW9uLlxyXG4gICAgaWYgKGlzUmVhZG9ubHkodGFyZ2V0KSkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCBmYWxzZSwgbXV0YWJsZUhhbmRsZXJzLCBtdXRhYmxlQ29sbGVjdGlvbkhhbmRsZXJzLCByZWFjdGl2ZU1hcCk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybiBhIHNoYWxsb3dseS1yZWFjdGl2ZSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBvYmplY3QsIHdoZXJlIG9ubHkgdGhlIHJvb3RcclxuICogbGV2ZWwgcHJvcGVydGllcyBhcmUgcmVhY3RpdmUuIEl0IGFsc28gZG9lcyBub3QgYXV0by11bndyYXAgcmVmcyAoZXZlbiBhdCB0aGVcclxuICogcm9vdCBsZXZlbCkuXHJcbiAqL1xyXG5mdW5jdGlvbiBzaGFsbG93UmVhY3RpdmUodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCBmYWxzZSwgc2hhbGxvd1JlYWN0aXZlSGFuZGxlcnMsIHNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMsIHNoYWxsb3dSZWFjdGl2ZU1hcCk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSByZWFkb25seSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBvYmplY3QuIE5vdGUgdGhlIHJldHVybmVkIGNvcHkgaXMgbm90XHJcbiAqIG1hZGUgcmVhY3RpdmUsIGJ1dCBgcmVhZG9ubHlgIGNhbiBiZSBjYWxsZWQgb24gYW4gYWxyZWFkeSByZWFjdGl2ZSBvYmplY3QuXHJcbiAqL1xyXG5mdW5jdGlvbiByZWFkb25seSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIHRydWUsIHJlYWRvbmx5SGFuZGxlcnMsIHJlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzLCByZWFkb25seU1hcCk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgYSByZWFjdGl2ZS1jb3B5IG9mIHRoZSBvcmlnaW5hbCBvYmplY3QsIHdoZXJlIG9ubHkgdGhlIHJvb3QgbGV2ZWxcclxuICogcHJvcGVydGllcyBhcmUgcmVhZG9ubHksIGFuZCBkb2VzIE5PVCB1bndyYXAgcmVmcyBub3IgcmVjdXJzaXZlbHkgY29udmVydFxyXG4gKiByZXR1cm5lZCBwcm9wZXJ0aWVzLlxyXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBwcm9wcyBwcm94eSBvYmplY3QgZm9yIHN0YXRlZnVsIGNvbXBvbmVudHMuXHJcbiAqL1xyXG5mdW5jdGlvbiBzaGFsbG93UmVhZG9ubHkodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCB0cnVlLCBzaGFsbG93UmVhZG9ubHlIYW5kbGVycywgc2hhbGxvd1JlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzLCBzaGFsbG93UmVhZG9ubHlNYXApO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgaXNSZWFkb25seSwgYmFzZUhhbmRsZXJzLCBjb2xsZWN0aW9uSGFuZGxlcnMsIHByb3h5TWFwKSB7XHJcbiAgICBpZiAoIWlzT2JqZWN0KHRhcmdldCkpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgdmFsdWUgY2Fubm90IGJlIG1hZGUgcmVhY3RpdmU6ICR7U3RyaW5nKHRhcmdldCl9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICAvLyB0YXJnZXQgaXMgYWxyZWFkeSBhIFByb3h5LCByZXR1cm4gaXQuXHJcbiAgICAvLyBleGNlcHRpb246IGNhbGxpbmcgcmVhZG9ubHkoKSBvbiBhIHJlYWN0aXZlIG9iamVjdFxyXG4gICAgaWYgKHRhcmdldFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL10gJiZcclxuICAgICAgICAhKGlzUmVhZG9ubHkgJiYgdGFyZ2V0W1wiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovXSkpIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLy8gdGFyZ2V0IGFscmVhZHkgaGFzIGNvcnJlc3BvbmRpbmcgUHJveHlcclxuICAgIGNvbnN0IGV4aXN0aW5nUHJveHkgPSBwcm94eU1hcC5nZXQodGFyZ2V0KTtcclxuICAgIGlmIChleGlzdGluZ1Byb3h5KSB7XHJcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nUHJveHk7XHJcbiAgICB9XHJcbiAgICAvLyBvbmx5IHNwZWNpZmljIHZhbHVlIHR5cGVzIGNhbiBiZSBvYnNlcnZlZC5cclxuICAgIGNvbnN0IHRhcmdldFR5cGUgPSBnZXRUYXJnZXRUeXBlKHRhcmdldCk7XHJcbiAgICBpZiAodGFyZ2V0VHlwZSA9PT0gMCAvKiBUYXJnZXRUeXBlLklOVkFMSUQgKi8pIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCB0YXJnZXRUeXBlID09PSAyIC8qIFRhcmdldFR5cGUuQ09MTEVDVElPTiAqLyA/IGNvbGxlY3Rpb25IYW5kbGVycyA6IGJhc2VIYW5kbGVycyk7XHJcbiAgICBwcm94eU1hcC5zZXQodGFyZ2V0LCBwcm94eSk7XHJcbiAgICByZXR1cm4gcHJveHk7XHJcbn1cclxuZnVuY3Rpb24gaXNSZWFjdGl2ZSh2YWx1ZSkge1xyXG4gICAgaWYgKGlzUmVhZG9ubHkodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGlzUmVhY3RpdmUodmFsdWVbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dKTtcclxuICAgIH1cclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqL10pO1xyXG59XHJcbmZ1bmN0aW9uIGlzUmVhZG9ubHkodmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqL10pO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2hhbGxvdyh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzU2hhbGxvd1wiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfU0hBTExPVyAqL10pO1xyXG59XHJcbmZ1bmN0aW9uIGlzUHJveHkodmFsdWUpIHtcclxuICAgIHJldHVybiBpc1JlYWN0aXZlKHZhbHVlKSB8fCBpc1JlYWRvbmx5KHZhbHVlKTtcclxufVxyXG5mdW5jdGlvbiB0b1JhdyhvYnNlcnZlZCkge1xyXG4gICAgY29uc3QgcmF3ID0gb2JzZXJ2ZWQgJiYgb2JzZXJ2ZWRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgcmV0dXJuIHJhdyA/IHRvUmF3KHJhdykgOiBvYnNlcnZlZDtcclxufVxyXG5mdW5jdGlvbiBtYXJrUmF3KHZhbHVlKSB7XHJcbiAgICBkZWYodmFsdWUsIFwiX192X3NraXBcIiAvKiBSZWFjdGl2ZUZsYWdzLlNLSVAgKi8sIHRydWUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbmNvbnN0IHRvUmVhY3RpdmUgPSAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSA/IHJlYWN0aXZlKHZhbHVlKSA6IHZhbHVlO1xyXG5jb25zdCB0b1JlYWRvbmx5ID0gKHZhbHVlKSA9PiBpc09iamVjdCh2YWx1ZSkgPyByZWFkb25seSh2YWx1ZSkgOiB2YWx1ZTtcblxuZnVuY3Rpb24gdHJhY2tSZWZWYWx1ZShyZWYpIHtcclxuICAgIGlmIChzaG91bGRUcmFjayAmJiBhY3RpdmVFZmZlY3QpIHtcclxuICAgICAgICByZWYgPSB0b1JhdyhyZWYpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgdHJhY2tFZmZlY3RzKHJlZi5kZXAgfHwgKHJlZi5kZXAgPSBjcmVhdGVEZXAoKSksIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldDogcmVmLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLFxyXG4gICAgICAgICAgICAgICAga2V5OiAndmFsdWUnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJhY2tFZmZlY3RzKHJlZi5kZXAgfHwgKHJlZi5kZXAgPSBjcmVhdGVEZXAoKSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyUmVmVmFsdWUocmVmLCBuZXdWYWwpIHtcclxuICAgIHJlZiA9IHRvUmF3KHJlZik7XHJcbiAgICBpZiAocmVmLmRlcCkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMocmVmLmRlcCwge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiByZWYsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLyxcclxuICAgICAgICAgICAgICAgIGtleTogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhyZWYuZGVwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNSZWYocikge1xyXG4gICAgcmV0dXJuICEhKHIgJiYgci5fX3ZfaXNSZWYgPT09IHRydWUpO1xyXG59XHJcbmZ1bmN0aW9uIHJlZih2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlZih2YWx1ZSwgZmFsc2UpO1xyXG59XHJcbmZ1bmN0aW9uIHNoYWxsb3dSZWYodmFsdWUpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWYodmFsdWUsIHRydWUpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlZihyYXdWYWx1ZSwgc2hhbGxvdykge1xyXG4gICAgaWYgKGlzUmVmKHJhd1ZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiByYXdWYWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUmVmSW1wbChyYXdWYWx1ZSwgc2hhbGxvdyk7XHJcbn1cclxuY2xhc3MgUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZSwgX192X2lzU2hhbGxvdykge1xyXG4gICAgICAgIHRoaXMuX192X2lzU2hhbGxvdyA9IF9fdl9pc1NoYWxsb3c7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gX192X2lzU2hhbGxvdyA/IHZhbHVlIDogdG9SYXcodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gX192X2lzU2hhbGxvdyA/IHZhbHVlIDogdG9SZWFjdGl2ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgdHJhY2tSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsKSB7XHJcbiAgICAgICAgY29uc3QgdXNlRGlyZWN0VmFsdWUgPSB0aGlzLl9fdl9pc1NoYWxsb3cgfHwgaXNTaGFsbG93KG5ld1ZhbCkgfHwgaXNSZWFkb25seShuZXdWYWwpO1xyXG4gICAgICAgIG5ld1ZhbCA9IHVzZURpcmVjdFZhbHVlID8gbmV3VmFsIDogdG9SYXcobmV3VmFsKTtcclxuICAgICAgICBpZiAoaGFzQ2hhbmdlZChuZXdWYWwsIHRoaXMuX3Jhd1ZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IG5ld1ZhbDtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB1c2VEaXJlY3RWYWx1ZSA/IG5ld1ZhbCA6IHRvUmVhY3RpdmUobmV3VmFsKTtcclxuICAgICAgICAgICAgdHJpZ2dlclJlZlZhbHVlKHRoaXMsIG5ld1ZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJSZWYocmVmKSB7XHJcbiAgICB0cmlnZ2VyUmVmVmFsdWUocmVmLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyByZWYudmFsdWUgOiB2b2lkIDApO1xyXG59XHJcbmZ1bmN0aW9uIHVucmVmKHJlZikge1xyXG4gICAgcmV0dXJuIGlzUmVmKHJlZikgPyByZWYudmFsdWUgOiByZWY7XHJcbn1cclxuY29uc3Qgc2hhbGxvd1Vud3JhcEhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSA9PiB1bnJlZihSZWZsZWN0LmdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpKSxcclxuICAgIHNldDogKHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpID0+IHtcclxuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgICAgIGlmIChpc1JlZihvbGRWYWx1ZSkgJiYgIWlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBvbGRWYWx1ZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHByb3h5UmVmcyhvYmplY3RXaXRoUmVmcykge1xyXG4gICAgcmV0dXJuIGlzUmVhY3RpdmUob2JqZWN0V2l0aFJlZnMpXHJcbiAgICAgICAgPyBvYmplY3RXaXRoUmVmc1xyXG4gICAgICAgIDogbmV3IFByb3h5KG9iamVjdFdpdGhSZWZzLCBzaGFsbG93VW53cmFwSGFuZGxlcnMpO1xyXG59XHJcbmNsYXNzIEN1c3RvbVJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZmFjdG9yeSkge1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB7IGdldCwgc2V0IH0gPSBmYWN0b3J5KCgpID0+IHRyYWNrUmVmVmFsdWUodGhpcyksICgpID0+IHRyaWdnZXJSZWZWYWx1ZSh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fZ2V0ID0gZ2V0O1xyXG4gICAgICAgIHRoaXMuX3NldCA9IHNldDtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0KCk7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0KG5ld1ZhbCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3VzdG9tUmVmKGZhY3RvcnkpIHtcclxuICAgIHJldHVybiBuZXcgQ3VzdG9tUmVmSW1wbChmYWN0b3J5KTtcclxufVxyXG5mdW5jdGlvbiB0b1JlZnMob2JqZWN0KSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1Byb3h5KG9iamVjdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYHRvUmVmcygpIGV4cGVjdHMgYSByZWFjdGl2ZSBvYmplY3QgYnV0IHJlY2VpdmVkIGEgcGxhaW4gb25lLmApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0ID0gaXNBcnJheShvYmplY3QpID8gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpIDoge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcclxuICAgICAgICByZXRba2V5XSA9IHRvUmVmKG9iamVjdCwga2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuY2xhc3MgT2JqZWN0UmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihfb2JqZWN0LCBfa2V5LCBfZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0ID0gX29iamVjdDtcclxuICAgICAgICB0aGlzLl9rZXkgPSBfa2V5O1xyXG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IF9kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuX29iamVjdFt0aGlzLl9rZXldO1xyXG4gICAgICAgIHJldHVybiB2YWwgPT09IHVuZGVmaW5lZCA/IHRoaXMuX2RlZmF1bHRWYWx1ZSA6IHZhbDtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3RbdGhpcy5fa2V5XSA9IG5ld1ZhbDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0b1JlZihvYmplY3QsIGtleSwgZGVmYXVsdFZhbHVlKSB7XHJcbiAgICBjb25zdCB2YWwgPSBvYmplY3Rba2V5XTtcclxuICAgIHJldHVybiBpc1JlZih2YWwpXHJcbiAgICAgICAgPyB2YWxcclxuICAgICAgICA6IG5ldyBPYmplY3RSZWZJbXBsKG9iamVjdCwga2V5LCBkZWZhdWx0VmFsdWUpO1xyXG59XG5cbnZhciBfYTtcclxuY2xhc3MgQ29tcHV0ZWRSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGdldHRlciwgX3NldHRlciwgaXNSZWFkb25seSwgaXNTU1IpIHtcclxuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBfc2V0dGVyO1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzW19hXSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChnZXR0ZXIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9kaXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlclJlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuY29tcHV0ZWQgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0LmFjdGl2ZSA9IHRoaXMuX2NhY2hlYWJsZSA9ICFpc1NTUjtcclxuICAgICAgICB0aGlzW1wiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovXSA9IGlzUmVhZG9ubHk7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgLy8gdGhlIGNvbXB1dGVkIHJlZiBtYXkgZ2V0IHdyYXBwZWQgYnkgb3RoZXIgcHJveGllcyBlLmcuIHJlYWRvbmx5KCkgIzMzNzZcclxuICAgICAgICBjb25zdCBzZWxmID0gdG9SYXcodGhpcyk7XHJcbiAgICAgICAgdHJhY2tSZWZWYWx1ZShzZWxmKTtcclxuICAgICAgICBpZiAoc2VsZi5fZGlydHkgfHwgIXNlbGYuX2NhY2hlYWJsZSkge1xyXG4gICAgICAgICAgICBzZWxmLl9kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zZXR0ZXIobmV3VmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbl9hID0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi87XHJcbmZ1bmN0aW9uIGNvbXB1dGVkKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zLCBpc1NTUiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgZ2V0dGVyO1xyXG4gICAgbGV0IHNldHRlcjtcclxuICAgIGNvbnN0IG9ubHlHZXR0ZXIgPSBpc0Z1bmN0aW9uKGdldHRlck9yT3B0aW9ucyk7XHJcbiAgICBpZiAob25seUdldHRlcikge1xyXG4gICAgICAgIGdldHRlciA9IGdldHRlck9yT3B0aW9ucztcclxuICAgICAgICBzZXR0ZXIgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgPyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dyaXRlIG9wZXJhdGlvbiBmYWlsZWQ6IGNvbXB1dGVkIHZhbHVlIGlzIHJlYWRvbmx5Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZ2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zLmdldDtcclxuICAgICAgICBzZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnMuc2V0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY1JlZiA9IG5ldyBDb21wdXRlZFJlZkltcGwoZ2V0dGVyLCBzZXR0ZXIsIG9ubHlHZXR0ZXIgfHwgIXNldHRlciwgaXNTU1IpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBkZWJ1Z09wdGlvbnMgJiYgIWlzU1NSKSB7XHJcbiAgICAgICAgY1JlZi5lZmZlY3Qub25UcmFjayA9IGRlYnVnT3B0aW9ucy5vblRyYWNrO1xyXG4gICAgICAgIGNSZWYuZWZmZWN0Lm9uVHJpZ2dlciA9IGRlYnVnT3B0aW9ucy5vblRyaWdnZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY1JlZjtcclxufVxuXG52YXIgX2EkMTtcclxuY29uc3QgdGljayA9IC8qI19fUFVSRV9fKi8gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbmNvbnN0IHF1ZXVlID0gW107XHJcbmxldCBxdWV1ZWQgPSBmYWxzZTtcclxuY29uc3Qgc2NoZWR1bGVyID0gKGZuKSA9PiB7XHJcbiAgICBxdWV1ZS5wdXNoKGZuKTtcclxuICAgIGlmICghcXVldWVkKSB7XHJcbiAgICAgICAgcXVldWVkID0gdHJ1ZTtcclxuICAgICAgICB0aWNrLnRoZW4oZmx1c2gpO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBmbHVzaCA9ICgpID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBxdWV1ZVtpXSgpO1xyXG4gICAgfVxyXG4gICAgcXVldWUubGVuZ3RoID0gMDtcclxuICAgIHF1ZXVlZCA9IGZhbHNlO1xyXG59O1xyXG5jbGFzcyBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihnZXR0ZXIpIHtcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIHRoaXNbX2EkMV0gPSB0cnVlO1xyXG4gICAgICAgIGxldCBjb21wYXJlVGFyZ2V0O1xyXG4gICAgICAgIGxldCBoYXNDb21wYXJlVGFyZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHNjaGVkdWxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGdldHRlciwgKGNvbXB1dGVkVHJpZ2dlcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXApIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wdXRlZFRyaWdnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wYXJlVGFyZ2V0ID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQ29tcGFyZVRhcmdldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghc2NoZWR1bGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVUb0NvbXBhcmUgPSBoYXNDb21wYXJlVGFyZ2V0ID8gY29tcGFyZVRhcmdldCA6IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQ29tcGFyZVRhcmdldCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVmZmVjdC5hY3RpdmUgJiYgdGhpcy5fZ2V0KCkgIT09IHZhbHVlVG9Db21wYXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjaGFpbmVkIHVwc3RyZWFtIGNvbXB1dGVkcyBhcmUgbm90aWZpZWQgc3luY2hyb25vdXNseSB0byBlbnN1cmVcclxuICAgICAgICAgICAgICAgIC8vIHZhbHVlIGludmFsaWRhdGlvbiBpbiBjYXNlIG9mIHN5bmMgYWNjZXNzOyBub3JtYWwgZWZmZWN0cyBhcmVcclxuICAgICAgICAgICAgICAgIC8vIGRlZmVycmVkIHRvIGJlIHRyaWdnZXJlZCBpbiBzY2hlZHVsZXIuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5kZXApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5jb21wdXRlZCBpbnN0YW5jZW9mIERlZmVycmVkQ29tcHV0ZWRSZWZJbXBsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2NoZWR1bGVyKHRydWUgLyogY29tcHV0ZWRUcmlnZ2VyICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0LmNvbXB1dGVkID0gdGhpcztcclxuICAgIH1cclxuICAgIF9nZXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RpcnR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5fdmFsdWUgPSB0aGlzLmVmZmVjdC5ydW4oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgIC8vIHRoZSBjb21wdXRlZCByZWYgbWF5IGdldCB3cmFwcGVkIGJ5IG90aGVyIHByb3hpZXMgZS5nLiByZWFkb25seSgpICMzMzc2XHJcbiAgICAgICAgcmV0dXJuIHRvUmF3KHRoaXMpLl9nZXQoKTtcclxuICAgIH1cclxufVxyXG5fYSQxID0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi87XHJcbmZ1bmN0aW9uIGRlZmVycmVkQ29tcHV0ZWQoZ2V0dGVyKSB7XHJcbiAgICByZXR1cm4gbmV3IERlZmVycmVkQ29tcHV0ZWRSZWZJbXBsKGdldHRlcik7XHJcbn1cblxuZXhwb3J0IHsgRWZmZWN0U2NvcGUsIElURVJBVEVfS0VZLCBSZWFjdGl2ZUVmZmVjdCwgY29tcHV0ZWQsIGN1c3RvbVJlZiwgZGVmZXJyZWRDb21wdXRlZCwgZWZmZWN0LCBlZmZlY3RTY29wZSwgZW5hYmxlVHJhY2tpbmcsIGdldEN1cnJlbnRTY29wZSwgaXNQcm94eSwgaXNSZWFjdGl2ZSwgaXNSZWFkb25seSwgaXNSZWYsIGlzU2hhbGxvdywgbWFya1Jhdywgb25TY29wZURpc3Bvc2UsIHBhdXNlVHJhY2tpbmcsIHByb3h5UmVmcywgcmVhY3RpdmUsIHJlYWRvbmx5LCByZWYsIHJlc2V0VHJhY2tpbmcsIHNoYWxsb3dSZWFjdGl2ZSwgc2hhbGxvd1JlYWRvbmx5LCBzaGFsbG93UmVmLCBzdG9wLCB0b1JhdywgdG9SZWYsIHRvUmVmcywgdHJhY2ssIHRyaWdnZXIsIHRyaWdnZXJSZWYsIHVucmVmIH07XG4iLCJpbXBvcnQgeyBwYXVzZVRyYWNraW5nLCByZXNldFRyYWNraW5nLCBpc1JlZiwgdG9SYXcsIGlzU2hhbGxvdyBhcyBpc1NoYWxsb3ckMSwgaXNSZWFjdGl2ZSwgUmVhY3RpdmVFZmZlY3QsIHJlZiwgc2hhbGxvd1JlYWRvbmx5LCB0cmFjaywgcmVhY3RpdmUsIHNoYWxsb3dSZWFjdGl2ZSwgdHJpZ2dlciwgaXNQcm94eSwgRWZmZWN0U2NvcGUsIG1hcmtSYXcsIHByb3h5UmVmcywgY29tcHV0ZWQgYXMgY29tcHV0ZWQkMSwgaXNSZWFkb25seSB9IGZyb20gJ0B2dWUvcmVhY3Rpdml0eSc7XG5leHBvcnQgeyBFZmZlY3RTY29wZSwgUmVhY3RpdmVFZmZlY3QsIGN1c3RvbVJlZiwgZWZmZWN0LCBlZmZlY3RTY29wZSwgZ2V0Q3VycmVudFNjb3BlLCBpc1Byb3h5LCBpc1JlYWN0aXZlLCBpc1JlYWRvbmx5LCBpc1JlZiwgaXNTaGFsbG93LCBtYXJrUmF3LCBvblNjb3BlRGlzcG9zZSwgcHJveHlSZWZzLCByZWFjdGl2ZSwgcmVhZG9ubHksIHJlZiwgc2hhbGxvd1JlYWN0aXZlLCBzaGFsbG93UmVhZG9ubHksIHNoYWxsb3dSZWYsIHN0b3AsIHRvUmF3LCB0b1JlZiwgdG9SZWZzLCB0cmlnZ2VyUmVmLCB1bnJlZiB9IGZyb20gJ0B2dWUvcmVhY3Rpdml0eSc7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNGdW5jdGlvbiwgaXNQcm9taXNlLCBpc0FycmF5LCBOT09QLCBnZXRHbG9iYWxUaGlzLCBleHRlbmQsIEVNUFRZX09CSiwgdG9IYW5kbGVyS2V5LCB0b051bWJlciwgaHlwaGVuYXRlLCBjYW1lbGl6ZSwgaXNPYmplY3QsIGlzT24sIGhhc093biwgaXNNb2RlbExpc3RlbmVyLCBoYXNDaGFuZ2VkLCByZW1vdmUsIGlzU2V0LCBpc01hcCwgaXNQbGFpbk9iamVjdCwgaW52b2tlQXJyYXlGbnMsIGlzQnVpbHRJbkRpcmVjdGl2ZSwgY2FwaXRhbGl6ZSwgaXNHbG9iYWxseVdoaXRlbGlzdGVkLCBkZWYsIGlzUmVzZXJ2ZWRQcm9wLCBFTVBUWV9BUlIsIHRvUmF3VHlwZSwgbWFrZU1hcCwgTk8sIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVTdHlsZSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcbmV4cG9ydCB7IGNhbWVsaXplLCBjYXBpdGFsaXplLCBub3JtYWxpemVDbGFzcywgbm9ybWFsaXplUHJvcHMsIG5vcm1hbGl6ZVN0eWxlLCB0b0Rpc3BsYXlTdHJpbmcsIHRvSGFuZGxlcktleSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3Qgc3RhY2sgPSBbXTtcclxuZnVuY3Rpb24gcHVzaFdhcm5pbmdDb250ZXh0KHZub2RlKSB7XHJcbiAgICBzdGFjay5wdXNoKHZub2RlKTtcclxufVxyXG5mdW5jdGlvbiBwb3BXYXJuaW5nQ29udGV4dCgpIHtcclxuICAgIHN0YWNrLnBvcCgpO1xyXG59XHJcbmZ1bmN0aW9uIHdhcm4obXNnLCAuLi5hcmdzKSB7XHJcbiAgICAvLyBhdm9pZCBwcm9wcyBmb3JtYXR0aW5nIG9yIHdhcm4gaGFuZGxlciB0cmFja2luZyBkZXBzIHRoYXQgbWlnaHQgYmUgbXV0YXRlZFxyXG4gICAgLy8gZHVyaW5nIHBhdGNoLCBsZWFkaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cclxuICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gc3RhY2subGVuZ3RoID8gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0uY29tcG9uZW50IDogbnVsbDtcclxuICAgIGNvbnN0IGFwcFdhcm5IYW5kbGVyID0gaW5zdGFuY2UgJiYgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcud2FybkhhbmRsZXI7XHJcbiAgICBjb25zdCB0cmFjZSA9IGdldENvbXBvbmVudFRyYWNlKCk7XHJcbiAgICBpZiAoYXBwV2FybkhhbmRsZXIpIHtcclxuICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoYXBwV2FybkhhbmRsZXIsIGluc3RhbmNlLCAxMSAvKiBFcnJvckNvZGVzLkFQUF9XQVJOX0hBTkRMRVIgKi8sIFtcclxuICAgICAgICAgICAgbXNnICsgYXJncy5qb2luKCcnKSxcclxuICAgICAgICAgICAgaW5zdGFuY2UgJiYgaW5zdGFuY2UucHJveHksXHJcbiAgICAgICAgICAgIHRyYWNlXHJcbiAgICAgICAgICAgICAgICAubWFwKCh7IHZub2RlIH0pID0+IGBhdCA8JHtmb3JtYXRDb21wb25lbnROYW1lKGluc3RhbmNlLCB2bm9kZS50eXBlKX0+YClcclxuICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKSxcclxuICAgICAgICAgICAgdHJhY2VcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdhcm5BcmdzID0gW2BbVnVlIHdhcm5dOiAke21zZ31gLCAuLi5hcmdzXTtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICBpZiAodHJhY2UubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIC8vIGF2b2lkIHNwYW1taW5nIGNvbnNvbGUgZHVyaW5nIHRlc3RzXHJcbiAgICAgICAgICAgICFmYWxzZSkge1xyXG4gICAgICAgICAgICB3YXJuQXJncy5wdXNoKGBcXG5gLCAuLi5mb3JtYXRUcmFjZSh0cmFjZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLndhcm4oLi4ud2FybkFyZ3MpO1xyXG4gICAgfVxyXG4gICAgcmVzZXRUcmFja2luZygpO1xyXG59XHJcbmZ1bmN0aW9uIGdldENvbXBvbmVudFRyYWNlKCkge1xyXG4gICAgbGV0IGN1cnJlbnRWTm9kZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKCFjdXJyZW50Vk5vZGUpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICAvLyB3ZSBjYW4ndCBqdXN0IHVzZSB0aGUgc3RhY2sgYmVjYXVzZSBpdCB3aWxsIGJlIGluY29tcGxldGUgZHVyaW5nIHVwZGF0ZXNcclxuICAgIC8vIHRoYXQgZGlkIG5vdCBzdGFydCBmcm9tIHRoZSByb290LiBSZS1jb25zdHJ1Y3QgdGhlIHBhcmVudCBjaGFpbiB1c2luZ1xyXG4gICAgLy8gaW5zdGFuY2UgcGFyZW50IHBvaW50ZXJzLlxyXG4gICAgY29uc3Qgbm9ybWFsaXplZFN0YWNrID0gW107XHJcbiAgICB3aGlsZSAoY3VycmVudFZOb2RlKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdCA9IG5vcm1hbGl6ZWRTdGFja1swXTtcclxuICAgICAgICBpZiAobGFzdCAmJiBsYXN0LnZub2RlID09PSBjdXJyZW50Vk5vZGUpIHtcclxuICAgICAgICAgICAgbGFzdC5yZWN1cnNlQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRTdGFjay5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZub2RlOiBjdXJyZW50Vk5vZGUsXHJcbiAgICAgICAgICAgICAgICByZWN1cnNlQ291bnQ6IDBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gY3VycmVudFZOb2RlLmNvbXBvbmVudCAmJiBjdXJyZW50Vk5vZGUuY29tcG9uZW50LnBhcmVudDtcclxuICAgICAgICBjdXJyZW50Vk5vZGUgPSBwYXJlbnRJbnN0YW5jZSAmJiBwYXJlbnRJbnN0YW5jZS52bm9kZTtcclxuICAgIH1cclxuICAgIHJldHVybiBub3JtYWxpemVkU3RhY2s7XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0VHJhY2UodHJhY2UpIHtcclxuICAgIGNvbnN0IGxvZ3MgPSBbXTtcclxuICAgIHRyYWNlLmZvckVhY2goKGVudHJ5LCBpKSA9PiB7XHJcbiAgICAgICAgbG9ncy5wdXNoKC4uLihpID09PSAwID8gW10gOiBbYFxcbmBdKSwgLi4uZm9ybWF0VHJhY2VFbnRyeShlbnRyeSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbG9ncztcclxufVxyXG5mdW5jdGlvbiBmb3JtYXRUcmFjZUVudHJ5KHsgdm5vZGUsIHJlY3Vyc2VDb3VudCB9KSB7XHJcbiAgICBjb25zdCBwb3N0Zml4ID0gcmVjdXJzZUNvdW50ID4gMCA/IGAuLi4gKCR7cmVjdXJzZUNvdW50fSByZWN1cnNpdmUgY2FsbHMpYCA6IGBgO1xyXG4gICAgY29uc3QgaXNSb290ID0gdm5vZGUuY29tcG9uZW50ID8gdm5vZGUuY29tcG9uZW50LnBhcmVudCA9PSBudWxsIDogZmFsc2U7XHJcbiAgICBjb25zdCBvcGVuID0gYCBhdCA8JHtmb3JtYXRDb21wb25lbnROYW1lKHZub2RlLmNvbXBvbmVudCwgdm5vZGUudHlwZSwgaXNSb290KX1gO1xyXG4gICAgY29uc3QgY2xvc2UgPSBgPmAgKyBwb3N0Zml4O1xyXG4gICAgcmV0dXJuIHZub2RlLnByb3BzXHJcbiAgICAgICAgPyBbb3BlbiwgLi4uZm9ybWF0UHJvcHModm5vZGUucHJvcHMpLCBjbG9zZV1cclxuICAgICAgICA6IFtvcGVuICsgY2xvc2VdO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdFByb3BzKHByb3BzKSB7XHJcbiAgICBjb25zdCByZXMgPSBbXTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcyk7XHJcbiAgICBrZXlzLnNsaWNlKDAsIDMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICByZXMucHVzaCguLi5mb3JtYXRQcm9wKGtleSwgcHJvcHNba2V5XSkpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoa2V5cy5sZW5ndGggPiAzKSB7XHJcbiAgICAgICAgcmVzLnB1c2goYCAuLi5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0UHJvcChrZXksIHZhbHVlLCByYXcpIHtcclxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT0ke3ZhbHVlfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8XHJcbiAgICAgICAgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PSR7dmFsdWV9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZSA9IGZvcm1hdFByb3Aoa2V5LCB0b1Jhdyh2YWx1ZS52YWx1ZSksIHRydWUpO1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PVJlZjxgLCB2YWx1ZSwgYD5gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIFtgJHtrZXl9PWZuJHt2YWx1ZS5uYW1lID8gYDwke3ZhbHVlLm5hbWV9PmAgOiBgYH1gXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PWAsIHZhbHVlXTtcclxuICAgIH1cclxufVxuXG5jb25zdCBFcnJvclR5cGVTdHJpbmdzID0ge1xyXG4gICAgW1wic3BcIiAvKiBMaWZlY3ljbGVIb29rcy5TRVJWRVJfUFJFRkVUQ0ggKi9dOiAnc2VydmVyUHJlZmV0Y2ggaG9vaycsXHJcbiAgICBbXCJiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9DUkVBVEUgKi9dOiAnYmVmb3JlQ3JlYXRlIGhvb2snLFxyXG4gICAgW1wiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkNSRUFURUQgKi9dOiAnY3JlYXRlZCBob29rJyxcclxuICAgIFtcImJtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX01PVU5UICovXTogJ2JlZm9yZU1vdW50IGhvb2snLFxyXG4gICAgW1wibVwiIC8qIExpZmVjeWNsZUhvb2tzLk1PVU5URUQgKi9dOiAnbW91bnRlZCBob29rJyxcclxuICAgIFtcImJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VQREFURSAqL106ICdiZWZvcmVVcGRhdGUgaG9vaycsXHJcbiAgICBbXCJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuVVBEQVRFRCAqL106ICd1cGRhdGVkJyxcclxuICAgIFtcImJ1bVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VTk1PVU5UICovXTogJ2JlZm9yZVVubW91bnQgaG9vaycsXHJcbiAgICBbXCJ1bVwiIC8qIExpZmVjeWNsZUhvb2tzLlVOTU9VTlRFRCAqL106ICd1bm1vdW50ZWQgaG9vaycsXHJcbiAgICBbXCJhXCIgLyogTGlmZWN5Y2xlSG9va3MuQUNUSVZBVEVEICovXTogJ2FjdGl2YXRlZCBob29rJyxcclxuICAgIFtcImRhXCIgLyogTGlmZWN5Y2xlSG9va3MuREVBQ1RJVkFURUQgKi9dOiAnZGVhY3RpdmF0ZWQgaG9vaycsXHJcbiAgICBbXCJlY1wiIC8qIExpZmVjeWNsZUhvb2tzLkVSUk9SX0NBUFRVUkVEICovXTogJ2Vycm9yQ2FwdHVyZWQgaG9vaycsXHJcbiAgICBbXCJydGNcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJBQ0tFRCAqL106ICdyZW5kZXJUcmFja2VkIGhvb2snLFxyXG4gICAgW1wicnRnXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSSUdHRVJFRCAqL106ICdyZW5kZXJUcmlnZ2VyZWQgaG9vaycsXHJcbiAgICBbMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovXTogJ3NldHVwIGZ1bmN0aW9uJyxcclxuICAgIFsxIC8qIEVycm9yQ29kZXMuUkVOREVSX0ZVTkNUSU9OICovXTogJ3JlbmRlciBmdW5jdGlvbicsXHJcbiAgICBbMiAvKiBFcnJvckNvZGVzLldBVENIX0dFVFRFUiAqL106ICd3YXRjaGVyIGdldHRlcicsXHJcbiAgICBbMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovXTogJ3dhdGNoZXIgY2FsbGJhY2snLFxyXG4gICAgWzQgLyogRXJyb3JDb2Rlcy5XQVRDSF9DTEVBTlVQICovXTogJ3dhdGNoZXIgY2xlYW51cCBmdW5jdGlvbicsXHJcbiAgICBbNSAvKiBFcnJvckNvZGVzLk5BVElWRV9FVkVOVF9IQU5ETEVSICovXTogJ25hdGl2ZSBldmVudCBoYW5kbGVyJyxcclxuICAgIFs2IC8qIEVycm9yQ29kZXMuQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIgKi9dOiAnY29tcG9uZW50IGV2ZW50IGhhbmRsZXInLFxyXG4gICAgWzcgLyogRXJyb3JDb2Rlcy5WTk9ERV9IT09LICovXTogJ3Zub2RlIGhvb2snLFxyXG4gICAgWzggLyogRXJyb3JDb2Rlcy5ESVJFQ1RJVkVfSE9PSyAqL106ICdkaXJlY3RpdmUgaG9vaycsXHJcbiAgICBbOSAvKiBFcnJvckNvZGVzLlRSQU5TSVRJT05fSE9PSyAqL106ICd0cmFuc2l0aW9uIGhvb2snLFxyXG4gICAgWzEwIC8qIEVycm9yQ29kZXMuQVBQX0VSUk9SX0hBTkRMRVIgKi9dOiAnYXBwIGVycm9ySGFuZGxlcicsXHJcbiAgICBbMTEgLyogRXJyb3JDb2Rlcy5BUFBfV0FSTl9IQU5ETEVSICovXTogJ2FwcCB3YXJuSGFuZGxlcicsXHJcbiAgICBbMTIgLyogRXJyb3JDb2Rlcy5GVU5DVElPTl9SRUYgKi9dOiAncmVmIGZ1bmN0aW9uJyxcclxuICAgIFsxMyAvKiBFcnJvckNvZGVzLkFTWU5DX0NPTVBPTkVOVF9MT0FERVIgKi9dOiAnYXN5bmMgY29tcG9uZW50IGxvYWRlcicsXHJcbiAgICBbMTQgLyogRXJyb3JDb2Rlcy5TQ0hFRFVMRVIgKi9dOiAnc2NoZWR1bGVyIGZsdXNoLiBUaGlzIGlzIGxpa2VseSBhIFZ1ZSBpbnRlcm5hbHMgYnVnLiAnICtcclxuICAgICAgICAnUGxlYXNlIG9wZW4gYW4gaXNzdWUgYXQgaHR0cHM6Ly9uZXctaXNzdWUudnVlanMub3JnLz9yZXBvPXZ1ZWpzL2NvcmUnXHJcbn07XHJcbmZ1bmN0aW9uIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpIHtcclxuICAgIGxldCByZXM7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJlcyA9IGFyZ3MgPyBmbiguLi5hcmdzKSA6IGZuKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncykge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oZm4pKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncyk7XHJcbiAgICAgICAgaWYgKHJlcyAmJiBpc1Byb21pc2UocmVzKSkge1xyXG4gICAgICAgICAgICByZXMuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlcy5wdXNoKGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGZuW2ldLCBpbnN0YW5jZSwgdHlwZSwgYXJncykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxufVxyXG5mdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlLCB0aHJvd0luRGV2ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgY29udGV4dFZOb2RlID0gaW5zdGFuY2UgPyBpbnN0YW5jZS52bm9kZSA6IG51bGw7XHJcbiAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICBsZXQgY3VyID0gaW5zdGFuY2UucGFyZW50O1xyXG4gICAgICAgIC8vIHRoZSBleHBvc2VkIGluc3RhbmNlIGlzIHRoZSByZW5kZXIgcHJveHkgdG8ga2VlcCBpdCBjb25zaXN0ZW50IHdpdGggMi54XHJcbiAgICAgICAgY29uc3QgZXhwb3NlZEluc3RhbmNlID0gaW5zdGFuY2UucHJveHk7XHJcbiAgICAgICAgLy8gaW4gcHJvZHVjdGlvbiB0aGUgaG9vayByZWNlaXZlcyBvbmx5IHRoZSBlcnJvciBjb2RlXHJcbiAgICAgICAgY29uc3QgZXJyb3JJbmZvID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gRXJyb3JUeXBlU3RyaW5nc1t0eXBlXSA6IHR5cGU7XHJcbiAgICAgICAgd2hpbGUgKGN1cikge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvckNhcHR1cmVkSG9va3MgPSBjdXIuZWM7XHJcbiAgICAgICAgICAgIGlmIChlcnJvckNhcHR1cmVkSG9va3MpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXJyb3JDYXB0dXJlZEhvb2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yQ2FwdHVyZWRIb29rc1tpXShlcnIsIGV4cG9zZWRJbnN0YW5jZSwgZXJyb3JJbmZvKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhcHAtbGV2ZWwgaGFuZGxpbmdcclxuICAgICAgICBjb25zdCBhcHBFcnJvckhhbmRsZXIgPSBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5lcnJvckhhbmRsZXI7XHJcbiAgICAgICAgaWYgKGFwcEVycm9ySGFuZGxlcikge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoYXBwRXJyb3JIYW5kbGVyLCBudWxsLCAxMCAvKiBFcnJvckNvZGVzLkFQUF9FUlJPUl9IQU5ETEVSICovLCBbZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mb10pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbG9nRXJyb3IoZXJyLCB0eXBlLCBjb250ZXh0Vk5vZGUsIHRocm93SW5EZXYpO1xyXG59XHJcbmZ1bmN0aW9uIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2ID0gdHJ1ZSkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGluZm8gPSBFcnJvclR5cGVTdHJpbmdzW3R5cGVdO1xyXG4gICAgICAgIGlmIChjb250ZXh0Vk5vZGUpIHtcclxuICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KGNvbnRleHRWTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdhcm4oYFVuaGFuZGxlZCBlcnJvciR7aW5mbyA/IGAgZHVyaW5nIGV4ZWN1dGlvbiBvZiAke2luZm99YCA6IGBgfWApO1xyXG4gICAgICAgIGlmIChjb250ZXh0Vk5vZGUpIHtcclxuICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY3Jhc2ggaW4gZGV2IGJ5IGRlZmF1bHQgc28gaXQncyBtb3JlIG5vdGljZWFibGVcclxuICAgICAgICBpZiAodGhyb3dJbkRldikge1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gcmVjb3ZlciBpbiBwcm9kIHRvIHJlZHVjZSB0aGUgaW1wYWN0IG9uIGVuZC11c2VyXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgfVxyXG59XG5cbmxldCBpc0ZsdXNoaW5nID0gZmFsc2U7XHJcbmxldCBpc0ZsdXNoUGVuZGluZyA9IGZhbHNlO1xyXG5jb25zdCBxdWV1ZSA9IFtdO1xyXG5sZXQgZmx1c2hJbmRleCA9IDA7XHJcbmNvbnN0IHBlbmRpbmdQb3N0Rmx1c2hDYnMgPSBbXTtcclxubGV0IGFjdGl2ZVBvc3RGbHVzaENicyA9IG51bGw7XHJcbmxldCBwb3N0Rmx1c2hJbmRleCA9IDA7XHJcbmNvbnN0IHJlc29sdmVkUHJvbWlzZSA9IC8qI19fUFVSRV9fKi8gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbmxldCBjdXJyZW50Rmx1c2hQcm9taXNlID0gbnVsbDtcclxuY29uc3QgUkVDVVJTSU9OX0xJTUlUID0gMTAwO1xyXG5mdW5jdGlvbiBuZXh0VGljayhmbikge1xyXG4gICAgY29uc3QgcCA9IGN1cnJlbnRGbHVzaFByb21pc2UgfHwgcmVzb2x2ZWRQcm9taXNlO1xyXG4gICAgcmV0dXJuIGZuID8gcC50aGVuKHRoaXMgPyBmbi5iaW5kKHRoaXMpIDogZm4pIDogcDtcclxufVxyXG4vLyAjMjc2OFxyXG4vLyBVc2UgYmluYXJ5LXNlYXJjaCB0byBmaW5kIGEgc3VpdGFibGUgcG9zaXRpb24gaW4gdGhlIHF1ZXVlLFxyXG4vLyBzbyB0aGF0IHRoZSBxdWV1ZSBtYWludGFpbnMgdGhlIGluY3JlYXNpbmcgb3JkZXIgb2Ygam9iJ3MgaWQsXHJcbi8vIHdoaWNoIGNhbiBwcmV2ZW50IHRoZSBqb2IgZnJvbSBiZWluZyBza2lwcGVkIGFuZCBhbHNvIGNhbiBhdm9pZCByZXBlYXRlZCBwYXRjaGluZy5cclxuZnVuY3Rpb24gZmluZEluc2VydGlvbkluZGV4KGlkKSB7XHJcbiAgICAvLyB0aGUgc3RhcnQgaW5kZXggc2hvdWxkIGJlIGBmbHVzaEluZGV4ICsgMWBcclxuICAgIGxldCBzdGFydCA9IGZsdXNoSW5kZXggKyAxO1xyXG4gICAgbGV0IGVuZCA9IHF1ZXVlLmxlbmd0aDtcclxuICAgIHdoaWxlIChzdGFydCA8IGVuZCkge1xyXG4gICAgICAgIGNvbnN0IG1pZGRsZSA9IChzdGFydCArIGVuZCkgPj4+IDE7XHJcbiAgICAgICAgY29uc3QgbWlkZGxlSm9iSWQgPSBnZXRJZChxdWV1ZVttaWRkbGVdKTtcclxuICAgICAgICBtaWRkbGVKb2JJZCA8IGlkID8gKHN0YXJ0ID0gbWlkZGxlICsgMSkgOiAoZW5kID0gbWlkZGxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdGFydDtcclxufVxyXG5mdW5jdGlvbiBxdWV1ZUpvYihqb2IpIHtcclxuICAgIC8vIHRoZSBkZWR1cGUgc2VhcmNoIHVzZXMgdGhlIHN0YXJ0SW5kZXggYXJndW1lbnQgb2YgQXJyYXkuaW5jbHVkZXMoKVxyXG4gICAgLy8gYnkgZGVmYXVsdCB0aGUgc2VhcmNoIGluZGV4IGluY2x1ZGVzIHRoZSBjdXJyZW50IGpvYiB0aGF0IGlzIGJlaW5nIHJ1blxyXG4gICAgLy8gc28gaXQgY2Fubm90IHJlY3Vyc2l2ZWx5IHRyaWdnZXIgaXRzZWxmIGFnYWluLlxyXG4gICAgLy8gaWYgdGhlIGpvYiBpcyBhIHdhdGNoKCkgY2FsbGJhY2ssIHRoZSBzZWFyY2ggd2lsbCBzdGFydCB3aXRoIGEgKzEgaW5kZXggdG9cclxuICAgIC8vIGFsbG93IGl0IHJlY3Vyc2l2ZWx5IHRyaWdnZXIgaXRzZWxmIC0gaXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0b1xyXG4gICAgLy8gZW5zdXJlIGl0IGRvZXNuJ3QgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AuXHJcbiAgICBpZiAoIXF1ZXVlLmxlbmd0aCB8fFxyXG4gICAgICAgICFxdWV1ZS5pbmNsdWRlcyhqb2IsIGlzRmx1c2hpbmcgJiYgam9iLmFsbG93UmVjdXJzZSA/IGZsdXNoSW5kZXggKyAxIDogZmx1c2hJbmRleCkpIHtcclxuICAgICAgICBpZiAoam9iLmlkID09IG51bGwpIHtcclxuICAgICAgICAgICAgcXVldWUucHVzaChqb2IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcXVldWUuc3BsaWNlKGZpbmRJbnNlcnRpb25JbmRleChqb2IuaWQpLCAwLCBqb2IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBxdWV1ZUZsdXNoKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcXVldWVGbHVzaCgpIHtcclxuICAgIGlmICghaXNGbHVzaGluZyAmJiAhaXNGbHVzaFBlbmRpbmcpIHtcclxuICAgICAgICBpc0ZsdXNoUGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgY3VycmVudEZsdXNoUHJvbWlzZSA9IHJlc29sdmVkUHJvbWlzZS50aGVuKGZsdXNoSm9icyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW52YWxpZGF0ZUpvYihqb2IpIHtcclxuICAgIGNvbnN0IGkgPSBxdWV1ZS5pbmRleE9mKGpvYik7XHJcbiAgICBpZiAoaSA+IGZsdXNoSW5kZXgpIHtcclxuICAgICAgICBxdWV1ZS5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcXVldWVQb3N0Rmx1c2hDYihjYikge1xyXG4gICAgaWYgKCFpc0FycmF5KGNiKSkge1xyXG4gICAgICAgIGlmICghYWN0aXZlUG9zdEZsdXNoQ2JzIHx8XHJcbiAgICAgICAgICAgICFhY3RpdmVQb3N0Rmx1c2hDYnMuaW5jbHVkZXMoY2IsIGNiLmFsbG93UmVjdXJzZSA/IHBvc3RGbHVzaEluZGV4ICsgMSA6IHBvc3RGbHVzaEluZGV4KSkge1xyXG4gICAgICAgICAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLnB1c2goY2IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGlmIGNiIGlzIGFuIGFycmF5LCBpdCBpcyBhIGNvbXBvbmVudCBsaWZlY3ljbGUgaG9vayB3aGljaCBjYW4gb25seSBiZVxyXG4gICAgICAgIC8vIHRyaWdnZXJlZCBieSBhIGpvYiwgd2hpY2ggaXMgYWxyZWFkeSBkZWR1cGVkIGluIHRoZSBtYWluIHF1ZXVlLCBzb1xyXG4gICAgICAgIC8vIHdlIGNhbiBza2lwIGR1cGxpY2F0ZSBjaGVjayBoZXJlIHRvIGltcHJvdmUgcGVyZlxyXG4gICAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMucHVzaCguLi5jYik7XHJcbiAgICB9XHJcbiAgICBxdWV1ZUZsdXNoKCk7XHJcbn1cclxuZnVuY3Rpb24gZmx1c2hQcmVGbHVzaENicyhzZWVuLCBpID0gZmx1c2hJbmRleCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIGZvciAoOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjYiA9IHF1ZXVlW2ldO1xyXG4gICAgICAgIGlmIChjYiAmJiBjYi5wcmUpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgY2IpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWV1ZS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgY2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmx1c2hQb3N0Rmx1c2hDYnMoc2Vlbikge1xyXG4gICAgaWYgKHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZGVkdXBlZCA9IFsuLi5uZXcgU2V0KHBlbmRpbmdQb3N0Rmx1c2hDYnMpXTtcclxuICAgICAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy8gIzE5NDcgYWxyZWFkeSBoYXMgYWN0aXZlIHF1ZXVlLCBuZXN0ZWQgZmx1c2hQb3N0Rmx1c2hDYnMgY2FsbFxyXG4gICAgICAgIGlmIChhY3RpdmVQb3N0Rmx1c2hDYnMpIHtcclxuICAgICAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzLnB1c2goLi4uZGVkdXBlZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzID0gZGVkdXBlZDtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBNYXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzLnNvcnQoKGEsIGIpID0+IGdldElkKGEpIC0gZ2V0SWQoYikpO1xyXG4gICAgICAgIGZvciAocG9zdEZsdXNoSW5kZXggPSAwOyBwb3N0Rmx1c2hJbmRleCA8IGFjdGl2ZVBvc3RGbHVzaENicy5sZW5ndGg7IHBvc3RGbHVzaEluZGV4KyspIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGFjdGl2ZVBvc3RGbHVzaENic1twb3N0Rmx1c2hJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnNbcG9zdEZsdXNoSW5kZXhdKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicyA9IG51bGw7XHJcbiAgICAgICAgcG9zdEZsdXNoSW5kZXggPSAwO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGdldElkID0gKGpvYikgPT4gam9iLmlkID09IG51bGwgPyBJbmZpbml0eSA6IGpvYi5pZDtcclxuY29uc3QgY29tcGFyYXRvciA9IChhLCBiKSA9PiB7XHJcbiAgICBjb25zdCBkaWZmID0gZ2V0SWQoYSkgLSBnZXRJZChiKTtcclxuICAgIGlmIChkaWZmID09PSAwKSB7XHJcbiAgICAgICAgaWYgKGEucHJlICYmICFiLnByZSlcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIGlmIChiLnByZSAmJiAhYS5wcmUpXHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpZmY7XHJcbn07XHJcbmZ1bmN0aW9uIGZsdXNoSm9icyhzZWVuKSB7XHJcbiAgICBpc0ZsdXNoUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgaXNGbHVzaGluZyA9IHRydWU7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcCgpO1xyXG4gICAgfVxyXG4gICAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXHJcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdDpcclxuICAgIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcclxuICAgIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZCBzbyBpdHMgcmVuZGVyIGVmZmVjdCB3aWxsIGhhdmUgc21hbGxlclxyXG4gICAgLy8gICAgcHJpb3JpdHkgbnVtYmVyKVxyXG4gICAgLy8gMi4gSWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB1cGRhdGUsXHJcbiAgICAvLyAgICBpdHMgdXBkYXRlIGNhbiBiZSBza2lwcGVkLlxyXG4gICAgcXVldWUuc29ydChjb21wYXJhdG9yKTtcclxuICAgIC8vIGNvbmRpdGlvbmFsIHVzYWdlIG9mIGNoZWNrUmVjdXJzaXZlVXBkYXRlIG11c3QgYmUgZGV0ZXJtaW5lZCBvdXQgb2ZcclxuICAgIC8vIHRyeSAuLi4gY2F0Y2ggYmxvY2sgc2luY2UgUm9sbHVwIGJ5IGRlZmF1bHQgZGUtb3B0aW1pemVzIHRyZWVzaGFraW5nXHJcbiAgICAvLyBpbnNpZGUgdHJ5LWNhdGNoLiBUaGlzIGNhbiBsZWF2ZSBhbGwgd2FybmluZyBjb2RlIHVuc2hha2VkLiBBbHRob3VnaFxyXG4gICAgLy8gdGhleSB3b3VsZCBnZXQgZXZlbnR1YWxseSBzaGFrZW4gYnkgYSBtaW5pZmllciBsaWtlIHRlcnNlciwgc29tZSBtaW5pZmllcnNcclxuICAgIC8vIHdvdWxkIGZhaWwgdG8gZG8gdGhhdCAoZS5nLiBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMTYxMClcclxuICAgIGNvbnN0IGNoZWNrID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyAoam9iKSA9PiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2Vlbiwgam9iKVxyXG4gICAgICAgIDogTk9PUDtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgZm9yIChmbHVzaEluZGV4ID0gMDsgZmx1c2hJbmRleCA8IHF1ZXVlLmxlbmd0aDsgZmx1c2hJbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvYiA9IHF1ZXVlW2ZsdXNoSW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoam9iICYmIGpvYi5hY3RpdmUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrKGpvYikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBydW5uaW5nOmAsIGpvYi5pZClcclxuICAgICAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhqb2IsIG51bGwsIDE0IC8qIEVycm9yQ29kZXMuU0NIRURVTEVSICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIGZsdXNoSW5kZXggPSAwO1xyXG4gICAgICAgIHF1ZXVlLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZmx1c2hQb3N0Rmx1c2hDYnMoc2Vlbik7XHJcbiAgICAgICAgaXNGbHVzaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGN1cnJlbnRGbHVzaFByb21pc2UgPSBudWxsO1xyXG4gICAgICAgIC8vIHNvbWUgcG9zdEZsdXNoQ2IgcXVldWVkIGpvYnMhXHJcbiAgICAgICAgLy8ga2VlcCBmbHVzaGluZyB1bnRpbCBpdCBkcmFpbnMuXHJcbiAgICAgICAgaWYgKHF1ZXVlLmxlbmd0aCB8fCBwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmbHVzaEpvYnMoc2Vlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBmbikge1xyXG4gICAgaWYgKCFzZWVuLmhhcyhmbikpIHtcclxuICAgICAgICBzZWVuLnNldChmbiwgMSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb3VudCA9IHNlZW4uZ2V0KGZuKTtcclxuICAgICAgICBpZiAoY291bnQgPiBSRUNVUlNJT05fTElNSVQpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBmbi5vd25lckluc3RhbmNlO1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnROYW1lID0gaW5zdGFuY2UgJiYgZ2V0Q29tcG9uZW50TmFtZShpbnN0YW5jZS50eXBlKTtcclxuICAgICAgICAgICAgd2FybihgTWF4aW11bSByZWN1cnNpdmUgdXBkYXRlcyBleGNlZWRlZCR7Y29tcG9uZW50TmFtZSA/IGAgaW4gY29tcG9uZW50IDwke2NvbXBvbmVudE5hbWV9PmAgOiBgYH0uIGAgK1xyXG4gICAgICAgICAgICAgICAgYFRoaXMgbWVhbnMgeW91IGhhdmUgYSByZWFjdGl2ZSBlZmZlY3QgdGhhdCBpcyBtdXRhdGluZyBpdHMgb3duIGAgK1xyXG4gICAgICAgICAgICAgICAgYGRlcGVuZGVuY2llcyBhbmQgdGh1cyByZWN1cnNpdmVseSB0cmlnZ2VyaW5nIGl0c2VsZi4gUG9zc2libGUgc291cmNlcyBgICtcclxuICAgICAgICAgICAgICAgIGBpbmNsdWRlIGNvbXBvbmVudCB0ZW1wbGF0ZSwgcmVuZGVyIGZ1bmN0aW9uLCB1cGRhdGVkIGhvb2sgb3IgYCArXHJcbiAgICAgICAgICAgICAgICBgd2F0Y2hlciBzb3VyY2UgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2Vlbi5zZXQoZm4sIGNvdW50ICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgaXNIbXJVcGRhdGluZyA9IGZhbHNlO1xyXG5jb25zdCBobXJEaXJ0eUNvbXBvbmVudHMgPSBuZXcgU2V0KCk7XHJcbi8vIEV4cG9zZSB0aGUgSE1SIHJ1bnRpbWUgb24gdGhlIGdsb2JhbCBvYmplY3RcclxuLy8gVGhpcyBtYWtlcyBpdCBlbnRpcmVseSB0cmVlLXNoYWthYmxlIHdpdGhvdXQgcG9sbHV0aW5nIHRoZSBleHBvcnRzIGFuZCBtYWtlc1xyXG4vLyBpdCBlYXNpZXIgdG8gYmUgdXNlZCBpbiB0b29saW5ncyBsaWtlIHZ1ZS1sb2FkZXJcclxuLy8gTm90ZTogZm9yIGEgY29tcG9uZW50IHRvIGJlIGVsaWdpYmxlIGZvciBITVIgaXQgYWxzbyBuZWVkcyB0aGUgX19obXJJZCBvcHRpb25cclxuLy8gdG8gYmUgc2V0IHNvIHRoYXQgaXRzIGluc3RhbmNlcyBjYW4gYmUgcmVnaXN0ZXJlZCAvIHJlbW92ZWQuXHJcbmlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgIGdldEdsb2JhbFRoaXMoKS5fX1ZVRV9ITVJfUlVOVElNRV9fID0ge1xyXG4gICAgICAgIGNyZWF0ZVJlY29yZDogdHJ5V3JhcChjcmVhdGVSZWNvcmQpLFxyXG4gICAgICAgIHJlcmVuZGVyOiB0cnlXcmFwKHJlcmVuZGVyKSxcclxuICAgICAgICByZWxvYWQ6IHRyeVdyYXAocmVsb2FkKVxyXG4gICAgfTtcclxufVxyXG5jb25zdCBtYXAgPSBuZXcgTWFwKCk7XHJcbmZ1bmN0aW9uIHJlZ2lzdGVySE1SKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBpZCA9IGluc3RhbmNlLnR5cGUuX19obXJJZDtcclxuICAgIGxldCByZWNvcmQgPSBtYXAuZ2V0KGlkKTtcclxuICAgIGlmICghcmVjb3JkKSB7XHJcbiAgICAgICAgY3JlYXRlUmVjb3JkKGlkLCBpbnN0YW5jZS50eXBlKTtcclxuICAgICAgICByZWNvcmQgPSBtYXAuZ2V0KGlkKTtcclxuICAgIH1cclxuICAgIHJlY29yZC5pbnN0YW5jZXMuYWRkKGluc3RhbmNlKTtcclxufVxyXG5mdW5jdGlvbiB1bnJlZ2lzdGVySE1SKGluc3RhbmNlKSB7XHJcbiAgICBtYXAuZ2V0KGluc3RhbmNlLnR5cGUuX19obXJJZCkuaW5zdGFuY2VzLmRlbGV0ZShpbnN0YW5jZSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVjb3JkKGlkLCBpbml0aWFsRGVmKSB7XHJcbiAgICBpZiAobWFwLmhhcyhpZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBtYXAuc2V0KGlkLCB7XHJcbiAgICAgICAgaW5pdGlhbERlZjogbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5pdGlhbERlZiksXHJcbiAgICAgICAgaW5zdGFuY2VzOiBuZXcgU2V0KClcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICByZXR1cm4gaXNDbGFzc0NvbXBvbmVudChjb21wb25lbnQpID8gY29tcG9uZW50Ll9fdmNjT3B0cyA6IGNvbXBvbmVudDtcclxufVxyXG5mdW5jdGlvbiByZXJlbmRlcihpZCwgbmV3UmVuZGVyKSB7XHJcbiAgICBjb25zdCByZWNvcmQgPSBtYXAuZ2V0KGlkKTtcclxuICAgIGlmICghcmVjb3JkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlIGluaXRpYWwgcmVjb3JkIChmb3Igbm90LXlldC1yZW5kZXJlZCBjb21wb25lbnQpXHJcbiAgICByZWNvcmQuaW5pdGlhbERlZi5yZW5kZXIgPSBuZXdSZW5kZXI7XHJcbiAgICBbLi4ucmVjb3JkLmluc3RhbmNlc10uZm9yRWFjaChpbnN0YW5jZSA9PiB7XHJcbiAgICAgICAgaWYgKG5ld1JlbmRlcikge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSBuZXdSZW5kZXI7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpLnJlbmRlciA9IG5ld1JlbmRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UucmVuZGVyQ2FjaGUgPSBbXTtcclxuICAgICAgICAvLyB0aGlzIGZsYWcgZm9yY2VzIGNoaWxkIGNvbXBvbmVudHMgd2l0aCBzbG90IGNvbnRlbnQgdG8gdXBkYXRlXHJcbiAgICAgICAgaXNIbXJVcGRhdGluZyA9IHRydWU7XHJcbiAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgaXNIbXJVcGRhdGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gcmVsb2FkKGlkLCBuZXdDb21wKSB7XHJcbiAgICBjb25zdCByZWNvcmQgPSBtYXAuZ2V0KGlkKTtcclxuICAgIGlmICghcmVjb3JkKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIG5ld0NvbXAgPSBub3JtYWxpemVDbGFzc0NvbXBvbmVudChuZXdDb21wKTtcclxuICAgIC8vIHVwZGF0ZSBpbml0aWFsIGRlZiAoZm9yIG5vdC15ZXQtcmVuZGVyZWQgY29tcG9uZW50cylcclxuICAgIHVwZGF0ZUNvbXBvbmVudERlZihyZWNvcmQuaW5pdGlhbERlZiwgbmV3Q29tcCk7XHJcbiAgICAvLyBjcmVhdGUgYSBzbmFwc2hvdCB3aGljaCBhdm9pZHMgdGhlIHNldCBiZWluZyBtdXRhdGVkIGR1cmluZyB1cGRhdGVzXHJcbiAgICBjb25zdCBpbnN0YW5jZXMgPSBbLi4ucmVjb3JkLmluc3RhbmNlc107XHJcbiAgICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIGluc3RhbmNlcykge1xyXG4gICAgICAgIGNvbnN0IG9sZENvbXAgPSBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKTtcclxuICAgICAgICBpZiAoIWhtckRpcnR5Q29tcG9uZW50cy5oYXMob2xkQ29tcCkpIHtcclxuICAgICAgICAgICAgLy8gMS4gVXBkYXRlIGV4aXN0aW5nIGNvbXAgZGVmaW5pdGlvbiB0byBtYXRjaCBuZXcgb25lXHJcbiAgICAgICAgICAgIGlmIChvbGRDb21wICE9PSByZWNvcmQuaW5pdGlhbERlZikge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50RGVmKG9sZENvbXAsIG5ld0NvbXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIDIuIG1hcmsgZGVmaW5pdGlvbiBkaXJ0eS4gVGhpcyBmb3JjZXMgdGhlIHJlbmRlcmVyIHRvIHJlcGxhY2UgdGhlXHJcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudCBvbiBwYXRjaC5cclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmFkZChvbGRDb21wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMy4gaW52YWxpZGF0ZSBvcHRpb25zIHJlc29sdXRpb24gY2FjaGVcclxuICAgICAgICBpbnN0YW5jZS5hcHBDb250ZXh0Lm9wdGlvbnNDYWNoZS5kZWxldGUoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgLy8gNC4gYWN0dWFsbHkgdXBkYXRlXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmNlUmVsb2FkKSB7XHJcbiAgICAgICAgICAgIC8vIGN1c3RvbSBlbGVtZW50XHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5hZGQob2xkQ29tcCk7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmNlUmVsb2FkKG5ld0NvbXAuc3R5bGVzKTtcclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmRlbGV0ZShvbGRDb21wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UucGFyZW50KSB7XHJcbiAgICAgICAgICAgIC8vIDQuIEZvcmNlIHRoZSBwYXJlbnQgaW5zdGFuY2UgdG8gcmUtcmVuZGVyLiBUaGlzIHdpbGwgY2F1c2UgYWxsIHVwZGF0ZWRcclxuICAgICAgICAgICAgLy8gY29tcG9uZW50cyB0byBiZSB1bm1vdW50ZWQgYW5kIHJlLW1vdW50ZWQuIFF1ZXVlIHRoZSB1cGRhdGUgc28gdGhhdCB3ZVxyXG4gICAgICAgICAgICAvLyBkb24ndCBlbmQgdXAgZm9yY2luZyB0aGUgc2FtZSBwYXJlbnQgdG8gcmUtcmVuZGVyIG11bHRpcGxlIHRpbWVzLlxyXG4gICAgICAgICAgICBxdWV1ZUpvYihpbnN0YW5jZS5wYXJlbnQudXBkYXRlKTtcclxuICAgICAgICAgICAgLy8gaW5zdGFuY2UgaXMgdGhlIGlubmVyIGNvbXBvbmVudCBvZiBhbiBhc3luYyBjdXN0b20gZWxlbWVudFxyXG4gICAgICAgICAgICAvLyBpbnZva2UgdG8gcmVzZXQgc3R5bGVzXHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5wYXJlbnQudHlwZS5fX2FzeW5jTG9hZGVyICYmXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQuY2VSZWxvYWQpIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudC5jZVJlbG9hZChuZXdDb21wLnN0eWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5yZWxvYWQpIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBpbnN0YW5jZSBtb3VudGVkIHZpYSBjcmVhdGVBcHAoKSBoYXMgYSByZWxvYWQgbWV0aG9kXHJcbiAgICAgICAgICAgIGluc3RhbmNlLmFwcENvbnRleHQucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgaW5zdGFuY2UgaW5zaWRlIHRyZWUgY3JlYXRlZCB2aWEgcmF3IHJlbmRlcigpLiBGb3JjZSByZWxvYWQuXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0hNUl0gUm9vdCBvciBtYW51YWxseSBtb3VudGVkIGluc3RhbmNlIG1vZGlmaWVkLiBGdWxsIHJlbG9hZCByZXF1aXJlZC4nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyA1LiBtYWtlIHN1cmUgdG8gY2xlYW51cCBkaXJ0eSBobXIgY29tcG9uZW50cyBhZnRlciB1cGRhdGVcclxuICAgIHF1ZXVlUG9zdEZsdXNoQ2IoKCkgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgaW5zdGFuY2VzKSB7XHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5kZWxldGUobm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZUNvbXBvbmVudERlZihvbGRDb21wLCBuZXdDb21wKSB7XHJcbiAgICBleHRlbmQob2xkQ29tcCwgbmV3Q29tcCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRDb21wKSB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ19fZmlsZScgJiYgIShrZXkgaW4gbmV3Q29tcCkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIG9sZENvbXBba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJ5V3JhcChmbikge1xyXG4gICAgcmV0dXJuIChpZCwgYXJnKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZuKGlkLCBhcmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtITVJdIFNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBWdWUgY29tcG9uZW50IGhvdC1yZWxvYWQuIGAgK1xyXG4gICAgICAgICAgICAgICAgYEZ1bGwgcmVsb2FkIHJlcXVpcmVkLmApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxubGV0IGRldnRvb2xzO1xyXG5sZXQgYnVmZmVyID0gW107XHJcbmxldCBkZXZ0b29sc05vdEluc3RhbGxlZCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XHJcbiAgICBpZiAoZGV2dG9vbHMpIHtcclxuICAgICAgICBkZXZ0b29scy5lbWl0KGV2ZW50LCAuLi5hcmdzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFkZXZ0b29sc05vdEluc3RhbGxlZCkge1xyXG4gICAgICAgIGJ1ZmZlci5wdXNoKHsgZXZlbnQsIGFyZ3MgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0RGV2dG9vbHNIb29rKGhvb2ssIHRhcmdldCkge1xyXG4gICAgdmFyIF9hLCBfYjtcclxuICAgIGRldnRvb2xzID0gaG9vaztcclxuICAgIGlmIChkZXZ0b29scykge1xyXG4gICAgICAgIGRldnRvb2xzLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJ1ZmZlci5mb3JFYWNoKCh7IGV2ZW50LCBhcmdzIH0pID0+IGRldnRvb2xzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpKTtcclxuICAgICAgICBidWZmZXIgPSBbXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKFxyXG4gICAgLy8gaGFuZGxlIGxhdGUgZGV2dG9vbHMgaW5qZWN0aW9uIC0gb25seSBkbyB0aGlzIGlmIHdlIGFyZSBpbiBhbiBhY3R1YWxcclxuICAgIC8vIGJyb3dzZXIgZW52aXJvbm1lbnQgdG8gYXZvaWQgdGhlIHRpbWVyIGhhbmRsZSBzdGFsbGluZyB0ZXN0IHJ1bm5lciBleGl0XHJcbiAgICAvLyAoIzQ4MTUpXHJcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgIC8vIHNvbWUgZW52cyBtb2NrIHdpbmRvdyBidXQgbm90IGZ1bGx5XHJcbiAgICAgICAgd2luZG93LkhUTUxFbGVtZW50ICYmXHJcbiAgICAgICAgLy8gYWxzbyBleGNsdWRlIGpzZG9tXHJcbiAgICAgICAgISgoX2IgPSAoX2EgPSB3aW5kb3cubmF2aWdhdG9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudXNlckFnZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5jbHVkZXMoJ2pzZG9tJykpKSB7XHJcbiAgICAgICAgY29uc3QgcmVwbGF5ID0gKHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fID1cclxuICAgICAgICAgICAgdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gfHwgW10pO1xyXG4gICAgICAgIHJlcGxheS5wdXNoKChuZXdIb29rKSA9PiB7XHJcbiAgICAgICAgICAgIHNldERldnRvb2xzSG9vayhuZXdIb29rLCB0YXJnZXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNsZWFyIGJ1ZmZlciBhZnRlciAzcyAtIHRoZSB1c2VyIHByb2JhYmx5IGRvZXNuJ3QgaGF2ZSBkZXZ0b29scyBpbnN0YWxsZWRcclxuICAgICAgICAvLyBhdCBhbGwsIGFuZCBrZWVwaW5nIHRoZSBidWZmZXIgd2lsbCBjYXVzZSBtZW1vcnkgbGVha3MgKCM0NzM4KVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRldnRvb2xzKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBkZXZ0b29sc05vdEluc3RhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDMwMDApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbm9uLWJyb3dzZXIgZW52LCBhc3N1bWUgbm90IGluc3RhbGxlZFxyXG4gICAgICAgIGRldnRvb2xzTm90SW5zdGFsbGVkID0gdHJ1ZTtcclxuICAgICAgICBidWZmZXIgPSBbXTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBkZXZ0b29sc0luaXRBcHAoYXBwLCB2ZXJzaW9uKSB7XHJcbiAgICBlbWl0KFwiYXBwOmluaXRcIiAvKiBEZXZ0b29sc0hvb2tzLkFQUF9JTklUICovLCBhcHAsIHZlcnNpb24sIHtcclxuICAgICAgICBGcmFnbWVudCxcclxuICAgICAgICBUZXh0LFxyXG4gICAgICAgIENvbW1lbnQsXHJcbiAgICAgICAgU3RhdGljXHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBkZXZ0b29sc1VubW91bnRBcHAoYXBwKSB7XHJcbiAgICBlbWl0KFwiYXBwOnVubW91bnRcIiAvKiBEZXZ0b29sc0hvb2tzLkFQUF9VTk1PVU5UICovLCBhcHApO1xyXG59XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50QWRkZWQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDphZGRlZFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX0FEREVEICovKTtcclxuY29uc3QgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkID0gXHJcbi8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKFwiY29tcG9uZW50OnVwZGF0ZWRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9VUERBVEVEICovKTtcclxuY29uc3QgZGV2dG9vbHNDb21wb25lbnRSZW1vdmVkID0gXHJcbi8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKFwiY29tcG9uZW50OnJlbW92ZWRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9SRU1PVkVEICovKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKGhvb2spIHtcclxuICAgIHJldHVybiAoY29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgZW1pdChob29rLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudC51aWQsIGNvbXBvbmVudC5wYXJlbnQgPyBjb21wb25lbnQucGFyZW50LnVpZCA6IHVuZGVmaW5lZCwgY29tcG9uZW50KTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgZGV2dG9vbHNQZXJmU3RhcnQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzUGVyZm9ybWFuY2VIb29rKFwicGVyZjpzdGFydFwiIC8qIERldnRvb2xzSG9va3MuUEVSRk9STUFOQ0VfU1RBUlQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc1BlcmZFbmQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzUGVyZm9ybWFuY2VIb29rKFwicGVyZjplbmRcIiAvKiBEZXZ0b29sc0hvb2tzLlBFUkZPUk1BTkNFX0VORCAqLyk7XHJcbmZ1bmN0aW9uIGNyZWF0ZURldnRvb2xzUGVyZm9ybWFuY2VIb29rKGhvb2spIHtcclxuICAgIHJldHVybiAoY29tcG9uZW50LCB0eXBlLCB0aW1lKSA9PiB7XHJcbiAgICAgICAgZW1pdChob29rLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudC51aWQsIGNvbXBvbmVudCwgdHlwZSwgdGltZSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzQ29tcG9uZW50RW1pdChjb21wb25lbnQsIGV2ZW50LCBwYXJhbXMpIHtcclxuICAgIGVtaXQoXCJjb21wb25lbnQ6ZW1pdFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX0VNSVQgKi8sIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LCBldmVudCwgcGFyYW1zKTtcclxufVxuXG5mdW5jdGlvbiBlbWl0JDEoaW5zdGFuY2UsIGV2ZW50LCAuLi5yYXdBcmdzKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuaXNVbm1vdW50ZWQpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgY29uc3QgcHJvcHMgPSBpbnN0YW5jZS52bm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgeyBlbWl0c09wdGlvbnMsIHByb3BzT3B0aW9uczogW3Byb3BzT3B0aW9uc10gfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIGlmIChlbWl0c09wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKCEoZXZlbnQgaW4gZW1pdHNPcHRpb25zKSAmJlxyXG4gICAgICAgICAgICAgICAgIShmYWxzZSApKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BzT3B0aW9ucyB8fCAhKHRvSGFuZGxlcktleShldmVudCkgaW4gcHJvcHNPcHRpb25zKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBlbWl0dGVkIGV2ZW50IFwiJHtldmVudH1cIiBidXQgaXQgaXMgbmVpdGhlciBkZWNsYXJlZCBpbiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHRoZSBlbWl0cyBvcHRpb24gbm9yIGFzIGFuIFwiJHt0b0hhbmRsZXJLZXkoZXZlbnQpfVwiIHByb3AuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBlbWl0c09wdGlvbnNbZXZlbnRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsaWRhdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0b3IoLi4ucmF3QXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEludmFsaWQgZXZlbnQgYXJndW1lbnRzOiBldmVudCB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgZXZlbnQgXCIke2V2ZW50fVwiLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBhcmdzID0gcmF3QXJncztcclxuICAgIGNvbnN0IGlzTW9kZWxMaXN0ZW5lciA9IGV2ZW50LnN0YXJ0c1dpdGgoJ3VwZGF0ZTonKTtcclxuICAgIC8vIGZvciB2LW1vZGVsIHVwZGF0ZTp4eHggZXZlbnRzLCBhcHBseSBtb2RpZmllcnMgb24gYXJnc1xyXG4gICAgY29uc3QgbW9kZWxBcmcgPSBpc01vZGVsTGlzdGVuZXIgJiYgZXZlbnQuc2xpY2UoNyk7XHJcbiAgICBpZiAobW9kZWxBcmcgJiYgbW9kZWxBcmcgaW4gcHJvcHMpIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllcnNLZXkgPSBgJHttb2RlbEFyZyA9PT0gJ21vZGVsVmFsdWUnID8gJ21vZGVsJyA6IG1vZGVsQXJnfU1vZGlmaWVyc2A7XHJcbiAgICAgICAgY29uc3QgeyBudW1iZXIsIHRyaW0gfSA9IHByb3BzW21vZGlmaWVyc0tleV0gfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGlmICh0cmltKSB7XHJcbiAgICAgICAgICAgIGFyZ3MgPSByYXdBcmdzLm1hcChhID0+IGEudHJpbSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICBhcmdzID0gcmF3QXJncy5tYXAodG9OdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNDb21wb25lbnRFbWl0KGluc3RhbmNlLCBldmVudCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgbG93ZXJDYXNlRXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0gZXZlbnQgJiYgcHJvcHNbdG9IYW5kbGVyS2V5KGxvd2VyQ2FzZUV2ZW50KV0pIHtcclxuICAgICAgICAgICAgd2FybihgRXZlbnQgXCIke2xvd2VyQ2FzZUV2ZW50fVwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IGAgK1xyXG4gICAgICAgICAgICAgICAgYCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgaW5zdGFuY2UudHlwZSl9IGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcIiR7ZXZlbnR9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgYE5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBgICtcclxuICAgICAgICAgICAgICAgIGBZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcIiR7aHlwaGVuYXRlKGV2ZW50KX1cIiBpbnN0ZWFkIG9mIFwiJHtldmVudH1cIi5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaGFuZGxlck5hbWU7XHJcbiAgICBsZXQgaGFuZGxlciA9IHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShldmVudCkpXSB8fFxyXG4gICAgICAgIC8vIGFsc28gdHJ5IGNhbWVsQ2FzZSBldmVudCBoYW5kbGVyICgjMjI0OSlcclxuICAgICAgICBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoY2FtZWxpemUoZXZlbnQpKSldO1xyXG4gICAgLy8gZm9yIHYtbW9kZWwgdXBkYXRlOnh4eCBldmVudHMsIGFsc28gdHJpZ2dlciBrZWJhYi1jYXNlIGVxdWl2YWxlbnRcclxuICAgIC8vIGZvciBwcm9wcyBwYXNzZWQgdmlhIGtlYmFiLWNhc2VcclxuICAgIGlmICghaGFuZGxlciAmJiBpc01vZGVsTGlzdGVuZXIpIHtcclxuICAgICAgICBoYW5kbGVyID0gcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGh5cGhlbmF0ZShldmVudCkpKV07XHJcbiAgICB9XHJcbiAgICBpZiAoaGFuZGxlcikge1xyXG4gICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhhbmRsZXIsIGluc3RhbmNlLCA2IC8qIEVycm9yQ29kZXMuQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIgKi8sIGFyZ3MpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb25jZUhhbmRsZXIgPSBwcm9wc1toYW5kbGVyTmFtZSArIGBPbmNlYF07XHJcbiAgICBpZiAob25jZUhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoIWluc3RhbmNlLmVtaXR0ZWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZW1pdHRlZCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5lbWl0dGVkW2hhbmRsZXJOYW1lXSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLmVtaXR0ZWRbaGFuZGxlck5hbWVdID0gdHJ1ZTtcclxuICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhvbmNlSGFuZGxlciwgaW5zdGFuY2UsIDYgLyogRXJyb3JDb2Rlcy5DT01QT05FTlRfRVZFTlRfSEFORExFUiAqLywgYXJncyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplRW1pdHNPcHRpb25zKGNvbXAsIGFwcENvbnRleHQsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBhcHBDb250ZXh0LmVtaXRzQ2FjaGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XHJcbiAgICBpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3ID0gY29tcC5lbWl0cztcclxuICAgIGxldCBub3JtYWxpemVkID0ge307XHJcbiAgICAvLyBhcHBseSBtaXhpbi9leHRlbmRzIHByb3BzXHJcbiAgICBsZXQgaGFzRXh0ZW5kcyA9IGZhbHNlO1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICBjb25zdCBleHRlbmRFbWl0cyA9IChyYXcpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZyb21FeHRlbmQgPSBub3JtYWxpemVFbWl0c09wdGlvbnMocmF3LCBhcHBDb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRGcm9tRXh0ZW5kKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGV4dGVuZChub3JtYWxpemVkLCBub3JtYWxpemVkRnJvbUV4dGVuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghYXNNaXhpbiAmJiBhcHBDb250ZXh0Lm1peGlucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXBwQ29udGV4dC5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLmV4dGVuZHMpIHtcclxuICAgICAgICAgICAgZXh0ZW5kRW1pdHMoY29tcC5leHRlbmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAubWl4aW5zKSB7XHJcbiAgICAgICAgICAgIGNvbXAubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghcmF3ICYmICFoYXNFeHRlbmRzKSB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgICAgIGNhY2hlLnNldChjb21wLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgcmF3LmZvckVhY2goa2V5ID0+IChub3JtYWxpemVkW2tleV0gPSBudWxsKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgcmF3KTtcclxuICAgIH1cclxuICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgIGNhY2hlLnNldChjb21wLCBub3JtYWxpemVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiBub3JtYWxpemVkO1xyXG59XHJcbi8vIENoZWNrIGlmIGFuIGluY29taW5nIHByb3Aga2V5IGlzIGEgZGVjbGFyZWQgZW1pdCBldmVudCBsaXN0ZW5lci5cclxuLy8gZS5nLiBXaXRoIGBlbWl0czogeyBjbGljazogbnVsbCB9YCwgcHJvcHMgbmFtZWQgYG9uQ2xpY2tgIGFuZCBgb25jbGlja2AgYXJlXHJcbi8vIGJvdGggY29uc2lkZXJlZCBtYXRjaGVkIGxpc3RlbmVycy5cclxuZnVuY3Rpb24gaXNFbWl0TGlzdGVuZXIob3B0aW9ucywga2V5KSB7XHJcbiAgICBpZiAoIW9wdGlvbnMgfHwgIWlzT24oa2V5KSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGtleSA9IGtleS5zbGljZSgyKS5yZXBsYWNlKC9PbmNlJC8sICcnKTtcclxuICAgIHJldHVybiAoaGFzT3duKG9wdGlvbnMsIGtleVswXS50b0xvd2VyQ2FzZSgpICsga2V5LnNsaWNlKDEpKSB8fFxyXG4gICAgICAgIGhhc093bihvcHRpb25zLCBoeXBoZW5hdGUoa2V5KSkgfHxcclxuICAgICAgICBoYXNPd24ob3B0aW9ucywga2V5KSk7XHJcbn1cblxuLyoqXHJcbiAqIG1hcmsgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGluc3RhbmNlIGZvciBhc3NldCByZXNvbHV0aW9uIChlLmcuXHJcbiAqIHJlc29sdmVDb21wb25lbnQsIHJlc29sdmVEaXJlY3RpdmUpIGR1cmluZyByZW5kZXJcclxuICovXHJcbmxldCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xyXG5sZXQgY3VycmVudFNjb3BlSWQgPSBudWxsO1xyXG4vKipcclxuICogTm90ZTogcmVuZGVyaW5nIGNhbGxzIG1heWJlIG5lc3RlZC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBhcmVudCByZW5kZXJpbmdcclxuICogaW5zdGFuY2UgaWYgcHJlc2VudCwgd2hpY2ggc2hvdWxkIGJlIHJlc3RvcmVkIGFmdGVyIHRoZSByZW5kZXIgaXMgZG9uZTpcclxuICpcclxuICogYGBganNcclxuICogY29uc3QgcHJldiA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpKVxyXG4gKiAvLyAuLi5yZW5kZXJcclxuICogc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKHByZXYpXHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBwcmV2ID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICBjdXJyZW50U2NvcGVJZCA9IChpbnN0YW5jZSAmJiBpbnN0YW5jZS50eXBlLl9fc2NvcGVJZCkgfHwgbnVsbDtcclxuICAgIHJldHVybiBwcmV2O1xyXG59XHJcbi8qKlxyXG4gKiBTZXQgc2NvcGUgaWQgd2hlbiBjcmVhdGluZyBob2lzdGVkIHZub2Rlcy5cclxuICogQHByaXZhdGUgY29tcGlsZXIgaGVscGVyXHJcbiAqL1xyXG5mdW5jdGlvbiBwdXNoU2NvcGVJZChpZCkge1xyXG4gICAgY3VycmVudFNjb3BlSWQgPSBpZDtcclxufVxyXG4vKipcclxuICogVGVjaG5pY2FsbHkgd2Ugbm8gbG9uZ2VyIG5lZWQgdGhpcyBhZnRlciAzLjAuOCBidXQgd2UgbmVlZCB0byBrZWVwIHRoZSBzYW1lXHJcbiAqIEFQSSBmb3IgYmFja3dhcmRzIGNvbXBhdCB3LyBjb2RlIGdlbmVyYXRlZCBieSBjb21waWxlcnMuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBwb3BTY29wZUlkKCkge1xyXG4gICAgY3VycmVudFNjb3BlSWQgPSBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBPbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0XHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB3aXRoU2NvcGVJZCA9IChfaWQpID0+IHdpdGhDdHg7XHJcbi8qKlxyXG4gKiBXcmFwIGEgc2xvdCBmdW5jdGlvbiB0byBtZW1vaXplIGN1cnJlbnQgcmVuZGVyaW5nIGluc3RhbmNlXHJcbiAqIEBwcml2YXRlIGNvbXBpbGVyIGhlbHBlclxyXG4gKi9cclxuZnVuY3Rpb24gd2l0aEN0eChmbiwgY3R4ID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLCBpc05vblNjb3BlZFNsb3QgLy8gZmFsc2Ugb25seVxyXG4pIHtcclxuICAgIGlmICghY3R4KVxyXG4gICAgICAgIHJldHVybiBmbjtcclxuICAgIC8vIGFscmVhZHkgbm9ybWFsaXplZFxyXG4gICAgaWYgKGZuLl9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVuZGVyRm5XaXRoQ29udGV4dCA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgYSB1c2VyIGNhbGxzIGEgY29tcGlsZWQgc2xvdCBpbnNpZGUgYSB0ZW1wbGF0ZSBleHByZXNzaW9uICgjMTc0NSksIGl0XHJcbiAgICAgICAgLy8gY2FuIG1lc3MgdXAgYmxvY2sgdHJhY2tpbmcsIHNvIGJ5IGRlZmF1bHQgd2UgZGlzYWJsZSBibG9jayB0cmFja2luZyBhbmRcclxuICAgICAgICAvLyBmb3JjZSBiYWlsIG91dCB3aGVuIGludm9raW5nIGEgY29tcGlsZWQgc2xvdCAoaW5kaWNhdGVkIGJ5IHRoZSAuX2QgZmxhZykuXHJcbiAgICAgICAgLy8gVGhpcyBpc24ndCBuZWNlc3NhcnkgaWYgcmVuZGVyaW5nIGEgY29tcGlsZWQgYDxzbG90PmAsIHNvIHdlIGZsaXAgdGhlXHJcbiAgICAgICAgLy8gLl9kIGZsYWcgb2ZmIHdoZW4gaW52b2tpbmcgdGhlIHdyYXBwZWQgZm4gaW5zaWRlIGByZW5kZXJTbG90YC5cclxuICAgICAgICBpZiAocmVuZGVyRm5XaXRoQ29udGV4dC5fZCkge1xyXG4gICAgICAgICAgICBzZXRCbG9ja1RyYWNraW5nKC0xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHJldkluc3RhbmNlID0gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGN0eCk7XHJcbiAgICAgICAgY29uc3QgcmVzID0gZm4oLi4uYXJncyk7XHJcbiAgICAgICAgc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKHByZXZJbnN0YW5jZSk7XHJcbiAgICAgICAgaWYgKHJlbmRlckZuV2l0aENvbnRleHQuX2QpIHtcclxuICAgICAgICAgICAgc2V0QmxvY2tUcmFja2luZygxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkKGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9O1xyXG4gICAgLy8gbWFyayBub3JtYWxpemVkIHRvIGF2b2lkIGR1cGxpY2F0ZWQgd3JhcHBpbmdcclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX24gPSB0cnVlO1xyXG4gICAgLy8gbWFyayB0aGlzIGFzIGNvbXBpbGVkIGJ5IGRlZmF1bHRcclxuICAgIC8vIHRoaXMgaXMgdXNlZCBpbiB2bm9kZS50cyAtPiBub3JtYWxpemVDaGlsZHJlbigpIHRvIHNldCB0aGUgc2xvdFxyXG4gICAgLy8gcmVuZGVyaW5nIGZsYWcuXHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9jID0gdHJ1ZTtcclxuICAgIC8vIGRpc2FibGUgYmxvY2sgdHJhY2tpbmcgYnkgZGVmYXVsdFxyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fZCA9IHRydWU7XHJcbiAgICByZXR1cm4gcmVuZGVyRm5XaXRoQ29udGV4dDtcclxufVxuXG4vKipcclxuICogZGV2IG9ubHkgZmxhZyB0byB0cmFjayB3aGV0aGVyICRhdHRycyB3YXMgdXNlZCBkdXJpbmcgcmVuZGVyLlxyXG4gKiBJZiAkYXR0cnMgd2FzIHVzZWQgZHVyaW5nIHJlbmRlciB0aGVuIHRoZSB3YXJuaW5nIGZvciBmYWlsZWQgYXR0cnNcclxuICogZmFsbHRocm91Z2ggY2FuIGJlIHN1cHByZXNzZWQuXHJcbiAqL1xyXG5sZXQgYWNjZXNzZWRBdHRycyA9IGZhbHNlO1xyXG5mdW5jdGlvbiBtYXJrQXR0cnNBY2Nlc3NlZCgpIHtcclxuICAgIGFjY2Vzc2VkQXR0cnMgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgdHlwZTogQ29tcG9uZW50LCB2bm9kZSwgcHJveHksIHdpdGhQcm94eSwgcHJvcHMsIHByb3BzT3B0aW9uczogW3Byb3BzT3B0aW9uc10sIHNsb3RzLCBhdHRycywgZW1pdCwgcmVuZGVyLCByZW5kZXJDYWNoZSwgZGF0YSwgc2V0dXBTdGF0ZSwgY3R4LCBpbmhlcml0QXR0cnMgfSA9IGluc3RhbmNlO1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIGxldCBmYWxsdGhyb3VnaEF0dHJzO1xyXG4gICAgY29uc3QgcHJldiA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgYWNjZXNzZWRBdHRycyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAvLyB3aXRoUHJveHkgaXMgYSBwcm94eSB3aXRoIGEgZGlmZmVyZW50IGBoYXNgIHRyYXAgb25seSBmb3JcclxuICAgICAgICAgICAgLy8gcnVudGltZS1jb21waWxlZCByZW5kZXIgZnVuY3Rpb25zIHVzaW5nIGB3aXRoYCBibG9jay5cclxuICAgICAgICAgICAgY29uc3QgcHJveHlUb1VzZSA9IHdpdGhQcm94eSB8fCBwcm94eTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gbm9ybWFsaXplVk5vZGUocmVuZGVyLmNhbGwocHJveHlUb1VzZSwgcHJveHlUb1VzZSwgcmVuZGVyQ2FjaGUsIHByb3BzLCBzZXR1cFN0YXRlLCBkYXRhLCBjdHgpKTtcclxuICAgICAgICAgICAgZmFsbHRocm91Z2hBdHRycyA9IGF0dHJzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb25hbFxyXG4gICAgICAgICAgICBjb25zdCByZW5kZXIgPSBDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIC8vIGluIGRldiwgbWFyayBhdHRycyBhY2Nlc3NlZCBpZiBvcHRpb25hbCBwcm9wcyAoYXR0cnMgPT09IHByb3BzKVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGF0dHJzID09PSBwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQgPSBub3JtYWxpemVWTm9kZShyZW5kZXIubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgPyByZW5kZXIocHJvcHMsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQgYXR0cnMoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzbG90cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA6IHsgYXR0cnMsIHNsb3RzLCBlbWl0IH0pXHJcbiAgICAgICAgICAgICAgICA6IHJlbmRlcihwcm9wcywgbnVsbCAvKiB3ZSBrbm93IGl0IGRvZXNuJ3QgbmVlZCBpdCAqLykpO1xyXG4gICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gQ29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICA/IGF0dHJzXHJcbiAgICAgICAgICAgICAgICA6IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaChhdHRycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGJsb2NrU3RhY2subGVuZ3RoID0gMDtcclxuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAxIC8qIEVycm9yQ29kZXMuUkVOREVSX0ZVTkNUSU9OICovKTtcclxuICAgICAgICByZXN1bHQgPSBjcmVhdGVWTm9kZShDb21tZW50KTtcclxuICAgIH1cclxuICAgIC8vIGF0dHIgbWVyZ2luZ1xyXG4gICAgLy8gaW4gZGV2IG1vZGUsIGNvbW1lbnRzIGFyZSBwcmVzZXJ2ZWQsIGFuZCBpdCdzIHBvc3NpYmxlIGZvciBhIHRlbXBsYXRlXHJcbiAgICAvLyB0byBoYXZlIGNvbW1lbnRzIGFsb25nIHNpZGUgdGhlIHJvb3QgZWxlbWVudCB3aGljaCBtYWtlcyBpdCBhIGZyYWdtZW50XHJcbiAgICBsZXQgcm9vdCA9IHJlc3VsdDtcclxuICAgIGxldCBzZXRSb290ID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIHJlc3VsdC5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgcmVzdWx0LnBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgIFtyb290LCBzZXRSb290XSA9IGdldENoaWxkUm9vdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZhbGx0aHJvdWdoQXR0cnMgJiYgaW5oZXJpdEF0dHJzICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmYWxsdGhyb3VnaEF0dHJzKTtcclxuICAgICAgICBjb25zdCB7IHNoYXBlRmxhZyB9ID0gcm9vdDtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmICgxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyB8IDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNPcHRpb25zICYmIGtleXMuc29tZShpc01vZGVsTGlzdGVuZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSB2LW1vZGVsIGxpc3RlbmVyIChvblVwZGF0ZTp4eHgpIGhhcyBhIGNvcnJlc3BvbmRpbmcgZGVjbGFyZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBwcm9wLCBpdCBpbmRpY2F0ZXMgdGhpcyBjb21wb25lbnQgZXhwZWN0cyB0byBoYW5kbGUgdi1tb2RlbCBhbmRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCBzaG91bGQgbm90IGZhbGx0aHJvdWdoLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbGF0ZWQ6ICMxNTQzLCAjMTY0MywgIzE5ODlcclxuICAgICAgICAgICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gZmlsdGVyTW9kZWxMaXN0ZW5lcnMoZmFsbHRocm91Z2hBdHRycywgcHJvcHNPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJvb3QgPSBjbG9uZVZOb2RlKHJvb3QsIGZhbGx0aHJvdWdoQXR0cnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhYWNjZXNzZWRBdHRycyAmJiByb290LnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFsbEF0dHJzID0gT2JqZWN0LmtleXMoYXR0cnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnRBdHRycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmFBdHRycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhbGxBdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxBdHRyc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB2LW1vZGVsIGhhbmRsZXJzIHdoZW4gdGhleSBmYWlsIHRvIGZhbGx0aHJvdWdoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNNb2RlbExpc3RlbmVyKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBgb25gLCBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIHRvIHJlZmxlY3QgZXZlbnQgY2FzaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmF0ZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudEF0dHJzLnB1c2goa2V5WzJdLnRvTG93ZXJDYXNlKCkgKyBrZXkuc2xpY2UoMykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYUF0dHJzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFBdHRycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBFeHRyYW5lb3VzIG5vbi1wcm9wcyBhdHRyaWJ1dGVzIChgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXh0cmFBdHRycy5qb2luKCcsICcpfSkgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB3ZXJlIHBhc3NlZCB0byBjb21wb25lbnQgYnV0IGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGJlY2F1c2UgY29tcG9uZW50IHJlbmRlcnMgZnJhZ21lbnQgb3IgdGV4dCByb290IG5vZGVzLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50QXR0cnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRXh0cmFuZW91cyBub24tZW1pdHMgZXZlbnQgbGlzdGVuZXJzIChgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXZlbnRBdHRycy5qb2luKCcsICcpfSkgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB3ZXJlIHBhc3NlZCB0byBjb21wb25lbnQgYnV0IGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGJlY2F1c2UgY29tcG9uZW50IHJlbmRlcnMgZnJhZ21lbnQgb3IgdGV4dCByb290IG5vZGVzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYElmIHRoZSBsaXN0ZW5lciBpcyBpbnRlbmRlZCB0byBiZSBhIGNvbXBvbmVudCBjdXN0b20gZXZlbnQgbGlzdGVuZXIgb25seSwgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBkZWNsYXJlIGl0IHVzaW5nIHRoZSBcImVtaXRzXCIgb3B0aW9uLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaW5oZXJpdCBkaXJlY3RpdmVzXHJcbiAgICBpZiAodm5vZGUuZGlycykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcclxuICAgICAgICAgICAgd2FybihgUnVudGltZSBkaXJlY3RpdmUgdXNlZCBvbiBjb21wb25lbnQgd2l0aCBub24tZWxlbWVudCByb290IG5vZGUuIGAgK1xyXG4gICAgICAgICAgICAgICAgYFRoZSBkaXJlY3RpdmVzIHdpbGwgbm90IGZ1bmN0aW9uIGFzIGludGVuZGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjbG9uZSBiZWZvcmUgbXV0YXRpbmcgc2luY2UgdGhlIHJvb3QgbWF5IGJlIGEgaG9pc3RlZCB2bm9kZVxyXG4gICAgICAgIHJvb3QgPSBjbG9uZVZOb2RlKHJvb3QpO1xyXG4gICAgICAgIHJvb3QuZGlycyA9IHJvb3QuZGlycyA/IHJvb3QuZGlycy5jb25jYXQodm5vZGUuZGlycykgOiB2bm9kZS5kaXJzO1xyXG4gICAgfVxyXG4gICAgLy8gaW5oZXJpdCB0cmFuc2l0aW9uIGRhdGFcclxuICAgIGlmICh2bm9kZS50cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNFbGVtZW50Um9vdChyb290KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgaW5zaWRlIDxUcmFuc2l0aW9uPiByZW5kZXJzIG5vbi1lbGVtZW50IHJvb3Qgbm9kZSBgICtcclxuICAgICAgICAgICAgICAgIGB0aGF0IGNhbm5vdCBiZSBhbmltYXRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdC50cmFuc2l0aW9uID0gdm5vZGUudHJhbnNpdGlvbjtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2V0Um9vdCkge1xyXG4gICAgICAgIHNldFJvb3Qocm9vdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSByb290O1xyXG4gICAgfVxyXG4gICAgc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKHByZXYpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICogSW4gZGV2IG1vZGUsIHRlbXBsYXRlIHJvb3QgbGV2ZWwgY29tbWVudHMgYXJlIHJlbmRlcmVkLCB3aGljaCB0dXJucyB0aGVcclxuICogdGVtcGxhdGUgaW50byBhIGZyYWdtZW50IHJvb3QsIGJ1dCB3ZSBuZWVkIHRvIGxvY2F0ZSB0aGUgc2luZ2xlIGVsZW1lbnRcclxuICogcm9vdCBmb3IgYXR0cnMgYW5kIHNjb3BlIGlkIHByb2Nlc3NpbmcuXHJcbiAqL1xyXG5jb25zdCBnZXRDaGlsZFJvb3QgPSAodm5vZGUpID0+IHtcclxuICAgIGNvbnN0IHJhd0NoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47XHJcbiAgICBjb25zdCBkeW5hbWljQ2hpbGRyZW4gPSB2bm9kZS5keW5hbWljQ2hpbGRyZW47XHJcbiAgICBjb25zdCBjaGlsZFJvb3QgPSBmaWx0ZXJTaW5nbGVSb290KHJhd0NoaWxkcmVuKTtcclxuICAgIGlmICghY2hpbGRSb290KSB7XHJcbiAgICAgICAgcmV0dXJuIFt2bm9kZSwgdW5kZWZpbmVkXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGluZGV4ID0gcmF3Q2hpbGRyZW4uaW5kZXhPZihjaGlsZFJvb3QpO1xyXG4gICAgY29uc3QgZHluYW1pY0luZGV4ID0gZHluYW1pY0NoaWxkcmVuID8gZHluYW1pY0NoaWxkcmVuLmluZGV4T2YoY2hpbGRSb290KSA6IC0xO1xyXG4gICAgY29uc3Qgc2V0Um9vdCA9ICh1cGRhdGVkUm9vdCkgPT4ge1xyXG4gICAgICAgIHJhd0NoaWxkcmVuW2luZGV4XSA9IHVwZGF0ZWRSb290O1xyXG4gICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW5bZHluYW1pY0luZGV4XSA9IHVwZGF0ZWRSb290O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZWRSb290LnBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IFsuLi5keW5hbWljQ2hpbGRyZW4sIHVwZGF0ZWRSb290XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gW25vcm1hbGl6ZVZOb2RlKGNoaWxkUm9vdCksIHNldFJvb3RdO1xyXG59O1xyXG5mdW5jdGlvbiBmaWx0ZXJTaW5nbGVSb290KGNoaWxkcmVuKSB7XHJcbiAgICBsZXQgc2luZ2xlUm9vdDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSkge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmUgdXNlciBjb21tZW50XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlICE9PSBDb21tZW50IHx8IGNoaWxkLmNoaWxkcmVuID09PSAndi1pZicpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzaW5nbGVSb290KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFzIG1vcmUgdGhhbiAxIG5vbi1jb21tZW50IGNoaWxkLCByZXR1cm4gbm93XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlUm9vdCA9IGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNpbmdsZVJvb3Q7XHJcbn1cclxuY29uc3QgZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoID0gKGF0dHJzKSA9PiB7XHJcbiAgICBsZXQgcmVzO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ3N0eWxlJyB8fCBpc09uKGtleSkpIHtcclxuICAgICAgICAgICAgKHJlcyB8fCAocmVzID0ge30pKVtrZXldID0gYXR0cnNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59O1xyXG5jb25zdCBmaWx0ZXJNb2RlbExpc3RlbmVycyA9IChhdHRycywgcHJvcHMpID0+IHtcclxuICAgIGNvbnN0IHJlcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcclxuICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpIHx8ICEoa2V5LnNsaWNlKDkpIGluIHByb3BzKSkge1xyXG4gICAgICAgICAgICByZXNba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufTtcclxuY29uc3QgaXNFbGVtZW50Um9vdCA9ICh2bm9kZSkgPT4ge1xyXG4gICAgcmV0dXJuICh2bm9kZS5zaGFwZUZsYWcgJiAoNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyB8IDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovKSB8fFxyXG4gICAgICAgIHZub2RlLnR5cGUgPT09IENvbW1lbnQgLy8gcG90ZW50aWFsIHYtaWYgYnJhbmNoIHN3aXRjaFxyXG4gICAgKTtcclxufTtcclxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlQ29tcG9uZW50KHByZXZWTm9kZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpIHtcclxuICAgIGNvbnN0IHsgcHJvcHM6IHByZXZQcm9wcywgY2hpbGRyZW46IHByZXZDaGlsZHJlbiwgY29tcG9uZW50IH0gPSBwcmV2Vk5vZGU7XHJcbiAgICBjb25zdCB7IHByb3BzOiBuZXh0UHJvcHMsIGNoaWxkcmVuOiBuZXh0Q2hpbGRyZW4sIHBhdGNoRmxhZyB9ID0gbmV4dFZOb2RlO1xyXG4gICAgY29uc3QgZW1pdHMgPSBjb21wb25lbnQuZW1pdHNPcHRpb25zO1xyXG4gICAgLy8gUGFyZW50IGNvbXBvbmVudCdzIHJlbmRlciBmdW5jdGlvbiB3YXMgaG90LXVwZGF0ZWQuIFNpbmNlIHRoaXMgbWF5IGhhdmVcclxuICAgIC8vIGNhdXNlZCB0aGUgY2hpbGQgY29tcG9uZW50J3Mgc2xvdHMgY29udGVudCB0byBoYXZlIGNoYW5nZWQsIHdlIG5lZWQgdG9cclxuICAgIC8vIGZvcmNlIHRoZSBjaGlsZCB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgKHByZXZDaGlsZHJlbiB8fCBuZXh0Q2hpbGRyZW4pICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIGZvcmNlIGNoaWxkIHVwZGF0ZSBmb3IgcnVudGltZSBkaXJlY3RpdmUgb3IgdHJhbnNpdGlvbiBvbiBjb21wb25lbnQgdm5vZGUuXHJcbiAgICBpZiAobmV4dFZOb2RlLmRpcnMgfHwgbmV4dFZOb2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpbWl6ZWQgJiYgcGF0Y2hGbGFnID49IDApIHtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi8pIHtcclxuICAgICAgICAgICAgLy8gc2xvdCBjb250ZW50IHRoYXQgcmVmZXJlbmNlcyB2YWx1ZXMgdGhhdCBtaWdodCBoYXZlIGNoYW5nZWQsXHJcbiAgICAgICAgICAgIC8vIGUuZy4gaW4gYSB2LWZvclxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLykge1xyXG4gICAgICAgICAgICBpZiAoIXByZXZQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhbmV4dFByb3BzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByZXNlbmNlIG9mIHRoaXMgZmxhZyBpbmRpY2F0ZXMgcHJvcHMgYXJlIGFsd2F5cyBub24tbnVsbFxyXG4gICAgICAgICAgICByZXR1cm4gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBhdGNoRmxhZyAmIDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUHJvcHMgPSBuZXh0Vk5vZGUuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNQcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZHluYW1pY1Byb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRQcm9wc1trZXldICE9PSBwcmV2UHJvcHNba2V5XSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICFpc0VtaXRMaXN0ZW5lcihlbWl0cywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcyBwYXRoIGlzIG9ubHkgdGFrZW4gYnkgbWFudWFsbHkgd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zXHJcbiAgICAgICAgLy8gc28gcHJlc2VuY2Ugb2YgYW55IGNoaWxkcmVuIGxlYWRzIHRvIGEgZm9yY2VkIHVwZGF0ZVxyXG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4gfHwgbmV4dENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmICghbmV4dENoaWxkcmVuIHx8ICFuZXh0Q2hpbGRyZW4uJHN0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByZXZQcm9wcyA9PT0gbmV4dFByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhbmV4dFByb3BzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW5leHRQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHNPcHRpb25zKSB7XHJcbiAgICBjb25zdCBuZXh0S2V5cyA9IE9iamVjdC5rZXlzKG5leHRQcm9wcyk7XHJcbiAgICBpZiAobmV4dEtleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhwcmV2UHJvcHMpLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXh0S2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IG5leHRLZXlzW2ldO1xyXG4gICAgICAgIGlmIChuZXh0UHJvcHNba2V5XSAhPT0gcHJldlByb3BzW2tleV0gJiZcclxuICAgICAgICAgICAgIWlzRW1pdExpc3RlbmVyKGVtaXRzT3B0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlSE9DSG9zdEVsKHsgdm5vZGUsIHBhcmVudCB9LCBlbCAvLyBIb3N0Tm9kZVxyXG4pIHtcclxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XHJcbiAgICAgICAgKHZub2RlID0gcGFyZW50LnZub2RlKS5lbCA9IGVsO1xyXG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNTdXNwZW5zZSA9ICh0eXBlKSA9PiB0eXBlLl9faXNTdXNwZW5zZTtcclxuLy8gU3VzcGVuc2UgZXhwb3NlcyBhIGNvbXBvbmVudC1saWtlIEFQSSwgYW5kIGlzIHRyZWF0ZWQgbGlrZSBhIGNvbXBvbmVudFxyXG4vLyBpbiB0aGUgY29tcGlsZXIsIGJ1dCBpbnRlcm5hbGx5IGl0J3MgYSBzcGVjaWFsIGJ1aWx0LWluIHR5cGUgdGhhdCBob29rc1xyXG4vLyBkaXJlY3RseSBpbnRvIHRoZSByZW5kZXJlci5cclxuY29uc3QgU3VzcGVuc2VJbXBsID0ge1xyXG4gICAgbmFtZTogJ1N1c3BlbnNlJyxcclxuICAgIC8vIEluIG9yZGVyIHRvIG1ha2UgU3VzcGVuc2UgdHJlZS1zaGFrYWJsZSwgd2UgbmVlZCB0byBhdm9pZCBpbXBvcnRpbmcgaXRcclxuICAgIC8vIGRpcmVjdGx5IGluIHRoZSByZW5kZXJlci4gVGhlIHJlbmRlcmVyIGNoZWNrcyBmb3IgdGhlIF9faXNTdXNwZW5zZSBmbGFnXHJcbiAgICAvLyBvbiBhIHZub2RlJ3MgdHlwZSBhbmQgY2FsbHMgdGhlIGBwcm9jZXNzYCBtZXRob2QsIHBhc3NpbmcgaW4gcmVuZGVyZXJcclxuICAgIC8vIGludGVybmFscy5cclxuICAgIF9faXNTdXNwZW5zZTogdHJ1ZSxcclxuICAgIHByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBcclxuICAgIC8vIHBsYXRmb3JtLXNwZWNpZmljIGltcGwgcGFzc2VkIGZyb20gcmVuZGVyZXJcclxuICAgIHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgbW91bnRTdXNwZW5zZShuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2hTdXNwZW5zZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBoeWRyYXRlOiBoeWRyYXRlU3VzcGVuc2UsXHJcbiAgICBjcmVhdGU6IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnksXHJcbiAgICBub3JtYWxpemU6IG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW5cclxufTtcclxuLy8gRm9yY2UtY2FzdGVkIHB1YmxpYyB0eXBpbmcgZm9yIGggYW5kIFRTWCBwcm9wcyBpbmZlcmVuY2VcclxuY29uc3QgU3VzcGVuc2UgPSAoU3VzcGVuc2VJbXBsICk7XHJcbmZ1bmN0aW9uIHRyaWdnZXJFdmVudCh2bm9kZSwgbmFtZSkge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lciA9IHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzW25hbWVdO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oZXZlbnRMaXN0ZW5lcikpIHtcclxuICAgICAgICBldmVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbW91bnRTdXNwZW5zZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgIGNvbnN0IHsgcDogcGF0Y2gsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSAodm5vZGUuc3VzcGVuc2UgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnRTdXNwZW5zZSwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGhpZGRlbkNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKSk7XHJcbiAgICAvLyBzdGFydCBtb3VudGluZyB0aGUgY29udGVudCBzdWJ0cmVlIGluIGFuIG9mZi1kb20gY29udGFpbmVyXHJcbiAgICBwYXRjaChudWxsLCAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IHZub2RlLnNzQ29udGVudCksIGhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAvLyBub3cgY2hlY2sgaWYgd2UgaGF2ZSBlbmNvdW50ZXJlZCBhbnkgYXN5bmMgZGVwc1xyXG4gICAgaWYgKHN1c3BlbnNlLmRlcHMgPiAwKSB7XHJcbiAgICAgICAgLy8gaGFzIGFzeW5jXHJcbiAgICAgICAgLy8gaW52b2tlIEBmYWxsYmFjayBldmVudFxyXG4gICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uUGVuZGluZycpO1xyXG4gICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uRmFsbGJhY2snKTtcclxuICAgICAgICAvLyBtb3VudCB0aGUgZmFsbGJhY2sgdHJlZVxyXG4gICAgICAgIHBhdGNoKG51bGwsIHZub2RlLnNzRmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCB2bm9kZS5zc0ZhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIFN1c3BlbnNlIGhhcyBubyBhc3luYyBkZXBzLiBKdXN0IHJlc29sdmUuXHJcbiAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhdGNoU3VzcGVuc2UobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHsgcDogcGF0Y2gsIHVtOiB1bm1vdW50LCBvOiB7IGNyZWF0ZUVsZW1lbnQgfSB9KSB7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9IChuMi5zdXNwZW5zZSA9IG4xLnN1c3BlbnNlKTtcclxuICAgIHN1c3BlbnNlLnZub2RlID0gbjI7XHJcbiAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgY29uc3QgbmV3QnJhbmNoID0gbjIuc3NDb250ZW50O1xyXG4gICAgY29uc3QgbmV3RmFsbGJhY2sgPSBuMi5zc0ZhbGxiYWNrO1xyXG4gICAgY29uc3QgeyBhY3RpdmVCcmFuY2gsIHBlbmRpbmdCcmFuY2gsIGlzSW5GYWxsYmFjaywgaXNIeWRyYXRpbmcgfSA9IHN1c3BlbnNlO1xyXG4gICAgaWYgKHBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBwZW5kaW5nQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAvLyBzYW1lIHJvb3QgdHlwZSBidXQgY29udGVudCBtYXkgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgICAgICAgICBwYXRjaChwZW5kaW5nQnJhbmNoLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdG9nZ2xlZCBiZWZvcmUgcGVuZGluZyB0cmVlIGlzIHJlc29sdmVkXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCsrO1xyXG4gICAgICAgICAgICBpZiAoaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRvZ2dsZWQgYmVmb3JlIGh5ZHJhdGlvbiBpcyBmaW5pc2hlZCwgdGhlIGN1cnJlbnQgRE9NIHRyZWUgaXNcclxuICAgICAgICAgICAgICAgIC8vIG5vIGxvbmdlciB2YWxpZC4gc2V0IGl0IGFzIHRoZSBhY3RpdmUgYnJhbmNoIHNvIGl0IHdpbGwgYmUgdW5tb3VudGVkXHJcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHJlc29sdmVkXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc0h5ZHJhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuYWN0aXZlQnJhbmNoID0gcGVuZGluZ0JyYW5jaDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQocGVuZGluZ0JyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaW5jcmVtZW50IHBlbmRpbmcgSUQuIHRoaXMgaXMgdXNlZCB0byBpbnZhbGlkYXRlIGFzeW5jIGNhbGxiYWNrc1xyXG4gICAgICAgICAgICAvLyByZXNldCBzdXNwZW5zZSBzdGF0ZVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5kZXBzID0gMDtcclxuICAgICAgICAgICAgLy8gZGlzY2FyZCBlZmZlY3RzIGZyb20gcGVuZGluZyBicmFuY2hcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAvLyBkaXNjYXJkIHByZXZpb3VzIGNvbnRhaW5lclxyXG4gICAgICAgICAgICBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICAgICAgaWYgKGlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBpbiBmYWxsYmFjayBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZUJyYW5jaCAmJiBpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBhY3RpdmVCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0b2dnbGVkIFwiYmFja1wiIHRvIGN1cnJlbnQgYWN0aXZlIGJyYW5jaFxyXG4gICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgcmVzb2x2ZVxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaGVkIHRvIGEgM3JkIGJyYW5jaFxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZUJyYW5jaCAmJiBpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBhY3RpdmVCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgZGlkIG5vdCBjaGFuZ2UsIGp1c3Qgbm9ybWFsIHBhdGNoXHJcbiAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3QnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdCcmFuY2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBub2RlIHRvZ2dsZWRcclxuICAgICAgICAgICAgLy8gaW52b2tlIEBwZW5kaW5nIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChuMiwgJ29uUGVuZGluZycpO1xyXG4gICAgICAgICAgICAvLyBtb3VudCBwZW5kaW5nIGJyYW5jaCBpbiBvZmYtZG9tIGNvbnRhaW5lclxyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQrKztcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGluY29taW5nIGJyYW5jaCBoYXMgbm8gYXN5bmMgZGVwcywgcmVzb2x2ZSBub3cuXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRpbWVvdXQsIHBlbmRpbmdJZCB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdJZCA9PT0gcGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5mYWxsYmFjayhuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVvdXQgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5mYWxsYmFjayhuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxubGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnQsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBoaWRkZW5Db250YWluZXIsIGFuY2hvciwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaXNIeWRyYXRpbmcgPSBmYWxzZSkge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFmYWxzZSAmJiAhaGFzV2FybmVkKSB7XHJcbiAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlIGBjb25zb2xlLmluZm9gIGNhbm5vdCBiZSBudWxsIGVycm9yXHJcbiAgICAgICAgY29uc29sZVtjb25zb2xlLmluZm8gPyAnaW5mbycgOiAnbG9nJ10oYDxTdXNwZW5zZT4gaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5kIGl0cyBBUEkgd2lsbCBsaWtlbHkgY2hhbmdlLmApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBwOiBwYXRjaCwgbTogbW92ZSwgdW06IHVubW91bnQsIG46IG5leHQsIG86IHsgcGFyZW50Tm9kZSwgcmVtb3ZlIH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgdGltZW91dCA9IHRvTnVtYmVyKHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnRpbWVvdXQpO1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSB7XHJcbiAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCxcclxuICAgICAgICBpc1NWRyxcclxuICAgICAgICBjb250YWluZXIsXHJcbiAgICAgICAgaGlkZGVuQ29udGFpbmVyLFxyXG4gICAgICAgIGFuY2hvcixcclxuICAgICAgICBkZXBzOiAwLFxyXG4gICAgICAgIHBlbmRpbmdJZDogMCxcclxuICAgICAgICB0aW1lb3V0OiB0eXBlb2YgdGltZW91dCA9PT0gJ251bWJlcicgPyB0aW1lb3V0IDogLTEsXHJcbiAgICAgICAgYWN0aXZlQnJhbmNoOiBudWxsLFxyXG4gICAgICAgIHBlbmRpbmdCcmFuY2g6IG51bGwsXHJcbiAgICAgICAgaXNJbkZhbGxiYWNrOiB0cnVlLFxyXG4gICAgICAgIGlzSHlkcmF0aW5nLFxyXG4gICAgICAgIGlzVW5tb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBlZmZlY3RzOiBbXSxcclxuICAgICAgICByZXNvbHZlKHJlc3VtZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzdW1lICYmICFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdXNwZW5zZS5yZXNvbHZlKCkgaXMgY2FsbGVkIHdpdGhvdXQgYSBwZW5kaW5nIGJyYW5jaC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5pc1VubW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc3VzcGVuc2UucmVzb2x2ZSgpIGlzIGNhbGxlZCBvbiBhbiBhbHJlYWR5IHVubW91bnRlZCBzdXNwZW5zZSBib3VuZGFyeS5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB7IHZub2RlLCBhY3RpdmVCcmFuY2gsIHBlbmRpbmdCcmFuY2gsIHBlbmRpbmdJZCwgZWZmZWN0cywgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmlzSHlkcmF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIXJlc3VtZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVsYXlFbnRlciA9IGFjdGl2ZUJyYW5jaCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdCcmFuY2gudHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdCcmFuY2gudHJhbnNpdGlvbi5tb2RlID09PSAnb3V0LWluJztcclxuICAgICAgICAgICAgICAgIGlmIChkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlQnJhbmNoLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdJZCA9PT0gc3VzcGVuc2UucGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKHBlbmRpbmdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIE1vdmVUeXBlLkVOVEVSICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGluaXRpYWwgYW5jaG9yIG9uIG1vdW50XHJcbiAgICAgICAgICAgICAgICBsZXQgeyBhbmNob3IgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAgICAgLy8gdW5tb3VudCBjdXJyZW50IGFjdGl2ZSB0cmVlXHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGZhbGxiYWNrIHRyZWUgd2FzIG1vdW50ZWQsIGl0IG1heSBoYXZlIGJlZW4gbW92ZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcyBwYXJ0IG9mIGEgcGFyZW50IHN1c3BlbnNlLiBnZXQgdGhlIGxhdGVzdCBhbmNob3IgZm9yIGluc2VydGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvciA9IG5leHQoYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGNvbnRlbnQgZnJvbSBvZmYtZG9tIGNvbnRhaW5lciB0byBhY3R1YWwgY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZShwZW5kaW5nQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBwZW5kaW5nQnJhbmNoKTtcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG51bGw7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmlzSW5GYWxsYmFjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBmbHVzaCBidWZmZXJlZCBlZmZlY3RzXHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGEgcGVuZGluZyBwYXJlbnQgc3VzcGVuc2VcclxuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHN1c3BlbnNlLnBhcmVudDtcclxuICAgICAgICAgICAgbGV0IGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCBhIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlLCBtZXJnZSBidWZmZXJlZCBwb3N0IGpvYnNcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoYXQgcGFyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmVmZmVjdHMucHVzaCguLi5lZmZlY3RzKTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNVbnJlc29sdmVkQW5jZXN0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBubyBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZSwgZmx1c2ggYWxsIGpvYnNcclxuICAgICAgICAgICAgaWYgKCFoYXNVbnJlc29sdmVkQW5jZXN0b3IpIHtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZWZmZWN0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgICAgICAvLyBpbnZva2UgQHJlc29sdmUgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25SZXNvbHZlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWxsYmFjayhmYWxsYmFja1ZOb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICghc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUsIGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGlzU1ZHIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgLy8gaW52b2tlIEBmYWxsYmFjayBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvbkZhbGxiYWNrJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IG5leHQoYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICAgICAgY29uc3QgbW91bnRGYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghc3VzcGVuc2UuaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnQgdGhlIGZhbGxiYWNrIHRyZWVcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIGZhbGxiYWNrVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBmYWxsYmFja1ZOb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgZGVsYXlFbnRlciA9IGZhbGxiYWNrVk5vZGUudHJhbnNpdGlvbiAmJiBmYWxsYmFja1ZOb2RlLnRyYW5zaXRpb24ubW9kZSA9PT0gJ291dC1pbic7XHJcbiAgICAgICAgICAgIGlmIChkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVCcmFuY2gudHJhbnNpdGlvbi5hZnRlckxlYXZlID0gbW91bnRGYWxsYmFjaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc0luRmFsbGJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB1bm1vdW50IGN1cnJlbnQgYWN0aXZlIGJyYW5jaFxyXG4gICAgICAgICAgICB1bm1vdW50KGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBubyBzdXNwZW5zZSBzbyB1bm1vdW50IGhvb2tzIGZpcmUgbm93XHJcbiAgICAgICAgICAgIHRydWUgLy8gc2hvdWxkUmVtb3ZlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICghZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgbW91bnRGYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3ZlKGNvbnRhaW5lciwgYW5jaG9yLCB0eXBlKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCAmJlxyXG4gICAgICAgICAgICAgICAgbW92ZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCB0eXBlKTtcclxuICAgICAgICAgICAgc3VzcGVuc2UuY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbmV4dCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCAmJiBuZXh0KHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZWdpc3RlckRlcChpbnN0YW5jZSwgc2V0dXBSZW5kZXJFZmZlY3QpIHtcclxuICAgICAgICAgICAgY29uc3QgaXNJblBlbmRpbmdTdXNwZW5zZSA9ICEhc3VzcGVuc2UucGVuZGluZ0JyYW5jaDtcclxuICAgICAgICAgICAgaWYgKGlzSW5QZW5kaW5nU3VzcGVuc2UpIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmRlcHMrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBoeWRyYXRlZEVsID0gaW5zdGFuY2Uudm5vZGUuZWw7XHJcbiAgICAgICAgICAgIGluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAuYXN5bmNEZXAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDAgLyogRXJyb3JDb2Rlcy5TRVRVUF9GVU5DVElPTiAqLyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGhlbihhc3luY1NldHVwUmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHJldHJ5IHdoZW4gdGhlIHNldHVwKCkgcHJvbWlzZSByZXNvbHZlcy5cclxuICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgaGF2ZSBiZWVuIHVubW91bnRlZCBiZWZvcmUgcmVzb2x2ZS5cclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5pc1VubW91bnRlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLmlzVW5tb3VudGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkICE9PSBpbnN0YW5jZS5zdXNwZW5zZUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcmV0cnkgZnJvbSB0aGlzIGNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZub2RlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIGFzeW5jU2V0dXBSZXN1bHQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGlmIChoeWRyYXRlZEVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgbWF5IGhhdmUgYmVlbiByZXBsYWNlZCBpZiBhbiB1cGRhdGUgaGFwcGVuZWQgYmVmb3JlIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzeW5jIGRlcCBpcyByZXNvbHZlZC5cclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5lbCA9IGh5ZHJhdGVkRWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9ICFoeWRyYXRlZEVsICYmIGluc3RhbmNlLnN1YlRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICBzZXR1cFJlbmRlckVmZmVjdChpbnN0YW5jZSwgdm5vZGUsIFxyXG4gICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IG1heSBoYXZlIGJlZW4gbW92ZWQgYmVmb3JlIHJlc29sdmUuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBhIGh5ZHJhdGlvbiwgaW5zdGFuY2Uuc3ViVHJlZSB3aWxsIGJlIHRoZSBjb21tZW50XHJcbiAgICAgICAgICAgICAgICAvLyBwbGFjZWhvbGRlci5cclxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUoaHlkcmF0ZWRFbCB8fCBpbnN0YW5jZS5zdWJUcmVlLmVsKSwgXHJcbiAgICAgICAgICAgICAgICAvLyBhbmNob3Igd2lsbCBub3QgYmUgdXNlZCBpZiB0aGlzIGlzIGh5ZHJhdGlvbiwgc28gb25seSBuZWVkIHRvXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zaWRlciB0aGUgY29tbWVudCBwbGFjZWhvbGRlciBjYXNlLlxyXG4gICAgICAgICAgICAgICAgaHlkcmF0ZWRFbCA/IG51bGwgOiBuZXh0KGluc3RhbmNlLnN1YlRyZWUpLCBzdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUocGxhY2Vob2xkZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlSE9DSG9zdEVsKGluc3RhbmNlLCB2bm9kZS5lbCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9ubHkgZGVjcmVhc2UgZGVwcyBjb3VudCBpZiBzdXNwZW5zZSBpcyBub3QgYWxyZWFkeSByZXNvbHZlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5QZW5kaW5nU3VzcGVuc2UgJiYgLS1zdXNwZW5zZS5kZXBzID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVubW91bnQocGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmlzVW5tb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHN1c3BlbnNlO1xyXG59XHJcbmZ1bmN0aW9uIGh5ZHJhdGVTdXNwZW5zZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaHlkcmF0ZU5vZGUpIHtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSAodm5vZGUuc3VzcGVuc2UgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnRTdXNwZW5zZSwgcGFyZW50Q29tcG9uZW50LCBub2RlLnBhcmVudE5vZGUsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBudWxsLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCB0cnVlIC8qIGh5ZHJhdGluZyAqLykpO1xyXG4gICAgLy8gdGhlcmUgYXJlIHR3byBwb3NzaWJsZSBzY2VuYXJpb3MgZm9yIHNlcnZlci1yZW5kZXJlZCBzdXNwZW5zZTpcclxuICAgIC8vIC0gc3VjY2Vzczogc3NyIGNvbnRlbnQgc2hvdWxkIGJlIGZ1bGx5IHJlc29sdmVkXHJcbiAgICAvLyAtIGZhaWx1cmU6IHNzciBjb250ZW50IHNob3VsZCBiZSB0aGUgZmFsbGJhY2sgYnJhbmNoLlxyXG4gICAgLy8gaG93ZXZlciwgb24gdGhlIGNsaWVudCB3ZSBkb24ndCByZWFsbHkga25vdyBpZiBpdCBoYXMgZmFpbGVkIG9yIG5vdFxyXG4gICAgLy8gYXR0ZW1wdCB0byBoeWRyYXRlIHRoZSBET00gYXNzdW1pbmcgaXQgaGFzIHN1Y2NlZWRlZCwgYnV0IHdlIHN0aWxsXHJcbiAgICAvLyBuZWVkIHRvIGNvbnN0cnVjdCBhIHN1c3BlbnNlIGJvdW5kYXJ5IGZpcnN0XHJcbiAgICBjb25zdCByZXN1bHQgPSBoeWRyYXRlTm9kZShub2RlLCAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IHZub2RlLnNzQ29udGVudCksIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgIGlmIChzdXNwZW5zZS5kZXBzID09PSAwKSB7XHJcbiAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplU3VzcGVuc2VDaGlsZHJlbih2bm9kZSkge1xyXG4gICAgY29uc3QgeyBzaGFwZUZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcclxuICAgIGNvbnN0IGlzU2xvdENoaWxkcmVuID0gc2hhcGVGbGFnICYgMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLztcclxuICAgIHZub2RlLnNzQ29udGVudCA9IG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChpc1Nsb3RDaGlsZHJlbiA/IGNoaWxkcmVuLmRlZmF1bHQgOiBjaGlsZHJlbik7XHJcbiAgICB2bm9kZS5zc0ZhbGxiYWNrID0gaXNTbG90Q2hpbGRyZW5cclxuICAgICAgICA/IG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChjaGlsZHJlbi5mYWxsYmFjaylcclxuICAgICAgICA6IGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChzKSB7XHJcbiAgICBsZXQgYmxvY2s7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihzKSkge1xyXG4gICAgICAgIGNvbnN0IHRyYWNrQmxvY2sgPSBpc0Jsb2NrVHJlZUVuYWJsZWQgJiYgcy5fYztcclxuICAgICAgICBpZiAodHJhY2tCbG9jaykge1xyXG4gICAgICAgICAgICAvLyBkaXNhYmxlVHJhY2tpbmc6IGZhbHNlXHJcbiAgICAgICAgICAgIC8vIGFsbG93IGJsb2NrIHRyYWNraW5nIGZvciBjb21waWxlZCBzbG90c1xyXG4gICAgICAgICAgICAvLyAoc2VlIC4vY29tcG9uZW50UmVuZGVyQ29udGV4dC50cylcclxuICAgICAgICAgICAgcy5fZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvcGVuQmxvY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcyA9IHMoKTtcclxuICAgICAgICBpZiAodHJhY2tCbG9jaykge1xyXG4gICAgICAgICAgICBzLl9kID0gdHJ1ZTtcclxuICAgICAgICAgICAgYmxvY2sgPSBjdXJyZW50QmxvY2s7XHJcbiAgICAgICAgICAgIGNsb3NlQmxvY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBcnJheShzKSkge1xyXG4gICAgICAgIGNvbnN0IHNpbmdsZUNoaWxkID0gZmlsdGVyU2luZ2xlUm9vdChzKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzaW5nbGVDaGlsZCkge1xyXG4gICAgICAgICAgICB3YXJuKGA8U3VzcGVuc2U+IHNsb3RzIGV4cGVjdCBhIHNpbmdsZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgPSBzaW5nbGVDaGlsZDtcclxuICAgIH1cclxuICAgIHMgPSBub3JtYWxpemVWTm9kZShzKTtcclxuICAgIGlmIChibG9jayAmJiAhcy5keW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICBzLmR5bmFtaWNDaGlsZHJlbiA9IGJsb2NrLmZpbHRlcihjID0+IGMgIT09IHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHM7XHJcbn1cclxuZnVuY3Rpb24gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoZm4sIHN1c3BlbnNlKSB7XHJcbiAgICBpZiAoc3VzcGVuc2UgJiYgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgIGlmIChpc0FycmF5KGZuKSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLnB1c2goLi4uZm4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKGZuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBxdWV1ZVBvc3RGbHVzaENiKGZuKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIGJyYW5jaCkge1xyXG4gICAgc3VzcGVuc2UuYWN0aXZlQnJhbmNoID0gYnJhbmNoO1xyXG4gICAgY29uc3QgeyB2bm9kZSwgcGFyZW50Q29tcG9uZW50IH0gPSBzdXNwZW5zZTtcclxuICAgIGNvbnN0IGVsID0gKHZub2RlLmVsID0gYnJhbmNoLmVsKTtcclxuICAgIC8vIGluIGNhc2Ugc3VzcGVuc2UgaXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNvbXBvbmVudCxcclxuICAgIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSB0aGUgSE9DIGVsXHJcbiAgICBpZiAocGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC5zdWJUcmVlID09PSB2bm9kZSkge1xyXG4gICAgICAgIHBhcmVudENvbXBvbmVudC52bm9kZS5lbCA9IGVsO1xyXG4gICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChwYXJlbnRDb21wb25lbnQsIGVsKTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiBwcm92aWRlKGtleSwgdmFsdWUpIHtcclxuICAgIGlmICghY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBwcm92aWRlKCkgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgc2V0dXAoKS5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBsZXQgcHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucHJvdmlkZXM7XHJcbiAgICAgICAgLy8gYnkgZGVmYXVsdCBhbiBpbnN0YW5jZSBpbmhlcml0cyBpdHMgcGFyZW50J3MgcHJvdmlkZXMgb2JqZWN0XHJcbiAgICAgICAgLy8gYnV0IHdoZW4gaXQgbmVlZHMgdG8gcHJvdmlkZSB2YWx1ZXMgb2YgaXRzIG93biwgaXQgY3JlYXRlcyBpdHNcclxuICAgICAgICAvLyBvd24gcHJvdmlkZXMgb2JqZWN0IHVzaW5nIHBhcmVudCBwcm92aWRlcyBvYmplY3QgYXMgcHJvdG90eXBlLlxyXG4gICAgICAgIC8vIHRoaXMgd2F5IGluIGBpbmplY3RgIHdlIGNhbiBzaW1wbHkgbG9vayB1cCBpbmplY3Rpb25zIGZyb20gZGlyZWN0XHJcbiAgICAgICAgLy8gcGFyZW50IGFuZCBsZXQgdGhlIHByb3RvdHlwZSBjaGFpbiBkbyB0aGUgd29yay5cclxuICAgICAgICBjb25zdCBwYXJlbnRQcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wYXJlbnQgJiYgY3VycmVudEluc3RhbmNlLnBhcmVudC5wcm92aWRlcztcclxuICAgICAgICBpZiAocGFyZW50UHJvdmlkZXMgPT09IHByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgIHByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnByb3ZpZGVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRQcm92aWRlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9sIGFzIGluZGV4IHR5cGVcclxuICAgICAgICBwcm92aWRlc1trZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW5qZWN0KGtleSwgZGVmYXVsdFZhbHVlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkgPSBmYWxzZSkge1xyXG4gICAgLy8gZmFsbGJhY2sgdG8gYGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZWAgc28gdGhhdCB0aGlzIGNhbiBiZSBjYWxsZWQgaW5cclxuICAgIC8vIGEgZnVuY3Rpb25hbCBjb21wb25lbnRcclxuICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlIHx8IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgIC8vICMyNDAwXHJcbiAgICAgICAgLy8gdG8gc3VwcG9ydCBgYXBwLnVzZWAgcGx1Z2lucyxcclxuICAgICAgICAvLyBmYWxsYmFjayB0byBhcHBDb250ZXh0J3MgYHByb3ZpZGVzYCBpZiB0aGUgaW5zdGFuY2UgaXMgYXQgcm9vdFxyXG4gICAgICAgIGNvbnN0IHByb3ZpZGVzID0gaW5zdGFuY2UucGFyZW50ID09IG51bGxcclxuICAgICAgICAgICAgPyBpbnN0YW5jZS52bm9kZS5hcHBDb250ZXh0ICYmIGluc3RhbmNlLnZub2RlLmFwcENvbnRleHQucHJvdmlkZXNcclxuICAgICAgICAgICAgOiBpbnN0YW5jZS5wYXJlbnQucHJvdmlkZXM7XHJcbiAgICAgICAgaWYgKHByb3ZpZGVzICYmIGtleSBpbiBwcm92aWRlcykge1xyXG4gICAgICAgICAgICAvLyBUUyBkb2Vzbid0IGFsbG93IHN5bWJvbCBhcyBpbmRleCB0eXBlXHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJlYXREZWZhdWx0QXNGYWN0b3J5ICYmIGlzRnVuY3Rpb24oZGVmYXVsdFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgPyBkZWZhdWx0VmFsdWUuY2FsbChpbnN0YW5jZS5wcm94eSlcclxuICAgICAgICAgICAgICAgIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgaW5qZWN0aW9uIFwiJHtTdHJpbmcoa2V5KX1cIiBub3QgZm91bmQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgaW5qZWN0KCkgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgc2V0dXAoKSBvciBmdW5jdGlvbmFsIGNvbXBvbmVudHMuYCk7XHJcbiAgICB9XHJcbn1cblxuLy8gU2ltcGxlIGVmZmVjdC5cclxuZnVuY3Rpb24gd2F0Y2hFZmZlY3QoZWZmZWN0LCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIHdhdGNoUG9zdEVmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBmbHVzaDogJ3Bvc3QnIH0pIDogeyBmbHVzaDogJ3Bvc3QnIH0pKTtcclxufVxyXG5mdW5jdGlvbiB3YXRjaFN5bmNFZmZlY3QoZWZmZWN0LCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHsgZmx1c2g6ICdzeW5jJyB9KSA6IHsgZmx1c2g6ICdzeW5jJyB9KSk7XHJcbn1cclxuLy8gaW5pdGlhbCB2YWx1ZSBmb3Igd2F0Y2hlcnMgdG8gdHJpZ2dlciBvbiB1bmRlZmluZWQgaW5pdGlhbCB2YWx1ZXNcclxuY29uc3QgSU5JVElBTF9XQVRDSEVSX1ZBTFVFID0ge307XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIHdhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRnVuY3Rpb24oY2IpKSB7XHJcbiAgICAgICAgd2FybihgXFxgd2F0Y2goZm4sIG9wdGlvbnM/KVxcYCBzaWduYXR1cmUgaGFzIGJlZW4gbW92ZWQgdG8gYSBzZXBhcmF0ZSBBUEkuIGAgK1xyXG4gICAgICAgICAgICBgVXNlIFxcYHdhdGNoRWZmZWN0KGZuLCBvcHRpb25zPylcXGAgaW5zdGVhZC4gXFxgd2F0Y2hcXGAgbm93IG9ubHkgYCArXHJcbiAgICAgICAgICAgIGBzdXBwb3J0cyBcXGB3YXRjaChzb3VyY2UsIGNiLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRvV2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gZG9XYXRjaChzb3VyY2UsIGNiLCB7IGltbWVkaWF0ZSwgZGVlcCwgZmx1c2gsIG9uVHJhY2ssIG9uVHJpZ2dlciB9ID0gRU1QVFlfT0JKKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjYikge1xyXG4gICAgICAgIGlmIChpbW1lZGlhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB3YXJuKGB3YXRjaCgpIFwiaW1tZWRpYXRlXCIgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgdGhlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoKHNvdXJjZSwgY2FsbGJhY2ssIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWVwICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgd2Fybihgd2F0Y2goKSBcImRlZXBcIiBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyB0aGUgYCArXHJcbiAgICAgICAgICAgICAgICBgd2F0Y2goc291cmNlLCBjYWxsYmFjaywgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3YXJuSW52YWxpZFNvdXJjZSA9IChzKSA9PiB7XHJcbiAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBzb3VyY2U6IGAsIHMsIGBBIHdhdGNoIHNvdXJjZSBjYW4gb25seSBiZSBhIGdldHRlci9lZmZlY3QgZnVuY3Rpb24sIGEgcmVmLCBgICtcclxuICAgICAgICAgICAgYGEgcmVhY3RpdmUgb2JqZWN0LCBvciBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcy5gKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgIGxldCBnZXR0ZXI7XHJcbiAgICBsZXQgZm9yY2VUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICBsZXQgaXNNdWx0aVNvdXJjZSA9IGZhbHNlO1xyXG4gICAgaWYgKGlzUmVmKHNvdXJjZSkpIHtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2UudmFsdWU7XHJcbiAgICAgICAgZm9yY2VUcmlnZ2VyID0gaXNTaGFsbG93JDEoc291cmNlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUmVhY3RpdmUoc291cmNlKSkge1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHNvdXJjZTtcclxuICAgICAgICBkZWVwID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgIGlzTXVsdGlTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgIGZvcmNlVHJpZ2dlciA9IHNvdXJjZS5zb21lKHMgPT4gaXNSZWFjdGl2ZShzKSB8fCBpc1NoYWxsb3ckMShzKSk7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlLm1hcChzID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzUmVmKHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcy52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlYWN0aXZlKHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2Uocyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbihzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhzLCBpbnN0YW5jZSwgMiAvKiBFcnJvckNvZGVzLldBVENIX0dFVFRFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkludmFsaWRTb3VyY2Uocyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oc291cmNlKSkge1xyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICAvLyBnZXR0ZXIgd2l0aCBjYlxyXG4gICAgICAgICAgICBnZXR0ZXIgPSAoKSA9PiBjYWxsV2l0aEVycm9ySGFuZGxpbmcoc291cmNlLCBpbnN0YW5jZSwgMiAvKiBFcnJvckNvZGVzLldBVENIX0dFVFRFUiAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBubyBjYiAtPiBzaW1wbGUgZWZmZWN0XHJcbiAgICAgICAgICAgIGdldHRlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5pc1VubW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjbGVhbnVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKHNvdXJjZSwgaW5zdGFuY2UsIDMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqLywgW29uQ2xlYW51cF0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGdldHRlciA9IE5PT1A7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm5JbnZhbGlkU291cmNlKHNvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2IgJiYgZGVlcCkge1xyXG4gICAgICAgIGNvbnN0IGJhc2VHZXR0ZXIgPSBnZXR0ZXI7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gdHJhdmVyc2UoYmFzZUdldHRlcigpKTtcclxuICAgIH1cclxuICAgIGxldCBjbGVhbnVwO1xyXG4gICAgbGV0IG9uQ2xlYW51cCA9IChmbikgPT4ge1xyXG4gICAgICAgIGNsZWFudXAgPSBlZmZlY3Qub25TdG9wID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCA0IC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0xFQU5VUCAqLyk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICAvLyBpbiBTU1IgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXR1cCBhbiBhY3R1YWwgZWZmZWN0LCBhbmQgaXQgc2hvdWxkIGJlIG5vb3BcclxuICAgIC8vIHVubGVzcyBpdCdzIGVhZ2VyXHJcbiAgICBpZiAoaXNJblNTUkNvbXBvbmVudFNldHVwKSB7XHJcbiAgICAgICAgLy8gd2Ugd2lsbCBhbHNvIG5vdCBjYWxsIHRoZSBpbnZhbGlkYXRlIGNhbGxiYWNrICgrIHJ1bm5lciBpcyBub3Qgc2V0IHVwKVxyXG4gICAgICAgIG9uQ2xlYW51cCA9IE5PT1A7XHJcbiAgICAgICAgaWYgKCFjYikge1xyXG4gICAgICAgICAgICBnZXR0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW1tZWRpYXRlKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovLCBbXHJcbiAgICAgICAgICAgICAgICBnZXR0ZXIoKSxcclxuICAgICAgICAgICAgICAgIGlzTXVsdGlTb3VyY2UgPyBbXSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIG9uQ2xlYW51cFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE5PT1A7XHJcbiAgICB9XHJcbiAgICBsZXQgb2xkVmFsdWUgPSBpc011bHRpU291cmNlID8gW10gOiBJTklUSUFMX1dBVENIRVJfVkFMVUU7XHJcbiAgICBjb25zdCBqb2IgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlZmZlY3QuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNiKSB7XHJcbiAgICAgICAgICAgIC8vIHdhdGNoKHNvdXJjZSwgY2IpXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgICAgICBpZiAoZGVlcCB8fFxyXG4gICAgICAgICAgICAgICAgZm9yY2VUcmlnZ2VyIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNNdWx0aVNvdXJjZVxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3VmFsdWUuc29tZSgodiwgaSkgPT4gaGFzQ2hhbmdlZCh2LCBvbGRWYWx1ZVtpXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBoYXNDaGFuZ2VkKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpIHx8XHJcbiAgICAgICAgICAgICAgICAoZmFsc2UgICkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNsZWFudXAgYmVmb3JlIHJ1bm5pbmcgY2IgYWdhaW5cclxuICAgICAgICAgICAgICAgIGlmIChjbGVhbnVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoY2IsIGluc3RhbmNlLCAzIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi8sIFtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIHVuZGVmaW5lZCBhcyB0aGUgb2xkIHZhbHVlIHdoZW4gaXQncyBjaGFuZ2VkIGZvciB0aGUgZmlyc3QgdGltZVxyXG4gICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlID09PSBJTklUSUFMX1dBVENIRVJfVkFMVUUgPyB1bmRlZmluZWQgOiBvbGRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBvbkNsZWFudXBcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gd2F0Y2hFZmZlY3RcclxuICAgICAgICAgICAgZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBpbXBvcnRhbnQ6IG1hcmsgdGhlIGpvYiBhcyBhIHdhdGNoZXIgY2FsbGJhY2sgc28gdGhhdCBzY2hlZHVsZXIga25vd3NcclxuICAgIC8vIGl0IGlzIGFsbG93ZWQgdG8gc2VsZi10cmlnZ2VyICgjMTcyNylcclxuICAgIGpvYi5hbGxvd1JlY3Vyc2UgPSAhIWNiO1xyXG4gICAgbGV0IHNjaGVkdWxlcjtcclxuICAgIGlmIChmbHVzaCA9PT0gJ3N5bmMnKSB7XHJcbiAgICAgICAgc2NoZWR1bGVyID0gam9iOyAvLyB0aGUgc2NoZWR1bGVyIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGRpcmVjdGx5XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmbHVzaCA9PT0gJ3Bvc3QnKSB7XHJcbiAgICAgICAgc2NoZWR1bGVyID0gKCkgPT4gcXVldWVQb3N0UmVuZGVyRWZmZWN0KGpvYiwgaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc3VzcGVuc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gZGVmYXVsdDogJ3ByZSdcclxuICAgICAgICBqb2IucHJlID0gdHJ1ZTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UpXHJcbiAgICAgICAgICAgIGpvYi5pZCA9IGluc3RhbmNlLnVpZDtcclxuICAgICAgICBzY2hlZHVsZXIgPSAoKSA9PiBxdWV1ZUpvYihqb2IpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGdldHRlciwgc2NoZWR1bGVyKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBlZmZlY3Qub25UcmFjayA9IG9uVHJhY2s7XHJcbiAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlciA9IG9uVHJpZ2dlcjtcclxuICAgIH1cclxuICAgIC8vIGluaXRpYWwgcnVuXHJcbiAgICBpZiAoY2IpIHtcclxuICAgICAgICBpZiAoaW1tZWRpYXRlKSB7XHJcbiAgICAgICAgICAgIGpvYigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgb2xkVmFsdWUgPSBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmx1c2ggPT09ICdwb3N0Jykge1xyXG4gICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChlZmZlY3QucnVuLmJpbmQoZWZmZWN0KSwgaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc3VzcGVuc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZWZmZWN0LnJ1bigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBlZmZlY3Quc3RvcCgpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5zY29wZSkge1xyXG4gICAgICAgICAgICByZW1vdmUoaW5zdGFuY2Uuc2NvcGUuZWZmZWN0cywgZWZmZWN0KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbi8vIHRoaXMuJHdhdGNoXHJcbmZ1bmN0aW9uIGluc3RhbmNlV2F0Y2goc291cmNlLCB2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgcHVibGljVGhpcyA9IHRoaXMucHJveHk7XHJcbiAgICBjb25zdCBnZXR0ZXIgPSBpc1N0cmluZyhzb3VyY2UpXHJcbiAgICAgICAgPyBzb3VyY2UuaW5jbHVkZXMoJy4nKVxyXG4gICAgICAgICAgICA/IGNyZWF0ZVBhdGhHZXR0ZXIocHVibGljVGhpcywgc291cmNlKVxyXG4gICAgICAgICAgICA6ICgpID0+IHB1YmxpY1RoaXNbc291cmNlXVxyXG4gICAgICAgIDogc291cmNlLmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcyk7XHJcbiAgICBsZXQgY2I7XHJcbiAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICBjYiA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2IgPSB2YWx1ZS5oYW5kbGVyO1xyXG4gICAgICAgIG9wdGlvbnMgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1ciA9IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgIHNldEN1cnJlbnRJbnN0YW5jZSh0aGlzKTtcclxuICAgIGNvbnN0IHJlcyA9IGRvV2F0Y2goZ2V0dGVyLCBjYi5iaW5kKHB1YmxpY1RoaXMpLCBvcHRpb25zKTtcclxuICAgIGlmIChjdXIpIHtcclxuICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoY3VyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhdGhHZXR0ZXIoY3R4LCBwYXRoKSB7XHJcbiAgICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGN1ciA9IGN0eDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aCAmJiBjdXI7IGkrKykge1xyXG4gICAgICAgICAgICBjdXIgPSBjdXJbc2VnbWVudHNbaV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3VyO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZSh2YWx1ZSwgc2Vlbikge1xyXG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgdmFsdWVbXCJfX3Zfc2tpcFwiIC8qIFJlYWN0aXZlRmxhZ3MuU0tJUCAqL10pIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZWVuID0gc2VlbiB8fCBuZXcgU2V0KCk7XHJcbiAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2Vlbi5hZGQodmFsdWUpO1xyXG4gICAgaWYgKGlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgIHRyYXZlcnNlKHZhbHVlLnZhbHVlLCBzZWVuKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZVtpXSwgc2Vlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTZXQodmFsdWUpIHx8IGlzTWFwKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICAgICAgdHJhdmVyc2Uodiwgc2Vlbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHZhbHVlW2tleV0sIHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxuXG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzdGF0ZSA9IHtcclxuICAgICAgICBpc01vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzTGVhdmluZzogZmFsc2UsXHJcbiAgICAgICAgaXNVbm1vdW50aW5nOiBmYWxzZSxcclxuICAgICAgICBsZWF2aW5nVk5vZGVzOiBuZXcgTWFwKClcclxuICAgIH07XHJcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIHN0YXRlLmlzTW91bnRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICAgICAgc3RhdGUuaXNVbm1vdW50aW5nID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG59XHJcbmNvbnN0IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yID0gW0Z1bmN0aW9uLCBBcnJheV07XHJcbmNvbnN0IEJhc2VUcmFuc2l0aW9uSW1wbCA9IHtcclxuICAgIG5hbWU6IGBCYXNlVHJhbnNpdGlvbmAsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIG1vZGU6IFN0cmluZyxcclxuICAgICAgICBhcHBlYXI6IEJvb2xlYW4sXHJcbiAgICAgICAgcGVyc2lzdGVkOiBCb29sZWFuLFxyXG4gICAgICAgIC8vIGVudGVyXHJcbiAgICAgICAgb25CZWZvcmVFbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25FbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkVudGVyQ2FuY2VsbGVkOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICAvLyBsZWF2ZVxyXG4gICAgICAgIG9uQmVmb3JlTGVhdmU6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uTGVhdmU6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJMZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25MZWF2ZUNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgLy8gYXBwZWFyXHJcbiAgICAgICAgb25CZWZvcmVBcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQXBwZWFyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyQXBwZWFyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFwcGVhckNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3JcclxuICAgIH0sXHJcbiAgICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IHVzZVRyYW5zaXRpb25TdGF0ZSgpO1xyXG4gICAgICAgIGxldCBwcmV2VHJhbnNpdGlvbktleTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgJiYgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKHNsb3RzLmRlZmF1bHQoKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc0ZvdW5kID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWNvbW1lbnQgY2hpbGRcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBoYXNGb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FybiBtb3JlIHRoYW4gb25lIG5vbi1jb21tZW50IGNoaWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCc8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50IG9yIGNvbXBvbmVudC4gJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZSA8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3RzLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNGb3VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cmFjayByZWFjdGl2aXR5IGZvciB0aGVzZSBwcm9wcyBzbyB1c2UgdGhlIHJhd1xyXG4gICAgICAgICAgICAvLyBwcm9wcyBmb3IgYSBiaXQgYmV0dGVyIHBlcmZcclxuICAgICAgICAgICAgY29uc3QgcmF3UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbW9kZSB9ID0gcmF3UHJvcHM7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIG1vZGVcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAhPT0gJ2luLW91dCcgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdvdXQtaW4nICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICE9PSAnZGVmYXVsdCcpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYGludmFsaWQgPHRyYW5zaXRpb24+IG1vZGU6ICR7bW9kZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNMZWF2aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgPHRyYW5zaXRpb24+PGtlZXAtYWxpdmUvPjwvdHJhbnNpdGlvbj4sIHdlIG5lZWQgdG9cclxuICAgICAgICAgICAgLy8gY29tcGFyZSB0aGUgdHlwZSBvZiB0aGUga2VwdC1hbGl2ZSBjaGlsZHJlbi5cclxuICAgICAgICAgICAgY29uc3QgaW5uZXJDaGlsZCA9IGdldEtlZXBBbGl2ZUNoaWxkKGNoaWxkKTtcclxuICAgICAgICAgICAgaWYgKCFpbm5lckNoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZW50ZXJIb29rcyA9IHJlc29sdmVUcmFuc2l0aW9uSG9va3MoaW5uZXJDaGlsZCwgcmF3UHJvcHMsIHN0YXRlLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhpbm5lckNoaWxkLCBlbnRlckhvb2tzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2xkQ2hpbGQgPSBpbnN0YW5jZS5zdWJUcmVlO1xyXG4gICAgICAgICAgICBjb25zdCBvbGRJbm5lckNoaWxkID0gb2xkQ2hpbGQgJiYgZ2V0S2VlcEFsaXZlQ2hpbGQob2xkQ2hpbGQpO1xyXG4gICAgICAgICAgICBsZXQgdHJhbnNpdGlvbktleUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgeyBnZXRUcmFuc2l0aW9uS2V5IH0gPSBpbm5lckNoaWxkLnR5cGU7XHJcbiAgICAgICAgICAgIGlmIChnZXRUcmFuc2l0aW9uS2V5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRUcmFuc2l0aW9uS2V5KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldlRyYW5zaXRpb25LZXkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZUcmFuc2l0aW9uS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ICE9PSBwcmV2VHJhbnNpdGlvbktleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZUcmFuc2l0aW9uS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25LZXlDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgbW9kZVxyXG4gICAgICAgICAgICBpZiAob2xkSW5uZXJDaGlsZCAmJlxyXG4gICAgICAgICAgICAgICAgb2xkSW5uZXJDaGlsZC50eXBlICE9PSBDb21tZW50ICYmXHJcbiAgICAgICAgICAgICAgICAoIWlzU2FtZVZOb2RlVHlwZShpbm5lckNoaWxkLCBvbGRJbm5lckNoaWxkKSB8fCB0cmFuc2l0aW9uS2V5Q2hhbmdlZCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlYXZpbmdIb29rcyA9IHJlc29sdmVUcmFuc2l0aW9uSG9va3Mob2xkSW5uZXJDaGlsZCwgcmF3UHJvcHMsIHN0YXRlLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgb2xkIHRyZWUncyBob29rcyBpbiBjYXNlIG9mIGR5bmFtaWMgdHJhbnNpdGlvblxyXG4gICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKG9sZElubmVyQ2hpbGQsIGxlYXZpbmdIb29rcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQgdmlld3NcclxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnb3V0LWluJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzTGVhdmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGVhdmluZ0hvb2tzLmFmdGVyTGVhdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzTGVhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS51cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnICYmIGlubmVyQ2hpbGQudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZpbmdIb29rcy5kZWxheUxlYXZlID0gKGVsLCBlYXJseVJlbW92ZSwgZGVsYXllZExlYXZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlYXZpbmdWTm9kZXNDYWNoZSA9IGdldExlYXZpbmdOb2Rlc0ZvclR5cGUoc3RhdGUsIG9sZElubmVyQ2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVbU3RyaW5nKG9sZElubmVyQ2hpbGQua2V5KV0gPSBvbGRJbm5lckNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlYXJseSByZW1vdmFsIGNhbGxiYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLl9sZWF2ZUNiID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFybHlSZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl9sZWF2ZUNiID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVudGVySG9va3MuZGVsYXllZExlYXZlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRlckhvb2tzLmRlbGF5ZWRMZWF2ZSA9IGRlbGF5ZWRMZWF2ZTtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG4vLyBleHBvcnQgdGhlIHB1YmxpYyB0eXBlIGZvciBoL3RzeCBpbmZlcmVuY2VcclxuLy8gYWxzbyB0byBhdm9pZCBpbmxpbmUgaW1wb3J0KCkgaW4gZ2VuZXJhdGVkIGQudHMgZmlsZXNcclxuY29uc3QgQmFzZVRyYW5zaXRpb24gPSBCYXNlVHJhbnNpdGlvbkltcGw7XHJcbmZ1bmN0aW9uIGdldExlYXZpbmdOb2Rlc0ZvclR5cGUoc3RhdGUsIHZub2RlKSB7XHJcbiAgICBjb25zdCB7IGxlYXZpbmdWTm9kZXMgfSA9IHN0YXRlO1xyXG4gICAgbGV0IGxlYXZpbmdWTm9kZXNDYWNoZSA9IGxlYXZpbmdWTm9kZXMuZ2V0KHZub2RlLnR5cGUpO1xyXG4gICAgaWYgKCFsZWF2aW5nVk5vZGVzQ2FjaGUpIHtcclxuICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgIGxlYXZpbmdWTm9kZXMuc2V0KHZub2RlLnR5cGUsIGxlYXZpbmdWTm9kZXNDYWNoZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGVhdmluZ1ZOb2Rlc0NhY2hlO1xyXG59XHJcbi8vIFRoZSB0cmFuc2l0aW9uIGhvb2tzIGFyZSBhdHRhY2hlZCB0byB0aGUgdm5vZGUgYXMgdm5vZGUudHJhbnNpdGlvblxyXG4vLyBhbmQgd2lsbCBiZSBjYWxsZWQgYXQgYXBwcm9wcmlhdGUgdGltaW5nIGluIHRoZSByZW5kZXJlci5cclxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh2bm9kZSwgcHJvcHMsIHN0YXRlLCBpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgeyBhcHBlYXIsIG1vZGUsIHBlcnNpc3RlZCA9IGZhbHNlLCBvbkJlZm9yZUVudGVyLCBvbkVudGVyLCBvbkFmdGVyRW50ZXIsIG9uRW50ZXJDYW5jZWxsZWQsIG9uQmVmb3JlTGVhdmUsIG9uTGVhdmUsIG9uQWZ0ZXJMZWF2ZSwgb25MZWF2ZUNhbmNlbGxlZCwgb25CZWZvcmVBcHBlYXIsIG9uQXBwZWFyLCBvbkFmdGVyQXBwZWFyLCBvbkFwcGVhckNhbmNlbGxlZCB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCBrZXkgPSBTdHJpbmcodm5vZGUua2V5KTtcclxuICAgIGNvbnN0IGxlYXZpbmdWTm9kZXNDYWNoZSA9IGdldExlYXZpbmdOb2Rlc0ZvclR5cGUoc3RhdGUsIHZub2RlKTtcclxuICAgIGNvbnN0IGNhbGxIb29rID0gKGhvb2ssIGFyZ3MpID0+IHtcclxuICAgICAgICBob29rICYmXHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIGluc3RhbmNlLCA5IC8qIEVycm9yQ29kZXMuVFJBTlNJVElPTl9IT09LICovLCBhcmdzKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjYWxsQXN5bmNIb29rID0gKGhvb2ssIGFyZ3MpID0+IHtcclxuICAgICAgICBjb25zdCBkb25lID0gYXJnc1sxXTtcclxuICAgICAgICBjYWxsSG9vayhob29rLCBhcmdzKTtcclxuICAgICAgICBpZiAoaXNBcnJheShob29rKSkge1xyXG4gICAgICAgICAgICBpZiAoaG9vay5ldmVyeShob29rID0+IGhvb2subGVuZ3RoIDw9IDEpKVxyXG4gICAgICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChob29rLmxlbmd0aCA8PSAxKSB7XHJcbiAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaG9va3MgPSB7XHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgICBwZXJzaXN0ZWQsXHJcbiAgICAgICAgYmVmb3JlRW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgbGV0IGhvb2sgPSBvbkJlZm9yZUVudGVyO1xyXG4gICAgICAgICAgICBpZiAoIXN0YXRlLmlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFwcGVhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvb2sgPSBvbkJlZm9yZUFwcGVhciB8fCBvbkJlZm9yZUVudGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGZvciBzYW1lIGVsZW1lbnQgKHYtc2hvdylcclxuICAgICAgICAgICAgaWYgKGVsLl9sZWF2ZUNiKSB7XHJcbiAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYih0cnVlIC8qIGNhbmNlbGxlZCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZm9yIHRvZ2dsZWQgZWxlbWVudCB3aXRoIHNhbWUga2V5ICh2LWlmKVxyXG4gICAgICAgICAgICBjb25zdCBsZWF2aW5nVk5vZGUgPSBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgaWYgKGxlYXZpbmdWTm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgaXNTYW1lVk5vZGVUeXBlKHZub2RlLCBsZWF2aW5nVk5vZGUpICYmXHJcbiAgICAgICAgICAgICAgICBsZWF2aW5nVk5vZGUuZWwuX2xlYXZlQ2IpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIGVhcmx5IHJlbW92YWwgKG5vdCBjYW5jZWxsZWQpXHJcbiAgICAgICAgICAgICAgICBsZWF2aW5nVk5vZGUuZWwuX2xlYXZlQ2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxsSG9vayhob29rLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudGVyKGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBob29rID0gb25FbnRlcjtcclxuICAgICAgICAgICAgbGV0IGFmdGVySG9vayA9IG9uQWZ0ZXJFbnRlcjtcclxuICAgICAgICAgICAgbGV0IGNhbmNlbEhvb2sgPSBvbkVudGVyQ2FuY2VsbGVkO1xyXG4gICAgICAgICAgICBpZiAoIXN0YXRlLmlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFwcGVhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvb2sgPSBvbkFwcGVhciB8fCBvbkVudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGFmdGVySG9vayA9IG9uQWZ0ZXJBcHBlYXIgfHwgb25BZnRlckVudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbEhvb2sgPSBvbkFwcGVhckNhbmNlbGxlZCB8fCBvbkVudGVyQ2FuY2VsbGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgZG9uZSA9IChlbC5fZW50ZXJDYiA9IChjYW5jZWxsZWQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjYWxsZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhjYW5jZWxIb29rLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKGFmdGVySG9vaywgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaG9va3MuZGVsYXllZExlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9va3MuZGVsYXllZExlYXZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5fZW50ZXJDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChob29rKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsQXN5bmNIb29rKGhvb2ssIFtlbCwgZG9uZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsZWF2ZShlbCwgcmVtb3ZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyh2bm9kZS5rZXkpO1xyXG4gICAgICAgICAgICBpZiAoZWwuX2VudGVyQ2IpIHtcclxuICAgICAgICAgICAgICAgIGVsLl9lbnRlckNiKHRydWUgLyogY2FuY2VsbGVkICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNVbm1vdW50aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVMZWF2ZSwgW2VsXSk7XHJcbiAgICAgICAgICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgZG9uZSA9IChlbC5fbGVhdmVDYiA9IChjYW5jZWxsZWQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjYWxsZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmVDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2sob25BZnRlckxlYXZlLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsLl9sZWF2ZUNiID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldID09PSB2bm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldID0gdm5vZGU7XHJcbiAgICAgICAgICAgIGlmIChvbkxlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsQXN5bmNIb29rKG9uTGVhdmUsIFtlbCwgZG9uZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9uZSh2bm9kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh2bm9kZSwgcHJvcHMsIHN0YXRlLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBob29rcztcclxufVxyXG4vLyB0aGUgcGxhY2Vob2xkZXIgcmVhbGx5IG9ubHkgaGFuZGxlcyBvbmUgc3BlY2lhbCBjYXNlOiBLZWVwQWxpdmVcclxuLy8gaW4gdGhlIGNhc2Ugb2YgYSBLZWVwQWxpdmUgaW4gYSBsZWF2ZSBwaGFzZSB3ZSBuZWVkIHRvIHJldHVybiBhIEtlZXBBbGl2ZVxyXG4vLyBwbGFjZWhvbGRlciB3aXRoIGVtcHR5IGNvbnRlbnQgdG8gYXZvaWQgdGhlIEtlZXBBbGl2ZSBpbnN0YW5jZSBmcm9tIGJlaW5nXHJcbi8vIHVubW91bnRlZC5cclxuZnVuY3Rpb24gZW1wdHlQbGFjZWhvbGRlcih2bm9kZSkge1xyXG4gICAgaWYgKGlzS2VlcEFsaXZlKHZub2RlKSkge1xyXG4gICAgICAgIHZub2RlID0gY2xvbmVWTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB2bm9kZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRLZWVwQWxpdmVDaGlsZCh2bm9kZSkge1xyXG4gICAgcmV0dXJuIGlzS2VlcEFsaXZlKHZub2RlKVxyXG4gICAgICAgID8gdm5vZGUuY2hpbGRyZW5cclxuICAgICAgICAgICAgPyB2bm9kZS5jaGlsZHJlblswXVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgIDogdm5vZGU7XHJcbn1cclxuZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCBob29rcykge1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gJiYgdm5vZGUuY29tcG9uZW50KSB7XHJcbiAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlLCBob29rcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgIHZub2RlLnNzQ29udGVudC50cmFuc2l0aW9uID0gaG9va3MuY2xvbmUodm5vZGUuc3NDb250ZW50KTtcclxuICAgICAgICB2bm9kZS5zc0ZhbGxiYWNrLnRyYW5zaXRpb24gPSBob29rcy5jbG9uZSh2bm9kZS5zc0ZhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZub2RlLnRyYW5zaXRpb24gPSBob29rcztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oY2hpbGRyZW4sIGtlZXBDb21tZW50ID0gZmFsc2UsIHBhcmVudEtleSkge1xyXG4gICAgbGV0IHJldCA9IFtdO1xyXG4gICAgbGV0IGtleWVkRnJhZ21lbnRDb3VudCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgLy8gIzUzNjAgaW5oZXJpdCBwYXJlbnQga2V5IGluIGNhc2Ugb2YgPHRlbXBsYXRlIHYtZm9yPlxyXG4gICAgICAgIGNvbnN0IGtleSA9IHBhcmVudEtleSA9PSBudWxsXHJcbiAgICAgICAgICAgID8gY2hpbGQua2V5XHJcbiAgICAgICAgICAgIDogU3RyaW5nKHBhcmVudEtleSkgKyBTdHJpbmcoY2hpbGQua2V5ICE9IG51bGwgPyBjaGlsZC5rZXkgOiBpKTtcclxuICAgICAgICAvLyBoYW5kbGUgZnJhZ21lbnQgY2hpbGRyZW4gY2FzZSwgZS5nLiB2LWZvclxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSBGcmFnbWVudCkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQucGF0Y2hGbGFnICYgMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi8pXHJcbiAgICAgICAgICAgICAgICBrZXllZEZyYWdtZW50Q291bnQrKztcclxuICAgICAgICAgICAgcmV0ID0gcmV0LmNvbmNhdChnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oY2hpbGQuY2hpbGRyZW4sIGtlZXBDb21tZW50LCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29tbWVudCBwbGFjZWhvbGRlcnMgc2hvdWxkIGJlIHNraXBwZWQsIGUuZy4gdi1pZlxyXG4gICAgICAgIGVsc2UgaWYgKGtlZXBDb21tZW50IHx8IGNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0LnB1c2goa2V5ICE9IG51bGwgPyBjbG9uZVZOb2RlKGNoaWxkLCB7IGtleSB9KSA6IGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAjMTEyNiBpZiBhIHRyYW5zaXRpb24gY2hpbGRyZW4gbGlzdCBjb250YWlucyBtdWx0aXBsZSBzdWIgZnJhZ21lbnRzLCB0aGVzZVxyXG4gICAgLy8gZnJhZ21lbnRzIHdpbGwgYmUgbWVyZ2VkIGludG8gYSBmbGF0IGNoaWxkcmVuIGFycmF5LiBTaW5jZSBlYWNoIHYtZm9yXHJcbiAgICAvLyBmcmFnbWVudCBtYXkgY29udGFpbiBkaWZmZXJlbnQgc3RhdGljIGJpbmRpbmdzIGluc2lkZSwgd2UgbmVlZCB0byBkZS1vcFxyXG4gICAgLy8gdGhlc2UgY2hpbGRyZW4gdG8gZm9yY2UgZnVsbCBkaWZmcyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvci5cclxuICAgIGlmIChrZXllZEZyYWdtZW50Q291bnQgPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmV0W2ldLnBhdGNoRmxhZyA9IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8vIGltcGxlbWVudGF0aW9uLCBjbG9zZSB0byBuby1vcFxyXG5mdW5jdGlvbiBkZWZpbmVDb21wb25lbnQob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob3B0aW9ucykgPyB7IHNldHVwOiBvcHRpb25zLCBuYW1lOiBvcHRpb25zLm5hbWUgfSA6IG9wdGlvbnM7XHJcbn1cblxuY29uc3QgaXNBc3luY1dyYXBwZXIgPSAoaSkgPT4gISFpLnR5cGUuX19hc3luY0xvYWRlcjtcclxuZnVuY3Rpb24gZGVmaW5lQXN5bmNDb21wb25lbnQoc291cmNlKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihzb3VyY2UpKSB7XHJcbiAgICAgICAgc291cmNlID0geyBsb2FkZXI6IHNvdXJjZSB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBsb2FkZXIsIGxvYWRpbmdDb21wb25lbnQsIGVycm9yQ29tcG9uZW50LCBkZWxheSA9IDIwMCwgdGltZW91dCwgLy8gdW5kZWZpbmVkID0gbmV2ZXIgdGltZXMgb3V0XHJcbiAgICBzdXNwZW5zaWJsZSA9IHRydWUsIG9uRXJyb3I6IHVzZXJPbkVycm9yIH0gPSBzb3VyY2U7XHJcbiAgICBsZXQgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgbGV0IHJlc29sdmVkQ29tcDtcclxuICAgIGxldCByZXRyaWVzID0gMDtcclxuICAgIGNvbnN0IHJldHJ5ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHJpZXMrKztcclxuICAgICAgICBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGxvYWQoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBsb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCB0aGlzUmVxdWVzdDtcclxuICAgICAgICByZXR1cm4gKHBlbmRpbmdSZXF1ZXN0IHx8XHJcbiAgICAgICAgICAgICh0aGlzUmVxdWVzdCA9IHBlbmRpbmdSZXF1ZXN0ID1cclxuICAgICAgICAgICAgICAgIGxvYWRlcigpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyT25FcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJldHJ5ID0gKCkgPT4gcmVzb2x2ZShyZXRyeSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJGYWlsID0gKCkgPT4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyT25FcnJvcihlcnIsIHVzZXJSZXRyeSwgdXNlckZhaWwsIHJldHJpZXMgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoY29tcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzUmVxdWVzdCAhPT0gcGVuZGluZ1JlcXVlc3QgJiYgcGVuZGluZ1JlcXVlc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmdSZXF1ZXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEFzeW5jIGNvbXBvbmVudCBsb2FkZXIgcmVzb2x2ZWQgdG8gdW5kZWZpbmVkLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB5b3UgYXJlIHVzaW5nIHJldHJ5KCksIG1ha2Ugc3VyZSB0byByZXR1cm4gaXRzIHJldHVybiB2YWx1ZS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJvcCBtb2R1bGUgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb21wLl9fZXNNb2R1bGUgfHwgY29tcFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcCA9IGNvbXAuZGVmYXVsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb21wICYmICFpc09iamVjdChjb21wKSAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXN5bmMgY29tcG9uZW50IGxvYWQgcmVzdWx0OiAke2NvbXB9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ29tcCA9IGNvbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7XHJcbiAgICAgICAgICAgICAgICB9KSkpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBkZWZpbmVDb21wb25lbnQoe1xyXG4gICAgICAgIG5hbWU6ICdBc3luY0NvbXBvbmVudFdyYXBwZXInLFxyXG4gICAgICAgIF9fYXN5bmNMb2FkZXI6IGxvYWQsXHJcbiAgICAgICAgZ2V0IF9fYXN5bmNSZXNvbHZlZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQ29tcDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldHVwKCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgICAgICAgICAgLy8gYWxyZWFkeSByZXNvbHZlZFxyXG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRDb21wKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKHJlc29sdmVkQ29tcCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAxMyAvKiBFcnJvckNvZGVzLkFTWU5DX0NPTVBPTkVOVF9MT0FERVIgKi8sICFlcnJvckNvbXBvbmVudCAvKiBkbyBub3QgdGhyb3cgaW4gZGV2IGlmIHVzZXIgcHJvdmlkZWQgZXJyb3IgY29tcG9uZW50ICovKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLy8gc3VzcGVuc2UtY29udHJvbGxlZCBvciBTU1IuXHJcbiAgICAgICAgICAgIGlmICgoc3VzcGVuc2libGUgJiYgaW5zdGFuY2Uuc3VzcGVuc2UpIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNJblNTUkNvbXBvbmVudFNldHVwKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWQoKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGNvbXAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBjcmVhdGVJbm5lckNvbXAoY29tcCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGVycm9yQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY3JlYXRlVk5vZGUoZXJyb3JDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbG9hZGVkID0gcmVmKGZhbHNlKTtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSByZWYoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVsYXllZCA9IHJlZighIWRlbGF5KTtcclxuICAgICAgICAgICAgaWYgKGRlbGF5KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9LCBkZWxheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2FkZWQudmFsdWUgJiYgIWVycm9yLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgQXN5bmMgY29tcG9uZW50IHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXR9bXMuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbG9hZCgpXHJcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsb2FkZWQudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLnBhcmVudCAmJiBpc0tlZXBBbGl2ZShpbnN0YW5jZS5wYXJlbnQudm5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFyZW50IGlzIGtlZXAtYWxpdmUsIGZvcmNlIHVwZGF0ZSBzbyB0aGUgbG9hZGVkIGNvbXBvbmVudCdzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBpcyB0YWtlbiBpbnRvIGFjY291bnRcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZUpvYihpbnN0YW5jZS5wYXJlbnQudXBkYXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSBlcnI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvYWRlZC52YWx1ZSAmJiByZXNvbHZlZENvbXApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW5uZXJDb21wKHJlc29sdmVkQ29tcCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZXJyb3IudmFsdWUgJiYgZXJyb3JDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoZXJyb3JDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsb2FkaW5nQ29tcG9uZW50ICYmICFkZWxheWVkLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKGxvYWRpbmdDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUlubmVyQ29tcChjb21wLCB7IHZub2RlOiB7IHJlZiwgcHJvcHMsIGNoaWxkcmVuLCBzaGFwZUZsYWcgfSwgcGFyZW50IH0pIHtcclxuICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUoY29tcCwgcHJvcHMsIGNoaWxkcmVuKTtcclxuICAgIC8vIGVuc3VyZSBpbm5lciBjb21wb25lbnQgaW5oZXJpdHMgdGhlIGFzeW5jIHdyYXBwZXIncyByZWYgb3duZXJcclxuICAgIHZub2RlLnJlZiA9IHJlZjtcclxuICAgIHJldHVybiB2bm9kZTtcclxufVxuXG5jb25zdCBpc0tlZXBBbGl2ZSA9ICh2bm9kZSkgPT4gdm5vZGUudHlwZS5fX2lzS2VlcEFsaXZlO1xyXG5jb25zdCBLZWVwQWxpdmVJbXBsID0ge1xyXG4gICAgbmFtZTogYEtlZXBBbGl2ZWAsXHJcbiAgICAvLyBNYXJrZXIgZm9yIHNwZWNpYWwgaGFuZGxpbmcgaW5zaWRlIHRoZSByZW5kZXJlci4gV2UgYXJlIG5vdCB1c2luZyBhID09PVxyXG4gICAgLy8gY2hlY2sgZGlyZWN0bHkgb24gS2VlcEFsaXZlIGluIHRoZSByZW5kZXJlciwgYmVjYXVzZSBpbXBvcnRpbmcgaXQgZGlyZWN0bHlcclxuICAgIC8vIHdvdWxkIHByZXZlbnQgaXQgZnJvbSBiZWluZyB0cmVlLXNoYWtlbi5cclxuICAgIF9faXNLZWVwQWxpdmU6IHRydWUsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGluY2x1ZGU6IFtTdHJpbmcsIFJlZ0V4cCwgQXJyYXldLFxyXG4gICAgICAgIGV4Y2x1ZGU6IFtTdHJpbmcsIFJlZ0V4cCwgQXJyYXldLFxyXG4gICAgICAgIG1heDogW1N0cmluZywgTnVtYmVyXVxyXG4gICAgfSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIC8vIEtlZXBBbGl2ZSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgaW5zdGFudGlhdGVkIHJlbmRlcmVyIHZpYSB0aGVcclxuICAgICAgICAvLyBjdHggd2hlcmUgdGhlIHJlbmRlcmVyIHBhc3NlcyBpbiBpdHMgaW50ZXJuYWxzLFxyXG4gICAgICAgIC8vIGFuZCB0aGUgS2VlcEFsaXZlIGluc3RhbmNlIGV4cG9zZXMgYWN0aXZhdGUvZGVhY3RpdmF0ZSBpbXBsZW1lbnRhdGlvbnMuXHJcbiAgICAgICAgLy8gVGhlIHdob2xlIHBvaW50IG9mIHRoaXMgaXMgdG8gYXZvaWQgaW1wb3J0aW5nIEtlZXBBbGl2ZSBkaXJlY3RseSBpbiB0aGVcclxuICAgICAgICAvLyByZW5kZXJlciB0byBmYWNpbGl0YXRlIHRyZWUtc2hha2luZy5cclxuICAgICAgICBjb25zdCBzaGFyZWRDb250ZXh0ID0gaW5zdGFuY2UuY3R4O1xyXG4gICAgICAgIC8vIGlmIHRoZSBpbnRlcm5hbCByZW5kZXJlciBpcyBub3QgcmVnaXN0ZXJlZCwgaXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcsXHJcbiAgICAgICAgLy8gZm9yIEtlZXBBbGl2ZSwgd2UganVzdCBuZWVkIHRvIHJlbmRlciBpdHMgY2hpbGRyZW5cclxuICAgICAgICBpZiAoIXNoYXJlZENvbnRleHQucmVuZGVyZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCAmJiBzbG90cy5kZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID09PSAxID8gY2hpbGRyZW5bMF0gOiBjaGlsZHJlbjtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuX192X2NhY2hlID0gY2FjaGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhcmVudFN1c3BlbnNlID0gaW5zdGFuY2Uuc3VzcGVuc2U7XHJcbiAgICAgICAgY29uc3QgeyByZW5kZXJlcjogeyBwOiBwYXRjaCwgbTogbW92ZSwgdW06IF91bm1vdW50LCBvOiB7IGNyZWF0ZUVsZW1lbnQgfSB9IH0gPSBzaGFyZWRDb250ZXh0O1xyXG4gICAgICAgIGNvbnN0IHN0b3JhZ2VDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBzaGFyZWRDb250ZXh0LmFjdGl2YXRlID0gKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIDAgLyogTW92ZVR5cGUuRU5URVIgKi8sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgLy8gaW4gY2FzZSBwcm9wcyBoYXZlIGNoYW5nZWRcclxuICAgICAgICAgICAgcGF0Y2goaW5zdGFuY2Uudm5vZGUsIHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgdm5vZGUuc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaXNEZWFjdGl2YXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5hKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlSG9vayA9IHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLm9uVm5vZGVNb3VudGVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZub2RlSG9vaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIGluc3RhbmNlLnBhcmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50cyB0cmVlXHJcbiAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2hhcmVkQ29udGV4dC5kZWFjdGl2YXRlID0gKHZub2RlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICBtb3ZlKHZub2RlLCBzdG9yYWdlQ29udGFpbmVyLCBudWxsLCAxIC8qIE1vdmVUeXBlLkxFQVZFICovLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuZGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5kYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2bm9kZUhvb2sgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlVW5tb3VudGVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZub2RlSG9vaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIGluc3RhbmNlLnBhcmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaXNEZWFjdGl2YXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnRzIHRyZWVcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50QWRkZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmdW5jdGlvbiB1bm1vdW50KHZub2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBzaGFwZUZsYWcgc28gaXQgY2FuIGJlIHByb3Blcmx5IHVubW91bnRlZFxyXG4gICAgICAgICAgICByZXNldFNoYXBlRmxhZyh2bm9kZSk7XHJcbiAgICAgICAgICAgIF91bm1vdW50KHZub2RlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiBwcnVuZUNhY2hlKGZpbHRlcikge1xyXG4gICAgICAgICAgICBjYWNoZS5mb3JFYWNoKCh2bm9kZSwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZSh2bm9kZS50eXBlKTtcclxuICAgICAgICAgICAgICAgIGlmIChuYW1lICYmICghZmlsdGVyIHx8ICFmaWx0ZXIobmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkoa2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChrZXkpO1xyXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQgfHwgY2FjaGVkLnR5cGUgIT09IGN1cnJlbnQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjYWNoZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgYWN0aXZlIGluc3RhbmNlIHNob3VsZCBubyBsb25nZXIgYmUga2VwdC1hbGl2ZS5cclxuICAgICAgICAgICAgICAgIC8vIHdlIGNhbid0IHVubW91bnQgaXQgbm93IGJ1dCBpdCBtaWdodCBiZSBsYXRlciwgc28gcmVzZXQgaXRzIGZsYWcgbm93LlxyXG4gICAgICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcoY3VycmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FjaGUuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgICAgIGtleXMuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBydW5lIGNhY2hlIG9uIGluY2x1ZGUvZXhjbHVkZSBwcm9wIGNoYW5nZVxyXG4gICAgICAgIHdhdGNoKCgpID0+IFtwcm9wcy5pbmNsdWRlLCBwcm9wcy5leGNsdWRlXSwgKFtpbmNsdWRlLCBleGNsdWRlXSkgPT4ge1xyXG4gICAgICAgICAgICBpbmNsdWRlICYmIHBydW5lQ2FjaGUobmFtZSA9PiBtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKTtcclxuICAgICAgICAgICAgZXhjbHVkZSAmJiBwcnVuZUNhY2hlKG5hbWUgPT4gIW1hdGNoZXMoZXhjbHVkZSwgbmFtZSkpO1xyXG4gICAgICAgIH0sIFxyXG4gICAgICAgIC8vIHBydW5lIHBvc3QtcmVuZGVyIGFmdGVyIGBjdXJyZW50YCBoYXMgYmVlbiB1cGRhdGVkXHJcbiAgICAgICAgeyBmbHVzaDogJ3Bvc3QnLCBkZWVwOiB0cnVlIH0pO1xyXG4gICAgICAgIC8vIGNhY2hlIHN1YiB0cmVlIGFmdGVyIHJlbmRlclxyXG4gICAgICAgIGxldCBwZW5kaW5nQ2FjaGVLZXkgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGNhY2hlU3VidHJlZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gZml4ICMxNjIxLCB0aGUgcGVuZGluZ0NhY2hlS2V5IGNvdWxkIGJlIDBcclxuICAgICAgICAgICAgaWYgKHBlbmRpbmdDYWNoZUtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQocGVuZGluZ0NhY2hlS2V5LCBnZXRJbm5lckNoaWxkKGluc3RhbmNlLnN1YlRyZWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgb25Nb3VudGVkKGNhY2hlU3VidHJlZSk7XHJcbiAgICAgICAgb25VcGRhdGVkKGNhY2hlU3VidHJlZSk7XHJcbiAgICAgICAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcclxuICAgICAgICAgICAgY2FjaGUuZm9yRWFjaChjYWNoZWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdWJUcmVlLCBzdXNwZW5zZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2bm9kZSA9IGdldElubmVyQ2hpbGQoc3ViVHJlZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVkLnR5cGUgPT09IHZub2RlLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGluc3RhbmNlIHdpbGwgYmUgdW5tb3VudGVkIGFzIHBhcnQgb2Yga2VlcC1hbGl2ZSdzIHVubW91bnRcclxuICAgICAgICAgICAgICAgICAgICByZXNldFNoYXBlRmxhZyh2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGludm9rZSBpdHMgZGVhY3RpdmF0ZWQgaG9vayBoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGEgPSB2bm9kZS5jb21wb25lbnQuZGE7XHJcbiAgICAgICAgICAgICAgICAgICAgZGEgJiYgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGRhLCBzdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjYWNoZWQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBwZW5kaW5nQ2FjaGVLZXkgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoIXNsb3RzLmRlZmF1bHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBjb25zdCByYXdWTm9kZSA9IGNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEtlZXBBbGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBjb21wb25lbnQgY2hpbGQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNWTm9kZShyYXdWTm9kZSkgfHxcclxuICAgICAgICAgICAgICAgICghKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi8pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIShyYXdWTm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykpKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiByYXdWTm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHJhd1ZOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29tcCA9IHZub2RlLnR5cGU7XHJcbiAgICAgICAgICAgIC8vIGZvciBhc3luYyBjb21wb25lbnRzLCBuYW1lIGNoZWNrIHNob3VsZCBiZSBiYXNlZCBpbiBpdHMgbG9hZGVkXHJcbiAgICAgICAgICAgIC8vIGlubmVyIGNvbXBvbmVudCBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoaXNBc3luY1dyYXBwZXIodm5vZGUpXHJcbiAgICAgICAgICAgICAgICA/IHZub2RlLnR5cGUuX19hc3luY1Jlc29sdmVkIHx8IHt9XHJcbiAgICAgICAgICAgICAgICA6IGNvbXApO1xyXG4gICAgICAgICAgICBjb25zdCB7IGluY2x1ZGUsIGV4Y2x1ZGUsIG1heCB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIGlmICgoaW5jbHVkZSAmJiAoIW5hbWUgfHwgIW1hdGNoZXMoaW5jbHVkZSwgbmFtZSkpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IHZub2RlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHZub2RlLmtleSA9PSBudWxsID8gY29tcCA6IHZub2RlLmtleTtcclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkVk5vZGUgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgLy8gY2xvbmUgdm5vZGUgaWYgaXQncyByZXVzZWQgYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gbXV0YXRlIGl0XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5lbCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgICAgICAgICAgICAgIGlmIChyYXdWTm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJhd1ZOb2RlLnNzQ29udGVudCA9IHZub2RlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICMxNTEzIGl0J3MgcG9zc2libGUgZm9yIHRoZSByZXR1cm5lZCB2bm9kZSB0byBiZSBjbG9uZWQgZHVlIHRvIGF0dHJcclxuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2ggb3Igc2NvcGVJZCwgc28gdGhlIHZub2RlIGhlcmUgbWF5IG5vdCBiZSB0aGUgZmluYWwgdm5vZGVcclxuICAgICAgICAgICAgLy8gdGhhdCBpcyBtb3VudGVkLiBJbnN0ZWFkIG9mIGNhY2hpbmcgaXQgZGlyZWN0bHksIHdlIHN0b3JlIHRoZSBwZW5kaW5nXHJcbiAgICAgICAgICAgIC8vIGtleSBhbmQgY2FjaGUgYGluc3RhbmNlLnN1YlRyZWVgICh0aGUgbm9ybWFsaXplZCB2bm9kZSkgaW5cclxuICAgICAgICAgICAgLy8gYmVmb3JlTW91bnQvYmVmb3JlVXBkYXRlIGhvb2tzLlxyXG4gICAgICAgICAgICBwZW5kaW5nQ2FjaGVLZXkgPSBrZXk7XHJcbiAgICAgICAgICAgIGlmIChjYWNoZWRWTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY29weSBvdmVyIG1vdW50ZWQgc3RhdGVcclxuICAgICAgICAgICAgICAgIHZub2RlLmVsID0gY2FjaGVkVk5vZGUuZWw7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5jb21wb25lbnQgPSBjYWNoZWRWTm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSB0cmFuc2l0aW9uIGhvb2tzIG9uIHN1YlRyZWVcclxuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUsIHZub2RlLnRyYW5zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gYXZvaWQgdm5vZGUgYmVpbmcgbW91bnRlZCBhcyBmcmVzaFxyXG4gICAgICAgICAgICAgICAgdm5vZGUuc2hhcGVGbGFnIHw9IDUxMiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9LRVBUX0FMSVZFICovO1xyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSB0aGlzIGtleSB0aGUgZnJlc2hlc3RcclxuICAgICAgICAgICAgICAgIGtleXMuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAga2V5cy5hZGQoa2V5KTtcclxuICAgICAgICAgICAgICAgIC8vIHBydW5lIG9sZGVzdCBlbnRyeVxyXG4gICAgICAgICAgICAgICAgaWYgKG1heCAmJiBrZXlzLnNpemUgPiBwYXJzZUludChtYXgsIDEwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShrZXlzLnZhbHVlcygpLm5leHQoKS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYXZvaWQgdm5vZGUgYmVpbmcgdW5tb3VudGVkXHJcbiAgICAgICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi87XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzU3VzcGVuc2UocmF3Vk5vZGUudHlwZSkgPyByYXdWTm9kZSA6IHZub2RlO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbi8vIGV4cG9ydCB0aGUgcHVibGljIHR5cGUgZm9yIGgvdHN4IGluZmVyZW5jZVxyXG4vLyBhbHNvIHRvIGF2b2lkIGlubGluZSBpbXBvcnQoKSBpbiBnZW5lcmF0ZWQgZC50cyBmaWxlc1xyXG5jb25zdCBLZWVwQWxpdmUgPSBLZWVwQWxpdmVJbXBsO1xyXG5mdW5jdGlvbiBtYXRjaGVzKHBhdHRlcm4sIG5hbWUpIHtcclxuICAgIGlmIChpc0FycmF5KHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4uc29tZSgocCkgPT4gbWF0Y2hlcyhwLCBuYW1lKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1N0cmluZyhwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5jbHVkZXMobmFtZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwYXR0ZXJuLnRlc3QpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpO1xyXG4gICAgfVxyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBvbkFjdGl2YXRlZChob29rLCB0YXJnZXQpIHtcclxuICAgIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImFcIiAvKiBMaWZlY3ljbGVIb29rcy5BQ1RJVkFURUQgKi8sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gb25EZWFjdGl2YXRlZChob29rLCB0YXJnZXQpIHtcclxuICAgIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImRhXCIgLyogTGlmZWN5Y2xlSG9va3MuREVBQ1RJVkFURUQgKi8sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIHR5cGUsIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgLy8gY2FjaGUgdGhlIGRlYWN0aXZhdGUgYnJhbmNoIGNoZWNrIHdyYXBwZXIgZm9yIGluamVjdGVkIGhvb2tzIHNvIHRoZSBzYW1lXHJcbiAgICAvLyBob29rIGNhbiBiZSBwcm9wZXJseSBkZWR1cGVkIGJ5IHRoZSBzY2hlZHVsZXIuIFwiX193ZGNcIiBzdGFuZHMgZm9yIFwid2l0aFxyXG4gICAgLy8gZGVhY3RpdmF0aW9uIGNoZWNrXCIuXHJcbiAgICBjb25zdCB3cmFwcGVkSG9vayA9IGhvb2suX193ZGMgfHxcclxuICAgICAgICAoaG9vay5fX3dkYyA9ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gb25seSBmaXJlIHRoZSBob29rIGlmIHRoZSB0YXJnZXQgaW5zdGFuY2UgaXMgTk9UIGluIGEgZGVhY3RpdmF0ZWQgYnJhbmNoLlxyXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHRhcmdldDtcclxuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmlzRGVhY3RpdmF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhvb2soKTtcclxuICAgICAgICB9KTtcclxuICAgIGluamVjdEhvb2sodHlwZSwgd3JhcHBlZEhvb2ssIHRhcmdldCk7XHJcbiAgICAvLyBJbiBhZGRpdGlvbiB0byByZWdpc3RlcmluZyBpdCBvbiB0aGUgdGFyZ2V0IGluc3RhbmNlLCB3ZSB3YWxrIHVwIHRoZSBwYXJlbnRcclxuICAgIC8vIGNoYWluIGFuZCByZWdpc3RlciBpdCBvbiBhbGwgYW5jZXN0b3IgaW5zdGFuY2VzIHRoYXQgYXJlIGtlZXAtYWxpdmUgcm9vdHMuXHJcbiAgICAvLyBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byB3YWxrIHRoZSBlbnRpcmUgY29tcG9uZW50IHRyZWUgd2hlbiBpbnZva2luZyB0aGVzZVxyXG4gICAgLy8gaG9va3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCBhdm9pZHMgdGhlIG5lZWQgdG8gdHJhY2sgY2hpbGQgY29tcG9uZW50cyBpblxyXG4gICAgLy8gYXJyYXlzLlxyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50LnBhcmVudCkge1xyXG4gICAgICAgICAgICBpZiAoaXNLZWVwQWxpdmUoY3VycmVudC5wYXJlbnQudm5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RUb0tlZXBBbGl2ZVJvb3Qod3JhcHBlZEhvb2ssIHR5cGUsIHRhcmdldCwgY3VycmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbmplY3RUb0tlZXBBbGl2ZVJvb3QoaG9vaywgdHlwZSwgdGFyZ2V0LCBrZWVwQWxpdmVSb290KSB7XHJcbiAgICAvLyBpbmplY3RIb29rIHdyYXBzIHRoZSBvcmlnaW5hbCBmb3IgZXJyb3IgaGFuZGxpbmcsIHNvIG1ha2Ugc3VyZSB0byByZW1vdmVcclxuICAgIC8vIHRoZSB3cmFwcGVkIHZlcnNpb24uXHJcbiAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdEhvb2sodHlwZSwgaG9vaywga2VlcEFsaXZlUm9vdCwgdHJ1ZSAvKiBwcmVwZW5kICovKTtcclxuICAgIG9uVW5tb3VudGVkKCgpID0+IHtcclxuICAgICAgICByZW1vdmUoa2VlcEFsaXZlUm9vdFt0eXBlXSwgaW5qZWN0ZWQpO1xyXG4gICAgfSwgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiByZXNldFNoYXBlRmxhZyh2bm9kZSkge1xyXG4gICAgbGV0IHNoYXBlRmxhZyA9IHZub2RlLnNoYXBlRmxhZztcclxuICAgIGlmIChzaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pIHtcclxuICAgICAgICBzaGFwZUZsYWcgLT0gMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovO1xyXG4gICAgfVxyXG4gICAgaWYgKHNoYXBlRmxhZyAmIDUxMiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9LRVBUX0FMSVZFICovKSB7XHJcbiAgICAgICAgc2hhcGVGbGFnIC09IDUxMiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9LRVBUX0FMSVZFICovO1xyXG4gICAgfVxyXG4gICAgdm5vZGUuc2hhcGVGbGFnID0gc2hhcGVGbGFnO1xyXG59XHJcbmZ1bmN0aW9uIGdldElubmVyQ2hpbGQodm5vZGUpIHtcclxuICAgIHJldHVybiB2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLyA/IHZub2RlLnNzQ29udGVudCA6IHZub2RlO1xyXG59XG5cbmZ1bmN0aW9uIGluamVjdEhvb2sodHlwZSwgaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlLCBwcmVwZW5kID0gZmFsc2UpIHtcclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICBjb25zdCBob29rcyA9IHRhcmdldFt0eXBlXSB8fCAodGFyZ2V0W3R5cGVdID0gW10pO1xyXG4gICAgICAgIC8vIGNhY2hlIHRoZSBlcnJvciBoYW5kbGluZyB3cmFwcGVyIGZvciBpbmplY3RlZCBob29rcyBzbyB0aGUgc2FtZSBob29rXHJcbiAgICAgICAgLy8gY2FuIGJlIHByb3Blcmx5IGRlZHVwZWQgYnkgdGhlIHNjaGVkdWxlci4gXCJfX3dlaFwiIHN0YW5kcyBmb3IgXCJ3aXRoIGVycm9yXHJcbiAgICAgICAgLy8gaGFuZGxpbmdcIi5cclxuICAgICAgICBjb25zdCB3cmFwcGVkSG9vayA9IGhvb2suX193ZWggfHxcclxuICAgICAgICAgICAgKGhvb2suX193ZWggPSAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldC5pc1VubW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgdHJhY2tpbmcgaW5zaWRlIGFsbCBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgY2FuIHBvdGVudGlhbGx5IGJlIGNhbGxlZCBpbnNpZGUgZWZmZWN0cy5cclxuICAgICAgICAgICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50SW5zdGFuY2UgZHVyaW5nIGhvb2sgaW52b2NhdGlvbi5cclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzdW1lcyB0aGUgaG9vayBkb2VzIG5vdCBzeW5jaHJvbm91c2x5IHRyaWdnZXIgb3RoZXIgaG9va3MsIHdoaWNoXHJcbiAgICAgICAgICAgICAgICAvLyBjYW4gb25seSBiZSBmYWxzZSB3aGVuIHRoZSB1c2VyIGRvZXMgc29tZXRoaW5nIHJlYWxseSBmdW5reS5cclxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZSh0YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgdGFyZ2V0LCB0eXBlLCBhcmdzKTtcclxuICAgICAgICAgICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAocHJlcGVuZCkge1xyXG4gICAgICAgICAgICBob29rcy51bnNoaWZ0KHdyYXBwZWRIb29rKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhvb2tzLnB1c2god3JhcHBlZEhvb2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gd3JhcHBlZEhvb2s7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBhcGlOYW1lID0gdG9IYW5kbGVyS2V5KEVycm9yVHlwZVN0cmluZ3NbdHlwZV0ucmVwbGFjZSgvIGhvb2skLywgJycpKTtcclxuICAgICAgICB3YXJuKGAke2FwaU5hbWV9IGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2UgdG8gYmUgYCArXHJcbiAgICAgICAgICAgIGBhc3NvY2lhdGVkIHdpdGguIGAgK1xyXG4gICAgICAgICAgICBgTGlmZWN5Y2xlIGluamVjdGlvbiBBUElzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGV4ZWN1dGlvbiBvZiBzZXR1cCgpLmAgK1xyXG4gICAgICAgICAgICAoYCBJZiB5b3UgYXJlIHVzaW5nIGFzeW5jIHNldHVwKCksIG1ha2Ugc3VyZSB0byByZWdpc3RlciBsaWZlY3ljbGUgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGhvb2tzIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQgc3RhdGVtZW50LmBcclxuICAgICAgICAgICAgICAgICkpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGNyZWF0ZUhvb2sgPSAobGlmZWN5Y2xlKSA9PiAoaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSA9PiBcclxuLy8gcG9zdC1jcmVhdGUgbGlmZWN5Y2xlIHJlZ2lzdHJhdGlvbnMgYXJlIG5vb3BzIGR1cmluZyBTU1IgKGV4Y2VwdCBmb3Igc2VydmVyUHJlZmV0Y2gpXHJcbighaXNJblNTUkNvbXBvbmVudFNldHVwIHx8IGxpZmVjeWNsZSA9PT0gXCJzcFwiIC8qIExpZmVjeWNsZUhvb2tzLlNFUlZFUl9QUkVGRVRDSCAqLykgJiZcclxuICAgIGluamVjdEhvb2sobGlmZWN5Y2xlLCBob29rLCB0YXJnZXQpO1xyXG5jb25zdCBvbkJlZm9yZU1vdW50ID0gY3JlYXRlSG9vayhcImJtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX01PVU5UICovKTtcclxuY29uc3Qgb25Nb3VudGVkID0gY3JlYXRlSG9vayhcIm1cIiAvKiBMaWZlY3ljbGVIb29rcy5NT1VOVEVEICovKTtcclxuY29uc3Qgb25CZWZvcmVVcGRhdGUgPSBjcmVhdGVIb29rKFwiYnVcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVVBEQVRFICovKTtcclxuY29uc3Qgb25VcGRhdGVkID0gY3JlYXRlSG9vayhcInVcIiAvKiBMaWZlY3ljbGVIb29rcy5VUERBVEVEICovKTtcclxuY29uc3Qgb25CZWZvcmVVbm1vdW50ID0gY3JlYXRlSG9vayhcImJ1bVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VTk1PVU5UICovKTtcclxuY29uc3Qgb25Vbm1vdW50ZWQgPSBjcmVhdGVIb29rKFwidW1cIiAvKiBMaWZlY3ljbGVIb29rcy5VTk1PVU5URUQgKi8pO1xyXG5jb25zdCBvblNlcnZlclByZWZldGNoID0gY3JlYXRlSG9vayhcInNwXCIgLyogTGlmZWN5Y2xlSG9va3MuU0VSVkVSX1BSRUZFVENIICovKTtcclxuY29uc3Qgb25SZW5kZXJUcmlnZ2VyZWQgPSBjcmVhdGVIb29rKFwicnRnXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSSUdHRVJFRCAqLyk7XHJcbmNvbnN0IG9uUmVuZGVyVHJhY2tlZCA9IGNyZWF0ZUhvb2soXCJydGNcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJBQ0tFRCAqLyk7XHJcbmZ1bmN0aW9uIG9uRXJyb3JDYXB0dXJlZChob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgIGluamVjdEhvb2soXCJlY1wiIC8qIExpZmVjeWNsZUhvb2tzLkVSUk9SX0NBUFRVUkVEICovLCBob29rLCB0YXJnZXQpO1xyXG59XG5cbi8qKlxyXG5SdW50aW1lIGhlbHBlciBmb3IgYXBwbHlpbmcgZGlyZWN0aXZlcyB0byBhIHZub2RlLiBFeGFtcGxlIHVzYWdlOlxyXG5cbmNvbnN0IGNvbXAgPSByZXNvbHZlQ29tcG9uZW50KCdjb21wJylcclxuY29uc3QgZm9vID0gcmVzb2x2ZURpcmVjdGl2ZSgnZm9vJylcclxuY29uc3QgYmFyID0gcmVzb2x2ZURpcmVjdGl2ZSgnYmFyJylcclxuXG5yZXR1cm4gd2l0aERpcmVjdGl2ZXMoaChjb21wKSwgW1xyXG4gIFtmb28sIHRoaXMueF0sXHJcbiAgW2JhciwgdGhpcy55XVxyXG5dKVxyXG4qL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZSkge1xyXG4gICAgaWYgKGlzQnVpbHRJbkRpcmVjdGl2ZShuYW1lKSkge1xyXG4gICAgICAgIHdhcm4oJ0RvIG5vdCB1c2UgYnVpbHQtaW4gZGlyZWN0aXZlIGlkcyBhcyBjdXN0b20gZGlyZWN0aXZlIGlkOiAnICsgbmFtZSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEFkZHMgZGlyZWN0aXZlcyB0byBhIFZOb2RlLlxyXG4gKi9cclxuZnVuY3Rpb24gd2l0aERpcmVjdGl2ZXModm5vZGUsIGRpcmVjdGl2ZXMpIHtcclxuICAgIGNvbnN0IGludGVybmFsSW5zdGFuY2UgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGB3aXRoRGlyZWN0aXZlcyBjYW4gb25seSBiZSB1c2VkIGluc2lkZSByZW5kZXIgZnVuY3Rpb25zLmApO1xyXG4gICAgICAgIHJldHVybiB2bm9kZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0RXhwb3NlUHJveHkoaW50ZXJuYWxJbnN0YW5jZSkgfHxcclxuICAgICAgICBpbnRlcm5hbEluc3RhbmNlLnByb3h5O1xyXG4gICAgY29uc3QgYmluZGluZ3MgPSB2bm9kZS5kaXJzIHx8ICh2bm9kZS5kaXJzID0gW10pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXJlY3RpdmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IFtkaXIsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyA9IEVNUFRZX09CSl0gPSBkaXJlY3RpdmVzW2ldO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGRpcikpIHtcclxuICAgICAgICAgICAgZGlyID0ge1xyXG4gICAgICAgICAgICAgICAgbW91bnRlZDogZGlyLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogZGlyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXIuZGVlcCkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJpbmRpbmdzLnB1c2goe1xyXG4gICAgICAgICAgICBkaXIsXHJcbiAgICAgICAgICAgIGluc3RhbmNlLFxyXG4gICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAgb2xkVmFsdWU6IHZvaWQgMCxcclxuICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICBtb2RpZmllcnNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG5mdW5jdGlvbiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBwcmV2Vk5vZGUsIGluc3RhbmNlLCBuYW1lKSB7XHJcbiAgICBjb25zdCBiaW5kaW5ncyA9IHZub2RlLmRpcnM7XHJcbiAgICBjb25zdCBvbGRCaW5kaW5ncyA9IHByZXZWTm9kZSAmJiBwcmV2Vk5vZGUuZGlycztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBiaW5kaW5nID0gYmluZGluZ3NbaV07XHJcbiAgICAgICAgaWYgKG9sZEJpbmRpbmdzKSB7XHJcbiAgICAgICAgICAgIGJpbmRpbmcub2xkVmFsdWUgPSBvbGRCaW5kaW5nc1tpXS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGhvb2sgPSBiaW5kaW5nLmRpcltuYW1lXTtcclxuICAgICAgICBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICAvLyBkaXNhYmxlIHRyYWNraW5nIGluc2lkZSBhbGwgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgY2FuIHBvdGVudGlhbGx5IGJlIGNhbGxlZCBpbnNpZGUgZWZmZWN0cy5cclxuICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgOCAvKiBFcnJvckNvZGVzLkRJUkVDVElWRV9IT09LICovLCBbXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5lbCxcclxuICAgICAgICAgICAgICAgIGJpbmRpbmcsXHJcbiAgICAgICAgICAgICAgICB2bm9kZSxcclxuICAgICAgICAgICAgICAgIHByZXZWTm9kZVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCBDT01QT05FTlRTID0gJ2NvbXBvbmVudHMnO1xyXG5jb25zdCBESVJFQ1RJVkVTID0gJ2RpcmVjdGl2ZXMnO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnQobmFtZSwgbWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KENPTVBPTkVOVFMsIG5hbWUsIHRydWUsIG1heWJlU2VsZlJlZmVyZW5jZSkgfHwgbmFtZTtcclxufVxyXG5jb25zdCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UID0gU3ltYm9sKCk7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICBpZiAoaXNTdHJpbmcoY29tcG9uZW50KSkge1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlQXNzZXQoQ09NUE9ORU5UUywgY29tcG9uZW50LCBmYWxzZSkgfHwgY29tcG9uZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gaW52YWxpZCB0eXBlcyB3aWxsIGZhbGx0aHJvdWdoIHRvIGNyZWF0ZVZOb2RlIGFuZCByYWlzZSB3YXJuaW5nXHJcbiAgICAgICAgcmV0dXJuIChjb21wb25lbnQgfHwgTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRGlyZWN0aXZlKG5hbWUpIHtcclxuICAgIHJldHVybiByZXNvbHZlQXNzZXQoRElSRUNUSVZFUywgbmFtZSk7XHJcbn1cclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gcmVzb2x2ZUFzc2V0KHR5cGUsIG5hbWUsIHdhcm5NaXNzaW5nID0gdHJ1ZSwgbWF5YmVTZWxmUmVmZXJlbmNlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIHx8IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnN0IENvbXBvbmVudCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICAgICAgLy8gZXhwbGljaXQgc2VsZiBuYW1lIGhhcyBoaWdoZXN0IHByaW9yaXR5XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IENPTVBPTkVOVFMpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZk5hbWUgPSBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCwgZmFsc2UgLyogZG8gbm90IGluY2x1ZGUgaW5mZXJyZWQgbmFtZSB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjb2RlICovKTtcclxuICAgICAgICAgICAgaWYgKHNlbGZOYW1lICYmXHJcbiAgICAgICAgICAgICAgICAoc2VsZk5hbWUgPT09IG5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmTmFtZSA9PT0gY2FtZWxpemUobmFtZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmTmFtZSA9PT0gY2FwaXRhbGl6ZShjYW1lbGl6ZShuYW1lKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcyA9IFxyXG4gICAgICAgIC8vIGxvY2FsIHJlZ2lzdHJhdGlvblxyXG4gICAgICAgIC8vIGNoZWNrIGluc3RhbmNlW3R5cGVdIGZpcnN0IHdoaWNoIGlzIHJlc29sdmVkIGZvciBvcHRpb25zIEFQSVxyXG4gICAgICAgIHJlc29sdmUoaW5zdGFuY2VbdHlwZV0gfHwgQ29tcG9uZW50W3R5cGVdLCBuYW1lKSB8fFxyXG4gICAgICAgICAgICAvLyBnbG9iYWwgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgICAgIHJlc29sdmUoaW5zdGFuY2UuYXBwQ29udGV4dFt0eXBlXSwgbmFtZSk7XHJcbiAgICAgICAgaWYgKCFyZXMgJiYgbWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIGltcGxpY2l0IHNlbGYtcmVmZXJlbmNlXHJcbiAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IHR5cGUgPT09IENPTVBPTkVOVFNcclxuICAgICAgICAgICAgICAgID8gYFxcbklmIHRoaXMgaXMgYSBuYXRpdmUgY3VzdG9tIGVsZW1lbnQsIG1ha2Ugc3VyZSB0byBleGNsdWRlIGl0IGZyb20gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGNvbXBvbmVudCByZXNvbHV0aW9uIHZpYSBjb21waWxlck9wdGlvbnMuaXNDdXN0b21FbGVtZW50LmBcclxuICAgICAgICAgICAgICAgIDogYGA7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byByZXNvbHZlICR7dHlwZS5zbGljZSgwLCAtMSl9OiAke25hbWV9JHtleHRyYX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYHJlc29sdmUke2NhcGl0YWxpemUodHlwZS5zbGljZSgwLCAtMSkpfSBgICtcclxuICAgICAgICAgICAgYGNhbiBvbmx5IGJlIHVzZWQgaW4gcmVuZGVyKCkgb3Igc2V0dXAoKS5gKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiByZXNvbHZlKHJlZ2lzdHJ5LCBuYW1lKSB7XHJcbiAgICByZXR1cm4gKHJlZ2lzdHJ5ICYmXHJcbiAgICAgICAgKHJlZ2lzdHJ5W25hbWVdIHx8XHJcbiAgICAgICAgICAgIHJlZ2lzdHJ5W2NhbWVsaXplKG5hbWUpXSB8fFxyXG4gICAgICAgICAgICByZWdpc3RyeVtjYXBpdGFsaXplKGNhbWVsaXplKG5hbWUpKV0pKTtcclxufVxuXG4vKipcclxuICogQWN0dWFsIGltcGxlbWVudGF0aW9uXHJcbiAqL1xyXG5mdW5jdGlvbiByZW5kZXJMaXN0KHNvdXJjZSwgcmVuZGVySXRlbSwgY2FjaGUsIGluZGV4KSB7XHJcbiAgICBsZXQgcmV0O1xyXG4gICAgY29uc3QgY2FjaGVkID0gKGNhY2hlICYmIGNhY2hlW2luZGV4XSk7XHJcbiAgICBpZiAoaXNBcnJheShzb3VyY2UpIHx8IGlzU3RyaW5nKHNvdXJjZSkpIHtcclxuICAgICAgICByZXQgPSBuZXcgQXJyYXkoc291cmNlLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBzb3VyY2UubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oc291cmNlW2ldLCBpLCB1bmRlZmluZWQsIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhTnVtYmVyLmlzSW50ZWdlcihzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFRoZSB2LWZvciByYW5nZSBleHBlY3QgYW4gaW50ZWdlciB2YWx1ZSBidXQgZ290ICR7c291cmNlfS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0ID0gbmV3IEFycmF5KHNvdXJjZSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2U7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKGkgKyAxLCBpLCB1bmRlZmluZWQsIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHtcclxuICAgICAgICBpZiAoc291cmNlW1N5bWJvbC5pdGVyYXRvcl0pIHtcclxuICAgICAgICAgICAgcmV0ID0gQXJyYXkuZnJvbShzb3VyY2UsIChpdGVtLCBpKSA9PiByZW5kZXJJdGVtKGl0ZW0sIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XHJcbiAgICAgICAgICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XHJcbiAgICAgICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtrZXldLCBrZXksIGksIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gW107XHJcbiAgICB9XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgICBjYWNoZVtpbmRleF0gPSByZXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8qKlxyXG4gKiBDb21waWxlciBydW50aW1lIGhlbHBlciBmb3IgY3JlYXRpbmcgZHluYW1pYyBzbG90cyBvYmplY3RcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVNsb3RzKHNsb3RzLCBkeW5hbWljU2xvdHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY1Nsb3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgc2xvdCA9IGR5bmFtaWNTbG90c1tpXTtcclxuICAgICAgICAvLyBhcnJheSBvZiBkeW5hbWljIHNsb3QgZ2VuZXJhdGVkIGJ5IDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiICNbLi4uXT5cclxuICAgICAgICBpZiAoaXNBcnJheShzbG90KSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNsb3QubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHNsb3RzW3Nsb3Rbal0ubmFtZV0gPSBzbG90W2pdLmZuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNsb3QpIHtcclxuICAgICAgICAgICAgLy8gY29uZGl0aW9uYWwgc2luZ2xlIHNsb3QgZ2VuZXJhdGVkIGJ5IDx0ZW1wbGF0ZSB2LWlmPVwiLi4uXCIgI2Zvbz5cclxuICAgICAgICAgICAgc2xvdHNbc2xvdC5uYW1lXSA9IHNsb3Qua2V5XHJcbiAgICAgICAgICAgICAgICA/ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gc2xvdC5mbiguLi5hcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMua2V5ID0gc2xvdC5rZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDogc2xvdC5mbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2xvdHM7XHJcbn1cblxuLyoqXHJcbiAqIENvbXBpbGVyIHJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgYDxzbG90Lz5gXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZW5kZXJTbG90KHNsb3RzLCBuYW1lLCBwcm9wcyA9IHt9LCBcclxuLy8gdGhpcyBpcyBub3QgYSB1c2VyLWZhY2luZyBmdW5jdGlvbiwgc28gdGhlIGZhbGxiYWNrIGlzIGFsd2F5cyBnZW5lcmF0ZWQgYnlcclxuLy8gdGhlIGNvbXBpbGVyIGFuZCBndWFyYW50ZWVkIHRvIGJlIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5XHJcbmZhbGxiYWNrLCBub1Nsb3R0ZWQpIHtcclxuICAgIGlmIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UuaXNDRSB8fFxyXG4gICAgICAgIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UucGFyZW50ICYmXHJcbiAgICAgICAgICAgIGlzQXN5bmNXcmFwcGVyKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5wYXJlbnQpICYmXHJcbiAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5wYXJlbnQuaXNDRSkpIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoJ3Nsb3QnLCBuYW1lID09PSAnZGVmYXVsdCcgPyBudWxsIDogeyBuYW1lIH0sIGZhbGxiYWNrICYmIGZhbGxiYWNrKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IHNsb3QgPSBzbG90c1tuYW1lXTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2xvdCAmJiBzbG90Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB3YXJuKGBTU1Itb3B0aW1pemVkIHNsb3QgZnVuY3Rpb24gZGV0ZWN0ZWQgaW4gYSBub24tU1NSLW9wdGltaXplZCByZW5kZXIgYCArXHJcbiAgICAgICAgICAgIGBmdW5jdGlvbi4gWW91IG5lZWQgdG8gbWFyayB0aGlzIGNvbXBvbmVudCB3aXRoICRkeW5hbWljLXNsb3RzIGluIHRoZSBgICtcclxuICAgICAgICAgICAgYHBhcmVudCB0ZW1wbGF0ZS5gKTtcclxuICAgICAgICBzbG90ID0gKCkgPT4gW107XHJcbiAgICB9XHJcbiAgICAvLyBhIGNvbXBpbGVkIHNsb3QgZGlzYWJsZXMgYmxvY2sgdHJhY2tpbmcgYnkgZGVmYXVsdCB0byBhdm9pZCBtYW51YWxcclxuICAgIC8vIGludm9jYXRpb24gaW50ZXJmZXJpbmcgd2l0aCB0ZW1wbGF0ZS1iYXNlZCBibG9jayB0cmFja2luZywgYnV0IGluXHJcbiAgICAvLyBgcmVuZGVyU2xvdGAgd2UgY2FuIGJlIHN1cmUgdGhhdCBpdCdzIHRlbXBsYXRlLWJhc2VkIHNvIHdlIGNhbiBmb3JjZVxyXG4gICAgLy8gZW5hYmxlIGl0LlxyXG4gICAgaWYgKHNsb3QgJiYgc2xvdC5fYykge1xyXG4gICAgICAgIHNsb3QuX2QgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIG9wZW5CbG9jaygpO1xyXG4gICAgY29uc3QgdmFsaWRTbG90Q29udGVudCA9IHNsb3QgJiYgZW5zdXJlVmFsaWRWTm9kZShzbG90KHByb3BzKSk7XHJcbiAgICBjb25zdCByZW5kZXJlZCA9IGNyZWF0ZUJsb2NrKEZyYWdtZW50LCB7XHJcbiAgICAgICAga2V5OiBwcm9wcy5rZXkgfHxcclxuICAgICAgICAgICAgLy8gc2xvdCBjb250ZW50IGFycmF5IG9mIGEgZHluYW1pYyBjb25kaXRpb25hbCBzbG90IG1heSBoYXZlIGEgYnJhbmNoXHJcbiAgICAgICAgICAgIC8vIGtleSBhdHRhY2hlZCBpbiB0aGUgYGNyZWF0ZVNsb3RzYCBoZWxwZXIsIHJlc3BlY3QgdGhhdFxyXG4gICAgICAgICAgICAodmFsaWRTbG90Q29udGVudCAmJiB2YWxpZFNsb3RDb250ZW50LmtleSkgfHxcclxuICAgICAgICAgICAgYF8ke25hbWV9YFxyXG4gICAgfSwgdmFsaWRTbG90Q29udGVudCB8fCAoZmFsbGJhY2sgPyBmYWxsYmFjaygpIDogW10pLCB2YWxpZFNsb3RDb250ZW50ICYmIHNsb3RzLl8gPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqL1xyXG4gICAgICAgID8gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9cclxuICAgICAgICA6IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLyk7XHJcbiAgICBpZiAoIW5vU2xvdHRlZCAmJiByZW5kZXJlZC5zY29wZUlkKSB7XHJcbiAgICAgICAgcmVuZGVyZWQuc2xvdFNjb3BlSWRzID0gW3JlbmRlcmVkLnNjb3BlSWQgKyAnLXMnXTtcclxuICAgIH1cclxuICAgIGlmIChzbG90ICYmIHNsb3QuX2MpIHtcclxuICAgICAgICBzbG90Ll9kID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZW5kZXJlZDtcclxufVxyXG5mdW5jdGlvbiBlbnN1cmVWYWxpZFZOb2RlKHZub2Rlcykge1xyXG4gICAgcmV0dXJuIHZub2Rlcy5zb21lKGNoaWxkID0+IHtcclxuICAgICAgICBpZiAoIWlzVk5vZGUoY2hpbGQpKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gQ29tbWVudClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSBGcmFnbWVudCAmJlxyXG4gICAgICAgICAgICAhZW5zdXJlVmFsaWRWTm9kZShjaGlsZC5jaGlsZHJlbikpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pXHJcbiAgICAgICAgPyB2bm9kZXNcclxuICAgICAgICA6IG51bGw7XHJcbn1cblxuLyoqXHJcbiAqIEZvciBwcmVmaXhpbmcga2V5cyBpbiB2LW9uPVwib2JqXCIgd2l0aCBcIm9uXCJcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHRvSGFuZGxlcnMob2JqLCBwcmVzZXJ2ZUNhc2VJZk5lY2Vzc2FyeSkge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc09iamVjdChvYmopKSB7XHJcbiAgICAgICAgd2Fybihgdi1vbiB3aXRoIG5vIGFyZ3VtZW50IGV4cGVjdHMgYW4gb2JqZWN0IHZhbHVlLmApO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICByZXRbcHJlc2VydmVDYXNlSWZOZWNlc3NhcnkgJiYgL1tBLVpdLy50ZXN0KGtleSlcclxuICAgICAgICAgICAgPyBgb246JHtrZXl9YFxyXG4gICAgICAgICAgICA6IHRvSGFuZGxlcktleShrZXkpXSA9IG9ialtrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vKipcclxuICogIzI0MzcgSW4gVnVlIDMsIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBkbyBub3QgaGF2ZSBhIHB1YmxpYyBpbnN0YW5jZSBwcm94eSBidXRcclxuICogdGhleSBleGlzdCBpbiB0aGUgaW50ZXJuYWwgcGFyZW50IGNoYWluLiBGb3IgY29kZSB0aGF0IHJlbGllcyBvbiB0cmF2ZXJzaW5nXHJcbiAqIHB1YmxpYyAkcGFyZW50IGNoYWlucywgc2tpcCBmdW5jdGlvbmFsIG9uZXMgYW5kIGdvIHRvIHRoZSBwYXJlbnQgaW5zdGVhZC5cclxuICovXHJcbmNvbnN0IGdldFB1YmxpY0luc3RhbmNlID0gKGkpID0+IHtcclxuICAgIGlmICghaSlcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGlmIChpc1N0YXRlZnVsQ29tcG9uZW50KGkpKVxyXG4gICAgICAgIHJldHVybiBnZXRFeHBvc2VQcm94eShpKSB8fCBpLnByb3h5O1xyXG4gICAgcmV0dXJuIGdldFB1YmxpY0luc3RhbmNlKGkucGFyZW50KTtcclxufTtcclxuY29uc3QgcHVibGljUHJvcGVydGllc01hcCA9IFxyXG4vLyBNb3ZlIFBVUkUgbWFya2VyIHRvIG5ldyBsaW5lIHRvIHdvcmthcm91bmQgY29tcGlsZXIgZGlzY2FyZGluZyBpdFxyXG4vLyBkdWUgdG8gdHlwZSBhbm5vdGF0aW9uXHJcbi8qI19fUFVSRV9fKi8gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHtcclxuICAgICQ6IGkgPT4gaSxcclxuICAgICRlbDogaSA9PiBpLnZub2RlLmVsLFxyXG4gICAgJGRhdGE6IGkgPT4gaS5kYXRhLFxyXG4gICAgJHByb3BzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5wcm9wcykgOiBpLnByb3BzKSxcclxuICAgICRhdHRyczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkuYXR0cnMpIDogaS5hdHRycyksXHJcbiAgICAkc2xvdHM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnNsb3RzKSA6IGkuc2xvdHMpLFxyXG4gICAgJHJlZnM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnJlZnMpIDogaS5yZWZzKSxcclxuICAgICRwYXJlbnQ6IGkgPT4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpLFxyXG4gICAgJHJvb3Q6IGkgPT4gZ2V0UHVibGljSW5zdGFuY2UoaS5yb290KSxcclxuICAgICRlbWl0OiBpID0+IGkuZW1pdCxcclxuICAgICRvcHRpb25zOiBpID0+IChfX1ZVRV9PUFRJT05TX0FQSV9fID8gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaSkgOiBpLnR5cGUpLFxyXG4gICAgJGZvcmNlVXBkYXRlOiBpID0+IGkuZiB8fCAoaS5mID0gKCkgPT4gcXVldWVKb2IoaS51cGRhdGUpKSxcclxuICAgICRuZXh0VGljazogaSA9PiBpLm4gfHwgKGkubiA9IG5leHRUaWNrLmJpbmQoaS5wcm94eSkpLFxyXG4gICAgJHdhdGNoOiBpID0+IChfX1ZVRV9PUFRJT05TX0FQSV9fID8gaW5zdGFuY2VXYXRjaC5iaW5kKGkpIDogTk9PUClcclxufSk7XHJcbmNvbnN0IGlzUmVzZXJ2ZWRQcmVmaXggPSAoa2V5KSA9PiBrZXkgPT09ICdfJyB8fCBrZXkgPT09ICckJztcclxuY29uc3QgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzID0ge1xyXG4gICAgZ2V0KHsgXzogaW5zdGFuY2UgfSwga2V5KSB7XHJcbiAgICAgICAgY29uc3QgeyBjdHgsIHNldHVwU3RhdGUsIGRhdGEsIHByb3BzLCBhY2Nlc3NDYWNoZSwgdHlwZSwgYXBwQ29udGV4dCB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgLy8gZm9yIGludGVybmFsIGZvcm1hdHRlcnMgdG8ga25vdyB0aGF0IHRoaXMgaXMgYSBWdWUgaW5zdGFuY2VcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleSA9PT0gJ19faXNWdWUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcmlvcml0aXplIDxzY3JpcHQgc2V0dXA+IGJpbmRpbmdzIGR1cmluZyBkZXYuXHJcbiAgICAgICAgLy8gdGhpcyBhbGxvd3MgZXZlbiBwcm9wZXJ0aWVzIHRoYXQgc3RhcnQgd2l0aCBfIG9yICQgdG8gYmUgdXNlZCAtIHNvIHRoYXRcclxuICAgICAgICAvLyBpdCBhbGlnbnMgd2l0aCB0aGUgcHJvZHVjdGlvbiBiZWhhdmlvciB3aGVyZSB0aGUgcmVuZGVyIGZuIGlzIGlubGluZWQgYW5kXHJcbiAgICAgICAgLy8gaW5kZWVkIGhhcyBhY2Nlc3MgdG8gYWxsIGRlY2xhcmVkIHZhcmlhYmxlcy5cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJlxyXG4gICAgICAgICAgICBzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCAmJlxyXG4gICAgICAgICAgICBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2V0dXBTdGF0ZVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBkYXRhIC8gcHJvcHMgLyBjdHhcclxuICAgICAgICAvLyBUaGlzIGdldHRlciBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgcHJvcGVydHkgYWNjZXNzIG9uIHRoZSByZW5kZXIgY29udGV4dFxyXG4gICAgICAgIC8vIGR1cmluZyByZW5kZXIgYW5kIGlzIGEgbWFqb3IgaG90c3BvdC4gVGhlIG1vc3QgZXhwZW5zaXZlIHBhcnQgb2YgdGhpc1xyXG4gICAgICAgIC8vIGlzIHRoZSBtdWx0aXBsZSBoYXNPd24oKSBjYWxscy4gSXQncyBtdWNoIGZhc3RlciB0byBkbyBhIHNpbXBsZSBwcm9wZXJ0eVxyXG4gICAgICAgIC8vIGFjY2VzcyBvbiBhIHBsYWluIG9iamVjdCwgc28gd2UgdXNlIGFuIGFjY2Vzc0NhY2hlIG9iamVjdCAod2l0aCBudWxsXHJcbiAgICAgICAgLy8gcHJvdG90eXBlKSB0byBtZW1vaXplIHdoYXQgYWNjZXNzIHR5cGUgYSBrZXkgY29ycmVzcG9uZHMgdG8uXHJcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRQcm9wcztcclxuICAgICAgICBpZiAoa2V5WzBdICE9PSAnJCcpIHtcclxuICAgICAgICAgICAgY29uc3QgbiA9IGFjY2Vzc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgIGlmIChuICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMSAvKiBBY2Nlc3NUeXBlcy5TRVRVUCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDIgLyogQWNjZXNzVHlwZXMuREFUQSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQgLyogQWNjZXNzVHlwZXMuQ09OVEVYVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMyAvKiBBY2Nlc3NUeXBlcy5QUk9QUyAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdDoganVzdCBmYWxsdGhyb3VnaFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDEgLyogQWNjZXNzVHlwZXMuU0VUVVAgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0dXBTdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDIgLyogQWNjZXNzVHlwZXMuREFUQSAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIC8vIG9ubHkgY2FjaGUgb3RoZXIgcHJvcGVydGllcyB3aGVuIGluc3RhbmNlIGhhcyBkZWNsYXJlZCAodGh1cyBzdGFibGUpXHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIChub3JtYWxpemVkUHJvcHMgPSBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF0pICYmXHJcbiAgICAgICAgICAgICAgICBoYXNPd24obm9ybWFsaXplZFByb3BzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMyAvKiBBY2Nlc3NUeXBlcy5QUk9QUyAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGN0eCAhPT0gRU1QVFlfT0JKICYmIGhhc093bihjdHgsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSA0IC8qIEFjY2Vzc1R5cGVzLkNPTlRFWFQgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4W2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIV9fVlVFX09QVElPTlNfQVBJX18gfHwgc2hvdWxkQ2FjaGVBY2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAwIC8qIEFjY2Vzc1R5cGVzLk9USEVSICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHB1YmxpY0dldHRlciA9IHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XTtcclxuICAgICAgICBsZXQgY3NzTW9kdWxlLCBnbG9iYWxQcm9wZXJ0aWVzO1xyXG4gICAgICAgIC8vIHB1YmxpYyAkeHh4IHByb3BlcnRpZXNcclxuICAgICAgICBpZiAocHVibGljR2V0dGVyKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICckYXR0cnMnKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhpbnN0YW5jZSwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHB1YmxpY0dldHRlcihpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgIC8vIGNzcyBtb2R1bGUgKGluamVjdGVkIGJ5IHZ1ZS1sb2FkZXIpXHJcbiAgICAgICAgKGNzc01vZHVsZSA9IHR5cGUuX19jc3NNb2R1bGVzKSAmJlxyXG4gICAgICAgICAgICAoY3NzTW9kdWxlID0gY3NzTW9kdWxlW2tleV0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjc3NNb2R1bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGN0eCAhPT0gRU1QVFlfT0JKICYmIGhhc093bihjdHgsIGtleSkpIHtcclxuICAgICAgICAgICAgLy8gdXNlciBtYXkgc2V0IGN1c3RvbSBwcm9wZXJ0aWVzIHRvIGB0aGlzYCB0aGF0IHN0YXJ0IHdpdGggYCRgXHJcbiAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSA0IC8qIEFjY2Vzc1R5cGVzLkNPTlRFWFQgKi87XHJcbiAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgLy8gZ2xvYmFsIHByb3BlcnRpZXNcclxuICAgICAgICAoKGdsb2JhbFByb3BlcnRpZXMgPSBhcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzKSxcclxuICAgICAgICAgICAgaGFzT3duKGdsb2JhbFByb3BlcnRpZXMsIGtleSkpKSB7XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxQcm9wZXJ0aWVzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSAmJlxyXG4gICAgICAgICAgICAoIWlzU3RyaW5nKGtleSkgfHxcclxuICAgICAgICAgICAgICAgIC8vICMxMDkxIGF2b2lkIGludGVybmFsIGlzUmVmL2lzVk5vZGUgY2hlY2tzIG9uIGNvbXBvbmVudCBpbnN0YW5jZSBsZWFkaW5nXHJcbiAgICAgICAgICAgICAgICAvLyB0byBpbmZpbml0ZSB3YXJuaW5nIGxvb3BcclxuICAgICAgICAgICAgICAgIGtleS5pbmRleE9mKCdfX3YnKSAhPT0gMCkpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBpc1Jlc2VydmVkUHJlZml4KGtleVswXSkgJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gbXVzdCBiZSBhY2Nlc3NlZCB2aWEgJGRhdGEgYmVjYXVzZSBpdCBzdGFydHMgd2l0aCBhIHJlc2VydmVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBjaGFyYWN0ZXIgKFwiJFwiIG9yIFwiX1wiKSBhbmQgaXMgbm90IHByb3hpZWQgb24gdGhlIHJlbmRlciBjb250ZXh0LmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGluc3RhbmNlID09PSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gd2FzIGFjY2Vzc2VkIGR1cmluZyByZW5kZXIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGJ1dCBpcyBub3QgZGVmaW5lZCBvbiBpbnN0YW5jZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzZXQoeyBfOiBpbnN0YW5jZSB9LCBrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgeyBkYXRhLCBzZXR1cFN0YXRlLCBjdHggfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIGlmIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChoYXNPd24oaW5zdGFuY2UucHJvcHMsIGtleSkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIG11dGF0ZSBwcm9wIFwiJHtrZXl9XCIuIFByb3BzIGFyZSByZWFkb25seS5gLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleVswXSA9PT0gJyQnICYmIGtleS5zbGljZSgxKSBpbiBpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gbXV0YXRlIHB1YmxpYyBwcm9wZXJ0eSBcIiR7a2V5fVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUHJvcGVydGllcyBzdGFydGluZyB3aXRoICQgYXJlIHJlc2VydmVkIGFuZCByZWFkb25seS5gLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5IGluIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN0eFtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gICAgaGFzKHsgXzogeyBkYXRhLCBzZXR1cFN0YXRlLCBhY2Nlc3NDYWNoZSwgY3R4LCBhcHBDb250ZXh0LCBwcm9wc09wdGlvbnMgfSB9LCBrZXkpIHtcclxuICAgICAgICBsZXQgbm9ybWFsaXplZFByb3BzO1xyXG4gICAgICAgIHJldHVybiAoISFhY2Nlc3NDYWNoZVtrZXldIHx8XHJcbiAgICAgICAgICAgIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHx8XHJcbiAgICAgICAgICAgIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHx8XHJcbiAgICAgICAgICAgICgobm9ybWFsaXplZFByb3BzID0gcHJvcHNPcHRpb25zWzBdKSAmJiBoYXNPd24obm9ybWFsaXplZFByb3BzLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICBoYXNPd24oY3R4LCBrZXkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihwdWJsaWNQcm9wZXJ0aWVzTWFwLCBrZXkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihhcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCBrZXkpKTtcclxuICAgIH0sXHJcbiAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcikge1xyXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmdldCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGludmFsaWRhdGUga2V5IGNhY2hlIG9mIGEgZ2V0dGVyIGJhc2VkIHByb3BlcnR5ICM1NDE3XHJcbiAgICAgICAgICAgIHRhcmdldC5fLmFjY2Vzc0NhY2hlW2tleV0gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChoYXNPd24oZGVzY3JpcHRvciwgJ3ZhbHVlJykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXQodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IudmFsdWUsIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcik7XHJcbiAgICB9XHJcbn07XHJcbmlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWZhbHNlKSB7XHJcbiAgICBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMub3duS2V5cyA9ICh0YXJnZXQpID0+IHtcclxuICAgICAgICB3YXJuKGBBdm9pZCBhcHAgbG9naWMgdGhhdCByZWxpZXMgb24gZW51bWVyYXRpbmcga2V5cyBvbiBhIGNvbXBvbmVudCBpbnN0YW5jZS4gYCArXHJcbiAgICAgICAgICAgIGBUaGUga2V5cyB3aWxsIGJlIGVtcHR5IGluIHByb2R1Y3Rpb24gbW9kZSB0byBhdm9pZCBwZXJmb3JtYW5jZSBvdmVyaGVhZC5gKTtcclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IFJ1bnRpbWVDb21waWxlZFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMsIHtcclxuICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIC8vIGZhc3QgcGF0aCBmb3IgdW5zY29wYWJsZXMgd2hlbiB1c2luZyBgd2l0aGAgYmxvY2tcclxuICAgICAgICBpZiAoa2V5ID09PSBTeW1ib2wudW5zY29wYWJsZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLmdldCh0YXJnZXQsIGtleSwgdGFyZ2V0KTtcclxuICAgIH0sXHJcbiAgICBoYXMoXywga2V5KSB7XHJcbiAgICAgICAgY29uc3QgaGFzID0ga2V5WzBdICE9PSAnXycgJiYgIWlzR2xvYmFsbHlXaGl0ZWxpc3RlZChrZXkpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWhhcyAmJiBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMuaGFzKF8sIGtleSkpIHtcclxuICAgICAgICAgICAgd2FybihgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSBzaG91bGQgbm90IHN0YXJ0IHdpdGggXyB3aGljaCBpcyBhIHJlc2VydmVkIHByZWZpeCBmb3IgVnVlIGludGVybmFscy5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhcztcclxuICAgIH1cclxufSk7XHJcbi8vIGRldiBvbmx5XHJcbi8vIEluIGRldiBtb2RlLCB0aGUgcHJveHkgdGFyZ2V0IGV4cG9zZXMgdGhlIHNhbWUgcHJvcGVydGllcyBhcyBzZWVuIG9uIGB0aGlzYFxyXG4vLyBmb3IgZWFzaWVyIGNvbnNvbGUgaW5zcGVjdGlvbi4gSW4gcHJvZCBtb2RlIGl0IHdpbGwgYmUgYW4gZW1wdHkgb2JqZWN0IHNvXHJcbi8vIHRoZXNlIHByb3BlcnRpZXMgZGVmaW5pdGlvbnMgY2FuIGJlIHNraXBwZWQuXHJcbmZ1bmN0aW9uIGNyZWF0ZURldlJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHt9O1xyXG4gICAgLy8gZXhwb3NlIGludGVybmFsIGluc3RhbmNlIGZvciBwcm94eSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9gLCB7XHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGdldDogKCkgPT4gaW5zdGFuY2VcclxuICAgIH0pO1xyXG4gICAgLy8gZXhwb3NlIHB1YmxpYyBwcm9wZXJ0aWVzXHJcbiAgICBPYmplY3Qua2V5cyhwdWJsaWNQcm9wZXJ0aWVzTWFwKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGdldDogKCkgPT4gcHVibGljUHJvcGVydGllc01hcFtrZXldKGluc3RhbmNlKSxcclxuICAgICAgICAgICAgLy8gaW50ZXJjZXB0ZWQgYnkgdGhlIHByb3h5IHNvIG5vIG5lZWQgZm9yIGltcGxlbWVudGF0aW9uLFxyXG4gICAgICAgICAgICAvLyBidXQgbmVlZGVkIHRvIHByZXZlbnQgc2V0IGVycm9yc1xyXG4gICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRhcmdldDtcclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBleHBvc2VQcm9wc09uUmVuZGVyQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgeyBjdHgsIHByb3BzT3B0aW9uczogW3Byb3BzT3B0aW9uc10gfSA9IGluc3RhbmNlO1xyXG4gICAgaWYgKHByb3BzT3B0aW9ucykge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BzT3B0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGluc3RhbmNlLnByb3BzW2tleV0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gZXhwb3NlU2V0dXBTdGF0ZU9uUmVuZGVyQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgeyBjdHgsIHNldHVwU3RhdGUgfSA9IGluc3RhbmNlO1xyXG4gICAgT2JqZWN0LmtleXModG9SYXcoc2V0dXBTdGF0ZSkpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAoIXNldHVwU3RhdGUuX19pc1NjcmlwdFNldHVwKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJlZml4KGtleVswXSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwKCkgcmV0dXJuIHByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIFwiJFwiIG9yIFwiX1wiIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGB3aGljaCBhcmUgcmVzZXJ2ZWQgcHJlZml4ZXMgZm9yIFZ1ZSBpbnRlcm5hbHMuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBzZXR1cFN0YXRlW2tleV0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlRHVwbGljYXRlQ2hlY2tlcigpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAodHlwZSwga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhY2hlW2tleV0pIHtcclxuICAgICAgICAgICAgd2FybihgJHt0eXBlfSBwcm9wZXJ0eSBcIiR7a2V5fVwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiAke2NhY2hlW2tleV19LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2FjaGVba2V5XSA9IHR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5sZXQgc2hvdWxkQ2FjaGVBY2Nlc3MgPSB0cnVlO1xyXG5mdW5jdGlvbiBhcHBseU9wdGlvbnMoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSByZXNvbHZlTWVyZ2VkT3B0aW9ucyhpbnN0YW5jZSk7XHJcbiAgICBjb25zdCBwdWJsaWNUaGlzID0gaW5zdGFuY2UucHJveHk7XHJcbiAgICBjb25zdCBjdHggPSBpbnN0YW5jZS5jdHg7XHJcbiAgICAvLyBkbyBub3QgY2FjaGUgcHJvcGVydHkgYWNjZXNzIG9uIHB1YmxpYyBwcm94eSBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb25cclxuICAgIHNob3VsZENhY2hlQWNjZXNzID0gZmFsc2U7XHJcbiAgICAvLyBjYWxsIGJlZm9yZUNyZWF0ZSBmaXJzdCBiZWZvcmUgYWNjZXNzaW5nIG90aGVyIG9wdGlvbnMgc2luY2VcclxuICAgIC8vIHRoZSBob29rIG1heSBtdXRhdGUgcmVzb2x2ZWQgb3B0aW9ucyAoIzI3OTEpXHJcbiAgICBpZiAob3B0aW9ucy5iZWZvcmVDcmVhdGUpIHtcclxuICAgICAgICBjYWxsSG9vayhvcHRpb25zLmJlZm9yZUNyZWF0ZSwgaW5zdGFuY2UsIFwiYmNcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfQ1JFQVRFICovKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgXHJcbiAgICAvLyBzdGF0ZVxyXG4gICAgZGF0YTogZGF0YU9wdGlvbnMsIGNvbXB1dGVkOiBjb21wdXRlZE9wdGlvbnMsIG1ldGhvZHMsIHdhdGNoOiB3YXRjaE9wdGlvbnMsIHByb3ZpZGU6IHByb3ZpZGVPcHRpb25zLCBpbmplY3Q6IGluamVjdE9wdGlvbnMsIFxyXG4gICAgLy8gbGlmZWN5Y2xlXHJcbiAgICBjcmVhdGVkLCBiZWZvcmVNb3VudCwgbW91bnRlZCwgYmVmb3JlVXBkYXRlLCB1cGRhdGVkLCBhY3RpdmF0ZWQsIGRlYWN0aXZhdGVkLCBiZWZvcmVEZXN0cm95LCBiZWZvcmVVbm1vdW50LCBkZXN0cm95ZWQsIHVubW91bnRlZCwgcmVuZGVyLCByZW5kZXJUcmFja2VkLCByZW5kZXJUcmlnZ2VyZWQsIGVycm9yQ2FwdHVyZWQsIHNlcnZlclByZWZldGNoLCBcclxuICAgIC8vIHB1YmxpYyBBUElcclxuICAgIGV4cG9zZSwgaW5oZXJpdEF0dHJzLCBcclxuICAgIC8vIGFzc2V0c1xyXG4gICAgY29tcG9uZW50cywgZGlyZWN0aXZlcywgZmlsdGVycyB9ID0gb3B0aW9ucztcclxuICAgIGNvbnN0IGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIoKSA6IG51bGw7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgW3Byb3BzT3B0aW9uc10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICAgICAgaWYgKHByb3BzT3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIlByb3BzXCIgLyogT3B0aW9uVHlwZXMuUFJPUFMgKi8sIGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb25zIGluaXRpYWxpemF0aW9uIG9yZGVyICh0byBiZSBjb25zaXN0ZW50IHdpdGggVnVlIDIpOlxyXG4gICAgLy8gLSBwcm9wcyAoYWxyZWFkeSBkb25lIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbilcclxuICAgIC8vIC0gaW5qZWN0XHJcbiAgICAvLyAtIG1ldGhvZHNcclxuICAgIC8vIC0gZGF0YSAoZGVmZXJyZWQgc2luY2UgaXQgcmVsaWVzIG9uIGB0aGlzYCBhY2Nlc3MpXHJcbiAgICAvLyAtIGNvbXB1dGVkXHJcbiAgICAvLyAtIHdhdGNoIChkZWZlcnJlZCBzaW5jZSBpdCByZWxpZXMgb24gYHRoaXNgIGFjY2VzcylcclxuICAgIGlmIChpbmplY3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmVzb2x2ZUluamVjdGlvbnMoaW5qZWN0T3B0aW9ucywgY3R4LCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMsIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnVud3JhcEluamVjdGVkUmVmKTtcclxuICAgIH1cclxuICAgIGlmIChtZXRob2RzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWV0aG9kcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2RIYW5kbGVyID0gbWV0aG9kc1trZXldO1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihtZXRob2RIYW5kbGVyKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW4gZGV2IG1vZGUsIHdlIHVzZSB0aGUgYGNyZWF0ZVJlbmRlckNvbnRleHRgIGZ1bmN0aW9uIHRvIGRlZmluZVxyXG4gICAgICAgICAgICAgICAgLy8gbWV0aG9kcyB0byB0aGUgcHJveHkgdGFyZ2V0LCBhbmQgdGhvc2UgYXJlIHJlYWQtb25seSBidXRcclxuICAgICAgICAgICAgICAgIC8vIHJlY29uZmlndXJhYmxlLCBzbyBpdCBuZWVkcyB0byBiZSByZWRlZmluZWQgaGVyZVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWV0aG9kSGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHhba2V5XSA9IG1ldGhvZEhhbmRsZXIuYmluZChwdWJsaWNUaGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJNZXRob2RzXCIgLyogT3B0aW9uVHlwZXMuTUVUSE9EUyAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYE1ldGhvZCBcIiR7a2V5fVwiIGhhcyB0eXBlIFwiJHt0eXBlb2YgbWV0aG9kSGFuZGxlcn1cIiBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P2ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGRhdGFPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNGdW5jdGlvbihkYXRhT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgd2FybihgVGhlIGRhdGEgb3B0aW9uIG11c3QgYmUgYSBmdW5jdGlvbi4gYCArXHJcbiAgICAgICAgICAgICAgICBgUGxhaW4gb2JqZWN0IHVzYWdlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBkYXRhT3B0aW9ucy5jYWxsKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNQcm9taXNlKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGRhdGEoKSByZXR1cm5lZCBhIFByb21pc2UgLSBub3RlIGRhdGEoKSBjYW5ub3QgYmUgYXN5bmM7IElmIHlvdSBgICtcclxuICAgICAgICAgICAgICAgIGBpbnRlbmQgdG8gcGVyZm9ybSBkYXRhIGZldGNoaW5nIGJlZm9yZSBjb21wb25lbnQgcmVuZGVycywgdXNlIGAgK1xyXG4gICAgICAgICAgICAgICAgYGFzeW5jIHNldHVwKCkgKyA8U3VzcGVuc2U+LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBkYXRhKCkgc2hvdWxkIHJldHVybiBhbiBvYmplY3QuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5kYXRhID0gcmVhY3RpdmUoZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJEYXRhXCIgLyogT3B0aW9uVHlwZXMuREFUQSAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBleHBvc2UgZGF0YSBvbiBjdHggZHVyaW5nIGRldlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gZGF0YVtrZXldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHN0YXRlIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlIGF0IHRoaXMgcG9pbnQgLSBzdGFydCBjYWNoaW5nIGFjY2Vzc1xyXG4gICAgc2hvdWxkQ2FjaGVBY2Nlc3MgPSB0cnVlO1xyXG4gICAgaWYgKGNvbXB1dGVkT3B0aW9ucykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXB1dGVkT3B0aW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBvcHQgPSBjb21wdXRlZE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgY29uc3QgZ2V0ID0gaXNGdW5jdGlvbihvcHQpXHJcbiAgICAgICAgICAgICAgICA/IG9wdC5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICA6IGlzRnVuY3Rpb24ob3B0LmdldClcclxuICAgICAgICAgICAgICAgICAgICA/IG9wdC5nZXQuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgICAgIDogTk9PUDtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBnZXQgPT09IE5PT1ApIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYENvbXB1dGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaGFzIG5vIGdldHRlci5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzZXQgPSAhaXNGdW5jdGlvbihvcHQpICYmIGlzRnVuY3Rpb24ob3B0LnNldClcclxuICAgICAgICAgICAgICAgID8gb3B0LnNldC5iaW5kKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICA6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgID8gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBXcml0ZSBvcGVyYXRpb24gZmFpbGVkOiBjb21wdXRlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGlzIHJlYWRvbmx5LmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA6IE5PT1A7XHJcbiAgICAgICAgICAgIGNvbnN0IGMgPSBjb21wdXRlZCh7XHJcbiAgICAgICAgICAgICAgICBnZXQsXHJcbiAgICAgICAgICAgICAgICBzZXRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gYy52YWx1ZSxcclxuICAgICAgICAgICAgICAgIHNldDogdiA9PiAoYy52YWx1ZSA9IHYpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJDb21wdXRlZFwiIC8qIE9wdGlvblR5cGVzLkNPTVBVVEVEICovLCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHdhdGNoT3B0aW9ucykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHdhdGNoT3B0aW9ucykge1xyXG4gICAgICAgICAgICBjcmVhdGVXYXRjaGVyKHdhdGNoT3B0aW9uc1trZXldLCBjdHgsIHB1YmxpY1RoaXMsIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3ZpZGVPcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXMgPSBpc0Z1bmN0aW9uKHByb3ZpZGVPcHRpb25zKVxyXG4gICAgICAgICAgICA/IHByb3ZpZGVPcHRpb25zLmNhbGwocHVibGljVGhpcylcclxuICAgICAgICAgICAgOiBwcm92aWRlT3B0aW9ucztcclxuICAgICAgICBSZWZsZWN0Lm93bktleXMocHJvdmlkZXMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgcHJvdmlkZShrZXksIHByb3ZpZGVzW2tleV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGNyZWF0ZWQpIHtcclxuICAgICAgICBjYWxsSG9vayhjcmVhdGVkLCBpbnN0YW5jZSwgXCJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQ1JFQVRFRCAqLyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZWdpc3RlckxpZmVjeWNsZUhvb2socmVnaXN0ZXIsIGhvb2spIHtcclxuICAgICAgICBpZiAoaXNBcnJheShob29rKSkge1xyXG4gICAgICAgICAgICBob29rLmZvckVhY2goX2hvb2sgPT4gcmVnaXN0ZXIoX2hvb2suYmluZChwdWJsaWNUaGlzKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChob29rKSB7XHJcbiAgICAgICAgICAgIHJlZ2lzdGVyKGhvb2suYmluZChwdWJsaWNUaGlzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlTW91bnQsIGJlZm9yZU1vdW50KTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbk1vdW50ZWQsIG1vdW50ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlVXBkYXRlLCBiZWZvcmVVcGRhdGUpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uVXBkYXRlZCwgdXBkYXRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25BY3RpdmF0ZWQsIGFjdGl2YXRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25EZWFjdGl2YXRlZCwgZGVhY3RpdmF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uRXJyb3JDYXB0dXJlZCwgZXJyb3JDYXB0dXJlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25SZW5kZXJUcmFja2VkLCByZW5kZXJUcmFja2VkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblJlbmRlclRyaWdnZXJlZCwgcmVuZGVyVHJpZ2dlcmVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZVVubW91bnQsIGJlZm9yZVVubW91bnQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uVW5tb3VudGVkLCB1bm1vdW50ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uU2VydmVyUHJlZmV0Y2gsIHNlcnZlclByZWZldGNoKTtcclxuICAgIGlmIChpc0FycmF5KGV4cG9zZSkpIHtcclxuICAgICAgICBpZiAoZXhwb3NlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBleHBvc2VkID0gaW5zdGFuY2UuZXhwb3NlZCB8fCAoaW5zdGFuY2UuZXhwb3NlZCA9IHt9KTtcclxuICAgICAgICAgICAgZXhwb3NlLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvc2VkLCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHB1YmxpY1RoaXNba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQ6IHZhbCA9PiAocHVibGljVGhpc1trZXldID0gdmFsKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghaW5zdGFuY2UuZXhwb3NlZCkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5leHBvc2VkID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gb3B0aW9ucyB0aGF0IGFyZSBoYW5kbGVkIHdoZW4gY3JlYXRpbmcgdGhlIGluc3RhbmNlIGJ1dCBhbHNvIG5lZWQgdG8gYmVcclxuICAgIC8vIGFwcGxpZWQgZnJvbSBtaXhpbnNcclxuICAgIGlmIChyZW5kZXIgJiYgaW5zdGFuY2UucmVuZGVyID09PSBOT09QKSB7XHJcbiAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gcmVuZGVyO1xyXG4gICAgfVxyXG4gICAgaWYgKGluaGVyaXRBdHRycyAhPSBudWxsKSB7XHJcbiAgICAgICAgaW5zdGFuY2UuaW5oZXJpdEF0dHJzID0gaW5oZXJpdEF0dHJzO1xyXG4gICAgfVxyXG4gICAgLy8gYXNzZXQgb3B0aW9ucy5cclxuICAgIGlmIChjb21wb25lbnRzKVxyXG4gICAgICAgIGluc3RhbmNlLmNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xyXG4gICAgaWYgKGRpcmVjdGl2ZXMpXHJcbiAgICAgICAgaW5zdGFuY2UuZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXM7XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdGlvbnMoaW5qZWN0T3B0aW9ucywgY3R4LCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMgPSBOT09QLCB1bndyYXBSZWYgPSBmYWxzZSkge1xyXG4gICAgaWYgKGlzQXJyYXkoaW5qZWN0T3B0aW9ucykpIHtcclxuICAgICAgICBpbmplY3RPcHRpb25zID0gbm9ybWFsaXplSW5qZWN0KGluamVjdE9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0T3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IG9wdCA9IGluamVjdE9wdGlvbnNba2V5XTtcclxuICAgICAgICBsZXQgaW5qZWN0ZWQ7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KG9wdCkpIHtcclxuICAgICAgICAgICAgaWYgKCdkZWZhdWx0JyBpbiBvcHQpIHtcclxuICAgICAgICAgICAgICAgIGluamVjdGVkID0gaW5qZWN0KG9wdC5mcm9tIHx8IGtleSwgb3B0LmRlZmF1bHQsIHRydWUgLyogdHJlYXQgZGVmYXVsdCBmdW5jdGlvbiBhcyBmYWN0b3J5ICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGluamVjdGVkID0gaW5qZWN0KG9wdC5mcm9tIHx8IGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluamVjdGVkID0gaW5qZWN0KG9wdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1JlZihpbmplY3RlZCkpIHtcclxuICAgICAgICAgICAgLy8gVE9ETyByZW1vdmUgdGhlIGNoZWNrIGluIDMuM1xyXG4gICAgICAgICAgICBpZiAodW53cmFwUmVmKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGluamVjdGVkLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldDogdiA9PiAoaW5qZWN0ZWQudmFsdWUgPSB2KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgaW5qZWN0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBpcyBhIHJlZiBhbmQgd2lsbCBiZSBhdXRvLXVud3JhcHBlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCBubyBsb25nZXIgbmVlZHMgXFxgLnZhbHVlXFxgIGluIHRoZSBuZXh0IG1pbm9yIHJlbGVhc2UuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgVG8gb3B0LWluIHRvIHRoZSBuZXcgYmVoYXZpb3Igbm93LCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHNldCBcXGBhcHAuY29uZmlnLnVud3JhcEluamVjdGVkUmVmID0gdHJ1ZVxcYCAodGhpcyBjb25maWcgaXMgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB0ZW1wb3JhcnkgYW5kIHdpbGwgbm90IGJlIG5lZWRlZCBpbiB0aGUgZnV0dXJlLilgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN0eFtrZXldID0gaW5qZWN0ZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGN0eFtrZXldID0gaW5qZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiSW5qZWN0XCIgLyogT3B0aW9uVHlwZXMuSU5KRUNUICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjYWxsSG9vayhob29rLCBpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaXNBcnJheShob29rKVxyXG4gICAgICAgID8gaG9vay5tYXAoaCA9PiBoLmJpbmQoaW5zdGFuY2UucHJveHkpKVxyXG4gICAgICAgIDogaG9vay5iaW5kKGluc3RhbmNlLnByb3h5KSwgaW5zdGFuY2UsIHR5cGUpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIocmF3LCBjdHgsIHB1YmxpY1RoaXMsIGtleSkge1xyXG4gICAgY29uc3QgZ2V0dGVyID0ga2V5LmluY2x1ZGVzKCcuJylcclxuICAgICAgICA/IGNyZWF0ZVBhdGhHZXR0ZXIocHVibGljVGhpcywga2V5KVxyXG4gICAgICAgIDogKCkgPT4gcHVibGljVGhpc1trZXldO1xyXG4gICAgaWYgKGlzU3RyaW5nKHJhdykpIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gY3R4W3Jhd107XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcclxuICAgICAgICAgICAgd2F0Y2goZ2V0dGVyLCBoYW5kbGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggaGFuZGxlciBzcGVjaWZpZWQgYnkga2V5IFwiJHtyYXd9XCJgLCBoYW5kbGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHJhdykpIHtcclxuICAgICAgICB3YXRjaChnZXR0ZXIsIHJhdy5iaW5kKHB1YmxpY1RoaXMpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHJhdykpIHtcclxuICAgICAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgICAgIHJhdy5mb3JFYWNoKHIgPT4gY3JlYXRlV2F0Y2hlcihyLCBjdHgsIHB1YmxpY1RoaXMsIGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IGlzRnVuY3Rpb24ocmF3LmhhbmRsZXIpXHJcbiAgICAgICAgICAgICAgICA/IHJhdy5oYW5kbGVyLmJpbmQocHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgIDogY3R4W3Jhdy5oYW5kbGVyXTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcclxuICAgICAgICAgICAgICAgIHdhdGNoKGdldHRlciwgaGFuZGxlciwgcmF3KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggaGFuZGxlciBzcGVjaWZpZWQgYnkga2V5IFwiJHtyYXcuaGFuZGxlcn1cImAsIGhhbmRsZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBvcHRpb246IFwiJHtrZXl9XCJgLCByYXcpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBSZXNvbHZlIG1lcmdlZCBvcHRpb25zIGFuZCBjYWNoZSBpdCBvbiB0aGUgY29tcG9uZW50LlxyXG4gKiBUaGlzIGlzIGRvbmUgb25seSBvbmNlIHBlci1jb21wb25lbnQgc2luY2UgdGhlIG1lcmdpbmcgZG9lcyBub3QgaW52b2x2ZVxyXG4gKiBpbnN0YW5jZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlTWVyZ2VkT3B0aW9ucyhpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgYmFzZSA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICBjb25zdCB7IG1peGlucywgZXh0ZW5kczogZXh0ZW5kc09wdGlvbnMgfSA9IGJhc2U7XHJcbiAgICBjb25zdCB7IG1peGluczogZ2xvYmFsTWl4aW5zLCBvcHRpb25zQ2FjaGU6IGNhY2hlLCBjb25maWc6IHsgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzIH0gfSA9IGluc3RhbmNlLmFwcENvbnRleHQ7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoYmFzZSk7XHJcbiAgICBsZXQgcmVzb2x2ZWQ7XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmVzb2x2ZWQgPSBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZ2xvYmFsTWl4aW5zLmxlbmd0aCAmJiAhbWl4aW5zICYmICFleHRlbmRzT3B0aW9ucykge1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmVzb2x2ZWQgPSBiYXNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmVkID0ge307XHJcbiAgICAgICAgaWYgKGdsb2JhbE1peGlucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZ2xvYmFsTWl4aW5zLmZvckVhY2gobSA9PiBtZXJnZU9wdGlvbnMocmVzb2x2ZWQsIG0sIG9wdGlvbk1lcmdlU3RyYXRlZ2llcywgdHJ1ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXJnZU9wdGlvbnMocmVzb2x2ZWQsIGJhc2UsIG9wdGlvbk1lcmdlU3RyYXRlZ2llcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNPYmplY3QoYmFzZSkpIHtcclxuICAgICAgICBjYWNoZS5zZXQoYmFzZSwgcmVzb2x2ZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc29sdmVkO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyh0bywgZnJvbSwgc3RyYXRzLCBhc01peGluID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgbWl4aW5zLCBleHRlbmRzOiBleHRlbmRzT3B0aW9ucyB9ID0gZnJvbTtcclxuICAgIGlmIChleHRlbmRzT3B0aW9ucykge1xyXG4gICAgICAgIG1lcmdlT3B0aW9ucyh0bywgZXh0ZW5kc09wdGlvbnMsIHN0cmF0cywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAobWl4aW5zKSB7XHJcbiAgICAgICAgbWl4aW5zLmZvckVhY2goKG0pID0+IG1lcmdlT3B0aW9ucyh0bywgbSwgc3RyYXRzLCB0cnVlKSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmcm9tKSB7XHJcbiAgICAgICAgaWYgKGFzTWl4aW4gJiYga2V5ID09PSAnZXhwb3NlJykge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYFwiZXhwb3NlXCIgb3B0aW9uIGlzIGlnbm9yZWQgd2hlbiBkZWNsYXJlZCBpbiBtaXhpbnMgb3IgZXh0ZW5kcy4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYEl0IHNob3VsZCBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBiYXNlIGNvbXBvbmVudCBpdHNlbGYuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJhdCA9IGludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHNba2V5XSB8fCAoc3RyYXRzICYmIHN0cmF0c1trZXldKTtcclxuICAgICAgICAgICAgdG9ba2V5XSA9IHN0cmF0ID8gc3RyYXQodG9ba2V5XSwgZnJvbVtrZXldKSA6IGZyb21ba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbn1cclxuY29uc3QgaW50ZXJuYWxPcHRpb25NZXJnZVN0cmF0cyA9IHtcclxuICAgIGRhdGE6IG1lcmdlRGF0YUZuLFxyXG4gICAgcHJvcHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIGVtaXRzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICAvLyBvYmplY3RzXHJcbiAgICBtZXRob2RzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICBjb21wdXRlZDogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gbGlmZWN5Y2xlXHJcbiAgICBiZWZvcmVDcmVhdGU6IG1lcmdlQXNBcnJheSxcclxuICAgIGNyZWF0ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGJlZm9yZU1vdW50OiBtZXJnZUFzQXJyYXksXHJcbiAgICBtb3VudGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVVcGRhdGU6IG1lcmdlQXNBcnJheSxcclxuICAgIHVwZGF0ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGJlZm9yZURlc3Ryb3k6IG1lcmdlQXNBcnJheSxcclxuICAgIGJlZm9yZVVubW91bnQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGRlc3Ryb3llZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgdW5tb3VudGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBhY3RpdmF0ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGRlYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBlcnJvckNhcHR1cmVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBzZXJ2ZXJQcmVmZXRjaDogbWVyZ2VBc0FycmF5LFxyXG4gICAgLy8gYXNzZXRzXHJcbiAgICBjb21wb25lbnRzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICBkaXJlY3RpdmVzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICAvLyB3YXRjaFxyXG4gICAgd2F0Y2g6IG1lcmdlV2F0Y2hPcHRpb25zLFxyXG4gICAgLy8gcHJvdmlkZSAvIGluamVjdFxyXG4gICAgcHJvdmlkZTogbWVyZ2VEYXRhRm4sXHJcbiAgICBpbmplY3Q6IG1lcmdlSW5qZWN0XHJcbn07XHJcbmZ1bmN0aW9uIG1lcmdlRGF0YUZuKHRvLCBmcm9tKSB7XHJcbiAgICBpZiAoIWZyb20pIHtcclxuICAgICAgICByZXR1cm4gdG87XHJcbiAgICB9XHJcbiAgICBpZiAoIXRvKSB7XHJcbiAgICAgICAgcmV0dXJuIGZyb207XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuKCkge1xyXG4gICAgICAgIHJldHVybiAoZXh0ZW5kKShpc0Z1bmN0aW9uKHRvKSA/IHRvLmNhbGwodGhpcywgdGhpcykgOiB0bywgaXNGdW5jdGlvbihmcm9tKSA/IGZyb20uY2FsbCh0aGlzLCB0aGlzKSA6IGZyb20pO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZUluamVjdCh0bywgZnJvbSkge1xyXG4gICAgcmV0dXJuIG1lcmdlT2JqZWN0T3B0aW9ucyhub3JtYWxpemVJbmplY3QodG8pLCBub3JtYWxpemVJbmplY3QoZnJvbSkpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdChyYXcpIHtcclxuICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICBjb25zdCByZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXNbcmF3W2ldXSA9IHJhd1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIHJldHVybiByYXc7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VBc0FycmF5KHRvLCBmcm9tKSB7XHJcbiAgICByZXR1cm4gdG8gPyBbLi4ubmV3IFNldChbXS5jb25jYXQodG8sIGZyb20pKV0gOiBmcm9tO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlT2JqZWN0T3B0aW9ucyh0bywgZnJvbSkge1xyXG4gICAgcmV0dXJuIHRvID8gZXh0ZW5kKGV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB0byksIGZyb20pIDogZnJvbTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZVdhdGNoT3B0aW9ucyh0bywgZnJvbSkge1xyXG4gICAgaWYgKCF0bylcclxuICAgICAgICByZXR1cm4gZnJvbTtcclxuICAgIGlmICghZnJvbSlcclxuICAgICAgICByZXR1cm4gdG87XHJcbiAgICBjb25zdCBtZXJnZWQgPSBleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwgdG8pO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbSkge1xyXG4gICAgICAgIG1lcmdlZFtrZXldID0gbWVyZ2VBc0FycmF5KHRvW2tleV0sIGZyb21ba2V5XSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVyZ2VkO1xyXG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIGlzU3RhdGVmdWwsIC8vIHJlc3VsdCBvZiBiaXR3aXNlIGZsYWcgY29tcGFyaXNvblxyXG5pc1NTUiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IHt9O1xyXG4gICAgY29uc3QgYXR0cnMgPSB7fTtcclxuICAgIGRlZihhdHRycywgSW50ZXJuYWxPYmplY3RLZXksIDEpO1xyXG4gICAgaW5zdGFuY2UucHJvcHNEZWZhdWx0cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpO1xyXG4gICAgLy8gZW5zdXJlIGFsbCBkZWNsYXJlZCBwcm9wIGtleXMgYXJlIHByZXNlbnRcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluc3RhbmNlLnByb3BzT3B0aW9uc1swXSkge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBwcm9wcykpIHtcclxuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB2YWxpZGF0aW9uXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgdmFsaWRhdGVQcm9wcyhyYXdQcm9wcyB8fCB7fSwgcHJvcHMsIGluc3RhbmNlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1N0YXRlZnVsKSB7XHJcbiAgICAgICAgLy8gc3RhdGVmdWxcclxuICAgICAgICBpbnN0YW5jZS5wcm9wcyA9IGlzU1NSID8gcHJvcHMgOiBzaGFsbG93UmVhY3RpdmUocHJvcHMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZS50eXBlLnByb3BzKSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWwgdy8gb3B0aW9uYWwgcHJvcHMsIHByb3BzID09PSBhdHRyc1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wcyA9IGF0dHJzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb25hbCB3LyBkZWNsYXJlZCBwcm9wc1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wcyA9IHByb3BzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGluc3RhbmNlLmF0dHJzID0gYXR0cnM7XHJcbn1cclxuZnVuY3Rpb24gaXNJbkhtckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIHdoaWxlIChpbnN0YW5jZSkge1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLl9faG1ySWQpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGluc3RhbmNlID0gaW5zdGFuY2UucGFyZW50O1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZVByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcmF3UHJldlByb3BzLCBvcHRpbWl6ZWQpIHtcclxuICAgIGNvbnN0IHsgcHJvcHMsIGF0dHJzLCB2bm9kZTogeyBwYXRjaEZsYWcgfSB9ID0gaW5zdGFuY2U7XHJcbiAgICBjb25zdCByYXdDdXJyZW50UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICBjb25zdCBbb3B0aW9uc10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICBsZXQgaGFzQXR0cnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAvLyBhbHdheXMgZm9yY2UgZnVsbCBkaWZmIGluIGRldlxyXG4gICAgLy8gLSAjMTk0MiBpZiBobXIgaXMgZW5hYmxlZCB3aXRoIHNmYyBjb21wb25lbnRcclxuICAgIC8vIC0gdml0ZSM4NzIgbm9uLXNmYyBjb21wb25lbnQgdXNlZCBieSBzZmMgY29tcG9uZW50XHJcbiAgICAhKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0luSG1yQ29udGV4dChpbnN0YW5jZSkpICYmXHJcbiAgICAgICAgKG9wdGltaXplZCB8fCBwYXRjaEZsYWcgPiAwKSAmJlxyXG4gICAgICAgICEocGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovKSkge1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgLy8gQ29tcGlsZXItZ2VuZXJhdGVkIHByb3BzICYgbm8ga2V5cyBjaGFuZ2UsIGp1c3Qgc2V0IHRoZSB1cGRhdGVkXHJcbiAgICAgICAgICAgIC8vIHRoZSBwcm9wcy5cclxuICAgICAgICAgICAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IGluc3RhbmNlLnZub2RlLmR5bmFtaWNQcm9wcztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvVXBkYXRlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gcHJvcHNUb1VwZGF0ZVtpXTtcclxuICAgICAgICAgICAgICAgIC8vIHNraXAgaWYgdGhlIHByb3Aga2V5IGlzIGEgZGVjbGFyZWQgZW1pdCBldmVudCBsaXN0ZW5lclxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRW1pdExpc3RlbmVyKGluc3RhbmNlLmVtaXRzT3B0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gUFJPUFMgZmxhZyBndWFyYW50ZWVzIHJhd1Byb3BzIHRvIGJlIG5vbi1udWxsXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGF0dHIgLyBwcm9wcyBzZXBhcmF0aW9uIHdhcyBkb25lIG9uIGluaXQgYW5kIHdpbGwgYmUgY29uc2lzdGVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY29kZSBwYXRoLCBzbyBqdXN0IGNoZWNrIGlmIGF0dHJzIGhhdmUgaXQuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihhdHRycywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbWVsaXplZEtleSA9IGNhbWVsaXplKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzW2NhbWVsaXplZEtleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywgY2FtZWxpemVkS2V5LCB2YWx1ZSwgaW5zdGFuY2UsIGZhbHNlIC8qIGlzQWJzZW50ICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGZ1bGwgcHJvcHMgdXBkYXRlLlxyXG4gICAgICAgIGlmIChzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpKSB7XHJcbiAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluIGNhc2Ugb2YgZHluYW1pYyBwcm9wcywgY2hlY2sgaWYgd2UgbmVlZCB0byBkZWxldGUga2V5cyBmcm9tXHJcbiAgICAgICAgLy8gdGhlIHByb3BzIG9iamVjdFxyXG4gICAgICAgIGxldCBrZWJhYktleTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdDdXJyZW50UHJvcHMpIHtcclxuICAgICAgICAgICAgaWYgKCFyYXdQcm9wcyB8fFxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGNhbWVsQ2FzZVxyXG4gICAgICAgICAgICAgICAgKCFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoZSBvcmlnaW5hbCBwcm9wcyB3YXMgcGFzc2VkIGluIGFzIGtlYmFiLWNhc2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgY29udmVydGVkIHRvIGNhbWVsQ2FzZSAoIzk1NSlcclxuICAgICAgICAgICAgICAgICAgICAoKGtlYmFiS2V5ID0gaHlwaGVuYXRlKGtleSkpID09PSBrZXkgfHwgIWhhc093bihyYXdQcm9wcywga2ViYWJLZXkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1ByZXZQcm9wcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgY2FtZWxDYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyYXdQcmV2UHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Iga2ViYWItY2FzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3UHJldlByb3BzW2tlYmFiS2V5XSAhPT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGtleSwgdW5kZWZpbmVkLCBpbnN0YW5jZSwgdHJ1ZSAvKiBpc0Fic2VudCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgZnVuY3Rpb25hbCBjb21wb25lbnQgdy9vIHByb3BzIGRlY2xhcmF0aW9uLCBwcm9wcyBhbmRcclxuICAgICAgICAvLyBhdHRycyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3Qgc28gaXQgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0ZWQuXHJcbiAgICAgICAgaWYgKGF0dHJzICE9PSByYXdDdXJyZW50UHJvcHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmF3UHJvcHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAoIWhhc093bihyYXdQcm9wcywga2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIWZhbHNlICkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGF0dHJzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRyaWdnZXIgdXBkYXRlcyBmb3IgJGF0dHJzIGluIGNhc2UgaXQncyB1c2VkIGluIGNvbXBvbmVudCBzbG90c1xyXG4gICAgaWYgKGhhc0F0dHJzQ2hhbmdlZCkge1xyXG4gICAgICAgIHRyaWdnZXIoaW5zdGFuY2UsIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgdmFsaWRhdGVQcm9wcyhyYXdQcm9wcyB8fCB7fSwgcHJvcHMsIGluc3RhbmNlKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpIHtcclxuICAgIGNvbnN0IFtvcHRpb25zLCBuZWVkQ2FzdEtleXNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgbGV0IGhhc0F0dHJzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgbGV0IHJhd0Nhc3RWYWx1ZXM7XHJcbiAgICBpZiAocmF3UHJvcHMpIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gcmF3UHJvcHMpIHtcclxuICAgICAgICAgICAgLy8ga2V5LCByZWYgYXJlIHJlc2VydmVkIGFuZCBuZXZlciBwYXNzZWQgZG93blxyXG4gICAgICAgICAgICBpZiAoaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAvLyBwcm9wIG9wdGlvbiBuYW1lcyBhcmUgY2FtZWxpemVkIGR1cmluZyBub3JtYWxpemF0aW9uLCBzbyB0byBzdXBwb3J0XHJcbiAgICAgICAgICAgIC8vIGtlYmFiIC0+IGNhbWVsIGNvbnZlcnNpb24gaGVyZSB3ZSBuZWVkIHRvIGNhbWVsaXplIHRoZSBrZXkuXHJcbiAgICAgICAgICAgIGxldCBjYW1lbEtleTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsIChjYW1lbEtleSA9IGNhbWVsaXplKGtleSkpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuZWVkQ2FzdEtleXMgfHwgIW5lZWRDYXN0S2V5cy5pbmNsdWRlcyhjYW1lbEtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc1tjYW1lbEtleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChyYXdDYXN0VmFsdWVzIHx8IChyYXdDYXN0VmFsdWVzID0ge30pKVtjYW1lbEtleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNFbWl0TGlzdGVuZXIoaW5zdGFuY2UuZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gYXR0cnMpIHx8IHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobmVlZENhc3RLZXlzKSB7XHJcbiAgICAgICAgY29uc3QgcmF3Q3VycmVudFByb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgIGNvbnN0IGNhc3RWYWx1ZXMgPSByYXdDYXN0VmFsdWVzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRDYXN0S2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBuZWVkQ2FzdEtleXNbaV07XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywga2V5LCBjYXN0VmFsdWVzW2tleV0sIGluc3RhbmNlLCAhaGFzT3duKGNhc3RWYWx1ZXMsIGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBoYXNBdHRyc0NoYW5nZWQ7XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCBwcm9wcywga2V5LCB2YWx1ZSwgaW5zdGFuY2UsIGlzQWJzZW50KSB7XHJcbiAgICBjb25zdCBvcHQgPSBvcHRpb25zW2tleV07XHJcbiAgICBpZiAob3B0ICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBoYXNEZWZhdWx0ID0gaGFzT3duKG9wdCwgJ2RlZmF1bHQnKTtcclxuICAgICAgICAvLyBkZWZhdWx0IHZhbHVlc1xyXG4gICAgICAgIGlmIChoYXNEZWZhdWx0ICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gb3B0LmRlZmF1bHQ7XHJcbiAgICAgICAgICAgIGlmIChvcHQudHlwZSAhPT0gRnVuY3Rpb24gJiYgaXNGdW5jdGlvbihkZWZhdWx0VmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzRGVmYXVsdHMgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSBpbiBwcm9wc0RlZmF1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcm9wc0RlZmF1bHRzW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcHNEZWZhdWx0c1trZXldID0gZGVmYXVsdFZhbHVlLmNhbGwobnVsbCwgcHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBib29sZWFuIGNhc3RpbmdcclxuICAgICAgICBpZiAob3B0WzAgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3QgKi9dKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0Fic2VudCAmJiAhaGFzRGVmYXVsdCkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChvcHRbMSAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdFRydWUgKi9dICYmXHJcbiAgICAgICAgICAgICAgICAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wc09wdGlvbnMoY29tcCwgYXBwQ29udGV4dCwgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IGFwcENvbnRleHQucHJvcHNDYWNoZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChjb21wKTtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3ID0gY29tcC5wcm9wcztcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTtcclxuICAgIGNvbnN0IG5lZWRDYXN0S2V5cyA9IFtdO1xyXG4gICAgLy8gYXBwbHkgbWl4aW4vZXh0ZW5kcyBwcm9wc1xyXG4gICAgbGV0IGhhc0V4dGVuZHMgPSBmYWxzZTtcclxuICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fICYmICFpc0Z1bmN0aW9uKGNvbXApKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5kUHJvcHMgPSAocmF3KSA9PiB7XHJcbiAgICAgICAgICAgIGhhc0V4dGVuZHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBbcHJvcHMsIGtleXNdID0gbm9ybWFsaXplUHJvcHNPcHRpb25zKHJhdywgYXBwQ29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGV4dGVuZChub3JtYWxpemVkLCBwcm9wcyk7XHJcbiAgICAgICAgICAgIGlmIChrZXlzKVxyXG4gICAgICAgICAgICAgICAgbmVlZENhc3RLZXlzLnB1c2goLi4ua2V5cyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWFzTWl4aW4gJiYgYXBwQ29udGV4dC5taXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGFwcENvbnRleHQubWl4aW5zLmZvckVhY2goZXh0ZW5kUHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5leHRlbmRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVuZFByb3BzKGNvbXAuZXh0ZW5kcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLm1peGlucykge1xyXG4gICAgICAgICAgICBjb21wLm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXJhdyAmJiAhaGFzRXh0ZW5kcykge1xyXG4gICAgICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgICAgICBjYWNoZS5zZXQoY29tcCwgRU1QVFlfQVJSKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEVNUFRZX0FSUjtcclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1N0cmluZyhyYXdbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBwcm9wcyBtdXN0IGJlIHN0cmluZ3Mgd2hlbiB1c2luZyBhcnJheSBzeW50YXguYCwgcmF3W2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gY2FtZWxpemUocmF3W2ldKTtcclxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlUHJvcE5hbWUobm9ybWFsaXplZEtleSkpIHtcclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPSBFTVBUWV9PQko7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyYXcpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc09iamVjdChyYXcpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGludmFsaWQgcHJvcHMgb3B0aW9uc2AsIHJhdyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJhdykge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gY2FtZWxpemUoa2V5KTtcclxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlUHJvcE5hbWUobm9ybWFsaXplZEtleSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdCA9IHJhd1trZXldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IChub3JtYWxpemVkW25vcm1hbGl6ZWRLZXldID1cclxuICAgICAgICAgICAgICAgICAgICBpc0FycmF5KG9wdCkgfHwgaXNGdW5jdGlvbihvcHQpID8geyB0eXBlOiBvcHQgfSA6IG9wdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2xlYW5JbmRleCA9IGdldFR5cGVJbmRleChCb29sZWFuLCBwcm9wLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ0luZGV4ID0gZ2V0VHlwZUluZGV4KFN0cmluZywgcHJvcC50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wWzAgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3QgKi9dID0gYm9vbGVhbkluZGV4ID4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcFsxIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0VHJ1ZSAqL10gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdJbmRleCA8IDAgfHwgYm9vbGVhbkluZGV4IDwgc3RyaW5nSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHByb3AgbmVlZHMgYm9vbGVhbiBjYXN0aW5nIG9yIGRlZmF1bHQgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vbGVhbkluZGV4ID4gLTEgfHwgaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZENhc3RLZXlzLnB1c2gobm9ybWFsaXplZEtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzID0gW25vcm1hbGl6ZWQsIG5lZWRDYXN0S2V5c107XHJcbiAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICBjYWNoZS5zZXQoY29tcCwgcmVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wTmFtZShrZXkpIHtcclxuICAgIGlmIChrZXlbMF0gIT09ICckJykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgSW52YWxpZCBwcm9wIG5hbWU6IFwiJHtrZXl9XCIgaXMgYSByZXNlcnZlZCBwcm9wZXJ0eS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG4vLyB1c2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgdHlwZSBjb25zdHJ1Y3RvcnNcclxuLy8gc28gdGhhdCBpdCB3b3JrcyBhY3Jvc3Mgdm1zIC8gaWZyYW1lcy5cclxuZnVuY3Rpb24gZ2V0VHlwZShjdG9yKSB7XHJcbiAgICBjb25zdCBtYXRjaCA9IGN0b3IgJiYgY3Rvci50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xyXG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBjdG9yID09PSBudWxsID8gJ251bGwnIDogJyc7XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lVHlwZShhLCBiKSB7XHJcbiAgICByZXR1cm4gZ2V0VHlwZShhKSA9PT0gZ2V0VHlwZShiKTtcclxufVxyXG5mdW5jdGlvbiBnZXRUeXBlSW5kZXgodHlwZSwgZXhwZWN0ZWRUeXBlcykge1xyXG4gICAgaWYgKGlzQXJyYXkoZXhwZWN0ZWRUeXBlcykpIHtcclxuICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlcy5maW5kSW5kZXgodCA9PiBpc1NhbWVUeXBlKHQsIHR5cGUpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oZXhwZWN0ZWRUeXBlcykpIHtcclxuICAgICAgICByZXR1cm4gaXNTYW1lVHlwZShleHBlY3RlZFR5cGVzLCB0eXBlKSA/IDAgOiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMsIHByb3BzLCBpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcmVzb2x2ZWRWYWx1ZXMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xyXG4gICAgICAgIGxldCBvcHQgPSBvcHRpb25zW2tleV07XHJcbiAgICAgICAgaWYgKG9wdCA9PSBudWxsKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB2YWxpZGF0ZVByb3Aoa2V5LCByZXNvbHZlZFZhbHVlc1trZXldLCBvcHQsICFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiYgIWhhc093bihyYXdQcm9wcywgaHlwaGVuYXRlKGtleSkpKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcChuYW1lLCB2YWx1ZSwgcHJvcCwgaXNBYnNlbnQpIHtcclxuICAgIGNvbnN0IHsgdHlwZSwgcmVxdWlyZWQsIHZhbGlkYXRvciB9ID0gcHJvcDtcclxuICAgIC8vIHJlcXVpcmVkIVxyXG4gICAgaWYgKHJlcXVpcmVkICYmIGlzQWJzZW50KSB7XHJcbiAgICAgICAgd2FybignTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gbWlzc2luZyBidXQgb3B0aW9uYWxcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdHlwZSBjaGVja1xyXG4gICAgaWYgKHR5cGUgIT0gbnVsbCAmJiB0eXBlICE9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCB0eXBlcyA9IGlzQXJyYXkodHlwZSkgPyB0eXBlIDogW3R5cGVdO1xyXG4gICAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZXMgPSBbXTtcclxuICAgICAgICAvLyB2YWx1ZSBpcyB2YWxpZCBhcyBsb25nIGFzIG9uZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGVzIG1hdGNoXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGggJiYgIWlzVmFsaWQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHZhbGlkLCBleHBlY3RlZFR5cGUgfSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVzW2ldKTtcclxuICAgICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGV4cGVjdGVkVHlwZSB8fCAnJyk7XHJcbiAgICAgICAgICAgIGlzVmFsaWQgPSB2YWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oZ2V0SW52YWxpZFR5cGVNZXNzYWdlKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjdXN0b20gdmFsaWRhdG9yXHJcbiAgICBpZiAodmFsaWRhdG9yICYmICF2YWxpZGF0b3IodmFsdWUpKSB7XHJcbiAgICAgICAgd2FybignSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGlzU2ltcGxlVHlwZSA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnU3RyaW5nLE51bWJlcixCb29sZWFuLEZ1bmN0aW9uLFN5bWJvbCxCaWdJbnQnKTtcclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBsZXQgdmFsaWQ7XHJcbiAgICBjb25zdCBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xyXG4gICAgaWYgKGlzU2ltcGxlVHlwZShleHBlY3RlZFR5cGUpKSB7XHJcbiAgICAgICAgY29uc3QgdCA9IHR5cGVvZiB2YWx1ZTtcclxuICAgICAgICB2YWxpZCA9IHQgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIC8vIGZvciBwcmltaXRpdmUgd3JhcHBlciBvYmplY3RzXHJcbiAgICAgICAgaWYgKCF2YWxpZCAmJiB0ID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XHJcbiAgICAgICAgdmFsaWQgPSBpc09iamVjdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdBcnJheScpIHtcclxuICAgICAgICB2YWxpZCA9IGlzQXJyYXkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnbnVsbCcpIHtcclxuICAgICAgICB2YWxpZCA9IHZhbHVlID09PSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHZhbGlkLFxyXG4gICAgICAgIGV4cGVjdGVkVHlwZVxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykge1xyXG4gICAgbGV0IG1lc3NhZ2UgPSBgSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIiR7bmFtZX1cIi5gICtcclxuICAgICAgICBgIEV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbignIHwgJyl9YDtcclxuICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XHJcbiAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB0b1Jhd1R5cGUodmFsdWUpO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIGV4cGVjdGVkVHlwZSk7XHJcbiAgICBjb25zdCByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcclxuICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSBleHBlY3RlZCB2YWx1ZVxyXG4gICAgaWYgKGV4cGVjdGVkVHlwZXMubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgaXNFeHBsaWNhYmxlKGV4cGVjdGVkVHlwZSkgJiZcclxuICAgICAgICAhaXNCb29sZWFuKGV4cGVjdGVkVHlwZSwgcmVjZWl2ZWRUeXBlKSkge1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gYCB3aXRoIHZhbHVlICR7ZXhwZWN0ZWRWYWx1ZX1gO1xyXG4gICAgfVxyXG4gICAgbWVzc2FnZSArPSBgLCBnb3QgJHtyZWNlaXZlZFR5cGV9IGA7XHJcbiAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgcmVjZWl2ZWQgdmFsdWVcclxuICAgIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gYHdpdGggdmFsdWUgJHtyZWNlaXZlZFZhbHVlfS5gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lc3NhZ2U7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBzdHlsZVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ1N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gYFwiJHt2YWx1ZX1cImA7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlID09PSAnTnVtYmVyJykge1xyXG4gICAgICAgIHJldHVybiBgJHtOdW1iZXIodmFsdWUpfWA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGlzRXhwbGljYWJsZSh0eXBlKSB7XHJcbiAgICBjb25zdCBleHBsaWNpdFR5cGVzID0gWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nXTtcclxuICAgIHJldHVybiBleHBsaWNpdFR5cGVzLnNvbWUoZWxlbSA9PiB0eXBlLnRvTG93ZXJDYXNlKCkgPT09IGVsZW0pO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gaXNCb29sZWFuKC4uLmFyZ3MpIHtcclxuICAgIHJldHVybiBhcmdzLnNvbWUoZWxlbSA9PiBlbGVtLnRvTG93ZXJDYXNlKCkgPT09ICdib29sZWFuJyk7XHJcbn1cblxuY29uc3QgaXNJbnRlcm5hbEtleSA9IChrZXkpID0+IGtleVswXSA9PT0gJ18nIHx8IGtleSA9PT0gJyRzdGFibGUnO1xyXG5jb25zdCBub3JtYWxpemVTbG90VmFsdWUgPSAodmFsdWUpID0+IGlzQXJyYXkodmFsdWUpXHJcbiAgICA/IHZhbHVlLm1hcChub3JtYWxpemVWTm9kZSlcclxuICAgIDogW25vcm1hbGl6ZVZOb2RlKHZhbHVlKV07XHJcbmNvbnN0IG5vcm1hbGl6ZVNsb3QgPSAoa2V5LCByYXdTbG90LCBjdHgpID0+IHtcclxuICAgIGlmIChyYXdTbG90Ll9uKSB7XHJcbiAgICAgICAgLy8gYWxyZWFkeSBub3JtYWxpemVkIC0gIzUzNTNcclxuICAgICAgICByZXR1cm4gcmF3U2xvdDtcclxuICAgIH1cclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB3aXRoQ3R4KCguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgd2FybihgU2xvdCBcIiR7a2V5fVwiIGludm9rZWQgb3V0c2lkZSBvZiB0aGUgcmVuZGVyIGZ1bmN0aW9uOiBgICtcclxuICAgICAgICAgICAgICAgIGB0aGlzIHdpbGwgbm90IHRyYWNrIGRlcGVuZGVuY2llcyB1c2VkIGluIHRoZSBzbG90LiBgICtcclxuICAgICAgICAgICAgICAgIGBJbnZva2UgdGhlIHNsb3QgZnVuY3Rpb24gaW5zaWRlIHRoZSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNsb3RWYWx1ZShyYXdTbG90KC4uLmFyZ3MpKTtcclxuICAgIH0sIGN0eCk7XHJcbiAgICBub3JtYWxpemVkLl9jID0gZmFsc2U7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufTtcclxuY29uc3Qgbm9ybWFsaXplT2JqZWN0U2xvdHMgPSAocmF3U2xvdHMsIHNsb3RzLCBpbnN0YW5jZSkgPT4ge1xyXG4gICAgY29uc3QgY3R4ID0gcmF3U2xvdHMuX2N0eDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd1Nsb3RzKSB7XHJcbiAgICAgICAgaWYgKGlzSW50ZXJuYWxLZXkoa2V5KSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdTbG90c1trZXldO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBzbG90c1trZXldID0gbm9ybWFsaXplU2xvdChrZXksIHZhbHVlLCBjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTm9uLWZ1bmN0aW9uIHZhbHVlIGVuY291bnRlcmVkIGZvciBzbG90IFwiJHtrZXl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQcmVmZXIgZnVuY3Rpb24gc2xvdHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2xvdFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgc2xvdHNba2V5XSA9ICgpID0+IG5vcm1hbGl6ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCBub3JtYWxpemVWTm9kZVNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICFpc0tlZXBBbGl2ZShpbnN0YW5jZS52bm9kZSkgJiZcclxuICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICB3YXJuKGBOb24tZnVuY3Rpb24gdmFsdWUgZW5jb3VudGVyZWQgZm9yIGRlZmF1bHQgc2xvdC4gYCArXHJcbiAgICAgICAgICAgIGBQcmVmZXIgZnVuY3Rpb24gc2xvdHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVTbG90VmFsdWUoY2hpbGRyZW4pO1xyXG4gICAgaW5zdGFuY2Uuc2xvdHMuZGVmYXVsdCA9ICgpID0+IG5vcm1hbGl6ZWQ7XHJcbn07XHJcbmNvbnN0IGluaXRTbG90cyA9IChpbnN0YW5jZSwgY2hpbGRyZW4pID0+IHtcclxuICAgIGlmIChpbnN0YW5jZS52bm9kZS5zaGFwZUZsYWcgJiAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgLy8gdXNlcnMgY2FuIGdldCB0aGUgc2hhbGxvdyByZWFkb25seSB2ZXJzaW9uIG9mIHRoZSBzbG90cyBvYmplY3QgdGhyb3VnaCBgdGhpcy4kc2xvdHNgLFxyXG4gICAgICAgICAgICAvLyB3ZSBzaG91bGQgYXZvaWQgdGhlIHByb3h5IG9iamVjdCBwb2xsdXRpbmcgdGhlIHNsb3RzIG9mIHRoZSBpbnRlcm5hbCBpbnN0YW5jZVxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zbG90cyA9IHRvUmF3KGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgLy8gbWFrZSBjb21waWxlciBtYXJrZXIgbm9uLWVudW1lcmFibGVcclxuICAgICAgICAgICAgZGVmKGNoaWxkcmVuLCAnXycsIHR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplT2JqZWN0U2xvdHMoY2hpbGRyZW4sIChpbnN0YW5jZS5zbG90cyA9IHt9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaW5zdGFuY2Uuc2xvdHMgPSB7fTtcclxuICAgICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplVk5vZGVTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRlZihpbnN0YW5jZS5zbG90cywgSW50ZXJuYWxPYmplY3RLZXksIDEpO1xyXG59O1xyXG5jb25zdCB1cGRhdGVTbG90cyA9IChpbnN0YW5jZSwgY2hpbGRyZW4sIG9wdGltaXplZCkgPT4ge1xyXG4gICAgY29uc3QgeyB2bm9kZSwgc2xvdHMgfSA9IGluc3RhbmNlO1xyXG4gICAgbGV0IG5lZWREZWxldGlvbkNoZWNrID0gdHJ1ZTtcclxuICAgIGxldCBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQgPSBFTVBUWV9PQko7XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbXBpbGVkIHNsb3RzLlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIC8vIFBhcmVudCB3YXMgSE1SIHVwZGF0ZWQgc28gc2xvdCBjb250ZW50IG1heSBoYXZlIGNoYW5nZWQuXHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSB1cGRhdGUgc2xvdHMgYW5kIG1hcmsgaW5zdGFuY2UgZm9yIGhtciBhcyB3ZWxsXHJcbiAgICAgICAgICAgICAgICBleHRlbmQoc2xvdHMsIGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpbWl6ZWQgJiYgdHlwZSA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb21waWxlZCBBTkQgc3RhYmxlLlxyXG4gICAgICAgICAgICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUsIGFuZCBza2lwIHN0YWxlIHNsb3RzIHJlbW92YWwuXHJcbiAgICAgICAgICAgICAgICBuZWVkRGVsZXRpb25DaGVjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZWQgYnV0IGR5bmFtaWMgKHYtaWYvdi1mb3Igb24gc2xvdHMpIC0gdXBkYXRlIHNsb3RzLCBidXQgc2tpcFxyXG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgICAgIGV4dGVuZChzbG90cywgY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgLy8gIzI4OTNcclxuICAgICAgICAgICAgICAgIC8vIHdoZW4gcmVuZGVyaW5nIHRoZSBvcHRpbWl6ZWQgc2xvdHMgYnkgbWFudWFsbHkgd3JpdHRlbiByZW5kZXIgZnVuY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgYHNsb3RzLl9gIGZsYWcgaWYgbmVjZXNzYXJ5IHRvIG1ha2Ugc3Vic2VxdWVudCB1cGRhdGVzIHJlbGlhYmxlLFxyXG4gICAgICAgICAgICAgICAgLy8gaS5lLiBsZXQgdGhlIGByZW5kZXJTbG90YCBjcmVhdGUgdGhlIGJhaWxlZCBGcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpbWl6ZWQgJiYgdHlwZSA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNsb3RzLl87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5lZWREZWxldGlvbkNoZWNrID0gIWNoaWxkcmVuLiRzdGFibGU7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCBzbG90cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IGNoaWxkcmVuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAvLyBub24gc2xvdCBvYmplY3QgY2hpbGRyZW4gKGRpcmVjdCB2YWx1ZSkgcGFzc2VkIHRvIGEgY29tcG9uZW50XHJcbiAgICAgICAgbm9ybWFsaXplVk5vZGVTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IHsgZGVmYXVsdDogMSB9O1xyXG4gICAgfVxyXG4gICAgLy8gZGVsZXRlIHN0YWxlIHNsb3RzXHJcbiAgICBpZiAobmVlZERlbGV0aW9uQ2hlY2spIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xyXG4gICAgICAgICAgICBpZiAoIWlzSW50ZXJuYWxLZXkoa2V5KSAmJiAhKGtleSBpbiBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgc2xvdHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gY3JlYXRlQXBwQ29udGV4dCgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXBwOiBudWxsLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBpc05hdGl2ZVRhZzogTk8sXHJcbiAgICAgICAgICAgIHBlcmZvcm1hbmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllczoge30sXHJcbiAgICAgICAgICAgIG9wdGlvbk1lcmdlU3RyYXRlZ2llczoge30sXHJcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcjogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB3YXJuSGFuZGxlcjogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHt9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaXhpbnM6IFtdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IHt9LFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHt9LFxyXG4gICAgICAgIHByb3ZpZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxyXG4gICAgICAgIG9wdGlvbnNDYWNoZTogbmV3IFdlYWtNYXAoKSxcclxuICAgICAgICBwcm9wc0NhY2hlOiBuZXcgV2Vha01hcCgpLFxyXG4gICAgICAgIGVtaXRzQ2FjaGU6IG5ldyBXZWFrTWFwKClcclxuICAgIH07XHJcbn1cclxubGV0IHVpZCA9IDA7XHJcbmZ1bmN0aW9uIGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcHAocm9vdENvbXBvbmVudCwgcm9vdFByb3BzID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghaXNGdW5jdGlvbihyb290Q29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICByb290Q29tcG9uZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgcm9vdENvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb290UHJvcHMgIT0gbnVsbCAmJiAhaXNPYmplY3Qocm9vdFByb3BzKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybihgcm9vdCBwcm9wcyBwYXNzZWQgdG8gYXBwLm1vdW50KCkgbXVzdCBiZSBhbiBvYmplY3QuYCk7XHJcbiAgICAgICAgICAgIHJvb3RQcm9wcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVBcHBDb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgaW5zdGFsbGVkUGx1Z2lucyA9IG5ldyBTZXQoKTtcclxuICAgICAgICBsZXQgaXNNb3VudGVkID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYXBwID0gKGNvbnRleHQuYXBwID0ge1xyXG4gICAgICAgICAgICBfdWlkOiB1aWQrKyxcclxuICAgICAgICAgICAgX2NvbXBvbmVudDogcm9vdENvbXBvbmVudCxcclxuICAgICAgICAgICAgX3Byb3BzOiByb290UHJvcHMsXHJcbiAgICAgICAgICAgIF9jb250YWluZXI6IG51bGwsXHJcbiAgICAgICAgICAgIF9jb250ZXh0OiBjb250ZXh0LFxyXG4gICAgICAgICAgICBfaW5zdGFuY2U6IG51bGwsXHJcbiAgICAgICAgICAgIHZlcnNpb24sXHJcbiAgICAgICAgICAgIGdldCBjb25maWcoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jb25maWc7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBjb25maWcodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYGFwcC5jb25maWcgY2Fubm90IGJlIHJlcGxhY2VkLiBNb2RpZnkgaW5kaXZpZHVhbCBvcHRpb25zIGluc3RlYWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVzZShwbHVnaW4sIC4uLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmhhcyhwbHVnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYFBsdWdpbiBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBsdWdpbiAmJiBpc0Z1bmN0aW9uKHBsdWdpbi5pbnN0YWxsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnMuYWRkKHBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmluc3RhbGwoYXBwLCAuLi5vcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocGx1Z2luKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnMuYWRkKHBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luKGFwcCwgLi4ub3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBIHBsdWdpbiBtdXN0IGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCB3aXRoIGFuIFwiaW5zdGFsbFwiIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtaXhpbihtaXhpbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQubWl4aW5zLmluY2x1ZGVzKG1peGluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm1peGlucy5wdXNoKG1peGluKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ01peGluIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWl4aW4ubmFtZSA/IGA6ICR7bWl4aW4ubmFtZX1gIDogJycpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdNaXhpbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGJ1aWxkcyBzdXBwb3J0aW5nIE9wdGlvbnMgQVBJJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb21wb25lbnQobmFtZSwgY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUsIGNvbnRleHQuY29uZmlnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29udGV4dC5jb21wb25lbnRzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IFwiJHtuYW1lfVwiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBpbiB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jb21wb25lbnRzW25hbWVdID0gY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGlyZWN0aXZlKG5hbWUsIGRpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29udGV4dC5kaXJlY3RpdmVzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRGlyZWN0aXZlIFwiJHtuYW1lfVwiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBpbiB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kaXJlY3RpdmVzW25hbWVdID0gZGlyZWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbW91bnQocm9vdENvbnRhaW5lciwgaXNIeWRyYXRlLCBpc1NWRykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAjNTU3MVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcm9vdENvbnRhaW5lci5fX3Z1ZV9hcHBfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFwcCBpbnN0YW5jZSBtb3VudGVkIG9uIHRoZSBob3N0IGNvbnRhaW5lci5cXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgSWYgeW91IHdhbnQgdG8gbW91bnQgYW5vdGhlciBhcHAgb24gdGhlIHNhbWUgaG9zdCBjb250YWluZXIsYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIHlvdSBuZWVkIHRvIHVubW91bnQgdGhlIHByZXZpb3VzIGFwcCBieSBjYWxsaW5nIFxcYGFwcC51bm1vdW50KClcXGAgZmlyc3QuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUocm9vdENvbXBvbmVudCwgcm9vdFByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZSBhcHAgY29udGV4dCBvbiB0aGUgcm9vdCBWTm9kZS5cclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdpbGwgYmUgc2V0IG9uIHRoZSByb290IGluc3RhbmNlIG9uIGluaXRpYWwgbW91bnQuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuYXBwQ29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSE1SIHJvb3QgcmVsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcihjbG9uZVZOb2RlKHZub2RlKSwgcm9vdENvbnRhaW5lciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIeWRyYXRlICYmIGh5ZHJhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHlkcmF0ZSh2bm9kZSwgcm9vdENvbnRhaW5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIodm5vZGUsIHJvb3RDb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaXNNb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBhcHAuX2NvbnRhaW5lciA9IHJvb3RDb250YWluZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdENvbnRhaW5lci5fX3Z1ZV9hcHBfXyA9IGFwcDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuX2luc3RhbmNlID0gdm5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc0luaXRBcHAoYXBwLCB2ZXJzaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEV4cG9zZVByb3h5KHZub2RlLmNvbXBvbmVudCkgfHwgdm5vZGUuY29tcG9uZW50LnByb3h5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQXBwIGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC5cXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYElmIHlvdSB3YW50IHRvIHJlbW91bnQgdGhlIHNhbWUgYXBwLCBtb3ZlIHlvdXIgYXBwIGNyZWF0aW9uIGxvZ2ljIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaW50byBhIGZhY3RvcnkgZnVuY3Rpb24gYW5kIGNyZWF0ZSBmcmVzaCBhcHAgaW5zdGFuY2VzIGZvciBlYWNoIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgbW91bnQgLSBlLmcuIFxcYGNvbnN0IGNyZWF0ZU15QXBwID0gKCkgPT4gY3JlYXRlQXBwKEFwcClcXGBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdW5tb3VudCgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW5kZXIobnVsbCwgYXBwLl9jb250YWluZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc1VubW91bnRBcHAoYXBwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFwcC5fY29udGFpbmVyLl9fdnVlX2FwcF9fO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ2Fubm90IHVubW91bnQgYW4gYXBwIHRoYXQgaXMgbm90IG1vdW50ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb3ZpZGUoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgaW4gY29udGV4dC5wcm92aWRlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEFwcCBhbHJlYWR5IHByb3ZpZGVzIHByb3BlcnR5IHdpdGgga2V5IFwiJHtTdHJpbmcoa2V5KX1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJdCB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIG5ldyB2YWx1ZS5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQucHJvdmlkZXNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhcHA7XHJcbiAgICB9O1xyXG59XG5cbi8qKlxyXG4gKiBGdW5jdGlvbiBmb3IgaGFuZGxpbmcgYSB0ZW1wbGF0ZSByZWZcclxuICovXHJcbmZ1bmN0aW9uIHNldFJlZihyYXdSZWYsIG9sZFJhd1JlZiwgcGFyZW50U3VzcGVuc2UsIHZub2RlLCBpc1VubW91bnQgPSBmYWxzZSkge1xyXG4gICAgaWYgKGlzQXJyYXkocmF3UmVmKSkge1xyXG4gICAgICAgIHJhd1JlZi5mb3JFYWNoKChyLCBpKSA9PiBzZXRSZWYociwgb2xkUmF3UmVmICYmIChpc0FycmF5KG9sZFJhd1JlZikgPyBvbGRSYXdSZWZbaV0gOiBvbGRSYXdSZWYpLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIGlzVW5tb3VudCkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChpc0FzeW5jV3JhcHBlcih2bm9kZSkgJiYgIWlzVW5tb3VudCkge1xyXG4gICAgICAgIC8vIHdoZW4gbW91bnRpbmcgYXN5bmMgY29tcG9uZW50cywgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLFxyXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIHRlbXBsYXRlIHJlZiBpcyBmb3J3YXJkZWQgdG8gaW5uZXIgY29tcG9uZW50XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVmVmFsdWUgPSB2bm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovXHJcbiAgICAgICAgPyBnZXRFeHBvc2VQcm94eSh2bm9kZS5jb21wb25lbnQpIHx8IHZub2RlLmNvbXBvbmVudC5wcm94eVxyXG4gICAgICAgIDogdm5vZGUuZWw7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGlzVW5tb3VudCA/IG51bGwgOiByZWZWYWx1ZTtcclxuICAgIGNvbnN0IHsgaTogb3duZXIsIHI6IHJlZiB9ID0gcmF3UmVmO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhb3duZXIpIHtcclxuICAgICAgICB3YXJuKGBNaXNzaW5nIHJlZiBvd25lciBjb250ZXh0LiByZWYgY2Fubm90IGJlIHVzZWQgb24gaG9pc3RlZCB2bm9kZXMuIGAgK1xyXG4gICAgICAgICAgICBgQSB2bm9kZSB3aXRoIHJlZiBtdXN0IGJlIGNyZWF0ZWQgaW5zaWRlIHRoZSByZW5kZXIgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkUmVmID0gb2xkUmF3UmVmICYmIG9sZFJhd1JlZi5yO1xyXG4gICAgY29uc3QgcmVmcyA9IG93bmVyLnJlZnMgPT09IEVNUFRZX09CSiA/IChvd25lci5yZWZzID0ge30pIDogb3duZXIucmVmcztcclxuICAgIGNvbnN0IHNldHVwU3RhdGUgPSBvd25lci5zZXR1cFN0YXRlO1xyXG4gICAgLy8gZHluYW1pYyByZWYgY2hhbmdlZC4gdW5zZXQgb2xkIHJlZlxyXG4gICAgaWYgKG9sZFJlZiAhPSBudWxsICYmIG9sZFJlZiAhPT0gcmVmKSB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKG9sZFJlZikpIHtcclxuICAgICAgICAgICAgcmVmc1tvbGRSZWZdID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCBvbGRSZWYpKSB7XHJcbiAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW29sZFJlZl0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzUmVmKG9sZFJlZikpIHtcclxuICAgICAgICAgICAgb2xkUmVmLnZhbHVlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaXNGdW5jdGlvbihyZWYpKSB7XHJcbiAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKHJlZiwgb3duZXIsIDEyIC8qIEVycm9yQ29kZXMuRlVOQ1RJT05fUkVGICovLCBbdmFsdWUsIHJlZnNdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IF9pc1N0cmluZyA9IGlzU3RyaW5nKHJlZik7XHJcbiAgICAgICAgY29uc3QgX2lzUmVmID0gaXNSZWYocmVmKTtcclxuICAgICAgICBpZiAoX2lzU3RyaW5nIHx8IF9pc1JlZikge1xyXG4gICAgICAgICAgICBjb25zdCBkb1NldCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuZikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gX2lzU3RyaW5nID8gcmVmc1tyZWZdIDogcmVmLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VubW91bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcnJheShleGlzdGluZykgJiYgcmVtb3ZlKGV4aXN0aW5nLCByZWZWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkoZXhpc3RpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyZWZdID0gW3JlZlZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIHJlZikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBTdGF0ZVtyZWZdID0gcmVmc1tyZWZdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IFtyZWZWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzW3Jhd1JlZi5rXSA9IHJlZi52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZXhpc3RpbmcuaW5jbHVkZXMocmVmVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5wdXNoKHJlZlZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9pc1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZnNbcmVmXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgcmVmKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW3JlZl0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChfaXNSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWYudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmF3UmVmLmspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbcmF3UmVmLmtdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIHRlbXBsYXRlIHJlZiB0eXBlOicsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGRvU2V0LmlkID0gLTE7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoZG9TZXQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvU2V0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgdGVtcGxhdGUgcmVmIHR5cGU6JywgcmVmLCBgKCR7dHlwZW9mIHJlZn0pYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmxldCBoYXNNaXNtYXRjaCA9IGZhbHNlO1xyXG5jb25zdCBpc1NWR0NvbnRhaW5lciA9IChjb250YWluZXIpID0+IC9zdmcvLnRlc3QoY29udGFpbmVyLm5hbWVzcGFjZVVSSSkgJiYgY29udGFpbmVyLnRhZ05hbWUgIT09ICdmb3JlaWduT2JqZWN0JztcclxuY29uc3QgaXNDb21tZW50ID0gKG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDggLyogRE9NTm9kZVR5cGVzLkNPTU1FTlQgKi87XHJcbi8vIE5vdGU6IGh5ZHJhdGlvbiBpcyBET00tc3BlY2lmaWNcclxuLy8gQnV0IHdlIGhhdmUgdG8gcGxhY2UgaXQgaW4gY29yZSBkdWUgdG8gdGlnaHQgY291cGxpbmcgd2l0aCBjb3JlIC0gc3BsaXR0aW5nXHJcbi8vIGl0IG91dCBjcmVhdGVzIGEgdG9uIG9mIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkuXHJcbi8vIEh5ZHJhdGlvbiBhbHNvIGRlcGVuZHMgb24gc29tZSByZW5kZXJlciBpbnRlcm5hbCBsb2dpYyB3aGljaCBuZWVkcyB0byBiZVxyXG4vLyBwYXNzZWQgaW4gdmlhIGFyZ3VtZW50cy5cclxuZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICBjb25zdCB7IG10OiBtb3VudENvbXBvbmVudCwgcDogcGF0Y2gsIG86IHsgcGF0Y2hQcm9wLCBjcmVhdGVUZXh0LCBuZXh0U2libGluZywgcGFyZW50Tm9kZSwgcmVtb3ZlLCBpbnNlcnQsIGNyZWF0ZUNvbW1lbnQgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCBoeWRyYXRlID0gKHZub2RlLCBjb250YWluZXIpID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIGh5ZHJhdGUgZXhpc3RpbmcgbWFya3VwIGJ1dCBjb250YWluZXIgaXMgZW1wdHkuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQZXJmb3JtaW5nIGZ1bGwgbW91bnQgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5fdm5vZGUgPSB2bm9kZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoYXNNaXNtYXRjaCA9IGZhbHNlO1xyXG4gICAgICAgIGh5ZHJhdGVOb2RlKGNvbnRhaW5lci5maXJzdENoaWxkLCB2bm9kZSwgbnVsbCwgbnVsbCwgbnVsbCk7XHJcbiAgICAgICAgZmx1c2hQb3N0Rmx1c2hDYnMoKTtcclxuICAgICAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKGhhc01pc21hdGNoICYmICFmYWxzZSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzIGVycm9yIHNob3VsZCBzaG93IHVwIGluIHByb2R1Y3Rpb25cclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSHlkcmF0aW9uIGNvbXBsZXRlZCBidXQgY29udGFpbnMgbWlzbWF0Y2hlcy5gKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZU5vZGUgPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcclxuICAgICAgICBjb25zdCBpc0ZyYWdtZW50U3RhcnQgPSBpc0NvbW1lbnQobm9kZSkgJiYgbm9kZS5kYXRhID09PSAnWyc7XHJcbiAgICAgICAgY29uc3Qgb25NaXNtYXRjaCA9ICgpID0+IGhhbmRsZU1pc21hdGNoKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIGlzRnJhZ21lbnRTdGFydCk7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZWYsIHNoYXBlRmxhZywgcGF0Y2hGbGFnIH0gPSB2bm9kZTtcclxuICAgICAgICBjb25zdCBkb21UeXBlID0gbm9kZS5ub2RlVHlwZTtcclxuICAgICAgICB2bm9kZS5lbCA9IG5vZGU7XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA9PT0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2bm9kZS5keW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbmV4dE5vZGUgPSBudWxsO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFRleHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gMyAvKiBET01Ob2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICM1NzI4IGVtcHR5IHRleHQgbm9kZSBpbnNpZGUgYSBzbG90IGNhbiBjYXVzZSBoeWRyYXRpb24gZmFpbHVyZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIHNlcnZlciByZW5kZXJlZCBIVE1MIHdvbid0IGNvbnRhaW4gYSB0ZXh0IG5vZGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAodm5vZGUuY2hpbGRyZW4gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydCgodm5vZGUuZWwgPSBjcmVhdGVUZXh0KCcnKSksIHBhcmVudE5vZGUobm9kZSksIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhICE9PSB2bm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIHRleHQgbWlzbWF0Y2g6YCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFxcbi0gQ2xpZW50OiAke0pTT04uc3RyaW5naWZ5KG5vZGUuZGF0YSl9YCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFxcbi0gU2VydmVyOiAke0pTT04uc3RyaW5naWZ5KHZub2RlLmNoaWxkcmVuKX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5kYXRhID0gdm5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb21tZW50OlxyXG4gICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDggLyogRE9NTm9kZVR5cGVzLkNPTU1FTlQgKi8gfHwgaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdGljOlxyXG4gICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDEgLyogRE9NTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgZG9tVHlwZSAhPT0gMyAvKiBET01Ob2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIGFuY2hvciwgYWRvcHQgY29udGVudFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc3RhdGljIHZub2RlIGhhcyBpdHMgY29udGVudCBzdHJpcHBlZCBkdXJpbmcgYnVpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWRvcHQgaXQgZnJvbSB0aGUgc2VydmVyLXJlbmRlcmVkIEhUTUwuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmVlZFRvQWRvcHRDb250ZW50ID0gIXZub2RlLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZub2RlLnN0YXRpY0NvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRUb0Fkb3B0Q29udGVudClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmNoaWxkcmVuICs9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUubm9kZVR5cGUgPT09IDEgLyogRE9NTm9kZVR5cGVzLkVMRU1FTlQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Tm9kZS5vdXRlckhUTUxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXh0Tm9kZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdm5vZGUuc3RhdGljQ291bnQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5hbmNob3IgPSBuZXh0Tm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5leHROb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHROb2RlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRnJhZ21lbnQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBoeWRyYXRlRnJhZ21lbnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDEgLyogRE9NTm9kZVR5cGVzLkVMRU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUudHlwZS50b0xvd2VyQ2FzZSgpICE9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGh5ZHJhdGVFbGVtZW50KG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gc2V0dGluZyB1cCB0aGUgcmVuZGVyIGVmZmVjdCwgaWYgdGhlIGluaXRpYWwgdm5vZGUgYWxyZWFkeVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhcyAuZWwgc2V0LCB0aGUgY29tcG9uZW50IHdpbGwgcGVyZm9ybSBoeWRyYXRpb24gaW5zdGVhZCBvZiBtb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGl0cyBzdWItdHJlZS5cclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5zbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENvbXBvbmVudCh2bm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgYmUgYXN5bmMsIHNvIGluIHRoZSBjYXNlIG9mIGZyYWdtZW50cyB3ZSBjYW5ub3QgcmVseVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGNvbXBvbmVudCdzIHJlbmRlcmVkIG91dHB1dCB0byBkZXRlcm1pbmUgdGhlIGVuZCBvZiB0aGUgZnJhZ21lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkLCB3ZSBkbyBhIGxvb2thaGVhZCB0byBmaW5kIHRoZSBlbmQgYW5jaG9yIG5vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBpc0ZyYWdtZW50U3RhcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3Iobm9kZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAjNDI5MyB0ZWxlcG9ydCBhcyBjb21wb25lbnQgcm9vdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Tm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbW1lbnQobmV4dE5vZGUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlLmRhdGEgPT09ICd0ZWxlcG9ydCBlbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobmV4dE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyAjMzc4N1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGNvbXBvbmVudCBpcyBhc3luYywgaXQgbWF5IGdldCBtb3ZlZCAvIHVubW91bnRlZCBiZWZvcmUgaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5uZXIgY29tcG9uZW50IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBnaXZlIGl0IGEgcGxhY2Vob2xkZXJcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSB0aGF0IG1hdGNoZXMgaXRzIGFkb3B0ZWQgRE9NLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzeW5jV3JhcHBlcih2bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUgPSBjcmVhdGVWTm9kZShGcmFnbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlLmFuY2hvciA9IG5leHROb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Tm9kZS5wcmV2aW91c1NpYmxpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRhaW5lci5sYXN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAzID8gY3JlYXRlVGV4dFZOb2RlKCcnKSA6IGNyZWF0ZVZOb2RlKCdkaXYnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlLmVsID0gbm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuY29tcG9uZW50LnN1YlRyZWUgPSBzdWJUcmVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gOCAvKiBET01Ob2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IHZub2RlLnR5cGUuaHlkcmF0ZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIocGFyZW50Tm9kZShub2RlKSksIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaHlkcmF0ZU5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBIb3N0Vk5vZGUgdHlwZTonLCB0eXBlLCBgKCR7dHlwZW9mIHR5cGV9KWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVmICE9IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0UmVmKHJlZiwgbnVsbCwgcGFyZW50U3VzcGVuc2UsIHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVFbGVtZW50ID0gKGVsLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBvcHRpbWl6ZWQgPSBvcHRpbWl6ZWQgfHwgISF2bm9kZS5keW5hbWljQ2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgcGF0Y2hGbGFnLCBzaGFwZUZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIC8vICM0MDA2IGZvciBmb3JtIGVsZW1lbnRzIHdpdGggbm9uLXN0cmluZyB2LW1vZGVsIHZhbHVlIGJpbmRpbmdzXHJcbiAgICAgICAgLy8gZS5nLiA8b3B0aW9uIDp2YWx1ZT1cIm9ialwiPiwgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIDp0cnVlLXZhbHVlPVwiMVwiPlxyXG4gICAgICAgIGNvbnN0IGZvcmNlUGF0Y2hWYWx1ZSA9ICh0eXBlID09PSAnaW5wdXQnICYmIGRpcnMpIHx8IHR5cGUgPT09ICdvcHRpb24nO1xyXG4gICAgICAgIC8vIHNraXAgcHJvcHMgJiBjaGlsZHJlbiBpZiB0aGlzIGlzIGhvaXN0ZWQgc3RhdGljIG5vZGVzXHJcbiAgICAgICAgLy8gIzU0MDUgaW4gZGV2LCBhbHdheXMgaHlkcmF0ZSBjaGlsZHJlbiBmb3IgSE1SXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBmb3JjZVBhdGNoVmFsdWUgfHwgcGF0Y2hGbGFnICE9PSAtMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi8pIHtcclxuICAgICAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2NyZWF0ZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmb3JjZVBhdGNoVmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAhb3B0aW1pemVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hGbGFnICYgKDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLyB8IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmb3JjZVBhdGNoVmFsdWUgJiYga2V5LmVuZHNXaXRoKCd2YWx1ZScpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzT24oa2V5KSAmJiAhaXNSZXNlcnZlZFByb3Aoa2V5KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoUHJvcChlbCwga2V5LCBudWxsLCBwcm9wc1trZXldLCBmYWxzZSwgdW5kZWZpbmVkLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcHMub25DbGljaykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgY2xpY2sgbGlzdGVuZXJzICh3aGljaCBpcyBtb3N0IG9mdGVuKSB0byBhdm9pZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0ZXJhdGluZyB0aHJvdWdoIHByb3BzLlxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoUHJvcChlbCwgJ29uQ2xpY2snLCBudWxsLCBwcm9wcy5vbkNsaWNrLCBmYWxzZSwgdW5kZWZpbmVkLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHZub2RlIC8gZGlyZWN0aXZlIGhvb2tzXHJcbiAgICAgICAgICAgIGxldCB2bm9kZUhvb2tzO1xyXG4gICAgICAgICAgICBpZiAoKHZub2RlSG9va3MgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rcywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZU1vdW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2tzID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZU1vdW50ZWQpIHx8IGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIHF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZUhvb2tzICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2tzLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ21vdW50ZWQnKTtcclxuICAgICAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjaGlsZHJlblxyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBpZiBlbGVtZW50IGhhcyBpbm5lckhUTUwgLyB0ZXh0Q29udGVudFxyXG4gICAgICAgICAgICAgICAgIShwcm9wcyAmJiAocHJvcHMuaW5uZXJIVE1MIHx8IHByb3BzLnRleHRDb250ZW50KSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gaHlkcmF0ZUNoaWxkcmVuKGVsLmZpcnN0Q2hpbGQsIHZub2RlLCBlbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKG5leHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGFzV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiBjaGlsZHJlbiBtaXNtYXRjaCBpbiA8JHt2bm9kZS50eXBlfT46IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYHNlcnZlciByZW5kZXJlZCBlbGVtZW50IGNvbnRhaW5zIG1vcmUgY2hpbGQgbm9kZXMgdGhhbiBjbGllbnQgdmRvbS5gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIFNTUmVkIERPTSBjb250YWlucyBtb3JlIG5vZGVzIHRoYW4gaXQgc2hvdWxkLiBSZW1vdmUgdGhlbS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXIgPSBuZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBuZXh0Lm5leHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShjdXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IHZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gdGV4dCBjb250ZW50IG1pc21hdGNoIGluIDwke3Zub2RlLnR5cGV9PjpcXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtIENsaWVudDogJHtlbC50ZXh0Q29udGVudH1cXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtIFNlcnZlcjogJHt2bm9kZS5jaGlsZHJlbn1gKTtcclxuICAgICAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbC5uZXh0U2libGluZztcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlQ2hpbGRyZW4gPSAobm9kZSwgcGFyZW50Vk5vZGUsIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBvcHRpbWl6ZWQgPSBvcHRpbWl6ZWQgfHwgISFwYXJlbnRWTm9kZS5keW5hbWljQ2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRWTm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBsID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2bm9kZSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjaGlsZHJlbltpXVxyXG4gICAgICAgICAgICAgICAgOiAoY2hpbGRyZW5baV0gPSBub3JtYWxpemVWTm9kZShjaGlsZHJlbltpXSkpO1xyXG4gICAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IGh5ZHJhdGVOb2RlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gVGV4dCAmJiAhdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGFzV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIGluIDwke2NvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCl9PjogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXIgcmVuZGVyZWQgZWxlbWVudCBjb250YWlucyBmZXdlciBjaGlsZCBub2RlcyB0aGFuIGNsaWVudCB2ZG9tLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgU1NSZWQgRE9NIGRpZG4ndCBjb250YWluIGVub3VnaCBub2Rlcy4gTW91bnQgdGhlIG1pc3Npbmcgb25lcy5cclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIHZub2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lciksIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUZyYWdtZW50ID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50U2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkc1xyXG4gICAgICAgICAgICAgICAgPyBzbG90U2NvcGVJZHMuY29uY2F0KGZyYWdtZW50U2xvdFNjb3BlSWRzKVxyXG4gICAgICAgICAgICAgICAgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICBjb25zdCBuZXh0ID0gaHlkcmF0ZUNoaWxkcmVuKG5leHRTaWJsaW5nKG5vZGUpLCB2bm9kZSwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgaWYgKG5leHQgJiYgaXNDb21tZW50KG5leHQpICYmIG5leHQuZGF0YSA9PT0gJ10nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZygodm5vZGUuYW5jaG9yID0gbmV4dCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnJhZ21lbnQgZGlkbid0IGh5ZHJhdGUgc3VjY2Vzc2Z1bGx5LCBzaW5jZSB3ZSBkaWRuJ3QgZ2V0IGEgZW5kIGFuY2hvclxyXG4gICAgICAgICAgICAvLyBiYWNrLiBUaGlzIHNob3VsZCBoYXZlIGxlZCB0byBub2RlL2NoaWxkcmVuIG1pc21hdGNoIHdhcm5pbmdzLlxyXG4gICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBhbmNob3IgaXMgbWlzc2luZywgd2UgbmVlZCB0byBjcmVhdGUgb25lIGFuZCBpbnNlcnQgaXRcclxuICAgICAgICAgICAgaW5zZXJ0KCh2bm9kZS5hbmNob3IgPSBjcmVhdGVDb21tZW50KGBdYCkpLCBjb250YWluZXIsIG5leHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlTWlzbWF0Y2ggPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgaXNGcmFnbWVudCkgPT4ge1xyXG4gICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIG5vZGUgbWlzbWF0Y2g6XFxuLSBDbGllbnQgdm5vZGU6YCwgdm5vZGUudHlwZSwgYFxcbi0gU2VydmVyIHJlbmRlcmVkIERPTTpgLCBub2RlLCBub2RlLm5vZGVUeXBlID09PSAzIC8qIERPTU5vZGVUeXBlcy5URVhUICovXHJcbiAgICAgICAgICAgICAgICA/IGAodGV4dClgXHJcbiAgICAgICAgICAgICAgICA6IGlzQ29tbWVudChub2RlKSAmJiBub2RlLmRhdGEgPT09ICdbJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gYChzdGFydCBvZiBmcmFnbWVudClgXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgYCk7XHJcbiAgICAgICAgdm5vZGUuZWwgPSBudWxsO1xyXG4gICAgICAgIGlmIChpc0ZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBleGNlc3NpdmUgZnJhZ21lbnQgbm9kZXNcclxuICAgICAgICAgICAgY29uc3QgZW5kID0gbG9jYXRlQ2xvc2luZ0FzeW5jQW5jaG9yKG5vZGUpO1xyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dCAhPT0gZW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKG5leHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgcmVtb3ZlKG5vZGUpO1xyXG4gICAgICAgIHBhdGNoKG51bGwsIHZub2RlLCBjb250YWluZXIsIG5leHQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lciksIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgcmV0dXJuIG5leHQ7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbG9jYXRlQ2xvc2luZ0FzeW5jQW5jaG9yID0gKG5vZGUpID0+IHtcclxuICAgICAgICBsZXQgbWF0Y2ggPSAwO1xyXG4gICAgICAgIHdoaWxlIChub2RlKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgaWYgKG5vZGUgJiYgaXNDb21tZW50KG5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhID09PSAnWycpXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2grKztcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgPT09ICddJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gW2h5ZHJhdGUsIGh5ZHJhdGVOb2RlXTtcclxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IHN1cHBvcnRlZDtcclxubGV0IHBlcmY7XHJcbmZ1bmN0aW9uIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnBlcmZvcm1hbmNlICYmIGlzU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICBwZXJmLm1hcmsoYHZ1ZS0ke3R5cGV9LSR7aW5zdGFuY2UudWlkfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBkZXZ0b29sc1BlcmZTdGFydChpbnN0YW5jZSwgdHlwZSwgaXNTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBlbmRNZWFzdXJlKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcucGVyZm9ybWFuY2UgJiYgaXNTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGFnID0gYHZ1ZS0ke3R5cGV9LSR7aW5zdGFuY2UudWlkfWA7XHJcbiAgICAgICAgY29uc3QgZW5kVGFnID0gc3RhcnRUYWcgKyBgOmVuZGA7XHJcbiAgICAgICAgcGVyZi5tYXJrKGVuZFRhZyk7XHJcbiAgICAgICAgcGVyZi5tZWFzdXJlKGA8JHtmb3JtYXRDb21wb25lbnROYW1lKGluc3RhbmNlLCBpbnN0YW5jZS50eXBlKX0+ICR7dHlwZX1gLCBzdGFydFRhZywgZW5kVGFnKTtcclxuICAgICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xyXG4gICAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBkZXZ0b29sc1BlcmZFbmQoaW5zdGFuY2UsIHR5cGUsIGlzU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdXBwb3J0ZWQoKSB7XHJcbiAgICBpZiAoc3VwcG9ydGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gc3VwcG9ydGVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xyXG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XHJcbiAgICAgICAgcGVyZiA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHN1cHBvcnRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cHBvcnRlZDtcclxufVxuXG4vKipcclxuICogVGhpcyBpcyBvbmx5IGNhbGxlZCBpbiBlc20tYnVuZGxlciBidWlsZHMuXHJcbiAqIEl0IGlzIGNhbGxlZCB3aGVuIGEgcmVuZGVyZXIgaXMgY3JlYXRlZCwgaW4gYGJhc2VDcmVhdGVSZW5kZXJlcmAgc28gdGhhdFxyXG4gKiBpbXBvcnRpbmcgcnVudGltZS1jb3JlIGlzIHNpZGUtZWZmZWN0cyBmcmVlLlxyXG4gKlxyXG4gKiBpc3RhbmJ1bC1pZ25vcmUtbmV4dFxyXG4gKi9cclxuZnVuY3Rpb24gaW5pdEZlYXR1cmVGbGFncygpIHtcclxuICAgIGNvbnN0IG5lZWRXYXJuID0gW107XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX09QVElPTlNfQVBJX18gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5wdXNoKGBfX1ZVRV9PUFRJT05TX0FQSV9fYCk7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX09QVElPTlNfQVBJX18gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBfX1ZVRV9QUk9EX0RFVlRPT0xTX18gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5wdXNoKGBfX1ZVRV9QUk9EX0RFVlRPT0xTX19gKTtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfUFJPRF9ERVZUT09MU19fID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IG11bHRpID0gbmVlZFdhcm4ubGVuZ3RoID4gMTtcclxuICAgICAgICBjb25zb2xlLndhcm4oYEZlYXR1cmUgZmxhZyR7bXVsdGkgPyBgc2AgOiBgYH0gJHtuZWVkV2Fybi5qb2luKCcsICcpfSAke211bHRpID8gYGFyZWAgOiBgaXNgfSBub3QgZXhwbGljaXRseSBkZWZpbmVkLiBZb3UgYXJlIHJ1bm5pbmcgdGhlIGVzbS1idW5kbGVyIGJ1aWxkIG9mIFZ1ZSwgYCArXHJcbiAgICAgICAgICAgIGB3aGljaCBleHBlY3RzIHRoZXNlIGNvbXBpbGUtdGltZSBmZWF0dXJlIGZsYWdzIHRvIGJlIGdsb2JhbGx5IGluamVjdGVkIGAgK1xyXG4gICAgICAgICAgICBgdmlhIHRoZSBidW5kbGVyIGNvbmZpZyBpbiBvcmRlciB0byBnZXQgYmV0dGVyIHRyZWUtc2hha2luZyBpbiB0aGUgYCArXHJcbiAgICAgICAgICAgIGBwcm9kdWN0aW9uIGJ1bmRsZS5cXG5cXG5gICtcclxuICAgICAgICAgICAgYEZvciBtb3JlIGRldGFpbHMsIHNlZSBodHRwczovL2xpbmsudnVlanMub3JnL2ZlYXR1cmUtZmxhZ3MuYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgcXVldWVQb3N0UmVuZGVyRWZmZWN0ID0gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2VcclxuICAgIDtcclxuLyoqXHJcbiAqIFRoZSBjcmVhdGVSZW5kZXJlciBmdW5jdGlvbiBhY2NlcHRzIHR3byBnZW5lcmljIGFyZ3VtZW50czpcclxuICogSG9zdE5vZGUgYW5kIEhvc3RFbGVtZW50LCBjb3JyZXNwb25kaW5nIHRvIE5vZGUgYW5kIEVsZW1lbnQgdHlwZXMgaW4gdGhlXHJcbiAqIGhvc3QgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBmb3IgcnVudGltZS1kb20sIEhvc3ROb2RlIHdvdWxkIGJlIHRoZSBET01cclxuICogYE5vZGVgIGludGVyZmFjZSBhbmQgSG9zdEVsZW1lbnQgd291bGQgYmUgdGhlIERPTSBgRWxlbWVudGAgaW50ZXJmYWNlLlxyXG4gKlxyXG4gKiBDdXN0b20gcmVuZGVyZXJzIGNhbiBwYXNzIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcyBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIGBgYCBqc1xyXG4gKiBjb25zdCB7IHJlbmRlciwgY3JlYXRlQXBwIH0gPSBjcmVhdGVSZW5kZXJlcjxOb2RlLCBFbGVtZW50Pih7XHJcbiAqICAgcGF0Y2hQcm9wLFxyXG4gKiAgIC4uLm5vZGVPcHNcclxuICogfSlcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJlcihvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMpO1xyXG59XHJcbi8vIFNlcGFyYXRlIEFQSSBmb3IgY3JlYXRpbmcgaHlkcmF0aW9uLWVuYWJsZWQgcmVuZGVyZXIuXHJcbi8vIEh5ZHJhdGlvbiBsb2dpYyBpcyBvbmx5IHVzZWQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIG1ha2luZyBpdFxyXG4vLyB0cmVlLXNoYWthYmxlLlxyXG5mdW5jdGlvbiBjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMsIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyk7XHJcbn1cclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMsIGNyZWF0ZUh5ZHJhdGlvbkZucykge1xyXG4gICAgLy8gY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZ3MgY2hlY2tcclxuICAgIHtcclxuICAgICAgICBpbml0RmVhdHVyZUZsYWdzKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRHbG9iYWxUaGlzKCk7XHJcbiAgICB0YXJnZXQuX19WVUVfXyA9IHRydWU7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIHNldERldnRvb2xzSG9vayh0YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXywgdGFyZ2V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgaW5zZXJ0OiBob3N0SW5zZXJ0LCByZW1vdmU6IGhvc3RSZW1vdmUsIHBhdGNoUHJvcDogaG9zdFBhdGNoUHJvcCwgY3JlYXRlRWxlbWVudDogaG9zdENyZWF0ZUVsZW1lbnQsIGNyZWF0ZVRleHQ6IGhvc3RDcmVhdGVUZXh0LCBjcmVhdGVDb21tZW50OiBob3N0Q3JlYXRlQ29tbWVudCwgc2V0VGV4dDogaG9zdFNldFRleHQsIHNldEVsZW1lbnRUZXh0OiBob3N0U2V0RWxlbWVudFRleHQsIHBhcmVudE5vZGU6IGhvc3RQYXJlbnROb2RlLCBuZXh0U2libGluZzogaG9zdE5leHRTaWJsaW5nLCBzZXRTY29wZUlkOiBob3N0U2V0U2NvcGVJZCA9IE5PT1AsIGNsb25lTm9kZTogaG9zdENsb25lTm9kZSwgaW5zZXJ0U3RhdGljQ29udGVudDogaG9zdEluc2VydFN0YXRpY0NvbnRlbnQgfSA9IG9wdGlvbnM7XHJcbiAgICAvLyBOb3RlOiBmdW5jdGlvbnMgaW5zaWRlIHRoaXMgY2xvc3VyZSBzaG91bGQgdXNlIGBjb25zdCB4eHggPSAoKSA9PiB7fWBcclxuICAgIC8vIHN0eWxlIGluIG9yZGVyIHRvIHByZXZlbnQgYmVpbmcgaW5saW5lZCBieSBtaW5pZmllcnMuXHJcbiAgICBjb25zdCBwYXRjaCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yID0gbnVsbCwgcGFyZW50Q29tcG9uZW50ID0gbnVsbCwgcGFyZW50U3VzcGVuc2UgPSBudWxsLCBpc1NWRyA9IGZhbHNlLCBzbG90U2NvcGVJZHMgPSBudWxsLCBvcHRpbWl6ZWQgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZyA/IGZhbHNlIDogISFuMi5keW5hbWljQ2hpbGRyZW4pID0+IHtcclxuICAgICAgICBpZiAobjEgPT09IG4yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcGF0Y2hpbmcgJiBub3Qgc2FtZSB0eXBlLCB1bm1vdW50IG9sZCB0cmVlXHJcbiAgICAgICAgaWYgKG4xICYmICFpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICBhbmNob3IgPSBnZXROZXh0SG9zdE5vZGUobjEpO1xyXG4gICAgICAgICAgICB1bm1vdW50KG4xLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgbjEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjIucGF0Y2hGbGFnID09PSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi8pIHtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG4yLmR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcmVmLCBzaGFwZUZsYWcgfSA9IG4yO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFRleHQ6XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzVGV4dChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbW1lbnQ6XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWVudE5vZGUobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0aWM6XHJcbiAgICAgICAgICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50U3RhdGljTm9kZShuMiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGljTm9kZShuMSwgbjIsIGNvbnRhaW5lciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRnJhZ21lbnQ6XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzRnJhZ21lbnQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0VsZW1lbnQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tcG9uZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZS5wcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgaW50ZXJuYWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZS5wcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgaW50ZXJuYWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVk5vZGUgdHlwZTonLCB0eXBlLCBgKCR7dHlwZW9mIHR5cGV9KWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXQgcmVmXHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsICYmIHBhcmVudENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBuMSAmJiBuMS5yZWYsIHBhcmVudFN1c3BlbnNlLCBuMiB8fCBuMSwgIW4yKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc1RleHQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoKG4yLmVsID0gaG9zdENyZWF0ZVRleHQobjIuY2hpbGRyZW4pKSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZWwgPSAobjIuZWwgPSBuMS5lbCk7XHJcbiAgICAgICAgICAgIGlmIChuMi5jaGlsZHJlbiAhPT0gbjEuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRUZXh0KGVsLCBuMi5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0NvbW1lbnROb2RlID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpID0+IHtcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KChuMi5lbCA9IGhvc3RDcmVhdGVDb21tZW50KG4yLmNoaWxkcmVuIHx8ICcnKSksIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRoZXJlJ3Mgbm8gc3VwcG9ydCBmb3IgZHluYW1pYyBjb21tZW50c1xyXG4gICAgICAgICAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudFN0YXRpY05vZGUgPSAobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIFtuMi5lbCwgbjIuYW5jaG9yXSA9IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50KG4yLmNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcsIG4yLmVsLCBuMi5hbmNob3IpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogRGV2IC8gSE1SIG9ubHlcclxuICAgICAqL1xyXG4gICAgY29uc3QgcGF0Y2hTdGF0aWNOb2RlID0gKG4xLCBuMiwgY29udGFpbmVyLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIC8vIHN0YXRpYyBub2RlcyBhcmUgb25seSBwYXRjaGVkIGR1cmluZyBkZXYgZm9yIEhNUlxyXG4gICAgICAgIGlmIChuMi5jaGlsZHJlbiAhPT0gbjEuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gaG9zdE5leHRTaWJsaW5nKG4xLmFuY2hvcik7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBleGlzdGluZ1xyXG4gICAgICAgICAgICByZW1vdmVTdGF0aWNOb2RlKG4xKTtcclxuICAgICAgICAgICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQobjIuY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgICAgICAgICBuMi5hbmNob3IgPSBuMS5hbmNob3I7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdmVTdGF0aWNOb2RlID0gKHsgZWwsIGFuY2hvciB9LCBjb250YWluZXIsIG5leHRTaWJsaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IG5leHQ7XHJcbiAgICAgICAgd2hpbGUgKGVsICYmIGVsICE9PSBhbmNob3IpIHtcclxuICAgICAgICAgICAgbmV4dCA9IGhvc3ROZXh0U2libGluZyhlbCk7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpO1xyXG4gICAgICAgICAgICBlbCA9IG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RJbnNlcnQoYW5jaG9yLCBjb250YWluZXIsIG5leHRTaWJsaW5nKTtcclxuICAgIH07XHJcbiAgICBjb25zdCByZW1vdmVTdGF0aWNOb2RlID0gKHsgZWwsIGFuY2hvciB9KSA9PiB7XHJcbiAgICAgICAgbGV0IG5leHQ7XHJcbiAgICAgICAgd2hpbGUgKGVsICYmIGVsICE9PSBhbmNob3IpIHtcclxuICAgICAgICAgICAgbmV4dCA9IGhvc3ROZXh0U2libGluZyhlbCk7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoZWwpO1xyXG4gICAgICAgICAgICBlbCA9IG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RSZW1vdmUoYW5jaG9yKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzRWxlbWVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IG4yLnR5cGUgPT09ICdzdmcnO1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIG1vdW50RWxlbWVudChuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXRjaEVsZW1lbnQobjEsIG4yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudEVsZW1lbnQgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBsZXQgZWw7XHJcbiAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzaGFwZUZsYWcsIHRyYW5zaXRpb24sIHBhdGNoRmxhZywgZGlycyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgdm5vZGUuZWwgJiZcclxuICAgICAgICAgICAgaG9zdENsb25lTm9kZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyA9PT0gLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovKSB7XHJcbiAgICAgICAgICAgIC8vIElmIGEgdm5vZGUgaGFzIG5vbi1udWxsIGVsLCBpdCBtZWFucyBpdCdzIGJlaW5nIHJldXNlZC5cclxuICAgICAgICAgICAgLy8gT25seSBzdGF0aWMgdm5vZGVzIGNhbiBiZSByZXVzZWQsIHNvIGl0cyBtb3VudGVkIERPTSBub2RlcyBzaG91bGQgYmVcclxuICAgICAgICAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSwgYW5kIHdlIGNhbiBzaW1wbHkgZG8gYSBjbG9uZSBoZXJlLlxyXG4gICAgICAgICAgICAvLyBvbmx5IGRvIHRoaXMgaW4gcHJvZHVjdGlvbiBzaW5jZSBjbG9uZWQgdHJlZXMgY2Fubm90IGJlIEhNUiB1cGRhdGVkLlxyXG4gICAgICAgICAgICBlbCA9IHZub2RlLmVsID0gaG9zdENsb25lTm9kZSh2bm9kZS5lbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbCA9IHZub2RlLmVsID0gaG9zdENyZWF0ZUVsZW1lbnQodm5vZGUudHlwZSwgaXNTVkcsIHByb3BzICYmIHByb3BzLmlzLCBwcm9wcyk7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IGNoaWxkcmVuIGZpcnN0LCBzaW5jZSBzb21lIHByb3BzIG1heSByZWx5IG9uIGNoaWxkIGNvbnRlbnRcclxuICAgICAgICAgICAgLy8gYmVpbmcgYWxyZWFkeSByZW5kZXJlZCwgZS5nLiBgPHNlbGVjdCB2YWx1ZT5gXHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGVsLCB2bm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbih2bm9kZS5jaGlsZHJlbiwgZWwsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHICYmIHR5cGUgIT09ICdmb3JlaWduT2JqZWN0Jywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdjcmVhdGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICd2YWx1ZScgJiYgIWlzUmVzZXJ2ZWRQcm9wKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBudWxsLCBwcm9wc1trZXldLCBpc1NWRywgdm5vZGUuY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAgICAgKiBTcGVjaWFsIGNhc2UgZm9yIHNldHRpbmcgdmFsdWUgb24gRE9NIGVsZW1lbnRzOlxyXG4gICAgICAgICAgICAgICAgICogLSBpdCBjYW4gYmUgb3JkZXItc2Vuc2l0aXZlIChlLmcuIHNob3VsZCBiZSBzZXQgKmFmdGVyKiBtaW4vbWF4LCAjMjMyNSwgIzQwMjQpXHJcbiAgICAgICAgICAgICAgICAgKiAtIGl0IG5lZWRzIHRvIGJlIGZvcmNlZCAoIzE0NzEpXHJcbiAgICAgICAgICAgICAgICAgKiAjMjM1MyBwcm9wb3NlcyBhZGRpbmcgYW5vdGhlciByZW5kZXJlciBvcHRpb24gdG8gY29uZmlndXJlIHRoaXMsIGJ1dFxyXG4gICAgICAgICAgICAgICAgICogdGhlIHByb3BlcnRpZXMgYWZmZWN0cyBhcmUgc28gZmluaXRlIGl0IGlzIHdvcnRoIHNwZWNpYWwgY2FzaW5nIGl0XHJcbiAgICAgICAgICAgICAgICAgKiBoZXJlIHRvIHJlZHVjZSB0aGUgY29tcGxleGl0eS4gKFNwZWNpYWwgY2FzaW5nIGl0IGFsc28gc2hvdWxkIG5vdFxyXG4gICAgICAgICAgICAgICAgICogYWZmZWN0IG5vbi1ET00gcmVuZGVyZXJzKVxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICd2YWx1ZScsIG51bGwsIHByb3BzLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgodm5vZGVIb29rID0gcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNjb3BlSWRcclxuICAgICAgICAgICAgc2V0U2NvcGVJZChlbCwgdm5vZGUsIHZub2RlLnNjb3BlSWQsIHNsb3RTY29wZUlkcywgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsLCAnX192bm9kZScsIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2bm9kZSxcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWwsICdfX3Z1ZVBhcmVudENvbXBvbmVudCcsIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlTW91bnQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gIzE1ODMgRm9yIGluc2lkZSBzdXNwZW5zZSArIHN1c3BlbnNlIG5vdCByZXNvbHZlZCBjYXNlLCBlbnRlciBob29rIHNob3VsZCBjYWxsIHdoZW4gc3VzcGVuc2UgcmVzb2x2ZWRcclxuICAgICAgICAvLyAjMTY4OSBGb3IgaW5zaWRlIHN1c3BlbnNlICsgc3VzcGVuc2UgcmVzb2x2ZWQgY2FzZSwganVzdCBjYWxsIGl0XHJcbiAgICAgICAgY29uc3QgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgPSAoIXBhcmVudFN1c3BlbnNlIHx8IChwYXJlbnRTdXNwZW5zZSAmJiAhcGFyZW50U3VzcGVuc2UucGVuZGluZ0JyYW5jaCkpICYmXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgIXRyYW5zaXRpb24ucGVyc2lzdGVkO1xyXG4gICAgICAgIGlmIChuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcykge1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZU1vdW50ZWQpIHx8XHJcbiAgICAgICAgICAgIG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzIHx8XHJcbiAgICAgICAgICAgIGRpcnMpIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzICYmIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xyXG4gICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdtb3VudGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2V0U2NvcGVJZCA9IChlbCwgdm5vZGUsIHNjb3BlSWQsIHNsb3RTY29wZUlkcywgcGFyZW50Q29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHNjb3BlSWQpIHtcclxuICAgICAgICAgICAgaG9zdFNldFNjb3BlSWQoZWwsIHNjb3BlSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xvdFNjb3BlSWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0U2NvcGVJZChlbCwgc2xvdFNjb3BlSWRzW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJUcmVlID0gcGFyZW50Q29tcG9uZW50LnN1YlRyZWU7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHN1YlRyZWUucGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgc3ViVHJlZS5wYXRjaEZsYWcgJiAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHN1YlRyZWUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclNpbmdsZVJvb3Qoc3ViVHJlZS5jaGlsZHJlbikgfHwgc3ViVHJlZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodm5vZGUgPT09IHN1YlRyZWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFZOb2RlID0gcGFyZW50Q29tcG9uZW50LnZub2RlO1xyXG4gICAgICAgICAgICAgICAgc2V0U2NvcGVJZChlbCwgcGFyZW50Vk5vZGUsIHBhcmVudFZOb2RlLnNjb3BlSWQsIHBhcmVudFZOb2RlLnNsb3RTY29wZUlkcywgcGFyZW50Q29tcG9uZW50LnBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRDaGlsZHJlbiA9IChjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgc3RhcnQgPSAwKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSAoY2hpbGRyZW5baV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGNoaWxkcmVuW2ldKSk7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIGNoaWxkLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hFbGVtZW50ID0gKG4xLCBuMiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSAobjIuZWwgPSBuMS5lbCk7XHJcbiAgICAgICAgbGV0IHsgcGF0Y2hGbGFnLCBkeW5hbWljQ2hpbGRyZW4sIGRpcnMgfSA9IG4yO1xyXG4gICAgICAgIC8vICMxNDI2IHRha2UgdGhlIG9sZCB2bm9kZSdzIHBhdGNoIGZsYWcgaW50byBhY2NvdW50IHNpbmNlIHVzZXIgbWF5IGNsb25lIGFcclxuICAgICAgICAvLyBjb21waWxlci1nZW5lcmF0ZWQgdm5vZGUsIHdoaWNoIGRlLW9wdHMgdG8gRlVMTF9QUk9QU1xyXG4gICAgICAgIHBhdGNoRmxhZyB8PSBuMS5wYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi87XHJcbiAgICAgICAgY29uc3Qgb2xkUHJvcHMgPSBuMS5wcm9wcyB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgY29uc3QgbmV3UHJvcHMgPSBuMi5wcm9wcyB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICAvLyBkaXNhYmxlIHJlY3Vyc2UgaW4gYmVmb3JlVXBkYXRlIGhvb2tzXHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50ICYmIHRvZ2dsZVJlY3Vyc2UocGFyZW50Q29tcG9uZW50LCBmYWxzZSk7XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXdQcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSkge1xyXG4gICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIG4yLCBuMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sobjIsIG4xLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVVcGRhdGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50ICYmIHRvZ2dsZVJlY3Vyc2UocGFyZW50Q29tcG9uZW50LCB0cnVlKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgLy8gSE1SIHVwZGF0ZWQsIGZvcmNlIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSAwO1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXJlQ2hpbGRyZW5TVkcgPSBpc1NWRyAmJiBuMi50eXBlICE9PSAnZm9yZWlnbk9iamVjdCc7XHJcbiAgICAgICAgaWYgKGR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBwYXRjaEJsb2NrQ2hpbGRyZW4objEuZHluYW1pY0NoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4sIGVsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBhcmVDaGlsZHJlblNWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFvcHRpbWl6ZWQpIHtcclxuICAgICAgICAgICAgLy8gZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoQ2hpbGRyZW4objEsIG4yLCBlbCwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgYXJlQ2hpbGRyZW5TVkcsIHNsb3RTY29wZUlkcywgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGF0Y2hGbGFnID4gMCkge1xyXG4gICAgICAgICAgICAvLyB0aGUgcHJlc2VuY2Ugb2YgYSBwYXRjaEZsYWcgbWVhbnMgdGhpcyBlbGVtZW50J3MgcmVuZGVyIGNvZGUgd2FzXHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgYW5kIGNhbiB0YWtlIHRoZSBmYXN0IHBhdGguXHJcbiAgICAgICAgICAgIC8vIGluIHRoaXMgcGF0aCBvbGQgbm9kZSBhbmQgbmV3IG5vZGUgYXJlIGd1YXJhbnRlZWQgdG8gaGF2ZSB0aGUgc2FtZSBzaGFwZVxyXG4gICAgICAgICAgICAvLyAoaS5lLiBhdCB0aGUgZXhhY3Qgc2FtZSBwb3NpdGlvbiBpbiB0aGUgc291cmNlIHRlbXBsYXRlKVxyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlbGVtZW50IHByb3BzIGNvbnRhaW4gZHluYW1pYyBrZXlzLCBmdWxsIGRpZmYgbmVlZGVkXHJcbiAgICAgICAgICAgICAgICBwYXRjaFByb3BzKGVsLCBuMiwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGFzc1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBjbGFzcyBiaW5kaW5ncy5cclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAyIC8qIFBhdGNoRmxhZ3MuQ0xBU1MgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2xkUHJvcHMuY2xhc3MgIT09IG5ld1Byb3BzLmNsYXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICdjbGFzcycsIG51bGwsIG5ld1Byb3BzLmNsYXNzLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gc3R5bGVcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgc3R5bGUgYmluZGluZ3NcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiA0IC8qIFBhdGNoRmxhZ3MuU1RZTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAnc3R5bGUnLCBvbGRQcm9wcy5zdHlsZSwgbmV3UHJvcHMuc3R5bGUsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIHByb3AvYXR0ciBiaW5kaW5nc1xyXG4gICAgICAgICAgICAgICAgLy8gb3RoZXIgdGhhbiBjbGFzcyBhbmQgc3R5bGUuIFRoZSBrZXlzIG9mIGR5bmFtaWMgcHJvcC9hdHRycyBhcmUgc2F2ZWQgZm9yXHJcbiAgICAgICAgICAgICAgICAvLyBmYXN0ZXIgaXRlcmF0aW9uLlxyXG4gICAgICAgICAgICAgICAgLy8gTm90ZSBkeW5hbWljIGtleXMgbGlrZSA6W2Zvb109XCJiYXJcIiB3aWxsIGNhdXNlIHRoaXMgb3B0aW1pemF0aW9uIHRvXHJcbiAgICAgICAgICAgICAgICAvLyBiYWlsIG91dCBhbmQgZ28gdGhyb3VnaCBhIGZ1bGwgZGlmZiBiZWNhdXNlIHdlIG5lZWQgdG8gdW5zZXQgdGhlIG9sZCBrZXlcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZmxhZyBpcyBwcmVzZW50IHRoZW4gZHluYW1pY1Byb3BzIG11c3QgYmUgbm9uLW51bGxcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wc1RvVXBkYXRlID0gbjIuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwcm9wc1RvVXBkYXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gb2xkUHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5ld1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICMxNDcxIGZvcmNlIHBhdGNoIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9PSBwcmV2IHx8IGtleSA9PT0gJ3ZhbHVlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBwcmV2LCBuZXh0LCBpc1NWRywgbjEuY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGV4dFxyXG4gICAgICAgICAgICAvLyBUaGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBvbmx5IGR5bmFtaWMgdGV4dCBjaGlsZHJlbi5cclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDEgLyogUGF0Y2hGbGFncy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobjEuY2hpbGRyZW4gIT09IG4yLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGVsLCBuMi5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCAmJiBkeW5hbWljQ2hpbGRyZW4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyB1bm9wdGltaXplZCwgZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoUHJvcHMoZWwsIG4yLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXdQcm9wcy5vblZub2RlVXBkYXRlZCkgfHwgZGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgbjIsIG4xKTtcclxuICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgJ3VwZGF0ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBUaGUgZmFzdCBwYXRoIGZvciBibG9ja3MuXHJcbiAgICBjb25zdCBwYXRjaEJsb2NrQ2hpbGRyZW4gPSAob2xkQ2hpbGRyZW4sIG5ld0NoaWxkcmVuLCBmYWxsYmFja0NvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcykgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgb2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Vk5vZGUgPSBuZXdDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjb250YWluZXIgKHBhcmVudCBlbGVtZW50KSBmb3IgdGhlIHBhdGNoLlxyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBcclxuICAgICAgICAgICAgLy8gb2xkVk5vZGUgbWF5IGJlIGFuIGVycm9yZWQgYXN5bmMgc2V0dXAoKSBjb21wb25lbnQgaW5zaWRlIFN1c3BlbnNlXHJcbiAgICAgICAgICAgIC8vIHdoaWNoIHdpbGwgbm90IGhhdmUgYSBtb3VudGVkIGVsZW1lbnRcclxuICAgICAgICAgICAgb2xkVk5vZGUuZWwgJiZcclxuICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgYSBGcmFnbWVudCwgd2UgbmVlZCB0byBwcm92aWRlIHRoZSBhY3R1YWwgcGFyZW50XHJcbiAgICAgICAgICAgICAgICAvLyBvZiB0aGUgRnJhZ21lbnQgaXRzZWxmIHNvIGl0IGNhbiBtb3ZlIGl0cyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIChvbGRWTm9kZS50eXBlID09PSBGcmFnbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgZGlmZmVyZW50IG5vZGVzLCB0aGVyZSBpcyBnb2luZyB0byBiZSBhIHJlcGxhY2VtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYWxzbyByZXF1aXJlcyB0aGUgY29ycmVjdCBwYXJlbnQgY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgIWlzU2FtZVZOb2RlVHlwZShvbGRWTm9kZSwgbmV3Vk5vZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBhIGNvbXBvbmVudCwgaXQgY291bGQgY29udGFpbiBhbnl0aGluZy5cclxuICAgICAgICAgICAgICAgICAgICBvbGRWTm9kZS5zaGFwZUZsYWcgJiAoNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyB8IDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pKVxyXG4gICAgICAgICAgICAgICAgPyBob3N0UGFyZW50Tm9kZShvbGRWTm9kZS5lbClcclxuICAgICAgICAgICAgICAgIDogLy8gSW4gb3RoZXIgY2FzZXMsIHRoZSBwYXJlbnQgY29udGFpbmVyIGlzIG5vdCBhY3R1YWxseSB1c2VkIHNvIHdlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBwYXNzIHRoZSBibG9jayBlbGVtZW50IGhlcmUgdG8gYXZvaWQgYSBET00gcGFyZW50Tm9kZSBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrQ29udGFpbmVyO1xyXG4gICAgICAgICAgICBwYXRjaChvbGRWTm9kZSwgbmV3Vk5vZGUsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBhdGNoUHJvcHMgPSAoZWwsIHZub2RlLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgaWYgKG9sZFByb3BzICE9PSBuZXdQcm9wcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nIGlzIG5vdCB2YWxpZCBwcm9wXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNSZXNlcnZlZFByb3Aoa2V5KSlcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG9sZFByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAvLyBkZWZlciBwYXRjaGluZyB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKG5leHQgIT09IHByZXYgJiYga2V5ICE9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBwcmV2LCBuZXh0LCBpc1NWRywgdm5vZGUuY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9sZFByb3BzICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9sZFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2VydmVkUHJvcChrZXkpICYmICEoa2V5IGluIG5ld1Byb3BzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIG9sZFByb3BzW2tleV0sIG51bGwsIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCd2YWx1ZScgaW4gbmV3UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICd2YWx1ZScsIG9sZFByb3BzLnZhbHVlLCBuZXdQcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0ZyYWdtZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50U3RhcnRBbmNob3IgPSAobjIuZWwgPSBuMSA/IG4xLmVsIDogaG9zdENyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICBjb25zdCBmcmFnbWVudEVuZEFuY2hvciA9IChuMi5hbmNob3IgPSBuMSA/IG4xLmFuY2hvciA6IGhvc3RDcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgbGV0IHsgcGF0Y2hGbGFnLCBkeW5hbWljQ2hpbGRyZW4sIHNsb3RTY29wZUlkczogZnJhZ21lbnRTbG90U2NvcGVJZHMgfSA9IG4yO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgLy8gIzU1MjMgZGV2IHJvb3QgZnJhZ21lbnQgbWF5IGluaGVyaXQgZGlyZWN0aXZlc1xyXG4gICAgICAgICAgICAoaXNIbXJVcGRhdGluZyB8fCBwYXRjaEZsYWcgJiAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi8pKSB7XHJcbiAgICAgICAgICAgIC8vIEhNUiB1cGRhdGVkIC8gRGV2IHJvb3QgZnJhZ21lbnQgKHcvIGNvbW1lbnRzKSwgZm9yY2UgZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyA9IDA7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIGEgc2xvdCBmcmFnbWVudCB3aXRoIDpzbG90dGVkIHNjb3BlIGlkc1xyXG4gICAgICAgIGlmIChmcmFnbWVudFNsb3RTY29wZUlkcykge1xyXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHNcclxuICAgICAgICAgICAgICAgID8gc2xvdFNjb3BlSWRzLmNvbmNhdChmcmFnbWVudFNsb3RTY29wZUlkcylcclxuICAgICAgICAgICAgICAgIDogZnJhZ21lbnRTbG90U2NvcGVJZHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZnJhZ21lbnRTdGFydEFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGZyYWdtZW50RW5kQW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIC8vIGEgZnJhZ21lbnQgY2FuIG9ubHkgaGF2ZSBhcnJheSBjaGlsZHJlblxyXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGV5IGFyZSBlaXRoZXIgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciwgb3IgaW1wbGljaXRseSBjcmVhdGVkXHJcbiAgICAgICAgICAgIC8vIGZyb20gYXJyYXlzLlxyXG4gICAgICAgICAgICBtb3VudENoaWxkcmVuKG4yLmNoaWxkcmVuLCBjb250YWluZXIsIGZyYWdtZW50RW5kQW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmIDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICMyNzE1IHRoZSBwcmV2aW91cyBmcmFnbWVudCBjb3VsZCd2ZSBiZWVuIGEgQkFJTGVkIG9uZSBhcyBhIHJlc3VsdFxyXG4gICAgICAgICAgICAgICAgLy8gb2YgcmVuZGVyU2xvdCgpIHdpdGggbm8gdmFsaWQgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIG4xLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgLy8gYSBzdGFibGUgZnJhZ21lbnQgKHRlbXBsYXRlIHJvb3Qgb3IgPHRlbXBsYXRlIHYtZm9yPikgZG9lc24ndCBuZWVkIHRvXHJcbiAgICAgICAgICAgICAgICAvLyBwYXRjaCBjaGlsZHJlbiBvcmRlciwgYnV0IGl0IG1heSBjb250YWluIGR5bmFtaWNDaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgIC8vICMyMDgwIGlmIHRoZSBzdGFibGUgZnJhZ21lbnQgaGFzIGEga2V5LCBpdCdzIGEgPHRlbXBsYXRlIHYtZm9yPiB0aGF0IG1heVxyXG4gICAgICAgICAgICAgICAgLy8gIGdldCBtb3ZlZCBhcm91bmQuIE1ha2Ugc3VyZSBhbGwgcm9vdCBsZXZlbCB2bm9kZXMgaW5oZXJpdCBlbC5cclxuICAgICAgICAgICAgICAgIC8vICMyMTM0IG9yIGlmIGl0J3MgYSBjb21wb25lbnQgcm9vdCwgaXQgbWF5IGFsc28gZ2V0IG1vdmVkIGFyb3VuZFxyXG4gICAgICAgICAgICAgICAgLy8gYXMgdGhlIGNvbXBvbmVudCBpcyBiZWluZyBtb3ZlZC5cclxuICAgICAgICAgICAgICAgIG4yLmtleSAhPSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhcmVudENvbXBvbmVudCAmJiBuMiA9PT0gcGFyZW50Q29tcG9uZW50LnN1YlRyZWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHRydWUgLyogc2hhbGxvdyAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBrZXllZCAvIHVua2V5ZWQsIG9yIG1hbnVhbCBmcmFnbWVudHMuXHJcbiAgICAgICAgICAgICAgICAvLyBmb3Iga2V5ZWQgJiB1bmtleWVkLCBzaW5jZSB0aGV5IGFyZSBjb21waWxlciBnZW5lcmF0ZWQgZnJvbSB2LWZvcixcclxuICAgICAgICAgICAgICAgIC8vIGVhY2ggY2hpbGQgaXMgZ3VhcmFudGVlZCB0byBiZSBhIGJsb2NrIHNvIHRoZSBmcmFnbWVudCB3aWxsIG5ldmVyXHJcbiAgICAgICAgICAgICAgICAvLyBoYXZlIGR5bmFtaWNDaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoQ2hpbGRyZW4objEsIG4yLCBjb250YWluZXIsIGZyYWdtZW50RW5kQW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NDb21wb25lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbjIuc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChuMi5zaGFwZUZsYWcgJiA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LmN0eC5hY3RpdmF0ZShuMiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbW91bnRDb21wb25lbnQobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50KG4xLCBuMiwgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRDb21wb25lbnQgPSAoaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gKGluaXRpYWxWTm9kZS5jb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZShpbml0aWFsVk5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluc3RhbmNlLnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICByZWdpc3RlckhNUihpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KGluaXRpYWxWTm9kZSk7XHJcbiAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYG1vdW50YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCByZW5kZXJlciBpbnRlcm5hbHMgZm9yIGtlZXBBbGl2ZVxyXG4gICAgICAgIGlmIChpc0tlZXBBbGl2ZShpbml0aWFsVk5vZGUpKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmN0eC5yZW5kZXJlciA9IGludGVybmFscztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcmVzb2x2ZSBwcm9wcyBhbmQgc2xvdHMgZm9yIHNldHVwIGNvbnRleHRcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGluaXRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXR1cENvbXBvbmVudChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBpbml0YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0dXAoKSBpcyBhc3luYy4gVGhpcyBjb21wb25lbnQgcmVsaWVzIG9uIGFzeW5jIGxvZ2ljIHRvIGJlIHJlc29sdmVkXHJcbiAgICAgICAgLy8gYmVmb3JlIHByb2NlZWRpbmdcclxuICAgICAgICBpZiAoaW5zdGFuY2UuYXN5bmNEZXApIHtcclxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UgJiYgcGFyZW50U3VzcGVuc2UucmVnaXN0ZXJEZXAoaW5zdGFuY2UsIHNldHVwUmVuZGVyRWZmZWN0KTtcclxuICAgICAgICAgICAgLy8gR2l2ZSBpdCBhIHBsYWNlaG9sZGVyIGlmIHRoaXMgaXMgbm90IGh5ZHJhdGlvblxyXG4gICAgICAgICAgICAvLyBUT0RPIGhhbmRsZSBzZWxmLWRlZmluZWQgZmFsbGJhY2tcclxuICAgICAgICAgICAgaWYgKCFpbml0aWFsVk5vZGUuZWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gKGluc3RhbmNlLnN1YlRyZWUgPSBjcmVhdGVWTm9kZShDb21tZW50KSk7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWVudE5vZGUobnVsbCwgcGxhY2Vob2xkZXIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldHVwUmVuZGVyRWZmZWN0KGluc3RhbmNlLCBpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgbW91bnRgKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdXBkYXRlQ29tcG9uZW50ID0gKG4xLCBuMiwgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAobjIuY29tcG9uZW50ID0gbjEuY29tcG9uZW50KTtcclxuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlQ29tcG9uZW50KG4xLCBuMiwgb3B0aW1pemVkKSkge1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UuYXN5bmNEZXAgJiZcclxuICAgICAgICAgICAgICAgICFpbnN0YW5jZS5hc3luY1Jlc29sdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhc3luYyAmIHN0aWxsIHBlbmRpbmcgLSBqdXN0IHVwZGF0ZSBwcm9wcyBhbmQgc2xvdHNcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBjb21wb25lbnQncyByZWFjdGl2ZSBlZmZlY3QgZm9yIHJlbmRlciBpc24ndCBzZXQtdXAgeWV0XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KG4yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihpbnN0YW5jZSwgbjIsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbCB1cGRhdGVcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLm5leHQgPSBuMjtcclxuICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgdGhlIGNoaWxkIGNvbXBvbmVudCBpcyBhbHNvIHF1ZXVlZCwgcmVtb3ZlIGl0IHRvIGF2b2lkXHJcbiAgICAgICAgICAgICAgICAvLyBkb3VibGUgdXBkYXRpbmcgdGhlIHNhbWUgY2hpbGQgY29tcG9uZW50IGluIHRoZSBzYW1lIGZsdXNoLlxyXG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZUpvYihpbnN0YW5jZS51cGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UudXBkYXRlIGlzIHRoZSByZWFjdGl2ZSBlZmZlY3QuXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS51cGRhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm8gdXBkYXRlIG5lZWRlZC4ganVzdCBjb3B5IG92ZXIgcHJvcGVydGllc1xyXG4gICAgICAgICAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS52bm9kZSA9IG4yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZXR1cFJlbmRlckVmZmVjdCA9IChpbnN0YW5jZSwgaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRVcGRhdGVGbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGVsLCBwcm9wcyB9ID0gaW5pdGlhbFZOb2RlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBibSwgbSwgcGFyZW50IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQXN5bmNXcmFwcGVyVk5vZGUgPSBpc0FzeW5jV3JhcHBlcihpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlTW91bnQgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKGJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYm0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZUJlZm9yZU1vdW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsICYmIGh5ZHJhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgaGFzIGFkb3B0ZWQgaG9zdCBub2RlIC0gcGVyZm9ybSBoeWRyYXRpb24gaW5zdGVhZCBvZiBtb3VudC5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoeWRyYXRlU3ViVHJlZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3ViVHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgaHlkcmF0ZWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVOb2RlKGVsLCBpbnN0YW5jZS5zdWJUcmVlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaHlkcmF0ZWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXJWTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUudHlwZS5fX2FzeW5jTG9hZGVyKCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90ZTogd2UgYXJlIG1vdmluZyB0aGUgcmVuZGVyIGNhbGwgaW50byBhbiBhc3luYyBjYWxsYmFjayxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggbWVhbnMgaXQgd29uJ3QgdHJhY2sgZGVwZW5kZW5jaWVzIC0gYnV0IGl0J3Mgb2sgYmVjYXVzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHNlcnZlci1yZW5kZXJlZCBhc3luYyB3cmFwcGVyIGlzIGFscmVhZHkgaW4gcmVzb2x2ZWQgc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGl0IHdpbGwgbmV2ZXIgbmVlZCB0byBjaGFuZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICFpbnN0YW5jZS5pc1VubW91bnRlZCAmJiBoeWRyYXRlU3ViVHJlZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVTdWJUcmVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViVHJlZSA9IChpbnN0YW5jZS5zdWJUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIHN1YlRyZWUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUuZWwgPSBzdWJUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnRlZCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAobSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChtLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlTW91bnRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FzeW5jV3JhcHBlclZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlZEluaXRpYWxWTm9kZSA9IGluaXRpYWxWTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBzY29wZWRJbml0aWFsVk5vZGUpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZWQgaG9vayBmb3Iga2VlcC1hbGl2ZSByb290cy5cclxuICAgICAgICAgICAgICAgIC8vICMxNzQyIGFjdGl2YXRlZCBob29rIG11c3QgYmUgYWNjZXNzZWQgYWZ0ZXIgZmlyc3QgcmVuZGVyXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgaG9vayBtYXkgYmUgaW5qZWN0ZWQgYnkgYSBjaGlsZCBrZWVwLWFsaXZlXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbFZOb2RlLnNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBc3luY1dyYXBwZXIocGFyZW50LnZub2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQudm5vZGUuc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmEgJiYgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGluc3RhbmNlLmEsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50QWRkZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gIzI0NTg6IGRlZmVyZW5jZSBtb3VudC1vbmx5IG9iamVjdCBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgbWVtbGVha3NcclxuICAgICAgICAgICAgICAgIGluaXRpYWxWTm9kZSA9IGNvbnRhaW5lciA9IGFuY2hvciA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVDb21wb25lbnRcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IG11dGF0aW9uIG9mIGNvbXBvbmVudCdzIG93biBzdGF0ZSAobmV4dDogbnVsbClcclxuICAgICAgICAgICAgICAgIC8vIE9SIHBhcmVudCBjYWxsaW5nIHByb2Nlc3NDb21wb25lbnQgKG5leHQ6IFZOb2RlKVxyXG4gICAgICAgICAgICAgICAgbGV0IHsgbmV4dCwgYnUsIHUsIHBhcmVudCwgdm5vZGUgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbk5leHQgPSBuZXh0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQobmV4dCB8fCBpbnN0YW5jZS52bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBEaXNhbGxvdyBjb21wb25lbnQgZWZmZWN0IHJlY3Vyc2lvbiBkdXJpbmcgcHJlLWxpZmVjeWNsZSBob29rcy5cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dC5lbCA9IHZub2RlLmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihpbnN0YW5jZSwgbmV4dCwgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZVVwZGF0ZSBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAoYnUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VBcnJheUZucyhidSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlQmVmb3JlVXBkYXRlXHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5leHQucHJvcHMgJiYgbmV4dC5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgbmV4dCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlRyZWUgPSBpbnN0YW5jZS5zdWJUcmVlO1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3ViVHJlZSA9IG5leHRUcmVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwYXRjaChwcmV2VHJlZSwgbmV4dFRyZWUsIFxyXG4gICAgICAgICAgICAgICAgLy8gcGFyZW50IG1heSBoYXZlIGNoYW5nZWQgaWYgaXQncyBpbiBhIHRlbGVwb3J0XHJcbiAgICAgICAgICAgICAgICBob3N0UGFyZW50Tm9kZShwcmV2VHJlZS5lbCksIFxyXG4gICAgICAgICAgICAgICAgLy8gYW5jaG9yIG1heSBoYXZlIGNoYW5nZWQgaWYgaXQncyBpbiBhIGZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICBnZXROZXh0SG9zdE5vZGUocHJldlRyZWUpLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5leHQuZWwgPSBuZXh0VHJlZS5lbDtcclxuICAgICAgICAgICAgICAgIGlmIChvcmlnaW5OZXh0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VsZi10cmlnZ2VyZWQgdXBkYXRlLiBJbiBjYXNlIG9mIEhPQywgdXBkYXRlIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSBlbC4gSE9DIGlzIGluZGljYXRlZCBieSBwYXJlbnQgaW5zdGFuY2UncyBzdWJUcmVlIHBvaW50aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdG8gY2hpbGQgY29tcG9uZW50J3Mgdm5vZGVcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVIT0NIb3N0RWwoaW5zdGFuY2UsIG5leHRUcmVlLmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZWQgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKHUpIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QodSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZVVwZGF0ZWRcclxuICAgICAgICAgICAgICAgIGlmICgodm5vZGVIb29rID0gbmV4dC5wcm9wcyAmJiBuZXh0LnByb3BzLm9uVm5vZGVVcGRhdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIG5leHQsIHZub2RlKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIGNyZWF0ZSByZWFjdGl2ZSBlZmZlY3QgZm9yIHJlbmRlcmluZ1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdCA9IChpbnN0YW5jZS5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoY29tcG9uZW50VXBkYXRlRm4sICgpID0+IHF1ZXVlSm9iKHVwZGF0ZSksIGluc3RhbmNlLnNjb3BlIC8vIHRyYWNrIGl0IGluIGNvbXBvbmVudCdzIGVmZmVjdCBzY29wZVxyXG4gICAgICAgICkpO1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9IChpbnN0YW5jZS51cGRhdGUgPSAoKSA9PiBlZmZlY3QucnVuKCkpO1xyXG4gICAgICAgIHVwZGF0ZS5pZCA9IGluc3RhbmNlLnVpZDtcclxuICAgICAgICAvLyBhbGxvd1JlY3Vyc2VcclxuICAgICAgICAvLyAjMTgwMSwgIzIwNDMgY29tcG9uZW50IHJlbmRlciBlZmZlY3RzIHNob3VsZCBhbGxvdyByZWN1cnNpdmUgdXBkYXRlc1xyXG4gICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgZWZmZWN0Lm9uVHJhY2sgPSBpbnN0YW5jZS5ydGNcclxuICAgICAgICAgICAgICAgID8gZSA9PiBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5ydGMsIGUpXHJcbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcclxuICAgICAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlciA9IGluc3RhbmNlLnJ0Z1xyXG4gICAgICAgICAgICAgICAgPyBlID0+IGludm9rZUFycmF5Rm5zKGluc3RhbmNlLnJ0ZywgZSlcclxuICAgICAgICAgICAgICAgIDogdm9pZCAwO1xyXG4gICAgICAgICAgICB1cGRhdGUub3duZXJJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB1cGRhdGUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIgPSAoaW5zdGFuY2UsIG5leHRWTm9kZSwgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbmV4dFZOb2RlLmNvbXBvbmVudCA9IGluc3RhbmNlO1xyXG4gICAgICAgIGNvbnN0IHByZXZQcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzO1xyXG4gICAgICAgIGluc3RhbmNlLnZub2RlID0gbmV4dFZOb2RlO1xyXG4gICAgICAgIGluc3RhbmNlLm5leHQgPSBudWxsO1xyXG4gICAgICAgIHVwZGF0ZVByb3BzKGluc3RhbmNlLCBuZXh0Vk5vZGUucHJvcHMsIHByZXZQcm9wcywgb3B0aW1pemVkKTtcclxuICAgICAgICB1cGRhdGVTbG90cyhpbnN0YW5jZSwgbmV4dFZOb2RlLmNoaWxkcmVuLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAvLyBwcm9wcyB1cGRhdGUgbWF5IGhhdmUgdHJpZ2dlcmVkIHByZS1mbHVzaCB3YXRjaGVycy5cclxuICAgICAgICAvLyBmbHVzaCB0aGVtIGJlZm9yZSB0aGUgcmVuZGVyIHVwZGF0ZS5cclxuICAgICAgICBmbHVzaFByZUZsdXNoQ2JzKCk7XHJcbiAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHBhdGNoQ2hpbGRyZW4gPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcclxuICAgICAgICBjb25zdCBjMSA9IG4xICYmIG4xLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHByZXZTaGFwZUZsYWcgPSBuMSA/IG4xLnNoYXBlRmxhZyA6IDA7XHJcbiAgICAgICAgY29uc3QgYzIgPSBuMi5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCB7IHBhdGNoRmxhZywgc2hhcGVGbGFnIH0gPSBuMjtcclxuICAgICAgICAvLyBmYXN0IHBhdGhcclxuICAgICAgICBpZiAocGF0Y2hGbGFnID4gMCkge1xyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgZWl0aGVyIGZ1bGx5LWtleWVkIG9yIG1peGVkIChzb21lIGtleWVkIHNvbWUgbm90KVxyXG4gICAgICAgICAgICAgICAgLy8gcHJlc2VuY2Ugb2YgcGF0Y2hGbGFnIG1lYW5zIGNoaWxkcmVuIGFyZSBndWFyYW50ZWVkIHRvIGJlIGFycmF5c1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2hGbGFnICYgMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gdW5rZXllZFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hVbmtleWVkQ2hpbGRyZW4oYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjaGlsZHJlbiBoYXMgMyBwb3NzaWJpbGl0aWVzOiB0ZXh0LCBhcnJheSBvciBubyBjaGlsZHJlbi5cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgLy8gdGV4dCBjaGlsZHJlbiBmYXN0IHBhdGhcclxuICAgICAgICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjMiAhPT0gYzEpIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChjb250YWluZXIsIGMyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBwcmV2IGNoaWxkcmVuIHdhcyBhcnJheVxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0d28gYXJyYXlzLCBjYW5ub3QgYXNzdW1lIGFueXRoaW5nLCBkbyBmdWxsIGRpZmZcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEtleWVkQ2hpbGRyZW4oYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vIG5ldyBjaGlsZHJlbiwganVzdCB1bm1vdW50IG9sZFxyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihjMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBwcmV2IGNoaWxkcmVuIHdhcyB0ZXh0IE9SIG51bGxcclxuICAgICAgICAgICAgICAgIC8vIG5ldyBjaGlsZHJlbiBpcyBhcnJheSBPUiBudWxsXHJcbiAgICAgICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGNvbnRhaW5lciwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnQgbmV3IGlmIGFycmF5XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBhdGNoVW5rZXllZENoaWxkcmVuID0gKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGMxID0gYzEgfHwgRU1QVFlfQVJSO1xyXG4gICAgICAgIGMyID0gYzIgfHwgRU1QVFlfQVJSO1xyXG4gICAgICAgIGNvbnN0IG9sZExlbmd0aCA9IGMxLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBuZXdMZW5ndGggPSBjMi5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgY29tbW9uTGVuZ3RoID0gTWF0aC5taW4ob2xkTGVuZ3RoLCBuZXdMZW5ndGgpO1xyXG4gICAgICAgIGxldCBpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb21tb25MZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0Q2hpbGQgPSAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgIHBhdGNoKGMxW2ldLCBuZXh0Q2hpbGQsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9sZExlbmd0aCA+IG5ld0xlbmd0aCkge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgb2xkXHJcbiAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihjMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSwgZmFsc2UsIGNvbW1vbkxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBtb3VudCBuZXdcclxuICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgY29tbW9uTGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gY2FuIGJlIGFsbC1rZXllZCBvciBtaXhlZFxyXG4gICAgY29uc3QgcGF0Y2hLZXllZENoaWxkcmVuID0gKGMxLCBjMiwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICBjb25zdCBsMiA9IGMyLmxlbmd0aDtcclxuICAgICAgICBsZXQgZTEgPSBjMS5sZW5ndGggLSAxOyAvLyBwcmV2IGVuZGluZyBpbmRleFxyXG4gICAgICAgIGxldCBlMiA9IGwyIC0gMTsgLy8gbmV4dCBlbmRpbmcgaW5kZXhcclxuICAgICAgICAvLyAxLiBzeW5jIGZyb20gc3RhcnRcclxuICAgICAgICAvLyAoYSBiKSBjXHJcbiAgICAgICAgLy8gKGEgYikgZCBlXHJcbiAgICAgICAgd2hpbGUgKGkgPD0gZTEgJiYgaSA8PSBlMikge1xyXG4gICAgICAgICAgICBjb25zdCBuMSA9IGMxW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBuMiA9IChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pKTtcclxuICAgICAgICAgICAgaWYgKGlzU2FtZVZOb2RlVHlwZShuMSwgbjIpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaChuMSwgbjIsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMi4gc3luYyBmcm9tIGVuZFxyXG4gICAgICAgIC8vIGEgKGIgYylcclxuICAgICAgICAvLyBkIGUgKGIgYylcclxuICAgICAgICB3aGlsZSAoaSA8PSBlMSAmJiBpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4xID0gYzFbZTFdO1xyXG4gICAgICAgICAgICBjb25zdCBuMiA9IChjMltlMl0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbZTJdKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltlMl0pKTtcclxuICAgICAgICAgICAgaWYgKGlzU2FtZVZOb2RlVHlwZShuMSwgbjIpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaChuMSwgbjIsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGUxLS07XHJcbiAgICAgICAgICAgIGUyLS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDMuIGNvbW1vbiBzZXF1ZW5jZSArIG1vdW50XHJcbiAgICAgICAgLy8gKGEgYilcclxuICAgICAgICAvLyAoYSBiKSBjXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gMSwgZTIgPSAyXHJcbiAgICAgICAgLy8gKGEgYilcclxuICAgICAgICAvLyBjIChhIGIpXHJcbiAgICAgICAgLy8gaSA9IDAsIGUxID0gLTEsIGUyID0gMFxyXG4gICAgICAgIGlmIChpID4gZTEpIHtcclxuICAgICAgICAgICAgaWYgKGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQb3MgPSBlMiArIDE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0UG9zIDwgbDIgPyBjMltuZXh0UG9zXS5lbCA6IHBhcmVudEFuY2hvcjtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pKSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDQuIGNvbW1vbiBzZXF1ZW5jZSArIHVubW91bnRcclxuICAgICAgICAvLyAoYSBiKSBjXHJcbiAgICAgICAgLy8gKGEgYilcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSAyLCBlMiA9IDFcclxuICAgICAgICAvLyBhIChiIGMpXHJcbiAgICAgICAgLy8gKGIgYylcclxuICAgICAgICAvLyBpID0gMCwgZTEgPSAwLCBlMiA9IC0xXHJcbiAgICAgICAgZWxzZSBpZiAoaSA+IGUyKSB7XHJcbiAgICAgICAgICAgIHdoaWxlIChpIDw9IGUxKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGMxW2ldLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA1LiB1bmtub3duIHNlcXVlbmNlXHJcbiAgICAgICAgLy8gW2kgLi4uIGUxICsgMV06IGEgYiBbYyBkIGVdIGYgZ1xyXG4gICAgICAgIC8vIFtpIC4uLiBlMiArIDFdOiBhIGIgW2UgZCBjIGhdIGYgZ1xyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDQsIGUyID0gNVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBzMSA9IGk7IC8vIHByZXYgc3RhcnRpbmcgaW5kZXhcclxuICAgICAgICAgICAgY29uc3QgczIgPSBpOyAvLyBuZXh0IHN0YXJ0aW5nIGluZGV4XHJcbiAgICAgICAgICAgIC8vIDUuMSBidWlsZCBrZXk6aW5kZXggbWFwIGZvciBuZXdDaGlsZHJlblxyXG4gICAgICAgICAgICBjb25zdCBrZXlUb05ld0luZGV4TWFwID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSBzMjsgaSA8PSBlMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q2hpbGQgPSAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0Q2hpbGQua2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleVRvTmV3SW5kZXhNYXAuaGFzKG5leHRDaGlsZC5rZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYER1cGxpY2F0ZSBrZXlzIGZvdW5kIGR1cmluZyB1cGRhdGU6YCwgSlNPTi5zdHJpbmdpZnkobmV4dENoaWxkLmtleSksIGBNYWtlIHN1cmUga2V5cyBhcmUgdW5pcXVlLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBrZXlUb05ld0luZGV4TWFwLnNldChuZXh0Q2hpbGQua2V5LCBpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyA1LjIgbG9vcCB0aHJvdWdoIG9sZCBjaGlsZHJlbiBsZWZ0IHRvIGJlIHBhdGNoZWQgYW5kIHRyeSB0byBwYXRjaFxyXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBub2RlcyAmIHJlbW92ZSBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudFxyXG4gICAgICAgICAgICBsZXQgajtcclxuICAgICAgICAgICAgbGV0IHBhdGNoZWQgPSAwO1xyXG4gICAgICAgICAgICBjb25zdCB0b0JlUGF0Y2hlZCA9IGUyIC0gczIgKyAxO1xyXG4gICAgICAgICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gdXNlZCB0byB0cmFjayB3aGV0aGVyIGFueSBub2RlIGhhcyBtb3ZlZFxyXG4gICAgICAgICAgICBsZXQgbWF4TmV3SW5kZXhTb0ZhciA9IDA7XHJcbiAgICAgICAgICAgIC8vIHdvcmtzIGFzIE1hcDxuZXdJbmRleCwgb2xkSW5kZXg+XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBvbGRJbmRleCBpcyBvZmZzZXQgYnkgKzFcclxuICAgICAgICAgICAgLy8gYW5kIG9sZEluZGV4ID0gMCBpcyBhIHNwZWNpYWwgdmFsdWUgaW5kaWNhdGluZyB0aGUgbmV3IG5vZGUgaGFzXHJcbiAgICAgICAgICAgIC8vIG5vIGNvcnJlc3BvbmRpbmcgb2xkIG5vZGUuXHJcbiAgICAgICAgICAgIC8vIHVzZWQgZm9yIGRldGVybWluaW5nIGxvbmdlc3Qgc3RhYmxlIHN1YnNlcXVlbmNlXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4VG9PbGRJbmRleE1hcCA9IG5ldyBBcnJheSh0b0JlUGF0Y2hlZCk7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b0JlUGF0Y2hlZDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgbmV3SW5kZXhUb09sZEluZGV4TWFwW2ldID0gMDtcclxuICAgICAgICAgICAgZm9yIChpID0gczE7IGkgPD0gZTE7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldkNoaWxkID0gYzFbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hlZCA+PSB0b0JlUGF0Y2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsbCBuZXcgY2hpbGRyZW4gaGF2ZSBiZWVuIHBhdGNoZWQgc28gdGhpcyBjYW4gb25seSBiZSBhIHJlbW92YWxcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KHByZXZDaGlsZCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3SW5kZXg7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldkNoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3SW5kZXggPSBrZXlUb05ld0luZGV4TWFwLmdldChwcmV2Q2hpbGQua2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGtleS1sZXNzIG5vZGUsIHRyeSB0byBsb2NhdGUgYSBrZXktbGVzcyBub2RlIG9mIHRoZSBzYW1lIHR5cGVcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBzMjsgaiA8PSBlMjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleFRvT2xkSW5kZXhNYXBbaiAtIHMyXSA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTYW1lVk5vZGVUeXBlKHByZXZDaGlsZCwgYzJbal0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbmRleCA9IGo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChwcmV2Q2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3SW5kZXhUb09sZEluZGV4TWFwW25ld0luZGV4IC0gczJdID0gaSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4ID49IG1heE5ld0luZGV4U29GYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4TmV3SW5kZXhTb0ZhciA9IG5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChwcmV2Q2hpbGQsIGMyW25ld0luZGV4XSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoZWQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyA1LjMgbW92ZSBhbmQgbW91bnRcclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGUgbG9uZ2VzdCBzdGFibGUgc3Vic2VxdWVuY2Ugb25seSB3aGVuIG5vZGVzIGhhdmUgbW92ZWRcclxuICAgICAgICAgICAgY29uc3QgaW5jcmVhc2luZ05ld0luZGV4U2VxdWVuY2UgPSBtb3ZlZFxyXG4gICAgICAgICAgICAgICAgPyBnZXRTZXF1ZW5jZShuZXdJbmRleFRvT2xkSW5kZXhNYXApXHJcbiAgICAgICAgICAgICAgICA6IEVNUFRZX0FSUjtcclxuICAgICAgICAgICAgaiA9IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgIC8vIGxvb3BpbmcgYmFja3dhcmRzIHNvIHRoYXQgd2UgY2FuIHVzZSBsYXN0IHBhdGNoZWQgbm9kZSBhcyBhbmNob3JcclxuICAgICAgICAgICAgZm9yIChpID0gdG9CZVBhdGNoZWQgLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gczIgKyBpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gYzJbbmV4dEluZGV4XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IG5leHRJbmRleCArIDEgPCBsMiA/IGMyW25leHRJbmRleCArIDFdLmVsIDogcGFyZW50QW5jaG9yO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4VG9PbGRJbmRleE1hcFtpXSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdW50IG5ld1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIG5leHRDaGlsZCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgaWY6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc3RhYmxlIHN1YnNlcXVlbmNlIChlLmcuIGEgcmV2ZXJzZSlcclxuICAgICAgICAgICAgICAgICAgICAvLyBPUiBjdXJyZW50IG5vZGUgaXMgbm90IGFtb25nIHRoZSBzdGFibGUgc2VxdWVuY2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IDAgfHwgaSAhPT0gaW5jcmVhc2luZ05ld0luZGV4U2VxdWVuY2Vbal0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShuZXh0Q2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCAyIC8qIE1vdmVUeXBlLlJFT1JERVIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgai0tO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3ZlID0gKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUsIHBhcmVudFN1c3BlbnNlID0gbnVsbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgZWwsIHR5cGUsIHRyYW5zaXRpb24sIGNoaWxkcmVuLCBzaGFwZUZsYWcgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHZub2RlLnN1c3BlbnNlLm1vdmUoY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICB0eXBlLm1vdmUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBGcmFnbWVudCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIG1vdmUoY2hpbGRyZW5baV0sIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaG9zdEluc2VydCh2bm9kZS5hbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gU3RhdGljKSB7XHJcbiAgICAgICAgICAgIG1vdmVTdGF0aWNOb2RlKHZub2RlLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2luZ2xlIG5vZGVzXHJcbiAgICAgICAgY29uc3QgbmVlZFRyYW5zaXRpb24gPSBtb3ZlVHlwZSAhPT0gMiAvKiBNb3ZlVHlwZS5SRU9SREVSICovICYmXHJcbiAgICAgICAgICAgIHNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb247XHJcbiAgICAgICAgaWYgKG5lZWRUcmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChtb3ZlVHlwZSA9PT0gMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLykge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gdHJhbnNpdGlvbi5lbnRlcihlbCksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGVhdmUsIGRlbGF5TGVhdmUsIGFmdGVyTGVhdmUgfSA9IHRyYW5zaXRpb247XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmUgPSAoKSA9PiBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJmb3JtTGVhdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVhdmUoZWwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGlmIChkZWxheUxlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXlMZWF2ZShlbCwgcmVtb3ZlLCBwZXJmb3JtTGVhdmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGVyZm9ybUxlYXZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5tb3VudCA9ICh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUgPSBmYWxzZSwgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCByZWYsIGNoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4sIHNoYXBlRmxhZywgcGF0Y2hGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICAvLyB1bnNldCByZWZcclxuICAgICAgICBpZiAocmVmICE9IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0UmVmKHJlZiwgbnVsbCwgcGFyZW50U3VzcGVuc2UsIHZub2RlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykge1xyXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQuY3R4LmRlYWN0aXZhdGUodm5vZGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNob3VsZEludm9rZURpcnMgPSBzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJiBkaXJzO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZEludm9rZVZub2RlSG9vayA9ICFpc0FzeW5jV3JhcHBlcih2bm9kZSk7XHJcbiAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICBpZiAoc2hvdWxkSW52b2tlVm5vZGVIb29rICYmXHJcbiAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlQmVmb3JlVW5tb3VudCkpIHtcclxuICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIHVubW91bnRDb21wb25lbnQodm5vZGUuY29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5zdXNwZW5zZS51bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNob3VsZEludm9rZURpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZVVubW91bnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUudHlwZS5yZW1vdmUodm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG9wdGltaXplZCwgaW50ZXJuYWxzLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZHluYW1pY0NoaWxkcmVuICYmXHJcbiAgICAgICAgICAgICAgICAvLyAjMTE1MzogZmFzdCBwYXRoIHNob3VsZCBub3QgYmUgdGFrZW4gZm9yIG5vbi1zdGFibGUgKHYtZm9yKSBmcmFnbWVudHNcclxuICAgICAgICAgICAgICAgICh0eXBlICE9PSBGcmFnbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChwYXRjaEZsYWcgPiAwICYmIHBhdGNoRmxhZyAmIDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovKSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhc3QgcGF0aCBmb3IgYmxvY2sgbm9kZXM6IG9ubHkgbmVlZCB0byB1bm1vdW50IGR5bmFtaWMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oZHluYW1pY0NoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHR5cGUgPT09IEZyYWdtZW50ICYmXHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJlxyXG4gICAgICAgICAgICAgICAgICAgICgxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqLyB8IDI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi8pKSB8fFxyXG4gICAgICAgICAgICAgICAgKCFvcHRpbWl6ZWQgJiYgc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihjaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRvUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmUodm5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgoc2hvdWxkSW52b2tlVm5vZGVIb29rICYmXHJcbiAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlVW5tb3VudGVkKSkgfHxcclxuICAgICAgICAgICAgc2hvdWxkSW52b2tlRGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkSW52b2tlRGlycyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ3VubW91bnRlZCcpO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZSA9IHZub2RlID0+IHtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIGVsLCBhbmNob3IsIHRyYW5zaXRpb24gfSA9IHZub2RlO1xyXG4gICAgICAgIGlmICh0eXBlID09PSBGcmFnbWVudCkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5wYXRjaEZsYWcgJiAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgICAgICF0cmFuc2l0aW9uLnBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFJlbW92ZShjaGlsZC5lbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlRnJhZ21lbnQoZWwsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gU3RhdGljKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZVN0YXRpY05vZGUodm5vZGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBlcmZvcm1SZW1vdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoZWwpO1xyXG4gICAgICAgICAgICBpZiAodHJhbnNpdGlvbiAmJiAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQgJiYgdHJhbnNpdGlvbi5hZnRlckxlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmFmdGVyTGVhdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgIXRyYW5zaXRpb24ucGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbGVhdmUsIGRlbGF5TGVhdmUgfSA9IHRyYW5zaXRpb247XHJcbiAgICAgICAgICAgIGNvbnN0IHBlcmZvcm1MZWF2ZSA9ICgpID0+IGxlYXZlKGVsLCBwZXJmb3JtUmVtb3ZlKTtcclxuICAgICAgICAgICAgaWYgKGRlbGF5TGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIGRlbGF5TGVhdmUodm5vZGUuZWwsIHBlcmZvcm1SZW1vdmUsIHBlcmZvcm1MZWF2ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwZXJmb3JtTGVhdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGVyZm9ybVJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCByZW1vdmVGcmFnbWVudCA9IChjdXIsIGVuZCkgPT4ge1xyXG4gICAgICAgIC8vIEZvciBmcmFnbWVudHMsIGRpcmVjdGx5IHJlbW92ZSBhbGwgY29udGFpbmVkIERPTSBub2Rlcy5cclxuICAgICAgICAvLyAoZnJhZ21lbnQgY2hpbGQgbm9kZXMgY2Fubm90IGhhdmUgdHJhbnNpdGlvbilcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoY3VyICE9PSBlbmQpIHtcclxuICAgICAgICAgICAgbmV4dCA9IGhvc3ROZXh0U2libGluZyhjdXIpO1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGN1cik7XHJcbiAgICAgICAgICAgIGN1ciA9IG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RSZW1vdmUoZW5kKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50Q29tcG9uZW50ID0gKGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluc3RhbmNlLnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICB1bnJlZ2lzdGVySE1SKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBidW0sIHNjb3BlLCB1cGRhdGUsIHN1YlRyZWUsIHVtIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAvLyBiZWZvcmVVbm1vdW50IGhvb2tcclxuICAgICAgICBpZiAoYnVtKSB7XHJcbiAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJ1bSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHN0b3AgZWZmZWN0cyBpbiBjb21wb25lbnQgc2NvcGVcclxuICAgICAgICBzY29wZS5zdG9wKCk7XHJcbiAgICAgICAgLy8gdXBkYXRlIG1heSBiZSBudWxsIGlmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgaXRzIGFzeW5jXHJcbiAgICAgICAgLy8gc2V0dXAgaGFzIHJlc29sdmVkLlxyXG4gICAgICAgIGlmICh1cGRhdGUpIHtcclxuICAgICAgICAgICAgLy8gc28gdGhhdCBzY2hlZHVsZXIgd2lsbCBubyBsb25nZXIgaW52b2tlIGl0XHJcbiAgICAgICAgICAgIHVwZGF0ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdW5tb3VudChzdWJUcmVlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdW5tb3VudGVkIGhvb2tcclxuICAgICAgICBpZiAodW0pIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KHVtLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmlzVW5tb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgLy8gQSBjb21wb25lbnQgd2l0aCBhc3luYyBkZXAgaW5zaWRlIGEgcGVuZGluZyBzdXNwZW5zZSBpcyB1bm1vdW50ZWQgYmVmb3JlXHJcbiAgICAgICAgLy8gaXRzIGFzeW5jIGRlcCByZXNvbHZlcy4gVGhpcyBzaG91bGQgcmVtb3ZlIHRoZSBkZXAgZnJvbSB0aGUgc3VzcGVuc2UsIGFuZFxyXG4gICAgICAgIC8vIGNhdXNlIHRoZSBzdXNwZW5zZSB0byByZXNvbHZlIGltbWVkaWF0ZWx5IGlmIHRoYXQgd2FzIHRoZSBsYXN0IGRlcC5cclxuICAgICAgICBpZiAocGFyZW50U3VzcGVuc2UgJiZcclxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UucGVuZGluZ0JyYW5jaCAmJlxyXG4gICAgICAgICAgICAhcGFyZW50U3VzcGVuc2UuaXNVbm1vdW50ZWQgJiZcclxuICAgICAgICAgICAgaW5zdGFuY2UuYXN5bmNEZXAgJiZcclxuICAgICAgICAgICAgIWluc3RhbmNlLmFzeW5jUmVzb2x2ZWQgJiZcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc3VzcGVuc2VJZCA9PT0gcGFyZW50U3VzcGVuc2UucGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLmRlcHMtLTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudFN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50Q2hpbGRyZW4gPSAoY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlLCBzdGFydCA9IDApID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB1bm1vdW50KGNoaWxkcmVuW2ldLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSwgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZ2V0TmV4dEhvc3ROb2RlID0gdm5vZGUgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXROZXh0SG9zdE5vZGUodm5vZGUuY29tcG9uZW50LnN1YlRyZWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZub2RlLnN1c3BlbnNlLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhvc3ROZXh0U2libGluZygodm5vZGUuYW5jaG9yIHx8IHZub2RlLmVsKSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVuZGVyID0gKHZub2RlLCBjb250YWluZXIsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgaWYgKHZub2RlID09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5fdm5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoY29udGFpbmVyLl92bm9kZSwgbnVsbCwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoKGNvbnRhaW5lci5fdm5vZGUgfHwgbnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbnVsbCwgbnVsbCwgbnVsbCwgaXNTVkcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmbHVzaFByZUZsdXNoQ2JzKCk7XHJcbiAgICAgICAgZmx1c2hQb3N0Rmx1c2hDYnMoKTtcclxuICAgICAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaW50ZXJuYWxzID0ge1xyXG4gICAgICAgIHA6IHBhdGNoLFxyXG4gICAgICAgIHVtOiB1bm1vdW50LFxyXG4gICAgICAgIG06IG1vdmUsXHJcbiAgICAgICAgcjogcmVtb3ZlLFxyXG4gICAgICAgIG10OiBtb3VudENvbXBvbmVudCxcclxuICAgICAgICBtYzogbW91bnRDaGlsZHJlbixcclxuICAgICAgICBwYzogcGF0Y2hDaGlsZHJlbixcclxuICAgICAgICBwYmM6IHBhdGNoQmxvY2tDaGlsZHJlbixcclxuICAgICAgICBuOiBnZXROZXh0SG9zdE5vZGUsXHJcbiAgICAgICAgbzogb3B0aW9uc1xyXG4gICAgfTtcclxuICAgIGxldCBoeWRyYXRlO1xyXG4gICAgbGV0IGh5ZHJhdGVOb2RlO1xyXG4gICAgaWYgKGNyZWF0ZUh5ZHJhdGlvbkZucykge1xyXG4gICAgICAgIFtoeWRyYXRlLCBoeWRyYXRlTm9kZV0gPSBjcmVhdGVIeWRyYXRpb25GbnMoaW50ZXJuYWxzKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVuZGVyLFxyXG4gICAgICAgIGh5ZHJhdGUsXHJcbiAgICAgICAgY3JlYXRlQXBwOiBjcmVhdGVBcHBBUEkocmVuZGVyLCBoeWRyYXRlKVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiB0b2dnbGVSZWN1cnNlKHsgZWZmZWN0LCB1cGRhdGUgfSwgYWxsb3dlZCkge1xyXG4gICAgZWZmZWN0LmFsbG93UmVjdXJzZSA9IHVwZGF0ZS5hbGxvd1JlY3Vyc2UgPSBhbGxvd2VkO1xyXG59XHJcbi8qKlxyXG4gKiAjMTE1NlxyXG4gKiBXaGVuIGEgY29tcG9uZW50IGlzIEhNUi1lbmFibGVkLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBzdGF0aWMgbm9kZXNcclxuICogaW5zaWRlIGEgYmxvY2sgYWxzbyBpbmhlcml0IHRoZSBET00gZWxlbWVudCBmcm9tIHRoZSBwcmV2aW91cyB0cmVlIHNvIHRoYXRcclxuICogSE1SIHVwZGF0ZXMgKHdoaWNoIGFyZSBmdWxsIHVwZGF0ZXMpIGNhbiByZXRyaWV2ZSB0aGUgZWxlbWVudCBmb3IgcGF0Y2hpbmcuXHJcbiAqXHJcbiAqICMyMDgwXHJcbiAqIEluc2lkZSBrZXllZCBgdGVtcGxhdGVgIGZyYWdtZW50IHN0YXRpYyBjaGlsZHJlbiwgaWYgYSBmcmFnbWVudCBpcyBtb3ZlZCxcclxuICogdGhlIGNoaWxkcmVuIHdpbGwgYWx3YXlzIGJlIG1vdmVkLiBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIGVuc3VyZSBjb3JyZWN0IG1vdmVcclxuICogcG9zaXRpb24sIGVsIHNob3VsZCBiZSBpbmhlcml0ZWQgZnJvbSBwcmV2aW91cyBub2Rlcy5cclxuICovXHJcbmZ1bmN0aW9uIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCBzaGFsbG93ID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNoMSA9IG4xLmNoaWxkcmVuO1xyXG4gICAgY29uc3QgY2gyID0gbjIuY2hpbGRyZW47XHJcbiAgICBpZiAoaXNBcnJheShjaDEpICYmIGlzQXJyYXkoY2gyKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2gxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgb25seSBjYWxsZWQgaW4gdGhlIG9wdGltaXplZCBwYXRoIHNvIGFycmF5IGNoaWxkcmVuIGFyZVxyXG4gICAgICAgICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIHZub2Rlc1xyXG4gICAgICAgICAgICBjb25zdCBjMSA9IGNoMVtpXTtcclxuICAgICAgICAgICAgbGV0IGMyID0gY2gyW2ldO1xyXG4gICAgICAgICAgICBpZiAoYzIuc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiYgIWMyLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMyLnBhdGNoRmxhZyA8PSAwIHx8IGMyLnBhdGNoRmxhZyA9PT0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGMyID0gY2gyW2ldID0gY2xvbmVJZk1vdW50ZWQoY2gyW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICBjMi5lbCA9IGMxLmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFsbG93KVxyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oYzEsIGMyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhbHNvIGluaGVyaXQgZm9yIGNvbW1lbnQgbm9kZXMsIGJ1dCBub3QgcGxhY2Vob2xkZXJzIChlLmcuIHYtaWYgd2hpY2hcclxuICAgICAgICAgICAgLy8gd291bGQgaGF2ZSByZWNlaXZlZCAuZWwgZHVyaW5nIGJsb2NrIHBhdGNoKVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGMyLnR5cGUgPT09IENvbW1lbnQgJiYgIWMyLmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjMi5lbCA9IGMxLmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvbmdlc3RfaW5jcmVhc2luZ19zdWJzZXF1ZW5jZVxyXG5mdW5jdGlvbiBnZXRTZXF1ZW5jZShhcnIpIHtcclxuICAgIGNvbnN0IHAgPSBhcnIuc2xpY2UoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFswXTtcclxuICAgIGxldCBpLCBqLCB1LCB2LCBjO1xyXG4gICAgY29uc3QgbGVuID0gYXJyLmxlbmd0aDtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGFyckkgPSBhcnJbaV07XHJcbiAgICAgICAgaWYgKGFyckkgIT09IDApIHtcclxuICAgICAgICAgICAgaiA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPCBhcnJJKSB7XHJcbiAgICAgICAgICAgICAgICBwW2ldID0gajtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdSA9IDA7XHJcbiAgICAgICAgICAgIHYgPSByZXN1bHQubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgd2hpbGUgKHUgPCB2KSB7XHJcbiAgICAgICAgICAgICAgICBjID0gKHUgKyB2KSA+PiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycltyZXN1bHRbY11dIDwgYXJySSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHUgPSBjICsgMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhcnJJIDwgYXJyW3Jlc3VsdFt1XV0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh1ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBbaV0gPSByZXN1bHRbdSAtIDFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3VdID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHUgPSByZXN1bHQubGVuZ3RoO1xyXG4gICAgdiA9IHJlc3VsdFt1IC0gMV07XHJcbiAgICB3aGlsZSAodS0tID4gMCkge1xyXG4gICAgICAgIHJlc3VsdFt1XSA9IHY7XHJcbiAgICAgICAgdiA9IHBbdl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XG5cbmNvbnN0IGlzVGVsZXBvcnQgPSAodHlwZSkgPT4gdHlwZS5fX2lzVGVsZXBvcnQ7XHJcbmNvbnN0IGlzVGVsZXBvcnREaXNhYmxlZCA9IChwcm9wcykgPT4gcHJvcHMgJiYgKHByb3BzLmRpc2FibGVkIHx8IHByb3BzLmRpc2FibGVkID09PSAnJyk7XHJcbmNvbnN0IGlzVGFyZ2V0U1ZHID0gKHRhcmdldCkgPT4gdHlwZW9mIFNWR0VsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHRhcmdldCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ7XHJcbmNvbnN0IHJlc29sdmVUYXJnZXQgPSAocHJvcHMsIHNlbGVjdCkgPT4ge1xyXG4gICAgY29uc3QgdGFyZ2V0U2VsZWN0b3IgPSBwcm9wcyAmJiBwcm9wcy50bztcclxuICAgIGlmIChpc1N0cmluZyh0YXJnZXRTZWxlY3RvcikpIHtcclxuICAgICAgICBpZiAoIXNlbGVjdCkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1cnJlbnQgcmVuZGVyZXIgZG9lcyBub3Qgc3VwcG9ydCBzdHJpbmcgdGFyZ2V0IGZvciBUZWxlcG9ydHMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAobWlzc2luZyBxdWVyeVNlbGVjdG9yIHJlbmRlcmVyIG9wdGlvbilgKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZWxlY3QodGFyZ2V0U2VsZWN0b3IpO1xyXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIGxvY2F0ZSBUZWxlcG9ydCB0YXJnZXQgd2l0aCBzZWxlY3RvciBcIiR7dGFyZ2V0U2VsZWN0b3J9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgTm90ZSB0aGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBleGlzdCBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkIC0gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpLmUuIHRoZSB0YXJnZXQgY2Fubm90IGJlIHJlbmRlcmVkIGJ5IHRoZSBjb21wb25lbnQgaXRzZWxmLCBhbmQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpZGVhbGx5IHNob3VsZCBiZSBvdXRzaWRlIG9mIHRoZSBlbnRpcmUgVnVlIGNvbXBvbmVudCB0cmVlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhdGFyZ2V0U2VsZWN0b3IgJiYgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQ6ICR7dGFyZ2V0U2VsZWN0b3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0YXJnZXRTZWxlY3RvcjtcclxuICAgIH1cclxufTtcclxuY29uc3QgVGVsZXBvcnRJbXBsID0ge1xyXG4gICAgX19pc1RlbGVwb3J0OiB0cnVlLFxyXG4gICAgcHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IHsgbWM6IG1vdW50Q2hpbGRyZW4sIHBjOiBwYXRjaENoaWxkcmVuLCBwYmM6IHBhdGNoQmxvY2tDaGlsZHJlbiwgbzogeyBpbnNlcnQsIHF1ZXJ5U2VsZWN0b3IsIGNyZWF0ZVRleHQsIGNyZWF0ZUNvbW1lbnQgfSB9ID0gaW50ZXJuYWxzO1xyXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4yLnByb3BzKTtcclxuICAgICAgICBsZXQgeyBzaGFwZUZsYWcsIGNoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4gfSA9IG4yO1xyXG4gICAgICAgIC8vICMzMzAyXHJcbiAgICAgICAgLy8gSE1SIHVwZGF0ZWQsIGZvcmNlIGZ1bGwgZGlmZlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuY2hvcnMgaW4gdGhlIG1haW4gdmlld1xyXG4gICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IChuMi5lbCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVDb21tZW50KCd0ZWxlcG9ydCBzdGFydCcpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgY29uc3QgbWFpbkFuY2hvciA9IChuMi5hbmNob3IgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlQ29tbWVudCgndGVsZXBvcnQgZW5kJylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBpbnNlcnQocGxhY2Vob2xkZXIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgaW5zZXJ0KG1haW5BbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKG4yLnRhcmdldCA9IHJlc29sdmVUYXJnZXQobjIucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5jaG9yID0gKG4yLnRhcmdldEFuY2hvciA9IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0KHRhcmdldEFuY2hvciwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIC8vICMyNjUyIHdlIGNvdWxkIGJlIHRlbGVwb3J0aW5nIGZyb20gYSBub24tU1ZHIHRyZWUgaW50byBhbiBTVkcgdHJlZVxyXG4gICAgICAgICAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBpc1RhcmdldFNWRyh0YXJnZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIG1vdW50OicsIHRhcmdldCwgYCgke3R5cGVvZiB0YXJnZXR9KWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdW50ID0gKGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBUZWxlcG9ydCAqYWx3YXlzKiBoYXMgQXJyYXkgY2hpbGRyZW4uIFRoaXMgaXMgZW5mb3JjZWQgaW4gYm90aCB0aGVcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIGFuZCB2bm9kZSBjaGlsZHJlbiBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKGNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudChjb250YWluZXIsIG1haW5BbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgbW91bnQodGFyZ2V0LCB0YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB1cGRhdGUgY29udGVudFxyXG4gICAgICAgICAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgICAgICAgICBjb25zdCBtYWluQW5jaG9yID0gKG4yLmFuY2hvciA9IG4xLmFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IChuMi50YXJnZXQgPSBuMS50YXJnZXQpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRBbmNob3IgPSAobjIudGFyZ2V0QW5jaG9yID0gbjEudGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgY29uc3Qgd2FzRGlzYWJsZWQgPSBpc1RlbGVwb3J0RGlzYWJsZWQobjEucHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29udGFpbmVyID0gd2FzRGlzYWJsZWQgPyBjb250YWluZXIgOiB0YXJnZXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmNob3IgPSB3YXNEaXNhYmxlZCA/IG1haW5BbmNob3IgOiB0YXJnZXRBbmNob3I7XHJcbiAgICAgICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgaXNUYXJnZXRTVkcodGFyZ2V0KTtcclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgLy8gZmFzdCBwYXRoIHdoZW4gdGhlIHRlbGVwb3J0IGhhcHBlbnMgdG8gYmUgYSBibG9jayByb290XHJcbiAgICAgICAgICAgICAgICBwYXRjaEJsb2NrQ2hpbGRyZW4objEuZHluYW1pY0NoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4sIGN1cnJlbnRDb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gZXZlbiBpbiBibG9jayB0cmVlIG1vZGUgd2UgbmVlZCB0byBtYWtlIHN1cmUgYWxsIHJvb3QtbGV2ZWwgbm9kZXNcclxuICAgICAgICAgICAgICAgIC8vIGluIHRoZSB0ZWxlcG9ydCBpbmhlcml0IHByZXZpb3VzIERPTSByZWZlcmVuY2VzIHNvIHRoYXQgdGhleSBjYW5cclxuICAgICAgICAgICAgICAgIC8vIGJlIG1vdmVkIGluIGZ1dHVyZSBwYXRjaGVzLlxyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpbWl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoQ2hpbGRyZW4objEsIG4yLCBjdXJyZW50Q29udGFpbmVyLCBjdXJyZW50QW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXdhc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCAtPiBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgaW50byBtYWluIGNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVUZWxlcG9ydChuMiwgY29udGFpbmVyLCBtYWluQW5jaG9yLCBpbnRlcm5hbHMsIDEgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVE9HR0xFICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRhcmdldCBjaGFuZ2VkXHJcbiAgICAgICAgICAgICAgICBpZiAoKG4yLnByb3BzICYmIG4yLnByb3BzLnRvKSAhPT0gKG4xLnByb3BzICYmIG4xLnByb3BzLnRvKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSAobjIudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChuMi5wcm9wcywgcXVlcnlTZWxlY3RvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUZWxlcG9ydChuMiwgbmV4dFRhcmdldCwgbnVsbCwgaW50ZXJuYWxzLCAwIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRBUkdFVF9DSEFOR0UgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQgb24gdXBkYXRlOicsIHRhcmdldCwgYCgke3R5cGVvZiB0YXJnZXR9KWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgLT4gZW5hYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgaW50byB0ZWxlcG9ydCB0YXJnZXRcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIHRhcmdldCwgdGFyZ2V0QW5jaG9yLCBpbnRlcm5hbHMsIDEgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVE9HR0xFICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICByZW1vdmUodm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG9wdGltaXplZCwgeyB1bTogdW5tb3VudCwgbzogeyByZW1vdmU6IGhvc3RSZW1vdmUgfSB9LCBkb1JlbW92ZSkge1xyXG4gICAgICAgIGNvbnN0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiwgYW5jaG9yLCB0YXJnZXRBbmNob3IsIHRhcmdldCwgcHJvcHMgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZSh0YXJnZXRBbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhbiB1bm1vdW50ZWQgdGVsZXBvcnQgc2hvdWxkIGFsd2F5cyByZW1vdmUgaXRzIGNoaWxkcmVuIGlmIG5vdCBkaXNhYmxlZFxyXG4gICAgICAgIGlmIChkb1JlbW92ZSB8fCAhaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGFuY2hvcik7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlLCAhIWNoaWxkLmR5bmFtaWNDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW92ZTogbW92ZVRlbGVwb3J0LFxyXG4gICAgaHlkcmF0ZTogaHlkcmF0ZVRlbGVwb3J0XHJcbn07XHJcbmZ1bmN0aW9uIG1vdmVUZWxlcG9ydCh2bm9kZSwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IsIHsgbzogeyBpbnNlcnQgfSwgbTogbW92ZSB9LCBtb3ZlVHlwZSA9IDIgLyogVGVsZXBvcnRNb3ZlVHlwZXMuUkVPUkRFUiAqLykge1xyXG4gICAgLy8gbW92ZSB0YXJnZXQgYW5jaG9yIGlmIHRoaXMgaXMgYSB0YXJnZXQgY2hhbmdlLlxyXG4gICAgaWYgKG1vdmVUeXBlID09PSAwIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRBUkdFVF9DSEFOR0UgKi8pIHtcclxuICAgICAgICBpbnNlcnQodm5vZGUudGFyZ2V0QW5jaG9yLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGVsLCBhbmNob3IsIHNoYXBlRmxhZywgY2hpbGRyZW4sIHByb3BzIH0gPSB2bm9kZTtcclxuICAgIGNvbnN0IGlzUmVvcmRlciA9IG1vdmVUeXBlID09PSAyIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlJFT1JERVIgKi87XHJcbiAgICAvLyBtb3ZlIG1haW4gdmlldyBhbmNob3IgaWYgdGhpcyBpcyBhIHJlLW9yZGVyLlxyXG4gICAgaWYgKGlzUmVvcmRlcikge1xyXG4gICAgICAgIGluc2VydChlbCwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgdGhpcyBpcyBhIHJlLW9yZGVyIGFuZCB0ZWxlcG9ydCBpcyBlbmFibGVkIChjb250ZW50IGlzIGluIHRhcmdldClcclxuICAgIC8vIGRvIG5vdCBtb3ZlIGNoaWxkcmVuLiBTbyB0aGUgb3Bwb3NpdGUgaXM6IG9ubHkgbW92ZSBjaGlsZHJlbiBpZiB0aGlzXHJcbiAgICAvLyBpcyBub3QgYSByZW9yZGVyLCBvciB0aGUgdGVsZXBvcnQgaXMgZGlzYWJsZWRcclxuICAgIGlmICghaXNSZW9yZGVyIHx8IGlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAvLyBUZWxlcG9ydCBoYXMgZWl0aGVyIEFycmF5IGNoaWxkcmVuIG9yIG5vIGNoaWxkcmVuLlxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIG1vdmUoY2hpbGRyZW5baV0sIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCAyIC8qIE1vdmVUeXBlLlJFT1JERVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbW92ZSBtYWluIHZpZXcgYW5jaG9yIGlmIHRoaXMgaXMgYSByZS1vcmRlci5cclxuICAgIGlmIChpc1Jlb3JkZXIpIHtcclxuICAgICAgICBpbnNlcnQoYW5jaG9yLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaHlkcmF0ZVRlbGVwb3J0KG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgeyBvOiB7IG5leHRTaWJsaW5nLCBwYXJlbnROb2RlLCBxdWVyeVNlbGVjdG9yIH0gfSwgaHlkcmF0ZUNoaWxkcmVuKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSAodm5vZGUudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldCh2bm9kZS5wcm9wcywgcXVlcnlTZWxlY3RvcikpO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIC8vIGlmIG11bHRpcGxlIHRlbGVwb3J0cyByZW5kZXJlZCB0byB0aGUgc2FtZSB0YXJnZXQgZWxlbWVudCwgd2UgbmVlZCB0b1xyXG4gICAgICAgIC8vIHBpY2sgdXAgZnJvbSB3aGVyZSB0aGUgbGFzdCB0ZWxlcG9ydCBmaW5pc2hlZCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBub2RlXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRhcmdldC5fbHBhIHx8IHRhcmdldC5maXJzdENoaWxkO1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1RlbGVwb3J0RGlzYWJsZWQodm5vZGUucHJvcHMpKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5hbmNob3IgPSBoeWRyYXRlQ2hpbGRyZW4obmV4dFNpYmxpbmcobm9kZSksIHZub2RlLCBwYXJlbnROb2RlKG5vZGUpLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgPSB0YXJnZXROb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBsb29rYWhlYWQgdW50aWwgd2UgZmluZCB0aGUgdGFyZ2V0IGFuY2hvclxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2Fubm90IHJlbHkgb24gcmV0dXJuIHZhbHVlIG9mIGh5ZHJhdGVDaGlsZHJlbigpIGJlY2F1c2UgdGhlcmVcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGJlIG5lc3RlZCB0ZWxlcG9ydHNcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRBbmNob3IgPSB0YXJnZXROb2RlO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldEFuY2hvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEFuY2hvciA9IG5leHRTaWJsaW5nKHRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEFuY2hvciAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBbmNob3Iubm9kZVR5cGUgPT09IDggJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QW5jaG9yLmRhdGEgPT09ICd0ZWxlcG9ydCBhbmNob3InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLnRhcmdldEFuY2hvciA9IHRhcmdldEFuY2hvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Ll9scGEgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yICYmIG5leHRTaWJsaW5nKHZub2RlLnRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGh5ZHJhdGVDaGlsZHJlbih0YXJnZXROb2RlLCB2bm9kZSwgdGFyZ2V0LCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGUuYW5jaG9yICYmIG5leHRTaWJsaW5nKHZub2RlLmFuY2hvcik7XHJcbn1cclxuLy8gRm9yY2UtY2FzdGVkIHB1YmxpYyB0eXBpbmcgZm9yIGggYW5kIFRTWCBwcm9wcyBpbmZlcmVuY2VcclxuY29uc3QgVGVsZXBvcnQgPSBUZWxlcG9ydEltcGw7XG5cbmNvbnN0IEZyYWdtZW50ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdGcmFnbWVudCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBUZXh0ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdUZXh0JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IENvbW1lbnQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ0NvbW1lbnQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgU3RhdGljID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdTdGF0aWMnIDogdW5kZWZpbmVkKTtcclxuLy8gU2luY2Ugdi1pZiBhbmQgdi1mb3IgYXJlIHRoZSB0d28gcG9zc2libGUgd2F5cyBub2RlIHN0cnVjdHVyZSBjYW4gZHluYW1pY2FsbHlcclxuLy8gY2hhbmdlLCBvbmNlIHdlIGNvbnNpZGVyIHYtaWYgYnJhbmNoZXMgYW5kIGVhY2ggdi1mb3IgZnJhZ21lbnQgYSBibG9jaywgd2VcclxuLy8gY2FuIGRpdmlkZSBhIHRlbXBsYXRlIGludG8gbmVzdGVkIGJsb2NrcywgYW5kIHdpdGhpbiBlYWNoIGJsb2NrIHRoZSBub2RlXHJcbi8vIHN0cnVjdHVyZSB3b3VsZCBiZSBzdGFibGUuIFRoaXMgYWxsb3dzIHVzIHRvIHNraXAgbW9zdCBjaGlsZHJlbiBkaWZmaW5nXHJcbi8vIGFuZCBvbmx5IHdvcnJ5IGFib3V0IHRoZSBkeW5hbWljIG5vZGVzIChpbmRpY2F0ZWQgYnkgcGF0Y2ggZmxhZ3MpLlxyXG5jb25zdCBibG9ja1N0YWNrID0gW107XHJcbmxldCBjdXJyZW50QmxvY2sgPSBudWxsO1xyXG4vKipcclxuICogT3BlbiBhIGJsb2NrLlxyXG4gKiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBgY3JlYXRlQmxvY2tgLiBJdCBjYW5ub3QgYmUgcGFydCBvZiBgY3JlYXRlQmxvY2tgXHJcbiAqIGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIHRoZSBibG9jayBhcmUgZXZhbHVhdGVkIGJlZm9yZSBgY3JlYXRlQmxvY2tgIGl0c2VsZlxyXG4gKiBpcyBjYWxsZWQuIFRoZSBnZW5lcmF0ZWQgY29kZSB0eXBpY2FsbHkgbG9va3MgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiBmdW5jdGlvbiByZW5kZXIoKSB7XHJcbiAqICAgcmV0dXJuIChvcGVuQmxvY2soKSxjcmVhdGVCbG9jaygnZGl2JywgbnVsbCwgWy4uLl0pKVxyXG4gKiB9XHJcbiAqIGBgYFxyXG4gKiBkaXNhYmxlVHJhY2tpbmcgaXMgdHJ1ZSB3aGVuIGNyZWF0aW5nIGEgdi1mb3IgZnJhZ21lbnQgYmxvY2ssIHNpbmNlIGEgdi1mb3JcclxuICogZnJhZ21lbnQgYWx3YXlzIGRpZmZzIGl0cyBjaGlsZHJlbi5cclxuICpcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIG9wZW5CbG9jayhkaXNhYmxlVHJhY2tpbmcgPSBmYWxzZSkge1xyXG4gICAgYmxvY2tTdGFjay5wdXNoKChjdXJyZW50QmxvY2sgPSBkaXNhYmxlVHJhY2tpbmcgPyBudWxsIDogW10pKTtcclxufVxyXG5mdW5jdGlvbiBjbG9zZUJsb2NrKCkge1xyXG4gICAgYmxvY2tTdGFjay5wb3AoKTtcclxuICAgIGN1cnJlbnRCbG9jayA9IGJsb2NrU3RhY2tbYmxvY2tTdGFjay5sZW5ndGggLSAxXSB8fCBudWxsO1xyXG59XHJcbi8vIFdoZXRoZXIgd2Ugc2hvdWxkIGJlIHRyYWNraW5nIGR5bmFtaWMgY2hpbGQgbm9kZXMgaW5zaWRlIGEgYmxvY2suXHJcbi8vIE9ubHkgdHJhY2tzIHdoZW4gdGhpcyB2YWx1ZSBpcyA+IDBcclxuLy8gV2UgYXJlIG5vdCB1c2luZyBhIHNpbXBsZSBib29sZWFuIGJlY2F1c2UgdGhpcyB2YWx1ZSBtYXkgbmVlZCB0byBiZVxyXG4vLyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCBieSBuZXN0ZWQgdXNhZ2Ugb2Ygdi1vbmNlIChzZWUgYmVsb3cpXHJcbmxldCBpc0Jsb2NrVHJlZUVuYWJsZWQgPSAxO1xyXG4vKipcclxuICogQmxvY2sgdHJhY2tpbmcgc29tZXRpbWVzIG5lZWRzIHRvIGJlIGRpc2FibGVkLCBmb3IgZXhhbXBsZSBkdXJpbmcgdGhlXHJcbiAqIGNyZWF0aW9uIG9mIGEgdHJlZSB0aGF0IG5lZWRzIHRvIGJlIGNhY2hlZCBieSB2LW9uY2UuIFRoZSBjb21waWxlciBnZW5lcmF0ZXNcclxuICogY29kZSBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIGBgYCBqc1xyXG4gKiBfY2FjaGVbMV0gfHwgKFxyXG4gKiAgIHNldEJsb2NrVHJhY2tpbmcoLTEpLFxyXG4gKiAgIF9jYWNoZVsxXSA9IGNyZWF0ZVZOb2RlKC4uLiksXHJcbiAqICAgc2V0QmxvY2tUcmFja2luZygxKSxcclxuICogICBfY2FjaGVbMV1cclxuICogKVxyXG4gKiBgYGBcclxuICpcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHNldEJsb2NrVHJhY2tpbmcodmFsdWUpIHtcclxuICAgIGlzQmxvY2tUcmVlRW5hYmxlZCArPSB2YWx1ZTtcclxufVxyXG5mdW5jdGlvbiBzZXR1cEJsb2NrKHZub2RlKSB7XHJcbiAgICAvLyBzYXZlIGN1cnJlbnQgYmxvY2sgY2hpbGRyZW4gb24gdGhlIGJsb2NrIHZub2RlXHJcbiAgICB2bm9kZS5keW5hbWljQ2hpbGRyZW4gPVxyXG4gICAgICAgIGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgPyBjdXJyZW50QmxvY2sgfHwgRU1QVFlfQVJSIDogbnVsbDtcclxuICAgIC8vIGNsb3NlIGJsb2NrXHJcbiAgICBjbG9zZUJsb2NrKCk7XHJcbiAgICAvLyBhIGJsb2NrIGlzIGFsd2F5cyBnb2luZyB0byBiZSBwYXRjaGVkLCBzbyB0cmFjayBpdCBhcyBhIGNoaWxkIG9mIGl0c1xyXG4gICAgLy8gcGFyZW50IGJsb2NrXHJcbiAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiBjdXJyZW50QmxvY2spIHtcclxuICAgICAgICBjdXJyZW50QmxvY2sucHVzaCh2bm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50QmxvY2sodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgc2hhcGVGbGFnKSB7XHJcbiAgICByZXR1cm4gc2V0dXBCbG9jayhjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgc2hhcGVGbGFnLCB0cnVlIC8qIGlzQmxvY2sgKi8pKTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIGEgYmxvY2sgcm9vdCB2bm9kZS4gVGFrZXMgdGhlIHNhbWUgZXhhY3QgYXJndW1lbnRzIGFzIGBjcmVhdGVWTm9kZWAuXHJcbiAqIEEgYmxvY2sgcm9vdCBrZWVwcyB0cmFjayBvZiBkeW5hbWljIG5vZGVzIHdpdGhpbiB0aGUgYmxvY2sgaW4gdGhlXHJcbiAqIGBkeW5hbWljQ2hpbGRyZW5gIGFycmF5LlxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlQmxvY2sodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcykge1xyXG4gICAgcmV0dXJuIHNldHVwQmxvY2soY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgdHJ1ZSAvKiBpc0Jsb2NrOiBwcmV2ZW50IGEgYmxvY2sgZnJvbSB0cmFja2luZyBpdHNlbGYgKi8pKTtcclxufVxyXG5mdW5jdGlvbiBpc1ZOb2RlKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5fX3ZfaXNWTm9kZSA9PT0gdHJ1ZSA6IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZVZOb2RlVHlwZShuMSwgbjIpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICBuMi5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovICYmXHJcbiAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmhhcyhuMi50eXBlKSkge1xyXG4gICAgICAgIC8vIEhNUiBvbmx5OiBpZiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGhvdC11cGRhdGVkLCBmb3JjZSBhIHJlbG9hZC5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbjEudHlwZSA9PT0gbjIudHlwZSAmJiBuMS5rZXkgPT09IG4yLmtleTtcclxufVxyXG5sZXQgdm5vZGVBcmdzVHJhbnNmb3JtZXI7XHJcbi8qKlxyXG4gKiBJbnRlcm5hbCBBUEkgZm9yIHJlZ2lzdGVyaW5nIGFuIGFyZ3VtZW50cyB0cmFuc2Zvcm0gZm9yIGNyZWF0ZVZOb2RlXHJcbiAqIHVzZWQgZm9yIGNyZWF0aW5nIHN0dWJzIGluIHRoZSB0ZXN0LXV0aWxzXHJcbiAqIEl0IGlzICppbnRlcm5hbCogYnV0IG5lZWRzIHRvIGJlIGV4cG9zZWQgZm9yIHRlc3QtdXRpbHMgdG8gcGljayB1cCBwcm9wZXJcclxuICogdHlwaW5nc1xyXG4gKi9cclxuZnVuY3Rpb24gdHJhbnNmb3JtVk5vZGVBcmdzKHRyYW5zZm9ybWVyKSB7XHJcbiAgICB2bm9kZUFyZ3NUcmFuc2Zvcm1lciA9IHRyYW5zZm9ybWVyO1xyXG59XHJcbmNvbnN0IGNyZWF0ZVZOb2RlV2l0aEFyZ3NUcmFuc2Zvcm0gPSAoLi4uYXJncykgPT4ge1xyXG4gICAgcmV0dXJuIF9jcmVhdGVWTm9kZSguLi4odm5vZGVBcmdzVHJhbnNmb3JtZXJcclxuICAgICAgICA/IHZub2RlQXJnc1RyYW5zZm9ybWVyKGFyZ3MsIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSlcclxuICAgICAgICA6IGFyZ3MpKTtcclxufTtcclxuY29uc3QgSW50ZXJuYWxPYmplY3RLZXkgPSBgX192SW50ZXJuYWxgO1xyXG5jb25zdCBub3JtYWxpemVLZXkgPSAoeyBrZXkgfSkgPT4ga2V5ICE9IG51bGwgPyBrZXkgOiBudWxsO1xyXG5jb25zdCBub3JtYWxpemVSZWYgPSAoeyByZWYsIHJlZl9rZXksIHJlZl9mb3IgfSkgPT4ge1xyXG4gICAgcmV0dXJuIChyZWYgIT0gbnVsbFxyXG4gICAgICAgID8gaXNTdHJpbmcocmVmKSB8fCBpc1JlZihyZWYpIHx8IGlzRnVuY3Rpb24ocmVmKVxyXG4gICAgICAgICAgICA/IHsgaTogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLCByOiByZWYsIGs6IHJlZl9rZXksIGY6ICEhcmVmX2ZvciB9XHJcbiAgICAgICAgICAgIDogcmVmXHJcbiAgICAgICAgOiBudWxsKTtcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlQmFzZVZOb2RlKHR5cGUsIHByb3BzID0gbnVsbCwgY2hpbGRyZW4gPSBudWxsLCBwYXRjaEZsYWcgPSAwLCBkeW5hbWljUHJvcHMgPSBudWxsLCBzaGFwZUZsYWcgPSB0eXBlID09PSBGcmFnbWVudCA/IDAgOiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLywgaXNCbG9ja05vZGUgPSBmYWxzZSwgbmVlZEZ1bGxDaGlsZHJlbk5vcm1hbGl6YXRpb24gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgdm5vZGUgPSB7XHJcbiAgICAgICAgX192X2lzVk5vZGU6IHRydWUsXHJcbiAgICAgICAgX192X3NraXA6IHRydWUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBrZXk6IHByb3BzICYmIG5vcm1hbGl6ZUtleShwcm9wcyksXHJcbiAgICAgICAgcmVmOiBwcm9wcyAmJiBub3JtYWxpemVSZWYocHJvcHMpLFxyXG4gICAgICAgIHNjb3BlSWQ6IGN1cnJlbnRTY29wZUlkLFxyXG4gICAgICAgIHNsb3RTY29wZUlkczogbnVsbCxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBjb21wb25lbnQ6IG51bGwsXHJcbiAgICAgICAgc3VzcGVuc2U6IG51bGwsXHJcbiAgICAgICAgc3NDb250ZW50OiBudWxsLFxyXG4gICAgICAgIHNzRmFsbGJhY2s6IG51bGwsXHJcbiAgICAgICAgZGlyczogbnVsbCxcclxuICAgICAgICB0cmFuc2l0aW9uOiBudWxsLFxyXG4gICAgICAgIGVsOiBudWxsLFxyXG4gICAgICAgIGFuY2hvcjogbnVsbCxcclxuICAgICAgICB0YXJnZXQ6IG51bGwsXHJcbiAgICAgICAgdGFyZ2V0QW5jaG9yOiBudWxsLFxyXG4gICAgICAgIHN0YXRpY0NvdW50OiAwLFxyXG4gICAgICAgIHNoYXBlRmxhZyxcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGR5bmFtaWNDaGlsZHJlbjogbnVsbCxcclxuICAgICAgICBhcHBDb250ZXh0OiBudWxsXHJcbiAgICB9O1xyXG4gICAgaWYgKG5lZWRGdWxsQ2hpbGRyZW5Ob3JtYWxpemF0aW9uKSB7XHJcbiAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuKTtcclxuICAgICAgICAvLyBub3JtYWxpemUgc3VzcGVuc2UgY2hpbGRyZW5cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgdHlwZS5ub3JtYWxpemUodm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgLy8gY29tcGlsZWQgZWxlbWVudCB2bm9kZSAtIGlmIGNoaWxkcmVuIGlzIHBhc3NlZCwgb25seSBwb3NzaWJsZSB0eXBlcyBhcmVcclxuICAgICAgICAvLyBzdHJpbmcgb3IgQXJyYXkuXHJcbiAgICAgICAgdm5vZGUuc2hhcGVGbGFnIHw9IGlzU3RyaW5nKGNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovXHJcbiAgICAgICAgICAgIDogMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLztcclxuICAgIH1cclxuICAgIC8vIHZhbGlkYXRlIGtleVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB2bm9kZS5rZXkgIT09IHZub2RlLmtleSkge1xyXG4gICAgICAgIHdhcm4oYFZOb2RlIGNyZWF0ZWQgd2l0aCBpbnZhbGlkIGtleSAoTmFOKS4gVk5vZGUgdHlwZTpgLCB2bm9kZS50eXBlKTtcclxuICAgIH1cclxuICAgIC8vIHRyYWNrIHZub2RlIGZvciBibG9jayB0cmVlXHJcbiAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJlxyXG4gICAgICAgIC8vIGF2b2lkIGEgYmxvY2sgbm9kZSBmcm9tIHRyYWNraW5nIGl0c2VsZlxyXG4gICAgICAgICFpc0Jsb2NrTm9kZSAmJlxyXG4gICAgICAgIC8vIGhhcyBjdXJyZW50IHBhcmVudCBibG9ja1xyXG4gICAgICAgIGN1cnJlbnRCbG9jayAmJlxyXG4gICAgICAgIC8vIHByZXNlbmNlIG9mIGEgcGF0Y2ggZmxhZyBpbmRpY2F0ZXMgdGhpcyBub2RlIG5lZWRzIHBhdGNoaW5nIG9uIHVwZGF0ZXMuXHJcbiAgICAgICAgLy8gY29tcG9uZW50IG5vZGVzIGFsc28gc2hvdWxkIGFsd2F5cyBiZSBwYXRjaGVkLCBiZWNhdXNlIGV2ZW4gaWYgdGhlXHJcbiAgICAgICAgLy8gY29tcG9uZW50IGRvZXNuJ3QgbmVlZCB0byB1cGRhdGUsIGl0IG5lZWRzIHRvIHBlcnNpc3QgdGhlIGluc3RhbmNlIG9uIHRvXHJcbiAgICAgICAgLy8gdGhlIG5leHQgdm5vZGUgc28gdGhhdCBpdCBjYW4gYmUgcHJvcGVybHkgdW5tb3VudGVkIGxhdGVyLlxyXG4gICAgICAgICh2bm9kZS5wYXRjaEZsYWcgPiAwIHx8IHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pICYmXHJcbiAgICAgICAgLy8gdGhlIEVWRU5UUyBmbGFnIGlzIG9ubHkgZm9yIGh5ZHJhdGlvbiBhbmQgaWYgaXQgaXMgdGhlIG9ubHkgZmxhZywgdGhlXHJcbiAgICAgICAgLy8gdm5vZGUgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGR5bmFtaWMgZHVlIHRvIGhhbmRsZXIgY2FjaGluZy5cclxuICAgICAgICB2bm9kZS5wYXRjaEZsYWcgIT09IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi8pIHtcclxuICAgICAgICBjdXJyZW50QmxvY2sucHVzaCh2bm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cclxuY29uc3QgY3JlYXRlVk5vZGUgPSAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gY3JlYXRlVk5vZGVXaXRoQXJnc1RyYW5zZm9ybSA6IF9jcmVhdGVWTm9kZSk7XHJcbmZ1bmN0aW9uIF9jcmVhdGVWTm9kZSh0eXBlLCBwcm9wcyA9IG51bGwsIGNoaWxkcmVuID0gbnVsbCwgcGF0Y2hGbGFnID0gMCwgZHluYW1pY1Byb3BzID0gbnVsbCwgaXNCbG9ja05vZGUgPSBmYWxzZSkge1xyXG4gICAgaWYgKCF0eXBlIHx8IHR5cGUgPT09IE5VTExfRFlOQU1JQ19DT01QT05FTlQpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICF0eXBlKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEludmFsaWQgdm5vZGUgdHlwZSB3aGVuIGNyZWF0aW5nIHZub2RlOiAke3R5cGV9LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0eXBlID0gQ29tbWVudDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZOb2RlKHR5cGUpKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlVk5vZGUgcmVjZWl2aW5nIGFuIGV4aXN0aW5nIHZub2RlLiBUaGlzIGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxyXG4gICAgICAgIC8vIDxjb21wb25lbnQgOmlzPVwidm5vZGVcIi8+XHJcbiAgICAgICAgLy8gIzIwNzggbWFrZSBzdXJlIHRvIG1lcmdlIHJlZnMgZHVyaW5nIHRoZSBjbG9uZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0XHJcbiAgICAgICAgY29uc3QgY2xvbmVkID0gY2xvbmVWTm9kZSh0eXBlLCBwcm9wcywgdHJ1ZSAvKiBtZXJnZVJlZjogdHJ1ZSAqLyk7XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKGNsb25lZCwgY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiAhaXNCbG9ja05vZGUgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgICAgIGlmIChjbG9uZWQuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEJsb2NrW2N1cnJlbnRCbG9jay5pbmRleE9mKHR5cGUpXSA9IGNsb25lZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKGNsb25lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2xvbmVkLnBhdGNoRmxhZyB8PSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi87XHJcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcclxuICAgIH1cclxuICAgIC8vIGNsYXNzIGNvbXBvbmVudCBub3JtYWxpemF0aW9uLlxyXG4gICAgaWYgKGlzQ2xhc3NDb21wb25lbnQodHlwZSkpIHtcclxuICAgICAgICB0eXBlID0gdHlwZS5fX3ZjY09wdHM7XHJcbiAgICB9XHJcbiAgICAvLyBjbGFzcyAmIHN0eWxlIG5vcm1hbGl6YXRpb24uXHJcbiAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAvLyBmb3IgcmVhY3RpdmUgb3IgcHJveHkgb2JqZWN0cywgd2UgbmVlZCB0byBjbG9uZSBpdCB0byBlbmFibGUgbXV0YXRpb24uXHJcbiAgICAgICAgcHJvcHMgPSBndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpO1xyXG4gICAgICAgIGxldCB7IGNsYXNzOiBrbGFzcywgc3R5bGUgfSA9IHByb3BzO1xyXG4gICAgICAgIGlmIChrbGFzcyAmJiAhaXNTdHJpbmcoa2xhc3MpKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmNsYXNzID0gbm9ybWFsaXplQ2xhc3Moa2xhc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNPYmplY3Qoc3R5bGUpKSB7XHJcbiAgICAgICAgICAgIC8vIHJlYWN0aXZlIHN0YXRlIG9iamVjdHMgbmVlZCB0byBiZSBjbG9uZWQgc2luY2UgdGhleSBhcmUgbGlrZWx5IHRvIGJlXHJcbiAgICAgICAgICAgIC8vIG11dGF0ZWRcclxuICAgICAgICAgICAgaWYgKGlzUHJveHkoc3R5bGUpICYmICFpc0FycmF5KHN0eWxlKSkge1xyXG4gICAgICAgICAgICAgICAgc3R5bGUgPSBleHRlbmQoe30sIHN0eWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcm9wcy5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKHN0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBlbmNvZGUgdGhlIHZub2RlIHR5cGUgaW5mb3JtYXRpb24gaW50byBhIGJpdG1hcFxyXG4gICAgY29uc3Qgc2hhcGVGbGFnID0gaXNTdHJpbmcodHlwZSlcclxuICAgICAgICA/IDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovXHJcbiAgICAgICAgOiBpc1N1c3BlbnNlKHR5cGUpXHJcbiAgICAgICAgICAgID8gMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi9cclxuICAgICAgICAgICAgOiBpc1RlbGVwb3J0KHR5cGUpXHJcbiAgICAgICAgICAgICAgICA/IDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi9cclxuICAgICAgICAgICAgICAgIDogaXNPYmplY3QodHlwZSlcclxuICAgICAgICAgICAgICAgICAgICA/IDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi9cclxuICAgICAgICAgICAgICAgICAgICA6IGlzRnVuY3Rpb24odHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAyIC8qIFNoYXBlRmxhZ3MuRlVOQ1RJT05BTF9DT01QT05FTlQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovICYmIGlzUHJveHkodHlwZSkpIHtcclxuICAgICAgICB0eXBlID0gdG9SYXcodHlwZSk7XHJcbiAgICAgICAgd2FybihgVnVlIHJlY2VpdmVkIGEgQ29tcG9uZW50IHdoaWNoIHdhcyBtYWRlIGEgcmVhY3RpdmUgb2JqZWN0LiBUaGlzIGNhbiBgICtcclxuICAgICAgICAgICAgYGxlYWQgdG8gdW5uZWNlc3NhcnkgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQsIGFuZCBzaG91bGQgYmUgYXZvaWRlZCBieSBgICtcclxuICAgICAgICAgICAgYG1hcmtpbmcgdGhlIGNvbXBvbmVudCB3aXRoIFxcYG1hcmtSYXdcXGAgb3IgdXNpbmcgXFxgc2hhbGxvd1JlZlxcYCBgICtcclxuICAgICAgICAgICAgYGluc3RlYWQgb2YgXFxgcmVmXFxgLmAsIGBcXG5Db21wb25lbnQgdGhhdCB3YXMgbWFkZSByZWFjdGl2ZTogYCwgdHlwZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlQmFzZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZywgaXNCbG9ja05vZGUsIHRydWUpO1xyXG59XHJcbmZ1bmN0aW9uIGd1YXJkUmVhY3RpdmVQcm9wcyhwcm9wcykge1xyXG4gICAgaWYgKCFwcm9wcylcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBpc1Byb3h5KHByb3BzKSB8fCBJbnRlcm5hbE9iamVjdEtleSBpbiBwcm9wc1xyXG4gICAgICAgID8gZXh0ZW5kKHt9LCBwcm9wcylcclxuICAgICAgICA6IHByb3BzO1xyXG59XHJcbmZ1bmN0aW9uIGNsb25lVk5vZGUodm5vZGUsIGV4dHJhUHJvcHMsIG1lcmdlUmVmID0gZmFsc2UpIHtcclxuICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBOT1QgdXNpbmcgc3ByZWFkIG9yIGV4dGVuZCB0byBhdm9pZCB0aGUgcnVudGltZVxyXG4gICAgLy8ga2V5IGVudW1lcmF0aW9uIGNvc3QuXHJcbiAgICBjb25zdCB7IHByb3BzLCByZWYsIHBhdGNoRmxhZywgY2hpbGRyZW4gfSA9IHZub2RlO1xyXG4gICAgY29uc3QgbWVyZ2VkUHJvcHMgPSBleHRyYVByb3BzID8gbWVyZ2VQcm9wcyhwcm9wcyB8fCB7fSwgZXh0cmFQcm9wcykgOiBwcm9wcztcclxuICAgIGNvbnN0IGNsb25lZCA9IHtcclxuICAgICAgICBfX3ZfaXNWTm9kZTogdHJ1ZSxcclxuICAgICAgICBfX3Zfc2tpcDogdHJ1ZSxcclxuICAgICAgICB0eXBlOiB2bm9kZS50eXBlLFxyXG4gICAgICAgIHByb3BzOiBtZXJnZWRQcm9wcyxcclxuICAgICAgICBrZXk6IG1lcmdlZFByb3BzICYmIG5vcm1hbGl6ZUtleShtZXJnZWRQcm9wcyksXHJcbiAgICAgICAgcmVmOiBleHRyYVByb3BzICYmIGV4dHJhUHJvcHMucmVmXHJcbiAgICAgICAgICAgID8gLy8gIzIwNzggaW4gdGhlIGNhc2Ugb2YgPGNvbXBvbmVudCA6aXM9XCJ2bm9kZVwiIHJlZj1cImV4dHJhXCIvPlxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIHZub2RlIGl0c2VsZiBhbHJlYWR5IGhhcyBhIHJlZiwgY2xvbmVWTm9kZSB3aWxsIG5lZWQgdG8gbWVyZ2VcclxuICAgICAgICAgICAgICAgIC8vIHRoZSByZWZzIHNvIHRoZSBzaW5nbGUgdm5vZGUgY2FuIGJlIHNldCBvbiBtdWx0aXBsZSByZWZzXHJcbiAgICAgICAgICAgICAgICBtZXJnZVJlZiAmJiByZWZcclxuICAgICAgICAgICAgICAgICAgICA/IGlzQXJyYXkocmVmKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlZi5jb25jYXQobm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtyZWYsIG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKV1cclxuICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKVxyXG4gICAgICAgICAgICA6IHJlZixcclxuICAgICAgICBzY29wZUlkOiB2bm9kZS5zY29wZUlkLFxyXG4gICAgICAgIHNsb3RTY29wZUlkczogdm5vZGUuc2xvdFNjb3BlSWRzLFxyXG4gICAgICAgIGNoaWxkcmVuOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGF0Y2hGbGFnID09PSAtMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi8gJiYgaXNBcnJheShjaGlsZHJlbilcclxuICAgICAgICAgICAgPyBjaGlsZHJlbi5tYXAoZGVlcENsb25lVk5vZGUpXHJcbiAgICAgICAgICAgIDogY2hpbGRyZW4sXHJcbiAgICAgICAgdGFyZ2V0OiB2bm9kZS50YXJnZXQsXHJcbiAgICAgICAgdGFyZ2V0QW5jaG9yOiB2bm9kZS50YXJnZXRBbmNob3IsXHJcbiAgICAgICAgc3RhdGljQ291bnQ6IHZub2RlLnN0YXRpY0NvdW50LFxyXG4gICAgICAgIHNoYXBlRmxhZzogdm5vZGUuc2hhcGVGbGFnLFxyXG4gICAgICAgIC8vIGlmIHRoZSB2bm9kZSBpcyBjbG9uZWQgd2l0aCBleHRyYSBwcm9wcywgd2UgY2FuIG5vIGxvbmdlciBhc3N1bWUgaXRzXHJcbiAgICAgICAgLy8gZXhpc3RpbmcgcGF0Y2ggZmxhZyB0byBiZSByZWxpYWJsZSBhbmQgbmVlZCB0byBhZGQgdGhlIEZVTExfUFJPUFMgZmxhZy5cclxuICAgICAgICAvLyBub3RlOiBwcmVzZXJ2ZSBmbGFnIGZvciBmcmFnbWVudHMgc2luY2UgdGhleSB1c2UgdGhlIGZsYWcgZm9yIGNoaWxkcmVuXHJcbiAgICAgICAgLy8gZmFzdCBwYXRocyBvbmx5LlxyXG4gICAgICAgIHBhdGNoRmxhZzogZXh0cmFQcm9wcyAmJiB2bm9kZS50eXBlICE9PSBGcmFnbWVudFxyXG4gICAgICAgICAgICA/IHBhdGNoRmxhZyA9PT0gLTEgLy8gaG9pc3RlZCBub2RlXHJcbiAgICAgICAgICAgICAgICA/IDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqL1xyXG4gICAgICAgICAgICAgICAgOiBwYXRjaEZsYWcgfCAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi9cclxuICAgICAgICAgICAgOiBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzOiB2bm9kZS5keW5hbWljUHJvcHMsXHJcbiAgICAgICAgZHluYW1pY0NoaWxkcmVuOiB2bm9kZS5keW5hbWljQ2hpbGRyZW4sXHJcbiAgICAgICAgYXBwQ29udGV4dDogdm5vZGUuYXBwQ29udGV4dCxcclxuICAgICAgICBkaXJzOiB2bm9kZS5kaXJzLFxyXG4gICAgICAgIHRyYW5zaXRpb246IHZub2RlLnRyYW5zaXRpb24sXHJcbiAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIHRlY2huaWNhbGx5IG9ubHkgYmUgbm9uLW51bGwgb24gbW91bnRlZCBWTm9kZXMuIEhvd2V2ZXIsXHJcbiAgICAgICAgLy8gdGhleSAqc2hvdWxkKiBiZSBjb3BpZWQgZm9yIGtlcHQtYWxpdmUgdm5vZGVzLiBTbyB3ZSBqdXN0IGFsd2F5cyBjb3B5XHJcbiAgICAgICAgLy8gdGhlbSBzaW5jZSB0aGVtIGJlaW5nIG5vbi1udWxsIGR1cmluZyBhIG1vdW50IGRvZXNuJ3QgYWZmZWN0IHRoZSBsb2dpYyBhc1xyXG4gICAgICAgIC8vIHRoZXkgd2lsbCBzaW1wbHkgYmUgb3ZlcndyaXR0ZW4uXHJcbiAgICAgICAgY29tcG9uZW50OiB2bm9kZS5jb21wb25lbnQsXHJcbiAgICAgICAgc3VzcGVuc2U6IHZub2RlLnN1c3BlbnNlLFxyXG4gICAgICAgIHNzQ29udGVudDogdm5vZGUuc3NDb250ZW50ICYmIGNsb25lVk5vZGUodm5vZGUuc3NDb250ZW50KSxcclxuICAgICAgICBzc0ZhbGxiYWNrOiB2bm9kZS5zc0ZhbGxiYWNrICYmIGNsb25lVk5vZGUodm5vZGUuc3NGYWxsYmFjayksXHJcbiAgICAgICAgZWw6IHZub2RlLmVsLFxyXG4gICAgICAgIGFuY2hvcjogdm5vZGUuYW5jaG9yXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNsb25lZDtcclxufVxyXG4vKipcclxuICogRGV2IG9ubHksIGZvciBITVIgb2YgaG9pc3RlZCB2bm9kZXMgcmV1c2VkIGluIHYtZm9yXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS9pc3N1ZXMvMjAyMlxyXG4gKi9cclxuZnVuY3Rpb24gZGVlcENsb25lVk5vZGUodm5vZGUpIHtcclxuICAgIGNvbnN0IGNsb25lZCA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgaWYgKGlzQXJyYXkodm5vZGUuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgY2xvbmVkLmNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW4ubWFwKGRlZXBDbG9uZVZOb2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUodGV4dCA9ICcgJywgZmxhZyA9IDApIHtcclxuICAgIHJldHVybiBjcmVhdGVWTm9kZShUZXh0LCBudWxsLCB0ZXh0LCBmbGFnKTtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ZOb2RlKGNvbnRlbnQsIG51bWJlck9mTm9kZXMpIHtcclxuICAgIC8vIEEgc3RhdGljIHZub2RlIGNhbiBjb250YWluIG11bHRpcGxlIHN0cmluZ2lmaWVkIGVsZW1lbnRzLCBhbmQgdGhlIG51bWJlclxyXG4gICAgLy8gb2YgZWxlbWVudHMgaXMgbmVjZXNzYXJ5IGZvciBoeWRyYXRpb24uXHJcbiAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKFN0YXRpYywgbnVsbCwgY29udGVudCk7XHJcbiAgICB2bm9kZS5zdGF0aWNDb3VudCA9IG51bWJlck9mTm9kZXM7XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVDb21tZW50Vk5vZGUodGV4dCA9ICcnLCBcclxuLy8gd2hlbiB1c2VkIGFzIHRoZSB2LWVsc2UgYnJhbmNoLCB0aGUgY29tbWVudCBub2RlIG11c3QgYmUgY3JlYXRlZCBhcyBhXHJcbi8vIGJsb2NrIHRvIGVuc3VyZSBjb3JyZWN0IHVwZGF0ZXMuXHJcbmFzQmxvY2sgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGFzQmxvY2tcclxuICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlQmxvY2soQ29tbWVudCwgbnVsbCwgdGV4dCkpXHJcbiAgICAgICAgOiBjcmVhdGVWTm9kZShDb21tZW50LCBudWxsLCB0ZXh0KTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVWTm9kZShjaGlsZCkge1xyXG4gICAgaWYgKGNoaWxkID09IG51bGwgfHwgdHlwZW9mIGNoaWxkID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAvLyBlbXB0eSBwbGFjZWhvbGRlclxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShDb21tZW50KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkoY2hpbGQpKSB7XHJcbiAgICAgICAgLy8gZnJhZ21lbnRcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoRnJhZ21lbnQsIG51bGwsIFxyXG4gICAgICAgIC8vICMzNjY2LCBhdm9pZCByZWZlcmVuY2UgcG9sbHV0aW9uIHdoZW4gcmV1c2luZyB2bm9kZVxyXG4gICAgICAgIGNoaWxkLnNsaWNlKCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGNoaWxkID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIC8vIGFscmVhZHkgdm5vZGUsIHRoaXMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiBzaW5jZSBjb21waWxlZCB0ZW1wbGF0ZXNcclxuICAgICAgICAvLyBhbHdheXMgcHJvZHVjZSBhbGwtdm5vZGUgY2hpbGRyZW4gYXJyYXlzXHJcbiAgICAgICAgcmV0dXJuIGNsb25lSWZNb3VudGVkKGNoaWxkKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHN0cmluZ3MgYW5kIG51bWJlcnNcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoVGV4dCwgbnVsbCwgU3RyaW5nKGNoaWxkKSk7XHJcbiAgICB9XHJcbn1cclxuLy8gb3B0aW1pemVkIG5vcm1hbGl6YXRpb24gZm9yIHRlbXBsYXRlLWNvbXBpbGVkIHJlbmRlciBmbnNcclxuZnVuY3Rpb24gY2xvbmVJZk1vdW50ZWQoY2hpbGQpIHtcclxuICAgIHJldHVybiBjaGlsZC5lbCA9PT0gbnVsbCB8fCBjaGlsZC5tZW1vID8gY2hpbGQgOiBjbG9uZVZOb2RlKGNoaWxkKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4pIHtcclxuICAgIGxldCB0eXBlID0gMDtcclxuICAgIGNvbnN0IHsgc2hhcGVGbGFnIH0gPSB2bm9kZTtcclxuICAgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XHJcbiAgICAgICAgY2hpbGRyZW4gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICB0eXBlID0gMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgKDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovIHwgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykpIHtcclxuICAgICAgICAgICAgLy8gTm9ybWFsaXplIHNsb3QgdG8gcGxhaW4gY2hpbGRyZW4gZm9yIHBsYWluIGVsZW1lbnQgYW5kIFRlbGVwb3J0XHJcbiAgICAgICAgICAgIGNvbnN0IHNsb3QgPSBjaGlsZHJlbi5kZWZhdWx0O1xyXG4gICAgICAgICAgICBpZiAoc2xvdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gX2MgbWFya2VyIGlzIGFkZGVkIGJ5IHdpdGhDdHgoKSBpbmRpY2F0aW5nIHRoaXMgaXMgYSBjb21waWxlZCBzbG90XHJcbiAgICAgICAgICAgICAgICBzbG90Ll9jICYmIChzbG90Ll9kID0gZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIHNsb3QoKSk7XHJcbiAgICAgICAgICAgICAgICBzbG90Ll9jICYmIChzbG90Ll9kID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHlwZSA9IDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi87XHJcbiAgICAgICAgICAgIGNvbnN0IHNsb3RGbGFnID0gY2hpbGRyZW4uXztcclxuICAgICAgICAgICAgaWYgKCFzbG90RmxhZyAmJiAhKEludGVybmFsT2JqZWN0S2V5IGluIGNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uX2N0eCA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzbG90RmxhZyA9PT0gMyAvKiBTbG90RmxhZ3MuRk9SV0FSREVEICovICYmIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gYSBjaGlsZCBjb21wb25lbnQgcmVjZWl2ZXMgZm9yd2FyZGVkIHNsb3RzIGZyb20gdGhlIHBhcmVudC5cclxuICAgICAgICAgICAgICAgIC8vIGl0cyBzbG90IHR5cGUgaXMgZGV0ZXJtaW5lZCBieSBpdHMgcGFyZW50J3Mgc2xvdCB0eXBlLlxyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5zbG90cy5fID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5fID0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uXyA9IDIgLyogU2xvdEZsYWdzLkRZTkFNSUMgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUucGF0Y2hGbGFnIHw9IDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihjaGlsZHJlbikpIHtcclxuICAgICAgICBjaGlsZHJlbiA9IHsgZGVmYXVsdDogY2hpbGRyZW4sIF9jdHg6IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSB9O1xyXG4gICAgICAgIHR5cGUgPSAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2hpbGRyZW4gPSBTdHJpbmcoY2hpbGRyZW4pO1xyXG4gICAgICAgIC8vIGZvcmNlIHRlbGVwb3J0IGNoaWxkcmVuIHRvIGFycmF5IHNvIGl0IGNhbiBiZSBtb3ZlZCBhcm91bmRcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICB0eXBlID0gMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLztcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBbY3JlYXRlVGV4dFZOb2RlKGNoaWxkcmVuKV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0eXBlID0gOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdm5vZGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIHZub2RlLnNoYXBlRmxhZyB8PSB0eXBlO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlUHJvcHMoLi4uYXJncykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0b01lcmdlID0gYXJnc1tpXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0b01lcmdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQuY2xhc3MgIT09IHRvTWVyZ2UuY2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXQuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhbcmV0LmNsYXNzLCB0b01lcmdlLmNsYXNzXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXQuc3R5bGUgPSBub3JtYWxpemVTdHlsZShbcmV0LnN0eWxlLCB0b01lcmdlLnN0eWxlXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IHJldFtrZXldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5jb21pbmcgPSB0b01lcmdlW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5jb21pbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZyAhPT0gaW5jb21pbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICAhKGlzQXJyYXkoZXhpc3RpbmcpICYmIGV4aXN0aW5nLmluY2x1ZGVzKGluY29taW5nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRba2V5XSA9IGV4aXN0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBpbmNvbWluZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpbmNvbWluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXRba2V5XSA9IHRvTWVyZ2Vba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gaW52b2tlVk5vZGVIb29rKGhvb2ssIGluc3RhbmNlLCB2bm9kZSwgcHJldlZOb2RlID0gbnVsbCkge1xyXG4gICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDcgLyogRXJyb3JDb2Rlcy5WTk9ERV9IT09LICovLCBbXHJcbiAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgcHJldlZOb2RlXHJcbiAgICBdKTtcclxufVxuXG5jb25zdCBlbXB0eUFwcENvbnRleHQgPSBjcmVhdGVBcHBDb250ZXh0KCk7XHJcbmxldCB1aWQkMSA9IDA7XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlKHZub2RlLCBwYXJlbnQsIHN1c3BlbnNlKSB7XHJcbiAgICBjb25zdCB0eXBlID0gdm5vZGUudHlwZTtcclxuICAgIC8vIGluaGVyaXQgcGFyZW50IGFwcCBjb250ZXh0IC0gb3IgLSBpZiByb290LCBhZG9wdCBmcm9tIHJvb3Qgdm5vZGVcclxuICAgIGNvbnN0IGFwcENvbnRleHQgPSAocGFyZW50ID8gcGFyZW50LmFwcENvbnRleHQgOiB2bm9kZS5hcHBDb250ZXh0KSB8fCBlbXB0eUFwcENvbnRleHQ7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHtcclxuICAgICAgICB1aWQ6IHVpZCQxKyssXHJcbiAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBwYXJlbnQsXHJcbiAgICAgICAgYXBwQ29udGV4dCxcclxuICAgICAgICByb290OiBudWxsLFxyXG4gICAgICAgIG5leHQ6IG51bGwsXHJcbiAgICAgICAgc3ViVHJlZTogbnVsbCxcclxuICAgICAgICBlZmZlY3Q6IG51bGwsXHJcbiAgICAgICAgdXBkYXRlOiBudWxsLFxyXG4gICAgICAgIHNjb3BlOiBuZXcgRWZmZWN0U2NvcGUodHJ1ZSAvKiBkZXRhY2hlZCAqLyksXHJcbiAgICAgICAgcmVuZGVyOiBudWxsLFxyXG4gICAgICAgIHByb3h5OiBudWxsLFxyXG4gICAgICAgIGV4cG9zZWQ6IG51bGwsXHJcbiAgICAgICAgZXhwb3NlUHJveHk6IG51bGwsXHJcbiAgICAgICAgd2l0aFByb3h5OiBudWxsLFxyXG4gICAgICAgIHByb3ZpZGVzOiBwYXJlbnQgPyBwYXJlbnQucHJvdmlkZXMgOiBPYmplY3QuY3JlYXRlKGFwcENvbnRleHQucHJvdmlkZXMpLFxyXG4gICAgICAgIGFjY2Vzc0NhY2hlOiBudWxsLFxyXG4gICAgICAgIHJlbmRlckNhY2hlOiBbXSxcclxuICAgICAgICAvLyBsb2NhbCByZXNvbHZlZCBhc3NldHNcclxuICAgICAgICBjb21wb25lbnRzOiBudWxsLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IG51bGwsXHJcbiAgICAgICAgLy8gcmVzb2x2ZWQgcHJvcHMgYW5kIGVtaXRzIG9wdGlvbnNcclxuICAgICAgICBwcm9wc09wdGlvbnM6IG5vcm1hbGl6ZVByb3BzT3B0aW9ucyh0eXBlLCBhcHBDb250ZXh0KSxcclxuICAgICAgICBlbWl0c09wdGlvbnM6IG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyh0eXBlLCBhcHBDb250ZXh0KSxcclxuICAgICAgICAvLyBlbWl0XHJcbiAgICAgICAgZW1pdDogbnVsbCxcclxuICAgICAgICBlbWl0dGVkOiBudWxsLFxyXG4gICAgICAgIC8vIHByb3BzIGRlZmF1bHQgdmFsdWVcclxuICAgICAgICBwcm9wc0RlZmF1bHRzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgLy8gaW5oZXJpdEF0dHJzXHJcbiAgICAgICAgaW5oZXJpdEF0dHJzOiB0eXBlLmluaGVyaXRBdHRycyxcclxuICAgICAgICAvLyBzdGF0ZVxyXG4gICAgICAgIGN0eDogRU1QVFlfT0JKLFxyXG4gICAgICAgIGRhdGE6IEVNUFRZX09CSixcclxuICAgICAgICBwcm9wczogRU1QVFlfT0JKLFxyXG4gICAgICAgIGF0dHJzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgc2xvdHM6IEVNUFRZX09CSixcclxuICAgICAgICByZWZzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgc2V0dXBTdGF0ZTogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNldHVwQ29udGV4dDogbnVsbCxcclxuICAgICAgICAvLyBzdXNwZW5zZSByZWxhdGVkXHJcbiAgICAgICAgc3VzcGVuc2UsXHJcbiAgICAgICAgc3VzcGVuc2VJZDogc3VzcGVuc2UgPyBzdXNwZW5zZS5wZW5kaW5nSWQgOiAwLFxyXG4gICAgICAgIGFzeW5jRGVwOiBudWxsLFxyXG4gICAgICAgIGFzeW5jUmVzb2x2ZWQ6IGZhbHNlLFxyXG4gICAgICAgIC8vIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgIC8vIG5vdCB1c2luZyBlbnVtcyBoZXJlIGJlY2F1c2UgaXQgcmVzdWx0cyBpbiBjb21wdXRlZCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgaXNNb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc1VubW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNEZWFjdGl2YXRlZDogZmFsc2UsXHJcbiAgICAgICAgYmM6IG51bGwsXHJcbiAgICAgICAgYzogbnVsbCxcclxuICAgICAgICBibTogbnVsbCxcclxuICAgICAgICBtOiBudWxsLFxyXG4gICAgICAgIGJ1OiBudWxsLFxyXG4gICAgICAgIHU6IG51bGwsXHJcbiAgICAgICAgdW06IG51bGwsXHJcbiAgICAgICAgYnVtOiBudWxsLFxyXG4gICAgICAgIGRhOiBudWxsLFxyXG4gICAgICAgIGE6IG51bGwsXHJcbiAgICAgICAgcnRnOiBudWxsLFxyXG4gICAgICAgIHJ0YzogbnVsbCxcclxuICAgICAgICBlYzogbnVsbCxcclxuICAgICAgICBzcDogbnVsbFxyXG4gICAgfTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpbnN0YW5jZS5jdHggPSBjcmVhdGVEZXZSZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGluc3RhbmNlLmN0eCA9IHsgXzogaW5zdGFuY2UgfTtcclxuICAgIH1cclxuICAgIGluc3RhbmNlLnJvb3QgPSBwYXJlbnQgPyBwYXJlbnQucm9vdCA6IGluc3RhbmNlO1xyXG4gICAgaW5zdGFuY2UuZW1pdCA9IGVtaXQkMS5iaW5kKG51bGwsIGluc3RhbmNlKTtcclxuICAgIC8vIGFwcGx5IGN1c3RvbSBlbGVtZW50IHNwZWNpYWwgaGFuZGxpbmdcclxuICAgIGlmICh2bm9kZS5jZSkge1xyXG4gICAgICAgIHZub2RlLmNlKGluc3RhbmNlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpbnN0YW5jZTtcclxufVxyXG5sZXQgY3VycmVudEluc3RhbmNlID0gbnVsbDtcclxuY29uc3QgZ2V0Q3VycmVudEluc3RhbmNlID0gKCkgPT4gY3VycmVudEluc3RhbmNlIHx8IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuY29uc3Qgc2V0Q3VycmVudEluc3RhbmNlID0gKGluc3RhbmNlKSA9PiB7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgIGluc3RhbmNlLnNjb3BlLm9uKCk7XHJcbn07XHJcbmNvbnN0IHVuc2V0Q3VycmVudEluc3RhbmNlID0gKCkgPT4ge1xyXG4gICAgY3VycmVudEluc3RhbmNlICYmIGN1cnJlbnRJbnN0YW5jZS5zY29wZS5vZmYoKTtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSA9IG51bGw7XHJcbn07XHJcbmNvbnN0IGlzQnVpbHRJblRhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnKTtcclxuZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUsIGNvbmZpZykge1xyXG4gICAgY29uc3QgYXBwSXNOYXRpdmVUYWcgPSBjb25maWcuaXNOYXRpdmVUYWcgfHwgTk87XHJcbiAgICBpZiAoaXNCdWlsdEluVGFnKG5hbWUpIHx8IGFwcElzTmF0aXZlVGFnKG5hbWUpKSB7XHJcbiAgICAgICAgd2FybignRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCBpZDogJyArIG5hbWUpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UpIHtcclxuICAgIHJldHVybiBpbnN0YW5jZS52bm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovO1xyXG59XHJcbmxldCBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBmYWxzZTtcclxuZnVuY3Rpb24gc2V0dXBDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSID0gZmFsc2UpIHtcclxuICAgIGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGlzU1NSO1xyXG4gICAgY29uc3QgeyBwcm9wcywgY2hpbGRyZW4gfSA9IGluc3RhbmNlLnZub2RlO1xyXG4gICAgY29uc3QgaXNTdGF0ZWZ1bCA9IGlzU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UpO1xyXG4gICAgaW5pdFByb3BzKGluc3RhbmNlLCBwcm9wcywgaXNTdGF0ZWZ1bCwgaXNTU1IpO1xyXG4gICAgaW5pdFNsb3RzKGluc3RhbmNlLCBjaGlsZHJlbik7XHJcbiAgICBjb25zdCBzZXR1cFJlc3VsdCA9IGlzU3RhdGVmdWxcclxuICAgICAgICA/IHNldHVwU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSKVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgaXNJblNTUkNvbXBvbmVudFNldHVwID0gZmFsc2U7XHJcbiAgICByZXR1cm4gc2V0dXBSZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gc2V0dXBTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IpIHtcclxuICAgIHZhciBfYTtcclxuICAgIGNvbnN0IENvbXBvbmVudCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5uYW1lKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShDb21wb25lbnQubmFtZSwgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcG9uZW50LmNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhDb21wb25lbnQuY29tcG9uZW50cyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lc1tpXSwgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuZGlyZWN0aXZlcykge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKENvbXBvbmVudC5kaXJlY3RpdmVzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5hbWVzW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcG9uZW50LmNvbXBpbGVyT3B0aW9ucyAmJiBpc1J1bnRpbWVPbmx5KCkpIHtcclxuICAgICAgICAgICAgd2FybihgXCJjb21waWxlck9wdGlvbnNcIiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIGEgYnVpbGQgb2YgVnVlIHRoYXQgYCArXHJcbiAgICAgICAgICAgICAgICBgaW5jbHVkZXMgdGhlIHJ1bnRpbWUgY29tcGlsZXIuIFNpbmNlIHlvdSBhcmUgdXNpbmcgYSBydW50aW1lLW9ubHkgYCArXHJcbiAgICAgICAgICAgICAgICBgYnVpbGQsIHRoZSBvcHRpb25zIHNob3VsZCBiZSBwYXNzZWQgdmlhIHlvdXIgYnVpbGQgdG9vbCBjb25maWcgaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAwLiBjcmVhdGUgcmVuZGVyIHByb3h5IHByb3BlcnR5IGFjY2VzcyBjYWNoZVxyXG4gICAgaW5zdGFuY2UuYWNjZXNzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgLy8gMS4gY3JlYXRlIHB1YmxpYyBpbnN0YW5jZSAvIHJlbmRlciBwcm94eVxyXG4gICAgLy8gYWxzbyBtYXJrIGl0IHJhdyBzbyBpdCdzIG5ldmVyIG9ic2VydmVkXHJcbiAgICBpbnN0YW5jZS5wcm94eSA9IG1hcmtSYXcobmV3IFByb3h5KGluc3RhbmNlLmN0eCwgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzKSk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgZXhwb3NlUHJvcHNPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gY2FsbCBzZXR1cCgpXHJcbiAgICBjb25zdCB7IHNldHVwIH0gPSBDb21wb25lbnQ7XHJcbiAgICBpZiAoc2V0dXApIHtcclxuICAgICAgICBjb25zdCBzZXR1cENvbnRleHQgPSAoaW5zdGFuY2Uuc2V0dXBDb250ZXh0ID1cclxuICAgICAgICAgICAgc2V0dXAubGVuZ3RoID4gMSA/IGNyZWF0ZVNldHVwQ29udGV4dChpbnN0YW5jZSkgOiBudWxsKTtcclxuICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICBjb25zdCBzZXR1cFJlc3VsdCA9IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhzZXR1cCwgaW5zdGFuY2UsIDAgLyogRXJyb3JDb2Rlcy5TRVRVUF9GVU5DVElPTiAqLywgWyhwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpbnN0YW5jZS5wcm9wcykgOiBpbnN0YW5jZS5wcm9wcywgc2V0dXBDb250ZXh0XSk7XHJcbiAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgaWYgKGlzUHJvbWlzZShzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAgICAgc2V0dXBSZXN1bHQudGhlbih1bnNldEN1cnJlbnRJbnN0YW5jZSwgdW5zZXRDdXJyZW50SW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBpZiAoaXNTU1IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGUgcHJvbWlzZSBzbyBzZXJ2ZXItcmVuZGVyZXIgY2FuIHdhaXQgb24gaXRcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXNvbHZlZFJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCByZXNvbHZlZFJlc3VsdCwgaXNTU1IpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZSwgaW5zdGFuY2UsIDAgLyogRXJyb3JDb2Rlcy5TRVRVUF9GVU5DVElPTiAqLyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGFzeW5jIHNldHVwIHJldHVybmVkIFByb21pc2UuXHJcbiAgICAgICAgICAgICAgICAvLyBiYWlsIGhlcmUgYW5kIHdhaXQgZm9yIHJlLWVudHJ5LlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYXN5bmNEZXAgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWluc3RhbmNlLnN1c3BlbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IChfYSA9IENvbXBvbmVudC5uYW1lKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnQW5vbnltb3VzJztcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgPCR7bmFtZX0+OiBzZXR1cCBmdW5jdGlvbiByZXR1cm5lZCBhIHByb21pc2UsIGJ1dCBubyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYDxTdXNwZW5zZT4gYm91bmRhcnkgd2FzIGZvdW5kIGluIHRoZSBwYXJlbnQgY29tcG9uZW50IHRyZWUuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgQSBjb21wb25lbnQgd2l0aCBhc3luYyBzZXR1cCgpIG11c3QgYmUgbmVzdGVkIGluIGEgPFN1c3BlbnNlPiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGluIG9yZGVyIHRvIGJlIHJlbmRlcmVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgc2V0dXBSZXN1bHQsIGlzU1NSKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBzZXR1cFJlc3VsdCwgaXNTU1IpIHtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgIC8vIHNldHVwIHJldHVybmVkIGFuIGlubGluZSByZW5kZXIgZnVuY3Rpb25cclxuICAgICAgICBpZiAoaW5zdGFuY2UudHlwZS5fX3NzcklubGluZVJlbmRlcikge1xyXG4gICAgICAgICAgICAvLyB3aGVuIHRoZSBmdW5jdGlvbidzIG5hbWUgaXMgYHNzclJlbmRlcmAgKGNvbXBpbGVkIGJ5IFNGQyBpbmxpbmUgbW9kZSksXHJcbiAgICAgICAgICAgIC8vIHNldCBpdCBhcyBzc3JSZW5kZXIgaW5zdGVhZC5cclxuICAgICAgICAgICAgaW5zdGFuY2Uuc3NyUmVuZGVyID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzVk5vZGUoc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHNldHVwKCkgc2hvdWxkIG5vdCByZXR1cm4gVk5vZGVzIGRpcmVjdGx5IC0gYCArXHJcbiAgICAgICAgICAgICAgICBgcmV0dXJuIGEgcmVuZGVyIGZ1bmN0aW9uIGluc3RlYWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldHVwIHJldHVybmVkIGJpbmRpbmdzLlxyXG4gICAgICAgIC8vIGFzc3VtaW5nIGEgcmVuZGVyIGZ1bmN0aW9uIGNvbXBpbGVkIGZyb20gdGVtcGxhdGUgaXMgcHJlc2VudC5cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5kZXZ0b29sc1Jhd1NldHVwU3RhdGUgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2Uuc2V0dXBTdGF0ZSA9IHByb3h5UmVmcyhzZXR1cFJlc3VsdCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBleHBvc2VTZXR1cFN0YXRlT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2V0dXBSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHdhcm4oYHNldHVwKCkgc2hvdWxkIHJldHVybiBhbiBvYmplY3QuIFJlY2VpdmVkOiAke3NldHVwUmVzdWx0ID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHNldHVwUmVzdWx0fWApO1xyXG4gICAgfVxyXG4gICAgZmluaXNoQ29tcG9uZW50U2V0dXAoaW5zdGFuY2UsIGlzU1NSKTtcclxufVxyXG5sZXQgY29tcGlsZTtcclxubGV0IGluc3RhbGxXaXRoUHJveHk7XHJcbi8qKlxyXG4gKiBGb3IgcnVudGltZS1kb20gdG8gcmVnaXN0ZXIgdGhlIGNvbXBpbGVyLlxyXG4gKiBOb3RlIHRoZSBleHBvcnRlZCBtZXRob2QgdXNlcyBhbnkgdG8gYXZvaWQgZC50cyByZWx5aW5nIG9uIHRoZSBjb21waWxlciB0eXBlcy5cclxuICovXHJcbmZ1bmN0aW9uIHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyKF9jb21waWxlKSB7XHJcbiAgICBjb21waWxlID0gX2NvbXBpbGU7XHJcbiAgICBpbnN0YWxsV2l0aFByb3h5ID0gaSA9PiB7XHJcbiAgICAgICAgaWYgKGkucmVuZGVyLl9yYykge1xyXG4gICAgICAgICAgICBpLndpdGhQcm94eSA9IG5ldyBQcm94eShpLmN0eCwgUnVudGltZUNvbXBpbGVkUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbi8vIGRldiBvbmx5XHJcbmNvbnN0IGlzUnVudGltZU9ubHkgPSAoKSA9PiAhY29tcGlsZTtcclxuZnVuY3Rpb24gZmluaXNoQ29tcG9uZW50U2V0dXAoaW5zdGFuY2UsIGlzU1NSLCBza2lwT3B0aW9ucykge1xyXG4gICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgIC8vIHRlbXBsYXRlIC8gcmVuZGVyIGZ1bmN0aW9uIG5vcm1hbGl6YXRpb25cclxuICAgIC8vIGNvdWxkIGJlIGFscmVhZHkgc2V0IHdoZW4gcmV0dXJuZWQgZnJvbSBzZXR1cCgpXHJcbiAgICBpZiAoIWluc3RhbmNlLnJlbmRlcikge1xyXG4gICAgICAgIC8vIG9ubHkgZG8gb24tdGhlLWZseSBjb21waWxlIGlmIG5vdCBpbiBTU1IgLSBTU1Igb24tdGhlLWZseSBjb21waWxhdGlvblxyXG4gICAgICAgIC8vIGlzIGRvbmUgYnkgc2VydmVyLXJlbmRlcmVyXHJcbiAgICAgICAgaWYgKCFpc1NTUiAmJiBjb21waWxlICYmICFDb21wb25lbnQucmVuZGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gQ29tcG9uZW50LnRlbXBsYXRlO1xyXG4gICAgICAgICAgICBpZiAodGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBjb21waWxlYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzQ3VzdG9tRWxlbWVudCwgY29tcGlsZXJPcHRpb25zIH0gPSBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVsaW1pdGVycywgY29tcGlsZXJPcHRpb25zOiBjb21wb25lbnRDb21waWxlck9wdGlvbnMgfSA9IENvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsQ29tcGlsZXJPcHRpb25zID0gZXh0ZW5kKGV4dGVuZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNDdXN0b21FbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGltaXRlcnNcclxuICAgICAgICAgICAgICAgIH0sIGNvbXBpbGVyT3B0aW9ucyksIGNvbXBvbmVudENvbXBpbGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBDb21wb25lbnQucmVuZGVyID0gY29tcGlsZSh0ZW1wbGF0ZSwgZmluYWxDb21waWxlck9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBjb21waWxlYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gKENvbXBvbmVudC5yZW5kZXIgfHwgTk9PUCk7XHJcbiAgICAgICAgLy8gZm9yIHJ1bnRpbWUtY29tcGlsZWQgcmVuZGVyIGZ1bmN0aW9ucyB1c2luZyBgd2l0aGAgYmxvY2tzLCB0aGUgcmVuZGVyXHJcbiAgICAgICAgLy8gcHJveHkgdXNlZCBuZWVkcyBhIGRpZmZlcmVudCBgaGFzYCBoYW5kbGVyIHdoaWNoIGlzIG1vcmUgcGVyZm9ybWFudCBhbmRcclxuICAgICAgICAvLyBhbHNvIG9ubHkgYWxsb3dzIGEgd2hpdGVsaXN0IG9mIGdsb2JhbHMgdG8gZmFsbHRocm91Z2guXHJcbiAgICAgICAgaWYgKGluc3RhbGxXaXRoUHJveHkpIHtcclxuICAgICAgICAgICAgaW5zdGFsbFdpdGhQcm94eShpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc3VwcG9ydCBmb3IgMi54IG9wdGlvbnNcclxuICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fICYmICEoZmFsc2UgKSkge1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIGFwcGx5T3B0aW9ucyhpbnN0YW5jZSk7XHJcbiAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICB9XHJcbiAgICAvLyB3YXJuIG1pc3NpbmcgdGVtcGxhdGUvcmVuZGVyXHJcbiAgICAvLyB0aGUgcnVudGltZSBjb21waWxhdGlvbiBvZiB0ZW1wbGF0ZSBpbiBTU1IgaXMgZG9uZSBieSBzZXJ2ZXItcmVuZGVyXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFDb21wb25lbnQucmVuZGVyICYmIGluc3RhbmNlLnJlbmRlciA9PT0gTk9PUCAmJiAhaXNTU1IpIHtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICBpZiAoIWNvbXBpbGUgJiYgQ29tcG9uZW50LnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBwcm92aWRlZCB0ZW1wbGF0ZSBvcHRpb24gYnV0IGAgK1xyXG4gICAgICAgICAgICAgICAgYHJ1bnRpbWUgY29tcGlsYXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIFZ1ZS5gICtcclxuICAgICAgICAgICAgICAgIChgIENvbmZpZ3VyZSB5b3VyIGJ1bmRsZXIgdG8gYWxpYXMgXCJ2dWVcIiB0byBcInZ1ZS9kaXN0L3Z1ZS5lc20tYnVuZGxlci5qc1wiLmBcclxuICAgICAgICAgICAgICAgICAgICApIC8qIHNob3VsZCBub3QgaGFwcGVuICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBpcyBtaXNzaW5nIHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbi5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQXR0cnNQcm94eShpbnN0YW5jZSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm94eShpbnN0YW5jZS5hdHRycywgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sICckYXR0cnMnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihgc2V0dXBDb250ZXh0LmF0dHJzIGlzIHJlYWRvbmx5LmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZWxldGVQcm9wZXJ0eSgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwQ29udGV4dC5hdHRycyBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICA6IHtcclxuICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhpbnN0YW5jZSwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTZXR1cENvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGV4cG9zZSA9IGV4cG9zZWQgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UuZXhwb3NlZCkge1xyXG4gICAgICAgICAgICB3YXJuKGBleHBvc2UoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZSBwZXIgc2V0dXAoKS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IGV4cG9zZWQgfHwge307XHJcbiAgICB9O1xyXG4gICAgbGV0IGF0dHJzO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIC8vIFdlIHVzZSBnZXR0ZXJzIGluIGRldiBpbiBjYXNlIGxpYnMgbGlrZSB0ZXN0LXV0aWxzIG92ZXJ3cml0ZSBpbnN0YW5jZVxyXG4gICAgICAgIC8vIHByb3BlcnRpZXMgKG92ZXJ3cml0ZXMgc2hvdWxkIG5vdCBiZSBkb25lIGluIHByb2QpXHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgICAgICBnZXQgYXR0cnMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnMgfHwgKGF0dHJzID0gY3JlYXRlQXR0cnNQcm94eShpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXQgc2xvdHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hhbGxvd1JlYWRvbmx5KGluc3RhbmNlLnNsb3RzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0IGVtaXQoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGV2ZW50LCAuLi5hcmdzKSA9PiBpbnN0YW5jZS5lbWl0KGV2ZW50LCAuLi5hcmdzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXhwb3NlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBnZXQgYXR0cnMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnMgfHwgKGF0dHJzID0gY3JlYXRlQXR0cnNQcm94eShpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzbG90czogaW5zdGFuY2Uuc2xvdHMsXHJcbiAgICAgICAgICAgIGVtaXQ6IGluc3RhbmNlLmVtaXQsXHJcbiAgICAgICAgICAgIGV4cG9zZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0RXhwb3NlUHJveHkoaW5zdGFuY2UpIHtcclxuICAgIGlmIChpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIChpbnN0YW5jZS5leHBvc2VQcm94eSB8fFxyXG4gICAgICAgICAgICAoaW5zdGFuY2UuZXhwb3NlUHJveHkgPSBuZXcgUHJveHkocHJveHlSZWZzKG1hcmtSYXcoaW5zdGFuY2UuZXhwb3NlZCkpLCB7XHJcbiAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSBpbiBwdWJsaWNQcm9wZXJ0aWVzTWFwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV0oaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xyXG5jb25zdCBjbGFzc2lmeSA9IChzdHIpID0+IHN0ci5yZXBsYWNlKGNsYXNzaWZ5UkUsIGMgPT4gYy50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKC9bLV9dL2csICcnKTtcclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQsIGluY2x1ZGVJbmZlcnJlZCA9IHRydWUpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKENvbXBvbmVudClcclxuICAgICAgICA/IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZVxyXG4gICAgICAgIDogQ29tcG9uZW50Lm5hbWUgfHwgKGluY2x1ZGVJbmZlcnJlZCAmJiBDb21wb25lbnQuX19uYW1lKTtcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRDb21wb25lbnROYW1lKGluc3RhbmNlLCBDb21wb25lbnQsIGlzUm9vdCA9IGZhbHNlKSB7XHJcbiAgICBsZXQgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50KTtcclxuICAgIGlmICghbmFtZSAmJiBDb21wb25lbnQuX19maWxlKSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBDb21wb25lbnQuX19maWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLlxcdyskLyk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBtYXRjaFsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW5hbWUgJiYgaW5zdGFuY2UgJiYgaW5zdGFuY2UucGFyZW50KSB7XHJcbiAgICAgICAgLy8gdHJ5IHRvIGluZmVyIHRoZSBuYW1lIGJhc2VkIG9uIHJldmVyc2UgcmVzb2x1dGlvblxyXG4gICAgICAgIGNvbnN0IGluZmVyRnJvbVJlZ2lzdHJ5ID0gKHJlZ2lzdHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJlZ2lzdHJ5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVnaXN0cnlba2V5XSA9PT0gQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbmFtZSA9XHJcbiAgICAgICAgICAgIGluZmVyRnJvbVJlZ2lzdHJ5KGluc3RhbmNlLmNvbXBvbmVudHMgfHxcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudC50eXBlLmNvbXBvbmVudHMpIHx8IGluZmVyRnJvbVJlZ2lzdHJ5KGluc3RhbmNlLmFwcENvbnRleHQuY29tcG9uZW50cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmFtZSA/IGNsYXNzaWZ5KG5hbWUpIDogaXNSb290ID8gYEFwcGAgOiBgQW5vbnltb3VzYDtcclxufVxyXG5mdW5jdGlvbiBpc0NsYXNzQ29tcG9uZW50KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbih2YWx1ZSkgJiYgJ19fdmNjT3B0cycgaW4gdmFsdWU7XHJcbn1cblxuY29uc3QgY29tcHV0ZWQgPSAoKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zKSA9PiB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gY29tcHV0ZWQkMShnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucywgaXNJblNTUkNvbXBvbmVudFNldHVwKTtcclxufSk7XG5cbi8vIGRldiBvbmx5XHJcbmNvbnN0IHdhcm5SdW50aW1lVXNhZ2UgPSAobWV0aG9kKSA9PiB3YXJuKGAke21ldGhvZH0oKSBpcyBhIGNvbXBpbGVyLWhpbnQgaGVscGVyIHRoYXQgaXMgb25seSB1c2FibGUgaW5zaWRlIGAgK1xyXG4gICAgYDxzY3JpcHQgc2V0dXA+IG9mIGEgc2luZ2xlIGZpbGUgY29tcG9uZW50LiBJdHMgYXJndW1lbnRzIHNob3VsZCBiZSBgICtcclxuICAgIGBjb21waWxlZCBhd2F5IGFuZCBwYXNzaW5nIGl0IGF0IHJ1bnRpbWUgaGFzIG5vIGVmZmVjdC5gKTtcclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gZGVmaW5lUHJvcHMoKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lUHJvcHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRlZmluZUVtaXRzKCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZUVtaXRzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vKipcclxuICogVnVlIGA8c2NyaXB0IHNldHVwPmAgY29tcGlsZXIgbWFjcm8gZm9yIGRlY2xhcmluZyBhIGNvbXBvbmVudCdzIGV4cG9zZWRcclxuICogaW5zdGFuY2UgcHJvcGVydGllcyB3aGVuIGl0IGlzIGFjY2Vzc2VkIGJ5IGEgcGFyZW50IGNvbXBvbmVudCB2aWEgdGVtcGxhdGVcclxuICogcmVmcy5cclxuICpcclxuICogYDxzY3JpcHQgc2V0dXA+YCBjb21wb25lbnRzIGFyZSBjbG9zZWQgYnkgZGVmYXVsdCAtIGkuZS4gdmFyaWFibGVzIGluc2lkZVxyXG4gKiB0aGUgYDxzY3JpcHQgc2V0dXA+YCBzY29wZSBpcyBub3QgZXhwb3NlZCB0byBwYXJlbnQgdW5sZXNzIGV4cGxpY2l0bHkgZXhwb3NlZFxyXG4gKiB2aWEgYGRlZmluZUV4cG9zZWAuXHJcbiAqXHJcbiAqIFRoaXMgaXMgb25seSB1c2FibGUgaW5zaWRlIGA8c2NyaXB0IHNldHVwPmAsIGlzIGNvbXBpbGVkIGF3YXkgaW4gdGhlXHJcbiAqIG91dHB1dCBhbmQgc2hvdWxkICoqbm90KiogYmUgYWN0dWFsbHkgY2FsbGVkIGF0IHJ1bnRpbWUuXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWZpbmVFeHBvc2UoZXhwb3NlZCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZUV4cG9zZWApO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBWdWUgYDxzY3JpcHQgc2V0dXA+YCBjb21waWxlciBtYWNybyBmb3IgcHJvdmlkaW5nIHByb3BzIGRlZmF1bHQgdmFsdWVzIHdoZW5cclxuICogdXNpbmcgdHlwZS1iYXNlZCBgZGVmaW5lUHJvcHNgIGRlY2xhcmF0aW9uLlxyXG4gKlxyXG4gKiBFeGFtcGxlIHVzYWdlOlxyXG4gKiBgYGB0c1xyXG4gKiB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8e1xyXG4gKiAgIHNpemU/OiBudW1iZXJcclxuICogICBsYWJlbHM/OiBzdHJpbmdbXVxyXG4gKiB9PigpLCB7XHJcbiAqICAgc2l6ZTogMyxcclxuICogICBsYWJlbHM6ICgpID0+IFsnZGVmYXVsdCBsYWJlbCddXHJcbiAqIH0pXHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBUaGlzIGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgPHNjcmlwdCBzZXR1cD5gLCBpcyBjb21waWxlZCBhd2F5IGluIHRoZSBvdXRwdXRcclxuICogYW5kIHNob3VsZCAqKm5vdCoqIGJlIGFjdHVhbGx5IGNhbGxlZCBhdCBydW50aW1lLlxyXG4gKi9cclxuZnVuY3Rpb24gd2l0aERlZmF1bHRzKHByb3BzLCBkZWZhdWx0cykge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYHdpdGhEZWZhdWx0c2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuZnVuY3Rpb24gdXNlU2xvdHMoKSB7XHJcbiAgICByZXR1cm4gZ2V0Q29udGV4dCgpLnNsb3RzO1xyXG59XHJcbmZ1bmN0aW9uIHVzZUF0dHJzKCkge1xyXG4gICAgcmV0dXJuIGdldENvbnRleHQoKS5hdHRycztcclxufVxyXG5mdW5jdGlvbiBnZXRDb250ZXh0KCkge1xyXG4gICAgY29uc3QgaSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaSkge1xyXG4gICAgICAgIHdhcm4oYHVzZUNvbnRleHQoKSBjYWxsZWQgd2l0aG91dCBhY3RpdmUgaW5zdGFuY2UuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaS5zZXR1cENvbnRleHQgfHwgKGkuc2V0dXBDb250ZXh0ID0gY3JlYXRlU2V0dXBDb250ZXh0KGkpKTtcclxufVxyXG4vKipcclxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgZGVmYXVsdCBkZWNsYXJhdGlvbnMuIEltcG9ydGVkIGJ5IGNvbXBpbGVkIGNvZGVcclxuICogb25seS5cclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiBtZXJnZURlZmF1bHRzKHJhdywgZGVmYXVsdHMpIHtcclxuICAgIGNvbnN0IHByb3BzID0gaXNBcnJheShyYXcpXHJcbiAgICAgICAgPyByYXcucmVkdWNlKChub3JtYWxpemVkLCBwKSA9PiAoKG5vcm1hbGl6ZWRbcF0gPSB7fSksIG5vcm1hbGl6ZWQpLCB7fSlcclxuICAgICAgICA6IHJhdztcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRzKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0ID0gcHJvcHNba2V5XTtcclxuICAgICAgICBpZiAob3B0KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9wdCkgfHwgaXNGdW5jdGlvbihvcHQpKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wc1trZXldID0geyB0eXBlOiBvcHQsIGRlZmF1bHQ6IGRlZmF1bHRzW2tleV0gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9wdC5kZWZhdWx0ID0gZGVmYXVsdHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChvcHQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHsgZGVmYXVsdDogZGVmYXVsdHNba2V5XSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgcHJvcHMgZGVmYXVsdCBrZXkgXCIke2tleX1cIiBoYXMgbm8gY29ycmVzcG9uZGluZyBkZWNsYXJhdGlvbi5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbn1cclxuLyoqXHJcbiAqIFVzZWQgdG8gY3JlYXRlIGEgcHJveHkgZm9yIHRoZSByZXN0IGVsZW1lbnQgd2hlbiBkZXN0cnVjdHVyaW5nIHByb3BzIHdpdGhcclxuICogZGVmaW5lUHJvcHMoKS5cclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wc1Jlc3RQcm94eShwcm9wcywgZXhjbHVkZWRLZXlzKSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgaWYgKCFleGNsdWRlZEtleXMuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmV0LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHByb3BzW2tleV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG4vKipcclxuICogYDxzY3JpcHQgc2V0dXA+YCBoZWxwZXIgZm9yIHBlcnNpc3RpbmcgdGhlIGN1cnJlbnQgaW5zdGFuY2UgY29udGV4dCBvdmVyXHJcbiAqIGFzeW5jL2F3YWl0IGZsb3dzLlxyXG4gKlxyXG4gKiBgQHZ1ZS9jb21waWxlci1zZmNgIGNvbnZlcnRzIHRoZSBmb2xsb3dpbmc6XHJcbiAqXHJcbiAqIGBgYHRzXHJcbiAqIGNvbnN0IHggPSBhd2FpdCBmb28oKVxyXG4gKiBgYGBcclxuICpcclxuICogaW50bzpcclxuICpcclxuICogYGBgdHNcclxuICogbGV0IF9fdGVtcCwgX19yZXN0b3JlXHJcbiAqIGNvbnN0IHggPSAoKFtfX3RlbXAsIF9fcmVzdG9yZV0gPSB3aXRoQXN5bmNDb250ZXh0KCgpID0+IGZvbygpKSksX190ZW1wPWF3YWl0IF9fdGVtcCxfX3Jlc3RvcmUoKSxfX3RlbXApXHJcbiAqIGBgYFxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIHdpdGhBc3luY0NvbnRleHQoZ2V0QXdhaXRhYmxlKSB7XHJcbiAgICBjb25zdCBjdHggPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWN0eCkge1xyXG4gICAgICAgIHdhcm4oYHdpdGhBc3luY0NvbnRleHQgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGN1cnJlbnQgaW5zdGFuY2UuIGAgK1xyXG4gICAgICAgICAgICBgVGhpcyBpcyBsaWtlbHkgYSBidWcuYCk7XHJcbiAgICB9XHJcbiAgICBsZXQgYXdhaXRhYmxlID0gZ2V0QXdhaXRhYmxlKCk7XHJcbiAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgaWYgKGlzUHJvbWlzZShhd2FpdGFibGUpKSB7XHJcbiAgICAgICAgYXdhaXRhYmxlID0gYXdhaXRhYmxlLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoY3R4KTtcclxuICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBbYXdhaXRhYmxlLCAoKSA9PiBzZXRDdXJyZW50SW5zdGFuY2UoY3R4KV07XHJcbn1cblxuLy8gQWN0dWFsIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGgodHlwZSwgcHJvcHNPckNoaWxkcmVuLCBjaGlsZHJlbikge1xyXG4gICAgY29uc3QgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XHJcbiAgICBpZiAobCA9PT0gMikge1xyXG4gICAgICAgIGlmIChpc09iamVjdChwcm9wc09yQ2hpbGRyZW4pICYmICFpc0FycmF5KHByb3BzT3JDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgLy8gc2luZ2xlIHZub2RlIHdpdGhvdXQgcHJvcHNcclxuICAgICAgICAgICAgaWYgKGlzVk5vZGUocHJvcHNPckNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG51bGwsIFtwcm9wc09yQ2hpbGRyZW5dKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wcyB3aXRob3V0IGNoaWxkcmVuXHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gb21pdCBwcm9wc1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbnVsbCwgcHJvcHNPckNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAobCA+IDMpIHtcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChsID09PSAzICYmIGlzVk5vZGUoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gW2NoaWxkcmVuXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzT3JDaGlsZHJlbiwgY2hpbGRyZW4pO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHNzckNvbnRleHRLZXkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHNzckNvbnRleHRgIDogYGApO1xyXG5jb25zdCB1c2VTU1JDb250ZXh0ID0gKCkgPT4ge1xyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IGluamVjdChzc3JDb250ZXh0S2V5KTtcclxuICAgICAgICBpZiAoIWN0eCkge1xyXG4gICAgICAgICAgICB3YXJuKGBTZXJ2ZXIgcmVuZGVyaW5nIGNvbnRleHQgbm90IHByb3ZpZGVkLiBNYWtlIHN1cmUgdG8gb25seSBjYWxsIGAgK1xyXG4gICAgICAgICAgICAgICAgYHVzZVNTUkNvbnRleHQoKSBjb25kaXRpb25hbGx5IGluIHRoZSBzZXJ2ZXIgYnVpbGQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdHg7XHJcbiAgICB9XHJcbn07XG5cbmZ1bmN0aW9uIGlzU2hhbGxvdyh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzU2hhbGxvd1wiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfU0hBTExPVyAqL10pO1xyXG59XG5cbmZ1bmN0aW9uIGluaXRDdXN0b21Gb3JtYXR0ZXIoKSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxuICAgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdnVlU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzNiYTc3NicgfTtcclxuICAgIGNvbnN0IG51bWJlclN0eWxlID0geyBzdHlsZTogJ2NvbG9yOiMwYjFiYzknIH07XHJcbiAgICBjb25zdCBzdHJpbmdTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojYjYyZTI0JyB9O1xyXG4gICAgY29uc3Qga2V5d29yZFN0eWxlID0geyBzdHlsZTogJ2NvbG9yOiM5ZDI4OGMnIH07XHJcbiAgICAvLyBjdXN0b20gZm9ybWF0dGVyIGZvciBDaHJvbWVcclxuICAgIC8vIGh0dHBzOi8vd3d3Lm1hdHR6ZXVuZXJ0LmNvbS8yMDE2LzAyLzE5L2N1c3RvbS1jaHJvbWUtZGV2dG9vbHMtb2JqZWN0LWZvcm1hdHRlcnMuaHRtbFxyXG4gICAgY29uc3QgZm9ybWF0dGVyID0ge1xyXG4gICAgICAgIGhlYWRlcihvYmopIHtcclxuICAgICAgICAgICAgLy8gVE9ETyBhbHNvIGZvcm1hdCBDb21wb25lbnRQdWJsaWNJbnN0YW5jZSAmIGN0eC5zbG90cy9hdHRycyBpbiBzZXR1cFxyXG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvYmouX19pc1Z1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnZGl2JywgdnVlU3R5bGUsIGBWdWVJbnN0YW5jZWBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVmKG9iaikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgWydzcGFuJywgdnVlU3R5bGUsIGdlblJlZkZsYWcob2JqKV0sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iai52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgYD5gXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhY3RpdmUob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgaXNTaGFsbG93KG9iaikgPyAnU2hhbGxvd1JlYWN0aXZlJyA6ICdSZWFjdGl2ZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmopLFxyXG4gICAgICAgICAgICAgICAgICAgIGA+JHtpc1JlYWRvbmx5KG9iaikgPyBgIChyZWFkb25seSlgIDogYGB9YFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlYWRvbmx5KG9iaikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgWydzcGFuJywgdnVlU3R5bGUsIGlzU2hhbGxvdyhvYmopID8gJ1NoYWxsb3dSZWFkb25seScgOiAnUmVhZG9ubHknXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqKSxcclxuICAgICAgICAgICAgICAgICAgICAnPidcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXNCb2R5KG9iaikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqICYmIG9iai5fX2lzVnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYm9keShvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iaiAmJiBvYmouX19pc1Z1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtYXRJbnN0YW5jZShvYmouJClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZnVuY3Rpb24gZm9ybWF0SW5zdGFuY2UoaW5zdGFuY2UpIHtcclxuICAgICAgICBjb25zdCBibG9ja3MgPSBbXTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UudHlwZS5wcm9wcyAmJiBpbnN0YW5jZS5wcm9wcykge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdwcm9wcycsIHRvUmF3KGluc3RhbmNlLnByb3BzKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5zdGFuY2Uuc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ3NldHVwJywgaW5zdGFuY2Uuc2V0dXBTdGF0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5zdGFuY2UuZGF0YSAhPT0gRU1QVFlfT0JKKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ2RhdGEnLCB0b1JhdyhpbnN0YW5jZS5kYXRhKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb21wdXRlZCA9IGV4dHJhY3RLZXlzKGluc3RhbmNlLCAnY29tcHV0ZWQnKTtcclxuICAgICAgICBpZiAoY29tcHV0ZWQpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnY29tcHV0ZWQnLCBjb21wdXRlZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbmplY3RlZCA9IGV4dHJhY3RLZXlzKGluc3RhbmNlLCAnaW5qZWN0Jyk7XHJcbiAgICAgICAgaWYgKGluamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ2luamVjdGVkJywgaW5qZWN0ZWQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmxvY2tzLnB1c2goW1xyXG4gICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICdzcGFuJyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZToga2V5d29yZFN0eWxlLnN0eWxlICsgJztvcGFjaXR5OjAuNjYnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgJyQgKGludGVybmFsKTogJ1xyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBbJ29iamVjdCcsIHsgb2JqZWN0OiBpbnN0YW5jZSB9XVxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHJldHVybiBibG9ja3M7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZUJsb2NrKHR5cGUsIHRhcmdldCkge1xyXG4gICAgICAgIHRhcmdldCA9IGV4dGVuZCh7fSwgdGFyZ2V0KTtcclxuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHRhcmdldCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCB7fV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICB7IHN0eWxlOiAnbGluZS1oZWlnaHQ6MS4yNWVtO21hcmdpbi1ib3R0b206MC42ZW0nIH0sXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnY29sb3I6IzQ3NjU4MidcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0eXBlXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAncGFkZGluZy1sZWZ0OjEuMjVlbSdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyh0YXJnZXQpLm1hcChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgWydzcGFuJywga2V5d29yZFN0eWxlLCBrZXkgKyAnOiAnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUodGFyZ2V0W2tleV0sIGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGZvcm1hdFZhbHVlKHYsIGFzUmF3ID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIG51bWJlclN0eWxlLCB2XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBzdHJpbmdTdHlsZSwgSlNPTi5zdHJpbmdpZnkodildO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBrZXl3b3JkU3R5bGUsIHZdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gWydvYmplY3QnLCB7IG9iamVjdDogYXNSYXcgPyB0b1Jhdyh2KSA6IHYgfV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgc3RyaW5nU3R5bGUsIFN0cmluZyh2KV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZXh0cmFjdEtleXMoaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgICAgICBjb25zdCBDb21wID0gaW5zdGFuY2UudHlwZTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihDb21wKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZCA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluc3RhbmNlLmN0eCkge1xyXG4gICAgICAgICAgICBpZiAoaXNLZXlPZlR5cGUoQ29tcCwga2V5LCB0eXBlKSkge1xyXG4gICAgICAgICAgICAgICAgZXh0cmFjdGVkW2tleV0gPSBpbnN0YW5jZS5jdHhba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXh0cmFjdGVkO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNLZXlPZlR5cGUoQ29tcCwga2V5LCB0eXBlKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0cyA9IENvbXBbdHlwZV07XHJcbiAgICAgICAgaWYgKChpc0FycmF5KG9wdHMpICYmIG9wdHMuaW5jbHVkZXMoa2V5KSkgfHxcclxuICAgICAgICAgICAgKGlzT2JqZWN0KG9wdHMpICYmIGtleSBpbiBvcHRzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXAuZXh0ZW5kcyAmJiBpc0tleU9mVHlwZShDb21wLmV4dGVuZHMsIGtleSwgdHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wLm1peGlucyAmJiBDb21wLm1peGlucy5zb21lKG0gPT4gaXNLZXlPZlR5cGUobSwga2V5LCB0eXBlKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2VuUmVmRmxhZyh2KSB7XHJcbiAgICAgICAgaWYgKGlzU2hhbGxvdyh2KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYFNoYWxsb3dSZWZgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodi5lZmZlY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBDb21wdXRlZFJlZmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgUmVmYDtcclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzKSB7XHJcbiAgICAgICAgd2luZG93LmRldnRvb2xzRm9ybWF0dGVycy5wdXNoKGZvcm1hdHRlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzID0gW2Zvcm1hdHRlcl07XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gd2l0aE1lbW8obWVtbywgcmVuZGVyLCBjYWNoZSwgaW5kZXgpIHtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlW2luZGV4XTtcclxuICAgIGlmIChjYWNoZWQgJiYgaXNNZW1vU2FtZShjYWNoZWQsIG1lbW8pKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldCA9IHJlbmRlcigpO1xyXG4gICAgLy8gc2hhbGxvdyBjbG9uZVxyXG4gICAgcmV0Lm1lbW8gPSBtZW1vLnNsaWNlKCk7XHJcbiAgICByZXR1cm4gKGNhY2hlW2luZGV4XSA9IHJldCk7XHJcbn1cclxuZnVuY3Rpb24gaXNNZW1vU2FtZShjYWNoZWQsIG1lbW8pIHtcclxuICAgIGNvbnN0IHByZXYgPSBjYWNoZWQubWVtbztcclxuICAgIGlmIChwcmV2Lmxlbmd0aCAhPSBtZW1vLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKHByZXZbaV0sIG1lbW9baV0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBtYWtlIHN1cmUgdG8gbGV0IHBhcmVudCBibG9jayB0cmFjayBpdCB3aGVuIHJldHVybmluZyBjYWNoZWRcclxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmIGN1cnJlbnRCbG9jaykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKGNhY2hlZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxuXG4vLyBDb3JlIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuY29uc3QgdmVyc2lvbiA9IFwiMy4yLjM4XCI7XHJcbmNvbnN0IF9zc3JVdGlscyA9IHtcclxuICAgIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlLFxyXG4gICAgc2V0dXBDb21wb25lbnQsXHJcbiAgICByZW5kZXJDb21wb25lbnRSb290LFxyXG4gICAgc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlLFxyXG4gICAgaXNWTm9kZSxcclxuICAgIG5vcm1hbGl6ZVZOb2RlXHJcbn07XHJcbi8qKlxyXG4gKiBTU1IgdXRpbHMgZm9yIFxcQHZ1ZS9zZXJ2ZXItcmVuZGVyZXIuIE9ubHkgZXhwb3NlZCBpbiBzc3ItcG9zc2libGUgYnVpbGRzLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmNvbnN0IHNzclV0aWxzID0gKF9zc3JVdGlscyApO1xyXG4vKipcclxuICogQGludGVybmFsIG9ubHkgZXhwb3NlZCBpbiBjb21wYXQgYnVpbGRzXHJcbiAqL1xyXG5jb25zdCByZXNvbHZlRmlsdGVyID0gbnVsbDtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbCBvbmx5IGV4cG9zZWQgaW4gY29tcGF0IGJ1aWxkcy5cclxuICovXHJcbmNvbnN0IGNvbXBhdFV0aWxzID0gKG51bGwpO1xuXG5leHBvcnQgeyBCYXNlVHJhbnNpdGlvbiwgQ29tbWVudCwgRnJhZ21lbnQsIEtlZXBBbGl2ZSwgU3RhdGljLCBTdXNwZW5zZSwgVGVsZXBvcnQsIFRleHQsIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLCBjYWxsV2l0aEVycm9ySGFuZGxpbmcsIGNsb25lVk5vZGUsIGNvbXBhdFV0aWxzLCBjb21wdXRlZCwgY3JlYXRlQmxvY2ssIGNyZWF0ZUNvbW1lbnRWTm9kZSwgY3JlYXRlRWxlbWVudEJsb2NrLCBjcmVhdGVCYXNlVk5vZGUgYXMgY3JlYXRlRWxlbWVudFZOb2RlLCBjcmVhdGVIeWRyYXRpb25SZW5kZXJlciwgY3JlYXRlUHJvcHNSZXN0UHJveHksIGNyZWF0ZVJlbmRlcmVyLCBjcmVhdGVTbG90cywgY3JlYXRlU3RhdGljVk5vZGUsIGNyZWF0ZVRleHRWTm9kZSwgY3JlYXRlVk5vZGUsIGRlZmluZUFzeW5jQ29tcG9uZW50LCBkZWZpbmVDb21wb25lbnQsIGRlZmluZUVtaXRzLCBkZWZpbmVFeHBvc2UsIGRlZmluZVByb3BzLCBkZXZ0b29scywgZ2V0Q3VycmVudEluc3RhbmNlLCBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sIGd1YXJkUmVhY3RpdmVQcm9wcywgaCwgaGFuZGxlRXJyb3IsIGluaXRDdXN0b21Gb3JtYXR0ZXIsIGluamVjdCwgaXNNZW1vU2FtZSwgaXNSdW50aW1lT25seSwgaXNWTm9kZSwgbWVyZ2VEZWZhdWx0cywgbWVyZ2VQcm9wcywgbmV4dFRpY2ssIG9uQWN0aXZhdGVkLCBvbkJlZm9yZU1vdW50LCBvbkJlZm9yZVVubW91bnQsIG9uQmVmb3JlVXBkYXRlLCBvbkRlYWN0aXZhdGVkLCBvbkVycm9yQ2FwdHVyZWQsIG9uTW91bnRlZCwgb25SZW5kZXJUcmFja2VkLCBvblJlbmRlclRyaWdnZXJlZCwgb25TZXJ2ZXJQcmVmZXRjaCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgb3BlbkJsb2NrLCBwb3BTY29wZUlkLCBwcm92aWRlLCBwdXNoU2NvcGVJZCwgcXVldWVQb3N0Rmx1c2hDYiwgcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIsIHJlbmRlckxpc3QsIHJlbmRlclNsb3QsIHJlc29sdmVDb21wb25lbnQsIHJlc29sdmVEaXJlY3RpdmUsIHJlc29sdmVEeW5hbWljQ29tcG9uZW50LCByZXNvbHZlRmlsdGVyLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzLCBzZXRCbG9ja1RyYWNraW5nLCBzZXREZXZ0b29sc0hvb2ssIHNldFRyYW5zaXRpb25Ib29rcywgc3NyQ29udGV4dEtleSwgc3NyVXRpbHMsIHRvSGFuZGxlcnMsIHRyYW5zZm9ybVZOb2RlQXJncywgdXNlQXR0cnMsIHVzZVNTUkNvbnRleHQsIHVzZVNsb3RzLCB1c2VUcmFuc2l0aW9uU3RhdGUsIHZlcnNpb24sIHdhcm4sIHdhdGNoLCB3YXRjaEVmZmVjdCwgd2F0Y2hQb3N0RWZmZWN0LCB3YXRjaFN5bmNFZmZlY3QsIHdpdGhBc3luY0NvbnRleHQsIHdpdGhDdHgsIHdpdGhEZWZhdWx0cywgd2l0aERpcmVjdGl2ZXMsIHdpdGhNZW1vLCB3aXRoU2NvcGVJZCB9O1xuIiwiaW1wb3J0IHsgY2FtZWxpemUsIHdhcm4sIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBjcmVhdGVWTm9kZSwgZ2V0Q3VycmVudEluc3RhbmNlLCB3YXRjaFBvc3RFZmZlY3QsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIEZyYWdtZW50LCBTdGF0aWMsIGgsIEJhc2VUcmFuc2l0aW9uLCB1c2VUcmFuc2l0aW9uU3RhdGUsIG9uVXBkYXRlZCwgdG9SYXcsIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiwgc2V0VHJhbnNpdGlvbkhvb2tzLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzLCBjcmVhdGVSZW5kZXJlciwgaXNSdW50aW1lT25seSwgY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIgfSBmcm9tICdAdnVlL3J1bnRpbWUtY29yZSc7XG5leHBvcnQgKiBmcm9tICdAdnVlL3J1bnRpbWUtY29yZSc7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNBcnJheSwgaHlwaGVuYXRlLCBjYXBpdGFsaXplLCBpc1NwZWNpYWxCb29sZWFuQXR0ciwgaW5jbHVkZUJvb2xlYW5BdHRyLCBpc09uLCBpc01vZGVsTGlzdGVuZXIsIGlzRnVuY3Rpb24sIHRvTnVtYmVyLCBjYW1lbGl6ZSBhcyBjYW1lbGl6ZSQxLCBleHRlbmQsIEVNUFRZX09CSiwgaXNPYmplY3QsIGludm9rZUFycmF5Rm5zLCBsb29zZUluZGV4T2YsIGlzU2V0LCBsb29zZUVxdWFsLCBpc0hUTUxUYWcsIGlzU1ZHVGFnIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBzdmdOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XHJcbmNvbnN0IGRvYyA9ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiBudWxsKTtcclxuY29uc3QgdGVtcGxhdGVDb250YWluZXIgPSBkb2MgJiYgLyojX19QVVJFX18qLyBkb2MuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcclxuY29uc3Qgbm9kZU9wcyA9IHtcclxuICAgIGluc2VydDogKGNoaWxkLCBwYXJlbnQsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIGFuY2hvciB8fCBudWxsKTtcclxuICAgIH0sXHJcbiAgICByZW1vdmU6IGNoaWxkID0+IHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBjaGlsZC5wYXJlbnROb2RlO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlRWxlbWVudDogKHRhZywgaXNTVkcsIGlzLCBwcm9wcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gaXNTVkdcclxuICAgICAgICAgICAgPyBkb2MuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCB0YWcpXHJcbiAgICAgICAgICAgIDogZG9jLmNyZWF0ZUVsZW1lbnQodGFnLCBpcyA/IHsgaXMgfSA6IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcgJiYgcHJvcHMgJiYgcHJvcHMubXVsdGlwbGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgcHJvcHMubXVsdGlwbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWw7XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlVGV4dDogdGV4dCA9PiBkb2MuY3JlYXRlVGV4dE5vZGUodGV4dCksXHJcbiAgICBjcmVhdGVDb21tZW50OiB0ZXh0ID0+IGRvYy5jcmVhdGVDb21tZW50KHRleHQpLFxyXG4gICAgc2V0VGV4dDogKG5vZGUsIHRleHQpID0+IHtcclxuICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IHRleHQ7XHJcbiAgICB9LFxyXG4gICAgc2V0RWxlbWVudFRleHQ6IChlbCwgdGV4dCkgPT4ge1xyXG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdGV4dDtcclxuICAgIH0sXHJcbiAgICBwYXJlbnROb2RlOiBub2RlID0+IG5vZGUucGFyZW50Tm9kZSxcclxuICAgIG5leHRTaWJsaW5nOiBub2RlID0+IG5vZGUubmV4dFNpYmxpbmcsXHJcbiAgICBxdWVyeVNlbGVjdG9yOiBzZWxlY3RvciA9PiBkb2MucXVlcnlTZWxlY3RvcihzZWxlY3RvciksXHJcbiAgICBzZXRTY29wZUlkKGVsLCBpZCkge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZShpZCwgJycpO1xyXG4gICAgfSxcclxuICAgIGNsb25lTm9kZShlbCkge1xyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IGVsLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICAvLyAjMzA3MlxyXG4gICAgICAgIC8vIC0gaW4gYHBhdGNoRE9NUHJvcGAsIHdlIHN0b3JlIHRoZSBhY3R1YWwgdmFsdWUgaW4gdGhlIGBlbC5fdmFsdWVgIHByb3BlcnR5LlxyXG4gICAgICAgIC8vIC0gbm9ybWFsbHksIGVsZW1lbnRzIHVzaW5nIGA6dmFsdWVgIGJpbmRpbmdzIHdpbGwgbm90IGJlIGhvaXN0ZWQsIGJ1dCBpZlxyXG4gICAgICAgIC8vICAgdGhlIGJvdW5kIHZhbHVlIGlzIGEgY29uc3RhbnQsIGUuZy4gYDp2YWx1ZT1cInRydWVcImAgLSB0aGV5IGRvIGdldFxyXG4gICAgICAgIC8vICAgaG9pc3RlZC5cclxuICAgICAgICAvLyAtIGluIHByb2R1Y3Rpb24sIGhvaXN0ZWQgbm9kZXMgYXJlIGNsb25lZCB3aGVuIHN1YnNlcXVlbnQgaW5zZXJ0cywgYnV0XHJcbiAgICAgICAgLy8gICBjbG9uZU5vZGUoKSBkb2VzIG5vdCBjb3B5IHRoZSBjdXN0b20gcHJvcGVydHkgd2UgYXR0YWNoZWQuXHJcbiAgICAgICAgLy8gLSBUaGlzIG1heSBuZWVkIHRvIGFjY291bnQgZm9yIG90aGVyIGN1c3RvbSBET00gcHJvcGVydGllcyB3ZSBhdHRhY2ggdG9cclxuICAgICAgICAvLyAgIGVsZW1lbnRzIGluIGFkZGl0aW9uIHRvIGBfdmFsdWVgIGluIHRoZSBmdXR1cmUuXHJcbiAgICAgICAgaWYgKGBfdmFsdWVgIGluIGVsKSB7XHJcbiAgICAgICAgICAgIGNsb25lZC5fdmFsdWUgPSBlbC5fdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgICB9LFxyXG4gICAgLy8gX19VTlNBRkVfX1xyXG4gICAgLy8gUmVhc29uOiBpbm5lckhUTUwuXHJcbiAgICAvLyBTdGF0aWMgY29udGVudCBoZXJlIGNhbiBvbmx5IGNvbWUgZnJvbSBjb21waWxlZCB0ZW1wbGF0ZXMuXHJcbiAgICAvLyBBcyBsb25nIGFzIHRoZSB1c2VyIG9ubHkgdXNlcyB0cnVzdGVkIHRlbXBsYXRlcywgdGhpcyBpcyBzYWZlLlxyXG4gICAgaW5zZXJ0U3RhdGljQ29udGVudChjb250ZW50LCBwYXJlbnQsIGFuY2hvciwgaXNTVkcsIHN0YXJ0LCBlbmQpIHtcclxuICAgICAgICAvLyA8cGFyZW50PiBiZWZvcmUgfCBmaXJzdCAuLi4gbGFzdCB8IGFuY2hvciA8L3BhcmVudD5cclxuICAgICAgICBjb25zdCBiZWZvcmUgPSBhbmNob3IgPyBhbmNob3IucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcclxuICAgICAgICAvLyAjNTMwOCBjYW4gb25seSB0YWtlIGNhY2hlZCBwYXRoIGlmOlxyXG4gICAgICAgIC8vIC0gaGFzIGEgc2luZ2xlIHJvb3Qgbm9kZVxyXG4gICAgICAgIC8vIC0gbmV4dFNpYmxpbmcgaW5mbyBpcyBzdGlsbCBhdmFpbGFibGVcclxuICAgICAgICBpZiAoc3RhcnQgJiYgKHN0YXJ0ID09PSBlbmQgfHwgc3RhcnQubmV4dFNpYmxpbmcpKSB7XHJcbiAgICAgICAgICAgIC8vIGNhY2hlZFxyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzdGFydC5jbG9uZU5vZGUodHJ1ZSksIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCB8fCAhKHN0YXJ0ID0gc3RhcnQubmV4dFNpYmxpbmcpKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmcmVzaCBpbnNlcnRcclxuICAgICAgICAgICAgdGVtcGxhdGVDb250YWluZXIuaW5uZXJIVE1MID0gaXNTVkcgPyBgPHN2Zz4ke2NvbnRlbnR9PC9zdmc+YCA6IGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVDb250YWluZXIuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgb3V0ZXIgc3ZnIHdyYXBwZXJcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0ZW1wbGF0ZS5maXJzdENoaWxkO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHdyYXBwZXIuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZENoaWxkKHdyYXBwZXIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5yZW1vdmVDaGlsZCh3cmFwcGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRlbXBsYXRlLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAvLyBmaXJzdFxyXG4gICAgICAgICAgICBiZWZvcmUgPyBiZWZvcmUubmV4dFNpYmxpbmcgOiBwYXJlbnQuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgLy8gbGFzdFxyXG4gICAgICAgICAgICBhbmNob3IgPyBhbmNob3IucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcbn07XG5cbi8vIGNvbXBpbGVyIHNob3VsZCBub3JtYWxpemUgY2xhc3MgKyA6Y2xhc3MgYmluZGluZ3Mgb24gdGhlIHNhbWUgZWxlbWVudFxyXG4vLyBpbnRvIGEgc2luZ2xlIGJpbmRpbmcgWydzdGF0aWNDbGFzcycsIGR5bmFtaWNdXHJcbmZ1bmN0aW9uIHBhdGNoQ2xhc3MoZWwsIHZhbHVlLCBpc1NWRykge1xyXG4gICAgLy8gZGlyZWN0bHkgc2V0dGluZyBjbGFzc05hbWUgc2hvdWxkIGJlIGZhc3RlciB0aGFuIHNldEF0dHJpYnV0ZSBpbiB0aGVvcnlcclxuICAgIC8vIGlmIHRoaXMgaXMgYW4gZWxlbWVudCBkdXJpbmcgYSB0cmFuc2l0aW9uLCB0YWtlIHRoZSB0ZW1wb3JhcnkgdHJhbnNpdGlvblxyXG4gICAgLy8gY2xhc3NlcyBpbnRvIGFjY291bnQuXHJcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9IGVsLl92dGM7XHJcbiAgICBpZiAodHJhbnNpdGlvbkNsYXNzZXMpIHtcclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA/IFt2YWx1ZSwgLi4udHJhbnNpdGlvbkNsYXNzZXNdIDogWy4uLnRyYW5zaXRpb25DbGFzc2VzXSkuam9pbignICcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NWRykge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlbC5jbGFzc05hbWUgPSB2YWx1ZTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiBwYXRjaFN0eWxlKGVsLCBwcmV2LCBuZXh0KSB7XHJcbiAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgY29uc3QgaXNDc3NTdHJpbmcgPSBpc1N0cmluZyhuZXh0KTtcclxuICAgIGlmIChuZXh0ICYmICFpc0Nzc1N0cmluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5leHQpIHtcclxuICAgICAgICAgICAgc2V0U3R5bGUoc3R5bGUsIGtleSwgbmV4dFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByZXYgJiYgIWlzU3RyaW5nKHByZXYpKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByZXYpIHtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0W2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFN0eWxlKHN0eWxlLCBrZXksICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXNwbGF5ID0gc3R5bGUuZGlzcGxheTtcclxuICAgICAgICBpZiAoaXNDc3NTdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHByZXYgIT09IG5leHQpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlLmNzc1RleHQgPSBuZXh0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHByZXYpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGUgYGRpc3BsYXlgIG9mIHRoZSBlbGVtZW50IGlzIGNvbnRyb2xsZWQgYnkgYHYtc2hvd2AsXHJcbiAgICAgICAgLy8gc28gd2UgYWx3YXlzIGtlZXAgdGhlIGN1cnJlbnQgYGRpc3BsYXlgIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIGBzdHlsZWBcclxuICAgICAgICAvLyB2YWx1ZSwgdGh1cyBoYW5kaW5nIG92ZXIgY29udHJvbCB0byBgdi1zaG93YC5cclxuICAgICAgICBpZiAoJ192b2QnIGluIGVsKSB7XHJcbiAgICAgICAgICAgIHN0eWxlLmRpc3BsYXkgPSBjdXJyZW50RGlzcGxheTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3QgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcclxuZnVuY3Rpb24gc2V0U3R5bGUoc3R5bGUsIG5hbWUsIHZhbCkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsKSkge1xyXG4gICAgICAgIHZhbC5mb3JFYWNoKHYgPT4gc2V0U3R5bGUoc3R5bGUsIG5hbWUsIHYpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbClcclxuICAgICAgICAgICAgdmFsID0gJyc7XHJcbiAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnLS0nKSkge1xyXG4gICAgICAgICAgICAvLyBjdXN0b20gcHJvcGVydHkgZGVmaW5pdGlvblxyXG4gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcHJlZml4ZWQgPSBhdXRvUHJlZml4KHN0eWxlLCBuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGltcG9ydGFudFJFLnRlc3QodmFsKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gIWltcG9ydGFudFxyXG4gICAgICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoaHlwaGVuYXRlKHByZWZpeGVkKSwgdmFsLnJlcGxhY2UoaW1wb3J0YW50UkUsICcnKSwgJ2ltcG9ydGFudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3R5bGVbcHJlZml4ZWRdID0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IHByZWZpeGVzID0gWydXZWJraXQnLCAnTW96JywgJ21zJ107XHJcbmNvbnN0IHByZWZpeENhY2hlID0ge307XHJcbmZ1bmN0aW9uIGF1dG9QcmVmaXgoc3R5bGUsIHJhd05hbWUpIHtcclxuICAgIGNvbnN0IGNhY2hlZCA9IHByZWZpeENhY2hlW3Jhd05hbWVdO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IGNhbWVsaXplKHJhd05hbWUpO1xyXG4gICAgaWYgKG5hbWUgIT09ICdmaWx0ZXInICYmIG5hbWUgaW4gc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gKHByZWZpeENhY2hlW3Jhd05hbWVdID0gbmFtZSk7XHJcbiAgICB9XHJcbiAgICBuYW1lID0gY2FwaXRhbGl6ZShuYW1lKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwcmVmaXhlZCA9IHByZWZpeGVzW2ldICsgbmFtZTtcclxuICAgICAgICBpZiAocHJlZml4ZWQgaW4gc3R5bGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChwcmVmaXhDYWNoZVtyYXdOYW1lXSA9IHByZWZpeGVkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmF3TmFtZTtcclxufVxuXG5jb25zdCB4bGlua05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xyXG5mdW5jdGlvbiBwYXRjaEF0dHIoZWwsIGtleSwgdmFsdWUsIGlzU1ZHLCBpbnN0YW5jZSkge1xyXG4gICAgaWYgKGlzU1ZHICYmIGtleS5zdGFydHNXaXRoKCd4bGluazonKSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleS5zbGljZSg2LCBrZXkubGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXksIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBub3RlIHdlIGFyZSBvbmx5IGNoZWNraW5nIGJvb2xlYW4gYXR0cmlidXRlcyB0aGF0IGRvbid0IGhhdmUgYVxyXG4gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgZG9tIHByb3Agb2YgdGhlIHNhbWUgbmFtZSBoZXJlLlxyXG4gICAgICAgIGNvbnN0IGlzQm9vbGVhbiA9IGlzU3BlY2lhbEJvb2xlYW5BdHRyKGtleSk7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgKGlzQm9vbGVhbiAmJiAhaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKSkpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBpc0Jvb2xlYW4gPyAnJyA6IHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuLy8gX19VTlNBRkVfX1xyXG4vLyBmdW5jdGlvbnMuIFRoZSB1c2VyIGlzIHJlc3BvbnNpYmxlIGZvciB1c2luZyB0aGVtIHdpdGggb25seSB0cnVzdGVkIGNvbnRlbnQuXHJcbmZ1bmN0aW9uIHBhdGNoRE9NUHJvcChlbCwga2V5LCB2YWx1ZSwgXHJcbi8vIHRoZSBmb2xsb3dpbmcgYXJncyBhcmUgcGFzc2VkIG9ubHkgZHVlIHRvIHBvdGVudGlhbCBpbm5lckhUTUwvdGV4dENvbnRlbnRcclxuLy8gb3ZlcnJpZGluZyBleGlzdGluZyBWTm9kZXMsIGluIHdoaWNoIGNhc2UgdGhlIG9sZCB0cmVlIG11c3QgYmUgcHJvcGVybHlcclxuLy8gdW5tb3VudGVkLlxyXG5wcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbikge1xyXG4gICAgaWYgKGtleSA9PT0gJ2lubmVySFRNTCcgfHwga2V5ID09PSAndGV4dENvbnRlbnQnKSB7XHJcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbikge1xyXG4gICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxba2V5XSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChrZXkgPT09ICd2YWx1ZScgJiZcclxuICAgICAgICBlbC50YWdOYW1lICE9PSAnUFJPR1JFU1MnICYmXHJcbiAgICAgICAgLy8gY3VzdG9tIGVsZW1lbnRzIG1heSB1c2UgX3ZhbHVlIGludGVybmFsbHlcclxuICAgICAgICAhZWwudGFnTmFtZS5pbmNsdWRlcygnLScpKSB7XHJcbiAgICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcclxuICAgICAgICAvLyBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkLlxyXG4gICAgICAgIGVsLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKGVsLnZhbHVlICE9PSBuZXdWYWx1ZSB8fFxyXG4gICAgICAgICAgICAvLyAjNDk1NjogYWx3YXlzIHNldCBmb3IgT1BUSU9OIGVsZW1lbnRzIGJlY2F1c2UgaXRzIHZhbHVlIGZhbGxzIGJhY2sgdG9cclxuICAgICAgICAgICAgLy8gdGV4dENvbnRlbnQgaWYgbm8gdmFsdWUgYXR0cmlidXRlIGlzIHByZXNlbnQuIEFuZCBzZXR0aW5nIC52YWx1ZSBmb3JcclxuICAgICAgICAgICAgLy8gT1BUSU9OIGhhcyBubyBzaWRlIGVmZmVjdFxyXG4gICAgICAgICAgICBlbC50YWdOYW1lID09PSAnT1BUSU9OJykge1xyXG4gICAgICAgICAgICBlbC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5lZWRSZW1vdmUgPSBmYWxzZTtcclxuICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgZWxba2V5XTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPHNlbGVjdCBtdWx0aXBsZT4gY29tcGlsZXMgdG8geyBtdWx0aXBsZTogJycgfVxyXG4gICAgICAgICAgICB2YWx1ZSA9IGluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlID09IG51bGwgJiYgdHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8ZGl2IDppZD1cIm51bGxcIj5cclxuICAgICAgICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgICAgICAgbmVlZFJlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPGltZyA6d2lkdGg9XCJudWxsXCI+XHJcbiAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBvZiBzb21lIElETCBhdHRyIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAsIGUuZy4gaW5wdXQuc2l6ZSA9IDAgLT4gZXJyb3JcclxuICAgICAgICAgICAgdmFsdWUgPSAwO1xyXG4gICAgICAgICAgICBuZWVkUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzb21lIHByb3BlcnRpZXMgcGVyZm9ybSB2YWx1ZSB2YWxpZGF0aW9uIGFuZCB0aHJvdyxcclxuICAgIC8vIHNvbWUgcHJvcGVydGllcyBoYXMgZ2V0dGVyLCBubyBzZXR0ZXIsIHdpbGwgZXJyb3IgaW4gJ3VzZSBzdHJpY3QnXHJcbiAgICAvLyBlZy4gPHNlbGVjdCA6dHlwZT1cIm51bGxcIj48L3NlbGVjdD4gPHNlbGVjdCA6d2lsbFZhbGlkYXRlPVwibnVsbFwiPjwvc2VsZWN0PlxyXG4gICAgdHJ5IHtcclxuICAgICAgICBlbFtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHNldHRpbmcgcHJvcCBcIiR7a2V5fVwiIG9uIDwke2VsLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0+OiBgICtcclxuICAgICAgICAgICAgICAgIGB2YWx1ZSAke3ZhbHVlfSBpcyBpbnZhbGlkLmAsIGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5lZWRSZW1vdmUgJiYgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbn1cblxuLy8gQXN5bmMgZWRnZSBjYXNlIGZpeCByZXF1aXJlcyBzdG9yaW5nIGFuIGV2ZW50IGxpc3RlbmVyJ3MgYXR0YWNoIHRpbWVzdGFtcC5cclxuY29uc3QgW19nZXROb3csIHNraXBUaW1lc3RhbXBDaGVja10gPSAvKiNfX1BVUkVfXyovICgoKSA9PiB7XHJcbiAgICBsZXQgX2dldE5vdyA9IERhdGUubm93O1xyXG4gICAgbGV0IHNraXBUaW1lc3RhbXBDaGVjayA9IGZhbHNlO1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgZXZlbnQgdGltZXN0YW1wIHRoZSBicm93c2VyIGlzIHVzaW5nLiBBbm5veWluZ2x5LCB0aGVcclxuICAgICAgICAvLyB0aW1lc3RhbXAgY2FuIGVpdGhlciBiZSBoaS1yZXMgKHJlbGF0aXZlIHRvIHBhZ2UgbG9hZCkgb3IgbG93LXJlc1xyXG4gICAgICAgIC8vIChyZWxhdGl2ZSB0byBVTklYIGVwb2NoKSwgc28gaW4gb3JkZXIgdG8gY29tcGFyZSB0aW1lIHdlIGhhdmUgdG8gdXNlIHRoZVxyXG4gICAgICAgIC8vIHNhbWUgdGltZXN0YW1wIHR5cGUgd2hlbiBzYXZpbmcgdGhlIGZsdXNoIHRpbWVzdGFtcC5cclxuICAgICAgICBpZiAoRGF0ZS5ub3coKSA+IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLnRpbWVTdGFtcCkge1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgbG93LXJlcyB0aW1lc3RhbXAgd2hpY2ggaXMgYmlnZ2VyIHRoYW4gdGhlIGV2ZW50IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAvLyAod2hpY2ggaXMgZXZhbHVhdGVkIEFGVEVSKSBpdCBtZWFucyB0aGUgZXZlbnQgaXMgdXNpbmcgYSBoaS1yZXMgdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAvLyBhbmQgd2UgbmVlZCB0byB1c2UgdGhlIGhpLXJlcyB2ZXJzaW9uIGZvciBldmVudCBsaXN0ZW5lcnMgYXMgd2VsbC5cclxuICAgICAgICAgICAgX2dldE5vdyA9IHBlcmZvcm1hbmNlLm5vdy5iaW5kKHBlcmZvcm1hbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gIzM0ODU6IEZpcmVmb3ggPD0gNTMgaGFzIGluY29ycmVjdCBFdmVudC50aW1lU3RhbXAgaW1wbGVtZW50YXRpb25cclxuICAgICAgICAvLyBhbmQgZG9lcyBub3QgZmlyZSBtaWNyb3Rhc2tzIGluIGJldHdlZW4gZXZlbnQgcHJvcGFnYXRpb24sIHNvIHNhZmUgdG8gZXhjbHVkZS5cclxuICAgICAgICBjb25zdCBmZk1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS9pKTtcclxuICAgICAgICBza2lwVGltZXN0YW1wQ2hlY2sgPSAhIShmZk1hdGNoICYmIE51bWJlcihmZk1hdGNoWzFdKSA8PSA1Myk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW19nZXROb3csIHNraXBUaW1lc3RhbXBDaGVja107XHJcbn0pKCk7XHJcbi8vIFRvIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiByZXBlYXRlZGx5IGNhbGxpbmcgcGVyZm9ybWFuY2Uubm93KCksIHdlIGNhY2hlXHJcbi8vIGFuZCB1c2UgdGhlIHNhbWUgdGltZXN0YW1wIGZvciBhbGwgZXZlbnQgbGlzdGVuZXJzIGF0dGFjaGVkIGluIHRoZSBzYW1lIHRpY2suXHJcbmxldCBjYWNoZWROb3cgPSAwO1xyXG5jb25zdCBwID0gLyojX19QVVJFX18qLyBQcm9taXNlLnJlc29sdmUoKTtcclxuY29uc3QgcmVzZXQgPSAoKSA9PiB7XHJcbiAgICBjYWNoZWROb3cgPSAwO1xyXG59O1xyXG5jb25zdCBnZXROb3cgPSAoKSA9PiBjYWNoZWROb3cgfHwgKHAudGhlbihyZXNldCksIChjYWNoZWROb3cgPSBfZ2V0Tm93KCkpKTtcclxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcclxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWwsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XHJcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiBwYXRjaEV2ZW50KGVsLCByYXdOYW1lLCBwcmV2VmFsdWUsIG5leHRWYWx1ZSwgaW5zdGFuY2UgPSBudWxsKSB7XHJcbiAgICAvLyB2ZWkgPSB2dWUgZXZlbnQgaW52b2tlcnNcclxuICAgIGNvbnN0IGludm9rZXJzID0gZWwuX3ZlaSB8fCAoZWwuX3ZlaSA9IHt9KTtcclxuICAgIGNvbnN0IGV4aXN0aW5nSW52b2tlciA9IGludm9rZXJzW3Jhd05hbWVdO1xyXG4gICAgaWYgKG5leHRWYWx1ZSAmJiBleGlzdGluZ0ludm9rZXIpIHtcclxuICAgICAgICAvLyBwYXRjaFxyXG4gICAgICAgIGV4aXN0aW5nSW52b2tlci52YWx1ZSA9IG5leHRWYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IFtuYW1lLCBvcHRpb25zXSA9IHBhcnNlTmFtZShyYXdOYW1lKTtcclxuICAgICAgICBpZiAobmV4dFZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZFxyXG4gICAgICAgICAgICBjb25zdCBpbnZva2VyID0gKGludm9rZXJzW3Jhd05hbWVdID0gY3JlYXRlSW52b2tlcihuZXh0VmFsdWUsIGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIG5hbWUsIGludm9rZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChleGlzdGluZ0ludm9rZXIpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlXHJcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWwsIG5hbWUsIGV4aXN0aW5nSW52b2tlciwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGludm9rZXJzW3Jhd05hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBvcHRpb25zTW9kaWZpZXJSRSA9IC8oPzpPbmNlfFBhc3NpdmV8Q2FwdHVyZSkkLztcclxuZnVuY3Rpb24gcGFyc2VOYW1lKG5hbWUpIHtcclxuICAgIGxldCBvcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnNNb2RpZmllclJFLnRlc3QobmFtZSkpIHtcclxuICAgICAgICBvcHRpb25zID0ge307XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gbmFtZS5tYXRjaChvcHRpb25zTW9kaWZpZXJSRSkpKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIG5hbWUubGVuZ3RoIC0gbVswXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICBvcHRpb25zW21bMF0udG9Mb3dlckNhc2UoKV0gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0gbmFtZVsyXSA9PT0gJzonID8gbmFtZS5zbGljZSgzKSA6IGh5cGhlbmF0ZShuYW1lLnNsaWNlKDIpKTtcclxuICAgIHJldHVybiBbZXZlbnQsIG9wdGlvbnNdO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUludm9rZXIoaW5pdGlhbFZhbHVlLCBpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgaW52b2tlciA9IChlKSA9PiB7XHJcbiAgICAgICAgLy8gYXN5bmMgZWRnZSBjYXNlICM2NTY2OiBpbm5lciBjbGljayBldmVudCB0cmlnZ2VycyBwYXRjaCwgZXZlbnQgaGFuZGxlclxyXG4gICAgICAgIC8vIGF0dGFjaGVkIHRvIG91dGVyIGVsZW1lbnQgZHVyaW5nIHBhdGNoLCBhbmQgdHJpZ2dlcmVkIGFnYWluLiBUaGlzXHJcbiAgICAgICAgLy8gaGFwcGVucyBiZWNhdXNlIGJyb3dzZXJzIGZpcmUgbWljcm90YXNrIHRpY2tzIGJldHdlZW4gZXZlbnQgcHJvcGFnYXRpb24uXHJcbiAgICAgICAgLy8gdGhlIHNvbHV0aW9uIGlzIHNpbXBsZTogd2Ugc2F2ZSB0aGUgdGltZXN0YW1wIHdoZW4gYSBoYW5kbGVyIGlzIGF0dGFjaGVkLFxyXG4gICAgICAgIC8vIGFuZCB0aGUgaGFuZGxlciB3b3VsZCBvbmx5IGZpcmUgaWYgdGhlIGV2ZW50IHBhc3NlZCB0byBpdCB3YXMgZmlyZWRcclxuICAgICAgICAvLyBBRlRFUiBpdCB3YXMgYXR0YWNoZWQuXHJcbiAgICAgICAgY29uc3QgdGltZVN0YW1wID0gZS50aW1lU3RhbXAgfHwgX2dldE5vdygpO1xyXG4gICAgICAgIGlmIChza2lwVGltZXN0YW1wQ2hlY2sgfHwgdGltZVN0YW1wID49IGludm9rZXIuYXR0YWNoZWQgLSAxKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKHBhdGNoU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGUsIGludm9rZXIudmFsdWUpLCBpbnN0YW5jZSwgNSAvKiBFcnJvckNvZGVzLk5BVElWRV9FVkVOVF9IQU5ETEVSICovLCBbZV0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBpbnZva2VyLnZhbHVlID0gaW5pdGlhbFZhbHVlO1xyXG4gICAgaW52b2tlci5hdHRhY2hlZCA9IGdldE5vdygpO1xyXG4gICAgcmV0dXJuIGludm9rZXI7XHJcbn1cclxuZnVuY3Rpb24gcGF0Y2hTdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oZSwgdmFsdWUpIHtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RvcCA9IGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO1xyXG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFN0b3AuY2FsbChlKTtcclxuICAgICAgICAgICAgZS5fc3RvcHBlZCA9IHRydWU7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdmFsdWUubWFwKGZuID0+IChlKSA9PiAhZS5fc3RvcHBlZCAmJiBmbiAmJiBmbihlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgbmF0aXZlT25SRSA9IC9eb25bYS16XS87XHJcbmNvbnN0IHBhdGNoUHJvcCA9IChlbCwga2V5LCBwcmV2VmFsdWUsIG5leHRWYWx1ZSwgaXNTVkcgPSBmYWxzZSwgcHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pID0+IHtcclxuICAgIGlmIChrZXkgPT09ICdjbGFzcycpIHtcclxuICAgICAgICBwYXRjaENsYXNzKGVsLCBuZXh0VmFsdWUsIGlzU1ZHKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgIHBhdGNoU3R5bGUoZWwsIHByZXZWYWx1ZSwgbmV4dFZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT24oa2V5KSkge1xyXG4gICAgICAgIC8vIGlnbm9yZSB2LW1vZGVsIGxpc3RlbmVyc1xyXG4gICAgICAgIGlmICghaXNNb2RlbExpc3RlbmVyKGtleSkpIHtcclxuICAgICAgICAgICAgcGF0Y2hFdmVudChlbCwga2V5LCBwcmV2VmFsdWUsIG5leHRWYWx1ZSwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChrZXlbMF0gPT09ICcuJ1xyXG4gICAgICAgID8gKChrZXkgPSBrZXkuc2xpY2UoMSkpLCB0cnVlKVxyXG4gICAgICAgIDoga2V5WzBdID09PSAnXidcclxuICAgICAgICAgICAgPyAoKGtleSA9IGtleS5zbGljZSgxKSksIGZhbHNlKVxyXG4gICAgICAgICAgICA6IHNob3VsZFNldEFzUHJvcChlbCwga2V5LCBuZXh0VmFsdWUsIGlzU1ZHKSkge1xyXG4gICAgICAgIHBhdGNoRE9NUHJvcChlbCwga2V5LCBuZXh0VmFsdWUsIHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgPGlucHV0IHYtbW9kZWwgdHlwZT1cImNoZWNrYm94XCI+IHdpdGhcclxuICAgICAgICAvLyA6dHJ1ZS12YWx1ZSAmIDpmYWxzZS12YWx1ZVxyXG4gICAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIGRvbSBwcm9wZXJ0aWVzIHNpbmNlIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmVcclxuICAgICAgICAvLyBzdHJpbmdpZmllZC5cclxuICAgICAgICBpZiAoa2V5ID09PSAndHJ1ZS12YWx1ZScpIHtcclxuICAgICAgICAgICAgZWwuX3RydWVWYWx1ZSA9IG5leHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnZmFsc2UtdmFsdWUnKSB7XHJcbiAgICAgICAgICAgIGVsLl9mYWxzZVZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXRjaEF0dHIoZWwsIGtleSwgbmV4dFZhbHVlLCBpc1NWRyk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNob3VsZFNldEFzUHJvcChlbCwga2V5LCB2YWx1ZSwgaXNTVkcpIHtcclxuICAgIGlmIChpc1NWRykge1xyXG4gICAgICAgIC8vIG1vc3Qga2V5cyBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGUgb24gc3ZnIGVsZW1lbnRzIHRvIHdvcmtcclxuICAgICAgICAvLyAuLi5leGNlcHQgaW5uZXJIVE1MICYgdGV4dENvbnRlbnRcclxuICAgICAgICBpZiAoa2V5ID09PSAnaW5uZXJIVE1MJyB8fCBrZXkgPT09ICd0ZXh0Q29udGVudCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIG9yIG5hdGl2ZSBvbmNsaWNrIHdpdGggZnVuY3Rpb24gdmFsdWVzXHJcbiAgICAgICAgaWYgKGtleSBpbiBlbCAmJiBuYXRpdmVPblJFLnRlc3Qoa2V5KSAmJiBpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gdGhlc2UgYXJlIGVudW1lcmF0ZWQgYXR0cnMsIGhvd2V2ZXIgdGhlaXIgY29ycmVzcG9uZGluZyBET00gcHJvcGVydGllc1xyXG4gICAgLy8gYXJlIGFjdHVhbGx5IGJvb2xlYW5zIC0gdGhpcyBsZWFkcyB0byBzZXR0aW5nIGl0IHdpdGggYSBzdHJpbmcgXCJmYWxzZVwiXHJcbiAgICAvLyB2YWx1ZSBsZWFkaW5nIGl0IHRvIGJlIGNvZXJjZWQgdG8gYHRydWVgLCBzbyB3ZSBuZWVkIHRvIGFsd2F5cyB0cmVhdFxyXG4gICAgLy8gdGhlbSBhcyBhdHRyaWJ1dGVzLlxyXG4gICAgLy8gTm90ZSB0aGF0IGBjb250ZW50RWRpdGFibGVgIGRvZXNuJ3QgaGF2ZSB0aGlzIHByb2JsZW06IGl0cyBET01cclxuICAgIC8vIHByb3BlcnR5IGlzIGFsc28gZW51bWVyYXRlZCBzdHJpbmcgdmFsdWVzLlxyXG4gICAgaWYgKGtleSA9PT0gJ3NwZWxsY2hlY2snIHx8IGtleSA9PT0gJ2RyYWdnYWJsZScgfHwga2V5ID09PSAndHJhbnNsYXRlJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMxNzg3LCAjMjg0MCBmb3JtIHByb3BlcnR5IG9uIGZvcm0gZWxlbWVudHMgaXMgcmVhZG9ubHkgYW5kIG11c3QgYmUgc2V0IGFzXHJcbiAgICAvLyBhdHRyaWJ1dGUuXHJcbiAgICBpZiAoa2V5ID09PSAnZm9ybScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMTUyNiA8aW5wdXQgbGlzdD4gbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAoa2V5ID09PSAnbGlzdCcgJiYgZWwudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMyNzY2IDx0ZXh0YXJlYSB0eXBlPiBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChrZXkgPT09ICd0eXBlJyAmJiBlbC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gbmF0aXZlIG9uY2xpY2sgd2l0aCBzdHJpbmcgdmFsdWUsIG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKG5hdGl2ZU9uUkUudGVzdChrZXkpICYmIGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXkgaW4gZWw7XHJcbn1cblxuZnVuY3Rpb24gZGVmaW5lQ3VzdG9tRWxlbWVudChvcHRpb25zLCBoeWRyYXRlKSB7XHJcbiAgICBjb25zdCBDb21wID0gZGVmaW5lQ29tcG9uZW50KG9wdGlvbnMpO1xyXG4gICAgY2xhc3MgVnVlQ3VzdG9tRWxlbWVudCBleHRlbmRzIFZ1ZUVsZW1lbnQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGluaXRpYWxQcm9wcykge1xyXG4gICAgICAgICAgICBzdXBlcihDb21wLCBpbml0aWFsUHJvcHMsIGh5ZHJhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFZ1ZUN1c3RvbUVsZW1lbnQuZGVmID0gQ29tcDtcclxuICAgIHJldHVybiBWdWVDdXN0b21FbGVtZW50O1xyXG59XHJcbmNvbnN0IGRlZmluZVNTUkN1c3RvbUVsZW1lbnQgPSAoKG9wdGlvbnMpID0+IHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBkZWZpbmVDdXN0b21FbGVtZW50KG9wdGlvbnMsIGh5ZHJhdGUpO1xyXG59KTtcclxuY29uc3QgQmFzZUNsYXNzID0gKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBIVE1MRWxlbWVudCA6IGNsYXNzIHtcclxufSk7XHJcbmNsYXNzIFZ1ZUVsZW1lbnQgZXh0ZW5kcyBCYXNlQ2xhc3Mge1xyXG4gICAgY29uc3RydWN0b3IoX2RlZiwgX3Byb3BzID0ge30sIGh5ZHJhdGUpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX2RlZiA9IF9kZWY7XHJcbiAgICAgICAgdGhpcy5fcHJvcHMgPSBfcHJvcHM7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQGludGVybmFsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fbnVtYmVyUHJvcHMgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLnNoYWRvd1Jvb3QgJiYgaHlkcmF0ZSkge1xyXG4gICAgICAgICAgICBoeWRyYXRlKHRoaXMuX2NyZWF0ZVZOb2RlKCksIHRoaXMuc2hhZG93Um9vdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRoaXMuc2hhZG93Um9vdCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgQ3VzdG9tIGVsZW1lbnQgaGFzIHByZS1yZW5kZXJlZCBkZWNsYXJhdGl2ZSBzaGFkb3cgcm9vdCBidXQgaXMgbm90IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBkZWZpbmVkIGFzIGh5ZHJhdGFibGUuIFVzZSBcXGBkZWZpbmVTU1JDdXN0b21FbGVtZW50XFxgLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbm5lY3RlZENhbGxiYWNrKCkge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNvbHZlRGVmKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgbmV4dFRpY2soKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgcmVuZGVyKG51bGwsIHRoaXMuc2hhZG93Um9vdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogcmVzb2x2ZSBpbm5lciBjb21wb25lbnQgZGVmaW5pdGlvbiAoaGFuZGxlIHBvc3NpYmxlIGFzeW5jIGNvbXBvbmVudClcclxuICAgICAqL1xyXG4gICAgX3Jlc29sdmVEZWYoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jlc29sdmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHNldCBpbml0aWFsIGF0dHJzXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0QXR0cih0aGlzLmF0dHJpYnV0ZXNbaV0ubmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdhdGNoIGZ1dHVyZSBhdHRyIGNoYW5nZXNcclxuICAgICAgICBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgbXV0YXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRBdHRyKG0uYXR0cmlidXRlTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS5vYnNlcnZlKHRoaXMsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTtcclxuICAgICAgICBjb25zdCByZXNvbHZlID0gKGRlZikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb3BzLCBzdHlsZXMgfSA9IGRlZjtcclxuICAgICAgICAgICAgY29uc3QgaGFzT3B0aW9ucyA9ICFpc0FycmF5KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgcmF3S2V5cyA9IHByb3BzID8gKGhhc09wdGlvbnMgPyBPYmplY3Qua2V5cyhwcm9wcykgOiBwcm9wcykgOiBbXTtcclxuICAgICAgICAgICAgLy8gY2FzdCBOdW1iZXItdHlwZSBwcm9wcyBzZXQgYmVmb3JlIHJlc29sdmVcclxuICAgICAgICAgICAgbGV0IG51bWJlclByb3BzO1xyXG4gICAgICAgICAgICBpZiAoaGFzT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHQgPSBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQgPT09IE51bWJlciB8fCAob3B0ICYmIG9wdC50eXBlID09PSBOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb3BzW2tleV0gPSB0b051bWJlcih0aGlzLl9wcm9wc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlclByb3BzIHx8IChudW1iZXJQcm9wcyA9IE9iamVjdC5jcmVhdGUobnVsbCkpKVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fbnVtYmVyUHJvcHMgPSBudW1iZXJQcm9wcztcclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIHByb3BzIHNldCBwcmUtdXBncmFkZSBvciBjb25uZWN0XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5WzBdICE9PSAnXycpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQcm9wKGtleSwgdGhpc1trZXldLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZGVmaW5pbmcgZ2V0dGVyL3NldHRlcnMgb24gcHJvdG90eXBlXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHJhd0tleXMubWFwKGNhbWVsaXplJDEpKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcChrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQcm9wKGtleSwgdmFsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhcHBseSBDU1NcclxuICAgICAgICAgICAgdGhpcy5fYXBwbHlTdHlsZXMoc3R5bGVzKTtcclxuICAgICAgICAgICAgLy8gaW5pdGlhbCByZW5kZXJcclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBhc3luY0RlZiA9IHRoaXMuX2RlZi5fX2FzeW5jTG9hZGVyO1xyXG4gICAgICAgIGlmIChhc3luY0RlZikge1xyXG4gICAgICAgICAgICBhc3luY0RlZigpLnRoZW4ocmVzb2x2ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2RlZik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX3NldEF0dHIoa2V5KSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGUoa2V5KTtcclxuICAgICAgICBpZiAodGhpcy5fbnVtYmVyUHJvcHMgJiYgdGhpcy5fbnVtYmVyUHJvcHNba2V5XSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc2V0UHJvcChjYW1lbGl6ZSQxKGtleSksIHZhbHVlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBfZ2V0UHJvcChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcHNba2V5XTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGludGVybmFsXHJcbiAgICAgKi9cclxuICAgIF9zZXRQcm9wKGtleSwgdmFsLCBzaG91bGRSZWZsZWN0ID0gdHJ1ZSwgc2hvdWxkVXBkYXRlID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuX3Byb3BzW2tleV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJvcHNba2V5XSA9IHZhbDtcclxuICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZSAmJiB0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcmVmbGVjdFxyXG4gICAgICAgICAgICBpZiAoc2hvdWxkUmVmbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpLCB2YWwgKyAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoaHlwaGVuYXRlKGtleSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX3VwZGF0ZSgpIHtcclxuICAgICAgICByZW5kZXIodGhpcy5fY3JlYXRlVk5vZGUoKSwgdGhpcy5zaGFkb3dSb290KTtcclxuICAgIH1cclxuICAgIF9jcmVhdGVWTm9kZSgpIHtcclxuICAgICAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHRoaXMuX2RlZiwgZXh0ZW5kKHt9LCB0aGlzLl9wcm9wcykpO1xyXG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdm5vZGUuY2UgPSBpbnN0YW5jZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaXNDRSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyBITVJcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jZVJlbG9hZCA9IG5ld1N0eWxlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyByZXNldCBzdHlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0eWxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVzLmZvckVhY2gocyA9PiB0aGlzLnNoYWRvd1Jvb3QucmVtb3ZlQ2hpbGQocykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlTdHlsZXMobmV3U3R5bGVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhbiBhc3luYyBjb21wb25lbnQsIGNlUmVsb2FkIGlzIGNhbGxlZCBmcm9tIHRoZSBpbm5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgc28gbm8gbmVlZCB0byByZWxvYWQgdGhlIGFzeW5jIHdyYXBwZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9kZWYuX19hc3luY0xvYWRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBpbnRlcmNlcHQgZW1pdFxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZW1pdCA9IChldmVudCwgLi4uYXJncykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiBhcmdzXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vIGxvY2F0ZSBuZWFyZXN0IFZ1ZSBjdXN0b20gZWxlbWVudCBwYXJlbnQgZm9yIHByb3ZpZGUvaW5qZWN0XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHdoaWxlICgocGFyZW50ID1cclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQgJiYgKHBhcmVudC5wYXJlbnROb2RlIHx8IHBhcmVudC5ob3N0KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgVnVlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQgPSBwYXJlbnQuX2luc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2bm9kZTtcclxuICAgIH1cclxuICAgIF9hcHBseVN0eWxlcyhzdHlsZXMpIHtcclxuICAgICAgICBpZiAoc3R5bGVzKSB7XHJcbiAgICAgICAgICAgIHN0eWxlcy5mb3JFYWNoKGNzcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgICAgICAgICAgIHMudGV4dENvbnRlbnQgPSBjc3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQocyk7XHJcbiAgICAgICAgICAgICAgICAvLyByZWNvcmQgZm9yIEhNUlxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLl9zdHlsZXMgfHwgKHRoaXMuX3N0eWxlcyA9IFtdKSkucHVzaChzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHVzZUNzc01vZHVsZShuYW1lID0gJyRzdHlsZScpIHtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGB1c2VDc3NNb2R1bGUgbXVzdCBiZSBjYWxsZWQgaW5zaWRlIHNldHVwKClgKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kdWxlcyA9IGluc3RhbmNlLnR5cGUuX19jc3NNb2R1bGVzO1xyXG4gICAgICAgIGlmICghbW9kdWxlcykge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgQ3VycmVudCBpbnN0YW5jZSBkb2VzIG5vdCBoYXZlIENTUyBtb2R1bGVzIGluamVjdGVkLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2QgPSBtb2R1bGVzW25hbWVdO1xyXG4gICAgICAgIGlmICghbW9kKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQ3VycmVudCBpbnN0YW5jZSBkb2VzIG5vdCBoYXZlIENTUyBtb2R1bGUgbmFtZWQgXCIke25hbWV9XCIuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtb2Q7XHJcbiAgICB9XHJcbn1cblxuLyoqXHJcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBTRkMncyBDU1MgdmFyaWFibGUgaW5qZWN0aW9uIGZlYXR1cmUuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiB1c2VDc3NWYXJzKGdldHRlcikge1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm4oYHVzZUNzc1ZhcnMgaXMgY2FsbGVkIHdpdGhvdXQgY3VycmVudCBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlLmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNldFZhcnMgPSAoKSA9PiBzZXRWYXJzT25WTm9kZShpbnN0YW5jZS5zdWJUcmVlLCBnZXR0ZXIoaW5zdGFuY2UucHJveHkpKTtcclxuICAgIHdhdGNoUG9zdEVmZmVjdChzZXRWYXJzKTtcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2IgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihzZXRWYXJzKTtcclxuICAgICAgICBvYi5vYnNlcnZlKGluc3RhbmNlLnN1YlRyZWUuZWwucGFyZW50Tm9kZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XHJcbiAgICAgICAgb25Vbm1vdW50ZWQoKCkgPT4gb2IuZGlzY29ubmVjdCgpKTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHNldFZhcnNPblZOb2RlKHZub2RlLCB2YXJzKSB7XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICBjb25zdCBzdXNwZW5zZSA9IHZub2RlLnN1c3BlbnNlO1xyXG4gICAgICAgIHZub2RlID0gc3VzcGVuc2UuYWN0aXZlQnJhbmNoO1xyXG4gICAgICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoICYmICFzdXNwZW5zZS5pc0h5ZHJhdGluZykge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLnB1c2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2V0VmFyc09uVk5vZGUoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCB2YXJzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZHJpbGwgZG93biBIT0NzIHVudGlsIGl0J3MgYSBub24tY29tcG9uZW50IHZub2RlXHJcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50KSB7XHJcbiAgICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnQuc3ViVHJlZTtcclxuICAgIH1cclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJiB2bm9kZS5lbCkge1xyXG4gICAgICAgIHNldFZhcnNPbk5vZGUodm5vZGUuZWwsIHZhcnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gc2V0VmFyc09uVk5vZGUoYywgdmFycykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gU3RhdGljKSB7XHJcbiAgICAgICAgbGV0IHsgZWwsIGFuY2hvciB9ID0gdm5vZGU7XHJcbiAgICAgICAgd2hpbGUgKGVsKSB7XHJcbiAgICAgICAgICAgIHNldFZhcnNPbk5vZGUoZWwsIHZhcnMpO1xyXG4gICAgICAgICAgICBpZiAoZWwgPT09IGFuY2hvcilcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBlbCA9IGVsLm5leHRTaWJsaW5nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXRWYXJzT25Ob2RlKGVsLCB2YXJzKSB7XHJcbiAgICBpZiAoZWwubm9kZVR5cGUgPT09IDEpIHtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhcnMpIHtcclxuICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoYC0tJHtrZXl9YCwgdmFyc1trZXldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcclxuY29uc3QgQU5JTUFUSU9OID0gJ2FuaW1hdGlvbic7XHJcbi8vIERPTSBUcmFuc2l0aW9uIGlzIGEgaGlnaGVyLW9yZGVyLWNvbXBvbmVudCBiYXNlZCBvbiB0aGUgcGxhdGZvcm0tYWdub3N0aWNcclxuLy8gYmFzZSBUcmFuc2l0aW9uIGNvbXBvbmVudCwgd2l0aCBET00tc3BlY2lmaWMgbG9naWMuXHJcbmNvbnN0IFRyYW5zaXRpb24gPSAocHJvcHMsIHsgc2xvdHMgfSkgPT4gaChCYXNlVHJhbnNpdGlvbiwgcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhwcm9wcyksIHNsb3RzKTtcclxuVHJhbnNpdGlvbi5kaXNwbGF5TmFtZSA9ICdUcmFuc2l0aW9uJztcclxuY29uc3QgRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IHtcclxuICAgIG5hbWU6IFN0cmluZyxcclxuICAgIHR5cGU6IFN0cmluZyxcclxuICAgIGNzczoge1xyXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGR1cmF0aW9uOiBbU3RyaW5nLCBOdW1iZXIsIE9iamVjdF0sXHJcbiAgICBlbnRlckZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgZW50ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhckFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZUZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVUb0NsYXNzOiBTdHJpbmdcclxufTtcclxuY29uc3QgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IChUcmFuc2l0aW9uLnByb3BzID1cclxuICAgIC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBCYXNlVHJhbnNpdGlvbi5wcm9wcywgRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycykpO1xyXG4vKipcclxuICogIzMyMjcgSW5jb21pbmcgaG9va3MgbWF5IGJlIG1lcmdlZCBpbnRvIGFycmF5cyB3aGVuIHdyYXBwaW5nIFRyYW5zaXRpb25cclxuICogd2l0aCBjdXN0b20gSE9Dcy5cclxuICovXHJcbmNvbnN0IGNhbGxIb29rID0gKGhvb2ssIGFyZ3MgPSBbXSkgPT4ge1xyXG4gICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICBob29rLmZvckVhY2goaCA9PiBoKC4uLmFyZ3MpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhvb2spIHtcclxuICAgICAgICBob29rKC4uLmFyZ3MpO1xyXG4gICAgfVxyXG59O1xyXG4vKipcclxuICogQ2hlY2sgaWYgYSBob29rIGV4cGVjdHMgYSBjYWxsYmFjayAoMm5kIGFyZyksIHdoaWNoIG1lYW5zIHRoZSB1c2VyXHJcbiAqIGludGVuZHMgdG8gZXhwbGljaXRseSBjb250cm9sIHRoZSBlbmQgb2YgdGhlIHRyYW5zaXRpb24uXHJcbiAqL1xyXG5jb25zdCBoYXNFeHBsaWNpdENhbGxiYWNrID0gKGhvb2spID0+IHtcclxuICAgIHJldHVybiBob29rXHJcbiAgICAgICAgPyBpc0FycmF5KGhvb2spXHJcbiAgICAgICAgICAgID8gaG9vay5zb21lKGggPT4gaC5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICA6IGhvb2subGVuZ3RoID4gMVxyXG4gICAgICAgIDogZmFsc2U7XHJcbn07XHJcbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocmF3UHJvcHMpIHtcclxuICAgIGNvbnN0IGJhc2VQcm9wcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3UHJvcHMpIHtcclxuICAgICAgICBpZiAoIShrZXkgaW4gRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycykpIHtcclxuICAgICAgICAgICAgYmFzZVByb3BzW2tleV0gPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyYXdQcm9wcy5jc3MgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VQcm9wcztcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbmFtZSA9ICd2JywgdHlwZSwgZHVyYXRpb24sIGVudGVyRnJvbUNsYXNzID0gYCR7bmFtZX0tZW50ZXItZnJvbWAsIGVudGVyQWN0aXZlQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci1hY3RpdmVgLCBlbnRlclRvQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci10b2AsIGFwcGVhckZyb21DbGFzcyA9IGVudGVyRnJvbUNsYXNzLCBhcHBlYXJBY3RpdmVDbGFzcyA9IGVudGVyQWN0aXZlQ2xhc3MsIGFwcGVhclRvQ2xhc3MgPSBlbnRlclRvQ2xhc3MsIGxlYXZlRnJvbUNsYXNzID0gYCR7bmFtZX0tbGVhdmUtZnJvbWAsIGxlYXZlQWN0aXZlQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS1hY3RpdmVgLCBsZWF2ZVRvQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS10b2AgfSA9IHJhd1Byb3BzO1xyXG4gICAgY29uc3QgZHVyYXRpb25zID0gbm9ybWFsaXplRHVyYXRpb24oZHVyYXRpb24pO1xyXG4gICAgY29uc3QgZW50ZXJEdXJhdGlvbiA9IGR1cmF0aW9ucyAmJiBkdXJhdGlvbnNbMF07XHJcbiAgICBjb25zdCBsZWF2ZUR1cmF0aW9uID0gZHVyYXRpb25zICYmIGR1cmF0aW9uc1sxXTtcclxuICAgIGNvbnN0IHsgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25FbnRlckNhbmNlbGxlZCwgb25MZWF2ZSwgb25MZWF2ZUNhbmNlbGxlZCwgb25CZWZvcmVBcHBlYXIgPSBvbkJlZm9yZUVudGVyLCBvbkFwcGVhciA9IG9uRW50ZXIsIG9uQXBwZWFyQ2FuY2VsbGVkID0gb25FbnRlckNhbmNlbGxlZCB9ID0gYmFzZVByb3BzO1xyXG4gICAgY29uc3QgZmluaXNoRW50ZXIgPSAoZWwsIGlzQXBwZWFyLCBkb25lKSA9PiB7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJBY3RpdmVDbGFzcyA6IGVudGVyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIGRvbmUgJiYgZG9uZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGZpbmlzaExlYXZlID0gKGVsLCBkb25lKSA9PiB7XHJcbiAgICAgICAgZWwuX2lzTGVhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIGRvbmUgJiYgZG9uZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG1ha2VFbnRlckhvb2sgPSAoaXNBcHBlYXIpID0+IHtcclxuICAgICAgICByZXR1cm4gKGVsLCBkb25lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhvb2sgPSBpc0FwcGVhciA/IG9uQXBwZWFyIDogb25FbnRlcjtcclxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IGZpbmlzaEVudGVyKGVsLCBpc0FwcGVhciwgZG9uZSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKGhvb2ssIFtlbCwgcmVzb2x2ZV0pO1xyXG4gICAgICAgICAgICBuZXh0RnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhckZyb21DbGFzcyA6IGVudGVyRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJUb0NsYXNzIDogZW50ZXJUb0NsYXNzKTtcclxuICAgICAgICAgICAgICAgIGlmICghaGFzRXhwbGljaXRDYWxsYmFjayhob29rKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgZW50ZXJEdXJhdGlvbiwgcmVzb2x2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZChiYXNlUHJvcHMsIHtcclxuICAgICAgICBvbkJlZm9yZUVudGVyKGVsKSB7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQmVmb3JlRW50ZXIsIFtlbF0pO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGVudGVyRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBlbnRlckFjdGl2ZUNsYXNzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQmVmb3JlQXBwZWFyKGVsKSB7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQmVmb3JlQXBwZWFyLCBbZWxdKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhcHBlYXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFwcGVhckFjdGl2ZUNsYXNzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uRW50ZXI6IG1ha2VFbnRlckhvb2soZmFsc2UpLFxyXG4gICAgICAgIG9uQXBwZWFyOiBtYWtlRW50ZXJIb29rKHRydWUpLFxyXG4gICAgICAgIG9uTGVhdmUoZWwsIGRvbmUpIHtcclxuICAgICAgICAgICAgZWwuX2lzTGVhdmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBmaW5pc2hMZWF2ZShlbCwgZG9uZSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAvLyBmb3JjZSByZWZsb3cgc28gKi1sZWF2ZS1mcm9tIGNsYXNzZXMgaW1tZWRpYXRlbHkgdGFrZSBlZmZlY3QgKCMyNTkzKVxyXG4gICAgICAgICAgICBmb3JjZVJlZmxvdygpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgICAgICBuZXh0RnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlbC5faXNMZWF2aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FuY2VsbGVkXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0V4cGxpY2l0Q2FsbGJhY2sob25MZWF2ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGxlYXZlRHVyYXRpb24sIHJlc29sdmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25MZWF2ZSwgW2VsLCByZXNvbHZlXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkVudGVyQ2FuY2VsbGVkKGVsKSB7XHJcbiAgICAgICAgICAgIGZpbmlzaEVudGVyKGVsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uRW50ZXJDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BcHBlYXJDYW5jZWxsZWQoZWwpIHtcclxuICAgICAgICAgICAgZmluaXNoRW50ZXIoZWwsIHRydWUpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkFwcGVhckNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkxlYXZlQ2FuY2VsbGVkKGVsKSB7XHJcbiAgICAgICAgICAgIGZpbmlzaExlYXZlKGVsKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25MZWF2ZUNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplRHVyYXRpb24oZHVyYXRpb24pIHtcclxuICAgIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChkdXJhdGlvbikpIHtcclxuICAgICAgICByZXR1cm4gW051bWJlck9mKGR1cmF0aW9uLmVudGVyKSwgTnVtYmVyT2YoZHVyYXRpb24ubGVhdmUpXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG4gPSBOdW1iZXJPZihkdXJhdGlvbik7XHJcbiAgICAgICAgcmV0dXJuIFtuLCBuXTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBOdW1iZXJPZih2YWwpIHtcclxuICAgIGNvbnN0IHJlcyA9IHRvTnVtYmVyKHZhbCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKVxyXG4gICAgICAgIHZhbGlkYXRlRHVyYXRpb24ocmVzKTtcclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gdmFsaWRhdGVEdXJhdGlvbih2YWwpIHtcclxuICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHdhcm4oYDx0cmFuc2l0aW9uPiBleHBsaWNpdCBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXIgLSBgICtcclxuICAgICAgICAgICAgYGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbCl9LmApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNOYU4odmFsKSkge1xyXG4gICAgICAgIHdhcm4oYDx0cmFuc2l0aW9uPiBleHBsaWNpdCBkdXJhdGlvbiBpcyBOYU4gLSBgICtcclxuICAgICAgICAgICAgJ3RoZSBkdXJhdGlvbiBleHByZXNzaW9uIG1pZ2h0IGJlIGluY29ycmVjdC4nKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGNscykge1xyXG4gICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgZWwuY2xhc3NMaXN0LmFkZChjKSk7XHJcbiAgICAoZWwuX3Z0YyB8fFxyXG4gICAgICAgIChlbC5fdnRjID0gbmV3IFNldCgpKSkuYWRkKGNscyk7XHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBjbHMpIHtcclxuICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGVsLmNsYXNzTGlzdC5yZW1vdmUoYykpO1xyXG4gICAgY29uc3QgeyBfdnRjIH0gPSBlbDtcclxuICAgIGlmIChfdnRjKSB7XHJcbiAgICAgICAgX3Z0Yy5kZWxldGUoY2xzKTtcclxuICAgICAgICBpZiAoIV92dGMuc2l6ZSkge1xyXG4gICAgICAgICAgICBlbC5fdnRjID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBuZXh0RnJhbWUoY2IpIHtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKTtcclxuICAgIH0pO1xyXG59XHJcbmxldCBlbmRJZCA9IDA7XHJcbmZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgZXhwZWN0ZWRUeXBlLCBleHBsaWNpdFRpbWVvdXQsIHJlc29sdmUpIHtcclxuICAgIGNvbnN0IGlkID0gKGVsLl9lbmRJZCA9ICsrZW5kSWQpO1xyXG4gICAgY29uc3QgcmVzb2x2ZUlmTm90U3RhbGUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlkID09PSBlbC5fZW5kSWQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAoZXhwbGljaXRUaW1lb3V0KSB7XHJcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZUlmTm90U3RhbGUsIGV4cGxpY2l0VGltZW91dCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHR5cGUsIHRpbWVvdXQsIHByb3BDb3VudCB9ID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XHJcbiAgICBpZiAoIXR5cGUpIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW5kRXZlbnQgPSB0eXBlICsgJ2VuZCc7XHJcbiAgICBsZXQgZW5kZWQgPSAwO1xyXG4gICAgY29uc3QgZW5kID0gKCkgPT4ge1xyXG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZW5kRXZlbnQsIG9uRW5kKTtcclxuICAgICAgICByZXNvbHZlSWZOb3RTdGFsZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRW5kID0gKGUpID0+IHtcclxuICAgICAgICBpZiAoZS50YXJnZXQgPT09IGVsICYmICsrZW5kZWQgPj0gcHJvcENvdW50KSB7XHJcbiAgICAgICAgICAgIGVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoZW5kZWQgPCBwcm9wQ291bnQpIHtcclxuICAgICAgICAgICAgZW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgdGltZW91dCArIDEpO1xyXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihlbmRFdmVudCwgb25FbmQpO1xyXG59XHJcbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpIHtcclxuICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcclxuICAgIC8vIEpTRE9NIG1heSByZXR1cm4gdW5kZWZpbmVkIGZvciB0cmFuc2l0aW9uIHByb3BlcnRpZXNcclxuICAgIGNvbnN0IGdldFN0eWxlUHJvcGVydGllcyA9IChrZXkpID0+IChzdHlsZXNba2V5XSB8fCAnJykuc3BsaXQoJywgJyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uRGVsYXlzID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKFRSQU5TSVRJT04gKyAnRGVsYXknKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25EdXJhdGlvbnMgPSBnZXRTdHlsZVByb3BlcnRpZXMoVFJBTlNJVElPTiArICdEdXJhdGlvbicpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRyYW5zaXRpb25EZWxheXMsIHRyYW5zaXRpb25EdXJhdGlvbnMpO1xyXG4gICAgY29uc3QgYW5pbWF0aW9uRGVsYXlzID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKEFOSU1BVElPTiArICdEZWxheScpO1xyXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb25zID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKEFOSU1BVElPTiArICdEdXJhdGlvbicpO1xyXG4gICAgY29uc3QgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xyXG4gICAgbGV0IHR5cGUgPSBudWxsO1xyXG4gICAgbGV0IHRpbWVvdXQgPSAwO1xyXG4gICAgbGV0IHByb3BDb3VudCA9IDA7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIGlmIChleHBlY3RlZFR5cGUgPT09IFRSQU5TSVRJT04pIHtcclxuICAgICAgICBpZiAodHJhbnNpdGlvblRpbWVvdXQgPiAwKSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xyXG4gICAgICAgICAgICB0aW1lb3V0ID0gdHJhbnNpdGlvblRpbWVvdXQ7XHJcbiAgICAgICAgICAgIHByb3BDb3VudCA9IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XHJcbiAgICAgICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSBBTklNQVRJT047XHJcbiAgICAgICAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25UaW1lb3V0O1xyXG4gICAgICAgICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRpbWVvdXQgPSBNYXRoLm1heCh0cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XHJcbiAgICAgICAgdHlwZSA9XHJcbiAgICAgICAgICAgIHRpbWVvdXQgPiAwXHJcbiAgICAgICAgICAgICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5pbWF0aW9uVGltZW91dFxyXG4gICAgICAgICAgICAgICAgICAgID8gVFJBTlNJVElPTlxyXG4gICAgICAgICAgICAgICAgICAgIDogQU5JTUFUSU9OXHJcbiAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgcHJvcENvdW50ID0gdHlwZVxyXG4gICAgICAgICAgICA/IHR5cGUgPT09IFRSQU5TSVRJT05cclxuICAgICAgICAgICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcclxuICAgICAgICAgICAgICAgIDogYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICA6IDA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYXNUcmFuc2Zvcm0gPSB0eXBlID09PSBUUkFOU0lUSU9OICYmXHJcbiAgICAgICAgL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLy50ZXN0KHN0eWxlc1tUUkFOU0lUSU9OICsgJ1Byb3BlcnR5J10pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHRpbWVvdXQsXHJcbiAgICAgICAgcHJvcENvdW50LFxyXG4gICAgICAgIGhhc1RyYW5zZm9ybVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBnZXRUaW1lb3V0KGRlbGF5cywgZHVyYXRpb25zKSB7XHJcbiAgICB3aGlsZSAoZGVsYXlzLmxlbmd0aCA8IGR1cmF0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBkZWxheXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uZHVyYXRpb25zLm1hcCgoZCwgaSkgPT4gdG9NcyhkKSArIHRvTXMoZGVsYXlzW2ldKSkpO1xyXG59XHJcbi8vIE9sZCB2ZXJzaW9ucyBvZiBDaHJvbWl1bSAoYmVsb3cgNjEuMC4zMTYzLjEwMCkgZm9ybWF0cyBmbG9hdGluZyBwb2ludGVyXHJcbi8vIG51bWJlcnMgaW4gYSBsb2NhbGUtZGVwZW5kZW50IHdheSwgdXNpbmcgYSBjb21tYSBpbnN0ZWFkIG9mIGEgZG90LlxyXG4vLyBJZiBjb21tYSBpcyBub3QgcmVwbGFjZWQgd2l0aCBhIGRvdCwgdGhlIGlucHV0IHdpbGwgYmUgcm91bmRlZCBkb3duXHJcbi8vIChpLmUuIGFjdGluZyBhcyBhIGZsb29yIGZ1bmN0aW9uKSBjYXVzaW5nIHVuZXhwZWN0ZWQgYmVoYXZpb3JzXHJcbmZ1bmN0aW9uIHRvTXMocykge1xyXG4gICAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKS5yZXBsYWNlKCcsJywgJy4nKSkgKiAxMDAwO1xyXG59XHJcbi8vIHN5bmNocm9ub3VzbHkgZm9yY2UgbGF5b3V0IHRvIHB1dCBlbGVtZW50cyBpbnRvIGEgY2VydGFpbiBzdGF0ZVxyXG5mdW5jdGlvbiBmb3JjZVJlZmxvdygpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDtcclxufVxuXG5jb25zdCBwb3NpdGlvbk1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IG5ld1Bvc2l0aW9uTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgVHJhbnNpdGlvbkdyb3VwSW1wbCA9IHtcclxuICAgIG5hbWU6ICdUcmFuc2l0aW9uR3JvdXAnLFxyXG4gICAgcHJvcHM6IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzLCB7XHJcbiAgICAgICAgdGFnOiBTdHJpbmcsXHJcbiAgICAgICAgbW92ZUNsYXNzOiBTdHJpbmdcclxuICAgIH0pLFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB1c2VUcmFuc2l0aW9uU3RhdGUoKTtcclxuICAgICAgICBsZXQgcHJldkNoaWxkcmVuO1xyXG4gICAgICAgIGxldCBjaGlsZHJlbjtcclxuICAgICAgICBvblVwZGF0ZWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBjaGlsZHJlbiBpcyBndWFyYW50ZWVkIHRvIGV4aXN0IGFmdGVyIGluaXRpYWwgcmVuZGVyXHJcbiAgICAgICAgICAgIGlmICghcHJldkNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdmVDbGFzcyA9IHByb3BzLm1vdmVDbGFzcyB8fCBgJHtwcm9wcy5uYW1lIHx8ICd2J30tbW92ZWA7XHJcbiAgICAgICAgICAgIGlmICghaGFzQ1NTVHJhbnNmb3JtKHByZXZDaGlsZHJlblswXS5lbCwgaW5zdGFuY2Uudm5vZGUuZWwsIG1vdmVDbGFzcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3ZSBkaXZpZGUgdGhlIHdvcmsgaW50byB0aHJlZSBsb29wcyB0byBhdm9pZCBtaXhpbmcgRE9NIHJlYWRzIGFuZCB3cml0ZXNcclxuICAgICAgICAgICAgLy8gaW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJhc2hpbmcuXHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbi5mb3JFYWNoKGNhbGxQZW5kaW5nQ2JzKTtcclxuICAgICAgICAgICAgcHJldkNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xyXG4gICAgICAgICAgICBjb25zdCBtb3ZlZENoaWxkcmVuID0gcHJldkNoaWxkcmVuLmZpbHRlcihhcHBseVRyYW5zbGF0aW9uKTtcclxuICAgICAgICAgICAgLy8gZm9yY2UgcmVmbG93IHRvIHB1dCBldmVyeXRoaW5nIGluIHBvc2l0aW9uXHJcbiAgICAgICAgICAgIGZvcmNlUmVmbG93KCk7XHJcbiAgICAgICAgICAgIG1vdmVkQ2hpbGRyZW4uZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gYy5lbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGU7XHJcbiAgICAgICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS50cmFuc2Zvcm0gPSBzdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSBzdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNiID0gKGVsLl9tb3ZlQ2IgPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlICYmIGUudGFyZ2V0ICE9PSBlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuX21vdmVDYiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1Byb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCBjc3NUcmFuc2l0aW9uUHJvcHMgPSByZXNvbHZlVHJhbnNpdGlvblByb3BzKHJhd1Byb3BzKTtcclxuICAgICAgICAgICAgbGV0IHRhZyA9IHJhd1Byb3BzLnRhZyB8fCBGcmFnbWVudDtcclxuICAgICAgICAgICAgcHJldkNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCA/IGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihzbG90cy5kZWZhdWx0KCkpIDogW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQua2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoY2hpbGQsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MoY2hpbGQsIGNzc1RyYW5zaXRpb25Qcm9wcywgc3RhdGUsIGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGA8VHJhbnNpdGlvbkdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBwcmV2Q2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGNoaWxkLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGNoaWxkLCBjc3NUcmFuc2l0aW9uUHJvcHMsIHN0YXRlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uTWFwLnNldChjaGlsZCwgY2hpbGQuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0YWcsIG51bGwsIGNoaWxkcmVuKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBUcmFuc2l0aW9uR3JvdXAgPSBUcmFuc2l0aW9uR3JvdXBJbXBsO1xyXG5mdW5jdGlvbiBjYWxsUGVuZGluZ0NicyhjKSB7XHJcbiAgICBjb25zdCBlbCA9IGMuZWw7XHJcbiAgICBpZiAoZWwuX21vdmVDYikge1xyXG4gICAgICAgIGVsLl9tb3ZlQ2IoKTtcclxuICAgIH1cclxuICAgIGlmIChlbC5fZW50ZXJDYikge1xyXG4gICAgICAgIGVsLl9lbnRlckNiKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcmVjb3JkUG9zaXRpb24oYykge1xyXG4gICAgbmV3UG9zaXRpb25NYXAuc2V0KGMsIGMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xyXG59XHJcbmZ1bmN0aW9uIGFwcGx5VHJhbnNsYXRpb24oYykge1xyXG4gICAgY29uc3Qgb2xkUG9zID0gcG9zaXRpb25NYXAuZ2V0KGMpO1xyXG4gICAgY29uc3QgbmV3UG9zID0gbmV3UG9zaXRpb25NYXAuZ2V0KGMpO1xyXG4gICAgY29uc3QgZHggPSBvbGRQb3MubGVmdCAtIG5ld1Bvcy5sZWZ0O1xyXG4gICAgY29uc3QgZHkgPSBvbGRQb3MudG9wIC0gbmV3UG9zLnRvcDtcclxuICAgIGlmIChkeCB8fCBkeSkge1xyXG4gICAgICAgIGNvbnN0IHMgPSBjLmVsLnN0eWxlO1xyXG4gICAgICAgIHMudHJhbnNmb3JtID0gcy53ZWJraXRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7ZHh9cHgsJHtkeX1weClgO1xyXG4gICAgICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcclxuICAgICAgICByZXR1cm4gYztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoYXNDU1NUcmFuc2Zvcm0oZWwsIHJvb3QsIG1vdmVDbGFzcykge1xyXG4gICAgLy8gRGV0ZWN0IHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxpZWQgaGFzXHJcbiAgICAvLyBDU1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBiZSBpbnNpZGUgYW4gZW50ZXJpbmdcclxuICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1vbWVudCwgd2UgbWFrZSBhIGNsb25lIG9mIGl0IGFuZCByZW1vdmVcclxuICAgIC8vIGFsbCBvdGhlciB0cmFuc2l0aW9uIGNsYXNzZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFzc1xyXG4gICAgLy8gaXMgYXBwbGllZC5cclxuICAgIGNvbnN0IGNsb25lID0gZWwuY2xvbmVOb2RlKCk7XHJcbiAgICBpZiAoZWwuX3Z0Yykge1xyXG4gICAgICAgIGVsLl92dGMuZm9yRWFjaChjbHMgPT4ge1xyXG4gICAgICAgICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBjbG9uZS5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG1vdmVDbGFzcy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGNsb25lLmNsYXNzTGlzdC5hZGQoYykpO1xyXG4gICAgY2xvbmUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IChyb290Lm5vZGVUeXBlID09PSAxID8gcm9vdCA6IHJvb3QucGFyZW50Tm9kZSk7XHJcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY2xvbmUpO1xyXG4gICAgY29uc3QgeyBoYXNUcmFuc2Zvcm0gfSA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcclxuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjbG9uZSk7XHJcbiAgICByZXR1cm4gaGFzVHJhbnNmb3JtO1xyXG59XG5cbmNvbnN0IGdldE1vZGVsQXNzaWduZXIgPSAodm5vZGUpID0+IHtcclxuICAgIGNvbnN0IGZuID0gdm5vZGUucHJvcHNbJ29uVXBkYXRlOm1vZGVsVmFsdWUnXSB8fFxyXG4gICAgICAgIChmYWxzZSApO1xyXG4gICAgcmV0dXJuIGlzQXJyYXkoZm4pID8gdmFsdWUgPT4gaW52b2tlQXJyYXlGbnMoZm4sIHZhbHVlKSA6IGZuO1xyXG59O1xyXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQoZSkge1xyXG4gICAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uRW5kKGUpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xyXG4gICAgaWYgKHRhcmdldC5jb21wb3NpbmcpIHtcclxuICAgICAgICB0YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTtcclxuICAgIH1cclxufVxyXG4vLyBXZSBhcmUgZXhwb3J0aW5nIHRoZSB2LW1vZGVsIHJ1bnRpbWUgZGlyZWN0bHkgYXMgdm5vZGUgaG9va3Mgc28gdGhhdCBpdCBjYW5cclxuLy8gYmUgdHJlZS1zaGFrZW4gaW4gY2FzZSB2LW1vZGVsIGlzIG5ldmVyIHVzZWQuXHJcbmNvbnN0IHZNb2RlbFRleHQgPSB7XHJcbiAgICBjcmVhdGVkKGVsLCB7IG1vZGlmaWVyczogeyBsYXp5LCB0cmltLCBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBjb25zdCBjYXN0VG9OdW1iZXIgPSBudW1iZXIgfHwgKHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnR5cGUgPT09ICdudW1iZXInKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBsYXp5ID8gJ2NoYW5nZScgOiAnaW5wdXQnLCBlID0+IHtcclxuICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNvbXBvc2luZylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgbGV0IGRvbVZhbHVlID0gZWwudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICh0cmltKSB7XHJcbiAgICAgICAgICAgICAgICBkb21WYWx1ZSA9IGRvbVZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2FzdFRvTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBkb21WYWx1ZSA9IHRvTnVtYmVyKGRvbVZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbC5fYXNzaWduKGRvbVZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWwudmFsdWUgPSBlbC52YWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxhenkpIHtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcclxuICAgICAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hlblxyXG4gICAgICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXHJcbiAgICAgICAgICAgIC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcclxuICAgICAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUuXHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IHZhbHVlIG9uIG1vdW50ZWQgc28gaXQncyBhZnRlciBtaW4vbWF4IGZvciB0eXBlPVwicmFuZ2VcIlxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgZWwudmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBsYXp5LCB0cmltLCBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICAvLyBhdm9pZCBjbGVhcmluZyB1bnJlc29sdmVkIHRleHQuICMyMzAyXHJcbiAgICAgICAgaWYgKGVsLmNvbXBvc2luZylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbCAmJiBlbC50eXBlICE9PSAncmFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGlmIChsYXp5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRyaW0gJiYgZWwudmFsdWUudHJpbSgpID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgobnVtYmVyIHx8IGVsLnR5cGUgPT09ICdudW1iZXInKSAmJiB0b051bWJlcihlbC52YWx1ZSkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICBpZiAoZWwudmFsdWUgIT09IG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIGVsLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCB2TW9kZWxDaGVja2JveCA9IHtcclxuICAgIC8vICM0MDk2IGFycmF5IGNoZWNrYm94ZXMgbmVlZCB0byBiZSBkZWVwIHRyYXZlcnNlZFxyXG4gICAgZGVlcDogdHJ1ZSxcclxuICAgIGNyZWF0ZWQoZWwsIF8sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSBlbC5fbW9kZWxWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gZ2V0VmFsdWUoZWwpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGVja2VkID0gZWwuY2hlY2tlZDtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWduID0gZWwuX2Fzc2lnbjtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkobW9kZWxWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbG9vc2VJbmRleE9mKG1vZGVsVmFsdWUsIGVsZW1lbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IGluZGV4ICE9PSAtMTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGVja2VkICYmICFmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbihtb2RlbFZhbHVlLmNvbmNhdChlbGVtZW50VmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFjaGVja2VkICYmIGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ubW9kZWxWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24oZmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU2V0KG1vZGVsVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9uZWQgPSBuZXcgU2V0KG1vZGVsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9uZWQuYWRkKGVsZW1lbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9uZWQuZGVsZXRlKGVsZW1lbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhc3NpZ24oY2xvbmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFzc2lnbihnZXRDaGVja2JveFZhbHVlKGVsLCBjaGVja2VkKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICAvLyBzZXQgaW5pdGlhbCBjaGVja2VkIG9uIG1vdW50IHRvIHdhaXQgZm9yIHRydWUtdmFsdWUvZmFsc2UtdmFsdWVcclxuICAgIG1vdW50ZWQ6IHNldENoZWNrZWQsXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIGJpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIHNldENoZWNrZWQoZWwsIGJpbmRpbmcsIHZub2RlKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2V0Q2hlY2tlZChlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgdm5vZGUpIHtcclxuICAgIGVsLl9tb2RlbFZhbHVlID0gdmFsdWU7XHJcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VJbmRleE9mKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSkgPiAtMTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSB2YWx1ZS5oYXModm5vZGUucHJvcHMudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodmFsdWUgIT09IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIGdldENoZWNrYm94VmFsdWUoZWwsIHRydWUpKTtcclxuICAgIH1cclxufVxyXG5jb25zdCB2TW9kZWxSYWRpbyA9IHtcclxuICAgIGNyZWF0ZWQoZWwsIHsgdmFsdWUgfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpO1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBlbC5fYXNzaWduKGdldFZhbHVlKGVsKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCB7IHZhbHVlLCBvbGRWYWx1ZSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBpZiAodmFsdWUgIT09IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCB2TW9kZWxTZWxlY3QgPSB7XHJcbiAgICAvLyA8c2VsZWN0IG11bHRpcGxlPiB2YWx1ZSBuZWVkIHRvIGJlIGRlZXAgdHJhdmVyc2VkXHJcbiAgICBkZWVwOiB0cnVlLFxyXG4gICAgY3JlYXRlZChlbCwgeyB2YWx1ZSwgbW9kaWZpZXJzOiB7IG51bWJlciB9IH0sIHZub2RlKSB7XHJcbiAgICAgICAgY29uc3QgaXNTZXRNb2RlbCA9IGlzU2V0KHZhbHVlKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXJcclxuICAgICAgICAgICAgICAgIC5jYWxsKGVsLm9wdGlvbnMsIChvKSA9PiBvLnNlbGVjdGVkKVxyXG4gICAgICAgICAgICAgICAgLm1hcCgobykgPT4gbnVtYmVyID8gdG9OdW1iZXIoZ2V0VmFsdWUobykpIDogZ2V0VmFsdWUobykpO1xyXG4gICAgICAgICAgICBlbC5fYXNzaWduKGVsLm11bHRpcGxlXHJcbiAgICAgICAgICAgICAgICA/IGlzU2V0TW9kZWxcclxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBTZXQoc2VsZWN0ZWRWYWwpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZFZhbFxyXG4gICAgICAgICAgICAgICAgOiBzZWxlY3RlZFZhbFswXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgfSxcclxuICAgIC8vIHNldCB2YWx1ZSBpbiBtb3VudGVkICYgdXBkYXRlZCBiZWNhdXNlIDxzZWxlY3Q+IHJlbGllcyBvbiBpdHMgY2hpbGRyZW5cclxuICAgIC8vIDxvcHRpb24+cy5cclxuICAgIG1vdW50ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBfYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICB9LFxyXG4gICAgdXBkYXRlZChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWQoZWwsIHZhbHVlKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQoZWwsIHZhbHVlKSB7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gZWwubXVsdGlwbGU7XHJcbiAgICBpZiAoaXNNdWx0aXBsZSAmJiAhaXNBcnJheSh2YWx1ZSkgJiYgIWlzU2V0KHZhbHVlKSkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGA8c2VsZWN0IG11bHRpcGxlIHYtbW9kZWw+IGV4cGVjdHMgYW4gQXJyYXkgb3IgU2V0IHZhbHVlIGZvciBpdHMgYmluZGluZywgYCArXHJcbiAgICAgICAgICAgICAgICBgYnV0IGdvdCAke09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpfS5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGVsLm9wdGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtcclxuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IGdldFZhbHVlKG9wdGlvbik7XHJcbiAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIG9wdGlvblZhbHVlKSA+IC0xO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdmFsdWUuaGFzKG9wdGlvblZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSlcclxuICAgICAgICAgICAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghaXNNdWx0aXBsZSAmJiBlbC5zZWxlY3RlZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSAtMTtcclxuICAgIH1cclxufVxyXG4vLyByZXRyaWV2ZSByYXcgdmFsdWUgc2V0IHZpYSA6dmFsdWUgYmluZGluZ3NcclxuZnVuY3Rpb24gZ2V0VmFsdWUoZWwpIHtcclxuICAgIHJldHVybiAnX3ZhbHVlJyBpbiBlbCA/IGVsLl92YWx1ZSA6IGVsLnZhbHVlO1xyXG59XHJcbi8vIHJldHJpZXZlIHJhdyB2YWx1ZSBmb3IgdHJ1ZS12YWx1ZSBhbmQgZmFsc2UtdmFsdWUgc2V0IHZpYSA6dHJ1ZS12YWx1ZSBvciA6ZmFsc2UtdmFsdWUgYmluZGluZ3NcclxuZnVuY3Rpb24gZ2V0Q2hlY2tib3hWYWx1ZShlbCwgY2hlY2tlZCkge1xyXG4gICAgY29uc3Qga2V5ID0gY2hlY2tlZCA/ICdfdHJ1ZVZhbHVlJyA6ICdfZmFsc2VWYWx1ZSc7XHJcbiAgICByZXR1cm4ga2V5IGluIGVsID8gZWxba2V5XSA6IGNoZWNrZWQ7XHJcbn1cclxuY29uc3Qgdk1vZGVsRHluYW1pYyA9IHtcclxuICAgIGNyZWF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIG51bGwsICdjcmVhdGVkJyk7XHJcbiAgICB9LFxyXG4gICAgbW91bnRlZChlbCwgYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgbnVsbCwgJ21vdW50ZWQnKTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCAnYmVmb3JlVXBkYXRlJyk7XHJcbiAgICB9LFxyXG4gICAgdXBkYXRlZChlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsICd1cGRhdGVkJyk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHJlc29sdmVEeW5hbWljTW9kZWwodGFnTmFtZSwgdHlwZSkge1xyXG4gICAgc3dpdGNoICh0YWdOYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnU0VMRUNUJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFNlbGVjdDtcclxuICAgICAgICBjYXNlICdURVhUQVJFQSc6XHJcbiAgICAgICAgICAgIHJldHVybiB2TW9kZWxUZXh0O1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2TW9kZWxDaGVja2JveDtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk1vZGVsUmFkaW87XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2TW9kZWxUZXh0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgaG9vaykge1xyXG4gICAgY29uc3QgbW9kZWxUb1VzZSA9IHJlc29sdmVEeW5hbWljTW9kZWwoZWwudGFnTmFtZSwgdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSk7XHJcbiAgICBjb25zdCBmbiA9IG1vZGVsVG9Vc2VbaG9va107XHJcbiAgICBmbiAmJiBmbihlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSk7XHJcbn1cclxuLy8gU1NSIHZub2RlIHRyYW5zZm9ybXMsIG9ubHkgdXNlZCB3aGVuIHVzZXIgaW5jbHVkZXMgY2xpZW50LW9yaWVudGVkIHJlbmRlclxyXG4vLyBmdW5jdGlvbiBpbiBTU1JcclxuZnVuY3Rpb24gaW5pdFZNb2RlbEZvclNTUigpIHtcclxuICAgIHZNb2RlbFRleHQuZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9KSA9PiAoeyB2YWx1ZSB9KTtcclxuICAgIHZNb2RlbFJhZGlvLmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSwgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgbG9vc2VFcXVhbCh2bm9kZS5wcm9wcy52YWx1ZSwgdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdk1vZGVsQ2hlY2tib3guZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9LCB2bm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgbG9vc2VJbmRleE9mKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdk1vZGVsRHluYW1pYy5nZXRTU1JQcm9wcyA9IChiaW5kaW5nLCB2bm9kZSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygdm5vZGUudHlwZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2RlbFRvVXNlID0gcmVzb2x2ZUR5bmFtaWNNb2RlbChcclxuICAgICAgICAvLyByZXNvbHZlRHluYW1pY01vZGVsIGV4cGVjdHMgYW4gdXBwZXJjYXNlIHRhZyBuYW1lLCBidXQgdm5vZGUudHlwZSBpcyBsb3dlcmNhc2VcclxuICAgICAgICB2bm9kZS50eXBlLnRvVXBwZXJDYXNlKCksIHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnR5cGUpO1xyXG4gICAgICAgIGlmIChtb2RlbFRvVXNlLmdldFNTUlByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2RlbFRvVXNlLmdldFNTUlByb3BzKGJpbmRpbmcsIHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IHN5c3RlbU1vZGlmaWVycyA9IFsnY3RybCcsICdzaGlmdCcsICdhbHQnLCAnbWV0YSddO1xyXG5jb25zdCBtb2RpZmllckd1YXJkcyA9IHtcclxuICAgIHN0b3A6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSxcclxuICAgIHByZXZlbnQ6IGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpLFxyXG4gICAgc2VsZjogZSA9PiBlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0LFxyXG4gICAgY3RybDogZSA9PiAhZS5jdHJsS2V5LFxyXG4gICAgc2hpZnQ6IGUgPT4gIWUuc2hpZnRLZXksXHJcbiAgICBhbHQ6IGUgPT4gIWUuYWx0S2V5LFxyXG4gICAgbWV0YTogZSA9PiAhZS5tZXRhS2V5LFxyXG4gICAgbGVmdDogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAwLFxyXG4gICAgbWlkZGxlOiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDEsXHJcbiAgICByaWdodDogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAyLFxyXG4gICAgZXhhY3Q6IChlLCBtb2RpZmllcnMpID0+IHN5c3RlbU1vZGlmaWVycy5zb21lKG0gPT4gZVtgJHttfUtleWBdICYmICFtb2RpZmllcnMuaW5jbHVkZXMobSkpXHJcbn07XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aE1vZGlmaWVycyA9IChmbiwgbW9kaWZpZXJzKSA9PiB7XHJcbiAgICByZXR1cm4gKGV2ZW50LCAuLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZ3VhcmQgPSBtb2RpZmllckd1YXJkc1ttb2RpZmllcnNbaV1dO1xyXG4gICAgICAgICAgICBpZiAoZ3VhcmQgJiYgZ3VhcmQoZXZlbnQsIG1vZGlmaWVycykpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbihldmVudCwgLi4uYXJncyk7XHJcbiAgICB9O1xyXG59O1xyXG4vLyBLZXB0IGZvciAyLnggY29tcGF0LlxyXG4vLyBOb3RlOiBJRTExIGNvbXBhdCBmb3IgYHNwYWNlYmFyYCBhbmQgYGRlbGAgaXMgcmVtb3ZlZCBmb3Igbm93LlxyXG5jb25zdCBrZXlOYW1lcyA9IHtcclxuICAgIGVzYzogJ2VzY2FwZScsXHJcbiAgICBzcGFjZTogJyAnLFxyXG4gICAgdXA6ICdhcnJvdy11cCcsXHJcbiAgICBsZWZ0OiAnYXJyb3ctbGVmdCcsXHJcbiAgICByaWdodDogJ2Fycm93LXJpZ2h0JyxcclxuICAgIGRvd246ICdhcnJvdy1kb3duJyxcclxuICAgIGRlbGV0ZTogJ2JhY2tzcGFjZSdcclxufTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB3aXRoS2V5cyA9IChmbiwgbW9kaWZpZXJzKSA9PiB7XHJcbiAgICByZXR1cm4gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCEoJ2tleScgaW4gZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXZlbnRLZXkgPSBoeXBoZW5hdGUoZXZlbnQua2V5KTtcclxuICAgICAgICBpZiAobW9kaWZpZXJzLnNvbWUoayA9PiBrID09PSBldmVudEtleSB8fCBrZXlOYW1lc1trXSA9PT0gZXZlbnRLZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmbihldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdlNob3cgPSB7XHJcbiAgICBiZWZvcmVNb3VudChlbCwgeyB2YWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGVsLl92b2QgPSBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoZWwsIHsgdmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbiAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgdXBkYXRlZChlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBpZiAoIXZhbHVlID09PSAhb2xkVmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24ubGVhdmUoZWwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXREaXNwbGF5KGVsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBiZWZvcmVVbm1vdW50KGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldERpc3BsYXkoZWwsIHZhbHVlKSB7XHJcbiAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBlbC5fdm9kIDogJ25vbmUnO1xyXG59XHJcbi8vIFNTUiB2bm9kZSB0cmFuc2Zvcm1zLCBvbmx5IHVzZWQgd2hlbiB1c2VyIGluY2x1ZGVzIGNsaWVudC1vcmllbnRlZCByZW5kZXJcclxuLy8gZnVuY3Rpb24gaW4gU1NSXHJcbmZ1bmN0aW9uIGluaXRWU2hvd0ZvclNTUigpIHtcclxuICAgIHZTaG93LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgc3R5bGU6IHsgZGlzcGxheTogJ25vbmUnIH0gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IHJlbmRlcmVyT3B0aW9ucyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHsgcGF0Y2hQcm9wIH0sIG5vZGVPcHMpO1xyXG4vLyBsYXp5IGNyZWF0ZSB0aGUgcmVuZGVyZXIgLSB0aGlzIG1ha2VzIGNvcmUgcmVuZGVyZXIgbG9naWMgdHJlZS1zaGFrYWJsZVxyXG4vLyBpbiBjYXNlIHRoZSB1c2VyIG9ubHkgaW1wb3J0cyByZWFjdGl2aXR5IHV0aWxpdGllcyBmcm9tIFZ1ZS5cclxubGV0IHJlbmRlcmVyO1xyXG5sZXQgZW5hYmxlZEh5ZHJhdGlvbiA9IGZhbHNlO1xyXG5mdW5jdGlvbiBlbnN1cmVSZW5kZXJlcigpIHtcclxuICAgIHJldHVybiAocmVuZGVyZXIgfHxcclxuICAgICAgICAocmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcihyZW5kZXJlck9wdGlvbnMpKSk7XHJcbn1cclxuZnVuY3Rpb24gZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKSB7XHJcbiAgICByZW5kZXJlciA9IGVuYWJsZWRIeWRyYXRpb25cclxuICAgICAgICA/IHJlbmRlcmVyXHJcbiAgICAgICAgOiBjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihyZW5kZXJlck9wdGlvbnMpO1xyXG4gICAgZW5hYmxlZEh5ZHJhdGlvbiA9IHRydWU7XHJcbiAgICByZXR1cm4gcmVuZGVyZXI7XHJcbn1cclxuLy8gdXNlIGV4cGxpY2l0IHR5cGUgY2FzdHMgaGVyZSB0byBhdm9pZCBpbXBvcnQoKSBjYWxscyBpbiByb2xsZWQtdXAgZC50c1xyXG5jb25zdCByZW5kZXIgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGVuc3VyZVJlbmRlcmVyKCkucmVuZGVyKC4uLmFyZ3MpO1xyXG59KTtcclxuY29uc3QgaHlkcmF0ZSA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKS5oeWRyYXRlKC4uLmFyZ3MpO1xyXG59KTtcclxuY29uc3QgY3JlYXRlQXBwID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBjb25zdCBhcHAgPSBlbnN1cmVSZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xyXG4gICAgICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1vdW50IH0gPSBhcHA7XHJcbiAgICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lcilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGFwcC5fY29tcG9uZW50O1xyXG4gICAgICAgIGlmICghaXNGdW5jdGlvbihjb21wb25lbnQpICYmICFjb21wb25lbnQucmVuZGVyICYmICFjb21wb25lbnQudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgLy8gX19VTlNBRkVfX1xyXG4gICAgICAgICAgICAvLyBSZWFzb246IHBvdGVudGlhbCBleGVjdXRpb24gb2YgSlMgZXhwcmVzc2lvbnMgaW4gaW4tRE9NIHRlbXBsYXRlLlxyXG4gICAgICAgICAgICAvLyBUaGUgdXNlciBtdXN0IG1ha2Ugc3VyZSB0aGUgaW4tRE9NIHRlbXBsYXRlIGlzIHRydXN0ZWQuIElmIGl0J3NcclxuICAgICAgICAgICAgLy8gcmVuZGVyZWQgYnkgdGhlIHNlcnZlciwgdGhlIHRlbXBsYXRlIHNob3VsZCBub3QgY29udGFpbiBhbnkgdXNlciBkYXRhLlxyXG4gICAgICAgICAgICBjb21wb25lbnQudGVtcGxhdGUgPSBjb250YWluZXIuaW5uZXJIVE1MO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjbGVhciBjb250ZW50IGJlZm9yZSBtb3VudGluZ1xyXG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnJztcclxuICAgICAgICBjb25zdCBwcm94eSA9IG1vdW50KGNvbnRhaW5lciwgZmFsc2UsIGNvbnRhaW5lciBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xyXG4gICAgICAgIGlmIChjb250YWluZXIgaW5zdGFuY2VvZiBFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoJ3YtY2xvYWsnKTtcclxuICAgICAgICAgICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZGF0YS12LWFwcCcsICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb3h5O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBhcHA7XHJcbn0pO1xyXG5jb25zdCBjcmVhdGVTU1JBcHAgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGNvbnN0IGFwcCA9IGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkuY3JlYXRlQXBwKC4uLmFyZ3MpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGluamVjdE5hdGl2ZVRhZ0NoZWNrKGFwcCk7XHJcbiAgICAgICAgaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbW91bnQgfSA9IGFwcDtcclxuICAgIGFwcC5tb3VudCA9IChjb250YWluZXJPclNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lck9yU2VsZWN0b3IpO1xyXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vdW50KGNvbnRhaW5lciwgdHJ1ZSwgY29udGFpbmVyIGluc3RhbmNlb2YgU1ZHRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBhcHA7XHJcbn0pO1xyXG5mdW5jdGlvbiBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApIHtcclxuICAgIC8vIEluamVjdCBgaXNOYXRpdmVUYWdgXHJcbiAgICAvLyB0aGlzIGlzIHVzZWQgZm9yIGNvbXBvbmVudCBuYW1lIHZhbGlkYXRpb24gKGRldiBvbmx5KVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcsICdpc05hdGl2ZVRhZycsIHtcclxuICAgICAgICB2YWx1ZTogKHRhZykgPT4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkdUYWcodGFnKSxcclxuICAgICAgICB3cml0YWJsZTogZmFsc2VcclxuICAgIH0pO1xyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCkge1xyXG4gICAgaWYgKGlzUnVudGltZU9ubHkoKSkge1xyXG4gICAgICAgIGNvbnN0IGlzQ3VzdG9tRWxlbWVudCA9IGFwcC5jb25maWcuaXNDdXN0b21FbGVtZW50O1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnaXNDdXN0b21FbGVtZW50Jywge1xyXG4gICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNDdXN0b21FbGVtZW50O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBUaGUgXFxgaXNDdXN0b21FbGVtZW50XFxgIGNvbmZpZyBvcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBcXGBjb21waWxlck9wdGlvbnMuaXNDdXN0b21FbGVtZW50XFxgIGluc3RlYWQuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSBhcHAuY29uZmlnLmNvbXBpbGVyT3B0aW9ucztcclxuICAgICAgICBjb25zdCBtc2cgPSBgVGhlIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBjb25maWcgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgYCArXHJcbiAgICAgICAgICAgIGBhIGJ1aWxkIG9mIFZ1ZS5qcyB0aGF0IGluY2x1ZGVzIHRoZSBydW50aW1lIGNvbXBpbGVyIChha2EgXCJmdWxsIGJ1aWxkXCIpLiBgICtcclxuICAgICAgICAgICAgYFNpbmNlIHlvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCwgXFxgY29tcGlsZXJPcHRpb25zXFxgIGAgK1xyXG4gICAgICAgICAgICBgbXVzdCBiZSBwYXNzZWQgdG8gXFxgQHZ1ZS9jb21waWxlci1kb21cXGAgaW4gdGhlIGJ1aWxkIHNldHVwIGluc3RlYWQuXFxuYCArXHJcbiAgICAgICAgICAgIGAtIEZvciB2dWUtbG9hZGVyOiBwYXNzIGl0IHZpYSB2dWUtbG9hZGVyJ3MgXFxgY29tcGlsZXJPcHRpb25zXFxgIGxvYWRlciBvcHRpb24uXFxuYCArXHJcbiAgICAgICAgICAgIGAtIEZvciB2dWUtY2xpOiBzZWUgaHR0cHM6Ly9jbGkudnVlanMub3JnL2d1aWRlL3dlYnBhY2suaHRtbCNtb2RpZnlpbmctb3B0aW9ucy1vZi1hLWxvYWRlclxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3Igdml0ZTogcGFzcyBpdCB2aWEgQHZpdGVqcy9wbHVnaW4tdnVlIG9wdGlvbnMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvdHJlZS9tYWluL3BhY2thZ2VzL3BsdWdpbi12dWUjZXhhbXBsZS1mb3ItcGFzc2luZy1vcHRpb25zLXRvLXZ1ZWNvbXBpbGVyLWRvbWA7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcsICdjb21waWxlck9wdGlvbnMnLCB7XHJcbiAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4obXNnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlck9wdGlvbnM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4obXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXIpIHtcclxuICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb250YWluZXIpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXJlcykge1xyXG4gICAgICAgICAgICB3YXJuKGBGYWlsZWQgdG8gbW91bnQgYXBwOiBtb3VudCB0YXJnZXQgc2VsZWN0b3IgXCIke2NvbnRhaW5lcn1cIiByZXR1cm5lZCBudWxsLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIHdpbmRvdy5TaGFkb3dSb290ICYmXHJcbiAgICAgICAgY29udGFpbmVyIGluc3RhbmNlb2Ygd2luZG93LlNoYWRvd1Jvb3QgJiZcclxuICAgICAgICBjb250YWluZXIubW9kZSA9PT0gJ2Nsb3NlZCcpIHtcclxuICAgICAgICB3YXJuKGBtb3VudGluZyBvbiBhIFNoYWRvd1Jvb3Qgd2l0aCBcXGB7bW9kZTogXCJjbG9zZWRcIn1cXGAgbWF5IGxlYWQgdG8gdW5wcmVkaWN0YWJsZSBidWdzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGFpbmVyO1xyXG59XHJcbmxldCBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4vKipcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCBpbml0RGlyZWN0aXZlc0ZvclNTUiA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXNzckRpcmVjdGl2ZUluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHNzckRpcmVjdGl2ZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaW5pdFZNb2RlbEZvclNTUigpO1xyXG4gICAgICAgICAgICBpbml0VlNob3dGb3JTU1IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICA7XG5cbmV4cG9ydCB7IFRyYW5zaXRpb24sIFRyYW5zaXRpb25Hcm91cCwgVnVlRWxlbWVudCwgY3JlYXRlQXBwLCBjcmVhdGVTU1JBcHAsIGRlZmluZUN1c3RvbUVsZW1lbnQsIGRlZmluZVNTUkN1c3RvbUVsZW1lbnQsIGh5ZHJhdGUsIGluaXREaXJlY3RpdmVzRm9yU1NSLCByZW5kZXIsIHVzZUNzc01vZHVsZSwgdXNlQ3NzVmFycywgdk1vZGVsQ2hlY2tib3gsIHZNb2RlbER5bmFtaWMsIHZNb2RlbFJhZGlvLCB2TW9kZWxTZWxlY3QsIHZNb2RlbFRleHQsIHZTaG93LCB3aXRoS2V5cywgd2l0aE1vZGlmaWVycyB9O1xuIiwiLyoqXHJcbiAqIE1ha2UgYSBtYXAgYW5kIHJldHVybiBhIGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIGtleVxyXG4gKiBpcyBpbiB0aGF0IG1hcC5cclxuICogSU1QT1JUQU5UOiBhbGwgY2FsbHMgb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHByZWZpeGVkIHdpdGhcclxuICogXFwvXFwqI1xcX1xcX1BVUkVcXF9cXF9cXCpcXC9cclxuICogU28gdGhhdCByb2xsdXAgY2FuIHRyZWUtc2hha2UgdGhlbSBpZiBuZWNlc3NhcnkuXHJcbiAqL1xyXG5mdW5jdGlvbiBtYWtlTWFwKHN0ciwgZXhwZWN0c0xvd2VyQ2FzZSkge1xyXG4gICAgY29uc3QgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIGNvbnN0IGxpc3QgPSBzdHIuc3BsaXQoJywnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhwZWN0c0xvd2VyQ2FzZSA/IHZhbCA9PiAhIW1hcFt2YWwudG9Mb3dlckNhc2UoKV0gOiB2YWwgPT4gISFtYXBbdmFsXTtcclxufVxuXG4vKipcclxuICogZGV2IG9ubHkgZmxhZyAtPiBuYW1lIG1hcHBpbmdcclxuICovXHJcbmNvbnN0IFBhdGNoRmxhZ05hbWVzID0ge1xyXG4gICAgWzEgLyogUGF0Y2hGbGFncy5URVhUICovXTogYFRFWFRgLFxyXG4gICAgWzIgLyogUGF0Y2hGbGFncy5DTEFTUyAqL106IGBDTEFTU2AsXHJcbiAgICBbNCAvKiBQYXRjaEZsYWdzLlNUWUxFICovXTogYFNUWUxFYCxcclxuICAgIFs4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi9dOiBgUFJPUFNgLFxyXG4gICAgWzE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqL106IGBGVUxMX1BST1BTYCxcclxuICAgIFszMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovXTogYEhZRFJBVEVfRVZFTlRTYCxcclxuICAgIFs2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL106IGBTVEFCTEVfRlJBR01FTlRgLFxyXG4gICAgWzEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovXTogYEtFWUVEX0ZSQUdNRU5UYCxcclxuICAgIFsyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovXTogYFVOS0VZRURfRlJBR01FTlRgLFxyXG4gICAgWzUxMiAvKiBQYXRjaEZsYWdzLk5FRURfUEFUQ0ggKi9dOiBgTkVFRF9QQVRDSGAsXHJcbiAgICBbMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi9dOiBgRFlOQU1JQ19TTE9UU2AsXHJcbiAgICBbMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovXTogYERFVl9ST09UX0ZSQUdNRU5UYCxcclxuICAgIFstMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi9dOiBgSE9JU1RFRGAsXHJcbiAgICBbLTIgLyogUGF0Y2hGbGFncy5CQUlMICovXTogYEJBSUxgXHJcbn07XG5cbi8qKlxyXG4gKiBEZXYgb25seVxyXG4gKi9cclxuY29uc3Qgc2xvdEZsYWdzVGV4dCA9IHtcclxuICAgIFsxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi9dOiAnU1RBQkxFJyxcclxuICAgIFsyIC8qIFNsb3RGbGFncy5EWU5BTUlDICovXTogJ0RZTkFNSUMnLFxyXG4gICAgWzMgLyogU2xvdEZsYWdzLkZPUldBUkRFRCAqL106ICdGT1JXQVJERUQnXHJcbn07XG5cbmNvbnN0IEdMT0JBTFNfV0hJVEVfTElTVEVEID0gJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4scGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksJyArXHJcbiAgICAnZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsTWF0aCxOdW1iZXIsRGF0ZSxBcnJheSwnICtcclxuICAgICdPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLEJpZ0ludCc7XHJcbmNvbnN0IGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChHTE9CQUxTX1dISVRFX0xJU1RFRCk7XG5cbmNvbnN0IHJhbmdlID0gMjtcclxuZnVuY3Rpb24gZ2VuZXJhdGVDb2RlRnJhbWUoc291cmNlLCBzdGFydCA9IDAsIGVuZCA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIC8vIFNwbGl0IHRoZSBjb250ZW50IGludG8gaW5kaXZpZHVhbCBsaW5lcyBidXQgY2FwdHVyZSB0aGUgbmV3bGluZSBzZXF1ZW5jZVxyXG4gICAgLy8gdGhhdCBzZXBhcmF0ZWQgZWFjaCBsaW5lLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBhY3R1YWwgc2VxdWVuY2UgaXNcclxuICAgIC8vIG5lZWRlZCB0byBwcm9wZXJseSB0YWtlIGludG8gYWNjb3VudCB0aGUgZnVsbCBsaW5lIGxlbmd0aCBmb3Igb2Zmc2V0XHJcbiAgICAvLyBjb21wYXJpc29uXHJcbiAgICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoLyhcXHI/XFxuKS8pO1xyXG4gICAgLy8gU2VwYXJhdGUgdGhlIGxpbmVzIGFuZCBuZXdsaW5lIHNlcXVlbmNlcyBpbnRvIHNlcGFyYXRlIGFycmF5cyBmb3IgZWFzaWVyIHJlZmVyZW5jaW5nXHJcbiAgICBjb25zdCBuZXdsaW5lU2VxdWVuY2VzID0gbGluZXMuZmlsdGVyKChfLCBpZHgpID0+IGlkeCAlIDIgPT09IDEpO1xyXG4gICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ICUgMiA9PT0gMCk7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgY29uc3QgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY291bnQgKz1cclxuICAgICAgICAgICAgbGluZXNbaV0ubGVuZ3RoICtcclxuICAgICAgICAgICAgICAgICgobmV3bGluZVNlcXVlbmNlc1tpXSAmJiBuZXdsaW5lU2VxdWVuY2VzW2ldLmxlbmd0aCkgfHwgMCk7XHJcbiAgICAgICAgaWYgKGNvdW50ID49IHN0YXJ0KSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpIC0gcmFuZ2U7IGogPD0gaSArIHJhbmdlIHx8IGVuZCA+IGNvdW50OyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChqIDwgMCB8fCBqID49IGxpbmVzLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBqICsgMTtcclxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAke2xpbmV9JHsnICcucmVwZWF0KE1hdGgubWF4KDMgLSBTdHJpbmcobGluZSkubGVuZ3RoLCAwKSl9fCAgJHtsaW5lc1tqXX1gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBsaW5lc1tqXS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lU2VxTGVuZ3RoID0gKG5ld2xpbmVTZXF1ZW5jZXNbal0gJiYgbmV3bGluZVNlcXVlbmNlc1tqXS5sZW5ndGgpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHB1c2ggdW5kZXJsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFkID0gc3RhcnQgLSAoY291bnQgLSAobGluZUxlbmd0aCArIG5ld0xpbmVTZXFMZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxLCBlbmQgPiBjb3VudCA/IGxpbmVMZW5ndGggLSBwYWQgOiBlbmQgLSBzdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goYCAgIHwgIGAgKyAnICcucmVwZWF0KHBhZCkgKyAnXicucmVwZWF0KGxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA+IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kID4gY291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoTWF0aC5taW4oZW5kIC0gY291bnQsIGxpbmVMZW5ndGgpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goYCAgIHwgIGAgKyAnXicucmVwZWF0KGxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBsaW5lTGVuZ3RoICsgbmV3TGluZVNlcUxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpO1xyXG59XG5cbi8qKlxyXG4gKiBPbiB0aGUgY2xpZW50IHdlIG9ubHkgbmVlZCB0byBvZmZlciBzcGVjaWFsIGNhc2VzIGZvciBib29sZWFuIGF0dHJpYnV0ZXMgdGhhdFxyXG4gKiBoYXZlIGRpZmZlcmVudCBuYW1lcyBmcm9tIHRoZWlyIGNvcnJlc3BvbmRpbmcgZG9tIHByb3BlcnRpZXM6XHJcbiAqIC0gaXRlbXNjb3BlIC0+IE4vQVxyXG4gKiAtIGFsbG93ZnVsbHNjcmVlbiAtPiBhbGxvd0Z1bGxzY3JlZW5cclxuICogLSBmb3Jtbm92YWxpZGF0ZSAtPiBmb3JtTm9WYWxpZGF0ZVxyXG4gKiAtIGlzbWFwIC0+IGlzTWFwXHJcbiAqIC0gbm9tb2R1bGUgLT4gbm9Nb2R1bGVcclxuICogLSBub3ZhbGlkYXRlIC0+IG5vVmFsaWRhdGVcclxuICogLSByZWFkb25seSAtPiByZWFkT25seVxyXG4gKi9cclxuY29uc3Qgc3BlY2lhbEJvb2xlYW5BdHRycyA9IGBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgO1xyXG5jb25zdCBpc1NwZWNpYWxCb29sZWFuQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChzcGVjaWFsQm9vbGVhbkF0dHJzKTtcclxuLyoqXHJcbiAqIFRoZSBmdWxsIGxpc3QgaXMgbmVlZGVkIGR1cmluZyBTU1IgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBpbml0aWFsIG1hcmt1cC5cclxuICovXHJcbmNvbnN0IGlzQm9vbGVhbkF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoc3BlY2lhbEJvb2xlYW5BdHRycyArXHJcbiAgICBgLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjb250cm9scyxkZWZhdWx0LGRlZmVyLGRpc2FibGVkLGhpZGRlbixgICtcclxuICAgIGBsb29wLG9wZW4scmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLGAgK1xyXG4gICAgYGNoZWNrZWQsbXV0ZWQsbXVsdGlwbGUsc2VsZWN0ZWRgKTtcclxuLyoqXHJcbiAqIEJvb2xlYW4gYXR0cmlidXRlcyBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBvciAnJy5cclxuICogZS5nLiBgPHNlbGVjdCBtdWx0aXBsZT5gIGNvbXBpbGVzIHRvIGB7IG11bHRpcGxlOiAnJyB9YFxyXG4gKi9cclxuZnVuY3Rpb24gaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISF2YWx1ZSB8fCB2YWx1ZSA9PT0gJyc7XHJcbn1cclxuY29uc3QgdW5zYWZlQXR0ckNoYXJSRSA9IC9bPi89XCInXFx1MDAwOVxcdTAwMGFcXHUwMDBjXFx1MDAyMF0vO1xyXG5jb25zdCBhdHRyVmFsaWRhdGlvbkNhY2hlID0ge307XHJcbmZ1bmN0aW9uIGlzU1NSU2FmZUF0dHJOYW1lKG5hbWUpIHtcclxuICAgIGlmIChhdHRyVmFsaWRhdGlvbkNhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGF0dHJWYWxpZGF0aW9uQ2FjaGVbbmFtZV07XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc1Vuc2FmZSA9IHVuc2FmZUF0dHJDaGFyUkUudGVzdChuYW1lKTtcclxuICAgIGlmIChpc1Vuc2FmZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYHVuc2FmZSBhdHRyaWJ1dGUgbmFtZTogJHtuYW1lfWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChhdHRyVmFsaWRhdGlvbkNhY2hlW25hbWVdID0gIWlzVW5zYWZlKTtcclxufVxyXG5jb25zdCBwcm9wc1RvQXR0ck1hcCA9IHtcclxuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXHJcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXHJcbiAgICBodG1sRm9yOiAnZm9yJyxcclxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXHJcbn07XHJcbi8qKlxyXG4gKiBDU1MgcHJvcGVydGllcyB0aGF0IGFjY2VwdCBwbGFpbiBudW1iZXJzXHJcbiAqL1xyXG5jb25zdCBpc05vVW5pdE51bWVyaWNTdHlsZVByb3AgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsYm9yZGVyLWltYWdlLW91dHNldCxib3JkZXItaW1hZ2Utc2xpY2UsYCArXHJcbiAgICBgYm9yZGVyLWltYWdlLXdpZHRoLGJveC1mbGV4LGJveC1mbGV4LWdyb3VwLGJveC1vcmRpbmFsLWdyb3VwLGNvbHVtbi1jb3VudCxgICtcclxuICAgIGBjb2x1bW5zLGZsZXgsZmxleC1ncm93LGZsZXgtcG9zaXRpdmUsZmxleC1zaHJpbmssZmxleC1uZWdhdGl2ZSxmbGV4LW9yZGVyLGAgK1xyXG4gICAgYGdyaWQtcm93LGdyaWQtcm93LWVuZCxncmlkLXJvdy1zcGFuLGdyaWQtcm93LXN0YXJ0LGdyaWQtY29sdW1uLGAgK1xyXG4gICAgYGdyaWQtY29sdW1uLWVuZCxncmlkLWNvbHVtbi1zcGFuLGdyaWQtY29sdW1uLXN0YXJ0LGZvbnQtd2VpZ2h0LGxpbmUtY2xhbXAsYCArXHJcbiAgICBgbGluZS1oZWlnaHQsb3BhY2l0eSxvcmRlcixvcnBoYW5zLHRhYi1zaXplLHdpZG93cyx6LWluZGV4LHpvb20sYCArXHJcbiAgICAvLyBTVkdcclxuICAgIGBmaWxsLW9wYWNpdHksZmxvb2Qtb3BhY2l0eSxzdG9wLW9wYWNpdHksc3Ryb2tlLWRhc2hhcnJheSxzdHJva2UtZGFzaG9mZnNldCxgICtcclxuICAgIGBzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGhgKTtcclxuLyoqXHJcbiAqIEtub3duIGF0dHJpYnV0ZXMsIHRoaXMgaXMgdXNlZCBmb3Igc3RyaW5naWZpY2F0aW9uIG9mIHJ1bnRpbWUgc3RhdGljIG5vZGVzXHJcbiAqIHNvIHRoYXQgd2UgZG9uJ3Qgc3RyaW5naWZ5IGJpbmRpbmdzIHRoYXQgY2Fubm90IGJlIHNldCBmcm9tIEhUTUwuXHJcbiAqIERvbid0IGFsc28gZm9yZ2V0IHRvIGFsbG93IGBkYXRhLSpgIGFuZCBgYXJpYS0qYCFcclxuICogR2VuZXJhdGVkIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzXHJcbiAqL1xyXG5jb25zdCBpc0tub3duSHRtbEF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGFjY2VwdCxhY2NlcHQtY2hhcnNldCxhY2Nlc3NrZXksYWN0aW9uLGFsaWduLGFsbG93LGFsdCxhc3luYyxgICtcclxuICAgIGBhdXRvY2FwaXRhbGl6ZSxhdXRvY29tcGxldGUsYXV0b2ZvY3VzLGF1dG9wbGF5LGJhY2tncm91bmQsYmdjb2xvcixgICtcclxuICAgIGBib3JkZXIsYnVmZmVyZWQsY2FwdHVyZSxjaGFsbGVuZ2UsY2hhcnNldCxjaGVja2VkLGNpdGUsY2xhc3MsY29kZSxgICtcclxuICAgIGBjb2RlYmFzZSxjb2xvcixjb2xzLGNvbHNwYW4sY29udGVudCxjb250ZW50ZWRpdGFibGUsY29udGV4dG1lbnUsY29udHJvbHMsYCArXHJcbiAgICBgY29vcmRzLGNyb3Nzb3JpZ2luLGNzcCxkYXRhLGRhdGV0aW1lLGRlY29kaW5nLGRlZmF1bHQsZGVmZXIsZGlyLGRpcm5hbWUsYCArXHJcbiAgICBgZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsZW50ZXJrZXloaW50LGZvcixmb3JtLGAgK1xyXG4gICAgYGZvcm1hY3Rpb24sZm9ybWVuY3R5cGUsZm9ybW1ldGhvZCxmb3Jtbm92YWxpZGF0ZSxmb3JtdGFyZ2V0LGhlYWRlcnMsYCArXHJcbiAgICBgaGVpZ2h0LGhpZGRlbixoaWdoLGhyZWYsaHJlZmxhbmcsaHR0cC1lcXVpdixpY29uLGlkLGltcG9ydGFuY2UsaW50ZWdyaXR5LGAgK1xyXG4gICAgYGlzbWFwLGl0ZW1wcm9wLGtleXR5cGUsa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvYWRpbmcsbGlzdCxsb29wLGxvdyxgICtcclxuICAgIGBtYW5pZmVzdCxtYXgsbWF4bGVuZ3RoLG1pbmxlbmd0aCxtZWRpYSxtaW4sbXVsdGlwbGUsbXV0ZWQsbmFtZSxub3ZhbGlkYXRlLGAgK1xyXG4gICAgYG9wZW4sb3B0aW11bSxwYXR0ZXJuLHBpbmcscGxhY2Vob2xkZXIscG9zdGVyLHByZWxvYWQscmFkaW9ncm91cCxyZWFkb25seSxgICtcclxuICAgIGByZWZlcnJlcnBvbGljeSxyZWwscmVxdWlyZWQscmV2ZXJzZWQscm93cyxyb3dzcGFuLHNhbmRib3gsc2NvcGUsc2NvcGVkLGAgK1xyXG4gICAgYHNlbGVjdGVkLHNoYXBlLHNpemUsc2l6ZXMsc2xvdCxzcGFuLHNwZWxsY2hlY2ssc3JjLHNyY2RvYyxzcmNsYW5nLHNyY3NldCxgICtcclxuICAgIGBzdGFydCxzdGVwLHN0eWxlLHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCxgICtcclxuICAgIGB2YWx1ZSx3aWR0aCx3cmFwYCk7XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZWQgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlXHJcbiAqL1xyXG5jb25zdCBpc0tub3duU3ZnQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgeG1sbnMsYWNjZW50LWhlaWdodCxhY2N1bXVsYXRlLGFkZGl0aXZlLGFsaWdubWVudC1iYXNlbGluZSxhbHBoYWJldGljLGFtcGxpdHVkZSxgICtcclxuICAgIGBhcmFiaWMtZm9ybSxhc2NlbnQsYXR0cmlidXRlTmFtZSxhdHRyaWJ1dGVUeXBlLGF6aW11dGgsYmFzZUZyZXF1ZW5jeSxgICtcclxuICAgIGBiYXNlbGluZS1zaGlmdCxiYXNlUHJvZmlsZSxiYm94LGJlZ2luLGJpYXMsYnksY2FsY01vZGUsY2FwLWhlaWdodCxjbGFzcyxgICtcclxuICAgIGBjbGlwLGNsaXBQYXRoVW5pdHMsY2xpcC1wYXRoLGNsaXAtcnVsZSxjb2xvcixjb2xvci1pbnRlcnBvbGF0aW9uLGAgK1xyXG4gICAgYGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyxjb2xvci1wcm9maWxlLGNvbG9yLXJlbmRlcmluZyxgICtcclxuICAgIGBjb250ZW50U2NyaXB0VHlwZSxjb250ZW50U3R5bGVUeXBlLGNyb3Nzb3JpZ2luLGN1cnNvcixjeCxjeSxkLGRlY2VsZXJhdGUsYCArXHJcbiAgICBgZGVzY2VudCxkaWZmdXNlQ29uc3RhbnQsZGlyZWN0aW9uLGRpc3BsYXksZGl2aXNvcixkb21pbmFudC1iYXNlbGluZSxkdXIsZHgsYCArXHJcbiAgICBgZHksZWRnZU1vZGUsZWxldmF0aW9uLGVuYWJsZS1iYWNrZ3JvdW5kLGVuZCxleHBvbmVudCxmaWxsLGZpbGwtb3BhY2l0eSxgICtcclxuICAgIGBmaWxsLXJ1bGUsZmlsdGVyLGZpbHRlclJlcyxmaWx0ZXJVbml0cyxmbG9vZC1jb2xvcixmbG9vZC1vcGFjaXR5LGAgK1xyXG4gICAgYGZvbnQtZmFtaWx5LGZvbnQtc2l6ZSxmb250LXNpemUtYWRqdXN0LGZvbnQtc3RyZXRjaCxmb250LXN0eWxlLGAgK1xyXG4gICAgYGZvbnQtdmFyaWFudCxmb250LXdlaWdodCxmb3JtYXQsZnJvbSxmcixmeCxmeSxnMSxnMixnbHlwaC1uYW1lLGAgK1xyXG4gICAgYGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwsZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwsZ2x5cGhSZWYsYCArXHJcbiAgICBgZ3JhZGllbnRUcmFuc2Zvcm0sZ3JhZGllbnRVbml0cyxoYW5naW5nLGhlaWdodCxocmVmLGhyZWZsYW5nLGhvcml6LWFkdi14LGAgK1xyXG4gICAgYGhvcml6LW9yaWdpbi14LGlkLGlkZW9ncmFwaGljLGltYWdlLXJlbmRlcmluZyxpbixpbjIsaW50ZXJjZXB0LGssazEsazIsazMsYCArXHJcbiAgICBgazQsa2VybmVsTWF0cml4LGtlcm5lbFVuaXRMZW5ndGgsa2VybmluZyxrZXlQb2ludHMsa2V5U3BsaW5lcyxrZXlUaW1lcyxgICtcclxuICAgIGBsYW5nLGxlbmd0aEFkanVzdCxsZXR0ZXItc3BhY2luZyxsaWdodGluZy1jb2xvcixsaW1pdGluZ0NvbmVBbmdsZSxsb2NhbCxgICtcclxuICAgIGBtYXJrZXItZW5kLG1hcmtlci1taWQsbWFya2VyLXN0YXJ0LG1hcmtlckhlaWdodCxtYXJrZXJVbml0cyxtYXJrZXJXaWR0aCxgICtcclxuICAgIGBtYXNrLG1hc2tDb250ZW50VW5pdHMsbWFza1VuaXRzLG1hdGhlbWF0aWNhbCxtYXgsbWVkaWEsbWV0aG9kLG1pbixtb2RlLGAgK1xyXG4gICAgYG5hbWUsbnVtT2N0YXZlcyxvZmZzZXQsb3BhY2l0eSxvcGVyYXRvcixvcmRlcixvcmllbnQsb3JpZW50YXRpb24sb3JpZ2luLGAgK1xyXG4gICAgYG92ZXJmbG93LG92ZXJsaW5lLXBvc2l0aW9uLG92ZXJsaW5lLXRoaWNrbmVzcyxwYW5vc2UtMSxwYWludC1vcmRlcixwYXRoLGAgK1xyXG4gICAgYHBhdGhMZW5ndGgscGF0dGVybkNvbnRlbnRVbml0cyxwYXR0ZXJuVHJhbnNmb3JtLHBhdHRlcm5Vbml0cyxwaW5nLGAgK1xyXG4gICAgYHBvaW50ZXItZXZlbnRzLHBvaW50cyxwb2ludHNBdFgscG9pbnRzQXRZLHBvaW50c0F0WixwcmVzZXJ2ZUFscGhhLGAgK1xyXG4gICAgYHByZXNlcnZlQXNwZWN0UmF0aW8scHJpbWl0aXZlVW5pdHMscixyYWRpdXMscmVmZXJyZXJQb2xpY3kscmVmWCxyZWZZLHJlbCxgICtcclxuICAgIGByZW5kZXJpbmctaW50ZW50LHJlcGVhdENvdW50LHJlcGVhdER1cixyZXF1aXJlZEV4dGVuc2lvbnMscmVxdWlyZWRGZWF0dXJlcyxgICtcclxuICAgIGByZXN0YXJ0LHJlc3VsdCxyb3RhdGUscngscnksc2NhbGUsc2VlZCxzaGFwZS1yZW5kZXJpbmcsc2xvcGUsc3BhY2luZyxgICtcclxuICAgIGBzcGVjdWxhckNvbnN0YW50LHNwZWN1bGFyRXhwb25lbnQsc3BlZWQsc3ByZWFkTWV0aG9kLHN0YXJ0T2Zmc2V0LGAgK1xyXG4gICAgYHN0ZERldmlhdGlvbixzdGVtaCxzdGVtdixzdGl0Y2hUaWxlcyxzdG9wLWNvbG9yLHN0b3Atb3BhY2l0eSxgICtcclxuICAgIGBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uLHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzLHN0cmluZyxzdHJva2UsYCArXHJcbiAgICBgc3Ryb2tlLWRhc2hhcnJheSxzdHJva2UtZGFzaG9mZnNldCxzdHJva2UtbGluZWNhcCxzdHJva2UtbGluZWpvaW4sYCArXHJcbiAgICBgc3Ryb2tlLW1pdGVybGltaXQsc3Ryb2tlLW9wYWNpdHksc3Ryb2tlLXdpZHRoLHN0eWxlLHN1cmZhY2VTY2FsZSxgICtcclxuICAgIGBzeXN0ZW1MYW5ndWFnZSx0YWJpbmRleCx0YWJsZVZhbHVlcyx0YXJnZXQsdGFyZ2V0WCx0YXJnZXRZLHRleHQtYW5jaG9yLGAgK1xyXG4gICAgYHRleHQtZGVjb3JhdGlvbix0ZXh0LXJlbmRlcmluZyx0ZXh0TGVuZ3RoLHRvLHRyYW5zZm9ybSx0cmFuc2Zvcm0tb3JpZ2luLGAgK1xyXG4gICAgYHR5cGUsdTEsdTIsdW5kZXJsaW5lLXBvc2l0aW9uLHVuZGVybGluZS10aGlja25lc3MsdW5pY29kZSx1bmljb2RlLWJpZGksYCArXHJcbiAgICBgdW5pY29kZS1yYW5nZSx1bml0cy1wZXItZW0sdi1hbHBoYWJldGljLHYtaGFuZ2luZyx2LWlkZW9ncmFwaGljLGAgK1xyXG4gICAgYHYtbWF0aGVtYXRpY2FsLHZhbHVlcyx2ZWN0b3ItZWZmZWN0LHZlcnNpb24sdmVydC1hZHYteSx2ZXJ0LW9yaWdpbi14LGAgK1xyXG4gICAgYHZlcnQtb3JpZ2luLXksdmlld0JveCx2aWV3VGFyZ2V0LHZpc2liaWxpdHksd2lkdGgsd2lkdGhzLHdvcmQtc3BhY2luZyxgICtcclxuICAgIGB3cml0aW5nLW1vZGUseCx4LWhlaWdodCx4MSx4Mix4Q2hhbm5lbFNlbGVjdG9yLHhsaW5rOmFjdHVhdGUseGxpbms6YXJjcm9sZSxgICtcclxuICAgIGB4bGluazpocmVmLHhsaW5rOnJvbGUseGxpbms6c2hvdyx4bGluazp0aXRsZSx4bGluazp0eXBlLHhtbDpiYXNlLHhtbDpsYW5nLGAgK1xyXG4gICAgYHhtbDpzcGFjZSx5LHkxLHkyLHlDaGFubmVsU2VsZWN0b3Iseix6b29tQW5kUGFuYCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCByZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZVtpXTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGlzU3RyaW5nKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICA/IHBhcnNlU3RyaW5nU3R5bGUoaXRlbSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplU3R5bGUoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzW2tleV0gPSBub3JtYWxpemVkW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5jb25zdCBsaXN0RGVsaW1pdGVyUkUgPSAvOyg/IVteKF0qXFwpKS9nO1xyXG5jb25zdCBwcm9wZXJ0eURlbGltaXRlclJFID0gLzooLispLztcclxuZnVuY3Rpb24gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGNzc1RleHQuc3BsaXQobGlzdERlbGltaXRlclJFKS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXJSRSk7XHJcbiAgICAgICAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXRbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gc3RyaW5naWZ5U3R5bGUoc3R5bGVzKSB7XHJcbiAgICBsZXQgcmV0ID0gJyc7XHJcbiAgICBpZiAoIXN0eWxlcyB8fCBpc1N0cmluZyhzdHlsZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3R5bGVzW2tleV07XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGtleS5zdGFydHNXaXRoKGAtLWApID8ga2V5IDogaHlwaGVuYXRlKGtleSk7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05vVW5pdE51bWVyaWNTdHlsZVByb3Aobm9ybWFsaXplZEtleSkpKSB7XHJcbiAgICAgICAgICAgIC8vIG9ubHkgcmVuZGVyIHZhbGlkIHZhbHVlc1xyXG4gICAgICAgICAgICByZXQgKz0gYCR7bm9ybWFsaXplZEtleX06JHt2YWx1ZX07YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzKHZhbHVlKSB7XHJcbiAgICBsZXQgcmVzID0gJyc7XHJcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmVzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUNsYXNzKHZhbHVlW2ldKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlcyArPSBub3JtYWxpemVkICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgcmVzICs9IG5hbWUgKyAnICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzLnRyaW0oKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyhwcm9wcykge1xyXG4gICAgaWYgKCFwcm9wcylcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCB7IGNsYXNzOiBrbGFzcywgc3R5bGUgfSA9IHByb3BzO1xyXG4gICAgaWYgKGtsYXNzICYmICFpc1N0cmluZyhrbGFzcykpIHtcclxuICAgICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcclxuICAgIH1cclxuICAgIGlmIChzdHlsZSkge1xyXG4gICAgICAgIHByb3BzLnN0eWxlID0gbm9ybWFsaXplU3R5bGUoc3R5bGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XG5cbi8vIFRoZXNlIHRhZyBjb25maWdzIGFyZSBzaGFyZWQgYmV0d2VlbiBjb21waWxlci1kb20gYW5kIHJ1bnRpbWUtZG9tLCBzbyB0aGV5XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudFxyXG5jb25zdCBIVE1MX1RBR1MgPSAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlciwnICtcclxuICAgICdoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sJyArXHJcbiAgICAnZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsJyArXHJcbiAgICAnZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsJyArXHJcbiAgICAndGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSwnICtcclxuICAgICdjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsJyArXHJcbiAgICAndGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLCcgK1xyXG4gICAgJ29wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsJyArXHJcbiAgICAnc3VtbWFyeSx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCc7XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9FbGVtZW50XHJcbmNvbnN0IFNWR19UQUdTID0gJ3N2ZyxhbmltYXRlLGFuaW1hdGVNb3Rpb24sYW5pbWF0ZVRyYW5zZm9ybSxjaXJjbGUsY2xpcFBhdGgsY29sb3ItcHJvZmlsZSwnICtcclxuICAgICdkZWZzLGRlc2MsZGlzY2FyZCxlbGxpcHNlLGZlQmxlbmQsZmVDb2xvck1hdHJpeCxmZUNvbXBvbmVudFRyYW5zZmVyLCcgK1xyXG4gICAgJ2ZlQ29tcG9zaXRlLGZlQ29udm9sdmVNYXRyaXgsZmVEaWZmdXNlTGlnaHRpbmcsZmVEaXNwbGFjZW1lbnRNYXAsJyArXHJcbiAgICAnZmVEaXN0YW5jZUxpZ2h0LGZlRHJvcFNoYWRvdyxmZUZsb29kLGZlRnVuY0EsZmVGdW5jQixmZUZ1bmNHLGZlRnVuY1IsJyArXHJcbiAgICAnZmVHYXVzc2lhbkJsdXIsZmVJbWFnZSxmZU1lcmdlLGZlTWVyZ2VOb2RlLGZlTW9ycGhvbG9neSxmZU9mZnNldCwnICtcclxuICAgICdmZVBvaW50TGlnaHQsZmVTcGVjdWxhckxpZ2h0aW5nLGZlU3BvdExpZ2h0LGZlVGlsZSxmZVR1cmJ1bGVuY2UsZmlsdGVyLCcgK1xyXG4gICAgJ2ZvcmVpZ25PYmplY3QsZyxoYXRjaCxoYXRjaHBhdGgsaW1hZ2UsbGluZSxsaW5lYXJHcmFkaWVudCxtYXJrZXIsbWFzaywnICtcclxuICAgICdtZXNoLG1lc2hncmFkaWVudCxtZXNocGF0Y2gsbWVzaHJvdyxtZXRhZGF0YSxtcGF0aCxwYXRoLHBhdHRlcm4sJyArXHJcbiAgICAncG9seWdvbixwb2x5bGluZSxyYWRpYWxHcmFkaWVudCxyZWN0LHNldCxzb2xpZGNvbG9yLHN0b3Asc3dpdGNoLHN5bWJvbCwnICtcclxuICAgICd0ZXh0LHRleHRQYXRoLHRpdGxlLHRzcGFuLHVua25vd24sdXNlLHZpZXcnO1xyXG5jb25zdCBWT0lEX1RBR1MgPSAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxocixpbWcsaW5wdXQsbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnInO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNIVE1MVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKEhUTUxfVEFHUyk7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc1NWR1RhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChTVkdfVEFHUyk7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc1ZvaWRUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoVk9JRF9UQUdTKTtcblxuY29uc3QgZXNjYXBlUkUgPSAvW1wiJyY8Pl0vO1xyXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RyID0gJycgKyBzdHJpbmc7XHJcbiAgICBjb25zdCBtYXRjaCA9IGVzY2FwZVJFLmV4ZWMoc3RyKTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG4gICAgbGV0IGh0bWwgPSAnJztcclxuICAgIGxldCBlc2NhcGVkO1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMzQ6IC8vIFwiXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZxdW90Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzODogLy8gJlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmYW1wOyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOTogLy8gJ1xyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmIzM5Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA2MDogLy8gPFxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmbHQ7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDYyOiAvLyA+XHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZndDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcclxuICAgICAgICAgICAgaHRtbCArPSBzdHIuc2xpY2UobGFzdEluZGV4LCBpbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcclxuICAgICAgICBodG1sICs9IGVzY2FwZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIuc2xpY2UobGFzdEluZGV4LCBpbmRleCkgOiBodG1sO1xyXG59XHJcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNTIvc3ludGF4Lmh0bWwjY29tbWVudHNcclxuY29uc3QgY29tbWVudFN0cmlwUkUgPSAvXi0/Pnw8IS0tfC0tPnwtLSE+fDwhLSQvZztcclxuZnVuY3Rpb24gZXNjYXBlSHRtbENvbW1lbnQoc3JjKSB7XHJcbiAgICByZXR1cm4gc3JjLnJlcGxhY2UoY29tbWVudFN0cmlwUkUsICcnKTtcclxufVxuXG5mdW5jdGlvbiBsb29zZUNvbXBhcmVBcnJheXMoYSwgYikge1xyXG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgZXF1YWwgPSB0cnVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGVxdWFsICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZXF1YWwgPSBsb29zZUVxdWFsKGFbaV0sIGJbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVxdWFsO1xyXG59XHJcbmZ1bmN0aW9uIGxvb3NlRXF1YWwoYSwgYikge1xyXG4gICAgaWYgKGEgPT09IGIpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBsZXQgYVZhbGlkVHlwZSA9IGlzRGF0ZShhKTtcclxuICAgIGxldCBiVmFsaWRUeXBlID0gaXNEYXRlKGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCkgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIGFWYWxpZFR5cGUgPSBpc1N5bWJvbChhKTtcclxuICAgIGJWYWxpZFR5cGUgPSBpc1N5bWJvbChiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICByZXR1cm4gYSA9PT0gYjtcclxuICAgIH1cclxuICAgIGFWYWxpZFR5cGUgPSBpc0FycmF5KGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzQXJyYXkoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFWYWxpZFR5cGUgJiYgYlZhbGlkVHlwZSA/IGxvb3NlQ29tcGFyZUFycmF5cyhhLCBiKSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzT2JqZWN0KGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzT2JqZWN0KGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGhpcyBpZiB3aWxsIHByb2JhYmx5IG5ldmVyIGJlIGNhbGxlZCAqL1xyXG4gICAgICAgIGlmICghYVZhbGlkVHlwZSB8fCAhYlZhbGlkVHlwZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFLZXlzQ291bnQgPSBPYmplY3Qua2V5cyhhKS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgYktleXNDb3VudCA9IE9iamVjdC5rZXlzKGIpLmxlbmd0aDtcclxuICAgICAgICBpZiAoYUtleXNDb3VudCAhPT0gYktleXNDb3VudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGEpIHtcclxuICAgICAgICAgICAgY29uc3QgYUhhc0tleSA9IGEuaGFzT3duUHJvcGVydHkoa2V5KTtcclxuICAgICAgICAgICAgY29uc3QgYkhhc0tleSA9IGIuaGFzT3duUHJvcGVydHkoa2V5KTtcclxuICAgICAgICAgICAgaWYgKChhSGFzS2V5ICYmICFiSGFzS2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgKCFhSGFzS2V5ICYmIGJIYXNLZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAhbG9vc2VFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKTtcclxufVxyXG5mdW5jdGlvbiBsb29zZUluZGV4T2YoYXJyLCB2YWwpIHtcclxuICAgIHJldHVybiBhcnIuZmluZEluZGV4KGl0ZW0gPT4gbG9vc2VFcXVhbChpdGVtLCB2YWwpKTtcclxufVxuXG4vKipcclxuICogRm9yIGNvbnZlcnRpbmcge3sgaW50ZXJwb2xhdGlvbiB9fSB2YWx1ZXMgdG8gZGlzcGxheWVkIHN0cmluZ3MuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB0b0Rpc3BsYXlTdHJpbmcgPSAodmFsKSA9PiB7XHJcbiAgICByZXR1cm4gaXNTdHJpbmcodmFsKVxyXG4gICAgICAgID8gdmFsXHJcbiAgICAgICAgOiB2YWwgPT0gbnVsbFxyXG4gICAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICAgIDogaXNBcnJheSh2YWwpIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNPYmplY3QodmFsKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWwudG9TdHJpbmcgPT09IG9iamVjdFRvU3RyaW5nIHx8ICFpc0Z1bmN0aW9uKHZhbC50b1N0cmluZykpKVxyXG4gICAgICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIHJlcGxhY2VyLCAyKVxyXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcodmFsKTtcclxufTtcclxuY29uc3QgcmVwbGFjZXIgPSAoX2tleSwgdmFsKSA9PiB7XHJcbiAgICAvLyBjYW4ndCB1c2UgaXNSZWYgaGVyZSBzaW5jZSBAdnVlL3NoYXJlZCBoYXMgbm8gZGVwc1xyXG4gICAgaWYgKHZhbCAmJiB2YWwuX192X2lzUmVmKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VyKF9rZXksIHZhbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc01hcCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgW2BNYXAoJHt2YWwuc2l6ZX0pYF06IFsuLi52YWwuZW50cmllcygpXS5yZWR1Y2UoKGVudHJpZXMsIFtrZXksIHZhbF0pID0+IHtcclxuICAgICAgICAgICAgICAgIGVudHJpZXNbYCR7a2V5fSA9PmBdID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJpZXM7XHJcbiAgICAgICAgICAgIH0sIHt9KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgW2BTZXQoJHt2YWwuc2l6ZX0pYF06IFsuLi52YWwudmFsdWVzKCldXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSAmJiAhaXNQbGFpbk9iamVjdCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxufTtcblxuY29uc3QgRU1QVFlfT0JKID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICA/IE9iamVjdC5mcmVlemUoe30pXHJcbiAgICA6IHt9O1xyXG5jb25zdCBFTVBUWV9BUlIgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBPYmplY3QuZnJlZXplKFtdKSA6IFtdO1xyXG5jb25zdCBOT09QID0gKCkgPT4geyB9O1xyXG4vKipcclxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cclxuICovXHJcbmNvbnN0IE5PID0gKCkgPT4gZmFsc2U7XHJcbmNvbnN0IG9uUkUgPSAvXm9uW15hLXpdLztcclxuY29uc3QgaXNPbiA9IChrZXkpID0+IG9uUkUudGVzdChrZXkpO1xyXG5jb25zdCBpc01vZGVsTGlzdGVuZXIgPSAoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aCgnb25VcGRhdGU6Jyk7XHJcbmNvbnN0IGV4dGVuZCA9IE9iamVjdC5hc3NpZ247XHJcbmNvbnN0IHJlbW92ZSA9IChhcnIsIGVsKSA9PiB7XHJcbiAgICBjb25zdCBpID0gYXJyLmluZGV4T2YoZWwpO1xyXG4gICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcclxuY29uc3QgaGFzT3duID0gKHZhbCwga2V5KSA9PiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwga2V5KTtcclxuY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XHJcbmNvbnN0IGlzTWFwID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IE1hcF0nO1xyXG5jb25zdCBpc1NldCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBTZXRdJztcclxuY29uc3QgaXNEYXRlID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcclxuY29uc3QgaXNGdW5jdGlvbiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XHJcbmNvbnN0IGlzU3RyaW5nID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XHJcbmNvbnN0IGlzU3ltYm9sID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N5bWJvbCc7XHJcbmNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xyXG5jb25zdCBpc1Byb21pc2UgPSAodmFsKSA9PiB7XHJcbiAgICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC50aGVuKSAmJiBpc0Z1bmN0aW9uKHZhbC5jYXRjaCk7XHJcbn07XHJcbmNvbnN0IG9iamVjdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcclxuY29uc3QgdG9UeXBlU3RyaW5nID0gKHZhbHVlKSA9PiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcclxuY29uc3QgdG9SYXdUeXBlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAvLyBleHRyYWN0IFwiUmF3VHlwZVwiIGZyb20gc3RyaW5ncyBsaWtlIFwiW29iamVjdCBSYXdUeXBlXVwiXHJcbiAgICByZXR1cm4gdG9UeXBlU3RyaW5nKHZhbHVlKS5zbGljZSg4LCAtMSk7XHJcbn07XHJcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbmNvbnN0IGlzSW50ZWdlcktleSA9IChrZXkpID0+IGlzU3RyaW5nKGtleSkgJiZcclxuICAgIGtleSAhPT0gJ05hTicgJiZcclxuICAgIGtleVswXSAhPT0gJy0nICYmXHJcbiAgICAnJyArIHBhcnNlSW50KGtleSwgMTApID09PSBrZXk7XHJcbmNvbnN0IGlzUmVzZXJ2ZWRQcm9wID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFxyXG4vLyB0aGUgbGVhZGluZyBjb21tYSBpcyBpbnRlbnRpb25hbCBzbyBlbXB0eSBzdHJpbmcgXCJcIiBpcyBhbHNvIGluY2x1ZGVkXHJcbicsa2V5LHJlZixyZWZfZm9yLHJlZl9rZXksJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZU1vdW50LG9uVm5vZGVNb3VudGVkLCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVVcGRhdGUsb25Wbm9kZVVwZGF0ZWQsJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZVVubW91bnQsb25Wbm9kZVVubW91bnRlZCcpO1xyXG5jb25zdCBpc0J1aWx0SW5EaXJlY3RpdmUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ2JpbmQsY2xvYWssZWxzZS1pZixlbHNlLGZvcixodG1sLGlmLG1vZGVsLG9uLG9uY2UscHJlLHNob3csc2xvdCx0ZXh0LG1lbW8nKTtcclxuY29uc3QgY2FjaGVTdHJpbmdGdW5jdGlvbiA9IChmbikgPT4ge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICgoc3RyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcclxuICAgICAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XHJcbn0pO1xyXG5jb25zdCBoeXBoZW5hdGVSRSA9IC9cXEIoW0EtWl0pL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgaHlwaGVuYXRlID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJy0kMScpLnRvTG93ZXJDYXNlKCkpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhcGl0YWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSk7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgdG9IYW5kbGVyS2V5ID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIgPyBgb24ke2NhcGl0YWxpemUoc3RyKX1gIDogYGApO1xyXG4vLyBjb21wYXJlIHdoZXRoZXIgYSB2YWx1ZSBoYXMgY2hhbmdlZCwgYWNjb3VudGluZyBmb3IgTmFOLlxyXG5jb25zdCBoYXNDaGFuZ2VkID0gKHZhbHVlLCBvbGRWYWx1ZSkgPT4gIU9iamVjdC5pcyh2YWx1ZSwgb2xkVmFsdWUpO1xyXG5jb25zdCBpbnZva2VBcnJheUZucyA9IChmbnMsIGFyZykgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmbnNbaV0oYXJnKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgZGVmID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgdG9OdW1iZXIgPSAodmFsKSA9PiB7XHJcbiAgICBjb25zdCBuID0gcGFyc2VGbG9hdCh2YWwpO1xyXG4gICAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogbjtcclxufTtcclxubGV0IF9nbG9iYWxUaGlzO1xyXG5jb25zdCBnZXRHbG9iYWxUaGlzID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIChfZ2xvYmFsVGhpcyB8fFxyXG4gICAgICAgIChfZ2xvYmFsVGhpcyA9XHJcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgPyBnbG9iYWxUaGlzXHJcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZlxyXG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB3aW5kb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnbG9iYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pKTtcclxufTtcclxuY29uc3QgaWRlbnRSRSA9IC9eW18kYS16QS1aXFx4QTAtXFx1RkZGRl1bXyRhLXpBLVowLTlcXHhBMC1cXHVGRkZGXSokLztcclxuZnVuY3Rpb24gZ2VuUHJvcHNBY2Nlc3NFeHAobmFtZSkge1xyXG4gICAgcmV0dXJuIGlkZW50UkUudGVzdChuYW1lKVxyXG4gICAgICAgID8gYF9fcHJvcHMuJHtuYW1lfWBcclxuICAgICAgICA6IGBfX3Byb3BzWyR7SlNPTi5zdHJpbmdpZnkobmFtZSl9XWA7XHJcbn1cblxuZXhwb3J0IHsgRU1QVFlfQVJSLCBFTVBUWV9PQkosIE5PLCBOT09QLCBQYXRjaEZsYWdOYW1lcywgY2FtZWxpemUsIGNhcGl0YWxpemUsIGRlZiwgZXNjYXBlSHRtbCwgZXNjYXBlSHRtbENvbW1lbnQsIGV4dGVuZCwgZ2VuUHJvcHNBY2Nlc3NFeHAsIGdlbmVyYXRlQ29kZUZyYW1lLCBnZXRHbG9iYWxUaGlzLCBoYXNDaGFuZ2VkLCBoYXNPd24sIGh5cGhlbmF0ZSwgaW5jbHVkZUJvb2xlYW5BdHRyLCBpbnZva2VBcnJheUZucywgaXNBcnJheSwgaXNCb29sZWFuQXR0ciwgaXNCdWlsdEluRGlyZWN0aXZlLCBpc0RhdGUsIGlzRnVuY3Rpb24sIGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCwgaXNIVE1MVGFnLCBpc0ludGVnZXJLZXksIGlzS25vd25IdG1sQXR0ciwgaXNLbm93blN2Z0F0dHIsIGlzTWFwLCBpc01vZGVsTGlzdGVuZXIsIGlzTm9Vbml0TnVtZXJpY1N0eWxlUHJvcCwgaXNPYmplY3QsIGlzT24sIGlzUGxhaW5PYmplY3QsIGlzUHJvbWlzZSwgaXNSZXNlcnZlZFByb3AsIGlzU1NSU2FmZUF0dHJOYW1lLCBpc1NWR1RhZywgaXNTZXQsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpc1N0cmluZywgaXNTeW1ib2wsIGlzVm9pZFRhZywgbG9vc2VFcXVhbCwgbG9vc2VJbmRleE9mLCBtYWtlTWFwLCBub3JtYWxpemVDbGFzcywgbm9ybWFsaXplUHJvcHMsIG5vcm1hbGl6ZVN0eWxlLCBvYmplY3RUb1N0cmluZywgcGFyc2VTdHJpbmdTdHlsZSwgcHJvcHNUb0F0dHJNYXAsIHJlbW92ZSwgc2xvdEZsYWdzVGV4dCwgc3RyaW5naWZ5U3R5bGUsIHRvRGlzcGxheVN0cmluZywgdG9IYW5kbGVyS2V5LCB0b051bWJlciwgdG9SYXdUeXBlLCB0b1R5cGVTdHJpbmcgfTtcbiIsImltcG9ydCB7IHRvUmVmcywgZ2V0Q3VycmVudEluc3RhbmNlLCBjdXN0b21SZWYsIHJlZiwgY29tcHV0ZWQsIHdhdGNoLCBuZXh0VGljaywgb25Nb3VudGVkLCBvbkJlZm9yZVVubW91bnQsIHNoYWxsb3dSZWYsIG9wZW5CbG9jaywgY3JlYXRlRWxlbWVudEJsb2NrLCBub3JtYWxpemVDbGFzcywgY3JlYXRlRWxlbWVudFZOb2RlLCBtZXJnZVByb3BzLCBjcmVhdGVDb21tZW50Vk5vZGUsIHdpdGhNb2RpZmllcnMsIEZyYWdtZW50LCByZW5kZXJMaXN0LCByZW5kZXJTbG90LCB3aXRoS2V5cywgdG9EaXNwbGF5U3RyaW5nLCBjcmVhdGVCbG9jaywgVGVsZXBvcnQgfSBmcm9tICd2dWUnO1xuXG5mdW5jdGlvbiBpc051bGxpc2ggKHZhbCkge1xuICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHVzZURhdGEgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgb2JqZWN0LCB2YWx1ZVByb3AsIG1vZGUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgY29uc3QgJHRoaXMgPSBnZXRDdXJyZW50SW5zdGFuY2UoKS5wcm94eTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGl2ID0gZGVwLml2O1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgdXBkYXRlID0gKHZhbCwgdHJpZ2dlcklucHV0ID0gdHJ1ZSkgPT4ge1xuICAgIC8vIFNldHRpbmcgb2JqZWN0KHMpIGFzIGludGVybmFsIHZhbHVlXG4gICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwodmFsKTtcblxuICAgIC8vIFNldHRpbmcgb2JqZWN0KHMpIG9yIHBsYWluIHZhbHVlIGFzIGV4dGVybmFsIFxuICAgIC8vIHZhbHVlIGJhc2VkIG9uIGBvcHRpb25gIHNldHRpbmdcbiAgICBjb25zdCBleHRlcm5hbFZhbCA9IG1ha2VFeHRlcm5hbCh2YWwpO1xuXG4gICAgY29udGV4dC5lbWl0KCdjaGFuZ2UnLCBleHRlcm5hbFZhbCwgJHRoaXMpO1xuXG4gICAgaWYgKHRyaWdnZXJJbnB1dCkge1xuICAgICAgY29udGV4dC5lbWl0KCdpbnB1dCcsIGV4dGVybmFsVmFsKTtcbiAgICAgIGNvbnRleHQuZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCBleHRlcm5hbFZhbCk7XG4gICAgfVxuICB9OyBcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbWFrZUV4dGVybmFsID0gKHZhbCkgPT4ge1xuICAgIC8vIElmIGV4dGVybmFsIHZhbHVlIHNob3VsZCBiZSBvYmplY3RcbiAgICAvLyBubyB0cmFuc2Zvcm1hdGlvbiBpcyByZXF1aXJlZFxuICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWxcbiAgICB9XG5cbiAgICAvLyBObyBuZWVkIHRvIHRyYW5zZm9ybSBpZiBlbXB0eSB2YWx1ZVxuICAgIGlmIChpc051bGxpc2godmFsKSkge1xuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIC8vIElmIGV4dGVybmFsIHNob3VsZCBiZSBwbGFpbiB0cmFuc2Zvcm1cbiAgICAvLyB2YWx1ZSBvYmplY3QgdG8gcGxhaW4gdmFsdWVzXG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHZhbCkgPyB2YWxbdmFsdWVQcm9wLnZhbHVlXSA6IHZhbC5tYXAodiA9PiB2W3ZhbHVlUHJvcC52YWx1ZV0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG1ha2VJbnRlcm5hbCA9ICh2YWwpID0+IHtcbiAgICBpZiAoaXNOdWxsaXNoKHZhbCkpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IHt9IDogW11cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB1cGRhdGUsXG4gIH1cbn1cblxuLy8gUG9seWZpbGwgZm9yIFZ1ZSA8My4zIGZvciBnZXR0ZXJzIG9ubHlcbi8vIGh0dHBzOi8vdnVlanMub3JnL2FwaS9yZWFjdGl2aXR5LXV0aWxpdGllcy5odG1sI3RvcmVmXG5mdW5jdGlvbiB0b1JlZiAoZ2V0KSB7XG4gICAgcmV0dXJuIGN1c3RvbVJlZigoKSA9PiAoeyBnZXQsIHNldDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gKCkgPT4geyB9IH0pKVxufVxuXG5mdW5jdGlvbiB1c2VWYWx1ZSAocHJvcHMsIGNvbnRleHQpXG57XG4gIGNvbnN0IHsgdmFsdWUsIG1vZGVsVmFsdWUsIG1vZGUsIHZhbHVlUHJvcCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIGludGVybmFsVmFsdWVcbiAgY29uc3QgaXYgPSByZWYobW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgPyBbXSA6IHt9KTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGV4dGVybmFsVmFsdWVcbiAgY29uc3QgZXYgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGVsVmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCA/IG1vZGVsVmFsdWUudmFsdWUgOiB2YWx1ZS52YWx1ZVxuICB9KTtcblxuICBjb25zdCBwbGFpblZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gOiBpdi52YWx1ZS5tYXAodj0+dlt2YWx1ZVByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCB0ZXh0VmFsdWUgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgIT09ICdzaW5nbGUnID8gaXYudmFsdWUubWFwKHY9PnZbdmFsdWVQcm9wLnZhbHVlXSkuam9pbignLCcpIDogaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGl2LFxuICAgIGludGVybmFsVmFsdWU6IGl2LFxuICAgIGV2LFxuICAgIGV4dGVybmFsVmFsdWU6IGV2LFxuICAgIHRleHRWYWx1ZSxcbiAgICBwbGFpblZhbHVlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVNlYXJjaCAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyByZWdleCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgb3BlbiA9IGRlcC5vcGVuO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3Qgc2VhcmNoID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgY2xlYXJTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2VhcmNoLnZhbHVlID0gJyc7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXQgPSAoZSkgPT4ge1xuICAgIHNlYXJjaC52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleXByZXNzID0gKGUpID0+IHtcbiAgICBpZiAocmVnZXgudmFsdWUpIHtcbiAgICAgIGxldCByZWdleHAgPSByZWdleC52YWx1ZTtcblxuICAgICAgaWYgKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlLmtleS5tYXRjaChyZWdleHApKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGFzdGUgPSAoZSkgPT4ge1xuICAgIGlmIChyZWdleC52YWx1ZSkge1xuICAgICAgbGV0IGNsaXBib2FyZERhdGEgPSBlLmNsaXBib2FyZERhdGEgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gd2luZG93LmNsaXBib2FyZERhdGE7XG4gICAgICBsZXQgcGFzdGVkRGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpO1xuXG4gICAgICBsZXQgcmVnZXhwID0gcmVnZXgudmFsdWU7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghcGFzdGVkRGF0YS5zcGxpdCgnJykuZXZlcnkoYyA9PiAhIWMubWF0Y2gocmVnZXhwKSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgncGFzdGUnLCBlLCAkdGhpcyk7XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT0gV0FUQ0hFUlMgPT09PT09PT09PT09PT1cblxuICB3YXRjaChzZWFyY2gsICh2YWwpID0+IHtcbiAgICBpZiAoIWlzT3Blbi52YWx1ZSAmJiB2YWwpIHtcbiAgICAgIG9wZW4oKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ3NlYXJjaC1jaGFuZ2UnLCB2YWwsICR0aGlzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzZWFyY2gsXG4gICAgY2xlYXJTZWFyY2gsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXQsXG4gICAgaGFuZGxlS2V5cHJlc3MsXG4gICAgaGFuZGxlUGFzdGUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUG9pbnRlciQxIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IGdyb3VwU2VsZWN0LCBtb2RlLCBncm91cHMsIGRpc2FibGVkUHJvcCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHBvaW50ZXIgPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBzZXRQb2ludGVyID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24gPT09IHVuZGVmaW5lZCB8fCAob3B0aW9uICE9PSBudWxsICYmIG9wdGlvbltkaXNhYmxlZFByb3AudmFsdWVdKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGdyb3Vwcy52YWx1ZSAmJiBvcHRpb24gJiYgb3B0aW9uLmdyb3VwICYmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJyB8fCAhZ3JvdXBTZWxlY3QudmFsdWUpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBwb2ludGVyLnZhbHVlID0gb3B0aW9uO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFyUG9pbnRlciA9ICgpID0+IHtcbiAgICBzZXRQb2ludGVyKG51bGwpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcG9pbnRlcixcbiAgICBzZXRQb2ludGVyLFxuICAgIGNsZWFyUG9pbnRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemUgKHN0ciwgc3RyaWN0ID0gdHJ1ZSkge1xuICByZXR1cm4gc3RyaWN0XG4gICAgPyBTdHJpbmcoc3RyKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICAgIDogU3RyaW5nKHN0cikudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/Dpi9nLCAnYWUnKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvxZMvZywgJ29lJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL8O4L2csICdvJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xccHtEaWFjcml0aWN9L2d1LCAnJylcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKHZhcmlhYmxlKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFyaWFibGUpID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBhcnJheXNFcXVhbCAoYXJyYXkxLCBhcnJheTIpIHtcbiAgaWYgKGFycmF5MS5sZW5ndGggIT09IGFycmF5Mi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGNvbnN0IGFycmF5MlNvcnRlZCA9IGFycmF5Mi5zbGljZSgpLnNvcnQoKTtcblxuICByZXR1cm4gYXJyYXkxLnNsaWNlKCkuc29ydCgpLmV2ZXJ5KGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBhcnJheTJTb3J0ZWRbaW5kZXhdO1xuICB9KVxufVxuXG5mdW5jdGlvbiB1c2VPcHRpb25zIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IFxuICAgIG9wdGlvbnMsIG1vZGUsIHRyYWNrQnk6IHRyYWNrQnlfLCBsaW1pdCwgaGlkZVNlbGVjdGVkLCBjcmVhdGVUYWcsIGNyZWF0ZU9wdGlvbjogY3JlYXRlT3B0aW9uXywgbGFiZWwsXG4gICAgYXBwZW5kTmV3VGFnLCBhcHBlbmROZXdPcHRpb246IGFwcGVuZE5ld09wdGlvbl8sIG11bHRpcGxlTGFiZWwsIG9iamVjdCwgbG9hZGluZywgZGVsYXksIHJlc29sdmVPbkxvYWQsXG4gICAgbWluQ2hhcnMsIGZpbHRlclJlc3VsdHMsIGNsZWFyT25TZWFyY2gsIGNsZWFyT25TZWxlY3QsIHZhbHVlUHJvcCwgYWxsb3dBYnNlbnQsIGdyb3VwTGFiZWwsXG4gICAgY2FuRGVzZWxlY3QsIG1heCwgc3RyaWN0LCBjbG9zZU9uU2VsZWN0LCBjbG9zZU9uRGVzZWxlY3QsIGdyb3VwczogZ3JvdXBwZWQsIHJldmVyc2UsIGluZmluaXRlLFxuICAgIGdyb3VwT3B0aW9ucywgZ3JvdXBIaWRlRW1wdHksIGdyb3VwU2VsZWN0LCBvbkNyZWF0ZSwgZGlzYWJsZWRQcm9wLCBzZWFyY2hTdGFydCwgc2VhcmNoRmlsdGVyLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGV2ID0gZGVwLmV2O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3QgcG9pbnRlciA9IGRlcC5wb2ludGVyO1xuICBjb25zdCBzZXRQb2ludGVyID0gZGVwLnNldFBvaW50ZXI7XG4gIGNvbnN0IGNsZWFyUG9pbnRlciA9IGRlcC5jbGVhclBvaW50ZXI7XG4gIGNvbnN0IGZvY3VzID0gZGVwLmZvY3VzO1xuICBjb25zdCBkZWFjdGl2YXRlID0gZGVwLmRlYWN0aXZhdGU7XG4gIGNvbnN0IGNsb3NlID0gZGVwLmNsb3NlO1xuICBjb25zdCBsb2NhbGl6ZSA9IGRlcC5sb2NhbGl6ZTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICAvLyBhcHBlbmRlZE9wdGlvbnNcbiAgY29uc3QgYXAgPSByZWYoW10pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICAvLyByZXNvbHZlZE9wdGlvbnNcbiAgY29uc3Qgcm8gPSByZWYoW10pO1xuXG4gIGNvbnN0IHJlc29sdmluZyA9IHJlZihmYWxzZSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHNlYXJjaFdhdGNoZXIgPSByZWYobnVsbCk7XG5cbiAgY29uc3Qgb2Zmc2V0ID0gcmVmKGluZmluaXRlLnZhbHVlICYmIGxpbWl0LnZhbHVlID09PSAtMSA/IDEwIDogbGltaXQudmFsdWUpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgcmVzb2x2ZWRPcHRpb25zID0gY29tcHV0ZWQoe1xuICAgIGdldDogKCkgPT4gcm8udmFsdWUsXG4gICAgc2V0OiAodikgPT4gcm8udmFsdWUgPSB2XG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVPcHRpb24gPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhZy52YWx1ZSB8fCBjcmVhdGVPcHRpb25fLnZhbHVlIHx8IGZhbHNlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmROZXdPcHRpb24gPSB0b1JlZigoKSA9PiB7XG4gICAgaWYgKGFwcGVuZE5ld1RhZy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXBwZW5kTmV3VGFnLnZhbHVlXG4gICAgfSBlbHNlIGlmIChhcHBlbmROZXdPcHRpb25fLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcHBlbmROZXdPcHRpb25fLnZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGV4dGVuZGVkT3B0aW9uc1xuICBjb25zdCBlbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIGxldCBncm91cHMgPSBlZy52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcblxuICAgICAgbGV0IGVvID0gW107XG5cbiAgICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBvcHRpb25zVG9BcnJheShncm91cFtncm91cE9wdGlvbnMudmFsdWVdKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgICAgICBlby5wdXNoKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgZ3JvdXBbZGlzYWJsZWRQcm9wLnZhbHVlXSA/IHsgW2Rpc2FibGVkUHJvcC52YWx1ZV06IHRydWUgfSA6IHt9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBlb1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW8gPSBvcHRpb25zVG9BcnJheShyby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXSk7XG5cbiAgICAgIGlmIChhcC52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgZW8gPSBlby5jb25jYXQoYXAudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW9cbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByZUZpbHRlcmVkT3B0aW9uc1xuICBjb25zdCBwZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IG9wdGlvbnMgPSBlby52YWx1ZTtcblxuICAgIGlmIChyZXZlcnNlLnZhbHVlKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoKSB7XG4gICAgICBvcHRpb25zID0gY3JlYXRlZE9wdGlvbi52YWx1ZS5jb25jYXQob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlck9wdGlvbnMob3B0aW9ucylcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWRPcHRpb25zXG4gIGNvbnN0IGZvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gcGZvLnZhbHVlO1xuXG4gICAgaWYgKG9mZnNldC52YWx1ZSA+IDApIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnNsaWNlKDAsIG9mZnNldC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGV4dGVuZGVkR3JvdXBzXG4gIGNvbnN0IGVnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGxldCBlZyA9IFtdO1xuICAgIGxldCBncm91cHMgPSByby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcblxuICAgIGlmIChhcC52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGVnLnB1c2goe1xuICAgICAgICBbZ3JvdXBMYWJlbC52YWx1ZV06ICcgJyxcbiAgICAgICAgW2dyb3VwT3B0aW9ucy52YWx1ZV06IFsuLi5hcC52YWx1ZV0sXG4gICAgICAgIF9fQ1JFQVRFX186IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBlZy5jb25jYXQoZ3JvdXBzKVxuICB9KTtcblxuICAvLyBwcmVGaWx0ZXJlZEdyb3Vwc1xuICBjb25zdCBwZmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGdyb3VwcyA9IFsuLi5lZy52YWx1ZV0ubWFwKGcgPT4gKHsuLi5nfSkpO1xuXG4gICAgaWYgKGNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoKSB7XG4gICAgICBpZiAoZ3JvdXBzWzBdICYmIGdyb3Vwc1swXS5fX0NSRUFURV9fKSB7XG4gICAgICAgIGdyb3Vwc1swXVtncm91cE9wdGlvbnMudmFsdWVdID0gWy4uLmNyZWF0ZWRPcHRpb24udmFsdWUsIC4uLmdyb3Vwc1swXVtncm91cE9wdGlvbnMudmFsdWVdXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwcyA9IFt7XG4gICAgICAgICAgW2dyb3VwTGFiZWwudmFsdWVdOiAnICcsXG4gICAgICAgICAgW2dyb3VwT3B0aW9ucy52YWx1ZV06IFsuLi5jcmVhdGVkT3B0aW9uLnZhbHVlXSxcbiAgICAgICAgICBfX0NSRUFURV9fOiB0cnVlXG4gICAgICAgIH1dLmNvbmNhdChncm91cHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHNcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWRHcm91cHNcbiAgY29uc3QgZmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFncm91cHBlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgbGV0IG9wdGlvbnMgPSBwZmcudmFsdWU7XG5cbiAgICByZXR1cm4gZmlsdGVyR3JvdXBzKChvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlPcHRpb25zID0gb3B0aW9uc1RvQXJyYXkoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdyb3VwLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgIFtncm91cE9wdGlvbnMudmFsdWVdOiBmaWx0ZXJPcHRpb25zKGFycmF5T3B0aW9ucywgZmFsc2UpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgICBfX1ZJU0lCTEVfXzogZmlsdGVyT3B0aW9ucyhhcnJheU9wdGlvbnMpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgfVxuICAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIF9fVklTSUJMRV9fIGFuZCB7Z3JvdXBPcHRpb25zfTogdmlzaWJsZSBkb2VzIG5vdCBjb250YWluIHNlbGVjdGVkIG9wdGlvbnMgd2hlbiBoaWRlU2VsZWN0ZWQ9dHJ1ZVxuICAgIH0pKVxuICB9KTtcblxuICBjb25zdCBoYXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWUubGVuZ3RoID4gMFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbXVsdGlwbGVMYWJlbFRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG11bHRpcGxlTGFiZWwudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBtdWx0aXBsZUxhYmVsLnZhbHVlKGl2LnZhbHVlLCAkdGhpcylcbiAgICAgIDogKGl2LnZhbHVlICYmIGl2LnZhbHVlLmxlbmd0aCA+IDEgPyBgJHtpdi52YWx1ZS5sZW5ndGh9IG9wdGlvbnMgc2VsZWN0ZWRgIDogYDEgb3B0aW9uIHNlbGVjdGVkYClcbiAgfSk7XG5cbiAgY29uc3Qgbm9PcHRpb25zID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiAhZW8udmFsdWUubGVuZ3RoICYmICFyZXNvbHZpbmcudmFsdWUgJiYgIWNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoXG4gIH0pO1xuXG5cbiAgY29uc3Qgbm9SZXN1bHRzID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBlby52YWx1ZS5sZW5ndGggPiAwICYmIGZvLnZhbHVlLmxlbmd0aCA9PSAwICYmICgoc2VhcmNoLnZhbHVlICYmIGdyb3VwcGVkLnZhbHVlKSB8fCAhZ3JvdXBwZWQudmFsdWUpXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChjcmVhdGVPcHRpb24udmFsdWUgPT09IGZhbHNlIHx8ICFzZWFyY2gudmFsdWUpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGlmIChnZXRPcHRpb25CeVRyYWNrQnkoc2VhcmNoLnZhbHVlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBbe1xuICAgICAgW3ZhbHVlUHJvcC52YWx1ZV06IHNlYXJjaC52YWx1ZSxcbiAgICAgIFt0cmFja0J5LnZhbHVlWzBdXTogc2VhcmNoLnZhbHVlLFxuICAgICAgW2xhYmVsLnZhbHVlXTogc2VhcmNoLnZhbHVlLFxuICAgICAgX19DUkVBVEVfXzogdHJ1ZSxcbiAgICB9XVxuICB9KTtcblxuICBjb25zdCB0cmFja0J5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0cmFja0J5Xy52YWx1ZSA/IChBcnJheS5pc0FycmF5KHRyYWNrQnlfLnZhbHVlKSA/IHRyYWNrQnlfLnZhbHVlIDogW3RyYWNrQnlfLnZhbHVlXSkgOiBbbGFiZWwudmFsdWVdXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBudWxsVmFsdWUgPSB0b1JlZigoKSA9PiB7XG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICByZXR1cm4gbnVsbFxuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBidXN5ID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBsb2FkaW5nLnZhbHVlIHx8IHJlc29sdmluZy52YWx1ZVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FycmF5fG9iamVjdHxzdHJpbmd8bnVtYmVyfSBvcHRpb24gXG4gICAqL1xuICBjb25zdCBzZWxlY3QgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb24gPSBnZXRPcHRpb24ob3B0aW9uKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHVwZGF0ZShvcHRpb24pO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgdXBkYXRlKChpdi52YWx1ZSkuY29uY2F0KG9wdGlvbikpO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnc2VsZWN0JywgZmluYWxWYWx1ZShvcHRpb24pLCBvcHRpb24sICR0aGlzKTtcbiAgfTtcblxuICBjb25zdCBkZXNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbiA9IGdldE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIHVwZGF0ZShBcnJheS5pc0FycmF5KG9wdGlvbilcbiAgICAgICAgICA/IGl2LnZhbHVlLmZpbHRlcih2ID0+IG9wdGlvbi5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yodlt2YWx1ZVByb3AudmFsdWVdKSA9PT0gLTEpXG4gICAgICAgICAgOiBpdi52YWx1ZS5maWx0ZXIodiA9PiB2W3ZhbHVlUHJvcC52YWx1ZV0gIT0gb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ2Rlc2VsZWN0JywgZmluYWxWYWx1ZShvcHRpb24pLCBvcHRpb24sICR0aGlzKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZmluYWxWYWx1ZSA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gb2JqZWN0LnZhbHVlID8gb3B0aW9uIDogb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV1cbiAgfTtcblxuICBjb25zdCByZW1vdmUgPSAob3B0aW9uKSA9PiB7XG4gICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWdSZW1vdmUgPSAob3B0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUuYnV0dG9uICE9PSAwKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZW1vdmUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICB1cGRhdGUobnVsbFZhbHVlLnZhbHVlKTtcbiAgICBjb250ZXh0LmVtaXQoJ2NsZWFyJywgJHRoaXMpO1xuICB9O1xuXG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbi5ncm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyBmYWxzZSA6IGFyZUFsbFNlbGVjdGVkKG9wdGlvbltncm91cE9wdGlvbnMudmFsdWVdKSAmJiBvcHRpb25bZ3JvdXBPcHRpb25zLnZhbHVlXS5sZW5ndGhcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdID09IG9wdGlvblt2YWx1ZVByb3AudmFsdWVdXG5cbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSAhPT0gLTFcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaXNEaXNhYmxlZCA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gb3B0aW9uW2Rpc2FibGVkUHJvcC52YWx1ZV0gPT09IHRydWVcbiAgfTtcblxuICBjb25zdCBpc01heCA9ICgpID0+IHtcbiAgICBpZiAobWF4ID09PSB1bmRlZmluZWQgfHwgbWF4LnZhbHVlID09PSAtMSB8fCAoIWhhc1NlbGVjdGVkLnZhbHVlICYmIG1heC52YWx1ZSA+IDApKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGl2LnZhbHVlLmxlbmd0aCA+PSBtYXgudmFsdWVcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IChvcHRpb24pID0+IHtcbiAgICBpZiAoaXNEaXNhYmxlZChvcHRpb24pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAob25DcmVhdGUudmFsdWUgJiYgIWlzU2VsZWN0ZWQob3B0aW9uKSAmJiBvcHRpb24uX19DUkVBVEVfXykge1xuICAgICAgb3B0aW9uID0geyAuLi5vcHRpb24gfTtcbiAgICAgIGRlbGV0ZSBvcHRpb24uX19DUkVBVEVfXztcblxuICAgICAgb3B0aW9uID0gb25DcmVhdGUudmFsdWUob3B0aW9uLCAkdGhpcyk7XG4gICAgICBcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJlc29sdmluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgIG9wdGlvbi50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICBoYW5kbGVPcHRpb25TZWxlY3QocmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9IFxuICAgIH1cblxuICAgIGhhbmRsZU9wdGlvblNlbGVjdChvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvblNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uLl9fQ1JFQVRFX18pIHtcbiAgICAgIG9wdGlvbiA9IHsgLi4ub3B0aW9uIH07XG4gICAgICBkZWxldGUgb3B0aW9uLl9fQ1JFQVRFX187XG4gICAgfVxuICAgIFxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBpZiAoY2FuRGVzZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGRlc2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNsb3NlT25EZXNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBoYW5kbGVPcHRpb25BcHBlbmQob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChjbGVhck9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcblxuICAgICAgICAgIGlmIChjbG9zZU9uRGVzZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNYXgoKSkge1xuICAgICAgICAgIGNvbnRleHQuZW1pdCgnbWF4JywgJHRoaXMpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICBpZiAob3B0aW9uICYmIGlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIGRlc2VsZWN0KG9wdGlvbik7XG5cbiAgICAgICAgICBpZiAoY2xvc2VPbkRlc2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTWF4KCkpIHtcbiAgICAgICAgICBjb250ZXh0LmVtaXQoJ21heCcsICR0aGlzKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBoYW5kbGVPcHRpb25BcHBlbmQob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGVhck9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGlmICghY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlR3JvdXBDbGljayA9IChncm91cCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKGdyb3VwKSB8fCBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyB8fCAhZ3JvdXBTZWxlY3QudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmIChhcmVBbGxFbmFibGVkU2VsZWN0ZWQoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXSkpIHtcbiAgICAgICAgICBkZXNlbGVjdChncm91cFtncm91cE9wdGlvbnMudmFsdWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxlY3QoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXVxuICAgICAgICAgICAgLmZpbHRlcihvID0+IGl2LnZhbHVlLm1hcCh2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihvW3ZhbHVlUHJvcC52YWx1ZV0pID09PSAtMSlcbiAgICAgICAgICAgIC5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICAgICAgICAgICAgLmZpbHRlcigobywgaykgPT4gaXYudmFsdWUubGVuZ3RoICsgMSArIGsgPD0gbWF4LnZhbHVlIHx8IG1heC52YWx1ZSA9PT0gLTEpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUgJiYgcG9pbnRlci52YWx1ZSkge1xuICAgICAgICAgIC8vIFJlZnJlc2ggcG9pbnRlciBiZWNhdXNlIHBvaW50ZXIuX19WSVNJQkxFX18gYXJlIG5vdCByZWFjdGl2ZSAjMzU0XG4gICAgICAgICAgc2V0UG9pbnRlcihmZy52YWx1ZS5maWx0ZXIoZyA9PiAhZ1tkaXNhYmxlZFByb3AudmFsdWVdKVtwb2ludGVyLnZhbHVlLmluZGV4XSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcHRpb25BcHBlbmQgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKGdldE9wdGlvbihvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgPT09IHVuZGVmaW5lZCAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgIGNvbnRleHQuZW1pdCgndGFnJywgb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0sICR0aGlzKTtcbiAgICAgIGNvbnRleHQuZW1pdCgnb3B0aW9uJywgb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0sICR0aGlzKTtcbiAgICAgIGNvbnRleHQuZW1pdCgnY3JlYXRlJywgb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0sICR0aGlzKTtcblxuICAgICAgaWYgKGFwcGVuZE5ld09wdGlvbi52YWx1ZSkge1xuICAgICAgICBhcHBlbmRPcHRpb24ob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2VsZWN0KGZvLnZhbHVlLmZpbHRlcihvID0+ICFvLmRpc2FibGVkICYmICFpc1NlbGVjdGVkKG8pKSk7XG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFyZUFsbEVuYWJsZWRTZWxlY3RlZCA9IChvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZmluZChvID0+ICFpc1NlbGVjdGVkKG8pICYmICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pID09PSB1bmRlZmluZWRcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYXJlQWxsU2VsZWN0ZWQgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiAhaXNTZWxlY3RlZChvKSkgPT09IHVuZGVmaW5lZFxuICB9O1xuXG4gIGNvbnN0IGdldE9wdGlvbiA9ICh2YWwpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWVbZW8udmFsdWUubWFwKG8gPT4gU3RyaW5nKG9bdmFsdWVQcm9wLnZhbHVlXSkpLmluZGV4T2YoU3RyaW5nKHZhbCkpXVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBnZXRPcHRpb25CeVRyYWNrQnkgPSAodmFsKSA9PiB7XG4gICAgcmV0dXJuIGVvLnZhbHVlLmZpbmRJbmRleCgobykgPT4ge1xuICAgICAgcmV0dXJuIHRyYWNrQnkudmFsdWUuc29tZSgodHJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIChwYXJzZUludChvW3RyYWNrXSkgPT0gb1t0cmFja10gPyBwYXJzZUludChvW3RyYWNrXSkgOiBvW3RyYWNrXSkgPT09IChwYXJzZUludCh2YWwpID09IHZhbCA/IHBhcnNlSW50KHZhbCkgOiB2YWwpXG4gICAgICB9KVxuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHNob3VsZEhpZGVPcHRpb24gPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIFsndGFncycsICdtdWx0aXBsZSddLmluZGV4T2YobW9kZS52YWx1ZSkgIT09IC0xICYmIGhpZGVTZWxlY3RlZC52YWx1ZSAmJiBpc1NlbGVjdGVkKG9wdGlvbilcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYXBwZW5kT3B0aW9uID0gKG9wdGlvbikgPT4ge1xuICAgIGFwLnZhbHVlLnB1c2gob3B0aW9uKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZmlsdGVyR3JvdXBzID0gKGdyb3VwcykgPT4ge1xuICAgIC8vIElmIHRoZSBzZWFyY2ggaGFzIHZhbHVlIHdlIG5lZWQgdG8gZmlsdGVyIGFtb25nIFxuICAgIC8vIHRoZSBvbmVzIHRoYXQgYXJlIHZpc2libGUgdG8gdGhlIHVzZXIgdG8gYXZvaWRcbiAgICAvLyBkaXNwbGF5aW5nIGdyb3VwcyB3aGljaCB0ZWNobmljYWxseSBoYXZlIG9wdGlvbnNcbiAgICAvLyBiYXNlZCBvbiBzZWFyY2ggYnV0IHRoYXQgb3B0aW9uIGlzIGFscmVhZHkgc2VsZWN0ZWQuXG4gICAgcmV0dXJuIGdyb3VwSGlkZUVtcHR5LnZhbHVlXG4gICAgICA/IGdyb3Vwcy5maWx0ZXIoZyA9PiBzZWFyY2gudmFsdWVcbiAgICAgICAgICA/IGcuX19WSVNJQkxFX18ubGVuZ3RoXG4gICAgICAgICAgOiBnW2dyb3VwT3B0aW9ucy52YWx1ZV0ubGVuZ3RoXG4gICAgICAgIClcbiAgICAgIDogZ3JvdXBzLmZpbHRlcihnID0+IHNlYXJjaC52YWx1ZSA/IGcuX19WSVNJQkxFX18ubGVuZ3RoIDogdHJ1ZSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9IChvcHRpb25zLCBleGNsdWRlSGlkZVNlbGVjdGVkID0gdHJ1ZSkgPT4ge1xuICAgIGxldCBmbyA9IG9wdGlvbnM7XG4gICAgXG4gICAgaWYgKHNlYXJjaC52YWx1ZSAmJiBmaWx0ZXJSZXN1bHRzLnZhbHVlKSB7XG4gICAgICBsZXQgZmlsdGVyID0gc2VhcmNoRmlsdGVyLnZhbHVlO1xuXG4gICAgICBpZiAoIWZpbHRlcikge1xuICAgICAgICBmaWx0ZXIgPSAob3B0aW9uLCBxdWVyeSwgJHRoaXMpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJhY2tCeS52YWx1ZS5zb21lKHRyYWNrID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSBub3JtYWxpemUobG9jYWxpemUob3B0aW9uW3RyYWNrXSksIHN0cmljdC52YWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBzZWFyY2hTdGFydC52YWx1ZVxuICAgICAgICAgICAgICAgID8gdGFyZ2V0LnN0YXJ0c1dpdGgobm9ybWFsaXplKHF1ZXJ5LCBzdHJpY3QudmFsdWUpKVxuICAgICAgICAgICAgICAgIDogdGFyZ2V0LmluZGV4T2Yobm9ybWFsaXplKHF1ZXJ5LCBzdHJpY3QudmFsdWUpKSAhPT0gLTE7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgZm8gPSBmby5maWx0ZXIoKG8pID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcihvLCBzZWFyY2gudmFsdWUsICR0aGlzKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSAmJiBleGNsdWRlSGlkZVNlbGVjdGVkKSB7XG4gICAgICBmbyA9IGZvLmZpbHRlcigob3B0aW9uKSA9PiAhc2hvdWxkSGlkZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb3B0aW9uc1RvQXJyYXkgPSAob3B0aW9ucykgPT4ge1xuICAgIGxldCB1byA9IG9wdGlvbnM7XG4gICAgXG4gICAgLy8gVHJhbnNmb3JtaW5nIGFuIG9iamVjdCB0byBhbiBhcnJheSBvZiBvYmplY3RzXG4gICAgaWYgKGlzT2JqZWN0KHVvKSkge1xuICAgICAgdW8gPSBPYmplY3Qua2V5cyh1bykubWFwKChrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbCA9IHVvW2tleV07XG5cbiAgICAgICAgcmV0dXJuIHsgW3ZhbHVlUHJvcC52YWx1ZV06IGtleSwgW3RyYWNrQnkudmFsdWVbMF1dOiB2YWwsIFtsYWJlbC52YWx1ZV06IHZhbH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybWluZyBhbiBwbGFpbiBhcnJheXMgdG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgIHVvID0gdW8ubWFwKCh2YWwpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyA/IHZhbCA6IHsgW3ZhbHVlUHJvcC52YWx1ZV06IHZhbCwgW3RyYWNrQnkudmFsdWVbMF1dOiB2YWwsIFtsYWJlbC52YWx1ZV06IHZhbH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1b1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBpbml0SW50ZXJuYWxWYWx1ZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzTnVsbGlzaChldi52YWx1ZSkpIHtcbiAgICAgIGl2LnZhbHVlID0gbWFrZUludGVybmFsKGV2LnZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZU9wdGlvbnMgPSAoY2FsbGJhY2spID0+IHtcbiAgICByZXNvbHZpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG9wdGlvbnMudmFsdWUoc2VhcmNoLnZhbHVlLCAkdGhpcykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcm8udmFsdWUgPSByZXNwb25zZSB8fCBbXTtcblxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG5cbiAgICAgICAgcm8udmFsdWUgPSBbXTtcblxuICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCByZWZyZXNoTGFiZWxzID0gKCkgPT4ge1xuICAgIGlmICghaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJykge1xuICAgICAgbGV0IG9wdGlvbiA9IGdldE9wdGlvbihpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChvcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgbmV3TGFiZWwgPSBvcHRpb25bbGFiZWwudmFsdWVdO1xuXG4gICAgICAgIGl2LnZhbHVlW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuXG4gICAgICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgICAgICBldi52YWx1ZVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdi52YWx1ZS5mb3JFYWNoKCh2YWwsIGkpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IGdldE9wdGlvbihpdi52YWx1ZVtpXVt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAob3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZXQgbmV3TGFiZWwgPSBvcHRpb25bbGFiZWwudmFsdWVdO1xuXG4gICAgICAgICAgaXYudmFsdWVbaV1bbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBldi52YWx1ZVtpXVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZWZyZXNoT3B0aW9ucyA9IChjYWxsYmFjaykgPT4ge1xuICAgIHJlc29sdmVPcHRpb25zKGNhbGxiYWNrKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbWFrZUludGVybmFsID0gKHZhbCkgPT4ge1xuICAgIGlmIChpc051bGxpc2godmFsKSkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8ge30gOiBbXVxuICAgIH1cblxuICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWxcbiAgICB9XG5cbiAgICAvLyBJZiBleHRlcm5hbCBzaG91bGQgYmUgcGxhaW4gdHJhbnNmb3JtIHZhbHVlIG9iamVjdCB0byBwbGFpbiB2YWx1ZXNcbiAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyBnZXRPcHRpb24odmFsKSB8fCAoYWxsb3dBYnNlbnQudmFsdWUgPyB7XG4gICAgICBbbGFiZWwudmFsdWVdOiB2YWwsXG4gICAgICBbdmFsdWVQcm9wLnZhbHVlXTogdmFsLFxuICAgICAgW3RyYWNrQnkudmFsdWVbMF1dOiB2YWwsXG4gICAgfSA6IHt9KSA6IHZhbC5maWx0ZXIodiA9PiAhIWdldE9wdGlvbih2KSB8fCBhbGxvd0Fic2VudC52YWx1ZSkubWFwKHYgPT4gZ2V0T3B0aW9uKHYpIHx8IHtcbiAgICAgIFtsYWJlbC52YWx1ZV06IHYsXG4gICAgICBbdmFsdWVQcm9wLnZhbHVlXTogdixcbiAgICAgIFt0cmFja0J5LnZhbHVlWzBdXTogdixcbiAgICB9KVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBpbml0U2VhcmNoV2F0Y2hlciA9ICgpID0+IHtcbiAgICBzZWFyY2hXYXRjaGVyLnZhbHVlID0gd2F0Y2goc2VhcmNoLCAocXVlcnkpID0+IHtcbiAgICAgIGlmIChxdWVyeS5sZW5ndGggPCBtaW5DaGFycy52YWx1ZSB8fCAoIXF1ZXJ5ICYmIG1pbkNoYXJzLnZhbHVlICE9PSAwKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgaWYgKGNsZWFyT25TZWFyY2gudmFsdWUpIHtcbiAgICAgICAgcm8udmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAocXVlcnkgIT0gc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLnZhbHVlKHNlYXJjaC52YWx1ZSwgJHRoaXMpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHF1ZXJ5ID09IHNlYXJjaC52YWx1ZSB8fCAhc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgICByby52YWx1ZSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgcG9pbnRlci52YWx1ZSA9IGZvLnZhbHVlLmZpbHRlcihvID0+IG9bZGlzYWJsZWRQcm9wLnZhbHVlXSAhPT0gdHJ1ZSlbMF0gfHwgbnVsbDtcbiAgICAgICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIChlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkZWxheS52YWx1ZSk7XG5cbiAgICB9LCB7IGZsdXNoOiAnc3luYycgfSk7XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBIT09LUyA9PT09PT09PT09PT09PT1cblxuICBpZiAobW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgJiYgIWlzTnVsbGlzaChldi52YWx1ZSkgJiYgIUFycmF5LmlzQXJyYXkoZXYudmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB2LW1vZGVsIG11c3QgYmUgYW4gYXJyYXkgd2hlbiB1c2luZyBcIiR7bW9kZS52YWx1ZX1cIiBtb2RlYClcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLnZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocmVzb2x2ZU9uTG9hZC52YWx1ZSkge1xuICAgICAgcmVzb2x2ZU9wdGlvbnMoaW5pdEludGVybmFsVmFsdWUpO1xuICAgIH0gZWxzZSBpZiAob2JqZWN0LnZhbHVlID09IHRydWUpIHtcbiAgICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHJvLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcblxuICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gIH1cbiAgXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgaWYgKGRlbGF5LnZhbHVlID4gLTEpIHtcbiAgICBpbml0U2VhcmNoV2F0Y2hlcigpO1xuICB9XG5cbiAgd2F0Y2goZGVsYXksICh2YWx1ZSwgb2xkKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2VhcmNoV2F0Y2hlci52YWx1ZSkge1xuICAgICAgc2VhcmNoV2F0Y2hlci52YWx1ZSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA+PSAwKSB7XG4gICAgICBpbml0U2VhcmNoV2F0Y2hlcigpO1xuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2goZXYsIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmIChpc051bGxpc2gobmV3VmFsdWUpKSB7XG4gICAgICB1cGRhdGUobWFrZUludGVybmFsKG5ld1ZhbHVlKSwgZmFsc2UpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBpZiAob2JqZWN0LnZhbHVlID8gbmV3VmFsdWVbdmFsdWVQcm9wLnZhbHVlXSAhPSBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdIDogbmV3VmFsdWUgIT0gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkge1xuICAgICAgICAgIHVwZGF0ZShtYWtlSW50ZXJuYWwobmV3VmFsdWUpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmICghYXJyYXlzRXF1YWwob2JqZWN0LnZhbHVlID8gbmV3VmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKSA6IG5ld1ZhbHVlLCBpdi52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pKSkge1xuICAgICAgICAgIHVwZGF0ZShtYWtlSW50ZXJuYWwobmV3VmFsdWUpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSB9KTtcblxuICB3YXRjaChvcHRpb25zLCAobiwgbykgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKHJlc29sdmVPbkxvYWQudmFsdWUgJiYgKCFvIHx8IChuICYmIG4udG9TdHJpbmcoKSAhPT0gby50b1N0cmluZygpKSkpIHtcbiAgICAgICAgcmVzb2x2ZU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcm8udmFsdWUgPSBwcm9wcy5vcHRpb25zO1xuXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKGl2LnZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgaW5pdEludGVybmFsVmFsdWUoKTtcbiAgICAgIH1cblxuICAgICAgcmVmcmVzaExhYmVscygpO1xuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2gobGFiZWwsIHJlZnJlc2hMYWJlbHMpO1xuXG4gIHdhdGNoKGxpbWl0LCAobixvKSA9PiB7XG4gICAgb2Zmc2V0LnZhbHVlID0gaW5maW5pdGUudmFsdWUgJiYgbiA9PT0gLTEgPyAxMCA6IG47XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZWRPcHRpb25zLFxuICAgIHBmbyxcbiAgICBmbyxcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IGZvLFxuICAgIGhhc1NlbGVjdGVkLFxuICAgIG11bHRpcGxlTGFiZWxUZXh0LFxuICAgIGVvLFxuICAgIGV4dGVuZGVkT3B0aW9uczogZW8sXG4gICAgZWcsXG4gICAgZXh0ZW5kZWRHcm91cHM6IGVnLFxuICAgIGZnLFxuICAgIGZpbHRlcmVkR3JvdXBzOiBmZyxcbiAgICBub09wdGlvbnMsXG4gICAgbm9SZXN1bHRzLFxuICAgIHJlc29sdmluZyxcbiAgICBidXN5LFxuICAgIG9mZnNldCxcbiAgICBzZWxlY3QsXG4gICAgZGVzZWxlY3QsXG4gICAgcmVtb3ZlLFxuICAgIHNlbGVjdEFsbCxcbiAgICBjbGVhcixcbiAgICBpc1NlbGVjdGVkLFxuICAgIGlzRGlzYWJsZWQsXG4gICAgaXNNYXgsXG4gICAgZ2V0T3B0aW9uLFxuICAgIGhhbmRsZU9wdGlvbkNsaWNrLFxuICAgIGhhbmRsZUdyb3VwQ2xpY2ssXG4gICAgaGFuZGxlVGFnUmVtb3ZlLFxuICAgIHJlZnJlc2hPcHRpb25zLFxuICAgIHJlc29sdmVPcHRpb25zLFxuICAgIHJlZnJlc2hMYWJlbHMsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUG9pbnRlciAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIHZhbHVlUHJvcCwgc2hvd09wdGlvbnMsIHNlYXJjaGFibGUsIGdyb3VwTGFiZWwsXG4gICAgZ3JvdXBzOiBncm91cHBlZCwgbW9kZSwgZ3JvdXBTZWxlY3QsIGRpc2FibGVkUHJvcCxcbiAgICBncm91cE9wdGlvbnMsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgZm8gPSBkZXAuZm87XG4gIGNvbnN0IGZnID0gZGVwLmZnO1xuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IGRlcC5oYW5kbGVPcHRpb25DbGljaztcbiAgY29uc3QgaGFuZGxlR3JvdXBDbGljayA9IGRlcC5oYW5kbGVHcm91cENsaWNrO1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBwb2ludGVyID0gZGVwLnBvaW50ZXI7XG4gIGNvbnN0IHNldFBvaW50ZXIgPSBkZXAuc2V0UG9pbnRlcjtcbiAgY29uc3QgY2xlYXJQb2ludGVyID0gZGVwLmNsZWFyUG9pbnRlcjtcbiAgY29uc3QgbXVsdGlzZWxlY3QgPSBkZXAubXVsdGlzZWxlY3Q7XG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZm8udmFsdWUuZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlcbiAgfSk7XG5cbiAgY29uc3QgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBmZy52YWx1ZS5maWx0ZXIoZyA9PiAhZ1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCBjYW5Qb2ludEdyb3VwcyA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgJiYgZ3JvdXBTZWxlY3QudmFsdWVcbiAgfSk7XG5cbiAgY29uc3QgaXNQb2ludGVyR3JvdXAgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50ZXIudmFsdWUgJiYgcG9pbnRlci52YWx1ZS5ncm91cFxuICB9KTtcblxuICBjb25zdCBjdXJyZW50R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBncm91cCA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcG9pbnRlci52YWx1ZSA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpO1xuICAgIGNvbnN0IGdyb3VwSW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZ1tncm91cExhYmVsLnZhbHVlXSkuaW5kZXhPZihncm91cFtncm91cExhYmVsLnZhbHVlXSk7XG4gICAgbGV0IHByZXZHcm91cCA9IGdyb3Vwcy52YWx1ZVtncm91cEluZGV4IC0gMV07XG5cbiAgICBpZiAocHJldkdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZXZHcm91cCA9IGxhc3RHcm91cC52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldkdyb3VwXG4gIH0pO1xuICBcbiAgY29uc3QgbmV4dEdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBuZXh0SW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZy5sYWJlbCkuaW5kZXhPZihpc1BvaW50ZXJHcm91cC52YWx1ZVxuICAgICAgPyBwb2ludGVyLnZhbHVlW2dyb3VwTGFiZWwudmFsdWVdXG4gICAgICA6IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpW2dyb3VwTGFiZWwudmFsdWVdKSArIDE7XG5cbiAgICBpZiAoZ3JvdXBzLnZhbHVlLmxlbmd0aCA8PSBuZXh0SW5kZXgpIHtcbiAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3Vwcy52YWx1ZVtuZXh0SW5kZXhdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLmdyb3Vwcy52YWx1ZV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwRmlyc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBwb2ludGVyLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGN1cnJlbnRHcm91cFByZXZFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjdXJyZW50R3JvdXAudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSk7XG4gICAgcmV0dXJuIG9wdGlvbnNbb3B0aW9ucy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDFdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwTmV4dEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pO1xuICAgIHJldHVybiBvcHRpb25zW29wdGlvbnMubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgKyAxXVxuICB9KTtcblxuICBjb25zdCBwcmV2R3JvdXBMYXN0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnByZXZHcm91cC52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cExhc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbLi4ubGFzdEdyb3VwLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXS5zbGljZSgtMSlbMF1cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBpc1BvaW50ZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuICghIXBvaW50ZXIudmFsdWUgJiYgKFxuICAgICAgKCFvcHRpb24uZ3JvdXAgJiYgcG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdID09PSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgfHxcbiAgICAgIChvcHRpb24uZ3JvdXAgIT09IHVuZGVmaW5lZCAmJiBwb2ludGVyLnZhbHVlW2dyb3VwTGFiZWwudmFsdWVdID09PSBvcHRpb25bZ3JvdXBMYWJlbC52YWx1ZV0pXG4gICAgKSkgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3Qgc2V0UG9pbnRlckZpcnN0ID0gKCkgPT4ge1xuICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVswXSB8fCBudWxsKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmICghcG9pbnRlci52YWx1ZSB8fCBwb2ludGVyLnZhbHVlW2Rpc2FibGVkUHJvcC52YWx1ZV0gPT09IHRydWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc1BvaW50ZXJHcm91cC52YWx1ZSkge1xuICAgICAgaGFuZGxlR3JvdXBDbGljayhwb2ludGVyLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlT3B0aW9uQ2xpY2socG9pbnRlci52YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZvcndhcmRQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRQb2ludGVyKChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSA/ICghZ3JvdXBzLnZhbHVlWzBdLl9fQ1JFQVRFX18gPyBncm91cHMudmFsdWVbMF0gOiBvcHRpb25zLnZhbHVlWzBdKSA6IG9wdGlvbnMudmFsdWVbMF0pIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgbGV0IG5leHRQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBjdXJyZW50R3JvdXBGaXJzdEVuYWJsZWRPcHRpb24udmFsdWUgOiBjdXJyZW50R3JvdXBOZXh0RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgaWYgKG5leHRQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV4dFBvaW50ZXIgPSBuZXh0R3JvdXAudmFsdWU7XG5cbiAgICAgICAgaWYgKG5leHRQb2ludGVyLl9fQ1JFQVRFX18pIHtcbiAgICAgICAgICBuZXh0UG9pbnRlciA9IG5leHRQb2ludGVyW2dyb3VwT3B0aW9ucy52YWx1ZV1bMF07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihuZXh0UG9pbnRlciB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG5leHQgPSBvcHRpb25zLnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pICsgMTtcblxuICAgICAgaWYgKG9wdGlvbnMudmFsdWUubGVuZ3RoIDw9IG5leHQpIHtcbiAgICAgICAgbmV4dCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVtuZXh0XSB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBhZGp1c3RXcmFwcGVyU2Nyb2xsVG9Qb2ludGVyKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYmFja3dhcmRQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBsZXQgcHJldlBvaW50ZXIgPSBvcHRpb25zLnZhbHVlW29wdGlvbnMudmFsdWUubGVuZ3RoIC0gMV07XG5cbiAgICAgIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgICBwcmV2UG9pbnRlciA9IGxhc3RHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAgIGlmIChwcmV2UG9pbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJldlBvaW50ZXIgPSBsYXN0R3JvdXAudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihwcmV2UG9pbnRlciAgfHwgbnVsbCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICBsZXQgcHJldlBvaW50ZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IHByZXZHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlIDogY3VycmVudEdyb3VwUHJldkVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgIGlmIChwcmV2UG9pbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByZXZQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBwcmV2R3JvdXAudmFsdWUgOiBjdXJyZW50R3JvdXAudmFsdWU7XG5cbiAgICAgICAgaWYgKHByZXZQb2ludGVyLl9fQ1JFQVRFX18pIHtcbiAgICAgICAgICBwcmV2UG9pbnRlciA9IHByZXZHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByZXZQb2ludGVyID0gcHJldkdyb3VwLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKHByZXZQb2ludGVyIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcHJldkluZGV4ID0gb3B0aW9ucy52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDE7XG5cbiAgICAgIGlmIChwcmV2SW5kZXggPCAwKSB7XG4gICAgICAgIHByZXZJbmRleCA9IG9wdGlvbnMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlW3ByZXZJbmRleF0gfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgYWRqdXN0V3JhcHBlclNjcm9sbFRvUG9pbnRlcigpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhcmVudEdyb3VwID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBncm91cHMudmFsdWUuZmluZCgoZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiBncm91cC5fX1ZJU0lCTEVfXy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pICE9PSAtMVxuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIgPSAoKSA9PiB7XG4gICAgbGV0IHBvaW50ZWRPcHRpb24gPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb2ludGVkXWApO1xuXG4gICAgaWYgKCFwb2ludGVkT3B0aW9uKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgd3JhcHBlciA9IHBvaW50ZWRPcHRpb24ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgaWYgKGdyb3VwcGVkLnZhbHVlKSB7XG4gICAgICB3cmFwcGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWVcbiAgICAgICAgPyBwb2ludGVkT3B0aW9uLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50XG4gICAgICAgIDogcG9pbnRlZE9wdGlvbi5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0ID4gd3JhcHBlci5jbGllbnRIZWlnaHQgKyB3cmFwcGVyLnNjcm9sbFRvcCkge1xuICAgICAgd3JhcHBlci5zY3JvbGxUb3AgPSBwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0IC0gd3JhcHBlci5jbGllbnRIZWlnaHQ7XG4gICAgfVxuICAgIFxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCA8IHdyYXBwZXIuc2Nyb2xsVG9wKSB7XG4gICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKHNlYXJjaCwgKHZhbCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpZiAodmFsLmxlbmd0aCAmJiBzaG93T3B0aW9ucy52YWx1ZSkge1xuICAgICAgICBzZXRQb2ludGVyRmlyc3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2goaXNPcGVuLCAodmFsKSA9PiB7XG4gICAgaWYgKHZhbCAmJiBtdWx0aXNlbGVjdD8udmFsdWUpIHtcbiAgICAgIGxldCBmaXJzdFNlbGVjdGVkID0gbXVsdGlzZWxlY3QudmFsdWUucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtc2VsZWN0ZWRdYClbMF07XG5cbiAgICAgIGlmICghZmlyc3RTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IHdyYXBwZXIgPSBmaXJzdFNlbGVjdGVkLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgIFxuICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAvLyBSZW1vdmVkIGJlY2F1c2Ugb2YgIzQwNlxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAvLyBpZiAod3JhcHBlci5zY3JvbGxUb3AgPiAwKSB7XG4gICAgICAgIC8vICAgcmV0dXJuXG4gICAgICAgIC8vIH1cblxuICAgICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IGZpcnN0U2VsZWN0ZWQub2Zmc2V0VG9wO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHBvaW50ZXIsXG4gICAgY2FuUG9pbnRHcm91cHMsXG4gICAgaXNQb2ludGVkLFxuICAgIHNldFBvaW50ZXJGaXJzdCxcbiAgICBzZWxlY3RQb2ludGVyLFxuICAgIGZvcndhcmRQb2ludGVyLFxuICAgIGJhY2t3YXJkUG9pbnRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIGlmIChub2RlLnRvU3RyaW5nKCkgIT09ICdbb2JqZWN0IFdpbmRvd10nKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgcmV0dXJuIG93bmVyRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdyA6IHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcblxuZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcyAmJiBBcnJheS5pc0FycmF5KHVhRGF0YS5icmFuZHMpKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufVxuXG5mdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRTY3JvbGwoZWxlbWVudCkge1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudCA/IChlbGVtZW50Lm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50U2NhbGVkKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gcm91bmQocmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDE7XG4gIHZhciBzY2FsZVkgPSByb3VuZChyZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxO1xuICByZXR1cm4gc2NhbGVYICE9PSAxIHx8IHNjYWxlWSAhPT0gMTtcbn0gLy8gUmV0dXJucyB0aGUgY29tcG9zaXRlIHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LlxuLy8gQ29tcG9zaXRlIG1lYW5zIGl0IHRha2VzIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zIGFzIHdlbGwgYXMgbGF5b3V0LlxuXG5cbmZ1bmN0aW9uIGdldENvbXBvc2l0ZVJlY3QoZWxlbWVudE9yVmlydHVhbEVsZW1lbnQsIG9mZnNldFBhcmVudCwgaXNGaXhlZCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50SXNTY2FsZWQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNFbGVtZW50U2NhbGVkKG9mZnNldFBhcmVudCk7XG4gIHZhciBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudE9yVmlydHVhbEVsZW1lbnQsIG9mZnNldFBhcmVudElzU2NhbGVkLCBpc0ZpeGVkKTtcbiAgdmFyIHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICB2YXIgb2Zmc2V0cyA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEwNzhcbiAgICBpc1Njcm9sbFBhcmVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgb2Zmc2V0cyA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUpO1xuICAgICAgb2Zmc2V0cy54ICs9IG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ICs9IG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KG5vZGUpIHtcbiAgaWYgKFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUobm9kZSkpID49IDApIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgaWYgKGlzSFRNTEVsZW1lbnQobm9kZSkgJiYgaXNTY3JvbGxQYXJlbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShub2RlKSk7XG59XG5cbi8qXG5naXZlbiBhIERPTSBlbGVtZW50LCByZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHNjcm9sbCBwYXJlbnRzLCB1cCB0aGUgbGlzdCBvZiBhbmNlc29yc1xudW50aWwgd2UgZ2V0IHRvIHRoZSB0b3Agd2luZG93IG9iamVjdC4gVGhpcyBsaXN0IGlzIHdoYXQgd2UgYXR0YWNoIHNjcm9sbCBsaXN0ZW5lcnNcbnRvLCBiZWNhdXNlIGlmIGFueSBvZiB0aGVzZSBwYXJlbnQgZWxlbWVudHMgc2Nyb2xsLCB3ZSdsbCBuZWVkIHRvIHJlLWNhbGN1bGF0ZSB0aGVcbnJlZmVyZW5jZSBlbGVtZW50J3MgcG9zaXRpb24uXG4qL1xuXG5mdW5jdGlvbiBsaXN0U2Nyb2xsUGFyZW50cyhlbGVtZW50LCBsaXN0KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuXG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCk7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQgPT09ICgoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHkpO1xuICB2YXIgd2luID0gZ2V0V2luZG93KHNjcm9sbFBhcmVudCk7XG4gIHZhciB0YXJnZXQgPSBpc0JvZHkgPyBbd2luXS5jb25jYXQod2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc1Njcm9sbFBhcmVudChzY3JvbGxQYXJlbnQpID8gc2Nyb2xsUGFyZW50IDogW10pIDogc2Nyb2xsUGFyZW50O1xuICB2YXIgdXBkYXRlZExpc3QgPSBsaXN0LmNvbmNhdCh0YXJnZXQpO1xuICByZXR1cm4gaXNCb2R5ID8gdXBkYXRlZExpc3QgOiAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogaXNCb2R5IHRlbGxzIHVzIHRhcmdldCB3aWxsIGJlIGFuIEhUTUxFbGVtZW50IGhlcmVcbiAgdXBkYXRlZExpc3QuY29uY2F0KGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUodGFyZ2V0KSkpO1xufVxuXG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59XG5cbnZhciB0b3AgPSAndG9wJztcbnZhciBib3R0b20gPSAnYm90dG9tJztcbnZhciByaWdodCA9ICdyaWdodCc7XG52YXIgbGVmdCA9ICdsZWZ0JztcbnZhciBhdXRvID0gJ2F1dG8nO1xudmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG52YXIgc3RhcnQgPSAnc3RhcnQnO1xudmFyIGVuZCA9ICdlbmQnO1xudmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xudmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbnZhciBwb3BwZXIgPSAncG9wcGVyJztcbnZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbnZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG52YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG52YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbnZhciByZWFkID0gJ3JlYWQnO1xudmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG52YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbnZhciBtYWluID0gJ21haW4nO1xudmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbnZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG52YXIgd3JpdGUgPSAnd3JpdGUnO1xudmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG52YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59XG5cbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlJDEoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBmYWxzZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICByZWN0LnRvcCA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIHJlY3QubGVmdCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC53aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QueCA9IHJlY3QubGVmdDtcbiAgcmVjdC55ID0gcmVjdC50b3A7XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSA6IHJlY3RUb0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkpO1xufSAvLyBBIFwiY2xpcHBpbmcgcGFyZW50XCIgaXMgYW4gb3ZlcmZsb3dhYmxlIGNvbnRhaW5lciB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2l0aCBhIHBvc2l0aW9uIGRpZmZlcmVudCBmcm9tXG4vLyBgaW5pdGlhbGBcblxuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkge1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gbGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZShlbGVtZW50KSk7XG4gIHZhciBjYW5Fc2NhcGVDbGlwcGluZyA9IFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSkge1xuICB2YXIgbWFpbkNsaXBwaW5nUGFyZW50cyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdQYXJlbnRzJyA/IGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBbXS5jb25jYXQobWFpbkNsaXBwaW5nUGFyZW50cywgW3Jvb3RCb3VuZGFyeV0pO1xuICB2YXIgZmlyc3RDbGlwcGluZ1BhcmVudCA9IGNsaXBwaW5nUGFyZW50c1swXTtcbiAgdmFyIGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nUGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjY1JlY3QsIGNsaXBwaW5nUGFyZW50KSB7XG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuXG5mdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59XG5cbmZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn1cblxuZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn1cblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgICAgX3JlZiRvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QkMShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIGV2ZW50TGlzdGVuZXJzID0ge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0JDEsXG4gIGRhdGE6IHt9XG59O1xuXG5mdW5jdGlvbiBwb3BwZXJPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIC8vIE9mZnNldHMgYXJlIHRoZSBhY3R1YWwgcG9zaXRpb24gdGhlIHBvcHBlciBuZWVkcyB0byBoYXZlIHRvIGJlXG4gIC8vIHByb3Blcmx5IHBvc2l0aW9uZWQgbmVhciBpdHMgcmVmZXJlbmNlIGVsZW1lbnRcbiAgLy8gVGhpcyBpcyB0aGUgbW9zdCBiYXNpYyBwbGFjZW1lbnQsIGFuZCB3aWxsIGJlIGFkanVzdGVkIGJ5XG4gIC8vIHRoZSBtb2RpZmllcnMgaW4gdGhlIG5leHQgc3RlcFxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogc3RhdGUucmVjdHMucmVmZXJlbmNlLFxuICAgIGVsZW1lbnQ6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbnZhciBwb3BwZXJPZmZzZXRzJDEgPSB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59O1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYsIHdpbikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHggKiBkcHIpIC8gZHByIHx8IDAsXG4gICAgeTogcm91bmQoeSAqIGRwcikgLyBkcHIgfHwgMFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSwgZ2V0V2luZG93KHBvcHBlcikpIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIGNvbXB1dGVTdHlsZXMkMSA9IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59O1xuXG4vLyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBIVE1MRWxlbWVudHMgc3VjaCBhcyBwb3BwZXIgYW5kIGFycm93XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGVzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZTtcbiAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgc3R5bGUgPSBzdGF0ZS5zdHlsZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmxvdyBkb2Vzbid0IHN1cHBvcnQgdG8gZXh0ZW5kIHRoaXMgcHJvcGVydHksIGJ1dCBpdCdzIHRoZSBtb3N0XG4gICAgLy8gZWZmZWN0aXZlIHdheSB0byBhcHBseSBzdHlsZXMgdG8gYW4gSFRNTEVsZW1lbnRcbiAgICAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV1cblxuXG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlID09PSB0cnVlID8gJycgOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGU7XG4gIHZhciBpbml0aWFsU3R5bGVzID0ge1xuICAgIHBvcHBlcjoge1xuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIG1hcmdpbjogJzAnXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICB9LFxuICAgIHJlZmVyZW5jZToge31cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgc3RhdGUuc3R5bGVzID0gaW5pdGlhbFN0eWxlcztcblxuICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgICB2YXIgc3R5bGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3RhdGUuc3R5bGVzLmhhc093blByb3BlcnR5KG5hbWUpID8gc3RhdGUuc3R5bGVzW25hbWVdIDogaW5pdGlhbFN0eWxlc1tuYW1lXSk7IC8vIFNldCBhbGwgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZyB0byB1bnNldCB0aGVtXG5cbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlUHJvcGVydGllcy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZVtwcm9wZXJ0eV0gPSAnJztcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgfSwge30pOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbnZhciBhcHBseVN0eWxlcyQxID0ge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59O1xuXG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cyQxLCBjb21wdXRlU3R5bGVzJDEsIGFwcGx5U3R5bGVzJDFdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5mdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cblxuZnVuY3Rpb24gd2l0aGluKG1pbiQxLCB2YWx1ZSwgbWF4JDEpIHtcbiAgcmV0dXJuIG1heChtaW4kMSwgbWluKHZhbHVlLCBtYXgkMSkpO1xufVxuZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn1cblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4kMSA9IG9mZnNldCArIG92ZXJmbG93W21haW5TaWRlXTtcbiAgICB2YXIgbWF4JDEgPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWluKG1pbiQxLCB0ZXRoZXJNaW4pIDogbWluJDEsIG9mZnNldCwgdGV0aGVyID8gbWF4KG1heCQxLCB0ZXRoZXJNYXgpIDogbWF4JDEpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbnZhciBwcmV2ZW50T3ZlcmZsb3ckMSA9IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07XG5cbnZhciBoYXNoJDEgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaCQxW21hdGNoZWRdO1xuICB9KTtcbn1cblxudmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IHBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMkMSA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyQxLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyQxO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIGZsaXAkMSA9IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59O1xuXG5mdW5jdGlvbiB1c2VEcm9wZG93biAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBkaXNhYmxlZCwgYXBwZW5kVG8sIGFwcGVuZFRvQm9keSwgb3BlbkRpcmVjdGlvbiB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgbXVsdGlzZWxlY3QgPSBkZXAubXVsdGlzZWxlY3Q7XG4gIGNvbnN0IGRyb3Bkb3duID0gZGVwLmRyb3Bkb3duO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgcG9wcGVyID0gcmVmKG51bGwpO1xuICBjb25zdCBmb3JjZWRQbGFjZW1lbnQgPSByZWYobnVsbCk7XG4gIFxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFwcGVuZGVkID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBhcHBlbmRUby52YWx1ZSB8fCBhcHBlbmRUb0JvZHkudmFsdWVcbiAgfSk7XG5cbiAgY29uc3QgcGxhY2VtZW50ID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiAob3BlbkRpcmVjdGlvbi52YWx1ZSA9PT0gJ3RvcCcgJiYgZm9yY2VkUGxhY2VtZW50LnZhbHVlID09PSAnYm90dG9tJykgfHxcbiAgICAgICAgICAgKG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICdib3R0b20nICYmIGZvcmNlZFBsYWNlbWVudC52YWx1ZSAhPT0gJ3RvcCcpXG4gICAgICAgICAgICA/ICdib3R0b20nXG4gICAgICAgICAgICA6ICd0b3AnXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlIHx8IGRpc2FibGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSB0cnVlO1xuICAgIGNvbnRleHQuZW1pdCgnb3BlbicsICR0aGlzKTtcblxuXG4gICAgaWYgKGFwcGVuZGVkLnZhbHVlKSB7XG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVBvcHBlcigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgICBjb250ZXh0LmVtaXQoJ2Nsb3NlJywgJHRoaXMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVBvcHBlciA9ICgpID0+IHtcbiAgICBpZiAoIXBvcHBlci52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IGJvcmRlclRvcFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZHJvcGRvd24udmFsdWUpLmJvcmRlclRvcFdpZHRoLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICBsZXQgYm9yZGVyQm90dG9tV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkcm9wZG93bi52YWx1ZSkuYm9yZGVyQm90dG9tV2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xuICAgIFxuICAgIHBvcHBlci52YWx1ZS5zZXRPcHRpb25zKChvcHRpb25zKSA9PiAoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAuLi5vcHRpb25zLm1vZGlmaWVycyxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG9mZnNldDogWzAsIChwbGFjZW1lbnQudmFsdWUgPT09ICd0b3AnID8gYm9yZGVyVG9wV2lkdGggOiBib3JkZXJCb3R0b21XaWR0aCkgKiAtMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSk7XG5cbiAgICBwb3BwZXIudmFsdWUudXBkYXRlKCk7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFVJIGZlYXR1cmUgKi9cbiAgY29uc3QgaGFzRml4ZWRQYXJlbnQgPSAoZWxlbWVudCkgPT4ge1xuICAgIHdoaWxlIChlbGVtZW50ICYmIGVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZhbHNlXG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoIWFwcGVuZGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogcG9wcGVyIG1vY2sgKi9cbiAgICBwb3BwZXIudmFsdWUgPSBjcmVhdGVQb3BwZXIobXVsdGlzZWxlY3QudmFsdWUsIGRyb3Bkb3duLnZhbHVlLCB7XG4gICAgICBzdHJhdGVneTogaGFzRml4ZWRQYXJlbnQobXVsdGlzZWxlY3QudmFsdWUpID8gLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFVJIGZlYXR1cmUgKi8gJ2ZpeGVkJyA6IHVuZGVmaW5lZCxcbiAgICAgIHBsYWNlbWVudDogb3BlbkRpcmVjdGlvbi52YWx1ZSxcbiAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICBwcmV2ZW50T3ZlcmZsb3ckMSxcbiAgICAgICAgZmxpcCQxLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3NhbWVXaWR0aCcsXG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgICAgICAgICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ10sXG4gICAgICAgICAgZm46ICh7IHN0YXRlIH0pID0+IHtcbiAgICAgICAgICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIud2lkdGggPSBgJHtzdGF0ZS5yZWN0cy5yZWZlcmVuY2Uud2lkdGh9cHhgO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZWZmZWN0OiAoeyBzdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUud2lkdGggPSBgJHtcbiAgICAgICAgICAgICAgc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlLm9mZnNldFdpZHRoXG4gICAgICAgICAgICB9cHhgO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICd0b2dnbGVDbGFzcycsXG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBwaGFzZTogJ3dyaXRlJyxcbiAgICAgICAgICBmbih7IHN0YXRlIH0pIHtcbiAgICAgICAgICAgIGZvcmNlZFBsYWNlbWVudC52YWx1ZSA9IHN0YXRlLnBsYWNlbWVudDtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH0pO1xuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmICghYXBwZW5kZWQudmFsdWUgfHwgIXBvcHBlci52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcG9wcGVyLnZhbHVlLmRlc3Ryb3koKTtcbiAgICBwb3BwZXIudmFsdWUgPSBudWxsO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHBvcHBlcixcbiAgICBpc09wZW4sXG4gICAgb3BlbixcbiAgICBjbG9zZSxcbiAgICBwbGFjZW1lbnQsXG4gICAgdXBkYXRlUG9wcGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZU11bHRpc2VsZWN0IChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHNlYXJjaGFibGUsIGRpc2FibGVkLCBjbGVhck9uQmx1ciB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlucHV0ID0gZGVwLmlucHV0O1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG4gIGNvbnN0IGNsb3NlID0gZGVwLmNsb3NlO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgd3JhcHBlciA9IGRlcC53cmFwcGVyO1xuICBjb25zdCB0YWdzID0gZGVwLnRhZ3M7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBpc0FjdGl2ZSA9IHJlZihmYWxzZSk7XG5cbiAgY29uc3QgbW91c2VDbGlja2VkID0gcmVmKGZhbHNlKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHRhYmluZGV4ID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBzZWFyY2hhYmxlLnZhbHVlIHx8IGRpc2FibGVkLnZhbHVlID8gLTEgOiAwXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYmx1ciA9ICgpID0+IHtcbiAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUuYmx1cigpO1xuICAgIH1cblxuICAgIHdyYXBwZXIudmFsdWUuYmx1cigpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlICYmICFkaXNhYmxlZC52YWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWN0aXZhdGUgPSAoc2hvdWxkT3BlbiA9IHRydWUpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcblxuICAgIGlmIChzaG91bGRPcGVuKSB7XG4gICAgICBvcGVuKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlYWN0aXZhdGUgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSkge1xuICAgICAgICBjbG9zZSgpO1xuXG4gICAgICAgIGlmIChjbGVhck9uQmx1ci52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c0luID0gKGUpID0+IHtcbiAgICBpZiAoKGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRhZ3NdJykgJiYgZS50YXJnZXQubm9kZU5hbWUgIT09ICdJTlBVVCcpIHx8IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWNsZWFyXScpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY3RpdmF0ZShtb3VzZUNsaWNrZWQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGRlYWN0aXZhdGUoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYXJldENsaWNrID0gKCkgPT4ge1xuICAgIGRlYWN0aXZhdGUoKTtcbiAgICBibHVyKCk7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3QgaGFuZGxlTW91c2Vkb3duID0gKGUpID0+IHtcbiAgICBtb3VzZUNsaWNrZWQudmFsdWUgPSB0cnVlO1xuXG4gICAgaWYgKGlzT3Blbi52YWx1ZSAmJiAoZS50YXJnZXQuaXNFcXVhbE5vZGUod3JhcHBlci52YWx1ZSkgfHwgZS50YXJnZXQuaXNFcXVhbE5vZGUodGFncy52YWx1ZSkpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZGVhY3RpdmF0ZSgpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIGlmICghaXNPcGVuLnZhbHVlIFxuICAgICAgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaXNFcXVhbE5vZGUod3JhcHBlci52YWx1ZSlcbiAgICAgICAgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pc0VxdWFsTm9kZShpbnB1dC52YWx1ZSkpKSB7XG4gICAgICBhY3RpdmF0ZSgpOyAgICBcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG1vdXNlQ2xpY2tlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0sIDApO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdGFiaW5kZXgsXG4gICAgaXNBY3RpdmUsXG4gICAgbW91c2VDbGlja2VkLFxuICAgIGJsdXIsXG4gICAgZm9jdXMsXG4gICAgYWN0aXZhdGUsXG4gICAgZGVhY3RpdmF0ZSxcbiAgICBoYW5kbGVGb2N1c0luLFxuICAgIGhhbmRsZUZvY3VzT3V0LFxuICAgIGhhbmRsZUNhcmV0Q2xpY2ssXG4gICAgaGFuZGxlTW91c2Vkb3duLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUtleWJvYXJkIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgbW9kZSwgYWRkVGFnT24sIG9wZW5EaXJlY3Rpb24sIHNlYXJjaGFibGUsXG4gICAgc2hvd09wdGlvbnMsIHZhbHVlUHJvcCwgZ3JvdXBzOiBncm91cHBlZCxcbiAgICBhZGRPcHRpb25PbjogYWRkT3B0aW9uT25fLCBjcmVhdGVUYWcsIGNyZWF0ZU9wdGlvbjogY3JlYXRlT3B0aW9uXyxcbiAgICByZXZlcnNlLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IHVwZGF0ZSA9IGRlcC51cGRhdGU7XG4gIGNvbnN0IGRlc2VsZWN0ID0gZGVwLmRlc2VsZWN0O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBzZXRQb2ludGVyID0gZGVwLnNldFBvaW50ZXI7XG4gIGNvbnN0IHNlbGVjdFBvaW50ZXIgPSBkZXAuc2VsZWN0UG9pbnRlcjtcbiAgY29uc3QgYmFja3dhcmRQb2ludGVyID0gZGVwLmJhY2t3YXJkUG9pbnRlcjtcbiAgY29uc3QgZm9yd2FyZFBvaW50ZXIgPSBkZXAuZm9yd2FyZFBvaW50ZXI7XG4gIGNvbnN0IG11bHRpc2VsZWN0ID0gZGVwLm11bHRpc2VsZWN0O1xuICBjb25zdCB3cmFwcGVyID0gZGVwLndyYXBwZXI7XG4gIGNvbnN0IHRhZ3MgPSBkZXAudGFncztcbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgb3BlbiA9IGRlcC5vcGVuO1xuICBjb25zdCBibHVyID0gZGVwLmJsdXI7XG4gIGNvbnN0IGZvID0gZGVwLmZvO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGNyZWF0ZU9wdGlvbiA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlVGFnLnZhbHVlIHx8IGNyZWF0ZU9wdGlvbl8udmFsdWUgfHwgZmFsc2VcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFkZE9wdGlvbk9uID0gdG9SZWYoKCkgPT4ge1xuICAgIGlmIChhZGRUYWdPbi52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWRkVGFnT24udmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAoYWRkT3B0aW9uT25fLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhZGRPcHRpb25Pbl8udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gWydlbnRlciddXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHByZXBhcmVQb2ludGVyID0gKCkgPT4ge1xuICAgIC8vIFdoZW4gb3B0aW9ucyBhcmUgaGlkZGVuIGFuZCBjcmVhdGluZyB0YWdzIGlzIGFsbG93ZWRcbiAgICAvLyBubyBwb2ludGVyIHdpbGwgYmUgc2V0IChiZWNhdXNlIG9wdGlvbnMgYXJlIGhpZGRlbikuXG4gICAgLy8gSW4gc3VjaCBjYXNlIHdlIG5lZWQgdG8gc2V0IHRoZSBwb2ludGVyIG1hbnVhbGx5IHRvIHRoZSBcbiAgICAvLyBmaXJzdCBvcHRpb24sIHdoaWNoIGVxdWFscyB0byB0aGUgb3B0aW9uIGNyZWF0ZWQgZnJvbVxuICAgIC8vIHRoZSBzZWFyY2ggdmFsdWUuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICd0YWdzJyAmJiAhc2hvd09wdGlvbnMudmFsdWUgJiYgY3JlYXRlT3B0aW9uLnZhbHVlICYmIHNlYXJjaGFibGUudmFsdWUgJiYgIWdyb3VwcGVkLnZhbHVlKSB7XG4gICAgICBzZXRQb2ludGVyKGZvLnZhbHVlW2ZvLnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihzZWFyY2gudmFsdWUpXSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleWRvd24gPSAoZSkgPT4ge1xuICAgIGNvbnRleHQuZW1pdCgna2V5ZG93bicsIGUsICR0aGlzKTtcblxuICAgIGxldCB0YWdMaXN0O1xuICAgIGxldCBhY3RpdmVJbmRleDtcblxuICAgIGlmIChbJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0JywgJ0VudGVyJ10uaW5kZXhPZihlLmtleSkgIT09IC0xICYmIG1vZGUudmFsdWUgPT09ICd0YWdzJykge1xuICAgICAgdGFnTGlzdCA9IFsuLi4obXVsdGlzZWxlY3QudmFsdWUucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdGFnc10gPiAqYCkpXS5maWx0ZXIoZSA9PiBlICE9PSB0YWdzLnZhbHVlKTtcbiAgICAgIGFjdGl2ZUluZGV4ID0gdGFnTGlzdC5maW5kSW5kZXgoZSA9PiBlID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGUua2V5KSB7XG4gICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlICYmIFtudWxsLCAnJ10uaW5kZXhPZihzZWFyY2gudmFsdWUpID09PSAtMSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl2LnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRlc2VsZWN0YWJsZXMgPSBpdi52YWx1ZS5maWx0ZXIodj0+IXYuZGlzYWJsZWQgJiYgdi5yZW1vdmUgIT09IGZhbHNlKTtcblxuICAgICAgICBpZiAoZGVzZWxlY3RhYmxlcy5sZW5ndGgpIHtcbiAgICAgICAgICBkZXNlbGVjdChkZXNlbGVjdGFibGVzW2Rlc2VsZWN0YWJsZXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgIC8vIGlnbm9yZSBJTUUgY29uZmlybWF0aW9uXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlSW5kZXggIT09IC0xICYmIGFjdGl2ZUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cGRhdGUoWy4uLml2LnZhbHVlXS5maWx0ZXIoKHYsIGspID0+IGsgIT09IGFjdGl2ZUluZGV4KSk7XG5cbiAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggPT09IHRhZ0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaWYgKHRhZ0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICB0YWdMaXN0W3RhZ0xpc3QubGVuZ3RoIC0gMl0uZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgICAgICAgICB0YWdzLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdyYXBwZXIudmFsdWUuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZignZW50ZXInKSA9PT0gLTEgJiYgY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgIHNlbGVjdFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICghY3JlYXRlT3B0aW9uLnZhbHVlICYmICFzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBcblxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZignc3BhY2UnKSA9PT0gLTEgJiYgY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFxuICAgICAgICBwcmVwYXJlUG9pbnRlcigpO1xuICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG4gICAgICBcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICBjYXNlICc7JzpcbiAgICAgIGNhc2UgJywnOlxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZihlLmtleS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEgfHwgIWNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIGJsdXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXNob3dPcHRpb25zLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgICAgIG9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgYmFja3dhcmRQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXNob3dPcHRpb25zLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgICAgIG9wZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcndhcmRQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoc2VhcmNoYWJsZS52YWx1ZSAmJiB0YWdzLnZhbHVlICYmIHRhZ3MudmFsdWUucXVlcnlTZWxlY3RvcignaW5wdXQnKS5zZWxlY3Rpb25TdGFydClcbiAgICAgICAgICB8fCBlLnNoaWZ0S2V5IHx8IG1vZGUudmFsdWUgIT09ICd0YWdzJyB8fCAhaXYudmFsdWUgfHwgIWl2LnZhbHVlLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoYWN0aXZlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgdGFnTGlzdFt0YWdMaXN0Lmxlbmd0aC0xXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFjdGl2ZUluZGV4ID4gMCkge1xuICAgICAgICAgIHRhZ0xpc3RbYWN0aXZlSW5kZXgtMV0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKGFjdGl2ZUluZGV4ID09PSAtMSB8fCBlLnNoaWZ0S2V5IHx8IG1vZGUudmFsdWUgIT09ICd0YWdzJyB8fCAhaXYudmFsdWUgfHwgIWl2LnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRhZ0xpc3QubGVuZ3RoID4gYWN0aXZlSW5kZXggKyAxKSB7XG4gICAgICAgICAgdGFnTGlzdFthY3RpdmVJbmRleCsxXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgICAgICB0YWdzLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHdyYXBwZXIudmFsdWUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5dXAgPSAoZSkgPT4ge1xuICAgIGNvbnRleHQuZW1pdCgna2V5dXAnLCBlLCAkdGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVLZXlkb3duLFxuICAgIGhhbmRsZUtleXVwLFxuICAgIHByZXBhcmVQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNsYXNzZXMgKHByb3BzLCBjb250ZXh0LCBkZXBlbmRlbmNpZXMpXG57Y29uc3QgeyBcbiAgICBjbGFzc2VzOiBjbGFzc2VzXywgZGlzYWJsZWQsIHNob3dPcHRpb25zLCBicmVha1RhZ3NcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXBlbmRlbmNpZXMuaXNPcGVuO1xuICBjb25zdCBpc1BvaW50ZWQgPSBkZXBlbmRlbmNpZXMuaXNQb2ludGVkO1xuICBjb25zdCBpc1NlbGVjdGVkID0gZGVwZW5kZW5jaWVzLmlzU2VsZWN0ZWQ7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBkZXBlbmRlbmNpZXMuaXNEaXNhYmxlZDtcbiAgY29uc3QgaXNBY3RpdmUgPSBkZXBlbmRlbmNpZXMuaXNBY3RpdmU7XG4gIGNvbnN0IGNhblBvaW50R3JvdXBzID0gZGVwZW5kZW5jaWVzLmNhblBvaW50R3JvdXBzO1xuICBjb25zdCByZXNvbHZpbmcgPSBkZXBlbmRlbmNpZXMucmVzb2x2aW5nO1xuICBjb25zdCBmbyA9IGRlcGVuZGVuY2llcy5mbztcbiAgY29uc3QgcGxhY2VtZW50ID0gZGVwZW5kZW5jaWVzLnBsYWNlbWVudDtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGNsYXNzZXMgPSB0b1JlZigoKSA9PiAoe1xuICAgIGNvbnRhaW5lcjogJ211bHRpc2VsZWN0JyxcbiAgICBjb250YWluZXJEaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBjb250YWluZXJPcGVuOiAnaXMtb3BlbicsXG4gICAgY29udGFpbmVyT3BlblRvcDogJ2lzLW9wZW4tdG9wJyxcbiAgICBjb250YWluZXJBY3RpdmU6ICdpcy1hY3RpdmUnLFxuICAgIHdyYXBwZXI6ICdtdWx0aXNlbGVjdC13cmFwcGVyJyxcbiAgICBzaW5nbGVMYWJlbDogJ211bHRpc2VsZWN0LXNpbmdsZS1sYWJlbCcsXG4gICAgc2luZ2xlTGFiZWxUZXh0OiAnbXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHQnLFxuICAgIG11bHRpcGxlTGFiZWw6ICdtdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCcsXG4gICAgc2VhcmNoOiAnbXVsdGlzZWxlY3Qtc2VhcmNoJyxcbiAgICB0YWdzOiAnbXVsdGlzZWxlY3QtdGFncycsXG4gICAgdGFnOiAnbXVsdGlzZWxlY3QtdGFnJyxcbiAgICB0YWdXcmFwcGVyOiAnbXVsdGlzZWxlY3QtdGFnLXdyYXBwZXInLFxuICAgIHRhZ1dyYXBwZXJCcmVhazogJ211bHRpc2VsZWN0LXRhZy13cmFwcGVyLWJyZWFrJyxcbiAgICB0YWdEaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICB0YWdSZW1vdmU6ICdtdWx0aXNlbGVjdC10YWctcmVtb3ZlJyxcbiAgICB0YWdSZW1vdmVJY29uOiAnbXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29uJyxcbiAgICB0YWdzU2VhcmNoV3JhcHBlcjogJ211bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLXdyYXBwZXInLFxuICAgIHRhZ3NTZWFyY2g6ICdtdWx0aXNlbGVjdC10YWdzLXNlYXJjaCcsXG4gICAgdGFnc1NlYXJjaENvcHk6ICdtdWx0aXNlbGVjdC10YWdzLXNlYXJjaC1jb3B5JyxcbiAgICBwbGFjZWhvbGRlcjogJ211bHRpc2VsZWN0LXBsYWNlaG9sZGVyJyxcbiAgICBjYXJldDogJ211bHRpc2VsZWN0LWNhcmV0JyxcbiAgICBjYXJldE9wZW46ICdpcy1vcGVuJyxcbiAgICBjbGVhcjogJ211bHRpc2VsZWN0LWNsZWFyJyxcbiAgICBjbGVhckljb246ICdtdWx0aXNlbGVjdC1jbGVhci1pY29uJyxcbiAgICBzcGlubmVyOiAnbXVsdGlzZWxlY3Qtc3Bpbm5lcicsXG4gICAgaW5pZmluaXRlOiAnbXVsdGlzZWxlY3QtaW5pZml0ZScsXG4gICAgaW5pZmluaXRlU3Bpbm5lcjogJ211bHRpc2VsZWN0LWluaWZpdGUtc3Bpbm5lcicsXG4gICAgZHJvcGRvd246ICdtdWx0aXNlbGVjdC1kcm9wZG93bicsXG4gICAgZHJvcGRvd25Ub3A6ICdpcy10b3AnLFxuICAgIGRyb3Bkb3duSGlkZGVuOiAnaXMtaGlkZGVuJyxcbiAgICBvcHRpb25zOiAnbXVsdGlzZWxlY3Qtb3B0aW9ucycsXG4gICAgb3B0aW9uc1RvcDogJ2lzLXRvcCcsXG4gICAgZ3JvdXA6ICdtdWx0aXNlbGVjdC1ncm91cCcsXG4gICAgZ3JvdXBMYWJlbDogJ211bHRpc2VsZWN0LWdyb3VwLWxhYmVsJyxcbiAgICBncm91cExhYmVsUG9pbnRhYmxlOiAnaXMtcG9pbnRhYmxlJyxcbiAgICBncm91cExhYmVsUG9pbnRlZDogJ2lzLXBvaW50ZWQnLFxuICAgIGdyb3VwTGFiZWxTZWxlY3RlZDogJ2lzLXNlbGVjdGVkJyxcbiAgICBncm91cExhYmVsRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgZ3JvdXBMYWJlbFNlbGVjdGVkUG9pbnRlZDogJ2lzLXNlbGVjdGVkIGlzLXBvaW50ZWQnLFxuICAgIGdyb3VwTGFiZWxTZWxlY3RlZERpc2FibGVkOiAnaXMtc2VsZWN0ZWQgaXMtZGlzYWJsZWQnLFxuICAgIGdyb3VwT3B0aW9uczogJ211bHRpc2VsZWN0LWdyb3VwLW9wdGlvbnMnLFxuICAgIG9wdGlvbjogJ211bHRpc2VsZWN0LW9wdGlvbicsXG4gICAgb3B0aW9uUG9pbnRlZDogJ2lzLXBvaW50ZWQnLFxuICAgIG9wdGlvblNlbGVjdGVkOiAnaXMtc2VsZWN0ZWQnLFxuICAgIG9wdGlvbkRpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIG9wdGlvblNlbGVjdGVkUG9pbnRlZDogJ2lzLXNlbGVjdGVkIGlzLXBvaW50ZWQnLFxuICAgIG9wdGlvblNlbGVjdGVkRGlzYWJsZWQ6ICdpcy1zZWxlY3RlZCBpcy1kaXNhYmxlZCcsXG4gICAgbm9PcHRpb25zOiAnbXVsdGlzZWxlY3Qtbm8tb3B0aW9ucycsXG4gICAgbm9SZXN1bHRzOiAnbXVsdGlzZWxlY3Qtbm8tcmVzdWx0cycsXG4gICAgZmFrZUlucHV0OiAnbXVsdGlzZWxlY3QtZmFrZS1pbnB1dCcsXG4gICAgYXNzaXN0OiAnbXVsdGlzZWxlY3QtYXNzaXN0aXZlLXRleHQnLFxuICAgIHNwYWNlcjogJ211bHRpc2VsZWN0LXNwYWNlcicsXG4gICAgLi4uY2xhc3Nlc18udmFsdWUsXG4gIH0pKTtcblxuICBjb25zdCBzaG93RHJvcGRvd24gPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuICEhKGlzT3Blbi52YWx1ZSAmJiBzaG93T3B0aW9ucy52YWx1ZSAmJiAoIXJlc29sdmluZy52YWx1ZSB8fCAocmVzb2x2aW5nLnZhbHVlICYmIGZvLnZhbHVlLmxlbmd0aCkpKVxuICB9KTtcblxuICBjb25zdCBjbGFzc0xpc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYyA9IGNsYXNzZXMudmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyOiBbYy5jb250YWluZXJdXG4gICAgICAgIC5jb25jYXQoZGlzYWJsZWQudmFsdWUgPyBjLmNvbnRhaW5lckRpc2FibGVkIDogW10pXG4gICAgICAgIC5jb25jYXQoc2hvd0Ryb3Bkb3duLnZhbHVlICYmIHBsYWNlbWVudC52YWx1ZSA9PT0gJ3RvcCcgID8gYy5jb250YWluZXJPcGVuVG9wIDogW10pXG4gICAgICAgIC5jb25jYXQoc2hvd0Ryb3Bkb3duLnZhbHVlICYmIHBsYWNlbWVudC52YWx1ZSAhPT0gJ3RvcCcgPyBjLmNvbnRhaW5lck9wZW4gOiBbXSlcbiAgICAgICAgLmNvbmNhdChpc0FjdGl2ZS52YWx1ZSA/IGMuY29udGFpbmVyQWN0aXZlIDogW10pLFxuICAgICAgd3JhcHBlcjogYy53cmFwcGVyLFxuICAgICAgc3BhY2VyOiBjLnNwYWNlcixcbiAgICAgIHNpbmdsZUxhYmVsOiBjLnNpbmdsZUxhYmVsLFxuICAgICAgc2luZ2xlTGFiZWxUZXh0OiBjLnNpbmdsZUxhYmVsVGV4dCxcbiAgICAgIG11bHRpcGxlTGFiZWw6IGMubXVsdGlwbGVMYWJlbCxcbiAgICAgIHNlYXJjaDogYy5zZWFyY2gsXG4gICAgICB0YWdzOiBjLnRhZ3MsXG4gICAgICB0YWc6IFtjLnRhZ11cbiAgICAgICAgLmNvbmNhdChkaXNhYmxlZC52YWx1ZSA/IGMudGFnRGlzYWJsZWQgOiBbXSksXG4gICAgICB0YWdXcmFwcGVyOiBbYy50YWdXcmFwcGVyLCBicmVha1RhZ3MudmFsdWUgPyBjLnRhZ1dyYXBwZXJCcmVhayA6IG51bGxdLFxuICAgICAgdGFnRGlzYWJsZWQ6IGMudGFnRGlzYWJsZWQsXG4gICAgICB0YWdSZW1vdmU6IGMudGFnUmVtb3ZlLFxuICAgICAgdGFnUmVtb3ZlSWNvbjogYy50YWdSZW1vdmVJY29uLFxuICAgICAgdGFnc1NlYXJjaFdyYXBwZXI6IGMudGFnc1NlYXJjaFdyYXBwZXIsXG4gICAgICB0YWdzU2VhcmNoOiBjLnRhZ3NTZWFyY2gsXG4gICAgICB0YWdzU2VhcmNoQ29weTogYy50YWdzU2VhcmNoQ29weSxcbiAgICAgIHBsYWNlaG9sZGVyOiBjLnBsYWNlaG9sZGVyLFxuICAgICAgY2FyZXQ6IFtjLmNhcmV0XVxuICAgICAgICAuY29uY2F0KGlzT3Blbi52YWx1ZSA/IGMuY2FyZXRPcGVuIDogW10pLFxuICAgICAgY2xlYXI6IGMuY2xlYXIsXG4gICAgICBjbGVhckljb246IGMuY2xlYXJJY29uLFxuICAgICAgc3Bpbm5lcjogYy5zcGlubmVyLFxuICAgICAgaW5pZmluaXRlOiBjLmluaWZpbml0ZSxcbiAgICAgIGluaWZpbml0ZVNwaW5uZXI6IGMuaW5pZmluaXRlU3Bpbm5lcixcbiAgICAgIGRyb3Bkb3duOiBbYy5kcm9wZG93bl1cbiAgICAgICAgLmNvbmNhdChwbGFjZW1lbnQudmFsdWUgPT09ICd0b3AnID8gYy5kcm9wZG93blRvcCA6IFtdKVxuICAgICAgICAuY29uY2F0KCFpc09wZW4udmFsdWUgfHwgIXNob3dPcHRpb25zLnZhbHVlIHx8ICFzaG93RHJvcGRvd24udmFsdWUgPyBjLmRyb3Bkb3duSGlkZGVuIDogW10pLFxuICAgICAgb3B0aW9uczogW2Mub3B0aW9uc11cbiAgICAgICAgLmNvbmNhdChwbGFjZW1lbnQudmFsdWUgPT09ICd0b3AnID8gYy5vcHRpb25zVG9wIDogW10pLFxuICAgICAgZ3JvdXA6IGMuZ3JvdXAsXG4gICAgICBncm91cExhYmVsOiAoZykgPT4ge1xuICAgICAgICBsZXQgZ3JvdXBMYWJlbCA9IFtjLmdyb3VwTGFiZWxdO1xuXG4gICAgICAgIGlmIChpc1BvaW50ZWQoZykpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNTZWxlY3RlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkUG9pbnRlZCA6IGMuZ3JvdXBMYWJlbFBvaW50ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQoZykgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNEaXNhYmxlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkRGlzYWJsZWQgOiBjLmdyb3VwTGFiZWxTZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEaXNhYmxlZChnKSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChjLmdyb3VwTGFiZWxEaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goYy5ncm91cExhYmVsUG9pbnRhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBncm91cExhYmVsXG4gICAgICB9LFxuICAgICAgZ3JvdXBPcHRpb25zOiBjLmdyb3VwT3B0aW9ucyxcbiAgICAgIG9wdGlvbjogKG8sIGcpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IFtjLm9wdGlvbl07XG5cbiAgICAgICAgaWYgKGlzUG9pbnRlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzU2VsZWN0ZWQobykgPyBjLm9wdGlvblNlbGVjdGVkUG9pbnRlZCA6IGMub3B0aW9uUG9pbnRlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTZWxlY3RlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzRGlzYWJsZWQobykgPyBjLm9wdGlvblNlbGVjdGVkRGlzYWJsZWQgOiBjLm9wdGlvblNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKG8pIHx8IChnICYmIGlzRGlzYWJsZWQoZykpKSB7XG4gICAgICAgICAgb3B0aW9uLnB1c2goYy5vcHRpb25EaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICB9LFxuICAgICAgbm9PcHRpb25zOiBjLm5vT3B0aW9ucyxcbiAgICAgIG5vUmVzdWx0czogYy5ub1Jlc3VsdHMsXG4gICAgICBhc3Npc3Q6IGMuYXNzaXN0LFxuICAgICAgZmFrZUlucHV0OiBjLmZha2VJbnB1dCxcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NMaXN0LFxuICAgIHNob3dEcm9wZG93bixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VTY3JvbGwgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBsaW1pdCwgaW5maW5pdGUsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgb2Zmc2V0ID0gZGVwLm9mZnNldDtcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3QgcGZvID0gZGVwLnBmbztcbiAgY29uc3QgZW8gPSBkZXAuZW87XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb2JzZXJ2ZXIgPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaW5maW5pdGVMb2FkZXIgPSBzaGFsbG93UmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgaGFzTW9yZSA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gb2Zmc2V0LnZhbHVlIDwgcGZvLnZhbHVlLmxlbmd0aFxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCBoYW5kbGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IChlbnRyaWVzKSA9PiB7XG4gICAgY29uc3QgeyBpc0ludGVyc2VjdGluZywgdGFyZ2V0IH0gPSBlbnRyaWVzWzBdO1xuXG4gICAgaWYgKGlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQub2Zmc2V0UGFyZW50O1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gcGFyZW50LnNjcm9sbFRvcDtcblxuICAgICAgb2Zmc2V0LnZhbHVlICs9IGxpbWl0LnZhbHVlID09IC0xID8gMTAgOiBsaW1pdC52YWx1ZTtcblxuICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBwYXJlbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9ic2VydmUgPSAoKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNPcGVuLnZhbHVlICYmIG9mZnNldC52YWx1ZSA8IHBmby52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIG9ic2VydmVyLnZhbHVlLm9ic2VydmUoaW5maW5pdGVMb2FkZXIudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoIWlzT3Blbi52YWx1ZSAmJiBvYnNlcnZlci52YWx1ZSkge1xuICAgICAgb2JzZXJ2ZXIudmFsdWUuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghaW5maW5pdGUudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG9ic2VydmUoKTtcbiAgfSk7XG5cbiAgd2F0Y2goc2VhcmNoLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2Zmc2V0LnZhbHVlID0gbGltaXQudmFsdWU7XG5cbiAgICBvYnNlcnZlKCk7XG4gIH0sIHsgZmx1c2g6ICdwb3N0JyB9KTtcblxuICB3YXRjaChlbywgKCkgPT4ge1xuICAgIGlmICghaW5maW5pdGUudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG9ic2VydmUoKTtcbiAgfSwgeyBpbW1lZGlhdGU6IGZhbHNlLCBmbHVzaDogJ3Bvc3QnIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh3aW5kb3cgJiYgd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVJbnRlcnNlY3Rpb25PYnNlcnZlcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGhhc01vcmUsXG4gICAgaW5maW5pdGVMb2FkZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlQTExeSAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIHBsYWNlaG9sZGVyLCBpZCwgdmFsdWVQcm9wLCBsYWJlbDogbGFiZWxQcm9wLCBtb2RlLCBncm91cExhYmVsLCBhcmlhLCBzZWFyY2hhYmxlICxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBwb2ludGVyID0gZGVwLnBvaW50ZXI7XG4gIGNvbnN0IGl2ID0gZGVwLml2O1xuICBjb25zdCBoYXNTZWxlY3RlZCA9IGRlcC5oYXNTZWxlY3RlZDtcbiAgY29uc3QgbXVsdGlwbGVMYWJlbFRleHQgPSBkZXAubXVsdGlwbGVMYWJlbFRleHQ7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBsYWJlbCA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFyaWFBc3Npc3QgPSB0b1JlZigoKSA9PiAoXG4gICAgYCR7aWQudmFsdWUgPyBpZC52YWx1ZSArICctJyA6ICcnfWFzc2lzdGBcbiAgKSk7XG5cbiAgY29uc3QgYXJpYUNvbnRyb2xzID0gdG9SZWYoKCkgPT4gKFxuICAgIGAke2lkLnZhbHVlID8gaWQudmFsdWUgKyAnLScgOiAnJ31tdWx0aXNlbGVjdC1vcHRpb25zYFxuICApKTtcblxuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudCA9IHRvUmVmKCgpID0+IHtcbiAgICBpZiAocG9pbnRlci52YWx1ZSkge1xuICAgICAgbGV0IHRleHRzID0gaWQudmFsdWVcbiAgICAgICAgPyBgJHtpZC52YWx1ZX0tYFxuICAgICAgICA6ICcnO1xuXG4gICAgICB0ZXh0cyArPSBgJHtwb2ludGVyLnZhbHVlLmdyb3VwID8gJ211bHRpc2VsZWN0LWdyb3VwJyA6ICdtdWx0aXNlbGVjdC1vcHRpb24nfS1gO1xuXG4gICAgICB0ZXh0cyArPSBwb2ludGVyLnZhbHVlLmdyb3VwID8gcG9pbnRlci52YWx1ZS5pbmRleCA6IHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXTtcblxuICAgICAgcmV0dXJuIHRleHRzXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBhcmlhUGxhY2Vob2xkZXIgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyLnZhbHVlXG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFNdWx0aXNlbGVjdGFibGUgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgIT09ICdzaW5nbGUnXG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgJiYgaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpdi52YWx1ZVtsYWJlbFByb3AudmFsdWVdXG4gICAgfVxuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdtdWx0aXBsZScgJiYgaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsZUxhYmVsVGV4dC52YWx1ZVxuICAgIH1cblxuICAgIGlmIChtb2RlLnZhbHVlID09PSAndGFncycgJiYgaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpdi52YWx1ZS5tYXAodiA9PiB2W2xhYmVsUHJvcC52YWx1ZV0pLmpvaW4oJywgJylcbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfSk7XG5cbiAgY29uc3QgYXJpYXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGFyaWFzID0geyAuLi5hcmlhLnZhbHVlIH07XG4gICAgXG4gICAgLy8gTmVlZCB0byBhZGQgbWFudWFsbHkgYmVjYXVzZSBmb2N1c2luZ1xuICAgIC8vIHRoZSBpbnB1dCB3b24ndCByZWFkIHRoZSBzZWxlY3RlZCB2YWx1ZVxuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBhcmlhc1snYXJpYS1sYWJlbGxlZGJ5J10gPSBhcmlhc1snYXJpYS1sYWJlbGxlZGJ5J11cbiAgICAgICAgPyBgJHthcmlhQXNzaXN0LnZhbHVlfSAke2FyaWFzWydhcmlhLWxhYmVsbGVkYnknXX1gXG4gICAgICAgIDogYXJpYUFzc2lzdC52YWx1ZTtcbiAgICAgIFxuICAgICAgaWYgKGFyaWFMYWJlbC52YWx1ZSAmJiBhcmlhc1snYXJpYS1sYWJlbCddKSB7XG4gICAgICAgIGFyaWFzWydhcmlhLWxhYmVsJ10gPSBgJHthcmlhTGFiZWwudmFsdWV9LCAke2FyaWFzWydhcmlhLWxhYmVsJ119YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXJpYXNcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBhcmlhT3B0aW9uSWQgPSAob3B0aW9uKSA9PiAoXG4gICAgYCR7aWQudmFsdWUgPyBpZC52YWx1ZSArICctJyA6ICcnfW11bHRpc2VsZWN0LW9wdGlvbi0ke29wdGlvblt2YWx1ZVByb3AudmFsdWVdfWBcbiAgKTtcblxuICBjb25zdCBhcmlhR3JvdXBJZCA9IChvcHRpb24pID0+IChcbiAgICBgJHtpZC52YWx1ZSA/IGlkLnZhbHVlICsgJy0nIDogJyd9bXVsdGlzZWxlY3QtZ3JvdXAtJHtvcHRpb24uaW5kZXh9YFxuICApO1xuXG4gIGNvbnN0IGFyaWFPcHRpb25MYWJlbCA9IChsYWJlbCkgPT4gYCR7bGFiZWx9YDtcblxuICBjb25zdCBhcmlhR3JvdXBMYWJlbCA9IChsYWJlbCkgPT4gYCR7bGFiZWx9YDtcblxuICBjb25zdCBhcmlhVGFnTGFiZWwgPSAobGFiZWwpID0+IGAke2xhYmVsfSDinY5gO1xuXG4gIC8vID09PT09PT09PT09PT09PSBIT09LUyA9PT09PT09PT09PT09PT09XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpZC52YWx1ZSAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKSB7XG4gICAgICBsZXQgZm9yVGFnID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2Zvcj1cIiR7aWQudmFsdWV9XCJdYCk7XG4gICAgICBsYWJlbC52YWx1ZSA9IGZvclRhZyA/IGZvclRhZy5pbm5lclRleHQgOiBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmlhcyxcbiAgICBhcmlhTGFiZWwsXG4gICAgYXJpYUFzc2lzdCxcbiAgICBhcmlhQ29udHJvbHMsXG4gICAgYXJpYVBsYWNlaG9sZGVyLFxuICAgIGFyaWFNdWx0aXNlbGVjdGFibGUsXG4gICAgYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgYXJpYU9wdGlvbklkLFxuICAgIGFyaWFPcHRpb25MYWJlbCxcbiAgICBhcmlhR3JvdXBJZCxcbiAgICBhcmlhR3JvdXBMYWJlbCxcbiAgICBhcmlhVGFnTGFiZWwsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlSTE4biAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIGxvY2FsZSwgZmFsbGJhY2tMb2NhbGUsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgbG9jYWxpemUgPSAodGFyZ2V0KSA9PiB7XG4gICAgaWYgKCF0YXJnZXQgfHwgdHlwZW9mIHRhcmdldCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0YXJnZXRcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldFtsb2NhbGUudmFsdWVdKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W2xvY2FsZS52YWx1ZV1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiBsb2NhbGUudmFsdWUgJiYgdGFyZ2V0W2xvY2FsZS52YWx1ZS50b1VwcGVyQ2FzZSgpXSkge1xuICAgICAgcmV0dXJuIHRhcmdldFtsb2NhbGUudmFsdWUudG9VcHBlckNhc2UoKV1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXRbZmFsbGJhY2tMb2NhbGUudmFsdWVdKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W2ZhbGxiYWNrTG9jYWxlLnZhbHVlXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIGZhbGxiYWNrTG9jYWxlLnZhbHVlICYmIHRhcmdldFtmYWxsYmFja0xvY2FsZS52YWx1ZS50b1VwcGVyQ2FzZSgpXSkge1xuICAgICAgcmV0dXJuIHRhcmdldFtmYWxsYmFja0xvY2FsZS52YWx1ZS50b1VwcGVyQ2FzZSgpXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIE9iamVjdC5rZXlzKHRhcmdldClbMF0pIHtcbiAgICAgIHJldHVybiB0YXJnZXRbT2JqZWN0LmtleXModGFyZ2V0KVswXV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbG9jYWxpemUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUmVmcyAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBtdWx0aXNlbGVjdCA9IHNoYWxsb3dSZWYobnVsbCk7XG4gIFxuICBjb25zdCB3cmFwcGVyID0gc2hhbGxvd1JlZihudWxsKTtcblxuICBjb25zdCB0YWdzID0gc2hhbGxvd1JlZihudWxsKTtcblxuICBjb25zdCBpbnB1dCA9IHNoYWxsb3dSZWYobnVsbCk7XG5cbiAgY29uc3QgZHJvcGRvd24gPSBzaGFsbG93UmVmKG51bGwpO1xuXG4gIHJldHVybiB7XG4gICAgbXVsdGlzZWxlY3QsXG4gICAgd3JhcHBlcixcbiAgICB0YWdzLFxuICAgIGlucHV0LFxuICAgIGRyb3Bkb3duLFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVEZXBzIChwcm9wcywgY29udGV4dCwgZmVhdHVyZXMsIGRlcHMgPSB7fSkge1xuICBmZWF0dXJlcy5mb3JFYWNoKChjb21wb3NhYmxlKSA9PiB7XG4gICAgZGVwcyA9IHtcbiAgICAgIC4uLmRlcHMsXG4gICAgICAuLi5jb21wb3NhYmxlKHByb3BzLCBjb250ZXh0LCBkZXBzKVxuICAgIH07XG4gIH0pO1xuICBcbiAgcmV0dXJuIGRlcHNcbn1cblxudmFyIHNjcmlwdCA9IHtcbiAgICBuYW1lOiAnTXVsdGlzZWxlY3QnLFxuICAgIGVtaXRzOiBbXG4gICAgICAncGFzdGUnLCAnb3BlbicsICdjbG9zZScsICdzZWxlY3QnLCAnZGVzZWxlY3QnLCBcbiAgICAgICdpbnB1dCcsICdzZWFyY2gtY2hhbmdlJywgJ3RhZycsICdvcHRpb24nLCAndXBkYXRlOm1vZGVsVmFsdWUnLFxuICAgICAgJ2NoYW5nZScsICdjbGVhcicsICdrZXlkb3duJywgJ2tleXVwJywgJ21heCcsICdjcmVhdGUnLFxuICAgIF0sXG4gICAgcHJvcHM6IHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBtb2RlbFZhbHVlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0LCBGdW5jdGlvbl0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogKCkgPT4gKFtdKVxuICAgICAgfSxcbiAgICAgIGlkOiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbXVsdGlzZWxlY3QnLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbGFiZWw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgICAgdHJhY2tCeToge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHZhbHVlUHJvcDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3ZhbHVlJyxcbiAgICAgIH0sXG4gICAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBtb2RlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnc2luZ2xlJywgLy8gc2luZ2xlfG11bHRpcGxlfHRhZ3NcbiAgICAgIH0sXG4gICAgICBzZWFyY2hhYmxlOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIGhpZGVTZWxlY3RlZDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY3JlYXRlVGFnOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZU9wdGlvbjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhcHBlbmROZXdUYWc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYXBwZW5kTmV3T3B0aW9uOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFkZFRhZ09uOiB7XG4gICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhZGRPcHRpb25Pbjoge1xuICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY2FyZXQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxvYWRpbmc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBub09wdGlvbnNUZXh0OiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ1RoZSBsaXN0IGlzIGVtcHR5JyxcbiAgICAgIH0sXG4gICAgICBub1Jlc3VsdHNUZXh0OiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICAgfSxcbiAgICAgIG11bHRpcGxlTGFiZWw6IHtcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIG9iamVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGRlbGF5OiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAtMSxcbiAgICAgIH0sXG4gICAgICBtaW5DaGFyczoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgIH0sXG4gICAgICByZXNvbHZlT25Mb2FkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBmaWx0ZXJSZXN1bHRzOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjbGVhck9uU2VhcmNoOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgY2xlYXJPblNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2FuRGVzZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNhbkNsZWFyOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBtYXg6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIHNob3dPcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICByZXF1aXJlZDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG9wZW5EaXJlY3Rpb246IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdib3R0b20nLFxuICAgICAgfSxcbiAgICAgIG5hdGl2ZVN1cHBvcnQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjbGFzc2VzOiB7XG4gICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXG4gICAgICB9LFxuICAgICAgc3RyaWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjbG9zZU9uU2VsZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjbG9zZU9uRGVzZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBncm91cHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cExhYmVsOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbGFiZWwnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwT3B0aW9uczoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ29wdGlvbnMnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwSGlkZUVtcHR5OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZ3JvdXBTZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGlucHV0VHlwZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3RleHQnLFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pLFxuICAgICAgfSxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlZFByb3A6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdkaXNhYmxlZCcsXG4gICAgICB9LFxuICAgICAgc2VhcmNoU3RhcnQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICByZXZlcnNlOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcmVnZXg6IHtcbiAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nLCBSZWdFeHBdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBydGw6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBpbmZpbml0ZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFyaWE6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSksXG4gICAgICB9LFxuICAgICAgY2xlYXJPbkJsdXI6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxvY2FsZToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBmYWxsYmFja0xvY2FsZToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgZGVmYXVsdDogJ2VuJyxcbiAgICAgIH0sXG4gICAgICBzZWFyY2hGaWx0ZXI6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBhbGxvd0Fic2VudDoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFwcGVuZFRvQm9keToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25TY3JvbGw6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBicmVha1RhZ3M6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhcHBlbmRUbzoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwKHByb3BzLCBjb250ZXh0KVxuICAgIHsgXG4gICAgICByZXR1cm4gcmVzb2x2ZURlcHMocHJvcHMsIGNvbnRleHQsIFtcbiAgICAgICAgdXNlUmVmcyxcbiAgICAgICAgdXNlSTE4bixcbiAgICAgICAgdXNlVmFsdWUsXG4gICAgICAgIHVzZVBvaW50ZXIkMSxcbiAgICAgICAgdXNlRHJvcGRvd24sXG4gICAgICAgIHVzZVNlYXJjaCxcbiAgICAgICAgdXNlRGF0YSxcbiAgICAgICAgdXNlTXVsdGlzZWxlY3QsXG4gICAgICAgIHVzZU9wdGlvbnMsXG4gICAgICAgIHVzZVNjcm9sbCxcbiAgICAgICAgdXNlUG9pbnRlcixcbiAgICAgICAgdXNlS2V5Ym9hcmQsXG4gICAgICAgIHVzZUNsYXNzZXMsXG4gICAgICAgIHVzZUExMXksXG4gICAgICBdKVxuICAgIH0sXG4gICAgYmVmb3JlTW91bnQoKSB7XG4gICAgICBpZiAodGhpcy4kcm9vdC5jb25zdHJ1Y3Rvcj8udmVyc2lvbj8ubWF0Y2goL14yXFwuLykgfHwgdGhpcy52dWVWZXJzaW9uTXMgPT09IDIpIHtcbiAgICAgICAgaWYgKCF0aGlzLiRvcHRpb25zLmNvbXBvbmVudHMuVGVsZXBvcnQpIHtcbiAgICAgICAgICB0aGlzLiRvcHRpb25zLmNvbXBvbmVudHMuVGVsZXBvcnQgPSB7XG4gICAgICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzbG90cy5kZWZhdWx0ID8gdGhpcy4kc2xvdHMuZGVmYXVsdFswXSA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG5jb25zdCBfaG9pc3RlZF8xID0gW1wiaWRcIiwgXCJkaXJcIl07XG5jb25zdCBfaG9pc3RlZF8yID0gW1widGFiaW5kZXhcIiwgXCJhcmlhLWNvbnRyb2xzXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiLCBcInJvbGVcIl07XG5jb25zdCBfaG9pc3RlZF8zID0gW1widHlwZVwiLCBcIm1vZGVsVmFsdWVcIiwgXCJ2YWx1ZVwiLCBcImF1dG9jb21wbGV0ZVwiLCBcImlkXCIsIFwiYXJpYS1jb250cm9sc1wiLCBcImFyaWEtcGxhY2Vob2xkZXJcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIl07XG5jb25zdCBfaG9pc3RlZF80ID0gW1wib25LZXl1cFwiLCBcImFyaWEtbGFiZWxcIl07XG5jb25zdCBfaG9pc3RlZF81ID0gW1wib25DbGlja1wiXTtcbmNvbnN0IF9ob2lzdGVkXzYgPSBbXCJ0eXBlXCIsIFwibW9kZWxWYWx1ZVwiLCBcInZhbHVlXCIsIFwiaWRcIiwgXCJhdXRvY29tcGxldGVcIiwgXCJhcmlhLWNvbnRyb2xzXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzcgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF84ID0gW1wiaWRcIl07XG5jb25zdCBfaG9pc3RlZF85ID0gW1wiaWRcIl07XG5jb25zdCBfaG9pc3RlZF8xMCA9IFtcImlkXCIsIFwiYXJpYS1sYWJlbFwiLCBcImFyaWEtc2VsZWN0ZWRcIl07XG5jb25zdCBfaG9pc3RlZF8xMSA9IFtcImRhdGEtcG9pbnRlZFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIl07XG5jb25zdCBfaG9pc3RlZF8xMiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzEzID0gW1wiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE0ID0gW1wiZGF0YS1wb2ludGVkXCIsIFwiZGF0YS1zZWxlY3RlZFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIiwgXCJpZFwiLCBcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLWxhYmVsXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTUgPSBbXCJkYXRhLXBvaW50ZWRcIiwgXCJkYXRhLXNlbGVjdGVkXCIsIFwib25Nb3VzZWVudGVyXCIsIFwib25DbGlja1wiLCBcImlkXCIsIFwiYXJpYS1zZWxlY3RlZFwiLCBcImFyaWEtbGFiZWxcIl07XG5jb25zdCBfaG9pc3RlZF8xNiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE3ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTggPSBbXCJ2YWx1ZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzE5ID0gW1wibmFtZVwiLCBcInZhbHVlXCJdO1xuY29uc3QgX2hvaXN0ZWRfMjAgPSBbXCJuYW1lXCIsIFwidmFsdWVcIl07XG5jb25zdCBfaG9pc3RlZF8yMSA9IFtcImlkXCJdO1xuXG5mdW5jdGlvbiByZW5kZXIoX2N0eCwgX2NhY2hlLCAkcHJvcHMsICRzZXR1cCwgJGRhdGEsICRvcHRpb25zKSB7XG4gIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgcmVmOiBcIm11bHRpc2VsZWN0XCIsXG4gICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNvbnRhaW5lciksXG4gICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gdW5kZWZpbmVkIDogJHByb3BzLmlkLFxuICAgIGRpcjogJHByb3BzLnJ0bCA/ICdydGwnIDogdW5kZWZpbmVkLFxuICAgIG9uRm9jdXNpbjogX2NhY2hlWzEyXSB8fCAoX2NhY2hlWzEyXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVGb2N1c0luICYmIF9jdHguaGFuZGxlRm9jdXNJbiguLi5hcmdzKSkpLFxuICAgIG9uRm9jdXNvdXQ6IF9jYWNoZVsxM10gfHwgKF9jYWNoZVsxM10gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlRm9jdXNPdXQgJiYgX2N0eC5oYW5kbGVGb2N1c091dCguLi5hcmdzKSkpLFxuICAgIG9uS2V5dXA6IF9jYWNoZVsxNF0gfHwgKF9jYWNoZVsxNF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5dXAgJiYgX2N0eC5oYW5kbGVLZXl1cCguLi5hcmdzKSkpLFxuICAgIG9uS2V5ZG93bjogX2NhY2hlWzE1XSB8fCAoX2NhY2hlWzE1XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXlkb3duICYmIF9jdHguaGFuZGxlS2V5ZG93biguLi5hcmdzKSkpXG4gIH0sIFtcbiAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgbWVyZ2VQcm9wcyh7XG4gICAgICBjbGFzczogX2N0eC5jbGFzc0xpc3Qud3JhcHBlcixcbiAgICAgIG9uTW91c2Vkb3duOiBfY2FjaGVbOV0gfHwgKF9jYWNoZVs5XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVNb3VzZWRvd24gJiYgX2N0eC5oYW5kbGVNb3VzZWRvd24oLi4uYXJncykpKSxcbiAgICAgIHJlZjogXCJ3cmFwcGVyXCIsXG4gICAgICB0YWJpbmRleDogX2N0eC50YWJpbmRleCxcbiAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmFyaWFDb250cm9scyA6IHVuZGVmaW5lZCxcbiAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmFyaWFQbGFjZWhvbGRlciA6IHVuZGVmaW5lZCxcbiAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmlzT3BlbiA6IHVuZGVmaW5lZCxcbiAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6ICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQgOiB1bmRlZmluZWQsXG4gICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6ICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguYXJpYU11bHRpc2VsZWN0YWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgIHJvbGU6ICEkcHJvcHMuc2VhcmNoYWJsZSA/ICdjb21ib2JveCcgOiB1bmRlZmluZWRcbiAgICB9LCAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmFyaWFzIDoge30pLCBbXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgU2VhcmNoIFwiKSxcbiAgICAgICgkcHJvcHMubW9kZSAhPT0gJ3RhZ3MnICYmICRwcm9wcy5zZWFyY2hhYmxlICYmICEkcHJvcHMuZGlzYWJsZWQpXG4gICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgIHR5cGU6ICRwcm9wcy5pbnB1dFR5cGUsXG4gICAgICAgICAgICBtb2RlbFZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgIHZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgIGNsYXNzOiBfY3R4LmNsYXNzTGlzdC5zZWFyY2gsXG4gICAgICAgICAgICBhdXRvY29tcGxldGU6ICRwcm9wcy5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICBpZDogJHByb3BzLnNlYXJjaGFibGUgPyAkcHJvcHMuaWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvbklucHV0OiBfY2FjaGVbMF0gfHwgKF9jYWNoZVswXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCAmJiBfY3R4LmhhbmRsZVNlYXJjaElucHV0KC4uLmFyZ3MpKSksXG4gICAgICAgICAgICBvbktleXByZXNzOiBfY2FjaGVbMV0gfHwgKF9jYWNoZVsxXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXlwcmVzcyAmJiBfY3R4LmhhbmRsZUtleXByZXNzKC4uLmFyZ3MpKSksXG4gICAgICAgICAgICBvblBhc3RlOiBfY2FjaGVbMl0gfHwgKF9jYWNoZVsyXSA9IHdpdGhNb2RpZmllcnMoKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVBhc3RlICYmIF9jdHguaGFuZGxlUGFzdGUoLi4uYXJncykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgICByZWY6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBfY3R4LmFyaWFDb250cm9scyxcbiAgICAgICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiBfY3R4LmFyaWFQbGFjZWhvbGRlcixcbiAgICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfY3R4LmlzT3BlbixcbiAgICAgICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IF9jdHguYXJpYU11bHRpc2VsZWN0YWJsZSxcbiAgICAgICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIlxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIC4uLiRwcm9wcy5hdHRycyxcbiAgICAgICAgICAgIC4uLl9jdHguYXJpYXMsXG4gICAgICAgICAgfSksIG51bGwsIDE2IC8qIEZVTExfUFJPUFMgKi8sIF9ob2lzdGVkXzMpKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgVGFncyAod2l0aCBzZWFyY2gpIFwiKSxcbiAgICAgICgkcHJvcHMubW9kZSA9PSAndGFncycpXG4gICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgICAga2V5OiAxLFxuICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ3MpLFxuICAgICAgICAgICAgXCJkYXRhLXRhZ3NcIjogXCJcIlxuICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgIChvcGVuQmxvY2sodHJ1ZSksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgbnVsbCwgcmVuZGVyTGlzdChfY3R4Lml2LCAob3B0aW9uLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwidGFnXCIsIHtcbiAgICAgICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWdSZW1vdmU6IF9jdHguaGFuZGxlVGFnUmVtb3ZlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAkcHJvcHMuZGlzYWJsZWRcbiAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoW1xuICAgICAgICAgICAgICAgIF9jdHguY2xhc3NMaXN0LnRhZyxcbiAgICAgICAgICAgICAgICBvcHRpb24uZGlzYWJsZWQgPyBfY3R4LmNsYXNzTGlzdC50YWdEaXNhYmxlZCA6IG51bGwsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6IFwiLTFcIixcbiAgICAgICAgICAgICAgICAgIG9uS2V5dXA6IHdpdGhLZXlzKCRldmVudCA9PiAoX2N0eC5oYW5kbGVUYWdSZW1vdmUob3B0aW9uLCAkZXZlbnQpKSwgW1wiZW50ZXJcIl0pLFxuICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhVGFnTGFiZWwoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpXG4gICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdXcmFwcGVyKVxuICAgICAgICAgICAgICAgICAgfSwgdG9EaXNwbGF5U3RyaW5nKF9jdHgubG9jYWxpemUob3B0aW9uWyRwcm9wcy5sYWJlbF0pKSwgMyAvKiBURVhULCBDTEFTUyAqLyksXG4gICAgICAgICAgICAgICAgICAoISRwcm9wcy5kaXNhYmxlZCAmJiAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnUmVtb3ZlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHdpdGhNb2RpZmllcnMoJGV2ZW50ID0+IChfY3R4LmhhbmRsZVRhZ1JlbW92ZShvcHRpb24sICRldmVudCkpLCBbXCJzdG9wXCJdKVxuICAgICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnUmVtb3ZlSWNvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgICAgICAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF81KSlcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBORUVEX0hZRFJBVElPTiAqLywgX2hvaXN0ZWRfNCkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9KSwgMjU2IC8qIFVOS0VZRURfRlJBR01FTlQgKi8pKSxcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoV3JhcHBlciksXG4gICAgICAgICAgICAgIHJlZjogXCJ0YWdzXCJcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFVzZWQgZm9yIG1lYXN1cmluZyBzZWFyY2ggd2lkdGggXCIpLFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaENvcHkpXG4gICAgICAgICAgICAgIH0sIHRvRGlzcGxheVN0cmluZyhfY3R4LnNlYXJjaCksIDMgLyogVEVYVCwgQ0xBU1MgKi8pLFxuICAgICAgICAgICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQWN0dWFsIHNlYXJjaCBpbnB1dCBcIiksXG4gICAgICAgICAgICAgICgkcHJvcHMuc2VhcmNoYWJsZSAmJiAhJHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAkcHJvcHMuaW5wdXRUeXBlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbFZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gJHByb3BzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6ICRwcm9wcy5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ6IF9jYWNoZVszXSB8fCAoX2NhY2hlWzNdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVNlYXJjaElucHV0ICYmIF9jdHguaGFuZGxlU2VhcmNoSW5wdXQoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgICAgICAgb25LZXlwcmVzczogX2NhY2hlWzRdIHx8IChfY2FjaGVbNF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5cHJlc3MgJiYgX2N0eC5oYW5kbGVLZXlwcmVzcyguLi5hcmdzKSkpLFxuICAgICAgICAgICAgICAgICAgICBvblBhc3RlOiBfY2FjaGVbNV0gfHwgKF9jYWNoZVs1XSA9IHdpdGhNb2RpZmllcnMoKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVBhc3RlICYmIF9jdHguaGFuZGxlUGFzdGUoLi4uYXJncykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtY29udHJvbHNcIjogX2N0eC5hcmlhQ29udHJvbHMsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiBfY3R4LmFyaWFQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBfY3R4LmFyaWFBY3RpdmVEZXNjZW5kYW50LFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IF9jdHguYXJpYU11bHRpc2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgLi4uJHByb3BzLmF0dHJzLFxuICAgICAgICAgICAgICAgIC4uLl9jdHguYXJpYXMsXG4gICAgICAgICAgICAgIH0pLCBudWxsLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF82KSlcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTaW5nbGUgbGFiZWwgXCIpLFxuICAgICAgKCRwcm9wcy5tb2RlID09ICdzaW5nbGUnICYmIF9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoICYmIF9jdHguaXYpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJzaW5nbGVsYWJlbFwiLCB7XG4gICAgICAgICAgICBrZXk6IDIsXG4gICAgICAgICAgICB2YWx1ZTogX2N0eC5pdlxuICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5zaW5nbGVMYWJlbClcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNpbmdsZUxhYmVsVGV4dClcbiAgICAgICAgICAgICAgfSwgdG9EaXNwbGF5U3RyaW5nKF9jdHgubG9jYWxpemUoX2N0eC5pdlskcHJvcHMubGFiZWxdKSksIDMgLyogVEVYVCwgQ0xBU1MgKi8pXG4gICAgICAgICAgICBdLCAyIC8qIENMQVNTICovKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBNdWx0aXBsZSBsYWJlbCBcIiksXG4gICAgICAoJHByb3BzLm1vZGUgPT0gJ211bHRpcGxlJyAmJiBfY3R4Lmhhc1NlbGVjdGVkICYmICFfY3R4LnNlYXJjaClcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm11bHRpcGxlbGFiZWxcIiwge1xuICAgICAgICAgICAga2V5OiAzLFxuICAgICAgICAgICAgdmFsdWVzOiBfY3R4Lml2XG4gICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm11bHRpcGxlTGFiZWwpLFxuICAgICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubXVsdGlwbGVMYWJlbFRleHRcbiAgICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfNylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgUGxhY2Vob2xkZXIgXCIpLFxuICAgICAgKCRwcm9wcy5wbGFjZWhvbGRlciAmJiAhX2N0eC5oYXNTZWxlY3RlZCAmJiAhX2N0eC5zZWFyY2gpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJwbGFjZWhvbGRlclwiLCB7IGtleTogNCB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QucGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG4gICAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoJHByb3BzLnBsYWNlaG9sZGVyKSwgMyAvKiBURVhULCBDTEFTUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgU3Bpbm5lciBcIiksXG4gICAgICAoJHByb3BzLmxvYWRpbmcgfHwgX2N0eC5yZXNvbHZpbmcpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJzcGlubmVyXCIsIHsga2V5OiA1IH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc3Bpbm5lciksXG4gICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIENsZWFyIFwiKSxcbiAgICAgIChfY3R4Lmhhc1NlbGVjdGVkICYmICEkcHJvcHMuZGlzYWJsZWQgJiYgJHByb3BzLmNhbkNsZWFyICYmICFfY3R4LmJ1c3kpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjbGVhclwiLCB7XG4gICAgICAgICAgICBrZXk6IDYsXG4gICAgICAgICAgICBjbGVhcjogX2N0eC5jbGVhclxuICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICB0YWJpbmRleDogXCIwXCIsXG4gICAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIFwiZGF0YS1jbGVhclwiOiBcIlwiLFxuICAgICAgICAgICAgICBcImFyaWEtcm9sZWRlc2NyaXB0aW9uXCI6IFwi4p2OXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jbGVhciksXG4gICAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVs2XSB8fCAoX2NhY2hlWzZdID0gKC4uLmFyZ3MpID0+IChfY3R4LmNsZWFyICYmIF9jdHguY2xlYXIoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgb25LZXl1cDogX2NhY2hlWzddIHx8IChfY2FjaGVbN10gPSB3aXRoS2V5cygoLi4uYXJncykgPT4gKF9jdHguY2xlYXIgJiYgX2N0eC5jbGVhciguLi5hcmdzKSksIFtcImVudGVyXCJdKSlcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNsZWFySWNvbilcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgIF0sIDM0IC8qIENMQVNTLCBORUVEX0hZRFJBVElPTiAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ2FyZXQgXCIpLFxuICAgICAgKCRwcm9wcy5jYXJldCAmJiAkcHJvcHMuc2hvd09wdGlvbnMpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjYXJldFwiLCB7XG4gICAgICAgICAgICBrZXk6IDcsXG4gICAgICAgICAgICBoYW5kbGVDYXJldENsaWNrOiBfY3R4LmhhbmRsZUNhcmV0Q2xpY2ssXG4gICAgICAgICAgICBpc09wZW46IF9jdHguaXNPcGVuXG4gICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jYXJldCksXG4gICAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVs4XSB8fCAoX2NhY2hlWzhdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUNhcmV0Q2xpY2sgJiYgX2N0eC5oYW5kbGVDYXJldENsaWNrKC4uLmFyZ3MpKSksXG4gICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgXSwgMTYgLyogRlVMTF9QUk9QUyAqLywgX2hvaXN0ZWRfMiksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIE9wdGlvbnMgXCIpLFxuICAgIChvcGVuQmxvY2soKSwgY3JlYXRlQmxvY2soVGVsZXBvcnQsIHtcbiAgICAgIHRvOiAkcHJvcHMuYXBwZW5kVG8gfHwgJ2JvZHknLFxuICAgICAgZGlzYWJsZWQ6ICEkcHJvcHMuYXBwZW5kVG9Cb2R5ICYmICEkcHJvcHMuYXBwZW5kVG9cbiAgICB9LCBbXG4gICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICBpZDogJHByb3BzLmlkID8gYCR7JHByb3BzLmlkfS1kcm9wZG93bmAgOiB1bmRlZmluZWQsXG4gICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5kcm9wZG93biksXG4gICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgIHJlZjogXCJkcm9wZG93blwiLFxuICAgICAgICBvbkZvY3VzaW46IF9jYWNoZVsxMF0gfHwgKF9jYWNoZVsxMF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlRm9jdXNJbiAmJiBfY3R4LmhhbmRsZUZvY3VzSW4oLi4uYXJncykpKSxcbiAgICAgICAgb25Gb2N1c291dDogX2NhY2hlWzExXSB8fCAoX2NhY2hlWzExXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVGb2N1c091dCAmJiBfY3R4LmhhbmRsZUZvY3VzT3V0KC4uLmFyZ3MpKSlcbiAgICAgIH0sIFtcbiAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJiZWZvcmVsaXN0XCIsIHsgb3B0aW9uczogX2N0eC5mbyB9KSxcbiAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwge1xuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5vcHRpb25zKSxcbiAgICAgICAgICBpZDogX2N0eC5hcmlhQ29udHJvbHMsXG4gICAgICAgICAgcm9sZTogXCJsaXN0Ym94XCJcbiAgICAgICAgfSwgW1xuICAgICAgICAgICgkcHJvcHMuZ3JvdXBzKVxuICAgICAgICAgICAgPyAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAwIH0sIHJlbmRlckxpc3QoX2N0eC5mZywgKGdyb3VwLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXApLFxuICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICBpZDogX2N0eC5hcmlhR3JvdXBJZChncm91cCksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhR3JvdXBMYWJlbChfY3R4LmxvY2FsaXplKGdyb3VwWyRwcm9wcy5ncm91cExhYmVsXSkpLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChncm91cCksXG4gICAgICAgICAgICAgICAgICByb2xlOiBcIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgKCFncm91cC5fX0NSRUFURV9fKVxuICAgICAgICAgICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ncm91cExhYmVsKGdyb3VwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtcG9pbnRlZFwiOiBfY3R4LmlzUG9pbnRlZChncm91cCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKGdyb3VwLCBpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAkZXZlbnQgPT4gKF9jdHguaGFuZGxlR3JvdXBDbGljayhncm91cCkpXG4gICAgICAgICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJncm91cGxhYmVsXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBfY3R4LmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfY3R4LmxvY2FsaXplKGdyb3VwWyRwcm9wcy5ncm91cExhYmVsXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTIpXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgTkVFRF9IWURSQVRJT04gKi8sIF9ob2lzdGVkXzExKSlcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXBPcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYUdyb3VwTGFiZWwoX2N0eC5sb2NhbGl6ZShncm91cFskcHJvcHMuZ3JvdXBMYWJlbF0pKSxcbiAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJncm91cFwiXG4gICAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQmxvY2sodHJ1ZSksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgbnVsbCwgcmVuZGVyTGlzdChncm91cC5fX1ZJU0lCTEVfXywgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbihvcHRpb24sIGdyb3VwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtcG9pbnRlZFwiOiBfY3R4LmlzUG9pbnRlZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZWVudGVyOiAkZXZlbnQgPT4gKF9jdHguc2V0UG9pbnRlcihvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVPcHRpb25DbGljayhvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFPcHRpb25JZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYU9wdGlvbkxhYmVsKF9jdHgubG9jYWxpemUob3B0aW9uWyRwcm9wcy5sYWJlbF0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBfY3R4LmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogX2N0eC5zZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgTkVFRF9IWURSQVRJT04gKi8sIF9ob2lzdGVkXzE0KSlcbiAgICAgICAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgICAgICAgICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzEzKVxuICAgICAgICAgICAgICAgIF0sIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTApKVxuICAgICAgICAgICAgICB9KSwgMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgIDogKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCB7IGtleTogMSB9LCByZW5kZXJMaXN0KF9jdHguZm8sIChvcHRpb24sIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5vcHRpb24ob3B0aW9uKSksXG4gICAgICAgICAgICAgICAgICBcImRhdGEtcG9pbnRlZFwiOiBfY3R4LmlzUG9pbnRlZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgXCJkYXRhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgb25Nb3VzZWVudGVyOiAkZXZlbnQgPT4gKF9jdHguc2V0UG9pbnRlcihvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVPcHRpb25DbGljayhvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFPcHRpb25JZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYU9wdGlvbkxhYmVsKF9jdHgubG9jYWxpemUob3B0aW9uWyRwcm9wcy5sYWJlbF0pKSxcbiAgICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBfY3R4LmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaDogX2N0eC5zZWFyY2hcbiAgICAgICAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgTkVFRF9IWURSQVRJT04gKi8sIF9ob2lzdGVkXzE1KSlcbiAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgIF0sIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfOSksXG4gICAgICAgIChfY3R4Lm5vT3B0aW9ucylcbiAgICAgICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwibm9vcHRpb25zXCIsIHsga2V5OiAwIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qubm9PcHRpb25zKSxcbiAgICAgICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubG9jYWxpemUoJHByb3BzLm5vT3B0aW9uc1RleHQpXG4gICAgICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTYpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgICAgKF9jdHgubm9SZXN1bHRzKVxuICAgICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJub3Jlc3VsdHNcIiwgeyBrZXk6IDEgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ub1Jlc3VsdHMpLFxuICAgICAgICAgICAgICAgIGlubmVySFRNTDogX2N0eC5sb2NhbGl6ZSgkcHJvcHMubm9SZXN1bHRzVGV4dClcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xNylcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICAoJHByb3BzLmluZmluaXRlICYmIF9jdHguaGFzTW9yZSlcbiAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAga2V5OiAyLFxuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlKSxcbiAgICAgICAgICAgICAgcmVmOiBcImluZmluaXRlTG9hZGVyXCJcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJpbmZpbml0ZVwiLCB7fSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmluaWZpbml0ZVNwaW5uZXIpXG4gICAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pKVxuICAgICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJhZnRlcmxpc3RcIiwgeyBvcHRpb25zOiBfY3R4LmZvIH0pXG4gICAgICBdLCA0MiAvKiBDTEFTUywgUFJPUFMsIE5FRURfSFlEUkFUSU9OICovLCBfaG9pc3RlZF84KVxuICAgIF0sIDggLyogUFJPUFMgKi8sIFtcInRvXCIsIFwiZGlzYWJsZWRcIl0pKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgSGFja3kgaW5wdXQgZWxlbWVudCB0byBzaG93IEhUTUw1IHJlcXVpcmVkIHdhcm5pbmcgXCIpLFxuICAgICgkcHJvcHMucmVxdWlyZWQpXG4gICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwge1xuICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZmFrZUlucHV0KSxcbiAgICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICAgIHZhbHVlOiBfY3R4LnRleHRWYWx1ZSxcbiAgICAgICAgICByZXF1aXJlZDogXCJcIlxuICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzE4KSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgTmF0aXZlIGlucHV0IHN1cHBvcnQgXCIpLFxuICAgICgkcHJvcHMubmF0aXZlU3VwcG9ydClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIFtcbiAgICAgICAgICAoJHByb3BzLm1vZGUgPT0gJ3NpbmdsZScpXG4gICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgIG5hbWU6ICRwcm9wcy5uYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfY3R4LnBsYWluVmFsdWUgIT09IHVuZGVmaW5lZCA/IF9jdHgucGxhaW5WYWx1ZSA6ICcnXG4gICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE5KSlcbiAgICAgICAgICAgIDogKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCB7IGtleTogMSB9LCByZW5kZXJMaXN0KF9jdHgucGxhaW5WYWx1ZSwgKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgbmFtZTogYCR7JHByb3BzLm5hbWV9W11gLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgICAgICBrZXk6IGlcbiAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8yMCkpXG4gICAgICAgICAgICAgIH0pLCAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICBdLCA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi8pKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTY3JlZW4gcmVhZGVyIGFzc2lzdGl2ZSB0ZXh0IFwiKSxcbiAgICAoJHByb3BzLnNlYXJjaGFibGUgJiYgX2N0eC5oYXNTZWxlY3RlZClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgIGtleTogMixcbiAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuYXNzaXN0KSxcbiAgICAgICAgICBpZDogX2N0eC5hcmlhQXNzaXN0LFxuICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICAgICAgfSwgdG9EaXNwbGF5U3RyaW5nKF9jdHguYXJpYUxhYmVsKSwgMTEgLyogVEVYVCwgQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8yMSkpXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIENyZWF0ZSBoZWlnaHQgZm9yIGVtcHR5IGlucHV0IFwiKSxcbiAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNwYWNlcilcbiAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICBdLCA0MiAvKiBDTEFTUywgUFJPUFMsIE5FRURfSFlEUkFUSU9OICovLCBfaG9pc3RlZF8xKSlcbn1cblxuc2NyaXB0LnJlbmRlciA9IHJlbmRlcjtcbnNjcmlwdC5fX2ZpbGUgPSBcInNyYy9NdWx0aXNlbGVjdC52dWVcIjtcblxuZXhwb3J0IHsgc2NyaXB0IGFzIGRlZmF1bHQgfTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG4vKlxuICogRXhwb3J0IGtNYXhMZW5ndGggYWZ0ZXIgdHlwZWQgYXJyYXkgc3VwcG9ydCBpcyBkZXRlcm1pbmVkLlxuICovXG5leHBvcnRzLmtNYXhMZW5ndGggPSBrTWF4TGVuZ3RoKClcblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyICYmIC8vIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkXG4gICAgICAgIHR5cGVvZiBhcnIuc3ViYXJyYXkgPT09ICdmdW5jdGlvbicgJiYgLy8gY2hyb21lIDktMTAgbGFjayBgc3ViYXJyYXlgXG4gICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHtcbiAgcmV0dXJuIEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gICAgPyAweDdmZmZmZmZmXG4gICAgOiAweDNmZmZmZmZmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7XG4gIGlmIChrTWF4TGVuZ3RoKCkgPCBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgnKVxuICB9XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIGlmICh0aGF0ID09PSBudWxsKSB7XG4gICAgICB0aGF0ID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gICAgfVxuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZSh0aGlzLCBhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20odGhpcywgYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG4vLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi5cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmXG4gICAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgICAvLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jICh0aGF0LCBzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhudWxsLCBzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgYXJyYXkuYnl0ZUxlbmd0aCAvLyB0aGlzIHRocm93cyBpZiBgYXJyYXlgIGlzIG5vdCBhIHZhbGlkIEFycmF5QnVmZmVyXG5cbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBhcnJheVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbUFycmF5TGlrZSh0aGF0LCBhcnJheSlcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5sZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoQXJyYXlCdWZmZXIuaXNWaWV3KHN0cmluZykgfHwgc3RyaW5nIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmdcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgYW5kIGBpcy1idWZmZXJgIChpbiBTYWZhcmkgNS03KSB0byBkZXRlY3Rcbi8vIEJ1ZmZlciBpbnN0YW5jZXMuXG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoIHwgMFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICB2YXIgeSA9IGVuZCAtIHN0YXJ0XG4gIHZhciBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICB2YXIgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChpc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmXG4gICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0c1xuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWZcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnRcbiAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IHV0ZjhUb0J5dGVzKG5ldyBCdWZmZXIodmFsLCBlbmNvZGluZykudG9TdHJpbmcoKSlcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXFwvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHN0cmluZ3RyaW0gKHN0cikge1xuICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsImZ1bmN0aW9uIHIoZSl7dmFyIG8sdCxmPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKWYrPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgbj1lLmxlbmd0aDtmb3Iobz0wO288bjtvKyspZVtvXSYmKHQ9cihlW29dKSkmJihmJiYoZis9XCIgXCIpLGYrPXQpfWVsc2UgZm9yKHQgaW4gZSllW3RdJiYoZiYmKGYrPVwiIFwiKSxmKz10KTtyZXR1cm4gZn1mdW5jdGlvbiBlKCl7Zm9yKHZhciBlLG8sdD0wLGY9XCJcIixuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKykoZT1hcmd1bWVudHNbdF0pJiYobz1yKGUpKSYmKGYmJihmKz1cIiBcIiksZis9byk7cmV0dXJuIGZ9bW9kdWxlLmV4cG9ydHM9ZSxtb2R1bGUuZXhwb3J0cy5jbHN4PWU7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gTG9va3VwIHRhYmxlc1xuXHQgICAgdmFyIFNCT1ggPSBbXTtcblx0ICAgIHZhciBJTlZfU0JPWCA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMCA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMSA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMiA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMyA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzAgPSBbXTtcblx0ICAgIHZhciBJTlZfU1VCX01JWF8xID0gW107XG5cdCAgICB2YXIgSU5WX1NVQl9NSVhfMiA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzMgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBsb29rdXAgdGFibGVzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIENvbXB1dGUgZG91YmxlIHRhYmxlXG5cdCAgICAgICAgdmFyIGQgPSBbXTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgIGlmIChpIDwgMTI4KSB7XG5cdCAgICAgICAgICAgICAgICBkW2ldID0gaSA8PCAxO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgZFtpXSA9IChpIDw8IDEpIF4gMHgxMWI7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBXYWxrIEdGKDJeOClcblx0ICAgICAgICB2YXIgeCA9IDA7XG5cdCAgICAgICAgdmFyIHhpID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgc2JveFxuXHQgICAgICAgICAgICB2YXIgc3ggPSB4aSBeICh4aSA8PCAxKSBeICh4aSA8PCAyKSBeICh4aSA8PCAzKSBeICh4aSA8PCA0KTtcblx0ICAgICAgICAgICAgc3ggPSAoc3ggPj4+IDgpIF4gKHN4ICYgMHhmZikgXiAweDYzO1xuXHQgICAgICAgICAgICBTQk9YW3hdID0gc3g7XG5cdCAgICAgICAgICAgIElOVl9TQk9YW3N4XSA9IHg7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBtdWx0aXBsaWNhdGlvblxuXHQgICAgICAgICAgICB2YXIgeDIgPSBkW3hdO1xuXHQgICAgICAgICAgICB2YXIgeDQgPSBkW3gyXTtcblx0ICAgICAgICAgICAgdmFyIHg4ID0gZFt4NF07XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zIHRhYmxlc1xuXHQgICAgICAgICAgICB2YXIgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMCk7XG5cdCAgICAgICAgICAgIFNVQl9NSVhfMFt4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8xW3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8yW3hdID0gKHQgPDwgOCkgIHwgKHQgPj4+IDI0KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8zW3hdID0gdDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludiBzdWIgYnl0ZXMsIGludiBtaXggY29sdW1ucyB0YWJsZXNcblx0ICAgICAgICAgICAgdmFyIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMCk7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzBbc3hdID0gKHQgPDwgMjQpIHwgKHQgPj4+IDgpO1xuXHQgICAgICAgICAgICBJTlZfU1VCX01JWF8xW3N4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNik7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzJbc3hdID0gKHQgPDwgOCkgIHwgKHQgPj4+IDI0KTtcblx0ICAgICAgICAgICAgSU5WX1NVQl9NSVhfM1tzeF0gPSB0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBjb3VudGVyXG5cdCAgICAgICAgICAgIGlmICgheCkge1xuXHQgICAgICAgICAgICAgICAgeCA9IHhpID0gMTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHggPSB4MiBeIGRbZFtkW3g4IF4geDJdXV07XG5cdCAgICAgICAgICAgICAgICB4aSBePSBkW2RbeGldXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8vIFByZWNvbXB1dGVkIFJjb24gbG9va3VwXG5cdCAgICB2YXIgUkNPTiA9IFsweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2XTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBRVMgYmxvY2sgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEFFUyA9IENfYWxnby5BRVMgPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciB0O1xuXG5cdCAgICAgICAgICAgIC8vIFNraXAgcmVzZXQgb2YgblJvdW5kcyBoYXMgYmVlbiBzZXQgYmVmb3JlIGFuZCBrZXkgZGlkIG5vdCBjaGFuZ2Vcblx0ICAgICAgICAgICAgaWYgKHRoaXMuX25Sb3VuZHMgJiYgdGhpcy5fa2V5UHJpb3JSZXNldCA9PT0gdGhpcy5fa2V5KSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleVByaW9yUmVzZXQgPSB0aGlzLl9rZXk7XG5cdCAgICAgICAgICAgIHZhciBrZXlXb3JkcyA9IGtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGtleVNpemUgPSBrZXkuc2lnQnl0ZXMgLyA0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbnVtYmVyIG9mIHJvdW5kc1xuXHQgICAgICAgICAgICB2YXIgblJvdW5kcyA9IHRoaXMuX25Sb3VuZHMgPSBrZXlTaXplICsgNjtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIG51bWJlciBvZiBrZXkgc2NoZWR1bGUgcm93c1xuXHQgICAgICAgICAgICB2YXIga3NSb3dzID0gKG5Sb3VuZHMgKyAxKSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBrZXkgc2NoZWR1bGVcblx0ICAgICAgICAgICAgdmFyIGtleVNjaGVkdWxlID0gdGhpcy5fa2V5U2NoZWR1bGUgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIga3NSb3cgPSAwOyBrc1JvdyA8IGtzUm93czsga3NSb3crKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKGtzUm93IDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGtleVNjaGVkdWxlW2tzUm93XSA9IGtleVdvcmRzW2tzUm93XTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCA9IGtleVNjaGVkdWxlW2tzUm93IC0gMV07XG5cblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIShrc1JvdyAlIGtleVNpemUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJvdCB3b3JkXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3ViIHdvcmRcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChTQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3QgJiAweGZmXTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXggUmNvblxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0IF49IFJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNDtcblx0ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleVNpemUgPiA2ICYmIGtzUm93ICUga2V5U2l6ZSA9PSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YiB3b3JkXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAoU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFt0ICYgMHhmZl07XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAgICAga2V5U2NoZWR1bGVba3NSb3ddID0ga2V5U2NoZWR1bGVba3NSb3cgLSBrZXlTaXplXSBeIHQ7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludiBrZXkgc2NoZWR1bGVcblx0ICAgICAgICAgICAgdmFyIGludktleVNjaGVkdWxlID0gdGhpcy5faW52S2V5U2NoZWR1bGUgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaW52S3NSb3cgPSAwOyBpbnZLc1JvdyA8IGtzUm93czsgaW52S3NSb3crKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGtzUm93ID0ga3NSb3dzIC0gaW52S3NSb3c7XG5cblx0ICAgICAgICAgICAgICAgIGlmIChpbnZLc1JvdyAlIDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGtleVNjaGVkdWxlW2tzUm93XTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrc1JvdyAtIDRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBpZiAoaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbnZLZXlTY2hlZHVsZVtpbnZLc1Jvd10gPSB0O1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbnZLZXlTY2hlZHVsZVtpbnZLc1Jvd10gPSBJTlZfU1VCX01JWF8wW1NCT1hbdCA+Pj4gMjRdXSBeIElOVl9TVUJfTUlYXzFbU0JPWFsodCA+Pj4gMTYpICYgMHhmZl1dIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZfU1VCX01JWF8yW1NCT1hbKHQgPj4+IDgpICYgMHhmZl1dIF4gSU5WX1NVQl9NSVhfM1tTQk9YW3QgJiAweGZmXV07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZW5jcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2tleVNjaGVkdWxlLCBTVUJfTUlYXzAsIFNVQl9NSVhfMSwgU1VCX01JWF8yLCBTVUJfTUlYXzMsIFNCT1gpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBkZWNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU3dhcCAybmQgYW5kIDR0aCByb3dzXG5cdCAgICAgICAgICAgIHZhciB0ID0gTVtvZmZzZXQgKyAxXTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IE1bb2Zmc2V0ICsgM107XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgM10gPSB0O1xuXG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2ludktleVNjaGVkdWxlLCBJTlZfU1VCX01JWF8wLCBJTlZfU1VCX01JWF8xLCBJTlZfU1VCX01JWF8yLCBJTlZfU1VCX01JWF8zLCBJTlZfU0JPWCk7XG5cblx0ICAgICAgICAgICAgLy8gSW52IHN3YXAgMm5kIGFuZCA0dGggcm93c1xuXHQgICAgICAgICAgICB2YXIgdCA9IE1bb2Zmc2V0ICsgMV07XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSBNW29mZnNldCArIDNdO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDNdID0gdDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvQ3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCwga2V5U2NoZWR1bGUsIFNVQl9NSVhfMCwgU1VCX01JWF8xLCBTVUJfTUlYXzIsIFNVQl9NSVhfMywgU0JPWCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgblJvdW5kcyA9IHRoaXMuX25Sb3VuZHM7XG5cblx0ICAgICAgICAgICAgLy8gR2V0IGlucHV0LCBhZGQgcm91bmQga2V5XG5cdCAgICAgICAgICAgIHZhciBzMCA9IE1bb2Zmc2V0XSAgICAgXiBrZXlTY2hlZHVsZVswXTtcblx0ICAgICAgICAgICAgdmFyIHMxID0gTVtvZmZzZXQgKyAxXSBeIGtleVNjaGVkdWxlWzFdO1xuXHQgICAgICAgICAgICB2YXIgczIgPSBNW29mZnNldCArIDJdIF4ga2V5U2NoZWR1bGVbMl07XG5cdCAgICAgICAgICAgIHZhciBzMyA9IE1bb2Zmc2V0ICsgM10gXiBrZXlTY2hlZHVsZVszXTtcblxuXHQgICAgICAgICAgICAvLyBLZXkgc2NoZWR1bGUgcm93IGNvdW50ZXJcblx0ICAgICAgICAgICAgdmFyIGtzUm93ID0gNDtcblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgcm91bmQgPSAxOyByb3VuZCA8IG5Sb3VuZHM7IHJvdW5kKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHJvd3MsIHN1YiBieXRlcywgbWl4IGNvbHVtbnMsIGFkZCByb3VuZCBrZXlcblx0ICAgICAgICAgICAgICAgIHZhciB0MCA9IFNVQl9NSVhfMFtzMCA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMyID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MzICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MSA9IFNVQl9NSVhfMFtzMSA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMzID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MwICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MiA9IFNVQl9NSVhfMFtzMiA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMwID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MxICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MyA9IFNVQl9NSVhfMFtzMyA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMxID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MyICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHN0YXRlXG5cdCAgICAgICAgICAgICAgICBzMCA9IHQwO1xuXHQgICAgICAgICAgICAgICAgczEgPSB0MTtcblx0ICAgICAgICAgICAgICAgIHMyID0gdDI7XG5cdCAgICAgICAgICAgICAgICBzMyA9IHQzO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hpZnQgcm93cywgc3ViIGJ5dGVzLCBhZGQgcm91bmQga2V5XG5cdCAgICAgICAgICAgIHZhciB0MCA9ICgoU0JPWFtzMCA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMSA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMyID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMyAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICB2YXIgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgdmFyIHQyID0gKChTQk9YW3MyID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMzID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczAgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MxICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgIHZhciB0MyA9ICgoU0JPWFtzMyA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMxID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMiAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBvdXRwdXRcblx0ICAgICAgICAgICAgTVtvZmZzZXRdICAgICA9IHQwO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDFdID0gdDE7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMl0gPSB0Mjtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAzXSA9IHQzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAyNTYvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5BRVMgPSBCbG9ja0NpcGhlci5fY3JlYXRlSGVscGVyKEFFUyk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuQUVTO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgY29uc3QgTiA9IDE2O1xuXG5cdCAgICAvL09yaWdpbiBwYm94IGFuZCBzYm94LCBkZXJpdmVkIGZyb20gUElcblx0ICAgIGNvbnN0IE9SSUdfUCA9IFtcblx0ICAgICAgICAweDI0M0Y2QTg4LCAweDg1QTMwOEQzLCAweDEzMTk4QTJFLCAweDAzNzA3MzQ0LFxuXHQgICAgICAgIDB4QTQwOTM4MjIsIDB4Mjk5RjMxRDAsIDB4MDgyRUZBOTgsIDB4RUM0RTZDODksXG5cdCAgICAgICAgMHg0NTI4MjFFNiwgMHgzOEQwMTM3NywgMHhCRTU0NjZDRiwgMHgzNEU5MEM2Qyxcblx0ICAgICAgICAweEMwQUMyOUI3LCAweEM5N0M1MERELCAweDNGODRENUI1LCAweEI1NDcwOTE3LFxuXHQgICAgICAgIDB4OTIxNkQ1RDksIDB4ODk3OUZCMUJcblx0ICAgIF07XG5cblx0ICAgIGNvbnN0IE9SSUdfUyA9IFtcblx0ICAgICAgICBbICAgMHhEMTMxMEJBNiwgMHg5OERGQjVBQywgMHgyRkZENzJEQiwgMHhEMDFBREZCNyxcblx0ICAgICAgICAgICAgMHhCOEUxQUZFRCwgMHg2QTI2N0U5NiwgMHhCQTdDOTA0NSwgMHhGMTJDN0Y5OSxcblx0ICAgICAgICAgICAgMHgyNEExOTk0NywgMHhCMzkxNkNGNywgMHgwODAxRjJFMiwgMHg4NThFRkMxNixcblx0ICAgICAgICAgICAgMHg2MzY5MjBEOCwgMHg3MTU3NEU2OSwgMHhBNDU4RkVBMywgMHhGNDkzM0Q3RSxcblx0ICAgICAgICAgICAgMHgwRDk1NzQ4RiwgMHg3MjhFQjY1OCwgMHg3MThCQ0Q1OCwgMHg4MjE1NEFFRSxcblx0ICAgICAgICAgICAgMHg3QjU0QTQxRCwgMHhDMjVBNTlCNSwgMHg5QzMwRDUzOSwgMHgyQUYyNjAxMyxcblx0ICAgICAgICAgICAgMHhDNUQxQjAyMywgMHgyODYwODVGMCwgMHhDQTQxNzkxOCwgMHhCOERCMzhFRixcblx0ICAgICAgICAgICAgMHg4RTc5RENCMCwgMHg2MDNBMTgwRSwgMHg2QzlFMEU4QiwgMHhCMDFFOEEzRSxcblx0ICAgICAgICAgICAgMHhENzE1NzdDMSwgMHhCRDMxNEIyNywgMHg3OEFGMkZEQSwgMHg1NTYwNUM2MCxcblx0ICAgICAgICAgICAgMHhFNjU1MjVGMywgMHhBQTU1QUI5NCwgMHg1NzQ4OTg2MiwgMHg2M0U4MTQ0MCxcblx0ICAgICAgICAgICAgMHg1NUNBMzk2QSwgMHgyQUFCMTBCNiwgMHhCNENDNUMzNCwgMHgxMTQxRThDRSxcblx0ICAgICAgICAgICAgMHhBMTU0ODZBRiwgMHg3QzcyRTk5MywgMHhCM0VFMTQxMSwgMHg2MzZGQkMyQSxcblx0ICAgICAgICAgICAgMHgyQkE5QzU1RCwgMHg3NDE4MzFGNiwgMHhDRTVDM0UxNiwgMHg5Qjg3OTMxRSxcblx0ICAgICAgICAgICAgMHhBRkQ2QkEzMywgMHg2QzI0Q0Y1QywgMHg3QTMyNTM4MSwgMHgyODk1ODY3Nyxcblx0ICAgICAgICAgICAgMHgzQjhGNDg5OCwgMHg2QjRCQjlBRiwgMHhDNEJGRTgxQiwgMHg2NjI4MjE5Myxcblx0ICAgICAgICAgICAgMHg2MUQ4MDlDQywgMHhGQjIxQTk5MSwgMHg0ODdDQUM2MCwgMHg1REVDODAzMixcblx0ICAgICAgICAgICAgMHhFRjg0NUQ1RCwgMHhFOTg1NzVCMSwgMHhEQzI2MjMwMiwgMHhFQjY1MUI4OCxcblx0ICAgICAgICAgICAgMHgyMzg5M0U4MSwgMHhEMzk2QUNDNSwgMHgwRjZENkZGMywgMHg4M0Y0NDIzOSxcblx0ICAgICAgICAgICAgMHgyRTBCNDQ4MiwgMHhBNDg0MjAwNCwgMHg2OUM4RjA0QSwgMHg5RTFGOUI1RSxcblx0ICAgICAgICAgICAgMHgyMUM2Njg0MiwgMHhGNkU5NkM5QSwgMHg2NzBDOUM2MSwgMHhBQkQzODhGMCxcblx0ICAgICAgICAgICAgMHg2QTUxQTBEMiwgMHhEODU0MkY2OCwgMHg5NjBGQTcyOCwgMHhBQjUxMzNBMyxcblx0ICAgICAgICAgICAgMHg2RUVGMEI2QywgMHgxMzdBM0JFNCwgMHhCQTNCRjA1MCwgMHg3RUZCMkE5OCxcblx0ICAgICAgICAgICAgMHhBMUYxNjUxRCwgMHgzOUFGMDE3NiwgMHg2NkNBNTkzRSwgMHg4MjQzMEU4OCxcblx0ICAgICAgICAgICAgMHg4Q0VFODYxOSwgMHg0NTZGOUZCNCwgMHg3RDg0QTVDMywgMHgzQjhCNUVCRSxcblx0ICAgICAgICAgICAgMHhFMDZGNzVEOCwgMHg4NUMxMjA3MywgMHg0MDFBNDQ5RiwgMHg1NkMxNkFBNixcblx0ICAgICAgICAgICAgMHg0RUQzQUE2MiwgMHgzNjNGNzcwNiwgMHgxQkZFREY3MiwgMHg0MjlCMDIzRCxcblx0ICAgICAgICAgICAgMHgzN0QwRDcyNCwgMHhEMDBBMTI0OCwgMHhEQjBGRUFEMywgMHg0OUYxQzA5Qixcblx0ICAgICAgICAgICAgMHgwNzUzNzJDOSwgMHg4MDk5MUI3QiwgMHgyNUQ0NzlEOCwgMHhGNkU4REVGNyxcblx0ICAgICAgICAgICAgMHhFM0ZFNTAxQSwgMHhCNjc5NEMzQiwgMHg5NzZDRTBCRCwgMHgwNEMwMDZCQSxcblx0ICAgICAgICAgICAgMHhDMUE5NEZCNiwgMHg0MDlGNjBDNCwgMHg1RTVDOUVDMiwgMHgxOTZBMjQ2Myxcblx0ICAgICAgICAgICAgMHg2OEZCNkZBRiwgMHgzRTZDNTNCNSwgMHgxMzM5QjJFQiwgMHgzQjUyRUM2Rixcblx0ICAgICAgICAgICAgMHg2REZDNTExRiwgMHg5QjMwOTUyQywgMHhDQzgxNDU0NCwgMHhBRjVFQkQwOSxcblx0ICAgICAgICAgICAgMHhCRUUzRDAwNCwgMHhERTMzNEFGRCwgMHg2NjBGMjgwNywgMHgxOTJFNEJCMyxcblx0ICAgICAgICAgICAgMHhDMENCQTg1NywgMHg0NUM4NzQwRiwgMHhEMjBCNUYzOSwgMHhCOUQzRkJEQixcblx0ICAgICAgICAgICAgMHg1NTc5QzBCRCwgMHgxQTYwMzIwQSwgMHhENkExMDBDNiwgMHg0MDJDNzI3OSxcblx0ICAgICAgICAgICAgMHg2NzlGMjVGRSwgMHhGQjFGQTNDQywgMHg4RUE1RTlGOCwgMHhEQjMyMjJGOCxcblx0ICAgICAgICAgICAgMHgzQzc1MTZERiwgMHhGRDYxNkIxNSwgMHgyRjUwMUVDOCwgMHhBRDA1NTJBQixcblx0ICAgICAgICAgICAgMHgzMjNEQjVGQSwgMHhGRDIzODc2MCwgMHg1MzMxN0I0OCwgMHgzRTAwREY4Mixcblx0ICAgICAgICAgICAgMHg5RTVDNTdCQiwgMHhDQTZGOENBMCwgMHgxQTg3NTYyRSwgMHhERjE3NjlEQixcblx0ICAgICAgICAgICAgMHhENTQyQThGNiwgMHgyODdFRkZDMywgMHhBQzY3MzJDNiwgMHg4QzRGNTU3Myxcblx0ICAgICAgICAgICAgMHg2OTVCMjdCMCwgMHhCQkNBNThDOCwgMHhFMUZGQTM1RCwgMHhCOEYwMTFBMCxcblx0ICAgICAgICAgICAgMHgxMEZBM0Q5OCwgMHhGRDIxODNCOCwgMHg0QUZDQjU2QywgMHgyREQxRDM1Qixcblx0ICAgICAgICAgICAgMHg5QTUzRTQ3OSwgMHhCNkY4NDU2NSwgMHhEMjhFNDlCQywgMHg0QkZCOTc5MCxcblx0ICAgICAgICAgICAgMHhFMURERjJEQSwgMHhBNENCN0UzMywgMHg2MkZCMTM0MSwgMHhDRUU0QzZFOCxcblx0ICAgICAgICAgICAgMHhFRjIwQ0FEQSwgMHgzNjc3NEMwMSwgMHhEMDdFOUVGRSwgMHgyQkYxMUZCNCxcblx0ICAgICAgICAgICAgMHg5NURCREE0RCwgMHhBRTkwOTE5OCwgMHhFQUFEOEU3MSwgMHg2QjkzRDVBMCxcblx0ICAgICAgICAgICAgMHhEMDhFRDFEMCwgMHhBRkM3MjVFMCwgMHg4RTNDNUIyRiwgMHg4RTc1OTRCNyxcblx0ICAgICAgICAgICAgMHg4RkY2RTJGQiwgMHhGMjEyMkI2NCwgMHg4ODg4QjgxMiwgMHg5MDBERjAxQyxcblx0ICAgICAgICAgICAgMHg0RkFENUVBMCwgMHg2ODhGQzMxQywgMHhEMUNGRjE5MSwgMHhCM0E4QzFBRCxcblx0ICAgICAgICAgICAgMHgyRjJGMjIxOCwgMHhCRTBFMTc3NywgMHhFQTc1MkRGRSwgMHg4QjAyMUZBMSxcblx0ICAgICAgICAgICAgMHhFNUEwQ0MwRiwgMHhCNTZGNzRFOCwgMHgxOEFDRjNENiwgMHhDRTg5RTI5OSxcblx0ICAgICAgICAgICAgMHhCNEE4NEZFMCwgMHhGRDEzRTBCNywgMHg3Q0M0M0I4MSwgMHhEMkFEQThEOSxcblx0ICAgICAgICAgICAgMHgxNjVGQTI2NiwgMHg4MDk1NzcwNSwgMHg5M0NDNzMxNCwgMHgyMTFBMTQ3Nyxcblx0ICAgICAgICAgICAgMHhFNkFEMjA2NSwgMHg3N0I1RkE4NiwgMHhDNzU0NDJGNSwgMHhGQjlEMzVDRixcblx0ICAgICAgICAgICAgMHhFQkNEQUYwQywgMHg3QjNFODlBMCwgMHhENjQxMUJEMywgMHhBRTFFN0U0OSxcblx0ICAgICAgICAgICAgMHgwMDI1MEUyRCwgMHgyMDcxQjM1RSwgMHgyMjY4MDBCQiwgMHg1N0I4RTBBRixcblx0ICAgICAgICAgICAgMHgyNDY0MzY5QiwgMHhGMDA5QjkxRSwgMHg1NTYzOTExRCwgMHg1OURGQTZBQSxcblx0ICAgICAgICAgICAgMHg3OEMxNDM4OSwgMHhEOTVBNTM3RiwgMHgyMDdENUJBMiwgMHgwMkU1QjlDNSxcblx0ICAgICAgICAgICAgMHg4MzI2MDM3NiwgMHg2Mjk1Q0ZBOSwgMHgxMUM4MTk2OCwgMHg0RTczNEE0MSxcblx0ICAgICAgICAgICAgMHhCMzQ3MkRDQSwgMHg3QjE0QTk0QSwgMHgxQjUxMDA1MiwgMHg5QTUzMjkxNSxcblx0ICAgICAgICAgICAgMHhENjBGNTczRiwgMHhCQzlCQzZFNCwgMHgyQjYwQTQ3NiwgMHg4MUU2NzQwMCxcblx0ICAgICAgICAgICAgMHgwOEJBNkZCNSwgMHg1NzFCRTkxRiwgMHhGMjk2RUM2QiwgMHgyQTBERDkxNSxcblx0ICAgICAgICAgICAgMHhCNjYzNjUyMSwgMHhFN0I5RjlCNiwgMHhGRjM0MDUyRSwgMHhDNTg1NTY2NCxcblx0ICAgICAgICAgICAgMHg1M0IwMkQ1RCwgMHhBOTlGOEZBMSwgMHgwOEJBNDc5OSwgMHg2RTg1MDc2QSAgIF0sXG5cdCAgICAgICAgWyAgIDB4NEI3QTcwRTksIDB4QjVCMzI5NDQsIDB4REI3NTA5MkUsIDB4QzQxOTI2MjMsXG5cdCAgICAgICAgICAgIDB4QUQ2RUE2QjAsIDB4NDlBN0RGN0QsIDB4OUNFRTYwQjgsIDB4OEZFREIyNjYsXG5cdCAgICAgICAgICAgIDB4RUNBQThDNzEsIDB4Njk5QTE3RkYsIDB4NTY2NDUyNkMsIDB4QzJCMTlFRTEsXG5cdCAgICAgICAgICAgIDB4MTkzNjAyQTUsIDB4NzUwOTRDMjksIDB4QTA1OTEzNDAsIDB4RTQxODNBM0UsXG5cdCAgICAgICAgICAgIDB4M0Y1NDk4OUEsIDB4NUI0MjlENjUsIDB4NkI4RkU0RDYsIDB4OTlGNzNGRDYsXG5cdCAgICAgICAgICAgIDB4QTFEMjlDMDcsIDB4RUZFODMwRjUsIDB4NEQyRDM4RTYsIDB4RjAyNTVEQzEsXG5cdCAgICAgICAgICAgIDB4NENERDIwODYsIDB4ODQ3MEVCMjYsIDB4NjM4MkU5QzYsIDB4MDIxRUNDNUUsXG5cdCAgICAgICAgICAgIDB4MDk2ODZCM0YsIDB4M0VCQUVGQzksIDB4M0M5NzE4MTQsIDB4NkI2QTcwQTEsXG5cdCAgICAgICAgICAgIDB4Njg3RjM1ODQsIDB4NTJBMEUyODYsIDB4Qjc5QzUzMDUsIDB4QUE1MDA3MzcsXG5cdCAgICAgICAgICAgIDB4M0UwNzg0MUMsIDB4N0ZERUFFNUMsIDB4OEU3RDQ0RUMsIDB4NTcxNkYyQjgsXG5cdCAgICAgICAgICAgIDB4QjAzQURBMzcsIDB4RjA1MDBDMEQsIDB4RjAxQzFGMDQsIDB4MDIwMEIzRkYsXG5cdCAgICAgICAgICAgIDB4QUUwQ0Y1MUEsIDB4M0NCNTc0QjIsIDB4MjU4MzdBNTgsIDB4REMwOTIxQkQsXG5cdCAgICAgICAgICAgIDB4RDE5MTEzRjksIDB4N0NBOTJGRjYsIDB4OTQzMjQ3NzMsIDB4MjJGNTQ3MDEsXG5cdCAgICAgICAgICAgIDB4M0FFNUU1ODEsIDB4MzdDMkRBREMsIDB4QzhCNTc2MzQsIDB4OUFGM0REQTcsXG5cdCAgICAgICAgICAgIDB4QTk0NDYxNDYsIDB4MEZEMDAzMEUsIDB4RUNDOEM3M0UsIDB4QTQ3NTFFNDEsXG5cdCAgICAgICAgICAgIDB4RTIzOENEOTksIDB4M0JFQTBFMkYsIDB4MzI4MEJCQTEsIDB4MTgzRUIzMzEsXG5cdCAgICAgICAgICAgIDB4NEU1NDhCMzgsIDB4NEY2REI5MDgsIDB4NkY0MjBEMDMsIDB4RjYwQTA0QkYsXG5cdCAgICAgICAgICAgIDB4MkNCODEyOTAsIDB4MjQ5NzdDNzksIDB4NTY3OUIwNzIsIDB4QkNBRjg5QUYsXG5cdCAgICAgICAgICAgIDB4REU5QTc3MUYsIDB4RDk5MzA4MTAsIDB4QjM4QkFFMTIsIDB4RENDRjNGMkUsXG5cdCAgICAgICAgICAgIDB4NTUxMjcyMUYsIDB4MkU2QjcxMjQsIDB4NTAxQURERTYsIDB4OUY4NENEODcsXG5cdCAgICAgICAgICAgIDB4N0E1ODQ3MTgsIDB4NzQwOERBMTcsIDB4QkM5RjlBQkMsIDB4RTk0QjdEOEMsXG5cdCAgICAgICAgICAgIDB4RUM3QUVDM0EsIDB4REI4NTFERkEsIDB4NjMwOTQzNjYsIDB4QzQ2NEMzRDIsXG5cdCAgICAgICAgICAgIDB4RUYxQzE4NDcsIDB4MzIxNUQ5MDgsIDB4REQ0MzNCMzcsIDB4MjRDMkJBMTYsXG5cdCAgICAgICAgICAgIDB4MTJBMTRENDMsIDB4MkE2NUM0NTEsIDB4NTA5NDAwMDIsIDB4MTMzQUU0REQsXG5cdCAgICAgICAgICAgIDB4NzFERkY4OUUsIDB4MTAzMTRFNTUsIDB4ODFBQzc3RDYsIDB4NUYxMTE5OUIsXG5cdCAgICAgICAgICAgIDB4MDQzNTU2RjEsIDB4RDdBM0M3NkIsIDB4M0MxMTE4M0IsIDB4NTkyNEE1MDksXG5cdCAgICAgICAgICAgIDB4RjI4RkU2RUQsIDB4OTdGMUZCRkEsIDB4OUVCQUJGMkMsIDB4MUUxNTNDNkUsXG5cdCAgICAgICAgICAgIDB4ODZFMzQ1NzAsIDB4RUFFOTZGQjEsIDB4ODYwRTVFMEEsIDB4NUEzRTJBQjMsXG5cdCAgICAgICAgICAgIDB4NzcxRkU3MUMsIDB4NEUzRDA2RkEsIDB4Mjk2NURDQjksIDB4OTlFNzFEMEYsXG5cdCAgICAgICAgICAgIDB4ODAzRTg5RDYsIDB4NTI2NkM4MjUsIDB4MkU0Q0M5NzgsIDB4OUMxMEIzNkEsXG5cdCAgICAgICAgICAgIDB4QzYxNTBFQkEsIDB4OTRFMkVBNzgsIDB4QTVGQzNDNTMsIDB4MUUwQTJERjQsXG5cdCAgICAgICAgICAgIDB4RjJGNzRFQTcsIDB4MzYxRDJCM0QsIDB4MTkzOTI2MEYsIDB4MTlDMjc5NjAsXG5cdCAgICAgICAgICAgIDB4NTIyM0E3MDgsIDB4RjcxMzEyQjYsIDB4RUJBREZFNkUsIDB4RUFDMzFGNjYsXG5cdCAgICAgICAgICAgIDB4RTNCQzQ1OTUsIDB4QTY3QkM4ODMsIDB4QjE3RjM3RDEsIDB4MDE4Q0ZGMjgsXG5cdCAgICAgICAgICAgIDB4QzMzMkRERUYsIDB4QkU2QzVBQTUsIDB4NjU1ODIxODUsIDB4NjhBQjk4MDIsXG5cdCAgICAgICAgICAgIDB4RUVDRUE1MEYsIDB4REIyRjk1M0IsIDB4MkFFRjdEQUQsIDB4NUI2RTJGODQsXG5cdCAgICAgICAgICAgIDB4MTUyMUI2MjgsIDB4MjkwNzYxNzAsIDB4RUNERDQ3NzUsIDB4NjE5RjE1MTAsXG5cdCAgICAgICAgICAgIDB4MTNDQ0E4MzAsIDB4RUI2MUJEOTYsIDB4MDMzNEZFMUUsIDB4QUEwMzYzQ0YsXG5cdCAgICAgICAgICAgIDB4QjU3MzVDOTAsIDB4NEM3MEEyMzksIDB4RDU5RTlFMEIsIDB4Q0JBQURFMTQsXG5cdCAgICAgICAgICAgIDB4RUVDQzg2QkMsIDB4NjA2MjJDQTcsIDB4OUNBQjVDQUIsIDB4QjJGMzg0NkUsXG5cdCAgICAgICAgICAgIDB4NjQ4QjFFQUYsIDB4MTlCREYwQ0EsIDB4QTAyMzY5QjksIDB4NjU1QUJCNTAsXG5cdCAgICAgICAgICAgIDB4NDA2ODVBMzIsIDB4M0MyQUI0QjMsIDB4MzE5RUU5RDUsIDB4QzAyMUI4RjcsXG5cdCAgICAgICAgICAgIDB4OUI1NDBCMTksIDB4ODc1RkEwOTksIDB4OTVGNzk5N0UsIDB4NjIzRDdEQTgsXG5cdCAgICAgICAgICAgIDB4RjgzNzg4OUEsIDB4OTdFMzJENzcsIDB4MTFFRDkzNUYsIDB4MTY2ODEyODEsXG5cdCAgICAgICAgICAgIDB4MEUzNTg4MjksIDB4QzdFNjFGRDYsIDB4OTZERURGQTEsIDB4Nzg1OEJBOTksXG5cdCAgICAgICAgICAgIDB4NTdGNTg0QTUsIDB4MUIyMjcyNjMsIDB4OUI4M0MzRkYsIDB4MUFDMjQ2OTYsXG5cdCAgICAgICAgICAgIDB4Q0RCMzBBRUIsIDB4NTMyRTMwNTQsIDB4OEZEOTQ4RTQsIDB4NkRCQzMxMjgsXG5cdCAgICAgICAgICAgIDB4NThFQkYyRUYsIDB4MzRDNkZGRUEsIDB4RkUyOEVENjEsIDB4RUU3QzNDNzMsXG5cdCAgICAgICAgICAgIDB4NUQ0QTE0RDksIDB4RTg2NEI3RTMsIDB4NDIxMDVEMTQsIDB4MjAzRTEzRTAsXG5cdCAgICAgICAgICAgIDB4NDVFRUUyQjYsIDB4QTNBQUFCRUEsIDB4REI2QzRGMTUsIDB4RkFDQjRGRDAsXG5cdCAgICAgICAgICAgIDB4Qzc0MkY0NDIsIDB4RUY2QUJCQjUsIDB4NjU0RjNCMUQsIDB4NDFDRDIxMDUsXG5cdCAgICAgICAgICAgIDB4RDgxRTc5OUUsIDB4ODY4NTREQzcsIDB4RTQ0QjQ3NkEsIDB4M0Q4MTYyNTAsXG5cdCAgICAgICAgICAgIDB4Q0Y2MkExRjIsIDB4NUI4RDI2NDYsIDB4RkM4ODgzQTAsIDB4QzFDN0I2QTMsXG5cdCAgICAgICAgICAgIDB4N0YxNTI0QzMsIDB4NjlDQjc0OTIsIDB4NDc4NDhBMEIsIDB4NTY5MkIyODUsXG5cdCAgICAgICAgICAgIDB4MDk1QkJGMDAsIDB4QUQxOTQ4OUQsIDB4MTQ2MkIxNzQsIDB4MjM4MjBFMDAsXG5cdCAgICAgICAgICAgIDB4NTg0MjhEMkEsIDB4MEM1NUY1RUEsIDB4MURBREY0M0UsIDB4MjMzRjcwNjEsXG5cdCAgICAgICAgICAgIDB4MzM3MkYwOTIsIDB4OEQ5MzdFNDEsIDB4RDY1RkVDRjEsIDB4NkMyMjNCREIsXG5cdCAgICAgICAgICAgIDB4N0NERTM3NTksIDB4Q0JFRTc0NjAsIDB4NDA4NUYyQTcsIDB4Q0U3NzMyNkUsXG5cdCAgICAgICAgICAgIDB4QTYwNzgwODQsIDB4MTlGODUwOUUsIDB4RThFRkQ4NTUsIDB4NjFEOTk3MzUsXG5cdCAgICAgICAgICAgIDB4QTk2OUE3QUEsIDB4QzUwQzA2QzIsIDB4NUEwNEFCRkMsIDB4ODAwQkNBREMsXG5cdCAgICAgICAgICAgIDB4OUU0NDdBMkUsIDB4QzM0NTM0ODQsIDB4RkRENTY3MDUsIDB4MEUxRTlFQzksXG5cdCAgICAgICAgICAgIDB4REI3M0RCRDMsIDB4MTA1NTg4Q0QsIDB4Njc1RkRBNzksIDB4RTM2NzQzNDAsXG5cdCAgICAgICAgICAgIDB4QzVDNDM0NjUsIDB4NzEzRTM4RDgsIDB4M0QyOEY4OUUsIDB4RjE2REZGMjAsXG5cdCAgICAgICAgICAgIDB4MTUzRTIxRTcsIDB4OEZCMDNENEEsIDB4RTZFMzlGMkIsIDB4REI4M0FERjcgICBdLFxuXHQgICAgICAgIFsgICAweEU5M0Q1QTY4LCAweDk0ODE0MEY3LCAweEY2NEMyNjFDLCAweDk0NjkyOTM0LFxuXHQgICAgICAgICAgICAweDQxMTUyMEY3LCAweDc2MDJENEY3LCAweEJDRjQ2QjJFLCAweEQ0QTIwMDY4LFxuXHQgICAgICAgICAgICAweEQ0MDgyNDcxLCAweDMzMjBGNDZBLCAweDQzQjdENEI3LCAweDUwMDA2MUFGLFxuXHQgICAgICAgICAgICAweDFFMzlGNjJFLCAweDk3MjQ0NTQ2LCAweDE0MjE0Rjc0LCAweEJGOEI4ODQwLFxuXHQgICAgICAgICAgICAweDREOTVGQzFELCAweDk2QjU5MUFGLCAweDcwRjREREQzLCAweDY2QTAyRjQ1LFxuXHQgICAgICAgICAgICAweEJGQkMwOUVDLCAweDAzQkQ5Nzg1LCAweDdGQUM2REQwLCAweDMxQ0I4NTA0LFxuXHQgICAgICAgICAgICAweDk2RUIyN0IzLCAweDU1RkQzOTQxLCAweERBMjU0N0U2LCAweEFCQ0EwQTlBLFxuXHQgICAgICAgICAgICAweDI4NTA3ODI1LCAweDUzMDQyOUY0LCAweDBBMkM4NkRBLCAweEU5QjY2REZCLFxuXHQgICAgICAgICAgICAweDY4REMxNDYyLCAweEQ3NDg2OTAwLCAweDY4MEVDMEE0LCAweDI3QTE4REVFLFxuXHQgICAgICAgICAgICAweDRGM0ZGRUEyLCAweEU4ODdBRDhDLCAweEI1OENFMDA2LCAweDdBRjRENkI2LFxuXHQgICAgICAgICAgICAweEFBQ0UxRTdDLCAweEQzMzc1RkVDLCAweENFNzhBMzk5LCAweDQwNkIyQTQyLFxuXHQgICAgICAgICAgICAweDIwRkU5RTM1LCAweEQ5RjM4NUI5LCAweEVFMzlEN0FCLCAweDNCMTI0RThCLFxuXHQgICAgICAgICAgICAweDFEQzlGQUY3LCAweDRCNkQxODU2LCAweDI2QTM2NjMxLCAweEVBRTM5N0IyLFxuXHQgICAgICAgICAgICAweDNBNkVGQTc0LCAweERENUI0MzMyLCAweDY4NDFFN0Y3LCAweENBNzgyMEZCLFxuXHQgICAgICAgICAgICAweEZCMEFGNTRFLCAweEQ4RkVCMzk3LCAweDQ1NDA1NkFDLCAweEJBNDg5NTI3LFxuXHQgICAgICAgICAgICAweDU1NTMzQTNBLCAweDIwODM4RDg3LCAweEZFNkJBOUI3LCAweEQwOTY5NTRCLFxuXHQgICAgICAgICAgICAweDU1QTg2N0JDLCAweEExMTU5QTU4LCAweENDQTkyOTYzLCAweDk5RTFEQjMzLFxuXHQgICAgICAgICAgICAweEE2MkE0QTU2LCAweDNGMzEyNUY5LCAweDVFRjQ3RTFDLCAweDkwMjkzMTdDLFxuXHQgICAgICAgICAgICAweEZERjhFODAyLCAweDA0MjcyRjcwLCAweDgwQkIxNTVDLCAweDA1MjgyQ0UzLFxuXHQgICAgICAgICAgICAweDk1QzExNTQ4LCAweEU0QzY2RDIyLCAweDQ4QzExMzNGLCAweEM3MEY4NkRDLFxuXHQgICAgICAgICAgICAweDA3RjlDOUVFLCAweDQxMDQxRjBGLCAweDQwNDc3OUE0LCAweDVEODg2RTE3LFxuXHQgICAgICAgICAgICAweDMyNUY1MUVCLCAweEQ1OUJDMEQxLCAweEYyQkNDMThGLCAweDQxMTEzNTY0LFxuXHQgICAgICAgICAgICAweDI1N0I3ODM0LCAweDYwMkE5QzYwLCAweERGRjhFOEEzLCAweDFGNjM2QzFCLFxuXHQgICAgICAgICAgICAweDBFMTJCNEMyLCAweDAyRTEzMjlFLCAweEFGNjY0RkQxLCAweENBRDE4MTE1LFxuXHQgICAgICAgICAgICAweDZCMjM5NUUwLCAweDMzM0U5MkUxLCAweDNCMjQwQjYyLCAweEVFQkVCOTIyLFxuXHQgICAgICAgICAgICAweDg1QjJBMjBFLCAweEU2QkEwRDk5LCAweERFNzIwQzhDLCAweDJEQTJGNzI4LFxuXHQgICAgICAgICAgICAweEQwMTI3ODQ1LCAweDk1Qjc5NEZELCAweDY0N0QwODYyLCAweEU3Q0NGNUYwLFxuXHQgICAgICAgICAgICAweDU0NDlBMzZGLCAweDg3N0Q0OEZBLCAweEMzOURGRDI3LCAweEYzM0U4RDFFLFxuXHQgICAgICAgICAgICAweDBBNDc2MzQxLCAweDk5MkVGRjc0LCAweDNBNkY2RUFCLCAweEY0RjhGRDM3LFxuXHQgICAgICAgICAgICAweEE4MTJEQzYwLCAweEExRUJEREY4LCAweDk5MUJFMTRDLCAweERCNkU2QjBELFxuXHQgICAgICAgICAgICAweEM2N0I1NTEwLCAweDZENjcyQzM3LCAweDI3NjVENDNCLCAweERDRDBFODA0LFxuXHQgICAgICAgICAgICAweEYxMjkwREM3LCAweENDMDBGRkEzLCAweEI1MzkwRjkyLCAweDY5MEZFRDBCLFxuXHQgICAgICAgICAgICAweDY2N0I5RkZCLCAweENFREI3RDlDLCAweEEwOTFDRjBCLCAweEQ5MTU1RUEzLFxuXHQgICAgICAgICAgICAweEJCMTMyRjg4LCAweDUxNUJBRDI0LCAweDdCOTQ3OUJGLCAweDc2M0JENkVCLFxuXHQgICAgICAgICAgICAweDM3MzkyRUIzLCAweENDMTE1OTc5LCAweDgwMjZFMjk3LCAweEY0MkUzMTJELFxuXHQgICAgICAgICAgICAweDY4NDJBREE3LCAweEM2NkEyQjNCLCAweDEyNzU0Q0NDLCAweDc4MkVGMTFDLFxuXHQgICAgICAgICAgICAweDZBMTI0MjM3LCAweEI3OTI1MUU3LCAweDA2QTFCQkU2LCAweDRCRkI2MzUwLFxuXHQgICAgICAgICAgICAweDFBNkIxMDE4LCAweDExQ0FFREZBLCAweDNEMjVCREQ4LCAweEUyRTFDM0M5LFxuXHQgICAgICAgICAgICAweDQ0NDIxNjU5LCAweDBBMTIxMzg2LCAweEQ5MENFQzZFLCAweEQ1QUJFQTJBLFxuXHQgICAgICAgICAgICAweDY0QUY2NzRFLCAweERBODZBODVGLCAweEJFQkZFOTg4LCAweDY0RTRDM0ZFLFxuXHQgICAgICAgICAgICAweDlEQkM4MDU3LCAweEYwRjdDMDg2LCAweDYwNzg3QkY4LCAweDYwMDM2MDRELFxuXHQgICAgICAgICAgICAweEQxRkQ4MzQ2LCAweEY2MzgxRkIwLCAweDc3NDVBRTA0LCAweEQ3MzZGQ0NDLFxuXHQgICAgICAgICAgICAweDgzNDI2QjMzLCAweEYwMUVBQjcxLCAweEIwODA0MTg3LCAweDNDMDA1RTVGLFxuXHQgICAgICAgICAgICAweDc3QTA1N0JFLCAweEJERThBRTI0LCAweDU1NDY0Mjk5LCAweEJGNTgyRTYxLFxuXHQgICAgICAgICAgICAweDRFNThGNDhGLCAweEYyRERGREEyLCAweEY0NzRFRjM4LCAweDg3ODlCREMyLFxuXHQgICAgICAgICAgICAweDUzNjZGOUMzLCAweEM4QjM4RTc0LCAweEI0NzVGMjU1LCAweDQ2RkNEOUI5LFxuXHQgICAgICAgICAgICAweDdBRUIyNjYxLCAweDhCMURERjg0LCAweDg0NkEwRTc5LCAweDkxNUY5NUUyLFxuXHQgICAgICAgICAgICAweDQ2NkU1OThFLCAweDIwQjQ1NzcwLCAweDhDRDU1NTkxLCAweEM5MDJERTRDLFxuXHQgICAgICAgICAgICAweEI5MEJBQ0UxLCAweEJCODIwNUQwLCAweDExQTg2MjQ4LCAweDc1NzRBOTlFLFxuXHQgICAgICAgICAgICAweEI3N0YxOUI2LCAweEUwQTlEQzA5LCAweDY2MkQwOUExLCAweEM0MzI0NjMzLFxuXHQgICAgICAgICAgICAweEU4NUExRjAyLCAweDA5RjBCRThDLCAweDRBOTlBMDI1LCAweDFENkVGRTEwLFxuXHQgICAgICAgICAgICAweDFBQjkzRDFELCAweDBCQTVBNERGLCAweEExODZGMjBGLCAweDI4NjhGMTY5LFxuXHQgICAgICAgICAgICAweERDQjdEQTgzLCAweDU3MzkwNkZFLCAweEExRTJDRTlCLCAweDRGQ0Q3RjUyLFxuXHQgICAgICAgICAgICAweDUwMTE1RTAxLCAweEE3MDY4M0ZBLCAweEEwMDJCNUM0LCAweDBERTZEMDI3LFxuXHQgICAgICAgICAgICAweDlBRjg4QzI3LCAweDc3M0Y4NjQxLCAweEMzNjA0QzA2LCAweDYxQTgwNkI1LFxuXHQgICAgICAgICAgICAweEYwMTc3QTI4LCAweEMwRjU4NkUwLCAweDAwNjA1OEFBLCAweDMwREM3RDYyLFxuXHQgICAgICAgICAgICAweDExRTY5RUQ3LCAweDIzMzhFQTYzLCAweDUzQzJERDk0LCAweEMyQzIxNjM0LFxuXHQgICAgICAgICAgICAweEJCQ0JFRTU2LCAweDkwQkNCNkRFLCAweEVCRkM3REExLCAweENFNTkxRDc2LFxuXHQgICAgICAgICAgICAweDZGMDVFNDA5LCAweDRCN0MwMTg4LCAweDM5NzIwQTNELCAweDdDOTI3QzI0LFxuXHQgICAgICAgICAgICAweDg2RTM3MjVGLCAweDcyNEQ5REI5LCAweDFBQzE1QkI0LCAweEQzOUVCOEZDLFxuXHQgICAgICAgICAgICAweEVENTQ1NTc4LCAweDA4RkNBNUI1LCAweEQ4M0Q3Q0QzLCAweDREQUQwRkM0LFxuXHQgICAgICAgICAgICAweDFFNTBFRjVFLCAweEIxNjFFNkY4LCAweEEyODUxNEQ5LCAweDZDNTExMzNDLFxuXHQgICAgICAgICAgICAweDZGRDVDN0U3LCAweDU2RTE0RUM0LCAweDM2MkFCRkNFLCAweEREQzZDODM3LFxuXHQgICAgICAgICAgICAweEQ3OUEzMjM0LCAweDkyNjM4MjEyLCAweDY3MEVGQThFLCAweDQwNjAwMEUwICBdLFxuXHQgICAgICAgIFsgICAweDNBMzlDRTM3LCAweEQzRkFGNUNGLCAweEFCQzI3NzM3LCAweDVBQzUyRDFCLFxuXHQgICAgICAgICAgICAweDVDQjA2NzlFLCAweDRGQTMzNzQyLCAweEQzODIyNzQwLCAweDk5QkM5QkJFLFxuXHQgICAgICAgICAgICAweEQ1MTE4RTlELCAweEJGMEY3MzE1LCAweEQ2MkQxQzdFLCAweEM3MDBDNDdCLFxuXHQgICAgICAgICAgICAweEI3OEMxQjZCLCAweDIxQTE5MDQ1LCAweEIyNkVCMUJFLCAweDZBMzY2RUI0LFxuXHQgICAgICAgICAgICAweDU3NDhBQjJGLCAweEJDOTQ2RTc5LCAweEM2QTM3NkQyLCAweDY1NDlDMkM4LFxuXHQgICAgICAgICAgICAweDUzMEZGOEVFLCAweDQ2OERERTdELCAweEQ1NzMwQTFELCAweDRDRDA0REM2LFxuXHQgICAgICAgICAgICAweDI5MzlCQkRCLCAweEE5QkE0NjUwLCAweEFDOTUyNkU4LCAweEJFNUVFMzA0LFxuXHQgICAgICAgICAgICAweEExRkFENUYwLCAweDZBMkQ1MTlBLCAweDYzRUY4Q0UyLCAweDlBODZFRTIyLFxuXHQgICAgICAgICAgICAweEMwODlDMkI4LCAweDQzMjQyRUY2LCAweEE1MUUwM0FBLCAweDlDRjJEMEE0LFxuXHQgICAgICAgICAgICAweDgzQzA2MUJBLCAweDlCRTk2QTRELCAweDhGRTUxNTUwLCAweEJBNjQ1QkQ2LFxuXHQgICAgICAgICAgICAweDI4MjZBMkY5LCAweEE3M0EzQUUxLCAweDRCQTk5NTg2LCAweEVGNTU2MkU5LFxuXHQgICAgICAgICAgICAweEM3MkZFRkQzLCAweEY3NTJGN0RBLCAweDNGMDQ2RjY5LCAweDc3RkEwQTU5LFxuXHQgICAgICAgICAgICAweDgwRTRBOTE1LCAweDg3QjA4NjAxLCAweDlCMDlFNkFELCAweDNCM0VFNTkzLFxuXHQgICAgICAgICAgICAweEU5OTBGRDVBLCAweDlFMzRENzk3LCAweDJDRjBCN0Q5LCAweDAyMkI4QjUxLFxuXHQgICAgICAgICAgICAweDk2RDVBQzNBLCAweDAxN0RBNjdELCAweEQxQ0YzRUQ2LCAweDdDN0QyRDI4LFxuXHQgICAgICAgICAgICAweDFGOUYyNUNGLCAweEFERjJCODlCLCAweDVBRDZCNDcyLCAweDVBODhGNTRDLFxuXHQgICAgICAgICAgICAweEUwMjlBQzcxLCAweEUwMTlBNUU2LCAweDQ3QjBBQ0ZELCAweEVEOTNGQTlCLFxuXHQgICAgICAgICAgICAweEU4RDNDNDhELCAweDI4M0I1N0NDLCAweEY4RDU2NjI5LCAweDc5MTMyRTI4LFxuXHQgICAgICAgICAgICAweDc4NUYwMTkxLCAweEVENzU2MDU1LCAweEY3OTYwRTQ0LCAweEUzRDM1RThDLFxuXHQgICAgICAgICAgICAweDE1MDU2REQ0LCAweDg4RjQ2REJBLCAweDAzQTE2MTI1LCAweDA1NjRGMEJELFxuXHQgICAgICAgICAgICAweEMzRUI5RTE1LCAweDNDOTA1N0EyLCAweDk3MjcxQUVDLCAweEE5M0EwNzJBLFxuXHQgICAgICAgICAgICAweDFCM0Y2RDlCLCAweDFFNjMyMUY1LCAweEY1OUM2NkZCLCAweDI2RENGMzE5LFxuXHQgICAgICAgICAgICAweDc1MzNEOTI4LCAweEIxNTVGREY1LCAweDAzNTYzNDgyLCAweDhBQkEzQ0JCLFxuXHQgICAgICAgICAgICAweDI4NTE3NzExLCAweEMyMEFEOUY4LCAweEFCQ0M1MTY3LCAweENDQUQ5MjVGLFxuXHQgICAgICAgICAgICAweDRERTgxNzUxLCAweDM4MzBEQzhFLCAweDM3OUQ1ODYyLCAweDkzMjBGOTkxLFxuXHQgICAgICAgICAgICAweEVBN0E5MEMyLCAweEZCM0U3QkNFLCAweDUxMjFDRTY0LCAweDc3NEZCRTMyLFxuXHQgICAgICAgICAgICAweEE4QjZFMzdFLCAweEMzMjkzRDQ2LCAweDQ4REU1MzY5LCAweDY0MTNFNjgwLFxuXHQgICAgICAgICAgICAweEEyQUUwODEwLCAweERENkRCMjI0LCAweDY5ODUyREZELCAweDA5MDcyMTY2LFxuXHQgICAgICAgICAgICAweEIzOUE0NjBBLCAweDY0NDVDMERELCAweDU4NkNERUNGLCAweDFDMjBDOEFFLFxuXHQgICAgICAgICAgICAweDVCQkVGN0RELCAweDFCNTg4RDQwLCAweENDRDIwMTdGLCAweDZCQjRFM0JCLFxuXHQgICAgICAgICAgICAweEREQTI2QTdFLCAweDNBNTlGRjQ1LCAweDNFMzUwQTQ0LCAweEJDQjRDREQ1LFxuXHQgICAgICAgICAgICAweDcyRUFDRUE4LCAweEZBNjQ4NEJCLCAweDhENjYxMkFFLCAweEJGM0M2RjQ3LFxuXHQgICAgICAgICAgICAweEQyOUJFNDYzLCAweDU0MkY1RDlFLCAweEFFQzI3NzFCLCAweEY2NEU2MzcwLFxuXHQgICAgICAgICAgICAweDc0MEUwRDhELCAweEU3NUIxMzU3LCAweEY4NzIxNjcxLCAweEFGNTM3RDVELFxuXHQgICAgICAgICAgICAweDQwNDBDQjA4LCAweDRFQjRFMkNDLCAweDM0RDI0NjZBLCAweDAxMTVBRjg0LFxuXHQgICAgICAgICAgICAweEUxQjAwNDI4LCAweDk1OTgzQTFELCAweDA2Qjg5RkI0LCAweENFNkVBMDQ4LFxuXHQgICAgICAgICAgICAweDZGM0YzQjgyLCAweDM1MjBBQjgyLCAweDAxMUExRDRCLCAweDI3NzIyN0Y4LFxuXHQgICAgICAgICAgICAweDYxMTU2MEIxLCAweEU3OTMzRkRDLCAweEJCM0E3OTJCLCAweDM0NDUyNUJELFxuXHQgICAgICAgICAgICAweEEwODgzOUUxLCAweDUxQ0U3OTRCLCAweDJGMzJDOUI3LCAweEEwMUZCQUM5LFxuXHQgICAgICAgICAgICAweEUwMUNDODdFLCAweEJDQzdEMUY2LCAweENGMDExMUMzLCAweEExRThBQUM3LFxuXHQgICAgICAgICAgICAweDFBOTA4NzQ5LCAweEQ0NEZCRDlBLCAweEQwREFERUNCLCAweEQ1MEFEQTM4LFxuXHQgICAgICAgICAgICAweDAzMzlDMzJBLCAweEM2OTEzNjY3LCAweDhERjkzMTdDLCAweEUwQjEyQjRGLFxuXHQgICAgICAgICAgICAweEY3OUU1OUI3LCAweDQzRjVCQjNBLCAweEYyRDUxOUZGLCAweDI3RDk0NTlDLFxuXHQgICAgICAgICAgICAweEJGOTcyMjJDLCAweDE1RTZGQzJBLCAweDBGOTFGQzcxLCAweDlCOTQxNTI1LFxuXHQgICAgICAgICAgICAweEZBRTU5MzYxLCAweENFQjY5Q0VCLCAweEMyQTg2NDU5LCAweDEyQkFBOEQxLFxuXHQgICAgICAgICAgICAweEI2QzEwNzVFLCAweEUzMDU2QTBDLCAweDEwRDI1MDY1LCAweENCMDNBNDQyLFxuXHQgICAgICAgICAgICAweEUwRUM2RTBFLCAweDE2OThEQjNCLCAweDRDOThBMEJFLCAweDMyNzhFOTY0LFxuXHQgICAgICAgICAgICAweDlGMUY5NTMyLCAweEUwRDM5MkRGLCAweEQzQTAzNDJCLCAweDg5NzFGMjFFLFxuXHQgICAgICAgICAgICAweDFCMEE3NDQxLCAweDRCQTMzNDhDLCAweEM1QkU3MTIwLCAweEMzNzYzMkQ4LFxuXHQgICAgICAgICAgICAweERGMzU5RjhELCAweDlCOTkyRjJFLCAweEU2MEI2RjQ3LCAweDBGRTNGMTFELFxuXHQgICAgICAgICAgICAweEU1NENEQTU0LCAweDFFREFEODkxLCAweENFNjI3OUNGLCAweENEM0U3RTZGLFxuXHQgICAgICAgICAgICAweDE2MThCMTY2LCAweEZEMkMxRDA1LCAweDg0OEZEMkM1LCAweEY2RkIyMjk5LFxuXHQgICAgICAgICAgICAweEY1MjNGMzU3LCAweEE2MzI3NjIzLCAweDkzQTgzNTMxLCAweDU2Q0NDRDAyLFxuXHQgICAgICAgICAgICAweEFDRjA4MTYyLCAweDVBNzVFQkI1LCAweDZFMTYzNjk3LCAweDg4RDI3M0NDLFxuXHQgICAgICAgICAgICAweERFOTY2MjkyLCAweDgxQjk0OUQwLCAweDRDNTA5MDFCLCAweDcxQzY1NjE0LFxuXHQgICAgICAgICAgICAweEU2QzZDN0JELCAweDMyN0ExNDBBLCAweDQ1RTFEMDA2LCAweEMzRjI3QjlBLFxuXHQgICAgICAgICAgICAweEM5QUE1M0ZELCAweDYyQTgwRjAwLCAweEJCMjVCRkUyLCAweDM1QkREMkY2LFxuXHQgICAgICAgICAgICAweDcxMTI2OTA1LCAweEIyMDQwMjIyLCAweEI2Q0JDRjdDLCAweENENzY5QzJCLFxuXHQgICAgICAgICAgICAweDUzMTEzRUMwLCAweDE2NDBFM0QzLCAweDM4QUJCRDYwLCAweDI1NDdBREYwLFxuXHQgICAgICAgICAgICAweEJBMzgyMDlDLCAweEY3NDZDRTc2LCAweDc3QUZBMUM1LCAweDIwNzU2MDYwLFxuXHQgICAgICAgICAgICAweDg1Q0JGRTRFLCAweDhBRTg4REQ4LCAweDdBQUFGOUIwLCAweDRDRjlBQTdFLFxuXHQgICAgICAgICAgICAweDE5NDhDMjVDLCAweDAyRkI4QThDLCAweDAxQzM2QUU0LCAweEQ2RUJFMUY5LFxuXHQgICAgICAgICAgICAweDkwRDRGODY5LCAweEE2NUNERUEwLCAweDNGMDkyNTJELCAweEMyMDhFNjlGLFxuXHQgICAgICAgICAgICAweEI3NEU2MTMyLCAweENFNzdFMjVCLCAweDU3OEZERkUzLCAweDNBQzM3MkU2ICBdXG5cdCAgICBdO1xuXG5cdCAgICB2YXIgQkxPV0ZJU0hfQ1RYID0ge1xuXHQgICAgICAgIHBib3g6IFtdLFxuXHQgICAgICAgIHNib3g6IFtdXG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEYoY3R4LCB4KXtcblx0ICAgICAgICBsZXQgYSA9ICh4ID4+IDI0KSAmIDB4RkY7XG5cdCAgICAgICAgbGV0IGIgPSAoeCA+PiAxNikgJiAweEZGO1xuXHQgICAgICAgIGxldCBjID0gKHggPj4gOCkgJiAweEZGO1xuXHQgICAgICAgIGxldCBkID0geCAmIDB4RkY7XG5cblx0ICAgICAgICBsZXQgeSA9IGN0eC5zYm94WzBdW2FdICsgY3R4LnNib3hbMV1bYl07XG5cdCAgICAgICAgeSA9IHkgXiBjdHguc2JveFsyXVtjXTtcblx0ICAgICAgICB5ID0geSArIGN0eC5zYm94WzNdW2RdO1xuXG5cdCAgICAgICAgcmV0dXJuIHk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEJsb3dGaXNoX0VuY3J5cHQoY3R4LCBsZWZ0LCByaWdodCl7XG5cdCAgICAgICAgbGV0IFhsID0gbGVmdDtcblx0ICAgICAgICBsZXQgWHIgPSByaWdodDtcblx0ICAgICAgICBsZXQgdGVtcDtcblxuXHQgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBOOyArK2kpe1xuXHQgICAgICAgICAgICBYbCA9IFhsIF4gY3R4LnBib3hbaV07XG5cdCAgICAgICAgICAgIFhyID0gRihjdHgsIFhsKSBeIFhyO1xuXG5cdCAgICAgICAgICAgIHRlbXAgPSBYbDtcblx0ICAgICAgICAgICAgWGwgPSBYcjtcblx0ICAgICAgICAgICAgWHIgPSB0ZW1wO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRlbXAgPSBYbDtcblx0ICAgICAgICBYbCA9IFhyO1xuXHQgICAgICAgIFhyID0gdGVtcDtcblxuXHQgICAgICAgIFhyID0gWHIgXiBjdHgucGJveFtOXTtcblx0ICAgICAgICBYbCA9IFhsIF4gY3R4LnBib3hbTiArIDFdO1xuXG5cdCAgICAgICAgcmV0dXJuIHtsZWZ0OiBYbCwgcmlnaHQ6IFhyfTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gQmxvd0Zpc2hfRGVjcnlwdChjdHgsIGxlZnQsIHJpZ2h0KXtcblx0ICAgICAgICBsZXQgWGwgPSBsZWZ0O1xuXHQgICAgICAgIGxldCBYciA9IHJpZ2h0O1xuXHQgICAgICAgIGxldCB0ZW1wO1xuXG5cdCAgICAgICAgZm9yKGxldCBpID0gTiArIDE7IGkgPiAxOyAtLWkpe1xuXHQgICAgICAgICAgICBYbCA9IFhsIF4gY3R4LnBib3hbaV07XG5cdCAgICAgICAgICAgIFhyID0gRihjdHgsIFhsKSBeIFhyO1xuXG5cdCAgICAgICAgICAgIHRlbXAgPSBYbDtcblx0ICAgICAgICAgICAgWGwgPSBYcjtcblx0ICAgICAgICAgICAgWHIgPSB0ZW1wO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRlbXAgPSBYbDtcblx0ICAgICAgICBYbCA9IFhyO1xuXHQgICAgICAgIFhyID0gdGVtcDtcblxuXHQgICAgICAgIFhyID0gWHIgXiBjdHgucGJveFsxXTtcblx0ICAgICAgICBYbCA9IFhsIF4gY3R4LnBib3hbMF07XG5cblx0ICAgICAgICByZXR1cm4ge2xlZnQ6IFhsLCByaWdodDogWHJ9O1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIEluaXRpYWxpemF0aW9uIGN0eCdzIHBib3ggYW5kIHNib3guXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtPYmplY3R9IGN0eCBUaGUgb2JqZWN0IGhhcyBwYm94IGFuZCBzYm94LlxuXHQgICAgICogQHBhcmFtIHtBcnJheX0ga2V5IEFuIGFycmF5IG9mIDMyLWJpdCB3b3Jkcy5cblx0ICAgICAqIEBwYXJhbSB7aW50fSBrZXlzaXplIFRoZSBsZW5ndGggb2YgdGhlIGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICBCbG93RmlzaEluaXQoQkxPV0ZJU0hfQ1RYLCBrZXksIDEyOC8zMik7XG5cdCAgICAgKi9cblx0ICAgIGZ1bmN0aW9uIEJsb3dGaXNoSW5pdChjdHgsIGtleSwga2V5c2l6ZSlcblx0ICAgIHtcblx0ICAgICAgICBmb3IobGV0IFJvdyA9IDA7IFJvdyA8IDQ7IFJvdysrKVxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgY3R4LnNib3hbUm93XSA9IFtdO1xuXHQgICAgICAgICAgICBmb3IobGV0IENvbCA9IDA7IENvbCA8IDI1NjsgQ29sKyspXG5cdCAgICAgICAgICAgIHtcblx0ICAgICAgICAgICAgICAgIGN0eC5zYm94W1Jvd11bQ29sXSA9IE9SSUdfU1tSb3ddW0NvbF07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICBsZXQga2V5SW5kZXggPSAwO1xuXHQgICAgICAgIGZvcihsZXQgaW5kZXggPSAwOyBpbmRleCA8IE4gKyAyOyBpbmRleCsrKVxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgY3R4LnBib3hbaW5kZXhdID0gT1JJR19QW2luZGV4XSBeIGtleVtrZXlJbmRleF07XG5cdCAgICAgICAgICAgIGtleUluZGV4Kys7XG5cdCAgICAgICAgICAgIGlmKGtleUluZGV4ID49IGtleXNpemUpXG5cdCAgICAgICAgICAgIHtcblx0ICAgICAgICAgICAgICAgIGtleUluZGV4ID0gMDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGxldCBEYXRhMSA9IDA7XG5cdCAgICAgICAgbGV0IERhdGEyID0gMDtcblx0ICAgICAgICBsZXQgcmVzID0gMDtcblx0ICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgTiArIDI7IGkgKz0gMilcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIHJlcyA9IEJsb3dGaXNoX0VuY3J5cHQoY3R4LCBEYXRhMSwgRGF0YTIpO1xuXHQgICAgICAgICAgICBEYXRhMSA9IHJlcy5sZWZ0O1xuXHQgICAgICAgICAgICBEYXRhMiA9IHJlcy5yaWdodDtcblx0ICAgICAgICAgICAgY3R4LnBib3hbaV0gPSBEYXRhMTtcblx0ICAgICAgICAgICAgY3R4LnBib3hbaSArIDFdID0gRGF0YTI7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IDQ7IGkrKylcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCAyNTY7IGogKz0gMilcblx0ICAgICAgICAgICAge1xuXHQgICAgICAgICAgICAgICAgcmVzID0gQmxvd0Zpc2hfRW5jcnlwdChjdHgsIERhdGExLCBEYXRhMik7XG5cdCAgICAgICAgICAgICAgICBEYXRhMSA9IHJlcy5sZWZ0O1xuXHQgICAgICAgICAgICAgICAgRGF0YTIgPSByZXMucmlnaHQ7XG5cdCAgICAgICAgICAgICAgICBjdHguc2JveFtpXVtqXSA9IERhdGExO1xuXHQgICAgICAgICAgICAgICAgY3R4LnNib3hbaV1baiArIDFdID0gRGF0YTI7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBCbG93ZmlzaCBibG9jayBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgQmxvd2Zpc2ggPSBDX2FsZ28uQmxvd2Zpc2ggPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNraXAgcmVzZXQgb2YgblJvdW5kcyBoYXMgYmVlbiBzZXQgYmVmb3JlIGFuZCBrZXkgZGlkIG5vdCBjaGFuZ2Vcblx0ICAgICAgICAgICAgaWYgKHRoaXMuX2tleVByaW9yUmVzZXQgPT09IHRoaXMuX2tleSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9rZXlQcmlvclJlc2V0ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0ga2V5LnNpZ0J5dGVzIC8gNDtcblxuXHQgICAgICAgICAgICAvL0luaXRpYWxpemF0aW9uIHBib3ggYW5kIHNib3hcblx0ICAgICAgICAgICAgQmxvd0Zpc2hJbml0KEJMT1dGSVNIX0NUWCwga2V5V29yZHMsIGtleVNpemUpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdmFyIHJlcyA9IEJsb3dGaXNoX0VuY3J5cHQoQkxPV0ZJU0hfQ1RYLCBNW29mZnNldF0sIE1bb2Zmc2V0ICsgMV0pO1xuXHQgICAgICAgICAgICBNW29mZnNldF0gPSByZXMubGVmdDtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IHJlcy5yaWdodDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHZhciByZXMgPSBCbG93RmlzaF9EZWNyeXB0KEJMT1dGSVNIX0NUWCwgTVtvZmZzZXRdLCBNW29mZnNldCArIDFdKTtcblx0ICAgICAgICAgICAgTVtvZmZzZXRdID0gcmVzLmxlZnQ7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSByZXMucmlnaHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNjQvMzIsXG5cblx0ICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5CbG93ZmlzaC5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLkJsb3dmaXNoLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLkJsb3dmaXNoID0gQmxvY2tDaXBoZXIuX2NyZWF0ZUhlbHBlcihCbG93ZmlzaCk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuQmxvd2Zpc2g7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2V2cGtkZlwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIENpcGhlciBjb3JlIGNvbXBvbmVudHMuXG5cdCAqL1xuXHRDcnlwdG9KUy5saWIuQ2lwaGVyIHx8IChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSA9IENfbGliLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG07XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblx0ICAgIHZhciBVdGY4ID0gQ19lbmMuVXRmODtcblx0ICAgIHZhciBCYXNlNjQgPSBDX2VuYy5CYXNlNjQ7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIEV2cEtERiA9IENfYWxnby5FdnBLREY7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBjaXBoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGtleVNpemUgVGhpcyBjaXBoZXIncyBrZXkgc2l6ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gaXZTaXplIFRoaXMgY2lwaGVyJ3MgSVYgc2l6ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gX0VOQ19YRk9STV9NT0RFIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIGVuY3J5cHRpb24gbW9kZS5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBfREVDX1hGT1JNX01PREUgQSBjb25zdGFudCByZXByZXNlbnRpbmcgZGVjcnlwdGlvbiBtb2RlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ2lwaGVyID0gQ19saWIuQ2lwaGVyID0gQnVmZmVyZWRCbG9ja0FsZ29yaXRobS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBpdiBUaGUgSVYgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKCksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgY2lwaGVyIGluIGVuY3J5cHRpb24gbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyfSBBIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlciA9IENyeXB0b0pTLmFsZ28uQUVTLmNyZWF0ZUVuY3J5cHRvcihrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZUVuY3J5cHRvcjogZnVuY3Rpb24gKGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSwga2V5LCBjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgY2lwaGVyIGluIGRlY3J5cHRpb24gbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyfSBBIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlciA9IENyeXB0b0pTLmFsZ28uQUVTLmNyZWF0ZURlY3J5cHRvcihrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZURlY3J5cHRvcjogZnVuY3Rpb24gKGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSwga2V5LCBjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgY2lwaGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHhmb3JtTW9kZSBFaXRoZXIgdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiB0cmFuc29ybWF0aW9uIG1vZGUgY29uc3RhbnQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXIgPSBDcnlwdG9KUy5hbGdvLkFFUy5jcmVhdGUoQ3J5cHRvSlMuYWxnby5BRVMuX0VOQ19YRk9STV9NT0RFLCBrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uICh4Zm9ybU1vZGUsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIFN0b3JlIHRyYW5zZm9ybSBtb2RlIGFuZCBrZXlcblx0ICAgICAgICAgICAgdGhpcy5feGZvcm1Nb2RlID0geGZvcm1Nb2RlO1xuXHQgICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgY2lwaGVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBjaXBoZXIucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBSZXNldCBkYXRhIGJ1ZmZlclxuXHQgICAgICAgICAgICBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtLnJlc2V0LmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1jaXBoZXIgbG9naWNcblx0ICAgICAgICAgICAgdGhpcy5fZG9SZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBZGRzIGRhdGEgdG8gYmUgZW5jcnlwdGVkIG9yIGRlY3J5cHRlZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gZGF0YVVwZGF0ZSBUaGUgZGF0YSB0byBlbmNyeXB0IG9yIGRlY3J5cHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkYXRhIGFmdGVyIHByb2Nlc3NpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIucHJvY2VzcygnZGF0YScpO1xuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLnByb2Nlc3Mod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwcm9jZXNzOiBmdW5jdGlvbiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBBcHBlbmRcblx0ICAgICAgICAgICAgdGhpcy5fYXBwZW5kKGRhdGFVcGRhdGUpO1xuXG5cdCAgICAgICAgICAgIC8vIFByb2Nlc3MgYXZhaWxhYmxlIGJsb2Nrc1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2VzcygpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBGaW5hbGl6ZXMgdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiBwcm9jZXNzLlxuXHQgICAgICAgICAqIE5vdGUgdGhhdCB0aGUgZmluYWxpemUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgZGVzdHJ1Y3RpdmUsIHJlYWQtb25jZSBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGRhdGFVcGRhdGUgVGhlIGZpbmFsIGRhdGEgdG8gZW5jcnlwdCBvciBkZWNyeXB0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGF0YSBhZnRlciBmaW5hbCBwcm9jZXNzaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLmZpbmFsaXplKCk7XG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIuZmluYWxpemUoJ2RhdGEnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5maW5hbGl6ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGZpbmFsaXplOiBmdW5jdGlvbiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBGaW5hbCBkYXRhIHVwZGF0ZVxuXHQgICAgICAgICAgICBpZiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kKGRhdGFVcGRhdGUpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1jaXBoZXIgbG9naWNcblx0ICAgICAgICAgICAgdmFyIGZpbmFsUHJvY2Vzc2VkRGF0YSA9IHRoaXMuX2RvRmluYWxpemUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gZmluYWxQcm9jZXNzZWREYXRhO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDEyOC8zMixcblxuXHQgICAgICAgIF9FTkNfWEZPUk1fTU9ERTogMSxcblxuXHQgICAgICAgIF9ERUNfWEZPUk1fTU9ERTogMixcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgc2hvcnRjdXQgZnVuY3Rpb25zIHRvIGEgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciB0byBjcmVhdGUgYSBoZWxwZXIgZm9yLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBlbmNyeXB0IGFuZCBkZWNyeXB0IHNob3J0Y3V0IGZ1bmN0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIEFFUyA9IENyeXB0b0pTLmxpYi5DaXBoZXIuX2NyZWF0ZUhlbHBlcihDcnlwdG9KUy5hbGdvLkFFUyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2NyZWF0ZUhlbHBlcjogKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2lwaGVyU3RyYXRlZ3koa2V5KSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGtleSA9PSAnc3RyaW5nJykge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXNzd29yZEJhc2VkQ2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphYmxlQ2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjaXBoZXIpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgICAgICAgICAgZW5jcnlwdDogZnVuY3Rpb24gKG1lc3NhZ2UsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RDaXBoZXJTdHJhdGVneShrZXkpLmVuY3J5cHQoY2lwaGVyLCBtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAgICAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXJ0ZXh0LCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0Q2lwaGVyU3RyYXRlZ3koa2V5KS5kZWNyeXB0KGNpcGhlciwgY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfSgpKVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBzdHJlYW0gY2lwaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG51bWJlciBvZiAzMi1iaXQgd29yZHMgdGhpcyBjaXBoZXIgb3BlcmF0ZXMgb24uIERlZmF1bHQ6IDEgKDMyIGJpdHMpXG5cdCAgICAgKi9cblx0ICAgIHZhciBTdHJlYW1DaXBoZXIgPSBDX2xpYi5TdHJlYW1DaXBoZXIgPSBDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBQcm9jZXNzIHBhcnRpYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHZhciBmaW5hbFByb2Nlc3NlZEJsb2NrcyA9IHRoaXMuX3Byb2Nlc3MoISEnZmx1c2gnKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRCbG9ja3M7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTW9kZSBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX21vZGUgPSBDLm1vZGUgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBiYXNlIGJsb2NrIGNpcGhlciBtb2RlIHRlbXBsYXRlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQmxvY2tDaXBoZXJNb2RlID0gQ19saWIuQmxvY2tDaXBoZXJNb2RlID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgdGhpcyBtb2RlIGZvciBlbmNyeXB0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBBIGJsb2NrIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBpdiBUaGUgSVYgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBtb2RlID0gQ3J5cHRvSlMubW9kZS5DQkMuY3JlYXRlRW5jcnlwdG9yKGNpcGhlciwgaXYud29yZHMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZUVuY3J5cHRvcjogZnVuY3Rpb24gKGNpcGhlciwgaXYpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZShjaXBoZXIsIGl2KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyB0aGlzIG1vZGUgZm9yIGRlY3J5cHRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIEEgYmxvY2sgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGl2IFRoZSBJViB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG1vZGUgPSBDcnlwdG9KUy5tb2RlLkNCQy5jcmVhdGVEZWNyeXB0b3IoY2lwaGVyLCBpdi53b3Jkcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY3JlYXRlRGVjcnlwdG9yOiBmdW5jdGlvbiAoY2lwaGVyLCBpdikge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKGNpcGhlciwgaXYpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgQSBibG9jayBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gaXYgVGhlIElWIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbW9kZSA9IENyeXB0b0pTLm1vZGUuQ0JDLkVuY3J5cHRvci5jcmVhdGUoY2lwaGVyLCBpdi53b3Jkcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNpcGhlciwgaXYpIHtcblx0ICAgICAgICAgICAgdGhpcy5fY2lwaGVyID0gY2lwaGVyO1xuXHQgICAgICAgICAgICB0aGlzLl9pdiA9IGl2O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIENpcGhlciBCbG9jayBDaGFpbmluZyBtb2RlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ0JDID0gQ19tb2RlLkNCQyA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQWJzdHJhY3QgYmFzZSBDQkMgbW9kZS5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICB2YXIgQ0JDID0gQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ0JDIGVuY3J5cHRvci5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBDQkMuRW5jcnlwdG9yID0gQ0JDLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBQcm9jZXNzZXMgdGhlIGRhdGEgYmxvY2sgYXQgb2Zmc2V0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyBUaGUgZGF0YSB3b3JkcyB0byBvcGVyYXRlIG9uLlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IFRoZSBvZmZzZXQgd2hlcmUgdGhlIGJsb2NrIHN0YXJ0cy5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIG1vZGUucHJvY2Vzc0Jsb2NrKGRhdGEud29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gWE9SIGFuZCBlbmNyeXB0XG5cdCAgICAgICAgICAgICAgICB4b3JCbG9jay5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSk7XG5cdCAgICAgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ0JDIGRlY3J5cHRvci5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBDQkMuRGVjcnlwdG9yID0gQ0JDLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBQcm9jZXNzZXMgdGhlIGRhdGEgYmxvY2sgYXQgb2Zmc2V0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyBUaGUgZGF0YSB3b3JkcyB0byBvcGVyYXRlIG9uLlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IFRoZSBvZmZzZXQgd2hlcmUgdGhlIGJsb2NrIHN0YXJ0cy5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIG1vZGUucHJvY2Vzc0Jsb2NrKGRhdGEud29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBibG9jayB0byB1c2Ugd2l0aCBuZXh0IGJsb2NrXG5cdCAgICAgICAgICAgICAgICB2YXIgdGhpc0Jsb2NrID0gd29yZHMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBEZWNyeXB0IGFuZCBYT1Jcblx0ICAgICAgICAgICAgICAgIGNpcGhlci5kZWNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAgICB4b3JCbG9jay5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFRoaXMgYmxvY2sgYmVjb21lcyB0aGUgcHJldmlvdXMgYmxvY2tcblx0ICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHRoaXNCbG9jaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXG5cdCAgICAgICAgZnVuY3Rpb24geG9yQmxvY2sod29yZHMsIG9mZnNldCwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgICAgIHZhciBibG9jaztcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblxuXHQgICAgICAgICAgICAvLyBDaG9vc2UgbWl4aW5nIGJsb2NrXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgYmxvY2sgPSBpdjtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBibG9jayA9IHRoaXMuX3ByZXZCbG9jaztcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFhPUiBibG9ja3Ncblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0gYmxvY2tbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gQ0JDO1xuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBQYWRkaW5nIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfcGFkID0gQy5wYWQgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBQS0NTICM1LzcgcGFkZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFBrY3M3ID0gQ19wYWQuUGtjczcgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUGFkcyBkYXRhIHVzaW5nIHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiBQS0NTICM1LzcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gZGF0YSBUaGUgZGF0YSB0byBwYWQuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbXVsdGlwbGUgdGhhdCB0aGUgZGF0YSBzaG91bGQgYmUgcGFkZGVkIHRvLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBDcnlwdG9KUy5wYWQuUGtjczcucGFkKHdvcmRBcnJheSwgNCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgcGFkZGluZyBieXRlc1xuXHQgICAgICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGJsb2NrU2l6ZUJ5dGVzIC0gZGF0YS5zaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBwYWRkaW5nIHdvcmRcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdXb3JkID0gKG5QYWRkaW5nQnl0ZXMgPDwgMjQpIHwgKG5QYWRkaW5nQnl0ZXMgPDwgMTYpIHwgKG5QYWRkaW5nQnl0ZXMgPDwgOCkgfCBuUGFkZGluZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nV29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuUGFkZGluZ0J5dGVzOyBpICs9IDQpIHtcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmdXb3Jkcy5wdXNoKHBhZGRpbmdXb3JkKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIgcGFkZGluZyA9IFdvcmRBcnJheS5jcmVhdGUocGFkZGluZ1dvcmRzLCBuUGFkZGluZ0J5dGVzKTtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhLmNvbmNhdChwYWRkaW5nKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogVW5wYWRzIGRhdGEgdGhhdCBoYWQgYmVlbiBwYWRkZWQgdXNpbmcgdGhlIGFsZ29yaXRobSBkZWZpbmVkIGluIFBLQ1MgIzUvNy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBkYXRhIFRoZSBkYXRhIHRvIHVucGFkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBDcnlwdG9KUy5wYWQuUGtjczcudW5wYWQod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gZGF0YS53b3Jkc1soZGF0YS5zaWdCeXRlcyAtIDEpID4+PiAyXSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgLy8gUmVtb3ZlIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBibG9jayBjaXBoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbnVtYmVyIG9mIDMyLWJpdCB3b3JkcyB0aGlzIGNpcGhlciBvcGVyYXRlcyBvbi4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKi9cblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyID0gQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtNb2RlfSBtb2RlIFRoZSBibG9jayBtb2RlIHRvIHVzZS4gRGVmYXVsdDogQ0JDXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtQYWRkaW5nfSBwYWRkaW5nIFRoZSBwYWRkaW5nIHN0cmF0ZWd5IHRvIHVzZS4gRGVmYXVsdDogUGtjczdcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IENpcGhlci5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgbW9kZTogQ0JDLFxuXHQgICAgICAgICAgICBwYWRkaW5nOiBQa2NzN1xuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIG1vZGVDcmVhdG9yO1xuXG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGNpcGhlclxuXHQgICAgICAgICAgICBDaXBoZXIucmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNmZyA9IHRoaXMuY2ZnO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSBjZmcuaXY7XG5cdCAgICAgICAgICAgIHZhciBtb2RlID0gY2ZnLm1vZGU7XG5cblx0ICAgICAgICAgICAgLy8gUmVzZXQgYmxvY2sgbW9kZVxuXHQgICAgICAgICAgICBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0VOQ19YRk9STV9NT0RFKSB7XG5cdCAgICAgICAgICAgICAgICBtb2RlQ3JlYXRvciA9IG1vZGUuY3JlYXRlRW5jcnlwdG9yO1xuXHQgICAgICAgICAgICB9IGVsc2UgLyogaWYgKHRoaXMuX3hmb3JtTW9kZSA9PSB0aGlzLl9ERUNfWEZPUk1fTU9ERSkgKi8ge1xuXHQgICAgICAgICAgICAgICAgbW9kZUNyZWF0b3IgPSBtb2RlLmNyZWF0ZURlY3J5cHRvcjtcblx0ICAgICAgICAgICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGJsb2NrIGluIHRoZSBidWZmZXIgZm9yIHVucGFkZGluZ1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbWluQnVmZmVyU2l6ZSA9IDE7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBpZiAodGhpcy5fbW9kZSAmJiB0aGlzLl9tb2RlLl9fY3JlYXRvciA9PSBtb2RlQ3JlYXRvcikge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbW9kZS5pbml0KHRoaXMsIGl2ICYmIGl2LndvcmRzKTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21vZGUgPSBtb2RlQ3JlYXRvci5jYWxsKG1vZGUsIHRoaXMsIGl2ICYmIGl2LndvcmRzKTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21vZGUuX19jcmVhdG9yID0gbW9kZUNyZWF0b3I7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGZpbmFsUHJvY2Vzc2VkQmxvY2tzO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZztcblxuXHQgICAgICAgICAgICAvLyBGaW5hbGl6ZVxuXHQgICAgICAgICAgICBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0VOQ19YRk9STV9NT0RFKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBQYWQgZGF0YVxuXHQgICAgICAgICAgICAgICAgcGFkZGluZy5wYWQodGhpcy5fZGF0YSwgdGhpcy5ibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgZmluYWxQcm9jZXNzZWRCbG9ja3MgPSB0aGlzLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cdCAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0RFQ19YRk9STV9NT0RFKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgZmluYWxQcm9jZXNzZWRCbG9ja3MgPSB0aGlzLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFVucGFkIGRhdGFcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmcudW5wYWQoZmluYWxQcm9jZXNzZWRCbG9ja3MpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZpbmFsUHJvY2Vzc2VkQmxvY2tzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDEyOC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQSBjb2xsZWN0aW9uIG9mIGNpcGhlciBwYXJhbWV0ZXJzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBjaXBoZXJ0ZXh0IFRoZSByYXcgY2lwaGVydGV4dC5cblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBrZXkgVGhlIGtleSB0byB0aGlzIGNpcGhlcnRleHQuXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gaXYgVGhlIElWIHVzZWQgaW4gdGhlIGNpcGhlcmluZyBvcGVyYXRpb24uXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gc2FsdCBUaGUgc2FsdCB1c2VkIHdpdGggYSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7Q2lwaGVyfSBhbGdvcml0aG0gVGhlIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKiBAcHJvcGVydHkge01vZGV9IG1vZGUgVGhlIGJsb2NrIG1vZGUgdXNlZCBpbiB0aGUgY2lwaGVyaW5nIG9wZXJhdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7UGFkZGluZ30gcGFkZGluZyBUaGUgcGFkZGluZyBzY2hlbWUgdXNlZCBpbiB0aGUgY2lwaGVyaW5nIG9wZXJhdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIGJsb2NrIHNpemUgb2YgdGhlIGNpcGhlci5cblx0ICAgICAqIEBwcm9wZXJ0eSB7Rm9ybWF0fSBmb3JtYXR0ZXIgVGhlIGRlZmF1bHQgZm9ybWF0dGluZyBzdHJhdGVneSB0byBjb252ZXJ0IHRoaXMgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBzdHJpbmcuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDaXBoZXJQYXJhbXMgPSBDX2xpYi5DaXBoZXJQYXJhbXMgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNpcGhlclBhcmFtcyBBbiBvYmplY3Qgd2l0aCBhbnkgb2YgdGhlIHBvc3NpYmxlIGNpcGhlciBwYXJhbWV0ZXJzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyUGFyYW1zID0gQ3J5cHRvSlMubGliLkNpcGhlclBhcmFtcy5jcmVhdGUoe1xuXHQgICAgICAgICAqICAgICAgICAgY2lwaGVydGV4dDogY2lwaGVydGV4dFdvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIGtleToga2V5V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAgaXY6IGl2V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAgc2FsdDogc2FsdFdvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIGFsZ29yaXRobTogQ3J5cHRvSlMuYWxnby5BRVMsXG5cdCAgICAgICAgICogICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcblx0ICAgICAgICAgKiAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5QS0NTNyxcblx0ICAgICAgICAgKiAgICAgICAgIGJsb2NrU2l6ZTogNCxcblx0ICAgICAgICAgKiAgICAgICAgIGZvcm1hdHRlcjogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0xcblx0ICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNpcGhlclBhcmFtcykge1xuXHQgICAgICAgICAgICB0aGlzLm1peEluKGNpcGhlclBhcmFtcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoaXMgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0Zvcm1hdH0gZm9ybWF0dGVyIChPcHRpb25hbCkgVGhlIGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gdXNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5naWZpZWQgY2lwaGVyIHBhcmFtcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEB0aHJvd3MgRXJyb3IgSWYgbmVpdGhlciB0aGUgZm9ybWF0dGVyIG5vciB0aGUgZGVmYXVsdCBmb3JtYXR0ZXIgaXMgc2V0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gY2lwaGVyUGFyYW1zICsgJyc7XG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSBjaXBoZXJQYXJhbXMudG9TdHJpbmcoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IGNpcGhlclBhcmFtcy50b1N0cmluZyhDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uIChmb3JtYXR0ZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIChmb3JtYXR0ZXIgfHwgdGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBGb3JtYXQgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19mb3JtYXQgPSBDLmZvcm1hdCA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIE9wZW5TU0wgZm9ybWF0dGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIE9wZW5TU0xGb3JtYXR0ZXIgPSBDX2Zvcm1hdC5PcGVuU1NMID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYW4gT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfSBjaXBoZXJQYXJhbXMgVGhlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG9wZW5TU0xTdHJpbmcgPSBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTC5zdHJpbmdpZnkoY2lwaGVyUGFyYW1zKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChjaXBoZXJQYXJhbXMpIHtcblx0ICAgICAgICAgICAgdmFyIHdvcmRBcnJheTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBjaXBoZXJQYXJhbXMuY2lwaGVydGV4dDtcblx0ICAgICAgICAgICAgdmFyIHNhbHQgPSBjaXBoZXJQYXJhbXMuc2FsdDtcblxuXHQgICAgICAgICAgICAvLyBGb3JtYXRcblx0ICAgICAgICAgICAgaWYgKHNhbHQpIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRBcnJheSA9IFdvcmRBcnJheS5jcmVhdGUoWzB4NTM2MTZjNzQsIDB4NjU2NDVmNWZdKS5jb25jYXQoc2FsdCkuY29uY2F0KGNpcGhlcnRleHQpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgd29yZEFycmF5ID0gY2lwaGVydGV4dDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiB3b3JkQXJyYXkudG9TdHJpbmcoQmFzZTY0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYW4gT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZyB0byBhIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wZW5TU0xTdHIgVGhlIE9wZW5TU0wtY29tcGF0aWJsZSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMLnBhcnNlKG9wZW5TU0xTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAob3BlblNTTFN0cikge1xuXHQgICAgICAgICAgICB2YXIgc2FsdDtcblxuXHQgICAgICAgICAgICAvLyBQYXJzZSBiYXNlNjRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBCYXNlNjQucGFyc2Uob3BlblNTTFN0cik7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHRXb3JkcyA9IGNpcGhlcnRleHQud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gVGVzdCBmb3Igc2FsdFxuXHQgICAgICAgICAgICBpZiAoY2lwaGVydGV4dFdvcmRzWzBdID09IDB4NTM2MTZjNzQgJiYgY2lwaGVydGV4dFdvcmRzWzFdID09IDB4NjU2NDVmNWYpIHtcblx0ICAgICAgICAgICAgICAgIC8vIEV4dHJhY3Qgc2FsdFxuXHQgICAgICAgICAgICAgICAgc2FsdCA9IFdvcmRBcnJheS5jcmVhdGUoY2lwaGVydGV4dFdvcmRzLnNsaWNlKDIsIDQpKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHNhbHQgZnJvbSBjaXBoZXJ0ZXh0XG5cdCAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0V29yZHMuc3BsaWNlKDAsIDQpO1xuXHQgICAgICAgICAgICAgICAgY2lwaGVydGV4dC5zaWdCeXRlcyAtPSAxNjtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBDaXBoZXJQYXJhbXMuY3JlYXRlKHsgY2lwaGVydGV4dDogY2lwaGVydGV4dCwgc2FsdDogc2FsdCB9KTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgY2lwaGVyIHdyYXBwZXIgdGhhdCByZXR1cm5zIGNpcGhlcnRleHQgYXMgYSBzZXJpYWxpemFibGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgKi9cblx0ICAgIHZhciBTZXJpYWxpemFibGVDaXBoZXIgPSBDX2xpYi5TZXJpYWxpemFibGVDaXBoZXIgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtGb3JtYXR0ZXJ9IGZvcm1hdCBUaGUgZm9ybWF0dGluZyBzdHJhdGVneSB0byBjb252ZXJ0IGNpcGhlciBwYXJhbSBvYmplY3RzIHRvIGFuZCBmcm9tIGEgc3RyaW5nLiBEZWZhdWx0OiBPcGVuU1NMXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGZvcm1hdDogT3BlblNTTEZvcm1hdHRlclxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRW5jcnlwdHMgYSBtZXNzYWdlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IEEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCBrZXkpO1xuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwga2V5LCB7IGl2OiBpdiB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsIGtleSwgeyBpdjogaXYsIGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZW5jcnlwdDogZnVuY3Rpb24gKGNpcGhlciwgbWVzc2FnZSwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgdmFyIGVuY3J5cHRvciA9IGNpcGhlci5jcmVhdGVFbmNyeXB0b3Ioa2V5LCBjZmcpO1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IGVuY3J5cHRvci5maW5hbGl6ZShtZXNzYWdlKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgY2lwaGVyQ2ZnID0gZW5jcnlwdG9yLmNmZztcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgYW5kIHJldHVybiBzZXJpYWxpemFibGUgY2lwaGVyIHBhcmFtc1xuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7XG5cdCAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0LFxuXHQgICAgICAgICAgICAgICAga2V5OiBrZXksXG5cdCAgICAgICAgICAgICAgICBpdjogY2lwaGVyQ2ZnLml2LFxuXHQgICAgICAgICAgICAgICAgYWxnb3JpdGhtOiBjaXBoZXIsXG5cdCAgICAgICAgICAgICAgICBtb2RlOiBjaXBoZXJDZmcubW9kZSxcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmc6IGNpcGhlckNmZy5wYWRkaW5nLFxuXHQgICAgICAgICAgICAgICAgYmxvY2tTaXplOiBjaXBoZXIuYmxvY2tTaXplLFxuXHQgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBjZmcuZm9ybWF0XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZWNyeXB0cyBzZXJpYWxpemVkIGNpcGhlcnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc3xzdHJpbmd9IGNpcGhlcnRleHQgVGhlIGNpcGhlcnRleHQgdG8gZGVjcnlwdC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHBsYWludGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgZm9ybWF0dGVkQ2lwaGVydGV4dCwga2V5LCB7IGl2OiBpdiwgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgY2lwaGVydGV4dFBhcmFtcywga2V5LCB7IGl2OiBpdiwgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBkZWNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBjaXBoZXJ0ZXh0LCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gQ2lwaGVyUGFyYW1zXG5cdCAgICAgICAgICAgIGNpcGhlcnRleHQgPSB0aGlzLl9wYXJzZShjaXBoZXJ0ZXh0LCBjZmcuZm9ybWF0KTtcblxuXHQgICAgICAgICAgICAvLyBEZWNyeXB0XG5cdCAgICAgICAgICAgIHZhciBwbGFpbnRleHQgPSBjaXBoZXIuY3JlYXRlRGVjcnlwdG9yKGtleSwgY2ZnKS5maW5hbGl6ZShjaXBoZXJ0ZXh0LmNpcGhlcnRleHQpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBwbGFpbnRleHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHNlcmlhbGl6ZWQgY2lwaGVydGV4dCB0byBDaXBoZXJQYXJhbXMsXG5cdCAgICAgICAgICogZWxzZSBhc3N1bWVkIENpcGhlclBhcmFtcyBhbHJlYWR5IGFuZCByZXR1cm5zIGNpcGhlcnRleHQgdW5jaGFuZ2VkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN8c3RyaW5nfSBjaXBoZXJ0ZXh0IFRoZSBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7Rm9ybWF0dGVyfSBmb3JtYXQgVGhlIGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gdXNlIHRvIHBhcnNlIHNlcmlhbGl6ZWQgY2lwaGVydGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gVGhlIHVuc2VyaWFsaXplZCBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuX3BhcnNlKGNpcGhlcnRleHRTdHJpbmdPclBhcmFtcywgZm9ybWF0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfcGFyc2U6IGZ1bmN0aW9uIChjaXBoZXJ0ZXh0LCBmb3JtYXQpIHtcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBjaXBoZXJ0ZXh0ID09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0LnBhcnNlKGNpcGhlcnRleHQsIHRoaXMpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGNpcGhlcnRleHQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBLZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2tkZiA9IEMua2RmID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogT3BlblNTTCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAqL1xuXHQgICAgdmFyIE9wZW5TU0xLZGYgPSBDX2tkZi5PcGVuU1NMID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlcml2ZXMgYSBrZXkgYW5kIElWIGZyb20gYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdG8gZGVyaXZlIGZyb20uXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGtleVNpemUgVGhlIHNpemUgaW4gd29yZHMgb2YgdGhlIGtleSB0byBnZW5lcmF0ZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaXZTaXplIFRoZSBzaXplIGluIHdvcmRzIG9mIHRoZSBJViB0byBnZW5lcmF0ZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgKE9wdGlvbmFsKSBBIDY0LWJpdCBzYWx0IHRvIHVzZS4gSWYgb21pdHRlZCwgYSBzYWx0IHdpbGwgYmUgZ2VuZXJhdGVkIHJhbmRvbWx5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBBIGNpcGhlciBwYXJhbXMgb2JqZWN0IHdpdGggdGhlIGtleSwgSVYsIGFuZCBzYWx0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IENyeXB0b0pTLmtkZi5PcGVuU1NMLmV4ZWN1dGUoJ1Bhc3N3b3JkJywgMjU2LzMyLCAxMjgvMzIpO1xuXHQgICAgICAgICAqICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IENyeXB0b0pTLmtkZi5PcGVuU1NMLmV4ZWN1dGUoJ1Bhc3N3b3JkJywgMjU2LzMyLCAxMjgvMzIsICdzYWx0c2FsdCcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChwYXNzd29yZCwga2V5U2l6ZSwgaXZTaXplLCBzYWx0LCBoYXNoZXIpIHtcblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgcmFuZG9tIHNhbHRcblx0ICAgICAgICAgICAgaWYgKCFzYWx0KSB7XG5cdCAgICAgICAgICAgICAgICBzYWx0ID0gV29yZEFycmF5LnJhbmRvbSg2NC84KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIERlcml2ZSBrZXkgYW5kIElWXG5cdCAgICAgICAgICAgIGlmICghaGFzaGVyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5ID0gRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IGtleVNpemUgKyBpdlNpemUgfSkuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5ID0gRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IGtleVNpemUgKyBpdlNpemUsIGhhc2hlcjogaGFzaGVyIH0pLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICAgICAgICB9XG5cblxuXHQgICAgICAgICAgICAvLyBTZXBhcmF0ZSBrZXkgYW5kIElWXG5cdCAgICAgICAgICAgIHZhciBpdiA9IFdvcmRBcnJheS5jcmVhdGUoa2V5LndvcmRzLnNsaWNlKGtleVNpemUpLCBpdlNpemUgKiA0KTtcblx0ICAgICAgICAgICAga2V5LnNpZ0J5dGVzID0ga2V5U2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIHBhcmFtc1xuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7IGtleToga2V5LCBpdjogaXYsIHNhbHQ6IHNhbHQgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBIHNlcmlhbGl6YWJsZSBjaXBoZXIgd3JhcHBlciB0aGF0IGRlcml2ZXMgdGhlIGtleSBmcm9tIGEgcGFzc3dvcmQsXG5cdCAgICAgKiBhbmQgcmV0dXJucyBjaXBoZXJ0ZXh0IGFzIGEgc2VyaWFsaXphYmxlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICovXG5cdCAgICB2YXIgUGFzc3dvcmRCYXNlZENpcGhlciA9IENfbGliLlBhc3N3b3JkQmFzZWRDaXBoZXIgPSBTZXJpYWxpemFibGVDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge0tERn0ga2RmIFRoZSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiB0byB1c2UgdG8gZ2VuZXJhdGUgYSBrZXkgYW5kIElWIGZyb20gYSBwYXNzd29yZC4gRGVmYXVsdDogT3BlblNTTFxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogU2VyaWFsaXphYmxlQ2lwaGVyLmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBrZGY6IE9wZW5TU0xLZGZcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEVuY3J5cHRzIGEgbWVzc2FnZSB1c2luZyBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBBIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsICdwYXNzd29yZCcpO1xuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsICdwYXNzd29yZCcsIHsgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBlbmNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBtZXNzYWdlLCBwYXNzd29yZCwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICBjZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBEZXJpdmUga2V5IGFuZCBvdGhlciBwYXJhbXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRQYXJhbXMgPSBjZmcua2RmLmV4ZWN1dGUocGFzc3dvcmQsIGNpcGhlci5rZXlTaXplLCBjaXBoZXIuaXZTaXplLCBjZmcuc2FsdCwgY2ZnLmhhc2hlcik7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIElWIHRvIGNvbmZpZ1xuXHQgICAgICAgICAgICBjZmcuaXYgPSBkZXJpdmVkUGFyYW1zLml2O1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBTZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdC5jYWxsKHRoaXMsIGNpcGhlciwgbWVzc2FnZSwgZGVyaXZlZFBhcmFtcy5rZXksIGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gTWl4IGluIGRlcml2ZWQgcGFyYW1zXG5cdCAgICAgICAgICAgIGNpcGhlcnRleHQubWl4SW4oZGVyaXZlZFBhcmFtcyk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNpcGhlcnRleHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlY3J5cHRzIHNlcmlhbGl6ZWQgY2lwaGVydGV4dCB1c2luZyBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN8c3RyaW5nfSBjaXBoZXJ0ZXh0IFRoZSBjaXBoZXJ0ZXh0IHRvIGRlY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcGxhaW50ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgZm9ybWF0dGVkQ2lwaGVydGV4dCwgJ3Bhc3N3b3JkJywgeyBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgY2lwaGVydGV4dFBhcmFtcywgJ3Bhc3N3b3JkJywgeyBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXIsIGNpcGhlcnRleHQsIHBhc3N3b3JkLCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIENpcGhlclBhcmFtc1xuXHQgICAgICAgICAgICBjaXBoZXJ0ZXh0ID0gdGhpcy5fcGFyc2UoY2lwaGVydGV4dCwgY2ZnLmZvcm1hdCk7XG5cblx0ICAgICAgICAgICAgLy8gRGVyaXZlIGtleSBhbmQgb3RoZXIgcGFyYW1zXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkUGFyYW1zID0gY2ZnLmtkZi5leGVjdXRlKHBhc3N3b3JkLCBjaXBoZXIua2V5U2l6ZSwgY2lwaGVyLml2U2l6ZSwgY2lwaGVydGV4dC5zYWx0LCBjZmcuaGFzaGVyKTtcblxuXHQgICAgICAgICAgICAvLyBBZGQgSVYgdG8gY29uZmlnXG5cdCAgICAgICAgICAgIGNmZy5pdiA9IGRlcml2ZWRQYXJhbXMuaXY7XG5cblx0ICAgICAgICAgICAgLy8gRGVjcnlwdFxuXHQgICAgICAgICAgICB2YXIgcGxhaW50ZXh0ID0gU2VyaWFsaXphYmxlQ2lwaGVyLmRlY3J5cHQuY2FsbCh0aGlzLCBjaXBoZXIsIGNpcGhlcnRleHQsIGRlcml2ZWRQYXJhbXMua2V5LCBjZmcpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBwbGFpbnRleHQ7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cdH0oKSk7XG5cblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRyb290LkNyeXB0b0pTID0gZmFjdG9yeSgpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcblxuXHQvKmdsb2JhbHMgd2luZG93LCBnbG9iYWwsIHJlcXVpcmUqL1xuXG5cdC8qKlxuXHQgKiBDcnlwdG9KUyBjb3JlIGNvbXBvbmVudHMuXG5cdCAqL1xuXHR2YXIgQ3J5cHRvSlMgPSBDcnlwdG9KUyB8fCAoZnVuY3Rpb24gKE1hdGgsIHVuZGVmaW5lZCkge1xuXG5cdCAgICB2YXIgY3J5cHRvO1xuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGZyb20gd2luZG93IChCcm93c2VyKVxuXHQgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSB3aW5kb3cuY3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGluIHdlYiB3b3JrZXIgKEJyb3dzZXIpXG5cdCAgICBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuY3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gc2VsZi5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gZnJvbSB3b3JrZXJcblx0ICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcy5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSBnbG9iYWxUaGlzLmNyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIChleHBlcmltZW50YWwgSUUgMTEpIGNyeXB0byBmcm9tIHdpbmRvdyAoQnJvd3Nlcilcblx0ICAgIGlmICghY3J5cHRvICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5tc0NyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IHdpbmRvdy5tc0NyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBmcm9tIGdsb2JhbCAoTm9kZUpTKVxuXHQgICAgaWYgKCFjcnlwdG8gJiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsLmNyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IGdsb2JhbC5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gaW1wb3J0IHZpYSByZXF1aXJlIChOb2RlSlMpXG5cdCAgICBpZiAoIWNyeXB0byAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuXHQgICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgIH1cblxuXHQgICAgLypcblx0ICAgICAqIENyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvclxuXHQgICAgICpcblx0ICAgICAqIEFzIE1hdGgucmFuZG9tKCkgaXMgY3J5cHRvZ3JhcGhpY2FsbHkgbm90IHNhZmUgdG8gdXNlXG5cdCAgICAgKi9cblx0ICAgIHZhciBjcnlwdG9TZWN1cmVSYW5kb21JbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgaWYgKGNyeXB0bykge1xuXHQgICAgICAgICAgICAvLyBVc2UgZ2V0UmFuZG9tVmFsdWVzIG1ldGhvZCAoQnJvd3Nlcilcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF07XG5cdCAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBVc2UgcmFuZG9tQnl0ZXMgbWV0aG9kIChOb2RlSlMpXG5cdCAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvLnJhbmRvbUJ5dGVzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkucmVhZEludDMyTEUoKTtcblx0ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcignTmF0aXZlIGNyeXB0byBtb2R1bGUgY291bGQgbm90IGJlIHVzZWQgdG8gZ2V0IHNlY3VyZSByYW5kb20gbnVtYmVyLicpO1xuXHQgICAgfTtcblxuXHQgICAgLypcblx0ICAgICAqIExvY2FsIHBvbHlmaWxsIG9mIE9iamVjdC5jcmVhdGVcblxuXHQgICAgICovXG5cdCAgICB2YXIgY3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZ1bmN0aW9uIEYoKSB7fVxuXG5cdCAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcblx0ICAgICAgICAgICAgdmFyIHN1YnR5cGU7XG5cblx0ICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBvYmo7XG5cblx0ICAgICAgICAgICAgc3VidHlwZSA9IG5ldyBGKCk7XG5cblx0ICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBzdWJ0eXBlO1xuXHQgICAgICAgIH07XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIENyeXB0b0pTIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEMgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBMaWJyYXJ5IG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfbGliID0gQy5saWIgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBCYXNlIG9iamVjdCBmb3IgcHJvdG90eXBhbCBpbmhlcml0YW5jZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlID0gKGZ1bmN0aW9uICgpIHtcblxuXG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIENyZWF0ZXMgYSBuZXcgb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGlzIG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG92ZXJyaWRlcyBQcm9wZXJ0aWVzIHRvIGNvcHkgaW50byB0aGUgbmV3IG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgbmV3IG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgdmFyIE15VHlwZSA9IENyeXB0b0pTLmxpYi5CYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgZmllbGQ6ICd2YWx1ZScsXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICAgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgfVxuXHQgICAgICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uIChvdmVycmlkZXMpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNwYXduXG5cdCAgICAgICAgICAgICAgICB2YXIgc3VidHlwZSA9IGNyZWF0ZSh0aGlzKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gQXVnbWVudFxuXHQgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlcykge1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUubWl4SW4ob3ZlcnJpZGVzKTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGRlZmF1bHQgaW5pdGlhbGl6ZXJcblx0ICAgICAgICAgICAgICAgIGlmICghc3VidHlwZS5oYXNPd25Qcm9wZXJ0eSgnaW5pdCcpIHx8IHRoaXMuaW5pdCA9PT0gc3VidHlwZS5pbml0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3VidHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZXIncyBwcm90b3R5cGUgaXMgdGhlIHN1YnR5cGUgb2JqZWN0XG5cdCAgICAgICAgICAgICAgICBzdWJ0eXBlLmluaXQucHJvdG90eXBlID0gc3VidHlwZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVmZXJlbmNlIHN1cGVydHlwZVxuXHQgICAgICAgICAgICAgICAgc3VidHlwZS4kc3VwZXIgPSB0aGlzO1xuXG5cdCAgICAgICAgICAgICAgICByZXR1cm4gc3VidHlwZTtcblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogRXh0ZW5kcyB0aGlzIG9iamVjdCBhbmQgcnVucyB0aGUgaW5pdCBtZXRob2QuXG5cdCAgICAgICAgICAgICAqIEFyZ3VtZW50cyB0byBjcmVhdGUoKSB3aWxsIGJlIHBhc3NlZCB0byBpbml0KCkuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIG5ldyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBpbnN0YW5jZSA9IE15VHlwZS5jcmVhdGUoKTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5leHRlbmQoKTtcblx0ICAgICAgICAgICAgICAgIGluc3RhbmNlLmluaXQuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG5cblx0ICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIG9iamVjdC5cblx0ICAgICAgICAgICAgICogT3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gYWRkIHNvbWUgbG9naWMgd2hlbiB5b3VyIG9iamVjdHMgYXJlIGNyZWF0ZWQuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICB2YXIgTXlUeXBlID0gQ3J5cHRvSlMubGliLkJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgICogICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgICAgIC8vIC4uLlxuXHQgICAgICAgICAgICAgKiAgICAgICAgIH1cblx0ICAgICAgICAgICAgICogICAgIH0pO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBpbnRvIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcyB0byBtaXggaW4uXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICBNeVR5cGUubWl4SW4oe1xuXHQgICAgICAgICAgICAgKiAgICAgICAgIGZpZWxkOiAndmFsdWUnXG5cdCAgICAgICAgICAgICAqICAgICB9KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIG1peEluOiBmdW5jdGlvbiAocHJvcGVydGllcykge1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlOYW1lIGluIHByb3BlcnRpZXMpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IHByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIElFIHdvbid0IGNvcHkgdG9TdHJpbmcgdXNpbmcgdGhlIGxvb3AgYWJvdmVcblx0ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0b1N0cmluZycpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyA9IHByb3BlcnRpZXMudG9TdHJpbmc7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBjbG9uZSA9IGluc3RhbmNlLmNsb25lKCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdC5wcm90b3R5cGUuZXh0ZW5kKHRoaXMpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfTtcblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7QXJyYXl9IHdvcmRzIFRoZSBhcnJheSBvZiAzMi1iaXQgd29yZHMuXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gc2lnQnl0ZXMgVGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBieXRlcyBpbiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgKi9cblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXkgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyAoT3B0aW9uYWwpIEFuIGFycmF5IG9mIDMyLWJpdCB3b3Jkcy5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc2lnQnl0ZXMgKE9wdGlvbmFsKSBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGJ5dGVzIGluIHRoZSB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKCk7XG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHgwMDAxMDIwMywgMHgwNDA1MDYwN10pO1xuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4MDAwMTAyMDMsIDB4MDQwNTA2MDddLCA2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAod29yZHMsIHNpZ0J5dGVzKSB7XG5cdCAgICAgICAgICAgIHdvcmRzID0gdGhpcy53b3JkcyA9IHdvcmRzIHx8IFtdO1xuXG5cdCAgICAgICAgICAgIGlmIChzaWdCeXRlcyAhPSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSBzaWdCeXRlcztcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSB3b3Jkcy5sZW5ndGggKiA0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoaXMgd29yZCBhcnJheSB0byBhIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7RW5jb2Rlcn0gZW5jb2RlciAoT3B0aW9uYWwpIFRoZSBlbmNvZGluZyBzdHJhdGVneSB0byB1c2UuIERlZmF1bHQ6IENyeXB0b0pTLmVuYy5IZXhcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZ2lmaWVkIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSB3b3JkQXJyYXkgKyAnJztcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IHdvcmRBcnJheS50b1N0cmluZygpO1xuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gd29yZEFycmF5LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gKGVuY29kZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIChlbmNvZGVyIHx8IEhleCkuc3RyaW5naWZ5KHRoaXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25jYXRlbmF0ZXMgYSB3b3JkIGFycmF5IHRvIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHdvcmRBcnJheTEuY29uY2F0KHdvcmRBcnJheTIpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNvbmNhdDogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHRoaXNXb3JkcyA9IHRoaXMud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB0aGF0V29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB0aGlzU2lnQnl0ZXMgPSB0aGlzLnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgdGhhdFNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIHRoaXMuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDb25jYXRcblx0ICAgICAgICAgICAgaWYgKHRoaXNTaWdCeXRlcyAlIDQpIHtcblx0ICAgICAgICAgICAgICAgIC8vIENvcHkgb25lIGJ5dGUgYXQgYSB0aW1lXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoYXRTaWdCeXRlczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRoYXRCeXRlID0gKHRoYXRXb3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpc1dvcmRzWyh0aGlzU2lnQnl0ZXMgKyBpKSA+Pj4gMl0gfD0gdGhhdEJ5dGUgPDwgKDI0IC0gKCh0aGlzU2lnQnl0ZXMgKyBpKSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAvLyBDb3B5IG9uZSB3b3JkIGF0IGEgdGltZVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGF0U2lnQnl0ZXM7IGogKz0gNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXNXb3Jkc1sodGhpc1NpZ0J5dGVzICsgaikgPj4+IDJdID0gdGhhdFdvcmRzW2ogPj4+IDJdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgKz0gdGhhdFNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENoYWluYWJsZVxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVtb3ZlcyBpbnNpZ25pZmljYW50IGJpdHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHdvcmRBcnJheS5jbGFtcCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsYW1wOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB0aGlzLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB0aGlzLnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wXG5cdCAgICAgICAgICAgIHdvcmRzW3NpZ0J5dGVzID4+PiAyXSAmPSAweGZmZmZmZmZmIDw8ICgzMiAtIChzaWdCeXRlcyAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIHdvcmRzLmxlbmd0aCA9IE1hdGguY2VpbChzaWdCeXRlcyAvIDQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNsb25lID0gd29yZEFycmF5LmNsb25lKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gQmFzZS5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS53b3JkcyA9IHRoaXMud29yZHMuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgd29yZCBhcnJheSBmaWxsZWQgd2l0aCByYW5kb20gYnl0ZXMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbkJ5dGVzIFRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcmFuZG9tIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LnJhbmRvbSgxNik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmFuZG9tOiBmdW5jdGlvbiAobkJ5dGVzKSB7XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkJ5dGVzOyBpICs9IDQpIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzLnB1c2goY3J5cHRvU2VjdXJlUmFuZG9tSW50KCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdCh3b3JkcywgbkJ5dGVzKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBFbmNvZGVyIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmMgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBIZXggZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBIZXggPSBDX2VuYy5IZXggPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgaGV4IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBoZXggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGV4U3RyaW5nID0gQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIGhleENoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdGUgPSAod29yZHNbaSA+Pj4gMl0gPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgaGV4Q2hhcnMucHVzaCgoYml0ZSA+Pj4gNCkudG9TdHJpbmcoMTYpKTtcblx0ICAgICAgICAgICAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgJiAweDBmKS50b1N0cmluZygxNikpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhleENoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIGhleCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGhleFN0ciBUaGUgaGV4IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhleFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChoZXhTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGhleFN0ckxlbmd0aCA9IGhleFN0ci5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZXhTdHJMZW5ndGg7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gM10gfD0gcGFyc2VJbnQoaGV4U3RyLnN1YnN0cihpLCAyKSwgMTYpIDw8ICgyNCAtIChpICUgOCkgKiA0KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQod29yZHMsIGhleFN0ckxlbmd0aCAvIDIpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogTGF0aW4xIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgTGF0aW4xID0gQ19lbmMuTGF0aW4xID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIExhdGluMSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgTGF0aW4xIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGxhdGluMVN0cmluZyA9IENyeXB0b0pTLmVuYy5MYXRpbjEuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBsYXRpbjFDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRlID0gKHdvcmRzW2kgPj4+IDJdID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIGxhdGluMUNoYXJzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShiaXRlKSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbGF0aW4xQ2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgTGF0aW4xIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGF0aW4xU3RyIFRoZSBMYXRpbjEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5MYXRpbjEucGFyc2UobGF0aW4xU3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGxhdGluMVN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgbGF0aW4xU3RyTGVuZ3RoID0gbGF0aW4xU3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhdGluMVN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAyXSB8PSAobGF0aW4xU3RyLmNoYXJDb2RlQXQoaSkgJiAweGZmKSA8PCAoMjQgLSAoaSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KHdvcmRzLCBsYXRpbjFTdHJMZW5ndGgpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogVVRGLTggZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBVdGY4ID0gQ19lbmMuVXRmOCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBVVEYtOCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVRGLTggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgdXRmOFN0cmluZyA9IENyeXB0b0pTLmVuYy5VdGY4LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoTGF0aW4xLnN0cmluZ2lmeSh3b3JkQXJyYXkpKSk7XG5cdCAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIFVURi04IGRhdGEnKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIFVURi04IHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmOFN0ciBUaGUgVVRGLTggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHV0ZjhTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAodXRmOFN0cikge1xuXHQgICAgICAgICAgICByZXR1cm4gTGF0aW4xLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh1dGY4U3RyKSkpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYnVmZmVyZWQgYmxvY2sgYWxnb3JpdGhtIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIFRoZSBwcm9wZXJ0eSBibG9ja1NpemUgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBhIGNvbmNyZXRlIHN1YnR5cGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IF9taW5CdWZmZXJTaXplIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgc2hvdWxkIGJlIGtlcHQgdW5wcm9jZXNzZWQgaW4gdGhlIGJ1ZmZlci4gRGVmYXVsdDogMFxuXHQgICAgICovXG5cdCAgICB2YXIgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSA9IENfbGliLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0gPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgYmxvY2sgYWxnb3JpdGhtJ3MgZGF0YSBidWZmZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheS5pbml0KCk7XG5cdCAgICAgICAgICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBZGRzIG5ldyBkYXRhIHRvIHRoaXMgYmxvY2sgYWxnb3JpdGhtJ3MgYnVmZmVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGFwcGVuZC4gU3RyaW5ncyBhcmUgY29udmVydGVkIHRvIGEgV29yZEFycmF5IHVzaW5nIFVURi04LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9hcHBlbmQoJ2RhdGEnKTtcblx0ICAgICAgICAgKiAgICAgYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fYXBwZW5kKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2FwcGVuZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gV29yZEFycmF5LCBlbHNlIGFzc3VtZSBXb3JkQXJyYXkgYWxyZWFkeVxuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIGRhdGEgPSBVdGY4LnBhcnNlKGRhdGEpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQXBwZW5kXG5cdCAgICAgICAgICAgIHRoaXMuX2RhdGEuY29uY2F0KGRhdGEpO1xuXHQgICAgICAgICAgICB0aGlzLl9uRGF0YUJ5dGVzICs9IGRhdGEuc2lnQnl0ZXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFByb2Nlc3NlcyBhdmFpbGFibGUgZGF0YSBibG9ja3MuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIF9kb1Byb2Nlc3NCbG9jayhvZmZzZXQpLCB3aGljaCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IGEgY29uY3JldGUgc3VidHlwZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9GbHVzaCBXaGV0aGVyIGFsbCBibG9ja3MgYW5kIHBhcnRpYWwgYmxvY2tzIHNob3VsZCBiZSBwcm9jZXNzZWQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBwcm9jZXNzZWQgZGF0YS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHByb2Nlc3NlZERhdGEgPSBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9wcm9jZXNzKCk7XG5cdCAgICAgICAgICogICAgIHZhciBwcm9jZXNzZWREYXRhID0gYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fcHJvY2VzcyghISdmbHVzaCcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9wcm9jZXNzOiBmdW5jdGlvbiAoZG9GbHVzaCkge1xuXHQgICAgICAgICAgICB2YXIgcHJvY2Vzc2VkV29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBkYXRhU2lnQnl0ZXMgPSBkYXRhLnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gdGhpcy5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgYmxvY2tzIHJlYWR5XG5cdCAgICAgICAgICAgIHZhciBuQmxvY2tzUmVhZHkgPSBkYXRhU2lnQnl0ZXMgLyBibG9ja1NpemVCeXRlcztcblx0ICAgICAgICAgICAgaWYgKGRvRmx1c2gpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFJvdW5kIHVwIHRvIGluY2x1ZGUgcGFydGlhbCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGguY2VpbChuQmxvY2tzUmVhZHkpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gUm91bmQgZG93biB0byBpbmNsdWRlIG9ubHkgZnVsbCBibG9ja3MsXG5cdCAgICAgICAgICAgICAgICAvLyBsZXNzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgbXVzdCByZW1haW4gaW4gdGhlIGJ1ZmZlclxuXHQgICAgICAgICAgICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5tYXgoKG5CbG9ja3NSZWFkeSB8IDApIC0gdGhpcy5fbWluQnVmZmVyU2l6ZSwgMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb3VudCB3b3JkcyByZWFkeVxuXHQgICAgICAgICAgICB2YXIgbldvcmRzUmVhZHkgPSBuQmxvY2tzUmVhZHkgKiBibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgYnl0ZXMgcmVhZHlcblx0ICAgICAgICAgICAgdmFyIG5CeXRlc1JlYWR5ID0gTWF0aC5taW4obldvcmRzUmVhZHkgKiA0LCBkYXRhU2lnQnl0ZXMpO1xuXG5cdCAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzXG5cdCAgICAgICAgICAgIGlmIChuV29yZHNSZWFkeSkge1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbldvcmRzUmVhZHk7IG9mZnNldCArPSBibG9ja1NpemUpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWFsZ29yaXRobSBsb2dpY1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGRhdGFXb3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHByb2Nlc3NlZCB3b3Jkc1xuXHQgICAgICAgICAgICAgICAgcHJvY2Vzc2VkV29yZHMgPSBkYXRhV29yZHMuc3BsaWNlKDAsIG5Xb3Jkc1JlYWR5KTtcblx0ICAgICAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgLT0gbkJ5dGVzUmVhZHk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gcHJvY2Vzc2VkIHdvcmRzXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQocHJvY2Vzc2VkV29yZHMsIG5CeXRlc1JlYWR5KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNsb25lID0gYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5jbG9uZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEJhc2UuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2RhdGEgPSB0aGlzLl9kYXRhLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfbWluQnVmZmVyU2l6ZTogMFxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgaGFzaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG51bWJlciBvZiAzMi1iaXQgd29yZHMgdGhpcyBoYXNoZXIgb3BlcmF0ZXMgb24uIERlZmF1bHQ6IDE2ICg1MTIgYml0cylcblx0ICAgICAqL1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlciA9IEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCgpLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGhhc2hlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBoYXNoIGNvbXB1dGF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGFzaGVyID0gQ3J5cHRvSlMuYWxnby5TSEEyNTYuY3JlYXRlKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBoYXNoZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgYnVmZmVyXG5cdCAgICAgICAgICAgIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ucmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWhhc2hlciBsb2dpY1xuXHQgICAgICAgICAgICB0aGlzLl9kb1Jlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFVwZGF0ZXMgdGhpcyBoYXNoZXIgd2l0aCBhIG1lc3NhZ2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgVGhlIG1lc3NhZ2UgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7SGFzaGVyfSBUaGlzIGhhc2hlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgaGFzaGVyLnVwZGF0ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICBoYXNoZXIudXBkYXRlKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBBcHBlbmRcblx0ICAgICAgICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuXG5cdCAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGFzaFxuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ2hhaW5hYmxlXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBGaW5hbGl6ZXMgdGhlIGhhc2ggY29tcHV0YXRpb24uXG5cdCAgICAgICAgICogTm90ZSB0aGF0IHRoZSBmaW5hbGl6ZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBkZXN0cnVjdGl2ZSwgcmVhZC1vbmNlIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZVVwZGF0ZSAoT3B0aW9uYWwpIEEgZmluYWwgbWVzc2FnZSB1cGRhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGZpbmFsaXplOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBGaW5hbCBtZXNzYWdlIHVwZGF0ZVxuXHQgICAgICAgICAgICBpZiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1oYXNoZXIgbG9naWNcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9kb0ZpbmFsaXplKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNTEyLzMyLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIHNob3J0Y3V0IGZ1bmN0aW9uIHRvIGEgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2hlciB0byBjcmVhdGUgYSBoZWxwZXIgZm9yLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBzaG9ydGN1dCBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIFNIQTI1NiA9IENyeXB0b0pTLmxpYi5IYXNoZXIuX2NyZWF0ZUhlbHBlcihDcnlwdG9KUy5hbGdvLlNIQTI1Nik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2NyZWF0ZUhlbHBlcjogZnVuY3Rpb24gKGhhc2hlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UsIGNmZykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBoYXNoZXIuaW5pdChjZmcpLmZpbmFsaXplKG1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgc2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaGVyIHRvIHVzZSBpbiB0aGlzIEhNQUMgaGVscGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBzaG9ydGN1dCBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIEhtYWNTSEEyNTYgPSBDcnlwdG9KUy5saWIuSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKENyeXB0b0pTLmFsZ28uU0hBMjU2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfY3JlYXRlSG1hY0hlbHBlcjogZnVuY3Rpb24gKGhhc2hlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UsIGtleSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDX2FsZ28uSE1BQy5pbml0KGhhc2hlciwga2V5KS5maW5hbGl6ZShtZXNzYWdlKTtcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBbGdvcml0aG0gbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvID0ge307XG5cblx0ICAgIHJldHVybiBDO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEJhc2U2NCBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJhc2U2NCA9IENfZW5jLkJhc2U2NCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBCYXNlNjQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEJhc2U2NCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBiYXNlNjRTdHJpbmcgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLl9tYXA7XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXAgZXhjZXNzIGJpdHNcblx0ICAgICAgICAgICAgd29yZEFycmF5LmNsYW1wKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgYmFzZTY0Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSArPSAzKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTEgPSAod29yZHNbaSA+Pj4gMl0gICAgICAgPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgICAgICAgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUyID0gKHdvcmRzWyhpICsgMSkgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAxKSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMyA9ICh3b3Jkc1soaSArIDIpID4+PiAyXSA+Pj4gKDI0IC0gKChpICsgMikgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0cmlwbGV0ID0gKGJ5dGUxIDw8IDE2KSB8IChieXRlMiA8PCA4KSB8IGJ5dGUzO1xuXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgKGogPCA0KSAmJiAoaSArIGogKiAwLjc1IDwgc2lnQnl0ZXMpOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKG1hcC5jaGFyQXQoKHRyaXBsZXQgPj4+ICg2ICogKDMgLSBqKSkpICYgMHgzZikpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdDaGFyID0gbWFwLmNoYXJBdCg2NCk7XG5cdCAgICAgICAgICAgIGlmIChwYWRkaW5nQ2hhcikge1xuXHQgICAgICAgICAgICAgICAgd2hpbGUgKGJhc2U2NENoYXJzLmxlbmd0aCAlIDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKHBhZGRpbmdDaGFyKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBCYXNlNjQgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRTdHIgVGhlIEJhc2U2NCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShiYXNlNjRTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoYmFzZTY0U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgYmFzZTY0U3RyTGVuZ3RoID0gYmFzZTY0U3RyLmxlbmd0aDtcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMuX21hcDtcblx0ICAgICAgICAgICAgdmFyIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwO1xuXG5cdCAgICAgICAgICAgIGlmICghcmV2ZXJzZU1hcCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwID0gW107XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXAubGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcFttYXAuY2hhckNvZGVBdChqKV0gPSBqO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIElnbm9yZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nQ2hhciA9IG1hcC5jaGFyQXQoNjQpO1xuXHQgICAgICAgICAgICBpZiAocGFkZGluZ0NoYXIpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBwYWRkaW5nSW5kZXggPSBiYXNlNjRTdHIuaW5kZXhPZihwYWRkaW5nQ2hhcik7XG5cdCAgICAgICAgICAgICAgICBpZiAocGFkZGluZ0luZGV4ICE9PSAtMSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NFN0ckxlbmd0aCA9IHBhZGRpbmdJbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9vcChiYXNlNjRTdHIsIGJhc2U2NFN0ckxlbmd0aCwgcmV2ZXJzZU1hcCk7XG5cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX21hcDogJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gcGFyc2VMb29wKGJhc2U2NFN0ciwgYmFzZTY0U3RyTGVuZ3RoLCByZXZlcnNlTWFwKSB7XG5cdCAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICB2YXIgbkJ5dGVzID0gMDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNlNjRTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgaWYgKGkgJSA0KSB7XG5cdCAgICAgICAgICAgICAgdmFyIGJpdHMxID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpIC0gMSldIDw8ICgoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgdmFyIGJpdHMyID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpKV0gPj4+ICg2IC0gKGkgJSA0KSAqIDIpO1xuXHQgICAgICAgICAgICAgIHZhciBiaXRzQ29tYmluZWQgPSBiaXRzMSB8IGJpdHMyO1xuXHQgICAgICAgICAgICAgIHdvcmRzW25CeXRlcyA+Pj4gMl0gfD0gYml0c0NvbWJpbmVkIDw8ICgyNCAtIChuQnl0ZXMgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICAgIG5CeXRlcysrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCBuQnl0ZXMpO1xuXHQgICAgfVxuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmVuYy5CYXNlNjQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBCYXNlNjR1cmwgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBCYXNlNjR1cmwgPSBDX2VuYy5CYXNlNjR1cmwgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgQmFzZTY0dXJsIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVybFNhZmUgV2hldGhlciB0byB1c2UgdXJsIHNhZmVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEJhc2U2NHVybCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBiYXNlNjRTdHJpbmcgPSBDcnlwdG9KUy5lbmMuQmFzZTY0dXJsLnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSwgdXJsU2FmZSkge1xuXHQgICAgICAgICAgICBpZiAodXJsU2FmZSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgICAgICB1cmxTYWZlID0gdHJ1ZVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHVybFNhZmUgPyB0aGlzLl9zYWZlX21hcCA6IHRoaXMuX21hcDtcblxuXHQgICAgICAgICAgICAvLyBDbGFtcCBleGNlc3MgYml0c1xuXHQgICAgICAgICAgICB3b3JkQXJyYXkuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpICs9IDMpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMSA9ICh3b3Jkc1tpID4+PiAyXSAgICAgICA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAgICAgICAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTIgPSAod29yZHNbKGkgKyAxKSA+Pj4gMl0gPj4+ICgyNCAtICgoaSArIDEpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUzID0gKHdvcmRzWyhpICsgMikgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAyKSAlIDQpICogOCkpICYgMHhmZjtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHRyaXBsZXQgPSAoYnl0ZTEgPDwgMTYpIHwgKGJ5dGUyIDw8IDgpIHwgYnl0ZTM7XG5cblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyAoaiA8IDQpICYmIChpICsgaiAqIDAuNzUgPCBzaWdCeXRlcyk7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gobWFwLmNoYXJBdCgodHJpcGxldCA+Pj4gKDYgKiAoMyAtIGopKSkgJiAweDNmKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB3aGlsZSAoYmFzZTY0Q2hhcnMubGVuZ3RoICUgNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGJhc2U2NENoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIEJhc2U2NHVybCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFN0ciBUaGUgQmFzZTY0dXJsIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXJsU2FmZSBXaGV0aGVyIHRvIHVzZSB1cmwgc2FmZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5CYXNlNjR1cmwucGFyc2UoYmFzZTY0U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGJhc2U2NFN0ciwgdXJsU2FmZSkge1xuXHQgICAgICAgICAgICBpZiAodXJsU2FmZSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgICAgICB1cmxTYWZlID0gdHJ1ZVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRTdHJMZW5ndGggPSBiYXNlNjRTdHIubGVuZ3RoO1xuXHQgICAgICAgICAgICB2YXIgbWFwID0gdXJsU2FmZSA/IHRoaXMuX3NhZmVfbWFwIDogdGhpcy5fbWFwO1xuXHQgICAgICAgICAgICB2YXIgcmV2ZXJzZU1hcCA9IHRoaXMuX3JldmVyc2VNYXA7XG5cblx0ICAgICAgICAgICAgaWYgKCFyZXZlcnNlTWFwKSB7XG5cdCAgICAgICAgICAgICAgICByZXZlcnNlTWFwID0gdGhpcy5fcmV2ZXJzZU1hcCA9IFtdO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXAubGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXZlcnNlTWFwW21hcC5jaGFyQ29kZUF0KGopXSA9IGo7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJZ25vcmUgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgcGFkZGluZ0luZGV4ID0gYmFzZTY0U3RyLmluZGV4T2YocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHBhZGRpbmdJbmRleCAhPT0gLTEpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRTdHJMZW5ndGggPSBwYWRkaW5nSW5kZXg7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHJldHVybiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApO1xuXG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9tYXA6ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPScsXG5cdCAgICAgICAgX3NhZmVfbWFwOiAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXycsXG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApIHtcblx0ICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICB2YXIgbkJ5dGVzID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2U2NFN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGlmIChpICUgNCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdHMxID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpIC0gMSldIDw8ICgoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0czIgPSByZXZlcnNlTWFwW2Jhc2U2NFN0ci5jaGFyQ29kZUF0KGkpXSA+Pj4gKDYgLSAoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0c0NvbWJpbmVkID0gYml0czEgfCBiaXRzMjtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW25CeXRlcyA+Pj4gMl0gfD0gYml0c0NvbWJpbmVkIDw8ICgyNCAtIChuQnl0ZXMgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICAgICAgbkJ5dGVzKys7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIG5CeXRlcyk7XG5cdCAgICB9XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NHVybDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFVURi0xNiBCRSBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFV0ZjE2QkUgPSBDX2VuYy5VdGYxNiA9IENfZW5jLlV0ZjE2QkUgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgVVRGLTE2IEJFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBVVEYtMTYgQkUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgdXRmMTZTdHJpbmcgPSBDcnlwdG9KUy5lbmMuVXRmMTYuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNkNoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9ICh3b3Jkc1tpID4+PiAyXSA+Pj4gKDE2IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmZmZjtcblx0ICAgICAgICAgICAgICAgIHV0ZjE2Q2hhcnMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHV0ZjE2Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgVVRGLTE2IEJFIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmMTZTdHIgVGhlIFVURi0xNiBCRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLlV0ZjE2LnBhcnNlKHV0ZjE2U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKHV0ZjE2U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNlN0ckxlbmd0aCA9IHV0ZjE2U3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHV0ZjE2U3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDFdIHw9IHV0ZjE2U3RyLmNoYXJDb2RlQXQoaSkgPDwgKDE2IC0gKGkgJSAyKSAqIDE2KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCB1dGYxNlN0ckxlbmd0aCAqIDIpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogVVRGLTE2IExFIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICBDX2VuYy5VdGYxNkxFID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIFVURi0xNiBMRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVRGLTE2IExFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHV0ZjE2U3RyID0gQ3J5cHRvSlMuZW5jLlV0ZjE2TEUuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNkNoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IHN3YXBFbmRpYW4oKHdvcmRzW2kgPj4+IDJdID4+PiAoMTYgLSAoaSAlIDQpICogOCkpICYgMHhmZmZmKTtcblx0ICAgICAgICAgICAgICAgIHV0ZjE2Q2hhcnMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHV0ZjE2Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgVVRGLTE2IExFIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmMTZTdHIgVGhlIFVURi0xNiBMRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLlV0ZjE2TEUucGFyc2UodXRmMTZTdHIpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAodXRmMTZTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHV0ZjE2U3RyTGVuZ3RoID0gdXRmMTZTdHIubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXRmMTZTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMV0gfD0gc3dhcEVuZGlhbih1dGYxNlN0ci5jaGFyQ29kZUF0KGkpIDw8ICgxNiAtIChpICUgMikgKiAxNikpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIHV0ZjE2U3RyTGVuZ3RoICogMik7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gc3dhcEVuZGlhbih3b3JkKSB7XG5cdCAgICAgICAgcmV0dXJuICgod29yZCA8PCA4KSAmIDB4ZmYwMGZmMDApIHwgKCh3b3JkID4+PiA4KSAmIDB4MDBmZjAwZmYpO1xuXHQgICAgfVxuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmVuYy5VdGYxNjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9zaGExXCIpLCByZXF1aXJlKFwiLi9obWFjXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTFcIiwgXCIuL2htYWNcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIE1ENSA9IENfYWxnby5NRDU7XG5cblx0ICAgIC8qKlxuXHQgICAgICogVGhpcyBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBpcyBtZWFudCB0byBjb25mb3JtIHdpdGggRVZQX0J5dGVzVG9LZXkuXG5cdCAgICAgKiB3d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vRVZQX0J5dGVzVG9LZXkuaHRtbFxuXHQgICAgICovXG5cdCAgICB2YXIgRXZwS0RGID0gQ19hbGdvLkV2cEtERiA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0ga2V5U2l6ZSBUaGUga2V5IHNpemUgaW4gd29yZHMgdG8gZ2VuZXJhdGUuIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZS4gRGVmYXVsdDogTUQ1XG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm0uIERlZmF1bHQ6IDFcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAga2V5U2l6ZTogMTI4LzMyLFxuXHQgICAgICAgICAgICBoYXNoZXI6IE1ENSxcblx0ICAgICAgICAgICAgaXRlcmF0aW9uczogMVxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgZGVyaXZhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uRXZwS0RGLmNyZWF0ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5FdnBLREYuY3JlYXRlKHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNmZykge1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZXJpdmVzIGEga2V5IGZyb20gYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtleSA9IGtkZi5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjb21wdXRlOiBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQpIHtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjZmcgPSB0aGlzLmNmZztcblxuXHQgICAgICAgICAgICAvLyBJbml0IGhhc2hlclxuXHQgICAgICAgICAgICB2YXIgaGFzaGVyID0gY2ZnLmhhc2hlci5jcmVhdGUoKTtcblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleSA9IFdvcmRBcnJheS5jcmVhdGUoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXlXb3JkcyA9IGRlcml2ZWRLZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0gY2ZnLmtleVNpemU7XG5cdCAgICAgICAgICAgIHZhciBpdGVyYXRpb25zID0gY2ZnLml0ZXJhdGlvbnM7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5XG5cdCAgICAgICAgICAgIHdoaWxlIChkZXJpdmVkS2V5V29yZHMubGVuZ3RoIDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShibG9jayk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBibG9jayA9IGhhc2hlci51cGRhdGUocGFzc3dvcmQpLmZpbmFsaXplKHNhbHQpO1xuXHQgICAgICAgICAgICAgICAgaGFzaGVyLnJlc2V0KCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGlvbnNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBoYXNoZXIuZmluYWxpemUoYmxvY2spO1xuXHQgICAgICAgICAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBkZXJpdmVkS2V5LmNvbmNhdChibG9jayk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZGVyaXZlZEtleS5zaWdCeXRlcyA9IGtleVNpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBkZXJpdmVkS2V5O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIERlcml2ZXMgYSBrZXkgZnJvbSBhIHBhc3N3b3JkLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IEEgc2FsdC5cblx0ICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBjb21wdXRhdGlvbi5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLkV2cEtERihwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLkV2cEtERihwYXNzd29yZCwgc2FsdCwgeyBrZXlTaXplOiA4IH0pO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5FdnBLREYocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCwgaXRlcmF0aW9uczogMTAwMCB9KTtcblx0ICAgICAqL1xuXHQgICAgQy5FdnBLREYgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGNmZykge1xuXHQgICAgICAgIHJldHVybiBFdnBLREYuY3JlYXRlKGNmZykuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICB9O1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLkV2cEtERjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIENpcGhlclBhcmFtcyA9IENfbGliLkNpcGhlclBhcmFtcztcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXHQgICAgdmFyIEhleCA9IENfZW5jLkhleDtcblx0ICAgIHZhciBDX2Zvcm1hdCA9IEMuZm9ybWF0O1xuXG5cdCAgICB2YXIgSGV4Rm9ybWF0dGVyID0gQ19mb3JtYXQuSGV4ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoZSBjaXBoZXJ0ZXh0IG9mIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN9IGNpcGhlclBhcmFtcyBUaGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGV4U3RyaW5nID0gQ3J5cHRvSlMuZm9ybWF0LkhleC5zdHJpbmdpZnkoY2lwaGVyUGFyYW1zKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChjaXBoZXJQYXJhbXMpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGNpcGhlclBhcmFtcy5jaXBoZXJ0ZXh0LnRvU3RyaW5nKEhleCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgaGV4YWRlY2ltYWxseSBlbmNvZGVkIGNpcGhlcnRleHQgc3RyaW5nIHRvIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgVGhlIGhleGFkZWNpbWFsbHkgZW5jb2RlZCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmZvcm1hdC5IZXgucGFyc2UoaGV4U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGlucHV0KSB7XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gSGV4LnBhcnNlKGlucHV0KTtcblx0ICAgICAgICAgICAgcmV0dXJuIENpcGhlclBhcmFtcy5jcmVhdGUoeyBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0IH0pO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuZm9ybWF0LkhleDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cdCAgICB2YXIgVXRmOCA9IENfZW5jLlV0Zjg7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEhNQUMgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgSE1BQyA9IENfYWxnby5ITUFDID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBITUFDLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaCBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaG1hY0hhc2hlciA9IENyeXB0b0pTLmFsZ28uSE1BQy5jcmVhdGUoQ3J5cHRvSlMuYWxnby5TSEEyNTYsIGtleSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGhhc2hlciwga2V5KSB7XG5cdCAgICAgICAgICAgIC8vIEluaXQgaGFzaGVyXG5cdCAgICAgICAgICAgIGhhc2hlciA9IHRoaXMuX2hhc2hlciA9IG5ldyBoYXNoZXIuaW5pdCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIFdvcmRBcnJheSwgZWxzZSBhc3N1bWUgV29yZEFycmF5IGFscmVhZHlcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIGtleSA9IFV0ZjgucGFyc2Uoa2V5KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgaGFzaGVyQmxvY2tTaXplID0gaGFzaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGhhc2hlckJsb2NrU2l6ZUJ5dGVzID0gaGFzaGVyQmxvY2tTaXplICogNDtcblxuXHQgICAgICAgICAgICAvLyBBbGxvdyBhcmJpdHJhcnkgbGVuZ3RoIGtleXNcblx0ICAgICAgICAgICAgaWYgKGtleS5zaWdCeXRlcyA+IGhhc2hlckJsb2NrU2l6ZUJ5dGVzKSB7XG5cdCAgICAgICAgICAgICAgICBrZXkgPSBoYXNoZXIuZmluYWxpemUoa2V5KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIGtleS5jbGFtcCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENsb25lIGtleSBmb3IgaW5uZXIgYW5kIG91dGVyIHBhZHNcblx0ICAgICAgICAgICAgdmFyIG9LZXkgPSB0aGlzLl9vS2V5ID0ga2V5LmNsb25lKCk7XG5cdCAgICAgICAgICAgIHZhciBpS2V5ID0gdGhpcy5faUtleSA9IGtleS5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgb0tleVdvcmRzID0gb0tleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGlLZXlXb3JkcyA9IGlLZXkud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gWE9SIGtleXMgd2l0aCBwYWQgY29uc3RhbnRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFzaGVyQmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIG9LZXlXb3Jkc1tpXSBePSAweDVjNWM1YzVjO1xuXHQgICAgICAgICAgICAgICAgaUtleVdvcmRzW2ldIF49IDB4MzYzNjM2MzY7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgb0tleS5zaWdCeXRlcyA9IGlLZXkuc2lnQnl0ZXMgPSBoYXNoZXJCbG9ja1NpemVCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBITUFDIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGhhc2hlciA9IHRoaXMuX2hhc2hlcjtcblxuXHQgICAgICAgICAgICAvLyBSZXNldFxuXHQgICAgICAgICAgICBoYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZSh0aGlzLl9pS2V5KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogVXBkYXRlcyB0aGlzIEhNQUMgd2l0aCBhIG1lc3NhZ2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgVGhlIG1lc3NhZ2UgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7SE1BQ30gVGhpcyBITUFDIGluc3RhbmNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnVwZGF0ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnVwZGF0ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaGVyLnVwZGF0ZShtZXNzYWdlVXBkYXRlKTtcblxuXHQgICAgICAgICAgICAvLyBDaGFpbmFibGVcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEZpbmFsaXplcyB0aGUgSE1BQyBjb21wdXRhdGlvbi5cblx0ICAgICAgICAgKiBOb3RlIHRoYXQgdGhlIGZpbmFsaXplIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBhIGRlc3RydWN0aXZlLCByZWFkLW9uY2Ugb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlVXBkYXRlIChPcHRpb25hbCkgQSBmaW5hbCBtZXNzYWdlIHVwZGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBobWFjID0gaG1hY0hhc2hlci5maW5hbGl6ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgaG1hYyA9IGhtYWNIYXNoZXIuZmluYWxpemUoJ21lc3NhZ2UnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGhtYWMgPSBobWFjSGFzaGVyLmZpbmFsaXplKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZmluYWxpemU6IGZ1bmN0aW9uIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBoYXNoZXIgPSB0aGlzLl9oYXNoZXI7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBITUFDXG5cdCAgICAgICAgICAgIHZhciBpbm5lckhhc2ggPSBoYXNoZXIuZmluYWxpemUobWVzc2FnZVVwZGF0ZSk7XG5cdCAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAgICB2YXIgaG1hYyA9IGhhc2hlci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGlubmVySGFzaCkpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBobWFjO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXHR9KCkpO1xuXG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIiksIHJlcXVpcmUoXCIuL2xpYi10eXBlZGFycmF5c1wiKSwgcmVxdWlyZShcIi4vZW5jLXV0ZjE2XCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0dXJsXCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL3NoYTFcIiksIHJlcXVpcmUoXCIuL3NoYTI1NlwiKSwgcmVxdWlyZShcIi4vc2hhMjI0XCIpLCByZXF1aXJlKFwiLi9zaGE1MTJcIiksIHJlcXVpcmUoXCIuL3NoYTM4NFwiKSwgcmVxdWlyZShcIi4vc2hhM1wiKSwgcmVxdWlyZShcIi4vcmlwZW1kMTYwXCIpLCByZXF1aXJlKFwiLi9obWFjXCIpLCByZXF1aXJlKFwiLi9wYmtkZjJcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIiksIHJlcXVpcmUoXCIuL21vZGUtY2ZiXCIpLCByZXF1aXJlKFwiLi9tb2RlLWN0clwiKSwgcmVxdWlyZShcIi4vbW9kZS1jdHItZ2xhZG1hblwiKSwgcmVxdWlyZShcIi4vbW9kZS1vZmJcIiksIHJlcXVpcmUoXCIuL21vZGUtZWNiXCIpLCByZXF1aXJlKFwiLi9wYWQtYW5zaXg5MjNcIiksIHJlcXVpcmUoXCIuL3BhZC1pc28xMDEyNlwiKSwgcmVxdWlyZShcIi4vcGFkLWlzbzk3OTcxXCIpLCByZXF1aXJlKFwiLi9wYWQtemVyb3BhZGRpbmdcIiksIHJlcXVpcmUoXCIuL3BhZC1ub3BhZGRpbmdcIiksIHJlcXVpcmUoXCIuL2Zvcm1hdC1oZXhcIiksIHJlcXVpcmUoXCIuL2Flc1wiKSwgcmVxdWlyZShcIi4vdHJpcGxlZGVzXCIpLCByZXF1aXJlKFwiLi9yYzRcIiksIHJlcXVpcmUoXCIuL3JhYmJpdFwiKSwgcmVxdWlyZShcIi4vcmFiYml0LWxlZ2FjeVwiKSwgcmVxdWlyZShcIi4vYmxvd2Zpc2hcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4veDY0LWNvcmVcIiwgXCIuL2xpYi10eXBlZGFycmF5c1wiLCBcIi4vZW5jLXV0ZjE2XCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9lbmMtYmFzZTY0dXJsXCIsIFwiLi9tZDVcIiwgXCIuL3NoYTFcIiwgXCIuL3NoYTI1NlwiLCBcIi4vc2hhMjI0XCIsIFwiLi9zaGE1MTJcIiwgXCIuL3NoYTM4NFwiLCBcIi4vc2hhM1wiLCBcIi4vcmlwZW1kMTYwXCIsIFwiLi9obWFjXCIsIFwiLi9wYmtkZjJcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIiwgXCIuL21vZGUtY2ZiXCIsIFwiLi9tb2RlLWN0clwiLCBcIi4vbW9kZS1jdHItZ2xhZG1hblwiLCBcIi4vbW9kZS1vZmJcIiwgXCIuL21vZGUtZWNiXCIsIFwiLi9wYWQtYW5zaXg5MjNcIiwgXCIuL3BhZC1pc28xMDEyNlwiLCBcIi4vcGFkLWlzbzk3OTcxXCIsIFwiLi9wYWQtemVyb3BhZGRpbmdcIiwgXCIuL3BhZC1ub3BhZGRpbmdcIiwgXCIuL2Zvcm1hdC1oZXhcIiwgXCIuL2Flc1wiLCBcIi4vdHJpcGxlZGVzXCIsIFwiLi9yYzRcIiwgXCIuL3JhYmJpdFwiLCBcIi4vcmFiYml0LWxlZ2FjeVwiLCBcIi4vYmxvd2Zpc2hcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRyb290LkNyeXB0b0pTID0gZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHRyZXR1cm4gQ3J5cHRvSlM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBDaGVjayBpZiB0eXBlZCBhcnJheXMgYXJlIHN1cHBvcnRlZFxuXHQgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cblx0ICAgIC8vIFJlZmVyZW5jZSBvcmlnaW5hbCBpbml0XG5cdCAgICB2YXIgc3VwZXJJbml0ID0gV29yZEFycmF5LmluaXQ7XG5cblx0ICAgIC8vIEF1Z21lbnQgV29yZEFycmF5LmluaXQgdG8gaGFuZGxlIHR5cGVkIGFycmF5c1xuXHQgICAgdmFyIHN1YkluaXQgPSBXb3JkQXJyYXkuaW5pdCA9IGZ1bmN0aW9uICh0eXBlZEFycmF5KSB7XG5cdCAgICAgICAgLy8gQ29udmVydCBidWZmZXJzIHRvIHVpbnQ4XG5cdCAgICAgICAgaWYgKHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuXHQgICAgICAgICAgICB0eXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodHlwZWRBcnJheSk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ29udmVydCBvdGhlciBhcnJheSB2aWV3cyB0byB1aW50OFxuXHQgICAgICAgIGlmIChcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEludDhBcnJheSB8fFxuXHQgICAgICAgICAgICAodHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEludDE2QXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBJbnQzMkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50MzJBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXlcblx0ICAgICAgICApIHtcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KHR5cGVkQXJyYXkuYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkuYnl0ZUxlbmd0aCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gSGFuZGxlIFVpbnQ4QXJyYXlcblx0ICAgICAgICBpZiAodHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHR5cGVkQXJyYXlCeXRlTGVuZ3RoID0gdHlwZWRBcnJheS5ieXRlTGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIEV4dHJhY3QgYnl0ZXNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZWRBcnJheUJ5dGVMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gdHlwZWRBcnJheVtpXSA8PCAoMjQgLSAoaSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoaXMgd29yZCBhcnJheVxuXHQgICAgICAgICAgICBzdXBlckluaXQuY2FsbCh0aGlzLCB3b3JkcywgdHlwZWRBcnJheUJ5dGVMZW5ndGgpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIC8vIEVsc2UgY2FsbCBub3JtYWwgaW5pdFxuXHQgICAgICAgICAgICBzdXBlckluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICBzdWJJbml0LnByb3RvdHlwZSA9IFdvcmRBcnJheTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5saWIuV29yZEFycmF5O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBDb25zdGFudHMgdGFibGVcblx0ICAgIHZhciBUID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgY29uc3RhbnRzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuXHQgICAgICAgICAgICBUW2ldID0gKE1hdGguYWJzKE1hdGguc2luKGkgKyAxKSkgKiAweDEwMDAwMDAwMCkgfCAwO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTUQ1IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgTUQ1ID0gQ19hbGdvLk1ENSA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSxcblx0ICAgICAgICAgICAgICAgIDB4OThiYWRjZmUsIDB4MTAzMjU0NzZcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaTtcblx0ICAgICAgICAgICAgICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV07XG5cblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0X2ldID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgIHwgKE1fb2Zmc2V0X2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMCAgPSBNW29mZnNldCArIDBdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMSAgPSBNW29mZnNldCArIDFdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMiAgPSBNW29mZnNldCArIDJdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMyAgPSBNW29mZnNldCArIDNdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNCAgPSBNW29mZnNldCArIDRdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNSAgPSBNW29mZnNldCArIDVdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNiAgPSBNW29mZnNldCArIDZdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNyAgPSBNW29mZnNldCArIDddO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfOCAgPSBNW29mZnNldCArIDhdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfOSAgPSBNW29mZnNldCArIDldO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTAgPSBNW29mZnNldCArIDEwXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzExID0gTVtvZmZzZXQgKyAxMV07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xMiA9IE1bb2Zmc2V0ICsgMTJdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTMgPSBNW29mZnNldCArIDEzXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzE0ID0gTVtvZmZzZXQgKyAxNF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xNSA9IE1bb2Zmc2V0ICsgMTVdO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIGIgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgYyA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBkID0gSFszXTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgTV9vZmZzZXRfMCwgIDcsICBUWzBdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEsICAxMiwgVFsxXSk7XG5cdCAgICAgICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCBNX29mZnNldF8yLCAgMTcsIFRbMl0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfMywgIDIyLCBUWzNdKTtcblx0ICAgICAgICAgICAgYSA9IEZGKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzQsICA3LCAgVFs0XSk7XG5cdCAgICAgICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCBNX29mZnNldF81LCAgMTIsIFRbNV0pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfNiwgIDE3LCBUWzZdKTtcblx0ICAgICAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzcsICAyMiwgVFs3XSk7XG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF84LCAgNywgIFRbOF0pO1xuXHQgICAgICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgTV9vZmZzZXRfOSwgIDEyLCBUWzldKTtcblx0ICAgICAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzEwLCAxNywgVFsxMF0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTEsIDIyLCBUWzExXSk7XG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF8xMiwgNywgIFRbMTJdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEzLCAxMiwgVFsxM10pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTQsIDE3LCBUWzE0XSk7XG5cdCAgICAgICAgICAgIGIgPSBGRihiLCBjLCBkLCBhLCBNX29mZnNldF8xNSwgMjIsIFRbMTVdKTtcblxuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfMSwgIDUsICBUWzE2XSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF82LCAgOSwgIFRbMTddKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzExLCAxNCwgVFsxOF0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfMCwgIDIwLCBUWzE5XSk7XG5cdCAgICAgICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCBNX29mZnNldF81LCAgNSwgIFRbMjBdKTtcblx0ICAgICAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEwLCA5LCAgVFsyMV0pO1xuXHQgICAgICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgTV9vZmZzZXRfMTUsIDE0LCBUWzIyXSk7XG5cdCAgICAgICAgICAgIGIgPSBHRyhiLCBjLCBkLCBhLCBNX29mZnNldF80LCAgMjAsIFRbMjNdKTtcblx0ICAgICAgICAgICAgYSA9IEdHKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzksICA1LCAgVFsyNF0pO1xuXHQgICAgICAgICAgICBkID0gR0coZCwgYSwgYiwgYywgTV9vZmZzZXRfMTQsIDksICBUWzI1XSk7XG5cdCAgICAgICAgICAgIGMgPSBHRyhjLCBkLCBhLCBiLCBNX29mZnNldF8zLCAgMTQsIFRbMjZdKTtcblx0ICAgICAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzgsICAyMCwgVFsyN10pO1xuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfMTMsIDUsICBUWzI4XSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF8yLCAgOSwgIFRbMjldKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzcsICAxNCwgVFszMF0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfMTIsIDIwLCBUWzMxXSk7XG5cblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzUsICA0LCAgVFszMl0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfOCwgIDExLCBUWzMzXSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF8xMSwgMTYsIFRbMzRdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzE0LCAyMywgVFszNV0pO1xuXHQgICAgICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgTV9vZmZzZXRfMSwgIDQsICBUWzM2XSk7XG5cdCAgICAgICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCBNX29mZnNldF80LCAgMTEsIFRbMzddKTtcblx0ICAgICAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzcsICAxNiwgVFszOF0pO1xuXHQgICAgICAgICAgICBiID0gSEgoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTAsIDIzLCBUWzM5XSk7XG5cdCAgICAgICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCBNX29mZnNldF8xMywgNCwgIFRbNDBdKTtcblx0ICAgICAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzAsICAxMSwgVFs0MV0pO1xuXHQgICAgICAgICAgICBjID0gSEgoYywgZCwgYSwgYiwgTV9vZmZzZXRfMywgIDE2LCBUWzQyXSk7XG5cdCAgICAgICAgICAgIGIgPSBISChiLCBjLCBkLCBhLCBNX29mZnNldF82LCAgMjMsIFRbNDNdKTtcblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzksICA0LCAgVFs0NF0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfMTIsIDExLCBUWzQ1XSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF8xNSwgMTYsIFRbNDZdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzIsICAyMywgVFs0N10pO1xuXG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF8wLCAgNiwgIFRbNDhdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzcsICAxMCwgVFs0OV0pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTQsIDE1LCBUWzUwXSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF81LCAgMjEsIFRbNTFdKTtcblx0ICAgICAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEyLCA2LCAgVFs1Ml0pO1xuXHQgICAgICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgTV9vZmZzZXRfMywgIDEwLCBUWzUzXSk7XG5cdCAgICAgICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCBNX29mZnNldF8xMCwgMTUsIFRbNTRdKTtcblx0ICAgICAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzEsICAyMSwgVFs1NV0pO1xuXHQgICAgICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgTV9vZmZzZXRfOCwgIDYsICBUWzU2XSk7XG5cdCAgICAgICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCBNX29mZnNldF8xNSwgMTAsIFRbNTddKTtcblx0ICAgICAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzYsICAxNSwgVFs1OF0pO1xuXHQgICAgICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTMsIDIxLCBUWzU5XSk7XG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF80LCAgNiwgIFRbNjBdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzExLCAxMCwgVFs2MV0pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfMiwgIDE1LCBUWzYyXSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF85LCAgMjEsIFRbNjNdKTtcblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIWzBdID0gKEhbMF0gKyBhKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsxXSArIGIpIHwgMDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzJdICsgYykgfCAwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbM10gKyBkKSB8IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbEggPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsTCA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTVdID0gKFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEggPDwgOCkgIHwgKG5CaXRzVG90YWxIID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEggPDwgMjQpIHwgKG5CaXRzVG90YWxIID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsTCA8PCA4KSAgfCAobkJpdHNUb3RhbEwgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsTCA8PCAyNCkgfCAobkJpdHNUb3RhbEwgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICApO1xuXG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSAoZGF0YVdvcmRzLmxlbmd0aCArIDEpICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5faGFzaDtcblx0ICAgICAgICAgICAgdmFyIEggPSBoYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIEhfaSA9IEhbaV07XG5cblx0ICAgICAgICAgICAgICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChIX2kgPDwgMjQpIHwgKEhfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIEZGKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoKGIgJiBjKSB8ICh+YiAmIGQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEdHKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoKGIgJiBkKSB8IChjICYgfmQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEhIKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoYiBeIGMgXiBkKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIElJKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoYyBeIChiIHwgfmQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5NRDUoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLk1ENSh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLk1ENSA9IEhhc2hlci5fY3JlYXRlSGVscGVyKE1ENSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjTUQ1KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY01ENSA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihNRDUpO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5NRDU7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBDaXBoZXIgRmVlZGJhY2sgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ0ZCID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBDRkIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICBDRkIuRW5jcnlwdG9yID0gQ0ZCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlcjtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgZ2VuZXJhdGVLZXlzdHJlYW1BbmRFbmNyeXB0LmNhbGwodGhpcywgd29yZHMsIG9mZnNldCwgYmxvY2tTaXplLCBjaXBoZXIpO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYmxvY2sgdG8gdXNlIHdpdGggbmV4dCBibG9ja1xuXHQgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB3b3Jkcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJsb2NrU2l6ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIENGQi5EZWNyeXB0b3IgPSBDRkIuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgdmFyIHRoaXNCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblxuXHQgICAgICAgICAgICBnZW5lcmF0ZUtleXN0cmVhbUFuZEVuY3J5cHQuY2FsbCh0aGlzLCB3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUsIGNpcGhlcik7XG5cblx0ICAgICAgICAgICAgLy8gVGhpcyBibG9jayBiZWNvbWVzIHRoZSBwcmV2aW91cyBibG9ja1xuXHQgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB0aGlzQmxvY2s7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIGdlbmVyYXRlS2V5c3RyZWFtQW5kRW5jcnlwdCh3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUsIGNpcGhlcikge1xuXHQgICAgICAgIHZhciBrZXlzdHJlYW07XG5cblx0ICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXG5cdCAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgIGtleXN0cmVhbSA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAga2V5c3RyZWFtID0gdGhpcy5fcHJldkJsb2NrO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gQ0ZCO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ0ZCO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKiogQHByZXNlcnZlXG5cdCAqIENvdW50ZXIgYmxvY2sgbW9kZSBjb21wYXRpYmxlIHdpdGggIERyIEJyaWFuIEdsYWRtYW4gZmlsZWVuYy5jXG5cdCAqIGRlcml2ZWQgZnJvbSBDcnlwdG9KUy5tb2RlLkNUUlxuXHQgKiBKYW4gSHJ1YnkgamhydWJ5LndlYkBnbWFpbC5jb21cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ1RSR2xhZG1hbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgQ1RSR2xhZG1hbiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0XHRmdW5jdGlvbiBpbmNXb3JkKHdvcmQpXG5cdFx0e1xuXHRcdFx0aWYgKCgod29yZCA+PiAyNCkgJiAweGZmKSA9PT0gMHhmZikgeyAvL292ZXJmbG93XG5cdFx0XHR2YXIgYjEgPSAod29yZCA+PiAxNikmMHhmZjtcblx0XHRcdHZhciBiMiA9ICh3b3JkID4+IDgpJjB4ZmY7XG5cdFx0XHR2YXIgYjMgPSB3b3JkICYgMHhmZjtcblxuXHRcdFx0aWYgKGIxID09PSAweGZmKSAvLyBvdmVyZmxvdyBiMVxuXHRcdFx0e1xuXHRcdFx0YjEgPSAwO1xuXHRcdFx0aWYgKGIyID09PSAweGZmKVxuXHRcdFx0e1xuXHRcdFx0XHRiMiA9IDA7XG5cdFx0XHRcdGlmIChiMyA9PT0gMHhmZilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGIzID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQrK2IzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdCsrYjI7XG5cdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHQrK2IxO1xuXHRcdFx0fVxuXG5cdFx0XHR3b3JkID0gMDtcblx0XHRcdHdvcmQgKz0gKGIxIDw8IDE2KTtcblx0XHRcdHdvcmQgKz0gKGIyIDw8IDgpO1xuXHRcdFx0d29yZCArPSBiMztcblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdHdvcmQgKz0gKDB4MDEgPDwgMjQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHdvcmQ7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gaW5jQ291bnRlcihjb3VudGVyKVxuXHRcdHtcblx0XHRcdGlmICgoY291bnRlclswXSA9IGluY1dvcmQoY291bnRlclswXSkpID09PSAwKVxuXHRcdFx0e1xuXHRcdFx0XHQvLyBlbmNyX2RhdGEgaW4gZmlsZWVuYy5jIGZyb20gIERyIEJyaWFuIEdsYWRtYW4ncyBjb3VudHMgb25seSB3aXRoIERXT1JEIGogPCA4XG5cdFx0XHRcdGNvdW50ZXJbMV0gPSBpbmNXb3JkKGNvdW50ZXJbMV0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNvdW50ZXI7XG5cdFx0fVxuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gQ1RSR2xhZG1hbi5FbmNyeXB0b3IgPSBDVFJHbGFkbWFuLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlclxuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cdCAgICAgICAgICAgIHZhciBjb3VudGVyID0gdGhpcy5fY291bnRlcjtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW1cblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICBjb3VudGVyID0gdGhpcy5fY291bnRlciA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXG5cdFx0XHRcdGluY0NvdW50ZXIoY291bnRlcik7XG5cblx0XHRcdFx0dmFyIGtleXN0cmVhbSA9IGNvdW50ZXIuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBDVFJHbGFkbWFuLkRlY3J5cHRvciA9IEVuY3J5cHRvcjtcblxuXHQgICAgcmV0dXJuIENUUkdsYWRtYW47XG5cdH0oKSk7XG5cblxuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ1RSR2xhZG1hbjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIENvdW50ZXIgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ1RSID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBDVFIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gQ1RSLkVuY3J5cHRvciA9IENUUi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXJcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXHQgICAgICAgICAgICB2YXIgY291bnRlciA9IHRoaXMuX2NvdW50ZXI7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgY291bnRlciA9IHRoaXMuX2NvdW50ZXIgPSBpdi5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdmFyIGtleXN0cmVhbSA9IGNvdW50ZXIuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgICAgICAvLyBJbmNyZW1lbnQgY291bnRlclxuXHQgICAgICAgICAgICBjb3VudGVyW2Jsb2NrU2l6ZSAtIDFdID0gKGNvdW50ZXJbYmxvY2tTaXplIC0gMV0gKyAxKSB8IDBcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBDVFIuRGVjcnlwdG9yID0gRW5jcnlwdG9yO1xuXG5cdCAgICByZXR1cm4gQ1RSO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ1RSO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogRWxlY3Ryb25pYyBDb2RlYm9vayBibG9jayBtb2RlLlxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5FQ0IgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIEVDQiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgIEVDQi5FbmNyeXB0b3IgPSBFQ0IuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIEVDQi5EZWNyeXB0b3IgPSBFQ0IuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2NpcGhlci5kZWNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIHJldHVybiBFQ0I7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5FQ0I7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBPdXRwdXQgRmVlZGJhY2sgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuT0ZCID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBPRkIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gT0ZCLkVuY3J5cHRvciA9IE9GQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXJcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXHQgICAgICAgICAgICB2YXIga2V5c3RyZWFtID0gdGhpcy5fa2V5c3RyZWFtO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbVxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIGtleXN0cmVhbSA9IHRoaXMuX2tleXN0cmVhbSA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgT0ZCLkRlY3J5cHRvciA9IEVuY3J5cHRvcjtcblxuXHQgICAgcmV0dXJuIE9GQjtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLk9GQjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIEFOU0kgWC45MjMgcGFkZGluZyBzdHJhdGVneS5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5BbnNpWDkyMyA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBkYXRhU2lnQnl0ZXMgPSBkYXRhLnNpZ0J5dGVzO1xuXHQgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAvLyBDb3VudCBwYWRkaW5nIGJ5dGVzXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBibG9ja1NpemVCeXRlcyAtIGRhdGFTaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgLy8gQ29tcHV0ZSBsYXN0IGJ5dGUgcG9zaXRpb25cblx0ICAgICAgICB2YXIgbGFzdEJ5dGVQb3MgPSBkYXRhU2lnQnl0ZXMgKyBuUGFkZGluZ0J5dGVzIC0gMTtcblxuXHQgICAgICAgIC8vIFBhZFxuXHQgICAgICAgIGRhdGEuY2xhbXAoKTtcblx0ICAgICAgICBkYXRhLndvcmRzW2xhc3RCeXRlUG9zID4+PiAyXSB8PSBuUGFkZGluZ0J5dGVzIDw8ICgyNCAtIChsYXN0Qnl0ZVBvcyAlIDQpICogOCk7XG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyArPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBkYXRhLndvcmRzWyhkYXRhLnNpZ0J5dGVzIC0gMSkgPj4+IDJdICYgMHhmZjtcblxuXHQgICAgICAgIC8vIFJlbW92ZSBwYWRkaW5nXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5BbnNpeDkyMztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIElTTyAxMDEyNiBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLklzbzEwMTI2ID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgLy8gQ291bnQgcGFkZGluZyBieXRlc1xuXHQgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gYmxvY2tTaXplQnl0ZXMgLSBkYXRhLnNpZ0J5dGVzICUgYmxvY2tTaXplQnl0ZXM7XG5cblx0ICAgICAgICAvLyBQYWRcblx0ICAgICAgICBkYXRhLmNvbmNhdChDcnlwdG9KUy5saWIuV29yZEFycmF5LnJhbmRvbShuUGFkZGluZ0J5dGVzIC0gMSkpLlxuXHQgICAgICAgICAgICAgY29uY2F0KENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuUGFkZGluZ0J5dGVzIDw8IDI0XSwgMSkpO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBkYXRhLndvcmRzWyhkYXRhLnNpZ0J5dGVzIC0gMSkgPj4+IDJdICYgMHhmZjtcblxuXHQgICAgICAgIC8vIFJlbW92ZSBwYWRkaW5nXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5Jc28xMDEyNjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIElTTy9JRUMgOTc5Ny0xIFBhZGRpbmcgTWV0aG9kIDIuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuSXNvOTc5NzEgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAvLyBBZGQgMHg4MCBieXRlXG5cdCAgICAgICAgZGF0YS5jb25jYXQoQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4ODAwMDAwMDBdLCAxKSk7XG5cblx0ICAgICAgICAvLyBaZXJvIHBhZCB0aGUgcmVzdFxuXHQgICAgICAgIENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZy5wYWQoZGF0YSwgYmxvY2tTaXplKTtcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIC8vIFJlbW92ZSB6ZXJvIHBhZGRpbmdcblx0ICAgICAgICBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmcudW5wYWQoZGF0YSk7XG5cblx0ICAgICAgICAvLyBSZW1vdmUgb25lIG1vcmUgYnl0ZSAtLSB0aGUgMHg4MCBieXRlXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcy0tO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5Jc285Nzk3MTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIEEgbm9vcCBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLk5vUGFkZGluZyA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKCkge1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuTm9QYWRkaW5nO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogWmVybyBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLlplcm9QYWRkaW5nID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgLy8gUGFkXG5cdCAgICAgICAgZGF0YS5jbGFtcCgpO1xuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMgKz0gYmxvY2tTaXplQnl0ZXMgLSAoKGRhdGEuc2lnQnl0ZXMgJSBibG9ja1NpemVCeXRlcykgfHwgYmxvY2tTaXplQnl0ZXMpO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgIC8vIFVucGFkXG5cdCAgICAgICAgdmFyIGkgPSBkYXRhLnNpZ0J5dGVzIC0gMTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5zaWdCeXRlcyAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdCAgICAgICAgICAgIGlmICgoKGRhdGFXb3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmYpKSB7XG5cdCAgICAgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gaSArIDE7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmc7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhMjU2XCIpLCByZXF1aXJlKFwiLi9obWFjXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTI1NlwiLCBcIi4vaG1hY1wiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgU0hBMjU2ID0gQ19hbGdvLlNIQTI1Njtcblx0ICAgIHZhciBITUFDID0gQ19hbGdvLkhNQUM7XG5cblx0ICAgIC8qKlxuXHQgICAgICogUGFzc3dvcmQtQmFzZWQgS2V5IERlcml2YXRpb24gRnVuY3Rpb24gMiBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBQQktERjIgPSBDX2FsZ28uUEJLREYyID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZXlTaXplIFRoZSBrZXkgc2l6ZSBpbiB3b3JkcyB0byBnZW5lcmF0ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaGVyIHRvIHVzZS4gRGVmYXVsdDogU0hBMjU2XG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm0uIERlZmF1bHQ6IDI1MDAwMFxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cdCAgICAgICAgICAgIGhhc2hlcjogU0hBMjU2LFxuXHQgICAgICAgICAgICBpdGVyYXRpb25zOiAyNTAwMDBcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhlIGRlcml2YXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLlBCS0RGMi5jcmVhdGUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uUEJLREYyLmNyZWF0ZSh7IGtleVNpemU6IDggfSk7XG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLlBCS0RGMi5jcmVhdGUoeyBrZXlTaXplOiA4LCBpdGVyYXRpb25zOiAxMDAwIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjZmcpIHtcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29tcHV0ZXMgdGhlIFBhc3N3b3JkLUJhc2VkIEtleSBEZXJpdmF0aW9uIEZ1bmN0aW9uIDIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgQSBzYWx0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZXkgPSBrZGYuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY29tcHV0ZTogZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjZmcgPSB0aGlzLmNmZztcblxuXHQgICAgICAgICAgICAvLyBJbml0IEhNQUNcblx0ICAgICAgICAgICAgdmFyIGhtYWMgPSBITUFDLmNyZWF0ZShjZmcuaGFzaGVyLCBwYXNzd29yZCk7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXkgPSBXb3JkQXJyYXkuY3JlYXRlKCk7XG5cdCAgICAgICAgICAgIHZhciBibG9ja0luZGV4ID0gV29yZEFycmF5LmNyZWF0ZShbMHgwMDAwMDAwMV0pO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleVdvcmRzID0gZGVyaXZlZEtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGJsb2NrSW5kZXhXb3JkcyA9IGJsb2NrSW5kZXgud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0gY2ZnLmtleVNpemU7XG5cdCAgICAgICAgICAgIHZhciBpdGVyYXRpb25zID0gY2ZnLml0ZXJhdGlvbnM7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5XG5cdCAgICAgICAgICAgIHdoaWxlIChkZXJpdmVkS2V5V29yZHMubGVuZ3RoIDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gaG1hYy51cGRhdGUoc2FsdCkuZmluYWxpemUoYmxvY2tJbmRleCk7XG5cdCAgICAgICAgICAgICAgICBobWFjLnJlc2V0KCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrV29yZHMgPSBibG9jay53b3Jkcztcblx0ICAgICAgICAgICAgICAgIHZhciBibG9ja1dvcmRzTGVuZ3RoID0gYmxvY2tXb3Jkcy5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGlvbnNcblx0ICAgICAgICAgICAgICAgIHZhciBpbnRlcm1lZGlhdGUgPSBibG9jaztcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gaG1hYy5maW5hbGl6ZShpbnRlcm1lZGlhdGUpO1xuXHQgICAgICAgICAgICAgICAgICAgIGhtYWMucmVzZXQoKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGludGVybWVkaWF0ZVdvcmRzID0gaW50ZXJtZWRpYXRlLndvcmRzO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gWE9SIGludGVybWVkaWF0ZSB3aXRoIGJsb2NrXG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBibG9ja1dvcmRzTGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tXb3Jkc1tqXSBePSBpbnRlcm1lZGlhdGVXb3Jkc1tqXTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGRlcml2ZWRLZXkuY29uY2F0KGJsb2NrKTtcblx0ICAgICAgICAgICAgICAgIGJsb2NrSW5kZXhXb3Jkc1swXSsrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGRlcml2ZWRLZXkuc2lnQnl0ZXMgPSBrZXlTaXplICogNDtcblxuXHQgICAgICAgICAgICByZXR1cm4gZGVyaXZlZEtleTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBDb21wdXRlcyB0aGUgUGFzc3dvcmQtQmFzZWQgS2V5IERlcml2YXRpb24gRnVuY3Rpb24gMi5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgY29tcHV0YXRpb24uXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5QQktERjIocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5QQktERjIocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuUEJLREYyKHBhc3N3b3JkLCBzYWx0LCB7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgKi9cblx0ICAgIEMuUEJLREYyID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBjZmcpIHtcblx0ICAgICAgICByZXR1cm4gUEJLREYyLmNyZWF0ZShjZmcpLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgfTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5QQktERjI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHNcblx0ICAgIHZhciBTICA9IFtdO1xuXHQgICAgdmFyIENfID0gW107XG5cdCAgICB2YXIgRyAgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSYWJiaXQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKlxuXHQgICAgICogVGhpcyBpcyBhIGxlZ2FjeSB2ZXJzaW9uIHRoYXQgbmVnbGVjdGVkIHRvIGNvbnZlcnQgdGhlIGtleSB0byBsaXR0bGUtZW5kaWFuLlxuXHQgICAgICogVGhpcyBlcnJvciBkb2Vzbid0IGFmZmVjdCB0aGUgY2lwaGVyJ3Mgc2VjdXJpdHksXG5cdCAgICAgKiBidXQgaXQgZG9lcyBhZmZlY3QgaXRzIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuXG5cdCAgICAgKi9cblx0ICAgIHZhciBSYWJiaXRMZWdhY3kgPSBDX2FsZ28uUmFiYml0TGVnYWN5ID0gU3RyZWFtQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBLID0gdGhpcy5fa2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLmNmZy5pdjtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIHN0YXRlIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1ggPSBbXG5cdCAgICAgICAgICAgICAgICBLWzBdLCAoS1szXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1sxXSwgKEtbMF0gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMl0sIChLWzFdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzNdLCAoS1syXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgQyA9IHRoaXMuX0MgPSBbXG5cdCAgICAgICAgICAgICAgICAoS1syXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLCAoS1swXSAmIDB4ZmZmZjAwMDApIHwgKEtbMV0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzNdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksIChLWzFdICYgMHhmZmZmMDAwMCkgfCAoS1syXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMF0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSwgKEtbMl0gJiAweGZmZmYwMDAwKSB8IChLWzNdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1sxXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpLCAoS1szXSAmIDB4ZmZmZjAwMDApIHwgKEtbMF0gJiAweDAwMDBmZmZmKVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIENhcnJ5IGJpdFxuXHQgICAgICAgICAgICB0aGlzLl9iID0gMDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBNb2RpZnkgdGhlIGNvdW50ZXJzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBDW2ldIF49IFhbKGkgKyA0KSAmIDddO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSVYgc2V0dXBcblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBJViA9IGl2LndvcmRzO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzAgPSBJVlswXTtcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8xID0gSVZbMV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIgc3VidmVjdG9yc1xuXHQgICAgICAgICAgICAgICAgdmFyIGkwID0gKCgoSVZfMCA8PCA4KSB8IChJVl8wID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8wIDw8IDI0KSB8IChJVl8wID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMiA9ICgoKElWXzEgPDwgOCkgfCAoSVZfMSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMSA8PCAyNCkgfCAoSVZfMSA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTEgPSAoaTAgPj4+IDE2KSB8IChpMiAmIDB4ZmZmZjAwMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkzID0gKGkyIDw8IDE2KSAgfCAoaTAgJiAweDAwMDBmZmZmKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICBDWzBdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1sxXSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbMl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzNdIF49IGkzO1xuXHQgICAgICAgICAgICAgICAgQ1s0XSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbNV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzZdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1s3XSBePSBpMztcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW1cblx0ICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBrZXlzdHJlYW0gd29yZHNcblx0ICAgICAgICAgICAgU1swXSA9IFhbMF0gXiAoWFs1XSA+Pj4gMTYpIF4gKFhbM10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzFdID0gWFsyXSBeIChYWzddID4+PiAxNikgXiAoWFs1XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMl0gPSBYWzRdIF4gKFhbMV0gPj4+IDE2KSBeIChYWzddIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1szXSA9IFhbNl0gXiAoWFszXSA+Pj4gMTYpIF4gKFhbMV0gPDwgMTYpO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgU1tpXSA9ICgoKFNbaV0gPDwgOCkgIHwgKFNbaV0gPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoU1tpXSA8PCAyNCkgfCAoU1tpXSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgICAgICBNW29mZnNldCArIGldIF49IFNbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gbmV4dFN0YXRlKCkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblx0ICAgICAgICB2YXIgQyA9IHRoaXMuX0M7XG5cblx0ICAgICAgICAvLyBTYXZlIG9sZCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIENfW2ldID0gQ1tpXTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgQ1swXSA9IChDWzBdICsgMHg0ZDM0ZDM0ZCArIHRoaXMuX2IpIHwgMDtcblx0ICAgICAgICBDWzFdID0gKENbMV0gKyAweGQzNGQzNGQzICsgKChDWzBdID4+PiAwKSA8IChDX1swXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzJdID0gKENbMl0gKyAweDM0ZDM0ZDM0ICsgKChDWzFdID4+PiAwKSA8IChDX1sxXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzNdID0gKENbM10gKyAweDRkMzRkMzRkICsgKChDWzJdID4+PiAwKSA8IChDX1syXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzRdID0gKENbNF0gKyAweGQzNGQzNGQzICsgKChDWzNdID4+PiAwKSA8IChDX1szXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzVdID0gKENbNV0gKyAweDM0ZDM0ZDM0ICsgKChDWzRdID4+PiAwKSA8IChDX1s0XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzZdID0gKENbNl0gKyAweDRkMzRkMzRkICsgKChDWzVdID4+PiAwKSA8IChDX1s1XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzddID0gKENbN10gKyAweGQzNGQzNGQzICsgKChDWzZdID4+PiAwKSA8IChDX1s2XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICB0aGlzLl9iID0gKENbN10gPj4+IDApIDwgKENfWzddID4+PiAwKSA/IDEgOiAwO1xuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBnLXZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciBneCA9IFhbaV0gKyBDW2ldO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnN0cnVjdCBoaWdoIGFuZCBsb3cgYXJndW1lbnQgZm9yIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnYSA9IGd4ICYgMHhmZmZmO1xuXHQgICAgICAgICAgICB2YXIgZ2IgPSBneCA+Pj4gMTY7XG5cblx0ICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhpZ2ggYW5kIGxvdyByZXN1bHQgb2Ygc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdoID0gKCgoKGdhICogZ2EpID4+PiAxNykgKyBnYSAqIGdiKSA+Pj4gMTUpICsgZ2IgKiBnYjtcblx0ICAgICAgICAgICAgdmFyIGdsID0gKCgoZ3ggJiAweGZmZmYwMDAwKSAqIGd4KSB8IDApICsgKCgoZ3ggJiAweDAwMDBmZmZmKSAqIGd4KSB8IDApO1xuXG5cdCAgICAgICAgICAgIC8vIEhpZ2ggWE9SIGxvd1xuXHQgICAgICAgICAgICBHW2ldID0gZ2ggXiBnbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHN0YXRlIHZhbHVlc1xuXHQgICAgICAgIFhbMF0gPSAoR1swXSArICgoR1s3XSA8PCAxNikgfCAoR1s3XSA+Pj4gMTYpKSArICgoR1s2XSA8PCAxNikgfCAoR1s2XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbMV0gPSAoR1sxXSArICgoR1swXSA8PCA4KSAgfCAoR1swXSA+Pj4gMjQpKSArIEdbN10pIHwgMDtcblx0ICAgICAgICBYWzJdID0gKEdbMl0gKyAoKEdbMV0gPDwgMTYpIHwgKEdbMV0gPj4+IDE2KSkgKyAoKEdbMF0gPDwgMTYpIHwgKEdbMF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzNdID0gKEdbM10gKyAoKEdbMl0gPDwgOCkgIHwgKEdbMl0gPj4+IDI0KSkgKyBHWzFdKSB8IDA7XG5cdCAgICAgICAgWFs0XSA9IChHWzRdICsgKChHWzNdIDw8IDE2KSB8IChHWzNdID4+PiAxNikpICsgKChHWzJdIDw8IDE2KSB8IChHWzJdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs1XSA9IChHWzVdICsgKChHWzRdIDw8IDgpICB8IChHWzRdID4+PiAyNCkpICsgR1szXSkgfCAwO1xuXHQgICAgICAgIFhbNl0gPSAoR1s2XSArICgoR1s1XSA8PCAxNikgfCAoR1s1XSA+Pj4gMTYpKSArICgoR1s0XSA8PCAxNikgfCAoR1s0XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbN10gPSAoR1s3XSArICgoR1s2XSA8PCA4KSAgfCAoR1s2XSA+Pj4gMjQpKSArIEdbNV0pIHwgMDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SYWJiaXRMZWdhY3kuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SYWJiaXRMZWdhY3kuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUmFiYml0TGVnYWN5ID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUmFiYml0TGVnYWN5KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SYWJiaXRMZWdhY3k7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHNcblx0ICAgIHZhciBTICA9IFtdO1xuXHQgICAgdmFyIENfID0gW107XG5cdCAgICB2YXIgRyAgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSYWJiaXQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG1cblx0ICAgICAqL1xuXHQgICAgdmFyIFJhYmJpdCA9IENfYWxnby5SYWJiaXQgPSBTdHJlYW1DaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEsgPSB0aGlzLl9rZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuY2ZnLml2O1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBLW2ldID0gKCgoS1tpXSA8PCA4KSAgfCAoS1tpXSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChLW2ldIDw8IDI0KSB8IChLW2ldID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIHN0YXRlIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1ggPSBbXG5cdCAgICAgICAgICAgICAgICBLWzBdLCAoS1szXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1sxXSwgKEtbMF0gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMl0sIChLWzFdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzNdLCAoS1syXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgQyA9IHRoaXMuX0MgPSBbXG5cdCAgICAgICAgICAgICAgICAoS1syXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLCAoS1swXSAmIDB4ZmZmZjAwMDApIHwgKEtbMV0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzNdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksIChLWzFdICYgMHhmZmZmMDAwMCkgfCAoS1syXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMF0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSwgKEtbMl0gJiAweGZmZmYwMDAwKSB8IChLWzNdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1sxXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpLCAoS1szXSAmIDB4ZmZmZjAwMDApIHwgKEtbMF0gJiAweDAwMDBmZmZmKVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIENhcnJ5IGJpdFxuXHQgICAgICAgICAgICB0aGlzLl9iID0gMDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBNb2RpZnkgdGhlIGNvdW50ZXJzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBDW2ldIF49IFhbKGkgKyA0KSAmIDddO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSVYgc2V0dXBcblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBJViA9IGl2LndvcmRzO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzAgPSBJVlswXTtcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8xID0gSVZbMV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIgc3VidmVjdG9yc1xuXHQgICAgICAgICAgICAgICAgdmFyIGkwID0gKCgoSVZfMCA8PCA4KSB8IChJVl8wID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8wIDw8IDI0KSB8IChJVl8wID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMiA9ICgoKElWXzEgPDwgOCkgfCAoSVZfMSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMSA8PCAyNCkgfCAoSVZfMSA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTEgPSAoaTAgPj4+IDE2KSB8IChpMiAmIDB4ZmZmZjAwMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkzID0gKGkyIDw8IDE2KSAgfCAoaTAgJiAweDAwMDBmZmZmKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICBDWzBdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1sxXSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbMl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzNdIF49IGkzO1xuXHQgICAgICAgICAgICAgICAgQ1s0XSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbNV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzZdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1s3XSBePSBpMztcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW1cblx0ICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBrZXlzdHJlYW0gd29yZHNcblx0ICAgICAgICAgICAgU1swXSA9IFhbMF0gXiAoWFs1XSA+Pj4gMTYpIF4gKFhbM10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzFdID0gWFsyXSBeIChYWzddID4+PiAxNikgXiAoWFs1XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMl0gPSBYWzRdIF4gKFhbMV0gPj4+IDE2KSBeIChYWzddIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1szXSA9IFhbNl0gXiAoWFszXSA+Pj4gMTYpIF4gKFhbMV0gPDwgMTYpO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgU1tpXSA9ICgoKFNbaV0gPDwgOCkgIHwgKFNbaV0gPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoU1tpXSA8PCAyNCkgfCAoU1tpXSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgICAgICBNW29mZnNldCArIGldIF49IFNbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gbmV4dFN0YXRlKCkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblx0ICAgICAgICB2YXIgQyA9IHRoaXMuX0M7XG5cblx0ICAgICAgICAvLyBTYXZlIG9sZCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIENfW2ldID0gQ1tpXTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgQ1swXSA9IChDWzBdICsgMHg0ZDM0ZDM0ZCArIHRoaXMuX2IpIHwgMDtcblx0ICAgICAgICBDWzFdID0gKENbMV0gKyAweGQzNGQzNGQzICsgKChDWzBdID4+PiAwKSA8IChDX1swXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzJdID0gKENbMl0gKyAweDM0ZDM0ZDM0ICsgKChDWzFdID4+PiAwKSA8IChDX1sxXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzNdID0gKENbM10gKyAweDRkMzRkMzRkICsgKChDWzJdID4+PiAwKSA8IChDX1syXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzRdID0gKENbNF0gKyAweGQzNGQzNGQzICsgKChDWzNdID4+PiAwKSA8IChDX1szXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzVdID0gKENbNV0gKyAweDM0ZDM0ZDM0ICsgKChDWzRdID4+PiAwKSA8IChDX1s0XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzZdID0gKENbNl0gKyAweDRkMzRkMzRkICsgKChDWzVdID4+PiAwKSA8IChDX1s1XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzddID0gKENbN10gKyAweGQzNGQzNGQzICsgKChDWzZdID4+PiAwKSA8IChDX1s2XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICB0aGlzLl9iID0gKENbN10gPj4+IDApIDwgKENfWzddID4+PiAwKSA/IDEgOiAwO1xuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBnLXZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciBneCA9IFhbaV0gKyBDW2ldO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnN0cnVjdCBoaWdoIGFuZCBsb3cgYXJndW1lbnQgZm9yIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnYSA9IGd4ICYgMHhmZmZmO1xuXHQgICAgICAgICAgICB2YXIgZ2IgPSBneCA+Pj4gMTY7XG5cblx0ICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhpZ2ggYW5kIGxvdyByZXN1bHQgb2Ygc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdoID0gKCgoKGdhICogZ2EpID4+PiAxNykgKyBnYSAqIGdiKSA+Pj4gMTUpICsgZ2IgKiBnYjtcblx0ICAgICAgICAgICAgdmFyIGdsID0gKCgoZ3ggJiAweGZmZmYwMDAwKSAqIGd4KSB8IDApICsgKCgoZ3ggJiAweDAwMDBmZmZmKSAqIGd4KSB8IDApO1xuXG5cdCAgICAgICAgICAgIC8vIEhpZ2ggWE9SIGxvd1xuXHQgICAgICAgICAgICBHW2ldID0gZ2ggXiBnbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHN0YXRlIHZhbHVlc1xuXHQgICAgICAgIFhbMF0gPSAoR1swXSArICgoR1s3XSA8PCAxNikgfCAoR1s3XSA+Pj4gMTYpKSArICgoR1s2XSA8PCAxNikgfCAoR1s2XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbMV0gPSAoR1sxXSArICgoR1swXSA8PCA4KSAgfCAoR1swXSA+Pj4gMjQpKSArIEdbN10pIHwgMDtcblx0ICAgICAgICBYWzJdID0gKEdbMl0gKyAoKEdbMV0gPDwgMTYpIHwgKEdbMV0gPj4+IDE2KSkgKyAoKEdbMF0gPDwgMTYpIHwgKEdbMF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzNdID0gKEdbM10gKyAoKEdbMl0gPDwgOCkgIHwgKEdbMl0gPj4+IDI0KSkgKyBHWzFdKSB8IDA7XG5cdCAgICAgICAgWFs0XSA9IChHWzRdICsgKChHWzNdIDw8IDE2KSB8IChHWzNdID4+PiAxNikpICsgKChHWzJdIDw8IDE2KSB8IChHWzJdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs1XSA9IChHWzVdICsgKChHWzRdIDw8IDgpICB8IChHWzRdID4+PiAyNCkpICsgR1szXSkgfCAwO1xuXHQgICAgICAgIFhbNl0gPSAoR1s2XSArICgoR1s1XSA8PCAxNikgfCAoR1s1XSA+Pj4gMTYpKSArICgoR1s0XSA8PCAxNikgfCAoR1s0XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbN10gPSAoR1s3XSArICgoR1s2XSA8PCA4KSAgfCAoR1s2XSA+Pj4gMjQpKSArIEdbNV0pIHwgMDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SYWJiaXQuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SYWJiaXQuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUmFiYml0ID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUmFiYml0KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SYWJiaXQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8qKlxuXHQgICAgICogUkM0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUkM0ID0gQ19hbGdvLlJDNCA9IFN0cmVhbUNpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaWdCeXRlcyA9IGtleS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBJbml0IHNib3hcblx0ICAgICAgICAgICAgdmFyIFMgPSB0aGlzLl9TID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIFNbaV0gPSBpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gS2V5IHNldHVwXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5Qnl0ZUluZGV4ID0gaSAlIGtleVNpZ0J5dGVzO1xuXHQgICAgICAgICAgICAgICAgdmFyIGtleUJ5dGUgPSAoa2V5V29yZHNba2V5Qnl0ZUluZGV4ID4+PiAyXSA+Pj4gKDI0IC0gKGtleUJ5dGVJbmRleCAlIDQpICogOCkpICYgMHhmZjtcblxuXHQgICAgICAgICAgICAgICAgaiA9IChqICsgU1tpXSArIGtleUJ5dGUpICUgMjU2O1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwXG5cdCAgICAgICAgICAgICAgICB2YXIgdCA9IFNbaV07XG5cdCAgICAgICAgICAgICAgICBTW2ldID0gU1tqXTtcblx0ICAgICAgICAgICAgICAgIFNbal0gPSB0O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ291bnRlcnNcblx0ICAgICAgICAgICAgdGhpcy5faSA9IHRoaXMuX2ogPSAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgTVtvZmZzZXRdIF49IGdlbmVyYXRlS2V5c3RyZWFtV29yZC5jYWxsKHRoaXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAyNTYvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDBcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBnZW5lcmF0ZUtleXN0cmVhbVdvcmQoKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgdmFyIFMgPSB0aGlzLl9TO1xuXHQgICAgICAgIHZhciBpID0gdGhpcy5faTtcblx0ICAgICAgICB2YXIgaiA9IHRoaXMuX2o7XG5cblx0ICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW0gd29yZFxuXHQgICAgICAgIHZhciBrZXlzdHJlYW1Xb3JkID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IDQ7IG4rKykge1xuXHQgICAgICAgICAgICBpID0gKGkgKyAxKSAlIDI1Njtcblx0ICAgICAgICAgICAgaiA9IChqICsgU1tpXSkgJSAyNTY7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcFxuXHQgICAgICAgICAgICB2YXIgdCA9IFNbaV07XG5cdCAgICAgICAgICAgIFNbaV0gPSBTW2pdO1xuXHQgICAgICAgICAgICBTW2pdID0gdDtcblxuXHQgICAgICAgICAgICBrZXlzdHJlYW1Xb3JkIHw9IFNbKFNbaV0gKyBTW2pdKSAlIDI1Nl0gPDwgKDI0IC0gbiAqIDgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIFVwZGF0ZSBjb3VudGVyc1xuXHQgICAgICAgIHRoaXMuX2kgPSBpO1xuXHQgICAgICAgIHRoaXMuX2ogPSBqO1xuXG5cdCAgICAgICAgcmV0dXJuIGtleXN0cmVhbVdvcmQ7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuUkM0LmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuUkM0LmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJDNCA9IFN0cmVhbUNpcGhlci5fY3JlYXRlSGVscGVyKFJDNCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTW9kaWZpZWQgUkM0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUkM0RHJvcCA9IENfYWxnby5SQzREcm9wID0gUkM0LmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGRyb3AgVGhlIG51bWJlciBvZiBrZXlzdHJlYW0gd29yZHMgdG8gZHJvcC4gRGVmYXVsdCAxOTJcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IFJDNC5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgZHJvcDogMTkyXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICBSQzQuX2RvUmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBEcm9wXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmNmZy5kcm9wOyBpID4gMDsgaS0tKSB7XG5cdCAgICAgICAgICAgICAgICBnZW5lcmF0ZUtleXN0cmVhbVdvcmQuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlJDNERyb3AuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SQzREcm9wLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJDNERyb3AgPSBTdHJlYW1DaXBoZXIuX2NyZWF0ZUhlbHBlcihSQzREcm9wKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SQzQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKiBAcHJlc2VydmVcblx0KGMpIDIwMTIgYnkgQ8OpZHJpYyBNZXNuaWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblx0UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG5cdCAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblx0ICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5cdFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cblx0Ki9cblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBDb25zdGFudHMgdGFibGVcblx0ICAgIHZhciBfemwgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuXHQgICAgICAgIDcsICA0LCAxMywgIDEsIDEwLCAgNiwgMTUsICAzLCAxMiwgIDAsICA5LCAgNSwgIDIsIDE0LCAxMSwgIDgsXG5cdCAgICAgICAgMywgMTAsIDE0LCAgNCwgIDksIDE1LCAgOCwgIDEsICAyLCAgNywgIDAsICA2LCAxMywgMTEsICA1LCAxMixcblx0ICAgICAgICAxLCAgOSwgMTEsIDEwLCAgMCwgIDgsIDEyLCAgNCwgMTMsICAzLCAgNywgMTUsIDE0LCAgNSwgIDYsICAyLFxuXHQgICAgICAgIDQsICAwLCAgNSwgIDksICA3LCAxMiwgIDIsIDEwLCAxNCwgIDEsICAzLCAgOCwgMTEsICA2LCAxNSwgMTNdKTtcblx0ICAgIHZhciBfenIgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICA1LCAxNCwgIDcsICAwLCAgOSwgIDIsIDExLCAgNCwgMTMsICA2LCAxNSwgIDgsICAxLCAxMCwgIDMsIDEyLFxuXHQgICAgICAgIDYsIDExLCAgMywgIDcsICAwLCAxMywgIDUsIDEwLCAxNCwgMTUsICA4LCAxMiwgIDQsICA5LCAgMSwgIDIsXG5cdCAgICAgICAgMTUsICA1LCAgMSwgIDMsICA3LCAxNCwgIDYsICA5LCAxMSwgIDgsIDEyLCAgMiwgMTAsICAwLCAgNCwgMTMsXG5cdCAgICAgICAgOCwgIDYsICA0LCAgMSwgIDMsIDExLCAxNSwgIDAsICA1LCAxMiwgIDIsIDEzLCAgOSwgIDcsIDEwLCAxNCxcblx0ICAgICAgICAxMiwgMTUsIDEwLCAgNCwgIDEsICA1LCAgOCwgIDcsICA2LCAgMiwgMTMsIDE0LCAgMCwgIDMsICA5LCAxMV0pO1xuXHQgICAgdmFyIF9zbCA9IFdvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgICAxMSwgMTQsIDE1LCAxMiwgIDUsICA4LCAgNywgIDksIDExLCAxMywgMTQsIDE1LCAgNiwgIDcsICA5LCAgOCxcblx0ICAgICAgICA3LCA2LCAgIDgsIDEzLCAxMSwgIDksICA3LCAxNSwgIDcsIDEyLCAxNSwgIDksIDExLCAgNywgMTMsIDEyLFxuXHQgICAgICAgIDExLCAxMywgIDYsICA3LCAxNCwgIDksIDEzLCAxNSwgMTQsICA4LCAxMywgIDYsICA1LCAxMiwgIDcsICA1LFxuXHQgICAgICAgICAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgIDksICA4LCAgOSwgMTQsICA1LCAgNiwgIDgsICA2LCAgNSwgMTIsXG5cdCAgICAgICAgOSwgMTUsICA1LCAxMSwgIDYsICA4LCAxMywgMTIsICA1LCAxMiwgMTMsIDE0LCAxMSwgIDgsICA1LCAgNiBdKTtcblx0ICAgIHZhciBfc3IgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICA4LCAgOSwgIDksIDExLCAxMywgMTUsIDE1LCAgNSwgIDcsICA3LCAgOCwgMTEsIDE0LCAxNCwgMTIsICA2LFxuXHQgICAgICAgIDksIDEzLCAxNSwgIDcsIDEyLCAgOCwgIDksIDExLCAgNywgIDcsIDEyLCAgNywgIDYsIDE1LCAxMywgMTEsXG5cdCAgICAgICAgOSwgIDcsIDE1LCAxMSwgIDgsICA2LCAgNiwgMTQsIDEyLCAxMywgIDUsIDE0LCAxMywgMTMsICA3LCAgNSxcblx0ICAgICAgICAxNSwgIDUsICA4LCAxMSwgMTQsIDE0LCAgNiwgMTQsICA2LCAgOSwgMTIsICA5LCAxMiwgIDUsIDE1LCAgOCxcblx0ICAgICAgICA4LCAgNSwgMTIsICA5LCAxMiwgIDUsIDE0LCAgNiwgIDgsIDEzLCAgNiwgIDUsIDE1LCAxMywgMTEsIDExIF0pO1xuXG5cdCAgICB2YXIgX2hsID0gIFdvcmRBcnJheS5jcmVhdGUoWyAweDAwMDAwMDAwLCAweDVBODI3OTk5LCAweDZFRDlFQkExLCAweDhGMUJCQ0RDLCAweEE5NTNGRDRFXSk7XG5cdCAgICB2YXIgX2hyID0gIFdvcmRBcnJheS5jcmVhdGUoWyAweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogUklQRU1EMTYwIGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUklQRU1EMTYwID0gQ19hbGdvLlJJUEVNRDE2MCA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggID0gV29yZEFycmF5LmNyZWF0ZShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3NiwgMHhDM0QyRTFGMF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblxuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaTtcblx0ICAgICAgICAgICAgICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0X2ldID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgIHwgKE1fb2Zmc2V0X2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBIICA9IHRoaXMuX2hhc2gud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBobCA9IF9obC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGhyID0gX2hyLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgemwgPSBfemwud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB6ciA9IF96ci53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNsID0gX3NsLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc3IgPSBfc3Iud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbDtcblx0ICAgICAgICAgICAgdmFyIGFyLCBiciwgY3IsIGRyLCBlcjtcblxuXHQgICAgICAgICAgICBhciA9IGFsID0gSFswXTtcblx0ICAgICAgICAgICAgYnIgPSBibCA9IEhbMV07XG5cdCAgICAgICAgICAgIGNyID0gY2wgPSBIWzJdO1xuXHQgICAgICAgICAgICBkciA9IGRsID0gSFszXTtcblx0ICAgICAgICAgICAgZXIgPSBlbCA9IEhbNF07XG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIHZhciB0O1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpICs9IDEpIHtcblx0ICAgICAgICAgICAgICAgIHQgPSAoYWwgKyAgTVtvZmZzZXQremxbaV1dKXwwO1xuXHQgICAgICAgICAgICAgICAgaWYgKGk8MTYpe1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYxKGJsLGNsLGRsKSArIGhsWzBdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDMyKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjIoYmwsY2wsZGwpICsgaGxbMV07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NDgpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMyhibCxjbCxkbCkgKyBobFsyXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw2NCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY0KGJsLGNsLGRsKSArIGhsWzNdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY1KGJsLGNsLGRsKSArIGhsWzRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdCA9IHR8MDtcblx0ICAgICAgICAgICAgICAgIHQgPSAgcm90bCh0LHNsW2ldKTtcblx0ICAgICAgICAgICAgICAgIHQgPSAodCtlbCl8MDtcblx0ICAgICAgICAgICAgICAgIGFsID0gZWw7XG5cdCAgICAgICAgICAgICAgICBlbCA9IGRsO1xuXHQgICAgICAgICAgICAgICAgZGwgPSByb3RsKGNsLCAxMCk7XG5cdCAgICAgICAgICAgICAgICBjbCA9IGJsO1xuXHQgICAgICAgICAgICAgICAgYmwgPSB0O1xuXG5cdCAgICAgICAgICAgICAgICB0ID0gKGFyICsgTVtvZmZzZXQrenJbaV1dKXwwO1xuXHQgICAgICAgICAgICAgICAgaWYgKGk8MTYpe1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY1KGJyLGNyLGRyKSArIGhyWzBdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDMyKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjQoYnIsY3IsZHIpICsgaHJbMV07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NDgpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMyhicixjcixkcikgKyBoclsyXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw2NCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYyKGJyLGNyLGRyKSArIGhyWzNdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYxKGJyLGNyLGRyKSArIGhyWzRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdCA9IHR8MDtcblx0ICAgICAgICAgICAgICAgIHQgPSAgcm90bCh0LHNyW2ldKSA7XG5cdCAgICAgICAgICAgICAgICB0ID0gKHQrZXIpfDA7XG5cdCAgICAgICAgICAgICAgICBhciA9IGVyO1xuXHQgICAgICAgICAgICAgICAgZXIgPSBkcjtcblx0ICAgICAgICAgICAgICAgIGRyID0gcm90bChjciwgMTApO1xuXHQgICAgICAgICAgICAgICAgY3IgPSBicjtcblx0ICAgICAgICAgICAgICAgIGJyID0gdDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICB0ICAgID0gKEhbMV0gKyBjbCArIGRyKXwwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKXwwO1xuXHQgICAgICAgICAgICBIWzJdID0gKEhbM10gKyBlbCArIGFyKXwwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbNF0gKyBhbCArIGJyKXwwO1xuXHQgICAgICAgICAgICBIWzRdID0gKEhbMF0gKyBibCArIGNyKXwwO1xuXHQgICAgICAgICAgICBIWzBdID0gIHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsIDw8IDgpICB8IChuQml0c1RvdGFsID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbCA8PCAyNCkgfCAobkJpdHNUb3RhbCA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSAoZGF0YVdvcmRzLmxlbmd0aCArIDEpICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5faGFzaDtcblx0ICAgICAgICAgICAgdmFyIEggPSBoYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIEhfaSA9IEhbaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChIX2kgPDwgMjQpIHwgKEhfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblxuXHQgICAgZnVuY3Rpb24gZjEoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKHgpIF4gKHkpIF4gKHopKTtcblxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmMih4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoKHgpJih5KSkgfCAoKH54KSYoeikpKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZjMoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmNCh4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoKHgpICYgKHopKSB8ICgoeSkmKH4oeikpKSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGY1KHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCh4KSBeICgoeSkgfCh+KHopKSkpO1xuXG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHJvdGwoeCxuKSB7XG5cdCAgICAgICAgcmV0dXJuICh4PDxuKSB8ICh4Pj4+KDMyLW4pKTtcblx0ICAgIH1cblxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuUklQRU1EMTYwKCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5SSVBFTUQxNjAod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5SSVBFTUQxNjAgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihSSVBFTUQxNjApO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1JJUEVNRDE2MChtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNSSVBFTUQxNjAgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoUklQRU1EMTYwKTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUklQRU1EMTYwO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdFxuXHQgICAgdmFyIFcgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMSBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTEgPSBDX2FsZ28uU0hBMSA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSxcblx0ICAgICAgICAgICAgICAgIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsXG5cdCAgICAgICAgICAgICAgICAweGMzZDJlMWYwXG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIGIgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgYyA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBkID0gSFszXTtcblx0ICAgICAgICAgICAgdmFyIGUgPSBIWzRdO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKGkgPCAxNikge1xuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSBNW29mZnNldCArIGldIHwgMDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdO1xuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSAobiA8PCAxKSB8IChuID4+PiAzMSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBlICsgV1tpXTtcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMjApIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9ICgoYiAmIGMpIHwgKH5iICYgZCkpICsgMHg1YTgyNzk5OTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA8IDQwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCArPSAoYiBeIGMgXiBkKSArIDB4NmVkOWViYTE7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCA2MCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgKz0gKChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKSkgLSAweDcwZTQ0MzI0O1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlmIChpIDwgODApICovIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9IChiIF4gYyBeIGQpIC0gMHgzNTlkM2UyYTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgZSA9IGQ7XG5cdCAgICAgICAgICAgICAgICBkID0gYztcblx0ICAgICAgICAgICAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7XG5cdCAgICAgICAgICAgICAgICBiID0gYTtcblx0ICAgICAgICAgICAgICAgIGEgPSB0O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgSFswXSA9IChIWzBdICsgYSkgfCAwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMV0gKyBiKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMl0gPSAoSFsyXSArIGMpIHwgMDtcblx0ICAgICAgICAgICAgSFszXSA9IChIWzNdICsgZCkgfCAwO1xuXHQgICAgICAgICAgICBIWzRdID0gKEhbNF0gKyBlKSB8IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTVdID0gbkJpdHNUb3RhbDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTEoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTEod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEExID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoU0hBMSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMShtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEExID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTEpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTE7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhMjU2XCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTI1NlwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgU0hBMjU2ID0gQ19hbGdvLlNIQTI1NjtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMjI0IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMjI0ID0gQ19hbGdvLlNIQTIyNCA9IFNIQTI1Ni5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcblx0ICAgICAgICAgICAgICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTRcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gU0hBMjU2Ll9kb0ZpbmFsaXplLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgaGFzaC5zaWdCeXRlcyAtPSA0O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjI0KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyMjQod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEyMjQgPSBTSEEyNTYuX2NyZWF0ZUhlbHBlcihTSEEyMjQpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTIyNChtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEyMjQgPSBTSEEyNTYuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMjI0KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEEyMjQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoTWF0aCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIEluaXRpYWxpemF0aW9uIGFuZCByb3VuZCBjb25zdGFudHMgdGFibGVzXG5cdCAgICB2YXIgSCA9IFtdO1xuXHQgICAgdmFyIEsgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBjb25zdGFudHNcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZnVuY3Rpb24gaXNQcmltZShuKSB7XG5cdCAgICAgICAgICAgIHZhciBzcXJ0TiA9IE1hdGguc3FydChuKTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgZmFjdG9yID0gMjsgZmFjdG9yIDw9IHNxcnROOyBmYWN0b3IrKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKCEobiAlIGZhY3RvcikpIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBmdW5jdGlvbiBnZXRGcmFjdGlvbmFsQml0cyhuKSB7XG5cdCAgICAgICAgICAgIHJldHVybiAoKG4gLSAobiB8IDApKSAqIDB4MTAwMDAwMDAwKSB8IDA7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdmFyIG4gPSAyO1xuXHQgICAgICAgIHZhciBuUHJpbWUgPSAwO1xuXHQgICAgICAgIHdoaWxlIChuUHJpbWUgPCA2NCkge1xuXHQgICAgICAgICAgICBpZiAoaXNQcmltZShuKSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKG5QcmltZSA8IDgpIHtcblx0ICAgICAgICAgICAgICAgICAgICBIW25QcmltZV0gPSBnZXRGcmFjdGlvbmFsQml0cyhNYXRoLnBvdyhuLCAxIC8gMikpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgS1tuUHJpbWVdID0gZ2V0RnJhY3Rpb25hbEJpdHMoTWF0aC5wb3cobiwgMSAvIDMpKTtcblxuXHQgICAgICAgICAgICAgICAgblByaW1lKys7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBuKys7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0XG5cdCAgICB2YXIgVyA9IFtdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0yNTYgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEyNTYgPSBDX2FsZ28uU0hBMjU2ID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkuaW5pdChILnNsaWNlKDApKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICB2YXIgYSA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBiID0gSFsxXTtcblx0ICAgICAgICAgICAgdmFyIGMgPSBIWzJdO1xuXHQgICAgICAgICAgICB2YXIgZCA9IEhbM107XG5cdCAgICAgICAgICAgIHZhciBlID0gSFs0XTtcblx0ICAgICAgICAgICAgdmFyIGYgPSBIWzVdO1xuXHQgICAgICAgICAgICB2YXIgZyA9IEhbNl07XG5cdCAgICAgICAgICAgIHZhciBoID0gSFs3XTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMTYpIHtcblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4ID0gV1tpIC0gMTVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTAgID0gKChnYW1tYTB4IDw8IDI1KSB8IChnYW1tYTB4ID4+PiA3KSkgIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ2FtbWEweCA8PCAxNCkgfCAoZ2FtbWEweCA+Pj4gMTgpKSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdhbW1hMHggPj4+IDMpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMXggPSBXW2kgLSAyXTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExICA9ICgoZ2FtbWExeCA8PCAxNSkgfCAoZ2FtbWExeCA+Pj4gMTcpKSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGdhbW1hMXggPDwgMTMpIHwgKGdhbW1hMXggPj4+IDE5KSkgXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYW1tYTF4ID4+PiAxMCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl07XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciBjaCAgPSAoZSAmIGYpIF4gKH5lICYgZyk7XG5cdCAgICAgICAgICAgICAgICB2YXIgbWFqID0gKGEgJiBiKSBeIChhICYgYykgXiAoYiAmIGMpO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWEwID0gKChhIDw8IDMwKSB8IChhID4+PiAyKSkgXiAoKGEgPDwgMTkpIHwgKGEgPj4+IDEzKSkgXiAoKGEgPDwgMTApIHwgKGEgPj4+IDIyKSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWExID0gKChlIDw8IDI2KSB8IChlID4+PiA2KSkgXiAoKGUgPDwgMjEpIHwgKGUgPj4+IDExKSkgXiAoKGUgPDwgNykgIHwgKGUgPj4+IDI1KSk7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbaV0gKyBXW2ldO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQyID0gc2lnbWEwICsgbWFqO1xuXG5cdCAgICAgICAgICAgICAgICBoID0gZztcblx0ICAgICAgICAgICAgICAgIGcgPSBmO1xuXHQgICAgICAgICAgICAgICAgZiA9IGU7XG5cdCAgICAgICAgICAgICAgICBlID0gKGQgKyB0MSkgfCAwO1xuXHQgICAgICAgICAgICAgICAgZCA9IGM7XG5cdCAgICAgICAgICAgICAgICBjID0gYjtcblx0ICAgICAgICAgICAgICAgIGIgPSBhO1xuXHQgICAgICAgICAgICAgICAgYSA9ICh0MSArIHQyKSB8IDA7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIWzBdID0gKEhbMF0gKyBhKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsxXSArIGIpIHwgMDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzJdICsgYykgfCAwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbM10gKyBkKSB8IDA7XG5cdCAgICAgICAgICAgIEhbNF0gPSAoSFs0XSArIGUpIHwgMDtcblx0ICAgICAgICAgICAgSFs1XSA9IChIWzVdICsgZikgfCAwO1xuXHQgICAgICAgICAgICBIWzZdID0gKEhbNl0gKyBnKSB8IDA7XG5cdCAgICAgICAgICAgIEhbN10gPSAoSFs3XSArIGgpIHwgMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE0XSA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNV0gPSBuQml0c1RvdGFsO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gZGF0YVdvcmRzLmxlbmd0aCAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjU2KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyNTYod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEyNTYgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEEyNTYpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEyNTYgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMjU2KTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMjU2O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3g2NC1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3g2NC1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ194NjQgPSBDLng2NDtcblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZDtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIENvbnN0YW50cyB0YWJsZXNcblx0ICAgIHZhciBSSE9fT0ZGU0VUUyA9IFtdO1xuXHQgICAgdmFyIFBJX0lOREVYRVMgID0gW107XG5cdCAgICB2YXIgUk9VTkRfQ09OU1RBTlRTID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgQ29uc3RhbnRzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIENvbXB1dGUgcmhvIG9mZnNldCBjb25zdGFudHNcblx0ICAgICAgICB2YXIgeCA9IDEsIHkgPSAwO1xuXHQgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgMjQ7IHQrKykge1xuXHQgICAgICAgICAgICBSSE9fT0ZGU0VUU1t4ICsgNSAqIHldID0gKCh0ICsgMSkgKiAodCArIDIpIC8gMikgJSA2NDtcblxuXHQgICAgICAgICAgICB2YXIgbmV3WCA9IHkgJSA1O1xuXHQgICAgICAgICAgICB2YXIgbmV3WSA9ICgyICogeCArIDMgKiB5KSAlIDU7XG5cdCAgICAgICAgICAgIHggPSBuZXdYO1xuXHQgICAgICAgICAgICB5ID0gbmV3WTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDb21wdXRlIHBpIGluZGV4IGNvbnN0YW50c1xuXHQgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgeSsrKSB7XG5cdCAgICAgICAgICAgICAgICBQSV9JTkRFWEVTW3ggKyA1ICogeV0gPSB5ICsgKCgyICogeCArIDMgKiB5KSAlIDUpICogNTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENvbXB1dGUgcm91bmQgY29uc3RhbnRzXG5cdCAgICAgICAgdmFyIExGU1IgPSAweDAxO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuXHQgICAgICAgICAgICB2YXIgcm91bmRDb25zdGFudE1zdyA9IDA7XG5cdCAgICAgICAgICAgIHZhciByb3VuZENvbnN0YW50THN3ID0gMDtcblxuXHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDc7IGorKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKExGU1IgJiAweDAxKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGJpdFBvc2l0aW9uID0gKDEgPDwgaikgLSAxO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChiaXRQb3NpdGlvbiA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kQ29uc3RhbnRMc3cgXj0gMSA8PCBiaXRQb3NpdGlvbjtcblx0ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgLyogaWYgKGJpdFBvc2l0aW9uID49IDMyKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kQ29uc3RhbnRNc3cgXj0gMSA8PCAoYml0UG9zaXRpb24gLSAzMik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgTEZTUlxuXHQgICAgICAgICAgICAgICAgaWYgKExGU1IgJiAweDgwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gUHJpbWl0aXZlIHBvbHlub21pYWwgb3ZlciBHRigyKTogeF44ICsgeF42ICsgeF41ICsgeF40ICsgMVxuXHQgICAgICAgICAgICAgICAgICAgIExGU1IgPSAoTEZTUiA8PCAxKSBeIDB4NzE7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIExGU1IgPDw9IDE7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBST1VORF9DT05TVEFOVFNbaV0gPSBYNjRXb3JkLmNyZWF0ZShyb3VuZENvbnN0YW50TXN3LCByb3VuZENvbnN0YW50THN3KTtcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3RzIGZvciB0ZW1wb3JhcnkgdmFsdWVzXG5cdCAgICB2YXIgVCA9IFtdO1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyBpKyspIHtcblx0ICAgICAgICAgICAgVFtpXSA9IFg2NFdvcmQuY3JlYXRlKCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMyBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTMgPSBDX2FsZ28uU0hBMyA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvdXRwdXRMZW5ndGhcblx0ICAgICAgICAgKiAgIFRoZSBkZXNpcmVkIG51bWJlciBvZiBiaXRzIGluIHRoZSBvdXRwdXQgaGFzaC5cblx0ICAgICAgICAgKiAgIE9ubHkgdmFsdWVzIHBlcm1pdHRlZCBhcmU6IDIyNCwgMjU2LCAzODQsIDUxMi5cblx0ICAgICAgICAgKiAgIERlZmF1bHQ6IDUxMlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogSGFzaGVyLmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBvdXRwdXRMZW5ndGg6IDUxMlxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGUgPSBbXVxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHN0YXRlW2ldID0gbmV3IFg2NFdvcmQuaW5pdCgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgdGhpcy5ibG9ja1NpemUgPSAoMTYwMCAtIDIgKiB0aGlzLmNmZy5vdXRwdXRMZW5ndGgpIC8gMzI7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGU7XG5cdCAgICAgICAgICAgIHZhciBuQmxvY2tTaXplTGFuZXMgPSB0aGlzLmJsb2NrU2l6ZSAvIDI7XG5cblx0ICAgICAgICAgICAgLy8gQWJzb3JiXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkJsb2NrU2l6ZUxhbmVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIE0yaSAgPSBNW29mZnNldCArIDIgKiBpXTtcblx0ICAgICAgICAgICAgICAgIHZhciBNMmkxID0gTVtvZmZzZXQgKyAyICogaSArIDFdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgTTJpID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaSA8PCA4KSAgfCAoTTJpID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaSA8PCAyNCkgfCAoTTJpID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgICAgICBNMmkxID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaTEgPDwgOCkgIHwgKE0yaTEgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTTJpMSA8PCAyNCkgfCAoTTJpMSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBBYnNvcmIgbWVzc2FnZSBpbnRvIHN0YXRlXG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2ldO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5oaWdoIF49IE0yaTE7XG5cdCAgICAgICAgICAgICAgICBsYW5lLmxvdyAgXj0gTTJpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUm91bmRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIHJvdW5kID0gMDsgcm91bmQgPCAyNDsgcm91bmQrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gVGhldGFcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gTWl4IGNvbHVtbiBsYW5lc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0TXN3ID0gMCwgdExzdyA9IDA7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyB5KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVt4ICsgNSAqIHldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0TXN3IF49IGxhbmUuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdExzdyBePSBsYW5lLmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBUZW1wb3JhcnkgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4ID0gVFt4XTtcblx0ICAgICAgICAgICAgICAgICAgICBUeC5oaWdoID0gdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICBUeC5sb3cgID0gdExzdztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4NCA9IFRbKHggKyA0KSAlIDVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeDEgPSBUWyh4ICsgMSkgJSA1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHgxTXN3ID0gVHgxLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4MUxzdyA9IFR4MS5sb3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBNaXggc3Vycm91bmRpbmcgY29sdW1uc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0TXN3ID0gVHg0LmhpZ2ggXiAoKFR4MU1zdyA8PCAxKSB8IChUeDFMc3cgPj4+IDMxKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRMc3cgPSBUeDQubG93ICBeICgoVHgxTHN3IDw8IDEpIHwgKFR4MU1zdyA+Pj4gMzEpKTtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW3ggKyA1ICogeV07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxhbmUuaGlnaCBePSB0TXN3O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmxvdyAgXj0gdExzdztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJobyBQaVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgbGFuZUluZGV4ID0gMTsgbGFuZUluZGV4IDwgMjU7IGxhbmVJbmRleCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRNc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRMc3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2xhbmVJbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVNc3cgPSBsYW5lLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVMc3cgPSBsYW5lLmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcmhvT2Zmc2V0ID0gUkhPX09GRlNFVFNbbGFuZUluZGV4XTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFJvdGF0ZSBsYW5lc1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChyaG9PZmZzZXQgPCAzMikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0TXN3ID0gKGxhbmVNc3cgPDwgcmhvT2Zmc2V0KSB8IChsYW5lTHN3ID4+PiAoMzIgLSByaG9PZmZzZXQpKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdExzdyA9IChsYW5lTHN3IDw8IHJob09mZnNldCkgfCAobGFuZU1zdyA+Pj4gKDMyIC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlmIChyaG9PZmZzZXQgPj0gMzIpICovIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdE1zdyA9IChsYW5lTHN3IDw8IChyaG9PZmZzZXQgLSAzMikpIHwgKGxhbmVNc3cgPj4+ICg2NCAtIHJob09mZnNldCkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0THN3ID0gKGxhbmVNc3cgPDwgKHJob09mZnNldCAtIDMyKSkgfCAobGFuZUxzdyA+Pj4gKDY0IC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNwb3NlIGxhbmVzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFRQaUxhbmUgPSBUW1BJX0lOREVYRVNbbGFuZUluZGV4XV07XG5cdCAgICAgICAgICAgICAgICAgICAgVFBpTGFuZS5oaWdoID0gdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICBUUGlMYW5lLmxvdyAgPSB0THN3O1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBSaG8gcGkgYXQgeCA9IHkgPSAwXG5cdCAgICAgICAgICAgICAgICB2YXIgVDAgPSBUWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHN0YXRlMCA9IHN0YXRlWzBdO1xuXHQgICAgICAgICAgICAgICAgVDAuaGlnaCA9IHN0YXRlMC5oaWdoO1xuXHQgICAgICAgICAgICAgICAgVDAubG93ICA9IHN0YXRlMC5sb3c7XG5cblx0ICAgICAgICAgICAgICAgIC8vIENoaVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyB4KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVJbmRleCA9IHggKyA1ICogeTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVtsYW5lSW5kZXhdO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVExhbmUgPSBUW2xhbmVJbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBUeDFMYW5lID0gVFsoKHggKyAxKSAlIDUpICsgNSAqIHldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVHgyTGFuZSA9IFRbKCh4ICsgMikgJSA1KSArIDUgKiB5XTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXggcm93c1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmhpZ2ggPSBUTGFuZS5oaWdoIF4gKH5UeDFMYW5lLmhpZ2ggJiBUeDJMYW5lLmhpZ2gpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmxvdyAgPSBUTGFuZS5sb3cgIF4gKH5UeDFMYW5lLmxvdyAgJiBUeDJMYW5lLmxvdyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBJb3RhXG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHJvdW5kQ29uc3RhbnQgPSBST1VORF9DT05TVEFOVFNbcm91bmRdO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5oaWdoIF49IHJvdW5kQ29uc3RhbnQuaGlnaDtcblx0ICAgICAgICAgICAgICAgIGxhbmUubG93ICBePSByb3VuZENvbnN0YW50Lmxvdztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplQml0cyA9IHRoaXMuYmxvY2tTaXplICogMzI7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHgxIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoTWF0aC5jZWlsKChuQml0c0xlZnQgKyAxKSAvIGJsb2NrU2l6ZUJpdHMpICogYmxvY2tTaXplQml0cykgPj4+IDUpIC0gMV0gfD0gMHg4MDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGU7XG5cdCAgICAgICAgICAgIHZhciBvdXRwdXRMZW5ndGhCeXRlcyA9IHRoaXMuY2ZnLm91dHB1dExlbmd0aCAvIDg7XG5cdCAgICAgICAgICAgIHZhciBvdXRwdXRMZW5ndGhMYW5lcyA9IG91dHB1dExlbmd0aEJ5dGVzIC8gODtcblxuXHQgICAgICAgICAgICAvLyBTcXVlZXplXG5cdCAgICAgICAgICAgIHZhciBoYXNoV29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRwdXRMZW5ndGhMYW5lczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbaV07XG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZU1zdyA9IGxhbmUuaGlnaDtcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lTHN3ID0gbGFuZS5sb3c7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgICAgICBsYW5lTXN3ID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVNc3cgPDwgOCkgIHwgKGxhbmVNc3cgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgobGFuZU1zdyA8PCAyNCkgfCAobGFuZU1zdyA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICAgICAgbGFuZUxzdyA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChsYW5lTHN3IDw8IDgpICB8IChsYW5lTHN3ID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVMc3cgPDwgMjQpIHwgKGxhbmVMc3cgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3F1ZWV6ZSBzdGF0ZSB0byByZXRyaWV2ZSBoYXNoXG5cdCAgICAgICAgICAgICAgICBoYXNoV29yZHMucHVzaChsYW5lTHN3KTtcblx0ICAgICAgICAgICAgICAgIGhhc2hXb3Jkcy5wdXNoKGxhbmVNc3cpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdChoYXNoV29yZHMsIG91dHB1dExlbmd0aEJ5dGVzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gY2xvbmUuX3N0YXRlID0gdGhpcy5fc3RhdGUuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgc3RhdGVbaV0gPSBzdGF0ZVtpXS5jbG9uZSgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMygnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMyh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTMgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEEzKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEEzKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTMgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMyk7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIiksIHJlcXVpcmUoXCIuL3NoYTUxMlwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiLCBcIi4vc2hhNTEyXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfeDY0ID0gQy54NjQ7XG5cdCAgICB2YXIgWDY0V29yZCA9IENfeDY0LldvcmQ7XG5cdCAgICB2YXIgWDY0V29yZEFycmF5ID0gQ194NjQuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBTSEE1MTIgPSBDX2FsZ28uU0hBNTEyO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0zODQgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEzODQgPSBDX2FsZ28uU0hBMzg0ID0gU0hBNTEyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBYNjRXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgpLCBuZXcgWDY0V29yZC5pbml0KDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDkxNTkwMTVhLCAweDMwNzBkZDE3KSwgbmV3IFg2NFdvcmQuaW5pdCgweDE1MmZlY2Q4LCAweGY3MGU1OTM5KSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg2NzMzMjY2NywgMHhmZmMwMGIzMSksIG5ldyBYNjRXb3JkLmluaXQoMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcpLCBuZXcgWDY0V29yZC5pbml0KDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQpXG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IFNIQTUxMi5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIGhhc2guc2lnQnl0ZXMgLT0gMTY7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEzODQoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTM4NCh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTM4NCA9IFNIQTUxMi5fY3JlYXRlSGVscGVyKFNIQTM4NCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMzg0KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTM4NCA9IFNIQTUxMi5fY3JlYXRlSG1hY0hlbHBlcihTSEEzODQpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTM4NDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi94NjQtY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX3g2NCA9IEMueDY0O1xuXHQgICAgdmFyIFg2NFdvcmQgPSBDX3g2NC5Xb3JkO1xuXHQgICAgdmFyIFg2NFdvcmRBcnJheSA9IENfeDY0LldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIGZ1bmN0aW9uIFg2NFdvcmRfY3JlYXRlKCkge1xuXHQgICAgICAgIHJldHVybiBYNjRXb3JkLmNyZWF0ZS5hcHBseShYNjRXb3JkLCBhcmd1bWVudHMpO1xuXHQgICAgfVxuXG5cdCAgICAvLyBDb25zdGFudHNcblx0ICAgIHZhciBLID0gW1xuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIpLCBYNjRXb3JkX2NyZWF0ZSgweDcxMzc0NDkxLCAweDIzZWY2NWNkKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGI1YzBmYmNmLCAweGVjNGQzYjJmKSwgWDY0V29yZF9jcmVhdGUoMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCksIFg2NFdvcmRfY3JlYXRlKDB4NTlmMTExZjEsIDB4YjYwNWQwMTkpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIpLCBYNjRXb3JkX2NyZWF0ZSgweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGQ4MDdhYTk4LCAweGEzMDMwMjQyKSwgWDY0V29yZF9jcmVhdGUoMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyNDMxODViZSwgMHg0ZWU0YjI4YyksIFg2NFdvcmRfY3JlYXRlKDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYpLCBYNjRXb3JkX2NyZWF0ZSgweDgwZGViMWZlLCAweDNiMTY5NmIxKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDliZGMwNmE3LCAweDI1YzcxMjM1KSwgWDY0V29yZF9jcmVhdGUoMHhjMTliZjE3NCwgMHhjZjY5MjY5NCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhlNDliNjljMSwgMHg5ZWYxNGFkMiksIFg2NFdvcmRfY3JlYXRlKDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUpLCBYNjRXb3JkX2NyZWF0ZSgweDI0MGNhMWNjLCAweDc3YWM5YzY1KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDJkZTkyYzZmLCAweDU5MmIwMjc1KSwgWDY0V29yZF9jcmVhdGUoMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCksIFg2NFdvcmRfY3JlYXRlKDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIpLCBYNjRXb3JkX2NyZWF0ZSgweGE4MzFjNjZkLCAweDJkYjQzMjEwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGIwMDMyN2M4LCAweDk4ZmIyMTNmKSwgWDY0V29yZF9jcmVhdGUoMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhjNmUwMGJmMywgMHgzZGE4OGZjMiksIFg2NFdvcmRfY3JlYXRlKDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYpLCBYNjRXb3JkX2NyZWF0ZSgweDE0MjkyOTY3LCAweDBhMGU2ZTcwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI3YjcwYTg1LCAweDQ2ZDIyZmZjKSwgWDY0V29yZF9jcmVhdGUoMHgyZTFiMjEzOCwgMHg1YzI2YzkyNiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCksIFg2NFdvcmRfY3JlYXRlKDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NjUwYTczNTQsIDB4OGJhZjYzZGUpLCBYNjRXb3JkX2NyZWF0ZSgweDc2NmEwYWJiLCAweDNjNzdiMmE4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDgxYzJjOTJlLCAweDQ3ZWRhZWU2KSwgWDY0V29yZF9jcmVhdGUoMHg5MjcyMmM4NSwgMHgxNDgyMzUzYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCksIFg2NFdvcmRfY3JlYXRlKDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEpLCBYNjRXb3JkX2NyZWF0ZSgweGM3NmM1MWEzLCAweDA2NTRiZTMwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGQxOTJlODE5LCAweGQ2ZWY1MjE4KSwgWDY0V29yZF9jcmVhdGUoMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSksIFg2NFdvcmRfY3JlYXRlKDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgpLCBYNjRXb3JkX2NyZWF0ZSgweDFlMzc2YzA4LCAweDUxNDFhYjUzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI3NDg3NzRjLCAweGRmOGVlYjk5KSwgWDY0V29yZF9jcmVhdGUoMHgzNGIwYmNiNSwgMHhlMTliNDhhOCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgzOTFjMGNiMywgMHhjNWM5NWE2MyksIFg2NFdvcmRfY3JlYXRlKDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMpLCBYNjRXb3JkX2NyZWF0ZSgweDY4MmU2ZmYzLCAweGQ2YjJiOGEzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDc0OGY4MmVlLCAweDVkZWZiMmZjKSwgWDY0V29yZF9jcmVhdGUoMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiksIFg2NFdvcmRfY3JlYXRlKDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgpLCBYNjRXb3JkX2NyZWF0ZSgweGE0NTA2Y2ViLCAweGRlODJiZGU5KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGJlZjlhM2Y3LCAweGIyYzY3OTE1KSwgWDY0V29yZF9jcmVhdGUoMHhjNjcxNzhmMiwgMHhlMzcyNTMyYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhjYTI3M2VjZSwgMHhlYTI2NjE5YyksIFg2NFdvcmRfY3JlYXRlKDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUpLCBYNjRXb3JkX2NyZWF0ZSgweGY1N2Q0ZjdmLCAweGVlNmVkMTc4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDA2ZjA2N2FhLCAweDcyMTc2ZmJhKSwgWDY0V29yZF9jcmVhdGUoMHgwYTYzN2RjNSwgMHhhMmM4OThhNiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSksIFg2NFdvcmRfY3JlYXRlKDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQpLCBYNjRXb3JkX2NyZWF0ZSgweDMyY2FhYjdiLCAweDQwYzcyNDkzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDNjOWViZTBhLCAweDE1YzliZWJjKSwgWDY0V29yZF9jcmVhdGUoMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiksIFg2NFdvcmRfY3JlYXRlKDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMpLCBYNjRXb3JkX2NyZWF0ZSgweDZjNDQxOThjLCAweDRhNDc1ODE3KVxuXHQgICAgXTtcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0c1xuXHQgICAgdmFyIFcgPSBbXTtcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG5cdCAgICAgICAgICAgIFdbaV0gPSBYNjRXb3JkX2NyZWF0ZSgpO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTUxMiBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTUxMiA9IENfYWxnby5TSEE1MTIgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFg2NFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg2YTA5ZTY2NywgMHhmM2JjYzkwOCksIG5ldyBYNjRXb3JkLmluaXQoMHhiYjY3YWU4NSwgMHg4NGNhYTczYiksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmIpLCBuZXcgWDY0V29yZC5pbml0KDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDUxMGU1MjdmLCAweGFkZTY4MmQxKSwgbmV3IFg2NFdvcmQuaW5pdCgweDliMDU2ODhjLCAweDJiM2U2YzFmKSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHgxZjgzZDlhYiwgMHhmYjQxYmQ2YiksIG5ldyBYNjRXb3JkLmluaXQoMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSlcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBIMCA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBIMSA9IEhbMV07XG5cdCAgICAgICAgICAgIHZhciBIMiA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBIMyA9IEhbM107XG5cdCAgICAgICAgICAgIHZhciBINCA9IEhbNF07XG5cdCAgICAgICAgICAgIHZhciBINSA9IEhbNV07XG5cdCAgICAgICAgICAgIHZhciBINiA9IEhbNl07XG5cdCAgICAgICAgICAgIHZhciBINyA9IEhbN107XG5cblx0ICAgICAgICAgICAgdmFyIEgwaCA9IEgwLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIMGwgPSBIMC5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIMWggPSBIMS5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDFsID0gSDEubG93O1xuXHQgICAgICAgICAgICB2YXIgSDJoID0gSDIuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEgybCA9IEgyLmxvdztcblx0ICAgICAgICAgICAgdmFyIEgzaCA9IEgzLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIM2wgPSBIMy5sb3c7XG5cdCAgICAgICAgICAgIHZhciBINGggPSBINC5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDRsID0gSDQubG93O1xuXHQgICAgICAgICAgICB2YXIgSDVoID0gSDUuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEg1bCA9IEg1Lmxvdztcblx0ICAgICAgICAgICAgdmFyIEg2aCA9IEg2LmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBINmwgPSBINi5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIN2ggPSBINy5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDdsID0gSDcubG93O1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhaCA9IEgwaDtcblx0ICAgICAgICAgICAgdmFyIGFsID0gSDBsO1xuXHQgICAgICAgICAgICB2YXIgYmggPSBIMWg7XG5cdCAgICAgICAgICAgIHZhciBibCA9IEgxbDtcblx0ICAgICAgICAgICAgdmFyIGNoID0gSDJoO1xuXHQgICAgICAgICAgICB2YXIgY2wgPSBIMmw7XG5cdCAgICAgICAgICAgIHZhciBkaCA9IEgzaDtcblx0ICAgICAgICAgICAgdmFyIGRsID0gSDNsO1xuXHQgICAgICAgICAgICB2YXIgZWggPSBINGg7XG5cdCAgICAgICAgICAgIHZhciBlbCA9IEg0bDtcblx0ICAgICAgICAgICAgdmFyIGZoID0gSDVoO1xuXHQgICAgICAgICAgICB2YXIgZmwgPSBINWw7XG5cdCAgICAgICAgICAgIHZhciBnaCA9IEg2aDtcblx0ICAgICAgICAgICAgdmFyIGdsID0gSDZsO1xuXHQgICAgICAgICAgICB2YXIgaGggPSBIN2g7XG5cdCAgICAgICAgICAgIHZhciBobCA9IEg3bDtcblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgV2lsO1xuXHQgICAgICAgICAgICAgICAgdmFyIFdpaDtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBXaSA9IFdbaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEV4dGVuZCBtZXNzYWdlXG5cdCAgICAgICAgICAgICAgICBpZiAoaSA8IDE2KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gV2kuaGlnaCA9IE1bb2Zmc2V0ICsgaSAqIDJdICAgICB8IDA7XG5cdCAgICAgICAgICAgICAgICAgICAgV2lsID0gV2kubG93ICA9IE1bb2Zmc2V0ICsgaSAqIDIgKyAxXSB8IDA7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIEdhbW1hMFxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4ICA9IFdbaSAtIDE1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEweGggPSBnYW1tYTB4LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMHhsID0gZ2FtbWEweC5sb3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMGggID0gKChnYW1tYTB4aCA+Pj4gMSkgfCAoZ2FtbWEweGwgPDwgMzEpKSBeICgoZ2FtbWEweGggPj4+IDgpIHwgKGdhbW1hMHhsIDw8IDI0KSkgXiAoZ2FtbWEweGggPj4+IDcpO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTBsICA9ICgoZ2FtbWEweGwgPj4+IDEpIHwgKGdhbW1hMHhoIDw8IDMxKSkgXiAoKGdhbW1hMHhsID4+PiA4KSB8IChnYW1tYTB4aCA8PCAyNCkpIF4gKChnYW1tYTB4bCA+Pj4gNykgfCAoZ2FtbWEweGggPDwgMjUpKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIEdhbW1hMVxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4ICA9IFdbaSAtIDJdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4aCA9IGdhbW1hMXguaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExeGwgPSBnYW1tYTF4Lmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExaCAgPSAoKGdhbW1hMXhoID4+PiAxOSkgfCAoZ2FtbWExeGwgPDwgMTMpKSBeICgoZ2FtbWExeGggPDwgMykgfCAoZ2FtbWExeGwgPj4+IDI5KSkgXiAoZ2FtbWExeGggPj4+IDYpO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTFsICA9ICgoZ2FtbWExeGwgPj4+IDE5KSB8IChnYW1tYTF4aCA8PCAxMykpIF4gKChnYW1tYTF4bCA8PCAzKSB8IChnYW1tYTF4aCA+Pj4gMjkpKSBeICgoZ2FtbWExeGwgPj4+IDYpIHwgKGdhbW1hMXhoIDw8IDI2KSk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2k3ICA9IFdbaSAtIDddO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTdoID0gV2k3LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpN2wgPSBXaTcubG93O1xuXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpMTYgID0gV1tpIC0gMTZdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTE2aCA9IFdpMTYuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2kxNmwgPSBXaTE2LmxvdztcblxuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IGdhbW1hMGwgKyBXaTdsO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpaCA9IGdhbW1hMGggKyBXaTdoICsgKChXaWwgPj4+IDApIDwgKGdhbW1hMGwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IFdpbCArIGdhbW1hMWw7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gV2loICsgZ2FtbWExaCArICgoV2lsID4+PiAwKSA8IChnYW1tYTFsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgICAgICBXaWwgPSBXaWwgKyBXaTE2bDtcblx0ICAgICAgICAgICAgICAgICAgICBXaWggPSBXaWggKyBXaTE2aCArICgoV2lsID4+PiAwKSA8IChXaTE2bCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICBXaS5oaWdoID0gV2loO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpLmxvdyAgPSBXaWw7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciBjaGggID0gKGVoICYgZmgpIF4gKH5laCAmIGdoKTtcblx0ICAgICAgICAgICAgICAgIHZhciBjaGwgID0gKGVsICYgZmwpIF4gKH5lbCAmIGdsKTtcblx0ICAgICAgICAgICAgICAgIHZhciBtYWpoID0gKGFoICYgYmgpIF4gKGFoICYgY2gpIF4gKGJoICYgY2gpO1xuXHQgICAgICAgICAgICAgICAgdmFyIG1hamwgPSAoYWwgJiBibCkgXiAoYWwgJiBjbCkgXiAoYmwgJiBjbCk7XG5cblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTBoID0gKChhaCA+Pj4gMjgpIHwgKGFsIDw8IDQpKSAgXiAoKGFoIDw8IDMwKSAgfCAoYWwgPj4+IDIpKSBeICgoYWggPDwgMjUpIHwgKGFsID4+PiA3KSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWEwbCA9ICgoYWwgPj4+IDI4KSB8IChhaCA8PCA0KSkgIF4gKChhbCA8PCAzMCkgIHwgKGFoID4+PiAyKSkgXiAoKGFsIDw8IDI1KSB8IChhaCA+Pj4gNykpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMWggPSAoKGVoID4+PiAxNCkgfCAoZWwgPDwgMTgpKSBeICgoZWggPj4+IDE4KSB8IChlbCA8PCAxNCkpIF4gKChlaCA8PCAyMykgfCAoZWwgPj4+IDkpKTtcblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTFsID0gKChlbCA+Pj4gMTQpIHwgKGVoIDw8IDE4KSkgXiAoKGVsID4+PiAxOCkgfCAoZWggPDwgMTQpKSBeICgoZWwgPDwgMjMpIHwgKGVoID4+PiA5KSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV1cblx0ICAgICAgICAgICAgICAgIHZhciBLaSAgPSBLW2ldO1xuXHQgICAgICAgICAgICAgICAgdmFyIEtpaCA9IEtpLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICB2YXIgS2lsID0gS2kubG93O1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gaGwgKyBzaWdtYTFsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IGhoICsgc2lnbWExaCArICgodDFsID4+PiAwKSA8IChobCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gdDFsICsgY2hsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IHQxaCArIGNoaCArICgodDFsID4+PiAwKSA8IChjaGwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxbCA9IHQxbCArIEtpbDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWggPSB0MWggKyBLaWggKyAoKHQxbCA+Pj4gMCkgPCAoS2lsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWwgPSB0MWwgKyBXaWw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFoID0gdDFoICsgV2loICsgKCh0MWwgPj4+IDApIDwgKFdpbCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIHQyID0gc2lnbWEwICsgbWFqXG5cdCAgICAgICAgICAgICAgICB2YXIgdDJsID0gc2lnbWEwbCArIG1hamw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDJoID0gc2lnbWEwaCArIG1hamggKyAoKHQybCA+Pj4gMCkgPCAoc2lnbWEwbCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB3b3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICAgICAgaGggPSBnaDtcblx0ICAgICAgICAgICAgICAgIGhsID0gZ2w7XG5cdCAgICAgICAgICAgICAgICBnaCA9IGZoO1xuXHQgICAgICAgICAgICAgICAgZ2wgPSBmbDtcblx0ICAgICAgICAgICAgICAgIGZoID0gZWg7XG5cdCAgICAgICAgICAgICAgICBmbCA9IGVsO1xuXHQgICAgICAgICAgICAgICAgZWwgPSAoZGwgKyB0MWwpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGVoID0gKGRoICsgdDFoICsgKChlbCA+Pj4gMCkgPCAoZGwgPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgICAgICAgICBkaCA9IGNoO1xuXHQgICAgICAgICAgICAgICAgZGwgPSBjbDtcblx0ICAgICAgICAgICAgICAgIGNoID0gYmg7XG5cdCAgICAgICAgICAgICAgICBjbCA9IGJsO1xuXHQgICAgICAgICAgICAgICAgYmggPSBhaDtcblx0ICAgICAgICAgICAgICAgIGJsID0gYWw7XG5cdCAgICAgICAgICAgICAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGFoID0gKHQxaCArIHQyaCArICgoYWwgPj4+IDApIDwgKHQxbCA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIEgwbCA9IEgwLmxvdyAgPSAoSDBsICsgYWwpO1xuXHQgICAgICAgICAgICBIMC5oaWdoID0gKEgwaCArIGFoICsgKChIMGwgPj4+IDApIDwgKGFsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgxbCA9IEgxLmxvdyAgPSAoSDFsICsgYmwpO1xuXHQgICAgICAgICAgICBIMS5oaWdoID0gKEgxaCArIGJoICsgKChIMWwgPj4+IDApIDwgKGJsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgybCA9IEgyLmxvdyAgPSAoSDJsICsgY2wpO1xuXHQgICAgICAgICAgICBIMi5oaWdoID0gKEgyaCArIGNoICsgKChIMmwgPj4+IDApIDwgKGNsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgzbCA9IEgzLmxvdyAgPSAoSDNsICsgZGwpO1xuXHQgICAgICAgICAgICBIMy5oaWdoID0gKEgzaCArIGRoICsgKChIM2wgPj4+IDApIDwgKGRsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg0bCA9IEg0LmxvdyAgPSAoSDRsICsgZWwpO1xuXHQgICAgICAgICAgICBINC5oaWdoID0gKEg0aCArIGVoICsgKChINGwgPj4+IDApIDwgKGVsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg1bCA9IEg1LmxvdyAgPSAoSDVsICsgZmwpO1xuXHQgICAgICAgICAgICBINS5oaWdoID0gKEg1aCArIGZoICsgKChINWwgPj4+IDApIDwgKGZsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg2bCA9IEg2LmxvdyAgPSAoSDZsICsgZ2wpO1xuXHQgICAgICAgICAgICBINi5oaWdoID0gKEg2aCArIGdoICsgKChINmwgPj4+IDApIDwgKGdsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg3bCA9IEg3LmxvdyAgPSAoSDdsICsgaGwpO1xuXHQgICAgICAgICAgICBINy5oaWdoID0gKEg3aCArIGhoICsgKChIN2wgPj4+IDApIDwgKGhsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDEyOCkgPj4+IDEwKSA8PCA1KSArIDMwXSA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDEyOCkgPj4+IDEwKSA8PCA1KSArIDMxXSA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBkYXRhV29yZHMubGVuZ3RoICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBoYXNoIHRvIDMyLWJpdCB3b3JkIGFycmF5IGJlZm9yZSByZXR1cm5pbmdcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLnRvWDMyKCk7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMTAyNC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEE1MTIoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTUxMih3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTUxMiA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFNIQTUxMik7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBNTEyKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTUxMiA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihTSEE1MTIpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTUxMjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEJsb2NrQ2lwaGVyID0gQ19saWIuQmxvY2tDaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBQZXJtdXRlZCBDaG9pY2UgMSBjb25zdGFudHNcblx0ICAgIHZhciBQQzEgPSBbXG5cdCAgICAgICAgNTcsIDQ5LCA0MSwgMzMsIDI1LCAxNywgOSwgIDEsXG5cdCAgICAgICAgNTgsIDUwLCA0MiwgMzQsIDI2LCAxOCwgMTAsIDIsXG5cdCAgICAgICAgNTksIDUxLCA0MywgMzUsIDI3LCAxOSwgMTEsIDMsXG5cdCAgICAgICAgNjAsIDUyLCA0NCwgMzYsIDYzLCA1NSwgNDcsIDM5LFxuXHQgICAgICAgIDMxLCAyMywgMTUsIDcsICA2MiwgNTQsIDQ2LCAzOCxcblx0ICAgICAgICAzMCwgMjIsIDE0LCA2LCAgNjEsIDUzLCA0NSwgMzcsXG5cdCAgICAgICAgMjksIDIxLCAxMywgNSwgIDI4LCAyMCwgMTIsIDRcblx0ICAgIF07XG5cblx0ICAgIC8vIFBlcm11dGVkIENob2ljZSAyIGNvbnN0YW50c1xuXHQgICAgdmFyIFBDMiA9IFtcblx0ICAgICAgICAxNCwgMTcsIDExLCAyNCwgMSwgIDUsXG5cdCAgICAgICAgMywgIDI4LCAxNSwgNiwgIDIxLCAxMCxcblx0ICAgICAgICAyMywgMTksIDEyLCA0LCAgMjYsIDgsXG5cdCAgICAgICAgMTYsIDcsICAyNywgMjAsIDEzLCAyLFxuXHQgICAgICAgIDQxLCA1MiwgMzEsIDM3LCA0NywgNTUsXG5cdCAgICAgICAgMzAsIDQwLCA1MSwgNDUsIDMzLCA0OCxcblx0ICAgICAgICA0NCwgNDksIDM5LCA1NiwgMzQsIDUzLFxuXHQgICAgICAgIDQ2LCA0MiwgNTAsIDM2LCAyOSwgMzJcblx0ICAgIF07XG5cblx0ICAgIC8vIEN1bXVsYXRpdmUgYml0IHNoaWZ0IGNvbnN0YW50c1xuXHQgICAgdmFyIEJJVF9TSElGVFMgPSBbMSwgIDIsICA0LCAgNiwgIDgsICAxMCwgMTIsIDE0LCAxNSwgMTcsIDE5LCAyMSwgMjMsIDI1LCAyNywgMjhdO1xuXG5cdCAgICAvLyBTQk9YZXMgYW5kIHJvdW5kIHBlcm11dGF0aW9uIGNvbnN0YW50c1xuXHQgICAgdmFyIFNCT1hfUCA9IFtcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDA6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHgyMDAwMDAwMDogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4MzAwMDAwMDA6IDB4Mixcblx0ICAgICAgICAgICAgMHg0MDAwMDAwMDogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwMDA6IDB4ODA4MjAyLFxuXHQgICAgICAgICAgICAweDYwMDAwMDAwOiAweDgwMDIwMixcblx0ICAgICAgICAgICAgMHg3MDAwMDAwMDogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDA6IDB4MjAyLFxuXHQgICAgICAgICAgICAweDkwMDAwMDAwOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDAwMDogMHg4MjAwLFxuXHQgICAgICAgICAgICAweGIwMDAwMDAwOiAweDgwODAwMCxcblx0ICAgICAgICAgICAgMHhjMDAwMDAwMDogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGQwMDAwMDAwOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHhlMDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGYwMDAwMDAwOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDAwOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHgyODAwMDAwMDogMHg4MjAyLFxuXHQgICAgICAgICAgICAweDM4MDAwMDAwOiAweDgwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwMDA6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweDU4MDAwMDAwOiAweDIwMCxcblx0ICAgICAgICAgICAgMHg2ODAwMDAwMDogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4NzgwMDAwMDA6IDB4Mixcblx0ICAgICAgICAgICAgMHg4ODAwMDAwMDogMHg4MDAyMDAsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDA6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHhhODAwMDAwMDogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwMDA6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweGM4MDAwMDAwOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHhkODAwMDAwMDogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGU4MDAwMDAwOiAweDIwMixcblx0ICAgICAgICAgICAgMHhmODAwMDAwMDogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTogMHg4MDAwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDAxOiAweDIsXG5cdCAgICAgICAgICAgIDB4MjAwMDAwMDE6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDAxOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHg0MDAwMDAwMTogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwMDE6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHg2MDAwMDAwMTogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwMDE6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAxOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHg5MDAwMDAwMTogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwMDE6IDB4ODAwMDAyLFxuXHQgICAgICAgICAgICAweGIwMDAwMDAxOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4YzAwMDAwMDE6IDB4MjAyLFxuXHQgICAgICAgICAgICAweGQwMDAwMDAxOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHhlMDAwMDAwMTogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGYwMDAwMDAxOiAweDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTogMHg4MDgyMDIsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDE6IDB4ODA4MDAwLFxuXHQgICAgICAgICAgICAweDI4MDAwMDAxOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHgzODAwMDAwMTogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwMDE6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHg1ODAwMDAwMTogMHg4MDAwMDIsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwMDE6IDB4Mixcblx0ICAgICAgICAgICAgMHg3ODAwMDAwMTogMHg4MjAyLFxuXHQgICAgICAgICAgICAweDg4MDAwMDAxOiAweDgwMDIsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDE6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweGE4MDAwMDAxOiAweDIwMixcblx0ICAgICAgICAgICAgMHhiODAwMDAwMTogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4YzgwMDAwMDE6IDB4ODAwMjAwLFxuXHQgICAgICAgICAgICAweGQ4MDAwMDAxOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDAwMDE6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHhmODAwMDAwMTogMHg4MDgwMDJcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHgyMDAwMDAwOiAweDgwMDAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDA6IDB4NDAwODAwMTAsXG5cdCAgICAgICAgICAgIDB4NDAwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHg1MDAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDYwMDAwMDA6IDB4NDAwMDQwMDAsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwMDogMHgxMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwOiAweDg0MDAwLFxuXHQgICAgICAgICAgICAweDkwMDAwMDA6IDB4NDAwMDQwMTAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHhiMDAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweGMwMDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGUwMDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHhmMDAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweDI4MDAwMDA6IDB4MTAsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwMDogMHg0MDAwNDAxMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDAwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDU4MDAwMDA6IDB4NDAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHg3ODAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDg4MDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGE4MDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHhiODAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweGM4MDAwMDA6IDB4NDAwMDAwMTAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDAwMDogMHg4NDAwMCxcblx0ICAgICAgICAgICAgMHhlODAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweGY4MDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDExMDAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDEyMDAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweDEzMDAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDE0MDAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweDE1MDAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDE2MDAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweDE3MDAwMDAwOiAweDQwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxOTAwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDAwMDogMHg4MDAxMCxcblx0ICAgICAgICAgICAgMHgxYjAwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHgxYzAwMDAwMDogMHg4NDAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHgxZTAwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZjAwMDAwMDogMHg0MDA4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMDgwMDAwMDogMHg4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMTgwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHgxMjgwMDAwMDogMHg0MDA4MDAwMCxcblx0ICAgICAgICAgICAgMHgxMzgwMDAwMDogMHg0MDAwLFxuXHQgICAgICAgICAgICAweDE0ODAwMDAwOiAweDQwMDA0MDAwLFxuXHQgICAgICAgICAgICAweDE1ODAwMDAwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDE2ODAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDE3ODAwMDAwOiAweDQwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE4ODAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDE5ODAwMDAwOiAweDQwMDAwMDEwLFxuXHQgICAgICAgICAgICAweDFhODAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweDFiODAwMDAwOiAweDgwMDEwLFxuXHQgICAgICAgICAgICAweDFjODAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWQ4MDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDAwMDogMHg0MDA4MDAxMCxcblx0ICAgICAgICAgICAgMHgxZjgwMDAwMDogMHg4NDAwMFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDEwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDIwMDAwMDogMHg0MDAwMTAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHg0MDAwMDA6IDB4MTAwMDQsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4NjAwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4OTAwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwOiAweDEwMTAwLFxuXHQgICAgICAgICAgICAweGIwMDAwMDogMHg0MDEwMDA0LFxuXHQgICAgICAgICAgICAweGMwMDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweGQwMDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHhlMDAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHhmMDAwMDA6IDB4MTAwLFxuXHQgICAgICAgICAgICAweDgwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4MjgwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwOiAweDQwMDAxMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4NTgwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweDY4MDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHg3ODAwMDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDg4MDAwMDogMHg0LFxuXHQgICAgICAgICAgICAweDk4MDAwMDogMHgxMDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweGM4MDAwMDogMHgxMDEwMCxcblx0ICAgICAgICAgICAgMHhkODAwMDA6IDB4NDAwMDEwNCxcblx0ICAgICAgICAgICAgMHhlODAwMDA6IDB4NDAxMDEwNCxcblx0ICAgICAgICAgICAgMHhmODAwMDA6IDB4NDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHgxMjAwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweDEzMDAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHgxNDAwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHgxNTAwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4MTYwMDAwMDogMHg0MDAwMDA0LFxuXHQgICAgICAgICAgICAweDE3MDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwOiAweDQwMDAxMDQsXG5cdCAgICAgICAgICAgIDB4MTkwMDAwMDogMHg0MDAwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHgxYjAwMDAwOiAweDEwMTAwLFxuXHQgICAgICAgICAgICAweDFjMDAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwMDAwOiAweDEwNCxcblx0ICAgICAgICAgICAgMHgxZTAwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweDFmMDAwMDA6IDB4NDAxMDAwNCxcblx0ICAgICAgICAgICAgMHgxMDgwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTE4MDAwMDogMHgxMDQsXG5cdCAgICAgICAgICAgIDB4MTI4MDAwMDogMHg0MDEwMTAwLFxuXHQgICAgICAgICAgICAweDEzODAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxNDgwMDAwOiAweDEwMDA0LFxuXHQgICAgICAgICAgICAweDE1ODAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHgxNjgwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHgxNzgwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4MTg4MDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHgxOTgwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4MWE4MDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHgxYjgwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4MWM4MDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweDFkODAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDAwOiAweDQsXG5cdCAgICAgICAgICAgIDB4MWY4MDAwMDogMHgxMDEwMFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODA0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDA6IDB4NDAxMDQwLFxuXHQgICAgICAgICAgICAweDMwMDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDQwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4NTAwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDYwMDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDcwMDAwOiAweDQwMDA0MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg5MDAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4YjAwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4YzAwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHhlMDAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweGYwMDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDgwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MjgwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MzgwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDU4MDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDY4MDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4NzgwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODgwMDA6IDB4MTAwMCxcblx0ICAgICAgICAgICAgMHg5ODAwMDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHhhODAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHhjODAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHhkODAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDA6IDB4NDAxMDQwLFxuXHQgICAgICAgICAgICAweGY4MDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDAwOiAweDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxMjAwMDA6IDB4ODAwMDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTMwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTQwMDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTUwMDAwOiAweDgwNDAwMDQwLFxuXHQgICAgICAgICAgICAweDE2MDAwMDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxNzAwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDE5MDAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWIwMDAwOiAweDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgxYzAwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4MWQwMDAwOiAweDQwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZTAwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MWYwMDAwOiAweDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTA4MDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDExODAwMDogMHg4MDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgxMjgwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxMzgwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDE0ODAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTU4MDAwOiAweDgwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE2ODAwMDogMHg4MDAwMTA0MCxcblx0ICAgICAgICAgICAgMHgxNzgwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDE5ODAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweDFhODAwMDogMHg4MDAwMTAwMCxcblx0ICAgICAgICAgICAgMHgxYjgwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MWM4MDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4MWQ4MDAwOiAweDgwNDAxMDAwLFxuXHQgICAgICAgICAgICAweDFlODAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWY4MDAwOiAweDQwMTA0MFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MTAwMDogMHgxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDIwMDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg0MDAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDUwMDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHg2MDAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDcwMDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4ODAwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDkwMDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDogMHgyMDAwMDA4MCxcblx0ICAgICAgICAgICAgMHhiMDAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweGMwMDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGUwMDA6IDB4MTA0MDA4MCxcblx0ICAgICAgICAgICAgMHhmMDAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE4MDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MjgwMDogMHg4MCxcblx0ICAgICAgICAgICAgMHgzODAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHg1ODAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDY4MDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4NzgwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4ODAwOiAweDIwMDQwMDAwLFxuXHQgICAgICAgICAgICAweDk4MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhhODAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweGI4MDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHhjODAwOiAweDIwMDAwMDgwLFxuXHQgICAgICAgICAgICAweGQ4MDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweGY4MDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4MTAwMDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MTIwMDA6IDB4MjAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTMwMDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MTQwMDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxNTAwMDogMHgyMTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxNjAwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxNzAwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE4MDAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE5MDAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWIwMDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4MWQwMDA6IDB4MjAwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MWUwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxZjAwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDEwODAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDExODAwOiAweDEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDA6IDB4MTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxMzgwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxNDgwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNTgwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE2ODAwOiAweDgwLFxuXHQgICAgICAgICAgICAweDE3ODAwOiAweDIxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDE4ODAwOiAweDQwMDgwLFxuXHQgICAgICAgICAgICAweDE5ODAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDFhODAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWI4MDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWM4MDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxZDgwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDogMHgyMDA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxZjgwMDogMHgyMDAwMDA4MFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTAwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4MjAwOiAweDEwMjAwMDAwLFxuXHQgICAgICAgICAgICAweDMwMDogMHgxMDIwMjAwOCxcblx0ICAgICAgICAgICAgMHg0MDA6IDB4MTAwMDIwMDAsXG5cdCAgICAgICAgICAgIDB4NTAwOiAweDIwMDAwMCxcblx0ICAgICAgICAgICAgMHg2MDA6IDB4MjAwMDA4LFxuXHQgICAgICAgICAgICAweDcwMDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHg5MDA6IDB4MTAwMDIwMDgsXG5cdCAgICAgICAgICAgIDB4YTAwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHhiMDA6IDB4OCxcblx0ICAgICAgICAgICAgMHhjMDA6IDB4MTAyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4ZDAwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHhlMDA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHhmMDA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4ODA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDI4MDogMHg4LFxuXHQgICAgICAgICAgICAweDM4MDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHg1ODA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4NjgwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDc4MDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweDg4MDogMHgyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4OTgwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4YTgwOiAweDEwMDAyMDA4LFxuXHQgICAgICAgICAgICAweGI4MDogMHgxMDIwMDAwOCxcblx0ICAgICAgICAgICAgMHhjODA6IDB4MCxcblx0ICAgICAgICAgICAgMHhkODA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4ZTgwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHhmODA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDogMHgxMDAwMjAwMCxcblx0ICAgICAgICAgICAgMHgxMTAwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweDEyMDA6IDB4MTAyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTMwMDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweDE0MDA6IDB4MjAwMDAwLFxuXHQgICAgICAgICAgICAweDE1MDA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTYwMDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHgxNzAwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxODAwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxOTAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDogMHg4LFxuXHQgICAgICAgICAgICAweDFiMDA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDogMHgyMDAwLFxuXHQgICAgICAgICAgICAweDFkMDA6IDB4MTAwMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MWUwMDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxZjAwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxMDgwOiAweDgsXG5cdCAgICAgICAgICAgIDB4MTE4MDogMHgyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHgxNDgwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDE1ODA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHgxNjgwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDE3ODA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxOTgwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweDFhODA6IDB4MjAwMCxcblx0ICAgICAgICAgICAgMHgxYjgwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxYzgwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxZDgwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWU4MDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZjgwOiAweDEwMDAyMDA4XG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTA6IDB4MjAwMDQwMSxcblx0ICAgICAgICAgICAgMHgyMDogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4MzA6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDQwOiAweDIxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4NTA6IDB4MCxcblx0ICAgICAgICAgICAgMHg2MDogMHgxLFxuXHQgICAgICAgICAgICAweDcwOiAweDIxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4ODA6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHg5MDogMHgxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4YTA6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHhiMDogMHgyMTAwNDAwLFxuXHQgICAgICAgICAgICAweGMwOiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZDA6IDB4NDAxLFxuXHQgICAgICAgICAgICAweGUwOiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHhmMDogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDg6IDB4MjEwMDAwMSxcblx0ICAgICAgICAgICAgMHgxODogMHgwLFxuXHQgICAgICAgICAgICAweDI4OiAweDIwMDA0MDEsXG5cdCAgICAgICAgICAgIDB4Mzg6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHg0ODogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NTg6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHg2ODogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDc4OiAweDQwMSxcblx0ICAgICAgICAgICAgMHg4ODogMHgxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4OTg6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHhhODogMHgyMTAwMDAwLFxuXHQgICAgICAgICAgICAweGI4OiAweDEwMDAwMSxcblx0ICAgICAgICAgICAgMHhjODogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4ZDg6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHhlODogMHgxLFxuXHQgICAgICAgICAgICAweGY4OiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxMDA6IDB4MjAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMTA6IDB4MTAwMDAwLFxuXHQgICAgICAgICAgICAweDEyMDogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDEzMDogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDE0MDogMHgxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTUwOiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTYwOiAweDIxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTcwOiAweDEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxODA6IDB4NDAxLFxuXHQgICAgICAgICAgICAweDE5MDogMHgyMTAwNDAxLFxuXHQgICAgICAgICAgICAweDFhMDogMHgxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MWIwOiAweDEsXG5cdCAgICAgICAgICAgIDB4MWMwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWQwOiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWUwOiAweDIwMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MWYwOiAweDQwMCxcblx0ICAgICAgICAgICAgMHgxMDg6IDB4MTAwNDAwLFxuXHQgICAgICAgICAgICAweDExODogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDEyODogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDEzODogMHgxLFxuXHQgICAgICAgICAgICAweDE0ODogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE1ODogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTY4OiAweDQwMSxcblx0ICAgICAgICAgICAgMHgxNzg6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxODg6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHgxOTg6IDB4MjEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTg6IDB4MCxcblx0ICAgICAgICAgICAgMHgxYjg6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxYzg6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDFkODogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4MWU4OiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MWY4OiAweDEwMDAwMVxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODAwMDgyMCxcblx0ICAgICAgICAgICAgMHgxOiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDI6IDB4ODAwMDAwMCxcblx0ICAgICAgICAgICAgMHgzOiAweDIwLFxuXHQgICAgICAgICAgICAweDQ6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4NTogMHg4MDIwODIwLFxuXHQgICAgICAgICAgICAweDY6IDB4ODAyMDgwMCxcblx0ICAgICAgICAgICAgMHg3OiAweDgwMCxcblx0ICAgICAgICAgICAgMHg4OiAweDgwMjAwMDAsXG5cdCAgICAgICAgICAgIDB4OTogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweGE6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4YjogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweGM6IDB4ODIwLFxuXHQgICAgICAgICAgICAweGQ6IDB4MCxcblx0ICAgICAgICAgICAgMHhlOiAweDgwMDAwMjAsXG5cdCAgICAgICAgICAgIDB4ZjogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMDogMHg4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDE6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMjogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAzOiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDQ6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNTogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNjogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNzogMHgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwODogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA5OiAweDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwYTogMHgyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwYjogMHg4MDIwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBjOiAweDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGQ6IDB4ODAyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwZTogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBmOiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDEwOiAweDIwODIwLFxuXHQgICAgICAgICAgICAweDExOiAweDgwMjA4MDAsXG5cdCAgICAgICAgICAgIDB4MTI6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4MTM6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDE0OiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4MTU6IDB4ODAwMDAyMCxcblx0ICAgICAgICAgICAgMHgxNjogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweDE3OiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDE4OiAweDAsXG5cdCAgICAgICAgICAgIDB4MTk6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4MWE6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHgxYjogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDFjOiAweDgwMjA4MjAsXG5cdCAgICAgICAgICAgIDB4MWQ6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4MWU6IDB4ODIwLFxuXHQgICAgICAgICAgICAweDFmOiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTA6IDB4MjAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTE6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDEyOiAweDgwMjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTM6IDB4MjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTQ6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTU6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxNjogMHg4MDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE3OiAweDgwMDA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTg6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxOTogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFhOiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWI6IDB4MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxYzogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxZDogMHg4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWU6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWY6IDB4ODAyMDgwMFxuXHQgICAgICAgIH1cblx0ICAgIF07XG5cblx0ICAgIC8vIE1hc2tzIHRoYXQgc2VsZWN0IHRoZSBTQk9YIGlucHV0XG5cdCAgICB2YXIgU0JPWF9NQVNLID0gW1xuXHQgICAgICAgIDB4ZjgwMDAwMDEsIDB4MWY4MDAwMDAsIDB4MDFmODAwMDAsIDB4MDAxZjgwMDAsXG5cdCAgICAgICAgMHgwMDAxZjgwMCwgMHgwMDAwMWY4MCwgMHgwMDAwMDFmOCwgMHg4MDAwMDAxZlxuXHQgICAgXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBERVMgYmxvY2sgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIERFUyA9IENfYWxnby5ERVMgPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU2VsZWN0IDU2IGJpdHMgYWNjb3JkaW5nIHRvIFBDMVxuXHQgICAgICAgICAgICB2YXIga2V5Qml0cyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBrZXlCaXRQb3MgPSBQQzFbaV0gLSAxO1xuXHQgICAgICAgICAgICAgICAga2V5Qml0c1tpXSA9IChrZXlXb3Jkc1trZXlCaXRQb3MgPj4+IDVdID4+PiAoMzEgLSBrZXlCaXRQb3MgJSAzMikpICYgMTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEFzc2VtYmxlIDE2IHN1YmtleXNcblx0ICAgICAgICAgICAgdmFyIHN1YktleXMgPSB0aGlzLl9zdWJLZXlzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIG5TdWJLZXkgPSAwOyBuU3ViS2V5IDwgMTY7IG5TdWJLZXkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN1YmtleVxuXHQgICAgICAgICAgICAgICAgdmFyIHN1YktleSA9IHN1YktleXNbblN1YktleV0gPSBbXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRTaGlmdCA9IEJJVF9TSElGVFNbblN1YktleV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNlbGVjdCA0OCBiaXRzIGFjY29yZGluZyB0byBQQzJcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBmcm9tIHRoZSBsZWZ0IDI4IGtleSBiaXRzXG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5WyhpIC8gNikgfCAwXSB8PSBrZXlCaXRzWygoUEMyW2ldIC0gMSkgKyBiaXRTaGlmdCkgJSAyOF0gPDwgKDMxIC0gaSAlIDYpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IGZyb20gdGhlIHJpZ2h0IDI4IGtleSBiaXRzXG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5WzQgKyAoKGkgLyA2KSB8IDApXSB8PSBrZXlCaXRzWzI4ICsgKCgoUEMyW2kgKyAyNF0gLSAxKSArIGJpdFNoaWZ0KSAlIDI4KV0gPDwgKDMxIC0gaSAlIDYpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBTaW5jZSBlYWNoIHN1YmtleSBpcyBhcHBsaWVkIHRvIGFuIGV4cGFuZGVkIDMyLWJpdCBpbnB1dCxcblx0ICAgICAgICAgICAgICAgIC8vIHRoZSBzdWJrZXkgY2FuIGJlIGJyb2tlbiBpbnRvIDggdmFsdWVzIHNjYWxlZCB0byAzMi1iaXRzLFxuXHQgICAgICAgICAgICAgICAgLy8gd2hpY2ggYWxsb3dzIHRoZSBrZXkgdG8gYmUgdXNlZCB3aXRob3V0IGV4cGFuc2lvblxuXHQgICAgICAgICAgICAgICAgc3ViS2V5WzBdID0gKHN1YktleVswXSA8PCAxKSB8IChzdWJLZXlbMF0gPj4+IDMxKTtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNzsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5W2ldID0gc3ViS2V5W2ldID4+PiAoKGkgLSAxKSAqIDQgKyAzKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHN1YktleVs3XSA9IChzdWJLZXlbN10gPDwgNSkgfCAoc3ViS2V5WzddID4+PiAyNyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludmVyc2Ugc3Via2V5c1xuXHQgICAgICAgICAgICB2YXIgaW52U3ViS2V5cyA9IHRoaXMuX2ludlN1YktleXMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBpbnZTdWJLZXlzW2ldID0gc3ViS2V5c1sxNSAtIGldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGVuY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kb0NyeXB0QmxvY2soTSwgb2Zmc2V0LCB0aGlzLl9zdWJLZXlzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2ludlN1YktleXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9DcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0LCBzdWJLZXlzKSB7XG5cdCAgICAgICAgICAgIC8vIEdldCBpbnB1dFxuXHQgICAgICAgICAgICB0aGlzLl9sQmxvY2sgPSBNW29mZnNldF07XG5cdCAgICAgICAgICAgIHRoaXMuX3JCbG9jayA9IE1bb2Zmc2V0ICsgMV07XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCBwZXJtdXRhdGlvblxuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgNCwgIDB4MGYwZjBmMGYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMTYsIDB4MDAwMGZmZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgMiwgIDB4MzMzMzMzMzMpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgOCwgIDB4MDBmZjAwZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMSwgIDB4NTU1NTU1NTUpO1xuXG5cdCAgICAgICAgICAgIC8vIFJvdW5kc1xuXHQgICAgICAgICAgICBmb3IgKHZhciByb3VuZCA9IDA7IHJvdW5kIDwgMTY7IHJvdW5kKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIHN1YktleSA9IHN1YktleXNbcm91bmRdO1xuXHQgICAgICAgICAgICAgICAgdmFyIGxCbG9jayA9IHRoaXMuX2xCbG9jaztcblx0ICAgICAgICAgICAgICAgIHZhciByQmxvY2sgPSB0aGlzLl9yQmxvY2s7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEZlaXN0ZWwgZnVuY3Rpb25cblx0ICAgICAgICAgICAgICAgIHZhciBmID0gMDtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZiB8PSBTQk9YX1BbaV1bKChyQmxvY2sgXiBzdWJLZXlbaV0pICYgU0JPWF9NQVNLW2ldKSA+Pj4gMF07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9sQmxvY2sgPSByQmxvY2s7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9yQmxvY2sgPSBsQmxvY2sgXiBmO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gVW5kbyBzd2FwIGZyb20gbGFzdCByb3VuZFxuXHQgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2xCbG9jaztcblx0ICAgICAgICAgICAgdGhpcy5fbEJsb2NrID0gdGhpcy5fckJsb2NrO1xuXHQgICAgICAgICAgICB0aGlzLl9yQmxvY2sgPSB0O1xuXG5cdCAgICAgICAgICAgIC8vIEZpbmFsIHBlcm11dGF0aW9uXG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxLCAgMHg1NTU1NTU1NSk7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCA4LCAgMHgwMGZmMDBmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCAyLCAgMHgzMzMzMzMzMyk7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxNiwgMHgwMDAwZmZmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCA0LCAgMHgwZjBmMGYwZik7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IG91dHB1dFxuXHQgICAgICAgICAgICBNW29mZnNldF0gPSB0aGlzLl9sQmxvY2s7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSB0aGlzLl9yQmxvY2s7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDY0LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiA2NC8zMixcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvLyBTd2FwIGJpdHMgYWNyb3NzIHRoZSBsZWZ0IGFuZCByaWdodCB3b3Jkc1xuXHQgICAgZnVuY3Rpb24gZXhjaGFuZ2VMUihvZmZzZXQsIG1hc2spIHtcblx0ICAgICAgICB2YXIgdCA9ICgodGhpcy5fbEJsb2NrID4+PiBvZmZzZXQpIF4gdGhpcy5fckJsb2NrKSAmIG1hc2s7XG5cdCAgICAgICAgdGhpcy5fckJsb2NrIF49IHQ7XG5cdCAgICAgICAgdGhpcy5fbEJsb2NrIF49IHQgPDwgb2Zmc2V0O1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBleGNoYW5nZVJMKG9mZnNldCwgbWFzaykge1xuXHQgICAgICAgIHZhciB0ID0gKCh0aGlzLl9yQmxvY2sgPj4+IG9mZnNldCkgXiB0aGlzLl9sQmxvY2spICYgbWFzaztcblx0ICAgICAgICB0aGlzLl9sQmxvY2sgXj0gdDtcblx0ICAgICAgICB0aGlzLl9yQmxvY2sgXj0gdCA8PCBvZmZzZXQ7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuREVTLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLkRFUyA9IEJsb2NrQ2lwaGVyLl9jcmVhdGVIZWxwZXIoREVTKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBUcmlwbGUtREVTIGJsb2NrIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBUcmlwbGVERVMgPSBDX2FsZ28uVHJpcGxlREVTID0gQmxvY2tDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleTtcblx0ICAgICAgICAgICAgdmFyIGtleVdvcmRzID0ga2V5LndvcmRzO1xuXHQgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGtleSBsZW5ndGggaXMgdmFsaWQgKDY0LCAxMjggb3IgPj0gMTkyIGJpdClcblx0ICAgICAgICAgICAgaWYgKGtleVdvcmRzLmxlbmd0aCAhPT0gMiAmJiBrZXlXb3Jkcy5sZW5ndGggIT09IDQgJiYga2V5V29yZHMubGVuZ3RoIDwgNikge1xuXHQgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBsZW5ndGggLSAzREVTIHJlcXVpcmVzIHRoZSBrZXkgbGVuZ3RoIHRvIGJlIDY0LCAxMjgsIDE5MiBvciA+MTkyLicpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBrZXkgYWNjb3JkaW5nIHRvIHRoZSBrZXlpbmcgb3B0aW9ucyBkZWZpbmVkIGluIDNERVMgc3RhbmRhcmRcblx0ICAgICAgICAgICAgdmFyIGtleTEgPSBrZXlXb3Jkcy5zbGljZSgwLCAyKTtcblx0ICAgICAgICAgICAgdmFyIGtleTIgPSBrZXlXb3Jkcy5sZW5ndGggPCA0ID8ga2V5V29yZHMuc2xpY2UoMCwgMikgOiBrZXlXb3Jkcy5zbGljZSgyLCA0KTtcblx0ICAgICAgICAgICAgdmFyIGtleTMgPSBrZXlXb3Jkcy5sZW5ndGggPCA2ID8ga2V5V29yZHMuc2xpY2UoMCwgMikgOiBrZXlXb3Jkcy5zbGljZSg0LCA2KTtcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgREVTIGluc3RhbmNlc1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMxID0gREVTLmNyZWF0ZUVuY3J5cHRvcihXb3JkQXJyYXkuY3JlYXRlKGtleTEpKTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMiA9IERFUy5jcmVhdGVFbmNyeXB0b3IoV29yZEFycmF5LmNyZWF0ZShrZXkyKSk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczMgPSBERVMuY3JlYXRlRW5jcnlwdG9yKFdvcmRBcnJheS5jcmVhdGUoa2V5MykpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMS5lbmNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczMuZGVjcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDE5Mi8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogNjQvMzIsXG5cblx0ICAgICAgICBibG9ja1NpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5UcmlwbGVERVMuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5UcmlwbGVERVMuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuVHJpcGxlREVTID0gQmxvY2tDaXBoZXIuX2NyZWF0ZUhlbHBlcihUcmlwbGVERVMpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlRyaXBsZURFUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFgzMldvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiB4NjQgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ194NjQgPSBDLng2NCA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgNjQtYml0IHdvcmQuXG5cdCAgICAgKi9cblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZCA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgNjQtYml0IHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAzMiBiaXRzLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAzMiBiaXRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgeDY0V29yZCA9IENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDAwMDEwMjAzLCAweDA0MDUwNjA3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoaGlnaCwgbG93KSB7XG5cdCAgICAgICAgICAgIHRoaXMuaGlnaCA9IGhpZ2g7XG5cdCAgICAgICAgICAgIHRoaXMubG93ID0gbG93O1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgTk9UcyB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgbmVnYXRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBuZWdhdGVkID0geDY0V29yZC5ub3QoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBub3Q6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB+dGhpcy5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gfnRoaXMubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBCaXR3aXNlIEFORHMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBBTkQgd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgQU5EaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYW5kZWQgPSB4NjRXb3JkLmFuZChhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gYW5kOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCAmIHdvcmQuaGlnaDtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMubG93ICYgd29yZC5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgT1JzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gT1Igd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgT1JpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBvcmVkID0geDY0V29yZC5vcihhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gb3I6IGZ1bmN0aW9uICh3b3JkKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5oaWdoIHwgd29yZC5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5sb3cgfCB3b3JkLmxvdztcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQml0d2lzZSBYT1JzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gWE9SIHdpdGggdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIFhPUmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHhvcmVkID0geDY0V29yZC54b3IoYW5vdGhlclg2NFdvcmQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHhvcjogZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmhpZ2ggXiB3b3JkLmhpZ2g7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyBeIHdvcmQubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBTaGlmdHMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgbGVmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBzaGlmdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHNoaWZ0ZWQgPSB4NjRXb3JkLnNoaWZ0TCgyNSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gc2hpZnRMOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyBpZiAobiA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9ICh0aGlzLmhpZ2ggPDwgbikgfCAodGhpcy5sb3cgPj4+ICgzMiAtIG4pKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyA8PCBuO1xuXHQgICAgICAgICAgICAvLyB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmxvdyA8PCAobiAtIDMyKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSAwO1xuXHQgICAgICAgICAgICAvLyB9XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFNoaWZ0cyB0aGlzIHdvcmQgbiBiaXRzIHRvIHRoZSByaWdodC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBzaGlmdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHNoaWZ0ZWQgPSB4NjRXb3JkLnNoaWZ0Uig3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBzaGlmdFI6IGZ1bmN0aW9uIChuKSB7XG5cdCAgICAgICAgICAgIC8vIGlmIChuIDwgMzIpIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSAodGhpcy5sb3cgPj4+IG4pIHwgKHRoaXMuaGlnaCA8PCAoMzIgLSBuKSk7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCA+Pj4gbjtcblx0ICAgICAgICAgICAgLy8gfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmhpZ2ggPj4+IChuIC0gMzIpO1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSAwO1xuXHQgICAgICAgICAgICAvLyB9XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJvdGF0ZXMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgbGVmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byByb3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgcm90YXRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciByb3RhdGVkID0geDY0V29yZC5yb3RMKDI1KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyByb3RMOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5zaGlmdEwobikub3IodGhpcy5zaGlmdFIoNjQgLSBuKSk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJvdGF0ZXMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgcmlnaHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gcm90YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIHJvdGF0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcm90YXRlZCA9IHg2NFdvcmQucm90Uig3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyByb3RSOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5zaGlmdFIobikub3IodGhpcy5zaGlmdEwoNjQgLSBuKSk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEFkZHMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBhZGQgd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgYWRkaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYWRkZWQgPSB4NjRXb3JkLmFkZChhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gYWRkOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gKHRoaXMubG93ICsgd29yZC5sb3cpIHwgMDtcblx0ICAgICAgICAgICAgLy8gdmFyIGNhcnJ5ID0gKGxvdyA+Pj4gMCkgPCAodGhpcy5sb3cgPj4+IDApID8gMSA6IDA7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gKHRoaXMuaGlnaCArIHdvcmQuaGlnaCArIGNhcnJ5KSB8IDA7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgNjQtYml0IHdvcmRzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7QXJyYXl9IHdvcmRzIFRoZSBhcnJheSBvZiBDcnlwdG9KUy54NjQuV29yZCBvYmplY3RzLlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNpZ0J5dGVzIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICovXG5cdCAgICB2YXIgWDY0V29yZEFycmF5ID0gQ194NjQuV29yZEFycmF5ID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gd29yZHMgKE9wdGlvbmFsKSBBbiBhcnJheSBvZiBDcnlwdG9KUy54NjQuV29yZCBvYmplY3RzLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaWdCeXRlcyAoT3B0aW9uYWwpIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhlIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMueDY0LldvcmRBcnJheS5jcmVhdGUoKTtcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMueDY0LldvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MDAwMTAyMDMsIDB4MDQwNTA2MDcpLFxuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MTgxOTFhMWIsIDB4MWMxZDFlMWYpXG5cdCAgICAgICAgICogICAgIF0pO1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy54NjQuV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgwMDAxMDIwMywgMHgwNDA1MDYwNyksXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgxODE5MWExYiwgMHgxYzFkMWUxZilcblx0ICAgICAgICAgKiAgICAgXSwgMTApO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uICh3b3Jkcywgc2lnQnl0ZXMpIHtcblx0ICAgICAgICAgICAgd29yZHMgPSB0aGlzLndvcmRzID0gd29yZHMgfHwgW107XG5cblx0ICAgICAgICAgICAgaWYgKHNpZ0J5dGVzICE9IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHdvcmRzLmxlbmd0aCAqIDg7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgdGhpcyA2NC1iaXQgd29yZCBhcnJheSB0byBhIDMyLWJpdCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q3J5cHRvSlMubGliLldvcmRBcnJheX0gVGhpcyB3b3JkIGFycmF5J3MgZGF0YSBhcyBhIDMyLWJpdCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgeDMyV29yZEFycmF5ID0geDY0V29yZEFycmF5LnRvWDMyKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdG9YMzI6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB4NjRXb3JkcyA9IHRoaXMud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB4NjRXb3Jkc0xlbmd0aCA9IHg2NFdvcmRzLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB4MzJXb3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHg2NFdvcmRzTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciB4NjRXb3JkID0geDY0V29yZHNbaV07XG5cdCAgICAgICAgICAgICAgICB4MzJXb3Jkcy5wdXNoKHg2NFdvcmQuaGlnaCk7XG5cdCAgICAgICAgICAgICAgICB4MzJXb3Jkcy5wdXNoKHg2NFdvcmQubG93KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBYMzJXb3JkQXJyYXkuY3JlYXRlKHgzMldvcmRzLCB0aGlzLnNpZ0J5dGVzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZEFycmF5fSBUaGUgY2xvbmUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjbG9uZSA9IHg2NFdvcmRBcnJheS5jbG9uZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEJhc2UuY2xvbmUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBDbG9uZSBcIndvcmRzXCIgYXJyYXlcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gY2xvbmUud29yZHMgPSB0aGlzLndvcmRzLnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgIC8vIENsb25lIGVhY2ggWDY0V29yZCBvYmplY3Rcblx0ICAgICAgICAgICAgdmFyIHdvcmRzTGVuZ3RoID0gd29yZHMubGVuZ3RoO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2ldID0gd29yZHNbaV0uY2xvbmUoKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUztcblxufSkpOyIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kcF9faW5wdXRfd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2JveC1zaXppbmc6dW5zZXR9LmRwX19pbnB1dF93cmFwOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1kcC1ib3JkZXItY29sb3ItaG92ZXIpO291dGxpbmU6bm9uZX0uZHBfX2lucHV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO3dpZHRoOjEwMCU7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1kcC1mb250LXNpemUpKjEuNSk7cGFkZGluZzp2YXIoLS1kcC1pbnB1dC1wYWRkaW5nKTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5Oi43fS5kcF9faW5wdXQ6OnBsYWNlaG9sZGVye29wYWNpdHk6Ljd9LmRwX19pbnB1dDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyKX0uZHBfX2lucHV0X3JlZ3tjYXJldC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5kcF9faW5wdXRfZm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWJvcmRlci1jb2xvci1ob3Zlcil9LmRwX19kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX2Rpc2FibGVkOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpfS5kcF9fZGlzYWJsZWQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpfS5kcF9faW5wdXRfaWNvbnN7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6dmFyKC0tZHAtZm9udC1zaXplKTtoZWlnaHQ6dmFyKC0tZHAtZm9udC1zaXplKTtzdHJva2Utd2lkdGg6MDtmb250LXNpemU6dmFyKC0tZHAtZm9udC1zaXplKTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWRwLWZvbnQtc2l6ZSkqMS41KTtwYWRkaW5nOjZweCAxMnB4O2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO2JveC1zaXppbmc6Y29udGVudC1ib3h9LmRwX19pbnB1dF9pY29ue2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpfS5kcF9fY2xlYXJfaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcil9LmRwX19pbnB1dF9pY29uX3BhZHtwYWRkaW5nLWxlZnQ6dmFyKC0tZHAtaW5wdXQtaWNvbi1wYWRkaW5nKX0uZHBfX2lucHV0X3ZhbGlke2JveC1zaGFkb3c6MCAwIHZhcigtLWRwLWJvcmRlci1yYWRpdXMpIHZhcigtLWRwLXN1Y2Nlc3MtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKX0uZHBfX2lucHV0X3ZhbGlkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKX0uZHBfX2lucHV0X2ludmFsaWR7Ym94LXNoYWRvdzowIDAgdmFyKC0tZHAtYm9yZGVyLXJhZGl1cykgdmFyKC0tZHAtZGFuZ2VyLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tZHAtZGFuZ2VyLWNvbG9yKX0uZHBfX2lucHV0X2ludmFsaWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWRhbmdlci1jb2xvcil9LmRwX19tZW51e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTttaW4td2lkdGg6dmFyKC0tZHAtbWVudS1taW4td2lkdGgpO2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tZHAtZm9udC1zaXplKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fbWVudTo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fbWVudTo6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7b3V0bGluZTpub25lfS5kcF9fbWVudV9pbm5lcntwYWRkaW5nOnZhcigtLWRwLW1lbnUtcGFkZGluZyl9LmRwX19tZW51X2luZGV4e3otaW5kZXg6OTk5OTl9LmRwX19tZW51X3JlYWRvbmx5LC5kcF9fbWVudV9kaXNhYmxlZHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MX0uZHBfX21lbnVfZGlzYWJsZWR7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC41KTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19tZW51X3JlYWRvbmx5e2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtjdXJzb3I6ZGVmYXVsdH0uZHBfX2Fycm93X3RvcHtsZWZ0OjUwJTt0b3A6LTFweDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoNDVkZWcpfS5kcF9fYXJyb3dfYm90dG9te2xlZnQ6NTAlO2JvdHRvbTotMXB4O2hlaWdodDoxMnB4O3dpZHRoOjEycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCA1MCUpIHJvdGF0ZSg0NWRlZyl9LmRwX19hY3Rpb25fZXh0cmF7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoycHggMH0uZHBfX3ByZXNldF9yYW5nZXN7cGFkZGluZzo1cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fc2lkZWJhcl9sZWZ0e3BhZGRpbmc6NXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX3NpZGViYXJfcmlnaHR7cGFkZGluZzo1cHg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19wcmVzZXRfcmFuZ2V7cGFkZGluZzo1cHg7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0cmFuc2l0aW9uOnZhcigtLWRwLWNvbW1vbi10cmFuc2l0aW9uKX0uZHBfX3ByZXNldF9yYW5nZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjdXJzb3I6cG9pbnRlcn0uZHBfX21lbnVfY29udGVudF93cmFwcGVye2Rpc3BsYXk6ZmxleH0uZHBfX2NhbGVuZGFyX2hlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtd2VpZ2h0OmJvbGR9LmRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbXt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LWdyb3c6MTtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKTtwYWRkaW5nOnZhcigtLWRwLWNlbGwtcGFkZGluZyk7d2lkdGg6dmFyKC0tZHAtY2VsbC1zaXplKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19jYWxlbmRhcl9yb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjp2YXIoLS1kcC1yb3ctbWFyaW5nKX0uZHBfX2NhbGVuZGFyX2l0ZW17dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1ncm93OjE7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fY2FsZW5kYXJ7cG9zaXRpb246cmVsYXRpdmV9LmRwX19jYWxlbmRhcl9oZWFkZXJfY2VsbHtib3JkZXItYm90dG9tOnRoaW4gc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOnZhcigtLWRwLWNhbGVuZGFyLWhlYWRlci1jZWxsLXBhZGRpbmcpfS5kcF9fY2VsbF9pbm5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1jZWxsLWJvcmRlci1yYWRpdXMpO2hlaWdodDp2YXIoLS1kcC1jZWxsLXNpemUpO3BhZGRpbmc6dmFyKC0tZHAtY2VsbC1wYWRkaW5nKTt3aWR0aDp2YXIoLS1kcC1jZWxsLXNpemUpO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LmRwX19jZWxsX2lubmVyOmhvdmVye3RyYW5zaXRpb246YWxsIC4yc30uZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydCwuZHBfX2RhdGVfaG92ZXJfc3RhcnQ6aG92ZXIsLmRwX19yYW5nZV9zdGFydHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmRwX19jZWxsX2F1dG9fcmFuZ2VfZW5kLC5kcF9fZGF0ZV9ob3Zlcl9lbmQ6aG92ZXIsLmRwX19yYW5nZV9lbmR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uZHBfX3JhbmdlX2VuZCwuZHBfX3JhbmdlX3N0YXJ0LC5kcF9fYWN0aXZlX2RhdGV7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZCwuZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydHtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fZGF0ZV9ob3Zlcl9lbmQ6aG92ZXIsLmRwX19kYXRlX2hvdmVyX3N0YXJ0OmhvdmVyLC5kcF9fZGF0ZV9ob3Zlcjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfb2Zmc2V0e2NvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcil9LmRwX19jZWxsX2Rpc2FibGVke2NvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fcmFuZ2VfYmV0d2VlbntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ob3Zlci1jb2xvcil9LmRwX19yYW5nZV9iZXR3ZWVuX3dlZWt7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX3RvZGF5e2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX193ZWVrX251bXtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpO3RleHQtYWxpZ246Y2VudGVyfS5kcF9fY2VsbF9hdXRvX3Jhbmdle2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX3N0YXJ0e2JvcmRlci1sZWZ0OjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19jZWxsX2F1dG9fcmFuZ2VfZW5ke2JvcmRlci1yaWdodDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2FsZW5kYXJfaGVhZGVyX3NlcGFyYXRvcnt3aWR0aDoxMDAlO2hlaWdodDoxcHg7YmFja2dyb3VuZDp2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fY2FsZW5kYXJfbmV4dHttYXJnaW4tbGVmdDp2YXIoLS1kcC1tdWx0aS1jYWxlbmRhcnMtc3BhY2luZyl9LmRwX19tYXJrZXJfbGluZSwuZHBfX21hcmtlcl9kb3R7aGVpZ2h0OjVweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLW1hcmtlci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjB9LmRwX19tYXJrZXJfZG90e3dpZHRoOjVweDtib3JkZXItcmFkaXVzOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uZHBfX21hcmtlcl9saW5le3dpZHRoOjEwMCU7bGVmdDowfS5kcF9fbWFya2VyX3Rvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXRvb2x0aXAtY29sb3IpO3BhZGRpbmc6NXB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTt6LWluZGV4Ojk5OTk5O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6ZGVmYXVsdH0uZHBfX3Rvb2x0aXBfY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXB9LmRwX190b29sdGlwX3RleHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWZsb3c6cm93IG5vd3JhcDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX3Rvb2x0aXBfbWFya3toZWlnaHQ6NXB4O3dpZHRoOjVweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO21hcmdpbi1yaWdodDo1cHh9LmRwX19hcnJvd19ib3R0b21fdHB7Ym90dG9tOjA7aGVpZ2h0OjhweDt3aWR0aDo4cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10b29sdGlwLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDUwJSkgcm90YXRlKDQ1ZGVnKX0uZHBfX2luc3RhbmNlX2NhbGVuZGFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAod2lkdGggPD0gNjAwcHgpey5kcF9fZmxleF9kaXNwbGF5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn19LmRwX19jZWxsX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWhpZ2hsaWdodC1jb2xvcil9LmRwX19tb250aF95ZWFyX3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1oZWlnaHQpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX2lubmVyX25hdntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWRwLW1vbnRoLXllYXItcm93LWJ1dHRvbi1zaXplKTt3aWR0aDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1idXR0b24tc2l6ZSk7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXJhZGl1czo1MCV9LmRwX19pbm5lcl9uYXYgc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCl9LmRwX19pbm5lcl9uYXY6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItaWNvbi1jb2xvcil9LmRwX19pbm5lcl9uYXZfZGlzYWJsZWQ6aG92ZXIsLmRwX19pbm5lcl9uYXZfZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcik7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fbW9udGhfeWVhcl9zZWxlY3R7d2lkdGg6NTAlO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1oZWlnaHQpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX21vbnRoX3llYXJfc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fbW9udGhfeWVhcl93cmFwe2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlfS5kcF9feWVhcl9kaXNhYmxlX3NlbGVjdHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5kcF9fb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7dG9wOjA7bGVmdDowO3RyYW5zaXRpb246b3BhY2l0eSAxcyBlYXNlLW91dDt6LWluZGV4Ojk5OTk5O2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19vdmVybGF5X2NvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7Ym94LXNoYWRvdzp2YXIoLS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKX0uZHBfX292ZXJsYXlfY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo1cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQpfS5kcF9fb3ZlcmxheV9jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1jb2xvcik7Ym9yZGVyLXJhZGl1czoxMHB4fS5kcF9fb3ZlcmxheTpmb2N1c3tib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmV9LmRwX19jb250YWluZXJfZmxleHtkaXNwbGF5OmZsZXh9LmRwX19jb250YWluZXJfYmxvY2t7ZGlzcGxheTpibG9ja30uZHBfX292ZXJsYXlfY29udGFpbmVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdy15OmF1dG99LmRwX190aW1lX3BpY2tlcl9vdmVybGF5X2NvbnRhaW5lcntoZWlnaHQ6MTAwJX0uZHBfX292ZXJsYXlfcm93e3BhZGRpbmc6MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ZmxleC13cmFwOndyYXA7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXJ9LmRwX19mbGV4X3Jvd3tmbGV4OjF9LmRwX19vdmVybGF5X2NvbHtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MzMlO3BhZGRpbmc6dmFyKC0tZHAtb3ZlcmxheS1jb2wtcGFkZGluZyk7d2hpdGUtc3BhY2U6bm93cmFwfS5kcF9fb3ZlcmxheV9jZWxsX3BhZHtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKSAwfS5kcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZXtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbHtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO3RleHQtYWxpZ246Y2VudGVyfS5kcF9fb3ZlcmxheV9jZWxsOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fY2VsbF9pbl9iZXR3ZWVue2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fb3Zlcl9hY3Rpb25fc2Nyb2xse3JpZ2h0OjVweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZV9kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKX0uZHBfX21vbnRoX3BpY2tlcl9oZWFkZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDp2YXIoLS1kcC1jZWxsLXNpemUpfS5kcF9fdGltZV9pbnB1dHt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fdGltZV9jb2xfcmVnX2Jsb2Nre3BhZGRpbmc6MCAyMHB4fS5kcF9fdGltZV9jb2xfcmVnX2lubGluZXtwYWRkaW5nOjAgMTBweH0uZHBfX3RpbWVfY29sX3JlZ193aXRoX2J1dHRvbntwYWRkaW5nOjAgMTVweH0uZHBfX3RpbWVfY29sX3NlY3twYWRkaW5nOjAgMTBweH0uZHBfX3RpbWVfY29sX3NlY193aXRoX2J1dHRvbntwYWRkaW5nOjAgNXB4fS5kcF9fdGltZV9jb2x7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZHBfX3RpbWVfY29sX2Jsb2Nre2ZvbnQtc2l6ZTp2YXIoLS1kcC10aW1lLWZvbnQtc2l6ZSl9LmRwX190aW1lX2Rpc3BsYXl7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmRwX190aW1lX2Rpc3BsYXk6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX190aW1lX2Rpc3BsYXlfYmxvY2t7cGFkZGluZzowIDNweH0uZHBfX3RpbWVfZGlzcGxheV9pbmxpbmV7cGFkZGluZzo1cHh9LmRwX190aW1lX3BpY2tlcl9pbmxpbmVfY29udGFpbmVye2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmRwX19pbmNfZGVjX2J1dHRvbntwYWRkaW5nOjVweDttYXJnaW46MDtoZWlnaHQ6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKTt3aWR0aDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjUwJTtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbmNfZGVjX2J1dHRvbiBzdmd7aGVpZ2h0OnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKX0uZHBfX2luY19kZWNfYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9faW5jX2RlY19idXR0b25faW5saW5le3dpZHRoOjEwMCU7cGFkZGluZzowO2hlaWdodDo4cHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVkOmhvdmVyLC5kcF9faW5jX2RlY19idXR0b25fZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcik7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fcG1fYW1fYnV0dG9ue2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKTtib3JkZXI6bm9uZTtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2N1cnNvcjpwb2ludGVyfS5kcF9fdHBfaW5saW5lX2J0bl9iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Vjb25kYXJ5LWNvbG9yKTt0cmFuc2l0aW9uOnZhcigtLWRwLWNvbW1vbi10cmFuc2l0aW9uKTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LmRwX190cF9pbmxpbmVfYnRuX3RvcDpob3ZlciAuZHBfX3RwX2J0bl9pbl9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KX0uZHBfX3RwX2lubGluZV9idG5fdG9wOmhvdmVyIC5kcF9fdHBfYnRuX2luX2x7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KX0uZHBfX3RwX2lubGluZV9idG5fYm90dG9tOmhvdmVyIC5kcF9fdHBfYnRuX2luX3J7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KX0uZHBfX3RwX2lubGluZV9idG5fYm90dG9tOmhvdmVyIC5kcF9fdHBfYnRuX2luX2x7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2Zvcm06cm90YXRlKDEyZGVnKSBzY2FsZSgxLjE1KSB0cmFuc2xhdGVZKC0ycHgpfS5kcF9fYWN0aW9uX3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kcF9fYWN0aW9uX3JvdyBzdmd7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCk7d2lkdGg6YXV0b30uZHBfX3NlbGVjdGlvbl9wcmV2aWV3e2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWRwLXByZXZpZXctZm9udC1zaXplKTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmRwX19hY3Rpb25fYnV0dG9uc3tkaXNwbGF5OmZsZXg7ZmxleDowO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLWxlZnQ6YXV0b30uZHBfX2FjdGlvbl9idXR0b257YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwKTtwYWRkaW5nOnZhcigtLWRwLWFjdGlvbi1idXR0b25zLXBhZGRpbmcpO2xpbmUtaGVpZ2h0OmluaXRpYWw7bWFyZ2luLWxlZnQ6M3B4O2hlaWdodDp2YXIoLS1kcC1hY3Rpb24tYnV0dG9uLWhlaWdodCk7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKX0uZHBfX2FjdGlvbl9zZWxlY3R7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpfS5kcF9fYWN0aW9uX3NlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO3RyYW5zaXRpb246dmFyKC0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb24pfS5kcF9fYWN0aW9uX3NlbGVjdDpkaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX2FjdGlvbl9jYW5jZWx7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fYWN0aW9uX2NhbmNlbDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1kcC1hY3Rpb24tcm93LXRyYW5zdGlvbil9OnJvb3R7LS1kcC1jb21tb24tdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1pbjstLWRwLW1lbnUtcGFkZGluZzogNnB4IDhweDstLWRwLWFuaW1hdGlvbi1kdXJhdGlvbjogMC4xczstLWRwLW1lbnUtYXBwZWFyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoLjQsIDAsIDEsIDEpOy0tZHAtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2Utb3V0Oy0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb246IGFsbCAwLjJzIGVhc2UtaW47LS1kcC1mb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCBcXFwiU2Vnb2UgVUlcXFwiLCByb2JvdG8sIG94eWdlbiwgdWJ1bnR1LCBjYW50YXJlbGwsIFxcXCJPcGVuIFNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmOy0tZHAtYm9yZGVyLXJhZGl1czogNHB4Oy0tZHAtY2VsbC1ib3JkZXItcmFkaXVzOiA0cHg7LS1kcC10cmFuc2l0aW9uLWxlbmd0aDogMjJweDstLWRwLXRyYW5zaXRpb24tdGltaW5nLWdlbmVyYWw6IDAuMXM7LS1kcC1idXR0b24taGVpZ2h0OiAzNXB4Oy0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0OiAzNXB4Oy0tZHAtbW9udGgteWVhci1yb3ctYnV0dG9uLXNpemU6IDI1cHg7LS1kcC1idXR0b24taWNvbi1oZWlnaHQ6IDIwcHg7LS1kcC1jYWxlbmRhci13cmFwLXBhZGRpbmc6IDAgNXB4Oy0tZHAtY2VsbC1zaXplOiAzNXB4Oy0tZHAtY2VsbC1wYWRkaW5nOiA1cHg7LS1kcC1jb21tb24tcGFkZGluZzogMTBweDstLWRwLWlucHV0LWljb24tcGFkZGluZzogMzVweDstLWRwLWlucHV0LXBhZGRpbmc6IDZweCAzMHB4IDZweCAxMnB4Oy0tZHAtbWVudS1taW4td2lkdGg6IDI2MHB4Oy0tZHAtYWN0aW9uLWJ1dHRvbnMtcGFkZGluZzogMXB4IDZweDstLWRwLXJvdy1tYXJpbmc6IDVweCAwOy0tZHAtY2FsZW5kYXItaGVhZGVyLWNlbGwtcGFkZGluZzogMC41cmVtOy0tZHAtbXVsdGktY2FsZW5kYXJzLXNwYWNpbmc6IDEwcHg7LS1kcC1vdmVybGF5LWNvbC1wYWRkaW5nOiAzcHg7LS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemU6IDMycHg7LS1kcC1mb250LXNpemU6IDFyZW07LS1kcC1wcmV2aWV3LWZvbnQtc2l6ZTogMC44cmVtOy0tZHAtdGltZS1mb250LXNpemU6IDJyZW07LS1kcC1hY3Rpb24tYnV0dG9uLWhlaWdodDogMjJweH0uZHBfX3RoZW1lX2Rhcmt7LS1kcC1iYWNrZ3JvdW5kLWNvbG9yOiAjMjEyMTIxOy0tZHAtdGV4dC1jb2xvcjogI2ZmZjstLWRwLWhvdmVyLWNvbG9yOiAjNDg0ODQ4Oy0tZHAtaG92ZXItdGV4dC1jb2xvcjogI2ZmZjstLWRwLWhvdmVyLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1wcmltYXJ5LWNvbG9yOiAjMDA1Y2IyOy0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjogIzYxYThlYTstLWRwLXByaW1hcnktdGV4dC1jb2xvcjogI2ZmZjstLWRwLXNlY29uZGFyeS1jb2xvcjogI2E5YTlhOTstLWRwLWJvcmRlci1jb2xvcjogIzJkMmQyZDstLWRwLW1lbnUtYm9yZGVyLWNvbG9yOiAjMmQyZDJkOy0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyOiAjYWFhZWI3Oy0tZHAtZGlzYWJsZWQtY29sb3I6ICM3MzczNzM7LS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0OiAjZDBkMGQwOy0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kOiAjMjEyMTIxOy0tZHAtc2Nyb2xsLWJhci1jb2xvcjogIzQ4NDg0ODstLWRwLXN1Y2Nlc3MtY29sb3I6ICMwMDcwMWE7LS1kcC1zdWNjZXNzLWNvbG9yLWRpc2FibGVkOiAjNDI4ZjU5Oy0tZHAtaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLWRhbmdlci1jb2xvcjogI2U1MzkzNTstLWRwLW1hcmtlci1jb2xvcjogI2U1MzkzNTstLWRwLXRvb2x0aXAtY29sb3I6ICMzZTNlM2U7LS1kcC1oaWdobGlnaHQtY29sb3I6IHJnYigwIDkyIDE3OCAvIDIwJSl9LmRwX190aGVtZV9saWdodHstLWRwLWJhY2tncm91bmQtY29sb3I6ICNmZmY7LS1kcC10ZXh0LWNvbG9yOiAjMjEyMTIxOy0tZHAtaG92ZXItY29sb3I6ICNmM2YzZjM7LS1kcC1ob3Zlci10ZXh0LWNvbG9yOiAjMjEyMTIxOy0tZHAtaG92ZXItaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLXByaW1hcnktY29sb3I6ICMxOTc2ZDI7LS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yOiAjNmJhY2VhOy0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yOiAjZjhmNWY1Oy0tZHAtc2Vjb25kYXJ5LWNvbG9yOiAjYzBjNGNjOy0tZHAtYm9yZGVyLWNvbG9yOiAjZGRkOy0tZHAtbWVudS1ib3JkZXItY29sb3I6ICNkZGQ7LS1kcC1ib3JkZXItY29sb3ItaG92ZXI6ICNhYWFlYjc7LS1kcC1kaXNhYmxlZC1jb2xvcjogI2Y2ZjZmNjstLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZDogI2YzZjNmMzstLWRwLXNjcm9sbC1iYXItY29sb3I6ICM5NTk1OTU7LS1kcC1zdWNjZXNzLWNvbG9yOiAjNzZkMjc1Oy0tZHAtc3VjY2Vzcy1jb2xvci1kaXNhYmxlZDogI2EzZDliMTstLWRwLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1kYW5nZXItY29sb3I6ICNmZjZmNjA7LS1kcC1tYXJrZXItY29sb3I6ICNmZjZmNjA7LS1kcC10b29sdGlwLWNvbG9yOiAjZmFmYWZhOy0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dDogIzhlOGU4ZTstLWRwLWhpZ2hsaWdodC1jb2xvcjogcmdiKDI1IDExOCAyMTAgLyAxMCUpfS5kcF9fZmxleHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kcF9fYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtmb250OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjp2YXIoLS1kcC1jb21tb24tdHJhbnNpdGlvbik7bGluZS1oZWlnaHQ6bm9ybWFsfS5kcF9fbWFpbntmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5kcF9fcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uZHBfX2ljb257c3Ryb2tlOmN1cnJlbnRjb2xvcjtmaWxsOmN1cnJlbnRjb2xvcn0uZHBfX2J1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1oZWlnaHQpfS5kcF9fYnV0dG9uLmRwX19vdmVybGF5X2FjdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MH0uZHBfX2J1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci1pY29uLWNvbG9yKX0uZHBfX2J1dHRvbiBzdmd7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCk7d2lkdGg6YXV0b30uZHBfX2J1dHRvbl9ib3R0b217Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKX0uZHBfX2ZsZXhfZGlzcGxheXtkaXNwbGF5OmZsZXh9LmRwX19mbGV4X2Rpc3BsYXlfd2l0aF9pbnB1dHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZHBfX3JlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5jYWxlbmRhci1uZXh0LWVudGVyLWFjdGl2ZSwuY2FsZW5kYXItbmV4dC1sZWF2ZS1hY3RpdmUsLmNhbGVuZGFyLXByZXYtZW50ZXItYWN0aXZlLC5jYWxlbmRhci1wcmV2LWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC10cmFuc2l0aW9uLXRpbWluZy1nZW5lcmFsKSBlYXNlLW91dH0uY2FsZW5kYXItbmV4dC1lbnRlci1mcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5jYWxlbmRhci1uZXh0LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWChjYWxjKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSAqIC0xKSl9LmNhbGVuZGFyLXByZXYtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5jYWxlbmRhci1wcmV2LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5kcC1zbGlkZS11cC1lbnRlci1hY3RpdmUsLmRwLXNsaWRlLXVwLWxlYXZlLWFjdGl2ZSwuZHAtc2xpZGUtZG93bi1lbnRlci1hY3RpdmUsLmRwLXNsaWRlLWRvd24tbGVhdmUtYWN0aXZle3RyYW5zaXRpb246YWxsIHZhcigtLWRwLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tZHAtdHJhbnNpdGlvbi10aW1pbmcpfS5kcC1zbGlkZS1kb3duLWxlYXZlLXRvLC5kcC1zbGlkZS11cC1lbnRlci1mcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5kcC1zbGlkZS1kb3duLWVudGVyLWZyb20sLmRwLXNsaWRlLXVwLWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSAqIC0xKSl9LmRwX19tZW51X3RyYW5zaXRpb25lZHt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWRwLW1lbnUtYXBwZWFyLXRyYW5zaXRpb24tdGltaW5nKX0vKiMgc291cmNlTWFwcGluZ1VSTD1tYWluLmNzcy5tYXAgKi9cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19EYXRlcGlja2VySW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fRGF0ZXBpY2tlck1lbnUuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fQ2FsZW5kYXIuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fTW9udGhZZWFySW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fU2VsZWN0aW9uR3JpZC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19UaW1lSW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fQWN0aW9uUm93LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL21haW4uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFDRSxpQkFBQSxDQUNBLFVBQUEsQ0FDQSxnQkFBQSxDQUVBLHNCQUNFLHlDQUFBLENBQ0EsWUFBQSxDQUlKLFdBQ0UsMkNBQUEsQ0FDQSxxQ0FBQSxDQUNBLGlDQUFBLENBQ0EsdUNBQUEsQ0FDQSxZQUFBLENBQ0EsZ0VBQUEsQ0FDQSxVQUFBLENBQ0EsNkJBQUEsQ0FDQSx5Q0FBQSxDQUNBLCtCQUFBLENBQ0EsMEJBQUEsQ0FDQSxxQkFBQSxDQUVBLDZCQUNFLFVBQUEsQ0FERix3QkFDRSxVQUFBLENBR0YsaUJBQ0UseUNBQUEsQ0FJSixlQUNFLHlCQUFBLENBR0YsaUJBQ0UseUNBQUEsQ0FHRixjQUNFLG1DQUFBLENBRUEsZ0NBQ0UsbUNBQUEsQ0FERiwyQkFDRSxtQ0FBQSxDQUlKLGlCQUNFLG9CQUFBLENBQ0EseUJBQUEsQ0FDQSwwQkFBQSxDQUNBLGNBQUEsQ0FDQSw2QkFBQSxDQUNBLHlDQUFBLENBQ0EsZ0JBQUEsQ0FDQSwwQkFBQSxDQUNBLHNCQUFBLENBR0YsZ0JBQ0UsY0FBQSxDQUNBLGlCQUFBLENBQ0EsT0FBQSxDQUNBLE1BQUEsQ0FDQSwwQkFBQSxDQUNBLDBCQUFBLENBR0YsZ0JBQ0UsaUJBQUEsQ0FDQSxPQUFB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LGtCQUNFLFlBQUEsQ0FHRiw2QkFDRSxxQkFBQSxDQUNBLHNCQUFBLENBR0YsY0FDRSxpQkFBQSxDQUdGLGdIQUlFLDJEQUFBLENBR0YsMEJBQ0UsU0FBQSxDQUNBLGlEQUFBLENBR0Ysd0JBQ0UsU0FBQSxDQUNBLDREQUFBLENBR0YsMEJBQ0UsU0FBQSxDQUNBLDREQUFBLENBR0Ysd0JBQ0UsU0FBQSxDQUNBLGlEQUFBLENBR0YsNEdBSUUsdUVBQUEsQ0FHRixnREFFRSxTQUFBLENBQ0EsaURBQUEsQ0FHRixnREFFRSxTQUFBLENBQ0EsNERBQUEsQ0FHRix1QkFDRSxtRkFBQSxDQUFBLG1DQUFBXCIsXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm11bHRpc2VsZWN0e2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QuaXMtb3Blbntib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpIDAgMH0ubXVsdGlzZWxlY3QuaXMtb3Blbi10b3B7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCl9Lm11bHRpc2VsZWN0LmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtYmctZGlzYWJsZWQsI2YzZjRmNik7Y3Vyc29yOmRlZmF1bHR9Lm11bHRpc2VsZWN0LmlzLWFjdGl2ZXtib3JkZXI6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLWFjdGl2ZSx2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KSkgc29saWQgdmFyKC0tbXMtYm9yZGVyLWNvbG9yLWFjdGl2ZSx2YXIoLS1tcy1ib3JkZXItY29sb3IsI2QxZDVkYikpO2JveC1zaGFkb3c6MCAwIDAgdmFyKC0tbXMtcmluZy13aWR0aCwzcHgpIHZhcigtLW1zLXJpbmctY29sb3IscmdiYSgxNiwxODUsMTI5LC4xODgpKX0ubXVsdGlzZWxlY3Qtd3JhcHBlcnthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjAgYXV0bzttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCwubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2xlZnQ6MDtsaW5lLWhlaWdodDp2YXIoLS1tcy1saW5lLWhlaWdodCwxLjM3NSk7bWF4LXdpZHRoOjEwMCU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3BhZGRpbmctcmlnaHQ6Y2FsYygxLjI1cmVtICsgdmFyKC0tbXMtcHgsIC44NzVyZW0pKjMpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9Lm11bHRpc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLW1zLXBsYWNlaG9sZGVyLWNvbG9yLCM5Y2EzYWYpfS5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dHtkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubXVsdGlzZWxlY3Qtc2VhcmNoey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLCNmZmYpO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OjEwMCU7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm11bHRpc2VsZWN0LXRhZ3N7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtmbGV4LXdyYXA6d3JhcDttYXJnaW46dmFyKC0tbXMtdGFnLW15LC4yNXJlbSkgMCAwO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weSwuNXJlbSl9Lm11bHRpc2VsZWN0LXRhZywubXVsdGlzZWxlY3QtdGFnc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21pbi13aWR0aDowfS5tdWx0aXNlbGVjdC10YWd7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmcsIzEwYjk4MSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmFkaXVzLDRweCk7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLCNmZmYpO2ZvbnQtc2l6ZTp2YXIoLS1tcy10YWctZm9udC1zaXplLC44NzVyZW0pO2ZvbnQtd2VpZ2h0OnZhcigtLW1zLXRhZy1mb250LXdlaWdodCw2MDApO2xpbmUtaGVpZ2h0OnZhcigtLW1zLXRhZy1saW5lLWhlaWdodCwxLjI1cmVtKTttYXJnaW4tYm90dG9tOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pO21hcmdpbi1yaWdodDp2YXIoLS1tcy10YWctbXgsLjI1cmVtKTtwYWRkaW5nOnZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSAwIHZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSB2YXIoLS1tcy10YWctcHgsLjVyZW0pO3doaXRlLXNwYWNlOm5vd3JhcH0ubXVsdGlzZWxlY3QtdGFnLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLWRpc2FibGVkLCM5Y2EzYWYpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvci1kaXNhYmxlZCwjZmZmKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9Lm11bHRpc2VsZWN0LXRhZy13cmFwcGVye292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubXVsdGlzZWxlY3QtdGFnLXdyYXBwZXItYnJlYWt7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsfS5tdWx0aXNlbGVjdC10YWctcmVtb3Zle2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLW1zLXRhZy1yZW1vdmUtcmFkaXVzLDRweCk7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOnZhcigtLW1zLXRhZy1yZW1vdmUtbXksMCkgdmFyKC0tbXMtdGFnLXJlbW92ZS1teCwuMTI1cmVtKTtwYWRkaW5nOnZhcigtLW1zLXRhZy1yZW1vdmUtcHksLjI1cmVtKSB2YXIoLS1tcy10YWctcmVtb3ZlLXB4LC4yNXJlbSl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNjMpfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlLWljb257YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi43NXJlbTstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47b3BhY2l0eTouODt3aWR0aDouNzVyZW19Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtoZWlnaHQ6MTAwJTttYXJnaW46MCB2YXIoLS1tcy10YWctbXgsNHB4KSB2YXIoLS1tcy10YWctbXksNHB4KTtwb3NpdGlvbjpyZWxhdGl2ZX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtY29weXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MXB4O3Zpc2liaWxpdHk6aGlkZGVuO3doaXRlLXNwYWNlOnByZS13cmFwO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC1pbmlmaXRle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWluaWZpdGUtc3Bpbm5lciwubXVsdGlzZWxlY3Qtc3Bpbm5lcnthbmltYXRpb246bXVsdGlzZWxlY3Qtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1zcGlubmVyLWNvbG9yLCMxMGI5ODEpO2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjFyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTQ1Ni40MzMgMzcxLjcyLTI3Ljc5LTE2LjA0NWMtNy4xOTItNC4xNTItMTAuMDUyLTEzLjEzNi02LjQ4Ny0yMC42MzYgMjUuODItNTQuMzI4IDIzLjU2Ni0xMTguNjAyLTYuNzY4LTE3MS4wMy0zMC4yNjUtNTIuNTI5LTg0LjgwMi04Ni42MjEtMTQ0Ljc2LTkxLjQyNEMyNjIuMzUgNzEuOTIyIDI1NiA2NC45NTMgMjU2IDU2LjY0OVYyNC41NmMwLTkuMzEgNy45MTYtMTYuNjA5IDE3LjIwNC0xNS45NiA4MS43OTUgNS43MTcgMTU2LjQxMiA1MS45MDIgMTk3LjYxMSAxMjMuNDA4IDQxLjMwMSA3MS4zODUgNDMuOTkgMTU5LjA5NiA4LjA0MiAyMzIuNzkyLTQuMDgyIDguMzY5LTE0LjM2MSAxMS41NzUtMjIuNDI0IDYuOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjt3aWR0aDoxcmVtO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwfS5tdWx0aXNlbGVjdC1jbGVhcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtvcGFjaXR5OjE7cGFkZGluZzowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOi4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jbGVhcjpob3ZlciAubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLWhvdmVyLCMwMDApfS5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2xlYXItY29sb3IsIzk5OSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTt0cmFuc2l0aW9uOi4zc30ubXVsdGlzZWxlY3QtY2FyZXQsLm11bHRpc2VsZWN0LWNsZWFyLWljb257aGVpZ2h0OjEuMTI1cmVtOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6LjYyNXJlbX0ubXVsdGlzZWxlY3QtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jYXJldC1jb2xvciwjOTk5KTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jYXJldC5pcy1vcGVue3BvaW50ZXItZXZlbnRzOmF1dG87dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5tdWx0aXNlbGVjdC1kcm9wZG93bnstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtiYWNrZ3JvdW5kOnZhcigtLW1zLWRyb3Bkb3duLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCk7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsZWZ0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXJnaW4tdG9wOmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXgtaGVpZ2h0OnZhcigtLW1zLW1heC1oZWlnaHQsMTByZW0pO291dGxpbmU6bm9uZTtvdmVyZmxvdy15OnNjcm9sbDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7ei1pbmRleDoxMDB9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLXRvcHtib3JkZXItcmFkaXVzOnZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIDAgMDtib3R0b206YXV0bzt0b3A6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5tdWx0aXNlbGVjdC1vcHRpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXB7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZywjZTVlN2ViKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3IsIzM3NDE1MSk7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1ncm91cC1sYWJlbC1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1ncm91cC1sYWJlbC1weSwuM3JlbSkgdmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50YWJsZXtjdXJzb3I6cG9pbnRlcn0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXBvaW50ZWQsI2QxZDVkYik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItcG9pbnRlZCwjMzc0MTUxKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZCwjMDU5NjY5KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1wb2ludGVkLCMwYzllNzApO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzc1Y2ZiMSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LWdyb3VwLW9wdGlvbnN7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1vcHRpb257YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLW9wdGlvbi1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtb3B0aW9uLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1wb2ludGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1wb2ludGVkLCMxZjI5MzcpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQsIzEwYjk4MSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctZGlzYWJsZWQsI2ZmZik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtcG9pbnRlZCwjMjZjMDhlKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM4N2RjYzApO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3Qtbm8tb3B0aW9ucywubXVsdGlzZWxlY3Qtbm8tcmVzdWx0c3tjb2xvcjp2YXIoLS1tcy1lbXB0eS1jb2xvciwjNGI1NTYzKTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSl9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtib3R0b206LTFweDtmb250LXNpemU6MDtoZWlnaHQ6MXB4O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDphY3RpdmUsLm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5tdWx0aXNlbGVjdC1hc3Npc3RpdmUtdGV4dHtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5tdWx0aXNlbGVjdC1zcGFjZXJ7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcixbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHtsZWZ0OmF1dG87cGFkZGluZy1sZWZ0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pO3JpZ2h0OjB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zZWFyY2h7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3N7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weSwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWd7bWFyZ2luLWxlZnQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKSB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNhcmV0LFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jbGVhcntwYWRkaW5nOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfUBrZXlmcmFtZXMgbXVsdGlzZWxlY3Qtc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGFBQWEsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsc0VBQXNFLENBQUMsa0NBQWtDLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsK0hBQStILENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsMkRBQTJELENBQUMseUJBQXlCLDJEQUEyRCxDQUFDLHlCQUF5Qix3Q0FBd0MsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLGtJQUFrSSxDQUFDLG9GQUFvRixDQUFDLHFCQUFxQixrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQywrSEFBK0gsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLCtFQUErRSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxjQUFjLENBQUMsaUNBQWlDLENBQUMscURBQXFELENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHlCQUF5Qix5Q0FBeUMsQ0FBQywrQkFBK0IsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGlDQUFpQyxDQUFDLGlCQUFpQixD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LDREQUE0RCxDQUFDLHdCQUF3QixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyw2REFBNkQsWUFBWSxDQUFDLDRCQUE0QixrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLFlBQVksQ0FBQyw2R0FBNkcsU0FBUyxDQUFDLG9EQUFvRCxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLDRCQUE0QixjQUFjLENBQUMsZ0NBQWdDLENBQUMsMkJBQTJCLG1DQUFtQyxDQUFDLGNBQWMsQ0FBQyxrRkFBa0YsQ0FBQyx1Q0FBdUMsbUNBQW1DLENBQUMsNERBQTRELGlDQUFpQyxDQUFDLDZCQUE2QixrQ0FBa0MsQ0FBQyw0QkFBNEIsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLHVCQUF1QixDQUFDXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5tdWx0aXNlbGVjdHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LmlzLW9wZW57Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KSAwIDB9Lm11bHRpc2VsZWN0LmlzLW9wZW4tdG9we2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpfS5tdWx0aXNlbGVjdC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2N1cnNvcjpkZWZhdWx0fS5tdWx0aXNlbGVjdC5pcy1hY3RpdmV7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aC1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvci1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpKTtib3gtc2hhZG93OjAgMCAwIHZhcigtLW1zLXJpbmctd2lkdGgsM3B4KSB2YXIoLS1tcy1yaW5nLWNvbG9yLHJnYmEoMTYsMTg1LDEyOSwuMTg4KSl9Lm11bHRpc2VsZWN0LXdyYXBwZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtsZWZ0OjA7bGluZS1oZWlnaHQ6dmFyKC0tbXMtbGluZS1oZWlnaHQsMS4zNzUpO21heC13aWR0aDoxMDAlO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwYWRkaW5nLXJpZ2h0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tcy1wbGFjZWhvbGRlci1jb2xvciwjOWNhM2FmKX0ubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHR7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoxMDAlO2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC10YWdze2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC13cmFwOndyYXA7bWFyZ2luOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pIDAgMDtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHksLjVyZW0pfS5tdWx0aXNlbGVjdC10YWcsLm11bHRpc2VsZWN0LXRhZ3N7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttaW4td2lkdGg6MH0ubXVsdGlzZWxlY3QtdGFne2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLCMxMGI5ODEpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJhZGl1cyw0cHgpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvciwjZmZmKTtmb250LXNpemU6dmFyKC0tbXMtdGFnLWZvbnQtc2l6ZSwuODc1cmVtKTtmb250LXdlaWdodDp2YXIoLS1tcy10YWctZm9udC13ZWlnaHQsNjAwKTtsaW5lLWhlaWdodDp2YXIoLS1tcy10YWctbGluZS1oZWlnaHQsMS4yNXJlbSk7bWFyZ2luLWJvdHRvbTp2YXIoLS1tcy10YWctbXksLjI1cmVtKTttYXJnaW4tcmlnaHQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMCB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKTt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZy1kaXNhYmxlZCwjOWNhM2FmKTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3ItZGlzYWJsZWQsI2ZmZik7cGFkZGluZy1yaWdodDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfS5tdWx0aXNlbGVjdC10YWctd3JhcHBlcntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy13cmFwcGVyLWJyZWFre3doaXRlLXNwYWNlOm5vcm1hbDt3b3JkLWJyZWFrOmJyZWFrLWFsbH0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmVtb3ZlLXJhZGl1cyw0cHgpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjp2YXIoLS1tcy10YWctcmVtb3ZlLW15LDApIHZhcigtLW1zLXRhZy1yZW1vdmUtbXgsLjEyNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcmVtb3ZlLXB5LC4yNXJlbSkgdmFyKC0tbXMtdGFnLXJlbW92ZS1weCwuMjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDYzKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29ue2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouNzVyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO29wYWNpdHk6Ljg7d2lkdGg6Ljc1cmVtfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgdmFyKC0tbXMtdGFnLW14LDRweCkgdmFyKC0tbXMtdGFnLW15LDRweCk7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjFweDt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtaW5pZml0ZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXIsLm11bHRpc2VsZWN0LXNwaW5uZXJ7YW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtc3Bpbm5lci1jb2xvciwjMTBiOTgxKTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxcmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6MXJlbTt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMH0ubXVsdGlzZWxlY3QtY2xlYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7b3BhY2l0eToxO3BhZGRpbmc6MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjouM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2xlYXI6aG92ZXIgLm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvci1ob3ZlciwjMDAwKX0ubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLCM5OTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7dHJhbnNpdGlvbjouM3N9Lm11bHRpc2VsZWN0LWNhcmV0LC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2hlaWdodDoxLjEyNXJlbTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOi42MjVyZW19Lm11bHRpc2VsZWN0LWNhcmV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2FyZXQtY29sb3IsIzk5OSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2FyZXQuaXMtb3Blbntwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ubXVsdGlzZWxlY3QtZHJvcGRvd257LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7YmFja2dyb3VuZDp2YXIoLS1tcy1kcm9wZG93bi1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWFyZ2luLXRvcDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWF4LWhlaWdodDp2YXIoLS1tcy1tYXgtaGVpZ2h0LDEwcmVtKTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTpzY3JvbGw7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3otaW5kZXg6MTAwfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy10b3B7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSAwIDA7Ym90dG9tOmF1dG87dG9wOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3Vwe21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmcsI2U1ZTdlYik7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLCMzNzQxNTEpO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6Ljg3NXJlbTtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHksLjNyZW0pIHZhcigtLW1zLWdyb3VwLWxhYmVsLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGFibGV7Y3Vyc29yOnBvaW50ZXJ9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1wb2ludGVkLCNkMWQ1ZGIpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXBvaW50ZWQsIzM3NDE1MSl9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQsIzA1OTY2OSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctZGlzYWJsZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtcG9pbnRlZCwjMGM5ZTcwKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM3NWNmYjEpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1ncm91cC1vcHRpb25ze21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3Qtb3B0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1vcHRpb24tZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLW9wdGlvbi1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctcG9pbnRlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItcG9pbnRlZCwjMWYyOTM3KX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLCMxMGI5ODEpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLWRpc2FibGVkLCNmZmYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzI2YzA4ZSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjODdkY2MwKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LW5vLW9wdGlvbnMsLm11bHRpc2VsZWN0LW5vLXJlc3VsdHN7Y29sb3I6dmFyKC0tbXMtZW1wdHktY29sb3IsIzRiNTU2Myk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym90dG9tOi0xcHg7Zm9udC1zaXplOjA7aGVpZ2h0OjFweDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6YWN0aXZlLC5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0ubXVsdGlzZWxlY3QtYXNzaXN0aXZlLXRleHR7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0ubXVsdGlzZWxlY3Qtc3BhY2Vye2Rpc3BsYXk6bm9uZX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLFtkaXI9cnRsXSAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7bGVmdDphdXRvO3BhZGRpbmctbGVmdDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKTtyaWdodDowfVtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2VhcmNoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWdze3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHksLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFne21hcmdpbi1sZWZ0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO21hcmdpbi1yaWdodDowO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSkgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jYXJldCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2xlYXJ7cGFkZGluZzowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1Aa2V5ZnJhbWVzIG11bHRpc2VsZWN0LXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gKG1vZHVsZXMsIG1lZGlhUXVlcnksIGRlZHVwZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfaSA9IGFyciAmJiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhcnJbU3ltYm9sLml0ZXJhdG9yXSB8fCBhcnJbXCJAQGl0ZXJhdG9yXCJdKTsgaWYgKF9pID09IG51bGwpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfcywgX2U7IHRyeSB7IGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pIHtcbiAgdmFyIF9pdGVtID0gX3NsaWNlZFRvQXJyYXkoaXRlbSwgNCksXG4gICAgICBjb250ZW50ID0gX2l0ZW1bMV0sXG4gICAgICBjc3NNYXBwaW5nID0gX2l0ZW1bM107XG5cbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRMZWFkaW5nWmVyb3MobnVtYmVyLCB0YXJnZXRMZW5ndGgpIHtcbiAgdmFyIHNpZ24gPSBudW1iZXIgPCAwID8gJy0nIDogJyc7XG4gIHZhciBvdXRwdXQgPSBNYXRoLmFicyhudW1iZXIpLnRvU3RyaW5nKCk7XG4gIHdoaWxlIChvdXRwdXQubGVuZ3RoIDwgdGFyZ2V0TGVuZ3RoKSB7XG4gICAgb3V0cHV0ID0gJzAnICsgb3V0cHV0O1xuICB9XG4gIHJldHVybiBzaWduICsgb3V0cHV0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIG9iamVjdCkge1xuICBpZiAodGFyZ2V0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7XG4gIH1cbiAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkge1xuICAgICAgO1xuICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IG9iamVjdFtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IGFzc2lnbiBmcm9tIFwiLi4vYXNzaWduL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuIGFzc2lnbih7fSwgb2JqZWN0KTtcbn0iLCJpbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vLi4vbG9jYWxlL2VuLVVTL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0TG9jYWxlOyIsInZhciBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICBkZWZhdWx0T3B0aW9ucyA9IG5ld09wdGlvbnM7XG59IiwiaW1wb3J0IGdldFVUQ0RheU9mWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENEYXlPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi8uLi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbmltcG9ydCBsaWdodEZvcm1hdHRlcnMgZnJvbSBcIi4uL2xpZ2h0Rm9ybWF0dGVycy9pbmRleC5qc1wiO1xudmFyIGRheVBlcmlvZEVudW0gPSB7XG4gIGFtOiAnYW0nLFxuICBwbTogJ3BtJyxcbiAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gIG5vb246ICdub29uJyxcbiAgbW9ybmluZzogJ21vcm5pbmcnLFxuICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICBldmVuaW5nOiAnZXZlbmluZycsXG4gIG5pZ2h0OiAnbmlnaHQnXG59O1xuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgTWlsbGlzZWNvbmRzIGluIGRheSAgICAgICAgICAgIHxcbiAqIHwgIGIgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgIHwgIEIgIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgIHxcbiAqIHwgIGMgIHwgU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWsgIHwgIEMqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGUgIHwgTG9jYWwgZGF5IG9mIHdlZWsgICAgICAgICAgICAgIHwgIEUgIHwgRGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGYgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEYqIHwgRGF5IG9mIHdlZWsgaW4gbW9udGggICAgICAgICAgIHxcbiAqIHwgIGcqIHwgTW9kaWZpZWQgSnVsaWFuIGRheSAgICAgICAgICAgIHwgIEcgIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGkhIHwgSVNPIGRheSBvZiB3ZWVrICAgICAgICAgICAgICAgIHwgIEkhIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgIHxcbiAqIHwgIGoqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHwgIEoqIHwgTG9jYWxpemVkIGhvdXIgdy9vIGRheSBwZXJpb2QgIHxcbiAqIHwgIGsgIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgIHwgIEsgIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGwqIHwgKGRlcHJlY2F0ZWQpICAgICAgICAgICAgICAgICAgIHwgIEwgIHwgU3RhbmQtYWxvbmUgbW9udGggICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG8hIHwgT3JkaW5hbCBudW1iZXIgbW9kaWZpZXIgICAgICAgIHwgIE8gIHwgVGltZXpvbmUgKEdNVCkgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHAhIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgIHwgIFAhIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgIHxcbiAqIHwgIHEgIHwgU3RhbmQtYWxvbmUgcXVhcnRlciAgICAgICAgICAgIHwgIFEgIHwgUXVhcnRlciAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHIqIHwgUmVsYXRlZCBHcmVnb3JpYW4geWVhciAgICAgICAgIHwgIFIhIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHQhIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgIHwgIFQhIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgIHxcbiAqIHwgIHUgIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgIHwgIFUqIHwgQ3ljbGljIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHYqIHwgVGltZXpvbmUgKGdlbmVyaWMgbm9uLWxvY2F0LikgIHwgIFYqIHwgVGltZXpvbmUgKGxvY2F0aW9uKSAgICAgICAgICAgIHxcbiAqIHwgIHcgIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgIHwgIFcqIHwgV2VlayBvZiBtb250aCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHggIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgIHwgIFggIHwgVGltZXpvbmUgKElTTy04NjAxKSAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgIHxcbiAqIHwgIHogIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pIHwgIFoqIHwgVGltZXpvbmUgKGFsaWFzZXMpICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgISBhcmUgbm9uLXN0YW5kYXJkLCBidXQgaW1wbGVtZW50ZWQgYnkgZGF0ZS1mbnM6XG4gKiAtIGBvYCBtb2RpZmllcyB0aGUgcHJldmlvdXMgdG9rZW4gdG8gdHVybiBpdCBpbnRvIGFuIG9yZGluYWwgKHNlZSBgZm9ybWF0YCBkb2NzKVxuICogLSBgaWAgaXMgSVNPIGRheSBvZiB3ZWVrLiBGb3IgYGlgIGFuZCBgaWlgIGlzIHJldHVybnMgbnVtZXJpYyBJU08gd2VlayBkYXlzLFxuICogICBpLmUuIDcgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5LCBldGMuXG4gKiAtIGBJYCBpcyBJU08gd2VlayBvZiB5ZWFyLCBhcyBvcHBvc2VkIHRvIGB3YCB3aGljaCBpcyBsb2NhbCB3ZWVrIG9mIHllYXIuXG4gKiAtIGBSYCBpcyBJU08gd2Vlay1udW1iZXJpbmcgeWVhciwgYXMgb3Bwb3NlZCB0byBgWWAgd2hpY2ggaXMgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqICAgYFJgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSWAgYW5kIGBpYFxuICogICBmb3IgdW5pdmVyc2FsIElTTyB3ZWVrLW51bWJlcmluZyBkYXRlLCB3aGVyZWFzXG4gKiAgIGBZYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYHdgIGFuZCBgZWBcbiAqICAgZm9yIHdlZWstbnVtYmVyaW5nIGRhdGUgc3BlY2lmaWMgdG8gdGhlIGxvY2FsZS5cbiAqIC0gYFBgIGlzIGxvbmcgbG9jYWxpemVkIGRhdGUgZm9ybWF0XG4gKiAtIGBwYCBpcyBsb25nIGxvY2FsaXplZCB0aW1lIGZvcm1hdFxuICovXG5cbnZhciBmb3JtYXR0ZXJzID0ge1xuICAvLyBFcmFcbiAgRzogZnVuY3Rpb24gRyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZXJhID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpID4gMCA/IDEgOiAwO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIEFELCBCQ1xuICAgICAgY2FzZSAnRyc6XG4gICAgICBjYXNlICdHRyc6XG4gICAgICBjYXNlICdHR0cnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgIH0pO1xuICAgICAgLy8gQSwgQlxuICAgICAgY2FzZSAnR0dHR0cnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICB9KTtcbiAgICAgIC8vIEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0XG4gICAgICBjYXNlICdHR0dHJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5lcmEoZXJhLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFllYXJcbiAgeTogZnVuY3Rpb24geShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICAvLyBPcmRpbmFsIG51bWJlclxuICAgIGlmICh0b2tlbiA9PT0gJ3lvJykge1xuICAgICAgdmFyIHNpZ25lZFllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgICAgdmFyIHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHllYXIsIHtcbiAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy55KGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICBZOiBmdW5jdGlvbiBZKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBzaWduZWRXZWVrWWVhciA9IGdldFVUQ1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgdmFyIHdlZWtZZWFyID0gc2lnbmVkV2Vla1llYXIgPiAwID8gc2lnbmVkV2Vla1llYXIgOiAxIC0gc2lnbmVkV2Vla1llYXI7XG5cbiAgICAvLyBUd28gZGlnaXQgeWVhclxuICAgIGlmICh0b2tlbiA9PT0gJ1lZJykge1xuICAgICAgdmFyIHR3b0RpZ2l0WWVhciA9IHdlZWtZZWFyICUgMTAwO1xuICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0d29EaWdpdFllYXIsIDIpO1xuICAgIH1cblxuICAgIC8vIE9yZGluYWwgbnVtYmVyXG4gICAgaWYgKHRva2VuID09PSAnWW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih3ZWVrWWVhciwge1xuICAgICAgICB1bml0OiAneWVhcidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFBhZGRpbmdcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHdlZWtZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICBSOiBmdW5jdGlvbiBSKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIGlzb1dlZWtZZWFyID0gZ2V0VVRDSVNPV2Vla1llYXIoZGF0ZSk7XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29XZWVrWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gRXh0ZW5kZWQgeWVhci4gVGhpcyBpcyBhIHNpbmdsZSBudW1iZXIgZGVzaWduYXRpbmcgdGhlIHllYXIgb2YgdGhpcyBjYWxlbmRhciBzeXN0ZW0uXG4gIC8vIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBgeWAgYW5kIGB1YCBsb2NhbGl6ZXJzIGFyZSBCLkMuIHllYXJzOlxuICAvLyB8IFllYXIgfCBgeWAgfCBgdWAgfFxuICAvLyB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICAvLyB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICAvLyB8IEJDIDEgfCAgIDEgfCAgIDAgfFxuICAvLyB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICAvLyBBbHNvIGB5eWAgYWx3YXlzIHJldHVybnMgdGhlIGxhc3QgdHdvIGRpZ2l0cyBvZiBhIHllYXIsXG4gIC8vIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZC5cbiAgdTogZnVuY3Rpb24gdShkYXRlLCB0b2tlbikge1xuICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoeWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gUXVhcnRlclxuICBROiBmdW5jdGlvbiBRKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBxdWFydGVyID0gTWF0aC5jZWlsKChkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSAvIDMpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgJ1EnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHF1YXJ0ZXIpO1xuICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgIGNhc2UgJ1FRJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhxdWFydGVyLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSAnUW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihxdWFydGVyLCB7XG4gICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgIH0pO1xuICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgIGNhc2UgJ1FRUSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgJ1FRUVFRJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgY2FzZSAnUVFRUSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBTdGFuZC1hbG9uZSBxdWFydGVyXG4gIHE6IGZ1bmN0aW9uIHEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIHF1YXJ0ZXIgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpIC8gMyk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgY2FzZSAncSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcocXVhcnRlcik7XG4gICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgY2FzZSAncXEnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHF1YXJ0ZXIsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICBjYXNlICdxbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgfSk7XG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgY2FzZSAncXFxJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgY2FzZSAncXFxcXEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICBjYXNlICdxcXFxJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIE1vbnRoXG4gIE06IGZ1bmN0aW9uIE0oZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ00nOlxuICAgICAgY2FzZSAnTU0nOlxuICAgICAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLk0oZGF0ZSwgdG9rZW4pO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgY2FzZSAnTW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHtcbiAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICBjYXNlICdNTU0nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgIGNhc2UgJ01NTU1NJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICBjYXNlICdNTU1NJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgbW9udGhcbiAgTDogZnVuY3Rpb24gTChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgY2FzZSAnTCc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobW9udGggKyAxKTtcbiAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgY2FzZSAnTEwnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKG1vbnRoICsgMSwgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICBjYXNlICdMbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKG1vbnRoICsgMSwge1xuICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgIGNhc2UgJ0xMTCc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgY2FzZSAnTExMTEwnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgJ0xMTEwnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBMb2NhbCB3ZWVrIG9mIHllYXJcbiAgdzogZnVuY3Rpb24gdyhkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgd2VlayA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgaWYgKHRva2VuID09PSAnd28nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih3ZWVrLCB7XG4gICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3Mod2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSVNPIHdlZWsgb2YgeWVhclxuICBJOiBmdW5jdGlvbiBJKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBpc29XZWVrID0gZ2V0VVRDSVNPV2VlayhkYXRlKTtcbiAgICBpZiAodG9rZW4gPT09ICdJbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGlzb1dlZWssIHtcbiAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29XZWVrLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBEYXkgb2YgdGhlIG1vbnRoXG4gIGQ6IGZ1bmN0aW9uIGQoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnZG8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ0RhdGUoKSwge1xuICAgICAgICB1bml0OiAnZGF0ZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLmQoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBEYXkgb2YgeWVhclxuICBEOiBmdW5jdGlvbiBEKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBkYXlPZlllYXIgPSBnZXRVVENEYXlPZlllYXIoZGF0ZSk7XG4gICAgaWYgKHRva2VuID09PSAnRG8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXlPZlllYXIsIHtcbiAgICAgICAgdW5pdDogJ2RheU9mWWVhcidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRheU9mWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHdlZWtcbiAgRTogZnVuY3Rpb24gRShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgJ0UnOlxuICAgICAgY2FzZSAnRUUnOlxuICAgICAgY2FzZSAnRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdFRUVFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdFRUVFRUUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ0VFRUUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIExvY2FsIGRheSBvZiB3ZWVrXG4gIGU6IGZ1bmN0aW9uIGUoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGxvY2FsRGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgOCkgJSA3IHx8IDc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gTnVtZXJpY2FsIHZhbHVlIChOdGggZGF5IG9mIHdlZWsgd2l0aCBjdXJyZW50IGxvY2FsZSBvciB3ZWVrU3RhcnRzT24pXG4gICAgICBjYXNlICdlJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhsb2NhbERheU9mV2Vlayk7XG4gICAgICAvLyBQYWRkZWQgbnVtZXJpY2FsIHZhbHVlXG4gICAgICBjYXNlICdlZSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobG9jYWxEYXlPZldlZWssIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgN3RoXG4gICAgICBjYXNlICdlbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7XG4gICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ2VlZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgJ2VlZWVlZSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSAnZWVlZSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWtcbiAgYzogZnVuY3Rpb24gYyhkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICB2YXIgbG9jYWxEYXlPZldlZWsgPSAoZGF5T2ZXZWVrIC0gb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA4KSAlIDcgfHwgNztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBOdW1lcmljYWwgdmFsdWUgKHNhbWUgYXMgaW4gYGVgKVxuICAgICAgY2FzZSAnYyc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobG9jYWxEYXlPZldlZWspO1xuICAgICAgLy8gUGFkZGVkIG51bWVyaWNhbCB2YWx1ZVxuICAgICAgY2FzZSAnY2MnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCB0b2tlbi5sZW5ndGgpO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgN3RoXG4gICAgICBjYXNlICdjbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7XG4gICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ2NjY2NjJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgJ2NjY2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSAnY2NjYyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gSVNPIGRheSBvZiB3ZWVrXG4gIGk6IGZ1bmN0aW9uIGkoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGlzb0RheU9mV2VlayA9IGRheU9mV2VlayA9PT0gMCA/IDcgOiBkYXlPZldlZWs7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMlxuICAgICAgY2FzZSAnaSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcoaXNvRGF5T2ZXZWVrKTtcbiAgICAgIC8vIDAyXG4gICAgICBjYXNlICdpaSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvRGF5T2ZXZWVrLCB0b2tlbi5sZW5ndGgpO1xuICAgICAgLy8gMm5kXG4gICAgICBjYXNlICdpbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGlzb0RheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlICdpaWknOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ2lpaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSAnaWlpaSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gQU0gb3IgUE1cbiAgYTogZnVuY3Rpb24gYShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZSA9IGhvdXJzIC8gMTIgPj0gMSA/ICdwbScgOiAnYW0nO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgY2FzZSAnYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2FhYSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdhYWFhYSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEFNLCBQTSwgbWlkbmlnaHQsIG5vb25cbiAgYjogZnVuY3Rpb24gYihkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm5vb247XG4gICAgfSBlbHNlIGlmIChob3VycyA9PT0gMCkge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5taWRuaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gaG91cnMgLyAxMiA+PSAxID8gJ3BtJyA6ICdhbSc7XG4gICAgfVxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ2InOlxuICAgICAgY2FzZSAnYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2JiYic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdiYmJiYic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2JiYmInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIGluIHRoZSBtb3JuaW5nLCBpbiB0aGUgYWZ0ZXJub29uLCBpbiB0aGUgZXZlbmluZywgYXQgbmlnaHRcbiAgQjogZnVuY3Rpb24gQihkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICBpZiAoaG91cnMgPj0gMTcpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0uZXZlbmluZztcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmFmdGVybm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDQpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubW9ybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5uaWdodDtcbiAgICB9XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnQic6XG4gICAgICBjYXNlICdCQic6XG4gICAgICBjYXNlICdCQkInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ0JCQkJCJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnQkJCQic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gSG91ciBbMS0xMl1cbiAgaDogZnVuY3Rpb24gaChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdobycpIHtcbiAgICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyO1xuICAgICAgaWYgKGhvdXJzID09PSAwKSBob3VycyA9IDEyO1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5oKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gSG91ciBbMC0yM11cbiAgSDogZnVuY3Rpb24gSChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdIbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDSG91cnMoKSwge1xuICAgICAgICB1bml0OiAnaG91cidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLkgoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBIb3VyIFswLTExXVxuICBLOiBmdW5jdGlvbiBLKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyO1xuICAgIGlmICh0b2tlbiA9PT0gJ0tvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhob3VycywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSG91ciBbMS0yNF1cbiAgazogZnVuY3Rpb24gayhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgaWYgKGhvdXJzID09PSAwKSBob3VycyA9IDI0O1xuICAgIGlmICh0b2tlbiA9PT0gJ2tvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhob3VycywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWludXRlXG4gIG06IGZ1bmN0aW9uIG0oZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnbW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ01pbnV0ZXMoKSwge1xuICAgICAgICB1bml0OiAnbWludXRlJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMubShkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIFNlY29uZFxuICBzOiBmdW5jdGlvbiBzKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ3NvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENTZWNvbmRzKCksIHtcbiAgICAgICAgdW5pdDogJ3NlY29uZCdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLnMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBGcmFjdGlvbiBvZiBzZWNvbmRcbiAgUzogZnVuY3Rpb24gUyhkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuUyhkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIFRpbWV6b25lIChJU08tODYwMS4gSWYgb2Zmc2V0IGlzIDAsIG91dHB1dCBpcyBhbHdheXMgYCdaJ2ApXG4gIFg6IGZ1bmN0aW9uIFgoZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBpZiAodGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgIHJldHVybiAnWic7XG4gICAgfVxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIEhvdXJzIGFuZCBvcHRpb25hbCBtaW51dGVzXG4gICAgICBjYXNlICdYJzpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lV2l0aE9wdGlvbmFsTWludXRlcyh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYFhYYFxuICAgICAgY2FzZSAnWFhYWCc6XG4gICAgICBjYXNlICdYWCc6XG4gICAgICAgIC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQpO1xuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRoIGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWFhgXG4gICAgICBjYXNlICdYWFhYWCc6XG4gICAgICBjYXNlICdYWFgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRoIGA6YCBkZWxpbWl0ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICB9XG4gIH0sXG4gIC8vIFRpbWV6b25lIChJU08tODYwMS4gSWYgb2Zmc2V0IGlzIDAsIG91dHB1dCBpcyBgJyswMDowMCdgIG9yIGVxdWl2YWxlbnQpXG4gIHg6IGZ1bmN0aW9uIHgoZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSAneCc6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXModGltZXpvbmVPZmZzZXQpO1xuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGB4eGBcbiAgICAgIGNhc2UgJ3h4eHgnOlxuICAgICAgY2FzZSAneHgnOlxuICAgICAgICAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgeHh4YFxuICAgICAgY2FzZSAneHh4eHgnOlxuICAgICAgY2FzZSAneHh4JzogLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoR01UKVxuICBPOiBmdW5jdGlvbiBPKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gU2hvcnRcbiAgICAgIGNhc2UgJ08nOlxuICAgICAgY2FzZSAnT08nOlxuICAgICAgY2FzZSAnT09PJzpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmVTaG9ydCh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICAgIC8vIExvbmdcbiAgICAgIGNhc2UgJ09PT08nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0aW9uKVxuICB6OiBmdW5jdGlvbiB6KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gU2hvcnRcbiAgICAgIGNhc2UgJ3onOlxuICAgICAgY2FzZSAnenonOlxuICAgICAgY2FzZSAnenp6JzpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmVTaG9ydCh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICAgIC8vIExvbmdcbiAgICAgIGNhc2UgJ3p6enonOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBTZWNvbmRzIHRpbWVzdGFtcFxuICB0OiBmdW5jdGlvbiB0KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWVzdGFtcCA9IE1hdGguZmxvb3Iob3JpZ2luYWxEYXRlLmdldFRpbWUoKSAvIDEwMDApO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModGltZXN0YW1wLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBNaWxsaXNlY29uZHMgdGltZXN0YW1wXG4gIFQ6IGZ1bmN0aW9uIFQoZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXN0YW1wID0gb3JpZ2luYWxEYXRlLmdldFRpbWUoKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lU2hvcnQob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICB2YXIgc2lnbiA9IG9mZnNldCA+IDAgPyAnLScgOiAnKyc7XG4gIHZhciBhYnNPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKTtcbiAgdmFyIG1pbnV0ZXMgPSBhYnNPZmZzZXQgJSA2MDtcbiAgaWYgKG1pbnV0ZXMgPT09IDApIHtcbiAgICByZXR1cm4gc2lnbiArIFN0cmluZyhob3Vycyk7XG4gIH1cbiAgdmFyIGRlbGltaXRlciA9IGRpcnR5RGVsaW1pdGVyIHx8ICcnO1xuICByZXR1cm4gc2lnbiArIFN0cmluZyhob3VycykgKyBkZWxpbWl0ZXIgKyBhZGRMZWFkaW5nWmVyb3MobWludXRlcywgMik7XG59XG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXMob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICBpZiAob2Zmc2V0ICUgNjAgPT09IDApIHtcbiAgICB2YXIgc2lnbiA9IG9mZnNldCA+IDAgPyAnLScgOiAnKyc7XG4gICAgcmV0dXJuIHNpZ24gKyBhZGRMZWFkaW5nWmVyb3MoTWF0aC5hYnMob2Zmc2V0KSAvIDYwLCAyKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0VGltZXpvbmUob2Zmc2V0LCBkaXJ0eURlbGltaXRlcik7XG59XG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZShvZmZzZXQsIGRpcnR5RGVsaW1pdGVyKSB7XG4gIHZhciBkZWxpbWl0ZXIgPSBkaXJ0eURlbGltaXRlciB8fCAnJztcbiAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICB2YXIgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgdmFyIGhvdXJzID0gYWRkTGVhZGluZ1plcm9zKE1hdGguZmxvb3IoYWJzT2Zmc2V0IC8gNjApLCAyKTtcbiAgdmFyIG1pbnV0ZXMgPSBhZGRMZWFkaW5nWmVyb3MoYWJzT2Zmc2V0ICUgNjAsIDIpO1xuICByZXR1cm4gc2lnbiArIGhvdXJzICsgZGVsaW1pdGVyICsgbWludXRlcztcbn1cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdHRlcnM7IiwiaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vLi4vYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqL1xudmFyIGZvcm1hdHRlcnMgPSB7XG4gIC8vIFllYXJcbiAgeTogZnVuY3Rpb24geShkYXRlLCB0b2tlbikge1xuICAgIC8vIEZyb20gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS0zMS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9Gb3JtYXRfdG9rZW5zXG4gICAgLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuICAgIC8vIHwtLS0tLS0tLS0tfC0tLS0tLS18LS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXxcbiAgICAvLyB8IEFEIDEgICAgIHwgICAgIDEgfCAwMSB8ICAgMDAxIHwgIDAwMDEgfCAwMDAwMSB8XG4gICAgLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuICAgIC8vIHwgQUQgMTIzICAgfCAgIDEyMyB8IDIzIHwgICAxMjMgfCAgMDEyMyB8IDAwMTIzIHxcbiAgICAvLyB8IEFEIDEyMzQgIHwgIDEyMzQgfCAzNCB8ICAxMjM0IHwgIDEyMzQgfCAwMTIzNCB8XG4gICAgLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuXG4gICAgdmFyIHNpZ25lZFllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcbiAgICB2YXIgeWVhciA9IHNpZ25lZFllYXIgPiAwID8gc2lnbmVkWWVhciA6IDEgLSBzaWduZWRZZWFyO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModG9rZW4gPT09ICd5eScgPyB5ZWFyICUgMTAwIDogeWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTW9udGhcbiAgTTogZnVuY3Rpb24gTShkYXRlLCB0b2tlbikge1xuICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICByZXR1cm4gdG9rZW4gPT09ICdNJyA/IFN0cmluZyhtb250aCArIDEpIDogYWRkTGVhZGluZ1plcm9zKG1vbnRoICsgMSwgMik7XG4gIH0sXG4gIC8vIERheSBvZiB0aGUgbW9udGhcbiAgZDogZnVuY3Rpb24gZChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRVVENEYXRlKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEFNIG9yIFBNXG4gIGE6IGZ1bmN0aW9uIGEoZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF0ZS5nZXRVVENIb3VycygpIC8gMTIgPj0gMSA/ICdwbScgOiAnYW0nO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgY2FzZSAnYWEnOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjYXNlICdhYWEnOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlO1xuICAgICAgY2FzZSAnYWFhYWEnOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlWzBdO1xuICAgICAgY2FzZSAnYWFhYSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlID09PSAnYW0nID8gJ2EubS4nIDogJ3AubS4nO1xuICAgIH1cbiAgfSxcbiAgLy8gSG91ciBbMS0xMl1cbiAgaDogZnVuY3Rpb24gaChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRVVENIb3VycygpICUgMTIgfHwgMTIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEhvdXIgWzAtMjNdXG4gIEg6IGZ1bmN0aW9uIEgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDSG91cnMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWludXRlXG4gIG06IGZ1bmN0aW9uIG0oZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDTWludXRlcygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBTZWNvbmRcbiAgczogZnVuY3Rpb24gcyhkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRVVENTZWNvbmRzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEZyYWN0aW9uIG9mIHNlY29uZFxuICBTOiBmdW5jdGlvbiBTKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIG51bWJlck9mRGlnaXRzID0gdG9rZW4ubGVuZ3RoO1xuICAgIHZhciBtaWxsaXNlY29uZHMgPSBkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgIHZhciBmcmFjdGlvbmFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzICogTWF0aC5wb3coMTAsIG51bWJlck9mRGlnaXRzIC0gMykpO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZnJhY3Rpb25hbFNlY29uZHMsIHRva2VuLmxlbmd0aCk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBmb3JtYXR0ZXJzOyIsInZhciBkYXRlTG9uZ0Zvcm1hdHRlciA9IGZ1bmN0aW9uIGRhdGVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgY2FzZSAnUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdzaG9ydCdcbiAgICAgIH0pO1xuICAgIGNhc2UgJ1BQJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe1xuICAgICAgICB3aWR0aDogJ21lZGl1bSdcbiAgICAgIH0pO1xuICAgIGNhc2UgJ1BQUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdsb25nJ1xuICAgICAgfSk7XG4gICAgY2FzZSAnUFBQUCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe1xuICAgICAgICB3aWR0aDogJ2Z1bGwnXG4gICAgICB9KTtcbiAgfVxufTtcbnZhciB0aW1lTG9uZ0Zvcm1hdHRlciA9IGZ1bmN0aW9uIHRpbWVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgY2FzZSAncCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdzaG9ydCdcbiAgICAgIH0pO1xuICAgIGNhc2UgJ3BwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe1xuICAgICAgICB3aWR0aDogJ21lZGl1bSdcbiAgICAgIH0pO1xuICAgIGNhc2UgJ3BwcCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdsb25nJ1xuICAgICAgfSk7XG4gICAgY2FzZSAncHBwcCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe1xuICAgICAgICB3aWR0aDogJ2Z1bGwnXG4gICAgICB9KTtcbiAgfVxufTtcbnZhciBkYXRlVGltZUxvbmdGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRlVGltZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBwYXR0ZXJuLm1hdGNoKC8oUCspKHArKT8vKSB8fCBbXTtcbiAgdmFyIGRhdGVQYXR0ZXJuID0gbWF0Y2hSZXN1bHRbMV07XG4gIHZhciB0aW1lUGF0dGVybiA9IG1hdGNoUmVzdWx0WzJdO1xuICBpZiAoIXRpbWVQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGRhdGVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpO1xuICB9XG4gIHZhciBkYXRlVGltZUZvcm1hdDtcbiAgc3dpdGNoIChkYXRlUGF0dGVybikge1xuICAgIGNhc2UgJ1AnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdzaG9ydCdcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUFAnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BQUCc6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe1xuICAgICAgICB3aWR0aDogJ2xvbmcnXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BQUFAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe1xuICAgICAgICB3aWR0aDogJ2Z1bGwnXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBkYXRlVGltZUZvcm1hdC5yZXBsYWNlKCd7e2RhdGV9fScsIGRhdGVMb25nRm9ybWF0dGVyKGRhdGVQYXR0ZXJuLCBmb3JtYXRMb25nKSkucmVwbGFjZSgne3t0aW1lfX0nLCB0aW1lTG9uZ0Zvcm1hdHRlcih0aW1lUGF0dGVybiwgZm9ybWF0TG9uZykpO1xufTtcbnZhciBsb25nRm9ybWF0dGVycyA9IHtcbiAgcDogdGltZUxvbmdGb3JtYXR0ZXIsXG4gIFA6IGRhdGVUaW1lTG9uZ0Zvcm1hdHRlclxufTtcbmV4cG9ydCBkZWZhdWx0IGxvbmdGb3JtYXR0ZXJzOyIsIi8qKlxuICogR29vZ2xlIENocm9tZSBhcyBvZiA2Ny4wLjMzOTYuODcgaW50cm9kdWNlZCB0aW1lem9uZXMgd2l0aCBvZmZzZXQgdGhhdCBpbmNsdWRlcyBzZWNvbmRzLlxuICogVGhleSB1c3VhbGx5IGFwcGVhciBmb3IgZGF0ZXMgdGhhdCBkZW5vdGUgdGltZSBiZWZvcmUgdGhlIHRpbWV6b25lcyB3ZXJlIGludHJvZHVjZWRcbiAqIChlLmcuIGZvciAnRXVyb3BlL1ByYWd1ZScgdGltZXpvbmUgdGhlIG9mZnNldCBpcyBHTVQrMDA6NTc6NDQgYmVmb3JlIDEgT2N0b2JlciAxODkxXG4gKiBhbmQgR01UKzAxOjAwOjAwIGFmdGVyIHRoYXQgZGF0ZSlcbiAqXG4gKiBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIG9mZnNldCBpbiBtaW51dGVzIGFuZCB3b3VsZCByZXR1cm4gNTcgZm9yIHRoZSBleGFtcGxlIGFib3ZlLFxuICogd2hpY2ggd291bGQgbGVhZCB0byBpbmNvcnJlY3QgY2FsY3VsYXRpb25zLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdGltZXpvbmUgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcyB0aGF0IHRha2VzIHNlY29uZHMgaW4gYWNjb3VudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSB7XG4gIHZhciB1dGNEYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLCBkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkpO1xuICB1dGNEYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSAtIHV0Y0RhdGUuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0RBWSA9IDg2NDAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDRGF5T2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlllYXJUaW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgdmFyIGRpZmZlcmVuY2UgPSB0aW1lc3RhbXAgLSBzdGFydE9mWWVhclRpbWVzdGFtcDtcbiAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIE1JTExJU0VDT05EU19JTl9EQVkpICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mVVRDSVNPV2VlayhkYXRlKS5nZXRUaW1lKCkgLSBzdGFydE9mVVRDSVNPV2Vla1llYXIoZGF0ZSkuZ2V0VGltZSgpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSykgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIgKyAxLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZlVUQ0lTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhcik7XG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mVVRDV2VlayhkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCkgLSBzdGFydE9mVVRDV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykuZ2V0VGltZSgpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSykgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBmaXJzdFdlZWtPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0VVRDRnVsbFllYXIoeWVhciArIDEsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mVVRDV2VlayhmaXJzdFdlZWtPZk5leHRZZWFyLCBvcHRpb25zKTtcbiAgdmFyIGZpcnN0V2Vla09mVGhpc1llYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrT2ZUaGlzWWVhciwgb3B0aW9ucyk7XG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn0iLCJ2YXIgcHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW5zID0gWydEJywgJ0REJ107XG52YXIgcHJvdGVjdGVkV2Vla1llYXJUb2tlbnMgPSBbJ1lZJywgJ1lZWVknXTtcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuKHRva2VuKSB7XG4gIHJldHVybiBwcm90ZWN0ZWREYXlPZlllYXJUb2tlbnMuaW5kZXhPZih0b2tlbikgIT09IC0xO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbih0b2tlbikge1xuICByZXR1cm4gcHJvdGVjdGVkV2Vla1llYXJUb2tlbnMuaW5kZXhPZih0b2tlbikgIT09IC0xO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdCwgaW5wdXQpIHtcbiAgaWYgKHRva2VuID09PSAnWVlZWScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgKGluIGBcIi5jb25jYXQoZm9ybWF0LCBcImApIGZvciBmb3JtYXR0aW5nIHllYXJzIHRvIHRoZSBpbnB1dCBgXCIpLmNvbmNhdChpbnB1dCwgXCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcIikpO1xuICB9IGVsc2UgaWYgKHRva2VuID09PSAnWVknKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgKGluIGBcIi5jb25jYXQoZm9ybWF0LCBcImApIGZvciBmb3JtYXR0aW5nIHllYXJzIHRvIHRoZSBpbnB1dCBgXCIpLmNvbmNhdChpbnB1dCwgXCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcIikpO1xuICB9IGVsc2UgaWYgKHRva2VuID09PSAnRCcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgZGAgaW5zdGVhZCBvZiBgRGAgKGluIGBcIi5jb25jYXQoZm9ybWF0LCBcImApIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHRvIHRoZSBpbnB1dCBgXCIpLmNvbmNhdChpbnB1dCwgXCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcIikpO1xuICB9IGVsc2UgaWYgKHRva2VuID09PSAnREQnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgKGluIGBcIi5jb25jYXQoZm9ybWF0LCBcImApIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHRvIHRoZSBpbnB1dCBgXCIpLmNvbmNhdChpbnB1dCwgXCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcIikpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVxdWlyZWRBcmdzKHJlcXVpcmVkLCBhcmdzKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA8IHJlcXVpcmVkKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihyZXF1aXJlZCArICcgYXJndW1lbnQnICsgKHJlcXVpcmVkID4gMSA/ICdzJyA6ICcnKSArICcgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmdzLmxlbmd0aCArICcgcHJlc2VudCcpO1xuICB9XG59IiwidmFyIHJvdW5kaW5nTWFwID0ge1xuICBjZWlsOiBNYXRoLmNlaWwsXG4gIHJvdW5kOiBNYXRoLnJvdW5kLFxuICBmbG9vcjogTWF0aC5mbG9vcixcbiAgdHJ1bmM6IGZ1bmN0aW9uIHRydW5jKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguY2VpbCh2YWx1ZSkgOiBNYXRoLmZsb29yKHZhbHVlKTtcbiAgfSAvLyBNYXRoLnRydW5jIGlzIG5vdCBzdXBwb3J0ZWQgYnkgSUVcbn07XG5cbnZhciBkZWZhdWx0Um91bmRpbmdNZXRob2QgPSAndHJ1bmMnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nTWV0aG9kKG1ldGhvZCkge1xuICByZXR1cm4gbWV0aG9kID8gcm91bmRpbmdNYXBbbWV0aG9kXSA6IHJvdW5kaW5nTWFwW2RlZmF1bHRSb3VuZGluZ01ldGhvZF07XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFVUQ0RheShkaXJ0eURhdGUsIGRpcnR5RGF5LCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSB0b0ludGVnZXIoZGlydHlEYXkpO1xuICB2YXIgY3VycmVudERheSA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gIHZhciByZW1haW5kZXIgPSBkYXkgJSA3O1xuICB2YXIgZGF5SW5kZXggPSAocmVtYWluZGVyICsgNykgJSA3O1xuICB2YXIgZGlmZiA9IChkYXlJbmRleCA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIGN1cnJlbnREYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENJU09EYXkoZGlydHlEYXRlLCBkaXJ0eURheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIGlmIChkYXkgJSA3ID09PSAwKSB7XG4gICAgZGF5ID0gZGF5IC0gNztcbiAgfVxuICB2YXIgd2Vla1N0YXJ0c09uID0gMTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGN1cnJlbnREYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgcmVtYWluZGVyID0gZGF5ICUgNztcbiAgdmFyIGRheUluZGV4ID0gKHJlbWFpbmRlciArIDcpICUgNztcbiAgdmFyIGRpZmYgPSAoZGF5SW5kZXggPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSBjdXJyZW50RGF5O1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrIGZyb20gXCIuLi9nZXRVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFVUQ0lTT1dlZWsoZGlydHlEYXRlLCBkaXJ0eUlTT1dlZWspIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBpc29XZWVrID0gdG9JbnRlZ2VyKGRpcnR5SVNPV2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0VVRDSVNPV2VlayhkYXRlKSAtIGlzb1dlZWs7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENXZWVrIGZyb20gXCIuLi9nZXRVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFVUQ1dlZWsoZGlydHlEYXRlLCBkaXJ0eVdlZWssIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB3ZWVrID0gdG9JbnRlZ2VyKGRpcnR5V2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0VVRDV2VlayhkYXRlLCBvcHRpb25zKSAtIHdlZWs7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IDE7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZ2V0VVRDSVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldFVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFyID0gZ2V0VVRDSVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZ2V0VVRDV2Vla1llYXIgZnJvbSBcIi4uL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcbiAgdmFyIHllYXIgPSBnZXRVVENXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9JbnRlZ2VyKGRpcnR5TnVtYmVyKSB7XG4gIGlmIChkaXJ0eU51bWJlciA9PT0gbnVsbCB8fCBkaXJ0eU51bWJlciA9PT0gdHJ1ZSB8fCBkaXJ0eU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBudW1iZXIgPSBOdW1iZXIoZGlydHlOdW1iZXIpO1xuICBpZiAoaXNOYU4obnVtYmVyKSkge1xuICAgIHJldHVybiBudW1iZXI7XG4gIH1cbiAgcmV0dXJuIG51bWJlciA8IDAgPyBNYXRoLmNlaWwobnVtYmVyKSA6IE1hdGguZmxvb3IobnVtYmVyKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1vbnRocyBmcm9tIFwiLi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqXG4gKiB8IEtleSAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IHllYXJzICAgICAgICAgIHwgQW1vdW50IG9mIHllYXJzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IG1vbnRocyAgICAgICAgIHwgQW1vdW50IG9mIG1vbnRocyB0byBiZSBhZGRlZCAgICAgICB8XG4gKiB8IHdlZWtzICAgICAgICAgIHwgQW1vdW50IG9mIHdlZWtzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IGRheXMgICAgICAgICAgIHwgQW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQgICAgICAgICB8XG4gKiB8IGhvdXJzICAgICAgICAgIHwgQW1vdW50IG9mIGhvdXJzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IG1pbnV0ZXMgICAgICAgIHwgQW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgYWRkZWQgICAgICB8XG4gKiB8IHNlY29uZHMgICAgICAgIHwgQW1vdW50IG9mIHNlY29uZHMgdG8gYmUgYWRkZWQgICAgICB8XG4gKlxuICogQWxsIHZhbHVlcyBkZWZhdWx0IHRvIDBcbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIHRoZSBmb2xsb3dpbmcgZHVyYXRpb24gdG8gMSBTZXB0ZW1iZXIgMjAxNCwgMTA6MTk6NTBcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZChuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMCwgMTksIDUwKSwge1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwLFxuICogfSlcbiAqIC8vPT4gVGh1IEp1biAxNSAyMDE3IDE1OjI5OjIwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZChkaXJ0eURhdGUsIGR1cmF0aW9uKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICBpZiAoIWR1cmF0aW9uIHx8IF90eXBlb2YoZHVyYXRpb24pICE9PSAnb2JqZWN0JykgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciB5ZWFycyA9IGR1cmF0aW9uLnllYXJzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLnllYXJzKSA6IDA7XG4gIHZhciBtb250aHMgPSBkdXJhdGlvbi5tb250aHMgPyB0b0ludGVnZXIoZHVyYXRpb24ubW9udGhzKSA6IDA7XG4gIHZhciB3ZWVrcyA9IGR1cmF0aW9uLndlZWtzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLndlZWtzKSA6IDA7XG4gIHZhciBkYXlzID0gZHVyYXRpb24uZGF5cyA/IHRvSW50ZWdlcihkdXJhdGlvbi5kYXlzKSA6IDA7XG4gIHZhciBob3VycyA9IGR1cmF0aW9uLmhvdXJzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLmhvdXJzKSA6IDA7XG4gIHZhciBtaW51dGVzID0gZHVyYXRpb24ubWludXRlcyA/IHRvSW50ZWdlcihkdXJhdGlvbi5taW51dGVzKSA6IDA7XG4gIHZhciBzZWNvbmRzID0gZHVyYXRpb24uc2Vjb25kcyA/IHRvSW50ZWdlcihkdXJhdGlvbi5zZWNvbmRzKSA6IDA7XG5cbiAgLy8gQWRkIHllYXJzIGFuZCBtb250aHNcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRhdGVXaXRoTW9udGhzID0gbW9udGhzIHx8IHllYXJzID8gYWRkTW9udGhzKGRhdGUsIG1vbnRocyArIHllYXJzICogMTIpIDogZGF0ZTtcblxuICAvLyBBZGQgd2Vla3MgYW5kIGRheXNcbiAgdmFyIGRhdGVXaXRoRGF5cyA9IGRheXMgfHwgd2Vla3MgPyBhZGREYXlzKGRhdGVXaXRoTW9udGhzLCBkYXlzICsgd2Vla3MgKiA3KSA6IGRhdGVXaXRoTW9udGhzO1xuXG4gIC8vIEFkZCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kc1xuICB2YXIgbWludXRlc1RvQWRkID0gbWludXRlcyArIGhvdXJzICogNjA7XG4gIHZhciBzZWNvbmRzVG9BZGQgPSBzZWNvbmRzICsgbWludXRlc1RvQWRkICogNjA7XG4gIHZhciBtc1RvQWRkID0gc2Vjb25kc1RvQWRkICogMTAwMDtcbiAgdmFyIGZpbmFsRGF0ZSA9IG5ldyBEYXRlKGRhdGVXaXRoRGF5cy5nZXRUaW1lKCkgKyBtc1RvQWRkKTtcbiAgcmV0dXJuIGZpbmFsRGF0ZTtcbn0iLCJpbXBvcnQgaXNXZWVrZW5kIGZyb20gXCIuLi9pc1dlZWtlbmQvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTdW5kYXkgZnJvbSBcIi4uL2lzU3VuZGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTYXR1cmRheSBmcm9tIFwiLi4vaXNTYXR1cmRheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRCdXNpbmVzc0RheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnVzaW5lc3MgZGF5cyAobW9uIC0gZnJpKSB0byB0aGUgZ2l2ZW4gZGF0ZSwgaWdub3Jpbmcgd2Vla2VuZHMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGJ1c2luZXNzIGRheXMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgYnVzaW5lc3MgZGF5cyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgYnVzaW5lc3MgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkQnVzaW5lc3NEYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gTW9uIFNlcCAxNSAyMDE0IDAwOjAwOjAwIChza2lwcGVkIHdlZWtlbmQgZGF5cylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQnVzaW5lc3NEYXlzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzdGFydGVkT25XZWVrZW5kID0gaXNXZWVrZW5kKGRhdGUpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gIHZhciBzaWduID0gYW1vdW50IDwgMCA/IC0xIDogMTtcbiAgdmFyIGZ1bGxXZWVrcyA9IHRvSW50ZWdlcihhbW91bnQgLyA1KTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZnVsbFdlZWtzICogNyk7XG5cbiAgLy8gR2V0IHJlbWFpbmluZyBkYXlzIG5vdCBwYXJ0IG9mIGEgZnVsbCB3ZWVrXG4gIHZhciByZXN0RGF5cyA9IE1hdGguYWJzKGFtb3VudCAlIDUpO1xuXG4gIC8vIExvb3BzIG92ZXIgcmVtYWluaW5nIGRheXNcbiAgd2hpbGUgKHJlc3REYXlzID4gMCkge1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHNpZ24pO1xuICAgIGlmICghaXNXZWVrZW5kKGRhdGUpKSByZXN0RGF5cyAtPSAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGRhdGUgaXMgYSB3ZWVrZW5kIGRheSBhbmQgd2UgcmVkdWNlIGEgZGl2aWRhYmxlIG9mXG4gIC8vIDUgZnJvbSBpdCwgd2UgbGFuZCBvbiBhIHdlZWtlbmQgZGF0ZS5cbiAgLy8gVG8gY291bnRlciB0aGlzLCB3ZSBhZGQgZGF5cyBhY2NvcmRpbmdseSB0byBsYW5kIG9uIHRoZSBuZXh0IGJ1c2luZXNzIGRheVxuICBpZiAoc3RhcnRlZE9uV2Vla2VuZCAmJiBpc1dlZWtlbmQoZGF0ZSkgJiYgYW1vdW50ICE9PSAwKSB7XG4gICAgLy8gSWYgd2UncmUgcmVkdWNpbmcgZGF5cywgd2Ugd2FudCB0byBhZGQgZGF5cyB1bnRpbCB3ZSBsYW5kIG9uIGEgd2Vla2RheVxuICAgIC8vIElmIHdlJ3JlIGFkZGluZyBkYXlzIHdlIHdhbnQgdG8gcmVkdWNlIGRheXMgdW50aWwgd2UgbGFuZCBvbiBhIHdlZWtkYXlcbiAgICBpZiAoaXNTYXR1cmRheShkYXRlKSkgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgKHNpZ24gPCAwID8gMiA6IC0xKSk7XG4gICAgaWYgKGlzU3VuZGF5KGRhdGUpKSBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAoc2lnbiA8IDAgPyAxIDogLTIpKTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgaG91cnMgdG8gYXZvaWQgRFNUIGxhZ1xuICBkYXRlLnNldEhvdXJzKGhvdXJzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAtIDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZERheXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIGlmIChpc05hTihhbW91bnQpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIGRheXMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgYW1vdW50KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgYWRkSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDIgaG91cnMgdG8gMTAgSnVseSAyMDE0IDIzOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDIzLCAwKSwgMilcbiAqIC8vPT4gRnJpIEp1bCAxMSAyMDE0IDAxOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZEhvdXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgYW1vdW50ICogTUlMTElTRUNPTkRTX0lOX0hPVVIpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL3NldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRJU09XZWVrWWVhcnNcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHRvIDIgSnVseSAyMDEwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkSVNPV2Vla1llYXJzKG5ldyBEYXRlKDIwMTAsIDYsIDIpLCA1KVxuICogLy89PiBGcmkgSnVuIDI2IDIwMTUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkSVNPV2Vla1llYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gc2V0SVNPV2Vla1llYXIoZGlydHlEYXRlLCBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGUpICsgYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNzUwIG1pbGxpc2Vjb25kcyB0byAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzAuNzUwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgdGltZXN0YW1wID0gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0VGltZSgpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcCArIGFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDA7XG5cbi8qKlxuICogQG5hbWUgYWRkTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtaW51dGVzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDMwIG1pbnV0ZXMgdG8gMTAgSnVseSAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDApLCAzMClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjMwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZE1pbnV0ZXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBhbW91bnQgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRNb250aHNcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbW9udGhzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRocyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNSBtb250aHMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1vbnRocyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gU3VuIEZlYiAwMSAyMDE1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZE1vbnRocyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgbW9udGhzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHZhciBkYXlPZk1vbnRoID0gZGF0ZS5nZXREYXRlKCk7XG5cbiAgLy8gVGhlIEpTIERhdGUgb2JqZWN0IHN1cHBvcnRzIGRhdGUgbWF0aCBieSBhY2NlcHRpbmcgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgZm9yXG4gIC8vIG1vbnRoLCBkYXksIGV0Yy4gRm9yIGV4YW1wbGUsIG5ldyBEYXRlKDIwMjAsIDAsIDApIHJldHVybnMgMzEgRGVjIDIwMTkgYW5kXG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAxKSByZXR1cm5zIDEgRmViIDIwMjEuICBUaGlzIGlzICphbG1vc3QqIHRoZSBiZWhhdmlvciB3ZVxuICAvLyB3YW50IGV4Y2VwdCB0aGF0IGRhdGVzIHdpbGwgd3JhcCBhcm91bmQgdGhlIGVuZCBvZiBhIG1vbnRoLCBtZWFuaW5nIHRoYXRcbiAgLy8gbmV3IERhdGUoMjAyMCwgMTMsIDMxKSB3aWxsIHJldHVybiAzIE1hciAyMDIxIG5vdCAyOCBGZWIgMjAyMSBhcyBkZXNpcmVkLiBTb1xuICAvLyB3ZSdsbCBkZWZhdWx0IHRvIHRoZSBlbmQgb2YgdGhlIGRlc2lyZWQgbW9udGggYnkgYWRkaW5nIDEgdG8gdGhlIGRlc2lyZWRcbiAgLy8gbW9udGggYW5kIHVzaW5nIGEgZGF0ZSBvZiAwIHRvIGJhY2sgdXAgb25lIGRheSB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoLlxuICB2YXIgZW5kT2ZEZXNpcmVkTW9udGggPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gIGVuZE9mRGVzaXJlZE1vbnRoLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIGFtb3VudCArIDEsIDApO1xuICB2YXIgZGF5c0luTW9udGggPSBlbmRPZkRlc2lyZWRNb250aC5nZXREYXRlKCk7XG4gIGlmIChkYXlPZk1vbnRoID49IGRheXNJbk1vbnRoKSB7XG4gICAgLy8gSWYgd2UncmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHRoZSBtb250aCwgdGhlbiB0aGlzIGlzIHRoZSBjb3JyZWN0IGRhdGVcbiAgICAvLyBhbmQgd2UncmUgZG9uZS5cbiAgICByZXR1cm4gZW5kT2ZEZXNpcmVkTW9udGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSBub3cga25vdyB0aGF0IHNldHRpbmcgdGhlIG9yaWdpbmFsIGRheS1vZi1tb250aCB2YWx1ZSB3b24ndFxuICAgIC8vIGNhdXNlIGFuIG92ZXJmbG93LCBzbyBzZXQgdGhlIGRlc2lyZWQgZGF5LW9mLW1vbnRoLiBOb3RlIHRoYXQgd2UgY2FuJ3RcbiAgICAvLyBqdXN0IHNldCB0aGUgZGF0ZSBvZiBgZW5kT2ZEZXNpcmVkTW9udGhgIGJlY2F1c2UgdGhhdCBvYmplY3QgbWF5IGhhdmUgaGFkXG4gICAgLy8gaXRzIHRpbWUgY2hhbmdlZCBpbiB0aGUgdW51c3VhbCBjYXNlIHdoZXJlIHdoZXJlIGEgRFNUIHRyYW5zaXRpb24gd2FzIG9uXG4gICAgLy8gdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aCBhbmQgaXRzIGxvY2FsIHRpbWUgd2FzIGluIHRoZSBob3VyIHNraXBwZWQgb3JcbiAgICAvLyByZXBlYXRlZCBuZXh0IHRvIGEgRFNUIHRyYW5zaXRpb24uICBTbyB3ZSB1c2UgYGRhdGVgIGluc3RlYWQgd2hpY2ggaXNcbiAgICAvLyBndWFyYW50ZWVkIHRvIHN0aWxsIGhhdmUgdGhlIG9yaWdpbmFsIHRpbWUuXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihlbmRPZkRlc2lyZWRNb250aC5nZXRGdWxsWWVhcigpLCBlbmRPZkRlc2lyZWRNb250aC5nZXRNb250aCgpLCBkYXlPZk1vbnRoKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhciBxdWFydGVycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBxdWFydGVycyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBxdWFydGVycyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMSBxdWFydGVyIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRRdWFydGVycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFF1YXJ0ZXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICB2YXIgbW9udGhzID0gYW1vdW50ICogMztcbiAgcmV0dXJuIGFkZE1vbnRocyhkaXJ0eURhdGUsIG1vbnRocyk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkU2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDMwIHNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRTZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgYW1vdW50ICogMTAwMCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRXZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHdlZWtzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA0IHdlZWtzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPT4gTW9uIFNlcCAyOSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFdlZWtzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICB2YXIgZGF5cyA9IGFtb3VudCAqIDc7XG4gIHJldHVybiBhZGREYXlzKGRpcnR5RGF0ZSwgZGF5cyk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNb250aHMgZnJvbSBcIi4uL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgeWVhcnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgeWVhcnMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgeWVhcnMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFllYXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA1KVxuICogLy89PiBTdW4gU2VwIDAxIDIwMTkgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkWWVhcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNb250aHMoZGlydHlEYXRlLCBhbW91bnQgKiAxMik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhcmVJbnRlcnZhbHNPdmVybGFwcGluZ1xuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB0aW1lIGludGVydmFsIG92ZXJsYXBwaW5nIHdpdGggYW5vdGhlciB0aW1lIGludGVydmFsP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIHRpbWUgaW50ZXJ2YWwgb3ZlcmxhcHBpbmcgd2l0aCBhbm90aGVyIHRpbWUgaW50ZXJ2YWw/IEFkamFjZW50IGludGVydmFscyBkbyBub3QgY291bnQgYXMgb3ZlcmxhcHBpbmcuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxMZWZ0IC0gdGhlIGZpcnN0IGludGVydmFsIHRvIGNvbXBhcmUuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbFJpZ2h0IC0gdGhlIHNlY29uZCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmluY2x1c2l2ZT1mYWxzZV0gLSB3aGV0aGVyIHRoZSBjb21wYXJpc29uIGlzIGluY2x1c2l2ZSBvciBub3RcbiAqIEByZXR1cm5zIHtCb29sZWFufSB3aGV0aGVyIHRoZSB0aW1lIGludGVydmFscyBhcmUgb3ZlcmxhcHBpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIG92ZXJsYXBwaW5nIHRpbWUgaW50ZXJ2YWxzOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTcpLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIxKSB9XG4gKiApXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIG5vbi1vdmVybGFwcGluZyB0aW1lIGludGVydmFsczpcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIxKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMikgfVxuICogKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYWRqYWNlbnQgdGltZSBpbnRlcnZhbHM6XG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMzApIH1cbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNpbmcgdGhlIGluY2x1c2l2ZSBvcHRpb246XG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjQpIH1cbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyNCkgfSxcbiAqICAgeyBpbmNsdXNpdmU6IHRydWUgfVxuICogKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFyZUludGVydmFsc092ZXJsYXBwaW5nKGludGVydmFsTGVmdCwgaW50ZXJ2YWxSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGxlZnRTdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxMZWZ0ID09PSBudWxsIHx8IGludGVydmFsTGVmdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW50ZXJ2YWxMZWZ0LnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciBsZWZ0RW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbExlZnQgPT09IG51bGwgfHwgaW50ZXJ2YWxMZWZ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbExlZnQuZW5kKS5nZXRUaW1lKCk7XG4gIHZhciByaWdodFN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbFJpZ2h0ID09PSBudWxsIHx8IGludGVydmFsUmlnaHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludGVydmFsUmlnaHQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0RW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbFJpZ2h0ID09PSBudWxsIHx8IGludGVydmFsUmlnaHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludGVydmFsUmlnaHQuZW5kKS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEobGVmdFN0YXJ0VGltZSA8PSBsZWZ0RW5kVGltZSAmJiByaWdodFN0YXJ0VGltZSA8PSByaWdodEVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5pbmNsdXNpdmUpIHtcbiAgICByZXR1cm4gbGVmdFN0YXJ0VGltZSA8PSByaWdodEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPD0gbGVmdEVuZFRpbWU7XG4gIH1cbiAgcmV0dXJuIGxlZnRTdGFydFRpbWUgPCByaWdodEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPCBsZWZ0RW5kVGltZTtcbn0iLCJpbXBvcnQgbWF4IGZyb20gXCIuLi9tYXgvaW5kZXguanNcIjtcbmltcG9ydCBtaW4gZnJvbSBcIi4uL21pbi9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY2xhbXBcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gYSBkYXRlIGJvdW5kZWQgYnkgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSBnaXZlbiBpbnRlcnZhbFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ2xhbXBzIGEgZGF0ZSB0byB0aGUgbG93ZXIgYm91bmQgd2l0aCB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgdXBwZXJcbiAqIGJvdW5kIHdpdGggdGhlIGVuZCBvZiB0aGUgaW50ZXJ2YWwuXG4gKlxuICogLSBXaGVuIHRoZSBkYXRlIGlzIGxlc3MgdGhhbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsLCB0aGUgc3RhcnQgaXMgcmV0dXJuZWQuXG4gKiAtIFdoZW4gdGhlIGRhdGUgaXMgZ3JlYXRlciB0aGFuIHRoZSBlbmQgb2YgdGhlIGludGVydmFsLCB0aGUgZW5kIGlzIHJldHVybmVkLlxuICogLSBPdGhlcndpc2UgdGhlIGRhdGUgaXMgcmV0dXJuZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgTWFyLCAyMSwgMjAyMSBib3VuZGVkIHRvIGFuIGludGVydmFsIHN0YXJ0aW5nIGF0IE1hciwgMjIsIDIwMjEgYW5kIGVuZGluZyBhdCBBcHIsIDAxLCAyMDIxXG4gKiBjb25zdCByZXN1bHQgPSBjbGFtcChuZXcgRGF0ZSgyMDIxLCAyLCAyMSksIHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjEsIDIsIDIyKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDIxLCAzLCAxKSxcbiAqIH0pXG4gKiAvLz0+IE1vbiBNYXIgMjIgMjAyMSAwMDowMDowMFxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGJvdW5kZWRcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsIHRvIGJvdW5kIHRvXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGRhdGUgYm91bmRlZCBieSB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIGludGVydmFsXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsYW1wKGRhdGUsIF9yZWYpIHtcbiAgdmFyIHN0YXJ0ID0gX3JlZi5zdGFydCxcbiAgICBlbmQgPSBfcmVmLmVuZDtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBtaW4oW21heChbZGF0ZSwgc3RhcnRdKSwgZW5kXSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjbG9zZXN0SW5kZXhUb1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gYW4gaW5kZXggb2YgdGhlIGNsb3Nlc3QgZGF0ZSBmcm9tIHRoZSBhcnJheSBjb21wYXJpbmcgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gYW4gaW5kZXggb2YgdGhlIGNsb3Nlc3QgZGF0ZSBmcm9tIHRoZSBhcnJheSBjb21wYXJpbmcgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgTnVtYmVyfSBkYXRlVG9Db21wYXJlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge0FycmF5PERhdGU+IHwgQXJyYXk8bnVtYmVyPn0gZGF0ZXNBcnJheSAtIHRoZSBhcnJheSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHtOdW1iZXIgfCB1bmRlZmluZWR9IGFuIGluZGV4IG9mIHRoZSBkYXRlIGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUgb3IgdW5kZWZpbmVkIGlmIG5vIHZhbGlkIHZhbHVlIGlzIGdpdmVuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRhdGUgaXMgY2xvc2VyIHRvIDYgU2VwdGVtYmVyIDIwMTU/XG4gKiBjb25zdCBkYXRlVG9Db21wYXJlID0gbmV3IERhdGUoMjAxNSwgOCwgNilcbiAqIGNvbnN0IGRhdGVzQXJyYXkgPSBbXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE2LCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxNywgMCwgMSlcbiAqIF1cbiAqIGNvbnN0IHJlc3VsdCA9IGNsb3Nlc3RJbmRleFRvKGRhdGVUb0NvbXBhcmUsIGRhdGVzQXJyYXkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvc2VzdEluZGV4VG8oZGlydHlEYXRlVG9Db21wYXJlLCBkaXJ0eURhdGVzQXJyYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSk7XG4gIGlmIChpc05hTihOdW1iZXIoZGF0ZVRvQ29tcGFyZSkpKSByZXR1cm4gTmFOO1xuICB2YXIgdGltZVRvQ29tcGFyZSA9IGRhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xuICB2YXIgZGF0ZXNBcnJheTtcbiAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgdW5kZWZpbmVkIG9yIG51bGxcbiAgaWYgKGRpcnR5RGF0ZXNBcnJheSA9PSBudWxsKSB7XG4gICAgZGF0ZXNBcnJheSA9IFtdO1xuXG4gICAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXksIFNldCBvciBNYXAsIG9yIG9iamVjdCB3aXRoIGN1c3RvbSBgZm9yRWFjaGAgbWV0aG9kXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpcnR5RGF0ZXNBcnJheS5mb3JFYWNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0ZXNBcnJheSA9IGRpcnR5RGF0ZXNBcnJheTtcblxuICAgIC8vIElmIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LWxpa2UgT2JqZWN0LCBjb252ZXJ0IHRvIEFycmF5LiBPdGhlcndpc2UsIG1ha2UgaXQgZW1wdHkgQXJyYXlcbiAgfSBlbHNlIHtcbiAgICBkYXRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGlydHlEYXRlc0FycmF5KTtcbiAgfVxuICB2YXIgcmVzdWx0O1xuICB2YXIgbWluRGlzdGFuY2U7XG4gIGRhdGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZGlydHlEYXRlLCBpbmRleCkge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGlmIChpc05hTihOdW1iZXIoY3VycmVudERhdGUpKSkge1xuICAgICAgcmVzdWx0ID0gTmFOO1xuICAgICAgbWluRGlzdGFuY2UgPSBOYU47XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBkaXN0YW5jZSA9IE1hdGguYWJzKHRpbWVUb0NvbXBhcmUgLSBjdXJyZW50RGF0ZS5nZXRUaW1lKCkpO1xuICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCBkaXN0YW5jZSA8IE51bWJlcihtaW5EaXN0YW5jZSkpIHtcbiAgICAgIHJlc3VsdCA9IGluZGV4O1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY2xvc2VzdFRvXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiBhIGRhdGUgZnJvbSB0aGUgYXJyYXkgY2xvc2VzdCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiBhIGRhdGUgZnJvbSB0aGUgYXJyYXkgY2xvc2VzdCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7QXJyYXk8RGF0ZT4gfCBBcnJheTxudW1iZXI+fSBkYXRlc0FycmF5IC0gdGhlIGFycmF5IHRvIHNlYXJjaFxuICogQHJldHVybnMge0RhdGUgfCB1bmRlZmluZWR9IHRoZSBkYXRlIGZyb20gdGhlIGFycmF5IGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUgb3IgdW5kZWZpbmVkIGlmIG5vIHZhbGlkIHZhbHVlIGlzIGdpdmVuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRhdGUgaXMgY2xvc2VyIHRvIDYgU2VwdGVtYmVyIDIwMTU6IDEgSmFudWFyeSAyMDAwIG9yIDEgSmFudWFyeSAyMDMwP1xuICogY29uc3QgZGF0ZVRvQ29tcGFyZSA9IG5ldyBEYXRlKDIwMTUsIDgsIDYpXG4gKiBjb25zdCByZXN1bHQgPSBjbG9zZXN0VG8oZGF0ZVRvQ29tcGFyZSwgW1xuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAzMCwgMCwgMSlcbiAqIF0pXG4gKiAvLz0+IFR1ZSBKYW4gMDEgMjAzMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbG9zZXN0VG8oZGlydHlEYXRlVG9Db21wYXJlLCBkaXJ0eURhdGVzQXJyYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSk7XG4gIGlmIChpc05hTihOdW1iZXIoZGF0ZVRvQ29tcGFyZSkpKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIHRpbWVUb0NvbXBhcmUgPSBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIHVuZGVmaW5lZCBvciBudWxsXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgPT0gbnVsbCkge1xuICAgIGRhdGVzQXJyYXkgPSBbXTtcblxuICAgIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG5cbiAgICAvLyBJZiBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheS1saWtlIE9iamVjdCwgY29udmVydCB0byBBcnJheS4gT3RoZXJ3aXNlLCBtYWtlIGl0IGVtcHR5IEFycmF5XG4gIH0gZWxzZSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgdmFyIG1pbkRpc3RhbmNlO1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSkge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGlmIChpc05hTihOdW1iZXIoY3VycmVudERhdGUpKSkge1xuICAgICAgcmVzdWx0ID0gbmV3IERhdGUoTmFOKTtcbiAgICAgIG1pbkRpc3RhbmNlID0gTmFOO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLmFicyh0aW1lVG9Db21wYXJlIC0gY3VycmVudERhdGUuZ2V0VGltZSgpKTtcbiAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgZGlzdGFuY2UgPCBOdW1iZXIobWluRGlzdGFuY2UpKSB7XG4gICAgICByZXN1bHQgPSBjdXJyZW50RGF0ZTtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNvbXBhcmVBc2NcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gLTEsIDAgb3IgMS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIDEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAqIC0xIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIG9yIDAgaWYgZGF0ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb25cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29tcGFyZSAxMSBGZWJydWFyeSAxOTg3IGFuZCAxMCBKdWx5IDE5ODk6XG4gKiBjb25zdCByZXN1bHQgPSBjb21wYXJlQXNjKG5ldyBEYXRlKDE5ODcsIDEsIDExKSwgbmV3IERhdGUoMTk4OSwgNiwgMTApKVxuICogLy89PiAtMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTb3J0IHRoZSBhcnJheSBvZiBkYXRlczpcbiAqIGNvbnN0IHJlc3VsdCA9IFtcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApXG4gKiBdLnNvcnQoY29tcGFyZUFzYylcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgRmViIDExIDE5ODcgMDA6MDA6MDAsXG4gKiAvLyAgIE1vbiBKdWwgMTAgMTk4OSAwMDowMDowMCxcbiAqIC8vICAgU3VuIEp1bCAwMiAxOTk1IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBhcmVBc2MoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBkaWZmID0gZGF0ZUxlZnQuZ2V0VGltZSgpIC0gZGF0ZVJpZ2h0LmdldFRpbWUoKTtcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNvbXBhcmVEZXNjXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbXBhcmUgdGhlIHR3byBkYXRlcyByZXZlcnNlIGNocm9ub2xvZ2ljYWxseSBhbmQgcmV0dXJuIC0xLCAwIG9yIDEuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kLFxuICogMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBvciAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbXBhcmUgMTEgRmVicnVhcnkgMTk4NyBhbmQgMTAgSnVseSAxOTg5IHJldmVyc2UgY2hyb25vbG9naWNhbGx5OlxuICogY29uc3QgcmVzdWx0ID0gY29tcGFyZURlc2MobmV3IERhdGUoMTk4NywgMSwgMTEpLCBuZXcgRGF0ZSgxOTg5LCA2LCAxMCkpXG4gKiAvLz0+IDFcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU29ydCB0aGUgYXJyYXkgb2YgZGF0ZXMgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyOlxuICogY29uc3QgcmVzdWx0ID0gW1xuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMClcbiAqIF0uc29ydChjb21wYXJlRGVzYylcbiAqIC8vPT4gW1xuICogLy8gICBTdW4gSnVsIDAyIDE5OTUgMDA6MDA6MDAsXG4gKiAvLyAgIE1vbiBKdWwgMTAgMTk4OSAwMDowMDowMCxcbiAqIC8vICAgV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBhcmVEZXNjKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgZGlmZiA9IGRhdGVMZWZ0LmdldFRpbWUoKSAtIGRhdGVSaWdodC5nZXRUaW1lKCk7XG4gIGlmIChkaWZmID4gMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmIDwgMCkge1xuICAgIHJldHVybiAxO1xuICAgIC8vIFJldHVybiAwIGlmIGRpZmYgaXMgMDsgcmV0dXJuIE5hTiBpZiBkaWZmIGlzIE5hTlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59IiwiLyoqXG4gKiBEYXlzIGluIDEgd2Vlay5cbiAqXG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIERheXMgaW4gMSB5ZWFyXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqID4gTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqID4gMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqXG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICpcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICpcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICpcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBNaW51dGVzIGluIDEgaG91clxuICpcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIE1vbnRocyBpbiAxIHF1YXJ0ZXJcbiAqXG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBNb250aHMgaW4gMSB5ZWFyXG4gKlxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIFF1YXJ0ZXJzIGluIDEgeWVhclxuICpcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgaG91clxuICpcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIG1pbnV0ZVxuICpcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgZGF5XG4gKlxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgd2Vla1xuICpcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIHllYXJcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBtb250aFxuICpcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBxdWFydGVyXG4gKlxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzOyIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkYXlzSW5XZWVrIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkYXlzVG9XZWVrc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBkYXlzIHRvIHdlZWtzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBkYXlzIHRvIGEgZnVsbCBudW1iZXIgb2Ygd2Vla3MuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRheXMgLSBudW1iZXIgb2YgZGF5cyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgY29udmVydGVkIGluIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxNCBkYXlzIHRvIHdlZWtzOlxuICogY29uc3QgcmVzdWx0ID0gZGF5c1RvV2Vla3MoMTQpXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IGRheXNUb1dlZWtzKDEzKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRheXNUb1dlZWtzKGRheXMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB3ZWVrcyA9IGRheXMgLyBkYXlzSW5XZWVrO1xuICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrcyk7XG59IiwiaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IGlzV2Vla2VuZCBmcm9tIFwiLi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgYnVzaW5lc3MgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzIGRheSBwZXJpb2RzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICogQnVzaW5lc3MgZGF5cyBiZWluZyBkYXlzIHRoYXQgYXJlbnQgaW4gdGhlIHdlZWtlbmQuXG4gKiBMaWtlIGBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNgLCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgdGltZXMgZnJvbVxuICogdGhlIGRhdGVzIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgYnVzaW5lc3MgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMTAgSmFudWFyeSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgMCwgMTApXG4gKiApXG4gKiAvLz0+IDEzNlxuICpcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDMwIE5vdmVtYmVyIDIwMjEgYW5kIDEgTm92ZW1iZXIgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyhcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDMwKSxcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDEpXG4gKiApXG4gKiAvLz0+IDIxXG4gKlxuICogLy8gSG93IG1hbnkgYnVzaW5lc3MgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBOb3ZlbWJlciAyMDIxIGFuZCAxIERlY2VtYmVyIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMSwgMTEsIDEpXG4gKiApXG4gKiAvLz0+IC0yMlxuICpcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEgTm92ZW1iZXIgMjAyMSBhbmQgMSBOb3ZlbWJlciAyMDIxID9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyhcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMSlcbiAqIClcbiAqIC8vPT4gMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIGlmICghaXNWYWxpZChkYXRlTGVmdCkgfHwgIWlzVmFsaWQoZGF0ZVJpZ2h0KSkgcmV0dXJuIE5hTjtcbiAgdmFyIGNhbGVuZGFyRGlmZmVyZW5jZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjYWxlbmRhckRpZmZlcmVuY2UgPCAwID8gLTEgOiAxO1xuICB2YXIgd2Vla3MgPSB0b0ludGVnZXIoY2FsZW5kYXJEaWZmZXJlbmNlIC8gNyk7XG4gIHZhciByZXN1bHQgPSB3ZWVrcyAqIDU7XG4gIGRhdGVSaWdodCA9IGFkZERheXMoZGF0ZVJpZ2h0LCB3ZWVrcyAqIDcpO1xuXG4gIC8vIHRoZSBsb29wIGJlbG93IHdpbGwgcnVuIGF0IG1vc3QgNiB0aW1lcyB0byBhY2NvdW50IGZvciB0aGUgcmVtYWluaW5nIGRheXMgdGhhdCBkb24ndCBtYWtldXAgYSBmdWxsIHdlZWtcbiAgd2hpbGUgKCFpc1NhbWVEYXkoZGF0ZUxlZnQsIGRhdGVSaWdodCkpIHtcbiAgICAvLyBzaWduIGlzIHVzZWQgdG8gYWNjb3VudCBmb3IgYm90aCBuZWdhdGl2ZSBhbmQgcG9zaXRpdmUgZGlmZmVyZW5jZXNcbiAgICByZXN1bHQgKz0gaXNXZWVrZW5kKGRhdGVSaWdodCkgPyAwIDogc2lnbjtcbiAgICBkYXRlUmlnaHQgPSBhZGREYXlzKGRhdGVSaWdodCwgc2lnbik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59IiwiaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZEYXkgZnJvbSBcIi4uL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0RBWSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy4gVGhpcyBtZWFucyB0aGF0IHRoZSB0aW1lcyBhcmUgcmVtb3ZlZFxuICogZnJvbSB0aGUgZGF0ZXMgYW5kIHRoZW4gdGhlIGRpZmZlcmVuY2UgaW4gZGF5cyBpcyBjYWxjdWxhdGVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzowMDowMCBhbmQgMiBKdWx5IDIwMTIgMDA6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDYsIDIsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgMClcbiAqIClcbiAqIC8vPT4gMzY2XG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDMsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgNTkpXG4gKiApXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnRPZkRheUxlZnQgPSBzdGFydE9mRGF5KGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgc3RhcnRPZkRheVJpZ2h0ID0gc3RhcnRPZkRheShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciB0aW1lc3RhbXBMZWZ0ID0gc3RhcnRPZkRheUxlZnQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mRGF5TGVmdCk7XG4gIHZhciB0aW1lc3RhbXBSaWdodCA9IHN0YXJ0T2ZEYXlSaWdodC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZEYXlSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIGRheSBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIGRheSBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKCh0aW1lc3RhbXBMZWZ0IC0gdGltZXN0YW1wUmlnaHQpIC8gTUlMTElTRUNPTkRTX0lOX0RBWSk7XG59IiwiaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnNcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgMSBKYW51YXJ5IDIwMTAgYW5kIDEgSmFudWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDEwLCAwLCAxKVxuICogKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlTGVmdCkgLSBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGVSaWdodCk7XG59IiwiaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBJU08gd2Vla3MgYXJlIGJldHdlZW4gNiBKdWx5IDIwMTQgYW5kIDIxIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIxKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgNilcbiAqIClcbiAqIC8vPT4gM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnRPZklTT1dlZWtMZWZ0ID0gc3RhcnRPZklTT1dlZWsoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBzdGFydE9mSVNPV2Vla1JpZ2h0ID0gc3RhcnRPZklTT1dlZWsoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgdGltZXN0YW1wTGVmdCA9IHN0YXJ0T2ZJU09XZWVrTGVmdC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZJU09XZWVrTGVmdCk7XG4gIHZhciB0aW1lc3RhbXBSaWdodCA9IHN0YXJ0T2ZJU09XZWVrUmlnaHQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mSVNPV2Vla1JpZ2h0KTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIE1JTExJU0VDT05EU19JTl9XRUVLKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIG1vbnRocyBhcmUgYmV0d2VlbiAzMSBKYW51YXJ5IDIwMTQgYW5kIDEgU2VwdGVtYmVyIDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDAsIDMxKVxuICogKVxuICogLy89PiA4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgeWVhckRpZmYgPSBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aERpZmYgPSBkYXRlTGVmdC5nZXRNb250aCgpIC0gZGF0ZVJpZ2h0LmdldE1vbnRoKCk7XG4gIHJldHVybiB5ZWFyRGlmZiAqIDEyICsgbW9udGhEaWZmO1xufSIsImltcG9ydCBnZXRRdWFydGVyIGZyb20gXCIuLi9nZXRRdWFydGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHF1YXJ0ZXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgcXVhcnRlcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBxdWFydGVycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpXG4gKiApXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHllYXJEaWZmID0gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xuICB2YXIgcXVhcnRlckRpZmYgPSBnZXRRdWFydGVyKGRhdGVMZWZ0KSAtIGdldFF1YXJ0ZXIoZGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIHllYXJEaWZmICogNCArIHF1YXJ0ZXJEaWZmO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgd2Vla3MgYXJlIGJldHdlZW4gNSBKdWx5IDIwMTQgYW5kIDIwIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgNSlcbiAqIClcbiAqIC8vPT4gM1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LFxuICogLy8gaG93IG1hbnkgY2FsZW5kYXIgd2Vla3MgYXJlIGJldHdlZW4gNSBKdWx5IDIwMTQgYW5kIDIwIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgNSksXG4gKiAgIHsgd2Vla1N0YXJ0c09uOiAxIH1cbiAqIClcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnRPZldlZWtMZWZ0ID0gc3RhcnRPZldlZWsoZGlydHlEYXRlTGVmdCwgb3B0aW9ucyk7XG4gIHZhciBzdGFydE9mV2Vla1JpZ2h0ID0gc3RhcnRPZldlZWsoZGlydHlEYXRlUmlnaHQsIG9wdGlvbnMpO1xuICB2YXIgdGltZXN0YW1wTGVmdCA9IHN0YXJ0T2ZXZWVrTGVmdC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZXZWVrTGVmdCk7XG4gIHZhciB0aW1lc3RhbXBSaWdodCA9IHN0YXJ0T2ZXZWVrUmlnaHQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mV2Vla1JpZ2h0KTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIE1JTExJU0VDT05EU19JTl9XRUVLKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciB5ZWFycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAxMSBGZWJydWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhcbiAqICAgbmV3IERhdGUoMjAxNSwgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpXG4gKiApXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjsgLy8gTGlrZSBgY29tcGFyZUFzY2AgYnV0IHVzZXMgbG9jYWwgdGltZSBub3QgVVRDLCB3aGljaCBpcyBuZWVkZWRcbi8vIGZvciBhY2N1cmF0ZSBlcXVhbGl0eSBjb21wYXJpc29ucyBvZiBVVEMgdGltZXN0YW1wcyB0aGF0IGVuZCB1cFxuLy8gaGF2aW5nIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGluIGxvY2FsIHRpbWUsIGUuZy4gb25lIGhvdXIgYmVmb3JlXG4vLyBEU1QgZW5kcyB2cy4gdGhlIGluc3RhbnQgdGhhdCBEU1QgZW5kcy5cbmZ1bmN0aW9uIGNvbXBhcmVMb2NhbEFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIHZhciBkaWZmID0gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpIHx8IGRhdGVMZWZ0LmdldE1vbnRoKCkgLSBkYXRlUmlnaHQuZ2V0TW9udGgoKSB8fCBkYXRlTGVmdC5nZXREYXRlKCkgLSBkYXRlUmlnaHQuZ2V0RGF0ZSgpIHx8IGRhdGVMZWZ0LmdldEhvdXJzKCkgLSBkYXRlUmlnaHQuZ2V0SG91cnMoKSB8fCBkYXRlTGVmdC5nZXRNaW51dGVzKCkgLSBkYXRlUmlnaHQuZ2V0TWludXRlcygpIHx8IGRhdGVMZWZ0LmdldFNlY29uZHMoKSAtIGRhdGVSaWdodC5nZXRTZWNvbmRzKCkgfHwgZGF0ZUxlZnQuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xuICAgIHJldHVybiAxO1xuICAgIC8vIFJldHVybiAwIGlmIGRpZmYgaXMgMDsgcmV0dXJuIE5hTiBpZiBkaWZmIGlzIE5hTlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheSBwZXJpb2RzIGJldHdlZW4gdHdvIGRhdGVzLiBGcmFjdGlvbmFsIGRheXMgYXJlXG4gKiB0cnVuY2F0ZWQgdG93YXJkcyB6ZXJvLlxuICpcbiAqIE9uZSBcImZ1bGwgZGF5XCIgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gYSBsb2NhbCB0aW1lIGluIG9uZSBkYXkgdG8gdGhlIHNhbWVcbiAqIGxvY2FsIHRpbWUgb24gdGhlIG5leHQgb3IgcHJldmlvdXMgZGF5LiBBIGZ1bGwgZGF5IGNhbiBzb21ldGltZXMgYmUgbGVzcyB0aGFuXG4gKiBvciBtb3JlIHRoYW4gMjQgaG91cnMgaWYgYSBkYXlsaWdodCBzYXZpbmdzIGNoYW5nZSBoYXBwZW5zIGJldHdlZW4gdHdvIGRhdGVzLlxuICpcbiAqIFRvIGlnbm9yZSBEU1QgYW5kIG9ubHkgbWVhc3VyZSBleGFjdCAyNC1ob3VyIHBlcmlvZHMsIHVzZSB0aGlzIGluc3RlYWQ6XG4gKiBgTWF0aC5mbG9vcihkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KS8yNCl8MGAuXG4gKlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCBkYXlzIGFjY29yZGluZyB0byB0aGUgbG9jYWwgdGltZXpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzowMDowMCBhbmQgMiBKdWx5IDIwMTIgMDA6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz0+IDM2NVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAwXG4gKiAvLyBIb3cgbWFueSBmdWxsIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEgTWFyY2ggMjAyMCAwOjAwIGFuZCAxIEp1bmUgMjAyMCAwOjAwID9cbiAqIC8vIE5vdGU6IGJlY2F1c2UgbG9jYWwgdGltZSBpcyB1c2VkLCB0aGVcbiAqIC8vIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSA5MiBkYXlzLCBldmVuIGluXG4gKiAvLyB0aW1lIHpvbmVzIHdoZXJlIERTVCBzdGFydHMgYW5kIHRoZVxuICogLy8gcGVyaW9kIGhhcyBvbmx5IDkyKjI0LTEgaG91cnMuXG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDIwLCA1LCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMCwgMiwgMSlcbiAqIClcbi8vPT4gOTJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlTG9jYWxBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcbiAgZGF0ZUxlZnQuc2V0RGF0ZShkYXRlTGVmdC5nZXREYXRlKCkgLSBzaWduICogZGlmZmVyZW5jZSk7XG5cbiAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIGRheXMgLSBkaWZmIGluIGNhbGVuZGFyIGRheXMpID09PSAxIGlmIGxhc3QgY2FsZW5kYXIgZGF5IGlzIG5vdCBmdWxsXG4gIC8vIElmIHNvLCByZXN1bHQgbXVzdCBiZSBkZWNyZWFzZWQgYnkgMSBpbiBhYnNvbHV0ZSB2YWx1ZVxuICB2YXIgaXNMYXN0RGF5Tm90RnVsbCA9IE51bWJlcihjb21wYXJlTG9jYWxBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduKTtcbiAgdmFyIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIGlzTGFzdERheU5vdEZ1bGwpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59IiwiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGhvdXJzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDA2OjUwOjAwIGFuZCAyIEp1bHkgMjAxNCAxOTowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkhvdXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxOSwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDUwKVxuICogKVxuICogLy89PiAxMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHN1YklTT1dlZWtZZWFycyBmcm9tIFwiLi4vc3ViSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnNcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGFyZSBiZXR3ZWVuIDEgSmFudWFyeSAyMDEwIGFuZCAxIEphbnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbklTT1dlZWtZZWFycyhcbiAqICAgbmV3IERhdGUoMjAxMiwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTAsIDAsIDEpXG4gKiApXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgc2lnbiA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpO1xuICBkYXRlTGVmdCA9IHN1YklTT1dlZWtZZWFycyhkYXRlTGVmdCwgc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCBJU08geWVhcnMgLSBkaWZmIGluIGNhbGVuZGFyIElTTyB5ZWFycykgPT09IDFcbiAgLy8gaWYgbGFzdCBjYWxlbmRhciBJU08geWVhciBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgdmFyIGlzTGFzdElTT1dlZWtZZWFyTm90RnVsbCA9IE51bWJlcihjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAtc2lnbik7XG4gIHZhciByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3RJU09XZWVrWWVhck5vdEZ1bGwpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWlsbGlzZWNvbmRzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxNCAxMjozMDoyMC42MDAgYW5kIDIgSnVseSAyMDE0IDEyOjMwOjIxLjcwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMSwgNzAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgNjAwKVxuICogKVxuICogLy89PiAxMTAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRhdGVMZWZ0KS5nZXRUaW1lKCkgLSB0b0RhdGUoZGF0ZVJpZ2h0KS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5NaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHNpZ25lZCBudW1iZXIgb2YgZnVsbCAocm91bmRlZCB0b3dhcmRzIDApIG1pbnV0ZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWludXRlcyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAxMjowNzo1OSBhbmQgMiBKdWx5IDIwMTQgMTI6MjA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMjAsIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgNywgNTkpXG4gKiApXG4gKiAvLz0+IDEyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbnV0ZXMgYXJlIGJldHdlZW4gMTA6MDE6NTkgYW5kIDEwOjAwOjAwXG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMDAsIDAsIDEsIDEwLCAxLCA1OSlcbiAqIClcbiAqIC8vPT4gLTFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluTWludXRlcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luTWludXRlO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzTGFzdERheU9mTW9udGggZnJvbSBcIi4uL2lzTGFzdERheU9mTW9udGgvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyB1c2luZyB0cnVuYyBhcyBhIGRlZmF1bHQgcm91bmRpbmcgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTW9udGhzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCBuZXcgRGF0ZSgyMDE0LCAwLCAzMSkpXG4gKiAvLz0+IDdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluTW9udGhzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgc2lnbiA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpO1xuICB2YXIgcmVzdWx0O1xuXG4gIC8vIENoZWNrIGZvciB0aGUgZGlmZmVyZW5jZSBvZiBsZXNzIHRoYW4gbW9udGhcbiAgaWYgKGRpZmZlcmVuY2UgPCAxKSB7XG4gICAgcmVzdWx0ID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZGF0ZUxlZnQuZ2V0TW9udGgoKSA9PT0gMSAmJiBkYXRlTGVmdC5nZXREYXRlKCkgPiAyNykge1xuICAgICAgLy8gVGhpcyB3aWxsIGNoZWNrIGlmIHRoZSBkYXRlIGlzIGVuZCBvZiBGZWIgYW5kIGFzc2lnbiBhIGhpZ2hlciBlbmQgb2YgbW9udGggZGF0ZVxuICAgICAgLy8gdG8gY29tcGFyZSBpdCB3aXRoIEphblxuICAgICAgZGF0ZUxlZnQuc2V0RGF0ZSgzMCk7XG4gICAgfVxuICAgIGRhdGVMZWZ0LnNldE1vbnRoKGRhdGVMZWZ0LmdldE1vbnRoKCkgLSBzaWduICogZGlmZmVyZW5jZSk7XG5cbiAgICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgbW9udGhzIC0gZGlmZiBpbiBjYWxlbmRhciBtb250aHMpID09PSAxIGlmIGxhc3QgY2FsZW5kYXIgbW9udGggaXMgbm90IGZ1bGxcbiAgICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgICB2YXIgaXNMYXN0TW9udGhOb3RGdWxsID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gLXNpZ247XG5cbiAgICAvLyBDaGVjayBmb3IgY2FzZXMgb2Ygb25lIGZ1bGwgY2FsZW5kYXIgbW9udGhcbiAgICBpZiAoaXNMYXN0RGF5T2ZNb250aCh0b0RhdGUoZGlydHlEYXRlTGVmdCkpICYmIGRpZmZlcmVuY2UgPT09IDEgJiYgY29tcGFyZUFzYyhkaXJ0eURhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAxKSB7XG4gICAgICBpc0xhc3RNb250aE5vdEZ1bGwgPSBmYWxzZTtcbiAgICB9XG4gICAgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gTnVtYmVyKGlzTGFzdE1vbnRoTm90RnVsbCkpO1xuICB9XG5cbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCBkaWZmZXJlbmNlSW5Nb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJblF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIHF1YXJ0ZXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIHF1YXJ0ZXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgcXVhcnRlcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5RdWFydGVycyhuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgbmV3IERhdGUoMjAxMywgMTEsIDMxKSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5RdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbk1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIDM7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJblNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgc2Vjb25kcyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTQgMTI6MzA6MDcuOTk5IGFuZCAyIEp1bHkgMjAxNCAxMjozMDoyMC4wMDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5TZWNvbmRzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMzAsIDIwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCA3LCA5OTkpXG4gKiApXG4gKiAvLz0+IDEyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyAxMDAwO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbldlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB3ZWVrcyBiZXR3ZWVuIHR3byBkYXRlcy4gRnJhY3Rpb25hbCB3ZWVrcyBhcmVcbiAqIHRydW5jYXRlZCB0b3dhcmRzIHplcm8gYnkgZGVmYXVsdC5cbiAqXG4gKiBPbmUgXCJmdWxsIHdlZWtcIiBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBhIGxvY2FsIHRpbWUgaW4gb25lIGRheSB0byB0aGUgc2FtZVxuICogbG9jYWwgdGltZSA3IGRheXMgZWFybGllciBvciBsYXRlci4gQSBmdWxsIHdlZWsgY2FuIHNvbWV0aW1lcyBiZSBsZXNzIHRoYW5cbiAqIG9yIG1vcmUgdGhhbiA3KjI0IGhvdXJzIGlmIGEgZGF5bGlnaHQgc2F2aW5ncyBjaGFuZ2UgaGFwcGVucyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAqXG4gKiBUbyBpZ25vcmUgRFNUIGFuZCBvbmx5IG1lYXN1cmUgZXhhY3QgNyoyNC1ob3VyIHBlcmlvZHMsIHVzZSB0aGlzIGluc3RlYWQ6XG4gKiBgTWF0aC5mbG9vcihkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KS8oNyoyNCkpfDBgLlxuICpcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIHdlZWtzIGFyZSBiZXR3ZWVuIDUgSnVseSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5XZWVrcyhuZXcgRGF0ZSgyMDE0LCA2LCAyMCksIG5ldyBEYXRlKDIwMTQsIDYsIDUpKVxuICogLy89PiAyXG4gKlxuICogLy8gSG93IG1hbnkgZnVsbCB3ZWVrcyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDYgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDggd2Vla3MgKDU0IGRheXMpLFxuICogLy8gZXZlbiBpZiBEU1Qgc3RhcnRzIGFuZCB0aGUgcGVyaW9kIGhhc1xuICogLy8gb25seSA1NCoyNC0xIGhvdXJzLlxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluV2Vla3MoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCA2KVxuICogKVxuICogLy89PiA4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbldlZWtzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIDc7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5ZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgeWVhcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMTEgRmVicnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJblllYXJzKG5ldyBEYXRlKDIwMTUsIDEsIDExKSwgbmV3IERhdGUoMjAxMywgMTEsIDMxKSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5ZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpO1xuXG4gIC8vIFNldCBib3RoIGRhdGVzIHRvIGEgdmFsaWQgbGVhcCB5ZWFyIGZvciBhY2N1cmF0ZSBjb21wYXJpc29uIHdoZW4gZGVhbGluZ1xuICAvLyB3aXRoIGxlYXAgZGF5c1xuICBkYXRlTGVmdC5zZXRGdWxsWWVhcigxNTg0KTtcbiAgZGF0ZVJpZ2h0LnNldEZ1bGxZZWFyKDE1ODQpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCB5ZWFycyAtIGRpZmYgaW4gY2FsZW5kYXIgeWVhcnMpID09PSAxIGlmIGxhc3QgY2FsZW5kYXIgeWVhciBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgdmFyIGlzTGFzdFllYXJOb3RGdWxsID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gLXNpZ247XG4gIHZhciByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBOdW1iZXIoaXNMYXN0WWVhck5vdEZ1bGwpKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaERheU9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIGRhdGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIGRhdGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5zdGVwPTFdIC0gdGhlIHN0ZXAgdG8gaW5jcmVtZW50IGJ5LiBUaGUgdmFsdWUgc2hvdWxkIGJlIG1vcmUgdGhhbiAxLlxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIGRheXMgZnJvbSB0aGUgZGF5IG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgZGF5IG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIGRheSBiZXR3ZWVuIDYgT2N0b2JlciAyMDE0IGFuZCAxMCBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoRGF5T2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA5LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgT2N0IDA3IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMDggMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVGh1IE9jdCAwOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBGcmkgT2N0IDEwIDIwMTQgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaERheU9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkc3RlcDtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBkYXRlcyA9IFtdO1xuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RlcCA9IE51bWJlcigoX29wdGlvbnMkc3RlcCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zdGVwKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRzdGVwICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRzdGVwIDogMSk7XG4gIGlmIChzdGVwIDwgMSB8fCBpc05hTihzdGVwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDEnKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZS5zZXREYXRlKGN1cnJlbnREYXRlLmdldERhdGUoKSArIHN0ZXApO1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgYWRkSG91cnMgZnJvbSBcIi4uL2FkZEhvdXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hIb3VyT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgaG91cnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgaG91cnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnN0ZXA9MV0gLSB0aGUgc3RlcCB0byBpbmNyZW1lbnQgYnkuIFRoZSB2YWx1ZSBzaG91bGQgYmUgbW9yZSB0aGFuIDEuXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgaG91cnMgZnJvbSB0aGUgaG91ciBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIGhvdXIgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggaG91ciBiZXR3ZWVuIDYgT2N0b2JlciAyMDE0LCAxMjowMCBhbmQgNiBPY3RvYmVyIDIwMTQsIDE1OjAwXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoSG91ck9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgNiwgMTIpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDksIDYsIDE1KVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMTI6MDA6MDAsXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAxMzowMDowMCxcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDE0OjAwOjAwLFxuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMTU6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaEhvdXJPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHN0ZXA7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIHN0YXJ0VGltZSA9IHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnRUaW1lIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgZGF0ZXMgPSBbXTtcbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRNaW51dGVzKDAsIDAsIDApO1xuICB2YXIgc3RlcCA9IE51bWJlcigoX29wdGlvbnMkc3RlcCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zdGVwKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRzdGVwICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRzdGVwIDogMSk7XG4gIGlmIChzdGVwIDwgMSB8fCBpc05hTihzdGVwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDEnKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZSA9IGFkZEhvdXJzKGN1cnJlbnREYXRlLCBzdGVwKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IGFkZE1pbnV0ZXMgZnJvbSBcIi4uL2FkZE1pbnV0ZXMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZNaW51dGUgZnJvbSBcIi4uL3N0YXJ0T2ZNaW51dGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hNaW51dGVPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBtaW51dGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRoZSBhcnJheSBvZiBtaW51dGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5zdGVwPTFdIC0gdGhlIHN0ZXAgdG8gaW5jcmVtZW50IGJ5LiBUaGUgc3RlcCBtdXN0IGJlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAxXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBtaW51dGVzIGZyb20gdGhlIG1pbnV0ZSBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIG1pbnV0ZSBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAxXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggbWludXRlIGJldHdlZW4gMTQgT2N0b2JlciAyMDIwLCAxMzowMCBhbmQgMTQgT2N0b2JlciAyMDIwLCAxMzowM1xuICogY29uc3QgcmVzdWx0ID0gZWFjaE1pbnV0ZU9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgMTQsIDEzKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA5LCAxNCwgMTMsIDMpXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFdlZCBPY3QgMTQgMjAxNCAxMzowMDowMCxcbiAqIC8vICAgV2VkIE9jdCAxNCAyMDE0IDEzOjAxOjAwLFxuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDI6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMTQgMjAxNCAxMzowMzowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoTWludXRlT2ZJbnRlcnZhbChpbnRlcnZhbCwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkc3RlcDtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydERhdGUgPSBzdGFydE9mTWludXRlKHRvRGF0ZShpbnRlcnZhbC5zdGFydCkpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgc3RhcnRUaW1lID0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcbiAgaWYgKHN0YXJ0VGltZSA+PSBlbmRUaW1lKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgZGF0ZXMgPSBbXTtcbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICB2YXIgc3RlcCA9IE51bWJlcigoX29wdGlvbnMkc3RlcCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zdGVwKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRzdGVwICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRzdGVwIDogMSk7XG4gIGlmIChzdGVwIDwgMSB8fCBpc05hTihzdGVwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDEnKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZSA9IGFkZE1pbnV0ZXMoY3VycmVudERhdGUsIHN0ZXApO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hNb250aE9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIG1vbnRocyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBtb250aHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBtb250aHMgZnJvbSB0aGUgbW9udGggb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBtb250aCBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBtb250aCBiZXR3ZWVuIDYgRmVicnVhcnkgMjAxNCBhbmQgMTAgQXVndXN0IDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoTW9udGhPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDEsIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDcsIDEwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBTYXQgRmViIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBNYXIgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIEFwciAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUaHUgTWF5IDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKdW4gMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIEp1bCAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBGcmkgQXVnIDAxIDIwMTQgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaE1vbnRoT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcbiAgdmFyIGRhdGVzID0gW107XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY3VycmVudERhdGUuc2V0RGF0ZSgxKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRNb250aChjdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCBhZGRRdWFydGVycyBmcm9tIFwiLi4vYWRkUXVhcnRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mUXVhcnRlciBmcm9tIFwiLi4vc3RhcnRPZlF1YXJ0ZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFF1YXJ0ZXJPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBxdWFydGVycyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBxdWFydGVycyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIHF1YXJ0ZXJzIGZyb20gdGhlIHF1YXJ0ZXIgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBxdWFydGVyIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHF1YXJ0ZXIgd2l0aGluIGludGVydmFsIDYgRmVicnVhcnkgMjAxNCAtIDEwIEF1Z3VzdCAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaFF1YXJ0ZXJPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDEsIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDcsIDEwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgSmFuIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBBcHIgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIEp1bCAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoUXVhcnRlck9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIHN0YXJ0RGF0ZVF1YXJ0ZXIgPSBzdGFydE9mUXVhcnRlcihzdGFydERhdGUpO1xuICB2YXIgZW5kRGF0ZVF1YXJ0ZXIgPSBzdGFydE9mUXVhcnRlcihlbmREYXRlKTtcbiAgZW5kVGltZSA9IGVuZERhdGVRdWFydGVyLmdldFRpbWUoKTtcbiAgdmFyIHF1YXJ0ZXJzID0gW107XG4gIHZhciBjdXJyZW50UXVhcnRlciA9IHN0YXJ0RGF0ZVF1YXJ0ZXI7XG4gIHdoaWxlIChjdXJyZW50UXVhcnRlci5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIHF1YXJ0ZXJzLnB1c2godG9EYXRlKGN1cnJlbnRRdWFydGVyKSk7XG4gICAgY3VycmVudFF1YXJ0ZXIgPSBhZGRRdWFydGVycyhjdXJyZW50UXVhcnRlciwgMSk7XG4gIH1cbiAgcmV0dXJuIHF1YXJ0ZXJzO1xufSIsImltcG9ydCBhZGRXZWVrcyBmcm9tIFwiLi4vYWRkV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFdlZWtPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiB3ZWVrcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiB3ZWVrcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2Ygd2Vla3MgZnJvbSB0aGUgd2VlayBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIHdlZWsgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgMCwgMSwgLi4uLCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggd2VlayB3aXRoaW4gaW50ZXJ2YWwgNiBPY3RvYmVyIDIwMTQgLSAyMyBOb3ZlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaFdlZWtPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDEwLCAyMylcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgU3VuIE9jdCAwNSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDEyIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMTkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAyNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDAyIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMDkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAxNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDIzIDIwMTQgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFdlZWtPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBzdGFydERhdGVXZWVrID0gc3RhcnRPZldlZWsoc3RhcnREYXRlLCBvcHRpb25zKTtcbiAgdmFyIGVuZERhdGVXZWVrID0gc3RhcnRPZldlZWsoZW5kRGF0ZSwgb3B0aW9ucyk7XG5cbiAgLy8gU29tZSB0aW1lem9uZXMgc3dpdGNoIERTVCBhdCBtaWRuaWdodCwgbWFraW5nIHN0YXJ0IG9mIGRheSB1bnJlbGlhYmxlIGluIHRoZXNlIHRpbWV6b25lcywgM3BtIGlzIGEgc2FmZSBiZXRcbiAgc3RhcnREYXRlV2Vlay5zZXRIb3VycygxNSk7XG4gIGVuZERhdGVXZWVrLnNldEhvdXJzKDE1KTtcbiAgZW5kVGltZSA9IGVuZERhdGVXZWVrLmdldFRpbWUoKTtcbiAgdmFyIHdlZWtzID0gW107XG4gIHZhciBjdXJyZW50V2VlayA9IHN0YXJ0RGF0ZVdlZWs7XG4gIHdoaWxlIChjdXJyZW50V2Vlay5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGN1cnJlbnRXZWVrLnNldEhvdXJzKDApO1xuICAgIHdlZWtzLnB1c2godG9EYXRlKGN1cnJlbnRXZWVrKSk7XG4gICAgY3VycmVudFdlZWsgPSBhZGRXZWVrcyhjdXJyZW50V2VlaywgMSk7XG4gICAgY3VycmVudFdlZWsuc2V0SG91cnMoMTUpO1xuICB9XG4gIHJldHVybiB3ZWVrcztcbn0iLCJpbXBvcnQgZWFjaERheU9mSW50ZXJ2YWwgZnJvbSBcIi4uL2VhY2hEYXlPZkludGVydmFsL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTdW5kYXkgZnJvbSBcIi4uL2lzU3VuZGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgaXNXZWVrZW5kIGZyb20gXCIuLi9pc1dlZWtlbmQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IExpc3QgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIGRhdGUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIGRhdGUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7RGF0ZVtdfSBhbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTGlzdHMgYWxsIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gZGF0ZSBpbnRlcnZhbFxuICogY29uc3QgcmVzdWx0ID0gZWFjaFdlZWtlbmRPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDgsIDE3KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCA4LCAzMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IFNlcCAyMiAyMDE4IDAwOjAwOjAwLFxuICogLy8gICBTdW4gU2VwIDIzIDIwMTggMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBTZXAgMjkgMjAxOCAwMDowMDowMCxcbiAqIC8vICAgU3VuIFNlcCAzMCAyMDE4IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbChpbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVJbnRlcnZhbCA9IGVhY2hEYXlPZkludGVydmFsKGludGVydmFsKTtcbiAgdmFyIHdlZWtlbmRzID0gW107XG4gIHZhciBpbmRleCA9IDA7XG4gIHdoaWxlIChpbmRleCA8IGRhdGVJbnRlcnZhbC5sZW5ndGgpIHtcbiAgICB2YXIgZGF0ZSA9IGRhdGVJbnRlcnZhbFtpbmRleCsrXTtcbiAgICBpZiAoaXNXZWVrZW5kKGRhdGUpKSB7XG4gICAgICB3ZWVrZW5kcy5wdXNoKGRhdGUpO1xuICAgICAgaWYgKGlzU3VuZGF5KGRhdGUpKSBpbmRleCA9IGluZGV4ICsgNTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdlZWtlbmRzO1xufSIsImltcG9ydCBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwgZnJvbSBcIi4uL2VhY2hXZWVrZW5kT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZNb250aCBmcm9tIFwiLi4vc3RhcnRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgZW5kT2ZNb250aCBmcm9tIFwiLi4vZW5kT2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFdlZWtlbmRPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgTGlzdCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGguXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIG1vbnRoLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gbW9udGhcbiAqIEByZXR1cm5zIHtEYXRlW119IGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHBhc3NlZCBkYXRlIGlzIGludmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTGlzdHMgYWxsIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGhcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrZW5kT2ZNb250aChuZXcgRGF0ZSgyMDIyLCAxLCAxKSlcbiAqIC8vPT4gW1xuICogLy8gICBTYXQgRmViIDA1IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBGZWIgMDYgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU2F0IEZlYiAxMiAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDEzIDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBGZWIgMTkgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEZlYiAyMCAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTYXQgRmViIDI2IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBGZWIgMjcgMjAyMiAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla2VuZE9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnREYXRlID0gc3RhcnRPZk1vbnRoKGRpcnR5RGF0ZSk7XG4gIGlmIChpc05hTihzdGFydERhdGUuZ2V0VGltZSgpKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSBwYXNzZWQgZGF0ZSBpcyBpbnZhbGlkJyk7XG4gIHZhciBlbmREYXRlID0gZW5kT2ZNb250aChkaXJ0eURhdGUpO1xuICByZXR1cm4gZWFjaFdlZWtlbmRPZkludGVydmFsKHtcbiAgICBzdGFydDogc3RhcnREYXRlLFxuICAgIGVuZDogZW5kRGF0ZVxuICB9KTtcbn0iLCJpbXBvcnQgZWFjaFdlZWtlbmRPZkludGVydmFsIGZyb20gXCIuLi9lYWNoV2Vla2VuZE9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZlllYXIgZnJvbSBcIi4uL2VuZE9mWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZZZWFyIGZyb20gXCIuLi9zdGFydE9mWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFdlZWtlbmRPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IExpc3QgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIHllYXIuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSBhbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBwYXNzZWQgZGF0ZSBpcyBpbnZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExpc3RzIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIHllYXJcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrZW5kT2ZZZWFyKG5ldyBEYXRlKDIwMjAsIDEsIDEpKVxuICogLy89PiBbXG4gKiAvLyAgIFNhdCBKYW4gMDMgMjAyMCAwMDowMDowMCxcbiAqIC8vICAgU3VuIEphbiAwNCAyMDIwIDAwOjAwOjAwLFxuICogLy8gICAuLi5cbiAqIC8vICAgU3VuIERlYyAyNyAyMDIwIDAwOjAwOjAwXG4gKiAvLyBdXG4gKiBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hXZWVrZW5kT2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHN0YXJ0T2ZZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBlbmREYXRlID0gZW5kT2ZZZWFyKGRpcnR5RGF0ZSk7XG4gIHJldHVybiBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwoe1xuICAgIHN0YXJ0OiBzdGFydERhdGUsXG4gICAgZW5kOiBlbmREYXRlXG4gIH0pO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFllYXJPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiB5ZWFybHkgdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiB5ZWFybHkgdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIHllYXJseSB0aW1lc3RhbXBzIGZyb20gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgbW9udGggb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggeWVhciBiZXR3ZWVuIDYgRmVicnVhcnkgMjAxNCBhbmQgMTAgQXVndXN0IDIwMTc6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoWWVhck9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgMSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNywgNywgMTApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFdlZCBKYW4gMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVGh1IEphbiAwMSAyMDE1IDAwOjAwOjAwLFxuICogLy8gICBGcmkgSmFuIDAxIDIwMTYgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKYW4gMDEgMjAxNyAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoWWVhck9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGN1cnJlbnREYXRlLnNldE1vbnRoKDAsIDEpO1xuICB3aGlsZSAoY3VycmVudERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlLnNldEZ1bGxZZWFyKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZkRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZkRlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIGRlY2FkZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBkZWNhZGUgZm9yIDEyIE1heSAxOTg0IDAwOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZEZWNhZGUobmV3IERhdGUoMTk4NCwgNCwgMTIsIDAwLCAwMCwgMDApKVxuICogLy89PiBEZWMgMzEgMTk4OSAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZEZWNhZGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlY2FkZSA9IDkgKyBNYXRoLmZsb29yKHllYXIgLyAxMCkgKiAxMDtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkZWNhZGUsIDExLCAzMSk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZkhvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYW4gaG91ciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYW4gaG91clxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYW4gaG91ciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mSG91cihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUpKVxuICogLy89PiBUdWUgU2VwIDAyIDIwMTQgMTE6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mSG91cihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWludXRlcyg1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBlbmRPZldlZWsgZnJvbSBcIi4uL2VuZE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhbiBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZklTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZklTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gZW5kT2ZXZWVrKGRpcnR5RGF0ZSwge1xuICAgIHdlZWtTdGFydHNPbjogMVxuICB9KTtcbn0iLCJpbXBvcnQgZ2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZklTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNTpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mSVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz0+IFN1biBKYW4gMDEgMjAwNiAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFyID0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhcik7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSAxKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZk1pbnV0ZVxuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIG1pbnV0ZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIG1pbnV0ZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgbWludXRlIGZvciAxIERlY2VtYmVyIDIwMTQgMjI6MTU6NDUuNDAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZNaW51dGUobmV3IERhdGUoMjAxNCwgMTEsIDEsIDIyLCAxNSwgNDUsIDQwMCkpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAyMjoxNTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZNaW51dGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldFNlY29uZHMoNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBtb250aCBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAzMCAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGggKyAxLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBxdWFydGVyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZRdWFydGVyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgdmFyIG1vbnRoID0gY3VycmVudE1vbnRoIC0gY3VycmVudE1vbnRoICUgMyArIDM7XG4gIGRhdGUuc2V0TW9udGgobW9udGgsIDApO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZTZWNvbmRcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBzZWNvbmQgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBzZWNvbmQgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgc2Vjb25kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIHNlY29uZCBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mU2Vjb25kKG5ldyBEYXRlKDIwMTQsIDExLCAxLCAyMiwgMTUsIDQ1LCA0MDApKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMjI6MTU6NDUuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mU2Vjb25kKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRNaWxsaXNlY29uZHMoOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGVuZE9mRGF5IGZyb20gXCIuLi9lbmRPZkRheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlRvZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIHRvZGF5LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIHRvZGF5LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiB0b2RheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mVG9kYXkoKVxuICogLy89PiBNb24gT2N0IDYgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZUb2RheSgpIHtcbiAgcmV0dXJuIGVuZE9mRGF5KERhdGUubm93KCkpO1xufSIsIi8qKlxuICogQG5hbWUgZW5kT2ZUb21vcnJvd1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiB0b21vcnJvdy5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiB0b21vcnJvdy5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBuZXcgRGF0ZSgpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgdG9tb3Jyb3dcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlRvbW9ycm93KClcbiAqIC8vPT4gVHVlIE9jdCA3IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mVG9tb3Jyb3coKSB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICB2YXIgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBub3cuZ2V0TW9udGgoKTtcbiAgdmFyIGRheSA9IG5vdy5nZXREYXRlKCk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRheSArIDEpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTYXQgU2VwIDA2IDIwMTQgMjM6NTk6NTkuOTk5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBlbmQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZldlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyAtNyA6IDApICsgNiAtIChkYXkgLSB3ZWVrU3RhcnRzT24pO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIHllYXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlllYXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwMCkpXG4gKiAvLz0+IFdlZCBEZWMgMzEgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDApO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsIi8qKlxuICogQG5hbWUgZW5kT2ZZZXN0ZXJkYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgeWVzdGVyZGF5LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIHllc3RlcmRheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBuZXcgRGF0ZSgpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgeWVzdGVyZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZZZXN0ZXJkYXkoKVxuICogLy89PiBTdW4gT2N0IDUgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZZZXN0ZXJkYXkoKSB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICB2YXIgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBub3cuZ2V0TW9udGgoKTtcbiAgdmFyIGRheSA9IG5vdy5nZXREYXRlKCk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRheSAtIDEpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2Zvcm1hdHRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBsb25nRm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB7IGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4sIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbiwgdGhyb3dQcm90ZWN0ZWRFcnJvciB9IGZyb20gXCIuLi9fbGliL3Byb3RlY3RlZFRva2Vucy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7IC8vIFRoaXMgUmVnRXhwIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzIHNlcGFyYXRlZCBieSBgfGA6XG4vLyAtIFt5WVFxTUx3SWREZWNpaEhLa21zXW8gbWF0Y2hlcyBhbnkgYXZhaWxhYmxlIG9yZGluYWwgbnVtYmVyIHRva2VuXG4vLyAgIChvbmUgb2YgdGhlIGNlcnRhaW4gbGV0dGVycyBmb2xsb3dlZCBieSBgb2ApXG4vLyAtIChcXHcpXFwxKiBtYXRjaGVzIGFueSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgbGV0dGVyXG4vLyAtICcnIG1hdGNoZXMgdHdvIHF1b3RlIGNoYXJhY3RlcnMgaW4gYSByb3dcbi8vIC0gJygnJ3xbXiddKSsoJ3wkKSBtYXRjaGVzIGFueXRoaW5nIHN1cnJvdW5kZWQgYnkgdHdvIHF1b3RlIGNoYXJhY3RlcnMgKCcpLFxuLy8gICBleGNlcHQgYSBzaW5nbGUgcXVvdGUgc3ltYm9sLCB3aGljaCBlbmRzIHRoZSBzZXF1ZW5jZS5cbi8vICAgVHdvIHF1b3RlIGNoYXJhY3RlcnMgZG8gbm90IGVuZCB0aGUgc2VxdWVuY2UuXG4vLyAgIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNpbmdsZSBxdW90ZVxuLy8gICB0aGVuIHRoZSBzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbi8vIC0gLiBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIHVubWF0Y2hlZCBieSBwcmV2aW91cyBwYXJ0cyBvZiB0aGUgUmVnRXhwc1xudmFyIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvW3lZUXFNTHdJZERlY2loSEtrbXNdb3woXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG5cbi8vIFRoaXMgUmVnRXhwIGNhdGNoZXMgc3ltYm9scyBlc2NhcGVkIGJ5IHF1b3RlcywgYW5kIGFsc29cbi8vIHNlcXVlbmNlcyBvZiBzeW1ib2xzIFAsIHAsIGFuZCB0aGUgY29tYmluYXRpb25zIGxpa2UgYFBQUFBQUFBwcHBwcGBcbnZhciBsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9QK3ArfFArfHArfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xudmFyIGVzY2FwZWRTdHJpbmdSZWdFeHAgPSAvXicoW15dKj8pJz8kLztcbnZhciBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC4gVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqIChzZWUgdGhlIGxhc3QgZXhhbXBsZSlcbiAqXG4gKiBGb3JtYXQgb2YgdGhlIHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNyBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIEFjY2VwdGVkIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMHRoLCAxN3RoICAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCAyMDE3dGggICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCBSICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlIgICAgICB8IC00MywgMDAsIDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDAsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDAsIDAwMDEsIDE5MDAsIDIwMTcgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSw3IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IHUgICAgICAgfCAtNDMsIDAsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDkgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgOSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDcgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYS4uYWEgICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYSAgICAgfCBhbSwgcG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8IGIuLmJiICAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmIgICAgIHwgYW0sIHBtLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiYiAgICB8IGEubS4sIHAubS4sIG5vb24sIG1pZG5pZ2h0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmJiICAgfCBhLCBwLCBuLCBtaSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICAgfCBCLi5CQkIgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQkJCQiAgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkJCICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICAgfCBoICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDEydGggICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhoICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSG8gICAgICB8IDB0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICAgfCBLICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMCAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgS28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDB0aCAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtLICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgIHwgMjQsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga28gICAgICB8IDI0dGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtrICAgICAgfCAyNCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbW8gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc28gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNzICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKEdNVCkgICAgICAgICAgICAgICAgICB8IE8uLi5PT08gfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPT09PICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgIHwgei4uLnp6eiB8IEdNVC04LCBHTVQrNTozMCwgR01UKzAgICAgICAgICAgICB8IDYgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHp6enogICAgfCBHTVQtMDg6MDAsIEdNVCswNTozMCwgR01UKzAwOjAwICAgfCAyLDYgICB8XG4gKiB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgNTEyOTY5NTIwICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw3ICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgUCAgICAgICB8IDA0LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQICAgICAgfCBBcHIgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFAgICAgIHwgQXByaWwgMjl0aCwgMTQ1MyAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUCAgICB8IEZyaWRheSwgQXByaWwgMjl0aCwgMTQ1MyAgICAgICAgICB8IDIsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHBwICAgICB8IDEyOjAwOjAwIEFNIEdNVCsyICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcHAgICAgfCAxMjowMDowMCBBTSBHTVQrMDI6MDAgICAgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IENvbWJpbmF0aW9uIG9mIGRhdGUgYW5kIHRpbWUgICAgfCBQcCAgICAgIHwgMDQvMjkvMTQ1MywgMTI6MDAgQU0gICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBwcCAgICB8IEFwciAyOSwgMTQ1MywgMTI6MDA6MDAgQU0gICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUHBwcCAgfCBBcHJpbCAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBQcHBwcHwgRnJpZGF5LCBBcHJpbCAyOXRoLCAxNDUzIGF0IC4uLiAgIHwgMiw3ICAgfFxuICogTm90ZXM6XG4gKiAxLiBcIkZvcm1hdHRpbmdcIiB1bml0cyAoZS5nLiBmb3JtYXR0aW5nIHF1YXJ0ZXIpIGluIHRoZSBkZWZhdWx0IGVuLVVTIGxvY2FsZVxuICogICAgYXJlIHRoZSBzYW1lIGFzIFwic3RhbmQtYWxvbmVcIiB1bml0cywgYnV0IGFyZSBkaWZmZXJlbnQgaW4gc29tZSBsYW5ndWFnZXMuXG4gKiAgICBcIkZvcm1hdHRpbmdcIiB1bml0cyBhcmUgZGVjbGluZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgbGFuZ3VhZ2VcbiAqICAgIGluIHRoZSBjb250ZXh0IG9mIGEgZGF0ZS4gXCJTdGFuZC1hbG9uZVwiIHVuaXRzIGFyZSBhbHdheXMgbm9taW5hdGl2ZSBzaW5ndWxhcjpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogMi4gQW55IHNlcXVlbmNlIG9mIHRoZSBpZGVudGljYWwgbGV0dGVycyBpcyBhIHBhdHRlcm4sIHVubGVzcyBpdCBpcyBlc2NhcGVkIGJ5XG4gKiAgICB0aGUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgKHNlZSBiZWxvdykuXG4gKiAgICBJZiB0aGUgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gbGlzdGVkIGluIHRhYmxlIChlLmcuIGBFRUVFRUVFRUVFRWApXG4gKiAgICB0aGUgb3V0cHV0IHdpbGwgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdCBwYXR0ZXJuIGZvciB0aGlzIHVuaXQsIHVzdWFsbHlcbiAqICAgIHRoZSBsb25nZXN0IG9uZSAoaW4gY2FzZSBvZiBJU08gd2Vla2RheXMsIGBFRUVFYCkuIERlZmF1bHQgcGF0dGVybnMgZm9yIHVuaXRzXG4gKiAgICBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTScpIC8vPT4gJ05vdidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTU0nKSAvLz0+ICdOJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogMy4gU29tZSBwYXR0ZXJucyBjb3VsZCBiZSB1bmxpbWl0ZWQgbGVuZ3RoIChzdWNoIGFzIGB5eXl5eXl5eWApLlxuICogICAgVGhlIG91dHB1dCB3aWxsIGJlIHBhZGRlZCB3aXRoIHplcm9zIHRvIG1hdGNoIHRoZSBsZW5ndGggb2YgdGhlIHBhdHRlcm4uXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICd5eXl5eXl5eScpIC8vPT4gJzAwMDAyMDE3J2BcbiAqXG4gKiA0LiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA1LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIGFsd2F5cyByZXR1cm5zIHRoZSBsYXN0IHR3byBkaWdpdHMgb2YgYSB5ZWFyLFxuICogICAgd2hpbGUgYHV1YCBwYWRzIHNpbmdsZSBkaWdpdCB5ZWFycyB0byAyIGNoYXJhY3RlcnMgYW5kIHJldHVybnMgb3RoZXIgeWVhcnMgdW5jaGFuZ2VkOlxuICpcbiAqICAgIHwgWWVhciB8IGB5eWAgfCBgdXVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS0tfC0tLS0tLXxcbiAqICAgIHwgMSAgICB8ICAgMDEgfCAgIDAxIHxcbiAqICAgIHwgMTQgICB8ICAgMTQgfCAgIDE0IHxcbiAqICAgIHwgMzc2ICB8ICAgNzYgfCAgMzc2IHxcbiAqICAgIHwgMTQ1MyB8ICAgNTMgfCAxNDUzIHxcbiAqXG4gKiAgICBUaGUgc2FtZSBkaWZmZXJlbmNlIGlzIHRydWUgZm9yIGxvY2FsIGFuZCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgKGBZYCBhbmQgYFJgKSxcbiAqICAgIGV4Y2VwdCBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgZGVwZW5kZW50IG9uIGBvcHRpb25zLndlZWtTdGFydHNPbmBcbiAqICAgIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIChjb21wYXJlIFtnZXRJU09XZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9nZXRJU09XZWVrWWVhcn1cbiAqICAgIGFuZCBbZ2V0V2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0V2Vla1llYXJ9KS5cbiAqXG4gKiA2LiBTcGVjaWZpYyBub24tbG9jYXRpb24gdGltZXpvbmVzIGFyZSBjdXJyZW50bHkgdW5hdmFpbGFibGUgaW4gYGRhdGUtZm5zYCxcbiAqICAgIHNvIHJpZ2h0IG5vdyB0aGVzZSB0b2tlbnMgZmFsbCBiYWNrIHRvIEdNVCB0aW1lem9uZXMuXG4gKlxuICogNy4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgdGA6IHNlY29uZHMgdGltZXN0YW1wXG4gKiAgICAtIGBUYDogbWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA4LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDkuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IC0gdGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgYFlZYCBhbmQgYFlZWVlgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIGRheSBvZiB5ZWFyIHRva2VucyBgRGAgYW5kIGBERGA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGxvY2FsaXplYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdExvbmdgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRgIGluc3RlYWQgb2YgYERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDExIEZlYnJ1YXJ5IDIwMTQgaW4gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoMjAxNCwgMSwgMTEpLCAnTU0vZGQveXl5eScpXG4gKiAvLz0+ICcwMi8xMS8yMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMiBKdWx5IDIwMTQgaW4gRXNwZXJhbnRvOlxuICogaW1wb3J0IHsgZW9Mb2NhbGUgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoMjAxNCwgNiwgMiksIFwiZG8gJ2RlJyBNTU1NIHl5eXlcIiwge1xuICogICBsb2NhbGU6IGVvTG9jYWxlXG4gKiB9KVxuICogLy89PiAnMi1hIGRlIGp1bGlvIDIwMTQnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVzY2FwZSBzdHJpbmcgYnkgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnM6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoMjAxNCwgNiwgMiwgMTUpLCBcImggJ28nJ2Nsb2NrJ1wiKVxuICogLy89PiBcIjMgbydjbG9ja1wiXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0KGRpcnR5RGF0ZSwgZGlydHlGb3JtYXRTdHIsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX3JlZjIsIF9yZWYzLCBfcmVmNCwgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUyLCBfb3B0aW9ucyRsb2NhbGUyJG9wdGksIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiwgX3JlZjUsIF9yZWY2LCBfcmVmNywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUzLCBfb3B0aW9ucyRsb2NhbGUzJG9wdGksIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQ7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZm9ybWF0U3RyID0gU3RyaW5nKGRpcnR5Rm9ybWF0U3RyKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZjUgPSAoX3JlZjYgPSAoX3JlZjcgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUzLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMyRvcHRpLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjcgIT09IHZvaWQgMCA/IF9yZWY3IDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNiAhPT0gdm9pZCAwID8gX3JlZjYgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNSAhPT0gdm9pZCAwID8gX3JlZjUgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgaWYgKCFsb2NhbGUubG9jYWxpemUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBsb2NhbGl6ZSBwcm9wZXJ0eScpO1xuICB9XG4gIGlmICghbG9jYWxlLmZvcm1hdExvbmcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBmb3JtYXRMb25nIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIFVUQyBmdW5jdGlvbnMgd2lsbCBiZSBpbXBsZW1lbnRlZCwgbG9jYWxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGVtLlxuICAvLyBTZWUgYW4gaXNzdWUgYWJvdXQgVVRDIGZ1bmN0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUpO1xuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUsIHRpbWV6b25lT2Zmc2V0KTtcbiAgdmFyIGZvcm1hdHRlck9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgX29yaWdpbmFsRGF0ZTogb3JpZ2luYWxEYXRlXG4gIH07XG4gIHZhciByZXN1bHQgPSBmb3JtYXRTdHIubWF0Y2gobG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHApLm1hcChmdW5jdGlvbiAoc3Vic3RyaW5nKSB7XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gJ3AnIHx8IGZpcnN0Q2hhcmFjdGVyID09PSAnUCcpIHtcbiAgICAgIHZhciBsb25nRm9ybWF0dGVyID0gbG9uZ0Zvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgcmV0dXJuIGxvbmdGb3JtYXR0ZXIoc3Vic3RyaW5nLCBsb2NhbGUuZm9ybWF0TG9uZyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApLm1hcChmdW5jdGlvbiAoc3Vic3RyaW5nKSB7XG4gICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgIGlmIChzdWJzdHJpbmcgPT09IFwiJydcIikge1xuICAgICAgcmV0dXJuIFwiJ1wiO1xuICAgIH1cbiAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgcmV0dXJuIGNsZWFuRXNjYXBlZFN0cmluZyhzdWJzdHJpbmcpO1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbihzdWJzdHJpbmcpKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3Ioc3Vic3RyaW5nLCBkaXJ0eUZvcm1hdFN0ciwgU3RyaW5nKGRpcnR5RGF0ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuKHN1YnN0cmluZykpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcihzdWJzdHJpbmcsIGRpcnR5Rm9ybWF0U3RyLCBTdHJpbmcoZGlydHlEYXRlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0dGVyKHV0Y0RhdGUsIHN1YnN0cmluZywgbG9jYWxlLmxvY2FsaXplLCBmb3JtYXR0ZXJPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YnN0cmluZztcbiAgfSkuam9pbignJyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgdmFyIG1hdGNoZWQgPSBpbnB1dC5tYXRjaChlc2NhcGVkU3RyaW5nUmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG4gIHJldHVybiBtYXRjaGVkWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1vbnRocyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluU2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgY2xvbmVPYmplY3QgZnJvbSBcIi4uL19saWIvY2xvbmVPYmplY3QvaW5kZXguanNcIjtcbmltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL19saWIvYXNzaWduL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTlVURVNfSU5fREFZID0gMTQ0MDtcbnZhciBNSU5VVEVTX0lOX0FMTU9TVF9UV09fREFZUyA9IDI1MjA7XG52YXIgTUlOVVRFU19JTl9NT05USCA9IDQzMjAwO1xudmFyIE1JTlVURVNfSU5fVFdPX01PTlRIUyA9IDg2NDAwO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdERpc3RhbmNlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLlxuICpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZXNzIHRoYW4gYSBtaW51dGUgIHxcbiAqIHwgMzAgc2VjcyAuLi4gMSBtaW4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG1pbnV0ZSAgICAgICAgICAgIHxcbiAqIHwgMSBtaW4gMzAgc2VjcyAuLi4gNDQgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uNDRdIG1pbnV0ZXMgICAgIHxcbiAqIHwgNDQgbWlucyAuLi4gMzAgc2VjcyAuLi4gODkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIGhvdXIgICAgICAgIHxcbiAqIHwgODkgbWlucyAzMCBzZWNzIC4uLiAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBbMi4uMjRdIGhvdXJzIHxcbiAqIHwgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgfCAxIGRheSAgICAgICAgICAgICAgIHxcbiAqIHwgNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgfCBbMi4uMzBdIGRheXMgICAgICAgIHxcbiAqIHwgMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA0NCBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAxIG1vbnRoICAgICAgIHxcbiAqIHwgNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA1OSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAyIG1vbnRocyAgICAgIHxcbiAqIHwgNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiAxIHlyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uMTJdIG1vbnRocyAgICAgIHxcbiAqIHwgMSB5ciAuLi4gMSB5ciAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIHllYXIgICAgICAgIHxcbiAqIHwgMSB5ciAzIG1vbnRocyAuLi4gMSB5ciA5IG1vbnRoIHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIDEgeWVhciAgICAgICAgIHxcbiAqIHwgMSB5ciA5IG1vbnRocyAuLi4gMiB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgMiB5ZWFycyAgICAgIHxcbiAqIHwgTiB5cnMgLi4uIE4geXJzIDMgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBOIHllYXJzICAgICAgIHxcbiAqIHwgTiB5cnMgMyBtb250aHMgLi4uIE4geXJzIDkgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIE4geWVhcnMgICAgICAgIHxcbiAqIHwgTiB5cnMgOSBtb250aHMgLi4uIE4rMSB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgTisxIHllYXJzICAgIHxcbiAqXG4gKiBXaXRoIGBvcHRpb25zLmluY2x1ZGVTZWNvbmRzID09IHRydWVgOlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0ICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIHNlY3MgLi4uIDUgc2VjcyAgICAgIHwgbGVzcyB0aGFuIDUgc2Vjb25kcyAgfFxuICogfCA1IHNlY3MgLi4uIDEwIHNlY3MgICAgIHwgbGVzcyB0aGFuIDEwIHNlY29uZHMgfFxuICogfCAxMCBzZWNzIC4uLiAyMCBzZWNzICAgIHwgbGVzcyB0aGFuIDIwIHNlY29uZHMgfFxuICogfCAyMCBzZWNzIC4uLiA0MCBzZWNzICAgIHwgaGFsZiBhIG1pbnV0ZSAgICAgICAgfFxuICogfCA0MCBzZWNzIC4uLiA2MCBzZWNzICAgIHwgbGVzcyB0aGFuIGEgbWludXRlICAgfFxuICogfCA2MCBzZWNzIC4uLiA5MCBzZWNzICAgIHwgMSBtaW51dGUgICAgICAgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYmFzZURhdGUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pbmNsdWRlU2Vjb25kcz1mYWxzZV0gLSBkaXN0YW5jZXMgbGVzcyB0aGFuIGEgbWludXRlIGFyZSBtb3JlIGRldGFpbGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFkZFN1ZmZpeD1mYWxzZV0gLSByZXN1bHQgaW5kaWNhdGVzIGlmIHRoZSBzZWNvbmQgZGF0ZSBpcyBlYXJsaWVyIG9yIGxhdGVyIHRoYW4gdGhlIGZpcnN0XG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGJhc2VEYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXREaXN0YW5jZWAgcHJvcGVydHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIEp1bHkgMjAxNCBhbmQgMSBKYW51YXJ5IDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgbmV3IERhdGUoMjAxNSwgMCwgMSkpXG4gKiAvLz0+ICc2IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAxIEphbnVhcnkgMjAxNSAwMDowMDoxNVxuICogLy8gYW5kIDEgSmFudWFyeSAyMDE1IDAwOjAwOjAwLCBpbmNsdWRpbmcgc2Vjb25kcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDApLFxuICogICB7IGluY2x1ZGVTZWNvbmRzOiB0cnVlIH1cbiAqIClcbiAqIC8vPT4gJ2xlc3MgdGhhbiAyMCBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE2XG4gKiAvLyB0byAxIEphbnVhcnkgMjAxNSwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlKG5ldyBEYXRlKDIwMTUsIDAsIDEpLCBuZXcgRGF0ZSgyMDE2LCAwLCAxKSwge1xuICogICBhZGRTdWZmaXg6IHRydWVcbiAqIH0pXG4gKiAvLz0+ICdhYm91dCAxIHllYXIgYWdvJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDEgQXVndXN0IDIwMTYgYW5kIDEgSmFudWFyeSAyMDE1IGluIEVzcGVyYW50bz9cbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2UobmV3IERhdGUoMjAxNiwgNywgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpLCB7XG4gKiAgIGxvY2FsZTogZW9Mb2NhbGVcbiAqIH0pXG4gKiAvLz0+ICdwbGkgb2wgMSBqYXJvJ1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlKGRpcnR5RGF0ZSwgZGlydHlCYXNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgaWYgKCFsb2NhbGUuZm9ybWF0RGlzdGFuY2UpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBmb3JtYXREaXN0YW5jZSBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBjb21wYXJpc29uID0gY29tcGFyZUFzYyhkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUpO1xuICBpZiAoaXNOYU4oY29tcGFyaXNvbikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGxvY2FsaXplT3B0aW9ucyA9IGFzc2lnbihjbG9uZU9iamVjdChvcHRpb25zKSwge1xuICAgIGFkZFN1ZmZpeDogQm9vbGVhbihvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWRkU3VmZml4KSxcbiAgICBjb21wYXJpc29uOiBjb21wYXJpc29uXG4gIH0pO1xuICB2YXIgZGF0ZUxlZnQ7XG4gIHZhciBkYXRlUmlnaHQ7XG4gIGlmIChjb21wYXJpc29uID4gMCkge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB9IGVsc2Uge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICB9XG4gIHZhciBzZWNvbmRzID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlUmlnaHQsIGRhdGVMZWZ0KTtcbiAgdmFyIG9mZnNldEluU2Vjb25kcyA9IChnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGVSaWdodCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0KSkgLyAxMDAwO1xuICB2YXIgbWludXRlcyA9IE1hdGgucm91bmQoKHNlY29uZHMgLSBvZmZzZXRJblNlY29uZHMpIC8gNjApO1xuICB2YXIgbW9udGhzO1xuXG4gIC8vIDAgdXAgdG8gMiBtaW5zXG4gIGlmIChtaW51dGVzIDwgMikge1xuICAgIGlmIChvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmluY2x1ZGVTZWNvbmRzKSB7XG4gICAgICBpZiAoc2Vjb25kcyA8IDUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YU2Vjb25kcycsIDUsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCAxMCkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdsZXNzVGhhblhTZWNvbmRzJywgMTAsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCAyMCkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdsZXNzVGhhblhTZWNvbmRzJywgMjAsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCA0MCkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdoYWxmQU1pbnV0ZScsIDAsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCA2MCkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdsZXNzVGhhblhNaW51dGVzJywgMSwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNaW51dGVzJywgMSwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1pbnV0ZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YTWludXRlcycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIG1pbnV0ZXMsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMiBtaW5zIHVwIHRvIDAuNzUgaHJzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IDQ1KSB7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1pbnV0ZXMnLCBtaW51dGVzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMC43NSBocnMgdXAgdG8gMS41IGhyc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCA5MCkge1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2Fib3V0WEhvdXJzJywgMSwgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEuNSBocnMgdXAgdG8gMjQgaHJzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fREFZKSB7XG4gICAgdmFyIGhvdXJzID0gTWF0aC5yb3VuZChtaW51dGVzIC8gNjApO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2Fib3V0WEhvdXJzJywgaG91cnMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIGRheSB1cCB0byAxLjc1IGRheXNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9BTE1PU1RfVFdPX0RBWVMpIHtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4RGF5cycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxLjc1IGRheXMgdXAgdG8gMzAgZGF5c1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX01PTlRIKSB7XG4gICAgdmFyIGRheXMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMgLyBNSU5VVEVTX0lOX0RBWSk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneERheXMnLCBkYXlzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSBtb250aCB1cCB0byAyIG1vbnRoc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX1RXT19NT05USFMpIHtcbiAgICBtb250aHMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMgLyBNSU5VVEVTX0lOX01PTlRIKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhNb250aHMnLCBtb250aHMsIGxvY2FsaXplT3B0aW9ucyk7XG4gIH1cbiAgbW9udGhzID0gZGlmZmVyZW5jZUluTW9udGhzKGRhdGVSaWdodCwgZGF0ZUxlZnQpO1xuXG4gIC8vIDIgbW9udGhzIHVwIHRvIDEyIG1vbnRoc1xuICBpZiAobW9udGhzIDwgMTIpIHtcbiAgICB2YXIgbmVhcmVzdE1vbnRoID0gTWF0aC5yb3VuZChtaW51dGVzIC8gTUlOVVRFU19JTl9NT05USCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1vbnRocycsIG5lYXJlc3RNb250aCwgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgeWVhciB1cCB0byBtYXggRGF0ZVxuICB9IGVsc2Uge1xuICAgIHZhciBtb250aHNTaW5jZVN0YXJ0T2ZZZWFyID0gbW9udGhzICUgMTI7XG4gICAgdmFyIHllYXJzID0gTWF0aC5mbG9vcihtb250aHMgLyAxMik7XG5cbiAgICAvLyBOIHllYXJzIHVwIHRvIDEgeWVhcnMgMyBtb250aHNcbiAgICBpZiAobW9udGhzU2luY2VTdGFydE9mWWVhciA8IDMpIHtcbiAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2Fib3V0WFllYXJzJywgeWVhcnMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAgIC8vIE4geWVhcnMgMyBtb250aHMgdXAgdG8gTiB5ZWFycyA5IG1vbnRoc1xuICAgIH0gZWxzZSBpZiAobW9udGhzU2luY2VTdGFydE9mWWVhciA8IDkpIHtcbiAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ292ZXJYWWVhcnMnLCB5ZWFycywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgICAgLy8gTiB5ZWFycyA5IG1vbnRocyB1cCB0byBOIHllYXIgMTIgbW9udGhzXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2FsbW9zdFhZZWFycycsIHllYXJzICsgMSwgbG9jYWxpemVPcHRpb25zKTtcbiAgICB9XG4gIH1cbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgY2xvbmVPYmplY3QgZnJvbSBcIi4uL19saWIvY2xvbmVPYmplY3QvaW5kZXguanNcIjtcbmltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL19saWIvYXNzaWduL2luZGV4LmpzXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9NSU5VVEUgPSAxMDAwICogNjA7XG52YXIgTUlOVVRFU19JTl9EQVkgPSA2MCAqIDI0O1xudmFyIE1JTlVURVNfSU5fTU9OVEggPSBNSU5VVEVTX0lOX0RBWSAqIDMwO1xudmFyIE1JTlVURVNfSU5fWUVBUiA9IE1JTlVURVNfSU5fREFZICogMzY1O1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdERpc3RhbmNlU3RyaWN0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLCB1c2luZyBzdHJpY3QgdW5pdHMuXG4gKiBUaGlzIGlzIGxpa2UgYGZvcm1hdERpc3RhbmNlYCwgYnV0IGRvZXMgbm90IHVzZSBoZWxwZXJzIGxpa2UgJ2FsbW9zdCcsICdvdmVyJyxcbiAqICdsZXNzIHRoYW4nIGFuZCB0aGUgbGlrZS5cbiAqXG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgfCBSZXN1bHQgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIC4uLiA1OSBzZWNzICAgICAgICAgIHwgWzAuLjU5XSBzZWNvbmRzICAgICB8XG4gKiB8IDEgLi4uIDU5IG1pbnMgICAgICAgICAgfCBbMS4uNTldIG1pbnV0ZXMgICAgIHxcbiAqIHwgMSAuLi4gMjMgaHJzICAgICAgICAgICB8IFsxLi4yM10gaG91cnMgICAgICAgfFxuICogfCAxIC4uLiAyOSBkYXlzICAgICAgICAgIHwgWzEuLjI5XSBkYXlzICAgICAgICB8XG4gKiB8IDEgLi4uIDExIG1vbnRocyAgICAgICAgfCBbMS4uMTFdIG1vbnRocyAgICAgIHxcbiAqIHwgMSAuLi4gTiB5ZWFycyAgICAgICAgICB8IFsxLi5OXSAgeWVhcnMgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYmFzZURhdGUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hZGRTdWZmaXg9ZmFsc2VdIC0gcmVzdWx0IGluZGljYXRlcyBpZiB0aGUgc2Vjb25kIGRhdGUgaXMgZWFybGllciBvciBsYXRlciB0aGFuIHRoZSBmaXJzdFxuICogQHBhcmFtIHsnc2Vjb25kJ3wnbWludXRlJ3wnaG91cid8J2RheSd8J21vbnRoJ3wneWVhcid9IFtvcHRpb25zLnVuaXRdIC0gaWYgc3BlY2lmaWVkLCB3aWxsIGZvcmNlIGEgdW5pdFxuICogQHBhcmFtIHsnZmxvb3InfCdjZWlsJ3wncm91bmQnfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ncm91bmQnXSAtIHdoaWNoIHdheSB0byByb3VuZCBwYXJ0aWFsIHVuaXRzXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGJhc2VEYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnJvdW5kaW5nTWV0aG9kYCBtdXN0IGJlICdmbG9vcicsICdjZWlsJyBvciAncm91bmQnXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy51bml0YCBtdXN0IGJlICdzZWNvbmQnLCAnbWludXRlJywgJ2hvdXInLCAnZGF5JywgJ21vbnRoJyBvciAneWVhcidcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXREaXN0YW5jZWAgcHJvcGVydHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIEp1bHkgMjAxNCBhbmQgMSBKYW51YXJ5IDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgbmV3IERhdGUoMjAxNSwgMCwgMikpXG4gKiAvLz0+ICc2IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAxIEphbnVhcnkgMjAxNSAwMDowMDoxNVxuICogLy8gYW5kIDEgSmFudWFyeSAyMDE1IDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMClcbiAqIClcbiAqIC8vPT4gJzE1IHNlY29uZHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGZyb20gMSBKYW51YXJ5IDIwMTZcbiAqIC8vIHRvIDEgSmFudWFyeSAyMDE1LCB3aXRoIGEgc3VmZml4P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNSwgMCwgMSksIG5ldyBEYXRlKDIwMTYsIDAsIDEpLCB7XG4gKiAgIGFkZFN1ZmZpeDogdHJ1ZVxuICogfSlcbiAqIC8vPT4gJzEgeWVhciBhZ28nXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGZyb20gMSBKYW51YXJ5IDIwMTZcbiAqIC8vIHRvIDEgSmFudWFyeSAyMDE1LCBpbiBtaW51dGVzP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNiwgMCwgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpLCB7XG4gKiAgIHVuaXQ6ICdtaW51dGUnXG4gKiB9KVxuICogLy89PiAnNTI1NjAwIG1pbnV0ZXMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGZyb20gMSBKYW51YXJ5IDIwMTVcbiAqIC8vIHRvIDI4IEphbnVhcnkgMjAxNSwgaW4gbW9udGhzLCByb3VuZGVkIHVwP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNSwgMCwgMjgpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICB1bml0OiAnbW9udGgnLFxuICogICByb3VuZGluZ01ldGhvZDogJ2NlaWwnXG4gKiB9KVxuICogLy89PiAnMSBtb250aCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAxIEF1Z3VzdCAyMDE2IGFuZCAxIEphbnVhcnkgMjAxNSBpbiBFc3BlcmFudG8/XG4gKiBpbXBvcnQgeyBlb0xvY2FsZSB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTYsIDcsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICBsb2NhbGU6IGVvTG9jYWxlXG4gKiB9KVxuICogLy89PiAnMSBqYXJvJ1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlU3RyaWN0KGRpcnR5RGF0ZSwgZGlydHlCYXNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRyb3VuZGluZ01ldGg7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICBpZiAoIWxvY2FsZS5mb3JtYXREaXN0YW5jZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGxvY2FsaXplLmZvcm1hdERpc3RhbmNlIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlQXNjKGRpcnR5RGF0ZSwgZGlydHlCYXNlRGF0ZSk7XG4gIGlmIChpc05hTihjb21wYXJpc29uKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgbG9jYWxpemVPcHRpb25zID0gYXNzaWduKGNsb25lT2JqZWN0KG9wdGlvbnMpLCB7XG4gICAgYWRkU3VmZml4OiBCb29sZWFuKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hZGRTdWZmaXgpLFxuICAgIGNvbXBhcmlzb246IGNvbXBhcmlzb25cbiAgfSk7XG4gIHZhciBkYXRlTGVmdDtcbiAgdmFyIGRhdGVSaWdodDtcbiAgaWYgKGNvbXBhcmlzb24gPiAwKSB7XG4gICAgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gICAgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gIH1cbiAgdmFyIHJvdW5kaW5nTWV0aG9kID0gU3RyaW5nKChfb3B0aW9ucyRyb3VuZGluZ01ldGggPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpICE9PSBudWxsICYmIF9vcHRpb25zJHJvdW5kaW5nTWV0aCAhPT0gdm9pZCAwID8gX29wdGlvbnMkcm91bmRpbmdNZXRoIDogJ3JvdW5kJyk7XG4gIHZhciByb3VuZGluZ01ldGhvZEZuO1xuICBpZiAocm91bmRpbmdNZXRob2QgPT09ICdmbG9vcicpIHtcbiAgICByb3VuZGluZ01ldGhvZEZuID0gTWF0aC5mbG9vcjtcbiAgfSBlbHNlIGlmIChyb3VuZGluZ01ldGhvZCA9PT0gJ2NlaWwnKSB7XG4gICAgcm91bmRpbmdNZXRob2RGbiA9IE1hdGguY2VpbDtcbiAgfSBlbHNlIGlmIChyb3VuZGluZ01ldGhvZCA9PT0gJ3JvdW5kJykge1xuICAgIHJvdW5kaW5nTWV0aG9kRm4gPSBNYXRoLnJvdW5kO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwicm91bmRpbmdNZXRob2QgbXVzdCBiZSAnZmxvb3InLCAnY2VpbCcgb3IgJ3JvdW5kJ1wiKTtcbiAgfVxuICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZVJpZ2h0LmdldFRpbWUoKSAtIGRhdGVMZWZ0LmdldFRpbWUoKTtcbiAgdmFyIG1pbnV0ZXMgPSBtaWxsaXNlY29uZHMgLyBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFO1xuICB2YXIgdGltZXpvbmVPZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGVSaWdodCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0KTtcblxuICAvLyBVc2UgRFNULW5vcm1hbGl6ZWQgZGlmZmVyZW5jZSBpbiBtaW51dGVzIGZvciB5ZWFycywgbW9udGhzIGFuZCBkYXlzO1xuICAvLyB1c2UgcmVndWxhciBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgZm9yIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICB2YXIgZHN0Tm9ybWFsaXplZE1pbnV0ZXMgPSAobWlsbGlzZWNvbmRzIC0gdGltZXpvbmVPZmZzZXQpIC8gTUlMTElTRUNPTkRTX0lOX01JTlVURTtcbiAgdmFyIGRlZmF1bHRVbml0ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnVuaXQ7XG4gIHZhciB1bml0O1xuICBpZiAoIWRlZmF1bHRVbml0KSB7XG4gICAgaWYgKG1pbnV0ZXMgPCAxKSB7XG4gICAgICB1bml0ID0gJ3NlY29uZCc7XG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDwgNjApIHtcbiAgICAgIHVuaXQgPSAnbWludXRlJztcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX0RBWSkge1xuICAgICAgdW5pdCA9ICdob3VyJztcbiAgICB9IGVsc2UgaWYgKGRzdE5vcm1hbGl6ZWRNaW51dGVzIDwgTUlOVVRFU19JTl9NT05USCkge1xuICAgICAgdW5pdCA9ICdkYXknO1xuICAgIH0gZWxzZSBpZiAoZHN0Tm9ybWFsaXplZE1pbnV0ZXMgPCBNSU5VVEVTX0lOX1lFQVIpIHtcbiAgICAgIHVuaXQgPSAnbW9udGgnO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bml0ID0gJ3llYXInO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB1bml0ID0gU3RyaW5nKGRlZmF1bHRVbml0KTtcbiAgfVxuXG4gIC8vIDAgdXAgdG8gNjAgc2Vjb25kc1xuICBpZiAodW5pdCA9PT0gJ3NlY29uZCcpIHtcbiAgICB2YXIgc2Vjb25kcyA9IHJvdW5kaW5nTWV0aG9kRm4obWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneFNlY29uZHMnLCBzZWNvbmRzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB1cCB0byA2MCBtaW5zXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ21pbnV0ZScpIHtcbiAgICB2YXIgcm91bmRlZE1pbnV0ZXMgPSByb3VuZGluZ01ldGhvZEZuKG1pbnV0ZXMpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNaW51dGVzJywgcm91bmRlZE1pbnV0ZXMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHVwIHRvIDI0IGhvdXJzXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ2hvdXInKSB7XG4gICAgdmFyIGhvdXJzID0gcm91bmRpbmdNZXRob2RGbihtaW51dGVzIC8gNjApO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hIb3VycycsIGhvdXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB1cCB0byAzMCBkYXlzXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ2RheScpIHtcbiAgICB2YXIgZGF5cyA9IHJvdW5kaW5nTWV0aG9kRm4oZHN0Tm9ybWFsaXplZE1pbnV0ZXMgLyBNSU5VVEVTX0lOX0RBWSk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneERheXMnLCBkYXlzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB1cCB0byAxMiBtb250aHNcbiAgfSBlbHNlIGlmICh1bml0ID09PSAnbW9udGgnKSB7XG4gICAgdmFyIG1vbnRocyA9IHJvdW5kaW5nTWV0aG9kRm4oZHN0Tm9ybWFsaXplZE1pbnV0ZXMgLyBNSU5VVEVTX0lOX01PTlRIKTtcbiAgICByZXR1cm4gbW9udGhzID09PSAxMiAmJiBkZWZhdWx0VW5pdCAhPT0gJ21vbnRoJyA/IGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneFllYXJzJywgMSwgbG9jYWxpemVPcHRpb25zKSA6IGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1vbnRocycsIG1vbnRocywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgeWVhciB1cCB0byBtYXggRGF0ZVxuICB9IGVsc2UgaWYgKHVuaXQgPT09ICd5ZWFyJykge1xuICAgIHZhciB5ZWFycyA9IHJvdW5kaW5nTWV0aG9kRm4oZHN0Tm9ybWFsaXplZE1pbnV0ZXMgLyBNSU5VVEVTX0lOX1lFQVIpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hZZWFycycsIHllYXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICB9XG4gIHRocm93IG5ldyBSYW5nZUVycm9yKFwidW5pdCBtdXN0IGJlICdzZWNvbmQnLCAnbWludXRlJywgJ2hvdXInLCAnZGF5JywgJ21vbnRoJyBvciAneWVhcidcIik7XG59IiwiaW1wb3J0IGRpc3RhbmNlSW5Xb3JkcyBmcm9tIFwiLi4vZm9ybWF0RGlzdGFuY2UvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdERpc3RhbmNlVG9Ob3dcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlIGFuZCBub3cgaW4gd29yZHMuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlIGFuZCBub3cgaW4gd29yZHMuXG4gKlxuICogfCBEaXN0YW5jZSB0byBub3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIC4uLiAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxlc3MgdGhhbiBhIG1pbnV0ZSAgfFxuICogfCAzMCBzZWNzIC4uLiAxIG1pbiAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgbWludXRlICAgICAgICAgICAgfFxuICogfCAxIG1pbiAzMCBzZWNzIC4uLiA0NCBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsyLi40NF0gbWludXRlcyAgICAgfFxuICogfCA0NCBtaW5zIC4uLiAzMCBzZWNzIC4uLiA4OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IDEgaG91ciAgICAgICAgfFxuICogfCA4OSBtaW5zIDMwIHNlY3MgLi4uIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IFsyLi4yNF0gaG91cnMgfFxuICogfCAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA0MSBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICB8IDEgZGF5ICAgICAgICAgICAgICAgfFxuICogfCA0MSBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiAyOSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICB8IFsyLi4zMF0gZGF5cyAgICAgICAgfFxuICogfCAyOSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDQ0IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyB8IGFib3V0IDEgbW9udGggICAgICAgfFxuICogfCA0NCBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDU5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyB8IGFib3V0IDIgbW9udGhzICAgICAgfFxuICogfCA1OSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDEgeXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsyLi4xMl0gbW9udGhzICAgICAgfFxuICogfCAxIHlyIC4uLiAxIHlyIDMgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IDEgeWVhciAgICAgICAgfFxuICogfCAxIHlyIDMgbW9udGhzIC4uLiAxIHlyIDkgbW9udGggcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG92ZXIgMSB5ZWFyICAgICAgICAgfFxuICogfCAxIHlyIDkgbW9udGhzIC4uLiAyIHlycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsbW9zdCAyIHllYXJzICAgICAgfFxuICogfCBOIHlycyAuLi4gTiB5cnMgMyBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IE4geWVhcnMgICAgICAgfFxuICogfCBOIHlycyAzIG1vbnRocyAuLi4gTiB5cnMgOSBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG92ZXIgTiB5ZWFycyAgICAgICAgfFxuICogfCBOIHlycyA5IG1vbnRocyAuLi4gTisxIHlycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsbW9zdCBOKzEgeWVhcnMgICAgfFxuICpcbiAqIFdpdGggYG9wdGlvbnMuaW5jbHVkZVNlY29uZHMgPT0gdHJ1ZWA6XG4gKiB8IERpc3RhbmNlIHRvIG5vdyAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgc2VjcyAuLi4gNSBzZWNzICAgfCBsZXNzIHRoYW4gNSBzZWNvbmRzICB8XG4gKiB8IDUgc2VjcyAuLi4gMTAgc2VjcyAgfCBsZXNzIHRoYW4gMTAgc2Vjb25kcyB8XG4gKiB8IDEwIHNlY3MgLi4uIDIwIHNlY3MgfCBsZXNzIHRoYW4gMjAgc2Vjb25kcyB8XG4gKiB8IDIwIHNlY3MgLi4uIDQwIHNlY3MgfCBoYWxmIGEgbWludXRlICAgICAgICB8XG4gKiB8IDQwIHNlY3MgLi4uIDYwIHNlY3MgfCBsZXNzIHRoYW4gYSBtaW51dGUgICB8XG4gKiB8IDYwIHNlY3MgLi4uIDkwIHNlY3MgfCAxIG1pbnV0ZSAgICAgICAgICAgICB8XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmluY2x1ZGVTZWNvbmRzPWZhbHNlXSAtIGRpc3RhbmNlcyBsZXNzIHRoYW4gYSBtaW51dGUgYXJlIG1vcmUgZGV0YWlsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBzcGVjaWZpZXMgaWYgbm93IGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgcGFzc2VkIGRhdGVcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRpc3RhbmNlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXREaXN0YW5jZWAgcHJvcGVydHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMilcbiAqIClcbiAqIC8vPT4gJzYgbW9udGhzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMSBKYW51YXJ5IDIwMTUgMDA6MDA6MDAsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNSAwMDowMDoxNSwgaW5jbHVkaW5nIHNlY29uZHM/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93KFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAxNSksXG4gKiAgIHtpbmNsdWRlU2Vjb25kczogdHJ1ZX1cbiAqIClcbiAqIC8vPT4gJ2xlc3MgdGhhbiAyMCBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE2LCB3aXRoIGEgc3VmZml4P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIHthZGRTdWZmaXg6IHRydWV9XG4gKiApXG4gKiAvLz0+ICdpbiBhYm91dCAxIHllYXInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBBdWd1c3QgMjAxNiBpbiBFc3BlcmFudG8/XG4gKiBjb25zdCBlb0xvY2FsZSA9IHJlcXVpcmUoJ2RhdGUtZm5zL2xvY2FsZS9lbycpXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93KFxuICogICBuZXcgRGF0ZSgyMDE2LCA3LCAxKSxcbiAqICAge2xvY2FsZTogZW9Mb2NhbGV9XG4gKiApXG4gKiAvLz0+ICdwbGkgb2wgMSBqYXJvJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZVRvTm93KGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGRpc3RhbmNlSW5Xb3JkcyhkaXJ0eURhdGUsIERhdGUubm93KCksIG9wdGlvbnMpO1xufSIsImltcG9ydCBmb3JtYXREaXN0YW5jZVN0cmljdCBmcm9tIFwiLi4vZm9ybWF0RGlzdGFuY2VTdHJpY3QvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3RcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlIGFuZCBub3cgaW4gd29yZHMuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3JkcywgdXNpbmcgc3RyaWN0IHVuaXRzLlxuICogVGhpcyBpcyBsaWtlIGBmb3JtYXREaXN0YW5jZWAsIGJ1dCBkb2VzIG5vdCB1c2UgaGVscGVycyBsaWtlICdhbG1vc3QnLCAnb3ZlcicsXG4gKiAnbGVzcyB0aGFuJyBhbmQgdGhlIGxpa2UuXG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gNTkgc2VjcyAgICAgICAgICB8IFswLi41OV0gc2Vjb25kcyAgICAgfFxuICogfCAxIC4uLiA1OSBtaW5zICAgICAgICAgIHwgWzEuLjU5XSBtaW51dGVzICAgICB8XG4gKiB8IDEgLi4uIDIzIGhycyAgICAgICAgICAgfCBbMS4uMjNdIGhvdXJzICAgICAgIHxcbiAqIHwgMSAuLi4gMjkgZGF5cyAgICAgICAgICB8IFsxLi4yOV0gZGF5cyAgICAgICAgfFxuICogfCAxIC4uLiAxMSBtb250aHMgICAgICAgIHwgWzEuLjExXSBtb250aHMgICAgICB8XG4gKiB8IDEgLi4uIE4geWVhcnMgICAgICAgICAgfCBbMS4uTl0gIHllYXJzICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hZGRTdWZmaXg9ZmFsc2VdIC0gcmVzdWx0IGluZGljYXRlcyBpZiB0aGUgc2Vjb25kIGRhdGUgaXMgZWFybGllciBvciBsYXRlciB0aGFuIHRoZSBmaXJzdFxuICogQHBhcmFtIHsnc2Vjb25kJ3wnbWludXRlJ3wnaG91cid8J2RheSd8J21vbnRoJ3wneWVhcid9IFtvcHRpb25zLnVuaXRdIC0gaWYgc3BlY2lmaWVkLCB3aWxsIGZvcmNlIGEgdW5pdFxuICogQHBhcmFtIHsnZmxvb3InfCdjZWlsJ3wncm91bmQnfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ncm91bmQnXSAtIHdoaWNoIHdheSB0byByb3VuZCBwYXJ0aWFsIHVuaXRzXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LCB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIpXG4gKiApXG4gKiAvLz0+ICc2IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDEgSmFudWFyeSAyMDE1IDAwOjAwOjAwLFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTUsIGluY2x1ZGluZyBzZWNvbmRzP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpXG4gKiApXG4gKiAvLz0+ICcxNSBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE2LCB3aXRoIGEgc3VmZml4P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIHthZGRTdWZmaXg6IHRydWV9XG4gKiApXG4gKiAvLz0+ICdpbiAxIHllYXInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI4IEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE1LCBpbiBtb250aHMsIHJvdW5kZWQgdXA/P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICB1bml0OiAnbW9udGgnLFxuICogICByb3VuZGluZ01ldGhvZDogJ2NlaWwnXG4gKiB9KVxuICogLy89PiAnMSBtb250aCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNiBpbiBFc3BlcmFudG8/XG4gKiBjb25zdCBlb0xvY2FsZSA9IHJlcXVpcmUoJ2RhdGUtZm5zL2xvY2FsZS9lbycpXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE2LCAwLCAxKSxcbiAqICAge2xvY2FsZTogZW9Mb2NhbGV9XG4gKiApXG4gKiAvLz0+ICcxIGphcm8nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gZm9ybWF0RGlzdGFuY2VTdHJpY3QoZGlydHlEYXRlLCBEYXRlLm5vdygpLCBvcHRpb25zKTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7XG52YXIgZGVmYXVsdEZvcm1hdCA9IFsneWVhcnMnLCAnbW9udGhzJywgJ3dlZWtzJywgJ2RheXMnLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ107XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0RHVyYXRpb25cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0cyBhIGR1cmF0aW9uIGluIGh1bWFuLXJlYWRhYmxlIGZvcm1hdFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIGh1bWFuLXJlYWRhYmxlIGR1cmF0aW9uIHN0cmluZyBpLmUuIFwiOSBtb250aHMgMiBkYXlzXCJcbiAqXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBkdXJhdGlvbiB0byBmb3JtYXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gW29wdGlvbnMuZm9ybWF0PVsneWVhcnMnLCAnbW9udGhzJywgJ3dlZWtzJywgJ2RheXMnLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ11dIC0gdGhlIGFycmF5IG9mIHVuaXRzIHRvIGZvcm1hdFxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy56ZXJvPWZhbHNlXSAtIHNob3VsZCB6ZXJvcyBiZSBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0P1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmRlbGltaXRlcj0nICddIC0gZGVsaW1pdGVyIHN0cmluZ1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9ybWF0IGZ1bGwgZHVyYXRpb25cbiAqIGZvcm1hdER1cmF0aW9uKHtcbiAqICAgeWVhcnM6IDIsXG4gKiAgIG1vbnRoczogOSxcbiAqICAgd2Vla3M6IDEsXG4gKiAgIGRheXM6IDcsXG4gKiAgIGhvdXJzOiA1LFxuICogICBtaW51dGVzOiA5LFxuICogICBzZWNvbmRzOiAzMFxuICogfSlcbiAqIC8vPT4gJzIgeWVhcnMgOSBtb250aHMgMSB3ZWVrIDcgZGF5cyA1IGhvdXJzIDkgbWludXRlcyAzMCBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3JtYXQgcGFydGlhbCBkdXJhdGlvblxuICogZm9ybWF0RHVyYXRpb24oeyBtb250aHM6IDksIGRheXM6IDIgfSlcbiAqIC8vPT4gJzkgbW9udGhzIDIgZGF5cydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9taXplIHRoZSBmb3JtYXRcbiAqIGZvcm1hdER1cmF0aW9uKFxuICogICB7XG4gKiAgICAgeWVhcnM6IDIsXG4gKiAgICAgbW9udGhzOiA5LFxuICogICAgIHdlZWtzOiAxLFxuICogICAgIGRheXM6IDcsXG4gKiAgICAgaG91cnM6IDUsXG4gKiAgICAgbWludXRlczogOSxcbiAqICAgICBzZWNvbmRzOiAzMFxuICogICB9LFxuICogICB7IGZvcm1hdDogWydtb250aHMnLCAnd2Vla3MnXSB9XG4gKiApID09PSAnOSBtb250aHMgMSB3ZWVrJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b21pemUgdGhlIHplcm9zIHByZXNlbmNlXG4gKiBmb3JtYXREdXJhdGlvbih7IHllYXJzOiAwLCBtb250aHM6IDkgfSlcbiAqIC8vPT4gJzkgbW9udGhzJ1xuICogZm9ybWF0RHVyYXRpb24oeyB5ZWFyczogMCwgbW9udGhzOiA5IH0sIHsgemVybzogdHJ1ZSB9KVxuICogLy89PiAnMCB5ZWFycyA5IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9taXplIHRoZSBkZWxpbWl0ZXJcbiAqIGZvcm1hdER1cmF0aW9uKHsgeWVhcnM6IDIsIG1vbnRoczogOSwgd2Vla3M6IDMgfSwgeyBkZWxpbWl0ZXI6ICcsICcgfSlcbiAqIC8vPT4gJzIgeWVhcnMsIDkgbW9udGhzLCAzIHdlZWtzJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbiwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRmb3JtYXQsIF9vcHRpb25zJHplcm8sIF9vcHRpb25zJGRlbGltaXRlcjtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoLCBcIiBwcmVzZW50XCIpKTtcbiAgfVxuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICB2YXIgZm9ybWF0ID0gKF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mb3JtYXQpICE9PSBudWxsICYmIF9vcHRpb25zJGZvcm1hdCAhPT0gdm9pZCAwID8gX29wdGlvbnMkZm9ybWF0IDogZGVmYXVsdEZvcm1hdDtcbiAgdmFyIHplcm8gPSAoX29wdGlvbnMkemVybyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy56ZXJvKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR6ZXJvICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR6ZXJvIDogZmFsc2U7XG4gIHZhciBkZWxpbWl0ZXIgPSAoX29wdGlvbnMkZGVsaW1pdGVyID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmRlbGltaXRlcikgIT09IG51bGwgJiYgX29wdGlvbnMkZGVsaW1pdGVyICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRkZWxpbWl0ZXIgOiAnICc7XG4gIGlmICghbG9jYWxlLmZvcm1hdERpc3RhbmNlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSBmb3JtYXQucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHVuaXQpIHtcbiAgICB2YXIgdG9rZW4gPSBcInhcIi5jb25jYXQodW5pdC5yZXBsYWNlKC8oXi4pLywgZnVuY3Rpb24gKG0pIHtcbiAgICAgIHJldHVybiBtLnRvVXBwZXJDYXNlKCk7XG4gICAgfSkpO1xuICAgIHZhciB2YWx1ZSA9IGR1cmF0aW9uW3VuaXRdO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmICh6ZXJvIHx8IGR1cmF0aW9uW3VuaXRdKSkge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQobG9jYWxlLmZvcm1hdERpc3RhbmNlKHRva2VuLCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSkuam9pbihkZWxpbWl0ZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdElTT1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBJU08gODYwMSBzdGFuZGFyZCAoaHR0cHM6Ly9zdXBwb3J0LnNhcy5jb20vZG9jdW1lbnRhdGlvbi9jZGwvZW4vbHJkaWN0LzY0MzE2L0hUTUwvZGVmYXVsdC92aWV3ZXIuaHRtI2EwMDMxNjk4MTQuaHRtKS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdC4gT3B0aW9ucyBtYXkgYmUgcGFzc2VkIHRvIGNvbnRyb2wgdGhlIHBhcnRzIGFuZCBub3RhdGlvbnMgb2YgdGhlIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7J2V4dGVuZGVkJ3wnYmFzaWMnfSBbb3B0aW9ucy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBpZiAnYmFzaWMnLCBoaWRlIGRlbGltaXRlcnMgYmV0d2VlbiBkYXRlIGFuZCB0aW1lIHZhbHVlcy5cbiAqIEBwYXJhbSB7J2NvbXBsZXRlJ3wnZGF0ZSd8J3RpbWUnfSBbb3B0aW9ucy5yZXByZXNlbnRhdGlvbj0nY29tcGxldGUnXSAtIGZvcm1hdCBkYXRlLCB0aW1lIHdpdGggbG9jYWwgdGltZSB6b25lLCBvciBib3RoLlxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyAoaW4gbG9jYWwgdGltZSB6b25lKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5mb3JtYXRgIG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5yZXByZXNlbnRhdGlvbmAgbXVzdCBiZSAnZGF0ZScsICd0aW1lJyBvciAnY29tcGxldGUnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSBmb3JtYXQgKGxvY2FsIHRpbWUgem9uZSBpcyBVVEMpOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpKVxuICogLy89PiAnMjAxOS0wOS0xOFQxOTowMDo1MlonXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSwgc2hvcnQgZm9ybWF0IChsb2NhbCB0aW1lIHpvbmUgaXMgVVRDKTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyBmb3JtYXQ6ICdiYXNpYycgfSlcbiAqIC8vPT4gJzIwMTkwOTE4VDE5MDA1MidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA4NjAxIGZvcm1hdCwgZGF0ZSBvbmx5OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAnZGF0ZScgfSlcbiAqIC8vPT4gJzIwMTktMDktMTgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSBmb3JtYXQsIHRpbWUgb25seSAobG9jYWwgdGltZSB6b25lIGlzIFVUQyk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgcmVwcmVzZW50YXRpb246ICd0aW1lJyB9KVxuICogLy89PiAnMTk6MDA6NTJaJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRJU08oZGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkZm9ybWF0LCBfb3B0aW9ucyRyZXByZXNlbnRhdGk7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4ob3JpZ2luYWxEYXRlLmdldFRpbWUoKSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGZvcm1hdCA9IFN0cmluZygoX29wdGlvbnMkZm9ybWF0ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZvcm1hdCkgIT09IG51bGwgJiYgX29wdGlvbnMkZm9ybWF0ICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmb3JtYXQgOiAnZXh0ZW5kZWQnKTtcbiAgdmFyIHJlcHJlc2VudGF0aW9uID0gU3RyaW5nKChfb3B0aW9ucyRyZXByZXNlbnRhdGkgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucmVwcmVzZW50YXRpb24pICE9PSBudWxsICYmIF9vcHRpb25zJHJlcHJlc2VudGF0aSAhPT0gdm9pZCAwID8gX29wdGlvbnMkcmVwcmVzZW50YXRpIDogJ2NvbXBsZXRlJyk7XG4gIGlmIChmb3JtYXQgIT09ICdleHRlbmRlZCcgJiYgZm9ybWF0ICE9PSAnYmFzaWMnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJmb3JtYXQgbXVzdCBiZSAnZXh0ZW5kZWQnIG9yICdiYXNpYydcIik7XG4gIH1cbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAnZGF0ZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICd0aW1lJyAmJiByZXByZXNlbnRhdGlvbiAhPT0gJ2NvbXBsZXRlJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwicmVwcmVzZW50YXRpb24gbXVzdCBiZSAnZGF0ZScsICd0aW1lJywgb3IgJ2NvbXBsZXRlJ1wiKTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciB0ek9mZnNldCA9ICcnO1xuICB2YXIgZGF0ZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICctJyA6ICcnO1xuICB2YXIgdGltZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICc6JyA6ICcnO1xuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAnZGF0ZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICd0aW1lJykge1xuICAgIHZhciBkYXkgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldERhdGUoKSwgMik7XG4gICAgdmFyIG1vbnRoID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gICAgdmFyIHllYXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEZ1bGxZZWFyKCksIDQpO1xuXG4gICAgLy8geXl5eU1NZGQgb3IgeXl5eS1NTS1kZC5cbiAgICByZXN1bHQgPSBcIlwiLmNvbmNhdCh5ZWFyKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KG1vbnRoKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KGRheSk7XG4gIH1cblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ3RpbWUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAnZGF0ZScpIHtcbiAgICAvLyBBZGQgdGhlIHRpbWV6b25lLlxuICAgIHZhciBvZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgICB2YXIgYWJzb2x1dGVPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICAgICAgdmFyIGhvdXJPZmZzZXQgPSBhZGRMZWFkaW5nWmVyb3MoTWF0aC5mbG9vcihhYnNvbHV0ZU9mZnNldCAvIDYwKSwgMik7XG4gICAgICB2YXIgbWludXRlT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKGFic29sdXRlT2Zmc2V0ICUgNjAsIDIpO1xuICAgICAgLy8gSWYgbGVzcyB0aGFuIDAsIHRoZSBzaWduIGlzICssIGJlY2F1c2UgaXQgaXMgYWhlYWQgb2YgdGltZS5cbiAgICAgIHZhciBzaWduID0gb2Zmc2V0IDwgMCA/ICcrJyA6ICctJztcbiAgICAgIHR6T2Zmc2V0ID0gXCJcIi5jb25jYXQoc2lnbikuY29uY2F0KGhvdXJPZmZzZXQsIFwiOlwiKS5jb25jYXQobWludXRlT2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHpPZmZzZXQgPSAnWic7XG4gICAgfVxuICAgIHZhciBob3VyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRIb3VycygpLCAyKTtcbiAgICB2YXIgbWludXRlID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICAgIHZhciBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFNlY29uZHMoKSwgMik7XG5cbiAgICAvLyBJZiB0aGVyZSdzIGFsc28gZGF0ZSwgc2VwYXJhdGUgaXQgd2l0aCB0aW1lIHdpdGggJ1QnXG4gICAgdmFyIHNlcGFyYXRvciA9IHJlc3VsdCA9PT0gJycgPyAnJyA6ICdUJztcblxuICAgIC8vIENyZWF0ZXMgYSB0aW1lIHN0cmluZyBjb25zaXN0aW5nIG9mIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZCwgc2VwYXJhdGVkIGJ5IGRlbGltaXRlcnMsIGlmIGRlZmluZWQuXG4gICAgdmFyIHRpbWUgPSBbaG91ciwgbWludXRlLCBzZWNvbmRdLmpvaW4odGltZURlbGltaXRlcik7XG5cbiAgICAvLyBISG1tc3Mgb3IgSEg6bW06c3MuXG4gICAgcmVzdWx0ID0gXCJcIi5jb25jYXQocmVzdWx0KS5jb25jYXQoc2VwYXJhdG9yKS5jb25jYXQodGltZSkuY29uY2F0KHR6T2Zmc2V0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdElTTzkwNzVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlIGFjY29yZGluZyB0byB0aGUgSVNPIDkwNzUgc3RhbmRhcmQgKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzUuNy9lbi9kYXRlLWFuZC10aW1lLWZ1bmN0aW9ucy5odG1sI2Z1bmN0aW9uX2dldC1mb3JtYXQpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gSVNPIDkwNzUgZm9ybWF0LiBPcHRpb25zIG1heSBiZSBwYXNzZWQgdG8gY29udHJvbCB0aGUgcGFydHMgYW5kIG5vdGF0aW9ucyBvZiB0aGUgZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHsnZXh0ZW5kZWQnfCdiYXNpYyd9IFtvcHRpb25zLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGlmICdiYXNpYycsIGhpZGUgZGVsaW1pdGVycyBiZXR3ZWVuIGRhdGUgYW5kIHRpbWUgdmFsdWVzLlxuICogQHBhcmFtIHsnY29tcGxldGUnfCdkYXRlJ3wndGltZSd9IFtvcHRpb25zLnJlcHJlc2VudGF0aW9uPSdjb21wbGV0ZSddIC0gZm9ybWF0IGRhdGUsIHRpbWUsIG9yIGJvdGguXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZvcm1hdGAgbXVzdCBiZSAnZXh0ZW5kZWQnIG9yICdiYXNpYydcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnJlcHJlc2VudGF0aW9uYCBtdXN0IGJlICdkYXRlJywgJ3RpbWUnIG9yICdjb21wbGV0ZSdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA5MDc1IGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTzkwNzUobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICcyMDE5LTA5LTE4IDE5OjAwOjUyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDkwNzUsIHNob3J0IGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTzkwNzUobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgZm9ybWF0OiAnYmFzaWMnIH0pXG4gKiAvLz0+ICcyMDE5MDkxOCAxOTAwNTInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSBmb3JtYXQsIGRhdGUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTzkwNzUobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgcmVwcmVzZW50YXRpb246ICdkYXRlJyB9KVxuICogLy89PiAnMjAxOS0wOS0xOCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA5MDc1IGZvcm1hdCwgdGltZSBvbmx5OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPOTA3NShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ3RpbWUnIH0pXG4gKiAvLz0+ICcxOTowMDo1MidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0SVNPOTA3NShkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGZvcm1hdCwgX29wdGlvbnMkcmVwcmVzZW50YXRpO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGgsIFwiIHByZXNlbnRcIikpO1xuICB9XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGZvcm1hdCA9IFN0cmluZygoX29wdGlvbnMkZm9ybWF0ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZvcm1hdCkgIT09IG51bGwgJiYgX29wdGlvbnMkZm9ybWF0ICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmb3JtYXQgOiAnZXh0ZW5kZWQnKTtcbiAgdmFyIHJlcHJlc2VudGF0aW9uID0gU3RyaW5nKChfb3B0aW9ucyRyZXByZXNlbnRhdGkgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucmVwcmVzZW50YXRpb24pICE9PSBudWxsICYmIF9vcHRpb25zJHJlcHJlc2VudGF0aSAhPT0gdm9pZCAwID8gX29wdGlvbnMkcmVwcmVzZW50YXRpIDogJ2NvbXBsZXRlJyk7XG4gIGlmIChmb3JtYXQgIT09ICdleHRlbmRlZCcgJiYgZm9ybWF0ICE9PSAnYmFzaWMnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJmb3JtYXQgbXVzdCBiZSAnZXh0ZW5kZWQnIG9yICdiYXNpYydcIik7XG4gIH1cbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAnZGF0ZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICd0aW1lJyAmJiByZXByZXNlbnRhdGlvbiAhPT0gJ2NvbXBsZXRlJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwicmVwcmVzZW50YXRpb24gbXVzdCBiZSAnZGF0ZScsICd0aW1lJywgb3IgJ2NvbXBsZXRlJ1wiKTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBkYXRlRGVsaW1pdGVyID0gZm9ybWF0ID09PSAnZXh0ZW5kZWQnID8gJy0nIDogJyc7XG4gIHZhciB0aW1lRGVsaW1pdGVyID0gZm9ybWF0ID09PSAnZXh0ZW5kZWQnID8gJzonIDogJyc7XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICdkYXRlJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ3RpbWUnKSB7XG4gICAgdmFyIGRheSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0RGF0ZSgpLCAyKTtcbiAgICB2YXIgbW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1vbnRoKCkgKyAxLCAyKTtcbiAgICB2YXIgeWVhciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0RnVsbFllYXIoKSwgNCk7XG5cbiAgICAvLyB5eXl5TU1kZCBvciB5eXl5LU1NLWRkLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHllYXIpLmNvbmNhdChkYXRlRGVsaW1pdGVyKS5jb25jYXQobW9udGgpLmNvbmNhdChkYXRlRGVsaW1pdGVyKS5jb25jYXQoZGF5KTtcbiAgfVxuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICdkYXRlJykge1xuICAgIHZhciBob3VyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRIb3VycygpLCAyKTtcbiAgICB2YXIgbWludXRlID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICAgIHZhciBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFNlY29uZHMoKSwgMik7XG5cbiAgICAvLyBJZiB0aGVyZSdzIGFsc28gZGF0ZSwgc2VwYXJhdGUgaXQgd2l0aCB0aW1lIHdpdGggYSBzcGFjZVxuICAgIHZhciBzZXBhcmF0b3IgPSByZXN1bHQgPT09ICcnID8gJycgOiAnICc7XG5cbiAgICAvLyBISG1tc3Mgb3IgSEg6bW06c3MuXG4gICAgcmVzdWx0ID0gXCJcIi5jb25jYXQocmVzdWx0KS5jb25jYXQoc2VwYXJhdG9yKS5jb25jYXQoaG91cikuY29uY2F0KHRpbWVEZWxpbWl0ZXIpLmNvbmNhdChtaW51dGUpLmNvbmNhdCh0aW1lRGVsaW1pdGVyKS5jb25jYXQoc2Vjb25kKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdElTT0R1cmF0aW9uXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCBhIGR1cmF0aW9uIG9iamVjdCBhY2NvcmRpbmcgYXMgSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBGb3JtYXQgYSBkdXJhdGlvbiBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBJU08gODYwMSBkdXJhdGlvbiBzdGFuZGFyZCAoaHR0cHM6Ly93d3cuZGlnaS5jb20vcmVzb3VyY2VzL2RvY3VtZW50YXRpb24vZGlnaWRvY3MvOTAwMDE0MzctMTMvcmVmZXJlbmNlL3JfaXNvXzg2MDFfZHVyYXRpb25fZm9ybWF0Lmh0bSlcbiAqXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBkdXJhdGlvbiB0byBmb3JtYXRcbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IFJlcXVpcmVzIDEgYXJndW1lbnRcbiAqIEB0aHJvd3Mge0Vycm9yfSBBcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3JtYXQgdGhlIGdpdmVuIGR1cmF0aW9uIGFzIElTTyA4NjAxIHN0cmluZ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPRHVyYXRpb24oe1xuICogICB5ZWFyczogMzksXG4gKiAgIG1vbnRoczogMixcbiAqICAgZGF5czogMjAsXG4gKiAgIGhvdXJzOiA3LFxuICogICBtaW51dGVzOiA1LFxuICogICBzZWNvbmRzOiAwXG4gKiB9KVxuICogLy89PiAnUDM5WTJNMjBEVDBIME0wUydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0SVNPRHVyYXRpb24oZHVyYXRpb24pIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIGlmIChfdHlwZW9mKGR1cmF0aW9uKSAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignRHVyYXRpb24gbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgdmFyIF9kdXJhdGlvbiR5ZWFycyA9IGR1cmF0aW9uLnllYXJzLFxuICAgIHllYXJzID0gX2R1cmF0aW9uJHllYXJzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJHllYXJzLFxuICAgIF9kdXJhdGlvbiRtb250aHMgPSBkdXJhdGlvbi5tb250aHMsXG4gICAgbW9udGhzID0gX2R1cmF0aW9uJG1vbnRocyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRtb250aHMsXG4gICAgX2R1cmF0aW9uJGRheXMgPSBkdXJhdGlvbi5kYXlzLFxuICAgIGRheXMgPSBfZHVyYXRpb24kZGF5cyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRkYXlzLFxuICAgIF9kdXJhdGlvbiRob3VycyA9IGR1cmF0aW9uLmhvdXJzLFxuICAgIGhvdXJzID0gX2R1cmF0aW9uJGhvdXJzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJGhvdXJzLFxuICAgIF9kdXJhdGlvbiRtaW51dGVzID0gZHVyYXRpb24ubWludXRlcyxcbiAgICBtaW51dGVzID0gX2R1cmF0aW9uJG1pbnV0ZXMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kbWludXRlcyxcbiAgICBfZHVyYXRpb24kc2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMsXG4gICAgc2Vjb25kcyA9IF9kdXJhdGlvbiRzZWNvbmRzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJHNlY29uZHM7XG4gIHJldHVybiBcIlBcIi5jb25jYXQoeWVhcnMsIFwiWVwiKS5jb25jYXQobW9udGhzLCBcIk1cIikuY29uY2F0KGRheXMsIFwiRFRcIikuY29uY2F0KGhvdXJzLCBcIkhcIikuY29uY2F0KG1pbnV0ZXMsIFwiTVwiKS5jb25jYXQoc2Vjb25kcywgXCJTXCIpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRSRkMzMzM5XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIFJGQyAzMzM5IHN0YW5kYXJkIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNikuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBSRkMgMzMzOSBmb3JtYXQuIE9wdGlvbnMgbWF5IGJlIHBhc3NlZCB0byBjb250cm9sIHRoZSBwYXJ0cyBhbmQgbm90YXRpb25zIG9mIHRoZSBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0gezB8MXwyfDN9IFtvcHRpb25zLmZyYWN0aW9uRGlnaXRzPTBdIC0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhZnRlciBzZWNvbmRzXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZyYWN0aW9uRGlnaXRzYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgM1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gUkZDIDMzMzkgZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UkZDMzMzOShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTJaJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gUkZDIDMzMzkgZm9ybWF0LCAyIGRpZ2l0cyBvZiBzZWNvbmQgZnJhY3Rpb246XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSRkMzMzM5KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIsIDIzNCksIHsgZnJhY3Rpb25EaWdpdHM6IDIgfSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTIuMjNaJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gUkZDIDMzMzkgZm9ybWF0LCAzIGRpZ2l0cyBvZiBzZWNvbmQgZnJhY3Rpb25cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzMzMzkobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiwgMjM0KSwgeyBmcmFjdGlvbkRpZ2l0czogMyB9KVxuICogLy89PiAnMjAxOS0wOS0xOFQxOTowMDo1Mi4yMzRaJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRSRkMzMzM5KGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkZnJhY3Rpb25EaWdpO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoLCBcIiBwcmVzZW50XCIpKTtcbiAgfVxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBmcmFjdGlvbkRpZ2l0cyA9IE51bWJlcigoX29wdGlvbnMkZnJhY3Rpb25EaWdpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZyYWN0aW9uRGlnaXRzKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmcmFjdGlvbkRpZ2kgIT09IHZvaWQgMCA/IF9vcHRpb25zJGZyYWN0aW9uRGlnaSA6IDApO1xuXG4gIC8vIFRlc3QgaWYgZnJhY3Rpb25EaWdpdHMgaXMgYmV0d2VlbiAwIGFuZCAzIF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZnJhY3Rpb25EaWdpdHMgPj0gMCAmJiBmcmFjdGlvbkRpZ2l0cyA8PSAzKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmcmFjdGlvbkRpZ2l0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXkgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldERhdGUoKSwgMik7XG4gIHZhciBtb250aCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICB2YXIgeWVhciA9IG9yaWdpbmFsRGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0SG91cnMoKSwgMik7XG4gIHZhciBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1pbnV0ZXMoKSwgMik7XG4gIHZhciBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFNlY29uZHMoKSwgMik7XG4gIHZhciBmcmFjdGlvbmFsU2Vjb25kID0gJyc7XG4gIGlmIChmcmFjdGlvbkRpZ2l0cyA+IDApIHtcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gb3JpZ2luYWxEYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgIHZhciBmcmFjdGlvbmFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzICogTWF0aC5wb3coMTAsIGZyYWN0aW9uRGlnaXRzIC0gMykpO1xuICAgIGZyYWN0aW9uYWxTZWNvbmQgPSAnLicgKyBhZGRMZWFkaW5nWmVyb3MoZnJhY3Rpb25hbFNlY29uZHMsIGZyYWN0aW9uRGlnaXRzKTtcbiAgfVxuICB2YXIgb2Zmc2V0ID0gJyc7XG4gIHZhciB0ek9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICBpZiAodHpPZmZzZXQgIT09IDApIHtcbiAgICB2YXIgYWJzb2x1dGVPZmZzZXQgPSBNYXRoLmFicyh0ek9mZnNldCk7XG4gICAgdmFyIGhvdXJPZmZzZXQgPSBhZGRMZWFkaW5nWmVyb3ModG9JbnRlZ2VyKGFic29sdXRlT2Zmc2V0IC8gNjApLCAyKTtcbiAgICB2YXIgbWludXRlT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKGFic29sdXRlT2Zmc2V0ICUgNjAsIDIpO1xuICAgIC8vIElmIGxlc3MgdGhhbiAwLCB0aGUgc2lnbiBpcyArLCBiZWNhdXNlIGl0IGlzIGFoZWFkIG9mIHRpbWUuXG4gICAgdmFyIHNpZ24gPSB0ek9mZnNldCA8IDAgPyAnKycgOiAnLSc7XG4gICAgb2Zmc2V0ID0gXCJcIi5jb25jYXQoc2lnbikuY29uY2F0KGhvdXJPZmZzZXQsIFwiOlwiKS5jb25jYXQobWludXRlT2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICBvZmZzZXQgPSAnWic7XG4gIH1cbiAgcmV0dXJuIFwiXCIuY29uY2F0KHllYXIsIFwiLVwiKS5jb25jYXQobW9udGgsIFwiLVwiKS5jb25jYXQoZGF5LCBcIlRcIikuY29uY2F0KGhvdXIsIFwiOlwiKS5jb25jYXQobWludXRlLCBcIjpcIikuY29uY2F0KHNlY29uZCkuY29uY2F0KGZyYWN0aW9uYWxTZWNvbmQpLmNvbmNhdChvZmZzZXQpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG52YXIgZGF5cyA9IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J107XG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdFJGQzcyMzFcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlIGFjY29yZGluZyB0byB0aGUgUkZDIDcyMzEgc3RhbmRhcmQgKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNy4xLjEuMSkuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBSRkMgNzIzMSBmb3JtYXQuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYWx3YXlzIGJlIGluIFVUQyB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gUkZDIDcyMzEgZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UkZDNzIzMShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJ1dlZCwgMTggU2VwIDIwMTkgMTk6MDA6NTIgR01UJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRSRkM3MjMxKGRpcnR5RGF0ZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoLCBcIiBwcmVzZW50XCIpKTtcbiAgfVxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBkYXlOYW1lID0gZGF5c1tvcmlnaW5hbERhdGUuZ2V0VVRDRGF5KCldO1xuICB2YXIgZGF5T2ZNb250aCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0VVRDRGF0ZSgpLCAyKTtcbiAgdmFyIG1vbnRoTmFtZSA9IG1vbnRoc1tvcmlnaW5hbERhdGUuZ2V0VVRDTW9udGgoKV07XG4gIHZhciB5ZWFyID0gb3JpZ2luYWxEYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBob3VyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRVVENIb3VycygpLCAyKTtcbiAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0VVRDTWludXRlcygpLCAyKTtcbiAgdmFyIHNlY29uZCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0VVRDU2Vjb25kcygpLCAyKTtcblxuICAvLyBSZXN1bHQgdmFyaWFibGVzLlxuICByZXR1cm4gXCJcIi5jb25jYXQoZGF5TmFtZSwgXCIsIFwiKS5jb25jYXQoZGF5T2ZNb250aCwgXCIgXCIpLmNvbmNhdChtb250aE5hbWUsIFwiIFwiKS5jb25jYXQoeWVhciwgXCIgXCIpLmNvbmNhdChob3VyLCBcIjpcIikuY29uY2F0KG1pbnV0ZSwgXCI6XCIpLmNvbmNhdChzZWNvbmQsIFwiIEdNVFwiKTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXQgZnJvbSBcIi4uL2Zvcm1hdC9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRSZWxhdGl2ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXByZXNlbnQgdGhlIGRhdGUgaW4gd29yZHMgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGJhc2UgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJlcHJlc2VudCB0aGUgZGF0ZSBpbiB3b3JkcyByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gYmFzZSBkYXRlLlxuICpcbiAqIHwgRGlzdGFuY2UgdG8gdGhlIGJhc2UgZGF0ZSB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IFByZXZpb3VzIDYgZGF5cyAgICAgICAgICAgfCBsYXN0IFN1bmRheSBhdCAwNDozMCBBTSAgIHxcbiAqIHwgTGFzdCBkYXkgICAgICAgICAgICAgICAgICB8IHllc3RlcmRheSBhdCAwNDozMCBBTSAgICAgfFxuICogfCBTYW1lIGRheSAgICAgICAgICAgICAgICAgIHwgdG9kYXkgYXQgMDQ6MzAgQU0gICAgICAgICB8XG4gKiB8IE5leHQgZGF5ICAgICAgICAgICAgICAgICAgfCB0b21vcnJvdyBhdCAwNDozMCBBTSAgICAgIHxcbiAqIHwgTmV4dCA2IGRheXMgICAgICAgICAgICAgICB8IFN1bmRheSBhdCAwNDozMCBBTSAgICAgICAgfFxuICogfCBPdGhlciAgICAgICAgICAgICAgICAgICAgIHwgMTIvMzEvMjAxNyAgICAgICAgICAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGZvcm1hdFxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYmFzZURhdGUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRhdGUgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbG9jYWxpemVgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0TG9uZ2AgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRSZWxhdGl2ZWAgcHJvcGVydHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IHRoZSBkYXRlIG9mIDYgZGF5cyBhZ28gaW4gd29yZHMgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGJhc2UgZGF0ZS4gSW4gdGhpcyBleGFtcGxlLCB0b2RheSBpcyBXZWRuZXNkYXlcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJlbGF0aXZlKGFkZERheXMobmV3IERhdGUoKSwgLTYpLCBuZXcgRGF0ZSgpKVxuICogLy89PiBcImxhc3QgVGh1cnNkYXkgYXQgMTI6NDUgQU1cIlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZShkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX3JlZjIsIF9yZWYzLCBfcmVmNCwgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUyLCBfb3B0aW9ucyRsb2NhbGUyJG9wdGksIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBiYXNlRGF0ZSA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAwKTtcbiAgaWYgKCFsb2NhbGUubG9jYWxpemUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBsb2NhbGl6ZSBwcm9wZXJ0eScpO1xuICB9XG4gIGlmICghbG9jYWxlLmZvcm1hdExvbmcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBmb3JtYXRMb25nIHByb3BlcnR5Jyk7XG4gIH1cbiAgaWYgKCFsb2NhbGUuZm9ybWF0UmVsYXRpdmUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBmb3JtYXRSZWxhdGl2ZSBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIGJhc2VEYXRlKTtcbiAgaWYgKGlzTmFOKGRpZmYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciB0b2tlbjtcbiAgaWYgKGRpZmYgPCAtNikge1xuICAgIHRva2VuID0gJ290aGVyJztcbiAgfSBlbHNlIGlmIChkaWZmIDwgLTEpIHtcbiAgICB0b2tlbiA9ICdsYXN0V2Vlayc7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDApIHtcbiAgICB0b2tlbiA9ICd5ZXN0ZXJkYXknO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAxKSB7XG4gICAgdG9rZW4gPSAndG9kYXknO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAyKSB7XG4gICAgdG9rZW4gPSAndG9tb3Jyb3cnO1xuICB9IGVsc2UgaWYgKGRpZmYgPCA3KSB7XG4gICAgdG9rZW4gPSAnbmV4dFdlZWsnO1xuICB9IGVsc2Uge1xuICAgIHRva2VuID0gJ290aGVyJztcbiAgfVxuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhkYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpKTtcbiAgdmFyIHV0Y0Jhc2VEYXRlID0gc3ViTWlsbGlzZWNvbmRzKGJhc2VEYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGJhc2VEYXRlKSk7XG4gIHZhciBmb3JtYXRTdHIgPSBsb2NhbGUuZm9ybWF0UmVsYXRpdmUodG9rZW4sIHV0Y0RhdGUsIHV0Y0Jhc2VEYXRlLCB7XG4gICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT25cbiAgfSk7XG4gIHJldHVybiBmb3JtYXQoZGF0ZSwgZm9ybWF0U3RyLCB7XG4gICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT25cbiAgfSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZnJvbVVuaXhUaW1lXG4gKiBAY2F0ZWdvcnkgVGltZXN0YW1wIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENyZWF0ZSBhIGRhdGUgZnJvbSBhIFVuaXggdGltZXN0YW1wLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ3JlYXRlIGEgZGF0ZSBmcm9tIGEgVW5peCB0aW1lc3RhbXAgKGluIHNlY29uZHMpLiBEZWNpbWFsIHZhbHVlcyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gdW5peFRpbWUgLSB0aGUgZ2l2ZW4gVW5peCB0aW1lc3RhbXAgKGluIHNlY29uZHMpXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgdGhlIGRhdGUgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZyb21Vbml4VGltZSgxMzMwNTE1OTA1KVxuICogLy89PiBXZWQgRmViIDI5IDIwMTIgMTE6NDU6MDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnJvbVVuaXhUaW1lKGRpcnR5VW5peFRpbWUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB1bml4VGltZSA9IHRvSW50ZWdlcihkaXJ0eVVuaXhUaW1lKTtcbiAgcmV0dXJuIHRvRGF0ZSh1bml4VGltZSAqIDEwMDApO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF0ZVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgZGF5IG9mIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSBtb250aCBpcyAyOSBGZWJydWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF0ZShuZXcgRGF0ZSgyMDEyLCAxLCAyOSkpXG4gKiAvLz0+IDI5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERhdGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5T2ZNb250aCA9IGRhdGUuZ2V0RGF0ZSgpO1xuICByZXR1cm4gZGF5T2ZNb250aDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHswfDF8MnwzfDR8NXw2fSB0aGUgZGF5IG9mIHdlZWssIDAgcmVwcmVzZW50cyBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIHdlZWsgaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheShuZXcgRGF0ZSgyMDEyLCAxLCAyOSkpXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHJldHVybiBkYXk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlllYXIgZnJvbSBcIi4uL3N0YXJ0T2ZZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERheU9mWWVhclxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGRheSBvZiB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSB5ZWFyIGlzIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF5T2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiAxODNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF5T2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZSwgc3RhcnRPZlllYXIoZGF0ZSkpO1xuICB2YXIgZGF5T2ZZZWFyID0gZGlmZiArIDE7XG4gIHJldHVybiBkYXlPZlllYXI7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlzSW5Nb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZGF5cyBhcmUgaW4gRmVicnVhcnkgMjAwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheXNJbk1vbnRoKG5ldyBEYXRlKDIwMDAsIDEpKVxuICogLy89PiAyOVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXlzSW5Nb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGhJbmRleCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgdmFyIGxhc3REYXlPZk1vbnRoID0gbmV3IERhdGUoMCk7XG4gIGxhc3REYXlPZk1vbnRoLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoSW5kZXggKyAxLCAwKTtcbiAgbGFzdERheU9mTW9udGguc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBsYXN0RGF5T2ZNb250aC5nZXREYXRlKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNMZWFwWWVhciBmcm9tIFwiLi4vaXNMZWFwWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF5c0luWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBkYXlzIGFyZSBpbiAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF5c0luWWVhcihuZXcgRGF0ZSgyMDEyLCAwLCAxKSlcbiAqIC8vPT4gMzY2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheXNJblllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoU3RyaW5nKG5ldyBEYXRlKGRhdGUpKSA9PT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG4gIHJldHVybiBpc0xlYXBZZWFyKGRhdGUpID8gMzY2IDogMzY1O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGVjYWRlXG4gKiBAY2F0ZWdvcnkgRGVjYWRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGVjYWRlIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkZWNhZGUgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgeWVhciBvZiBkZWNhZGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkZWNhZGUgYmVsb25ncyAyNyBOb3ZlbWJlciAxOTQyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGVjYWRlKG5ldyBEYXRlKDE5NDIsIDEwLCAyNykpXG4gKiAvLz0+IDE5NDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGVjYWRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWNhZGUgPSBNYXRoLmZsb29yKHllYXIgLyAxMCkgKiAxMDtcbiAgcmV0dXJuIGRlY2FkZTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyBhcyBnZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL19saWIvYXNzaWduL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERlZmF1bHRPcHRpb25zXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCBkZWZhdWx0IG9wdGlvbnMuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBkZWZhdWx0cyBmb3JcbiAqIGBvcHRpb25zLmxvY2FsZWAsIGBvcHRpb25zLndlZWtTdGFydHNPbmAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWBcbiAqIGFyZ3VtZW50cyBmb3IgYWxsIGZ1bmN0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSB3aXRoIFtzZXREZWZhdWx0T3B0aW9uc117QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXREZWZhdWx0T3B0aW9uc30uXG4gKlxuICogQHJldHVybnMge09iamVjdH0gZGVmYXVsdCBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IGdldERlZmF1bHRPcHRpb25zKClcbiAqIC8vPT4ge31cbiAqXG4gKiBAZXhhbXBsZVxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnNPbjogMSwgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0IH0pXG4gKiBjb25zdCByZXN1bHQgPSBnZXREZWZhdWx0T3B0aW9ucygpXG4gKiAvLz0+IHsgd2Vla1N0YXJzT246IDEsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICByZXR1cm4gYXNzaWduKHt9LCBnZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zKCkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0SG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGhvdXJzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBob3VycyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0SG91cnMobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSkpXG4gKiAvLz0+IDExXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhvdXJzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICByZXR1cm4gaG91cnM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRJU09EYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZSxcbiAqIHdoaWNoIGlzIDcgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5IGV0Yy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgZGF5IG9mIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSBJU08gd2VlayBpcyAyNiBGZWJydWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPRGF5KG5ldyBEYXRlKDIwMTIsIDEsIDI2KSlcbiAqIC8vPT4gN1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRJU09EYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgaWYgKGRheSA9PT0gMCkge1xuICAgIGRheSA9IDc7XG4gIH1cbiAgcmV0dXJuIGRheTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBJU08gd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgSVNPLXdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDU/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRJU09XZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiA1M1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mSVNPV2VlayhkYXRlKS5nZXRUaW1lKCkgLSBzdGFydE9mSVNPV2Vla1llYXIoZGF0ZSkuZ2V0VGltZSgpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSykgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0SVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZSxcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIElTTy13ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IDIwMDRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwiaW1wb3J0IHN0YXJ0T2ZJU09XZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkV2Vla3MgZnJvbSBcIi4uL2FkZFdlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtzSW5ZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIElTTyB3ZWVrcyBpbiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSB3ZWVrcyBhcmUgaW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT1dlZWtzSW5ZZWFyKG5ldyBEYXRlKDIwMTUsIDEsIDExKSlcbiAqIC8vPT4gNTNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgdGhpc1llYXIgPSBzdGFydE9mSVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIG5leHRZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGFkZFdlZWtzKHRoaXNZZWFyLCA2MCkpO1xuICB2YXIgZGlmZiA9IG5leHRZZWFyLnZhbHVlT2YoKSAtIHRoaXNZZWFyLnZhbHVlT2YoKTtcbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1pbGxpc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbWlsbGlzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgbWlsbGlzZWNvbmRzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDUuMTIzOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0TWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUsIDEyMykpXG4gKiAvLz0+IDEyM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNaWxsaXNlY29uZHMoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgcmV0dXJuIG1pbGxpc2Vjb25kcztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIG1pbnV0ZXMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNTpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1pbnV0ZXMobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSwgNSkpXG4gKiAvLz0+IDQ1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1pbnV0ZXMoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICByZXR1cm4gbWludXRlcztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldE1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBtb250aCBpcyAyOSBGZWJydWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0TW9udGgobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICByZXR1cm4gbW9udGg7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBuYW1lIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IG92ZXJsYXAgaW4gdHdvIHRpbWUgaW50ZXJ2YWxzXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIHRoYXQgb3ZlcmxhcCBpbiB0d28gdGltZSBpbnRlcnZhbHNcbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbExlZnQgLSB0aGUgZmlyc3QgaW50ZXJ2YWwgdG8gY29tcGFyZS4gU2VlIFtJbnRlcnZhbF17QGxpbmsgZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsUmlnaHQgLSB0aGUgc2Vjb25kIGludGVydmFsIHRvIGNvbXBhcmUuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGRvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgdGhhdCBvdmVybGFwIGluIHR3byB0aW1lIGludGVydmFsc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHMgYWRkcyAxIGZvciBlYWNoIHN0YXJ0ZWQgb3ZlcmxhcHBpbmcgZGF5OlxuICogZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTcpLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIxKSB9XG4gKiApXG4gKiAvLz0+IDNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIG5vbi1vdmVybGFwcGluZyB0aW1lIGludGVydmFscyByZXR1cm5zIDA6XG4gKiBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjIpIH1cbiAqIClcbiAqIC8vPT4gMFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzKGRpcnR5SW50ZXJ2YWxMZWZ0LCBkaXJ0eUludGVydmFsUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbExlZnQgPSBkaXJ0eUludGVydmFsTGVmdCB8fCB7fTtcbiAgdmFyIGludGVydmFsUmlnaHQgPSBkaXJ0eUludGVydmFsUmlnaHQgfHwge307XG4gIHZhciBsZWZ0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgbGVmdEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxMZWZ0LmVuZCkuZ2V0VGltZSgpO1xuICB2YXIgcmlnaHRTdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgcmlnaHRFbmRUaW1lID0gdG9EYXRlKGludGVydmFsUmlnaHQuZW5kKS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEobGVmdFN0YXJ0VGltZSA8PSBsZWZ0RW5kVGltZSAmJiByaWdodFN0YXJ0VGltZSA8PSByaWdodEVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgaXNPdmVybGFwcGluZyA9IGxlZnRTdGFydFRpbWUgPCByaWdodEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPCBsZWZ0RW5kVGltZTtcbiAgaWYgKCFpc092ZXJsYXBwaW5nKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIG92ZXJsYXBTdGFydERhdGUgPSByaWdodFN0YXJ0VGltZSA8IGxlZnRTdGFydFRpbWUgPyBsZWZ0U3RhcnRUaW1lIDogcmlnaHRTdGFydFRpbWU7XG4gIHZhciBvdmVybGFwRW5kRGF0ZSA9IHJpZ2h0RW5kVGltZSA+IGxlZnRFbmRUaW1lID8gbGVmdEVuZFRpbWUgOiByaWdodEVuZFRpbWU7XG4gIHZhciBkaWZmZXJlbmNlSW5NcyA9IG92ZXJsYXBFbmREYXRlIC0gb3ZlcmxhcFN0YXJ0RGF0ZTtcbiAgcmV0dXJuIE1hdGguY2VpbChkaWZmZXJlbmNlSW5NcyAvIE1JTExJU0VDT05EU19JTl9EQVkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0UXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSB5ZWFyIHF1YXJ0ZXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHllYXIgcXVhcnRlciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggcXVhcnRlciBpcyAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBxdWFydGVyID0gTWF0aC5mbG9vcihkYXRlLmdldE1vbnRoKCkgLyAzKSArIDE7XG4gIHJldHVybiBxdWFydGVyO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0U2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgc2Vjb25kcyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1LjEyMzpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldFNlY29uZHMobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSwgNSwgMTIzKSlcbiAqIC8vPT4gNVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTZWNvbmRzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKTtcbiAgcmV0dXJuIHNlY29uZHM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRUaW1lXG4gKiBAY2F0ZWdvcnkgVGltZXN0YW1wIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbWlsbGlzZWNvbmRzIHRpbWVzdGFtcCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbWlsbGlzZWNvbmRzIHRpbWVzdGFtcCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB0aW1lc3RhbXBcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIHRpbWVzdGFtcCBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1LjEyMzpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldFRpbWUobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSwgNSwgMTIzKSlcbiAqIC8vPT4gMTMzMDUxNTkwNTEyM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRUaW1lKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICByZXR1cm4gdGltZXN0YW1wO1xufSIsImltcG9ydCBnZXRUaW1lIGZyb20gXCIuLi9nZXRUaW1lL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRVbml4VGltZVxuICogQGNhdGVnb3J5IFRpbWVzdGFtcCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHNlY29uZHMgdGltZXN0YW1wIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzZWNvbmRzIHRpbWVzdGFtcCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB0aW1lc3RhbXBcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIHRpbWVzdGFtcCBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1IENFVDpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldFVuaXhUaW1lKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUpKVxuICogLy89PiAxMzMwNTEyMzA1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVuaXhUaW1lKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoZ2V0VGltZShkaXJ0eURhdGUpIC8gMTAwMCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZXZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZ2V0V2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBsb2NhbCB3ZWVrIGluZGV4IG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBsb2NhbCB3ZWVrIGluZGV4IG9mIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbG9jYWwgd2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNSB3aXRoIGRlZmF1bHQgb3B0aW9ucz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IDJcbiAqXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1LFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssXG4gKiAvLyBhbmQgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgYWx3YXlzIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IDUzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZldlZWsoZGF0ZSwgb3B0aW9ucykuZ2V0VGltZSgpIC0gc3RhcnRPZldlZWtZZWFyKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF0ZSBmcm9tIFwiLi4vZ2V0RGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERheSBmcm9tIFwiLi4vZ2V0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZk1vbnRoIGZyb20gXCIuLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRXZWVrT2ZNb250aFxuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSB3ZWVrIG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgd2VlayBvZiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB3ZWVrIG9mIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbW9udGggaXMgOSBOb3ZlbWJlciAyMDE3P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla09mTW9udGgobmV3IERhdGUoMjAxNywgMTAsIDkpKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWtPZk1vbnRoKGRhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBjdXJyZW50RGF5T2ZNb250aCA9IGdldERhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihjdXJyZW50RGF5T2ZNb250aCkpIHJldHVybiBOYU47XG4gIHZhciBzdGFydFdlZWtEYXkgPSBnZXREYXkoc3RhcnRPZk1vbnRoKGRhdGUpKTtcbiAgdmFyIGxhc3REYXlPZkZpcnN0V2VlayA9IHdlZWtTdGFydHNPbiAtIHN0YXJ0V2Vla0RheTtcbiAgaWYgKGxhc3REYXlPZkZpcnN0V2VlayA8PSAwKSBsYXN0RGF5T2ZGaXJzdFdlZWsgKz0gNztcbiAgdmFyIHJlbWFpbmluZ0RheXNBZnRlckZpcnN0V2VlayA9IGN1cnJlbnREYXlPZk1vbnRoIC0gbGFzdERheU9mRmlyc3RXZWVrO1xuICByZXR1cm4gTWF0aC5jZWlsKHJlbWFpbmluZ0RheXNBZnRlckZpcnN0V2VlayAvIDcpICsgMTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3M/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpKVxuICogLy89PiAyMDA1XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB3ZWVrIHN0YXJ0cyBvbiBTYXR1cmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgd2Vla1N0YXJ0c09uOiA2IH0pXG4gKiAvLz0+IDIwMDRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHRoZSBmaXJzdCB3ZWVrIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0IH0pXG4gKiAvLz0+IDIwMDRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmaXJzdFdlZWtDb250YWluc0RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDcgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWtPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCBsYXN0RGF5T2ZNb250aCBmcm9tIFwiLi4vbGFzdERheU9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTW9udGggZnJvbSBcIi4uL3N0YXJ0T2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0V2Vla3NJbk1vbnRoXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrcyBhIG1vbnRoIHNwYW5zLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgdGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlIHNwYW5zLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGRvZXMgRmVicnVhcnkgMjAxNSBzcGFuP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla3NJbk1vbnRoKG5ldyBEYXRlKDIwMTUsIDEsIDgpKVxuICogLy89PiA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksXG4gKiAvLyBob3cgbWFueSBjYWxlbmRhciB3ZWVrcyBkb2VzIEp1bHkgMjAxNyBzcGFuP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla3NJbk1vbnRoKG5ldyBEYXRlKDIwMTcsIDYsIDUpLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiA2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWtzSW5Nb250aChkYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhsYXN0RGF5T2ZNb250aChkYXRlKSwgc3RhcnRPZk1vbnRoKGRhdGUpLCBvcHRpb25zKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHllYXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRZZWFyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiAyMDE0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RnVsbFllYXIoKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBob3Vyc1RvTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgIENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBob3VycyB0byBtaWxsaXNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIGhvdXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBob3VycyAtIG51bWJlciBvZiBob3VycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIGhvdXJzIGNvbnZlcnRlZCB0byBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgaG91cnMgdG8gbWlsbGlzZWNvbmRzOlxuICogY29uc3QgcmVzdWx0ID0gaG91cnNUb01pbGxpc2Vjb25kcygyKVxuICogLy89PiA3MjAwMDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhvdXJzVG9NaWxsaXNlY29uZHMoaG91cnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWludXRlc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaG91cnNUb01pbnV0ZXNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgaG91cnMgdG8gbWludXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgaG91cnMgdG8gYSBmdWxsIG51bWJlciBvZiBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBob3VycyAtIG51bWJlciBvZiBob3VycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIGhvdXJzIGNvbnZlcnRlZCBpbiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIGhvdXJzIHRvIG1pbnV0ZXM6XG4gKiBjb25zdCByZXN1bHQgPSBob3Vyc1RvTWludXRlcygyKVxuICogLy89PiAxMjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaG91cnNUb01pbnV0ZXMoaG91cnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzICogbWludXRlc0luSG91cik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGhvdXJzVG9TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGhvdXJzIHRvIHNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIGhvdXJzIHRvIGEgZnVsbCBudW1iZXIgb2Ygc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaG91cnMgLSBudW1iZXIgb2YgaG91cnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBob3VycyBjb252ZXJ0ZWQgaW4gc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBob3VycyB0byBzZWNvbmRzOlxuICogY29uc3QgcmVzdWx0ID0gaG91cnNUb1NlY29uZHMoMilcbiAqIC8vPT4gNzIwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBob3Vyc1RvU2Vjb25kcyhob3Vycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMgKiBzZWNvbmRzSW5Ib3VyKTtcbn0iLCIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYHNjcmlwdHMvYnVpbGQvaW5kaWNlcy50c2AuIFBsZWFzZSwgZG9uJ3QgY2hhbmdlIGl0LlxuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGQgfSBmcm9tIFwiLi9hZGQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkQnVzaW5lc3NEYXlzIH0gZnJvbSBcIi4vYWRkQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZEhvdXJzIH0gZnJvbSBcIi4vYWRkSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkSVNPV2Vla1llYXJzIH0gZnJvbSBcIi4vYWRkSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRNaW51dGVzIH0gZnJvbSBcIi4vYWRkTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRNb250aHMgfSBmcm9tIFwiLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkUXVhcnRlcnMgfSBmcm9tIFwiLi9hZGRRdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRTZWNvbmRzIH0gZnJvbSBcIi4vYWRkU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRXZWVrcyB9IGZyb20gXCIuL2FkZFdlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZFllYXJzIH0gZnJvbSBcIi4vYWRkWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcgfSBmcm9tIFwiLi9hcmVJbnRlcnZhbHNPdmVybGFwcGluZy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbGFtcCB9IGZyb20gXCIuL2NsYW1wL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb3Nlc3RJbmRleFRvIH0gZnJvbSBcIi4vY2xvc2VzdEluZGV4VG8vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xvc2VzdFRvIH0gZnJvbSBcIi4vY2xvc2VzdFRvL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbXBhcmVBc2MgfSBmcm9tIFwiLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbXBhcmVEZXNjIH0gZnJvbSBcIi4vY29tcGFyZURlc2MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGF5c1RvV2Vla3MgfSBmcm9tIFwiLi9kYXlzVG9XZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5EYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5Ib3VycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbklTT1dlZWtZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluTWludXRlcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluTW9udGhzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJblF1YXJ0ZXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluU2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluV2Vla3MgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5XZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5ZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hEYXlPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaERheU9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaEhvdXJPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaEhvdXJPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hNaW51dGVPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaE1pbnV0ZU9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaE1vbnRoT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hNb250aE9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFF1YXJ0ZXJPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaFF1YXJ0ZXJPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hXZWVrT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hXZWVrT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoV2Vla2VuZE9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFdlZWtlbmRPZk1vbnRoIH0gZnJvbSBcIi4vZWFjaFdlZWtlbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hXZWVrZW5kT2ZZZWFyIH0gZnJvbSBcIi4vZWFjaFdlZWtlbmRPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFllYXJPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaFllYXJPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mRGF5IH0gZnJvbSBcIi4vZW5kT2ZEYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZEZWNhZGUgfSBmcm9tIFwiLi9lbmRPZkRlY2FkZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZkhvdXIgfSBmcm9tIFwiLi9lbmRPZkhvdXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZJU09XZWVrIH0gZnJvbSBcIi4vZW5kT2ZJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9lbmRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mTWludXRlIH0gZnJvbSBcIi4vZW5kT2ZNaW51dGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZNb250aCB9IGZyb20gXCIuL2VuZE9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZRdWFydGVyIH0gZnJvbSBcIi4vZW5kT2ZRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mU2Vjb25kIH0gZnJvbSBcIi4vZW5kT2ZTZWNvbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZUb2RheSB9IGZyb20gXCIuL2VuZE9mVG9kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZUb21vcnJvdyB9IGZyb20gXCIuL2VuZE9mVG9tb3Jyb3cvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZXZWVrIH0gZnJvbSBcIi4vZW5kT2ZXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mWWVhciB9IGZyb20gXCIuL2VuZE9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlllc3RlcmRheSB9IGZyb20gXCIuL2VuZE9mWWVzdGVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdCB9IGZyb20gXCIuL2Zvcm1hdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREaXN0YW5jZSB9IGZyb20gXCIuL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlU3RyaWN0IH0gZnJvbSBcIi4vZm9ybWF0RGlzdGFuY2VTdHJpY3QvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RGlzdGFuY2VUb05vdyB9IGZyb20gXCIuL2Zvcm1hdERpc3RhbmNlVG9Ob3cvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdCB9IGZyb20gXCIuL2Zvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RHVyYXRpb24gfSBmcm9tIFwiLi9mb3JtYXREdXJhdGlvbi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRJU08gfSBmcm9tIFwiLi9mb3JtYXRJU08vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0SVNPOTA3NSB9IGZyb20gXCIuL2Zvcm1hdElTTzkwNzUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0SVNPRHVyYXRpb24gfSBmcm9tIFwiLi9mb3JtYXRJU09EdXJhdGlvbi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRSRkMzMzM5IH0gZnJvbSBcIi4vZm9ybWF0UkZDMzMzOS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRSRkM3MjMxIH0gZnJvbSBcIi4vZm9ybWF0UkZDNzIzMS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRSZWxhdGl2ZSB9IGZyb20gXCIuL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZyb21Vbml4VGltZSB9IGZyb20gXCIuL2Zyb21Vbml4VGltZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXRlIH0gZnJvbSBcIi4vZ2V0RGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXkgfSBmcm9tIFwiLi9nZXREYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF5T2ZZZWFyIH0gZnJvbSBcIi4vZ2V0RGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheXNJbk1vbnRoIH0gZnJvbSBcIi4vZ2V0RGF5c0luTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF5c0luWWVhciB9IGZyb20gXCIuL2dldERheXNJblllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGVjYWRlIH0gZnJvbSBcIi4vZ2V0RGVjYWRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vZ2V0RGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SG91cnMgfSBmcm9tIFwiLi9nZXRIb3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRJU09EYXkgfSBmcm9tIFwiLi9nZXRJU09EYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPV2VlayB9IGZyb20gXCIuL2dldElTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPV2Vla1llYXIgfSBmcm9tIFwiLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRJU09XZWVrc0luWWVhciB9IGZyb20gXCIuL2dldElTT1dlZWtzSW5ZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2dldE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRNaW51dGVzIH0gZnJvbSBcIi4vZ2V0TWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRNb250aCB9IGZyb20gXCIuL2dldE1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzIH0gZnJvbSBcIi4vZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0UXVhcnRlciB9IGZyb20gXCIuL2dldFF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0U2Vjb25kcyB9IGZyb20gXCIuL2dldFNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0VGltZSB9IGZyb20gXCIuL2dldFRpbWUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0VW5peFRpbWUgfSBmcm9tIFwiLi9nZXRVbml4VGltZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXZWVrIH0gZnJvbSBcIi4vZ2V0V2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXZWVrT2ZNb250aCB9IGZyb20gXCIuL2dldFdlZWtPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdlZWtZZWFyIH0gZnJvbSBcIi4vZ2V0V2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2Vla3NJbk1vbnRoIH0gZnJvbSBcIi4vZ2V0V2Vla3NJbk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFllYXIgfSBmcm9tIFwiLi9nZXRZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhvdXJzVG9NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9ob3Vyc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhvdXJzVG9NaW51dGVzIH0gZnJvbSBcIi4vaG91cnNUb01pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaG91cnNUb1NlY29uZHMgfSBmcm9tIFwiLi9ob3Vyc1RvU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbnRlcnZhbFRvRHVyYXRpb24gfSBmcm9tIFwiLi9pbnRlcnZhbFRvRHVyYXRpb24vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW50bEZvcm1hdCB9IGZyb20gXCIuL2ludGxGb3JtYXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW50bEZvcm1hdERpc3RhbmNlIH0gZnJvbSBcIi4vaW50bEZvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQWZ0ZXIgfSBmcm9tIFwiLi9pc0FmdGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQmVmb3JlIH0gZnJvbSBcIi4vaXNCZWZvcmUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNEYXRlIH0gZnJvbSBcIi4vaXNEYXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXF1YWwgfSBmcm9tIFwiLi9pc0VxdWFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXhpc3RzIH0gZnJvbSBcIi4vaXNFeGlzdHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGaXJzdERheU9mTW9udGggfSBmcm9tIFwiLi9pc0ZpcnN0RGF5T2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0ZyaWRheSB9IGZyb20gXCIuL2lzRnJpZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRnV0dXJlIH0gZnJvbSBcIi4vaXNGdXR1cmUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNMYXN0RGF5T2ZNb250aCB9IGZyb20gXCIuL2lzTGFzdERheU9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNMZWFwWWVhciB9IGZyb20gXCIuL2lzTGVhcFllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNNYXRjaCB9IGZyb20gXCIuL2lzTWF0Y2gvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNNb25kYXkgfSBmcm9tIFwiLi9pc01vbmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1Bhc3QgfSBmcm9tIFwiLi9pc1Bhc3QvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lRGF5IH0gZnJvbSBcIi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZUhvdXIgfSBmcm9tIFwiLi9pc1NhbWVIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZUlTT1dlZWsgfSBmcm9tIFwiLi9pc1NhbWVJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZUlTT1dlZWtZZWFyIH0gZnJvbSBcIi4vaXNTYW1lSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lTWludXRlIH0gZnJvbSBcIi4vaXNTYW1lTWludXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZU1vbnRoIH0gZnJvbSBcIi4vaXNTYW1lTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lUXVhcnRlciB9IGZyb20gXCIuL2lzU2FtZVF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lU2Vjb25kIH0gZnJvbSBcIi4vaXNTYW1lU2Vjb25kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVdlZWsgfSBmcm9tIFwiLi9pc1NhbWVXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVllYXIgfSBmcm9tIFwiLi9pc1NhbWVZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2F0dXJkYXkgfSBmcm9tIFwiLi9pc1NhdHVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU3VuZGF5IH0gZnJvbSBcIi4vaXNTdW5kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzSG91ciB9IGZyb20gXCIuL2lzVGhpc0hvdXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzSVNPV2VlayB9IGZyb20gXCIuL2lzVGhpc0lTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzTWludXRlIH0gZnJvbSBcIi4vaXNUaGlzTWludXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc01vbnRoIH0gZnJvbSBcIi4vaXNUaGlzTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzUXVhcnRlciB9IGZyb20gXCIuL2lzVGhpc1F1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzU2Vjb25kIH0gZnJvbSBcIi4vaXNUaGlzU2Vjb25kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1dlZWsgfSBmcm9tIFwiLi9pc1RoaXNXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1llYXIgfSBmcm9tIFwiLi9pc1RoaXNZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGh1cnNkYXkgfSBmcm9tIFwiLi9pc1RodXJzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVG9kYXkgfSBmcm9tIFwiLi9pc1RvZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVG9tb3Jyb3cgfSBmcm9tIFwiLi9pc1RvbW9ycm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVHVlc2RheSB9IGZyb20gXCIuL2lzVHVlc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1ZhbGlkIH0gZnJvbSBcIi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1dlZG5lc2RheSB9IGZyb20gXCIuL2lzV2VkbmVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzV2Vla2VuZCB9IGZyb20gXCIuL2lzV2Vla2VuZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1dpdGhpbkludGVydmFsIH0gZnJvbSBcIi4vaXNXaXRoaW5JbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1llc3RlcmRheSB9IGZyb20gXCIuL2lzWWVzdGVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZkRlY2FkZSB9IGZyb20gXCIuL2xhc3REYXlPZkRlY2FkZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZJU09XZWVrIH0gZnJvbSBcIi4vbGFzdERheU9mSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZJU09XZWVrWWVhciB9IGZyb20gXCIuL2xhc3REYXlPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZk1vbnRoIH0gZnJvbSBcIi4vbGFzdERheU9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mUXVhcnRlciB9IGZyb20gXCIuL2xhc3REYXlPZlF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mV2VlayB9IGZyb20gXCIuL2xhc3REYXlPZldlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mWWVhciB9IGZyb20gXCIuL2xhc3REYXlPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGlnaHRGb3JtYXQgfSBmcm9tIFwiLi9saWdodEZvcm1hdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXggfSBmcm9tIFwiLi9tYXgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbGxpc2Vjb25kc1RvSG91cnMgfSBmcm9tIFwiLi9taWxsaXNlY29uZHNUb0hvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbGxpc2Vjb25kc1RvTWludXRlcyB9IGZyb20gXCIuL21pbGxpc2Vjb25kc1RvTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHNUb1NlY29uZHMgfSBmcm9tIFwiLi9taWxsaXNlY29uZHNUb1NlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWluIH0gZnJvbSBcIi4vbWluL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbnV0ZXNUb0hvdXJzIH0gZnJvbSBcIi4vbWludXRlc1RvSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWludXRlc1RvTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vbWludXRlc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbnV0ZXNUb1NlY29uZHMgfSBmcm9tIFwiLi9taW51dGVzVG9TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1vbnRoc1RvUXVhcnRlcnMgfSBmcm9tIFwiLi9tb250aHNUb1F1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1vbnRoc1RvWWVhcnMgfSBmcm9tIFwiLi9tb250aHNUb1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHREYXkgfSBmcm9tIFwiLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRGcmlkYXkgfSBmcm9tIFwiLi9uZXh0RnJpZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRNb25kYXkgfSBmcm9tIFwiLi9uZXh0TW9uZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRTYXR1cmRheSB9IGZyb20gXCIuL25leHRTYXR1cmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0U3VuZGF5IH0gZnJvbSBcIi4vbmV4dFN1bmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0VGh1cnNkYXkgfSBmcm9tIFwiLi9uZXh0VGh1cnNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFR1ZXNkYXkgfSBmcm9tIFwiLi9uZXh0VHVlc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0V2VkbmVzZGF5IH0gZnJvbSBcIi4vbmV4dFdlZG5lc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZSB9IGZyb20gXCIuL3BhcnNlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlSVNPIH0gZnJvbSBcIi4vcGFyc2VJU08vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VKU09OIH0gZnJvbSBcIi4vcGFyc2VKU09OL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzRGF5IH0gZnJvbSBcIi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNGcmlkYXkgfSBmcm9tIFwiLi9wcmV2aW91c0ZyaWRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c01vbmRheSB9IGZyb20gXCIuL3ByZXZpb3VzTW9uZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzU2F0dXJkYXkgfSBmcm9tIFwiLi9wcmV2aW91c1NhdHVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzU3VuZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNTdW5kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNUaHVyc2RheSB9IGZyb20gXCIuL3ByZXZpb3VzVGh1cnNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNUdWVzZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNUdWVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzV2VkbmVzZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNXZWRuZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVhcnRlcnNUb01vbnRocyB9IGZyb20gXCIuL3F1YXJ0ZXJzVG9Nb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVhcnRlcnNUb1llYXJzIH0gZnJvbSBcIi4vcXVhcnRlcnNUb1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJvdW5kVG9OZWFyZXN0TWludXRlcyB9IGZyb20gXCIuL3JvdW5kVG9OZWFyZXN0TWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZWNvbmRzVG9Ib3VycyB9IGZyb20gXCIuL3NlY29uZHNUb0hvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNlY29uZHNUb01pbGxpc2Vjb25kcyB9IGZyb20gXCIuL3NlY29uZHNUb01pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZWNvbmRzVG9NaW51dGVzIH0gZnJvbSBcIi4vc2Vjb25kc1RvTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXQgfSBmcm9tIFwiLi9zZXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0RGF0ZSB9IGZyb20gXCIuL3NldERhdGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0RGF5IH0gZnJvbSBcIi4vc2V0RGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERheU9mWWVhciB9IGZyb20gXCIuL3NldERheU9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL3NldERlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldEhvdXJzIH0gZnJvbSBcIi4vc2V0SG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0SVNPRGF5IH0gZnJvbSBcIi4vc2V0SVNPRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldElTT1dlZWsgfSBmcm9tIFwiLi9zZXRJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldElTT1dlZWtZZWFyIH0gZnJvbSBcIi4vc2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0TWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vc2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldE1pbnV0ZXMgfSBmcm9tIFwiLi9zZXRNaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldE1vbnRoIH0gZnJvbSBcIi4vc2V0TW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0UXVhcnRlciB9IGZyb20gXCIuL3NldFF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0U2Vjb25kcyB9IGZyb20gXCIuL3NldFNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0V2VlayB9IGZyb20gXCIuL3NldFdlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0V2Vla1llYXIgfSBmcm9tIFwiLi9zZXRXZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRZZWFyIH0gZnJvbSBcIi4vc2V0WWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mRGF5IH0gZnJvbSBcIi4vc3RhcnRPZkRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mRGVjYWRlIH0gZnJvbSBcIi4vc3RhcnRPZkRlY2FkZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mSG91ciB9IGZyb20gXCIuL3N0YXJ0T2ZIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZJU09XZWVrIH0gZnJvbSBcIi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZklTT1dlZWtZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZNaW51dGUgfSBmcm9tIFwiLi9zdGFydE9mTWludXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZNb250aCB9IGZyb20gXCIuL3N0YXJ0T2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mUXVhcnRlciB9IGZyb20gXCIuL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZTZWNvbmQgfSBmcm9tIFwiLi9zdGFydE9mU2Vjb25kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZUb2RheSB9IGZyb20gXCIuL3N0YXJ0T2ZUb2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mVG9tb3Jyb3cgfSBmcm9tIFwiLi9zdGFydE9mVG9tb3Jyb3cvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mV2Vla1llYXIgfSBmcm9tIFwiLi9zdGFydE9mV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlllYXIgfSBmcm9tIFwiLi9zdGFydE9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mWWVzdGVyZGF5IH0gZnJvbSBcIi4vc3RhcnRPZlllc3RlcmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWIgfSBmcm9tIFwiLi9zdWIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViQnVzaW5lc3NEYXlzIH0gZnJvbSBcIi4vc3ViQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YkRheXMgfSBmcm9tIFwiLi9zdWJEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YkhvdXJzIH0gZnJvbSBcIi4vc3ViSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViSVNPV2Vla1llYXJzIH0gZnJvbSBcIi4vc3ViSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1Yk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJNaW51dGVzIH0gZnJvbSBcIi4vc3ViTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJNb250aHMgfSBmcm9tIFwiLi9zdWJNb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViUXVhcnRlcnMgfSBmcm9tIFwiLi9zdWJRdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJTZWNvbmRzIH0gZnJvbSBcIi4vc3ViU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJXZWVrcyB9IGZyb20gXCIuL3N1YldlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YlllYXJzIH0gZnJvbSBcIi4vc3ViWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdlZWtzVG9EYXlzIH0gZnJvbSBcIi4vd2Vla3NUb0RheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgeWVhcnNUb01vbnRocyB9IGZyb20gXCIuL3llYXJzVG9Nb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgeWVhcnNUb1F1YXJ0ZXJzIH0gZnJvbSBcIi4veWVhcnNUb1F1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHMvaW5kZXguanNcIjsiLCJpbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZCBmcm9tIFwiLi4vYWRkL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkhvdXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Ib3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1pbnV0ZXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbnV0ZXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Nb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5ZZWFycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaW50ZXJ2YWxUb0R1cmF0aW9uXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgaW50ZXJ2YWwgdG8gZHVyYXRpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBpbnRlcnZhbCBvYmplY3QgdG8gYSBkdXJhdGlvbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwgdG8gY29udmVydCB0byBkdXJhdGlvblxuICpcbiAqIEByZXR1cm5zIHtEdXJhdGlvbn0gVGhlIGR1cmF0aW9uIE9iamVjdFxuICogQHRocm93cyB7VHlwZUVycm9yfSBSZXF1aXJlcyAyIGFyZ3VtZW50c1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYHN0YXJ0YCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBlbmRgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIGR1cmF0aW9uIGJldHdlZW4gSmFudWFyeSAxNSwgMTkyOSBhbmQgQXByaWwgNCwgMTk2OC5cbiAqIGludGVydmFsVG9EdXJhdGlvbih7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgxOTI5LCAwLCAxNSwgMTIsIDAsIDApLFxuICogICBlbmQ6IG5ldyBEYXRlKDE5NjgsIDMsIDQsIDE5LCA1LCAwKVxuICogfSlcbiAqIC8vID0+IHsgeWVhcnM6IDM5LCBtb250aHM6IDIsIGRheXM6IDIwLCBob3VyczogNywgbWludXRlczogNSwgc2Vjb25kczogMCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGVydmFsVG9EdXJhdGlvbihpbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0ID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZCA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICBpZiAoaXNOYU4oc3RhcnQuZ2V0VGltZSgpKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1N0YXJ0IERhdGUgaXMgaW52YWxpZCcpO1xuICBpZiAoaXNOYU4oZW5kLmdldFRpbWUoKSkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdFbmQgRGF0ZSBpcyBpbnZhbGlkJyk7XG4gIHZhciBkdXJhdGlvbiA9IHt9O1xuICBkdXJhdGlvbi55ZWFycyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJblllYXJzKGVuZCwgc3RhcnQpKTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGVuZCwgc3RhcnQpO1xuICB2YXIgcmVtYWluaW5nTW9udGhzID0gYWRkKHN0YXJ0LCB7XG4gICAgeWVhcnM6IHNpZ24gKiBkdXJhdGlvbi55ZWFyc1xuICB9KTtcbiAgZHVyYXRpb24ubW9udGhzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluTW9udGhzKGVuZCwgcmVtYWluaW5nTW9udGhzKSk7XG4gIHZhciByZW1haW5pbmdEYXlzID0gYWRkKHJlbWFpbmluZ01vbnRocywge1xuICAgIG1vbnRoczogc2lnbiAqIGR1cmF0aW9uLm1vbnRoc1xuICB9KTtcbiAgZHVyYXRpb24uZGF5cyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkRheXMoZW5kLCByZW1haW5pbmdEYXlzKSk7XG4gIHZhciByZW1haW5pbmdIb3VycyA9IGFkZChyZW1haW5pbmdEYXlzLCB7XG4gICAgZGF5czogc2lnbiAqIGR1cmF0aW9uLmRheXNcbiAgfSk7XG4gIGR1cmF0aW9uLmhvdXJzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluSG91cnMoZW5kLCByZW1haW5pbmdIb3VycykpO1xuICB2YXIgcmVtYWluaW5nTWludXRlcyA9IGFkZChyZW1haW5pbmdIb3Vycywge1xuICAgIGhvdXJzOiBzaWduICogZHVyYXRpb24uaG91cnNcbiAgfSk7XG4gIGR1cmF0aW9uLm1pbnV0ZXMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5NaW51dGVzKGVuZCwgcmVtYWluaW5nTWludXRlcykpO1xuICB2YXIgcmVtYWluaW5nU2Vjb25kcyA9IGFkZChyZW1haW5pbmdNaW51dGVzLCB7XG4gICAgbWludXRlczogc2lnbiAqIGR1cmF0aW9uLm1pbnV0ZXNcbiAgfSk7XG4gIGR1cmF0aW9uLnNlY29uZHMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5TZWNvbmRzKGVuZCwgcmVtYWluaW5nU2Vjb25kcykpO1xuICByZXR1cm4gZHVyYXRpb247XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaW50bEZvcm1hdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSAgRm9ybWF0IHRoZSBkYXRlIHdpdGggSW50bC5EYXRlVGltZUZvcm1hdCAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9EYXRlVGltZUZvcm1hdCkuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZ2l2ZW4gZm9ybWF0LlxuICogVGhlIG1ldGhvZCB1c2VzIFtgSW50bC5EYXRlVGltZUZvcm1hdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQpIGluc2lkZS5cbiAqIGZvcm1hdE9wdGlvbnMgYXJlIHRoZSBzYW1lIGFzIFtgSW50bC5EYXRlVGltZUZvcm1hdGAgb3B0aW9uc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9EYXRlVGltZUZvcm1hdCN1c2luZ19vcHRpb25zKVxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgYmVmb3JlIE5vZGUgdmVyc2lvbiAxMy4wLjAsIG9ubHkgdGhlIGxvY2FsZSBkYXRhIGZvciBlbi1VUyBpcyBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBhcmd1bWVudCAtIHRoZSBvcmlnaW5hbCBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0geydsb29rdXAnfCdiZXN0IGZpdCd9IFtmb3JtYXRPcHRpb25zLmxvY2FsZU1hdGNoZXI9J2Jlc3QgZml0J10gLSBsb2NhbGUgc2VsZWN0aW9uIGFsZ29yaXRobS5cbiAqIEBwYXJhbSB7J25hcnJvdyd8J3Nob3J0J3wnbG9uZyd9IFtmb3JtYXRPcHRpb25zLndlZWtkYXldIC0gcmVwcmVzZW50YXRpb24gdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gKiBAcGFyYW0geyduYXJyb3cnfCdzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy5lcmFdIC0gcmVwcmVzZW50YXRpb24gb2YgZXJhcy5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMueWVhcl0gLSByZXByZXNlbnRhdGlvbiBvZiB5ZWFycy5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J3wnbmFycm93J3wnc2hvcnQnfCdsb25nJ30gW2Zvcm1hdE9wdGlvbnMubW9udGg9J251bWVyaWMnXSAtIHJlcHJlc2VudGF0aW9uIG9mIG1vbnRoLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy5kYXk9J251bWVyaWMnXSAtIHJlcHJlc2VudGF0aW9uIG9mIGRheS5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMuaG91cj0nbnVtZXJpYyddIC0gcmVwcmVzZW50YXRpb24gb2YgaG91cnMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLm1pbnV0ZV0gLSByZXByZXNlbnRhdGlvbiBvZiBtaW51dGVzLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy5zZWNvbmRdIC0gcmVwcmVzZW50YXRpb24gb2Ygc2Vjb25kcy5cbiAqIEBwYXJhbSB7J3Nob3J0J3wnbG9uZyd9IFtmb3JtYXRPcHRpb25zLnRpbWVab25lTmFtZV0gLSByZXByZXNlbnRhdGlvbiBvZiBuYW1lcyBvZiB0aW1lIHpvbmVzLlxuICogQHBhcmFtIHsnYmFzaWMnfCdiZXN0IGZpdCd9IFtmb3JtYXRPcHRpb25zLmZvcm1hdE1hdGNoZXI9J2Jlc3QgZml0J10gLSBmb3JtYXQgc2VsZWN0aW9uIGFsZ29yaXRobS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW2Zvcm1hdE9wdGlvbnMuaG91cjEyXSAtIGRldGVybWluZXMgd2hldGhlciB0byB1c2UgMTItaG91ciB0aW1lIGZvcm1hdC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbZm9ybWF0T3B0aW9ucy50aW1lWm9uZV0gLSB0aGUgdGltZSB6b25lIHRvIHVzZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbbG9jYWxlT3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBsb2NhbGUuXG4gKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gW2xvY2FsZU9wdGlvbnMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZy5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZC5cbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDEwIE9jdG9iZXIgMjAxOSBpbiBHZXJtYW4uXG4gKiAvLyBDb252ZXJ0IHRoZSBkYXRlIHdpdGggZm9ybWF0J3Mgb3B0aW9ucyBhbmQgbG9jYWxlJ3Mgb3B0aW9ucy5cbiAqIGNvbnN0IHJlc3VsdCA9IGludGxGb3JtYXQobmV3IERhdGUoMjAxOSwgOSwgNCwgMTIsIDMwLCAxMywgNDU2KSwge1xuICogICAgICB3ZWVrZGF5OiAnbG9uZycsXG4gKiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAqICAgICAgbW9udGg6ICdsb25nJyxcbiAqICAgICAgZGF5OiAnbnVtZXJpYycsXG4gKiAgICB9LCB7XG4gKiAgICAgIGxvY2FsZTogJ2RlLURFJyxcbiAqICB9KVxuICogLy89PiBGcmVpdGFnLCA0LiBPa3RvYmVyIDIwMTlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDEwIE9jdG9iZXIgMjAxOS5cbiAqIC8vIENvbnZlcnQgdGhlIGRhdGUgd2l0aCBmb3JtYXQncyBvcHRpb25zLlxuICogY29uc3QgcmVzdWx0ID0gaW50bEZvcm1hdC5kZWZhdWx0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NiksIHtcbiAqICAgICAgeWVhcjogJ251bWVyaWMnLFxuICogICAgICBtb250aDogJ251bWVyaWMnLFxuICogICAgICBkYXk6ICdudW1lcmljJyxcbiAqICAgICAgaG91cjogJ251bWVyaWMnLFxuICogIH0pXG4gKiAvLz0+IDEwLzQvMjAxOSwgMTIgUE1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDEwIE9jdG9iZXIgMjAxOSBpbiBLb3JlYW4uXG4gKiAvLyBDb252ZXJ0IHRoZSBkYXRlIHdpdGggbG9jYWxlJ3Mgb3B0aW9ucy5cbiAqIGNvbnN0IHJlc3VsdCA9IGludGxGb3JtYXQobmV3IERhdGUoMjAxOSwgOSwgNCwgMTIsIDMwLCAxMywgNDU2KSwge1xuICogICAgICBsb2NhbGU6ICdrby1LUicsXG4gKiAgfSlcbiAqIC8vPT4gMjAxOS4gMTAuIDQuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkgaW4gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NikpXG4gKiAvLz0+IDEwLzQvMjAxOVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbnRsRm9ybWF0KGRhdGUsIGZvcm1hdE9yTG9jYWxlLCBsb2NhbGVPcHRpb25zKSB7XG4gIHZhciBfbG9jYWxlT3B0aW9ucztcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBmb3JtYXRPcHRpb25zO1xuICBpZiAoaXNGb3JtYXRPcHRpb25zKGZvcm1hdE9yTG9jYWxlKSkge1xuICAgIGZvcm1hdE9wdGlvbnMgPSBmb3JtYXRPckxvY2FsZTtcbiAgfSBlbHNlIHtcbiAgICBsb2NhbGVPcHRpb25zID0gZm9ybWF0T3JMb2NhbGU7XG4gIH1cbiAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KChfbG9jYWxlT3B0aW9ucyA9IGxvY2FsZU9wdGlvbnMpID09PSBudWxsIHx8IF9sb2NhbGVPcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxlT3B0aW9ucy5sb2NhbGUsIGZvcm1hdE9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbn1cbmZ1bmN0aW9uIGlzRm9ybWF0T3B0aW9ucyhvcHRzKSB7XG4gIHJldHVybiBvcHRzICE9PSB1bmRlZmluZWQgJiYgISgnbG9jYWxlJyBpbiBvcHRzKTtcbn0iLCJpbXBvcnQgeyBzZWNvbmRzSW5EYXksIHNlY29uZHNJbkhvdXIsIHNlY29uZHNJbk1pbnV0ZSwgc2Vjb25kc0luTW9udGgsIHNlY29uZHNJblF1YXJ0ZXIsIHNlY29uZHNJbldlZWssIHNlY29uZHNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Ib3VycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluSG91cnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaW51dGVzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluU2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpbnRsRm9ybWF0RGlzdGFuY2VcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0cyBkaXN0YW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBpbiBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdFxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBhbmQgZm9ybWF0cyBpdCBhcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gd2lsbCBwaWNrIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHVuaXQgZGVwZW5kaW5nIG9uIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGRhdGVzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGRpc3RhbmNlIGlzIGEgZmV3IGhvdXJzLCBpdCBtaWdodCByZXR1cm4gYHggaG91cnNgLiBJZiB0aGUgZGlzdGFuY2UgaXMgYSBmZXcgbW9udGhzLCBpdCBtaWdodCByZXR1cm4gYHggbW9udGhzYC5cbiAqXG4gKiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhIHVuaXQgdG8gZm9yY2UgdXNpbmcgaXQgcmVnYXJkbGVzcyBvZiB0aGUgZGlzdGFuY2UgdG8gZ2V0IGEgcmVzdWx0IGxpa2UgYDEyMzQ1NiBob3Vyc2AuXG4gKlxuICogU2VlIHRoZSB0YWJsZSBiZWxvdyBmb3IgdGhlIHVuaXQgcGlja2luZyBsb2dpYzpcbiAqXG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgfCBSZXN1bHQgKHBhc3QpICB8IFJlc3VsdCAoZnV0dXJlKSB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IDAgc2Vjb25kcyAgICAgICAgICAgICAgfCBub3cgICAgICAgICAgICB8IG5vdyAgICAgICAgICAgICB8XG4gKiB8IDEtNTkgc2Vjb25kcyAgICAgICAgICAgfCBYIHNlY29uZHMgYWdvICB8IGluIFggc2Vjb25kcyAgICB8XG4gKiB8IDEtNTkgbWludXRlcyAgICAgICAgICAgfCBYIG1pbnV0ZXMgYWdvICB8IGluIFggbWludXRlcyAgICB8XG4gKiB8IDEtMjMgaG91cnMgICAgICAgICAgICAgfCBYIGhvdXJzIGFnbyAgICB8IGluIFggaG91cnMgICAgICB8XG4gKiB8IDEgZGF5ICAgICAgICAgICAgICAgICAgfCB5ZXN0ZXJkYXkgICAgICB8IHRvbW9ycm93ICAgICAgICB8XG4gKiB8IDItNiBkYXlzICAgICAgICAgICAgICAgfCBYIGRheXMgYWdvICAgICB8IGluIFggZGF5cyAgICAgICB8XG4gKiB8IDcgZGF5cyAgICAgICAgICAgICAgICAgfCBsYXN0IHdlZWsgICAgICB8IG5leHQgd2VlayAgICAgICB8XG4gKiB8IDggZGF5cy0xIG1vbnRoICAgICAgICAgfCBYIHdlZWtzIGFnbyAgICB8IGluIFggd2Vla3MgICAgICB8XG4gKiB8IDEgbW9udGggICAgICAgICAgICAgICAgfCBsYXN0IG1vbnRoICAgICB8IG5leHQgbW9udGggICAgICB8XG4gKiB8IDItMyBtb250aHMgICAgICAgICAgICAgfCBYIG1vbnRocyBhZ28gICB8IGluIFggbW9udGhzICAgICB8XG4gKiB8IDEgcXVhcnRlciAgICAgICAgICAgICAgfCBsYXN0IHF1YXJ0ZXIgICB8IG5leHQgcXVhcnRlciAgICB8XG4gKiB8IDItMyBxdWFydGVycyAgICAgICAgICAgfCBYIHF1YXJ0ZXJzIGFnbyB8IGluIFggcXVhcnRlcnMgICB8XG4gKiB8IDEgeWVhciAgICAgICAgICAgICAgICAgfCBsYXN0IHllYXIgICAgICB8IG5leHQgeWVhciAgICAgICB8XG4gKiB8IDIrIHllYXJzICAgICAgICAgICAgICAgfCBYIHllYXJzIGFnbyAgICB8IGluIFggeWVhcnMgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBiYXNlRGF0ZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnVuaXRdIC0gZm9ybWF0cyB0aGUgZGlzdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gdW5pdCAoJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnKS5cbiAqIEBwYXJhbSB7U3RyaW5nfFN0cmluZ1tdfSBbb3B0aW9ucy5sb2NhbGVdIC0gdGhlIGxvY2FsZSB0byB1c2UuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMubG9jYWxlTWF0Y2hlcj0nYmVzdCBmaXQnXSAtIHRoZSBsb2NhbGUgbWF0Y2hpbmcgYWxnb3JpdGhtIHRvIHVzZS4gT3RoZXIgdmFsdWU6ICdsb29rdXAnLlxuICogU2VlIE1ETiBmb3IgZGV0YWlscyBbTG9jYWxlIGlkZW50aWZpY2F0aW9uIGFuZCBuZWdvdGlhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bCNsb2NhbGVfaWRlbnRpZmljYXRpb25fYW5kX25lZ290aWF0aW9uKVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLm51bWVyaWM9J2F1dG8nXSAtIHRoZSBvdXRwdXQgbWVzc2FnZSBmb3JtYXQuIFRoZSB2YWx1ZXMgYXJlICdhdXRvJyAoZS5nLiBgeWVzdGVyZGF5YCksICdhbHdheXMnKGUuZy4gYDEgZGF5IGFnb2ApLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnN0eWxlPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQuIFRoZSB2YWx1ZXMgYXJlOiAnbG9uZycgKGUuZy4gYDEgbW9udGhgKSwgJ3Nob3J0JyAoZS5nLiAnaW4gMSBtby4nKSwgJ25hcnJvdycgKGUuZy4gJ2luIDEgbW8uJykuXG4gKiBUaGUgbmFycm93IG9uZSBjb3VsZCBiZSBzaW1pbGFyIHRvIHRoZSBzaG9ydCBvbmUgZm9yIHNvbWUgbG9jYWxlcy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3JkcyBhY2NvcmRpbmcgdG8gbGFuZ3VhZ2Utc2Vuc2l0aXZlIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZy5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy51bml0YCBtdXN0IG5vdCBiZSBpbnZhbGlkIFVuaXRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBub3QgYmUgaW52YWxpZCBsb2NhbGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZU1hdGNoZXJgIG11c3Qgbm90IGJlIGludmFsaWQgbG9jYWxlTWF0Y2hlclxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubnVtZXJpY2AgbXVzdCBub3QgYmUgaW52YWxpZCBudW1lcmljXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5zdHlsZWAgbXVzdCBub3QgYmUgaW52YWxpZCBzdHlsZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBkYXRlcyB3aGVuIHRoZSBmaXN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZD9cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTAsIDMwLCAwKVxuICogKVxuICogLy89PiAnaW4gMSBob3VyJ1xuICpcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGRhdGVzIHdoZW4gdGhlIGZpc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZD9cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTAsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKVxuICogKVxuICogLy89PiAnMSBob3VyIGFnbydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNlIHRoZSB1bml0IG9wdGlvbiB0byBmb3JjZSB0aGUgZnVuY3Rpb24gdG8gb3V0cHV0IHRoZSByZXN1bHQgaW4gcXVhcnRlcnMuIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwibmV4dCB5ZWFyXCJcbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NywgNiwgNCwgMTAsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTAsIDMwLCAwKSxcbiAqICAgeyB1bml0OiAncXVhcnRlcicgfVxuICogKVxuICogLy89PiAnaW4gNSBxdWFydGVycydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNlIHRoZSBsb2NhbGUgb3B0aW9uIHRvIGdldCB0aGUgcmVzdWx0IGluIFNwYW5pc2guIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwiaW4gMSBob3VyXCIuXG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMCksXG4gKiAgIHsgbG9jYWxlOiAnZXMnIH1cbiAqIClcbiAqIC8vPT4gJ2RlbnRybyBkZSAxIGhvcmEnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgbnVtZXJpYyBvcHRpb24gdG8gZm9yY2UgdGhlIGZ1bmN0aW9uIHRvIHVzZSBudW1lcmljIHZhbHVlcy4gV2l0aG91dCBzZXR0aW5nIGl0LCB0aGUgZXhhbXBsZSB3b3VsZCByZXR1cm4gXCJ0b21vcnJvd1wiLlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA1LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICB7IG51bWVyaWM6ICdhbHdheXMnIH1cbiAqIClcbiAqIC8vPT4gJ2luIDEgZGF5J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2UgdGhlIHN0eWxlIG9wdGlvbiB0byBmb3JjZSB0aGUgZnVuY3Rpb24gdG8gdXNlIHNob3J0IHZhbHVlcy4gV2l0aG91dCBzZXR0aW5nIGl0LCB0aGUgZXhhbXBsZSB3b3VsZCByZXR1cm4gXCJpbiAyIHllYXJzXCIuXG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODgsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIHsgc3R5bGU6ICdzaG9ydCcgfVxuICogKVxuICogLy89PiAnaW4gMiB5cidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW50bEZvcm1hdERpc3RhbmNlKGRhdGUsIGJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgdmFsdWUgPSAwO1xuICB2YXIgdW5pdDtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRhdGUpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGJhc2VEYXRlKTtcbiAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51bml0KSkge1xuICAgIC8vIEdldCB0aGUgdW5pdCBiYXNlZCBvbiBkaWZmSW5TZWNvbmRzIGNhbGN1bGF0aW9ucyBpZiBubyB1bml0IGlzIHNwZWNpZmllZFxuICAgIHZhciBkaWZmSW5TZWNvbmRzID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTsgLy8gVGhlIHNtYWxsZXN0IHVuaXRcblxuICAgIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJbk1pbnV0ZSkge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICdzZWNvbmQnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5Ib3VyKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ21pbnV0ZSc7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJbkRheSAmJiBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpIDwgMSkge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnaG91cic7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJbldlZWsgJiYgKHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKSAmJiBNYXRoLmFicyh2YWx1ZSkgPCA3KSB7XG4gICAgICB1bml0ID0gJ2RheSc7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJbk1vbnRoKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ3dlZWsnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5RdWFydGVyKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICdtb250aCc7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJblllYXIpIHtcbiAgICAgIGlmIChkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIDwgNCkge1xuICAgICAgICAvLyBUbyBmaWx0ZXIgb3V0IGNhc2VzIHRoYXQgYXJlIGxlc3MgdGhhbiBhIHllYXIgYnV0IG1hdGNoIDQgcXVhcnRlcnNcbiAgICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgICB1bml0ID0gJ3F1YXJ0ZXInO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgICB1bml0ID0gJ3llYXInO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ3llYXInO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIHZhbHVlIGlmIHVuaXQgaXMgc3BlY2lmaWVkXG4gICAgdW5pdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy51bml0O1xuICAgIGlmICh1bml0ID09PSAnc2Vjb25kJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ21pbnV0ZScpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluTWludXRlcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdob3VyJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdkYXknKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICd3ZWVrJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ21vbnRoJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdxdWFydGVyJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ3llYXInKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfVxuICB9XG4gIHZhciBydGYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSwge1xuICAgIGxvY2FsZU1hdGNoZXI6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGVNYXRjaGVyLFxuICAgIG51bWVyaWM6IChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubnVtZXJpYykgfHwgJ2F1dG8nLFxuICAgIHN0eWxlOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3R5bGVcbiAgfSk7XG4gIHJldHVybiBydGYuZm9ybWF0KHZhbHVlLCB1bml0KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzQWZ0ZXJcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZmlyc3QgZGF0ZSBhZnRlciB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdGhhdCBzaG91bGQgYmUgYWZ0ZXIgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxMCBKdWx5IDE5ODkgYWZ0ZXIgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzQWZ0ZXIobmV3IERhdGUoMTk4OSwgNiwgMTApLCBuZXcgRGF0ZSgxOTg3LCAxLCAxMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBZnRlcihkaXJ0eURhdGUsIGRpcnR5RGF0ZVRvQ29tcGFyZSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGlydHlEYXRlVG9Db21wYXJlKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0JlZm9yZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRoYXQgc2hvdWxkIGJlIGJlZm9yZSB0aGUgb3RoZXIgb25lIHRvIHJldHVybiB0cnVlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlVG9Db21wYXJlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGZpcnN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxMCBKdWx5IDE5ODkgYmVmb3JlIDExIEZlYnJ1YXJ5IDE5ODc/XG4gKiBjb25zdCByZXN1bHQgPSBpc0JlZm9yZShuZXcgRGF0ZSgxOTg5LCA2LCAxMCksIG5ldyBEYXRlKDE5ODcsIDEsIDExKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNCZWZvcmUoZGlydHlEYXRlLCBkaXJ0eURhdGVUb0NvbXBhcmUpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA8IGRhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBkYXRlP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLiBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIGRhdGVzIHRyYW5zZmVycmVkIGFjcm9zcyBpZnJhbWVzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGEgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZShuZXcgRGF0ZSgpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoTmFOKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igc29tZSB2YWx1ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSgnMjAxNC0wMi0zMScpXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBvYmplY3Q6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoe30pXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRGF0ZSh2YWx1ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fCBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNFcXVhbFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGVxdWFsP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBlcXVhbD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBlcXVhbFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBKdWx5IDIwMTQgMDY6MzA6NDUuMDAwIGFuZCAyIEp1bHkgMjAxNCAwNjozMDo0NS41MDAgZXF1YWw/XG4gKiBjb25zdCByZXN1bHQgPSBpc0VxdWFsKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCAzMCwgNDUsIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCAzMCwgNDUsIDUwMClcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNFcXVhbChkaXJ0eUxlZnREYXRlLCBkaXJ0eVJpZ2h0RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5TGVmdERhdGUpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5UmlnaHREYXRlKTtcbiAgcmV0dXJuIGRhdGVMZWZ0LmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0LmdldFRpbWUoKTtcbn0iLCIvKipcbiAqIEBuYW1lIGlzRXhpc3RzXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGV4aXN0cz9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGNvbnZlcnQgdG8gYW4gZXhpc3RpbmcgZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0geWVhciBvZiB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtOdW1iZXJ9IG1vbnRoIG9mIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5IG9mIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgZXhpc3RzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDMgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRXhpc3RzKDIwMTgsIDAsIDMxKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNFeGlzdHMoMjAxOCwgMSwgMzEpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRXhpc3RzKHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMyBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgZGF0ZS5nZXREYXRlKCkgPT09IGRheTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRmlyc3REYXlPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGZpcnN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGZpcnN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEgU2VwdGVtYmVyIDIwMTQgdGhlIGZpcnN0IGRheSBvZiBhIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNGaXJzdERheU9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGaXJzdERheU9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF0ZSgpID09PSAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNGcmlkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIEZyaWRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIEZyaWRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBGcmlkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyNiBTZXB0ZW1iZXIgMjAxNCBGcmlkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc0ZyaWRheShuZXcgRGF0ZSgyMDE0LCA4LCAyNikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGcmlkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0Z1dHVyZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgZnV0dXJlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBmdXR1cmU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoZSBmdXR1cmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgMzEgRGVjZW1iZXIgMjAxNCBpbiB0aGUgZnV0dXJlP1xuICogY29uc3QgcmVzdWx0ID0gaXNGdXR1cmUobmV3IERhdGUoMjAxNCwgMTEsIDMxKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0Z1dHVyZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCkgPiBEYXRlLm5vdygpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGVuZE9mRGF5IGZyb20gXCIuLi9lbmRPZkRheS9pbmRleC5qc1wiO1xuaW1wb3J0IGVuZE9mTW9udGggZnJvbSBcIi4uL2VuZE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzTGFzdERheU9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjggRmVicnVhcnkgMjAxNCB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzTGFzdERheU9mTW9udGgobmV3IERhdGUoMjAxNCwgMSwgMjgpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGFzdERheU9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICByZXR1cm4gZW5kT2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBlbmRPZk1vbnRoKGRhdGUpLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzTGVhcFllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBsZWFwIHllYXI/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgbGVhcCB5ZWFyP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoZSBsZWFwIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxIFNlcHRlbWJlciAyMDEyIGluIHRoZSBsZWFwIHllYXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc0xlYXBZZWFyKG5ldyBEYXRlKDIwMTIsIDgsIDEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGVhcFllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMDtcbn0iLCJpbXBvcnQgcGFyc2UgZnJvbSBcIi4uL3BhcnNlL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNNYXRjaFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSB2YWxpZGF0ZXMgdGhlIGRhdGUgc3RyaW5nIGFnYWluc3QgZ2l2ZW4gZm9ybWF0c1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSB0cnVlIGlmIGdpdmVuIGRhdGUgaXMgc3RyaW5nIGNvcnJlY3QgYWdhaW5zdCB0aGUgZ2l2ZW4gZm9ybWF0IGVsc2VcbiAqIHdpbGwgcmV0dXJuIGZhbHNlLlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKlxuICogRm9ybWF0IG9mIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIHdpdGggYSBmZXcgYWRkaXRpb25zIChzZWUgbm90ZSA1IGJlbG93IHRoZSB0YWJsZSkuXG4gKlxuICogTm90IGFsbCB0b2tlbnMgYXJlIGNvbXBhdGlibGUuIENvbWJpbmF0aW9ucyB0aGF0IGRvbid0IG1ha2Ugc2Vuc2Ugb3IgY291bGQgbGVhZCB0byBidWdzIGFyZSBwcm9oaWJpdGVkXG4gKiBhbmQgd2lsbCB0aHJvdyBgUmFuZ2VFcnJvcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIDI0LWhvdXIgZm9ybWF0IHRva2VuIHdpdGggQU0vUE0gdG9rZW4gd2lsbCB0aHJvdyBhbiBleGNlcHRpb246XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogaXNNYXRjaCgnMjMgQU0nLCAnSEggYScpXG4gKiAvLz0+IFJhbmdlRXJyb3I6IFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgSEhgIGFuZCBgYWAgYXQgdGhlIHNhbWUgdGltZVxuICogYGBgXG4gKlxuICogU2VlIHRoZSBjb21wYXRpYmlsaXR5IHRhYmxlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UU9QVTN4VWhwbGxsNmR5b01tVlVYSEtsXzhDUkRzNl91ZUxtZXgzU29xd2h1b2xrdU4zTzA1bDRycXg1aDFkS1g4ZWI0NlVsLUNDU3JxL3B1Ymh0bWw/Z2lkPTAmc2luZ2xlPXRydWVcbiAqXG4gKiBBY2NlcHRlZCBmb3JtYXQgc3RyaW5nIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxQcmlvcnwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDk5OTkgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCAxMzAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDkwMDAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCAxMzAgfCBSICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5OSAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlIgICAgICB8IC00MywgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCw1IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHUgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgOTksIC05OSAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgMTIwIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgMTIwIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgMTEwIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgMTEwIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgMTAwIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgMTAwIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCAgOTAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgIDkwIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDUgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8ICA5MCB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCAgOTAgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgwIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgIDgwIHwgYi4uYmJiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgIDgwIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYwIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUwIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgIDQwIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCAgMzAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgIHwgIDIwIHwgVCAgICAgICB8IDUxMjk2OTUyMDkwMCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFRUICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCAgMTAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8ICAxMCB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgIE5BIHwgUCAgICAgICB8IDA1LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQICAgICAgfCBNYXkgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFAgICAgIHwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUCAgICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICB8IDIsNSw4IHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8ICBOQSB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgIE5BIHwgUHAgICAgICB8IDA1LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQcHAgICAgfCBNYXkgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBwcCAgIHwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUHBwICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICB8IDIsNSw4IHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXIuXG4gKiAgICBJbiBgZm9ybWF0YCBmdW5jdGlvbiwgdGhleSB3aWxsIHByb2R1Y2UgZGlmZmVyZW50IHJlc3VsdDpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogICAgYGlzTWF0Y2hgIHdpbGwgdHJ5IHRvIG1hdGNoIGJvdGggZm9ybWF0dGluZyBhbmQgc3RhbmQtYWxvbmUgdW5pdHMgaW50ZXJjaGFuZ2FibHkuXG4gKlxuICogMi4gQW55IHNlcXVlbmNlIG9mIHRoZSBpZGVudGljYWwgbGV0dGVycyBpcyBhIHBhdHRlcm4sIHVubGVzcyBpdCBpcyBlc2NhcGVkIGJ5XG4gKiAgICB0aGUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgKHNlZSBiZWxvdykuXG4gKiAgICBJZiB0aGUgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gbGlzdGVkIGluIHRhYmxlOlxuICogICAgLSBmb3IgbnVtZXJpY2FsIHVuaXRzIChgeXl5eXl5eXlgKSBgaXNNYXRjaGAgd2lsbCB0cnkgdG8gbWF0Y2ggYSBudW1iZXJcbiAqICAgICAgYXMgd2lkZSBhcyB0aGUgc2VxdWVuY2VcbiAqICAgIC0gZm9yIHRleHQgdW5pdHMgKGBNTU1NTU1NTWApIGBpc01hdGNoYCB3aWxsIHRyeSB0byBtYXRjaCB0aGUgd2lkZXN0IHZhcmlhdGlvbiBvZiB0aGUgdW5pdC5cbiAqICAgICAgVGhlc2UgdmFyaWF0aW9ucyBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAzLiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA0LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIHdpbGwgdHJ5IHRvIGd1ZXNzIHRoZSBjZW50dXJ5IG9mIHR3byBkaWdpdCB5ZWFyIGJ5IHByb3hpbWl0eSB3aXRoIGByZWZlcmVuY2VEYXRlYDpcbiAqXG4gKiAgICBgaXNNYXRjaCgnNTAnLCAneXknKSAvLz0+IHRydWVgXG4gKlxuICogICAgYGlzTWF0Y2goJzc1JywgJ3l5JykgLy89PiB0cnVlYFxuICpcbiAqICAgIHdoaWxlIGB1dWAgd2lsbCB1c2UgdGhlIHllYXIgYXMgaXM6XG4gKlxuICogICAgYGlzTWF0Y2goJzUwJywgJ3V1JykgLy89PiB0cnVlYFxuICpcbiAqICAgIGBpc01hdGNoKCc3NScsICd1dScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICBUaGUgc2FtZSBkaWZmZXJlbmNlIGlzIHRydWUgZm9yIGxvY2FsIGFuZCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgKGBZYCBhbmQgYFJgKSxcbiAqICAgIGV4Y2VwdCBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgZGVwZW5kZW50IG9uIGBvcHRpb25zLndlZWtTdGFydHNPbmBcbiAqICAgIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIChjb21wYXJlIFtzZXRJU09XZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXRJU09XZWVrWWVhcn1cbiAqICAgIGFuZCBbc2V0V2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0V2Vla1llYXJ9KS5cbiAqXG4gKiA1LiBUaGVzZSBwYXR0ZXJucyBhcmUgbm90IGluIHRoZSBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiAgICAtIGBpYDogSVNPIGRheSBvZiB3ZWVrXG4gKiAgICAtIGBJYDogSVNPIHdlZWsgb2YgeWVhclxuICogICAgLSBgUmA6IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiAgICAtIGBvYDogb3JkaW5hbCBudW1iZXIgbW9kaWZpZXJcbiAqICAgIC0gYFBgOiBsb25nIGxvY2FsaXplZCBkYXRlXG4gKiAgICAtIGBwYDogbG9uZyBsb2NhbGl6ZWQgdGltZVxuICpcbiAqIDYuIGBZWWAgYW5kIGBZWVlZYCB0b2tlbnMgcmVwcmVzZW50IHdlZWstbnVtYmVyaW5nIHllYXJzIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIHllYXJzLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogNy4gYERgIGFuZCBgRERgIHRva2VucyByZXByZXNlbnQgZGF5cyBvZiB0aGUgeWVhciBidXQgdGhleSBhcmUgb2Z0aGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogOC4gYFArYCB0b2tlbnMgZG8gbm90IGhhdmUgYSBkZWZpbmVkIHByaW9yaXR5IHNpbmNlIHRoZXkgYXJlIG1lcmVseSBhbGlhc2VzIHRvIG90aGVyIHRva2VucyBiYXNlZFxuICogICAgb24gdGhlIGdpdmVuIGxvY2FsZS5cbiAqXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYFBgID0+IGBNTS9kZC95eXl5YFxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBwYCA9PiBgaGg6bW0gYWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgUGAgPT4gYGRkL01NL3l5eXlgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYHBgID0+IGBISDptbWBcbiAqXG4gKiBWYWx1ZXMgd2lsbCBiZSBjaGVja2VkIGluIHRoZSBkZXNjZW5kaW5nIG9yZGVyIG9mIGl0cyB1bml0J3MgcHJpb3JpdHkuXG4gKiBVbml0cyBvZiBhbiBlcXVhbCBwcmlvcml0eSBvdmVyd3JpdGUgZWFjaCBvdGhlciBpbiB0aGUgb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAqXG4gKiBJZiBubyB2YWx1ZXMgb2YgaGlnaGVyIHByaW9yaXR5IGFyZSBtYXRjaGVkIChlLmcuIHdoZW4gbWF0Y2hpbmcgc3RyaW5nICdKYW51YXJ5IDFzdCcgd2l0aG91dCBhIHllYXIpLFxuICogdGhlIHZhbHVlcyB3aWxsIGJlIHRha2VuIGZyb20gdG9kYXkncyB1c2luZyBgbmV3IERhdGUoKWAgZGF0ZSB3aGljaCB3b3JrcyBhcyBhIGNvbnRleHQgb2YgcGFyc2luZy5cbiAqXG4gKiBUaGUgcmVzdWx0IG1heSB2YXJ5IGJ5IGxvY2FsZS5cbiAqXG4gKiBJZiBgZm9ybWF0U3RyaW5nYCBtYXRjaGVzIHdpdGggYGRhdGVTdHJpbmdgIGJ1dCBkb2VzIG5vdCBwcm92aWRlcyB0b2tlbnMsIGByZWZlcmVuY2VEYXRlYCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGRhdGVTdHJpbmcgLSB0aGUgZGF0ZSBzdHJpbmcgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0U3RyaW5nIC0gdGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyIHRva2VucyBgWVlgIGFuZCBgWVlZWWA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgZGF5IG9mIHllYXIgdG9rZW5zIGBEYCBhbmQgYEREYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBtYXRjaGAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnM7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGAgaW5zdGVhZCBvZiBgRGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGg7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNYXRjaCAxMSBGZWJydWFyeSAyMDE0IGZyb20gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBpc01hdGNoKCcwMi8xMS8yMDE0JywgJ01NL2RkL3l5eXknKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE1hdGNoIDI4dGggb2YgRmVicnVhcnkgaW4gRXNwZXJhbnRvIGxvY2FsZSBpbiB0aGUgY29udGV4dCBvZiAyMDEwIHllYXI6XG4gKiBpbXBvcnQgZW8gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gaXNNYXRjaCgnMjgtYSBkZSBmZWJydWFybycsIFwiZG8gJ2RlJyBNTU1NXCIsIHtcbiAqICAgbG9jYWxlOiBlb1xuICogfSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc01hdGNoKGRhdGVTdHJpbmcsIGZvcm1hdFN0cmluZywgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzVmFsaWQocGFyc2UoZGF0ZVN0cmluZywgZm9ybWF0U3RyaW5nLCBuZXcgRGF0ZSgpLCBvcHRpb25zKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc01vbmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgTW9uZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgTW9uZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIE1vbmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDIyIFNlcHRlbWJlciAyMDE0IE1vbmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzTW9uZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc01vbmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRhdGUpLmdldERheSgpID09PSAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNQYXN0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBwYXN0P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBwYXN0P1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGUgcGFzdFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyAyIEp1bHkgMjAxNCBpbiB0aGUgcGFzdD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzUGFzdChuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Bhc3QoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0VGltZSgpIDwgRGF0ZS5ub3coKTtcbn0iLCJpbXBvcnQgc3RhcnRPZkRheSBmcm9tIFwiLi4vc3RhcnRPZkRheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBkYXkgKGFuZCB5ZWFyIGFuZCBtb250aCk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBkYXkgKGFuZCB5ZWFyIGFuZCBtb250aClcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDA2OjAwOjAwIGFuZCA0IFNlcHRlbWJlciAxODowMDowMCBpbiB0aGUgc2FtZSBkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVEYXkobmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCksIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDE4LCAwKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgYW5kIDQgT2N0b2JlciBpbiB0aGUgc2FtZSBkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVEYXkobmV3IERhdGUoMjAxNCwgOCwgNCksIG5ldyBEYXRlKDIwMTQsIDksIDQpKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIsIDIwMTQgYW5kIDQgU2VwdGVtYmVyLCAyMDE1IGluIHRoZSBzYW1lIGRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZURheShuZXcgRGF0ZSgyMDE0LCA4LCA0KSwgbmV3IERhdGUoMjAxNSwgOCwgNCkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZURheShkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZkRheSA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mRGF5ID0gc3RhcnRPZkRheShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZEYXkuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mRGF5LmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZkhvdXIgZnJvbSBcIi4uL3N0YXJ0T2ZIb3VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVIb3VyXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGhvdXIgKGFuZCBzYW1lIGRheSk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGhvdXIgKGFuZCBzYW1lIGRheSk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBob3VyIChhbmQgc2FtZSBkYXkpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjAwOjAwIGFuZCA0IFNlcHRlbWJlciAwNjozMDowMCBpbiB0aGUgc2FtZSBob3VyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSG91cihuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwKSwgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzApKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjAwOjAwIGFuZCA1IFNlcHRlbWJlciAwNjowMDowMCBpbiB0aGUgc2FtZSBob3VyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSG91cihuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwKSwgbmV3IERhdGUoMjAxNCwgOCwgNSwgNiwgMCkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZUhvdXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZIb3VyID0gc3RhcnRPZkhvdXIoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mSG91ciA9IHN0YXJ0T2ZIb3VyKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZkhvdXIuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mSG91ci5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IGlzU2FtZVdlZWsgZnJvbSBcIi4uL2lzU2FtZVdlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZUlTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIElTTyB3ZWVrIChhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIElTTyB3ZWVrIChhbmQgeWVhcik/XG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgSVNPIHdlZWsgKGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBTZXB0ZW1iZXIgMjAxNCBhbmQgNyBTZXB0ZW1iZXIgMjAxNCBpbiB0aGUgc2FtZSBJU08gd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUlTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMSksIG5ldyBEYXRlKDIwMTQsIDgsIDcpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIFNlcHRlbWJlciAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE1IGluIHRoZSBzYW1lIElTTyB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgbmV3IERhdGUoMjAxNSwgOCwgMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZUlTT1dlZWsoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVXZWVrKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0LCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lSVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcj9cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMjkgRGVjZW1iZXIgMjAwMyBhbmQgMiBKYW51YXJ5IDIwMDUgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDAzLCAxMSwgMjkpLCBuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVJU09XZWVrWWVhcihkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZlllYXIgPSBzdGFydE9mSVNPV2Vla1llYXIoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mWWVhciA9IHN0YXJ0T2ZJU09XZWVrWWVhcihkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZZZWFyLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZlllYXIuZ2V0VGltZSgpO1xufSIsImltcG9ydCBzdGFydE9mTWludXRlIGZyb20gXCIuLi9zdGFydE9mTWludXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtaW51dGUgKGFuZCBob3VyIGFuZCBkYXkpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtaW51dGUgKGFuZCBob3VyIGFuZCBkYXkpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgbWludXRlIChhbmQgaG91ciBhbmQgZGF5KVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMDowMCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMDoxNSBpbiB0aGUgc2FtZSBtaW51dGU/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNaW51dGUoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzAsIDE1KVxuICogKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjMwOjAwIGFuZCA1IFNlcHRlbWJlciAyMDE0IDA2OjMwOjAwIGluIHRoZSBzYW1lIG1pbnV0ZT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZU1pbnV0ZShcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA1LCA2LCAzMClcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lTWludXRlKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mTWludXRlID0gc3RhcnRPZk1pbnV0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZNaW51dGUgPSBzdGFydE9mTWludXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZk1pbnV0ZS5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZNaW51dGUuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIG1vbnRoIChhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIG1vbnRoIChhbmQgeWVhcik/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBtb250aCAoYW5kIHllYXIpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyIFNlcHRlbWJlciAyMDE0IGFuZCAyNSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGUgc2FtZSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZU1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIpLCBuZXcgRGF0ZSgyMDE0LCA4LCAyNSkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDIgU2VwdGVtYmVyIDIwMTQgYW5kIDI1IFNlcHRlbWJlciAyMDE1IGluIHRoZSBzYW1lIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiksIG5ldyBEYXRlKDIwMTUsIDgsIDI1KSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lTW9udGgoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRGdWxsWWVhcigpID09PSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKSAmJiBkYXRlTGVmdC5nZXRNb250aCgpID09PSBkYXRlUmlnaHQuZ2V0TW9udGgoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZlF1YXJ0ZXIgZnJvbSBcIi4uL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHF1YXJ0ZXIgKGFuZCB5ZWFyKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgcXVhcnRlciAoYW5kIHllYXIpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgcXVhcnRlciAoYW5kIHllYXIpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIEphbnVhcnkgMjAxNCBhbmQgOCBNYXJjaCAyMDE0IGluIHRoZSBzYW1lIHF1YXJ0ZXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDAsIDEpLCBuZXcgRGF0ZSgyMDE0LCAyLCA4KSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBKYW51YXJ5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1IGluIHRoZSBzYW1lIHF1YXJ0ZXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDAsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lUXVhcnRlcihkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZlF1YXJ0ZXIgPSBzdGFydE9mUXVhcnRlcihkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mUXVhcnRlci5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZRdWFydGVyLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZlNlY29uZCBmcm9tIFwiLi4vc3RhcnRPZlNlY29uZC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgc2Vjb25kIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgc2Vjb25kIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHNlY29uZCAoYW5kIGhvdXIgYW5kIGRheSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MTUuMDAwIGFuZCA0IFNlcHRlbWJlciAyMDE0IDA2OjMwLjE1LjUwMCBpbiB0aGUgc2FtZSBzZWNvbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVTZWNvbmQoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwLCAxNSwgNTAwKVxuICogKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjAwOjE1LjAwMCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMS4xNS4wMDAgaW4gdGhlIHNhbWUgc2Vjb25kP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lU2Vjb25kKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDEsIDE1KVxuICogKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDoxNS4wMDAgYW5kIDUgU2VwdGVtYmVyIDIwMTQgMDY6MDAuMTUuMDAwIGluIHRoZSBzYW1lIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVNlY29uZChcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA1LCA2LCAwLCAxNSlcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lU2Vjb25kKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mU2Vjb25kID0gc3RhcnRPZlNlY29uZChkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZTZWNvbmQgPSBzdGFydE9mU2Vjb25kKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZlNlY29uZC5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZTZWNvbmQuZ2V0VGltZSgpO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZVdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgd2VlayAoYW5kIG1vbnRoIGFuZCB5ZWFyKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgd2VlayAoYW5kIG1vbnRoIGFuZCB5ZWFyKT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgd2VlayAoYW5kIG1vbnRoIGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMzEgQXVndXN0IDIwMTQgYW5kIDQgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVdlZWsobmV3IERhdGUoMjAxNCwgNywgMzEpLCBuZXcgRGF0ZSgyMDE0LCA4LCA0KSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB3ZWVrIHN0YXJ0cyB3aXRoIE1vbmRheSxcbiAqIC8vIGFyZSAzMSBBdWd1c3QgMjAxNCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCBpbiB0aGUgc2FtZSB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lV2VlayhuZXcgRGF0ZSgyMDE0LCA3LCAzMSksIG5ldyBEYXRlKDIwMTQsIDgsIDQpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMVxuICogfSlcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgSmFudWFyeSAyMDE0IGFuZCAxIEphbnVhcnkgMjAxNSBpbiB0aGUgc2FtZSB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lV2VlayhuZXcgRGF0ZSgyMDE0LCAwLCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVdlZWsoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZXZWVrID0gc3RhcnRPZldlZWsoZGlydHlEYXRlTGVmdCwgb3B0aW9ucyk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mV2VlayA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZldlZWsuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mV2Vlay5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHllYXI/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHllYXI/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyIFNlcHRlbWJlciAyMDE0IGFuZCAyNSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGUgc2FtZSB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lWWVhcihuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgbmV3IERhdGUoMjAxNCwgOCwgMjUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVllYXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRGdWxsWWVhcigpID09PSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2F0dXJkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFNhdHVyZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgU2F0dXJkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgU2F0dXJkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyNyBTZXB0ZW1iZXIgMjAxNCBTYXR1cmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2F0dXJkYXkobmV3IERhdGUoMjAxNCwgOCwgMjcpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2F0dXJkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDY7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1N1bmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgU3VuZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgU3VuZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFN1bmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDIxIFNlcHRlbWJlciAyMDE0IFN1bmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU3VuZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIxKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1N1bmRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gMDtcbn0iLCJpbXBvcnQgaXNTYW1lSG91ciBmcm9tIFwiLi4vaXNTYW1lSG91ci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzSG91clxuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgaG91ciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIGhvdXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBob3VyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjUwMCxcbiAqIC8vIGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjAwOjAwIGluIHRoaXMgaG91cj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc0hvdXIobmV3IERhdGUoMjAxNCwgOCwgMjUsIDE4KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNIb3VyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZUhvdXIoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lSVNPV2VlayBmcm9tIFwiLi4vaXNTYW1lSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIElTTyB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgSVNPIHdlZWsgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMjIgU2VwdGVtYmVyIDIwMTQgaW4gdGhpcyBJU08gd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc0lTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMjIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc0lTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lSVNPV2VlayhkaXJ0eURhdGUsIERhdGUubm93KCkpO1xufSIsImltcG9ydCBpc1NhbWVNaW51dGUgZnJvbSBcIi4uL2lzU2FtZU1pbnV0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzTWludXRlXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIG1pbnV0ZSBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIG1pbnV0ZSBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIG1pbnV0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDoxNS41MDAsXG4gKiAvLyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDowMCBpbiB0aGlzIG1pbnV0ZT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc01pbnV0ZShuZXcgRGF0ZSgyMDE0LCA4LCAyNSwgMTgsIDMwKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNNaW51dGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lTWludXRlKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZU1vbnRoIGZyb20gXCIuLi9pc1NhbWVNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtb250aCBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIG1vbnRoIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMTUgU2VwdGVtYmVyIDIwMTQgaW4gdGhpcyBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc01vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDE1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVNb250aChEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVRdWFydGVyIGZyb20gXCIuLi9pc1NhbWVRdWFydGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBxdWFydGVyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgcXVhcnRlciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMiBKdWx5IDIwMTQgaW4gdGhpcyBxdWFydGVyP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNRdWFydGVyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVF1YXJ0ZXIoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lU2Vjb25kIGZyb20gXCIuLi9pc1NhbWVTZWNvbmQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc1NlY29uZFxuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBzZWNvbmQgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBzZWNvbmQgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBzZWNvbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MTUuNTAwLFxuICogLy8gaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MTUuMDAwIGluIHRoaXMgc2Vjb25kP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzU2Vjb25kKG5ldyBEYXRlKDIwMTQsIDgsIDI1LCAxOCwgMzAsIDE1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNTZWNvbmQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lU2Vjb25kKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZVdlZWsgZnJvbSBcIi4uL2lzU2FtZVdlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc1dlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHdlZWsgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIHRoZSBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIxIFNlcHRlbWJlciAyMDE0IGluIHRoaXMgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMjEpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0IGFuZCB3ZWVrIHN0YXJ0cyB3aXRoIE1vbmRheVxuICogLy8gaXMgMjEgU2VwdGVtYmVyIDIwMTQgaW4gdGhpcyB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyMSksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IGZhbHNlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVXZWVrKGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSwgb3B0aW9ucyk7XG59IiwiaW1wb3J0IGlzU2FtZVllYXIgZnJvbSBcIi4uL2lzU2FtZVllYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc1llYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHllYXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB5ZWFyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAyIEp1bHkgMjAxNCBpbiB0aGlzIHllYXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNZZWFyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lWWVhcihkaXJ0eURhdGUsIERhdGUubm93KCkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaHVyc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgVGh1cnNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBUaHVyc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBUaHVyc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI1IFNlcHRlbWJlciAyMDE0IFRodXJzZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNUaHVyc2RheShuZXcgRGF0ZSgyMDE0LCA4LCAyNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaHVyc2RheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gNDtcbn0iLCJpbXBvcnQgaXNTYW1lRGF5IGZyb20gXCIuLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVG9kYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdG9kYXk/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdG9kYXk/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHRvZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDYgT2N0b2JlciAxNDowMDowMCB0b2RheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVG9kYXkobmV3IERhdGUoMjAxNCwgOSwgNiwgMTQsIDApKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVG9kYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lRGF5KGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSk7XG59IiwiaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBpc1NhbWVEYXkgZnJvbSBcIi4uL2lzU2FtZURheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUb21vcnJvd1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB0b21vcnJvdz9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB0b21vcnJvdz9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdG9tb3Jyb3dcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgNyBPY3RvYmVyIDE0OjAwOjAwIHRvbW9ycm93P1xuICogY29uc3QgcmVzdWx0ID0gaXNUb21vcnJvdyhuZXcgRGF0ZSgyMDE0LCA5LCA3LCAxNCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUb21vcnJvdyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVEYXkoZGlydHlEYXRlLCBhZGREYXlzKERhdGUubm93KCksIDEpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVHVlc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgVHVlc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFR1ZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgVHVlc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDIzIFNlcHRlbWJlciAyMDE0IFR1ZXNkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1R1ZXNkYXkobmV3IERhdGUoMjAxNCwgOCwgMjMpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVHVlc2RheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gMjtcbn0iLCJpbXBvcnQgaXNEYXRlIGZyb20gXCIuLi9pc0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNWYWxpZFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB2YWxpZD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgZmFsc2UgaWYgYXJndW1lbnQgaXMgSW52YWxpZCBEYXRlIGFuZCB0cnVlIG90aGVyd2lzZS5cbiAqIEFyZ3VtZW50IGlzIGNvbnZlcnRlZCB0byBEYXRlIHVzaW5nIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqXG4gKiBUaW1lIHZhbHVlIG9mIERhdGU6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuOS4xLjFcbiAqXG4gKiBAcGFyYW0geyp9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHZhbGlkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgyMDE0LCAxLCAzMSkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWx1ZSwgY29udmVydGFibGUgaW50byBhIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKDEzOTM4MDQ4MDAwMDApXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKCcnKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNWYWxpZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIGlmICghaXNEYXRlKGRpcnR5RGF0ZSkgJiYgdHlwZW9mIGRpcnR5RGF0ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgcmV0dXJuICFpc05hTihOdW1iZXIoZGF0ZSkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNXZWRuZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFdlZG5lc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFdlZG5lc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBXZWRuZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyNCBTZXB0ZW1iZXIgMjAxNCBXZWRuZXNkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1dlZG5lc2RheShuZXcgRGF0ZSgyMDE0LCA4LCAyNCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNXZWRuZXNkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1dlZWtlbmRcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IERvZXMgdGhlIGdpdmVuIGRhdGUgZmFsbCBvbiBhIHdlZWtlbmQ/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBEb2VzIHRoZSBnaXZlbiBkYXRlIGZhbGwgb24gYSB3ZWVrZW5kP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGZhbGxzIG9uIGEgd2Vla2VuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIERvZXMgNSBPY3RvYmVyIDIwMTQgZmFsbCBvbiBhIHdlZWtlbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1dlZWtlbmQobmV3IERhdGUoMjAxNCwgOSwgNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNXZWVrZW5kKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHJldHVybiBkYXkgPT09IDAgfHwgZGF5ID09PSA2O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNXaXRoaW5JbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHdpdGhpbiB0aGUgaW50ZXJ2YWw/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB3aXRoaW4gdGhlIGludGVydmFsPyAoSW5jbHVkaW5nIHN0YXJ0IGFuZCBlbmQuKVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB3aXRoaW4gdGhlIGludGVydmFsXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgZGF0ZSB3aXRoaW4gdGhlIGludGVydmFsOlxuICogaXNXaXRoaW5JbnRlcnZhbChuZXcgRGF0ZSgyMDE0LCAwLCAzKSwge1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMSksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgNylcbiAqIH0pXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBkYXRlIG91dHNpZGUgb2YgdGhlIGludGVydmFsOlxuICogaXNXaXRoaW5JbnRlcnZhbChuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDcpXG4gKiB9KVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgZGF0ZSBlcXVhbCB0byBpbnRlcnZhbCBzdGFydDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwoZGF0ZSwgeyBzdGFydCwgZW5kOiBkYXRlIH0pIC8vID0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGRhdGUgZXF1YWwgdG8gaW50ZXJ2YWwgZW5kOlxuICogaXNXaXRoaW5JbnRlcnZhbChkYXRlLCB7IHN0YXJ0OiBkYXRlLCBlbmQgfSkgLy8gPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1dpdGhpbkludGVydmFsKGRpcnR5RGF0ZSwgaW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciB0aW1lID0gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0VGltZSgpO1xuICB2YXIgc3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciBlbmRUaW1lID0gdG9EYXRlKGludGVydmFsLmVuZCkuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0VGltZSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgcmV0dXJuIHRpbWUgPj0gc3RhcnRUaW1lICYmIHRpbWUgPD0gZW5kVGltZTtcbn0iLCJpbXBvcnQgaXNTYW1lRGF5IGZyb20gXCIuLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmltcG9ydCBzdWJEYXlzIGZyb20gXCIuLi9zdWJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1llc3RlcmRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB5ZXN0ZXJkYXk/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgeWVzdGVyZGF5P1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB5ZXN0ZXJkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgNSBPY3RvYmVyIDE0OjAwOjAwIHllc3RlcmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzWWVzdGVyZGF5KG5ldyBEYXRlKDIwMTQsIDksIDUsIDE0LCAwKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1llc3RlcmRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVEYXkoZGlydHlEYXRlLCBzdWJEYXlzKERhdGUubm93KCksIDEpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZkRlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIGRlY2FkZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIGRlY2FkZSBmb3IgMjEgRGVjZW1iZXIgMjAxMiAyMToxMjowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZkRlY2FkZShuZXcgRGF0ZSgyMDEyLCAxMSwgMjEsIDIxLCAxMiwgMDApKVxuICogLy89PiBXZWQgRGVjIDMxIDIwMTkgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mRGVjYWRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWNhZGUgPSA5ICsgTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGVjYWRlICsgMSwgMCwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBsYXN0RGF5T2ZXZWVrIGZyb20gXCIuLi9sYXN0RGF5T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZklTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZklTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbGFzdERheU9mV2VlayhkaXJ0eURhdGUsIHtcbiAgICB3ZWVrU3RhcnRzT246IDFcbiAgfSk7XG59IiwiaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mSVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1OlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mSVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz0+IFN1biBKYW4gMDEgMjAwNiAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFyID0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5KTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gMSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSBtb250aCBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoICsgMSwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIHF1YXJ0ZXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZRdWFydGVyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgdmFyIG1vbnRoID0gY3VycmVudE1vbnRoIC0gY3VycmVudE1vbnRoICUgMyArIDM7XG4gIGRhdGUuc2V0TW9udGgobW9udGgsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFNhdCBTZXAgMDYgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgbGFzdCBkYXkgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYnKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gLTcgOiAwKSArIDYgLSAoZGF5IC0gd2Vla1N0YXJ0c09uKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgeWVhciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZlllYXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwMCkpXG4gKiAvLz0+IFdlZCBEZWMgMzEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9saWdodEZvcm1hdHRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7IC8vIFRoaXMgUmVnRXhwIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzIHNlcGFyYXRlZCBieSBgfGA6XG4vLyAtIChcXHcpXFwxKiBtYXRjaGVzIGFueSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgbGV0dGVyXG4vLyAtICcnIG1hdGNoZXMgdHdvIHF1b3RlIGNoYXJhY3RlcnMgaW4gYSByb3dcbi8vIC0gJygnJ3xbXiddKSsoJ3wkKSBtYXRjaGVzIGFueXRoaW5nIHN1cnJvdW5kZWQgYnkgdHdvIHF1b3RlIGNoYXJhY3RlcnMgKCcpLFxuLy8gICBleGNlcHQgYSBzaW5nbGUgcXVvdGUgc3ltYm9sLCB3aGljaCBlbmRzIHRoZSBzZXF1ZW5jZS5cbi8vICAgVHdvIHF1b3RlIGNoYXJhY3RlcnMgZG8gbm90IGVuZCB0aGUgc2VxdWVuY2UuXG4vLyAgIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNpbmdsZSBxdW90ZVxuLy8gICB0aGVuIHRoZSBzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbi8vIC0gLiBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIHVubWF0Y2hlZCBieSBwcmV2aW91cyBwYXJ0cyBvZiB0aGUgUmVnRXhwc1xudmFyIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvKFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xudmFyIGVzY2FwZWRTdHJpbmdSZWdFeHAgPSAvXicoW15dKj8pJz8kLztcbnZhciBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAbmFtZSBsaWdodEZvcm1hdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZ2l2ZW4gZm9ybWF0LiBVbmxpa2UgYGZvcm1hdGAsXG4gKiBgbGlnaHRGb3JtYXRgIGRvZXNuJ3QgdXNlIGxvY2FsZXMgYW5kIG91dHB1dHMgZGF0ZSB1c2luZyB0aGUgbW9zdCBwb3B1bGFyIHRva2Vucy5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgbGlnaHRGb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKlxuICogRm9ybWF0IG9mIHRoZSBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICpcbiAqIEFjY2VwdGVkIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgQ2FsZW5kYXIgeWVhciAgICAgICAgICAgICAgICAgICB8IHkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDAwMCwgMDE3ICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8XG4gKiB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICAgfCBoICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhoICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNzICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTUyAgICAgIHwgMDAsIDAxLCAuLi4sIDk5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IC0gdGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSBsaWdodEZvcm1hdChuZXcgRGF0ZSgyMDE0LCAxLCAxMSksICd5eXl5LU1NLWRkJylcbiAqIC8vPT4gJzIwMTQtMDItMTEnXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlnaHRGb3JtYXQoZGlydHlEYXRlLCBmb3JtYXRTdHIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cblxuICAvLyBDb252ZXJ0IHRoZSBkYXRlIGluIHN5c3RlbSB0aW1lem9uZSB0byB0aGUgc2FtZSBkYXRlIGluIFVUQyswMDowMCB0aW1lem9uZS5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBVVEMgZnVuY3Rpb25zIHdpbGwgYmUgaW1wbGVtZW50ZWQsIGxvY2FsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlbS5cbiAgLy8gU2VlIGFuIGlzc3VlIGFib3V0IFVUQyBmdW5jdGlvbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG4gIHZhciB0aW1lem9uZU9mZnNldCA9IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlKTtcbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlLCB0aW1lem9uZU9mZnNldCk7XG4gIHZhciB0b2tlbnMgPSBmb3JtYXRTdHIubWF0Y2goZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCk7XG5cbiAgLy8gVGhlIG9ubHkgY2FzZSB3aGVuIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgZG9lc24ndCBtYXRjaCB0aGUgc3RyaW5nIGlzIHdoZW4gaXQncyBlbXB0eVxuICBpZiAoIXRva2VucykgcmV0dXJuICcnO1xuICB2YXIgcmVzdWx0ID0gdG9rZW5zLm1hcChmdW5jdGlvbiAoc3Vic3RyaW5nKSB7XG4gICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgIGlmIChzdWJzdHJpbmcgPT09IFwiJydcIikge1xuICAgICAgcmV0dXJuIFwiJ1wiO1xuICAgIH1cbiAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgcmV0dXJuIGNsZWFuRXNjYXBlZFN0cmluZyhzdWJzdHJpbmcpO1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgcmV0dXJuIGZvcm1hdHRlcih1dGNEYXRlLCBzdWJzdHJpbmcpO1xuICAgIH1cbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIubWF0Y2godW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHApKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGAnICsgZmlyc3RDaGFyYWN0ZXIgKyAnYCcpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNsZWFuRXNjYXBlZFN0cmluZyhpbnB1dCkge1xuICB2YXIgbWF0Y2hlcyA9IGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApO1xuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNbMV0ucmVwbGFjZShkb3VibGVRdW90ZVJlZ0V4cCwgXCInXCIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkRm9ybWF0TG9uZ0ZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgLy8gVE9ETzogUmVtb3ZlIFN0cmluZygpXG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgIHZhciBmb3JtYXQgPSBhcmdzLmZvcm1hdHNbd2lkdGhdIHx8IGFyZ3MuZm9ybWF0c1thcmdzLmRlZmF1bHRXaWR0aF07XG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZExvY2FsaXplRm4oYXJncykge1xuICByZXR1cm4gZnVuY3Rpb24gKGRpcnR5SW5kZXgsIG9wdGlvbnMpIHtcbiAgICB2YXIgY29udGV4dCA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuY29udGV4dCA/IFN0cmluZyhvcHRpb25zLmNvbnRleHQpIDogJ3N0YW5kYWxvbmUnO1xuICAgIHZhciB2YWx1ZXNBcnJheTtcbiAgICBpZiAoY29udGV4dCA9PT0gJ2Zvcm1hdHRpbmcnICYmIGFyZ3MuZm9ybWF0dGluZ1ZhbHVlcykge1xuICAgICAgdmFyIGRlZmF1bHRXaWR0aCA9IGFyZ3MuZGVmYXVsdEZvcm1hdHRpbmdXaWR0aCB8fCBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIHZhciB3aWR0aCA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBkZWZhdWx0V2lkdGg7XG4gICAgICB2YWx1ZXNBcnJheSA9IGFyZ3MuZm9ybWF0dGluZ1ZhbHVlc1t3aWR0aF0gfHwgYXJncy5mb3JtYXR0aW5nVmFsdWVzW2RlZmF1bHRXaWR0aF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfZGVmYXVsdFdpZHRoID0gYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgICB2YXIgX3dpZHRoID0gb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgICAgdmFsdWVzQXJyYXkgPSBhcmdzLnZhbHVlc1tfd2lkdGhdIHx8IGFyZ3MudmFsdWVzW19kZWZhdWx0V2lkdGhdO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBhcmdzLmFyZ3VtZW50Q2FsbGJhY2sgPyBhcmdzLmFyZ3VtZW50Q2FsbGJhY2soZGlydHlJbmRleCkgOiBkaXJ0eUluZGV4O1xuICAgIC8vIEB0cy1pZ25vcmU6IEZvciBzb21lIHJlYXNvbiBUeXBlU2NyaXB0IGp1c3QgZG9uJ3Qgd2FudCB0byBtYXRjaCBpdCwgbm8gbWF0dGVyIGhvdyBoYXJkIHdlIHRyeS4gSSBjaGFsbGVuZ2UgeW91IHRvIHRyeSB0byByZW1vdmUgaXQhXG4gICAgcmV0dXJuIHZhbHVlc0FycmF5W2luZGV4XTtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZE1hdGNoRm4oYXJncykge1xuICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICB2YXIgd2lkdGggPSBvcHRpb25zLndpZHRoO1xuICAgIHZhciBtYXRjaFBhdHRlcm4gPSB3aWR0aCAmJiBhcmdzLm1hdGNoUGF0dGVybnNbd2lkdGhdIHx8IGFyZ3MubWF0Y2hQYXR0ZXJuc1thcmdzLmRlZmF1bHRNYXRjaFdpZHRoXTtcbiAgICB2YXIgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2gobWF0Y2hQYXR0ZXJuKTtcbiAgICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIG1hdGNoZWRTdHJpbmcgPSBtYXRjaFJlc3VsdFswXTtcbiAgICB2YXIgcGFyc2VQYXR0ZXJucyA9IHdpZHRoICYmIGFyZ3MucGFyc2VQYXR0ZXJuc1t3aWR0aF0gfHwgYXJncy5wYXJzZVBhdHRlcm5zW2FyZ3MuZGVmYXVsdFBhcnNlV2lkdGhdO1xuICAgIHZhciBrZXkgPSBBcnJheS5pc0FycmF5KHBhcnNlUGF0dGVybnMpID8gZmluZEluZGV4KHBhcnNlUGF0dGVybnMsIGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KG1hdGNoZWRTdHJpbmcpO1xuICAgIH0pIDogZmluZEtleShwYXJzZVBhdHRlcm5zLCBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChtYXRjaGVkU3RyaW5nKTtcbiAgICB9KTtcbiAgICB2YXIgdmFsdWU7XG4gICAgdmFsdWUgPSBhcmdzLnZhbHVlQ2FsbGJhY2sgPyBhcmdzLnZhbHVlQ2FsbGJhY2soa2V5KSA6IGtleTtcbiAgICB2YWx1ZSA9IG9wdGlvbnMudmFsdWVDYWxsYmFjayA/IG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB2YXIgcmVzdCA9IHN0cmluZy5zbGljZShtYXRjaGVkU3RyaW5nLmxlbmd0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHJlc3Q6IHJlc3RcbiAgICB9O1xuICB9O1xufVxuZnVuY3Rpb24gZmluZEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHByZWRpY2F0ZShvYmplY3Rba2V5XSkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSkge1xuICBmb3IgKHZhciBrZXkgPSAwOyBrZXkgPCBhcnJheS5sZW5ndGg7IGtleSsrKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtrZXldKSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZE1hdGNoUGF0dGVybkZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgdmFyIG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKGFyZ3MubWF0Y2hQYXR0ZXJuKTtcbiAgICBpZiAoIW1hdGNoUmVzdWx0KSByZXR1cm4gbnVsbDtcbiAgICB2YXIgbWF0Y2hlZFN0cmluZyA9IG1hdGNoUmVzdWx0WzBdO1xuICAgIHZhciBwYXJzZVJlc3VsdCA9IHN0cmluZy5tYXRjaChhcmdzLnBhcnNlUGF0dGVybik7XG4gICAgaWYgKCFwYXJzZVJlc3VsdCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHZhbHVlID0gYXJncy52YWx1ZUNhbGxiYWNrID8gYXJncy52YWx1ZUNhbGxiYWNrKHBhcnNlUmVzdWx0WzBdKSA6IHBhcnNlUmVzdWx0WzBdO1xuICAgIHZhbHVlID0gb3B0aW9ucy52YWx1ZUNhbGxiYWNrID8gb3B0aW9ucy52YWx1ZUNhbGxiYWNrKHZhbHVlKSA6IHZhbHVlO1xuICAgIHZhciByZXN0ID0gc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgcmVzdDogcmVzdFxuICAgIH07XG4gIH07XG59IiwidmFyIGZvcm1hdERpc3RhbmNlTG9jYWxlID0ge1xuICBsZXNzVGhhblhTZWNvbmRzOiB7XG4gICAgb25lOiAnbGVzcyB0aGFuIGEgc2Vjb25kJyxcbiAgICBvdGhlcjogJ2xlc3MgdGhhbiB7e2NvdW50fX0gc2Vjb25kcydcbiAgfSxcbiAgeFNlY29uZHM6IHtcbiAgICBvbmU6ICcxIHNlY29uZCcsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gc2Vjb25kcydcbiAgfSxcbiAgaGFsZkFNaW51dGU6ICdoYWxmIGEgbWludXRlJyxcbiAgbGVzc1RoYW5YTWludXRlczoge1xuICAgIG9uZTogJ2xlc3MgdGhhbiBhIG1pbnV0ZScsXG4gICAgb3RoZXI6ICdsZXNzIHRoYW4ge3tjb3VudH19IG1pbnV0ZXMnXG4gIH0sXG4gIHhNaW51dGVzOiB7XG4gICAgb25lOiAnMSBtaW51dGUnLFxuICAgIG90aGVyOiAne3tjb3VudH19IG1pbnV0ZXMnXG4gIH0sXG4gIGFib3V0WEhvdXJzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBob3VyJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSBob3VycydcbiAgfSxcbiAgeEhvdXJzOiB7XG4gICAgb25lOiAnMSBob3VyJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBob3VycydcbiAgfSxcbiAgeERheXM6IHtcbiAgICBvbmU6ICcxIGRheScsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gZGF5cydcbiAgfSxcbiAgYWJvdXRYV2Vla3M6IHtcbiAgICBvbmU6ICdhYm91dCAxIHdlZWsnLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IHdlZWtzJ1xuICB9LFxuICB4V2Vla3M6IHtcbiAgICBvbmU6ICcxIHdlZWsnLFxuICAgIG90aGVyOiAne3tjb3VudH19IHdlZWtzJ1xuICB9LFxuICBhYm91dFhNb250aHM6IHtcbiAgICBvbmU6ICdhYm91dCAxIG1vbnRoJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSBtb250aHMnXG4gIH0sXG4gIHhNb250aHM6IHtcbiAgICBvbmU6ICcxIG1vbnRoJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtb250aHMnXG4gIH0sXG4gIGFib3V0WFllYXJzOiB7XG4gICAgb25lOiAnYWJvdXQgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgeFllYXJzOiB7XG4gICAgb25lOiAnMSB5ZWFyJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgb3ZlclhZZWFyczoge1xuICAgIG9uZTogJ292ZXIgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ292ZXIge3tjb3VudH19IHllYXJzJ1xuICB9LFxuICBhbG1vc3RYWWVhcnM6IHtcbiAgICBvbmU6ICdhbG1vc3QgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ2FsbW9zdCB7e2NvdW50fX0geWVhcnMnXG4gIH1cbn07XG52YXIgZm9ybWF0RGlzdGFuY2UgPSBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZSh0b2tlbiwgY291bnQsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIHRva2VuVmFsdWUgPSBmb3JtYXREaXN0YW5jZUxvY2FsZVt0b2tlbl07XG4gIGlmICh0eXBlb2YgdG9rZW5WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXN1bHQgPSB0b2tlblZhbHVlO1xuICB9IGVsc2UgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZS5vbmU7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZS5vdGhlci5yZXBsYWNlKCd7e2NvdW50fX0nLCBjb3VudC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5hZGRTdWZmaXgpIHtcbiAgICBpZiAob3B0aW9ucy5jb21wYXJpc29uICYmIG9wdGlvbnMuY29tcGFyaXNvbiA+IDApIHtcbiAgICAgIHJldHVybiAnaW4gJyArIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdCArICcgYWdvJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmb3JtYXREaXN0YW5jZTsiLCJpbXBvcnQgYnVpbGRGb3JtYXRMb25nRm4gZnJvbSBcIi4uLy4uLy4uL19saWIvYnVpbGRGb3JtYXRMb25nRm4vaW5kZXguanNcIjtcbnZhciBkYXRlRm9ybWF0cyA9IHtcbiAgZnVsbDogJ0VFRUUsIE1NTU0gZG8sIHknLFxuICBsb25nOiAnTU1NTSBkbywgeScsXG4gIG1lZGl1bTogJ01NTSBkLCB5JyxcbiAgc2hvcnQ6ICdNTS9kZC95eXl5J1xufTtcbnZhciB0aW1lRm9ybWF0cyA9IHtcbiAgZnVsbDogJ2g6bW06c3MgYSB6enp6JyxcbiAgbG9uZzogJ2g6bW06c3MgYSB6JyxcbiAgbWVkaXVtOiAnaDptbTpzcyBhJyxcbiAgc2hvcnQ6ICdoOm1tIGEnXG59O1xudmFyIGRhdGVUaW1lRm9ybWF0cyA9IHtcbiAgZnVsbDogXCJ7e2RhdGV9fSAnYXQnIHt7dGltZX19XCIsXG4gIGxvbmc6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBtZWRpdW06ICd7e2RhdGV9fSwge3t0aW1lfX0nLFxuICBzaG9ydDogJ3t7ZGF0ZX19LCB7e3RpbWV9fSdcbn07XG52YXIgZm9ybWF0TG9uZyA9IHtcbiAgZGF0ZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pLFxuICB0aW1lOiBidWlsZEZvcm1hdExvbmdGbih7XG4gICAgZm9ybWF0czogdGltZUZvcm1hdHMsXG4gICAgZGVmYXVsdFdpZHRoOiAnZnVsbCdcbiAgfSksXG4gIGRhdGVUaW1lOiBidWlsZEZvcm1hdExvbmdGbih7XG4gICAgZm9ybWF0czogZGF0ZVRpbWVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0TG9uZzsiLCJ2YXIgZm9ybWF0UmVsYXRpdmVMb2NhbGUgPSB7XG4gIGxhc3RXZWVrOiBcIidsYXN0JyBlZWVlICdhdCcgcFwiLFxuICB5ZXN0ZXJkYXk6IFwiJ3llc3RlcmRheSBhdCcgcFwiLFxuICB0b2RheTogXCIndG9kYXkgYXQnIHBcIixcbiAgdG9tb3Jyb3c6IFwiJ3RvbW9ycm93IGF0JyBwXCIsXG4gIG5leHRXZWVrOiBcImVlZWUgJ2F0JyBwXCIsXG4gIG90aGVyOiAnUCdcbn07XG52YXIgZm9ybWF0UmVsYXRpdmUgPSBmdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZSh0b2tlbiwgX2RhdGUsIF9iYXNlRGF0ZSwgX29wdGlvbnMpIHtcbiAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlTG9jYWxlW3Rva2VuXTtcbn07XG5leHBvcnQgZGVmYXVsdCBmb3JtYXRSZWxhdGl2ZTsiLCJpbXBvcnQgYnVpbGRMb2NhbGl6ZUZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkTG9jYWxpemVGbi9pbmRleC5qc1wiO1xudmFyIGVyYVZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ0InLCAnQSddLFxuICBhYmJyZXZpYXRlZDogWydCQycsICdBRCddLFxuICB3aWRlOiBbJ0JlZm9yZSBDaHJpc3QnLCAnQW5ubyBEb21pbmknXVxufTtcbnZhciBxdWFydGVyVmFsdWVzID0ge1xuICBuYXJyb3c6IFsnMScsICcyJywgJzMnLCAnNCddLFxuICBhYmJyZXZpYXRlZDogWydRMScsICdRMicsICdRMycsICdRNCddLFxuICB3aWRlOiBbJzFzdCBxdWFydGVyJywgJzJuZCBxdWFydGVyJywgJzNyZCBxdWFydGVyJywgJzR0aCBxdWFydGVyJ11cbn07XG5cbi8vIE5vdGU6IGluIEVuZ2xpc2gsIHRoZSBuYW1lcyBvZiBkYXlzIG9mIHRoZSB3ZWVrIGFuZCBtb250aHMgYXJlIGNhcGl0YWxpemVkLlxuLy8gSWYgeW91IGFyZSBtYWtpbmcgYSBuZXcgbG9jYWxlIGJhc2VkIG9uIHRoaXMgb25lLCBjaGVjayBpZiB0aGUgc2FtZSBpcyB0cnVlIGZvciB0aGUgbGFuZ3VhZ2UgeW91J3JlIHdvcmtpbmcgb24uXG4vLyBHZW5lcmFsbHksIGZvcm1hdHRlZCBkYXRlcyBzaG91bGQgbG9vayBsaWtlIHRoZXkgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBzZW50ZW5jZSxcbi8vIGUuZy4gaW4gU3BhbmlzaCBsYW5ndWFnZSB0aGUgd2Vla2RheXMgYW5kIG1vbnRocyBzaG91bGQgYmUgaW4gdGhlIGxvd2VyY2FzZS5cbnZhciBtb250aFZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ0onLCAnRicsICdNJywgJ0EnLCAnTScsICdKJywgJ0onLCAnQScsICdTJywgJ08nLCAnTicsICdEJ10sXG4gIGFiYnJldmlhdGVkOiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gIHdpZGU6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddXG59O1xudmFyIGRheVZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ1MnLCAnTScsICdUJywgJ1cnLCAnVCcsICdGJywgJ1MnXSxcbiAgc2hvcnQ6IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gIHdpZGU6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXVxufTtcbnZhciBkYXlQZXJpb2RWYWx1ZXMgPSB7XG4gIG5hcnJvdzoge1xuICAgIGFtOiAnYScsXG4gICAgcG06ICdwJyxcbiAgICBtaWRuaWdodDogJ21pJyxcbiAgICBub29uOiAnbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH0sXG4gIGFiYnJldmlhdGVkOiB7XG4gICAgYW06ICdBTScsXG4gICAgcG06ICdQTScsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9LFxuICB3aWRlOiB7XG4gICAgYW06ICdhLm0uJyxcbiAgICBwbTogJ3AubS4nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfVxufTtcbnZhciBmb3JtYXR0aW5nRGF5UGVyaW9kVmFsdWVzID0ge1xuICBuYXJyb3c6IHtcbiAgICBhbTogJ2EnLFxuICAgIHBtOiAncCcsXG4gICAgbWlkbmlnaHQ6ICdtaScsXG4gICAgbm9vbjogJ24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfSxcbiAgd2lkZToge1xuICAgIGFtOiAnYS5tLicsXG4gICAgcG06ICdwLm0uJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH1cbn07XG52YXIgb3JkaW5hbE51bWJlciA9IGZ1bmN0aW9uIG9yZGluYWxOdW1iZXIoZGlydHlOdW1iZXIsIF9vcHRpb25zKSB7XG4gIHZhciBudW1iZXIgPSBOdW1iZXIoZGlydHlOdW1iZXIpO1xuXG4gIC8vIElmIG9yZGluYWwgbnVtYmVycyBkZXBlbmQgb24gY29udGV4dCwgZm9yIGV4YW1wbGUsXG4gIC8vIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IGdyYW1tYXRpY2FsIGdlbmRlcnMsXG4gIC8vIHVzZSBgb3B0aW9ucy51bml0YC5cbiAgLy9cbiAgLy8gYHVuaXRgIGNhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF0ZScsICdkYXlPZlllYXInLFxuICAvLyAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcuXG5cbiAgdmFyIHJlbTEwMCA9IG51bWJlciAlIDEwMDtcbiAgaWYgKHJlbTEwMCA+IDIwIHx8IHJlbTEwMCA8IDEwKSB7XG4gICAgc3dpdGNoIChyZW0xMDAgJSAxMCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ3N0JztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIG51bWJlciArICduZCc7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAncmQnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtYmVyICsgJ3RoJztcbn07XG52YXIgbG9jYWxpemUgPSB7XG4gIG9yZGluYWxOdW1iZXI6IG9yZGluYWxOdW1iZXIsXG4gIGVyYTogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGVyYVZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcbiAgcXVhcnRlcjogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IHF1YXJ0ZXJWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZScsXG4gICAgYXJndW1lbnRDYWxsYmFjazogZnVuY3Rpb24gYXJndW1lbnRDYWxsYmFjayhxdWFydGVyKSB7XG4gICAgICByZXR1cm4gcXVhcnRlciAtIDE7XG4gICAgfVxuICB9KSxcbiAgbW9udGg6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBtb250aFZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcbiAgZGF5OiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5VmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnXG4gIH0pLFxuICBkYXlQZXJpb2Q6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBkYXlQZXJpb2RWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZScsXG4gICAgZm9ybWF0dGluZ1ZhbHVlczogZm9ybWF0dGluZ0RheVBlcmlvZFZhbHVlcyxcbiAgICBkZWZhdWx0Rm9ybWF0dGluZ1dpZHRoOiAnd2lkZSdcbiAgfSlcbn07XG5leHBvcnQgZGVmYXVsdCBsb2NhbGl6ZTsiLCJpbXBvcnQgYnVpbGRNYXRjaEZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkTWF0Y2hGbi9pbmRleC5qc1wiO1xuaW1wb3J0IGJ1aWxkTWF0Y2hQYXR0ZXJuRm4gZnJvbSBcIi4uLy4uLy4uL19saWIvYnVpbGRNYXRjaFBhdHRlcm5Gbi9pbmRleC5qc1wiO1xudmFyIG1hdGNoT3JkaW5hbE51bWJlclBhdHRlcm4gPSAvXihcXGQrKSh0aHxzdHxuZHxyZCk/L2k7XG52YXIgcGFyc2VPcmRpbmFsTnVtYmVyUGF0dGVybiA9IC9cXGQrL2k7XG52YXIgbWF0Y2hFcmFQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXihifGEpL2ksXG4gIGFiYnJldmlhdGVkOiAvXihiXFwuP1xccz9jXFwuP3xiXFwuP1xccz9jXFwuP1xccz9lXFwuP3xhXFwuP1xccz9kXFwuP3xjXFwuP1xccz9lXFwuPykvaSxcbiAgd2lkZTogL14oYmVmb3JlIGNocmlzdHxiZWZvcmUgY29tbW9uIGVyYXxhbm5vIGRvbWluaXxjb21tb24gZXJhKS9pXG59O1xudmFyIHBhcnNlRXJhUGF0dGVybnMgPSB7XG4gIGFueTogWy9eYi9pLCAvXihhfGMpL2ldXG59O1xudmFyIG1hdGNoUXVhcnRlclBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eWzEyMzRdL2ksXG4gIGFiYnJldmlhdGVkOiAvXnFbMTIzNF0vaSxcbiAgd2lkZTogL15bMTIzNF0odGh8c3R8bmR8cmQpPyBxdWFydGVyL2lcbn07XG52YXIgcGFyc2VRdWFydGVyUGF0dGVybnMgPSB7XG4gIGFueTogWy8xL2ksIC8yL2ksIC8zL2ksIC80L2ldXG59O1xudmFyIG1hdGNoTW9udGhQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXltqZm1hc29uZF0vaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKGphbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjKS9pLFxuICB3aWRlOiAvXihqYW51YXJ5fGZlYnJ1YXJ5fG1hcmNofGFwcmlsfG1heXxqdW5lfGp1bHl8YXVndXN0fHNlcHRlbWJlcnxvY3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pXG59O1xudmFyIHBhcnNlTW9udGhQYXR0ZXJucyA9IHtcbiAgbmFycm93OiBbL15qL2ksIC9eZi9pLCAvXm0vaSwgL15hL2ksIC9ebS9pLCAvXmovaSwgL15qL2ksIC9eYS9pLCAvXnMvaSwgL15vL2ksIC9ebi9pLCAvXmQvaV0sXG4gIGFueTogWy9eamEvaSwgL15mL2ksIC9ebWFyL2ksIC9eYXAvaSwgL15tYXkvaSwgL15qdW4vaSwgL15qdWwvaSwgL15hdS9pLCAvXnMvaSwgL15vL2ksIC9ebi9pLCAvXmQvaV1cbn07XG52YXIgbWF0Y2hEYXlQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXltzbXR3Zl0vaSxcbiAgc2hvcnQ6IC9eKHN1fG1vfHR1fHdlfHRofGZyfHNhKS9pLFxuICBhYmJyZXZpYXRlZDogL14oc3VufG1vbnx0dWV8d2VkfHRodXxmcml8c2F0KS9pLFxuICB3aWRlOiAvXihzdW5kYXl8bW9uZGF5fHR1ZXNkYXl8d2VkbmVzZGF5fHRodXJzZGF5fGZyaWRheXxzYXR1cmRheSkvaVxufTtcbnZhciBwYXJzZURheVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IFsvXnMvaSwgL15tL2ksIC9edC9pLCAvXncvaSwgL150L2ksIC9eZi9pLCAvXnMvaV0sXG4gIGFueTogWy9ec3UvaSwgL15tL2ksIC9edHUvaSwgL153L2ksIC9edGgvaSwgL15mL2ksIC9ec2EvaV1cbn07XG52YXIgbWF0Y2hEYXlQZXJpb2RQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXihhfHB8bWl8bnwoaW4gdGhlfGF0KSAobW9ybmluZ3xhZnRlcm5vb258ZXZlbmluZ3xuaWdodCkpL2ksXG4gIGFueTogL14oW2FwXVxcLj9cXHM/bVxcLj98bWlkbmlnaHR8bm9vbnwoaW4gdGhlfGF0KSAobW9ybmluZ3xhZnRlcm5vb258ZXZlbmluZ3xuaWdodCkpL2lcbn07XG52YXIgcGFyc2VEYXlQZXJpb2RQYXR0ZXJucyA9IHtcbiAgYW55OiB7XG4gICAgYW06IC9eYS9pLFxuICAgIHBtOiAvXnAvaSxcbiAgICBtaWRuaWdodDogL15taS9pLFxuICAgIG5vb246IC9ebm8vaSxcbiAgICBtb3JuaW5nOiAvbW9ybmluZy9pLFxuICAgIGFmdGVybm9vbjogL2FmdGVybm9vbi9pLFxuICAgIGV2ZW5pbmc6IC9ldmVuaW5nL2ksXG4gICAgbmlnaHQ6IC9uaWdodC9pXG4gIH1cbn07XG52YXIgbWF0Y2ggPSB7XG4gIG9yZGluYWxOdW1iZXI6IGJ1aWxkTWF0Y2hQYXR0ZXJuRm4oe1xuICAgIG1hdGNoUGF0dGVybjogbWF0Y2hPcmRpbmFsTnVtYmVyUGF0dGVybixcbiAgICBwYXJzZVBhdHRlcm46IHBhcnNlT3JkaW5hbE51bWJlclBhdHRlcm4sXG4gICAgdmFsdWVDYWxsYmFjazogZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgfVxuICB9KSxcbiAgZXJhOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRXJhUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZUVyYVBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcbiAgcXVhcnRlcjogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaFF1YXJ0ZXJQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlUXVhcnRlclBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55JyxcbiAgICB2YWx1ZUNhbGxiYWNrOiBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKGluZGV4KSB7XG4gICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgfSksXG4gIG1vbnRoOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoTW9udGhQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlTW9udGhQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSksXG4gIGRheTogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaERheVBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSksXG4gIGRheVBlcmlvZDogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaERheVBlcmlvZFBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnYW55JyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZURheVBlcmlvZFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KVxufTtcbmV4cG9ydCBkZWZhdWx0IG1hdGNoOyIsImltcG9ydCBmb3JtYXREaXN0YW5jZSBmcm9tIFwiLi9fbGliL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0TG9uZyBmcm9tIFwiLi9fbGliL2Zvcm1hdExvbmcvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXRSZWxhdGl2ZSBmcm9tIFwiLi9fbGliL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9jYWxpemUgZnJvbSBcIi4vX2xpYi9sb2NhbGl6ZS9pbmRleC5qc1wiO1xuaW1wb3J0IG1hdGNoIGZyb20gXCIuL19saWIvbWF0Y2gvaW5kZXguanNcIjtcbi8qKlxuICogQHR5cGUge0xvY2FsZX1cbiAqIEBjYXRlZ29yeSBMb2NhbGVzXG4gKiBAc3VtbWFyeSBFbmdsaXNoIGxvY2FsZSAoVW5pdGVkIFN0YXRlcykuXG4gKiBAbGFuZ3VhZ2UgRW5nbGlzaFxuICogQGlzby02MzktMiBlbmdcbiAqIEBhdXRob3IgU2FzaGEgS29zcyBbQGtvc3Nub2NvcnBde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9rb3Nzbm9jb3JwfVxuICogQGF1dGhvciBMZXNoYSBLb3NzIFtAbGVzaGFrb3NzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbGVzaGFrb3NzfVxuICovXG52YXIgbG9jYWxlID0ge1xuICBjb2RlOiAnZW4tVVMnLFxuICBmb3JtYXREaXN0YW5jZTogZm9ybWF0RGlzdGFuY2UsXG4gIGZvcm1hdExvbmc6IGZvcm1hdExvbmcsXG4gIGZvcm1hdFJlbGF0aXZlOiBmb3JtYXRSZWxhdGl2ZSxcbiAgbG9jYWxpemU6IGxvY2FsaXplLFxuICBtYXRjaDogbWF0Y2gsXG4gIG9wdGlvbnM6IHtcbiAgICB3ZWVrU3RhcnRzT246IDAgLyogU3VuZGF5ICovLFxuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogMVxuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgbG9jYWxlOyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWF4XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGF0ZXN0IG9mIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGF0ZXN0IG9mIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGVbXXxOdW1iZXJbXX0gZGF0ZXNBcnJheSAtIHRoZSBkYXRlcyB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhdGVzdCBvZiB0aGUgZGF0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBvZiB0aGVzZSBkYXRlcyBpcyB0aGUgbGF0ZXN0P1xuICogY29uc3QgcmVzdWx0ID0gbWF4KFtcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApLFxuICogICBuZXcgRGF0ZSgxOTg3LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDE5OTUsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgxOTkwLCAwLCAxKVxuICogXSlcbiAqIC8vPT4gU3VuIEp1bCAwMiAxOTk1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1heChkaXJ0eURhdGVzQXJyYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlc0FycmF5O1xuICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheSwgU2V0IG9yIE1hcCwgb3Igb2JqZWN0IHdpdGggY3VzdG9tIGBmb3JFYWNoYCBtZXRob2RcbiAgaWYgKGRpcnR5RGF0ZXNBcnJheSAmJiB0eXBlb2YgZGlydHlEYXRlc0FycmF5LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRlc0FycmF5ID0gZGlydHlEYXRlc0FycmF5O1xuXG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuXG4gIH0gZWxzZSBpZiAoX3R5cGVvZihkaXJ0eURhdGVzQXJyYXkpID09PSAnb2JqZWN0JyAmJiBkaXJ0eURhdGVzQXJyYXkgIT09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGlydHlEYXRlc0FycmF5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBub24taXRlcmFibGUsIHJldHVybiBJbnZhbGlkIERhdGVcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgcmVzdWx0O1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSkge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPCBjdXJyZW50RGF0ZSB8fCBpc05hTihOdW1iZXIoY3VycmVudERhdGUpKSkge1xuICAgICAgcmVzdWx0ID0gY3VycmVudERhdGU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdCB8fCBuZXcgRGF0ZShOYU4pO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vLyBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuLy8gMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbnZhciBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnlcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gdGhlIHNwZWNpZmllZCwgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiB0aGUgc3BlY2lmaWVkLCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKlxuICogT25lIG1vbnRoIGlzIGEgeWVhciBkaXZpZGVkIGJ5IDEyLlxuICpcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIG9iamVjdCB3aXRoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIDEgeWVhciBpbiBtaWxsaXNlY29uZHNcbiAqIG1pbGxpc2Vjb25kcyh7IHllYXJzOiAxIH0pXG4gKiAvLz0+IDMxNTU2OTUyMDAwXG4gKlxuICogLy8gMyBtb250aHMgaW4gbWlsbGlzZWNvbmRzXG4gKiBtaWxsaXNlY29uZHMoeyBtb250aHM6IDMgfSlcbiAqIC8vPT4gNzg4OTIzODAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaWxsaXNlY29uZHMoX3JlZikge1xuICB2YXIgeWVhcnMgPSBfcmVmLnllYXJzLFxuICAgIG1vbnRocyA9IF9yZWYubW9udGhzLFxuICAgIHdlZWtzID0gX3JlZi53ZWVrcyxcbiAgICBkYXlzID0gX3JlZi5kYXlzLFxuICAgIGhvdXJzID0gX3JlZi5ob3VycyxcbiAgICBtaW51dGVzID0gX3JlZi5taW51dGVzLFxuICAgIHNlY29uZHMgPSBfcmVmLnNlY29uZHM7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgdG90YWxEYXlzID0gMDtcbiAgaWYgKHllYXJzKSB0b3RhbERheXMgKz0geWVhcnMgKiBkYXlzSW5ZZWFyO1xuICBpZiAobW9udGhzKSB0b3RhbERheXMgKz0gbW9udGhzICogKGRheXNJblllYXIgLyAxMik7XG4gIGlmICh3ZWVrcykgdG90YWxEYXlzICs9IHdlZWtzICogNztcbiAgaWYgKGRheXMpIHRvdGFsRGF5cyArPSBkYXlzO1xuICB2YXIgdG90YWxTZWNvbmRzID0gdG90YWxEYXlzICogMjQgKiA2MCAqIDYwO1xuICBpZiAoaG91cnMpIHRvdGFsU2Vjb25kcyArPSBob3VycyAqIDYwICogNjA7XG4gIGlmIChtaW51dGVzKSB0b3RhbFNlY29uZHMgKz0gbWludXRlcyAqIDYwO1xuICBpZiAoc2Vjb25kcykgdG90YWxTZWNvbmRzICs9IHNlY29uZHM7XG4gIHJldHVybiBNYXRoLnJvdW5kKHRvdGFsU2Vjb25kcyAqIDEwMDApO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1RvSG91cnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvIGhvdXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBob3Vycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBjb252ZXJ0ZWQgaW4gaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDcyMDAwMDAgbWlsbGlzZWNvbmRzIHRvIGhvdXJzOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9Ib3Vycyg3MjAwMDAwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb0hvdXJzKDcxOTk5OTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzVG9Ib3VycyhtaWxsaXNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBob3VycyA9IG1pbGxpc2Vjb25kcyAvIG1pbGxpc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzVG9NaW51dGVzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBtaW51dGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZC5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBjb252ZXJ0ZWQgaW4gbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgNjAwMDAgbWlsbGlzZWNvbmRzIHRvIG1pbnV0ZXM6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb01pbnV0ZXMoNjAwMDApXG4gKiAvLz0+IDFcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvTWludXRlcygxMTk5OTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzVG9NaW51dGVzKG1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIG1pbnV0ZXMgPSBtaWxsaXNlY29uZHMgLyBtaWxsaXNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIE1hdGguZmxvb3IobWludXRlcyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luU2Vjb25kIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNUb1NlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvIHNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIHNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgY29udmVydGVkIGluIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDEwMDAgbWlsaXNlY29uZHMgdG8gc2Vjb25kczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvU2Vjb25kcygxMDAwKVxuICogLy89PiAxXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb1NlY29uZHMoMTk5OSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaWxsaXNlY29uZHNUb1NlY29uZHMobWlsbGlzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAvIG1pbGxpc2Vjb25kc0luU2Vjb25kO1xuICByZXR1cm4gTWF0aC5mbG9vcihzZWNvbmRzKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBlYXJsaWVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRoZSBlYXJsaWVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlW118TnVtYmVyW119IGRhdGVzQXJyYXkgLSB0aGUgZGF0ZXMgdG8gY29tcGFyZVxuICogQHJldHVybnMge0RhdGV9IC0gdGhlIGVhcmxpZXN0IG9mIHRoZSBkYXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIG9mIHRoZXNlIGRhdGVzIGlzIHRoZSBlYXJsaWVzdD9cbiAqIGNvbnN0IHJlc3VsdCA9IG1pbihbXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk5MCwgMCwgMSlcbiAqIF0pXG4gKiAvLz0+IFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaW4oZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZXNBcnJheTtcbiAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXksIFNldCBvciBNYXAsIG9yIG9iamVjdCB3aXRoIGN1c3RvbSBgZm9yRWFjaGAgbWV0aG9kXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgJiYgdHlwZW9mIGRpcnR5RGF0ZXNBcnJheS5mb3JFYWNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0ZXNBcnJheSA9IGRpcnR5RGF0ZXNBcnJheTtcbiAgICAvLyBJZiBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheS1saWtlIE9iamVjdCwgY29udmVydCB0byBBcnJheS5cbiAgfSBlbHNlIGlmIChfdHlwZW9mKGRpcnR5RGF0ZXNBcnJheSkgPT09ICdvYmplY3QnICYmIGRpcnR5RGF0ZXNBcnJheSAhPT0gbnVsbCkge1xuICAgIGRhdGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkaXJ0eURhdGVzQXJyYXkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIG5vbi1pdGVyYWJsZSwgcmV0dXJuIEludmFsaWQgRGF0ZVxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHZhciByZXN1bHQ7XG4gIGRhdGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZGlydHlEYXRlKSB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA+IGN1cnJlbnREYXRlIHx8IGlzTmFOKGN1cnJlbnREYXRlLmdldERhdGUoKSkpIHtcbiAgICAgIHJlc3VsdCA9IGN1cnJlbnREYXRlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQgfHwgbmV3IERhdGUoTmFOKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWludXRlc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWludXRlc1RvSG91cnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWludXRlcyB0byBob3Vycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWludXRlcyB0byBhIGZ1bGwgbnVtYmVyIG9mIGhvdXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW51dGVzIC0gbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzIGNvbnZlcnRlZCBpbiBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMTQwIG1pbnV0ZXMgdG8gaG91cnM6XG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9Ib3VycygxMjApXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbnV0ZXNUb0hvdXJzKDE3OSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaW51dGVzVG9Ib3VycyhtaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaG91cnMgPSBtaW51dGVzIC8gbWludXRlc0luSG91cjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWludXRlc1RvTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaW51dGVzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW51dGVzIC0gbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzIGNvbnZlcnRlZCBpbiBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgbWludXRlcyB0byBtaWxsaXNlY29uZHNcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbnV0ZXNUb01pbGxpc2Vjb25kcygyKVxuICogLy89PiAxMjAwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWludXRlc1RvTWlsbGlzZWNvbmRzKG1pbnV0ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWludXRlc1RvU2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaW51dGVzIHRvIHNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYSBmdWxsIG51bWJlciBvZiBzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7IG51bWJlciB9IG1pbnV0ZXMgLSBudW1iZXIgb2YgbWludXRlcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgY29udmVydGVkIGluIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgbWludXRlcyB0byBzZWNvbmRzXG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9TZWNvbmRzKDIpXG4gKiAvLz0+IDEyMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaW51dGVzVG9TZWNvbmRzKG1pbnV0ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKG1pbnV0ZXMgKiBzZWNvbmRzSW5NaW51dGUpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblF1YXJ0ZXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1vbnRoc1RvUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIG1vbnRocyB0byBxdWFydGVycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbW9udGhzIHRvIGEgZnVsbCBudW1iZXIgb2YgcXVhcnRlcnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRocyAtIG51bWJlciBvZiBtb250aHMgdG8gYmUgY29udmVydGVkLlxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbW9udGhzIGNvbnZlcnRlZCBpbiBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgNiBtb250aHMgdG8gcXVhcnRlcnM6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1F1YXJ0ZXJzKDYpXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1vbnRoc1RvUXVhcnRlcnMoNylcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb250aHNUb1F1YXJ0ZXJzKG1vbnRocykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHF1YXJ0ZXJzID0gbW9udGhzIC8gbW9udGhzSW5RdWFydGVyO1xuICByZXR1cm4gTWF0aC5mbG9vcihxdWFydGVycyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1vbnRoc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbW9udGhzVG9ZZWFyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBudW1iZXIgb2YgbW9udGhzIHRvIHllYXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtb250aHMgdG8gYSBmdWxsIG51bWJlciBvZiB5ZWFycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbW9udGhzIC0gbnVtYmVyIG9mIG1vbnRocyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1vbnRocyBjb252ZXJ0ZWQgaW4geWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDM2IG1vbnRocyB0byB5ZWFyczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1vbnRoc1RvWWVhcnMoMzYpXG4gKiAvLz0+IDNcbiAqXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbW9udGhzVG9ZZWFycyg0MClcbiAqIC8vPT4gM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb250aHNUb1llYXJzKG1vbnRocykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXJzID0gbW9udGhzIC8gbW9udGhzSW5ZZWFyO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFycyk7XG59IiwiaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXkgZnJvbSBcIi4uL2dldERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dERheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBkYXkgb2YgdGhlIHdlZWs/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IGRheSBvZiB0aGUgd2Vlaz8gMC02IHRoZSBkYXkgb2YgdGhlIHdlZWssIDAgcmVwcmVzZW50cyBTdW5kYXkuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF5fSBkYXkgLSBkYXkgb2YgdGhlIHdlZWtcbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBkYXRlIGlzIHRoZSBuZXh0IGRheSBvZiB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IC0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBNb25kYXkgYWZ0ZXIgTWFyLCAyMCwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHREYXkobmV3IERhdGUoMjAyMCwgMiwgMjApLCAxKVxuICogLy89PiBNb24gTWFyIDIzIDIwMjAgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBUdWVzZGF5IGFmdGVyIE1hciwgMjEsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0RGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIxKSwgMilcbiAqIC8vPT4gVHVlIE1hciAyNCAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHREYXkoZGF0ZSwgZGF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVsdGEgPSBkYXkgLSBnZXREYXkoZGF0ZSk7XG4gIGlmIChkZWx0YSA8PSAwKSBkZWx0YSArPSA3O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlLCBkZWx0YSk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRGcmlkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgRnJpZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBGcmlkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IEZyaWRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgRnJpZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0RnJpZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gRnJpIE1hciAyNyAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRGcmlkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgNSk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRNb25kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBNb25kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IE1vbmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0TW9uZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gTW9uIE1hciAyMyAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRNb25kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgMSk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRTYXR1cmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBTYXR1cmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgU2F0dXJkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFNhdHVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBTYXR1cmRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFNhdHVyZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gU2F0IE1hciAyOCAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRTYXR1cmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCA2KTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dFN1bmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBTdW5kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFN1bmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgU3VuZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBTdW5kYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRTdW5kYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBTdW4gTWFyIDI5IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dFN1bmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCAwKTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dFRodXJzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFRodXJzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBUaHVyc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgVGh1cnNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFRodXJzZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0VGh1cnNkYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBUaHVyIE1hciAyNiAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRUaHVyc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCA0KTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dFR1ZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgVHVlc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgVHVlc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgVHVlc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgVHVlc2RheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFR1ZXNkYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBUdWUgTWFyIDI0IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dFR1ZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgMik7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRXZWRuZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgV2VkbmVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBXZWRuZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFdlZG5lc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgV2VkbmVzZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0V2VkbmVzZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gV2VkIE1hciAyNSAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRXZWRuZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgMyk7XG59IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgVmFsdWVTZXR0ZXIgfSBmcm9tIFwiLi9TZXR0ZXIuanNcIjtcbmV4cG9ydCB2YXIgUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXJzZXIpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCB2b2lkIDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInByaW9yaXR5XCIsIHZvaWQgMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwic3ViUHJpb3JpdHlcIiwgdm9pZCAwKTtcbiAgfVxuICBfY3JlYXRlQ2xhc3MoUGFyc2VyLCBbe1xuICAgIGtleTogXCJydW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0dGVyOiBuZXcgVmFsdWVTZXR0ZXIocmVzdWx0LnZhbHVlLCB0aGlzLnZhbGlkYXRlLCB0aGlzLnNldCwgdGhpcy5wcmlvcml0eSwgdGhpcy5zdWJQcmlvcml0eSksXG4gICAgICAgIHJlc3Q6IHJlc3VsdC5yZXN0XG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfdXRjRGF0ZSwgX3ZhbHVlLCBfb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBQYXJzZXI7XG59KCk7IiwiaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG52YXIgVElNRVpPTkVfVU5JVF9QUklPUklUWSA9IDEwO1xuZXhwb3J0IHZhciBTZXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTZXR0ZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNldHRlcik7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwicHJpb3JpdHlcIiwgdm9pZCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJzdWJQcmlvcml0eVwiLCAwKTtcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2V0dGVyLCBbe1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfdXRjRGF0ZSwgX29wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU2V0dGVyO1xufSgpO1xuZXhwb3J0IHZhciBWYWx1ZVNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NldHRlcikge1xuICBfaW5oZXJpdHMoVmFsdWVTZXR0ZXIsIF9TZXR0ZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFZhbHVlU2V0dGVyKTtcbiAgZnVuY3Rpb24gVmFsdWVTZXR0ZXIodmFsdWUsIHZhbGlkYXRlVmFsdWUsIHNldFZhbHVlLCBwcmlvcml0eSwgc3ViUHJpb3JpdHkpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZhbHVlU2V0dGVyKTtcbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpO1xuICAgIF90aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgX3RoaXMudmFsaWRhdGVWYWx1ZSA9IHZhbGlkYXRlVmFsdWU7XG4gICAgX3RoaXMuc2V0VmFsdWUgPSBzZXRWYWx1ZTtcbiAgICBfdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5O1xuICAgIGlmIChzdWJQcmlvcml0eSkge1xuICAgICAgX3RoaXMuc3ViUHJpb3JpdHkgPSBzdWJQcmlvcml0eTtcbiAgICB9XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhWYWx1ZVNldHRlciwgW3tcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUodXRjRGF0ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVWYWx1ZSh1dGNEYXRlLCB0aGlzLnZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldCh1dGNEYXRlLCBmbGFncywgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodXRjRGF0ZSwgZmxhZ3MsIHRoaXMudmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVmFsdWVTZXR0ZXI7XG59KFNldHRlcik7XG5leHBvcnQgdmFyIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfU2V0dGVyMikge1xuICBfaW5oZXJpdHMoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIsIF9TZXR0ZXIyKTtcbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIpO1xuICBmdW5jdGlvbiBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlcigpIHtcbiAgICB2YXIgX3RoaXMyO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpczIgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJwcmlvcml0eVwiLCBUSU1FWk9ORV9VTklUX1BSSU9SSVRZKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN1YlByaW9yaXR5XCIsIC0xKTtcbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciwgW3tcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncykge1xuICAgICAgaWYgKGZsYWdzLnRpbWVzdGFtcElzU2V0KSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgICAgdmFyIGNvbnZlcnRlZERhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgICAgIGNvbnZlcnRlZERhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgIGNvbnZlcnRlZERhdGUuc2V0SG91cnMoZGF0ZS5nZXRVVENIb3VycygpLCBkYXRlLmdldFVUQ01pbnV0ZXMoKSwgZGF0ZS5nZXRVVENTZWNvbmRzKCksIGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRlZERhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlcjtcbn0oU2V0dGVyKTsiLCJleHBvcnQgdmFyIG51bWVyaWNQYXR0ZXJucyA9IHtcbiAgbW9udGg6IC9eKDFbMC0yXXwwP1xcZCkvLFxuICAvLyAwIHRvIDEyXG4gIGRhdGU6IC9eKDNbMC0xXXxbMC0yXT9cXGQpLyxcbiAgLy8gMCB0byAzMVxuICBkYXlPZlllYXI6IC9eKDM2WzAtNl18M1swLTVdXFxkfFswLTJdP1xcZD9cXGQpLyxcbiAgLy8gMCB0byAzNjZcbiAgd2VlazogL14oNVswLTNdfFswLTRdP1xcZCkvLFxuICAvLyAwIHRvIDUzXG4gIGhvdXIyM2g6IC9eKDJbMC0zXXxbMC0xXT9cXGQpLyxcbiAgLy8gMCB0byAyM1xuICBob3VyMjRoOiAvXigyWzAtNF18WzAtMV0/XFxkKS8sXG4gIC8vIDAgdG8gMjRcbiAgaG91cjExaDogL14oMVswLTFdfDA/XFxkKS8sXG4gIC8vIDAgdG8gMTFcbiAgaG91cjEyaDogL14oMVswLTJdfDA/XFxkKS8sXG4gIC8vIDAgdG8gMTJcbiAgbWludXRlOiAvXlswLTVdP1xcZC8sXG4gIC8vIDAgdG8gNTlcbiAgc2Vjb25kOiAvXlswLTVdP1xcZC8sXG4gIC8vIDAgdG8gNTlcblxuICBzaW5nbGVEaWdpdDogL15cXGQvLFxuICAvLyAwIHRvIDlcbiAgdHdvRGlnaXRzOiAvXlxcZHsxLDJ9LyxcbiAgLy8gMCB0byA5OVxuICB0aHJlZURpZ2l0czogL15cXGR7MSwzfS8sXG4gIC8vIDAgdG8gOTk5XG4gIGZvdXJEaWdpdHM6IC9eXFxkezEsNH0vLFxuICAvLyAwIHRvIDk5OTlcblxuICBhbnlEaWdpdHNTaWduZWQ6IC9eLT9cXGQrLyxcbiAgc2luZ2xlRGlnaXRTaWduZWQ6IC9eLT9cXGQvLFxuICAvLyAwIHRvIDksIC0wIHRvIC05XG4gIHR3b0RpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDJ9LyxcbiAgLy8gMCB0byA5OSwgLTAgdG8gLTk5XG4gIHRocmVlRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsM30vLFxuICAvLyAwIHRvIDk5OSwgLTAgdG8gLTk5OVxuICBmb3VyRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsNH0vIC8vIDAgdG8gOTk5OSwgLTAgdG8gLTk5OTlcbn07XG5cbmV4cG9ydCB2YXIgdGltZXpvbmVQYXR0ZXJucyA9IHtcbiAgYmFzaWNPcHRpb25hbE1pbnV0ZXM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KT98Wi8sXG4gIGJhc2ljOiAvXihbKy1dKShcXGR7Mn0pKFxcZHsyfSl8Wi8sXG4gIGJhc2ljT3B0aW9uYWxTZWNvbmRzOiAvXihbKy1dKShcXGR7Mn0pKFxcZHsyfSkoKFxcZHsyfSkpP3xaLyxcbiAgZXh0ZW5kZWQ6IC9eKFsrLV0pKFxcZHsyfSk6KFxcZHsyfSl8Wi8sXG4gIGV4dGVuZGVkT3B0aW9uYWxTZWNvbmRzOiAvXihbKy1dKShcXGR7Mn0pOihcXGR7Mn0pKDooXFxkezJ9KSk/fFovXG59OyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgZGF5UGVyaW9kRW51bVRvSG91cnMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgQU1QTU1pZG5pZ2h0UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhBTVBNTWlkbmlnaHRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEFNUE1NaWRuaWdodFBhcnNlcik7XG4gIGZ1bmN0aW9uIEFNUE1NaWRuaWdodFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFNUE1NaWRuaWdodFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDgwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdCJywgJ0gnLCAnaycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhBTVBNTWlkbmlnaHRQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdiJzpcbiAgICAgICAgY2FzZSAnYmInOlxuICAgICAgICBjYXNlICdiYmInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ2JiYmJiJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdiYmJiJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBBTVBNTWlkbmlnaHRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBBTVBNUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhBTVBNUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihBTVBNUGFyc2VyKTtcbiAgZnVuY3Rpb24gQU1QTVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFNUE1QYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2InLCAnQicsICdIJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoQU1QTVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2EnOlxuICAgICAgICBjYXNlICdhYSc6XG4gICAgICAgIGNhc2UgJ2FhYSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnYWFhYWEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEFNUE1QYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBpc0xlYXBZZWFySW5kZXgsIHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xudmFyIERBWVNfSU5fTU9OVEggPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG52YXIgREFZU19JTl9NT05USF9MRUFQX1lFQVIgPSBbMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG5cbi8vIERheSBvZiB0aGUgbW9udGhcbmV4cG9ydCB2YXIgRGF0ZVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF0ZVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRGF0ZVBhcnNlcik7XG4gIGZ1bmN0aW9uIERhdGVQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXRlUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdWJQcmlvcml0eVwiLCAxKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICd3JywgJ0knLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXRlUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRhdGUsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdkbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RhdGUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShkYXRlLCB2YWx1ZSkge1xuICAgICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICB2YXIgaXNMZWFwWWVhciA9IGlzTGVhcFllYXJJbmRleCh5ZWFyKTtcbiAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSW21vbnRoXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhbbW9udGhdO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDRGF0ZSh2YWx1ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXRlUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzLCBpc0xlYXBZZWFySW5kZXggfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgRGF5T2ZZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhEYXlPZlllYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERheU9mWWVhclBhcnNlcik7XG4gIGZ1bmN0aW9uIERheU9mWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERheU9mWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3VicHJpb3JpdHlcIiwgMSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0UnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF5T2ZZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZGF5T2ZZZWFyLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgoeWVhcik7XG4gICAgICBpZiAoaXNMZWFwWWVhcikge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAzNjY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAzNjU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCgwLCB2YWx1ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXlPZlllYXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgc2V0VVRDRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0RheS9pbmRleC5qc1wiOyAvLyBEYXkgb2Ygd2Vla1xuZXhwb3J0IHZhciBEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERheVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRGF5UGFyc2VyKTtcbiAgZnVuY3Rpb24gRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF5UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdFJzpcbiAgICAgICAgY2FzZSAnRUUnOlxuICAgICAgICBjYXNlICdFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcbiAgICAgICAgY2FzZSAnRUVFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ0VFRUVFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlc2RheVxuICAgICAgICBjYXNlICdFRUVFJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIGluIHRoZSBtb3JuaW5nLCBpbiB0aGUgYWZ0ZXJub29uLCBpbiB0aGUgZXZlbmluZywgYXQgbmlnaHRcbmV4cG9ydCB2YXIgRGF5UGVyaW9kUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhEYXlQZXJpb2RQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERheVBlcmlvZFBhcnNlcik7XG4gIGZ1bmN0aW9uIERheVBlcmlvZFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERheVBlcmlvZFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDgwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERheVBlcmlvZFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0InOlxuICAgICAgICBjYXNlICdCQic6XG4gICAgICAgIGNhc2UgJ0JCQic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnQkJCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ0JCQkInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERheVBlcmlvZFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmV4cG9ydCB2YXIgRXJhUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhFcmFQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEVyYVBhcnNlcik7XG4gIGZ1bmN0aW9uIEVyYVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVyYVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDE0MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1InLCAndScsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhFcmFQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyBBRCwgQkNcbiAgICAgICAgY2FzZSAnRyc6XG4gICAgICAgIGNhc2UgJ0dHJzpcbiAgICAgICAgY2FzZSAnR0dHJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBBLCBCXG4gICAgICAgIGNhc2UgJ0dHR0dHJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdFxuICAgICAgICBjYXNlICdHR0dHJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBmbGFncy5lcmEgPSB2YWx1ZTtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodmFsdWUsIDAsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRXJhUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEV4dGVuZGVkWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRXh0ZW5kZWRZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihFeHRlbmRlZFllYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBFeHRlbmRlZFllYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHRlbmRlZFllYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydHJywgJ3knLCAnWScsICdSJywgJ3cnLCAnSScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhFeHRlbmRlZFllYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICBpZiAodG9rZW4gPT09ICd1Jykge1xuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzU2lnbmVkKDQsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodmFsdWUsIDAsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRXh0ZW5kZWRZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhGcmFjdGlvbk9mU2Vjb25kUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKTtcbiAgZnVuY3Rpb24gRnJhY3Rpb25PZlNlY29uZFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUgKiBNYXRoLnBvdygxMCwgLXRva2VuLmxlbmd0aCArIDMpKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRnJhY3Rpb25PZlNlY29uZFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMFRvMTFQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIwVG8xMVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjBUbzExUGFyc2VyKTtcbiAgZnVuY3Rpb24gSG91cjBUbzExUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjBUbzExUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydoJywgJ0gnLCAnaycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhIb3VyMFRvMTFQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjExaCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ0tvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGlzUE0gPSBkYXRlLmdldFVUQ0hvdXJzKCkgPj0gMTI7XG4gICAgICBpZiAoaXNQTSAmJiB2YWx1ZSA8IDEyKSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUgKyAxMiwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSG91cjBUbzExUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEhvdXIwdG8yM1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSG91cjB0bzIzUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMHRvMjNQYXJzZXIpO1xuICBmdW5jdGlvbiBIb3VyMHRvMjNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIb3VyMHRvMjNQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA3MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnYicsICdoJywgJ0snLCAnaycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhIb3VyMHRvMjNQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjIzaCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ0hvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMjM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhvdXIwdG8yM1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMVRvMjRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIxVG8yNFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjFUbzI0UGFyc2VyKTtcbiAgZnVuY3Rpb24gSG91cjFUbzI0UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjFUbzI0UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydhJywgJ2InLCAnaCcsICdIJywgJ0snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjFUbzI0UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIyNGgsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdrbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDI0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBob3VycyA9IHZhbHVlIDw9IDI0ID8gdmFsdWUgJSAyNCA6IHZhbHVlO1xuICAgICAgZGF0ZS5zZXRVVENIb3Vycyhob3VycywgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhvdXIxVG8yNFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMXRvMTJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIxdG8xMlBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjF0bzEyUGFyc2VyKTtcbiAgZnVuY3Rpb24gSG91cjF0bzEyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjF0bzEyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydIJywgJ0snLCAnaycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhIb3VyMXRvMTJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjEyaCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ2hvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMTI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGlzUE0gPSBkYXRlLmdldFVUQ0hvdXJzKCkgPj0gMTI7XG4gICAgICBpZiAoaXNQTSAmJiB2YWx1ZSA8IDEyKSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUgKyAxMiwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2UgaWYgKCFpc1BNICYmIHZhbHVlID09PSAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSwgMCwgMCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhvdXIxdG8xMlBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENJU09EYXkgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDSVNPRGF5L2luZGV4LmpzXCI7IC8vIElTTyBkYXkgb2Ygd2Vla1xuZXhwb3J0IHZhciBJU09EYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT0RheVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPRGF5UGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPRGF5UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1knLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ0UnLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKElTT0RheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIDc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMlxuICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgY2FzZSAnaWknOlxuICAgICAgICAgIC8vIDAyXG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgICAvLyAybmRcbiAgICAgICAgY2FzZSAnaW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdpaWknOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUXG4gICAgICAgIGNhc2UgJ2lpaWlpJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVHVcbiAgICAgICAgY2FzZSAnaWlpaWlpJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVHVlc2RheVxuICAgICAgICBjYXNlICdpaWlpJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZSA9IHNldFVUQ0lTT0RheShkYXRlLCB2YWx1ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJU09EYXlQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyB0aW1lem9uZVBhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VUaW1lem9uZVBhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjsgLy8gVGltZXpvbmUgKElTTy04NjAxKVxuZXhwb3J0IHZhciBJU09UaW1lem9uZVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPVGltZXpvbmVQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT1RpbWV6b25lUGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPVGltZXpvbmVQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09UaW1lem9uZVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJywgJ1gnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09UaW1lem9uZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbE1pbnV0ZXMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eHh4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3h4eHh4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3h4eCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWQsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgaWYgKGZsYWdzLnRpbWVzdGFtcElzU2V0KSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPVGltZXpvbmVQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyB0aW1lem9uZVBhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VUaW1lem9uZVBhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjsgLy8gVGltZXpvbmUgKElTTy04NjAxLiArMDA6MDAgaXMgYCdaJ2ApXG5leHBvcnQgdmFyIElTT1RpbWV6b25lV2l0aFpQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1RpbWV6b25lV2l0aFpQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT1RpbWV6b25lV2l0aFpQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09UaW1lem9uZVdpdGhaUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPVGltZXpvbmVXaXRoWlBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJywgJ3gnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09UaW1lem9uZVdpdGhaUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsTWludXRlcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpYywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxTZWNvbmRzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnWFhYWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkT3B0aW9uYWxTZWNvbmRzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnWFhYJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSB2YWx1ZSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJU09UaW1lem9uZVdpdGhaUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjsgLy8gSVNPIHdlZWsgb2YgeWVhclxuZXhwb3J0IHZhciBJU09XZWVrUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09XZWVrUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09XZWVrUGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPV2Vla1BhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1dlZWtQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1knLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09XZWVrUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLndlZWssIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdJbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDUzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDSVNPV2VlayhzZXRVVENJU09XZWVrKGRhdGUsIHZhbHVlKSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJU09XZWVrUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjsgLy8gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbmV4cG9ydCB2YXIgSVNPV2Vla1llYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1dlZWtZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09XZWVrWWVhclBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1dlZWtZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPV2Vla1llYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydHJywgJ3knLCAnWScsICd1JywgJ1EnLCAncScsICdNJywgJ0wnLCAndycsICdkJywgJ0QnLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKElTT1dlZWtZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgaWYgKHRva2VuID09PSAnUicpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChfZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGZpcnN0V2Vla09mWWVhciA9IG5ldyBEYXRlKDApO1xuICAgICAgZmlyc3RXZWVrT2ZZZWFyLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCA0KTtcbiAgICAgIGZpcnN0V2Vla09mWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDSVNPV2VlayhmaXJzdFdlZWtPZlllYXIpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPV2Vla1llYXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0RheS9pbmRleC5qc1wiOyAvLyBMb2NhbCBkYXkgb2Ygd2Vla1xuZXhwb3J0IHZhciBMb2NhbERheVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxEYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsRGF5UGFyc2VyKTtcbiAgZnVuY3Rpb24gTG9jYWxEYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbERheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdSJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICdJJywgJ2QnLCAnRCcsICdFJywgJ2knLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhMb2NhbERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgdmFyIHdob2xlV2Vla0RheXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAtIDEpIC8gNykgKiA3O1xuICAgICAgICByZXR1cm4gKHZhbHVlICsgb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA2KSAlIDcgKyB3aG9sZVdlZWtEYXlzO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdlJzpcbiAgICAgICAgY2FzZSAnZWUnOlxuICAgICAgICAgIC8vIDAzXG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gM3JkXG4gICAgICAgIGNhc2UgJ2VvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVHVlXG4gICAgICAgIGNhc2UgJ2VlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcbiAgICAgICAgY2FzZSAnZWVlZWVlJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENEYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTG9jYWxEYXlQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiOyAvLyBMb2NhbCB3ZWVrIG9mIHllYXJcbmV4cG9ydCB2YXIgTG9jYWxXZWVrUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhMb2NhbFdlZWtQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsV2Vla1BhcnNlcik7XG4gIGZ1bmN0aW9uIExvY2FsV2Vla1BhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExvY2FsV2Vla1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnaScsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhMb2NhbFdlZWtQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMud2VlaywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3dvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnd2VlaydcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNTM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENXZWVrKHNldFVUQ1dlZWsoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvY2FsV2Vla1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgbm9ybWFsaXplVHdvRGlnaXRZZWFyLCBtYXBWYWx1ZSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjtcbi8vIExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbmV4cG9ydCB2YXIgTG9jYWxXZWVrWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxXZWVrWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTG9jYWxXZWVrWWVhclBhcnNlcik7XG4gIGZ1bmN0aW9uIExvY2FsV2Vla1llYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbFdlZWtZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdSJywgJ3UnLCAnUScsICdxJywgJ00nLCAnTCcsICdJJywgJ2QnLCAnRCcsICdpJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKExvY2FsV2Vla1llYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB5ZWFyOiB5ZWFyLFxuICAgICAgICAgIGlzVHdvRGlnaXRZZWFyOiB0b2tlbiA9PT0gJ1lZJ1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnWSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyg0LCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIGNhc2UgJ1lvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAneWVhcidcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgY3VycmVudFllYXIgPSBnZXRVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcbiAgICAgIGlmICh2YWx1ZS5pc1R3b0RpZ2l0WWVhcikge1xuICAgICAgICB2YXIgbm9ybWFsaXplZFR3b0RpZ2l0WWVhciA9IG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcih2YWx1ZS55ZWFyLCBjdXJyZW50WWVhcik7XG4gICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIobm9ybWFsaXplZFR3b0RpZ2l0WWVhciwgMCwgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICB2YXIgeWVhciA9ICEoJ2VyYScgaW4gZmxhZ3MpIHx8IGZsYWdzLmVyYSA9PT0gMSA/IHZhbHVlLnllYXIgOiAxIC0gdmFsdWUueWVhcjtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvY2FsV2Vla1llYXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgTWludXRlUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhNaW51dGVQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1pbnV0ZVBhcnNlcik7XG4gIGZ1bmN0aW9uIE1pbnV0ZVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1pbnV0ZVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDYwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTWludXRlUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1pbnV0ZSwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ21vJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnbWludXRlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA1OTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01pbnV0ZXModmFsdWUsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBNaW51dGVQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5leHBvcnQgdmFyIE1vbnRoUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhNb250aFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTW9udGhQYXJzZXIpO1xuICBmdW5jdGlvbiBNb250aFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1vbnRoUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICdMJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTEwKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKE1vbnRoUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgLSAxO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubW9udGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDIsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgICBjYXNlICdNbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICAgIGNhc2UgJ01NTSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuICAgICAgICBjYXNlICdNTU1NJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCh2YWx1ZSwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBNb250aFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBRdWFydGVyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhRdWFydGVyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihRdWFydGVyUGFyc2VyKTtcbiAgZnVuY3Rpb24gUXVhcnRlclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFF1YXJ0ZXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMjApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdNJywgJ0wnLCAndycsICdJJywgJ2QnLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhRdWFydGVyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgY2FzZSAnUVEnOlxuICAgICAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgICAgY2FzZSAnUW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgICBjYXNlICdRUVEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICAgIGNhc2UgJ1FRUVFRJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgICAgY2FzZSAnUVFRUSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCgodmFsdWUgLSAxKSAqIDMsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUXVhcnRlclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTZWNvbmRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFNlY29uZFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU2Vjb25kUGFyc2VyKTtcbiAgZnVuY3Rpb24gU2Vjb25kUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Vjb25kUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTZWNvbmRQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2Vjb25kLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnc28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdzZWNvbmQnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDU2Vjb25kcyh2YWx1ZSwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlY29uZFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENEYXkgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDRGF5L2luZGV4LmpzXCI7IC8vIFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrXG5leHBvcnQgdmFyIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIpO1xuICBmdW5jdGlvbiBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnRScsICdpJywgJ2UnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICB2YXIgd2hvbGVXZWVrRGF5cyA9IE1hdGguZmxvb3IoKHZhbHVlIC0gMSkgLyA3KSAqIDc7XG4gICAgICAgIHJldHVybiAodmFsdWUgKyBvcHRpb25zLndlZWtTdGFydHNPbiArIDYpICUgNyArIHdob2xlV2Vla0RheXM7XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAzXG4gICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICBjYXNlICdjYyc6XG4gICAgICAgICAgLy8gMDNcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAzcmRcbiAgICAgICAgY2FzZSAnY28nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnY2NjJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUXG4gICAgICAgIGNhc2UgJ2NjY2NjJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdVxuICAgICAgICBjYXNlICdjY2NjY2MnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnY2NjYyc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDY7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMsIG1hcFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFN0YW5kQWxvbmVNb250aFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoU3RhbmRBbG9uZU1vbnRoUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTdGFuZEFsb25lTW9udGhQYXJzZXIpO1xuICBmdW5jdGlvbiBTdGFuZEFsb25lTW9udGhQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdGFuZEFsb25lTW9udGhQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ00nLCAndycsICdJJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU3RhbmRBbG9uZU1vbnRoUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgLSAxO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubW9udGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ0xMJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDIsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgICBjYXNlICdMbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICAgIGNhc2UgJ0xMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgICBjYXNlICdMTExMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuICAgICAgICBjYXNlICdMTExMJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCh2YWx1ZSwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdGFuZEFsb25lTW9udGhQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTdGFuZEFsb25lUXVhcnRlclBhcnNlcik7XG4gIGZ1bmN0aW9uIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMjApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAnUScsICdNJywgJ0wnLCAndycsICdJJywgJ2QnLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTdGFuZEFsb25lUXVhcnRlclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgICAgY2FzZSAncSc6XG4gICAgICAgIGNhc2UgJ3FxJzpcbiAgICAgICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICAgIGNhc2UgJ3FvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgICAgY2FzZSAncXFxJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgICBjYXNlICdxcXFxcSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICAgIGNhc2UgJ3FxcXEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcik7XG4gIGZ1bmN0aW9uIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDIwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsICcqJyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBwYXJzZUFueURpZ2l0c1NpZ25lZChkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChfZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZSh2YWx1ZSksIHtcbiAgICAgICAgdGltZXN0YW1wSXNTZXQ6IHRydWVcbiAgICAgIH1dO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgVGltZXN0YW1wU2Vjb25kc1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoVGltZXN0YW1wU2Vjb25kc1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGltZXN0YW1wU2Vjb25kc1BhcnNlcik7XG4gIGZ1bmN0aW9uIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgJyonKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBwYXJzZUFueURpZ2l0c1NpZ25lZChkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChfZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApLCB7XG4gICAgICAgIHRpbWVzdGFtcElzU2V0OiB0cnVlXG4gICAgICB9XTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFRpbWVzdGFtcFNlY29uZHNQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgbm9ybWFsaXplVHdvRGlnaXRZZWFyLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbi8vIEZyb20gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS0zMS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9Gb3JtYXRfUGF0dGVybnNcbi8vIHwgWWVhciAgICAgfCAgICAgeSB8IHl5IHwgICB5eXkgfCAgeXl5eSB8IHl5eXl5IHxcbi8vIHwtLS0tLS0tLS0tfC0tLS0tLS18LS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXxcbi8vIHwgQUQgMSAgICAgfCAgICAgMSB8IDAxIHwgICAwMDEgfCAgMDAwMSB8IDAwMDAxIHxcbi8vIHwgQUQgMTIgICAgfCAgICAxMiB8IDEyIHwgICAwMTIgfCAgMDAxMiB8IDAwMDEyIHxcbi8vIHwgQUQgMTIzICAgfCAgIDEyMyB8IDIzIHwgICAxMjMgfCAgMDEyMyB8IDAwMTIzIHxcbi8vIHwgQUQgMTIzNCAgfCAgMTIzNCB8IDM0IHwgIDEyMzQgfCAgMTIzNCB8IDAxMjM0IHxcbi8vIHwgQUQgMTIzNDUgfCAxMjM0NSB8IDQ1IHwgMTIzNDUgfCAxMjM0NSB8IDEyMzQ1IHxcbmV4cG9ydCB2YXIgWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoWWVhclBhcnNlcik7XG4gIGZ1bmN0aW9uIFllYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3UnLCAndycsICdJJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFllYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB5ZWFyOiB5ZWFyLFxuICAgICAgICAgIGlzVHdvRGlnaXRZZWFyOiB0b2tlbiA9PT0gJ3l5J1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyg0LCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIGNhc2UgJ3lvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAneWVhcidcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgY3VycmVudFllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICBpZiAodmFsdWUuaXNUd29EaWdpdFllYXIpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRUd29EaWdpdFllYXIgPSBub3JtYWxpemVUd29EaWdpdFllYXIodmFsdWUueWVhciwgY3VycmVudFllYXIpO1xuICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKG5vcm1hbGl6ZWRUd29EaWdpdFllYXIsIDAsIDEpO1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHZhciB5ZWFyID0gISgnZXJhJyBpbiBmbGFncykgfHwgZmxhZ3MuZXJhID09PSAxID8gdmFsdWUueWVhciA6IDEgLSB2YWx1ZS55ZWFyO1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFllYXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IHsgRXJhUGFyc2VyIH0gZnJvbSBcIi4vRXJhUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBZZWFyUGFyc2VyIH0gZnJvbSBcIi4vWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxXZWVrWWVhclBhcnNlciB9IGZyb20gXCIuL0xvY2FsV2Vla1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1dlZWtZZWFyUGFyc2VyIH0gZnJvbSBcIi4vSVNPV2Vla1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IEV4dGVuZGVkWWVhclBhcnNlciB9IGZyb20gXCIuL0V4dGVuZGVkWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgUXVhcnRlclBhcnNlciB9IGZyb20gXCIuL1F1YXJ0ZXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyIH0gZnJvbSBcIi4vU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IE1vbnRoUGFyc2VyIH0gZnJvbSBcIi4vTW9udGhQYXJzZXIuanNcIjtcbmltcG9ydCB7IFN0YW5kQWxvbmVNb250aFBhcnNlciB9IGZyb20gXCIuL1N0YW5kQWxvbmVNb250aFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxXZWVrUGFyc2VyIH0gZnJvbSBcIi4vTG9jYWxXZWVrUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09XZWVrUGFyc2VyIH0gZnJvbSBcIi4vSVNPV2Vla1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgRGF0ZVBhcnNlciB9IGZyb20gXCIuL0RhdGVQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheU9mWWVhclBhcnNlciB9IGZyb20gXCIuL0RheU9mWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRGF5UGFyc2VyIH0gZnJvbSBcIi4vRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBMb2NhbERheVBhcnNlciB9IGZyb20gXCIuL0xvY2FsRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9TdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT0RheVBhcnNlciB9IGZyb20gXCIuL0lTT0RheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgQU1QTVBhcnNlciB9IGZyb20gXCIuL0FNUE1QYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1NaWRuaWdodFBhcnNlciB9IGZyb20gXCIuL0FNUE1NaWRuaWdodFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRGF5UGVyaW9kUGFyc2VyIH0gZnJvbSBcIi4vRGF5UGVyaW9kUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMXRvMTJQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMXRvMTJQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIwdG8yM1BhcnNlciB9IGZyb20gXCIuL0hvdXIwdG8yM1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjBUbzExUGFyc2VyIH0gZnJvbSBcIi4vSG91cjBUbzExUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMVRvMjRQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMVRvMjRQYXJzZXIuanNcIjtcbmltcG9ydCB7IE1pbnV0ZVBhcnNlciB9IGZyb20gXCIuL01pbnV0ZVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU2Vjb25kUGFyc2VyIH0gZnJvbSBcIi4vU2Vjb25kUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyIH0gZnJvbSBcIi4vRnJhY3Rpb25PZlNlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPVGltZXpvbmVXaXRoWlBhcnNlciB9IGZyb20gXCIuL0lTT1RpbWV6b25lV2l0aFpQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1RpbWV6b25lUGFyc2VyIH0gZnJvbSBcIi4vSVNPVGltZXpvbmVQYXJzZXIuanNcIjtcbmltcG9ydCB7IFRpbWVzdGFtcFNlY29uZHNQYXJzZXIgfSBmcm9tIFwiLi9UaW1lc3RhbXBTZWNvbmRzUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIgfSBmcm9tIFwiLi9UaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIuanNcIjtcbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8IE1pbGxpc2Vjb25kcyBpbiBkYXkgICAgICAgICAgICB8XG4gKiB8ICBiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICB8ICBCICB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICB8XG4gKiB8ICBjICB8IFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrICB8ICBDKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBlICB8IExvY2FsIGRheSBvZiB3ZWVrICAgICAgICAgICAgICB8ICBFICB8IERheSBvZiB3ZWVrICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBmICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBGKiB8IERheSBvZiB3ZWVrIGluIG1vbnRoICAgICAgICAgICB8XG4gKiB8ICBnKiB8IE1vZGlmaWVkIEp1bGlhbiBkYXkgICAgICAgICAgICB8ICBHICB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBpISB8IElTTyBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgICB8ICBJISB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICB8XG4gKiB8ICBqKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8ICBKKiB8IExvY2FsaXplZCBob3VyIHcvbyBkYXkgcGVyaW9kICB8XG4gKiB8ICBrICB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICB8ICBLICB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBsKiB8IChkZXByZWNhdGVkKSAgICAgICAgICAgICAgICAgICB8ICBMICB8IFN0YW5kLWFsb25lIG1vbnRoICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBOICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBvISB8IE9yZGluYWwgbnVtYmVyIG1vZGlmaWVyICAgICAgICB8ICBPKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICB8XG4gKiB8ICBwICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBQICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBxICB8IFN0YW5kLWFsb25lIHF1YXJ0ZXIgICAgICAgICAgICB8ICBRICB8IFF1YXJ0ZXIgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICByKiB8IFJlbGF0ZWQgR3JlZ29yaWFuIHllYXIgICAgICAgICB8ICBSISB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB0ISB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICB8ICBUISB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICB8XG4gKiB8ICB1ICB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICB8ICBVKiB8IEN5Y2xpYyB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICB2KiB8IFRpbWV6b25lIChnZW5lcmljIG5vbi1sb2NhdC4pICB8ICBWKiB8IFRpbWV6b25lIChsb2NhdGlvbikgICAgICAgICAgICB8XG4gKiB8ICB3ICB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICB8ICBXKiB8IFdlZWsgb2YgbW9udGggICAgICAgICAgICAgICAgICB8XG4gKiB8ICB4ICB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICB8ICBYICB8IFRpbWV6b25lIChJU08tODYwMSkgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICB8XG4gKiB8ICB6KiB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSB8ICBaKiB8IFRpbWV6b25lIChhbGlhc2VzKSAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICEgYXJlIG5vbi1zdGFuZGFyZCwgYnV0IGltcGxlbWVudGVkIGJ5IGRhdGUtZm5zOlxuICogLSBgb2AgbW9kaWZpZXMgdGhlIHByZXZpb3VzIHRva2VuIHRvIHR1cm4gaXQgaW50byBhbiBvcmRpbmFsIChzZWUgYHBhcnNlYCBkb2NzKVxuICogLSBgaWAgaXMgSVNPIGRheSBvZiB3ZWVrLiBGb3IgYGlgIGFuZCBgaWlgIGlzIHJldHVybnMgbnVtZXJpYyBJU08gd2VlayBkYXlzLFxuICogICBpLmUuIDcgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5LCBldGMuXG4gKiAtIGBJYCBpcyBJU08gd2VlayBvZiB5ZWFyLCBhcyBvcHBvc2VkIHRvIGB3YCB3aGljaCBpcyBsb2NhbCB3ZWVrIG9mIHllYXIuXG4gKiAtIGBSYCBpcyBJU08gd2Vlay1udW1iZXJpbmcgeWVhciwgYXMgb3Bwb3NlZCB0byBgWWAgd2hpY2ggaXMgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqICAgYFJgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSWAgYW5kIGBpYFxuICogICBmb3IgdW5pdmVyc2FsIElTTyB3ZWVrLW51bWJlcmluZyBkYXRlLCB3aGVyZWFzXG4gKiAgIGBZYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYHdgIGFuZCBgZWBcbiAqICAgZm9yIHdlZWstbnVtYmVyaW5nIGRhdGUgc3BlY2lmaWMgdG8gdGhlIGxvY2FsZS5cbiAqL1xuZXhwb3J0IHZhciBwYXJzZXJzID0ge1xuICBHOiBuZXcgRXJhUGFyc2VyKCksXG4gIHk6IG5ldyBZZWFyUGFyc2VyKCksXG4gIFk6IG5ldyBMb2NhbFdlZWtZZWFyUGFyc2VyKCksXG4gIFI6IG5ldyBJU09XZWVrWWVhclBhcnNlcigpLFxuICB1OiBuZXcgRXh0ZW5kZWRZZWFyUGFyc2VyKCksXG4gIFE6IG5ldyBRdWFydGVyUGFyc2VyKCksXG4gIHE6IG5ldyBTdGFuZEFsb25lUXVhcnRlclBhcnNlcigpLFxuICBNOiBuZXcgTW9udGhQYXJzZXIoKSxcbiAgTDogbmV3IFN0YW5kQWxvbmVNb250aFBhcnNlcigpLFxuICB3OiBuZXcgTG9jYWxXZWVrUGFyc2VyKCksXG4gIEk6IG5ldyBJU09XZWVrUGFyc2VyKCksXG4gIGQ6IG5ldyBEYXRlUGFyc2VyKCksXG4gIEQ6IG5ldyBEYXlPZlllYXJQYXJzZXIoKSxcbiAgRTogbmV3IERheVBhcnNlcigpLFxuICBlOiBuZXcgTG9jYWxEYXlQYXJzZXIoKSxcbiAgYzogbmV3IFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcigpLFxuICBpOiBuZXcgSVNPRGF5UGFyc2VyKCksXG4gIGE6IG5ldyBBTVBNUGFyc2VyKCksXG4gIGI6IG5ldyBBTVBNTWlkbmlnaHRQYXJzZXIoKSxcbiAgQjogbmV3IERheVBlcmlvZFBhcnNlcigpLFxuICBoOiBuZXcgSG91cjF0bzEyUGFyc2VyKCksXG4gIEg6IG5ldyBIb3VyMHRvMjNQYXJzZXIoKSxcbiAgSzogbmV3IEhvdXIwVG8xMVBhcnNlcigpLFxuICBrOiBuZXcgSG91cjFUbzI0UGFyc2VyKCksXG4gIG06IG5ldyBNaW51dGVQYXJzZXIoKSxcbiAgczogbmV3IFNlY29uZFBhcnNlcigpLFxuICBTOiBuZXcgRnJhY3Rpb25PZlNlY29uZFBhcnNlcigpLFxuICBYOiBuZXcgSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpLFxuICB4OiBuZXcgSVNPVGltZXpvbmVQYXJzZXIoKSxcbiAgdDogbmV3IFRpbWVzdGFtcFNlY29uZHNQYXJzZXIoKSxcbiAgVDogbmV3IFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcigpXG59OyIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciwgbWlsbGlzZWNvbmRzSW5NaW51dGUsIG1pbGxpc2Vjb25kc0luU2Vjb25kIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWUocGFyc2VGblJlc3VsdCwgbWFwRm4pIHtcbiAgaWYgKCFwYXJzZUZuUmVzdWx0KSB7XG4gICAgcmV0dXJuIHBhcnNlRm5SZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogbWFwRm4ocGFyc2VGblJlc3VsdC52YWx1ZSksXG4gICAgcmVzdDogcGFyc2VGblJlc3VsdC5yZXN0XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1lcmljUGF0dGVybihwYXR0ZXJuLCBkYXRlU3RyaW5nKSB7XG4gIHZhciBtYXRjaFJlc3VsdCA9IGRhdGVTdHJpbmcubWF0Y2gocGF0dGVybik7XG4gIGlmICghbWF0Y2hSZXN1bHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBwYXJzZUludChtYXRjaFJlc3VsdFswXSwgMTApLFxuICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UobWF0Y2hSZXN1bHRbMF0ubGVuZ3RoKVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHBhdHRlcm4sIGRhdGVTdHJpbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gZGF0ZVN0cmluZy5tYXRjaChwYXR0ZXJuKTtcbiAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSW5wdXQgaXMgJ1onXG4gIGlmIChtYXRjaFJlc3VsdFswXSA9PT0gJ1onKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgcmVzdDogZGF0ZVN0cmluZy5zbGljZSgxKVxuICAgIH07XG4gIH1cbiAgdmFyIHNpZ24gPSBtYXRjaFJlc3VsdFsxXSA9PT0gJysnID8gMSA6IC0xO1xuICB2YXIgaG91cnMgPSBtYXRjaFJlc3VsdFsyXSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzJdLCAxMCkgOiAwO1xuICB2YXIgbWludXRlcyA9IG1hdGNoUmVzdWx0WzNdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbM10sIDEwKSA6IDA7XG4gIHZhciBzZWNvbmRzID0gbWF0Y2hSZXN1bHRbNV0gPyBwYXJzZUludChtYXRjaFJlc3VsdFs1XSwgMTApIDogMDtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogc2lnbiAqIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSArIHNlY29uZHMgKiBtaWxsaXNlY29uZHNJblNlY29uZCksXG4gICAgcmVzdDogZGF0ZVN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZykge1xuICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuYW55RGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5EaWdpdHMobiwgZGF0ZVN0cmluZykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50d29EaWdpdHMsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50aHJlZURpZ2l0cywgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHMsIGRhdGVTdHJpbmcpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihuZXcgUmVnRXhwKCdeXFxcXGR7MSwnICsgbiArICd9JyksIGRhdGVTdHJpbmcpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VORGlnaXRzU2lnbmVkKG4sIGRhdGVTdHJpbmcpIHtcbiAgc3dpdGNoIChuKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnNpbmdsZURpZ2l0U2lnbmVkLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudHdvRGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5mb3VyRGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obmV3IFJlZ0V4cCgnXi0/XFxcXGR7MSwnICsgbiArICd9JyksIGRhdGVTdHJpbmcpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZGF5UGVyaW9kRW51bVRvSG91cnMoZGF5UGVyaW9kKSB7XG4gIHN3aXRjaCAoZGF5UGVyaW9kKSB7XG4gICAgY2FzZSAnbW9ybmluZyc6XG4gICAgICByZXR1cm4gNDtcbiAgICBjYXNlICdldmVuaW5nJzpcbiAgICAgIHJldHVybiAxNztcbiAgICBjYXNlICdwbSc6XG4gICAgY2FzZSAnbm9vbic6XG4gICAgY2FzZSAnYWZ0ZXJub29uJzpcbiAgICAgIHJldHVybiAxMjtcbiAgICBjYXNlICdhbSc6XG4gICAgY2FzZSAnbWlkbmlnaHQnOlxuICAgIGNhc2UgJ25pZ2h0JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUd29EaWdpdFllYXIodHdvRGlnaXRZZWFyLCBjdXJyZW50WWVhcikge1xuICB2YXIgaXNDb21tb25FcmEgPSBjdXJyZW50WWVhciA+IDA7XG4gIC8vIEFic29sdXRlIG51bWJlciBvZiB0aGUgY3VycmVudCB5ZWFyOlxuICAvLyAxIC0+IDEgQUNcbiAgLy8gMCAtPiAxIEJDXG4gIC8vIC0xIC0+IDIgQkNcbiAgdmFyIGFic0N1cnJlbnRZZWFyID0gaXNDb21tb25FcmEgPyBjdXJyZW50WWVhciA6IDEgLSBjdXJyZW50WWVhcjtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGFic0N1cnJlbnRZZWFyIDw9IDUwKSB7XG4gICAgcmVzdWx0ID0gdHdvRGlnaXRZZWFyIHx8IDEwMDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcmFuZ2VFbmQgPSBhYnNDdXJyZW50WWVhciArIDUwO1xuICAgIHZhciByYW5nZUVuZENlbnR1cnkgPSBNYXRoLmZsb29yKHJhbmdlRW5kIC8gMTAwKSAqIDEwMDtcbiAgICB2YXIgaXNQcmV2aW91c0NlbnR1cnkgPSB0d29EaWdpdFllYXIgPj0gcmFuZ2VFbmQgJSAxMDA7XG4gICAgcmVzdWx0ID0gdHdvRGlnaXRZZWFyICsgcmFuZ2VFbmRDZW50dXJ5IC0gKGlzUHJldmlvdXNDZW50dXJ5ID8gMTAwIDogMCk7XG4gIH1cbiAgcmV0dXJuIGlzQ29tbW9uRXJhID8gcmVzdWx0IDogMSAtIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYXBZZWFySW5kZXgoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlclwiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL19saWIvYXNzaWduL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9uZ0Zvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLCBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sIHRocm93UHJvdGVjdGVkRXJyb3IgfSBmcm9tIFwiLi4vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIgfSBmcm9tIFwiLi9fbGliL1NldHRlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VycyB9IGZyb20gXCIuL19saWIvcGFyc2Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSBbeVlRcU1Md0lkRGVjaWhIS2ttc11vIG1hdGNoZXMgYW55IGF2YWlsYWJsZSBvcmRpbmFsIG51bWJlciB0b2tlblxuLy8gICAob25lIG9mIHRoZSBjZXJ0YWluIGxldHRlcnMgZm9sbG93ZWQgYnkgYG9gKVxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG4vLyBUaGlzIFJlZ0V4cCBjYXRjaGVzIHN5bWJvbHMgZXNjYXBlZCBieSBxdW90ZXMsIGFuZCBhbHNvXG4vLyBzZXF1ZW5jZXMgb2Ygc3ltYm9scyBQLCBwLCBhbmQgdGhlIGNvbWJpbmF0aW9ucyBsaWtlIGBQUFBQUFBQcHBwcHBgXG52YXIgbG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcbnZhciBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG52YXIgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbnZhciBub3RXaGl0ZXNwYWNlUmVnRXhwID0gL1xcUy87XG52YXIgdW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAgPSAvW2EtekEtWl0vO1xuXG4vKipcbiAqIEBuYW1lIHBhcnNlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkYXRlIHBhcnNlZCBmcm9tIHN0cmluZyB1c2luZyB0aGUgZ2l2ZW4gZm9ybWF0IHN0cmluZy5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgZm9ybWF0IHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNSBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIE5vdCBhbGwgdG9rZW5zIGFyZSBjb21wYXRpYmxlLiBDb21iaW5hdGlvbnMgdGhhdCBkb24ndCBtYWtlIHNlbnNlIG9yIGNvdWxkIGxlYWQgdG8gYnVncyBhcmUgcHJvaGliaXRlZFxuICogYW5kIHdpbGwgdGhyb3cgYFJhbmdlRXJyb3JgLiBGb3IgZXhhbXBsZSB1c2FnZSBvZiAyNC1ob3VyIGZvcm1hdCB0b2tlbiB3aXRoIEFNL1BNIHRva2VuIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHBhcnNlKCcyMyBBTScsICdISCBhJywgbmV3IERhdGUoKSlcbiAqIC8vPT4gUmFuZ2VFcnJvcjogVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIGBISGAgYW5kIGBhYCBhdCB0aGUgc2FtZSB0aW1lXG4gKiBgYGBcbiAqXG4gKiBTZWUgdGhlIGNvbXBhdGliaWxpdHkgdGFibGU6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kL2UvMlBBQ1gtMXZRT1BVM3hVaHBsbGw2ZHlvTW1WVVhIS2xfOENSRHM2X3VlTG1leDNTb3F3aHVvbGt1TjNPMDVsNHJxeDVoMWRLWDhlYjQ2VWwtQ0NTcnEvcHViaHRtbD9naWQ9MCZzaW5nbGU9dHJ1ZVxuICpcbiAqIEFjY2VwdGVkIGZvcm1hdCBzdHJpbmcgcGF0dGVybnM6XG4gKiB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFByaW9yfCBQYXR0ZXJuIHwgUmVzdWx0IGV4YW1wbGVzICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXxcbiAqIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0MCB8IEcuLkdHRyAgfCBBRCwgQkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHICAgIHwgQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3QgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHR0cgICB8IEEsIEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ2FsZW5kYXIgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNywgOTk5OSAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5byAgICAgIHwgNDR0aCwgMXN0LCAxOTAwdGgsIDk5OTk5OTl0aCAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eSAgICAgfCAwNDQsIDAwMSwgMTIzLCA5OTkgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eXkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICB8IDEzMCB8IFkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNywgOTAwMCAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZbyAgICAgIHwgNDR0aCwgMXN0LCAxOTAwdGgsIDk5OTk5OTl0aCAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWSAgICAgfCAwNDQsIDAwMSwgMTIzLCA5OTkgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWVkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgICB8IDEzMCB8IFIgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTk5ICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUiAgICAgIHwgLTQzLCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlIgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSUiAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0LDUgfFxuICogfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgdSAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OSAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1ICAgICAgfCAtNDMsIDAxLCA5OSwgLTk5ICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXUgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dSAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXV1ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IFF1YXJ0ZXIgKGZvcm1hdHRpbmcpICAgICAgICAgICAgfCAxMjAgfCBRICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVFRICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8IFF1YXJ0ZXIgKHN0YW5kLWFsb25lKSAgICAgICAgICAgfCAxMjAgfCBxICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXFxICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IE1vbnRoIChmb3JtYXR0aW5nKSAgICAgICAgICAgICAgfCAxMTAgfCBNICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU0gICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTSAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU1NICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1vbnRoIChzdGFuZC1hbG9uZSkgICAgICAgICAgICAgfCAxMTAgfCBMICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTEwgICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTCAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTExMICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgfCAxMDAgfCB3ICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHd3ICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICAgfCAxMDAgfCBJICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElJICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCAgOTAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDMxc3QgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICAgfCAgOTAgfCBEICAgICAgIHwgMSwgMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDM2NXRoLCAzNjZ0aCAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREICAgICAgfCAwMSwgMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREQgICAgIHwgMDAxLCAwMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRERERCAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgRGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgICAgICB8ICA5MCB8IEUuLkVFRSAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFRSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgfCAgOTAgfCBpICAgICAgIHwgMSwgMiwgMywgLi4uLCA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDd0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpICAgICAgfCAwMSwgMDIsIC4uLiwgMDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWkgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaWkgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgNSAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgIHwgIDkwIHwgZSAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZSAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWVlICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKHN0YW5kLWFsb25lKSB8ICA5MCB8IGMgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2MgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjYyAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2MgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjYyAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODAgfCBhLi5hYWEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgfCAgODAgfCBiLi5iYmIgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYiAgICB8IGEubS4sIHAubS4sIG5vb24sIG1pZG5pZ2h0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmJiICAgfCBhLCBwLCBuLCBtaSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICAgfCAgODAgfCBCLi5CQkIgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQiAgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkJCICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBoICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDEydGggICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhoICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSG8gICAgICB8IDB0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBLICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMCAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDB0aCAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtLICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBrICAgICAgIHwgMjQsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga28gICAgICB8IDI0dGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtrICAgICAgfCAyNCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW8gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTAgfCBzICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc28gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNzICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICAgfCAgNDAgfCB0ICAgICAgIHwgNTEyOTY5NTIwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdHQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8ICAzMCB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTUyAgICAgIHwgMDAsIDAxLCAuLi4sIDk5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTICAgICB8IDAwMCwgMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCAgMjAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8ICAxMCB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgIDEwIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICAgfCAgTkEgfCBQICAgICAgIHwgMDUvMjkvMTQ1MyAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFAgICAgICB8IE1heSAyOSwgMTQ1MyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUCAgICAgfCBNYXkgMjl0aCwgMTQ1MyAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBQICAgIHwgU3VuZGF5LCBNYXkgMjl0aCwgMTQ1MyAgICAgICAgICAgIHwgMiw1LDggfFxuICogfCBMb25nIGxvY2FsaXplZCB0aW1lICAgICAgICAgICAgIHwgIE5BIHwgcCAgICAgICB8IDEyOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHBwICAgICAgfCAxMjowMDowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENvbWJpbmF0aW9uIG9mIGRhdGUgYW5kIHRpbWUgICAgfCAgTkEgfCBQcCAgICAgIHwgMDUvMjkvMTQ1MywgMTI6MDAgQU0gICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBwcCAgICB8IE1heSAyOSwgMTQ1MywgMTI6MDA6MDAgQU0gICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUHBwICAgfCBNYXkgMjl0aCwgMTQ1MyBhdCAuLi4gICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBQcHAgIHwgU3VuZGF5LCBNYXkgMjl0aCwgMTQ1MyBhdCAuLi4gICAgIHwgMiw1LDggfFxuICogTm90ZXM6XG4gKiAxLiBcIkZvcm1hdHRpbmdcIiB1bml0cyAoZS5nLiBmb3JtYXR0aW5nIHF1YXJ0ZXIpIGluIHRoZSBkZWZhdWx0IGVuLVVTIGxvY2FsZVxuICogICAgYXJlIHRoZSBzYW1lIGFzIFwic3RhbmQtYWxvbmVcIiB1bml0cywgYnV0IGFyZSBkaWZmZXJlbnQgaW4gc29tZSBsYW5ndWFnZXMuXG4gKiAgICBcIkZvcm1hdHRpbmdcIiB1bml0cyBhcmUgZGVjbGluZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgbGFuZ3VhZ2VcbiAqICAgIGluIHRoZSBjb250ZXh0IG9mIGEgZGF0ZS4gXCJTdGFuZC1hbG9uZVwiIHVuaXRzIGFyZSBhbHdheXMgbm9taW5hdGl2ZSBzaW5ndWxhci5cbiAqICAgIEluIGBmb3JtYXRgIGZ1bmN0aW9uLCB0aGV5IHdpbGwgcHJvZHVjZSBkaWZmZXJlbnQgcmVzdWx0OlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTExMTCcsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWQnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTU1NTScsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWR1J2BcbiAqXG4gKiAgICBgcGFyc2VgIHdpbGwgdHJ5IHRvIG1hdGNoIGJvdGggZm9ybWF0dGluZyBhbmQgc3RhbmQtYWxvbmUgdW5pdHMgaW50ZXJjaGFuZ2FibHkuXG4gKlxuICogMi4gQW55IHNlcXVlbmNlIG9mIHRoZSBpZGVudGljYWwgbGV0dGVycyBpcyBhIHBhdHRlcm4sIHVubGVzcyBpdCBpcyBlc2NhcGVkIGJ5XG4gKiAgICB0aGUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgKHNlZSBiZWxvdykuXG4gKiAgICBJZiB0aGUgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gbGlzdGVkIGluIHRhYmxlOlxuICogICAgLSBmb3IgbnVtZXJpY2FsIHVuaXRzIChgeXl5eXl5eXlgKSBgcGFyc2VgIHdpbGwgdHJ5IHRvIG1hdGNoIGEgbnVtYmVyXG4gKiAgICAgIGFzIHdpZGUgYXMgdGhlIHNlcXVlbmNlXG4gKiAgICAtIGZvciB0ZXh0IHVuaXRzIChgTU1NTU1NTU1gKSBgcGFyc2VgIHdpbGwgdHJ5IHRvIG1hdGNoIHRoZSB3aWRlc3QgdmFyaWF0aW9uIG9mIHRoZSB1bml0LlxuICogICAgICBUaGVzZSB2YXJpYXRpb25zIGFyZSBtYXJrZWQgd2l0aCBcIjJcIiBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIHRhYmxlLlxuICpcbiAqIDMuIGBRUVFRUWAgYW5kIGBxcXFxcWAgY291bGQgYmUgbm90IHN0cmljdGx5IG51bWVyaWNhbCBpbiBzb21lIGxvY2FsZXMuXG4gKiAgICBUaGVzZSB0b2tlbnMgcmVwcmVzZW50IHRoZSBzaG9ydGVzdCBmb3JtIG9mIHRoZSBxdWFydGVyLlxuICpcbiAqIDQuIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBgeWAgYW5kIGB1YCBwYXR0ZXJucyBhcmUgQi5DLiB5ZWFyczpcbiAqXG4gKiAgICB8IFllYXIgfCBgeWAgfCBgdWAgfFxuICogICAgfC0tLS0tLXwtLS0tLXwtLS0tLXxcbiAqICAgIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gKiAgICB8IEJDIDEgfCAgIDEgfCAgIDAgfFxuICogICAgfCBCQyAyIHwgICAyIHwgIC0xIHxcbiAqXG4gKiAgICBBbHNvIGB5eWAgd2lsbCB0cnkgdG8gZ3Vlc3MgdGhlIGNlbnR1cnkgb2YgdHdvIGRpZ2l0IHllYXIgYnkgcHJveGltaXR5IHdpdGggYHJlZmVyZW5jZURhdGVgOlxuICpcbiAqICAgIGBwYXJzZSgnNTAnLCAneXknLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBTYXQgSmFuIDAxIDIwNTAgMDA6MDA6MDBgXG4gKlxuICogICAgYHBhcnNlKCc3NScsICd5eScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFdlZCBKYW4gMDEgMTk3NSAwMDowMDowMGBcbiAqXG4gKiAgICB3aGlsZSBgdXVgIHdpbGwganVzdCBhc3NpZ24gdGhlIHllYXIgYXMgaXM6XG4gKlxuICogICAgYHBhcnNlKCc1MCcsICd1dScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFNhdCBKYW4gMDEgMDA1MCAwMDowMDowMGBcbiAqXG4gKiAgICBgcGFyc2UoJzc1JywgJ3V1JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gVHVlIEphbiAwMSAwMDc1IDAwOjAwOjAwYFxuICpcbiAqICAgIFRoZSBzYW1lIGRpZmZlcmVuY2UgaXMgdHJ1ZSBmb3IgbG9jYWwgYW5kIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyAoYFlgIGFuZCBgUmApLFxuICogICAgZXhjZXB0IGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJzIGFyZSBkZXBlbmRlbnQgb24gYG9wdGlvbnMud2Vla1N0YXJ0c09uYFxuICogICAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKGNvbXBhcmUgW3NldElTT1dlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldElTT1dlZWtZZWFyfVxuICogICAgYW5kIFtzZXRXZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXRXZWVrWWVhcn0pLlxuICpcbiAqIDUuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogNi4gYFlZYCBhbmQgYFlZWVlgIHRva2VucyByZXByZXNlbnQgd2Vlay1udW1iZXJpbmcgeWVhcnMgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggeWVhcnMuXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA3LiBgRGAgYW5kIGBERGAgdG9rZW5zIHJlcHJlc2VudCBkYXlzIG9mIHRoZSB5ZWFyIGJ1dCB0aGV5IGFyZSBvZnRoZW4gY29uZnVzZWQgd2l0aCBkYXlzIG9mIHRoZSBtb250aC5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA4LiBgUCtgIHRva2VucyBkbyBub3QgaGF2ZSBhIGRlZmluZWQgcHJpb3JpdHkgc2luY2UgdGhleSBhcmUgbWVyZWx5IGFsaWFzZXMgdG8gb3RoZXIgdG9rZW5zIGJhc2VkXG4gKiAgICBvbiB0aGUgZ2l2ZW4gbG9jYWxlLlxuICpcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgUGAgPT4gYE1NL2RkL3l5eXlgXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYHBgID0+IGBoaDptbSBhYFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBQYCA9PiBgZGQvTU0veXl5eWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgcGAgPT4gYEhIOm1tYFxuICpcbiAqIFZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBkYXRlIGluIHRoZSBkZXNjZW5kaW5nIG9yZGVyIG9mIGl0cyB1bml0J3MgcHJpb3JpdHkuXG4gKiBVbml0cyBvZiBhbiBlcXVhbCBwcmlvcml0eSBvdmVyd3JpdGUgZWFjaCBvdGhlciBpbiB0aGUgb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAqXG4gKiBJZiBubyB2YWx1ZXMgb2YgaGlnaGVyIHByaW9yaXR5IGFyZSBwYXJzZWQgKGUuZy4gd2hlbiBwYXJzaW5nIHN0cmluZyAnSmFudWFyeSAxc3QnIHdpdGhvdXQgYSB5ZWFyKSxcbiAqIHRoZSB2YWx1ZXMgd2lsbCBiZSB0YWtlbiBmcm9tIDNyZCBhcmd1bWVudCBgcmVmZXJlbmNlRGF0ZWAgd2hpY2ggd29ya3MgYXMgYSBjb250ZXh0IG9mIHBhcnNpbmcuXG4gKlxuICogYHJlZmVyZW5jZURhdGVgIG11c3QgYmUgcGFzc2VkIGZvciBjb3JyZWN0IHdvcmsgb2YgdGhlIGZ1bmN0aW9uLlxuICogSWYgeW91J3JlIG5vdCBzdXJlIHdoaWNoIGByZWZlcmVuY2VEYXRlYCB0byBzdXBwbHksIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBEYXRlOlxuICogYHBhcnNlKCcwMi8xMS8yMDE0JywgJ01NL2RkL3l5eXknLCBuZXcgRGF0ZSgpKWBcbiAqIEluIHRoaXMgY2FzZSBwYXJzaW5nIHdpbGwgYmUgZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBkYXRlLlxuICogSWYgYHJlZmVyZW5jZURhdGVgIGlzIGBJbnZhbGlkIERhdGVgIG9yIGEgdmFsdWUgbm90IGNvbnZlcnRpYmxlIHRvIHZhbGlkIGBEYXRlYCxcbiAqIHRoZW4gYEludmFsaWQgRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBUaGUgcmVzdWx0IG1heSB2YXJ5IGJ5IGxvY2FsZS5cbiAqXG4gKiBJZiBgZm9ybWF0U3RyaW5nYCBtYXRjaGVzIHdpdGggYGRhdGVTdHJpbmdgIGJ1dCBkb2VzIG5vdCBwcm92aWRlcyB0b2tlbnMsIGByZWZlcmVuY2VEYXRlYCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIElmIHBhcnNpbmcgZmFpbGVkLCBgSW52YWxpZCBEYXRlYCB3aWxsIGJlIHJldHVybmVkLlxuICogSW52YWxpZCBEYXRlIGlzIGEgRGF0ZSwgd2hvc2UgdGltZSB2YWx1ZSBpcyBOYU4uXG4gKiBUaW1lIHZhbHVlIG9mIERhdGU6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuOS4xLjFcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZGF0ZVN0cmluZyAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXRTdHJpbmcgLSB0aGUgc3RyaW5nIG9mIHRva2Vuc1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gcmVmZXJlbmNlRGF0ZSAtIGRlZmluZXMgdmFsdWVzIG1pc3NpbmcgZnJvbSB0aGUgcGFyc2VkIGRhdGVTdHJpbmdcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyIHRva2VucyBgWVlgIGFuZCBgWVlZWWA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgZGF5IG9mIHllYXIgdG9rZW5zIGBEYCBhbmQgYEREYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDMgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbWF0Y2hgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRgIGluc3RlYWQgb2YgYERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUGFyc2UgMTEgRmVicnVhcnkgMjAxNCBmcm9tIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogdmFyIHJlc3VsdCA9IHBhcnNlKCcwMi8xMS8yMDE0JywgJ01NL2RkL3l5eXknLCBuZXcgRGF0ZSgpKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUGFyc2UgMjh0aCBvZiBGZWJydWFyeSBpbiBFc3BlcmFudG8gbG9jYWxlIGluIHRoZSBjb250ZXh0IG9mIDIwMTAgeWVhcjpcbiAqIGltcG9ydCBlbyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiB2YXIgcmVzdWx0ID0gcGFyc2UoJzI4LWEgZGUgZmVicnVhcm8nLCBcImRvICdkZScgTU1NTVwiLCBuZXcgRGF0ZSgyMDEwLCAwLCAxKSwge1xuICogICBsb2NhbGU6IGVvXG4gKiB9KVxuICogLy89PiBTdW4gRmViIDI4IDIwMTAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2UoZGlydHlEYXRlU3RyaW5nLCBkaXJ0eUZvcm1hdFN0cmluZywgZGlydHlSZWZlcmVuY2VEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIsIF9yZWY1LCBfcmVmNiwgX3JlZjcsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMywgX29wdGlvbnMkbG9jYWxlMyRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0O1xuICByZXF1aXJlZEFyZ3MoMywgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVTdHJpbmcgPSBTdHJpbmcoZGlydHlEYXRlU3RyaW5nKTtcbiAgdmFyIGZvcm1hdFN0cmluZyA9IFN0cmluZyhkaXJ0eUZvcm1hdFN0cmluZyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIGlmICghbG9jYWxlLm1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbWF0Y2ggcHJvcGVydHknKTtcbiAgfVxuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmMiA9IChfcmVmMyA9IChfcmVmNCA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTIub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUyJG9wdGkuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmNCAhPT0gdm9pZCAwID8gX3JlZjQgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IDEpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmaXJzdFdlZWtDb250YWluc0RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDcgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmNSA9IChfcmVmNiA9IChfcmVmNyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTMub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUzJG9wdGkud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNyAhPT0gdm9pZCAwID8gX3JlZjcgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY2ICE9PSB2b2lkIDAgPyBfcmVmNiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsNC53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY1ICE9PSB2b2lkIDAgPyBfcmVmNSA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICBpZiAoZm9ybWF0U3RyaW5nID09PSAnJykge1xuICAgIGlmIChkYXRlU3RyaW5nID09PSAnJykge1xuICAgICAgcmV0dXJuIHRvRGF0ZShkaXJ0eVJlZmVyZW5jZURhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gIH1cbiAgdmFyIHN1YkZuT3B0aW9ucyA9IHtcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSxcbiAgICB3ZWVrU3RhcnRzT246IHdlZWtTdGFydHNPbixcbiAgICBsb2NhbGU6IGxvY2FsZVxuICB9O1xuXG4gIC8vIElmIHRpbWV6b25lIGlzbid0IHNwZWNpZmllZCwgaXQgd2lsbCBiZSBzZXQgdG8gdGhlIHN5c3RlbSB0aW1lem9uZVxuICB2YXIgc2V0dGVycyA9IFtuZXcgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIoKV07XG4gIHZhciB0b2tlbnMgPSBmb3JtYXRTdHJpbmcubWF0Y2gobG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHApLm1hcChmdW5jdGlvbiAoc3Vic3RyaW5nKSB7XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciBpbiBsb25nRm9ybWF0dGVycykge1xuICAgICAgdmFyIGxvbmdGb3JtYXR0ZXIgPSBsb25nRm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YnN0cmluZztcbiAgfSkuam9pbignJykubWF0Y2goZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCk7XG4gIHZhciB1c2VkVG9rZW5zID0gW107XG4gIHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0b2tlbnMpLFxuICAgIF9zdGVwO1xuICB0cnkge1xuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgdmFyIHRva2VuID0gX3N0ZXAudmFsdWU7XG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2VucykgJiYgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuKHRva2VuKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHRva2VuLCBmb3JtYXRTdHJpbmcsIGRpcnR5RGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4odG9rZW4pKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdFN0cmluZywgZGlydHlEYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHRva2VuWzBdO1xuICAgICAgdmFyIHBhcnNlciA9IHBhcnNlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgaWYgKHBhcnNlcikge1xuICAgICAgICB2YXIgaW5jb21wYXRpYmxlVG9rZW5zID0gcGFyc2VyLmluY29tcGF0aWJsZVRva2VucztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5jb21wYXRpYmxlVG9rZW5zKSkge1xuICAgICAgICAgIHZhciBpbmNvbXBhdGlibGVUb2tlbiA9IHVzZWRUb2tlbnMuZmluZChmdW5jdGlvbiAodXNlZFRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlVG9rZW5zLmluY2x1ZGVzKHVzZWRUb2tlbi50b2tlbikgfHwgdXNlZFRva2VuLnRva2VuID09PSBmaXJzdENoYXJhY3RlcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaW5jb21wYXRpYmxlVG9rZW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIGBcIi5jb25jYXQoaW5jb21wYXRpYmxlVG9rZW4uZnVsbFRva2VuLCBcImAgYW5kIGBcIikuY29uY2F0KHRva2VuLCBcImAgYXQgdGhlIHNhbWUgdGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHBhcnNlci5pbmNvbXBhdGlibGVUb2tlbnMgPT09ICcqJyAmJiB1c2VkVG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgXCIuY29uY2F0KHRva2VuLCBcImAgYW5kIGFueSBvdGhlciB0b2tlbiBhdCB0aGUgc2FtZSB0aW1lXCIpKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VkVG9rZW5zLnB1c2goe1xuICAgICAgICAgIHRva2VuOiBmaXJzdENoYXJhY3RlcixcbiAgICAgICAgICBmdWxsVG9rZW46IHRva2VuXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGFyc2VSZXN1bHQgPSBwYXJzZXIucnVuKGRhdGVTdHJpbmcsIHRva2VuLCBsb2NhbGUubWF0Y2gsIHN1YkZuT3B0aW9ucyk7XG4gICAgICAgIGlmICghcGFyc2VSZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdjogbmV3IERhdGUoTmFOKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgc2V0dGVycy5wdXNoKHBhcnNlUmVzdWx0LnNldHRlcik7XG4gICAgICAgIGRhdGVTdHJpbmcgPSBwYXJzZVJlc3VsdC5yZXN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCcgKyBmaXJzdENoYXJhY3RlciArICdgJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXBsYWNlIHR3byBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyB3aXRoIG9uZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyXG4gICAgICAgIGlmICh0b2tlbiA9PT0gXCInJ1wiKSB7XG4gICAgICAgICAgdG9rZW4gPSBcIidcIjtcbiAgICAgICAgfSBlbHNlIGlmIChmaXJzdENoYXJhY3RlciA9PT0gXCInXCIpIHtcbiAgICAgICAgICB0b2tlbiA9IGNsZWFuRXNjYXBlZFN0cmluZyh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXQgdG9rZW4gZnJvbSBzdHJpbmcsIG9yLCBpZiBzdHJpbmcgZG9lc24ndCBtYXRjaCB0aGUgdG9rZW4sIHJldHVybiBJbnZhbGlkIERhdGVcbiAgICAgICAgaWYgKGRhdGVTdHJpbmcuaW5kZXhPZih0b2tlbikgPT09IDApIHtcbiAgICAgICAgICBkYXRlU3RyaW5nID0gZGF0ZVN0cmluZy5zbGljZSh0b2tlbi5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2OiBuZXcgRGF0ZShOYU4pXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoKTtcbiAgICAgIGlmIChfdHlwZW9mKF9yZXQpID09PSBcIm9iamVjdFwiKSByZXR1cm4gX3JldC52O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSByZW1haW5pbmcgaW5wdXQgY29udGFpbnMgc29tZXRoaW5nIG90aGVyIHRoYW4gd2hpdGVzcGFjZVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfaXRlcmF0b3IuZShlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIF9pdGVyYXRvci5mKCk7XG4gIH1cbiAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoID4gMCAmJiBub3RXaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZGF0ZVN0cmluZykpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgdW5pcXVlUHJpb3JpdHlTZXR0ZXJzID0gc2V0dGVycy5tYXAoZnVuY3Rpb24gKHNldHRlcikge1xuICAgIHJldHVybiBzZXR0ZXIucHJpb3JpdHk7XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYiAtIGE7XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAocHJpb3JpdHksIGluZGV4LCBhcnJheSkge1xuICAgIHJldHVybiBhcnJheS5pbmRleE9mKHByaW9yaXR5KSA9PT0gaW5kZXg7XG4gIH0pLm1hcChmdW5jdGlvbiAocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gc2V0dGVycy5maWx0ZXIoZnVuY3Rpb24gKHNldHRlcikge1xuICAgICAgcmV0dXJuIHNldHRlci5wcmlvcml0eSA9PT0gcHJpb3JpdHk7XG4gICAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIuc3ViUHJpb3JpdHkgLSBhLnN1YlByaW9yaXR5O1xuICAgIH0pO1xuICB9KS5tYXAoZnVuY3Rpb24gKHNldHRlckFycmF5KSB7XG4gICAgcmV0dXJuIHNldHRlckFycmF5WzBdO1xuICB9KTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlSZWZlcmVuY2VEYXRlKTtcbiAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG5cbiAgLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG4gIHZhciB1dGNEYXRlID0gc3ViTWlsbGlzZWNvbmRzKGRhdGUsIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkpO1xuICB2YXIgZmxhZ3MgPSB7fTtcbiAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih1bmlxdWVQcmlvcml0eVNldHRlcnMpLFxuICAgIF9zdGVwMjtcbiAgdHJ5IHtcbiAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgdmFyIHNldHRlciA9IF9zdGVwMi52YWx1ZTtcbiAgICAgIGlmICghc2V0dGVyLnZhbGlkYXRlKHV0Y0RhdGUsIHN1YkZuT3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc2V0dGVyLnNldCh1dGNEYXRlLCBmbGFncywgc3ViRm5PcHRpb25zKTtcbiAgICAgIC8vIFJlc3VsdCBpcyB0dXBsZSAoZGF0ZSwgZmxhZ3MpXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgIHV0Y0RhdGUgPSByZXN1bHRbMF07XG4gICAgICAgIGFzc2lnbihmbGFncywgcmVzdWx0WzFdKTtcbiAgICAgICAgLy8gUmVzdWx0IGlzIGRhdGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHV0Y0RhdGUgPSByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBfaXRlcmF0b3IyLmYoKTtcbiAgfVxuICByZXR1cm4gdXRjRGF0ZTtcbn1cbmZ1bmN0aW9uIGNsZWFuRXNjYXBlZFN0cmluZyhpbnB1dCkge1xuICByZXR1cm4gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cClbMV0ucmVwbGFjZShkb3VibGVRdW90ZVJlZ0V4cCwgXCInXCIpO1xufSIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciwgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcGFyc2VJU09cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgSVNPIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUGFyc2UgdGhlIGdpdmVuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQgYW5kIHJldHVybiBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEZ1bmN0aW9uIGFjY2VwdHMgY29tcGxldGUgSVNPIDg2MDEgZm9ybWF0cyBhcyB3ZWxsIGFzIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zLlxuICogSVNPIDg2MDE6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDFcbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXNuJ3QgYSBzdHJpbmcsIHRoZSBmdW5jdGlvbiBjYW5ub3QgcGFyc2UgdGhlIHN0cmluZyBvclxuICogdGhlIHZhbHVlcyBhcmUgaW52YWxpZCwgaXQgcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFyZ3VtZW50IC0gdGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHRoZSBhZGRpdGlvbmFsIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCBzdHJpbmcgJzIwMTQtMDItMTFUMTE6MzA6MzAnIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBwYXJzZUlTTygnMjAxNC0wMi0xMVQxMTozMDozMCcpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnKzAyMDE0MTAxJyB0byBkYXRlLFxuICogLy8gaWYgdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgaXMgMTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcrMDIwMTQxMDEnLCB7IGFkZGl0aW9uYWxEaWdpdHM6IDEgfSlcbiAqIC8vPT4gRnJpIEFwciAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlSVNPKGFyZ3VtZW50LCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRhZGRpdGlvbmFsRGk7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgYWRkaXRpb25hbERpZ2l0cyA9IHRvSW50ZWdlcigoX29wdGlvbnMkYWRkaXRpb25hbERpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHMpICE9PSBudWxsICYmIF9vcHRpb25zJGFkZGl0aW9uYWxEaSAhPT0gdm9pZCAwID8gX29wdGlvbnMkYWRkaXRpb25hbERpIDogMik7XG4gIGlmIChhZGRpdGlvbmFsRGlnaXRzICE9PSAyICYmIGFkZGl0aW9uYWxEaWdpdHMgIT09IDEgJiYgYWRkaXRpb25hbERpZ2l0cyAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdhZGRpdGlvbmFsRGlnaXRzIG11c3QgYmUgMCwgMSBvciAyJyk7XG4gIH1cbiAgaWYgKCEodHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJyB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSAnW29iamVjdCBTdHJpbmddJykpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgZGF0ZVN0cmluZ3MgPSBzcGxpdERhdGVTdHJpbmcoYXJndW1lbnQpO1xuICB2YXIgZGF0ZTtcbiAgaWYgKGRhdGVTdHJpbmdzLmRhdGUpIHtcbiAgICB2YXIgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUsIGFkZGl0aW9uYWxEaWdpdHMpO1xuICAgIGRhdGUgPSBwYXJzZURhdGUocGFyc2VZZWFyUmVzdWx0LnJlc3REYXRlU3RyaW5nLCBwYXJzZVllYXJSZXN1bHQueWVhcik7XG4gIH1cbiAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgdmFyIHRpbWUgPSAwO1xuICB2YXIgb2Zmc2V0O1xuICBpZiAoZGF0ZVN0cmluZ3MudGltZSkge1xuICAgIHRpbWUgPSBwYXJzZVRpbWUoZGF0ZVN0cmluZ3MudGltZSk7XG4gICAgaWYgKGlzTmFOKHRpbWUpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gIH1cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgaWYgKGlzTmFOKG9mZnNldCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgZGlydHlEYXRlID0gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSk7XG4gICAgLy8ganMgcGFyc2VkIHN0cmluZyBhc3N1bWluZyBpdCdzIGluIFVUQyB0aW1lem9uZVxuICAgIC8vIGJ1dCB3ZSBuZWVkIGl0IHRvIGJlIHBhcnNlZCBpbiBvdXIgdGltZXpvbmVcbiAgICAvLyBzbyB3ZSB1c2UgdXRjIHZhbHVlcyB0byBidWlsZCBkYXRlIGluIG91ciB0aW1lem9uZS5cbiAgICAvLyBZZWFyIHZhbHVlcyBmcm9tIDAgdG8gOTkgbWFwIHRvIHRoZSB5ZWFycyAxOTAwIHRvIDE5OTlcbiAgICAvLyBzbyBzZXQgeWVhciBleHBsaWNpdGx5IHdpdGggc2V0RnVsbFllYXIuXG4gICAgdmFyIHJlc3VsdCA9IG5ldyBEYXRlKDApO1xuICAgIHJlc3VsdC5zZXRGdWxsWWVhcihkaXJ0eURhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGlydHlEYXRlLmdldFVUQ01vbnRoKCksIGRpcnR5RGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgIHJlc3VsdC5zZXRIb3VycyhkaXJ0eURhdGUuZ2V0VVRDSG91cnMoKSwgZGlydHlEYXRlLmdldFVUQ01pbnV0ZXMoKSwgZGlydHlEYXRlLmdldFVUQ1NlY29uZHMoKSwgZGlydHlEYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lICsgb2Zmc2V0KTtcbn1cbnZhciBwYXR0ZXJucyA9IHtcbiAgZGF0ZVRpbWVEZWxpbWl0ZXI6IC9bVCBdLyxcbiAgdGltZVpvbmVEZWxpbWl0ZXI6IC9bWiBdL2ksXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC9cbn07XG52YXIgZGF0ZVJlZ2V4ID0gL14tPyg/OihcXGR7M30pfChcXGR7Mn0pKD86LT8oXFxkezJ9KSk/fFcoXFxkezJ9KSg/Oi0/KFxcZHsxfSkpP3wpJC87XG52YXIgdGltZVJlZ2V4ID0gL14oXFxkezJ9KD86Wy4sXVxcZCopPykoPzo6PyhcXGR7Mn0oPzpbLixdXFxkKik/KSk/KD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyQvO1xudmFyIHRpbWV6b25lUmVnZXggPSAvXihbKy1dKShcXGR7Mn0pKD86Oj8oXFxkezJ9KSk/JC87XG5mdW5jdGlvbiBzcGxpdERhdGVTdHJpbmcoZGF0ZVN0cmluZykge1xuICB2YXIgZGF0ZVN0cmluZ3MgPSB7fTtcbiAgdmFyIGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy5kYXRlVGltZURlbGltaXRlcik7XG4gIHZhciB0aW1lU3RyaW5nO1xuXG4gIC8vIFRoZSByZWdleCBtYXRjaCBzaG91bGQgb25seSByZXR1cm4gYXQgbWF4aW11bSB0d28gYXJyYXkgZWxlbWVudHMuXG4gIC8vIFtkYXRlXSwgW3RpbWVdLCBvciBbZGF0ZSwgdGltZV0uXG4gIGlmIChhcnJheS5sZW5ndGggPiAyKSB7XG4gICAgcmV0dXJuIGRhdGVTdHJpbmdzO1xuICB9XG4gIGlmICgvOi8udGVzdChhcnJheVswXSkpIHtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMF07XG4gIH0gZWxzZSB7XG4gICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGFycmF5WzBdO1xuICAgIHRpbWVTdHJpbmcgPSBhcnJheVsxXTtcbiAgICBpZiAocGF0dGVybnMudGltZVpvbmVEZWxpbWl0ZXIudGVzdChkYXRlU3RyaW5ncy5kYXRlKSkge1xuICAgICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMudGltZVpvbmVEZWxpbWl0ZXIpWzBdO1xuICAgICAgdGltZVN0cmluZyA9IGRhdGVTdHJpbmcuc3Vic3RyKGRhdGVTdHJpbmdzLmRhdGUubGVuZ3RoLCBkYXRlU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuICB9XG4gIGlmICh0aW1lU3RyaW5nKSB7XG4gICAgdmFyIHRva2VuID0gcGF0dGVybnMudGltZXpvbmUuZXhlYyh0aW1lU3RyaW5nKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nLnJlcGxhY2UodG9rZW5bMV0sICcnKTtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWV6b25lID0gdG9rZW5bMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZVN0cmluZ3M7XG59XG5mdW5jdGlvbiBwYXJzZVllYXIoZGF0ZVN0cmluZywgYWRkaXRpb25hbERpZ2l0cykge1xuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdeKD86KFxcXFxkezR9fFsrLV1cXFxcZHsnICsgKDQgKyBhZGRpdGlvbmFsRGlnaXRzKSArICd9KXwoXFxcXGR7Mn18WystXVxcXFxkeycgKyAoMiArIGFkZGl0aW9uYWxEaWdpdHMpICsgJ30pJCknKTtcbiAgdmFyIGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChyZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiB7XG4gICAgeWVhcjogTmFOLFxuICAgIHJlc3REYXRlU3RyaW5nOiAnJ1xuICB9O1xuICB2YXIgeWVhciA9IGNhcHR1cmVzWzFdID8gcGFyc2VJbnQoY2FwdHVyZXNbMV0pIDogbnVsbDtcbiAgdmFyIGNlbnR1cnkgPSBjYXB0dXJlc1syXSA/IHBhcnNlSW50KGNhcHR1cmVzWzJdKSA6IG51bGw7XG5cbiAgLy8gZWl0aGVyIHllYXIgb3IgY2VudHVyeSBpcyBudWxsLCBub3QgYm90aFxuICByZXR1cm4ge1xuICAgIHllYXI6IGNlbnR1cnkgPT09IG51bGwgPyB5ZWFyIDogY2VudHVyeSAqIDEwMCxcbiAgICByZXN0RGF0ZVN0cmluZzogZGF0ZVN0cmluZy5zbGljZSgoY2FwdHVyZXNbMV0gfHwgY2FwdHVyZXNbMl0pLmxlbmd0aClcbiAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlRGF0ZShkYXRlU3RyaW5nLCB5ZWFyKSB7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICh5ZWFyID09PSBudWxsKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChkYXRlUmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgc3RyaW5nXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgaXNXZWVrRGF0ZSA9ICEhY2FwdHVyZXNbNF07XG4gIHZhciBkYXlPZlllYXIgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzFdKTtcbiAgdmFyIG1vbnRoID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1syXSkgLSAxO1xuICB2YXIgZGF5ID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1szXSk7XG4gIHZhciB3ZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s0XSk7XG4gIHZhciBkYXlPZldlZWsgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzVdKSAtIDE7XG4gIGlmIChpc1dlZWtEYXRlKSB7XG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWssIGRheU9mV2VlaykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICByZXR1cm4gZGF5T2ZJU09XZWVrWWVhcih5ZWFyLCB3ZWVrLCBkYXlPZldlZWspO1xuICB9IGVsc2Uge1xuICAgIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgaWYgKCF2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgsIGRheSkgfHwgIXZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBtb250aCwgTWF0aC5tYXgoZGF5T2ZZZWFyLCBkYXkpKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxufVxuZnVuY3Rpb24gcGFyc2VEYXRlVW5pdCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPyBwYXJzZUludCh2YWx1ZSkgOiAxO1xufVxuZnVuY3Rpb24gcGFyc2VUaW1lKHRpbWVTdHJpbmcpIHtcbiAgdmFyIGNhcHR1cmVzID0gdGltZVN0cmluZy5tYXRjaCh0aW1lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gTmFOOyAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuXG4gIHZhciBob3VycyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbMV0pO1xuICB2YXIgbWludXRlcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbMl0pO1xuICB2YXIgc2Vjb25kcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbM10pO1xuICBpZiAoIXZhbGlkYXRlVGltZShob3VycywgbWludXRlcywgc2Vjb25kcykpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG4gIHJldHVybiBob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSArIHNlY29uZHMgKiAxMDAwO1xufVxuZnVuY3Rpb24gcGFyc2VUaW1lVW5pdCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCcsJywgJy4nKSkgfHwgMDtcbn1cbmZ1bmN0aW9uIHBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcpIHtcbiAgaWYgKHRpbWV6b25lU3RyaW5nID09PSAnWicpIHJldHVybiAwO1xuICB2YXIgY2FwdHVyZXMgPSB0aW1lem9uZVN0cmluZy5tYXRjaCh0aW1lem9uZVJlZ2V4KTtcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIDA7XG4gIHZhciBzaWduID0gY2FwdHVyZXNbMV0gPT09ICcrJyA/IC0xIDogMTtcbiAgdmFyIGhvdXJzID0gcGFyc2VJbnQoY2FwdHVyZXNbMl0pO1xuICB2YXIgbWludXRlcyA9IGNhcHR1cmVzWzNdICYmIHBhcnNlSW50KGNhcHR1cmVzWzNdKSB8fCAwO1xuICBpZiAoIXZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICByZXR1cm4gc2lnbiAqIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59XG5mdW5jdGlvbiBkYXlPZklTT1dlZWtZZWFyKGlzb1dlZWtZZWFyLCB3ZWVrLCBkYXkpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRVVENGdWxsWWVhcihpc29XZWVrWWVhciwgMCwgNCk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlEYXkgPSBkYXRlLmdldFVUQ0RheSgpIHx8IDc7XG4gIHZhciBkaWZmID0gKHdlZWsgLSAxKSAqIDcgKyBkYXkgKyAxIC0gZm91cnRoT2ZKYW51YXJ5RGF5O1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59XG5cbi8vIFZhbGlkYXRpb24gZnVuY3Rpb25zXG5cbi8vIEZlYnJ1YXJ5IGlzIG51bGwgdG8gaGFuZGxlIHRoZSBsZWFwIHllYXIgKHVzaW5nIHx8KVxudmFyIGRheXNJbk1vbnRocyA9IFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMDtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkge1xuICByZXR1cm4gbW9udGggPj0gMCAmJiBtb250aCA8PSAxMSAmJiBkYXRlID49IDEgJiYgZGF0ZSA8PSAoZGF5c0luTW9udGhzW21vbnRoXSB8fCAoaXNMZWFwWWVhckluZGV4KHllYXIpID8gMjkgOiAyOCkpO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcikge1xuICByZXR1cm4gZGF5T2ZZZWFyID49IDEgJiYgZGF5T2ZZZWFyIDw9IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAzNjYgOiAzNjUpO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVXZWVrRGF0ZShfeWVhciwgd2VlaywgZGF5KSB7XG4gIHJldHVybiB3ZWVrID49IDEgJiYgd2VlayA8PSA1MyAmJiBkYXkgPj0gMCAmJiBkYXkgPD0gNjtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZShob3VycywgbWludXRlcywgc2Vjb25kcykge1xuICBpZiAoaG91cnMgPT09IDI0KSB7XG4gICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgJiYgc2Vjb25kcyA9PT0gMDtcbiAgfVxuICByZXR1cm4gc2Vjb25kcyA+PSAwICYmIHNlY29uZHMgPCA2MCAmJiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8IDYwICYmIGhvdXJzID49IDAgJiYgaG91cnMgPCAyNTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoX2hvdXJzLCBtaW51dGVzKSB7XG4gIHJldHVybiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8PSA1OTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHBhcnNlSlNPTlxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSBhIEpTT04gZGF0ZSBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnRzIGEgY29tcGxldGUgSVNPIGRhdGUgc3RyaW5nIGluIFVUQyB0aW1lLCB0aGUgdHlwaWNhbCBmb3JtYXQgZm9yIHRyYW5zbWl0dGluZ1xuICogYSBkYXRlIGluIEpTT04sIHRvIGEgSmF2YVNjcmlwdCBgRGF0ZWAgaW5zdGFuY2UuXG4gKlxuICogVGhpcyBpcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24gZm9yIGNvbnZlcnRpbmcgZGF0ZXMgcmV0cmlldmVkIGZyb20gYSBKU09OIEFQSSB0b1xuICogYSBgRGF0ZWAgaW5zdGFuY2Ugd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGBkYXRlLWZuc2AgbGlicmFyeS5cbiAqIFRoZSBmb2xsb3dpbmcgZm9ybWF0cyBhcmUgc3VwcG9ydGVkOlxuICpcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTAuMTIzWmA6IFRoZSBvdXRwdXQgb2YgYC50b0lTT1N0cmluZygpYCBhbmQgYEpTT04uc3RyaW5naWZ5KG5ldyBEYXRlKCkpYFxuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMFpgOiBXaXRob3V0IG1pbGxpc2Vjb25kc1xuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMCswMDowMGA6IFdpdGggYSB6ZXJvIG9mZnNldCwgdGhlIGRlZmF1bHQgSlNPTiBlbmNvZGVkIGZvcm1hdCBpbiBzb21lIG90aGVyIGxhbmd1YWdlc1xuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMCswNTo0NWA6IFdpdGggYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBvZmZzZXQsIHRoZSBkZWZhdWx0IEpTT04gZW5jb2RlZCBmb3JtYXQgaW4gc29tZSBvdGhlciBsYW5ndWFnZXNcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTArMDAwMGA6IFdpdGggYSB6ZXJvIG9mZnNldCB3aXRob3V0IGEgY29sb25cbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTBgOiBXaXRob3V0IGEgdHJhaWxpbmcgJ1onIHN5bWJvbFxuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMC4xMjM0NTY3YDogVXAgdG8gNyBkaWdpdHMgaW4gbWlsbGlzZWNvbmRzIGZpZWxkLiBPbmx5IGZpcnN0IDMgYXJlIHRha2VuIGludG8gYWNjb3VudCBzaW5jZSBKUyBkb2VzIG5vdCBhbGxvdyBmcmFjdGlvbmFsIG1pbGxpc2Vjb25kc1xuICogLSBgMjAwMC0wMy0xNSAwNToyMDoxMGA6IFdpdGggYSBzcGFjZSBpbnN0ZWFkIG9mIGEgJ1QnIHNlcGFyYXRvciBmb3IgQVBJcyByZXR1cm5pbmcgYSBTUUwgZGF0ZSB3aXRob3V0IHJlZm9ybWF0dGluZ1xuICpcbiAqIEZvciBjb252ZW5pZW5jZSBhbmQgZWFzZSBvZiB1c2UgdGhlc2Ugb3RoZXIgaW5wdXQgdHlwZXMgYXJlIGFsc28gc3VwcG9ydGVkXG4gKiB2aWEgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9OlxuICpcbiAqIC0gQSBgRGF0ZWAgaW5zdGFuY2Ugd2lsbCBiZSBjbG9uZWRcbiAqIC0gQSBgbnVtYmVyYCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXBcbiAqXG4gKiBBbnkgb3RoZXIgaW5wdXQgdHlwZSBvciBpbnZhbGlkIGRhdGUgc3RyaW5ncyB3aWxsIHJldHVybiBhbiBgSW52YWxpZCBEYXRlYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ8RGF0ZX0gYXJndW1lbnQgQSBmdWxseSBmb3JtZWQgSVNPODYwMSBkYXRlIHN0cmluZyB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUpTT04oYXJndW1lbnQpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIGlmICh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHBhcnRzID0gYXJndW1lbnQubWF0Y2goLyhcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pW1QgXShcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0pKD86XFwuKFxcZHswLDd9KSk/KD86WnwoLikoXFxkezJ9KTo/KFxcZHsyfSk/KT8vKTtcbiAgICBpZiAocGFydHMpIHtcbiAgICAgIC8vIEdyb3VwIDggbWF0Y2hlcyB0aGUgc2lnblxuICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCtwYXJ0c1sxXSwgK3BhcnRzWzJdIC0gMSwgK3BhcnRzWzNdLCArcGFydHNbNF0gLSAoK3BhcnRzWzldIHx8IDApICogKHBhcnRzWzhdID09ICctJyA/IC0xIDogMSksICtwYXJ0c1s1XSAtICgrcGFydHNbMTBdIHx8IDApICogKHBhcnRzWzhdID09ICctJyA/IC0xIDogMSksICtwYXJ0c1s2XSwgKygocGFydHNbN10gfHwgJzAnKSArICcwMCcpLnN1YnN0cmluZygwLCAzKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICByZXR1cm4gdG9EYXRlKGFyZ3VtZW50KTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERheSBmcm9tIFwiLi4vZ2V0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViRGF5cyBmcm9tIFwiLi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c0RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgZGF5IG9mIHRoZSB3ZWVrP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgZGF5IG9mIHRoZSB3ZWVrPyAwLTYgdGhlIGRheSBvZiB0aGUgd2VlaywgMCByZXByZXNlbnRzIFN1bmRheS5cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtudW1iZXJ9IGRheSAtIGRheSBvZiB0aGUgd2Vla1xuICogQHJldHVybnMge0RhdGV9IC0gdGhlIGRhdGUgaXMgdGhlIHByZXZpb3VzIGRheSBvZiB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IC0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5IGJlZm9yZSBNYXIsIDIwLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNEYXkobmV3IERhdGUoMjAyMCwgMiwgMjApLCAxKVxuICogLy89PiBNb24gTWFyIDE2IDIwMjAgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgVHVlc2RheSBiZWZvcmUgTWFyLCAyMSwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzRGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIxKSwgMilcbiAqIC8vPT4gVHVlIE1hciAxNyAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzRGF5KGRhdGUsIGRheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlbHRhID0gZ2V0RGF5KGRhdGUpIC0gZGF5O1xuICBpZiAoZGVsdGEgPD0gMCkgZGVsdGEgKz0gNztcbiAgcmV0dXJuIHN1YkRheXMoZGF0ZSwgZGVsdGEpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzRnJpZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBGcmlkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBGcmlkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBGcmlkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBGcmlkYXkgYmVmb3JlIEp1biwgMTksIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c0ZyaWRheShuZXcgRGF0ZSgyMDIxLCA1LCAxOSkpXG4gKiAvLz0+IEZyaSBKdW5lIDE4IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNGcmlkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDUpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzTW9uZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBNb25kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBNb25kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBNb25kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBNb25kYXkgYmVmb3JlIEp1biwgMTgsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c01vbmRheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IE1vbiBKdW5lIDE0IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNNb25kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDEpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzU2F0dXJkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFNhdHVyZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgU2F0dXJkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBTYXR1cmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFNhdHVyZGF5IGJlZm9yZSBKdW4sIDIwLCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNTYXR1cmRheShuZXcgRGF0ZSgyMDIxLCA1LCAyMCkpXG4gKiAvLz0+IFNhdCBKdW5lIDE5IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNTYXR1cmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgNik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNTdW5kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFN1bmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFN1bmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFN1bmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFN1bmRheSBiZWZvcmUgSnVuLCAyMSwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzU3VuZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDIxKSlcbiAqIC8vPT4gU3VuIEp1bmUgMjAgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1N1bmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgMCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNUaHVyc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgVGh1cnNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBUaHVyc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFRodXJzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgVGh1cnNkYXkgYmVmb3JlIEp1biwgMTgsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1RodXJzZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE4KSlcbiAqIC8vPT4gVGh1IEp1bmUgMTcgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1RodXJzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCA0KTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1R1ZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFR1ZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgVHVlc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFR1ZXNkYXkgYmVmb3JlIEp1biwgMTgsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1R1ZXNkYXkobmV3IERhdGUoMjAyMSwgNSwgMTgpKVxuICogLy89PiBUdWUgSnVuZSAxNSAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzVHVlc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgMik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNXZWRuZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFdlZG5lc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFdlZG5lc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFdlZG5lc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFdlZG5lc2RheSBiZWZvcmUgSnVuLCAxOCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzV2VkbmVzZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE4KSlcbiAqIC8vPT4gV2VkIEp1bmUgMTYgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1dlZG5lc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgMyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1vbnRoc0luUXVhcnRlciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcXVhcnRlcnNUb01vbnRoc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBudW1iZXIgb2YgcXVhcnRlcnMgdG8gbW9udGhzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBxdWFydGVycyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1vbnRocy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gcXVhcnRlcnMgLSBudW1iZXIgb2YgcXVhcnRlcnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBxdWFydGVycyBjb252ZXJ0ZWQgaW4gbW9udGhzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHF1YXJ0ZXJzIHRvIG1vbnRoc1xuICogY29uc3QgcmVzdWx0ID0gcXVhcnRlcnNUb01vbnRocygyKVxuICogLy89PiA2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YXJ0ZXJzVG9Nb250aHMocXVhcnRlcnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKHF1YXJ0ZXJzICogbW9udGhzSW5RdWFydGVyKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcXVhcnRlcnNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHF1YXJ0ZXJzVG9ZZWFyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBudW1iZXIgb2YgcXVhcnRlcnMgdG8geWVhcnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgeWVhcnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHF1YXJ0ZXJzIC0gbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgY29udmVydGVkIGluIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA4IHF1YXJ0ZXJzIHRvIHllYXJzXG4gKiBjb25zdCByZXN1bHQgPSBxdWFydGVyc1RvWWVhcnMoOClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gcXVhcnRlcnNUb1llYXJzKDExKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YXJ0ZXJzVG9ZZWFycyhxdWFydGVycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXJzID0gcXVhcnRlcnMgLyBxdWFydGVyc0luWWVhcjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHJvdW5kVG9OZWFyZXN0TWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSb3VuZHMgdGhlIGdpdmVuIGRhdGUgdG8gdGhlIG5lYXJlc3QgbWludXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSb3VuZHMgdGhlIGdpdmVuIGRhdGUgdG8gdGhlIG5lYXJlc3QgbWludXRlIChvciBudW1iZXIgb2YgbWludXRlcykuXG4gKiBSb3VuZHMgdXAgd2hlbiB0aGUgZ2l2ZW4gZGF0ZSBpcyBleGFjdGx5IGJldHdlZW4gdGhlIG5lYXJlc3Qgcm91bmQgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gcm91bmRcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm5lYXJlc3RUbz0xXSAtIG5lYXJlc3QgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gcm91bmQgdG8uIEUuZy4gYDE1YCB0byByb3VuZCB0byBxdWFydGVyIGhvdXJzLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSByb3VuZGVkIHRvIHRoZSBjbG9zZXN0IG1pbnV0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5uZWFyZXN0VG9gIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSb3VuZCAxMCBKdWx5IDIwMTQgMTI6MTI6MzQgdG8gbmVhcmVzdCBtaW51dGU6XG4gKiBjb25zdCByZXN1bHQgPSByb3VuZFRvTmVhcmVzdE1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAxMiwgMzQpKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6MTM6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUm91bmQgMTAgSnVseSAyMDE0IDEyOjA3OjMwIHRvIG5lYXJlc3QgcXVhcnRlciBob3VyOlxuICogY29uc3QgcmVzdWx0ID0gcm91bmRUb05lYXJlc3RNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMTIsIDM0KSwgeyBuZWFyZXN0VG86IDE1IH0pXG4gKiAvLyByb3VuZHMgdXAgYmVjYXVzZSBnaXZlbiBkYXRlIGlzIGV4YWN0bHkgYmV0d2VlbiAxMjowMDowMCBhbmQgMTI6MTU6MDBcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjE1OjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdW5kVG9OZWFyZXN0TWludXRlcyhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJG5lYXJlc3RUbztcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgbm9uZSBwcm92aWRlZCBwcmVzZW50Jyk7XG4gIH1cbiAgdmFyIG5lYXJlc3RUbyA9IHRvSW50ZWdlcigoX29wdGlvbnMkbmVhcmVzdFRvID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm5lYXJlc3RUbykgIT09IG51bGwgJiYgX29wdGlvbnMkbmVhcmVzdFRvICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRuZWFyZXN0VG8gOiAxKTtcbiAgaWYgKG5lYXJlc3RUbyA8IDEgfHwgbmVhcmVzdFRvID4gMzApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYG9wdGlvbnMubmVhcmVzdFRvYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzAnKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpOyAvLyByZWxldmFudCBpZiBuZWFyZXN0VG8gaXMgMSwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgY2FzZVxuICB2YXIgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpICsgc2Vjb25kcyAvIDYwO1xuICB2YXIgcm91bmRpbmdNZXRob2QgPSBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpO1xuICB2YXIgcm91bmRlZE1pbnV0ZXMgPSByb3VuZGluZ01ldGhvZChtaW51dGVzIC8gbmVhcmVzdFRvKSAqIG5lYXJlc3RUbztcbiAgdmFyIHJlbWFpbmRlck1pbnV0ZXMgPSBtaW51dGVzICUgbmVhcmVzdFRvO1xuICB2YXIgYWRkZWRNaW51dGVzID0gTWF0aC5yb3VuZChyZW1haW5kZXJNaW51dGVzIC8gbmVhcmVzdFRvKSAqIG5lYXJlc3RUbztcbiAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCByb3VuZGVkTWludXRlcyArIGFkZGVkTWludXRlcyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNlY29uZHNUb0hvdXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHNlY29uZHMgdG8gaG91cnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBob3Vycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIG51bWJlciBvZiBzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBjb252ZXJ0ZWQgaW4gaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDcyMDAgc2Vjb25kcyBpbnRvIGhvdXJzXG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9Ib3Vycyg3MjAwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9Ib3Vycyg3MTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlY29uZHNUb0hvdXJzKHNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBob3VycyA9IHNlY29uZHMgLyBzZWNvbmRzSW5Ib3VyO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3Vycyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luU2Vjb25kIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZWNvbmRzVG9NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHNlY29uZHMgLSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgY29udmVydGVkIGluIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBzZWNvbmRzIGludG8gbWlsbGlzZWNvbmRzXG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9NaWxsaXNlY29uZHMoMilcbiAqIC8vPT4gMjAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWNvbmRzVG9NaWxsaXNlY29uZHMoc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHNlY29uZHMgKiBtaWxsaXNlY29uZHNJblNlY29uZDtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZWNvbmRzVG9NaW51dGVzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHNlY29uZHMgdG8gbWludXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbnV0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHNlY29uZHMgLSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgY29udmVydGVkIGluIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDEyMCBzZWNvbmRzIGludG8gbWludXRlc1xuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvTWludXRlcygxMjApXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb01pbnV0ZXMoMTE5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlY29uZHNUb01pbnV0ZXMoc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIG1pbnV0ZXMgPSBzZWNvbmRzIC8gc2Vjb25kc0luTWludXRlO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzZXRNb250aCBmcm9tIFwiLi4vc2V0TW9udGgvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IGRhdGUgdmFsdWVzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCBkYXRlIHZhbHVlcyB0byBhIGdpdmVuIGRhdGUuXG4gKlxuICogU2V0cyB0aW1lIHZhbHVlcyB0byBkYXRlIGZyb20gb2JqZWN0IGB2YWx1ZXNgLlxuICogQSB2YWx1ZSBpcyBub3Qgc2V0IGlmIGl0IGlzIHVuZGVmaW5lZCBvciBudWxsIG9yIGRvZXNuJ3QgZXhpc3QgaW4gYHZhbHVlc2AuXG4gKlxuICogTm90ZSBhYm91dCBidW5kbGUgc2l6ZTogYHNldGAgZG9lcyBub3QgaW50ZXJuYWxseSB1c2UgYHNldFhgIGZ1bmN0aW9ucyBmcm9tIGRhdGUtZm5zIGJ1dCBpbnN0ZWFkIG9wdHNcbiAqIHRvIHVzZSBuYXRpdmUgYERhdGUjc2V0WGAgbWV0aG9kcy4gSWYgeW91IHVzZSB0aGlzIGZ1bmN0aW9uLCB5b3UgbWF5IG5vdCB3YW50IHRvIGluY2x1ZGUgdGhlXG4gKiBvdGhlciBgc2V0WGAgZnVuY3Rpb25zIHRoYXQgZGF0ZS1mbnMgcHJvdmlkZXMgaWYgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIGJ1bmRsZSBzaXplLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMueWVhcl0gLSB0aGUgbnVtYmVyIG9mIHllYXJzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMubW9udGhdIC0gdGhlIG51bWJlciBvZiBtb250aHMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5kYXRlXSAtIHRoZSBudW1iZXIgb2YgZGF5cyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLmhvdXJzXSAtIHRoZSBudW1iZXIgb2YgaG91cnMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5taW51dGVzXSAtIHRoZSBudW1iZXIgb2YgbWludXRlcyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLnNlY29uZHNdIC0gdGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMubWlsbGlzZWNvbmRzXSAtIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIHNldFxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIG9wdGlvbnMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgdmFsdWVzYCBtdXN0IGJlIGFuIG9iamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUcmFuc2Zvcm0gMSBTZXB0ZW1iZXIgMjAxNCBpbnRvIDIwIE9jdG9iZXIgMjAxNSBpbiBhIHNpbmdsZSBsaW5lOlxuICogY29uc3QgcmVzdWx0ID0gc2V0KG5ldyBEYXRlKDIwMTQsIDgsIDIwKSwgeyB5ZWFyOiAyMDE1LCBtb250aDogOSwgZGF0ZTogMjAgfSlcbiAqIC8vPT4gVHVlIE9jdCAyMCAyMDE1IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCAxMiBQTSB0byAxIFNlcHRlbWJlciAyMDE0IDAxOjIzOjQ1IHRvIDEgU2VwdGVtYmVyIDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXQobmV3IERhdGUoMjAxNCwgOCwgMSwgMSwgMjMsIDQ1KSwgeyBob3VyczogMTIgfSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDEyOjIzOjQ1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldChkaXJ0eURhdGUsIHZhbHVlcykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgaWYgKF90eXBlb2YodmFsdWVzKSAhPT0gJ29iamVjdCcgfHwgdmFsdWVzID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZhbHVlcyBwYXJhbWV0ZXIgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuXG4gIC8vIENoZWNrIGlmIGRhdGUgaXMgSW52YWxpZCBEYXRlIGJlY2F1c2UgRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIgaWdub3JlcyB0aGUgdmFsdWUgb2YgSW52YWxpZCBEYXRlXG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICBpZiAodmFsdWVzLnllYXIgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIodmFsdWVzLnllYXIpO1xuICB9XG4gIGlmICh2YWx1ZXMubW9udGggIT0gbnVsbCkge1xuICAgIGRhdGUgPSBzZXRNb250aChkYXRlLCB2YWx1ZXMubW9udGgpO1xuICB9XG4gIGlmICh2YWx1ZXMuZGF0ZSAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXREYXRlKHRvSW50ZWdlcih2YWx1ZXMuZGF0ZSkpO1xuICB9XG4gIGlmICh2YWx1ZXMuaG91cnMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0SG91cnModG9JbnRlZ2VyKHZhbHVlcy5ob3VycykpO1xuICB9XG4gIGlmICh2YWx1ZXMubWludXRlcyAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRNaW51dGVzKHRvSW50ZWdlcih2YWx1ZXMubWludXRlcykpO1xuICB9XG4gIGlmICh2YWx1ZXMuc2Vjb25kcyAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRTZWNvbmRzKHRvSW50ZWdlcih2YWx1ZXMuc2Vjb25kcykpO1xuICB9XG4gIGlmICh2YWx1ZXMubWlsbGlzZWNvbmRzICE9IG51bGwpIHtcbiAgICBkYXRlLnNldE1pbGxpc2Vjb25kcyh0b0ludGVnZXIodmFsdWVzLm1pbGxpc2Vjb25kcykpO1xuICB9XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldERhdGVcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5T2ZNb250aCAtIHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIG1vbnRoIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDMwdGggZGF5IG9mIHRoZSBtb250aCB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF0ZShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMzApXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXREYXRlKGRpcnR5RGF0ZSwgZGlydHlEYXlPZk1vbnRoKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5T2ZNb250aCA9IHRvSW50ZWdlcihkaXJ0eURheU9mTW9udGgpO1xuICBkYXRlLnNldERhdGUoZGF5T2ZNb250aCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXkgLSB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgd2VlayBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHdlZWsgZGF5IHRvIFN1bmRheSwgd2l0aCB0aGUgZGVmYXVsdCB3ZWVrU3RhcnRzT24gb2YgU3VuZGF5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF5KG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAwKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHdlZWsgZGF5IHRvIFN1bmRheSwgd2l0aCBhIHdlZWtTdGFydHNPbiBvZiBNb25kYXk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXREYXkobmV3IERhdGUoMjAxNCwgOCwgMSksIDAsIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXREYXkoZGlydHlEYXRlLCBkaXJ0eURheSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcbiAgdmFyIGN1cnJlbnREYXkgPSBkYXRlLmdldERheSgpO1xuICB2YXIgcmVtYWluZGVyID0gZGF5ICUgNztcbiAgdmFyIGRheUluZGV4ID0gKHJlbWFpbmRlciArIDcpICUgNztcbiAgdmFyIGRlbHRhID0gNyAtIHdlZWtTdGFydHNPbjtcbiAgdmFyIGRpZmYgPSBkYXkgPCAwIHx8IGRheSA+IDYgPyBkYXkgLSAoY3VycmVudERheSArIGRlbHRhKSAlIDcgOiAoZGF5SW5kZXggKyBkZWx0YSkgJSA3IC0gKGN1cnJlbnREYXkgKyBkZWx0YSkgJSA3O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlLCBkaWZmKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXREYXlPZlllYXJcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGRheSBvZiB0aGUgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheU9mWWVhciAtIHRoZSBkYXkgb2YgdGhlIHllYXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgeWVhciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAybmQgZGF5IG9mIHRoZSB5ZWFyIHRvIDIgSnVseSAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF5T2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDYsIDIpLCAyKVxuICogLy89PiBUaHUgSmFuIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGF5T2ZZZWFyKGRpcnR5RGF0ZSwgZGlydHlEYXlPZlllYXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXlPZlllYXIgPSB0b0ludGVnZXIoZGlydHlEYXlPZlllYXIpO1xuICBkYXRlLnNldE1vbnRoKDApO1xuICBkYXRlLnNldERhdGUoZGF5T2ZZZWFyKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMsIHNldERlZmF1bHRPcHRpb25zIGFzIHNldEludGVybmFsRGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGVmYXVsdE9wdGlvbnNcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IGRlZmF1bHQgb3B0aW9ucyBpbmNsdWRpbmcgbG9jYWxlLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldHMgdGhlIGRlZmF1bHRzIGZvclxuICogYG9wdGlvbnMubG9jYWxlYCwgYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYFxuICogYXJndW1lbnRzIGZvciBhbGwgZnVuY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBuZXdPcHRpb25zIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbbmV3T3B0aW9ucy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW25ld09wdGlvbnMud2Vla1N0YXJ0c09uXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbbmV3T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgZ2xvYmFsIGxvY2FsZTpcbiAqIGltcG9ydCB7IGVzIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlJ1xuICogc2V0RGVmYXVsdE9wdGlvbnMoeyBsb2NhbGU6IGVzIH0pXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoMjAxNCwgOCwgMiksICdQUFBQJylcbiAqIC8vPT4gJ21hcnRlcywgMiBkZSBzZXB0aWVtYnJlIGRlIDIwMTQnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMikpXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCxcbiAqIC8vIHdoZW4gd2Ugc2V0IHRoYXQgd2VlayBzdGFydHMgb24gTW9uZGF5IGJ5IGRlZmF1bHQ6XG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFydHNPbjogMSB9KVxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMikpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNYW51YWxseSBzZXQgb3B0aW9ucyB0YWtlIHByaW9yaXR5IG92ZXIgZGVmYXVsdCBvcHRpb25zOlxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpLCB7IHdlZWtTdGFydHNPbjogMCB9KVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVtb3ZlIHRoZSBvcHRpb24gYnkgc2V0dGluZyBpdCB0byBgdW5kZWZpbmVkYDpcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFydHNPbjogdW5kZWZpbmVkIH0pXG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyKSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgZm9yICh2YXIgcHJvcGVydHkgaW4gZGVmYXVsdE9wdGlvbnMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlZmF1bHRPcHRpb25zLCBwcm9wZXJ0eSkpIHtcbiAgICAgIDtcbiAgICAgIHJlc3VsdFtwcm9wZXJ0eV0gPSBkZWZhdWx0T3B0aW9uc1twcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIGZvciAodmFyIF9wcm9wZXJ0eSBpbiBuZXdPcHRpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZXdPcHRpb25zLCBfcHJvcGVydHkpKSB7XG4gICAgICBpZiAobmV3T3B0aW9uc1tfcHJvcGVydHldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIHJlc3VsdFtfcHJvcGVydHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgO1xuICAgICAgICByZXN1bHRbX3Byb3BlcnR5XSA9IG5ld09wdGlvbnNbX3Byb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucyhyZXN1bHQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGhvdXJzIC0gdGhlIGhvdXJzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBob3VycyBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDQgaG91cnMgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMTozMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldEhvdXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCksIDQpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwNDozMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRIb3VycyhkaXJ0eURhdGUsIGRpcnR5SG91cnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBob3VycyA9IHRvSW50ZWdlcihkaXJ0eUhvdXJzKTtcbiAgZGF0ZS5zZXRIb3Vycyhob3Vycyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0SVNPRGF5IGZyb20gXCIuLi9nZXRJU09EYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldElTT0RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICogSVNPIHdlZWsgc3RhcnRzIHdpdGggTW9uZGF5LlxuICogNyBpcyB0aGUgaW5kZXggb2YgU3VuZGF5LCAxIGlzIHRoZSBpbmRleCBvZiBNb25kYXkgZXRjLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5IC0gdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBTdW5kYXkgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldElTT0RheShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNylcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldElTT0RheShkaXJ0eURhdGUsIGRpcnR5RGF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcbiAgdmFyIGN1cnJlbnREYXkgPSBnZXRJU09EYXkoZGF0ZSk7XG4gIHZhciBkaWZmID0gZGF5IC0gY3VycmVudERheTtcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGlmZik7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldElTT1dlZWsgZnJvbSBcIi4uL2dldElTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldElTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIElTTyB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZSwgc2F2aW5nIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBpc29XZWVrIC0gdGhlIElTTyB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBJU08gd2VlayBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSA1M3JkIElTTyB3ZWVrIHRvIDcgQXVndXN0IDIwMDQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRJU09XZWVrKG5ldyBEYXRlKDIwMDQsIDcsIDcpLCA1MylcbiAqIC8vPT4gU2F0IEphbiAwMSAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldElTT1dlZWsoZGlydHlEYXRlLCBkaXJ0eUlTT1dlZWspIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBpc29XZWVrID0gdG9JbnRlZ2VyKGRpcnR5SVNPV2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0SVNPV2VlayhkYXRlKSAtIGlzb1dlZWs7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldElTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUsXG4gKiBzYXZpbmcgdGhlIHdlZWsgbnVtYmVyIGFuZCB0aGUgd2Vla2RheSBudW1iZXIuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gaXNvV2Vla1llYXIgLSB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgMjAwNyB0byAyOSBEZWNlbWJlciAyMDA4OlxuICogY29uc3QgcmVzdWx0ID0gc2V0SVNPV2Vla1llYXIobmV3IERhdGUoMjAwOCwgMTEsIDI5KSwgMjAwNylcbiAqIC8vPT4gTW9uIEphbiAwMSAyMDA3IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrWWVhcikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGlzb1dlZWtZZWFyID0gdG9JbnRlZ2VyKGRpcnR5SVNPV2Vla1llYXIpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBzdGFydE9mSVNPV2Vla1llYXIoZGF0ZSkpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRGdWxsWWVhcihpc29XZWVrWWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrWWVhcihmb3VydGhPZkphbnVhcnkpO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0TWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IG1pbGxpc2Vjb25kcyAtIHRoZSBtaWxsaXNlY29uZHMgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDMwMCBtaWxsaXNlY29uZHMgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMTozMDo0MC41MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgOCwgMSwgMTEsIDMwLCA0MCwgNTAwKSwgMzAwKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMTE6MzA6NDAuMzAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5TWlsbGlzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbWlsbGlzZWNvbmRzID0gdG9JbnRlZ2VyKGRpcnR5TWlsbGlzZWNvbmRzKTtcbiAgZGF0ZS5zZXRNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0TWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBtaW51dGVzIC0gdGhlIG1pbnV0ZXMgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCA0NSBtaW51dGVzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6NDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCwgNDApLCA0NSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDExOjQ1OjQwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldE1pbnV0ZXMoZGlydHlEYXRlLCBkaXJ0eU1pbnV0ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtaW51dGVzID0gdG9JbnRlZ2VyKGRpcnR5TWludXRlcyk7XG4gIGRhdGUuc2V0TWludXRlcyhtaW51dGVzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERheXNJbk1vbnRoIGZyb20gXCIuLi9nZXREYXlzSW5Nb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0TW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IG1vbnRoIC0gdGhlIG1vbnRoIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aCBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IEZlYnJ1YXJ5IHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMSlcbiAqIC8vPT4gU2F0IEZlYiAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldE1vbnRoKGRpcnR5RGF0ZSwgZGlydHlNb250aCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1vbnRoID0gdG9JbnRlZ2VyKGRpcnR5TW9udGgpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZVdpdGhEZXNpcmVkTW9udGggPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIDE1KTtcbiAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoKGRhdGVXaXRoRGVzaXJlZE1vbnRoKTtcbiAgLy8gU2V0IHRoZSBsYXN0IGRheSBvZiB0aGUgbmV3IG1vbnRoXG4gIC8vIGlmIHRoZSBvcmlnaW5hbCBkYXRlIHdhcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGxvbmdlciBtb250aFxuICBkYXRlLnNldE1vbnRoKG1vbnRoLCBNYXRoLm1pbihkYXksIGRheXNJbk1vbnRoKSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzZXRNb250aCBmcm9tIFwiLi4vc2V0TW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgeWVhciBxdWFydGVyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSB5ZWFyIHF1YXJ0ZXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBxdWFydGVyIC0gdGhlIHF1YXJ0ZXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHF1YXJ0ZXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMm5kIHF1YXJ0ZXIgdG8gMiBKdWx5IDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDYsIDIpLCAyKVxuICogLy89PiBXZWQgQXByIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0UXVhcnRlcihkaXJ0eURhdGUsIGRpcnR5UXVhcnRlcikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHF1YXJ0ZXIgPSB0b0ludGVnZXIoZGlydHlRdWFydGVyKTtcbiAgdmFyIG9sZFF1YXJ0ZXIgPSBNYXRoLmZsb29yKGRhdGUuZ2V0TW9udGgoKSAvIDMpICsgMTtcbiAgdmFyIGRpZmYgPSBxdWFydGVyIC0gb2xkUXVhcnRlcjtcbiAgcmV0dXJuIHNldE1vbnRoKGRhdGUsIGRhdGUuZ2V0TW9udGgoKSArIGRpZmYgKiAzKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRTZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNlY29uZHMgLSB0aGUgc2Vjb25kcyBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDQ1IHNlY29uZHMgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMTozMDo0MDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFNlY29uZHMobmV3IERhdGUoMjAxNCwgOCwgMSwgMTEsIDMwLCA0MCksIDQ1KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMTE6MzA6NDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0U2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5U2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHNlY29uZHMgPSB0b0ludGVnZXIoZGlydHlTZWNvbmRzKTtcbiAgZGF0ZS5zZXRTZWNvbmRzKHNlY29uZHMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZ2V0V2VlayBmcm9tIFwiLi4vZ2V0V2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0V2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBsb2NhbCB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBsb2NhbCB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLCBzYXZpbmcgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3ZWVrIC0gdGhlIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbG9jYWwgd2VlayBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAxc3Qgd2VlayB0byAyIEphbnVhcnkgMjAwNSB3aXRoIGRlZmF1bHQgb3B0aW9uczpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIDEpXG4gKiAvLz0+IFN1biBEZWMgMjYgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDFzdCB3ZWVrIHRvIDIgSmFudWFyeSAyMDA1LFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssXG4gKiAvLyBhbmQgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgYWx3YXlzIGNvbnRhaW5zIDQgSmFudWFyeTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIDEsIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IFN1biBKYW4gNCAyMDA0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFdlZWsoZGlydHlEYXRlLCBkaXJ0eVdlZWssIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB3ZWVrID0gdG9JbnRlZ2VyKGRpcnR5V2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0V2VlayhkYXRlLCBvcHRpb25zKSAtIHdlZWs7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZldlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFdlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUsXG4gKiBzYXZpbmcgdGhlIHdlZWsgbnVtYmVyIGFuZCB0aGUgd2Vla2RheSBudW1iZXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjV2Vla19udW1iZXJpbmdcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IHdlZWtZZWFyIC0gdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMDQgdG8gMiBKYW51YXJ5IDIwMTAgd2l0aCBkZWZhdWx0IG9wdGlvbnM6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDEwLCAwLCAyKSwgMjAwNClcbiAqIC8vPT4gU2F0IEphbiAwMyAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAyMDA0IHRvIDIgSmFudWFyeSAyMDEwLFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2Ygd2Vla1xuICogLy8gYW5kIDQgSmFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXI6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDEwLCAwLCAyKSwgMjAwNCwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPT4gU2F0IEphbiAwMSAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFdlZWtZZWFyKGRpcnR5RGF0ZSwgZGlydHlXZWVrWWVhciwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2Vla1llYXIgPSB0b0ludGVnZXIoZGlydHlXZWVrWWVhcik7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIHN0YXJ0T2ZXZWVrWWVhcihkYXRlLCBvcHRpb25zKSk7XG4gIHZhciBmaXJzdFdlZWsgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrLnNldEZ1bGxZZWFyKHdlZWtZZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGRhdGUgPSBzdGFydE9mV2Vla1llYXIoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IHllYXIgLSB0aGUgeWVhciBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgeWVhciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHllYXIgMjAxMyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0WWVhcihuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMjAxMylcbiAqIC8vPT4gU3VuIFNlcCAwMSAyMDEzIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFllYXIoZGlydHlEYXRlLCBkaXJ0eVllYXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gdG9JbnRlZ2VyKGRpcnR5WWVhcik7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0ZSBpcyBJbnZhbGlkIERhdGUgYmVjYXVzZSBEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhciBpZ25vcmVzIHRoZSB2YWx1ZSBvZiBJbnZhbGlkIERhdGVcbiAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mRGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mRGVjYWRlXG4gKiBAY2F0ZWdvcnkgRGVjYWRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgZGVjYWRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgZGVjYWRlIGZvciAyMSBPY3RvYmVyIDIwMTUgMDA6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGVjYWRlKG5ldyBEYXRlKDIwMTUsIDksIDIxLCAwMCwgMDAsIDAwKSlcbiAqIC8vPT4gSmFuIDAxIDIwMTAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZkRlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGVjYWRlLCAwLCAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mSG91clxuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBob3VyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYW4gaG91ciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhbiBob3VyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIGhvdXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSG91cihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUpKVxuICogLy89PiBUdWUgU2VwIDAyIDIwMTQgMTE6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZkhvdXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldE1pbnV0ZXMoMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhbiBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBJU08gd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBzdGFydE9mV2VlayhkaXJ0eURhdGUsIHtcbiAgICB3ZWVrU3RhcnRzT246IDFcbiAgfSk7XG59IiwiaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZklTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZklTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBNb24gSmFuIDAzIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXIgPSBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZk1pbnV0ZVxuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbWludXRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBtaW51dGUgZm9yIDEgRGVjZW1iZXIgMjAxNCAyMjoxNTo0NS40MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mTWludXRlKG5ldyBEYXRlKDIwMTQsIDExLCAxLCAyMiwgMTUsIDQ1LCA0MDApKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMjI6MTU6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZk1pbnV0ZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0U2Vjb25kcygwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBtb250aCBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXREYXRlKDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgcXVhcnRlciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBKdWwgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBtb250aCA9IGN1cnJlbnRNb250aCAtIGN1cnJlbnRNb250aCAlIDM7XG4gIGRhdGUuc2V0TW9udGgobW9udGgsIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZTZWNvbmRcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHNlY29uZCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgc2Vjb25kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgc2Vjb25kIGZvciAxIERlY2VtYmVyIDIwMTQgMjI6MTU6NDUuNDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlNlY29uZChuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjQ1LjAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mU2Vjb25kKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBzdGFydE9mRGF5IGZyb20gXCIuLi9zdGFydE9mRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZUb2RheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvZGF5LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgdG9kYXkuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgdG9kYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mVG9kYXkoKVxuICogLy89PiBNb24gT2N0IDYgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVG9kYXkoKSB7XG4gIHJldHVybiBzdGFydE9mRGF5KERhdGUubm93KCkpO1xufSIsIi8qKlxuICogQG5hbWUgc3RhcnRPZlRvbW9ycm93XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgdG9tb3Jyb3cuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiB0b21vcnJvdy5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBuZXcgRGF0ZSgpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiB0b21vcnJvd1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZUb21vcnJvdygpXG4gKiAvLz0+IFR1ZSBPY3QgNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZUb21vcnJvdygpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gIHZhciB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IG5vdy5nZXRNb250aCgpO1xuICB2YXIgZGF5ID0gbm93LmdldERhdGUoKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5ICsgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFdlZWtZZWFyIGZyb20gXCIuLi9nZXRXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjV2Vla19udW1iZXJpbmdcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gYSB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNSB3aXRoIGRlZmF1bHQgc2V0dGluZ3M6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz0+IFN1biBEZWMgMjYgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNVxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2Ygd2Vla1xuICogLy8gYW5kIDQgSmFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXI6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMiksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IE1vbiBKYW4gMDMgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG4gIHZhciB5ZWFyID0gZ2V0V2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKTtcbiAgdmFyIGZpcnN0V2VlayA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWsuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHllYXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mWWVhcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDAwKSlcbiAqIC8vPT4gV2VkIEphbiAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGNsZWFuRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKGNsZWFuRGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiLyoqXG4gKiBAbmFtZSBzdGFydE9mWWVzdGVyZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgeWVzdGVyZGF5LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgeWVzdGVyZGF5LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYG5ldyBEYXRlKClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIHllc3RlcmRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZZZXN0ZXJkYXkoKVxuICogLy89PiBTdW4gT2N0IDUgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mWWVzdGVyZGF5KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgLSAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHN1YkRheXMgZnJvbSBcIi4uL3N1YkRheXMvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNb250aHMgZnJvbSBcIi4uL3N1Yk1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YlxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgb2JqZWN0IHdpdGggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWRcbiAqXG4gKiB8IEtleSAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCB5ZWFycyAgIHwgQW1vdW50IG9mIHllYXJzIHRvIGJlIHN1YnRyYWN0ZWQgICB8XG4gKiB8IG1vbnRocyAgfCBBbW91bnQgb2YgbW9udGhzIHRvIGJlIHN1YnRyYWN0ZWQgIHxcbiAqIHwgd2Vla3MgICB8IEFtb3VudCBvZiB3ZWVrcyB0byBiZSBzdWJ0cmFjdGVkICAgfFxuICogfCBkYXlzICAgIHwgQW1vdW50IG9mIGRheXMgdG8gYmUgc3VidHJhY3RlZCAgICB8XG4gKiB8IGhvdXJzICAgfCBBbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZCAgIHxcbiAqIHwgbWludXRlcyB8IEFtb3VudCBvZiBtaW51dGVzIHRvIGJlIHN1YnRyYWN0ZWQgfFxuICogfCBzZWNvbmRzIHwgQW1vdW50IG9mIHNlY29uZHMgdG8gYmUgc3VidHJhY3RlZCB8XG4gKlxuICogQWxsIHZhbHVlcyBkZWZhdWx0IHRvIDBcbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCB0aGUgZm9sbG93aW5nIGR1cmF0aW9uIGZyb20gMTUgSnVuZSAyMDE3IDE1OjI5OjIwXG4gKiBjb25zdCByZXN1bHQgPSBzdWIobmV3IERhdGUoMjAxNywgNSwgMTUsIDE1LCAyOSwgMjApLCB7XG4gKiAgIHllYXJzOiAyLFxuICogICBtb250aHM6IDksXG4gKiAgIHdlZWtzOiAxLFxuICogICBkYXlzOiA3LFxuICogICBob3VyczogNSxcbiAqICAgbWludXRlczogOSxcbiAqICAgc2Vjb25kczogMzBcbiAqIH0pXG4gKiAvLz0+IE1vbiBTZXAgMSAyMDE0IDEwOjE5OjUwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YihkYXRlLCBkdXJhdGlvbikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgaWYgKCFkdXJhdGlvbiB8fCBfdHlwZW9mKGR1cmF0aW9uKSAhPT0gJ29iamVjdCcpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgeWVhcnMgPSBkdXJhdGlvbi55ZWFycyA/IHRvSW50ZWdlcihkdXJhdGlvbi55ZWFycykgOiAwO1xuICB2YXIgbW9udGhzID0gZHVyYXRpb24ubW9udGhzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1vbnRocykgOiAwO1xuICB2YXIgd2Vla3MgPSBkdXJhdGlvbi53ZWVrcyA/IHRvSW50ZWdlcihkdXJhdGlvbi53ZWVrcykgOiAwO1xuICB2YXIgZGF5cyA9IGR1cmF0aW9uLmRheXMgPyB0b0ludGVnZXIoZHVyYXRpb24uZGF5cykgOiAwO1xuICB2YXIgaG91cnMgPSBkdXJhdGlvbi5ob3VycyA/IHRvSW50ZWdlcihkdXJhdGlvbi5ob3VycykgOiAwO1xuICB2YXIgbWludXRlcyA9IGR1cmF0aW9uLm1pbnV0ZXMgPyB0b0ludGVnZXIoZHVyYXRpb24ubWludXRlcykgOiAwO1xuICB2YXIgc2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMgPyB0b0ludGVnZXIoZHVyYXRpb24uc2Vjb25kcykgOiAwO1xuXG4gIC8vIFN1YnRyYWN0IHllYXJzIGFuZCBtb250aHNcbiAgdmFyIGRhdGVXaXRob3V0TW9udGhzID0gc3ViTW9udGhzKGRhdGUsIG1vbnRocyArIHllYXJzICogMTIpO1xuXG4gIC8vIFN1YnRyYWN0IHdlZWtzIGFuZCBkYXlzXG4gIHZhciBkYXRlV2l0aG91dERheXMgPSBzdWJEYXlzKGRhdGVXaXRob3V0TW9udGhzLCBkYXlzICsgd2Vla3MgKiA3KTtcblxuICAvLyBTdWJ0cmFjdCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kc1xuICB2YXIgbWludXRlc3RvU3ViID0gbWludXRlcyArIGhvdXJzICogNjA7XG4gIHZhciBzZWNvbmRzdG9TdWIgPSBzZWNvbmRzICsgbWludXRlc3RvU3ViICogNjA7XG4gIHZhciBtc3RvU3ViID0gc2Vjb25kc3RvU3ViICogMTAwMDtcbiAgdmFyIGZpbmFsRGF0ZSA9IG5ldyBEYXRlKGRhdGVXaXRob3V0RGF5cy5nZXRUaW1lKCkgLSBtc3RvU3ViKTtcbiAgcmV0dXJuIGZpbmFsRGF0ZTtcbn0iLCJpbXBvcnQgYWRkQnVzaW5lc3NEYXlzIGZyb20gXCIuLi9hZGRCdXNpbmVzc0RheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJCdXNpbmVzc0RheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU3Vic3RyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJzdHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnVzaW5lc3MgZGF5cyAobW9uIC0gZnJpKSB0byB0aGUgZ2l2ZW4gZGF0ZSwgaWdub3Jpbmcgd2Vla2VuZHMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGJ1c2luZXNzIGRheXMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBidXNpbmVzcyBkYXlzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3Vic3RyYWN0IDEwIGJ1c2luZXNzIGRheXMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViQnVzaW5lc3NEYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gTW9uIEF1ZyAxOCAyMDE0IDAwOjAwOjAwIChza2lwcGVkIHdlZWtlbmQgZGF5cylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViQnVzaW5lc3NEYXlzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkQnVzaW5lc3NEYXlzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAxMCBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkRheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBGcmkgQXVnIDIyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZERheXMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgYWRkSG91cnMgZnJvbSBcIi4uL2FkZEhvdXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBob3VycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMiBob3VycyBmcm9tIDExIEp1bHkgMjAxNCAwMTowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDExLCAxLCAwKSwgMilcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDIzOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YkhvdXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkSG91cnMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgYWRkSVNPV2Vla1llYXJzIGZyb20gXCIuLi9hZGRJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJJU09XZWVrWWVhcnNcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViSVNPV2Vla1llYXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA1KVxuICogLy89PiBNb24gQXVnIDMxIDIwMDkgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViSVNPV2Vla1llYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkSVNPV2Vla1llYXJzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZE1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNzUwIG1pbGxpc2Vjb25kcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NToyOS4yNTBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZE1pbnV0ZXMgZnJvbSBcIi4uL2FkZE1pbnV0ZXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWludXRlcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAzMCBtaW51dGVzIGZyb20gMTAgSnVseSAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViTWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDApLCAzMClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDExOjMwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1Yk1pbnV0ZXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaW51dGVzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNb250aHMgZnJvbSBcIi4uL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbW9udGhzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGhzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNSBtb250aHMgZnJvbSAxIEZlYnJ1YXJ5IDIwMTU6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJNb250aHMobmV3IERhdGUoMjAxNSwgMSwgMSksIDUpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJNb250aHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNb250aHMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFF1YXJ0ZXJzIGZyb20gXCIuLi9hZGRRdWFydGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXIgcXVhcnRlcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXIgcXVhcnRlcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgcXVhcnRlcnMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBxdWFydGVycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDMgcXVhcnRlcnMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViUXVhcnRlcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDMpXG4gKiAvLz0+IFN1biBEZWMgMDEgMjAxMyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJRdWFydGVycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZFF1YXJ0ZXJzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRTZWNvbmRzIGZyb20gXCIuLi9hZGRTZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJTZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAzMCBzZWNvbmRzIGZyb20gMTAgSnVseSAyMDE0IDEyOjQ1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViU2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NDozMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJTZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkU2Vjb25kcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkV2Vla3MgZnJvbSBcIi4uL2FkZFdlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJXZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHdlZWtzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgd2Vla3Mgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA0IHdlZWtzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YldlZWtzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA0KVxuICogLy89PiBNb24gQXVnIDA0IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViV2Vla3MoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRXZWVrcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkWWVhcnMgZnJvbSBcIi4uL2FkZFllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHllYXJzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgeWVhcnMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA1IHllYXJzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YlllYXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA1KVxuICogLy89PiBUdWUgU2VwIDAxIDIwMDkgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViWWVhcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRZZWFycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBhcmd1bWVudCAtIHRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8IF90eXBlb2YoYXJndW1lbnQpID09PSAnb2JqZWN0JyAmJiBhcmdTdHIgPT09ICdbb2JqZWN0IERhdGVdJykge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudC5nZXRUaW1lKCkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ251bWJlcicgfHwgYXJnU3RyID09PSAnW29iamVjdCBOdW1iZXJdJykge1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8IGFyZ1N0ciA9PT0gJ1tvYmplY3QgU3RyaW5nXScpICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcIlN0YXJ0aW5nIHdpdGggdjIuMC4wLWJldGEuMSBkYXRlLWZucyBkb2Vzbid0IGFjY2VwdCBzdHJpbmdzIGFzIGRhdGUgYXJndW1lbnRzLiBQbGVhc2UgdXNlIGBwYXJzZUlTT2AgdG8gcGFyc2Ugc3RyaW5ncy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91cGdyYWRlR3VpZGUubWQjc3RyaW5nLWFyZ3VtZW50c1wiKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4obmV3IEVycm9yKCkuc3RhY2spO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkYXlzSW5XZWVrIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSB3ZWVrc1RvRGF5c1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB3ZWVrcyB0byBkYXlzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiB3ZWVrcyB0byBhIGZ1bGwgbnVtYmVyIG9mIGRheXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHdlZWtzIC0gbnVtYmVyIG9mIHdlZWtzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2Ygd2Vla3MgY29udmVydGVkIGluIGRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgd2Vla3MgaW50byBkYXlzXG4gKiBjb25zdCByZXN1bHQgPSB3ZWVrc1RvRGF5cygyKVxuICogLy89PiAxNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3ZWVrc1RvRGF5cyh3ZWVrcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3Iod2Vla3MgKiBkYXlzSW5XZWVrKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbW9udGhzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSB5ZWFyc1RvTW9udGhzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHllYXJzIHRvIG1vbnRocy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgeWVhcnMgdG8gYSBmdWxsIG51bWJlciBvZiBtb250aHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHllYXJzIC0gbnVtYmVyIG9mIHllYXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgeWVhcnMgY29udmVydGVkIGluIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiB5ZWFycyBpbnRvIG1vbnRoc1xuICogY29uc3QgcmVzdWx0ID0geWVhcnNUb01vbnRocygyKVxuICogLy89PiAyNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB5ZWFyc1RvTW9udGhzKHllYXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFycyAqIG1vbnRoc0luWWVhcik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHF1YXJ0ZXJzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSB5ZWFyc1RvUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgeWVhcnMgdG8gcXVhcnRlcnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHllYXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgcXVhcnRlcnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHllYXJzIC0gbnVtYmVyIG9mIHllYXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgeWVhcnMgY29udmVydGVkIGluIHF1YXJ0ZXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHllYXJzIHRvIHF1YXJ0ZXJzXG4gKiBjb25zdCByZXN1bHQgPSB5ZWFyc1RvUXVhcnRlcnMoMilcbiAqIC8vPT4gOFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB5ZWFyc1RvUXVhcnRlcnMoeWVhcnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXJzICogcXVhcnRlcnNJblllYXIpO1xufSIsIi8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5leHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My42LjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAyMi0wOC0yNlQxNzo1MlpcbiAqL1xuKCBmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdGlmICggdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dgXG5cdFx0Ly8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeS5cblx0XHQvLyBGb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IGhhdmUgYSBgd2luZG93YCB3aXRoIGEgYGRvY3VtZW50YFxuXHRcdC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzLlxuXHRcdC8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuXG5cdFx0Ly8gZS5nLiB2YXIgalF1ZXJ5ID0gcmVxdWlyZShcImpxdWVyeVwiKSh3aW5kb3cpO1xuXHRcdC8vIFNlZSB0aWNrZXQgdHJhYy0xNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSApKCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIEVkZ2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJpIDUuMSAtIDkrLCBpT1MgNiAtIDkuMVxuLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJpY3QgY29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlXG4vLyBhcmd1bWVudHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgyMDE2KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vblxuLy8gZW5vdWdoIHRoYXQgYWxsIHN1Y2ggYXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFyciA9IFtdO1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGZsYXQgPSBhcnIuZmxhdCA/IGZ1bmN0aW9uKCBhcnJheSApIHtcblx0cmV0dXJuIGFyci5mbGF0LmNhbGwoIGFycmF5ICk7XG59IDogZnVuY3Rpb24oIGFycmF5ICkge1xuXHRyZXR1cm4gYXJyLmNvbmNhdC5hcHBseSggW10sIGFycmF5ICk7XG59O1xuXG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD01NywgRmlyZWZveCA8PTUyXG5cdFx0Ly8gSW4gc29tZSBicm93c2VycywgdHlwZW9mIHJldHVybnMgXCJmdW5jdGlvblwiIGZvciBIVE1MIDxvYmplY3Q+IGVsZW1lbnRzXG5cdFx0Ly8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cblx0XHQvLyBXZSBkb24ndCB3YW50IHRvIGNsYXNzaWZ5ICphbnkqIERPTSBub2RlIGFzIGEgZnVuY3Rpb24uXG5cdFx0Ly8gU3VwcG9ydDogUXRXZWIgPD0zLjguNSwgV2ViS2l0IDw9NTM0LjM0LCB3a2h0bWx0b3BkZiB0b29sIDw9MC4xMi41XG5cdFx0Ly8gUGx1cyBmb3Igb2xkIFdlYktpdCwgdHlwZW9mIHJldHVybnMgXCJmdW5jdGlvblwiIGZvciBIVE1MIGNvbGxlY3Rpb25zXG5cdFx0Ly8gKGUuZy4sIGB0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkaXZcIikgPT09IFwiZnVuY3Rpb25cImApLiAoZ2gtNDc1Nilcblx0XHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmoubm9kZVR5cGUgIT09IFwibnVtYmVyXCIgJiZcblx0XHRcdHR5cGVvZiBvYmouaXRlbSAhPT0gXCJmdW5jdGlvblwiO1xuXHR9O1xuXG5cbnZhciBpc1dpbmRvdyA9IGZ1bmN0aW9uIGlzV2luZG93KCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fTtcblxuXG52YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG5cblxuXG5cdHZhciBwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzID0ge1xuXHRcdHR5cGU6IHRydWUsXG5cdFx0c3JjOiB0cnVlLFxuXHRcdG5vbmNlOiB0cnVlLFxuXHRcdG5vTW9kdWxlOiB0cnVlXG5cdH07XG5cblx0ZnVuY3Rpb24gRE9NRXZhbCggY29kZSwgbm9kZSwgZG9jICkge1xuXHRcdGRvYyA9IGRvYyB8fCBkb2N1bWVudDtcblxuXHRcdHZhciBpLCB2YWwsXG5cdFx0XHRzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG5cdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdGlmICggbm9kZSApIHtcblx0XHRcdGZvciAoIGkgaW4gcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDY0KywgRWRnZSAxOCtcblx0XHRcdFx0Ly8gU29tZSBicm93c2VycyBkb24ndCBzdXBwb3J0IHRoZSBcIm5vbmNlXCIgcHJvcGVydHkgb24gc2NyaXB0cy5cblx0XHRcdFx0Ly8gT24gdGhlIG90aGVyIGhhbmQsIGp1c3QgdXNpbmcgYGdldEF0dHJpYnV0ZWAgaXMgbm90IGVub3VnaCBhc1xuXHRcdFx0XHQvLyB0aGUgYG5vbmNlYCBhdHRyaWJ1dGUgaXMgcmVzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHdoZW5ldmVyIGl0XG5cdFx0XHRcdC8vIGJlY29tZXMgYnJvd3NpbmctY29udGV4dCBjb25uZWN0ZWQuXG5cdFx0XHRcdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzIzNjlcblx0XHRcdFx0Ly8gU2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI25vbmNlLWF0dHJpYnV0ZXNcblx0XHRcdFx0Ly8gVGhlIGBub2RlLmdldEF0dHJpYnV0ZWAgY2hlY2sgd2FzIGFkZGVkIGZvciB0aGUgc2FrZSBvZlxuXHRcdFx0XHQvLyBgalF1ZXJ5Lmdsb2JhbEV2YWxgIHNvIHRoYXQgaXQgY2FuIGZha2UgYSBub25jZS1jb250YWluaW5nIG5vZGVcblx0XHRcdFx0Ly8gdmlhIGFuIG9iamVjdC5cblx0XHRcdFx0dmFsID0gbm9kZVsgaSBdIHx8IG5vZGUuZ2V0QXR0cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCBpICk7XG5cdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoIGksIHZhbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGRvYy5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIHRvVHlwZSggb2JqICkge1xuXHRpZiAoIG9iaiA9PSBudWxsICkge1xuXHRcdHJldHVybiBvYmogKyBcIlwiO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5IChmdW5jdGlvbmlzaCBSZWdFeHApXG5cdHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiA/XG5cdFx0Y2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCBcIm9iamVjdFwiIDpcblx0XHR0eXBlb2Ygb2JqO1xufVxuLyogZ2xvYmFsIFN5bWJvbCAqL1xuLy8gRGVmaW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEgZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9iYWxcbi8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBzZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlXG5cblxuXG52YXJcblx0dmVyc2lvbiA9IFwiMy42LjFcIixcblxuXHQvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeVxuXHRqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cblx0XHQvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCdcblx0XHQvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxlZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKVxuXHRcdHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7XG5cdH07XG5cbmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7XG5cblx0Ly8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZFxuXHRqcXVlcnk6IHZlcnNpb24sXG5cblx0Y29uc3RydWN0b3I6IGpRdWVyeSxcblxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcblx0bGVuZ3RoOiAwLFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxuXHQvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheVxuXHRnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7XG5cblx0XHQvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5XG5cdFx0aWYgKCBudW0gPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9uZSBlbGVtZW50IGZyb20gdGhlIHNldFxuXHRcdHJldHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHRlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjayApO1xuXHR9LFxuXG5cdG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdHNsaWNlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApO1xuXHR9LFxuXG5cdGZpcnN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggMCApO1xuXHR9LFxuXG5cdGxhc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAtMSApO1xuXHR9LFxuXG5cdGV2ZW46IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5LmdyZXAoIHRoaXMsIGZ1bmN0aW9uKCBfZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAoIGkgKyAxICkgJSAyO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdG9kZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkuZ3JlcCggdGhpcywgZnVuY3Rpb24oIF9lbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGkgJSAyO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdGVxOiBmdW5jdGlvbiggaSApIHtcblx0XHR2YXIgbGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRqID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApO1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSxcblx0XHRpID0gMSxcblx0XHRsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICggdHlwZW9mIHRhcmdldCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0ZGVlcCA9IHRhcmdldDtcblxuXHRcdC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTtcblx0XHRpKys7XG5cdH1cblxuXHQvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSlcblx0aWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSBcIm9iamVjdFwiICYmICFpc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmICggKCBvcHRpb25zID0gYXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkge1xuXG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdGNvcHkgPSBvcHRpb25zWyBuYW1lIF07XG5cblx0XHRcdFx0Ly8gUHJldmVudCBPYmplY3QucHJvdG90eXBlIHBvbGx1dGlvblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggbmFtZSA9PT0gXCJfX3Byb3RvX19cIiB8fCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29weSApIHx8XG5cdFx0XHRcdFx0KCBjb3B5SXNBcnJheSA9IEFycmF5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7XG5cdFx0XHRcdFx0c3JjID0gdGFyZ2V0WyBuYW1lIF07XG5cblx0XHRcdFx0XHQvLyBFbnN1cmUgcHJvcGVyIHR5cGUgZm9yIHRoZSBzb3VyY2UgdmFsdWVcblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICYmICFBcnJheS5pc0FycmF5KCBzcmMgKSApIHtcblx0XHRcdFx0XHRcdGNsb25lID0gW107XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggIWNvcHlJc0FycmF5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggc3JjICkgKSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHt9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgbmFtZTtcblxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBwcm92aWRlZCBjb250ZXh0OyBmYWxscyBiYWNrIHRvIHRoZSBnbG9iYWwgb25lXG5cdC8vIGlmIG5vdCBzcGVjaWZpZWQuXG5cdGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2RlLCBvcHRpb25zLCBkb2MgKSB7XG5cdFx0RE9NRXZhbCggY29kZSwgeyBub25jZTogb3B0aW9ucyAmJiBvcHRpb25zLm5vbmNlIH0sIGRvYyApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGZsYXQoIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cdFx0Y2xhc3MydHlwZVsgXCJbb2JqZWN0IFwiICsgbmFtZSArIFwiXVwiIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cdH0gKTtcblxuZnVuY3Rpb24gaXNBcnJheUxpa2UoIG9iaiApIHtcblxuXHQvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9ICEhb2JqICYmIFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IHRvVHlwZSggb2JqICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBvYmogKSB8fCBpc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHR5cGUgPT09IFwiYXJyYXlcIiB8fCBsZW5ndGggPT09IDAgfHxcblx0XHR0eXBlb2YgbGVuZ3RoID09PSBcIm51bWJlclwiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqO1xufVxudmFyIFNpenpsZSA9XG4vKiFcbiAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuNlxuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pzLmZvdW5kYXRpb24vXG4gKlxuICogRGF0ZTogMjAyMS0wMi0xNlxuICovXG4oIGZ1bmN0aW9uKCB3aW5kb3cgKSB7XG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRub25uYXRpdmVTZWxlY3RvckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoIHt9ICkuaGFzT3duUHJvcGVydHksXG5cdGFyciA9IFtdLFxuXHRwb3AgPSBhcnIucG9wLFxuXHRwdXNoTmF0aXZlID0gYXJyLnB1c2gsXG5cdHB1c2ggPSBhcnIucHVzaCxcblx0c2xpY2UgPSBhcnIuc2xpY2UsXG5cblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0WyBpIF0gPT09IGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gLTE7XG5cdH0sXG5cblx0Ym9vbGVhbnMgPSBcImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxcIiArXG5cdFx0XCJpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsXG5cblx0Ly8gUmVndWxhciBleHByZXNzaW9uc1xuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlXG5cdHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsXG5cblx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zeW50YXgtMy8jaWRlbnQtdG9rZW4tZGlhZ3JhbVxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXFtcXFxcZGEtZkEtRl17MSw2fVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XCI/fFxcXFxcXFxcW15cXFxcclxcXFxuXFxcXGZdfFtcXFxcdy1dfFteXFwwLVxcXFx4N2ZdKStcIixcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XCIgKyB3aGl0ZXNwYWNlICtcblxuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblxuXHRcdC8vIFwiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XVxuXHRcdC8vIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJlIDRdXCJcblx0XHRcIiooPzonKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCJ8KFwiICsgaWRlbnRpZmllciArIFwiKSl8KVwiICtcblx0XHR3aGl0ZXNwYWNlICsgXCIqXFxcXF1cIixcblxuXHRwc2V1ZG9zID0gXCI6KFwiICsgaWRlbnRpZmllciArIFwiKSg/OlxcXFwoKFwiICtcblxuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cblx0XHQvLyAyLiBzaW1wbGUgKGNhcHR1cmUgNilcblx0XHRcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpW1xcXFxdXXxcIiArIGF0dHJpYnV0ZXMgKyBcIikqKXxcIiArXG5cblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgK1xuXHRcdHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiKlwiICksXG5cdHJkZXNjZW5kID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwifD5cIiApLFxuXG5cdHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksXG5cdHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBpZGVudGlmaWVyICsgXCIkXCIgKSxcblxuXHRtYXRjaEV4cHIgPSB7XG5cdFx0XCJJRFwiOiBuZXcgUmVnRXhwKCBcIl4jKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJDTEFTU1wiOiBuZXcgUmVnRXhwKCBcIl5cXFxcLihcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiVEFHXCI6IG5ldyBSZWdFeHAoIFwiXihcIiArIGlkZW50aWZpZXIgKyBcInxbKl0pXCIgKSxcblx0XHRcIkFUVFJcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBhdHRyaWJ1dGVzICksXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXG5cdFx0XCJDSElMRFwiOiBuZXcgUmVnRXhwKCBcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooXFxcXGQrKXwpKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfClcIiwgXCJpXCIgKSxcblx0XHRcImJvb2xcIjogbmV3IFJlZ0V4cCggXCJeKD86XCIgKyBib29sZWFucyArIFwiKSRcIiwgXCJpXCIgKSxcblxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooKD86LVxcXFxkKT9cXFxcZCopXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KSg/PVteLV18JClcIiwgXCJpXCIgKVxuXHR9LFxuXG5cdHJodG1sID0gL0hUTUwkL2ksXG5cdHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyaGVhZGVyID0gL15oXFxkJC9pLFxuXG5cdHJuYXRpdmUgPSAvXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLFxuXG5cdC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9yc1xuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXG5cblx0cnNpYmxpbmcgPSAvWyt+XS8sXG5cblx0Ly8gQ1NTIGVzY2FwZXNcblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xuXHRydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCBcIlxcXFxcXFxcW1xcXFxkYS1mQS1GXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fFxcXFxcXFxcKFteXFxcXHJcXFxcblxcXFxmXSlcIiwgXCJnXCIgKSxcblx0ZnVuZXNjYXBlID0gZnVuY3Rpb24oIGVzY2FwZSwgbm9uSGV4ICkge1xuXHRcdHZhciBoaWdoID0gXCIweFwiICsgZXNjYXBlLnNsaWNlKCAxICkgLSAweDEwMDAwO1xuXG5cdFx0cmV0dXJuIG5vbkhleCA/XG5cblx0XHRcdC8vIFN0cmlwIHRoZSBiYWNrc2xhc2ggcHJlZml4IGZyb20gYSBub24taGV4IGVzY2FwZSBzZXF1ZW5jZVxuXHRcdFx0bm9uSGV4IDpcblxuXHRcdFx0Ly8gUmVwbGFjZSBhIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSB3aXRoIHRoZSBlbmNvZGVkIFVuaWNvZGUgY29kZSBwb2ludFxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMStcblx0XHRcdC8vIEZvciB2YWx1ZXMgb3V0c2lkZSB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lIChCTVApLCBtYW51YWxseSBjb25zdHJ1Y3QgYVxuXHRcdFx0Ly8gc3Vycm9nYXRlIHBhaXJcblx0XHRcdGhpZ2ggPCAwID9cblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4MTAwMDAgKSA6XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApO1xuXHR9LFxuXG5cdC8vIENTUyBzdHJpbmcvaWRlbnRpZmllciBzZXJpYWxpemF0aW9uXG5cdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tc1xuXHRyY3NzZXNjYXBlID0gLyhbXFwwLVxceDFmXFx4N2ZdfF4tP1xcZCl8Xi0kfFteXFwwLVxceDFmXFx4N2YtXFx1RkZGRlxcdy1dL2csXG5cdGZjc3Nlc2NhcGUgPSBmdW5jdGlvbiggY2gsIGFzQ29kZVBvaW50ICkge1xuXHRcdGlmICggYXNDb2RlUG9pbnQgKSB7XG5cblx0XHRcdC8vIFUrMDAwMCBOVUxMIGJlY29tZXMgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUlxuXHRcdFx0aWYgKCBjaCA9PT0gXCJcXDBcIiApIHtcblx0XHRcdFx0cmV0dXJuIFwiXFx1RkZGRFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb250cm9sIGNoYXJhY3RlcnMgYW5kIChkZXBlbmRlbnQgdXBvbiBwb3NpdGlvbikgbnVtYmVycyBnZXQgZXNjYXBlZCBhcyBjb2RlIHBvaW50c1xuXHRcdFx0cmV0dXJuIGNoLnNsaWNlKCAwLCAtMSApICsgXCJcXFxcXCIgK1xuXHRcdFx0XHRjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyBcIiBcIjtcblx0XHR9XG5cblx0XHQvLyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkXG5cdFx0cmV0dXJuIFwiXFxcXFwiICsgY2g7XG5cdH0sXG5cblx0Ly8gVXNlZCBmb3IgaWZyYW1lc1xuXHQvLyBTZWUgc2V0RG9jdW1lbnQoKVxuXHQvLyBSZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSBcIlBlcm1pc3Npb24gRGVuaWVkXCJcblx0Ly8gZXJyb3IgaW4gSUVcblx0dW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHNldERvY3VtZW50KCk7XG5cdH0sXG5cblx0aW5EaXNhYmxlZEZpZWxkc2V0ID0gYWRkQ29tYmluYXRvcihcblx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJmaWVsZHNldFwiO1xuXHRcdH0sXG5cdFx0eyBkaXI6IFwicGFyZW50Tm9kZVwiLCBuZXh0OiBcImxlZ2VuZFwiIH1cblx0KTtcblxuLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5vZGVMaXN0IClcbnRyeSB7XG5cdHB1c2guYXBwbHkoXG5cdFx0KCBhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApICksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0YXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5ub2RlVHlwZTtcbn0gY2F0Y2ggKCBlICkge1xuXHRwdXNoID0geyBhcHBseTogYXJyLmxlbmd0aCA/XG5cblx0XHQvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHB1c2hOYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbCggZWxzICkgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0Ly8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3RoXG5cdFx0XHR3aGlsZSAoICggdGFyZ2V0WyBqKysgXSA9IGVsc1sgaSsrIF0gKSApIHt9XG5cdFx0XHR0YXJnZXQubGVuZ3RoID0gaiAtIDE7XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgbSwgaSwgZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBzLCBuZXdTZWxlY3Rvcixcblx0XHRuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQsXG5cblx0XHQvLyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0IGRlZmF1bHRzIHRvIGRvY3VtZW50XG5cdFx0bm9kZVR5cGUgPSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHRcblx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgfHwgIXNlbGVjdG9yIHx8XG5cdFx0bm9kZVR5cGUgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgJiYgbm9kZVR5cGUgIT09IDExICkge1xuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwgZG9jdW1lbnRzXG5cdGlmICggIXNlZWQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0XHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcblxuXHRcdGlmICggZG9jdW1lbnRJc0hUTUwgKSB7XG5cblx0XHRcdC8vIElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2ltcGxlLCB0cnkgdXNpbmcgYSBcImdldCpCeSpcIiBET00gbWV0aG9kXG5cdFx0XHQvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21lbnQgY29udGV4dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3QpXG5cdFx0XHRpZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAoIG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApICkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAoIG0gPSBtYXRjaFsgMSBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb2N1bWVudCBjb250ZXh0XG5cdFx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdGlmICggKCBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKCBlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApICkgJiZcblx0XHRcdFx0XHRcdFx0Y29udGFpbnMoIGNvbnRleHQsIGVsZW0gKSAmJlxuXHRcdFx0XHRcdFx0XHRlbGVtLmlkID09PSBtICkge1xuXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHlwZSBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsgMiBdICkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0XHQvLyBDbGFzcyBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCAoIG0gPSBtYXRjaFsgMyBdICkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmXG5cdFx0XHRcdFx0Y29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsXG5cdFx0XHRpZiAoIHN1cHBvcnQucXNhICYmXG5cdFx0XHRcdCFub25uYXRpdmVTZWxlY3RvckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF0gJiZcblx0XHRcdFx0KCAhcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSApICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgOCBvbmx5XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzXG5cdFx0XHRcdCggbm9kZVR5cGUgIT09IDEgfHwgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkgKSB7XG5cblx0XHRcdFx0bmV3U2VsZWN0b3IgPSBzZWxlY3Rvcjtcblx0XHRcdFx0bmV3Q29udGV4dCA9IGNvbnRleHQ7XG5cblx0XHRcdFx0Ly8gcVNBIGNvbnNpZGVycyBlbGVtZW50cyBvdXRzaWRlIGEgc2NvcGluZyByb290IHdoZW4gZXZhbHVhdGluZyBjaGlsZCBvclxuXHRcdFx0XHQvLyBkZXNjZW5kYW50IGNvbWJpbmF0b3JzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LlxuXHRcdFx0XHQvLyBJbiBzdWNoIGNhc2VzLCB3ZSB3b3JrIGFyb3VuZCB0aGUgYmVoYXZpb3IgYnkgcHJlZml4aW5nIGV2ZXJ5IHNlbGVjdG9yIGluIHRoZVxuXHRcdFx0XHQvLyBsaXN0IHdpdGggYW4gSUQgc2VsZWN0b3IgcmVmZXJlbmNpbmcgdGhlIHNjb3BlIGNvbnRleHQuXG5cdFx0XHRcdC8vIFRoZSB0ZWNobmlxdWUgaGFzIHRvIGJlIHVzZWQgYXMgd2VsbCB3aGVuIGEgbGVhZGluZyBjb21iaW5hdG9yIGlzIHVzZWRcblx0XHRcdFx0Ly8gYXMgc3VjaCBzZWxlY3RvcnMgYXJlIG5vdCByZWNvZ25pemVkIGJ5IHF1ZXJ5U2VsZWN0b3JBbGwuXG5cdFx0XHRcdC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHRlY2huaXF1ZS5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdCggcmRlc2NlbmQudGVzdCggc2VsZWN0b3IgKSB8fCByY29tYmluYXRvcnMudGVzdCggc2VsZWN0b3IgKSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2VsZWN0b3JzXG5cdFx0XHRcdFx0bmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8XG5cdFx0XHRcdFx0XHRjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gV2UgY2FuIHVzZSA6c2NvcGUgaW5zdGVhZCBvZiB0aGUgSUQgaGFjayBpZiB0aGUgYnJvd3NlclxuXHRcdFx0XHRcdC8vIHN1cHBvcnRzIGl0ICYgaWYgd2UncmUgbm90IGNoYW5naW5nIHRoZSBjb250ZXh0LlxuXHRcdFx0XHRcdGlmICggbmV3Q29udGV4dCAhPT0gY29udGV4dCB8fCAhc3VwcG9ydC5zY29wZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRcdGlmICggKCBuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkgKSApIHtcblx0XHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRleHQuc2V0QXR0cmlidXRlKCBcImlkXCIsICggbmlkID0gZXhwYW5kbyApICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbIGkgXSA9ICggbmlkID8gXCIjXCIgKyBuaWQgOiBcIjpzY29wZVwiICkgKyBcIiBcIiArXG5cdFx0XHRcdFx0XHRcdHRvU2VsZWN0b3IoIGdyb3Vwc1sgaSBdICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSggc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRpZiAoIG5pZCA9PT0gZXhwYW5kbyApIHtcblx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCBcImlkXCIgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIFVzZSAoa2V5ICsgXCIgXCIpIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElzc3VlICMxNTcpXG5cdFx0aWYgKCBrZXlzLnB1c2goIGtleSArIFwiIFwiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkge1xuXG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoIGNhY2hlWyBrZXkgKyBcIiBcIiBdID0gdmFsdWUgKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJmaWVsZHNldFwiICk7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gISFmbiggZWwgKTtcblx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0XG5cdFx0aWYgKCBlbC5wYXJlbnROb2RlICkge1xuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWwgKTtcblx0XHR9XG5cblx0XHQvLyByZWxlYXNlIG1lbW9yeSBpbiBJRVxuXHRcdGVsID0gbnVsbDtcblx0fVxufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNhbWUgaGFuZGxlciBmb3IgYWxsIG9mIHRoZSBzcGVjaWZpZWQgYXR0cnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBhdHRycyBQaXBlLXNlcGFyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgVGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgYXBwbGllZFxuICovXG5mdW5jdGlvbiBhZGRIYW5kbGUoIGF0dHJzLCBoYW5kbGVyICkge1xuXHR2YXIgYXJyID0gYXR0cnMuc3BsaXQoIFwifFwiICksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbIGkgXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGN1ci5uZXh0U2libGluZyApICkge1xuXHRcdFx0aWYgKCBjdXIgPT09IGIgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYSA/IDEgOiAtMTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGlucHV0IHR5cGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9uc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuICggbmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIgKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRpbkRpc2FibGVkRmllbGRzZXQoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblxuXHRcdC8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS5cblx0XHQvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3Rcblx0XHQvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS5cblx0XHR9IGVsc2UgaWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZFxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGFyZ3VtZW50ICkge1xuXHRcdGFyZ3VtZW50ID0gK2FyZ3VtZW50O1xuXHRcdHJldHVybiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0dmFyIGosXG5cdFx0XHRcdG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksXG5cdFx0XHRcdGkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoO1xuXG5cdFx0XHQvLyBNYXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXNcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIHNlZWRbICggaiA9IG1hdGNoSW5kZXhlc1sgaSBdICkgXSApIHtcblx0XHRcdFx0XHRzZWVkWyBqIF0gPSAhKCBtYXRjaGVzWyBqIF0gPSBzZWVkWyBqIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSApO1xufVxuXG4vKipcbiAqIENoZWNrcyBhIG5vZGUgZm9yIHZhbGlkaXR5IGFzIGEgU2l6emxlIGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3Q9fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7RWxlbWVudHxPYmplY3R8Qm9vbGVhbn0gVGhlIGlucHV0IG5vZGUgaWYgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGEgZmFsc3kgdmFsdWVcbiAqL1xuZnVuY3Rpb24gdGVzdENvbnRleHQoIGNvbnRleHQgKSB7XG5cdHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnRleHQ7XG59XG5cbi8vIEV4cG9zZSBzdXBwb3J0IHZhcnMgZm9yIGNvbnZlbmllbmNlXG5zdXBwb3J0ID0gU2l6emxlLnN1cHBvcnQgPSB7fTtcblxuLyoqXG4gKiBEZXRlY3RzIFhNTCBub2Rlc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBlbGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGVcbiAqL1xuaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5hbWVzcGFjZSA9IGVsZW0gJiYgZWxlbS5uYW1lc3BhY2VVUkksXG5cdFx0ZG9jRWxlbSA9IGVsZW0gJiYgKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApLmRvY3VtZW50RWxlbWVudDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PThcblx0Ly8gQXNzdW1lIEhUTUwgd2hlbiBkb2N1bWVudEVsZW1lbnQgZG9lc24ndCB5ZXQgZXhpc3QsIHN1Y2ggYXMgaW5zaWRlIGxvYWRpbmcgaWZyYW1lc1xuXHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvNDgzM1xuXHRyZXR1cm4gIXJodG1sLnRlc3QoIG5hbWVzcGFjZSB8fCBkb2NFbGVtICYmIGRvY0VsZW0ubm9kZU5hbWUgfHwgXCJIVE1MXCIgKTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRpZiAoIGRvYyA9PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXNcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTIgLSAxOCtcblx0Ly8gQWNjZXNzaW5nIGlmcmFtZSBkb2N1bWVudHMgYWZ0ZXIgdW5sb2FkIHRocm93cyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KVxuXHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRpZiAoIHByZWZlcnJlZERvYyAhPSBkb2N1bWVudCAmJlxuXHRcdCggc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcgKSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gMTErLCBFZGdlIDEyIC0gMTgrLCBDaHJvbWUgPD0xNiAtIDI1IG9ubHksIEZpcmVmb3ggPD0zLjYgLSAzMSBvbmx5LFxuXHQvLyBTYWZhcmkgNCAtIDUgb25seSwgT3BlcmEgPD0xMS42IC0gMTIueCBvbmx5XG5cdC8vIElFL0VkZ2UgJiBvbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IHRoZSA6c2NvcGUgcHNldWRvLWNsYXNzLlxuXHQvLyBTdXBwb3J0OiBTYWZhcmkgNi4wIG9ubHlcblx0Ly8gU2FmYXJpIDYuMCBzdXBwb3J0cyA6c2NvcGUgYnV0IGl0J3MgYW4gYWxpYXMgb2YgOnJvb3QgdGhlcmUuXG5cdHN1cHBvcnQuc2NvcGUgPSBhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblx0XHRyZXR1cm4gdHlwZW9mIGVsLnF1ZXJ5U2VsZWN0b3JBbGwgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdCFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIjpzY29wZSBmaWVsZHNldCBkaXZcIiApLmxlbmd0aDtcblx0fSApO1xuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZSggXCJjbGFzc05hbWVcIiApO1xuXHR9ICk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIFwiXCIgKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwiKlwiICkubGVuZ3RoO1xuXHR9ICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbztcblx0XHRyZXR1cm4gIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lIHx8ICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0aDtcblx0fSApO1xuXG5cdC8vIElEIGZpbHRlciBhbmQgZmluZFxuXHRpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHtcblx0XHRFeHByLmZpbHRlclsgXCJJRFwiIF0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcImlkXCIgKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFsgXCJJRFwiIF0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdHJldHVybiBlbGVtID8gWyBlbGVtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdEV4cHIuZmlsdGVyWyBcIklEXCIgXSA9ICBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBcImlkXCIgKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbIFwiSURcIiBdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIG5vZGUsIGksIGVsZW1zLFxuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXG5cdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdC8vIFZlcmlmeSB0aGUgaWQgYXR0cmlidXRlXG5cdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEZhbGwgYmFjayBvbiBnZXRFbGVtZW50c0J5TmFtZVxuXHRcdFx0XHRcdGVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggaWQgKTtcblx0XHRcdFx0XHRpID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1zWyBpKysgXSApICkge1xuXHRcdFx0XHRcdFx0bm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8vIFRhZ1xuXHRFeHByLmZpbmRbIFwiVEFHXCIgXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cblx0XHRcdFx0Ly8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvb1xuXHRcdFx0XHRyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHNcblx0XHRcdGlmICggdGFnID09PSBcIipcIiApIHtcblx0XHRcdFx0d2hpbGUgKCAoIGVsZW0gPSByZXN1bHRzWyBpKysgXSApICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kWyBcIkNMQVNTXCIgXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkge1xuXHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0XG5cblx0Ly8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSlcblx0cmJ1Z2d5TWF0Y2hlcyA9IFtdO1xuXG5cdC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpXG5cdC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvclxuXHQvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lXG5cdC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhlIHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yXG5cdC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoIHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkgKSApIHtcblxuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblxuXHRcdFx0dmFyIGlucHV0O1xuXG5cdFx0XHQvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3NlXG5cdFx0XHQvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4cGxpY2l0bHlcblx0XHRcdC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0cmlidXRlLFxuXHRcdFx0Ly8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2hcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pbm5lckhUTUwgPSBcIjxhIGlkPSdcIiArIGV4cGFuZG8gKyBcIic+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGlkPSdcIiArIGV4cGFuZG8gKyBcIi1cXHJcXFxcJyBtc2FsbG93Y2FwdHVyZT0nJz5cIiArXG5cdFx0XHRcdFwiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4LCBPcGVyYSAxMS0xMi4xNlxuXHRcdFx0Ly8gTm90aGluZyBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBlbXB0eSBzdHJpbmdzIGZvbGxvdyBePSBvciAkPSBvciAqPVxuXHRcdFx0Ly8gVGhlIHRlc3QgYXR0cmlidXRlIG11c3QgYmUgdW5rbm93biBpbiBPcGVyYSBidXQgXCJzYWZlXCIgZm9yIFdpblJUXG5cdFx0XHQvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbCggXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBhbmQgXCJ2YWx1ZVwiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW3NlbGVjdGVkXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIn49XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE1IC0gMTgrXG5cdFx0XHQvLyBJRSAxMS9FZGdlIGRvbid0IGZpbmQgZWxlbWVudHMgb24gYSBgW25hbWU9JyddYCBxdWVyeSBpbiBzb21lIGNhc2VzLlxuXHRcdFx0Ly8gQWRkaW5nIGEgdGVtcG9yYXJ5IGF0dHJpYnV0ZSB0byB0aGUgZG9jdW1lbnQgYmVmb3JlIHRoZSBzZWxlY3Rpb24gd29ya3Ncblx0XHRcdC8vIGFyb3VuZCB0aGUgaXNzdWUuXG5cdFx0XHQvLyBJbnRlcmVzdGluZ2x5LCBJRSAxMCAmIG9sZGVyIGRvbid0IHNlZW0gdG8gaGF2ZSB0aGUgaXNzdWUuXG5cdFx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJcIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICk7XG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltuYW1lPScnXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIio9XCIgK1xuXHRcdFx0XHRcdHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIjpjaGVja2VkXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjpjaGVja2VkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCtcblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTFcblx0XHRcdC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiYSNcIiArIGV4cGFuZG8gKyBcIisqXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIi4jLitbK35dXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTMuNiAtIDUgb25seVxuXHRcdFx0Ly8gT2xkIEZpcmVmb3ggZG9lc24ndCB0aHJvdyBvbiBhIGJhZGx5LWVzY2FwZWQgaWRlbnRpZmllci5cblx0XHRcdGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiXFxcXFxcZlwiICk7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbXFxcXHJcXFxcblxcXFxmXVwiICk7XG5cdFx0fSApO1xuXG5cdFx0YXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzXG5cdFx0XHQvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnRcblx0XHRcdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbCggXCJbbmFtZT1kXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIjplbmFibGVkXCIgKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdFx0Ly8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRzZXRzXG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbCggXCI6ZGlzYWJsZWRcIiApLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBPcGVyYSAxMCAtIDExIG9ubHlcblx0XHRcdC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zXG5cdFx0XHRlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIiosOnhcIiApO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiLC4qOlwiICk7XG5cdFx0fSApO1xuXHR9XG5cblx0aWYgKCAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAoIG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvciApICkgKSApIHtcblxuXHRcdGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3Jcblx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXG5cdFx0XHRzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgXCIqXCIgKTtcblxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvblxuXHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxuXHRcdFx0bWF0Y2hlcy5jYWxsKCBlbCwgXCJbcyE9JyddOnhcIiApO1xuXHRcdFx0cmJ1Z2d5TWF0Y2hlcy5wdXNoKCBcIiE9XCIsIHBzZXVkb3MgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKCBcInxcIiApICk7XG5cdHJidWdneU1hdGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVzLmpvaW4oIFwifFwiICkgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVzaXZlXG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkgKTtcblx0XHR9IDpcblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdGlmICggYiApIHtcblx0XHRcdFx0d2hpbGUgKCAoIGIgPSBiLnBhcmVudE5vZGUgKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/XG5cdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5IGFyZSBkaXNjb25uZWN0ZWRcblx0XHRcdDE7XG5cblx0XHQvLyBEaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRpZiAoIGNvbXBhcmUgJiAxIHx8XG5cdFx0XHQoICFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUgKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdFx0aWYgKCBhID09IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PSBwcmVmZXJyZWREb2MgJiZcblx0XHRcdFx0Y29udGFpbnMoIHByZWZlcnJlZERvYywgYSApICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0XHRpZiAoIGIgPT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09IHByZWZlcnJlZERvYyAmJlxuXHRcdFx0XHRjb250YWlucyggcHJlZmVycmVkRG9jLCBiICkgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWludGFpbiBvcmlnaW5hbCBvcmRlclxuXHRcdFx0cmV0dXJuIHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tcGFyZSAmIDQgPyAtMSA6IDE7XG5cdH0gOlxuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5cdFx0XHRyZXR1cm4gYSA9PSBkb2N1bWVudCA/IC0xIDpcblx0XHRcdFx0YiA9PSBkb2N1bWVudCA/IDEgOlxuXHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIGVxZXFlcSAqL1xuXHRcdFx0XHRhdXAgPyAtMSA6XG5cdFx0XHRcdGJ1cCA/IDEgOlxuXHRcdFx0XHRzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHQvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVja1xuXHRcdH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkge1xuXHRcdFx0cmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uXG5cdFx0Y3VyID0gYTtcblx0XHR3aGlsZSAoICggY3VyID0gY3VyLnBhcmVudE5vZGUgKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKCBjdXIgPSBjdXIucGFyZW50Tm9kZSApICkge1xuXHRcdFx0YnAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3lcblx0XHR3aGlsZSAoIGFwWyBpIF0gPT09IGJwWyBpIF0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXG5cdFx0XHQvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3Jcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbIGkgXSwgYnBbIGkgXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5cdFx0XHRhcFsgaSBdID09IHByZWZlcnJlZERvYyA/IC0xIDpcblx0XHRcdGJwWyBpIF0gPT0gcHJlZmVycmVkRG9jID8gMSA6XG5cdFx0XHQvKiBlc2xpbnQtZW5hYmxlIGVxZXFlcSAqL1xuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0IW5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGVbIGV4cHIgKyBcIiBcIiBdICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblxuXHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRub25uYXRpdmVTZWxlY3RvckNhY2hlKCBleHByLCB0cnVlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHR9XG5cdHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApO1xufTtcblxuU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblxuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cblx0XHQvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNylcblx0XHR2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRmbiggZWxlbSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOlxuXHRcdFx0dW5kZWZpbmVkO1xuXG5cdHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/XG5cdFx0dmFsIDpcblx0XHRzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNIVE1MID9cblx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOlxuXHRcdFx0KCB2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSApICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7XG5cdHJldHVybiAoIHNlbCArIFwiXCIgKS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG59O1xuXG5TaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkge1xuXHR0aHJvdyBuZXcgRXJyb3IoIFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIgKyBtc2cgKTtcbn07XG5cbi8qKlxuICogRG9jdW1lbnQgc29ydGluZyBhbmQgcmVtb3ZpbmcgZHVwbGljYXRlc1xuICogQHBhcmFtIHtBcnJheUxpa2V9IHJlc3VsdHNcbiAqL1xuU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHtcblx0dmFyIGVsZW0sXG5cdFx0ZHVwbGljYXRlcyA9IFtdLFxuXHRcdGogPSAwLFxuXHRcdGkgPSAwO1xuXG5cdC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2Vcblx0aGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcztcblx0c29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7XG5cdHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7XG5cblx0aWYgKCBoYXNEdXBsaWNhdGUgKSB7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSByZXN1bHRzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXG5cdFx0Ly8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXlcblx0XHR3aGlsZSAoICggbm9kZSA9IGVsZW1bIGkrKyBdICkgKSB7XG5cblx0XHRcdC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzXG5cdFx0XHRyZXQgKz0gZ2V0VGV4dCggbm9kZSApO1xuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkge1xuXG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblxuXHQvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXNcblxuXHRyZXR1cm4gcmV0O1xufTtcblxuRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7XG5cblx0Ly8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyXG5cdGNhY2hlTGVuZ3RoOiA1MCxcblxuXHRjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbixcblxuXHRtYXRjaDogbWF0Y2hFeHByLFxuXG5cdGF0dHJIYW5kbGU6IHt9LFxuXG5cdGZpbmQ6IHt9LFxuXG5cdHJlbGF0aXZlOiB7XG5cdFx0XCI+XCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIiBcIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiIH0sXG5cdFx0XCIrXCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiflwiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiB9XG5cdH0sXG5cblx0cHJlRmlsdGVyOiB7XG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdG1hdGNoWyAxIF0gPSBtYXRjaFsgMSBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFsgMyBdID0gKCBtYXRjaFsgMyBdIHx8IG1hdGNoWyA0IF0gfHxcblx0XHRcdFx0bWF0Y2hbIDUgXSB8fCBcIlwiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsgMiBdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWyAzIF0gPSBcIiBcIiArIG1hdGNoWyAzIF0gKyBcIiBcIjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbIDEgXSA9IG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsgMSBdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbIDMgXSApIHtcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWyAwIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWyA0IF0gPSArKCBtYXRjaFsgNCBdID9cblx0XHRcdFx0XHRtYXRjaFsgNSBdICsgKCBtYXRjaFsgNiBdIHx8IDEgKSA6XG5cdFx0XHRcdFx0MiAqICggbWF0Y2hbIDMgXSA9PT0gXCJldmVuXCIgfHwgbWF0Y2hbIDMgXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWyA1IF0gPSArKCAoIG1hdGNoWyA3IF0gKyBtYXRjaFsgOCBdICkgfHwgbWF0Y2hbIDMgXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHRcdC8vIG90aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbIDMgXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbIDYgXSAmJiBtYXRjaFsgMiBdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwclsgXCJDSElMRFwiIF0udGVzdCggbWF0Y2hbIDAgXSApICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXNcblx0XHRcdGlmICggbWF0Y2hbIDMgXSApIHtcblx0XHRcdFx0bWF0Y2hbIDIgXSA9IG1hdGNoWyA0IF0gfHwgbWF0Y2hbIDUgXSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KCBleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSApICYmXG5cblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdCggZXhjZXNzID0gdW5xdW90ZWQuaW5kZXhPZiggXCIpXCIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoICkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbIDAgXSA9IG1hdGNoWyAwIF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsgMiBdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0xBU1NcIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHtcblx0XHRcdHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgXCIgXCIgXTtcblxuXHRcdFx0cmV0dXJuIHBhdHRlcm4gfHxcblx0XHRcdFx0KCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XHRcdFwiKVwiICsgY2xhc3NOYW1lICsgXCIoXCIgKyB3aGl0ZXNwYWNlICsgXCJ8JClcIiApICkgJiYgY2xhc3NDYWNoZShcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwYXR0ZXJuLnRlc3QoXG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8XG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggXCJjbGFzc1wiICkgfHxcblx0XHRcdFx0XHRcdFx0XHRcIlwiXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gKTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBfYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkge1xuXHRcdFx0dmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gXCJudGhcIixcblx0XHRcdFx0Zm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09IFwibGFzdFwiLFxuXHRcdFx0XHRvZlR5cGUgPSB3aGF0ID09PSBcIm9mLXR5cGVcIjtcblxuXHRcdFx0cmV0dXJuIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgP1xuXG5cdFx0XHRcdC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobilcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuICEhZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0XHR9IDpcblxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgX2NvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsXG5cdFx0XHRcdFx0XHRkaWZmID0gZmFsc2U7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKCBub2RlID0gbm9kZVsgZGlyIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0bm9kZSA9IHBhcmVudDtcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAoIG5vZGVbIGV4cGFuZG8gXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQoIG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdCggZGlmZiA9IG5vZGVJbmRleCA9IDAgKSB8fCBzdGFydC5wb3AoKSApICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKCBub2RlWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoIG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXg7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pXG5cdFx0XHRcdFx0XHRcdC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdFx0aWYgKCBkaWZmID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoIGRpZmYgPSBub2RlSW5kZXggPSAwICkgfHwgc3RhcnQucG9wKCkgKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQrK2RpZmYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCggbm9kZVsgZXhwYW5kbyBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXG5cdFx0XHQvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmVcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXNcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXG5cdFx0XHQvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zXG5cdFx0XHR2YXIgYXJncyxcblx0XHRcdFx0Zm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiICsgcHNldWRvICk7XG5cblx0XHRcdC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXRcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG5cdFx0XHQvLyBqdXN0IGFzIFNpenpsZSBkb2VzXG5cdFx0XHRpZiAoIGZuWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHJldHVybiBmbiggYXJndW1lbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzXG5cdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCBcIlwiLCBhcmd1bWVudCBdO1xuXHRcdFx0XHRyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID9cblx0XHRcdFx0XHRtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFsgaSBdICk7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkWyBpIF0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZuO1xuXHRcdH1cblx0fSxcblxuXHRwc2V1ZG9zOiB7XG5cblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblxuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIF9jb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZWxlbSA9IHVubWF0Y2hlZFsgaSBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGkgXSA9ICEoIG1hdGNoZXNbIGkgXSA9IGVsZW0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBfY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WyAwIF0gPSBlbGVtO1xuXHRcdFx0XHRcdG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTtcblxuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbIDAgXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0gKSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XG5cdFx0XHR9O1xuXHRcdH0gKSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0gKSxcblxuXHRcdC8vIFwiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvclxuXHRcdC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlXG5cdFx0Ly8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQyxcblx0XHQvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IFwiLVwiLlxuXHRcdC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LlxuXHRcdC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuXCJcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvXG5cdFx0XCJsYW5nXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7XG5cblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QoIGxhbmcgfHwgXCJcIiApICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKCBlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggXCJ4bWw6bGFuZ1wiICkgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoIFwibGFuZ1wiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoICggZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSApICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuXHRcdFx0XHQoICFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpICkgJiZcblx0XHRcdFx0ISEoIGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXggKTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLFxuXHRcdFwiZGlzYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCApIHx8XG5cdFx0XHRcdCggbm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkICk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gQ29udGVudHNcblx0XHRcImVtcHR5XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbIFwiZW1wdHlcIiBdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKCBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidHlwZVwiICkgKSA9PSBudWxsIHx8XG5cdFx0XHRcdFx0YXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9ICksXG5cblx0XHRcImxhc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIF9tYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9ICksXG5cblx0XHRcImVxXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBfbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0gKSxcblxuXHRcdFwiZXZlblwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSApLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAxO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0gKSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID9cblx0XHRcdFx0YXJndW1lbnQgKyBsZW5ndGggOlxuXHRcdFx0XHRhcmd1bWVudCA+IGxlbmd0aCA/XG5cdFx0XHRcdFx0bGVuZ3RoIDpcblx0XHRcdFx0XHRhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9ICksXG5cblx0XHRcImd0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0gKVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbIFwibnRoXCIgXSA9IEV4cHIucHNldWRvc1sgXCJlcVwiIF07XG5cbi8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zXG5mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApO1xufVxuZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTtcbn1cblxuLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzXG5mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge31cbnNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zO1xuRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTtcblxudG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSApIHtcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXG5cdFx0c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycyxcblx0XHRjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCBjYWNoZWQgKSB7XG5cdFx0cmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTtcblx0fVxuXG5cdHNvRmFyID0gc2VsZWN0b3I7XG5cdGdyb3VwcyA9IFtdO1xuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XG5cblx0d2hpbGUgKCBzb0ZhciApIHtcblxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cblx0XHRpZiAoICFtYXRjaGVkIHx8ICggbWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSApICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFsgMCBdLmxlbmd0aCApIHx8IHNvRmFyO1xuXHRcdFx0fVxuXHRcdFx0Z3JvdXBzLnB1c2goICggdG9rZW5zID0gW10gKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAoIG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkgKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goIHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWyAwIF0ucmVwbGFjZSggcnRyaW0sIFwiIFwiIClcblx0XHRcdH0gKTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoICggbWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApICkgJiYgKCAhcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdCggbWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkgKSApICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goIHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFtYXRjaGVkICkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xuXHQvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnNcblx0cmV0dXJuIHBhcnNlT25seSA/XG5cdFx0c29GYXIubGVuZ3RoIDpcblx0XHRzb0ZhciA/XG5cdFx0XHRTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbIGkgXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRza2lwID0gY29tYmluYXRvci5uZXh0LFxuXHRcdGtleSA9IHNraXAgfHwgZGlyLFxuXHRcdGNoZWNrTm9uRWxlbWVudHMgPSBiYXNlICYmIGtleSA9PT0gXCJwYXJlbnROb2RlXCIsXG5cdFx0ZG9uZU5hbWUgPSBkb25lKys7XG5cblx0cmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgP1xuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGNvbWJpbmF0b3IgY2FjaGluZ1xuXHRcdFx0aWYgKCB4bWwgKSB7XG5cdFx0XHRcdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoIGVsZW1bIGV4cGFuZG8gXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRpZiAoIHNraXAgJiYgc2tpcCA9PT0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoICggb2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0gKSAmJlxuXHRcdFx0XHRcdFx0XHRvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoIG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIGtleSBdID0gbmV3Q2FjaGU7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nXG5cdFx0XHRcdFx0XHRcdGlmICggKCBuZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1sgaSBdKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gOlxuXHRcdG1hdGNoZXJzWyAwIF07XG59XG5cbmZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yLCBjb250ZXh0cywgcmVzdWx0cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGNvbnRleHRzLmxlbmd0aDtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbIGkgXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKCBlbGVtID0gdW5tYXRjaGVkWyBpIF0gKSApIHtcblx0XHRcdGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRpZiAoIG1hcHBlZCApIHtcblx0XHRcdFx0XHRtYXAucHVzaCggaSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ld1VubWF0Y2hlZDtcbn1cblxuZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkge1xuXHRpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApO1xuXHR9XG5cdGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTtcblx0fVxuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkge1xuXHRcdHZhciB0ZW1wLCBpLCBlbGVtLFxuXHRcdFx0cHJlTWFwID0gW10sXG5cdFx0XHRwb3N0TWFwID0gW10sXG5cdFx0XHRwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dFxuXHRcdFx0ZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoXG5cdFx0XHRcdHNlbGVjdG9yIHx8IFwiKlwiLFxuXHRcdFx0XHRjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LFxuXHRcdFx0XHRbXVxuXHRcdFx0KSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMsXG5cdFx0XHRcdHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID9cblxuXHRcdFx0XHRcdC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFtdIDpcblxuXHRcdFx0XHRcdC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseVxuXHRcdFx0XHRcdHJlc3VsdHMgOlxuXHRcdFx0XHRtYXRjaGVySW47XG5cblx0XHQvLyBGaW5kIHByaW1hcnkgbWF0Y2hlc1xuXHRcdGlmICggbWF0Y2hlciApIHtcblx0XHRcdG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcG9zdEZpbHRlclxuXHRcdGlmICggcG9zdEZpbHRlciApIHtcblx0XHRcdHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApO1xuXHRcdFx0cG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApO1xuXG5cdFx0XHQvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluXG5cdFx0XHRpID0gdGVtcC5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAoIGVsZW0gPSB0ZW1wWyBpIF0gKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwWyBpIF0gXSA9ICEoIG1hdGNoZXJJblsgcG9zdE1hcFsgaSBdIF0gPSBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cblx0XHRcdFx0XHQvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHNcblx0XHRcdFx0XHR0ZW1wID0gW107XG5cdFx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSBtYXRjaGVyT3V0WyBpIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaFxuXHRcdFx0XHRcdFx0XHR0ZW1wLnB1c2goICggbWF0Y2hlckluWyBpIF0gPSBlbGVtICkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKCBtYXRjaGVyT3V0ID0gW10gKSwgdGVtcCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZFxuXHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGlmICggKCBlbGVtID0gbWF0Y2hlck91dFsgaSBdICkgJiZcblx0XHRcdFx0XHRcdCggdGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbIGkgXSApID4gLTEgKSB7XG5cblx0XHRcdFx0XHRcdHNlZWRbIHRlbXAgXSA9ICEoIHJlc3VsdHNbIHRlbXAgXSA9IGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyT3V0ID0gY29uZGVuc2UoXG5cdFx0XHRcdG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgP1xuXHRcdFx0XHRcdG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6XG5cdFx0XHRcdFx0bWF0Y2hlck91dFxuXHRcdFx0KTtcblx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7XG5cdHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIDAgXS50eXBlIF0sXG5cdFx0aW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyBcIiBcIiBdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoIGNoZWNrQ29udGV4dCA9IGNvbnRleHQgKS5ub2RlVHlwZSA/XG5cdFx0XHRcdFx0bWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdFx0bWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApO1xuXG5cdFx0XHQvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdGNoZWNrQ29udGV4dCA9IG51bGw7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0gXTtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoICggbWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1sgaSBdLnR5cGUgXSApICkge1xuXHRcdFx0bWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyICkgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbIGkgXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1sgaSBdLm1hdGNoZXMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXJcblx0XHRcdGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkge1xuXG5cdFx0XHRcdC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZ1xuXHRcdFx0XHRqID0gKytpO1xuXHRcdFx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sgaiBdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXG5cdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHR0b2tlbnNcblx0XHRcdFx0XHRcdC5zbGljZSggMCwgaSAtIDEgKVxuXHRcdFx0XHRcdFx0LmNvbmNhdCggeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0gKVxuXHRcdFx0XHRcdCkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLFxuXHRcdFx0XHRcdG1hdGNoZXIsXG5cdFx0XHRcdFx0aSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKCB0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cblx0XHRcdFx0Ly8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dFxuXHRcdFx0XHRlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFsgXCJUQUdcIiBdKCBcIipcIiwgb3V0ZXJtb3N0ICksXG5cblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9ICggZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEgKSxcblx0XHRcdFx0bGVuID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCA9PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaVxuXHRcdFx0Ly8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6IFwibGVuZ3RoXCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkXG5cdFx0XHRmb3IgKCA7IGkgIT09IGxlbiAmJiAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdFx0XHRpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPSBkb2N1bWVudCApIHtcblx0XHRcdFx0XHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdFx0XHRcdFx0XHR4bWwgPSAhZG9jdW1lbnRJc0hUTUw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblxuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoICggZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0gKSApIHtcblx0XHRcdFx0XHRcdG1hdGNoZWRDb3VudC0tO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIExlbmd0aGVuIHRoZSBhcnJheSBmb3IgZXZlcnkgZWxlbWVudCwgbWF0Y2hlZCBvciBub3Rcblx0XHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLlxuXHRcdFx0bWF0Y2hlZENvdW50ICs9IGk7XG5cblx0XHRcdC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50c1xuXHRcdFx0Ly8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlXG5cdFx0XHQvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBzZWVkLlxuXHRcdFx0Ly8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgXCIwXCIgYGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdFxuXHRcdFx0Ly8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSBcIjAwXCIgYG1hdGNoZWRDb3VudGAgdGhhdCBkaWZmZXJzIGZyb20gYGlgIGJ1dCBpcyBhbHNvXG5cdFx0XHQvLyBudW1lcmljYWxseSB6ZXJvLlxuXHRcdFx0aWYgKCBieVNldCAmJiBpICE9PSBtYXRjaGVkQ291bnQgKSB7XG5cdFx0XHRcdGogPSAwO1xuXHRcdFx0XHR3aGlsZSAoICggbWF0Y2hlciA9IHNldE1hdGNoZXJzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nXG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkQ291bnQgPiAwICkge1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggISggdW5tYXRjaGVkWyBpIF0gfHwgc2V0TWF0Y2hlZFsgaSBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c2V0TWF0Y2hlZFsgaSBdID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbIGkgXSApO1xuXHRcdFx0aWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0c2V0TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZShcblx0XHRcdHNlbGVjdG9yLFxuXHRcdFx0bWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzIClcblx0XHQpO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoIHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IgKSApO1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVkXG5cdC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dClcblx0aWYgKCBtYXRjaC5sZW5ndGggPT09IDEgKSB7XG5cblx0XHQvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRFxuXHRcdHRva2VucyA9IG1hdGNoWyAwIF0gPSBtYXRjaFsgMCBdLnNsaWNlKCAwICk7XG5cdFx0aWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAoIHRva2VuID0gdG9rZW5zWyAwIF0gKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1lbnRJc0hUTUwgJiYgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWyAxIF0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbIFwiSURcIiBdKCB0b2tlbi5tYXRjaGVzWyAwIF1cblx0XHRcdFx0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksIGNvbnRleHQgKSB8fCBbXSApWyAwIF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByWyBcIm5lZWRzQ29udGV4dFwiIF0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbIGkgXTtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvclxuXHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyAoIHR5cGUgPSB0b2tlbi50eXBlICkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICggZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdICkgKSB7XG5cblx0XHRcdFx0Ly8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzXG5cdFx0XHRcdGlmICggKCBzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWyAwIF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSxcblx0XHRcdFx0XHRyc2libGluZy50ZXN0KCB0b2tlbnNbIDAgXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8XG5cdFx0XHRcdFx0XHRjb250ZXh0XG5cdFx0XHRcdCkgKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdCFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdCggXCJcIiApLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oIFwiXCIgKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblxuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImZpZWxkc2V0XCIgKSApICYgMTtcbn0gKTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJocmVmXCIgKSA9PT0gXCIjXCI7XG59ICkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9ICk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBkZWZhdWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKFwidmFsdWVcIilcbmlmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBcIlwiO1xufSApICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIF9uYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH0gKTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllc1xuaWYgKCAhYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoIFwiZGlzYWJsZWRcIiApID09IG51bGw7XG59ICkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdCggdmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkgKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9ICk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0gKSggd2luZG93ICk7XG5cblxuXG5qUXVlcnkuZmluZCA9IFNpenpsZTtcbmpRdWVyeS5leHByID0gU2l6emxlLnNlbGVjdG9ycztcblxuLy8gRGVwcmVjYXRlZFxualF1ZXJ5LmV4cHJbIFwiOlwiIF0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xualF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7XG5qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0O1xualF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MO1xualF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zO1xualF1ZXJ5LmVzY2FwZVNlbGVjdG9yID0gU2l6emxlLmVzY2FwZTtcblxuXG5cblxudmFyIGRpciA9IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdLFxuXHRcdHRydW5jYXRlID0gdW50aWwgIT09IHVuZGVmaW5lZDtcblxuXHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHtcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdG1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHNpYmxpbmdzID0gZnVuY3Rpb24oIG4sIGVsZW0gKSB7XG5cdHZhciBtYXRjaGVkID0gW107XG5cblx0Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHtcblx0XHRpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHtcblx0XHRcdG1hdGNoZWQucHVzaCggbiApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtcblxuXG5cbmZ1bmN0aW9uIG5vZGVOYW1lKCBlbGVtLCBuYW1lICkge1xuXG5cdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG59XG52YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15cXC9cXDA+OlxceDIwXFx0XFxyXFxuXFxmXSopW1xceDIwXFx0XFxyXFxuXFxmXSpcXC8/Pig/OjxcXC9cXDE+fCkkL2kgKTtcblxuXG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBpc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRmlsdGVyZWQgZGlyZWN0bHkgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHNlbGVjdG9yc1xuXHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSwgcmV0LFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKSApO1xuXHRcdH1cblxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApO1xuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7XG5cdH0sXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuICEhd2lubm93KFxuXHRcdFx0dGhpcyxcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxuXHRcdFx0Ly8gc28gJChcInA6Zmlyc3RcIikuaXMoXCJwOmxhc3RcIikgd29uJ3QgcmV0dXJuIHRydWUgZm9yIGEgZG9jIHdpdGggdHdvIFwicFwiLlxuXHRcdFx0dHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3IgKSA6XG5cdFx0XHRcdHNlbGVjdG9yIHx8IFtdLFxuXHRcdFx0ZmFsc2Vcblx0XHQpLmxlbmd0aDtcblx0fVxufSApO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAodHJhYy05NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAodHJhYy0xMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpXG5cdC8vIFNob3J0Y3V0IHNpbXBsZSAjaWQgY2FzZSBmb3Igc3BlZWRcblx0cnF1aWNrRXhwciA9IC9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSspKSQvLFxuXG5cdGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdCApIHtcblx0XHR2YXIgbWF0Y2gsIGVsZW07XG5cblx0XHQvLyBIQU5ETEU6ICQoXCJcIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSlcblx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdC8vIE1ldGhvZCBpbml0KCkgYWNjZXB0cyBhbiBhbHRlcm5hdGUgcm9vdGpRdWVyeVxuXHRcdC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQgalF1ZXJ5LnN1YiAoZ2gtMjEwMSlcblx0XHRyb290ID0gcm9vdCB8fCByb290alF1ZXJ5O1xuXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0aWYgKCBzZWxlY3RvclsgMCBdID09PSBcIjxcIiAmJlxuXHRcdFx0XHRzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSBcIj5cIiAmJlxuXHRcdFx0XHRzZWxlY3Rvci5sZW5ndGggPj0gMyApIHtcblxuXHRcdFx0XHQvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVja1xuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcblx0XHRcdGlmICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpXG5cdFx0XHRcdGlmICggbWF0Y2hbIDEgXSApIHtcblx0XHRcdFx0XHRjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbIDAgXSA6IGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTChcblx0XHRcdFx0XHRcdG1hdGNoWyAxIF0sXG5cdFx0XHRcdFx0XHRjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCkgKTtcblxuXHRcdFx0XHRcdC8vIEhBTkRMRTogJChodG1sLCBwcm9wcylcblx0XHRcdFx0XHRpZiAoIHJzaW5nbGVUYWcudGVzdCggbWF0Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGVcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXNcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoI2lkKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbIDIgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpc1sgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzWyAwIF0gPSBzZWxlY3Rvcjtcblx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0Ly8gSEFORExFOiAkKGZ1bmN0aW9uKVxuXHRcdC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeVxuXHRcdH0gZWxzZSBpZiAoIGlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XG5cdFx0XHRyZXR1cm4gcm9vdC5yZWFkeSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0cm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRzZWxlY3RvciggalF1ZXJ5ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7XG5cdH07XG5cbi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb25cbmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuO1xuXG4vLyBJbml0aWFsaXplIGNlbnRyYWwgcmVmZXJlbmNlXG5yb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApO1xuXG5cbnZhciBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxcblxuXHQvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldFxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xuXHRcdGNoaWxkcmVuOiB0cnVlLFxuXHRcdGNvbnRlbnRzOiB0cnVlLFxuXHRcdG5leHQ6IHRydWUsXG5cdFx0cHJldjogdHJ1ZVxuXHR9O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksXG5cdFx0XHRsID0gdGFyZ2V0cy5sZW5ndGg7XG5cblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1sgaSBdICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Y2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHtcblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRtYXRjaGVkID0gW10sXG5cdFx0XHR0YXJnZXRzID0gdHlwZW9mIHNlbGVjdG9ycyAhPT0gXCJzdHJpbmdcIiAmJiBqUXVlcnkoIHNlbGVjdG9ycyApO1xuXG5cdFx0Ly8gUG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dFxuXHRcdGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cblx0XHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmICggdGFyZ2V0cyA/XG5cdFx0XHRcdFx0XHR0YXJnZXRzLmluZGV4KCBjdXIgKSA+IC0xIDpcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcGFzcyBub24tZWxlbWVudHMgdG8gU2l6emxlXG5cdFx0XHRcdFx0XHRjdXIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7XG5cblx0XHRcdFx0XHRcdG1hdGNoZWQucHVzaCggY3VyICk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7XG5cdH0sXG5cblx0Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0XG5cdGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50XG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcblx0XHR9XG5cblx0XHQvLyBJbmRleCBpbiBzZWxlY3RvclxuXHRcdGlmICggdHlwZW9mIGVsZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50XG5cdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcyxcblxuXHRcdFx0Ly8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkXG5cdFx0XHRlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW1cblx0XHQpO1xuXHR9LFxuXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayhcblx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID9cblx0XHRcdHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yIClcblx0XHQpO1xuXHR9XG59ICk7XG5cbmZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkge1xuXHR3aGlsZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApIHt9XG5cdHJldHVybiBjdXI7XG59XG5cbmpRdWVyeS5lYWNoKCB7XG5cdHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xuXHR9LFxuXHRwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiApO1xuXHR9LFxuXHRwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBfaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgX2ksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0cHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgX2ksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xuXHR9LFxuXHRjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCBlbGVtLmZpcnN0Q2hpbGQgKTtcblx0fSxcblx0Y29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdGlmICggZWxlbS5jb250ZW50RG9jdW1lbnQgIT0gbnVsbCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMStcblx0XHRcdC8vIDxvYmplY3Q+IGVsZW1lbnRzIHdpdGggbm8gYGRhdGFgIGF0dHJpYnV0ZSBoYXMgYW4gb2JqZWN0XG5cdFx0XHQvLyBgY29udGVudERvY3VtZW50YCB3aXRoIGEgYG51bGxgIHByb3RvdHlwZS5cblx0XHRcdGdldFByb3RvKCBlbGVtLmNvbnRlbnREb2N1bWVudCApICkge1xuXG5cdFx0XHRyZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG5cdFx0Ly8gVHJlYXQgdGhlIHRlbXBsYXRlIGVsZW1lbnQgYXMgYSByZWd1bGFyIG9uZSBpbiBicm93c2VycyB0aGF0XG5cdFx0Ly8gZG9uJ3Qgc3VwcG9ydCBpdC5cblx0XHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcblx0XHRcdGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59ICk7XG52YXIgcm5vdGh0bWx3aGl0ZSA9ICggL1teXFx4MjBcXHRcXHJcXG5cXGZdKy9nICk7XG5cblxuXG4vLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IHt9O1xuXHRqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHtcblx0XHRvYmplY3RbIGZsYWcgXSA9IHRydWU7XG5cdH0gKTtcblx0cmV0dXJuIG9iamVjdDtcbn1cblxuLypcbiAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICpcbiAqXHRvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93XG4gKlx0XHRcdHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3RcbiAqXG4gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZVxuICogXCJmaXJlZFwiIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFBvc3NpYmxlIG9wdGlvbnM6XG4gKlxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHRtZW1vcnk6XHRcdFx0d2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZFxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxuICpcdFx0XHRcdFx0dmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcbiAqXG4gKlx0c3RvcE9uRmFsc2U6XHRpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2VcbiAqXG4gKi9cbmpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHQvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkXG5cdC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdClcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHRjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOlxuXHRcdGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmdcblx0XHRmaXJpbmcsXG5cblx0XHQvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0c1xuXHRcdG1lbW9yeSxcblxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXG5cdFx0ZmlyZWQsXG5cblx0XHQvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nXG5cdFx0bG9ja2VkLFxuXG5cdFx0Ly8gQWN0dWFsIGNhbGxiYWNrIGxpc3Rcblx0XHRsaXN0ID0gW10sXG5cblx0XHQvLyBRdWV1ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0c1xuXHRcdHF1ZXVlID0gW10sXG5cblx0XHQvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZClcblx0XHRmaXJpbmdJbmRleCA9IC0xLFxuXG5cdFx0Ly8gRmlyZSBjYWxsYmFja3Ncblx0XHRmaXJlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuZm9yY2Ugc2luZ2xlLWZpcmluZ1xuXHRcdFx0bG9ja2VkID0gbG9ja2VkIHx8IG9wdGlvbnMub25jZTtcblxuXHRcdFx0Ly8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5nIGV4ZWN1dGlvbnMsXG5cdFx0XHQvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJyaWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzXG5cdFx0XHRmaXJlZCA9IGZpcmluZyA9IHRydWU7XG5cdFx0XHRmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSApIHtcblx0XHRcdFx0bWVtb3J5ID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdFx0d2hpbGUgKCArK2ZpcmluZ0luZGV4IDwgbGlzdC5sZW5ndGggKSB7XG5cblx0XHRcdFx0XHQvLyBSdW4gY2FsbGJhY2sgYW5kIGNoZWNrIGZvciBlYXJseSB0ZXJtaW5hdGlvblxuXHRcdFx0XHRcdGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmXG5cdFx0XHRcdFx0XHRvcHRpb25zLnN0b3BPbkZhbHNlICkge1xuXG5cdFx0XHRcdFx0XHQvLyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJlXG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXRcblx0XHRcdGlmICggIW9wdGlvbnMubWVtb3J5ICkge1xuXHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XG5cblx0XHRcdC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUgZmlyaW5nIGZvciBnb29kXG5cdFx0XHRpZiAoIGxvY2tlZCApIHtcblxuXHRcdFx0XHQvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRhIGZvciBmdXR1cmUgYWRkIGNhbGxzXG5cdFx0XHRcdGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGlzdCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3Rcblx0XHRzZWxmID0ge1xuXG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFmdGVyIGFkZGluZ1xuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTtcblx0XHRcdFx0XHRcdHF1ZXVlLnB1c2goIG1lbW9yeSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCggZnVuY3Rpb24gYWRkKCBhcmdzICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0b1R5cGUoIGFyZyApICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gSW5zcGVjdCByZWN1cnNpdmVseVxuXHRcdFx0XHRcdFx0XHRcdGFkZCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHR9ICkoIGFyZ3VtZW50cyApO1xuXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XG5cdFx0XHRyZW1vdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZWFjaCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdHZhciBpbmRleDtcblx0XHRcdFx0XHR3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdGxpc3Quc3BsaWNlKCBpbmRleCwgMSApO1xuXG5cdFx0XHRcdFx0XHQvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXNcblx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7XG5cdFx0XHRcdFx0XHRcdGZpcmluZ0luZGV4LS07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2hlY2sgaWYgYSBnaXZlbiBjYWxsYmFjayBpcyBpbiB0aGUgbGlzdC5cblx0XHRcdC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLlxuXHRcdFx0aGFzOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdHJldHVybiBmbiA/XG5cdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6XG5cdFx0XHRcdFx0bGlzdC5sZW5ndGggPiAwO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdFxuXHRcdFx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZFxuXHRcdFx0Ly8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHQvLyBDbGVhciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXNcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0ZGlzYWJsZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlXG5cdFx0XHQvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxlc3Mgd2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KVxuXHRcdFx0Ly8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGlmICggIW1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWxvY2tlZDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVudHNcblx0XHRcdGZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHtcblx0XHRcdFx0aWYgKCAhbG9ja2VkICkge1xuXHRcdFx0XHRcdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRcdFx0XHRcdGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07XG5cdFx0XHRcdFx0cXVldWUucHVzaCggYXJncyApO1xuXHRcdFx0XHRcdGlmICggIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRcdFx0ZmlyZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdHJldHVybiBzZWxmO1xufTtcblxuXG5mdW5jdGlvbiBJZGVudGl0eSggdiApIHtcblx0cmV0dXJuIHY7XG59XG5mdW5jdGlvbiBUaHJvd2VyKCBleCApIHtcblx0dGhyb3cgZXg7XG59XG5cbmZ1bmN0aW9uIGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QsIG5vVmFsdWUgKSB7XG5cdHZhciBtZXRob2Q7XG5cblx0dHJ5IHtcblxuXHRcdC8vIENoZWNrIGZvciBwcm9taXNlIGFzcGVjdCBmaXJzdCB0byBwcml2aWxlZ2Ugc3luY2hyb25vdXMgYmVoYXZpb3Jcblx0XHRpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciB0aGVuYWJsZXNcblx0XHR9IGVsc2UgaWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIG5vbi10aGVuYWJsZXNcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb250cm9sIGByZXNvbHZlYCBhcmd1bWVudHMgYnkgbGV0dGluZyBBcnJheSNzbGljZSBjYXN0IGJvb2xlYW4gYG5vVmFsdWVgIHRvIGludGVnZXI6XG5cdFx0XHQvLyAqIGZhbHNlOiBbIHZhbHVlIF0uc2xpY2UoIDAgKSA9PiByZXNvbHZlKCB2YWx1ZSApXG5cdFx0XHQvLyAqIHRydWU6IFsgdmFsdWUgXS5zbGljZSggMSApID0+IHJlc29sdmUoKVxuXHRcdFx0cmVzb2x2ZS5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0uc2xpY2UoIG5vVmFsdWUgKSApO1xuXHRcdH1cblxuXHQvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZlcnQgZXhjZXB0aW9ucyBpbnRvIHJlamVjdGlvbnNcblx0Ly8gU2luY2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndyYXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpblxuXHQvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLlxuXHR9IGNhdGNoICggdmFsdWUgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5XG5cdFx0Ly8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dFxuXHRcdHJlamVjdC5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0gKTtcblx0fVxufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0RGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkge1xuXHRcdHZhciB0dXBsZXMgPSBbXG5cblx0XHRcdFx0Ly8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcyxcblx0XHRcdFx0Ly8gLi4uIC50aGVuIGhhbmRsZXJzLCBhcmd1bWVudCBpbmRleCwgW2ZpbmFsIHN0YXRlXVxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSwgMiBdLFxuXHRcdFx0XHRbIFwicmVzb2x2ZVwiLCBcImRvbmVcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDAsIFwicmVzb2x2ZWRcIiBdLFxuXHRcdFx0XHRbIFwicmVqZWN0XCIsIFwiZmFpbFwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMSwgXCJyZWplY3RlZFwiIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0XCJjYXRjaFwiOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb21pc2UudGhlbiggbnVsbCwgZm4gKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdHBpcGU6IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHtcblx0XHRcdFx0XHR2YXIgZm5zID0gYXJndW1lbnRzO1xuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIF9pLCB0dXBsZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBNYXAgdHVwbGVzIChwcm9ncmVzcywgZG9uZSwgZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcylcblx0XHRcdFx0XHRcdFx0dmFyIGZuID0gaXNGdW5jdGlvbiggZm5zWyB0dXBsZVsgNCBdIF0gKSAmJiBmbnNbIHR1cGxlWyA0IF0gXTtcblxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5ub3RpZnkgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmZhaWwoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVqZWN0IH0pXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5kb25lKCBuZXdEZWZlci5yZXNvbHZlIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhaWwoIG5ld0RlZmVyLnJlamVjdCApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZuID8gWyByZXR1cm5lZCBdIDogYXJndW1lbnRzXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0Zm5zID0gbnVsbDtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7XG5cdFx0XHRcdFx0dmFyIG1heERlcHRoID0gMDtcblx0XHRcdFx0XHRmdW5jdGlvbiByZXNvbHZlKCBkZXB0aCwgZGVmZXJyZWQsIGhhbmRsZXIsIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRhcmdzID0gYXJndW1lbnRzLFxuXHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCwgdGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHNcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggPCBtYXhEZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCA9IGhhbmRsZXIuYXBwbHkoIHRoYXQsIGFyZ3MgKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNDhcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgPT09IGRlZmVycmVkLnByb21pc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggXCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb25cIiApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9ucyAyLjMuMy4xLCAzLjVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU0XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC03NVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gUmV0cmlldmUgYHRoZW5gIG9ubHkgb25jZVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhlbiA9IHJldHVybmVkICYmXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuNFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IGNoZWNrIG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlbmFiaWxpdHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCB0eXBlb2YgcmV0dXJuZWQgPT09IFwib2JqZWN0XCIgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgcmV0dXJuZWQgPT09IFwiZnVuY3Rpb25cIiApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5hYmxlXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoZW4gKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3Ncblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhEZXB0aCsrO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGggKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIHJldHVybmVkIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHNwZWNpYWwgfHwgZGVmZXJyZWQucmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzID0gc3BlY2lhbCA/XG5cdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93IDpcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3coKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02MVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgZSBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xXG5cdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU3XG5cdFx0XHRcdFx0XHRcdC8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb21cblx0XHRcdFx0XHRcdFx0Ly8gc3Vic2VxdWVudCBlcnJvcnNcblx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHQvLyBzaW5jZSBpdCdzIG90aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXG5cdFx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUHJvZ3Jlc3MgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblByb2dyZXNzIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLm5vdGlmeVdpdGhcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMSBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25GdWxmaWxsZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkZ1bGZpbGxlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDIgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUmVqZWN0ZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblJlamVjdGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdFRocm93ZXJcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWRcblx0XHRcdFx0Ly8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdFxuXHRcdFx0XHRwcm9taXNlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdFx0XHRcdHJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlZmVycmVkID0ge307XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07XG5cblx0XHRcdC8vIHByb21pc2UucHJvZ3Jlc3MgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZmFpbCA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChcblx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlc29sdmVkXCIgKGkuZS4sIGZ1bGZpbGxlZClcblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZWplY3RlZFwiXG5cdFx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMiBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDMgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMiBdLmxvY2ssXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5sb2NrXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJlXG5cdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5maXJlXG5cdFx0XHRsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfVxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmVXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSA9IGxpc3QuZmlyZVdpdGg7XG5cdFx0fSApO1xuXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXG5cdFx0cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApO1xuXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxuXHRcdGlmICggZnVuYyApIHtcblx0XHRcdGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGRvbmUhXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xuXHR9LFxuXG5cdC8vIERlZmVycmVkIGhlbHBlclxuXHR3aGVuOiBmdW5jdGlvbiggc2luZ2xlVmFsdWUgKSB7XG5cdFx0dmFyXG5cblx0XHRcdC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlc1xuXHRcdFx0cmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzXG5cdFx0XHRpID0gcmVtYWluaW5nLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhXG5cdFx0XHRyZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLFxuXHRcdFx0cmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxuXG5cdFx0XHQvLyB0aGUgcHJpbWFyeSBEZWZlcnJlZFxuXHRcdFx0cHJpbWFyeSA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBjYWxsYmFjayBmYWN0b3J5XG5cdFx0XHR1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZUNvbnRleHRzWyBpIF0gPSB0aGlzO1xuXHRcdFx0XHRcdHJlc29sdmVWYWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7XG5cdFx0XHRcdFx0XHRwcmltYXJ5LnJlc29sdmVXaXRoKCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXG5cdFx0Ly8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZlXG5cdFx0aWYgKCByZW1haW5pbmcgPD0gMSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHNpbmdsZVZhbHVlLCBwcmltYXJ5LmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIHByaW1hcnkucmVqZWN0LFxuXHRcdFx0XHQhcmVtYWluaW5nICk7XG5cblx0XHRcdC8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBzZWNvbmRhcnkgdGhlbmFibGVzIChjZi4gZ2gtMzAwMClcblx0XHRcdGlmICggcHJpbWFyeS5zdGF0ZSgpID09PSBcInBlbmRpbmdcIiB8fFxuXHRcdFx0XHRpc0Z1bmN0aW9uKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBdLnRoZW4gKSApIHtcblxuXHRcdFx0XHRyZXR1cm4gcHJpbWFyeS50aGVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHNcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBwcmltYXJ5LnJlamVjdCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBwcmltYXJ5LnByb21pc2UoKTtcblx0fVxufSApO1xuXG5cbi8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUgYSBwcm9ncmFtbWVyIG1pc3Rha2UgZHVyaW5nIGRldmVsb3BtZW50LFxuLy8gd2FybiBhYm91dCB0aGVtIEFTQVAgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyB0aGVtIGJ5IGRlZmF1bHQuXG52YXIgcmVycm9yTmFtZXMgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztcblxualF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbiggZXJyb3IsIHN0YWNrICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDggLSA5IG9ubHlcblx0Ly8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWVcblx0aWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53YXJuICYmIGVycm9yICYmIHJlcnJvck5hbWVzLnRlc3QoIGVycm9yLm5hbWUgKSApIHtcblx0XHR3aW5kb3cuY29uc29sZS53YXJuKCBcImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246IFwiICsgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7XG5cdH1cbn07XG5cblxuXG5cbmpRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciApIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdHRocm93IGVycm9yO1xuXHR9ICk7XG59O1xuXG5cblxuXG4vLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHlcbnZhciByZWFkeUxpc3QgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblxualF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkge1xuXG5cdHJlYWR5TGlzdFxuXHRcdC50aGVuKCBmbiApXG5cblx0XHQvLyBXcmFwIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiBpbiBhIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGxvb2t1cFxuXHRcdC8vIGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFja1xuXHRcdC8vIHJlZ2lzdHJhdGlvbi5cblx0XHQuY2F0Y2goIGZ1bmN0aW9uKCBlcnJvciApIHtcblx0XHRcdGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiggZXJyb3IgKTtcblx0XHR9ICk7XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy5cblx0aXNSZWFkeTogZmFsc2UsXG5cblx0Ly8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZVxuXHQvLyB0aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSB0cmFjLTY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuO1xuXG4vLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG4vLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5XG4vLyBPbGRlciBJRSBzb21ldGltZXMgc2lnbmFscyBcImludGVyYWN0aXZlXCIgdG9vIHNvb25cbmlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiIHx8XG5cdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxuXHR3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7XG5cbn0gZWxzZSB7XG5cblx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cblx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcbn1cblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCB0b1R5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIF9rZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0ZWxlbXNbIGkgXSwga2V5LCByYXcgP1xuXHRcdFx0XHRcdFx0dmFsdWUgOlxuXHRcdFx0XHRcdFx0dmFsdWUuY2FsbCggZWxlbXNbIGkgXSwgaSwgZm4oIGVsZW1zWyBpIF0sIGtleSApIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIGNoYWluYWJsZSApIHtcblx0XHRyZXR1cm4gZWxlbXM7XG5cdH1cblxuXHQvLyBHZXRzXG5cdGlmICggYnVsayApIHtcblx0XHRyZXR1cm4gZm4uY2FsbCggZWxlbXMgKTtcblx0fVxuXG5cdHJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDtcbn07XG5cblxuLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nXG52YXIgcm1zUHJlZml4ID0gL14tbXMtLyxcblx0cmRhc2hBbHBoYSA9IC8tKFthLXpdKS9nO1xuXG4vLyBVc2VkIGJ5IGNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKClcbmZ1bmN0aW9uIGZjYW1lbENhc2UoIF9hbGwsIGxldHRlciApIHtcblx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG4vLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAodHJhYy05NTcyKVxuZnVuY3Rpb24gY2FtZWxDYXNlKCBzdHJpbmcgKSB7XG5cdHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xufVxudmFyIGFjY2VwdERhdGEgPSBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIERhdGEoKSB7XG5cdHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKztcbn1cblxuRGF0YS51aWQgPSAxO1xuXG5EYXRhLnByb3RvdHlwZSA9IHtcblxuXHRjYWNoZTogZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlXG5cdFx0dmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0Ly8gSWYgbm90LCBjcmVhdGUgb25lXG5cdFx0aWYgKCAhdmFsdWUgKSB7XG5cdFx0XHR2YWx1ZSA9IHt9O1xuXG5cdFx0XHQvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2Vycyxcblx0XHRcdC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgdHJhYy04MzM1LlxuXHRcdFx0Ly8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIG93bmVyICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlclxuXHRcdFx0XHQvLyB1c2UgcGxhaW4gYXNzaWdubWVudFxuXHRcdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSBwcm9wZXJ0eVxuXHRcdFx0XHQvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZVxuXHRcdFx0XHQvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cdHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHtcblx0XHR2YXIgcHJvcCxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFyZ3Ncblx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIGRhdGEgKSBdID0gdmFsdWU7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJnc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0XG5cdFx0XHRmb3IgKCBwcm9wIGluIGRhdGEgKSB7XG5cdFx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIHByb3AgKSBdID0gZGF0YVsgcHJvcCBdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGU7XG5cdH0sXG5cdGdldDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0cmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMuY2FjaGUoIG93bmVyICkgOlxuXG5cdFx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gJiYgb3duZXJbIHRoaXMuZXhwYW5kbyBdWyBjYW1lbENhc2UoIGtleSApIF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblx0XHR9XG5cblx0XHQvLyBXaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGtleSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0IGFycmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5c1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBrZXkgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyByZW1vdmUgdGhhdC5cblx0XHRcdFx0a2V5ID0ga2V5Lm1hcCggY2FtZWxDYXNlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRrZXkgPSBjYW1lbENhc2UoIGtleSApO1xuXG5cdFx0XHRcdC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBjcmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2Vcblx0XHRcdFx0a2V5ID0ga2V5IGluIGNhY2hlID9cblx0XHRcdFx0XHRbIGtleSBdIDpcblx0XHRcdFx0XHQoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBrZXkubGVuZ3RoO1xuXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlbIGkgXSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YVxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDVcblx0XHRcdC8vIFdlYmtpdCAmIEJsaW5rIHBlcmZvcm1hbmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzXG5cdFx0XHQvLyBmcm9tIERPTSBub2Rlcywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFkXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2MDcgKGJ1ZyByZXN0cmljdGVkKVxuXHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHR2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0cmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYgIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApO1xuXHR9XG59O1xudmFyIGRhdGFQcml2ID0gbmV3IERhdGEoKTtcblxudmFyIGRhdGFVc2VyID0gbmV3IERhdGEoKTtcblxuXG5cbi8vXHRJbXBsZW1lbnRhdGlvbiBTdW1tYXJ5XG4vL1xuLy9cdDEuIEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAxLjkueCBicmFuY2hcbi8vXHQyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2Vcbi8vXHRcdHBhdGhzIHRvIGEgc2luZ2xlIG1lY2hhbmlzbS5cbi8vXHQzLiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0byBzdXBwb3J0IFwicHJpdmF0ZVwiIGFuZCBcInVzZXJcIiBkYXRhLlxuLy9cdDQuIF9OZXZlcl8gZXhwb3NlIFwicHJpdmF0ZVwiIGRhdGEgdG8gdXNlciBjb2RlIChUT0RPOiBEcm9wIF9kYXRhLCBfcmVtb3ZlRGF0YSlcbi8vXHQ1LiBBdm9pZCBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVzZXIgb2JqZWN0cyAoZWcuIGV4cGFuZG8gcHJvcGVydGllcylcbi8vXHQ2LiBQcm92aWRlIGEgY2xlYXIgcGF0aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTRcblxudmFyIHJicmFjZSA9IC9eKD86XFx7W1xcd1xcV10qXFx9fFxcW1tcXHdcXFddKlxcXSkkLyxcblx0cm11bHRpRGFzaCA9IC9bQS1aXS9nO1xuXG5mdW5jdGlvbiBnZXREYXRhKCBkYXRhICkge1xuXHRpZiAoIGRhdGEgPT09IFwidHJ1ZVwiICkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcImZhbHNlXCIgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcIm51bGxcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nXG5cdGlmICggZGF0YSA9PT0gK2RhdGEgKyBcIlwiICkge1xuXHRcdHJldHVybiArZGF0YTtcblx0fVxuXG5cdGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZSggZGF0YSApO1xuXHR9XG5cblx0cmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7XG5cdHZhciBuYW1lO1xuXG5cdC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnlcblx0Ly8gZGF0YSBmcm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlXG5cdGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0bmFtZSA9IFwiZGF0YS1cIiArIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCBcIi0kJlwiICkudG9Mb3dlckNhc2UoKTtcblx0XHRkYXRhID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTtcblxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkYXRhID0gZ2V0RGF0YSggZGF0YSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXJcblx0XHRcdGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBkYXRhO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApO1xuXHR9LFxuXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fSxcblxuXHQvLyBUT0RPOiBOb3cgdGhhdCBhbGwgY2FsbHMgdG8gX2RhdGEgYW5kIF9yZW1vdmVEYXRhIGhhdmUgYmVlbiByZXBsYWNlZFxuXHQvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC5cblx0X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaSwgbmFtZSwgZGF0YSxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRhdHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzO1xuXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdGhpcy5sZW5ndGggKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFQcml2LmdldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiApICkge1xuXHRcdFx0XHRcdGkgPSBhdHRycy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdFx0XHRcdC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAodHJhYy0xNDg5NClcblx0XHRcdFx0XHRcdGlmICggYXR0cnNbIGkgXSApIHtcblx0XHRcdFx0XHRcdFx0bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTtcblx0XHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgPSBjYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xuXHRcdGlmICggdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YVxuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBxdWV1ZTtcblxuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHR5cGUgPSAoIHR5cGUgfHwgXCJmeFwiICkgKyBcInF1ZXVlXCI7XG5cdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cblx0dmFyIGlzQXR0YWNoZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXHRcdH0sXG5cdFx0Y29tcG9zZWQgPSB7IGNvbXBvc2VkOiB0cnVlIH07XG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExKywgRWRnZSAxMiAtIDE4KywgaU9TIDEwLjAgLSAxMC4yIG9ubHlcblx0Ly8gQ2hlY2sgYXR0YWNobWVudCBhY3Jvc3Mgc2hhZG93IERPTSBib3VuZGFyaWVzIHdoZW4gcG9zc2libGUgKGdoLTM1MDQpXG5cdC8vIFN1cHBvcnQ6IGlPUyAxMC4wLTEwLjIgb25seVxuXHQvLyBFYXJseSBpT1MgMTAgdmVyc2lvbnMgc3VwcG9ydCBgYXR0YWNoU2hhZG93YCBidXQgbm90IGBnZXRSb290Tm9kZWAsXG5cdC8vIGxlYWRpbmcgdG8gZXJyb3JzLiBXZSBuZWVkIHRvIGNoZWNrIGZvciBgZ2V0Um9vdE5vZGVgLlxuXHRpZiAoIGRvY3VtZW50RWxlbWVudC5nZXRSb290Tm9kZSApIHtcblx0XHRpc0F0dGFjaGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSB8fFxuXHRcdFx0XHRlbGVtLmdldFJvb3ROb2RlKCBjb21wb3NlZCApID09PSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0fTtcblx0fVxudmFyIGlzSGlkZGVuV2l0aGluVHJlZSA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblxuXHRcdC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXG5cdFx0Ly8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGxcblx0XHRyZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIiB8fFxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmXG5cblx0XHRcdC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGVcblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1XG5cdFx0XHQvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXNcblx0XHRcdC8vIGluIHRoZSBkb2N1bWVudC5cblx0XHRcdGlzQXR0YWNoZWQoIGVsZW0gKSAmJlxuXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIjtcblx0fTtcblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gZWxlbS5ub2RlVHlwZSAmJlxuXHRcdFx0KCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0ZGl2ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApLFxuXHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seVxuXHQvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAodHJhYy0xMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKHRyYWMtMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHQvLyBJRSA8PTkgcmVwbGFjZXMgPG9wdGlvbj4gdGFncyB3aXRoIHRoZWlyIGNvbnRlbnRzIHdoZW4gaW5zZXJ0ZWQgb3V0c2lkZSBvZlxuXHQvLyB0aGUgc2VsZWN0IGVsZW1lbnQuXG5cdGRpdi5pbm5lckhUTUwgPSBcIjxvcHRpb24+PC9vcHRpb24+XCI7XG5cdHN1cHBvcnQub3B0aW9uID0gISFkaXYubGFzdENoaWxkO1xufSApKCk7XG5cblxuLy8gV2UgaGF2ZSB0byBjbG9zZSB0aGVzZSB0YWdzIHRvIHN1cHBvcnQgWEhUTUwgKHRyYWMtMTMyMDApXG52YXIgd3JhcE1hcCA9IHtcblxuXHQvLyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZVxuXHQvLyBzYW1lIHdheSB0aGF0IHRhZyBzb3VwIHBhcnNlcnMgZG8uIFNvIHdlIGNhbm5vdCBzaG9ydGVuXG5cdC8vIHRoaXMgYnkgb21pdHRpbmcgPHRib2R5PiBvciBvdGhlciByZXF1aXJlZCBlbGVtZW50cy5cblx0dGhlYWQ6IFsgMSwgXCI8dGFibGU+XCIsIFwiPC90YWJsZT5cIiBdLFxuXHRjb2w6IFsgMiwgXCI8dGFibGU+PGNvbGdyb3VwPlwiLCBcIjwvY29sZ3JvdXA+PC90YWJsZT5cIiBdLFxuXHR0cjogWyAyLCBcIjx0YWJsZT48dGJvZHk+XCIsIFwiPC90Ym9keT48L3RhYmxlPlwiIF0sXG5cdHRkOiBbIDMsIFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsIFwiPC90cj48L3Rib2R5PjwvdGFibGU+XCIgXSxcblxuXHRfZGVmYXVsdDogWyAwLCBcIlwiLCBcIlwiIF1cbn07XG5cbndyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7XG53cmFwTWFwLnRoID0gd3JhcE1hcC50ZDtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbmlmICggIXN1cHBvcnQub3B0aW9uICkge1xuXHR3cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb24gPSBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF07XG59XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICh0cmFjLTE1MTUxKVxuXHR2YXIgcmV0O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSB7XG5cdFx0cmV0ID0gW107XG5cdH1cblxuXHRpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn1cblxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFQcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sXG5cdFx0XHRcImdsb2JhbEV2YWxcIixcblx0XHRcdCFyZWZFbGVtZW50cyB8fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cblxudmFyIHJodG1sID0gLzx8JiM/XFx3KzsvO1xuXG5mdW5jdGlvbiBidWlsZEZyYWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkge1xuXHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGF0dGFjaGVkLCBqLFxuXHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0bm9kZXMgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHQvLyBBZGQgbm9kZXMgZGlyZWN0bHlcblx0XHRcdGlmICggdG9UeXBlKCBlbGVtICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgZWxlbS5ub2RlVHlwZSA/IFsgZWxlbSBdIDogZWxlbSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGVcblx0XHRcdH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XG5cdFx0XHRcdG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRtcCA9IHRtcCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblxuXHRcdFx0XHQvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uXG5cdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcblx0XHRcdFx0dG1wLmlubmVySFRNTCA9IHdyYXBbIDEgXSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFwWyAyIF07XG5cblx0XHRcdFx0Ly8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50XG5cdFx0XHRcdGogPSB3cmFwWyAwIF07XG5cdFx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRcdHRtcCA9IHRtcC5sYXN0Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApO1xuXG5cdFx0XHRcdC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyXG5cdFx0XHRcdHRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAodHJhYy0xMjM5Milcblx0XHRcdFx0dG1wLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50XG5cdGZyYWdtZW50LnRleHRDb250ZW50ID0gXCJcIjtcblxuXHRpID0gMDtcblx0d2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHtcblxuXHRcdC8vIFNraXAgZWxlbWVudHMgYWxyZWFkeSBpbiB0aGUgY29udGV4dCBjb2xsZWN0aW9uICh0cmFjLTQwODcpXG5cdFx0aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7XG5cdFx0XHRpZiAoIGlnbm9yZWQgKSB7XG5cdFx0XHRcdGlnbm9yZWQucHVzaCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0YXR0YWNoZWQgPSBpc0F0dGFjaGVkKCBlbGVtICk7XG5cblx0XHQvLyBBcHBlbmQgdG8gZnJhZ21lbnRcblx0XHR0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksIFwic2NyaXB0XCIgKTtcblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRpZiAoIGF0dGFjaGVkICkge1xuXHRcdFx0c2V0R2xvYmFsRXZhbCggdG1wICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FwdHVyZSBleGVjdXRhYmxlc1xuXHRcdGlmICggc2NyaXB0cyApIHtcblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7XG5cdFx0XHRcdGlmICggcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlIHx8IFwiXCIgKSApIHtcblx0XHRcdFx0XHRzY3JpcHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBmcmFnbWVudDtcbn1cblxuXG52YXIgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcXC4oLispfCkvO1xuXG5mdW5jdGlvbiByZXR1cm5UcnVlKCkge1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTErXG4vLyBmb2N1cygpIGFuZCBibHVyKCkgYXJlIGFzeW5jaHJvbm91cywgZXhjZXB0IHdoZW4gdGhleSBhcmUgbm8tb3AuXG4vLyBTbyBleHBlY3QgZm9jdXMgdG8gYmUgc3luY2hyb25vdXMgd2hlbiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IGFjdGl2ZSxcbi8vIGFuZCBibHVyIHRvIGJlIHN5bmNocm9ub3VzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbm90IGFscmVhZHkgYWN0aXZlLlxuLy8gKGZvY3VzIGFuZCBibHVyIGFyZSBhbHdheXMgc3luY2hyb25vdXMgaW4gb3RoZXIgc3VwcG9ydGVkIGJyb3dzZXJzLFxuLy8gdGhpcyBqdXN0IGRlZmluZXMgd2hlbiB3ZSBjYW4gY291bnQgb24gaXQpLlxuZnVuY3Rpb24gZXhwZWN0U3luYyggZWxlbSwgdHlwZSApIHtcblx0cmV0dXJuICggZWxlbSA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSApID09PSAoIHR5cGUgPT09IFwiZm9jdXNcIiApO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gQWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgY2FuIHRocm93IHVuZXhwZWN0ZWRseVxuLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzkzXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIE9ubHkgYXR0YWNoIGV2ZW50cyB0byBvYmplY3RzIHRoYXQgYWNjZXB0IGRhdGFcblx0XHRpZiAoICFhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0gT2JqZWN0LmNyZWF0ZSggbnVsbCApO1xuXHRcdH1cblx0XHRpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7XG5cdFx0XHRldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkge1xuXG5cdFx0XHRcdC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kXG5cdFx0XHRcdC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWRcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlID9cblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0sIGFyZ3VtZW50cyApIDogdW5kZWZpbmVkO1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiIClcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSApIHtcblx0XHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdO1xuXHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDtcblxuXHRcdFx0XHQvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2Vcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC5zZXR1cCB8fFxuXHRcdFx0XHRcdHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBzcGVjaWFsLmFkZCApIHtcblx0XHRcdFx0c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cblx0XHRcdFx0aWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250XG5cdFx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvblxuXHRcdFx0alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTtcblx0XHR9XG5cblx0fSxcblxuXHQvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnRcblx0cmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHtcblxuXHRcdHZhciBqLCBvcmlnQ291bnQsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudFxuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTtcblx0XHRcdHRtcCA9IHRtcFsgMiBdICYmXG5cdFx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApO1xuXG5cdFx0XHQvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzXG5cdFx0XHRvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07XG5cblx0XHRcdFx0aWYgKCAoIG1hcHBlZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJlxuXHRcdFx0XHRcdCggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmXG5cdFx0XHRcdFx0KCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxuXHRcdFx0XHRcdCggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHxcblx0XHRcdFx0XHRcdHNlbGVjdG9yID09PSBcIioqXCIgJiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7XG5cdFx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7XG5cblx0XHRcdFx0XHRpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBzcGVjaWFsLnJlbW92ZSApIHtcblx0XHRcdFx0XHRcdHNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0XG5cdFx0XHQvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycylcblx0XHRcdGlmICggb3JpZ0NvdW50ICYmICFoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdGlmICggIXNwZWNpYWwudGVhcmRvd24gfHxcblx0XHRcdFx0XHRzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgZXZlbnRzWyB0eXBlIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcblx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHtcblx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJoYW5kbGUgZXZlbnRzXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0ZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXG5cdFx0XHQvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmplY3Rcblx0XHRcdGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKSxcblxuXHRcdFx0aGFuZGxlcnMgPSAoXG5cdFx0XHRcdGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IE9iamVjdC5jcmVhdGUoIG51bGwgKVxuXHRcdFx0KVsgZXZlbnQudHlwZSBdIHx8IFtdLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307XG5cblx0XHQvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudFxuXHRcdGFyZ3NbIDAgXSA9IGV2ZW50O1xuXG5cdFx0Zm9yICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0XHR9XG5cblx0XHRldmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7XG5cblx0XHQvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkXG5cdFx0aWYgKCBzcGVjaWFsLnByZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGhhbmRsZXJzXG5cdFx0aGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApO1xuXG5cdFx0Ly8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXNcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XG5cblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoIGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFuZGxlcnNbIGorKyBdICkgJiZcblx0XHRcdFx0IWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGV2ZW50IGlzIG5hbWVzcGFjZWQsIHRoZW4gZWFjaCBoYW5kbGVyIGlzIG9ubHkgaW52b2tlZCBpZiBpdCBpc1xuXHRcdFx0XHQvLyBzcGVjaWFsbHkgdW5pdmVyc2FsIG9yIGl0cyBuYW1lc3BhY2VzIGFyZSBhIHN1cGVyc2V0IG9mIHRoZSBldmVudCdzLlxuXHRcdFx0XHRpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGhhbmRsZU9iai5uYW1lc3BhY2UgPT09IGZhbHNlIHx8XG5cdFx0XHRcdFx0ZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAodHJhYy0xMzIwOClcblx0XHRcdFx0Ly8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKHRyYWMtNjkxMSwgdHJhYy04MTY1LCB0cmFjLTExMzgyLCB0cmFjLTExNzY0KVxuXHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgY3VyLmRpc2FibGVkID09PSB0cnVlICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzID0gW107XG5cdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9ycyA9IHt9O1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTtcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKHRyYWMtMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IDpcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCBuYW1lLCB7XG5cdFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Zml4OiBmdW5jdGlvbiggb3JpZ2luYWxFdmVudCApIHtcblx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRvcmlnaW5hbEV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcblx0fSxcblxuXHRzcGVjaWFsOiB7XG5cdFx0bG9hZDoge1xuXG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gVXRpbGl6ZSBuYXRpdmUgZXZlbnQgdG8gZW5zdXJlIGNvcnJlY3Qgc3RhdGUgZm9yIGNoZWNrYWJsZSBpbnB1dHNcblx0XHRcdHNldHVwOiBmdW5jdGlvbiggZGF0YSApIHtcblxuXHRcdFx0XHQvLyBGb3IgbXV0dWFsIGNvbXByZXNzaWJpbGl0eSB3aXRoIF9kZWZhdWx0LCByZXBsYWNlIGB0aGlzYCBhY2Nlc3Mgd2l0aCBhIGxvY2FsIHZhci5cblx0XHRcdFx0Ly8gYHx8IGRhdGFgIGlzIGRlYWQgY29kZSBtZWFudCBvbmx5IHRvIHByZXNlcnZlIHRoZSB2YXJpYWJsZSB0aHJvdWdoIG1pbmlmaWNhdGlvbi5cblx0XHRcdFx0dmFyIGVsID0gdGhpcyB8fCBkYXRhO1xuXG5cdFx0XHRcdC8vIENsYWltIHRoZSBmaXJzdCBoYW5kbGVyXG5cdFx0XHRcdGlmICggcmNoZWNrYWJsZVR5cGUudGVzdCggZWwudHlwZSApICYmXG5cdFx0XHRcdFx0ZWwuY2xpY2sgJiYgbm9kZU5hbWUoIGVsLCBcImlucHV0XCIgKSApIHtcblxuXHRcdFx0XHRcdC8vIGRhdGFQcml2LnNldCggZWwsIFwiY2xpY2tcIiwgLi4uIClcblx0XHRcdFx0XHRsZXZlcmFnZU5hdGl2ZSggZWwsIFwiY2xpY2tcIiwgcmV0dXJuVHJ1ZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBwcm9jZXNzaW5nIGluIHRoZSBjYWxsZXJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCBkYXRhICkge1xuXG5cdFx0XHRcdC8vIEZvciBtdXR1YWwgY29tcHJlc3NpYmlsaXR5IHdpdGggX2RlZmF1bHQsIHJlcGxhY2UgYHRoaXNgIGFjY2VzcyB3aXRoIGEgbG9jYWwgdmFyLlxuXHRcdFx0XHQvLyBgfHwgZGF0YWAgaXMgZGVhZCBjb2RlIG1lYW50IG9ubHkgdG8gcHJlc2VydmUgdGhlIHZhcmlhYmxlIHRocm91Z2ggbWluaWZpY2F0aW9uLlxuXHRcdFx0XHR2YXIgZWwgPSB0aGlzIHx8IGRhdGE7XG5cblx0XHRcdFx0Ly8gRm9yY2Ugc2V0dXAgYmVmb3JlIHRyaWdnZXJpbmcgYSBjbGlja1xuXHRcdFx0XHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsLnR5cGUgKSAmJlxuXHRcdFx0XHRcdGVsLmNsaWNrICYmIG5vZGVOYW1lKCBlbCwgXCJpbnB1dFwiICkgKSB7XG5cblx0XHRcdFx0XHRsZXZlcmFnZU5hdGl2ZSggZWwsIFwiY2xpY2tcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmV0dXJuIG5vbi1mYWxzZSB0byBhbGxvdyBub3JtYWwgZXZlbnQtcGF0aCBwcm9wYWdhdGlvblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBzdXBwcmVzcyBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdC8vIEFsc28gcHJldmVudCBpdCBpZiB3ZSdyZSBjdXJyZW50bHkgaW5zaWRlIGEgbGV2ZXJhZ2VkIG5hdGl2ZS1ldmVudCBzdGFja1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0cmV0dXJuIHJjaGVja2FibGVUeXBlLnRlc3QoIHRhcmdldC50eXBlICkgJiZcblx0XHRcdFx0XHR0YXJnZXQuY2xpY2sgJiYgbm9kZU5hbWUoIHRhcmdldCwgXCJpbnB1dFwiICkgJiZcblx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRhcmdldCwgXCJjbGlja1wiICkgfHxcblx0XHRcdFx0XHRub2RlTmFtZSggdGFyZ2V0LCBcImFcIiApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRiZWZvcmV1bmxvYWQ6IHtcblx0XHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArXG5cdFx0XHRcdC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC5cblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIEVuc3VyZSB0aGUgcHJlc2VuY2Ugb2YgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIG1hbnVhbGx5LXRyaWdnZXJlZFxuLy8gc3ludGhldGljIGV2ZW50cyBieSBpbnRlcnJ1cHRpbmcgcHJvZ3Jlc3MgdW50aWwgcmVpbnZva2VkIGluIHJlc3BvbnNlIHRvXG4vLyAqbmF0aXZlKiBldmVudHMgdGhhdCBpdCBmaXJlcyBkaXJlY3RseSwgZW5zdXJpbmcgdGhhdCBzdGF0ZSBjaGFuZ2VzIGhhdmVcbi8vIGFscmVhZHkgb2NjdXJyZWQgYmVmb3JlIG90aGVyIGxpc3RlbmVycyBhcmUgaW52b2tlZC5cbmZ1bmN0aW9uIGxldmVyYWdlTmF0aXZlKCBlbCwgdHlwZSwgZXhwZWN0U3luYyApIHtcblxuXHQvLyBNaXNzaW5nIGV4cGVjdFN5bmMgaW5kaWNhdGVzIGEgdHJpZ2dlciBjYWxsLCB3aGljaCBtdXN0IGZvcmNlIHNldHVwIHRocm91Z2ggalF1ZXJ5LmV2ZW50LmFkZFxuXHRpZiAoICFleHBlY3RTeW5jICkge1xuXHRcdGlmICggZGF0YVByaXYuZ2V0KCBlbCwgdHlwZSApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBlbCwgdHlwZSwgcmV0dXJuVHJ1ZSApO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBSZWdpc3RlciB0aGUgY29udHJvbGxlciBhcyBhIHNwZWNpYWwgdW5pdmVyc2FsIGhhbmRsZXIgZm9yIGFsbCBldmVudCBuYW1lc3BhY2VzXG5cdGRhdGFQcml2LnNldCggZWwsIHR5cGUsIGZhbHNlICk7XG5cdGpRdWVyeS5ldmVudC5hZGQoIGVsLCB0eXBlLCB7XG5cdFx0bmFtZXNwYWNlOiBmYWxzZSxcblx0XHRoYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgbm90QXN5bmMsIHJlc3VsdCxcblx0XHRcdFx0c2F2ZWQgPSBkYXRhUHJpdi5nZXQoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0aWYgKCAoIGV2ZW50LmlzVHJpZ2dlciAmIDEgKSAmJiB0aGlzWyB0eXBlIF0gKSB7XG5cblx0XHRcdFx0Ly8gSW50ZXJydXB0IHByb2Nlc3Npbmcgb2YgdGhlIG91dGVyIHN5bnRoZXRpYyAudHJpZ2dlcigpZWQgZXZlbnRcblx0XHRcdFx0Ly8gU2F2ZWQgZGF0YSBzaG91bGQgYmUgZmFsc2UgaW4gc3VjaCBjYXNlcywgYnV0IG1pZ2h0IGJlIGEgbGVmdG92ZXIgY2FwdHVyZSBvYmplY3Rcblx0XHRcdFx0Ly8gZnJvbSBhbiBhc3luYyBuYXRpdmUgaGFuZGxlciAoZ2gtNDM1MClcblx0XHRcdFx0aWYgKCAhc2F2ZWQubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgYXJndW1lbnRzIGZvciB1c2Ugd2hlbiBoYW5kbGluZyB0aGUgaW5uZXIgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdFx0Ly8gVGhlcmUgd2lsbCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IChhbiBldmVudCBvYmplY3QpLCBzbyB0aGlzIGFycmF5XG5cdFx0XHRcdFx0Ly8gd2lsbCBub3QgYmUgY29uZnVzZWQgd2l0aCBhIGxlZnRvdmVyIGNhcHR1cmUgb2JqZWN0LlxuXHRcdFx0XHRcdHNhdmVkID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCB0eXBlLCBzYXZlZCApO1xuXG5cdFx0XHRcdFx0Ly8gVHJpZ2dlciB0aGUgbmF0aXZlIGV2ZW50IGFuZCBjYXB0dXJlIGl0cyByZXN1bHRcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcblx0XHRcdFx0XHQvLyBmb2N1cygpIGFuZCBibHVyKCkgYXJlIGFzeW5jaHJvbm91c1xuXHRcdFx0XHRcdG5vdEFzeW5jID0gZXhwZWN0U3luYyggdGhpcywgdHlwZSApO1xuXHRcdFx0XHRcdHRoaXNbIHR5cGUgXSgpO1xuXHRcdFx0XHRcdHJlc3VsdCA9IGRhdGFQcml2LmdldCggdGhpcywgdHlwZSApO1xuXHRcdFx0XHRcdGlmICggc2F2ZWQgIT09IHJlc3VsdCB8fCBub3RBc3luYyApIHtcblx0XHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwgZmFsc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc2F2ZWQgIT09IHJlc3VsdCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSBvdXRlciBzeW50aGV0aWMgZXZlbnRcblx0XHRcdFx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDg2K1xuXHRcdFx0XHRcdFx0Ly8gSW4gQ2hyb21lLCBpZiBhbiBlbGVtZW50IGhhdmluZyBhIGZvY3Vzb3V0IGhhbmRsZXIgaXMgYmx1cnJlZCBieVxuXHRcdFx0XHRcdFx0Ly8gY2xpY2tpbmcgb3V0c2lkZSBvZiBpdCwgaXQgaW52b2tlcyB0aGUgaGFuZGxlciBzeW5jaHJvbm91c2x5LiBJZlxuXHRcdFx0XHRcdFx0Ly8gdGhhdCBoYW5kbGVyIGNhbGxzIGAucmVtb3ZlKClgIG9uIHRoZSBlbGVtZW50LCB0aGUgZGF0YSBpcyBjbGVhcmVkLFxuXHRcdFx0XHRcdFx0Ly8gbGVhdmluZyBgcmVzdWx0YCB1bmRlZmluZWQuIFdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5zdCB0aGlzLlxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdCAmJiByZXN1bHQudmFsdWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoaXMgaXMgYW4gaW5uZXIgc3ludGhldGljIGV2ZW50IGZvciBhbiBldmVudCB3aXRoIGEgYnViYmxpbmcgc3Vycm9nYXRlXG5cdFx0XHRcdC8vIChmb2N1cyBvciBibHVyKSwgYXNzdW1lIHRoYXQgdGhlIHN1cnJvZ2F0ZSBhbHJlYWR5IHByb3BhZ2F0ZWQgZnJvbSB0cmlnZ2VyaW5nIHRoZVxuXHRcdFx0XHQvLyBuYXRpdmUgZXZlbnQgYW5kIHByZXZlbnQgdGhhdCBmcm9tIGhhcHBlbmluZyBhZ2FpbiBoZXJlLlxuXHRcdFx0XHQvLyBUaGlzIHRlY2huaWNhbGx5IGdldHMgdGhlIG9yZGVyaW5nIHdyb25nIHcuci50LiB0byBgLnRyaWdnZXIoKWAgKGluIHdoaWNoIHRoZVxuXHRcdFx0XHQvLyBidWJibGluZyBzdXJyb2dhdGUgcHJvcGFnYXRlcyAqYWZ0ZXIqIHRoZSBub24tYnViYmxpbmcgYmFzZSksIGJ1dCB0aGF0IHNlZW1zXG5cdFx0XHRcdC8vIGxlc3MgYmFkIHRoYW4gZHVwbGljYXRpb24uXG5cdFx0XHRcdH0gZWxzZSBpZiAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fSApLmRlbGVnYXRlVHlwZSApIHtcblx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGV2ZW50IHRyaWdnZXJlZCBhYm92ZSwgZXZlcnl0aGluZyBpcyBub3cgaW4gb3JkZXJcblx0XHRcdC8vIEZpcmUgYW4gaW5uZXIgc3ludGhldGljIGV2ZW50IHdpdGggdGhlIG9yaWdpbmFsIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggc2F2ZWQubGVuZ3RoICkge1xuXG5cdFx0XHRcdC8vIC4uLmFuZCBjYXB0dXJlIHRoZSByZXN1bHRcblx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCB0eXBlLCB7XG5cdFx0XHRcdFx0dmFsdWU6IGpRdWVyeS5ldmVudC50cmlnZ2VyKFxuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcblx0XHRcdFx0XHRcdC8vIEV4dGVuZCB3aXRoIHRoZSBwcm90b3R5cGUgdG8gcmVzZXQgdGhlIGFib3ZlIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG5cdFx0XHRcdFx0XHRqUXVlcnkuZXh0ZW5kKCBzYXZlZFsgMCBdLCBqUXVlcnkuRXZlbnQucHJvdG90eXBlICksXG5cdFx0XHRcdFx0XHRzYXZlZC5zbGljZSggMSApLFxuXHRcdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHRcdClcblx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdC8vIEFib3J0IGhhbmRsaW5nIG9mIHRoZSBuYXRpdmUgZXZlbnRcblx0XHRcdFx0ZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cblx0Ly8gVGhpcyBcImlmXCIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzXG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxuXHRpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5XG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHRcdC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllc1xuXHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTYgLSA3IG9ubHlcblx0XHQvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAodHJhYy01MDQsIHRyYWMtMTMxNDMpXG5cdFx0dGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID9cblx0XHRcdHNyYy50YXJnZXQucGFyZW50Tm9kZSA6XG5cdFx0XHRzcmMudGFyZ2V0O1xuXG5cdFx0dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7XG5cdFx0dGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7XG5cblx0Ly8gRXZlbnQgdHlwZVxuXHR9IGVsc2Uge1xuXHRcdHRoaXMudHlwZSA9IHNyYztcblx0fVxuXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cdGlmICggcHJvcHMgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjb2RlOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblx0d2hpY2g6IHRydWVcbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbmpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCB0eXBlLCBkZWxlZ2F0ZVR5cGUgKSB7XG5cdGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gPSB7XG5cblx0XHQvLyBVdGlsaXplIG5hdGl2ZSBldmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNlIGlzIGNvcnJlY3Rcblx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENsYWltIHRoZSBmaXJzdCBoYW5kbGVyXG5cdFx0XHQvLyBkYXRhUHJpdi5zZXQoIHRoaXMsIFwiZm9jdXNcIiwgLi4uIClcblx0XHRcdC8vIGRhdGFQcml2LnNldCggdGhpcywgXCJibHVyXCIsIC4uLiApXG5cdFx0XHRsZXZlcmFnZU5hdGl2ZSggdGhpcywgdHlwZSwgZXhwZWN0U3luYyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gZmFsc2UgdG8gYWxsb3cgbm9ybWFsIHByb2Nlc3NpbmcgaW4gdGhlIGNhbGxlclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0sXG5cdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEZvcmNlIHNldHVwIGJlZm9yZSB0cmlnZ2VyXG5cdFx0XHRsZXZlcmFnZU5hdGl2ZSggdGhpcywgdHlwZSApO1xuXG5cdFx0XHQvLyBSZXR1cm4gbm9uLWZhbHNlIHRvIGFsbG93IG5vcm1hbCBldmVudC1wYXRoIHByb3BhZ2F0aW9uXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gU3VwcHJlc3MgbmF0aXZlIGZvY3VzIG9yIGJsdXIgaWYgd2UncmUgY3VycmVudGx5IGluc2lkZVxuXHRcdC8vIGEgbGV2ZXJhZ2VkIG5hdGl2ZS1ldmVudCBzdGFja1xuXHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRyZXR1cm4gZGF0YVByaXYuZ2V0KCBldmVudC50YXJnZXQsIHR5cGUgKTtcblx0XHR9LFxuXG5cdFx0ZGVsZWdhdGVUeXBlOiBkZWxlZ2F0ZVR5cGVcblx0fTtcbn0gKTtcblxuLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzXG4vLyBzbyB0aGF0IGV2ZW50IGRlbGVnYXRpb24gd29ya3MgaW4galF1ZXJ5LlxuLy8gRG8gdGhlIHNhbWUgZm9yIHBvaW50ZXJlbnRlci9wb2ludGVybGVhdmUgYW5kIHBvaW50ZXJvdmVyL3BvaW50ZXJvdXRcbi8vXG4vLyBTdXBwb3J0OiBTYWZhcmkgNyBvbmx5XG4vLyBTYWZhcmkgc2VuZHMgbW91c2VlbnRlciB0b28gb2Z0ZW47IHNlZTpcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ3MDI1OFxuLy8gZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnIChpdCBleGlzdGVkIGluIG9sZGVyIENocm9tZSB2ZXJzaW9ucyBhcyB3ZWxsKS5cbmpRdWVyeS5lYWNoKCB7XG5cdG1vdXNlZW50ZXI6IFwibW91c2VvdmVyXCIsXG5cdG1vdXNlbGVhdmU6IFwibW91c2VvdXRcIixcblx0cG9pbnRlcmVudGVyOiBcInBvaW50ZXJvdmVyXCIsXG5cdHBvaW50ZXJsZWF2ZTogXCJwb2ludGVyb3V0XCJcbn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7XG5cdFx0ZGVsZWdhdGVUeXBlOiBmaXgsXG5cdFx0YmluZFR5cGU6IGZpeCxcblxuXHRcdGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIHJldCxcblx0XHRcdFx0dGFyZ2V0ID0gdGhpcyxcblx0XHRcdFx0cmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQsXG5cdFx0XHRcdGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajtcblxuXHRcdFx0Ly8gRm9yIG1vdXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC5cblx0XHRcdC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93XG5cdFx0XHRpZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCApICkgKSB7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7XG5cdFx0XHRcdHJldCA9IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGZpeDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0b246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHRvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApO1xuXHR9LFxuXHRvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkge1xuXHRcdHZhciBoYW5kbGVPYmosIHR5cGU7XG5cdFx0aWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7XG5cblx0XHRcdC8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnRcblx0XHRcdGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajtcblx0XHRcdGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoXG5cdFx0XHRcdGhhbmRsZU9iai5uYW1lc3BhY2UgP1xuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSArIFwiLlwiICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlLFxuXHRcdFx0XHRoYW5kbGVPYmouc2VsZWN0b3IsXG5cdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLW9iamVjdCBbLCBzZWxlY3Rvcl0gKVxuXHRcdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdFx0dGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCBzZWxlY3RvciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMgWywgZm5dIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2VsZWN0b3IgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG52YXJcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMyBvbmx5XG5cdC8vIEluIElFL0VkZ2UgdXNpbmcgcmVnZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93ZG93bnMuXG5cdC8vIFNlZSBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzE3MzY1MTIvXG5cdHJub0lubmVyaHRtbCA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLFxuXG5cdC8vIGNoZWNrZWQ9XCJjaGVja2VkXCIgb3IgY2hlY2tlZFxuXHRyY2hlY2tlZCA9IC9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2ksXG5cblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCFcXFtDREFUQVxcW3xcXF1cXF0+XFxzKiQvZztcblxuLy8gUHJlZmVyIGEgdGJvZHkgb3ZlciBpdHMgcGFyZW50IHRhYmxlIGZvciBjb250YWluaW5nIG5ldyByb3dzXG5mdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7XG5cdGlmICggbm9kZU5hbWUoIGVsZW0sIFwidGFibGVcIiApICYmXG5cdFx0bm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgXCJ0clwiICkgKSB7XG5cblx0XHRyZXR1cm4galF1ZXJ5KCBlbGVtICkuY2hpbGRyZW4oIFwidGJvZHlcIiApWyAwIF0gfHwgZWxlbTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG4vLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uXG5mdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkge1xuXHRlbGVtLnR5cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCBcInR5cGVcIiApICE9PSBudWxsICkgKyBcIi9cIiArIGVsZW0udHlwZTtcblx0cmV0dXJuIGVsZW07XG59XG5mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkge1xuXHRpZiAoICggZWxlbS50eXBlIHx8IFwiXCIgKS5zbGljZSggMCwgNSApID09PSBcInRydWUvXCIgKSB7XG5cdFx0ZWxlbS50eXBlID0gZWxlbS50eXBlLnNsaWNlKCA1ICk7XG5cdH0gZWxzZSB7XG5cdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIFwidHlwZVwiICk7XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywgZGVzdCApIHtcblx0dmFyIGksIGwsIHR5cGUsIHBkYXRhT2xkLCB1ZGF0YU9sZCwgdWRhdGFDdXIsIGV2ZW50cztcblxuXHRpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy5cblx0aWYgKCBkYXRhUHJpdi5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHRwZGF0YU9sZCA9IGRhdGFQcml2LmdldCggc3JjICk7XG5cdFx0ZXZlbnRzID0gcGRhdGFPbGQuZXZlbnRzO1xuXG5cdFx0aWYgKCBldmVudHMgKSB7XG5cdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGRlc3QsIFwiaGFuZGxlIGV2ZW50c1wiICk7XG5cblx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyAyLiBDb3B5IHVzZXIgZGF0YVxuXHRpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTtcblx0XHR1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApO1xuXG5cdFx0ZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApO1xuXHR9XG59XG5cbi8vIEZpeCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0c1xuZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHtcblx0dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLlxuXHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHtcblx0XHRkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDtcblxuXHQvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9uc1xuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgKSB7XG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHtcblxuXHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdGFyZ3MgPSBmbGF0KCBhcmdzICk7XG5cblx0dmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2NyaXB0cywgbm9kZSwgZG9jLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBjb2xsZWN0aW9uLmxlbmd0aCxcblx0XHRpTm9DbG9uZSA9IGwgLSAxLFxuXHRcdHZhbHVlID0gYXJnc1sgMCBdLFxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0Ly8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0XG5cdGlmICggdmFsdWVJc0Z1bmN0aW9uIHx8XG5cdFx0XHQoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHtcblx0XHRyZXR1cm4gY29sbGVjdGlvbi5lYWNoKCBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGNvbGxlY3Rpb24uZXEoIGluZGV4ICk7XG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHR9XG5cdFx0XHRkb21NYW5pcCggc2VsZiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoIGwgKSB7XG5cdFx0ZnJhZ21lbnQgPSBidWlsZEZyYWdtZW50KCBhcmdzLCBjb2xsZWN0aW9uWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIGNvbGxlY3Rpb24sIGlnbm9yZWQgKTtcblx0XHRmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHR9XG5cblx0XHQvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2tcblx0XHRpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7XG5cdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdC8vIFVzZSB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgZm9yIHRoZSBsYXN0IGl0ZW1cblx0XHRcdC8vIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKHRyYWMtODA3MCkuXG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdG5vZGUgPSBmcmFnbWVudDtcblxuXHRcdFx0XHRpZiAoIGkgIT09IGlOb0Nsb25lICkge1xuXHRcdFx0XHRcdG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTtcblxuXHRcdFx0XHRcdC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb25cblx0XHRcdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBzY3JpcHRzLCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrLmNhbGwoIGNvbGxlY3Rpb25bIGkgXSwgbm9kZSwgaSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cdFx0XHRcdGRvYyA9IHNjcmlwdHNbIHNjcmlwdHMubGVuZ3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7XG5cblx0XHRcdFx0Ly8gUmVlbmFibGUgc2NyaXB0c1xuXHRcdFx0XHRqUXVlcnkubWFwKCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0ICk7XG5cblx0XHRcdFx0Ly8gRXZhbHVhdGUgZXhlY3V0YWJsZSBzY3JpcHRzIG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvblxuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHtcblx0XHRcdFx0XHRub2RlID0gc2NyaXB0c1sgaSBdO1xuXHRcdFx0XHRcdGlmICggcnNjcmlwdFR5cGUudGVzdCggbm9kZS50eXBlIHx8IFwiXCIgKSAmJlxuXHRcdFx0XHRcdFx0IWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgXCJnbG9iYWxFdmFsXCIgKSAmJlxuXHRcdFx0XHRcdFx0alF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHtcblxuXHRcdFx0XHRcdFx0aWYgKCBub2RlLnNyYyAmJiAoIG5vZGUudHlwZSB8fCBcIlwiICkudG9Mb3dlckNhc2UoKSAgIT09IFwibW9kdWxlXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gT3B0aW9uYWwgQUpBWCBkZXBlbmRlbmN5LCBidXQgd29uJ3QgcnVuIHNjcmlwdHMgaWYgbm90IHByZXNlbnRcblx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuX2V2YWxVcmwgJiYgIW5vZGUubm9Nb2R1bGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5Ll9ldmFsVXJsKCBub2RlLnNyYywge1xuXHRcdFx0XHRcdFx0XHRcdFx0bm9uY2U6IG5vZGUubm9uY2UgfHwgbm9kZS5nZXRBdHRyaWJ1dGUoIFwibm9uY2VcIiApXG5cdFx0XHRcdFx0XHRcdFx0fSwgZG9jICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVW53cmFwIGEgQ0RBVEEgc2VjdGlvbiBjb250YWluaW5nIHNjcmlwdCBjb250ZW50cy4gVGhpcyBzaG91bGRuJ3QgYmVcblx0XHRcdFx0XHRcdFx0Ly8gbmVlZGVkIGFzIGluIFhNTCBkb2N1bWVudHMgdGhleSdyZSBhbHJlYWR5IG5vdCB2aXNpYmxlIHdoZW5cblx0XHRcdFx0XHRcdFx0Ly8gaW5zcGVjdGluZyBlbGVtZW50IGNvbnRlbnRzIGFuZCBpbiBIVE1MIGRvY3VtZW50cyB0aGV5IGhhdmUgbm9cblx0XHRcdFx0XHRcdFx0Ly8gbWVhbmluZyBidXQgd2UncmUgcHJlc2VydmluZyB0aGF0IGxvZ2ljIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyB3aWxsIGJlIHJlbW92ZWQgY29tcGxldGVseSBpbiA0LjAuIFNlZSBnaC00OTA0LlxuXHRcdFx0XHRcdFx0XHRET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgXCJcIiApLCBub2RlLCBkb2MgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY29sbGVjdGlvbjtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7XG5cdHZhciBub2RlLFxuXHRcdG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSxcblx0XHRpID0gMDtcblxuXHRmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0aWYgKCAha2VlcERhdGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggbm9kZSApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBub2RlLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRpZiAoIGtlZXBEYXRhICYmIGlzQXR0YWNoZWQoIG5vZGUgKSApIHtcblx0XHRcdFx0c2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdH1cblx0XHRcdG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHJldHVybiBodG1sO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0dmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsXG5cdFx0XHRjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksXG5cdFx0XHRpblBhZ2UgPSBpc0F0dGFjaGVkKCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSg/IXB4KVthLXolXSskXCIsIFwiaVwiICk7XG5cbnZhciByY3VzdG9tUHJvcCA9IC9eLS0vO1xuXG5cbnZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICh0cmFjLTE1MDk4LCB0cmFjLTE0MTUwKVxuXHRcdC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuXHRcdC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuXHRcdHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdFx0aWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7XG5cdFx0XHR2aWV3ID0gd2luZG93O1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcblx0fTtcblxudmFyIHN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2sgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5jYWxsKCBlbGVtICk7XG5cblx0Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59O1xuXG5cbnZhciByYm94U3R5bGUgPSBuZXcgUmVnRXhwKCBjc3NFeHBhbmQuam9pbiggXCJ8XCIgKSwgXCJpXCIgKTtcblxudmFyIHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCI7XG5cblxudmFyIHJ0cmltQ1NTID0gbmV3IFJlZ0V4cChcblx0XCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiICsgd2hpdGVzcGFjZSArIFwiKyRcIixcblx0XCJnXCJcbik7XG5cblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O1wiICtcblx0XHRcdFwibWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowXCI7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwid2lkdGg6NjAlO3RvcDoxJVwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdFx0dmFyIGRpdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApO1xuXHRcdHBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09IFwiMSVcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDRcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLm1hcmdpbkxlZnQgKSA9PT0gMTI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBTYWZhcmkgPD05LjEgLSAxMC4xLCBpT1MgPD03LjAgLSA5LjNcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUucmlnaHQgPSBcIjYwJVwiO1xuXHRcdHBpeGVsQm94U3R5bGVzVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5yaWdodCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG1pc3JlcG9ydGluZyBvZiBjb250ZW50IGRpbWVuc2lvbnMgZm9yIGJveC1zaXppbmc6Ym9yZGVyLWJveCBlbGVtZW50c1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS53aWR0aCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdC8vIERldGVjdCBvdmVyZmxvdzpzY3JvbGwgc2NyZXdpbmVzcyAoZ2gtMzY5OSlcblx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD02NFxuXHRcdC8vIERvbid0IGdldCB0cmlja2VkIHdoZW4gem9vbSBhZmZlY3RzIG9mZnNldFdpZHRoIChnaC00MDI5KVxuXHRcdGRpdi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcblx0XHRzY3JvbGxib3hTaXplVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXYub2Zmc2V0V2lkdGggLyAzICkgPT09IDEyO1xuXG5cdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmRcblx0XHQvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVyZm9ybWVkXG5cdFx0ZGl2ID0gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJvdW5kUGl4ZWxNZWFzdXJlcyggbWVhc3VyZSApIHtcblx0XHRyZXR1cm4gTWF0aC5yb3VuZCggcGFyc2VGbG9hdCggbWVhc3VyZSApICk7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHNjcm9sbGJveFNpemVWYWwsIHBpeGVsQm94U3R5bGVzVmFsLFxuXHRcdHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsLCByZWxpYWJsZU1hcmdpbkxlZnRWYWwsXG5cdFx0Y29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLFxuXHRcdGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKTtcblxuXHQvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dzZXIpIGVudmlyb25tZW50c1xuXHRpZiAoICFkaXYuc3R5bGUgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBTdHlsZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAodHJhYy04OTA4KVxuXHRkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcImNvbnRlbnQtYm94XCI7XG5cdGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiXCI7XG5cdHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSBcImNvbnRlbnQtYm94XCI7XG5cblx0alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwge1xuXHRcdGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7XG5cdFx0fSxcblx0XHRwaXhlbEJveFN0eWxlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsQm94U3R5bGVzVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0fSxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiByZWxpYWJsZU1hcmdpbkxlZnRWYWw7XG5cdFx0fSxcblx0XHRzY3JvbGxib3hTaXplOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gc2Nyb2xsYm94U2l6ZVZhbDtcblx0XHR9LFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExKywgRWRnZSAxNSAtIDE4K1xuXHRcdC8vIElFL0VkZ2UgbWlzcmVwb3J0IGBnZXRDb21wdXRlZFN0eWxlYCBvZiB0YWJsZSByb3dzIHdpdGggd2lkdGgvaGVpZ2h0XG5cdFx0Ly8gc2V0IGluIENTUyB3aGlsZSBgb2Zmc2V0KmAgcHJvcGVydGllcyByZXBvcnQgY29ycmVjdCB2YWx1ZXMuXG5cdFx0Ly8gQmVoYXZpb3IgaW4gSUUgOSBpcyBtb3JlIHN1YnRsZSB0aGFuIGluIG5ld2VyIHZlcnNpb25zICYgaXQgcGFzc2VzXG5cdFx0Ly8gc29tZSB2ZXJzaW9ucyBvZiB0aGlzIHRlc3Q7IG1ha2Ugc3VyZSBub3QgdG8gbWFrZSBpdCBwYXNzIHRoZXJlIVxuXHRcdC8vXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA3MCtcblx0XHQvLyBPbmx5IEZpcmVmb3ggaW5jbHVkZXMgYm9yZGVyIHdpZHRoc1xuXHRcdC8vIGluIGNvbXB1dGVkIGRpbWVuc2lvbnMuIChnaC00NTI5KVxuXHRcdHJlbGlhYmxlVHJEaW1lbnNpb25zOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0YWJsZSwgdHIsIHRyQ2hpbGQsIHRyU3R5bGU7XG5cdFx0XHRpZiAoIHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJ0YWJsZVwiICk7XG5cdFx0XHRcdHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJ0clwiICk7XG5cdFx0XHRcdHRyQ2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0XHRcdFx0dGFibGUuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGVcIjtcblx0XHRcdFx0dHIuc3R5bGUuY3NzVGV4dCA9IFwiYm9yZGVyOjFweCBzb2xpZFwiO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA4Nitcblx0XHRcdFx0Ly8gSGVpZ2h0IHNldCB0aHJvdWdoIGNzc1RleHQgZG9lcyBub3QgZ2V0IGFwcGxpZWQuXG5cdFx0XHRcdC8vIENvbXB1dGVkIGhlaWdodCB0aGVuIGNvbWVzIGJhY2sgYXMgMC5cblx0XHRcdFx0dHIuc3R5bGUuaGVpZ2h0ID0gXCIxcHhcIjtcblx0XHRcdFx0dHJDaGlsZC5zdHlsZS5oZWlnaHQgPSBcIjlweFwiO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgOCBDaHJvbWUgODYrXG5cdFx0XHRcdC8vIEluIG91ciBib2R5QmFja2dyb3VuZC5odG1sIGlmcmFtZSxcblx0XHRcdFx0Ly8gZGlzcGxheSBmb3IgYWxsIGRpdiBlbGVtZW50cyBpcyBzZXQgdG8gXCJpbmxpbmVcIixcblx0XHRcdFx0Ly8gd2hpY2ggY2F1c2VzIGEgcHJvYmxlbSBvbmx5IGluIEFuZHJvaWQgOCBDaHJvbWUgODYuXG5cdFx0XHRcdC8vIEVuc3VyaW5nIHRoZSBkaXYgaXMgZGlzcGxheTogYmxvY2tcblx0XHRcdFx0Ly8gZ2V0cyBhcm91bmQgdGhpcyBpc3N1ZS5cblx0XHRcdFx0dHJDaGlsZC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuXG5cdFx0XHRcdGRvY3VtZW50RWxlbWVudFxuXHRcdFx0XHRcdC5hcHBlbmRDaGlsZCggdGFibGUgKVxuXHRcdFx0XHRcdC5hcHBlbmRDaGlsZCggdHIgKVxuXHRcdFx0XHRcdC5hcHBlbmRDaGlsZCggdHJDaGlsZCApO1xuXG5cdFx0XHRcdHRyU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggdHIgKTtcblx0XHRcdFx0cmVsaWFibGVUckRpbWVuc2lvbnNWYWwgPSAoIHBhcnNlSW50KCB0clN0eWxlLmhlaWdodCwgMTAgKSArXG5cdFx0XHRcdFx0cGFyc2VJbnQoIHRyU3R5bGUuYm9yZGVyVG9wV2lkdGgsIDEwICkgK1xuXHRcdFx0XHRcdHBhcnNlSW50KCB0clN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLCAxMCApICkgPT09IHRyLm9mZnNldEhlaWdodDtcblxuXHRcdFx0XHRkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIHRhYmxlICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVUckRpbWVuc2lvbnNWYWw7XG5cdFx0fVxuXHR9ICk7XG59ICkoKTtcblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNTErXG5cdFx0Ly8gUmV0cmlldmluZyBzdHlsZSBiZWZvcmUgY29tcHV0ZWQgc29tZWhvd1xuXHRcdC8vIGZpeGVzIGFuIGlzc3VlIHdpdGggZ2V0dGluZyB3cm9uZyB2YWx1ZXNcblx0XHQvLyBvbiBkZXRhY2hlZCBlbGVtZW50c1xuXHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApO1xuXG5cdC8vIGdldFByb3BlcnR5VmFsdWUgaXMgbmVlZGVkIGZvcjpcblx0Ly8gICAuY3NzKCdmaWx0ZXInKSAoSUUgOSBvbmx5LCB0cmFjLTEyNTM3KVxuXHQvLyAgIC5jc3MoJy0tY3VzdG9tUHJvcGVydHkpIChnaC0zMTQ0KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdO1xuXG5cdFx0Ly8gdHJpbSB3aGl0ZXNwYWNlIGZvciBjdXN0b20gcHJvcGVydHkgKGlzc3VlIGdoLTQ5MjYpXG5cdFx0aWYgKCBpc0N1c3RvbVByb3AgKSB7XG5cblx0XHRcdC8vIHJ0cmltIHRyZWF0cyBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIGFuZCBVKzAwMEMgRk9STSBGRUVEXG5cdFx0XHQvLyBhcyB3aGl0ZXNwYWNlIHdoaWxlIENTUyBkb2VzIG5vdCwgYnV0IHRoaXMgaXMgbm90IGEgcHJvYmxlbVxuXHRcdFx0Ly8gYmVjYXVzZSBDU1MgcHJlcHJvY2Vzc2luZyByZXBsYWNlcyB0aGVtIHdpdGggVSswMDBBIExJTkUgRkVFRFxuXHRcdFx0Ly8gKHdoaWNoICppcyogQ1NTIHdoaXRlc3BhY2UpXG5cdFx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN5bnRheC0zLyNpbnB1dC1wcmVwcm9jZXNzaW5nXG5cdFx0XHRyZXQgPSByZXQucmVwbGFjZSggcnRyaW1DU1MsIFwiJDFcIiApO1xuXHRcdH1cblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFpc0F0dGFjaGVkKCBlbGVtICkgKSB7XG5cdFx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBBIHRyaWJ1dGUgdG8gdGhlIFwiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkc1wiXG5cdFx0Ly8gQW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsXG5cdFx0Ly8gYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVscy5cblx0XHQvLyBUaGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6XG5cdFx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoICFzdXBwb3J0LnBpeGVsQm94U3R5bGVzKCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJib3hTdHlsZS50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuXG5cdFx0cmV0ICsgXCJcIiA6XG5cdFx0cmV0O1xufVxuXG5cbmZ1bmN0aW9uIGFkZEdldEhvb2tJZiggY29uZGl0aW9uRm4sIGhvb2tGbiApIHtcblxuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fVxuXHR9O1xufVxuXG5cbnZhciBjc3NQcmVmaXhlcyA9IFsgXCJXZWJraXRcIiwgXCJNb3pcIiwgXCJtc1wiIF0sXG5cdGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkuc3R5bGUsXG5cdHZlbmRvclByb3BzID0ge307XG5cbi8vIFJldHVybiBhIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBvciB1bmRlZmluZWRcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1lICkge1xuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwb3RlbnRpYWxseS1tYXBwZWQgalF1ZXJ5LmNzc1Byb3BzIG9yIHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIGZpbmFsID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gfHwgdmVuZG9yUHJvcHNbIG5hbWUgXTtcblxuXHRpZiAoIGZpbmFsICkge1xuXHRcdHJldHVybiBmaW5hbDtcblx0fVxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXHRyZXR1cm4gdmVuZG9yUHJvcHNbIG5hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBuYW1lICkgfHwgbmFtZTtcbn1cblxuXG52YXJcblxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlXG5cdC8vIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRjc3NTaG93ID0geyBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCB2aXNpYmlsaXR5OiBcImhpZGRlblwiLCBkaXNwbGF5OiBcImJsb2NrXCIgfSxcblx0Y3NzTm9ybWFsVHJhbnNmb3JtID0ge1xuXHRcdGxldHRlclNwYWNpbmc6IFwiMFwiLFxuXHRcdGZvbnRXZWlnaHQ6IFwiNDAwXCJcblx0fTtcblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIF9lbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7XG5cblx0Ly8gQW55IHJlbGF0aXZlICgrLy0pIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlblxuXHQvLyBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnRcblx0dmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7XG5cdHJldHVybiBtYXRjaGVzID9cblxuXHRcdC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkIFwic3VidHJhY3RcIiwgZS5nLiwgd2hlbiB1c2VkIGFzIGluIGNzc0hvb2tzXG5cdFx0TWF0aC5tYXgoIDAsIG1hdGNoZXNbIDIgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSA6XG5cdFx0dmFsdWU7XG59XG5cbmZ1bmN0aW9uIGJveE1vZGVsQWRqdXN0bWVudCggZWxlbSwgZGltZW5zaW9uLCBib3gsIGlzQm9yZGVyQm94LCBzdHlsZXMsIGNvbXB1dGVkVmFsICkge1xuXHR2YXIgaSA9IGRpbWVuc2lvbiA9PT0gXCJ3aWR0aFwiID8gMSA6IDAsXG5cdFx0ZXh0cmEgPSAwLFxuXHRcdGRlbHRhID0gMDtcblxuXHQvLyBBZGp1c3RtZW50IG1heSBub3QgYmUgbmVjZXNzYXJ5XG5cdGlmICggYm94ID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7XG5cblx0XHQvLyBCb3RoIGJveCBtb2RlbHMgZXhjbHVkZSBtYXJnaW5cblx0XHRpZiAoIGJveCA9PT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIGJveCArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBJZiB3ZSBnZXQgaGVyZSB3aXRoIGEgY29udGVudC1ib3gsIHdlJ3JlIHNlZWtpbmcgXCJwYWRkaW5nXCIgb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiXG5cdFx0aWYgKCAhaXNCb3JkZXJCb3ggKSB7XG5cblx0XHRcdC8vIEFkZCBwYWRkaW5nXG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gRm9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIiwgYWRkIGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwicGFkZGluZ1wiICkge1xuXHRcdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBCdXQgc3RpbGwga2VlcCB0cmFjayBvZiBpdCBvdGhlcndpc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGV4dHJhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHQvLyBJZiB3ZSBnZXQgaGVyZSB3aXRoIGEgYm9yZGVyLWJveCAoY29udGVudCArIHBhZGRpbmcgKyBib3JkZXIpLCB3ZSdyZSBzZWVraW5nIFwiY29udGVudFwiIG9yXG5cdFx0Ly8gXCJwYWRkaW5nXCIgb3IgXCJtYXJnaW5cIlxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiwgc3VidHJhY3QgcGFkZGluZ1xuXHRcdFx0aWYgKCBib3ggPT09IFwiY29udGVudFwiICkge1xuXHRcdFx0XHRkZWx0YSAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiIG9yIFwicGFkZGluZ1wiLCBzdWJ0cmFjdCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdFx0XHRkZWx0YSAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEFjY291bnQgZm9yIHBvc2l0aXZlIGNvbnRlbnQtYm94IHNjcm9sbCBndXR0ZXIgd2hlbiByZXF1ZXN0ZWQgYnkgcHJvdmlkaW5nIGNvbXB1dGVkVmFsXG5cdGlmICggIWlzQm9yZGVyQm94ICYmIGNvbXB1dGVkVmFsID49IDAgKSB7XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgaXMgYSByb3VuZGVkIHN1bSBvZiBjb250ZW50LCBwYWRkaW5nLCBzY3JvbGwgZ3V0dGVyLCBhbmQgYm9yZGVyXG5cdFx0Ly8gQXNzdW1pbmcgaW50ZWdlciBzY3JvbGwgZ3V0dGVyLCBzdWJ0cmFjdCB0aGUgcmVzdCBhbmQgcm91bmQgZG93blxuXHRcdGRlbHRhICs9IE1hdGgubWF4KCAwLCBNYXRoLmNlaWwoXG5cdFx0XHRlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF0gLVxuXHRcdFx0Y29tcHV0ZWRWYWwgLVxuXHRcdFx0ZGVsdGEgLVxuXHRcdFx0ZXh0cmEgLVxuXHRcdFx0MC41XG5cblx0XHQvLyBJZiBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgaXMgdW5rbm93biwgdGhlbiB3ZSBjYW4ndCBkZXRlcm1pbmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlclxuXHRcdC8vIFVzZSBhbiBleHBsaWNpdCB6ZXJvIHRvIGF2b2lkIE5hTiAoZ2gtMzk2NClcblx0XHQpICkgfHwgMDtcblx0fVxuXG5cdHJldHVybiBkZWx0YTtcbn1cblxuZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApIHtcblxuXHQvLyBTdGFydCB3aXRoIGNvbXB1dGVkIHN0eWxlXG5cdHZhciBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblxuXHRcdC8vIFRvIGF2b2lkIGZvcmNpbmcgYSByZWZsb3csIG9ubHkgZmV0Y2ggYm94U2l6aW5nIGlmIHdlIG5lZWQgaXQgKGdoLTQzMjIpLlxuXHRcdC8vIEZha2UgY29udGVudC1ib3ggdW50aWwgd2Uga25vdyBpdCdzIG5lZWRlZCB0byBrbm93IHRoZSB0cnVlIHZhbHVlLlxuXHRcdGJveFNpemluZ05lZWRlZCA9ICFzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgZXh0cmEsXG5cdFx0aXNCb3JkZXJCb3ggPSBib3hTaXppbmdOZWVkZWQgJiZcblx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94LFxuXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBkaW1lbnNpb24sIHN0eWxlcyApLFxuXHRcdG9mZnNldFByb3AgPSBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApO1xuXG5cdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHQvLyBSZXR1cm4gYSBjb25mb3VuZGluZyBub24tcGl4ZWwgdmFsdWUgb3IgZmVpZ24gaWdub3JhbmNlLCBhcyBhcHByb3ByaWF0ZS5cblx0aWYgKCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7XG5cdFx0aWYgKCAhZXh0cmEgKSB7XG5cdFx0XHRyZXR1cm4gdmFsO1xuXHRcdH1cblx0XHR2YWwgPSBcImF1dG9cIjtcblx0fVxuXG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0Ly8gVXNlIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBmb3Igd2hlbiBib3ggc2l6aW5nIGlzIHVucmVsaWFibGUuXG5cdC8vIEluIHRob3NlIGNhc2VzLCB0aGUgY29tcHV0ZWQgdmFsdWUgY2FuIGJlIHRydXN0ZWQgdG8gYmUgYm9yZGVyLWJveC5cblx0aWYgKCAoICFzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgJiYgaXNCb3JkZXJCb3ggfHxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDEwIC0gMTErLCBFZGdlIDE1IC0gMTgrXG5cdFx0Ly8gSUUvRWRnZSBtaXNyZXBvcnQgYGdldENvbXB1dGVkU3R5bGVgIG9mIHRhYmxlIHJvd3Mgd2l0aCB3aWR0aC9oZWlnaHRcblx0XHQvLyBzZXQgaW4gQ1NTIHdoaWxlIGBvZmZzZXQqYCBwcm9wZXJ0aWVzIHJlcG9ydCBjb3JyZWN0IHZhbHVlcy5cblx0XHQvLyBJbnRlcmVzdGluZ2x5LCBpbiBzb21lIGNhc2VzIElFIDkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIGlzc3VlLlxuXHRcdCFzdXBwb3J0LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkgJiYgbm9kZU5hbWUoIGVsZW0sIFwidHJcIiApIHx8XG5cblx0XHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0XHQvLyBUaGlzIGhhcHBlbnMgZm9yIGlubGluZSBlbGVtZW50cyB3aXRoIG5vIGV4cGxpY2l0IHNldHRpbmcgKGdoLTM1NzEpXG5cdFx0dmFsID09PSBcImF1dG9cIiB8fFxuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSAtIDQuMyBvbmx5XG5cdFx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0XHQhcGFyc2VGbG9hdCggdmFsICkgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJpbmxpbmVcIiApICYmXG5cblx0XHQvLyBNYWtlIHN1cmUgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSAmIGNvbm5lY3RlZFxuXHRcdGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCI7XG5cblx0XHQvLyBXaGVyZSBhdmFpbGFibGUsIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBhcHByb3hpbWF0ZSBib3JkZXIgYm94IGRpbWVuc2lvbnMuXG5cdFx0Ly8gV2hlcmUgbm90IGF2YWlsYWJsZSAoZS5nLiwgU1ZHKSwgYXNzdW1lIHVucmVsaWFibGUgYm94LXNpemluZyBhbmQgaW50ZXJwcmV0IHRoZVxuXHRcdC8vIHJldHJpZXZlZCB2YWx1ZSBhcyBhIGNvbnRlbnQgYm94IGRpbWVuc2lvbi5cblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gb2Zmc2V0UHJvcCBpbiBlbGVtO1xuXHRcdGlmICggdmFsdWVJc0JvcmRlckJveCApIHtcblx0XHRcdHZhbCA9IGVsZW1bIG9mZnNldFByb3AgXTtcblx0XHR9XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgXCJcIiBhbmQgYXV0b1xuXHR2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwO1xuXG5cdC8vIEFkanVzdCBmb3IgdGhlIGVsZW1lbnQncyBib3ggbW9kZWxcblx0cmV0dXJuICggdmFsICtcblx0XHRib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRlbGVtLFxuXHRcdFx0ZGltZW5zaW9uLFxuXHRcdFx0ZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApLFxuXHRcdFx0dmFsdWVJc0JvcmRlckJveCxcblx0XHRcdHN0eWxlcyxcblxuXHRcdFx0Ly8gUHJvdmlkZSB0aGUgY3VycmVudCBjb21wdXRlZCBzaXplIHRvIHJlcXVlc3Qgc2Nyb2xsIGd1dHRlciBjYWxjdWxhdGlvbiAoZ2gtMzU4OSlcblx0XHRcdHZhbFxuXHRcdClcblx0KSArIFwicHhcIjtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdFxuXHQvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHlcblx0Y3NzSG9va3M6IHtcblx0XHRvcGFjaXR5OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHRcdC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5XG5cdFx0XHRcdFx0dmFyIHJldCA9IGN1ckNTUyggZWxlbSwgXCJvcGFjaXR5XCIgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmV0ID09PSBcIlwiID8gXCIxXCIgOiByZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gRG9uJ3QgYXV0b21hdGljYWxseSBhZGQgXCJweFwiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXNcblx0Y3NzTnVtYmVyOiB7XG5cdFx0XCJhbmltYXRpb25JdGVyYXRpb25Db3VudFwiOiB0cnVlLFxuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwiZ3JpZEFyZWFcIjogdHJ1ZSxcblx0XHRcImdyaWRDb2x1bW5cIjogdHJ1ZSxcblx0XHRcImdyaWRDb2x1bW5FbmRcIjogdHJ1ZSxcblx0XHRcImdyaWRDb2x1bW5TdGFydFwiOiB0cnVlLFxuXHRcdFwiZ3JpZFJvd1wiOiB0cnVlLFxuXHRcdFwiZ3JpZFJvd0VuZFwiOiB0cnVlLFxuXHRcdFwiZ3JpZFJvd1N0YXJ0XCI6IHRydWUsXG5cdFx0XCJsaW5lSGVpZ2h0XCI6IHRydWUsXG5cdFx0XCJvcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJvcmRlclwiOiB0cnVlLFxuXHRcdFwib3JwaGFuc1wiOiB0cnVlLFxuXHRcdFwid2lkb3dzXCI6IHRydWUsXG5cdFx0XCJ6SW5kZXhcIjogdHJ1ZSxcblx0XHRcInpvb21cIjogdHJ1ZVxuXHR9LFxuXG5cdC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmVcblx0Ly8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZVxuXHRjc3NQcm9wczoge30sXG5cblx0Ly8gR2V0IGFuZCBzZXQgdGhlIHN0eWxlIHByb3BlcnR5IG9uIGEgRE9NIE5vZGVcblx0c3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7XG5cblx0XHQvLyBEb24ndCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWVcblx0XHR2YXIgcmV0LCB0eXBlLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0gY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICksXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUuIFdlIGRvbid0XG5cdFx0Ly8gd2FudCB0byBxdWVyeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWVcblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG5cdFx0XHQvLyBDb252ZXJ0IFwiKz1cIiBvciBcIi09XCIgdG8gcmVsYXRpdmUgbnVtYmVycyAodHJhYy03MzQ1KVxuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICYmICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7XG5cdFx0XHRcdHZhbHVlID0gYWRqdXN0Q1NTKCBlbGVtLCBuYW1lLCByZXQgKTtcblxuXHRcdFx0XHQvLyBGaXhlcyBidWcgdHJhYy05MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKHRyYWMtNzExNilcblx0XHRcdGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpXG5cdFx0XHQvLyBUaGUgaXNDdXN0b21Qcm9wIGNoZWNrIGNhbiBiZSByZW1vdmVkIGluIGpRdWVyeSA0LjAgd2hlbiB3ZSBvbmx5IGF1dG8tYXBwZW5kXG5cdFx0XHQvLyBcInB4XCIgdG8gYSBmZXcgaGFyZGNvZGVkIHZhbHVlcy5cblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiAmJiAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0XHR2YWx1ZSArPSByZXQgJiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8gXCJcIiA6IFwicHhcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBiYWNrZ3JvdW5kLSogcHJvcHMgYWZmZWN0IG9yaWdpbmFsIGNsb25lJ3MgdmFsdWVzXG5cdFx0XHRpZiAoICFzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSAmJiB2YWx1ZSA9PT0gXCJcIiAmJiBuYW1lLmluZGV4T2YoIFwiYmFja2dyb3VuZFwiICkgPT09IDAgKSB7XG5cdFx0XHRcdHN0eWxlWyBuYW1lIF0gPSBcImluaGVyaXRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwgdXNlIHRoYXQgdmFsdWUsIG90aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHxcblx0XHRcdFx0KCB2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdGlmICggaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0XHRcdHN0eWxlLnNldFByb3BlcnR5KCBuYW1lLCB2YWx1ZSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0eWxlWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdFxuXHRcdFx0cmV0dXJuIHN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXHR9LFxuXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7XG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0gY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUuIFdlIGRvbid0XG5cdFx0Ly8gd2FudCB0byBtb2RpZnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdFxuXHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgXCJub3JtYWxcIiB0byBjb21wdXRlZCB2YWx1ZVxuXHRcdGlmICggdmFsID09PSBcIm5vcm1hbFwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtICkge1xuXHRcdFx0dmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljXG5cdFx0aWYgKCBleHRyYSA9PT0gXCJcIiB8fCBleHRyYSApIHtcblx0XHRcdG51bSA9IHBhcnNlRmxvYXQoIHZhbCApO1xuXHRcdFx0cmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGlzRmluaXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsO1xuXHRcdH1cblxuXHRcdHJldHVybiB2YWw7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJoZWlnaHRcIiwgXCJ3aWR0aFwiIF0sIGZ1bmN0aW9uKCBfaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKTtcblx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIG1hdGNoZXMsXG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXG5cdFx0XHRcdC8vIE9ubHkgcmVhZCBzdHlsZXMucG9zaXRpb24gaWYgdGhlIHRlc3QgaGFzIGEgY2hhbmNlIHRvIGZhaWxcblx0XHRcdFx0Ly8gdG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdy5cblx0XHRcdFx0c2Nyb2xsYm94U2l6ZUJ1Z2d5ID0gIXN1cHBvcnQuc2Nyb2xsYm94U2l6ZSgpICYmXG5cdFx0XHRcdFx0c3R5bGVzLnBvc2l0aW9uID09PSBcImFic29sdXRlXCIsXG5cblx0XHRcdFx0Ly8gVG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdywgb25seSBmZXRjaCBib3hTaXppbmcgaWYgd2UgbmVlZCBpdCAoZ2gtMzk5MSlcblx0XHRcdFx0Ym94U2l6aW5nTmVlZGVkID0gc2Nyb2xsYm94U2l6ZUJ1Z2d5IHx8IGV4dHJhLFxuXHRcdFx0XHRpc0JvcmRlckJveCA9IGJveFNpemluZ05lZWRlZCAmJlxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0XHRcdHN1YnRyYWN0ID0gZXh0cmEgP1xuXHRcdFx0XHRcdGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdFx0XHRcdGVsZW0sXG5cdFx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0XHRleHRyYSxcblx0XHRcdFx0XHRcdGlzQm9yZGVyQm94LFxuXHRcdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdFx0KSA6XG5cdFx0XHRcdFx0MDtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdW5yZWxpYWJsZSBib3JkZXItYm94IGRpbWVuc2lvbnMgYnkgY29tcGFyaW5nIG9mZnNldCogdG8gY29tcHV0ZWQgYW5kXG5cdFx0XHQvLyBmYWtpbmcgYSBjb250ZW50LWJveCB0byBnZXQgYm9yZGVyIGFuZCBwYWRkaW5nIChnaC0zNjk5KVxuXHRcdFx0aWYgKCBpc0JvcmRlckJveCAmJiBzY3JvbGxib3hTaXplQnVnZ3kgKSB7XG5cdFx0XHRcdHN1YnRyYWN0IC09IE1hdGguY2VpbChcblx0XHRcdFx0XHRlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF0gLVxuXHRcdFx0XHRcdHBhcnNlRmxvYXQoIHN0eWxlc1sgZGltZW5zaW9uIF0gKSAtXG5cdFx0XHRcdFx0Ym94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIFwiYm9yZGVyXCIsIGZhbHNlLCBzdHlsZXMgKSAtXG5cdFx0XHRcdFx0MC41XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVlZGVkXG5cdFx0XHRpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmXG5cdFx0XHRcdCggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApICE9PSBcInB4XCIgKSB7XG5cblx0XHRcdFx0ZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gPSB2YWx1ZTtcblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBkaW1lbnNpb24gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKTtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5jc3NIb29rcy5tYXJnaW5MZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sIFwibWFyZ2luTGVmdFwiICkgKSB8fFxuXHRcdFx0XHRlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLVxuXHRcdFx0XHRcdHN3YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdFx0fSApXG5cdFx0XHQpICsgXCJweFwiO1xuXHRcdH1cblx0fVxuKTtcblxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xualF1ZXJ5LmVhY2goIHtcblx0bWFyZ2luOiBcIlwiLFxuXHRwYWRkaW5nOiBcIlwiLFxuXHRib3JkZXI6IFwiV2lkdGhcIlxufSwgZnVuY3Rpb24oIHByZWZpeCwgc3VmZml4ICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdID0ge1xuXHRcdGV4cGFuZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGkgPSAwLFxuXHRcdFx0XHRleHBhbmRlZCA9IHt9LFxuXG5cdFx0XHRcdC8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZ1xuXHRcdFx0XHRwYXJ0cyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLnNwbGl0KCBcIiBcIiApIDogWyB2YWx1ZSBdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCA0OyBpKysgKSB7XG5cdFx0XHRcdGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID1cblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBleHBhbmRlZDtcblx0XHR9XG5cdH07XG5cblx0aWYgKCBwcmVmaXggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdHZhciBzdHlsZXMsIGxlbixcblx0XHRcdFx0bWFwID0ge30sXG5cdFx0XHRcdGkgPSAwO1xuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIG5hbWUgKSApIHtcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7XG5cdFx0XHRcdGxlbiA9IG5hbWUubGVuZ3RoO1xuXG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdG1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNlLCBzdHlsZXMgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBtYXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1ZSApIDpcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApO1xuXHRcdH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9XG59ICk7XG5cblxuZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkge1xuXHRyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApO1xufVxualF1ZXJ5LlR3ZWVuID0gVHdlZW47XG5cblR3ZWVuLnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IFR3ZWVuLFxuXHRpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7XG5cdFx0dGhpcy5lbGVtID0gZWxlbTtcblx0XHR0aGlzLnByb3AgPSBwcm9wO1xuXHRcdHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHQ7XG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9ucztcblx0XHR0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpO1xuXHRcdHRoaXMuZW5kID0gZW5kO1xuXHRcdHRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdH0sXG5cdGN1cjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTtcblxuXHRcdHJldHVybiBob29rcyAmJiBob29rcy5nZXQgP1xuXHRcdFx0aG9va3MuZ2V0KCB0aGlzICkgOlxuXHRcdFx0VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCggdGhpcyApO1xuXHR9LFxuXHRydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkge1xuXHRcdHZhciBlYXNlZCxcblx0XHRcdGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmR1cmF0aW9uICkge1xuXHRcdFx0dGhpcy5wb3MgPSBlYXNlZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFzaW5nIF0oXG5cdFx0XHRcdHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvblxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7XG5cdFx0fVxuXHRcdHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKSAqIGVhc2VkICsgdGhpcy5zdGFydDtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLnN0ZXAgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBob29rcy5zZXQgKSB7XG5cdFx0XHRob29rcy5zZXQoIHRoaXMgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCggdGhpcyApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufTtcblxuVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlO1xuXG5Ud2Vlbi5wcm9wSG9va3MgPSB7XG5cdF9kZWZhdWx0OiB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0XHR2YXIgcmVzdWx0O1xuXG5cdFx0XHQvLyBVc2UgYSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBkaXJlY3RseSB3aGVuIGl0IGlzIG5vdCBhIERPTSBlbGVtZW50LFxuXHRcdFx0Ly8gb3Igd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBzdHlsZSBwcm9wZXJ0eSB0aGF0IGV4aXN0cy5cblx0XHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAhPT0gMSB8fFxuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJiB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5XG5cdFx0XHQvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLlxuXHRcdFx0Ly8gU2ltcGxlIHZhbHVlcyBzdWNoIGFzIFwiMTBweFwiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7XG5cdFx0XHQvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzIFwicm90YXRlKDFyYWQpXCIgYXJlIHJldHVybmVkIGFzLWlzLlxuXHRcdFx0cmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgXCJcIiApO1xuXG5cdFx0XHQvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kIFwiYXV0b1wiIGFyZSBjb252ZXJ0ZWQgdG8gMC5cblx0XHRcdHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gXCJhdXRvXCIgPyAwIDogcmVzdWx0O1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cblx0XHRcdC8vIFVzZSBzdGVwIGhvb2sgZm9yIGJhY2sgY29tcGF0LlxuXHRcdFx0Ly8gVXNlIGNzc0hvb2sgaWYgaXRzIHRoZXJlLlxuXHRcdFx0Ly8gVXNlIC5zdHlsZSBpZiBhdmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZS5cblx0XHRcdGlmICggalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHtcblx0XHRcdFx0alF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTtcblx0XHRcdH0gZWxzZSBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSB8fFxuXHRcdFx0XHRcdHR3ZWVuLmVsZW0uc3R5bGVbIGZpbmFsUHJvcE5hbWUoIHR3ZWVuLnByb3AgKSBdICE9IG51bGwgKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi9cblxuXHRcdFx0XHQvLyBUaGUgZmluYWwgc3RlcCBvZiBhIFwiaGlkZVwiIGFuaW1hdGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1lbnRcblx0XHRcdFx0aWYgKCAhaGlkZGVuICkge1xuXHRcdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJmeHNob3dcIiApO1xuXHRcdFx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdC8vIFBlci1wcm9wZXJ0eSBzZXR1cFxuXHRcdHByb3BUd2VlbiA9IGNyZWF0ZVR3ZWVuKCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDogMCwgcHJvcCwgYW5pbSApO1xuXHRcdGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkge1xuXHRcdFx0ZGF0YVNob3dbIHByb3AgXSA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRwcm9wVHdlZW4uZW5kID0gcHJvcFR3ZWVuLnN0YXJ0O1xuXHRcdFx0XHRwcm9wVHdlZW4uc3RhcnQgPSAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHtcblx0dmFyIGluZGV4LCBuYW1lLCBlYXNpbmcsIHZhbHVlLCBob29rcztcblxuXHQvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBjc3NIb29rIHBhc3Ncblx0Zm9yICggaW5kZXggaW4gcHJvcHMgKSB7XG5cdFx0bmFtZSA9IGNhbWVsQ2FzZSggaW5kZXggKTtcblx0XHRlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07XG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRlYXNpbmcgPSB2YWx1ZVsgMSBdO1xuXHRcdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07XG5cdFx0fVxuXG5cdFx0aWYgKCBpbmRleCAhPT0gbmFtZSApIHtcblx0XHRcdHByb3BzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgaW5kZXggXTtcblx0XHR9XG5cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdO1xuXHRcdGlmICggaG9va3MgJiYgXCJleHBhbmRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBuYW1lIF07XG5cblx0XHRcdC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5cy5cblx0XHRcdC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3QgXCJuYW1lXCJcblx0XHRcdGZvciAoIGluZGV4IGluIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7XG5cdFx0XHRcdFx0cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5kZXggXTtcblx0XHRcdFx0XHRzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25zICkge1xuXHR2YXIgcmVzdWx0LFxuXHRcdHN0b3BwZWQsXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzLmxlbmd0aCxcblx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvclxuXHRcdFx0ZGVsZXRlIHRpY2suZWxlbTtcblx0XHR9ICksXG5cdFx0dGljayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0XHRyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCAyLjMgb25seVxuXHRcdFx0XHQvLyBBcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgYDEgLSAoIDAuNSB8fCAwIClgICh0cmFjLTEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zXG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0XG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcblx0XHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0b3BwZWQgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXHRcdH0gKSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0cmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggcmVzdWx0LnN0b3AgKSApIHtcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID1cblx0XHRcdFx0XHRyZXN1bHQuc3RvcC5iaW5kKCByZXN1bHQgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7XG5cdFx0YW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7XG5cdH1cblxuXHQvLyBBdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRhbmltYXRpb25cblx0XHQucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzIClcblx0XHQuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKVxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcblx0XHQuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTtcblxuXHRqUXVlcnkuZngudGltZXIoXG5cdFx0alF1ZXJ5LmV4dGVuZCggdGljaywge1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdGFuaW06IGFuaW1hdGlvbixcblx0XHRcdHF1ZXVlOiBhbmltYXRpb24ub3B0cy5xdWV1ZVxuXHRcdH0gKVxuXHQpO1xuXG5cdHJldHVybiBhbmltYXRpb247XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblxuXHR0d2VlbmVyczoge1xuXHRcdFwiKlwiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRcdHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICk7XG5cdFx0XHRhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJjc3NOdW0uZXhlYyggdmFsdWUgKSwgdHdlZW4gKTtcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9IF1cblx0fSxcblxuXHR0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0gQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXJzOiBbIGRlZmF1bHRQcmVmaWx0ZXIgXSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy5wdXNoKCBjYWxsYmFjayApO1xuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0aXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCxcblx0XHRkdXJhdGlvbjogc3BlZWQsXG5cdFx0ZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFpc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmdcblx0fTtcblxuXHQvLyBHbyB0byB0aGUgZW5kIHN0YXRlIGlmIGZ4IGFyZSBvZmZcblx0aWYgKCBqUXVlcnkuZngub2ZmICkge1xuXHRcdG9wdC5kdXJhdGlvbiA9IDA7XG5cblx0fSBlbHNlIHtcblx0XHRpZiAoIHR5cGVvZiBvcHQuZHVyYXRpb24gIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiBcImZ4XCJcblx0aWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7XG5cdFx0b3B0LnF1ZXVlID0gXCJmeFwiO1xuXHR9XG5cblx0Ly8gUXVldWVpbmdcblx0b3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTtcblxuXHRvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDBcblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlkZGVuV2l0aGluVHJlZSApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgXCJmaW5pc2hcIiApICkge1xuXHRcdFx0XHRcdGFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0ZG9BbmltYXRpb24uZmluaXNoID0gZG9BbmltYXRpb247XG5cblx0XHRyZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/XG5cdFx0XHR0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOlxuXHRcdFx0dGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHtcblx0XHR2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkge1xuXHRcdFx0dmFyIHN0b3AgPSBob29rcy5zdG9wO1xuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRzdG9wKCBnb3RvRW5kICk7XG5cdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRnb3RvRW5kID0gY2xlYXJRdWV1ZTtcblx0XHRcdGNsZWFyUXVldWUgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBjbGVhclF1ZXVlICkge1xuXHRcdFx0dGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApO1xuXG5cdFx0XHRpZiAoIGluZGV4ICkge1xuXHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkge1xuXHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpbmRleCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkge1xuXHRcdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiZcblx0XHRcdFx0XHQoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHtcblxuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIGdvdG9FbmQgKTtcblx0XHRcdFx0XHRkZXF1ZXVlID0gZmFsc2U7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLlxuXHRcdFx0Ly8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaFxuXHRcdFx0Ly8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLlxuXHRcdFx0aWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBfaSwgbmFtZSApIHtcblx0dmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gXCJib29sZWFuXCIgP1xuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcblx0XHRcdHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbWUsIHRydWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxuLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9uc1xualF1ZXJ5LmVhY2goIHtcblx0c2xpZGVEb3duOiBnZW5GeCggXCJzaG93XCIgKSxcblx0c2xpZGVVcDogZ2VuRngoIFwiaGlkZVwiICksXG5cdHNsaWRlVG9nZ2xlOiBnZW5GeCggXCJ0b2dnbGVcIiApLFxuXHRmYWRlSW46IHsgb3BhY2l0eTogXCJzaG93XCIgfSxcblx0ZmFkZU91dDogeyBvcGFjaXR5OiBcImhpZGVcIiB9LFxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxufSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LnRpbWVycyA9IFtdO1xualF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHtcblx0dmFyIHRpbWVyLFxuXHRcdGkgPSAwLFxuXHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnM7XG5cblx0ZnhOb3cgPSBEYXRlLm5vdygpO1xuXG5cdGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHtcblx0XHR0aW1lciA9IHRpbWVyc1sgaSBdO1xuXG5cdFx0Ly8gUnVuIHRoZSB0aW1lciBhbmQgc2FmZWx5IHJlbW92ZSBpdCB3aGVuIGRvbmUgKGFsbG93aW5nIGZvciBleHRlcm5hbCByZW1vdmFsKVxuXHRcdGlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkge1xuXHRcdFx0dGltZXJzLnNwbGljZSggaS0tLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCAhdGltZXJzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZnguc3RvcCgpO1xuXHR9XG5cdGZ4Tm93ID0gdW5kZWZpbmVkO1xufTtcblxualF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRpbWVyICkge1xuXHRqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7XG5cdGpRdWVyeS5meC5zdGFydCgpO1xufTtcblxualF1ZXJ5LmZ4LmludGVydmFsID0gMTM7XG5qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0aWYgKCBpblByb2dyZXNzICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGluUHJvZ3Jlc3MgPSB0cnVlO1xuXHRzY2hlZHVsZSgpO1xufTtcblxualF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHtcblx0aW5Qcm9ncmVzcyA9IG51bGw7XG59O1xuXG5qUXVlcnkuZnguc3BlZWRzID0ge1xuXHRzbG93OiA2MDAsXG5cdGZhc3Q6IDIwMCxcblxuXHQvLyBEZWZhdWx0IHNwZWVkXG5cdF9kZWZhdWx0OiA0MDBcbn07XG5cblxuLy8gQmFzZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLlxualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTtcblx0XHRob29rcy5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSApO1xufTtcblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKSxcblx0XHRzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInNlbGVjdFwiICksXG5cdFx0b3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9wdGlvblwiICkgKTtcblxuXHRpbnB1dC50eXBlID0gXCJjaGVja2JveFwiO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjMgb25seVxuXHQvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSBcIm9uXCJcblx0c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09IFwiXCI7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2VsZWN0XG5cdHN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvXG5cdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdGlucHV0LnZhbHVlID0gXCJ0XCI7XG5cdGlucHV0LnR5cGUgPSBcInJhZGlvXCI7XG5cdHN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSBcInRcIjtcbn0gKSgpO1xuXG5cbnZhciBib29sSG9vayxcblx0YXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTtcblx0XHR9XG5cblx0XHQvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uXG5cdFx0Ly8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZFxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHQoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiB1bmRlZmluZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSBudWxsICkge1xuXHRcdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArIFwiXCIgKTtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxuXHRcdHJldHVybiByZXQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDtcblx0fSxcblxuXHRhdHRySG9va3M6IHtcblx0XHR0eXBlOiB7XG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSBcInJhZGlvXCIgJiZcblx0XHRcdFx0XHRub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHR2YXIgbmFtZSxcblx0XHRcdGkgPSAwLFxuXG5cdFx0XHQvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTJcblx0XHRcdGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cblx0XHRpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0d2hpbGUgKCAoIG5hbWUgPSBhdHRyTmFtZXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0ZXNcbmJvb2xIb29rID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcblx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZVxuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cbn07XG5cbmpRdWVyeS5lYWNoKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1xcdysvZyApLCBmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cdHZhciBnZXR0ZXIgPSBhdHRySGFuZGxlWyBuYW1lIF0gfHwgalF1ZXJ5LmZpbmQuYXR0cjtcblxuXHRhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHJldCwgaGFuZGxlLFxuXHRcdFx0bG93ZXJjYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmICggIWlzWE1MICkge1xuXG5cdFx0XHQvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyXG5cdFx0XHRoYW5kbGUgPSBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF07XG5cdFx0XHRhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSByZXQ7XG5cdFx0XHRyZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/XG5cdFx0XHRcdGxvd2VyY2FzZU5hbWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9O1xufSApO1xuXG5cblxuXG52YXIgcmZvY3VzYWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rc1xuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1bIG5hbWUgXTtcblx0fSxcblxuXHRwcm9wSG9va3M6IHtcblx0XHR0YWJJbmRleDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0XHRcdC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZVxuXHRcdFx0XHQvLyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXRcblx0XHRcdFx0Ly8gVXNlIHByb3BlciBhdHRyaWJ1dGUgcmV0cmlldmFsICh0cmFjLTEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NOYW1lcywgY3VyLCBjdXJWYWx1ZSwgY2xhc3NOYW1lLCBpLCBmaW5hbFZhbHVlO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzTmFtZXMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0Y3VyID0gdGhpcy5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBjbGFzc05hbWVzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSBdO1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXNzTmFtZSArIFwiIFwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApO1xuXHRcdFx0XHRcdGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLCBmaW5hbFZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0cmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NOYW1lcywgY3VyLCBjdXJWYWx1ZSwgY2xhc3NOYW1lLCBpLCBmaW5hbFZhbHVlO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYXR0ciggXCJjbGFzc1wiLCBcIlwiICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc05hbWVzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCB0aGlzICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gdGhpcy5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBjbGFzc05hbWVzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSBdO1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzXG5cdFx0XHRcdFx0XHR3aGlsZSAoIGN1ci5pbmRleE9mKCBcIiBcIiArIGNsYXNzTmFtZSArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgY2xhc3NOYW1lcywgY2xhc3NOYW1lLCBpLCBzZWxmLFxuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZSxcblx0XHRcdGlzVmFsaWRWYWx1ZSA9IHR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGNsYXNzTmFtZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBpc1ZhbGlkVmFsdWUgKSB7XG5cblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpIF07XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XHRcIlwiIDpcblx0XHRcdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiApIHx8IFwiXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZSwgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Y2xhc3NOYW1lID0gXCIgXCIgKyBzZWxlY3RvciArIFwiIFwiO1xuXHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHQoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgXCIgXCIgKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xICkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn0gKTtcblxuXG5cblxudmFyIHJyZXR1cm4gPSAvXFxyL2c7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsIHZhbHVlSXNGdW5jdGlvbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF07XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHxcblx0XHRcdFx0XHRqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHRcdGlmICggaG9va3MgJiZcblx0XHRcdFx0XHRcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdFx0KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIFwidmFsdWVcIiApICkgIT09IHVuZGVmaW5lZFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0ID0gZWxlbS52YWx1ZTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzXG5cdFx0XHRcdGlmICggdHlwZW9mIHJldCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0LnJlcGxhY2UoIHJyZXR1cm4sIFwiXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlclxuXHRcdFx0XHRyZXR1cm4gcmV0ID09IG51bGwgPyBcIlwiIDogcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0dmFyIHZhbDtcblxuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFsID0gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzIFwiXCI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmdcblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHZhbCA9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBBcnJheS5pc0FycmF5KCB2YWwgKSApIHtcblx0XHRcdFx0dmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHQvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZ1xuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCBcInZhbHVlXCIgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHZhbEhvb2tzOiB7XG5cdFx0b3B0aW9uOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHRcdHZhciB2YWwgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInZhbHVlXCIgKTtcblx0XHRcdFx0cmV0dXJuIHZhbCAhPSBudWxsID9cblx0XHRcdFx0XHR2YWwgOlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExIG9ubHlcblx0XHRcdFx0XHQvLyBvcHRpb24udGV4dCB0aHJvd3MgZXhjZXB0aW9ucyAodHJhYy0xNDY4NiwgdHJhYy0xNDg1OClcblx0XHRcdFx0XHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0c3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbiwgaSxcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdGlmICggaW5kZXggPCAwICkge1xuXHRcdFx0XHRcdGkgPSBtYXg7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpID0gb25lID8gaW5kZXggOiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKHRyYWMtMjU1MSlcblx0XHRcdFx0XHRpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiZcblxuXHRcdFx0XHRcdFx0XHQvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHRcdFx0XHRcdCFvcHRpb24uZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdFx0KCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHxcblx0XHRcdFx0XHRcdFx0XHQhbm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCBcIm9wdGdyb3VwXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XG5cblx0XHRcdFx0XHRcdC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheVxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgb3B0aW9uU2V0LCBvcHRpb24sXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHR2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLFxuXHRcdFx0XHRcdGkgPSBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXG5cdFx0XHRcdFx0aWYgKCBvcHRpb24uc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0b3B0aW9uU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNzaWduICovXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldFxuXHRcdFx0XHRpZiAoICFvcHRpb25TZXQgKSB7XG5cdFx0XHRcdFx0ZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXJcbmpRdWVyeS5lYWNoKCBbIFwicmFkaW9cIiwgXCJjaGVja2JveFwiIF0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSggZWxlbSApLnZhbCgpLCB2YWx1ZSApID4gLTEgKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHtcblx0XHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IG51bGwgPyBcIm9uXCIgOiBlbGVtLnZhbHVlO1xuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvblxuXG5cbnN1cHBvcnQuZm9jdXNpbiA9IFwib25mb2N1c2luXCIgaW4gd2luZG93O1xuXG5cbnZhciByZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxcblx0c3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgPSBmdW5jdGlvbiggZSApIHtcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9O1xuXG5qUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZXZlbnQsIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHtcblxuXHRcdHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsIGxhc3RFbGVtZW50LFxuXHRcdFx0ZXZlbnRQYXRoID0gWyBlbGVtIHx8IGRvY3VtZW50IF0sXG5cdFx0XHR0eXBlID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcInR5cGVcIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LFxuXHRcdFx0bmFtZXNwYWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgXCJuYW1lc3BhY2VcIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCBcIi5cIiApIDogW107XG5cblx0XHRjdXIgPSBsYXN0RWxlbWVudCA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3dcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoIFwiLlwiICkgPiAtMSApIHtcblxuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxuXHRcdFx0bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoIFwiLlwiICk7XG5cdFx0XHR0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpO1xuXHRcdFx0bmFtZXNwYWNlcy5zb3J0KCk7XG5cdFx0fVxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZiggXCI6XCIgKSA8IDAgJiYgXCJvblwiICsgdHlwZTtcblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZ1xuXHRcdGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0ZXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSBcIm9iamVjdFwiICYmIGV2ZW50ICk7XG5cblx0XHQvLyBUcmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlzIHRydWUpXG5cdFx0ZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7XG5cdFx0ZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApO1xuXHRcdGV2ZW50LnJuYW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgP1xuXHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICkgOlxuXHRcdFx0bnVsbDtcblxuXHRcdC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZFxuXHRcdGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBlbGVtO1xuXHRcdH1cblxuXHRcdC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3Rcblx0XHRkYXRhID0gZGF0YSA9PSBudWxsID9cblx0XHRcdFsgZXZlbnQgXSA6XG5cdFx0XHRqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTtcblxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcblx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICh0cmFjLTk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICh0cmFjLTk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTtcblx0XHRcdGlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUgKyB0eXBlICkgKSB7XG5cdFx0XHRcdGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggY3VyICk7XG5cdFx0XHRcdHRtcCA9IGN1cjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT25seSBhZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hlZCBET00pXG5cdFx0XHRpZiAoIHRtcCA9PT0gKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGhcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggY3VyID0gZXZlbnRQYXRoWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0bGFzdEVsZW1lbnQgPSBjdXI7XG5cdFx0XHRldmVudC50eXBlID0gaSA+IDEgP1xuXHRcdFx0XHRidWJibGVUeXBlIDpcblx0XHRcdFx0c3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBqUXVlcnkgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgXCJldmVudHNcIiApIHx8IE9iamVjdC5jcmVhdGUoIG51bGwgKSApWyBldmVudC50eXBlIF0gJiZcblx0XHRcdFx0ZGF0YVByaXYuZ2V0KCBjdXIsIFwiaGFuZGxlXCIgKTtcblx0XHRcdGlmICggaGFuZGxlICkge1xuXHRcdFx0XHRoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOYXRpdmUgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07XG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0YSggY3VyICkgKSB7XG5cdFx0XHRcdGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGV2ZW50LnR5cGUgPSB0eXBlO1xuXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cblx0XHRcdGlmICggKCAhc3BlY2lhbC5fZGVmYXVsdCB8fFxuXHRcdFx0XHRzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJlxuXHRcdFx0XHRhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cblx0XHRcdFx0Ly8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVudC5cblx0XHRcdFx0Ly8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKHRyYWMtNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gSGFuZGxlOiByZWd1bGFyIG5vZGVzICh2aWEgYHRoaXMub3duZXJEb2N1bWVudGApLCB3aW5kb3dcblx0XHRcdFx0Ly8gKHZpYSBgdGhpcy5kb2N1bWVudGApICYgZG9jdW1lbnQgKHZpYSBgdGhpc2ApLlxuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMuZG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLmRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0gKTtcbn1cbnZhciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcblxudmFyIG5vbmNlID0geyBndWlkOiBEYXRlLm5vdygpIH07XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbCwgcGFyc2VyRXJyb3JFbGVtO1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0Ly8gSUUgdGhyb3dzIG9uIHBhcnNlRnJvbVN0cmluZyB3aXRoIGludmFsaWQgaW5wdXQuXG5cdHRyeSB7XG5cdFx0eG1sID0gKCBuZXcgd2luZG93LkRPTVBhcnNlcigpICkucGFyc2VGcm9tU3RyaW5nKCBkYXRhLCBcInRleHQveG1sXCIgKTtcblx0fSBjYXRjaCAoIGUgKSB7fVxuXG5cdHBhcnNlckVycm9yRWxlbSA9IHhtbCAmJiB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApWyAwIF07XG5cdGlmICggIXhtbCB8fCBwYXJzZXJFcnJvckVsZW0gKSB7XG5cdFx0alF1ZXJ5LmVycm9yKCBcIkludmFsaWQgWE1MOiBcIiArIChcblx0XHRcdHBhcnNlckVycm9yRWxlbSA/XG5cdFx0XHRcdGpRdWVyeS5tYXAoIHBhcnNlckVycm9yRWxlbS5jaGlsZE5vZGVzLCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsLnRleHRDb250ZW50O1xuXHRcdFx0XHR9ICkuam9pbiggXCJcXG5cIiApIDpcblx0XHRcdFx0ZGF0YVxuXHRcdCkgKTtcblx0fVxuXHRyZXR1cm4geG1sO1xufTtcblxuXG52YXJcblx0cmJyYWNrZXQgPSAvXFxbXFxdJC8sXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcblx0cnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFxuXHRyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHtcblx0dmFyIG5hbWU7XG5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBvYmogKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLlxuXHRcdGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkge1xuXHRcdFx0aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHtcblxuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKFxuXHRcdFx0XHRcdHByZWZpeCArIFwiW1wiICsgKCB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9IG51bGwgPyBpIDogXCJcIiApICsgXCJdXCIsXG5cdFx0XHRcdFx0dixcblx0XHRcdFx0XHR0cmFkaXRpb25hbCxcblx0XHRcdFx0XHRhZGRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIHRvVHlwZSggb2JqICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1bmN0aW9uICkge1xuXG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlXG5cdFx0XHR2YXIgdmFsdWUgPSBpc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbigpIDpcblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uO1xuXG5cdFx0XHRzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArIFwiPVwiICtcblx0XHRcdFx0ZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICk7XG5cdFx0fTtcblxuXHRpZiAoIGEgPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9ICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApLm1hcCggZnVuY3Rpb24oIF9pLCBlbGVtICkge1xuXHRcdFx0dmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpO1xuXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWwgKSApIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0fSApLmdldCgpO1xuXHR9XG59ICk7XG5cblxudmFyXG5cdHIyMCA9IC8lMjAvZyxcblx0cmhhc2ggPSAvIy4qJC8sXG5cdHJhbnRpQ2FjaGUgPSAvKFs/Jl0pXz1bXiZdKi8sXG5cdHJoZWFkZXJzID0gL14oLio/KTpbIFxcdF0qKFteXFxyXFxuXSopJC9tZyxcblxuXHQvLyB0cmFjLTc2NTMsIHRyYWMtODEyNSwgdHJhYy04MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb25cblx0cmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxcblx0cm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sXG5cdHJwcm90b2NvbCA9IC9eXFwvXFwvLyxcblxuXHQvKiBQcmVmaWx0ZXJzXG5cdCAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFUeXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpXG5cdCAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6XG5cdCAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0cmFuc3BvcnRcblx0ICogICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0cnVlKVxuXHQgKiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogNSkgZXhlY3V0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGludWUgZG93biB0byBcIipcIiBpZiBuZWVkZWRcblx0ICovXG5cdHByZWZpbHRlcnMgPSB7fSxcblxuXHQvKiBUcmFuc3BvcnRzIGJpbmRpbmdzXG5cdCAqIDEpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogMikgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiAzKSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byBcIipcIiBpZiBuZWVkZWRcblx0ICovXG5cdHRyYW5zcG9ydHMgPSB7fSxcblxuXHQvLyBBdm9pZCBjb21tZW50LXByb2xvZyBjaGFyIHNlcXVlbmNlICh0cmFjLTEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxub3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9IFwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggZnVuYyApICkge1xuXG5cdFx0XHQvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uXG5cdFx0XHR3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJlcGVuZCBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0aWYgKCBkYXRhVHlwZVsgMCBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkucHVzaCggZnVuYyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHNcbmZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7XG5cblx0dmFyIGluc3BlY3RlZCA9IHt9LFxuXHRcdHNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApO1xuXG5cdGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkge1xuXHRcdHZhciBzZWxlY3RlZDtcblx0XHRpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlO1xuXHRcdGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7XG5cdFx0XHR2YXIgZGF0YVR5cGVPclRyYW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApO1xuXHRcdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7XG5cblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0cmV0dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyBcIipcIiBdICYmIGluc3BlY3QoIFwiKlwiICk7XG59XG5cbi8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9uc1xuLy8gdGhhdCB0YWtlcyBcImZsYXRcIiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZClcbi8vIEZpeGVzIHRyYWMtOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDpcblx0XHRcdFx0alF1ZXJ5LmV2ZW50LFxuXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LFxuXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblxuXHRcdFx0Ly8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlXG5cdFx0XHRzdHJBYm9ydCA9IFwiY2FuY2VsZWRcIixcblxuXHRcdFx0Ly8gRmFrZSB4aHJcblx0XHRcdGpxWEhSID0ge1xuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxuXG5cdFx0XHRcdC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWRcblx0XHRcdFx0Z2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSArIFwiIFwiIF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0KCByZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSArIFwiIFwiIF0gfHwgW10gKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KCBtYXRjaFsgMiBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSArIFwiIFwiIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoLmpvaW4oIFwiLCBcIiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFJhdyBzdHJpbmdcblx0XHRcdFx0Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGxldGVkID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxuXHRcdFx0XHRzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSA9XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IG5hbWU7XG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRzLm1pbWVUeXBlID0gdHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdFx0c3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHtcblx0XHRcdFx0XHR2YXIgY29kZTtcblx0XHRcdFx0XHRpZiAoIG1hcCApIHtcblx0XHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrc1xuXHRcdFx0XHRcdFx0XHRqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0Zm9yICggY29kZSBpbiBtYXAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSByZXF1ZXN0XG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHR2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDtcblx0XHRcdFx0XHRpZiAoIHRyYW5zcG9ydCApIHtcblx0XHRcdFx0XHRcdHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRvbmUoIDAsIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Ly8gQXR0YWNoIGRlZmVycmVkc1xuXHRcdGRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7XG5cblx0XHQvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkIChwcmVmaWx0ZXJzIG1pZ2h0IGV4cGVjdCBpdClcblx0XHQvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKHRyYWMtMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgdHJhYy0xMjAwNFxuXHRcdHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7XG5cblx0XHQvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0XG5cdFx0cy5kYXRhVHlwZXMgPSAoIHMuZGF0YVR5cGUgfHwgXCIqXCIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cblx0XHQvLyBBIGNyb3NzLWRvbWFpbiByZXF1ZXN0IGlzIGluIG9yZGVyIHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IG9yaWdpbi5cblx0XHRpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHtcblx0XHRcdHVybEFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHRcdC8vIElFIHRocm93cyBleGNlcHRpb24gb24gYWNjZXNzaW5nIHRoZSBocmVmIHByb3BlcnR5IGlmIHVybCBpcyBtYWxmb3JtZWQsXG5cdFx0XHQvLyBlLmcuIGh0dHA6Ly9leGFtcGxlLmNvbTo4MHgvXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHMudXJsO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExIG9ubHlcblx0XHRcdFx0Ly8gQW5jaG9yJ3MgaG9zdCBwcm9wZXJ0eSBpc24ndCBjb3JyZWN0bHkgc2V0IHdoZW4gcy51cmwgaXMgcmVsYXRpdmVcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSB1cmxBbmNob3IuaHJlZjtcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PVxuXHRcdFx0XHRcdHVybEFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIHVybEFuY2hvci5ob3N0O1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgVVJMLCBhc3N1bWUgaXQgaXMgY3Jvc3NEb21haW4sXG5cdFx0XHRcdC8vIGl0IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNwb3J0IGlmIGl0IGlzIGludmFsaWRcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nXG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXG5cdFx0aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxuXHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdH1cblxuXHRcdC8vIFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvXG5cdFx0Ly8gRG9uJ3QgZmlyZSBldmVudHMgaWYgalF1ZXJ5LmV2ZW50IGlzIHVuZGVmaW5lZCBpbiBhbiBBTUQtdXNhZ2Ugc2NlbmFyaW8gKHRyYWMtMTUxMTgpXG5cdFx0ZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7XG5cblx0XHQvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzXG5cdFx0aWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RhcnRcIiApO1xuXHRcdH1cblxuXHRcdC8vIFVwcGVyY2FzZSB0aGUgdHlwZVxuXHRcdHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnRcblx0XHRzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTtcblxuXHRcdC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZVxuXHRcdC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvblxuXHRcdC8vIFJlbW92ZSBoYXNoIHRvIHNpbXBsaWZ5IHVybCBtYW5pcHVsYXRpb25cblx0XHRjYWNoZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJoYXNoLCBcIlwiICk7XG5cblx0XHQvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVudFxuXHRcdGlmICggIXMuaGFzQ29udGVudCApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIGhhc2ggc28gd2UgY2FuIHB1dCBpdCBiYWNrXG5cdFx0XHR1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBjYWNoZVVSTC5sZW5ndGggKTtcblxuXHRcdFx0Ly8gSWYgZGF0YSBpcyBhdmFpbGFibGUgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQsIGFwcGVuZCBkYXRhIHRvIHVybFxuXHRcdFx0aWYgKCBzLmRhdGEgJiYgKCBzLnByb2Nlc3NEYXRhIHx8IHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgKSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YTtcblxuXHRcdFx0XHQvLyB0cmFjLTk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlLmd1aWQrKyApICtcblx0XHRcdFx0XHR1bmNhY2hlZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUHV0IGhhc2ggYW5kIGFudGktY2FjaGUgb24gdGhlIFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKVxuXHRcdFx0cy51cmwgPSBjYWNoZVVSTCArIHVuY2FjaGVkO1xuXG5cdFx0Ly8gQ2hhbmdlICclMjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgpXG5cdFx0fSBlbHNlIGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiZcblx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiICkuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICkge1xuXHRcdFx0cy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU1vZGlmaWVkLVNpbmNlXCIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTm9uZS1NYXRjaFwiLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudFxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJDb250ZW50LVR5cGVcIiwgcy5jb250ZW50VHlwZSApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcblx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFxuXHRcdFx0XCJBY2NlcHRcIixcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gP1xuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArXG5cdFx0XHRcdFx0KCBzLmRhdGFUeXBlc1sgMCBdICE9PSBcIipcIiA/IFwiLCBcIiArIGFsbFR5cGVzICsgXCI7IHE9MC4wMVwiIDogXCJcIiApIDpcblx0XHRcdFx0cy5hY2NlcHRzWyBcIipcIiBdXG5cdFx0KTtcblxuXHRcdC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvblxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0XG5cdFx0aWYgKCBzLmJlZm9yZVNlbmQgJiZcblx0XHRcdCggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwgY29tcGxldGVkICkgKSB7XG5cblx0XHRcdC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVyblxuXHRcdFx0cmV0dXJuIGpxWEhSLmFib3J0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uXG5cdFx0c3RyQWJvcnQgPSBcImFib3J0XCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHNcblx0XHRjb21wbGV0ZURlZmVycmVkLmFkZCggcy5jb21wbGV0ZSApO1xuXHRcdGpxWEhSLmRvbmUoIHMuc3VjY2VzcyApO1xuXHRcdGpxWEhSLmZhaWwoIHMuZXJyb3IgKTtcblxuXHRcdC8vIEdldCB0cmFuc3BvcnRcblx0XHR0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydFxuXHRcdGlmICggIXRyYW5zcG9ydCApIHtcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSAxO1xuXG5cdFx0XHQvLyBTZW5kIGdsb2JhbCBldmVudFxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFNlbmRcIiwgWyBqcVhIUiwgcyBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5kLCBzdG9wIHRoZXJlXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KCBcInRpbWVvdXRcIiApO1xuXHRcdFx0XHR9LCBzLnRpbWVvdXQgKTtcblx0XHRcdH1cblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29tcGxldGVkID0gZmFsc2U7XG5cdFx0XHRcdHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gUmV0aHJvdyBwb3N0LWNvbXBsZXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRzXG5cdFx0XHRcdGRvbmUoIC0xLCBlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gSWdub3JlIHJlcGVhdCBpbnZvY2F0aW9uc1xuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29tcGxldGVkID0gdHJ1ZTtcblxuXHRcdFx0Ly8gQ2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHNcblx0XHRcdGlmICggdGltZW91dFRpbWVyICkge1xuXHRcdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb25cblx0XHRcdC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcblxuXHRcdFx0Ly8gU2V0IHJlYWR5U3RhdGVcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XG5cblx0XHRcdC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsXG5cdFx0XHRpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDtcblxuXHRcdFx0Ly8gR2V0IHJlc3BvbnNlIGRhdGFcblx0XHRcdGlmICggcmVzcG9uc2VzICkge1xuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVXNlIGEgbm9vcCBjb252ZXJ0ZXIgZm9yIG1pc3Npbmcgc2NyaXB0IGJ1dCBub3QgaWYganNvbnBcblx0XHRcdGlmICggIWlzU3VjY2VzcyAmJlxuXHRcdFx0XHRqUXVlcnkuaW5BcnJheSggXCJzY3JpcHRcIiwgcy5kYXRhVHlwZXMgKSA+IC0xICYmXG5cdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBcImpzb25cIiwgcy5kYXRhVHlwZXMgKSA8IDAgKSB7XG5cdFx0XHRcdHMuY29udmVydGVyc1sgXCJ0ZXh0IHNjcmlwdFwiIF0gPSBmdW5jdGlvbigpIHt9O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBfaSwgbWV0aG9kICkge1xuXHRqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7XG5cblx0XHQvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZFxuXHRcdGlmICggaXNGdW5jdGlvbiggZGF0YSApICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7XG5cdFx0XHRjYWxsYmFjayA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFRoZSB1cmwgY2FuIGJlIGFuIG9wdGlvbnMgb2JqZWN0ICh3aGljaCB0aGVuIG11c3QgaGF2ZSAudXJsKVxuXHRcdHJldHVybiBqUXVlcnkuYWpheCggalF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0dXJsOiB1cmwsXG5cdFx0XHR0eXBlOiBtZXRob2QsXG5cdFx0XHRkYXRhVHlwZTogdHlwZSxcblx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRzdWNjZXNzOiBjYWxsYmFja1xuXHRcdH0sIGpRdWVyeS5pc1BsYWluT2JqZWN0KCB1cmwgKSAmJiB1cmwgKSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuYWpheFByZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7XG5cdHZhciBpO1xuXHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRpZiAoIGkudG9Mb3dlckNhc2UoKSA9PT0gXCJjb250ZW50LXR5cGVcIiApIHtcblx0XHRcdHMuY29udGVudFR5cGUgPSBzLmhlYWRlcnNbIGkgXSB8fCBcIlwiO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbmpRdWVyeS5fZXZhbFVybCA9IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMsIGRvYyApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKHRyYWMtMTEyNjQpXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRkYXRhVHlwZTogXCJzY3JpcHRcIixcblx0XHRjYWNoZTogdHJ1ZSxcblx0XHRhc3luYzogZmFsc2UsXG5cdFx0Z2xvYmFsOiBmYWxzZSxcblxuXHRcdC8vIE9ubHkgZXZhbHVhdGUgdGhlIHJlc3BvbnNlIGlmIGl0IGlzIHN1Y2Nlc3NmdWwgKGdoLTQxMjYpXG5cdFx0Ly8gZGF0YUZpbHRlciBpcyBub3QgaW52b2tlZCBmb3IgZmFpbHVyZSByZXNwb25zZXMsIHNvIHVzaW5nIGl0IGluc3RlYWRcblx0XHQvLyBvZiB0aGUgZGVmYXVsdCBjb252ZXJ0ZXIgaXMga2x1ZGd5IGJ1dCBpdCB3b3Jrcy5cblx0XHRjb252ZXJ0ZXJzOiB7XG5cdFx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCkge31cblx0XHR9LFxuXHRcdGRhdGFGaWx0ZXI6IGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCByZXNwb25zZSwgb3B0aW9ucywgZG9jICk7XG5cdFx0fVxuXHR9ICk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0d3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIHdyYXA7XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0XHRodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcblx0XHRcdHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApO1xuXG5cdFx0XHRpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHdyYXAubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xuXG5cdFx0XHRcdHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHtcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBlbGVtO1xuXHRcdFx0fSApLmFwcGVuZCggdGhpcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0Y29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7XG5cblx0XHRcdGlmICggY29udGVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250ZW50cy53cmFwQWxsKCBodG1sICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKCBodG1sICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHdyYXA6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciBodG1sSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIGh0bWwgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbElzRnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMsIGkgKSA6IGh0bWwgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0dW53cmFwOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCBcImJvZHlcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7XG59O1xualF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhISggZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICk7XG59O1xuXG5cblxuXG5qUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG5cdH0gY2F0Y2ggKCBlICkge31cbn07XG5cbnZhciB4aHJTdWNjZXNzU3RhdHVzID0ge1xuXG5cdFx0Ly8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdC8vIHRyYWMtMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9udGltZW91dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3Ncblx0XHRcdFx0XHRcdFx0XHQvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCAwLCBcImVycm9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlIHRyYWMtODYwNSwgdHJhYy0xNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mgb24gYmluYXJ5ICh0cmFjLTExNDI2KVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5OClcblx0XHRcdFx0XHRcdFx0XHRcdCggeGhyLnJlc3BvbnNlVHlwZSB8fCBcInRleHRcIiApICE9PSBcInRleHRcIiAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyB0ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBMaXN0ZW4gdG8gZXZlbnRzXG5cdFx0XHRcdHhoci5vbmxvYWQgPSBjYWxsYmFjaygpO1xuXHRcdFx0XHRlcnJvckNhbGxiYWNrID0geGhyLm9uZXJyb3IgPSB4aHIub250aW1lb3V0ID0gY2FsbGJhY2soIFwiZXJyb3JcIiApO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdFx0XHQvLyBVc2Ugb25yZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydFxuXHRcdFx0XHQvLyB0byBoYW5kbGUgdW5jYXVnaHQgYWJvcnRzXG5cdFx0XHRcdGlmICggeGhyLm9uYWJvcnQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR4aHIub25hYm9ydCA9IGVycm9yQ2FsbGJhY2s7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBDaGVjayByZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0IGNoYW5nZXNcblx0XHRcdFx0XHRcdGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQWxsb3cgb25lcnJvciB0byBiZSBjYWxsZWQgZmlyc3QsXG5cdFx0XHRcdFx0XHRcdC8vIGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydFxuXHRcdFx0XHRcdFx0XHQvLyBBbHNvLCBzYXZlIGVycm9yQ2FsbGJhY2sgdG8gYSB2YXJpYWJsZVxuXHRcdFx0XHRcdFx0XHQvLyBhcyB4aHIub25lcnJvciBjYW5ub3QgYmUgYWNjZXNzZWRcblx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBjYWxsYmFjayggXCJhYm9ydFwiICk7XG5cblx0XHRcdFx0dHJ5IHtcblxuXHRcdFx0XHRcdC8vIERvIHNlbmQgdGhlIHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbilcblx0XHRcdFx0XHR4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0Ly8gdHJhYy0xNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiBvciBmb3JjZWQtYnktYXR0cnMgcmVxdWVzdHNcblx0aWYgKCBzLmNyb3NzRG9tYWluIHx8IHMuc2NyaXB0QXR0cnMgKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKVxuXHRcdFx0XHRcdC5hdHRyKCBzLnNjcmlwdEF0dHJzIHx8IHt9IClcblx0XHRcdFx0XHQucHJvcCggeyBjaGFyc2V0OiBzLnNjcmlwdENoYXJzZXQsIHNyYzogcy51cmwgfSApXG5cdFx0XHRcdFx0Lm9uKCBcImxvYWQgZXJyb3JcIiwgY2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0LnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBudWxsO1xuXHRcdFx0XHRcdFx0aWYgKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCBldnQudHlwZSA9PT0gXCJlcnJvclwiID8gNDA0IDogMjAwLCBldnQudHlwZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHQvLyBVc2UgbmF0aXZlIERPTSBtYW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1hbmlwIEFKQVggdHJpY2tlcnlcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0WyAwIF0gKTtcblx0XHRcdH0sXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxudmFyIG9sZENhbGxiYWNrcyA9IFtdLFxuXHRyanNvbnAgPSAvKD0pXFw/KD89JnwkKXxcXD9cXD8vO1xuXG4vLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGpzb25wOiBcImNhbGxiYWNrXCIsXG5cdGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjYWxsYmFjayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsgXCJfXCIgKyAoIG5vbmNlLmd1aWQrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59ICk7XG5cbi8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0c1xualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwianNvbiBqc29ucFwiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5ncywganFYSFIgKSB7XG5cblx0dmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLFxuXHRcdGpzb25Qcm9wID0gcy5qc29ucCAhPT0gZmFsc2UgJiYgKCByanNvbnAudGVzdCggcy51cmwgKSA/XG5cdFx0XHRcInVybFwiIDpcblx0XHRcdHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKVxuXHRcdFx0XHRcdC5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgJiZcblx0XHRcdFx0cmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID9cblx0XHRcdHMuanNvbnBDYWxsYmFjaygpIDpcblx0XHRcdHMuanNvbnBDYWxsYmFjaztcblxuXHRcdC8vIEluc2VydCBjYWxsYmFjayBpbnRvIHVybCBvciBmb3JtIGRhdGFcblx0XHRpZiAoIGpzb25Qcm9wICkge1xuXHRcdFx0c1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCBcIiQxXCIgKyBjYWxsYmFja05hbWUgKTtcblx0XHR9IGVsc2UgaWYgKCBzLmpzb25wICE9PSBmYWxzZSApIHtcblx0XHRcdHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmpzb25wICsgXCI9XCIgKyBjYWxsYmFja05hbWU7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvblxuXHRcdHMuY29udmVydGVyc1sgXCJzY3JpcHQganNvblwiIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBGb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0XG5cdFx0XHRpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7XG5cblx0XHRcdC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZFxuXHRcdFx0XHRzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHRcdFx0Ly8gU2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBmb3IgZnV0dXJlIHVzZVxuXHRcdFx0XHRvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZVxuXHRcdFx0aWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBpc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkge1xuXHRcdFx0XHRvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkO1xuXHRcdH0gKTtcblxuXHRcdC8vIERlbGVnYXRlIHRvIHNjcmlwdFxuXHRcdHJldHVybiBcInNjcmlwdFwiO1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA4IG9ubHlcbi8vIEluIFNhZmFyaSA4IGRvY3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnRcbi8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6IHRoZSBzZWNvbmQgb25lIGJlY29tZXMgYSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLlxuLy8gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGluIFNhZmFyaSA4LlxuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMzN1xuc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkge1xuXHR2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApLmJvZHk7XG5cdGJvZHkuaW5uZXJIVE1MID0gXCI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPlwiO1xuXHRyZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMjtcbn0gKSgpO1xuXG5cbi8vIEFyZ3VtZW50IFwiZGF0YVwiIHNob3VsZCBiZSBzdHJpbmcgb2YgaHRtbFxuLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LFxuLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnRcbi8vIGtlZXBTY3JpcHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJpbmdcbmpRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7XG5cdGlmICggdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGtlZXBTY3JpcHRzID0gY29udGV4dDtcblx0XHRjb250ZXh0ID0gZmFsc2U7XG5cdH1cblxuXHR2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzO1xuXG5cdGlmICggIWNvbnRleHQgKSB7XG5cblx0XHQvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHlcblx0XHQvLyBieSB1c2luZyBkb2N1bWVudC5pbXBsZW1lbnRhdGlvblxuXHRcdGlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICk7XG5cblx0XHRcdC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudFxuXHRcdFx0Ly8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHNcblx0XHRcdC8vIGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpXG5cdFx0XHRiYXNlID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImJhc2VcIiApO1xuXHRcdFx0YmFzZS5ocmVmID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcblx0XHRcdGNvbnRleHQuaGVhZC5hcHBlbmRDaGlsZCggYmFzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0fVxuXHR9XG5cblx0cGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICk7XG5cdHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107XG5cblx0Ly8gU2luZ2xlIHRhZ1xuXHRpZiAoIHBhcnNlZCApIHtcblx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkgXTtcblx0fVxuXG5cdHBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7XG5cblx0aWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkge1xuXHRcdGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7XG59O1xuXG5cbi8qKlxuICogTG9hZCBhIHVybCBpbnRvIGEgcGFnZVxuICovXG5qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7XG5cdHZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsXG5cdFx0c2VsZiA9IHRoaXMsXG5cdFx0b2ZmID0gdXJsLmluZGV4T2YoIFwiIFwiICk7XG5cblx0aWYgKCBvZmYgPiAtMSApIHtcblx0XHRzZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTtcblx0XHR1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApO1xuXHR9XG5cblx0Ly8gSWYgaXQncyBhIGZ1bmN0aW9uXG5cdGlmICggaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KCB7XG5cdFx0XHR1cmw6IHVybCxcblxuXHRcdFx0Ly8gSWYgXCJ0eXBlXCIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVuIFwiR0VUXCIgbWV0aG9kIHdpbGwgYmUgdXNlZC5cblx0XHRcdC8vIE1ha2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZVxuXHRcdFx0Ly8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kXG5cdFx0XHR0eXBlOiB0eXBlIHx8IFwiR0VUXCIsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHtcblxuXHRcdFx0Ly8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNrXG5cdFx0XHRyZXNwb25zZSA9IGFyZ3VtZW50cztcblxuXHRcdFx0c2VsZi5odG1sKCBzZWxlY3RvciA/XG5cblx0XHRcdFx0Ly8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5pZWQnIGVycm9yc1xuXHRcdFx0XHRqUXVlcnkoIFwiPGRpdj5cIiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdC8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJkYXRhXCIsIFwic3RhdHVzXCIsIFwianFYSFJcIlxuXHRcdC8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS5cblx0XHQvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzIFwianFYSFJcIiwgXCJzdGF0dXNcIiwgXCJlcnJvclwiXG5cdFx0fSApLmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7XG5cdFx0XHRzZWxmLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSApLmxlbmd0aDtcbn07XG5cblxuXG5cbmpRdWVyeS5vZmZzZXQgPSB7XG5cdHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7XG5cdFx0dmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3VyT2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbixcblx0XHRcdHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICksXG5cdFx0XHRjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksXG5cdFx0XHRwcm9wcyA9IHt9O1xuXG5cdFx0Ly8gU2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbVxuXHRcdGlmICggcG9zaXRpb24gPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRlbGVtLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuXHRcdH1cblxuXHRcdGN1ck9mZnNldCA9IGN1ckVsZW0ub2Zmc2V0KCk7XG5cdFx0Y3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgXCJ0b3BcIiApO1xuXHRcdGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImxlZnRcIiApO1xuXHRcdGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiIHx8IHBvc2l0aW9uID09PSBcImZpeGVkXCIgKSAmJlxuXHRcdFx0KCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggXCJhdXRvXCIgKSA+IC0xO1xuXG5cdFx0Ly8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXJcblx0XHQvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcblx0XHRpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkge1xuXHRcdFx0Y3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7XG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XG5cdFx0XHRjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwO1xuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXG5cdFx0XHQvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OClcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZzZXQgKSApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdC8vIG9mZnNldCgpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIGJvcmRlciBib3ggdG8gdGhlIGRvY3VtZW50IG9yaWdpblxuXHRvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdFx0Ly8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRlclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHR0aGlzIDpcblx0XHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dmFyIHJlY3QsIHdpbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF07XG5cblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpIGVsZW1lbnRzIChnaC0yMzEwKVxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGFcblx0XHQvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3Jcblx0XHRpZiAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IGRvY3VtZW50LXJlbGF0aXZlIHBvc2l0aW9uIGJ5IGFkZGluZyB2aWV3cG9ydCBzY3JvbGwgdG8gdmlld3BvcnQtcmVsYXRpdmUgZ0JDUlxuXHRcdHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdHdpbiA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldztcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCxcblx0XHRcdGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldFxuXHRcdH07XG5cdH0sXG5cblx0Ly8gcG9zaXRpb24oKSByZWxhdGVzIGFuIGVsZW1lbnQncyBtYXJnaW4gYm94IHRvIGl0cyBvZmZzZXQgcGFyZW50J3MgcGFkZGluZyBib3hcblx0Ly8gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYmVoYXZpb3Igb2YgQ1NTIGFic29sdXRlIHBvc2l0aW9uaW5nXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LCBkb2MsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblxuXHRcdC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB0aGUgdmlld3BvcnQsIHdoaWNoIGl0c2VsZiBhbHdheXMgaGFzIHplcm8gb2Zmc2V0XG5cdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSA9PT0gXCJmaXhlZFwiICkge1xuXG5cdFx0XHQvLyBBc3N1bWUgcG9zaXRpb246Zml4ZWQgaW1wbGllcyBhdmFpbGFiaWxpdHkgb2YgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG5cdFx0XHRvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHRoZSAqcmVhbCogb2Zmc2V0IHBhcmVudCwgd2hpY2ggY2FuIGJlIHRoZSBkb2N1bWVudCBvciBpdHMgcm9vdCBlbGVtZW50XG5cdFx0XHQvLyB3aGVuIGEgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnQgaXMgaWRlbnRpZmllZFxuXHRcdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdFx0b2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQgfHwgZG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmXG5cdFx0XHRcdCggb2Zmc2V0UGFyZW50ID09PSBkb2MuYm9keSB8fCBvZmZzZXRQYXJlbnQgPT09IGRvYy5kb2N1bWVudEVsZW1lbnQgKSAmJlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0UGFyZW50ICE9PSBlbGVtICYmIG9mZnNldFBhcmVudC5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSBib3JkZXJzIGludG8gaXRzIG9mZnNldCwgc2luY2UgdGhleSBhcmUgb3V0c2lkZSBpdHMgY29udGVudCBvcmlnaW5cblx0XHRcdFx0cGFyZW50T2Zmc2V0ID0galF1ZXJ5KCBvZmZzZXRQYXJlbnQgKS5vZmZzZXQoKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyVG9wV2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyTGVmdFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpblRvcFwiLCB0cnVlICksXG5cdFx0XHRsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIsIHRydWUgKVxuXHRcdH07XG5cdH0sXG5cblx0Ly8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG5cdC8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm5cblx0Ly8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93XG5cdC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnRcblx0Ly8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZlxuXHQvL1xuXHQvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXNcblx0Ly8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuXG5cdC8vXG5cdC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDtcblxuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblxuXHRcdFx0Ly8gQ29hbGVzY2UgZG9jdW1lbnRzIGFuZCB3aW5kb3dzXG5cdFx0XHR2YXIgd2luO1xuXHRcdFx0aWYgKCBpc1dpbmRvdyggZWxlbSApICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtO1xuXHRcdFx0fSBlbHNlIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0d2luID0gZWxlbS5kZWZhdWx0Vmlldztcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICggd2luICkge1xuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXG5cdFx0XHRcdFx0IXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNldCxcblx0XHRcdFx0XHR0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXRcblx0XHRcdFx0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbVsgbWV0aG9kIF0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fTtcbn0gKTtcblxuLy8gU3VwcG9ydDogU2FmYXJpIDw9NyAtIDkuMSwgQ2hyb21lIDw9MzcgLSA0OVxuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01ODkzNDdcbi8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQ7XG4vLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3MgbW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zmc2V0IG1vZHVsZSwganVzdCBjaGVjayBmb3IgaXQgaGVyZVxualF1ZXJ5LmVhY2goIFsgXCJ0b3BcIiwgXCJsZWZ0XCIgXSwgZnVuY3Rpb24oIF9pLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cblx0XHRcdFx0Ly8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0XG5cdFx0XHRcdHJldHVybiBybnVtbm9ucHgudGVzdCggY29tcHV0ZWQgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgXCJweFwiIDpcblx0XHRcdFx0XHRjb21wdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59ICk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7XG5cdFx0cGFkZGluZzogXCJpbm5lclwiICsgbmFtZSxcblx0XHRjb250ZW50OiB0eXBlLFxuXHRcdFwiXCI6IFwib3V0ZXJcIiArIG5hbWVcblx0fSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggW1xuXHRcImFqYXhTdGFydFwiLFxuXHRcImFqYXhTdG9wXCIsXG5cdFwiYWpheENvbXBsZXRlXCIsXG5cdFwiYWpheEVycm9yXCIsXG5cdFwiYWpheFN1Y2Nlc3NcIixcblx0XCJhamF4U2VuZFwiXG5dLCBmdW5jdGlvbiggX2ksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9LFxuXG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaChcblx0KCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBfaSwgbmFtZSApIHtcblxuXHRcdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdFx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7XG5cdFx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdFx0dGhpcy50cmlnZ2VyKCBuYW1lICk7XG5cdFx0fTtcblx0fVxuKTtcblxuXG5cblxuLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG4vLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1Bcbi8vIFJlcXVpcmUgdGhhdCB0aGUgXCJ3aGl0ZXNwYWNlIHJ1blwiIHN0YXJ0cyBmcm9tIGEgbm9uLXdoaXRlc3BhY2Vcbi8vIHRvIGF2b2lkIE8oTl4yKSBiZWhhdmlvciB3aGVuIHRoZSBlbmdpbmUgd291bGQgdHJ5IG1hdGNoaW5nIFwiXFxzKyRcIiBhdCBlYWNoIHNwYWNlIHBvc2l0aW9uLlxudmFyIHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8KFteXFxzXFx1RkVGRlxceEEwXSlbXFxzXFx1RkVGRlxceEEwXSskL2c7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cbmpRdWVyeS50cmltID0gZnVuY3Rpb24oIHRleHQgKSB7XG5cdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFwiXCIgOlxuXHRcdCggdGV4dCArIFwiXCIgKS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICk7XG59O1xuXG5cblxuLy8gUmVnaXN0ZXIgYXMgYSBuYW1lZCBBTUQgbW9kdWxlLCBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90aGVyXG4vLyBmaWxlcyB0aGF0IG1heSB1c2UgZGVmaW5lLCBidXQgbm90IHZpYSBhIHByb3BlciBjb25jYXRlbmF0aW9uIHNjcmlwdCB0aGF0XG4vLyB1bmRlcnN0YW5kcyBhbm9ueW1vdXMgQU1EIG1vZHVsZXMuIEEgbmFtZWQgQU1EIGlzIHNhZmVzdCBhbmQgbW9zdCByb2J1c3Rcbi8vIHdheSB0byByZWdpc3Rlci4gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmVcbi8vIGRlcml2ZWQgZnJvbSBmaWxlIG5hbWVzLCBhbmQgalF1ZXJ5IGlzIG5vcm1hbGx5IGRlbGl2ZXJlZCBpbiBhIGxvd2VyY2FzZVxuLy8gZmlsZSBuYW1lLiBEbyB0aGlzIGFmdGVyIGNyZWF0aW5nIHRoZSBnbG9iYWwgc28gdGhhdCBpZiBhbiBBTUQgbW9kdWxlIHdhbnRzXG4vLyB0byBjYWxsIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3aWxsIHdvcmsuXG5cbi8vIE5vdGUgdGhhdCBmb3IgbWF4aW11bSBwb3J0YWJpbGl0eSwgbGlicmFyaWVzIHRoYXQgYXJlIG5vdCBqUXVlcnkgc2hvdWxkXG4vLyBkZWNsYXJlIHRoZW1zZWx2ZXMgYXMgYW5vbnltb3VzIG1vZHVsZXMsIGFuZCBhdm9pZCBzZXR0aW5nIGEgZ2xvYmFsIGlmIGFuXG4vLyBBTUQgbG9hZGVyIGlzIHByZXNlbnQuIGpRdWVyeSBpcyBhIHNwZWNpYWwgY2FzZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpzL3dpa2kvVXBkYXRpbmctZXhpc3RpbmctbGlicmFyaWVzI3dpa2ktYW5vblxuXG5pZiAoIHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kICkge1xuXHRkZWZpbmUoIFwianF1ZXJ5XCIsIFtdLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5O1xuXHR9ICk7XG59XG5cblxuXG5cbnZhclxuXG5cdC8vIE1hcCBvdmVyIGpRdWVyeSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfalF1ZXJ5ID0gd2luZG93LmpRdWVyeSxcblxuXHQvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfJCA9IHdpbmRvdy4kO1xuXG5qUXVlcnkubm9Db25mbGljdCA9IGZ1bmN0aW9uKCBkZWVwICkge1xuXHRpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LiQgPSBfJDtcblx0fVxuXG5cdGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LmpRdWVyeSA9IF9qUXVlcnk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5O1xufTtcblxuLy8gRXhwb3NlIGpRdWVyeSBhbmQgJCBpZGVudGlmaWVycywgZXZlbiBpbiBBTURcbi8vICh0cmFjLTcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICh0cmFjLTEzNTY2KVxuaWYgKCB0eXBlb2Ygbm9HbG9iYWwgPT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdHdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTtcbn1cblxuXG5cblxucmV0dXJuIGpRdWVyeTtcbn0gKTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0YVZpZXc7XG4iLCJ2YXIgaGFzaENsZWFyID0gcmVxdWlyZSgnLi9faGFzaENsZWFyJyksXG4gICAgaGFzaERlbGV0ZSA9IHJlcXVpcmUoJy4vX2hhc2hEZWxldGUnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiIsInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwO1xuIiwidmFyIG1hcENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDYWNoZUNsZWFyJyksXG4gICAgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLFxuICAgIG1hcENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVHZXQnKSxcbiAgICBtYXBDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX21hcENhY2hlSGFzJyksXG4gICAgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXBDYWNoZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TGlrZUtleXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlTb21lO1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc2NpaVRvQXJyYXk7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduSW47XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xhbXBgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgaWYgKG51bWJlciA9PT0gbnVtYmVyKSB7XG4gICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgIH1cbiAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgfVxuICB9XG4gIHJldHVybiBudW1iZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNsYW1wO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ24nKSxcbiAgICBiYXNlQXNzaWduSW4gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduSW4nKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgY29weVN5bWJvbHMgPSByZXF1aXJlKCcuL19jb3B5U3ltYm9scycpLFxuICAgIGNvcHlTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19jb3B5U3ltYm9sc0luJyksXG4gICAgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKSxcbiAgICBnZXRBbGxLZXlzSW4gPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzSW4nKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUFycmF5JyksXG4gICAgaW5pdENsb25lQnlUYWcgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVCeVRhZycpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc01hcCA9IHJlcXVpcmUoJy4vaXNNYXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1NldCA9IHJlcXVpcmUoJy4vaXNTZXQnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xudmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbmNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG5jbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbmNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbmNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG5jbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIERlZXAgY2xvbmVcbiAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICB2YXIgcmVzdWx0LFxuICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gIGlmIChjdXN0b21pemVyKSB7XG4gICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICB9XG4gIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChpc0Fycikge1xuICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgfVxuICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gIGlmIChzdGFja2VkKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQ7XG4gIH1cbiAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGlmIChwcm9wcykge1xuICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNsb25lO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpIHtcbiAgdmFyIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tsZW5ndGhdLFxuICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB8fCAhcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ29uZm9ybXNUbztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRBbGxLZXlzO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ3RgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID4gb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUd0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcnJheUJ1ZmZlclRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcnJheUJ1ZmZlcjtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNEYXRlKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRGF0ZTtcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzUmVnRXhwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1JlZ0V4cDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNTZXQ7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTHQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUb1N0cmluZztcbiIsInZhciB0cmltbWVkRW5kSW5kZXggPSByZXF1aXJlKCcuL190cmltbWVkRW5kSW5kZXgnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUcmltO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmFyeTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiIsInZhciBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVBcnJheUJ1ZmZlcjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEYXRhVmlldztcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVSZWdFeHA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiIsIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlbGF0aW9uYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICBvdGhlciA9IHRvTnVtYmVyKG90aGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbjtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICByZXR1cm4gZnVuYztcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lUHJvcGVydHk7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5U29tZSA9IHJlcXVpcmUoJy4vX2FycmF5U29tZScpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgYXJyU3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgIHJldHVybiBhcnJTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gYXJyYXk7XG4gIH1cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoc2Vlbikge1xuICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQXJyYXlzO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIiwidmFyIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgb3RoUHJvcHMgPSBnZXRBbGxLZXlzKG90aGVyKSxcbiAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBvYmpTdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgaWYgKG9ialN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgIHJldHVybiBvYmpTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gb2JqZWN0O1xuICB9XG4gIHZhciByZXN1bHQgPSB0cnVlO1xuICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgfVxuICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmXG4gICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsT2JqZWN0cztcbiIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCJ2YXIgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIiwidmFyIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIiwidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGdldFZhbHVlID0gcmVxdWlyZSgnLi9fZ2V0VmFsdWUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKG9iamVjdCkge1xuICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9sc0luO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBpcyBjYXBhYmxlIG9mIGJlaW5nIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbnZhciBpc01hc2thYmxlID0gY29yZUpzRGF0YSA/IGlzRnVuY3Rpb24gOiBzdHViRmFsc2U7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrYWJsZTtcbiIsInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpY3RDb21wYXJhYmxlO1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gIHZhciBkYXRhLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0b3JUb0FycmF5O1xuIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwidmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksXG4gICAgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUNsZWFyO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlRGVsZXRlO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlSGFzO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiIsIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdDtcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb0FycmF5O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgYXNjaWlUb0FycmF5ID0gcmVxdWlyZSgnLi9fYXNjaWlUb0FycmF5JyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlVG9BcnJheSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVUb0FycmF5Jyk7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvQXJyYXk7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbnZhciByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbnZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZSkgfHwgW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVRvQXJyYXk7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgYXMgYW4gYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC40LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmNhc3RBcnJheSgxKTtcbiAqIC8vID0+IFsxXVxuICpcbiAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gKlxuICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICogLy8gPT4gWydhYmMnXVxuICpcbiAqIF8uY2FzdEFycmF5KG51bGwpO1xuICogLy8gPT4gW251bGxdXG4gKlxuICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAqIC8vID0+IFt1bmRlZmluZWRdXG4gKlxuICogXy5jYXN0QXJyYXkoKTtcbiAqIC8vID0+IFtdXG4gKlxuICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciB2YWx1ZSA9IGFyZ3VtZW50c1swXTtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RBcnJheTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVXaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gKlxuICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICogLy8gPT4gZmFsc2VcbiAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAqIC8vID0+ICdCT0RZJ1xuICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICogLy8gPT4gMjBcbiAqL1xuZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEZWVwV2l0aDtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gKiBjbG9uaW5nIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aFxuICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUoZmFsc2UpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gKlxuICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICogLy8gPT4gZmFsc2VcbiAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAqIC8vID0+ICdCT0RZJ1xuICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICogLy8gPT4gMFxuICovXG5mdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lV2l0aDtcbiIsInZhciBiYXNlQ29uZm9ybXNUbyA9IHJlcXVpcmUoJy4vX2Jhc2VDb25mb3Jtc1RvJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgb2JqZWN0YCBjb25mb3JtcyB0byBgc291cmNlYCBieSBpbnZva2luZyB0aGUgcHJlZGljYXRlXG4gKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zYCB3aGVuIGBzb3VyY2VgIGlzXG4gKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTQuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICpcbiAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBzb3VyY2UgPT0gbnVsbCB8fCBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25mb3Jtc1RvO1xuIiwiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iLCJ2YXIgYmFzZUd0ID0gcmVxdWlyZSgnLi9fYmFzZUd0JyksXG4gICAgY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuOS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAc2VlIF8ubHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5ndCgzLCAxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmd0KDMsIDMpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmd0KDEsIDMpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGd0O1xuIiwidmFyIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvXG4gKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmx0ZVxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmd0ZSgzLCAxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmd0ZSgzLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmd0ZSgxLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPj0gb3RoZXI7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBndGU7XG4iLCJ2YXIgYmFzZUlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJndW1lbnRzJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIiwidmFyIGJhc2VJc0FycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJyYXlCdWZmZXInKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5QnVmZmVyO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJvb2xlYW4sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Jvb2xlYW4oZmFsc2UpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCb29sZWFuKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Jvb2xlYW47XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKSxcbiAgICBzdHViRmFsc2UgPSByZXF1aXJlKCcuL3N0dWJGYWxzZScpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG4iLCJ2YXIgYmFzZUlzRGF0ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc0RhdGUnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0RhdGU7XG4iLCJ2YXIgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgRE9NIGVsZW1lbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRWxlbWVudDtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLFxuICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICogbm9kZXMgYXJlIGNvbXBhcmVkIGJ5IHN0cmljdCBlcXVhbGl0eSwgaS5lLiBgPT09YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIG9iamVjdCA9PT0gb3RoZXI7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAqXG4gKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcih2YWx1ZSwgb3RoZXIpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsV2l0aDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gKiBgU3ludGF4RXJyb3JgLCBgVHlwZUVycm9yYCwgb3IgYFVSSUVycm9yYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFcnJvcihFcnJvcik7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZXJyb3JUYWcgfHwgdGFnID09IGRvbUV4Y1RhZyB8fFxuICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXJyb3I7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzRmluaXRlID0gcm9vdC5pc0Zpbml0ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBwcmltaXRpdmUgbnVtYmVyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNGaW5pdGVgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNGaW5pdGUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRmluaXRlKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNGaW5pdGUoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRmluaXRlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNJbnRlZ2VyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNJbnRlZ2VyKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW50ZWdlcjtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0xlbmd0aDtcbiIsInZhciBiYXNlSXNNYXAgPSByZXF1aXJlKCcuL19iYXNlSXNNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXA7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpO1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBgb2JqZWN0YCBhbmQgYHNvdXJjZWAgdG9cbiAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5tYXRjaGVzYCB3aGVuIGBzb3VyY2VgIGlzXG4gKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAqXG4gKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICpcbiAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAyIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNYXRjaChvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hdGNoO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggZml2ZVxuICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcoc3JjVmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIHRydWU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gKiB2YXIgc291cmNlID0geyAnZ3JlZXRpbmcnOiAnaGknIH07XG4gKlxuICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXRjaFdpdGg7XG4iLCJ2YXIgaXNOdW1iZXIgPSByZXF1aXJlKCcuL2lzTnVtYmVyJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gKiBgdW5kZWZpbmVkYCBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hTihOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc05hTih1bmRlZmluZWQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gIC8vIFBlcmZvcm0gdGhlIGB0b1N0cmluZ1RhZ2AgY2hlY2sgZmlyc3QgdG8gYXZvaWQgZXJyb3JzIHdpdGggc29tZVxuICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmFOO1xuIiwidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGlzTWFza2FibGUgPSByZXF1aXJlKCcuL19pc01hc2thYmxlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBDT1JFX0VSUk9SX1RFWFQgPSAnVW5zdXBwb3J0ZWQgY29yZS1qcyB1c2UuIFRyeSBodHRwczovL25wbXMuaW8vc2VhcmNoP3E9cG9ueWZpbGwuJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgY2FuJ3QgcmVsaWFibHkgZGV0ZWN0IG5hdGl2ZSBmdW5jdGlvbnMgaW4gdGhlIHByZXNlbmNlXG4gKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gKiBhdHRlbXB0IHRvIGZpeCB0aGUgZGV0ZWN0aW9uIHdpbGwgYmUgb2JzdHJ1Y3RlZC4gQXMgYSByZXN1bHQsIHdlJ3JlIGxlZnRcbiAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAqIHdoaWNoIHJlbHkgb24gY29yZS1qcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOYXRpdmUoXyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoaXNNYXNrYWJsZSh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgfVxuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05hdGl2ZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05pbChudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKHZvaWQgMCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbChOYU4pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOaWw7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc051bGwobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bGwodm9pZCAwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOdWxsO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUbyBleGNsdWRlIGBJbmZpbml0eWAsIGAtSW5maW5pdHlgLCBhbmQgYE5hTmAsIHdoaWNoIGFyZVxuICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc051bWJlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiIsInZhciBiYXNlSXNSZWdFeHAgPSByZXF1aXJlKCcuL19iYXNlSXNSZWdFeHAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBSZWdFeHBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNSZWdFeHA7XG4iLCJ2YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9pc0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIuIEFuIGludGVnZXIgaXMgc2FmZSBpZiBpdCdzIGFuIElFRUUtNzU0XG4gKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gIHJldHVybiBpc0ludGVnZXIodmFsdWUpICYmIHZhbHVlID49IC1NQVhfU0FGRV9JTlRFR0VSICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTYWZlSW50ZWdlcjtcbiIsInZhciBiYXNlSXNTZXQgPSByZXF1aXJlKCcuL19iYXNlSXNTZXQnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTZXQ7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNXZWFrTWFwO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHdlYWtTZXRUYWcgPSAnW29iamVjdCBXZWFrU2V0XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzV2Vha1NldChuZXcgV2Vha1NldCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1dlYWtTZXQobmV3IFNldCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1dlYWtTZXQ7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgJ2Nhc3RBcnJheSc6IHJlcXVpcmUoJy4vY2FzdEFycmF5JyksXG4gICdjbG9uZSc6IHJlcXVpcmUoJy4vY2xvbmUnKSxcbiAgJ2Nsb25lRGVlcCc6IHJlcXVpcmUoJy4vY2xvbmVEZWVwJyksXG4gICdjbG9uZURlZXBXaXRoJzogcmVxdWlyZSgnLi9jbG9uZURlZXBXaXRoJyksXG4gICdjbG9uZVdpdGgnOiByZXF1aXJlKCcuL2Nsb25lV2l0aCcpLFxuICAnY29uZm9ybXNUbyc6IHJlcXVpcmUoJy4vY29uZm9ybXNUbycpLFxuICAnZXEnOiByZXF1aXJlKCcuL2VxJyksXG4gICdndCc6IHJlcXVpcmUoJy4vZ3QnKSxcbiAgJ2d0ZSc6IHJlcXVpcmUoJy4vZ3RlJyksXG4gICdpc0FyZ3VtZW50cyc6IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgJ2lzQXJyYXknOiByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgJ2lzQXJyYXlCdWZmZXInOiByZXF1aXJlKCcuL2lzQXJyYXlCdWZmZXInKSxcbiAgJ2lzQXJyYXlMaWtlJzogcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAnaXNBcnJheUxpa2VPYmplY3QnOiByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0JyksXG4gICdpc0Jvb2xlYW4nOiByZXF1aXJlKCcuL2lzQm9vbGVhbicpLFxuICAnaXNCdWZmZXInOiByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICdpc0RhdGUnOiByZXF1aXJlKCcuL2lzRGF0ZScpLFxuICAnaXNFbGVtZW50JzogcmVxdWlyZSgnLi9pc0VsZW1lbnQnKSxcbiAgJ2lzRW1wdHknOiByZXF1aXJlKCcuL2lzRW1wdHknKSxcbiAgJ2lzRXF1YWwnOiByZXF1aXJlKCcuL2lzRXF1YWwnKSxcbiAgJ2lzRXF1YWxXaXRoJzogcmVxdWlyZSgnLi9pc0VxdWFsV2l0aCcpLFxuICAnaXNFcnJvcic6IHJlcXVpcmUoJy4vaXNFcnJvcicpLFxuICAnaXNGaW5pdGUnOiByZXF1aXJlKCcuL2lzRmluaXRlJyksXG4gICdpc0Z1bmN0aW9uJzogcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICdpc0ludGVnZXInOiByZXF1aXJlKCcuL2lzSW50ZWdlcicpLFxuICAnaXNMZW5ndGgnOiByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICdpc01hcCc6IHJlcXVpcmUoJy4vaXNNYXAnKSxcbiAgJ2lzTWF0Y2gnOiByZXF1aXJlKCcuL2lzTWF0Y2gnKSxcbiAgJ2lzTWF0Y2hXaXRoJzogcmVxdWlyZSgnLi9pc01hdGNoV2l0aCcpLFxuICAnaXNOYU4nOiByZXF1aXJlKCcuL2lzTmFOJyksXG4gICdpc05hdGl2ZSc6IHJlcXVpcmUoJy4vaXNOYXRpdmUnKSxcbiAgJ2lzTmlsJzogcmVxdWlyZSgnLi9pc05pbCcpLFxuICAnaXNOdWxsJzogcmVxdWlyZSgnLi9pc051bGwnKSxcbiAgJ2lzTnVtYmVyJzogcmVxdWlyZSgnLi9pc051bWJlcicpLFxuICAnaXNPYmplY3QnOiByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICdpc09iamVjdExpa2UnOiByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpLFxuICAnaXNQbGFpbk9iamVjdCc6IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAnaXNSZWdFeHAnOiByZXF1aXJlKCcuL2lzUmVnRXhwJyksXG4gICdpc1NhZmVJbnRlZ2VyJzogcmVxdWlyZSgnLi9pc1NhZmVJbnRlZ2VyJyksXG4gICdpc1NldCc6IHJlcXVpcmUoJy4vaXNTZXQnKSxcbiAgJ2lzU3RyaW5nJzogcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAnaXNTeW1ib2wnOiByZXF1aXJlKCcuL2lzU3ltYm9sJyksXG4gICdpc1R5cGVkQXJyYXknOiByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpLFxuICAnaXNVbmRlZmluZWQnOiByZXF1aXJlKCcuL2lzVW5kZWZpbmVkJyksXG4gICdpc1dlYWtNYXAnOiByZXF1aXJlKCcuL2lzV2Vha01hcCcpLFxuICAnaXNXZWFrU2V0JzogcmVxdWlyZSgnLi9pc1dlYWtTZXQnKSxcbiAgJ2x0JzogcmVxdWlyZSgnLi9sdCcpLFxuICAnbHRlJzogcmVxdWlyZSgnLi9sdGUnKSxcbiAgJ3RvQXJyYXknOiByZXF1aXJlKCcuL3RvQXJyYXknKSxcbiAgJ3RvRmluaXRlJzogcmVxdWlyZSgnLi90b0Zpbml0ZScpLFxuICAndG9JbnRlZ2VyJzogcmVxdWlyZSgnLi90b0ludGVnZXInKSxcbiAgJ3RvTGVuZ3RoJzogcmVxdWlyZSgnLi90b0xlbmd0aCcpLFxuICAndG9OdW1iZXInOiByZXF1aXJlKCcuL3RvTnVtYmVyJyksXG4gICd0b1BsYWluT2JqZWN0JzogcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0JyksXG4gICd0b1NhZmVJbnRlZ2VyJzogcmVxdWlyZSgnLi90b1NhZmVJbnRlZ2VyJyksXG4gICd0b1N0cmluZyc6IHJlcXVpcmUoJy4vdG9TdHJpbmcnKVxufTtcbiIsInZhciBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKSxcbiAgICBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy45LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBzZWUgXy5ndFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmx0KDEsIDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8ubHQoMywgMyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8ubHQoMywgMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgbHQgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VMdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbHQ7XG4iLCJ2YXIgY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuOS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gKiBAc2VlIF8uZ3RlXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubHRlKDEsIDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8ubHRlKDMsIDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8ubHRlKDMsIDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGx0ZTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBpdGVyYXRvclRvQXJyYXkgPSByZXF1aXJlKCcuL19pdGVyYXRvclRvQXJyYXknKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5JyksXG4gICAgc3RyaW5nVG9BcnJheSA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvQXJyYXknKSxcbiAgICB2YWx1ZXMgPSByZXF1aXJlKCcuL3ZhbHVlcycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bUl0ZXJhdG9yID0gU3ltYm9sID8gU3ltYm9sLml0ZXJhdG9yIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0FycmF5KHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiBfLnRvQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gKlxuICogXy50b0FycmF5KDEpO1xuICogLy8gPT4gW11cbiAqXG4gKiBfLnRvQXJyYXkobnVsbCk7XG4gKiAvLyA9PiBbXVxuICovXG5mdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gIH1cbiAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICByZXR1cm4gZnVuYyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9BcnJheTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGJhc2VDbGFtcCA9IHJlcXVpcmUoJy4vX2Jhc2VDbGFtcCcpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG52YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTU7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICogYXJyYXktbGlrZSBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9MZW5ndGgoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9MZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gNDI5NDk2NzI5NVxuICpcbiAqIF8udG9MZW5ndGgoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTGVuZ3RoO1xuIiwidmFyIGJhc2VUcmltID0gcmVxdWlyZSgnLi9fYmFzZVRyaW0nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsInZhciBiYXNlQ2xhbXAgPSByZXF1aXJlKCcuL19iYXNlQ2xhbXAnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc2FmZSBpbnRlZ2VyLiBBIHNhZmUgaW50ZWdlciBjYW4gYmUgY29tcGFyZWQgYW5kXG4gKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiA5MDA3MTk5MjU0NzQwOTkxXG4gKlxuICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWVcbiAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TYWZlSW50ZWdlcjtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIGJhc2VWYWx1ZXMgPSByZXF1aXJlKCcuL19iYXNlVmFsdWVzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8udmFsdWVzKG5ldyBGb28pO1xuICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy52YWx1ZXMoJ2hpJyk7XG4gKiAvLyA9PiBbJ2gnLCAnaSddXG4gKi9cbmZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZXM7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQWZyaWthYW5zIFthZl1cbi8vISBhdXRob3IgOiBXZXJuZXIgTW9sbGVudHplIDogaHR0cHM6Ly9naXRodWIuY29tL3dlcm5lcm1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhZiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FmJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1NvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyeWRhZ19TYXRlcmRhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1Nvbl9NYWFfRGluX1dvZV9Eb25fVnJ5X1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19NYV9EaV9Xb19Eb19Wcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3ZtfG5tL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9ebm0kL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAndm0nIDogJ1ZNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnbm0nIDogJ05NJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tWYW5kYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTcO0cmUgb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbR2lzdGVyIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYWFzXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvb3IgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGdlbGVkZScsXG4gICAgICAgICAgICBzOiBcIiduIHBhYXIgc2Vrb25kZXNcIixcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kZXMnLFxuICAgICAgICAgICAgbTogXCInbiBtaW51dXRcIixcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlJyxcbiAgICAgICAgICAgIGg6IFwiJ24gdXVyXCIsXG4gICAgICAgICAgICBoaDogJyVkIHVyZScsXG4gICAgICAgICAgICBkOiBcIiduIGRhZ1wiLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWUnLFxuICAgICAgICAgICAgTTogXCInbiBtYWFuZFwiLFxuICAgICAgICAgICAgTU06ICclZCBtYWFuZGUnLFxuICAgICAgICAgICAgeTogXCInbiBqYWFyXCIsXG4gICAgICAgICAgICB5eTogJyVkIGphYXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApOyAvLyBUaGFua3MgdG8gSm9yaXMgUsO2bGluZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qanVwaXRlclxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1hYW5kYWcgaXMgZGllIGVlcnN0ZSBkYWcgdmFuIGRpZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBEaWUgd2VlayB3YXQgZGllIDRkZSBKYW51YXJpZSBiZXZhdCBpcyBkaWUgZWVyc3RlIHdlZWsgdmFuIGRpZSBqYWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFmO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoQWxnZXJpYSkgW2FyLWR6XVxuLy8hIGF1dGhvciA6IEFtaW5lIFJvdWtoOiBodHRwczovL2dpdGh1Yi5jb20vQW1pbmUyN1xuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcbi8vISBhdXRob3IgOiBBaG1lZCBFbGtoYXRpYlxuLy8hIGF1dGhvciA6IGZvcmFiaSBodHRwczovL2dpdGh1Yi5jb20vZm9yYWJpXG4vLyEgYXV0aG9yIDogTm91cmVkZGluZSBMT1VBSEVESiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub3VyZWRkaW5lbVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDBcbiAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICA6IG4gPT09IDFcbiAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgOiBuID09PSAyXG4gICAgICAgICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwXG4gICAgICAgICAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDExXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogNTtcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFscyA9IHtcbiAgICAgICAgICAgIHM6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYq9mI2KfZhicsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICfYr9mC2YrZgtipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAn2LPYp9i52Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINmK2YjZhScsXG4gICAgICAgICAgICAgICAgJ9mK2YjZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBNOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi02YfYsScsXG4gICAgICAgICAgICAgICAgJ9i02YfYsSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LHYpycsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYudin2YUnLFxuICAgICAgICAgICAgICAgICfYudin2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LnZiNin2YUnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNin2YbZgdmKJyxcbiAgICAgICAgICAgICfZgdmK2YHYsdmKJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPZgdix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mKJyxcbiAgICAgICAgICAgICfYrNmI2KfZhicsXG4gICAgICAgICAgICAn2KzZiNmK2YTZitipJyxcbiAgICAgICAgICAgICfYo9mI2KonLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXJEeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWR6Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckR6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoS3V3YWl0KSBbYXIta3ddXG4vLyEgYXV0aG9yIDogTnVzcmV0IFBhcmxhazogaHR0cHM6Ly9naXRodWIuY29tL251c3JldHBhcmxha1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyS3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1rdycsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckt3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoTGlieWEpIFthci1seV1cbi8vISBhdXRob3IgOiBBbGkgSG1lcjogaHR0cHM6Ly9naXRodWIuY29tL2tpa29hbmlzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJzEnLFxuICAgICAgICAgICAgMjogJzInLFxuICAgICAgICAgICAgMzogJzMnLFxuICAgICAgICAgICAgNDogJzQnLFxuICAgICAgICAgICAgNTogJzUnLFxuICAgICAgICAgICAgNjogJzYnLFxuICAgICAgICAgICAgNzogJzcnLFxuICAgICAgICAgICAgODogJzgnLFxuICAgICAgICAgICAgOTogJzknLFxuICAgICAgICAgICAgMDogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXJMeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWx5Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckx5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoTW9yb2NjbykgW2FyLW1hXVxuLy8hIGF1dGhvciA6IEVsRmFkaWxpIFlhc3NpbmUgOiBodHRwczovL2dpdGh1Yi5jb20vRWxGYWRpbGlZXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhck1hID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbWEnLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYp9it2K9f2KfYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTWE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIChQYWxlc3RpbmUpIFthci1wc11cbi8vISBhdXRob3IgOiBNYWpkIEFsLVNoaWhhYmkgOiBodHRwczovL2dpdGh1Yi5jb20vbWFqZGFsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9mhJyxcbiAgICAgICAgICAgIDI6ICfZoicsXG4gICAgICAgICAgICAzOiAn2aMnLFxuICAgICAgICAgICAgNDogJ9mkJyxcbiAgICAgICAgICAgIDU6ICfZpScsXG4gICAgICAgICAgICA2OiAn2aYnLFxuICAgICAgICAgICAgNzogJ9mnJyxcbiAgICAgICAgICAgIDg6ICfZqCcsXG4gICAgICAgICAgICA5OiAn2aknLFxuICAgICAgICAgICAgMDogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGFyUHMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1wcycsIHtcbiAgICAgICAgbW9udGhzOiAn2YPYp9mG2YjZhiDYp9mE2KvYp9mG2Ypf2LTYqNin2Ldf2KLYsNin2LFf2YbZitiz2KfZhl/Yo9mK2ZHYp9ixX9it2LLZitix2KfZhl/YqtmF2ZHZiNiyX9ii2Khf2KPZitmE2YjZhF/Yqti02LHZiiDYp9mE2KPZiNmR2YRf2KrYtNix2YrZhiDYp9mE2KvYp9mG2Ypf2YPYp9mG2YjZhiDYp9mE2KPZiNmR2YQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mD2aJf2LTYqNin2Ldf2KLYsNin2LFf2YbZitiz2KfZhl/Yo9mK2ZHYp9ixX9it2LLZitix2KfZhl/YqtmF2ZHZiNiyX9ii2Khf2KPZitmE2YjZhF/YqtmhX9iq2aJf2YPZoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcnKSAvLyByZXZlcnNlZCBzaW5jZSBuZWdhdGl2ZSBsb29rYmVoaW5kIG5vdCBzdXBwb3J0ZWQgZXZlcnl3aGVyZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aJdKD8hW1xcdTA2MmFcXHUwNjQzXSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhclBzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoU2F1ZGkgQXJhYmlhKSBbYXItc2FdXG4vLyEgYXV0aG9yIDogU3VoYWlsIEFsa293YWlsZWV0IDogaHR0cHM6Ly9naXRodWIuY29tL3hzb2hcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn2aEnLFxuICAgICAgICAgICAgMjogJ9miJyxcbiAgICAgICAgICAgIDM6ICfZoycsXG4gICAgICAgICAgICA0OiAn2aQnLFxuICAgICAgICAgICAgNTogJ9mlJyxcbiAgICAgICAgICAgIDY6ICfZpicsXG4gICAgICAgICAgICA3OiAn2acnLFxuICAgICAgICAgICAgODogJ9moJyxcbiAgICAgICAgICAgIDk6ICfZqScsXG4gICAgICAgICAgICAwOiAn2aAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICAgICAn2aAnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYXJTYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXNhJywge1xuICAgICAgICBtb250aHM6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyU2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlICA6ICBBcmFiaWMgKFR1bmlzaWEpIFthci10bl1cbi8vISBhdXRob3IgOiBOYWRlciBUb3VrYWJyaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9uYWRlcmlvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYXJUbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXRuJywge1xuICAgICAgICBtb250aHM6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJUbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgW2FyXVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcbi8vISBhdXRob3IgOiBBaG1lZCBFbGtoYXRpYlxuLy8hIGF1dGhvciA6IGZvcmFiaSBodHRwczovL2dpdGh1Yi5jb20vZm9yYWJpXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9mhJyxcbiAgICAgICAgICAgIDI6ICfZoicsXG4gICAgICAgICAgICAzOiAn2aMnLFxuICAgICAgICAgICAgNDogJ9mkJyxcbiAgICAgICAgICAgIDU6ICfZpScsXG4gICAgICAgICAgICA2OiAn2aYnLFxuICAgICAgICAgICAgNzogJ9mnJyxcbiAgICAgICAgICAgIDg6ICfZqCcsXG4gICAgICAgICAgICA5OiAn2aknLFxuICAgICAgICAgICAgMDogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhcicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXplcmJhaWphbmkgW2F6XVxuLy8hIGF1dGhvciA6IHRvcGNoaXlldiA6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3BjaGl5ZXZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogJy1pbmNpJyxcbiAgICAgICAgNTogJy1pbmNpJyxcbiAgICAgICAgODogJy1pbmNpJyxcbiAgICAgICAgNzA6ICctaW5jaScsXG4gICAgICAgIDgwOiAnLWluY2knLFxuICAgICAgICAyOiAnLW5jaScsXG4gICAgICAgIDc6ICctbmNpJyxcbiAgICAgICAgMjA6ICctbmNpJyxcbiAgICAgICAgNTA6ICctbmNpJyxcbiAgICAgICAgMzogJy3DvG5jw7wnLFxuICAgICAgICA0OiAnLcO8bmPDvCcsXG4gICAgICAgIDEwMDogJy3DvG5jw7wnLFxuICAgICAgICA2OiAnLW5jxLEnLFxuICAgICAgICA5OiAnLXVuY3UnLFxuICAgICAgICAxMDogJy11bmN1JyxcbiAgICAgICAgMzA6ICctdW5jdScsXG4gICAgICAgIDYwOiAnLcSxbmPEsScsXG4gICAgICAgIDkwOiAnLcSxbmPEsScsXG4gICAgfTtcblxuICAgIHZhciBheiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2F6Jywge1xuICAgICAgICBtb250aHM6ICd5YW52YXJfZmV2cmFsX21hcnRfYXByZWxfbWF5X2l5dW5faXl1bF9hdnF1c3Rfc2VudHlhYnJfb2t0eWFicl9ub3lhYnJfZGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ3lhbl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdCYXphcl9CYXphciBlcnTJmXNpX8OHyZlyxZ/JmW5iyZkgYXjFn2FtxLFfw4fJmXLFn8mZbmLJmV9Dw7xtyZkgYXjFn2FtxLFfQ8O8bcmZX8WeyZluYsmZJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdCYXpfQnpFX8OHQXhfw4fJmXJfQ0F4X0PDvG1fxZ7JmW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQnpfQkVfw4dBX8OHyZlfQ0FfQ8O8X8WeyZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzYWJhaCBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tnyZlsyZluIGjJmWZ0yZldIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZMO8bsmZbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdba2XDp8mZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDJmXZ2yZlsJyxcbiAgICAgICAgICAgIHM6ICdiaXIgbmXDp8mZIHNhbml5yZknLFxuICAgICAgICAgICAgc3M6ICclZCBzYW5pecmZJyxcbiAgICAgICAgICAgIG06ICdiaXIgZMmZcWlxyZknLFxuICAgICAgICAgICAgbW06ICclZCBkyZlxaXHJmScsXG4gICAgICAgICAgICBoOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTTogJ2JpciBheScsXG4gICAgICAgICAgICBNTTogJyVkIGF5JyxcbiAgICAgICAgICAgIHk6ICdiaXIgaWwnLFxuICAgICAgICAgICAgeXk6ICclZCBpbCcsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9nZWPJmXxzyZloyZlyfGfDvG5kw7x6fGF4xZ9hbS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKGfDvG5kw7x6fGF4xZ9hbSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ2VjyZknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3PJmWjJmXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2fDvG5kw7x6JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdheMWfYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKMSxbmPEsXxpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3EsW5jxLEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVsYXJ1c2lhbiBbYmVdXG4vLyEgYXV0aG9yIDogRG1pdHJ5IERlbWlkb3YgOiBodHRwczovL2dpdGh1Yi5jb20vZGVtaWRvdjkxXG4vLyEgYXV0aG9yOiBQcmFsZXNrYTogaHR0cDovL3ByYWxlc2thLnByby9cbi8vISBBdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgICA/IGZvcm1zWzFdXG4gICAgICAgICAgICAgIDogZm9ybXNbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHNzOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG1tOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyxcbiAgICAgICAgICAgIGhoOiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScgOiAn0LPQsNC00LfRltC90YNf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyxcbiAgICAgICAgICAgIGRkOiAn0LTQt9C10L3RjF/QtNC90ZZf0LTQt9GR0L0nLFxuICAgICAgICAgICAgTU06ICfQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRnicsXG4gICAgICAgICAgICB5eTogJ9Cz0L7QtF/Qs9Cw0LTRi1/Qs9Cw0LTQvtGeJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsCcgOiAn0YXQstGW0LvRltC90YMnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsCcgOiAn0LPQsNC00LfRltC90YMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGC0YPQtNC30LXQvdGPX9C70Y7RgtCw0LPQsF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQstGW0LrQsF/RgtGA0LDRntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQvdGPX9C20L3RltGe0L3Rj1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvRh9C90ZbQutCwX9C70ZbRgdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GB0YLRg9C00LfQtdC90Yxf0LvRjtGC0Ytf0YHQsNC60LDQstGW0Lpf0LrRgNCw0YHQsNCy0ZbQul/RgtGA0LDQstC10L3RjF/Rh9GN0YDQstC10L3RjF/Qu9GW0L/QtdC90Yxf0LbQvdGW0LLQtdC90Yxf0LLQtdGA0LDRgdC10L3RjF/QutCw0YHRgtGA0YvRh9C90ZbQul/Qu9GW0YHRgtCw0L/QsNC0X9GB0L3QtdC20LDQvdGMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn0YHRgtGD0LRf0LvRjtGCX9GB0LDQul/QutGA0LDRgV/RgtGA0LDQsl/Rh9GN0YDQsl/Qu9GW0L9f0LbQvdGW0LJf0LLQtdGAX9C60LDRgdGCX9C70ZbRgdGCX9GB0L3QtdC2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0L3Rj9C00LfQtdC70Y5f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNGDX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbRg1/RgdGD0LHQvtGC0YMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9C90Y/QtNC30LXQu9GPX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTQsF/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0LBf0YHRg9Cx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0KPRg9GeXSA/KD860LzRltC90YPQu9GD0Y580L3QsNGB0YLRg9C/0L3Rg9GOKT8gP1xcXSA/ZGRkZC8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9CjXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C/0YDQsNC3ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDRgtCw0LzRgycsXG4gICAgICAgICAgICBzOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LfQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRi3zRgNCw0L3RltGG0Yt80LTQvdGPfNCy0LXRh9Cw0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQsNGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3RltGG0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LDRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRlnzRi3zQs9CwKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG51bWJlciAlIDEwID09PSAyIHx8IG51bWJlciAlIDEwID09PSAzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxMiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBudW1iZXIgKyAnLdGWJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgKyAnLdGLJztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQsCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJ1bGdhcmlhbiBbYmddXG4vLyEgYXV0aG9yIDogS3Jhc2VuIEJvcmlzb3YgOiBodHRwczovL2dpdGh1Yi5jb20va3JhelxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGJnID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmcnLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdGDX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CU0L3QtdGBINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cj0YLRgNC1INCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9CyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfRgdC70LXQtCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC10LTQuCAlcycsXG4gICAgICAgICAgICBzOiAn0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGg6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGg6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkOiAn0LTQtdC9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LTQtdC90LAnLFxuICAgICAgICAgICAgdzogJ9GB0LXQtNC80LjRhtCwJyxcbiAgICAgICAgICAgIHd3OiAnJWQg0YHQtdC00LzQuNGG0LgnLFxuICAgICAgICAgICAgTTogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU06ICclZCDQvNC10YHQtdGG0LAnLFxuICAgICAgICAgICAgeTogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eTogJyVkINCz0L7QtNC40L3QuCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmFtYmFyYSBbYm1dXG4vLyEgYXV0aG9yIDogRXN0ZWxsZSBDb21tZW50IDogaHR0cHM6Ly9naXRodWIuY29tL2VzdGVsbGVjb21tZW50XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYm0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibScsIHtcbiAgICAgICAgbW9udGhzOiAnWmFud3V5ZWthbG9fRmV3dXJ1eWVrYWxvX01hcmlzaWthbG9fQXdpcmlsaWthbG9fTcmba2Fsb19adXfJm25rYWxvX1p1bHV5ZWthbG9fVXRpa2Fsb19TyZt0YW5idXJ1a2Fsb1/JlGt1dMmUYnVydWthbG9fTm93YW5idXJ1a2Fsb19EZXNhbmJ1cnVrYWxvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1phbl9GZXdfTWFyX0F3aV9NyZtfWnV3X1p1bF9VdGlfU8mbdF/JlGt1X05vd19EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnS2FyaV9OdMmbbsmbbl9UYXJhdGFfQXJhYmFfQWxhbWlzYV9KdW1hX1NpYmlyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0thcl9OdMmbX1Rhcl9BcmFfQWxhX0p1bV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnS2FfTnRfVGFfQXJfQWxfSnVfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tCaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbU2luaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZG9uIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLdW51IGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt0yZttyZtuZW4gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGvJlG7JlCcsXG4gICAgICAgICAgICBwYXN0OiAnYSBiyZsgJXMgYsmUJyxcbiAgICAgICAgICAgIHM6ICdzYW5nYSBkYW1hIGRhbWEnLFxuICAgICAgICAgICAgc3M6ICdzZWtvbmRpICVkJyxcbiAgICAgICAgICAgIG06ICdtaW5pdGkga2VsZW4nLFxuICAgICAgICAgICAgbW06ICdtaW5pdGkgJWQnLFxuICAgICAgICAgICAgaDogJ2zJm3LJmyBrZWxlbicsXG4gICAgICAgICAgICBoaDogJ2zJm3LJmyAlZCcsXG4gICAgICAgICAgICBkOiAndGlsZSBrZWxlbicsXG4gICAgICAgICAgICBkZDogJ3RpbGUgJWQnLFxuICAgICAgICAgICAgTTogJ2thbG8ga2VsZW4nLFxuICAgICAgICAgICAgTU06ICdrYWxvICVkJyxcbiAgICAgICAgICAgIHk6ICdzYW4ga2VsZW4nLFxuICAgICAgICAgICAgeXk6ICdzYW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVuZ2FsaSAoQmFuZ2xhZGVzaCkgW2JuLWJkXVxuLy8hIGF1dGhvciA6IEFzcmFmIEhvc3NhaW4gUGF0b2FyeSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h3b29sZm9yZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgp6cnLFxuICAgICAgICAgICAgMjogJ+CnqCcsXG4gICAgICAgICAgICAzOiAn4KepJyxcbiAgICAgICAgICAgIDQ6ICfgp6onLFxuICAgICAgICAgICAgNTogJ+CnqycsXG4gICAgICAgICAgICA2OiAn4KesJyxcbiAgICAgICAgICAgIDc6ICfgp60nLFxuICAgICAgICAgICAgODogJ+CnricsXG4gICAgICAgICAgICA5OiAn4KevJyxcbiAgICAgICAgICAgIDA6ICfgp6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KenJzogJzEnLFxuICAgICAgICAgICAgJ+CnqCc6ICcyJyxcbiAgICAgICAgICAgICfgp6knOiAnMycsXG4gICAgICAgICAgICAn4KeqJzogJzQnLFxuICAgICAgICAgICAgJ+Cnqyc6ICc1JyxcbiAgICAgICAgICAgICfgp6wnOiAnNicsXG4gICAgICAgICAgICAn4KetJzogJzcnLFxuICAgICAgICAgICAgJ+Cnric6ICc4JyxcbiAgICAgICAgICAgICfgp68nOiAnOScsXG4gICAgICAgICAgICAn4KemJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGJuQmQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibi1iZCcsIHtcbiAgICAgICAgbW9udGhzOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4Ka/X+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CmnOCmvuCmqOCngV/gpqvgp4fgpqzgp43gprDgp4Ff4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4KafX+CmheCmleCnjeCmn+Cni1/gpqjgpq3gp4df4Kah4Ka/4Ka44KeHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprlf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHM6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG06ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGg6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQ6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE06ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHk6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kas4Kab4KawJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4KakfOCmreCni+CmsHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprjgpqjgp43gpqfgp43gpq/gpr584Kaw4Ka+4KakLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kat4KeL4KawJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmuOCmleCmvuCmsicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpqbgp4Hgpqrgp4HgprAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMyA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+4KayJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ka44Kao4KeN4Kan4KeN4Kav4Ka+Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmreCni+CmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqbgp4Hgpqrgp4HgprAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmrOCmv+CmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44Kao4KeN4Kan4KeN4Kav4Ka+JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm5CZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCZW5nYWxpIFtibl1cbi8vISBhdXRob3IgOiBLYXVzaGlrIEdhbmRoaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGlrZ2FuZGhpXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CnpycsXG4gICAgICAgICAgICAyOiAn4KeoJyxcbiAgICAgICAgICAgIDM6ICfgp6knLFxuICAgICAgICAgICAgNDogJ+CnqicsXG4gICAgICAgICAgICA1OiAn4KerJyxcbiAgICAgICAgICAgIDY6ICfgp6wnLFxuICAgICAgICAgICAgNzogJ+CnrScsXG4gICAgICAgICAgICA4OiAn4KeuJyxcbiAgICAgICAgICAgIDk6ICfgp68nLFxuICAgICAgICAgICAgMDogJ+CnpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICAgICAn4KeoJzogJzInLFxuICAgICAgICAgICAgJ+CnqSc6ICczJyxcbiAgICAgICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICAgICAn4KerJzogJzUnLFxuICAgICAgICAgICAgJ+CnrCc6ICc2JyxcbiAgICAgICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICAgICAn4KeuJzogJzgnLFxuICAgICAgICAgICAgJ+Cnryc6ICc5JyxcbiAgICAgICAgICAgICfgp6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibicsIHtcbiAgICAgICAgbW9udGhzOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4Ka/X+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CmnOCmvuCmqOCngV/gpqvgp4fgpqzgp43gprDgp4Ff4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4KafX+CmheCmleCnjeCmn+Cni1/gpqjgpq3gp4df4Kah4Ka/4Ka44KeHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprlf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHM6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG06ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGg6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQ6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE06ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHk6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kas4Kab4KawJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CmsOCmvuCmpHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprDgpr7gpqQvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kam4KeB4Kaq4KeB4KawJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CmrOCmv+CmleCmvuCmsidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kam4KeB4Kaq4KeB4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqzgpr/gppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUaWJldGFuIFtib11cbi8vISBhdXRob3IgOiBUaHVwdGVuIE4uIENoYWtyaXNoYXIgOiBodHRwczovL2dpdGh1Yi5jb20vdmFqcmFkb2dcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4LyhJyxcbiAgICAgICAgICAgIDI6ICfgvKInLFxuICAgICAgICAgICAgMzogJ+C8oycsXG4gICAgICAgICAgICA0OiAn4LykJyxcbiAgICAgICAgICAgIDU6ICfgvKUnLFxuICAgICAgICAgICAgNjogJ+C8picsXG4gICAgICAgICAgICA3OiAn4LynJyxcbiAgICAgICAgICAgIDg6ICfgvKgnLFxuICAgICAgICAgICAgOTogJ+C8qScsXG4gICAgICAgICAgICAwOiAn4LygJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+C8oSc6ICcxJyxcbiAgICAgICAgICAgICfgvKInOiAnMicsXG4gICAgICAgICAgICAn4LyjJzogJzMnLFxuICAgICAgICAgICAgJ+C8pCc6ICc0JyxcbiAgICAgICAgICAgICfgvKUnOiAnNScsXG4gICAgICAgICAgICAn4LymJzogJzYnLFxuICAgICAgICAgICAgJ+C8pyc6ICc3JyxcbiAgICAgICAgICAgICfgvKgnOiAnOCcsXG4gICAgICAgICAgICAn4LypJzogJzknLFxuICAgICAgICAgICAgJ+C8oCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBibyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JvJywge1xuICAgICAgICBtb250aHM6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTgvZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4L2f4L6z4LyLMV/gvZ/gvrPgvIsyX+C9n+C+s+C8izNf4L2f4L6z4LyLNF/gvZ/gvrPgvIs1X+C9n+C+s+C8izZf4L2f4L6z4LyLN1/gvZ/gvrPgvIs4X+C9n+C+s+C8izlf4L2f4L6z4LyLMTBf4L2f4L6z4LyLMTFf4L2f4L6z4LyLMTInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogL14o4L2f4L6z4LyLXFxkezEsMn0pLyxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4L2C4L2f4L2g4LyL4L2J4L2y4LyL4L2Y4LyLX+C9guC9n+C9oOC8i+C9n+C+s+C8i+C9luC8i1/gvYLgvZ/gvaDgvIvgvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2C4L2f4L2g4LyL4L2j4L634L2C4LyL4L2U4LyLX+C9guC9n+C9oOC8i+C9leC9tOC9ouC8i+C9luC9tF/gvYLgvZ/gvaDgvIvgvZTgvIvgvabgvYTgvabgvItf4L2C4L2f4L2g4LyL4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4L2J4L2yX+C9n+C+s1/gvZjgvbLgvYJf4L2j4L634L2CX+C9leC9tOC9ol/gvabgvYTgvaZf4L2m4L6k4L264L2TJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C9keC9suC8i+C9ouC9suC9hF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgvabgvYTgvIvgvYngvbLgvZNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9ouC+l+C9uuC9puC8i+C9mF0sIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4L2B4LyL4L2m4L2EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgvZbgvZHgvbTgvZPgvIvgvZXgvrLgvYLgvIvgvZjgvZDgvaDgvIvgvZhdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4L2j4LyLJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgvabgvpTgvZPgvIvgvaMnLFxuICAgICAgICAgICAgczogJ+C9o+C9mOC8i+C9puC9hCcsXG4gICAgICAgICAgICBzczogJyVkIOC9puC+kOC9ouC8i+C9huC8jScsXG4gICAgICAgICAgICBtOiAn4L2m4L6Q4L2i4LyL4L2Y4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4L2m4L6Q4L2i4LyL4L2YJyxcbiAgICAgICAgICAgIGg6ICfgvYbgvbTgvIvgvZrgvbzgvZHgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgaGg6ICclZCDgvYbgvbTgvIvgvZrgvbzgvZEnLFxuICAgICAgICAgICAgZDogJ+C9ieC9suC9k+C8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBkZDogJyVkIOC9ieC9suC9k+C8iycsXG4gICAgICAgICAgICBNOiAn4L2f4L6z4LyL4L2W4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4L2f4L6z4LyL4L2WJyxcbiAgICAgICAgICAgIHk6ICfgvaPgvbzgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgeXk6ICclZCDgvaPgvbwnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Lyh4Lyi4Lyj4Lyk4Lyl4Lym4Lyn4Lyo4Lyp4LygXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4L2Y4L2a4L2T4LyL4L2Y4L28fOC9nuC9vOC9guC9puC8i+C9gOC9pnzgvYngvbLgvZPgvIvgvYLgvbTgvYR84L2R4L2C4L284L2E4LyL4L2R4L2CfOC9mOC9muC9k+C8i+C9mOC9vC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgvZjgvZrgvZPgvIvgvZjgvbwnICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnICYmIGhvdXIgPCA1KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4L2R4L2C4L284L2E4LyL4L2R4L2CJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9mOC9muC9k+C8i+C9mOC9vCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2e4L284L2C4L2m4LyL4L2A4L2mJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9keC9guC9vOC9hOC8i+C9keC9gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJyZXRvbiBbYnJdXG4vLyEgYXV0aG9yIDogSmVhbi1CYXB0aXN0ZSBMZSBEdWlnb3UgOiBodHRwczovL2dpdGh1Yi5jb20vamJsZWR1aWdvdVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtbTogJ211bnV0ZW5uJyxcbiAgICAgICAgICAgIE1NOiAnbWl6JyxcbiAgICAgICAgICAgIGRkOiAnZGV2ZXpoJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIG11dGF0aW9uKGZvcm1hdFtrZXldLCBudW1iZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFycyhudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoIChsYXN0TnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyBibG9heic7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIHZsb2F6JztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsYXN0TnVtYmVyKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3ROdW1iZXIobnVtYmVyICUgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG11dGF0aW9uKHRleHQsIG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gc29mdE11dGF0aW9uKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzb2Z0TXV0YXRpb24odGV4dCkge1xuICAgICAgICB2YXIgbXV0YXRpb25UYWJsZSA9IHtcbiAgICAgICAgICAgIG06ICd2JyxcbiAgICAgICAgICAgIGI6ICd2JyxcbiAgICAgICAgICAgIGQ6ICd6JyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSArIHRleHQuc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIHZhciBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZ2VuL2ksXG4gICAgICAgICAgICAvXmNbyrxcXCddaHdlL2ksXG4gICAgICAgICAgICAvXm1ldS9pLFxuICAgICAgICAgICAgL15lYnIvaSxcbiAgICAgICAgICAgIC9ebWFlL2ksXG4gICAgICAgICAgICAvXihtZXp8ZXZlKS9pLFxuICAgICAgICAgICAgL15nb3UvaSxcbiAgICAgICAgICAgIC9eZW9zL2ksXG4gICAgICAgICAgICAvXmd3ZS9pLFxuICAgICAgICAgICAgL15oZXIvaSxcbiAgICAgICAgICAgIC9eZHUvaSxcbiAgICAgICAgICAgIC9ea2VyL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGdlbnZlcnxjW8q8XFwnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1fGdlbnxjW8q8XFwnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oZ2VudmVyfGNbyrxcXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxlb3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oZ2VufGNbyrxcXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2VyKS9pLFxuICAgICAgICBmdWxsV2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ec3VsL2ksXG4gICAgICAgICAgICAvXmx1bi9pLFxuICAgICAgICAgICAgL15tZXVyemgvaSxcbiAgICAgICAgICAgIC9ebWVyY1vKvFxcJ11oZXIvaSxcbiAgICAgICAgICAgIC9eeWFvdS9pLFxuICAgICAgICAgICAgL15nd2VuZXIvaSxcbiAgICAgICAgICAgIC9ec2Fkb3JuL2ksXG4gICAgICAgIF0sXG4gICAgICAgIHNob3J0V2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eU3VsL2ksXG4gICAgICAgICAgICAvXkx1bi9pLFxuICAgICAgICAgICAgL15NZXUvaSxcbiAgICAgICAgICAgIC9eTWVyL2ksXG4gICAgICAgICAgICAvXllhby9pLFxuICAgICAgICAgICAgL15Hd2UvaSxcbiAgICAgICAgICAgIC9eU2FkL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1pbldlZWtkYXlzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXlN1L2ksXG4gICAgICAgICAgICAvXkx1L2ksXG4gICAgICAgICAgICAvXk1lKFtecl18JCkvaSxcbiAgICAgICAgICAgIC9eTWVyL2ksXG4gICAgICAgICAgICAvXllhL2ksXG4gICAgICAgICAgICAvXkd3L2ksXG4gICAgICAgICAgICAvXlNhL2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgYnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicicsIHtcbiAgICAgICAgbW9udGhzOiAnR2VudmVyX0PKvGh3ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0dlbl9Dyrxod2VfTWV1X0Vicl9NYWVfRXZlX0dvdV9Fb3NfR3dlX0hlcl9EdV9LZXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VsX0x1bl9NZXVyemhfTWVyY8q8aGVyX1lhb3VfR3dlbmVyX1NhZG9ybicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bF9MdW5fTWV1X01lcl9ZYW9fR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MdV9NZV9NZXJfWWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2U6IG1pbldlZWtkYXlzUGFyc2UsXG4gICAgICAgIGZ1bGxXZWVrZGF5c1BhcnNlOiBmdWxsV2Vla2RheXNQYXJzZSxcbiAgICAgICAgc2hvcnRXZWVrZGF5c1BhcnNlOiBzaG9ydFdlZWtkYXlzUGFyc2UsXG4gICAgICAgIG1pbldlZWtkYXlzUGFyc2U6IG1pbldlZWtkYXlzUGFyc2UsXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IG1vbnRoc1N0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiBtb250aHNTaG9ydFN0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbYSB2aXpdIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGl6aXYgZGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbV2FyY8q8aG9hemggZGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGVjyrxoIGRhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3Bhc2V0IGRhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2EtYmVubiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgyrx6bycsXG4gICAgICAgICAgICBzOiAndW4gbmViZXVkIHNlZ29uZGVubm/DuScsXG4gICAgICAgICAgICBzczogJyVkIGVpbGVubicsXG4gICAgICAgICAgICBtOiAndXIgdnVudXRlbm4nLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIGg6ICd1biBldXInLFxuICAgICAgICAgICAgaGg6ICclZCBldXInLFxuICAgICAgICAgICAgZDogJ3VuIGRldmV6aCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgTTogJ3VyIG1peicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgeTogJ3VyIGJsb2F6JyxcbiAgICAgICAgICAgIHl5OiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFycyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGHDsXx2ZXQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdhw7EnIDogJ3ZldCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9hLm0ufGcubS4vLCAvLyBnb3VkZSBtZXJlbm4gfCBhLXJhb2sgbWVyZW5uXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuID09PSAnZy5tLic7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciA8IDEyID8gJ2EubS4nIDogJ2cubS4nO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJvc25pYW4gW2JzXVxuLy8hIGF1dGhvciA6IE5lZGltIENob2xpY2ggOiBodHRwczovL2dpdGh1Yi5jb20vZnJvbnR5YXJkXG4vLyEgYXV0aG9yIDogUmFzaWQgUmVkemljIDogaHR0cHM6Ly9naXRodWIuY29tL3Jhc2lkcmVcbi8vISBiYXNlZCBvbiAoaHIpIHRyYW5zbGF0aW9uIGJ5IEJvamFuIE1hcmtvdmnEh1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgID8gJ2plZG5hIG1pbnV0YSdcbiAgICAgICAgICAgICAgICAgICAgOiBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2plZG51IG1pbnV0dSdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkYW4gc2F0JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBicyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JzJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICdkYW4nLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICdtamVzZWMnLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBicztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDYXRhbGFuIFtjYV1cbi8vISBhdXRob3IgOiBKdWFuIEcuIEh1cnRhZG8gOiBodHRwczovL2dpdGh1Yi5jb20vanVhbmdodXJ0YWRvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgY2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjYScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdnZW5lcl9mZWJyZXJfbWFyw6dfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogXCJkZSBnZW5lcl9kZSBmZWJyZXJfZGUgbWFyw6dfZCdhYnJpbF9kZSBtYWlnX2RlIGp1bnlfZGUganVsaW9sX2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlXCIuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxzKStNTU1NLyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnZ2VuLl9mZWJyLl9tYXLDp19hYnIuX21haWdfanVueV9qdWwuX2FnLl9zZXQuX29jdC5fbm92Ll9kZXMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ2RpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGdfZGxfZHRfZGNfZGpfZHZfZHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F2dWkgYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2RlbcOgIGEgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYWhpciBhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc3NhdCBhICcgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IFwiZCdhcXXDrSAlc1wiLFxuICAgICAgICAgICAgcGFzdDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHM6ICd1bnMgc2Vnb25zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vnb25zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0cycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JlcycsXG4gICAgICAgICAgICBkOiAndW4gZGlhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGllcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzb3MnLFxuICAgICAgICAgICAgeTogJ3VuIGFueScsXG4gICAgICAgICAgICB5eTogJyVkIGFueXMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0ocnxufHR8w6h8YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgID8gJ24nXG4gICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gNFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ3plY2ggW2NzXVxuLy8hIGF1dGhvciA6IHBldHJiZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL3BldHJiZWxhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0ge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnbGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9rdsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWplbl9saXN0b3BhZF9wcm9zaW5lYycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICdsZWRuYV/Dum5vcmFfYsWZZXpuYV9kdWJuYV9rdsSbdG5hX8SNZXJ2bmFfxI1lcnZlbmNlX3NycG5hX3rDocWZw61fxZnDrWpuYV9saXN0b3BhZHVfcHJvc2luY2UnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvREQ/W28uXT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK01NTU0vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA9ICdsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3Bybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmxlZC9pLFxuICAgICAgICAgICAgL17Dum5vL2ksXG4gICAgICAgICAgICAvXmLFmWUvaSxcbiAgICAgICAgICAgIC9eZHViL2ksXG4gICAgICAgICAgICAvXmt2xJsvaSxcbiAgICAgICAgICAgIC9eKMSNdm58xI1lcnZlbiR8xI1lcnZuYSkvaSxcbiAgICAgICAgICAgIC9eKMSNdmN8xI1lcnZlbmVjfMSNZXJ2ZW5jZSkvaSxcbiAgICAgICAgICAgIC9ec3JwL2ksXG4gICAgICAgICAgICAvXnrDocWZL2ksXG4gICAgICAgICAgICAvXsWZw61qL2ksXG4gICAgICAgICAgICAvXmxpcy9pLFxuICAgICAgICAgICAgL15wcm8vaSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihsZWRlbnzDum5vcnxixZllemVufGR1YmVufGt2xJt0ZW58xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58esOhxZnDrXzFmcOtamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pO1xuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPiAxICYmIG4gPCA1ICYmIH5+KG4gLyAxMCkgIT09IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBmZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncMOhciBzZWt1bmQnIDogJ3DDoXIgc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzogLy8gOSBzZWNvbmRzIC8gaW4gOSBzZWNvbmRzIC8gOSBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ20nOiAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6IGlzRnV0dXJlID8gJ21pbnV0dScgOiAnbWludXRvdSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdoJzogLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiBpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZGluJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZCc6IC8vIGEgZGF5IC8gaW4gYSBkYXkgLyBhIGRheSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkZW4nIDogJ2RuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbnknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RueSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTSc6IC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtxJtzw61jJyA6ICdtxJtzw61jZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtxJtzw61jZScgOiAnbcSbc8OtY8WvJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtxJtzw61jaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAneSc6IC8vIGEgeWVhciAvIGluIGEgeWVhciAvIGEgeWVhciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdyb2snIDogJ3Jva2VtJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMgLyA5IHllYXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAncm9reScgOiAnbGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdsZXR5JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjcycsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGxlZGVufGxlZG5hfMO6bm9yYXzDum5vcnxixZllemVufGLFmWV6bmF8ZHViZW58ZHVibmF8a3bEm3RlbnxrdsSbdG5hfMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHNycG5hfHrDocWZw618xZnDrWplbnzFmcOtam5hfGxpc3RvcGFkdXxsaXN0b3BhZHxwcm9zaW5lY3xwcm9zaW5jZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBsOiAnRC4gTS4gWVlZWScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6w610cmEgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSDEjXR2cnRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcMOhdGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSB2XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw6ldIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncMWZZWQgJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENodXZhc2ggW2N2XVxuLy8hIGF1dGhvciA6IEFuYXRvbHkgTWlyb25vdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taXJvbnRvbGlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N2Jywge1xuICAgICAgICBtb250aHM6ICfQutOR0YDQu9Cw0Ydf0L3QsNGA05HRgV/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YDRgtC80LVf0YPRgtORX9Kr0YPRgNC70LBf0LDQstOR0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YjRgtCw0LInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0LrTkdGAX9C90LDRgF/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YBf0YPRgtORX9Kr0YPRgF/QsNCy0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ9Cy0YvRgNGB0LDRgNC90LjQutGD0L1f0YLRg9C90YLQuNC60YPQvV/Ri9GC0LvQsNGA0LjQutGD0L1f0Y7QvdC60YPQvV/QutOX0qvQvdC10YDQvdC40LrRg9C9X9GN0YDQvdC10LrRg9C9X9GI05HQvNCw0YLQutGD0L0nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Cy0YvRgF/RgtGD0L1f0YvRgtC7X9GO0L1f0LrTl9KrX9GN0YDQvV/RiNOR0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0LLRgF/RgtC9X9GL0YJf0Y7QvV/QutKrX9GN0YBf0YjQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIFlZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Cf0LDRj9C9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KvRgNCw0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTltC90LXRgF0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vSqtC40YLQtdGBXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb0JjRgNGC0L3Tl10gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAob3V0cHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGFmZml4ID0gL9GB0LXRhdC10YIkL2kuZXhlYyhvdXRwdXQpXG4gICAgICAgICAgICAgICAgICAgID8gJ9GA0LXQvSdcbiAgICAgICAgICAgICAgICAgICAgOiAv0qvRg9C7JC9pLmV4ZWMob3V0cHV0KVxuICAgICAgICAgICAgICAgICAgICAgID8gJ9GC0LDQvSdcbiAgICAgICAgICAgICAgICAgICAgICA6ICfRgNCw0L0nO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQgKyBhZmZpeDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiAnJXMg0LrQsNGP0LvQu9CwJyxcbiAgICAgICAgICAgIHM6ICfQv9OX0YAt0LjQuiDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBzczogJyVkINKr0LXQutC60YPQvdGCJyxcbiAgICAgICAgICAgIG06ICfQv9OX0YAg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBtbTogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaDogJ9C/05fRgCDRgdC10YXQtdGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBkOiAn0L/Tl9GAINC60YPQvScsXG4gICAgICAgICAgICBkZDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNOiAn0L/Tl9GAINGD0LnTkdGFJyxcbiAgICAgICAgICAgIE1NOiAnJWQg0YPQudOR0YUnLFxuICAgICAgICAgICAgeTogJ9C/05fRgCDSq9GD0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDSq9GD0LsnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0t0LzTl9GILyxcbiAgICAgICAgb3JkaW5hbDogJyVkLdC805fRiCcsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBXZWxzaCBbY3ldXG4vLyEgYXV0aG9yIDogUm9iZXJ0IEFsbGVuIDogaHR0cHM6Ly9naXRodWIuY29tL3JvYmdhbGxlblxuLy8hIGF1dGhvciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yeWFuZ3JlYXZlc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGN5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3knLCB7XG4gICAgICAgIG1vbnRoczogJ0lvbmF3cl9DaHdlZnJvcl9NYXdydGhfRWJyaWxsX01haV9NZWhlZmluX0dvcmZmZW5uYWZfQXdzdF9NZWRpX0h5ZHJlZl9UYWNod2VkZF9SaGFnZnlyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0lvbl9DaHdlX01hd19FYnJfTWFpX01laF9Hb3JfQXdzX01lZF9IeWRfVGFjaF9SaGFnJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdEeWRkIFN1bF9EeWRkIExsdW5fRHlkZCBNYXdydGhfRHlkZCBNZXJjaGVyX0R5ZGQgSWF1X0R5ZGQgR3dlbmVyX0R5ZGQgU2Fkd3JuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdWxfTGx1bl9NYXdfTWVyX0lhdV9Hd2VfU2FkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X0xsX01hX01lX0lhX0d3X1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIC8vIHRpbWUgZm9ybWF0cyBhcmUgdGhlIHNhbWUgYXMgZW4tZ2JcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIZWRkaXcgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbWWZvcnkgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGRvZSBhbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkaXdldGhhZiBhbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdtZXduICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB5biDDtGwnLFxuICAgICAgICAgICAgczogJ3ljaHlkaWcgZWlsaWFkYXUnLFxuICAgICAgICAgICAgc3M6ICclZCBlaWxpYWQnLFxuICAgICAgICAgICAgbTogJ211bnVkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbXVudWQnLFxuICAgICAgICAgICAgaDogJ2F3cicsXG4gICAgICAgICAgICBoaDogJyVkIGF3cicsXG4gICAgICAgICAgICBkOiAnZGl3cm5vZCcsXG4gICAgICAgICAgICBkZDogJyVkIGRpd3Jub2QnLFxuICAgICAgICAgICAgTTogJ21pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1pcycsXG4gICAgICAgICAgICB5OiAnYmx3eWRkeW4nLFxuICAgICAgICAgICAgeXk6ICclZCBmbHluZWRkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGZlZHxhaW58YWZ8aWx8eWRkfGVkfGVnKS8sXG4gICAgICAgIC8vIHRyYWRpdGlvbmFsIG9yZGluYWwgbnVtYmVycyBhYm92ZSAzMSBhcmUgbm90IGNvbW1vbmx5IHVzZWQgaW4gY29sbG9xdWlhbCBXZWxzaFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlcixcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJyxcbiAgICAgICAgICAgICAgICBsb29rdXAgPSBbXG4gICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAnYWYnLFxuICAgICAgICAgICAgICAgICAgICAnaWwnLFxuICAgICAgICAgICAgICAgICAgICAneWRkJyxcbiAgICAgICAgICAgICAgICAgICAgJ3lkZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZCcsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsIC8vIDFhZiB0byAxMGZlZFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJywgLy8gMTFlZyB0byAyMGZlZFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoYiA+IDIwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGIgPT09IDQwIHx8IGIgPT09IDUwIHx8IGIgPT09IDYwIHx8IGIgPT09IDgwIHx8IGIgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnZmVkJzsgLy8gbm90IDMwYWluLCA3MGFpbiBvciA5MGFpblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhaW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYiA+IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBsb29rdXBbYl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRGFuaXNoIFtkYV1cbi8vISBhdXRob3IgOiBVbHJpayBOaWVsc2VuIDogaHR0cHM6Ly9naXRodWIuY29tL21yYmFzZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGRhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGEnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ3PDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzw7huX21hbl90aXJfb25zX3Rvcl9mcmVfbMO4cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzw7hfbWFfdGlfb25fdG9fZnJfbMO4Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgW2QuXSBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaSBtb3JnZW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ3DDpSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbaV0gZGRkZFtzIGtsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc2lkZW4nLFxuICAgICAgICAgICAgczogJ2bDpSBzZWt1bmRlcicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG06ICdldCBtaW51dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dGVyJyxcbiAgICAgICAgICAgIGg6ICdlbiB0aW1lJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGltZXInLFxuICAgICAgICAgICAgZDogJ2VuIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2UnLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5lZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5lZGVyJyxcbiAgICAgICAgICAgIHk6ICdldCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlcm1hbiAoQXVzdHJpYSkgW2RlLWF0XVxuLy8hIGF1dGhvciA6IGxsdWNocyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHVjaHNcbi8vISBhdXRob3I6IE1lbmVsaW9uIEVsZW5zw7psZTogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBNYXJ0aW4gR3JvbGxlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9NYWRNR1xuLy8hIGF1dGhvciA6IE1pa29sYWogRGFkZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL21pazAxYWpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgaDogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgIGQ6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgdzogWydlaW5lIFdvY2hlJywgJ2VpbmVyIFdvY2hlJ10sXG4gICAgICAgICAgICBNOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgeTogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlQXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZS1hdCcsIHtcbiAgICAgICAgbW9udGhzOiAnSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKw6RuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWt1bmRlbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgdzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHd3OiAnJWQgV29jaGVuJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkZUF0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlcm1hbiAoU3dpdHplcmxhbmQpIFtkZS1jaF1cbi8vISBhdXRob3IgOiBzc2NodWVsbGVyIDogaHR0cHM6Ly9naXRodWIuY29tL3NzY2h1ZWxsZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgaDogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgIGQ6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgdzogWydlaW5lIFdvY2hlJywgJ2VpbmVyIFdvY2hlJ10sXG4gICAgICAgICAgICBNOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgeTogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlQ2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZS1jaCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0phbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWt1bmRlbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgdzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHd3OiAnJWQgV29jaGVuJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkZUNoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlcm1hbiBbZGVdXG4vLyEgYXV0aG9yIDogbGx1Y2hzIDogaHR0cHM6Ly9naXRodWIuY29tL2xsdWNoc1xuLy8hIGF1dGhvcjogTWVuZWxpb24gRWxlbnPDumxlOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuLy8hIGF1dGhvciA6IE1pa29sYWogRGFkZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL21pazAxYWpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgaDogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgIGQ6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgdzogWydlaW5lIFdvY2hlJywgJ2VpbmVyIFdvY2hlJ10sXG4gICAgICAgICAgICBNOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgeTogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAndm9yICVzJyxcbiAgICAgICAgICAgIHM6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzczogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgd3c6ICclZCBXb2NoZW4nLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGRpdmlhbiBbZHZdXG4vLyEgYXV0aG9yIDogSmF3aXNoIEhhbWVlZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXdpc2hcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAn3pberN6C3qreh96m3oPeqScsXG4gICAgICAgICAgICAn3orerN6E3rDeg96q3ofept6D3qknLFxuICAgICAgICAgICAgJ96J3qfeg96o3pfeqicsXG4gICAgICAgICAgICAn3oferd6V3rDeg96p3o3eqicsXG4gICAgICAgICAgICAn3onerScsXG4gICAgICAgICAgICAn3pbeq96C3rAnLFxuICAgICAgICAgICAgJ96W3qrejd6m3ofeqCcsXG4gICAgICAgICAgICAn3ofer96O3qbekN6w3pPeqicsXG4gICAgICAgICAgICAn3pDerN6V3rDek96s3onesN6E3qbeg96qJyxcbiAgICAgICAgICAgICfeh96u3obesN6T3q/ehN6m3oPeqicsXG4gICAgICAgICAgICAn3oLert6I3qzeid6w3oTept6D3qonLFxuICAgICAgICAgICAgJ96R3qjekN6s3onesN6E3qbeg96qJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXMgPSBbXG4gICAgICAgICAgICAn3ofep96L3qjeh96w3ozepicsXG4gICAgICAgICAgICAn3oDer96J3qYnLFxuICAgICAgICAgICAgJ96H3qbegt6w3o7ep96D3qYnLFxuICAgICAgICAgICAgJ96E3qrei96mJyxcbiAgICAgICAgICAgICfehN6q3oPep96Q3rDeit6m3ozeqCcsXG4gICAgICAgICAgICAn3oDeqt6G3qreg96qJyxcbiAgICAgICAgICAgICfegN6u3oLeqN6A3qjeg96qJyxcbiAgICAgICAgXTtcblxuICAgIHZhciBkdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2R2Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46ICfeh96n3oveqF/egN6v3onepl/eh96m3oLesF/ehN6q3ovepl/ehN6q3oPep1/egN6q3obeql/egN6u3oLeqCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv3onehnzeid6KLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ96J3oonID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ96J3oYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ96J3oonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1veid6o3ofept6L3qpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb3onep96L3qbeid6nXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1veh96o3ofesN6U3qxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW96K3qfeh96o3ozeqt6I3qhdIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfejN6s3oPerd6O3qbeh96oICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfeht6q3oPeqN6C3rAgJXMnLFxuICAgICAgICAgICAgczogJ96Q3qjeht6q3oLesN6M3qreht6u3oXerN6H3rAnLFxuICAgICAgICAgICAgc3M6ICdkJSDekN6o3obeqt6C3rDejN6qJyxcbiAgICAgICAgICAgIG06ICfeid6o3oLeqN6T3qzeh96wJyxcbiAgICAgICAgICAgIG1tOiAn3oneqN6C3qjek96qICVkJyxcbiAgICAgICAgICAgIGg6ICfejt6m3pHeqN6H3qjeg96s3ofesCcsXG4gICAgICAgICAgICBoaDogJ96O3qbekd6o3ofeqN6D3qogJWQnLFxuICAgICAgICAgICAgZDogJ96L3qreiN6m3oDerN6H3rAnLFxuICAgICAgICAgICAgZGQ6ICfei96q3ojept6Q3rAgJWQnLFxuICAgICAgICAgICAgTTogJ96J3qbegN6s3ofesCcsXG4gICAgICAgICAgICBNTTogJ96J3qbekN6wICVkJyxcbiAgICAgICAgICAgIHk6ICfeh96m3oDept6D3qzeh96wJyxcbiAgICAgICAgICAgIHl5OiAn3ofept6A3qbeg96qICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDcsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHcmVlayBbZWxdXG4vLyEgYXV0aG9yIDogQWdnZWxvcyBLYXJhbGlhcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZWhpZWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0eXBlb2YgRnVuY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGVsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZWwnLCB7XG4gICAgICAgIG1vbnRoc05vbWluYXRpdmVFbDpcbiAgICAgICAgICAgICfOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc0dlbml0aXZlRWw6XG4gICAgICAgICAgICAnzpnOsc69zr/Phc6xz4HOr86/z4VfzqbOtc6yz4HOv8+FzrHPgc6vzr/PhV/OnM6xz4HPhM6vzr/PhV/Okc+Az4HOuc67zq/Ov8+FX86czrHOkM6/z4VfzpnOv8+Fzr3Or86/z4VfzpnOv8+FzrvOr86/z4VfzpHPhc6zzr/Pjc+Dz4TOv8+FX86jzrXPgM+EzrXOvM6yz4HOr86/z4Vfzp/Ous+Ez4nOss+Bzq/Ov8+FX86dzr/Otc68zrLPgc6vzr/PhV/OlM61zrrOtc68zrLPgc6vzr/PhScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHM6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAvRC8udGVzdChmb3JtYXQuc3Vic3RyaW5nKDAsIGZvcm1hdC5pbmRleE9mKCdNTU1NJykpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBkYXkgbnVtYmVyIGJlZm9yZSAnTU1NTSdcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzR2VuaXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfOmc6xzr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/Phc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zronLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnzprPhc+BzrnOsc66zq5fzpTOtc+Fz4TOrc+BzrFfzqTPgc6vz4TOt1/OpM61z4TOrM+Bz4TOt1/OoM6tzrzPgM+EzrdfzqDOsc+BzrHPg866zrXPhc6uX86jzqzOss6yzrHPhM6/Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnzprPhc+BX86UzrXPhV/OpM+BzrlfzqTOtc+EX86gzrXOvF/OoM6xz4FfzqPOsc6yJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ86az4VfzpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnzrzOvCcgOiAnzpzOnCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ8+AzrwnIDogJ86gzpwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKVswXSA9PT0gJ868JztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1vOoM6cXVxcLj/OnD9cXC4/L2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyRWw6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbzqPOrs68zrXPgc6xIHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW86Rz43Pgc65zr8ge31dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbe31dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbzqfOuM61z4Ige31dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjogZnVuY3Rpb24gKGtleSwgbW9tKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJFbFtrZXldLFxuICAgICAgICAgICAgICAgIGhvdXJzID0gbW9tICYmIG1vbS5ob3VycygpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob3V0cHV0KSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5hcHBseShtb20pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKCd7fScsIGhvdXJzICUgMTIgPT09IDEgPyAnz4PPhM63JyA6ICfPg8+EzrnPgicpO1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8+DzrUgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIM+Az4HOuc69JyxcbiAgICAgICAgICAgIHM6ICfOu86vzrPOsSDOtM61z4XPhM61z4HPjM67zrXPgM+EzrEnLFxuICAgICAgICAgICAgc3M6ICclZCDOtM61z4XPhM61z4HPjM67zrXPgM+EzrEnLFxuICAgICAgICAgICAgbTogJ86tzr3OsSDOu861z4DPhM+MJyxcbiAgICAgICAgICAgIG1tOiAnJWQgzrvOtc+Az4TOrCcsXG4gICAgICAgICAgICBoOiAnzrzOr86xIM+Oz4HOsScsXG4gICAgICAgICAgICBoaDogJyVkIM+Oz4HOtc+CJyxcbiAgICAgICAgICAgIGQ6ICfOvM6vzrEgzrzOrc+BzrEnLFxuICAgICAgICAgICAgZGQ6ICclZCDOvM6tz4HOtc+CJyxcbiAgICAgICAgICAgIE06ICfOrc69zrHPgiDOvM6uzr3Osc+CJyxcbiAgICAgICAgICAgIE1NOiAnJWQgzrzOrs69zrXPgicsXG4gICAgICAgICAgICB5OiAnzq3Ovc6xz4Igz4fPgc+Mzr3Ov8+CJyxcbiAgICAgICAgICAgIHl5OiAnJWQgz4fPgc+Mzr3Ouc6xJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9zrcvLFxuICAgICAgICBvcmRpbmFsOiAnJWTOtycsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDRzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChBdXN0cmFsaWEpIFtlbi1hdV1cbi8vISBhdXRob3IgOiBKYXJlZCBNb3JzZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJjb2FsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5BdSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWF1Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkF1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKENhbmFkYSkgW2VuLWNhXVxuLy8hIGF1dGhvciA6IEpvbmF0aGFuIEFib3VyYmloIDogaHR0cHM6Ly9naXRodWIuY29tL2pvbmJjYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuQ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1jYScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuQ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pIFtlbi1nYl1cbi8vISBhdXRob3IgOiBDaHJpcyBHZWRyaW0gOiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNnZWRyaW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkdiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tZ2InLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5HYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChJcmVsYW5kKSBbZW4taWVdXG4vLyEgYXV0aG9yIDogQ2hyaXMgQ2FydGxpZGdlIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzY2FydGxpZGdlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5JZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWllJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5JZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChJc3JhZWwpIFtlbi1pbF1cbi8vISBhdXRob3IgOiBDaHJpcyBHZWRyaW0gOiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNnZWRyaW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbklsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taWwnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSW5kaWEpIFtlbi1pbl1cbi8vISBhdXRob3IgOiBKYXRpbiBBZ3Jhd2FsIDogaHR0cHM6Ly9naXRodWIuY29tL2phdGluYWcyMlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuSW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pbicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5JbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChOZXcgWmVhbGFuZCkgW2VuLW56XVxuLy8hIGF1dGhvciA6IEx1a2UgTWNHcmVnb3IgOiBodHRwczovL2dpdGh1Yi5jb20vbHVrZW1jZ3JlZ29yXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5OeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLW56Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbk56O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKFNpbmdhcG9yZSkgW2VuLXNnXVxuLy8hIGF1dGhvciA6IE1hdHRoZXcgQ2FzdHJpbGxvbi1NYWRyaWdhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS90ZWNoZGltZW5zaW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5TZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLXNnJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuU2c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRXNwZXJhbnRvIFtlb11cbi8vISBhdXRob3IgOiBDb2xpbiBEZWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2NvbGluZGVhblxuLy8hIGF1dGhvciA6IE1pYSBOb3JkZW50b2Z0IEltcGVyYXRvcmkgOiBodHRwczovL2dpdGh1Yi5jb20vbWllc3Rhc21pYVxuLy8hIGNvbW1lbnQgOiBtaWVzdGFzbWlhIGNvcnJlY3RlZCB0aGUgdHJhbnNsYXRpb24gYnkgY29saW5kZWFuXG4vLyEgY29tbWVudCA6IFZpdmFrdm8gY29ycmVjdGVkIHRoZSB0cmFuc2xhdGlvbiBieSBjb2xpbmRlYW4gYW5kIG1pZXN0YXNtaWFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VvJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJvX2ZlYnJ1YXJvX21hcnRvX2Fwcmlsb19tYWpvX2p1bmlvX2p1bGlvX2HFrWd1c3RvX3NlcHRlbWJyb19va3RvYnJvX25vdmVtYnJvX2RlY2VtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFydF9hcHJfbWFqX2p1bl9qdWxfYcWtZ19zZXB0X29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuxIlvX2x1bmRvX21hcmRvX21lcmtyZWRvX8S1YcWtZG9fdmVuZHJlZG9fc2FiYXRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltX2x1bl9tYXJkX21lcmtfxLVhxa1fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV/EtWFfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkW25dLCBbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIFtsYV0gRFstYW4gZGVdIE1NTSwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bYXBdXFwudFxcLm0vaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgPT09ICdwJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwLnQubS4nIDogJ1AuVC5NLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2EudC5tLicgOiAnQS5ULk0uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9kaWHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNb3JnYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGRbbiBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1twYXNpbnRhbl0gZGRkZFtuIGplXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3Bvc3QgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2FudGHFrSAlcycsXG4gICAgICAgICAgICBzOiAna2Vsa2FqIHNla3VuZG9qJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kb2onLFxuICAgICAgICAgICAgbTogJ3VudSBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9qJyxcbiAgICAgICAgICAgIGg6ICd1bnUgaG9ybycsXG4gICAgICAgICAgICBoaDogJyVkIGhvcm9qJyxcbiAgICAgICAgICAgIGQ6ICd1bnUgdGFnbycsIC8vbmUgJ2RpdXJubycsIMSJYXIgZXN0YXMgdXppdGEgcG9yIHByb2tzaW11bW9cbiAgICAgICAgICAgIGRkOiAnJWQgdGFnb2onLFxuICAgICAgICAgICAgTTogJ3VudSBtb25hdG8nLFxuICAgICAgICAgICAgTU06ICclZCBtb25hdG9qJyxcbiAgICAgICAgICAgIHk6ICd1bnUgamFybycsXG4gICAgICAgICAgICB5eTogJyVkIGphcm9qJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9YS8sXG4gICAgICAgIG9yZGluYWw6ICclZGEnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3BhbmlzaCAoRG9taW5pY2FuIFJlcHVibGljKSBbZXMtZG9dXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPVxuICAgICAgICAgICAgJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZW5lL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9eYWJyL2ksXG4gICAgICAgICAgICAvXm1heS9pLFxuICAgICAgICAgICAgL15qdW4vaSxcbiAgICAgICAgICAgIC9eanVsL2ksXG4gICAgICAgICAgICAvXmFnby9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kaWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlc0RvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMtZG8nLCB7XG4gICAgICAgIG1vbnRoczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICB3OiAndW5hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzRG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3BhbmlzaCAoTWV4aWNvKSBbZXMtbXhdXG4vLyEgYXV0aG9yIDogSkMgRnJhbmNvIDogaHR0cHM6Ly9naXRodWIuY29tL2pjZnJhbmNvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPVxuICAgICAgICAgICAgJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZW5lL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9eYWJyL2ksXG4gICAgICAgICAgICAvXm1heS9pLFxuICAgICAgICAgICAgL15qdW4vaSxcbiAgICAgICAgICAgIC9eanVsL2ksXG4gICAgICAgICAgICAvXmFnby9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kaWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlc014ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMtbXgnLCB7XG4gICAgICAgIG1vbnRoczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgaW52YWxpZERhdGU6ICdGZWNoYSBpbnbDoWxpZGEnLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzTXg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3BhbmlzaCAoVW5pdGVkIFN0YXRlcykgW2VzLXVzXVxuLy8hIGF1dGhvciA6IGJ1c3R0YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9idXN0dGFcbi8vISBhdXRob3IgOiBjaHJpc3JvZHogOiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNyb2R6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPVxuICAgICAgICAgICAgJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZW5lL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9eYWJyL2ksXG4gICAgICAgICAgICAvXm1heS9pLFxuICAgICAgICAgICAgL15qdW4vaSxcbiAgICAgICAgICAgIC9eanVsL2ksXG4gICAgICAgICAgICAvXmFnby9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kaWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlc1VzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMtdXMnLCB7XG4gICAgICAgIG1vbnRoczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ01NL0REL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICB3OiAndW5hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzVXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3BhbmlzaCBbZXNdXG4vLyEgYXV0aG9yIDogSnVsaW8gTmFwdXLDrSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxpb25jXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPVxuICAgICAgICAgICAgJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZW5lL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9eYWJyL2ksXG4gICAgICAgICAgICAvXm1heS9pLFxuICAgICAgICAgICAgL15qdW4vaSxcbiAgICAgICAgICAgIC9eanVsL2ksXG4gICAgICAgICAgICAvXmFnby9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kaWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgczogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWREYXRlOiAnRmVjaGEgaW52w6FsaWRhJyxcbiAgICB9KTtcblxuICAgIHJldHVybiBlcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFc3RvbmlhbiBbZXRdXG4vLyEgYXV0aG9yIDogSGVucnkgS2VobG1hbm4gOiBodHRwczovL2dpdGh1Yi5jb20vbWFkaGVucnlcbi8vISBpbXByb3ZlbWVudHMgOiBJbGxpbWFyIFRhbWJlayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWd1bGthXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWydtw7VuZSBzZWt1bmRpJywgJ23DtW5pIHNla3VuZCcsICdwYWFyIHNla3VuZGl0J10sXG4gICAgICAgICAgICBzczogW251bWJlciArICdzZWt1bmRpJywgbnVtYmVyICsgJ3Nla3VuZGl0J10sXG4gICAgICAgICAgICBtOiBbJ8O8aGUgbWludXRpJywgJ8O8a3MgbWludXQnXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyBtaW51dGknLCBudW1iZXIgKyAnIG1pbnV0aXQnXSxcbiAgICAgICAgICAgIGg6IFsnw7xoZSB0dW5uaScsICd0dW5kIGFlZ2EnLCAnw7xrcyB0dW5kJ10sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcgdHVubmknLCBudW1iZXIgKyAnIHR1bmRpJ10sXG4gICAgICAgICAgICBkOiBbJ8O8aGUgcMOkZXZhJywgJ8O8a3MgcMOkZXYnXSxcbiAgICAgICAgICAgIE06IFsna3V1IGFqYScsICdrdXUgYWVnYScsICfDvGtzIGt1dSddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIGt1dScsIG51bWJlciArICcga3V1ZCddLFxuICAgICAgICAgICAgeTogWyfDvGhlIGFhc3RhJywgJ2Fhc3RhJywgJ8O8a3MgYWFzdGEnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBhYXN0YScsIG51bWJlciArICcgYWFzdGF0J10sXG4gICAgICAgIH07XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0W2tleV1bMl0gPyBmb3JtYXRba2V5XVsyXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXQnLCB7XG4gICAgICAgIG1vbnRoczogJ2phYW51YXJfdmVlYnJ1YXJfbcOkcnRzX2FwcmlsbF9tYWlfanV1bmlfanV1bGlfYXVndXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phYW5fdmVlYnJfbcOkcnRzX2Fwcl9tYWlfanV1bmlfanV1bGlfYXVnX3NlcHRfb2t0X25vdl9kZXRzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdww7xoYXDDpGV2X2VzbWFzcMOkZXZfdGVpc2lww6Rldl9rb2xtYXDDpGV2X25lbGphcMOkZXZfcmVlZGVfbGF1cMOkZXYnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1BfRV9UX0tfTl9SX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1TDpG5hLF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tIb21tZSxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW0rDpHJnbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0VpbGUsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tFZWxtaW5lXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgcMOkcmFzdCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMgdGFnYXNpJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogJyVkIHDDpGV2YScsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmFzcXVlIFtldV1cbi8vISBhdXRob3IgOiBFbmVrbyBJbGxhcnJhbWVuZGkgOiBodHRwczovL2dpdGh1Yi5jb20vZWlsbGFycmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBldSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2V1Jywge1xuICAgICAgICBtb250aHM6ICd1cnRhcnJpbGFfb3RzYWlsYV9tYXJ0eG9hX2FwaXJpbGFfbWFpYXR6YV9la2FpbmFfdXp0YWlsYV9hYnV6dHVhX2lyYWlsYV91cnJpYV9hemFyb2FfYWJlbmR1YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAndXJ0Ll9vdHMuX21hci5fYXBpLl9tYWkuX2VrYS5fdXp0Ll9hYnUuX2lyYS5fdXJyLl9hemEuX2FiZS4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnaWdhbmRlYV9hc3RlbGVoZW5hX2FzdGVhcnRlYV9hc3RlYXprZW5hX29zdGVndW5hX29zdGlyYWxhX2xhcnVuYmF0YScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnaWcuX2FsLl9hci5fYXouX29nLl9vbC5fbHIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2lnX2FsX2FyX2F6X29nX29sX2xyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWVtrb10gTU1NTVtyZW5dIERbYV0nLFxuICAgICAgICAgICAgTExMOiAnWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIFlZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZLU0tRCcsXG4gICAgICAgICAgICBsbDogJ1lZWVlba29dIE1NTSBEW2FdJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVlba29dIE1NTSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIFlZWVlba29dIE1NTSBEW2FdIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZ2F1cl0gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tiaWhhcl0gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUW2V0YW5dJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbYXR6b10gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYXVycmVrb10gZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGJhcnJ1JyxcbiAgICAgICAgICAgIHBhc3Q6ICdkdWVsYSAlcycsXG4gICAgICAgICAgICBzOiAnc2VndW5kbyBiYXR6dWsnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG06ICdtaW51dHUgYmF0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR1JyxcbiAgICAgICAgICAgIGg6ICdvcmR1IGJhdCcsXG4gICAgICAgICAgICBoaDogJyVkIG9yZHUnLFxuICAgICAgICAgICAgZDogJ2VndW4gYmF0JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZWd1bicsXG4gICAgICAgICAgICBNOiAnaGlsYWJldGUgYmF0JyxcbiAgICAgICAgICAgIE1NOiAnJWQgaGlsYWJldGUnLFxuICAgICAgICAgICAgeTogJ3VydGUgYmF0JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdXJ0ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUGVyc2lhbiBbZmFdXG4vLyEgYXV0aG9yIDogRWJyYWhpbSBCeWFnb3dpIDogaHR0cHM6Ly9naXRodWIuY29tL2VicmFtaW5pb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfbsScsXG4gICAgICAgICAgICAyOiAn27InLFxuICAgICAgICAgICAgMzogJ9uzJyxcbiAgICAgICAgICAgIDQ6ICfbtCcsXG4gICAgICAgICAgICA1OiAn27UnLFxuICAgICAgICAgICAgNjogJ9u2JyxcbiAgICAgICAgICAgIDc6ICfbtycsXG4gICAgICAgICAgICA4OiAn27gnLFxuICAgICAgICAgICAgOTogJ9u5JyxcbiAgICAgICAgICAgIDA6ICfbsCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfbsSc6ICcxJyxcbiAgICAgICAgICAgICfbsic6ICcyJyxcbiAgICAgICAgICAgICfbsyc6ICczJyxcbiAgICAgICAgICAgICfbtCc6ICc0JyxcbiAgICAgICAgICAgICfbtSc6ICc1JyxcbiAgICAgICAgICAgICfbtic6ICc2JyxcbiAgICAgICAgICAgICfbtyc6ICc3JyxcbiAgICAgICAgICAgICfbuCc6ICc4JyxcbiAgICAgICAgICAgICfbuSc6ICc5JyxcbiAgICAgICAgICAgICfbsCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBmYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZhJywge1xuICAgICAgICBtb250aHM6ICfamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDpcbiAgICAgICAgICAgICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn24xf2K9f2LNf2oZf2b5f2Kxf2LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YLYqNmEINin2LIg2LjZh9ixfNio2LnYryDYp9iyINi42YfYsS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC/YqNi52K8g2KfYsiDYuNmH2LEvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YLYqNmEINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYqNi52K8g2KfYsiDYuNmH2LEnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mF2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9mB2LHYr9inINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iv24zYsdmI2LIg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2b7bjNi0XSBb2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2K/YsSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg2b7bjNi0JyxcbiAgICAgICAgICAgIHM6ICfahtmG2K8g2KvYp9mG24zZhycsXG4gICAgICAgICAgICBzczogJyVkINir2KfZhtuM2YcnLFxuICAgICAgICAgICAgbTogJ9uM2qkg2K/ZgtuM2YLZhycsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgaDogJ9uM2qkg2LPYp9i52KonLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYqicsXG4gICAgICAgICAgICBkOiAn24zaqSDYsdmI2LInLFxuICAgICAgICAgICAgZGQ6ICclZCDYsdmI2LInLFxuICAgICAgICAgICAgTTogJ9uM2qkg2YXYp9mHJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXYp9mHJyxcbiAgICAgICAgICAgIHk6ICfbjNqpINiz2KfZhCcsXG4gICAgICAgICAgICB5eTogJyVkINiz2KfZhCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vbsC3buV0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3ZhS8sXG4gICAgICAgIG9yZGluYWw6ICclZNmFJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGaW5uaXNoIFtmaV1cbi8vISBhdXRob3IgOiBUYXJtbyBBaWRhbnRhdXN0YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGVhZG9mXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbnVtYmVyc1Bhc3QgPVxuICAgICAgICAgICAgJ25vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsasOkIHZpaXNpIGt1dXNpIHNlaXRzZW3DpG4ga2FoZGVrc2FuIHloZGVrc8Okbicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJyAnXG4gICAgICAgICAgICApLFxuICAgICAgICBudW1iZXJzRnV0dXJlID0gW1xuICAgICAgICAgICAgJ25vbGxhJyxcbiAgICAgICAgICAgICd5aGRlbicsXG4gICAgICAgICAgICAna2FoZGVuJyxcbiAgICAgICAgICAgICdrb2xtZW4nLFxuICAgICAgICAgICAgJ25lbGrDpG4nLFxuICAgICAgICAgICAgJ3ZpaWRlbicsXG4gICAgICAgICAgICAna3V1ZGVuJyxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzddLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbOF0sXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs5XSxcbiAgICAgICAgXTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtdXV0YW1hbiBzZWt1bm5pbicgOiAnbXV1dGFtYSBzZWt1bnRpJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdzZWt1bm5pbicgOiAnc2VrdW50aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAnbWludXV0aW4nIDogJ21pbnV1dHRpYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAndHVubmluJyA6ICd0dW50aSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAndHVubmluJyA6ICd0dW50aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3DDpGl2w6RuJyA6ICdww6RpdsOkJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpMOkJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdrdXVrYXVkZW4nIDogJ2t1dWthdXNpJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdrdXVrYXVkZW4nIDogJ2t1dWthdXR0YSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAndnVvZGVuJyA6ICd2dW9zaSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAndnVvZGVuJyA6ICd2dW90dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSArICcgJyArIHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmVyYmFsTnVtYmVyKG51bWJlciwgaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciA8IDEwXG4gICAgICAgICAgICA/IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgPyBudW1iZXJzRnV0dXJlW251bWJlcl1cbiAgICAgICAgICAgICAgICA6IG51bWJlcnNQYXN0W251bWJlcl1cbiAgICAgICAgICAgIDogbnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZpJywge1xuICAgICAgICBtb250aHM6ICd0YW1taWt1dV9oZWxtaWt1dV9tYWFsaXNrdXVfaHVodGlrdXVfdG91a29rdXVfa2Vzw6RrdXVfaGVpbsOka3V1X2Vsb2t1dV9zeXlza3V1X2xva2FrdXVfbWFycmFza3V1X2pvdWx1a3V1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICd0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2Vzw6RfaGVpbsOkX2Vsb19zeXlzX2xva2FfbWFycmFzX2pvdWx1Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3N1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc3VfbWFfdGlfa2VfdG9fcGVfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc3VfbWFfdGlfa2VfdG9fcGVfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRG8gTU1NTVt0YV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgbDogJ0QuTS5ZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRG8gTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3TDpG7DpMOkbl0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1todW9tZW5uYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbG9dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZWlsZW5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHDDpMOkc3TDpCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc2l0dGVuJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGaWxpcGlubyBbZmlsXVxuLy8hIGF1dGhvciA6IERhbiBIYWdtYW4gOiBodHRwczovL2dpdGh1Yi5jb20vaGFnbWFuZGFuXG4vLyEgYXV0aG9yIDogTWF0dGhldyBDbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0aGV3ZGVlY29cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmaWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmaWwnLCB7XG4gICAgICAgIG1vbnRoczogJ0VuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnTU0vRC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnTFQgW25nYXlvbmcgYXJhd10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCdWthcyBuZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnTFQgW2thaGFwb25dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3NhIGxvb2IgbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgczogJ2lsYW5nIHNlZ3VuZG8nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG06ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG8nLFxuICAgICAgICAgICAgaDogJ2lzYW5nIG9yYXMnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICdpc2FuZyBhcmF3JyxcbiAgICAgICAgICAgIGRkOiAnJWQgYXJhdycsXG4gICAgICAgICAgICBNOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU06ICclZCBidXdhbicsXG4gICAgICAgICAgICB5OiAnaXNhbmcgdGFvbicsXG4gICAgICAgICAgICB5eTogJyVkIHRhb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZhcm9lc2UgW2ZvXVxuLy8hIGF1dGhvciA6IFJhZ25hciBKb2hhbm5lc2VuIDogaHR0cHM6Ly9naXRodWIuY29tL3JhZ25hcjEyM1xuLy8hIGF1dGhvciA6IEtyaXN0aWFuIFNha2FyaXNzb24gOiBodHRwczovL2dpdGh1Yi5jb20vc2FrYXJpc3NvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZm8nLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByw61sX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdW5udWRhZ3VyX23DoW5hZGFndXJfdMO9c2RhZ3VyX21pa3VkYWd1cl9ow7NzZGFndXJfZnLDrWdnamFkYWd1cl9sZXlnYXJkYWd1cicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc3VuX23DoW5fdMO9c19taWtfaMOzc19mcsOtX2xleScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzdV9tw6FfdMO9X21pX2jDs19mcl9sZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NLCBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbw40gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vDjSBtb3JnaW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vDjSBnasOhciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDrcOwc3R1XSBkZGRkIFtrbF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd1bSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc8Otw7BhbmknLFxuICAgICAgICAgICAgczogJ2bDoSBzZWt1bmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRpcicsXG4gICAgICAgICAgICBtOiAnZWluIG1pbnV0dHVyJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0aXInLFxuICAgICAgICAgICAgaDogJ2VpbiB0w61taScsXG4gICAgICAgICAgICBoaDogJyVkIHTDrW1hcicsXG4gICAgICAgICAgICBkOiAnZWluIGRhZ3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTTogJ2VpbiBtw6FuYcOwdXInLFxuICAgICAgICAgICAgTU06ICclZCBtw6FuYcOwaXInLFxuICAgICAgICAgICAgeTogJ2VpdHQgw6FyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6FyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmVuY2ggKENhbmFkYSkgW2ZyLWNhXVxuLy8hIGF1dGhvciA6IEpvbmF0aGFuIEFib3VyYmloIDogaHR0cHM6Ly9naXRodWIuY29tL2pvbmJjYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZyQ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jYScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgczogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbTogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGg6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmckNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZyZW5jaCAoU3dpdHplcmxhbmQpIFtmci1jaF1cbi8vISBhdXRob3IgOiBHYXNwYXJkIEJ1Y2hlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYXNwYXJkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZnJDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNoJywge1xuICAgICAgICBtb250aHM6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkOiAndW4gam91cicsXG4gICAgICAgICAgICBkZDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE06ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmVuY2ggW2ZyXVxuLy8hIGF1dGhvciA6IEpvaG4gRmlzY2hlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qZnJvZmZpY2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTdHJpY3RSZWdleCA9XG4gICAgICAgICAgICAvXihqYW52aWVyfGbDqXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb8O7dHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkw6ljZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgLyhqYW52XFwuP3xmw6l2clxcLj98bWFyc3xhdnJcXC4/fG1haXxqdWlufGp1aWxcXC4/fGFvw7t0fHNlcHRcXC4/fG9jdFxcLj98bm92XFwuP3xkw6ljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgLyhqYW52XFwuP3xmw6l2clxcLj98bWFyc3xhdnJcXC4/fG1haXxqdWlufGp1aWxcXC4/fGFvw7t0fHNlcHRcXC4/fG9jdFxcLj98bm92XFwuP3xkw6ljXFwuP3xqYW52aWVyfGbDqXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb8O7dHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkw6ljZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15qYW52L2ksXG4gICAgICAgICAgICAvXmbDqXZyL2ksXG4gICAgICAgICAgICAvXm1hcnMvaSxcbiAgICAgICAgICAgIC9eYXZyL2ksXG4gICAgICAgICAgICAvXm1haS9pLFxuICAgICAgICAgICAgL15qdWluL2ksXG4gICAgICAgICAgICAvXmp1aWwvaSxcbiAgICAgICAgICAgIC9eYW/Du3QvaSxcbiAgICAgICAgICAgIC9ec2VwdC9pLFxuICAgICAgICAgICAgL15vY3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmTDqWMvaSxcbiAgICAgICAgXTtcblxuICAgIHZhciBmciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyJywge1xuICAgICAgICBtb250aHM6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiBtb250aHNTdHJpY3RSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogbW9udGhzU2hvcnRTdHJpY3RSZWdleCxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHM6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG06ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgdzogJ3VuZSBzZW1haW5lJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYWluZXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFJldHVybiAnZScgd2hlbiBkYXkgb2YgbW9udGggPiAxLiBNb3ZlIHRoaXMgY2FzZSBpbnNpZGVcbiAgICAgICAgICAgICAgICAvLyBibG9jayBmb3IgbWFzY3VsaW5lIHdvcmRzIGJlbG93LlxuICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMzM3NVxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmlzaWFuIFtmeV1cbi8vISBhdXRob3IgOiBSb2JpbiB2YW4gZGVyIFZsaWV0IDogaHR0cHM6Ly9naXRodWIuY29tL3JvYmluMHZhbjBkZXIwdlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPVxuICAgICAgICAgICAgJ2phbi5fZmViLl9tcnQuX2Fwci5fbWFpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPVxuICAgICAgICAgICAgJ2phbl9mZWJfbXJ0X2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIGZ5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnknLCB7XG4gICAgICAgIG1vbnRoczogJ2phbm5ld2FyaXNfZmVicmV3YXJpc19tYWFydF9hcHJpbF9tYWFpZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29rdG9iZXJfbm92aW1iZXJfZGVzaW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ3NuZWluX21vYW5kZWlfdGlpc2RlaV93b2Fuc2RlaV90b25nZXJzZGVpX2ZyZWVkX3NuZW9uJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc2kuX21vLl90aS5fd28uX3RvLl9mci5fc28uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NpX01vX1RpX1dvX1RvX0ZyX1NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toam9lZCBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb2FybiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdXN0ZXIgb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW8O0ZnLDu25lXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvZXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGx5bicsXG4gICAgICAgICAgICBzOiAnaW4gcGVhciBzZWtvbmRlbicsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGVuJyxcbiAgICAgICAgICAgIG06ICdpZW4gbWluw7p0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoOiAnaWVuIG9lcmUnLFxuICAgICAgICAgICAgaGg6ICclZCBvZXJlbicsXG4gICAgICAgICAgICBkOiAnaWVuIGRlaScsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE06ICdpZW4gbW9hbm5lJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9hbm5lbicsXG4gICAgICAgICAgICB5OiAnaWVuIGppZXInLFxuICAgICAgICAgICAgeXk6ICclZCBqaWVycmVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwID8gJ3N0ZScgOiAnZGUnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IElyaXNoIG9yIElyaXNoIEdhZWxpYyBbZ2FdXG4vLyEgYXV0aG9yIDogQW5kcsOpIFNpbHZhIDogaHR0cHM6Ly9naXRodWIuY29tL2Fza3B0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ0VhbsOhaXInLFxuICAgICAgICAgICAgJ0ZlYWJocmEnLFxuICAgICAgICAgICAgJ03DoXJ0YScsXG4gICAgICAgICAgICAnQWlicmXDoW4nLFxuICAgICAgICAgICAgJ0JlYWx0YWluZScsXG4gICAgICAgICAgICAnTWVpdGhlYW1oJyxcbiAgICAgICAgICAgICdJw7ppbCcsXG4gICAgICAgICAgICAnTMO6bmFzYScsXG4gICAgICAgICAgICAnTWXDoW4gRsOzbWhhaXInLFxuICAgICAgICAgICAgJ0RlaXJlYWRoIEbDs21oYWlyJyxcbiAgICAgICAgICAgICdTYW1oYWluJyxcbiAgICAgICAgICAgICdOb2xsYWlnJyxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSBbXG4gICAgICAgICAgICAnRWFuJyxcbiAgICAgICAgICAgICdGZWFiaCcsXG4gICAgICAgICAgICAnTcOhcnQnLFxuICAgICAgICAgICAgJ0FpYicsXG4gICAgICAgICAgICAnQmVhbCcsXG4gICAgICAgICAgICAnTWVpdGgnLFxuICAgICAgICAgICAgJ0nDumlsJyxcbiAgICAgICAgICAgICdMw7puJyxcbiAgICAgICAgICAgICdNLkYuJyxcbiAgICAgICAgICAgICdELkYuJyxcbiAgICAgICAgICAgICdTYW1oJyxcbiAgICAgICAgICAgICdOb2xsJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXMgPSBbXG4gICAgICAgICAgICAnRMOpIERvbWhuYWlnaCcsXG4gICAgICAgICAgICAnRMOpIEx1YWluJyxcbiAgICAgICAgICAgICdEw6kgTcOhaXJ0JyxcbiAgICAgICAgICAgICdEw6kgQ8OpYWRhb2luJyxcbiAgICAgICAgICAgICdEw6lhcmRhb2luJyxcbiAgICAgICAgICAgICdEw6kgaEFvaW5lJyxcbiAgICAgICAgICAgICdEw6kgU2F0aGFpcm4nLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0ID0gWydEb21oJywgJ0x1YW4nLCAnTcOhaXJ0JywgJ0PDqWFkJywgJ0TDqWFyJywgJ0FvaW5lJywgJ1NhdGgnXSxcbiAgICAgICAgd2Vla2RheXNNaW4gPSBbJ0RvJywgJ0x1JywgJ03DoScsICdDw6knLCAnRMOpJywgJ0EnLCAnU2EnXTtcblxuICAgIHZhciBnYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dhJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJbm5pdSBhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBbcOhcmFjaCBhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJbm7DqSBhZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW8gY2FpdGVdIFthZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDsyBzaGluJyxcbiAgICAgICAgICAgIHM6ICdjw7pwbGEgc29pY2luZCcsXG4gICAgICAgICAgICBzczogJyVkIHNvaWNpbmQnLFxuICAgICAgICAgICAgbTogJ27Ds2ltw6lhZCcsXG4gICAgICAgICAgICBtbTogJyVkIG7Ds2ltw6lhZCcsXG4gICAgICAgICAgICBoOiAndWFpciBhbiBjaGxvaWcnLFxuICAgICAgICAgICAgaGg6ICclZCB1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBkOiAnbMOhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgbMOhJyxcbiAgICAgICAgICAgIE06ICdtw60nLFxuICAgICAgICAgICAgTU06ICclZCBtw61vbm5hJyxcbiAgICAgICAgICAgIHk6ICdibGlhaW4nLFxuICAgICAgICAgICAgeXk6ICclZCBibGlhaW4nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2QnIDogbnVtYmVyICUgMTAgPT09IDIgPyAnbmEnIDogJ21oJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTY290dGlzaCBHYWVsaWMgW2dkXVxuLy8hIGF1dGhvciA6IEpvbiBBc2hkb3duIDogaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzaGRvd25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAnQW0gRmFvaWxsZWFjaCcsXG4gICAgICAgICAgICAnQW4gR2VhcnJhbicsXG4gICAgICAgICAgICAnQW0gTcOgcnQnLFxuICAgICAgICAgICAgJ0FuIEdpYmxlYW4nLFxuICAgICAgICAgICAgJ0FuIEPDqGl0ZWFuJyxcbiAgICAgICAgICAgICdBbiB0LcOSZ21oaW9zJyxcbiAgICAgICAgICAgICdBbiB0LUl1Y2hhcicsXG4gICAgICAgICAgICAnQW4gTMO5bmFzdGFsJyxcbiAgICAgICAgICAgICdBbiB0LVN1bHRhaW4nLFxuICAgICAgICAgICAgJ0FuIETDoG1oYWlyJyxcbiAgICAgICAgICAgICdBbiB0LVNhbWhhaW4nLFxuICAgICAgICAgICAgJ0FuIETDuWJobGFjaGQnLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNTaG9ydCA9IFtcbiAgICAgICAgICAgICdGYW9pJyxcbiAgICAgICAgICAgICdHZWFyJyxcbiAgICAgICAgICAgICdNw6BydCcsXG4gICAgICAgICAgICAnR2libCcsXG4gICAgICAgICAgICAnQ8OoaXQnLFxuICAgICAgICAgICAgJ8OSZ21oJyxcbiAgICAgICAgICAgICdJdWNoJyxcbiAgICAgICAgICAgICdMw7luJyxcbiAgICAgICAgICAgICdTdWx0JyxcbiAgICAgICAgICAgICdEw6BtaCcsXG4gICAgICAgICAgICAnU2FtaCcsXG4gICAgICAgICAgICAnRMO5YmgnLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5cyA9IFtcbiAgICAgICAgICAgICdEaWTDsm1obmFpY2gnLFxuICAgICAgICAgICAgJ0RpbHVhaW4nLFxuICAgICAgICAgICAgJ0RpbcOgaXJ0JyxcbiAgICAgICAgICAgICdEaWNpYWRhaW4nLFxuICAgICAgICAgICAgJ0RpYXJkYW9pbicsXG4gICAgICAgICAgICAnRGloYW9pbmUnLFxuICAgICAgICAgICAgJ0Rpc2F0aGFpcm5lJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA9IFsnRGlkJywgJ0RpbCcsICdEaW0nLCAnRGljJywgJ0RpYScsICdEaWgnLCAnRGlzJ10sXG4gICAgICAgIHdlZWtkYXlzTWluID0gWydEw7InLCAnTHUnLCAnTcOgJywgJ0NpJywgJ0FyJywgJ0hhJywgJ1NhJ107XG5cbiAgICB2YXIgZ2QgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnZCcsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiB3ZWVrZGF5c1Nob3J0LFxuICAgICAgICB3ZWVrZGF5c01pbjogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQW4tZGl1Z2ggYWlnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0EtbcOgaXJlYWNoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthaWddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbQW4tZMOoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW8gY2hhaWRoXSBbYWlnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2FubiBhbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnYmhvIGNoaW9ubiAlcycsXG4gICAgICAgICAgICBzOiAnYmVhZ2FuIGRpb2dhbicsXG4gICAgICAgICAgICBzczogJyVkIGRpb2dhbicsXG4gICAgICAgICAgICBtOiAnbWlvbmFpZCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pb25haWRlYW4nLFxuICAgICAgICAgICAgaDogJ3VhaXInLFxuICAgICAgICAgICAgaGg6ICclZCB1YWlyZWFuJyxcbiAgICAgICAgICAgIGQ6ICdsYXRoYScsXG4gICAgICAgICAgICBkZDogJyVkIGxhdGhhJyxcbiAgICAgICAgICAgIE06ICdtw6xvcycsXG4gICAgICAgICAgICBNTTogJyVkIG3DrG9zYW4nLFxuICAgICAgICAgICAgeTogJ2JsaWFkaG5hJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYmxpYWRobmEnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2QnIDogbnVtYmVyICUgMTAgPT09IDIgPyAnbmEnIDogJ21oJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHYWxpY2lhbiBbZ2xdXG4vLyEgYXV0aG9yIDogSnVhbiBHLiBIdXJ0YWRvIDogaHR0cHM6Ly9naXRodWIuY29tL2p1YW5naHVydGFkb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGdsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2wnLCB7XG4gICAgICAgIG1vbnRoczogJ3hhbmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dcOxb194dWxsb19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAneGFuLl9mZWIuX21hci5fYWJyLl9tYWkuX3h1w7EuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5zX21hcnRlc19tw6lyY29yZXNfeG92ZXNfdmVucmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tw6lyLl94b3YuX3Zlbi5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbcOpX3hvX3ZlX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3hlICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDscOhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29udGUgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6EnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbb10gZGRkZCBbcGFzYWRvICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhcycgOiAnYScpICsgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHN0cikge1xuICAgICAgICAgICAgICAgIGlmIChzdHIuaW5kZXhPZigndW4nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ24nICsgc3RyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuICcgKyBzdHI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJ2hhaSAlcycsXG4gICAgICAgICAgICBzOiAndW5zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuaGEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLb25rYW5pIERldmFuYWdhcmkgc2NyaXB0IFtnb20tZGV2YV1cbi8vISBhdXRob3IgOiBUaGUgRGlzY292ZXJlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9XaWtpRGlzY292ZXJlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsn4KSl4KWL4KSh4KSv4KS+IOCkuOClheCkleCkguCkoeCkvuCkguCkqOClgCcsICfgpKXgpYvgpKHgpYcg4KS44KWF4KSV4KSC4KShJ10sXG4gICAgICAgICAgICBzczogW251bWJlciArICcg4KS44KWF4KSV4KSC4KSh4KS+4KSC4KSo4KWAJywgbnVtYmVyICsgJyDgpLjgpYXgpJXgpILgpKEnXSxcbiAgICAgICAgICAgIG06IFsn4KSP4KSV4KS+IOCkruCkv+Cko+Ckn+CkvuCkqCcsICfgpI/gpJUg4KSu4KS/4KSo4KWC4KSfJ10sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcg4KSu4KS/4KSj4KSf4KS+4KSC4KSo4KWAJywgbnVtYmVyICsgJyDgpK7gpL/gpKPgpJ/gpL7gpIInXSxcbiAgICAgICAgICAgIGg6IFsn4KSP4KSV4KS+IOCkteCksOCkvuCkqCcsICfgpI/gpJUg4KS14KSwJ10sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcg4KS14KSw4KS+4KSC4KSo4KWAJywgbnVtYmVyICsgJyDgpLXgpLDgpL7gpIInXSxcbiAgICAgICAgICAgIGQ6IFsn4KSP4KSV4KS+IOCkpuCkv+CkuOCkvuCkqCcsICfgpI/gpJUg4KSm4KWA4KS4J10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcg4KSm4KS/4KS44KS+4KSC4KSo4KWAJywgbnVtYmVyICsgJyDgpKbgpYDgpLgnXSxcbiAgICAgICAgICAgIE06IFsn4KSP4KSV4KS+IOCkruCljeCkueCkr+CkqOCljeCkr+CkvuCkqCcsICfgpI/gpJUg4KSu4KWN4KS54KSv4KSo4KWLJ10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcg4KSu4KWN4KS54KSv4KSo4KWN4KSv4KS+4KSo4KWAJywgbnVtYmVyICsgJyDgpK7gpY3gpLngpK/gpKjgpYcnXSxcbiAgICAgICAgICAgIHk6IFsn4KSP4KSV4KS+IOCkteCksOCljeCkuOCkvuCkqCcsICfgpI/gpJUg4KS14KSw4KWN4KS4J10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcg4KS14KSw4KWN4KS44KS+4KSC4KSo4KWAJywgbnVtYmVyICsgJyDgpLXgpLDgpY3gpLjgpL7gpIInXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZ29tRGV2YSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dvbS1kZXZhJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ+CknOCkvuCkqOClh+CkteCkvuCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7gpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOClgOCksl/gpK7gpYdf4KSc4KWC4KSoX+CknOClgeCksuCkr1/gpJHgpJfgpLjgpY3gpJ9f4KS44KSq4KWN4KSf4KWH4KSC4KSs4KSwX+CkkeCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLBf4KSh4KS/4KS44KWH4KSC4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ+CknOCkvuCkqOClh+CkteCkvuCksOClgOCkmuCljeCkr+Ckvl/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7gpLDgpYDgpJrgpY3gpK/gpL5f4KSu4KS+4KSw4KWN4KSa4KS+4KSa4KWN4KSv4KS+X+Ckj+CkquCljeCksOClgOCksuCkvuCkmuCljeCkr+Ckvl/gpK7gpYfgpK/gpL7gpJrgpY3gpK/gpL5f4KSc4KWC4KSo4KS+4KSa4KWN4KSv4KS+X+CknOClgeCksuCkr+CkvuCkmuCljeCkr+Ckvl/gpJHgpJfgpLjgpY3gpJ/gpL7gpJrgpY3gpK/gpL5f4KS44KSq4KWN4KSf4KWH4KSC4KSs4KSw4KS+4KSa4KWN4KSv4KS+X+CkkeCkleCljeCkn+Cli+CkrOCksOCkvuCkmuCljeCkr+Ckvl/gpKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLDgpL7gpJrgpY3gpK/gpL5f4KSh4KS/4KS44KWH4KSC4KSs4KSw4KS+4KSa4KWN4KSv4KS+Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL01NTU0oXFxzKStEW29EXT8vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgpJzgpL7gpKjgpYcuX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOClgC5f4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLIuX+CkkeCkly5f4KS44KSq4KWN4KSf4KWH4KSCLl/gpJHgpJXgpY3gpJ/gpYsuX+CkqOCli+CkteCljeCkueClh+Ckgi5f4KSh4KS/4KS44KWH4KSCLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CkhuCkr+CkpOCkvuCksF/gpLjgpYvgpK7gpL7gpLBf4KSu4KSC4KSX4KSz4KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpKzgpL/gpLDgpYfgpLjgpY3gpKTgpL7gpLBf4KS44KWB4KSV4KWN4KSw4KS+4KSwX+CktuClh+CkqOCkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CkhuCkr+CkpC5f4KS44KWL4KSuLl/gpK7gpILgpJfgpLMuX+CkrOClgeCkpy5f4KSs4KWN4KSw4KWH4KS44KWN4KSkLl/gpLjgpYHgpJXgpY3gpLAuX+CktuClh+CkqC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSGX+CkuOCli1/gpK7gpIJf4KSs4KWBX+CkrOCljeCksOClh1/gpLjgpYFf4KS24KWHJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSBb4KS14KS+4KSc4KSk4KS+4KSCXScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MgW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBb4KS14KS+4KSc4KSk4KS+4KSCXScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpK/gpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSr4KS+4KSy4KWN4KSv4KS+4KSCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgpKvgpYHgpKHgpLLgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpJXgpL7gpLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Ckq+CkvuCkn+CksuCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpIbgpKbgpYDgpIInLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o4KS14KWH4KSwKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgb3JkaW5hbCAn4KS14KWH4KSwJyBvbmx5IGFwcGxpZXMgdG8gZGF5IG9mIHRoZSBtb250aFxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CkteClh+CksCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG4gICAgICAgICAgICBkb3k6IDMsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciAoNyArIDAgLSA0KVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSk4KWAfOCkuOCkleCkvuCks+ClgOCkgnzgpKbgpKjgpKrgpL7gpLDgpL7gpIJ84KS44KS+4KSC4KSc4KWHLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWA4KSCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCkqOCkquCkvuCksOCkvuCkgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpILgpJzgpYcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpJXgpL7gpLPgpYDgpIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkqOCkquCkvuCksOCkvuCkgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSC4KSc4KWHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpYAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbURldmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS29ua2FuaSBMYXRpbiBzY3JpcHQgW2dvbS1sYXRuXVxuLy8hIGF1dGhvciA6IFRoZSBEaXNjb3ZlcmVyIDogaHR0cHM6Ly9naXRodWIuY29tL1dpa2lEaXNjb3ZlcmVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyd0aG9kZGVhIHNla29uZGFtbmknLCAndGhvZGRlIHNla29uZCddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnIHNla29uZGFtbmknLCBudW1iZXIgKyAnIHNla29uZCddLFxuICAgICAgICAgICAgbTogWydla2EgbWludGFuJywgJ2VrIG1pbnV0J10sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcgbWludGFtbmknLCBudW1iZXIgKyAnIG1pbnRhbSddLFxuICAgICAgICAgICAgaDogWydla2Egdm9yYW4nLCAnZWsgdm9yJ10sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcgdm9yYW1uaScsIG51bWJlciArICcgdm9yYW0nXSxcbiAgICAgICAgICAgIGQ6IFsnZWthIGRpc2FuJywgJ2VrIGRpcyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIGRpc2FtbmknLCBudW1iZXIgKyAnIGRpcyddLFxuICAgICAgICAgICAgTTogWydla2EgbWhvaW5lYW4nLCAnZWsgbWhvaW5vJ10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgbWhvaW5lYW1uaScsIG51bWJlciArICcgbWhvaW5lJ10sXG4gICAgICAgICAgICB5OiBbJ2VrYSB2b3JzYW4nLCAnZWsgdm9yb3MnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyB2b3JzYW1uaScsIG51bWJlciArICcgdm9yc2FtJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGdvbUxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnb20tbGF0bicsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ0phbmVyYWNoZWFfRmVicmVyYWNoZWFfTWFyc2FjaGVhX0FicmlsYWNoZWFfTWFpYWNoZWFfSnVuYWNoZWFfSnVsYWlhY2hlYV9BZ29zdGFjaGVhX1NldGVtYnJhY2hlYV9PdHVicmFjaGVhX05vdmVtYnJhY2hlYV9EZXplbWJyYWNoZWEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvTU1NTShcXHMpK0Rbb0RdPy8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0phbi5fRmViLl9NYXJzX0Fici5fTWFpX0p1bl9KdWwuX0Fnby5fU2V0Ll9PdHUuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6IFwiQWl0YXJfU29tYXJfTW9uZ2xsYXJfQnVkaHZhcl9CaXJlc3Rhcl9TdWtyYXJfU29uJ3ZhclwiLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaXQuX1NvbS5fTW9uLl9CdWQuX0JyZS5fU3VrLl9Tb24uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0FpX1NtX01vX0J1X0JyX1N1X1NuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyBbdmF6dGFdJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQWl6XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ZhbGVhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbRnVkZGxvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2FsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tGYXR0bG9dIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWRpbScsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ2VyJyBvbmx5IGFwcGxpZXMgdG8gZGF5IG9mIHRoZSBtb250aFxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ2VyJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgICAgIGRveTogMywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyICg3ICsgMCAtIDQpXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9yYXRpfHNva2FsbGltfGRvbnBhcmFtfHNhbmplLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncmF0aScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3Nva2FsbGltJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2RvbnBhcmFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID4gMTIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NhbmplJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Nva2FsbGltJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb25wYXJhbSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2FuamUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR3VqYXJhdGkgW2d1XVxuLy8hIGF1dGhvciA6IEthdXNoaWsgVGhhbmtpIDogaHR0cHM6Ly9naXRodWIuY29tL0thdXNoaWsxOTg3XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CrpycsXG4gICAgICAgICAgICAyOiAn4KuoJyxcbiAgICAgICAgICAgIDM6ICfgq6knLFxuICAgICAgICAgICAgNDogJ+CrqicsXG4gICAgICAgICAgICA1OiAn4KurJyxcbiAgICAgICAgICAgIDY6ICfgq6wnLFxuICAgICAgICAgICAgNzogJ+CrrScsXG4gICAgICAgICAgICA4OiAn4KuuJyxcbiAgICAgICAgICAgIDk6ICfgq68nLFxuICAgICAgICAgICAgMDogJ+CrpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgq6cnOiAnMScsXG4gICAgICAgICAgICAn4KuoJzogJzInLFxuICAgICAgICAgICAgJ+CrqSc6ICczJyxcbiAgICAgICAgICAgICfgq6onOiAnNCcsXG4gICAgICAgICAgICAn4KurJzogJzUnLFxuICAgICAgICAgICAgJ+CrrCc6ICc2JyxcbiAgICAgICAgICAgICfgq60nOiAnNycsXG4gICAgICAgICAgICAn4KuuJzogJzgnLFxuICAgICAgICAgICAgJ+Crryc6ICc5JyxcbiAgICAgICAgICAgICfgq6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgZ3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdndScsIHtcbiAgICAgICAgbW9udGhzOiAn4Kqc4Kq+4Kqo4KuN4Kqv4KuB4KqG4Kqw4KuAX+Cqq+Crh+CqrOCrjeCqsOCrgeCqhuCqsOCrgF/gqq7gqr7gqrDgq43gqppf4KqP4Kqq4KuN4Kqw4Kq/4KqyX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+4KqIX+CqkeCql+CquOCrjeCqn1/gqrjgqqrgq43gqp/gq4fgqq7gq43gqqzgqrBf4KqR4KqV4KuN4Kqf4KuN4Kqs4KqwX+CqqOCqteCrh+CqruCrjeCqrOCqsF/gqqHgqr/gqrjgq4fgqq7gq43gqqzgqrAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CqnOCqvuCqqOCrjeCqr+CrgS5f4Kqr4KuH4Kqs4KuN4Kqw4KuBLl/gqq7gqr7gqrDgq43gqppf4KqP4Kqq4KuN4Kqw4Kq/Ll/gqq7gq4df4Kqc4KuC4KqoX+CqnOCrgeCqsuCqvi5f4KqR4KqXLl/gqrjgqqrgq43gqp/gq4cuX+CqkeCqleCrjeCqn+CrjS5f4Kqo4Kq14KuHLl/gqqHgqr/gqrjgq4cuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4Kqw4Kq14Kq/4Kq14Kq+4KqwX+CquOCri+CqruCqteCqvuCqsF/gqq7gqoLgqpfgqrPgqrXgqr7gqrBf4Kqs4KuB4Kqn4KuN4Kq14Kq+4KqwX+Cql+CrgeCqsOCrgeCqteCqvuCqsF/gqrbgq4HgqpXgq43gqrDgqrXgqr7gqrBf4Kq24Kqo4Kq/4Kq14Kq+4KqwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kqw4Kq14Kq/X+CquOCri+Cqrl/gqq7gqoLgqpfgqrNf4Kqs4KuB4Kqn4KuNX+Cql+CrgeCqsOCrgV/gqrbgq4HgqpXgq43gqrBf4Kq24Kqo4Kq/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CqsF/gqrjgq4tf4Kqu4KqCX+CqrOCrgV/gqpfgq4Ff4Kq24KuBX+Cqticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KqG4KqcXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CqleCqvuCqsuCrh10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cql+Cqh+CqleCqvuCqsuCrh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Kqq4Kq+4Kqb4Kqy4Kq+XSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCqruCqvicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4Kqq4Kq54KuH4Kqy4Kq+JyxcbiAgICAgICAgICAgIHM6ICfgqoXgqq7gq4HgqpUg4Kqq4Kqz4KuLJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Kq44KuH4KqV4KqC4KqhJyxcbiAgICAgICAgICAgIG06ICfgqo/gqpUg4Kqu4Kq/4Kqo4Kq/4KqfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kqu4Kq/4Kqo4Kq/4KqfJyxcbiAgICAgICAgICAgIGg6ICfgqo/gqpUg4KqV4Kqy4Kq+4KqVJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KqV4Kqy4Kq+4KqVJyxcbiAgICAgICAgICAgIGQ6ICfgqo/gqpUg4Kqm4Kq/4Kq14Kq4JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kqm4Kq/4Kq14Kq4JyxcbiAgICAgICAgICAgIE06ICfgqo/gqpUg4Kqu4Kq54Kq/4Kqo4KuLJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kqu4Kq54Kq/4Kqo4KuLJyxcbiAgICAgICAgICAgIHk6ICfgqo/gqpUg4Kq14Kqw4KuN4Kq3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kq14Kqw4KuN4Kq3JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Crp+CrqOCrqeCrquCrq+CrrOCrreCrruCrr+Crpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gR3VqYXJhdGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gR3VqYXJhdGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqrDgqr7gqqR84Kqs4Kqq4KuL4KqwfOCquOCqteCqvuCqsHzgqrjgqr7gqoLgqpwvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqrDgqr7gqqQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqrXgqr7gqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kqs4Kqq4KuL4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqr7gqoLgqpwnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqrXgqr7gqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqrOCqquCri+CqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq+4KqC4KqcJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSGVicmV3IFtoZV1cbi8vISBhdXRob3IgOiBUb21lciBDb2hlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS90b21lclxuLy8hIGF1dGhvciA6IE1vc2hlIFNpbWFudG92IDogaHR0cHM6Ly9naXRodWIuY29tL0RldmVsb3BtZW50SUxcbi8vISBhdXRob3IgOiBUYWwgQXRlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9UYWxBdGVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoZScsIHtcbiAgICAgICAgbW9udGhzOiAn15nXoNeV15DXqF/XpNeR16jXldeQ16hf157XqNelX9eQ16TXqNeZ15xf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXkteV16HXmF/Xodek15jXnteR16hf15DXlden15jXldeR16hf16DXldeR157XkdeoX9eT16bXnteR16gnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9eZ16DXldezX9ek15HXqNezX9ee16jXpV/XkNek16jXs1/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS17Nf16HXpNeY17Nf15DXlden17Nf16DXldeR17Nf15PXptee17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn15DXs1/XkdezX9eS17Nf15PXs1/XlNezX9eV17Nf16nXsycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfXkF/XkV/Xkl/Xk1/XlF/XlV/XqScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFvXkV1NTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFvXkV1NTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGw6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vXlNeZ15XXnSDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb157Xl9eoINeR1r5dTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvXkdep16LXlF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vXkNeq157XldecINeR1r5dTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb15HXmdeV151dIGRkZGQgW9eU15DXl9eo15XXnyDXkdep16LXlF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfXkdei15XXkyAlcycsXG4gICAgICAgICAgICBwYXN0OiAn15zXpNeg15kgJXMnLFxuICAgICAgICAgICAgczogJ9ee16HXpNeoINep16DXmdeV16onLFxuICAgICAgICAgICAgc3M6ICclZCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIG06ICfXk9en15QnLFxuICAgICAgICAgICAgbW06ICclZCDXk9en15XXqicsXG4gICAgICAgICAgICBoOiAn16nXoteUJyxcbiAgICAgICAgICAgIGhoOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16LXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16LXldeqJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkOiAn15nXldedJyxcbiAgICAgICAgICAgIGRkOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eZ15XXnteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeZ157XmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNOiAn15fXldeT16knLFxuICAgICAgICAgICAgTU06IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn15fXldeT16nXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXl9eV15PXqdeZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHk6ICfXqdeg15QnLFxuICAgICAgICAgICAgeXk6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn16nXoNeq15nXmdedJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciAlIDEwID09PSAwICYmIG51bWJlciAhPT0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoNeUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoNeZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTpcbiAgICAgICAgICAgIC/XkNeX15RcItemfNec16TXoNeUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXnNek16DXmSDXlNem15TXqNeZ15nXnXzXnNek16DXldeqINeR15XXp9eofNeR15HXlden16h815HXoteo15EvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o15DXl9eUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXkdei16jXkSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15zXpNeg15XXqiDXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9ec16TXoNeUXCLXpicgOiAn15zXpNeg15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXkNeX15RcItemJyA6ICfXkNeX16jXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXoteo15EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEhpbmRpIFtoaV1cbi8vISBhdXRob3IgOiBNYXlhbmsgU2luZ2hhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXlhbmtzaW5naGFsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+ClpycsXG4gICAgICAgICAgICAyOiAn4KWoJyxcbiAgICAgICAgICAgIDM6ICfgpaknLFxuICAgICAgICAgICAgNDogJ+ClqicsXG4gICAgICAgICAgICA1OiAn4KWrJyxcbiAgICAgICAgICAgIDY6ICfgpawnLFxuICAgICAgICAgICAgNzogJ+ClrScsXG4gICAgICAgICAgICA4OiAn4KWuJyxcbiAgICAgICAgICAgIDk6ICfgpa8nLFxuICAgICAgICAgICAgMDogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL17gpJzgpKgvaSxcbiAgICAgICAgICAgIC9e4KSr4KS84KSwfOCkq+CksC9pLFxuICAgICAgICAgICAgL17gpK7gpL7gpLDgpY3gpJovaSxcbiAgICAgICAgICAgIC9e4KSF4KSq4KWN4KSw4KWIL2ksXG4gICAgICAgICAgICAvXuCkruCkiC9pLFxuICAgICAgICAgICAgL17gpJzgpYLgpKgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWB4KSyL2ksXG4gICAgICAgICAgICAvXuCkheCkly9pLFxuICAgICAgICAgICAgL17gpLjgpL/gpKTgpIJ84KS44KS/4KSkL2ksXG4gICAgICAgICAgICAvXuCkheCkleCljeCkn+Clgi9pLFxuICAgICAgICAgICAgL17gpKjgpLV84KSo4KS14KSCL2ksXG4gICAgICAgICAgICAvXuCkpuCkv+CkuOCkgnzgpKbgpL/gpLgvaSxcbiAgICAgICAgXSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9e4KSc4KSoL2ksXG4gICAgICAgICAgICAvXuCkq+CkvOCksC9pLFxuICAgICAgICAgICAgL17gpK7gpL7gpLDgpY3gpJovaSxcbiAgICAgICAgICAgIC9e4KSF4KSq4KWN4KSw4KWIL2ksXG4gICAgICAgICAgICAvXuCkruCkiC9pLFxuICAgICAgICAgICAgL17gpJzgpYLgpKgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWB4KSyL2ksXG4gICAgICAgICAgICAvXuCkheCkly9pLFxuICAgICAgICAgICAgL17gpLjgpL/gpKQvaSxcbiAgICAgICAgICAgIC9e4KSF4KSV4KWN4KSf4KWCL2ksXG4gICAgICAgICAgICAvXuCkqOCktS9pLFxuICAgICAgICAgICAgL17gpKbgpL/gpLgvaSxcbiAgICAgICAgXTtcblxuICAgIHZhciBoaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hpJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ+CknOCkqOCkteCksOClgF/gpKvgpLzgpLDgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliOCksl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLjgpY3gpKRf4KS44KS/4KSk4KSu4KWN4KSs4KSwX+CkheCkleCljeCkn+ClguCkrOCksF/gpKjgpLXgpK7gpY3gpKzgpLBf4KSm4KS/4KS44KSu4KWN4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfgpJzgpKjgpLXgpLDgpYBf4KSr4KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkguCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSC4KSs4KSwX+CkpuCkv+CkuOCkguCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkqC5f4KSr4KS84KSwLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWILl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksi5f4KSF4KSXLl/gpLjgpL/gpKQuX+CkheCkleCljeCkn+Clgi5f4KSo4KS1Ll/gpKbgpL/gpLguJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSyX+CkrOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCkvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBzaG9ydE1vbnRoc1BhcnNlLFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSo4KS14KSw4KWAfOCknOCkqFxcLj984KSr4KS84KSw4KS14KSw4KWAfOCkq+CksOCkteCksOClgHzgpKvgpLzgpLBcXC4/fOCkruCkvuCksOCljeCkmj984KSF4KSq4KWN4KSw4KWI4KSyfOCkheCkquCljeCksOCliFxcLj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCksuCkvuCkiHzgpJzgpYHgpLJcXC4/fOCkheCkl+CkuOCljeCkpHzgpIXgpJdcXC4/fOCkuOCkv+CkpOCkruCljeCkrOCksHzgpLjgpL/gpKTgpILgpKzgpLB84KS44KS/4KSkXFwuP3zgpIXgpJXgpY3gpJ/gpYLgpKzgpLB84KSF4KSV4KWN4KSf4KWCXFwuP3zgpKjgpLXgpK7gpY3gpKzgpLB84KSo4KS14KSC4KSs4KSwfOCkqOCktVxcLj984KSm4KS/4KS44KSu4KWN4KSs4KSwfOCkpuCkv+CkuOCkguCkrOCksHzgpKbgpL/gpLhcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6XG4gICAgICAgICAgICAvXijgpJzgpKjgpLXgpLDgpYB84KSc4KSoXFwuP3zgpKvgpLzgpLDgpLXgpLDgpYB84KSr4KSw4KS14KSw4KWAfOCkq+CkvOCksFxcLj984KSu4KS+4KSw4KWN4KSaP3zgpIXgpKrgpY3gpLDgpYjgpLJ84KSF4KSq4KWN4KSw4KWIXFwuP3zgpK7gpIg/fOCknOClguCkqD984KSc4KWB4KSy4KS+4KSIfOCknOClgeCkslxcLj984KSF4KSX4KS44KWN4KSkfOCkheCkl1xcLj984KS44KS/4KSk4KSu4KWN4KSs4KSwfOCkuOCkv+CkpOCkguCkrOCksHzgpLjgpL/gpKRcXC4/fOCkheCkleCljeCkn+ClguCkrOCksHzgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCkteCkruCljeCkrOCksHzgpKjgpLXgpILgpKzgpLB84KSo4KS1XFwuP3zgpKbgpL/gpLjgpK7gpY3gpKzgpLB84KSm4KS/4KS44KSC4KSs4KSwfOCkpuCkv+CkuFxcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijgpJzgpKjgpLXgpLDgpYA/fOCkq+CkvOCksOCkteCksOClgHzgpKvgpLDgpLXgpLDgpYA/fOCkruCkvuCksOCljeCkmj984KSF4KSq4KWN4KSw4KWI4KSyP3zgpK7gpIg/fOCknOClguCkqD984KSc4KWB4KSy4KS+4KSIP3zgpIXgpJfgpLjgpY3gpKQ/fOCkuOCkv+CkpOCkruCljeCkrOCksHzgpLjgpL/gpKTgpILgpKzgpLB84KS44KS/4KSkP1xcLj984KSF4KSV4KWN4KSf4KWC4KSs4KSwfOCkheCkleCljeCkn+ClglxcLj984KSo4KS14KSu4KWN4KSs4KSwfOCkqOCkteCkguCkrOCksD984KSm4KS/4KS44KSu4KWN4KSs4KSwfOCkpuCkv+CkuOCkguCkrOCksD8pL2ksXG5cbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKOCknOCkqFxcLj984KSr4KS84KSwXFwuP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliFxcLj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCkslxcLj984KSF4KSXXFwuP3zgpLjgpL/gpKRcXC4/fOCkheCkleCljeCkn+ClglxcLj984KSo4KS1XFwuP3zgpKbgpL/gpLhcXC4/KS9pLFxuXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpJXgpLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpJXgpLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CkquCkv+Ckm+CksuClh10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgpK7gpYfgpIInLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCkquCkueCksuClhycsXG4gICAgICAgICAgICBzOiAn4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3M6ICclZCDgpLjgpYfgpJXgpILgpKEnLFxuICAgICAgICAgICAgbTogJ+Ckj+CklSDgpK7gpL/gpKjgpJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgpK7gpL/gpKjgpJ8nLFxuICAgICAgICAgICAgaDogJ+Ckj+CklSDgpJjgpILgpJ/gpL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgpJjgpILgpJ/gpYcnLFxuICAgICAgICAgICAgZDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTTogJ+Ckj+CklSDgpK7gpLngpYDgpKjgpYcnLFxuICAgICAgICAgICAgTU06ICclZCDgpK7gpLngpYDgpKjgpYcnLFxuICAgICAgICAgICAgeTogJ+Ckj+CklSDgpLXgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXk6ICclZCDgpLXgpLDgpY3gpLcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBIaW5kaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBIaW5kaS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpHzgpLjgpYHgpKzgpLl84KSm4KWL4KSq4KS54KSwfOCktuCkvuCkri8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOClgeCkrOCkuScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpYvgpKrgpLngpLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CktuCkvuCkricpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOClgeCkrOCkuSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWL4KSq4KS54KSwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLbgpL7gpK4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBoaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDcm9hdGlhbiBbaHJdXG4vLyEgYXV0aG9yIDogQm9qYW4gTWFya292acSHIDogaHR0cHM6Ly9naXRodWIuY29tL2JtYXJrb3ZpY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkbmEgbWludXRhJyA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkbm9nIHNhdGEnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlYyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2EnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGhyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHInLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2lqZcSNbmphX3ZlbGphxI1lX2/FvnVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5qYV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnc2lqZcSNYW5qX3ZlbGphxI1hX2/FvnVqYWtfdHJhdmFual9zdmliYW5qX2xpcGFual9zcnBhbmpfa29sb3Zvel9ydWphbl9saXN0b3BhZF9zdHVkZW5pX3Byb3NpbmFjJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnc2lqLl92ZWxqLl9vxb51Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9saXMuX3N0dS5fcHJvLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRG8gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0RvIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEbyBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHM6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSHVuZ2FyaWFuIFtodV1cbi8vISBhdXRob3IgOiBBZGFtIEJydW5uZXIgOiBodHRwczovL2dpdGh1Yi5jb20vYWRhbWJydW5uZXJcbi8vISBhdXRob3IgOiBQZXRlciBWaXN6dCAgOiBodHRwczovL2dpdGh1Yi5jb20vcGFzc2F0Z3RcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB3ZWVrRW5kaW5ncyA9XG4gICAgICAgICd2YXPDoXJuYXAgaMOpdGbFkW4ga2VkZGVuIHN6ZXJkw6FuIGNzw7x0w7ZydMO2a8O2biBww6ludGVrZW4gc3pvbWJhdG9uJy5zcGxpdCgnICcpO1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG51bSA9IG51bWJlcjtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgID8gJ27DqWjDoW55IG3DoXNvZHBlcmMnXG4gICAgICAgICAgICAgICAgICAgIDogJ27DqWjDoW55IG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXgpXG4gICAgICAgICAgICAgICAgICAgID8gJyBtw6Fzb2RwZXJjJ1xuICAgICAgICAgICAgICAgICAgICA6ICcgbcOhc29kcGVyY2UnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScgOiAnIMOzcsOhamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vlayhpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGlzRnV0dXJlID8gJycgOiAnW23Dumx0XSAnKSArXG4gICAgICAgICAgICAnWycgK1xuICAgICAgICAgICAgd2Vla0VuZGluZ3NbdGhpcy5kYXkoKV0gK1xuICAgICAgICAgICAgJ10gTFRbLWtvcl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGh1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHUnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnXDoXJfZmVicnXDoXJfbcOhcmNpdXNfw6FwcmlsaXNfbcOhanVzX2rDum5pdXNfasO6bGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX23DoXJjLl/DoXByLl9tw6FqLl9qw7puLl9qw7psLl9hdWcuX3N6ZXB0Ll9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ3Zhc8Ohcm5hcF9ow6l0ZsWRX2tlZGRfc3plcmRhX2Nzw7x0w7ZydMO2a19ww6ludGVrX3N6b21iYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICd2YXNfaMOpdF9rZWRkX3N6ZV9jc8O8dF9ww6luX3N6bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICd2X2hfa19zemVfY3NfcF9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEw6ICdZWVlZLiBNTU1NIEQuJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkuIE1NTU0gRC4gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RlfGR1L2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpID09PSAndSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPT09IHRydWUgPyAnZGUnIDogJ0RFJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPT09IHRydWUgPyAnZHUnIDogJ0RVJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbbWFdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaG9sbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t0ZWduYXBdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCBmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBtw7psdmEnLFxuICAgICAgICAgICAgcGFzdDogJyVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBodTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcm1lbmlhbiBbaHktYW1dXG4vLyEgYXV0aG9yIDogQXJtZW5kYXJhYnlhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hcm1lbmRhcmFieWFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaHlBbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h5LWFtJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9Ww1bjWgtW21b7VodaA1atf1oPVpdW/1oDVvtWh1oDVq1/VtNWh1oDVv9WrX9Wh1brWgNWr1azVq1/VtNWh1bXVq9W91atf1bDVuNaC1bbVq9W91atf1bDVuNaC1azVq9W91atf1oXVo9W41b3Vv9W41b3Vq1/VvdWl1brVv9Wl1bTVotWl1oDVq1/VsNW41a/Vv9Wl1bTVotWl1oDVq1/VttW41bXVpdW01aLVpdaA1atf1aTVpdWv1b/VpdW01aLVpdaA1asnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9Ww1bjWgtW21b7VodaAX9aD1aXVv9aA1b7VodaAX9W01aHWgNW/X9Wh1brWgNWr1axf1bTVodW11avVvV/VsNW41oLVttWr1b1f1bDVuNaC1azVq9W9X9aF1aPVuNW91b/VuNW9X9W91aXVutW/1aXVtNWi1aXWgF/VsNW41a/Vv9Wl1bTVotWl1oBf1bbVuNW11aXVtNWi1aXWgF/VpNWl1a/Vv9Wl1bTVotWl1oAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9Ww1bbVvl/Wg9W/1oBf1bTWgNW/X9Wh1brWgF/VtNW11b1f1bDVttW9X9Ww1azVvV/WhdWj1b1f1b3VutW/X9Ww1a/Vv1/VttW01aJf1aTVr9W/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfVr9Wr1oDVodWv1atf1aXWgNWv1bjWgtW31aHVotWp1atf1aXWgNWl1oTVt9Wh1aLVqdWrX9W51bjWgNWl1oTVt9Wh1aLVqdWrX9Ww1avVttWj1bfVodWi1anVq1/VuNaC1oDVotWh1alf1bfVodWi1aHVqScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg1akuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINWpLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINWpLiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vVodW11b3WhdaAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9W+1aHVstWoXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Wl1oDVpdWvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vVodW21oHVodWuXSBkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINWw1aXVv9W4JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDVodW81aHVuycsXG4gICAgICAgICAgICBzOiAn1bTVqyDWhNWh1bbVqyDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIHNzOiAnJWQg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBtOiAn1oDVuNW61aUnLFxuICAgICAgICAgICAgbW06ICclZCDWgNW41brVpScsXG4gICAgICAgICAgICBoOiAn1arVodW0JyxcbiAgICAgICAgICAgIGhoOiAnJWQg1arVodW0JyxcbiAgICAgICAgICAgIGQ6ICfWhdaAJyxcbiAgICAgICAgICAgIGRkOiAnJWQg1oXWgCcsXG4gICAgICAgICAgICBNOiAn1aHVtNWr1b0nLFxuICAgICAgICAgICAgTU06ICclZCDVodW01avVvScsXG4gICAgICAgICAgICB5OiAn1b/VodaA1asnLFxuICAgICAgICAgICAgeXk6ICclZCDVv9Wh1oDVqycsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Vo9Wr1bfVpdaA1b7VoXzVodW81aHVvtW41b/VvtWhfNaB1aXWgNWl1a/VvtWhfNWl1oDVpdWv1bjVtdWh1bYvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2KSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aPVq9W31aXWgNW+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wh1bzVodW+1bjVv9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9aB1aXWgNWl1a/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVpdaA1aXVr9W41bXVodW2JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9fFxcZHsxLDJ9LSjVq9W2fNaA1aQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREbyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdWr1bYnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdaA1aQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBoeUFtO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEluZG9uZXNpYW4gW2lkXVxuLy8hIGF1dGhvciA6IE1vaGFtbWFkIFNhdHJpbyBVdG9tbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS90eW9rXG4vLyEgcmVmZXJlbmNlOiBodHRwOi8vaWQud2lraXNvdXJjZS5vcmcvd2lraS9QZWRvbWFuX1VtdW1fRWphYW5fQmFoYXNhX0luZG9uZXNpYV95YW5nX0Rpc2VtcHVybmFrYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBpZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lkJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWd0X1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTWdfU25fU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHNpYW5nfHNvcmV8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpYW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb3JlJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2lhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb3JlJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Jlc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGFsdSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeWFuZyBsYWx1JyxcbiAgICAgICAgICAgIHM6ICdiZWJlcmFwYSBkZXRpaycsXG4gICAgICAgICAgICBzczogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG06ICdzZW1lbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJY2VsYW5kaWMgW2lzXVxuLy8hIGF1dGhvciA6IEhpbnJpayDDlnJuIFNpZ3Vyw7Bzc29uIDogaHR0cHM6Ly9naXRodWIuY29tL2hpbnJpa1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgaWYgKG4gJSAxMDAgPT09IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChuICUgMTAgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmVcbiAgICAgICAgICAgICAgICAgICAgPyAnbm9ra3JhciBzZWvDum5kdXInXG4gICAgICAgICAgICAgICAgICAgIDogJ25va2tydW0gc2Vrw7puZHVtJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWvDum5kdXInIDogJ3Nla8O6bmR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2Vrw7puZGEnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbcOtbsO6dGEnIDogJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ23DrW7DunR1cicgOiAnbcOtbsO6dHVtJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAna2x1a2t1c3R1bmRpcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdrbHVra3VzdHVuZHVtJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdrbHVra3VzdHVuZCc7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ2FyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZ2EnIDogJ2TDtmd1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsGlyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7BpJyA6ICdtw6FudcOwdW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJ1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpcycsIHtcbiAgICAgICAgbW9udGhzOiAnamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYcOtX2rDum5fasO6bF/DoWfDul9zZXBfb2t0X27Ds3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdW5udWRhZ3VyX23DoW51ZGFndXJfw75yacOwanVkYWd1cl9tacOwdmlrdWRhZ3VyX2ZpbW10dWRhZ3VyX2bDtnN0dWRhZ3VyX2xhdWdhcmRhZ3VyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X03DoV/DnnJfTWlfRmlfRsO2X0xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbw60gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vDoSBtb3JndW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vDrSBnw6ZyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbc8Otw7Bhc3RhXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZWZ0aXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2Z5cmlyICVzIHPDrcOwYW4nLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiAna2x1a2t1c3R1bmQnLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJdGFsaWFuIChTd2l0emVybGFuZCkgW2l0LWNoXVxuLy8hIGF1dGhvciA6IHhmaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS94ZmhcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBpdENoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXQtY2gnLCB7XG4gICAgICAgIG1vbnRoczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2dnaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RvbWFuaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWVyaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xvIHNjb3Jzb10gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKC9eWzAtOV0uKyQvLnRlc3QocykgPyAndHJhJyA6ICdpbicpICsgJyAnICsgcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiAnJXMgZmEnLFxuICAgICAgICAgICAgczogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kaScsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGg6IFwidW4nb3JhXCIsXG4gICAgICAgICAgICBoaDogJyVkIG9yZScsXG4gICAgICAgICAgICBkOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ2lvcm5pJyxcbiAgICAgICAgICAgIE06ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5OiAndW4gYW5ubycsXG4gICAgICAgICAgICB5eTogJyVkIGFubmknLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0Q2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSXRhbGlhbiBbaXRdXG4vLyEgYXV0aG9yIDogTG9yZW56byA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGllbVxuLy8hIGF1dGhvcjogTWF0dGlhIExhcmVudGlzOiBodHRwczovL2dpdGh1Yi5jb20vbm9zdGFsZ2lhelxuLy8hIGF1dGhvcjogTWFyY28gOiBodHRwczovL2dpdGh1Yi5jb20vTWFuZnJlOThcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBpdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0Jywge1xuICAgICAgICBtb250aHM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tPZ2dpIGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDEgPyAnbGxlICcgOiB0aGlzLmhvdXJzKCkgPT09IDAgPyAnICcgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tEb21hbmkgYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ2RkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDEgPyAnbGxlICcgOiB0aGlzLmhvdXJzKCkgPT09IDAgPyAnICcgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tJZXJpIGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDEgPyAnbGxlICcgOiB0aGlzLmhvdXJzKCkgPT09IDAgPyAnICcgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbTGEgc2NvcnNhXSBkZGRkIFthJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbGxlICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmhvdXJzKCkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW0xvIHNjb3Jzb10gZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2xsZSAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5ob3VycygpID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd0cmEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGZhJyxcbiAgICAgICAgICAgIHM6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiBcInVuJ29yYVwiLFxuICAgICAgICAgICAgaGg6ICclZCBvcmUnLFxuICAgICAgICAgICAgZDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICB3OiAndW5hIHNldHRpbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNldHRpbWFuZScsXG4gICAgICAgICAgICBNOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2knLFxuICAgICAgICAgICAgeTogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm5pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBKYXBhbmVzZSBbamFdXG4vLyEgYXV0aG9yIDogTEkgTG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXJ5b25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBqYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2phJywge1xuICAgICAgICBlcmFzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcyMDE5LTA1LTAxJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+S7pOWSjCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn44u/JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnUicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTk4OS0wMS0wOCcsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcyMDE5LTA0LTMwJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+W5s+aIkCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4427JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnSCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTkyNi0xMi0yNScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTg5LTAxLTA3JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+aYreWSjCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4428JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnUycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTkxMi0wNy0zMCcsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTI2LTEyLTI0JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+Wkp+atoycsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4429JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnVCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTg3My0wMS0wMScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTEyLTA3LTI5JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDYsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+aYjuayuycsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn442+JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnTScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMS0wMS0wMScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxODczLTEyLTMxJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+ilv+aapicsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQUQnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdBRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMC0xMi0zMScsXG4gICAgICAgICAgICAgICAgdW50aWw6IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+e0gOWFg+WJjScsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQkMnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdCQycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBlcmFZZWFyT3JkaW5hbFJlZ2V4OiAvKOWFg3xcXGQrKeW5tC8sXG4gICAgICAgIGVyYVllYXJPcmRpbmFsUGFyc2U6IGZ1bmN0aW9uIChpbnB1dCwgbWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaFsxXSA9PT0gJ+WFgycgPyAxIDogcGFyc2VJbnQobWF0Y2hbMV0gfHwgaW5wdXQsIDEwKTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc5pelX+acqOabnOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6UgZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpShkZGQpIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WNiOWJjXzljYjlvowvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfljYjlvownO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5YmNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjlvownO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rml6VdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnaXpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjml6VdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpICE9PSBub3cud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+WFiOmAsV1kZGRkIExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3ml6UvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDEgPyAn5YWD5bm0JyA6IG51bWJlciArICflubQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5b6MJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5pWw56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWTnp5InLFxuICAgICAgICAgICAgbTogJzHliIYnLFxuICAgICAgICAgICAgbW06ICclZOWIhicsXG4gICAgICAgICAgICBoOiAnMeaZgumWkycsXG4gICAgICAgICAgICBoaDogJyVk5pmC6ZaTJyxcbiAgICAgICAgICAgIGQ6ICcx5pelJyxcbiAgICAgICAgICAgIGRkOiAnJWTml6UnLFxuICAgICAgICAgICAgTTogJzHjg7bmnIgnLFxuICAgICAgICAgICAgTU06ICclZOODtuaciCcsXG4gICAgICAgICAgICB5OiAnMeW5tCcsXG4gICAgICAgICAgICB5eTogJyVk5bm0JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBqYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBKYXZhbmVzZSBbanZdXG4vLyEgYXV0aG9yIDogUm9ueSBMYW50aXAgOiBodHRwczovL2dpdGh1Yi5jb20vbGFudGlwXG4vLyEgcmVmZXJlbmNlOiBodHRwOi8vanYud2lraXBlZGlhLm9yZy93aWtpL0Jhc2FfSmF3YVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGp2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnanYnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3BfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ01pbmdndV9TZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTWluX1Nlbl9TZWxfUmViX0tlbV9KZW1fU2VwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ01nX1NuX1NsX1JiX0ttX0ptX1NwJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZW5qaW5nfHNpeWFuZ3xzb250ZW58bmRhbHUvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdlbmppbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2l5YW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb250ZW4nIHx8IG1lcmlkaWVtID09PSAnbmRhbHUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuamluZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpeWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbnRlbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbmRhbHUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEaW50ZW4gcHVuaWtvIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW01iZW5qYW5nIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbGEgd2luZ2kgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3dvbnRlbiBpbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGluZ2thbmcga2VwZW5na2VyJyxcbiAgICAgICAgICAgIHM6ICdzYXdldGF3aXMgZGV0aWsnLFxuICAgICAgICAgICAgc3M6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtOiAnc2V0dW5nZ2FsIG1lbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaDogJ3NldHVuZ2dhbCBqYW0nLFxuICAgICAgICAgICAgaGg6ICclZCBqYW0nLFxuICAgICAgICAgICAgZDogJ3NlZGludGVuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGludGVuJyxcbiAgICAgICAgICAgIE06ICdzZXd1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgd3VsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGF1bicsXG4gICAgICAgICAgICB5eTogJyVkIHRhdW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ganY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VvcmdpYW4gW2thXVxuLy8hIGF1dGhvciA6IElyYWtsaSBKYW5pYXNodmlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9JcmFrbGlKYW5pXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIga2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrYScsIHtcbiAgICAgICAgbW9udGhzOiAn4YOY4YOQ4YOc4YOV4YOQ4YOg4YOYX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDmF/hg5vhg5Dhg6Dhg6Lhg5hf4YOQ4YOe4YOg4YOY4YOa4YOYX+GDm+GDkOGDmOGDoeGDmF/hg5jhg5Xhg5zhg5jhg6Hhg5hf4YOY4YOV4YOa4YOY4YOh4YOYX+GDkOGDkuGDleGDmOGDoeGDouGDnV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg5hf4YOd4YOl4YOi4YOd4YOb4YOR4YOU4YOg4YOYX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGDmF/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg5gnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4YOY4YOQ4YOcX+GDl+GDlOGDkV/hg5vhg5Dhg6Bf4YOQ4YOe4YOgX+GDm+GDkOGDmF/hg5jhg5Xhg5xf4YOY4YOV4YOaX+GDkOGDkuGDlV/hg6Hhg5Thg6Vf4YOd4YOl4YOiX+GDnOGDneGDlF/hg5Phg5Thg5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfhg5nhg5Xhg5jhg6Dhg5Bf4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDmF/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDmF/hg6jhg5Dhg5Hhg5Dhg5fhg5gnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOZ4YOV4YOY4YOg4YOQ4YOhX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDoV/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDoV/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg6Ff4YOo4YOQ4YOR4YOQ4YOX4YOhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogLyjhg6zhg5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhg5nhg5Xhg5hf4YOd4YOg4YOoX+GDoeGDkOGDm1/hg53hg5fhg65f4YOu4YOj4YOXX+GDnuGDkOGDoF/hg6jhg5Dhg5EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57hg5Bf4YOo4YOQJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GDk+GDpuGDlOGDoV0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhg67hg5Xhg5Dhg5pdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4YOS4YOj4YOo4YOY4YOcXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vhg6jhg5Thg5vhg5Phg5Thg5JdIGRkZGQgTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4YOs4YOY4YOc4YOQXSBkZGRkIExULeGDluGDlCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAvKOGDrOGDkOGDm3zhg6zhg6Phg5d84YOh4YOQ4YOQ4YOXfOGDrOGDlOGDmnzhg5Phg6Z84YOX4YOVKSjhg5h84YOUKS8sXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkMCwgJDEsICQyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJDIgPT09ICfhg5gnID8gJDEgKyAn4YOo4YOYJyA6ICQxICsgJDIgKyAn4YOo4YOYJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOYfOGDoeGDkOGDkOGDl+GDmHzhg5Phg6bhg5R84YOX4YOV4YOUKS8udGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8o4YOYfOGDlCkkLywgJ+GDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKC/hg6zhg5Thg5rhg5gvLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgv4YOs4YOU4YOa4YOYJC8sICfhg6zhg5rhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHM6ICfhg6Dhg5Dhg5vhg5Phg5Thg5zhg5jhg5vhg5Qg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIG06ICfhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgbW06ICclZCDhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgaDogJ+GDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBoaDogJyVkIOGDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBkOiAn4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIE06ICfhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgTU06ICclZCDhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgeTogJ+GDrOGDlOGDmuGDmCcsXG4gICAgICAgICAgICB5eTogJyVkIOGDrOGDlOGDmuGDmCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8wfDEt4YOa4YOYfOGDm+GDlC1cXGR7MSwyfXxcXGR7MSwyfS3hg5QvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5rhg5gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG51bWJlciA8IDIwIHx8XG4gICAgICAgICAgICAgICAgKG51bWJlciA8PSAxMDAgJiYgbnVtYmVyICUgMjAgPT09IDApIHx8XG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GDm+GDlC0nICsgbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOUJztcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLFxuICAgICAgICAgICAgZG95OiA3LFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGthO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEthemFraCBba2tdXG4vLyEgYXV0aG9ycyA6IE51cmxhbiBSYWtoaW16aGFub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbnVybGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YjRlicsXG4gICAgICAgIDE6ICct0YjRlicsXG4gICAgICAgIDI6ICct0YjRlicsXG4gICAgICAgIDM6ICct0YjRlicsXG4gICAgICAgIDQ6ICct0YjRlicsXG4gICAgICAgIDU6ICct0YjRlicsXG4gICAgICAgIDY6ICct0YjRiycsXG4gICAgICAgIDc6ICct0YjRlicsXG4gICAgICAgIDg6ICct0YjRlicsXG4gICAgICAgIDk6ICct0YjRiycsXG4gICAgICAgIDEwOiAnLdGI0YsnLFxuICAgICAgICAyMDogJy3RiNGLJyxcbiAgICAgICAgMzA6ICct0YjRiycsXG4gICAgICAgIDQwOiAnLdGI0YsnLFxuICAgICAgICA1MDogJy3RiNGWJyxcbiAgICAgICAgNjA6ICct0YjRiycsXG4gICAgICAgIDcwOiAnLdGI0ZYnLFxuICAgICAgICA4MDogJy3RiNGWJyxcbiAgICAgICAgOTA6ICct0YjRiycsXG4gICAgICAgIDEwMDogJy3RiNGWJyxcbiAgICB9O1xuXG4gICAgdmFyIGtrID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2snLCB7XG4gICAgICAgIG1vbnRoczogJ9Kb0LDSo9GC0LDRgF/QsNKb0L/QsNC9X9C90LDRg9GA0YvQt1/RgdOZ0YPRltGAX9C80LDQvNGL0YBf0LzQsNGD0YHRi9C8X9GI0ZbQu9C00LVf0YLQsNC80YvQt1/Sm9GL0YDQutKv0LnQtdC6X9Kb0LDQt9Cw0L1f0pvQsNGA0LDRiNCwX9C20LXQu9GC0L7Sm9GB0LDQvScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfSm9Cw0qNf0LDSm9C/X9C90LDRg1/RgdOZ0YNf0LzQsNC8X9C80LDRg1/RiNGW0Ltf0YLQsNC8X9Kb0YvRgF/Sm9Cw0Ldf0pvQsNGAX9C20LXQuycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQttC10LrRgdC10L3QsdGWX9C00q/QudGB0LXQvdCx0ZZf0YHQtdC50YHQtdC90LHRll/RgdOZ0YDRgdC10L3QsdGWX9Cx0LXQudGB0LXQvdCx0ZZf0LbSsdC80LBf0YHQtdC90LHRlicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C20LXQul/QtNKv0Llf0YHQtdC5X9GB05nRgF/QsdC10Llf0LbSsdC8X9GB0LXQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQttC6X9C00Llf0YHQuV/RgdGAX9Cx0Llf0LbQvF/RgdC9Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CR0q/Qs9GW0L0g0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQldGA0YLQtdKjINGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vTqNGC0LrQtdC9INCw0L/RgtCw0L3Ri9KjXSBkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINGW0YjRltC90LTQtScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0LHSsdGA0YvQvScsXG4gICAgICAgICAgICBzOiAn0LHRltGA0L3QtdGI0LUg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG06ICfQsdGW0YAg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBtbTogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaDogJ9Cx0ZbRgCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHRltGAINC60q/QvScsXG4gICAgICAgICAgICBkZDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNOiAn0LHRltGAINCw0LknLFxuICAgICAgICAgICAgTU06ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHk6ICfQsdGW0YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LbRi9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRiNGWfNGI0YspLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2s7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2FtYm9kaWFuIFtrbV1cbi8vISBhdXRob3IgOiBLcnV5IFZhbm5hIDogaHR0cHM6Ly9naXRodWIuY29tL2tydXl2YW5uYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfhn6EnLFxuICAgICAgICAgICAgMjogJ+GfoicsXG4gICAgICAgICAgICAzOiAn4Z+jJyxcbiAgICAgICAgICAgIDQ6ICfhn6QnLFxuICAgICAgICAgICAgNTogJ+GfpScsXG4gICAgICAgICAgICA2OiAn4Z+mJyxcbiAgICAgICAgICAgIDc6ICfhn6cnLFxuICAgICAgICAgICAgODogJ+GfqCcsXG4gICAgICAgICAgICA5OiAn4Z+pJyxcbiAgICAgICAgICAgIDA6ICfhn6AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4Z+hJzogJzEnLFxuICAgICAgICAgICAgJ+Gfoic6ICcyJyxcbiAgICAgICAgICAgICfhn6MnOiAnMycsXG4gICAgICAgICAgICAn4Z+kJzogJzQnLFxuICAgICAgICAgICAgJ+GfpSc6ICc1JyxcbiAgICAgICAgICAgICfhn6YnOiAnNicsXG4gICAgICAgICAgICAn4Z+nJzogJzcnLFxuICAgICAgICAgICAgJ+GfqCc6ICc4JyxcbiAgICAgICAgICAgICfhn6knOiAnOScsXG4gICAgICAgICAgICAn4Z+gJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGttID0gbW9tZW50LmRlZmluZUxvY2FsZSgna20nLCB7XG4gICAgICAgIG1vbnRoczogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+GeouGetuGekeGet+Gej+GfkuGemV/hnoXhn5DhnpPhn5LhnpFf4Z6i4Z6E4Z+S4Z6C4Z624Z6aX+GeluGeu+Gekl/hnpbhn5LhnprhnqDhnp/hn5LhnpThno/hnrfhn41f4Z6f4Z674Z6A4Z+S4Z6aX+Gen+GfheGemuGfjScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Z6W4Z+S4Z6a4Z654Z6AfOGem+GfkuGehOGetuGehS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GeluGfkuGemuGeueGegCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+HIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhnp/hn5LhnqLhn4LhnoAg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+Gen+GelOGfkuGej+GetuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+GekeGfgOGejycsXG4gICAgICAgICAgICBwYXN0OiAnJXPhnpjhnrvhnpMnLFxuICAgICAgICAgICAgczogJ+GelOGfieGeu+Gek+GfkuGemOGetuGek+GenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBzczogJyVkIOGenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtOiAn4Z6Y4Z694Z6Z4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIGg6ICfhnpjhnr3hnpnhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgaGg6ICclZCDhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgZDogJ+GemOGeveGemeGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBkZDogJyVkIOGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBNOiAn4Z6Y4Z694Z6Z4Z6B4Z+CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Z6B4Z+CJyxcbiAgICAgICAgICAgIHk6ICfhnpjhnr3hnpnhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICAgICAgeXk6ICclZCDhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAv4Z6R4Z64XFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAn4Z6R4Z64JWQnLFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Z+h4Z+i4Z+j4Z+k4Z+l4Z+m4Z+n4Z+o4Z+p4Z+gXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga207XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS2FubmFkYSBba25dXG4vLyEgYXV0aG9yIDogUmFqZWV2IE5haWsgOiBodHRwczovL2dpdGh1Yi5jb20vcmFqZWV2bmFpa3RlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CzpycsXG4gICAgICAgICAgICAyOiAn4LOoJyxcbiAgICAgICAgICAgIDM6ICfgs6knLFxuICAgICAgICAgICAgNDogJ+CzqicsXG4gICAgICAgICAgICA1OiAn4LOrJyxcbiAgICAgICAgICAgIDY6ICfgs6wnLFxuICAgICAgICAgICAgNzogJ+CzrScsXG4gICAgICAgICAgICA4OiAn4LOuJyxcbiAgICAgICAgICAgIDk6ICfgs68nLFxuICAgICAgICAgICAgMDogJ+CzpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgs6cnOiAnMScsXG4gICAgICAgICAgICAn4LOoJzogJzInLFxuICAgICAgICAgICAgJ+CzqSc6ICczJyxcbiAgICAgICAgICAgICfgs6onOiAnNCcsXG4gICAgICAgICAgICAn4LOrJzogJzUnLFxuICAgICAgICAgICAgJ+CzrCc6ICc2JyxcbiAgICAgICAgICAgICfgs60nOiAnNycsXG4gICAgICAgICAgICAn4LOuJzogJzgnLFxuICAgICAgICAgICAgJ+Czryc6ICc5JyxcbiAgICAgICAgICAgICfgs6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIga24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbicsIHtcbiAgICAgICAgbW9udGhzOiAn4LKc4LKo4LK14LKw4LK/X+Cyq+CzhuCyrOCzjeCysOCyteCysOCyv1/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoLgsqzgsrDgs41f4LKF4LKV4LON4LKf4LOG4LOC4LOV4LKs4LKw4LONX+CyqOCyteCzhuCyguCyrOCysOCzjV/gsqHgsr/gsrjgs4bgsoLgsqzgsrDgs40nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CynOCyqF/gsqvgs4bgsqzgs43gsrBf4LKu4LK+4LKw4LON4LKa4LONX+Cyj+CyquCzjeCysOCyv+CysuCzjV/gsq7gs4bgs5Vf4LKc4LOC4LKo4LONX+CynOCzgeCysuCzhuCzll/gsobgspfgsrjgs43gsp/gs41f4LK44LOG4LKq4LON4LKf4LOG4LKCX+CyheCyleCzjeCyn+CzhuCzguCzlV/gsqjgsrXgs4bgsoJf4LKh4LK/4LK44LOG4LKCJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4LKt4LK+4LKo4LOB4LK14LK+4LKwX+CyuOCzhuCzguCzleCyruCyteCyvuCysF/gsq7gsoLgspfgsrPgsrXgsr7gsrBf4LKs4LOB4LKn4LK14LK+4LKwX+Cyl+CzgeCysOCzgeCyteCyvuCysF/gsrbgs4HgspXgs43gsrDgsrXgsr7gsrBf4LK24LKo4LK/4LK14LK+4LKwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LKt4LK+4LKo4LOBX+CyuOCzhuCzguCzleCyrl/gsq7gsoLgspfgsrNf4LKs4LOB4LKnX+Cyl+CzgeCysOCzgV/gsrbgs4HgspXgs43gsrBf4LK24LKo4LK/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CyreCyvl/gsrjgs4bgs4Lgs5Vf4LKu4LKCX+CyrOCzgV/gspfgs4Ff4LK24LOBX+Cyticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgsofgsoLgsqbgs4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LKo4LK+4LKz4LOGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LKo4LK/4LKo4LON4LKo4LOGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgspXgs4bgs4Lgsqjgs4bgsq9dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LKo4LKC4LKk4LKwJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgsrngsr/gsoLgsqbgs4YnLFxuICAgICAgICAgICAgczogJ+CyleCzhuCysuCyteCzgSDgspXgs43gsrfgsqPgspfgsrPgs4EnLFxuICAgICAgICAgICAgc3M6ICclZCDgsrjgs4bgspXgs4bgsoLgsqHgs4HgspfgsrPgs4EnLFxuICAgICAgICAgICAgbTogJ+CykuCyguCypuCzgSDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgbW06ICclZCDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgaDogJ+CykuCyguCypuCzgSDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgaGg6ICclZCDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgZDogJ+CykuCyguCypuCzgSDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgTTogJ+CykuCyguCypuCzgSDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgTU06ICclZCDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgeTogJ+CykuCyguCypuCzgSDgsrXgsrDgs43gsrcnLFxuICAgICAgICAgICAgeXk6ICclZCDgsrXgsrDgs43gsrcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4LOn4LOo4LOp4LOq4LOr4LOs4LOt4LOu4LOv4LOmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LKw4LK+4LKk4LON4LKw4LK/fOCyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhnzgsq7gsqfgs43gsq/gsr7gsrngs43gsqh84LK44LKC4LKc4LOGLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LKw4LK+4LKk4LON4LKw4LK/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LK44LKC4LKc4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsq7gsqfgs43gsq/gsr7gsrngs43gsqgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyuOCyguCynOCzhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCyqOCzhuCzlSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CyqOCzhuCzlSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLb3JlYW4gW2tvXVxuLy8hIGF1dGhvciA6IEt5dW5nd29vaywgUGFyayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9reXVuZ3cwMGtcbi8vISBhdXRob3IgOiBKZWVleXVsIExlZSA8amVlZXl1bEBnbWFpbC5jb20+XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIga28gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbycsIHtcbiAgICAgICAgbW9udGhzOiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn7J287JqU7J28X+yblOyalOydvF/tmZTsmpTsnbxf7IiY7JqU7J28X+uqqeyalOydvF/quIjsmpTsnbxf7Yag7JqU7J28Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEw6ICdZWVlZ64WEIE1NTU0gROydvCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBsbDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ+yYpOuKmCBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAn64K07J28IExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAn7Ja07KCcIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAn7KeA64Kc7KO8IGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDtm4QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOyghCcsXG4gICAgICAgICAgICBzOiAn66qHIOy0iCcsXG4gICAgICAgICAgICBzczogJyVk7LSIJyxcbiAgICAgICAgICAgIG06ICcx67aEJyxcbiAgICAgICAgICAgIG1tOiAnJWTrtoQnLFxuICAgICAgICAgICAgaDogJ+2VnCDsi5zqsIQnLFxuICAgICAgICAgICAgaGg6ICclZOyLnOqwhCcsXG4gICAgICAgICAgICBkOiAn7ZWY66OoJyxcbiAgICAgICAgICAgIGRkOiAnJWTsnbwnLFxuICAgICAgICAgICAgTTogJ+2VnCDri6wnLFxuICAgICAgICAgICAgTU06ICclZOuLrCcsXG4gICAgICAgICAgICB5OiAn7J28IOuFhCcsXG4gICAgICAgICAgICB5eTogJyVk64WEJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOydvHzsm5R87KO8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+ydvCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7JuUJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfso7wnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/smKTsoIR87Jik7ZuELyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICfsmKTtm4QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAxMiA/ICfsmKTsoIQnIDogJ+yYpO2bhCc7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga287XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTm9ydGhlcm4gS3VyZGlzaCBba3Uta21yXVxuLy8hIGF1dGhvcnMgOiBNYXpsdW0gw5Z6ZG9nYW4gOiBodHRwczovL2dpdGh1Yi5jb20vbWVyZ2VoZXpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ8OnZW5kIHNhbsOueWUnLCAnw6dlbmQgc2Fuw655ZXlhbiddLFxuICAgICAgICAgICAgc3M6IFtudW0gKyAnIHNhbsOueWUnLCBudW0gKyAnIHNhbsOueWV5YW4nXSxcbiAgICAgICAgICAgIG06IFsnZGVxw65xZXllaycsICdkZXHDrnFleWVrw6onXSxcbiAgICAgICAgICAgIG1tOiBbbnVtICsgJyBkZXHDrnFlJywgbnVtICsgJyBkZXHDrnFleWFuJ10sXG4gICAgICAgICAgICBoOiBbJ3NhZXRlaycsICdzYWV0ZWvDqiddLFxuICAgICAgICAgICAgaGg6IFtudW0gKyAnIHNhZXQnLCBudW0gKyAnIHNhZXRhbiddLFxuICAgICAgICAgICAgZDogWydyb2playcsICdyb2pla8OqJ10sXG4gICAgICAgICAgICBkZDogW251bSArICcgcm9qJywgbnVtICsgJyByb2phbiddLFxuICAgICAgICAgICAgdzogWydoZWZ0ZXllaycsICdoZWZ0ZXlla8OqJ10sXG4gICAgICAgICAgICB3dzogW251bSArICcgaGVmdGUnLCBudW0gKyAnIGhlZnRleWFuJ10sXG4gICAgICAgICAgICBNOiBbJ21laGVrJywgJ21laGVrw6onXSxcbiAgICAgICAgICAgIE1NOiBbbnVtICsgJyBtZWgnLCBudW0gKyAnIG1laGFuJ10sXG4gICAgICAgICAgICB5OiBbJ3NhbGVrJywgJ3NhbGVrw6onXSxcbiAgICAgICAgICAgIHl5OiBbbnVtICsgJyBzYWwnLCBudW0gKyAnIHNhbGFuJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG4gICAgLy8gZnVuY3Rpb24gb2JsaXF1ZU51bVN1ZmZpeChudW0pIHtcbiAgICAvLyAgICAgaWYobnVtLmluY2x1ZGVzKCc6JykpXG4gICAgLy8gICAgICAgICBudW0gPSBwYXJzZUludChudW0uc3BsaXQoJzonKVswXSk7XG4gICAgLy8gICAgIGVsc2VcbiAgICAvLyAgICAgICAgIG51bSA9IHBhcnNlSW50KG51bSk7XG4gICAgLy8gICAgIHJldHVybiBudW0gPT0gMCB8fCBudW0gJSAxMCA9PSAxID8gJ8OqJ1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIDogKG51bSA+IDEwICYmIG51bSAlIDEwID09IDAgPyAnw64nIDogJ2FuJyk7XG4gICAgLy8gfVxuICAgIGZ1bmN0aW9uIGV6YWZlTnVtU3VmZml4KG51bSkge1xuICAgICAgICBudW0gPSAnJyArIG51bTtcbiAgICAgICAgdmFyIGwgPSBudW0uc3Vic3RyaW5nKG51bS5sZW5ndGggLSAxKSxcbiAgICAgICAgICAgIGxsID0gbnVtLmxlbmd0aCA+IDEgPyBudW0uc3Vic3RyaW5nKG51bS5sZW5ndGggLSAyKSA6ICcnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKGxsID09IDEyIHx8IGxsID09IDEzKSAmJlxuICAgICAgICAgICAgKGwgPT0gJzInIHx8IGwgPT0gJzMnIHx8IGxsID09ICc1MCcgfHwgbCA9PSAnNzAnIHx8IGwgPT0gJzgwJylcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuICd5w6onO1xuICAgICAgICByZXR1cm4gJ8OqJztcbiAgICB9XG5cbiAgICB2YXIga3VLbXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrdS1rbXInLCB7XG4gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3BlbGxpbmcgcnVsZXMgZGVmaW5lZCBieSB0aGUgd29yayBncm91cCBvZiBXZXFmYSBNZXpvcG90YW15YXnDqiAoTWVzb3BvdGFtaWEgRm91bmRhdGlvbilcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgYmU6ICdLYW7Du25hIFBhxZ/Drm5fU2liYXRfQWRhcl9Ow65zYW5fR3VsYW5fSGV6w65yYW5fVMOucm1laF9UZWJheF/Djmxvbl/Dh2lyw655YSBQw6rFn8Oubl/Dh2lyw655YSBQYcWfw65uX0thbsO7bmEgUMOqxZ/Drm4nXG4gICAgICAgIC8vIEJ1dCB0aGUgbmFtZXMgYmVsb3cgYXJlIG1vcmUgd2VsbCBrbm93biBhbmQgaGFuZHlcbiAgICAgICAgbW9udGhzOiAnUsOqYmVuZGFuX1NpYmF0X0FkYXJfTsOuc2FuX0d1bGFuX0hlesOucmFuX1TDrnJtZWhfVGViYXhfw45sb25fQ290bWVoX01pamRhcl9CZXJmYW5iYXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnUsOqYl9TaWJfQWRhX07DrnNfR3VsX0hlel9Uw65yX1RlYl/DjmxvX0NvdF9NaWpfQmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ1lla8WfZW1fRHXFn2VtX1PDqsWfZW1fw4dhcsWfZW1fUMOqbmPFn2VtX8OObl/FnmVtw64nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdZZWtfRHVfU8OqX8OHYXJfUMOqbl/Djm5fxZ5lbScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdZZV9EdV9Tw6pfw4dhX1DDql/Djm5fxZ5lJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2JuJyA6ICdCTic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3BuJyA6ICdQTic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9ibnxCTnxwbnxQTi8sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRG8gTU1NTVthXSBZWVlZW2FuXScsXG4gICAgICAgICAgICBMTEw6ICdEbyBNTU1NW2FdIFlZWVlbYW5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEbyBNTU1NW2FdIFlZWVlbYW5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsOiAnRG8gTU1NWy5dIFlZWVlbYW5dJyxcbiAgICAgICAgICAgIGxsbDogJ0RvIE1NTVsuXSBZWVlZW2FuXSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkWy5dLCBEbyBNTU1bLl0gWVlZWVthbl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vDjnJvIGRpIHNhZXRdIExUIFtkZV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tTaWLDqiBkaSBzYWV0XSBMVCBbZGVdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZGkgc2FldF0gTFQgW2RlXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0R1aCBkaSBzYWV0XSBMVCBbZGVdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZFthIGJvcsOuIGRpIHNhZXRdIExUIFtkZV0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkaSAlcyBkZScsXG4gICAgICAgICAgICBwYXN0OiAnYmVyw64gJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgdzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHd3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oPzp5w6p8w6p8XFwuKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW0sIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIHAgPSBwZXJpb2QudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChwLmluY2x1ZGVzKCd3JykgfHwgcC5pbmNsdWRlcygnbScpKSByZXR1cm4gbnVtICsgJy4nO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVtICsgZXphZmVOdW1TdWZmaXgobnVtKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt1S21yO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEt1cmRpc2ggW2t1XVxuLy8hIGF1dGhvciA6IFNoYWhyYW0gTWViYXNoYXIgOiBodHRwczovL2dpdGh1Yi5jb20vU2hhaHJhbU1lYmFzaGFyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9mhJyxcbiAgICAgICAgICAgIDI6ICfZoicsXG4gICAgICAgICAgICAzOiAn2aMnLFxuICAgICAgICAgICAgNDogJ9mkJyxcbiAgICAgICAgICAgIDU6ICfZpScsXG4gICAgICAgICAgICA2OiAn2aYnLFxuICAgICAgICAgICAgNzogJ9mnJyxcbiAgICAgICAgICAgIDg6ICfZqCcsXG4gICAgICAgICAgICA5OiAn2aknLFxuICAgICAgICAgICAgMDogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2qnYp9mG2YjZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAgICAgJ9i02YjYqNin2KonLFxuICAgICAgICAgICAgJ9im2KfYstin2LEnLFxuICAgICAgICAgICAgJ9mG24zYs9in2YYnLFxuICAgICAgICAgICAgJ9im2KfbjNin2LEnLFxuICAgICAgICAgICAgJ9it2YjYstuV24zYsdin2YYnLFxuICAgICAgICAgICAgJ9iq25XZhdmF2YjYsicsXG4gICAgICAgICAgICAn2KbYp9ioJyxcbiAgICAgICAgICAgICfYptuV24zZhNmI2YjZhCcsXG4gICAgICAgICAgICAn2KrYtNix24zZhtuMINuM25XZg9uV2YUnLFxuICAgICAgICAgICAgJ9iq2LTYsduM2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgICAgICfZg9in2YbZiNmG24wg24zbldqp25XZhScsXG4gICAgICAgIF07XG5cbiAgICB2YXIga3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrdScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ9uM2YfigIzZg9i02YfigIzZhdmF2YfigIxf2K/ZiNmI2LTZh+KAjNmF2YXZh+KAjF/Ys9uO2LTZh+KAjNmF2YXZh+KAjF/ahtmI2KfYsdi02YfigIzZhdmF2YfigIxf2b7bjtmG2KzYtNmH4oCM2YXZhdmH4oCMX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OlxuICAgICAgICAgICAgJ9uM2YfigIzZg9i02YfigIzZhV/Yr9mI2YjYtNmH4oCM2YVf2LPbjti02YfigIzZhV/ahtmI2KfYsdi02YfigIzZhV/ZvtuO2YbYrNi02YfigIzZhV/Zh9mH4oCM24zZhtuMX9i02YfigIzZhdmF2YfigIwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn24xf2K9f2LNf2oZf2b5f2Ydf2LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2KbbjtmI2KfYsdmH4oCMfNio2YfigIzbjNin2YbbjC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC/YptuO2YjYp9ix2YfigIwvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjZh+KAjNuM2KfZhtuMJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYptuO2YjYp9ix2YfigIwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYptmH4oCM2YXYsduGINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9io2YfigIzbjNin2YbbjCDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYr9mI247ZhtuOINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mE2YfigIwgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzJyxcbiAgICAgICAgICAgIHM6ICfahtmH4oCM2YbYryDahtix2YPZh+KAjNuM2YfigIzZgycsXG4gICAgICAgICAgICBzczogJ9qG2LHZg9mH4oCMICVkJyxcbiAgICAgICAgICAgIG06ICfbjNmH4oCM2YMg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBtbTogJyVkINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgaDogJ9uM2YfigIzZgyDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBoaDogJyVkINmD2KfYqtqY2YXbjtixJyxcbiAgICAgICAgICAgIGQ6ICfbjNmH4oCM2YMg2pXbhtqYJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2pXbhtqYJyxcbiAgICAgICAgICAgIE06ICfbjNmH4oCM2YMg2YXYp9mG2q8nLFxuICAgICAgICAgICAgTU06ICclZCDZhdin2YbarycsXG4gICAgICAgICAgICB5OiAn24zZh+KAjNmDINiz2KfatScsXG4gICAgICAgICAgICB5eTogJyVkINiz2KfatScsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEt5cmd5eiBba3ldXG4vLyEgYXV0aG9yIDogQ2h5bmd5eiBBcnlzdGFuIHV1bHUgOiBodHRwczovL2dpdGh1Yi5jb20vY2h5bmd5elxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGH0q8nLFxuICAgICAgICAxOiAnLdGH0LgnLFxuICAgICAgICAyOiAnLdGH0LgnLFxuICAgICAgICAzOiAnLdGH0q8nLFxuICAgICAgICA0OiAnLdGH0q8nLFxuICAgICAgICA1OiAnLdGH0LgnLFxuICAgICAgICA2OiAnLdGH0YsnLFxuICAgICAgICA3OiAnLdGH0LgnLFxuICAgICAgICA4OiAnLdGH0LgnLFxuICAgICAgICA5OiAnLdGH0YMnLFxuICAgICAgICAxMDogJy3Rh9GDJyxcbiAgICAgICAgMjA6ICct0YfRiycsXG4gICAgICAgIDMwOiAnLdGH0YMnLFxuICAgICAgICA0MDogJy3Rh9GLJyxcbiAgICAgICAgNTA6ICct0YfSrycsXG4gICAgICAgIDYwOiAnLdGH0YsnLFxuICAgICAgICA3MDogJy3Rh9C4JyxcbiAgICAgICAgODA6ICct0YfQuCcsXG4gICAgICAgIDkwOiAnLdGH0YMnLFxuICAgICAgICAxMDA6ICct0YfSrycsXG4gICAgfTtcblxuICAgIHZhciBreSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2t5Jywge1xuICAgICAgICBtb250aHM6ICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YDRgl/QsNC/0YBf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn0JbQtdC60YjQtdC80LHQuF/QlNKv0LnRiNOp0LzQsdKvX9Co0LXQudGI0LXQvNCx0Lhf0KjQsNGA0YjQtdC80LHQuF/QkdC10LnRiNC10LzQsdC4X9CW0YPQvNCwX9CY0YjQtdC80LHQuCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9CW0LXQul/QlNKv0Llf0KjQtdC5X9Co0LDRgF/QkdC10Llf0JbRg9C8X9CY0YjQtScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQltC6X9CU0Llf0KjQuV/QqNGAX9CR0Llf0JbQvF/QmNGIJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CR0q/Qs9Kv0L0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0K3RgNGC0LXSoyDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YfRjdGNINGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vTqNGC0LrTqdC9INCw0L/RgtCw0L3Ri9C9XSBkZGRkIFvQutKv0L3Sr10gW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINC40YfQuNC90LTQtScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0LzRg9GA0YPQvScsXG4gICAgICAgICAgICBzOiAn0LHQuNGA0L3QtdGH0LUg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG06ICfQsdC40YAg0LzSr9C906nRgicsXG4gICAgICAgICAgICBtbTogJyVkINC80q/QvdOp0YInLFxuICAgICAgICAgICAgaDogJ9Cx0LjRgCDRgdCw0LDRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGQ6ICfQsdC40YAg0LrSr9C9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LrSr9C9JyxcbiAgICAgICAgICAgIE06ICfQsdC40YAg0LDQuScsXG4gICAgICAgICAgICBNTTogJyVkINCw0LknLFxuICAgICAgICAgICAgeTogJ9Cx0LjRgCDQttGL0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDQttGL0LsnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGH0Lh80YfRi3zRh9KvfNGH0YMpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTHV4ZW1ib3VyZ2lzaCBbbGJdXG4vLyEgYXV0aG9yIDogbXdlaW1lcnNraXJjaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9td2VpbWVyc2tpcmNoXG4vLyEgYXV0aG9yIDogRGF2aWQgUmFpc29uIDogaHR0cHM6Ly9naXRodWIuY29tL2t3aXNhdHpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtOiBbJ2VuZyBNaW51dHQnLCAnZW5nZXIgTWludXR0J10sXG4gICAgICAgICAgICBoOiBbJ2VuZyBTdG9ubicsICdlbmdlciBTdG9ubiddLFxuICAgICAgICAgICAgZDogWydlZW4gRGFnJywgJ2VuZ2VtIERhZyddLFxuICAgICAgICAgICAgTTogWydlZSBNb3VudCcsICdlbmdlbSBNb3VudCddLFxuICAgICAgICAgICAgeTogWydlZSBKb2VyJywgJ2VuZ2VtIEpvZXInXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzRnV0dXJlVGltZShzdHJpbmcpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7XG4gICAgICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuICdhICcgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdhbiAnICsgc3RyaW5nO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzUGFzdFRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAndmlydSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAndmlydW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JkIGJlZm9yZSB0aGUgZ2l2ZW4gbnVtYmVyIGxvc2VzIHRoZSAnLW4nIGVuZGluZy5cbiAgICAgKiBlLmcuICdhbiAxMCBEZWVnJyBidXQgJ2EgNSBEZWVnJ1xuICAgICAqXG4gICAgICogQHBhcmFtIG51bWJlciB7aW50ZWdlcn1cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlciwgMTApO1xuICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyBOZWdhdGl2ZSBOdW1iZXIgLS0+IGFsd2F5cyB0cnVlXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMCkge1xuICAgICAgICAgICAgLy8gT25seSAxIGRpZ2l0XG4gICAgICAgICAgICBpZiAoNCA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IDcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDApIHtcbiAgICAgICAgICAgIC8vIDIgZGlnaXRzXG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgZmlyc3REaWdpdCA9IG51bWJlciAvIDEwO1xuICAgICAgICAgICAgaWYgKGxhc3REaWdpdCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIoZmlyc3REaWdpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKGxhc3REaWdpdCk7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwMDApIHtcbiAgICAgICAgICAgIC8vIDMgb3IgNCBkaWdpdHMgLS0+IHJlY3Vyc2l2ZWx5IGNoZWNrIGZpcnN0IGRpZ2l0XG4gICAgICAgICAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBBbnl0aGluZyBsYXJnZXIgdGhhbiA0IGRpZ2l0czogcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3Qgbi0zIGRpZ2l0c1xuICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2xiJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6RlcnpfQWJyw6tsbF9NZWVfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSmFuLl9GZWJyLl9NcnouX0Fici5fTWVlX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1Nvbm5kZWdfTcOpaW5kZWdfRMOrbnNjaGRlZ19Nw6t0dHdvY2hfRG9ubmVzY2hkZWdfRnJlaWRlZ19TYW1zY2hkZWcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nw6kuX0TDqy5fTcOrLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nw6lfRMOrX03Dq19Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tIFtBdWVyXScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzIFtBdWVyXScsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhdXQgdW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW011ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbR8Orc2NodGVyIHVtXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIERpZmZlcmVudCBkYXRlIHN0cmluZyBmb3IgJ0TDq25zY2hkZWcnIChUdWVzZGF5KSBhbmQgJ0Rvbm5lc2NoZGVnJyAoVGh1cnNkYXkpIGR1ZSB0byBwaG9ub2xvZ2ljYWwgcnVsZVxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZV0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogcHJvY2Vzc0Z1dHVyZVRpbWUsXG4gICAgICAgICAgICBwYXN0OiBwcm9jZXNzUGFzdFRpbWUsXG4gICAgICAgICAgICBzOiAnZSBwdWVyIFNla29ubmVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2Vrb25uZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXR0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3Rvbm5lbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6ICclZCBEZWVnJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogJyVkIE3DqWludCcsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6ICclZCBKb2VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMYW8gW2xvXVxuLy8hIGF1dGhvciA6IFJ5YW4gSGFydCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yeWFuaGFydDJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBsbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2xvJywge1xuICAgICAgICBtb250aHM6ICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfguq3gurLgupfgurTgupRf4LqI4Lqx4LqZX+C6reC6seC6h+C6hOC6suC6mV/gup7gurjgupRf4Lqe4Lqw4Lqr4Lqx4LqUX+C6quC6uOC6gV/gu4DguqrgurvgurInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgupfgurTgupRf4LqI4Lqx4LqZX+C6reC6seC6h+C6hOC6suC6mV/gup7gurjgupRf4Lqe4Lqw4Lqr4Lqx4LqUX+C6quC6uOC6gV/gu4DguqrgurvgurInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LqXX+C6iF/guq3guoRf4LqeX+C6nuC6q1/guqrguoFf4LqqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ+C6p+C6seC6mWRkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyfOC6leC6reC6meC7geC6peC6hy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4LqV4Lqt4LqZ4LuB4Lql4LqHJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C6leC6reC6meC7gOC6iuC6u+C7ieC6sic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuB4Lql4LqHJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Lqh4Lq34LuJ4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C6oeC6t+C7ieC6reC6t+C7iOC6meC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4Lqn4Lqx4LqZXWRkZGRb4Luc4LuJ4Lqy4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C6oeC6t+C7ieC6p+C6suC6meC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Lqn4Lqx4LqZXWRkZGRb4LuB4Lql4LuJ4Lqn4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+C6reC6teC6gSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXPgupzgu4jgurLgupnguqHgurInLFxuICAgICAgICAgICAgczogJ+C6muC7jeC7iOC7gOC6l+C6u+C7iOC6suC7g+C6lOC6p+C6tOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBzczogJyVkIOC6p+C6tOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBtOiAnMSDgupngurLgupfgurUnLFxuICAgICAgICAgICAgbW06ICclZCDgupngurLgupfgurUnLFxuICAgICAgICAgICAgaDogJzEg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHJyxcbiAgICAgICAgICAgIGQ6ICcxIOC6oeC6t+C7iScsXG4gICAgICAgICAgICBkZDogJyVkIOC6oeC6t+C7iScsXG4gICAgICAgICAgICBNOiAnMSDgu4DgupTgurfguq3gupknLFxuICAgICAgICAgICAgTU06ICclZCDgu4DgupTgurfguq3gupknLFxuICAgICAgICAgICAgeTogJzEg4Lqb4Lq1JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Lqb4Lq1JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogLyjgupfgurXgu4gpXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ+C6l+C6teC7iCcgKyBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTGl0aHVhbmlhbiBbbHRdXG4vLyEgYXV0aG9yIDogTWluZGF1Z2FzIE1vesWrcmFzIDogaHR0cHM6Ly9naXRodWIuY29tL21tb3p1cmFzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgIHNzOiAnc2VrdW5kxJdfc2VrdW5kxb5pxbNfc2VrdW5kZXMnLFxuICAgICAgICBtOiAnbWludXTEl19taW51dMSXc19taW51dMSZJyxcbiAgICAgICAgbW06ICdtaW51dMSXc19taW51xI1pxbNfbWludXRlcycsXG4gICAgICAgIGg6ICd2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFJyxcbiAgICAgICAgaGg6ICd2YWxhbmRvc192YWxhbmTFs192YWxhbmRhcycsXG4gICAgICAgIGQ6ICdkaWVuYV9kaWVub3NfZGllbsSFJyxcbiAgICAgICAgZGQ6ICdkaWVub3NfZGllbsWzX2RpZW5hcycsXG4gICAgICAgIE06ICdtxJdudW9fbcSXbmVzaW9fbcSXbmVzxK8nLFxuICAgICAgICBNTTogJ23El25lc2lhaV9txJduZXNpxbNfbcSXbmVzaXVzJyxcbiAgICAgICAgeTogJ21ldGFpX21ldMWzX21ldHVzJyxcbiAgICAgICAgeXk6ICdtZXRhaV9tZXTFs19tZXR1cycsXG4gICAgfTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuICdrZWxpb3Mgc2VrdW5kxJdzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdrZWxpxbMgc2VrdW5kxb5pxbMnIDogJ2tlbGlhcyBzZWt1bmRlcyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4XG4gICAgICAgICAgICA/IGZvcm1zKGtleSlbMF1cbiAgICAgICAgICAgIDogaXNGdXR1cmVcbiAgICAgICAgICAgICAgPyBmb3JtcyhrZXkpWzFdXG4gICAgICAgICAgICAgIDogZm9ybXMoa2V5KVsyXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAwIHx8IChudW1iZXIgPiAxMCAmJiBudW1iZXIgPCAyMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcm1zKGtleSkge1xuICAgICAgICByZXR1cm4gdW5pdHNba2V5XS5zcGxpdCgnXycpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgcmVzdWx0ICsgdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXlbMF0sIGlzRnV0dXJlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBmb3JtcyhrZXkpWzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsdCcsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1xb7El19iaXLFvmVsaXNfbGllcGFfcnVncGrFq3Rpc19ydWdzxJdqaXNfc3BhbGlzX2xhcGtyaXRpc19ncnVvZGlzJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NP3xNTU1NPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3Nla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ3Nla21hZGllbmlzX3Bpcm1hZGllbmlzX2FudHJhZGllbmlzX3RyZcSNaWFkaWVuaXNfa2V0dmlydGFkaWVuaXNfcGVua3RhZGllbmlzX8WhZcWhdGFkaWVuaXMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9kZGRkIEhIOm1tLyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1Nla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NfUF9BX1RfS19Qbl/FoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgbGxsOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vFoGlhbmRpZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbUnl0b2pdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1Zha2FyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tQcmHEl2p1c8SvXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncG8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWXFoSAlcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGVTZWNvbmRzLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LW9qaS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLW9qaSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMYXR2aWFuIFtsdl1cbi8vISBhdXRob3IgOiBLcmlzdGFwcyBLYXJsc29ucyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9za2Frcmlcbi8vISBhdXRob3IgOiBKxIFuaXMgRWxtZXJpcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9KYW5pc0VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgc3M6ICdzZWt1bmRlc19zZWt1bmTEk21fc2VrdW5kZV9zZWt1bmRlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbTogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICBtbTogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICBoOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgaGg6ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycpLFxuICAgICAgICBkOiAnZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzJy5zcGxpdCgnXycpLFxuICAgICAgICBkZDogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgTTogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgIE1NOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgeTogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgeXk6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gd2l0aG91dFN1ZmZpeCBib29sZWFuIHRydWUgPSBhIGxlbmd0aCBvZiB0aW1lOyBmYWxzZSA9IGJlZm9yZS9hZnRlciBhIHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvcm1hdChmb3JtcywgbnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZVwiLCBcIjMgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSAmJiBudW1iZXIgJSAxMDAgIT09IDExID8gZm9ybXNbMl0gOiBmb3Jtc1szXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEUuZy4gXCIyMSBtaW7Fq3Rlc1wiIGFzIGluIFwicMSTYyAyMSBtaW7Fq3Rlc1wiLlxuICAgICAgICAgICAgLy8gRS5nLiBcIjMgbWluxat0xJNtXCIgYXMgaW4gXCJwxJNjIDMgbWluxat0xJNtXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogZm9ybXNbMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZGHFvmFzIHNla3VuZGVzJyA6ICdkYcW+xIFtIHNla3VuZMSTbSc7XG4gICAgfVxuXG4gICAgdmFyIGx2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHYnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21haWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdl9QX09fVF9DX1BrX1MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZLicsXG4gICAgICAgICAgICBMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbxaBvZGllbiBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tSxKt0IHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1Zha2FyIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tQYWfEgWp1xaHEgV0gZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncMSTYyAlcycsXG4gICAgICAgICAgICBwYXN0OiAncGlybXMgJXMnLFxuICAgICAgICAgICAgczogcmVsYXRpdmVTZWNvbmRzLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1vbnRlbmVncmluIFttZV1cbi8vISBhdXRob3IgOiBNaW9kcmFnIE5pa2HEjSA8bWlvZHJhZ0ByZXN0YXJ0aXQubWU+IDogaHR0cHM6Ly9naXRodWIuY29tL21pb2RyYWduaWthY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kJywgJ3Nla3VuZGEnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRub2cgbWludXRhJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGEnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTU06IFsnbWplc2VjJywgJ21qZXNlY2EnLCAnbWplc2VjaSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgID8gd29yZEtleVswXVxuICAgICAgICAgICAgICAgIDogbnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDRcbiAgICAgICAgICAgICAgICAgID8gd29yZEtleVsxXVxuICAgICAgICAgICAgICAgICAgOiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgdmFyIG1lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWUnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3NqdXRyYSB1XSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGplbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRqZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyaWplZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hb3JpIFttaV1cbi8vISBhdXRob3IgOiBKb2huIENvcnJpZ2FuIDxyb2JiaWVjbG9zZXRAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huaWRlYWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21pJywge1xuICAgICAgICBtb250aHM6ICdLb2hpLXTEgXRlX0h1aS10YW5ndXJ1X1BvdXTFqy10ZS1yYW5naV9QYWVuZ2Etd2jEgXdoxIFfSGFyYXR1YV9QaXBpcmlfSMWNbmdvaW5nb2lfSGVyZS10dXJpLWvFjWvEgV9NYWh1cnVfV2hpcmluZ2EtxIEtbnVrdV9XaGlyaW5nYS3EgS1yYW5naV9IYWtpaGVhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IxY1uZ29pX0hlcmVfTWFodV9XaGktbnVfV2hpLXJhX0hha2knLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsMn0vaSxcbiAgICAgICAgd2Vla2RheXM6ICdSxIF0YXB1X01hbmVfVMWrcmVpX1dlbmVyZWlfVMSBaXRlX1BhcmFpcmVfSMSBdGFyZWknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtpXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW2ldIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaW5hbmFoaSBpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgcm90byBpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpIG11YScsXG4gICAgICAgICAgICBzOiAndGUgaMSTa29uYSBydWFydWEnLFxuICAgICAgICAgICAgc3M6ICclZCBoxJNrb25hJyxcbiAgICAgICAgICAgIG06ICdoZSBtZW5ldGknLFxuICAgICAgICAgICAgbW06ICclZCBtZW5ldGknLFxuICAgICAgICAgICAgaDogJ3RlIGhhb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGFvcmEnLFxuICAgICAgICAgICAgZDogJ2hlIHJhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgcmEnLFxuICAgICAgICAgICAgTTogJ2hlIG1hcmFtYScsXG4gICAgICAgICAgICBNTTogJyVkIG1hcmFtYScsXG4gICAgICAgICAgICB5OiAnaGUgdGF1JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGF1JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWNlZG9uaWFuIFtta11cbi8vISBhdXRob3IgOiBCb3Jpc2xhdiBNaWNrb3YgOiBodHRwczovL2dpdGh1Yi5jb20vQjBrMFxuLy8hIGF1dGhvciA6IFNhc2hrbyBUb2Rvcm92IDogaHR0cHM6Ly9naXRodWIuY29tL2JreWNlaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1rID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWsnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0ZjQsNC9X9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvWVf0L9vX9Cy0YJf0YHRgF/Rh9C1X9C/0LVf0YFhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQlNC10L3QtdGBINCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KPRgtGA0LUg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JLQvl0gZGRkZCBb0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwINCy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtC40L7Rgl0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9C/0YDQtdC0ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LrRgyDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG06ICfQtdC00L3QsCDQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaDogJ9C10LTQtdC9INGH0LDRgScsXG4gICAgICAgICAgICBoaDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQ6ICfQtdC00LXQvSDQtNC10L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICBNOiAn0LXQtNC10L0g0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTTogJyVkINC80LXRgdC10YbQuCcsXG4gICAgICAgICAgICB5OiAn0LXQtNC90LAg0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LPQvtC00LjQvdC4JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheWFsYW0gW21sXVxuLy8hIGF1dGhvciA6IEZsb3lkIFBpbmsgOiBodHRwczovL2dpdGh1Yi5jb20vZmxveWRwaW5rXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbCcsIHtcbiAgICAgICAgbW9udGhzOiAn4LSc4LSo4LWB4LS14LSw4LS/X+C0q+C1huC0rOC1jeC0sOC1geC0teC0sOC0v1/gtK7gtL7gtbzgtJrgtY3gtJrgtY1f4LSP4LSq4LWN4LSw4LS/4LW9X+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWIX+C0k+C0l+C0uOC1jeC0seC1jeC0seC1jV/gtLjgtYbgtKrgtY3gtLHgtY3gtLHgtILgtKzgtbxf4LSS4LSV4LWN4LSf4LWL4LSs4LW8X+C0qOC0teC0guC0rOC1vF/gtKHgtL/gtLjgtILgtKzgtbwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C0nOC0qOC1gS5f4LSr4LWG4LSs4LWN4LSw4LWBLl/gtK7gtL7gtbwuX+C0j+C0quC1jeC0sOC0vy5f4LSu4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYguX+C0k+C0ly5f4LS44LWG4LSq4LWN4LSx4LWN4LSxLl/gtJLgtJXgtY3gtJ/gtYsuX+C0qOC0teC0gi5f4LSh4LS/4LS44LSCLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgtJ7gtL7gtK/gtLHgtL7gtLTgtY3gtJpf4LSk4LS/4LSZ4LWN4LSV4LSz4LS+4LS04LWN4LSaX+C0muC1iuC0teC1jeC0teC0vuC0tOC1jeC0ml/gtKzgtYHgtKfgtKjgtL7gtLTgtY3gtJpf4LS14LWN4LSv4LS+4LS04LS+4LS04LWN4LSaX+C0teC1huC0s+C1jeC0s+C0v+C0r+C0vuC0tOC1jeC0ml/gtLbgtKjgtL/gtK/gtL7gtLTgtY3gtJonLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C0nuC0vuC0r+C1vF/gtKTgtL/gtJngtY3gtJXgtb5f4LSa4LWK4LS14LWN4LS1X+C0rOC1geC0p+C1u1/gtLXgtY3gtK/gtL7gtLTgtIJf4LS14LWG4LSz4LWN4LSz4LS/X+C0tuC0qOC0vycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgtJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1hl/gtLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyAt4LSo4LWBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtIfgtKjgtY3gtKjgtY1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LSo4LS+4LSz4LWGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LSH4LSo4LWN4LSo4LSy4LWGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgtJXgtLTgtL/gtJ7gtY3gtJ5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LSV4LS04LS/4LSe4LWN4LSe4LWNJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgtK7gtYHgtbvgtKrgtY0nLFxuICAgICAgICAgICAgczogJ+C0heC1veC0qiDgtKjgtL/gtK7gtL/gtLfgtJngtY3gtJngtb4nLFxuICAgICAgICAgICAgc3M6ICclZCDgtLjgtYbgtJXgtY3gtJXgtbvgtKHgtY0nLFxuICAgICAgICAgICAgbTogJ+C0kuC0sOC1gSDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgbW06ICclZCDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgaDogJ+C0kuC0sOC1gSDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgaGg6ICclZCDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgZDogJ+C0kuC0sOC1gSDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgZGQ6ICclZCDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgTTogJ+C0kuC0sOC1gSDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgTU06ICclZCDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgeTogJ+C0kuC0sOC1gSDgtLXgtbzgtLfgtIInLFxuICAgICAgICAgICAgeXk6ICclZCDgtLXgtbzgtLfgtIInLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LSw4LS+4LSk4LWN4LSw4LS/fOC0sOC0vuC0teC0v+C0suC1hnzgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNfOC0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gnzgtLDgtL7gtKTgtY3gtLDgtL8vaSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C0sOC0vuC0pOC1jeC0sOC0vycgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0teC0v+C0suC1hic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1sO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1vbmdvbGlhbiBbbW5dXG4vLyEgYXV0aG9yIDogSmF2a2hsYW50dWdzIE55YW1kb3JqIDogaHR0cHM6Ly9naXRodWIuY29tL2phdmtoYWFuajdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LQnIDogJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LTRi9C9JztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LXQutGD0L3QtCcgOiAnINGB0LXQutGD0L3QtNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LzQuNC90YPRgicgOiAnINC80LjQvdGD0YLRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGG0LDQsycgOiAnINGG0LDQs9C40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDTqdC006nRgCcgOiAnINOp0LTRgNC40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdCw0YAnIDogJyDRgdCw0YDRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC20LjQuycgOiAnINC20LjQu9C40LnQvScpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbW4nLCB7XG4gICAgICAgIG1vbnRoczogJ9Cd0Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0KXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAX9CT0YPRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CU06nRgNOp0LLQtNKv0LPRjdGN0YAg0YHQsNGAX9Ci0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JfRg9GA0LPQsNC00YPQs9Cw0LDRgCDRgdCw0YBf0JTQvtC70LTRg9Cz0LDQsNGAINGB0LDRgF/QndCw0LnQvNC00YPQs9Cw0LDRgCDRgdCw0YBf0JXRgdC00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CQ0YDQstCw0L0g0L3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LLQsNC9INGF0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnMSDRgdCw0YBfMiDRgdCw0YBfMyDRgdCw0YBfNCDRgdCw0YBfNSDRgdCw0YBfNiDRgdCw0YBfNyDRgdCw0YBfOCDRgdCw0YBfOSDRgdCw0YBfMTAg0YHQsNGAXzExINGB0LDRgF8xMiDRgdCw0YAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQndGP0Lxf0JTQsNCy0LDQsF/QnNGP0LPQvNCw0YBf0JvRhdCw0LPQstCwX9Cf0q/RgNGN0LJf0JHQsNCw0YHQsNC9X9CR0Y/QvNCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQndGP0Lxf0JTQsNCyX9Cc0Y/Qs1/Qm9GF0LBf0J/Sr9GAX9CR0LDQsF/QkdGP0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0J3Rj1/QlNCwX9Cc0Y9f0JvRhV/Qn9KvX9CR0LBf0JHRjycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQnLFxuICAgICAgICAgICAgTExMOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/SrtOofNKu0KUvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfSrtClJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku06gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku0KUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vTqNC906nTqdC006nRgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQnNCw0YDQs9Cw0LDRiF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JjRgNGN0YVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTqNGH0LjQs9C006nRgF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jQvdCz06nRgNGB06nQvV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINC00LDRgNCw0LAnLFxuICAgICAgICAgICAgcGFzdDogJyVzINOp0LzQvdOpJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9INOp0LTTqdGALyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINOp0LTTqdGAJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hcmF0aGkgW21yXVxuLy8hIGF1dGhvciA6IEhhcnNoYWQgS2FsZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYWxlaHZcbi8vISBhdXRob3IgOiBWaXZlayBBdGhhbHllIDogaHR0cHM6Ly9naXRodWIuY29tL3ZuYXRoYWx5ZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgpacnLFxuICAgICAgICAgICAgMjogJ+ClqCcsXG4gICAgICAgICAgICAzOiAn4KWpJyxcbiAgICAgICAgICAgIDQ6ICfgpaonLFxuICAgICAgICAgICAgNTogJ+ClqycsXG4gICAgICAgICAgICA2OiAn4KWsJyxcbiAgICAgICAgICAgIDc6ICfgpa0nLFxuICAgICAgICAgICAgODogJ+ClricsXG4gICAgICAgICAgICA5OiAn4KWvJyxcbiAgICAgICAgICAgIDA6ICfgpaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICAgICAn4KWmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lTXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSmJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSmJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSu4KS/4KSo4KS/4KSfJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSk4KS+4KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSk4KS+4KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSm4KS/4KS14KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KS14KSw4KWN4KS3JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOClh+CkleCkguCkpuCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkuOClh+CkleCkguCkpuCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkv+CkqOCkv+Ckn+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpOCkvuCkuOCkvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpOCkvuCkuOCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpuCkv+CkteCkuOCkvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuOCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkueCkv+CkqOCljeCkr+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOCljeCkr+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkteCksOCljeCkt+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkteCksOCljeCkt+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgbXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcicsIHtcbiAgICAgICAgbW9udGhzOiAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KS/4KSyX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSy4KWIX+CkkeCkl+CkuOCljeCkn1/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLBf4KSR4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkteCljeCkueClh+CkguCkrOCksF/gpKHgpL/gpLjgpYfgpILgpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkvuCkqOClhy5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJouX+Ckj+CkquCljeCksOCkvy5f4KSu4KWHLl/gpJzgpYLgpKguX+CknOClgeCksuCliC5f4KSR4KSXLl/gpLjgpKrgpY3gpJ/gpYfgpIIuX+CkkeCkleCljeCkn+Cliy5f4KSo4KWL4KS14KWN4KS54KWH4KSCLl/gpKHgpL/gpLjgpYfgpIIuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLPgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLNf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CkieCkpuCljeCkr+Ckvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CkleCkvuCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSu4KS+4KSX4KWA4KSyXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KSn4KWN4KSv4KWHJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+CkquClguCksOCljeCkteClgCcsXG4gICAgICAgICAgICBzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpKrgpLngpL7gpJ/gpYd84KS44KSV4KS+4KSz4KWAfOCkpuClgeCkquCkvuCksOClgHzgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYB84KSw4KS+4KSk4KWN4KSw4KWALyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSq4KS54KS+4KSf4KWHJyB8fCBtZXJpZGllbSA9PT0gJ+CkuOCkleCkvuCks+ClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpKbgpYHgpKrgpL7gpLDgpYAnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpY3gpLDgpYAnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA+PSAwICYmIGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKrgpLngpL7gpJ/gpYcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWB4KSq4KS+4KSw4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCljeCksOClgCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheSBbbXMtbXldXG4vLyEgbm90ZSA6IERFUFJFQ0FURUQsIHRoZSBjb3JyZWN0IG9uZSBpcyBbbXNdXG4vLyEgYXV0aG9yIDogV2VsZGFuIEphbWlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWxkYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtc015ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMtbXknLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtc015O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGF5IFttc11cbi8vISBhdXRob3IgOiBXZWxkYW4gSmFtaWxpIDogaHR0cHM6Ly9naXRodWIuY29tL3dlbGRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1zID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWx0ZXNlIChNYWx0YSkgW210XVxuLy8hIGF1dGhvciA6IEFsZXNzYW5kcm8gTWFydWNjaWEgOiBodHRwczovL2dpdGh1Yi5jb20vYWxlc21hXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtdCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFubmFyX0ZyYXJfTWFyenVfQXByaWxfTWVqanVfxKB1bmp1X0x1bGp1X0F3d2lzc3VfU2V0dGVtYnJ1X090dHVicnVfTm92ZW1icnVfRGnEi2VtYnJ1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GcmFfTWFyX0Fwcl9NZWpfxKB1bl9MdWxfQXd3X1NldF9PdHRfTm92X0RpxIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0lsLcSmYWRkX0l0LVRuZWpuX0l0LVRsaWV0YV9MLUVyYmfEp2FfSWwtxKZhbWlzX0lsLcSgaW1nxKdhX0lzLVNpYnQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ8SmYWRfVG5lX1RsaV9FcmJfxKZhbV/EoGltX1NpYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfEpmFfVG5fVGxfRXJfxKZhX8SgaV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJbGx1bSBmaWwtXUxUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbR8SnYWRhIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWwtYmllcmHEpyBmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGkgZ8SnYWRkYV0gW2ZpbC1dTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdm4oCZICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpbHUnLFxuICAgICAgICAgICAgczogJ2Z0aXQgc2Vrb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGknLFxuICAgICAgICAgICAgbTogJ21pbnV0YScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiAnc2llZ8SnYScsXG4gICAgICAgICAgICBoaDogJyVkIHNpZWfEp2F0JyxcbiAgICAgICAgICAgIGQ6ICfEoXVybmF0YScsXG4gICAgICAgICAgICBkZDogJyVkIMShcmFuZXQnLFxuICAgICAgICAgICAgTTogJ3hhaGFyJyxcbiAgICAgICAgICAgIE1NOiAnJWQgeGh1cicsXG4gICAgICAgICAgICB5OiAnc2VuYScsXG4gICAgICAgICAgICB5eTogJyVkIHNuaScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQnVybWVzZSBbbXldXG4vLyEgYXV0aG9yIDogU3F1YXIgdGVhbSwgbXlzcXVhci5jb21cbi8vISBhdXRob3IgOiBEYXZpZCBSb3NzZWxsYXQgOiBodHRwczovL2dpdGh1Yi5jb20vZ2hvbGFkclxuLy8hIGF1dGhvciA6IFRpbiBBdW5nIExpbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS90aGFueWF3emlubWluXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+GBgScsXG4gICAgICAgICAgICAyOiAn4YGCJyxcbiAgICAgICAgICAgIDM6ICfhgYMnLFxuICAgICAgICAgICAgNDogJ+GBhCcsXG4gICAgICAgICAgICA1OiAn4YGFJyxcbiAgICAgICAgICAgIDY6ICfhgYYnLFxuICAgICAgICAgICAgNzogJ+GBhycsXG4gICAgICAgICAgICA4OiAn4YGIJyxcbiAgICAgICAgICAgIDk6ICfhgYknLFxuICAgICAgICAgICAgMDogJ+GBgCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfhgYEnOiAnMScsXG4gICAgICAgICAgICAn4YGCJzogJzInLFxuICAgICAgICAgICAgJ+GBgyc6ICczJyxcbiAgICAgICAgICAgICfhgYQnOiAnNCcsXG4gICAgICAgICAgICAn4YGFJzogJzUnLFxuICAgICAgICAgICAgJ+GBhic6ICc2JyxcbiAgICAgICAgICAgICfhgYcnOiAnNycsXG4gICAgICAgICAgICAn4YGIJzogJzgnLFxuICAgICAgICAgICAgJ+GBiSc6ICc5JyxcbiAgICAgICAgICAgICfhgYAnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgbXkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdteScsIHtcbiAgICAgICAgbW9udGhzOiAn4YCH4YCU4YC64YCU4YCd4YCr4YCb4YCuX+GAluGAseGAluGAseGArOGAuuGAneGAq+GAm+GArl/hgJnhgJDhgLpf4YCn4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCH4YCw4YCc4YCt4YCv4YCE4YC6X+GAnuGAvOGAguGAr+GAkOGAul/hgIXhgIDhgLrhgJDhgIThgLrhgJjhgKxf4YCh4YCx4YCs4YCA4YC64YCQ4YCt4YCv4YCY4YCsX+GAlOGAreGAr+GAneGAhOGAuuGAmOGArF/hgJLhgK7hgIfhgIThgLrhgJjhgKwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4YCH4YCU4YC6X+GAluGAsV/hgJnhgJDhgLpf4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCc4YCt4YCv4YCE4YC6X+GAnuGAvF/hgIXhgIDhgLpf4YCh4YCx4YCs4YCA4YC6X+GAlOGAreGAr1/hgJLhgK4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn4YCQ4YCU4YCE4YC64YC54YCC4YCU4YC94YCxX+GAkOGAlOGAhOGAuuGAueGAnOGArF/hgKHhgIThgLrhgLnhgILhgKtf4YCX4YCv4YCS4YC54YCT4YCf4YCw4YC4X+GAgOGAvOGArOGAnuGAleGAkOGAseGAuF/hgJ7hgLHhgKzhgIDhgLzhgKxf4YCF4YCU4YCxJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcblxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4YCa4YCU4YCxLl0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhgJnhgJThgIDhgLrhgJbhgLzhgJThgLpdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GAmeGAlOGAsS7hgIBdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+GAleGAvOGAruGAuOGAgeGAsuGAt+GAnuGAseGArF0gZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+GAnOGArOGAmeGAiuGAuuGAtyAlcyDhgJnhgL7hgKwnLFxuICAgICAgICAgICAgcGFzdDogJ+GAnOGAveGAlOGAuuGAgeGAsuGAt+GAnuGAseGArCAlcyDhgIAnLFxuICAgICAgICAgICAgczogJ+GAheGAgOGAueGAgOGAlOGAui7hgKHhgJThgIrhgLrhgLjhgIThgJrhgLonLFxuICAgICAgICAgICAgc3M6ICclZCDhgIXhgIDhgLnhgIDhgJThgLfhgLonLFxuICAgICAgICAgICAgbTogJ+GAkOGAheGAuuGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBtbTogJyVkIOGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBoOiAn4YCQ4YCF4YC64YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGQ6ICfhgJDhgIXhgLrhgJvhgIDhgLonLFxuICAgICAgICAgICAgZGQ6ICclZCDhgJvhgIDhgLonLFxuICAgICAgICAgICAgTTogJ+GAkOGAheGAuuGAnCcsXG4gICAgICAgICAgICBNTTogJyVkIOGAnCcsXG4gICAgICAgICAgICB5OiAn4YCQ4YCF4YC64YCU4YC+4YCF4YC6JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4YCU4YC+4YCF4YC6JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GBgeGBguGBg+GBhOGBheGBhuGBh+GBiOGBieGBgF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG15O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5vcndlZ2lhbiBCb2ttw6VsIFtuYl1cbi8vISBhdXRob3JzIDogRXNwZW4gSG92bGFuZHNkYWwgOiBodHRwczovL2dpdGh1Yi5jb20vcmV4eGFyc1xuLy8hICAgICAgICAgICBTaWd1cmQgR2FydG1hbm4gOiBodHRwczovL2dpdGh1Yi5jb20vc2lndXJkZ2Fcbi8vISAgICAgICAgICAgU3RlcGhlbiBSYW10aHVuIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoZW5yYW10aHVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbmIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduYicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4Ll9tYS5fdGkuX29uLl90by5fZnIuX2zDuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzOiAnbm9lbiBzZWt1bmRlcicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG06ICdldHQgbWludXR0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaDogJ8OpbiB0aW1lJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGltZXInLFxuICAgICAgICAgICAgZDogJ8OpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlcicsXG4gICAgICAgICAgICB3OiAnw6luIHVrZScsXG4gICAgICAgICAgICB3dzogJyVkIHVrZXInLFxuICAgICAgICAgICAgTTogJ8OpbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5OiAnZXR0IMOlcicsXG4gICAgICAgICAgICB5eTogJyVkIMOlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTmVwYWxlc2UgW25lXVxuLy8hIGF1dGhvciA6IHN1dmFzaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXZhc2hcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KWnJyxcbiAgICAgICAgICAgIDI6ICfgpagnLFxuICAgICAgICAgICAgMzogJ+ClqScsXG4gICAgICAgICAgICA0OiAn4KWqJyxcbiAgICAgICAgICAgIDU6ICfgpasnLFxuICAgICAgICAgICAgNjogJ+ClrCcsXG4gICAgICAgICAgICA3OiAn4KWtJyxcbiAgICAgICAgICAgIDg6ICfgpa4nLFxuICAgICAgICAgICAgOTogJ+ClrycsXG4gICAgICAgICAgICAwOiAn4KWmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAgICAgJ+Clpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBuZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25lJywge1xuICAgICAgICBtb250aHM6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL/gpLJf4KSu4KSIX+CknOClgeCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS34KWN4KSfX+CkuOClh+CkquCljeCkn+Clh+CkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KSt4KWH4KSu4KWN4KSs4KSwX+CkoeCkv+CkuOClh+CkruCljeCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4KSc4KSoLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL8uX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSILl/gpIXgpJcuX+CkuOClh+CkquCljeCkny5f4KSF4KSV4KWN4KSf4KWLLl/gpKjgpYvgpK3gpYcuX+CkoeCkv+CkuOClhy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpIbgpIfgpKTgpKzgpL7gpLBf4KS44KWL4KSu4KSs4KS+4KSwX+CkruCkmeCljeCkl+CksuCkrOCkvuCksF/gpKzgpYHgpKfgpKzgpL7gpLBf4KSs4KS/4KS54KS/4KSs4KS+4KSwX+CktuClgeCkleCljeCksOCkrOCkvuCksF/gpLbgpKjgpL/gpKzgpL7gpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpIbgpIfgpKQuX+CkuOCli+Ckri5f4KSu4KSZ4KWN4KSX4KSyLl/gpKzgpYHgpKcuX+CkrOCkv+CkueCkvy5f4KS24KWB4KSV4KWN4KSwLl/gpLbgpKjgpL8uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+Ckhi5f4KS44KWLLl/gpK7gpIIuX+CkrOClgS5f4KSs4KS/Ll/gpLbgpYEuX+Ckti4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMVFM6ICdB4KSV4KWLIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOCkv3zgpKzgpL/gpLngpL7gpKh84KSm4KS/4KSJ4KSB4KS44KWLfOCkuOCkvuCkgeCknS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOCkvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkrOCkv+CkueCkvuCkqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpL/gpIngpIHgpLjgpYsnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkvuCkgeCknScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkrOCkv+CkueCkvuCkqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KS/4KSJ4KSB4KS44KWLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpIHgpJ0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCkvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpK3gpYvgpLLgpL9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+CkhuCkieCkgeCkpuCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CkueCkv+CknOCli10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSX4KSP4KSV4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPgpK7gpL4nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCkheCkl+CkvuCkoeCkvycsXG4gICAgICAgICAgICBzOiAn4KSV4KWH4KS54KWAIOCkleCljeCkt+CkoycsXG4gICAgICAgICAgICBzczogJyVkIOCkuOClh+CkleClh+Cko+CljeCkoScsXG4gICAgICAgICAgICBtOiAn4KSP4KSVIOCkruCkv+CkqOClh+CknycsXG4gICAgICAgICAgICBtbTogJyVkIOCkruCkv+CkqOClh+CknycsXG4gICAgICAgICAgICBoOiAn4KSP4KSVIOCkmOCko+CljeCkn+CkvicsXG4gICAgICAgICAgICBoaDogJyVkIOCkmOCko+CljeCkn+CkvicsXG4gICAgICAgICAgICBkOiAn4KSP4KSVIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBNOiAn4KSP4KSVIOCkruCkueCkv+CkqOCkvicsXG4gICAgICAgICAgICBNTTogJyVkIOCkruCkueCkv+CkqOCkvicsXG4gICAgICAgICAgICB5OiAn4KSP4KSVIOCkrOCksOCljeCktycsXG4gICAgICAgICAgICB5eTogJyVkIOCkrOCksOCljeCktycsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBEdXRjaCAoQmVsZ2l1bSkgW25sLWJlXVxuLy8hIGF1dGhvciA6IEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vam9yaXNyb2xpbmdcbi8vISBhdXRob3IgOiBKYWNvYiBNaWRkYWcgOiBodHRwczovL2dpdGh1Yi5jb20vbWlkZGFnalxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPVxuICAgICAgICAgICAgJ2phbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPVxuICAgICAgICAgICAgJ2phbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eamFuL2ksXG4gICAgICAgICAgICAvXmZlYi9pLFxuICAgICAgICAgICAgL14obWFhcnR8bXJ0XFwuPykkL2ksXG4gICAgICAgICAgICAvXmFwci9pLFxuICAgICAgICAgICAgL15tZWkkL2ksXG4gICAgICAgICAgICAvXmp1bltpLl0/JC9pLFxuICAgICAgICAgICAgL15qdWxbaS5dPyQvaSxcbiAgICAgICAgICAgIC9eYXVnL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15va3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRlYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmxCZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sLWJlJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQ6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU06ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHk6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBubEJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IER1dGNoIFtubF1cbi8vISBhdXRob3IgOiBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pvcmlzcm9saW5nXG4vLyEgYXV0aG9yIDogSmFjb2IgTWlkZGFnIDogaHR0cHM6Ly9naXRodWIuY29tL21pZGRhZ2pcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9eKG1hYXJ0fG1ydFxcLj8pJC9pLFxuICAgICAgICAgICAgL15hcHIvaSxcbiAgICAgICAgICAgIC9ebWVpJC9pLFxuICAgICAgICAgICAgL15qdW5baS5dPyQvaSxcbiAgICAgICAgICAgIC9eanVsW2kuXT8kL2ksXG4gICAgICAgICAgICAvXmF1Zy9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2t0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kZWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oamFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xtZWl8anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcblxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t2YW5kYWFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnaXN0ZXJlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHM6ICdlZW4gcGFhciBzZWNvbmRlbicsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG06ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGg6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGg6ICclZCB1dXInLFxuICAgICAgICAgICAgZDogJ8Opw6luIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIHc6ICfDqcOpbiB3ZWVrJyxcbiAgICAgICAgICAgIHd3OiAnJWQgd2VrZW4nLFxuICAgICAgICAgICAgTTogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5OiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eTogJyVkIGphYXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTnlub3JzayBbbm5dXG4vLyEgYXV0aG9ycyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodXdpbmRcbi8vISAgICAgICAgICAgU3RlcGhlbiBSYW10aHVuIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoZW5yYW10aHVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzdW5kYWdfbcOlbmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdS5fbcOlLl90eS5fb24uX3RvLl9mci5fbGF1Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzdV9tw6VfdHlfb25fdG9fZnJfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSSBkYWcga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0kgbW9yZ29uIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSSBnw6VyIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRsO4cmVnw6VhbmRlXSBkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGFuJyxcbiAgICAgICAgICAgIHM6ICdub2tyZSBzZWt1bmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmQnLFxuICAgICAgICAgICAgbTogJ2VpdCBtaW51dHQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHQnLFxuICAgICAgICAgICAgaDogJ2VpbiB0aW1lJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGltYXInLFxuICAgICAgICAgICAgZDogJ2VpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdhcicsXG4gICAgICAgICAgICB3OiAnZWkgdmVrZScsXG4gICAgICAgICAgICB3dzogJyVkIHZla2VyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeTogJ2VpdCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE9jY2l0YW4sIGxlbmdhZG9jaWFuIGRpYWxlY3RlIFtvYy1sbmNdXG4vLyEgYXV0aG9yIDogUXVlbnRpbiBQQUfDiFMgOiBodHRwczovL2dpdGh1Yi5jb20vUXVlbnR5MzFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBvY0xuYyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ29jLWxuYycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdnZW5pw6hyX2ZlYnJpw6hyX21hcsOnX2FicmlsX21haV9qdW5oX2p1bGhldF9hZ29zdF9zZXRlbWJyZV9vY3TDsmJyZV9ub3ZlbWJyZV9kZWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6IFwiZGUgZ2VuacOocl9kZSBmZWJyacOocl9kZSBtYXLDp19kJ2FicmlsX2RlIG1haV9kZSBqdW5oX2RlIGp1bGhldF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0w7JicmVfZGUgbm92ZW1icmVfZGUgZGVjZW1icmVcIi5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXHMpK01NTU0vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpX2p1bmhfanVsaC5fYWdvLl9zZXQuX29jdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltZW5nZV9kaWx1bnNfZGltYXJzX2RpbcOoY3Jlc19kaWrDsnVzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RnLl9kbC5fZG0uX2RjLl9kai5fZHYuX2RzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkZ19kbF9kbV9kY19kal9kdl9kcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t1w6hpIGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZGVtYW4gYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2nDqHIgYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtwYXNzYXQgYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IFwiZCdhcXXDrSAlc1wiLFxuICAgICAgICAgICAgcGFzdDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHM6ICd1bmFzIHNlZ29uZGFzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vnb25kYXMnLFxuICAgICAgICAgICAgbTogJ3VuYSBtaW51dGEnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGFzJyxcbiAgICAgICAgICAgIGg6ICd1bmEgb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAndW4gam9ybicsXG4gICAgICAgICAgICBkZDogJyVkIGpvcm5zJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0ocnxufHR8w6h8YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgID8gJ24nXG4gICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gNFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9jTG5jO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFB1bmphYmkgKEluZGlhKSBbcGEtaW5dXG4vLyEgYXV0aG9yIDogSGFycHJlZXQgU2luZ2ggOiBodHRwczovL2dpdGh1Yi5jb20vaGFycHJlZXRraGFsc2FndGJpdFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgqacnLFxuICAgICAgICAgICAgMjogJ+CpqCcsXG4gICAgICAgICAgICAzOiAn4KmpJyxcbiAgICAgICAgICAgIDQ6ICfgqaonLFxuICAgICAgICAgICAgNTogJ+CpqycsXG4gICAgICAgICAgICA2OiAn4KmsJyxcbiAgICAgICAgICAgIDc6ICfgqa0nLFxuICAgICAgICAgICAgODogJ+CpricsXG4gICAgICAgICAgICA5OiAn4KmvJyxcbiAgICAgICAgICAgIDA6ICfgqaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KmnJzogJzEnLFxuICAgICAgICAgICAgJ+CpqCc6ICcyJyxcbiAgICAgICAgICAgICfgqaknOiAnMycsXG4gICAgICAgICAgICAn4KmqJzogJzQnLFxuICAgICAgICAgICAgJ+Cpqyc6ICc1JyxcbiAgICAgICAgICAgICfgqawnOiAnNicsXG4gICAgICAgICAgICAn4KmtJzogJzcnLFxuICAgICAgICAgICAgJ+Cpric6ICc4JyxcbiAgICAgICAgICAgICfgqa8nOiAnOScsXG4gICAgICAgICAgICAn4KmmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIHBhSW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwYS1pbicsIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG1vbnRocyBuYW1lIGFzIHBlciBOYW5ha3NoYWhpIENhbGVuZGFyIGJ1dCB0aGV5IGFyZSBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtb250aHM6ICfgqJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOComl/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHgqLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXgqKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfgqJDgqKTgqLXgqL7gqLBf4Ki44KmL4Kiu4Ki14Ki+4KiwX+CoruCpsOCol+CosuCoteCovuCosF/gqKzgqYHgqKfgqLXgqL7gqLBf4Ki14KmA4Kiw4Ki14Ki+4KiwX+CouOCovOCpgeCpseColeCosOCoteCovuCosF/gqLjgqLzgqKjgqYDgqJrgqLDgqLXgqL7gqLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqIXgqJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgqIXgqJfgqLLgqL5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqKrgqL/gqJvgqLLgqYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Ki14Ki/4Kmx4KiaJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgqKrgqL/gqJvgqLLgqYcnLFxuICAgICAgICAgICAgczogJ+ColeCpgeConSDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgc3M6ICclZCDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbTogJ+Coh+ColSDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgaDogJ+Coh+CpseColSDgqJjgqbDgqJ/gqL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgqJjgqbDgqJ/gqYcnLFxuICAgICAgICAgICAgZDogJ+Coh+CpseColSDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgTTogJ+Coh+CpseColSDgqK7gqLngqYDgqKjgqL4nLFxuICAgICAgICAgICAgTU06ICclZCDgqK7gqLngqYDgqKjgqYcnLFxuICAgICAgICAgICAgeTogJ+Coh+CpseColSDgqLjgqL7gqLInLFxuICAgICAgICAgICAgeXk6ICclZCDgqLjgqL7gqLInLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kmn4Kmo4Kmp4Kmq4Kmr4Kms4Kmt4Kmu4Kmv4KmmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBQdW5qYWJpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmphYmkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqLDgqL7gqKR84Ki44Ki14KmH4KiwfOCopuCpgeCoquCoueCov+CosHzgqLjgqLzgqL7gqK4vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqLDgqL7gqKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLXgqYfgqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kim4KmB4Kiq4Ki54Ki/4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLzgqL7gqK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLXgqYfgqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CopuCpgeCoquCoueCov+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki84Ki+4KiuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGFJbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb2xpc2ggW3BsXVxuLy8hIGF1dGhvciA6IFJhZmFsIEhpcnN6IDogaHR0cHM6Ly9naXRodWIuY29tL2V2b0xcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNOb21pbmF0aXZlID1cbiAgICAgICAgICAgICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU3ViamVjdGl2ZSA9XG4gICAgICAgICAgICAnc3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ec3R5L2ksXG4gICAgICAgICAgICAvXmx1dC9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9ea3dpL2ksXG4gICAgICAgICAgICAvXm1hai9pLFxuICAgICAgICAgICAgL15jemUvaSxcbiAgICAgICAgICAgIC9ebGlwL2ksXG4gICAgICAgICAgICAvXnNpZS9pLFxuICAgICAgICAgICAgL153cnovaSxcbiAgICAgICAgICAgIC9ecGHFui9pLFxuICAgICAgICAgICAgL15saXMvaSxcbiAgICAgICAgICAgIC9eZ3J1L2ksXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gJSAxMCA8IDUgJiYgbiAlIDEwID4gMSAmJiB+fihuIC8gMTApICUgMTAgIT09IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0xJknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWludXR5JyA6ICdtaW51dCcpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZ29kemluYScgOiAnZ29kemluxJknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZ29kemlueScgOiAnZ29kemluJyk7XG4gICAgICAgICAgICBjYXNlICd3dyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICd0eWdvZG5pZScgOiAndHlnb2RuaScpO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWllc2nEhWNlJyA6ICdtaWVzacSZY3knKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2xhdGEnIDogJ2xhdCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHBsID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGwnLCB7XG4gICAgICAgIG1vbnRoczogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL0QgTU1NTS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1N1YmplY3RpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ3N0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25kel9wb25fd3RfxZtyX2N6d19wdF9zb2InLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTmRfUG5fV3RfxZpyX0N6X1B0X1NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0R6acWbIG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSnV0cm8gb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBuaWVkemllbMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXZSB3dG9yZWsgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgxZtyb2TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBzb2JvdMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV10gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1djem9yYWogb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBuaWVkemllbMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCeV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0ZW11JyxcbiAgICAgICAgICAgIHM6ICdraWxrYSBzZWt1bmQnLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJzEgZHppZcWEJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZG5pJyxcbiAgICAgICAgICAgIHc6ICd0eWR6aWXFhCcsXG4gICAgICAgICAgICB3dzogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21pZXNpxIVjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAncm9rJyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9ydHVndWVzZSAoQnJhemlsKSBbcHQtYnJdXG4vLyEgYXV0aG9yIDogQ2FpbyBSaWJlaXJvIFBlcmVpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2Fpby1yaWJlaXJvLXBlcmVpcmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwdEJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQtYnInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX3NlZ190ZXJfcXVhX3F1aV9zZXhfc8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb18ywqpfM8KqXzTCql81wqpfNsKqX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3BvdWNvcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIE06ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VtIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgaW52YWxpZERhdGU6ICdEYXRhIGludsOhbGlkYScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHRCcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb3J0dWd1ZXNlIFtwdF1cbi8vISBhdXRob3IgOiBKZWZmZXJzb24gOiBodHRwczovL2dpdGh1Yi5jb20vamFsZXg3OVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHB0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEb18ywqpfM8KqXzTCql81wqpfNsKqX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgdzogJ3VtYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VtIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHB0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFJvbWFuaWFuIFtyb11cbi8vISBhdXRob3IgOiBWbGFkIEd1cmRpZ2EgOiBodHRwczovL2dpdGh1Yi5jb20vZ3VyZGlnYVxuLy8hIGF1dGhvciA6IFZhbGVudGluIEFnYWNoaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdmFseVxuLy8hIGF1dGhvciA6IEVtYW51ZWwgQ2Vwb2kgOiBodHRwczovL2dpdGh1Yi5jb20vY2VwZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICAgICBzczogJ3NlY3VuZGUnLFxuICAgICAgICAgICAgICAgIG1tOiAnbWludXRlJyxcbiAgICAgICAgICAgICAgICBoaDogJ29yZScsXG4gICAgICAgICAgICAgICAgZGQ6ICd6aWxlJyxcbiAgICAgICAgICAgICAgICB3dzogJ3PEg3B0xINtw6JuaScsXG4gICAgICAgICAgICAgICAgTU06ICdsdW5pJyxcbiAgICAgICAgICAgICAgICB5eTogJ2FuaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyAnO1xuICAgICAgICBpZiAobnVtYmVyICUgMTAwID49IDIwIHx8IChudW1iZXIgPj0gMTAwICYmIG51bWJlciAlIDEwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9ICcgZGUgJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyICsgc2VwYXJhdG9yICsgZm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIHJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgncm8nLCB7XG4gICAgICAgIG1vbnRoczogJ2lhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2lhbi5fZmViLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2R1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3VyaV9qb2lfdmluZXJpX3PDom1ixIN0xIMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0R1X0x1X01hX01pX0pvX1ZpX1PDoicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2F6aSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttw6JpbmUgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVyaSBsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9zdGFdIGRkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3Blc3RlICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDrm4gdXJtxIMnLFxuICAgICAgICAgICAgczogJ2PDonRldmEgc2VjdW5kZScsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICdvIG9yxIMnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAnbyB6aScsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHc6ICdvIHPEg3B0xINtw6JuxIMnLFxuICAgICAgICAgICAgd3c6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAnbyBsdW7EgycsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFJ1c3NpYW4gW3J1XVxuLy8hIGF1dGhvciA6IFZpa3Rvcm1pbmF0b3IgOiBodHRwczovL2dpdGh1Yi5jb20vVmlrdG9ybWluYXRvclxuLy8hIGF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDog0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6IDogaHR0cHM6Ly9naXRodWIuY29tL3NvY2tldHBhaXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMVxuICAgICAgICAgICAgPyBmb3Jtc1swXVxuICAgICAgICAgICAgOiBudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgICA6IGZvcm1zWzJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzczogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtbTogd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInIDogJ9C80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoaDogJ9GH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyJyxcbiAgICAgICAgICAgIGRkOiAn0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5JyxcbiAgICAgICAgICAgIHd3OiAn0L3QtdC00LXQu9GPX9C90LXQtNC10LvQuF/QvdC10LTQtdC70YwnLFxuICAgICAgICAgICAgTU06ICfQvNC10YHRj9GGX9C80LXRgdGP0YbQsF/QvNC10YHRj9GG0LXQsicsXG4gICAgICAgICAgICB5eTogJ9Cz0L7QtF/Qs9C+0LTQsF/Qu9C10YInLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9C80LjQvdGD0YLQsCcgOiAn0LzQuNC90YPRgtGDJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgL17Rj9C90LIvaSxcbiAgICAgICAgL17RhNC10LIvaSxcbiAgICAgICAgL17QvNCw0YAvaSxcbiAgICAgICAgL17QsNC/0YAvaSxcbiAgICAgICAgL17QvNCwW9C50Y9dL2ksXG4gICAgICAgIC9e0LjRjtC9L2ksXG4gICAgICAgIC9e0LjRjtC7L2ksXG4gICAgICAgIC9e0LDQstCzL2ksXG4gICAgICAgIC9e0YHQtdC9L2ksXG4gICAgICAgIC9e0L7QutGCL2ksXG4gICAgICAgIC9e0L3QvtGPL2ksXG4gICAgICAgIC9e0LTQtdC6L2ksXG4gICAgXTtcblxuICAgIC8vIGh0dHA6Ly9uZXcuZ3JhbW90YS5ydS9zcHJhdmthL3J1bGVzLzEzOS1wcm9wIDogwqcgMTAzXG4gICAgLy8g0KHQvtC60YDQsNGJ0LXQvdC40Y8g0LzQtdGB0Y/RhtC10LI6IGh0dHA6Ly9uZXcuZ3JhbW90YS5ydS9zcHJhdmthL2J1cm8vc2VhcmNoLWFuc3dlcj9zPTI0MjYzN1xuICAgIC8vIENMRFIgZGF0YTogICAgICAgICAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9jbGRyL2NoYXJ0cy8yOC9zdW1tYXJ5L3J1Lmh0bWwjMTc1M1xuICAgIHZhciBydSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3J1Jywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiB7XG4gICAgICAgICAgICAvLyDQv9C+IENMRFIg0LjQvNC10L3QvdC+IFwi0LjRjtC7LlwiINC4IFwi0LjRjtC9LlwiLCDQvdC+INC60LDQutC+0Lkg0YHQvNGL0YHQuyDQvNC10L3Rj9GC0Ywg0LHRg9C60LLRgyDQvdCwINGC0L7Rh9C60YM/XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgNGCX9Cw0L/RgC5f0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5czoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHRg9Cx0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00YNf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0YNf0YHRg9Cx0LHQvtGC0YMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0JLQsl0gPyg/OtC/0YDQvtGI0LvRg9GOfNGB0LvQtdC00YPRjtGJ0YPRjnzRjdGC0YMpPyA/XSA/ZGRkZC8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Cy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgLy8g0L/QvtC70L3Ri9C1INC90LDQt9Cy0LDQvdC40Y8g0YEg0L/QsNC00LXQttCw0LzQuCwg0L/QviDRgtGA0Lgg0LHRg9C60LLRiywg0LTQu9GPINC90LXQutC+0YLQvtGA0YvRhSwg0L/QviA0INCx0YPQutCy0YssINGB0L7QutGA0LDRidC10L3QuNGPINGBINGC0L7Rh9C60L7QuSDQuCDQsdC10Lcg0YLQvtGH0LrQuFxuICAgICAgICBtb250aHNSZWdleDpcbiAgICAgICAgICAgIC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC60L7Qv9C40Y8g0L/RgNC10LTRi9C00YPRidC10LPQvlxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OlxuICAgICAgICAgICAgL14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cXC4/fNC80LDRgNGC0LA/fNC80LDRgFxcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVxcLj980LjRjtC7W9GM0Y9dfNC40Y7Qu1xcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1xcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XFwuP3zQvtC60YLRj9Cx0YBb0YzRj1180L7QutGCXFwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1xcLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulxcLj8pL2ksXG5cbiAgICAgICAgLy8g0L/QvtC70L3Ri9C1INC90LDQt9Cy0LDQvdC40Y8g0YEg0L/QsNC00LXQttCw0LzQuFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKNGP0L3QstCw0YBb0Y/RjF180YTQtdCy0YDQsNC7W9GP0YxdfNC80LDRgNGC0LA/fNCw0L/RgNC10Ltb0Y/RjF180LzQsFvRj9C5XXzQuNGO0L1b0Y/RjF180LjRjtC7W9GP0YxdfNCw0LLQs9GD0YHRgtCwP3zRgdC10L3RgtGP0LHRgFvRj9GMXXzQvtC60YLRj9Cx0YBb0Y/RjF180L3QvtGP0LHRgFvRj9GMXXzQtNC10LrQsNCx0YBb0Y/RjF0pL2ksXG5cbiAgICAgICAgLy8g0JLRi9GA0LDQttC10L3QuNC1LCDQutC+0YLQvtGA0L7QtSDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0LXRgiDRgtC+0LvRjNC60L4g0YHQvtC60YDQsNGJ0ZHQvdC90YvQvCDRhNC+0YDQvNCw0LxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKNGP0L3QslxcLnzRhNC10LLRgD9cXC580LzQsNGAW9GCLl180LDQv9GAXFwufNC80LBb0Y/QuV180LjRjtC9W9GM0Y8uXXzQuNGO0Ltb0YzRjy5dfNCw0LLQs1xcLnzRgdC10L3Rgj9cXC580L7QutGCXFwufNC90L7Rj9CxP1xcLnzQtNC10LpcXC4pL2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDQsy4sIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Ch0LXQs9C+0LTQvdGPLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQl9Cw0LLRgtGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LjQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70L7QtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9GH0LXRgNC10LcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC90LDQt9Cw0LQnLFxuICAgICAgICAgICAgczogJ9C90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LXQvdGMJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgdzogJ9C90LXQtNC10LvRjycsXG4gICAgICAgICAgICB3dzogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE06ICfQvNC10YHRj9GGJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ9Cz0L7QtCcsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9C4fNGD0YLRgNCwfNC00L3Rj3zQstC10YfQtdGA0LAvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GD0YLRgNCwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C10YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvnzRjykvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0Y8nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBydTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTaW5kaGkgW3NkXVxuLy8hIGF1dGhvciA6IE5hcmFpbiBTYWdhciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9uYXJhaW5zYWdhclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNmG2YjYsdmKJyxcbiAgICAgICAgICAgICfZgdmK2KjYsdmI2LHZiicsXG4gICAgICAgICAgICAn2YXYp9ix2oYnLFxuICAgICAgICAgICAgJ9in2b7YsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KbZiicsXG4gICAgICAgICAgICAn2KzZiNmGJyxcbiAgICAgICAgICAgICfYrNmI2YTYp9ih2ZAnLFxuICAgICAgICAgICAgJ9ii2q/Ys9m9JyxcbiAgICAgICAgICAgICfYs9mK2b7ZvdmF2KjYsScsXG4gICAgICAgICAgICAn2KLaqtm92YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YXYqNixJyxcbiAgICAgICAgICAgICfaitiz2YXYqNixJyxcbiAgICAgICAgXSxcbiAgICAgICAgZGF5cyA9IFsn2KLahtixJywgJ9iz2YjZhdixJywgJ9in2rHYp9ix2YgnLCAn2KfYsdio2LknLCAn2K7ZhdmK2LMnLCAn2KzZhdi5JywgJ9qH2Ybah9ixJ107XG5cbiAgICB2YXIgc2QgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZCcsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGF5cyxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i12KjYrXzYtNin2YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtdio2K0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnO1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9qEXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9iz2oDYp9q72YpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2Kfas9mK2YYg2YfZgdiq2Yog2KrZil0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vaqtin2YTZh9mHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1var9iy2LHZitmEINmH2YHYqtmKXSBkZGRkIFvYqtmKXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINm+2YjYoScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg2KfasycsXG4gICAgICAgICAgICBzOiAn2obZhtivINiz2YraqtmG2oonLFxuICAgICAgICAgICAgc3M6ICclZCDYs9mK2qrZhtqKJyxcbiAgICAgICAgICAgIG06ICfZh9qqINmF2YbZvScsXG4gICAgICAgICAgICBtbTogJyVkINmF2YbZvScsXG4gICAgICAgICAgICBoOiAn2YfaqiDaqtmE2KfaqicsXG4gICAgICAgICAgICBoaDogJyVkINqq2YTYp9qqJyxcbiAgICAgICAgICAgIGQ6ICfZh9qqINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDaj9mK2YbZh9mGJyxcbiAgICAgICAgICAgIE06ICfZh9qqINmF2YfZitmG2YgnLFxuICAgICAgICAgICAgTU06ICclZCDZhdmH2YrZhtinJyxcbiAgICAgICAgICAgIHk6ICfZh9qqINiz2KfZhCcsXG4gICAgICAgICAgICB5eTogJyVkINiz2KfZhCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5vcnRoZXJuIFNhbWkgW3NlXVxuLy8hIGF1dGhvcnMgOiBCw6VyZCBSb2xzdGFkIEhlbnJpa3NlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhbWVsbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHNlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2UnLCB7XG4gICAgICAgIG1vbnRoczogJ2/EkcSRYWphZ2Vtw6FubnVfZ3VvdnZhbcOhbm51X25qdWvEjWFtw6FubnVfY3VvxYtvbcOhbm51X21pZXNzZW3DoW5udV9nZWFzc2Vtw6FubnVfc3VvaWRuZW3DoW5udV9ib3JnZW3DoW5udV/EjWFrxI1hbcOhbm51X2dvbGdnb3Rtw6FubnVfc2vDoWJtYW3DoW5udV9qdW92bGFtw6FubnUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2/EkcSRal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfxI1ha8SNX2dvbGdfc2vDoWJfanVvdicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc290bmFiZWFpdmlfdnVvc3PDoXJnYV9tYcWLxYtlYsOhcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbMOhdnZhcmRhdCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc290bl92dW9zX21hxYtfZ2Fza19kdW9yX2JlYXJfbMOhdicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzX3ZfbV9nX2RfYl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gRC4gW2IuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW290bmUgdGldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaWh0dGluIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2lrdGUgdGldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW292ZGRpdF0gZGRkZCBbdGldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgZ2Vhxb5lcycsXG4gICAgICAgICAgICBwYXN0OiAnbWHFi2l0ICVzJyxcbiAgICAgICAgICAgIHM6ICdtb2FkZGUgc2VrdW5kZGF0JyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kZGF0JyxcbiAgICAgICAgICAgIG06ICdva3RhIG1pbnVodGEnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51aHRhdCcsXG4gICAgICAgICAgICBoOiAnb2t0YSBkaWltbXUnLFxuICAgICAgICAgICAgaGg6ICclZCBkaWltbXV0JyxcbiAgICAgICAgICAgIGQ6ICdva3RhIGJlYWl2aScsXG4gICAgICAgICAgICBkZDogJyVkIGJlYWl2dml0JyxcbiAgICAgICAgICAgIE06ICdva3RhIG3DoW5udScsXG4gICAgICAgICAgICBNTTogJyVkIG3DoW51dCcsXG4gICAgICAgICAgICB5OiAnb2t0YSBqYWhraScsXG4gICAgICAgICAgICB5eTogJyVkIGphZ2l0JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTaW5oYWxlc2UgW3NpXVxuLy8hIGF1dGhvciA6IFNhbXBhdGggU2l0aW5hbWFsdXdhIDogaHR0cHM6Ly9naXRodWIuY29tL3NhbXBhdGhzcmlzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICAvKmpzaGludCAtVzEwMCovXG4gICAgdmFyIHNpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2knLCB7XG4gICAgICAgIG1vbnRoczogJ+C2ouC2seC3gOC3j+C2u+C3kl/gtrTgt5ngtrbgtrvgt4Dgt4/gtrvgt5Jf4La44LeP4La74LeK4Lat4LeUX+C2heC2tOC3iuKAjeC2u+C3muC2veC3il/gtrjgt5Dgtrrgt5Jf4Lai4LeW4Lax4LeSX+C2ouC3luC2veC3kl/gtoXgtpzgt53gt4Pgt4rgtq3gt5Rf4LeD4LeQ4La04LeK4Lat4LeQ4La44LeK4La24La74LeKX+C2lOC2muC3iuC2reC3neC2tuC2u+C3il/gtrHgt5zgt4Dgt5Dgtrjgt4rgtrbgtrvgt4pf4Lav4LeZ4LeD4LeQ4La44LeK4La24La74LeKJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+C2ouC2sV/gtrTgt5ngtrZf4La44LeP4La74LeKX+C2heC2tOC3il/gtrjgt5Dgtrrgt5Jf4Lai4LeW4Lax4LeSX+C2ouC3luC2veC3kl/gtoXgtpzgt51f4LeD4LeQ4La04LeKX+C2lOC2muC3il/gtrHgt5zgt4Dgt5Bf4Lav4LeZ4LeD4LeQJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgtongtrvgt5Lgtq/gt49f4LeD4Laz4LeU4Lav4LePX+C2heC2n+C3hOC2u+C3lOC3gOC3j+C2r+C3j1/gtrbgtq/gt4/gtq/gt49f4La24LeK4oCN4La74LeE4LeD4LeK4La04Lat4LeS4Lax4LeK4Lav4LePX+C3g+C3kuC2muC3lOC2u+C3j+C2r+C3j1/gt4Pgt5ngtrHgt4Pgt5Tgtrvgt4/gtq/gt48nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C2ieC2u+C3kl/gt4PgtrPgt5Rf4LaF4LafX+C2tuC2r+C3j1/gtrbgt4rigI3gtrvgt4Rf4LeD4LeS4Laa4LeUX+C3g+C3meC2sScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgtolf4LeDX+C2hV/gtrZf4La24LeK4oCN4La7X+C3g+C3kl/gt4Pgt5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnYSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ2EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkgTU1NTSBEJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkgTU1NTSBELCBhIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkgTU1NTSBEIFvgt4Dgt5DgtrHgt5JdIGRkZGQsIGEgaDptbTpzcycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C2heC2r10gTFRb4LanXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C3hOC3meC2p10gTFRb4LanXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFRb4LanXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C2iuC2uuC3ml0gTFRb4LanXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgtrTgt4Pgt5Tgtpzgt5LgtrpdIGRkZGQgTFRb4LanXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4Laa4LeS4Lax4LeKJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C2muC2pyDgtrTgt5ngtrsnLFxuICAgICAgICAgICAgczogJ+C2reC2reC3iuC2tOC2uyDgtprgt5Lgt4Tgt5LgtrTgtronLFxuICAgICAgICAgICAgc3M6ICfgtq3gtq3gt4rgtrTgtrsgJWQnLFxuICAgICAgICAgICAgbTogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3lOC3gCcsXG4gICAgICAgICAgICBtbTogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3lCAlZCcsXG4gICAgICAgICAgICBoOiAn4La04LeQ4La6JyxcbiAgICAgICAgICAgIGhoOiAn4La04LeQ4La6ICVkJyxcbiAgICAgICAgICAgIGQ6ICfgtq/gt5LgtrHgtronLFxuICAgICAgICAgICAgZGQ6ICfgtq/gt5LgtrEgJWQnLFxuICAgICAgICAgICAgTTogJ+C2uOC3j+C3g+C2uicsXG4gICAgICAgICAgICBNTTogJ+C2uOC3j+C3gyAlZCcsXG4gICAgICAgICAgICB5OiAn4LeA4LeD4La7JyxcbiAgICAgICAgICAgIHl5OiAn4LeA4LeD4La7ICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9IOC3gOC3kOC2seC3ki8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIOC3gOC3kOC2seC3kic7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gtrTgt5ngtrsg4LeA4La74LeUfOC2tOC3g+C3iiDgt4Dgtrvgt5R84La04LeZLuC3gHzgtrQu4LeALi8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4La0LuC3gC4nIHx8IGlucHV0ID09PSAn4La04LeD4LeKIOC3gOC2u+C3lCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La0LuC3gC4nIDogJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrTgt5ku4LeALicgOiAn4La04LeZ4La7IOC3gOC2u+C3lCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2xvdmFrIFtza11cbi8vISBhdXRob3IgOiBNYXJ0aW4gTWlua2EgOiBodHRwczovL2dpdGh1Yi5jb20vazJzXG4vLyEgYmFzZWQgb24gd29yayBvZiBwZXRyYmVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRyYmVsYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9XG4gICAgICAgICAgICAnamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdqYW5fZmViX21hcl9hcHJfbcOhal9qw7puX2rDumxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gbiA+IDEgJiYgbiA8IDU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBmZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncMOhciBzZWvDum5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla8O6bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla3VuZGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbSc6IC8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW7DunRhJyA6IGlzRnV0dXJlID8gJ21pbsO6dHUnIDogJ21pbsO6dG91JztcbiAgICAgICAgICAgIGNhc2UgJ21tJzogLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWluw7p0eScgOiAnbWluw7p0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW7DunRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2gnOiAvLyBhbiBob3VyIC8gaW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IGlzRnV0dXJlID8gJ2hvZGludScgOiAnaG9kaW5vdSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6IC8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8gOSBob3VycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kw61uJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZCc6IC8vIGEgZGF5IC8gaW4gYSBkYXkgLyBhIGRheSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkZcWIJyA6ICdkxYhvbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2RuaScgOiAnZG7DrScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZMWIYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdNJzogLy8gYSBtb250aCAvIGluIGEgbW9udGggLyBhIG1vbnRoIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2lhYycgOiAnbWVzaWFjb20nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtZXNpYWNlJyA6ICdtZXNpYWNvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWVzaWFjbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3knOiAvLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHllYXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncm9rJyA6ICdyb2tvbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ3Jva292Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdyb2ttaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2snLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkZcS+YV9wb25kZWxva191dG9yb2tfc3RyZWRhX8WhdHZydG9rX3BpYXRva19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkbmVzIG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbemFqdHJhIG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgbmVkZcS+dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHN0cmVkdSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZvIMWhdHZydG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBwaWF0b2sgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhIG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogbmVkZcS+dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IHN0cmVkdSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IHNvYm90dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNsb3ZlbmlhbiBbc2xdXG4vLyEgYXV0aG9yIDogUm9iZXJ0IFNlZG92xaFlayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zZWRvdnNla1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgICAgID8gJ25la2FqIHNla3VuZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnbmVrYWogc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3Nla3VuZG8nIDogJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGknIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2VrdW5kZScgOiAnc2VrdW5kYWgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSBtaW51dGEnIDogJ2VubyBtaW51dG8nO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6ICdtaW51dG8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0aScgOiAnbWludXRhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGUnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dCcgOiAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIHVyYScgOiAnZW5vIHVybyc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICd1cmEnIDogJ3Vybyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJpJyA6ICd1cmFtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyZScgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyJyA6ICd1cmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbiBkYW4nIDogJ2VuaW0gZG5lbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkYW4nIDogJ2RuZW0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldm9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZG5pJyA6ICdkbmV2aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbiBtZXNlYycgOiAnZW5pbSBtZXNlY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjJyA6ICdtZXNlY2VtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2EnIDogJ21lc2VjZW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNlJyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZXYnIDogJ21lc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbm8gbGV0bycgOiAnZW5pbSBsZXRvbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRvJyA6ICdsZXRvbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0aScgOiAnbGV0b21hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0YScgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0JyA6ICdsZXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NsJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGVsamFfcG9uZWRlbGpla190b3Jla19zcmVkYV/EjWV0cnRla19wZXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb190b19zcl/EjWVfcGVfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC4gTU0uIFlZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuZXMgb2JdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbanV0cmkgb2JdIExUJyxcblxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW25lZGVsam9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbb2JdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmFqIG9iXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtzb2JvdG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuamldIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnxI1leiAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJlZCAlcycsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2w7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQWxiYW5pYW4gW3NxXVxuLy8hIGF1dGhvciA6IEZsYWvDq3JpbSBJc21hbmkgOiBodHRwczovL2dpdGh1Yi5jb20vZmxha2VyaW1pXG4vLyEgYXV0aG9yIDogTWVuZWxpb24gRWxlbnPDumxlIDogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBPZXJkIEN1a2FsbGEgOiBodHRwczovL2dpdGh1Yi5jb20vb2VyZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHNxID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3EnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbmFyX1Noa3VydF9NYXJzX1ByaWxsX01hal9RZXJzaG9yX0tvcnJpa19HdXNodF9TaHRhdG9yX1RldG9yX07Dq250b3JfRGhqZXRvcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fU2hrX01hcl9QcmlfTWFqX1Flcl9Lb3JfR3VzX1NodF9UZXRfTsOrbl9EaGonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnRSBEaWVsX0UgSMOrbsOrX0UgTWFydMOrX0UgTcOrcmt1csOrX0UgRW5qdGVfRSBQcmVtdGVfRSBTaHR1bsOrJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRGllX0jDq25fTWFyX03Dq3JfRW5qX1ByZV9TaHQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnRF9IX01hX03Dq19FX1BfU2gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1BEfE1ELyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDApID09PSAnTSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VycyA8IDEyID8gJ1BEJyA6ICdNRCc7XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbU290IG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tOZXPDq3IgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW27Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEamUgbsOrXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Uga2FsdWFyIG7Dq10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICduw6sgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIG3DqyBwYXLDqycsXG4gICAgICAgICAgICBzOiAnZGlzYSBzZWtvbmRhJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kYScsXG4gICAgICAgICAgICBtOiAnbmrDqyBtaW51dMOrJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRhJyxcbiAgICAgICAgICAgIGg6ICduasOrIG9yw6snLFxuICAgICAgICAgICAgaGg6ICclZCBvcsOrJyxcbiAgICAgICAgICAgIGQ6ICduasOrIGRpdMOrJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGl0w6snLFxuICAgICAgICAgICAgTTogJ25qw6sgbXVhaicsXG4gICAgICAgICAgICBNTTogJyVkIG11YWonLFxuICAgICAgICAgICAgeTogJ25qw6sgdml0JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdml0ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2VyYmlhbiBDeXJpbGxpYyBbc3ItY3lybF1cbi8vISBhdXRob3IgOiBNaWxhbiBKYW5hxI1rb3ZpxIc8bWlsYW5qYW5hY2tvdmljQGdtYWlsLmNvbT4gOiBodHRwczovL2dpdGh1Yi5jb20vbWlsYW4talxuLy8hIGF1dGhvciA6IFN0ZWZhbiBDcm5qYWtvdmnEhyA8c3RlZmFuQGhvdG1haWwucnM+IDogaHR0cHM6Ly9naXRodWIuY29tL2Nybmpha292aWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ9GB0LXQutGD0L3QtNCwJywgJ9GB0LXQutGD0L3QtNC1JywgJ9GB0LXQutGD0L3QtNC4J10sXG4gICAgICAgICAgICBtOiBbJ9GY0LXQtNCw0L0g0LzQuNC90YPRgicsICfRmNC10LTQvdC+0LMg0LzQuNC90YPRgtCwJ10sXG4gICAgICAgICAgICBtbTogWyfQvNC40L3Rg9GCJywgJ9C80LjQvdGD0YLQsCcsICfQvNC40L3Rg9GC0LAnXSxcbiAgICAgICAgICAgIGg6IFsn0ZjQtdC00LDQvSDRgdCw0YInLCAn0ZjQtdC00L3QvtCzINGB0LDRgtCwJ10sXG4gICAgICAgICAgICBoaDogWyfRgdCw0YInLCAn0YHQsNGC0LAnLCAn0YHQsNGC0LgnXSxcbiAgICAgICAgICAgIGQ6IFsn0ZjQtdC00LDQvSDQtNCw0L0nLCAn0ZjQtdC00L3QvtCzINC00LDQvdCwJ10sXG4gICAgICAgICAgICBkZDogWyfQtNCw0L0nLCAn0LTQsNC90LAnLCAn0LTQsNC90LAnXSxcbiAgICAgICAgICAgIE06IFsn0ZjQtdC00LDQvSDQvNC10YHQtdGGJywgJ9GY0LXQtNC90L7QsyDQvNC10YHQtdGG0LAnXSxcbiAgICAgICAgICAgIE1NOiBbJ9C80LXRgdC10YYnLCAn0LzQtdGB0LXRhtCwJywgJ9C80LXRgdC10YbQuCddLFxuICAgICAgICAgICAgeTogWyfRmNC10LTQvdGDINCz0L7QtNC40L3RgycsICfRmNC10LTQvdC1INCz0L7QtNC40L3QtSddLFxuICAgICAgICAgICAgeXk6IFsn0LPQvtC00LjQvdGDJywgJ9Cz0L7QtNC40L3QtScsICfQs9C+0LTQuNC90LAnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwID49IDEgJiZcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA8PSA0ICYmXG4gICAgICAgICAgICAgICAgKG51bWJlciAlIDEwMCA8IDEwIHx8IG51bWJlciAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdvcmRLZXlbMl07XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV0sXG4gICAgICAgICAgICAgICAgd29yZDtcblxuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBOb21pbmF0aXZcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAneScgJiYgd2l0aG91dFN1ZmZpeCkgcmV0dXJuICfRmNC10LTQvdCwINCz0L7QtNC40L3QsCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd29yZCA9IHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgLy8gTm9taW5hdGl2XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAneXknICYmIHdpdGhvdXRTdWZmaXggJiYgd29yZCA9PT0gJ9Cz0L7QtNC40L3RgycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDQs9C+0LTQuNC90LAnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgd29yZDtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgdmFyIHNyQ3lybCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyLWN5cmwnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQvNCx0LDRgF/QtNC10YbQtdC80LHQsNGAJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfRmNCw0L0uX9GE0LXQsS5f0LzQsNGALl/QsNC/0YAuX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQsy5f0YHQtdC/Ll/QvtC60YIuX9C90L7Qsi5f0LTQtdGGLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQvdC10LTQtdGZ0LBf0L/QvtC90LXQtNC10ZnQsNC6X9GD0YLQvtGA0LDQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtCw0Lpf0L/QtdGC0LDQul/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC10LQuX9C/0L7QvS5f0YPRgtC+Ll/RgdGA0LUuX9GH0LXRgi5f0L/QtdGCLl/RgdGD0LEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LVf0L/Qvl/Rg9GCX9GB0YBf0YfQtV/Qv9C1X9GB0YMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdELiBNLiBZWVlZLicsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWS4nLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkuIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQtNCw0L3QsNGBINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9GB0YPRgtGA0LAg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGA0LXQtNGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGD0LHQvtGC0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gZGRkZCBb0YNdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1vRmNGD0YfQtSDRg10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9C90LXQtNC10ZnQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C+0L3QtdC00LXRmdC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGA0LXQtNC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GH0LXRgtCy0YDRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRg9Cx0L7RgtC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQv9GA0LUgJXMnLFxuICAgICAgICAgICAgczogJ9C90LXQutC+0LvQuNC60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzckN5cmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2VyYmlhbiBbc3JdXG4vLyEgYXV0aG9yIDogTWlsYW4gSmFuYcSNa292acSHPG1pbGFuamFuYWNrb3ZpY0BnbWFpbC5jb20+IDogaHR0cHM6Ly9naXRodWIuY29tL21pbGFuLWpcbi8vISBhdXRob3IgOiBTdGVmYW4gQ3JuamFrb3ZpxIcgPHN0ZWZhbkBob3RtYWlsLnJzPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jcm5qYWtvdmljXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWydzZWt1bmRhJywgJ3Nla3VuZGUnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRub2cgbWludXRhJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGEnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZDogWydqZWRhbiBkYW4nLCAnamVkbm9nIGRhbmEnXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE06IFsnamVkYW4gbWVzZWMnLCAnamVkbm9nIG1lc2VjYSddLFxuICAgICAgICAgICAgTU06IFsnbWVzZWMnLCAnbWVzZWNhJywgJ21lc2VjaSddLFxuICAgICAgICAgICAgeTogWydqZWRudSBnb2RpbnUnLCAnamVkbmUgZ29kaW5lJ10sXG4gICAgICAgICAgICB5eTogWydnb2RpbnUnLCAnZ29kaW5lJywgJ2dvZGluYSddLFxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAgPj0gMSAmJlxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwIDw9IDQgJiZcbiAgICAgICAgICAgICAgICAobnVtYmVyICUgMTAwIDwgMTAgfHwgbnVtYmVyICUgMTAwID49IDIwKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd29yZEtleVsyXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XSxcbiAgICAgICAgICAgICAgICB3b3JkO1xuXG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd5JyAmJiB3aXRob3V0U3VmZml4KSByZXR1cm4gJ2plZG5hIGdvZGluYSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd29yZCA9IHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgLy8gTm9taW5hdGl2XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAneXknICYmIHdpdGhvdXRTdWZmaXggJiYgd29yZCA9PT0gJ2dvZGludScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyBnb2RpbmEnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgd29yZDtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgdmFyIHNyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3InLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqYWtfdXRvcmFrX3NyZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmUuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdELiBNLiBZWVlZLicsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWS4nLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkuIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRlbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JlZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGVsamVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzcmVkZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BldGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByZSAlcycsXG4gICAgICAgICAgICBzOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IHNpU3dhdGkgW3NzXVxuLy8hIGF1dGhvciA6IE5pY29sYWkgRGF2aWVzPG1haWxAbmljb2xhaS5pbz4gOiBodHRwczovL2dpdGh1Yi5jb20vbmljb2xhaWRhdmllc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3MnLCB7XG4gICAgICAgIG1vbnRoczogXCJCaGltYmlkdndhbmVfSW5kbG92YW5hX0luZGxvdidsZW5raHVsdV9NYWJhc2FfSW5raHdla2h3ZXRpX0luaGxhYmFfS2hvbHdhbmVfSW5nY2lfSW55b25pX0ltcGhhbGFfTHdldGlfSW5nb25nb25pXCIuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdCaGlfSW5hX0ludV9NYWJfSW5rX0luaF9LaG9fSWdjX0lueV9JbXBfTHdlX0lnbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnTGlzb250Zm9fVW1zb21idWx1a29fTGVzaWJpbGlfTGVzaXRzYXRmdV9MZXNpbmVfTGVzaWhsYW51X1VtZ2NpYmVsbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTGlzX1VtYl9Mc2JfTGVzX0xzaV9Mc2hfVW1nJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0xpX1VzX0xiX0x0X0xzX0xoX1VnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW05hbXVobGEgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0t1c2FzYSBuZ2FdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbmdhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0l0b2xvIG5nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsZWxpcGhlbGlsZV0gW25nYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICduZ2EgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3dlbnRla2EgbmdhICVzJyxcbiAgICAgICAgICAgIHM6ICdlbWl6dXp3YW5hIGxvbWNhbmUnLFxuICAgICAgICAgICAgc3M6ICclZCBtenV6d2FuYScsXG4gICAgICAgICAgICBtOiAndW16dXp1JyxcbiAgICAgICAgICAgIG1tOiAnJWQgZW1penV6dScsXG4gICAgICAgICAgICBoOiAnbGlob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgZW1haG9yYScsXG4gICAgICAgICAgICBkOiAnbGlsYW5nYScsXG4gICAgICAgICAgICBkZDogJyVkIGVtYWxhbmdhJyxcbiAgICAgICAgICAgIE06ICdpbnlhbmdhJyxcbiAgICAgICAgICAgIE1NOiAnJWQgdGlueWFuZ2EnLFxuICAgICAgICAgICAgeTogJ3Vtbnlha2EnLFxuICAgICAgICAgICAgeXk6ICclZCBpbWlueWFrYScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9la3VzZW5pfGVtaW5pfGVudHNhbWJhbWF8ZWJ1c3VrdS8sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdla3VzZW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW1pbmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbnRzYW1iYW1hJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlYnVzdWt1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZWt1c2VuaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdlbWluaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW50c2FtYmFtYScgfHwgbWVyaWRpZW0gPT09ICdlYnVzdWt1Jykge1xuICAgICAgICAgICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAnJWQnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3M7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3dlZGlzaCBbc3ZdXG4vLyEgYXV0aG9yIDogSmVucyBBbG0gOiBodHRwczovL2dpdGh1Yi5jb20vdWxtdXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3N2Jywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ3PDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzw7ZuX23DpW5fdGlzX29uc190b3JfZnJlX2zDtnInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O2X23DpV90aV9vbl90b19mcl9sw7YnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkIEQgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJZGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ltb3Jnb25dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWfDpXJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW1DDpV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tJXSBkZGRkW3NdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2bDtnIgJXMgc2VkYW4nLFxuICAgICAgICAgICAgczogJ27DpWdyYSBzZWt1bmRlcicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG06ICdlbiBtaW51dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXInLFxuICAgICAgICAgICAgaDogJ2VuIHRpbW1lJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGltbWFyJyxcbiAgICAgICAgICAgIGQ6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdhcicsXG4gICAgICAgICAgICBNOiAnZW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeTogJ2V0dCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oXFw6ZXxcXDphKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJzplJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJzphJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc6YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzplJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnOmUnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFN3YWhpbGkgW3N3XVxuLy8hIGF1dGhvciA6IEZhaGFkIEthc3NpbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWRzZWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3N3Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY2hpX0FwcmlsaV9NZWlfSnVuaV9KdWxhaV9BZ29zdGlfU2VwdGVtYmFfT2t0b2JhX05vdmVtYmFfRGVzZW1iYScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2knLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0pwbF9KdGF0X0pubmVfSnRhbl9BbGhfSWptX0ptb3MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnSjJfSjNfSjRfSjVfQWxfSWpfSjEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaGg6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2xlbyBzYWFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdba2VzaG8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1t3aWtpIGlqYXlvXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2phbmFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3dpa2kgaWxpeW9waXRhXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGJhYWRheWUnLFxuICAgICAgICAgICAgcGFzdDogJ3Rva2VhICVzJyxcbiAgICAgICAgICAgIHM6ICdoaXZpIHB1bmRlJyxcbiAgICAgICAgICAgIHNzOiAnc2VrdW5kZSAlZCcsXG4gICAgICAgICAgICBtOiAnZGFraWthIG1vamEnLFxuICAgICAgICAgICAgbW06ICdkYWtpa2EgJWQnLFxuICAgICAgICAgICAgaDogJ3NhYSBsaW1vamEnLFxuICAgICAgICAgICAgaGg6ICdtYXNhYSAlZCcsXG4gICAgICAgICAgICBkOiAnc2lrdSBtb2phJyxcbiAgICAgICAgICAgIGRkOiAnc2lrdSAlZCcsXG4gICAgICAgICAgICBNOiAnbXdlemkgbW1vamEnLFxuICAgICAgICAgICAgTU06ICdtaWV6aSAlZCcsXG4gICAgICAgICAgICB5OiAnbXdha2EgbW1vamEnLFxuICAgICAgICAgICAgeXk6ICdtaWFrYSAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYW1pbCBbdGFdXG4vLyEgYXV0aG9yIDogQXJqdW5rdW1hciBLcmlzaG5hbW9vcnRoeSA6IGh0dHBzOi8vZ2l0aHViLmNvbS90azEyMDQwNFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgr6cnLFxuICAgICAgICAgICAgMjogJ+CvqCcsXG4gICAgICAgICAgICAzOiAn4K+pJyxcbiAgICAgICAgICAgIDQ6ICfgr6onLFxuICAgICAgICAgICAgNTogJ+CvqycsXG4gICAgICAgICAgICA2OiAn4K+sJyxcbiAgICAgICAgICAgIDc6ICfgr60nLFxuICAgICAgICAgICAgODogJ+CvricsXG4gICAgICAgICAgICA5OiAn4K+vJyxcbiAgICAgICAgICAgIDA6ICfgr6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4K+nJzogJzEnLFxuICAgICAgICAgICAgJ+CvqCc6ICcyJyxcbiAgICAgICAgICAgICfgr6knOiAnMycsXG4gICAgICAgICAgICAn4K+qJzogJzQnLFxuICAgICAgICAgICAgJ+Cvqyc6ICc1JyxcbiAgICAgICAgICAgICfgr6wnOiAnNicsXG4gICAgICAgICAgICAn4K+tJzogJzcnLFxuICAgICAgICAgICAgJ+Cvric6ICc4JyxcbiAgICAgICAgICAgICfgr68nOiAnOScsXG4gICAgICAgICAgICAn4K+mJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIHRhID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGEnLCB7XG4gICAgICAgIG1vbnRoczogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgrpzgrqngrrXgrrDgrr9f4K6q4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/grqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLgr4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCvjeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K614K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgrp7grr7grq/grr/grrHgr43grrHgr4HgrpXgr43grpXgrr/grrTgrq7gr4hf4K6k4K6/4K6Z4K+N4K6V4K6f4K+N4K6V4K6/4K604K6u4K+IX+CumuCvhuCuteCvjeCuteCuvuCur+CvjeCuleCuv+CutOCuruCviF/grqrgr4HgrqTgrqngr43grpXgrr/grrTgrq7gr4hf4K614K6/4K6v4K6+4K604K6V4K+N4K6V4K6/4K604K6u4K+IX+CuteCvhuCus+CvjeCus+Cuv+CuleCvjeCuleCuv+CutOCuruCviF/grprgrqngrr/grpXgr43grpXgrr/grrTgrq7gr4gnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CunuCuvuCur+Cuv+CuseCvgV/grqTgrr/grpngr43grpXgrrPgr41f4K6a4K+G4K614K+N4K614K6+4K6v4K+NX+CuquCvgeCupOCuqeCvjV/grrXgrr/grq/grr7grrTgrqngr41f4K614K+G4K6z4K+N4K6z4K6/X+CumuCuqeCuvycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgrp7grr5f4K6k4K6/X+CumuCvhl/grqrgr4Ff4K614K6/X+CuteCvhl/grponLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgrofgrqngr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4K6o4K6+4K6z4K+IXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4K6o4K+H4K6x4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgrpXgrp/grqjgr43grqQg4K614K6+4K6w4K6u4K+NXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCuh+CusuCvjScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4K6u4K+B4K6p4K+NJyxcbiAgICAgICAgICAgIHM6ICfgrpLgrrDgr4Eg4K6a4K6/4K6yIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBzczogJyVkIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBtOiAn4K6S4K6w4K+BIOCuqOCuv+CuruCuv+Cun+CuruCvjScsXG4gICAgICAgICAgICBtbTogJyVkIOCuqOCuv+CuruCuv+Cun+CumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICBoOiAn4K6S4K6w4K+BIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLFxuICAgICAgICAgICAgaGg6ICclZCDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGQ6ICfgrpLgrrDgr4Eg4K6o4K6+4K6z4K+NJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4K6o4K6+4K6f4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIE06ICfgrpLgrrDgr4Eg4K6u4K6+4K6k4K6u4K+NJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4K6u4K6+4K6k4K6Z4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIHk6ICfgrpLgrrDgr4Eg4K614K6w4K+B4K6f4K6u4K+NJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4K6G4K6j4K+N4K6f4K+B4K6V4K6z4K+NJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ94K614K6k4K+BLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgrrXgrqTgr4EnO1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4K+n4K+o4K+p4K+q4K+r4K+s4K+t4K+u4K+v4K+mXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyByZWZlciBodHRwOi8vdGEud2lraXBlZGlhLm9yZy9zLzFlcjFcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+Cur+CuvuCuruCuruCvjXzgrrXgr4jgrpXgrrHgr4h84K6V4K6+4K6y4K+IfOCuqOCuo+CvjeCuquCuleCusuCvjXzgro7grrHgr43grqrgrr7grp/gr4F84K6u4K6+4K6y4K+ILyxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K614K+I4K6V4K6x4K+IJzsgLy8g4K614K+I4K6V4K6x4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuleCuvuCusuCviCc7IC8vIOCuleCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrqjgrqPgr43grqrgrpXgrrLgr40nOyAvLyDgrqjgrqPgr43grqrgrpXgrrLgr41cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6O4K6x4K+N4K6q4K6+4K6f4K+BJzsgLy8g4K6O4K6x4K+N4K6q4K6+4K6f4K+BXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuruCuvuCusuCviCc7IC8vIOCuruCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgrq/grr7grq7grq7gr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrrXgr4jgrpXgrrHgr4gnIHx8IG1lcmlkaWVtID09PSAn4K6V4K6+4K6y4K+IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuqOCuo+CvjeCuquCuleCusuCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0YTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUZWx1Z3UgW3RlXVxuLy8hIGF1dGhvciA6IEtyaXNobmEgQ2hhaXRhbnlhIFRob3RhIDogaHR0cHM6Ly9naXRodWIuY29tL2tjdGhvdGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0ZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RlJywge1xuICAgICAgICBtb250aHM6ICfgsJzgsKjgsLXgsLDgsL9f4LCr4LC/4LCs4LGN4LCw4LC14LCw4LC/X+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL/gsLLgsY1f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCX4LC44LGN4LCf4LGBX+CwuOCxhuCwquCxjeCwn+CxhuCwguCwrOCwsOCxjV/gsIXgsJXgsY3gsJ/gsYvgsKzgsLDgsY1f4LCo4LC14LCC4LCs4LCw4LGNX+CwoeCwv+CwuOCxhuCwguCwrOCwsOCxjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4LCc4LCoLl/gsKvgsL/gsKzgsY3gsLAuX+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL8uX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGB4LCy4LGIX+CwhuCwly5f4LC44LGG4LCq4LGNLl/gsIXgsJXgsY3gsJ/gsYsuX+CwqOCwtS5f4LCh4LC/4LC44LGGLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgsIbgsKbgsL/gsLXgsL7gsLDgsIJf4LC44LGL4LCu4LC14LC+4LCw4LCCX+CwruCwguCwl+Cws+CwteCwvuCwsOCwgl/gsKzgsYHgsKfgsLXgsL7gsLDgsIJf4LCX4LGB4LCw4LGB4LC14LC+4LCw4LCCX+CwtuCxgeCwleCxjeCwsOCwteCwvuCwsOCwgl/gsLbgsKjgsL/gsLXgsL7gsLDgsIInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CwhuCwpuCwv1/gsLjgsYvgsK5f4LCu4LCC4LCX4LCzX+CwrOCxgeCwp1/gsJfgsYHgsLDgsYFf4LC24LGB4LCV4LGN4LCwX+CwtuCwqOCwvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgsIZf4LC44LGLX+CwruCwgl/gsKzgsYFf4LCX4LGBX+CwtuCxgV/gsLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4LCo4LGH4LCh4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CwsOCxh+CwquCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CwqOCwv+CwqOCxjeCwqF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4LCX4LCkXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCwsuCxiycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4LCV4LGN4LCw4LC/4LCk4LCCJyxcbiAgICAgICAgICAgIHM6ICfgsJXgsYrgsKjgsY3gsKjgsL8g4LCV4LGN4LC34LCj4LC+4LCy4LGBJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4LC44LGG4LCV4LCo4LGN4LCy4LGBJyxcbiAgICAgICAgICAgIG06ICfgsJLgsJUg4LCo4LC/4LCu4LC/4LC34LCCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LCo4LC/4LCu4LC/4LC34LC+4LCy4LGBJyxcbiAgICAgICAgICAgIGg6ICfgsJLgsJUg4LCX4LCC4LCfJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LCX4LCC4LCf4LCy4LGBJyxcbiAgICAgICAgICAgIGQ6ICfgsJLgsJUg4LCw4LGL4LCc4LGBJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4LCw4LGL4LCc4LGB4LCy4LGBJyxcbiAgICAgICAgICAgIE06ICfgsJLgsJUg4LCo4LGG4LCyJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LCo4LGG4LCy4LCy4LGBJyxcbiAgICAgICAgICAgIHk6ICfgsJLgsJUg4LC44LCC4LC14LCk4LGN4LC44LCw4LCCJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4LC44LCC4LC14LCk4LGN4LC44LCw4LC+4LCy4LGBJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ94LC1LyxcbiAgICAgICAgb3JkaW5hbDogJyVk4LC1JyxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CwsOCwvuCwpOCxjeCwsOCwv3zgsIngsKbgsK/gsIJ84LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCfOCwuOCwvuCwr+CwguCwpOCxjeCwsOCwgi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CwsOCwvuCwpOCxjeCwsOCwvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwieCwpuCwr+CwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwieCwpuCwr+Cwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUZXR1biBEaWxpIChFYXN0IFRpbW9yKSBbdGV0XVxuLy8hIGF1dGhvciA6IEpvc2h1YSBCcm9va3MgOiBodHRwczovL2dpdGh1Yi5jb20vam9zaGJyb29rc1xuLy8hIGF1dGhvciA6IE9ub3JpbyBEZSBKLiBBZm9uc28gOiBodHRwczovL2dpdGh1Yi5jb20vbWFyb2JvXG4vLyEgYXV0aG9yIDogU29uaWEgU2ltb2VzIDogaHR0cHM6Ly9naXRodWIuY29tL3Nvbmlhc2ltb2VzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGV0Jywge1xuICAgICAgICBtb250aHM6ICdKYW5laXJ1X0ZldmVyZWlydV9NYXJzdV9BYnJpbF9NYWl1X0p1w7F1X0p1bGx1X0FndXN0dV9TZXRlbWJydV9PdXR1YnJ1X05vdmVtYnJ1X0RlemVtYnJ1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0RvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRG9tX1NlZ19UZXJzX0t1YV9LaW50X1Nlc3RfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RvX1NlZ19UZV9LdV9LaV9TZXNfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2hpbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQWJhbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hvcmlzZWlrIGloYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW1hbmEga290dWtdIFtpaGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaWhhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBsaXViYScsXG4gICAgICAgICAgICBzOiAnc2VndW5kdSBiYWx1bicsXG4gICAgICAgICAgICBzczogJ3NlZ3VuZHUgJWQnLFxuICAgICAgICAgICAgbTogJ21pbnV0dSBpZGEnLFxuICAgICAgICAgICAgbW06ICdtaW51dHUgJWQnLFxuICAgICAgICAgICAgaDogJ29yYXMgaWRhJyxcbiAgICAgICAgICAgIGhoOiAnb3JhcyAlZCcsXG4gICAgICAgICAgICBkOiAnbG9yb24gaWRhJyxcbiAgICAgICAgICAgIGRkOiAnbG9yb24gJWQnLFxuICAgICAgICAgICAgTTogJ2Z1bGFuIGlkYScsXG4gICAgICAgICAgICBNTTogJ2Z1bGFuICVkJyxcbiAgICAgICAgICAgIHk6ICd0aW5hbiBpZGEnLFxuICAgICAgICAgICAgeXk6ICd0aW5hbiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFqaWsgW3RnXVxuLy8hIGF1dGhvciA6IE9yaWYgTi4gSnIuIDogaHR0cHM6Ly9naXRodWIuY29tL29yaWYtanJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rg9C8JyxcbiAgICAgICAgMTogJy3Rg9C8JyxcbiAgICAgICAgMjogJy3RjtC8JyxcbiAgICAgICAgMzogJy3RjtC8JyxcbiAgICAgICAgNDogJy3Rg9C8JyxcbiAgICAgICAgNTogJy3Rg9C8JyxcbiAgICAgICAgNjogJy3Rg9C8JyxcbiAgICAgICAgNzogJy3Rg9C8JyxcbiAgICAgICAgODogJy3Rg9C8JyxcbiAgICAgICAgOTogJy3Rg9C8JyxcbiAgICAgICAgMTA6ICct0YPQvCcsXG4gICAgICAgIDEyOiAnLdGD0LwnLFxuICAgICAgICAxMzogJy3Rg9C8JyxcbiAgICAgICAgMjA6ICct0YPQvCcsXG4gICAgICAgIDMwOiAnLdGO0LwnLFxuICAgICAgICA0MDogJy3Rg9C8JyxcbiAgICAgICAgNTA6ICct0YPQvCcsXG4gICAgICAgIDYwOiAnLdGD0LwnLFxuICAgICAgICA3MDogJy3Rg9C8JyxcbiAgICAgICAgODA6ICct0YPQvCcsXG4gICAgICAgIDkwOiAnLdGD0LwnLFxuICAgICAgICAxMDA6ICct0YPQvCcsXG4gICAgfTtcblxuICAgIHZhciB0ZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RnJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3QstCw0YDQuF/RhNC10LLRgNCw0LvQuF/QvNCw0YDRgtC4X9Cw0L/RgNC10LvQuF/QvNCw0LnQuF/QuNGO0L3QuF/QuNGO0LvQuF/QsNCy0LPRg9GB0YLQuF/RgdC10L3RgtGP0LHRgNC4X9C+0LrRgtGP0LHRgNC4X9C90L7Rj9Cx0YDQuF/QtNC10LrQsNCx0YDQuCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0Y/QvdCy0LDRgF/RhNC10LLRgNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C90L7Rj9Cx0YBf0LTQtdC60LDQsdGAJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfRj9C60YjQsNC90LHQtV/QtNGD0YjQsNC90LHQtV/RgdC10YjQsNC90LHQtV/Rh9C+0YDRiNCw0L3QsdC1X9C/0LDQvdK30YjQsNC90LHQtV/St9GD0LzRitCwX9GI0LDQvdCx0LUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfRj9GI0LFf0LTRiNCxX9GB0YjQsV/Rh9GI0LFf0L/RiNCxX9K30YPQvF/RiNC90LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0Y/RiF/QtNGIX9GB0Yhf0YfRiF/Qv9GIX9K30Lxf0YjQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQmNC80YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KTQsNGA0LTQviDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CU0LjRgNOv0Lcg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkW9C4XSBb0rPQsNGE0YLQsNC4INC+0Y/QvdC00LAg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkW9C4XSBb0rPQsNGE0YLQsNC4INCz0YPQt9Cw0YjRgtCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LHQsNGK0LTQuCAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0L/QtdGIJyxcbiAgICAgICAgICAgIHM6ICfRj9C60YfQsNC90LQg0YHQvtC90LjRjycsXG4gICAgICAgICAgICBtOiAn0Y/QuiDQtNCw0pvQuNKb0LAnLFxuICAgICAgICAgICAgbW06ICclZCDQtNCw0pvQuNKb0LAnLFxuICAgICAgICAgICAgaDogJ9GP0Log0YHQvtCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkOiAn0Y/QuiDRgNOv0LcnLFxuICAgICAgICAgICAgZGQ6ICclZCDRgNOv0LcnLFxuICAgICAgICAgICAgTTogJ9GP0Log0LzQvtKzJyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LzQvtKzJyxcbiAgICAgICAgICAgIHk6ICfRj9C6INGB0L7QuycsXG4gICAgICAgICAgICB5eTogJyVkINGB0L7QuycsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/RiNCw0LF80YHRg9Cx0rN80YDTr9C3fNCx0LXQs9C+0rMvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfRiNCw0LEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfRgdGD0LHSsycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfRgNOv0LcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9Cx0LXQs9C+0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgdGD0LHSsyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDTr9C3JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQsdC10LPQvtKzJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRiNCw0LEnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGD0Lx80Y7QvCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDF0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUaGFpIFt0aF1cbi8vISBhdXRob3IgOiBLcmlkc2FkYSBUaGFuYWJ1bHBvbmcgOiBodHRwczovL2dpdGh1Yi5jb20vc2lyblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGgnLCB7XG4gICAgICAgIG1vbnRoczogJ+C4oeC4geC4o+C4suC4hOC4oV/guIHguLjguKHguKDguLLguJ7guLHguJnguJjguYxf4Lih4Li14LiZ4Liy4LiE4LihX+C5gOC4oeC4qeC4suC4ouC4mV/guJ7guKTguKnguKDguLLguITguKFf4Lih4Li04LiW4Li44LiZ4Liy4Lii4LiZX+C4geC4o+C4geC4juC4suC4hOC4oV/guKrguLTguIfguKvguLLguITguKFf4LiB4Lix4LiZ4Lii4Liy4Lii4LiZX+C4leC4uOC4peC4suC4hOC4oV/guJ7guKTguKjguIjguLTguIHguLLguKLguJlf4LiY4Lix4LiZ4Lin4Liy4LiE4LihJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfguKEu4LiELl/guIEu4LieLl/guKHguLUu4LiELl/guYDguKEu4LiiLl/guJ4u4LiELl/guKHguLQu4LiiLl/guIEu4LiELl/guKou4LiELl/guIEu4LiiLl/guJUu4LiELl/guJ4u4LiiLl/guJgu4LiELicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+C4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKrguJrguJTguLVf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKpf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCcuc3BsaXQoJ18nKSwgLy8geWVzLCB0aHJlZSBjaGFyYWN0ZXJzIGRpZmZlcmVuY2VcbiAgICAgICAgd2Vla2RheXNNaW46ICfguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIOC5gOC4p+C4peC4siBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICfguKfguLHguJlkZGRk4LiX4Li14LmIIEQgTU1NTSBZWVlZIOC5gOC4p+C4peC4siBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4h3zguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguIHguYjguK3guJnguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C4p+C4seC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkW+C4q+C4meC5ieC4siDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LmA4Lih4Li34LmI4Lit4Lin4Liy4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Lin4Lix4LiZXWRkZGRb4LiX4Li14LmI4LmB4Lil4LmJ4LinIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfguK3guLXguIEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVz4LiX4Li14LmI4LmB4Lil4LmJ4LinJyxcbiAgICAgICAgICAgIHM6ICfguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUnLFxuICAgICAgICAgICAgc3M6ICclZCDguKfguLTguJnguLLguJfguLUnLFxuICAgICAgICAgICAgbTogJzEg4LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIGg6ICcxIOC4iuC4seC5iOC4p+C5guC4oeC4hycsXG4gICAgICAgICAgICBoaDogJyVkIOC4iuC4seC5iOC4p+C5guC4oeC4hycsXG4gICAgICAgICAgICBkOiAnMSDguKfguLHguJknLFxuICAgICAgICAgICAgZGQ6ICclZCDguKfguLHguJknLFxuICAgICAgICAgICAgdzogJzEg4Liq4Lix4Lib4LiU4Liy4Lir4LmMJyxcbiAgICAgICAgICAgIHd3OiAnJWQg4Liq4Lix4Lib4LiU4Liy4Lir4LmMJyxcbiAgICAgICAgICAgIE06ICcxIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICBNTTogJyVkIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICB5OiAnMSDguJvguLUnLFxuICAgICAgICAgICAgeXk6ICclZCDguJvguLUnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFR1cmttZW4gW3RrXVxuLy8hIGF1dGhvciA6IEF0YW15cmF0IEFiZHlyYWhtYW5vdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdGFteXJhdGFiZHlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogXCInaW5qaVwiLFxuICAgICAgICA1OiBcIidpbmppXCIsXG4gICAgICAgIDg6IFwiJ2luamlcIixcbiAgICAgICAgNzA6IFwiJ2luamlcIixcbiAgICAgICAgODA6IFwiJ2luamlcIixcbiAgICAgICAgMjogXCInbmppXCIsXG4gICAgICAgIDc6IFwiJ25qaVwiLFxuICAgICAgICAyMDogXCInbmppXCIsXG4gICAgICAgIDUwOiBcIiduamlcIixcbiAgICAgICAgMzogXCInw7xuamlcIixcbiAgICAgICAgNDogXCInw7xuamlcIixcbiAgICAgICAgMTAwOiBcIifDvG5qaVwiLFxuICAgICAgICA2OiBcIiduanlcIixcbiAgICAgICAgOTogXCIndW5qeVwiLFxuICAgICAgICAxMDogXCIndW5qeVwiLFxuICAgICAgICAzMDogXCIndW5qeVwiLFxuICAgICAgICA2MDogXCIneW5qeVwiLFxuICAgICAgICA5MDogXCIneW5qeVwiLFxuICAgIH07XG5cbiAgICB2YXIgdGsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0aycsIHtcbiAgICAgICAgbW9udGhzOiAnw51hbndhcl9GZXdyYWxfTWFydF9BcHJlbF9NYcO9X0nDvXVuX0nDvXVsX0F3Z3VzdF9TZW50w71hYnJfT2t0w71hYnJfTm/DvWFicl9EZWthYnInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnw51hbl9GZXdfTWFyX0Fwcl9NYcO9X0nDvW5fScO9bF9Bd2dfU2VuX09rdF9Ob8O9X0Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfDnWVrxZ9lbmJlX0R1xZ9lbmJlX1NpxZ9lbmJlX8OHYXLFn2VuYmVfUGVuxZ9lbmJlX0FubmFfxZ5lbmJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnw51la19EdcWfX1NpxZ9fw4dhcl9QZW5fQW5uX8WeZW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnw51rX0TFn19TxZ9fw4dyX1BuX0FuX8Webicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tidWfDvG4gc2FnYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZXJ0aXIgc2FnYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW2luZGlraV0gZGRkZCBbc2FnYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZMO8w71uXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tnZcOnZW5dIGRkZGQgW3NhZ2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHNvxYgnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMO2xYgnLFxuICAgICAgICAgICAgczogJ2Jpcm7DpMOnZSBzZWt1bnQnLFxuICAgICAgICAgICAgbTogJ2JpciBtaW51dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0JyxcbiAgICAgICAgICAgIGg6ICdiaXIgc2FnYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzYWdhdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQ6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE06ICdiaXIgYcO9JyxcbiAgICAgICAgICAgIE1NOiAnJWQgYcO9JyxcbiAgICAgICAgICAgIHk6ICdiaXIgw715bCcsXG4gICAgICAgICAgICB5eTogJyVkIMO9eWwnLFxuICAgICAgICB9LFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBcIid1bmp5XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAobnVtYmVyICUgMTAwKSAtIGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFnYWxvZyAoUGhpbGlwcGluZXMpIFt0bC1waF1cbi8vISBhdXRob3IgOiBEYW4gSGFnbWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2hhZ21hbmRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRsUGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bC1waCcsIHtcbiAgICAgICAgbW9udGhzOiAnRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0VuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0xpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0xpbl9MdW5fTWFyX01peV9IdXdfQml5X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdMaV9MdV9NYV9NaV9IdV9CaV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdNTS9EL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERELCBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdMVCBbbmdheW9uZyBhcmF3XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0J1a2FzIG5nXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xUIFtzYSBzdXN1bm9kIG5hXSBkZGRkJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdMVCBba2FoYXBvbl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnc2EgbG9vYiBuZyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYW5nIG5ha2FsaXBhcycsXG4gICAgICAgICAgICBzOiAnaWxhbmcgc2VndW5kbycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbTogJ2lzYW5nIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0bycsXG4gICAgICAgICAgICBoOiAnaXNhbmcgb3JhcycsXG4gICAgICAgICAgICBoaDogJyVkIG9yYXMnLFxuICAgICAgICAgICAgZDogJ2lzYW5nIGFyYXcnLFxuICAgICAgICAgICAgZGQ6ICclZCBhcmF3JyxcbiAgICAgICAgICAgIE06ICdpc2FuZyBidXdhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1d2FuJyxcbiAgICAgICAgICAgIHk6ICdpc2FuZyB0YW9uJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0bFBoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtsaW5nb24gW3RsaF1cbi8vISBhdXRob3IgOiBEb21pbmlrYSBLcnVrIDogaHR0cHM6Ly9naXRodWIuY29tL2FtYXJhbnRocm9zZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG51bWJlcnNOb3VucyA9ICdwYWdoX3dh4oCZX2NoYeKAmV93ZWpfbG9TX3ZhZ2hfamF2X1NvY2hfY2hvcmdoX0h1dCcuc3BsaXQoJ18nKTtcblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZUZ1dHVyZShvdXRwdXQpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7XG4gICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgb3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnbGVTJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMVxuICAgICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICd3YVEnXG4gICAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICduZW0nXG4gICAgICAgICAgICAgICAgICAgIDogdGltZSArICcgcElxJztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlUGFzdChvdXRwdXQpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7XG4gICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgb3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnSHXigJknXG4gICAgICAgICAgICAgICAgOiBvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xXG4gICAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dlbidcbiAgICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ2JlbidcbiAgICAgICAgICAgICAgICAgICAgOiB0aW1lICsgJyByZXQnO1xuICAgICAgICByZXR1cm4gdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW1iZXJOb3VuID0gbnVtYmVyQXNOb3VuKG51bWJlcik7XG4gICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGx1cCc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIHR1cCc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIHJlcCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGphaic7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGphcic7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIERJUyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBudW1iZXJBc05vdW4obnVtYmVyKSB7XG4gICAgICAgIHZhciBodW5kcmVkID0gTWF0aC5mbG9vcigobnVtYmVyICUgMTAwMCkgLyAxMDApLFxuICAgICAgICAgICAgdGVuID0gTWF0aC5mbG9vcigobnVtYmVyICUgMTAwKSAvIDEwKSxcbiAgICAgICAgICAgIG9uZSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgd29yZCA9ICcnO1xuICAgICAgICBpZiAoaHVuZHJlZCA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gbnVtYmVyc05vdW5zW2h1bmRyZWRdICsgJ3ZhdGxoJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGVuID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAod29yZCAhPT0gJycgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbdGVuXSArICdtYUgnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbmUgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9ICh3b3JkICE9PSAnJyA/ICcgJyA6ICcnKSArIG51bWJlcnNOb3Vuc1tvbmVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3b3JkID09PSAnJyA/ICdwYWdoJyA6IHdvcmQ7XG4gICAgfVxuXG4gICAgdmFyIHRsaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RsaCcsIHtcbiAgICAgICAgbW9udGhzOiAndGVyYeKAmSBqYXIgd2HigJlfdGVyYeKAmSBqYXIgY2hh4oCZX3RlcmHigJkgamFyIHdlal90ZXJh4oCZIGphciBsb1NfdGVyYeKAmSBqYXIgdmFnaF90ZXJh4oCZIGphciBqYXZfdGVyYeKAmSBqYXIgU29jaF90ZXJh4oCZIGphciBjaG9yZ2hfdGVyYeKAmSBqYXIgSHV0X3RlcmHigJkgamFyIHdh4oCZbWFIX3RlcmHigJkgamFyIHdh4oCZbWFIIHdh4oCZX3RlcmHigJkgamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFyIHdh4oCZX2phciBjaGHigJlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YeKAmW1hSF9qYXIgd2HigJltYUggd2HigJlfamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OlxuICAgICAgICAgICAgJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjpcbiAgICAgICAgICAgICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEYUhqYWpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbd2HigJlsZVNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbd2HigJlIdeKAmV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdMTEwnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IHRyYW5zbGF0ZUZ1dHVyZSxcbiAgICAgICAgICAgIHBhc3Q6IHRyYW5zbGF0ZVBhc3QsXG4gICAgICAgICAgICBzOiAncHVTIGx1cCcsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogJ3dh4oCZIHR1cCcsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogJ3dh4oCZIHJlcCcsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ3dh4oCZIGphaicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ3dh4oCZIGphcicsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ3dh4oCZIERJUycsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRsaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUdXJraXNoIFt0cl1cbi8vISBhdXRob3JzIDogRXJoYW4gR3VuZG9nYW4gOiBodHRwczovL2dpdGh1Yi5jb20vZXJoYW5ndW5kb2dhbixcbi8vISAgICAgICAgICAgQnVyYWsgWWnEn2l0IEtheWE6IGh0dHBzOi8vZ2l0aHViLmNvbS9CWUtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogXCInaW5jaVwiLFxuICAgICAgICA1OiBcIidpbmNpXCIsXG4gICAgICAgIDg6IFwiJ2luY2lcIixcbiAgICAgICAgNzA6IFwiJ2luY2lcIixcbiAgICAgICAgODA6IFwiJ2luY2lcIixcbiAgICAgICAgMjogXCInbmNpXCIsXG4gICAgICAgIDc6IFwiJ25jaVwiLFxuICAgICAgICAyMDogXCInbmNpXCIsXG4gICAgICAgIDUwOiBcIiduY2lcIixcbiAgICAgICAgMzogXCInw7xuY8O8XCIsXG4gICAgICAgIDQ6IFwiJ8O8bmPDvFwiLFxuICAgICAgICAxMDA6IFwiJ8O8bmPDvFwiLFxuICAgICAgICA2OiBcIiduY8SxXCIsXG4gICAgICAgIDk6IFwiJ3VuY3VcIixcbiAgICAgICAgMTA6IFwiJ3VuY3VcIixcbiAgICAgICAgMzA6IFwiJ3VuY3VcIixcbiAgICAgICAgNjA6IFwiJ8SxbmPEsVwiLFxuICAgICAgICA5MDogXCInxLFuY8SxXCIsXG4gICAgfTtcblxuICAgIHZhciB0ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RyJywge1xuICAgICAgICBtb250aHM6ICdPY2FrX8WedWJhdF9NYXJ0X05pc2FuX01hecSxc19IYXppcmFuX1RlbW11el9BxJ91c3Rvc19FeWzDvGxfRWtpbV9LYXPEsW1fQXJhbMSxaycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdPY2FfxZ51Yl9NYXJfTmlzX01heV9IYXpfVGVtX0HEn3VfRXlsX0VraV9LYXNfQXJhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1BhemFyX1BhemFydGVzaV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1Bhel9QenRfU2FsX8OHYXJfUGVyX0N1bV9DbXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnUHpfUHRfU2Ffw4dhX1BlX0N1X0N0Jy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ8O2w7YnIDogJ8OWw5YnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfDtnMnIDogJ8OWUyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/DtsO2fMOWw5Z8w7ZzfMOWUy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAnw7ZzJyB8fCBpbnB1dCA9PT0gJ8OWUyc7XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbeWFyxLFuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW2dlbGVjZWtdIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZMO8bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZ2XDp2VuXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDtm5jZScsXG4gICAgICAgICAgICBzOiAnYmlya2HDpyBzYW5peWUnLFxuICAgICAgICAgICAgc3M6ICclZCBzYW5peWUnLFxuICAgICAgICAgICAgbTogJ2JpciBkYWtpa2EnLFxuICAgICAgICAgICAgbW06ICclZCBkYWtpa2EnLFxuICAgICAgICAgICAgaDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQ6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIHc6ICdiaXIgaGFmdGEnLFxuICAgICAgICAgICAgd3c6ICclZCBoYWZ0YScsXG4gICAgICAgICAgICBNOiAnYmlyIGF5JyxcbiAgICAgICAgICAgIE1NOiAnJWQgYXknLFxuICAgICAgICAgICAgeTogJ2JpciB5xLFsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgecSxbCcsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEbyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgemVyb1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIFwiJ8SxbmPEsVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhbG9zc2FuIFt0emxdXG4vLyEgYXV0aG9yIDogUm9iaW4gdmFuIGRlciBWbGlldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JpbjB2YW4wZGVyMHZcbi8vISBhdXRob3IgOiBJdXN0w6wgQ2FudW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIC8vIEFmdGVyIHRoZSB5ZWFyIHRoZXJlIHNob3VsZCBiZSBhIHNsYXNoIGFuZCB0aGUgYW1vdW50IG9mIHllYXJzIHNpbmNlIERlY2VtYmVyIDI2LCAxOTc5IGluIFJvbWFuIG51bWVyYWxzLlxuICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IHRvbyBkaWZmaWN1bHQgKG1heWJlIGV2ZW4gaW1wb3NzaWJsZSkgdG8gYWRkLlxuICAgIHZhciB0emwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0emwnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZXZyYWdsaF9NYXLDp19BdnLDr3VfTWFpX0fDvG5fSnVsaWFfR3VzY2h0X1NldGVtdmFyX0xpc3RvcMOkdHNfTm9lbXZhcl9aZWNlbXZhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmV2X01hcl9BdnJfTWFpX0fDvG5fSnVsX0d1c19TZXRfTGlzX05vZV9aZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU8O6bGFkaV9Mw7puZcOnaV9NYWl0emlfTcOhcmN1cmlfWGjDumFkaV9WacOpbmVyw6dpX1PDoXR1cmknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTw7psX0zDum5fTWFpX03DoXJfWGjDul9WacOpX1PDoXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU8O6X0zDul9NYV9Nw6FfWGhfVmlfU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gW2RhbGxhc10gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIFtsaV0gRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RcXCdvfGRcXCdhL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiZCdvXCIgPT09IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyBcImQnb1wiIDogXCJEJ09cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyBcImQnYVwiIDogXCJEJ0FcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbb3hoaSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tkZW3DoCDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpZWlyaSDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbc8O8ciBlbF0gZGRkZCBbbGFzdGV1IMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29zcHJlaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnamElcycsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyd2aWVuc2FzIHNlY3VuZHMnLCBcIidpZW5zYXMgc2VjdW5kc1wiXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJyBzZWN1bmRzJywgJycgKyBudW1iZXIgKyAnIHNlY3VuZHMnXSxcbiAgICAgICAgICAgIG06IFtcIiduIG3DrXV0XCIsIFwiJ2llbnMgbcOtdXRcIl0sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcgbcOtdXRzJywgJycgKyBudW1iZXIgKyAnIG3DrXV0cyddLFxuICAgICAgICAgICAgaDogW1wiJ24gw75vcmFcIiwgXCInaWVuc2Egw75vcmFcIl0sXG4gICAgICAgICAgICBoaDogW251bWJlciArICcgw75vcmFzJywgJycgKyBudW1iZXIgKyAnIMO+b3JhcyddLFxuICAgICAgICAgICAgZDogW1wiJ24geml1YVwiLCBcIidpZW5zYSB6aXVhXCJdLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIHppdWFzJywgJycgKyBudW1iZXIgKyAnIHppdWFzJ10sXG4gICAgICAgICAgICBNOiBbXCInbiBtZXNcIiwgXCInaWVucyBtZXNcIl0sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgbWVzZW4nLCAnJyArIG51bWJlciArICcgbWVzZW4nXSxcbiAgICAgICAgICAgIHk6IFtcIiduIGFyXCIsIFwiJ2llbnMgYXJcIl0sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgYXJzJywgJycgKyBudW1iZXIgKyAnIGFycyddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmVcbiAgICAgICAgICAgID8gZm9ybWF0W2tleV1bMF1cbiAgICAgICAgICAgIDogd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgICA/IGZvcm1hdFtrZXldWzBdXG4gICAgICAgICAgICAgIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHR6bDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDZW50cmFsIEF0bGFzIFRhbWF6aWdodCBMYXRpbiBbdHptLWxhdG5dXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0em1MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptLWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXNka2ggZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thc2thIGddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1thc3NhbnQgZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhZGtoIHMgeWFuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd5YW4gJXMnLFxuICAgICAgICAgICAgczogJ2ltaWsnLFxuICAgICAgICAgICAgc3M6ICclZCBpbWlrJyxcbiAgICAgICAgICAgIG06ICdtaW514biNJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludeG4jScsXG4gICAgICAgICAgICBoOiAnc2HJm2EnLFxuICAgICAgICAgICAgaGg6ICclZCB0YXNzYcmbaW4nLFxuICAgICAgICAgICAgZDogJ2FzcycsXG4gICAgICAgICAgICBkZDogJyVkIG9zc2FuJyxcbiAgICAgICAgICAgIE06ICdheW93cicsXG4gICAgICAgICAgICBNTTogJyVkIGl5eWlybicsXG4gICAgICAgICAgICB5OiAnYXNnYXMnLFxuICAgICAgICAgICAgeXk6ICclZCBpc2dhc24nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2VudHJhbCBBdGxhcyBUYW1hemlnaHQgW3R6bV1cbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkIDogaHR0cHM6Ly9naXRodWIuY29tL2FiZGVsc2FpZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHR6bSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bScsIHtcbiAgICAgICAgbW9udGhzOiAn4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+K0sOK1meK0t+K1hSDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4rSw4rWZ4rS94rSwIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4rSw4rWa4rSw4rWP4rWcIOK0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4rS34rSw4rS34rWFIOK1mSDitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ+K1ouK0sOK1jyAlcycsXG4gICAgICAgICAgICBzOiAn4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIG06ICfitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgbW06ICclZCDitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgaDogJ+K1meK0sOK1hOK0sCcsXG4gICAgICAgICAgICBoaDogJyVkIOK1nOK0sOK1meK1meK0sOK1hOK1ieK1jycsXG4gICAgICAgICAgICBkOiAn4rSw4rWZ4rWZJyxcbiAgICAgICAgICAgIGRkOiAnJWQgb+K1meK1meK0sOK1jycsXG4gICAgICAgICAgICBNOiAn4rSw4rWib+K1k+K1lCcsXG4gICAgICAgICAgICBNTTogJyVkIOK1ieK1ouK1ouK1ieK1lOK1jycsXG4gICAgICAgICAgICB5OiAn4rSw4rWZ4rSz4rSw4rWZJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4rWJ4rWZ4rSz4rSw4rWZ4rWPJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0em07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXlnaHVyIChDaGluYSkgW3VnLWNuXVxuLy8hIGF1dGhvcjogYm95YXEgOiBodHRwczovL2dpdGh1Yi5jb20vYm95YXFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1Z0NuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWctY24nLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9mK25XZg9i025XZhtio25Vf2K/biNi025XZhtio25Vf2LPbldmK2LTbldmG2KjblV/ahtin2LHYtNuV2YbYqNuVX9m+25XZiti025XZhtio25Vf2KzbiNmF25Vf2LTbldmG2KjblScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2YrblV/Yr9uIX9iz25Vf2obYp1/ZvtuVX9is24hf2LTblScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIFlZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ZituQ2LHZidmFINmD25DahtuVfNiz25XavtuV2LF82obbiNi02KrZidmGINio24fYsduH2YZ82obbiNi0fNqG24jYtNiq2YnZhiDZg9uQ2YrZidmGfNmD25Xahi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9mK25DYsdmJ2YUg2YPbkNqG25UnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfYs9uV2r7bldixJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINio24fYsduH2YYnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhicgfHwgbWVyaWRpZW0gPT09ICfZg9uV2oYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YrbkNix2YnZhSDZg9uQ2obblSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYs9uV2r7bldixJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YPbldqGJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KjbiNqv24jZhiDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9im25XYqtuVINiz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9mD25DZhNuV2LHZg9mJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iq24bZhtuI2q/biNmGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vYptin2YTYr9mJ2YbZgtmJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINmD25DZitmJ2YYnLFxuICAgICAgICAgICAgcGFzdDogJyVzINio24fYsduH2YYnLFxuICAgICAgICAgICAgczogJ9mG25XahtqG25Ug2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIG06ICfYqNmJ2LEg2YXZidmG24fYqicsXG4gICAgICAgICAgICBtbTogJyVkINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgaDogJ9io2YnYsSDYs9in2KbbldiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9im25XYqicsXG4gICAgICAgICAgICBkOiAn2KjZidixINmD24jZhicsXG4gICAgICAgICAgICBkZDogJyVkINmD24jZhicsXG4gICAgICAgICAgICBNOiAn2KjZidixINim2KfZiicsXG4gICAgICAgICAgICBNTTogJyVkINim2KfZiicsXG4gICAgICAgICAgICB5OiAn2KjZidixINmK2YnZhCcsXG4gICAgICAgICAgICB5eTogJyVkINmK2YnZhCcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KC3Zg9uI2YbZiXwt2KbYp9mKfC3avtuV2b7YqtuVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Zg9uI2YbZiSc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdq+25XZvtiq25UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVnQ247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVWtyYWluaWFuIFt1a11cbi8vISBhdXRob3IgOiB6ZW1sYW5pbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS96ZW1sYW5pblxuLy8hIEF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTFcbiAgICAgICAgICAgID8gZm9ybXNbMF1cbiAgICAgICAgICAgIDogbnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApXG4gICAgICAgICAgICAgID8gZm9ybXNbMV1cbiAgICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LBf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyA6ICfRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nLFxuICAgICAgICAgICAgaGg6IHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQuNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLFxuICAgICAgICAgICAgZGQ6ICfQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LInLFxuICAgICAgICAgICAgTU06ICfQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyJyxcbiAgICAgICAgICAgIHl5OiAn0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LInLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwJyA6ICfRhdCy0LjQu9C40L3Rgyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsCcgOiAn0LPQvtC00LjQvdGDJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzQ2FzZVJlcGxhY2UobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IHtcbiAgICAgICAgICAgICAgICBub21pbmF0aXZlOlxuICAgICAgICAgICAgICAgICAgICAn0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFjY3VzYXRpdmU6XG4gICAgICAgICAgICAgICAgICAgICfQvdC10LTRltC70Y5f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNGDX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRjl/RgdGD0LHQvtGC0YMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2VuaXRpdmU6XG4gICAgICAgICAgICAgICAgICAgICfQvdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vdW5DYXNlO1xuXG4gICAgICAgIGlmIChtID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXVxuICAgICAgICAgICAgICAgIC5zbGljZSgxLCA3KVxuICAgICAgICAgICAgICAgIC5jb25jYXQod2Vla2RheXNbJ25vbWluYXRpdmUnXS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdW5DYXNlID0gLyhcXFtb0JLQstCj0YNdXFxdKSA/ZGRkZC8udGVzdChmb3JtYXQpXG4gICAgICAgICAgICA/ICdhY2N1c2F0aXZlJ1xuICAgICAgICAgICAgOiAvXFxbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXF0gP2RkZGQvLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgICA/ICdnZW5pdGl2ZSdcbiAgICAgICAgICAgICAgOiAnbm9taW5hdGl2ZSc7XG4gICAgICAgIHJldHVybiB3ZWVrZGF5c1tub3VuQ2FzZV1bbS5kYXkoKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKHN0cikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ciArICfQvicgKyAodGhpcy5ob3VycygpID09PSAxMSA/ICfQsScgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHVrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWsnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GB0ZbRh9C10L3RjF/Qu9GO0YLQuNC5X9Cx0LXRgNC10LfQtdC90Yxf0LrQstGW0YLQtdC90Yxf0YLRgNCw0LLQtdC90Yxf0YfQtdGA0LLQtdC90Yxf0LvQuNC/0LXQvdGMX9GB0LXRgNC/0LXQvdGMX9Cy0LXRgNC10YHQtdC90Yxf0LbQvtCy0YLQtdC90Yxf0LvQuNGB0YLQvtC/0LDQtF/Qs9GA0YPQtNC10L3RjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzQ2FzZVJlcGxhY2UsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg0YAuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINGALiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINGALiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQodGM0L7Qs9C+0LTQvdGWICcpLFxuICAgICAgICAgICAgbmV4dERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQl9Cw0LLRgtGA0LAgJyksXG4gICAgICAgICAgICBsYXN0RGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CS0YfQvtGA0LAgJyksXG4gICAgICAgICAgICBuZXh0V2VlazogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQo10gZGRkZCBbJyksXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Rl10gZGRkZCBbJykuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0YLQvtC80YMnLFxuICAgICAgICAgICAgczogJ9C00LXQutGW0LvRjNC60LAg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogJ9Cz0L7QtNC40L3RgycsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICfQtNC10L3RjCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE06ICfQvNGW0YHRj9GG0YwnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAn0YDRltC6JyxcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICAvLyBNLiBFLjogdGhvc2UgdHdvIGFyZSB2aXJ0dWFsbHkgdW51c2VkIGJ1dCBhIHVzZXIgbWlnaHQgd2FudCB0byBpbXBsZW1lbnQgdGhlbSBmb3IgaGlzL2hlciB3ZWJzaXRlIGZvciBzb21lIHJlYXNvblxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0ZZ80YDQsNC90LrRg3zQtNC90Y980LLQtdGH0L7RgNCwLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0ZYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdC60YMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0L7RgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1aztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVcmR1IFt1cl1cbi8vISBhdXRob3IgOiBTYXdvb2QgQWxhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYm5lc2F5ZWVkXG4vLyEgYXV0aG9yIDogWmFjayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9aYWNrVmlzaW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9is2YbZiNix24wnLFxuICAgICAgICAgICAgJ9mB2LHZiNix24wnLFxuICAgICAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgICAgICfYp9m+2LHbjNmEJyxcbiAgICAgICAgICAgICfZhdim24wnLFxuICAgICAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICAgICAn2KzZiNmE2KfYptuMJyxcbiAgICAgICAgICAgICfYp9qv2LPYqicsXG4gICAgICAgICAgICAn2LPYqtmF2KjYsScsXG4gICAgICAgICAgICAn2Kfaqdiq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YXYqNixJyxcbiAgICAgICAgICAgICfYr9iz2YXYqNixJyxcbiAgICAgICAgXSxcbiAgICAgICAgZGF5cyA9IFsn2KfYqtmI2KfYsScsICfZvtuM2LEnLCAn2YXZhtqv2YQnLCAn2KjYr9q+JywgJ9is2YXYudix2KfYqicsICfYrNmF2LnbgScsICfbgdmB2KrbgSddO1xuXG4gICAgdmFyIHVyID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXInLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRheXMsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Ytdio2K182LTYp9mFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KLYrCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vaqdmEINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9io2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9qv2LDYtNiq24Eg2LHZiNiyINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1var9iw2LTYqtuBXSBkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDYqNi52K8nLFxuICAgICAgICAgICAgcGFzdDogJyVzINmC2KjZhCcsXG4gICAgICAgICAgICBzOiAn2obZhtivINiz24zaqdmG2ognLFxuICAgICAgICAgICAgc3M6ICclZCDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIG06ICfYp9uM2qkg2YXZhtm5JyxcbiAgICAgICAgICAgIG1tOiAnJWQg2YXZhtm5JyxcbiAgICAgICAgICAgIGg6ICfYp9uM2qkg2q/avtmG2bnbgScsXG4gICAgICAgICAgICBoaDogJyVkINqv2r7Zhtm525InLFxuICAgICAgICAgICAgZDogJ9in24zaqSDYr9mGJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2K/ZhicsXG4gICAgICAgICAgICBNOiAn2KfbjNqpINmF2KfbgScsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfbgScsXG4gICAgICAgICAgICB5OiAn2KfbjNqpINiz2KfZhCcsXG4gICAgICAgICAgICB5eTogJyVkINiz2KfZhCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFV6YmVrIExhdGluIFt1ei1sYXRuXVxuLy8hIGF1dGhvciA6IFJhc3VsYmVrIE1pcnpheWV2IDogZ2l0aHViLmNvbS9SYXN1bGJlZWVrXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdXpMYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXotbGF0bicsIHtcbiAgICAgICAgbW9udGhzOiAnWWFudmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnWWFuX0Zldl9NYXJfQXByX01heV9JeXVuX0l5dWxfQXZnX1Nlbl9Pa3RfTm95X0Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnWWFrc2hhbmJhX0R1c2hhbmJhX1Nlc2hhbmJhX0Nob3JzaGFuYmFfUGF5c2hhbmJhX0p1bWFfU2hhbmJhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdZYWtfRHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1lhX0R1X1NlX0Nob19QYV9KdV9TaGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQnVndW4gc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0VydGFnYV0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2t1bmkgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlY2hhIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6IFwiW08ndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdXCIsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ1lhcWluICVzIGljaGlkYScsXG4gICAgICAgICAgICBwYXN0OiAnQmlyIG5lY2hhICVzIG9sZGluJyxcbiAgICAgICAgICAgIHM6ICdzb25peWEnLFxuICAgICAgICAgICAgc3M6ICclZCBzb25peWEnLFxuICAgICAgICAgICAgbTogJ2JpciBkYXFpcWEnLFxuICAgICAgICAgICAgbW06ICclZCBkYXFpcWEnLFxuICAgICAgICAgICAgaDogJ2JpciBzb2F0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc29hdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGt1bicsXG4gICAgICAgICAgICBkZDogJyVkIGt1bicsXG4gICAgICAgICAgICBNOiAnYmlyIG95JyxcbiAgICAgICAgICAgIE1NOiAnJWQgb3knLFxuICAgICAgICAgICAgeTogJ2JpciB5aWwnLFxuICAgICAgICAgICAgeXk6ICclZCB5aWwnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXpMYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFV6YmVrIFt1el1cbi8vISBhdXRob3IgOiBTYXJkb3IgTXVtaW5vdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tdW1pbm9mZlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHV6ID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXonLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQr9C60YjQsNC90LHQsF/QlNGD0YjQsNC90LHQsF/QodC10YjQsNC90LHQsF/Qp9C+0YDRiNCw0L3QsdCwX9Cf0LDQudGI0LDQvdCx0LBf0JbRg9C80LBf0KjQsNC90LHQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Cv0LrRiF/QlNGD0Yhf0KHQtdGIX9Cn0L7RgF/Qn9Cw0Llf0JbRg9C8X9Co0LDQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQr9C6X9CU0YNf0KHQtV/Qp9C+X9Cf0LBf0JbRg1/QqNCwJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdEIE1NTU0gWVlZWSwgZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CR0YPQs9GD0L0g0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Ct0YDRgtCw0LPQsF0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Ca0LXRh9CwINGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb0KPRgtCz0LDQvV0gZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9Cv0LrQuNC9ICVzINC40YfQuNC00LAnLFxuICAgICAgICAgICAgcGFzdDogJ9CR0LjRgCDQvdC10YfQsCAlcyDQvtC70LTQuNC9JyxcbiAgICAgICAgICAgIHM6ICfRhNGD0YDRgdCw0YInLFxuICAgICAgICAgICAgc3M6ICclZCDRhNGD0YDRgdCw0YInLFxuICAgICAgICAgICAgbTogJ9Cx0LjRgCDQtNCw0LrQuNC60LAnLFxuICAgICAgICAgICAgbW06ICclZCDQtNCw0LrQuNC60LAnLFxuICAgICAgICAgICAgaDogJ9Cx0LjRgCDRgdC+0LDRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGQ6ICfQsdC40YAg0LrRg9C9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LrRg9C9JyxcbiAgICAgICAgICAgIE06ICfQsdC40YAg0L7QuScsXG4gICAgICAgICAgICBNTTogJyVkINC+0LknLFxuICAgICAgICAgICAgeTogJ9Cx0LjRgCDQudC40LsnLFxuICAgICAgICAgICAgeXk6ICclZCDQudC40LsnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVmlldG5hbWVzZSBbdmldXG4vLyEgYXV0aG9yIDogQmFuZyBOZ3V5ZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmFuZ25rXG4vLyEgYXV0aG9yIDogQ2hpZW4gS2lyYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaGllbmtpcmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB2aSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3ZpJywge1xuICAgICAgICBtb250aHM6ICd0aMOhbmcgMV90aMOhbmcgMl90aMOhbmcgM190aMOhbmcgNF90aMOhbmcgNV90aMOhbmcgNl90aMOhbmcgN190aMOhbmcgOF90aMOhbmcgOV90aMOhbmcgMTBfdGjDoW5nIDExX3Row6FuZyAxMicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnVGhnIDAxX1RoZyAwMl9UaGcgMDNfVGhnIDA0X1RoZyAwNV9UaGcgMDZfVGhnIDA3X1RoZyAwOF9UaGcgMDlfVGhnIDEwX1RoZyAxMV9UaGcgMTInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdjaOG7pyBuaOG6rXRfdGjhu6kgaGFpX3Ro4bupIGJhX3Ro4bupIHTGsF90aOG7qSBuxINtX3Ro4bupIHPDoXVfdGjhu6kgYuG6o3knLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdDTl9UMl9UM19UNF9UNV9UNl9UNycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdDTl9UMl9UM19UNF9UNV9UNl9UNycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvc2F8Y2gvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15jaCQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdzYScgOiAnU0EnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdjaCcgOiAnQ0gnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBbbsSDbV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsOiAnREQvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGw6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIw7RtIG5heSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW05nw6B5IG1haSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3R14bqnbiB04bubaSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0jDtG0gcXVhIGzDumNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbdHXhuqduIHRyxrDhu5tjIGzDumNdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgdOG7m2knLFxuICAgICAgICAgICAgcGFzdDogJyVzIHRyxrDhu5tjJyxcbiAgICAgICAgICAgIHM6ICd2w6BpIGdpw6J5JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZ2nDonknLFxuICAgICAgICAgICAgbTogJ23hu5l0IHBow7p0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgcGjDunQnLFxuICAgICAgICAgICAgaDogJ23hu5l0IGdp4budJyxcbiAgICAgICAgICAgIGhoOiAnJWQgZ2nhu50nLFxuICAgICAgICAgICAgZDogJ23hu5l0IG5nw6B5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgbmfDoHknLFxuICAgICAgICAgICAgdzogJ23hu5l0IHR14bqnbicsXG4gICAgICAgICAgICB3dzogJyVkIHR14bqnbicsXG4gICAgICAgICAgICBNOiAnbeG7mXQgdGjDoW5nJyxcbiAgICAgICAgICAgIE1NOiAnJWQgdGjDoW5nJyxcbiAgICAgICAgICAgIHk6ICdt4buZdCBuxINtJyxcbiAgICAgICAgICAgIHl5OiAnJWQgbsSDbScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2aTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQc2V1ZG8gW3gtcHNldWRvXVxuLy8hIGF1dGhvciA6IEFuZHJldyBIb29kIDogaHR0cHM6Ly9naXRodWIuY29tL2FuZHJld2hvb2QxMjVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB4UHNldWRvID0gbW9tZW50LmRlZmluZUxvY2FsZSgneC1wc2V1ZG8nLCB7XG4gICAgICAgIG1vbnRoczogJ0p+w6HDscO6w6F+csO9X0Z+w6licsO6fsOhcsO9X35Nw6FyY35oX8OBcH5yw61sX35Nw6HDvV9+SsO6w7HDqX5fSsO6bH7DvV/DgcO6fmfDunN0fl9Tw6lwfnTDqW1ifsOpcl/Dk35jdMOzYn7DqXJfw5F+w7N2w6ltfmLDqXJffkTDqWPDqX5tYsOpcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSn7DocOxX35Gw6liX35Nw6FyX37DgXByX35Nw6HDvV9+SsO6w7FffkrDumxffsOBw7pnX35Tw6lwX37Dk2N0X37DkcOzdl9+RMOpYycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTfsO6w7Fkw6F+w71fTcOzfsOxZMOhw71+X1TDusOpfnNkw6HDvX5fV8OpZH7DscOpc2R+w6HDvV9UfmjDunJzfmTDocO9X35GcsOtZH7DocO9X1N+w6F0w7pyfmTDocO9Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTfsO6w7Fffk3Ds8OxX35Uw7rDqV9+V8OpZF9+VGjDul9+RnLDrV9+U8OhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTfsO6X03Ds35fVMO6X35Xw6lfVH5oX0Zyfl9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUfsOzZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUfsOzbcOzfnJyw7N+dyDDoXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW8OdfsOpc3R+w6lyZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTH7DoXN0XSBkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnw61+w7EgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOhfmfDsycsXG4gICAgICAgICAgICBzOiAnw6EgfmbDqXcgfnPDqWPDs37DsWRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc37DqWPDs8OxfmRzJyxcbiAgICAgICAgICAgIG06ICfDoSB+bcOtw7F+w7p0w6knLFxuICAgICAgICAgICAgbW06ICclZCBtfsOtw7HDun50w6lzJyxcbiAgICAgICAgICAgIGg6ICfDoX7DsSBow7N+w7pyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaH7Ds8O6cnMnLFxuICAgICAgICAgICAgZDogJ8OhIH5kw6HDvScsXG4gICAgICAgICAgICBkZDogJyVkIGR+w6HDvXMnLFxuICAgICAgICAgICAgTTogJ8OhIH5tw7PDsX50aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1+w7PDsXR+aHMnLFxuICAgICAgICAgICAgeTogJ8OhIH7DvcOpw6FyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw71+w6nDoXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHhQc2V1ZG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogWW9ydWJhIE5pZ2VyaWEgW3lvXVxuLy8hIGF1dGhvciA6IEF0b2xhZ2JlIEFiaXNveWUgOiBodHRwczovL2dpdGh1Yi5jb20vYW5kZWxhLWJhdG9sYWdiZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHlvID0gbW9tZW50LmRlZmluZUxvY2FsZSgneW8nLCB7XG4gICAgICAgIG1vbnRoczogJ1PhurnMgXLhurnMgV9FzIByZcyAbGXMgF/hurhy4bq5zIBuYcyAX0nMgGdiZcyBX0XMgGJpYmlfT8yAa3XMgGR1X0Fn4bq5bW9fT8yAZ3XMgW5fT3dld2Vf4buMzIB3YcyAcmHMgF9CZcyBbHXMgV/hu4zMgHDhurnMgMyAJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1PhurnMgXJfRcyAcmxf4bq4cm5fScyAZ2JfRcyAYmlfT8yAa3XMgF9BZ+G6uV9PzIBndcyBX093ZV/hu4zMgHdhzIBfQmXMgWxf4buMzIBw4bq5zIDMgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBzIBpzIBrdcyBX0FqZcyBX0nMgHPhurnMgWd1bl/hu4xq4buNzIFydcyBX+G7jGrhu43MgWLhu41f4bq4dGnMgF9BzIBiYcyBbeG6ucyBdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBzIBpzIBrX0FqZcyBX0nMgHPhurnMgV/hu4xqcl/hu4xqYl/hurh0acyAX0HMgGJhzIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQcyAacyAX0FqX0nMgHNf4buMcl/hu4xiX+G6uHRfQcyAYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT8yAbmnMgCBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhu4zMgGxhIG5pXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogXCJkZGRkIFvhu4xz4bq5zIAgdG/MgW4nYuG7jV0gW25pXSBMVFwiLFxuICAgICAgICAgICAgbGFzdERheTogJ1tBzIBuYSBuaV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvhu4xz4bq5zIAgdG/MgWzhu43MgV0gW25pXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ25pzIEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGvhu41qYcyBJyxcbiAgICAgICAgICAgIHM6ICdpzIBz4bq5anXMgSBhYXlhzIEgZGllJyxcbiAgICAgICAgICAgIHNzOiAnYWF5YcyBICVkJyxcbiAgICAgICAgICAgIG06ICdpzIBz4bq5anXMgSBrYW4nLFxuICAgICAgICAgICAgbW06ICdpzIBz4bq5anXMgSAlZCcsXG4gICAgICAgICAgICBoOiAnd2HMgWthdGkga2FuJyxcbiAgICAgICAgICAgIGhoOiAnd2HMgWthdGkgJWQnLFxuICAgICAgICAgICAgZDogJ+G7jWrhu43MgSBrYW4nLFxuICAgICAgICAgICAgZGQ6ICfhu41q4buNzIEgJWQnLFxuICAgICAgICAgICAgTTogJ29zdcyAIGthbicsXG4gICAgICAgICAgICBNTTogJ29zdcyAICVkJyxcbiAgICAgICAgICAgIHk6ICfhu41kdcyBbiBrYW4nLFxuICAgICAgICAgICAgeXk6ICfhu41kdcyBbiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC/hu41q4buNzIFcXHNcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6ICfhu41q4buNzIEgJWQnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4geW87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2hpbmVzZSAoQ2hpbmEpIFt6aC1jbl1cbi8vISBhdXRob3IgOiBzdXVwaWMgOiBodHRwczovL2dpdGh1Yi5jb20vc3V1cGljXG4vLyEgYXV0aG9yIDogWmVubyBaZW5nIDogaHR0cHM6Ly9naXRodWIuY29tL3plbm96ZW5nXG4vLyEgYXV0aG9yIDogdXUxMDkgOiBodHRwczovL2dpdGh1Yi5jb20vdXUxMDlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aENuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtY24nLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+WRqOaXpV/lkajkuIBf5ZGo5LqMX+WRqOS4iV/lkajlm5tf5ZGo5LqUX+WRqOWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpUFo54K5bW3liIYnLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnlubRN5pyIROaXpWRkZGRBaOeCuW1t5YiGJyxcbiAgICAgICAgICAgIGw6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vICfkuK3ljYgnXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+S4i11kZGRMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5pysXWRkZExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjlpKldTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWVrKCkgIT09IG5vdy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5LiKXWRkZExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnKxdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzlkagpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+WRqCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+WQjicsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+WHoOenkicsXG4gICAgICAgICAgICBzczogJyVkIOenkicsXG4gICAgICAgICAgICBtOiAnMSDliIbpkp8nLFxuICAgICAgICAgICAgbW06ICclZCDliIbpkp8nLFxuICAgICAgICAgICAgaDogJzEg5bCP5pe2JyxcbiAgICAgICAgICAgIGhoOiAnJWQg5bCP5pe2JyxcbiAgICAgICAgICAgIGQ6ICcxIOWkqScsXG4gICAgICAgICAgICBkZDogJyVkIOWkqScsXG4gICAgICAgICAgICB3OiAnMSDlkagnLFxuICAgICAgICAgICAgd3c6ICclZCDlkagnLFxuICAgICAgICAgICAgTTogJzEg5Liq5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5Liq5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB6aENuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENoaW5lc2UgKEhvbmcgS29uZykgW3poLWhrXVxuLy8hIGF1dGhvciA6IEJlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW4tbGluXG4vLyEgYXV0aG9yIDogQ2hyaXMgTGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2hlaGFjaHJpc1xuLy8hIGF1dGhvciA6IEtvbnN0YW50aW4gOiBodHRwczovL2dpdGh1Yi5jb20vc2tmZFxuLy8hIGF1dGhvciA6IEFudGhvbnkgOiBodHRwczovL2dpdGh1Yi5jb20vYW50aG9ueWxhdVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHpoSGsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1oaycsIHtcbiAgICAgICAgbW9udGhzOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtID09PSAxMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+S4i11kZGRkTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjlpKldTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGRMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzpgLEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+W5vuenkicsXG4gICAgICAgICAgICBzczogJyVkIOenkicsXG4gICAgICAgICAgICBtOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW06ICclZCDliIbpkJgnLFxuICAgICAgICAgICAgaDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQ6ICcxIOWkqScsXG4gICAgICAgICAgICBkZDogJyVkIOWkqScsXG4gICAgICAgICAgICBNOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU06ICclZCDlgIvmnIgnLFxuICAgICAgICAgICAgeTogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5OiAnJWQg5bm0JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB6aEhrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENoaW5lc2UgKE1hY2F1KSBbemgtbW9dXG4vLyEgYXV0aG9yIDogQmVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jlbi1saW5cbi8vISBhdXRob3IgOiBDaHJpcyBMYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaGVoYWNocmlzXG4vLyEgYXV0aG9yIDogVGFuIFl1YW5ob25nIDogaHR0cHM6Ly9naXRodWIuY29tL2xlMHRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHpoTW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1tbycsIHtcbiAgICAgICAgbW9udGhzOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7lpKldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+S4i11kZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vkuIpdZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzpgLEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+WFpycsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+W5vuenkicsXG4gICAgICAgICAgICBzczogJyVkIOenkicsXG4gICAgICAgICAgICBtOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW06ICclZCDliIbpkJgnLFxuICAgICAgICAgICAgaDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQ6ICcxIOWkqScsXG4gICAgICAgICAgICBkZDogJyVkIOWkqScsXG4gICAgICAgICAgICBNOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU06ICclZCDlgIvmnIgnLFxuICAgICAgICAgICAgeTogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5OiAnJWQg5bm0JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB6aE1vO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENoaW5lc2UgKFRhaXdhbikgW3poLXR3XVxuLy8hIGF1dGhvciA6IEJlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW4tbGluXG4vLyEgYXV0aG9yIDogQ2hyaXMgTGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2hlaGFjaHJpc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHpoVHcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC10dycsIHtcbiAgICAgICAgbW9udGhzOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7lpKldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+S4i11kZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vkuIpdZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzpgLEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+W5vuenkicsXG4gICAgICAgICAgICBzczogJyVkIOenkicsXG4gICAgICAgICAgICBtOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW06ICclZCDliIbpkJgnLFxuICAgICAgICAgICAgaDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQ6ICcxIOWkqScsXG4gICAgICAgICAgICBkZDogJyVkIOWkqScsXG4gICAgICAgICAgICBNOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU06ICclZCDlgIvmnIgnLFxuICAgICAgICAgICAgeTogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5OiAnJWQg5bm0JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB6aFR3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qc1xuLy8hIHZlcnNpb24gOiAyLjMwLjFcbi8vISBhdXRob3JzIDogVGltIFdvb2QsIElza3JlbiBDaGVybmV2LCBNb21lbnQuanMgY29udHJpYnV0b3JzXG4vLyEgbGljZW5zZSA6IE1JVFxuLy8hIG1vbWVudGpzLmNvbVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgICBnbG9iYWwubW9tZW50ID0gZmFjdG9yeSgpXG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBob29rQ2FsbGJhY2s7XG5cbiAgICBmdW5jdGlvbiBob29rcygpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrKGNhbGxiYWNrKSB7XG4gICAgICAgIGhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQXJyYXkoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlucHV0IGluc3RhbmNlb2YgQXJyYXkgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdChpbnB1dCkge1xuICAgICAgICAvLyBJRTggd2lsbCB0cmVhdCB1bmRlZmluZWQgYW5kIG51bGwgYXMgb2JqZWN0IGlmIGl0IHdhc24ndCBmb3JcbiAgICAgICAgLy8gaW5wdXQgIT0gbnVsbFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW5wdXQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKG9iaiwgaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE51bWJlcl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IERhdGVdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBhcnJMZW4gPSBhcnIubGVuZ3RoO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyTGVuOyArK2kpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGZuKGFycltpXSwgaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGEsIGIpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBiKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChiLCBpKSkge1xuICAgICAgICAgICAgICAgIGFbaV0gPSBiW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3RvU3RyaW5nJykpIHtcbiAgICAgICAgICAgIGEudG9TdHJpbmcgPSBiLnRvU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3ZhbHVlT2YnKSkge1xuICAgICAgICAgICAgYS52YWx1ZU9mID0gYi52YWx1ZU9mO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eTogZmFsc2UsXG4gICAgICAgICAgICB1bnVzZWRUb2tlbnM6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQ6IFtdLFxuICAgICAgICAgICAgb3ZlcmZsb3c6IC0yLFxuICAgICAgICAgICAgY2hhcnNMZWZ0T3ZlcjogMCxcbiAgICAgICAgICAgIG51bGxJbnB1dDogZmFsc2UsXG4gICAgICAgICAgICBpbnZhbGlkRXJhOiBudWxsLFxuICAgICAgICAgICAgaW52YWxpZE1vbnRoOiBudWxsLFxuICAgICAgICAgICAgaW52YWxpZEZvcm1hdDogZmFsc2UsXG4gICAgICAgICAgICB1c2VySW52YWxpZGF0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNvOiBmYWxzZSxcbiAgICAgICAgICAgIHBhcnNlZERhdGVQYXJ0czogW10sXG4gICAgICAgICAgICBlcmE6IG51bGwsXG4gICAgICAgICAgICBtZXJpZGllbTogbnVsbCxcbiAgICAgICAgICAgIHJmYzI4MjI6IGZhbHNlLFxuICAgICAgICAgICAgd2Vla2RheU1pc21hdGNoOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzaW5nRmxhZ3MobSkge1xuICAgICAgICBpZiAobS5fcGYgPT0gbnVsbCkge1xuICAgICAgICAgICAgbS5fcGYgPSBkZWZhdWx0UGFyc2luZ0ZsYWdzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG0uX3BmO1xuICAgIH1cblxuICAgIHZhciBzb21lO1xuICAgIGlmIChBcnJheS5wcm90b3R5cGUuc29tZSkge1xuICAgICAgICBzb21lID0gQXJyYXkucHJvdG90eXBlLnNvbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc29tZSA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0KHRoaXMpLFxuICAgICAgICAgICAgICAgIGxlbiA9IHQubGVuZ3RoID4+PiAwLFxuICAgICAgICAgICAgICAgIGk7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIHZhciBmbGFncyA9IG51bGwsXG4gICAgICAgICAgICBwYXJzZWRQYXJ0cyA9IGZhbHNlLFxuICAgICAgICAgICAgaXNOb3dWYWxpZCA9IG0uX2QgJiYgIWlzTmFOKG0uX2QuZ2V0VGltZSgpKTtcbiAgICAgICAgaWYgKGlzTm93VmFsaWQpIHtcbiAgICAgICAgICAgIGZsYWdzID0gZ2V0UGFyc2luZ0ZsYWdzKG0pO1xuICAgICAgICAgICAgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlzTm93VmFsaWQgPVxuICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5lbXB0eSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRXJhICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcbiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID1cbiAgICAgICAgICAgICAgICAgICAgaXNOb3dWYWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xlZnRPdmVyID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICBtLl9pc1ZhbGlkID0gaXNOb3dWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc05vd1ZhbGlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSAoaG9va3MubW9tZW50UHJvcGVydGllcyA9IFtdKSxcbiAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gY29weUNvbmZpZyh0bywgZnJvbSkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIHByb3AsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBtb21lbnRQcm9wZXJ0aWVzTGVuID0gbW9tZW50UHJvcGVydGllcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc0FNb21lbnRPYmplY3QpKSB7XG4gICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faSkpIHtcbiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2YpKSB7XG4gICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sKSkge1xuICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fc3RyaWN0KSkge1xuICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3R6bSkpIHtcbiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc1VUQykpIHtcbiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fb2Zmc2V0KSkge1xuICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3BmKSkge1xuICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbG9jYWxlKSkge1xuICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzTGVuID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXNMZW47IGkrKykge1xuICAgICAgICAgICAgICAgIHByb3AgPSBtb21lbnRQcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhbCA9IGZyb21bcHJvcF07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQob2JqKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICBjb25zb2xlLndhcm5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1zZywgZm4pIHtcbiAgICAgICAgdmFyIGZpcnN0VGltZSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCwgbXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdLFxuICAgICAgICAgICAgICAgICAgICBhcmcsXG4gICAgICAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgYXJnTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9ICdcXG5bJyArIGkgKyAnXSAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093blByb3AoYXJndW1lbnRzWzBdLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSBrZXkgKyAnOiAnICsgYXJndW1lbnRzWzBdW2tleV0gKyAnLCAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAgICAgbXNnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG5Bcmd1bWVudHM6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKCkuc3RhY2tcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHR5cGVvZiBGdW5jdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbikgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChjb25maWcsIGkpKSB7XG4gICAgICAgICAgICAgICAgcHJvcCA9IGNvbmZpZ1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzWydfJyArIGldID0gcHJvcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAgICAgL1xcZHsxLDJ9Ly5zb3VyY2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLFxuICAgICAgICAgICAgcHJvcDtcbiAgICAgICAgZm9yIChwcm9wIGluIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QocGFyZW50Q29uZmlnW3Byb3BdKSAmJiBpc09iamVjdChjaGlsZENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0ge307XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIHBhcmVudENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIGNoaWxkQ29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkQ29uZmlnW3Byb3BdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gY2hpbGRDb25maWdbcHJvcF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChwcm9wIGluIHBhcmVudENvbmZpZykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGhhc093blByb3AocGFyZW50Q29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBjaGFuZ2VzIHRvIHByb3BlcnRpZXMgZG9uJ3QgbW9kaWZ5IHBhcmVudCBjb25maWdcbiAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBleHRlbmQoe30sIHJlc1twcm9wXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2NhbGUoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cztcbiAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICAgICAgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7XG4gICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyKGtleSwgbW9tLCBub3cpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV0gfHwgdGhpcy5fY2FsZW5kYXJbJ3NhbWVFbHNlJ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gemVyb0ZpbGwobnVtYmVyLCB0YXJnZXRMZW5ndGgsIGZvcmNlU2lnbikge1xuICAgICAgICB2YXIgYWJzTnVtYmVyID0gJycgKyBNYXRoLmFicyhudW1iZXIpLFxuICAgICAgICAgICAgemVyb3NUb0ZpbGwgPSB0YXJnZXRMZW5ndGggLSBhYnNOdW1iZXIubGVuZ3RoLFxuICAgICAgICAgICAgc2lnbiA9IG51bWJlciA+PSAwO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHNpZ24gPyAoZm9yY2VTaWduID8gJysnIDogJycpIDogJy0nKSArXG4gICAgICAgICAgICBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgemVyb3NUb0ZpbGwpKS50b1N0cmluZygpLnN1YnN0cigxKSArXG4gICAgICAgICAgICBhYnNOdW1iZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZm9ybWF0dGluZ1Rva2VucyA9XG4gICAgICAgICAgICAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fE57MSw1fXxZWVlZWVl8WVlZWVl8WVlZWXxZWXx5ezIsNH18eW8/fGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLFxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFxuICAgICAgICBmb3JtYXRGdW5jdGlvbnMgPSB7fSxcbiAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbih0b2tlbiwgcGFkZGVkLCBvcmRpbmFsLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkZWQpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3BhZGRlZFswXV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHplcm9GaWxsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcGFkZGVkWzFdLCBwYWRkZWRbMl0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkaW5hbCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5hbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwoXG4gICAgICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9ICcnLFxuICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSlcbiAgICAgICAgICAgICAgICAgICAgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9XG4gICAgICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSB8fCBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0obSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBpID0gNTtcblxuICAgICAgICBmdW5jdGlvbiByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubG9uZ0RhdGVGb3JtYXQoaW5wdXQpIHx8IGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChpID49IDAgJiYgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vuc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgIEw6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlclxuICAgICAgICAgICAgLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh0b2spIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NTU0nIHx8XG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NJyB8fFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdERCcgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rID09PSAnZGRkZCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvay5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvaztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZhbGlkRGF0ZTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE9yZGluYWwgPSAnJWQnLFxuICAgICAgICBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSA9IC9cXGR7MSwyfS87XG5cbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgdzogJ2Egd2VlaycsXG4gICAgICAgIHd3OiAnJWQgd2Vla3MnLFxuICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KVxuICAgICAgICAgICAgPyBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKVxuICAgICAgICAgICAgOiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlKGRpZmYsIG91dHB1dCkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW2RpZmYgPiAwID8gJ2Z1dHVyZScgOiAncGFzdCddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihmb3JtYXQpID8gZm9ybWF0KG91dHB1dCkgOiBmb3JtYXQucmVwbGFjZSgvJXMvaSwgb3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWxpYXNlcyA9IHtcbiAgICAgICAgRDogJ2RhdGUnLFxuICAgICAgICBkYXRlczogJ2RhdGUnLFxuICAgICAgICBkYXRlOiAnZGF0ZScsXG4gICAgICAgIGQ6ICdkYXknLFxuICAgICAgICBkYXlzOiAnZGF5JyxcbiAgICAgICAgZGF5OiAnZGF5JyxcbiAgICAgICAgZTogJ3dlZWtkYXknLFxuICAgICAgICB3ZWVrZGF5czogJ3dlZWtkYXknLFxuICAgICAgICB3ZWVrZGF5OiAnd2Vla2RheScsXG4gICAgICAgIEU6ICdpc29XZWVrZGF5JyxcbiAgICAgICAgaXNvd2Vla2RheXM6ICdpc29XZWVrZGF5JyxcbiAgICAgICAgaXNvd2Vla2RheTogJ2lzb1dlZWtkYXknLFxuICAgICAgICBEREQ6ICdkYXlPZlllYXInLFxuICAgICAgICBkYXlvZnllYXJzOiAnZGF5T2ZZZWFyJyxcbiAgICAgICAgZGF5b2Z5ZWFyOiAnZGF5T2ZZZWFyJyxcbiAgICAgICAgaDogJ2hvdXInLFxuICAgICAgICBob3VyczogJ2hvdXInLFxuICAgICAgICBob3VyOiAnaG91cicsXG4gICAgICAgIG1zOiAnbWlsbGlzZWNvbmQnLFxuICAgICAgICBtaWxsaXNlY29uZHM6ICdtaWxsaXNlY29uZCcsXG4gICAgICAgIG1pbGxpc2Vjb25kOiAnbWlsbGlzZWNvbmQnLFxuICAgICAgICBtOiAnbWludXRlJyxcbiAgICAgICAgbWludXRlczogJ21pbnV0ZScsXG4gICAgICAgIG1pbnV0ZTogJ21pbnV0ZScsXG4gICAgICAgIE06ICdtb250aCcsXG4gICAgICAgIG1vbnRoczogJ21vbnRoJyxcbiAgICAgICAgbW9udGg6ICdtb250aCcsXG4gICAgICAgIFE6ICdxdWFydGVyJyxcbiAgICAgICAgcXVhcnRlcnM6ICdxdWFydGVyJyxcbiAgICAgICAgcXVhcnRlcjogJ3F1YXJ0ZXInLFxuICAgICAgICBzOiAnc2Vjb25kJyxcbiAgICAgICAgc2Vjb25kczogJ3NlY29uZCcsXG4gICAgICAgIHNlY29uZDogJ3NlY29uZCcsXG4gICAgICAgIGdnOiAnd2Vla1llYXInLFxuICAgICAgICB3ZWVreWVhcnM6ICd3ZWVrWWVhcicsXG4gICAgICAgIHdlZWt5ZWFyOiAnd2Vla1llYXInLFxuICAgICAgICBHRzogJ2lzb1dlZWtZZWFyJyxcbiAgICAgICAgaXNvd2Vla3llYXJzOiAnaXNvV2Vla1llYXInLFxuICAgICAgICBpc293ZWVreWVhcjogJ2lzb1dlZWtZZWFyJyxcbiAgICAgICAgdzogJ3dlZWsnLFxuICAgICAgICB3ZWVrczogJ3dlZWsnLFxuICAgICAgICB3ZWVrOiAnd2VlaycsXG4gICAgICAgIFc6ICdpc29XZWVrJyxcbiAgICAgICAgaXNvd2Vla3M6ICdpc29XZWVrJyxcbiAgICAgICAgaXNvd2VlazogJ2lzb1dlZWsnLFxuICAgICAgICB5OiAneWVhcicsXG4gICAgICAgIHllYXJzOiAneWVhcicsXG4gICAgICAgIHllYXI6ICd5ZWFyJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNlc1t1bml0cy50b0xvd2VyQ2FzZSgpXVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplT2JqZWN0VW5pdHMoaW5wdXRPYmplY3QpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IHt9LFxuICAgICAgICAgICAgbm9ybWFsaXplZFByb3AsXG4gICAgICAgICAgICBwcm9wO1xuXG4gICAgICAgIGZvciAocHJvcCBpbiBpbnB1dE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoaW5wdXRPYmplY3QsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFByb3AgPSBub3JtYWxpemVVbml0cyhwcm9wKTtcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZElucHV0W25vcm1hbGl6ZWRQcm9wXSA9IGlucHV0T2JqZWN0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkSW5wdXQ7XG4gICAgfVxuXG4gICAgdmFyIHByaW9yaXRpZXMgPSB7XG4gICAgICAgIGRhdGU6IDksXG4gICAgICAgIGRheTogMTEsXG4gICAgICAgIHdlZWtkYXk6IDExLFxuICAgICAgICBpc29XZWVrZGF5OiAxMSxcbiAgICAgICAgZGF5T2ZZZWFyOiA0LFxuICAgICAgICBob3VyOiAxMyxcbiAgICAgICAgbWlsbGlzZWNvbmQ6IDE2LFxuICAgICAgICBtaW51dGU6IDE0LFxuICAgICAgICBtb250aDogOCxcbiAgICAgICAgcXVhcnRlcjogNyxcbiAgICAgICAgc2Vjb25kOiAxNSxcbiAgICAgICAgd2Vla1llYXI6IDEsXG4gICAgICAgIGlzb1dlZWtZZWFyOiAxLFxuICAgICAgICB3ZWVrOiA1LFxuICAgICAgICBpc29XZWVrOiA1LFxuICAgICAgICB5ZWFyOiAxLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzT2JqKSB7XG4gICAgICAgIHZhciB1bml0cyA9IFtdLFxuICAgICAgICAgICAgdTtcbiAgICAgICAgZm9yICh1IGluIHVuaXRzT2JqKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcCh1bml0c09iaiwgdSkpIHtcbiAgICAgICAgICAgICAgICB1bml0cy5wdXNoKHsgdW5pdDogdSwgcHJpb3JpdHk6IHByaW9yaXRpZXNbdV0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIHZhciBtYXRjaDEgPSAvXFxkLywgLy8gICAgICAgMCAtIDlcbiAgICAgICAgbWF0Y2gyID0gL1xcZFxcZC8sIC8vICAgICAgMDAgLSA5OVxuICAgICAgICBtYXRjaDMgPSAvXFxkezN9LywgLy8gICAgIDAwMCAtIDk5OVxuICAgICAgICBtYXRjaDQgPSAvXFxkezR9LywgLy8gICAgMDAwMCAtIDk5OTlcbiAgICAgICAgbWF0Y2g2ID0gL1srLV0/XFxkezZ9LywgLy8gLTk5OTk5OSAtIDk5OTk5OVxuICAgICAgICBtYXRjaDF0bzIgPSAvXFxkXFxkPy8sIC8vICAgICAgIDAgLSA5OVxuICAgICAgICBtYXRjaDN0bzQgPSAvXFxkXFxkXFxkXFxkPy8sIC8vICAgICA5OTkgLSA5OTk5XG4gICAgICAgIG1hdGNoNXRvNiA9IC9cXGRcXGRcXGRcXGRcXGRcXGQ/LywgLy8gICA5OTk5OSAtIDk5OTk5OVxuICAgICAgICBtYXRjaDF0bzMgPSAvXFxkezEsM30vLCAvLyAgICAgICAwIC0gOTk5XG4gICAgICAgIG1hdGNoMXRvNCA9IC9cXGR7MSw0fS8sIC8vICAgICAgIDAgLSA5OTk5XG4gICAgICAgIG1hdGNoMXRvNiA9IC9bKy1dP1xcZHsxLDZ9LywgLy8gLTk5OTk5OSAtIDk5OTk5OVxuICAgICAgICBtYXRjaFVuc2lnbmVkID0gL1xcZCsvLCAvLyAgICAgICAwIC0gaW5mXG4gICAgICAgIG1hdGNoU2lnbmVkID0gL1srLV0/XFxkKy8sIC8vICAgIC1pbmYgLSBpbmZcbiAgICAgICAgbWF0Y2hPZmZzZXQgPSAvWnxbKy1dXFxkXFxkOj9cXGRcXGQvZ2ksIC8vICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgICAgICBtYXRjaFNob3J0T2Zmc2V0ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vZ2ksIC8vICswMCAtMDAgKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgICAgIG1hdGNoVGltZXN0YW1wID0gL1srLV0/XFxkKyhcXC5cXGR7MSwzfSk/LywgLy8gMTIzNDU2Nzg5IDEyMzQ1Njc4OS4xMjNcbiAgICAgICAgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuXG4gICAgICAgIC8vIGluY2x1ZGVzIHNjb3R0aXNoIGdhZWxpYyB0d28gd29yZCBhbmQgaHlwaGVuYXRlZCBtb250aHNcbiAgICAgICAgbWF0Y2hXb3JkID1cbiAgICAgICAgICAgIC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pLFxuICAgICAgICBtYXRjaDF0bzJOb0xlYWRpbmdaZXJvID0gL15bMS05XVxcZD8vLCAvLyAgICAgICAgIDEtOTlcbiAgICAgICAgbWF0Y2gxdG8ySGFzWmVybyA9IC9eKFsxLTldXFxkfFxcZCkvLCAvLyAgICAgICAgICAgMC05OVxuICAgICAgICByZWdleGVzO1xuXG4gICAgcmVnZXhlcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkUmVnZXhUb2tlbih0b2tlbiwgcmVnZXgsIHN0cmljdFJlZ2V4KSB7XG4gICAgICAgIHJlZ2V4ZXNbdG9rZW5dID0gaXNGdW5jdGlvbihyZWdleClcbiAgICAgICAgICAgID8gcmVnZXhcbiAgICAgICAgICAgIDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaXNTdHJpY3QgJiYgc3RyaWN0UmVnZXggPyBzdHJpY3RSZWdleCA6IHJlZ2V4O1xuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUoXG4gICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJ1xcXFwnLCAnJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZyxcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVnZXhFc2NhcGUocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YXIgdG9rZW5zID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRQYXJzZVRva2VuKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGZ1bmMgPSBjYWxsYmFjayxcbiAgICAgICAgICAgIHRva2VuTGVuO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbkxlbiA9IHRva2VuLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuTGVuOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4odG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgICAgIGNvbmZpZy5fdyA9IGNvbmZpZy5fdyB8fCB7fTtcbiAgICAgICAgICAgIGNhbGxiYWNrKGlucHV0LCBjb25maWcuX3csIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgaW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCAmJiBoYXNPd25Qcm9wKHRva2VucywgdG9rZW4pKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5dKGlucHV0LCBjb25maWcuX2EsIGNvbmZpZywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICB2YXIgWUVBUiA9IDAsXG4gICAgICAgIE1PTlRIID0gMSxcbiAgICAgICAgREFURSA9IDIsXG4gICAgICAgIEhPVVIgPSAzLFxuICAgICAgICBNSU5VVEUgPSA0LFxuICAgICAgICBTRUNPTkQgPSA1LFxuICAgICAgICBNSUxMSVNFQ09ORCA9IDYsXG4gICAgICAgIFdFRUsgPSA3LFxuICAgICAgICBXRUVLREFZID0gODtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpO1xuICAgICAgICByZXR1cm4geSA8PSA5OTk5ID8gemVyb0ZpbGwoeSwgNCkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsIDRdLCAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVknLCA1XSwgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPVxuICAgICAgICAgICAgaW5wdXQubGVuZ3RoID09PSAyID8gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0b0ludChpbnB1dCkgKyAodG9JbnQoaW5wdXQpID4gNjggPyAxOTAwIDogMjAwMCk7XG4gICAgfTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRZZWFyID0gbWFrZUdldFNldCgnRnVsbFllYXInLCB0cnVlKTtcblxuICAgIGZ1bmN0aW9uIGdldElzTGVhcFllYXIoKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0KHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0KG1vbSwgdW5pdCkge1xuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZCA9IG1vbS5fZCxcbiAgICAgICAgICAgIGlzVVRDID0gbW9tLl9pc1VUQztcblxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ01pbGxpc2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENNaWxsaXNlY29uZHMoKSA6IGQuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgICAgICAgICBjYXNlICdTZWNvbmRzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNVVEMgPyBkLmdldFVUQ1NlY29uZHMoKSA6IGQuZ2V0U2Vjb25kcygpO1xuICAgICAgICAgICAgY2FzZSAnTWludXRlcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENNaW51dGVzKCkgOiBkLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgIGNhc2UgJ0hvdXJzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNVVEMgPyBkLmdldFVUQ0hvdXJzKCkgOiBkLmdldEhvdXJzKCk7XG4gICAgICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNVVEMgPyBkLmdldFVUQ0RhdGUoKSA6IGQuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgY2FzZSAnRGF5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNVVEMgPyBkLmdldFVUQ0RheSgpIDogZC5nZXREYXkoKTtcbiAgICAgICAgICAgIGNhc2UgJ01vbnRoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNVVEMgPyBkLmdldFVUQ01vbnRoKCkgOiBkLmdldE1vbnRoKCk7XG4gICAgICAgICAgICBjYXNlICdGdWxsWWVhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENGdWxsWWVhcigpIDogZC5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gTmFOOyAvLyBKdXN0IGluIGNhc2VcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCQxKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGQsIGlzVVRDLCB5ZWFyLCBtb250aCwgZGF0ZTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkID0gbW9tLl9kO1xuICAgICAgICBpc1VUQyA9IG1vbS5faXNVVEM7XG5cbiAgICAgICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgICAgICBjYXNlICdNaWxsaXNlY29uZHMnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIChpc1VUQ1xuICAgICAgICAgICAgICAgICAgICA/IGQuc2V0VVRDTWlsbGlzZWNvbmRzKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6IGQuc2V0TWlsbGlzZWNvbmRzKHZhbHVlKSk7XG4gICAgICAgICAgICBjYXNlICdTZWNvbmRzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAoaXNVVEMgPyBkLnNldFVUQ1NlY29uZHModmFsdWUpIDogZC5zZXRTZWNvbmRzKHZhbHVlKSk7XG4gICAgICAgICAgICBjYXNlICdNaW51dGVzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAoaXNVVEMgPyBkLnNldFVUQ01pbnV0ZXModmFsdWUpIDogZC5zZXRNaW51dGVzKHZhbHVlKSk7XG4gICAgICAgICAgICBjYXNlICdIb3Vycyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgKGlzVVRDID8gZC5zZXRVVENIb3Vycyh2YWx1ZSkgOiBkLnNldEhvdXJzKHZhbHVlKSk7XG4gICAgICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAoaXNVVEMgPyBkLnNldFVUQ0RhdGUodmFsdWUpIDogZC5zZXREYXRlKHZhbHVlKSk7XG4gICAgICAgICAgICAvLyBjYXNlICdEYXknOiAvLyBOb3QgcmVhbFxuICAgICAgICAgICAgLy8gICAgcmV0dXJuIHZvaWQgKGlzVVRDID8gZC5zZXRVVENEYXkodmFsdWUpIDogZC5zZXREYXkodmFsdWUpKTtcbiAgICAgICAgICAgIC8vIGNhc2UgJ01vbnRoJzogLy8gTm90IHVzZWQgYmVjYXVzZSB3ZSBuZWVkIHRvIHBhc3MgdHdvIHZhcmlhYmxlc1xuICAgICAgICAgICAgLy8gICAgIHJldHVybiB2b2lkIChpc1VUQyA/IGQuc2V0VVRDTW9udGgodmFsdWUpIDogZC5zZXRNb250aCh2YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSAnRnVsbFllYXInOlxuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBTZWUgYmVsb3cgLi4uXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gSnVzdCBpbiBjYXNlXG4gICAgICAgIH1cblxuICAgICAgICB5ZWFyID0gdmFsdWU7XG4gICAgICAgIG1vbnRoID0gbW9tLm1vbnRoKCk7XG4gICAgICAgIGRhdGUgPSBtb20uZGF0ZSgpO1xuICAgICAgICBkYXRlID0gZGF0ZSA9PT0gMjkgJiYgbW9udGggPT09IDEgJiYgIWlzTGVhcFllYXIoeWVhcikgPyAyOCA6IGRhdGU7XG4gICAgICAgIHZvaWQgKGlzVVRDXG4gICAgICAgICAgICA/IGQuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIGRhdGUpXG4gICAgICAgICAgICA6IGQuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRhdGUpKTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0KHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKSxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIHByaW9yaXRpemVkTGVuID0gcHJpb3JpdGl6ZWQubGVuZ3RoO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByaW9yaXRpemVkTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMVxuICAgICAgICAgICAgPyBpc0xlYXBZZWFyKHllYXIpXG4gICAgICAgICAgICAgICAgPyAyOVxuICAgICAgICAgICAgICAgIDogMjhcbiAgICAgICAgICAgIDogMzEgLSAoKG1vZE1vbnRoICUgNykgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCBtYXRjaDF0bzIsIG1hdGNoMXRvMk5vTGVhZGluZ1plcm8pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPVxuICAgICAgICAgICAgJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID1cbiAgICAgICAgICAgICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgTU9OVEhTX0lOX0ZPUk1BVCA9IC9EW29EXT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK01NTU0/LyxcbiAgICAgICAgZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXggPSBtYXRjaFdvcmQsXG4gICAgICAgIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRocyhtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNcbiAgICAgICAgICAgICAgICA6IHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocylcbiAgICAgICAgICAgID8gdGhpcy5fbW9udGhzW20ubW9udGgoKV1cbiAgICAgICAgICAgIDogdGhpcy5fbW9udGhzW1xuICAgICAgICAgICAgICAgICAgKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmb3JtYXQnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICAgICAgXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0KG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KVxuICAgICAgICAgICAgICAgID8gdGhpcy5fbW9udGhzU2hvcnRcbiAgICAgICAgICAgICAgICA6IHRoaXMuX21vbnRoc1Nob3J0WydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpXG4gICAgICAgICAgICA/IHRoaXMuX21vbnRoc1Nob3J0W20ubW9udGgoKV1cbiAgICAgICAgICAgIDogdGhpcy5fbW9udGhzU2hvcnRbXG4gICAgICAgICAgICAgICAgICBNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgICAgIF1bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTdHJpY3RQYXJzZShtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgaWksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBsbGMgPSBtb250aE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgdXNlZFxuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHNTaG9ydChcbiAgICAgICAgICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZShtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UuY2FsbCh0aGlzLCBtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRPRE86IGFkZCBzb3J0aW5nXG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXJcbiAgICAgICAgLy8gc2VlIHNvcnRpbmcgaW4gY29tcHV0ZU1vbnRoc1BhcnNlXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXRoaXMuX21vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPVxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdNTU1NJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdNTU0nICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX21vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc2V0TW9udGgobW9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbW9udGggPSB2YWx1ZSxcbiAgICAgICAgICAgIGRhdGUgPSBtb20uZGF0ZSgpO1xuXG4gICAgICAgIGRhdGUgPSBkYXRlIDwgMjkgPyBkYXRlIDogTWF0aC5taW4oZGF0ZSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgbW9udGgpKTtcbiAgICAgICAgdm9pZCAobW9tLl9pc1VUQ1xuICAgICAgICAgICAgPyBtb20uX2Quc2V0VVRDTW9udGgobW9udGgsIGRhdGUpXG4gICAgICAgICAgICA6IG1vbS5fZC5zZXRNb250aChtb250aCwgZGF0ZSkpO1xuICAgICAgICByZXR1cm4gbW9tO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldE1vbnRoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlTW9udGhzUGFyc2UoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBzaG9ydFAsXG4gICAgICAgICAgICBsb25nUDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFAgPSByZWdleEVzY2FwZSh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQID0gcmVnZXhFc2NhcGUodGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaChzaG9ydFApO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKGxvbmdQKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobG9uZ1ApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXRcbiAgICAgICAgLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLlxuICAgICAgICBzaG9ydFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBtaXhlZFBpZWNlcy5zb3J0KGNtcExlblJldik7XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpIHtcbiAgICAgICAgLy8gY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0ZSBhIGRhdGU6XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xODEzNDhcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSArIDQwMCwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUoeSkge1xuICAgICAgICB2YXIgZGF0ZSwgYXJncztcbiAgICAgICAgLy8gdGhlIERhdGUuVVRDIGZ1bmN0aW9uIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSB5ICsgNDAwO1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3MpKTtcbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIC8vIHN0YXJ0LW9mLWZpcnN0LXdlZWsgLSBzdGFydC1vZi15ZWFyXG4gICAgZnVuY3Rpb24gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciAvLyBmaXJzdC13ZWVrIGRheSAtLSB3aGljaCBqYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayAoNCBmb3IgaXNvLCAxIGZvciBvdGhlcilcbiAgICAgICAgICAgIGZ3ZCA9IDcgKyBkb3cgLSBkb3ksXG4gICAgICAgICAgICAvLyBmaXJzdC13ZWVrIGRheSBsb2NhbCB3ZWVrZGF5IC0tIHdoaWNoIGxvY2FsIHdlZWtkYXkgaXMgZndkXG4gICAgICAgICAgICBmd2RsdyA9ICg3ICsgY3JlYXRlVVRDRGF0ZSh5ZWFyLCAwLCBmd2QpLmdldFVUQ0RheSgpIC0gZG93KSAlIDc7XG5cbiAgICAgICAgcmV0dXJuIC1md2RsdyArIGZ3ZCAtIDE7XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19hX2RhdGVfZ2l2ZW5fdGhlX3llYXIuMkNfd2Vla19udW1iZXJfYW5kX3dlZWtkYXlcbiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla3MoeWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGxvY2FsV2Vla2RheSA9ICg3ICsgd2Vla2RheSAtIGRvdykgJSA3LFxuICAgICAgICAgICAgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICBkYXlPZlllYXIgPSAxICsgNyAqICh3ZWVrIC0gMSkgKyBsb2NhbFdlZWtkYXkgKyB3ZWVrT2Zmc2V0LFxuICAgICAgICAgICAgcmVzWWVhcixcbiAgICAgICAgICAgIHJlc0RheU9mWWVhcjtcblxuICAgICAgICBpZiAoZGF5T2ZZZWFyIDw9IDApIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyIC0gMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheXNJblllYXIocmVzWWVhcikgKyBkYXlPZlllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyKSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgKyAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgICAgICBkYXlPZlllYXI6IHJlc0RheU9mWWVhcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssXG4gICAgICAgICAgICByZXNZZWFyO1xuXG4gICAgICAgIGlmICh3ZWVrIDwgMSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgLSAxO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWsgKyB3ZWVrc0luWWVhcihyZXNZZWFyLCBkb3csIGRveSk7XG4gICAgICAgIH0gZWxzZSBpZiAod2VlayA+IHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KSkge1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWsgLSB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSk7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdlZWs6IHJlc1dlZWssXG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtzSW5ZZWFyKHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWtPZmZzZXROZXh0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIgKyAxLCBkb3csIGRveSk7XG4gICAgICAgIHJldHVybiAoZGF5c0luWWVhcih5ZWFyKSAtIHdlZWtPZmZzZXQgKyB3ZWVrT2Zmc2V0TmV4dCkgLyA3O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd3JywgWyd3dycsIDJdLCAnd28nLCAnd2VlaycpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdXJywgWydXVycsIDJdLCAnV28nLCAnaXNvV2VlaycpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsIG1hdGNoMXRvMiwgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignd3cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignVycsIG1hdGNoMXRvMiwgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignV1cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihcbiAgICAgICAgWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vlayhtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZldlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95O1xuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWsoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB0aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2VlayhpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignZCcsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignRScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZGQnLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGRkJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkXG4gICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHdlZWsuZCA9IHdlZWtkYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2QnLCAnZScsICdFJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCA9IGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpICUgNyB8fCA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05hTihpbnB1dCkgPyBudWxsIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gTE9DQUxFU1xuICAgIGZ1bmN0aW9uIHNoaWZ0V2Vla2RheXMod3MsIG4pIHtcbiAgICAgICAgcmV0dXJuIHdzLnNsaWNlKG4sIDcpLmNvbmNhdCh3cy5zbGljZSgwLCBuKSk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5cyA9XG4gICAgICAgICAgICAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0ID0gJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluID0gJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBkZWZhdWx0V2Vla2RheXNSZWdleCA9IG1hdGNoV29yZCxcbiAgICAgICAgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZCxcbiAgICAgICAgZGVmYXVsdFdlZWtkYXlzTWluUmVnZXggPSBtYXRjaFdvcmQ7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5cyhtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0gaXNBcnJheSh0aGlzLl93ZWVrZGF5cylcbiAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNcbiAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNbXG4gICAgICAgICAgICAgICAgICBtICYmIG0gIT09IHRydWUgJiYgdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChmb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZm9ybWF0J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgICAgIF07XG4gICAgICAgIHJldHVybiBtID09PSB0cnVlXG4gICAgICAgICAgICA/IHNoaWZ0V2Vla2RheXMod2Vla2RheXMsIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiBtXG4gICAgICAgICAgICAgID8gd2Vla2RheXNbbS5kYXkoKV1cbiAgICAgICAgICAgICAgOiB3ZWVrZGF5cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1Nob3J0KG0pIHtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c1Nob3J0LCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogbVxuICAgICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV1cbiAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzTWluKG0pIHtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c01pbiwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c01pblttLmRheSgpXVxuICAgICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzTWluO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlJDEod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgaWksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBsbGMgPSB3ZWVrZGF5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzTWluKFxuICAgICAgICAgICAgICAgICAgICBtb20sXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNTaG9ydChcbiAgICAgICAgICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlJDEuY2FsbCh0aGlzLCB3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcblxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPVxuICAgICAgICAgICAgICAgICAgICAnXicgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtkYXlzKG1vbSwgJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ3xeJyArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKSArXG4gICAgICAgICAgICAgICAgICAgICd8XicgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ2RkZGQnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdkZGQnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnZGQnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fd2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZXZWVrKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkYXkgPSBnZXQodGhpcywgJ0RheScpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gKHRoaXMuZGF5KCkgKyA3IC0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSAlIDc7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09EYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBkZWZhdWx0V2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWluUGllY2VzID0gW10sXG4gICAgICAgICAgICBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBtaW5wLFxuICAgICAgICAgICAgc2hvcnRwLFxuICAgICAgICAgICAgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHJlZ2V4RXNjYXBlKHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykpO1xuICAgICAgICAgICAgc2hvcnRwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5cyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIG1pblBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICcnICtcbiAgICAgICAgICAgIGhGb3JtYXQuYXBwbHkodGhpcykgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgJycgK1xuICAgICAgICAgICAgdGhpcy5ob3VycygpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMilcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtKHRva2VuLCBsb3dlcmNhc2UpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbShcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJzKCksXG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKCksXG4gICAgICAgICAgICAgICAgbG93ZXJjYXNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtZXJpZGllbSgnYScsIHRydWUpO1xuICAgIG1lcmlkaWVtKCdBJywgZmFsc2UpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgZnVuY3Rpb24gbWF0Y2hNZXJpZGllbShpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdIJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJIYXNaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJOb0xlYWRpbmdaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJOb0xlYWRpbmdaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdISCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdoaCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdraycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignaG1tc3MnLCBtYXRjaDV0bzYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tc3MnLCBtYXRjaDV0bzYpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAnSEgnXSwgSE9VUik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2snLCAna2snXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBrSW5wdXQgPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGFycmF5W0hPVVJdID0ga0lucHV0ID09PSAyNCA/IDAgOiBrSW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2EnLCAnQSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9pc1BtID0gY29uZmlnLl9sb2NhbGUuaXNQTShpbnB1dCk7XG4gICAgICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaCcsICdoaCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNCxcbiAgICAgICAgICAgIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQsXG4gICAgICAgICAgICBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVJc1BNKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UgPSAvW2FwXVxcLj9tP1xcLj8vaSxcbiAgICAgICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgICAgIC8vIGEgbmV3IHRpbWV6b25lKSBtYWtlcyBzZW5zZS4gQWRkaW5nL3N1YnRyYWN0aW5nIGhvdXJzIGRvZXMgbm90IGZvbGxvd1xuICAgICAgICAvLyB0aGlzIHJ1bGUuXG4gICAgICAgIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0oaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3BtJyA6ICdQTSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhbScgOiAnQU0nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSxcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge30sXG4gICAgICAgIGxvY2FsZUZhbWlsaWVzID0ge30sXG4gICAgICAgIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIGNvbW1vblByZWZpeChhcnIxLCBhcnIyKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbWlubCA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBtaW5sOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbmw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICAgIGosXG4gICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0Lmxlbmd0aCA+PSBqICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblByZWZpeChzcGxpdCwgbmV4dCkgPj0gaiAtIDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMb2NhbGVOYW1lU2FuZShuYW1lKSB7XG4gICAgICAgIC8vIFByZXZlbnQgbmFtZXMgdGhhdCBsb29rIGxpa2UgZmlsZXN5c3RlbSBwYXRocywgaS5lIGNvbnRhaW4gJy8nIG9yICdcXCdcbiAgICAgICAgLy8gRW5zdXJlIG5hbWUgaXMgYXZhaWxhYmxlIGFuZCBmdW5jdGlvbiByZXR1cm5zIGJvb2xlYW5cbiAgICAgICAgcmV0dXJuICEhKG5hbWUgJiYgbmFtZS5tYXRjaCgnXlteL1xcXFxcXFxcXSokJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvYWRMb2NhbGUobmFtZSkge1xuICAgICAgICB2YXIgb2xkTG9jYWxlID0gbnVsbCxcbiAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlO1xuICAgICAgICAvLyBUT0RPOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBhbGwgdGhlIGxvY2FsZXMgaW4gTm9kZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICBtb2R1bGUgJiZcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzICYmXG4gICAgICAgICAgICBpc0xvY2FsZU5hbWVTYW5lKG5hbWUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBub3QgZm91bmQgdG8gYXZvaWQgcmVwZWF0aW5nIGV4cGVuc2l2ZSBmaWxlIHJlcXVpcmUgY2FsbCBjYXVzaW5nIGhpZ2ggQ1BVXG4gICAgICAgICAgICAgICAgLy8gd2hlbiB0cnlpbmcgdG8gZmluZCBlbi1VUywgZW5fVVMsIGVuLXVzIGZvciBldmVyeSBmb3JtYXQgY2FsbFxuICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBudWxsOyAvLyBudWxsIG1lYW5zIG5vdCBmb3VuZFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUoa2V5LCB2YWx1ZXMpIHtcbiAgICAgICAgdmFyIGRhdGE7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBtb21lbnQuZHVyYXRpb24uX2xvY2FsZSA9IG1vbWVudC5fbG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgICAgICBnbG9iYWxMb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICdMb2NhbGUgJyArIGtleSArICcgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PydcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlLl9hYmJyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmluZUxvY2FsZU92ZXJyaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbmV3IExvY2FsZShtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpKTtcblxuICAgICAgICAgICAgaWYgKGxvY2FsZUZhbWlsaWVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVMb2NhbGUoeC5uYW1lLCB4LmNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHNldCB0aGUgbG9jYWxlIEFGVEVSIGFsbCBjaGlsZCBsb2NhbGVzIGhhdmUgYmVlblxuICAgICAgICAgICAgLy8gY3JlYXRlZCwgc28gd2Ugd29uJ3QgZW5kIHVwIHdpdGggdGhlIGNoaWxkIGxvY2FsZSBzZXQuXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdXNlZnVsIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlTG9jYWxlKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUsXG4gICAgICAgICAgICAgICAgdG1wTG9jYWxlLFxuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG5cbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwgJiYgbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBjaGlsZCBsb2NhbGUgaW4tcGxhY2UgdG8gYXZvaWQgbWVtb3J5LWxlYWtzXG4gICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXS5zZXQobWVyZ2VDb25maWdzKGxvY2FsZXNbbmFtZV0uX2NvbmZpZywgY29uZmlnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE1FUkdFXG4gICAgICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wTG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gdG1wTG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgaWYgKHRtcExvY2FsZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZUxvY2FsZSBpcyBjYWxsZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYWJiciBzbyBpdCB3aWxsIGhhdmUgYSBuYW1lIChnZXR0ZXJzIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAvLyB1bmRlZmluZWQgb3RoZXJ3aXNlKS5cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgbG9jYWxlLnBhcmVudExvY2FsZSA9IGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09IGdldFNldEdsb2JhbExvY2FsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZShrZXkpIHtcbiAgICAgICAgdmFyIGxvY2FsZTtcblxuICAgICAgICBpZiAoa2V5ICYmIGtleS5fbG9jYWxlICYmIGtleS5fbG9jYWxlLl9hYmJyKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXkuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0FycmF5KGtleSkpIHtcbiAgICAgICAgICAgIC8vc2hvcnQtY2lyY3VpdCBldmVyeXRoaW5nIGVsc2VcbiAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5ID0gW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hvb3NlTG9jYWxlKGtleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdExvY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBrZXlzKGxvY2FsZXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3cobSkge1xuICAgICAgICB2YXIgb3ZlcmZsb3csXG4gICAgICAgICAgICBhID0gbS5fYTtcblxuICAgICAgICBpZiAoYSAmJiBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPT09IC0yKSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9XG4gICAgICAgICAgICAgICAgYVtNT05USF0gPCAwIHx8IGFbTU9OVEhdID4gMTFcbiAgICAgICAgICAgICAgICAgICAgPyBNT05USFxuICAgICAgICAgICAgICAgICAgICA6IGFbREFURV0gPCAxIHx8IGFbREFURV0gPiBkYXlzSW5Nb250aChhW1lFQVJdLCBhW01PTlRIXSlcbiAgICAgICAgICAgICAgICAgICAgICA/IERBVEVcbiAgICAgICAgICAgICAgICAgICAgICA6IGFbSE9VUl0gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFbSE9VUl0gPiAyNCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYVtIT1VSXSA9PT0gMjQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhW01JTlVURV0gIT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW1NFQ09ORF0gIT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW01JTExJU0VDT05EXSAhPT0gMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IEhPVVJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYVtNSU5VVEVdIDwgMCB8fCBhW01JTlVURV0gPiA1OVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1JTlVURVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFbU0VDT05EXSA8IDAgfHwgYVtTRUNPTkRdID4gNTlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFNFQ09ORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1JTExJU0VDT05EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJlxuICAgICAgICAgICAgICAgIChvdmVyZmxvdyA8IFlFQVIgfHwgb3ZlcmZsb3cgPiBEQVRFKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPVxuICAgICAgICAgICAgL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoWystXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC8sXG4gICAgICAgIGJhc2ljSXNvUmVnZXggPVxuICAgICAgICAgICAgL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZHwpKSg/OihUfCApKFxcZFxcZCg/OlxcZFxcZCg/OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbKy1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLyxcbiAgICAgICAgdHpSZWdleCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/LyxcbiAgICAgICAgaXNvRGF0ZXMgPSBbXG4gICAgICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgICAgIFsnWVlZWS1NTS1ERCcsIC9cXGR7NH0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXFxkezR9LVdcXGRcXGQtXFxkL10sXG4gICAgICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVktREREJywgL1xcZHs0fS1cXGR7M30vXSxcbiAgICAgICAgICAgIFsnWVlZWS1NTScsIC9cXGR7NH0tXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgICAgICBbJ1lZWVlNTUREJywgL1xcZHs4fS9dLFxuICAgICAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgICAgIFsnR0dHR1tXXVdXJywgL1xcZHs0fVdcXGR7Mn0vLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVlEREQnLCAvXFxkezd9L10sXG4gICAgICAgICAgICBbJ1lZWVlNTScsIC9cXGR7Nn0vLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVknLCAvXFxkezR9LywgZmFsc2VdLFxuICAgICAgICBdLFxuICAgICAgICAvLyBpc28gdGltZSBmb3JtYXRzIGFuZCByZWdleGVzXG4gICAgICAgIGlzb1RpbWVzID0gW1xuICAgICAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgICAgIFsnSEg6bW06c3MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEg6bW0nLCAvXFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgICAgICBbJ0hIbW1zcyxTU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZCxcXGQrL10sXG4gICAgICAgICAgICBbJ0hIbW1zcycsIC9cXGRcXGRcXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEgnLCAvXFxkXFxkL10sXG4gICAgICAgIF0sXG4gICAgICAgIGFzcE5ldEpzb25SZWdleCA9IC9eXFwvP0RhdGVcXCgoLT9cXGQrKS9pLFxuICAgICAgICAvLyBSRkMgMjgyMiByZWdleDogRm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zXG4gICAgICAgIHJmYzI4MjIgPVxuICAgICAgICAgICAgL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLyxcbiAgICAgICAgb2JzT2Zmc2V0cyA9IHtcbiAgICAgICAgICAgIFVUOiAwLFxuICAgICAgICAgICAgR01UOiAwLFxuICAgICAgICAgICAgRURUOiAtNCAqIDYwLFxuICAgICAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ1NUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUERUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUFNUOiAtOCAqIDYwLFxuICAgICAgICB9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgIHRpbWVGb3JtYXQsXG4gICAgICAgICAgICB0ekZvcm1hdCxcbiAgICAgICAgICAgIGlzb0RhdGVzTGVuID0gaXNvRGF0ZXMubGVuZ3RoLFxuICAgICAgICAgICAgaXNvVGltZXNMZW4gPSBpc29UaW1lcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pc28gPSB0cnVlO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzTGVuOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzb0RhdGVzW2ldWzFdLmV4ZWMobWF0Y2hbMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSBpc29EYXRlc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dUaW1lID0gaXNvRGF0ZXNbaV1bMl0gIT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzNdKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb1RpbWVzTGVuOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhcbiAgICAgICAgeWVhclN0cixcbiAgICAgICAgbW9udGhTdHIsXG4gICAgICAgIGRheVN0cixcbiAgICAgICAgaG91clN0cixcbiAgICAgICAgbWludXRlU3RyLFxuICAgICAgICBzZWNvbmRTdHJcbiAgICApIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoc2Vjb25kU3RyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUludChzZWNvbmRTdHIsIDEwKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpIHtcbiAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludCh5ZWFyU3RyLCAxMCk7XG4gICAgICAgIGlmICh5ZWFyIDw9IDQ5KSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwMCArIHllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoeWVhciA8PSA5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiAxOTAwICsgeWVhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gICAgICAgIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoW14oKV0qXFwpfFtcXG5cXHRdL2csICcgJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXHNcXHMqLywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzXFxzKiQvLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tXZWVrZGF5KHdlZWtkYXlTdHIsIHBhcnNlZElucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKHdlZWtkYXlTdHIpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFJlcGxhY2UgdGhlIHZhbmlsbGEgSlMgRGF0ZSBvYmplY3Qgd2l0aCBhbiBpbmRlcGVuZGVudCBkYXktb2Ytd2VlayBjaGVjay5cbiAgICAgICAgICAgIHZhciB3ZWVrZGF5UHJvdmlkZWQgPSBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydC5pbmRleE9mKHdlZWtkYXlTdHIpLFxuICAgICAgICAgICAgICAgIHdlZWtkYXlBY3R1YWwgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW5wdXRbMF0sXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZElucHV0WzFdLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbnB1dFsyXVxuICAgICAgICAgICAgICAgICkuZ2V0RGF5KCk7XG4gICAgICAgICAgICBpZiAod2Vla2RheVByb3ZpZGVkICE9PSB3ZWVrZGF5QWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlT2Zmc2V0KG9ic09mZnNldCwgbWlsaXRhcnlPZmZzZXQsIG51bU9mZnNldCkge1xuICAgICAgICBpZiAob2JzT2Zmc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1pbGl0YXJ5T2Zmc2V0KSB7XG4gICAgICAgICAgICAvLyB0aGUgb25seSBhbGxvd2VkIG1pbGl0YXJ5IHR6IGlzIFpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGhtID0gcGFyc2VJbnQobnVtT2Zmc2V0LCAxMCksXG4gICAgICAgICAgICAgICAgbSA9IGhtICUgMTAwLFxuICAgICAgICAgICAgICAgIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSksXG4gICAgICAgICAgICBwYXJzZWRBcnJheTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBwYXJzZWRBcnJheSA9IGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoXG4gICAgICAgICAgICAgICAgbWF0Y2hbNF0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbM10sXG4gICAgICAgICAgICAgICAgbWF0Y2hbMl0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbNV0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbNl0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbN11cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWNoZWNrV2Vla2RheShtYXRjaFsxXSwgcGFyc2VkQXJyYXksIGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IHBhcnNlZEFycmF5O1xuICAgICAgICAgICAgY29uZmlnLl90em0gPSBjYWxjdWxhdGVPZmZzZXQobWF0Y2hbOF0sIG1hdGNoWzldLCBtYXRjaFsxMF0pO1xuXG4gICAgICAgICAgICBjb25maWcuX2QgPSBjcmVhdGVVVENEYXRlLmFwcGx5KG51bGwsIGNvbmZpZy5fYSk7XG4gICAgICAgICAgICBjb25maWcuX2Quc2V0VVRDTWludXRlcyhjb25maWcuX2QuZ2V0VVRDTWludXRlcygpIC0gY29uZmlnLl90em0pO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5yZmMyODIyID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBmcm9tIDEpIEFTUC5ORVQsIDIpIElTTywgMykgUkZDIDI4MjIgZm9ybWF0cywgb3IgNCkgb3B0aW9uYWwgZmFsbGJhY2sgaWYgcGFyc2luZyBpc24ndCBzdHJpY3RcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2hlZCA9IGFzcE5ldEpzb25SZWdleC5leGVjKGNvbmZpZy5faSk7XG4gICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9zdHJpY3QpIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICAgICAnd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSAnICtcbiAgICAgICAgICAgICdkaXNjb3VyYWdlZC4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIG5vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSxcbiAgICAgICAgICAgICAgICBub3dWYWx1ZS5nZXRVVENEYXRlKCksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0RnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0TW9udGgoKSwgbm93VmFsdWUuZ2V0RGF0ZSgpXTtcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IGFuIGFycmF5IHRvIGEgZGF0ZS5cbiAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvd1xuICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMgcGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLlxuICAgIC8vIFt5ZWFyLCBtb250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXVxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgaW5wdXQgPSBbXSxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgZXhwZWN0ZWRXZWVrZGF5LFxuICAgICAgICAgICAgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8XG4gICAgICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID1cbiAgICAgICAgICAgICAgICBjb25maWcuX2FbaV0gPT0gbnVsbCA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICBjb25maWcuX2FbTUlOVVRFXSA9PT0gMCAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBpbnB1dFxuICAgICAgICApO1xuICAgICAgICBleHBlY3RlZFdlZWtkYXkgPSBjb25maWcuX3VzZVVUQ1xuICAgICAgICAgICAgPyBjb25maWcuX2QuZ2V0VVRDRGF5KClcbiAgICAgICAgICAgIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX3cgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fdy5kICE9PSBleHBlY3RlZFdlZWtkYXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3csIGN1cldlZWs7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyhcbiAgICAgICAgICAgICAgICB3LkdHLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSxcbiAgICAgICAgICAgICAgICB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgY3VyV2VlayA9IHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgZG93LCBkb3kpO1xuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZRUFSXSwgY3VyV2Vlay55ZWFyKTtcblxuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHdlZWsuXG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody53LCBjdXJXZWVrLndlZWspO1xuXG4gICAgICAgICAgICBpZiAody5kICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZWVrZGF5IC0tIGxvdyBkYXkgbnVtYmVycyBhcmUgY29uc2lkZXJlZCBuZXh0IHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kO1xuICAgICAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMCB8fCB3ZWVrZGF5ID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAody5lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2NhbCB3ZWVrZGF5IC0tIGNvdW50aW5nIHN0YXJ0cyBmcm9tIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2VlayA8IDEgfHwgd2VlayA+IHdlZWtzSW5ZZWFyKHdlZWtZZWFyLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrZGF5T3ZlcmZsb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla2RheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgICAgICBjb25maWcuX2FbWUVBUl0gPSB0ZW1wLnllYXI7XG4gICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIElTTyBzdGFuZGFyZFxuICAgIGhvb2tzLklTT184NjAxID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgUkZDIDI4MjIgZm9ybVxuICAgIGhvb2tzLlJGQ18yODIyID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpIHtcbiAgICAgICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgY3JlYXRpb24gZmxvdyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcHNcbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuSVNPXzg2MDEpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5SRkNfMjgyMikge1xuICAgICAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maWcuX2EgPSBbXTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgXG4gICAgICAgIHZhciBzdHJpbmcgPSAnJyArIGNvbmZpZy5faSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwYXJzZWRJbnB1dCxcbiAgICAgICAgICAgIHRva2VucyxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMCxcbiAgICAgICAgICAgIGVyYSxcbiAgICAgICAgICAgIHRva2VuTGVuO1xuXG4gICAgICAgIHRva2VucyA9XG4gICAgICAgICAgICBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107XG4gICAgICAgIHRva2VuTGVuID0gdG9rZW5zLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuTGVuOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHxcbiAgICAgICAgICAgICAgICBbXSlbMF07XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIHBhcnNlZElucHV0LCBjb25maWcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPVxuICAgICAgICAgICAgc3RyaW5nTGVuZ3RoIC0gdG90YWxQYXJzZWRJbnB1dExlbmd0aDtcbiAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjbGVhciBfMTJoIGZsYWcgaWYgaG91ciBpcyA8PSAxMlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucGFyc2VkRGF0ZVBhcnRzID0gY29uZmlnLl9hLnNsaWNlKDApO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5tZXJpZGllbSA9IGNvbmZpZy5fbWVyaWRpZW07XG4gICAgICAgIC8vIGhhbmRsZSBtZXJpZGllbVxuICAgICAgICBjb25maWcuX2FbSE9VUl0gPSBtZXJpZGllbUZpeFdyYXAoXG4gICAgICAgICAgICBjb25maWcuX2xvY2FsZSxcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSxcbiAgICAgICAgICAgIGNvbmZpZy5fbWVyaWRpZW1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBoYW5kbGUgZXJhXG4gICAgICAgIGVyYSA9IGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVyYTtcbiAgICAgICAgaWYgKGVyYSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gY29uZmlnLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKGVyYSwgY29uZmlnLl9hW1lFQVJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUsXG4gICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kLFxuICAgICAgICAgICAgYmVzdEZvcm1hdElzVmFsaWQgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ2ZMZW4gPSBjb25maWcuX2YubGVuZ3RoO1xuXG4gICAgICAgIGlmIChjb25maWdmTGVuID09PSAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29uZmlnZkxlbjsgaSsrKSB7XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgPSAwO1xuICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGVtcENvbmZpZyA9IGNvcHlDb25maWcoe30sIGNvbmZpZyk7XG4gICAgICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRlbXBDb25maWcuX3VzZVVUQyA9IGNvbmZpZy5fdXNlVVRDO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGVtcENvbmZpZy5fZiA9IGNvbmZpZy5fZltpXTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQodGVtcENvbmZpZyk7XG5cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoIWJlc3RGb3JtYXRJc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0IHx8XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRGb3JtYXRGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdEZvcm1hdElzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNjb3JlIDwgc2NvcmVUb0JlYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4dGVuZChjb25maWcsIGJlc3RNb21lbnQgfHwgdGVtcENvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbU9iamVjdChjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5fZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGkgPSBub3JtYWxpemVPYmplY3RVbml0cyhjb25maWcuX2kpLFxuICAgICAgICAgICAgZGF5T3JEYXRlID0gaS5kYXkgPT09IHVuZGVmaW5lZCA/IGkuZGF0ZSA6IGkuZGF5O1xuICAgICAgICBjb25maWcuX2EgPSBtYXAoXG4gICAgICAgICAgICBbaS55ZWFyLCBpLm1vbnRoLCBkYXlPckRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZyb21Db25maWcoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnKGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBmb3JtYXQgPSBjb25maWcuX2Y7XG5cbiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBnZXRMb2NhbGUoY29uZmlnLl9sKTtcblxuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgKGZvcm1hdCA9PT0gdW5kZWZpbmVkICYmIGlucHV0ID09PSAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKHsgbnVsbElucHV0OiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZy5faSA9IGlucHV0ID0gY29uZmlnLl9sb2NhbGUucHJlcGFyc2UoaW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTW9tZW50KGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhpbnB1dCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGlucHV0O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZm9ybWF0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0KSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykge1xuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGlmIChmb3JtYXQgPT09IHRydWUgfHwgZm9ybWF0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gZm9ybWF0O1xuICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSA9PT0gdHJ1ZSB8fCBsb2NhbGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzdHJpY3QgPSBsb2NhbGU7XG4gICAgICAgICAgICBsb2NhbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgKGlzQXJyYXkoaW5wdXQpICYmIGlucHV0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlTWluID0gZGVwcmVjYXRlKFxuICAgICAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyIDwgdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgcHJvdG90eXBlTWF4ID0gZGVwcmVjYXRlKFxuICAgICAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsXG4gICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLlxuICAgIC8vXG4gICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZVxuICAgIC8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuXG4gICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7XG4gICAgICAgIHZhciByZXMsIGk7XG4gICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1vbWVudHNbMF0pKSB7XG4gICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMgPSBtb21lbnRzWzBdO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbW9tZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRzW2ldLmlzVmFsaWQoKSB8fCBtb21lbnRzW2ldW2ZuXShyZXMpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/XG4gICAgZnVuY3Rpb24gbWluKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0JlZm9yZScsIGFyZ3MpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heCgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArbmV3IERhdGUoKTtcbiAgICB9O1xuXG4gICAgdmFyIG9yZGVyaW5nID0gW1xuICAgICAgICAneWVhcicsXG4gICAgICAgICdxdWFydGVyJyxcbiAgICAgICAgJ21vbnRoJyxcbiAgICAgICAgJ3dlZWsnLFxuICAgICAgICAnZGF5JyxcbiAgICAgICAgJ2hvdXInLFxuICAgICAgICAnbWludXRlJyxcbiAgICAgICAgJ3NlY29uZCcsXG4gICAgICAgICdtaWxsaXNlY29uZCcsXG4gICAgXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIHZhciBrZXksXG4gICAgICAgICAgICB1bml0SGFzRGVjaW1hbCA9IGZhbHNlLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG9yZGVyTGVuID0gb3JkZXJpbmcubGVuZ3RoO1xuICAgICAgICBmb3IgKGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaGFzT3duUHJvcChtLCBrZXkpICYmXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhPZi5jYWxsKG9yZGVyaW5nLCBrZXkpICE9PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAobVtrZXldID09IG51bGwgfHwgIWlzTmFOKG1ba2V5XSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyTGVuOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24oZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCBub3JtYWxpemVkSW5wdXQuaXNvV2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9XG4gICAgICAgICAgICArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICsgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICsgcXVhcnRlcnMgKiAzICsgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoLTEgKiBudW1iZXIpICogLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCh0b2tlbiwgc2VwYXJhdG9yKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy51dGNPZmZzZXQoKSxcbiAgICAgICAgICAgICAgICBzaWduID0gJysnO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHNpZ24gPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHNpZ24gK1xuICAgICAgICAgICAgICAgIHplcm9GaWxsKH5+KG9mZnNldCAvIDYwKSwgMikgK1xuICAgICAgICAgICAgICAgIHNlcGFyYXRvciArXG4gICAgICAgICAgICAgICAgemVyb0ZpbGwofn5vZmZzZXQgJSA2MCwgMilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKSxcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgcGFydHMsXG4gICAgICAgICAgICBtaW51dGVzO1xuXG4gICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdIHx8IFtdO1xuICAgICAgICBwYXJ0cyA9IChjaHVuayArICcnKS5tYXRjaChjaHVua09mZnNldCkgfHwgWyctJywgMCwgMF07XG4gICAgICAgIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID8gMCA6IHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID1cbiAgICAgICAgICAgICAgICAoaXNNb21lbnQoaW5wdXQpIHx8IGlzRGF0ZShpbnB1dClcbiAgICAgICAgICAgICAgICAgICAgPyBpbnB1dC52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVMb2NhbChpbnB1dCkudmFsdWVPZigpKSAtIHJlcy52YWx1ZU9mKCk7XG4gICAgICAgICAgICAvLyBVc2UgbG93LWxldmVsIGFwaSwgYmVjYXVzZSB0aGlzIGZuIGlzIGxvdy1sZXZlbCBhcGkuXG4gICAgICAgICAgICByZXMuX2Quc2V0VGltZShyZXMuX2QudmFsdWVPZigpICsgZGlmZik7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0KS5sb2NhbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF0ZU9mZnNldChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lLCBrZWVwTWludXRlcykge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBsb2NhbEFkanVzdDtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoaW5wdXQpIDwgMTYgJiYgIWtlZXBNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1VUQyAmJiBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0ID0gaW5wdXQ7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IHRydWU7XG4gICAgICAgICAgICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkKGxvY2FsQWRqdXN0LCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWtlZXBMb2NhbFRpbWUgfHwgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICBhZGRTdWJ0cmFjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEdXJhdGlvbihpbnB1dCAtIG9mZnNldCwgJ20nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyBvZmZzZXQgOiBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0Wm9uZShpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwoa2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAodGhpcy5faXNVVEMpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcyksICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQgPSBpbnB1dCA/IGNyZWF0ZUxvY2FsKGlucHV0KS51dGNPZmZzZXQoKSA6IDA7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLnV0Y09mZnNldCgpIC0gaW5wdXQpICUgNjAgPT09IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWUoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9LFxuICAgICAgICAgICAgb3RoZXI7XG5cbiAgICAgICAgY29weUNvbmZpZyhjLCB0aGlzKTtcbiAgICAgICAgYyA9IHByZXBhcmVDb25maWcoYyk7XG5cbiAgICAgICAgaWYgKGMuX2EpIHtcbiAgICAgICAgICAgIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiYgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oLXxcXCspPyg/OihcXGQqKVsuIF0pPyhcXGQrKTooXFxkKykoPzo6KFxcZCspKFxcLlxcZCopPyk/JC8sXG4gICAgICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAgICAgLy8gYW5kIGZ1cnRoZXIgbW9kaWZpZWQgdG8gYWxsb3cgZm9yIHN0cmluZ3MgY29udGFpbmluZyBib3RoIHdlZWsgYW5kIGRheVxuICAgICAgICBpc29SZWdleCA9XG4gICAgICAgICAgICAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRHVyYXRpb24oaW5wdXQsIGtleSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBpbnB1dCxcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVuc2l2ZSwgZG8gaXQgb24gZGVtYW5kXG4gICAgICAgICAgICBtYXRjaCA9IG51bGwsXG4gICAgICAgICAgICBzaWduLFxuICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAgZGlmZlJlcztcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIG1zOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQ6IGlucHV0Ll9kYXlzLFxuICAgICAgICAgICAgICAgIE06IGlucHV0Ll9tb250aHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSB8fCAhaXNOYU4oK2lucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gK2lucHV0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbi5taWxsaXNlY29uZHMgPSAraW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gbWF0Y2hbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgZDogdG9JbnQobWF0Y2hbREFURV0pICogc2lnbixcbiAgICAgICAgICAgICAgICBoOiB0b0ludChtYXRjaFtIT1VSXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIG06IHRvSW50KG1hdGNoW01JTlVURV0pICogc2lnbixcbiAgICAgICAgICAgICAgICBzOiB0b0ludChtYXRjaFtTRUNPTkRdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbXM6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24sIC8vIHRoZSBtaWxsaXNlY29uZCBkZWNpbWFsIHBvaW50IGlzIGluY2x1ZGVkIGluIHRoZSBtYXRjaFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICgobWF0Y2ggPSBpc29SZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSBtYXRjaFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeTogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIE06IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3OiBwYXJzZUlzbyhtYXRjaFs0XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgZDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGg6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtOiBwYXJzZUlzbyhtYXRjaFs3XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgczogcGFyc2VJc28obWF0Y2hbOF0sIHNpZ24pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShcbiAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbChkdXJhdGlvbi5mcm9tKSxcbiAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbChkdXJhdGlvbi50bylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfaXNWYWxpZCcpKSB7XG4gICAgICAgICAgICByZXQuX2lzVmFsaWQgPSBpbnB1dC5faXNWYWxpZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgY3JlYXRlRHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGU7XG4gICAgY3JlYXRlRHVyYXRpb24uaW52YWxpZCA9IGNyZWF0ZUludmFsaWQkMTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge307XG5cbiAgICAgICAgcmVzLm1vbnRocyA9XG4gICAgICAgICAgICBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICsgKG90aGVyLnllYXIoKSAtIGJhc2UueWVhcigpKSAqIDEyO1xuICAgICAgICBpZiAoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpLmlzQWZ0ZXIob3RoZXIpKSB7XG4gICAgICAgICAgICAtLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gK290aGVyIC0gK2Jhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIGlmICghKGJhc2UuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBvdGhlciA9IGNsb25lV2l0aE9mZnNldChvdGhlciwgYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzQmVmb3JlKG90aGVyKSkge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKG90aGVyLCBiYXNlKTtcbiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSAtcmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIHJlcy5tb250aHMgPSAtcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmVtb3ZlICduYW1lJyBhcmcgYWZ0ZXIgZGVwcmVjYXRpb24gaXMgcmVtb3ZlZFxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFkZGVyKGRpcmVjdGlvbiwgbmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbCwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgZHVyLCB0bXA7XG4gICAgICAgICAgICAvL2ludmVydCB0aGUgYXJndW1lbnRzLCBidXQgY29tcGxhaW4gYWJvdXQgaXRcbiAgICAgICAgICAgIGlmIChwZXJpb2QgIT09IG51bGwgJiYgIWlzTmFOKCtwZXJpb2QpKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAnbW9tZW50KCkuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcobnVtYmVyLCBwZXJpb2QpLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9hZGQtaW52ZXJ0ZWQtcGFyYW0vIGZvciBtb3JlIGluZm8uJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdG1wID0gdmFsO1xuICAgICAgICAgICAgICAgIHZhbCA9IHBlcmlvZDtcbiAgICAgICAgICAgICAgICBwZXJpb2QgPSB0bXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGR1ciA9IGNyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTtcbiAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0KG1vbSwgZHVyYXRpb24sIGlzQWRkaW5nLCB1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uLl9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICBkYXlzID0gYWJzUm91bmQoZHVyYXRpb24uX2RheXMpLFxuICAgICAgICAgICAgbW9udGhzID0gYWJzUm91bmQoZHVyYXRpb24uX21vbnRocyk7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlT2Zmc2V0ID0gdXBkYXRlT2Zmc2V0ID09IG51bGwgPyB0cnVlIDogdXBkYXRlT2Zmc2V0O1xuXG4gICAgICAgIGlmIChtb250aHMpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKG1vbSwgZ2V0KG1vbSwgJ01vbnRoJykgKyBtb250aHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRheXMpIHtcbiAgICAgICAgICAgIHNldCQxKG1vbSwgJ0RhdGUnLCBnZXQobW9tLCAnRGF0ZScpICsgZGF5cyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgICBtb20uX2Quc2V0VGltZShtb20uX2QudmFsdWVPZigpICsgbWlsbGlzZWNvbmRzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChtb20sIGRheXMgfHwgbW9udGhzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhZGQgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyksXG4gICAgICAgIHN1YnRyYWN0ID0gY3JlYXRlQWRkZXIoLTEsICdzdWJ0cmFjdCcpO1xuXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gdHlwZSBNb21lbnRJbnB1dCA9IE1vbWVudCB8IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCAobnVtYmVyIHwgc3RyaW5nKVtdIHwgTW9tZW50SW5wdXRPYmplY3QgfCB2b2lkOyAvLyBudWxsIHwgdW5kZWZpbmVkXG4gICAgZnVuY3Rpb24gaXNNb21lbnRJbnB1dChpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNNb21lbnQoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc0RhdGUoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc1N0cmluZyhpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzTnVtYmVyKGlucHV0KSB8fFxuICAgICAgICAgICAgaXNOdW1iZXJPclN0cmluZ0FycmF5KGlucHV0KSB8fFxuICAgICAgICAgICAgaXNNb21lbnRJbnB1dE9iamVjdChpbnB1dCkgfHxcbiAgICAgICAgICAgIGlucHV0ID09PSBudWxsIHx8XG4gICAgICAgICAgICBpbnB1dCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnRJbnB1dE9iamVjdChpbnB1dCkge1xuICAgICAgICB2YXIgb2JqZWN0VGVzdCA9IGlzT2JqZWN0KGlucHV0KSAmJiAhaXNPYmplY3RFbXB0eShpbnB1dCksXG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICAgICAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgICAgICAgICAneWVhcicsXG4gICAgICAgICAgICAgICAgJ3knLFxuICAgICAgICAgICAgICAgICdtb250aHMnLFxuICAgICAgICAgICAgICAgICdtb250aCcsXG4gICAgICAgICAgICAgICAgJ00nLFxuICAgICAgICAgICAgICAgICdkYXlzJyxcbiAgICAgICAgICAgICAgICAnZGF5JyxcbiAgICAgICAgICAgICAgICAnZCcsXG4gICAgICAgICAgICAgICAgJ2RhdGVzJyxcbiAgICAgICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAgICAgJ0QnLFxuICAgICAgICAgICAgICAgICdob3VycycsXG4gICAgICAgICAgICAgICAgJ2hvdXInLFxuICAgICAgICAgICAgICAgICdoJyxcbiAgICAgICAgICAgICAgICAnbWludXRlcycsXG4gICAgICAgICAgICAgICAgJ21pbnV0ZScsXG4gICAgICAgICAgICAgICAgJ20nLFxuICAgICAgICAgICAgICAgICdzZWNvbmRzJyxcbiAgICAgICAgICAgICAgICAnc2Vjb25kJyxcbiAgICAgICAgICAgICAgICAncycsXG4gICAgICAgICAgICAgICAgJ21pbGxpc2Vjb25kcycsXG4gICAgICAgICAgICAgICAgJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgICAgICAgICAnbXMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIHByb3BlcnR5TGVuID0gcHJvcGVydGllcy5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb3BlcnR5TGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IHByb3BlcnR5VGVzdCB8fCBoYXNPd25Qcm9wKGlucHV0LCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0VGVzdCAmJiBwcm9wZXJ0eVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXJPclN0cmluZ0FycmF5KGlucHV0KSB7XG4gICAgICAgIHZhciBhcnJheVRlc3QgPSBpc0FycmF5KGlucHV0KSxcbiAgICAgICAgICAgIGRhdGFUeXBlVGVzdCA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJyYXlUZXN0KSB7XG4gICAgICAgICAgICBkYXRhVHlwZVRlc3QgPVxuICAgICAgICAgICAgICAgIGlucHV0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzTnVtYmVyKGl0ZW0pICYmIGlzU3RyaW5nKGlucHV0KTtcbiAgICAgICAgICAgICAgICB9KS5sZW5ndGggPT09IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5VGVzdCAmJiBkYXRhVHlwZVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYWxlbmRhclNwZWMoaW5wdXQpIHtcbiAgICAgICAgdmFyIG9iamVjdFRlc3QgPSBpc09iamVjdChpbnB1dCkgJiYgIWlzT2JqZWN0RW1wdHkoaW5wdXQpLFxuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgICAgICAgICdzYW1lRGF5JyxcbiAgICAgICAgICAgICAgICAnbmV4dERheScsXG4gICAgICAgICAgICAgICAgJ2xhc3REYXknLFxuICAgICAgICAgICAgICAgICduZXh0V2VlaycsXG4gICAgICAgICAgICAgICAgJ2xhc3RXZWVrJyxcbiAgICAgICAgICAgICAgICAnc2FtZUVsc2UnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwcm9wZXJ0eTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gcHJvcGVydHlUZXN0IHx8IGhhc093blByb3AoaW5wdXQsIHByb3BlcnR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmplY3RUZXN0ICYmIHByb3BlcnR5VGVzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDYWxlbmRhckZvcm1hdChteU1vbWVudCwgbm93KSB7XG4gICAgICAgIHZhciBkaWZmID0gbXlNb21lbnQuZGlmZihub3csICdkYXlzJywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBkaWZmIDwgLTZcbiAgICAgICAgICAgID8gJ3NhbWVFbHNlJ1xuICAgICAgICAgICAgOiBkaWZmIDwgLTFcbiAgICAgICAgICAgICAgPyAnbGFzdFdlZWsnXG4gICAgICAgICAgICAgIDogZGlmZiA8IDBcbiAgICAgICAgICAgICAgICA/ICdsYXN0RGF5J1xuICAgICAgICAgICAgICAgIDogZGlmZiA8IDFcbiAgICAgICAgICAgICAgICAgID8gJ3NhbWVEYXknXG4gICAgICAgICAgICAgICAgICA6IGRpZmYgPCAyXG4gICAgICAgICAgICAgICAgICAgID8gJ25leHREYXknXG4gICAgICAgICAgICAgICAgICAgIDogZGlmZiA8IDdcbiAgICAgICAgICAgICAgICAgICAgICA/ICduZXh0V2VlaydcbiAgICAgICAgICAgICAgICAgICAgICA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSh0aW1lLCBmb3JtYXRzKSB7XG4gICAgICAgIC8vIFN1cHBvcnQgZm9yIHNpbmdsZSBwYXJhbWV0ZXIsIGZvcm1hdHMgb25seSBvdmVybG9hZCB0byB0aGUgY2FsZW5kYXIgZnVuY3Rpb25cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmICghYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgdGltZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc01vbWVudElucHV0KGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgICAgICAgICB0aW1lID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGZvcm1hdHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2FsZW5kYXJTcGVjKGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHRpbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugd2FudCB0byBjb21wYXJlIHRoZSBzdGFydCBvZiB0b2RheSwgdnMgdGhpcy5cbiAgICAgICAgLy8gR2V0dGluZyBzdGFydC1vZi10b2RheSBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUgbG9jYWwvdXRjL29mZnNldCBvciBub3QuXG4gICAgICAgIHZhciBub3cgPSB0aW1lIHx8IGNyZWF0ZUxvY2FsKCksXG4gICAgICAgICAgICBzb2QgPSBjbG9uZVdpdGhPZmZzZXQobm93LCB0aGlzKS5zdGFydE9mKCdkYXknKSxcbiAgICAgICAgICAgIGZvcm1hdCA9IGhvb2tzLmNhbGVuZGFyRm9ybWF0KHRoaXMsIHNvZCkgfHwgJ3NhbWVFbHNlJyxcbiAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0cyAmJlxuICAgICAgICAgICAgICAgIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSlcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpXG4gICAgICAgICAgICAgICAgICAgIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQoXG4gICAgICAgICAgICBvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBjcmVhdGVMb2NhbChub3cpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FmdGVyKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA+IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsSW5wdXQudmFsdWVPZigpIDwgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmVmb3JlKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4oZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkge1xuICAgICAgICB2YXIgbG9jYWxGcm9tID0gaXNNb21lbnQoZnJvbSkgPyBmcm9tIDogY3JlYXRlTG9jYWwoZnJvbSksXG4gICAgICAgICAgICBsb2NhbFRvID0gaXNNb21lbnQodG8pID8gdG8gOiBjcmVhdGVMb2NhbCh0byk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsRnJvbS5pc1ZhbGlkKCkgJiYgbG9jYWxUby5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzBdID09PSAnKCdcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNBZnRlcihsb2NhbEZyb20sIHVuaXRzKVxuICAgICAgICAgICAgICAgIDogIXRoaXMuaXNCZWZvcmUobG9jYWxGcm9tLCB1bml0cykpICYmXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5pc0JlZm9yZShsb2NhbFRvLCB1bml0cylcbiAgICAgICAgICAgICAgICA6ICF0aGlzLmlzQWZ0ZXIobG9jYWxUbywgdW5pdHMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KSxcbiAgICAgICAgICAgIGlucHV0TXM7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID09PSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmXG4gICAgICAgICAgICAgICAgaW5wdXRNcyA8PSB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQWZ0ZXIoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNBZnRlcihpbnB1dCwgdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQmVmb3JlKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlmZihpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHtcbiAgICAgICAgdmFyIHRoYXQsIHpvbmVEZWx0YSwgb3V0cHV0O1xuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTtcblxuICAgICAgICBpZiAoIXRoYXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDtcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAxMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMWUzO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwXG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmKGEsIGIpIHtcbiAgICAgICAgaWYgKGEuZGF0ZSgpIDwgYi5kYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIGVuZC1vZi1tb250aCBjYWxjdWxhdGlvbnMgd29yayBjb3JyZWN0IHdoZW4gdGhlIHN0YXJ0IG1vbnRoIGhhcyBtb3JlXG4gICAgICAgICAgICAvLyBkYXlzIHRoYW4gdGhlIGVuZCBtb250aC5cbiAgICAgICAgICAgIHJldHVybiAtbW9udGhEaWZmKGIsIGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9IChiLnllYXIoKSAtIGEueWVhcigpKSAqIDEyICsgKGIubW9udGgoKSAtIGEubW9udGgoKSksXG4gICAgICAgICAgICAvLyBiIGlzIGluIChhbmNob3IgLSAxIG1vbnRoLCBhbmNob3IgKyAxIG1vbnRoKVxuICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLFxuICAgICAgICAgICAgYW5jaG9yMixcbiAgICAgICAgICAgIGFkanVzdDtcblxuICAgICAgICBpZiAoYiAtIGFuY2hvciA8IDApIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmIC0gMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IgLSBhbmNob3IyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IyIC0gYW5jaG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgZm9yIG5lZ2F0aXZlIHplcm8sIHJldHVybiB6ZXJvIGlmIG5lZ2F0aXZlIHplcm9cbiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7XG4gICAgfVxuXG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJztcblxuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmcoa2VlcE9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXRjID0ga2VlcE9mZnNldCAhPT0gdHJ1ZSxcbiAgICAgICAgICAgIG0gPSB1dGMgPyB0aGlzLmNsb25lKCkudXRjKCkgOiB0aGlzO1xuICAgICAgICBpZiAobS55ZWFyKCkgPCAwIHx8IG0ueWVhcigpID4gOTk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChcbiAgICAgICAgICAgICAgICBtLFxuICAgICAgICAgICAgICAgIHV0Y1xuICAgICAgICAgICAgICAgICAgICA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nXG4gICAgICAgICAgICAgICAgICAgIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgICAgICAgIGlmICh1dGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkgKyB0aGlzLnV0Y09mZnNldCgpICogNjAgKiAxMDAwKVxuICAgICAgICAgICAgICAgICAgICAudG9JU09TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnWicsIGZvcm1hdE1vbWVudChtLCAnWicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICAgIHV0YyA/ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhblxuICAgICAqIGFsc28gYmUgZXZhbHVhdGVkIHRvIGdldCBhIG5ldyBtb21lbnQgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtb21lbnQuaW52YWxpZCgvKiAnICsgdGhpcy5faSArICcgKi8pJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnVuYyA9ICdtb21lbnQnLFxuICAgICAgICAgICAgem9uZSA9ICcnLFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIGRhdGV0aW1lLFxuICAgICAgICAgICAgc3VmZml4O1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbCgpKSB7XG4gICAgICAgICAgICBmdW5jID0gdGhpcy51dGNPZmZzZXQoKSA9PT0gMCA/ICdtb21lbnQudXRjJyA6ICdtb21lbnQucGFyc2Vab25lJztcbiAgICAgICAgICAgIHpvbmUgPSAnWic7XG4gICAgICAgIH1cbiAgICAgICAgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgeWVhciA9IDAgPD0gdGhpcy55ZWFyKCkgJiYgdGhpcy55ZWFyKCkgPD0gOTk5OSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICBkYXRldGltZSA9ICctTU0tRERbVF1ISDptbTpzcy5TU1MnO1xuICAgICAgICBzdWZmaXggPSB6b25lICsgJ1tcIildJztcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQocHJlZml4ICsgeWVhciArIGRhdGV0aW1lICsgc3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKClcbiAgICAgICAgICAgICAgICA/IGhvb2tzLmRlZmF1bHRGb3JtYXRVdGNcbiAgICAgICAgICAgICAgICA6IGhvb2tzLmRlZmF1bHRGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbSh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fCBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHsgdG86IHRoaXMsIGZyb206IHRpbWUgfSlcbiAgICAgICAgICAgICAgICAubG9jYWxlKHRoaXMubG9jYWxlKCkpXG4gICAgICAgICAgICAgICAgLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbU5vdyh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8odGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHwgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7IGZyb206IHRoaXMsIHRvOiB0aW1lIH0pXG4gICAgICAgICAgICAgICAgLmxvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgICAgICAgICAgIC5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93KHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpc1xuICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuXG4gICAgZnVuY3Rpb24gbG9jYWxlKGtleSkge1xuICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTtcblxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsXG4gICAgICAgIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICB2YXIgTVNfUEVSX1NFQ09ORCA9IDEwMDAsXG4gICAgICAgIE1TX1BFUl9NSU5VVEUgPSA2MCAqIE1TX1BFUl9TRUNPTkQsXG4gICAgICAgIE1TX1BFUl9IT1VSID0gNjAgKiBNU19QRVJfTUlOVVRFLFxuICAgICAgICBNU19QRVJfNDAwX1lFQVJTID0gKDM2NSAqIDQwMCArIDk3KSAqIDI0ICogTVNfUEVSX0hPVVI7XG5cbiAgICAvLyBhY3R1YWwgbW9kdWxvIC0gaGFuZGxlcyBuZWdhdGl2ZSBudW1iZXJzIChmb3IgZGF0ZXMgYmVmb3JlIDE5NzApOlxuICAgIGZ1bmN0aW9uIG1vZCQxKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICAgIHJldHVybiAoKGRpdmlkZW5kICUgZGl2aXNvcikgKyBkaXZpc29yKSAlIGRpdmlzb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHV0Y1N0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gRGF0ZS5VVEMgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSwgbSwgZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lLCBzdGFydE9mRGF0ZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCkgLSAodGhpcy5tb250aCgpICUgMyksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gKHRoaXMuaXNvV2Vla2RheSgpIC0gMSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMShcbiAgICAgICAgICAgICAgICAgICAgdGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksXG4gICAgICAgICAgICAgICAgICAgIE1TX1BFUl9IT1VSXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lLCBzdGFydE9mRGF0ZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSArIDEsIDAsIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpIC0gKHRoaXMubW9udGgoKSAlIDMpICsgMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgKyAxLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KCkgKyA3XG4gICAgICAgICAgICAgICAgICAgICkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpICsgN1xuICAgICAgICAgICAgICAgICAgICApIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgKyAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPVxuICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUiAtXG4gICAgICAgICAgICAgICAgICAgIG1vZCQxKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksXG4gICAgICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUlxuICAgICAgICAgICAgICAgICAgICApIC1cbiAgICAgICAgICAgICAgICAgICAgMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz0gTVNfUEVSX01JTlVURSAtIG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz0gTVNfUEVSX1NFQ09ORCAtIG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWx1ZU9mKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW5peCgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9BcnJheSgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbS55ZWFyKCksXG4gICAgICAgICAgICBtLm1vbnRoKCksXG4gICAgICAgICAgICBtLmRhdGUoKSxcbiAgICAgICAgICAgIG0uaG91cigpLFxuICAgICAgICAgICAgbS5taW51dGUoKSxcbiAgICAgICAgICAgIG0uc2Vjb25kKCksXG4gICAgICAgICAgICBtLm1pbGxpc2Vjb25kKCksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9PYmplY3QoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXJzOiBtLnllYXIoKSxcbiAgICAgICAgICAgIG1vbnRoczogbS5tb250aCgpLFxuICAgICAgICAgICAgZGF0ZTogbS5kYXRlKCksXG4gICAgICAgICAgICBob3VyczogbS5ob3VycygpLFxuICAgICAgICAgICAgbWludXRlczogbS5taW51dGVzKCksXG4gICAgICAgICAgICBzZWNvbmRzOiBtLnNlY29uZHMoKSxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kczogbS5taWxsaXNlY29uZHMoKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgICAgIC8vIG5ldyBEYXRlKE5hTikudG9KU09OKCkgPT09IG51bGxcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy50b0lTT1N0cmluZygpIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDIoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgcmV0dXJuIGV4dGVuZCh7fSwgZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkQXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJzaW5nRmxhZ3ModGhpcykub3ZlcmZsb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRpb25EYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuX2ksXG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX2YsXG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMuX2xvY2FsZSxcbiAgICAgICAgICAgIGlzVVRDOiB0aGlzLl9pc1VUQyxcbiAgICAgICAgICAgIHN0cmljdDogdGhpcy5fc3RyaWN0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdOJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk4nLCAwLCAwLCAnZXJhQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTk4nLCAwLCAwLCAnZXJhQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTk5OJywgMCwgMCwgJ2VyYU5hbWUnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OTk4nLCAwLCAwLCAnZXJhTmFycm93Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneScsIDFdLCAneW8nLCAnZXJhWWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5eScsIDJdLCAwLCAnZXJhWWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5eXknLCAzXSwgMCwgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXl5eScsIDRdLCAwLCAnZXJhWWVhcicpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignTicsIG1hdGNoRXJhQWJicik7XG4gICAgYWRkUmVnZXhUb2tlbignTk4nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTicsIG1hdGNoRXJhQWJicik7XG4gICAgYWRkUmVnZXhUb2tlbignTk5OTicsIG1hdGNoRXJhTmFtZSk7XG4gICAgYWRkUmVnZXhUb2tlbignTk5OTk4nLCBtYXRjaEVyYU5hcnJvdyk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFxuICAgICAgICBbJ04nLCAnTk4nLCAnTk5OJywgJ05OTk4nLCAnTk5OTk4nXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgdmFyIGVyYSA9IGNvbmZpZy5fbG9jYWxlLmVyYXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgICAgIGlmIChlcmEpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lcmEgPSBlcmE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRFcmEgPSBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBhZGRSZWdleFRva2VuKCd5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXl5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneW8nLCBtYXRjaEVyYVllYXJPcmRpbmFsKTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWyd5JywgJ3l5JywgJ3l5eScsICd5eXl5J10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWyd5byddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgaWYgKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSB7XG4gICAgICAgICAgICBtYXRjaCA9IGlucHV0Lm1hdGNoKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKSB7XG4gICAgICAgICAgICBhcnJheVtZRUFSXSA9IGNvbmZpZy5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2UoaW5wdXQsIG1hdGNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhcyhtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLl9lcmFzIHx8IGdldExvY2FsZSgnZW4nKS5fZXJhcztcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gaG9va3MoZXJhc1tpXS5zaW5jZSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0uc2luY2UgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLnVudGlsID0gK0luZmluaXR5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBob29rcyhlcmFzW2ldLnVudGlsKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0udW50aWwgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVyYXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhc1BhcnNlKGVyYU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmVyYXMoKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhYmJyLFxuICAgICAgICAgICAgbmFycm93O1xuICAgICAgICBlcmFOYW1lID0gZXJhTmFtZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgbmFtZSA9IGVyYXNbaV0ubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgYWJiciA9IGVyYXNbaV0uYWJici50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgbmFycm93ID0gZXJhc1tpXS5uYXJyb3cudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ04nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJiciA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTk4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hcnJvdyA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChbbmFtZSwgYWJiciwgbmFycm93XS5pbmRleE9mKGVyYU5hbWUpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUVyYXNDb252ZXJ0WWVhcihlcmEsIHllYXIpIHtcbiAgICAgICAgdmFyIGRpciA9IGVyYS5zaW5jZSA8PSBlcmEudW50aWwgPyArMSA6IC0xO1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCkgKyAoeWVhciAtIGVyYS5vZmZzZXQpICogZGlyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhTmFtZSgpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFcmFOYXJyb3coKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFycm93O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFycm93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVyYUFiYnIoKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0uYWJicjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLmFiYnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhWWVhcigpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBkaXIgPSBlcmFzW2ldLnNpbmNlIDw9IGVyYXNbaV0udW50aWwgPyArMSA6IC0xO1xuXG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB8fFxuICAgICAgICAgICAgICAgIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnllYXIoKSAtIGhvb2tzKGVyYXNbaV0uc2luY2UpLnllYXIoKSkgKiBkaXIgK1xuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLm9mZnNldFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJhc05hbWVSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19lcmFzTmFtZVJlZ2V4JykpIHtcbiAgICAgICAgICAgIGNvbXB1dGVFcmFzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgPyB0aGlzLl9lcmFzTmFtZVJlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVyYXNBYmJyUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc0FiYnJSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc0FiYnJSZWdleCA6IHRoaXMuX2VyYXNSZWdleDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcmFzTmFycm93UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc05hcnJvd1JlZ2V4JykpIHtcbiAgICAgICAgICAgIGNvbXB1dGVFcmFzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgPyB0aGlzLl9lcmFzTmFycm93UmVnZXggOiB0aGlzLl9lcmFzUmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFBYmJyKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzQWJiclJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYU5hbWUoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmVyYXNOYW1lUmVnZXgoaXNTdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhTmFycm93KGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzTmFycm93UmVnZXgoaXNTdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhWWVhck9yZGluYWwoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4IHx8IG1hdGNoVW5zaWduZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZUVyYXNQYXJzZSgpIHtcbiAgICAgICAgdmFyIGFiYnJQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG5hbWVQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG5hcnJvd1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZXJhc05hbWUsXG4gICAgICAgICAgICBlcmFzQWJicixcbiAgICAgICAgICAgIGVyYXNOYXJyb3csXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5lcmFzKCk7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBlcmFzTmFtZSA9IHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFtZSk7XG4gICAgICAgICAgICBlcmFzQWJiciA9IHJlZ2V4RXNjYXBlKGVyYXNbaV0uYWJicik7XG4gICAgICAgICAgICBlcmFzTmFycm93ID0gcmVnZXhFc2NhcGUoZXJhc1tpXS5uYXJyb3cpO1xuXG4gICAgICAgICAgICBuYW1lUGllY2VzLnB1c2goZXJhc05hbWUpO1xuICAgICAgICAgICAgYWJiclBpZWNlcy5wdXNoKGVyYXNBYmJyKTtcbiAgICAgICAgICAgIG5hcnJvd1BpZWNlcy5wdXNoKGVyYXNOYXJyb3cpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChlcmFzTmFtZSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGVyYXNBYmJyKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goZXJhc05hcnJvdyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9lcmFzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX2VyYXNOYW1lUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBuYW1lUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fZXJhc0FiYnJSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGFiYnJQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9lcmFzTmFycm93UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIG5hcnJvd1BpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbih0b2tlbiwgZ2V0dGVyKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKDAsIFt0b2tlbiwgdG9rZW4ubGVuZ3RoXSwgMCwgZ2V0dGVyKTtcbiAgICB9XG5cbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnJywgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZ2cnLCAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHJywgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0cnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignZycsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdnZycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2cnLCBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihcbiAgICAgICAgWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZycsICdHRyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCkgKyB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csXG4gICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csXG4gICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3lcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrWWVhcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHRoaXMuaXNvV2VlaygpLFxuICAgICAgICAgICAgdGhpcy5pc29XZWVrZGF5KCksXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAgNFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5JU09XZWVrWWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMuaXNvV2Vla1llYXIoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2Vla3NJblllYXIoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luV2Vla1llYXIoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy53ZWVrWWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXJIZWxwZXIoaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrc1RhcmdldDtcbiAgICAgICAgaWYgKGlucHV0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKHRoaXMsIGRvdywgZG95KS55ZWFyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2Vla3NUYXJnZXQgPSB3ZWVrc0luWWVhcihpbnB1dCwgZG93LCBkb3kpO1xuICAgICAgICAgICAgaWYgKHdlZWsgPiB3ZWVrc1RhcmdldCkge1xuICAgICAgICAgICAgICAgIHdlZWsgPSB3ZWVrc1RhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXRXZWVrQWxsLmNhbGwodGhpcywgaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldFdlZWtBbGwod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBkYXlPZlllYXJEYXRhID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSksXG4gICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZShkYXlPZlllYXJEYXRhLnllYXIsIDAsIGRheU9mWWVhckRhdGEuZGF5T2ZZZWFyKTtcblxuICAgICAgICB0aGlzLnllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpKTtcbiAgICAgICAgdGhpcy5tb250aChkYXRlLmdldFVUQ01vbnRoKCkpO1xuICAgICAgICB0aGlzLmRhdGUoZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUScsIDAsICdRbycsICdxdWFydGVyJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbFxuICAgICAgICAgICAgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMylcbiAgICAgICAgICAgIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyAodGhpcy5tb250aCgpICUgMykpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRCcsIG1hdGNoMXRvMiwgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdFxuICAgICAgICAgICAgPyBsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2UgfHwgbG9jYWxlLl9vcmRpbmFsUGFyc2VcbiAgICAgICAgICAgIDogbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudDtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydEJywgJ0REJ10sIERBVEUpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtEQVRFXSA9IHRvSW50KGlucHV0Lm1hdGNoKG1hdGNoMXRvMilbMF0pO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldERheU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgbWF0Y2gxdG8zKTtcbiAgICBhZGRSZWdleFRva2VuKCdEREREJywgbWF0Y2gzKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnREREJywgJ0REREQnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyKGlucHV0KSB7XG4gICAgICAgIHZhciBkYXlPZlllYXIgPVxuICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAodGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpIC0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKSkgLyA4NjRlNVxuICAgICAgICAgICAgKSArIDE7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gZGF5T2ZZZWFyIDogdGhpcy5hZGQoaW5wdXQgLSBkYXlPZlllYXIsICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ20nLCBbJ21tJywgMl0sIDAsICdtaW51dGUnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ20nLCBtYXRjaDF0bzIsIG1hdGNoMXRvMkhhc1plcm8pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ21tJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydtJywgJ21tJ10sIE1JTlVURSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWludXRlID0gbWFrZUdldFNldCgnTWludXRlcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdzJywgWydzcycsIDJdLCAwLCAnc2Vjb25kJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdzJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJIYXNaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW4sIGdldFNldE1pbGxpc2Vjb25kO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cblxuICAgIGdldFNldE1pbGxpc2Vjb25kID0gbWFrZUdldFNldCgnTWlsbGlzZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3onLCAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gTW9tZW50LnByb3RvdHlwZTtcblxuICAgIHByb3RvLmFkZCA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmID0gZGlmZjtcbiAgICBwcm90by5lbmRPZiA9IGVuZE9mO1xuICAgIHByb3RvLmZvcm1hdCA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tID0gZnJvbTtcbiAgICBwcm90by5mcm9tTm93ID0gZnJvbU5vdztcbiAgICBwcm90by50byA9IHRvO1xuICAgIHByb3RvLnRvTm93ID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ID0gc3RyaW5nR2V0O1xuICAgIHByb3RvLmludmFsaWRBdCA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyID0gaXNBZnRlcjtcbiAgICBwcm90by5pc0JlZm9yZSA9IGlzQmVmb3JlO1xuICAgIHByb3RvLmlzQmV0d2VlbiA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkID0gaXNWYWxpZCQyO1xuICAgIHByb3RvLmxhbmcgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSA9IGxvY2FsZTtcbiAgICBwcm90by5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggPSBwcm90b3R5cGVNYXg7XG4gICAgcHJvdG8ubWluID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgPSBzdHJpbmdTZXQ7XG4gICAgcHJvdG8uc3RhcnRPZiA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgPSBpbnNwZWN0O1xuICAgIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuZm9yICE9IG51bGwpIHtcbiAgICAgICAgcHJvdG9bU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ01vbWVudDwnICsgdGhpcy5mb3JtYXQoKSArICc+JztcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvdG8udG9KU09OID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCA9IHVuaXg7XG4gICAgcHJvdG8udmFsdWVPZiA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhID0gY3JlYXRpb25EYXRhO1xuICAgIHByb3RvLmVyYU5hbWUgPSBnZXRFcmFOYW1lO1xuICAgIHByb3RvLmVyYU5hcnJvdyA9IGdldEVyYU5hcnJvdztcbiAgICBwcm90by5lcmFBYmJyID0gZ2V0RXJhQWJicjtcbiAgICBwcm90by5lcmFZZWFyID0gZ2V0RXJhWWVhcjtcbiAgICBwcm90by55ZWFyID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayA9IHByb3RvLndlZWtzID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrID0gcHJvdG8uaXNvV2Vla3MgPSBnZXRTZXRJU09XZWVrO1xuICAgIHByb3RvLndlZWtzSW5ZZWFyID0gZ2V0V2Vla3NJblllYXI7XG4gICAgcHJvdG8ud2Vla3NJbldlZWtZZWFyID0gZ2V0V2Vla3NJbldlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uaXNvV2Vla3NJbklTT1dlZWtZZWFyID0gZ2V0SVNPV2Vla3NJbklTT1dlZWtZZWFyO1xuICAgIHByb3RvLmRhdGUgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSA9IHByb3RvLmRheXMgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciA9IGdldFNldERheU9mWWVhcjtcbiAgICBwcm90by5ob3VyID0gcHJvdG8uaG91cnMgPSBnZXRTZXRIb3VyO1xuICAgIHByb3RvLm1pbnV0ZSA9IHByb3RvLm1pbnV0ZXMgPSBnZXRTZXRNaW51dGU7XG4gICAgcHJvdG8uc2Vjb25kID0gcHJvdG8uc2Vjb25kcyA9IGdldFNldFNlY29uZDtcbiAgICBwcm90by5taWxsaXNlY29uZCA9IHByb3RvLm1pbGxpc2Vjb25kcyA9IGdldFNldE1pbGxpc2Vjb25kO1xuICAgIHByb3RvLnV0Y09mZnNldCA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQ7XG4gICAgcHJvdG8uaGFzQWxpZ25lZEhvdXJPZmZzZXQgPSBoYXNBbGlnbmVkSG91ck9mZnNldDtcbiAgICBwcm90by5pc0RTVCA9IGlzRGF5bGlnaHRTYXZpbmdUaW1lO1xuICAgIHByb3RvLmlzTG9jYWwgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0U2V0RGF5T2ZNb250aFxuICAgICk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkJyxcbiAgICAgICAgZ2V0U2V0TW9udGhcbiAgICApO1xuICAgIHByb3RvLnllYXJzID0gZGVwcmVjYXRlKFxuICAgICAgICAneWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCcsXG4gICAgICAgIGdldFNldFllYXJcbiAgICApO1xuICAgIHByb3RvLnpvbmUgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsXG4gICAgICAgIGdldFNldFpvbmVcbiAgICApO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2lzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24nLFxuICAgICAgICBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWRcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlVW5peChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdChzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMSA9IExvY2FsZS5wcm90b3R5cGU7XG5cbiAgICBwcm90byQxLmNhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgPSBpbnZhbGlkRGF0ZTtcbiAgICBwcm90byQxLm9yZGluYWwgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7XG4gICAgcHJvdG8kMS5wb3N0Zm9ybWF0ID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgPSBzZXQ7XG4gICAgcHJvdG8kMS5lcmFzID0gbG9jYWxlRXJhcztcbiAgICBwcm90byQxLmVyYXNQYXJzZSA9IGxvY2FsZUVyYXNQYXJzZTtcbiAgICBwcm90byQxLmVyYXNDb252ZXJ0WWVhciA9IGxvY2FsZUVyYXNDb252ZXJ0WWVhcjtcbiAgICBwcm90byQxLmVyYXNBYmJyUmVnZXggPSBlcmFzQWJiclJlZ2V4O1xuICAgIHByb3RvJDEuZXJhc05hbWVSZWdleCA9IGVyYXNOYW1lUmVnZXg7XG4gICAgcHJvdG8kMS5lcmFzTmFycm93UmVnZXggPSBlcmFzTmFycm93UmVnZXg7XG5cbiAgICBwcm90byQxLm1vbnRocyA9IGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ID0gbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSA9IGxvY2FsZU1vbnRoc1BhcnNlO1xuICAgIHByb3RvJDEubW9udGhzUmVnZXggPSBtb250aHNSZWdleDtcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0UmVnZXggPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgPSBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluID0gbG9jYWxlV2Vla2RheXNNaW47XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0ID0gbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgPSBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ID0gd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCA9IHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggPSB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBsb2NhbGUgPSBnZXRMb2NhbGUoKSxcbiAgICAgICAgICAgIHV0YyA9IGNyZWF0ZVVUQygpLnNldChzZXR0ZXIsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZVtmaWVsZF0odXRjLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG91dCA9IFtdO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzKGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzU2hvcnQoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0KGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzTWluKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGVyYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDEtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiArSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBbm5vIERvbWluaScsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQUQnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdBRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMC0xMi0zMScsXG4gICAgICAgICAgICAgICAgdW50aWw6IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0JlZm9yZSBDaHJpc3QnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0JDJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQkMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgdG9JbnQoKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIGhvb2tzLmxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsXG4gICAgICAgIGdldFNldEdsb2JhbExvY2FsZVxuICAgICk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0TG9jYWxlXG4gICAgKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSBtYXRoQWJzKHRoaXMuX21pbGxpc2Vjb25kcyk7XG4gICAgICAgIHRoaXMuX2RheXMgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtYXRoQWJzKGRhdGEubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzID0gbWF0aEFicyhkYXRhLnNlY29uZHMpO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgPSBtYXRoQWJzKGRhdGEubWludXRlcyk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1hdGhBYnMoZGF0YS5tb250aHMpO1xuICAgICAgICBkYXRhLnllYXJzID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRpcmVjdGlvbikge1xuICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVEdXJhdGlvbihpbnB1dCwgdmFsdWUpO1xuXG4gICAgICAgIGR1cmF0aW9uLl9taWxsaXNlY29uZHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21pbGxpc2Vjb25kcztcbiAgICAgICAgZHVyYXRpb24uX2RheXMgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMShpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAxKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBzdWJ0cmFjdCgxLCAncycpIG9yIHN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0JDEoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlKCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMsXG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMsXG4gICAgICAgICAgICBkYXRhID0gdGhpcy5fZGF0YSxcbiAgICAgICAgICAgIHNlY29uZHMsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIG1vbnRoc0Zyb21EYXlzO1xuXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3RcbiAgICAgICAgLy8gY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yMTY2XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKVxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyhkYXlzKSB7XG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDE0NjA5NyBkYXlzICh0YWtpbmcgaW50byBhY2NvdW50IGxlYXAgeWVhciBydWxlcylcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwXG4gICAgICAgIHJldHVybiAoZGF5cyAqIDQ4MDApIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyhtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiAobW9udGhzICogMTQ2MDk3KSAvIDQ4MDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXModW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cyxcbiAgICAgICAgICAgIG1vbnRocyxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICdxdWFydGVyJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocztcbiAgICAgICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocyAvIDM7XG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgLyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXlzIC8gNyArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDI0ICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDE0NDAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlQXMoYWxpYXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzKGFsaWFzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYXNNaWxsaXNlY29uZHMgPSBtYWtlQXMoJ21zJyksXG4gICAgICAgIGFzU2Vjb25kcyA9IG1ha2VBcygncycpLFxuICAgICAgICBhc01pbnV0ZXMgPSBtYWtlQXMoJ20nKSxcbiAgICAgICAgYXNIb3VycyA9IG1ha2VBcygnaCcpLFxuICAgICAgICBhc0RheXMgPSBtYWtlQXMoJ2QnKSxcbiAgICAgICAgYXNXZWVrcyA9IG1ha2VBcygndycpLFxuICAgICAgICBhc01vbnRocyA9IG1ha2VBcygnTScpLFxuICAgICAgICBhc1F1YXJ0ZXJzID0gbWFrZUFzKCdRJyksXG4gICAgICAgIGFzWWVhcnMgPSBtYWtlQXMoJ3knKSxcbiAgICAgICAgdmFsdWVPZiQxID0gYXNNaWxsaXNlY29uZHM7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKSxcbiAgICAgICAgc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKSxcbiAgICAgICAgbWludXRlcyA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKSxcbiAgICAgICAgaG91cnMgPSBtYWtlR2V0dGVyKCdob3VycycpLFxuICAgICAgICBkYXlzID0gbWFrZUdldHRlcignZGF5cycpLFxuICAgICAgICBtb250aHMgPSBtYWtlR2V0dGVyKCdtb250aHMnKSxcbiAgICAgICAgeWVhcnMgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQsXG4gICAgICAgIHRocmVzaG9sZHMgPSB7XG4gICAgICAgICAgICBzczogNDQsIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICAgICAgczogNDUsIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgICAgICBtOiA0NSwgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgICAgICBoOiAyMiwgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgICAgICBkOiAyNiwgLy8gZGF5cyB0byBtb250aC93ZWVrXG4gICAgICAgICAgICB3OiBudWxsLCAvLyB3ZWVrcyB0byBtb250aFxuICAgICAgICAgICAgTTogMTEsIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCB0aHJlc2hvbGRzLCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpLFxuICAgICAgICAgICAgc2Vjb25kcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpLFxuICAgICAgICAgICAgbWludXRlcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpLFxuICAgICAgICAgICAgaG91cnMgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKSxcbiAgICAgICAgICAgIGRheXMgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKSxcbiAgICAgICAgICAgIG1vbnRocyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpLFxuICAgICAgICAgICAgd2Vla3MgPSByb3VuZChkdXJhdGlvbi5hcygndycpKSxcbiAgICAgICAgICAgIHllYXJzID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSksXG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICAoc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdKSB8fFxuICAgICAgICAgICAgICAgIChzZWNvbmRzIDwgdGhyZXNob2xkcy5zICYmIFsnc3MnLCBzZWNvbmRzXSkgfHxcbiAgICAgICAgICAgICAgICAobWludXRlcyA8PSAxICYmIFsnbSddKSB8fFxuICAgICAgICAgICAgICAgIChtaW51dGVzIDwgdGhyZXNob2xkcy5tICYmIFsnbW0nLCBtaW51dGVzXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPD0gMSAmJiBbJ2gnXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPCB0aHJlc2hvbGRzLmggJiYgWydoaCcsIGhvdXJzXSkgfHxcbiAgICAgICAgICAgICAgICAoZGF5cyA8PSAxICYmIFsnZCddKSB8fFxuICAgICAgICAgICAgICAgIChkYXlzIDwgdGhyZXNob2xkcy5kICYmIFsnZGQnLCBkYXlzXSk7XG5cbiAgICAgICAgaWYgKHRocmVzaG9sZHMudyAhPSBudWxsKSB7XG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICBhIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDw9IDEgJiYgWyd3J10pIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDwgdGhyZXNob2xkcy53ICYmIFsnd3cnLCB3ZWVrc10pO1xuICAgICAgICB9XG4gICAgICAgIGEgPSBhIHx8XG4gICAgICAgICAgICAobW9udGhzIDw9IDEgJiYgWydNJ10pIHx8XG4gICAgICAgICAgICAobW9udGhzIDwgdGhyZXNob2xkcy5NICYmIFsnTU0nLCBtb250aHNdKSB8fFxuICAgICAgICAgICAgKHllYXJzIDw9IDEgJiYgWyd5J10pIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygcm91bmRpbmdGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUoYXJnV2l0aFN1ZmZpeCwgYXJnVGhyZXNob2xkcykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB3aXRoU3VmZml4ID0gZmFsc2UsXG4gICAgICAgICAgICB0aCA9IHRocmVzaG9sZHMsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYXJnVGhyZXNob2xkcyA9IGFyZ1dpdGhTdWZmaXg7XG4gICAgICAgICAgICBhcmdXaXRoU3VmZml4ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHdpdGhTdWZmaXggPSBhcmdXaXRoU3VmZml4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYXJnVGhyZXNob2xkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoID0gT2JqZWN0LmFzc2lnbih7fSwgdGhyZXNob2xkcywgYXJnVGhyZXNob2xkcyk7XG4gICAgICAgICAgICBpZiAoYXJnVGhyZXNob2xkcy5zICE9IG51bGwgJiYgYXJnVGhyZXNob2xkcy5zcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGguc3MgPSBhcmdUaHJlc2hvbGRzLnMgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCB0aCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKHggPiAwKSAtICh4IDwgMCkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMCxcbiAgICAgICAgICAgIGRheXMgPSBhYnMkMSh0aGlzLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFicyQxKHRoaXMuX21vbnRocyksXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCksXG4gICAgICAgICAgICB0b3RhbFNpZ24sXG4gICAgICAgICAgICB5bVNpZ24sXG4gICAgICAgICAgICBkYXlzU2lnbixcbiAgICAgICAgICAgIGhtc1NpZ247XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcblxuICAgICAgICB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRvdGFsU2lnbiArXG4gICAgICAgICAgICAnUCcgK1xuICAgICAgICAgICAgKHllYXJzID8geW1TaWduICsgeWVhcnMgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKG1vbnRocyA/IHltU2lnbiArIG1vbnRocyArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoZGF5cyA/IGRheXNTaWduICsgZGF5cyArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoaG91cnMgfHwgbWludXRlcyB8fCBzZWNvbmRzID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChob3VycyA/IGhtc1NpZ24gKyBob3VycyArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobWludXRlcyA/IGhtc1NpZ24gKyBtaW51dGVzICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzZWNvbmRzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyA9IGFicztcbiAgICBwcm90byQyLmFkZCA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzUXVhcnRlcnMgPSBhc1F1YXJ0ZXJzO1xuICAgIHByb3RvJDIuYXNZZWFycyA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsXG4gICAgICAgIHRvSVNPU3RyaW5nJDFcbiAgICApO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyEgbW9tZW50LmpzXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMzAuMSc7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gPSBwcm90bztcbiAgICBob29rcy5taW4gPSBtaW47XG4gICAgaG9va3MubWF4ID0gbWF4O1xuICAgIGhvb2tzLm5vdyA9IG5vdztcbiAgICBob29rcy51dGMgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdHR0dHLVtXXVdXJywgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJywgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTtcbiIsIi8qIVxuICogU2VsZWN0MiA0LjEuMC1yYy4wXG4gKiBodHRwczovL3NlbGVjdDIuZ2l0aHViLmlvXG4gKlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vc2VsZWN0Mi9zZWxlY3QyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWRcbiAqL1xuOyhmdW5jdGlvbiAoZmFjdG9yeSkge1xuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLlxuICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgIC8vIE5vZGUvQ29tbW9uSlNcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBqUXVlcnkpIHtcbiAgICAgIGlmIChqUXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByZXF1aXJlKCdqUXVlcnknKSByZXR1cm5zIGEgZmFjdG9yeSB0aGF0IHJlcXVpcmVzIHdpbmRvdyB0b1xuICAgICAgICAvLyBidWlsZCBhIGpRdWVyeSBpbnN0YW5jZSwgd2Ugbm9ybWFsaXplIGhvdyB3ZSB1c2UgbW9kdWxlc1xuICAgICAgICAvLyB0aGF0IHJlcXVpcmUgdGhpcyBwYXR0ZXJuIGJ1dCB0aGUgd2luZG93IHByb3ZpZGVkIGlzIGEgbm9vcFxuICAgICAgICAvLyBpZiBpdCdzIGRlZmluZWQgKGhvdyBqcXVlcnkgd29ya3MpXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGpRdWVyeSA9IHJlcXVpcmUoJ2pxdWVyeScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGpRdWVyeSA9IHJlcXVpcmUoJ2pxdWVyeScpKHJvb3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmYWN0b3J5KGpRdWVyeSk7XG4gICAgICByZXR1cm4galF1ZXJ5O1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gQnJvd3NlciBnbG9iYWxzXG4gICAgZmFjdG9yeShqUXVlcnkpO1xuICB9XG59IChmdW5jdGlvbiAoalF1ZXJ5KSB7XG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHdlIGNhbiBjYXRjaCB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIGFuZCB1c2UgaXRcbiAgLy8gVGhlIGlubmVyIGZpbGUgc2hvdWxkIGJlIHdyYXBwZWQgKGJ5IGBiYW5uZXIuc3RhcnQuanNgKSBpbiBhIGZ1bmN0aW9uIHRoYXRcbiAgLy8gcmV0dXJucyB0aGUgQU1EIGxvYWRlciByZWZlcmVuY2VzLlxuICB2YXIgUzIgPShmdW5jdGlvbiAoKSB7XG4gIC8vIFJlc3RvcmUgdGhlIFNlbGVjdDIgQU1EIGxvYWRlciBzbyBpdCBjYW4gYmUgdXNlZFxuICAvLyBOZWVkZWQgbW9zdGx5IGluIHRoZSBsYW5ndWFnZSBmaWxlcywgd2hlcmUgdGhlIGxvYWRlciBpcyBub3QgaW5zZXJ0ZWRcbiAgaWYgKGpRdWVyeSAmJiBqUXVlcnkuZm4gJiYgalF1ZXJ5LmZuLnNlbGVjdDIgJiYgalF1ZXJ5LmZuLnNlbGVjdDIuYW1kKSB7XG4gICAgdmFyIFMyID0galF1ZXJ5LmZuLnNlbGVjdDIuYW1kO1xuICB9XG52YXIgUzI7KGZ1bmN0aW9uICgpIHsgaWYgKCFTMiB8fCAhUzIucmVxdWlyZWpzKSB7XG5pZiAoIVMyKSB7IFMyID0ge307IH0gZWxzZSB7IHJlcXVpcmUgPSBTMjsgfVxuLyoqXG4gKiBAbGljZW5zZSBhbG1vbmQgMC4zLjMgQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMuXG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSwgaHR0cDovL2dpdGh1Yi5jb20vcmVxdWlyZWpzL2FsbW9uZC9MSUNFTlNFXG4gKi9cbi8vR29pbmcgc2xvcHB5IHRvIGF2b2lkICd1c2Ugc3RyaWN0JyBzdHJpbmcgY29zdCwgYnV0IHN0cmljdCBwcmFjdGljZXMgc2hvdWxkXG4vL2JlIGZvbGxvd2VkLlxuLypnbG9iYWwgc2V0VGltZW91dDogZmFsc2UgKi9cblxudmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lO1xuKGZ1bmN0aW9uICh1bmRlZikge1xuICAgIHZhciBtYWluLCByZXEsIG1ha2VNYXAsIGhhbmRsZXJzLFxuICAgICAgICBkZWZpbmVkID0ge30sXG4gICAgICAgIHdhaXRpbmcgPSB7fSxcbiAgICAgICAgY29uZmlnID0ge30sXG4gICAgICAgIGRlZmluaW5nID0ge30sXG4gICAgICAgIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICAgIGFwcyA9IFtdLnNsaWNlLFxuICAgICAgICBqc1N1ZmZpeFJlZ0V4cCA9IC9cXC5qcyQvO1xuXG4gICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwgbGlrZSAuL3NvbWV0aGluZywgbm9ybWFsaXplIGl0IHRvXG4gICAgICogYSByZWFsIG5hbWUgdGhhdCBjYW4gYmUgbWFwcGVkIHRvIGEgcGF0aC5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgcmVsYXRpdmUgbmFtZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlTmFtZSBhIHJlYWwgbmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZVxuICAgICAqIHRvLlxuICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSkge1xuICAgICAgICB2YXIgbmFtZVBhcnRzLCBuYW1lU2VnbWVudCwgbWFwVmFsdWUsIGZvdW5kTWFwLCBsYXN0SW5kZXgsXG4gICAgICAgICAgICBmb3VuZEksIGZvdW5kU3Rhck1hcCwgc3RhckksIGksIGosIHBhcnQsIG5vcm1hbGl6ZWRCYXNlUGFydHMsXG4gICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlTmFtZSAmJiBiYXNlTmFtZS5zcGxpdChcIi9cIiksXG4gICAgICAgICAgICBtYXAgPSBjb25maWcubWFwLFxuICAgICAgICAgICAgc3Rhck1hcCA9IChtYXAgJiYgbWFwWycqJ10pIHx8IHt9O1xuXG4gICAgICAgIC8vQWRqdXN0IGFueSByZWxhdGl2ZSBwYXRocy5cbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBsYXN0SW5kZXggPSBuYW1lLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIC8vIElmIHdhbnRpbmcgbm9kZSBJRCBjb21wYXRpYmlsaXR5LCBzdHJpcCAuanMgZnJvbSBlbmRcbiAgICAgICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRvVXJsXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG5vZGUgYWxsb3dzIGVpdGhlciAuanMgb3Igbm9uIC5qcyB0byBtYXBcbiAgICAgICAgICAgIC8vIHRvIHNhbWUgZmlsZS5cbiAgICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3QobmFtZVtsYXN0SW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YXJ0cyB3aXRoIGEgJy4nIHNvIG5lZWQgdGhlIGJhc2VOYW1lXG4gICAgICAgICAgICBpZiAobmFtZVswXS5jaGFyQXQoMCkgPT09ICcuJyAmJiBiYXNlUGFydHMpIHtcbiAgICAgICAgICAgICAgICAvL0NvbnZlcnQgYmFzZU5hbWUgdG8gYXJyYXksIGFuZCBsb3Agb2ZmIHRoZSBsYXN0IHBhcnQsXG4gICAgICAgICAgICAgICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICdkaXJlY3RvcnknIGFuZCBub3QgbmFtZSBvZiB0aGUgYmFzZU5hbWUnc1xuICAgICAgICAgICAgICAgIC8vbW9kdWxlLiBGb3IgaW5zdGFuY2UsIGJhc2VOYW1lIG9mICdvbmUvdHdvL3RocmVlJywgbWFwcyB0b1xuICAgICAgICAgICAgICAgIC8vJ29uZS90d28vdGhyZWUuanMnLCBidXQgd2Ugd2FudCB0aGUgZGlyZWN0b3J5LCAnb25lL3R3bycgZm9yXG4gICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZEJhc2VQYXJ0cyA9IGJhc2VQYXJ0cy5zbGljZSgwLCBiYXNlUGFydHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZWRCYXNlUGFydHMuY29uY2F0KG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL3N0YXJ0IHRyaW1Eb3RzXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhcnQgPSBuYW1lW2ldO1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYXQgdGhlIHN0YXJ0LCBvciBwcmV2aW91cyB2YWx1ZSBpcyBzdGlsbCAuLixcbiAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGVtIHNvIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBwYXRoIGl0IG1heVxuICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCB3b3JrIHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCwgZXZlbiB0aG91Z2hcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgYW4gSUQgaXQgaXMgbGVzcyB0aGFuIGlkZWFsLiBJbiBsYXJnZXIgcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVsZWFzZXMsIG1heSBiZSBiZXR0ZXIgdG8ganVzdCBraWNrIG91dCBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgPT09IDEgJiYgbmFtZVsyXSA9PT0gJy4uJykgfHwgbmFtZVtpIC0gMV0gPT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNwbGljZShpIC0gMSwgMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2VuZCB0cmltRG90c1xuXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5qb2luKCcvJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvL0FwcGx5IG1hcCBjb25maWcgaWYgYXZhaWxhYmxlLlxuICAgICAgICBpZiAoKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSAmJiBtYXApIHtcbiAgICAgICAgICAgIG5hbWVQYXJ0cyA9IG5hbWUuc3BsaXQoJy8nKTtcblxuICAgICAgICAgICAgZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkge1xuICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oXCIvXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJhc2VQYXJ0cykge1xuICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLlxuICAgICAgICAgICAgICAgICAgICAvL1NvLCBkbyBqb2lucyBvbiB0aGUgYmlnZ2VzdCB0byBzbWFsbGVzdCBsZW5ndGhzIG9mIGJhc2VQYXJ0cy5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gYmFzZVBhcnRzLmxlbmd0aDsgaiA+IDA7IGogLT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBbYmFzZVBhcnRzLnNsaWNlKDAsIGopLmpvaW4oJy8nKV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vYmFzZU5hbWUgc2VnbWVudCBoYXMgIGNvbmZpZywgZmluZCBpZiBpdCBoYXMgb25lIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IG1hcFZhbHVlW25hbWVTZWdtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXRjaCwgdXBkYXRlIG5hbWUgdG8gdGhlIG5ldyB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNYXAgPSBtYXBWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vQ2hlY2sgZm9yIGEgc3RhciBtYXAgbWF0Y2gsIGJ1dCBqdXN0IGhvbGQgb24gdG8gaXQsXG4gICAgICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHNob3J0ZXIgc2VnbWVudCBtYXRjaCBsYXRlciBpbiBhIG1hdGNoaW5nXG4gICAgICAgICAgICAgICAgLy9jb25maWcsIHRoZW4gZmF2b3Igb3ZlciB0aGlzIHN0YXIgbWFwLlxuICAgICAgICAgICAgICAgIGlmICghZm91bmRTdGFyTWFwICYmIHN0YXJNYXAgJiYgc3Rhck1hcFtuYW1lU2VnbWVudF0pIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gc3Rhck1hcFtuYW1lU2VnbWVudF07XG4gICAgICAgICAgICAgICAgICAgIHN0YXJJID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZm91bmRNYXAgJiYgZm91bmRTdGFyTWFwKSB7XG4gICAgICAgICAgICAgICAgZm91bmRNYXAgPSBmb3VuZFN0YXJNYXA7XG4gICAgICAgICAgICAgICAgZm91bmRJID0gc3Rhckk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmb3VuZE1hcCkge1xuICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5zcGxpY2UoMCwgZm91bmRJLCBmb3VuZE1hcCk7XG4gICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlUmVxdWlyZShyZWxOYW1lLCBmb3JjZVN5bmMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vQSB2ZXJzaW9uIG9mIGEgcmVxdWlyZSBmdW5jdGlvbiB0aGF0IHBhc3NlcyBhIG1vZHVsZU5hbWVcbiAgICAgICAgICAgIC8vdmFsdWUgZm9yIGl0ZW1zIHRoYXQgbWF5IG5lZWQgdG9cbiAgICAgICAgICAgIC8vbG9vayB1cCBwYXRocyByZWxhdGl2ZSB0byB0aGUgbW9kdWxlTmFtZVxuICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcHMuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgICAgICAvL0lmIGZpcnN0IGFyZyBpcyBub3QgcmVxdWlyZSgnc3RyaW5nJyksIGFuZCB0aGVyZSBpcyBvbmx5XG4gICAgICAgICAgICAvL29uZSBhcmcsIGl0IGlzIHRoZSBhcnJheSBmb3JtIHdpdGhvdXQgYSBjYWxsYmFjay4gSW5zZXJ0XG4gICAgICAgICAgICAvL2EgbnVsbCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgY29uY2F0IGlzIGNvcnJlY3QuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICdzdHJpbmcnICYmIGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcS5hcHBseSh1bmRlZiwgYXJncy5jb25jYXQoW3JlbE5hbWUsIGZvcmNlU3luY10pKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlTm9ybWFsaXplKHJlbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VMb2FkKGRlcE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgZGVmaW5lZFtkZXBOYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGxEZXAobmFtZSkge1xuICAgICAgICBpZiAoaGFzUHJvcCh3YWl0aW5nLCBuYW1lKSkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSB3YWl0aW5nW25hbWVdO1xuICAgICAgICAgICAgZGVsZXRlIHdhaXRpbmdbbmFtZV07XG4gICAgICAgICAgICBkZWZpbmluZ1tuYW1lXSA9IHRydWU7XG4gICAgICAgICAgICBtYWluLmFwcGx5KHVuZGVmLCBhcmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcChkZWZpbmluZywgbmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gJyArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZpbmVkW25hbWVdO1xuICAgIH1cblxuICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdXG4gICAgLy93aXRoIHRoZSBwbHVnaW4gYmVpbmcgdW5kZWZpbmVkIGlmIHRoZSBuYW1lXG4gICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LlxuICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCxcbiAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdO1xuICAgIH1cblxuICAgIC8vQ3JlYXRlcyBhIHBhcnRzIGFycmF5IGZvciBhIHJlbE5hbWUgd2hlcmUgZmlyc3QgcGFydCBpcyBwbHVnaW4gSUQsXG4gICAgLy9zZWNvbmQgcGFydCBpcyByZXNvdXJjZSBJRC4gQXNzdW1lcyByZWxOYW1lIGhhcyBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC5cbiAgICBmdW5jdGlvbiBtYWtlUmVsUGFydHMocmVsTmFtZSkge1xuICAgICAgICByZXR1cm4gcmVsTmFtZSA/IHNwbGl0UHJlZml4KHJlbE5hbWUpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuYW1lIG1hcCwgbm9ybWFsaXppbmcgdGhlIG5hbWUsIGFuZCB1c2luZyBhIHBsdWdpblxuICAgICAqIGZvciBub3JtYWxpemF0aW9uIGlmIG5lY2Vzc2FyeS4gR3JhYnMgYSByZWYgdG8gcGx1Z2luXG4gICAgICogdG9vLCBhcyBhbiBvcHRpbWl6YXRpb24uXG4gICAgICovXG4gICAgbWFrZU1hcCA9IGZ1bmN0aW9uIChuYW1lLCByZWxQYXJ0cykge1xuICAgICAgICB2YXIgcGx1Z2luLFxuICAgICAgICAgICAgcGFydHMgPSBzcGxpdFByZWZpeChuYW1lKSxcbiAgICAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLFxuICAgICAgICAgICAgcmVsUmVzb3VyY2VOYW1lID0gcmVsUGFydHNbMV07XG5cbiAgICAgICAgbmFtZSA9IHBhcnRzWzFdO1xuXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHJlbFJlc291cmNlTmFtZSk7XG4gICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05vcm1hbGl6ZSBhY2NvcmRpbmdcbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgaWYgKHBsdWdpbiAmJiBwbHVnaW4ubm9ybWFsaXplKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IHBsdWdpbi5ub3JtYWxpemUobmFtZSwgbWFrZU5vcm1hbGl6ZShyZWxSZXNvdXJjZU5hbWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZShuYW1lLCByZWxSZXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZShuYW1lLCByZWxSZXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgcGFydHMgPSBzcGxpdFByZWZpeChuYW1lKTtcbiAgICAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdO1xuICAgICAgICAgICAgbmFtZSA9IHBhcnRzWzFdO1xuICAgICAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgICAgIHBsdWdpbiA9IGNhbGxEZXAocHJlZml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vVXNpbmcgcmlkaWN1bG91cyBwcm9wZXJ0eSBuYW1lcyBmb3Igc3BhY2UgcmVhc29uc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZjogcHJlZml4ID8gcHJlZml4ICsgJyEnICsgbmFtZSA6IG5hbWUsIC8vZnVsbE5hbWVcbiAgICAgICAgICAgIG46IG5hbWUsXG4gICAgICAgICAgICBwcjogcHJlZml4LFxuICAgICAgICAgICAgcDogcGx1Z2luXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1ha2VDb25maWcobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChjb25maWcgJiYgY29uZmlnLmNvbmZpZyAmJiBjb25maWcuY29uZmlnW25hbWVdKSB8fCB7fTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVycyA9IHtcbiAgICAgICAgcmVxdWlyZTogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlUmVxdWlyZShuYW1lKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0czogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHZhciBlID0gZGVmaW5lZFtuYW1lXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW25hbWVdID0ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb2R1bGU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBuYW1lLFxuICAgICAgICAgICAgICAgIHVyaTogJycsXG4gICAgICAgICAgICAgICAgZXhwb3J0czogZGVmaW5lZFtuYW1lXSxcbiAgICAgICAgICAgICAgICBjb25maWc6IG1ha2VDb25maWcobmFtZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbWFpbiA9IGZ1bmN0aW9uIChuYW1lLCBkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSkge1xuICAgICAgICB2YXIgY2pzTW9kdWxlLCBkZXBOYW1lLCByZXQsIG1hcCwgaSwgcmVsUGFydHMsXG4gICAgICAgICAgICBhcmdzID0gW10sXG4gICAgICAgICAgICBjYWxsYmFja1R5cGUgPSB0eXBlb2YgY2FsbGJhY2ssXG4gICAgICAgICAgICB1c2luZ0V4cG9ydHM7XG5cbiAgICAgICAgLy9Vc2UgbmFtZSBpZiBubyByZWxOYW1lXG4gICAgICAgIHJlbE5hbWUgPSByZWxOYW1lIHx8IG5hbWU7XG4gICAgICAgIHJlbFBhcnRzID0gbWFrZVJlbFBhcnRzKHJlbE5hbWUpO1xuXG4gICAgICAgIC8vQ2FsbCB0aGUgY2FsbGJhY2sgdG8gZGVmaW5lIHRoZSBtb2R1bGUsIGlmIG5lY2Vzc2FyeS5cbiAgICAgICAgaWYgKGNhbGxiYWNrVHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgY2FsbGJhY2tUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvL1B1bGwgb3V0IHRoZSBkZWZpbmVkIGRlcGVuZGVuY2llcyBhbmQgcGFzcyB0aGUgb3JkZXJlZFxuICAgICAgICAgICAgLy92YWx1ZXMgdG8gdGhlIGNhbGxiYWNrLlxuICAgICAgICAgICAgLy9EZWZhdWx0IHRvIFtyZXF1aXJlLCBleHBvcnRzLCBtb2R1bGVdIGlmIG5vIGRlcHNcbiAgICAgICAgICAgIGRlcHMgPSAhZGVwcy5sZW5ndGggJiYgY2FsbGJhY2subGVuZ3RoID8gWydyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJ10gOiBkZXBzO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBtYXAgPSBtYWtlTWFwKGRlcHNbaV0sIHJlbFBhcnRzKTtcbiAgICAgICAgICAgICAgICBkZXBOYW1lID0gbWFwLmY7XG5cbiAgICAgICAgICAgICAgICAvL0Zhc3QgcGF0aCBDb21tb25KUyBzdGFuZGFyZCBkZXBlbmRlbmNpZXMuXG4gICAgICAgICAgICAgICAgaWYgKGRlcE5hbWUgPT09IFwicmVxdWlyZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5yZXF1aXJlKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVwTmFtZSA9PT0gXCJleHBvcnRzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9Db21tb25KUyBtb2R1bGUgc3BlYyAxLjFcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGhhbmRsZXJzLmV4cG9ydHMobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHVzaW5nRXhwb3J0cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXBOYW1lID09PSBcIm1vZHVsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQ29tbW9uSlMgbW9kdWxlIHNwZWMgMS4xXG4gICAgICAgICAgICAgICAgICAgIGNqc01vZHVsZSA9IGFyZ3NbaV0gPSBoYW5kbGVycy5tb2R1bGUobmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNQcm9wKGRlZmluZWQsIGRlcE5hbWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQcm9wKHdhaXRpbmcsIGRlcE5hbWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQcm9wKGRlZmluaW5nLCBkZXBOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gY2FsbERlcChkZXBOYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hcC5wKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcC5wLmxvYWQobWFwLm4sIG1ha2VSZXF1aXJlKHJlbE5hbWUsIHRydWUpLCBtYWtlTG9hZChkZXBOYW1lKSwge30pO1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gZGVmaW5lZFtkZXBOYW1lXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobmFtZSArICcgbWlzc2luZyAnICsgZGVwTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXQgPSBjYWxsYmFjayA/IGNhbGxiYWNrLmFwcGx5KGRlZmluZWRbbmFtZV0sIGFyZ3MpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgICAgIC8vSWYgc2V0dGluZyBleHBvcnRzIHZpYSBcIm1vZHVsZVwiIGlzIGluIHBsYXksXG4gICAgICAgICAgICAgICAgLy9mYXZvciB0aGF0IG92ZXIgcmV0dXJuIHZhbHVlIGFuZCBleHBvcnRzLiBBZnRlciB0aGF0LFxuICAgICAgICAgICAgICAgIC8vZmF2b3IgYSBub24tdW5kZWZpbmVkIHJldHVybiB2YWx1ZSBvdmVyIGV4cG9ydHMgdXNlLlxuICAgICAgICAgICAgICAgIGlmIChjanNNb2R1bGUgJiYgY2pzTW9kdWxlLmV4cG9ydHMgIT09IHVuZGVmICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUuZXhwb3J0cyAhPT0gZGVmaW5lZFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW25hbWVdID0gY2pzTW9kdWxlLmV4cG9ydHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXQgIT09IHVuZGVmIHx8ICF1c2luZ0V4cG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9Vc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IHJldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSkge1xuICAgICAgICAgICAgLy9NYXkganVzdCBiZSBhbiBvYmplY3QgZGVmaW5pdGlvbiBmb3IgdGhlIG1vZHVsZS4gT25seVxuICAgICAgICAgICAgLy93b3JyeSBhYm91dCBkZWZpbmluZyBpZiBoYXZlIGEgbW9kdWxlIG5hbWUuXG4gICAgICAgICAgICBkZWZpbmVkW25hbWVdID0gY2FsbGJhY2s7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVxdWlyZWpzID0gcmVxdWlyZSA9IHJlcSA9IGZ1bmN0aW9uIChkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSwgZm9yY2VTeW5jLCBhbHQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlcnNbZGVwc10pIHtcbiAgICAgICAgICAgICAgICAvL2NhbGxiYWNrIGluIHRoaXMgY2FzZSBpcyByZWFsbHkgcmVsTmFtZVxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyc1tkZXBzXShjYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL0p1c3QgcmV0dXJuIHRoZSBtb2R1bGUgd2FudGVkLiBJbiB0aGlzIHNjZW5hcmlvLCB0aGVcbiAgICAgICAgICAgIC8vZGVwcyBhcmcgaXMgdGhlIG1vZHVsZSBuYW1lLCBhbmQgc2Vjb25kIGFyZyAoaWYgcGFzc2VkKVxuICAgICAgICAgICAgLy9pcyBqdXN0IHRoZSByZWxOYW1lLlxuICAgICAgICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi5cbiAgICAgICAgICAgIHJldHVybiBjYWxsRGVwKG1ha2VNYXAoZGVwcywgbWFrZVJlbFBhcnRzKGNhbGxiYWNrKSkuZik7XG4gICAgICAgIH0gZWxzZSBpZiAoIWRlcHMuc3BsaWNlKSB7XG4gICAgICAgICAgICAvL2RlcHMgaXMgYSBjb25maWcgb2JqZWN0LCBub3QgYW4gYXJyYXkuXG4gICAgICAgICAgICBjb25maWcgPSBkZXBzO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5kZXBzKSB7XG4gICAgICAgICAgICAgICAgcmVxKGNvbmZpZy5kZXBzLCBjb25maWcuY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrLnNwbGljZSkge1xuICAgICAgICAgICAgICAgIC8vY2FsbGJhY2sgaXMgYW4gYXJyYXksIHdoaWNoIG1lYW5zIGl0IGlzIGEgZGVwZW5kZW5jeSBsaXN0LlxuICAgICAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgICAgIGRlcHMgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHJlbE5hbWU7XG4gICAgICAgICAgICAgICAgcmVsTmFtZSA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlcHMgPSB1bmRlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vU3VwcG9ydCByZXF1aXJlKFsnYSddKVxuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgICAgIC8vSWYgcmVsTmFtZSBpcyBhIGZ1bmN0aW9uLCBpdCBpcyBhbiBlcnJiYWNrIGhhbmRsZXIsXG4gICAgICAgIC8vc28gcmVtb3ZlIGl0LlxuICAgICAgICBpZiAodHlwZW9mIHJlbE5hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJlbE5hbWUgPSBmb3JjZVN5bmM7XG4gICAgICAgICAgICBmb3JjZVN5bmMgPSBhbHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvL1NpbXVsYXRlIGFzeW5jIGNhbGxiYWNrO1xuICAgICAgICBpZiAoZm9yY2VTeW5jKSB7XG4gICAgICAgICAgICBtYWluKHVuZGVmLCBkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL1VzaW5nIGEgbm9uLXplcm8gdmFsdWUgYmVjYXVzZSBvZiBjb25jZXJuIGZvciB3aGF0IG9sZCBicm93c2Vyc1xuICAgICAgICAgICAgLy9kbywgYW5kIGxhdGVzdCBicm93c2VycyBcInVwZ3JhZGVcIiB0byA0IGlmIGxvd2VyIHZhbHVlIGlzIHVzZWQ6XG4gICAgICAgICAgICAvL2h0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RpbWVycy5odG1sI2RvbS13aW5kb3d0aW1lcnMtc2V0dGltZW91dDpcbiAgICAgICAgICAgIC8vSWYgd2FudCBhIHZhbHVlIGltbWVkaWF0ZWx5LCB1c2UgcmVxdWlyZSgnaWQnKSBpbnN0ZWFkIC0tIHNvbWV0aGluZ1xuICAgICAgICAgICAgLy90aGF0IHdvcmtzIGluIGFsbW9uZCBvbiB0aGUgZ2xvYmFsIGxldmVsLCBidXQgbm90IGd1YXJhbnRlZWQgYW5kXG4gICAgICAgICAgICAvL3VubGlrZWx5IHRvIHdvcmsgaW4gb3RoZXIgQU1EIGltcGxlbWVudGF0aW9ucy5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG1haW4odW5kZWYsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKTtcbiAgICAgICAgICAgIH0sIDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSnVzdCBkcm9wcyB0aGUgY29uZmlnIG9uIHRoZSBmbG9vciwgYnV0IHJldHVybnMgcmVxIGluIGNhc2VcbiAgICAgKiB0aGUgY29uZmlnIHJldHVybiB2YWx1ZSBpcyB1c2VkLlxuICAgICAqL1xuICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHJldHVybiByZXEoY2ZnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRXhwb3NlIG1vZHVsZSByZWdpc3RyeSBmb3IgZGVidWdnaW5nIGFuZCB0b29saW5nXG4gICAgICovXG4gICAgcmVxdWlyZWpzLl9kZWZpbmVkID0gZGVmaW5lZDtcblxuICAgIGRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBkZXBzLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlZSBhbG1vbmQgUkVBRE1FOiBpbmNvcnJlY3QgbW9kdWxlIGJ1aWxkLCBubyBtb2R1bGUgbmFtZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9UaGlzIG1vZHVsZSBtYXkgbm90IGhhdmUgZGVwZW5kZW5jaWVzXG4gICAgICAgIGlmICghZGVwcy5zcGxpY2UpIHtcbiAgICAgICAgICAgIC8vZGVwcyBpcyBub3QgYW4gYXJyYXksIHNvIHByb2JhYmx5IG1lYW5zXG4gICAgICAgICAgICAvL2FuIG9iamVjdCBsaXRlcmFsIG9yIGZhY3RvcnkgZnVuY3Rpb24gZm9yXG4gICAgICAgICAgICAvL3RoZSB2YWx1ZS4gQWRqdXN0IGFyZ3MuXG4gICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7XG4gICAgICAgICAgICBkZXBzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgbmFtZSkgJiYgIWhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHtcbiAgICAgICAgICAgIHdhaXRpbmdbbmFtZV0gPSBbbmFtZSwgZGVwcywgY2FsbGJhY2tdO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGRlZmluZS5hbWQgPSB7XG4gICAgICAgIGpRdWVyeTogdHJ1ZVxuICAgIH07XG59KCkpO1xuXG5TMi5yZXF1aXJlanMgPSByZXF1aXJlanM7UzIucmVxdWlyZSA9IHJlcXVpcmU7UzIuZGVmaW5lID0gZGVmaW5lO1xufVxufSgpKTtcblMyLmRlZmluZShcImFsbW9uZFwiLCBmdW5jdGlvbigpe30pO1xuXG4vKiBnbG9iYWwgalF1ZXJ5OmZhbHNlLCAkOmZhbHNlICovXG5TMi5kZWZpbmUoJ2pxdWVyeScsW10sZnVuY3Rpb24gKCkge1xuICB2YXIgXyQgPSBqUXVlcnkgfHwgJDtcblxuICBpZiAoXyQgPT0gbnVsbCAmJiBjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgJ1NlbGVjdDI6IEFuIGluc3RhbmNlIG9mIGpRdWVyeSBvciBhIGpRdWVyeS1jb21wYXRpYmxlIGxpYnJhcnkgd2FzIG5vdCAnICtcbiAgICAgICdmb3VuZC4gTWFrZSBzdXJlIHRoYXQgeW91IGFyZSBpbmNsdWRpbmcgalF1ZXJ5IGJlZm9yZSBTZWxlY3QyIG9uIHlvdXIgJyArXG4gICAgICAnd2ViIHBhZ2UuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gXyQ7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3V0aWxzJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICB2YXIgVXRpbHMgPSB7fTtcblxuICBVdGlscy5FeHRlbmQgPSBmdW5jdGlvbiAoQ2hpbGRDbGFzcywgU3VwZXJDbGFzcykge1xuICAgIHZhciBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIGZ1bmN0aW9uIEJhc2VDb25zdHJ1Y3RvciAoKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gQ2hpbGRDbGFzcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gU3VwZXJDbGFzcykge1xuICAgICAgaWYgKF9faGFzUHJvcC5jYWxsKFN1cGVyQ2xhc3MsIGtleSkpIHtcbiAgICAgICAgQ2hpbGRDbGFzc1trZXldID0gU3VwZXJDbGFzc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIEJhc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcbiAgICBDaGlsZENsYXNzLnByb3RvdHlwZSA9IG5ldyBCYXNlQ29uc3RydWN0b3IoKTtcbiAgICBDaGlsZENsYXNzLl9fc3VwZXJfXyA9IFN1cGVyQ2xhc3MucHJvdG90eXBlO1xuXG4gICAgcmV0dXJuIENoaWxkQ2xhc3M7XG4gIH07XG5cbiAgZnVuY3Rpb24gZ2V0TWV0aG9kcyAodGhlQ2xhc3MpIHtcbiAgICB2YXIgcHJvdG8gPSB0aGVDbGFzcy5wcm90b3R5cGU7XG5cbiAgICB2YXIgbWV0aG9kcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBwcm90bykge1xuICAgICAgdmFyIG0gPSBwcm90b1ttZXRob2ROYW1lXTtcblxuICAgICAgaWYgKHR5cGVvZiBtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbWV0aG9kcy5wdXNoKG1ldGhvZE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRob2RzO1xuICB9XG5cbiAgVXRpbHMuRGVjb3JhdGUgPSBmdW5jdGlvbiAoU3VwZXJDbGFzcywgRGVjb3JhdG9yQ2xhc3MpIHtcbiAgICB2YXIgZGVjb3JhdGVkTWV0aG9kcyA9IGdldE1ldGhvZHMoRGVjb3JhdG9yQ2xhc3MpO1xuICAgIHZhciBzdXBlck1ldGhvZHMgPSBnZXRNZXRob2RzKFN1cGVyQ2xhc3MpO1xuXG4gICAgZnVuY3Rpb24gRGVjb3JhdGVkQ2xhc3MgKCkge1xuICAgICAgdmFyIHVuc2hpZnQgPSBBcnJheS5wcm90b3R5cGUudW5zaGlmdDtcblxuICAgICAgdmFyIGFyZ0NvdW50ID0gRGVjb3JhdG9yQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yLmxlbmd0aDtcblxuICAgICAgdmFyIGNhbGxlZENvbnN0cnVjdG9yID0gU3VwZXJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3I7XG5cbiAgICAgIGlmIChhcmdDb3VudCA+IDApIHtcbiAgICAgICAgdW5zaGlmdC5jYWxsKGFyZ3VtZW50cywgU3VwZXJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuXG4gICAgICAgIGNhbGxlZENvbnN0cnVjdG9yID0gRGVjb3JhdG9yQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgICAgfVxuXG4gICAgICBjYWxsZWRDb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIERlY29yYXRvckNsYXNzLmRpc3BsYXlOYW1lID0gU3VwZXJDbGFzcy5kaXNwbGF5TmFtZTtcblxuICAgIGZ1bmN0aW9uIGN0ciAoKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gRGVjb3JhdGVkQ2xhc3M7XG4gICAgfVxuXG4gICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlID0gbmV3IGN0cigpO1xuXG4gICAgZm9yICh2YXIgbSA9IDA7IG0gPCBzdXBlck1ldGhvZHMubGVuZ3RoOyBtKyspIHtcbiAgICAgIHZhciBzdXBlck1ldGhvZCA9IHN1cGVyTWV0aG9kc1ttXTtcblxuICAgICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW3N1cGVyTWV0aG9kXSA9XG4gICAgICAgIFN1cGVyQ2xhc3MucHJvdG90eXBlW3N1cGVyTWV0aG9kXTtcbiAgICB9XG5cbiAgICB2YXIgY2FsbGVkTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZE5hbWUpIHtcbiAgICAgIC8vIFN0dWIgb3V0IHRoZSBvcmlnaW5hbCBtZXRob2QgaWYgaXQncyBub3QgZGVjb3JhdGluZyBhbiBhY3R1YWwgbWV0aG9kXG4gICAgICB2YXIgb3JpZ2luYWxNZXRob2QgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgICAgaWYgKG1ldGhvZE5hbWUgaW4gRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlKSB7XG4gICAgICAgIG9yaWdpbmFsTWV0aG9kID0gRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGVjb3JhdGVkTWV0aG9kID0gRGVjb3JhdG9yQ2xhc3MucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdW5zaGlmdCA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0O1xuXG4gICAgICAgIHVuc2hpZnQuY2FsbChhcmd1bWVudHMsIG9yaWdpbmFsTWV0aG9kKTtcblxuICAgICAgICByZXR1cm4gZGVjb3JhdGVkTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRlY29yYXRlZE1ldGhvZHMubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBkZWNvcmF0ZWRNZXRob2QgPSBkZWNvcmF0ZWRNZXRob2RzW2RdO1xuXG4gICAgICBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGVbZGVjb3JhdGVkTWV0aG9kXSA9IGNhbGxlZE1ldGhvZChkZWNvcmF0ZWRNZXRob2QpO1xuICAgIH1cblxuICAgIHJldHVybiBEZWNvcmF0ZWRDbGFzcztcbiAgfTtcblxuICB2YXIgT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmxpc3RlbmVycyA9IHt9O1xuICB9O1xuXG4gIE9ic2VydmFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2ZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge307XG5cbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50XS5wdXNoKGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnRdID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gIH07XG5cbiAgT2JzZXJ2YWJsZS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbiAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycyB8fCB7fTtcblxuICAgIC8vIFBhcmFtcyBzaG91bGQgYWx3YXlzIGNvbWUgaW4gYXMgYW4gYXJyYXlcbiAgICBpZiAocGFyYW1zID09IG51bGwpIHtcbiAgICAgIHBhcmFtcyA9IFtdO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBhcmd1bWVudHMgdG8gdGhlIGV2ZW50LCB1c2UgYSB0ZW1wb3Jhcnkgb2JqZWN0XG4gICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHBhcmFtcy5wdXNoKHt9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGBfdHlwZWAgb2YgdGhlIGZpcnN0IG9iamVjdCB0byB0aGUgZXZlbnRcbiAgICBwYXJhbXNbMF0uX3R5cGUgPSBldmVudDtcblxuICAgIGlmIChldmVudCBpbiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbZXZlbnRdLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICAgIH1cblxuICAgIGlmICgnKicgaW4gdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuaW52b2tlKHRoaXMubGlzdGVuZXJzWycqJ10sIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9O1xuXG4gIE9ic2VydmFibGUucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uIChsaXN0ZW5lcnMsIHBhcmFtcykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxpc3RlbmVyc1tpXS5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgIH1cbiAgfTtcblxuICBVdGlscy5PYnNlcnZhYmxlID0gT2JzZXJ2YWJsZTtcblxuICBVdGlscy5nZW5lcmF0ZUNoYXJzID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuICAgIHZhciBjaGFycyA9ICcnO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmRvbUNoYXIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAzNik7XG4gICAgICBjaGFycyArPSByYW5kb21DaGFyLnRvU3RyaW5nKDM2KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhcnM7XG4gIH07XG5cbiAgVXRpbHMuYmluZCA9IGZ1bmN0aW9uIChmdW5jLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9O1xuXG4gIFV0aWxzLl9jb252ZXJ0RGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZm9yICh2YXIgb3JpZ2luYWxLZXkgaW4gZGF0YSkge1xuICAgICAgdmFyIGtleXMgPSBvcmlnaW5hbEtleS5zcGxpdCgnLScpO1xuXG4gICAgICB2YXIgZGF0YUxldmVsID0gZGF0YTtcblxuICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGtleXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNba107XG5cbiAgICAgICAgLy8gTG93ZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXJcbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgZGFzaC1zZXBhcmF0ZWQgYmVjb21lcyBjYW1lbENhc2VcbiAgICAgICAga2V5ID0ga2V5LnN1YnN0cmluZygwLCAxKS50b0xvd2VyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcblxuICAgICAgICBpZiAoIShrZXkgaW4gZGF0YUxldmVsKSkge1xuICAgICAgICAgIGRhdGFMZXZlbFtrZXldID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoayA9PSBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhTGV2ZWxba2V5XSA9IGRhdGFbb3JpZ2luYWxLZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YUxldmVsID0gZGF0YUxldmVsW2tleV07XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBkYXRhW29yaWdpbmFsS2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICBVdGlscy5oYXNTY3JvbGwgPSBmdW5jdGlvbiAoaW5kZXgsIGVsKSB7XG4gICAgLy8gQWRhcHRlZCBmcm9tIHRoZSBmdW5jdGlvbiBjcmVhdGVkIGJ5IEBTaGFkb3dTY3JpcHRlclxuICAgIC8vIGFuZCBhZGFwdGVkIGJ5IEBCaWxsQmFycnkgb24gdGhlIFN0YWNrIEV4Y2hhbmdlIENvZGUgUmV2aWV3IHdlYnNpdGUuXG4gICAgLy8gVGhlIG9yaWdpbmFsIGNvZGUgY2FuIGJlIGZvdW5kIGF0XG4gICAgLy8gaHR0cDovL2NvZGVyZXZpZXcuc3RhY2tleGNoYW5nZS5jb20vcS8xMzMzOFxuICAgIC8vIGFuZCB3YXMgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBTaXp6bGUgc2VsZWN0b3IgZW5naW5lLlxuXG4gICAgdmFyICRlbCA9ICQoZWwpO1xuICAgIHZhciBvdmVyZmxvd1ggPSBlbC5zdHlsZS5vdmVyZmxvd1g7XG4gICAgdmFyIG92ZXJmbG93WSA9IGVsLnN0eWxlLm92ZXJmbG93WTtcblxuICAgIC8vQ2hlY2sgYm90aCB4IGFuZCB5IGRlY2xhcmF0aW9uc1xuICAgIGlmIChvdmVyZmxvd1ggPT09IG92ZXJmbG93WSAmJlxuICAgICAgICAob3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fCBvdmVyZmxvd1kgPT09ICd2aXNpYmxlJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcmZsb3dYID09PSAnc2Nyb2xsJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCRlbC5pbm5lckhlaWdodCgpIDwgZWwuc2Nyb2xsSGVpZ2h0IHx8XG4gICAgICAkZWwuaW5uZXJXaWR0aCgpIDwgZWwuc2Nyb2xsV2lkdGgpO1xuICB9O1xuXG4gIFV0aWxzLmVzY2FwZU1hcmt1cCA9IGZ1bmN0aW9uIChtYXJrdXApIHtcbiAgICB2YXIgcmVwbGFjZU1hcCA9IHtcbiAgICAgICdcXFxcJzogJyYjOTI7JyxcbiAgICAgICcmJzogJyZhbXA7JyxcbiAgICAgICc8JzogJyZsdDsnLFxuICAgICAgJz4nOiAnJmd0OycsXG4gICAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxuICAgICAgJy8nOiAnJiM0NzsnXG4gICAgfTtcblxuICAgIC8vIERvIG5vdCB0cnkgdG8gZXNjYXBlIHRoZSBtYXJrdXAgaWYgaXQncyBub3QgYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIG1hcmt1cCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyhtYXJrdXApLnJlcGxhY2UoL1smPD5cIidcXC9cXFxcXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiByZXBsYWNlTWFwW21hdGNoXTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBDYWNoZSBvYmplY3RzIGluIFV0aWxzLl9fY2FjaGUgaW5zdGVhZCBvZiAkLmRhdGEgKHNlZSAjNDM0NilcbiAgVXRpbHMuX19jYWNoZSA9IHt9O1xuXG4gIHZhciBpZCA9IDA7XG4gIFV0aWxzLkdldFVuaXF1ZUVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgLy8gR2V0IGEgdW5pcXVlIGVsZW1lbnQgSWQuIElmIGVsZW1lbnQgaGFzIG5vIGlkLFxuICAgIC8vIGNyZWF0ZXMgYSBuZXcgdW5pcXVlIG51bWJlciwgc3RvcmVzIGl0IGluIHRoZSBpZFxuICAgIC8vIGF0dHJpYnV0ZSBhbmQgcmV0dXJucyB0aGUgbmV3IGlkIHdpdGggYSBwcmVmaXguXG4gICAgLy8gSWYgYW4gaWQgYWxyZWFkeSBleGlzdHMsIGl0IHNpbXBseSByZXR1cm5zIGl0IHdpdGggYSBwcmVmaXguXG5cbiAgICB2YXIgc2VsZWN0MklkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi1pZCcpO1xuXG4gICAgaWYgKHNlbGVjdDJJZCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gc2VsZWN0MklkO1xuICAgIH1cblxuICAgIC8vIElmIGVsZW1lbnQgaGFzIGlkLCB1c2UgaXQuXG4gICAgaWYgKGVsZW1lbnQuaWQpIHtcbiAgICAgIHNlbGVjdDJJZCA9ICdzZWxlY3QyLWRhdGEtJyArIGVsZW1lbnQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdDJJZCA9ICdzZWxlY3QyLWRhdGEtJyArICgrK2lkKS50b1N0cmluZygpICtcbiAgICAgICAgJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLWlkJywgc2VsZWN0MklkKTtcblxuICAgIHJldHVybiBzZWxlY3QySWQ7XG4gIH07XG5cbiAgVXRpbHMuU3RvcmVEYXRhID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgLy8gU3RvcmVzIGFuIGl0ZW0gaW4gdGhlIGNhY2hlIGZvciBhIHNwZWNpZmllZCBlbGVtZW50LlxuICAgIC8vIG5hbWUgaXMgdGhlIGNhY2hlIGtleS5cbiAgICB2YXIgaWQgPSBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQoZWxlbWVudCk7XG4gICAgaWYgKCFVdGlscy5fX2NhY2hlW2lkXSkge1xuICAgICAgVXRpbHMuX19jYWNoZVtpZF0gPSB7fTtcbiAgICB9XG5cbiAgICBVdGlscy5fX2NhY2hlW2lkXVtuYW1lXSA9IHZhbHVlO1xuICB9O1xuXG4gIFV0aWxzLkdldERhdGEgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkge1xuICAgIC8vIFJldHJpZXZlcyBhIHZhbHVlIGZyb20gdGhlIGNhY2hlIGJ5IGl0cyBrZXkgKG5hbWUpXG4gICAgLy8gbmFtZSBpcyBvcHRpb25hbC4gSWYgbm8gbmFtZSBzcGVjaWZpZWQsIHJldHVyblxuICAgIC8vIGFsbCBjYWNoZSBpdGVtcyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgIC8vIGFuZCBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICB2YXIgaWQgPSBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQoZWxlbWVudCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGlmIChVdGlscy5fX2NhY2hlW2lkXSkge1xuICAgICAgICBpZiAoVXRpbHMuX19jYWNoZVtpZF1bbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBVdGlscy5fX2NhY2hlW2lkXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJChlbGVtZW50KS5kYXRhKG5hbWUpOyAvLyBGYWxsYmFjayB0byBIVE1MNSBkYXRhIGF0dHJpYnMuXG4gICAgICB9XG4gICAgICByZXR1cm4gJChlbGVtZW50KS5kYXRhKG5hbWUpOyAvLyBGYWxsYmFjayB0byBIVE1MNSBkYXRhIGF0dHJpYnMuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBVdGlscy5fX2NhY2hlW2lkXTtcbiAgICB9XG4gIH07XG5cbiAgVXRpbHMuUmVtb3ZlRGF0YSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgLy8gUmVtb3ZlcyBhbGwgY2FjaGVkIGl0ZW1zIGZvciBhIHNwZWNpZmllZCBlbGVtZW50LlxuICAgIHZhciBpZCA9IFV0aWxzLkdldFVuaXF1ZUVsZW1lbnRJZChlbGVtZW50KTtcbiAgICBpZiAoVXRpbHMuX19jYWNoZVtpZF0gIT0gbnVsbCkge1xuICAgICAgZGVsZXRlIFV0aWxzLl9fY2FjaGVbaWRdO1xuICAgIH1cblxuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNlbGVjdDItaWQnKTtcbiAgfTtcblxuICBVdGlscy5jb3B5Tm9uSW50ZXJuYWxDc3NDbGFzc2VzID0gZnVuY3Rpb24gKGRlc3QsIHNyYykge1xuICAgIHZhciBjbGFzc2VzO1xuXG4gICAgdmFyIGRlc3RpbmF0aW9uQ2xhc3NlcyA9IGRlc3QuZ2V0QXR0cmlidXRlKCdjbGFzcycpLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgZGVzdGluYXRpb25DbGFzc2VzID0gZGVzdGluYXRpb25DbGFzc2VzLmZpbHRlcihmdW5jdGlvbiAoY2xhenopIHtcbiAgICAgIC8vIFNhdmUgYWxsIFNlbGVjdDIgY2xhc3Nlc1xuICAgICAgcmV0dXJuIGNsYXp6LmluZGV4T2YoJ3NlbGVjdDItJykgPT09IDA7XG4gICAgfSk7XG5cbiAgICB2YXIgc291cmNlQ2xhc3NlcyA9IHNyYy5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBzb3VyY2VDbGFzc2VzID0gc291cmNlQ2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNsYXp6KSB7XG4gICAgICAvLyBPbmx5IGNvcHkgbm9uLVNlbGVjdDIgY2xhc3Nlc1xuICAgICAgcmV0dXJuIGNsYXp6LmluZGV4T2YoJ3NlbGVjdDItJykgIT09IDA7XG4gICAgfSk7XG5cbiAgICB2YXIgcmVwbGFjZW1lbnRzID0gZGVzdGluYXRpb25DbGFzc2VzLmNvbmNhdChzb3VyY2VDbGFzc2VzKTtcblxuICAgIGRlc3Quc2V0QXR0cmlidXRlKCdjbGFzcycsIHJlcGxhY2VtZW50cy5qb2luKCcgJykpO1xuICB9O1xuXG4gIHJldHVybiBVdGlscztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvcmVzdWx0cycsW1xuICAnanF1ZXJ5JyxcbiAgJy4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMpIHtcbiAgZnVuY3Rpb24gUmVzdWx0cyAoJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMuZGF0YSA9IGRhdGFBZGFwdGVyO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBSZXN1bHRzLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFJlc3VsdHMsIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHJlc3VsdHMgPSAkKFxuICAgICAgJzx1bCBjbGFzcz1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uc1wiIHJvbGU9XCJsaXN0Ym94XCI+PC91bD4nXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdtdWx0aXBsZScpKSB7XG4gICAgICAkcmVzdWx0cy5hdHRyKCdhcmlhLW11bHRpc2VsZWN0YWJsZScsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgdGhpcy4kcmVzdWx0cyA9ICRyZXN1bHRzO1xuXG4gICAgcmV0dXJuICRyZXN1bHRzO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHJlc3VsdHMuZW1wdHkoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5kaXNwbGF5TWVzc2FnZSA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5oaWRlTG9hZGluZygpO1xuXG4gICAgdmFyICRtZXNzYWdlID0gJChcbiAgICAgICc8bGkgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCInICtcbiAgICAgICcgY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvblwiPjwvbGk+J1xuICAgICk7XG5cbiAgICB2YXIgbWVzc2FnZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldChwYXJhbXMubWVzc2FnZSk7XG5cbiAgICAkbWVzc2FnZS5hcHBlbmQoXG4gICAgICBlc2NhcGVNYXJrdXAoXG4gICAgICAgIG1lc3NhZ2UocGFyYW1zLmFyZ3MpXG4gICAgICApXG4gICAgKTtcblxuICAgICRtZXNzYWdlWzBdLmNsYXNzTmFtZSArPSAnIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZSc7XG5cbiAgICB0aGlzLiRyZXN1bHRzLmFwcGVuZCgkbWVzc2FnZSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuaGlkZU1lc3NhZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fbWVzc2FnZScpLnJlbW92ZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5oaWRlTG9hZGluZygpO1xuXG4gICAgdmFyICRvcHRpb25zID0gW107XG5cbiAgICBpZiAoZGF0YS5yZXN1bHRzID09IG51bGwgfHwgZGF0YS5yZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKHRoaXMuJHJlc3VsdHMuY2hpbGRyZW4oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgICAgbWVzc2FnZTogJ25vUmVzdWx0cydcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRhLnJlc3VsdHMgPSB0aGlzLnNvcnQoZGF0YS5yZXN1bHRzKTtcblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5yZXN1bHRzLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgaXRlbSA9IGRhdGEucmVzdWx0c1tkXTtcblxuICAgICAgdmFyICRvcHRpb24gPSB0aGlzLm9wdGlvbihpdGVtKTtcblxuICAgICAgJG9wdGlvbnMucHVzaCgkb3B0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLiRyZXN1bHRzLmFwcGVuZCgkb3B0aW9ucyk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJHJlc3VsdHMsICRkcm9wZG93bikge1xuICAgIHZhciAkcmVzdWx0c0NvbnRhaW5lciA9ICRkcm9wZG93bi5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzJyk7XG4gICAgJHJlc3VsdHNDb250YWluZXIuYXBwZW5kKCRyZXN1bHRzKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc29ydGVyID0gdGhpcy5vcHRpb25zLmdldCgnc29ydGVyJyk7XG5cbiAgICByZXR1cm4gc29ydGVyKGRhdGEpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZ2hsaWdodEZpcnN0SXRlbSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRyZXN1bHRzXG4gICAgICAuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICB2YXIgJHNlbGVjdGVkID0gJG9wdGlvbnMuZmlsdGVyKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkJyk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNlbGVjdGVkIG9wdGlvbnNcbiAgICBpZiAoJHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBzZWxlY3RlZCBvcHRpb25zLCBoaWdobGlnaHQgdGhlIGZpcnN0XG4gICAgICAkc2VsZWN0ZWQuZmlyc3QoKS50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBzZWxlY3RlZCBvcHRpb25zLCBoaWdobGlnaHQgdGhlIGZpcnN0IG9wdGlvblxuICAgICAgLy8gaW4gdGhlIGRyb3Bkb3duXG4gICAgICAkb3B0aW9ucy5maXJzdCgpLnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5zZXRDbGFzc2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZGF0YS5jdXJyZW50KGZ1bmN0aW9uIChzZWxlY3RlZCkge1xuICAgICAgdmFyIHNlbGVjdGVkSWRzID0gc2VsZWN0ZWQubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHJldHVybiBzLmlkLnRvU3RyaW5nKCk7XG4gICAgICB9KTtcblxuICAgICAgdmFyICRvcHRpb25zID0gc2VsZi4kcmVzdWx0c1xuICAgICAgICAuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgJG9wdGlvbiA9ICQodGhpcyk7XG5cbiAgICAgICAgdmFyIGl0ZW0gPSBVdGlscy5HZXREYXRhKHRoaXMsICdkYXRhJyk7XG5cbiAgICAgICAgLy8gaWQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nIHdoZW4gY29tcGFyaW5nXG4gICAgICAgIHZhciBpZCA9ICcnICsgaXRlbS5pZDtcblxuICAgICAgICBpZiAoKGl0ZW0uZWxlbWVudCAhPSBudWxsICYmIGl0ZW0uZWxlbWVudC5zZWxlY3RlZCkgfHxcbiAgICAgICAgICAgIChpdGVtLmVsZW1lbnQgPT0gbnVsbCAmJiBzZWxlY3RlZElkcy5pbmRleE9mKGlkKSA+IC0xKSkge1xuICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkJyk7XG4gICAgICAgICAgJG9wdGlvbi5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuICAgICAgICAgICRvcHRpb24uYXR0cignYXJpYS1zZWxlY3RlZCcsICdmYWxzZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnNob3dMb2FkaW5nID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciBsb2FkaW5nTW9yZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgnc2VhcmNoaW5nJyk7XG5cbiAgICB2YXIgbG9hZGluZyA9IHtcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIHRleHQ6IGxvYWRpbmdNb3JlKHBhcmFtcylcbiAgICB9O1xuICAgIHZhciAkbG9hZGluZyA9IHRoaXMub3B0aW9uKGxvYWRpbmcpO1xuICAgICRsb2FkaW5nLmNsYXNzTmFtZSArPSAnIGxvYWRpbmctcmVzdWx0cyc7XG5cbiAgICB0aGlzLiRyZXN1bHRzLnByZXBlbmQoJGxvYWRpbmcpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVMb2FkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHJlc3VsdHMuZmluZCgnLmxvYWRpbmctcmVzdWx0cycpLnJlbW92ZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLm9wdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7XG4gICAgb3B0aW9uLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uJyk7XG4gICAgb3B0aW9uLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICB2YXIgYXR0cnMgPSB7XG4gICAgICAncm9sZSc6ICdvcHRpb24nXG4gICAgfTtcblxuICAgIHZhciBtYXRjaGVzID0gd2luZG93LkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgfHxcbiAgICAgIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3RvciB8fFxuICAgICAgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcblxuICAgIGlmICgoZGF0YS5lbGVtZW50ICE9IG51bGwgJiYgbWF0Y2hlcy5jYWxsKGRhdGEuZWxlbWVudCwgJzpkaXNhYmxlZCcpKSB8fFxuICAgICAgICAoZGF0YS5lbGVtZW50ID09IG51bGwgJiYgZGF0YS5kaXNhYmxlZCkpIHtcbiAgICAgIGF0dHJzWydhcmlhLWRpc2FibGVkJ10gPSAndHJ1ZSc7XG5cbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1kaXNhYmxlZCcpO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmlkID09IG51bGwpIHtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuICAgIH1cblxuICAgIGlmIChkYXRhLl9yZXN1bHRJZCAhPSBudWxsKSB7XG4gICAgICBvcHRpb24uaWQgPSBkYXRhLl9yZXN1bHRJZDtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgb3B0aW9uLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jaGlsZHJlbikge1xuICAgICAgYXR0cnMucm9sZSA9ICdncm91cCc7XG4gICAgICBhdHRyc1snYXJpYS1sYWJlbCddID0gZGF0YS50ZXh0O1xuXG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tZ3JvdXAnKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIGF0dHJzKSB7XG4gICAgICB2YXIgdmFsID0gYXR0cnNbYXR0cl07XG5cbiAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoYXR0ciwgdmFsKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jaGlsZHJlbikge1xuICAgICAgdmFyICRvcHRpb24gPSAkKG9wdGlvbik7XG5cbiAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpO1xuICAgICAgbGFiZWwuY2xhc3NOYW1lID0gJ3NlbGVjdDItcmVzdWx0c19fZ3JvdXAnO1xuXG4gICAgICB0aGlzLnRlbXBsYXRlKGRhdGEsIGxhYmVsKTtcblxuICAgICAgdmFyICRjaGlsZHJlbiA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGRhdGEuY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gZGF0YS5jaGlsZHJlbltjXTtcblxuICAgICAgICB2YXIgJGNoaWxkID0gdGhpcy5vcHRpb24oY2hpbGQpO1xuXG4gICAgICAgICRjaGlsZHJlbi5wdXNoKCRjaGlsZCk7XG4gICAgICB9XG5cbiAgICAgIHZhciAkY2hpbGRyZW5Db250YWluZXIgPSAkKCc8dWw+PC91bD4nLCB7XG4gICAgICAgICdjbGFzcyc6ICdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMgc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zLS1uZXN0ZWQnLFxuICAgICAgICAncm9sZSc6ICdub25lJ1xuICAgICAgfSk7XG5cbiAgICAgICRjaGlsZHJlbkNvbnRhaW5lci5hcHBlbmQoJGNoaWxkcmVuKTtcblxuICAgICAgJG9wdGlvbi5hcHBlbmQobGFiZWwpO1xuICAgICAgJG9wdGlvbi5hcHBlbmQoJGNoaWxkcmVuQ29udGFpbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBvcHRpb24pO1xuICAgIH1cblxuICAgIFV0aWxzLlN0b3JlRGF0YShvcHRpb24sICdkYXRhJywgZGF0YSk7XG5cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGlkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcblxuICAgIHRoaXMuJHJlc3VsdHMuYXR0cignaWQnLCBpZCk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YWxsJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5jbGVhcigpO1xuICAgICAgc2VsZi5hcHBlbmQocGFyYW1zLmRhdGEpO1xuXG4gICAgICBpZiAoY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFwcGVuZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuYXBwZW5kKHBhcmFtcy5kYXRhKTtcblxuICAgICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLnNldENsYXNzZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmhpZGVNZXNzYWdlcygpO1xuICAgICAgc2VsZi5zaG93TG9hZGluZyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuXG4gICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnc2Nyb2xsQWZ0ZXJTZWxlY3QnKSkge1xuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG5cbiAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdzY3JvbGxBZnRlclNlbGVjdCcpKSB7XG4gICAgICAgIHNlbGYuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBvcGVuLCBhcmlhLWV4cGVuZGVkPVwidHJ1ZVwiXG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICBzZWxmLnNldENsYXNzZXMoKTtcbiAgICAgIHNlbGYuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIGNsb3NlZCwgYXJpYS1leHBlbmRlZD1cImZhbHNlXCJcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICBzZWxmLiRyZXN1bHRzLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnRvZ2dsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICRoaWdobGlnaHRlZC50cmlnZ2VyKCdtb3VzZXVwJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6c2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRoaWdobGlnaHRlZFswXSwgJ2RhdGEnKTtcblxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5oYXNDbGFzcygnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkJykpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdjbG9zZScsIHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0Jywge1xuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6cHJldmlvdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgdmFyICRvcHRpb25zID0gc2VsZi4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9ICRvcHRpb25zLmluZGV4KCRoaWdobGlnaHRlZCk7XG5cbiAgICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0IHRoZSB0b3AsIGRvbid0IG1vdmUgZnVydGhlclxuICAgICAgLy8gSWYgbm8gb3B0aW9ucywgY3VycmVudEluZGV4IHdpbGwgYmUgLTFcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPD0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuXG4gICAgICAvLyBJZiBub25lIGFyZSBoaWdobGlnaHRlZCwgaGlnaGxpZ2h0IHRoZSBmaXJzdFxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgdmFyICRuZXh0ID0gJG9wdGlvbnMuZXEobmV4dEluZGV4KTtcblxuICAgICAgJG5leHQudHJpZ2dlcignbW91c2VlbnRlcicpO1xuXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHNlbGYuJHJlc3VsdHMub2Zmc2V0KCkudG9wO1xuICAgICAgdmFyIG5leHRUb3AgPSAkbmV4dC5vZmZzZXQoKS50b3A7XG4gICAgICB2YXIgbmV4dE9mZnNldCA9IHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgICBpZiAobmV4dEluZGV4ID09PSAwKSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKDApO1xuICAgICAgfSBlbHNlIGlmIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCA8IDApIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bmV4dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICB2YXIgJG9wdGlvbnMgPSBzZWxmLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcblxuICAgICAgdmFyIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG5cbiAgICAgIC8vIElmIHdlIGFyZSBhdCB0aGUgbGFzdCBvcHRpb24sIHN0YXkgdGhlcmVcbiAgICAgIGlmIChuZXh0SW5kZXggPj0gJG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyICRuZXh0ID0gJG9wdGlvbnMuZXEobmV4dEluZGV4KTtcblxuICAgICAgJG5leHQudHJpZ2dlcignbW91c2VlbnRlcicpO1xuXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHNlbGYuJHJlc3VsdHMub2Zmc2V0KCkudG9wICtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5vdXRlckhlaWdodChmYWxzZSk7XG4gICAgICB2YXIgbmV4dEJvdHRvbSA9ICRuZXh0Lm9mZnNldCgpLnRvcCArICRuZXh0Lm91dGVySGVpZ2h0KGZhbHNlKTtcbiAgICAgIHZhciBuZXh0T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIG5leHRCb3R0b20gLSBjdXJyZW50T2Zmc2V0O1xuXG4gICAgICBpZiAobmV4dEluZGV4ID09PSAwKSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKDApO1xuICAgICAgfSBlbHNlIGlmIChuZXh0Qm90dG9tID4gY3VycmVudE9mZnNldCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChuZXh0T2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5lbGVtZW50WzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCcpO1xuICAgICAgcGFyYW1zLmVsZW1lbnRbMF0uc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czptZXNzYWdlJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5kaXNwbGF5TWVzc2FnZShwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKCQuZm4ubW91c2V3aGVlbCkge1xuICAgICAgdGhpcy4kcmVzdWx0cy5vbignbW91c2V3aGVlbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciB0b3AgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpO1xuXG4gICAgICAgIHZhciBib3R0b20gPSBzZWxmLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSB0b3AgKyBlLmRlbHRhWTtcblxuICAgICAgICB2YXIgaXNBdFRvcCA9IGUuZGVsdGFZID4gMCAmJiB0b3AgLSBlLmRlbHRhWSA8PSAwO1xuICAgICAgICB2YXIgaXNBdEJvdHRvbSA9IGUuZGVsdGFZIDwgMCAmJiBib3R0b20gPD0gc2VsZi4kcmVzdWx0cy5oZWlnaHQoKTtcblxuICAgICAgICBpZiAoaXNBdFRvcCkge1xuICAgICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKDApO1xuXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBdEJvdHRvbSkge1xuICAgICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKFxuICAgICAgICAgICAgc2VsZi4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0IC0gc2VsZi4kcmVzdWx0cy5oZWlnaHQoKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4kcmVzdWx0cy5vbignbW91c2V1cCcsICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcblxuICAgICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKHRoaXMsICdkYXRhJyk7XG5cbiAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkJykpIHtcbiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ211bHRpcGxlJykpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnLCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0Jywge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnQsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5vbignbW91c2VlbnRlcicsICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKHRoaXMsICdkYXRhJyk7XG5cbiAgICAgIHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKClcbiAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCcpXG4gICAgICAgICAgLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcblxuICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmZvY3VzJywge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBlbGVtZW50OiAkKHRoaXMpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5nZXRIaWdobGlnaHRlZFJlc3VsdHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRoaWdobGlnaHRlZCA9IHRoaXMuJHJlc3VsdHNcbiAgICAuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCcpO1xuXG4gICAgcmV0dXJuICRoaWdobGlnaHRlZDtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHJlc3VsdHMucmVtb3ZlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGhpZ2hsaWdodGVkID0gdGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xuXG4gICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLiRyZXN1bHRzLm9mZnNldCgpLnRvcDtcbiAgICB2YXIgbmV4dFRvcCA9ICRoaWdobGlnaHRlZC5vZmZzZXQoKS50b3A7XG4gICAgdmFyIG5leHRPZmZzZXQgPSB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgKG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0KTtcblxuICAgIHZhciBvZmZzZXREZWx0YSA9IG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0O1xuICAgIG5leHRPZmZzZXQgLT0gJGhpZ2hsaWdodGVkLm91dGVySGVpZ2h0KGZhbHNlKSAqIDI7XG5cbiAgICBpZiAoY3VycmVudEluZGV4IDw9IDIpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKDApO1xuICAgIH0gZWxzZSBpZiAob2Zmc2V0RGVsdGEgPiB0aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KCkgfHwgb2Zmc2V0RGVsdGEgPCAwKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcChuZXh0T2Zmc2V0KTtcbiAgICB9XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUudGVtcGxhdGUgPSBmdW5jdGlvbiAocmVzdWx0LCBjb250YWluZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0ZW1wbGF0ZVJlc3VsdCcpO1xuICAgIHZhciBlc2NhcGVNYXJrdXAgPSB0aGlzLm9wdGlvbnMuZ2V0KCdlc2NhcGVNYXJrdXAnKTtcblxuICAgIHZhciBjb250ZW50ID0gdGVtcGxhdGUocmVzdWx0LCBjb250YWluZXIpO1xuXG4gICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkge1xuICAgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBlc2NhcGVNYXJrdXAoY29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICQoY29udGFpbmVyKS5hcHBlbmQoY29udGVudCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBSZXN1bHRzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9rZXlzJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIEtFWVMgPSB7XG4gICAgQkFDS1NQQUNFOiA4LFxuICAgIFRBQjogOSxcbiAgICBFTlRFUjogMTMsXG4gICAgU0hJRlQ6IDE2LFxuICAgIENUUkw6IDE3LFxuICAgIEFMVDogMTgsXG4gICAgRVNDOiAyNyxcbiAgICBTUEFDRTogMzIsXG4gICAgUEFHRV9VUDogMzMsXG4gICAgUEFHRV9ET1dOOiAzNCxcbiAgICBFTkQ6IDM1LFxuICAgIEhPTUU6IDM2LFxuICAgIExFRlQ6IDM3LFxuICAgIFVQOiAzOCxcbiAgICBSSUdIVDogMzksXG4gICAgRE9XTjogNDAsXG4gICAgREVMRVRFOiA0NlxuICB9O1xuXG4gIHJldHVybiBLRVlTO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vYmFzZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL3V0aWxzJyxcbiAgJy4uL2tleXMnXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMsIEtFWVMpIHtcbiAgZnVuY3Rpb24gQmFzZVNlbGVjdGlvbiAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gJGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIEJhc2VTZWxlY3Rpb24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQmFzZVNlbGVjdGlvbiwgVXRpbHMuT2JzZXJ2YWJsZSk7XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uXCIgcm9sZT1cImNvbWJvYm94XCIgJyArXG4gICAgICAnIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgdGhpcy5fdGFiaW5kZXggPSAwO1xuXG4gICAgaWYgKFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gVXRpbHMuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAnb2xkLXRhYmluZGV4Jyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JykgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB0aGlzLiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4Jyk7XG4gICAgfVxuXG4gICAgJHNlbGVjdGlvbi5hdHRyKCd0aXRsZScsIHRoaXMuJGVsZW1lbnQuYXR0cigndGl0bGUnKSk7XG4gICAgJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsIHRoaXMuX3RhYmluZGV4KTtcbiAgICAkc2VsZWN0aW9uLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbiA9ICRzZWxlY3Rpb247XG5cbiAgICByZXR1cm4gJHNlbGVjdGlvbjtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzSWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdmb2N1cycsIGV2dCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2JsdXInLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLl9oYW5kbGVCbHVyKGV2dCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2tleWRvd24nLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ2tleXByZXNzJywgZXZ0KTtcblxuICAgICAgaWYgKGV2dC53aGljaCA9PT0gS0VZUy5TUEFDRSkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBwYXJhbXMuZGF0YS5fcmVzdWx0SWQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3Rpb246dXBkYXRlJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi51cGRhdGUocGFyYW1zLmRhdGEpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgYXJpYS1leHBhbmRlZD1cInRydWVcIlxuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtb3ducycsIHJlc3VsdHNJZCk7XG5cbiAgICAgIHNlbGYuX2F0dGFjaENsb3NlSGFuZGxlcihjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIGNsb3NlZCwgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24ucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24ucmVtb3ZlQXR0cignYXJpYS1vd25zJyk7XG5cbiAgICAgIHNlbGYuJHNlbGVjdGlvbi50cmlnZ2VyKCdmb2N1cycpO1xuXG4gICAgICBzZWxmLl9kZXRhY2hDbG9zZUhhbmRsZXIoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZW5hYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4Jywgc2VsZi5fdGFiaW5kZXgpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgIH0pO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVCbHVyID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZGVsYXllZCBhcyB0aGUgYWN0aXZlIGVsZW1lbnQgaXMgdGhlIGJvZHkgd2hlbiB0aGUgdGFiXG4gICAgLy8ga2V5IGlzIHByZXNzZWQsIHBvc3NpYmx5IGFsb25nIHdpdGggb3RoZXJzLlxuICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERvbid0IHRyaWdnZXIgYGJsdXJgIGlmIHRoZSBmb2N1cyBpcyBzdGlsbCBpbiB0aGUgc2VsZWN0aW9uXG4gICAgICBpZiAoXG4gICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHNlbGYuJHNlbGVjdGlvblswXSkgfHxcbiAgICAgICAgKCQuY29udGFpbnMoc2VsZi4kc2VsZWN0aW9uWzBdLCBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYudHJpZ2dlcignYmx1cicsIGV2dCk7XG4gICAgfSwgMSk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2F0dGFjaENsb3NlSGFuZGxlciA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcblxuICAgICQoZG9jdW1lbnQuYm9keSkub24oJ21vdXNlZG93bi5zZWxlY3QyLicgKyBjb250YWluZXIuaWQsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgJHRhcmdldCA9ICQoZS50YXJnZXQpO1xuXG4gICAgICB2YXIgJHNlbGVjdCA9ICR0YXJnZXQuY2xvc2VzdCgnLnNlbGVjdDInKTtcblxuICAgICAgdmFyICRhbGwgPSAkKCcuc2VsZWN0Mi5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuXG4gICAgICAkYWxsLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcyA9PSAkc2VsZWN0WzBdKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyICRlbGVtZW50ID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZWxlbWVudCcpO1xuXG4gICAgICAgICRlbGVtZW50LnNlbGVjdDIoJ2Nsb3NlJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5fZGV0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgICQoZG9jdW1lbnQuYm9keSkub2ZmKCdtb3VzZWRvd24uc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkKTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uICgkc2VsZWN0aW9uLCAkY29udGFpbmVyKSB7XG4gICAgdmFyICRzZWxlY3Rpb25Db250YWluZXIgPSAkY29udGFpbmVyLmZpbmQoJy5zZWxlY3Rpb24nKTtcbiAgICAkc2VsZWN0aW9uQ29udGFpbmVyLmFwcGVuZCgkc2VsZWN0aW9uKTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX2RldGFjaENsb3NlSGFuZGxlcih0aGlzLmNvbnRhaW5lcik7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgdXBkYXRlYCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZW5hYmxlZFwiIChub3QgXCJkaXNhYmxlZFwiKSBzdGF0ZSBvZiB0aGlzXG4gICAqIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBpbnN0YW5jZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImRpc2FibGVkXCIgc3RhdGUgb2YgdGhpcyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgZmFsc2UuXG4gICAqL1xuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5pc0Rpc2FibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpO1xuICB9O1xuXG4gIHJldHVybiBCYXNlU2VsZWN0aW9uO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2luZ2xlJyxbXG4gICdqcXVlcnknLFxuICAnLi9iYXNlJyxcbiAgJy4uL3V0aWxzJyxcbiAgJy4uL2tleXMnXG5dLCBmdW5jdGlvbiAoJCwgQmFzZVNlbGVjdGlvbiwgVXRpbHMsIEtFWVMpIHtcbiAgZnVuY3Rpb24gU2luZ2xlU2VsZWN0aW9uICgpIHtcbiAgICBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoU2luZ2xlU2VsZWN0aW9uLCBCYXNlU2VsZWN0aW9uKTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9IFNpbmdsZVNlbGVjdGlvbi5fX3N1cGVyX18ucmVuZGVyLmNhbGwodGhpcyk7XG5cbiAgICAkc2VsZWN0aW9uWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUnKTtcblxuICAgICRzZWxlY3Rpb24uaHRtbChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiPjwvc3Bhbj4nICtcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19hcnJvd1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nICtcbiAgICAgICAgJzxiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2I+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIFNpbmdsZVNlbGVjdGlvbi5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgdmFyIGlkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJywgaWQpXG4gICAgICAuYXR0cigncm9sZScsICd0ZXh0Ym94JylcbiAgICAgIC5hdHRyKCdhcmlhLXJlYWRvbmx5JywgJ3RydWUnKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24uYXR0cignYXJpYS1sYWJlbGxlZGJ5JywgaWQpO1xuICAgIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWNvbnRyb2xzJywgaWQpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAvLyBPbmx5IHJlc3BvbmQgdG8gbGVmdCBjbGlja3NcbiAgICAgIGlmIChldnQud2hpY2ggIT09IDEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ3RvZ2dsZScsIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXMnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAvLyBVc2VyIGZvY3VzZXMgb24gdGhlIGNvbnRhaW5lclxuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdibHVyJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gVXNlciBleGl0cyB0aGUgY29udGFpbmVyXG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi4kc2VsZWN0aW9uLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcbiAgICAkcmVuZGVyZWQuZW1wdHkoKTtcbiAgICAkcmVuZGVyZWQucmVtb3ZlQXR0cigndGl0bGUnKTsgLy8gY2xlYXIgdG9vbHRpcCBvbiBlbXB0eVxuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uIChkYXRhLCBjb250YWluZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0ZW1wbGF0ZVNlbGVjdGlvbicpO1xuICAgIHZhciBlc2NhcGVNYXJrdXAgPSB0aGlzLm9wdGlvbnMuZ2V0KCdlc2NhcGVNYXJrdXAnKTtcblxuICAgIHJldHVybiBlc2NhcGVNYXJrdXAodGVtcGxhdGUoZGF0YSwgY29udGFpbmVyKSk7XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICQoJzxzcGFuPjwvc3Bhbj4nKTtcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGlvbiA9IGRhdGFbMF07XG5cbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcbiAgICB2YXIgZm9ybWF0dGVkID0gdGhpcy5kaXNwbGF5KHNlbGVjdGlvbiwgJHJlbmRlcmVkKTtcblxuICAgICRyZW5kZXJlZC5lbXB0eSgpLmFwcGVuZChmb3JtYXR0ZWQpO1xuXG4gICAgdmFyIHRpdGxlID0gc2VsZWN0aW9uLnRpdGxlIHx8IHNlbGVjdGlvbi50ZXh0O1xuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICAkcmVuZGVyZWQuYXR0cigndGl0bGUnLCB0aXRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICRyZW5kZXJlZC5yZW1vdmVBdHRyKCd0aXRsZScpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU2luZ2xlU2VsZWN0aW9uO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vbXVsdGlwbGUnLFtcbiAgJ2pxdWVyeScsXG4gICcuL2Jhc2UnLFxuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgQmFzZVNlbGVjdGlvbiwgVXRpbHMpIHtcbiAgZnVuY3Rpb24gTXVsdGlwbGVTZWxlY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoTXVsdGlwbGVTZWxlY3Rpb24sIEJhc2VTZWxlY3Rpb24pO1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSBNdWx0aXBsZVNlbGVjdGlvbi5fX3N1cGVyX18ucmVuZGVyLmNhbGwodGhpcyk7XG5cbiAgICAkc2VsZWN0aW9uWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZScpO1xuXG4gICAgJHNlbGVjdGlvbi5odG1sKFxuICAgICAgJzx1bCBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiPjwvdWw+J1xuICAgICk7XG5cbiAgICByZXR1cm4gJHNlbGVjdGlvbjtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBNdWx0aXBsZVNlbGVjdGlvbi5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgdmFyIGlkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJykuYXR0cignaWQnLCBpZCk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2NsaWNrJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCd0b2dnbGUnLCB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAnY2xpY2snLFxuICAgICAgJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IGlmIGl0IGlzIGRpc2FibGVkXG4gICAgICAgIGlmIChzZWxmLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciAkcmVtb3ZlID0gJCh0aGlzKTtcbiAgICAgICAgdmFyICRzZWxlY3Rpb24gPSAkcmVtb3ZlLnBhcmVudCgpO1xuXG4gICAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkc2VsZWN0aW9uWzBdLCAnZGF0YScpO1xuXG4gICAgICAgIHNlbGYudHJpZ2dlcigndW5zZWxlY3QnLCB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxuICAgICAgICBpZiAoc2VsZi5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgJHJlbmRlcmVkLmVtcHR5KCk7XG4gICAgJHJlbmRlcmVkLnJlbW92ZUF0dHIoJ3RpdGxlJyk7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbiAoZGF0YSwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVTZWxlY3Rpb24nKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICByZXR1cm4gZXNjYXBlTWFya3VwKHRlbXBsYXRlKGRhdGEsIGNvbnRhaW5lcikpO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRjb250YWluZXIgPSAkKFxuICAgICAgJzxsaSBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VcIj4nICtcbiAgICAgICAgJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlXCIgJyArXG4gICAgICAgICd0YWJpbmRleD1cIi0xXCI+JyArXG4gICAgICAgICAgJzxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+JyArXG4gICAgICAgICc8L2J1dHRvbj4nICtcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fZGlzcGxheVwiPjwvc3Bhbj4nICtcbiAgICAgICc8L2xpPidcbiAgICApO1xuXG4gICAgcmV0dXJuICRjb250YWluZXI7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyICRzZWxlY3Rpb25zID0gW107XG5cbiAgICB2YXIgc2VsZWN0aW9uSWRQcmVmaXggPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpXG4gICAgICAuYXR0cignaWQnKSArICctY2hvaWNlLSc7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBzZWxlY3Rpb24gPSBkYXRhW2RdO1xuXG4gICAgICB2YXIgJHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCk7XG4gICAgICB2YXIgZm9ybWF0dGVkID0gdGhpcy5kaXNwbGF5KHNlbGVjdGlvbiwgJHNlbGVjdGlvbik7XG5cbiAgICAgIHZhciBzZWxlY3Rpb25JZCA9IHNlbGVjdGlvbklkUHJlZml4ICsgVXRpbHMuZ2VuZXJhdGVDaGFycyg0KSArICctJztcblxuICAgICAgaWYgKHNlbGVjdGlvbi5pZCkge1xuICAgICAgICBzZWxlY3Rpb25JZCArPSBzZWxlY3Rpb24uaWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3Rpb25JZCArPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgICAgfVxuXG4gICAgICAkc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19kaXNwbGF5JylcbiAgICAgICAgLmFwcGVuZChmb3JtYXR0ZWQpXG4gICAgICAgIC5hdHRyKCdpZCcsIHNlbGVjdGlvbklkKTtcblxuICAgICAgdmFyIHRpdGxlID0gc2VsZWN0aW9uLnRpdGxlIHx8IHNlbGVjdGlvbi50ZXh0O1xuXG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgJHNlbGVjdGlvbi5hdHRyKCd0aXRsZScsIHRpdGxlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbW92ZUl0ZW0gPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3JlbW92ZUl0ZW0nKTtcblxuICAgICAgdmFyICRyZW1vdmUgPSAkc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUnKTtcblxuICAgICAgJHJlbW92ZS5hdHRyKCd0aXRsZScsIHJlbW92ZUl0ZW0oKSk7XG4gICAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtbGFiZWwnLCByZW1vdmVJdGVtKCkpO1xuICAgICAgJHJlbW92ZS5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jywgc2VsZWN0aW9uSWQpO1xuXG4gICAgICBVdGlscy5TdG9yZURhdGEoJHNlbGVjdGlvblswXSwgJ2RhdGEnLCBzZWxlY3Rpb24pO1xuXG4gICAgICAkc2VsZWN0aW9ucy5wdXNoKCRzZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuXG4gICAgJHJlbmRlcmVkLmFwcGVuZCgkc2VsZWN0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIE11bHRpcGxlU2VsZWN0aW9uO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vcGxhY2Vob2xkZXInLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQbGFjZWhvbGRlciAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG9wdGlvbnMuZ2V0KCdwbGFjZWhvbGRlcicpKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS5ub3JtYWxpemVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChfLCBwbGFjZWhvbGRlcikge1xuICAgIGlmICh0eXBlb2YgcGxhY2Vob2xkZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwbGFjZWhvbGRlciA9IHtcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICB0ZXh0OiBwbGFjZWhvbGRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgUGxhY2Vob2xkZXIucHJvdG90eXBlLmNyZWF0ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgJHBsYWNlaG9sZGVyID0gdGhpcy5zZWxlY3Rpb25Db250YWluZXIoKTtcblxuICAgICRwbGFjZWhvbGRlci5odG1sKHRoaXMuZGlzcGxheShwbGFjZWhvbGRlcikpO1xuICAgICRwbGFjZWhvbGRlclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXInKTtcbiAgICAkcGxhY2Vob2xkZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZScpO1xuXG4gICAgdmFyIHBsYWNlaG9sZGVyVGl0bGUgPSBwbGFjZWhvbGRlci50aXRsZSB8fFxuICAgICAgcGxhY2Vob2xkZXIudGV4dCB8fFxuICAgICAgJHBsYWNlaG9sZGVyLnRleHQoKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJykuYXR0cihcbiAgICAgICd0aXRsZScsXG4gICAgICBwbGFjZWhvbGRlclRpdGxlXG4gICAgKTtcblxuICAgIHJldHVybiAkcGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgUGxhY2Vob2xkZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICB2YXIgc2luZ2xlUGxhY2Vob2xkZXIgPSAoXG4gICAgICBkYXRhLmxlbmd0aCA9PSAxICYmIGRhdGFbMF0uaWQgIT0gdGhpcy5wbGFjZWhvbGRlci5pZFxuICAgICk7XG4gICAgdmFyIG11bHRpcGxlU2VsZWN0aW9ucyA9IGRhdGEubGVuZ3RoID4gMTtcblxuICAgIGlmIChtdWx0aXBsZVNlbGVjdGlvbnMgfHwgc2luZ2xlUGxhY2Vob2xkZXIpIHtcbiAgICAgIHJldHVybiBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyKCk7XG5cbiAgICB2YXIgJHBsYWNlaG9sZGVyID0gdGhpcy5jcmVhdGVQbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJykuYXBwZW5kKCRwbGFjZWhvbGRlcik7XG4gIH07XG5cbiAgcmV0dXJuIFBsYWNlaG9sZGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vYWxsb3dDbGVhcicsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL2tleXMnLFxuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgS0VZUywgVXRpbHMpIHtcbiAgZnVuY3Rpb24gQWxsb3dDbGVhciAoKSB7IH1cblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBhbGxvd0NsZWFyYCBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY29tYmluYXRpb24gJyArXG4gICAgICAgICAgJ3dpdGggdGhlIGBwbGFjZWhvbGRlcmAgb3B0aW9uLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ21vdXNlZG93bicsICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgc2VsZi5faGFuZGxlQ2xlYXIoZXZ0KTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLl9oYW5kbGVLZXlib2FyZENsZWFyKGV2dCwgY29udGFpbmVyKTtcbiAgICB9KTtcbiAgfTtcblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS5faGFuZGxlQ2xlYXIgPSBmdW5jdGlvbiAoXywgZXZ0KSB7XG4gICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkY2xlYXIgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicpO1xuXG4gICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBub3RoaW5nIGhhcyBiZWVuIHNlbGVjdGVkXG4gICAgaWYgKCRjbGVhci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGNsZWFyWzBdLCAnZGF0YScpO1xuXG4gICAgdmFyIHByZXZpb3VzVmFsID0gdGhpcy4kZWxlbWVudC52YWwoKTtcbiAgICB0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnBsYWNlaG9sZGVyLmlkKTtcblxuICAgIHZhciB1bnNlbGVjdERhdGEgPSB7XG4gICAgICBkYXRhOiBkYXRhXG4gICAgfTtcbiAgICB0aGlzLnRyaWdnZXIoJ2NsZWFyJywgdW5zZWxlY3REYXRhKTtcbiAgICBpZiAodW5zZWxlY3REYXRhLnByZXZlbnRlZCkge1xuICAgICAgdGhpcy4kZWxlbWVudC52YWwocHJldmlvdXNWYWwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdW5zZWxlY3REYXRhID0ge1xuICAgICAgICBkYXRhOiBkYXRhW2RdXG4gICAgICB9O1xuXG4gICAgICAvLyBUcmlnZ2VyIHRoZSBgdW5zZWxlY3RgIGV2ZW50LCBzbyBwZW9wbGUgY2FuIHByZXZlbnQgaXQgZnJvbSBiZWluZ1xuICAgICAgLy8gY2xlYXJlZC5cbiAgICAgIHRoaXMudHJpZ2dlcigndW5zZWxlY3QnLCB1bnNlbGVjdERhdGEpO1xuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgd2FzIHByZXZlbnRlZCwgZG9uJ3QgY2xlYXIgaXQgb3V0LlxuICAgICAgaWYgKHVuc2VsZWN0RGF0YS5wcmV2ZW50ZWQpIHtcbiAgICAgICAgdGhpcy4kZWxlbWVudC52YWwocHJldmlvdXNWYWwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXG4gICAgdGhpcy50cmlnZ2VyKCd0b2dnbGUnLCB7fSk7XG4gIH07XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuX2hhbmRsZUtleWJvYXJkQ2xlYXIgPSBmdW5jdGlvbiAoXywgZXZ0LCBjb250YWluZXIpIHtcbiAgICBpZiAoY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2dC53aGljaCA9PSBLRVlTLkRFTEVURSB8fCBldnQud2hpY2ggPT0gS0VZUy5CQUNLU1BBQ0UpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsZWFyKGV2dCk7XG4gICAgfVxuICB9O1xuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyJykucmVtb3ZlKCk7XG4gICAgdGhpcy4kc2VsZWN0aW9uWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VsZWN0aW9uLS1jbGVhcmFibGUnKTtcblxuICAgIGlmICh0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlcicpLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZWN0aW9uSWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpXG4gICAgICAuYXR0cignaWQnKTtcblxuICAgIHZhciByZW1vdmVBbGwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3JlbW92ZUFsbEl0ZW1zJyk7XG5cbiAgICB2YXIgJHJlbW92ZSA9ICQoXG4gICAgICAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXJcIiB0YWJpbmRleD1cIi0xXCI+JyArXG4gICAgICAgICc8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPicgK1xuICAgICAgJzwvYnV0dG9uPidcbiAgICApO1xuICAgICRyZW1vdmUuYXR0cigndGl0bGUnLCByZW1vdmVBbGwoKSk7XG4gICAgJHJlbW92ZS5hdHRyKCdhcmlhLWxhYmVsJywgcmVtb3ZlQWxsKCkpO1xuICAgICRyZW1vdmUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHNlbGVjdGlvbklkKTtcbiAgICBVdGlscy5TdG9yZURhdGEoJHJlbW92ZVswXSwgJ2RhdGEnLCBkYXRhKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5wcmVwZW5kKCRyZW1vdmUpO1xuICAgIHRoaXMuJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tY2xlYXJhYmxlJyk7XG4gIH07XG5cbiAgcmV0dXJuIEFsbG93Q2xlYXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9zZWFyY2gnLFtcbiAgJ2pxdWVyeScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIFNlYXJjaCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciBzZWFyY2hMYWJlbCA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgnc2VhcmNoJyk7XG4gICAgdmFyICRzZWFyY2ggPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWlubGluZVwiPicgK1xuICAgICAgICAnPHRleHRhcmVhIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2hfX2ZpZWxkXCInK1xuICAgICAgICAnIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCInICtcbiAgICAgICAgJyBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiJyArXG4gICAgICAgICcgc3BlbGxjaGVjaz1cImZhbHNlXCIgcm9sZT1cInNlYXJjaGJveFwiIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiID4nICtcbiAgICAgICAgJzwvdGV4dGFyZWE+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgdGhpcy4kc2VhcmNoQ29udGFpbmVyID0gJHNlYXJjaDtcbiAgICB0aGlzLiRzZWFyY2ggPSAkc2VhcmNoLmZpbmQoJ3RleHRhcmVhJyk7XG5cbiAgICB0aGlzLiRzZWFyY2gucHJvcCgnYXV0b2NvbXBsZXRlJywgdGhpcy5vcHRpb25zLmdldCgnYXV0b2NvbXBsZXRlJykpO1xuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCdhcmlhLWxhYmVsJywgc2VhcmNoTGFiZWwoKSk7XG5cbiAgICB2YXIgJHJlbmRlcmVkID0gZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLl90cmFuc2ZlclRhYkluZGV4KCk7XG4gICAgJHJlbmRlcmVkLmFwcGVuZCh0aGlzLiRzZWFyY2hDb250YWluZXIpO1xuXG4gICAgcmV0dXJuICRyZW5kZXJlZDtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0c0lkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcbiAgICB2YXIgc2VsZWN0aW9uSWQgPSBjb250YWluZXIuaWQgKyAnLWNvbnRhaW5lcic7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzZWxlY3Rpb25JZCk7XG5cbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1jb250cm9scycsIHJlc3VsdHNJZCk7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2gudmFsKCcnKTtcbiAgICAgIHNlbGYucmVzaXplU2VhcmNoKCk7XG4gICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1jb250cm9scycpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcblxuICAgICAgc2VsZi5fdHJhbnNmZXJUYWJJbmRleCgpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdkaXNhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmRhdGEuX3Jlc3VsdElkKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBwYXJhbXMuZGF0YS5fcmVzdWx0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1c2luJywgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdmb2N1cycsIGV2dCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3Vzb3V0JywgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlQmx1cihldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdrZXlkb3duJywgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBzZWxmLnRyaWdnZXIoJ2tleXByZXNzJywgZXZ0KTtcblxuICAgICAgc2VsZi5fa2V5VXBQcmV2ZW50ZWQgPSBldnQuaXNEZWZhdWx0UHJldmVudGVkKCk7XG5cbiAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XG5cbiAgICAgIGlmIChrZXkgPT09IEtFWVMuQkFDS1NQQUNFICYmIHNlbGYuJHNlYXJjaC52YWwoKSA9PT0gJycpIHtcbiAgICAgICAgdmFyICRwcmV2aW91c0Nob2ljZSA9IHNlbGYuJHNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZScpLmxhc3QoKTtcblxuICAgICAgICBpZiAoJHByZXZpb3VzQ2hvaWNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgaXRlbSA9IFV0aWxzLkdldERhdGEoJHByZXZpb3VzQ2hvaWNlWzBdLCAnZGF0YScpO1xuXG4gICAgICAgICAgc2VsZi5zZWFyY2hSZW1vdmVDaG9pY2UoaXRlbSk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdjbGljaycsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChzZWxmLiRzZWFyY2gudmFsKCkpIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVHJ5IHRvIGRldGVjdCB0aGUgSUUgdmVyc2lvbiBzaG91bGQgdGhlIGBkb2N1bWVudE1vZGVgIHByb3BlcnR5IHRoYXRcbiAgICAvLyBpcyBzdG9yZWQgb24gdGhlIGRvY3VtZW50LiBUaGlzIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4gSUUgYW5kIGlzXG4gICAgLy8gc2xpZ2h0bHkgY2xlYW5lciB0aGFuIGRvaW5nIGEgdXNlciBhZ2VudCBjaGVjay5cbiAgICAvLyBUaGlzIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUgaW4gRWRnZSwgYnV0IEVkZ2UgYWxzbyBkb2Vzbid0IGhhdmVcbiAgICAvLyB0aGlzIGJ1Zy5cbiAgICB2YXIgbXNpZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcbiAgICB2YXIgZGlzYWJsZUlucHV0RXZlbnRzID0gbXNpZSAmJiBtc2llIDw9IDExO1xuXG4gICAgLy8gV29ya2Fyb3VuZCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhlIGBpbnB1dGAgZXZlbnRcbiAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBkb3VibGUtdHJpZ2dlcmluZyBvZiBldmVudHMgZm9yIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnRcbiAgICAvLyBib3RoIHRoZSBga2V5dXBgIGFuZCBgaW5wdXRgIGV2ZW50cy5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAnaW5wdXQuc2VhcmNoY2hlY2snLFxuICAgICAgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSUUgd2lsbCB0cmlnZ2VyIHRoZSBgaW5wdXRgIGV2ZW50IHdoZW4gYSBwbGFjZWhvbGRlciBpcyB1c2VkIG9uIGFcbiAgICAgICAgLy8gc2VhcmNoIGJveC4gVG8gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBhcmUgZm9yY2VkIHRvIGlnbm9yZSBhbGxcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cbiAgICAgICAgaWYgKGRpc2FibGVJbnB1dEV2ZW50cykge1xuICAgICAgICAgIHNlbGYuJHNlbGVjdGlvbi5vZmYoJ2lucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjaycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVuYmluZCB0aGUgZHVwbGljYXRlZCBga2V5dXBgIGV2ZW50XG4gICAgICAgIHNlbGYuJHNlbGVjdGlvbi5vZmYoJ2tleXVwLnNlYXJjaCcpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAna2V5dXAuc2VhcmNoIGlucHV0LnNlYXJjaCcsXG4gICAgICAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvLyBJRSB3aWxsIHRyaWdnZXIgdGhlIGBpbnB1dGAgZXZlbnQgd2hlbiBhIHBsYWNlaG9sZGVyIGlzIHVzZWQgb24gYVxuICAgICAgICAvLyBzZWFyY2ggYm94LiBUbyBnZXQgYXJvdW5kIHRoaXMgaXNzdWUsIHdlIGFyZSBmb3JjZWQgdG8gaWdub3JlIGFsbFxuICAgICAgICAvLyBgaW5wdXRgIGV2ZW50cyBpbiBJRSBhbmQga2VlcCB1c2luZyBga2V5dXBgLlxuICAgICAgICBpZiAoZGlzYWJsZUlucHV0RXZlbnRzICYmIGV2dC50eXBlID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgc2VsZi4kc2VsZWN0aW9uLm9mZignaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleSA9IGV2dC53aGljaDtcblxuICAgICAgICAvLyBXZSBjYW4gZnJlZWx5IGlnbm9yZSBldmVudHMgZnJvbSBtb2RpZmllciBrZXlzXG4gICAgICAgIGlmIChrZXkgPT0gS0VZUy5TSElGVCB8fCBrZXkgPT0gS0VZUy5DVFJMIHx8IGtleSA9PSBLRVlTLkFMVCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhYmJpbmcgd2lsbCBiZSBoYW5kbGVkIGR1cmluZyB0aGUgYGtleWRvd25gIHBoYXNlXG4gICAgICAgIGlmIChrZXkgPT0gS0VZUy5UQUIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmhhbmRsZVNlYXJjaChldnQpO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJhbnNmZXIgdGhlIHRhYmluZGV4IGF0dHJpYnV0ZSBmcm9tIHRoZSByZW5kZXJlZFxuICAgKiBzZWxlY3Rpb24gdG8gdGhlIHNlYXJjaCBib3guIFRoaXMgYWxsb3dzIGZvciB0aGUgc2VhcmNoIGJveCB0byBiZSB1c2VkIGFzXG4gICAqIHRoZSBwcmltYXJ5IGZvY3VzIGluc3RlYWQgb2YgdGhlIHNlbGVjdGlvbiBjb250YWluZXIuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBTZWFyY2gucHJvdG90eXBlLl90cmFuc2ZlclRhYkluZGV4ID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCd0YWJpbmRleCcsIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcpKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLmNyZWF0ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGxhY2Vob2xkZXIpIHtcbiAgICB0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInLCBwbGFjZWhvbGRlci50ZXh0KTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICB2YXIgc2VhcmNoSGFkRm9jdXMgPSB0aGlzLiRzZWFyY2hbMF0gPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCdwbGFjZWhvbGRlcicsICcnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gICAgdGhpcy5yZXNpemVTZWFyY2goKTtcbiAgICBpZiAoc2VhcmNoSGFkRm9jdXMpIHtcbiAgICAgIHRoaXMuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH1cbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlc2l6ZVNlYXJjaCgpO1xuXG4gICAgaWYgKCF0aGlzLl9rZXlVcFByZXZlbnRlZCkge1xuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge1xuICAgICAgICB0ZXJtOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fa2V5VXBQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnNlYXJjaFJlbW92ZUNob2ljZSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGl0ZW0pIHtcbiAgICB0aGlzLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xuICAgICAgZGF0YTogaXRlbVxuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VhcmNoLnZhbChpdGVtLnRleHQpO1xuICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5yZXNpemVTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy4kc2VhcmNoLmNzcygnd2lkdGgnLCAnMjVweCcpO1xuXG4gICAgdmFyIHdpZHRoID0gJzEwMCUnO1xuXG4gICAgaWYgKHRoaXMuJHNlYXJjaC5hdHRyKCdwbGFjZWhvbGRlcicpID09PSAnJykge1xuICAgICAgdmFyIG1pbmltdW1XaWR0aCA9IHRoaXMuJHNlYXJjaC52YWwoKS5sZW5ndGggKyAxO1xuXG4gICAgICB3aWR0aCA9IChtaW5pbXVtV2lkdGggKiAwLjc1KSArICdlbSc7XG4gICAgfVxuXG4gICAgdGhpcy4kc2VhcmNoLmNzcygnd2lkdGgnLCB3aWR0aCk7XG4gIH07XG5cbiAgcmV0dXJuIFNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NlbGVjdGlvbkNzcycsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gU2VsZWN0aW9uQ1NTICgpIHsgfVxuXG4gIFNlbGVjdGlvbkNTUy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB2YXIgc2VsZWN0aW9uQ3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuZ2V0KCdzZWxlY3Rpb25Dc3NDbGFzcycpIHx8ICcnO1xuXG4gICAgaWYgKHNlbGVjdGlvbkNzc0NsYXNzLmluZGV4T2YoJzphbGw6JykgIT09IC0xKSB7XG4gICAgICBzZWxlY3Rpb25Dc3NDbGFzcyA9IHNlbGVjdGlvbkNzc0NsYXNzLnJlcGxhY2UoJzphbGw6JywgJycpO1xuXG4gICAgICBVdGlscy5jb3B5Tm9uSW50ZXJuYWxDc3NDbGFzc2VzKCRzZWxlY3Rpb25bMF0sIHRoaXMuJGVsZW1lbnRbMF0pO1xuICAgIH1cblxuICAgICRzZWxlY3Rpb24uYWRkQ2xhc3Moc2VsZWN0aW9uQ3NzQ2xhc3MpO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdGlvbkNTUztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2V2ZW50UmVsYXknLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIEV2ZW50UmVsYXkgKCkgeyB9XG5cbiAgRXZlbnRSZWxheS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcmVsYXlFdmVudHMgPSBbXG4gICAgICAnb3BlbicsICdvcGVuaW5nJyxcbiAgICAgICdjbG9zZScsICdjbG9zaW5nJyxcbiAgICAgICdzZWxlY3QnLCAnc2VsZWN0aW5nJyxcbiAgICAgICd1bnNlbGVjdCcsICd1bnNlbGVjdGluZycsXG4gICAgICAnY2xlYXInLCAnY2xlYXJpbmcnXG4gICAgXTtcblxuICAgIHZhciBwcmV2ZW50YWJsZUV2ZW50cyA9IFtcbiAgICAgICdvcGVuaW5nJywgJ2Nsb3NpbmcnLCAnc2VsZWN0aW5nJywgJ3Vuc2VsZWN0aW5nJywgJ2NsZWFyaW5nJ1xuICAgIF07XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgY29udGFpbmVyLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgLy8gSWdub3JlIGV2ZW50cyB0aGF0IHNob3VsZCBub3QgYmUgcmVsYXllZFxuICAgICAgaWYgKHJlbGF5RXZlbnRzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgc2hvdWxkIGFsd2F5cyBiZSBhbiBvYmplY3RcbiAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcblxuICAgICAgLy8gR2VuZXJhdGUgdGhlIGpRdWVyeSBldmVudCBmb3IgdGhlIFNlbGVjdDIgZXZlbnRcbiAgICAgIHZhciBldnQgPSAkLkV2ZW50KCdzZWxlY3QyOicgKyBuYW1lLCB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICB9KTtcblxuICAgICAgc2VsZi4kZWxlbWVudC50cmlnZ2VyKGV2dCk7XG5cbiAgICAgIC8vIE9ubHkgaGFuZGxlIHByZXZlbnRhYmxlIGV2ZW50cyBpZiBpdCB3YXMgb25lXG4gICAgICBpZiAocHJldmVudGFibGVFdmVudHMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBwYXJhbXMucHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBFdmVudFJlbGF5O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi90cmFuc2xhdGlvbicsW1xuICAnanF1ZXJ5JyxcbiAgJ3JlcXVpcmUnXG5dLCBmdW5jdGlvbiAoJCwgcmVxdWlyZSkge1xuICBmdW5jdGlvbiBUcmFuc2xhdGlvbiAoZGljdCkge1xuICAgIHRoaXMuZGljdCA9IGRpY3QgfHwge307XG4gIH1cblxuICBUcmFuc2xhdGlvbi5wcm90b3R5cGUuYWxsID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmRpY3Q7XG4gIH07XG5cbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5kaWN0W2tleV07XG4gIH07XG5cbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uICh0cmFuc2xhdGlvbikge1xuICAgIHRoaXMuZGljdCA9ICQuZXh0ZW5kKHt9LCB0cmFuc2xhdGlvbi5hbGwoKSwgdGhpcy5kaWN0KTtcbiAgfTtcblxuICAvLyBTdGF0aWMgZnVuY3Rpb25zXG5cbiAgVHJhbnNsYXRpb24uX2NhY2hlID0ge307XG5cbiAgVHJhbnNsYXRpb24ubG9hZFBhdGggPSBmdW5jdGlvbiAocGF0aCkge1xuICAgIGlmICghKHBhdGggaW4gVHJhbnNsYXRpb24uX2NhY2hlKSkge1xuICAgICAgdmFyIHRyYW5zbGF0aW9ucyA9IHJlcXVpcmUocGF0aCk7XG5cbiAgICAgIFRyYW5zbGF0aW9uLl9jYWNoZVtwYXRoXSA9IHRyYW5zbGF0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uLl9jYWNoZVtwYXRoXSk7XG4gIH07XG5cbiAgcmV0dXJuIFRyYW5zbGF0aW9uO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kaWFjcml0aWNzJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIGRpYWNyaXRpY3MgPSB7XG4gICAgJ1xcdTI0QjYnOiAnQScsXG4gICAgJ1xcdUZGMjEnOiAnQScsXG4gICAgJ1xcdTAwQzAnOiAnQScsXG4gICAgJ1xcdTAwQzEnOiAnQScsXG4gICAgJ1xcdTAwQzInOiAnQScsXG4gICAgJ1xcdTFFQTYnOiAnQScsXG4gICAgJ1xcdTFFQTQnOiAnQScsXG4gICAgJ1xcdTFFQUEnOiAnQScsXG4gICAgJ1xcdTFFQTgnOiAnQScsXG4gICAgJ1xcdTAwQzMnOiAnQScsXG4gICAgJ1xcdTAxMDAnOiAnQScsXG4gICAgJ1xcdTAxMDInOiAnQScsXG4gICAgJ1xcdTFFQjAnOiAnQScsXG4gICAgJ1xcdTFFQUUnOiAnQScsXG4gICAgJ1xcdTFFQjQnOiAnQScsXG4gICAgJ1xcdTFFQjInOiAnQScsXG4gICAgJ1xcdTAyMjYnOiAnQScsXG4gICAgJ1xcdTAxRTAnOiAnQScsXG4gICAgJ1xcdTAwQzQnOiAnQScsXG4gICAgJ1xcdTAxREUnOiAnQScsXG4gICAgJ1xcdTFFQTInOiAnQScsXG4gICAgJ1xcdTAwQzUnOiAnQScsXG4gICAgJ1xcdTAxRkEnOiAnQScsXG4gICAgJ1xcdTAxQ0QnOiAnQScsXG4gICAgJ1xcdTAyMDAnOiAnQScsXG4gICAgJ1xcdTAyMDInOiAnQScsXG4gICAgJ1xcdTFFQTAnOiAnQScsXG4gICAgJ1xcdTFFQUMnOiAnQScsXG4gICAgJ1xcdTFFQjYnOiAnQScsXG4gICAgJ1xcdTFFMDAnOiAnQScsXG4gICAgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAyM0EnOiAnQScsXG4gICAgJ1xcdTJDNkYnOiAnQScsXG4gICAgJ1xcdUE3MzInOiAnQUEnLFxuICAgICdcXHUwMEM2JzogJ0FFJyxcbiAgICAnXFx1MDFGQyc6ICdBRScsXG4gICAgJ1xcdTAxRTInOiAnQUUnLFxuICAgICdcXHVBNzM0JzogJ0FPJyxcbiAgICAnXFx1QTczNic6ICdBVScsXG4gICAgJ1xcdUE3MzgnOiAnQVYnLFxuICAgICdcXHVBNzNBJzogJ0FWJyxcbiAgICAnXFx1QTczQyc6ICdBWScsXG4gICAgJ1xcdTI0QjcnOiAnQicsXG4gICAgJ1xcdUZGMjInOiAnQicsXG4gICAgJ1xcdTFFMDInOiAnQicsXG4gICAgJ1xcdTFFMDQnOiAnQicsXG4gICAgJ1xcdTFFMDYnOiAnQicsXG4gICAgJ1xcdTAyNDMnOiAnQicsXG4gICAgJ1xcdTAxODInOiAnQicsXG4gICAgJ1xcdTAxODEnOiAnQicsXG4gICAgJ1xcdTI0QjgnOiAnQycsXG4gICAgJ1xcdUZGMjMnOiAnQycsXG4gICAgJ1xcdTAxMDYnOiAnQycsXG4gICAgJ1xcdTAxMDgnOiAnQycsXG4gICAgJ1xcdTAxMEEnOiAnQycsXG4gICAgJ1xcdTAxMEMnOiAnQycsXG4gICAgJ1xcdTAwQzcnOiAnQycsXG4gICAgJ1xcdTFFMDgnOiAnQycsXG4gICAgJ1xcdTAxODcnOiAnQycsXG4gICAgJ1xcdTAyM0InOiAnQycsXG4gICAgJ1xcdUE3M0UnOiAnQycsXG4gICAgJ1xcdTI0QjknOiAnRCcsXG4gICAgJ1xcdUZGMjQnOiAnRCcsXG4gICAgJ1xcdTFFMEEnOiAnRCcsXG4gICAgJ1xcdTAxMEUnOiAnRCcsXG4gICAgJ1xcdTFFMEMnOiAnRCcsXG4gICAgJ1xcdTFFMTAnOiAnRCcsXG4gICAgJ1xcdTFFMTInOiAnRCcsXG4gICAgJ1xcdTFFMEUnOiAnRCcsXG4gICAgJ1xcdTAxMTAnOiAnRCcsXG4gICAgJ1xcdTAxOEInOiAnRCcsXG4gICAgJ1xcdTAxOEEnOiAnRCcsXG4gICAgJ1xcdTAxODknOiAnRCcsXG4gICAgJ1xcdUE3NzknOiAnRCcsXG4gICAgJ1xcdTAxRjEnOiAnRFonLFxuICAgICdcXHUwMUM0JzogJ0RaJyxcbiAgICAnXFx1MDFGMic6ICdEeicsXG4gICAgJ1xcdTAxQzUnOiAnRHonLFxuICAgICdcXHUyNEJBJzogJ0UnLFxuICAgICdcXHVGRjI1JzogJ0UnLFxuICAgICdcXHUwMEM4JzogJ0UnLFxuICAgICdcXHUwMEM5JzogJ0UnLFxuICAgICdcXHUwMENBJzogJ0UnLFxuICAgICdcXHUxRUMwJzogJ0UnLFxuICAgICdcXHUxRUJFJzogJ0UnLFxuICAgICdcXHUxRUM0JzogJ0UnLFxuICAgICdcXHUxRUMyJzogJ0UnLFxuICAgICdcXHUxRUJDJzogJ0UnLFxuICAgICdcXHUwMTEyJzogJ0UnLFxuICAgICdcXHUxRTE0JzogJ0UnLFxuICAgICdcXHUxRTE2JzogJ0UnLFxuICAgICdcXHUwMTE0JzogJ0UnLFxuICAgICdcXHUwMTE2JzogJ0UnLFxuICAgICdcXHUwMENCJzogJ0UnLFxuICAgICdcXHUxRUJBJzogJ0UnLFxuICAgICdcXHUwMTFBJzogJ0UnLFxuICAgICdcXHUwMjA0JzogJ0UnLFxuICAgICdcXHUwMjA2JzogJ0UnLFxuICAgICdcXHUxRUI4JzogJ0UnLFxuICAgICdcXHUxRUM2JzogJ0UnLFxuICAgICdcXHUwMjI4JzogJ0UnLFxuICAgICdcXHUxRTFDJzogJ0UnLFxuICAgICdcXHUwMTE4JzogJ0UnLFxuICAgICdcXHUxRTE4JzogJ0UnLFxuICAgICdcXHUxRTFBJzogJ0UnLFxuICAgICdcXHUwMTkwJzogJ0UnLFxuICAgICdcXHUwMThFJzogJ0UnLFxuICAgICdcXHUyNEJCJzogJ0YnLFxuICAgICdcXHVGRjI2JzogJ0YnLFxuICAgICdcXHUxRTFFJzogJ0YnLFxuICAgICdcXHUwMTkxJzogJ0YnLFxuICAgICdcXHVBNzdCJzogJ0YnLFxuICAgICdcXHUyNEJDJzogJ0cnLFxuICAgICdcXHVGRjI3JzogJ0cnLFxuICAgICdcXHUwMUY0JzogJ0cnLFxuICAgICdcXHUwMTFDJzogJ0cnLFxuICAgICdcXHUxRTIwJzogJ0cnLFxuICAgICdcXHUwMTFFJzogJ0cnLFxuICAgICdcXHUwMTIwJzogJ0cnLFxuICAgICdcXHUwMUU2JzogJ0cnLFxuICAgICdcXHUwMTIyJzogJ0cnLFxuICAgICdcXHUwMUU0JzogJ0cnLFxuICAgICdcXHUwMTkzJzogJ0cnLFxuICAgICdcXHVBN0EwJzogJ0cnLFxuICAgICdcXHVBNzdEJzogJ0cnLFxuICAgICdcXHVBNzdFJzogJ0cnLFxuICAgICdcXHUyNEJEJzogJ0gnLFxuICAgICdcXHVGRjI4JzogJ0gnLFxuICAgICdcXHUwMTI0JzogJ0gnLFxuICAgICdcXHUxRTIyJzogJ0gnLFxuICAgICdcXHUxRTI2JzogJ0gnLFxuICAgICdcXHUwMjFFJzogJ0gnLFxuICAgICdcXHUxRTI0JzogJ0gnLFxuICAgICdcXHUxRTI4JzogJ0gnLFxuICAgICdcXHUxRTJBJzogJ0gnLFxuICAgICdcXHUwMTI2JzogJ0gnLFxuICAgICdcXHUyQzY3JzogJ0gnLFxuICAgICdcXHUyQzc1JzogJ0gnLFxuICAgICdcXHVBNzhEJzogJ0gnLFxuICAgICdcXHUyNEJFJzogJ0knLFxuICAgICdcXHVGRjI5JzogJ0knLFxuICAgICdcXHUwMENDJzogJ0knLFxuICAgICdcXHUwMENEJzogJ0knLFxuICAgICdcXHUwMENFJzogJ0knLFxuICAgICdcXHUwMTI4JzogJ0knLFxuICAgICdcXHUwMTJBJzogJ0knLFxuICAgICdcXHUwMTJDJzogJ0knLFxuICAgICdcXHUwMTMwJzogJ0knLFxuICAgICdcXHUwMENGJzogJ0knLFxuICAgICdcXHUxRTJFJzogJ0knLFxuICAgICdcXHUxRUM4JzogJ0knLFxuICAgICdcXHUwMUNGJzogJ0knLFxuICAgICdcXHUwMjA4JzogJ0knLFxuICAgICdcXHUwMjBBJzogJ0knLFxuICAgICdcXHUxRUNBJzogJ0knLFxuICAgICdcXHUwMTJFJzogJ0knLFxuICAgICdcXHUxRTJDJzogJ0knLFxuICAgICdcXHUwMTk3JzogJ0knLFxuICAgICdcXHUyNEJGJzogJ0onLFxuICAgICdcXHVGRjJBJzogJ0onLFxuICAgICdcXHUwMTM0JzogJ0onLFxuICAgICdcXHUwMjQ4JzogJ0onLFxuICAgICdcXHUyNEMwJzogJ0snLFxuICAgICdcXHVGRjJCJzogJ0snLFxuICAgICdcXHUxRTMwJzogJ0snLFxuICAgICdcXHUwMUU4JzogJ0snLFxuICAgICdcXHUxRTMyJzogJ0snLFxuICAgICdcXHUwMTM2JzogJ0snLFxuICAgICdcXHUxRTM0JzogJ0snLFxuICAgICdcXHUwMTk4JzogJ0snLFxuICAgICdcXHUyQzY5JzogJ0snLFxuICAgICdcXHVBNzQwJzogJ0snLFxuICAgICdcXHVBNzQyJzogJ0snLFxuICAgICdcXHVBNzQ0JzogJ0snLFxuICAgICdcXHVBN0EyJzogJ0snLFxuICAgICdcXHUyNEMxJzogJ0wnLFxuICAgICdcXHVGRjJDJzogJ0wnLFxuICAgICdcXHUwMTNGJzogJ0wnLFxuICAgICdcXHUwMTM5JzogJ0wnLFxuICAgICdcXHUwMTNEJzogJ0wnLFxuICAgICdcXHUxRTM2JzogJ0wnLFxuICAgICdcXHUxRTM4JzogJ0wnLFxuICAgICdcXHUwMTNCJzogJ0wnLFxuICAgICdcXHUxRTNDJzogJ0wnLFxuICAgICdcXHUxRTNBJzogJ0wnLFxuICAgICdcXHUwMTQxJzogJ0wnLFxuICAgICdcXHUwMjNEJzogJ0wnLFxuICAgICdcXHUyQzYyJzogJ0wnLFxuICAgICdcXHUyQzYwJzogJ0wnLFxuICAgICdcXHVBNzQ4JzogJ0wnLFxuICAgICdcXHVBNzQ2JzogJ0wnLFxuICAgICdcXHVBNzgwJzogJ0wnLFxuICAgICdcXHUwMUM3JzogJ0xKJyxcbiAgICAnXFx1MDFDOCc6ICdMaicsXG4gICAgJ1xcdTI0QzInOiAnTScsXG4gICAgJ1xcdUZGMkQnOiAnTScsXG4gICAgJ1xcdTFFM0UnOiAnTScsXG4gICAgJ1xcdTFFNDAnOiAnTScsXG4gICAgJ1xcdTFFNDInOiAnTScsXG4gICAgJ1xcdTJDNkUnOiAnTScsXG4gICAgJ1xcdTAxOUMnOiAnTScsXG4gICAgJ1xcdTI0QzMnOiAnTicsXG4gICAgJ1xcdUZGMkUnOiAnTicsXG4gICAgJ1xcdTAxRjgnOiAnTicsXG4gICAgJ1xcdTAxNDMnOiAnTicsXG4gICAgJ1xcdTAwRDEnOiAnTicsXG4gICAgJ1xcdTFFNDQnOiAnTicsXG4gICAgJ1xcdTAxNDcnOiAnTicsXG4gICAgJ1xcdTFFNDYnOiAnTicsXG4gICAgJ1xcdTAxNDUnOiAnTicsXG4gICAgJ1xcdTFFNEEnOiAnTicsXG4gICAgJ1xcdTFFNDgnOiAnTicsXG4gICAgJ1xcdTAyMjAnOiAnTicsXG4gICAgJ1xcdTAxOUQnOiAnTicsXG4gICAgJ1xcdUE3OTAnOiAnTicsXG4gICAgJ1xcdUE3QTQnOiAnTicsXG4gICAgJ1xcdTAxQ0EnOiAnTkonLFxuICAgICdcXHUwMUNCJzogJ05qJyxcbiAgICAnXFx1MjRDNCc6ICdPJyxcbiAgICAnXFx1RkYyRic6ICdPJyxcbiAgICAnXFx1MDBEMic6ICdPJyxcbiAgICAnXFx1MDBEMyc6ICdPJyxcbiAgICAnXFx1MDBENCc6ICdPJyxcbiAgICAnXFx1MUVEMic6ICdPJyxcbiAgICAnXFx1MUVEMCc6ICdPJyxcbiAgICAnXFx1MUVENic6ICdPJyxcbiAgICAnXFx1MUVENCc6ICdPJyxcbiAgICAnXFx1MDBENSc6ICdPJyxcbiAgICAnXFx1MUU0Qyc6ICdPJyxcbiAgICAnXFx1MDIyQyc6ICdPJyxcbiAgICAnXFx1MUU0RSc6ICdPJyxcbiAgICAnXFx1MDE0Qyc6ICdPJyxcbiAgICAnXFx1MUU1MCc6ICdPJyxcbiAgICAnXFx1MUU1Mic6ICdPJyxcbiAgICAnXFx1MDE0RSc6ICdPJyxcbiAgICAnXFx1MDIyRSc6ICdPJyxcbiAgICAnXFx1MDIzMCc6ICdPJyxcbiAgICAnXFx1MDBENic6ICdPJyxcbiAgICAnXFx1MDIyQSc6ICdPJyxcbiAgICAnXFx1MUVDRSc6ICdPJyxcbiAgICAnXFx1MDE1MCc6ICdPJyxcbiAgICAnXFx1MDFEMSc6ICdPJyxcbiAgICAnXFx1MDIwQyc6ICdPJyxcbiAgICAnXFx1MDIwRSc6ICdPJyxcbiAgICAnXFx1MDFBMCc6ICdPJyxcbiAgICAnXFx1MUVEQyc6ICdPJyxcbiAgICAnXFx1MUVEQSc6ICdPJyxcbiAgICAnXFx1MUVFMCc6ICdPJyxcbiAgICAnXFx1MUVERSc6ICdPJyxcbiAgICAnXFx1MUVFMic6ICdPJyxcbiAgICAnXFx1MUVDQyc6ICdPJyxcbiAgICAnXFx1MUVEOCc6ICdPJyxcbiAgICAnXFx1MDFFQSc6ICdPJyxcbiAgICAnXFx1MDFFQyc6ICdPJyxcbiAgICAnXFx1MDBEOCc6ICdPJyxcbiAgICAnXFx1MDFGRSc6ICdPJyxcbiAgICAnXFx1MDE4Nic6ICdPJyxcbiAgICAnXFx1MDE5Ric6ICdPJyxcbiAgICAnXFx1QTc0QSc6ICdPJyxcbiAgICAnXFx1QTc0Qyc6ICdPJyxcbiAgICAnXFx1MDE1Mic6ICdPRScsXG4gICAgJ1xcdTAxQTInOiAnT0knLFxuICAgICdcXHVBNzRFJzogJ09PJyxcbiAgICAnXFx1MDIyMic6ICdPVScsXG4gICAgJ1xcdTI0QzUnOiAnUCcsXG4gICAgJ1xcdUZGMzAnOiAnUCcsXG4gICAgJ1xcdTFFNTQnOiAnUCcsXG4gICAgJ1xcdTFFNTYnOiAnUCcsXG4gICAgJ1xcdTAxQTQnOiAnUCcsXG4gICAgJ1xcdTJDNjMnOiAnUCcsXG4gICAgJ1xcdUE3NTAnOiAnUCcsXG4gICAgJ1xcdUE3NTInOiAnUCcsXG4gICAgJ1xcdUE3NTQnOiAnUCcsXG4gICAgJ1xcdTI0QzYnOiAnUScsXG4gICAgJ1xcdUZGMzEnOiAnUScsXG4gICAgJ1xcdUE3NTYnOiAnUScsXG4gICAgJ1xcdUE3NTgnOiAnUScsXG4gICAgJ1xcdTAyNEEnOiAnUScsXG4gICAgJ1xcdTI0QzcnOiAnUicsXG4gICAgJ1xcdUZGMzInOiAnUicsXG4gICAgJ1xcdTAxNTQnOiAnUicsXG4gICAgJ1xcdTFFNTgnOiAnUicsXG4gICAgJ1xcdTAxNTgnOiAnUicsXG4gICAgJ1xcdTAyMTAnOiAnUicsXG4gICAgJ1xcdTAyMTInOiAnUicsXG4gICAgJ1xcdTFFNUEnOiAnUicsXG4gICAgJ1xcdTFFNUMnOiAnUicsXG4gICAgJ1xcdTAxNTYnOiAnUicsXG4gICAgJ1xcdTFFNUUnOiAnUicsXG4gICAgJ1xcdTAyNEMnOiAnUicsXG4gICAgJ1xcdTJDNjQnOiAnUicsXG4gICAgJ1xcdUE3NUEnOiAnUicsXG4gICAgJ1xcdUE3QTYnOiAnUicsXG4gICAgJ1xcdUE3ODInOiAnUicsXG4gICAgJ1xcdTI0QzgnOiAnUycsXG4gICAgJ1xcdUZGMzMnOiAnUycsXG4gICAgJ1xcdTFFOUUnOiAnUycsXG4gICAgJ1xcdTAxNUEnOiAnUycsXG4gICAgJ1xcdTFFNjQnOiAnUycsXG4gICAgJ1xcdTAxNUMnOiAnUycsXG4gICAgJ1xcdTFFNjAnOiAnUycsXG4gICAgJ1xcdTAxNjAnOiAnUycsXG4gICAgJ1xcdTFFNjYnOiAnUycsXG4gICAgJ1xcdTFFNjInOiAnUycsXG4gICAgJ1xcdTFFNjgnOiAnUycsXG4gICAgJ1xcdTAyMTgnOiAnUycsXG4gICAgJ1xcdTAxNUUnOiAnUycsXG4gICAgJ1xcdTJDN0UnOiAnUycsXG4gICAgJ1xcdUE3QTgnOiAnUycsXG4gICAgJ1xcdUE3ODQnOiAnUycsXG4gICAgJ1xcdTI0QzknOiAnVCcsXG4gICAgJ1xcdUZGMzQnOiAnVCcsXG4gICAgJ1xcdTFFNkEnOiAnVCcsXG4gICAgJ1xcdTAxNjQnOiAnVCcsXG4gICAgJ1xcdTFFNkMnOiAnVCcsXG4gICAgJ1xcdTAyMUEnOiAnVCcsXG4gICAgJ1xcdTAxNjInOiAnVCcsXG4gICAgJ1xcdTFFNzAnOiAnVCcsXG4gICAgJ1xcdTFFNkUnOiAnVCcsXG4gICAgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxQUMnOiAnVCcsXG4gICAgJ1xcdTAxQUUnOiAnVCcsXG4gICAgJ1xcdTAyM0UnOiAnVCcsXG4gICAgJ1xcdUE3ODYnOiAnVCcsXG4gICAgJ1xcdUE3MjgnOiAnVFonLFxuICAgICdcXHUyNENBJzogJ1UnLFxuICAgICdcXHVGRjM1JzogJ1UnLFxuICAgICdcXHUwMEQ5JzogJ1UnLFxuICAgICdcXHUwMERBJzogJ1UnLFxuICAgICdcXHUwMERCJzogJ1UnLFxuICAgICdcXHUwMTY4JzogJ1UnLFxuICAgICdcXHUxRTc4JzogJ1UnLFxuICAgICdcXHUwMTZBJzogJ1UnLFxuICAgICdcXHUxRTdBJzogJ1UnLFxuICAgICdcXHUwMTZDJzogJ1UnLFxuICAgICdcXHUwMERDJzogJ1UnLFxuICAgICdcXHUwMURCJzogJ1UnLFxuICAgICdcXHUwMUQ3JzogJ1UnLFxuICAgICdcXHUwMUQ1JzogJ1UnLFxuICAgICdcXHUwMUQ5JzogJ1UnLFxuICAgICdcXHUxRUU2JzogJ1UnLFxuICAgICdcXHUwMTZFJzogJ1UnLFxuICAgICdcXHUwMTcwJzogJ1UnLFxuICAgICdcXHUwMUQzJzogJ1UnLFxuICAgICdcXHUwMjE0JzogJ1UnLFxuICAgICdcXHUwMjE2JzogJ1UnLFxuICAgICdcXHUwMUFGJzogJ1UnLFxuICAgICdcXHUxRUVBJzogJ1UnLFxuICAgICdcXHUxRUU4JzogJ1UnLFxuICAgICdcXHUxRUVFJzogJ1UnLFxuICAgICdcXHUxRUVDJzogJ1UnLFxuICAgICdcXHUxRUYwJzogJ1UnLFxuICAgICdcXHUxRUU0JzogJ1UnLFxuICAgICdcXHUxRTcyJzogJ1UnLFxuICAgICdcXHUwMTcyJzogJ1UnLFxuICAgICdcXHUxRTc2JzogJ1UnLFxuICAgICdcXHUxRTc0JzogJ1UnLFxuICAgICdcXHUwMjQ0JzogJ1UnLFxuICAgICdcXHUyNENCJzogJ1YnLFxuICAgICdcXHVGRjM2JzogJ1YnLFxuICAgICdcXHUxRTdDJzogJ1YnLFxuICAgICdcXHUxRTdFJzogJ1YnLFxuICAgICdcXHUwMUIyJzogJ1YnLFxuICAgICdcXHVBNzVFJzogJ1YnLFxuICAgICdcXHUwMjQ1JzogJ1YnLFxuICAgICdcXHVBNzYwJzogJ1ZZJyxcbiAgICAnXFx1MjRDQyc6ICdXJyxcbiAgICAnXFx1RkYzNyc6ICdXJyxcbiAgICAnXFx1MUU4MCc6ICdXJyxcbiAgICAnXFx1MUU4Mic6ICdXJyxcbiAgICAnXFx1MDE3NCc6ICdXJyxcbiAgICAnXFx1MUU4Nic6ICdXJyxcbiAgICAnXFx1MUU4NCc6ICdXJyxcbiAgICAnXFx1MUU4OCc6ICdXJyxcbiAgICAnXFx1MkM3Mic6ICdXJyxcbiAgICAnXFx1MjRDRCc6ICdYJyxcbiAgICAnXFx1RkYzOCc6ICdYJyxcbiAgICAnXFx1MUU4QSc6ICdYJyxcbiAgICAnXFx1MUU4Qyc6ICdYJyxcbiAgICAnXFx1MjRDRSc6ICdZJyxcbiAgICAnXFx1RkYzOSc6ICdZJyxcbiAgICAnXFx1MUVGMic6ICdZJyxcbiAgICAnXFx1MDBERCc6ICdZJyxcbiAgICAnXFx1MDE3Nic6ICdZJyxcbiAgICAnXFx1MUVGOCc6ICdZJyxcbiAgICAnXFx1MDIzMic6ICdZJyxcbiAgICAnXFx1MUU4RSc6ICdZJyxcbiAgICAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MUVGNic6ICdZJyxcbiAgICAnXFx1MUVGNCc6ICdZJyxcbiAgICAnXFx1MDFCMyc6ICdZJyxcbiAgICAnXFx1MDI0RSc6ICdZJyxcbiAgICAnXFx1MUVGRSc6ICdZJyxcbiAgICAnXFx1MjRDRic6ICdaJyxcbiAgICAnXFx1RkYzQSc6ICdaJyxcbiAgICAnXFx1MDE3OSc6ICdaJyxcbiAgICAnXFx1MUU5MCc6ICdaJyxcbiAgICAnXFx1MDE3Qic6ICdaJyxcbiAgICAnXFx1MDE3RCc6ICdaJyxcbiAgICAnXFx1MUU5Mic6ICdaJyxcbiAgICAnXFx1MUU5NCc6ICdaJyxcbiAgICAnXFx1MDFCNSc6ICdaJyxcbiAgICAnXFx1MDIyNCc6ICdaJyxcbiAgICAnXFx1MkM3Ric6ICdaJyxcbiAgICAnXFx1MkM2Qic6ICdaJyxcbiAgICAnXFx1QTc2Mic6ICdaJyxcbiAgICAnXFx1MjREMCc6ICdhJyxcbiAgICAnXFx1RkY0MSc6ICdhJyxcbiAgICAnXFx1MUU5QSc6ICdhJyxcbiAgICAnXFx1MDBFMCc6ICdhJyxcbiAgICAnXFx1MDBFMSc6ICdhJyxcbiAgICAnXFx1MDBFMic6ICdhJyxcbiAgICAnXFx1MUVBNyc6ICdhJyxcbiAgICAnXFx1MUVBNSc6ICdhJyxcbiAgICAnXFx1MUVBQic6ICdhJyxcbiAgICAnXFx1MUVBOSc6ICdhJyxcbiAgICAnXFx1MDBFMyc6ICdhJyxcbiAgICAnXFx1MDEwMSc6ICdhJyxcbiAgICAnXFx1MDEwMyc6ICdhJyxcbiAgICAnXFx1MUVCMSc6ICdhJyxcbiAgICAnXFx1MUVBRic6ICdhJyxcbiAgICAnXFx1MUVCNSc6ICdhJyxcbiAgICAnXFx1MUVCMyc6ICdhJyxcbiAgICAnXFx1MDIyNyc6ICdhJyxcbiAgICAnXFx1MDFFMSc6ICdhJyxcbiAgICAnXFx1MDBFNCc6ICdhJyxcbiAgICAnXFx1MDFERic6ICdhJyxcbiAgICAnXFx1MUVBMyc6ICdhJyxcbiAgICAnXFx1MDBFNSc6ICdhJyxcbiAgICAnXFx1MDFGQic6ICdhJyxcbiAgICAnXFx1MDFDRSc6ICdhJyxcbiAgICAnXFx1MDIwMSc6ICdhJyxcbiAgICAnXFx1MDIwMyc6ICdhJyxcbiAgICAnXFx1MUVBMSc6ICdhJyxcbiAgICAnXFx1MUVBRCc6ICdhJyxcbiAgICAnXFx1MUVCNyc6ICdhJyxcbiAgICAnXFx1MUUwMSc6ICdhJyxcbiAgICAnXFx1MDEwNSc6ICdhJyxcbiAgICAnXFx1MkM2NSc6ICdhJyxcbiAgICAnXFx1MDI1MCc6ICdhJyxcbiAgICAnXFx1QTczMyc6ICdhYScsXG4gICAgJ1xcdTAwRTYnOiAnYWUnLFxuICAgICdcXHUwMUZEJzogJ2FlJyxcbiAgICAnXFx1MDFFMyc6ICdhZScsXG4gICAgJ1xcdUE3MzUnOiAnYW8nLFxuICAgICdcXHVBNzM3JzogJ2F1JyxcbiAgICAnXFx1QTczOSc6ICdhdicsXG4gICAgJ1xcdUE3M0InOiAnYXYnLFxuICAgICdcXHVBNzNEJzogJ2F5JyxcbiAgICAnXFx1MjREMSc6ICdiJyxcbiAgICAnXFx1RkY0Mic6ICdiJyxcbiAgICAnXFx1MUUwMyc6ICdiJyxcbiAgICAnXFx1MUUwNSc6ICdiJyxcbiAgICAnXFx1MUUwNyc6ICdiJyxcbiAgICAnXFx1MDE4MCc6ICdiJyxcbiAgICAnXFx1MDE4Myc6ICdiJyxcbiAgICAnXFx1MDI1Myc6ICdiJyxcbiAgICAnXFx1MjREMic6ICdjJyxcbiAgICAnXFx1RkY0Myc6ICdjJyxcbiAgICAnXFx1MDEwNyc6ICdjJyxcbiAgICAnXFx1MDEwOSc6ICdjJyxcbiAgICAnXFx1MDEwQic6ICdjJyxcbiAgICAnXFx1MDEwRCc6ICdjJyxcbiAgICAnXFx1MDBFNyc6ICdjJyxcbiAgICAnXFx1MUUwOSc6ICdjJyxcbiAgICAnXFx1MDE4OCc6ICdjJyxcbiAgICAnXFx1MDIzQyc6ICdjJyxcbiAgICAnXFx1QTczRic6ICdjJyxcbiAgICAnXFx1MjE4NCc6ICdjJyxcbiAgICAnXFx1MjREMyc6ICdkJyxcbiAgICAnXFx1RkY0NCc6ICdkJyxcbiAgICAnXFx1MUUwQic6ICdkJyxcbiAgICAnXFx1MDEwRic6ICdkJyxcbiAgICAnXFx1MUUwRCc6ICdkJyxcbiAgICAnXFx1MUUxMSc6ICdkJyxcbiAgICAnXFx1MUUxMyc6ICdkJyxcbiAgICAnXFx1MUUwRic6ICdkJyxcbiAgICAnXFx1MDExMSc6ICdkJyxcbiAgICAnXFx1MDE4Qyc6ICdkJyxcbiAgICAnXFx1MDI1Nic6ICdkJyxcbiAgICAnXFx1MDI1Nyc6ICdkJyxcbiAgICAnXFx1QTc3QSc6ICdkJyxcbiAgICAnXFx1MDFGMyc6ICdkeicsXG4gICAgJ1xcdTAxQzYnOiAnZHonLFxuICAgICdcXHUyNEQ0JzogJ2UnLFxuICAgICdcXHVGRjQ1JzogJ2UnLFxuICAgICdcXHUwMEU4JzogJ2UnLFxuICAgICdcXHUwMEU5JzogJ2UnLFxuICAgICdcXHUwMEVBJzogJ2UnLFxuICAgICdcXHUxRUMxJzogJ2UnLFxuICAgICdcXHUxRUJGJzogJ2UnLFxuICAgICdcXHUxRUM1JzogJ2UnLFxuICAgICdcXHUxRUMzJzogJ2UnLFxuICAgICdcXHUxRUJEJzogJ2UnLFxuICAgICdcXHUwMTEzJzogJ2UnLFxuICAgICdcXHUxRTE1JzogJ2UnLFxuICAgICdcXHUxRTE3JzogJ2UnLFxuICAgICdcXHUwMTE1JzogJ2UnLFxuICAgICdcXHUwMTE3JzogJ2UnLFxuICAgICdcXHUwMEVCJzogJ2UnLFxuICAgICdcXHUxRUJCJzogJ2UnLFxuICAgICdcXHUwMTFCJzogJ2UnLFxuICAgICdcXHUwMjA1JzogJ2UnLFxuICAgICdcXHUwMjA3JzogJ2UnLFxuICAgICdcXHUxRUI5JzogJ2UnLFxuICAgICdcXHUxRUM3JzogJ2UnLFxuICAgICdcXHUwMjI5JzogJ2UnLFxuICAgICdcXHUxRTFEJzogJ2UnLFxuICAgICdcXHUwMTE5JzogJ2UnLFxuICAgICdcXHUxRTE5JzogJ2UnLFxuICAgICdcXHUxRTFCJzogJ2UnLFxuICAgICdcXHUwMjQ3JzogJ2UnLFxuICAgICdcXHUwMjVCJzogJ2UnLFxuICAgICdcXHUwMUREJzogJ2UnLFxuICAgICdcXHUyNEQ1JzogJ2YnLFxuICAgICdcXHVGRjQ2JzogJ2YnLFxuICAgICdcXHUxRTFGJzogJ2YnLFxuICAgICdcXHUwMTkyJzogJ2YnLFxuICAgICdcXHVBNzdDJzogJ2YnLFxuICAgICdcXHUyNEQ2JzogJ2cnLFxuICAgICdcXHVGRjQ3JzogJ2cnLFxuICAgICdcXHUwMUY1JzogJ2cnLFxuICAgICdcXHUwMTFEJzogJ2cnLFxuICAgICdcXHUxRTIxJzogJ2cnLFxuICAgICdcXHUwMTFGJzogJ2cnLFxuICAgICdcXHUwMTIxJzogJ2cnLFxuICAgICdcXHUwMUU3JzogJ2cnLFxuICAgICdcXHUwMTIzJzogJ2cnLFxuICAgICdcXHUwMUU1JzogJ2cnLFxuICAgICdcXHUwMjYwJzogJ2cnLFxuICAgICdcXHVBN0ExJzogJ2cnLFxuICAgICdcXHUxRDc5JzogJ2cnLFxuICAgICdcXHVBNzdGJzogJ2cnLFxuICAgICdcXHUyNEQ3JzogJ2gnLFxuICAgICdcXHVGRjQ4JzogJ2gnLFxuICAgICdcXHUwMTI1JzogJ2gnLFxuICAgICdcXHUxRTIzJzogJ2gnLFxuICAgICdcXHUxRTI3JzogJ2gnLFxuICAgICdcXHUwMjFGJzogJ2gnLFxuICAgICdcXHUxRTI1JzogJ2gnLFxuICAgICdcXHUxRTI5JzogJ2gnLFxuICAgICdcXHUxRTJCJzogJ2gnLFxuICAgICdcXHUxRTk2JzogJ2gnLFxuICAgICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUyQzY4JzogJ2gnLFxuICAgICdcXHUyQzc2JzogJ2gnLFxuICAgICdcXHUwMjY1JzogJ2gnLFxuICAgICdcXHUwMTk1JzogJ2h2JyxcbiAgICAnXFx1MjREOCc6ICdpJyxcbiAgICAnXFx1RkY0OSc6ICdpJyxcbiAgICAnXFx1MDBFQyc6ICdpJyxcbiAgICAnXFx1MDBFRCc6ICdpJyxcbiAgICAnXFx1MDBFRSc6ICdpJyxcbiAgICAnXFx1MDEyOSc6ICdpJyxcbiAgICAnXFx1MDEyQic6ICdpJyxcbiAgICAnXFx1MDEyRCc6ICdpJyxcbiAgICAnXFx1MDBFRic6ICdpJyxcbiAgICAnXFx1MUUyRic6ICdpJyxcbiAgICAnXFx1MUVDOSc6ICdpJyxcbiAgICAnXFx1MDFEMCc6ICdpJyxcbiAgICAnXFx1MDIwOSc6ICdpJyxcbiAgICAnXFx1MDIwQic6ICdpJyxcbiAgICAnXFx1MUVDQic6ICdpJyxcbiAgICAnXFx1MDEyRic6ICdpJyxcbiAgICAnXFx1MUUyRCc6ICdpJyxcbiAgICAnXFx1MDI2OCc6ICdpJyxcbiAgICAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MjREOSc6ICdqJyxcbiAgICAnXFx1RkY0QSc6ICdqJyxcbiAgICAnXFx1MDEzNSc6ICdqJyxcbiAgICAnXFx1MDFGMCc6ICdqJyxcbiAgICAnXFx1MDI0OSc6ICdqJyxcbiAgICAnXFx1MjREQSc6ICdrJyxcbiAgICAnXFx1RkY0Qic6ICdrJyxcbiAgICAnXFx1MUUzMSc6ICdrJyxcbiAgICAnXFx1MDFFOSc6ICdrJyxcbiAgICAnXFx1MUUzMyc6ICdrJyxcbiAgICAnXFx1MDEzNyc6ICdrJyxcbiAgICAnXFx1MUUzNSc6ICdrJyxcbiAgICAnXFx1MDE5OSc6ICdrJyxcbiAgICAnXFx1MkM2QSc6ICdrJyxcbiAgICAnXFx1QTc0MSc6ICdrJyxcbiAgICAnXFx1QTc0Myc6ICdrJyxcbiAgICAnXFx1QTc0NSc6ICdrJyxcbiAgICAnXFx1QTdBMyc6ICdrJyxcbiAgICAnXFx1MjREQic6ICdsJyxcbiAgICAnXFx1RkY0Qyc6ICdsJyxcbiAgICAnXFx1MDE0MCc6ICdsJyxcbiAgICAnXFx1MDEzQSc6ICdsJyxcbiAgICAnXFx1MDEzRSc6ICdsJyxcbiAgICAnXFx1MUUzNyc6ICdsJyxcbiAgICAnXFx1MUUzOSc6ICdsJyxcbiAgICAnXFx1MDEzQyc6ICdsJyxcbiAgICAnXFx1MUUzRCc6ICdsJyxcbiAgICAnXFx1MUUzQic6ICdsJyxcbiAgICAnXFx1MDE3Ric6ICdsJyxcbiAgICAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE5QSc6ICdsJyxcbiAgICAnXFx1MDI2Qic6ICdsJyxcbiAgICAnXFx1MkM2MSc6ICdsJyxcbiAgICAnXFx1QTc0OSc6ICdsJyxcbiAgICAnXFx1QTc4MSc6ICdsJyxcbiAgICAnXFx1QTc0Nyc6ICdsJyxcbiAgICAnXFx1MDFDOSc6ICdsaicsXG4gICAgJ1xcdTI0REMnOiAnbScsXG4gICAgJ1xcdUZGNEQnOiAnbScsXG4gICAgJ1xcdTFFM0YnOiAnbScsXG4gICAgJ1xcdTFFNDEnOiAnbScsXG4gICAgJ1xcdTFFNDMnOiAnbScsXG4gICAgJ1xcdTAyNzEnOiAnbScsXG4gICAgJ1xcdTAyNkYnOiAnbScsXG4gICAgJ1xcdTI0REQnOiAnbicsXG4gICAgJ1xcdUZGNEUnOiAnbicsXG4gICAgJ1xcdTAxRjknOiAnbicsXG4gICAgJ1xcdTAxNDQnOiAnbicsXG4gICAgJ1xcdTAwRjEnOiAnbicsXG4gICAgJ1xcdTFFNDUnOiAnbicsXG4gICAgJ1xcdTAxNDgnOiAnbicsXG4gICAgJ1xcdTFFNDcnOiAnbicsXG4gICAgJ1xcdTAxNDYnOiAnbicsXG4gICAgJ1xcdTFFNEInOiAnbicsXG4gICAgJ1xcdTFFNDknOiAnbicsXG4gICAgJ1xcdTAxOUUnOiAnbicsXG4gICAgJ1xcdTAyNzInOiAnbicsXG4gICAgJ1xcdTAxNDknOiAnbicsXG4gICAgJ1xcdUE3OTEnOiAnbicsXG4gICAgJ1xcdUE3QTUnOiAnbicsXG4gICAgJ1xcdTAxQ0MnOiAnbmonLFxuICAgICdcXHUyNERFJzogJ28nLFxuICAgICdcXHVGRjRGJzogJ28nLFxuICAgICdcXHUwMEYyJzogJ28nLFxuICAgICdcXHUwMEYzJzogJ28nLFxuICAgICdcXHUwMEY0JzogJ28nLFxuICAgICdcXHUxRUQzJzogJ28nLFxuICAgICdcXHUxRUQxJzogJ28nLFxuICAgICdcXHUxRUQ3JzogJ28nLFxuICAgICdcXHUxRUQ1JzogJ28nLFxuICAgICdcXHUwMEY1JzogJ28nLFxuICAgICdcXHUxRTREJzogJ28nLFxuICAgICdcXHUwMjJEJzogJ28nLFxuICAgICdcXHUxRTRGJzogJ28nLFxuICAgICdcXHUwMTREJzogJ28nLFxuICAgICdcXHUxRTUxJzogJ28nLFxuICAgICdcXHUxRTUzJzogJ28nLFxuICAgICdcXHUwMTRGJzogJ28nLFxuICAgICdcXHUwMjJGJzogJ28nLFxuICAgICdcXHUwMjMxJzogJ28nLFxuICAgICdcXHUwMEY2JzogJ28nLFxuICAgICdcXHUwMjJCJzogJ28nLFxuICAgICdcXHUxRUNGJzogJ28nLFxuICAgICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMUQyJzogJ28nLFxuICAgICdcXHUwMjBEJzogJ28nLFxuICAgICdcXHUwMjBGJzogJ28nLFxuICAgICdcXHUwMUExJzogJ28nLFxuICAgICdcXHUxRUREJzogJ28nLFxuICAgICdcXHUxRURCJzogJ28nLFxuICAgICdcXHUxRUUxJzogJ28nLFxuICAgICdcXHUxRURGJzogJ28nLFxuICAgICdcXHUxRUUzJzogJ28nLFxuICAgICdcXHUxRUNEJzogJ28nLFxuICAgICdcXHUxRUQ5JzogJ28nLFxuICAgICdcXHUwMUVCJzogJ28nLFxuICAgICdcXHUwMUVEJzogJ28nLFxuICAgICdcXHUwMEY4JzogJ28nLFxuICAgICdcXHUwMUZGJzogJ28nLFxuICAgICdcXHUwMjU0JzogJ28nLFxuICAgICdcXHVBNzRCJzogJ28nLFxuICAgICdcXHVBNzREJzogJ28nLFxuICAgICdcXHUwMjc1JzogJ28nLFxuICAgICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDFBMyc6ICdvaScsXG4gICAgJ1xcdTAyMjMnOiAnb3UnLFxuICAgICdcXHVBNzRGJzogJ29vJyxcbiAgICAnXFx1MjRERic6ICdwJyxcbiAgICAnXFx1RkY1MCc6ICdwJyxcbiAgICAnXFx1MUU1NSc6ICdwJyxcbiAgICAnXFx1MUU1Nyc6ICdwJyxcbiAgICAnXFx1MDFBNSc6ICdwJyxcbiAgICAnXFx1MUQ3RCc6ICdwJyxcbiAgICAnXFx1QTc1MSc6ICdwJyxcbiAgICAnXFx1QTc1Myc6ICdwJyxcbiAgICAnXFx1QTc1NSc6ICdwJyxcbiAgICAnXFx1MjRFMCc6ICdxJyxcbiAgICAnXFx1RkY1MSc6ICdxJyxcbiAgICAnXFx1MDI0Qic6ICdxJyxcbiAgICAnXFx1QTc1Nyc6ICdxJyxcbiAgICAnXFx1QTc1OSc6ICdxJyxcbiAgICAnXFx1MjRFMSc6ICdyJyxcbiAgICAnXFx1RkY1Mic6ICdyJyxcbiAgICAnXFx1MDE1NSc6ICdyJyxcbiAgICAnXFx1MUU1OSc6ICdyJyxcbiAgICAnXFx1MDE1OSc6ICdyJyxcbiAgICAnXFx1MDIxMSc6ICdyJyxcbiAgICAnXFx1MDIxMyc6ICdyJyxcbiAgICAnXFx1MUU1Qic6ICdyJyxcbiAgICAnXFx1MUU1RCc6ICdyJyxcbiAgICAnXFx1MDE1Nyc6ICdyJyxcbiAgICAnXFx1MUU1Ric6ICdyJyxcbiAgICAnXFx1MDI0RCc6ICdyJyxcbiAgICAnXFx1MDI3RCc6ICdyJyxcbiAgICAnXFx1QTc1Qic6ICdyJyxcbiAgICAnXFx1QTdBNyc6ICdyJyxcbiAgICAnXFx1QTc4Myc6ICdyJyxcbiAgICAnXFx1MjRFMic6ICdzJyxcbiAgICAnXFx1RkY1Myc6ICdzJyxcbiAgICAnXFx1MDBERic6ICdzJyxcbiAgICAnXFx1MDE1Qic6ICdzJyxcbiAgICAnXFx1MUU2NSc6ICdzJyxcbiAgICAnXFx1MDE1RCc6ICdzJyxcbiAgICAnXFx1MUU2MSc6ICdzJyxcbiAgICAnXFx1MDE2MSc6ICdzJyxcbiAgICAnXFx1MUU2Nyc6ICdzJyxcbiAgICAnXFx1MUU2Myc6ICdzJyxcbiAgICAnXFx1MUU2OSc6ICdzJyxcbiAgICAnXFx1MDIxOSc6ICdzJyxcbiAgICAnXFx1MDE1Ric6ICdzJyxcbiAgICAnXFx1MDIzRic6ICdzJyxcbiAgICAnXFx1QTdBOSc6ICdzJyxcbiAgICAnXFx1QTc4NSc6ICdzJyxcbiAgICAnXFx1MUU5Qic6ICdzJyxcbiAgICAnXFx1MjRFMyc6ICd0JyxcbiAgICAnXFx1RkY1NCc6ICd0JyxcbiAgICAnXFx1MUU2Qic6ICd0JyxcbiAgICAnXFx1MUU5Nyc6ICd0JyxcbiAgICAnXFx1MDE2NSc6ICd0JyxcbiAgICAnXFx1MUU2RCc6ICd0JyxcbiAgICAnXFx1MDIxQic6ICd0JyxcbiAgICAnXFx1MDE2Myc6ICd0JyxcbiAgICAnXFx1MUU3MSc6ICd0JyxcbiAgICAnXFx1MUU2Ric6ICd0JyxcbiAgICAnXFx1MDE2Nyc6ICd0JyxcbiAgICAnXFx1MDFBRCc6ICd0JyxcbiAgICAnXFx1MDI4OCc6ICd0JyxcbiAgICAnXFx1MkM2Nic6ICd0JyxcbiAgICAnXFx1QTc4Nyc6ICd0JyxcbiAgICAnXFx1QTcyOSc6ICd0eicsXG4gICAgJ1xcdTI0RTQnOiAndScsXG4gICAgJ1xcdUZGNTUnOiAndScsXG4gICAgJ1xcdTAwRjknOiAndScsXG4gICAgJ1xcdTAwRkEnOiAndScsXG4gICAgJ1xcdTAwRkInOiAndScsXG4gICAgJ1xcdTAxNjknOiAndScsXG4gICAgJ1xcdTFFNzknOiAndScsXG4gICAgJ1xcdTAxNkInOiAndScsXG4gICAgJ1xcdTFFN0InOiAndScsXG4gICAgJ1xcdTAxNkQnOiAndScsXG4gICAgJ1xcdTAwRkMnOiAndScsXG4gICAgJ1xcdTAxREMnOiAndScsXG4gICAgJ1xcdTAxRDgnOiAndScsXG4gICAgJ1xcdTAxRDYnOiAndScsXG4gICAgJ1xcdTAxREEnOiAndScsXG4gICAgJ1xcdTFFRTcnOiAndScsXG4gICAgJ1xcdTAxNkYnOiAndScsXG4gICAgJ1xcdTAxNzEnOiAndScsXG4gICAgJ1xcdTAxRDQnOiAndScsXG4gICAgJ1xcdTAyMTUnOiAndScsXG4gICAgJ1xcdTAyMTcnOiAndScsXG4gICAgJ1xcdTAxQjAnOiAndScsXG4gICAgJ1xcdTFFRUInOiAndScsXG4gICAgJ1xcdTFFRTknOiAndScsXG4gICAgJ1xcdTFFRUYnOiAndScsXG4gICAgJ1xcdTFFRUQnOiAndScsXG4gICAgJ1xcdTFFRjEnOiAndScsXG4gICAgJ1xcdTFFRTUnOiAndScsXG4gICAgJ1xcdTFFNzMnOiAndScsXG4gICAgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTFFNzcnOiAndScsXG4gICAgJ1xcdTFFNzUnOiAndScsXG4gICAgJ1xcdTAyODknOiAndScsXG4gICAgJ1xcdTI0RTUnOiAndicsXG4gICAgJ1xcdUZGNTYnOiAndicsXG4gICAgJ1xcdTFFN0QnOiAndicsXG4gICAgJ1xcdTFFN0YnOiAndicsXG4gICAgJ1xcdTAyOEInOiAndicsXG4gICAgJ1xcdUE3NUYnOiAndicsXG4gICAgJ1xcdTAyOEMnOiAndicsXG4gICAgJ1xcdUE3NjEnOiAndnknLFxuICAgICdcXHUyNEU2JzogJ3cnLFxuICAgICdcXHVGRjU3JzogJ3cnLFxuICAgICdcXHUxRTgxJzogJ3cnLFxuICAgICdcXHUxRTgzJzogJ3cnLFxuICAgICdcXHUwMTc1JzogJ3cnLFxuICAgICdcXHUxRTg3JzogJ3cnLFxuICAgICdcXHUxRTg1JzogJ3cnLFxuICAgICdcXHUxRTk4JzogJ3cnLFxuICAgICdcXHUxRTg5JzogJ3cnLFxuICAgICdcXHUyQzczJzogJ3cnLFxuICAgICdcXHUyNEU3JzogJ3gnLFxuICAgICdcXHVGRjU4JzogJ3gnLFxuICAgICdcXHUxRThCJzogJ3gnLFxuICAgICdcXHUxRThEJzogJ3gnLFxuICAgICdcXHUyNEU4JzogJ3knLFxuICAgICdcXHVGRjU5JzogJ3knLFxuICAgICdcXHUxRUYzJzogJ3knLFxuICAgICdcXHUwMEZEJzogJ3knLFxuICAgICdcXHUwMTc3JzogJ3knLFxuICAgICdcXHUxRUY5JzogJ3knLFxuICAgICdcXHUwMjMzJzogJ3knLFxuICAgICdcXHUxRThGJzogJ3knLFxuICAgICdcXHUwMEZGJzogJ3knLFxuICAgICdcXHUxRUY3JzogJ3knLFxuICAgICdcXHUxRTk5JzogJ3knLFxuICAgICdcXHUxRUY1JzogJ3knLFxuICAgICdcXHUwMUI0JzogJ3knLFxuICAgICdcXHUwMjRGJzogJ3knLFxuICAgICdcXHUxRUZGJzogJ3knLFxuICAgICdcXHUyNEU5JzogJ3onLFxuICAgICdcXHVGRjVBJzogJ3onLFxuICAgICdcXHUwMTdBJzogJ3onLFxuICAgICdcXHUxRTkxJzogJ3onLFxuICAgICdcXHUwMTdDJzogJ3onLFxuICAgICdcXHUwMTdFJzogJ3onLFxuICAgICdcXHUxRTkzJzogJ3onLFxuICAgICdcXHUxRTk1JzogJ3onLFxuICAgICdcXHUwMUI2JzogJ3onLFxuICAgICdcXHUwMjI1JzogJ3onLFxuICAgICdcXHUwMjQwJzogJ3onLFxuICAgICdcXHUyQzZDJzogJ3onLFxuICAgICdcXHVBNzYzJzogJ3onLFxuICAgICdcXHUwMzg2JzogJ1xcdTAzOTEnLFxuICAgICdcXHUwMzg4JzogJ1xcdTAzOTUnLFxuICAgICdcXHUwMzg5JzogJ1xcdTAzOTcnLFxuICAgICdcXHUwMzhBJzogJ1xcdTAzOTknLFxuICAgICdcXHUwM0FBJzogJ1xcdTAzOTknLFxuICAgICdcXHUwMzhDJzogJ1xcdTAzOUYnLFxuICAgICdcXHUwMzhFJzogJ1xcdTAzQTUnLFxuICAgICdcXHUwM0FCJzogJ1xcdTAzQTUnLFxuICAgICdcXHUwMzhGJzogJ1xcdTAzQTknLFxuICAgICdcXHUwM0FDJzogJ1xcdTAzQjEnLFxuICAgICdcXHUwM0FEJzogJ1xcdTAzQjUnLFxuICAgICdcXHUwM0FFJzogJ1xcdTAzQjcnLFxuICAgICdcXHUwM0FGJzogJ1xcdTAzQjknLFxuICAgICdcXHUwM0NBJzogJ1xcdTAzQjknLFxuICAgICdcXHUwMzkwJzogJ1xcdTAzQjknLFxuICAgICdcXHUwM0NDJzogJ1xcdTAzQkYnLFxuICAgICdcXHUwM0NEJzogJ1xcdTAzQzUnLFxuICAgICdcXHUwM0NCJzogJ1xcdTAzQzUnLFxuICAgICdcXHUwM0IwJzogJ1xcdTAzQzUnLFxuICAgICdcXHUwM0NFJzogJ1xcdTAzQzknLFxuICAgICdcXHUwM0MyJzogJ1xcdTAzQzMnLFxuICAgICdcXHUyMDE5JzogJ1xcJydcbiAgfTtcblxuICByZXR1cm4gZGlhY3JpdGljcztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9iYXNlJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBCYXNlQWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBCYXNlQWRhcHRlci5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChCYXNlQWRhcHRlciwgVXRpbHMuT2JzZXJ2YWJsZSk7XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgY3VycmVudGAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHF1ZXJ5YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuJyk7XG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgLy8gQ2FuIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBDYW4gYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5nZW5lcmF0ZVJlc3VsdElkID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgZGF0YSkge1xuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0LSc7XG5cbiAgICBpZCArPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuXG4gICAgaWYgKGRhdGEuaWQgIT0gbnVsbCkge1xuICAgICAgaWQgKz0gJy0nICsgZGF0YS5pZC50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCArPSAnLScgKyBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH07XG5cbiAgcmV0dXJuIEJhc2VBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3NlbGVjdCcsW1xuICAnLi9iYXNlJyxcbiAgJy4uL3V0aWxzJyxcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uIChCYXNlQWRhcHRlciwgVXRpbHMsICQpIHtcbiAgZnVuY3Rpb24gU2VsZWN0QWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gJGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIFNlbGVjdEFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoU2VsZWN0QWRhcHRlciwgQmFzZUFkYXB0ZXIpO1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgZGF0YSA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChcbiAgICAgIHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvckFsbCgnOmNoZWNrZWQnKSxcbiAgICAgIGZ1bmN0aW9uIChzZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuaXRlbSgkKHNlbGVjdGVkRWxlbWVudCkpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjYWxsYmFjayhkYXRhKTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgLy8gSWYgZGF0YS5lbGVtZW50IGlzIGEgRE9NIG5vZGUsIHVzZSBpdCBpbnN0ZWFkXG4gICAgaWYgKFxuICAgICAgZGF0YS5lbGVtZW50ICE9IG51bGwgJiYgZGF0YS5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbidcbiAgICApIHtcbiAgICAgIGRhdGEuZWxlbWVudC5zZWxlY3RlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLiRlbGVtZW50LnByb3AoJ211bHRpcGxlJykpIHtcbiAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgdmFyIHZhbCA9IFtdO1xuXG4gICAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgICAgIGRhdGEucHVzaC5hcHBseShkYXRhLCBjdXJyZW50RGF0YSk7XG5cbiAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgdmFyIGlkID0gZGF0YVtkXS5pZDtcblxuICAgICAgICAgIGlmICh2YWwuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgICB2YWwucHVzaChpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi4kZWxlbWVudC52YWwodmFsKTtcbiAgICAgICAgc2VsZi4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2YWwgPSBkYXRhLmlkO1xuXG4gICAgICB0aGlzLiRlbGVtZW50LnZhbCh2YWwpO1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS51bnNlbGVjdCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCF0aGlzLiRlbGVtZW50LnByb3AoJ211bHRpcGxlJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRhLnNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICBkYXRhLmVsZW1lbnQgIT0gbnVsbCAmJlxuICAgICAgZGF0YS5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbidcbiAgICApIHtcbiAgICAgIGRhdGEuZWxlbWVudC5zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICB2YXIgdmFsID0gW107XG5cbiAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgY3VycmVudERhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgdmFyIGlkID0gY3VycmVudERhdGFbZF0uaWQ7XG5cbiAgICAgICAgaWYgKGlkICE9PSBkYXRhLmlkICYmIHZhbC5pbmRleE9mKGlkKSA9PT0gLTEpIHtcbiAgICAgICAgICB2YWwucHVzaChpZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VsZi4kZWxlbWVudC52YWwodmFsKTtcblxuICAgICAgc2VsZi4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuc2VsZWN0KHBhcmFtcy5kYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLnVuc2VsZWN0KHBhcmFtcy5kYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFJlbW92ZSBhbnl0aGluZyBhZGRlZCB0byBjaGlsZCBlbGVtZW50c1xuICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnKicpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmVtb3ZlIGFueSBjdXN0b20gZGF0YSBzZXQgYnkgU2VsZWN0MlxuICAgICAgVXRpbHMuUmVtb3ZlRGF0YSh0aGlzKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGRhdGEgPSBbXTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRlbGVtZW50LmNoaWxkcmVuKCk7XG5cbiAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdvcHRpb24nICYmXG4gICAgICAgIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb3B0Z3JvdXAnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG9wdGlvbiA9ICQodGhpcyk7XG5cbiAgICAgIHZhciBvcHRpb24gPSBzZWxmLml0ZW0oJG9wdGlvbik7XG5cbiAgICAgIHZhciBtYXRjaGVzID0gc2VsZi5tYXRjaGVzKHBhcmFtcywgb3B0aW9uKTtcblxuICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwpIHtcbiAgICAgICAgZGF0YS5wdXNoKG1hdGNoZXMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2FsbGJhY2soe1xuICAgICAgcmVzdWx0czogZGF0YVxuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLmFkZE9wdGlvbnMgPSBmdW5jdGlvbiAoJG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50LmFwcGVuZCgkb3B0aW9ucyk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUub3B0aW9uID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgb3B0aW9uO1xuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGdyb3VwJyk7XG4gICAgICBvcHRpb24ubGFiZWwgPSBkYXRhLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXG4gICAgICBpZiAob3B0aW9uLnRleHRDb250ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0gZGF0YS50ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLmlubmVyVGV4dCA9IGRhdGEudGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb24udmFsdWUgPSBkYXRhLmlkO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmRpc2FibGVkKSB7XG4gICAgICBvcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnNlbGVjdGVkKSB7XG4gICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICBvcHRpb24udGl0bGUgPSBkYXRhLnRpdGxlO1xuICAgIH1cblxuICAgIHZhciBub3JtYWxpemVkRGF0YSA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oZGF0YSk7XG4gICAgbm9ybWFsaXplZERhdGEuZWxlbWVudCA9IG9wdGlvbjtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSBvcHRpb24ncyBkYXRhIHdpdGggdGhlIGNvbWJpbmVkIGRhdGFcbiAgICBVdGlscy5TdG9yZURhdGEob3B0aW9uLCAnZGF0YScsIG5vcm1hbGl6ZWREYXRhKTtcblxuICAgIHJldHVybiAkKG9wdGlvbik7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuaXRlbSA9IGZ1bmN0aW9uICgkb3B0aW9uKSB7XG4gICAgdmFyIGRhdGEgPSB7fTtcblxuICAgIGRhdGEgPSBVdGlscy5HZXREYXRhKCRvcHRpb25bMF0sICdkYXRhJyk7XG5cbiAgICBpZiAoZGF0YSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB2YXIgb3B0aW9uID0gJG9wdGlvblswXTtcblxuICAgIGlmIChvcHRpb24udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb3B0aW9uJykge1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgaWQ6ICRvcHRpb24udmFsKCksXG4gICAgICAgIHRleHQ6ICRvcHRpb24udGV4dCgpLFxuICAgICAgICBkaXNhYmxlZDogJG9wdGlvbi5wcm9wKCdkaXNhYmxlZCcpLFxuICAgICAgICBzZWxlY3RlZDogJG9wdGlvbi5wcm9wKCdzZWxlY3RlZCcpLFxuICAgICAgICB0aXRsZTogJG9wdGlvbi5wcm9wKCd0aXRsZScpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAob3B0aW9uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGdyb3VwJykge1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgdGV4dDogJG9wdGlvbi5wcm9wKCdsYWJlbCcpLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHRpdGxlOiAkb3B0aW9uLnByb3AoJ3RpdGxlJylcbiAgICAgIH07XG5cbiAgICAgIHZhciAkY2hpbGRyZW4gPSAkb3B0aW9uLmNoaWxkcmVuKCdvcHRpb24nKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICRjaGlsZHJlbi5sZW5ndGg7IGMrKykge1xuICAgICAgICB2YXIgJGNoaWxkID0gJCgkY2hpbGRyZW5bY10pO1xuXG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuaXRlbSgkY2hpbGQpO1xuXG4gICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgfVxuXG4gICAgICBkYXRhLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgfVxuXG4gICAgZGF0YSA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oZGF0YSk7XG4gICAgZGF0YS5lbGVtZW50ID0gJG9wdGlvblswXTtcblxuICAgIFV0aWxzLlN0b3JlRGF0YSgkb3B0aW9uWzBdLCAnZGF0YScsIGRhdGEpO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuX25vcm1hbGl6ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtICE9PSBPYmplY3QoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSB7XG4gICAgICAgIGlkOiBpdGVtLFxuICAgICAgICB0ZXh0OiBpdGVtXG4gICAgICB9O1xuICAgIH1cblxuICAgIGl0ZW0gPSAkLmV4dGVuZCh7fSwge1xuICAgICAgdGV4dDogJydcbiAgICB9LCBpdGVtKTtcblxuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAoaXRlbS5pZCAhPSBudWxsKSB7XG4gICAgICBpdGVtLmlkID0gaXRlbS5pZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChpdGVtLnRleHQgIT0gbnVsbCkge1xuICAgICAgaXRlbS50ZXh0ID0gaXRlbS50ZXh0LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0uX3Jlc3VsdElkID09IG51bGwgJiYgaXRlbS5pZCAmJiB0aGlzLmNvbnRhaW5lciAhPSBudWxsKSB7XG4gICAgICBpdGVtLl9yZXN1bHRJZCA9IHRoaXMuZ2VuZXJhdGVSZXN1bHRJZCh0aGlzLmNvbnRhaW5lciwgaXRlbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBkZWZhdWx0cywgaXRlbSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUubWF0Y2hlcyA9IGZ1bmN0aW9uIChwYXJhbXMsIGRhdGEpIHtcbiAgICB2YXIgbWF0Y2hlciA9IHRoaXMub3B0aW9ucy5nZXQoJ21hdGNoZXInKTtcblxuICAgIHJldHVybiBtYXRjaGVyKHBhcmFtcywgZGF0YSk7XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdEFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYXJyYXknLFtcbiAgJy4vc2VsZWN0JyxcbiAgJy4uL3V0aWxzJyxcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uIChTZWxlY3RBZGFwdGVyLCBVdGlscywgJCkge1xuICBmdW5jdGlvbiBBcnJheUFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy5fZGF0YVRvQ29udmVydCA9IG9wdGlvbnMuZ2V0KCdkYXRhJykgfHwgW107XG5cbiAgICBBcnJheUFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEFycmF5QWRhcHRlciwgU2VsZWN0QWRhcHRlcik7XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uYmluZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmFkZE9wdGlvbnModGhpcy5jb252ZXJ0VG9PcHRpb25zKHRoaXMuX2RhdGFUb0NvbnZlcnQpKTtcbiAgfTtcblxuICBBcnJheUFkYXB0ZXIucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyICRvcHRpb24gPSB0aGlzLiRlbGVtZW50LmZpbmQoJ29wdGlvbicpLmZpbHRlcihmdW5jdGlvbiAoaSwgZWxtKSB7XG4gICAgICByZXR1cm4gZWxtLnZhbHVlID09IGRhdGEuaWQudG9TdHJpbmcoKTtcbiAgICB9KTtcblxuICAgIGlmICgkb3B0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGRhdGEpO1xuXG4gICAgICB0aGlzLmFkZE9wdGlvbnMoJG9wdGlvbik7XG4gICAgfVxuXG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5zZWxlY3QuY2FsbCh0aGlzLCBkYXRhKTtcbiAgfTtcblxuICBBcnJheUFkYXB0ZXIucHJvdG90eXBlLmNvbnZlcnRUb09wdGlvbnMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciAkZXhpc3RpbmcgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ29wdGlvbicpO1xuICAgIHZhciBleGlzdGluZ0lkcyA9ICRleGlzdGluZy5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNlbGYuaXRlbSgkKHRoaXMpKS5pZDtcbiAgICB9KS5nZXQoKTtcblxuICAgIHZhciAkb3B0aW9ucyA9IFtdO1xuXG4gICAgLy8gRmlsdGVyIG91dCBhbGwgaXRlbXMgZXhjZXB0IGZvciB0aGUgb25lIHBhc3NlZCBpbiB0aGUgYXJndW1lbnRcbiAgICBmdW5jdGlvbiBvbmx5SXRlbSAoaXRlbSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT0gaXRlbS5pZDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oZGF0YVtkXSk7XG5cbiAgICAgIC8vIFNraXAgaXRlbXMgd2hpY2ggd2VyZSBwcmUtbG9hZGVkLCBvbmx5IG1lcmdlIHRoZSBkYXRhXG4gICAgICBpZiAoZXhpc3RpbmdJZHMuaW5kZXhPZihpdGVtLmlkKSA+PSAwKSB7XG4gICAgICAgIHZhciAkZXhpc3RpbmdPcHRpb24gPSAkZXhpc3RpbmcuZmlsdGVyKG9ubHlJdGVtKGl0ZW0pKTtcblxuICAgICAgICB2YXIgZXhpc3RpbmdEYXRhID0gdGhpcy5pdGVtKCRleGlzdGluZ09wdGlvbik7XG4gICAgICAgIHZhciBuZXdEYXRhID0gJC5leHRlbmQodHJ1ZSwge30sIGl0ZW0sIGV4aXN0aW5nRGF0YSk7XG5cbiAgICAgICAgdmFyICRuZXdPcHRpb24gPSB0aGlzLm9wdGlvbihuZXdEYXRhKTtcblxuICAgICAgICAkZXhpc3RpbmdPcHRpb24ucmVwbGFjZVdpdGgoJG5ld09wdGlvbik7XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHZhciAkY2hpbGRyZW4gPSB0aGlzLmNvbnZlcnRUb09wdGlvbnMoaXRlbS5jaGlsZHJlbik7XG5cbiAgICAgICAgJG9wdGlvbi5hcHBlbmQoJGNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgICAgJG9wdGlvbnMucHVzaCgkb3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJG9wdGlvbnM7XG4gIH07XG5cbiAgcmV0dXJuIEFycmF5QWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9hamF4JyxbXG4gICcuL2FycmF5JyxcbiAgJy4uL3V0aWxzJyxcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uIChBcnJheUFkYXB0ZXIsIFV0aWxzLCAkKSB7XG4gIGZ1bmN0aW9uIEFqYXhBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuYWpheE9wdGlvbnMgPSB0aGlzLl9hcHBseURlZmF1bHRzKG9wdGlvbnMuZ2V0KCdhamF4JykpO1xuXG4gICAgaWYgKHRoaXMuYWpheE9wdGlvbnMucHJvY2Vzc1Jlc3VsdHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0cyA9IHRoaXMuYWpheE9wdGlvbnMucHJvY2Vzc1Jlc3VsdHM7XG4gICAgfVxuXG4gICAgQWpheEFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEFqYXhBZGFwdGVyLCBBcnJheUFkYXB0ZXIpO1xuXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgZGF0YTogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIHBhcmFtcywge1xuICAgICAgICAgIHE6IHBhcmFtcy50ZXJtXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHRyYW5zcG9ydDogZnVuY3Rpb24gKHBhcmFtcywgc3VjY2VzcywgZmFpbHVyZSkge1xuICAgICAgICB2YXIgJHJlcXVlc3QgPSAkLmFqYXgocGFyYW1zKTtcblxuICAgICAgICAkcmVxdWVzdC50aGVuKHN1Y2Nlc3MpO1xuICAgICAgICAkcmVxdWVzdC5mYWlsKGZhaWx1cmUpO1xuXG4gICAgICAgIHJldHVybiAkcmVxdWVzdDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBkZWZhdWx0cywgb3B0aW9ucywgdHJ1ZSk7XG4gIH07XG5cbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLnByb2Nlc3NSZXN1bHRzID0gZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfTtcblxuICBBamF4QWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBtYXRjaGVzID0gW107XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuX3JlcXVlc3QgIT0gbnVsbCkge1xuICAgICAgLy8gSlNPTlAgcmVxdWVzdHMgY2Fubm90IGFsd2F5cyBiZSBhYm9ydGVkXG4gICAgICBpZiAodHlwZW9mIHRoaXMuX3JlcXVlc3QuYWJvcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5fcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHtcbiAgICAgIHR5cGU6ICdHRVQnXG4gICAgfSwgdGhpcy5hamF4T3B0aW9ucyk7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsLmNhbGwodGhpcy4kZWxlbWVudCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5kYXRhLmNhbGwodGhpcy4kZWxlbWVudCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXF1ZXN0ICgpIHtcbiAgICAgIHZhciAkcmVxdWVzdCA9IG9wdGlvbnMudHJhbnNwb3J0KG9wdGlvbnMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciByZXN1bHRzID0gc2VsZi5wcm9jZXNzUmVzdWx0cyhkYXRhLCBwYXJhbXMpO1xuXG4gICAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzcG9uc2UgaW5jbHVkZWQgYSBgcmVzdWx0c2Aga2V5LlxuICAgICAgICAgIGlmICghcmVzdWx0cyB8fCAhcmVzdWx0cy5yZXN1bHRzIHx8ICFBcnJheS5pc0FycmF5KHJlc3VsdHMucmVzdWx0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdTZWxlY3QyOiBUaGUgQUpBWCByZXN1bHRzIGRpZCBub3QgcmV0dXJuIGFuIGFycmF5IGluIHRoZSAnICtcbiAgICAgICAgICAgICAgJ2ByZXN1bHRzYCBrZXkgb2YgdGhlIHJlc3BvbnNlLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2socmVzdWx0cyk7XG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gZGV0ZWN0IGlmIGEgcmVxdWVzdCB3YXMgYWJvcnRlZFxuICAgICAgICAvLyBPbmx5IHdvcmtzIGlmIHRoZSB0cmFuc3BvcnQgZXhwb3NlcyBhIHN0YXR1cyBwcm9wZXJ0eVxuICAgICAgICBpZiAoJ3N0YXR1cycgaW4gJHJlcXVlc3QgJiZcbiAgICAgICAgICAgICgkcmVxdWVzdC5zdGF0dXMgPT09IDAgfHwgJHJlcXVlc3Quc3RhdHVzID09PSAnMCcpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgICAgbWVzc2FnZTogJ2Vycm9yTG9hZGluZydcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgc2VsZi5fcmVxdWVzdCA9ICRyZXF1ZXN0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFqYXhPcHRpb25zLmRlbGF5ICYmIHBhcmFtcy50ZXJtICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLl9xdWVyeVRpbWVvdXQpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9xdWVyeVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9xdWVyeVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChyZXF1ZXN0LCB0aGlzLmFqYXhPcHRpb25zLmRlbGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdCgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gQWpheEFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvdGFncycsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gVGFncyAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHZhciB0YWdzID0gb3B0aW9ucy5nZXQoJ3RhZ3MnKTtcblxuICAgIHZhciBjcmVhdGVUYWcgPSBvcHRpb25zLmdldCgnY3JlYXRlVGFnJyk7XG5cbiAgICBpZiAoY3JlYXRlVGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3JlYXRlVGFnID0gY3JlYXRlVGFnO1xuICAgIH1cblxuICAgIHZhciBpbnNlcnRUYWcgPSBvcHRpb25zLmdldCgnaW5zZXJ0VGFnJyk7XG5cbiAgICBpZiAoaW5zZXJ0VGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRUYWcgPSBpbnNlcnRUYWc7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFncykpIHtcbiAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGFncy5sZW5ndGg7IHQrKykge1xuICAgICAgICB2YXIgdGFnID0gdGFnc1t0XTtcbiAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKHRhZyk7XG5cbiAgICAgICAgdmFyICRvcHRpb24gPSB0aGlzLm9wdGlvbihpdGVtKTtcblxuICAgICAgICB0aGlzLiRlbGVtZW50LmFwcGVuZCgkb3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBUYWdzLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLl9yZW1vdmVPbGRUYWdzKCk7XG5cbiAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMucGFnZSAhPSBudWxsKSB7XG4gICAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwcGVyIChvYmosIGNoaWxkKSB7XG4gICAgICB2YXIgZGF0YSA9IG9iai5yZXN1bHRzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG9wdGlvbiA9IGRhdGFbaV07XG5cbiAgICAgICAgdmFyIGNoZWNrQ2hpbGRyZW4gPSAoXG4gICAgICAgICAgb3B0aW9uLmNoaWxkcmVuICE9IG51bGwgJiZcbiAgICAgICAgICAhd3JhcHBlcih7XG4gICAgICAgICAgICByZXN1bHRzOiBvcHRpb24uY2hpbGRyZW5cbiAgICAgICAgICB9LCB0cnVlKVxuICAgICAgICApO1xuXG4gICAgICAgIHZhciBvcHRpb25UZXh0ID0gKG9wdGlvbi50ZXh0IHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcGFyYW1zVGVybSA9IChwYXJhbXMudGVybSB8fCAnJykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICB2YXIgY2hlY2tUZXh0ID0gb3B0aW9uVGV4dCA9PT0gcGFyYW1zVGVybTtcblxuICAgICAgICBpZiAoY2hlY2tUZXh0IHx8IGNoZWNrQ2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYmouZGF0YSA9IGRhdGE7XG4gICAgICAgICAgY2FsbGJhY2sob2JqKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YWcgPSBzZWxmLmNyZWF0ZVRhZyhwYXJhbXMpO1xuXG4gICAgICBpZiAodGFnICE9IG51bGwpIHtcbiAgICAgICAgdmFyICRvcHRpb24gPSBzZWxmLm9wdGlvbih0YWcpO1xuICAgICAgICAkb3B0aW9uLmF0dHIoJ2RhdGEtc2VsZWN0Mi10YWcnLCAndHJ1ZScpO1xuXG4gICAgICAgIHNlbGYuYWRkT3B0aW9ucyhbJG9wdGlvbl0pO1xuXG4gICAgICAgIHNlbGYuaW5zZXJ0VGFnKGRhdGEsIHRhZyk7XG4gICAgICB9XG5cbiAgICAgIG9iai5yZXN1bHRzID0gZGF0YTtcblxuICAgICAgY2FsbGJhY2sob2JqKTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIHdyYXBwZXIpO1xuICB9O1xuXG4gIFRhZ3MucHJvdG90eXBlLmNyZWF0ZVRhZyA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMudGVybSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGVybSA9IHBhcmFtcy50ZXJtLnRyaW0oKTtcblxuICAgIGlmICh0ZXJtID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0ZXJtLFxuICAgICAgdGV4dDogdGVybVxuICAgIH07XG4gIH07XG5cbiAgVGFncy5wcm90b3R5cGUuaW5zZXJ0VGFnID0gZnVuY3Rpb24gKF8sIGRhdGEsIHRhZykge1xuICAgIGRhdGEudW5zaGlmdCh0YWcpO1xuICB9O1xuXG4gIFRhZ3MucHJvdG90eXBlLl9yZW1vdmVPbGRUYWdzID0gZnVuY3Rpb24gKF8pIHtcbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ29wdGlvbltkYXRhLXNlbGVjdDItdGFnXScpO1xuXG4gICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICQodGhpcykucmVtb3ZlKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIFRhZ3M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvdG9rZW5pemVyJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBUb2tlbml6ZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdG9rZW5pemVyID0gb3B0aW9ucy5nZXQoJ3Rva2VuaXplcicpO1xuXG4gICAgaWYgKHRva2VuaXplciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRva2VuaXplciA9IHRva2VuaXplcjtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBUb2tlbml6ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgdGhpcy4kc2VhcmNoID0gIGNvbnRhaW5lci5kcm9wZG93bi4kc2VhcmNoIHx8IGNvbnRhaW5lci5zZWxlY3Rpb24uJHNlYXJjaCB8fFxuICAgICAgJGNvbnRhaW5lci5maW5kKCcuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkJyk7XG4gIH07XG5cbiAgVG9rZW5pemVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVBbmRTZWxlY3QgKGRhdGEpIHtcbiAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgZGF0YSBvYmplY3Qgc28gd2UgY2FuIHVzZSBpdCBmb3IgY2hlY2tzXG4gICAgICB2YXIgaXRlbSA9IHNlbGYuX25vcm1hbGl6ZUl0ZW0oZGF0YSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhIG9iamVjdCBhbHJlYWR5IGV4aXN0cyBhcyBhIHRhZ1xuICAgICAgLy8gU2VsZWN0IGl0IGlmIGl0IGRvZXNuJ3RcbiAgICAgIHZhciAkZXhpc3RpbmdPcHRpb25zID0gc2VsZi4kZWxlbWVudC5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJCh0aGlzKS52YWwoKSA9PT0gaXRlbS5pZDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiBhbiBleGlzdGluZyBvcHRpb24gd2Fzbid0IGZvdW5kIGZvciBpdCwgY3JlYXRlIHRoZSBvcHRpb25cbiAgICAgIGlmICghJGV4aXN0aW5nT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdmFyICRvcHRpb24gPSBzZWxmLm9wdGlvbihpdGVtKTtcbiAgICAgICAgJG9wdGlvbi5hdHRyKCdkYXRhLXNlbGVjdDItdGFnJywgdHJ1ZSk7XG5cbiAgICAgICAgc2VsZi5fcmVtb3ZlT2xkVGFncygpO1xuICAgICAgICBzZWxmLmFkZE9wdGlvbnMoWyRvcHRpb25dKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VsZWN0IHRoZSBpdGVtLCBub3cgdGhhdCB3ZSBrbm93IHRoZXJlIGlzIGFuIG9wdGlvbiBmb3IgaXRcbiAgICAgIHNlbGVjdChpdGVtKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZWxlY3QgKGRhdGEpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0Jywge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xuXG4gICAgdmFyIHRva2VuRGF0YSA9IHRoaXMudG9rZW5pemVyKHBhcmFtcywgdGhpcy5vcHRpb25zLCBjcmVhdGVBbmRTZWxlY3QpO1xuXG4gICAgaWYgKHRva2VuRGF0YS50ZXJtICE9PSBwYXJhbXMudGVybSkge1xuICAgICAgLy8gUmVwbGFjZSB0aGUgc2VhcmNoIHRlcm0gaWYgd2UgaGF2ZSB0aGUgc2VhcmNoIGJveFxuICAgICAgaWYgKHRoaXMuJHNlYXJjaC5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy4kc2VhcmNoLnZhbCh0b2tlbkRhdGEudGVybSk7XG4gICAgICAgIHRoaXMuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuXG4gICAgICBwYXJhbXMudGVybSA9IHRva2VuRGF0YS50ZXJtO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9O1xuXG4gIFRva2VuaXplci5wcm90b3R5cGUudG9rZW5pemVyID0gZnVuY3Rpb24gKF8sIHBhcmFtcywgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VwYXJhdG9ycyA9IG9wdGlvbnMuZ2V0KCd0b2tlblNlcGFyYXRvcnMnKSB8fCBbXTtcbiAgICB2YXIgdGVybSA9IHBhcmFtcy50ZXJtO1xuICAgIHZhciBpID0gMDtcblxuICAgIHZhciBjcmVhdGVUYWcgPSB0aGlzLmNyZWF0ZVRhZyB8fCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcGFyYW1zLnRlcm0sXG4gICAgICAgIHRleHQ6IHBhcmFtcy50ZXJtXG4gICAgICB9O1xuICAgIH07XG5cbiAgICB3aGlsZSAoaSA8IHRlcm0ubGVuZ3RoKSB7XG4gICAgICB2YXIgdGVybUNoYXIgPSB0ZXJtW2ldO1xuXG4gICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKHRlcm1DaGFyKSA9PT0gLTEpIHtcbiAgICAgICAgaSsrO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFydCA9IHRlcm0uc3Vic3RyKDAsIGkpO1xuICAgICAgdmFyIHBhcnRQYXJhbXMgPSAkLmV4dGVuZCh7fSwgcGFyYW1zLCB7XG4gICAgICAgIHRlcm06IHBhcnRcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZGF0YSA9IGNyZWF0ZVRhZyhwYXJ0UGFyYW1zKTtcblxuICAgICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgICBpKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhkYXRhKTtcblxuICAgICAgLy8gUmVzZXQgdGhlIHRlcm0gdG8gbm90IGluY2x1ZGUgdGhlIHRva2VuaXplZCBwb3J0aW9uXG4gICAgICB0ZXJtID0gdGVybS5zdWJzdHIoaSArIDEpIHx8ICcnO1xuICAgICAgaSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcm06IHRlcm1cbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBUb2tlbml6ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWluaW11bUlucHV0TGVuZ3RoJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWluaW11bUlucHV0TGVuZ3RoIChkZWNvcmF0ZWQsICRlLCBvcHRpb25zKSB7XG4gICAgdGhpcy5taW5pbXVtSW5wdXRMZW5ndGggPSBvcHRpb25zLmdldCgnbWluaW11bUlucHV0TGVuZ3RoJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XG4gIH1cblxuICBNaW5pbXVtSW5wdXRMZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcy50ZXJtID0gcGFyYW1zLnRlcm0gfHwgJyc7XG5cbiAgICBpZiAocGFyYW1zLnRlcm0ubGVuZ3RoIDwgdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgpIHtcbiAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICBtZXNzYWdlOiAnaW5wdXRUb29TaG9ydCcsXG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBtaW5pbXVtOiB0aGlzLm1pbmltdW1JbnB1dExlbmd0aCxcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLnRlcm0sXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gTWluaW11bUlucHV0TGVuZ3RoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL21heGltdW1JbnB1dExlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1heGltdW1JbnB1dExlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWF4aW11bUlucHV0TGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21heGltdW1JbnB1dExlbmd0aCcpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgTWF4aW11bUlucHV0TGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMubWF4aW11bUlucHV0TGVuZ3RoID4gMCAmJlxuICAgICAgICBwYXJhbXMudGVybS5sZW5ndGggPiB0aGlzLm1heGltdW1JbnB1dExlbmd0aCkge1xuICAgICAgdGhpcy50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdpbnB1dFRvb0xvbmcnLFxuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgbWF4aW11bTogdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgsXG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIE1heGltdW1JbnB1dExlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoJyxbXG5cbl0sIGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIChkZWNvcmF0ZWQsICRlLCBvcHRpb25zKSB7XG4gICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21heGltdW1TZWxlY3Rpb25MZW5ndGgnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLmJpbmQgPVxuICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2VsZi5fY2hlY2tJZk1heGltdW1TZWxlY3RlZCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgTWF4aW11bVNlbGVjdGlvbkxlbmd0aC5wcm90b3R5cGUucXVlcnkgPVxuICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgdGhpcy5fY2hlY2tJZk1heGltdW1TZWxlY3RlZChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRlY29yYXRlZC5jYWxsKHNlbGYsIHBhcmFtcywgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gIH07XG5cbiAgTWF4aW11bVNlbGVjdGlvbkxlbmd0aC5wcm90b3R5cGUuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQgPVxuICAgIGZ1bmN0aW9uIChfLCBzdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgdGhpcy5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgICB2YXIgY291bnQgPSBjdXJyZW50RGF0YSAhPSBudWxsID8gY3VycmVudERhdGEubGVuZ3RoIDogMDtcbiAgICAgICAgaWYgKHNlbGYubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBjb3VudCA+PSBzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGgpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdtYXhpbXVtU2VsZWN0ZWQnLFxuICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICBtYXhpbXVtOiBzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bicsW1xuICAnanF1ZXJ5JyxcbiAgJy4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMpIHtcbiAgZnVuY3Rpb24gRHJvcGRvd24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBEcm9wZG93bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChEcm9wZG93biwgVXRpbHMuT2JzZXJ2YWJsZSk7XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGRyb3Bkb3duID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItZHJvcGRvd25cIj4nICtcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzXCI+PC9zcGFuPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgICRkcm9wZG93bi5hdHRyKCdkaXInLCB0aGlzLm9wdGlvbnMuZ2V0KCdkaXInKSk7XG5cbiAgICB0aGlzLiRkcm9wZG93biA9ICRkcm9wZG93bjtcblxuICAgIHJldHVybiAkZHJvcGRvd247XG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBEcm9wZG93bi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJGRyb3Bkb3duLCAkY29udGFpbmVyKSB7XG4gICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBEcm9wZG93bi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZW1vdmUgdGhlIGRyb3Bkb3duIGZyb20gdGhlIERPTVxuICAgIHRoaXMuJGRyb3Bkb3duLnJlbW92ZSgpO1xuICB9O1xuXG4gIHJldHVybiBEcm9wZG93bjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vc2VhcmNoJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBTZWFyY2ggKCkgeyB9XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyICRyZW5kZXJlZCA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuICAgIHZhciBzZWFyY2hMYWJlbCA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgnc2VhcmNoJyk7XG5cbiAgICB2YXIgJHNlYXJjaCA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlYXJjaCBzZWxlY3QyLXNlYXJjaC0tZHJvcGRvd25cIj4nICtcbiAgICAgICAgJzxpbnB1dCBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCInICtcbiAgICAgICAgJyBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiJyArXG4gICAgICAgICcgc3BlbGxjaGVjaz1cImZhbHNlXCIgcm9sZT1cInNlYXJjaGJveFwiIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiIC8+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgdGhpcy4kc2VhcmNoQ29udGFpbmVyID0gJHNlYXJjaDtcbiAgICB0aGlzLiRzZWFyY2ggPSAkc2VhcmNoLmZpbmQoJ2lucHV0Jyk7XG5cbiAgICB0aGlzLiRzZWFyY2gucHJvcCgnYXV0b2NvbXBsZXRlJywgdGhpcy5vcHRpb25zLmdldCgnYXV0b2NvbXBsZXRlJykpO1xuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCdhcmlhLWxhYmVsJywgc2VhcmNoTGFiZWwoKSk7XG5cbiAgICAkcmVuZGVyZWQucHJlcGVuZCgkc2VhcmNoKTtcblxuICAgIHJldHVybiAkcmVuZGVyZWQ7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIHNlbGYuX2tleVVwUHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gV29ya2Fyb3VuZCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhlIGBpbnB1dGAgZXZlbnRcbiAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBkb3VibGUtdHJpZ2dlcmluZyBvZiBldmVudHMgZm9yIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnRcbiAgICAvLyBib3RoIHRoZSBga2V5dXBgIGFuZCBgaW5wdXRgIGV2ZW50cy5cbiAgICB0aGlzLiRzZWFyY2gub24oJ2lucHV0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gVW5iaW5kIHRoZSBkdXBsaWNhdGVkIGBrZXl1cGAgZXZlbnRcbiAgICAgICQodGhpcykub2ZmKCdrZXl1cCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdrZXl1cCBpbnB1dCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuaGFuZGxlU2VhcmNoKGV2dCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCAwKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWNvbnRyb2xzJywgcmVzdWx0c0lkKTtcblxuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG5cbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCAtMSk7XG4gICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1jb250cm9scycpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuXG4gICAgICBzZWxmLiRzZWFyY2gudmFsKCcnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdibHVyJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YWxsJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5xdWVyeS50ZXJtID09IG51bGwgfHwgcGFyYW1zLnF1ZXJ5LnRlcm0gPT09ICcnKSB7XG4gICAgICAgIHZhciBzaG93U2VhcmNoID0gc2VsZi5zaG93U2VhcmNoKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKHNob3dTZWFyY2gpIHtcbiAgICAgICAgICBzZWxmLiRzZWFyY2hDb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1zZWFyY2gtLWhpZGUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLiRzZWFyY2hDb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWFyY2gtLWhpZGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5kYXRhLl9yZXN1bHRJZCkge1xuICAgICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBpZiAoIXRoaXMuX2tleVVwUHJldmVudGVkKSB7XG4gICAgICB2YXIgaW5wdXQgPSB0aGlzLiRzZWFyY2gudmFsKCk7XG5cbiAgICAgIHRoaXMudHJpZ2dlcigncXVlcnknLCB7XG4gICAgICAgIHRlcm06IGlucHV0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9rZXlVcFByZXZlbnRlZCA9IGZhbHNlO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuc2hvd1NlYXJjaCA9IGZ1bmN0aW9uIChfLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gU2VhcmNoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXInLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIaWRlUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubm9ybWFsaXplUGxhY2Vob2xkZXIob3B0aW9ucy5nZXQoJ3BsYWNlaG9sZGVyJykpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKTtcbiAgfVxuXG4gIEhpZGVQbGFjZWhvbGRlci5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIGRhdGEucmVzdWx0cyA9IHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoZGF0YS5yZXN1bHRzKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xuICB9O1xuXG4gIEhpZGVQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcbiAgICBpZiAodHlwZW9mIHBsYWNlaG9sZGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcGxhY2Vob2xkZXIgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdGV4dDogcGxhY2Vob2xkZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIEhpZGVQbGFjZWhvbGRlci5wcm90b3R5cGUucmVtb3ZlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgZGF0YSkge1xuICAgIHZhciBtb2RpZmllZERhdGEgPSBkYXRhLnNsaWNlKDApO1xuXG4gICAgZm9yICh2YXIgZCA9IGRhdGEubGVuZ3RoIC0gMTsgZCA+PSAwOyBkLS0pIHtcbiAgICAgIHZhciBpdGVtID0gZGF0YVtkXTtcblxuICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIuaWQgPT09IGl0ZW0uaWQpIHtcbiAgICAgICAgbW9kaWZpZWREYXRhLnNwbGljZShkLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kaWZpZWREYXRhO1xuICB9O1xuXG4gIHJldHVybiBIaWRlUGxhY2Vob2xkZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2luZmluaXRlU2Nyb2xsJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBJbmZpbml0ZVNjcm9sbCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLmxhc3RQYXJhbXMgPSB7fTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XG5cbiAgICB0aGlzLiRsb2FkaW5nTW9yZSA9IHRoaXMuY3JlYXRlTG9hZGluZ01vcmUoKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdGhpcy4kbG9hZGluZ01vcmUucmVtb3ZlKCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcblxuICAgIGlmICh0aGlzLnNob3dMb2FkaW5nTW9yZShkYXRhKSkge1xuICAgICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQodGhpcy4kbG9hZGluZ01vcmUpO1xuICAgICAgdGhpcy5sb2FkTW9yZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmxhc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICBzZWxmLmxvYWRpbmcgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdxdWVyeTphcHBlbmQnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmxhc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICBzZWxmLmxvYWRpbmcgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5vbignc2Nyb2xsJywgdGhpcy5sb2FkTW9yZUlmTmVlZGVkLmJpbmQodGhpcykpO1xuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5sb2FkTW9yZUlmTmVlZGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpc0xvYWRNb3JlVmlzaWJsZSA9ICQuY29udGFpbnMoXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICB0aGlzLiRsb2FkaW5nTW9yZVswXVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8ICFpc0xvYWRNb3JlVmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3AgK1xuICAgICAgdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodChmYWxzZSk7XG4gICAgdmFyIGxvYWRpbmdNb3JlT2Zmc2V0ID0gdGhpcy4kbG9hZGluZ01vcmUub2Zmc2V0KCkudG9wICtcbiAgICAgIHRoaXMuJGxvYWRpbmdNb3JlLm91dGVySGVpZ2h0KGZhbHNlKTtcblxuICAgIGlmIChjdXJyZW50T2Zmc2V0ICsgNTAgPj0gbG9hZGluZ01vcmVPZmZzZXQpIHtcbiAgICAgIHRoaXMubG9hZE1vcmUoKTtcbiAgICB9XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmxvYWRNb3JlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB2YXIgcGFyYW1zID0gJC5leHRlbmQoe30sIHtwYWdlOiAxfSwgdGhpcy5sYXN0UGFyYW1zKTtcblxuICAgIHBhcmFtcy5wYWdlKys7XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5OmFwcGVuZCcsIHBhcmFtcyk7XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLnNob3dMb2FkaW5nTW9yZSA9IGZ1bmN0aW9uIChfLCBkYXRhKSB7XG4gICAgcmV0dXJuIGRhdGEucGFnaW5hdGlvbiAmJiBkYXRhLnBhZ2luYXRpb24ubW9yZTtcbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuY3JlYXRlTG9hZGluZ01vcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRvcHRpb24gPSAkKFxuICAgICAgJzxsaSAnICtcbiAgICAgICdjbGFzcz1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1sb2FkLW1vcmVcIicgK1xuICAgICAgJ3JvbGU9XCJvcHRpb25cIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPjwvbGk+J1xuICAgICk7XG5cbiAgICB2YXIgbWVzc2FnZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgnbG9hZGluZ01vcmUnKTtcblxuICAgICRvcHRpb24uaHRtbChtZXNzYWdlKHRoaXMubGFzdFBhcmFtcykpO1xuXG4gICAgcmV0dXJuICRvcHRpb247XG4gIH07XG5cbiAgcmV0dXJuIEluZmluaXRlU2Nyb2xsO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9hdHRhY2hCb2R5JyxbXG4gICdqcXVlcnknLFxuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMpIHtcbiAgZnVuY3Rpb24gQXR0YWNoQm9keSAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGRyb3Bkb3duUGFyZW50ID0gJChvcHRpb25zLmdldCgnZHJvcGRvd25QYXJlbnQnKSB8fCBkb2N1bWVudC5ib2R5KTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fc2hvd0Ryb3Bkb3duKCk7XG4gICAgICBzZWxmLl9hdHRhY2hQb3NpdGlvbmluZ0hhbmRsZXIoY29udGFpbmVyKTtcblxuICAgICAgLy8gTXVzdCBiaW5kIGFmdGVyIHRoZSByZXN1bHRzIGhhbmRsZXJzIHRvIGVuc3VyZSBjb3JyZWN0IHNpemluZ1xuICAgICAgc2VsZi5fYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5faGlkZURyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXIoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgJGRyb3Bkb3duLCAkY29udGFpbmVyKSB7XG4gICAgLy8gQ2xvbmUgYWxsIG9mIHRoZSBjb250YWluZXIgY2xhc3Nlc1xuICAgICRkcm9wZG93bi5hdHRyKCdjbGFzcycsICRjb250YWluZXIuYXR0cignY2xhc3MnKSk7XG5cbiAgICAkZHJvcGRvd25bMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0MicpO1xuICAgICRkcm9wZG93blswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuXG4gICAgJGRyb3Bkb3duLmNzcyh7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRvcDogLTk5OTk5OVxuICAgIH0pO1xuXG4gICAgdGhpcy4kY29udGFpbmVyID0gJGNvbnRhaW5lcjtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyICRjb250YWluZXIgPSAkKCc8c3Bhbj48L3NwYW4+Jyk7XG5cbiAgICB2YXIgJGRyb3Bkb3duID0gZGVjb3JhdGVkLmNhbGwodGhpcyk7XG4gICAgJGNvbnRhaW5lci5hcHBlbmQoJGRyb3Bkb3duKTtcblxuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyID0gJGNvbnRhaW5lcjtcblxuICAgIHJldHVybiAkY29udGFpbmVyO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9oaWRlRHJvcGRvd24gPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuZGV0YWNoKCk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyA9XG4gICAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIpIHtcblxuICAgIC8vIFRoZXNlIHNob3VsZCBvbmx5IGJlIGJvdW5kIG9uY2VcbiAgICBpZiAodGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YWxsJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphcHBlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOm1lc3NhZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZCA9IHRydWU7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX2F0dGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9XG4gICAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgc2Nyb2xsRXZlbnQgPSAnc2Nyb2xsLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcbiAgICB2YXIgcmVzaXplRXZlbnQgPSAncmVzaXplLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcbiAgICB2YXIgb3JpZW50YXRpb25FdmVudCA9ICdvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG5cbiAgICB2YXIgJHdhdGNoZXJzID0gdGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoVXRpbHMuaGFzU2Nyb2xsKTtcbiAgICAkd2F0Y2hlcnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBVdGlscy5TdG9yZURhdGEodGhpcywgJ3NlbGVjdDItc2Nyb2xsLXBvc2l0aW9uJywge1xuICAgICAgICB4OiAkKHRoaXMpLnNjcm9sbExlZnQoKSxcbiAgICAgICAgeTogJCh0aGlzKS5zY3JvbGxUb3AoKVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAkd2F0Y2hlcnMub24oc2Nyb2xsRXZlbnQsIGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIHBvc2l0aW9uID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnc2VsZWN0Mi1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICQodGhpcykuc2Nyb2xsVG9wKHBvc2l0aW9uLnkpO1xuICAgIH0pO1xuXG4gICAgJCh3aW5kb3cpLm9uKHNjcm9sbEV2ZW50ICsgJyAnICsgcmVzaXplRXZlbnQgKyAnICcgKyBvcmllbnRhdGlvbkV2ZW50LFxuICAgICAgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9XG4gICAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIpIHtcbiAgICB2YXIgc2Nyb2xsRXZlbnQgPSAnc2Nyb2xsLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcbiAgICB2YXIgcmVzaXplRXZlbnQgPSAncmVzaXplLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcbiAgICB2YXIgb3JpZW50YXRpb25FdmVudCA9ICdvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG5cbiAgICB2YXIgJHdhdGNoZXJzID0gdGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoVXRpbHMuaGFzU2Nyb2xsKTtcbiAgICAkd2F0Y2hlcnMub2ZmKHNjcm9sbEV2ZW50KTtcblxuICAgICQod2luZG93KS5vZmYoc2Nyb2xsRXZlbnQgKyAnICcgKyByZXNpemVFdmVudCArICcgJyArIG9yaWVudGF0aW9uRXZlbnQpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9wb3NpdGlvbkRyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkd2luZG93ID0gJCh3aW5kb3cpO1xuXG4gICAgdmFyIGlzQ3VycmVudGx5QWJvdmUgPSB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3RcbiAgICAgIC5jb250YWlucygnc2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUnKTtcbiAgICB2YXIgaXNDdXJyZW50bHlCZWxvdyA9IHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdFxuICAgICAgLmNvbnRhaW5zKCdzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdycpO1xuXG4gICAgdmFyIG5ld0RpcmVjdGlvbiA9IG51bGw7XG5cbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy4kY29udGFpbmVyLm9mZnNldCgpO1xuXG4gICAgb2Zmc2V0LmJvdHRvbSA9IG9mZnNldC50b3AgKyB0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoZmFsc2UpO1xuXG4gICAgdmFyIGNvbnRhaW5lciA9IHtcbiAgICAgIGhlaWdodDogdGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKVxuICAgIH07XG5cbiAgICBjb250YWluZXIudG9wID0gb2Zmc2V0LnRvcDtcbiAgICBjb250YWluZXIuYm90dG9tID0gb2Zmc2V0LnRvcCArIGNvbnRhaW5lci5oZWlnaHQ7XG5cbiAgICB2YXIgZHJvcGRvd24gPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMuJGRyb3Bkb3duLm91dGVySGVpZ2h0KGZhbHNlKVxuICAgIH07XG5cbiAgICB2YXIgdmlld3BvcnQgPSB7XG4gICAgICB0b3A6ICR3aW5kb3cuc2Nyb2xsVG9wKCksXG4gICAgICBib3R0b206ICR3aW5kb3cuc2Nyb2xsVG9wKCkgKyAkd2luZG93LmhlaWdodCgpXG4gICAgfTtcblxuICAgIHZhciBlbm91Z2hSb29tQWJvdmUgPSB2aWV3cG9ydC50b3AgPCAob2Zmc2V0LnRvcCAtIGRyb3Bkb3duLmhlaWdodCk7XG4gICAgdmFyIGVub3VnaFJvb21CZWxvdyA9IHZpZXdwb3J0LmJvdHRvbSA+IChvZmZzZXQuYm90dG9tICsgZHJvcGRvd24uaGVpZ2h0KTtcblxuICAgIHZhciBjc3MgPSB7XG4gICAgICBsZWZ0OiBvZmZzZXQubGVmdCxcbiAgICAgIHRvcDogY29udGFpbmVyLmJvdHRvbVxuICAgIH07XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgcGFyZW50IGVsZW1lbnQgaXMgdG8gdXNlIGZvciBjYWxjdWxhdGluZyB0aGUgb2Zmc2V0XG4gICAgdmFyICRvZmZzZXRQYXJlbnQgPSB0aGlzLiRkcm9wZG93blBhcmVudDtcblxuICAgIC8vIEZvciBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMsIHdlIG5lZWQgdG8gZ2V0IHRoZSBlbGVtZW50XG4gICAgLy8gdGhhdCBpcyBkZXRlcm1pbmluZyB0aGUgb2Zmc2V0XG4gICAgaWYgKCRvZmZzZXRQYXJlbnQuY3NzKCdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgJG9mZnNldFBhcmVudCA9ICRvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50KCk7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE9mZnNldCA9IHtcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDBcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgJC5jb250YWlucyhkb2N1bWVudC5ib2R5LCAkb2Zmc2V0UGFyZW50WzBdKSB8fFxuICAgICAgJG9mZnNldFBhcmVudFswXS5pc0Nvbm5lY3RlZFxuICAgICAgKSB7XG4gICAgICBwYXJlbnRPZmZzZXQgPSAkb2Zmc2V0UGFyZW50Lm9mZnNldCgpO1xuICAgIH1cblxuICAgIGNzcy50b3AgLT0gcGFyZW50T2Zmc2V0LnRvcDtcbiAgICBjc3MubGVmdCAtPSBwYXJlbnRPZmZzZXQubGVmdDtcblxuICAgIGlmICghaXNDdXJyZW50bHlBYm92ZSAmJiAhaXNDdXJyZW50bHlCZWxvdykge1xuICAgICAgbmV3RGlyZWN0aW9uID0gJ2JlbG93JztcbiAgICB9XG5cbiAgICBpZiAoIWVub3VnaFJvb21CZWxvdyAmJiBlbm91Z2hSb29tQWJvdmUgJiYgIWlzQ3VycmVudGx5QWJvdmUpIHtcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdhYm92ZSc7XG4gICAgfSBlbHNlIGlmICghZW5vdWdoUm9vbUFib3ZlICYmIGVub3VnaFJvb21CZWxvdyAmJiBpc0N1cnJlbnRseUFib3ZlKSB7XG4gICAgICBuZXdEaXJlY3Rpb24gPSAnYmVsb3cnO1xuICAgIH1cblxuICAgIGlmIChuZXdEaXJlY3Rpb24gPT0gJ2Fib3ZlJyB8fFxuICAgICAgKGlzQ3VycmVudGx5QWJvdmUgJiYgbmV3RGlyZWN0aW9uICE9PSAnYmVsb3cnKSkge1xuICAgICAgY3NzLnRvcCA9IGNvbnRhaW5lci50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0gZHJvcGRvd24uaGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChuZXdEaXJlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cnKTtcbiAgICAgIHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItZHJvcGRvd24tLWFib3ZlJyk7XG4gICAgICB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWRyb3Bkb3duLS0nICsgbmV3RGlyZWN0aW9uKTtcblxuICAgICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1iZWxvdycpO1xuICAgICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1hYm92ZScpO1xuICAgICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS0nICsgbmV3RGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5jc3MoY3NzKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fcmVzaXplRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNzcyA9IHtcbiAgICAgIHdpZHRoOiB0aGlzLiRjb250YWluZXIub3V0ZXJXaWR0aChmYWxzZSkgKyAncHgnXG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkcm9wZG93bkF1dG9XaWR0aCcpKSB7XG4gICAgICBjc3MubWluV2lkdGggPSBjc3Mud2lkdGg7XG4gICAgICBjc3MucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgY3NzLndpZHRoID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHRoaXMuJGRyb3Bkb3duLmNzcyhjc3MpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9zaG93RHJvcGRvd24gPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuYXBwZW5kVG8odGhpcy4kZHJvcGRvd25QYXJlbnQpO1xuXG4gICAgdGhpcy5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgIHRoaXMuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gIH07XG5cbiAgcmV0dXJuIEF0dGFjaEJvZHk7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gY291bnRSZXN1bHRzIChkYXRhKSB7XG4gICAgdmFyIGNvdW50ID0gMDtcblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSBkYXRhW2RdO1xuXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICBjb3VudCArPSBjb3VudFJlc3VsdHMoaXRlbS5jaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIGZ1bmN0aW9uIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBvcHRpb25zLmdldCgnbWluaW11bVJlc3VsdHNGb3JTZWFyY2gnKTtcblxuICAgIGlmICh0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIDwgMCkge1xuICAgICAgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA9IEluZmluaXR5O1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XG4gIH1cblxuICBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaC5wcm90b3R5cGUuc2hvd1NlYXJjaCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcykge1xuICAgIGlmIChjb3VudFJlc3VsdHMocGFyYW1zLmRhdGEucmVzdWx0cykgPCB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gIH07XG5cbiAgcmV0dXJuIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBTZWxlY3RPbkNsb3NlICgpIHsgfVxuXG4gIFNlbGVjdE9uQ2xvc2UucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuX2hhbmRsZVNlbGVjdE9uQ2xvc2UocGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RPbkNsb3NlLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0T25DbG9zZSA9IGZ1bmN0aW9uIChfLCBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zICYmIHBhcmFtcy5vcmlnaW5hbFNlbGVjdDJFdmVudCAhPSBudWxsKSB7XG4gICAgICB2YXIgZXZlbnQgPSBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQ7XG5cbiAgICAgIC8vIERvbid0IHNlbGVjdCBhbiBpdGVtIGlmIHRoZSBjbG9zZSBldmVudCB3YXMgdHJpZ2dlcmVkIGZyb20gYSBzZWxlY3Qgb3JcbiAgICAgIC8vIHVuc2VsZWN0IGV2ZW50XG4gICAgICBpZiAoZXZlbnQuX3R5cGUgPT09ICdzZWxlY3QnIHx8IGV2ZW50Ll90eXBlID09PSAndW5zZWxlY3QnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgJGhpZ2hsaWdodGVkUmVzdWx0cyA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAvLyBPbmx5IHNlbGVjdCBoaWdobGlnaHRlZCByZXN1bHRzXG4gICAgaWYgKCRoaWdobGlnaHRlZFJlc3VsdHMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkaGlnaGxpZ2h0ZWRSZXN1bHRzWzBdLCAnZGF0YScpO1xuXG4gICAgLy8gRG9uJ3QgcmUtc2VsZWN0IGFscmVhZHkgc2VsZWN0ZWQgcmVzdWx0ZVxuICAgIGlmIChcbiAgICAgIChkYXRhLmVsZW1lbnQgIT0gbnVsbCAmJiBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XG4gICAgICAoZGF0YS5lbGVtZW50ID09IG51bGwgJiYgZGF0YS5zZWxlY3RlZClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3RPbkNsb3NlO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0JyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ2xvc2VPblNlbGVjdCAoKSB7IH1cblxuICBDbG9zZU9uU2VsZWN0LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5fc2VsZWN0VHJpZ2dlcmVkKGV2dCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5fc2VsZWN0VHJpZ2dlcmVkKGV2dCk7XG4gICAgfSk7XG4gIH07XG5cbiAgQ2xvc2VPblNlbGVjdC5wcm90b3R5cGUuX3NlbGVjdFRyaWdnZXJlZCA9IGZ1bmN0aW9uIChfLCBldnQpIHtcbiAgICB2YXIgb3JpZ2luYWxFdmVudCA9IGV2dC5vcmlnaW5hbEV2ZW50O1xuXG4gICAgLy8gRG9uJ3QgY2xvc2UgaWYgdGhlIGNvbnRyb2wga2V5IGlzIGJlaW5nIGhlbGRcbiAgICBpZiAob3JpZ2luYWxFdmVudCAmJiAob3JpZ2luYWxFdmVudC5jdHJsS2V5IHx8IG9yaWdpbmFsRXZlbnQubWV0YUtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ2Nsb3NlJywge1xuICAgICAgb3JpZ2luYWxFdmVudDogb3JpZ2luYWxFdmVudCxcbiAgICAgIG9yaWdpbmFsU2VsZWN0MkV2ZW50OiBldnRcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gQ2xvc2VPblNlbGVjdDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vZHJvcGRvd25Dc3MnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIERyb3Bkb3duQ1NTICgpIHsgfVxuXG4gIERyb3Bkb3duQ1NTLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyICRkcm9wZG93biA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIGRyb3Bkb3duQ3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkcm9wZG93bkNzc0NsYXNzJykgfHwgJyc7XG5cbiAgICBpZiAoZHJvcGRvd25Dc3NDbGFzcy5pbmRleE9mKCc6YWxsOicpICE9PSAtMSkge1xuICAgICAgZHJvcGRvd25Dc3NDbGFzcyA9IGRyb3Bkb3duQ3NzQ2xhc3MucmVwbGFjZSgnOmFsbDonLCAnJyk7XG5cbiAgICAgIFV0aWxzLmNvcHlOb25JbnRlcm5hbENzc0NsYXNzZXMoJGRyb3Bkb3duWzBdLCB0aGlzLiRlbGVtZW50WzBdKTtcbiAgICB9XG5cbiAgICAkZHJvcGRvd24uYWRkQ2xhc3MoZHJvcGRvd25Dc3NDbGFzcyk7XG5cbiAgICByZXR1cm4gJGRyb3Bkb3duO1xuICB9O1xuXG4gIHJldHVybiBEcm9wZG93bkNTUztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vdGFnc1NlYXJjaEhpZ2hsaWdodCcsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gVGFnc1NlYXJjaEhpZ2hsaWdodCAoKSB7IH1cblxuICBUYWdzU2VhcmNoSGlnaGxpZ2h0LnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW0gPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kcmVzdWx0c1xuICAgIC5maW5kKFxuICAgICAgJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScgK1xuICAgICAgJzpub3QoLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCknXG4gICAgKTtcblxuICAgIGlmICgkb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgJGZpcnN0T3B0aW9uID0gJG9wdGlvbnMuZmlyc3QoKTtcbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkZmlyc3RPcHRpb25bMF0sICdkYXRhJyk7XG4gICAgICB2YXIgZmlyc3RFbGVtZW50ID0gZGF0YS5lbGVtZW50O1xuXG4gICAgICBpZiAoZmlyc3RFbGVtZW50ICYmIGZpcnN0RWxlbWVudC5nZXRBdHRyaWJ1dGUpIHtcbiAgICAgICAgaWYgKGZpcnN0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi10YWcnKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgJGZpcnN0T3B0aW9uLnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBUYWdzU2VhcmNoSGlnaGxpZ2h0O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9pMThuL2VuJyxbXSxmdW5jdGlvbiAoKSB7XG4gIC8vIEVuZ2xpc2hcbiAgcmV0dXJuIHtcbiAgICBlcnJvckxvYWRpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnVGhlIHJlc3VsdHMgY291bGQgbm90IGJlIGxvYWRlZC4nO1xuICAgIH0sXG4gICAgaW5wdXRUb29Mb25nOiBmdW5jdGlvbiAoYXJncykge1xuICAgICAgdmFyIG92ZXJDaGFycyA9IGFyZ3MuaW5wdXQubGVuZ3RoIC0gYXJncy5tYXhpbXVtO1xuXG4gICAgICB2YXIgbWVzc2FnZSA9ICdQbGVhc2UgZGVsZXRlICcgKyBvdmVyQ2hhcnMgKyAnIGNoYXJhY3Rlcic7XG5cbiAgICAgIGlmIChvdmVyQ2hhcnMgIT0gMSkge1xuICAgICAgICBtZXNzYWdlICs9ICdzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSxcbiAgICBpbnB1dFRvb1Nob3J0OiBmdW5jdGlvbiAoYXJncykge1xuICAgICAgdmFyIHJlbWFpbmluZ0NoYXJzID0gYXJncy5taW5pbXVtIC0gYXJncy5pbnB1dC5sZW5ndGg7XG5cbiAgICAgIHZhciBtZXNzYWdlID0gJ1BsZWFzZSBlbnRlciAnICsgcmVtYWluaW5nQ2hhcnMgKyAnIG9yIG1vcmUgY2hhcmFjdGVycyc7XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0sXG4gICAgbG9hZGluZ01vcmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnTG9hZGluZyBtb3JlIHJlc3VsdHPigKYnO1xuICAgIH0sXG4gICAgbWF4aW11bVNlbGVjdGVkOiBmdW5jdGlvbiAoYXJncykge1xuICAgICAgdmFyIG1lc3NhZ2UgPSAnWW91IGNhbiBvbmx5IHNlbGVjdCAnICsgYXJncy5tYXhpbXVtICsgJyBpdGVtJztcblxuICAgICAgaWYgKGFyZ3MubWF4aW11bSAhPSAxKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gJ3MnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuICAgIG5vUmVzdWx0czogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdObyByZXN1bHRzIGZvdW5kJztcbiAgICB9LFxuICAgIHNlYXJjaGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdTZWFyY2hpbmfigKYnO1xuICAgIH0sXG4gICAgcmVtb3ZlQWxsSXRlbXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnUmVtb3ZlIGFsbCBpdGVtcyc7XG4gICAgfSxcbiAgICByZW1vdmVJdGVtOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1JlbW92ZSBpdGVtJztcbiAgICB9LFxuICAgIHNlYXJjaDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gJ1NlYXJjaCc7XG4gICAgfVxuICB9O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kZWZhdWx0cycsW1xuICAnanF1ZXJ5JyxcblxuICAnLi9yZXN1bHRzJyxcblxuICAnLi9zZWxlY3Rpb24vc2luZ2xlJyxcbiAgJy4vc2VsZWN0aW9uL211bHRpcGxlJyxcbiAgJy4vc2VsZWN0aW9uL3BsYWNlaG9sZGVyJyxcbiAgJy4vc2VsZWN0aW9uL2FsbG93Q2xlYXInLFxuICAnLi9zZWxlY3Rpb24vc2VhcmNoJyxcbiAgJy4vc2VsZWN0aW9uL3NlbGVjdGlvbkNzcycsXG4gICcuL3NlbGVjdGlvbi9ldmVudFJlbGF5JyxcblxuICAnLi91dGlscycsXG4gICcuL3RyYW5zbGF0aW9uJyxcbiAgJy4vZGlhY3JpdGljcycsXG5cbiAgJy4vZGF0YS9zZWxlY3QnLFxuICAnLi9kYXRhL2FycmF5JyxcbiAgJy4vZGF0YS9hamF4JyxcbiAgJy4vZGF0YS90YWdzJyxcbiAgJy4vZGF0YS90b2tlbml6ZXInLFxuICAnLi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcsXG4gICcuL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoJyxcbiAgJy4vZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoJyxcblxuICAnLi9kcm9wZG93bicsXG4gICcuL2Ryb3Bkb3duL3NlYXJjaCcsXG4gICcuL2Ryb3Bkb3duL2hpZGVQbGFjZWhvbGRlcicsXG4gICcuL2Ryb3Bkb3duL2luZmluaXRlU2Nyb2xsJyxcbiAgJy4vZHJvcGRvd24vYXR0YWNoQm9keScsXG4gICcuL2Ryb3Bkb3duL21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyxcbiAgJy4vZHJvcGRvd24vc2VsZWN0T25DbG9zZScsXG4gICcuL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3QnLFxuICAnLi9kcm9wZG93bi9kcm9wZG93bkNzcycsXG4gICcuL2Ryb3Bkb3duL3RhZ3NTZWFyY2hIaWdobGlnaHQnLFxuXG4gICcuL2kxOG4vZW4nXG5dLCBmdW5jdGlvbiAoJCxcblxuICAgICAgICAgICAgIFJlc3VsdHNMaXN0LFxuXG4gICAgICAgICAgICAgU2luZ2xlU2VsZWN0aW9uLCBNdWx0aXBsZVNlbGVjdGlvbiwgUGxhY2Vob2xkZXIsIEFsbG93Q2xlYXIsXG4gICAgICAgICAgICAgU2VsZWN0aW9uU2VhcmNoLCBTZWxlY3Rpb25DU1MsIEV2ZW50UmVsYXksXG5cbiAgICAgICAgICAgICBVdGlscywgVHJhbnNsYXRpb24sIERJQUNSSVRJQ1MsXG5cbiAgICAgICAgICAgICBTZWxlY3REYXRhLCBBcnJheURhdGEsIEFqYXhEYXRhLCBUYWdzLCBUb2tlbml6ZXIsXG4gICAgICAgICAgICAgTWluaW11bUlucHV0TGVuZ3RoLCBNYXhpbXVtSW5wdXRMZW5ndGgsIE1heGltdW1TZWxlY3Rpb25MZW5ndGgsXG5cbiAgICAgICAgICAgICBEcm9wZG93biwgRHJvcGRvd25TZWFyY2gsIEhpZGVQbGFjZWhvbGRlciwgSW5maW5pdGVTY3JvbGwsXG4gICAgICAgICAgICAgQXR0YWNoQm9keSwgTWluaW11bVJlc3VsdHNGb3JTZWFyY2gsIFNlbGVjdE9uQ2xvc2UsIENsb3NlT25TZWxlY3QsXG4gICAgICAgICAgICAgRHJvcGRvd25DU1MsIFRhZ3NTZWFyY2hIaWdobGlnaHQsXG5cbiAgICAgICAgICAgICBFbmdsaXNoVHJhbnNsYXRpb24pIHtcbiAgZnVuY3Rpb24gRGVmYXVsdHMgKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLmRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIGlmIChvcHRpb25zLmRhdGFBZGFwdGVyID09IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmFqYXggIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gQWpheERhdGE7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBBcnJheURhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gU2VsZWN0RGF0YTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubWluaW11bUlucHV0TGVuZ3RoID4gMCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcbiAgICAgICAgICBNaW5pbXVtSW5wdXRMZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubWF4aW11bUlucHV0TGVuZ3RoID4gMCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcbiAgICAgICAgICBNYXhpbXVtSW5wdXRMZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWF4aW11bVNlbGVjdGlvbkxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy50YWdzKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShvcHRpb25zLmRhdGFBZGFwdGVyLCBUYWdzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudG9rZW5TZXBhcmF0b3JzICE9IG51bGwgfHwgb3B0aW9ucy50b2tlbml6ZXIgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcbiAgICAgICAgICBUb2tlbml6ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gUmVzdWx0c0xpc3Q7XG5cbiAgICAgIGlmIChvcHRpb25zLmFqYXggIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBJbmZpbml0ZVNjcm9sbFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyLFxuICAgICAgICAgIEhpZGVQbGFjZWhvbGRlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zZWxlY3RPbkNsb3NlKSB7XG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyLFxuICAgICAgICAgIFNlbGVjdE9uQ2xvc2VcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudGFncykge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBUYWdzU2VhcmNoSGlnaGxpZ2h0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID09IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gRHJvcGRvd247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgU2VhcmNoYWJsZURyb3Bkb3duID0gVXRpbHMuRGVjb3JhdGUoRHJvcGRvd24sIERyb3Bkb3duU2VhcmNoKTtcblxuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFNlYXJjaGFibGVEcm9wZG93bjtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggIT09IDApIHtcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcbiAgICAgICAgICBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgQ2xvc2VPblNlbGVjdFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5kcm9wZG93bkNzc0NsYXNzICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcbiAgICAgICAgICBEcm9wZG93bkNTU1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcbiAgICAgICAgQXR0YWNoQm9keVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID09IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IE11bHRpcGxlU2VsZWN0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gU2luZ2xlU2VsZWN0aW9uO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdGhlIHBsYWNlaG9sZGVyIG1peGluIGlmIGEgcGxhY2Vob2xkZXIgd2FzIHNwZWNpZmllZFxuICAgICAgaWYgKG9wdGlvbnMucGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXG4gICAgICAgICAgUGxhY2Vob2xkZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuYWxsb3dDbGVhcikge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXG4gICAgICAgICAgQWxsb3dDbGVhclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXG4gICAgICAgICAgU2VsZWN0aW9uU2VhcmNoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnNlbGVjdGlvbkNzc0NsYXNzICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFNlbGVjdGlvbkNTU1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICBFdmVudFJlbGF5XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkZWZhdWx0cyB3ZXJlIG5vdCBwcmV2aW91c2x5IGFwcGxpZWQgZnJvbSBhbiBlbGVtZW50LCBpdCBpc1xuICAgIC8vIHBvc3NpYmxlIGZvciB0aGUgbGFuZ3VhZ2Ugb3B0aW9uIHRvIGhhdmUgbm90IGJlZW4gcmVzb2x2ZWRcbiAgICBvcHRpb25zLmxhbmd1YWdlID0gdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG9wdGlvbnMubGFuZ3VhZ2UpO1xuXG4gICAgLy8gQWx3YXlzIGZhbGwgYmFjayB0byBFbmdsaXNoIHNpbmNlIGl0IHdpbGwgYWx3YXlzIGJlIGNvbXBsZXRlXG4gICAgb3B0aW9ucy5sYW5ndWFnZS5wdXNoKCdlbicpO1xuXG4gICAgdmFyIHVuaXF1ZUxhbmd1YWdlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgbCA9IDA7IGwgPCBvcHRpb25zLmxhbmd1YWdlLmxlbmd0aDsgbCsrKSB7XG4gICAgICB2YXIgbGFuZ3VhZ2UgPSBvcHRpb25zLmxhbmd1YWdlW2xdO1xuXG4gICAgICBpZiAodW5pcXVlTGFuZ3VhZ2VzLmluZGV4T2YobGFuZ3VhZ2UpID09PSAtMSkge1xuICAgICAgICB1bmlxdWVMYW5ndWFnZXMucHVzaChsYW5ndWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb3B0aW9ucy5sYW5ndWFnZSA9IHVuaXF1ZUxhbmd1YWdlcztcblxuICAgIG9wdGlvbnMudHJhbnNsYXRpb25zID0gdGhpcy5fcHJvY2Vzc1RyYW5zbGF0aW9ucyhcbiAgICAgIG9wdGlvbnMubGFuZ3VhZ2UsXG4gICAgICBvcHRpb25zLmRlYnVnXG4gICAgKTtcblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBzdHJpcERpYWNyaXRpY3MgKHRleHQpIHtcbiAgICAgIC8vIFVzZWQgJ3VuaSByYW5nZSArIG5hbWVkIGZ1bmN0aW9uJyBmcm9tIGh0dHA6Ly9qc3BlcmYuY29tL2RpYWNyaXRpY3MvMThcbiAgICAgIGZ1bmN0aW9uIG1hdGNoKGEpIHtcbiAgICAgICAgcmV0dXJuIERJQUNSSVRJQ1NbYV0gfHwgYTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN0VdL2csIG1hdGNoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaGVyIChwYXJhbXMsIGRhdGEpIHtcbiAgICAgIC8vIEFsd2F5cyByZXR1cm4gdGhlIG9iamVjdCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBhcmVcbiAgICAgIGlmIChwYXJhbXMudGVybSA9PSBudWxsIHx8IHBhcmFtcy50ZXJtLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIGEgcmVjdXJzaXZlIGNoZWNrIGZvciBvcHRpb25zIHdpdGggY2hpbGRyZW5cbiAgICAgIGlmIChkYXRhLmNoaWxkcmVuICYmIGRhdGEuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBDbG9uZSB0aGUgZGF0YSBvYmplY3QgaWYgdGhlcmUgYXJlIGNoaWxkcmVuXG4gICAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgYXMgd2UgbW9kaWZ5IHRoZSBvYmplY3QgdG8gcmVtb3ZlIGFueSBub24tbWF0Y2hlc1xuICAgICAgICB2YXIgbWF0Y2ggPSAkLmV4dGVuZCh0cnVlLCB7fSwgZGF0YSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZWFjaCBjaGlsZCBvZiB0aGUgb3B0aW9uXG4gICAgICAgIGZvciAodmFyIGMgPSBkYXRhLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGMgPj0gMDsgYy0tKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gZGF0YS5jaGlsZHJlbltjXTtcblxuICAgICAgICAgIHZhciBtYXRjaGVzID0gbWF0Y2hlcihwYXJhbXMsIGNoaWxkKTtcblxuICAgICAgICAgIC8vIElmIHRoZXJlIHdhc24ndCBhIG1hdGNoLCByZW1vdmUgdGhlIG9iamVjdCBpbiB0aGUgYXJyYXlcbiAgICAgICAgICBpZiAobWF0Y2hlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBtYXRjaC5jaGlsZHJlbi5zcGxpY2UoYywgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgYW55IGNoaWxkcmVuIG1hdGNoZWQsIHJldHVybiB0aGUgbmV3IG9iamVjdFxuICAgICAgICBpZiAobWF0Y2guY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIHdlcmUgbm8gbWF0Y2hpbmcgY2hpbGRyZW4sIGNoZWNrIGp1c3QgdGhlIHBsYWluIG9iamVjdFxuICAgICAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIG1hdGNoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG9yaWdpbmFsID0gc3RyaXBEaWFjcml0aWNzKGRhdGEudGV4dCkudG9VcHBlckNhc2UoKTtcbiAgICAgIHZhciB0ZXJtID0gc3RyaXBEaWFjcml0aWNzKHBhcmFtcy50ZXJtKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgdGV4dCBjb250YWlucyB0aGUgdGVybVxuICAgICAgaWYgKG9yaWdpbmFsLmluZGV4T2YodGVybSkgPiAtMSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgaXQgZG9lc24ndCBjb250YWluIHRoZSB0ZXJtLCBkb24ndCByZXR1cm4gYW55dGhpbmdcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuZGVmYXVsdHMgPSB7XG4gICAgICBhbWRMYW5ndWFnZUJhc2U6ICcuL2kxOG4vJyxcbiAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgICAgZHJvcGRvd25BdXRvV2lkdGg6IGZhbHNlLFxuICAgICAgZXNjYXBlTWFya3VwOiBVdGlscy5lc2NhcGVNYXJrdXAsXG4gICAgICBsYW5ndWFnZToge30sXG4gICAgICBtYXRjaGVyOiBtYXRjaGVyLFxuICAgICAgbWluaW11bUlucHV0TGVuZ3RoOiAwLFxuICAgICAgbWF4aW11bUlucHV0TGVuZ3RoOiAwLFxuICAgICAgbWF4aW11bVNlbGVjdGlvbkxlbmd0aDogMCxcbiAgICAgIG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOiAwLFxuICAgICAgc2VsZWN0T25DbG9zZTogZmFsc2UsXG4gICAgICBzY3JvbGxBZnRlclNlbGVjdDogZmFsc2UsXG4gICAgICBzb3J0ZXI6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlUmVzdWx0OiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQudGV4dDtcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uLnRleHQ7XG4gICAgICB9LFxuICAgICAgdGhlbWU6ICdkZWZhdWx0JyxcbiAgICAgIHdpZHRoOiAncmVzb2x2ZSdcbiAgICB9O1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5hcHBseUZyb21FbGVtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMsICRlbGVtZW50KSB7XG4gICAgdmFyIG9wdGlvbkxhbmd1YWdlID0gb3B0aW9ucy5sYW5ndWFnZTtcbiAgICB2YXIgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5kZWZhdWx0cy5sYW5ndWFnZTtcbiAgICB2YXIgZWxlbWVudExhbmd1YWdlID0gJGVsZW1lbnQucHJvcCgnbGFuZycpO1xuICAgIHZhciBwYXJlbnRMYW5ndWFnZSA9ICRlbGVtZW50LmNsb3Nlc3QoJ1tsYW5nXScpLnByb3AoJ2xhbmcnKTtcblxuICAgIHZhciBsYW5ndWFnZXMgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UoZWxlbWVudExhbmd1YWdlKSxcbiAgICAgIHRoaXMuX3Jlc29sdmVMYW5ndWFnZShvcHRpb25MYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UoZGVmYXVsdExhbmd1YWdlKSxcbiAgICAgIHRoaXMuX3Jlc29sdmVMYW5ndWFnZShwYXJlbnRMYW5ndWFnZSlcbiAgICApO1xuXG4gICAgb3B0aW9ucy5sYW5ndWFnZSA9IGxhbmd1YWdlcztcblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5fcmVzb2x2ZUxhbmd1YWdlID0gZnVuY3Rpb24gKGxhbmd1YWdlKSB7XG4gICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICgkLmlzRW1wdHlPYmplY3QobGFuZ3VhZ2UpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCQuaXNQbGFpbk9iamVjdChsYW5ndWFnZSkpIHtcbiAgICAgIHJldHVybiBbbGFuZ3VhZ2VdO1xuICAgIH1cblxuICAgIHZhciBsYW5ndWFnZXM7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobGFuZ3VhZ2UpKSB7XG4gICAgICBsYW5ndWFnZXMgPSBbbGFuZ3VhZ2VdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZTtcbiAgICB9XG5cbiAgICB2YXIgcmVzb2x2ZWRMYW5ndWFnZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGFuZ3VhZ2VzLmxlbmd0aDsgbCsrKSB7XG4gICAgICByZXNvbHZlZExhbmd1YWdlcy5wdXNoKGxhbmd1YWdlc1tsXSk7XG5cbiAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2VzW2xdID09PSAnc3RyaW5nJyAmJiBsYW5ndWFnZXNbbF0uaW5kZXhPZignLScpID4gMCkge1xuICAgICAgICAvLyBFeHRyYWN0IHRoZSByZWdpb24gaW5mb3JtYXRpb24gaWYgaXQgaXMgaW5jbHVkZWRcbiAgICAgICAgdmFyIGxhbmd1YWdlUGFydHMgPSBsYW5ndWFnZXNbbF0uc3BsaXQoJy0nKTtcbiAgICAgICAgdmFyIGJhc2VMYW5ndWFnZSA9IGxhbmd1YWdlUGFydHNbMF07XG5cbiAgICAgICAgcmVzb2x2ZWRMYW5ndWFnZXMucHVzaChiYXNlTGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZExhbmd1YWdlcztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuX3Byb2Nlc3NUcmFuc2xhdGlvbnMgPSBmdW5jdGlvbiAobGFuZ3VhZ2VzLCBkZWJ1Zykge1xuICAgIHZhciB0cmFuc2xhdGlvbnMgPSBuZXcgVHJhbnNsYXRpb24oKTtcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGFuZ3VhZ2VzLmxlbmd0aDsgbCsrKSB7XG4gICAgICB2YXIgbGFuZ3VhZ2VEYXRhID0gbmV3IFRyYW5zbGF0aW9uKCk7XG5cbiAgICAgIHZhciBsYW5ndWFnZSA9IGxhbmd1YWdlc1tsXTtcblxuICAgICAgaWYgKHR5cGVvZiBsYW5ndWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUcnkgdG8gbG9hZCBpdCB3aXRoIHRoZSBvcmlnaW5hbCBuYW1lXG4gICAgICAgICAgbGFuZ3VhZ2VEYXRhID0gVHJhbnNsYXRpb24ubG9hZFBhdGgobGFuZ3VhZ2UpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIElmIHdlIGNvdWxkbid0IGxvYWQgaXQsIGNoZWNrIGlmIGl0IHdhc24ndCB0aGUgZnVsbCBwYXRoXG4gICAgICAgICAgICBsYW5ndWFnZSA9IHRoaXMuZGVmYXVsdHMuYW1kTGFuZ3VhZ2VCYXNlICsgbGFuZ3VhZ2U7XG4gICAgICAgICAgICBsYW5ndWFnZURhdGEgPSBUcmFuc2xhdGlvbi5sb2FkUGF0aChsYW5ndWFnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIC8vIFRoZSB0cmFuc2xhdGlvbiBjb3VsZCBub3QgYmUgbG9hZGVkIGF0IGFsbC4gU29tZXRpbWVzIHRoaXMgaXNcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugb2YgYSBjb25maWd1cmF0aW9uIHByb2JsZW0sIG90aGVyIHRpbWVzIHRoaXMgY2FuIGJlXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG9mIGhvdyBTZWxlY3QyIGhlbHBzIGxvYWQgYWxsIHBvc3NpYmxlIHRyYW5zbGF0aW9uIGZpbGVzXG4gICAgICAgICAgICBpZiAoZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnU2VsZWN0MjogVGhlIGxhbmd1YWdlIGZpbGUgZm9yIFwiJyArIGxhbmd1YWdlICsgJ1wiIGNvdWxkICcgK1xuICAgICAgICAgICAgICAgICdub3QgYmUgYXV0b21hdGljYWxseSBsb2FkZWQuIEEgZmFsbGJhY2sgd2lsbCBiZSB1c2VkIGluc3RlYWQuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgkLmlzUGxhaW5PYmplY3QobGFuZ3VhZ2UpKSB7XG4gICAgICAgIGxhbmd1YWdlRGF0YSA9IG5ldyBUcmFuc2xhdGlvbihsYW5ndWFnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYW5ndWFnZURhdGEgPSBsYW5ndWFnZTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNsYXRpb25zLmV4dGVuZChsYW5ndWFnZURhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGNhbWVsS2V5ID0gJC5jYW1lbENhc2Uoa2V5KTtcblxuICAgIHZhciBkYXRhID0ge307XG4gICAgZGF0YVtjYW1lbEtleV0gPSB2YWx1ZTtcblxuICAgIHZhciBjb252ZXJ0ZWREYXRhID0gVXRpbHMuX2NvbnZlcnREYXRhKGRhdGEpO1xuXG4gICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5kZWZhdWx0cywgY29udmVydGVkRGF0YSk7XG4gIH07XG5cbiAgdmFyIGRlZmF1bHRzID0gbmV3IERlZmF1bHRzKCk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9vcHRpb25zJyxbXG4gICdqcXVlcnknLFxuICAnLi9kZWZhdWx0cycsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIERlZmF1bHRzLCBVdGlscykge1xuICBmdW5jdGlvbiBPcHRpb25zIChvcHRpb25zLCAkZWxlbWVudCkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBpZiAoJGVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mcm9tRWxlbWVudCgkZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKCRlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IERlZmF1bHRzLmFwcGx5RnJvbUVsZW1lbnQodGhpcy5vcHRpb25zLCAkZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gRGVmYXVsdHMuYXBwbHkodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIE9wdGlvbnMucHJvdG90eXBlLmZyb21FbGVtZW50ID0gZnVuY3Rpb24gKCRlKSB7XG4gICAgdmFyIGV4Y2x1ZGVkRGF0YSA9IFsnc2VsZWN0MiddO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubXVsdGlwbGUgPSAkZS5wcm9wKCdtdWx0aXBsZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gJGUucHJvcCgnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZSA9PSBudWxsICYmICRlLnByb3AoJ2F1dG9jb21wbGV0ZScpKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlID0gJGUucHJvcCgnYXV0b2NvbXBsZXRlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXIgPT0gbnVsbCkge1xuICAgICAgaWYgKCRlLnByb3AoJ2RpcicpKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXIgPSAkZS5wcm9wKCdkaXInKTtcbiAgICAgIH0gZWxzZSBpZiAoJGUuY2xvc2VzdCgnW2Rpcl0nKS5wcm9wKCdkaXInKSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJGUuY2xvc2VzdCgnW2Rpcl0nKS5wcm9wKCdkaXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXIgPSAnbHRyJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkZS5wcm9wKCdkaXNhYmxlZCcsIHRoaXMub3B0aW9ucy5kaXNhYmxlZCk7XG4gICAgJGUucHJvcCgnbXVsdGlwbGUnLCB0aGlzLm9wdGlvbnMubXVsdGlwbGUpO1xuXG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVbMF0sICdzZWxlY3QyVGFncycpKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1NlbGVjdDI6IFRoZSBgZGF0YS1zZWxlY3QyLXRhZ3NgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvICcgK1xuICAgICAgICAgICd1c2UgdGhlIGBkYXRhLWRhdGFgIGFuZCBgZGF0YS10YWdzPVwidHJ1ZVwiYCBhdHRyaWJ1dGVzIGFuZCB3aWxsIGJlICcgK1xuICAgICAgICAgICdyZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTZWxlY3QyLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRlWzBdLCAnZGF0YScsIFV0aWxzLkdldERhdGEoJGVbMF0sICdzZWxlY3QyVGFncycpKTtcbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkZVswXSwgJ3RhZ3MnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbHMuR2V0RGF0YSgkZVswXSwgJ2FqYXhVcmwnKSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGRhdGEtYWpheC11cmxgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvICcgK1xuICAgICAgICAgICdgZGF0YS1hamF4LS11cmxgIGFuZCBzdXBwb3J0IGZvciB0aGUgb2xkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQnICtcbiAgICAgICAgICAnIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTZWxlY3QyLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgJGUuYXR0cignYWpheC0tdXJsJywgVXRpbHMuR2V0RGF0YSgkZVswXSwgJ2FqYXhVcmwnKSk7XG4gICAgICBVdGlscy5TdG9yZURhdGEoJGVbMF0sICdhamF4LVVybCcsIFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpO1xuICAgIH1cblxuICAgIHZhciBkYXRhc2V0ID0ge307XG5cbiAgICBmdW5jdGlvbiB1cHBlckNhc2VMZXR0ZXIoXywgbGV0dGVyKSB7XG4gICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gUHJlLWxvYWQgYWxsIG9mIHRoZSBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBwcmVmaXhlZCB3aXRoIGBkYXRhLWBcbiAgICBmb3IgKHZhciBhdHRyID0gMDsgYXR0ciA8ICRlWzBdLmF0dHJpYnV0ZXMubGVuZ3RoOyBhdHRyKyspIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gJGVbMF0uYXR0cmlidXRlc1thdHRyXS5uYW1lO1xuICAgICAgdmFyIHByZWZpeCA9ICdkYXRhLSc7XG5cbiAgICAgIGlmIChhdHRyaWJ1dGVOYW1lLnN1YnN0cigwLCBwcmVmaXgubGVuZ3RoKSA9PSBwcmVmaXgpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0aGUgYXR0cmlidXRlIGFmdGVyIGBkYXRhLWBcbiAgICAgICAgdmFyIGRhdGFOYW1lID0gYXR0cmlidXRlTmFtZS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBkYXRhIGNvbnRlbnRzIGZyb20gdGhlIGNvbnNpc3RlbnQgc291cmNlXG4gICAgICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2VseSB0aGUgalF1ZXJ5IGRhdGEgaGVscGVyXG4gICAgICAgIHZhciBkYXRhVmFsdWUgPSBVdGlscy5HZXREYXRhKCRlWzBdLCBkYXRhTmFtZSk7XG5cbiAgICAgICAgLy8gY2FtZWxDYXNlIHRoZSBhdHRyaWJ1dGUgbmFtZSB0byBtYXRjaCB0aGUgc3BlY1xuICAgICAgICB2YXIgY2FtZWxEYXRhTmFtZSA9IGRhdGFOYW1lLnJlcGxhY2UoLy0oW2Etel0pL2csIHVwcGVyQ2FzZUxldHRlcik7XG5cbiAgICAgICAgLy8gU3RvcmUgdGhlIGRhdGEgYXR0cmlidXRlIGNvbnRlbnRzIGludG8gdGhlIGRhdGFzZXQgc2luY2VcbiAgICAgICAgZGF0YXNldFtjYW1lbERhdGFOYW1lXSA9IGRhdGFWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcmVmZXIgdGhlIGVsZW1lbnQncyBgZGF0YXNldGAgYXR0cmlidXRlIGlmIGl0IGV4aXN0c1xuICAgIC8vIGpRdWVyeSAxLnggZG9lcyBub3QgY29ycmVjdGx5IGhhbmRsZSBkYXRhIGF0dHJpYnV0ZXMgd2l0aCBtdWx0aXBsZSBkYXNoZXNcbiAgICBpZiAoJC5mbi5qcXVlcnkgJiYgJC5mbi5qcXVlcnkuc3Vic3RyKDAsIDIpID09ICcxLicgJiYgJGVbMF0uZGF0YXNldCkge1xuICAgICAgZGF0YXNldCA9ICQuZXh0ZW5kKHRydWUsIHt9LCAkZVswXS5kYXRhc2V0LCBkYXRhc2V0KTtcbiAgICB9XG5cbiAgICAvLyBQcmVmZXIgb3VyIGludGVybmFsIGRhdGEgY2FjaGUgaWYgaXQgZXhpc3RzXG4gICAgdmFyIGRhdGEgPSAkLmV4dGVuZCh0cnVlLCB7fSwgVXRpbHMuR2V0RGF0YSgkZVswXSksIGRhdGFzZXQpO1xuXG4gICAgZGF0YSA9IFV0aWxzLl9jb252ZXJ0RGF0YShkYXRhKTtcblxuICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoZXhjbHVkZWREYXRhLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoJC5pc1BsYWluT2JqZWN0KHRoaXMub3B0aW9uc1trZXldKSkge1xuICAgICAgICAkLmV4dGVuZCh0aGlzLm9wdGlvbnNba2V5XSwgZGF0YVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9uc1trZXldID0gZGF0YVtrZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE9wdGlvbnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW2tleV07XG4gIH07XG5cbiAgT3B0aW9ucy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsKSB7XG4gICAgdGhpcy5vcHRpb25zW2tleV0gPSB2YWw7XG4gIH07XG5cbiAgcmV0dXJuIE9wdGlvbnM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2NvcmUnLFtcbiAgJ2pxdWVyeScsXG4gICcuL29wdGlvbnMnLFxuICAnLi91dGlscycsXG4gICcuL2tleXMnXG5dLCBmdW5jdGlvbiAoJCwgT3B0aW9ucywgVXRpbHMsIEtFWVMpIHtcbiAgdmFyIFNlbGVjdDIgPSBmdW5jdGlvbiAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBpZiAoVXRpbHMuR2V0RGF0YSgkZWxlbWVudFswXSwgJ3NlbGVjdDInKSAhPSBudWxsKSB7XG4gICAgICBVdGlscy5HZXREYXRhKCRlbGVtZW50WzBdLCAnc2VsZWN0MicpLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50ID0gJGVsZW1lbnQ7XG5cbiAgICB0aGlzLmlkID0gdGhpcy5fZ2VuZXJhdGVJZCgkZWxlbWVudCk7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMub3B0aW9ucyA9IG5ldyBPcHRpb25zKG9wdGlvbnMsICRlbGVtZW50KTtcblxuICAgIFNlbGVjdDIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG5cbiAgICAvLyBTZXQgdXAgdGhlIHRhYmluZGV4XG5cbiAgICB2YXIgdGFiaW5kZXggPSAkZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpIHx8IDA7XG4gICAgVXRpbHMuU3RvcmVEYXRhKCRlbGVtZW50WzBdLCAnb2xkLXRhYmluZGV4JywgdGFiaW5kZXgpO1xuICAgICRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgICAvLyBTZXQgdXAgY29udGFpbmVycyBhbmQgYWRhcHRlcnNcblxuICAgIHZhciBEYXRhQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ2RhdGFBZGFwdGVyJyk7XG4gICAgdGhpcy5kYXRhQWRhcHRlciA9IG5ldyBEYXRhQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIHZhciAkY29udGFpbmVyID0gdGhpcy5yZW5kZXIoKTtcblxuICAgIHRoaXMuX3BsYWNlQ29udGFpbmVyKCRjb250YWluZXIpO1xuXG4gICAgdmFyIFNlbGVjdGlvbkFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdzZWxlY3Rpb25BZGFwdGVyJyk7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5yZW5kZXIoKTtcblxuICAgIHRoaXMuc2VsZWN0aW9uLnBvc2l0aW9uKHRoaXMuJHNlbGVjdGlvbiwgJGNvbnRhaW5lcik7XG5cbiAgICB2YXIgRHJvcGRvd25BZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BZGFwdGVyJyk7XG4gICAgdGhpcy5kcm9wZG93biA9IG5ldyBEcm9wZG93bkFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy4kZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLnJlbmRlcigpO1xuXG4gICAgdGhpcy5kcm9wZG93bi5wb3NpdGlvbih0aGlzLiRkcm9wZG93biwgJGNvbnRhaW5lcik7XG5cbiAgICB2YXIgUmVzdWx0c0FkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdyZXN1bHRzQWRhcHRlcicpO1xuICAgIHRoaXMucmVzdWx0cyA9IG5ldyBSZXN1bHRzQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zLCB0aGlzLmRhdGFBZGFwdGVyKTtcbiAgICB0aGlzLiRyZXN1bHRzID0gdGhpcy5yZXN1bHRzLnJlbmRlcigpO1xuXG4gICAgdGhpcy5yZXN1bHRzLnBvc2l0aW9uKHRoaXMuJHJlc3VsdHMsIHRoaXMuJGRyb3Bkb3duKTtcblxuICAgIC8vIEJpbmQgZXZlbnRzXG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBCaW5kIHRoZSBjb250YWluZXIgdG8gYWxsIG9mIHRoZSBhZGFwdGVyc1xuICAgIHRoaXMuX2JpbmRBZGFwdGVycygpO1xuXG4gICAgLy8gUmVnaXN0ZXIgYW55IERPTSBldmVudCBoYW5kbGVyc1xuICAgIHRoaXMuX3JlZ2lzdGVyRG9tRXZlbnRzKCk7XG5cbiAgICAvLyBSZWdpc3RlciBhbnkgaW50ZXJuYWwgZXZlbnQgaGFuZGxlcnNcbiAgICB0aGlzLl9yZWdpc3RlckRhdGFFdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cygpO1xuICAgIHRoaXMuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlclJlc3VsdHNFdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlckV2ZW50cygpO1xuXG4gICAgLy8gU2V0IHRoZSBpbml0aWFsIHN0YXRlXG4gICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChpbml0aWFsRGF0YSkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3Rpb246dXBkYXRlJywge1xuICAgICAgICBkYXRhOiBpbml0aWFsRGF0YVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBIaWRlIHRoZSBvcmlnaW5hbCBzZWxlY3RcbiAgICAkZWxlbWVudFswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlJyk7XG4gICAgJGVsZW1lbnQuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXG4gICAgLy8gU3luY2hyb25pemUgYW55IG1vbml0b3JlZCBhdHRyaWJ1dGVzXG4gICAgdGhpcy5fc3luY0F0dHJpYnV0ZXMoKTtcblxuICAgIFV0aWxzLlN0b3JlRGF0YSgkZWxlbWVudFswXSwgJ3NlbGVjdDInLCB0aGlzKTtcblxuICAgIC8vIEVuc3VyZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoICRlbGVtZW50LmRhdGEoJ3NlbGVjdDInKS5cbiAgICAkZWxlbWVudC5kYXRhKCdzZWxlY3QyJywgdGhpcyk7XG4gIH07XG5cbiAgVXRpbHMuRXh0ZW5kKFNlbGVjdDIsIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9nZW5lcmF0ZUlkID0gZnVuY3Rpb24gKCRlbGVtZW50KSB7XG4gICAgdmFyIGlkID0gJyc7XG5cbiAgICBpZiAoJGVsZW1lbnQuYXR0cignaWQnKSAhPSBudWxsKSB7XG4gICAgICBpZCA9ICRlbGVtZW50LmF0dHIoJ2lkJyk7XG4gICAgfSBlbHNlIGlmICgkZWxlbWVudC5hdHRyKCduYW1lJykgIT0gbnVsbCkge1xuICAgICAgaWQgPSAkZWxlbWVudC5hdHRyKCduYW1lJykgKyAnLScgKyBVdGlscy5nZW5lcmF0ZUNoYXJzKDIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCA9IFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgfVxuXG4gICAgaWQgPSBpZC5yZXBsYWNlKC8oOnxcXC58XFxbfFxcXXwsKS9nLCAnJyk7XG4gICAgaWQgPSAnc2VsZWN0Mi0nICsgaWQ7XG5cbiAgICByZXR1cm4gaWQ7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3BsYWNlQ29udGFpbmVyID0gZnVuY3Rpb24gKCRjb250YWluZXIpIHtcbiAgICAkY29udGFpbmVyLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgdmFyIHdpZHRoID0gdGhpcy5fcmVzb2x2ZVdpZHRoKHRoaXMuJGVsZW1lbnQsIHRoaXMub3B0aW9ucy5nZXQoJ3dpZHRoJykpO1xuXG4gICAgaWYgKHdpZHRoICE9IG51bGwpIHtcbiAgICAgICRjb250YWluZXIuY3NzKCd3aWR0aCcsIHdpZHRoKTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3Jlc29sdmVXaWR0aCA9IGZ1bmN0aW9uICgkZWxlbWVudCwgbWV0aG9kKSB7XG4gICAgdmFyIFdJRFRIID0gL153aWR0aDooKFstK10/KFswLTldKlxcLik/WzAtOV0rKShweHxlbXxleHwlfGlufGNtfG1tfHB0fHBjKSkvaTtcblxuICAgIGlmIChtZXRob2QgPT0gJ3Jlc29sdmUnKSB7XG4gICAgICB2YXIgc3R5bGVXaWR0aCA9IHRoaXMuX3Jlc29sdmVXaWR0aCgkZWxlbWVudCwgJ3N0eWxlJyk7XG5cbiAgICAgIGlmIChzdHlsZVdpZHRoICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN0eWxlV2lkdGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlV2lkdGgoJGVsZW1lbnQsICdlbGVtZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGhvZCA9PSAnZWxlbWVudCcpIHtcbiAgICAgIHZhciBlbGVtZW50V2lkdGggPSAkZWxlbWVudC5vdXRlcldpZHRoKGZhbHNlKTtcblxuICAgICAgaWYgKGVsZW1lbnRXaWR0aCA8PSAwKSB7XG4gICAgICAgIHJldHVybiAnYXV0byc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50V2lkdGggKyAncHgnO1xuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT0gJ3N0eWxlJykge1xuICAgICAgdmFyIHN0eWxlID0gJGVsZW1lbnQuYXR0cignc3R5bGUnKTtcblxuICAgICAgaWYgKHR5cGVvZihzdHlsZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXR0cnMgPSBzdHlsZS5zcGxpdCgnOycpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkgPSBpICsgMSkge1xuICAgICAgICB2YXIgYXR0ciA9IGF0dHJzW2ldLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgICAgIHZhciBtYXRjaGVzID0gYXR0ci5tYXRjaChXSURUSCk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwgJiYgbWF0Y2hlcy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIHJldHVybiBtYXRjaGVzWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT0gJ2NvbXB1dGVkc3R5bGUnKSB7XG4gICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCRlbGVtZW50WzBdKTtcblxuICAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUud2lkdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGhvZDtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fYmluZEFkYXB0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGF0YUFkYXB0ZXIuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcblxuICAgIHRoaXMuZHJvcGRvd24uYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuICAgIHRoaXMucmVzdWx0cy5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRG9tRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuJGVsZW1lbnQub24oJ2NoYW5nZS5zZWxlY3QyJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdmb2N1cy5zZWxlY3QyJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdmb2N1cycsIGV2dCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zeW5jQSA9IFV0aWxzLmJpbmQodGhpcy5fc3luY0F0dHJpYnV0ZXMsIHRoaXMpO1xuICAgIHRoaXMuX3N5bmNTID0gVXRpbHMuYmluZCh0aGlzLl9zeW5jU3VidHJlZSwgdGhpcyk7XG5cbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgICBzZWxmLl9zeW5jQSgpO1xuICAgICAgc2VsZi5fc3luY1MobXV0YXRpb25zKTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0sIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckRhdGFFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlci5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIG5vblJlbGF5RXZlbnRzID0gWyd0b2dnbGUnLCAnZm9jdXMnXTtcblxuICAgIHRoaXMuc2VsZWN0aW9uLm9uKCd0b2dnbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5vbignZm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmZvY3VzKHBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIGlmIChub25SZWxheUV2ZW50cy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZHJvcGRvd24ub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMucmVzdWx0cy5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS1vcGVuJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignZW5hYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdxdWVyeScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmICghc2VsZi5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ29wZW4nLCB7fSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0YUFkYXB0ZXIucXVlcnkocGFyYW1zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6YWxsJywge1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgdGhpcy5kYXRhQWRhcHRlci5xdWVyeShwYXJhbXMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czphcHBlbmQnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBxdWVyeTogcGFyYW1zXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdrZXlwcmVzcycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XG5cbiAgICAgIGlmIChzZWxmLmlzT3BlbigpKSB7XG4gICAgICAgIGlmIChrZXkgPT09IEtFWVMuRVNDIHx8IChrZXkgPT09IEtFWVMuVVAgJiYgZXZ0LmFsdEtleSkpIHtcbiAgICAgICAgICBzZWxmLmNsb3NlKGV2dCk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWVMuRU5URVIgfHwga2V5ID09PSBLRVlTLlRBQikge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpzZWxlY3QnLCB7fSk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgoa2V5ID09PSBLRVlTLlNQQUNFICYmIGV2dC5jdHJsS2V5KSkge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czp0b2dnbGUnLCB7fSk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWVMuVVApIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6cHJldmlvdXMnLCB7fSk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWVMuRE9XTikge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpuZXh0Jywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChrZXkgPT09IEtFWVMuRU5URVIgfHwga2V5ID09PSBLRVlTLlNQQUNFIHx8XG4gICAgICAgICAgICAoa2V5ID09PSBLRVlTLkRPV04gJiYgZXZ0LmFsdEtleSkpIHtcbiAgICAgICAgICBzZWxmLm9wZW4oKTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3N5bmNBdHRyaWJ1dGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMub3B0aW9ucy5zZXQoJ2Rpc2FibGVkJywgdGhpcy4kZWxlbWVudC5wcm9wKCdkaXNhYmxlZCcpKTtcblxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRyaWdnZXIoJ2Rpc2FibGUnLCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJpZ2dlcignZW5hYmxlJywge30pO1xuICAgIH1cbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5faXNDaGFuZ2VNdXRhdGlvbiA9IGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAobXV0YXRpb25zLmFkZGVkTm9kZXMgJiYgbXV0YXRpb25zLmFkZGVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBtdXRhdGlvbnMuYWRkZWROb2Rlcy5sZW5ndGg7IG4rKykge1xuICAgICAgICB2YXIgbm9kZSA9IG11dGF0aW9ucy5hZGRlZE5vZGVzW25dO1xuXG4gICAgICAgIGlmIChub2RlLnNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG11dGF0aW9ucy5yZW1vdmVkTm9kZXMgJiYgbXV0YXRpb25zLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobXV0YXRpb25zKSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9ucy5zb21lKGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgICAgICByZXR1cm4gc2VsZi5faXNDaGFuZ2VNdXRhdGlvbihtdXRhdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3N5bmNTdWJ0cmVlID0gZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgIHZhciBjaGFuZ2VkID0gdGhpcy5faXNDaGFuZ2VNdXRhdGlvbihtdXRhdGlvbnMpO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIC8vIE9ubHkgcmUtcHVsbCB0aGUgZGF0YSBpZiB3ZSB0aGluayB0aGVyZSBpcyBhIGNoYW5nZVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcbiAgICAgICAgICBkYXRhOiBjdXJyZW50RGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRyaWdnZXIgbWV0aG9kIHRvIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciBwcmUtZXZlbnRzIHdoZW5cbiAgICogdGhlcmUgYXJlIGV2ZW50cyB0aGF0IGNhbiBiZSBwcmV2ZW50ZWQuXG4gICAqL1xuICBTZWxlY3QyLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKG5hbWUsIGFyZ3MpIHtcbiAgICB2YXIgYWN0dWFsVHJpZ2dlciA9IFNlbGVjdDIuX19zdXBlcl9fLnRyaWdnZXI7XG4gICAgdmFyIHByZVRyaWdnZXJNYXAgPSB7XG4gICAgICAnb3Blbic6ICdvcGVuaW5nJyxcbiAgICAgICdjbG9zZSc6ICdjbG9zaW5nJyxcbiAgICAgICdzZWxlY3QnOiAnc2VsZWN0aW5nJyxcbiAgICAgICd1bnNlbGVjdCc6ICd1bnNlbGVjdGluZycsXG4gICAgICAnY2xlYXInOiAnY2xlYXJpbmcnXG4gICAgfTtcblxuICAgIGlmIChhcmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyZ3MgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAobmFtZSBpbiBwcmVUcmlnZ2VyTWFwKSB7XG4gICAgICB2YXIgcHJlVHJpZ2dlck5hbWUgPSBwcmVUcmlnZ2VyTWFwW25hbWVdO1xuICAgICAgdmFyIHByZVRyaWdnZXJBcmdzID0ge1xuICAgICAgICBwcmV2ZW50ZWQ6IGZhbHNlLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBhcmdzOiBhcmdzXG4gICAgICB9O1xuXG4gICAgICBhY3R1YWxUcmlnZ2VyLmNhbGwodGhpcywgcHJlVHJpZ2dlck5hbWUsIHByZVRyaWdnZXJBcmdzKTtcblxuICAgICAgaWYgKHByZVRyaWdnZXJBcmdzLnByZXZlbnRlZCkge1xuICAgICAgICBhcmdzLnByZXZlbnRlZCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFjdHVhbFRyaWdnZXIuY2FsbCh0aGlzLCBuYW1lLCBhcmdzKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcigncXVlcnknLCB7fSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdjbG9zZScsIHsgb3JpZ2luYWxFdmVudCA6IGV2dCB9KTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJlbmFibGVkXCIgKG5vdCBcImRpc2FibGVkXCIpIHN0YXRlIG9mIHRoaXNcbiAgICogb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgaW5zdGFuY2UgaXMgbm90IGRpc2FibGVkLlxuICAgKiBAcmV0dXJuIHtmYWxzZX0gaWYgdGhlIGluc3RhbmNlIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgU2VsZWN0Mi5wcm90b3R5cGUuaXNFbmFibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhdGhpcy5pc0Rpc2FibGVkKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZGlzYWJsZWRcIiBzdGF0ZSBvZiB0aGlzIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGRpc2FibGVkIG9wdGlvbiBpcyB0cnVlLlxuICAgKiBAcmV0dXJuIHtmYWxzZX0gaWYgdGhlIGRpc2FibGVkIG9wdGlvbiBpcyBmYWxzZS5cbiAgICovXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzRGlzYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoJ2Rpc2FibGVkJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuaXNPcGVuID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmhhc0ZvY3VzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMnKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgLy8gTm8gbmVlZCB0byByZS10cmlnZ2VyIGZvY3VzIGV2ZW50cyBpZiB3ZSBhcmUgYWxyZWFkeSBmb2N1c2VkXG4gICAgaWYgKHRoaXMuaGFzRm9jdXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMnKTtcbiAgICB0aGlzLnRyaWdnZXIoJ2ZvY3VzJywge30pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoXCJlbmFibGVcIilgIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsJyArXG4gICAgICAgICcgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQucHJvcChcImRpc2FibGVkXCIpJyArXG4gICAgICAgICcgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzID09IG51bGwgfHwgYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGFyZ3MgPSBbdHJ1ZV07XG4gICAgfVxuXG4gICAgdmFyIGRpc2FibGVkID0gIWFyZ3NbMF07XG5cbiAgICB0aGlzLiRlbGVtZW50LnByb3AoJ2Rpc2FibGVkJywgZGlzYWJsZWQpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmRhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiZcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdTZWxlY3QyOiBEYXRhIGNhbiBubyBsb25nZXIgYmUgc2V0IHVzaW5nIGBzZWxlY3QyKFwiZGF0YVwiKWAuIFlvdSAnICtcbiAgICAgICAgJ3Nob3VsZCBjb25zaWRlciBzZXR0aW5nIHRoZSB2YWx1ZSBpbnN0ZWFkIHVzaW5nIGAkZWxlbWVudC52YWwoKWAuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IFtdO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgZGF0YSA9IGN1cnJlbnREYXRhO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUudmFsID0gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcInZhbFwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUnICtcbiAgICAgICAgJyByZW1vdmVkIGluIGxhdGVyIFNlbGVjdDIgdmVyc2lvbnMuIFVzZSAkZWxlbWVudC52YWwoKSBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MgPT0gbnVsbCB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQudmFsKCk7XG4gICAgfVxuXG4gICAgdmFyIG5ld1ZhbCA9IGFyZ3NbMF07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWwpKSB7XG4gICAgICBuZXdWYWwgPSBuZXdWYWwubWFwKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iai50b1N0cmluZygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudC52YWwobmV3VmFsKS50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgVXRpbHMuUmVtb3ZlRGF0YSh0aGlzLiRjb250YWluZXJbMF0pO1xuICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcblxuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG51bGw7XG5cbiAgICB0aGlzLl9zeW5jQSA9IG51bGw7XG4gICAgdGhpcy5fc3luY1MgPSBudWxsO1xuXG4gICAgdGhpcy4kZWxlbWVudC5vZmYoJy5zZWxlY3QyJyk7XG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcsXG4gICAgVXRpbHMuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAnb2xkLXRhYmluZGV4JykpO1xuXG4gICAgdGhpcy4kZWxlbWVudFswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlJyk7XG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcy4kZWxlbWVudFswXSk7XG4gICAgdGhpcy4kZWxlbWVudC5yZW1vdmVEYXRhKCdzZWxlY3QyJyk7XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5kZXN0cm95KCk7XG4gICAgdGhpcy5kcm9wZG93bi5kZXN0cm95KCk7XG4gICAgdGhpcy5yZXN1bHRzLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLmRyb3Bkb3duID0gbnVsbDtcbiAgICB0aGlzLnJlc3VsdHMgPSBudWxsO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGNvbnRhaW5lciA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyIHNlbGVjdDItY29udGFpbmVyXCI+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdGlvblwiPjwvc3Bhbj4nICtcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICAkY29udGFpbmVyLmF0dHIoJ2RpcicsIHRoaXMub3B0aW9ucy5nZXQoJ2RpcicpKTtcblxuICAgIHRoaXMuJGNvbnRhaW5lciA9ICRjb250YWluZXI7XG5cbiAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0XG4gICAgICAuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tJyArIHRoaXMub3B0aW9ucy5nZXQoJ3RoZW1lJykpO1xuXG4gICAgVXRpbHMuU3RvcmVEYXRhKCRjb250YWluZXJbMF0sICdlbGVtZW50JywgdGhpcy4kZWxlbWVudCk7XG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0Mjtcbn0pO1xuXG5TMi5kZWZpbmUoJ2pxdWVyeS1tb3VzZXdoZWVsJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICAvLyBVc2VkIHRvIHNoaW0galF1ZXJ5Lm1vdXNld2hlZWwgZm9yIG5vbi1mdWxsIGJ1aWxkcy5cbiAgcmV0dXJuICQ7XG59KTtcblxuUzIuZGVmaW5lKCdqcXVlcnkuc2VsZWN0MicsW1xuICAnanF1ZXJ5JyxcbiAgJ2pxdWVyeS1tb3VzZXdoZWVsJyxcblxuICAnLi9zZWxlY3QyL2NvcmUnLFxuICAnLi9zZWxlY3QyL2RlZmF1bHRzJyxcbiAgJy4vc2VsZWN0Mi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBfLCBTZWxlY3QyLCBEZWZhdWx0cywgVXRpbHMpIHtcbiAgaWYgKCQuZm4uc2VsZWN0MiA9PSBudWxsKSB7XG4gICAgLy8gQWxsIG1ldGhvZHMgdGhhdCBzaG91bGQgcmV0dXJuIHRoZSBlbGVtZW50XG4gICAgdmFyIHRoaXNNZXRob2RzID0gWydvcGVuJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knXTtcblxuICAgICQuZm4uc2VsZWN0MiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBpbnN0YW5jZU9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgU2VsZWN0MigkKHRoaXMpLCBpbnN0YW5jZU9wdGlvbnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciByZXQ7XG4gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IFV0aWxzLkdldERhdGEodGhpcywgJ3NlbGVjdDInKTtcblxuICAgICAgICAgIGlmIChpbnN0YW5jZSA9PSBudWxsICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdUaGUgc2VsZWN0MihcXCcnICsgb3B0aW9ucyArICdcXCcpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuICcgK1xuICAgICAgICAgICAgICAnZWxlbWVudCB0aGF0IGlzIG5vdCB1c2luZyBTZWxlY3QyLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0ID0gaW5zdGFuY2Vbb3B0aW9uc10uYXBwbHkoaW5zdGFuY2UsIGFyZ3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgYmUgcmV0dXJuaW5nIGB0aGlzYFxuICAgICAgICBpZiAodGhpc01ldGhvZHMuaW5kZXhPZihvcHRpb25zKSA+IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50cyBmb3IgU2VsZWN0MjogJyArIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAoJC5mbi5zZWxlY3QyLmRlZmF1bHRzID09IG51bGwpIHtcbiAgICAkLmZuLnNlbGVjdDIuZGVmYXVsdHMgPSBEZWZhdWx0cztcbiAgfVxuXG4gIHJldHVybiBTZWxlY3QyO1xufSk7XG5cbiAgLy8gUmV0dXJuIHRoZSBBTUQgbG9hZGVyIGNvbmZpZ3VyYXRpb24gc28gaXQgY2FuIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGlzIGZpbGVcbiAgcmV0dXJuIHtcbiAgICBkZWZpbmU6IFMyLmRlZmluZSxcbiAgICByZXF1aXJlOiBTMi5yZXF1aXJlXG4gIH07XG59KCkpO1xuXG4gIC8vIEF1dG9sb2FkIHRoZSBqUXVlcnkgYmluZGluZ3NcbiAgLy8gV2Uga25vdyB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcyBleGlzdCBhYm92ZSB0aGlzLCBzbyB3ZSdyZSBzYWZlXG4gIHZhciBzZWxlY3QyID0gUzIucmVxdWlyZSgnanF1ZXJ5LnNlbGVjdDInKTtcblxuICAvLyBIb2xkIHRoZSBBTUQgbW9kdWxlIHJlZmVyZW5jZXMgb24gdGhlIGpRdWVyeSBmdW5jdGlvbiB0aGF0IHdhcyBqdXN0IGxvYWRlZFxuICAvLyBUaGlzIGFsbG93cyBTZWxlY3QyIHRvIHVzZSB0aGUgaW50ZXJuYWwgbG9hZGVyIG91dHNpZGUgb2YgdGhpcyBmaWxlLCBzdWNoXG4gIC8vIGFzIGluIHRoZSBsYW5ndWFnZSBmaWxlcy5cbiAgalF1ZXJ5LmZuLnNlbGVjdDIuYW1kID0gUzI7XG5cbiAgLy8gUmV0dXJuIHRoZSBTZWxlY3QyIGluc3RhbmNlIGZvciBhbnlvbmUgd2hvIGlzIGltcG9ydGluZyBpdC5cbiAgcmV0dXJuIHNlbGVjdDI7XG59KSk7XG4iLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuL21haW4uY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGUuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXIgc2luZ2xldG9uQ291bnRlciA9IDA7XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgc3R5bGU7XG4gIHZhciB1cGRhdGU7XG4gIHZhciByZW1vdmU7XG5cbiAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgc3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlKG9iaik7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZShuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4gIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcblxuICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gIH1cblxuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRG9tW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRvbVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRvbS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsImltcG9ydCB7IGNvbXB1dGVkLCBvcGVuQmxvY2ssIGNyZWF0ZUJsb2NrLCBtZXJnZVByb3BzIH0gZnJvbSAndnVlJztcblxudmFyIHNjcmlwdCA9IHtcbiAgbmFtZTogJ1N2Z1Z1ZScsXG4gIHByb3BzOiB7XG4gICAgaWNvbjogU3RyaW5nXG4gIH0sXG5cbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBpY29uUGF0aCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmljb24ucmVwbGFjZShuZXcgUmVnRXhwKCcuJy5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8XFxbXFxdXFwvXFxcXF0pL2csICdcXFxcJDEnKSwgJ2cnKSwgJy8nKSArICcuc3ZnJyk7XG4gICAgY29uc3Qgc3ZnU3RyaW5nID0gY29tcHV0ZWQoKCkgPT4gcmVxdWlyZShgc3ZnLWZpbGVzLXBhdGgvJHtpY29uUGF0aC52YWx1ZX1gKS5kZWZhdWx0KTtcbiAgICBjb25zdCBzdmdBdHRyaWJ1dGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKCFzdmdTdHJpbmcpIHJldHVybiB7fTtcbiAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB3cmFwcGVyLmlubmVySFRNTCA9IHN2Z1N0cmluZy52YWx1ZTtcbiAgICAgIGxldCBhdHRyaWJ1dGVzTGlzdCA9IHdyYXBwZXIuZmlyc3RFbGVtZW50Q2hpbGQuYXR0cmlidXRlcztcbiAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzTGlzdCkubWFwKGkgPT4gYXR0cmlidXRlc1thdHRyaWJ1dGVzTGlzdFtpXS5uYW1lXSA9IGF0dHJpYnV0ZXNMaXN0W2ldLnZhbHVlKTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH0pO1xuICAgIGNvbnN0IHN2Z0NvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiBzdmdTdHJpbmcgPyBzdmdTdHJpbmcudmFsdWUucmVwbGFjZSgvXjxzdmdbXj5dKj58PFxcL3N2Zz4kL2csICcnKSA6IG51bGwpO1xuICAgIHJldHVybiB7XG4gICAgICBzdmdBdHRyaWJ1dGVzLFxuICAgICAgc3ZnQ29udGVudFxuICAgIH07XG4gIH1cblxufTtcblxuZnVuY3Rpb24gcmVuZGVyKF9jdHgsIF9jYWNoZSwgJHByb3BzLCAkc2V0dXAsICRkYXRhLCAkb3B0aW9ucykge1xuICByZXR1cm4gb3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKFwic3ZnXCIsIG1lcmdlUHJvcHMoJHNldHVwLnN2Z0F0dHJpYnV0ZXMsIHtcbiAgICBpbm5lckhUTUw6ICRzZXR1cC5zdmdDb250ZW50XG4gIH0pLCBudWxsLCAxNiwgW1wiaW5uZXJIVE1MXCJdKTtcbn1cblxuc2NyaXB0LnJlbmRlciA9IHJlbmRlcjtcblxuLy8gSW1wb3J0IHZ1ZSBjb21wb25lbnRcbi8vIElJRkUgaW5qZWN0cyBpbnN0YWxsIGZ1bmN0aW9uIGludG8gY29tcG9uZW50LCBhbGxvd2luZyBjb21wb25lbnRcbi8vIHRvIGJlIHJlZ2lzdGVyZWQgdmlhIFZ1ZS51c2UoKSBhcyB3ZWxsIGFzIFZ1ZS5jb21wb25lbnQoKSxcblxudmFyIGVudHJ5X2VzbSA9IC8qI19fUFVSRV9fKi8oKCkgPT4ge1xuICAvLyBHZXQgY29tcG9uZW50IGluc3RhbmNlXG4gIGNvbnN0IGluc3RhbGxhYmxlID0gc2NyaXB0OyAvLyBBdHRhY2ggaW5zdGFsbCBmdW5jdGlvbiBleGVjdXRlZCBieSBWdWUudXNlKClcblxuICBpbnN0YWxsYWJsZS5pbnN0YWxsID0gYXBwID0+IHtcbiAgICBhcHAuY29tcG9uZW50KCdTdmdWdWUnLCBpbnN0YWxsYWJsZSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbGxhYmxlO1xufSkoKTsgLy8gSXQncyBwb3NzaWJsZSB0byBleHBvc2UgbmFtZWQgZXhwb3J0cyB3aGVuIHdyaXRpbmcgY29tcG9uZW50cyB0aGF0IGNhblxuLy8gYWxzbyBiZSB1c2VkIGFzIGRpcmVjdGl2ZXMsIGV0Yy4gLSBlZy4gaW1wb3J0IHsgUm9sbHVwRGVtb0RpcmVjdGl2ZSB9IGZyb20gJ3JvbGx1cC1kZW1vJztcbi8vIGV4cG9ydCBjb25zdCBSb2xsdXBEZW1vRGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG5leHBvcnQgZGVmYXVsdCBlbnRyeV9lc207XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcbiAgdmFsdWU6ICdNb2R1bGUnXG59KTtcbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nO1xuY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gY29uZmlnID0+IHtcbiAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpO1xuICBjb25zdCB7XG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwcyxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNcbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gY2xhc3NOYW1lID0+IHtcbiAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKTtcbiAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICBjbGFzc1BhcnRzLnNoaWZ0KCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSk7XG4gIH07XG4gIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcikgPT4ge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXTtcbiAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF1dO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHNcbiAgfTtcbn07XG5jb25zdCBnZXRHcm91cFJlY3Vyc2l2ZSA9IChjbGFzc1BhcnRzLCBjbGFzc1BhcnRPYmplY3QpID0+IHtcbiAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWQ7XG4gIH1cbiAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF07XG4gIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpO1xuICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdCkgOiB1bmRlZmluZWQ7XG4gIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0O1xuICB9XG4gIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7XG4gICAgdmFsaWRhdG9yXG4gIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkO1xufTtcbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kLztcbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IGNsYXNzTmFtZSA9PiB7XG4gIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSlbMV07XG4gICAgY29uc3QgcHJvcGVydHkgPSBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZT8uc3Vic3RyaW5nKDAsIGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lLmluZGV4T2YoJzonKSk7XG4gICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHk7XG4gICAgfVxuICB9XG59O1xuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gY29uZmlnID0+IHtcbiAgY29uc3Qge1xuICAgIHRoZW1lLFxuICAgIHByZWZpeFxuICB9ID0gY29uZmlnO1xuICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH07XG4gIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksIHByZWZpeCk7XG4gIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgfSk7XG4gIHJldHVybiBjbGFzc01hcDtcbn07XG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKGNsYXNzR3JvdXAsIGNsYXNzUGFydE9iamVjdCwgY2xhc3NHcm91cElkLCB0aGVtZSkgPT4ge1xuICBjbGFzc0dyb3VwLmZvckVhY2goY2xhc3NEZWZpbml0aW9uID0+IHtcbiAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGNsYXNzUGFydE9iamVjdFRvRWRpdCA9IGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKTtcbiAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoaXNUaGVtZUdldHRlcihjbGFzc0RlZmluaXRpb24pKSB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NEZWZpbml0aW9uKHRoZW1lKSwgY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMucHVzaCh7XG4gICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICBjbGFzc0dyb3VwSWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLmZvckVhY2goKFtrZXksIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3QsIHBhdGgpID0+IHtcbiAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3Q7XG4gIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2gocGF0aFBhcnQgPT4ge1xuICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXVxuICAgICAgfSk7XG4gICAgfVxuICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCk7XG4gIH0pO1xuICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdDtcbn07XG5jb25zdCBpc1RoZW1lR2V0dGVyID0gZnVuYyA9PiBmdW5jLmlzVGhlbWVHZXR0ZXI7XG5jb25zdCBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gKGNsYXNzR3JvdXBFbnRyaWVzLCBwcmVmaXgpID0+IHtcbiAgaWYgKCFwcmVmaXgpIHtcbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXM7XG4gIH1cbiAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcChjbGFzc0RlZmluaXRpb24gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyBjbGFzc0RlZmluaXRpb247XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGFzc0RlZmluaXRpb247XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF07XG4gIH0pO1xufTtcblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSBtYXhDYWNoZVNpemUgPT4ge1xuICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIHNldDogKCkgPT4ge31cbiAgICB9O1xuICB9XG4gIGxldCBjYWNoZVNpemUgPSAwO1xuICBsZXQgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCB1cGRhdGUgPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgIGNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgICBjYWNoZVNpemUrKztcbiAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICBjYWNoZVNpemUgPSAwO1xuICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlO1xuICAgICAgY2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4ge1xuICAgIGdldChrZXkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpO1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKCh2YWx1ZSA9IHByZXZpb3VzQ2FjaGUuZ2V0KGtleSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnO1xuY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSBjb25maWcgPT4ge1xuICBjb25zdCB7XG4gICAgc2VwYXJhdG9yLFxuICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMTtcbiAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF07XG4gIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7XG4gIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICBjb25zdCBwYXJzZUNsYXNzTmFtZSA9IGNsYXNzTmFtZSA9PiB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gW107XG4gICAgbGV0IGJyYWNrZXREZXB0aCA9IDA7XG4gICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwO1xuICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdO1xuICAgICAgaWYgKGJyYWNrZXREZXB0aCA9PT0gMCkge1xuICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgJiYgKGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIHx8IGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSk7XG4gICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgIGJyYWNrZXREZXB0aCsrO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnXScpIHtcbiAgICAgICAgYnJhY2tldERlcHRoLS07XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPSBtb2RpZmllcnMubGVuZ3RoID09PSAwID8gY2xhc3NOYW1lIDogY2xhc3NOYW1lLnN1YnN0cmluZyhtb2RpZmllclN0YXJ0KTtcbiAgICBjb25zdCBoYXNJbXBvcnRhbnRNb2RpZmllciA9IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpO1xuICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllciA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpIDogYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllcjtcbiAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gJiYgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPiBtb2RpZmllclN0YXJ0ID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0IDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RpZmllcnMsXG4gICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uXG4gICAgfTtcbiAgfTtcbiAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBwYXJzZUNsYXNzTmFtZVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBwYXJzZUNsYXNzTmFtZTtcbn07XG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5jb25zdCBzb3J0TW9kaWZpZXJzID0gbW9kaWZpZXJzID0+IHtcbiAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBtb2RpZmllcnM7XG4gIH1cbiAgY29uc3Qgc29ydGVkTW9kaWZpZXJzID0gW107XG4gIGxldCB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChtb2RpZmllciA9PiB7XG4gICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJztcbiAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKTtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSk7XG4gIHJldHVybiBzb3J0ZWRNb2RpZmllcnM7XG59O1xuY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSBjb25maWcgPT4gKHtcbiAgY2FjaGU6IGNyZWF0ZUxydUNhY2hlKGNvbmZpZy5jYWNoZVNpemUpLFxuICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZylcbn0pO1xuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrLztcbmNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhcnNlQ2xhc3NOYW1lLFxuICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHNcbiAgfSA9IGNvbmZpZ1V0aWxzO1xuICAvKipcbiAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAqIEBleGFtcGxlICdtZDohcHInXG4gICAqL1xuICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3QgPSBbXTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWCk7XG4gIGxldCByZXN1bHQgPSAnJztcbiAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICBjb25zdCBvcmlnaW5hbENsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdO1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9ID0gcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpO1xuICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pO1xuICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoaGFzUG9zdGZpeE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbikgOiBiYXNlQ2xhc3NOYW1lKTtcbiAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKTtcbiAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKTtcbiAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXIgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVIgOiB2YXJpYW50TW9kaWZpZXI7XG4gICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWQ7XG4gICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKTtcbiAgICBjb25zdCBjb25mbGljdEdyb3VwcyA9IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25mbGljdEdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBjb25mbGljdEdyb3Vwc1tpXTtcbiAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKG1vZGlmaWVySWQgKyBncm91cCk7XG4gICAgfVxuICAgIC8vIFRhaWx3aW5kIGNsYXNzIG5vdCBpbiBjb25mbGljdFxuICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5mdW5jdGlvbiB0d0pvaW4oKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBhcmd1bWVudDtcbiAgbGV0IHJlc29sdmVkVmFsdWU7XG4gIGxldCBzdHJpbmcgPSAnJztcbiAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGlmIChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkge1xuICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpO1xuICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmluZztcbn1cbmNvbnN0IHRvVmFsdWUgPSBtaXggPT4ge1xuICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbWl4O1xuICB9XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgaWYgKG1peFtrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59O1xuZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShjcmVhdGVDb25maWdGaXJzdCwgLi4uY3JlYXRlQ29uZmlnUmVzdCkge1xuICBsZXQgY29uZmlnVXRpbHM7XG4gIGxldCBjYWNoZUdldDtcbiAgbGV0IGNhY2hlU2V0O1xuICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZTtcbiAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KSB7XG4gICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoKHByZXZpb3VzQ29uZmlnLCBjcmVhdGVDb25maWdDdXJyZW50KSA9PiBjcmVhdGVDb25maWdDdXJyZW50KHByZXZpb3VzQ29uZmlnKSwgY3JlYXRlQ29uZmlnRmlyc3QoKSk7XG4gICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpO1xuICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0O1xuICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0O1xuICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZTtcbiAgICByZXR1cm4gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpO1xuICB9XG4gIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KSB7XG4gICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KTtcbiAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKTtcbiAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9DYWxsKHR3Sm9pbi5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cbmNvbnN0IGZyb21UaGVtZSA9IGtleSA9PiB7XG4gIGNvbnN0IHRoZW1lR2V0dGVyID0gdGhlbWUgPT4gdGhlbWVba2V5XSB8fCBbXTtcbiAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWU7XG4gIHJldHVybiB0aGVtZUdldHRlcjtcbn07XG5jb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pO1xuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskLztcbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pO1xuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLztcbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9IC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC87XG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkLztcbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS87XG5jb25zdCBpbWFnZVJlZ2V4ID0gL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvO1xuY29uc3QgaXNMZW5ndGggPSB2YWx1ZSA9PiBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpO1xuY29uc3QgaXNOdW1iZXIgPSB2YWx1ZSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpO1xuY29uc3QgaXNBcmJpdHJhcnlOdW1iZXIgPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpO1xuY29uc3QgaXNJbnRlZ2VyID0gdmFsdWUgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKTtcbmNvbnN0IGlzUGVyY2VudCA9IHZhbHVlID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKTtcbmNvbnN0IGlzQXJiaXRyYXJ5VmFsdWUgPSB2YWx1ZSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3QgaXNUc2hpcnRTaXplID0gdmFsdWUgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3Qgc2l6ZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKTtcbmNvbnN0IGlzQXJiaXRyYXJ5U2l6ZSA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpO1xuY29uc3QgaXNBcmJpdHJhcnlQb3NpdGlvbiA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdwb3NpdGlvbicsIGlzTmV2ZXIpO1xuY29uc3QgaW1hZ2VMYWJlbHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ2ltYWdlJywgJ3VybCddKTtcbmNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSk7XG5jb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdyk7XG5jb25zdCBpc0FueSA9ICgpID0+IHRydWU7XG5jb25zdCBnZXRJc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlLCBsYWJlbCwgdGVzdFZhbHVlKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBpc0xlbmd0aE9ubHkgPSB2YWx1ZSA9PlxuLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbmxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlO1xuY29uc3QgaXNTaGFkb3cgPSB2YWx1ZSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IGlzSW1hZ2UgPSB2YWx1ZSA9PiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3QgdmFsaWRhdG9ycyA9IC8qI19fUFVSRV9fKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIGlzQW55LFxuICBpc0FyYml0cmFyeUltYWdlLFxuICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gIGlzQXJiaXRyYXJ5U2hhZG93LFxuICBpc0FyYml0cmFyeVNpemUsXG4gIGlzQXJiaXRyYXJ5VmFsdWUsXG4gIGlzSW50ZWdlcixcbiAgaXNMZW5ndGgsXG4gIGlzTnVtYmVyLFxuICBpc1BlcmNlbnQsXG4gIGlzVHNoaXJ0U2l6ZVxufSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG4gIHZhbHVlOiAnTW9kdWxlJ1xufSk7XG5jb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpO1xuICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJyk7XG4gIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKTtcbiAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpO1xuICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKTtcbiAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKTtcbiAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpO1xuICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKTtcbiAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0Jyk7XG4gIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJyk7XG4gIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJyk7XG4gIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0Jyk7XG4gIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJyk7XG4gIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJyk7XG4gIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpO1xuICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKTtcbiAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKTtcbiAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpO1xuICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJyk7XG4gIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpO1xuICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKTtcbiAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJyk7XG4gIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKTtcbiAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJyk7XG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJyk7XG4gIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ107XG4gIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ107XG4gIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdO1xuICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT4gWydib3R0b20nLCAnY2VudGVyJywgJ2xlZnQnLCAnbGVmdC1ib3R0b20nLCAnbGVmdC10b3AnLCAncmlnaHQnLCAncmlnaHQtYm90dG9tJywgJ3JpZ2h0LXRvcCcsICd0b3AnXTtcbiAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddO1xuICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT4gWydub3JtYWwnLCAnbXVsdGlwbHknLCAnc2NyZWVuJywgJ292ZXJsYXknLCAnZGFya2VuJywgJ2xpZ2h0ZW4nLCAnY29sb3ItZG9kZ2UnLCAnY29sb3ItYnVybicsICdoYXJkLWxpZ2h0JywgJ3NvZnQtbGlnaHQnLCAnZGlmZmVyZW5jZScsICdleGNsdXNpb24nLCAnaHVlJywgJ3NhdHVyYXRpb24nLCAnY29sb3InLCAnbHVtaW5vc2l0eSddO1xuICBjb25zdCBnZXRBbGlnbiA9ICgpID0+IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddO1xuICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+IFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ107XG4gIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIHJldHVybiB7XG4gICAgY2FjaGVTaXplOiA1MDAsXG4gICAgc2VwYXJhdG9yOiAnOicsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgfSxcbiAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgLy8gTGF5b3V0XG4gICAgICAvKipcbiAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICovXG4gICAgICBhc3BlY3Q6IFt7XG4gICAgICAgIGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udGFpbmVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgKi9cbiAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgIC8qKlxuICAgICAgICogQ29sdW1uc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAqL1xuICAgICAgY29sdW1uczogW3tcbiAgICAgICAgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBBZnRlclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWFmdGVyXG4gICAgICAgKi9cbiAgICAgICdicmVhay1hZnRlcic6IFt7XG4gICAgICAgICdicmVhay1hZnRlcic6IGdldEJyZWFrcygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgKi9cbiAgICAgICdicmVhay1iZWZvcmUnOiBbe1xuICAgICAgICAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7XG4gICAgICAgICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBEZWNvcmF0aW9uIEJyZWFrXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LWRlY29yYXRpb24tYnJlYWtcbiAgICAgICAqL1xuICAgICAgJ2JveC1kZWNvcmF0aW9uJzogW3tcbiAgICAgICAgJ2JveC1kZWNvcmF0aW9uJzogWydzbGljZScsICdjbG9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNpemluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAqL1xuICAgICAgYm94OiBbe1xuICAgICAgICBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpc3BsYXlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXk6IFsnYmxvY2snLCAnaW5saW5lLWJsb2NrJywgJ2lubGluZScsICdmbGV4JywgJ2lubGluZS1mbGV4JywgJ3RhYmxlJywgJ2lubGluZS10YWJsZScsICd0YWJsZS1jYXB0aW9uJywgJ3RhYmxlLWNlbGwnLCAndGFibGUtY29sdW1uJywgJ3RhYmxlLWNvbHVtbi1ncm91cCcsICd0YWJsZS1mb290ZXItZ3JvdXAnLCAndGFibGUtaGVhZGVyLWdyb3VwJywgJ3RhYmxlLXJvdy1ncm91cCcsICd0YWJsZS1yb3cnLCAnZmxvdy1yb290JywgJ2dyaWQnLCAnaW5saW5lLWdyaWQnLCAnY29udGVudHMnLCAnbGlzdC1pdGVtJywgJ2hpZGRlbiddLFxuICAgICAgLyoqXG4gICAgICAgKiBGbG9hdHNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICovXG4gICAgICBmbG9hdDogW3tcbiAgICAgICAgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2xlYXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICovXG4gICAgICBjbGVhcjogW3tcbiAgICAgICAgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBJc29sYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pc29sYXRpb25cbiAgICAgICAqL1xuICAgICAgaXNvbGF0aW9uOiBbJ2lzb2xhdGUnLCAnaXNvbGF0aW9uLWF1dG8nXSxcbiAgICAgIC8qKlxuICAgICAgICogT2JqZWN0IEZpdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1maXRcbiAgICAgICAqL1xuICAgICAgJ29iamVjdC1maXQnOiBbe1xuICAgICAgICBvYmplY3Q6IFsnY29udGFpbicsICdjb3ZlcicsICdmaWxsJywgJ25vbmUnLCAnc2NhbGUtZG93biddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbe1xuICAgICAgICBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyZmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgIG92ZXJmbG93OiBbe1xuICAgICAgICBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93IFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICovXG4gICAgICAnb3ZlcmZsb3cteCc6IFt7XG4gICAgICAgICdvdmVyZmxvdy14JzogZ2V0T3ZlcmZsb3coKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICovXG4gICAgICAnb3ZlcmZsb3cteSc6IFt7XG4gICAgICAgICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgIG92ZXJzY3JvbGw6IFt7XG4gICAgICAgIG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ292ZXJzY3JvbGwteCc6IFt7XG4gICAgICAgICdvdmVyc2Nyb2xsLXgnOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdvdmVyc2Nyb2xsLXknOiBbe1xuICAgICAgICAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICovXG4gICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAvKipcbiAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBpbnNldDogW3tcbiAgICAgICAgaW5zZXQ6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaWdodCAvIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgJ2luc2V0LXgnOiBbe1xuICAgICAgICAnaW5zZXQteCc6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgJ2luc2V0LXknOiBbe1xuICAgICAgICAnaW5zZXQteSc6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBzdGFydDogW3tcbiAgICAgICAgc3RhcnQ6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgZW5kOiBbe1xuICAgICAgICBlbmQ6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgdG9wOiBbe1xuICAgICAgICB0b3A6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICByaWdodDogW3tcbiAgICAgICAgcmlnaHQ6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgYm90dG9tOiBbe1xuICAgICAgICBib3R0b206IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGxlZnQ6IFt7XG4gICAgICAgIGxlZnQ6IFtpbnNldF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICovXG4gICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIFotSW5kZXhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgKi9cbiAgICAgIHo6IFt7XG4gICAgICAgIHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gRmxleGJveCBhbmQgR3JpZFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IEJhc2lzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1iYXNpc1xuICAgICAgICovXG4gICAgICBiYXNpczogW3tcbiAgICAgICAgYmFzaXM6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICovXG4gICAgICAnZmxleC1kaXJlY3Rpb24nOiBbe1xuICAgICAgICBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICovXG4gICAgICAnZmxleC13cmFwJzogW3tcbiAgICAgICAgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4XG4gICAgICAgKi9cbiAgICAgIGZsZXg6IFt7XG4gICAgICAgIGZsZXg6IFsnMScsICdhdXRvJywgJ2luaXRpYWwnLCAnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBHcm93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgKi9cbiAgICAgIGdyb3c6IFt7XG4gICAgICAgIGdyb3c6IGdldFplcm9BbmRFbXB0eSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICovXG4gICAgICBzaHJpbms6IFt7XG4gICAgICAgIHNocmluazogZ2V0WmVyb0FuZEVtcHR5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPcmRlclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29yZGVyXG4gICAgICAgKi9cbiAgICAgIG9yZGVyOiBbe1xuICAgICAgICBvcmRlcjogWydmaXJzdCcsICdsYXN0JywgJ25vbmUnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgKi9cbiAgICAgICdncmlkLWNvbHMnOiBbe1xuICAgICAgICAnZ3JpZC1jb2xzJzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAqL1xuICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbe1xuICAgICAgICBjb2w6IFsnYXV0bycsIHtcbiAgICAgICAgICBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICAgIH0sIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLXN0YXJ0JzogW3tcbiAgICAgICAgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLWVuZCc6IFt7XG4gICAgICAgICdjb2wtZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICovXG4gICAgICAnZ3JpZC1yb3dzJzogW3tcbiAgICAgICAgJ2dyaWQtcm93cyc6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgKi9cbiAgICAgICdyb3ctc3RhcnQtZW5kJzogW3tcbiAgICAgICAgcm93OiBbJ2F1dG8nLCB7XG4gICAgICAgICAgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgKi9cbiAgICAgICdyb3ctc3RhcnQnOiBbe1xuICAgICAgICAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgKi9cbiAgICAgICdyb3ctZW5kJzogW3tcbiAgICAgICAgJ3Jvdy1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICovXG4gICAgICAnZ3JpZC1mbG93JzogW3tcbiAgICAgICAgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgKi9cbiAgICAgICdhdXRvLWNvbHMnOiBbe1xuICAgICAgICAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBSb3dzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLXJvd3NcbiAgICAgICAqL1xuICAgICAgJ2F1dG8tcm93cyc6IFt7XG4gICAgICAgICdhdXRvLXJvd3MnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgKi9cbiAgICAgIGdhcDogW3tcbiAgICAgICAgZ2FwOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdhcCBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgKi9cbiAgICAgICdnYXAteCc6IFt7XG4gICAgICAgICdnYXAteCc6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgJ2dhcC15JzogW3tcbiAgICAgICAgJ2dhcC15JzogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7XG4gICAgICAgIGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICovXG4gICAgICAnanVzdGlmeS1pdGVtcyc6IFt7XG4gICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgU2VsZlxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktc2VsZlxuICAgICAgICovXG4gICAgICAnanVzdGlmeS1zZWxmJzogW3tcbiAgICAgICAgJ2p1c3RpZnktc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1jb250ZW50JzogW3tcbiAgICAgICAgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLWl0ZW1zJzogW3tcbiAgICAgICAgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbGlnbiBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tc2VsZlxuICAgICAgICovXG4gICAgICAnYWxpZ24tc2VsZic6IFt7XG4gICAgICAgIHNlbGY6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1jb250ZW50JzogW3tcbiAgICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1pdGVtcyc6IFt7XG4gICAgICAgICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZSBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Utc2VsZlxuICAgICAgICovXG4gICAgICAncGxhY2Utc2VsZic6IFt7XG4gICAgICAgICdwbGFjZS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8vIFNwYWNpbmdcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcDogW3tcbiAgICAgICAgcDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBweDogW3tcbiAgICAgICAgcHg6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHk6IFt7XG4gICAgICAgIHB5OiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwczogW3tcbiAgICAgICAgcHM6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwZTogW3tcbiAgICAgICAgcGU6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwdDogW3tcbiAgICAgICAgcHQ6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHByOiBbe1xuICAgICAgICBwcjogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBiOiBbe1xuICAgICAgICBwYjogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwbDogW3tcbiAgICAgICAgcGw6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtOiBbe1xuICAgICAgICBtOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG14OiBbe1xuICAgICAgICBteDogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBteTogW3tcbiAgICAgICAgbXk6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1zOiBbe1xuICAgICAgICBtczogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1lOiBbe1xuICAgICAgICBtZTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG10OiBbe1xuICAgICAgICBtdDogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXI6IFt7XG4gICAgICAgIG1yOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWI6IFt7XG4gICAgICAgIG1iOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1sOiBbe1xuICAgICAgICBtbDogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteCc6IFt7XG4gICAgICAgICdzcGFjZS14JzogW3NwYWNlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS15JzogW3tcbiAgICAgICAgJ3NwYWNlLXknOiBbc3BhY2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBZIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteS1yZXZlcnNlJzogWydzcGFjZS15LXJldmVyc2UnXSxcbiAgICAgIC8vIFNpemluZ1xuICAgICAgLyoqXG4gICAgICAgKiBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpZHRoXG4gICAgICAgKi9cbiAgICAgIHc6IFt7XG4gICAgICAgIHc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdncnLCAnbHZ3JywgJ2R2dycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWluLVdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdtaW4tdyc6IFt7XG4gICAgICAgICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICovXG4gICAgICAnbWF4LXcnOiBbe1xuICAgICAgICAnbWF4LXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ25vbmUnLCAnZnVsbCcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdwcm9zZScsIHtcbiAgICAgICAgICBzY3JlZW46IFtpc1RzaGlydFNpemVdXG4gICAgICAgIH0sIGlzVHNoaXJ0U2l6ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBIZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAqL1xuICAgICAgaDogW3tcbiAgICAgICAgaDogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICovXG4gICAgICAnbWluLWgnOiBbe1xuICAgICAgICAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXgtSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LWhlaWdodFxuICAgICAgICovXG4gICAgICAnbWF4LWgnOiBbe1xuICAgICAgICAnbWF4LWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICovXG4gICAgICBzaXplOiBbe1xuICAgICAgICBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXVxuICAgICAgfV0sXG4gICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICovXG4gICAgICAnZm9udC1zaXplJzogW3tcbiAgICAgICAgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFNtb290aGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc21vb3RoaW5nXG4gICAgICAgKi9cbiAgICAgICdmb250LXNtb290aGluZyc6IFsnYW50aWFsaWFzZWQnLCAnc3VicGl4ZWwtYW50aWFsaWFzZWQnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc3R5bGUnOiBbJ2l0YWxpYycsICdub3QtaXRhbGljJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgV2VpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC13ZWlnaHRcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtd2VpZ2h0JzogW3tcbiAgICAgICAgZm9udDogWyd0aGluJywgJ2V4dHJhbGlnaHQnLCAnbGlnaHQnLCAnbm9ybWFsJywgJ21lZGl1bScsICdzZW1pYm9sZCcsICdib2xkJywgJ2V4dHJhYm9sZCcsICdibGFjaycsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgRmFtaWx5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1mYW1pbHlcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtZmFtaWx5JzogW3tcbiAgICAgICAgZm9udDogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgLyoqXG4gICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgIHRyYWNraW5nOiBbe1xuICAgICAgICB0cmFja2luZzogWyd0aWdodGVyJywgJ3RpZ2h0JywgJ25vcm1hbCcsICd3aWRlJywgJ3dpZGVyJywgJ3dpZGVzdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAqL1xuICAgICAgJ2xpbmUtY2xhbXAnOiBbe1xuICAgICAgICAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgIGxlYWRpbmc6IFt7XG4gICAgICAgIGxlYWRpbmc6IFsnbm9uZScsICd0aWdodCcsICdzbnVnJywgJ25vcm1hbCcsICdyZWxheGVkJywgJ2xvb3NlJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAqL1xuICAgICAgJ2xpc3QtaW1hZ2UnOiBbe1xuICAgICAgICAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgKi9cbiAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbe1xuICAgICAgICBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7XG4gICAgICAgIGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3tcbiAgICAgICAgcGxhY2Vob2xkZXI6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbe1xuICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICovXG4gICAgICAndGV4dC1hbGlnbm1lbnQnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICovXG4gICAgICAndGV4dC1jb2xvcic6IFt7XG4gICAgICAgIHRleHQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICd0ZXh0LW9wYWNpdHknOiBbe1xuICAgICAgICAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbe1xuICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAqL1xuICAgICAgJ3RleHQtd3JhcCc6IFt7XG4gICAgICAgIHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAqL1xuICAgICAgaW5kZW50OiBbe1xuICAgICAgICBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICovXG4gICAgICAndmVydGljYWwtYWxpZ24nOiBbe1xuICAgICAgICBhbGlnbjogWydiYXNlbGluZScsICd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbScsICd0ZXh0LXRvcCcsICd0ZXh0LWJvdHRvbScsICdzdWInLCAnc3VwZXInLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgKi9cbiAgICAgIHdoaXRlc3BhY2U6IFt7XG4gICAgICAgIHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICovXG4gICAgICBicmVhazogW3tcbiAgICAgICAgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBIeXBoZW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICovXG4gICAgICBoeXBoZW5zOiBbe1xuICAgICAgICBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENvbnRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgKi9cbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICovXG4gICAgICAnYmctYXR0YWNobWVudCc6IFt7XG4gICAgICAgIGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgKi9cbiAgICAgICdiZy1jbGlwJzogW3tcbiAgICAgICAgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdiZy1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICdiZy1vcmlnaW4nOiBbe1xuICAgICAgICAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnYmctcG9zaXRpb24nOiBbe1xuICAgICAgICBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAqL1xuICAgICAgJ2JnLXJlcGVhdCc6IFt7XG4gICAgICAgIGJnOiBbJ25vLXJlcGVhdCcsIHtcbiAgICAgICAgICByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddXG4gICAgICAgIH1dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgKi9cbiAgICAgICdiZy1zaXplJzogW3tcbiAgICAgICAgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgKi9cbiAgICAgICdiZy1pbWFnZSc6IFt7XG4gICAgICAgIGJnOiBbJ25vbmUnLCB7XG4gICAgICAgICAgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ11cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlJbWFnZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICovXG4gICAgICAnYmctY29sb3InOiBbe1xuICAgICAgICBiZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3tcbiAgICAgICAgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3tcbiAgICAgICAgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3tcbiAgICAgICAgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LWZyb20nOiBbe1xuICAgICAgICBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC12aWEnOiBbe1xuICAgICAgICB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdG8nOiBbe1xuICAgICAgICB0bzogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLy8gQm9yZGVyc1xuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICByb3VuZGVkOiBbe1xuICAgICAgICByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXMnOiBbe1xuICAgICAgICAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10JzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtcic6IFt7XG4gICAgICAgICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1iJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1sJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtc3MnOiBbe1xuICAgICAgICAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXNlJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZWUnOiBbe1xuICAgICAgICAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWVzJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXRsJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10cic6IFt7XG4gICAgICAgICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYnInOiBbe1xuICAgICAgICAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYmwnOiBbe1xuICAgICAgICAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdyc6IFt7XG4gICAgICAgIGJvcmRlcjogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy14JzogW3tcbiAgICAgICAgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy15JzogW3tcbiAgICAgICAgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctcyc6IFt7XG4gICAgICAgICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1lJzogW3tcbiAgICAgICAgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1yJzogW3tcbiAgICAgICAgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWInOiBbe1xuICAgICAgICAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLW9wYWNpdHknOiBbe1xuICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7XG4gICAgICAgIGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS14JzogW3tcbiAgICAgICAgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS15JzogW3tcbiAgICAgICAgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnZGl2aWRlLW9wYWNpdHknOiBbe1xuICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7XG4gICAgICAgIGRpdmlkZTogZ2V0TGluZVN0eWxlcygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3InOiBbe1xuICAgICAgICBib3JkZXI6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci15JzogW3tcbiAgICAgICAgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci10JzogW3tcbiAgICAgICAgJ2JvcmRlci10JzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXInOiBbe1xuICAgICAgICAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWInOiBbe1xuICAgICAgICAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci1sJzogW3tcbiAgICAgICAgJ2JvcmRlci1sJzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICovXG4gICAgICAnZGl2aWRlLWNvbG9yJzogW3tcbiAgICAgICAgZGl2aWRlOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtc3R5bGUnOiBbe1xuICAgICAgICBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIE9mZnNldFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtb2Zmc2V0XG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLW9mZnNldCc6IFt7XG4gICAgICAgICdvdXRsaW5lLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICovXG4gICAgICAnb3V0bGluZS13JzogW3tcbiAgICAgICAgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1jb2xvcic6IFt7XG4gICAgICAgIG91dGxpbmU6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctdyc6IFt7XG4gICAgICAgIHJpbmc6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICovXG4gICAgICAncmluZy1jb2xvcic6IFt7XG4gICAgICAgIHJpbmc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9wYWNpdHknOiBbe1xuICAgICAgICAncmluZy1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBPZmZzZXQgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy1vZmZzZXQtdyc6IFt7XG4gICAgICAgICdyaW5nLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICovXG4gICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbe1xuICAgICAgICAncmluZy1vZmZzZXQnOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvLyBFZmZlY3RzXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgKi9cbiAgICAgIHNoYWRvdzogW3tcbiAgICAgICAgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2hhZG93IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvdy1jb2xvclxuICAgICAgICovXG4gICAgICAnc2hhZG93LWNvbG9yJzogW3tcbiAgICAgICAgc2hhZG93OiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAqL1xuICAgICAgb3BhY2l0eTogW3tcbiAgICAgICAgb3BhY2l0eTogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICovXG4gICAgICAnbWl4LWJsZW5kJzogW3tcbiAgICAgICAgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQmxlbmQgTW9kZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYmxlbmQtbW9kZVxuICAgICAgICovXG4gICAgICAnYmctYmxlbmQnOiBbe1xuICAgICAgICAnYmctYmxlbmQnOiBnZXRCbGVuZE1vZGVzKClcbiAgICAgIH1dLFxuICAgICAgLy8gRmlsdGVyc1xuICAgICAgLyoqXG4gICAgICAgKiBGaWx0ZXJcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAqL1xuICAgICAgZmlsdGVyOiBbe1xuICAgICAgICBmaWx0ZXI6IFsnJywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJsdXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgKi9cbiAgICAgIGJsdXI6IFt7XG4gICAgICAgIGJsdXI6IFtibHVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyaWdodG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmlnaHRuZXNzXG4gICAgICAgKi9cbiAgICAgIGJyaWdodG5lc3M6IFt7XG4gICAgICAgIGJyaWdodG5lc3M6IFticmlnaHRuZXNzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENvbnRyYXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAqL1xuICAgICAgY29udHJhc3Q6IFt7XG4gICAgICAgIGNvbnRyYXN0OiBbY29udHJhc3RdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICovXG4gICAgICAnZHJvcC1zaGFkb3cnOiBbe1xuICAgICAgICAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYXlzY2FsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYXlzY2FsZVxuICAgICAgICovXG4gICAgICBncmF5c2NhbGU6IFt7XG4gICAgICAgIGdyYXlzY2FsZTogW2dyYXlzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICovXG4gICAgICAnaHVlLXJvdGF0ZSc6IFt7XG4gICAgICAgICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBJbnZlcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAqL1xuICAgICAgaW52ZXJ0OiBbe1xuICAgICAgICBpbnZlcnQ6IFtpbnZlcnRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2F0dXJhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zYXR1cmF0ZVxuICAgICAgICovXG4gICAgICBzYXR1cmF0ZTogW3tcbiAgICAgICAgc2F0dXJhdGU6IFtzYXR1cmF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTZXBpYVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgKi9cbiAgICAgIHNlcGlhOiBbe1xuICAgICAgICBzZXBpYTogW3NlcGlhXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEJsdXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ibHVyXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1ibHVyJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbYmx1cl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgR3JheXNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZ3JheXNjYWxlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW2dyYXlzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV1cbiAgICAgIH1dLFxuICAgICAgLy8gVGFibGVzXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xsYXBzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xsYXBzZVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbGxhcHNlJzogW3tcbiAgICAgICAgYm9yZGVyOiBbJ2NvbGxhcHNlJywgJ3NlcGFyYXRlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZyc6IFt7XG4gICAgICAgICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7XG4gICAgICAgICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZy15JzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAqL1xuICAgICAgJ3RhYmxlLWxheW91dCc6IFt7XG4gICAgICAgIHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICovXG4gICAgICBjYXB0aW9uOiBbe1xuICAgICAgICBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXVxuICAgICAgfV0sXG4gICAgICAvLyBUcmFuc2l0aW9ucyBhbmQgQW5pbWF0aW9uXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5pc2l0aW9uIFByb3BlcnR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1wcm9wZXJ0eVxuICAgICAgICovXG4gICAgICB0cmFuc2l0aW9uOiBbe1xuICAgICAgICB0cmFuc2l0aW9uOiBbJ25vbmUnLCAnYWxsJywgJycsICdjb2xvcnMnLCAnb3BhY2l0eScsICdzaGFkb3cnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICovXG4gICAgICBkdXJhdGlvbjogW3tcbiAgICAgICAgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNpdGlvbiBUaW1pbmcgRnVuY3Rpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgICAgICovXG4gICAgICBlYXNlOiBbe1xuICAgICAgICBlYXNlOiBbJ2xpbmVhcicsICdpbicsICdvdXQnLCAnaW4tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICovXG4gICAgICBkZWxheTogW3tcbiAgICAgICAgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IFt7XG4gICAgICAgIGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gVHJhbnNmb3Jtc1xuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2Zvcm1cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm1cbiAgICAgICAqL1xuICAgICAgdHJhbnNmb3JtOiBbe1xuICAgICAgICB0cmFuc2Zvcm06IFsnJywgJ2dwdScsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY2FsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgIHNjYWxlOiBbe1xuICAgICAgICBzY2FsZTogW3NjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICovXG4gICAgICAnc2NhbGUteCc6IFt7XG4gICAgICAgICdzY2FsZS14JzogW3NjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICovXG4gICAgICAnc2NhbGUteSc6IFt7XG4gICAgICAgICdzY2FsZS15JzogW3NjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJvdGF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICovXG4gICAgICByb3RhdGU6IFt7XG4gICAgICAgIHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICovXG4gICAgICAndHJhbnNsYXRlLXgnOiBbe1xuICAgICAgICAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zbGF0ZSBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2xhdGUteSc6IFt7XG4gICAgICAgICd0cmFuc2xhdGUteSc6IFt0cmFuc2xhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2tldyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICovXG4gICAgICAnc2tldy14JzogW3tcbiAgICAgICAgJ3NrZXcteCc6IFtza2V3XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNrZXcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAqL1xuICAgICAgJ3NrZXcteSc6IFt7XG4gICAgICAgICdza2V3LXknOiBbc2tld11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2Zvcm0gT3JpZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtLW9yaWdpblxuICAgICAgICovXG4gICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFt7XG4gICAgICAgIG9yaWdpbjogWydjZW50ZXInLCAndG9wJywgJ3RvcC1yaWdodCcsICdyaWdodCcsICdib3R0b20tcmlnaHQnLCAnYm90dG9tJywgJ2JvdHRvbS1sZWZ0JywgJ2xlZnQnLCAndG9wLWxlZnQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBJbnRlcmFjdGl2aXR5XG4gICAgICAvKipcbiAgICAgICAqIEFjY2VudCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FjY2VudC1jb2xvclxuICAgICAgICovXG4gICAgICBhY2NlbnQ6IFt7XG4gICAgICAgIGFjY2VudDogWydhdXRvJywgY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgKi9cbiAgICAgIGFwcGVhcmFuY2U6IFt7XG4gICAgICAgIGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDdXJzb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAqL1xuICAgICAgY3Vyc29yOiBbe1xuICAgICAgICBjdXJzb3I6IFsnYXV0bycsICdkZWZhdWx0JywgJ3BvaW50ZXInLCAnd2FpdCcsICd0ZXh0JywgJ21vdmUnLCAnaGVscCcsICdub3QtYWxsb3dlZCcsICdub25lJywgJ2NvbnRleHQtbWVudScsICdwcm9ncmVzcycsICdjZWxsJywgJ2Nyb3NzaGFpcicsICd2ZXJ0aWNhbC10ZXh0JywgJ2FsaWFzJywgJ2NvcHknLCAnbm8tZHJvcCcsICdncmFiJywgJ2dyYWJiaW5nJywgJ2FsbC1zY3JvbGwnLCAnY29sLXJlc2l6ZScsICdyb3ctcmVzaXplJywgJ24tcmVzaXplJywgJ2UtcmVzaXplJywgJ3MtcmVzaXplJywgJ3ctcmVzaXplJywgJ25lLXJlc2l6ZScsICdudy1yZXNpemUnLCAnc2UtcmVzaXplJywgJ3N3LXJlc2l6ZScsICdldy1yZXNpemUnLCAnbnMtcmVzaXplJywgJ25lc3ctcmVzaXplJywgJ253c2UtcmVzaXplJywgJ3pvb20taW4nLCAnem9vbS1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgKi9cbiAgICAgICdjYXJldC1jb2xvcic6IFt7XG4gICAgICAgIGNhcmV0OiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBvaW50ZXIgRXZlbnRzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9pbnRlci1ldmVudHNcbiAgICAgICAqL1xuICAgICAgJ3BvaW50ZXItZXZlbnRzJzogW3tcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogWydub25lJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJlc2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICovXG4gICAgICByZXNpemU6IFt7XG4gICAgICAgIHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3tcbiAgICAgICAgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW0nOiBbe1xuICAgICAgICAnc2Nyb2xsLW0nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW14JzogW3tcbiAgICAgICAgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXknOiBbe1xuICAgICAgICAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXMnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1zJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1lJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tdCc6IFt7XG4gICAgICAgICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tcic6IFt7XG4gICAgICAgICdzY3JvbGwtbXInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWInOiBbe1xuICAgICAgICAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tbCc6IFt7XG4gICAgICAgICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXAnOiBbe1xuICAgICAgICAnc2Nyb2xsLXAnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHgnOiBbe1xuICAgICAgICAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXB5JzogW3tcbiAgICAgICAgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHMnOiBbe1xuICAgICAgICAnc2Nyb2xsLXBzJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcGUnOiBbe1xuICAgICAgICAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHQnOiBbe1xuICAgICAgICAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wcic6IFt7XG4gICAgICAgICdzY3JvbGwtcHInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wYic6IFt7XG4gICAgICAgICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcGwnOiBbe1xuICAgICAgICAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIEFsaWduXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtYWxpZ25cbiAgICAgICAqL1xuICAgICAgJ3NuYXAtYWxpZ24nOiBbe1xuICAgICAgICBzbmFwOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYWxpZ24tbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAqL1xuICAgICAgJ3NuYXAtc3RvcCc6IFt7XG4gICAgICAgIHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ3NuYXAtdHlwZSc6IFt7XG4gICAgICAgIHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZSBTdHJpY3RuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICovXG4gICAgICAnc25hcC1zdHJpY3RuZXNzJzogW3tcbiAgICAgICAgc25hcDogWydtYW5kYXRvcnknLCAncHJveGltaXR5J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgdG91Y2g6IFt7XG4gICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC14JzogW3tcbiAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gteSc6IFt7XG4gICAgICAgICd0b3VjaC1wYW4nOiBbJ3knLCAndXAnLCAnZG93biddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAvKipcbiAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAqL1xuICAgICAgc2VsZWN0OiBbe1xuICAgICAgICBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgKi9cbiAgICAgICd3aWxsLWNoYW5nZSc6IFt7XG4gICAgICAgICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gU1ZHXG4gICAgICAvKipcbiAgICAgICAqIEZpbGxcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWxsXG4gICAgICAgKi9cbiAgICAgIGZpbGw6IFt7XG4gICAgICAgIGZpbGw6IFtjb2xvcnMsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ3N0cm9rZS13JzogW3tcbiAgICAgICAgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTdHJva2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAqL1xuICAgICAgc3Ryb2tlOiBbe1xuICAgICAgICBzdHJva2U6IFtjb2xvcnMsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLy8gQWNjZXNzaWJpbGl0eVxuICAgICAgLyoqXG4gICAgICAgKiBTY3JlZW4gUmVhZGVyc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjcmVlbi1yZWFkZXJzXG4gICAgICAgKi9cbiAgICAgIHNyOiBbJ3NyLW9ubHknLCAnbm90LXNyLW9ubHknXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9yY2VkIENvbG9yIEFkanVzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvcmNlZC1jb2xvci1hZGp1c3RcbiAgICAgICAqL1xuICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbe1xuICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFsnYXV0bycsICdub25lJ11cbiAgICAgIH1dXG4gICAgfSxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICdmdm4tbm9ybWFsJzogWydmdm4tb3JkaW5hbCcsICdmdm4tc2xhc2hlZC16ZXJvJywgJ2Z2bi1maWd1cmUnLCAnZnZuLXNwYWNpbmcnLCAnZnZuLWZyYWN0aW9uJ10sXG4gICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgcm91bmRlZDogWydyb3VuZGVkLXMnLCAncm91bmRlZC1lJywgJ3JvdW5kZWQtdCcsICdyb3VuZGVkLXInLCAncm91bmRlZC1iJywgJ3JvdW5kZWQtbCcsICdyb3VuZGVkLXNzJywgJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZScsICdyb3VuZGVkLWVzJywgJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10cicsICdyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdyb3VuZGVkLXMnOiBbJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1lcyddLFxuICAgICAgJ3JvdW5kZWQtZSc6IFsncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJ10sXG4gICAgICAncm91bmRlZC10JzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInXSxcbiAgICAgICdyb3VuZGVkLXInOiBbJ3JvdW5kZWQtdHInLCAncm91bmRlZC1iciddLFxuICAgICAgJ3JvdW5kZWQtYic6IFsncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAncm91bmRlZC1sJzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdib3JkZXItc3BhY2luZyc6IFsnYm9yZGVyLXNwYWNpbmcteCcsICdib3JkZXItc3BhY2luZy15J10sXG4gICAgICAnYm9yZGVyLXcnOiBbJ2JvcmRlci13LXMnLCAnYm9yZGVyLXctZScsICdib3JkZXItdy10JywgJ2JvcmRlci13LXInLCAnYm9yZGVyLXctYicsICdib3JkZXItdy1sJ10sXG4gICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yJzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItYicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgJ3Njcm9sbC1tJzogWydzY3JvbGwtbXgnLCAnc2Nyb2xsLW15JywgJ3Njcm9sbC1tcycsICdzY3JvbGwtbWUnLCAnc2Nyb2xsLW10JywgJ3Njcm9sbC1tcicsICdzY3JvbGwtbWInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAnc2Nyb2xsLW14JzogWydzY3JvbGwtbXInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAnc2Nyb2xsLW15JzogWydzY3JvbGwtbXQnLCAnc2Nyb2xsLW1iJ10sXG4gICAgICAnc2Nyb2xsLXAnOiBbJ3Njcm9sbC1weCcsICdzY3JvbGwtcHknLCAnc2Nyb2xsLXBzJywgJ3Njcm9sbC1wZScsICdzY3JvbGwtcHQnLCAnc2Nyb2xsLXByJywgJ3Njcm9sbC1wYicsICdzY3JvbGwtcGwnXSxcbiAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXVxuICAgIH0sXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ11cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmNvbnN0IG1lcmdlQ29uZmlncyA9IChiYXNlQ29uZmlnLCB7XG4gIGNhY2hlU2l6ZSxcbiAgcHJlZml4LFxuICBzZXBhcmF0b3IsXG4gIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICBleHRlbmQgPSB7fSxcbiAgb3ZlcnJpZGUgPSB7fVxufSkgPT4ge1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKTtcbiAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZUNvbmZpZ1tjb25maWdLZXldLCBvdmVycmlkZVtjb25maWdLZXldKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZUNvbmZpZ1trZXldLCBleHRlbmRba2V5XSk7XG4gIH1cbiAgcmV0dXJuIGJhc2VDb25maWc7XG59O1xuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IChiYXNlT2JqZWN0LCBvdmVycmlkZUtleSwgb3ZlcnJpZGVWYWx1ZSkgPT4ge1xuICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlO1xuICB9XG59O1xuY29uc3Qgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzID0gKGJhc2VPYmplY3QsIG92ZXJyaWRlT2JqZWN0KSA9PiB7XG4gIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKGJhc2VPYmplY3QsIG1lcmdlT2JqZWN0KSA9PiB7XG4gIGlmIChtZXJnZU9iamVjdCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XTtcbiAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbmNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSAoY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpID0+IHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbicgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKSA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSwgLi4uY3JlYXRlQ29uZmlnKTtcbmNvbnN0IHR3TWVyZ2UgPSAvKiNfX1BVUkVfXyovY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKTtcbmV4cG9ydHMuY3JlYXRlVGFpbHdpbmRNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2U7XG5leHBvcnRzLmV4dGVuZFRhaWx3aW5kTWVyZ2UgPSBleHRlbmRUYWlsd2luZE1lcmdlO1xuZXhwb3J0cy5mcm9tVGhlbWUgPSBmcm9tVGhlbWU7XG5leHBvcnRzLmdldERlZmF1bHRDb25maWcgPSBnZXREZWZhdWx0Q29uZmlnO1xuZXhwb3J0cy5tZXJnZUNvbmZpZ3MgPSBtZXJnZUNvbmZpZ3M7XG5leHBvcnRzLnR3Sm9pbiA9IHR3Sm9pbjtcbmV4cG9ydHMudHdNZXJnZSA9IHR3TWVyZ2U7XG5leHBvcnRzLnZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLWNqcy5qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcnVudGltZSBoZWxwZXIgZm9yIHNldHRpbmcgcHJvcGVydGllcyBvbiBjb21wb25lbnRzXG4vLyBpbiBhIHRyZWUtc2hha2FibGUgd2F5XG5leHBvcnRzLmRlZmF1bHQgPSAoc2ZjLCBwcm9wcykgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHNmYy5fX3ZjY09wdHMgfHwgc2ZjO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBwcm9wcykge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCIiLCJpbXBvcnQgKiBhcyBydW50aW1lRG9tIGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuaW1wb3J0IHsgaW5pdEN1c3RvbUZvcm1hdHRlciwgd2FybiwgcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIgfSBmcm9tICdAdnVlL3J1bnRpbWUtZG9tJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gJ0B2dWUvY29tcGlsZXItZG9tJztcbmltcG9ydCB7IGlzU3RyaW5nLCBOT09QLCBleHRlbmQsIGdlbmVyYXRlQ29kZUZyYW1lIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiBpbml0RGV2KCkge1xyXG4gICAge1xyXG4gICAgICAgIGluaXRDdXN0b21Gb3JtYXR0ZXIoKTtcclxuICAgIH1cclxufVxuXG4vLyBUaGlzIGVudHJ5IGlzIHRoZSBcImZ1bGwtYnVpbGRcIiB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIHJ1bnRpbWVcclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgaW5pdERldigpO1xyXG59XHJcbmNvbnN0IGNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbmZ1bmN0aW9uIGNvbXBpbGVUb0Z1bmN0aW9uKHRlbXBsYXRlLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoIWlzU3RyaW5nKHRlbXBsYXRlKSkge1xyXG4gICAgICAgIGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLmlubmVySFRNTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjogYCwgdGVtcGxhdGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gTk9PUDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXkgPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNvbXBpbGVDYWNoZVtrZXldO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGVtcGxhdGVbMF0gPT09ICcjJykge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0ZW1wbGF0ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZWwpIHtcclxuICAgICAgICAgICAgd2FybihgVGVtcGxhdGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1wdHk6ICR7dGVtcGxhdGV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIF9fVU5TQUZFX19cclxuICAgICAgICAvLyBSZWFzb246IHBvdGVudGlhbCBleGVjdXRpb24gb2YgSlMgZXhwcmVzc2lvbnMgaW4gaW4tRE9NIHRlbXBsYXRlLlxyXG4gICAgICAgIC8vIFRoZSB1c2VyIG11c3QgbWFrZSBzdXJlIHRoZSBpbi1ET00gdGVtcGxhdGUgaXMgdHJ1c3RlZC4gSWYgaXQncyByZW5kZXJlZFxyXG4gICAgICAgIC8vIGJ5IHRoZSBzZXJ2ZXIsIHRoZSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHVzZXIgZGF0YS5cclxuICAgICAgICB0ZW1wbGF0ZSA9IGVsID8gZWwuaW5uZXJIVE1MIDogYGA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcHRzID0gZXh0ZW5kKHtcclxuICAgICAgICBob2lzdFN0YXRpYzogdHJ1ZSxcclxuICAgICAgICBvbkVycm9yOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBvbkVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIG9uV2FybjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gZSA9PiBvbkVycm9yKGUsIHRydWUpIDogTk9PUFxyXG4gICAgfSwgb3B0aW9ucyk7XHJcbiAgICBpZiAoIW9wdHMuaXNDdXN0b21FbGVtZW50ICYmIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBvcHRzLmlzQ3VzdG9tRWxlbWVudCA9IHRhZyA9PiAhIWN1c3RvbUVsZW1lbnRzLmdldCh0YWcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBjb2RlIH0gPSBjb21waWxlKHRlbXBsYXRlLCBvcHRzKTtcclxuICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXJyLCBhc1dhcm5pbmcgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhc1dhcm5pbmdcclxuICAgICAgICAgICAgPyBlcnIubWVzc2FnZVxyXG4gICAgICAgICAgICA6IGBUZW1wbGF0ZSBjb21waWxhdGlvbiBlcnJvcjogJHtlcnIubWVzc2FnZX1gO1xyXG4gICAgICAgIGNvbnN0IGNvZGVGcmFtZSA9IGVyci5sb2MgJiZcclxuICAgICAgICAgICAgZ2VuZXJhdGVDb2RlRnJhbWUodGVtcGxhdGUsIGVyci5sb2Muc3RhcnQub2Zmc2V0LCBlcnIubG9jLmVuZC5vZmZzZXQpO1xyXG4gICAgICAgIHdhcm4oY29kZUZyYW1lID8gYCR7bWVzc2FnZX1cXG4ke2NvZGVGcmFtZX1gIDogbWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICAvLyBUaGUgd2lsZGNhcmQgaW1wb3J0IHJlc3VsdHMgaW4gYSBodWdlIG9iamVjdCB3aXRoIGV2ZXJ5IGV4cG9ydFxyXG4gICAgLy8gd2l0aCBrZXlzIHRoYXQgY2Fubm90IGJlIG1hbmdsZWQsIGFuZCBjYW4gYmUgcXVpdGUgaGVhdnkgc2l6ZS13aXNlLlxyXG4gICAgLy8gSW4gdGhlIGdsb2JhbCBidWlsZCB3ZSBrbm93IGBWdWVgIGlzIGF2YWlsYWJsZSBnbG9iYWxseSBzbyB3ZSBjYW4gYXZvaWRcclxuICAgIC8vIHRoZSB3aWxkY2FyZCBvYmplY3QuXHJcbiAgICBjb25zdCByZW5kZXIgPSAobmV3IEZ1bmN0aW9uKCdWdWUnLCBjb2RlKShydW50aW1lRG9tKSk7XHJcbiAgICByZW5kZXIuX3JjID0gdHJ1ZTtcclxuICAgIHJldHVybiAoY29tcGlsZUNhY2hlW2tleV0gPSByZW5kZXIpO1xyXG59XHJcbnJlZ2lzdGVyUnVudGltZUNvbXBpbGVyKGNvbXBpbGVUb0Z1bmN0aW9uKTtcblxuZXhwb3J0IHsgY29tcGlsZVRvRnVuY3Rpb24gYXMgY29tcGlsZSB9O1xuIiwiaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCByZWFjdGl2ZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG9wZW5CbG9jaywgY3JlYXRlRWxlbWVudEJsb2NrLCBub3JtYWxpemVTdHlsZSwgY3JlYXRlRWxlbWVudFZOb2RlLCByZW5kZXJTbG90IH0gZnJvbSAndnVlJztcblxuZnVuY3Rpb24gcmFuZG9tU3RyaW5nKCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIpO1xufVxuXG52YXIgc2NyaXB0ID0gZGVmaW5lQ29tcG9uZW50KHtcbiAgcHJvcHM6IHtcbiAgICAvLyBTZXRzIHdpZHRoL2RpYW1ldGVyIG9mIHRoZSBpbm5lciBzdHJva2UuXG4gICAgZGlhbWV0ZXI6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDIwMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgdG90YWwgc3RlcHMvcHJvZ3Jlc3MgdG8gdGhlIGVuZC5cbiAgICB0b3RhbFN0ZXBzOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbm5lciBzdHJva2UuXG4gICAgY29tcGxldGVkU3RlcHM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgc3RhcnQgY29sb3Igb2YgdGhlIGlubmVyIHN0cm9rZSAoZ3JhZGllbnQpLlxuICAgIHN0YXJ0Q29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwiIzAwQzU4RVwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBlbmQgY29sb3Igb2YgdGhlIGlubmVyIHN0cm9rZSAoZ3JhZGllbnQpLlxuICAgIHN0b3BDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCIjMDBFMEExXCJcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBpbm5lciBzdHJva2UgdG8gYmUgYXBwbGllZCB0byB0aGUgc2hhcGUuXG4gICAgaW5uZXJTdHJva2VDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCIjMkY0OTVFXCJcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHdpZHRoIG9mIHRoZSBzdHJva2UgdG8gYmUgYXBwbGllZCB0byB0aGUgc2hhcGUuXG4gICAgLy8gUmVhZCBtb3JlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3N0cm9rZS13aWR0aFxuICAgIHN0cm9rZVdpZHRoOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAxMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgIHdpZHRoIG9mIHRoZSBpbm5lciBzdHJva2UgdG8gYmUgYXBwbGllZCB0byB0aGUgc2hhcGUuXG4gICAgaW5uZXJTdHJva2VXaWR0aDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGVuZCBvZiBzdHJva2VkLlxuICAgIC8vIFJlYWQgbW9yZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zdHJva2UtbGluZWNhcFxuICAgIHN0cm9rZUxpbmVjYXA6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwicm91bmRcIlxuICAgIH0sXG4gICAgLy8gU2V0cyBob3cgbG9uZyB0aGUgYW5pbWF0aW9uIHNob3VsZCB0YWtlIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vY3NzcmVmL2NzczNfcHJfYW5pbWF0aW9uLWR1cmF0aW9uLmFzcFxuICAgIGFuaW1hdGVTcGVlZDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMTAwMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgZnJhbWVzIHBlciBzZWNvbmRzIHRvIHVwZGF0ZSBpbm5lciBzdHJva2UgYW5pbWF0aW9uLlxuICAgIGZwczoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogNjBcbiAgICB9LFxuICAgIC8vIFNldHMgaG93IHRoZSBhbmltYXRpb24gcHJvZ3Jlc3NlcyB0aHJvdWdoIHRoZSBkdXJhdGlvbiBvZiBlYWNoIGN5Y2xlLlxuICAgIC8vIFJlYWQgbW9yZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICB0aW1pbmdGdW5jOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcImxpbmVhclwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBpbm5lciBzdHJva2UgZGlyZWN0aW9uLlxuICAgIGlzQ2xvY2t3aXNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH1cbiAgfSxcblxuICBzZXR1cChwcm9wcykge1xuICAgIGNvbnN0IGdyYWRpZW50ID0gcmVhY3RpdmUoe1xuICAgICAgZng6IDAuOTksXG4gICAgICBmeTogMC41LFxuICAgICAgY3g6IDAuNSxcbiAgICAgIGN5OiAwLjUsXG4gICAgICByOiAwLjY1XG4gICAgfSk7XG4gICAgY29uc3QgcmFkaWFsR3JhZGllbnRJZCA9IGByZy0ke3JhbmRvbVN0cmluZygpfWA7XG4gICAgY29uc3Qgc3Ryb2tlRGFzaG9mZnNldCA9IHJlZigwKTtcbiAgICBjb25zdCBjdXJyZW50QW5nbGUgPSByZWYoMCk7XG4gICAgY29uc3QgZ3JhZGllbnRBbmltYXRpb24gPSByZWYobnVsbCk7XG4gICAgY29uc3QgcmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZGlhbWV0ZXIgLyAyKTtcbiAgICBjb25zdCBpbm5lckNpcmNsZURpYW1ldGVyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZGlhbWV0ZXIgLSBwcm9wcy5pbm5lclN0cm9rZVdpZHRoICogMik7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IGNvbXB1dGVkKCgpID0+IE1hdGguUEkgKiBpbm5lckNpcmNsZURpYW1ldGVyLnZhbHVlKTtcbiAgICBjb25zdCBzdGVwU2l6ZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnRvdGFsU3RlcHMgPT09IDAgPyAwIDogMTAwIC8gcHJvcHMudG90YWxTdGVwcyk7XG4gICAgY29uc3QgZmluaXNoZWRQZXJjZW50YWdlID0gY29tcHV0ZWQoKCkgPT4gc3RlcFNpemUudmFsdWUgKiBwcm9wcy5jb21wbGV0ZWRTdGVwcyk7XG4gICAgY29uc3QgY2lyY2xlU2xpY2UgPSBjb21wdXRlZCgoKSA9PiAyICogTWF0aC5QSSAvIHByb3BzLnRvdGFsU3RlcHMpO1xuICAgIGNvbnN0IGFuaW1hdGlvbkluY3JlbWVudHMgPSBjb21wdXRlZCgoKSA9PiAxMDAgLyBwcm9wcy5mcHMpO1xuICAgIGNvbnN0IHRvdGFsUG9pbnRzID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuYW5pbWF0ZVNwZWVkIC8gYW5pbWF0aW9uSW5jcmVtZW50cy52YWx1ZSk7XG4gICAgY29uc3QgYW5pbWF0ZVNsaWNlID0gY29tcHV0ZWQoKCkgPT4gY2lyY2xlU2xpY2UudmFsdWUgLyB0b3RhbFBvaW50cy52YWx1ZSk7XG4gICAgY29uc3QgaW5uZXJDaXJjbGVSYWRpdXMgPSBjb21wdXRlZCgoKSA9PiBpbm5lckNpcmNsZURpYW1ldGVyLnZhbHVlIC8gMik7XG4gICAgY29uc3QgY29udGFpbmVyU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgaGVpZ2h0OiBgJHtwcm9wcy5kaWFtZXRlcn1weGAsXG4gICAgICB3aWR0aDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgXG4gICAgfSkpO1xuICAgIGNvbnN0IHByb2dyZXNzU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgaGVpZ2h0OiBgJHtwcm9wcy5kaWFtZXRlcn1weGAsXG4gICAgICB3aWR0aDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgc3Ryb2tlV2lkdGg6IGAke3Byb3BzLnN0cm9rZVdpZHRofXB4YCxcbiAgICAgIHN0cm9rZURhc2hvZmZzZXQ6IHN0cm9rZURhc2hvZmZzZXQudmFsdWUsXG4gICAgICB0cmFuc2l0aW9uOiBgc3Ryb2tlLWRhc2hvZmZzZXQgJHtwcm9wcy5hbmltYXRlU3BlZWR9bXMgJHtwcm9wcy50aW1pbmdGdW5jfWBcbiAgICB9KSk7XG4gICAgY29uc3Qgc3Ryb2tlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgaGVpZ2h0OiBgJHtwcm9wcy5kaWFtZXRlcn1weGAsXG4gICAgICB3aWR0aDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgc3Ryb2tlV2lkdGg6IGAke3Byb3BzLmlubmVyU3Ryb2tlV2lkdGh9cHhgXG4gICAgfSkpO1xuICAgIGNvbnN0IGlubmVyQ2lyY2xlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgd2lkdGg6IGAke2lubmVyQ2lyY2xlRGlhbWV0ZXIudmFsdWV9cHhgXG4gICAgfSkpO1xuICAgIHdhdGNoKCgpID0+IFtwcm9wcy5kaWFtZXRlciwgcHJvcHMudG90YWxTdGVwcywgcHJvcHMuY29tcGxldGVkU3RlcHMsIHByb3BzLnN0cm9rZVdpZHRoXSwgY2hhbmdlUHJvZ3Jlc3MsIHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0UG9pbnRPZkNpcmNsZShhbmdsZSkge1xuICAgICAgY29uc3QgcmFkaXVzID0gMC41O1xuICAgICAgY29uc3QgeCA9IHJhZGl1cyArIHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICAgIGNvbnN0IHkgPSByYWRpdXMgKyByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdvdG9Qb2ludCgpIHtcbiAgICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRPZkNpcmNsZShjdXJyZW50QW5nbGUudmFsdWUpO1xuXG4gICAgICBpZiAocG9pbnQueCAmJiBwb2ludC55KSB7XG4gICAgICAgIGdyYWRpZW50LmZ4ID0gcG9pbnQueDtcbiAgICAgICAgZ3JhZGllbnQuZnkgPSBwb2ludC55O1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpcmVjdGlvbigpIHtcbiAgICAgIHJldHVybiBwcm9wcy5pc0Nsb2Nrd2lzZSA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGFuZ2VQcm9ncmVzcygpIHtcbiAgICAgIHN0cm9rZURhc2hvZmZzZXQudmFsdWUgPSAoMTAwIC0gZmluaXNoZWRQZXJjZW50YWdlLnZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UudmFsdWUgKiBkaXJlY3Rpb24oKTtcblxuICAgICAgaWYgKGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoZ3JhZGllbnRBbmltYXRpb24udmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbmdsZU9mZnNldCA9IChwcm9wcy5jb21wbGV0ZWRTdGVwcyAtIDEpICogY2lyY2xlU2xpY2UudmFsdWU7XG4gICAgICBsZXQgaSA9IChjdXJyZW50QW5nbGUudmFsdWUgLSBhbmdsZU9mZnNldCkgLyBhbmltYXRlU2xpY2UudmFsdWU7XG4gICAgICBjb25zdCBpbmNyZW1lbnRlciA9IE1hdGguYWJzKGkgLSB0b3RhbFBvaW50cy52YWx1ZSkgLyB0b3RhbFBvaW50cy52YWx1ZTtcbiAgICAgIGNvbnN0IGlzTW92ZUZvcndhcmQgPSBpIDwgdG90YWxQb2ludHMudmFsdWU7XG4gICAgICBncmFkaWVudEFuaW1hdGlvbi52YWx1ZSA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKGlzTW92ZUZvcndhcmQgJiYgaSA+PSB0b3RhbFBvaW50cy52YWx1ZSB8fCAhaXNNb3ZlRm9yd2FyZCAmJiBpIDwgdG90YWxQb2ludHMudmFsdWUpIHtcbiAgICAgICAgICBncmFkaWVudEFuaW1hdGlvbi52YWx1ZSAmJiBjbGVhckludGVydmFsKGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50QW5nbGUudmFsdWUgPSBhbmdsZU9mZnNldCArIGFuaW1hdGVTbGljZS52YWx1ZSAqIGk7XG4gICAgICAgIGdvdG9Qb2ludCgpO1xuICAgICAgICBpICs9IGlzTW92ZUZvcndhcmQgPyBpbmNyZW1lbnRlciA6IC1pbmNyZW1lbnRlcjtcbiAgICAgIH0sIGFuaW1hdGlvbkluY3JlbWVudHMudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBncmFkaWVudEFuaW1hdGlvbixcbiAgICAgIGlubmVyQ2lyY2xlUmFkaXVzLFxuICAgICAgcmFkaWFsR3JhZGllbnRJZCxcbiAgICAgIHN0cm9rZURhc2hvZmZzZXQsXG4gICAgICBpbm5lckNpcmNsZVN0eWxlLFxuICAgICAgY29udGFpbmVyU3R5bGUsXG4gICAgICBjaXJjdW1mZXJlbmNlLFxuICAgICAgcHJvZ3Jlc3NTdHlsZSxcbiAgICAgIGN1cnJlbnRBbmdsZSxcbiAgICAgIHN0cm9rZVN0eWxlLFxuICAgICAgZ3JhZGllbnQsXG4gICAgICByYWRpdXNcbiAgICB9O1xuICB9XG5cbn0pO1xuXG5jb25zdCBfaG9pc3RlZF8xID0gW1wid2lkdGhcIiwgXCJoZWlnaHRcIl07XG5jb25zdCBfaG9pc3RlZF8yID0gW1wiaWRcIiwgXCJmeFwiLCBcImZ5XCIsIFwiY3hcIiwgXCJjeVwiLCBcInJcIl07XG5jb25zdCBfaG9pc3RlZF8zID0gW1wic3RvcC1jb2xvclwiXTtcbmNvbnN0IF9ob2lzdGVkXzQgPSBbXCJzdG9wLWNvbG9yXCJdO1xuY29uc3QgX2hvaXN0ZWRfNSA9IFtcInJcIiwgXCJjeFwiLCBcImN5XCIsIFwic3Ryb2tlXCIsIFwic3Ryb2tlLWRhc2hhcnJheVwiLCBcInN0cm9rZS1saW5lY2FwXCJdO1xuY29uc3QgX2hvaXN0ZWRfNiA9IFtcInRyYW5zZm9ybVwiLCBcInJcIiwgXCJjeFwiLCBcImN5XCIsIFwic3Ryb2tlXCIsIFwic3Ryb2tlLWRhc2hhcnJheVwiLCBcInN0cm9rZS1kYXNob2Zmc2V0XCIsIFwic3Ryb2tlLWxpbmVjYXBcIl07XG5mdW5jdGlvbiByZW5kZXIoX2N0eCwgX2NhY2hlLCAkcHJvcHMsICRzZXR1cCwgJGRhdGEsICRvcHRpb25zKSB7XG4gIHJldHVybiBvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICBjbGFzczogXCJ2cnBfX3dyYXBwZXJcIixcbiAgICBzdHlsZTogbm9ybWFsaXplU3R5bGUoX2N0eC5jb250YWluZXJTdHlsZSlcbiAgfSwgW2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgY2xhc3M6IFwidnJwX19pbm5lclwiLFxuICAgIHN0eWxlOiBub3JtYWxpemVTdHlsZShfY3R4LmlubmVyQ2lyY2xlU3R5bGUpXG4gIH0sIFtyZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImRlZmF1bHRcIildLCA0KSwgKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIiwge1xuICAgIHdpZHRoOiBfY3R4LmRpYW1ldGVyLFxuICAgIGhlaWdodDogX2N0eC5kaWFtZXRlcixcbiAgICB2ZXJzaW9uOiBcIjEuMVwiLFxuICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgfSwgW2NyZWF0ZUVsZW1lbnRWTm9kZShcImRlZnNcIiwgbnVsbCwgW2NyZWF0ZUVsZW1lbnRWTm9kZShcInJhZGlhbEdyYWRpZW50XCIsIHtcbiAgICBpZDogX2N0eC5yYWRpYWxHcmFkaWVudElkLFxuICAgIGZ4OiBfY3R4LmdyYWRpZW50LmZ4LFxuICAgIGZ5OiBfY3R4LmdyYWRpZW50LmZ5LFxuICAgIGN4OiBfY3R4LmdyYWRpZW50LmN4LFxuICAgIGN5OiBfY3R4LmdyYWRpZW50LmN5LFxuICAgIHI6IF9jdHguZ3JhZGllbnQuclxuICB9LCBbY3JlYXRlRWxlbWVudFZOb2RlKFwic3RvcFwiLCB7XG4gICAgb2Zmc2V0OiBcIjMwJVwiLFxuICAgIFwic3RvcC1jb2xvclwiOiBfY3R4LnN0YXJ0Q29sb3JcbiAgfSwgbnVsbCwgOCwgX2hvaXN0ZWRfMyksIGNyZWF0ZUVsZW1lbnRWTm9kZShcInN0b3BcIiwge1xuICAgIG9mZnNldDogXCIxMDAlXCIsXG4gICAgXCJzdG9wLWNvbG9yXCI6IF9jdHguc3RvcENvbG9yXG4gIH0sIG51bGwsIDgsIF9ob2lzdGVkXzQpXSwgOCwgX2hvaXN0ZWRfMildKSwgY3JlYXRlRWxlbWVudFZOb2RlKFwiY2lyY2xlXCIsIHtcbiAgICByOiBfY3R4LmlubmVyQ2lyY2xlUmFkaXVzLFxuICAgIGN4OiBfY3R4LnJhZGl1cyxcbiAgICBjeTogX2N0eC5yYWRpdXMsXG4gICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIHN0cm9rZTogX2N0eC5pbm5lclN0cm9rZUNvbG9yLFxuICAgIFwic3Ryb2tlLWRhc2hhcnJheVwiOiBfY3R4LmNpcmN1bWZlcmVuY2UsXG4gICAgXCJzdHJva2UtZGFzaG9mZnNldFwiOiBcIjBcIixcbiAgICBcInN0cm9rZS1saW5lY2FwXCI6IF9jdHguc3Ryb2tlTGluZWNhcCxcbiAgICBzdHlsZTogbm9ybWFsaXplU3R5bGUoX2N0eC5zdHJva2VTdHlsZSlcbiAgfSwgbnVsbCwgMTIsIF9ob2lzdGVkXzUpLCBjcmVhdGVFbGVtZW50Vk5vZGUoXCJjaXJjbGVcIiwge1xuICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgyNzAsICcgKyBfY3R4LnJhZGl1cyArICcsJyArIF9jdHgucmFkaXVzICsgJyknLFxuICAgIHI6IF9jdHguaW5uZXJDaXJjbGVSYWRpdXMsXG4gICAgY3g6IF9jdHgucmFkaXVzLFxuICAgIGN5OiBfY3R4LnJhZGl1cyxcbiAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXG4gICAgc3Ryb2tlOiBgdXJsKCcjJHtfY3R4LnJhZGlhbEdyYWRpZW50SWR9JylgLFxuICAgIFwic3Ryb2tlLWRhc2hhcnJheVwiOiBfY3R4LmNpcmN1bWZlcmVuY2UsXG4gICAgXCJzdHJva2UtZGFzaG9mZnNldFwiOiBfY3R4LmNpcmN1bWZlcmVuY2UsXG4gICAgXCJzdHJva2UtbGluZWNhcFwiOiBfY3R4LnN0cm9rZUxpbmVjYXAsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHgucHJvZ3Jlc3NTdHlsZSlcbiAgfSwgbnVsbCwgMTIsIF9ob2lzdGVkXzYpXSwgOCwgX2hvaXN0ZWRfMSkpXSwgNCk7XG59XG5cbmZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIGNzc18yNDh6ID0gXCJcXG4udnJwX193cmFwcGVyW2RhdGEtdi02YTBjZjFmNl0ge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4udnJwX19pbm5lcltkYXRhLXYtNmEwY2YxZjZdIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIHJpZ2h0OiAwO1xcclxcbiAgYm90dG9tOiAwO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gIG1hcmdpbjogMCBhdXRvO1xcclxcbiAgZGlzcGxheTogZmxleDtcXHJcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcclxcblwiO1xuc3R5bGVJbmplY3QoY3NzXzI0OHopO1xuXG5zY3JpcHQucmVuZGVyID0gcmVuZGVyO1xuc2NyaXB0Ll9fc2NvcGVJZCA9IFwiZGF0YS12LTZhMGNmMWY2XCI7XG5cbi8vIElJRkUgaW5qZWN0cyBpbnN0YWxsIGZ1bmN0aW9uIGludG8gY29tcG9uZW50LCBhbGxvd2luZyBjb21wb25lbnRcbi8vIHRvIGJlIHJlZ2lzdGVyZWQgdmlhIFZ1ZS51c2UoKSBhcyB3ZWxsIGFzIFZ1ZS5jb21wb25lbnQoKSxcblxudmFyIGVudHJ5X2VzbSA9IC8qI19fUFVSRV9fKi8oKCkgPT4ge1xuICAvLyBBc3NpZ24gSW5zdGFsbGFibGVDb21wb25lbnQgdHlwZVxuICBjb25zdCBpbnN0YWxsYWJsZSA9IHNjcmlwdDsgLy8gQXR0YWNoIGluc3RhbGwgZnVuY3Rpb24gZXhlY3V0ZWQgYnkgVnVlLnVzZSgpXG5cbiAgaW5zdGFsbGFibGUuaW5zdGFsbCA9IGFwcCA9PiB7XG4gICAgYXBwLmNvbXBvbmVudChcIlJhZGlhbFByb2dyZXNzQmFyXCIsIGluc3RhbGxhYmxlKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFsbGFibGU7XG59KSgpOyAvLyBJdCdzIHBvc3NpYmxlIHRvIGV4cG9zZSBuYW1lZCBleHBvcnRzIHdoZW4gd3JpdGluZyBjb21wb25lbnRzIHRoYXQgY2FuXG4vLyBhbHNvIGJlIHVzZWQgYXMgZGlyZWN0aXZlcywgZXRjLiAtIGVnLiBpbXBvcnQgeyBSb2xsdXBEZW1vRGlyZWN0aXZlIH0gZnJvbSAncm9sbHVwLWRlbW8nO1xuLy8gZXhwb3J0IGNvbnN0IFJvbGx1cERlbW9EaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG5cbmV4cG9ydCB7IGVudHJ5X2VzbSBhcyBkZWZhdWx0IH07XG4iLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSx0KTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlZ1ZVNtb290aFNjcm9sbD10KCk6ZS5WdWVTbW9vdGhTY3JvbGw9dCgpfSh0aGlzLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKG8pe2lmKHRbb10pcmV0dXJuIHRbb10uZXhwb3J0czt2YXIgcj10W29dPXtpOm8sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtvXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxuKSxyLmw9ITAsci5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmQ9ZnVuY3Rpb24oZSx0LG8pe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpvfSl9LG4ucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPW4oZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIG89T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIobyksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpZm9yKHZhciByIGluIGUpbi5kKG8scixmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLHIpKTtyZXR1cm4gb30sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCxcImFcIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD1cIlwiLG4obi5zPTApfShbZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHIoZSl7cmV0dXJuKHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKGUpfXZhciBpO24ucih0KTt2YXIgdT1mdW5jdGlvbihlKXtyZXR1cm4gZTwuNT80KmUqZSplOihlLTEpKigyKmUtMikqKDIqZS0yKSsxfSxjPWZ1bmN0aW9uKCl7cmV0dXJue2R1cmF0aW9uOjUwMCxvZmZzZXQ6MCxjb250YWluZXI6d2luZG93LHVwZGF0ZUhpc3Rvcnk6ITAsZWFzaW5nRnVuY3Rpb246bnVsbH19LGw9U3ltYm9sKFwic21vb3RoU2Nyb2xsQ3R4XCIpLGY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zY3JvbGxUbyxuPWUub2Zmc2V0LG89ZS5kdXJhdGlvbixyPWUuY29udGFpbmVyLGM9ZS51cGRhdGVIaXN0b3J5LGw9ZS5oYXNoLGY9ZS5lYXNpbmdGdW5jdGlvbjtpfHwoaT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZSwxNil9KSxjJiZ3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUmJmxvY2F0aW9uLmhhc2ghPT1sJiZ3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoXCJcIixcIlwiLGwpO3ZhciBhLHMsZD1cIm51bWJlclwiPT10eXBlb2YgdCxwPXIuc2Nyb2xsVG9wfHx3aW5kb3cucGFnZVlPZmZzZXQseT0oZD90OihzPXAsXCJIVE1MXCI9PT0oYT10KS5ub2RlTmFtZT8tczphLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCtzKSkrbixiPVwiZnVuY3Rpb25cIj09dHlwZW9mIGY/Zjp1LG09RGF0ZS5ub3coKTshZnVuY3Rpb24gZSgpe3ZhciBuPURhdGUubm93KCktbSx1PW48byxsPXU/cCsoeS1wKSpiKG4vbyk6eTt1P2koZSk6YyYmIWQmJmxvY2F0aW9uLnJlcGxhY2UoXCIjXCIrdC5pZCkscj09PXdpbmRvdz9yLnNjcm9sbFRvKDAsbCk6ci5zY3JvbGxUb3A9bH0oKX0sYT17aW5zdGFsbDpmdW5jdGlvbihlLHQpe3ZhciBuLGk9IWUudmVyc2lvbi5zdGFydHNXaXRoKFwiM1wiKSx1PWZ1bmN0aW9uKCl7cmV0dXJuIHQ/T2JqZWN0LmFzc2lnbihjKCksdCk6YygpfTtlLmRpcmVjdGl2ZShcInNtb290aC1zY3JvbGxcIiwobyhuPXt9LGk/XCJpbnNlcnRlZFwiOlwibW91bnRlZFwiLChmdW5jdGlvbihlLHQsbil7aWYoXCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6cih3aW5kb3cpKSYmdm9pZCAwIT09d2luZG93LnBhZ2VZT2Zmc2V0KXt2YXIgbz1PYmplY3QuYXNzaWduKHUoKSx0LnZhbHVlKTtcInN0cmluZ1wiPT10eXBlb2Ygby5jb250YWluZXImJihvLmNvbnRhaW5lcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKG8uY29udGFpbmVyKSk7dmFyIGM9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PWk/bi5kYXRhLmF0dHJzLmhyZWY6bi5wcm9wcy5ocmVmLHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodC5zdWJzdHJpbmcoMSkpO3ImJmYoT2JqZWN0LmFzc2lnbihvLHtzY3JvbGxUbzpyLGhhc2g6dH0pKX07ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixjKSxlW2xdPXtjbGlja0hhbmRsZXI6Y319fSkpLG8obixpP1widW5iaW5kXCI6XCJ1bm1vdW50ZWRcIiwoZnVuY3Rpb24oZSl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlW2xdLmNsaWNrSGFuZGxlciksZVtsXT1udWxsfSkpLG4pKTt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHUoKSxlKTtyZXR1cm4gZih0KX07KGk/ZS5wcm90b3R5cGU6ZS5jb25maWcuZ2xvYmFsUHJvcGVydGllcykuJHNtb290aFNjcm9sbD1hLGl8fGUucHJvdmlkZShcInNtb290aFNjcm9sbFwiLGEpfX07dC5kZWZhdWx0PWF9XSkuZGVmYXVsdH0pKTsiLCIvKiFcbiAqIHZ1ZXggdjQuMS4wXG4gKiAoYykgMjAyMiBFdmFuIFlvdVxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbmltcG9ydCB7IGluamVjdCwgZWZmZWN0U2NvcGUsIHJlYWN0aXZlLCB3YXRjaCwgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgc2V0dXBEZXZ0b29sc1BsdWdpbiB9IGZyb20gJ0B2dWUvZGV2dG9vbHMtYXBpJztcblxudmFyIHN0b3JlS2V5ID0gJ3N0b3JlJztcblxuZnVuY3Rpb24gdXNlU3RvcmUgKGtleSkge1xuICBpZiAoIGtleSA9PT0gdm9pZCAwICkga2V5ID0gbnVsbDtcblxuICByZXR1cm4gaW5qZWN0KGtleSAhPT0gbnVsbCA/IGtleSA6IHN0b3JlS2V5KVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgaXRlbSB0aGF0IHBhc3MgdGhlIHRlc3RcbiAqIGJ5IHNlY29uZCBhcmd1bWVudCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGxpc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGZpbmQgKGxpc3QsIGYpIHtcbiAgcmV0dXJuIGxpc3QuZmlsdGVyKGYpWzBdXG59XG5cbi8qKlxuICogRGVlcCBjb3B5IHRoZSBnaXZlbiBvYmplY3QgY29uc2lkZXJpbmcgY2lyY3VsYXIgc3RydWN0dXJlLlxuICogVGhpcyBmdW5jdGlvbiBjYWNoZXMgYWxsIG5lc3RlZCBvYmplY3RzIGFuZCBpdHMgY29waWVzLlxuICogSWYgaXQgZGV0ZWN0cyBjaXJjdWxhciBzdHJ1Y3R1cmUsIHVzZSBjYWNoZWQgY29weSB0byBhdm9pZCBpbmZpbml0ZSBsb29wLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGNhY2hlXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBkZWVwQ29weSAob2JqLCBjYWNoZSkge1xuICBpZiAoIGNhY2hlID09PSB2b2lkIDAgKSBjYWNoZSA9IFtdO1xuXG4gIC8vIGp1c3QgcmV0dXJuIGlmIG9iaiBpcyBpbW11dGFibGUgdmFsdWVcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmpcbiAgfVxuXG4gIC8vIGlmIG9iaiBpcyBoaXQsIGl0IGlzIGluIGNpcmN1bGFyIHN0cnVjdHVyZVxuICB2YXIgaGl0ID0gZmluZChjYWNoZSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMub3JpZ2luYWwgPT09IG9iajsgfSk7XG4gIGlmIChoaXQpIHtcbiAgICByZXR1cm4gaGl0LmNvcHlcbiAgfVxuXG4gIHZhciBjb3B5ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcbiAgLy8gcHV0IHRoZSBjb3B5IGludG8gY2FjaGUgYXQgZmlyc3RcbiAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHJlZmVyIGl0IGluIHJlY3Vyc2l2ZSBkZWVwQ29weVxuICBjYWNoZS5wdXNoKHtcbiAgICBvcmlnaW5hbDogb2JqLFxuICAgIGNvcHk6IGNvcHlcbiAgfSk7XG5cbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBjb3B5W2tleV0gPSBkZWVwQ29weShvYmpba2V5XSwgY2FjaGUpO1xuICB9KTtcblxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIGZvckVhY2ggZm9yIG9iamVjdFxuICovXG5mdW5jdGlvbiBmb3JFYWNoVmFsdWUgKG9iaiwgZm4pIHtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGZuKG9ialtrZXldLCBrZXkpOyB9KTtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAodmFsKSB7XG4gIHJldHVybiB2YWwgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAoY29uZGl0aW9uLCBtc2cpIHtcbiAgaWYgKCFjb25kaXRpb24pIHsgdGhyb3cgbmV3IEVycm9yKChcIlt2dWV4XSBcIiArIG1zZykpIH1cbn1cblxuZnVuY3Rpb24gcGFydGlhbCAoZm4sIGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbihhcmcpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N1YnNjcmliZSAoZm4sIHN1YnMsIG9wdGlvbnMpIHtcbiAgaWYgKHN1YnMuaW5kZXhPZihmbikgPCAwKSB7XG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnByZXBlbmRcbiAgICAgID8gc3Vicy51bnNoaWZ0KGZuKVxuICAgICAgOiBzdWJzLnB1c2goZm4pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGkgPSBzdWJzLmluZGV4T2YoZm4pO1xuICAgIGlmIChpID4gLTEpIHtcbiAgICAgIHN1YnMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlIChzdG9yZSwgaG90KSB7XG4gIHN0b3JlLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHN0YXRlID0gc3RvcmUuc3RhdGU7XG4gIC8vIGluaXQgYWxsIG1vZHVsZXNcbiAgaW5zdGFsbE1vZHVsZShzdG9yZSwgc3RhdGUsIFtdLCBzdG9yZS5fbW9kdWxlcy5yb290LCB0cnVlKTtcbiAgLy8gcmVzZXQgc3RhdGVcbiAgcmVzZXRTdG9yZVN0YXRlKHN0b3JlLCBzdGF0ZSwgaG90KTtcbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZVN0YXRlIChzdG9yZSwgc3RhdGUsIGhvdCkge1xuICB2YXIgb2xkU3RhdGUgPSBzdG9yZS5fc3RhdGU7XG4gIHZhciBvbGRTY29wZSA9IHN0b3JlLl9zY29wZTtcblxuICAvLyBiaW5kIHN0b3JlIHB1YmxpYyBnZXR0ZXJzXG4gIHN0b3JlLmdldHRlcnMgPSB7fTtcbiAgLy8gcmVzZXQgbG9jYWwgZ2V0dGVycyBjYWNoZVxuICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHdyYXBwZWRHZXR0ZXJzID0gc3RvcmUuX3dyYXBwZWRHZXR0ZXJzO1xuICB2YXIgY29tcHV0ZWRPYmogPSB7fTtcbiAgdmFyIGNvbXB1dGVkQ2FjaGUgPSB7fTtcblxuICAvLyBjcmVhdGUgYSBuZXcgZWZmZWN0IHNjb3BlIGFuZCBjcmVhdGUgY29tcHV0ZWQgb2JqZWN0IGluc2lkZSBpdCB0byBhdm9pZFxuICAvLyBnZXR0ZXJzIChjb21wdXRlZCkgZ2V0dGluZyBkZXN0cm95ZWQgb24gY29tcG9uZW50IHVubW91bnQuXG4gIHZhciBzY29wZSA9IGVmZmVjdFNjb3BlKHRydWUpO1xuXG4gIHNjb3BlLnJ1bihmdW5jdGlvbiAoKSB7XG4gICAgZm9yRWFjaFZhbHVlKHdyYXBwZWRHZXR0ZXJzLCBmdW5jdGlvbiAoZm4sIGtleSkge1xuICAgICAgLy8gdXNlIGNvbXB1dGVkIHRvIGxldmVyYWdlIGl0cyBsYXp5LWNhY2hpbmcgbWVjaGFuaXNtXG4gICAgICAvLyBkaXJlY3QgaW5saW5lIGZ1bmN0aW9uIHVzZSB3aWxsIGxlYWQgdG8gY2xvc3VyZSBwcmVzZXJ2aW5nIG9sZFN0YXRlLlxuICAgICAgLy8gdXNpbmcgcGFydGlhbCB0byByZXR1cm4gZnVuY3Rpb24gd2l0aCBvbmx5IGFyZ3VtZW50cyBwcmVzZXJ2ZWQgaW4gY2xvc3VyZSBlbnZpcm9ubWVudC5cbiAgICAgIGNvbXB1dGVkT2JqW2tleV0gPSBwYXJ0aWFsKGZuLCBzdG9yZSk7XG4gICAgICBjb21wdXRlZENhY2hlW2tleV0gPSBjb21wdXRlZChmdW5jdGlvbiAoKSB7IHJldHVybiBjb21wdXRlZE9ialtrZXldKCk7IH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0b3JlLmdldHRlcnMsIGtleSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbXB1dGVkQ2FjaGVba2V5XS52YWx1ZTsgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSAvLyBmb3IgbG9jYWwgZ2V0dGVyc1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0b3JlLl9zdGF0ZSA9IHJlYWN0aXZlKHtcbiAgICBkYXRhOiBzdGF0ZVxuICB9KTtcblxuICAvLyByZWdpc3RlciB0aGUgbmV3bHkgY3JlYXRlZCBlZmZlY3Qgc2NvcGUgdG8gdGhlIHN0b3JlIHNvIHRoYXQgd2UgY2FuXG4gIC8vIGRpc3Bvc2UgdGhlIGVmZmVjdHMgd2hlbiB0aGlzIG1ldGhvZCBydW5zIGFnYWluIGluIHRoZSBmdXR1cmUuXG4gIHN0b3JlLl9zY29wZSA9IHNjb3BlO1xuXG4gIC8vIGVuYWJsZSBzdHJpY3QgbW9kZSBmb3IgbmV3IHN0YXRlXG4gIGlmIChzdG9yZS5zdHJpY3QpIHtcbiAgICBlbmFibGVTdHJpY3RNb2RlKHN0b3JlKTtcbiAgfVxuXG4gIGlmIChvbGRTdGF0ZSkge1xuICAgIGlmIChob3QpIHtcbiAgICAgIC8vIGRpc3BhdGNoIGNoYW5nZXMgaW4gYWxsIHN1YnNjcmliZWQgd2F0Y2hlcnNcbiAgICAgIC8vIHRvIGZvcmNlIGdldHRlciByZS1ldmFsdWF0aW9uIGZvciBob3QgcmVsb2FkaW5nLlxuICAgICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBvbGRTdGF0ZS5kYXRhID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGRpc3Bvc2UgcHJldmlvdXNseSByZWdpc3RlcmVkIGVmZmVjdCBzY29wZSBpZiB0aGVyZSBpcyBvbmUuXG4gIGlmIChvbGRTY29wZSkge1xuICAgIG9sZFNjb3BlLnN0b3AoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsTW9kdWxlIChzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLCBtb2R1bGUsIGhvdCkge1xuICB2YXIgaXNSb290ID0gIXBhdGgubGVuZ3RoO1xuICB2YXIgbmFtZXNwYWNlID0gc3RvcmUuX21vZHVsZXMuZ2V0TmFtZXNwYWNlKHBhdGgpO1xuXG4gIC8vIHJlZ2lzdGVyIGluIG5hbWVzcGFjZSBtYXBcbiAgaWYgKG1vZHVsZS5uYW1lc3BhY2VkKSB7XG4gICAgaWYgKHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV0gJiYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgbmFtZXNwYWNlIFwiICsgbmFtZXNwYWNlICsgXCIgZm9yIHRoZSBuYW1lc3BhY2VkIG1vZHVsZSBcIiArIChwYXRoLmpvaW4oJy8nKSkpKTtcbiAgICB9XG4gICAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSA9IG1vZHVsZTtcbiAgfVxuXG4gIC8vIHNldCBzdGF0ZVxuICBpZiAoIWlzUm9vdCAmJiAhaG90KSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUocm9vdFN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgdmFyIG1vZHVsZU5hbWUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICBpZiAobW9kdWxlTmFtZSBpbiBwYXJlbnRTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIChcIlt2dWV4XSBzdGF0ZSBmaWVsZCBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIHdhcyBvdmVycmlkZGVuIGJ5IGEgbW9kdWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhdCBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50U3RhdGVbbW9kdWxlTmFtZV0gPSBtb2R1bGUuc3RhdGU7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgbG9jYWwgPSBtb2R1bGUuY29udGV4dCA9IG1ha2VMb2NhbENvbnRleHQoc3RvcmUsIG5hbWVzcGFjZSwgcGF0aCk7XG5cbiAgbW9kdWxlLmZvckVhY2hNdXRhdGlvbihmdW5jdGlvbiAobXV0YXRpb24sIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3Rlck11dGF0aW9uKHN0b3JlLCBuYW1lc3BhY2VkVHlwZSwgbXV0YXRpb24sIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwga2V5KSB7XG4gICAgdmFyIHR5cGUgPSBhY3Rpb24ucm9vdCA/IGtleSA6IG5hbWVzcGFjZSArIGtleTtcbiAgICB2YXIgaGFuZGxlciA9IGFjdGlvbi5oYW5kbGVyIHx8IGFjdGlvbjtcbiAgICByZWdpc3RlckFjdGlvbihzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEdldHRlcihmdW5jdGlvbiAoZ2V0dGVyLCBrZXkpIHtcbiAgICB2YXIgbmFtZXNwYWNlZFR5cGUgPSBuYW1lc3BhY2UgKyBrZXk7XG4gICAgcmVnaXN0ZXJHZXR0ZXIoc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBnZXR0ZXIsIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hDaGlsZChmdW5jdGlvbiAoY2hpbGQsIGtleSkge1xuICAgIGluc3RhbGxNb2R1bGUoc3RvcmUsIHJvb3RTdGF0ZSwgcGF0aC5jb25jYXQoa2V5KSwgY2hpbGQsIGhvdCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIG1ha2UgbG9jYWxpemVkIGRpc3BhdGNoLCBjb21taXQsIGdldHRlcnMgYW5kIHN0YXRlXG4gKiBpZiB0aGVyZSBpcyBubyBuYW1lc3BhY2UsIGp1c3QgdXNlIHJvb3Qgb25lc1xuICovXG5mdW5jdGlvbiBtYWtlTG9jYWxDb250ZXh0IChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKSB7XG4gIHZhciBub05hbWVzcGFjZSA9IG5hbWVzcGFjZSA9PT0gJyc7XG5cbiAgdmFyIGxvY2FsID0ge1xuICAgIGRpc3BhdGNoOiBub05hbWVzcGFjZSA/IHN0b3JlLmRpc3BhdGNoIDogZnVuY3Rpb24gKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICAgIHZhciBwYXlsb2FkID0gYXJncy5wYXlsb2FkO1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzLm9wdGlvbnM7XG4gICAgICB2YXIgdHlwZSA9IGFyZ3MudHlwZTtcblxuICAgICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnJvb3QpIHtcbiAgICAgICAgdHlwZSA9IG5hbWVzcGFjZSArIHR5cGU7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXN0b3JlLl9hY3Rpb25zW3R5cGVdKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBsb2NhbCBhY3Rpb24gdHlwZTogXCIgKyAoYXJncy50eXBlKSArIFwiLCBnbG9iYWwgdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0b3JlLmRpc3BhdGNoKHR5cGUsIHBheWxvYWQpXG4gICAgfSxcblxuICAgIGNvbW1pdDogbm9OYW1lc3BhY2UgPyBzdG9yZS5jb21taXQgOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc3RvcmUuX211dGF0aW9uc1t0eXBlXSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbG9jYWwgbXV0YXRpb24gdHlwZTogXCIgKyAoYXJncy50eXBlKSArIFwiLCBnbG9iYWwgdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RvcmUuY29tbWl0KHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfTtcblxuICAvLyBnZXR0ZXJzIGFuZCBzdGF0ZSBvYmplY3QgbXVzdCBiZSBnb3R0ZW4gbGF6aWx5XG4gIC8vIGJlY2F1c2UgdGhleSB3aWxsIGJlIGNoYW5nZWQgYnkgc3RhdGUgdXBkYXRlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxvY2FsLCB7XG4gICAgZ2V0dGVyczoge1xuICAgICAgZ2V0OiBub05hbWVzcGFjZVxuICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLmdldHRlcnM7IH1cbiAgICAgICAgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtYWtlTG9jYWxHZXR0ZXJzKHN0b3JlLCBuYW1lc3BhY2UpOyB9XG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBnZXROZXN0ZWRTdGF0ZShzdG9yZS5zdGF0ZSwgcGF0aCk7IH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBsb2NhbFxufVxuXG5mdW5jdGlvbiBtYWtlTG9jYWxHZXR0ZXJzIChzdG9yZSwgbmFtZXNwYWNlKSB7XG4gIGlmICghc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtuYW1lc3BhY2VdKSB7XG4gICAgdmFyIGdldHRlcnNQcm94eSA9IHt9O1xuICAgIHZhciBzcGxpdFBvcyA9IG5hbWVzcGFjZS5sZW5ndGg7XG4gICAgT2JqZWN0LmtleXMoc3RvcmUuZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgICAgLy8gc2tpcCBpZiB0aGUgdGFyZ2V0IGdldHRlciBpcyBub3QgbWF0Y2ggdGhpcyBuYW1lc3BhY2VcbiAgICAgIGlmICh0eXBlLnNsaWNlKDAsIHNwbGl0UG9zKSAhPT0gbmFtZXNwYWNlKSB7IHJldHVybiB9XG5cbiAgICAgIC8vIGV4dHJhY3QgbG9jYWwgZ2V0dGVyIHR5cGVcbiAgICAgIHZhciBsb2NhbFR5cGUgPSB0eXBlLnNsaWNlKHNwbGl0UG9zKTtcblxuICAgICAgLy8gQWRkIGEgcG9ydCB0byB0aGUgZ2V0dGVycyBwcm94eS5cbiAgICAgIC8vIERlZmluZSBhcyBnZXR0ZXIgcHJvcGVydHkgYmVjYXVzZVxuICAgICAgLy8gd2UgZG8gbm90IHdhbnQgdG8gZXZhbHVhdGUgdGhlIGdldHRlcnMgaW4gdGhpcyB0aW1lLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdldHRlcnNQcm94eSwgbG9jYWxUeXBlLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZ2V0dGVyc1t0eXBlXTsgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtuYW1lc3BhY2VdID0gZ2V0dGVyc1Byb3h5O1xuICB9XG5cbiAgcmV0dXJuIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXVxufVxuXG5mdW5jdGlvbiByZWdpc3Rlck11dGF0aW9uIChzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpIHtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuX211dGF0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX211dGF0aW9uc1t0eXBlXSA9IFtdKTtcbiAgZW50cnkucHVzaChmdW5jdGlvbiB3cmFwcGVkTXV0YXRpb25IYW5kbGVyIChwYXlsb2FkKSB7XG4gICAgaGFuZGxlci5jYWxsKHN0b3JlLCBsb2NhbC5zdGF0ZSwgcGF5bG9hZCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckFjdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9hY3Rpb25zW3R5cGVdIHx8IChzdG9yZS5fYWN0aW9uc1t0eXBlXSA9IFtdKTtcbiAgZW50cnkucHVzaChmdW5jdGlvbiB3cmFwcGVkQWN0aW9uSGFuZGxlciAocGF5bG9hZCkge1xuICAgIHZhciByZXMgPSBoYW5kbGVyLmNhbGwoc3RvcmUsIHtcbiAgICAgIGRpc3BhdGNoOiBsb2NhbC5kaXNwYXRjaCxcbiAgICAgIGNvbW1pdDogbG9jYWwuY29tbWl0LFxuICAgICAgZ2V0dGVyczogbG9jYWwuZ2V0dGVycyxcbiAgICAgIHN0YXRlOiBsb2NhbC5zdGF0ZSxcbiAgICAgIHJvb3RHZXR0ZXJzOiBzdG9yZS5nZXR0ZXJzLFxuICAgICAgcm9vdFN0YXRlOiBzdG9yZS5zdGF0ZVxuICAgIH0sIHBheWxvYWQpO1xuICAgIGlmICghaXNQcm9taXNlKHJlcykpIHtcbiAgICAgIHJlcyA9IFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgIH1cbiAgICBpZiAoc3RvcmUuX2RldnRvb2xIb29rKSB7XG4gICAgICByZXR1cm4gcmVzLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgc3RvcmUuX2RldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6ZXJyb3InLCBlcnIpO1xuICAgICAgICB0aHJvdyBlcnJcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXNcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckdldHRlciAoc3RvcmUsIHR5cGUsIHJhd0dldHRlciwgbG9jYWwpIHtcbiAgaWYgKHN0b3JlLl93cmFwcGVkR2V0dGVyc1t0eXBlXSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIGR1cGxpY2F0ZSBnZXR0ZXIga2V5OiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdID0gZnVuY3Rpb24gd3JhcHBlZEdldHRlciAoc3RvcmUpIHtcbiAgICByZXR1cm4gcmF3R2V0dGVyKFxuICAgICAgbG9jYWwuc3RhdGUsIC8vIGxvY2FsIHN0YXRlXG4gICAgICBsb2NhbC5nZXR0ZXJzLCAvLyBsb2NhbCBnZXR0ZXJzXG4gICAgICBzdG9yZS5zdGF0ZSwgLy8gcm9vdCBzdGF0ZVxuICAgICAgc3RvcmUuZ2V0dGVycyAvLyByb290IGdldHRlcnNcbiAgICApXG4gIH07XG59XG5cbmZ1bmN0aW9uIGVuYWJsZVN0cmljdE1vZGUgKHN0b3JlKSB7XG4gIHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLl9zdGF0ZS5kYXRhOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgYXNzZXJ0KHN0b3JlLl9jb21taXR0aW5nLCBcImRvIG5vdCBtdXRhdGUgdnVleCBzdG9yZSBzdGF0ZSBvdXRzaWRlIG11dGF0aW9uIGhhbmRsZXJzLlwiKTtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSwgZmx1c2g6ICdzeW5jJyB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0TmVzdGVkU3RhdGUgKHN0YXRlLCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAoc3RhdGUsIGtleSkgeyByZXR1cm4gc3RhdGVba2V5XTsgfSwgc3RhdGUpXG59XG5cbmZ1bmN0aW9uIHVuaWZ5T2JqZWN0U3R5bGUgKHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpIHtcbiAgaWYgKGlzT2JqZWN0KHR5cGUpICYmIHR5cGUudHlwZSkge1xuICAgIG9wdGlvbnMgPSBwYXlsb2FkO1xuICAgIHBheWxvYWQgPSB0eXBlO1xuICAgIHR5cGUgPSB0eXBlLnR5cGU7XG4gIH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJywgKFwiZXhwZWN0cyBzdHJpbmcgYXMgdGhlIHR5cGUsIGJ1dCBmb3VuZCBcIiArICh0eXBlb2YgdHlwZSkgKyBcIi5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCwgb3B0aW9uczogb3B0aW9ucyB9XG59XG5cbnZhciBMQUJFTF9WVUVYX0JJTkRJTkdTID0gJ3Z1ZXggYmluZGluZ3MnO1xudmFyIE1VVEFUSU9OU19MQVlFUl9JRCA9ICd2dWV4Om11dGF0aW9ucyc7XG52YXIgQUNUSU9OU19MQVlFUl9JRCA9ICd2dWV4OmFjdGlvbnMnO1xudmFyIElOU1BFQ1RPUl9JRCA9ICd2dWV4JztcblxudmFyIGFjdGlvbklkID0gMDtcblxuZnVuY3Rpb24gYWRkRGV2dG9vbHMgKGFwcCwgc3RvcmUpIHtcbiAgc2V0dXBEZXZ0b29sc1BsdWdpbihcbiAgICB7XG4gICAgICBpZDogJ29yZy52dWVqcy52dWV4JyxcbiAgICAgIGFwcDogYXBwLFxuICAgICAgbGFiZWw6ICdWdWV4JyxcbiAgICAgIGhvbWVwYWdlOiAnaHR0cHM6Ly9uZXh0LnZ1ZXgudnVlanMub3JnLycsXG4gICAgICBsb2dvOiAnaHR0cHM6Ly92dWVqcy5vcmcvaW1hZ2VzL2ljb25zL2Zhdmljb24tOTZ4OTYucG5nJyxcbiAgICAgIHBhY2thZ2VOYW1lOiAndnVleCcsXG4gICAgICBjb21wb25lbnRTdGF0ZVR5cGVzOiBbTEFCRUxfVlVFWF9CSU5ESU5HU11cbiAgICB9LFxuICAgIGZ1bmN0aW9uIChhcGkpIHtcbiAgICAgIGFwaS5hZGRUaW1lbGluZUxheWVyKHtcbiAgICAgICAgaWQ6IE1VVEFUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgbGFiZWw6ICdWdWV4IE11dGF0aW9ucycsXG4gICAgICAgIGNvbG9yOiBDT0xPUl9MSU1FXzUwMFxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5hZGRUaW1lbGluZUxheWVyKHtcbiAgICAgICAgaWQ6IEFDVElPTlNfTEFZRVJfSUQsXG4gICAgICAgIGxhYmVsOiAnVnVleCBBY3Rpb25zJyxcbiAgICAgICAgY29sb3I6IENPTE9SX0xJTUVfNTAwXG4gICAgICB9KTtcblxuICAgICAgYXBpLmFkZEluc3BlY3Rvcih7XG4gICAgICAgIGlkOiBJTlNQRUNUT1JfSUQsXG4gICAgICAgIGxhYmVsOiAnVnVleCcsXG4gICAgICAgIGljb246ICdzdG9yYWdlJyxcbiAgICAgICAgdHJlZUZpbHRlclBsYWNlaG9sZGVyOiAnRmlsdGVyIHN0b3Jlcy4uLidcbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZShmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICBpZiAocGF5bG9hZC5hcHAgPT09IGFwcCAmJiBwYXlsb2FkLmluc3BlY3RvcklkID09PSBJTlNQRUNUT1JfSUQpIHtcbiAgICAgICAgICBpZiAocGF5bG9hZC5maWx0ZXIpIHtcbiAgICAgICAgICAgIHZhciBub2RlcyA9IFtdO1xuICAgICAgICAgICAgZmxhdHRlblN0b3JlRm9ySW5zcGVjdG9yVHJlZShub2Rlcywgc3RvcmUuX21vZHVsZXMucm9vdCwgcGF5bG9hZC5maWx0ZXIsICcnKTtcbiAgICAgICAgICAgIHBheWxvYWQucm9vdE5vZGVzID0gbm9kZXM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQucm9vdE5vZGVzID0gW1xuICAgICAgICAgICAgICBmb3JtYXRTdG9yZUZvckluc3BlY3RvclRyZWUoc3RvcmUuX21vZHVsZXMucm9vdCwgJycpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5vbi5nZXRJbnNwZWN0b3JTdGF0ZShmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICBpZiAocGF5bG9hZC5hcHAgPT09IGFwcCAmJiBwYXlsb2FkLmluc3BlY3RvcklkID09PSBJTlNQRUNUT1JfSUQpIHtcbiAgICAgICAgICB2YXIgbW9kdWxlUGF0aCA9IHBheWxvYWQubm9kZUlkO1xuICAgICAgICAgIG1ha2VMb2NhbEdldHRlcnMoc3RvcmUsIG1vZHVsZVBhdGgpO1xuICAgICAgICAgIHBheWxvYWQuc3RhdGUgPSBmb3JtYXRTdG9yZUZvckluc3BlY3RvclN0YXRlKFxuICAgICAgICAgICAgZ2V0U3RvcmVNb2R1bGUoc3RvcmUuX21vZHVsZXMsIG1vZHVsZVBhdGgpLFxuICAgICAgICAgICAgbW9kdWxlUGF0aCA9PT0gJ3Jvb3QnID8gc3RvcmUuZ2V0dGVycyA6IHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGUsXG4gICAgICAgICAgICBtb2R1bGVQYXRoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5vbi5lZGl0SW5zcGVjdG9yU3RhdGUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgdmFyIG1vZHVsZVBhdGggPSBwYXlsb2FkLm5vZGVJZDtcbiAgICAgICAgICB2YXIgcGF0aCA9IHBheWxvYWQucGF0aDtcbiAgICAgICAgICBpZiAobW9kdWxlUGF0aCAhPT0gJ3Jvb3QnKSB7XG4gICAgICAgICAgICBwYXRoID0gbW9kdWxlUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKS5jb25jYXQoIHBhdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnNldChzdG9yZS5fc3RhdGUuZGF0YSwgcGF0aCwgcGF5bG9hZC5zdGF0ZS52YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgICAgICB2YXIgZGF0YSA9IHt9O1xuXG4gICAgICAgIGlmIChtdXRhdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgZGF0YS5wYXlsb2FkID0gbXV0YXRpb24ucGF5bG9hZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICBhcGkubm90aWZ5Q29tcG9uZW50VXBkYXRlKCk7XG4gICAgICAgIGFwaS5zZW5kSW5zcGVjdG9yVHJlZShJTlNQRUNUT1JfSUQpO1xuICAgICAgICBhcGkuc2VuZEluc3BlY3RvclN0YXRlKElOU1BFQ1RPUl9JRCk7XG5cbiAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgIGxheWVySWQ6IE1VVEFUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIHRpdGxlOiBtdXRhdGlvbi50eXBlLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgc3RvcmUuc3Vic2NyaWJlQWN0aW9uKHtcbiAgICAgICAgYmVmb3JlOiBmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICAgIHZhciBkYXRhID0ge307XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICBkYXRhLnBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWN0aW9uLl9pZCA9IGFjdGlvbklkKys7XG4gICAgICAgICAgYWN0aW9uLl90aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBkYXRhLnN0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgICBhcGkuYWRkVGltZWxpbmVFdmVudCh7XG4gICAgICAgICAgICBsYXllcklkOiBBQ1RJT05TX0xBWUVSX0lELFxuICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgdGltZTogYWN0aW9uLl90aW1lLFxuICAgICAgICAgICAgICB0aXRsZTogYWN0aW9uLnR5cGUsXG4gICAgICAgICAgICAgIGdyb3VwSWQ6IGFjdGlvbi5faWQsXG4gICAgICAgICAgICAgIHN1YnRpdGxlOiAnc3RhcnQnLFxuICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiBmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICAgIHZhciBkYXRhID0ge307XG4gICAgICAgICAgdmFyIGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGFjdGlvbi5fdGltZTtcbiAgICAgICAgICBkYXRhLmR1cmF0aW9uID0ge1xuICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICB0eXBlOiAnZHVyYXRpb24nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAoZHVyYXRpb24gKyBcIm1zXCIpLFxuICAgICAgICAgICAgICB0b29sdGlwOiAnQWN0aW9uIGR1cmF0aW9uJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGR1cmF0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoYWN0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgIGRhdGEucGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkYXRhLnN0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgICBhcGkuYWRkVGltZWxpbmVFdmVudCh7XG4gICAgICAgICAgICBsYXllcklkOiBBQ1RJT05TX0xBWUVSX0lELFxuICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICBncm91cElkOiBhY3Rpb24uX2lkLFxuICAgICAgICAgICAgICBzdWJ0aXRsZTogJ2VuZCcsXG4gICAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICApO1xufVxuXG4vLyBleHRyYWN0ZWQgZnJvbSB0YWlsd2luZCBwYWxldHRlXG52YXIgQ09MT1JfTElNRV81MDAgPSAweDg0Y2MxNjtcbnZhciBDT0xPUl9EQVJLID0gMHg2NjY2NjY7XG52YXIgQ09MT1JfV0hJVEUgPSAweGZmZmZmZjtcblxudmFyIFRBR19OQU1FU1BBQ0VEID0ge1xuICBsYWJlbDogJ25hbWVzcGFjZWQnLFxuICB0ZXh0Q29sb3I6IENPTE9SX1dISVRFLFxuICBiYWNrZ3JvdW5kQ29sb3I6IENPTE9SX0RBUktcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5hbWVGcm9tUGF0aCAocGF0aCkge1xuICByZXR1cm4gcGF0aCAmJiBwYXRoICE9PSAncm9vdCcgPyBwYXRoLnNwbGl0KCcvJykuc2xpY2UoLTIsIC0xKVswXSA6ICdSb290J1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gbW9kdWxlXG4gKiBAcmV0dXJuIHtpbXBvcnQoJ0B2dWUvZGV2dG9vbHMtYXBpJykuQ3VzdG9tSW5zcGVjdG9yTm9kZX1cbiAqL1xuZnVuY3Rpb24gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlIChtb2R1bGUsIHBhdGgpIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGF0aCB8fCAncm9vdCcsXG4gICAgLy8gYWxsIG1vZHVsZXMgZW5kIHdpdGggYSBgL2AsIHdlIHdhbnQgdGhlIGxhc3Qgc2VnbWVudCBvbmx5XG4gICAgLy8gY2FydC8gLT4gY2FydFxuICAgIC8vIG5lc3RlZC9jYXJ0LyAtPiBjYXJ0XG4gICAgbGFiZWw6IGV4dHJhY3ROYW1lRnJvbVBhdGgocGF0aCksXG4gICAgdGFnczogbW9kdWxlLm5hbWVzcGFjZWQgPyBbVEFHX05BTUVTUEFDRURdIDogW10sXG4gICAgY2hpbGRyZW46IE9iamVjdC5rZXlzKG1vZHVsZS5fY2hpbGRyZW4pLm1hcChmdW5jdGlvbiAobW9kdWxlTmFtZSkgeyByZXR1cm4gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlKFxuICAgICAgICBtb2R1bGUuX2NoaWxkcmVuW21vZHVsZU5hbWVdLFxuICAgICAgICBwYXRoICsgbW9kdWxlTmFtZSArICcvJ1xuICAgICAgKTsgfVxuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdAdnVlL2RldnRvb2xzLWFwaScpLkN1c3RvbUluc3BlY3Rvck5vZGVbXX0gcmVzdWx0XG4gKiBAcGFyYW0geyp9IG1vZHVsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbHRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqL1xuZnVuY3Rpb24gZmxhdHRlblN0b3JlRm9ySW5zcGVjdG9yVHJlZSAocmVzdWx0LCBtb2R1bGUsIGZpbHRlciwgcGF0aCkge1xuICBpZiAocGF0aC5pbmNsdWRlcyhmaWx0ZXIpKSB7XG4gICAgcmVzdWx0LnB1c2goe1xuICAgICAgaWQ6IHBhdGggfHwgJ3Jvb3QnLFxuICAgICAgbGFiZWw6IHBhdGguZW5kc1dpdGgoJy8nKSA/IHBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGggLSAxKSA6IHBhdGggfHwgJ1Jvb3QnLFxuICAgICAgdGFnczogbW9kdWxlLm5hbWVzcGFjZWQgPyBbVEFHX05BTUVTUEFDRURdIDogW11cbiAgICB9KTtcbiAgfVxuICBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVOYW1lKSB7XG4gICAgZmxhdHRlblN0b3JlRm9ySW5zcGVjdG9yVHJlZShyZXN1bHQsIG1vZHVsZS5fY2hpbGRyZW5bbW9kdWxlTmFtZV0sIGZpbHRlciwgcGF0aCArIG1vZHVsZU5hbWUgKyAnLycpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IG1vZHVsZVxuICogQHJldHVybiB7aW1wb3J0KCdAdnVlL2RldnRvb2xzLWFwaScpLkN1c3RvbUluc3BlY3RvclN0YXRlfVxuICovXG5mdW5jdGlvbiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclN0YXRlIChtb2R1bGUsIGdldHRlcnMsIHBhdGgpIHtcbiAgZ2V0dGVycyA9IHBhdGggPT09ICdyb290JyA/IGdldHRlcnMgOiBnZXR0ZXJzW3BhdGhdO1xuICB2YXIgZ2V0dGVyc0tleXMgPSBPYmplY3Qua2V5cyhnZXR0ZXJzKTtcbiAgdmFyIHN0b3JlU3RhdGUgPSB7XG4gICAgc3RhdGU6IE9iamVjdC5rZXlzKG1vZHVsZS5zdGF0ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1vZHVsZS5zdGF0ZVtrZXldXG4gICAgfSk7IH0pXG4gIH07XG5cbiAgaWYgKGdldHRlcnNLZXlzLmxlbmd0aCkge1xuICAgIHZhciB0cmVlID0gdHJhbnNmb3JtUGF0aHNUb09iamVjdFRyZWUoZ2V0dGVycyk7XG4gICAgc3RvcmVTdGF0ZS5nZXR0ZXJzID0gT2JqZWN0LmtleXModHJlZSkubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7XG4gICAgICBrZXk6IGtleS5lbmRzV2l0aCgnLycpID8gZXh0cmFjdE5hbWVGcm9tUGF0aChrZXkpIDoga2V5LFxuICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IGNhblRocm93KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyZWVba2V5XTsgfSlcbiAgICB9KTsgfSk7XG4gIH1cblxuICByZXR1cm4gc3RvcmVTdGF0ZVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZSAoZ2V0dGVycykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKGdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwYXRoID0ga2V5LnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgdmFyIHRhcmdldCA9IHJlc3VsdDtcbiAgICAgIHZhciBsZWFmS2V5ID0gcGF0aC5wb3AoKTtcbiAgICAgIHBhdGguZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAoIXRhcmdldFtwXSkge1xuICAgICAgICAgIHRhcmdldFtwXSA9IHtcbiAgICAgICAgICAgIF9jdXN0b206IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgICAgICBkaXNwbGF5OiBwLFxuICAgICAgICAgICAgICB0b29sdGlwOiAnTW9kdWxlJyxcbiAgICAgICAgICAgICAgYWJzdHJhY3Q6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldCA9IHRhcmdldFtwXS5fY3VzdG9tLnZhbHVlO1xuICAgICAgfSk7XG4gICAgICB0YXJnZXRbbGVhZktleV0gPSBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXJzW2tleV07IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IGNhblRocm93KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcnNba2V5XTsgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBnZXRTdG9yZU1vZHVsZSAobW9kdWxlTWFwLCBwYXRoKSB7XG4gIHZhciBuYW1lcyA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHsgcmV0dXJuIG47IH0pO1xuICByZXR1cm4gbmFtZXMucmVkdWNlKFxuICAgIGZ1bmN0aW9uIChtb2R1bGUsIG1vZHVsZU5hbWUsIGkpIHtcbiAgICAgIHZhciBjaGlsZCA9IG1vZHVsZVttb2R1bGVOYW1lXTtcbiAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKChcIk1pc3NpbmcgbW9kdWxlIFxcXCJcIiArIG1vZHVsZU5hbWUgKyBcIlxcXCIgZm9yIHBhdGggXFxcIlwiICsgcGF0aCArIFwiXFxcIi5cIikpXG4gICAgICB9XG4gICAgICByZXR1cm4gaSA9PT0gbmFtZXMubGVuZ3RoIC0gMSA/IGNoaWxkIDogY2hpbGQuX2NoaWxkcmVuXG4gICAgfSxcbiAgICBwYXRoID09PSAncm9vdCcgPyBtb2R1bGVNYXAgOiBtb2R1bGVNYXAucm9vdC5fY2hpbGRyZW5cbiAgKVxufVxuXG5mdW5jdGlvbiBjYW5UaHJvdyAoY2IpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gY2IoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGVcbiAgfVxufVxuXG4vLyBCYXNlIGRhdGEgc3RydWN0IGZvciBzdG9yZSdzIG1vZHVsZSwgcGFja2FnZSB3aXRoIHNvbWUgYXR0cmlidXRlIGFuZCBtZXRob2RcbnZhciBNb2R1bGUgPSBmdW5jdGlvbiBNb2R1bGUgKHJhd01vZHVsZSwgcnVudGltZSkge1xuICB0aGlzLnJ1bnRpbWUgPSBydW50aW1lO1xuICAvLyBTdG9yZSBzb21lIGNoaWxkcmVuIGl0ZW1cbiAgdGhpcy5fY2hpbGRyZW4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBTdG9yZSB0aGUgb3JpZ2luIG1vZHVsZSBvYmplY3Qgd2hpY2ggcGFzc2VkIGJ5IHByb2dyYW1tZXJcbiAgdGhpcy5fcmF3TW9kdWxlID0gcmF3TW9kdWxlO1xuICB2YXIgcmF3U3RhdGUgPSByYXdNb2R1bGUuc3RhdGU7XG5cbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUncyBzdGF0ZVxuICB0aGlzLnN0YXRlID0gKHR5cGVvZiByYXdTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IHJhd1N0YXRlKCkgOiByYXdTdGF0ZSkgfHwge307XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzJDEgPSB7IG5hbWVzcGFjZWQ6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDEubmFtZXNwYWNlZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhIXRoaXMuX3Jhd01vZHVsZS5uYW1lc3BhY2VkXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmFkZENoaWxkID0gZnVuY3Rpb24gYWRkQ2hpbGQgKGtleSwgbW9kdWxlKSB7XG4gIHRoaXMuX2NoaWxkcmVuW2tleV0gPSBtb2R1bGU7XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gcmVtb3ZlQ2hpbGQgKGtleSkge1xuICBkZWxldGUgdGhpcy5fY2hpbGRyZW5ba2V5XTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZ2V0Q2hpbGQgPSBmdW5jdGlvbiBnZXRDaGlsZCAoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9jaGlsZHJlbltrZXldXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmhhc0NoaWxkID0gZnVuY3Rpb24gaGFzQ2hpbGQgKGtleSkge1xuICByZXR1cm4ga2V5IGluIHRoaXMuX2NoaWxkcmVuXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAocmF3TW9kdWxlKSB7XG4gIHRoaXMuX3Jhd01vZHVsZS5uYW1lc3BhY2VkID0gcmF3TW9kdWxlLm5hbWVzcGFjZWQ7XG4gIGlmIChyYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zID0gcmF3TW9kdWxlLmFjdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zID0gcmF3TW9kdWxlLm11dGF0aW9ucztcbiAgfVxuICBpZiAocmF3TW9kdWxlLmdldHRlcnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycyA9IHJhd01vZHVsZS5nZXR0ZXJzO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hDaGlsZCA9IGZ1bmN0aW9uIGZvckVhY2hDaGlsZCAoZm4pIHtcbiAgZm9yRWFjaFZhbHVlKHRoaXMuX2NoaWxkcmVuLCBmbik7XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hHZXR0ZXIgPSBmdW5jdGlvbiBmb3JFYWNoR2V0dGVyIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLmdldHRlcnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLmdldHRlcnMsIGZuKTtcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQWN0aW9uID0gZnVuY3Rpb24gZm9yRWFjaEFjdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaE11dGF0aW9uID0gZnVuY3Rpb24gZm9yRWFjaE11dGF0aW9uIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zLCBmbik7XG4gIH1cbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBNb2R1bGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkMSApO1xuXG52YXIgTW9kdWxlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIE1vZHVsZUNvbGxlY3Rpb24gKHJhd1Jvb3RNb2R1bGUpIHtcbiAgLy8gcmVnaXN0ZXIgcm9vdCBtb2R1bGUgKFZ1ZXguU3RvcmUgb3B0aW9ucylcbiAgdGhpcy5yZWdpc3RlcihbXSwgcmF3Um9vdE1vZHVsZSwgZmFsc2UpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobW9kdWxlLCBrZXkpIHtcbiAgICByZXR1cm4gbW9kdWxlLmdldENoaWxkKGtleSlcbiAgfSwgdGhpcy5yb290KVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0TmFtZXNwYWNlID0gZnVuY3Rpb24gZ2V0TmFtZXNwYWNlIChwYXRoKSB7XG4gIHZhciBtb2R1bGUgPSB0aGlzLnJvb3Q7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBrZXkpIHtcbiAgICBtb2R1bGUgPSBtb2R1bGUuZ2V0Q2hpbGQoa2V5KTtcbiAgICByZXR1cm4gbmFtZXNwYWNlICsgKG1vZHVsZS5uYW1lc3BhY2VkID8ga2V5ICsgJy8nIDogJycpXG4gIH0sICcnKVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlJDEgKHJhd1Jvb3RNb2R1bGUpIHtcbiAgdXBkYXRlKFtdLCB0aGlzLnJvb3QsIHJhd1Jvb3RNb2R1bGUpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlciAocGF0aCwgcmF3TW9kdWxlLCBydW50aW1lKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICBpZiAoIHJ1bnRpbWUgPT09IHZvaWQgMCApIHJ1bnRpbWUgPSB0cnVlO1xuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgcmF3TW9kdWxlKTtcbiAgfVxuXG4gIHZhciBuZXdNb2R1bGUgPSBuZXcgTW9kdWxlKHJhd01vZHVsZSwgcnVudGltZSk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMucm9vdCA9IG5ld01vZHVsZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIHBhcmVudC5hZGRDaGlsZChwYXRoW3BhdGgubGVuZ3RoIC0gMV0sIG5ld01vZHVsZSk7XG4gIH1cblxuICAvLyByZWdpc3RlciBuZXN0ZWQgbW9kdWxlc1xuICBpZiAocmF3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICBmb3JFYWNoVmFsdWUocmF3TW9kdWxlLm1vZHVsZXMsIGZ1bmN0aW9uIChyYXdDaGlsZE1vZHVsZSwga2V5KSB7XG4gICAgICB0aGlzJDEkMS5yZWdpc3RlcihwYXRoLmNvbmNhdChrZXkpLCByYXdDaGlsZE1vZHVsZSwgcnVudGltZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVucmVnaXN0ZXIgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gIHZhciBjaGlsZCA9IHBhcmVudC5nZXRDaGlsZChrZXkpO1xuXG4gIGlmICghY2hpbGQpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW3Z1ZXhdIHRyeWluZyB0byB1bnJlZ2lzdGVyIG1vZHVsZSAnXCIgKyBrZXkgKyBcIicsIHdoaWNoIGlzIFwiICtcbiAgICAgICAgXCJub3QgcmVnaXN0ZXJlZFwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghY2hpbGQucnVudGltZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGFyZW50LnJlbW92ZUNoaWxkKGtleSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5pc1JlZ2lzdGVyZWQgPSBmdW5jdGlvbiBpc1JlZ2lzdGVyZWQgKHBhdGgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgdmFyIGtleSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcblxuICBpZiAocGFyZW50KSB7XG4gICAgcmV0dXJuIHBhcmVudC5oYXNDaGlsZChrZXkpXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZSAocGF0aCwgdGFyZ2V0TW9kdWxlLCBuZXdNb2R1bGUpIHtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gdXBkYXRlIHRhcmdldCBtb2R1bGVcbiAgdGFyZ2V0TW9kdWxlLnVwZGF0ZShuZXdNb2R1bGUpO1xuXG4gIC8vIHVwZGF0ZSBuZXN0ZWQgbW9kdWxlc1xuICBpZiAobmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gbmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICAgIGlmICghdGFyZ2V0TW9kdWxlLmdldENoaWxkKGtleSkpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiW3Z1ZXhdIHRyeWluZyB0byBhZGQgYSBuZXcgbW9kdWxlICdcIiArIGtleSArIFwiJyBvbiBob3QgcmVsb2FkaW5nLCBcIiArXG4gICAgICAgICAgICAnbWFudWFsIHJlbG9hZCBpcyBuZWVkZWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShcbiAgICAgICAgcGF0aC5jb25jYXQoa2V5KSxcbiAgICAgICAgdGFyZ2V0TW9kdWxlLmdldENoaWxkKGtleSksXG4gICAgICAgIG5ld01vZHVsZS5tb2R1bGVzW2tleV1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnZhciBmdW5jdGlvbkFzc2VydCA9IHtcbiAgYXNzZXJ0OiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsgfSxcbiAgZXhwZWN0ZWQ6ICdmdW5jdGlvbidcbn07XG5cbnZhciBvYmplY3RBc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUuaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJyk7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24gb3Igb2JqZWN0IHdpdGggXCJoYW5kbGVyXCIgZnVuY3Rpb24nXG59O1xuXG52YXIgYXNzZXJ0VHlwZXMgPSB7XG4gIGdldHRlcnM6IGZ1bmN0aW9uQXNzZXJ0LFxuICBtdXRhdGlvbnM6IGZ1bmN0aW9uQXNzZXJ0LFxuICBhY3Rpb25zOiBvYmplY3RBc3NlcnRcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFJhd01vZHVsZSAocGF0aCwgcmF3TW9kdWxlKSB7XG4gIE9iamVjdC5rZXlzKGFzc2VydFR5cGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIXJhd01vZHVsZVtrZXldKSB7IHJldHVybiB9XG5cbiAgICB2YXIgYXNzZXJ0T3B0aW9ucyA9IGFzc2VydFR5cGVzW2tleV07XG5cbiAgICBmb3JFYWNoVmFsdWUocmF3TW9kdWxlW2tleV0sIGZ1bmN0aW9uICh2YWx1ZSwgdHlwZSkge1xuICAgICAgYXNzZXJ0KFxuICAgICAgICBhc3NlcnRPcHRpb25zLmFzc2VydCh2YWx1ZSksXG4gICAgICAgIG1ha2VBc3NlcnRpb25NZXNzYWdlKHBhdGgsIGtleSwgdHlwZSwgdmFsdWUsIGFzc2VydE9wdGlvbnMuZXhwZWN0ZWQpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZUFzc2VydGlvbk1lc3NhZ2UgKHBhdGgsIGtleSwgdHlwZSwgdmFsdWUsIGV4cGVjdGVkKSB7XG4gIHZhciBidWYgPSBrZXkgKyBcIiBzaG91bGQgYmUgXCIgKyBleHBlY3RlZCArIFwiIGJ1dCBcXFwiXCIgKyBrZXkgKyBcIi5cIiArIHR5cGUgKyBcIlxcXCJcIjtcbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIGJ1ZiArPSBcIiBpbiBtb2R1bGUgXFxcIlwiICsgKHBhdGguam9pbignLicpKSArIFwiXFxcIlwiO1xuICB9XG4gIGJ1ZiArPSBcIiBpcyBcIiArIChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpICsgXCIuXCI7XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RvcmUgKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBTdG9yZShvcHRpb25zKVxufVxuXG52YXIgU3RvcmUgPSBmdW5jdGlvbiBTdG9yZSAob3B0aW9ucykge1xuICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJywgXCJ2dWV4IHJlcXVpcmVzIGEgUHJvbWlzZSBwb2x5ZmlsbCBpbiB0aGlzIGJyb3dzZXIuXCIpO1xuICAgIGFzc2VydCh0aGlzIGluc3RhbmNlb2YgU3RvcmUsIFwic3RvcmUgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbmV3IG9wZXJhdG9yLlwiKTtcbiAgfVxuXG4gIHZhciBwbHVnaW5zID0gb3B0aW9ucy5wbHVnaW5zOyBpZiAoIHBsdWdpbnMgPT09IHZvaWQgMCApIHBsdWdpbnMgPSBbXTtcbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0OyBpZiAoIHN0cmljdCA9PT0gdm9pZCAwICkgc3RyaWN0ID0gZmFsc2U7XG4gIHZhciBkZXZ0b29scyA9IG9wdGlvbnMuZGV2dG9vbHM7XG5cbiAgLy8gc3RvcmUgaW50ZXJuYWwgc3RhdGVcbiAgdGhpcy5fY29tbWl0dGluZyA9IGZhbHNlO1xuICB0aGlzLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fd3JhcHBlZEdldHRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9tb2R1bGVzID0gbmV3IE1vZHVsZUNvbGxlY3Rpb24ob3B0aW9ucyk7XG4gIHRoaXMuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9zdWJzY3JpYmVycyA9IFtdO1xuICB0aGlzLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vIEVmZmVjdFNjb3BlIGluc3RhbmNlLiB3aGVuIHJlZ2lzdGVyaW5nIG5ldyBnZXR0ZXJzLCB3ZSB3cmFwIHRoZW0gaW5zaWRlXG4gIC8vIEVmZmVjdFNjb3BlIHNvIHRoYXQgZ2V0dGVycyAoY29tcHV0ZWQpIHdvdWxkIG5vdCBiZSBkZXN0cm95ZWQgb25cbiAgLy8gY29tcG9uZW50IHVubW91bnQuXG4gIHRoaXMuX3Njb3BlID0gbnVsbDtcblxuICB0aGlzLl9kZXZ0b29scyA9IGRldnRvb2xzO1xuXG4gIC8vIGJpbmQgY29tbWl0IGFuZCBkaXNwYXRjaCB0byBzZWxmXG4gIHZhciBzdG9yZSA9IHRoaXM7XG4gIHZhciByZWYgPSB0aGlzO1xuICB2YXIgZGlzcGF0Y2ggPSByZWYuZGlzcGF0Y2g7XG4gIHZhciBjb21taXQgPSByZWYuY29tbWl0O1xuICB0aGlzLmRpc3BhdGNoID0gZnVuY3Rpb24gYm91bmREaXNwYXRjaCAodHlwZSwgcGF5bG9hZCkge1xuICAgIHJldHVybiBkaXNwYXRjaC5jYWxsKHN0b3JlLCB0eXBlLCBwYXlsb2FkKVxuICB9O1xuICB0aGlzLmNvbW1pdCA9IGZ1bmN0aW9uIGJvdW5kQ29tbWl0ICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbW1pdC5jYWxsKHN0b3JlLCB0eXBlLCBwYXlsb2FkLCBvcHRpb25zKVxuICB9O1xuXG4gIC8vIHN0cmljdCBtb2RlXG4gIHRoaXMuc3RyaWN0ID0gc3RyaWN0O1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX21vZHVsZXMucm9vdC5zdGF0ZTtcblxuICAvLyBpbml0IHJvb3QgbW9kdWxlLlxuICAvLyB0aGlzIGFsc28gcmVjdXJzaXZlbHkgcmVnaXN0ZXJzIGFsbCBzdWItbW9kdWxlc1xuICAvLyBhbmQgY29sbGVjdHMgYWxsIG1vZHVsZSBnZXR0ZXJzIGluc2lkZSB0aGlzLl93cmFwcGVkR2V0dGVyc1xuICBpbnN0YWxsTW9kdWxlKHRoaXMsIHN0YXRlLCBbXSwgdGhpcy5fbW9kdWxlcy5yb290KTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBzdG9yZSBzdGF0ZSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSByZWFjdGl2aXR5XG4gIC8vIChhbHNvIHJlZ2lzdGVycyBfd3JhcHBlZEdldHRlcnMgYXMgY29tcHV0ZWQgcHJvcGVydGllcylcbiAgcmVzZXRTdG9yZVN0YXRlKHRoaXMsIHN0YXRlKTtcblxuICAvLyBhcHBseSBwbHVnaW5zXG4gIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7IHJldHVybiBwbHVnaW4odGhpcyQxJDEpOyB9KTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IHN0YXRlOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cblN0b3JlLnByb3RvdHlwZS5pbnN0YWxsID0gZnVuY3Rpb24gaW5zdGFsbCAoYXBwLCBpbmplY3RLZXkpIHtcbiAgYXBwLnByb3ZpZGUoaW5qZWN0S2V5IHx8IHN0b3JlS2V5LCB0aGlzKTtcbiAgYXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRzdG9yZSA9IHRoaXM7XG5cbiAgdmFyIHVzZURldnRvb2xzID0gdGhpcy5fZGV2dG9vbHMgIT09IHVuZGVmaW5lZFxuICAgID8gdGhpcy5fZGV2dG9vbHNcbiAgICA6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX187XG5cbiAgaWYgKHVzZURldnRvb2xzKSB7XG4gICAgYWRkRGV2dG9vbHMoYXBwLCB0aGlzKTtcbiAgfVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnN0YXRlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3N0YXRlLmRhdGFcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5zdGF0ZS5zZXQgPSBmdW5jdGlvbiAodikge1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCBcInVzZSBzdG9yZS5yZXBsYWNlU3RhdGUoKSB0byBleHBsaWNpdCByZXBsYWNlIHN0b3JlIHN0YXRlLlwiKTtcbiAgfVxufTtcblxuU3RvcmUucHJvdG90eXBlLmNvbW1pdCA9IGZ1bmN0aW9uIGNvbW1pdCAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgLy8gY2hlY2sgb2JqZWN0LXN0eWxlIGNvbW1pdFxuICB2YXIgcmVmID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgIHZhciBwYXlsb2FkID0gcmVmLnBheWxvYWQ7XG4gICAgdmFyIG9wdGlvbnMgPSByZWYub3B0aW9ucztcblxuICB2YXIgbXV0YXRpb24gPSB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgdmFyIGVudHJ5ID0gdGhpcy5fbXV0YXRpb25zW3R5cGVdO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgZW50cnkuZm9yRWFjaChmdW5jdGlvbiBjb21taXRJdGVyYXRvciAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihwYXlsb2FkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGhpcy5fc3Vic2NyaWJlcnNcbiAgICAuc2xpY2UoKSAvLyBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBpdGVyYXRvciBpbnZhbGlkYXRpb24gaWYgc3Vic2NyaWJlciBzeW5jaHJvbm91c2x5IGNhbGxzIHVuc3Vic2NyaWJlXG4gICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViKG11dGF0aW9uLCB0aGlzJDEkMS5zdGF0ZSk7IH0pO1xuXG4gIGlmIChcbiAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcbiAgICBvcHRpb25zICYmIG9wdGlvbnMuc2lsZW50XG4gICkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3Z1ZXhdIG11dGF0aW9uIHR5cGU6IFwiICsgdHlwZSArIFwiLiBTaWxlbnQgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWQuIFwiICtcbiAgICAgICdVc2UgdGhlIGZpbHRlciBmdW5jdGlvbmFsaXR5IGluIHRoZSB2dWUtZGV2dG9vbHMnXG4gICAgKTtcbiAgfVxufTtcblxuU3RvcmUucHJvdG90eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24gZGlzcGF0Y2ggKF90eXBlLCBfcGF5bG9hZCkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgLy8gY2hlY2sgb2JqZWN0LXN0eWxlIGRpc3BhdGNoXG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuXG4gIHZhciBhY3Rpb24gPSB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgdmFyIGVudHJ5ID0gdGhpcy5fYWN0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gYWN0aW9uIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIHRyeSB7XG4gICAgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgIC5zbGljZSgpIC8vIHNoYWxsb3cgY29weSB0byBwcmV2ZW50IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBpZiBzdWJzY3JpYmVyIHN5bmNocm9ub3VzbHkgY2FsbHMgdW5zdWJzY3JpYmVcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmJlZm9yZTsgfSlcbiAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmUoYWN0aW9uLCB0aGlzJDEkMS5zdGF0ZSk7IH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGJlZm9yZSBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlc3VsdCA9IGVudHJ5Lmxlbmd0aCA+IDFcbiAgICA/IFByb21pc2UuYWxsKGVudHJ5Lm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlcihwYXlsb2FkKTsgfSkpXG4gICAgOiBlbnRyeVswXShwYXlsb2FkKTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMkMSQxLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyOyB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5hZnRlcihhY3Rpb24sIHRoaXMkMSQxLnN0YXRlKTsgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYWZ0ZXIgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzb2x2ZShyZXMpO1xuICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcyQxJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuZXJyb3I7IH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmVycm9yKGFjdGlvbiwgdGhpcyQxJDEuc3RhdGUsIGVycm9yKTsgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gZXJyb3IgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9KTtcbiAgfSlcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiBzdWJzY3JpYmUgKGZuLCBvcHRpb25zKSB7XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKGZuLCB0aGlzLl9zdWJzY3JpYmVycywgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmVBY3Rpb24gPSBmdW5jdGlvbiBzdWJzY3JpYmVBY3Rpb24gKGZuLCBvcHRpb25zKSB7XG4gIHZhciBzdWJzID0gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8geyBiZWZvcmU6IGZuIH0gOiBmbjtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoc3VicywgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUud2F0Y2ggPSBmdW5jdGlvbiB3YXRjaCQxIChnZXR0ZXIsIGNiLCBvcHRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBnZXR0ZXIgPT09ICdmdW5jdGlvbicsIFwic3RvcmUud2F0Y2ggb25seSBhY2NlcHRzIGEgZnVuY3Rpb24uXCIpO1xuICB9XG4gIHJldHVybiB3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXIodGhpcyQxJDEuc3RhdGUsIHRoaXMkMSQxLmdldHRlcnMpOyB9LCBjYiwgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucykpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gcmVwbGFjZVN0YXRlIChzdGF0ZSkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgdGhpcyQxJDEuX3N0YXRlLmRhdGEgPSBzdGF0ZTtcbiAgfSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUucmVnaXN0ZXJNb2R1bGUgPSBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZSAocGF0aCwgcmF3TW9kdWxlLCBvcHRpb25zKSB7XG4gICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICAgIGFzc2VydChwYXRoLmxlbmd0aCA+IDAsICdjYW5ub3QgcmVnaXN0ZXIgdGhlIHJvb3QgbW9kdWxlIGJ5IHVzaW5nIHJlZ2lzdGVyTW9kdWxlLicpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy5yZWdpc3RlcihwYXRoLCByYXdNb2R1bGUpO1xuICBpbnN0YWxsTW9kdWxlKHRoaXMsIHRoaXMuc3RhdGUsIHBhdGgsIHRoaXMuX21vZHVsZXMuZ2V0KHBhdGgpLCBvcHRpb25zLnByZXNlcnZlU3RhdGUpO1xuICAvLyByZXNldCBzdG9yZSB0byB1cGRhdGUgZ2V0dGVycy4uLlxuICByZXNldFN0b3JlU3RhdGUodGhpcywgdGhpcy5zdGF0ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUudW5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHVucmVnaXN0ZXJNb2R1bGUgKHBhdGgpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZXMudW5yZWdpc3RlcihwYXRoKTtcbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUodGhpcyQxJDEuc3RhdGUsIHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBkZWxldGUgcGFyZW50U3RhdGVbcGF0aFtwYXRoLmxlbmd0aCAtIDFdXTtcbiAgfSk7XG4gIHJlc2V0U3RvcmUodGhpcyk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuaGFzTW9kdWxlID0gZnVuY3Rpb24gaGFzTW9kdWxlIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9tb2R1bGVzLmlzUmVnaXN0ZXJlZChwYXRoKVxufTtcblxuU3RvcmUucHJvdG90eXBlLmhvdFVwZGF0ZSA9IGZ1bmN0aW9uIGhvdFVwZGF0ZSAobmV3T3B0aW9ucykge1xuICB0aGlzLl9tb2R1bGVzLnVwZGF0ZShuZXdPcHRpb25zKTtcbiAgcmVzZXRTdG9yZSh0aGlzLCB0cnVlKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5fd2l0aENvbW1pdCA9IGZ1bmN0aW9uIF93aXRoQ29tbWl0IChmbikge1xuICB2YXIgY29tbWl0dGluZyA9IHRoaXMuX2NvbW1pdHRpbmc7XG4gIHRoaXMuX2NvbW1pdHRpbmcgPSB0cnVlO1xuICBmbigpO1xuICB0aGlzLl9jb21taXR0aW5nID0gY29tbWl0dGluZztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBTdG9yZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgc3RhdGUuXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBzdGF0ZXMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBzdGF0ZSBhbmQgZ2V0dGVycyBmb3IgcGFyYW0sIHlvdSBjYW4gZG8gc29tZXRoaW5nIGZvciBzdGF0ZSBhbmQgZ2V0dGVycyBpbiBpdC5cbiAqIEBwYXJhbSB7T2JqZWN0fVxuICovXG52YXIgbWFwU3RhdGUgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgc3RhdGVzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChzdGF0ZXMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcFN0YXRlOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChzdGF0ZXMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRTdGF0ZSAoKSB7XG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLiRzdG9yZS5zdGF0ZTtcbiAgICAgIHZhciBnZXR0ZXJzID0gdGhpcy4kc3RvcmUuZ2V0dGVycztcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwU3RhdGUnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHN0YXRlID0gbW9kdWxlLmNvbnRleHQuc3RhdGU7XG4gICAgICAgIGdldHRlcnMgPSBtb2R1bGUuY29udGV4dC5nZXR0ZXJzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuY2FsbCh0aGlzLCBzdGF0ZSwgZ2V0dGVycylcbiAgICAgICAgOiBzdGF0ZVt2YWxdXG4gICAgfTtcbiAgICAvLyBtYXJrIHZ1ZXggZ2V0dGVyIGZvciBkZXZ0b29sc1xuICAgIHJlc1trZXldLnZ1ZXggPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBjb21taXR0aW5nIHRoZSBtdXRhdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gbXV0YXRpb25zICMgT2JqZWN0J3MgaXRlbSBjYW4gYmUgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHQgYGNvbW1pdGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFub3RoZXIgcGFyYW1zLiBZb3UgY2FuIGNvbW1pdCBtdXRhdGlvbiBhbmQgZG8gYW55IG90aGVyIHRoaW5ncyBpbiB0aGlzIGZ1bmN0aW9uLiBzcGVjaWFsbHksIFlvdSBuZWVkIHRvIHBhc3MgYW50aG9yIHBhcmFtcyBmcm9tIHRoZSBtYXBwZWQgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBNdXRhdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgbXV0YXRpb25zKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChtdXRhdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcE11dGF0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAobXV0YXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkTXV0YXRpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAgIC8vIEdldCB0aGUgY29tbWl0IG1ldGhvZCBmcm9tIHN0b3JlXG4gICAgICB2YXIgY29tbWl0ID0gdGhpcy4kc3RvcmUuY29tbWl0O1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBNdXRhdGlvbnMnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbW1pdCA9IG1vZHVsZS5jb250ZXh0LmNvbW1pdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmFwcGx5KHRoaXMsIFtjb21taXRdLmNvbmNhdChhcmdzKSlcbiAgICAgICAgOiBjb21taXQuYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBnZXR0ZXJzXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBnZXR0ZXJzXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBHZXR0ZXJzID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGdldHRlcnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKGdldHRlcnMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcEdldHRlcnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKGdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgLy8gVGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBtdXRhdGVkIGJ5IG5vcm1hbGl6ZU5hbWVzcGFjZVxuICAgIHZhbCA9IG5hbWVzcGFjZSArIHZhbDtcbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEdldHRlciAoKSB7XG4gICAgICBpZiAobmFtZXNwYWNlICYmICFnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcEdldHRlcnMnLCBuYW1lc3BhY2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhKHZhbCBpbiB0aGlzLiRzdG9yZS5nZXR0ZXJzKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGdldHRlcjogXCIgKyB2YWwpKTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1t2YWxdXG4gICAgfTtcbiAgICAvLyBtYXJrIHZ1ZXggZ2V0dGVyIGZvciBkZXZ0b29sc1xuICAgIHJlc1trZXldLnZ1ZXggPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBkaXNwYXRjaCB0aGUgYWN0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBhY3Rpb25zICMgT2JqZWN0J3MgaXRlbSBjYW4gYmUgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHQgYGRpc3BhdGNoYCBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgcGFyYW0sIGl0IGNhbiBhY2NlcHQgYW50aG9yIHBhcmFtcy4gWW91IGNhbiBkaXNwYXRjaCBhY3Rpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwQWN0aW9ucyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBhY3Rpb25zKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChhY3Rpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBBY3Rpb25zOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChhY3Rpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkQWN0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBnZXQgZGlzcGF0Y2ggZnVuY3Rpb24gZnJvbSBzdG9yZVxuICAgICAgdmFyIGRpc3BhdGNoID0gdGhpcy4kc3RvcmUuZGlzcGF0Y2g7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcEFjdGlvbnMnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGRpc3BhdGNoID0gbW9kdWxlLmNvbnRleHQuZGlzcGF0Y2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbZGlzcGF0Y2hdLmNvbmNhdChhcmdzKSlcbiAgICAgICAgOiBkaXNwYXRjaC5hcHBseSh0aGlzLiRzdG9yZSwgW3ZhbF0uY29uY2F0KGFyZ3MpKVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWJpbmRpbmcgbmFtZXNwYWNlIHBhcmFtIGZvciBtYXBYWFggZnVuY3Rpb24gaW4gc3BlY2lhbCBzY29wZWQsIGFuZCByZXR1cm4gdGhlbSBieSBzaW1wbGUgb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UpIHsgcmV0dXJuICh7XG4gIG1hcFN0YXRlOiBtYXBTdGF0ZS5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBNdXRhdGlvbnM6IG1hcE11dGF0aW9ucy5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpXG59KTsgfTtcblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIG1hcFxuICogbm9ybWFsaXplTWFwKFsxLCAyLCAzXSkgPT4gWyB7IGtleTogMSwgdmFsOiAxIH0sIHsga2V5OiAyLCB2YWw6IDIgfSwgeyBrZXk6IDMsIHZhbDogMyB9IF1cbiAqIG5vcm1hbGl6ZU1hcCh7YTogMSwgYjogMiwgYzogM30pID0+IFsgeyBrZXk6ICdhJywgdmFsOiAxIH0sIHsga2V5OiAnYicsIHZhbDogMiB9LCB7IGtleTogJ2MnLCB2YWw6IDMgfSBdXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gbWFwXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1hcCAobWFwKSB7XG4gIGlmICghaXNWYWxpZE1hcChtYXApKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWFwKVxuICAgID8gbWFwLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoeyBrZXk6IGtleSwgdmFsOiBrZXkgfSk7IH0pXG4gICAgOiBPYmplY3Qua2V5cyhtYXApLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoeyBrZXk6IGtleSwgdmFsOiBtYXBba2V5XSB9KTsgfSlcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB3aGV0aGVyIGdpdmVuIG1hcCBpcyB2YWxpZCBvciBub3RcbiAqIEBwYXJhbSB7Kn0gbWFwXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkTWFwIChtYXApIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWFwKSB8fCBpc09iamVjdChtYXApXG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gZXhwZWN0IHR3byBwYXJhbSBjb250YWlucyBuYW1lc3BhY2UgYW5kIG1hcC4gaXQgd2lsbCBub3JtYWxpemUgdGhlIG5hbWVzcGFjZSBhbmQgdGhlbiB0aGUgcGFyYW0ncyBmdW5jdGlvbiB3aWxsIGhhbmRsZSB0aGUgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIG1hcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTmFtZXNwYWNlIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWFwKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lc3BhY2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICBtYXAgPSBuYW1lc3BhY2U7XG4gICAgICBuYW1lc3BhY2UgPSAnJztcbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZS5jaGFyQXQobmFtZXNwYWNlLmxlbmd0aCAtIDEpICE9PSAnLycpIHtcbiAgICAgIG5hbWVzcGFjZSArPSAnLyc7XG4gICAgfVxuICAgIHJldHVybiBmbihuYW1lc3BhY2UsIG1hcClcbiAgfVxufVxuXG4vKipcbiAqIFNlYXJjaCBhIHNwZWNpYWwgbW9kdWxlIGZyb20gc3RvcmUgYnkgbmFtZXNwYWNlLiBpZiBtb2R1bGUgbm90IGV4aXN0LCBwcmludCBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IHN0b3JlXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVscGVyXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZHVsZUJ5TmFtZXNwYWNlIChzdG9yZSwgaGVscGVyLCBuYW1lc3BhY2UpIHtcbiAgdmFyIG1vZHVsZSA9IHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV07XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIW1vZHVsZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIG1vZHVsZSBuYW1lc3BhY2Ugbm90IGZvdW5kIGluIFwiICsgaGVscGVyICsgXCIoKTogXCIgKyBuYW1lc3BhY2UpKTtcbiAgfVxuICByZXR1cm4gbW9kdWxlXG59XG5cbi8vIENyZWRpdHM6IGJvcnJvd2VkIGNvZGUgZnJvbSBmY29tYi9yZWR1eC1sb2dnZXJcblxuZnVuY3Rpb24gY3JlYXRlTG9nZ2VyIChyZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgY29sbGFwc2VkID0gcmVmLmNvbGxhcHNlZDsgaWYgKCBjb2xsYXBzZWQgPT09IHZvaWQgMCApIGNvbGxhcHNlZCA9IHRydWU7XG4gIHZhciBmaWx0ZXIgPSByZWYuZmlsdGVyOyBpZiAoIGZpbHRlciA9PT0gdm9pZCAwICkgZmlsdGVyID0gZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZUJlZm9yZSwgc3RhdGVBZnRlcikgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgdmFyIHRyYW5zZm9ybWVyID0gcmVmLnRyYW5zZm9ybWVyOyBpZiAoIHRyYW5zZm9ybWVyID09PSB2b2lkIDAgKSB0cmFuc2Zvcm1lciA9IGZ1bmN0aW9uIChzdGF0ZSkgeyByZXR1cm4gc3RhdGU7IH07XG4gIHZhciBtdXRhdGlvblRyYW5zZm9ybWVyID0gcmVmLm11dGF0aW9uVHJhbnNmb3JtZXI7IGlmICggbXV0YXRpb25UcmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgbXV0YXRpb25UcmFuc2Zvcm1lciA9IGZ1bmN0aW9uIChtdXQpIHsgcmV0dXJuIG11dDsgfTtcbiAgdmFyIGFjdGlvbkZpbHRlciA9IHJlZi5hY3Rpb25GaWx0ZXI7IGlmICggYWN0aW9uRmlsdGVyID09PSB2b2lkIDAgKSBhY3Rpb25GaWx0ZXIgPSBmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgdmFyIGFjdGlvblRyYW5zZm9ybWVyID0gcmVmLmFjdGlvblRyYW5zZm9ybWVyOyBpZiAoIGFjdGlvblRyYW5zZm9ybWVyID09PSB2b2lkIDAgKSBhY3Rpb25UcmFuc2Zvcm1lciA9IGZ1bmN0aW9uIChhY3QpIHsgcmV0dXJuIGFjdDsgfTtcbiAgdmFyIGxvZ011dGF0aW9ucyA9IHJlZi5sb2dNdXRhdGlvbnM7IGlmICggbG9nTXV0YXRpb25zID09PSB2b2lkIDAgKSBsb2dNdXRhdGlvbnMgPSB0cnVlO1xuICB2YXIgbG9nQWN0aW9ucyA9IHJlZi5sb2dBY3Rpb25zOyBpZiAoIGxvZ0FjdGlvbnMgPT09IHZvaWQgMCApIGxvZ0FjdGlvbnMgPSB0cnVlO1xuICB2YXIgbG9nZ2VyID0gcmVmLmxvZ2dlcjsgaWYgKCBsb2dnZXIgPT09IHZvaWQgMCApIGxvZ2dlciA9IGNvbnNvbGU7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzdG9yZSkge1xuICAgIHZhciBwcmV2U3RhdGUgPSBkZWVwQ29weShzdG9yZS5zdGF0ZSk7XG5cbiAgICBpZiAodHlwZW9mIGxvZ2dlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChsb2dNdXRhdGlvbnMpIHtcbiAgICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlKSB7XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSBkZWVwQ29weShzdGF0ZSk7XG5cbiAgICAgICAgaWYgKGZpbHRlcihtdXRhdGlvbiwgcHJldlN0YXRlLCBuZXh0U3RhdGUpKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZFRpbWUgPSBnZXRGb3JtYXR0ZWRUaW1lKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZE11dGF0aW9uID0gbXV0YXRpb25UcmFuc2Zvcm1lcihtdXRhdGlvbik7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcIm11dGF0aW9uIFwiICsgKG11dGF0aW9uLnR5cGUpICsgZm9ybWF0dGVkVGltZTtcblxuICAgICAgICAgIHN0YXJ0TWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgcHJldiBzdGF0ZScsICdjb2xvcjogIzlFOUU5RTsgZm9udC13ZWlnaHQ6IGJvbGQnLCB0cmFuc2Zvcm1lcihwcmV2U3RhdGUpKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBtdXRhdGlvbicsICdjb2xvcjogIzAzQTlGNDsgZm9udC13ZWlnaHQ6IGJvbGQnLCBmb3JtYXR0ZWRNdXRhdGlvbik7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgbmV4dCBzdGF0ZScsICdjb2xvcjogIzRDQUY1MDsgZm9udC13ZWlnaHQ6IGJvbGQnLCB0cmFuc2Zvcm1lcihuZXh0U3RhdGUpKTtcbiAgICAgICAgICBlbmRNZXNzYWdlKGxvZ2dlcik7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2U3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobG9nQWN0aW9ucykge1xuICAgICAgc3RvcmUuc3Vic2NyaWJlQWN0aW9uKGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7XG4gICAgICAgIGlmIChhY3Rpb25GaWx0ZXIoYWN0aW9uLCBzdGF0ZSkpIHtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkVGltZSA9IGdldEZvcm1hdHRlZFRpbWUoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkQWN0aW9uID0gYWN0aW9uVHJhbnNmb3JtZXIoYWN0aW9uKTtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9IFwiYWN0aW9uIFwiICsgKGFjdGlvbi50eXBlKSArIGZvcm1hdHRlZFRpbWU7XG5cbiAgICAgICAgICBzdGFydE1lc3NhZ2UobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIGFjdGlvbicsICdjb2xvcjogIzAzQTlGNDsgZm9udC13ZWlnaHQ6IGJvbGQnLCBmb3JtYXR0ZWRBY3Rpb24pO1xuICAgICAgICAgIGVuZE1lc3NhZ2UobG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0TWVzc2FnZSAobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpIHtcbiAgdmFyIHN0YXJ0TWVzc2FnZSA9IGNvbGxhcHNlZFxuICAgID8gbG9nZ2VyLmdyb3VwQ29sbGFwc2VkXG4gICAgOiBsb2dnZXIuZ3JvdXA7XG5cbiAgLy8gcmVuZGVyXG4gIHRyeSB7XG4gICAgc3RhcnRNZXNzYWdlLmNhbGwobG9nZ2VyLCBtZXNzYWdlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5sb2cobWVzc2FnZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kTWVzc2FnZSAobG9nZ2VyKSB7XG4gIHRyeSB7XG4gICAgbG9nZ2VyLmdyb3VwRW5kKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIubG9nKCfigJTigJQgbG9nIGVuZCDigJTigJQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRGb3JtYXR0ZWRUaW1lICgpIHtcbiAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gKFwiIEAgXCIgKyAocGFkKHRpbWUuZ2V0SG91cnMoKSwgMikpICsgXCI6XCIgKyAocGFkKHRpbWUuZ2V0TWludXRlcygpLCAyKSkgKyBcIjpcIiArIChwYWQodGltZS5nZXRTZWNvbmRzKCksIDIpKSArIFwiLlwiICsgKHBhZCh0aW1lLmdldE1pbGxpc2Vjb25kcygpLCAzKSkpXG59XG5cbmZ1bmN0aW9uIHJlcGVhdCAoc3RyLCB0aW1lcykge1xuICByZXR1cm4gKG5ldyBBcnJheSh0aW1lcyArIDEpKS5qb2luKHN0cilcbn1cblxuZnVuY3Rpb24gcGFkIChudW0sIG1heExlbmd0aCkge1xuICByZXR1cm4gcmVwZWF0KCcwJywgbWF4TGVuZ3RoIC0gbnVtLnRvU3RyaW5nKCkubGVuZ3RoKSArIG51bVxufVxuXG52YXIgaW5kZXggPSB7XG4gIHZlcnNpb246ICc0LjEuMCcsXG4gIFN0b3JlOiBTdG9yZSxcbiAgc3RvcmVLZXk6IHN0b3JlS2V5LFxuICBjcmVhdGVTdG9yZTogY3JlYXRlU3RvcmUsXG4gIHVzZVN0b3JlOiB1c2VTdG9yZSxcbiAgbWFwU3RhdGU6IG1hcFN0YXRlLFxuICBtYXBNdXRhdGlvbnM6IG1hcE11dGF0aW9ucyxcbiAgbWFwR2V0dGVyczogbWFwR2V0dGVycyxcbiAgbWFwQWN0aW9uczogbWFwQWN0aW9ucyxcbiAgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnM6IGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzLFxuICBjcmVhdGVMb2dnZXI6IGNyZWF0ZUxvZ2dlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgaW5kZXg7XG5leHBvcnQgeyBTdG9yZSwgY3JlYXRlTG9nZ2VyLCBjcmVhdGVOYW1lc3BhY2VkSGVscGVycywgY3JlYXRlU3RvcmUsIG1hcEFjdGlvbnMsIG1hcEdldHRlcnMsIG1hcE11dGF0aW9ucywgbWFwU3RhdGUsIHN0b3JlS2V5LCB1c2VTdG9yZSB9O1xuIiwidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIENvbWJvYm94OiAoKSA9PiBDb21ib2JveCxcbiAgQ29tYm9ib3hCdXR0b246ICgpID0+IENvbWJvYm94QnV0dG9uLFxuICBDb21ib2JveElucHV0OiAoKSA9PiBDb21ib2JveElucHV0LFxuICBDb21ib2JveExhYmVsOiAoKSA9PiBDb21ib2JveExhYmVsLFxuICBDb21ib2JveE9wdGlvbjogKCkgPT4gQ29tYm9ib3hPcHRpb24sXG4gIENvbWJvYm94T3B0aW9uczogKCkgPT4gQ29tYm9ib3hPcHRpb25zLFxuICBEaWFsb2c6ICgpID0+IERpYWxvZyxcbiAgRGlhbG9nQmFja2Ryb3A6ICgpID0+IERpYWxvZ0JhY2tkcm9wLFxuICBEaWFsb2dEZXNjcmlwdGlvbjogKCkgPT4gRGlhbG9nRGVzY3JpcHRpb24sXG4gIERpYWxvZ092ZXJsYXk6ICgpID0+IERpYWxvZ092ZXJsYXksXG4gIERpYWxvZ1BhbmVsOiAoKSA9PiBEaWFsb2dQYW5lbCxcbiAgRGlhbG9nVGl0bGU6ICgpID0+IERpYWxvZ1RpdGxlLFxuICBEaXNjbG9zdXJlOiAoKSA9PiBEaXNjbG9zdXJlLFxuICBEaXNjbG9zdXJlQnV0dG9uOiAoKSA9PiBEaXNjbG9zdXJlQnV0dG9uLFxuICBEaXNjbG9zdXJlUGFuZWw6ICgpID0+IERpc2Nsb3N1cmVQYW5lbCxcbiAgRm9jdXNUcmFwOiAoKSA9PiBGb2N1c1RyYXAsXG4gIExpc3Rib3g6ICgpID0+IExpc3Rib3gsXG4gIExpc3Rib3hCdXR0b246ICgpID0+IExpc3Rib3hCdXR0b24sXG4gIExpc3Rib3hMYWJlbDogKCkgPT4gTGlzdGJveExhYmVsLFxuICBMaXN0Ym94T3B0aW9uOiAoKSA9PiBMaXN0Ym94T3B0aW9uLFxuICBMaXN0Ym94T3B0aW9uczogKCkgPT4gTGlzdGJveE9wdGlvbnMsXG4gIE1lbnU6ICgpID0+IE1lbnUsXG4gIE1lbnVCdXR0b246ICgpID0+IE1lbnVCdXR0b24sXG4gIE1lbnVJdGVtOiAoKSA9PiBNZW51SXRlbSxcbiAgTWVudUl0ZW1zOiAoKSA9PiBNZW51SXRlbXMsXG4gIFBvcG92ZXI6ICgpID0+IFBvcG92ZXIsXG4gIFBvcG92ZXJCdXR0b246ICgpID0+IFBvcG92ZXJCdXR0b24sXG4gIFBvcG92ZXJHcm91cDogKCkgPT4gUG9wb3Zlckdyb3VwLFxuICBQb3BvdmVyT3ZlcmxheTogKCkgPT4gUG9wb3Zlck92ZXJsYXksXG4gIFBvcG92ZXJQYW5lbDogKCkgPT4gUG9wb3ZlclBhbmVsLFxuICBQb3J0YWw6ICgpID0+IFBvcnRhbCxcbiAgUG9ydGFsR3JvdXA6ICgpID0+IFBvcnRhbEdyb3VwLFxuICBSYWRpb0dyb3VwOiAoKSA9PiBSYWRpb0dyb3VwLFxuICBSYWRpb0dyb3VwRGVzY3JpcHRpb246ICgpID0+IFJhZGlvR3JvdXBEZXNjcmlwdGlvbixcbiAgUmFkaW9Hcm91cExhYmVsOiAoKSA9PiBSYWRpb0dyb3VwTGFiZWwsXG4gIFJhZGlvR3JvdXBPcHRpb246ICgpID0+IFJhZGlvR3JvdXBPcHRpb24sXG4gIFN3aXRjaDogKCkgPT4gU3dpdGNoLFxuICBTd2l0Y2hEZXNjcmlwdGlvbjogKCkgPT4gU3dpdGNoRGVzY3JpcHRpb24sXG4gIFN3aXRjaEdyb3VwOiAoKSA9PiBTd2l0Y2hHcm91cCxcbiAgU3dpdGNoTGFiZWw6ICgpID0+IFN3aXRjaExhYmVsLFxuICBUYWI6ICgpID0+IFRhYixcbiAgVGFiR3JvdXA6ICgpID0+IFRhYkdyb3VwLFxuICBUYWJMaXN0OiAoKSA9PiBUYWJMaXN0LFxuICBUYWJQYW5lbDogKCkgPT4gVGFiUGFuZWwsXG4gIFRhYlBhbmVsczogKCkgPT4gVGFiUGFuZWxzLFxuICBUcmFuc2l0aW9uQ2hpbGQ6ICgpID0+IFRyYW5zaXRpb25DaGlsZCxcbiAgVHJhbnNpdGlvblJvb3Q6ICgpID0+IFRyYW5zaXRpb25Sb290XG59KTtcbm1vZHVsZS5leHBvcnRzID0gX190b0NvbW1vbkpTKHNyY19leHBvcnRzKTtcblxuLy8gc3JjL2NvbXBvbmVudHMvY29tYm9ib3gvY29tYm9ib3gudHNcbnZhciBpbXBvcnRfdnVlOCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9yZW5kZXIudHNcbnZhciBpbXBvcnRfdnVlID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL3V0aWxzL21hdGNoLnRzXG5mdW5jdGlvbiBtYXRjaCh2YWx1ZSwgbG9va3VwLCAuLi5hcmdzKSB7XG4gIGlmICh2YWx1ZSBpbiBsb29rdXApIHtcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBsb29rdXBbdmFsdWVdO1xuICAgIHJldHVybiB0eXBlb2YgcmV0dXJuVmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHJldHVyblZhbHVlKC4uLmFyZ3MpIDogcmV0dXJuVmFsdWU7XG4gIH1cbiAgbGV0IGVycm9yID0gbmV3IEVycm9yKGBUcmllZCB0byBoYW5kbGUgXCIke3ZhbHVlfVwiIGJ1dCB0aGVyZSBpcyBubyBoYW5kbGVyIGRlZmluZWQuIE9ubHkgZGVmaW5lZCBoYW5kbGVycyBhcmU6ICR7T2JqZWN0LmtleXMobG9va3VwKS5tYXAoKGtleSkgPT4gYFwiJHtrZXl9XCJgKS5qb2luKFwiLCBcIil9LmApO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIG1hdGNoKTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbi8vIHNyYy91dGlscy9yZW5kZXIudHNcbmZ1bmN0aW9uIHJlbmRlcih7XG4gIHZpc2libGUgPSB0cnVlLFxuICBmZWF0dXJlcyA9IDAgLyogTm9uZSAqLyxcbiAgb3VyUHJvcHMsXG4gIHRoZWlyUHJvcHMsXG4gIC4uLm1haW5cbn0pIHtcbiAgdmFyIF9hO1xuICBsZXQgcHJvcHMgPSBtZXJnZVByb3BzKHRoZWlyUHJvcHMsIG91clByb3BzKTtcbiAgbGV0IG1haW5XaXRoUHJvcHMgPSBPYmplY3QuYXNzaWduKG1haW4sIHsgcHJvcHMgfSk7XG4gIGlmICh2aXNpYmxlKVxuICAgIHJldHVybiBfcmVuZGVyKG1haW5XaXRoUHJvcHMpO1xuICBpZiAoZmVhdHVyZXMgJiAyIC8qIFN0YXRpYyAqLykge1xuICAgIGlmIChwcm9wcy5zdGF0aWMpXG4gICAgICByZXR1cm4gX3JlbmRlcihtYWluV2l0aFByb3BzKTtcbiAgfVxuICBpZiAoZmVhdHVyZXMgJiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovKSB7XG4gICAgbGV0IHN0cmF0ZWd5ID0gKChfYSA9IHByb3BzLnVubW91bnQpICE9IG51bGwgPyBfYSA6IHRydWUpID8gMCAvKiBVbm1vdW50ICovIDogMSAvKiBIaWRkZW4gKi87XG4gICAgcmV0dXJuIG1hdGNoKHN0cmF0ZWd5LCB7XG4gICAgICBbMCAvKiBVbm1vdW50ICovXSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgWzEgLyogSGlkZGVuICovXSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZW5kZXIoe1xuICAgICAgICAgIC4uLm1haW4sXG4gICAgICAgICAgcHJvcHM6IHsgLi4ucHJvcHMsIGhpZGRlbjogdHJ1ZSwgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBfcmVuZGVyKG1haW5XaXRoUHJvcHMpO1xufVxuZnVuY3Rpb24gX3JlbmRlcih7XG4gIHByb3BzLFxuICBhdHRycyxcbiAgc2xvdHMsXG4gIHNsb3QsXG4gIG5hbWVcbn0pIHtcbiAgdmFyIF9hO1xuICBsZXQgeyBhcywgLi4uaW5jb21pbmdQcm9wcyB9ID0gb21pdChwcm9wcywgW1widW5tb3VudFwiLCBcInN0YXRpY1wiXSk7XG4gIGxldCBjaGlsZHJlbiA9IChfYSA9IHNsb3RzLmRlZmF1bHQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKHNsb3RzLCBzbG90KTtcbiAgbGV0IGRhdGFBdHRyaWJ1dGVzID0ge307XG4gIGlmIChhcyA9PT0gXCJ0ZW1wbGF0ZVwiKSB7XG4gICAgY2hpbGRyZW4gPSBmbGF0dGVuRnJhZ21lbnRzKGNoaWxkcmVuKTtcbiAgICBpZiAoT2JqZWN0LmtleXMoaW5jb21pbmdQcm9wcykubGVuZ3RoID4gMCB8fCBPYmplY3Qua2V5cyhhdHRycykubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IFtmaXJzdENoaWxkLCAuLi5vdGhlcl0gPSBjaGlsZHJlbiAhPSBudWxsID8gY2hpbGRyZW4gOiBbXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQoZmlyc3RDaGlsZCkgfHwgb3RoZXIubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgICAgICdQYXNzaW5nIHByb3BzIG9uIFwidGVtcGxhdGVcIiEnLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgYFRoZSBjdXJyZW50IGNvbXBvbmVudCA8JHtuYW1lfSAvPiBpcyByZW5kZXJpbmcgYSBcInRlbXBsYXRlXCIuYCxcbiAgICAgICAgICBgSG93ZXZlciB3ZSBuZWVkIHRvIHBhc3N0aHJvdWdoIHRoZSBmb2xsb3dpbmcgcHJvcHM6YCxcbiAgICAgICAgICBPYmplY3Qua2V5cyhpbmNvbWluZ1Byb3BzKS5jb25jYXQoT2JqZWN0LmtleXMoYXR0cnMpKS5zb3J0KChhLCB6KSA9PiBhLmxvY2FsZUNvbXBhcmUoeikpLm1hcCgobGluZSkgPT4gYCAgLSAke2xpbmV9YCkuam9pbihcIlxcblwiKSxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICAgIFwiWW91IGNhbiBhcHBseSBhIGZldyBzb2x1dGlvbnM6XCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgJ0FkZCBhbiBgYXM9XCIuLi5cImAgcHJvcCwgdG8gZW5zdXJlIHRoYXQgd2UgcmVuZGVyIGFuIGFjdHVhbCBlbGVtZW50IGluc3RlYWQgb2YgYSBcInRlbXBsYXRlXCIuJyxcbiAgICAgICAgICAgIFwiUmVuZGVyIGEgc2luZ2xlIGVsZW1lbnQgYXMgdGhlIGNoaWxkIHNvIHRoYXQgd2UgY2FuIGZvcndhcmQgdGhlIHByb3BzIG9udG8gdGhhdCBlbGVtZW50LlwiXG4gICAgICAgICAgXS5tYXAoKGxpbmUpID0+IGAgIC0gJHtsaW5lfWApLmpvaW4oXCJcXG5cIilcbiAgICAgICAgXS5qb2luKFwiXFxuXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZS5jbG9uZVZOb2RlKShmaXJzdENoaWxkLCBPYmplY3QuYXNzaWduKHt9LCBpbmNvbWluZ1Byb3BzLCBkYXRhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW5bMF07XG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gKDAsIGltcG9ydF92dWUuaCkoYXMsIE9iamVjdC5hc3NpZ24oe30sIGluY29taW5nUHJvcHMsIGRhdGFBdHRyaWJ1dGVzKSwgY2hpbGRyZW4pO1xufVxuZnVuY3Rpb24gZmxhdHRlbkZyYWdtZW50cyhjaGlsZHJlbikge1xuICByZXR1cm4gY2hpbGRyZW4uZmxhdE1hcCgoY2hpbGQpID0+IHtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gaW1wb3J0X3Z1ZS5GcmFnbWVudCkge1xuICAgICAgcmV0dXJuIGZsYXR0ZW5GcmFnbWVudHMoY2hpbGQuY2hpbGRyZW4pO1xuICAgIH1cbiAgICByZXR1cm4gW2NoaWxkXTtcbiAgfSk7XG59XG5mdW5jdGlvbiBtZXJnZVByb3BzKC4uLmxpc3RPZlByb3BzKSB7XG4gIHZhciBfYTtcbiAgaWYgKGxpc3RPZlByb3BzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4ge307XG4gIGlmIChsaXN0T2ZQcm9wcy5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuIGxpc3RPZlByb3BzWzBdO1xuICBsZXQgdGFyZ2V0ID0ge307XG4gIGxldCBldmVudEhhbmRsZXJzID0ge307XG4gIGZvciAobGV0IHByb3BzIG9mIGxpc3RPZlByb3BzKSB7XG4gICAgZm9yIChsZXQgcHJvcCBpbiBwcm9wcykge1xuICAgICAgaWYgKHByb3Auc3RhcnRzV2l0aChcIm9uXCIpICYmIHR5cGVvZiBwcm9wc1twcm9wXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIChfYSA9IGV2ZW50SGFuZGxlcnNbcHJvcF0pICE9IG51bGwgPyBfYSA6IGV2ZW50SGFuZGxlcnNbcHJvcF0gPSBbXTtcbiAgICAgICAgZXZlbnRIYW5kbGVyc1twcm9wXS5wdXNoKHByb3BzW3Byb3BdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0LmRpc2FibGVkIHx8IHRhcmdldFtcImFyaWEtZGlzYWJsZWRcIl0pIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhldmVudEhhbmRsZXJzKS5tYXAoKGV2ZW50TmFtZSkgPT4gW2V2ZW50TmFtZSwgdm9pZCAwXSkpKTtcbiAgfVxuICBmb3IgKGxldCBldmVudE5hbWUgaW4gZXZlbnRIYW5kbGVycykge1xuICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7XG4gICAgICBbZXZlbnROYW1lXShldmVudCwgLi4uYXJncykge1xuICAgICAgICBsZXQgaGFuZGxlcnMgPSBldmVudEhhbmRsZXJzW2V2ZW50TmFtZV07XG4gICAgICAgIGZvciAobGV0IGhhbmRsZXIgb2YgaGFuZGxlcnMpIHtcbiAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaGFuZGxlcihldmVudCwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gY29tcGFjdChvYmplY3QpIHtcbiAgbGV0IGNsb25lID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTtcbiAgZm9yIChsZXQga2V5IGluIGNsb25lKSB7XG4gICAgaWYgKGNsb25lW2tleV0gPT09IHZvaWQgMClcbiAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xuICB9XG4gIHJldHVybiBjbG9uZTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzVG9PbWl0ID0gW10pIHtcbiAgbGV0IGNsb25lID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTtcbiAgZm9yIChsZXQga2V5IG9mIGtleXNUb09taXQpIHtcbiAgICBpZiAoa2V5IGluIGNsb25lKVxuICAgICAgZGVsZXRlIGNsb25lW2tleV07XG4gIH1cbiAgcmV0dXJuIGNsb25lO1xufVxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQoaW5wdXQpIHtcbiAgaWYgKGlucHV0ID09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIGlucHV0LnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIHRydWU7XG4gIGlmICh0eXBlb2YgaW5wdXQudHlwZSA9PT0gXCJvYmplY3RcIilcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBpbnB1dC50eXBlID09PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1pZC50c1xudmFyIGlkID0gMDtcbmZ1bmN0aW9uIGdlbmVyYXRlSWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuZnVuY3Rpb24gdXNlSWQoKSB7XG4gIHJldHVybiBnZW5lcmF0ZUlkKCk7XG59XG5cbi8vIHNyYy91dGlscy9jYWxjdWxhdGUtYWN0aXZlLWluZGV4LnRzXG5mdW5jdGlvbiBhc3NlcnROZXZlcih4KSB7XG4gIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgb2JqZWN0OiBcIiArIHgpO1xufVxuZnVuY3Rpb24gY2FsY3VsYXRlQWN0aXZlSW5kZXgoYWN0aW9uLCByZXNvbHZlcnMpIHtcbiAgbGV0IGl0ZW1zID0gcmVzb2x2ZXJzLnJlc29sdmVJdGVtcygpO1xuICBpZiAoaXRlbXMubGVuZ3RoIDw9IDApXG4gICAgcmV0dXJuIG51bGw7XG4gIGxldCBjdXJyZW50QWN0aXZlSW5kZXggPSByZXNvbHZlcnMucmVzb2x2ZUFjdGl2ZUluZGV4KCk7XG4gIGxldCBhY3RpdmVJbmRleCA9IGN1cnJlbnRBY3RpdmVJbmRleCAhPSBudWxsID8gY3VycmVudEFjdGl2ZUluZGV4IDogLTE7XG4gIGxldCBuZXh0QWN0aXZlSW5kZXggPSAoKCkgPT4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLmZvY3VzKSB7XG4gICAgICBjYXNlIDAgLyogRmlyc3QgKi86XG4gICAgICAgIHJldHVybiBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+ICFyZXNvbHZlcnMucmVzb2x2ZURpc2FibGVkKGl0ZW0pKTtcbiAgICAgIGNhc2UgMSAvKiBQcmV2aW91cyAqLzoge1xuICAgICAgICBsZXQgaWR4ID0gaXRlbXMuc2xpY2UoKS5yZXZlcnNlKCkuZmluZEluZGV4KChpdGVtLCBpZHgyLCBhbGwpID0+IHtcbiAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggIT09IC0xICYmIGFsbC5sZW5ndGggLSBpZHgyIC0gMSA+PSBhY3RpdmVJbmRleClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gaWR4O1xuICAgICAgICByZXR1cm4gaXRlbXMubGVuZ3RoIC0gMSAtIGlkeDtcbiAgICAgIH1cbiAgICAgIGNhc2UgMiAvKiBOZXh0ICovOlxuICAgICAgICByZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgICBpZiAoaWR4IDw9IGFjdGl2ZUluZGV4KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiAhcmVzb2x2ZXJzLnJlc29sdmVEaXNhYmxlZChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICBjYXNlIDMgLyogTGFzdCAqLzoge1xuICAgICAgICBsZXQgaWR4ID0gaXRlbXMuc2xpY2UoKS5yZXZlcnNlKCkuZmluZEluZGV4KChpdGVtKSA9PiAhcmVzb2x2ZXJzLnJlc29sdmVEaXNhYmxlZChpdGVtKSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICAgIHJldHVybiBpZHg7XG4gICAgICAgIHJldHVybiBpdGVtcy5sZW5ndGggLSAxIC0gaWR4O1xuICAgICAgfVxuICAgICAgY2FzZSA0IC8qIFNwZWNpZmljICovOlxuICAgICAgICByZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiByZXNvbHZlcnMucmVzb2x2ZUlkKGl0ZW0pID09PSBhY3Rpb24uaWQpO1xuICAgICAgY2FzZSA1IC8qIE5vdGhpbmcgKi86XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0TmV2ZXIoYWN0aW9uKTtcbiAgICB9XG4gIH0pKCk7XG4gIHJldHVybiBuZXh0QWN0aXZlSW5kZXggPT09IC0xID8gY3VycmVudEFjdGl2ZUluZGV4IDogbmV4dEFjdGl2ZUluZGV4O1xufVxuXG4vLyBzcmMvdXRpbHMvZG9tLnRzXG5mdW5jdGlvbiBkb20ocmVmMTkpIHtcbiAgdmFyIF9hO1xuICBpZiAocmVmMTkgPT0gbnVsbClcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHJlZjE5LnZhbHVlID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoX2EgPSByZWYxOS52YWx1ZS4kZWwpICE9IG51bGwgPyBfYSA6IHJlZjE5LnZhbHVlO1xufVxuXG4vLyBzcmMvaW50ZXJuYWwvb3Blbi1jbG9zZWQudHNcbnZhciBpbXBvcnRfdnVlMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ29udGV4dCA9IFN5bWJvbChcIkNvbnRleHRcIik7XG5mdW5jdGlvbiBoYXNPcGVuQ2xvc2VkKCkge1xuICByZXR1cm4gdXNlT3BlbkNsb3NlZCgpICE9PSBudWxsO1xufVxuZnVuY3Rpb24gdXNlT3BlbkNsb3NlZCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMi5pbmplY3QpKENvbnRleHQsIG51bGwpO1xufVxuZnVuY3Rpb24gdXNlT3BlbkNsb3NlZFByb3ZpZGVyKHZhbHVlKSB7XG4gICgwLCBpbXBvcnRfdnVlMi5wcm92aWRlKShDb250ZXh0LCB2YWx1ZSk7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtcmVzb2x2ZS1idXR0b24tdHlwZS50c1xudmFyIGltcG9ydF92dWUzID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHJlc29sdmVUeXBlKHR5cGUsIGFzKSB7XG4gIGlmICh0eXBlKVxuICAgIHJldHVybiB0eXBlO1xuICBsZXQgdGFnID0gYXMgIT0gbnVsbCA/IGFzIDogXCJidXR0b25cIjtcbiAgaWYgKHR5cGVvZiB0YWcgPT09IFwic3RyaW5nXCIgJiYgdGFnLnRvTG93ZXJDYXNlKCkgPT09IFwiYnV0dG9uXCIpXG4gICAgcmV0dXJuIFwiYnV0dG9uXCI7XG4gIHJldHVybiB2b2lkIDA7XG59XG5mdW5jdGlvbiB1c2VSZXNvbHZlQnV0dG9uVHlwZShkYXRhLCByZWZFbGVtZW50KSB7XG4gIGxldCB0eXBlID0gKDAsIGltcG9ydF92dWUzLnJlZikocmVzb2x2ZVR5cGUoZGF0YS52YWx1ZS50eXBlLCBkYXRhLnZhbHVlLmFzKSk7XG4gICgwLCBpbXBvcnRfdnVlMy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICB0eXBlLnZhbHVlID0gcmVzb2x2ZVR5cGUoZGF0YS52YWx1ZS50eXBlLCBkYXRhLnZhbHVlLmFzKTtcbiAgfSk7XG4gICgwLCBpbXBvcnRfdnVlMy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHlwZS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIWRvbShyZWZFbGVtZW50KSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZG9tKHJlZkVsZW1lbnQpIGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQgJiYgISgoX2EgPSBkb20ocmVmRWxlbWVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSkge1xuICAgICAgdHlwZS52YWx1ZSA9IFwiYnV0dG9uXCI7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtdHJlZS13YWxrZXIudHNcbnZhciBpbXBvcnRfdnVlNCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9vd25lci50c1xuZnVuY3Rpb24gZ2V0T3duZXJEb2N1bWVudChlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKVxuICAgIHJldHVybiBudWxsO1xuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUpXG4gICAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgaWYgKGVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnQuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKSkge1xuICAgIGxldCBkb21FbGVtZW50ID0gZG9tKGVsZW1lbnQpO1xuICAgIGlmIChkb21FbGVtZW50KVxuICAgICAgcmV0dXJuIGRvbUVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgfVxuICByZXR1cm4gZG9jdW1lbnQ7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtdHJlZS13YWxrZXIudHNcbmZ1bmN0aW9uIHVzZVRyZWVXYWxrZXIoe1xuICBjb250YWluZXIsXG4gIGFjY2VwdCxcbiAgd2FsayxcbiAgZW5hYmxlZFxufSkge1xuICAoMCwgaW1wb3J0X3Z1ZTQud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICBsZXQgcm9vdCA9IGNvbnRhaW5lci52YWx1ZTtcbiAgICBpZiAoIXJvb3QpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGVuYWJsZWQgIT09IHZvaWQgMCAmJiAhZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9IGdldE93bmVyRG9jdW1lbnQoY29udGFpbmVyKTtcbiAgICBpZiAoIW93bmVyRG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgbGV0IGFjY2VwdE5vZGUgPSBPYmplY3QuYXNzaWduKChub2RlKSA9PiBhY2NlcHQobm9kZSksIHsgYWNjZXB0Tm9kZTogYWNjZXB0IH0pO1xuICAgIGxldCB3YWxrZXIgPSBvd25lckRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIocm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIGFjY2VwdE5vZGUsIGZhbHNlKTtcbiAgICB3aGlsZSAod2Fsa2VyLm5leHROb2RlKCkpXG4gICAgICB3YWxrKHdhbGtlci5jdXJyZW50Tm9kZSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvdXRpbHMvZm9jdXMtbWFuYWdlbWVudC50c1xudmFyIGZvY3VzYWJsZVNlbGVjdG9yID0gW1xuICBcIltjb250ZW50RWRpdGFibGU9dHJ1ZV1cIixcbiAgXCJbdGFiaW5kZXhdXCIsXG4gIFwiYVtocmVmXVwiLFxuICBcImFyZWFbaHJlZl1cIixcbiAgXCJidXR0b246bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwiaWZyYW1lXCIsXG4gIFwiaW5wdXQ6bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwic2VsZWN0Om5vdChbZGlzYWJsZWRdKVwiLFxuICBcInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKVwiXG5dLm1hcChmYWxzZSA/IChzZWxlY3RvcikgPT4gYCR7c2VsZWN0b3J9Om5vdChbdGFiaW5kZXg9Jy0xJ10pOm5vdChbc3R5bGUqPSdkaXNwbGF5OiBub25lJ10pYCA6IChzZWxlY3RvcikgPT4gYCR7c2VsZWN0b3J9Om5vdChbdGFiaW5kZXg9Jy0xJ10pYCkuam9pbihcIixcIik7XG5mdW5jdGlvbiBnZXRGb2N1c2FibGVFbGVtZW50cyhjb250YWluZXIgPSBkb2N1bWVudC5ib2R5KSB7XG4gIGlmIChjb250YWluZXIgPT0gbnVsbClcbiAgICByZXR1cm4gW107XG4gIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKGZvY3VzYWJsZVNlbGVjdG9yKSk7XG59XG5mdW5jdGlvbiBpc0ZvY3VzYWJsZUVsZW1lbnQoZWxlbWVudCwgbW9kZSA9IDAgLyogU3RyaWN0ICovKSB7XG4gIHZhciBfYTtcbiAgaWYgKGVsZW1lbnQgPT09ICgoX2EgPSBnZXRPd25lckRvY3VtZW50KGVsZW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYm9keSkpXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gbWF0Y2gobW9kZSwge1xuICAgIFswIC8qIFN0cmljdCAqL10oKSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKGZvY3VzYWJsZVNlbGVjdG9yKTtcbiAgICB9LFxuICAgIFsxIC8qIExvb3NlICovXSgpIHtcbiAgICAgIGxldCBuZXh0ID0gZWxlbWVudDtcbiAgICAgIHdoaWxlIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChuZXh0Lm1hdGNoZXMoZm9jdXNhYmxlU2VsZWN0b3IpKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnRFbGVtZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBmb2N1c0VsZW1lbnQoZWxlbWVudCkge1xuICBlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbn1cbnZhciBzZWxlY3RhYmxlU2VsZWN0b3IgPSBbXCJ0ZXh0YXJlYVwiLCBcImlucHV0XCJdLmpvaW4oXCIsXCIpO1xuZnVuY3Rpb24gaXNTZWxlY3RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHZhciBfYSwgX2I7XG4gIHJldHVybiAoX2IgPSAoX2EgPSBlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50Lm1hdGNoZXMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKGVsZW1lbnQsIHNlbGVjdGFibGVTZWxlY3RvcikpICE9IG51bGwgPyBfYiA6IGZhbHNlO1xufVxuZnVuY3Rpb24gc29ydEJ5RG9tTm9kZShub2RlcywgcmVzb2x2ZUtleSA9IChpKSA9PiBpKSB7XG4gIHJldHVybiBub2Rlcy5zbGljZSgpLnNvcnQoKGFJdGVtLCB6SXRlbSkgPT4ge1xuICAgIGxldCBhID0gcmVzb2x2ZUtleShhSXRlbSk7XG4gICAgbGV0IHogPSByZXNvbHZlS2V5KHpJdGVtKTtcbiAgICBpZiAoYSA9PT0gbnVsbCB8fCB6ID09PSBudWxsKVxuICAgICAgcmV0dXJuIDA7XG4gICAgbGV0IHBvc2l0aW9uID0gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih6KTtcbiAgICBpZiAocG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORylcbiAgICAgIHJldHVybiAtMTtcbiAgICBpZiAocG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORylcbiAgICAgIHJldHVybiAxO1xuICAgIHJldHVybiAwO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZvY3VzSW4oY29udGFpbmVyLCBmb2N1cywgc29ydGVkID0gdHJ1ZSkge1xuICB2YXIgX2E7XG4gIGxldCBvd25lckRvY3VtZW50ID0gKF9hID0gQXJyYXkuaXNBcnJheShjb250YWluZXIpID8gY29udGFpbmVyLmxlbmd0aCA+IDAgPyBjb250YWluZXJbMF0ub3duZXJEb2N1bWVudCA6IGRvY3VtZW50IDogY29udGFpbmVyID09IG51bGwgPyB2b2lkIDAgOiBjb250YWluZXIub3duZXJEb2N1bWVudCkgIT0gbnVsbCA/IF9hIDogZG9jdW1lbnQ7XG4gIGxldCBlbGVtZW50cyA9IEFycmF5LmlzQXJyYXkoY29udGFpbmVyKSA/IHNvcnRlZCA/IHNvcnRCeURvbU5vZGUoY29udGFpbmVyKSA6IGNvbnRhaW5lciA6IGdldEZvY3VzYWJsZUVsZW1lbnRzKGNvbnRhaW5lcik7XG4gIGxldCBhY3RpdmUgPSBvd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIGxldCBkaXJlY3Rpb24gPSAoKCkgPT4ge1xuICAgIGlmIChmb2N1cyAmICgxIC8qIEZpcnN0ICovIHwgNCAvKiBOZXh0ICovKSlcbiAgICAgIHJldHVybiAxIC8qIE5leHQgKi87XG4gICAgaWYgKGZvY3VzICYgKDIgLyogUHJldmlvdXMgKi8gfCA4IC8qIExhc3QgKi8pKVxuICAgICAgcmV0dXJuIC0xIC8qIFByZXZpb3VzICovO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgRm9jdXMuRmlyc3QsIEZvY3VzLlByZXZpb3VzLCBGb2N1cy5OZXh0IG9yIEZvY3VzLkxhc3RcIik7XG4gIH0pKCk7XG4gIGxldCBzdGFydEluZGV4ID0gKCgpID0+IHtcbiAgICBpZiAoZm9jdXMgJiAxIC8qIEZpcnN0ICovKVxuICAgICAgcmV0dXJuIDA7XG4gICAgaWYgKGZvY3VzICYgMiAvKiBQcmV2aW91cyAqLylcbiAgICAgIHJldHVybiBNYXRoLm1heCgwLCBlbGVtZW50cy5pbmRleE9mKGFjdGl2ZSkpIC0gMTtcbiAgICBpZiAoZm9jdXMgJiA0IC8qIE5leHQgKi8pXG4gICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZWxlbWVudHMuaW5kZXhPZihhY3RpdmUpKSArIDE7XG4gICAgaWYgKGZvY3VzICYgOCAvKiBMYXN0ICovKVxuICAgICAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBGb2N1cy5GaXJzdCwgRm9jdXMuUHJldmlvdXMsIEZvY3VzLk5leHQgb3IgRm9jdXMuTGFzdFwiKTtcbiAgfSkoKTtcbiAgbGV0IGZvY3VzT3B0aW9ucyA9IGZvY3VzICYgMzIgLyogTm9TY3JvbGwgKi8gPyB7IHByZXZlbnRTY3JvbGw6IHRydWUgfSA6IHt9O1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgbGV0IHRvdGFsID0gZWxlbWVudHMubGVuZ3RoO1xuICBsZXQgbmV4dCA9IHZvaWQgMDtcbiAgZG8ge1xuICAgIGlmIChvZmZzZXQgPj0gdG90YWwgfHwgb2Zmc2V0ICsgdG90YWwgPD0gMClcbiAgICAgIHJldHVybiAwIC8qIEVycm9yICovO1xuICAgIGxldCBuZXh0SWR4ID0gc3RhcnRJbmRleCArIG9mZnNldDtcbiAgICBpZiAoZm9jdXMgJiAxNiAvKiBXcmFwQXJvdW5kICovKSB7XG4gICAgICBuZXh0SWR4ID0gKG5leHRJZHggKyB0b3RhbCkgJSB0b3RhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5leHRJZHggPCAwKVxuICAgICAgICByZXR1cm4gMyAvKiBVbmRlcmZsb3cgKi87XG4gICAgICBpZiAobmV4dElkeCA+PSB0b3RhbClcbiAgICAgICAgcmV0dXJuIDEgLyogT3ZlcmZsb3cgKi87XG4gICAgfVxuICAgIG5leHQgPSBlbGVtZW50c1tuZXh0SWR4XTtcbiAgICBuZXh0ID09IG51bGwgPyB2b2lkIDAgOiBuZXh0LmZvY3VzKGZvY3VzT3B0aW9ucyk7XG4gICAgb2Zmc2V0ICs9IGRpcmVjdGlvbjtcbiAgfSB3aGlsZSAobmV4dCAhPT0gb3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgaWYgKCFuZXh0Lmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpKVxuICAgIG5leHQuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwgXCIwXCIpO1xuICBpZiAoZm9jdXMgJiAoNCAvKiBOZXh0ICovIHwgMiAvKiBQcmV2aW91cyAqLykgJiYgaXNTZWxlY3RhYmxlRWxlbWVudChuZXh0KSkge1xuICAgIG5leHQuc2VsZWN0KCk7XG4gIH1cbiAgcmV0dXJuIDIgLyogU3VjY2VzcyAqLztcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS13aW5kb3ctZXZlbnQudHNcbnZhciBpbXBvcnRfdnVlNSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiB1c2VXaW5kb3dFdmVudCh0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm47XG4gICgwLCBpbXBvcnRfdnVlNS53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvbkludmFsaWRhdGUoKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpKTtcbiAgfSk7XG59XG5cbi8vIHNyYy9ob29rcy91c2Utb3V0c2lkZS1jbGljay50c1xudmFyIGltcG9ydF92dWU2ID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHVzZU91dHNpZGVDbGljayhjb250YWluZXJzLCBjYiwgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlNi5jb21wdXRlZCkoKCkgPT4gdHJ1ZSkpIHtcbiAgZnVuY3Rpb24gaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50LCByZXNvbHZlVGFyZ2V0KSB7XG4gICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCB0YXJnZXQgPSByZXNvbHZlVGFyZ2V0KGV2ZW50KTtcbiAgICBpZiAodGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGFyZ2V0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpXG4gICAgICByZXR1cm47XG4gICAgbGV0IF9jb250YWluZXJzID0gZnVuY3Rpb24gcmVzb2x2ZShjb250YWluZXJzMikge1xuICAgICAgaWYgKHR5cGVvZiBjb250YWluZXJzMiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKGNvbnRhaW5lcnMyKCkpO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbmVyczIpKSB7XG4gICAgICAgIHJldHVybiBjb250YWluZXJzMjtcbiAgICAgIH1cbiAgICAgIGlmIChjb250YWluZXJzMiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4gY29udGFpbmVyczI7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2NvbnRhaW5lcnMyXTtcbiAgICB9KGNvbnRhaW5lcnMpO1xuICAgIGZvciAobGV0IGNvbnRhaW5lciBvZiBfY29udGFpbmVycykge1xuICAgICAgaWYgKGNvbnRhaW5lciA9PT0gbnVsbClcbiAgICAgICAgY29udGludWU7XG4gICAgICBsZXQgZG9tTm9kZSA9IGNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gY29udGFpbmVyIDogZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoZG9tTm9kZSA9PSBudWxsID8gdm9pZCAwIDogZG9tTm9kZS5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSAmJiB0YXJnZXQudGFiSW5kZXggIT09IC0xKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gY2IoZXZlbnQsIHRhcmdldCk7XG4gIH1cbiAgdXNlV2luZG93RXZlbnQoXCJjbGlja1wiLCAoZXZlbnQpID0+IGhhbmRsZU91dHNpZGVDbGljayhldmVudCwgKGV2ZW50MikgPT4gZXZlbnQyLnRhcmdldCksIHRydWUpO1xuICB1c2VXaW5kb3dFdmVudChcImJsdXJcIiwgKGV2ZW50KSA9PiBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQsICgpID0+IHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTElGcmFtZUVsZW1lbnQgPyB3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA6IG51bGwpLCB0cnVlKTtcbn1cblxuLy8gc3JjL2ludGVybmFsL2hpZGRlbi50c1xudmFyIGltcG9ydF92dWU3ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIaWRkZW4gPSAoMCwgaW1wb3J0X3Z1ZTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiSGlkZGVuXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIGZlYXR1cmVzOiB7IHR5cGU6IE51bWJlciwgZGVmYXVsdDogMSAvKiBOb25lICovIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZmVhdHVyZXMsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IChmZWF0dXJlcyAmIDIgLyogRm9jdXNhYmxlICovKSA9PT0gMiAvKiBGb2N1c2FibGUgKi8gPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgbWFyZ2luOiAtMSxcbiAgICAgICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgICAgICAgICBjbGlwOiBcInJlY3QoMCwgMCwgMCwgMClcIixcbiAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiLFxuICAgICAgICAgIGJvcmRlcldpZHRoOiBcIjBcIixcbiAgICAgICAgICAuLi4oZmVhdHVyZXMgJiA0IC8qIEhpZGRlbiAqLykgPT09IDQgLyogSGlkZGVuICovICYmICEoKGZlYXR1cmVzICYgMiAvKiBGb2N1c2FibGUgKi8pID09PSAyIC8qIEZvY3VzYWJsZSAqLykgJiYgeyBkaXNwbGF5OiBcIm5vbmVcIiB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiSGlkZGVuXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvdXRpbHMvZm9ybS50c1xuZnVuY3Rpb24gb2JqZWN0VG9Gb3JtRW50cmllcyhzb3VyY2UgPSB7fSwgcGFyZW50S2V5ID0gbnVsbCwgZW50cmllcyA9IFtdKSB7XG4gIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UpKSB7XG4gICAgYXBwZW5kKGVudHJpZXMsIGNvbXBvc2VLZXkocGFyZW50S2V5LCBrZXkpLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGVudHJpZXM7XG59XG5mdW5jdGlvbiBjb21wb3NlS2V5KHBhcmVudCwga2V5KSB7XG4gIHJldHVybiBwYXJlbnQgPyBwYXJlbnQgKyBcIltcIiArIGtleSArIFwiXVwiIDoga2V5O1xufVxuZnVuY3Rpb24gYXBwZW5kKGVudHJpZXMsIGtleSwgdmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChsZXQgW3N1YmtleSwgc3VidmFsdWVdIG9mIHZhbHVlLmVudHJpZXMoKSkge1xuICAgICAgYXBwZW5kKGVudHJpZXMsIGNvbXBvc2VLZXkoa2V5LCBzdWJrZXkudG9TdHJpbmcoKSksIHN1YnZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgZW50cmllcy5wdXNoKFtrZXksIHZhbHVlLnRvSVNPU3RyaW5nKCldKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgZW50cmllcy5wdXNoKFtrZXksIHZhbHVlID8gXCIxXCIgOiBcIjBcIl0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGVudHJpZXMucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgIGVudHJpZXMucHVzaChba2V5LCBgJHt2YWx1ZX1gXSk7XG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIGVudHJpZXMucHVzaChba2V5LCBcIlwiXSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0VG9Gb3JtRW50cmllcyh2YWx1ZSwga2V5LCBlbnRyaWVzKTtcbiAgfVxufVxuZnVuY3Rpb24gYXR0ZW1wdFN1Ym1pdChlbGVtZW50KSB7XG4gIHZhciBfYTtcbiAgbGV0IGZvcm0gPSAoX2EgPSBlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50LmZvcm0pICE9IG51bGwgPyBfYSA6IGVsZW1lbnQuY2xvc2VzdChcImZvcm1cIik7XG4gIGlmICghZm9ybSlcbiAgICByZXR1cm47XG4gIGZvciAobGV0IGVsZW1lbnQyIG9mIGZvcm0uZWxlbWVudHMpIHtcbiAgICBpZiAoZWxlbWVudDIudGFnTmFtZSA9PT0gXCJJTlBVVFwiICYmIGVsZW1lbnQyLnR5cGUgPT09IFwic3VibWl0XCIgfHwgZWxlbWVudDIudGFnTmFtZSA9PT0gXCJCVVRUT05cIiAmJiBlbGVtZW50Mi50eXBlID09PSBcInN1Ym1pdFwiIHx8IGVsZW1lbnQyLm5vZGVOYW1lID09PSBcIklOUFVUXCIgJiYgZWxlbWVudDIudHlwZSA9PT0gXCJpbWFnZVwiKSB7XG4gICAgICBlbGVtZW50Mi5jbGljaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuXG4vLyBzcmMvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC50c1xudmFyIENvbWJvYm94Q29udGV4dCA9IFN5bWJvbChcIkNvbWJvYm94Q29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZUNvbWJvYm94Q29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTguaW5qZWN0KShDb21ib2JveENvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8Q29tYm9ib3ggLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlQ29tYm9ib3hDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgQ29tYm9ib3ggPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hcIixcbiAgZW1pdHM6IHsgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiOiAoX3ZhbHVlKSA9PiB0cnVlIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBudWxsYWJsZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG11bHRpcGxlOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGVtaXQgfSkge1xuICAgIGxldCBjb21ib2JveFN0YXRlID0gKDAsIGltcG9ydF92dWU4LnJlZikoMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBsYWJlbFJlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGxldCBpbnB1dFJlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGxldCBidXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9uc1JlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zUHJvcHNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKSh7XG4gICAgICBzdGF0aWM6IGZhbHNlLFxuICAgICAgaG9sZDogZmFsc2VcbiAgICB9KTtcbiAgICBsZXQgb3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKFtdKTtcbiAgICBsZXQgYWN0aXZlT3B0aW9uSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgYWN0aXZhdGlvblRyaWdnZXIgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKSgxIC8qIE90aGVyICovKTtcbiAgICBsZXQgZGVmYXVsdFRvRmlyc3RPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShmYWxzZSk7XG4gICAgZnVuY3Rpb24gYWRqdXN0T3JkZXJlZFN0YXRlKGFkanVzdG1lbnQgPSAoaSkgPT4gaSkge1xuICAgICAgbGV0IGN1cnJlbnRBY3RpdmVPcHRpb24gPSBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCA/IG9wdGlvbnMudmFsdWVbYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdIDogbnVsbDtcbiAgICAgIGxldCBzb3J0ZWRPcHRpb25zID0gc29ydEJ5RG9tTm9kZShhZGp1c3RtZW50KG9wdGlvbnMudmFsdWUuc2xpY2UoKSksIChvcHRpb24pID0+IGRvbShvcHRpb24uZGF0YVJlZi5kb21SZWYpKTtcbiAgICAgIGxldCBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID0gY3VycmVudEFjdGl2ZU9wdGlvbiA/IHNvcnRlZE9wdGlvbnMuaW5kZXhPZihjdXJyZW50QWN0aXZlT3B0aW9uKSA6IG51bGw7XG4gICAgICBpZiAoYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvcHRpb25zOiBzb3J0ZWRPcHRpb25zLFxuICAgICAgICBhY3RpdmVPcHRpb25JbmRleDogYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleFxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tb2RlbFZhbHVlKTtcbiAgICBsZXQgbW9kZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMubXVsdGlwbGUgPyAxIC8qIE11bHRpICovIDogMCAvKiBTaW5nbGUgKi8pO1xuICAgIGxldCBudWxsYWJsZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMubnVsbGFibGUpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBjb21ib2JveFN0YXRlLFxuICAgICAgdmFsdWUsXG4gICAgICBtb2RlLFxuICAgICAgY29tcGFyZShhLCB6KSB7XG4gICAgICAgIHJldHVybiBhID09PSB6O1xuICAgICAgfSxcbiAgICAgIG51bGxhYmxlLFxuICAgICAgaW5wdXRSZWYsXG4gICAgICBsYWJlbFJlZixcbiAgICAgIGJ1dHRvblJlZixcbiAgICAgIG9wdGlvbnNSZWYsXG4gICAgICBkaXNhYmxlZDogKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5kaXNhYmxlZCksXG4gICAgICBvcHRpb25zLFxuICAgICAgY2hhbmdlKHZhbHVlMikge1xuICAgICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUyKTtcbiAgICAgIH0sXG4gICAgICBhY3RpdmVPcHRpb25JbmRleDogKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICAgIGlmIChkZWZhdWx0VG9GaXJzdE9wdGlvbi52YWx1ZSAmJiBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCAmJiBvcHRpb25zLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsZXQgbG9jYWxBY3RpdmVPcHRpb25JbmRleCA9IG9wdGlvbnMudmFsdWUuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGF0YVJlZi5kaXNhYmxlZCk7XG4gICAgICAgICAgaWYgKGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxBY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlO1xuICAgICAgfSksXG4gICAgICBhY3RpdmF0aW9uVHJpZ2dlcixcbiAgICAgIGlucHV0UHJvcHNSZWY6ICgwLCBpbXBvcnRfdnVlOC5yZWYpKHsgZGlzcGxheVZhbHVlOiB2b2lkIDAgfSksXG4gICAgICBvcHRpb25zUHJvcHNSZWYsXG4gICAgICBjbG9zZUNvbWJvYm94KCkge1xuICAgICAgICBkZWZhdWx0VG9GaXJzdE9wdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb21ib2JveFN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBvcGVuQ29tYm9ib3goKSB7XG4gICAgICAgIGRlZmF1bHRUb0ZpcnN0T3B0aW9uLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBvcHRpb25JZHggPSBvcHRpb25zLnZhbHVlLmZpbmRJbmRleCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb24uZGF0YVJlZi52YWx1ZSk7XG4gICAgICAgICAgbGV0IHNlbGVjdGVkID0gbWF0Y2gobW9kZS52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvblZhbHVlKSksXG4gICAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zb21lKCh2YWx1ZTIpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykodmFsdWUyKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb25WYWx1ZSkpKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcHRpb25JZHggIT09IC0xKSB7XG4gICAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBvcHRpb25JZHg7XG4gICAgICAgIH1cbiAgICAgICAgY29tYm9ib3hTdGF0ZS52YWx1ZSA9IDAgLyogT3BlbiAqLztcbiAgICAgIH0sXG4gICAgICBnb1RvT3B0aW9uKGZvY3VzLCBpZDIsIHRyaWdnZXIpIHtcbiAgICAgICAgZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKG9wdGlvbnNSZWYudmFsdWUgJiYgIW9wdGlvbnNQcm9wc1JlZi52YWx1ZS5zdGF0aWMgJiYgY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKTtcbiAgICAgICAgaWYgKGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgbG9jYWxBY3RpdmVPcHRpb25JbmRleCA9IGFkanVzdGVkU3RhdGUub3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kYXRhUmVmLmRpc2FibGVkKTtcbiAgICAgICAgICBpZiAobG9jYWxBY3RpdmVPcHRpb25JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXggPSBsb2NhbEFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV4dEFjdGl2ZU9wdGlvbkluZGV4ID0gY2FsY3VsYXRlQWN0aXZlSW5kZXgoZm9jdXMgPT09IDQgLyogU3BlY2lmaWMgKi8gPyB7IGZvY3VzOiA0IC8qIFNwZWNpZmljICovLCBpZDogaWQyIH0gOiB7IGZvY3VzIH0sIHtcbiAgICAgICAgICByZXNvbHZlSXRlbXM6ICgpID0+IGFkanVzdGVkU3RhdGUub3B0aW9ucyxcbiAgICAgICAgICByZXNvbHZlQWN0aXZlSW5kZXg6ICgpID0+IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXgsXG4gICAgICAgICAgcmVzb2x2ZUlkOiAob3B0aW9uKSA9PiBvcHRpb24uaWQsXG4gICAgICAgICAgcmVzb2x2ZURpc2FibGVkOiAob3B0aW9uKSA9PiBvcHRpb24uZGF0YVJlZi5kaXNhYmxlZFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBuZXh0QWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gdHJpZ2dlciAhPSBudWxsID8gdHJpZ2dlciA6IDEgLyogT3RoZXIgKi87XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICB9LFxuICAgICAgc3luY0lucHV0VmFsdWUoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IHZhbHVlMiA9IGFwaS52YWx1ZS52YWx1ZTtcbiAgICAgICAgaWYgKCFkb20oYXBpLmlucHV0UmVmKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBkaXNwbGF5VmFsdWUgPSBhcGkuaW5wdXRQcm9wc1JlZi52YWx1ZS5kaXNwbGF5VmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgZGlzcGxheVZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBhcGkuaW5wdXRSZWYudmFsdWUudmFsdWUgPSAoX2EgPSBkaXNwbGF5VmFsdWUodmFsdWUyKSkgIT0gbnVsbCA/IF9hIDogXCJcIjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgYXBpLmlucHV0UmVmLnZhbHVlLnZhbHVlID0gdmFsdWUyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFwaS5pbnB1dFJlZi52YWx1ZS52YWx1ZSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZWxlY3RPcHRpb24oaWQyKSB7XG4gICAgICAgIGxldCBvcHRpb24gPSBvcHRpb25zLnZhbHVlLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkMik7XG4gICAgICAgIGlmICghb3B0aW9uKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHsgZGF0YVJlZiB9ID0gb3B0aW9uO1xuICAgICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgbWF0Y2gobW9kZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGRhdGFSZWYudmFsdWUsXG4gICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgY29weSA9ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zbGljZSgpO1xuICAgICAgICAgICAgbGV0IHJhdyA9ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoZGF0YVJlZi52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgaWR4ID0gY29weS5pbmRleE9mKHJhdyk7XG4gICAgICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjb3B5LnB1c2gocmF3KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvcHkuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgICAgYXBpLnN5bmNJbnB1dFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2VsZWN0QWN0aXZlT3B0aW9uKCkge1xuICAgICAgICBpZiAoYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHsgZGF0YVJlZiwgaWQ6IGlkMiB9ID0gb3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdO1xuICAgICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgbWF0Y2gobW9kZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGRhdGFSZWYudmFsdWUsXG4gICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgY29weSA9ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zbGljZSgpO1xuICAgICAgICAgICAgbGV0IHJhdyA9ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoZGF0YVJlZi52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgaWR4ID0gY29weS5pbmRleE9mKHJhdyk7XG4gICAgICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjb3B5LnB1c2gocmF3KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvcHkuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgICAgYXBpLnN5bmNJbnB1dFZhbHVlKCk7XG4gICAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJPcHRpb24oaWQyLCBkYXRhUmVmKSB7XG4gICAgICAgIGxldCBvcHRpb24gPSB7IGlkOiBpZDIsIGRhdGFSZWYgfTtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiBbLi4ub3B0aW9uczIsIG9wdGlvbl0pO1xuICAgICAgICBpZiAoYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgb3B0aW9uVmFsdWUgPSBkYXRhUmVmLnZhbHVlLnZhbHVlO1xuICAgICAgICAgIGxldCBzZWxlY3RlZCA9IG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb25WYWx1ZSkpLFxuICAgICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUyKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHZhbHVlMiksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXggPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnMuaW5kZXhPZihvcHRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyT3B0aW9uKGlkMikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgob3B0aW9uczIpID0+IHtcbiAgICAgICAgICBsZXQgaWR4ID0gb3B0aW9uczIuZmluZEluZGV4KChhKSA9PiBhLmlkID09PSBpZDIpO1xuICAgICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgICAgb3B0aW9uczIuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMyO1xuICAgICAgICB9KTtcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9XG4gICAgfTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soW2lucHV0UmVmLCBidXR0b25SZWYsIG9wdGlvbnNSZWZdLCAoKSA9PiBhcGkuY2xvc2VDb21ib2JveCgpLCAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykpO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaCkoW2FwaS52YWx1ZSwgYXBpLmlucHV0UmVmXSwgKCkgPT4gYXBpLnN5bmNJbnB1dFZhbHVlKCksIHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaCkoYXBpLmNvbWJvYm94U3RhdGUsIChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlID09PSAxIC8qIENsb3NlZCAqLykge1xuICAgICAgICBhcGkuc3luY0lucHV0VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgucHJvdmlkZSkoQ29tYm9ib3hDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IG1hdGNoKGNvbWJvYm94U3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgbGV0IGFjdGl2ZU9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsID8gbnVsbCA6IG9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXS5kYXRhUmVmLnZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSwgbW9kZWxWYWx1ZSwgZGlzYWJsZWQsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGFjdGl2ZUluZGV4OiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUsXG4gICAgICAgIGFjdGl2ZU9wdGlvbjogYWN0aXZlT3B0aW9uLnZhbHVlXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlOC5oKShpbXBvcnRfdnVlOC5GcmFnbWVudCwgW1xuICAgICAgICAuLi5uYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gb2JqZWN0VG9Gb3JtRW50cmllcyh7IFtuYW1lXTogbW9kZWxWYWx1ZSB9KS5tYXAoKFtuYW1lMiwgdmFsdWUyXSkgPT4gKDAsIGltcG9ydF92dWU4LmgpKEhpZGRlbiwgY29tcGFjdCh7XG4gICAgICAgICAgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLFxuICAgICAgICAgIGtleTogbmFtZTIsXG4gICAgICAgICAgYXM6IFwiaW5wdXRcIixcbiAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lMixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUyXG4gICAgICAgIH0pKSkgOiBbXSxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICB0aGVpclByb3BzOiB7XG4gICAgICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgICAgIC4uLm9taXQodGhlaXJQcm9wcywgW1wibnVsbGFibGVcIiwgXCJtdWx0aXBsZVwiLCBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJieVwiXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIG5hbWU6IFwiQ29tYm9ib3hcIlxuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hMYWJlbCA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveExhYmVsXCIsXG4gIHByb3BzOiB7IGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGFiZWxcIiB9IH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94TGFiZWxcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LWxhYmVsLSR7dXNlSWQoKX1gO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgKF9hID0gZG9tKGFwaS5pbnB1dFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgaWQ6IGlkMiwgcmVmOiBhcGkubGFiZWxSZWYsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiQ29tYm9ib3hMYWJlbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveEJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveEJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94QnV0dG9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5idXR0b25SZWYsICRlbDogYXBpLmJ1dHRvblJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKGFwaS5kaXNhYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgIH1cbiAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmlucHV0UmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLykge1xuICAgICAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBhcGkuaW5wdXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKSB7XG4gICAgICAgICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFhcGkudmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gYXBpLmlucHV0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmIChhcGkub3B0aW9uc1JlZi52YWx1ZSAmJiAhYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5zdGF0aWMpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IGFwaS5pbnB1dFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBhcGkuYnV0dG9uUmVmKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGFwaS5idXR0b25SZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiB0cnVlLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogYXBpLmRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXBpLmxhYmVsUmVmLnZhbHVlID8gWyhfYiA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsIGlkMl0uam9pbihcIiBcIikgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWUgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleWRvd24sXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94QnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94SW5wdXQgPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hJbnB1dFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiaW5wdXRcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIGRpc3BsYXlWYWx1ZTogeyB0eXBlOiBGdW5jdGlvbiB9XG4gIH0sXG4gIGVtaXRzOiB7XG4gICAgY2hhbmdlOiAoX3ZhbHVlKSA9PiB0cnVlXG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlQ29tYm9ib3hDb250ZXh0KFwiQ29tYm9ib3hJbnB1dFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtaW5wdXQtJHt1c2VJZCgpfWA7XG4gICAgYXBpLmlucHV0UHJvcHNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLmlucHV0UmVmLCAkZWw6IGFwaS5pbnB1dFJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiQmFja3NwYWNlXCIgLyogQmFja3NwYWNlICovOlxuICAgICAgICBjYXNlIFwiRGVsZXRlXCIgLyogRGVsZXRlICovOlxuICAgICAgICAgIGlmIChhcGkubW9kZS52YWx1ZSAhPT0gMCAvKiBTaW5nbGUgKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKCFhcGkubnVsbGFibGUudmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgbGV0IGlucHV0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgIGFwaS5jaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgIGxldCBvcHRpb25zID0gZG9tKGFwaS5vcHRpb25zUmVmKTtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcGkuc2VsZWN0QWN0aXZlT3B0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlID09PSAwIC8qIFNpbmdsZSAqLykge1xuICAgICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2goYXBpLmNvbWJvYm94U3RhdGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAoKSA9PiBhcGkuZ29Ub09wdGlvbigyIC8qIE5leHQgKi8pLFxuICAgICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogKCkgPT4gYXBpLm9wZW5Db21ib2JveCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBtYXRjaChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogT3BlbiAqL106ICgpID0+IGFwaS5nb1RvT3B0aW9uKDEgLyogUHJldmlvdXMgKi8pLFxuICAgICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogKCkgPT4ge1xuICAgICAgICAgICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgXCJIb21lXCIgLyogSG9tZSAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VVcFwiIC8qIFBhZ2VVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVuZFwiIC8qIEVuZCAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VEb3duXCIgLyogUGFnZURvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmIChhcGkub3B0aW9uc1JlZi52YWx1ZSAmJiAhYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5zdGF0aWMpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVGFiXCIgLyogVGFiICovOlxuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGFwaS5zZWxlY3RBY3RpdmVPcHRpb24oKTtcbiAgICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgIGVtaXQoXCJjaGFuZ2VcIiwgZXZlbnQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVJbnB1dChldmVudCkge1xuICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgZW1pdChcImNoYW5nZVwiLCBldmVudCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZjtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAoX2EgPSBhcGkub3B0aW9uc1JlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogYXBpLmRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsID8gdm9pZCAwIDogKF9iID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLFxuICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IGFwaS5tb2RlLnZhbHVlID09PSAxIC8qIE11bHRpICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9lID0gKF9jID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYy5pZCkgIT0gbnVsbCA/IF9lIDogKF9kID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2QuaWQsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgICAgb25JbnB1dDogaGFuZGxlSW5wdXQsXG4gICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICAgICAgdHlwZTogKF9mID0gYXR0cnMudHlwZSkgIT0gbnVsbCA/IF9mIDogXCJ0ZXh0XCIsXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICByZWY6IGFwaS5pbnB1dFJlZlxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gb21pdChwcm9wcywgW1wiZGlzcGxheVZhbHVlXCJdKTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94SW5wdXRcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hPcHRpb25zID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uc1wiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidWxcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIGhvbGQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlQ29tYm9ib3hDb250ZXh0KFwiQ29tYm9ib3hPcHRpb25zXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1vcHRpb25zLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkub3B0aW9uc1JlZiwgJGVsOiBhcGkub3B0aW9uc1JlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljID0gcHJvcHMuc3RhdGljO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5ob2xkID0gcHJvcHMuaG9sZDtcbiAgICB9KTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIHVzZVRyZWVXYWxrZXIoe1xuICAgICAgY29udGFpbmVyOiAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IGRvbShhcGkub3B0aW9uc1JlZikpLFxuICAgICAgZW5hYmxlZDogKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSxcbiAgICAgIGFjY2VwdChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcInJvbGVcIikgPT09IFwib3B0aW9uXCIpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgICAgaWYgKG5vZGUuaGFzQXR0cmlidXRlKFwicm9sZVwiKSlcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0sXG4gICAgICB3YWxrKG5vZGUpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsID8gdm9pZCAwIDogKF9hID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAoX2QgPSAoX2IgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkKSAhPSBudWxsID8gX2QgOiAoX2MgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYy5pZCxcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBhcGkub3B0aW9uc1JlZixcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCJcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG9taXQocHJvcHMsIFtcImhvbGRcIl0pO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiQ29tYm9ib3hPcHRpb25zXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94T3B0aW9uID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJsaVwiIH0sXG4gICAgdmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94T3B0aW9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1vcHRpb24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsT3B0aW9uUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsT3B0aW9uUmVmLCAkZWw6IGludGVybmFsT3B0aW9uUmVmIH0pO1xuICAgIGxldCBhY3RpdmUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdLmlkID09PSBpZDIgOiBmYWxzZTtcbiAgICB9KTtcbiAgICBsZXQgc2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IG1hdGNoKGFwaS5tb2RlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1JhdykocHJvcHMudmFsdWUpKSxcbiAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNvbWUoKHZhbHVlKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHZhbHVlKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShwcm9wcy52YWx1ZSkpKVxuICAgIH0pKTtcbiAgICBsZXQgZGF0YVJlZiA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gKHtcbiAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgIGRvbVJlZjogaW50ZXJuYWxPcHRpb25SZWZcbiAgICB9KSk7XG4gICAgKDAsIGltcG9ydF92dWU4Lm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyT3B0aW9uKGlkMiwgZGF0YVJlZikpO1xuICAgICgwLCBpbXBvcnRfdnVlOC5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJPcHRpb24oaWQyKSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPT09IDAgLyogUG9pbnRlciAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxPcHRpb25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2Nyb2xsSW50b1ZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB7IGJsb2NrOiBcIm5lYXJlc3RcIiB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBpLnNlbGVjdE9wdGlvbihpZDIpO1xuICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlID09PSAwIC8qIFNpbmdsZSAqLykge1xuICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAoX2EgPSBkb20oYXBpLmlucHV0UmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW92ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyLCAwIC8qIFBvaW50ZXIgKi8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLmhvbGQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBkaXNhYmxlZCB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgYWN0aXZlOiBhY3RpdmUudmFsdWUsIHNlbGVjdGVkOiBzZWxlY3RlZC52YWx1ZSwgZGlzYWJsZWQgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBpbnRlcm5hbE9wdGlvblJlZixcbiAgICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID09PSB0cnVlID8gdm9pZCAwIDogLTEsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZC52YWx1ZSA9PT0gdHJ1ZSA/IHNlbGVjdGVkLnZhbHVlIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogdm9pZCAwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgIG9uUG9pbnRlcm1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uTW91c2Vtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvblBvaW50ZXJsZWF2ZTogaGFuZGxlTGVhdmUsXG4gICAgICAgIG9uTW91c2VsZWF2ZTogaGFuZGxlTGVhdmVcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiQ29tYm9ib3hPcHRpb25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cudHNcbnZhciBpbXBvcnRfdnVlMTcgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvY29tcG9uZW50cy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHNcbnZhciBpbXBvcnRfdnVlMTEgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvaG9va3MvdXNlLXRhYi1kaXJlY3Rpb24udHNcbnZhciBpbXBvcnRfdnVlOSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiB1c2VUYWJEaXJlY3Rpb24oKSB7XG4gIGxldCBkaXJlY3Rpb24gPSAoMCwgaW1wb3J0X3Z1ZTkucmVmKSgwIC8qIEZvcndhcmRzICovKTtcbiAgdXNlV2luZG93RXZlbnQoXCJrZXlkb3duXCIsIChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09IFwiVGFiXCIpIHtcbiAgICAgIGRpcmVjdGlvbi52YWx1ZSA9IGV2ZW50LnNoaWZ0S2V5ID8gMSAvKiBCYWNrd2FyZHMgKi8gOiAwIC8qIEZvcndhcmRzICovO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBkaXJlY3Rpb247XG59XG5cbi8vIHNyYy9ob29rcy91c2UtZXZlbnQtbGlzdGVuZXIudHNcbnZhciBpbXBvcnRfdnVlMTAgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCB0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm47XG4gICgwLCBpbXBvcnRfdnVlMTAud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICBlbGVtZW50ID0gZWxlbWVudCAhPSBudWxsID8gZWxlbWVudCA6IHdpbmRvdztcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgIG9uSW52YWxpZGF0ZSgoKSA9PiBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpKTtcbiAgfSk7XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC50c1xudmFyIEZlYXR1cmVzMyA9IC8qIEBfX1BVUkVfXyAqLyAoKEZlYXR1cmVzNCkgPT4ge1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiTm9uZVwiXSA9IDFdID0gXCJOb25lXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJJbml0aWFsRm9jdXNcIl0gPSAyXSA9IFwiSW5pdGlhbEZvY3VzXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJUYWJMb2NrXCJdID0gNF0gPSBcIlRhYkxvY2tcIjtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIkZvY3VzTG9ja1wiXSA9IDhdID0gXCJGb2N1c0xvY2tcIjtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIlJlc3RvcmVGb2N1c1wiXSA9IDE2XSA9IFwiUmVzdG9yZUZvY3VzXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJBbGxcIl0gPSAzMF0gPSBcIkFsbFwiO1xuICByZXR1cm4gRmVhdHVyZXM0O1xufSkoRmVhdHVyZXMzIHx8IHt9KTtcbnZhciBGb2N1c1RyYXAgPSBPYmplY3QuYXNzaWduKCgwLCBpbXBvcnRfdnVlMTEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRm9jdXNUcmFwXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIGluaXRpYWxGb2N1czogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IG51bGwgfSxcbiAgICBmZWF0dXJlczogeyB0eXBlOiBOdW1iZXIsIGRlZmF1bHQ6IDMwIC8qIEFsbCAqLyB9LFxuICAgIGNvbnRhaW5lcnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgwLCBpbXBvcnRfdnVlMTEucmVmKSgvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpKVxuICAgIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBjb250YWluZXIgPSAoMCwgaW1wb3J0X3Z1ZTExLnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGNvbnRhaW5lciwgJGVsOiBjb250YWluZXIgfSk7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGNvbnRhaW5lcikpO1xuICAgIHVzZVJlc3RvcmVGb2N1cyh7IG93bmVyRG9jdW1lbnQgfSwgKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gQm9vbGVhbihwcm9wcy5mZWF0dXJlcyAmIDE2IC8qIFJlc3RvcmVGb2N1cyAqLykpKTtcbiAgICBsZXQgcHJldmlvdXNBY3RpdmVFbGVtZW50ID0gdXNlSW5pdGlhbEZvY3VzKHsgb3duZXJEb2N1bWVudCwgY29udGFpbmVyLCBpbml0aWFsRm9jdXM6ICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IHByb3BzLmluaXRpYWxGb2N1cykgfSwgKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gQm9vbGVhbihwcm9wcy5mZWF0dXJlcyAmIDIgLyogSW5pdGlhbEZvY3VzICovKSkpO1xuICAgIHVzZUZvY3VzTG9jayh7XG4gICAgICBvd25lckRvY3VtZW50LFxuICAgICAgY29udGFpbmVyLFxuICAgICAgY29udGFpbmVyczogcHJvcHMuY29udGFpbmVycyxcbiAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudFxuICAgIH0sICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IEJvb2xlYW4ocHJvcHMuZmVhdHVyZXMgJiA4IC8qIEZvY3VzTG9jayAqLykpKTtcbiAgICBsZXQgZGlyZWN0aW9uID0gdXNlVGFiRGlyZWN0aW9uKCk7XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBsZXQgZWwgPSBkb20oY29udGFpbmVyKTtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBtaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCAxIC8qIEZpcnN0ICovKSxcbiAgICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDggLyogTGFzdCAqLylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDEgLyogRmlyc3QgKi8pLFxuICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDggLyogTGFzdCAqLylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHt9O1xuICAgICAgbGV0IG91clByb3BzID0geyByZWY6IGNvbnRhaW5lciB9O1xuICAgICAgbGV0IHsgZmVhdHVyZXMsIGluaXRpYWxGb2N1cywgY29udGFpbmVyczogX2NvbnRhaW5lcnMsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTEuaCkoaW1wb3J0X3Z1ZTExLkZyYWdtZW50LCBbXG4gICAgICAgIEJvb2xlYW4oZmVhdHVyZXMgJiA0IC8qIFRhYkxvY2sgKi8pICYmICgwLCBpbXBvcnRfdnVlMTEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi9cbiAgICAgICAgfSksXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgbmFtZTogXCJGb2N1c1RyYXBcIlxuICAgICAgICB9KSxcbiAgICAgICAgQm9vbGVhbihmZWF0dXJlcyAmIDQgLyogVGFiTG9jayAqLykgJiYgKDAsIGltcG9ydF92dWUxMS5oKShIaWRkZW4sIHtcbiAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqL1xuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSksIHsgZmVhdHVyZXM6IEZlYXR1cmVzMyB9KTtcbmZ1bmN0aW9uIHVzZVJlc3RvcmVGb2N1cyh7IG93bmVyRG9jdW1lbnQgfSwgZW5hYmxlZCkge1xuICBsZXQgcmVzdG9yZUVsZW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTExLnJlZikobnVsbCk7XG4gIGxldCBtb3VudGVkID0geyB2YWx1ZTogZmFsc2UgfTtcbiAgKDAsIGltcG9ydF92dWUxMS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAoMCwgaW1wb3J0X3Z1ZTExLndhdGNoKShlbmFibGVkLCAobmV3VmFsdWUsIHByZXZWYWx1ZSkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcmV2VmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbW91bnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoIXJlc3RvcmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAgIHJlc3RvcmVFbGVtZW50LnZhbHVlID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxMS53YXRjaCkoZW5hYmxlZCwgKG5ld1ZhbHVlLCBwcmV2VmFsdWUsIG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcmV2VmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgb25JbnZhbGlkYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKG1vdW50ZWQudmFsdWUgPT09IGZhbHNlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbW91bnRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBmb2N1c0VsZW1lbnQocmVzdG9yZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICByZXN0b3JlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VJbml0aWFsRm9jdXMoe1xuICBvd25lckRvY3VtZW50LFxuICBjb250YWluZXIsXG4gIGluaXRpYWxGb2N1c1xufSwgZW5hYmxlZCkge1xuICBsZXQgcHJldmlvdXNBY3RpdmVFbGVtZW50ID0gKDAsIGltcG9ydF92dWUxMS5yZWYpKG51bGwpO1xuICAoMCwgaW1wb3J0X3Z1ZTExLm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICgwLCBpbXBvcnRfdnVlMTEud2F0Y2gpKFtjb250YWluZXIsIGluaXRpYWxGb2N1cywgZW5hYmxlZF0sIChuZXdWYWx1ZXMsIHByZXZWYWx1ZXMpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZXMuZXZlcnkoKHZhbHVlLCBpZHgpID0+IChwcmV2VmFsdWVzID09IG51bGwgPyB2b2lkIDAgOiBwcmV2VmFsdWVzW2lkeF0pID09PSB2YWx1ZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb20oY29udGFpbmVyKTtcbiAgICAgIGlmICghY29udGFpbmVyRWxlbWVudClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgbGV0IGluaXRpYWxGb2N1c0VsZW1lbnQgPSBkb20oaW5pdGlhbEZvY3VzKTtcbiAgICAgICAgbGV0IGFjdGl2ZUVsZW1lbnQgPSAoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGluaXRpYWxGb2N1c0VsZW1lbnQpIHtcbiAgICAgICAgICBpZiAoaW5pdGlhbEZvY3VzRWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyRWxlbWVudC5jb250YWlucyhhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbml0aWFsRm9jdXNFbGVtZW50KSB7XG4gICAgICAgICAgZm9jdXNFbGVtZW50KGluaXRpYWxGb2N1c0VsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmb2N1c0luKGNvbnRhaW5lckVsZW1lbnQsIDEgLyogRmlyc3QgKi8gfCAzMiAvKiBOb1Njcm9sbCAqLykgPT09IDAgLyogRXJyb3IgKi8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZXJlIGFyZSBubyBmb2N1c2FibGUgZWxlbWVudHMgaW5zaWRlIHRoZSA8Rm9jdXNUcmFwIC8+XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUgPSAoX2IgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuYWN0aXZlRWxlbWVudDtcbiAgICAgIH0pO1xuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfSk7XG4gIH0pO1xuICByZXR1cm4gcHJldmlvdXNBY3RpdmVFbGVtZW50O1xufVxuZnVuY3Rpb24gdXNlRm9jdXNMb2NrKHtcbiAgb3duZXJEb2N1bWVudCxcbiAgY29udGFpbmVyLFxuICBjb250YWluZXJzLFxuICBwcmV2aW91c0FjdGl2ZUVsZW1lbnRcbn0sIGVuYWJsZWQpIHtcbiAgdmFyIF9hO1xuICB1c2VFdmVudExpc3RlbmVyKChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kZWZhdWx0VmlldywgXCJmb2N1c1wiLCAoZXZlbnQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgbGV0IGFsbENvbnRhaW5lcnMgPSBuZXcgU2V0KGNvbnRhaW5lcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRhaW5lcnMudmFsdWUpO1xuICAgIGFsbENvbnRhaW5lcnMuYWRkKGNvbnRhaW5lcik7XG4gICAgbGV0IHByZXZpb3VzID0gcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlO1xuICAgIGlmICghcHJldmlvdXMpXG4gICAgICByZXR1cm47XG4gICAgbGV0IHRvRWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAodG9FbGVtZW50ICYmIHRvRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICBpZiAoIWNvbnRhaW5zKGFsbENvbnRhaW5lcnMsIHRvRWxlbWVudCkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzRWxlbWVudChwcmV2aW91cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUgPSB0b0VsZW1lbnQ7XG4gICAgICAgIGZvY3VzRWxlbWVudCh0b0VsZW1lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb2N1c0VsZW1lbnQocHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlKTtcbiAgICB9XG4gIH0sIHRydWUpO1xufVxuZnVuY3Rpb24gY29udGFpbnMoY29udGFpbmVycywgZWxlbWVudCkge1xuICB2YXIgX2E7XG4gIGZvciAobGV0IGNvbnRhaW5lciBvZiBjb250YWluZXJzKSB7XG4gICAgaWYgKChfYSA9IGNvbnRhaW5lci52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKGVsZW1lbnQpKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLWluZXJ0LW90aGVycy50c1xudmFyIGltcG9ydF92dWUxMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ0hJTERSRU5fU0VMRUNUT1IgPSBmYWxzZSA/ICdbZGF0YS12LWFwcD1cIlwiXSA+IConIDogXCJib2R5ID4gKlwiO1xudmFyIGludGVyYWN0YWJsZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xudmFyIG9yaWdpbmFscyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5mdW5jdGlvbiBpbmVydChlbGVtZW50KSB7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xuICBlbGVtZW50LmluZXJ0ID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHJlc3RvcmUoZWxlbWVudCkge1xuICBsZXQgb3JpZ2luYWwgPSBvcmlnaW5hbHMuZ2V0KGVsZW1lbnQpO1xuICBpZiAoIW9yaWdpbmFsKVxuICAgIHJldHVybjtcbiAgaWYgKG9yaWdpbmFsW1wiYXJpYS1oaWRkZW5cIl0gPT09IG51bGwpXG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKTtcbiAgZWxzZVxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgb3JpZ2luYWxbXCJhcmlhLWhpZGRlblwiXSk7XG4gIGVsZW1lbnQuaW5lcnQgPSBvcmlnaW5hbC5pbmVydDtcbn1cbmZ1bmN0aW9uIHVzZUluZXJ0T3RoZXJzKGNvbnRhaW5lciwgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlMTIucmVmKSh0cnVlKSkge1xuICAoMCwgaW1wb3J0X3Z1ZTEyLndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghY29udGFpbmVyLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBlbGVtZW50ID0gY29udGFpbmVyLnZhbHVlO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gZ2V0T3duZXJEb2N1bWVudChlbGVtZW50KTtcbiAgICBpZiAoIW93bmVyRG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgaW50ZXJhY3RhYmxlcy5hZGQoZWxlbWVudCk7XG4gICAgZm9yIChsZXQgb3JpZ2luYWwgb2Ygb3JpZ2luYWxzLmtleXMoKSkge1xuICAgICAgaWYgKG9yaWdpbmFsLmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgIHJlc3RvcmUob3JpZ2luYWwpO1xuICAgICAgICBvcmlnaW5hbHMuZGVsZXRlKG9yaWdpbmFsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgb3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKENISUxEUkVOX1NFTEVDVE9SKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKCEoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZvciAobGV0IGludGVyYWN0YWJsZSBvZiBpbnRlcmFjdGFibGVzKSB7XG4gICAgICAgIGlmIChjaGlsZC5jb250YWlucyhpbnRlcmFjdGFibGUpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlcmFjdGFibGVzLnNpemUgPT09IDEpIHtcbiAgICAgICAgb3JpZ2luYWxzLnNldChjaGlsZCwge1xuICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogY2hpbGQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiksXG4gICAgICAgICAgaW5lcnQ6IGNoaWxkLmluZXJ0XG4gICAgICAgIH0pO1xuICAgICAgICBpbmVydChjaGlsZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb25JbnZhbGlkYXRlKCgpID0+IHtcbiAgICAgIGludGVyYWN0YWJsZXMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgaWYgKGludGVyYWN0YWJsZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgb3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKENISUxEUkVOX1NFTEVDVE9SKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGlmIChvcmlnaW5hbHMuaGFzKGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBmb3IgKGxldCBpbnRlcmFjdGFibGUgb2YgaW50ZXJhY3RhYmxlcykge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNvbnRhaW5zKGludGVyYWN0YWJsZSkpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3JpZ2luYWxzLnNldChjaGlsZCwge1xuICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBjaGlsZC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSxcbiAgICAgICAgICAgIGluZXJ0OiBjaGlsZC5pbmVydFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGluZXJ0KGNoaWxkKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50MiBvZiBvcmlnaW5hbHMua2V5cygpKSB7XG4gICAgICAgICAgcmVzdG9yZShlbGVtZW50Mik7XG4gICAgICAgICAgb3JpZ2luYWxzLmRlbGV0ZShlbGVtZW50Mik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL3BvcnRhbC9wb3J0YWwudHNcbnZhciBpbXBvcnRfdnVlMTQgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvaW50ZXJuYWwvcG9ydGFsLWZvcmNlLXJvb3QudHNcbnZhciBpbXBvcnRfdnVlMTMgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEZvcmNlUG9ydGFsUm9vdENvbnRleHQgPSBTeW1ib2woXCJGb3JjZVBvcnRhbFJvb3RDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUG9ydGFsUm9vdCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTMuaW5qZWN0KShGb3JjZVBvcnRhbFJvb3RDb250ZXh0LCBmYWxzZSk7XG59XG52YXIgRm9yY2VQb3J0YWxSb290ID0gKDAsIGltcG9ydF92dWUxMy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJGb3JjZVBvcnRhbFJvb3RcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBmb3JjZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgKDAsIGltcG9ydF92dWUxMy5wcm92aWRlKShGb3JjZVBvcnRhbFJvb3RDb250ZXh0LCBwcm9wcy5mb3JjZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGZvcmNlLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBzbG90cyxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIG5hbWU6IFwiRm9yY2VQb3J0YWxSb290XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9wb3J0YWwvcG9ydGFsLnRzXG5mdW5jdGlvbiBnZXRQb3J0YWxSb290KGNvbnRleHRFbGVtZW50KSB7XG4gIGxldCBvd25lckRvY3VtZW50ID0gZ2V0T3duZXJEb2N1bWVudChjb250ZXh0RWxlbWVudCk7XG4gIGlmICghb3duZXJEb2N1bWVudCkge1xuICAgIGlmIChjb250ZXh0RWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgW0hlYWRsZXNzIFVJXTogQ2Fubm90IGZpbmQgb3duZXJEb2N1bWVudCBmb3IgY29udGV4dEVsZW1lbnQ6ICR7Y29udGV4dEVsZW1lbnR9YCk7XG4gIH1cbiAgbGV0IGV4aXN0aW5nUm9vdCA9IG93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJoZWFkbGVzc3VpLXBvcnRhbC1yb290XCIpO1xuICBpZiAoZXhpc3RpbmdSb290KVxuICAgIHJldHVybiBleGlzdGluZ1Jvb3Q7XG4gIGxldCByb290ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICByb290LnNldEF0dHJpYnV0ZShcImlkXCIsIFwiaGVhZGxlc3N1aS1wb3J0YWwtcm9vdFwiKTtcbiAgcmV0dXJuIG93bmVyRG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290KTtcbn1cbnZhciBQb3J0YWwgPSAoMCwgaW1wb3J0X3Z1ZTE0LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcnRhbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBlbGVtZW50ID0gKDAsIGltcG9ydF92dWUxNC5yZWYpKG51bGwpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUxNC5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChlbGVtZW50KSk7XG4gICAgbGV0IGZvcmNlUG9ydGFsUm9vdCA9IHVzZVBvcnRhbFJvb3QoKTtcbiAgICBsZXQgZ3JvdXBDb250ZXh0ID0gKDAsIGltcG9ydF92dWUxNC5pbmplY3QpKFBvcnRhbEdyb3VwQ29udGV4dCwgbnVsbCk7XG4gICAgbGV0IG15VGFyZ2V0ID0gKDAsIGltcG9ydF92dWUxNC5yZWYpKGZvcmNlUG9ydGFsUm9vdCA9PT0gdHJ1ZSA/IGdldFBvcnRhbFJvb3QoZWxlbWVudC52YWx1ZSkgOiBncm91cENvbnRleHQgPT0gbnVsbCA/IGdldFBvcnRhbFJvb3QoZWxlbWVudC52YWx1ZSkgOiBncm91cENvbnRleHQucmVzb2x2ZVRhcmdldCgpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE0LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoZm9yY2VQb3J0YWxSb290KVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZ3JvdXBDb250ZXh0ID09IG51bGwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG15VGFyZ2V0LnZhbHVlID0gZ3JvdXBDb250ZXh0LnJlc29sdmVUYXJnZXQoKTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE0Lm9uVW5tb3VudGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHJvb3QgPSAoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZ2V0RWxlbWVudEJ5SWQoXCJoZWFkbGVzc3VpLXBvcnRhbC1yb290XCIpO1xuICAgICAgaWYgKCFyb290KVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAobXlUYXJnZXQudmFsdWUgIT09IHJvb3QpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChteVRhcmdldC52YWx1ZS5jaGlsZHJlbi5sZW5ndGggPD0gMCkge1xuICAgICAgICAoX2IgPSBteVRhcmdldC52YWx1ZS5wYXJlbnRFbGVtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2IucmVtb3ZlQ2hpbGQobXlUYXJnZXQudmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAobXlUYXJnZXQudmFsdWUgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGVsZW1lbnQsXG4gICAgICAgIFwiZGF0YS1oZWFkbGVzc3VpLXBvcnRhbFwiOiBcIlwiXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTQuaCkoaW1wb3J0X3Z1ZTE0LlRlbGVwb3J0LCB7IHRvOiBteVRhcmdldC52YWx1ZSB9LCByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUG9ydGFsXCJcbiAgICAgIH0pKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3J0YWxHcm91cENvbnRleHQgPSBTeW1ib2woXCJQb3J0YWxHcm91cENvbnRleHRcIik7XG52YXIgUG9ydGFsR3JvdXAgPSAoMCwgaW1wb3J0X3Z1ZTE0LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcnRhbEdyb3VwXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgdGFyZ2V0OiB7IHR5cGU6IE9iamVjdCwgZGVmYXVsdDogbnVsbCB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9ICgwLCBpbXBvcnRfdnVlMTQucmVhY3RpdmUpKHtcbiAgICAgIHJlc29sdmVUYXJnZXQoKSB7XG4gICAgICAgIHJldHVybiBwcm9wcy50YXJnZXQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNC5wcm92aWRlKShQb3J0YWxHcm91cENvbnRleHQsIGFwaSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IHRhcmdldDogXywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlBvcnRhbEdyb3VwXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW50ZXJuYWwvc3RhY2stY29udGV4dC50c1xudmFyIGltcG9ydF92dWUxNSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgU3RhY2tDb250ZXh0ID0gU3ltYm9sKFwiU3RhY2tDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlU3RhY2tDb250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUxNS5pbmplY3QpKFN0YWNrQ29udGV4dCwgKCkgPT4ge1xuICB9KTtcbn1cbmZ1bmN0aW9uIHVzZVN0YWNrUHJvdmlkZXIoe1xuICB0eXBlLFxuICBlbGVtZW50LFxuICBvblVwZGF0ZVxufSkge1xuICBsZXQgcGFyZW50VXBkYXRlID0gdXNlU3RhY2tDb250ZXh0KCk7XG4gIGZ1bmN0aW9uIG5vdGlmeSguLi5hcmdzKSB7XG4gICAgb25VcGRhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVXBkYXRlKC4uLmFyZ3MpO1xuICAgIHBhcmVudFVwZGF0ZSguLi5hcmdzKTtcbiAgfVxuICAoMCwgaW1wb3J0X3Z1ZTE1Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgIG5vdGlmeSgwIC8qIEFkZCAqLywgdHlwZSwgZWxlbWVudCk7XG4gICAgKDAsIGltcG9ydF92dWUxNS5vblVubW91bnRlZCkoKCkgPT4ge1xuICAgICAgbm90aWZ5KDEgLyogUmVtb3ZlICovLCB0eXBlLCBlbGVtZW50KTtcbiAgICB9KTtcbiAgfSk7XG4gICgwLCBpbXBvcnRfdnVlMTUucHJvdmlkZSkoU3RhY2tDb250ZXh0LCBub3RpZnkpO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9kZXNjcmlwdGlvbi50c1xudmFyIGltcG9ydF92dWUxNiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGVzY3JpcHRpb25Db250ZXh0ID0gU3ltYm9sKFwiRGVzY3JpcHRpb25Db250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlRGVzY3JpcHRpb25Db250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTYuaW5qZWN0KShEZXNjcmlwdGlvbkNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcGFyZW50XCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlRGVzY3JpcHRpb25zKHtcbiAgc2xvdCA9ICgwLCBpbXBvcnRfdnVlMTYucmVmKSh7fSksXG4gIG5hbWUgPSBcIkRlc2NyaXB0aW9uXCIsXG4gIHByb3BzID0ge31cbn0gPSB7fSkge1xuICBsZXQgZGVzY3JpcHRpb25JZHMgPSAoMCwgaW1wb3J0X3Z1ZTE2LnJlZikoW10pO1xuICBmdW5jdGlvbiByZWdpc3Rlcih2YWx1ZSkge1xuICAgIGRlc2NyaXB0aW9uSWRzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgaWR4ID0gZGVzY3JpcHRpb25JZHMudmFsdWUuaW5kZXhPZih2YWx1ZSk7XG4gICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVzY3JpcHRpb25JZHMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgfTtcbiAgfVxuICAoMCwgaW1wb3J0X3Z1ZTE2LnByb3ZpZGUpKERlc2NyaXB0aW9uQ29udGV4dCwgeyByZWdpc3Rlciwgc2xvdCwgbmFtZSwgcHJvcHMgfSk7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE2LmNvbXB1dGVkKSgoKSA9PiBkZXNjcmlwdGlvbklkcy52YWx1ZS5sZW5ndGggPiAwID8gZGVzY3JpcHRpb25JZHMudmFsdWUuam9pbihcIiBcIikgOiB2b2lkIDApO1xufVxudmFyIERlc2NyaXB0aW9uID0gKDAsIGltcG9ydF92dWUxNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEZXNjcmlwdGlvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwicFwiIH1cbiAgfSxcbiAgc2V0dXAobXlQcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBjb250ZXh0ID0gdXNlRGVzY3JpcHRpb25Db250ZXh0KCk7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRlc2NyaXB0aW9uLSR7dXNlSWQoKX1gO1xuICAgICgwLCBpbXBvcnRfdnVlMTYub25Nb3VudGVkKSgoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE2Lm9uVW5tb3VudGVkKShjb250ZXh0LnJlZ2lzdGVyKGlkMikpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSA9IFwiRGVzY3JpcHRpb25cIiwgc2xvdCA9ICgwLCBpbXBvcnRfdnVlMTYucmVmKSh7fSksIHByb3BzID0ge30gfSA9IGNvbnRleHQ7XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG15UHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogKDAsIGltcG9ydF92dWUxNi51bnJlZikodmFsdWUpIH0pLCB7fSksXG4gICAgICAgIGlkOiBpZDJcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHNsb3QudmFsdWUsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cudHNcbnZhciBEaWFsb2dDb250ZXh0ID0gU3ltYm9sKFwiRGlhbG9nQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURpYWxvZ0NvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUxNy5pbmplY3QpKERpYWxvZ0NvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8RGlhbG9nIC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZURpYWxvZ0NvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBNaXNzaW5nID0gXCJEQzhGODkyRC0yRUJELTQ0N0MtQTRDOC1BMDMwNTg0MzZGRjRcIjtcbnZhciBEaWFsb2cgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ1wiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBvcGVuOiB7IHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLCBkZWZhdWx0OiBNaXNzaW5nIH0sXG4gICAgaW5pdGlhbEZvY3VzOiB7IHR5cGU6IE9iamVjdCwgZGVmYXVsdDogbnVsbCB9XG4gIH0sXG4gIGVtaXRzOiB7IGNsb3NlOiAoX2Nsb3NlKSA9PiB0cnVlIH0sXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICB2YXIgX2E7XG4gICAgbGV0IHJlYWR5ID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKGZhbHNlKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgcmVhZHkudmFsdWUgPSB0cnVlO1xuICAgIH0pO1xuICAgIGxldCBuZXN0ZWREaWFsb2dDb3VudCA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKSgwKTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgb3BlbiA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5vcGVuID09PSBNaXNzaW5nICYmIHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoKHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBPcGVuICovXTogdHJ1ZSxcbiAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5vcGVuO1xuICAgIH0pO1xuICAgIGxldCBjb250YWluZXJzID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpO1xuICAgIGxldCBpbnRlcm5hbERpYWxvZ1JlZiA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKTtcbiAgICBsZXQgbWFpblRyZWVOb2RlID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChpbnRlcm5hbERpYWxvZ1JlZikpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbERpYWxvZ1JlZiwgJGVsOiBpbnRlcm5hbERpYWxvZ1JlZiB9KTtcbiAgICBsZXQgaGFzT3BlbiA9IHByb3BzLm9wZW4gIT09IE1pc3NpbmcgfHwgdXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbDtcbiAgICBpZiAoIWhhc09wZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IGZvcmdvdCB0byBwcm92aWRlIGFuIFxcYG9wZW5cXGAgcHJvcCB0byB0aGUgXFxgRGlhbG9nXFxgLmApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wZW4udmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBwcm92aWRlZCBhbiBcXGBvcGVuXFxgIHByb3AgdG8gdGhlIFxcYERpYWxvZ1xcYCwgYnV0IHRoZSB2YWx1ZSBpcyBub3QgYSBib29sZWFuLiBSZWNlaXZlZDogJHtvcGVuLnZhbHVlID09PSBNaXNzaW5nID8gdm9pZCAwIDogcHJvcHMub3Blbn1gKTtcbiAgICB9XG4gICAgbGV0IGRpYWxvZ1N0YXRlID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gIXJlYWR5LnZhbHVlID8gMSAvKiBDbG9zZWQgKi8gOiBvcGVuLnZhbHVlID8gMCAvKiBPcGVuICovIDogMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBlbmFibGVkID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyk7XG4gICAgbGV0IGhhc05lc3RlZERpYWxvZ3MgPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiBuZXN0ZWREaWFsb2dDb3VudC52YWx1ZSA+IDEpO1xuICAgIGxldCBoYXNQYXJlbnREaWFsb2cgPSAoMCwgaW1wb3J0X3Z1ZTE3LmluamVjdCkoRGlhbG9nQ29udGV4dCwgbnVsbCkgIT09IG51bGw7XG4gICAgbGV0IHBvc2l0aW9uID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gIWhhc05lc3RlZERpYWxvZ3MudmFsdWUgPyBcImxlYWZcIiA6IFwicGFyZW50XCIpO1xuICAgIHVzZUluZXJ0T3RoZXJzKGludGVybmFsRGlhbG9nUmVmLCAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiBoYXNOZXN0ZWREaWFsb2dzLnZhbHVlID8gZW5hYmxlZC52YWx1ZSA6IGZhbHNlKSk7XG4gICAgdXNlU3RhY2tQcm92aWRlcih7XG4gICAgICB0eXBlOiBcIkRpYWxvZ1wiLFxuICAgICAgZWxlbWVudDogaW50ZXJuYWxEaWFsb2dSZWYsXG4gICAgICBvblVwZGF0ZTogKG1lc3NhZ2UsIHR5cGUsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgIT09IFwiRGlhbG9nXCIpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICByZXR1cm4gbWF0Y2gobWVzc2FnZSwge1xuICAgICAgICAgIFswIC8qIEFkZCAqL10oKSB7XG4gICAgICAgICAgICBjb250YWluZXJzLnZhbHVlLmFkZChlbGVtZW50KTtcbiAgICAgICAgICAgIG5lc3RlZERpYWxvZ0NvdW50LnZhbHVlICs9IDE7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbMSAvKiBSZW1vdmUgKi9dKCkge1xuICAgICAgICAgICAgY29udGFpbmVycy52YWx1ZS5kZWxldGUoZWxlbWVudCk7XG4gICAgICAgICAgICBuZXN0ZWREaWFsb2dDb3VudC52YWx1ZSAtPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGRlc2NyaWJlZGJ5ID0gdXNlRGVzY3JpcHRpb25zKHtcbiAgICAgIG5hbWU6IFwiRGlhbG9nRGVzY3JpcHRpb25cIixcbiAgICAgIHNsb3Q6ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+ICh7IG9wZW46IG9wZW4udmFsdWUgfSkpXG4gICAgfSk7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy0ke3VzZUlkKCl9YDtcbiAgICBsZXQgdGl0bGVJZCA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgdGl0bGVJZCxcbiAgICAgIHBhbmVsUmVmOiAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCksXG4gICAgICBkaWFsb2dTdGF0ZSxcbiAgICAgIHNldFRpdGxlSWQoaWQzKSB7XG4gICAgICAgIGlmICh0aXRsZUlkLnZhbHVlID09PSBpZDMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aXRsZUlkLnZhbHVlID0gaWQzO1xuICAgICAgfSxcbiAgICAgIGNsb3NlKCkge1xuICAgICAgICBlbWl0KFwiY2xvc2VcIiwgZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUxNy5wcm92aWRlKShEaWFsb2dDb250ZXh0LCBhcGkpO1xuICAgIHVzZU91dHNpZGVDbGljaygoKSA9PiB7XG4gICAgICB2YXIgX2EyLCBfYiwgX2M7XG4gICAgICBsZXQgcm9vdENvbnRhaW5lcnMgPSBBcnJheS5mcm9tKChfYiA9IChfYTIgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJib2R5ID4gKiwgW2RhdGEtaGVhZGxlc3N1aS1wb3J0YWxdXCIpKSAhPSBudWxsID8gX2IgOiBbXSkuZmlsdGVyKChjb250YWluZXIpID0+IHtcbiAgICAgICAgaWYgKCEoY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGNvbnRhaW5lci5jb250YWlucyhkb20obWFpblRyZWVOb2RlKSkpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoYXBpLnBhbmVsUmVmLnZhbHVlICYmIGNvbnRhaW5lci5jb250YWlucyhhcGkucGFuZWxSZWYudmFsdWUpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbLi4ucm9vdENvbnRhaW5lcnMsIChfYyA9IGFwaS5wYW5lbFJlZi52YWx1ZSkgIT0gbnVsbCA/IF9jIDogaW50ZXJuYWxEaWFsb2dSZWYudmFsdWVdO1xuICAgIH0sIChfZXZlbnQsIHRhcmdldCkgPT4ge1xuICAgICAgYXBpLmNsb3NlKCk7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm5leHRUaWNrKSgoKSA9PiB0YXJnZXQgPT0gbnVsbCA/IHZvaWQgMCA6IHRhcmdldC5mb2N1cygpKTtcbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovICYmICFoYXNOZXN0ZWREaWFsb2dzLnZhbHVlKSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcigoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFZpZXcsIFwia2V5ZG93blwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGRpYWxvZ1N0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChoYXNOZXN0ZWREaWFsb2dzLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBhcGkuY2xvc2UoKTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3LndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgaWYgKGRpYWxvZ1N0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChoYXNQYXJlbnREaWFsb2cpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBvd25lciA9IG93bmVyRG9jdW1lbnQudmFsdWU7XG4gICAgICBpZiAoIW93bmVyKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgZG9jdW1lbnRFbGVtZW50ID0gb3duZXIgPT0gbnVsbCA/IHZvaWQgMCA6IG93bmVyLmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGxldCBvd25lcldpbmRvdyA9IChfYTIgPSBvd25lci5kZWZhdWx0VmlldykgIT0gbnVsbCA/IF9hMiA6IHdpbmRvdztcbiAgICAgIGxldCBvdmVyZmxvdyA9IGRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdztcbiAgICAgIGxldCBwYWRkaW5nUmlnaHQgPSBkb2N1bWVudEVsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgICAgbGV0IHNjcm9sbGJhcldpZHRoQmVmb3JlID0gb3duZXJXaW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgICBpZiAoc2Nyb2xsYmFyV2lkdGhCZWZvcmUgPiAwKSB7XG4gICAgICAgIGxldCBzY3JvbGxiYXJXaWR0aEFmdGVyID0gZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC0gZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBsZXQgc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxiYXJXaWR0aEJlZm9yZSAtIHNjcm9sbGJhcldpZHRoQWZ0ZXI7XG4gICAgICAgIGRvY3VtZW50RWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHtzY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgICB9XG4gICAgICBvbkludmFsaWRhdGUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IHBhZGRpbmdSaWdodDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTcud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICAgIGlmIChkaWFsb2dTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgY29udGFpbmVyID0gZG9tKGludGVybmFsRGlhbG9nUmVmKTtcbiAgICAgIGlmICghY29udGFpbmVyKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmIChlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QueCA9PT0gMCAmJiBlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QueSA9PT0gMCAmJiBlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3Qud2lkdGggPT09IDAgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmhlaWdodCA9PT0gMCkge1xuICAgICAgICAgICAgYXBpLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyKTtcbiAgICAgIG9uSW52YWxpZGF0ZSgoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIC4uLmF0dHJzLFxuICAgICAgICByZWY6IGludGVybmFsRGlhbG9nUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICBcImFyaWEtbW9kYWxcIjogZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHRpdGxlSWQudmFsdWUsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBkZXNjcmliZWRieS52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCB7IG9wZW46IF8sIGluaXRpYWxGb2N1cywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9yY2VQb3J0YWxSb290LCB7IGZvcmNlOiB0cnVlIH0sICgpID0+IFtcbiAgICAgICAgKDAsIGltcG9ydF92dWUxNy5oKShQb3J0YWwsICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoUG9ydGFsR3JvdXAsIHsgdGFyZ2V0OiBpbnRlcm5hbERpYWxvZ1JlZi52YWx1ZSB9LCAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEZvcmNlUG9ydGFsUm9vdCwgeyBmb3JjZTogZmFsc2UgfSwgKCkgPT4gKDAsIGltcG9ydF92dWUxNy5oKShGb2N1c1RyYXAsIHtcbiAgICAgICAgICBpbml0aWFsRm9jdXMsXG4gICAgICAgICAgY29udGFpbmVycyxcbiAgICAgICAgICBmZWF0dXJlczogZW5hYmxlZC52YWx1ZSA/IG1hdGNoKHBvc2l0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgICBwYXJlbnQ6IEZvY3VzVHJhcC5mZWF0dXJlcy5SZXN0b3JlRm9jdXMsXG4gICAgICAgICAgICBsZWFmOiBGb2N1c1RyYXAuZmVhdHVyZXMuQWxsICYgfkZvY3VzVHJhcC5mZWF0dXJlcy5Gb2N1c0xvY2tcbiAgICAgICAgICB9KSA6IEZvY3VzVHJhcC5mZWF0dXJlcy5Ob25lXG4gICAgICAgIH0sICgpID0+IHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIHZpc2libGU6IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgICBuYW1lOiBcIkRpYWxvZ1wiXG4gICAgICAgIH0pKSkpKSxcbiAgICAgICAgKDAsIGltcG9ydF92dWUxNy5oKShIaWRkZW4sIHsgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLCByZWY6IG1haW5UcmVlTm9kZSB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nT3ZlcmxheSA9ICgwLCBpbXBvcnRfdnVlMTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlhbG9nT3ZlcmxheVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaWFsb2dDb250ZXh0KFwiRGlhbG9nT3ZlcmxheVwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLW92ZXJsYXktJHt1c2VJZCgpfWA7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGFwaS5jbG9zZSgpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nT3ZlcmxheVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaWFsb2dCYWNrZHJvcCA9ICgwLCBpbXBvcnRfdnVlMTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlhbG9nQmFja2Ryb3BcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaWFsb2dDb250ZXh0KFwiRGlhbG9nQmFja2Ryb3BcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy1iYWNrZHJvcC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxCYWNrZHJvcFJlZiA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxCYWNrZHJvcFJlZiwgJGVsOiBpbnRlcm5hbEJhY2tkcm9wUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICBpZiAoYXBpLnBhbmVsUmVmLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQSA8RGlhbG9nQmFja2Ryb3AgLz4gY29tcG9uZW50IGlzIGJlaW5nIHVzZWQsIGJ1dCBhIDxEaWFsb2dQYW5lbCAvPiBjb21wb25lbnQgaXMgbWlzc2luZy5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBpbnRlcm5hbEJhY2tkcm9wUmVmLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICAgIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUxNy5oKShGb3JjZVBvcnRhbFJvb3QsIHsgZm9yY2U6IHRydWUgfSwgKCkgPT4gKDAsIGltcG9ydF92dWUxNy5oKShQb3J0YWwsICgpID0+IHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi50aGVpclByb3BzIH0sXG4gICAgICAgIHNsb3Q6IHsgb3BlbjogYXBpLmRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpYWxvZ0JhY2tkcm9wXCJcbiAgICAgIH0pKSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ1BhbmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ1BhbmVsXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctcGFuZWwtJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5wYW5lbFJlZiwgJGVsOiBhcGkucGFuZWxSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGFwaS5wYW5lbFJlZixcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiB7IG9wZW46IGFwaS5kaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaWFsb2dQYW5lbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaWFsb2dUaXRsZSA9ICgwLCBpbXBvcnRfdnVlMTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlhbG9nVGl0bGVcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImgyXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaWFsb2dDb250ZXh0KFwiRGlhbG9nVGl0bGVcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy10aXRsZS0ke3VzZUlkKCl9YDtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgYXBpLnNldFRpdGxlSWQoaWQyKTtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTcub25Vbm1vdW50ZWQpKCgpID0+IGFwaS5zZXRUaXRsZUlkKG51bGwpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0geyBpZDogaWQyIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiB7IG9wZW46IGFwaS5kaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaWFsb2dUaXRsZVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaWFsb2dEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uO1xuXG4vLyBzcmMvY29tcG9uZW50cy9kaXNjbG9zdXJlL2Rpc2Nsb3N1cmUudHNcbnZhciBpbXBvcnRfdnVlMTggPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERpc2Nsb3N1cmVDb250ZXh0ID0gU3ltYm9sKFwiRGlzY2xvc3VyZUNvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VEaXNjbG9zdXJlQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE4LmluamVjdCkoRGlzY2xvc3VyZUNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8RGlzY2xvc3VyZSAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VEaXNjbG9zdXJlQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIERpc2Nsb3N1cmVQYW5lbENvbnRleHQgPSBTeW1ib2woXCJEaXNjbG9zdXJlUGFuZWxDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlRGlzY2xvc3VyZVBhbmVsQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTguaW5qZWN0KShEaXNjbG9zdXJlUGFuZWxDb250ZXh0LCBudWxsKTtcbn1cbnZhciBEaXNjbG9zdXJlID0gKDAsIGltcG9ydF92dWUxOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaXNjbG9zdXJlXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZGVmYXVsdE9wZW46IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IGJ1dHRvbklkID0gYGhlYWRsZXNzdWktZGlzY2xvc3VyZS1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IHBhbmVsSWQgPSBgaGVhZGxlc3N1aS1kaXNjbG9zdXJlLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGxldCBkaXNjbG9zdXJlU3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTE4LnJlZikocHJvcHMuZGVmYXVsdE9wZW4gPyAwIC8qIE9wZW4gKi8gOiAxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IHBhbmVsUmVmID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKG51bGwpO1xuICAgIGxldCBidXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE4LnJlZikobnVsbCk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIGJ1dHRvbklkLFxuICAgICAgcGFuZWxJZCxcbiAgICAgIGRpc2Nsb3N1cmVTdGF0ZSxcbiAgICAgIHBhbmVsOiBwYW5lbFJlZixcbiAgICAgIGJ1dHRvbjogYnV0dG9uUmVmLFxuICAgICAgdG9nZ2xlRGlzY2xvc3VyZSgpIHtcbiAgICAgICAgZGlzY2xvc3VyZVN0YXRlLnZhbHVlID0gbWF0Y2goZGlzY2xvc3VyZVN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IDEgLyogQ2xvc2VkICovLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IDAgLyogT3BlbiAqL1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBjbG9zZURpc2Nsb3N1cmUoKSB7XG4gICAgICAgIGlmIChkaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZGlzY2xvc3VyZVN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICB9LFxuICAgICAgY2xvc2UoZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICBhcGkuY2xvc2VEaXNjbG9zdXJlKCk7XG4gICAgICAgIGxldCByZXN0b3JlRWxlbWVudCA9ICgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFmb2N1c2FibGVFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQudmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oZm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc3RvcmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE4LnByb3ZpZGUpKERpc2Nsb3N1cmVDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTE4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gbWF0Y2goZGlzY2xvc3VyZVN0YXRlLnZhbHVlLCB7XG4gICAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFsxIC8qIENsb3NlZCAqL106IDEgLyogQ2xvc2VkICovXG4gICAgICB9KTtcbiAgICB9KSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGRlZmF1bHRPcGVuOiBfLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBkaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLywgY2xvc2U6IGFwaS5jbG9zZSB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBuYW1lOiBcIkRpc2Nsb3N1cmVcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlzY2xvc3VyZUJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlzY2xvc3VyZUJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaXNjbG9zdXJlQ29udGV4dChcIkRpc2Nsb3N1cmVCdXR0b25cIik7XG4gICAgbGV0IHBhbmVsQ29udGV4dCA9IHVzZURpc2Nsb3N1cmVQYW5lbENvbnRleHQoKTtcbiAgICBsZXQgaXNXaXRoaW5QYW5lbCA9IHBhbmVsQ29udGV4dCA9PT0gbnVsbCA/IGZhbHNlIDogcGFuZWxDb250ZXh0ID09PSBhcGkucGFuZWxJZDtcbiAgICBsZXQgaW50ZXJuYWxCdXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE4LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsQnV0dG9uUmVmLCAkZWw6IGludGVybmFsQnV0dG9uUmVmIH0pO1xuICAgIGlmICghaXNXaXRoaW5QYW5lbCkge1xuICAgICAgKDAsIGltcG9ydF92dWUxOC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgICBhcGkuYnV0dG9uLnZhbHVlID0gaW50ZXJuYWxCdXR0b25SZWYudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTE4LmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBpbnRlcm5hbEJ1dHRvblJlZik7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKSB7XG4gICAgICAgIGFwaS50b2dnbGVEaXNjbG9zdXJlKCk7XG4gICAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGFwaS50b2dnbGVEaXNjbG9zdXJlKCk7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGFwaS50b2dnbGVEaXNjbG9zdXJlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5kaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0gaXNXaXRoaW5QYW5lbCA/IHtcbiAgICAgICAgcmVmOiBpbnRlcm5hbEJ1dHRvblJlZixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93blxuICAgICAgfSA6IHtcbiAgICAgICAgaWQ6IGFwaS5idXR0b25JZCxcbiAgICAgICAgcmVmOiBpbnRlcm5hbEJ1dHRvblJlZixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLmRpc2FibGVkID8gdm9pZCAwIDogYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogZG9tKGFwaS5wYW5lbCkgPyBhcGkucGFuZWxJZCA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXBcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlzY2xvc3VyZUJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaXNjbG9zdXJlUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTE4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpc2Nsb3N1cmVQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpc2Nsb3N1cmVDb250ZXh0KFwiRGlzY2xvc3VyZVBhbmVsXCIpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkucGFuZWwsICRlbDogYXBpLnBhbmVsIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTgucHJvdmlkZSkoRGlzY2xvc3VyZVBhbmVsQ29udGV4dCwgYXBpLnBhbmVsSWQpO1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUxOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkuZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGNsb3NlOiBhcGkuY2xvc2UgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgaWQ6IGFwaS5wYW5lbElkLCByZWY6IGFwaS5wYW5lbCB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIkRpc2Nsb3N1cmVQYW5lbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LnRzXG52YXIgaW1wb3J0X3Z1ZTE5ID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIG5leHRGcmFtZShjYikge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSk7XG59XG52YXIgTGlzdGJveENvbnRleHQgPSBTeW1ib2woXCJMaXN0Ym94Q29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZUxpc3Rib3hDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTkuaW5qZWN0KShMaXN0Ym94Q29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxMaXN0Ym94IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZUxpc3Rib3hDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTGlzdGJveCA9ICgwLCBpbXBvcnRfdnVlMTkuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGlzdGJveFwiLFxuICBlbWl0czogeyBcInVwZGF0ZTptb2RlbFZhbHVlXCI6IChfdmFsdWUpID0+IHRydWUgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgaG9yaXpvbnRhbDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbW9kZWxWYWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICBtdWx0aXBsZTogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBlbWl0IH0pIHtcbiAgICBsZXQgbGlzdGJveFN0YXRlID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgbGFiZWxSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IGJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9uc1JlZiA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShbXSk7XG4gICAgbGV0IHNlYXJjaFF1ZXJ5ID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKFwiXCIpO1xuICAgIGxldCBhY3RpdmVPcHRpb25JbmRleCA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBsZXQgYWN0aXZhdGlvblRyaWdnZXIgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikoMSAvKiBPdGhlciAqLyk7XG4gICAgZnVuY3Rpb24gYWRqdXN0T3JkZXJlZFN0YXRlKGFkanVzdG1lbnQgPSAoaSkgPT4gaSkge1xuICAgICAgbGV0IGN1cnJlbnRBY3RpdmVPcHRpb24gPSBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCA/IG9wdGlvbnMudmFsdWVbYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdIDogbnVsbDtcbiAgICAgIGxldCBzb3J0ZWRPcHRpb25zID0gc29ydEJ5RG9tTm9kZShhZGp1c3RtZW50KG9wdGlvbnMudmFsdWUuc2xpY2UoKSksIChvcHRpb24pID0+IGRvbShvcHRpb24uZGF0YVJlZi5kb21SZWYpKTtcbiAgICAgIGxldCBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID0gY3VycmVudEFjdGl2ZU9wdGlvbiA/IHNvcnRlZE9wdGlvbnMuaW5kZXhPZihjdXJyZW50QWN0aXZlT3B0aW9uKSA6IG51bGw7XG4gICAgICBpZiAoYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvcHRpb25zOiBzb3J0ZWRPcHRpb25zLFxuICAgICAgICBhY3RpdmVPcHRpb25JbmRleDogYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleFxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgbGV0IG1vZGUgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tdWx0aXBsZSA/IDEgLyogTXVsdGkgKi8gOiAwIC8qIFNpbmdsZSAqLyk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIGxpc3Rib3hTdGF0ZSxcbiAgICAgIHZhbHVlLFxuICAgICAgbW9kZSxcbiAgICAgIGNvbXBhcmUoYSwgeikge1xuICAgICAgICByZXR1cm4gYSA9PT0gejtcbiAgICAgIH0sXG4gICAgICBvcmllbnRhdGlvbjogKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMuaG9yaXpvbnRhbCA/IFwiaG9yaXpvbnRhbFwiIDogXCJ2ZXJ0aWNhbFwiKSxcbiAgICAgIGxhYmVsUmVmLFxuICAgICAgYnV0dG9uUmVmLFxuICAgICAgb3B0aW9uc1JlZixcbiAgICAgIGRpc2FibGVkOiAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5kaXNhYmxlZCksXG4gICAgICBvcHRpb25zLFxuICAgICAgc2VhcmNoUXVlcnksXG4gICAgICBhY3RpdmVPcHRpb25JbmRleCxcbiAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLFxuICAgICAgY2xvc2VMaXN0Ym94KCkge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxpc3Rib3hTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG51bGw7XG4gICAgICB9LFxuICAgICAgb3Blbkxpc3Rib3goKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxpc3Rib3hTdGF0ZS52YWx1ZSA9IDAgLyogT3BlbiAqLztcbiAgICAgIH0sXG4gICAgICBnb1RvT3B0aW9uKGZvY3VzLCBpZDIsIHRyaWdnZXIpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV4dEFjdGl2ZU9wdGlvbkluZGV4ID0gY2FsY3VsYXRlQWN0aXZlSW5kZXgoZm9jdXMgPT09IDQgLyogU3BlY2lmaWMgKi8gPyB7IGZvY3VzOiA0IC8qIFNwZWNpZmljICovLCBpZDogaWQyIH0gOiB7IGZvY3VzIH0sIHtcbiAgICAgICAgICByZXNvbHZlSXRlbXM6ICgpID0+IGFkanVzdGVkU3RhdGUub3B0aW9ucyxcbiAgICAgICAgICByZXNvbHZlQWN0aXZlSW5kZXg6ICgpID0+IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXgsXG4gICAgICAgICAgcmVzb2x2ZUlkOiAob3B0aW9uKSA9PiBvcHRpb24uaWQsXG4gICAgICAgICAgcmVzb2x2ZURpc2FibGVkOiAob3B0aW9uKSA9PiBvcHRpb24uZGF0YVJlZi5kaXNhYmxlZFxuICAgICAgICB9KTtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG5leHRBY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSB0cmlnZ2VyICE9IG51bGwgPyB0cmlnZ2VyIDogMSAvKiBPdGhlciAqLztcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgIH0sXG4gICAgICBzZWFyY2godmFsdWUyKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHdhc0FscmVhZHlTZWFyY2hpbmcgPSBzZWFyY2hRdWVyeS52YWx1ZSAhPT0gXCJcIjtcbiAgICAgICAgbGV0IG9mZnNldCA9IHdhc0FscmVhZHlTZWFyY2hpbmcgPyAwIDogMTtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgKz0gdmFsdWUyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCByZU9yZGVyZWRPcHRpb25zID0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBvcHRpb25zLnZhbHVlLnNsaWNlKGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICsgb2Zmc2V0KS5jb25jYXQob3B0aW9ucy52YWx1ZS5zbGljZSgwLCBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSArIG9mZnNldCkpIDogb3B0aW9ucy52YWx1ZTtcbiAgICAgICAgbGV0IG1hdGNoaW5nT3B0aW9uID0gcmVPcmRlcmVkT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5kYXRhUmVmLnRleHRWYWx1ZS5zdGFydHNXaXRoKHNlYXJjaFF1ZXJ5LnZhbHVlKSAmJiAhb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICBsZXQgbWF0Y2hJZHggPSBtYXRjaGluZ09wdGlvbiA/IG9wdGlvbnMudmFsdWUuaW5kZXhPZihtYXRjaGluZ09wdGlvbikgOiAtMTtcbiAgICAgICAgaWYgKG1hdGNoSWR4ID09PSAtMSB8fCBtYXRjaElkeCA9PT0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG1hdGNoSWR4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgY2xlYXJTZWFyY2goKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHNlYXJjaFF1ZXJ5LnZhbHVlID09PSBcIlwiKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyT3B0aW9uKGlkMiwgZGF0YVJlZikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgob3B0aW9uczIpID0+IHtcbiAgICAgICAgICByZXR1cm4gWy4uLm9wdGlvbnMyLCB7IGlkOiBpZDIsIGRhdGFSZWYgfV07XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlck9wdGlvbihpZDIpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiB7XG4gICAgICAgICAgbGV0IGlkeCA9IG9wdGlvbnMyLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gaWQyKTtcbiAgICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICAgIG9wdGlvbnMyLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zMjtcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIHNlbGVjdCh2YWx1ZTIpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiB2YWx1ZTIsXG4gICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgY29weSA9ICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByYXcgPSAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KSh2YWx1ZTIpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGNvcHkuZmluZEluZGV4KCh2YWx1ZTMpID0+IGFwaS5jb21wYXJlKHJhdywgKDAsIGltcG9ydF92dWUxOS50b1JhdykodmFsdWUzKSkpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29weS5wdXNoKHJhdyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soW2J1dHRvblJlZiwgb3B0aW9uc1JlZl0sIChldmVudCwgdGFyZ2V0KSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICBpZiAoIWlzRm9jdXNhYmxlRWxlbWVudCh0YXJnZXQsIDEgLyogTG9vc2UgKi8pKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIChfYSA9IGRvbShidXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBsaXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykpO1xuICAgICgwLCBpbXBvcnRfdnVlMTkucHJvdmlkZSkoTGlzdGJveENvbnRleHQsIGFwaSk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IG1hdGNoKGxpc3Rib3hTdGF0ZS52YWx1ZSwge1xuICAgICAgWzAgLyogT3BlbiAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgIFsxIC8qIENsb3NlZCAqL106IDEgLyogQ2xvc2VkICovXG4gICAgfSkpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSwgbW9kZWxWYWx1ZSwgZGlzYWJsZWQsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLCBkaXNhYmxlZCB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTkuaCkoaW1wb3J0X3Z1ZTE5LkZyYWdtZW50LCBbXG4gICAgICAgIC4uLm5hbWUgIT0gbnVsbCAmJiBtb2RlbFZhbHVlICE9IG51bGwgPyBvYmplY3RUb0Zvcm1FbnRyaWVzKHsgW25hbWVdOiBtb2RlbFZhbHVlIH0pLm1hcCgoW25hbWUyLCB2YWx1ZTJdKSA9PiAoMCwgaW1wb3J0X3Z1ZTE5LmgpKEhpZGRlbiwgY29tcGFjdCh7XG4gICAgICAgICAgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLFxuICAgICAgICAgIGtleTogbmFtZTIsXG4gICAgICAgICAgYXM6IFwiaW5wdXRcIixcbiAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lMixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUyXG4gICAgICAgIH0pKSkgOiBbXSxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgICAgdGhlaXJQcm9wczoge1xuICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAuLi5vbWl0KHRoZWlyUHJvcHMsIFtcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJob3Jpem9udGFsXCIsIFwibXVsdGlwbGVcIiwgXCJieVwiXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgbmFtZTogXCJMaXN0Ym94XCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hMYWJlbCA9ICgwLCBpbXBvcnRfdnVlMTkuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGlzdGJveExhYmVsXCIsXG4gIHByb3BzOiB7IGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGFiZWxcIiB9IH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUxpc3Rib3hDb250ZXh0KFwiTGlzdGJveExhYmVsXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LWxhYmVsLSR7dXNlSWQoKX1gO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgaWQ6IGlkMiwgcmVmOiBhcGkubGFiZWxSZWYsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiTGlzdGJveExhYmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VMaXN0Ym94Q29udGV4dChcIkxpc3Rib3hCdXR0b25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWxpc3Rib3gtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuYnV0dG9uUmVmLCAkZWw6IGFwaS5idXR0b25SZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBhcGkub3Blbkxpc3Rib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLm9wdGlvbnNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKCFhcGkudmFsdWUudmFsdWUpXG4gICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBhcGkub3Blbkxpc3Rib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLm9wdGlvbnNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKCFhcGkudmFsdWUudmFsdWUpXG4gICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAoYXBpLmRpc2FibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSB7XG4gICAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFwaS5vcGVuTGlzdGJveCgpO1xuICAgICAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgYXBpLmJ1dHRvblJlZik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGFwaS5idXR0b25SZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiB0cnVlLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogYXBpLmRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcGkubGFiZWxSZWYudmFsdWUgPyBbKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCwgaWQyXS5qb2luKFwiIFwiKSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZSA9PT0gdHJ1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hCdXR0b25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTGlzdGJveE9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hPcHRpb25zXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ1bFwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VMaXN0Ym94Q29udGV4dChcIkxpc3Rib3hPcHRpb25zXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LW9wdGlvbnMtJHt1c2VJZCgpfWA7XG4gICAgbGV0IHNlYXJjaERlYm91bmNlID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkub3B0aW9uc1JlZiwgJGVsOiBhcGkub3B0aW9uc1JlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoc2VhcmNoRGVib3VuY2UudmFsdWUpXG4gICAgICAgIGNsZWFyVGltZW91dChzZWFyY2hEZWJvdW5jZS52YWx1ZSk7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGlmIChhcGkuc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybiBhcGkuc2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBhY3RpdmVPcHRpb24gPSBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdO1xuICAgICAgICAgICAgYXBpLnNlbGVjdChhY3RpdmVPcHRpb24uZGF0YVJlZi52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG1hdGNoKGFwaS5vcmllbnRhdGlvbi52YWx1ZSwge1xuICAgICAgICAgIHZlcnRpY2FsOiBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLyxcbiAgICAgICAgICBob3Jpem9udGFsOiBcIkFycm93UmlnaHRcIiAvKiBBcnJvd1JpZ2h0ICovXG4gICAgICAgIH0pOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDIgLyogTmV4dCAqLyk7XG4gICAgICAgIGNhc2UgbWF0Y2goYXBpLm9yaWVudGF0aW9uLnZhbHVlLCB7IHZlcnRpY2FsOiBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovLCBob3Jpem9udGFsOiBcIkFycm93TGVmdFwiIC8qIEFycm93TGVmdCAqLyB9KTpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigxIC8qIFByZXZpb3VzICovKTtcbiAgICAgICAgY2FzZSBcIkhvbWVcIiAvKiBIb21lICovOlxuICAgICAgICBjYXNlIFwiUGFnZVVwXCIgLyogUGFnZVVwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRW5kXCIgLyogRW5kICovOlxuICAgICAgICBjYXNlIFwiUGFnZURvd25cIiAvKiBQYWdlRG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJUYWJcIiAvKiBUYWIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgICAgc2VhcmNoRGVib3VuY2UudmFsdWUgPSBzZXRUaW1lb3V0KCgpID0+IGFwaS5jbGVhclNlYXJjaCgpLCAzNTApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiAoX2EgPSBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogYXBpLm1vZGUudmFsdWUgPT09IDEgLyogTXVsdGkgKi8gPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAoX2QgPSAoX2IgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkKSAhPSBudWxsID8gX2QgOiAoX2MgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYy5pZCxcbiAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IGFwaS5vcmllbnRhdGlvbi52YWx1ZSxcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICByb2xlOiBcImxpc3Rib3hcIixcbiAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgIHJlZjogYXBpLm9wdGlvbnNSZWZcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiTGlzdGJveE9wdGlvbnNcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTGlzdGJveE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlMTkuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGlzdGJveE9wdGlvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGlcIiB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VMaXN0Ym94Q29udGV4dChcIkxpc3Rib3hPcHRpb25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWxpc3Rib3gtb3B0aW9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbE9wdGlvblJlZiA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxPcHRpb25SZWYsICRlbDogaW50ZXJuYWxPcHRpb25SZWYgfSk7XG4gICAgbGV0IGFjdGl2ZSA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdLmlkID09PSBpZDIgOiBmYWxzZTtcbiAgICB9KTtcbiAgICBsZXQgc2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUxOS50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWUxOS50b1JhdykocHJvcHMudmFsdWUpKSxcbiAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4gKDAsIGltcG9ydF92dWUxOS50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zb21lKCh2YWx1ZSkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUxOS50b1JhdykodmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShwcm9wcy52YWx1ZSkpKVxuICAgIH0pKTtcbiAgICBsZXQgaXNGaXJzdFNlbGVjdGVkID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1hdGNoKGFwaS5tb2RlLnZhbHVlLCB7XG4gICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICBsZXQgY3VycmVudFZhbHVlcyA9ICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuICgoX2EgPSBhcGkub3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IGN1cnJlbnRWYWx1ZXMuc29tZSgodmFsdWUpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlKSwgKDAsIGltcG9ydF92dWUxOS50b1Jhdykob3B0aW9uLmRhdGFSZWYudmFsdWUpKSkpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQpID09PSBpZDI7XG4gICAgICAgIH0sXG4gICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IHNlbGVjdGVkLnZhbHVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBsZXQgZGF0YVJlZiA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+ICh7XG4gICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gICAgICB2YWx1ZTogcHJvcHMudmFsdWUsXG4gICAgICB0ZXh0VmFsdWU6IFwiXCIsXG4gICAgICBkb21SZWY6IGludGVybmFsT3B0aW9uUmVmXG4gICAgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlMTkub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHRleHRWYWx1ZSA9IChfYiA9IChfYSA9IGRvbShpbnRlcm5hbE9wdGlvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS50ZXh0Q29udGVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgaWYgKHRleHRWYWx1ZSAhPT0gdm9pZCAwKVxuICAgICAgICBkYXRhUmVmLnZhbHVlLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyT3B0aW9uKGlkMiwgZGF0YVJlZikpO1xuICAgICgwLCBpbXBvcnRfdnVlMTkub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyT3B0aW9uKGlkMikpO1xuICAgICgwLCBpbXBvcnRfdnVlMTkub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE5LndhdGNoKShbYXBpLmxpc3Rib3hTdGF0ZSwgc2VsZWN0ZWRdLCAoKSA9PiB7XG4gICAgICAgIGlmIChhcGkubGlzdGJveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIXNlbGVjdGVkLnZhbHVlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbWF0Y2goYXBpLm1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0ZpcnN0U2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5hY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9PT0gMCAvKiBQb2ludGVyICovKVxuICAgICAgICByZXR1cm47XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxPcHRpb25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2Nyb2xsSW50b1ZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB7IGJsb2NrOiBcIm5lYXJlc3RcIiB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBpLnNlbGVjdChwcm9wcy52YWx1ZSk7XG4gICAgICBpZiAoYXBpLm1vZGUudmFsdWUgPT09IDAgLyogU2luZ2xlICovKSB7XG4gICAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW92ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyLCAwIC8qIFBvaW50ZXIgKi8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBkaXNhYmxlZCB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgYWN0aXZlOiBhY3RpdmUudmFsdWUsIHNlbGVjdGVkOiBzZWxlY3RlZC52YWx1ZSwgZGlzYWJsZWQgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBpbnRlcm5hbE9wdGlvblJlZixcbiAgICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID09PSB0cnVlID8gdm9pZCAwIDogLTEsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZC52YWx1ZSA9PT0gdHJ1ZSA/IHNlbGVjdGVkLnZhbHVlIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogdm9pZCAwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgIG9uUG9pbnRlcm1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uTW91c2Vtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvblBvaW50ZXJsZWF2ZTogaGFuZGxlTGVhdmUsXG4gICAgICAgIG9uTW91c2VsZWF2ZTogaGFuZGxlTGVhdmVcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IG9taXQocHJvcHMsIFtcInZhbHVlXCIsIFwiZGlzYWJsZWRcIl0pLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiTGlzdGJveE9wdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvbWVudS9tZW51LnRzXG52YXIgaW1wb3J0X3Z1ZTIwID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIG5leHRGcmFtZTIoY2IpIHtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYikpO1xufVxudmFyIE1lbnVDb250ZXh0ID0gU3ltYm9sKFwiTWVudUNvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VNZW51Q29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTIwLmluamVjdCkoTWVudUNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8TWVudSAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VNZW51Q29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIE1lbnUgPSAoMCwgaW1wb3J0X3Z1ZTIwLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIk1lbnVcIixcbiAgcHJvcHM6IHsgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0gfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgbWVudVN0YXRlID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGxldCBpdGVtc1JlZiA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBsZXQgaXRlbXMgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoW10pO1xuICAgIGxldCBzZWFyY2hRdWVyeSA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShcIlwiKTtcbiAgICBsZXQgYWN0aXZlSXRlbUluZGV4ID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGxldCBhY3RpdmF0aW9uVHJpZ2dlciA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKSgxIC8qIE90aGVyICovKTtcbiAgICBmdW5jdGlvbiBhZGp1c3RPcmRlcmVkU3RhdGUoYWRqdXN0bWVudCA9IChpKSA9PiBpKSB7XG4gICAgICBsZXQgY3VycmVudEFjdGl2ZUl0ZW0gPSBhY3RpdmVJdGVtSW5kZXgudmFsdWUgIT09IG51bGwgPyBpdGVtcy52YWx1ZVthY3RpdmVJdGVtSW5kZXgudmFsdWVdIDogbnVsbDtcbiAgICAgIGxldCBzb3J0ZWRJdGVtcyA9IHNvcnRCeURvbU5vZGUoYWRqdXN0bWVudChpdGVtcy52YWx1ZS5zbGljZSgpKSwgKGl0ZW0pID0+IGRvbShpdGVtLmRhdGFSZWYuZG9tUmVmKSk7XG4gICAgICBsZXQgYWRqdXN0ZWRBY3RpdmVJdGVtSW5kZXggPSBjdXJyZW50QWN0aXZlSXRlbSA/IHNvcnRlZEl0ZW1zLmluZGV4T2YoY3VycmVudEFjdGl2ZUl0ZW0pIDogbnVsbDtcbiAgICAgIGlmIChhZGp1c3RlZEFjdGl2ZUl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgYWRqdXN0ZWRBY3RpdmVJdGVtSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHNvcnRlZEl0ZW1zLFxuICAgICAgICBhY3RpdmVJdGVtSW5kZXg6IGFkanVzdGVkQWN0aXZlSXRlbUluZGV4XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgYXBpID0ge1xuICAgICAgbWVudVN0YXRlLFxuICAgICAgYnV0dG9uUmVmLFxuICAgICAgaXRlbXNSZWYsXG4gICAgICBpdGVtcyxcbiAgICAgIHNlYXJjaFF1ZXJ5LFxuICAgICAgYWN0aXZlSXRlbUluZGV4LFxuICAgICAgYWN0aXZhdGlvblRyaWdnZXIsXG4gICAgICBjbG9zZU1lbnU6ICgpID0+IHtcbiAgICAgICAgbWVudVN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IG51bGw7XG4gICAgICB9LFxuICAgICAgb3Blbk1lbnU6ICgpID0+IG1lbnVTdGF0ZS52YWx1ZSA9IDAgLyogT3BlbiAqLyxcbiAgICAgIGdvVG9JdGVtKGZvY3VzLCBpZDIsIHRyaWdnZXIpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKTtcbiAgICAgICAgbGV0IG5leHRBY3RpdmVJdGVtSW5kZXggPSBjYWxjdWxhdGVBY3RpdmVJbmRleChmb2N1cyA9PT0gNCAvKiBTcGVjaWZpYyAqLyA/IHsgZm9jdXM6IDQgLyogU3BlY2lmaWMgKi8sIGlkOiBpZDIgfSA6IHsgZm9jdXMgfSwge1xuICAgICAgICAgIHJlc29sdmVJdGVtczogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5pdGVtcyxcbiAgICAgICAgICByZXNvbHZlQWN0aXZlSW5kZXg6ICgpID0+IGFkanVzdGVkU3RhdGUuYWN0aXZlSXRlbUluZGV4LFxuICAgICAgICAgIHJlc29sdmVJZDogKGl0ZW0pID0+IGl0ZW0uaWQsXG4gICAgICAgICAgcmVzb2x2ZURpc2FibGVkOiAoaXRlbSkgPT4gaXRlbS5kYXRhUmVmLmRpc2FibGVkXG4gICAgICAgIH0pO1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSA9IFwiXCI7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IG5leHRBY3RpdmVJdGVtSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gdHJpZ2dlciAhPSBudWxsID8gdHJpZ2dlciA6IDEgLyogT3RoZXIgKi87XG4gICAgICAgIGl0ZW1zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5pdGVtcztcbiAgICAgIH0sXG4gICAgICBzZWFyY2godmFsdWUpIHtcbiAgICAgICAgbGV0IHdhc0FscmVhZHlTZWFyY2hpbmcgPSBzZWFyY2hRdWVyeS52YWx1ZSAhPT0gXCJcIjtcbiAgICAgICAgbGV0IG9mZnNldCA9IHdhc0FscmVhZHlTZWFyY2hpbmcgPyAwIDogMTtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgKz0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IHJlT3JkZXJlZEl0ZW1zID0gYWN0aXZlSXRlbUluZGV4LnZhbHVlICE9PSBudWxsID8gaXRlbXMudmFsdWUuc2xpY2UoYWN0aXZlSXRlbUluZGV4LnZhbHVlICsgb2Zmc2V0KS5jb25jYXQoaXRlbXMudmFsdWUuc2xpY2UoMCwgYWN0aXZlSXRlbUluZGV4LnZhbHVlICsgb2Zmc2V0KSkgOiBpdGVtcy52YWx1ZTtcbiAgICAgICAgbGV0IG1hdGNoaW5nSXRlbSA9IHJlT3JkZXJlZEl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZGF0YVJlZi50ZXh0VmFsdWUuc3RhcnRzV2l0aChzZWFyY2hRdWVyeS52YWx1ZSkgJiYgIWl0ZW0uZGF0YVJlZi5kaXNhYmxlZCk7XG4gICAgICAgIGxldCBtYXRjaElkeCA9IG1hdGNoaW5nSXRlbSA/IGl0ZW1zLnZhbHVlLmluZGV4T2YobWF0Y2hpbmdJdGVtKSA6IC0xO1xuICAgICAgICBpZiAobWF0Y2hJZHggPT09IC0xIHx8IG1hdGNoSWR4ID09PSBhY3RpdmVJdGVtSW5kZXgudmFsdWUpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBtYXRjaElkeDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU2VhcmNoKCkge1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSA9IFwiXCI7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJJdGVtKGlkMiwgZGF0YVJlZikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgoaXRlbXMyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5pdGVtczIsIHsgaWQ6IGlkMiwgZGF0YVJlZiB9XTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW1zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5pdGVtcztcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVySXRlbShpZDIpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKGl0ZW1zMikgPT4ge1xuICAgICAgICAgIGxldCBpZHggPSBpdGVtczIuZmluZEluZGV4KChhKSA9PiBhLmlkID09PSBpZDIpO1xuICAgICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgICAgaXRlbXMyLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIHJldHVybiBpdGVtczI7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtcy52YWx1ZSA9IGFkanVzdGVkU3RhdGUuaXRlbXM7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9XG4gICAgfTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soW2J1dHRvblJlZiwgaXRlbXNSZWZdLCAoZXZlbnQsIHRhcmdldCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoX2EgPSBkb20oYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gbWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIwLnByb3ZpZGUpKE1lbnVDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBtYXRjaChtZW51U3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBtZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7IG91clByb3BzOiB7fSwgdGhlaXJQcm9wczogcHJvcHMsIHNsb3QsIHNsb3RzLCBhdHRycywgbmFtZTogXCJNZW51XCIgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTWVudUJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMjAuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTWVudUJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTWVudUNvbnRleHQoXCJNZW51QnV0dG9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1tZW51LWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvblJlZiwgJGVsOiBhcGkuYnV0dG9uUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYXBpLm9wZW5NZW51KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5pdGVtc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICBhcGkuZ29Ub0l0ZW0oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5vcGVuTWVudSgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgYXBpLmdvVG9JdGVtKDMgLyogTGFzdCAqLyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYXBpLm9wZW5NZW51KCk7XG4gICAgICAgIG5leHRGcmFtZTIoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5pdGVtc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGFwaS5idXR0b25SZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogYXBpLmJ1dHRvblJlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IHRydWUsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAoX2EgPSBkb20oYXBpLml0ZW1zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMuZGlzYWJsZWQgPyB2b2lkIDAgOiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIk1lbnVCdXR0b25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTWVudUl0ZW1zID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51SXRlbXNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VNZW51Q29udGV4dChcIk1lbnVJdGVtc1wiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbWVudS1pdGVtcy0ke3VzZUlkKCl9YDtcbiAgICBsZXQgc2VhcmNoRGVib3VuY2UgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5pdGVtc1JlZiwgJGVsOiBhcGkuaXRlbXNSZWYgfSk7XG4gICAgdXNlVHJlZVdhbGtlcih7XG4gICAgICBjb250YWluZXI6ICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IGRvbShhcGkuaXRlbXNSZWYpKSxcbiAgICAgIGVuYWJsZWQ6ICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyksXG4gICAgICBhY2NlcHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcIm1lbnVpdGVtXCIpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgICAgaWYgKG5vZGUuaGFzQXR0cmlidXRlKFwicm9sZVwiKSlcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0sXG4gICAgICB3YWxrKG5vZGUpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAoc2VhcmNoRGVib3VuY2UudmFsdWUpXG4gICAgICAgIGNsZWFyVGltZW91dChzZWFyY2hEZWJvdW5jZS52YWx1ZSk7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGlmIChhcGkuc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybiBhcGkuc2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgYWN0aXZlSXRlbSA9IGFwaS5pdGVtcy52YWx1ZVthcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlXTtcbiAgICAgICAgICAgIGxldCBfYWN0aXZlSXRlbSA9IGFjdGl2ZUl0ZW07XG4gICAgICAgICAgICAoX2EgPSBkb20oX2FjdGl2ZUl0ZW0uZGF0YVJlZi5kb21SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2xpY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTI7XG4gICAgICAgICAgICByZXR1cm4gKF9hMiA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDIgLyogTmV4dCAqLyk7XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oMSAvKiBQcmV2aW91cyAqLyk7XG4gICAgICAgIGNhc2UgXCJIb21lXCIgLyogSG9tZSAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VVcFwiIC8qIFBhZ2VVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSgzIC8qIExhc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTI7XG4gICAgICAgICAgICByZXR1cm4gKF9hMiA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJUYWJcIiAvKiBUYWIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgICAgc2VhcmNoRGVib3VuY2UudmFsdWUgPSBzZXRUaW1lb3V0KCgpID0+IGFwaS5jbGVhclNlYXJjaCgpLCAzNTApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYSA9IGFwaS5pdGVtcy52YWx1ZVthcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAoX2IgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgcm9sZTogXCJtZW51XCIsXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICByZWY6IGFwaS5pdGVtc1JlZlxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJNZW51SXRlbXNcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTWVudUl0ZW0gPSAoMCwgaW1wb3J0X3Z1ZTIwLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIk1lbnVJdGVtXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZU1lbnVDb250ZXh0KFwiTWVudUl0ZW1cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLW1lbnUtaXRlbS0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxJdGVtUmVmID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbEl0ZW1SZWYsICRlbDogaW50ZXJuYWxJdGVtUmVmIH0pO1xuICAgIGxldCBhY3RpdmUgPSAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGFwaS5pdGVtcy52YWx1ZVthcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlXS5pZCA9PT0gaWQyIDogZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IGRhdGFSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiAoe1xuICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgdGV4dFZhbHVlOiBcIlwiLFxuICAgICAgZG9tUmVmOiBpbnRlcm5hbEl0ZW1SZWZcbiAgICB9KSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgdGV4dFZhbHVlID0gKF9iID0gKF9hID0gZG9tKGludGVybmFsSXRlbVJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS50ZXh0Q29udGVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgaWYgKHRleHRWYWx1ZSAhPT0gdm9pZCAwKVxuICAgICAgICBkYXRhUmVmLnZhbHVlLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIwLm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVySXRlbShpZDIsIGRhdGFSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIwLm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3Rlckl0ZW0oaWQyKSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5tZW51U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPT09IDAgLyogUG9pbnRlciAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gZG9tKGludGVybmFsSXRlbVJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zY3JvbGxJbnRvVmlldykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHsgYmxvY2s6IFwibmVhcmVzdFwiIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhcGkuY2xvc2VNZW51KCk7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSg1IC8qIE5vdGhpbmcgKi8pO1xuICAgICAgYXBpLmdvVG9JdGVtKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvSXRlbSg0IC8qIFNwZWNpZmljICovLCBpZDIsIDAgLyogUG9pbnRlciAqLyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUxlYXZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9JdGVtKDUgLyogTm90aGluZyAqLyk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBkaXNhYmxlZCB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgYWN0aXZlOiBhY3RpdmUudmFsdWUsIGRpc2FibGVkIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxJdGVtUmVmLFxuICAgICAgICByb2xlOiBcIm1lbnVpdGVtXCIsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHZvaWQgMCA6IC0xLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgIG9uUG9pbnRlcm1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uTW91c2Vtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvblBvaW50ZXJsZWF2ZTogaGFuZGxlTGVhdmUsXG4gICAgICAgIG9uTW91c2VsZWF2ZTogaGFuZGxlTGVhdmVcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiTWVudUl0ZW1cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3BvcG92ZXIvcG9wb3Zlci50c1xudmFyIGltcG9ydF92dWUyMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUG9wb3ZlckNvbnRleHQgPSBTeW1ib2woXCJQb3BvdmVyQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVBvcG92ZXJDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjEuaW5qZWN0KShQb3BvdmVyQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDwke1BvcG92ZXIubmFtZX0gLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlUG9wb3ZlckNvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBQb3BvdmVyR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiUG9wb3Zlckdyb3VwQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVBvcG92ZXJHcm91cENvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIxLmluamVjdCkoUG9wb3Zlckdyb3VwQ29udGV4dCwgbnVsbCk7XG59XG52YXIgUG9wb3ZlclBhbmVsQ29udGV4dCA9IFN5bWJvbChcIlBvcG92ZXJQYW5lbENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3BvdmVyUGFuZWxDb250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyMS5pbmplY3QpKFBvcG92ZXJQYW5lbENvbnRleHQsIG51bGwpO1xufVxudmFyIFBvcG92ZXIgPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIHZhciBfYTtcbiAgICBsZXQgYnV0dG9uSWQgPSBgaGVhZGxlc3N1aS1wb3BvdmVyLWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgcGFuZWxJZCA9IGBoZWFkbGVzc3VpLXBvcG92ZXItcGFuZWwtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsUG9wb3ZlclJlZiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxQb3BvdmVyUmVmLCAkZWw6IGludGVybmFsUG9wb3ZlclJlZiB9KTtcbiAgICBsZXQgcG9wb3ZlclN0YXRlID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgYnV0dG9uID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBiZWZvcmVQYW5lbFNlbnRpbmVsID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBhZnRlclBhbmVsU2VudGluZWwgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IHBhbmVsID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChpbnRlcm5hbFBvcG92ZXJSZWYpKTtcbiAgICBsZXQgaXNQb3J0YWxsZWQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAoIWRvbShidXR0b24pKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIWRvbShwYW5lbCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAobGV0IHJvb3Qgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImJvZHkgPiAqXCIpKSB7XG4gICAgICAgIGlmIChOdW1iZXIocm9vdCA9PSBudWxsID8gdm9pZCAwIDogcm9vdC5jb250YWlucyhkb20oYnV0dG9uKSkpIF4gTnVtYmVyKHJvb3QgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3QuY29udGFpbnMoZG9tKHBhbmVsKSkpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgcG9wb3ZlclN0YXRlLFxuICAgICAgYnV0dG9uSWQsXG4gICAgICBwYW5lbElkLFxuICAgICAgcGFuZWwsXG4gICAgICBidXR0b24sXG4gICAgICBpc1BvcnRhbGxlZCxcbiAgICAgIGJlZm9yZVBhbmVsU2VudGluZWwsXG4gICAgICBhZnRlclBhbmVsU2VudGluZWwsXG4gICAgICB0b2dnbGVQb3BvdmVyKCkge1xuICAgICAgICBwb3BvdmVyU3RhdGUudmFsdWUgPSBtYXRjaChwb3BvdmVyU3RhdGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBPcGVuICovXTogMSAvKiBDbG9zZWQgKi8sXG4gICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogMCAvKiBPcGVuICovXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGNsb3NlUG9wb3ZlcigpIHtcbiAgICAgICAgaWYgKHBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwb3BvdmVyU3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgIH0sXG4gICAgICBjbG9zZShmb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgbGV0IHJlc3RvcmVFbGVtZW50ID0gKCgpID0+IHtcbiAgICAgICAgICBpZiAoIWZvY3VzYWJsZUVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZG9tKGFwaS5idXR0b24pO1xuICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudDtcbiAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudC52YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGRvbShmb2N1c2FibGVFbGVtZW50KTtcbiAgICAgICAgICByZXR1cm4gZG9tKGFwaS5idXR0b24pO1xuICAgICAgICB9KSgpO1xuICAgICAgICByZXN0b3JlRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcmVzdG9yZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjEucHJvdmlkZSkoUG9wb3ZlckNvbnRleHQsIGFwaSk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IG1hdGNoKHBvcG92ZXJTdGF0ZS52YWx1ZSwge1xuICAgICAgWzAgLyogT3BlbiAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgIFsxIC8qIENsb3NlZCAqL106IDEgLyogQ2xvc2VkICovXG4gICAgfSkpKTtcbiAgICBsZXQgcmVnaXN0ZXJCYWcgPSB7XG4gICAgICBidXR0b25JZCxcbiAgICAgIHBhbmVsSWQsXG4gICAgICBjbG9zZSgpIHtcbiAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGdyb3VwQ29udGV4dCA9IHVzZVBvcG92ZXJHcm91cENvbnRleHQoKTtcbiAgICBsZXQgcmVnaXN0ZXJQb3BvdmVyID0gZ3JvdXBDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBncm91cENvbnRleHQucmVnaXN0ZXJQb3BvdmVyO1xuICAgIGZ1bmN0aW9uIGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAoKSB7XG4gICAgICB2YXIgX2EyLCBfYiwgX2MsIF9kO1xuICAgICAgcmV0dXJuIChfZCA9IGdyb3VwQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZ3JvdXBDb250ZXh0LmlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAoKSkgIT0gbnVsbCA/IF9kIDogKChfYTIgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmFjdGl2ZUVsZW1lbnQpICYmICgoKF9iID0gZG9tKGJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSB8fCAoKF9jID0gZG9tKHBhbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmNvbnRhaW5zKG93bmVyRG9jdW1lbnQudmFsdWUuYWN0aXZlRWxlbWVudCkpKTtcbiAgICB9XG4gICAgKDAsIGltcG9ydF92dWUyMS53YXRjaEVmZmVjdCkoKCkgPT4gcmVnaXN0ZXJQb3BvdmVyID09IG51bGwgPyB2b2lkIDAgOiByZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kZWZhdWx0VmlldywgXCJmb2N1c1wiLCAoZXZlbnQpID0+IHtcbiAgICAgIHZhciBfYTIsIF9iO1xuICAgICAgaWYgKHBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCgpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWJ1dHRvbilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFwYW5lbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKChfYTIgPSBkb20oYXBpLmJlZm9yZVBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICgoX2IgPSBkb20oYXBpLmFmdGVyUGFuZWxTZW50aW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtidXR0b24sIHBhbmVsXSwgKGV2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICBpZiAoIWlzRm9jdXNhYmxlRWxlbWVudCh0YXJnZXQsIDEgLyogTG9vc2UgKi8pKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIChfYTIgPSBkb20oYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IHBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBwb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLywgY2xvc2U6IGFwaS5jbG9zZSB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBvdXJQcm9wczogeyByZWY6IGludGVybmFsUG9wb3ZlclJlZiB9LFxuICAgICAgICBzbG90LFxuICAgICAgICBzbG90cyxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIG5hbWU6IFwiUG9wb3ZlclwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3BvdmVyQnV0dG9uID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyQnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVBvcG92ZXJDb250ZXh0KFwiUG9wb3ZlckJ1dHRvblwiKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoYXBpLmJ1dHRvbikpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuYnV0dG9uLCAkZWw6IGFwaS5idXR0b24gfSk7XG4gICAgbGV0IGdyb3VwQ29udGV4dCA9IHVzZVBvcG92ZXJHcm91cENvbnRleHQoKTtcbiAgICBsZXQgY2xvc2VPdGhlcnMgPSBncm91cENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGdyb3VwQ29udGV4dC5jbG9zZU90aGVycztcbiAgICBsZXQgcGFuZWxDb250ZXh0ID0gdXNlUG9wb3ZlclBhbmVsQ29udGV4dCgpO1xuICAgIGxldCBpc1dpdGhpblBhbmVsID0gcGFuZWxDb250ZXh0ID09PSBudWxsID8gZmFsc2UgOiBwYW5lbENvbnRleHQgPT09IGFwaS5wYW5lbElkO1xuICAgIGxldCBlbGVtZW50UmVmID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBzZW50aW5lbElkID0gYGhlYWRsZXNzdWktZm9jdXMtc2VudGluZWwtJHt1c2VJZCgpfWA7XG4gICAgaWYgKCFpc1dpdGhpblBhbmVsKSB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTIxLndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICAgIGFwaS5idXR0b24udmFsdWUgPSBlbGVtZW50UmVmLnZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgZWxlbWVudFJlZik7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKSB7XG4gICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoX2IgPSAoX2EgPSBldmVudC50YXJnZXQpLmNsaWNrKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgICAoX2MgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYy5mb2N1cygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICAgICAgY2xvc2VPdGhlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGNsb3NlT3RoZXJzKGFwaS5idXR0b25JZCk7XG4gICAgICAgICAgICBhcGkudG9nZ2xlUG9wb3ZlcigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICAgIHJldHVybiBjbG9zZU90aGVycyA9PSBudWxsID8gdm9pZCAwIDogY2xvc2VPdGhlcnMoYXBpLmJ1dHRvbklkKTtcbiAgICAgICAgICAgIGlmICghZG9tKGFwaS5idXR0b24pKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAoKChfZCA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfZC5hY3RpdmVFbGVtZW50KSAmJiAhKChfZSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLmNvbnRhaW5zKG93bmVyRG9jdW1lbnQudmFsdWUuYWN0aXZlRWxlbWVudCkpKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiIC8qIFNwYWNlICovKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIGNsb3NlT3RoZXJzID09IG51bGwgPyB2b2lkIDAgOiBjbG9zZU90aGVycyhhcGkuYnV0dG9uSWQpO1xuICAgICAgICBhcGkudG9nZ2xlUG9wb3ZlcigpO1xuICAgICAgICAoX2IgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB2aXNpYmxlID0gYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IHZpc2libGUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IGlzV2l0aGluUGFuZWwgPyB7XG4gICAgICAgIHJlZjogZWxlbWVudFJlZixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfSA6IHtcbiAgICAgICAgcmVmOiBlbGVtZW50UmVmLFxuICAgICAgICBpZDogYXBpLmJ1dHRvbklkLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMuZGlzYWJsZWQgPyB2b2lkIDAgOiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBkb20oYXBpLnBhbmVsKSA/IGFwaS5wYW5lbElkIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25Nb3VzZWRvd246IGhhbmRsZU1vdXNlRG93blxuICAgICAgfTtcbiAgICAgIGxldCBkaXJlY3Rpb24gPSB1c2VUYWJEaXJlY3Rpb24oKTtcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgICBsZXQgZWwgPSBkb20oYXBpLnBhbmVsKTtcbiAgICAgICAgaWYgKCFlbClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMSAvKiBGaXJzdCAqLyksXG4gICAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCA4IC8qIExhc3QgKi8pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgbWljcm9UYXNrKHJ1bik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcnVuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKGltcG9ydF92dWUyMS5GcmFnbWVudCwgW1xuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnByb3BzIH0sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBuYW1lOiBcIlBvcG92ZXJCdXR0b25cIlxuICAgICAgICB9KSxcbiAgICAgICAgdmlzaWJsZSAmJiAhaXNXaXRoaW5QYW5lbCAmJiBhcGkuaXNQb3J0YWxsZWQudmFsdWUgJiYgKDAsIGltcG9ydF92dWUyMS5oKShIaWRkZW4sIHtcbiAgICAgICAgICBpZDogc2VudGluZWxJZCxcbiAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi8sXG4gICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1xuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3Zlck92ZXJsYXkgPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJPdmVybGF5XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVBvcG92ZXJDb250ZXh0KFwiUG9wb3Zlck92ZXJsYXlcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXBvcG92ZXItb3ZlcmxheS0ke3VzZUlkKCl9YDtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIlBvcG92ZXJPdmVybGF5XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcG92ZXJQYW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3ZlclBhbmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIGZvY3VzOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCB7IGZvY3VzIH0gPSBwcm9wcztcbiAgICBsZXQgYXBpID0gdXNlUG9wb3ZlckNvbnRleHQoXCJQb3BvdmVyUGFuZWxcIik7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGFwaS5wYW5lbCkpO1xuICAgIGxldCBiZWZvcmVQYW5lbFNlbnRpbmVsSWQgPSBgaGVhZGxlc3N1aS1mb2N1cy1zZW50aW5lbC1iZWZvcmUtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGFmdGVyUGFuZWxTZW50aW5lbElkID0gYGhlYWRsZXNzdWktZm9jdXMtc2VudGluZWwtYWZ0ZXItJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5wYW5lbCwgJGVsOiBhcGkucGFuZWwgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyMS5wcm92aWRlKShQb3BvdmVyUGFuZWxDb250ZXh0LCBhcGkucGFuZWxJZCk7XG4gICAgKDAsIGltcG9ydF92dWUyMS53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmICghZm9jdXMpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYXBpLnBhbmVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgYWN0aXZlRWxlbWVudCA9IChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50O1xuICAgICAgaWYgKChfYiA9IGRvbShhcGkucGFuZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZvY3VzSW4oZG9tKGFwaS5wYW5lbCksIDEgLyogRmlyc3QgKi8pO1xuICAgIH0pO1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAoIWRvbShhcGkucGFuZWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGlmIChvd25lckRvY3VtZW50LnZhbHVlICYmICEoKF9hID0gZG9tKGFwaS5wYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgICAoX2IgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5mb2N1cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVCbHVyKGV2ZW50KSB7XG4gICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgbGV0IGVsID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghZG9tKGFwaS5wYW5lbCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICgoX2EgPSBkb20oYXBpLnBhbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKGVsKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgaWYgKCgoX2MgPSAoX2IgPSBkb20oYXBpLmJlZm9yZVBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYy5jYWxsKF9iLCBlbCkpIHx8ICgoX2UgPSAoX2QgPSBkb20oYXBpLmFmdGVyUGFuZWxTZW50aW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfZC5jb250YWlucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLmNhbGwoX2QsIGVsKSkpIHtcbiAgICAgICAgZWwuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZGlyZWN0aW9uID0gdXNlVGFiRGlyZWN0aW9uKCk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQmVmb3JlRm9jdXMoKSB7XG4gICAgICBsZXQgZWwgPSBkb20oYXBpLnBhbmVsKTtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBmb2N1c0luKGVsLCA0IC8qIE5leHQgKi8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWljcm9UYXNrKHJ1bik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBydW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQWZ0ZXJGb2N1cygpIHtcbiAgICAgIGxldCBlbCA9IGRvbShhcGkucGFuZWwpO1xuICAgICAgaWYgKCFlbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZnVuY3Rpb24gcnVuKCkge1xuICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBsZXQgYnV0dG9uID0gZG9tKGFwaS5idXR0b24pO1xuICAgICAgICAgICAgbGV0IHBhbmVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbilcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgICAgIGxldCBpZHggPSBlbGVtZW50cy5pbmRleE9mKGJ1dHRvbik7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gZWxlbWVudHMuc2xpY2UoMCwgaWR4ICsgMSk7XG4gICAgICAgICAgICBsZXQgYWZ0ZXIgPSBlbGVtZW50cy5zbGljZShpZHggKyAxKTtcbiAgICAgICAgICAgIGxldCBjb21iaW5lZCA9IFsuLi5hZnRlciwgLi4uYmVmb3JlXTtcbiAgICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgY29tYmluZWQuc2xpY2UoKSkge1xuICAgICAgICAgICAgICBpZiAoKChfYiA9IChfYSA9IGVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnQuaWQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdGFydHNXaXRoKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgXCJoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLVwiKSkgfHwgKHBhbmVsID09IG51bGwgPyB2b2lkIDAgOiBwYW5lbC5jb250YWlucyhlbGVtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgaWR4MiA9IGNvbWJpbmVkLmluZGV4T2YoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGlkeDIgIT09IC0xKVxuICAgICAgICAgICAgICAgICAgY29tYmluZWQuc3BsaWNlKGlkeDIsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb2N1c0luKGNvbWJpbmVkLCAxIC8qIEZpcnN0ICovLCBmYWxzZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCAyIC8qIFByZXZpb3VzICovKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBtaWNyb1Rhc2socnVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJ1bigpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgY2xvc2U6IGFwaS5jbG9zZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkucGFuZWwsXG4gICAgICAgIGlkOiBhcGkucGFuZWxJZCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbkZvY3Vzb3V0OiBmb2N1cyAmJiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gPyBoYW5kbGVCbHVyIDogdm9pZCAwLFxuICAgICAgICB0YWJJbmRleDogLTFcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnByb3BzIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90LFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnNsb3RzLFxuICAgICAgICAgIGRlZmF1bHQ6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIxLmgpKGltcG9ydF92dWUyMS5GcmFnbWVudCwgW1xuICAgICAgICAgICAgICAgIHZpc2libGUudmFsdWUgJiYgYXBpLmlzUG9ydGFsbGVkLnZhbHVlICYmICgwLCBpbXBvcnRfdnVlMjEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgICAgICAgICBpZDogYmVmb3JlUGFuZWxTZW50aW5lbElkLFxuICAgICAgICAgICAgICAgICAgcmVmOiBhcGkuYmVmb3JlUGFuZWxTZW50aW5lbCxcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqLyxcbiAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIG9uRm9jdXM6IGhhbmRsZUJlZm9yZUZvY3VzXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKF9hID0gc2xvdHMuZGVmYXVsdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoc2xvdHMsIC4uLmFyZ3MpLFxuICAgICAgICAgICAgICAgIHZpc2libGUudmFsdWUgJiYgYXBpLmlzUG9ydGFsbGVkLnZhbHVlICYmICgwLCBpbXBvcnRfdnVlMjEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgICAgICAgICBpZDogYWZ0ZXJQYW5lbFNlbnRpbmVsSWQsXG4gICAgICAgICAgICAgICAgICByZWY6IGFwaS5hZnRlclBhbmVsU2VudGluZWwsXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi8sXG4gICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVBZnRlckZvY3VzXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIlBvcG92ZXJQYW5lbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3BvdmVyR3JvdXAgPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJHcm91cFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGdyb3VwUmVmID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBwb3BvdmVycyA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShbXSk7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGdyb3VwUmVmKSk7XG4gICAgZXhwb3NlKHsgZWw6IGdyb3VwUmVmLCAkZWw6IGdyb3VwUmVmIH0pO1xuICAgIGZ1bmN0aW9uIHVucmVnaXN0ZXJQb3BvdmVyKHJlZ2lzdGVyQmFnKSB7XG4gICAgICBsZXQgaWR4ID0gcG9wb3ZlcnMudmFsdWUuaW5kZXhPZihyZWdpc3RlckJhZyk7XG4gICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgcG9wb3ZlcnMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyUG9wb3ZlcihyZWdpc3RlckJhZykge1xuICAgICAgcG9wb3ZlcnMudmFsdWUucHVzaChyZWdpc3RlckJhZyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB1bnJlZ2lzdGVyUG9wb3ZlcihyZWdpc3RlckJhZyk7XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgbGV0IG93bmVyID0gb3duZXJEb2N1bWVudC52YWx1ZTtcbiAgICAgIGlmICghb3duZXIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGxldCBlbGVtZW50ID0gb3duZXIuYWN0aXZlRWxlbWVudDtcbiAgICAgIGlmICgoX2EgPSBkb20oZ3JvdXBSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29udGFpbnMoZWxlbWVudCkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIHBvcG92ZXJzLnZhbHVlLnNvbWUoKGJhZykgPT4ge1xuICAgICAgICB2YXIgX2EyLCBfYjtcbiAgICAgICAgcmV0dXJuICgoX2EyID0gb3duZXIuZ2V0RWxlbWVudEJ5SWQoYmFnLmJ1dHRvbklkKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jb250YWlucyhlbGVtZW50KSkgfHwgKChfYiA9IG93bmVyLmdldEVsZW1lbnRCeUlkKGJhZy5wYW5lbElkKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKGVsZW1lbnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjbG9zZU90aGVycyhidXR0b25JZCkge1xuICAgICAgZm9yIChsZXQgcG9wb3ZlciBvZiBwb3BvdmVycy52YWx1ZSkge1xuICAgICAgICBpZiAocG9wb3Zlci5idXR0b25JZCAhPT0gYnV0dG9uSWQpXG4gICAgICAgICAgcG9wb3Zlci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLnByb3ZpZGUpKFBvcG92ZXJHcm91cENvbnRleHQsIHtcbiAgICAgIHJlZ2lzdGVyUG9wb3ZlcixcbiAgICAgIHVucmVnaXN0ZXJQb3BvdmVyLFxuICAgICAgaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCxcbiAgICAgIGNsb3NlT3RoZXJzXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgcmVmOiBncm91cFJlZiB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyR3JvdXBcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLnRzXG52YXIgaW1wb3J0X3Z1ZTIzID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2NvbXBvbmVudHMvbGFiZWwvbGFiZWwudHNcbnZhciBpbXBvcnRfdnVlMjIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExhYmVsQ29udGV4dCA9IFN5bWJvbChcIkxhYmVsQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZUxhYmVsQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTIyLmluamVjdCkoTGFiZWxDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKFwiWW91IHVzZWQgYSA8TGFiZWwgLz4gY29tcG9uZW50LCBidXQgaXQgaXMgbm90IGluc2lkZSBhIHBhcmVudC5cIik7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VMYWJlbENvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZUxhYmVscyh7XG4gIHNsb3QgPSB7fSxcbiAgbmFtZSA9IFwiTGFiZWxcIixcbiAgcHJvcHMgPSB7fVxufSA9IHt9KSB7XG4gIGxldCBsYWJlbElkcyA9ICgwLCBpbXBvcnRfdnVlMjIucmVmKShbXSk7XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhbHVlKSB7XG4gICAgbGFiZWxJZHMudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBpZHggPSBsYWJlbElkcy52YWx1ZS5pbmRleE9mKHZhbHVlKTtcbiAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICByZXR1cm47XG4gICAgICBsYWJlbElkcy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICB9O1xuICB9XG4gICgwLCBpbXBvcnRfdnVlMjIucHJvdmlkZSkoTGFiZWxDb250ZXh0LCB7IHJlZ2lzdGVyLCBzbG90LCBuYW1lLCBwcm9wcyB9KTtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjIuY29tcHV0ZWQpKCgpID0+IGxhYmVsSWRzLnZhbHVlLmxlbmd0aCA+IDAgPyBsYWJlbElkcy52YWx1ZS5qb2luKFwiIFwiKSA6IHZvaWQgMCk7XG59XG52YXIgTGFiZWwgPSAoMCwgaW1wb3J0X3Z1ZTIyLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxhYmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJsYWJlbFwiIH0sXG4gICAgcGFzc2l2ZTogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAobXlQcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBjb250ZXh0ID0gdXNlTGFiZWxDb250ZXh0KCk7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWxhYmVsLSR7dXNlSWQoKX1gO1xuICAgICgwLCBpbXBvcnRfdnVlMjIub25Nb3VudGVkKSgoKSA9PiAoMCwgaW1wb3J0X3Z1ZTIyLm9uVW5tb3VudGVkKShjb250ZXh0LnJlZ2lzdGVyKGlkMikpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSA9IFwiTGFiZWxcIiwgc2xvdCA9IHt9LCBwcm9wcyA9IHt9IH0gPSBjb250ZXh0O1xuICAgICAgbGV0IHsgcGFzc2l2ZSwgLi4udGhlaXJQcm9wcyB9ID0gbXlQcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiAoMCwgaW1wb3J0X3Z1ZTIyLnVucmVmKSh2YWx1ZSkgfSksIHt9KSxcbiAgICAgICAgaWQ6IGlkMlxuICAgICAgfTtcbiAgICAgIGlmIChwYXNzaXZlKSB7XG4gICAgICAgIGRlbGV0ZSBvdXJQcm9wc1tcIm9uQ2xpY2tcIl07XG4gICAgICAgIGRlbGV0ZSB0aGVpclByb3BzW1wib25DbGlja1wiXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAudHNcbnZhciBSYWRpb0dyb3VwQ29udGV4dCA9IFN5bWJvbChcIlJhZGlvR3JvdXBDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUmFkaW9Hcm91cENvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMy5pbmplY3QpKFJhZGlvR3JvdXBDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPFJhZGlvR3JvdXAgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlUmFkaW9Hcm91cENvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBSYWRpb0dyb3VwID0gKDAsIGltcG9ydF92dWUyMy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJSYWRpb0dyb3VwXCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbW9kZWxWYWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgb3B0aW9uYWw6IHRydWUgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IHJhZGlvR3JvdXBSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIzLnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTIzLnJlZikoW10pO1xuICAgIGxldCBsYWJlbGxlZGJ5ID0gdXNlTGFiZWxzKHsgbmFtZTogXCJSYWRpb0dyb3VwTGFiZWxcIiB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoeyBuYW1lOiBcIlJhZGlvR3JvdXBEZXNjcmlwdGlvblwiIH0pO1xuICAgIGV4cG9zZSh7IGVsOiByYWRpb0dyb3VwUmVmLCAkZWw6IHJhZGlvR3JvdXBSZWYgfSk7XG4gICAgbGV0IHZhbHVlID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICB2YWx1ZSxcbiAgICAgIGRpc2FibGVkOiAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5kaXNhYmxlZCksXG4gICAgICBmaXJzdE9wdGlvbjogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbi5wcm9wc1JlZi5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkpLFxuICAgICAgY29udGFpbnNDaGVja2VkT3B0aW9uOiAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBvcHRpb25zLnZhbHVlLnNvbWUoKG9wdGlvbikgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUyMy50b1Jhdykob3B0aW9uLnByb3BzUmVmLnZhbHVlKSwgKDAsIGltcG9ydF92dWUyMy50b1JhdykocHJvcHMubW9kZWxWYWx1ZSkpKSksXG4gICAgICBjb21wYXJlKGEsIHopIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IHo7XG4gICAgICB9LFxuICAgICAgY2hhbmdlKG5leHRWYWx1ZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KSh2YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG5leHRWYWx1ZSkpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IG5leHRPcHRpb24gPSAoX2EgPSBvcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUyMy50b1Jhdykob3B0aW9uLnByb3BzUmVmLnZhbHVlKSwgKDAsIGltcG9ydF92dWUyMy50b1JhdykobmV4dFZhbHVlKSkpKSA9PSBudWxsID8gdm9pZCAwIDogX2EucHJvcHNSZWY7XG4gICAgICAgIGlmIChuZXh0T3B0aW9uID09IG51bGwgPyB2b2lkIDAgOiBuZXh0T3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG5leHRWYWx1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyT3B0aW9uKGFjdGlvbikge1xuICAgICAgICBvcHRpb25zLnZhbHVlLnB1c2goYWN0aW9uKTtcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IHNvcnRCeURvbU5vZGUob3B0aW9ucy52YWx1ZSwgKG9wdGlvbikgPT4gb3B0aW9uLmVsZW1lbnQpO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJPcHRpb24oaWQzKSB7XG4gICAgICAgIGxldCBpZHggPSBvcHRpb25zLnZhbHVlLmZpbmRJbmRleCgocmFkaW8pID0+IHJhZGlvLmlkID09PSBpZDMpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG9wdGlvbnMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIzLnByb3ZpZGUpKFJhZGlvR3JvdXBDb250ZXh0LCBhcGkpO1xuICAgIHVzZVRyZWVXYWxrZXIoe1xuICAgICAgY29udGFpbmVyOiAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBkb20ocmFkaW9Hcm91cFJlZikpLFxuICAgICAgYWNjZXB0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJyYWRpb1wiKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9LFxuICAgICAgd2Fsayhub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgaWYgKCFyYWRpb0dyb3VwUmVmLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIXJhZGlvR3JvdXBSZWYudmFsdWUuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGFsbCA9IG9wdGlvbnMudmFsdWUuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5wcm9wc1JlZi5kaXNhYmxlZCA9PT0gZmFsc2UpLm1hcCgocmFkaW8pID0+IHJhZGlvLmVsZW1lbnQpO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgYXR0ZW1wdFN1Ym1pdChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93TGVmdFwiIC8qIEFycm93TGVmdCAqLzpcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBmb2N1c0luKGFsbCwgMiAvKiBQcmV2aW91cyAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gMiAvKiBTdWNjZXNzICovKSB7XG4gICAgICAgICAgICAgIGxldCBhY3RpdmVPcHRpb24gPSBvcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmVsZW1lbnQgPT09ICgoX2EgPSBnZXRPd25lckRvY3VtZW50KHJhZGlvR3JvdXBSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKVxuICAgICAgICAgICAgICAgIGFwaS5jaGFuZ2UoYWN0aXZlT3B0aW9uLnByb3BzUmVmLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd1JpZ2h0XCIgLyogQXJyb3dSaWdodCAqLzpcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gZm9jdXNJbihhbGwsIDQgLyogTmV4dCAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gMiAvKiBTdWNjZXNzICovKSB7XG4gICAgICAgICAgICAgIGxldCBhY3RpdmVPcHRpb24gPSBvcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmVsZW1lbnQgPT09ICgoX2EgPSBnZXRPd25lckRvY3VtZW50KG9wdGlvbi5lbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbilcbiAgICAgICAgICAgICAgICBhcGkuY2hhbmdlKGFjdGl2ZU9wdGlvbi5wcm9wc1JlZi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGxldCBhY3RpdmVPcHRpb24gPSBvcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24uZWxlbWVudCA9PT0gKChfYSA9IGdldE93bmVyRG9jdW1lbnQob3B0aW9uLmVsZW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChhY3RpdmVPcHRpb24pXG4gICAgICAgICAgICAgIGFwaS5jaGFuZ2UoYWN0aXZlT3B0aW9uLnByb3BzUmVmLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1yYWRpb2dyb3VwLSR7dXNlSWQoKX1gO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBtb2RlbFZhbHVlLCBkaXNhYmxlZCwgbmFtZSwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogcmFkaW9Hcm91cFJlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJyYWRpb2dyb3VwXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGxhYmVsbGVkYnkudmFsdWUsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBkZXNjcmliZWRieS52YWx1ZSxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjMuaCkoaW1wb3J0X3Z1ZTIzLkZyYWdtZW50LCBbXG4gICAgICAgIC4uLm5hbWUgIT0gbnVsbCAmJiBtb2RlbFZhbHVlICE9IG51bGwgPyBvYmplY3RUb0Zvcm1FbnRyaWVzKHsgW25hbWVdOiBtb2RlbFZhbHVlIH0pLm1hcCgoW25hbWUyLCB2YWx1ZTJdKSA9PiAoMCwgaW1wb3J0X3Z1ZTIzLmgpKEhpZGRlbiwgY29tcGFjdCh7XG4gICAgICAgICAgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLFxuICAgICAgICAgIGtleTogbmFtZTIsXG4gICAgICAgICAgYXM6IFwiaW5wdXRcIixcbiAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lMixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUyXG4gICAgICAgIH0pKSkgOiBbXSxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi50aGVpclByb3BzIH0sXG4gICAgICAgICAgc2xvdDoge30sXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgbmFtZTogXCJSYWRpb0dyb3VwXCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFJhZGlvR3JvdXBPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTIzLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlJhZGlvR3JvdXBPcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgdmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVJhZGlvR3JvdXBDb250ZXh0KFwiUmFkaW9Hcm91cE9wdGlvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktcmFkaW9ncm91cC1vcHRpb24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IGxhYmVsbGVkYnkgPSB1c2VMYWJlbHMoeyBuYW1lOiBcIlJhZGlvR3JvdXBMYWJlbFwiIH0pO1xuICAgIGxldCBkZXNjcmliZWRieSA9IHVzZURlc2NyaXB0aW9ucyh7IG5hbWU6IFwiUmFkaW9Hcm91cERlc2NyaXB0aW9uXCIgfSk7XG4gICAgbGV0IG9wdGlvblJlZiA9ICgwLCBpbXBvcnRfdnVlMjMucmVmKShudWxsKTtcbiAgICBsZXQgcHJvcHNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiAoeyB2YWx1ZTogcHJvcHMudmFsdWUsIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCB9KSk7XG4gICAgbGV0IHN0YXRlID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKDEgLyogRW1wdHkgKi8pO1xuICAgIGV4cG9zZSh7IGVsOiBvcHRpb25SZWYsICRlbDogb3B0aW9uUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjMub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJPcHRpb24oeyBpZDogaWQyLCBlbGVtZW50OiBvcHRpb25SZWYsIHByb3BzUmVmIH0pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIzLm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3Rlck9wdGlvbihpZDIpKTtcbiAgICBsZXQgaXNGaXJzdE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiAoKF9hID0gYXBpLmZpcnN0T3B0aW9uLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQpID09PSBpZDI7XG4gICAgfSk7XG4gICAgbGV0IGRpc2FibGVkID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gYXBpLmRpc2FibGVkLnZhbHVlIHx8IHByb3BzLmRpc2FibGVkKTtcbiAgICBsZXQgY2hlY2tlZCA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKHByb3BzLnZhbHVlKSkpO1xuICAgIGxldCB0YWJJbmRleCA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKGNoZWNrZWQudmFsdWUpXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgaWYgKCFhcGkuY29udGFpbnNDaGVja2VkT3B0aW9uLnZhbHVlICYmIGlzRmlyc3RPcHRpb24udmFsdWUpXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKCFhcGkuY2hhbmdlKHByb3BzLnZhbHVlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgc3RhdGUudmFsdWUgfD0gMiAvKiBBY3RpdmUgKi87XG4gICAgICAoX2EgPSBvcHRpb25SZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIHN0YXRlLnZhbHVlIHw9IDIgLyogQWN0aXZlICovO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVCbHVyKCkge1xuICAgICAgc3RhdGUudmFsdWUgJj0gfjIgLyogQWN0aXZlICovO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImRpc2FibGVkXCJdKTtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBjaGVja2VkOiBjaGVja2VkLnZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQudmFsdWUsXG4gICAgICAgIGFjdGl2ZTogQm9vbGVhbihzdGF0ZS52YWx1ZSAmIDIgLyogQWN0aXZlICovKVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBvcHRpb25SZWYsXG4gICAgICAgIHJvbGU6IFwicmFkaW9cIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogY2hlY2tlZC52YWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBsYWJlbGxlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogZGVzY3JpYmVkYnkudmFsdWUsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZC52YWx1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleC52YWx1ZSxcbiAgICAgICAgb25DbGljazogZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25Gb2N1czogZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgb25CbHVyOiBkaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGhhbmRsZUJsdXJcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJSYWRpb0dyb3VwT3B0aW9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFJhZGlvR3JvdXBMYWJlbCA9IExhYmVsO1xudmFyIFJhZGlvR3JvdXBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uO1xuXG4vLyBzcmMvY29tcG9uZW50cy9zd2l0Y2gvc3dpdGNoLnRzXG52YXIgaW1wb3J0X3Z1ZTI0ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBHcm91cENvbnRleHQgPSBTeW1ib2woXCJHcm91cENvbnRleHRcIik7XG52YXIgU3dpdGNoR3JvdXAgPSAoMCwgaW1wb3J0X3Z1ZTI0LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlN3aXRjaEdyb3VwXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgc3dpdGNoUmVmID0gKDAsIGltcG9ydF92dWUyNC5yZWYpKG51bGwpO1xuICAgIGxldCBsYWJlbGxlZGJ5ID0gdXNlTGFiZWxzKHtcbiAgICAgIG5hbWU6IFwiU3dpdGNoTGFiZWxcIixcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG9uQ2xpY2soKSB7XG4gICAgICAgICAgaWYgKCFzd2l0Y2hSZWYudmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgc3dpdGNoUmVmLnZhbHVlLmNsaWNrKCk7XG4gICAgICAgICAgc3dpdGNoUmVmLnZhbHVlLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBkZXNjcmliZWRieSA9IHVzZURlc2NyaXB0aW9ucyh7IG5hbWU6IFwiU3dpdGNoRGVzY3JpcHRpb25cIiB9KTtcbiAgICBsZXQgYXBpID0geyBzd2l0Y2hSZWYsIGxhYmVsbGVkYnksIGRlc2NyaWJlZGJ5IH07XG4gICAgKDAsIGltcG9ydF92dWUyNC5wcm92aWRlKShHcm91cENvbnRleHQsIGFwaSk7XG4gICAgcmV0dXJuICgpID0+IHJlbmRlcih7IHRoZWlyUHJvcHM6IHByb3BzLCBvdXJQcm9wczoge30sIHNsb3Q6IHt9LCBzbG90cywgYXR0cnMsIG5hbWU6IFwiU3dpdGNoR3JvdXBcIiB9KTtcbiAgfVxufSk7XG52YXIgU3dpdGNoID0gKDAsIGltcG9ydF92dWUyNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJTd2l0Y2hcIixcbiAgZW1pdHM6IHsgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiOiAoX3ZhbHVlKSA9PiB0cnVlIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB2YWx1ZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSAoMCwgaW1wb3J0X3Z1ZTI0LmluamVjdCkoR3JvdXBDb250ZXh0LCBudWxsKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktc3dpdGNoLSR7dXNlSWQoKX1gO1xuICAgIGZ1bmN0aW9uIHRvZ2dsZSgpIHtcbiAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCAhcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgfVxuICAgIGxldCBpbnRlcm5hbFN3aXRjaFJlZiA9ICgwLCBpbXBvcnRfdnVlMjQucmVmKShudWxsKTtcbiAgICBsZXQgc3dpdGNoUmVmID0gYXBpID09PSBudWxsID8gaW50ZXJuYWxTd2l0Y2hSZWYgOiBhcGkuc3dpdGNoUmVmO1xuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUyNC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgc3dpdGNoUmVmKTtcbiAgICBleHBvc2UoeyBlbDogc3dpdGNoUmVmLCAkZWw6IHN3aXRjaFJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRvZ2dsZSgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCIgXCIgLyogU3BhY2UgKi8pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdG9nZ2xlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIC8qIEVudGVyICovKSB7XG4gICAgICAgIGF0dGVtcHRTdWJtaXQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVByZXNzKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSwgdmFsdWUsIG1vZGVsVmFsdWUsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGNoZWNrZWQ6IG1vZGVsVmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBzd2l0Y2hSZWYsXG4gICAgICAgIHJvbGU6IFwic3dpdGNoXCIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBtb2RlbFZhbHVlLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcGkgPT0gbnVsbCA/IHZvaWQgMCA6IGFwaS5sYWJlbGxlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXBpID09IG51bGwgPyB2b2lkIDAgOiBhcGkuZGVzY3JpYmVkYnkudmFsdWUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgb25LZXlwcmVzczogaGFuZGxlS2V5UHJlc3NcbiAgICAgIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyNC5oKShpbXBvcnRfdnVlMjQuRnJhZ21lbnQsIFtcbiAgICAgICAgbmFtZSAhPSBudWxsICYmIG1vZGVsVmFsdWUgIT0gbnVsbCA/ICgwLCBpbXBvcnRfdnVlMjQuaCkoSGlkZGVuLCBjb21wYWN0KHtcbiAgICAgICAgICBmZWF0dXJlczogNCAvKiBIaWRkZW4gKi8sXG4gICAgICAgICAgYXM6IFwiaW5wdXRcIixcbiAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIGNoZWNrZWQ6IG1vZGVsVmFsdWUsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KSkgOiBudWxsLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnRoZWlyUHJvcHMgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiU3dpdGNoXCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFN3aXRjaExhYmVsID0gTGFiZWw7XG52YXIgU3dpdGNoRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbjtcblxuLy8gc3JjL2NvbXBvbmVudHMvdGFicy90YWJzLnRzXG52YXIgaW1wb3J0X3Z1ZTI2ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2ludGVybmFsL2ZvY3VzLXNlbnRpbmVsLnRzXG52YXIgaW1wb3J0X3Z1ZTI1ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBGb2N1c1NlbnRpbmVsID0gKDAsIGltcG9ydF92dWUyNS5kZWZpbmVDb21wb25lbnQpKHtcbiAgcHJvcHM6IHtcbiAgICBvbkZvY3VzOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfVxuICB9LFxuICBzZXR1cChwcm9wcykge1xuICAgIGxldCBlbmFibGVkID0gKDAsIGltcG9ydF92dWUyNS5yZWYpKHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjUuaCkoSGlkZGVuLCB7XG4gICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi8sXG4gICAgICAgIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGxldCBmcmFtZTtcbiAgICAgICAgICBsZXQgdHJpZXMgPSA1MDtcbiAgICAgICAgICBmdW5jdGlvbiBmb3J3YXJkRm9jdXMoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAodHJpZXMtLSA8PSAwKSB7XG4gICAgICAgICAgICAgIGlmIChmcmFtZSlcbiAgICAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoX2EgPSBwcm9wcy5vbkZvY3VzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChwcm9wcykpIHtcbiAgICAgICAgICAgICAgZW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZvcndhcmRGb2N1cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZvcndhcmRGb2N1cyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy90YWJzL3RhYnMudHNcbnZhciBUYWJzQ29udGV4dCA9IFN5bWJvbChcIlRhYnNDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlVGFic0NvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyNi5pbmplY3QpKFRhYnNDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPFRhYkdyb3VwIC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZVRhYnNDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgVGFiR3JvdXAgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYkdyb3VwXCIsXG4gIGVtaXRzOiB7XG4gICAgY2hhbmdlOiAoX2luZGV4KSA9PiB0cnVlXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgc2VsZWN0ZWRJbmRleDogeyB0eXBlOiBbTnVtYmVyXSwgZGVmYXVsdDogbnVsbCB9LFxuICAgIGRlZmF1bHRJbmRleDogeyB0eXBlOiBbTnVtYmVyXSwgZGVmYXVsdDogMCB9LFxuICAgIHZlcnRpY2FsOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtYW51YWw6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZW1pdCB9KSB7XG4gICAgbGV0IHNlbGVjdGVkSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTI2LnJlZikobnVsbCk7XG4gICAgbGV0IHRhYnMgPSAoMCwgaW1wb3J0X3Z1ZTI2LnJlZikoW10pO1xuICAgIGxldCBwYW5lbHMgPSAoMCwgaW1wb3J0X3Z1ZTI2LnJlZikoW10pO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgb3JpZW50YXRpb246ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IHByb3BzLnZlcnRpY2FsID8gXCJ2ZXJ0aWNhbFwiIDogXCJob3Jpem9udGFsXCIpLFxuICAgICAgYWN0aXZhdGlvbjogKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gcHJvcHMubWFudWFsID8gXCJtYW51YWxcIiA6IFwiYXV0b1wiKSxcbiAgICAgIHRhYnMsXG4gICAgICBwYW5lbHMsXG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4LnZhbHVlID09PSBpbmRleClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSBpbmRleDtcbiAgICAgICAgZW1pdChcImNoYW5nZVwiLCBpbmRleCk7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJUYWIodGFiKSB7XG4gICAgICAgIGlmICghdGFicy52YWx1ZS5pbmNsdWRlcyh0YWIpKVxuICAgICAgICAgIHRhYnMudmFsdWUucHVzaCh0YWIpO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJUYWIodGFiKSB7XG4gICAgICAgIGxldCBpZHggPSB0YWJzLnZhbHVlLmluZGV4T2YodGFiKTtcbiAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgdGFicy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH0sXG4gICAgICByZWdpc3RlclBhbmVsKHBhbmVsKSB7XG4gICAgICAgIGlmICghcGFuZWxzLnZhbHVlLmluY2x1ZGVzKHBhbmVsKSlcbiAgICAgICAgICBwYW5lbHMudmFsdWUucHVzaChwYW5lbCk7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3RlclBhbmVsKHBhbmVsKSB7XG4gICAgICAgIGxldCBpZHggPSBwYW5lbHMudmFsdWUuaW5kZXhPZihwYW5lbCk7XG4gICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgIHBhbmVscy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjYucHJvdmlkZSkoVGFic0NvbnRleHQsIGFwaSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKGFwaS50YWJzLnZhbHVlLmxlbmd0aCA8PSAwKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAocHJvcHMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCAmJiBzZWxlY3RlZEluZGV4LnZhbHVlICE9PSBudWxsKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgdGFiczIgPSBhcGkudGFicy52YWx1ZS5tYXAoKHRhYikgPT4gZG9tKHRhYikpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGxldCBmb2N1c2FibGVUYWJzID0gdGFiczIuZmlsdGVyKCh0YWIpID0+ICF0YWIuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikpO1xuICAgICAgbGV0IGluZGV4VG9TZXQgPSAoX2EgPSBwcm9wcy5zZWxlY3RlZEluZGV4KSAhPSBudWxsID8gX2EgOiBwcm9wcy5kZWZhdWx0SW5kZXg7XG4gICAgICBpZiAoaW5kZXhUb1NldCA8IDApIHtcbiAgICAgICAgc2VsZWN0ZWRJbmRleC52YWx1ZSA9IHRhYnMyLmluZGV4T2YoZm9jdXNhYmxlVGFic1swXSk7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4VG9TZXQgPiBhcGkudGFicy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgc2VsZWN0ZWRJbmRleC52YWx1ZSA9IHRhYnMyLmluZGV4T2YoZm9jdXNhYmxlVGFic1tmb2N1c2FibGVUYWJzLmxlbmd0aCAtIDFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBiZWZvcmUgPSB0YWJzMi5zbGljZSgwLCBpbmRleFRvU2V0KTtcbiAgICAgICAgbGV0IGFmdGVyID0gdGFiczIuc2xpY2UoaW5kZXhUb1NldCk7XG4gICAgICAgIGxldCBuZXh0ID0gWy4uLmFmdGVyLCAuLi5iZWZvcmVdLmZpbmQoKHRhYikgPT4gZm9jdXNhYmxlVGFicy5pbmNsdWRlcyh0YWIpKTtcbiAgICAgICAgaWYgKCFuZXh0KVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2VsZWN0ZWRJbmRleC52YWx1ZSA9IHRhYnMyLmluZGV4T2YobmV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZEluZGV4OiBzZWxlY3RlZEluZGV4LnZhbHVlIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyNi5oKShpbXBvcnRfdnVlMjYuRnJhZ21lbnQsIFtcbiAgICAgICAgdGFicy52YWx1ZS5sZW5ndGggPD0gMCAmJiAoMCwgaW1wb3J0X3Z1ZTI2LmgpKEZvY3VzU2VudGluZWwsIHtcbiAgICAgICAgICBvbkZvY3VzOiAoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCB0YWIgb2YgdGFicy52YWx1ZSkge1xuICAgICAgICAgICAgICBsZXQgZWwgPSBkb20odGFiKTtcbiAgICAgICAgICAgICAgaWYgKChlbCA9PSBudWxsID8gdm9pZCAwIDogZWwudGFiSW5kZXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgdGhlaXJQcm9wczoge1xuICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAuLi5vbWl0KHByb3BzLCBbXCJzZWxlY3RlZEluZGV4XCIsIFwiZGVmYXVsdEluZGV4XCIsIFwibWFudWFsXCIsIFwidmVydGljYWxcIiwgXCJvbkNoYW5nZVwiXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIG5hbWU6IFwiVGFiR3JvdXBcIlxuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiTGlzdCA9ICgwLCBpbXBvcnRfdnVlMjYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiVGFiTGlzdFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VUYWJzQ29udGV4dChcIlRhYkxpc3RcIik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZEluZGV4OiBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByb2xlOiBcInRhYmxpc3RcIixcbiAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IGFwaS5vcmllbnRhdGlvbi52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJUYWJMaXN0XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFRhYiA9ICgwLCBpbXBvcnRfdnVlMjYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiVGFiXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVRhYnNDb250ZXh0KFwiVGFiXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS10YWJzLXRhYi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxUYWJSZWYgPSAoMCwgaW1wb3J0X3Z1ZTI2LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsVGFiUmVmLCAkZWw6IGludGVybmFsVGFiUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjYub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJUYWIoaW50ZXJuYWxUYWJSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3RlclRhYihpbnRlcm5hbFRhYlJlZikpO1xuICAgIGxldCBteUluZGV4ID0gKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gYXBpLnRhYnMudmFsdWUuaW5kZXhPZihpbnRlcm5hbFRhYlJlZikpO1xuICAgIGxldCBzZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IG15SW5kZXgudmFsdWUgPT09IGFwaS5zZWxlY3RlZEluZGV4LnZhbHVlKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBsZXQgbGlzdCA9IGFwaS50YWJzLnZhbHVlLm1hcCgodGFiKSA9PiBkb20odGFiKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCIgXCIgLyogU3BhY2UgKi8gfHwgZXZlbnQua2V5ID09PSBcIkVudGVyXCIgLyogRW50ZXIgKi8pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGFwaS5zZXRTZWxlY3RlZEluZGV4KG15SW5kZXgudmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCAxIC8qIEZpcnN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVuZFwiIC8qIEVuZCAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VEb3duXCIgLyogUGFnZURvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCA4IC8qIExhc3QgKi8pO1xuICAgICAgfVxuICAgICAgaWYgKG1hdGNoKGFwaS5vcmllbnRhdGlvbi52YWx1ZSwge1xuICAgICAgICB2ZXJ0aWNhbCgpIHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovKVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgMiAvKiBQcmV2aW91cyAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovKVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgNCAvKiBOZXh0ICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9LFxuICAgICAgICBob3Jpem9udGFsKCkge1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dMZWZ0XCIgLyogQXJyb3dMZWZ0ICovKVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgMiAvKiBQcmV2aW91cyAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiIC8qIEFycm93UmlnaHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCA0IC8qIE5leHQgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pKSB7XG4gICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIChfYSA9IGRvbShpbnRlcm5hbFRhYlJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb24oKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIChfYSA9IGRvbShpbnRlcm5hbFRhYlJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgYXBpLnNldFNlbGVjdGVkSW5kZXgobXlJbmRleC52YWx1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBpbnRlcm5hbFRhYlJlZik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkLnZhbHVlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogaW50ZXJuYWxUYWJSZWYsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25Gb2N1czogYXBpLmFjdGl2YXRpb24udmFsdWUgPT09IFwibWFudWFsXCIgPyBoYW5kbGVGb2N1cyA6IGhhbmRsZVNlbGVjdGlvbixcbiAgICAgICAgb25Nb3VzZWRvd246IGhhbmRsZU1vdXNlRG93bixcbiAgICAgICAgb25DbGljazogaGFuZGxlU2VsZWN0aW9uLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9iID0gKF9hID0gYXBpLnBhbmVscy52YWx1ZVtteUluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZC52YWx1ZSxcbiAgICAgICAgdGFiSW5kZXg6IHNlbGVjdGVkLnZhbHVlID8gMCA6IC0xLFxuICAgICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgPyB0cnVlIDogdm9pZCAwXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlRhYlwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBUYWJQYW5lbHMgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYlBhbmVsc1wiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VUYWJzQ29udGV4dChcIlRhYlBhbmVsc1wiKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkSW5kZXg6IGFwaS5zZWxlY3RlZEluZGV4LnZhbHVlIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlRhYlBhbmVsc1wiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBUYWJQYW5lbCA9ICgwLCBpbXBvcnRfdnVlMjYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiVGFiUGFuZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VUYWJzQ29udGV4dChcIlRhYlBhbmVsXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS10YWJzLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbFBhbmVsUmVmID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbFBhbmVsUmVmLCAkZWw6IGludGVybmFsUGFuZWxSZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3RlclBhbmVsKGludGVybmFsUGFuZWxSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3RlclBhbmVsKGludGVybmFsUGFuZWxSZWYpKTtcbiAgICBsZXQgbXlJbmRleCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IGFwaS5wYW5lbHMudmFsdWUuaW5kZXhPZihpbnRlcm5hbFBhbmVsUmVmKSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gbXlJbmRleC52YWx1ZSA9PT0gYXBpLnNlbGVjdGVkSW5kZXgudmFsdWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZC52YWx1ZSB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGludGVybmFsUGFuZWxSZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJvbGU6IFwidGFicGFuZWxcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9iID0gKF9hID0gYXBpLnRhYnMudmFsdWVbbXlJbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLFxuICAgICAgICB0YWJJbmRleDogc2VsZWN0ZWQudmFsdWUgPyAwIDogLTFcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAyIC8qIFN0YXRpYyAqLyB8IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8sXG4gICAgICAgIHZpc2libGU6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIlRhYlBhbmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLnRzXG52YXIgaW1wb3J0X3Z1ZTI3ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL3V0aWxzL29uY2UudHNcbmZ1bmN0aW9uIG9uY2UoY2IpIHtcbiAgbGV0IHN0YXRlID0geyBjYWxsZWQ6IGZhbHNlIH07XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIGlmIChzdGF0ZS5jYWxsZWQpXG4gICAgICByZXR1cm47XG4gICAgc3RhdGUuY2FsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gY2IoLi4uYXJncyk7XG4gIH07XG59XG5cbi8vIHNyYy91dGlscy9kaXNwb3NhYmxlcy50c1xuZnVuY3Rpb24gZGlzcG9zYWJsZXMoKSB7XG4gIGxldCBkaXNwb3NhYmxlczIgPSBbXTtcbiAgbGV0IHF1ZXVlID0gW107XG4gIGxldCBhcGkgPSB7XG4gICAgZW5xdWV1ZShmbikge1xuICAgICAgcXVldWUucHVzaChmbik7XG4gICAgfSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoLi4uYXJncykge1xuICAgICAgbGV0IHJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSguLi5hcmdzKTtcbiAgICAgIGFwaS5hZGQoKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKSk7XG4gICAgfSxcbiAgICBuZXh0RnJhbWUoLi4uYXJncykge1xuICAgICAgYXBpLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGFwaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldFRpbWVvdXQoLi4uYXJncykge1xuICAgICAgbGV0IHRpbWVyID0gc2V0VGltZW91dCguLi5hcmdzKTtcbiAgICAgIGFwaS5hZGQoKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKSk7XG4gICAgfSxcbiAgICBhZGQoY2IpIHtcbiAgICAgIGRpc3Bvc2FibGVzMi5wdXNoKGNiKTtcbiAgICB9LFxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICBmb3IgKGxldCBkaXNwb3NlIG9mIGRpc3Bvc2FibGVzMi5zcGxpY2UoMCkpIHtcbiAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgd29ya1F1ZXVlKCkge1xuICAgICAgZm9yIChsZXQgaGFuZGxlIG9mIHF1ZXVlLnNwbGljZSgwKSkge1xuICAgICAgICBhd2FpdCBoYW5kbGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBhcGk7XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL3RyYW5zaXRpb25zL3V0aWxzL3RyYW5zaXRpb24udHNcbmZ1bmN0aW9uIGFkZENsYXNzZXMobm9kZSwgLi4uY2xhc3Nlcykge1xuICBub2RlICYmIGNsYXNzZXMubGVuZ3RoID4gMCAmJiBub2RlLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcyk7XG59XG5mdW5jdGlvbiByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLmNsYXNzZXMpIHtcbiAgbm9kZSAmJiBjbGFzc2VzLmxlbmd0aCA+IDAgJiYgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMpO1xufVxuZnVuY3Rpb24gd2FpdEZvclRyYW5zaXRpb24obm9kZSwgZG9uZSkge1xuICBsZXQgZCA9IGRpc3Bvc2FibGVzKCk7XG4gIGlmICghbm9kZSlcbiAgICByZXR1cm4gZC5kaXNwb3NlO1xuICBsZXQgeyB0cmFuc2l0aW9uRHVyYXRpb24sIHRyYW5zaXRpb25EZWxheSB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgbGV0IFtkdXJhdGlvbk1zLCBkZWxheXNNc10gPSBbdHJhbnNpdGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9uRGVsYXldLm1hcCgodmFsdWUpID0+IHtcbiAgICBsZXQgW3Jlc29sdmVkVmFsdWUgPSAwXSA9IHZhbHVlLnNwbGl0KFwiLFwiKS5maWx0ZXIoQm9vbGVhbikubWFwKCh2KSA9PiB2LmluY2x1ZGVzKFwibXNcIikgPyBwYXJzZUZsb2F0KHYpIDogcGFyc2VGbG9hdCh2KSAqIDFlMykuc29ydCgoYSwgeikgPT4geiAtIGEpO1xuICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICB9KTtcbiAgaWYgKGR1cmF0aW9uTXMgIT09IDApIHtcbiAgICBkLnNldFRpbWVvdXQoKCkgPT4gZG9uZShcImZpbmlzaGVkXCIgLyogRmluaXNoZWQgKi8pLCBkdXJhdGlvbk1zICsgZGVsYXlzTXMpO1xuICB9IGVsc2Uge1xuICAgIGRvbmUoXCJmaW5pc2hlZFwiIC8qIEZpbmlzaGVkICovKTtcbiAgfVxuICBkLmFkZCgoKSA9PiBkb25lKFwiY2FuY2VsbGVkXCIgLyogQ2FuY2VsbGVkICovKSk7XG4gIHJldHVybiBkLmRpc3Bvc2U7XG59XG5mdW5jdGlvbiB0cmFuc2l0aW9uKG5vZGUsIGJhc2UsIGZyb20sIHRvLCBlbnRlcmVkLCBkb25lKSB7XG4gIGxldCBkID0gZGlzcG9zYWJsZXMoKTtcbiAgbGV0IF9kb25lID0gZG9uZSAhPT0gdm9pZCAwID8gb25jZShkb25lKSA6ICgpID0+IHtcbiAgfTtcbiAgcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi5lbnRlcmVkKTtcbiAgYWRkQ2xhc3Nlcyhub2RlLCAuLi5iYXNlLCAuLi5mcm9tKTtcbiAgZC5uZXh0RnJhbWUoKCkgPT4ge1xuICAgIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uZnJvbSk7XG4gICAgYWRkQ2xhc3Nlcyhub2RlLCAuLi50byk7XG4gICAgZC5hZGQod2FpdEZvclRyYW5zaXRpb24obm9kZSwgKHJlYXNvbikgPT4ge1xuICAgICAgcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi50bywgLi4uYmFzZSk7XG4gICAgICBhZGRDbGFzc2VzKG5vZGUsIC4uLmVudGVyZWQpO1xuICAgICAgcmV0dXJuIF9kb25lKHJlYXNvbik7XG4gICAgfSkpO1xuICB9KTtcbiAgZC5hZGQoKCkgPT4gcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi5iYXNlLCAuLi5mcm9tLCAuLi50bywgLi4uZW50ZXJlZCkpO1xuICBkLmFkZCgoKSA9PiBfZG9uZShcImNhbmNlbGxlZFwiIC8qIENhbmNlbGxlZCAqLykpO1xuICByZXR1cm4gZC5kaXNwb3NlO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLnRzXG5mdW5jdGlvbiBzcGxpdENsYXNzZXMoY2xhc3NlcyA9IFwiXCIpIHtcbiAgcmV0dXJuIGNsYXNzZXMuc3BsaXQoXCIgXCIpLmZpbHRlcigoY2xhc3NOYW1lKSA9PiBjbGFzc05hbWUudHJpbSgpLmxlbmd0aCA+IDEpO1xufVxudmFyIFRyYW5zaXRpb25Db250ZXh0ID0gU3ltYm9sKFwiVHJhbnNpdGlvbkNvbnRleHRcIik7XG5mdW5jdGlvbiBoYXNUcmFuc2l0aW9uQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjcuaW5qZWN0KShUcmFuc2l0aW9uQ29udGV4dCwgbnVsbCkgIT09IG51bGw7XG59XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTI3LmluamVjdCkoVHJhbnNpdGlvbkNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgPFRyYW5zaXRpb25DaGlsZCAvPiBpcyB1c2VkIGJ1dCBpdCBpcyBtaXNzaW5nIGEgcGFyZW50IDxUcmFuc2l0aW9uUm9vdCAvPi5cIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VQYXJlbnROZXN0aW5nKCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjcuaW5qZWN0KShOZXN0aW5nQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSA8VHJhbnNpdGlvbkNoaWxkIC8+IGlzIHVzZWQgYnV0IGl0IGlzIG1pc3NpbmcgYSBwYXJlbnQgPFRyYW5zaXRpb25Sb290IC8+LlwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBOZXN0aW5nQ29udGV4dCA9IFN5bWJvbChcIk5lc3RpbmdDb250ZXh0XCIpO1xuZnVuY3Rpb24gaGFzQ2hpbGRyZW4oYmFnKSB7XG4gIGlmIChcImNoaWxkcmVuXCIgaW4gYmFnKVxuICAgIHJldHVybiBoYXNDaGlsZHJlbihiYWcuY2hpbGRyZW4pO1xuICByZXR1cm4gYmFnLnZhbHVlLmZpbHRlcigoeyBzdGF0ZSB9KSA9PiBzdGF0ZSA9PT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIHVzZU5lc3RpbmcoZG9uZSkge1xuICBsZXQgdHJhbnNpdGlvbmFibGVDaGlsZHJlbiA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShbXSk7XG4gIGxldCBtb3VudGVkID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKGZhbHNlKTtcbiAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IG1vdW50ZWQudmFsdWUgPSB0cnVlKTtcbiAgKDAsIGltcG9ydF92dWUyNy5vblVubW91bnRlZCkoKCkgPT4gbW91bnRlZC52YWx1ZSA9IGZhbHNlKTtcbiAgZnVuY3Rpb24gdW5yZWdpc3RlcihjaGlsZElkLCBzdHJhdGVneSA9IDEgLyogSGlkZGVuICovKSB7XG4gICAgbGV0IGlkeCA9IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWUuZmluZEluZGV4KCh7IGlkOiBpZDIgfSkgPT4gaWQyID09PSBjaGlsZElkKTtcbiAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgIHJldHVybjtcbiAgICBtYXRjaChzdHJhdGVneSwge1xuICAgICAgWzAgLyogVW5tb3VudCAqL10oKSB7XG4gICAgICAgIHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9LFxuICAgICAgWzEgLyogSGlkZGVuICovXSgpIHtcbiAgICAgICAgdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZVtpZHhdLnN0YXRlID0gXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi87XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFoYXNDaGlsZHJlbih0cmFuc2l0aW9uYWJsZUNoaWxkcmVuKSAmJiBtb3VudGVkLnZhbHVlKSB7XG4gICAgICBkb25lID09IG51bGwgPyB2b2lkIDAgOiBkb25lKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKGNoaWxkSWQpIHtcbiAgICBsZXQgY2hpbGQgPSB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLmZpbmQoKHsgaWQ6IGlkMiB9KSA9PiBpZDIgPT09IGNoaWxkSWQpO1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWUucHVzaCh7IGlkOiBjaGlsZElkLCBzdGF0ZTogXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyB9KTtcbiAgICB9IGVsc2UgaWYgKGNoaWxkLnN0YXRlICE9PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovKSB7XG4gICAgICBjaGlsZC5zdGF0ZSA9IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi87XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB1bnJlZ2lzdGVyKGNoaWxkSWQsIDAgLyogVW5tb3VudCAqLyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjaGlsZHJlbjogdHJhbnNpdGlvbmFibGVDaGlsZHJlbixcbiAgICByZWdpc3RlcixcbiAgICB1bnJlZ2lzdGVyXG4gIH07XG59XG52YXIgVHJhbnNpdGlvbkNoaWxkUmVuZGVyRmVhdHVyZXMgPSAxIC8qIFJlbmRlclN0cmF0ZWd5ICovO1xudmFyIFRyYW5zaXRpb25DaGlsZCA9ICgwLCBpbXBvcnRfdnVlMjcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHNob3c6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBudWxsIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBhcHBlYXI6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGVudGVyOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJGcm9tOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJUbzogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyZWQ6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfVxuICB9LFxuICBlbWl0czoge1xuICAgIGJlZm9yZUVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyRW50ZXI6ICgpID0+IHRydWUsXG4gICAgYmVmb3JlTGVhdmU6ICgpID0+IHRydWUsXG4gICAgYWZ0ZXJMZWF2ZTogKCkgPT4gdHJ1ZVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgaWYgKCFoYXNUcmFuc2l0aW9uQ29udGV4dCgpICYmIGhhc09wZW5DbG9zZWQoKSkge1xuICAgICAgcmV0dXJuICgpID0+ICgwLCBpbXBvcnRfdnVlMjcuaCkoVHJhbnNpdGlvblJvb3QsIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIG9uQmVmb3JlRW50ZXI6ICgpID0+IGVtaXQoXCJiZWZvcmVFbnRlclwiKSxcbiAgICAgICAgb25BZnRlckVudGVyOiAoKSA9PiBlbWl0KFwiYWZ0ZXJFbnRlclwiKSxcbiAgICAgICAgb25CZWZvcmVMZWF2ZTogKCkgPT4gZW1pdChcImJlZm9yZUxlYXZlXCIpLFxuICAgICAgICBvbkFmdGVyTGVhdmU6ICgpID0+IGVtaXQoXCJhZnRlckxlYXZlXCIpXG4gICAgICB9LCBzbG90cyk7XG4gICAgfVxuICAgIGxldCBjb250YWluZXIgPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikobnVsbCk7XG4gICAgbGV0IHN0YXRlID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pO1xuICAgIGxldCBzdHJhdGVneSA9ICgwLCBpbXBvcnRfdnVlMjcuY29tcHV0ZWQpKCgpID0+IHByb3BzLnVubW91bnQgPyAwIC8qIFVubW91bnQgKi8gOiAxIC8qIEhpZGRlbiAqLyk7XG4gICAgZXhwb3NlKHsgZWw6IGNvbnRhaW5lciwgJGVsOiBjb250YWluZXIgfSk7XG4gICAgbGV0IHsgc2hvdywgYXBwZWFyIH0gPSB1c2VUcmFuc2l0aW9uQ29udGV4dCgpO1xuICAgIGxldCB7IHJlZ2lzdGVyLCB1bnJlZ2lzdGVyIH0gPSB1c2VQYXJlbnROZXN0aW5nKCk7XG4gICAgbGV0IGluaXRpYWwgPSB7IHZhbHVlOiB0cnVlIH07XG4gICAgbGV0IGlkMiA9IHVzZUlkKCk7XG4gICAgbGV0IGlzVHJhbnNpdGlvbmluZyA9IHsgdmFsdWU6IGZhbHNlIH07XG4gICAgbGV0IG5lc3RpbmcgPSB1c2VOZXN0aW5nKCgpID0+IHtcbiAgICAgIGlmICghaXNUcmFuc2l0aW9uaW5nLnZhbHVlKSB7XG4gICAgICAgIHN0YXRlLnZhbHVlID0gXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi87XG4gICAgICAgIHVucmVnaXN0ZXIoaWQyKTtcbiAgICAgICAgZW1pdChcImFmdGVyTGVhdmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIGxldCB1bnJlZ2lzdGVyMiA9IHJlZ2lzdGVyKGlkMik7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uVW5tb3VudGVkKSh1bnJlZ2lzdGVyMik7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKHN0cmF0ZWd5LnZhbHVlICE9PSAxIC8qIEhpZGRlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFpZDIpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChzaG93ICYmIHN0YXRlLnZhbHVlICE9PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovKSB7XG4gICAgICAgIHN0YXRlLnZhbHVlID0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWF0Y2goc3RhdGUudmFsdWUsIHtcbiAgICAgICAgW1wiaGlkZGVuXCIgLyogSGlkZGVuICovXTogKCkgPT4gdW5yZWdpc3RlcihpZDIpLFxuICAgICAgICBbXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqL106ICgpID0+IHJlZ2lzdGVyKGlkMilcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGxldCBlbnRlckNsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMuZW50ZXIpO1xuICAgIGxldCBlbnRlckZyb21DbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmVudGVyRnJvbSk7XG4gICAgbGV0IGVudGVyVG9DbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmVudGVyVG8pO1xuICAgIGxldCBlbnRlcmVkQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlcmVkKTtcbiAgICBsZXQgbGVhdmVDbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmxlYXZlKTtcbiAgICBsZXQgbGVhdmVGcm9tQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5sZWF2ZUZyb20pO1xuICAgIGxldCBsZWF2ZVRvQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5sZWF2ZVRvKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUyNy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUudmFsdWUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pIHtcbiAgICAgICAgICBsZXQgZG9tRWxlbWVudCA9IGRvbShjb250YWluZXIpO1xuICAgICAgICAgIGxldCBpc0VtcHR5RE9NTm9kZSA9IGRvbUVsZW1lbnQgaW5zdGFuY2VvZiBDb21tZW50ICYmIGRvbUVsZW1lbnQuZGF0YSA9PT0gXCJcIjtcbiAgICAgICAgICBpZiAoaXNFbXB0eURPTU5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRpZCB5b3UgZm9yZ2V0IHRvIHBhc3N0aHJvdWdoIHRoZSBgcmVmYCB0byB0aGUgYWN0dWFsIERPTSBub2RlP1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGV4ZWN1dGVUcmFuc2l0aW9uKG9uSW52YWxpZGF0ZSkge1xuICAgICAgbGV0IHNraXAgPSBpbml0aWFsLnZhbHVlICYmICFhcHBlYXIudmFsdWU7XG4gICAgICBsZXQgbm9kZSA9IGRvbShjb250YWluZXIpO1xuICAgICAgaWYgKCFub2RlIHx8ICEobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHNraXApXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlzVHJhbnNpdGlvbmluZy52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoc2hvdy52YWx1ZSlcbiAgICAgICAgZW1pdChcImJlZm9yZUVudGVyXCIpO1xuICAgICAgaWYgKCFzaG93LnZhbHVlKVxuICAgICAgICBlbWl0KFwiYmVmb3JlTGVhdmVcIik7XG4gICAgICBvbkludmFsaWRhdGUoc2hvdy52YWx1ZSA/IHRyYW5zaXRpb24obm9kZSwgZW50ZXJDbGFzc2VzLCBlbnRlckZyb21DbGFzc2VzLCBlbnRlclRvQ2xhc3NlcywgZW50ZXJlZENsYXNzZXMsIChyZWFzb24pID0+IHtcbiAgICAgICAgaXNUcmFuc2l0aW9uaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChyZWFzb24gPT09IFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLylcbiAgICAgICAgICBlbWl0KFwiYWZ0ZXJFbnRlclwiKTtcbiAgICAgIH0pIDogdHJhbnNpdGlvbihub2RlLCBsZWF2ZUNsYXNzZXMsIGxlYXZlRnJvbUNsYXNzZXMsIGxlYXZlVG9DbGFzc2VzLCBlbnRlcmVkQ2xhc3NlcywgKHJlYXNvbikgPT4ge1xuICAgICAgICBpc1RyYW5zaXRpb25pbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHJlYXNvbiAhPT0gXCJmaW5pc2hlZFwiIC8qIEZpbmlzaGVkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFoYXNDaGlsZHJlbihuZXN0aW5nKSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi87XG4gICAgICAgICAgdW5yZWdpc3RlcihpZDIpO1xuICAgICAgICAgIGVtaXQoXCJhZnRlckxlYXZlXCIpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuICAgICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTI3LndhdGNoKShbc2hvd10sIChfb2xkVmFsdWVzLCBfbmV3VmFsdWVzLCBvbkludmFsaWRhdGUpID0+IHtcbiAgICAgICAgZXhlY3V0ZVRyYW5zaXRpb24ob25JbnZhbGlkYXRlKTtcbiAgICAgICAgaW5pdGlhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5wcm92aWRlKShOZXN0aW5nQ29udGV4dCwgbmVzdGluZyk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlMjcuY29tcHV0ZWQpKCgpID0+IG1hdGNoKHN0YXRlLnZhbHVlLCB7XG4gICAgICBbXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgIFtcImhpZGRlblwiIC8qIEhpZGRlbiAqL106IDEgLyogQ2xvc2VkICovXG4gICAgfSkpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHtcbiAgICAgICAgYXBwZWFyOiBhcHBlYXIyLFxuICAgICAgICBzaG93OiBzaG93MixcbiAgICAgICAgZW50ZXIsXG4gICAgICAgIGVudGVyRnJvbSxcbiAgICAgICAgZW50ZXJUbyxcbiAgICAgICAgZW50ZXJlZCxcbiAgICAgICAgbGVhdmUsXG4gICAgICAgIGxlYXZlRnJvbSxcbiAgICAgICAgbGVhdmVUbyxcbiAgICAgICAgLi4ucmVzdFxuICAgICAgfSA9IHByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0geyByZWY6IGNvbnRhaW5lciB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSByZXN0O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIG91clByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBmZWF0dXJlczogVHJhbnNpdGlvbkNoaWxkUmVuZGVyRmVhdHVyZXMsXG4gICAgICAgIHZpc2libGU6IHN0YXRlLnZhbHVlID09PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovLFxuICAgICAgICBuYW1lOiBcIlRyYW5zaXRpb25DaGlsZFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBfVHJhbnNpdGlvbkNoaWxkID0gVHJhbnNpdGlvbkNoaWxkO1xudmFyIFRyYW5zaXRpb25Sb290ID0gKDAsIGltcG9ydF92dWUyNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc2hvdzogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IG51bGwgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIGFwcGVhcjogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgZW50ZXI6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlckZyb206IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlclRvOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJlZDogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmVGcm9tOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmVUbzogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9XG4gIH0sXG4gIGVtaXRzOiB7XG4gICAgYmVmb3JlRW50ZXI6ICgpID0+IHRydWUsXG4gICAgYWZ0ZXJFbnRlcjogKCkgPT4gdHJ1ZSxcbiAgICBiZWZvcmVMZWF2ZTogKCkgPT4gdHJ1ZSxcbiAgICBhZnRlckxlYXZlOiAoKSA9PiB0cnVlXG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHNob3cgPSAoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuc2hvdyA9PT0gbnVsbCAmJiB1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBtYXRjaCh1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IHRydWUsXG4gICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMuc2hvdztcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoIVt0cnVlLCBmYWxzZV0uaW5jbHVkZXMoc2hvdy52YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIDxUcmFuc2l0aW9uIC8+IGlzIHVzZWQgYnV0IGl0IGlzIG1pc3NpbmcgYSBgOnNob3c9XCJ0cnVlIHwgZmFsc2VcImAgcHJvcC4nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikoc2hvdy52YWx1ZSA/IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8gOiBcImhpZGRlblwiIC8qIEhpZGRlbiAqLyk7XG4gICAgbGV0IG5lc3RpbmdCYWcgPSB1c2VOZXN0aW5nKCgpID0+IHtcbiAgICAgIHN0YXRlLnZhbHVlID0gXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi87XG4gICAgfSk7XG4gICAgbGV0IGluaXRpYWwgPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikodHJ1ZSk7XG4gICAgbGV0IHRyYW5zaXRpb25CYWcgPSB7XG4gICAgICBzaG93LFxuICAgICAgYXBwZWFyOiAoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5hcHBlYXIgfHwgIWluaXRpYWwudmFsdWUpXG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUyNy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgICBpbml0aWFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChzaG93LnZhbHVlKSB7XG4gICAgICAgICAgc3RhdGUudmFsdWUgPSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovO1xuICAgICAgICB9IGVsc2UgaWYgKCFoYXNDaGlsZHJlbihuZXN0aW5nQmFnKSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi87XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcucHJvdmlkZSkoTmVzdGluZ0NvbnRleHQsIG5lc3RpbmdCYWcpO1xuICAgICgwLCBpbXBvcnRfdnVlMjcucHJvdmlkZSkoVHJhbnNpdGlvbkNvbnRleHQsIHRyYW5zaXRpb25CYWcpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG9taXQocHJvcHMsIFtcbiAgICAgICAgXCJzaG93XCIsXG4gICAgICAgIFwiYXBwZWFyXCIsXG4gICAgICAgIFwidW5tb3VudFwiLFxuICAgICAgICBcIm9uQmVmb3JlRW50ZXJcIixcbiAgICAgICAgXCJvbkJlZm9yZUxlYXZlXCIsXG4gICAgICAgIFwib25BZnRlckVudGVyXCIsXG4gICAgICAgIFwib25BZnRlckxlYXZlXCJcbiAgICAgIF0pO1xuICAgICAgbGV0IHNoYXJlZFByb3BzID0geyB1bm1vdW50OiBwcm9wcy51bm1vdW50IH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHM6IHtcbiAgICAgICAgICAuLi5zaGFyZWRQcm9wcyxcbiAgICAgICAgICBhczogXCJ0ZW1wbGF0ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIHRoZWlyUHJvcHM6IHt9LFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgc2xvdHM6IHtcbiAgICAgICAgICAuLi5zbG90cyxcbiAgICAgICAgICBkZWZhdWx0OiAoKSA9PiBbXG4gICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTI3LmgpKF9UcmFuc2l0aW9uQ2hpbGQsIHtcbiAgICAgICAgICAgICAgb25CZWZvcmVFbnRlcjogKCkgPT4gZW1pdChcImJlZm9yZUVudGVyXCIpLFxuICAgICAgICAgICAgICBvbkFmdGVyRW50ZXI6ICgpID0+IGVtaXQoXCJhZnRlckVudGVyXCIpLFxuICAgICAgICAgICAgICBvbkJlZm9yZUxlYXZlOiAoKSA9PiBlbWl0KFwiYmVmb3JlTGVhdmVcIiksXG4gICAgICAgICAgICAgIG9uQWZ0ZXJMZWF2ZTogKCkgPT4gZW1pdChcImFmdGVyTGVhdmVcIiksXG4gICAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgICAuLi5zaGFyZWRQcm9wcyxcbiAgICAgICAgICAgICAgLi4udGhlaXJQcm9wc1xuICAgICAgICAgICAgfSwgc2xvdHMuZGVmYXVsdClcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIGF0dHJzOiB7fSxcbiAgICAgICAgZmVhdHVyZXM6IFRyYW5zaXRpb25DaGlsZFJlbmRlckZlYXR1cmVzLFxuICAgICAgICB2aXNpYmxlOiBzdGF0ZS52YWx1ZSA9PT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyxcbiAgICAgICAgbmFtZTogXCJUcmFuc2l0aW9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9oZWFkbGVzc3VpLnByb2QuY2pzJylcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9oZWFkbGVzc3VpLmRldi5janMnKVxufVxuIiwiKGZ1bmN0aW9uKGUsZCl7dHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU8XCJ1XCI/bW9kdWxlLmV4cG9ydHM9ZChyZXF1aXJlKFwidnVlXCIpLHJlcXVpcmUoXCJkYXRlLWZuc1wiKSk6dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kP2RlZmluZShbXCJ2dWVcIixcImRhdGUtZm5zXCJdLGQpOihlPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6ZXx8c2VsZixlLlZ1ZURhdGVQaWNrZXI9ZChlLlZ1ZSxlLmRhdGVGbnMpKX0pKHRoaXMsZnVuY3Rpb24oZSxkKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBHZSgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yOS4zMzMgOGMwLTIuMjA4LTEuNzkyLTQtNC00aC0xOC42NjdjLTIuMjA4IDAtNCAxLjc5Mi00IDR2MTguNjY3YzAgMi4yMDggMS43OTIgNCA0IDRoMTguNjY3YzIuMjA4IDAgNC0xLjc5MiA0LTR2LTE4LjY2N3pNMjYuNjY3IDh2MTguNjY3YzAgMC43MzYtMC41OTcgMS4zMzMtMS4zMzMgMS4zMzMgMCAwLTE4LjY2NyAwLTE4LjY2NyAwLTAuNzM2IDAtMS4zMzMtMC41OTctMS4zMzMtMS4zMzMgMCAwIDAtMTguNjY3IDAtMTguNjY3IDAtMC43MzYgMC41OTctMS4zMzMgMS4zMzMtMS4zMzMgMCAwIDE4LjY2NyAwIDE4LjY2NyAwIDAuNzM2IDAgMS4zMzMgMC41OTcgMS4zMzMgMS4zMzN6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yMCAyLjY2N3Y1LjMzM2MwIDAuNzM2IDAuNTk3IDEuMzMzIDEuMzMzIDEuMzMzczEuMzMzLTAuNTk3IDEuMzMzLTEuMzMzdi01LjMzM2MwLTAuNzM2LTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzcy0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3pcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTkuMzMzIDIuNjY3djUuMzMzYzAgMC43MzYgMC41OTcgMS4zMzMgMS4zMzMgMS4zMzNzMS4zMzMtMC41OTcgMS4zMzMtMS4zMzN2LTUuMzMzYzAtMC43MzYtMC41OTctMS4zMzMtMS4zMzMtMS4zMzNzLTEuMzMzIDAuNTk3LTEuMzMzIDEuMzMzelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNNCAxNC42NjdoMjRjMC43MzYgMCAxLjMzMy0wLjU5NyAxLjMzMy0xLjMzM3MtMC41OTctMS4zMzMtMS4zMzMtMS4zMzNoLTI0Yy0wLjczNiAwLTEuMzMzIDAuNTk3LTEuMzMzIDEuMzMzczAuNTk3IDEuMzMzIDEuMzMzIDEuMzMzelwifSldKX1mdW5jdGlvbiBubigpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yMy4wNTcgNy4wNTdsLTE2IDE2Yy0wLjUyIDAuNTItMC41MiAxLjM2NSAwIDEuODg1czEuMzY1IDAuNTIgMS44ODUgMGwxNi0xNmMwLjUyLTAuNTIgMC41Mi0xLjM2NSAwLTEuODg1cy0xLjM2NS0wLjUyLTEuODg1IDB6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk03LjA1NyA4Ljk0M2wxNiAxNmMwLjUyIDAuNTIgMS4zNjUgMC41MiAxLjg4NSAwczAuNTItMS4zNjUgMC0xLjg4NWwtMTYtMTZjLTAuNTItMC41Mi0xLjM2NS0wLjUyLTEuODg1IDBzLTAuNTIgMS4zNjUgMCAxLjg4NXpcIn0pXSl9ZnVuY3Rpb24gdnQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjAuOTQzIDIzLjA1N2wtNy4wNTctNy4wNTdjMCAwIDcuMDU3LTcuMDU3IDcuMDU3LTcuMDU3IDAuNTItMC41MiAwLjUyLTEuMzY1IDAtMS44ODVzLTEuMzY1LTAuNTItMS44ODUgMGwtOCA4Yy0wLjUyMSAwLjUyMS0wLjUyMSAxLjM2NSAwIDEuODg1bDggOGMwLjUyIDAuNTIgMS4zNjUgMC41MiAxLjg4NSAwczAuNTItMS4zNjUgMC0xLjg4NXpcIn0pXSl9ZnVuY3Rpb24gUHQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMTIuOTQzIDI0Ljk0M2w4LThjMC41MjEtMC41MjEgMC41MjEtMS4zNjUgMC0xLjg4NWwtOC04Yy0wLjUyLTAuNTItMS4zNjUtMC41Mi0xLjg4NSAwcy0wLjUyIDEuMzY1IDAgMS44ODVsNy4wNTcgNy4wNTdjMCAwLTcuMDU3IDcuMDU3LTcuMDU3IDcuMDU3LTAuNTIgMC41Mi0wLjUyIDEuMzY1IDAgMS44ODVzMS4zNjUgMC41MiAxLjg4NSAwelwifSldKX1mdW5jdGlvbiBUdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0xNiAxLjMzM2MtOC4wOTUgMC0xNC42NjcgNi41NzItMTQuNjY3IDE0LjY2N3M2LjU3MiAxNC42NjcgMTQuNjY3IDE0LjY2N2M4LjA5NSAwIDE0LjY2Ny02LjU3MiAxNC42NjctMTQuNjY3cy02LjU3Mi0xNC42NjctMTQuNjY3LTE0LjY2N3pNMTYgNGM2LjYyMyAwIDEyIDUuMzc3IDEyIDEycy01LjM3NyAxMi0xMiAxMmMtNi42MjMgMC0xMi01LjM3Ny0xMi0xMnM1LjM3Ny0xMiAxMi0xMnpcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTE0LjY2NyA4djhjMCAwLjUwNSAwLjI4NSAwLjk2NyAwLjczNyAxLjE5M2w1LjMzMyAyLjY2N2MwLjY1OCAwLjMyOSAxLjQ2IDAuMDYyIDEuNzg5LTAuNTk2czAuMDYyLTEuNDYtMC41OTYtMS43ODlsLTQuNTk2LTIuMjk4YzAgMCAwLTcuMTc2IDAtNy4xNzYgMC0wLjczNi0wLjU5Ny0xLjMzMy0xLjMzMy0xLjMzM3MtMS4zMzMgMC41OTctMS4zMzMgMS4zMzN6XCJ9KV0pfWZ1bmN0aW9uIEF0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTI0Ljk0MyAxOS4wNTdsLTgtOGMtMC41MjEtMC41MjEtMS4zNjUtMC41MjEtMS44ODUgMGwtOCA4Yy0wLjUyIDAuNTItMC41MiAxLjM2NSAwIDEuODg1czEuMzY1IDAuNTIgMS44ODUgMGw3LjA1Ny03LjA1N2MwIDAgNy4wNTcgNy4wNTcgNy4wNTcgNy4wNTcgMC41MiAwLjUyIDEuMzY1IDAuNTIgMS44ODUgMHMwLjUyLTEuMzY1IDAtMS44ODV6XCJ9KV0pfWZ1bmN0aW9uIFZ0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTcuMDU3IDEyLjk0M2w4IDhjMC41MjEgMC41MjEgMS4zNjUgMC41MjEgMS44ODUgMGw4LThjMC41Mi0wLjUyIDAuNTItMS4zNjUgMC0xLjg4NXMtMS4zNjUtMC41Mi0xLjg4NSAwbC03LjA1NyA3LjA1N2MwIDAtNy4wNTctNy4wNTctNy4wNTctNy4wNTctMC41Mi0wLjUyLTEuMzY1LTAuNTItMS44ODUgMHMtMC41MiAxLjM2NSAwIDEuODg1elwifSldKX1jb25zdCBfdD0odCxhLHIsbix1KT0+e2NvbnN0IHA9ZC5wYXJzZSh0LGEuc2xpY2UoMCx0Lmxlbmd0aCksbmV3IERhdGUpO3JldHVybiBkLmlzVmFsaWQocCkmJmQuaXNEYXRlKHApP258fHU/cDpkLnNldChwLHtob3Vyczorci5ob3VycyxtaW51dGVzOisocj09bnVsbD92b2lkIDA6ci5taW51dGVzKSxzZWNvbmRzOisocj09bnVsbD92b2lkIDA6ci5zZWNvbmRzKSxtaWxsaXNlY29uZHM6MH0pOm51bGx9LGFuPSh0LGEscixuLHUpPT57Y29uc3QgcD1BcnJheS5pc0FycmF5KHIpP3JbMF06cjtpZih0eXBlb2YgYT09XCJzdHJpbmdcIilyZXR1cm4gX3QodCxhLHAsbix1KTtpZihBcnJheS5pc0FycmF5KGEpKXtsZXQgZz1udWxsO2Zvcihjb25zdCBCIG9mIGEpaWYoZz1fdCh0LEIscCxuLHUpLGcpYnJlYWs7cmV0dXJuIGd9cmV0dXJuIHR5cGVvZiBhPT1cImZ1bmN0aW9uXCI/YSh0KTpudWxsfSwkPXQ9PnQ/bmV3IERhdGUodCk6bmV3IERhdGUscm49KHQsYSxyKT0+e2lmKGEpe2NvbnN0IHU9KHQuZ2V0TW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsXCIwXCIpLHA9dC5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxnPXQuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsXCIwXCIpLEI9dC5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxFPXI/dC5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKTpcIjAwXCI7cmV0dXJuYCR7dC5nZXRGdWxsWWVhcigpfS0ke3V9LSR7cH1UJHtnfToke0J9OiR7RX0uMDAwWmB9Y29uc3Qgbj1EYXRlLlVUQyh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpLHQuZ2V0VVRDRGF0ZSgpLHQuZ2V0VVRDSG91cnMoKSx0LmdldFVUQ01pbnV0ZXMoKSx0LmdldFVUQ1NlY29uZHMoKSk7cmV0dXJuIG5ldyBEYXRlKG4pLnRvSVNPU3RyaW5nKCl9LFNlPXQ9PntsZXQgYT0kKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpKTtyZXR1cm4gYT1kLnNldEhvdXJzKGEsMCksYT1kLnNldE1pbnV0ZXMoYSwwKSxhPWQuc2V0U2Vjb25kcyhhLDApLGE9ZC5zZXRNaWxsaXNlY29uZHMoYSwwKSxhfSxCZT0odCxhLHIsbik9PntsZXQgdT10PyQodCk6JCgpO3JldHVybihhfHxhPT09MCkmJih1PWQuc2V0SG91cnModSwrYSkpLChyfHxyPT09MCkmJih1PWQuc2V0TWludXRlcyh1LCtyKSksKG58fG49PT0wKSYmKHU9ZC5zZXRTZWNvbmRzKHUsK24pKSxkLnNldE1pbGxpc2Vjb25kcyh1LDApfSx3ZT0odCxhKT0+IXR8fCFhPyExOmQuaXNCZWZvcmUoU2UodCksU2UoYSkpLHNlPSh0LGEpPT4hdHx8IWE/ITE6ZC5pc0VxdWFsKFNlKHQpLFNlKGEpKSxiZT0odCxhKT0+IXR8fCFhPyExOmQuaXNBZnRlcihTZSh0KSxTZShhKSksRXQ9KHQsYSxyKT0+dCYmdFswXSYmdFsxXT9iZShyLHRbMF0pJiZ3ZShyLHRbMV0pOnQmJnRbMF0mJmE/YmUocix0WzBdKSYmd2UocixhKXx8d2Uocix0WzBdKSYmYmUocixhKTohMSxLZT10PT57Y29uc3QgYT1kLnNldChuZXcgRGF0ZSh0KSx7ZGF0ZToxfSk7cmV0dXJuIFNlKGEpfSxudD0odCxhLHIpPT5hJiYocnx8cj09PTApP09iamVjdC5mcm9tRW50cmllcyhbXCJob3Vyc1wiLFwibWludXRlc1wiLFwic2Vjb25kc1wiXS5tYXAobj0+bj09PWE/W24scl06W24saXNOYU4oK3Rbbl0pP3ZvaWQgMDordFtuXV0pKTp7aG91cnM6aXNOYU4oK3QuaG91cnMpP3ZvaWQgMDordC5ob3VycyxtaW51dGVzOmlzTmFOKCt0Lm1pbnV0ZXMpP3ZvaWQgMDordC5taW51dGVzLHNlY29uZHM6aXNOYU4oK3Quc2Vjb25kcyk/dm9pZCAwOit0LnNlY29uZHN9LHFlPXQ9Pih7aG91cnM6ZC5nZXRIb3Vycyh0KSxtaW51dGVzOmQuZ2V0TWludXRlcyh0KSxzZWNvbmRzOmQuZ2V0U2Vjb25kcyh0KX0pLFVlPWUucmVhY3RpdmUoe21lbnVGb2N1c2VkOiExLHNoaWZ0S2V5SW5NZW51OiExfSksUnQ9KCk9Pntjb25zdCB0PW49PntVZS5tZW51Rm9jdXNlZD1ufSxhPW49PntVZS5zaGlmdEtleUluTWVudSE9PW4mJihVZS5zaGlmdEtleUluTWVudT1uKX07cmV0dXJue2NvbnRyb2w6ZS5jb21wdXRlZCgoKT0+KHtzaGlmdEtleUluTWVudTpVZS5zaGlmdEtleUluTWVudSxtZW51Rm9jdXNlZDpVZS5tZW51Rm9jdXNlZH0pKSxzZXRNZW51Rm9jdXNlZDp0LHNldFNoaWZ0S2V5OmF9fTtmdW5jdGlvbiBhdCh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxcImRlZmF1bHRcIik/dC5kZWZhdWx0OnR9dmFyIEl0PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gYShyKXtyZXR1cm4gciYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn19dC5leHBvcnRzPWEsdC5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdC5leHBvcnRzLmRlZmF1bHQ9dC5leHBvcnRzfSkoSXQpO3ZhciBsbj1JdC5leHBvcnRzLHJ0PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24odCxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9cjtmdW5jdGlvbiByKG4pe2lmKG49PT1udWxsfHxuPT09ITB8fG49PT0hMSlyZXR1cm4gTmFOO3ZhciB1PU51bWJlcihuKTtyZXR1cm4gaXNOYU4odSk/dTp1PDA/TWF0aC5jZWlsKHUpOk1hdGguZmxvb3IodSl9dC5leHBvcnRzPWEuZGVmYXVsdH0pKHJ0LHJ0LmV4cG9ydHMpO3ZhciBvbj1ydC5leHBvcnRzO2NvbnN0IHNuPWF0KG9uKTt2YXIgbHQ9e2V4cG9ydHM6e319OyhmdW5jdGlvbih0LGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1yO2Z1bmN0aW9uIHIobil7dmFyIHU9bmV3IERhdGUoRGF0ZS5VVEMobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSxuLmdldERhdGUoKSxuLmdldEhvdXJzKCksbi5nZXRNaW51dGVzKCksbi5nZXRTZWNvbmRzKCksbi5nZXRNaWxsaXNlY29uZHMoKSkpO3JldHVybiB1LnNldFVUQ0Z1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSksbi5nZXRUaW1lKCktdS5nZXRUaW1lKCl9dC5leHBvcnRzPWEuZGVmYXVsdH0pKGx0LGx0LmV4cG9ydHMpO3ZhciB1bj1sdC5leHBvcnRzO2NvbnN0IE90PWF0KHVuKTtmdW5jdGlvbiBjbih0LGEpe3ZhciByPXluKGEpO3JldHVybiByLmZvcm1hdFRvUGFydHM/Zm4ocix0KTptbihyLHQpfXZhciBkbj17eWVhcjowLG1vbnRoOjEsZGF5OjIsaG91cjozLG1pbnV0ZTo0LHNlY29uZDo1fTtmdW5jdGlvbiBmbih0LGEpe3RyeXtmb3IodmFyIHI9dC5mb3JtYXRUb1BhcnRzKGEpLG49W10sdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgcD1kbltyW3VdLnR5cGVdO3A+PTAmJihuW3BdPXBhcnNlSW50KHJbdV0udmFsdWUsMTApKX1yZXR1cm4gbn1jYXRjaChnKXtpZihnIGluc3RhbmNlb2YgUmFuZ2VFcnJvcilyZXR1cm5bTmFOXTt0aHJvdyBnfX1mdW5jdGlvbiBtbih0LGEpe3ZhciByPXQuZm9ybWF0KGEpLnJlcGxhY2UoL1xcdTIwMEUvZyxcIlwiKSxuPS8oXFxkKylcXC8oXFxkKylcXC8oXFxkKyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhyKTtyZXR1cm5bblszXSxuWzFdLG5bMl0sbls0XSxuWzVdLG5bNl1dfXZhciBvdD17fTtmdW5jdGlvbiB5bih0KXtpZighb3RbdF0pe3ZhciBhPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIix7aG91cjEyOiExLHRpbWVab25lOlwiQW1lcmljYS9OZXdfWW9ya1wiLHllYXI6XCJudW1lcmljXCIsbW9udGg6XCJudW1lcmljXCIsZGF5OlwiMi1kaWdpdFwiLGhvdXI6XCIyLWRpZ2l0XCIsbWludXRlOlwiMi1kaWdpdFwiLHNlY29uZDpcIjItZGlnaXRcIn0pLmZvcm1hdChuZXcgRGF0ZShcIjIwMTQtMDYtMjVUMDQ6MDA6MDAuMTIzWlwiKSkscj1hPT09XCIwNi8yNS8yMDE0LCAwMDowMDowMFwifHxhPT09XCLigI4wNuKAji/igI4yNeKAji/igI4yMDE04oCOIOKAjjAw4oCOOuKAjjAw4oCOOuKAjjAwXCI7b3RbdF09cj9uZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIse2hvdXIxMjohMSx0aW1lWm9uZTp0LHllYXI6XCJudW1lcmljXCIsbW9udGg6XCJudW1lcmljXCIsZGF5OlwiMi1kaWdpdFwiLGhvdXI6XCIyLWRpZ2l0XCIsbWludXRlOlwiMi1kaWdpdFwiLHNlY29uZDpcIjItZGlnaXRcIn0pOm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIix7aG91ckN5Y2xlOlwiaDIzXCIsdGltZVpvbmU6dCx5ZWFyOlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLGRheTpcIjItZGlnaXRcIixob3VyOlwiMi1kaWdpdFwiLG1pbnV0ZTpcIjItZGlnaXRcIixzZWNvbmQ6XCIyLWRpZ2l0XCJ9KX1yZXR1cm4gb3RbdF19ZnVuY3Rpb24gc3QodCxhLHIsbix1LHAsZyl7dmFyIEI9bmV3IERhdGUoMCk7cmV0dXJuIEIuc2V0VVRDRnVsbFllYXIodCxhLHIpLEIuc2V0VVRDSG91cnMobix1LHAsZyksQn12YXIgWXQ9MzZlNSxwbj02ZTQsaXQ9e3RpbWV6b25lOi8oW1orLV0uKikkLyx0aW1lem9uZVo6L14oWikkLyx0aW1lem9uZUhIOi9eKFsrLV1cXGR7Mn0pJC8sdGltZXpvbmVISE1NOi9eKFsrLV1cXGR7Mn0pOj8oXFxkezJ9KSQvfTtmdW5jdGlvbiB1dCh0LGEscil7dmFyIG4sdTtpZighdHx8KG49aXQudGltZXpvbmVaLmV4ZWModCksbikpcmV0dXJuIDA7dmFyIHA7aWYobj1pdC50aW1lem9uZUhILmV4ZWModCksbilyZXR1cm4gcD1wYXJzZUludChuWzFdLDEwKSx4dChwKT8tKHAqWXQpOk5hTjtpZihuPWl0LnRpbWV6b25lSEhNTS5leGVjKHQpLG4pe3A9cGFyc2VJbnQoblsxXSwxMCk7dmFyIGc9cGFyc2VJbnQoblsyXSwxMCk7cmV0dXJuIHh0KHAsZyk/KHU9TWF0aC5hYnMocCkqWXQrZypwbixwPjA/LXU6dSk6TmFOfWlmKGtuKHQpKXthPW5ldyBEYXRlKGF8fERhdGUubm93KCkpO3ZhciBCPXI/YTpnbihhKSxFPWN0KEIsdCksdj1yP0U6aG4oYSxFLHQpO3JldHVybi12fXJldHVybiBOYU59ZnVuY3Rpb24gZ24odCl7cmV0dXJuIHN0KHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCksdC5nZXRIb3VycygpLHQuZ2V0TWludXRlcygpLHQuZ2V0U2Vjb25kcygpLHQuZ2V0TWlsbGlzZWNvbmRzKCkpfWZ1bmN0aW9uIGN0KHQsYSl7dmFyIHI9Y24odCxhKSxuPXN0KHJbMF0sclsxXS0xLHJbMl0sclszXSUyNCxyWzRdLHJbNV0sMCkuZ2V0VGltZSgpLHU9dC5nZXRUaW1lKCkscD11JTFlMztyZXR1cm4gdS09cD49MD9wOjFlMytwLG4tdX1mdW5jdGlvbiBobih0LGEscil7dmFyIG49dC5nZXRUaW1lKCksdT1uLWEscD1jdChuZXcgRGF0ZSh1KSxyKTtpZihhPT09cClyZXR1cm4gYTt1LT1wLWE7dmFyIGc9Y3QobmV3IERhdGUodSkscik7cmV0dXJuIHA9PT1nP3A6TWF0aC5tYXgocCxnKX1mdW5jdGlvbiB4dCh0LGEpe3JldHVybi0yMzw9dCYmdDw9MjMmJihhPT1udWxsfHwwPD1hJiZhPD01OSl9dmFyIEx0PXt9O2Z1bmN0aW9uIGtuKHQpe2lmKEx0W3RdKXJldHVybiEwO3RyeXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodm9pZCAwLHt0aW1lWm9uZTp0fSksTHRbdF09ITAsITB9Y2F0Y2h7cmV0dXJuITF9fXZhciB3bj0vKFp8WystXVxcZHsyfSg/Ojo/XFxkezJ9KT98IFVUQ3wgW2EtekEtWl0rXFwvW2EtekEtWl9dKyg/OlxcL1thLXpBLVpfXSspPykkLztjb25zdCB6dD13bjt2YXIgZHQ9MzZlNSxLdD02ZTQsYm49MixEZT17ZGF0ZVRpbWVQYXR0ZXJuOi9eKFswLTlXKy1dKykoVHwgKSguKikvLGRhdGVQYXR0ZXJuOi9eKFswLTlXKy1dKykoLiopLyxwbGFpblRpbWU6LzovLFlZOi9eKFxcZHsyfSkkLyxZWVk6Wy9eKFsrLV1cXGR7Mn0pJC8sL14oWystXVxcZHszfSkkLywvXihbKy1dXFxkezR9KSQvXSxZWVlZOi9eKFxcZHs0fSkvLFlZWVlZOlsvXihbKy1dXFxkezR9KS8sL14oWystXVxcZHs1fSkvLC9eKFsrLV1cXGR7Nn0pL10sTU06L14tKFxcZHsyfSkkLyxEREQ6L14tPyhcXGR7M30pJC8sTU1ERDovXi0/KFxcZHsyfSktPyhcXGR7Mn0pJC8sV3d3Oi9eLT9XKFxcZHsyfSkkLyxXd3dEOi9eLT9XKFxcZHsyfSktPyhcXGR7MX0pJC8sSEg6L14oXFxkezJ9KFsuLF1cXGQqKT8pJC8sSEhNTTovXihcXGR7Mn0pOj8oXFxkezJ9KFsuLF1cXGQqKT8pJC8sSEhNTVNTOi9eKFxcZHsyfSk6PyhcXGR7Mn0pOj8oXFxkezJ9KFsuLF1cXGQqKT8pJC8sdGltZVpvbmU6enR9O2Z1bmN0aW9uIGZ0KHQsYSl7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSBcIithcmd1bWVudHMubGVuZ3RoK1wiIHByZXNlbnRcIik7aWYodD09PW51bGwpcmV0dXJuIG5ldyBEYXRlKE5hTik7dmFyIHI9YXx8e30sbj1yLmFkZGl0aW9uYWxEaWdpdHM9PW51bGw/Ym46c24oci5hZGRpdGlvbmFsRGlnaXRzKTtpZihuIT09MiYmbiE9PTEmJm4hPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMlwiKTtpZih0IGluc3RhbmNlb2YgRGF0ZXx8dHlwZW9mIHQ9PVwib2JqZWN0XCImJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PVwiW29iamVjdCBEYXRlXVwiKXJldHVybiBuZXcgRGF0ZSh0LmdldFRpbWUoKSk7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCJ8fE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PVwiW29iamVjdCBOdW1iZXJdXCIpcmV0dXJuIG5ldyBEYXRlKHQpO2lmKCEodHlwZW9mIHQ9PVwic3RyaW5nXCJ8fE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PVwiW29iamVjdCBTdHJpbmddXCIpKXJldHVybiBuZXcgRGF0ZShOYU4pO3ZhciB1PURuKHQpLHA9TW4odS5kYXRlLG4pLGc9cC55ZWFyLEI9cC5yZXN0RGF0ZVN0cmluZyxFPUNuKEIsZyk7aWYoaXNOYU4oRSkpcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYoRSl7dmFyIHY9RS5nZXRUaW1lKCkseD0wLFA7aWYodS50aW1lJiYoeD0kbih1LnRpbWUpLGlzTmFOKHgpKSlyZXR1cm4gbmV3IERhdGUoTmFOKTtpZih1LnRpbWVab25lfHxyLnRpbWVab25lKXtpZihQPXV0KHUudGltZVpvbmV8fHIudGltZVpvbmUsbmV3IERhdGUodit4KSksaXNOYU4oUCkpcmV0dXJuIG5ldyBEYXRlKE5hTil9ZWxzZSBQPU90KG5ldyBEYXRlKHYreCkpLFA9T3QobmV3IERhdGUodit4K1ApKTtyZXR1cm4gbmV3IERhdGUodit4K1ApfWVsc2UgcmV0dXJuIG5ldyBEYXRlKE5hTil9ZnVuY3Rpb24gRG4odCl7dmFyIGE9e30scj1EZS5kYXRlVGltZVBhdHRlcm4uZXhlYyh0KSxuO2lmKHI/KGEuZGF0ZT1yWzFdLG49clszXSk6KHI9RGUuZGF0ZVBhdHRlcm4uZXhlYyh0KSxyPyhhLmRhdGU9clsxXSxuPXJbMl0pOihhLmRhdGU9bnVsbCxuPXQpKSxuKXt2YXIgdT1EZS50aW1lWm9uZS5leGVjKG4pO3U/KGEudGltZT1uLnJlcGxhY2UodVsxXSxcIlwiKSxhLnRpbWVab25lPXVbMV0udHJpbSgpKTphLnRpbWU9bn1yZXR1cm4gYX1mdW5jdGlvbiBNbih0LGEpe3ZhciByPURlLllZWVthXSxuPURlLllZWVlZW2FdLHU7aWYodT1EZS5ZWVlZLmV4ZWModCl8fG4uZXhlYyh0KSx1KXt2YXIgcD11WzFdO3JldHVybnt5ZWFyOnBhcnNlSW50KHAsMTApLHJlc3REYXRlU3RyaW5nOnQuc2xpY2UocC5sZW5ndGgpfX1pZih1PURlLllZLmV4ZWModCl8fHIuZXhlYyh0KSx1KXt2YXIgZz11WzFdO3JldHVybnt5ZWFyOnBhcnNlSW50KGcsMTApKjEwMCxyZXN0RGF0ZVN0cmluZzp0LnNsaWNlKGcubGVuZ3RoKX19cmV0dXJue3llYXI6bnVsbH19ZnVuY3Rpb24gQ24odCxhKXtpZihhPT09bnVsbClyZXR1cm4gbnVsbDt2YXIgcixuLHUscDtpZih0Lmxlbmd0aD09PTApcmV0dXJuIG49bmV3IERhdGUoMCksbi5zZXRVVENGdWxsWWVhcihhKSxuO2lmKHI9RGUuTU0uZXhlYyh0KSxyKXJldHVybiBuPW5ldyBEYXRlKDApLHU9cGFyc2VJbnQoclsxXSwxMCktMSxIdChhLHUpPyhuLnNldFVUQ0Z1bGxZZWFyKGEsdSksbik6bmV3IERhdGUoTmFOKTtpZihyPURlLkRERC5leGVjKHQpLHIpe249bmV3IERhdGUoMCk7dmFyIGc9cGFyc2VJbnQoclsxXSwxMCk7cmV0dXJuIE5uKGEsZyk/KG4uc2V0VVRDRnVsbFllYXIoYSwwLGcpLG4pOm5ldyBEYXRlKE5hTil9aWYocj1EZS5NTURELmV4ZWModCkscil7bj1uZXcgRGF0ZSgwKSx1PXBhcnNlSW50KHJbMV0sMTApLTE7dmFyIEI9cGFyc2VJbnQoclsyXSwxMCk7cmV0dXJuIEh0KGEsdSxCKT8obi5zZXRVVENGdWxsWWVhcihhLHUsQiksbik6bmV3IERhdGUoTmFOKX1pZihyPURlLld3dy5leGVjKHQpLHIpcmV0dXJuIHA9cGFyc2VJbnQoclsxXSwxMCktMSxqdChhLHApP1V0KGEscCk6bmV3IERhdGUoTmFOKTtpZihyPURlLld3d0QuZXhlYyh0KSxyKXtwPXBhcnNlSW50KHJbMV0sMTApLTE7dmFyIEU9cGFyc2VJbnQoclsyXSwxMCktMTtyZXR1cm4ganQoYSxwLEUpP1V0KGEscCxFKTpuZXcgRGF0ZShOYU4pfXJldHVybiBudWxsfWZ1bmN0aW9uICRuKHQpe3ZhciBhLHIsbjtpZihhPURlLkhILmV4ZWModCksYSlyZXR1cm4gcj1wYXJzZUZsb2F0KGFbMV0ucmVwbGFjZShcIixcIixcIi5cIikpLG10KHIpP3IlMjQqZHQ6TmFOO2lmKGE9RGUuSEhNTS5leGVjKHQpLGEpcmV0dXJuIHI9cGFyc2VJbnQoYVsxXSwxMCksbj1wYXJzZUZsb2F0KGFbMl0ucmVwbGFjZShcIixcIixcIi5cIikpLG10KHIsbik/ciUyNCpkdCtuKkt0Ok5hTjtpZihhPURlLkhITU1TUy5leGVjKHQpLGEpe3I9cGFyc2VJbnQoYVsxXSwxMCksbj1wYXJzZUludChhWzJdLDEwKTt2YXIgdT1wYXJzZUZsb2F0KGFbM10ucmVwbGFjZShcIixcIixcIi5cIikpO3JldHVybiBtdChyLG4sdSk/ciUyNCpkdCtuKkt0K3UqMWUzOk5hTn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBVdCh0LGEscil7YT1hfHwwLHI9cnx8MDt2YXIgbj1uZXcgRGF0ZSgwKTtuLnNldFVUQ0Z1bGxZZWFyKHQsMCw0KTt2YXIgdT1uLmdldFVUQ0RheSgpfHw3LHA9YSo3K3IrMS11O3JldHVybiBuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCkrcCksbn12YXIgU249WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxCbj1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIFd0KHQpe3JldHVybiB0JTQwMD09PTB8fHQlND09PTAmJnQlMTAwIT09MH1mdW5jdGlvbiBIdCh0LGEscil7aWYoYTwwfHxhPjExKXJldHVybiExO2lmKHIhPW51bGwpe2lmKHI8MSlyZXR1cm4hMTt2YXIgbj1XdCh0KTtpZihuJiZyPkJuW2FdfHwhbiYmcj5TblthXSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBObih0LGEpe2lmKGE8MSlyZXR1cm4hMTt2YXIgcj1XdCh0KTtyZXR1cm4hKHImJmE+MzY2fHwhciYmYT4zNjUpfWZ1bmN0aW9uIGp0KHQsYSxyKXtyZXR1cm4hKGE8MHx8YT41Mnx8ciE9bnVsbCYmKHI8MHx8cj42KSl9ZnVuY3Rpb24gbXQodCxhLHIpe3JldHVybiEodCE9bnVsbCYmKHQ8MHx8dD49MjUpfHxhIT1udWxsJiYoYTwwfHxhPj02MCl8fHIhPW51bGwmJihyPDB8fHI+PTYwKSl9dmFyIHl0PXtleHBvcnRzOnt9fSxwdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PXI7ZnVuY3Rpb24gcihuLHUpe2lmKG49PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcImFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7Zm9yKHZhciBwIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUscCkmJihuW3BdPXVbcF0pO3JldHVybiBufXQuZXhwb3J0cz1hLmRlZmF1bHR9KShwdCxwdC5leHBvcnRzKTt2YXIgdm49cHQuZXhwb3J0czsoZnVuY3Rpb24odCxhKXt2YXIgcj1sbi5kZWZhdWx0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD11O3ZhciBuPXIodm4pO2Z1bmN0aW9uIHUocCl7cmV0dXJuKDAsbi5kZWZhdWx0KSh7fSxwKX10LmV4cG9ydHM9YS5kZWZhdWx0fSkoeXQseXQuZXhwb3J0cyk7dmFyIFBuPXl0LmV4cG9ydHM7Y29uc3QgVG49YXQoUG4pO2Z1bmN0aW9uIEFuKHQsYSxyKXt2YXIgbj1mdCh0LHIpLHU9dXQoYSxuLCEwKSxwPW5ldyBEYXRlKG4uZ2V0VGltZSgpLXUpLGc9bmV3IERhdGUoMCk7cmV0dXJuIGcuc2V0RnVsbFllYXIocC5nZXRVVENGdWxsWWVhcigpLHAuZ2V0VVRDTW9udGgoKSxwLmdldFVUQ0RhdGUoKSksZy5zZXRIb3VycyhwLmdldFVUQ0hvdXJzKCkscC5nZXRVVENNaW51dGVzKCkscC5nZXRVVENTZWNvbmRzKCkscC5nZXRVVENNaWxsaXNlY29uZHMoKSksZ31mdW5jdGlvbiBWbih0LGEscil7aWYodHlwZW9mIHQ9PVwic3RyaW5nXCImJiF0Lm1hdGNoKHp0KSl7dmFyIG49VG4ocik7cmV0dXJuIG4udGltZVpvbmU9YSxmdCh0LG4pfXZhciB1PWZ0KHQscikscD1zdCh1LmdldEZ1bGxZZWFyKCksdS5nZXRNb250aCgpLHUuZ2V0RGF0ZSgpLHUuZ2V0SG91cnMoKSx1LmdldE1pbnV0ZXMoKSx1LmdldFNlY29uZHMoKSx1LmdldE1pbGxpc2Vjb25kcygpKS5nZXRUaW1lKCksZz11dChhLG5ldyBEYXRlKHApKTtyZXR1cm4gbmV3IERhdGUocCtnKX1jb25zdCBfbj0odCxhPTMpPT57Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rPWEpci5wdXNoKFt0W25dLHRbbisxXSx0W24rMl1dKTtyZXR1cm4gcn07ZnVuY3Rpb24gR3QodCl7cmV0dXJuIGE9Pm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHQse3dlZWtkYXk6XCJzaG9ydFwiLHRpbWVab25lOlwiVVRDXCJ9KS5mb3JtYXQobmV3IERhdGUoYDIwMTctMDEtMCR7YX1UMDA6MDA6MDArMDA6MDBgKSkuc2xpY2UoMCwyKX1mdW5jdGlvbiBFbih0KXtyZXR1cm4gYT0+ZC5mb3JtYXQobmV3IERhdGUoYDIwMTctMDEtMCR7YX1UMDA6MDA6MDArMDA6MDBgKSxcIkVFRUVFRVwiLHtsb2NhbGU6dH0pfWNvbnN0IFJuPSh0LGEscik9Pntjb25zdCBuPVsxLDIsMyw0LDUsNiw3XTtsZXQgdTtpZih0IT09bnVsbCl0cnl7dT1uLm1hcChFbih0KSl9Y2F0Y2h7dT1uLm1hcChHdChhKSl9ZWxzZSB1PW4ubWFwKEd0KGEpKTtjb25zdCBwPXUuc2xpY2UoMCxyKSxnPXUuc2xpY2UocisxLHUubGVuZ3RoKTtyZXR1cm5bdVtyXV0uY29uY2F0KC4uLmcpLmNvbmNhdCguLi5wKX0sSW49KHQsYSk9Pntjb25zdCByPVtdO2ZvcihsZXQgbj0rdFswXTtuPD0rdFsxXTtuKyspci5wdXNoKHt2YWx1ZTorbix0ZXh0OmAke259YH0pO3JldHVybiBhP3IucmV2ZXJzZSgpOnJ9LE9uPSh0LGEscik9Pntjb25zdCBuPVsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0ubWFwKHA9Pntjb25zdCBnPXA8MTA/YDAke3B9YDpwO3JldHVybiBuZXcgRGF0ZShgMjAxNy0ke2d9LTAxVDAwOjAwOjAwKzAwOjAwYCl9KTtpZih0IT09bnVsbCl0cnl7Y29uc3QgcD1yPT09XCJsb25nXCI/XCJNTU1NXCI6XCJNTU1cIjtyZXR1cm4gbi5tYXAoKGcsQik9Pntjb25zdCBFPWQuZm9ybWF0KGcscCx7bG9jYWxlOnR9KTtyZXR1cm57dGV4dDpFLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0Uuc3Vic3RyaW5nKDEpLHZhbHVlOkJ9fSl9Y2F0Y2h7fWNvbnN0IHU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoYSx7bW9udGg6cix0aW1lWm9uZTpcIlVUQ1wifSk7cmV0dXJuIG4ubWFwKChwLGcpPT57Y29uc3QgQj11LmZvcm1hdChwKTtyZXR1cm57dGV4dDpCLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0Iuc3Vic3RyaW5nKDEpLHZhbHVlOmd9fSl9LFluPXQ9PlsxMiwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMV1bdF0sY2U9dD0+e2NvbnN0IGE9ZS51bnJlZih0KTtyZXR1cm4gYSE9bnVsbCYmYS4kZWw/YT09bnVsbD92b2lkIDA6YS4kZWw6YX0seG49dD0+T2JqZWN0LmFzc2lnbih7dHlwZTpcImRvdFwifSx0KSxxdD10PT5BcnJheS5pc0FycmF5KHQpPyEhdFswXSYmISF0WzFdOiExLFplPXtwcm9wOnQ9PmBcIiR7dH1cIiBwcm9wIG11c3QgYmUgZW5hYmxlZCFgLGRhdGVBcnI6dD0+YFlvdSBuZWVkIHRvIHVzZSBhcnJheSBhcyBcIm1vZGVsLXZhbHVlXCIgYmluZGluZyBpbiBvcmRlciB0byBzdXBwb3J0IFwiJHt0fVwiYH0sZ2U9dD0+dCxadD10PT50PT09MD90OiF0fHxpc05hTigrdCk/bnVsbDordCxMbj10PT50PT09MD8hMDohIXQsWHQ9dD0+dD09PW51bGwsem49dD0+e2lmKHQpcmV0dXJuWy4uLnQucXVlcnlTZWxlY3RvckFsbChcImlucHV0LCBidXR0b24sIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl1cIildWzBdfSxKdD10PT5PYmplY3QuYXNzaWduKHttZW51QXBwZWFyOlwiXCIsb3BlbjpcImRwLXNsaWRlLWRvd25cIixjbG9zZTpcImRwLXNsaWRlLXVwXCIsbmV4dDpcImNhbGVuZGFyLW5leHRcIixwcmV2aW91czpcImNhbGVuZGFyLXByZXZcIix2TmV4dDpcImRwLXNsaWRlLXVwXCIsdlByZXZpb3VzOlwiZHAtc2xpZGUtZG93blwifSx0KSxLbj10PT5PYmplY3QuYXNzaWduKHt0b2dnbGVPdmVybGF5OlwiVG9nZ2xlIG92ZXJsYXlcIixtZW51OlwiRGF0ZXBpY2tlciBtZW51XCIsaW5wdXQ6XCJEYXRlcGlja2VyIGlucHV0XCIsY2FsZW5kYXJXcmFwOlwiQ2FsZW5kYXIgd3JhcHBlclwiLGNhbGVuZGFyRGF5czpcIkNhbGVuZGFyIGRheXNcIixvcGVuVGltZVBpY2tlcjpcIk9wZW4gdGltZSBwaWNrZXJcIixjbG9zZVRpbWVQaWNrZXI6XCJDbG9zZSB0aW1lIFBpY2tlclwiLGluY3JlbWVudFZhbHVlOmE9PmBJbmNyZW1lbnQgJHthfWAsZGVjcmVtZW50VmFsdWU6YT0+YERlY3JlbWVudCAke2F9YCxvcGVuVHBPdmVybGF5OmE9PmBPcGVuICR7YX0gb3ZlcmxheWAsYW1QbUJ1dHRvbjpcIlN3aXRjaCBBTS9QTSBtb2RlXCIsb3BlblllYXJzT3ZlcmxheTpcIk9wZW4geWVhcnMgb3ZlcmxheVwiLG9wZW5Nb250aHNPdmVybGF5OlwiT3BlbiBtb250aHMgb3ZlcmxheVwiLG5leHRNb250aDpcIk5leHQgbW9udGhcIixwcmV2TW9udGg6XCJQcmV2aW91cyBtb250aFwiLGRheTooKT0+XCJcIn0sdCksVW49dD0+dD09PW51bGw/MDp0eXBlb2YgdD09XCJib29sZWFuXCI/dD8yOjA6K3Q+PTI/K3Q6MixXbj0odCxhLHIpPT50fHwodHlwZW9mIHI9PVwic3RyaW5nXCI/cjphKSxIbj10PT50eXBlb2YgdD09XCJib29sZWFuXCI/dD9KdCh7fSk6ITE6SnQodCksam49KCk9Pih7ZW50ZXJTdWJtaXQ6ITAsdGFiU3VibWl0OiEwLG9wZW5NZW51OiEwLHJhbmdlU2VwYXJhdG9yOlwiIC0gXCJ9KSxHbj10PT5PYmplY3QuYXNzaWduKHttb250aHM6W10seWVhcnM6W10sdGltZXM6e2hvdXJzOltdLG1pbnV0ZXM6W10sc2Vjb25kczpbXX19LHQpLHFuPXQ9Pk9iamVjdC5hc3NpZ24oe3Nob3dTZWxlY3Q6ITAsc2hvd0NhbmNlbDohMCxzaG93Tm93OiExLHNob3dQcmV2aWV3OiEwfSx0KSwkZT10PT57Y29uc3QgYT0oKT0+e2lmKHQucGFydGlhbFJhbmdlKXJldHVybiBudWxsO3Rocm93IG5ldyBFcnJvcihaZS5wcm9wKFwicGFydGlhbC1yYW5nZVwiKSl9LHI9ZS5jb21wdXRlZCgoKT0+KHthcmlhTGFiZWxzOktuKHQuYXJpYUxhYmVscyksdGV4dElucHV0T3B0aW9uczpPYmplY3QuYXNzaWduKGpuKCksdC50ZXh0SW5wdXRPcHRpb25zKSxtdWx0aUNhbGVuZGFyczpVbih0Lm11bHRpQ2FsZW5kYXJzKSxwcmV2aWV3Rm9ybWF0OlduKHQucHJldmlld0Zvcm1hdCx0LmZvcm1hdCxwKCkpLGZpbHRlcnM6R24odC5maWx0ZXJzKSx0cmFuc2l0aW9uczpIbih0LnRyYW5zaXRpb25zKSxzdGFydFRpbWU6aygpLGFjdGlvblJvdzpxbih0LmFjdGlvblJvdyl9KSksbj1vPT57aWYodC5yYW5nZSlyZXR1cm4gbygpO3Rocm93IG5ldyBFcnJvcihaZS5wcm9wKFwicmFuZ2VcIikpfSx1PSgpPT57Y29uc3Qgbz10LmVuYWJsZVNlY29uZHM/XCI6c3NcIjpcIlwiO3JldHVybiB0LmlzMjQ/YEhIOm1tJHtvfWA6YGhoOm1tJHtvfSBhYWB9LHA9KCk9PnQuZm9ybWF0P3QuZm9ybWF0OnQubW9udGhQaWNrZXI/XCJNTS95eXl5XCI6dC50aW1lUGlja2VyP3UoKTp0LndlZWtQaWNrZXI/XCJNTS9kZC95eXl5XCI6dC55ZWFyUGlja2VyP1wieXl5eVwiOnQuZW5hYmxlVGltZVBpY2tlcj9gTU0vZGQveXl5eSwgJHt1KCl9YDpcIk1NL2RkL3l5eXlcIixnPShvLHMpPT57aWYodHlwZW9mIHQuZm9ybWF0PT1cImZ1bmN0aW9uXCIpcmV0dXJuIHQuZm9ybWF0KG8pO2NvbnN0IGw9c3x8cCgpLFM9dC5mb3JtYXRMb2NhbGU/e2xvY2FsZTp0LmZvcm1hdExvY2FsZX06dm9pZCAwO3JldHVybiBBcnJheS5pc0FycmF5KG8pP2Ake2QuZm9ybWF0KG9bMF0sbCxTKX0ke3QubW9kZWxBdXRvJiYhb1sxXT9cIlwiOnIudmFsdWUudGV4dElucHV0T3B0aW9ucy5yYW5nZVNlcGFyYXRvcnx8XCItXCJ9JHtvWzFdP2QuZm9ybWF0KG9bMV0sbCxTKTpcIlwifWA6ZC5mb3JtYXQobyxsLFMpfSxCPW89PnQudGltZXpvbmU/QW4obyx0LnRpbWV6b25lKTpvLEU9bz0+dC50aW1lem9uZT9WbihvLHQudGltZXpvbmUpOm8sdj1lLmNvbXB1dGVkKCgpPT5vPT57dmFyIHM7cmV0dXJuKHM9dC5oaWRlTmF2aWdhdGlvbik9PW51bGw/dm9pZCAwOnMuaW5jbHVkZXMobyl9KSx4PW89Pnt2YXIgcyxsLFMsRjtyZXR1cm4gQXJyYXkuaXNBcnJheSh0LmFsbG93ZWREYXRlcykmJiEoKHM9dC5hbGxvd2VkRGF0ZXMpIT1udWxsJiZzLmxlbmd0aCk/ITA6KGw9dC5hcnJNYXBWYWx1ZXMpIT1udWxsJiZsLmFsbG93ZWREYXRlcz8hTyhvLHQuYXJyTWFwVmFsdWVzLmFsbG93ZWREYXRlcyk6KFM9dC5hbGxvd2VkRGF0ZXMpIT1udWxsJiZTLmxlbmd0aD8hKChGPXQuYWxsb3dlZERhdGVzKSE9bnVsbCYmRi5zb21lKHRlPT5zZShCKCQodGUpKSxCKG8pKSkpOiExfSxQPW89Pnt2YXIga2U7Y29uc3Qgcz10Lm1heERhdGU/YmUoQihvKSxCKCQodC5tYXhEYXRlKSkpOiExLGw9dC5taW5EYXRlP3dlKEIobyksQigkKHQubWluRGF0ZSkpKTohMSxTPU8obywoa2U9dC5hcnJNYXBWYWx1ZXMpIT1udWxsJiZrZS5kaXNhYmxlZERhdGVzP3QuYXJyTWFwVmFsdWVzLmRpc2FibGVkRGF0ZXM6dC5kaXNhYmxlZERhdGVzKSx0ZT1yLnZhbHVlLmZpbHRlcnMubW9udGhzLm1hcChtZT0+K21lKS5pbmNsdWRlcyhkLmdldE1vbnRoKG8pKSxwZT10LmRpc2FibGVkV2Vla0RheXMubGVuZ3RoP3QuZGlzYWJsZWRXZWVrRGF5cy5zb21lKG1lPT4rbWU9PT1kLmdldERheShvKSk6ITEseWU9eChvKSxaPWQuZ2V0WWVhcihvKSxDZT1aPCt0LnllYXJSYW5nZVswXXx8Wj4rdC55ZWFyUmFuZ2VbMV07cmV0dXJuIShzfHxsfHxTfHx0ZXx8Q2V8fHBlfHx5ZSl9LG09bz0+e2NvbnN0IHM9e2hvdXJzOmQuZ2V0SG91cnMoJCgpKSxtaW51dGVzOmQuZ2V0TWludXRlcygkKCkpLHNlY29uZHM6dC5lbmFibGVTZWNvbmRzP2QuZ2V0U2Vjb25kcygkKCkpOjB9O3JldHVybiBPYmplY3QuYXNzaWduKHMsbyl9LGs9KCk9PnQucmFuZ2U/dC5zdGFydFRpbWUmJkFycmF5LmlzQXJyYXkodC5zdGFydFRpbWUpP1ttKHQuc3RhcnRUaW1lWzBdKSxtKHQuc3RhcnRUaW1lWzFdKV06bnVsbDp0LnN0YXJ0VGltZSYmIUFycmF5LmlzQXJyYXkodC5zdGFydFRpbWUpP20odC5zdGFydFRpbWUpOm51bGwscT1vPT4hUChvKSxZPW89PkFycmF5LmlzQXJyYXkobyk/ZC5pc1ZhbGlkKG9bMF0pJiYob1sxXT9kLmlzVmFsaWQob1sxXSk6ITApOm8/ZC5pc1ZhbGlkKG8pOiExLEw9bz0+byBpbnN0YW5jZW9mIERhdGU/bzpkLnBhcnNlSVNPKG8pLFI9bz0+e2NvbnN0IHM9ZC5zdGFydE9mV2VlayhCKG8pLHt3ZWVrU3RhcnRzT246K3Qud2Vla1N0YXJ0fSksbD1kLmVuZE9mV2VlayhCKG8pLHt3ZWVrU3RhcnRzT246K3Qud2Vla1N0YXJ0fSk7cmV0dXJuW3MsbF19LE89KG8scyk9Pm8/cyBpbnN0YW5jZW9mIE1hcD8hIXMuZ2V0KGMobykpOkFycmF5LmlzQXJyYXkocyk/cy5zb21lKGw9PnNlKEIoJChsKSksQihvKSkpOnMoJChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKSkpOiEwLFE9KG8scyxsKT0+e2xldCBTPW8/JChvKTokKCk7cmV0dXJuKHN8fHM9PT0wKSYmKFM9ZC5zZXRNb250aChTLHMpKSxsJiYoUz1kLnNldFllYXIoUyxsKSksU30sZWU9bz0+ZC5zZXQoJCgpLHFlKG8pKSxfPW89PmQuc2V0KCQoKSx7aG91cnM6K28uaG91cnN8fDAsbWludXRlczorby5taW51dGVzfHwwLHNlY29uZHM6K28uc2Vjb25kc3x8MH0pLFU9KG8scyxsLFMpPT57aWYoIW8pcmV0dXJuITA7aWYoUyl7Y29uc3QgRj1sPT09XCJtYXhcIj9kLmlzQmVmb3JlKG8scyk6ZC5pc0FmdGVyKG8scyksdGU9e3NlY29uZHM6MCxtaWxsaXNlY29uZHM6MH07cmV0dXJuIEZ8fGQuaXNFcXVhbChkLnNldChvLHRlKSxkLnNldChzLHRlKSl9cmV0dXJuIGw9PT1cIm1heFwiP28uZ2V0VGltZSgpPD1zLmdldFRpbWUoKTpvLmdldFRpbWUoKT49cy5nZXRUaW1lKCl9LEc9KCk9PiF0LmVuYWJsZVRpbWVQaWNrZXJ8fHQubW9udGhQaWNrZXJ8fHQueWVhclBpY2tlcnx8dC5pZ25vcmVUaW1lVmFsaWRhdGlvbixKPW89PkFycmF5LmlzQXJyYXkobyk/W29bMF0/ZWUob1swXSk6bnVsbCxvWzFdP2VlKG9bMV0pOm51bGxdOmVlKG8pLHJlPW89Pntjb25zdCBzPXQubWF4VGltZT9fKHQubWF4VGltZSk6JCh0Lm1heERhdGUpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP1Uob1swXSxzLFwibWF4XCIsISF0Lm1heERhdGUpJiZVKG9bMV0scyxcIm1heFwiLCEhdC5tYXhEYXRlKTpVKG8scyxcIm1heFwiLCEhdC5tYXhEYXRlKX0sb2U9KG8scyk9Pntjb25zdCBsPXQubWluVGltZT9fKHQubWluVGltZSk6JCh0Lm1pbkRhdGUpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP1Uob1swXSxsLFwibWluXCIsISF0Lm1pbkRhdGUpJiZVKG9bMV0sbCxcIm1pblwiLCEhdC5taW5EYXRlKSYmczpVKG8sbCxcIm1pblwiLCEhdC5taW5EYXRlKSYmc30sVj1vPT57bGV0IHM9ITA7aWYoIW98fEcoKSlyZXR1cm4hMDtjb25zdCBsPSF0Lm1pbkRhdGUmJiF0Lm1heERhdGU/SihvKTpvO2lmKCh0Lm1heFRpbWV8fHQubWF4RGF0ZSkmJihzPXJlKGdlKGwpKSksKHQubWluVGltZXx8dC5taW5EYXRlKSYmKHM9b2UoZ2UobCkscykpLHQuZGlzYWJsZWRUaW1lcyl7Y29uc3QgUz1BcnJheS5pc0FycmF5KG8pP1txZShvWzBdKSxvWzFdP3FlKG9bMV0pOnZvaWQgMF06cWUobyk7cz0hdC5kaXNhYmxlZFRpbWVzKFMpfXJldHVybiBzfSxEPShvLHMpPT57Y29uc3QgbD0kKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKSxTPVtdO2ZvcihsZXQgRj0wO0Y8NztGKyspe2NvbnN0IHRlPWQuYWRkRGF5cyhsLEYpLHBlPWQuZ2V0TW9udGgodGUpIT09cztTLnB1c2goe3RleHQ6dC5oaWRlT2Zmc2V0RGF0ZXMmJnBlP1wiXCI6dGUuZ2V0RGF0ZSgpLHZhbHVlOnRlLGN1cnJlbnQ6IXBlLGNsYXNzRGF0YTp7fX0pfXJldHVybiBTfSx5PShvLHMpPT57c3dpdGNoKHQuc2l4V2Vla3M9PT0hMD9cImFwcGVuZFwiOnQuc2l4V2Vla3Mpe2Nhc2VcInByZXBlbmRcIjpyZXR1cm5bITAsITFdO2Nhc2VcImNlbnRlclwiOnJldHVybltvPT0wLCEwXTtjYXNlXCJmYWlyXCI6cmV0dXJuW289PTB8fHM+bywhMF07Y2FzZVwiYXBwZW5kXCI6cmV0dXJuWyExLCExXTtkZWZhdWx0OnJldHVyblshMSwhMV19fSxUPShvLHMpPT57Y29uc3QgbD1bXSxTPSQoQihuZXcgRGF0ZShzLG8pKSksRj0kKEIobmV3IERhdGUocyxvKzEsMCkpKSx0ZT10LndlZWtTdGFydCxwZT1kLnN0YXJ0T2ZXZWVrKFMse3dlZWtTdGFydHNPbjp0ZX0pLHllPVo9Pntjb25zdCBDZT1EKFosbyk7aWYobC5wdXNoKHtkYXlzOkNlfSksIWxbbC5sZW5ndGgtMV0uZGF5cy5zb21lKGtlPT5zZShTZShrZS52YWx1ZSksU2UoRikpKSl7Y29uc3Qga2U9ZC5hZGREYXlzKFosNyk7eWUoa2UpfX07aWYoeWUocGUpLHQuc2l4V2Vla3MmJmwubGVuZ3RoPDYpe2NvbnN0IFo9Ni1sLmxlbmd0aCxDZT0oUy5nZXREYXkoKSs3LXRlKSU3LG1lPTYtKEYuZ2V0RGF5KCkrNy10ZSklNyxbdmUsT2VdPXkoQ2UsbWUpO2ZvcihsZXQgVGU9MTtUZTw9WjtUZSsrKWlmKE9lPyEhKFRlJTIpPT12ZTp2ZSl7Y29uc3QgTmU9bFswXS5kYXlzWzBdLEs9RChkLmFkZERheXMoTmUudmFsdWUsLTcpLGQuZ2V0TW9udGgoUykpO2wudW5zaGlmdCh7ZGF5czpLfSl9ZWxzZXtjb25zdCBOZT1sW2wubGVuZ3RoLTFdLEs9TmUuZGF5c1tOZS5kYXlzLmxlbmd0aC0xXSxYPUQoZC5hZGREYXlzKEsudmFsdWUsMSksZC5nZXRNb250aChTKSk7bC5wdXNoKHtkYXlzOlh9KX19cmV0dXJuIGx9LEE9KG8scyxsKT0+W2Quc2V0KCQobykse2RhdGU6MX0pLGQuc2V0KCQoKSx7bW9udGg6cyx5ZWFyOmwsZGF0ZToxfSldLEk9KG8scyk9PndlKC4uLkEodC5taW5EYXRlLG8scykpfHxzZSguLi5BKHQubWluRGF0ZSxvLHMpKSxDPShvLHMpPT5iZSguLi5BKHQubWF4RGF0ZSxvLHMpKXx8c2UoLi4uQSh0Lm1heERhdGUsbyxzKSksaD0obyxzLGwpPT57bGV0IFM9ITE7cmV0dXJuIHQubWF4RGF0ZSYmbCYmQyhvLHMpJiYoUz0hMCksdC5taW5EYXRlJiYhbCYmSShvLHMpJiYoUz0hMCksU30sZj0obyxzLGwsUyk9PntsZXQgRj0hMTtyZXR1cm4gUz90Lm1pbkRhdGUmJnQubWF4RGF0ZT9GPWgobyxzLGwpOih0Lm1pbkRhdGUmJkkobyxzKXx8dC5tYXhEYXRlJiZDKG8scykpJiYoRj0hMCk6Rj0hMCxGfSxjPW89Pntjb25zdCBzPVNlKEIoJChvKSkpLnRvSVNPU3RyaW5nKCksW2xdPXMuc3BsaXQoXCJUXCIpO3JldHVybiBsfSxOPW89Pm5ldyBNYXAoby5tYXAocz0+W2MocyksITBdKSksTT1vPT5BcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aD4wO3JldHVybntjaGVja1BhcnRpYWxSYW5nZVZhbHVlOmEsY2hlY2tSYW5nZUVuYWJsZWQ6bixnZXRab25lZERhdGU6QixnZXRab25lZFRvVXRjOkUsZm9ybWF0RGF0ZTpnLGdldERlZmF1bHRQYXR0ZXJuOnAsdmFsaWRhdGVEYXRlOlAsZ2V0RGVmYXVsdFN0YXJ0VGltZTprLGlzRGlzYWJsZWQ6cSxpc1ZhbGlkRGF0ZTpZLHNhbml0aXplRGF0ZTpMLGdldFdlZWtGcm9tRGF0ZTpSLG1hdGNoRGF0ZTpPLHNldERhdGVNb250aE9yWWVhcjpRLGlzVmFsaWRUaW1lOlYsZ2V0Q2FsZW5kYXJEYXlzOlQsdmFsaWRhdGVNb250aFllYXJJblJhbmdlOmYsdmFsaWRhdGVNYXhEYXRlOkMsdmFsaWRhdGVNaW5EYXRlOkksYXNzaWduRGVmYXVsdFRpbWU6bSxtYXBEYXRlc0FyclRvTWFwOm89PntNKHQuYWxsb3dlZERhdGVzKSYmKG8uYWxsb3dlZERhdGVzPU4odC5hbGxvd2VkRGF0ZXMpKSxNKHQuaGlnaGxpZ2h0KSYmKG8uaGlnaGxpZ2h0ZWREYXRlcz1OKHQuaGlnaGxpZ2h0KSksTSh0LmRpc2FibGVkRGF0ZXMpJiYoby5kaXNhYmxlZERhdGVzPU4odC5kaXNhYmxlZERhdGVzKSl9LGRlZmF1bHRzOnIsaGlkZU5hdmlnYXRpb25CdXR0b25zOnZ9fSx1ZT1lLnJlYWN0aXZlKHttb250aFllYXI6W10sY2FsZW5kYXI6W10sdGltZTpbXSxhY3Rpb25Sb3c6W10sc2VsZWN0aW9uR3JpZDpbXSx0aW1lUGlja2VyOnswOltdLDE6W119LG1vbnRoUGlja2VyOltdfSksZ3Q9ZS5yZWYobnVsbCksWGU9ZS5yZWYoITEpLGh0PWUucmVmKCExKSxrdD1lLnJlZighMSksd3Q9ZS5yZWYoITEpLE1lPWUucmVmKDApLGhlPWUucmVmKDApLF9lPSgpPT57Y29uc3QgdD1lLmNvbXB1dGVkKCgpPT5YZS52YWx1ZT9bLi4udWUuc2VsZWN0aW9uR3JpZCx1ZS5hY3Rpb25Sb3ddLmZpbHRlcihSPT5SLmxlbmd0aCk6aHQudmFsdWU/Wy4uLnVlLnRpbWVQaWNrZXJbMF0sLi4udWUudGltZVBpY2tlclsxXSx3dC52YWx1ZT9bXTpbZ3QudmFsdWVdLHVlLmFjdGlvblJvd10uZmlsdGVyKFI9PlIubGVuZ3RoKTprdC52YWx1ZT9bLi4udWUubW9udGhQaWNrZXIsdWUuYWN0aW9uUm93XTpbdWUubW9udGhZZWFyLC4uLnVlLmNhbGVuZGFyLHVlLnRpbWUsdWUuYWN0aW9uUm93XS5maWx0ZXIoUj0+Ui5sZW5ndGgpKSxhPVI9PntNZS52YWx1ZT1SP01lLnZhbHVlKzE6TWUudmFsdWUtMTtsZXQgTz1udWxsO3QudmFsdWVbaGUudmFsdWVdJiYoTz10LnZhbHVlW2hlLnZhbHVlXVtNZS52YWx1ZV0pLE98fChNZS52YWx1ZT1SP01lLnZhbHVlLTE6TWUudmFsdWUrMSl9LHI9Uj0+e2lmKGhlLnZhbHVlPT09MCYmIVJ8fGhlLnZhbHVlPT09dC52YWx1ZS5sZW5ndGgmJlIpcmV0dXJuO2hlLnZhbHVlPVI/aGUudmFsdWUrMTpoZS52YWx1ZS0xLHQudmFsdWVbaGUudmFsdWVdP3QudmFsdWVbaGUudmFsdWVdJiYhdC52YWx1ZVtoZS52YWx1ZV1bTWUudmFsdWVdJiZNZS52YWx1ZSE9PTAmJihNZS52YWx1ZT10LnZhbHVlW2hlLnZhbHVlXS5sZW5ndGgtMSk6aGUudmFsdWU9Uj9oZS52YWx1ZS0xOmhlLnZhbHVlKzF9LG49Uj0+e2xldCBPPW51bGw7dC52YWx1ZVtoZS52YWx1ZV0mJihPPXQudmFsdWVbaGUudmFsdWVdW01lLnZhbHVlXSksTz9PLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiFYZS52YWx1ZX0pOk1lLnZhbHVlPVI/TWUudmFsdWUtMTpNZS52YWx1ZSsxfSx1PSgpPT57YSghMCksbighMCl9LHA9KCk9PnthKCExKSxuKCExKX0sZz0oKT0+e3IoITEpLG4oITApfSxCPSgpPT57cighMCksbighMCl9LEU9KFIsTyk9Pnt1ZVtPXT1SfSx2PShSLE8pPT57dWVbT109Un0seD0oKT0+e01lLnZhbHVlPTAsaGUudmFsdWU9MH07cmV0dXJue2J1aWxkTWF0cml4OkUsYnVpbGRNdWx0aUxldmVsTWF0cml4OnYsc2V0VGltZVBpY2tlckJhY2tSZWY6Uj0+e2d0LnZhbHVlPVJ9LHNldFNlbGVjdGlvbkdyaWQ6Uj0+e1hlLnZhbHVlPVIseCgpLFJ8fCh1ZS5zZWxlY3Rpb25HcmlkPVtdKX0sc2V0VGltZVBpY2tlcjooUixPPSExKT0+e2h0LnZhbHVlPVIsd3QudmFsdWU9Tyx4KCksUnx8KHVlLnRpbWVQaWNrZXJbMF09W10sdWUudGltZVBpY2tlclsxXT1bXSl9LHNldFRpbWVQaWNrZXJFbGVtZW50czooUixPPTApPT57dWUudGltZVBpY2tlcltPXT1SfSxhcnJvd1JpZ2h0OnUsYXJyb3dMZWZ0OnAsYXJyb3dVcDpnLGFycm93RG93bjpCLGNsZWFyQXJyb3dOYXY6KCk9Pnt1ZS5tb250aFllYXI9W10sdWUuY2FsZW5kYXI9W10sdWUudGltZT1bXSx1ZS5hY3Rpb25Sb3c9W10sdWUuc2VsZWN0aW9uR3JpZD1bXSx1ZS50aW1lUGlja2VyWzBdPVtdLHVlLnRpbWVQaWNrZXJbMV09W10sWGUudmFsdWU9ITEsaHQudmFsdWU9ITEsd3QudmFsdWU9ITEsa3QudmFsdWU9ITEseCgpLGd0LnZhbHVlPW51bGx9LHNldE1vbnRoUGlja2VyOlI9PntrdC52YWx1ZT1SLHgoKX0scmVmU2V0czp1ZX19LFF0PXQ9PkFycmF5LmlzQXJyYXkodCksUmU9dD0+QXJyYXkuaXNBcnJheSh0KSxGdD10PT5BcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD09PTIsWm49KHQsYSxyLG4sdSk9Pntjb25zdHtnZXREZWZhdWx0U3RhcnRUaW1lOnAsaXNEaXNhYmxlZDpnLHNhbml0aXplRGF0ZTpCLGdldFdlZWtGcm9tRGF0ZTpFLHNldERhdGVNb250aE9yWWVhcjp2LHZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTp4LGRlZmF1bHRzOlB9PSRlKHQpLG09ZS5jb21wdXRlZCh7Z2V0OigpPT50LmludGVybmFsTW9kZWxWYWx1ZSxzZXQ6aT0+eyF0LnJlYWRvbmx5JiYhdC5kaXNhYmxlZCYmYShcInVwZGF0ZTppbnRlcm5hbC1tb2RlbC12YWx1ZVwiLGkpfX0pLGs9ZS5yZWYoW10pO2Uud2F0Y2gobSwoaSxiKT0+e3QucmFuZ2U/RygpOmQuaXNFcXVhbChpLGIpfHxHKCl9KTtjb25zdCBxPWUudG9SZWYodCxcIm11bHRpQ2FsZW5kYXJzXCIpO2Uud2F0Y2gocSwoKT0+e0soMCl9KTtjb25zdCBZPWUucmVmKFt7bW9udGg6ZC5nZXRNb250aCgkKCkpLHllYXI6ZC5nZXRZZWFyKCQoKSl9XSk7ZS53YXRjaChZLCgpPT57WS52YWx1ZS5mb3JFYWNoKChpLGIpPT57YShcInVwZGF0ZS1tb250aC15ZWFyXCIse2luc3RhbmNlOmIsbW9udGg6aS5tb250aCx5ZWFyOmkueWVhcn0pfSl9LHtkZWVwOiEwfSk7Y29uc3QgTD1lLnJlYWN0aXZlKHtob3Vyczp0LnJhbmdlP1tkLmdldEhvdXJzKCQoKSksZC5nZXRIb3VycygkKCkpXTpkLmdldEhvdXJzKCQoKSksbWludXRlczp0LnJhbmdlP1tkLmdldE1pbnV0ZXMoJCgpKSxkLmdldE1pbnV0ZXMoJCgpKV06ZC5nZXRNaW51dGVzKCQoKSksc2Vjb25kczp0LnJhbmdlP1swLDBdOjB9KSxSPWUuY29tcHV0ZWQoKCk9Pmk9PlkudmFsdWVbaV0/WS52YWx1ZVtpXS5tb250aDowKSxPPWUuY29tcHV0ZWQoKCk9Pmk9PlkudmFsdWVbaV0/WS52YWx1ZVtpXS55ZWFyOjApLFE9ZS5jb21wdXRlZCgoKT0+e3ZhciBpO3JldHVybihpPXQuZmxvdykhPW51bGwmJmkubGVuZ3RoJiYhdC5wYXJ0aWFsRmxvdz91LnZhbHVlPT09dC5mbG93Lmxlbmd0aDohMH0pLGVlPShpLGIsaik9Pnt2YXIgbmUsZGU7WS52YWx1ZVtpXXx8KFkudmFsdWVbaV09e21vbnRoOjAseWVhcjowfSksWS52YWx1ZVtpXS5tb250aD1YdChiKT8obmU9WS52YWx1ZVtpXSk9PW51bGw/dm9pZCAwOm5lLm1vbnRoOmIsWS52YWx1ZVtpXS55ZWFyPVh0KGopPyhkZT1ZLnZhbHVlW2ldKT09bnVsbD92b2lkIDA6ZGUueWVhcjpqfSxfPShpLGIpPT57TFtpXT1ifSxVPSgpPT57dC5zdGFydERhdGUmJihlZSgwLGQuZ2V0TW9udGgoJCh0LnN0YXJ0RGF0ZSkpLGQuZ2V0WWVhcigkKHQuc3RhcnREYXRlKSkpLFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJksoMCkpfTtlLm9uTW91bnRlZCgoKT0+e20udmFsdWV8fChVKCksUC52YWx1ZS5zdGFydFRpbWUmJkMoKSksRyghMCksdC5mb2N1c1N0YXJ0RGF0ZSYmdC5zdGFydERhdGUmJlUoKX0pO2NvbnN0IEc9KGk9ITEpPT57aWYobS52YWx1ZSlyZXR1cm4gQXJyYXkuaXNBcnJheShtLnZhbHVlKT8oay52YWx1ZT1tLnZhbHVlLEQoaSkpOnJlKG0udmFsdWUsaSk7aWYodC50aW1lUGlja2VyKXJldHVybiB5KCk7aWYodC5tb250aFBpY2tlciYmIXQucmFuZ2UpcmV0dXJuIFQoKTtpZih0LnllYXJQaWNrZXImJiF0LnJhbmdlKXJldHVybiBBKCk7aWYoUC52YWx1ZS5tdWx0aUNhbGVuZGFycyYmaSYmIXQuc3RhcnREYXRlKXJldHVybiBKKCQoKSxpKX0sSj0oaSxiPSExKT0+e2lmKCghUC52YWx1ZS5tdWx0aUNhbGVuZGFyc3x8IXQubXVsdGlTdGF0aWN8fGIpJiZlZSgwLGQuZ2V0TW9udGgoaSksZC5nZXRZZWFyKGkpKSxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzKWZvcihsZXQgaj0xO2o8UC52YWx1ZS5tdWx0aUNhbGVuZGFycztqKyspe2NvbnN0IG5lPWQuc2V0KCQoKSx7bW9udGg6Ui52YWx1ZShqLTEpLHllYXI6Ty52YWx1ZShqLTEpfSksZGU9ZC5hZGQobmUse21vbnRoczoxfSk7WS52YWx1ZVtqXT17bW9udGg6ZC5nZXRNb250aChkZSkseWVhcjpkLmdldFllYXIoZGUpfX19LHJlPShpLGIpPT57SihpKSxfKFwiaG91cnNcIixkLmdldEhvdXJzKGkpKSxfKFwibWludXRlc1wiLGQuZ2V0TWludXRlcyhpKSksXyhcInNlY29uZHNcIixkLmdldFNlY29uZHMoaSkpLFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJmImJmYoKX0sb2U9KGksYik9PntpWzFdJiZ0LnNob3dMYXN0SW5SYW5nZT9KKGlbMV0sYik6SihpWzBdLGIpO2NvbnN0IGo9KG5lLGRlKT0+W25lKGlbMF0pLGlbMV0/bmUoaVsxXSk6TFtkZV1bMV1dO18oXCJob3Vyc1wiLGooZC5nZXRIb3VycyxcImhvdXJzXCIpKSxfKFwibWludXRlc1wiLGooZC5nZXRNaW51dGVzLFwibWludXRlc1wiKSksXyhcInNlY29uZHNcIixqKGQuZ2V0U2Vjb25kcyxcInNlY29uZHNcIikpfSxWPShpLGIpPT57aWYoKHQucmFuZ2V8fHQud2Vla1BpY2tlcikmJiF0Lm11bHRpRGF0ZXMpcmV0dXJuIG9lKGksYik7aWYodC5tdWx0aURhdGVzKXtjb25zdCBqPWlbaS5sZW5ndGgtMV07cmV0dXJuIHJlKGosYil9fSxEPWk9Pntjb25zdCBiPW0udmFsdWU7VihiLGkpLFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJnQubXVsdGlDYWxlbmRhcnNTb2xvJiZmKCl9LHk9KCk9PntpZihDKCksIXQucmFuZ2UpbS52YWx1ZT1CZSgkKCksTC5ob3VycyxMLm1pbnV0ZXMsSSgpKTtlbHNle2NvbnN0IGk9TC5ob3VycyxiPUwubWludXRlczttLnZhbHVlPVtCZSgkKCksaVswXSxiWzBdLEkoKSksQmUoJCgpLGlbMV0sYlsxXSxJKCExKSldfX0sVD0oKT0+e3QubXVsdGlEYXRlcz9tLnZhbHVlPVt2KCQoKSxSLnZhbHVlKDApLE8udmFsdWUoMCkpXTptLnZhbHVlPXYoJCgpLFIudmFsdWUoMCksTy52YWx1ZSgwKSl9LEE9KCk9PnttLnZhbHVlPSQoKX0sST0oaT0hMCk9PnQuZW5hYmxlU2Vjb25kcz9BcnJheS5pc0FycmF5KEwuc2Vjb25kcyk/aT9MLnNlY29uZHNbMF06TC5zZWNvbmRzWzFdOkwuc2Vjb25kczowLEM9KCk9Pntjb25zdCBpPXAoKTtpZihpKXtjb25zdCBiPUFycmF5LmlzQXJyYXkoaSksaj1iP1sraVswXS5ob3VycywraVsxXS5ob3Vyc106K2kuaG91cnMsbmU9Yj9bK2lbMF0ubWludXRlcywraVsxXS5taW51dGVzXToraS5taW51dGVzLGRlPWI/WytpWzBdLnNlY29uZHMsK2lbMV0uc2Vjb25kc106K2kuc2Vjb25kcztfKFwiaG91cnNcIixqKSxfKFwibWludXRlc1wiLG5lKSx0LmVuYWJsZVNlY29uZHMmJl8oXCJzZWNvbmRzXCIsZGUpfX0saD0oKT0+QXJyYXkuaXNBcnJheShtLnZhbHVlKSYmbS52YWx1ZS5sZW5ndGg/bS52YWx1ZVttLnZhbHVlLmxlbmd0aC0xXTpudWxsLGY9KCk9PntpZihBcnJheS5pc0FycmF5KG0udmFsdWUpJiZtLnZhbHVlLmxlbmd0aD09PTIpe2NvbnN0IGk9JCgkKG0udmFsdWVbMV0/bS52YWx1ZVsxXTpkLmFkZE1vbnRocyhtLnZhbHVlWzBdLDEpKSksW2Isal09W2QuZ2V0TW9udGgobS52YWx1ZVswXSksZC5nZXRZZWFyKG0udmFsdWVbMF0pXSxbbmUsZGVdPVtkLmdldE1vbnRoKG0udmFsdWVbMV0pLGQuZ2V0WWVhcihtLnZhbHVlWzFdKV07KGIhPT1uZXx8Yj09PW5lJiZqIT09ZGUpJiZ0Lm11bHRpQ2FsZW5kYXJzU29sbyYmZWUoMSxkLmdldE1vbnRoKGkpLGQuZ2V0WWVhcihpKSl9ZWxzZSBtLnZhbHVlJiYhQXJyYXkuaXNBcnJheShtLnZhbHVlKSYmZWUoMCxkLmdldE1vbnRoKG0udmFsdWUpLGQuZ2V0WWVhcihtLnZhbHVlKSl9LGM9aT0+e2NvbnN0IGI9ZC5hZGRNb250aHMoaSwxKTtyZXR1cm57bW9udGg6ZC5nZXRNb250aChiKSx5ZWFyOmQuZ2V0WWVhcihiKX19LE49aT0+e2NvbnN0IGI9ZC5nZXRNb250aCgkKGkpKSxqPWQuZ2V0WWVhcigkKGkpKTtpZihlZSgwLGIsaiksUC52YWx1ZS5tdWx0aUNhbGVuZGFycz4wKWZvcihsZXQgbmU9MTtuZTxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzO25lKyspe2NvbnN0IGRlPWMoZC5zZXQoJChpKSx7eWVhcjpSLnZhbHVlKG5lLTEpLG1vbnRoOk8udmFsdWUobmUtMSl9KSk7ZWUobmUsZGUubW9udGgsZGUueWVhcil9fSxNPWk9PntpZihtLnZhbHVlJiZBcnJheS5pc0FycmF5KG0udmFsdWUpKWlmKG0udmFsdWUuc29tZShiPT5zZShpLGIpKSl7Y29uc3QgYj1tLnZhbHVlLmZpbHRlcihqPT4hc2UoaixpKSk7bS52YWx1ZT1iLmxlbmd0aD9iOm51bGx9ZWxzZSh0Lm11bHRpRGF0ZXNMaW1pdCYmK3QubXVsdGlEYXRlc0xpbWl0Pm0udmFsdWUubGVuZ3RofHwhdC5tdWx0aURhdGVzTGltaXQpJiZtLnZhbHVlLnB1c2goaSk7ZWxzZSBtLnZhbHVlPVtpXX0sVz0oaSxiKT0+e2NvbnN0IGo9YmUoaSxiKT9iOmksbmU9YmUoYixpKT9iOmk7cmV0dXJuIGQuZWFjaERheU9mSW50ZXJ2YWwoe3N0YXJ0OmosZW5kOm5lfSl9LG89KGksYj0wKT0+e2lmKEFycmF5LmlzQXJyYXkobS52YWx1ZSkmJm0udmFsdWVbYl0pe2NvbnN0IGo9ZC5kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoaSxtLnZhbHVlW2JdKSxuZT1XKG0udmFsdWVbYl0saSksZGU9bmUubGVuZ3RoPT09MT8wOm5lLmZpbHRlcih3PT5nKHcpKS5sZW5ndGgsQWU9TWF0aC5hYnMoaiktZGU7aWYodC5taW5SYW5nZSYmdC5tYXhSYW5nZSlyZXR1cm4gQWU+PSt0Lm1pblJhbmdlJiZBZTw9K3QubWF4UmFuZ2U7aWYodC5taW5SYW5nZSlyZXR1cm4gQWU+PSt0Lm1pblJhbmdlO2lmKHQubWF4UmFuZ2UpcmV0dXJuIEFlPD0rdC5tYXhSYW5nZX1yZXR1cm4hMH0scz1pPT5BcnJheS5pc0FycmF5KG0udmFsdWUpJiZtLnZhbHVlLmxlbmd0aD09PTI/dC5maXhlZFN0YXJ0JiYoYmUoaSxtLnZhbHVlWzBdKXx8c2UoaSxtLnZhbHVlWzBdKSk/W20udmFsdWVbMF0saV06dC5maXhlZEVuZCYmKHdlKGksbS52YWx1ZVsxXSl8fHNlKGksbS52YWx1ZVsxXSkpP1tpLG0udmFsdWVbMV1dOihhKFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLGkpLG0udmFsdWUpOltdLGw9KCk9Pnt0LmF1dG9BcHBseSYmUS52YWx1ZSYmYShcImF1dG8tYXBwbHlcIix0LnBhcnRpYWxGbG93KX0sUz0oKT0+e3QuYXV0b0FwcGx5JiZhKFwic2VsZWN0LWRhdGVcIil9LEY9aT0+IWQuZWFjaERheU9mSW50ZXJ2YWwoe3N0YXJ0OmlbMF0sZW5kOmlbMV19KS5zb21lKGo9PmcoaikpLHRlPWk9PihtLnZhbHVlPUUoJChpLnZhbHVlKSksbCgpKSxwZT1pPT57Y29uc3QgYj1CZSgkKGkudmFsdWUpLEwuaG91cnMsTC5taW51dGVzLEkoKSk7dC5tdWx0aURhdGVzP00oYik6bS52YWx1ZT1iLHIoKSxsKCl9LHllPSgpPT57ay52YWx1ZT1tLnZhbHVlP20udmFsdWUuc2xpY2UoKTpbXSxrLnZhbHVlLmxlbmd0aD09PTImJiEodC5maXhlZFN0YXJ0fHx0LmZpeGVkRW5kKSYmKGsudmFsdWU9W10pfSxaPShpLGIpPT57Y29uc3Qgaj1bJChpLnZhbHVlKSxkLmFkZERheXMoJChpLnZhbHVlKSwrdC5hdXRvUmFuZ2UpXTtGKGopJiYoYiYmTihpLnZhbHVlKSxrLnZhbHVlPWopfSxDZT1pPT57a2UoaS52YWx1ZSl8fCFvKGkudmFsdWUsdC5maXhlZFN0YXJ0PzA6MSl8fChrLnZhbHVlPXMoJChpLnZhbHVlKSkpfSxrZT1pPT50Lm5vRGlzYWJsZWRSYW5nZT9XKGsudmFsdWVbMF0saSkuc29tZShqPT5nKGopKTohMSxtZT0oaSxiKT0+e2lmKHllKCksdC5hdXRvUmFuZ2UpcmV0dXJuIFooaSxiKTtpZih0LmZpeGVkU3RhcnR8fHQuZml4ZWRFbmQpcmV0dXJuIENlKGkpO2sudmFsdWVbMF0/bygkKGkudmFsdWUpKSYmIWtlKGkudmFsdWUpJiYod2UoJChpLnZhbHVlKSwkKGsudmFsdWVbMF0pKT8oay52YWx1ZS51bnNoaWZ0KCQoaS52YWx1ZSkpLGEoXCJyYW5nZS1lbmRcIixrLnZhbHVlWzBdKSk6KGsudmFsdWVbMV09JChpLnZhbHVlKSxhKFwicmFuZ2UtZW5kXCIsay52YWx1ZVsxXSkpKTooay52YWx1ZVswXT0kKGkudmFsdWUpLGEoXCJyYW5nZS1zdGFydFwiLGsudmFsdWVbMF0pKX0sdmU9aT0+e2sudmFsdWVbaV09QmUoay52YWx1ZVtpXSxMLmhvdXJzW2ldLEwubWludXRlc1tpXSxJKGkhPT0xKSl9LE9lPSgpPT57dmFyIGksYjtrLnZhbHVlWzBdJiZrLnZhbHVlWzFdJiYrKChpPWsudmFsdWUpPT1udWxsP3ZvaWQgMDppWzBdKT4rKChiPWsudmFsdWUpPT1udWxsP3ZvaWQgMDpiWzFdKSYmKGsudmFsdWUucmV2ZXJzZSgpLGEoXCJyYW5nZS1zdGFydFwiLGsudmFsdWVbMF0pLGEoXCJyYW5nZS1lbmRcIixrLnZhbHVlWzFdKSl9LFRlPSgpPT57ay52YWx1ZS5sZW5ndGgmJihrLnZhbHVlWzBdJiYhay52YWx1ZVsxXT92ZSgwKToodmUoMCksdmUoMSkscigpKSxPZSgpLG0udmFsdWU9ay52YWx1ZS5zbGljZSgpLGsudmFsdWVbMF0mJmsudmFsdWVbMV0mJnQuYXV0b0FwcGx5JiZhKFwiYXV0by1hcHBseVwiKSxrLnZhbHVlWzBdJiYhay52YWx1ZVsxXSYmdC5tb2RlbEF1dG8mJnQuYXV0b0FwcGx5JiZhKFwiYXV0by1hcHBseVwiKSl9LExlPShpLGI9ITEpPT57aWYoIShnKGkudmFsdWUpfHwhaS5jdXJyZW50JiZ0LmhpZGVPZmZzZXREYXRlcykpe2lmKHQud2Vla1BpY2tlcilyZXR1cm4gdGUoaSk7aWYoIXQucmFuZ2UpcmV0dXJuIHBlKGkpO1JlKEwuaG91cnMpJiZSZShMLm1pbnV0ZXMpJiYhdC5tdWx0aURhdGVzJiYobWUoaSxiKSxUZSgpKX19LE5lPWk9Pntjb25zdCBiPWlbMF07cmV0dXJuIHQud2Vla051bWJlcnM9PT1cImxvY2FsXCI/ZC5nZXRXZWVrKGIudmFsdWUse3dlZWtTdGFydHNPbjordC53ZWVrU3RhcnR9KTp0LndlZWtOdW1iZXJzPT09XCJpc29cIj9kLmdldElTT1dlZWsoYi52YWx1ZSk6dHlwZW9mIHQud2Vla051bWJlcnM9PVwiZnVuY3Rpb25cIj90LndlZWtOdW1iZXJzKGIudmFsdWUpOlwiXCJ9LEs9aT0+e2ZvcihsZXQgYj1pLTE7Yj49MDtiLS0pe2NvbnN0IGo9ZC5zdWJNb250aHMoZC5zZXQoJCgpLHttb250aDpSLnZhbHVlKGIrMSkseWVhcjpPLnZhbHVlKGIrMSl9KSwxKTtlZShiLGQuZ2V0TW9udGgoaiksZC5nZXRZZWFyKGopKX1mb3IobGV0IGI9aSsxO2I8PVAudmFsdWUubXVsdGlDYWxlbmRhcnMtMTtiKyspe2NvbnN0IGo9ZC5hZGRNb250aHMoZC5zZXQoJCgpLHttb250aDpSLnZhbHVlKGItMSkseWVhcjpPLnZhbHVlKGItMSl9KSwxKTtlZShiLGQuZ2V0TW9udGgoaiksZC5nZXRZZWFyKGopKX19LFg9aT0+digkKCksUi52YWx1ZShpKSxPLnZhbHVlKGkpKSxhZT1pPT5CZShpLEwuaG91cnMsTC5taW51dGVzLEkoKSksSGU9aT0+e00oWChpKSl9LFllPShpLGIpPT57Y29uc3Qgaj10Lm1vbnRoUGlja2VyP1IudmFsdWUoaSkhPT1iLm1vbnRofHwhYi5mcm9tTmF2Ok8udmFsdWUoaSkhPT1iLnllYXJ8fCFiLmZyb21OYXY7aWYoZWUoaSxiLm1vbnRoLGIueWVhciksUC52YWx1ZS5tdWx0aUNhbGVuZGFycyYmIXQubXVsdGlDYWxlbmRhcnNTb2xvJiZLKGkpLHQubW9udGhQaWNrZXJ8fHQueWVhclBpY2tlcilpZih0Lm11bHRpRGF0ZXMpaiYmSGUoaSk7ZWxzZSBpZih0LnJhbmdlKXtpZihqJiZvKFgoaSkpKXtsZXQgbmU9bS52YWx1ZT9tLnZhbHVlLnNsaWNlKCk6W107bmUubGVuZ3RoPT09MiYmbmVbMV0hPT1udWxsJiYobmU9W10pLG5lLmxlbmd0aD93ZShYKGkpLG5lWzBdKT9uZS51bnNoaWZ0KFgoaSkpOm5lWzFdPVgoaSk6bmU9W1goaSldLG0udmFsdWU9bmV9fWVsc2UodC5hdXRvQXBwbHlNb250aHx8aikmJihtLnZhbHVlPVgoaSkpO24odC5tdWx0aUNhbGVuZGFyc1NvbG8/aTp2b2lkIDApfSxDdD1hc3luYyhpPSExKT0+e2lmKHQuYXV0b0FwcGx5JiYodC5tb250aFBpY2tlcnx8dC55ZWFyUGlja2VyKSl7YXdhaXQgZS5uZXh0VGljaygpO2NvbnN0IGI9dC5tb250aFBpY2tlcj9pOiExO3QucmFuZ2U/YShcImF1dG8tYXBwbHlcIixifHwhbS52YWx1ZXx8bS52YWx1ZS5sZW5ndGg9PT0xKTphKFwiYXV0by1hcHBseVwiLGIpfXIoKX0sRmU9KGksYik9Pntjb25zdCBqPWQuc2V0KCQoKSx7bW9udGg6Ui52YWx1ZShiKSx5ZWFyOk8udmFsdWUoYil9KSxuZT1pPDA/ZC5hZGRNb250aHMoaiwxKTpkLnN1Yk1vbnRocyhqLDEpO3goZC5nZXRNb250aChuZSksZC5nZXRZZWFyKG5lKSxpPDAsdC5wcmV2ZW50TWluTWF4TmF2aWdhdGlvbikmJihlZShiLGQuZ2V0TW9udGgobmUpLGQuZ2V0WWVhcihuZSkpLFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJiF0Lm11bHRpQ2FsZW5kYXJzU29sbyYmSyhiKSxuKCkpfSxqZT1pPT57UXQoaSkmJlF0KG0udmFsdWUpJiZSZShMLmhvdXJzKSYmUmUoTC5taW51dGVzKT8oaVswXSYmbS52YWx1ZVswXSYmKG0udmFsdWVbMF09QmUoaVswXSxMLmhvdXJzWzBdLEwubWludXRlc1swXSxJKCkpKSxpWzFdJiZtLnZhbHVlWzFdJiYobS52YWx1ZVsxXT1CZShpWzFdLEwuaG91cnNbMV0sTC5taW51dGVzWzFdLEkoITEpKSkpOnQubXVsdGlEYXRlcyYmQXJyYXkuaXNBcnJheShtLnZhbHVlKT9tLnZhbHVlW20udmFsdWUubGVuZ3RoLTFdPWFlKGkpOiF0LnJhbmdlJiYhRnQoaSkmJihtLnZhbHVlPWFlKGkpKSxhKFwidGltZS11cGRhdGVcIil9LCR0PShpLGI9ITAsaj0hMSk9Pntjb25zdCBuZT1iP2k6TC5ob3VycyxkZT0hYiYmIWo/aTpMLm1pbnV0ZXMsQWU9aj9pOkwuc2Vjb25kcztpZih0LnJhbmdlJiZGdChtLnZhbHVlKSYmUmUobmUpJiZSZShkZSkmJlJlKEFlKSYmIXQuZGlzYWJsZVRpbWVSYW5nZVZhbGlkYXRpb24pe2NvbnN0IHc9aWU9PkJlKG0udmFsdWVbaWVdLG5lW2llXSxkZVtpZV0sQWVbaWVdKSx6PWllPT5kLnNldE1pbGxpc2Vjb25kcyhtLnZhbHVlW2llXSwwKTtpZihzZShtLnZhbHVlWzBdLG0udmFsdWVbMV0pJiYoZC5pc0FmdGVyKHcoMCkseigxKSl8fGQuaXNCZWZvcmUodygxKSx6KDApKSkpcmV0dXJufWlmKF8oXCJob3Vyc1wiLG5lKSxfKFwibWludXRlc1wiLGRlKSxfKFwic2Vjb25kc1wiLEFlKSxtLnZhbHVlKWlmKHQubXVsdGlEYXRlcyl7Y29uc3Qgdz1oKCk7dyYmamUodyl9ZWxzZSBqZShtLnZhbHVlKTtlbHNlIHQudGltZVBpY2tlciYmamUodC5yYW5nZT9bJCgpLCQoKV06JCgpKTtyKCl9LFN0PShpLGIpPT57dC5tb250aENoYW5nZU9uU2Nyb2xsJiZGZSh0Lm1vbnRoQ2hhbmdlT25TY3JvbGwhPT1cImludmVyc2VcIj8taS5kZWx0YVk6aS5kZWx0YVksYil9LEJ0PShpLGIsaj0hMSk9Pnt0Lm1vbnRoQ2hhbmdlT25BcnJvd3MmJnQudmVydGljYWw9PT1qJiZldChpLGIpfSxldD0oaSxiKT0+e0ZlKGk9PT1cInJpZ2h0XCI/LTE6MSxiKX07cmV0dXJue3RpbWU6TCxtb250aDpSLHllYXI6Tyxtb2RlbFZhbHVlOm0sY2FsZW5kYXJzOlksbW9udGhZZWFyU2VsZWN0OkN0LGlzRGlzYWJsZWQ6Zyx1cGRhdGVUaW1lOiR0LGdldFdlZWtOdW06TmUsc2VsZWN0RGF0ZTpMZSx1cGRhdGVNb250aFllYXI6WWUsaGFuZGxlU2Nyb2xsOlN0LGdldE1hcmtlcjppPT50Lm1hcmtlcnMuZmluZChiPT5zZShCKGkudmFsdWUpLEIoYi5kYXRlKSkpLGhhbmRsZUFycm93OkJ0LGhhbmRsZVN3aXBlOmV0LHNlbGVjdEN1cnJlbnREYXRlOigpPT57dC5yYW5nZT9tLnZhbHVlJiZBcnJheS5pc0FycmF5KG0udmFsdWUpJiZtLnZhbHVlWzBdP20udmFsdWU9d2UoJCgpLG0udmFsdWVbMF0pP1skKCksbS52YWx1ZVswXV06W20udmFsdWVbMF0sJCgpXTptLnZhbHVlPVskKCldOm0udmFsdWU9JCgpLFMoKX0scHJlc2V0RGF0ZVJhbmdlOihpLGIpPT57Ynx8aS5sZW5ndGgmJmkubGVuZ3RoPD0yJiZ0LnJhbmdlJiYobS52YWx1ZT1pLm1hcChqPT4kKGopKSxTKCksdC5tdWx0aUNhbGVuZGFycyYmZS5uZXh0VGljaygpLnRoZW4oKCk9PkcoITApKSl9fX0sWG49KHQsYSxyKT0+e2NvbnN0IG49ZS5yZWYoKSx7Z2V0Wm9uZWRUb1V0Yzp1LGdldFpvbmVkRGF0ZTpwLGZvcm1hdERhdGU6ZyxnZXREZWZhdWx0UGF0dGVybjpCLGNoZWNrUmFuZ2VFbmFibGVkOkUsY2hlY2tQYXJ0aWFsUmFuZ2VWYWx1ZTp2LGlzVmFsaWREYXRlOngsc2V0RGF0ZU1vbnRoT3JZZWFyOlAsZGVmYXVsdHM6bX09JGUoYSksaz1lLnJlZihcIlwiKSxxPWUudG9SZWYoYSxcImZvcm1hdFwiKTtlLndhdGNoKG4sKCk9Pnt0KFwiaW50ZXJuYWwtbW9kZWwtY2hhbmdlXCIsbi52YWx1ZSl9KSxlLndhdGNoKHEsKCk9PntoKCl9KTtjb25zdCBZPWw9Pntjb25zdCBTPWx8fCQoKTtyZXR1cm4gYS5tb2RlbFR5cGU/YyhTKTp7aG91cnM6ZC5nZXRIb3VycyhTKSxtaW51dGVzOmQuZ2V0TWludXRlcyhTKSxzZWNvbmRzOmEuZW5hYmxlU2Vjb25kcz9kLmdldFNlY29uZHMoUyk6MH19LEw9bD0+YS5tb2RlbFR5cGU/YyhsKTp7bW9udGg6ZC5nZXRNb250aChsKSx5ZWFyOmQuZ2V0WWVhcihsKX0sUj1sPT5BcnJheS5pc0FycmF5KGwpP0UoKCk9PltkLnNldFllYXIoJCgpLGxbMF0pLGxbMV0/ZC5zZXRZZWFyKCQoKSxsWzFdKTp2KCldKTpkLnNldFllYXIoJCgpLCtsKSxPPShsLFMpPT4odHlwZW9mIGw9PVwic3RyaW5nXCJ8fHR5cGVvZiBsPT1cIm51bWJlclwiKSYmYS5tb2RlbFR5cGU/ZihsKTpTLFE9bD0+QXJyYXkuaXNBcnJheShsKT9bTyhsWzBdLEJlKG51bGwsK2xbMF0uaG91cnMsK2xbMF0ubWludXRlcyxsWzBdLnNlY29uZHMpKSxPKGxbMV0sQmUobnVsbCwrbFsxXS5ob3VycywrbFsxXS5taW51dGVzLGxbMV0uc2Vjb25kcykpXTpPKGwsQmUobnVsbCxsLmhvdXJzLGwubWludXRlcyxsLnNlY29uZHMpKSxlZT1sPT5BcnJheS5pc0FycmF5KGwpP2EubXVsdGlEYXRlcz9sLm1hcChTPT5PKFMsUChudWxsLCtTLm1vbnRoLCtTLnllYXIpKSk6RSgoKT0+W08obFswXSxQKG51bGwsK2xbMF0ubW9udGgsK2xbMF0ueWVhcikpLE8obFsxXSxsWzFdP1AobnVsbCwrbFsxXS5tb250aCwrbFsxXS55ZWFyKTp2KCkpXSk6TyhsLFAobnVsbCwrbC5tb250aCwrbC55ZWFyKSksXz1sPT57aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbC5tYXAoUz0+ZihTKSk7dGhyb3cgbmV3IEVycm9yKFplLmRhdGVBcnIoXCJtdWx0aS1kYXRlc1wiKSl9LFU9bD0+e2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuWyQobFswXSksJChsWzFdKV07dGhyb3cgbmV3IEVycm9yKFplLmRhdGVBcnIoXCJ3ZWVrLXBpY2tlclwiKSl9LEc9bD0+YS5tb2RlbEF1dG8/QXJyYXkuaXNBcnJheShsKT9bZihsWzBdKSxmKGxbMV0pXTphLmF1dG9BcHBseT9bZihsKV06W2YobCksbnVsbF06QXJyYXkuaXNBcnJheShsKT9FKCgpPT5bZihsWzBdKSxsWzFdP2YobFsxXSk6digpXSk6ZihsKSxKPSgpPT57QXJyYXkuaXNBcnJheShuLnZhbHVlKSYmYS5yYW5nZSYmbi52YWx1ZS5sZW5ndGg9PT0xJiZuLnZhbHVlLnB1c2godigpKX0scmU9KCk9Pntjb25zdCBsPW4udmFsdWU7cmV0dXJuW2MobFswXSksbFsxXT9jKGxbMV0pOnYoKV19LG9lPSgpPT5uLnZhbHVlWzFdP3JlKCk6YyhnZShuLnZhbHVlWzBdKSksVj0oKT0+KG4udmFsdWV8fFtdKS5tYXAobD0+YyhsKSksRD0oKT0+KEooKSxhLm1vZGVsQXV0bz9vZSgpOmEubXVsdGlEYXRlcz9WKCk6QXJyYXkuaXNBcnJheShuLnZhbHVlKT9FKCgpPT5yZSgpKTpjKGdlKG4udmFsdWUpKSkseT1sPT5sP2EudGltZVBpY2tlcj9RKGdlKGwpKTphLm1vbnRoUGlja2VyP2VlKGdlKGwpKTphLnllYXJQaWNrZXI/UihnZShsKSk6YS5tdWx0aURhdGVzP18oZ2UobCkpOmEud2Vla1BpY2tlcj9VKGdlKGwpKTpHKGdlKGwpKTpudWxsLFQ9bD0+e2NvbnN0IFM9eShsKTt4KGdlKFMpKT8obi52YWx1ZT1nZShTKSxoKCkpOihuLnZhbHVlPW51bGwsay52YWx1ZT1cIlwiKX0sQT0oKT0+e3ZhciBTO2NvbnN0IGw9Rj0+e3ZhciB0ZTtyZXR1cm4gZC5mb3JtYXQoRiwodGU9bS52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKT09bnVsbD92b2lkIDA6dGUuZm9ybWF0KX07cmV0dXJuYCR7bChuLnZhbHVlWzBdKX0gJHsoUz1tLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpTLnJhbmdlU2VwYXJhdG9yfSAke24udmFsdWVbMV0/bChuLnZhbHVlWzFdKTpcIlwifWB9LEk9KCk9Pnt2YXIgbDtyZXR1cm4gci52YWx1ZSYmbi52YWx1ZT9BcnJheS5pc0FycmF5KG4udmFsdWUpP0EoKTpkLmZvcm1hdChuLnZhbHVlLChsPW0udmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOmwuZm9ybWF0KTpnKG4udmFsdWUpfSxDPSgpPT57dmFyIGw7cmV0dXJuIG4udmFsdWU/YS5tdWx0aURhdGVzP24udmFsdWUubWFwKFM9PmcoUykpLmpvaW4oXCI7IFwiKTphLnRleHRJbnB1dCYmdHlwZW9mKChsPW0udmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOmwuZm9ybWF0KT09XCJzdHJpbmdcIj9JKCk6ZyhuLnZhbHVlKTpcIlwifSxoPSgpPT57IWEuZm9ybWF0fHx0eXBlb2YgYS5mb3JtYXQ9PVwic3RyaW5nXCJ8fGEudGV4dElucHV0JiZ0eXBlb2YgYS50ZXh0SW5wdXRPcHRpb25zLmZvcm1hdD09XCJzdHJpbmdcIj9rLnZhbHVlPUMoKTprLnZhbHVlPWEuZm9ybWF0KG4udmFsdWUpfSxmPWw9PntpZihhLnV0Yyl7Y29uc3QgUz1uZXcgRGF0ZShsKTtyZXR1cm4gYS51dGM9PT1cInByZXNlcnZlXCI/bmV3IERhdGUoUy5nZXRUaW1lKCkrUy5nZXRUaW1lem9uZU9mZnNldCgpKjZlNCk6U31yZXR1cm4gYS5tb2RlbFR5cGU/YS5tb2RlbFR5cGU9PT1cImRhdGVcInx8YS5tb2RlbFR5cGU9PT1cInRpbWVzdGFtcFwiP3AobmV3IERhdGUobCkpOmEubW9kZWxUeXBlPT09XCJmb3JtYXRcIiYmKHR5cGVvZiBhLmZvcm1hdD09XCJzdHJpbmdcInx8IWEuZm9ybWF0KT9kLnBhcnNlKGwsQigpLG5ldyBEYXRlKTpwKGQucGFyc2UobCxhLm1vZGVsVHlwZSxuZXcgRGF0ZSkpOnAobmV3IERhdGUobCkpfSxjPWw9Pmw/YS51dGM/cm4obCxhLnV0Yz09PVwicHJlc2VydmVcIixhLmVuYWJsZVNlY29uZHMpOmEubW9kZWxUeXBlP2EubW9kZWxUeXBlPT09XCJ0aW1lc3RhbXBcIj8rdShsKTphLm1vZGVsVHlwZT09PVwiZm9ybWF0XCImJih0eXBlb2YgYS5mb3JtYXQ9PVwic3RyaW5nXCJ8fCFhLmZvcm1hdCk/Zyh1KGwpKTpnKHUobCksYS5tb2RlbFR5cGUpOnUobCk6XCJcIixOPWw9Pnt0KFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsbCl9LE09bD0+QXJyYXkuaXNBcnJheShuLnZhbHVlKT9hLm11bHRpRGF0ZXM/bi52YWx1ZS5tYXAoUz0+bChTKSk6W2wobi52YWx1ZVswXSksbi52YWx1ZVsxXT9sKG4udmFsdWVbMV0pOnYoKV06bChnZShuLnZhbHVlKSksVz1sPT5OKGdlKE0obCkpKTtyZXR1cm57aW5wdXRWYWx1ZTprLGludGVybmFsTW9kZWxWYWx1ZTpuLGNoZWNrQmVmb3JlRW1pdDooKT0+bi52YWx1ZT9hLnJhbmdlP2EucGFydGlhbFJhbmdlP24udmFsdWUubGVuZ3RoPj0xOm4udmFsdWUubGVuZ3RoPT09MjohIW4udmFsdWU6ITEscGFyc2VFeHRlcm5hbE1vZGVsVmFsdWU6VCxmb3JtYXRJbnB1dFZhbHVlOmgsZW1pdE1vZGVsVmFsdWU6KCk9PihoKCksYS5tb250aFBpY2tlcj9XKEwpOmEudGltZVBpY2tlcj9XKFkpOmEueWVhclBpY2tlcj9XKGQuZ2V0WWVhcik6YS53ZWVrUGlja2VyP04obi52YWx1ZSk6TihEKCkpKX19LEpuPSh0LGEpPT57Y29uc3R7dmFsaWRhdGVNb250aFllYXJJblJhbmdlOnIsdmFsaWRhdGVNYXhEYXRlOm4sdmFsaWRhdGVNaW5EYXRlOnUsZGVmYXVsdHM6cH09JGUodCksZz0oUCxtKT0+e2xldCBrPVA7cmV0dXJuIHAudmFsdWUuZmlsdGVycy5tb250aHMuaW5jbHVkZXMoZC5nZXRNb250aChrKSk/KGs9bT9kLmFkZE1vbnRocyhQLDEpOmQuc3ViTW9udGhzKFAsMSksZyhrLG0pKTprfSxCPShQLG0pPT57bGV0IGs9UDtyZXR1cm4gcC52YWx1ZS5maWx0ZXJzLnllYXJzLmluY2x1ZGVzKGQuZ2V0WWVhcihrKSk/KGs9bT9kLmFkZFllYXJzKFAsMSk6ZC5zdWJZZWFycyhQLDEpLEIoayxtKSk6a30sRT1QPT57Y29uc3QgbT1kLnNldChuZXcgRGF0ZSx7bW9udGg6dC5tb250aCx5ZWFyOnQueWVhcn0pO2xldCBrPVA/ZC5hZGRNb250aHMobSwxKTpkLnN1Yk1vbnRocyhtLDEpO3QuZGlzYWJsZVllYXJTZWxlY3QmJihrPWQuc2V0WWVhcihrLHQueWVhcikpO2xldCBxPWQuZ2V0TW9udGgoayksWT1kLmdldFllYXIoayk7cC52YWx1ZS5maWx0ZXJzLm1vbnRocy5pbmNsdWRlcyhxKSYmKGs9ZyhrLFApLHE9ZC5nZXRNb250aChrKSxZPWQuZ2V0WWVhcihrKSkscC52YWx1ZS5maWx0ZXJzLnllYXJzLmluY2x1ZGVzKFkpJiYoaz1CKGssUCksWT1kLmdldFllYXIoaykpLHIocSxZLFAsdC5wcmV2ZW50TWluTWF4TmF2aWdhdGlvbikmJnYocSxZKX0sdj0oUCxtKT0+e2EoXCJ1cGRhdGUtbW9udGgteWVhclwiLHttb250aDpQLHllYXI6bX0pfSx4PWUuY29tcHV0ZWQoKCk9PlA9PntpZighdC5wcmV2ZW50TWluTWF4TmF2aWdhdGlvbnx8UCYmIXQubWF4RGF0ZXx8IVAmJiF0Lm1pbkRhdGUpcmV0dXJuITE7Y29uc3QgbT1kLnNldChuZXcgRGF0ZSx7bW9udGg6dC5tb250aCx5ZWFyOnQueWVhcn0pLGs9UD9kLmFkZE1vbnRocyhtLDEpOmQuc3ViTW9udGhzKG0sMSkscT1bZC5nZXRNb250aChrKSxkLmdldFllYXIoayldO3JldHVybiBQPyFuKC4uLnEpOiF1KC4uLnEpfSk7cmV0dXJue2hhbmRsZU1vbnRoWWVhckNoYW5nZTpFLGlzRGlzYWJsZWQ6eCx1cGRhdGVNb250aFllYXI6dn19O3ZhciBKZT0odD0+KHQuY2VudGVyPVwiY2VudGVyXCIsdC5sZWZ0PVwibGVmdFwiLHQucmlnaHQ9XCJyaWdodFwiLHQpKShKZXx8e30pO2NvbnN0IFFuPSh0LGEscixuKT0+e2NvbnN0IHU9ZS5yZWYoe3RvcDpcIjBcIixsZWZ0OlwiMFwiLHRyYW5zZm9ybTpcIm5vbmVcIixvcGFjaXR5OlwiMFwifSkscD1lLnJlZighMSksZz1lLnRvUmVmKG4sXCJ0ZWxlcG9ydENlbnRlclwiKSxCPWUuY29tcHV0ZWQoKCk9PnAudmFsdWU/XCItMTAwJVwiOlwiMFwiKSxFPSgpPT57digpLHUudmFsdWUub3BhY2l0eT1cIjBcIn07ZS53YXRjaChnLCgpPT57TygpfSksZS5vbk1vdW50ZWQoKCk9Pnt2KCl9KTtjb25zdCB2PSgpPT57Y29uc3QgRD1jZShhKTtpZihEKXtjb25zdHt0b3A6eSxsZWZ0OlQsd2lkdGg6QSxoZWlnaHQ6SX09cShEKTt1LnZhbHVlLnRvcD1gJHt5K0kvMn1weGAsayhULEEsNTApfX0seD1EPT57aWYobi50ZWxlcG9ydCl7Y29uc3QgeT1ELmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybntsZWZ0OnkubGVmdCt3aW5kb3cuc2Nyb2xsWCx0b3A6eS50b3Ard2luZG93LnNjcm9sbFl9fXJldHVybnt0b3A6MCxsZWZ0OjB9fSxQPShELHkpPT57dS52YWx1ZS5sZWZ0PWAke0QreX1weGAsdS52YWx1ZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgtMTAwJSwgJHtCLnZhbHVlfSlgfSxtPUQ9Pnt1LnZhbHVlLmxlZnQ9YCR7RH1weGAsdS52YWx1ZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgwLCAke0IudmFsdWV9KWB9LGs9KEQseSxUKT0+e24ucG9zaXRpb249PT1KZS5sZWZ0JiZtKEQpLG4ucG9zaXRpb249PT1KZS5yaWdodCYmUChELHkpLG4ucG9zaXRpb249PT1KZS5jZW50ZXImJih1LnZhbHVlLmxlZnQ9YCR7RCt5LzJ9cHhgLHUudmFsdWUudHJhbnNmb3JtPVQ/YHRyYW5zbGF0ZSgtNTAlLCAtJHtUfSUpYDpgdHJhbnNsYXRlKC01MCUsICR7Qi52YWx1ZX0pYCl9LHE9RD0+e2NvbnN0e3dpZHRoOnksaGVpZ2h0OlR9PUQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3RvcDpBLGxlZnQ6SX09bi5hbHRQb3NpdGlvbj9uLmFsdFBvc2l0aW9uKEQpOngoRCk7cmV0dXJue3RvcDorQSxsZWZ0OitJLHdpZHRoOnksaGVpZ2h0OlR9fSxZPSgpPT57Y29uc3QgRD1jZShhKTtpZihEKXtjb25zdHt0b3A6eSxsZWZ0OlQsd2lkdGg6QSxoZWlnaHQ6SX09cShEKSxDPUcoKTt1LnZhbHVlLnRvcD1gJHt5K0kvMn1weGAsayhULEEsQz09PVwidG9wXCI/MTAwOjApfX0sTD0oKT0+e3UudmFsdWUubGVmdD1cIjUwJVwiLHUudmFsdWUudG9wPVwiNTAlXCIsdS52YWx1ZS50cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTUwJSwgLTUwJSlcIix1LnZhbHVlLnBvc2l0aW9uPVwiZml4ZWRcIixkZWxldGUgdS52YWx1ZS5vcGFjaXR5fSxSPSgpPT57Y29uc3QgRD1jZShhKSx7dG9wOnksbGVmdDpULHRyYW5zZm9ybTpBfT1uLmFsdFBvc2l0aW9uKEQpO3UudmFsdWU9e3RvcDpgJHt5fXB4YCxsZWZ0OmAke1R9cHhgLHRyYW5zZm9ybTpBfHxcIlwifX0sTz0oRD0hMCk9PntpZighbi5pbmxpbmUpcmV0dXJuIGcudmFsdWU/TCgpOm4uYWx0UG9zaXRpb24hPT1udWxsP1IoKTooRCYmcihcInJlY2FsY3VsYXRlLXBvc2l0aW9uXCIpLHJlKCkpfSxRPSh7aW5wdXRFbDpELG1lbnVFbDp5LGxlZnQ6VCx3aWR0aDpBfSk9Pnt3aW5kb3cuc2NyZWVuLndpZHRoPjc2OCYmayhULEEpLFUoRCx5KX0sZWU9KEQseSk9Pntjb25zdHt0b3A6VCxsZWZ0OkEsaGVpZ2h0Okksd2lkdGg6Q309cShEKTt1LnZhbHVlLnRvcD1gJHtJK1QrICtuLm9mZnNldH1weGAscC52YWx1ZT0hMSxRKHtpbnB1dEVsOkQsbWVudUVsOnksbGVmdDpBLHdpZHRoOkN9KX0sXz0oRCx5KT0+e2NvbnN0e3RvcDpULGxlZnQ6QSx3aWR0aDpJfT1xKEQpO3UudmFsdWUudG9wPWAke1QtK24ub2Zmc2V0fXB4YCxwLnZhbHVlPSEwLFEoe2lucHV0RWw6RCxtZW51RWw6eSxsZWZ0OkEsd2lkdGg6SX0pfSxVPShELHkpPT57aWYobi5hdXRvUG9zaXRpb24pe2NvbnN0e2xlZnQ6VCx3aWR0aDpBfT1xKEQpLHtsZWZ0OkkscmlnaHQ6Q309eS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gSTw9MD9tKFQpOkM+PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aD9QKFQsQSk6ayhULEEpfX0sRz0oKT0+e2NvbnN0IEQ9Y2UodCkseT1jZShhKTtpZihEJiZ5KXtjb25zdHtoZWlnaHQ6VH09RC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7dG9wOkEsaGVpZ2h0Okl9PXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaD13aW5kb3cuaW5uZXJIZWlnaHQtQS1JLGY9QTtyZXR1cm4gVDw9aD9cImJvdHRvbVwiOlQ+aCYmVDw9Zj9cInRvcFwiOmg+PWY/XCJib3R0b21cIjpcInRvcFwifXJldHVyblwiYm90dG9tXCJ9LEo9KEQseSk9PkcoKT09PVwiYm90dG9tXCI/ZWUoRCx5KTpfKEQseSkscmU9KCk9Pntjb25zdCBEPWNlKGEpLHk9Y2UodCk7aWYoRCYmeSlyZXR1cm4gbi5hdXRvUG9zaXRpb24/SihELHkpOmVlKEQseSl9LG9lPWZ1bmN0aW9uKEQpe2lmKEQpe2NvbnN0IHk9RC5zY3JvbGxIZWlnaHQ+RC5jbGllbnRIZWlnaHQsQT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShEKS5vdmVyZmxvd1kuaW5kZXhPZihcImhpZGRlblwiKSE9PS0xO3JldHVybiB5JiYhQX1yZXR1cm4hMH0sVj1mdW5jdGlvbihEKXtyZXR1cm4hRHx8RD09PWRvY3VtZW50LmJvZHl8fEQubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/d2luZG93Om9lKEQpP0Q6VihELnBhcmVudE5vZGUpfTtyZXR1cm57b3Blbk9uVG9wOnAsbWVudVN0eWxlOnUscmVzZXRQb3NpdGlvbjpFLHNldE1lbnVQb3NpdGlvbjpPLHNldEluaXRpYWxQb3NpdGlvbjpZLGdldFNjcm9sbGFibGVQYXJlbnQ6Vn19LHhlPVt7bmFtZTpcImNsb2NrLWljb25cIix1c2U6W1widGltZVwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctbGVmdFwiLHVzZTpbXCJtb250aC15ZWFyXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJhcnJvdy1yaWdodFwiLHVzZTpbXCJtb250aC15ZWFyXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJhcnJvdy11cFwiLHVzZTpbXCJ0aW1lXCIsXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJhcnJvdy1kb3duXCIsdXNlOltcInRpbWVcIixcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcImNhbGVuZGFyLWljb25cIix1c2U6W1wibW9udGgteWVhclwiLFwidGltZVwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiZGF5XCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcIm1vbnRoLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwieWVhci1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheVwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcIm1vbnRoLW92ZXJsYXlcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5LWhlYWRlclwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheS1oZWFkZXJcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJob3Vycy1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcIm1pbnV0ZXMtb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJzZWNvbmRzLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwiaG91cnNcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwibWludXRlc1wiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJtb250aFwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcImFjdGlvbi1idXR0b25zXCIsdXNlOltcImFjdGlvblwiXX0se25hbWU6XCJhY3Rpb24tcHJldmlld1wiLHVzZTpbXCJhY3Rpb25cIl19LHtuYW1lOlwiY2FsZW5kYXItaGVhZGVyXCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcIm1hcmtlci10b29sdGlwXCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcImFjdGlvbi1leHRyYVwiLHVzZTpbXCJtZW51XCJdfSx7bmFtZTpcInRpbWUtcGlja2VyLW92ZXJsYXlcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwiYW0tcG0tYnV0dG9uXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImxlZnQtc2lkZWJhclwiLHVzZTpbXCJtZW51XCJdfSx7bmFtZTpcInJpZ2h0LXNpZGViYXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJtb250aC15ZWFyXCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwidGltZS1waWNrZXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJhY3Rpb24tcm93XCIsdXNlOltcImFjdGlvblwiXX0se25hbWU6XCJtYXJrZXJcIix1c2U6W1wiY2FsZW5kYXJcIl19XSxGbj1be25hbWU6XCJ0cmlnZ2VyXCJ9LHtuYW1lOlwiaW5wdXQtaWNvblwifSx7bmFtZTpcImNsZWFyLWljb25cIn0se25hbWU6XCJkcC1pbnB1dFwifV0sZWE9e2FsbDooKT0+eGUsbW9udGhZZWFyOigpPT54ZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJtb250aC15ZWFyXCIpKSxpbnB1dDooKT0+Rm4sdGltZVBpY2tlcjooKT0+eGUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwidGltZVwiKSksYWN0aW9uOigpPT54ZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJhY3Rpb25cIikpLGNhbGVuZGFyOigpPT54ZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJjYWxlbmRhclwiKSksbWVudTooKT0+eGUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwibWVudVwiKSl9LEllPSh0LGEscik9Pntjb25zdCBuPVtdO3JldHVybiBlYVthXSgpLmZvckVhY2godT0+e3RbdS5uYW1lXSYmbi5wdXNoKHUubmFtZSl9KSxyJiZyLmxlbmd0aCYmci5mb3JFYWNoKHU9Pnt1LnNsb3QmJm4ucHVzaCh1LnNsb3QpfSksbn0sUWU9dD0+KHt0cmFuc2l0aW9uTmFtZTplLmNvbXB1dGVkKCgpPT5yPT50JiZ0eXBlb2YgdCE9XCJib29sZWFuXCI/cj90Lm9wZW46dC5jbG9zZTpcIlwiKSxzaG93VHJhbnNpdGlvbjohIXR9KSxFZT17bXVsdGlDYWxlbmRhcnM6e3R5cGU6W0Jvb2xlYW4sTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtb2RlbFZhbHVlOnt0eXBlOltTdHJpbmcsRGF0ZSxBcnJheSxPYmplY3QsTnVtYmVyXSxkZWZhdWx0Om51bGx9LG1vZGVsVHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcImNlbnRlclwifSxkYXJrOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZm9ybWF0Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLGRlZmF1bHQ6KCk9Pm51bGx9LGNsb3NlT25TY3JvbGw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvUG9zaXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxjbG9zZU9uQXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sYWx0UG9zaXRpb246e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSx0cmFuc2l0aW9uczp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6ITB9LGZvcm1hdExvY2FsZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSx1dGM6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxhcmlhTGFiZWxzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxvZmZzZXQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MTB9LGhpZGVOYXZpZ2F0aW9uOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSx0aW1lem9uZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx2ZXJ0aWNhbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVNb250aFllYXJTZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlWWVhclNlbGVjdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1lbnVDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sZGF5Q2xhc3M6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSx5ZWFyUmFuZ2U6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+WzE5MDAsMjEwMF19LG11bHRpQ2FsZW5kYXJzU29sbzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNhbGVuZGFyQ2VsbENsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxlbmFibGVUaW1lUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWREYXRlczp7dHlwZTpbQXJyYXksRnVuY3Rpb25dLGRlZmF1bHQ6KCk9PltdfSxtb250aE5hbWVGb3JtYXQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJzaG9ydFwifSxzdGFydERhdGU6e3R5cGU6W0RhdGUsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHN0YXJ0VGltZTp7dHlwZTpbT2JqZWN0LEFycmF5XSxkZWZhdWx0Om51bGx9LGhpZGVPZmZzZXREYXRlczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9SYW5nZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxub1RvZGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWRXZWVrRGF5czp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sYWxsb3dlZERhdGVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6bnVsbH0sc2hvd05vd0J1dHRvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vd0J1dHRvbkxhYmVsOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiTm93XCJ9LG1hcmtlcnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1vZGVIZWlnaHQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MjU1fSxlc2NDbG9zZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHNwYWNlQ29uZmlybTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG1vbnRoQ2hhbmdlT25BcnJvd3M6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxwcmVzZXRSYW5nZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGZsb3c6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LHBhcnRpYWxGbG93Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scHJldmVudE1pbk1heE5hdmlnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtaW5SYW5nZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtYXhSYW5nZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtdWx0aURhdGVzTGltaXQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0scmV2ZXJzZVllYXJzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sa2VlcEFjdGlvblJvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHdlZWtQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmaWx0ZXJzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxhcnJvd05hdmlnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtdWx0aVN0YXRpYzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGRpc2FibGVUaW1lUmFuZ2VWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saGlnaGxpZ2h0Ont0eXBlOltBcnJheSxGdW5jdGlvbl0sZGVmYXVsdDpudWxsfSxoaWdobGlnaHRXZWVrRGF5czp7dHlwZTpBcnJheSxkZWZhdWx0Om51bGx9LGhpZ2hsaWdodERpc2FibGVkRGF5czp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRlbGVwb3J0Ont0eXBlOltTdHJpbmcsQm9vbGVhbl0sZGVmYXVsdDpudWxsfSx0ZWxlcG9ydENlbnRlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGxvY2FsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcImVuLVVzXCJ9LHdlZWtOdW1OYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiV1wifSx3ZWVrU3RhcnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0sd2Vla051bWJlcnM6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0sZGVmYXVsdDpudWxsfSxjYWxlbmRhckNsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxub1N3aXBlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbW9udGhDaGFuZ2VPblNjcm9sbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITB9LGRheU5hbWVzOnt0eXBlOltGdW5jdGlvbixBcnJheV0sZGVmYXVsdDpudWxsfSxtb250aFBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGN1c3RvbVByb3BzOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LHllYXJQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb2RlbEF1dG86e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzZWxlY3RUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OlwiU2VsZWN0XCJ9LGNhbmNlbFRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJDYW5jZWxcIn0scHJldmlld0Zvcm1hdDp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxkZWZhdWx0OigpPT5cIlwifSxtdWx0aURhdGVzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scGFydGlhbFJhbmdlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0saWdub3JlVGltZVZhbGlkYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtaW5EYXRlOnt0eXBlOltEYXRlLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtYXhEYXRlOnt0eXBlOltEYXRlLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtaW5UaW1lOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LG1heFRpbWU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sbmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSxoaWRlSW5wdXRJY29uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2xlYXJhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc3RhdGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0Om51bGx9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxkZWZhdWx0Olwib2ZmXCJ9LGlucHV0Q2xhc3NOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGlubGluZVdpdGhJbnB1dDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRleHRJbnB1dE9wdGlvbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pm51bGx9LGZpeGVkU3RhcnQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmaXhlZEVuZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRpbWVQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxlbmFibGVTZWNvbmRzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saXMyNDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG5vSG91cnNPdmVybGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbm9NaW51dGVzT3ZlcmxheTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vU2Vjb25kc092ZXJsYXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxob3Vyc0dyaWRJbmNyZW1lbnQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6MX0sbWludXRlc0dyaWRJbmNyZW1lbnQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6NX0sc2Vjb25kc0dyaWRJbmNyZW1lbnQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6NX0saG91cnNJbmNyZW1lbnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0sbWludXRlc0luY3JlbWVudDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSxzZWNvbmRzSW5jcmVtZW50Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LHJhbmdlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdWlkOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scmVhZG9ubHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbmxpbmU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvbkNsaWNrT3V0c2lkZTp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9LG5vRGlzYWJsZWRSYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNpeFdlZWtzOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sYWN0aW9uUm93Ont0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxhbGxvd1ByZXZlbnREZWZhdWx0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2xvc2VPbkNsZWFyVmFsdWU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxmb2N1c1N0YXJ0RGF0ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVkVGltZXM6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDp2b2lkIDB9LHNob3dMYXN0SW5SYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHRpbWVQaWNrZXJJbmxpbmU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjYWxlbmRhcjp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9LGF1dG9BcHBseU1vbnRoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH19LHRhPXtrZXk6MSxjbGFzczpcImRwX19pbnB1dF93cmFwXCJ9LG5hPVtcImlkXCIsXCJuYW1lXCIsXCJpbnB1dG1vZGVcIixcInBsYWNlaG9sZGVyXCIsXCJkaXNhYmxlZFwiLFwicmVhZG9ubHlcIixcInJlcXVpcmVkXCIsXCJ2YWx1ZVwiLFwiYXV0b2NvbXBsZXRlXCIsXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIl0sYWE9e2tleToyLGNsYXNzOlwiZHBfX2NsZWFyX2ljb25cIn0scmE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkRhdGVwaWNrZXJJbnB1dFwiLHByb3BzOntpc01lbnVPcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW5wdXRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSwuLi5FZX0sZW1pdHM6W1wiY2xlYXJcIixcIm9wZW5cIixcInVwZGF0ZTppbnB1dC12YWx1ZVwiLFwic2V0LWlucHV0LWRhdGVcIixcImNsb3NlXCIsXCJzZWxlY3QtZGF0ZVwiLFwic2V0LWVtcHR5LWRhdGVcIixcInRvZ2dsZVwiLFwiZm9jdXMtcHJldlwiLFwiZm9jdXNcIixcImJsdXJcIixcInJlYWwtYmx1clwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2dldERlZmF1bHRQYXR0ZXJuOnUsaXNWYWxpZERhdGU6cCxkZWZhdWx0czpnLGdldERlZmF1bHRTdGFydFRpbWU6Qixhc3NpZ25EZWZhdWx0VGltZTpFfT0kZShuKSx2PWUucmVmKCkseD1lLnJlZihudWxsKSxQPWUucmVmKCExKSxtPWUucmVmKCExKSxrPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX3BvaW50ZXI6IW4uZGlzYWJsZWQmJiFuLnJlYWRvbmx5JiYhbi50ZXh0SW5wdXQsZHBfX2Rpc2FibGVkOm4uZGlzYWJsZWQsZHBfX2lucHV0X3JlYWRvbmx5OiFuLnRleHRJbnB1dCxkcF9faW5wdXQ6ITAsZHBfX2lucHV0X2ljb25fcGFkOiFuLmhpZGVJbnB1dEljb24sZHBfX2lucHV0X3ZhbGlkOm4uc3RhdGUsZHBfX2lucHV0X2ludmFsaWQ6bi5zdGF0ZT09PSExLGRwX19pbnB1dF9mb2N1czpQLnZhbHVlfHxuLmlzTWVudU9wZW4sZHBfX2lucHV0X3JlZzohbi50ZXh0SW5wdXQsW24uaW5wdXRDbGFzc05hbWVdOiEhbi5pbnB1dENsYXNzTmFtZX0pKSxxPSgpPT57cihcInNldC1pbnB1dC1kYXRlXCIsbnVsbCksbi5hdXRvQXBwbHkmJihyKFwic2V0LWVtcHR5LWRhdGVcIiksdi52YWx1ZT1udWxsKX0sWT15PT57dmFyIEE7Y29uc3QgVD1CKCk7cmV0dXJuIGFuKHksKChBPWcudmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOkEuZm9ybWF0KXx8dSgpLFR8fEUoe30pLG4uaW5wdXRWYWx1ZSxtLnZhbHVlKX0sTD15PT57Y29uc3R7cmFuZ2VTZXBhcmF0b3I6VH09Zy52YWx1ZS50ZXh0SW5wdXRPcHRpb25zLFtBLEldPXkuc3BsaXQoYCR7VH1gKTtpZihBKXtjb25zdCBDPVkoQS50cmltKCkpLGg9ST9ZKEkudHJpbSgpKTpudWxsLGY9QyYmaD9bQyxoXTpbQ107di52YWx1ZT1DP2Y6bnVsbH19LFI9KCk9PnttLnZhbHVlPSEwfSxPPXk9PntpZihuLnJhbmdlKUwoeSk7ZWxzZSBpZihuLm11bHRpRGF0ZXMpe2NvbnN0IFQ9eS5zcGxpdChcIjtcIik7di52YWx1ZT1ULm1hcChBPT5ZKEEudHJpbSgpKSkuZmlsdGVyKEE9PkEpfWVsc2Ugdi52YWx1ZT1ZKHkpfSxRPXk9Pnt2YXIgQSxJO2NvbnN0IFQ9dHlwZW9mIHk9PVwic3RyaW5nXCI/eTooQT15LnRhcmdldCk9PW51bGw/dm9pZCAwOkEudmFsdWU7VCE9PVwiXCI/KChJPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkkub3Blbk1lbnUmJiFuLmlzTWVudU9wZW4mJnIoXCJvcGVuXCIpLE8oVCkscihcInNldC1pbnB1dC1kYXRlXCIsdi52YWx1ZSkpOnEoKSxtLnZhbHVlPSExLHIoXCJ1cGRhdGU6aW5wdXQtdmFsdWVcIixUKX0sZWU9eT0+e3ZhciBULEE7bi50ZXh0SW5wdXQ/KE8oeS50YXJnZXQudmFsdWUpLChUPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJlQuZW50ZXJTdWJtaXQmJnAodi52YWx1ZSkmJm4uaW5wdXRWYWx1ZSE9PVwiXCI/KHIoXCJzZXQtaW5wdXQtZGF0ZVwiLHYudmFsdWUsITApLHYudmFsdWU9bnVsbCk6KEE9Zy52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmQS5lbnRlclN1Ym1pdCYmbi5pbnB1dFZhbHVlPT09XCJcIiYmKHYudmFsdWU9bnVsbCxyKFwiY2xlYXJcIikpKTpHKHkpfSxfPXk9Pnt2YXIgVCxBLEk7bi50ZXh0SW5wdXQmJigoVD1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZULnRhYlN1Ym1pdCkmJk8oeS50YXJnZXQudmFsdWUpLChBPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkEudGFiU3VibWl0JiZwKHYudmFsdWUpJiZuLmlucHV0VmFsdWUhPT1cIlwiPyhyKFwic2V0LWlucHV0LWRhdGVcIix2LnZhbHVlLCEwKSx2LnZhbHVlPW51bGwpOihJPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkkudGFiU3VibWl0JiZuLmlucHV0VmFsdWU9PT1cIlwiJiYodi52YWx1ZT1udWxsLHIoXCJjbGVhclwiKSl9LFU9KCk9PntQLnZhbHVlPSEwLHIoXCJmb2N1c1wiKX0sRz15PT57dmFyIFQ7eS5wcmV2ZW50RGVmYXVsdCgpLHkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkseS5zdG9wUHJvcGFnYXRpb24oKSxuLnRleHRJbnB1dCYmKChUPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJlQub3Blbk1lbnUpJiYhbi5pbmxpbmVXaXRoSW5wdXQ/KHIoXCJ0b2dnbGVcIiksZy52YWx1ZS50ZXh0SW5wdXRPcHRpb25zLmVudGVyU3VibWl0JiZyKFwic2VsZWN0LWRhdGVcIikpOm4udGV4dElucHV0fHxyKFwidG9nZ2xlXCIpfSxKPSgpPT57cihcInJlYWwtYmx1clwiKSxQLnZhbHVlPSExLCghbi5pc01lbnVPcGVufHxuLmlubGluZSYmbi5pbmxpbmVXaXRoSW5wdXQpJiZyKFwiYmx1clwiKSxuLmF1dG9BcHBseSYmbi50ZXh0SW5wdXQmJnYudmFsdWUmJiFuLmlzTWVudU9wZW4mJihyKFwic2V0LWlucHV0LWRhdGVcIix2LnZhbHVlKSxyKFwic2VsZWN0LWRhdGVcIiksdi52YWx1ZT1udWxsKX0scmU9KCk9PntyKFwiY2xlYXJcIil9LG9lPXk9PntpZighbi50ZXh0SW5wdXQpe2lmKHkuY29kZT09PVwiVGFiXCIpcmV0dXJuO3kucHJldmVudERlZmF1bHQoKX19O3JldHVybiBhKHtmb2N1c0lucHV0OigpPT57dmFyIHk7KHk9eC52YWx1ZSk9PW51bGx8fHkuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sc2V0UGFyc2VkRGF0ZTp5PT57di52YWx1ZT15fX0pLCh5LFQpPT57dmFyIEE7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7b25DbGljazpHfSxbeS4kc2xvdHMudHJpZ2dlciYmIXkuJHNsb3RzW1wiZHAtaW5wdXRcIl0mJiF5LmlubGluZT9lLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJ0cmlnZ2VyXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksIXkuJHNsb3RzLnRyaWdnZXImJigheS5pbmxpbmV8fHkuaW5saW5lV2l0aElucHV0KT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHRhLFt5LiRzbG90c1tcImRwLWlucHV0XCJdJiYheS4kc2xvdHMudHJpZ2dlciYmIXkuaW5saW5lP2UucmVuZGVyU2xvdCh5LiRzbG90cyxcImRwLWlucHV0XCIse2tleTowLHZhbHVlOnQuaW5wdXRWYWx1ZSxpc01lbnVPcGVuOnQuaXNNZW51T3BlbixvbklucHV0OlEsb25FbnRlcjplZSxvblRhYjpfLG9uQ2xlYXI6cmUsb25CbHVyOkosb25LZXlwcmVzczpvZSxvblBhc3RlOlJ9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSx5LiRzbG90c1tcImRwLWlucHV0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIix7a2V5OjEscmVmX2tleTpcImlucHV0UmVmXCIscmVmOngsaWQ6eS51aWQ/YGRwLWlucHV0LSR7eS51aWR9YDp2b2lkIDAsbmFtZTp5Lm5hbWUsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhrLnZhbHVlKSxpbnB1dG1vZGU6eS50ZXh0SW5wdXQ/XCJ0ZXh0XCI6XCJub25lXCIscGxhY2Vob2xkZXI6eS5wbGFjZWhvbGRlcixkaXNhYmxlZDp5LmRpc2FibGVkLHJlYWRvbmx5OnkucmVhZG9ubHkscmVxdWlyZWQ6eS5yZXF1aXJlZCx2YWx1ZTp0LmlucHV0VmFsdWUsYXV0b2NvbXBsZXRlOnkuYXV0b2NvbXBsZXRlLFwiYXJpYS1sYWJlbFwiOihBPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkEuaW5wdXQsb25JbnB1dDpRLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhlZSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhfLFtcInRhYlwiXSksb2VdLG9uQmx1cjpKLG9uRm9jdXM6VSxvbktleXByZXNzOm9lLG9uUGFzdGU6Un0sbnVsbCw0MixuYSkpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse29uQ2xpY2s6VFsyXXx8KFRbMl09ST0+cihcInRvZ2dsZVwiKSl9LFt5LiRzbG90c1tcImlucHV0LWljb25cIl0mJiF5LmhpZGVJbnB1dEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIse2tleTowLGNsYXNzOlwiZHBfX2lucHV0X2ljb25cIixvbkNsaWNrOlRbMF18fChUWzBdPUk9PnIoXCJ0b2dnbGVcIikpfSxbZS5yZW5kZXJTbG90KHkuJHNsb3RzLFwiaW5wdXQtaWNvblwiKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwheS4kc2xvdHNbXCJpbnB1dC1pY29uXCJdJiYheS5oaWRlSW5wdXRJY29uJiYheS4kc2xvdHNbXCJkcC1pbnB1dFwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoR2UpLHtrZXk6MSxvbkNsaWNrOlRbMV18fChUWzFdPUk9PnIoXCJ0b2dnbGVcIikpLGNsYXNzOlwiZHBfX2lucHV0X2ljb24gZHBfX2lucHV0X2ljb25zXCJ9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSx5LiRzbG90c1tcImNsZWFyLWljb25cIl0mJnQuaW5wdXRWYWx1ZSYmeS5jbGVhcmFibGUmJiF5LmRpc2FibGVkJiYheS5yZWFkb25seT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInNwYW5cIixhYSxbZS5yZW5kZXJTbG90KHkuJHNsb3RzLFwiY2xlYXItaWNvblwiLHtjbGVhcjpyZX0pXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHkuY2xlYXJhYmxlJiYheS4kc2xvdHNbXCJjbGVhci1pY29uXCJdJiZ0LmlucHV0VmFsdWUmJiF5LmRpc2FibGVkJiYheS5yZWFkb25seT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobm4pLHtrZXk6MyxjbGFzczpcImRwX19jbGVhcl9pY29uIGRwX19pbnB1dF9pY29uc1wiLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKHJlLFtcInN0b3BcIixcInByZXZlbnRcIl0pfSxudWxsLDgsW1wib25DbGlja1wiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSl9fX0pLGxhPVtcInRpdGxlXCJdLG9hPXtjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uc1wifSxzYT1bXCJvbktleWRvd25cIixcImRpc2FibGVkXCJdLGlhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJBY3Rpb25Sb3dcIixwcm9wczp7bWVudU1vdW50Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LGNhbGVuZGFyV2lkdGg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uRWV9LGVtaXRzOltcImNsb3NlLXBpY2tlclwiLFwic2VsZWN0LWRhdGVcIixcInNlbGVjdC1ub3dcIixcImludmFsaWQtc2VsZWN0XCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IHI9dCx7Zm9ybWF0RGF0ZTpuLGlzVmFsaWRUaW1lOnUsZGVmYXVsdHM6cH09JGUocikse2J1aWxkTWF0cml4Omd9PV9lKCksQj1lLnJlZihudWxsKSxFPWUucmVmKG51bGwpO2Uub25Nb3VudGVkKCgpPT57ci5hcnJvd05hdmlnYXRpb24mJmcoW2NlKEIpLGNlKEUpXSxcImFjdGlvblJvd1wiKX0pO2NvbnN0IHY9ZS5jb21wdXRlZCgoKT0+ci5yYW5nZSYmIXIucGFydGlhbFJhbmdlJiZyLmludGVybmFsTW9kZWxWYWx1ZT9yLmludGVybmFsTW9kZWxWYWx1ZS5sZW5ndGg9PT0yOiEwKSx4PWUuY29tcHV0ZWQoKCk9PiFQLnZhbHVlfHwhbS52YWx1ZXx8IXYudmFsdWUpLFA9ZS5jb21wdXRlZCgoKT0+IXIuZW5hYmxlVGltZVBpY2tlcnx8ci5pZ25vcmVUaW1lVmFsaWRhdGlvbj8hMDp1KHIuaW50ZXJuYWxNb2RlbFZhbHVlKSksbT1lLmNvbXB1dGVkKCgpPT5yLm1vbnRoUGlja2VyP3IucmFuZ2UmJkFycmF5LmlzQXJyYXkoci5pbnRlcm5hbE1vZGVsVmFsdWUpPyFyLmludGVybmFsTW9kZWxWYWx1ZS5maWx0ZXIoVT0+IVEoVSkpLmxlbmd0aDpRKHIuaW50ZXJuYWxNb2RlbFZhbHVlKTohMCksaz0oKT0+e2NvbnN0IF89cC52YWx1ZS5wcmV2aWV3Rm9ybWF0O3JldHVybiByLnRpbWVQaWNrZXJ8fHIubW9udGhQaWNrZXIsXyhnZShyLmludGVybmFsTW9kZWxWYWx1ZSkpfSxxPSgpPT57Y29uc3QgXz1yLmludGVybmFsTW9kZWxWYWx1ZTtyZXR1cm4gcC52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP2Ake1koX1swXSl9IC0gJHtZKF9bMV0pfWA6W1koX1swXSksWShfWzFdKV19LFk9Xz0+bihfLHAudmFsdWUucHJldmlld0Zvcm1hdCksTD1lLmNvbXB1dGVkKCgpPT4hci5pbnRlcm5hbE1vZGVsVmFsdWV8fCFyLm1lbnVNb3VudD9cIlwiOnR5cGVvZiBwLnZhbHVlLnByZXZpZXdGb3JtYXQ9PVwic3RyaW5nXCI/QXJyYXkuaXNBcnJheShyLmludGVybmFsTW9kZWxWYWx1ZSk/ci5pbnRlcm5hbE1vZGVsVmFsdWUubGVuZ3RoPT09MiYmci5pbnRlcm5hbE1vZGVsVmFsdWVbMV0/cSgpOnIubXVsdGlEYXRlcz9yLmludGVybmFsTW9kZWxWYWx1ZS5tYXAoXz0+YCR7WShfKX1gKTpyLm1vZGVsQXV0bz9gJHtZKHIuaW50ZXJuYWxNb2RlbFZhbHVlWzBdKX1gOmAke1koci5pbnRlcm5hbE1vZGVsVmFsdWVbMF0pfSAtYDpZKHIuaW50ZXJuYWxNb2RlbFZhbHVlKTprKCkpLFI9KCk9PnIubXVsdGlEYXRlcz9cIjsgXCI6XCIgLSBcIixPPWUuY29tcHV0ZWQoKCk9PkFycmF5LmlzQXJyYXkoTC52YWx1ZSk/TC52YWx1ZS5qb2luKFIoKSk6TC52YWx1ZSksUT1fPT57aWYoIXIubW9udGhQaWNrZXIpcmV0dXJuITA7bGV0IFU9ITA7Y29uc3QgRz0kKEtlKF8pKTtpZihyLm1pbkRhdGUmJnIubWF4RGF0ZSl7Y29uc3QgSj0kKEtlKHIubWluRGF0ZSkpLHJlPSQoS2Uoci5tYXhEYXRlKSk7cmV0dXJuIGJlKEcsSikmJndlKEcscmUpfHxzZShHLEopfHxzZShHLHJlKX1pZihyLm1pbkRhdGUpe2NvbnN0IEo9JChLZShyLm1pbkRhdGUpKTtVPWJlKEcsSil8fHNlKEcsSil9aWYoci5tYXhEYXRlKXtjb25zdCBKPSQoS2Uoci5tYXhEYXRlKSk7VT13ZShHLEopfHxzZShHLEopfXJldHVybiBVfSxlZT0oKT0+e1AudmFsdWUmJm0udmFsdWUmJnYudmFsdWU/YShcInNlbGVjdC1kYXRlXCIpOmEoXCJpbnZhbGlkLXNlbGVjdFwiKX07cmV0dXJuKF8sVSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOlwiZHBfX2FjdGlvbl9yb3dcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHQuY2FsZW5kYXJXaWR0aD97d2lkdGg6YCR7dC5jYWxlbmRhcldpZHRofXB4YH06e30pfSxbXy4kc2xvdHNbXCJhY3Rpb24tcm93XCJdP2UucmVuZGVyU2xvdChfLiRzbG90cyxcImFjdGlvbi1yb3dcIixlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LHtpbnRlcm5hbE1vZGVsVmFsdWU6dC5pbnRlcm5hbE1vZGVsVmFsdWUsZGlzYWJsZWQ6eC52YWx1ZSxzZWxlY3REYXRlOigpPT5fLiRlbWl0KFwic2VsZWN0LWRhdGVcIiksY2xvc2VQaWNrZXI6KCk9Pl8uJGVtaXQoXCJjbG9zZS1waWNrZXJcIil9KSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS51bnJlZihwKS5hY3Rpb25Sb3cuc2hvd1ByZXZpZXc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjAsY2xhc3M6XCJkcF9fc2VsZWN0aW9uX3ByZXZpZXdcIix0aXRsZTpPLnZhbHVlfSxbXy4kc2xvdHNbXCJhY3Rpb24tcHJldmlld1wiXT9lLnJlbmRlclNsb3QoXy4kc2xvdHMsXCJhY3Rpb24tcHJldmlld1wiLHtrZXk6MCx2YWx1ZTp0LmludGVybmFsTW9kZWxWYWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLF8uJHNsb3RzW1wiYWN0aW9uLXByZXZpZXdcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhPLnZhbHVlKSwxKV0sNjQpKV0sOCxsYSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsb2EsW18uJHNsb3RzW1wiYWN0aW9uLWJ1dHRvbnNcIl0/ZS5yZW5kZXJTbG90KF8uJHNsb3RzLFwiYWN0aW9uLWJ1dHRvbnNcIix7a2V5OjAsdmFsdWU6dC5pbnRlcm5hbE1vZGVsVmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxfLiRzbG90c1tcImFjdGlvbi1idXR0b25zXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbIV8uaW5saW5lJiZlLnVucmVmKHApLmFjdGlvblJvdy5zaG93Q2FuY2VsPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleTowLHR5cGU6XCJidXR0b25cIixyZWZfa2V5OlwiY2FuY2VsQnV0dG9uUmVmXCIscmVmOkIsY2xhc3M6XCJkcF9fYWN0aW9uX2J1dHRvbiBkcF9fYWN0aW9uX2NhbmNlbFwiLG9uQ2xpY2s6VVswXXx8KFVbMF09Rz0+Xy4kZW1pdChcImNsb3NlLXBpY2tlclwiKSksb25LZXlkb3duOltVWzFdfHwoVVsxXT1lLndpdGhLZXlzKEc9Pl8uJGVtaXQoXCJjbG9zZS1waWNrZXJcIiksW1wiZW50ZXJcIl0pKSxVWzJdfHwoVVsyXT1lLndpdGhLZXlzKEc9Pl8uJGVtaXQoXCJjbG9zZS1waWNrZXJcIiksW1wic3BhY2VcIl0pKV19LGUudG9EaXNwbGF5U3RyaW5nKF8uY2FuY2VsVGV4dCksNTQ1KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksXy5zaG93Tm93QnV0dG9ufHxlLnVucmVmKHApLmFjdGlvblJvdy5zaG93Tm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleToxLHR5cGU6XCJidXR0b25cIixyZWZfa2V5OlwiY2FuY2VsQnV0dG9uUmVmXCIscmVmOkIsY2xhc3M6XCJkcF9fYWN0aW9uX2J1dHRvbiBkcF9fYWN0aW9uX2NhbmNlbFwiLG9uQ2xpY2s6VVszXXx8KFVbM109Rz0+Xy4kZW1pdChcInNlbGVjdC1ub3dcIikpLG9uS2V5ZG93bjpbVVs0XXx8KFVbNF09ZS53aXRoS2V5cyhHPT5fLiRlbWl0KFwic2VsZWN0LW5vd1wiKSxbXCJlbnRlclwiXSkpLFVbNV18fChVWzVdPWUud2l0aEtleXMoRz0+Xy4kZW1pdChcInNlbGVjdC1ub3dcIiksW1wic3BhY2VcIl0pKV19LGUudG9EaXNwbGF5U3RyaW5nKF8ubm93QnV0dG9uTGFiZWwpLDU0NSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUudW5yZWYocCkuYWN0aW9uUm93LnNob3dTZWxlY3Q/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjIsdHlwZTpcImJ1dHRvblwiLGNsYXNzOlwiZHBfX2FjdGlvbl9idXR0b24gZHBfX2FjdGlvbl9zZWxlY3RcIixvbktleWRvd246W2Uud2l0aEtleXMoZWUsW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoZWUsW1wic3BhY2VcIl0pXSxvbkNsaWNrOmVlLGRpc2FibGVkOngudmFsdWUscmVmX2tleTpcInNlbGVjdEJ1dHRvblJlZlwiLHJlZjpFfSxlLnRvRGlzcGxheVN0cmluZyhfLnNlbGVjdFRleHQpLDQxLHNhKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDY0KSldKV0sNjQpKV0sNCkpfX0pLHVhPVtcImFyaWEtbGFiZWxcIl0sY2E9e2NsYXNzOlwiZHBfX2NhbGVuZGFyX2hlYWRlclwiLHJvbGU6XCJyb3dcIn0sZGE9e2tleTowLGNsYXNzOlwiZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVtXCIscm9sZTpcImdyaWRjZWxsXCJ9LGZhPWUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX2NhbGVuZGFyX2hlYWRlcl9zZXBhcmF0b3JcIn0sbnVsbCwtMSksbWE9W1wiYXJpYS1sYWJlbFwiXSx5YT17a2V5OjAscm9sZTpcImdyaWRjZWxsXCIsY2xhc3M6XCJkcF9fY2FsZW5kYXJfaXRlbSBkcF9fd2Vla19udW1cIn0scGE9e2NsYXNzOlwiZHBfX2NlbGxfaW5uZXJcIn0sZ2E9W1wiYXJpYS1zZWxlY3RlZFwiLFwiYXJpYS1kaXNhYmxlZFwiLFwiYXJpYS1sYWJlbFwiLFwib25DbGlja1wiLFwib25LZXlkb3duXCIsXCJvbk1vdXNlZW50ZXJcIixcIm9uTW91c2VsZWF2ZVwiXSxoYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiQ2FsZW5kYXJcIixwcm9wczp7bWFwcGVkRGF0ZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGdldFdlZWtOdW06e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDooKT0+XCJcIn0sc3BlY2lmaWNNb2RlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW5zdGFuY2U6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sbW9udGg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0seWVhcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSwuLi5FZX0sZW1pdHM6W1wic2VsZWN0LWRhdGVcIixcInNldC1ob3Zlci1kYXRlXCIsXCJoYW5kbGUtc2Nyb2xsXCIsXCJtb3VudFwiLFwiaGFuZGxlLXN3aXBlXCIsXCJoYW5kbGUtc3BhY2VcIixcInRvb2x0aXAtb3BlblwiLFwidG9vbHRpcC1jbG9zZVwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2J1aWxkTXVsdGlMZXZlbE1hdHJpeDp1fT1fZSgpLHtzZXREYXRlTW9udGhPclllYXI6cCxkZWZhdWx0czpnfT0kZShuKSxCPWUucmVmKG51bGwpLEU9ZS5yZWYoe2JvdHRvbTpcIlwiLGxlZnQ6XCJcIix0cmFuc2Zvcm06XCJcIn0pLHY9ZS5yZWYoW10pLHg9ZS5yZWYobnVsbCksUD1lLnJlZighMCksbT1lLnJlZihcIlwiKSxrPWUucmVmKHtzdGFydFg6MCxlbmRYOjAsc3RhcnRZOjAsZW5kWTowfSkscT1lLnJlZihbXSksWT1lLnJlZih7bGVmdDpcIjUwJVwifSksTD1lLmNvbXB1dGVkKCgpPT5uLmNhbGVuZGFyP24uY2FsZW5kYXIobi5tYXBwZWREYXRlcyk6bi5tYXBwZWREYXRlcyksUj1lLmNvbXB1dGVkKCgpPT5uLmRheU5hbWVzP0FycmF5LmlzQXJyYXkobi5kYXlOYW1lcyk/bi5kYXlOYW1lczpuLmRheU5hbWVzKG4ubG9jYWxlLCtuLndlZWtTdGFydCk6Um4obi5mb3JtYXRMb2NhbGUsbi5sb2NhbGUsK24ud2Vla1N0YXJ0KSk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRcIix7Y21wOlwiY2FsZW5kYXJcIixyZWZzOnZ9KSxuLm5vU3dpcGV8fHgudmFsdWUmJih4LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsRCx7cGFzc2l2ZTohMX0pLHgudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIseSx7cGFzc2l2ZTohMX0pLHgudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLFQse3Bhc3NpdmU6ITF9KSksbi5tb250aENoYW5nZU9uU2Nyb2xsJiZ4LnZhbHVlJiZ4LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLEMse3Bhc3NpdmU6ITF9KX0pO2NvbnN0IE89aD0+aD9uLnZlcnRpY2FsP1widk5leHRcIjpcIm5leHRcIjpuLnZlcnRpY2FsP1widlByZXZpb3VzXCI6XCJwcmV2aW91c1wiLFE9KGgsZik9PntpZihuLnRyYW5zaXRpb25zKXtjb25zdCBjPVNlKHAoJCgpLG4ubW9udGgsbi55ZWFyKSk7bS52YWx1ZT1iZShTZShwKCQoKSxoLGYpKSxjKT9nLnZhbHVlLnRyYW5zaXRpb25zW08oITApXTpnLnZhbHVlLnRyYW5zaXRpb25zW08oITEpXSxQLnZhbHVlPSExLGUubmV4dFRpY2soKCk9PntQLnZhbHVlPSEwfSl9fSxlZT1lLmNvbXB1dGVkKCgpPT4oe1tuLmNhbGVuZGFyQ2xhc3NOYW1lXTohIW4uY2FsZW5kYXJDbGFzc05hbWV9KSksXz1lLmNvbXB1dGVkKCgpPT5oPT57Y29uc3QgZj14bihoKTtyZXR1cm57ZHBfX21hcmtlcl9kb3Q6Zi50eXBlPT09XCJkb3RcIixkcF9fbWFya2VyX2xpbmU6Zi50eXBlPT09XCJsaW5lXCJ9fSksVT1lLmNvbXB1dGVkKCgpPT5oPT5zZShoLEIudmFsdWUpKSxHPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX2NhbGVuZGFyOiEwLGRwX19jYWxlbmRhcl9uZXh0OmcudmFsdWUubXVsdGlDYWxlbmRhcnM+MCYmbi5pbnN0YW5jZSE9PTB9KSksSj1lLmNvbXB1dGVkKCgpPT5oPT5uLmhpZGVPZmZzZXREYXRlcz9oLmN1cnJlbnQ6ITApLHJlPWUuY29tcHV0ZWQoKCk9Pm4uc3BlY2lmaWNNb2RlP3toZWlnaHQ6YCR7bi5tb2RlSGVpZ2h0fXB4YH06dm9pZCAwKSxvZT1hc3luYyhoLGYsYyk9Pnt2YXIgTixNO2lmKHIoXCJzZXQtaG92ZXItZGF0ZVwiLGgpLChNPShOPWgubWFya2VyKT09bnVsbD92b2lkIDA6Ti50b29sdGlwKSE9bnVsbCYmTS5sZW5ndGgpe2NvbnN0IFc9Y2Uodi52YWx1ZVtmXVtjXSk7aWYoVyl7Y29uc3R7d2lkdGg6byxoZWlnaHQ6c309Vy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtCLnZhbHVlPWgudmFsdWU7bGV0IGw9e2xlZnQ6YCR7by8yfXB4YH0sUz0tNTA7aWYoYXdhaXQgZS5uZXh0VGljaygpLHEudmFsdWVbMF0pe2NvbnN0e2xlZnQ6Rix3aWR0aDp0ZX09cS52YWx1ZVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtGPDAmJihsPXtsZWZ0OlwiMFwifSxTPTAsWS52YWx1ZS5sZWZ0PWAke28vMn1weGApLHdpbmRvdy5pbm5lcldpZHRoPEYrdGUmJihsPXtyaWdodDpcIjBcIn0sUz0wLFkudmFsdWUubGVmdD1gJHt0ZS1vLzJ9cHhgKX1FLnZhbHVlPXtib3R0b206YCR7c31weGAsLi4ubCx0cmFuc2Zvcm06YHRyYW5zbGF0ZVgoJHtTfSUpYH0scihcInRvb2x0aXAtb3BlblwiLGgubWFya2VyKX19fSxWPWg9PntCLnZhbHVlJiYoQi52YWx1ZT1udWxsLEUudmFsdWU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7Ym90dG9tOlwiXCIsbGVmdDpcIlwiLHRyYW5zZm9ybTpcIlwifSkpLHIoXCJ0b29sdGlwLWNsb3NlXCIsaC5tYXJrZXIpKX0sRD1oPT57ay52YWx1ZS5zdGFydFg9aC5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5YLGsudmFsdWUuc3RhcnRZPWguY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWX0seT1oPT57ay52YWx1ZS5lbmRYPWguY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWCxrLnZhbHVlLmVuZFk9aC5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5ZLEEoKX0sVD1oPT57bi52ZXJ0aWNhbCYmIW4uaW5saW5lJiZoLnByZXZlbnREZWZhdWx0KCl9LEE9KCk9Pntjb25zdCBoPW4udmVydGljYWw/XCJZXCI6XCJYXCI7TWF0aC5hYnMoay52YWx1ZVtgc3RhcnQke2h9YF0tay52YWx1ZVtgZW5kJHtofWBdKT4xMCYmcihcImhhbmRsZS1zd2lwZVwiLGsudmFsdWVbYHN0YXJ0JHtofWBdPmsudmFsdWVbYGVuZCR7aH1gXT9cInJpZ2h0XCI6XCJsZWZ0XCIpfSxJPShoLGYsYyk9PntoJiYoQXJyYXkuaXNBcnJheSh2LnZhbHVlW2ZdKT92LnZhbHVlW2ZdW2NdPWg6di52YWx1ZVtmXT1baF0pLG4uYXJyb3dOYXZpZ2F0aW9uJiZ1KHYudmFsdWUsXCJjYWxlbmRhclwiKX0sQz1oPT57bi5tb250aENoYW5nZU9uU2Nyb2xsJiYoaC5wcmV2ZW50RGVmYXVsdCgpLHIoXCJoYW5kbGUtc2Nyb2xsXCIsaCkpfTtyZXR1cm4gYSh7dHJpZ2dlclRyYW5zaXRpb246UX0pLChoLGYpPT57dmFyIGM7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhHLnZhbHVlKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse3N0eWxlOmUubm9ybWFsaXplU3R5bGUocmUudmFsdWUpLHJlZl9rZXk6XCJjYWxlbmRhcldyYXBSZWZcIixyZWY6eCxyb2xlOlwiZ3JpZFwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoZWUudmFsdWUpLFwiYXJpYS1sYWJlbFwiOihjPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOmMuY2FsZW5kYXJXcmFwfSxbdC5zcGVjaWZpY01vZGU/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLGNhLFtoLndlZWtOdW1iZXJzPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsZGEsZS50b0Rpc3BsYXlTdHJpbmcoaC53ZWVrTnVtTmFtZSksMSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChSLnZhbHVlLChOLE0pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbVwiLHJvbGU6XCJncmlkY2VsbFwiLGtleTpNfSxbaC4kc2xvdHNbXCJjYWxlbmRhci1oZWFkZXJcIl0/ZS5yZW5kZXJTbG90KGguJHNsb3RzLFwiY2FsZW5kYXItaGVhZGVyXCIse2tleTowLGRheTpOLGluZGV4Ok19KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxoLiRzbG90c1tcImNhbGVuZGFyLWhlYWRlclwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKE4pLDEpXSw2NCkpXSkpKSwxMjgpKV0pLGZhLGUuY3JlYXRlVk5vZGUoZS5UcmFuc2l0aW9uLHtuYW1lOm0udmFsdWUsY3NzOiEhaC50cmFuc2l0aW9uc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT57dmFyIE47cmV0dXJuW1AudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjAsY2xhc3M6XCJkcF9fY2FsZW5kYXJcIixyb2xlOlwiZ3JpZFwiLFwiYXJpYS1sYWJlbFwiOihOPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOk4uY2FsZW5kYXJEYXlzfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KEwudmFsdWUsKE0sVyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOlwiZHBfX2NhbGVuZGFyX3Jvd1wiLHJvbGU6XCJyb3dcIixrZXk6V30sW2gud2Vla051bWJlcnM/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix5YSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixwYSxlLnRvRGlzcGxheVN0cmluZyh0LmdldFdlZWtOdW0oTS5kYXlzKSksMSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KE0uZGF5cywobyxzKT0+e3ZhciBsLFMsRjtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtyb2xlOlwiZ3JpZGNlbGxcIixjbGFzczpcImRwX19jYWxlbmRhcl9pdGVtXCIscmVmX2ZvcjohMCxyZWY6dGU9PkkodGUsVyxzKSxrZXk6cytXLFwiYXJpYS1zZWxlY3RlZFwiOm8uY2xhc3NEYXRhLmRwX19hY3RpdmVfZGF0ZXx8by5jbGFzc0RhdGEuZHBfX3JhbmdlX3N0YXJ0fHxvLmNsYXNzRGF0YS5kcF9fcmFuZ2Vfc3RhcnQsXCJhcmlhLWRpc2FibGVkXCI6by5jbGFzc0RhdGEuZHBfX2NlbGxfZGlzYWJsZWQsXCJhcmlhLWxhYmVsXCI6KFM9KGw9ZS51bnJlZihnKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6bC5kYXkpPT1udWxsP3ZvaWQgMDpTLmNhbGwobCxvKSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOmUud2l0aE1vZGlmaWVycyh0ZT0+aC4kZW1pdChcInNlbGVjdC1kYXRlXCIsbyksW1wic3RvcFwiLFwicHJldmVudFwiXSksb25LZXlkb3duOltlLndpdGhLZXlzKHRlPT5oLiRlbWl0KFwic2VsZWN0LWRhdGVcIixvKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyh0ZT0+aC4kZW1pdChcImhhbmRsZS1zcGFjZVwiLG8pLFtcInNwYWNlXCJdKV0sb25Nb3VzZWVudGVyOnRlPT5vZShvLFcscyksb25Nb3VzZWxlYXZlOnRlPT5WKG8pfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9fY2VsbF9pbm5lclwiLG8uY2xhc3NEYXRhXSl9LFtoLiRzbG90cy5kYXkmJkoudmFsdWUobyk/ZS5yZW5kZXJTbG90KGguJHNsb3RzLFwiZGF5XCIse2tleTowLGRheTorby50ZXh0LGRhdGU6by52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGguJHNsb3RzLmRheT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKG8udGV4dCksMSldLDY0KSksby5tYXJrZXImJkoudmFsdWUobyk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjJ9LFtoLiRzbG90cy5tYXJrZXI/ZS5yZW5kZXJTbG90KGguJHNsb3RzLFwibWFya2VyXCIse2tleTowLG1hcmtlcjpvLm1hcmtlcixkYXk6K28udGV4dCxkYXRlOm8udmFsdWV9KTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKF8udmFsdWUoby5tYXJrZXIpKSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKG8ubWFya2VyLmNvbG9yP3tiYWNrZ3JvdW5kQ29sb3I6by5tYXJrZXIuY29sb3J9Ont9KX0sbnVsbCw2KSldLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksVS52YWx1ZShvLnZhbHVlKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MyxjbGFzczpcImRwX19tYXJrZXJfdG9vbHRpcFwiLHJlZl9mb3I6ITAscmVmX2tleTpcImFjdGl2ZVRvb2x0aXBcIixyZWY6cSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKEUudmFsdWUpfSxbKEY9by5tYXJrZXIpIT1udWxsJiZGLnRvb2x0aXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjAsY2xhc3M6XCJkcF9fdG9vbHRpcF9jb250ZW50XCIsb25DbGljazpmWzBdfHwoZlswXT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFtcInN0b3BcIl0pKX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChvLm1hcmtlci50b29sdGlwLCh0ZSxwZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpwZSxjbGFzczpcImRwX190b29sdGlwX3RleHRcIn0sW2guJHNsb3RzW1wibWFya2VyLXRvb2x0aXBcIl0/ZS5yZW5kZXJTbG90KGguJHNsb3RzLFwibWFya2VyLXRvb2x0aXBcIix7a2V5OjAsdG9vbHRpcDp0ZSxkYXk6by52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGguJHNsb3RzW1wibWFya2VyLXRvb2x0aXBcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX190b29sdGlwX21hcmtcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHRlLmNvbG9yP3tiYWNrZ3JvdW5kQ29sb3I6dGUuY29sb3J9Ont9KX0sbnVsbCw0KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG51bGwsZS50b0Rpc3BsYXlTdHJpbmcodGUudGV4dCksMSldLDY0KSldKSkpLDEyOCkpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX2Fycm93X2JvdHRvbV90cFwiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoWS52YWx1ZSl9LG51bGwsNCldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMildLDQwLGdhKX0pLDEyOCkpXSkpKSwxMjgpKV0sOCxtYSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXX0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pXSw2NCkpXSwxNCx1YSldLDIpfX19KSxrYT1bXCJhcmlhLWxhYmVsXCIsXCJhcmlhLWRpc2FibGVkXCJdLGJ0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJBY3Rpb25JY29uXCIscHJvcHM6e2FyaWFMYWJlbDp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufX0sZW1pdHM6W1wiYWN0aXZhdGVcIixcInNldC1yZWZcIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3Qgcj1lLnJlZihudWxsKTtyZXR1cm4gZS5vbk1vdW50ZWQoKCk9PmEoXCJzZXQtcmVmXCIscikpLChuLHUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6XCJkcF9fYnRuIGRwX19tb250aF95ZWFyX2NvbF9uYXZcIixvbkNsaWNrOnVbMF18fCh1WzBdPXA9Pm4uJGVtaXQoXCJhY3RpdmF0ZVwiKSksb25LZXlkb3duOlt1WzFdfHwodVsxXT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhwPT5uLiRlbWl0KFwiYWN0aXZhdGVcIiksW1wicHJldmVudFwiXSksW1wiZW50ZXJcIl0pKSx1WzJdfHwodVsyXT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhwPT5uLiRlbWl0KFwiYWN0aXZhdGVcIiksW1wicHJldmVudFwiXSksW1wic3BhY2VcIl0pKV0sdGFiaW5kZXg6XCIwXCIsXCJhcmlhLWxhYmVsXCI6bi5hcmlhTGFiZWwsXCJhcmlhLWRpc2FibGVkXCI6bi5kaXNhYmxlZCxyZWZfa2V5OlwiZWxSZWZcIixyZWY6cn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19pbm5lcl9uYXZcIix7ZHBfX2lubmVyX25hdl9kaXNhYmxlZDpuLmRpc2FibGVkfV0pfSxbZS5yZW5kZXJTbG90KG4uJHNsb3RzLFwiZGVmYXVsdFwiKV0sMildLDQwLGthKSl9fSksd2E9W1wib25LZXlkb3duXCJdLGJhPXtjbGFzczpcImRwX19zZWxlY3Rpb25fZ3JpZF9oZWFkZXJcIn0sRGE9W1wiYXJpYS1zZWxlY3RlZFwiLFwiYXJpYS1kaXNhYmxlZFwiLFwib25DbGlja1wiLFwib25LZXlkb3duXCIsXCJvbk1vdXNlb3ZlclwiXSxNYT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIl0sV2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlNlbGVjdGlvbkdyaWRcIixwcm9wczp7aXRlbXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1vZGVsVmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6bnVsbH0sbXVsdGlNb2RlbFZhbHVlOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxkaXNhYmxlZFZhbHVlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbWluVmFsdWU6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4VmFsdWU6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0seWVhcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxza2lwQWN0aXZlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saGVhZGVyUmVmczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sc2tpcEJ1dHRvblJlZjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vbnRoUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0seWVhclBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGVzY0Nsb3NlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sdHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxhcnJvd05hdmlnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvQXBwbHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhcmlhTGFiZWxzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxoaWRlTmF2aWdhdGlvbjp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LGF1dG9BcHBseU1vbnRoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19LGVtaXRzOltcInVwZGF0ZTptb2RlbC12YWx1ZVwiLFwic2VsZWN0ZWRcIixcInRvZ2dsZVwiLFwicmVzZXQtZmxvd1wiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse3NldFNlbGVjdGlvbkdyaWQ6dSxidWlsZE11bHRpTGV2ZWxNYXRyaXg6cCxzZXRNb250aFBpY2tlcjpnfT1fZSgpLHtoaWRlTmF2aWdhdGlvbkJ1dHRvbnM6Qn09JGUobiksRT1lLnJlZighMSksdj1lLnJlZihudWxsKSx4PWUucmVmKG51bGwpLFA9ZS5yZWYoW10pLG09ZS5yZWYoKSxrPWUucmVmKG51bGwpLHE9ZS5yZWYoMCksWT1lLnJlZihudWxsKTtlLm9uQmVmb3JlVXBkYXRlKCgpPT57di52YWx1ZT1udWxsfSksZS5vbk1vdW50ZWQoKCk9Pnt2YXIgQztlLm5leHRUaWNrKCkudGhlbigoKT0+cmUoKSksUigpLEwoITApLChDPXYudmFsdWUpPT1udWxsfHxDLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9KSxlLm9uVW5tb3VudGVkKCgpPT5MKCExKSk7Y29uc3QgTD1DPT57dmFyIGg7bi5hcnJvd05hdmlnYXRpb24mJigoaD1uLmhlYWRlclJlZnMpIT1udWxsJiZoLmxlbmd0aD9nKEMpOnUoQykpfSxSPSgpPT57Y29uc3QgQz1jZSh4KTtDJiYobi50ZXh0SW5wdXR8fEMuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxFLnZhbHVlPUMuY2xpZW50SGVpZ2h0PEMuc2Nyb2xsSGVpZ2h0KX0sTz1lLmNvbXB1dGVkKCgpPT4oe2RwX19vdmVybGF5OiEwfSkpLFE9ZS5jb21wdXRlZCgoKT0+KHtkcF9fb3ZlcmxheV9jb2w6ITB9KSksZWU9Qz0+bi5tb250aFBpY2tlciYmIW4uYXV0b0FwcGx5TW9udGg/c2Uobi5pbnRlcm5hbE1vZGVsVmFsdWUsZC5zZXRZZWFyKGQuc2V0TW9udGgobmV3IERhdGUsQy52YWx1ZSksbi55ZWFyKSk6bi5za2lwQWN0aXZlPyExOkMudmFsdWU9PT1uLm1vZGVsVmFsdWUsXz1lLmNvbXB1dGVkKCgpPT5uLml0ZW1zLm1hcChDPT5DLmZpbHRlcihoPT5oKS5tYXAoaD0+e3ZhciBOLE0sVztjb25zdCBmPW4uZGlzYWJsZWRWYWx1ZXMuc29tZShvPT5vPT09aC52YWx1ZSl8fEooaC52YWx1ZSksYz0oTj1uLm11bHRpTW9kZWxWYWx1ZSkhPW51bGwmJk4ubGVuZ3RoPyhNPW4ubXVsdGlNb2RlbFZhbHVlKT09bnVsbD92b2lkIDA6TS5zb21lKG89PnNlKG8sZC5zZXRZZWFyKG4ubW9udGhQaWNrZXI/ZC5zZXRNb250aChuZXcgRGF0ZSxoLnZhbHVlKTpuZXcgRGF0ZSxuLm1vbnRoUGlja2VyP24ueWVhcjpoLnZhbHVlKSkpOmVlKGgpO3JldHVybnsuLi5oLGNsYXNzTmFtZTp7ZHBfX292ZXJsYXlfY2VsbF9hY3RpdmU6YyxkcF9fb3ZlcmxheV9jZWxsOiFjLGRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWQ6ZixkcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZV9kaXNhYmxlZDpmJiZjLGRwX19vdmVybGF5X2NlbGxfcGFkOiEwLGRwX19jZWxsX2luX2JldHdlZW46KFc9bi5tdWx0aU1vZGVsVmFsdWUpIT1udWxsJiZXLmxlbmd0aCYmbi5za2lwQWN0aXZlP1YoaC52YWx1ZSk6ITF9fX0pKSksVT1lLmNvbXB1dGVkKCgpPT4oe2RwX19idXR0b246ITAsZHBfX292ZXJsYXlfYWN0aW9uOiEwLGRwX19vdmVyX2FjdGlvbl9zY3JvbGw6RS52YWx1ZSxkcF9fYnV0dG9uX2JvdHRvbTpuLmF1dG9BcHBseX0pKSxHPWUuY29tcHV0ZWQoKCk9Pnt2YXIgQyxoO3JldHVybntkcF9fb3ZlcmxheV9jb250YWluZXI6ITAsZHBfX2NvbnRhaW5lcl9mbGV4OigoQz1uLml0ZW1zKT09bnVsbD92b2lkIDA6Qy5sZW5ndGgpPD02LGRwX19jb250YWluZXJfYmxvY2s6KChoPW4uaXRlbXMpPT1udWxsP3ZvaWQgMDpoLmxlbmd0aCk+Nn19KSxKPUM9Pntjb25zdCBoPW4ubWF4VmFsdWV8fG4ubWF4VmFsdWU9PT0wLGY9bi5taW5WYWx1ZXx8bi5taW5WYWx1ZT09PTA7cmV0dXJuIWgmJiFmPyExOmgmJmY/K0M+K24ubWF4VmFsdWV8fCtDPCtuLm1pblZhbHVlOmg/K0M+K24ubWF4VmFsdWU6Zj8rQzwrbi5taW5WYWx1ZTohMX0scmU9KCk9Pntjb25zdCBDPWNlKHYpLGg9Y2UoeCksZj1jZShrKSxjPWNlKFkpLE49Zj9mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDowO2gmJihxLnZhbHVlPWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LU4pLEMmJmMmJihjLnNjcm9sbFRvcD1DLm9mZnNldFRvcC1jLm9mZnNldFRvcC0ocS52YWx1ZS8yLUMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KS1OKX0sb2U9Qz0+eyFuLmRpc2FibGVkVmFsdWVzLnNvbWUoaD0+aD09PUMpJiYhSihDKSYmKHIoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixDKSxyKFwic2VsZWN0ZWRcIikpfSxWPUM9Pntjb25zdCBoPW4ubW9udGhQaWNrZXI/bi55ZWFyOkM7cmV0dXJuIEV0KG4ubXVsdGlNb2RlbFZhbHVlLGQuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Quc2V0TW9udGgobmV3IERhdGUsbS52YWx1ZXx8MCk6bmV3IERhdGUsbi5tb250aFBpY2tlcj9oOm0udmFsdWV8fGgpLGQuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Quc2V0TW9udGgobmV3IERhdGUsQyk6bmV3IERhdGUsaCkpfSxEPSgpPT57cihcInRvZ2dsZVwiKSxyKFwicmVzZXQtZmxvd1wiKX0seT0oKT0+e24uZXNjQ2xvc2UmJkQoKX0sVD0oQyxoLGYsYyk9PntDJiYoaC52YWx1ZT09PStuLm1vZGVsVmFsdWUmJiFuLmRpc2FibGVkVmFsdWVzLmluY2x1ZGVzKGgudmFsdWUpJiYodi52YWx1ZT1DKSxuLmFycm93TmF2aWdhdGlvbiYmKEFycmF5LmlzQXJyYXkoUC52YWx1ZVtmXSk/UC52YWx1ZVtmXVtjXT1DOlAudmFsdWVbZl09W0NdLEEoKSkpfSxBPSgpPT57dmFyIGgsZjtjb25zdCBDPShoPW4uaGVhZGVyUmVmcykhPW51bGwmJmgubGVuZ3RoP1tuLmhlYWRlclJlZnNdLmNvbmNhdChQLnZhbHVlKTpQLnZhbHVlLmNvbmNhdChbbi5za2lwQnV0dG9uUmVmP1tdOltrLnZhbHVlXV0pO3AoZ2UoQyksKGY9bi5oZWFkZXJSZWZzKSE9bnVsbCYmZi5sZW5ndGg/XCJtb250aFBpY2tlclwiOlwic2VsZWN0aW9uR3JpZFwiKX0sST1DPT57bi5hcnJvd05hdmlnYXRpb258fEMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9O3JldHVybiBhKHtmb2N1c0dyaWQ6Un0pLChDLGgpPT57dmFyIGY7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7cmVmX2tleTpcImdyaWRXcmFwUmVmXCIscmVmOngsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhPLnZhbHVlKSxyb2xlOlwiZGlhbG9nXCIsdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOltlLndpdGhLZXlzKHksW1wiZXNjXCJdKSxoWzBdfHwoaFswXT1lLndpdGhLZXlzKGM9PkkoYyksW1wibGVmdFwiXSkpLGhbMV18fChoWzFdPWUud2l0aEtleXMoYz0+SShjKSxbXCJ1cFwiXSkpLGhbMl18fChoWzJdPWUud2l0aEtleXMoYz0+SShjKSxbXCJkb3duXCJdKSksaFszXXx8KGhbM109ZS53aXRoS2V5cyhjPT5JKGMpLFtcInJpZ2h0XCJdKSldfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhHLnZhbHVlKSxyZWZfa2V5OlwiY29udGFpbmVyUmVmXCIscmVmOlkscm9sZTpcImdyaWRcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHtoZWlnaHQ6YCR7cS52YWx1ZX1weGB9KX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsYmEsW2UucmVuZGVyU2xvdChDLiRzbG90cyxcImhlYWRlclwiKV0pLEMuJHNsb3RzLm92ZXJsYXk/ZS5yZW5kZXJTbG90KEMuJHNsb3RzLFwib3ZlcmxheVwiLHtrZXk6MH0pOihlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LGUucmVuZGVyTGlzdChfLnZhbHVlLChjLE4pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19vdmVybGF5X3Jvd1wiLHtkcF9fZmxleF9yb3c6Xy52YWx1ZS5sZW5ndGg+PTN9XSksa2V5Ok4scm9sZTpcInJvd1wifSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGMsKE0sVyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse3JvbGU6XCJncmlkY2VsbFwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoUS52YWx1ZSksa2V5Ok0udmFsdWUsXCJhcmlhLXNlbGVjdGVkXCI6TS52YWx1ZT09PXQubW9kZWxWYWx1ZSYmIXQuZGlzYWJsZWRWYWx1ZXMuaW5jbHVkZXMoTS52YWx1ZSksXCJhcmlhLWRpc2FibGVkXCI6TS5jbGFzc05hbWUuZHBfX292ZXJsYXlfY2VsbF9kaXNhYmxlZCxyZWZfZm9yOiEwLHJlZjpvPT5UKG8sTSxOLFcpLHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6bz0+b2UoTS52YWx1ZSksb25LZXlkb3duOltlLndpdGhLZXlzKG89Pm9lKE0udmFsdWUpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKG89Pm9lKE0udmFsdWUpLFtcInNwYWNlXCJdKV0sb25Nb3VzZW92ZXI6bz0+bS52YWx1ZT1NLnZhbHVlfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhNLmNsYXNzTmFtZSl9LFtDLiRzbG90cy5pdGVtP2UucmVuZGVyU2xvdChDLiRzbG90cyxcIml0ZW1cIix7a2V5OjAsaXRlbTpNfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksQy4kc2xvdHMuaXRlbT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKE0udGV4dCksMSldLDY0KSldLDIpXSw0MixEYSkpKSwxMjgpKV0sMikpKSwxMjgpKV0sNiksQy4kc2xvdHNbXCJidXR0b24taWNvblwiXT9lLndpdGhEaXJlY3RpdmVzKChlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooZj10LmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpmLnRvZ2dsZU92ZXJsYXksY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhVLnZhbHVlKSx0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwidG9nZ2xlQnV0dG9uXCIscmVmOmssb25DbGljazpELG9uS2V5ZG93bjpbZS53aXRoS2V5cyhELFtcImVudGVyXCJdKSxlLndpdGhLZXlzKEQsW1widGFiXCJdKV19LFtlLnJlbmRlclNsb3QoQy4kc2xvdHMsXCJidXR0b24taWNvblwiKV0sNDIsTWEpKSxbW2UudlNob3csIWUudW5yZWYoQikodC50eXBlKV1dKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNDIsd2EpfX19KSxDYT1bXCJhcmlhLWxhYmVsXCJdLGVuPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJSZWd1bGFyUGlja2VyXCIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSxzaG93U2VsZWN0aW9uR3JpZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6bnVsbH0saXRlbXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGRpc2FibGVkVmFsdWVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtaW5WYWx1ZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDpudWxsfSxtYXhWYWx1ZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDpudWxsfSxzbG90TmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSxvdmVybGF5U2xvdDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSxoZWFkZXJSZWZzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxlc2NDbG9zZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sdHJhbnNpdGlvbnM6e3R5cGU6W09iamVjdCxCb29sZWFuXSxkZWZhdWx0OiExfSxhcnJvd05hdmlnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvQXBwbHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhcmlhTGFiZWxzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxoaWRlTmF2aWdhdGlvbjp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX19LGVtaXRzOltcInVwZGF0ZTptb2RlbC12YWx1ZVwiLFwidG9nZ2xlXCIsXCJzZXQtcmVmXCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IHI9dCx7dHJhbnNpdGlvbk5hbWU6bixzaG93VHJhbnNpdGlvbjp1fT1RZShyLnRyYW5zaXRpb25zKSxwPWUucmVmKG51bGwpO3JldHVybiBlLm9uTW91bnRlZCgoKT0+YShcInNldC1yZWZcIixwKSksKGcsQik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLGNsYXNzOlwiZHBfX2J0biBkcF9fbW9udGhfeWVhcl9zZWxlY3RcIixvbkNsaWNrOkJbMF18fChCWzBdPUU9PmcuJGVtaXQoXCJ0b2dnbGVcIikpLG9uS2V5ZG93bjpbQlsxXXx8KEJbMV09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoRT0+Zy4kZW1pdChcInRvZ2dsZVwiKSxbXCJwcmV2ZW50XCJdKSxbXCJlbnRlclwiXSkpLEJbMl18fChCWzJdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEU9PmcuJGVtaXQoXCJ0b2dnbGVcIiksW1wicHJldmVudFwiXSksW1wic3BhY2VcIl0pKV0sXCJhcmlhLWxhYmVsXCI6dC5hcmlhTGFiZWwsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcImVsUmVmXCIscmVmOnB9LFtlLnJlbmRlclNsb3QoZy4kc2xvdHMsXCJkZWZhdWx0XCIpXSw0MCxDYSksZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6ZS51bnJlZihuKSh0LnNob3dTZWxlY3Rpb25HcmlkKSxjc3M6ZS51bnJlZih1KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5zaG93U2VsZWN0aW9uR3JpZD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFdlLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHttb2RlbFZhbHVlOnQubW9kZWxWYWx1ZSxpdGVtczp0Lml0ZW1zLGRpc2FibGVkVmFsdWVzOnQuZGlzYWJsZWRWYWx1ZXMsbWluVmFsdWU6dC5taW5WYWx1ZSxtYXhWYWx1ZTp0Lm1heFZhbHVlLGVzY0Nsb3NlOnQuZXNjQ2xvc2UsdHlwZTp0LnR5cGUsYXJyb3dOYXZpZ2F0aW9uOnQuYXJyb3dOYXZpZ2F0aW9uLHRleHRJbnB1dDp0LnRleHRJbnB1dCxhdXRvQXBwbHk6dC5hdXRvQXBwbHksYXJpYUxhYmVsczp0LmFyaWFMYWJlbHMsaGlkZU5hdmlnYXRpb246dC5oaWRlTmF2aWdhdGlvbn0se1wiaGVhZGVyLXJlZnNcIjpbXSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpCWzNdfHwoQlszXT1FPT5nLiRlbWl0KFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsRSkpLG9uVG9nZ2xlOkJbNF18fChCWzRdPUU9PmcuJGVtaXQoXCJ0b2dnbGVcIikpfSksZS5jcmVhdGVTbG90cyh7XCJidXR0b24taWNvblwiOmUud2l0aEN0eCgoKT0+W2cuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLnJlbmRlclNsb3QoZy4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZy4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihHZSkse2tleToxfSkpXSksXzoyfSxbZy4kc2xvdHNbdC5zbG90TmFtZV0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpFfSk9PltlLnJlbmRlclNsb3QoZy4kc2xvdHMsdC5zbG90TmFtZSx7aXRlbTpFfSldKSxrZXk6XCIwXCJ9OnZvaWQgMCxnLiRzbG90c1t0Lm92ZXJsYXlTbG90XT97bmFtZTpcIm92ZXJsYXlcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QoZy4kc2xvdHMsdC5vdmVybGF5U2xvdCldKSxrZXk6XCIxXCJ9OnZvaWQgMCxnLiRzbG90c1tgJHt0Lm92ZXJsYXlTbG90fS1oZWFkZXJgXT97bmFtZTpcImhlYWRlclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChnLiRzbG90cyxgJHt0Lm92ZXJsYXlTbG90fS1oZWFkZXJgKV0pLGtleTpcIjJcIn06dm9pZCAwXSksMTA0MCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldLDY0KSl9fSksJGE9e2NsYXNzOlwiZHBfX21vbnRoX3llYXJfcm93XCJ9LFNhPXtjbGFzczpcImRwX19tb250aF9waWNrZXJfaGVhZGVyXCJ9LEJhPVtcImFyaWEtbGFiZWxcIl0sTmE9W1wiYXJpYS1sYWJlbFwiXSx2YT1bXCJhcmlhLWxhYmVsXCJdLFBhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJNb250aFllYXJQaWNrZXJcIixwcm9wczp7bW9udGg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0seWVhcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxpbnN0YW5jZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSx5ZWFyczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbW9udGhzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sLi4uRWV9LGVtaXRzOltcInVwZGF0ZS1tb250aC15ZWFyXCIsXCJtb250aC15ZWFyLXNlbGVjdFwiLFwibW91bnRcIixcInJlc2V0LWZsb3dcIixcIm92ZXJsYXktY2xvc2VkXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7ZGVmYXVsdHM6dX09JGUobikse3RyYW5zaXRpb25OYW1lOnAsc2hvd1RyYW5zaXRpb246Z309UWUodS52YWx1ZS50cmFuc2l0aW9ucykse2J1aWxkTWF0cml4OkJ9PV9lKCkse2hhbmRsZU1vbnRoWWVhckNoYW5nZTpFLGlzRGlzYWJsZWQ6dix1cGRhdGVNb250aFllYXI6eH09Sm4obixyKSxQPWUucmVmKCExKSxtPWUucmVmKCExKSxrPWUucmVmKFtudWxsLG51bGwsbnVsbCxudWxsXSkscT1lLnJlZihudWxsKSxZPWUucmVmKG51bGwpLEw9ZS5yZWYobnVsbCk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRcIil9KTtjb25zdCBSPXM9Pih7Z2V0OigpPT5uW3NdLHNldDpsPT57Y29uc3QgUz1zPT09XCJtb250aFwiP1wieWVhclwiOlwibW9udGhcIjtyKFwidXBkYXRlLW1vbnRoLXllYXJcIix7W3NdOmwsW1NdOm5bU119KSxyKFwibW9udGgteWVhci1zZWxlY3RcIixzPT09XCJ5ZWFyXCIpLHM9PT1cIm1vbnRoXCI/YyghMCk6TighMCl9fSksTz1lLmNvbXB1dGVkKFIoXCJtb250aFwiKSksUT1lLmNvbXB1dGVkKFIoXCJ5ZWFyXCIpKSxlZT1zPT57Y29uc3QgbD1kLmdldFllYXIoJChzKSk7cmV0dXJuIG4ueWVhcj09PWx9LF89ZS5jb21wdXRlZCgoKT0+bi5tb250aFBpY2tlcj9BcnJheS5pc0FycmF5KG4uZGlzYWJsZWREYXRlcyk/bi5kaXNhYmxlZERhdGVzLm1hcChzPT4kKHMpKS5maWx0ZXIocz0+ZWUocykpLm1hcChzPT5kLmdldE1vbnRoKHMpKTpbXTpbXSksVT1lLmNvbXB1dGVkKCgpPT5zPT57Y29uc3QgbD1zPT09XCJtb250aFwiO3JldHVybntzaG93U2VsZWN0aW9uR3JpZDoobD9QOm0pLnZhbHVlLGl0ZW1zOihsP0E6SSkudmFsdWUsZGlzYWJsZWRWYWx1ZXM6dS52YWx1ZS5maWx0ZXJzW2w/XCJtb250aHNcIjpcInllYXJzXCJdLmNvbmNhdChfLnZhbHVlKSxtaW5WYWx1ZToobD9vZTpKKS52YWx1ZSxtYXhWYWx1ZToobD9WOnJlKS52YWx1ZSxoZWFkZXJSZWZzOmwmJm4ubW9udGhQaWNrZXI/W3EudmFsdWUsWS52YWx1ZSxMLnZhbHVlXTpbXSxlc2NDbG9zZTpuLmVzY0Nsb3NlLHRyYW5zaXRpb25zOnUudmFsdWUudHJhbnNpdGlvbnMsYXJpYUxhYmVsczp1LnZhbHVlLmFyaWFMYWJlbHMsdGV4dElucHV0Om4udGV4dElucHV0LGF1dG9BcHBseTpuLmF1dG9BcHBseSxhcnJvd05hdmlnYXRpb246bi5hcnJvd05hdmlnYXRpb24saGlkZU5hdmlnYXRpb246bi5oaWRlTmF2aWdhdGlvbn19KSxHPWUuY29tcHV0ZWQoKCk9PnM9Pih7bW9udGg6bi5tb250aCx5ZWFyOm4ueWVhcixpdGVtczpzPT09XCJtb250aFwiP24ubW9udGhzOm4ueWVhcnMsaW5zdGFuY2U6bi5pbnN0YW5jZSx1cGRhdGVNb250aFllYXI6eCx0b2dnbGU6cz09PVwibW9udGhcIj9jOk59KSksSj1lLmNvbXB1dGVkKCgpPT5uLm1pbkRhdGU/ZC5nZXRZZWFyKCQobi5taW5EYXRlKSk6bnVsbCkscmU9ZS5jb21wdXRlZCgoKT0+bi5tYXhEYXRlP2QuZ2V0WWVhcigkKG4ubWF4RGF0ZSkpOm51bGwpLG9lPWUuY29tcHV0ZWQoKCk9PntpZihuLm1pbkRhdGUmJkoudmFsdWUpe2lmKEoudmFsdWU+bi55ZWFyKXJldHVybiAxMjtpZihKLnZhbHVlPT09bi55ZWFyKXJldHVybiBkLmdldE1vbnRoKCQobi5taW5EYXRlKSl9cmV0dXJuIG51bGx9KSxWPWUuY29tcHV0ZWQoKCk9Pm4ubWF4RGF0ZSYmcmUudmFsdWU/cmUudmFsdWU8bi55ZWFyPy0xOnJlLnZhbHVlPT09bi55ZWFyP2QuZ2V0TW9udGgoJChuLm1heERhdGUpKTpudWxsOm51bGwpLEQ9ZS5jb21wdXRlZCgoKT0+KG4ucmFuZ2V8fG4ubXVsdGlEYXRlcykmJm4uaW50ZXJuYWxNb2RlbFZhbHVlJiYobi5tb250aFBpY2tlcnx8bi55ZWFyUGlja2VyKT9uLmludGVybmFsTW9kZWxWYWx1ZTpbXSkseT1zPT57Y29uc3QgbD1bXSxTPUY9PkY7Zm9yKGxldCBGPTA7RjxzLmxlbmd0aDtGKz0zKXtjb25zdCB0ZT1bc1tGXSxzW0YrMV0sc1tGKzJdXTtsLnB1c2goUyh0ZSkpfXJldHVybiBsfSxUPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBzPW4ubW9udGhzLmZpbmQobD0+bC52YWx1ZT09PW4ubW9udGgpO3JldHVybiBzfHx7dGV4dDpcIlwiLHZhbHVlOjB9fSksQT1lLmNvbXB1dGVkKCgpPT55KG4ubW9udGhzKSksST1lLmNvbXB1dGVkKCgpPT55KG4ueWVhcnMpKSxDPWUuY29tcHV0ZWQoKCk9PnUudmFsdWUubXVsdGlDYWxlbmRhcnM/bi5tdWx0aUNhbGVuZGFyc1NvbG8/ITA6bi5pbnN0YW5jZT09PTA6ITApLGg9ZS5jb21wdXRlZCgoKT0+dS52YWx1ZS5tdWx0aUNhbGVuZGFycz9uLm11bHRpQ2FsZW5kYXJzU29sbz8hMDpuLmluc3RhbmNlPT09dS52YWx1ZS5tdWx0aUNhbGVuZGFycy0xOiEwKSxmPShzLGwpPT57bCE9PXZvaWQgMD9zLnZhbHVlPWw6cy52YWx1ZT0hcy52YWx1ZX0sYz0ocz0hMSxsKT0+e00ocyksZihQLGwpLFAudmFsdWV8fHIoXCJvdmVybGF5LWNsb3NlZFwiKX0sTj0ocz0hMSxsKT0+e00ocyksZihtLGwpLG0udmFsdWV8fHIoXCJvdmVybGF5LWNsb3NlZFwiKX0sTT1zPT57c3x8cihcInJlc2V0LWZsb3dcIil9LFc9KHM9ITEpPT57di52YWx1ZShzKXx8cihcInVwZGF0ZS1tb250aC15ZWFyXCIse3llYXI6cz9uLnllYXIrMTpuLnllYXItMSxtb250aDpuLm1vbnRoLGZyb21OYXY6ITB9KX0sbz0ocyxsKT0+e24uYXJyb3dOYXZpZ2F0aW9uJiYoay52YWx1ZVtsXT1jZShzKSxCKGsudmFsdWUsXCJtb250aFllYXJcIikpfTtyZXR1cm4gYSh7dG9nZ2xlTW9udGhQaWNrZXI6Yyx0b2dnbGVZZWFyUGlja2VyOk4saGFuZGxlTW9udGhZZWFyQ2hhbmdlOkV9KSwocyxsKT0+e3ZhciBTLEYsdGUscGUseWU7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwkYSxbcy4kc2xvdHNbXCJtb250aC15ZWFyXCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcIm1vbnRoLXllYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LHttb250aDp0Lm1vbnRoLHllYXI6dC55ZWFyLG1vbnRoczp0Lm1vbnRocyx5ZWFyczp0LnllYXJzLHVwZGF0ZU1vbnRoWWVhcjplLnVucmVmKHgpLGhhbmRsZU1vbnRoWWVhckNoYW5nZTplLnVucmVmKEUpLGluc3RhbmNlOnQuaW5zdGFuY2V9KSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbIXMubW9udGhQaWNrZXImJiFzLnllYXJQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtDLnZhbHVlJiYhcy52ZXJ0aWNhbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGJ0LHtrZXk6MCxcImFyaWEtbGFiZWxcIjooUz1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpTLnByZXZNb250aCxkaXNhYmxlZDplLnVucmVmKHYpKCExKSxvbkFjdGl2YXRlOmxbMF18fChsWzBdPVo9PmUudW5yZWYoRSkoITEpKSxvblNldFJlZjpsWzFdfHwobFsxXT1aPT5vKFosMCkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltzLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiYXJyb3ctbGVmdFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzW1wiYXJyb3ctbGVmdFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodnQpLHtrZXk6MX0pKV0pLF86M30sOCxbXCJhcmlhLWxhYmVsXCIsXCJkaXNhYmxlZFwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX21vbnRoX3llYXJfd3JhcFwiLHtkcF9feWVhcl9kaXNhYmxlX3NlbGVjdDpuLmRpc2FibGVZZWFyU2VsZWN0fV0pfSxbZS5jcmVhdGVWTm9kZShlbixlLm1lcmdlUHJvcHMoe3R5cGU6XCJtb250aFwiLFwic2xvdC1uYW1lXCI6XCJtb250aC1vdmVybGF5LXZhbFwiLFwib3ZlcmxheS1zbG90XCI6XCJvdmVybGF5LW1vbnRoXCIsXCJhcmlhLWxhYmVsXCI6KEY9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Ri5vcGVuTW9udGhzT3ZlcmxheSxtb2RlbFZhbHVlOk8udmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6bFsyXXx8KGxbMl09Wj0+Ty52YWx1ZT1aKX0sVS52YWx1ZShcIm1vbnRoXCIpLHtvblRvZ2dsZTpjLG9uU2V0UmVmOmxbM118fChsWzNdPVo9Pm8oWiwxKSl9KSxlLmNyZWF0ZVNsb3RzKHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3MuJHNsb3RzLm1vbnRoP2UucmVuZGVyU2xvdChzLiRzbG90cyxcIm1vbnRoXCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSxULnZhbHVlKSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzLm1vbnRoP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoVC52YWx1ZS50ZXh0KSwxKV0sNjQpKV0pLF86Mn0sW3MuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT97bmFtZTpcImNhbGVuZGFyLWljb25cIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIpXSksa2V5OlwiMFwifTp2b2lkIDAscy4kc2xvdHNbXCJtb250aC1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwibW9udGgtb3ZlcmxheS12YWxcIixmbjplLndpdGhDdHgoKHtpdGVtOlp9KT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcIm1vbnRoLW92ZXJsYXktdmFsdWVcIix7dGV4dDpaLnRleHQsdmFsdWU6Wi52YWx1ZX0pXSksa2V5OlwiMVwifTp2b2lkIDAscy4kc2xvdHNbXCJtb250aC1vdmVybGF5XCJdP3tuYW1lOlwib3ZlcmxheS1tb250aFwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcIm1vbnRoLW92ZXJsYXlcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKEcudmFsdWUoXCJtb250aFwiKSkpKV0pLGtleTpcIjJcIn06dm9pZCAwLHMuJHNsb3RzW1wibW9udGgtb3ZlcmxheS1oZWFkZXJcIl0/e25hbWU6XCJvdmVybGF5LW1vbnRoLWhlYWRlclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcIm1vbnRoLW92ZXJsYXktaGVhZGVyXCIse3RvZ2dsZTpjfSldKSxrZXk6XCIzXCJ9OnZvaWQgMF0pLDEwNDAsW1wiYXJpYS1sYWJlbFwiLFwibW9kZWxWYWx1ZVwiXSksbi5kaXNhYmxlWWVhclNlbGVjdD9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGVuLGUubWVyZ2VQcm9wcyh7a2V5OjAsdHlwZTpcInllYXJcIixcInNsb3QtbmFtZVwiOlwieWVhci1vdmVybGF5LXZhbFwiLFwib3ZlcmxheS1zbG90XCI6XCJvdmVybGF5LXllYXJcIixcImFyaWEtbGFiZWxcIjoodGU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6dGUub3BlblllYXJzT3ZlcmxheSxtb2RlbFZhbHVlOlEudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6bFs0XXx8KGxbNF09Wj0+US52YWx1ZT1aKX0sVS52YWx1ZShcInllYXJcIikse29uVG9nZ2xlOk4sb25TZXRSZWY6bFs1XXx8KGxbNV09Wj0+byhaLDIpKX0pLGUuY3JlYXRlU2xvdHMoe2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcy4kc2xvdHMueWVhcj9lLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJ5ZWFyXCIse2tleTowLHllYXI6dC55ZWFyfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHMueWVhcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQueWVhciksMSldLDY0KSldKSxfOjJ9LFtzLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/e25hbWU6XCJjYWxlbmRhci1pY29uXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiKV0pLGtleTpcIjBcIn06dm9pZCAwLHMuJHNsb3RzW1wieWVhci1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwieWVhci1vdmVybGF5LXZhbFwiLGZuOmUud2l0aEN0eCgoe2l0ZW06Wn0pPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwieWVhci1vdmVybGF5LXZhbHVlXCIse3RleHQ6Wi50ZXh0LHZhbHVlOloudmFsdWV9KV0pLGtleTpcIjFcIn06dm9pZCAwLHMuJHNsb3RzW1wieWVhci1vdmVybGF5XCJdP3tuYW1lOlwib3ZlcmxheS15ZWFyXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwieWVhci1vdmVybGF5XCIsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhHLnZhbHVlKFwieWVhclwiKSkpKV0pLGtleTpcIjJcIn06dm9pZCAwLHMuJHNsb3RzW1wieWVhci1vdmVybGF5LWhlYWRlclwiXT97bmFtZTpcIm92ZXJsYXkteWVhci1oZWFkZXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktaGVhZGVyXCIse3RvZ2dsZTpOfSldKSxrZXk6XCIzXCJ9OnZvaWQgMF0pLDEwNDAsW1wiYXJpYS1sYWJlbFwiLFwibW9kZWxWYWx1ZVwiXSkpXSwyKSxDLnZhbHVlJiZzLnZlcnRpY2FsPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYnQse2tleToxLFwiYXJpYS1sYWJlbFwiOihwZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpwZS5wcmV2TW9udGgsZGlzYWJsZWQ6ZS51bnJlZih2KSghMSksb25BY3RpdmF0ZTpsWzZdfHwobFs2XT1aPT5lLnVucmVmKEUpKCExKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3MuJHNsb3RzW1wiYXJyb3ctdXBcIl0/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiYXJyb3ctdXBcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90c1tcImFycm93LXVwXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihBdCkse2tleToxfSkpXSksXzozfSw4LFtcImFyaWEtbGFiZWxcIixcImRpc2FibGVkXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksaC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGJ0LHtrZXk6MixyZWY6XCJyaWdodEljb25cIixkaXNhYmxlZDplLnVucmVmKHYpKCEwKSxcImFyaWEtbGFiZWxcIjooeWU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6eWUubmV4dE1vbnRoLG9uQWN0aXZhdGU6bFs3XXx8KGxbN109Wj0+ZS51bnJlZihFKSghMCkpLG9uU2V0UmVmOmxbOF18fChsWzhdPVo9Pm8oWiwzKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3MuJHNsb3RzW3MudmVydGljYWw/XCJhcnJvdy1kb3duXCI6XCJhcnJvdy1yaWdodFwiXT9lLnJlbmRlclNsb3Qocy4kc2xvdHMscy52ZXJ0aWNhbD9cImFycm93LWRvd25cIjpcImFycm93LXJpZ2h0XCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHNbcy52ZXJ0aWNhbD9cImFycm93LWRvd25cIjpcImFycm93LXJpZ2h0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChzLnZlcnRpY2FsP2UudW5yZWYoVnQpOmUudW5yZWYoUHQpKSx7a2V5OjF9KSldKSxfOjN9LDgsW1wiZGlzYWJsZWRcIixcImFyaWEtbGFiZWxcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNjQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLm1vbnRoUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soV2UsZS5tZXJnZVByb3BzKHtrZXk6MX0sVS52YWx1ZShcIm1vbnRoXCIpLHtcInNraXAtYWN0aXZlXCI6cy5yYW5nZSxcImludGVybmFsLW1vZGVsLXZhbHVlXCI6dC5pbnRlcm5hbE1vZGVsVmFsdWUseWVhcjp0LnllYXIsXCJhdXRvLWFwcGx5LW1vbnRoXCI6cy5hdXRvQXBwbHlNb250aCxcIm11bHRpLW1vZGVsLXZhbHVlXCI6RC52YWx1ZSxcIm1vbnRoLXBpY2tlclwiOlwiXCIsbW9kZWxWYWx1ZTpPLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOmxbMTddfHwobFsxN109Wj0+Ty52YWx1ZT1aKSxvblRvZ2dsZTpjLG9uU2VsZWN0ZWQ6bFsxOF18fChsWzE4XT1aPT5zLiRlbWl0KFwib3ZlcmxheS1jbG9zZWRcIikpfSksZS5jcmVhdGVTbG90cyh7aGVhZGVyOmUud2l0aEN0eCgoKT0+e3ZhciBaLENlLGtlO3JldHVybltlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLFNhLFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19tb250aF95ZWFyX2NvbF9uYXZcIix0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwibXBQcmV2SWNvblJlZlwiLHJlZjpxLG9uQ2xpY2s6bFs5XXx8KGxbOV09bWU9PlcoITEpKSxvbktleWRvd246bFsxMF18fChsWzEwXT1lLndpdGhLZXlzKG1lPT5XKCExKSxbXCJlbnRlclwiXSkpfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9faW5uZXJfbmF2XCIse2RwX19pbm5lcl9uYXZfZGlzYWJsZWQ6ZS51bnJlZih2KSghMSl9XSkscm9sZTpcImJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOihaPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOloucHJldk1vbnRofSxbcy4kc2xvdHNbXCJhcnJvdy1sZWZ0XCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcImFycm93LWxlZnRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZ0KSx7a2V5OjF9KSldLDEwLEJhKV0sNTQ0KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19wb2ludGVyXCIscm9sZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJtcFllYXJCdXR0b25SZWZcIixyZWY6WSxcImFyaWEtbGFiZWxcIjooQ2U9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Q2Uub3BlblllYXJzT3ZlcmxheSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOmxbMTFdfHwobFsxMV09KCk9Pk4oITEpKSxvbktleWRvd246bFsxMl18fChsWzEyXT1lLndpdGhLZXlzKCgpPT5OKCExKSxbXCJlbnRlclwiXSkpfSxbcy4kc2xvdHMueWVhcj9lLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJ5ZWFyXCIse2tleTowLHllYXI6dC55ZWFyfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHMueWVhcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQueWVhciksMSldLDY0KSldLDQwLE5hKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19tb250aF95ZWFyX2NvbF9uYXZcIix0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwibXBOZXh0SWNvblJlZlwiLHJlZjpMLG9uQ2xpY2s6bFsxM118fChsWzEzXT1tZT0+VyghMCkpLG9uS2V5ZG93bjpsWzE0XXx8KGxbMTRdPWUud2l0aEtleXMobWU9PlcoITApLFtcImVudGVyXCJdKSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19pbm5lcl9uYXZcIix7ZHBfX2lubmVyX25hdl9kaXNhYmxlZDplLnVucmVmKHYpKCEwKX1dKSxyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KGtlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOmtlLm5leHRNb250aH0sW3MuJHNsb3RzW1wiYXJyb3ctcmlnaHRcIl0/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiYXJyb3ctcmlnaHRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90c1tcImFycm93LXJpZ2h0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihQdCkse2tleToxfSkpXSwxMCx2YSldLDU0NCldKSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTplLnVucmVmKHApKG0udmFsdWUpLGNzczplLnVucmVmKGcpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlttLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soV2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sVS52YWx1ZShcInllYXJcIikse21vZGVsVmFsdWU6US52YWx1ZSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpsWzE1XXx8KGxbMTVdPW1lPT5RLnZhbHVlPW1lKSxvblRvZ2dsZTpOLG9uU2VsZWN0ZWQ6bFsxNl18fChsWzE2XT1tZT0+cy4kZW1pdChcIm92ZXJsYXktY2xvc2VkXCIpKX0pLGUuY3JlYXRlU2xvdHMoe1wiYnV0dG9uLWljb25cIjplLndpdGhDdHgoKCk9PltzLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoR2UpLHtrZXk6MX0pKV0pLF86Mn0sW3MuJHNsb3RzW1wieWVhci1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06bWV9KT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcInllYXItb3ZlcmxheS12YWx1ZVwiLHt0ZXh0Om1lLnRleHQsdmFsdWU6bWUudmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTA0MCxbXCJtb2RlbFZhbHVlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKV19KSxfOjJ9LFtzLiRzbG90c1tcIm1vbnRoLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpafSk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aC1vdmVybGF5LXZhbHVlXCIse3RleHQ6Wi50ZXh0LHZhbHVlOloudmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTA0MCxbXCJza2lwLWFjdGl2ZVwiLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIixcInllYXJcIixcImF1dG8tYXBwbHktbW9udGhcIixcIm11bHRpLW1vZGVsLXZhbHVlXCIsXCJtb2RlbFZhbHVlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy55ZWFyUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soV2UsZS5tZXJnZVByb3BzKHtrZXk6Mn0sVS52YWx1ZShcInllYXJcIikse21vZGVsVmFsdWU6US52YWx1ZSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpsWzE5XXx8KGxbMTldPVo9PlEudmFsdWU9WiksXCJtdWx0aS1tb2RlbC12YWx1ZVwiOkQudmFsdWUsXCJza2lwLWFjdGl2ZVwiOnMucmFuZ2UsXCJza2lwLWJ1dHRvbi1yZWZcIjpcIlwiLFwieWVhci1waWNrZXJcIjpcIlwiLG9uVG9nZ2xlOk4sb25TZWxlY3RlZDpsWzIwXXx8KGxbMjBdPVo9PnMuJGVtaXQoXCJvdmVybGF5LWNsb3NlZFwiKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtzLiRzbG90c1tcInllYXItb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOlp9KT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcInllYXItb3ZlcmxheS12YWx1ZVwiLHt0ZXh0OloudGV4dCx2YWx1ZTpaLnZhbHVlfSldKSxrZXk6XCIwXCJ9OnZvaWQgMF0pLDEwNDAsW1wibW9kZWxWYWx1ZVwiLFwibXVsdGktbW9kZWwtdmFsdWVcIixcInNraXAtYWN0aXZlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDY0KSldKX19fSksVGE9e2tleTowLGNsYXNzOlwiZHBfX3RpbWVfaW5wdXRcIn0sQWE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCIsXCJvbkNsaWNrXCJdLFZhPWUuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczpcImRwX190cF9pbmxpbmVfYnRuX2JhciBkcF9fdHBfYnRuX2luX2xcIn0sbnVsbCwtMSksX2E9ZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIse2NsYXNzOlwiZHBfX3RwX2lubGluZV9idG5fYmFyIGRwX190cF9idG5faW5fclwifSxudWxsLC0xKSxFYT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIixcIm9uQ2xpY2tcIl0sUmE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCIsXCJvbkNsaWNrXCJdLElhPWUuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczpcImRwX190cF9pbmxpbmVfYnRuX2JhciBkcF9fdHBfYnRuX2luX2xcIn0sbnVsbCwtMSksT2E9ZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIse2NsYXNzOlwiZHBfX3RwX2lubGluZV9idG5fYmFyIGRwX190cF9idG5faW5fclwifSxudWxsLC0xKSxZYT17a2V5OjB9LHhhPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiXSxMYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiVGltZUlucHV0XCIscHJvcHM6e2hvdXJzOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LG1pbnV0ZXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sc2Vjb25kczp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxjbG9zZVRpbWVQaWNrZXJCdG46e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sb3JkZXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uRWV9LGVtaXRzOltcInNldC1ob3Vyc1wiLFwic2V0LW1pbnV0ZXNcIixcInVwZGF0ZTpob3Vyc1wiLFwidXBkYXRlOm1pbnV0ZXNcIixcInVwZGF0ZTpzZWNvbmRzXCIsXCJyZXNldC1mbG93XCIsXCJtb3VudGVkXCIsXCJvdmVybGF5LWNsb3NlZFwiLFwiYW0tcG0tY2hhbmdlXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7c2V0VGltZVBpY2tlckVsZW1lbnRzOnUsc2V0VGltZVBpY2tlckJhY2tSZWY6cH09X2UoKSx7ZGVmYXVsdHM6Z309JGUobikse3RyYW5zaXRpb25OYW1lOkIsc2hvd1RyYW5zaXRpb246RX09UWUoZy52YWx1ZS50cmFuc2l0aW9ucyksdj1lLnJlYWN0aXZlKHtob3VyczohMSxtaW51dGVzOiExLHNlY29uZHM6ITF9KSx4PWUucmVmKFwiQU1cIiksUD1lLnJlZihudWxsKSxtPWUucmVmKFtdKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudGVkXCIpfSk7Y29uc3Qgaz1mPT5kLnNldChuZXcgRGF0ZSx7aG91cnM6Zi5ob3VycyxtaW51dGVzOmYubWludXRlcyxzZWNvbmRzOm4uZW5hYmxlU2Vjb25kcz9mLnNlY29uZHM6MCxtaWxsaXNlY29uZHM6MH0pLHE9ZS5jb21wdXRlZCgoKT0+KHtob3VyczpuLmhvdXJzLG1pbnV0ZXM6bi5taW51dGVzLHNlY29uZHM6bi5zZWNvbmRzfSkpLFk9ZS5jb21wdXRlZCgoKT0+Zj0+IUooK25bZl0rICtuW2Ake2Z9SW5jcmVtZW50YF0sZikpLEw9ZS5jb21wdXRlZCgoKT0+Zj0+IUooK25bZl0tK25bYCR7Zn1JbmNyZW1lbnRgXSxmKSksUj0oZixjKT0+ZC5hZGQoZC5zZXQoJCgpLGYpLGMpLE89KGYsYyk9PmQuc3ViKGQuc2V0KCQoKSxmKSxjKSxRPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX3RpbWVfY29sOiEwLGRwX190aW1lX2NvbF9ibG9jazohbi50aW1lUGlja2VySW5saW5lLGRwX190aW1lX2NvbF9yZWdfYmxvY2s6IW4uZW5hYmxlU2Vjb25kcyYmbi5pczI0JiYhbi50aW1lUGlja2VySW5saW5lLGRwX190aW1lX2NvbF9yZWdfaW5saW5lOiFuLmVuYWJsZVNlY29uZHMmJm4uaXMyNCYmbi50aW1lUGlja2VySW5saW5lLGRwX190aW1lX2NvbF9yZWdfd2l0aF9idXR0b246IW4uZW5hYmxlU2Vjb25kcyYmIW4uaXMyNCxkcF9fdGltZV9jb2xfc2VjOm4uZW5hYmxlU2Vjb25kcyYmbi5pczI0LGRwX190aW1lX2NvbF9zZWNfd2l0aF9idXR0b246bi5lbmFibGVTZWNvbmRzJiYhbi5pczI0fSkpLGVlPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBmPVt7dHlwZTpcImhvdXJzXCJ9LHt0eXBlOlwiXCIsc2VwYXJhdG9yOiEwfSx7dHlwZTpcIm1pbnV0ZXNcIn1dO3JldHVybiBuLmVuYWJsZVNlY29uZHM/Zi5jb25jYXQoW3t0eXBlOlwiXCIsc2VwYXJhdG9yOiEwfSx7dHlwZTpcInNlY29uZHNcIn1dKTpmfSksXz1lLmNvbXB1dGVkKCgpPT5lZS52YWx1ZS5maWx0ZXIoZj0+IWYuc2VwYXJhdG9yKSksVT1lLmNvbXB1dGVkKCgpPT5mPT57aWYoZj09PVwiaG91cnNcIil7Y29uc3QgYz1UKCtuLmhvdXJzKTtyZXR1cm57dGV4dDpjPDEwP2AwJHtjfWA6YCR7Y31gLHZhbHVlOmN9fXJldHVybnt0ZXh0Om5bZl08MTA/YDAke25bZl19YDpgJHtuW2ZdfWAsdmFsdWU6bltmXX19KSxHPWY9Pntjb25zdCBjPW4uaXMyND8yNDoxMixOPWY9PT1cImhvdXJzXCI/Yzo2MCxNPStuW2Ake2Z9R3JpZEluY3JlbWVudGBdLFc9Zj09PVwiaG91cnNcIiYmIW4uaXMyND9NOjAsbz1bXTtmb3IobGV0IHM9VztzPE47cys9TSlvLnB1c2goe3ZhbHVlOnMsdGV4dDpzPDEwP2AwJHtzfWA6YCR7c31gfSk7cmV0dXJuIGY9PT1cImhvdXJzXCImJiFuLmlzMjQmJm8ucHVzaCh7dmFsdWU6MCx0ZXh0OlwiMTJcIn0pLF9uKG8pfSxKPShmLGMpPT57Y29uc3QgTj1uLm1pblRpbWU/ayhudChuLm1pblRpbWUpKTpudWxsLE09bi5tYXhUaW1lP2sobnQobi5tYXhUaW1lKSk6bnVsbCxXPWsobnQocS52YWx1ZSxjLGYpKTtyZXR1cm4gTiYmTT8oZC5pc0JlZm9yZShXLE0pfHxkLmlzRXF1YWwoVyxNKSkmJihkLmlzQWZ0ZXIoVyxOKXx8ZC5pc0VxdWFsKFcsTikpOk4/ZC5pc0FmdGVyKFcsTil8fGQuaXNFcXVhbChXLE4pOk0/ZC5pc0JlZm9yZShXLE0pfHxkLmlzRXF1YWwoVyxNKTohMH0scmU9ZS5jb21wdXRlZCgoKT0+Zj0+RyhmKS5mbGF0KCkuZmlsdGVyKE49PkxuKE4udmFsdWUpKS5tYXAoTj0+Ti52YWx1ZSkuZmlsdGVyKE49PiFKKE4sZikpKSxvZT1mPT5uW2BubyR7ZlswXS50b1VwcGVyQ2FzZSgpK2Yuc2xpY2UoMSl9T3ZlcmxheWBdLFY9Zj0+e29lKGYpfHwodltmXT0hdltmXSx2W2ZdfHxyKFwib3ZlcmxheS1jbG9zZWRcIikpfSxEPWY9PmY9PT1cImhvdXJzXCI/ZC5nZXRIb3VyczpmPT09XCJtaW51dGVzXCI/ZC5nZXRNaW51dGVzOmQuZ2V0U2Vjb25kcyx5PShmLGM9ITApPT57Y29uc3QgTj1jP1I6TyxNPWM/K25bYCR7Zn1JbmNyZW1lbnRgXTotK25bYCR7Zn1JbmNyZW1lbnRgXTtKKCtuW2ZdK00sZikmJnIoYHVwZGF0ZToke2Z9YCxEKGYpKE4oe1tmXTorbltmXX0se1tmXTorbltgJHtmfUluY3JlbWVudGBdfSkpKX0sVD1mPT5uLmlzMjQ/ZjooZj49MTI/eC52YWx1ZT1cIlBNXCI6eC52YWx1ZT1cIkFNXCIsWW4oZikpLEE9KCk9Pnt4LnZhbHVlPT09XCJQTVwiPyh4LnZhbHVlPVwiQU1cIixyKFwidXBkYXRlOmhvdXJzXCIsbi5ob3Vycy0xMikpOih4LnZhbHVlPVwiUE1cIixyKFwidXBkYXRlOmhvdXJzXCIsbi5ob3VycysxMikpLHIoXCJhbS1wbS1jaGFuZ2VcIix4LnZhbHVlKX0sST1mPT57dltmXT0hMH0sQz0oZixjLE4pPT57aWYoZiYmbi5hcnJvd05hdmlnYXRpb24pe0FycmF5LmlzQXJyYXkobS52YWx1ZVtjXSk/bS52YWx1ZVtjXVtOXT1mOm0udmFsdWVbY109W2ZdO2NvbnN0IE09bS52YWx1ZS5yZWR1Y2UoKFcsbyk9Pm8ubWFwKChzLGwpPT5bLi4uV1tsXXx8W10sb1tsXV0pLFtdKTtwKG4uY2xvc2VUaW1lUGlja2VyQnRuKSxQLnZhbHVlJiYoTVsxXT1NWzFdLmNvbmNhdChQLnZhbHVlKSksdShNLG4ub3JkZXIpfX0saD0oZixjKT0+Zj09PVwiaG91cnNcIiYmIW4uaXMyND9yKGB1cGRhdGU6JHtmfWAseC52YWx1ZT09PVwiUE1cIj9jKzEyOmMpOnIoYHVwZGF0ZToke2Z9YCxjKTtyZXR1cm4gYSh7b3BlbkNoaWxkQ21wOkl9KSwoZixjKT0+e3ZhciBOO3JldHVybiBmLmRpc2FibGVkP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsVGEsWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlZS52YWx1ZSwoTSxXKT0+e3ZhciBvLHMsbDtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6VyxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFEudmFsdWUpfSxbTS5zZXBhcmF0b3I/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtlLmNyZWF0ZVRleHRWTm9kZShcIiA6IFwiKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fYnRuOiEwLGRwX19pbmNfZGVjX2J1dHRvbjohbi50aW1lUGlja2VySW5saW5lLGRwX19pbmNfZGVjX2J1dHRvbl9pbmxpbmU6bi50aW1lUGlja2VySW5saW5lLGRwX190cF9pbmxpbmVfYnRuX3RvcDpuLnRpbWVQaWNrZXJJbmxpbmUsZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVkOlkudmFsdWUoTS50eXBlKX0pLFwiYXJpYS1sYWJlbFwiOihvPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOm8uaW5jcmVtZW50VmFsdWUoTS50eXBlKSx0YWJpbmRleDpcIjBcIixvbktleWRvd246W2Uud2l0aEtleXMoUz0+eShNLnR5cGUpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKFM9PnkoTS50eXBlKSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6Uz0+eShNLnR5cGUpLHJlZl9mb3I6ITAscmVmOlM9PkMoUyxXLDApfSxbbi50aW1lUGlja2VySW5saW5lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbVmEsX2FdLDY0KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtmLiRzbG90c1tcImFycm93LXVwXCJdP2UucmVuZGVyU2xvdChmLiRzbG90cyxcImFycm93LXVwXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZi4kc2xvdHNbXCJhcnJvdy11cFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQXQpLHtrZXk6MX0pKV0sNjQpKV0sNDIsQWEpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjoocz1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpzLm9wZW5UcE92ZXJsYXkoTS50eXBlKSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19idG5cIixvZShNLnR5cGUpP3ZvaWQgMDp7ZHBfX3RpbWVfZGlzcGxheTohMCxkcF9fdGltZV9kaXNwbGF5X2Jsb2NrOiFuLnRpbWVQaWNrZXJJbmxpbmUsZHBfX3RpbWVfZGlzcGxheV9pbmxpbmU6bi50aW1lUGlja2VySW5saW5lfV0pLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhTPT5WKE0udHlwZSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoUz0+VihNLnR5cGUpLFtcInNwYWNlXCJdKV0sb25DbGljazpTPT5WKE0udHlwZSkscmVmX2ZvcjohMCxyZWY6Uz0+QyhTLFcsMSl9LFtmLiRzbG90c1tNLnR5cGVdP2UucmVuZGVyU2xvdChmLiRzbG90cyxNLnR5cGUse2tleTowLHRleHQ6VS52YWx1ZShNLnR5cGUpLnRleHQsdmFsdWU6VS52YWx1ZShNLnR5cGUpLnZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZi4kc2xvdHNbTS50eXBlXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKFUudmFsdWUoTS50eXBlKS50ZXh0KSwxKV0sNjQpKV0sNDIsRWEpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fYnRuOiEwLGRwX19pbmNfZGVjX2J1dHRvbjohbi50aW1lUGlja2VySW5saW5lLGRwX19pbmNfZGVjX2J1dHRvbl9pbmxpbmU6bi50aW1lUGlja2VySW5saW5lLGRwX190cF9pbmxpbmVfYnRuX2JvdHRvbTpuLnRpbWVQaWNrZXJJbmxpbmUsZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVkOkwudmFsdWUoTS50eXBlKX0pLFwiYXJpYS1sYWJlbFwiOihsPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOmwuZGVjcmVtZW50VmFsdWUoTS50eXBlKSx0YWJpbmRleDpcIjBcIixvbktleWRvd246W2Uud2l0aEtleXMoUz0+eShNLnR5cGUsITEpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKFM9PnkoTS50eXBlLCExKSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6Uz0+eShNLnR5cGUsITEpLHJlZl9mb3I6ITAscmVmOlM9PkMoUyxXLDIpfSxbbi50aW1lUGlja2VySW5saW5lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbSWEsT2FdLDY0KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtmLiRzbG90c1tcImFycm93LWRvd25cIl0/ZS5yZW5kZXJTbG90KGYuJHNsb3RzLFwiYXJyb3ctZG93blwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGYuJHNsb3RzW1wiYXJyb3ctZG93blwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVnQpLHtrZXk6MX0pKV0sNjQpKV0sNDIsUmEpXSw2NCkpXSwyKX0pLDEyOCkpLGYuaXMyND9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFlhLFtmLiRzbG90c1tcImFtLXBtLWJ1dHRvblwiXT9lLnJlbmRlclNsb3QoZi4kc2xvdHMsXCJhbS1wbS1idXR0b25cIix7a2V5OjAsdG9nZ2xlOkEsdmFsdWU6eC52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGYuJHNsb3RzW1wiYW0tcG0tYnV0dG9uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleToxLHJlZl9rZXk6XCJhbVBtQnV0dG9uXCIscmVmOlAsdHlwZTpcImJ1dHRvblwiLGNsYXNzOlwiZHBfX3BtX2FtX2J1dHRvblwiLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooTj1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpOLmFtUG1CdXR0b24sdGFiaW5kZXg6XCIwXCIsb25DbGljazpBLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoQSxbXCJwcmV2ZW50XCJdKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoQSxbXCJwcmV2ZW50XCJdKSxbXCJzcGFjZVwiXSldfSxlLnRvRGlzcGxheVN0cmluZyh4LnZhbHVlKSw0MSx4YSkpXSkpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChfLnZhbHVlLChNLFcpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuVHJhbnNpdGlvbix7a2V5OlcsbmFtZTplLnVucmVmKEIpKHZbTS50eXBlXSksY3NzOmUudW5yZWYoRSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3ZbTS50eXBlXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFdlLHtrZXk6MCxpdGVtczpHKE0udHlwZSksXCJkaXNhYmxlZC12YWx1ZXNcIjplLnVucmVmKGcpLmZpbHRlcnMudGltZXNbTS50eXBlXS5jb25jYXQocmUudmFsdWUoTS50eXBlKSksXCJlc2MtY2xvc2VcIjpmLmVzY0Nsb3NlLFwiYXJpYS1sYWJlbHNcIjplLnVucmVmKGcpLmFyaWFMYWJlbHMsXCJoaWRlLW5hdmlnYXRpb25cIjpmLmhpZGVOYXZpZ2F0aW9uLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOm89PmgoTS50eXBlLG8pLG9uU2VsZWN0ZWQ6bz0+VihNLnR5cGUpLG9uVG9nZ2xlOm89PlYoTS50eXBlKSxvblJlc2V0RmxvdzpjWzBdfHwoY1swXT1vPT5mLiRlbWl0KFwicmVzZXQtZmxvd1wiKSksdHlwZTpNLnR5cGV9LGUuY3JlYXRlU2xvdHMoe1wiYnV0dG9uLWljb25cIjplLndpdGhDdHgoKCk9PltmLiRzbG90c1tcImNsb2NrLWljb25cIl0/ZS5yZW5kZXJTbG90KGYuJHNsb3RzLFwiY2xvY2staWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGYuJHNsb3RzW1wiY2xvY2staWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVHQpLHtrZXk6MX0pKV0pLF86Mn0sW2YuJHNsb3RzW2Ake00udHlwZX0tb3ZlcmxheS12YWx1ZWBdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06b30pPT5bZS5yZW5kZXJTbG90KGYuJHNsb3RzLGAke00udHlwZX0tb3ZlcmxheS12YWx1ZWAse3RleHQ6by50ZXh0LHZhbHVlOm8udmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTAzMixbXCJpdGVtc1wiLFwiZGlzYWJsZWQtdmFsdWVzXCIsXCJlc2MtY2xvc2VcIixcImFyaWEtbGFiZWxzXCIsXCJoaWRlLW5hdmlnYXRpb25cIixcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIixcIm9uU2VsZWN0ZWRcIixcIm9uVG9nZ2xlXCIsXCJ0eXBlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSxfOjJ9LDEwMzIsW1wibmFtZVwiLFwiY3NzXCJdKSkpLDEyOCkpXSkpfX19KSx6YT1bXCJhcmlhLWxhYmVsXCJdLEthPVtcInRhYmluZGV4XCJdLFVhPVtcImFyaWEtbGFiZWxcIl0sV2E9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlRpbWVQaWNrZXJcIixwcm9wczp7aG91cnM6e3R5cGU6W051bWJlcixBcnJheV0sZGVmYXVsdDowfSxtaW51dGVzOnt0eXBlOltOdW1iZXIsQXJyYXldLGRlZmF1bHQ6MH0sc2Vjb25kczp7dHlwZTpbTnVtYmVyLEFycmF5XSxkZWZhdWx0OjB9LGludGVybmFsTW9kZWxWYWx1ZTp7dHlwZTpbRGF0ZSxBcnJheV0sZGVmYXVsdDpudWxsfSwuLi5FZX0sZW1pdHM6W1widXBkYXRlOmhvdXJzXCIsXCJ1cGRhdGU6bWludXRlc1wiLFwidXBkYXRlOnNlY29uZHNcIixcIm1vdW50XCIsXCJyZXNldC1mbG93XCIsXCJvdmVybGF5LW9wZW5lZFwiLFwib3ZlcmxheS1jbG9zZWRcIixcImFtLXBtLWNoYW5nZVwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2J1aWxkTWF0cml4OnUsc2V0VGltZVBpY2tlcjpwfT1fZSgpLGc9ZS51c2VTbG90cygpLHtoaWRlTmF2aWdhdGlvbkJ1dHRvbnM6QixkZWZhdWx0czpFfT0kZShuKSx7dHJhbnNpdGlvbk5hbWU6dixzaG93VHJhbnNpdGlvbjp4fT1RZShFLnZhbHVlLnRyYW5zaXRpb25zKSxQPWUucmVmKG51bGwpLG09ZS5yZWYobnVsbCksaz1lLnJlZihbXSkscT1lLnJlZihudWxsKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudFwiKSwhbi50aW1lUGlja2VyJiZuLmFycm93TmF2aWdhdGlvbj91KFtjZShQLnZhbHVlKV0sXCJ0aW1lXCIpOnAoITAsbi50aW1lUGlja2VyKX0pO2NvbnN0IFk9ZS5jb21wdXRlZCgoKT0+bi5yYW5nZSYmbi5tb2RlbEF1dG8/cXQobi5pbnRlcm5hbE1vZGVsVmFsdWUpOiEwKSxMPWUucmVmKCExKSxSPVY9Pih7aG91cnM6QXJyYXkuaXNBcnJheShuLmhvdXJzKT9uLmhvdXJzW1ZdOm4uaG91cnMsbWludXRlczpBcnJheS5pc0FycmF5KG4ubWludXRlcyk/bi5taW51dGVzW1ZdOm4ubWludXRlcyxzZWNvbmRzOkFycmF5LmlzQXJyYXkobi5zZWNvbmRzKT9uLnNlY29uZHNbVl06bi5zZWNvbmRzfSksTz1lLmNvbXB1dGVkKCgpPT57Y29uc3QgVj1bXTtpZihuLnJhbmdlKWZvcihsZXQgRD0wO0Q8MjtEKyspVi5wdXNoKFIoRCkpO2Vsc2UgVi5wdXNoKFIoMCkpO3JldHVybiBWfSksUT0oVixEPSExLHk9XCJcIik9PntEfHxyKFwicmVzZXQtZmxvd1wiKSxMLnZhbHVlPVYscihWP1wib3ZlcmxheS1vcGVuZWRcIjpcIm92ZXJsYXktY2xvc2VkXCIpLG4uYXJyb3dOYXZpZ2F0aW9uJiZwKFYpLGUubmV4dFRpY2soKCk9Pnt5IT09XCJcIiYmay52YWx1ZVswXSYmay52YWx1ZVswXS5vcGVuQ2hpbGRDbXAoeSl9KX0sZWU9ZS5jb21wdXRlZCgoKT0+KHtkcF9fYnRuOiEwLGRwX19idXR0b246ITAsZHBfX2J1dHRvbl9ib3R0b206bi5hdXRvQXBwbHkmJiFuLmtlZXBBY3Rpb25Sb3d9KSksXz1JZShnLFwidGltZVBpY2tlclwiKSxVPShWLEQseSk9Pm4ucmFuZ2U/RD09PTA/W1YsTy52YWx1ZVsxXVt5XV06W08udmFsdWVbMF1beV0sVl06VixHPVY9PntyKFwidXBkYXRlOmhvdXJzXCIsVil9LEo9Vj0+e3IoXCJ1cGRhdGU6bWludXRlc1wiLFYpfSxyZT1WPT57cihcInVwZGF0ZTpzZWNvbmRzXCIsVil9LG9lPSgpPT57aWYocS52YWx1ZSl7Y29uc3QgVj16bihxLnZhbHVlKTtWJiZWLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9fTtyZXR1cm4gYSh7dG9nZ2xlVGltZVBpY2tlcjpRfSksKFYsRCk9Pnt2YXIgeTtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLG51bGwsWyFWLnRpbWVQaWNrZXImJiFWLnRpbWVQaWNrZXJJbmxpbmU/ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MCx0eXBlOlwiYnV0dG9uXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhlZS52YWx1ZSksXCJhcmlhLWxhYmVsXCI6KHk9ZS51bnJlZihFKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6eS5vcGVuVGltZVBpY2tlcix0YWJpbmRleDpcIjBcIixyZWZfa2V5Olwib3BlblRpbWVQaWNrZXJCdG5cIixyZWY6UCxvbktleWRvd246W0RbMF18fChEWzBdPWUud2l0aEtleXMoVD0+USghMCksW1wiZW50ZXJcIl0pKSxEWzFdfHwoRFsxXT1lLndpdGhLZXlzKFQ9PlEoITApLFtcInNwYWNlXCJdKSldLG9uQ2xpY2s6RFsyXXx8KERbMl09VD0+USghMCkpfSxbVi4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UucmVuZGVyU2xvdChWLiRzbG90cyxcImNsb2NrLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxWLiRzbG90c1tcImNsb2NrLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFR0KSx7a2V5OjF9KSldLDQyLHphKSksW1tlLnZTaG93LCFlLnVucmVmKEIpKFwidGltZVwiKV1dKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTplLnVucmVmKHYpKEwudmFsdWUpLGNzczplLnVucmVmKHgpJiYhVi50aW1lUGlja2VySW5saW5lfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Pnt2YXIgVDtyZXR1cm5bTC52YWx1ZXx8Vi50aW1lUGlja2VyfHxWLnRpbWVQaWNrZXJJbmxpbmU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjAsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh7ZHBfX292ZXJsYXk6IVYudGltZVBpY2tlcklubGluZX0pLHJlZl9rZXk6XCJvdmVybGF5UmVmXCIscmVmOnEsdGFiaW5kZXg6Vi50aW1lUGlja2VySW5saW5lP3ZvaWQgMDowfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhWLnRpbWVQaWNrZXJJbmxpbmU/XCJkcF9fdGltZV9waWNrZXJfaW5saW5lX2NvbnRhaW5lclwiOlwiZHBfX292ZXJsYXlfY29udGFpbmVyIGRwX19jb250YWluZXJfZmxleCBkcF9fdGltZV9waWNrZXJfb3ZlcmxheV9jb250YWluZXJcIiksc3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCJ9fSxbVi4kc2xvdHNbXCJ0aW1lLXBpY2tlci1vdmVybGF5XCJdP2UucmVuZGVyU2xvdChWLiRzbG90cyxcInRpbWUtcGlja2VyLW92ZXJsYXlcIix7a2V5OjAsaG91cnM6dC5ob3VycyxtaW51dGVzOnQubWludXRlcyxzZWNvbmRzOnQuc2Vjb25kcyxzZXRIb3VyczpHLHNldE1pbnV0ZXM6SixzZXRTZWNvbmRzOnJlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksVi4kc2xvdHNbXCJ0aW1lLXBpY2tlci1vdmVybGF5XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleToxLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVi50aW1lUGlja2VySW5saW5lP1wiZHBfX2ZsZXhcIjpcImRwX19vdmVybGF5X3JvdyBkcF9fZmxleF9yb3dcIil9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoTy52YWx1ZSwoQSxJKT0+ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKExhLGUubWVyZ2VQcm9wcyh7a2V5Okl9LHsuLi5WLiRwcm9wcyxvcmRlcjpJLGhvdXJzOkEuaG91cnMsbWludXRlczpBLm1pbnV0ZXMsc2Vjb25kczpBLnNlY29uZHMsY2xvc2VUaW1lUGlja2VyQnRuOm0udmFsdWUsZGlzYWJsZWQ6ST09PTA/Vi5maXhlZFN0YXJ0OlYuZml4ZWRFbmR9LHtyZWZfZm9yOiEwLHJlZl9rZXk6XCJ0aW1lSW5wdXRSZWZzXCIscmVmOmssXCJvblVwZGF0ZTpob3Vyc1wiOkM9PkcoVShDLEksXCJob3Vyc1wiKSksXCJvblVwZGF0ZTptaW51dGVzXCI6Qz0+SihVKEMsSSxcIm1pbnV0ZXNcIikpLFwib25VcGRhdGU6c2Vjb25kc1wiOkM9PnJlKFUoQyxJLFwic2Vjb25kc1wiKSksb25Nb3VudGVkOm9lLG9uT3ZlcmxheUNsb3NlZDpvZSxvbkFtUG1DaGFuZ2U6RFszXXx8KERbM109Qz0+Vi4kZW1pdChcImFtLXBtLWNoYW5nZVwiLEMpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKF8pLChDLGgpPT4oe25hbWU6QyxmbjplLndpdGhDdHgoZj0+W2UucmVuZGVyU2xvdChWLiRzbG90cyxDLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoZikpKV0pfSkpXSksMTA0MCxbXCJvblVwZGF0ZTpob3Vyc1wiLFwib25VcGRhdGU6bWludXRlc1wiLFwib25VcGRhdGU6c2Vjb25kc1wiXSkpLFtbZS52U2hvdyxJPT09MD8hMDpZLnZhbHVlXV0pKSwxMjgpKV0sMikpLCFWLnRpbWVQaWNrZXImJiFWLnRpbWVQaWNrZXJJbmxpbmU/ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6Mix0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNsb3NlVGltZVBpY2tlckJ0blwiLHJlZjptLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoZWUudmFsdWUpLFwiYXJpYS1sYWJlbFwiOihUPWUudW5yZWYoRSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOlQuY2xvc2VUaW1lUGlja2VyLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbRFs0XXx8KERbNF09ZS53aXRoS2V5cyhBPT5RKCExKSxbXCJlbnRlclwiXSkpLERbNV18fChEWzVdPWUud2l0aEtleXMoQT0+USghMSksW1wic3BhY2VcIl0pKV0sb25DbGljazpEWzZdfHwoRFs2XT1BPT5RKCExKSl9LFtWLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5yZW5kZXJTbG90KFYuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFYuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoR2UpLHtrZXk6MX0pKV0sNDIsVWEpKSxbW2UudlNob3csIWUudW5yZWYoQikoXCJ0aW1lXCIpXV0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSwyKV0sMTAsS2EpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV19KSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKV0pfX19KSxIYT0odCxhKT0+e2NvbnN0e2lzRGlzYWJsZWQ6cixtYXRjaERhdGU6bixnZXRXZWVrRnJvbURhdGU6dSxkZWZhdWx0czpwfT0kZShhKSxnPWUucmVmKG51bGwpLEI9ZS5yZWYoJCgpKSxFPWM9PnshYy5jdXJyZW50JiZhLmhpZGVPZmZzZXREYXRlc3x8KGcudmFsdWU9Yy52YWx1ZSl9LHY9KCk9PntnLnZhbHVlPW51bGx9LHg9Yz0+QXJyYXkuaXNBcnJheSh0LnZhbHVlKSYmYS5yYW5nZSYmdC52YWx1ZVswXSYmZy52YWx1ZT9jP2JlKGcudmFsdWUsdC52YWx1ZVswXSk6d2UoZy52YWx1ZSx0LnZhbHVlWzBdKTohMCxQPShjLE4pPT57Y29uc3QgTT0oKT0+dC52YWx1ZT9OP3QudmFsdWVbMF18fG51bGw6dC52YWx1ZVsxXTpudWxsLFc9dC52YWx1ZSYmQXJyYXkuaXNBcnJheSh0LnZhbHVlKT9NKCk6bnVsbDtyZXR1cm4gc2UoJChjLnZhbHVlKSxXKX0sbT1jPT57Y29uc3QgTj1BcnJheS5pc0FycmF5KHQudmFsdWUpP3QudmFsdWVbMF06bnVsbDtyZXR1cm4gYz8hd2UoZy52YWx1ZXx8bnVsbCxOKTohMH0saz0oYyxOPSEwKT0+KGEucmFuZ2V8fGEud2Vla1BpY2tlcikmJkFycmF5LmlzQXJyYXkodC52YWx1ZSkmJnQudmFsdWUubGVuZ3RoPT09Mj9hLmhpZGVPZmZzZXREYXRlcyYmIWMuY3VycmVudD8hMTpzZSgkKGMudmFsdWUpLHQudmFsdWVbTj8wOjFdKTphLnJhbmdlP1AoYyxOKSYmbShOKXx8c2UoYy52YWx1ZSxBcnJheS5pc0FycmF5KHQudmFsdWUpP3QudmFsdWVbMF06bnVsbCkmJngoTik6ITEscT0oYyxOLE0pPT5BcnJheS5pc0FycmF5KHQudmFsdWUpJiZ0LnZhbHVlWzBdJiZ0LnZhbHVlLmxlbmd0aD09PTE/Yz8hMTpNP2JlKHQudmFsdWVbMF0sTi52YWx1ZSk6d2UodC52YWx1ZVswXSxOLnZhbHVlKTohMSxZPWM9PiF0LnZhbHVlfHxhLmhpZGVPZmZzZXREYXRlcyYmIWMuY3VycmVudD8hMTphLnJhbmdlP2EubW9kZWxBdXRvJiZBcnJheS5pc0FycmF5KHQudmFsdWUpP3NlKGMudmFsdWUsdC52YWx1ZVswXT90LnZhbHVlWzBdOkIudmFsdWUpOiExOmEubXVsdGlEYXRlcyYmQXJyYXkuaXNBcnJheSh0LnZhbHVlKT90LnZhbHVlLnNvbWUoTj0+c2UoTixjLnZhbHVlKSk6c2UoYy52YWx1ZSx0LnZhbHVlP3QudmFsdWU6Qi52YWx1ZSksTD1jPT57aWYoYS5hdXRvUmFuZ2V8fGEud2Vla1BpY2tlcil7aWYoZy52YWx1ZSl7aWYoYS5oaWRlT2Zmc2V0RGF0ZXMmJiFjLmN1cnJlbnQpcmV0dXJuITE7Y29uc3QgTj1kLmFkZERheXMoZy52YWx1ZSwrYS5hdXRvUmFuZ2UpLE09dSgkKGcudmFsdWUpKTtyZXR1cm4gYS53ZWVrUGlja2VyP3NlKE1bMV0sJChjLnZhbHVlKSk6c2UoTiwkKGMudmFsdWUpKX1yZXR1cm4hMX1yZXR1cm4hMX0sUj1jPT57aWYoYS5hdXRvUmFuZ2V8fGEud2Vla1BpY2tlcil7aWYoZy52YWx1ZSl7Y29uc3QgTj1kLmFkZERheXMoZy52YWx1ZSwrYS5hdXRvUmFuZ2UpO2lmKGEuaGlkZU9mZnNldERhdGVzJiYhYy5jdXJyZW50KXJldHVybiExO2NvbnN0IE09dSgkKGcudmFsdWUpKTtyZXR1cm4gYS53ZWVrUGlja2VyP2JlKGMudmFsdWUsTVswXSkmJndlKGMudmFsdWUsTVsxXSk6YmUoYy52YWx1ZSxnLnZhbHVlKSYmd2UoYy52YWx1ZSxOKX1yZXR1cm4hMX1yZXR1cm4hMX0sTz1jPT57aWYoYS5hdXRvUmFuZ2V8fGEud2Vla1BpY2tlcil7aWYoZy52YWx1ZSl7aWYoYS5oaWRlT2Zmc2V0RGF0ZXMmJiFjLmN1cnJlbnQpcmV0dXJuITE7Y29uc3QgTj11KCQoZy52YWx1ZSkpO3JldHVybiBhLndlZWtQaWNrZXI/c2UoTlswXSxjLnZhbHVlKTpzZShnLnZhbHVlLGMudmFsdWUpfXJldHVybiExfXJldHVybiExfSxRPWM9PkV0KHQudmFsdWUsZy52YWx1ZSxjLnZhbHVlKSxlZT0oKT0+YS5tb2RlbEF1dG8mJkFycmF5LmlzQXJyYXkoYS5pbnRlcm5hbE1vZGVsVmFsdWUpPyEhYS5pbnRlcm5hbE1vZGVsVmFsdWVbMF06ITEsXz0oKT0+YS5tb2RlbEF1dG8/cXQoYS5pbnRlcm5hbE1vZGVsVmFsdWUpOiEwLFU9Yz0+e2lmKEFycmF5LmlzQXJyYXkodC52YWx1ZSkmJnQudmFsdWUubGVuZ3RofHxhLndlZWtQaWNrZXIpcmV0dXJuITE7Y29uc3QgTj1hLnJhbmdlPyFrKGMpJiYhayhjLCExKTohMDtyZXR1cm4hcihjLnZhbHVlKSYmIVkoYykmJiEoIWMuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiZOfSxHPWM9PmEucmFuZ2U/YS5tb2RlbEF1dG8/ZWUoKSYmWShjKTohMTpZKGMpLEo9Yz0+e3ZhciBOO3JldHVybiBhLmhpZ2hsaWdodD9uKGMudmFsdWUsKE49YS5hcnJNYXBWYWx1ZXMpIT1udWxsJiZOLmhpZ2hsaWdodGVkRGF0ZXM/YS5hcnJNYXBWYWx1ZXMuaGlnaGxpZ2h0ZWREYXRlczphLmhpZ2hsaWdodCk6ITF9LHJlPWM9PnIoYy52YWx1ZSkmJmEuaGlnaGxpZ2h0RGlzYWJsZWREYXlzPT09ITEsb2U9Yz0+YS5oaWdobGlnaHRXZWVrRGF5cyYmYS5oaWdobGlnaHRXZWVrRGF5cy5pbmNsdWRlcyhjLnZhbHVlLmdldERheSgpKSxWPWM9PihhLnJhbmdlfHxhLndlZWtQaWNrZXIpJiYoIShwLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjApfHxjLmN1cnJlbnQpJiZfKCkmJiEoIWMuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiYhWShjKT9RKGMpOiExLEQ9Yz0+e2NvbnN0e2lzUmFuZ2VTdGFydDpOLGlzUmFuZ2VFbmQ6TX09QShjKSxXPWEucmFuZ2U/Tnx8TTohMTtyZXR1cm57ZHBfX2NlbGxfb2Zmc2V0OiFjLmN1cnJlbnQsZHBfX3BvaW50ZXI6IWEuZGlzYWJsZWQmJiEoIWMuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiYhcihjLnZhbHVlKSxkcF9fY2VsbF9kaXNhYmxlZDpyKGMudmFsdWUpLGRwX19jZWxsX2hpZ2hsaWdodDohcmUoYykmJihKKGMpfHxvZShjKSkmJiFHKGMpJiYhVyxkcF9fY2VsbF9oaWdobGlnaHRfYWN0aXZlOiFyZShjKSYmKEooYyl8fG9lKGMpKSYmRyhjKSxkcF9fdG9kYXk6IWEubm9Ub2RheSYmc2UoYy52YWx1ZSxCLnZhbHVlKSYmYy5jdXJyZW50fX0seT1jPT4oe2RwX19hY3RpdmVfZGF0ZTpHKGMpLGRwX19kYXRlX2hvdmVyOlUoYyl9KSxUPWM9Pih7Li4uSShjKSwuLi5DKGMpLGRwX19yYW5nZV9iZXR3ZWVuX3dlZWs6VihjKSYmYS53ZWVrUGlja2VyfSksQT1jPT57Y29uc3QgTj1wLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjA/Yy5jdXJyZW50JiZrKGMpJiZfKCk6ayhjKSYmXygpLE09cC52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP2MuY3VycmVudCYmayhjLCExKSYmXygpOmsoYywhMSkmJl8oKTtyZXR1cm57aXNSYW5nZVN0YXJ0Ok4saXNSYW5nZUVuZDpNfX0sST1jPT57Y29uc3R7aXNSYW5nZVN0YXJ0Ok4saXNSYW5nZUVuZDpNfT1BKGMpO3JldHVybntkcF9fcmFuZ2Vfc3RhcnQ6TixkcF9fcmFuZ2VfZW5kOk0sZHBfX3JhbmdlX2JldHdlZW46VihjKSYmIWEud2Vla1BpY2tlcixkcF9fZGF0ZV9ob3Zlcl9zdGFydDpxKFUoYyksYywhMCksZHBfX2RhdGVfaG92ZXJfZW5kOnEoVShjKSxjLCExKX19LEM9Yz0+KHsuLi5JKGMpLGRwX19jZWxsX2F1dG9fcmFuZ2U6UihjKSxkcF9fY2VsbF9hdXRvX3JhbmdlX3N0YXJ0Ok8oYyksZHBfX2NlbGxfYXV0b19yYW5nZV9lbmQ6TChjKX0pLGg9Yz0+YS5yYW5nZT9hLmF1dG9SYW5nZT9DKGMpOmEubW9kZWxBdXRvP3suLi55KGMpLC4uLkkoYyl9OkkoYyk6YS53ZWVrUGlja2VyP1QoYyk6eShjKTtyZXR1cm57c2V0SG92ZXJEYXRlOkUsY2xlYXJIb3ZlckRhdGU6dixnZXREYXlDbGFzc0RhdGE6Yz0+YS5oaWRlT2Zmc2V0RGF0ZXMmJiFjLmN1cnJlbnQ/e306ey4uLkQoYyksLi4uaChjKSxbYS5kYXlDbGFzcz9hLmRheUNsYXNzKGMudmFsdWUpOlwiXCJdOiEwLFthLmNhbGVuZGFyQ2VsbENsYXNzTmFtZV06ISFhLmNhbGVuZGFyQ2VsbENsYXNzTmFtZX19fSxqYT1bXCJpZFwiLFwib25LZXlkb3duXCJdLEdhPXtrZXk6MCxjbGFzczpcImRwX19zaWRlYmFyX2xlZnRcIn0scWE9e2tleToxLGNsYXNzOlwiZHBfX3ByZXNldF9yYW5nZXNcIn0sWmE9W1wib25DbGlja1wiXSxYYT17a2V5OjIsY2xhc3M6XCJkcF9fc2lkZWJhcl9yaWdodFwifSxKYT17a2V5OjMsY2xhc3M6XCJkcF9fYWN0aW9uX2V4dHJhXCJ9LFFhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJEYXRlcGlja2VyTWVudVwiLHByb3BzOntvcGVuT25Ub3A6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sYXJyTWFwVmFsdWVzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSwuLi5FZX0sZW1pdHM6W1wiY2xvc2UtcGlja2VyXCIsXCJzZWxlY3QtZGF0ZVwiLFwiYXV0by1hcHBseVwiLFwidGltZS11cGRhdGVcIixcImZsb3ctc3RlcFwiLFwidXBkYXRlLW1vbnRoLXllYXJcIixcImludmFsaWQtc2VsZWN0XCIsXCJ1cGRhdGU6aW50ZXJuYWwtbW9kZWwtdmFsdWVcIixcInJlY2FsY3VsYXRlLXBvc2l0aW9uXCIsXCJpbnZhbGlkLWZpeGVkLXJhbmdlXCIsXCJ0b29sdGlwLW9wZW5cIixcInRvb2x0aXAtY2xvc2VcIixcInRpbWUtcGlja2VyLW9wZW5cIixcInRpbWUtcGlja2VyLWNsb3NlXCIsXCJhbS1wbS1jaGFuZ2VcIixcInJhbmdlLXN0YXJ0XCIsXCJyYW5nZS1lbmRcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHU9ZS5jb21wdXRlZCgoKT0+e2NvbnN0e29wZW5PblRvcDp3LGludGVybmFsTW9kZWxWYWx1ZTp6LGFyck1hcFZhbHVlczppZSwuLi5mZX09bjtyZXR1cm4gZmV9KSx7c2V0TWVudUZvY3VzZWQ6cCxzZXRTaGlmdEtleTpnLGNvbnRyb2w6Qn09UnQoKSx7Z2V0Q2FsZW5kYXJEYXlzOkUsZGVmYXVsdHM6dn09JGUobikseD1lLnVzZVNsb3RzKCksUD1lLnJlZihudWxsKSxtPWUucmVhY3RpdmUoe3RpbWVQaWNrZXI6ISEoIW4uZW5hYmxlVGltZVBpY2tlcnx8bi50aW1lUGlja2VyfHxuLm1vbnRoUGlja2VyKSxtb250aFllYXJJbnB1dDohIW4udGltZVBpY2tlcixjYWxlbmRhcjohMX0pLGs9ZS5yZWYoW10pLHE9ZS5yZWYoW10pLFk9ZS5yZWYobnVsbCksTD1lLnJlZihudWxsKSxSPWUucmVmKDApLE89ZS5yZWYoITEpLFE9ZS5yZWYoMCk7ZS5vbk1vdW50ZWQoKCk9Pnt2YXIgejtPLnZhbHVlPSEwLCEoKHo9bi5wcmVzZXRSYW5nZXMpIT1udWxsJiZ6Lmxlbmd0aCkmJiF4W1wibGVmdC1zaWRlYmFyXCJdJiYheFtcInJpZ2h0LXNpZGViYXJcIl0mJihOZSgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsTmUpKTtjb25zdCB3PWNlKEwpO2lmKHcmJiFuLnRleHRJbnB1dCYmIW4uaW5saW5lJiYocCghMCkscmUoKSksdyl7Y29uc3QgaWU9ZmU9PntuLmFsbG93UHJldmVudERlZmF1bHQmJmZlLnByZXZlbnREZWZhdWx0KCksZmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZmUuc3RvcFByb3BhZ2F0aW9uKCl9O3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsaWUpLHcuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGllKX19KSxlLm9uVW5tb3VudGVkKCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixOZSl9KTtjb25zdHthcnJvd1JpZ2h0OmVlLGFycm93TGVmdDpfLGFycm93RG93bjpVLGFycm93VXA6R309X2UoKSxKPXc9Pnt3fHx3PT09MD9xLnZhbHVlW3ddLnRyaWdnZXJUcmFuc2l0aW9uKFQudmFsdWUodyksQS52YWx1ZSh3KSk6cS52YWx1ZS5mb3JFYWNoKCh6LGllKT0+ei50cmlnZ2VyVHJhbnNpdGlvbihULnZhbHVlKGllKSxBLnZhbHVlKGllKSkpfSxyZT0oKT0+e2NvbnN0IHc9Y2UoTCk7dyYmdy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxvZT0oKT0+e3ZhciB3Oyh3PW4uZmxvdykhPW51bGwmJncubGVuZ3RoJiZRLnZhbHVlIT09LTEmJihRLnZhbHVlKz0xLHIoXCJmbG93LXN0ZXBcIixRLnZhbHVlKSxpKCkpfSxWPSgpPT57US52YWx1ZT0tMX0se2NhbGVuZGFyczpELG1vZGVsVmFsdWU6eSxtb250aDpULHllYXI6QSx0aW1lOkksdXBkYXRlVGltZTpDLHVwZGF0ZU1vbnRoWWVhcjpoLHNlbGVjdERhdGU6ZixnZXRXZWVrTnVtOmMsbW9udGhZZWFyU2VsZWN0Ok4saGFuZGxlU2Nyb2xsOk0saGFuZGxlQXJyb3c6VyxoYW5kbGVTd2lwZTpvLGdldE1hcmtlcjpzLHNlbGVjdEN1cnJlbnREYXRlOmwscHJlc2V0RGF0ZVJhbmdlOlN9PVpuKG4scixvZSxKLFEpLHtzZXRIb3ZlckRhdGU6RixjbGVhckhvdmVyRGF0ZTp0ZSxnZXREYXlDbGFzc0RhdGE6cGV9PUhhKHksbiksWj17bW9kZWxWYWx1ZTp5LG1vbnRoOlQseWVhcjpBLHRpbWU6SSx1cGRhdGVUaW1lOkMsdXBkYXRlTW9udGhZZWFyOmgsc2VsZWN0RGF0ZTpmLHByZXNldERhdGVSYW5nZTpTLGhhbmRsZU1vbnRoWWVhckNoYW5nZTp3PT57ay52YWx1ZVswXSYmay52YWx1ZVswXS5oYW5kbGVNb250aFllYXJDaGFuZ2Uodyl9fTtlLndhdGNoKEQsKCk9PntuLm9wZW5PblRvcCYmc2V0VGltZW91dCgoKT0+e3IoXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiKX0sMCl9LHtkZWVwOiEwfSk7Y29uc3QgQ2U9SWUoeCxcImNhbGVuZGFyXCIpLGtlPUllKHgsXCJhY3Rpb25cIiksbWU9SWUoeCxcInRpbWVQaWNrZXJcIiksdmU9SWUoeCxcIm1vbnRoWWVhclwiKSxPZT1lLmNvbXB1dGVkKCgpPT5uLm9wZW5PblRvcD9cImRwX19hcnJvd19ib3R0b21cIjpcImRwX19hcnJvd190b3BcIiksVGU9ZS5jb21wdXRlZCgoKT0+SW4obi55ZWFyUmFuZ2Usbi5yZXZlcnNlWWVhcnMpKSxMZT1lLmNvbXB1dGVkKCgpPT5PbihuLmZvcm1hdExvY2FsZSxuLmxvY2FsZSxuLm1vbnRoTmFtZUZvcm1hdCkpLE5lPSgpPT57Y29uc3Qgdz1jZShQKTt3JiYoUi52YWx1ZT13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKX0sSz1lLmNvbXB1dGVkKCgpPT53PT5FKFQudmFsdWUodyksQS52YWx1ZSh3KSkpLFg9ZS5jb21wdXRlZCgoKT0+di52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP1suLi5BcnJheSh2LnZhbHVlLm11bHRpQ2FsZW5kYXJzKS5rZXlzKCldOlswXSksYWU9ZS5jb21wdXRlZCgoKT0+dz0+dz09PTEpLEhlPWUuY29tcHV0ZWQoKCk9Pm4ubW9udGhQaWNrZXJ8fG4udGltZVBpY2tlcnx8bi55ZWFyUGlja2VyKSxZZT1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51X2lubmVyOiEwLGRwX19mbGV4X2Rpc3BsYXk6di52YWx1ZS5tdWx0aUNhbGVuZGFycz4wfSkpLEN0PWUuY29tcHV0ZWQoKCk9Pih7ZHBfX2luc3RhbmNlX2NhbGVuZGFyOnYudmFsdWUubXVsdGlDYWxlbmRhcnM+MH0pKSxGZT1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51X2Rpc2FibGVkOm4uZGlzYWJsZWQsZHBfX21lbnVfcmVhZG9ubHk6bi5yZWFkb25seX0pKSxqZT1lLmNvbXB1dGVkKCgpPT53PT5TdChLLHcpKSwkdD1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51OiEwLGRwX19tZW51X2luZGV4OiFuLmlubGluZSxkcF9fcmVsYXRpdmU6bi5pbmxpbmUsW24ubWVudUNsYXNzTmFtZV06ISFuLm1lbnVDbGFzc05hbWV9KSksU3Q9KHcseik9PncudmFsdWUoeikubWFwKGllPT4oey4uLmllLGRheXM6aWUuZGF5cy5tYXAoZmU9PihmZS5tYXJrZXI9cyhmZSksZmUuY2xhc3NEYXRhPXBlKGZlKSxmZSkpfSkpLEJ0PXc9Pnt3LnN0b3BQcm9wYWdhdGlvbigpLHcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9LGV0PSgpPT57bi5lc2NDbG9zZSYmcihcImNsb3NlLXBpY2tlclwiKX0sdG49KHcsej0hMSk9PntmKHcseiksbi5zcGFjZUNvbmZpcm0mJnIoXCJzZWxlY3QtZGF0ZVwiKX0sdHQ9dz0+e3ZhciB6Oyh6PW4uZmxvdykhPW51bGwmJnoubGVuZ3RoJiYobVt3XT0hMCxPYmplY3Qua2V5cyhtKS5maWx0ZXIoaWU9PiFtW2llXSkubGVuZ3RofHxpKCkpfSx6ZT0odyx6LGllLGZlLC4uLlBlKT0+e2lmKG4uZmxvd1tRLnZhbHVlXT09PXcpe2NvbnN0IEg9ZmU/ei52YWx1ZVswXTp6LnZhbHVlO0gmJkhbaWVdKC4uLlBlKX19LGk9KCk9Pnt6ZShcIm1vbnRoXCIsayxcInRvZ2dsZU1vbnRoUGlja2VyXCIsITAsITApLHplKFwieWVhclwiLGssXCJ0b2dnbGVZZWFyUGlja2VyXCIsITAsITApLHplKFwiY2FsZW5kYXJcIixZLFwidG9nZ2xlVGltZVBpY2tlclwiLCExLCExLCEwKSx6ZShcInRpbWVcIixZLFwidG9nZ2xlVGltZVBpY2tlclwiLCExLCEwLCEwKTtjb25zdCB3PW4uZmxvd1tRLnZhbHVlXTsodz09PVwiaG91cnNcInx8dz09PVwibWludXRlc1wifHx3PT09XCJzZWNvbmRzXCIpJiZ6ZSh3LFksXCJ0b2dnbGVUaW1lUGlja2VyXCIsITEsITAsITAsdyl9LGI9dz0+e2lmKG4uYXJyb3dOYXZpZ2F0aW9uKXtpZih3PT09XCJ1cFwiKXJldHVybiBHKCk7aWYodz09PVwiZG93blwiKXJldHVybiBVKCk7aWYodz09PVwibGVmdFwiKXJldHVybiBfKCk7aWYodz09PVwicmlnaHRcIilyZXR1cm4gZWUoKX1lbHNlIHc9PT1cImxlZnRcInx8dz09PVwidXBcIj9XKFwibGVmdFwiLDAsdz09PVwidXBcIik6VyhcInJpZ2h0XCIsMCx3PT09XCJkb3duXCIpfSxqPXc9PntnKHcuc2hpZnRLZXkpLCFuLmRpc2FibGVNb250aFllYXJTZWxlY3QmJncuY29kZT09PVwiVGFiXCImJncudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImRwX19tZW51XCIpJiZCLnZhbHVlLnNoaWZ0S2V5SW5NZW51JiYody5wcmV2ZW50RGVmYXVsdCgpLHcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkscihcImNsb3NlLXBpY2tlclwiKSl9LG5lPSgpPT57cmUoKSxyKFwidGltZS1waWNrZXItY2xvc2VcIil9LGRlPXc9Pnt2YXIgeixpZSxmZSxQZSxIOyh6PVkudmFsdWUpPT1udWxsfHx6LnRvZ2dsZVRpbWVQaWNrZXIoITEsITEpLChmZT0oaWU9ay52YWx1ZSk9PW51bGw/dm9pZCAwOmllW3ddKT09bnVsbHx8ZmUudG9nZ2xlTW9udGhQaWNrZXIoITEsITEpLChIPShQZT1rLnZhbHVlKT09bnVsbD92b2lkIDA6UGVbd10pPT1udWxsfHxILnRvZ2dsZVllYXJQaWNrZXIoITEsITEpfTtyZXR1cm4gYSh7dXBkYXRlTW9udGhZZWFyOmgsc3dpdGNoVmlldzoodyx6PTApPT57dmFyIGllLGZlLFBlLEgsVmU7cmV0dXJuIHc9PT1cIm1vbnRoXCI/KGZlPShpZT1rLnZhbHVlKT09bnVsbD92b2lkIDA6aWVbel0pPT1udWxsP3ZvaWQgMDpmZS50b2dnbGVNb250aFBpY2tlcighMSwhMCk6dz09PVwieWVhclwiPyhIPShQZT1rLnZhbHVlKT09bnVsbD92b2lkIDA6UGVbel0pPT1udWxsP3ZvaWQgMDpILnRvZ2dsZVllYXJQaWNrZXIoITEsITApOnc9PT1cInRpbWVcIj8oVmU9WS52YWx1ZSk9PW51bGw/dm9pZCAwOlZlLnRvZ2dsZVRpbWVQaWNrZXIoITAsITEpOmRlKHopfX0pLCh3LHopPT57dmFyIGllO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5UcmFuc2l0aW9uLHthcHBlYXI6XCJcIixuYW1lOihpZT1lLnVucmVmKHYpLnRyYW5zaXRpb25zKT09bnVsbD92b2lkIDA6aWUubWVudUFwcGVhcixjc3M6ISF3LnRyYW5zaXRpb25zfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Pnt2YXIgZmUsUGU7cmV0dXJuW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2lkOncudWlkP2BkcC1tZW51LSR7dy51aWR9YDp2b2lkIDAsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcImRwTWVudVJlZlwiLHJlZjpMLHJvbGU6XCJkaWFsb2dcIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKCR0LnZhbHVlKSxvbk1vdXNlbGVhdmU6elsxNF18fCh6WzE0XT0oLi4uSCk9PmUudW5yZWYodGUpJiZlLnVucmVmKHRlKSguLi5IKSksb25DbGljazpCdCxvbktleWRvd246W2Uud2l0aEtleXMoZXQsW1wiZXNjXCJdKSx6WzE1XXx8KHpbMTVdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PmIoXCJsZWZ0XCIpLFtcInByZXZlbnRcIl0pLFtcImxlZnRcIl0pKSx6WzE2XXx8KHpbMTZdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PmIoXCJ1cFwiKSxbXCJwcmV2ZW50XCJdKSxbXCJ1cFwiXSkpLHpbMTddfHwoelsxN109ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+YihcImRvd25cIiksW1wicHJldmVudFwiXSksW1wiZG93blwiXSkpLHpbMThdfHwoelsxOF09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+YihcInJpZ2h0XCIpLFtcInByZXZlbnRcIl0pLFtcInJpZ2h0XCJdKSksal19LFsody5kaXNhYmxlZHx8dy5yZWFkb25seSkmJncuaW5saW5lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoRmUudmFsdWUpfSxudWxsLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwhdy5pbmxpbmUmJiF3LnRlbGVwb3J0Q2VudGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleToxLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoT2UudmFsdWUpfSxudWxsLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fbWVudV9jb250ZW50X3dyYXBwZXI6KChmZT13LnByZXNldFJhbmdlcyk9PW51bGw/dm9pZCAwOmZlLmxlbmd0aCl8fCEhdy4kc2xvdHNbXCJsZWZ0LXNpZGViYXJcIl18fCEhdy4kc2xvdHNbXCJyaWdodC1zaWRlYmFyXCJdfSl9LFt3LiRzbG90c1tcImxlZnQtc2lkZWJhclwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLEdhLFtlLnJlbmRlclNsb3Qody4kc2xvdHMsXCJsZWZ0LXNpZGViYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKFopKSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksKFBlPXcucHJlc2V0UmFuZ2VzKSE9bnVsbCYmUGUubGVuZ3RoPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIscWEsWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh3LnByZXNldFJhbmdlcywoSCxWZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpWZSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKEguc3R5bGV8fHt9KSxjbGFzczpcImRwX19wcmVzZXRfcmFuZ2VcIixvbkNsaWNrOmxlPT5lLnVucmVmKFMpKEgucmFuZ2UsISFILnNsb3QpfSxbSC5zbG90P2UucmVuZGVyU2xvdCh3LiRzbG90cyxILnNsb3Qse2tleTowLHByZXNldERhdGVSYW5nZTplLnVucmVmKFMpLGxhYmVsOkgubGFiZWwscmFuZ2U6SC5yYW5nZX0pOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoSC5sYWJlbCksMSldLDY0KSldLDEyLFphKSkpLDEyOCkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX2luc3RhbmNlX2NhbGVuZGFyXCIscmVmX2tleTpcImNhbGVuZGFyV3JhcHBlclJlZlwiLHJlZjpQLHJvbGU6XCJkb2N1bWVudFwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhZZS52YWx1ZSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoWC52YWx1ZSwoSCxWZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpILGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoQ3QudmFsdWUpfSxbIXcuZGlzYWJsZU1vbnRoWWVhclNlbGVjdCYmIXcudGltZVBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFBhLGUubWVyZ2VQcm9wcyh7a2V5OjAscmVmX2ZvcjohMCxyZWY6bGU9PntsZSYmKGsudmFsdWVbVmVdPWxlKX0sbW9udGhzOkxlLnZhbHVlLHllYXJzOlRlLnZhbHVlLG1vbnRoOmUudW5yZWYoVCkoSCkseWVhcjplLnVucmVmKEEpKEgpLGluc3RhbmNlOkgsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSx1LnZhbHVlLHtvbk1vdW50OnpbMF18fCh6WzBdPWxlPT50dChcIm1vbnRoWWVhcklucHV0XCIpKSxvblJlc2V0RmxvdzpWLG9uVXBkYXRlTW9udGhZZWFyOmxlPT5lLnVucmVmKGgpKEgsbGUpLG9uTW9udGhZZWFyU2VsZWN0OmUudW5yZWYoTiksb25PdmVybGF5Q2xvc2VkOnJlfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYodmUpLChsZSxycik9Pih7bmFtZTpsZSxmbjplLndpdGhDdHgoTnQ9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsbGUsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhOdCkpKV0pfSkpXSksMTA0MCxbXCJtb250aHNcIixcInllYXJzXCIsXCJtb250aFwiLFwieWVhclwiLFwiaW5zdGFuY2VcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblVwZGF0ZU1vbnRoWWVhclwiLFwib25Nb250aFllYXJTZWxlY3RcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZVZOb2RlKGhhLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMCxyZWY6bGU9PntsZSYmKHEudmFsdWVbVmVdPWxlKX0sXCJzcGVjaWZpYy1tb2RlXCI6SGUudmFsdWUsXCJnZXQtd2Vlay1udW1cIjplLnVucmVmKGMpLGluc3RhbmNlOkgsXCJtYXBwZWQtZGF0ZXNcIjpqZS52YWx1ZShIKSxtb250aDplLnVucmVmKFQpKEgpLHllYXI6ZS51bnJlZihBKShIKX0sdS52YWx1ZSx7b25TZWxlY3REYXRlOmxlPT5lLnVucmVmKGYpKGxlLCFhZS52YWx1ZShIKSksb25IYW5kbGVTcGFjZTpsZT0+dG4obGUsIWFlLnZhbHVlKEgpKSxvblNldEhvdmVyRGF0ZTp6WzFdfHwoelsxXT1sZT0+ZS51bnJlZihGKShsZSkpLG9uSGFuZGxlU2Nyb2xsOmxlPT5lLnVucmVmKE0pKGxlLEgpLG9uSGFuZGxlU3dpcGU6bGU9PmUudW5yZWYobykobGUsSCksb25Nb3VudDp6WzJdfHwoelsyXT1sZT0+dHQoXCJjYWxlbmRhclwiKSksb25SZXNldEZsb3c6VixvblRvb2x0aXBPcGVuOnpbM118fCh6WzNdPWxlPT53LiRlbWl0KFwidG9vbHRpcC1vcGVuXCIsbGUpKSxvblRvb2x0aXBDbG9zZTp6WzRdfHwoels0XT1sZT0+dy4kZW1pdChcInRvb2x0aXAtY2xvc2VcIixsZSkpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYoQ2UpLChsZSxycik9Pih7bmFtZTpsZSxmbjplLndpdGhDdHgoTnQ9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsbGUsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyh7Li4uTnR9KSkpXSl9KSldKSwxMDQwLFtcInNwZWNpZmljLW1vZGVcIixcImdldC13ZWVrLW51bVwiLFwiaW5zdGFuY2VcIixcIm1hcHBlZC1kYXRlc1wiLFwibW9udGhcIixcInllYXJcIixcIm9uU2VsZWN0RGF0ZVwiLFwib25IYW5kbGVTcGFjZVwiLFwib25IYW5kbGVTY3JvbGxcIixcIm9uSGFuZGxlU3dpcGVcIl0pXSwyKSkpLDEyOCkpXSwyKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG51bGwsW3cuJHNsb3RzW1widGltZS1waWNrZXJcIl0/ZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwidGltZS1waWNrZXJcIixlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LHt0aW1lOmUudW5yZWYoSSksdXBkYXRlVGltZTplLnVucmVmKEMpfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3cuZW5hYmxlVGltZVBpY2tlciYmIXcubW9udGhQaWNrZXImJiF3LndlZWtQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhXYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9rZXk6XCJ0aW1lUGlja2VyUmVmXCIscmVmOlksaG91cnM6ZS51bnJlZihJKS5ob3VycyxtaW51dGVzOmUudW5yZWYoSSkubWludXRlcyxzZWNvbmRzOmUudW5yZWYoSSkuc2Vjb25kcyxcImludGVybmFsLW1vZGVsLXZhbHVlXCI6dC5pbnRlcm5hbE1vZGVsVmFsdWV9LHUudmFsdWUse29uTW91bnQ6els1XXx8KHpbNV09SD0+dHQoXCJ0aW1lUGlja2VyXCIpKSxcIm9uVXBkYXRlOmhvdXJzXCI6els2XXx8KHpbNl09SD0+ZS51bnJlZihDKShIKSksXCJvblVwZGF0ZTptaW51dGVzXCI6els3XXx8KHpbN109SD0+ZS51bnJlZihDKShILCExKSksXCJvblVwZGF0ZTpzZWNvbmRzXCI6els4XXx8KHpbOF09SD0+ZS51bnJlZihDKShILCExLCEwKSksb25SZXNldEZsb3c6Vixvbk92ZXJsYXlDbG9zZWQ6bmUsb25PdmVybGF5T3BlbmVkOnpbOV18fCh6WzldPUg9PncuJGVtaXQoXCJ0aW1lLXBpY2tlci1vcGVuXCIsSCkpLG9uQW1QbUNoYW5nZTp6WzEwXXx8KHpbMTBdPUg9PncuJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixIKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihtZSksKEgsVmUpPT4oe25hbWU6SCxmbjplLndpdGhDdHgobGU9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsSCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKGxlKSkpXSl9KSldKSwxMDQwLFtcImhvdXJzXCIsXCJtaW51dGVzXCIsXCJzZWNvbmRzXCIsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSldLDUxMiksdy4kc2xvdHNbXCJyaWdodC1zaWRlYmFyXCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsWGEsW2UucmVuZGVyU2xvdCh3LiRzbG90cyxcInJpZ2h0LXNpZGViYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKFopKSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksdy4kc2xvdHNbXCJhY3Rpb24tZXh0cmFcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixKYSxbdy4kc2xvdHNbXCJhY3Rpb24tZXh0cmFcIl0/ZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwiYWN0aW9uLWV4dHJhXCIse2tleTowLHNlbGVjdEN1cnJlbnREYXRlOmUudW5yZWYobCl9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMiksIXcuYXV0b0FwcGx5fHx3LmtlZXBBY3Rpb25Sb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhpYSxlLm1lcmdlUHJvcHMoe2tleToyLFwibWVudS1tb3VudFwiOk8udmFsdWUsXCJjYWxlbmRhci13aWR0aFwiOlIudmFsdWUsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSx1LnZhbHVlLHtvbkNsb3NlUGlja2VyOnpbMTFdfHwoelsxMV09SD0+dy4kZW1pdChcImNsb3NlLXBpY2tlclwiKSksb25TZWxlY3REYXRlOnpbMTJdfHwoelsxMl09SD0+dy4kZW1pdChcInNlbGVjdC1kYXRlXCIpKSxvbkludmFsaWRTZWxlY3Q6elsxM118fCh6WzEzXT1IPT53LiRlbWl0KFwiaW52YWxpZC1zZWxlY3RcIikpLG9uU2VsZWN0Tm93OmUudW5yZWYobCl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihrZSksKEgsVmUpPT4oe25hbWU6SCxmbjplLndpdGhDdHgobGU9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsSCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHsuLi5sZX0pKSldKX0pKV0pLDEwNDAsW1wibWVudS1tb3VudFwiLFwiY2FsZW5kYXItd2lkdGhcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblNlbGVjdE5vd1wiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw0MixqYSldfSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSl9fX0pLEZhPXR5cGVvZiB3aW5kb3c8XCJ1XCI/d2luZG93OnZvaWQgMCxEdD0oKT0+e30sZXI9dD0+ZS5nZXRDdXJyZW50U2NvcGUoKT8oZS5vblNjb3BlRGlzcG9zZSh0KSwhMCk6ITEsdHI9KHQsYSxyLG4pPT57aWYoIXQpcmV0dXJuIER0O2xldCB1PUR0O2NvbnN0IHA9ZS53YXRjaCgoKT0+ZS51bnJlZih0KSxCPT57dSgpLEImJihCLmFkZEV2ZW50TGlzdGVuZXIoYSxyLG4pLHU9KCk9PntCLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxyLG4pLHU9RHR9KX0se2ltbWVkaWF0ZTohMCxmbHVzaDpcInBvc3RcIn0pLGc9KCk9PntwKCksdSgpfTtyZXR1cm4gZXIoZyksZ30sbnI9KHQsYSxyLG49e30pPT57Y29uc3R7d2luZG93OnU9RmEsZXZlbnQ6cD1cInBvaW50ZXJkb3duXCJ9PW47cmV0dXJuIHU/dHIodSxwLEI9Pntjb25zdCBFPWNlKHQpLHY9Y2UoYSk7IUV8fCF2fHxFPT09Qi50YXJnZXR8fEIuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoRSl8fEIuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXModil8fHIoQil9LHtwYXNzaXZlOiEwfSk6dm9pZCAwfSxhcj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiVnVlRGF0ZVBpY2tlclwiLHByb3BzOnsuLi5FZX0sZW1pdHM6W1widXBkYXRlOm1vZGVsLXZhbHVlXCIsXCJ0ZXh0LXN1Ym1pdFwiLFwiY2xvc2VkXCIsXCJjbGVhcmVkXCIsXCJvcGVuXCIsXCJmb2N1c1wiLFwiYmx1clwiLFwiaW50ZXJuYWwtbW9kZWwtY2hhbmdlXCIsXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiLFwiZmxvdy1zdGVwXCIsXCJ1cGRhdGUtbW9udGgteWVhclwiLFwiaW52YWxpZC1zZWxlY3RcIixcImludmFsaWQtZml4ZWQtcmFuZ2VcIixcInRvb2x0aXAtb3BlblwiLFwidG9vbHRpcC1jbG9zZVwiLFwidGltZS1waWNrZXItb3BlblwiLFwidGltZS1waWNrZXItY2xvc2VcIixcImFtLXBtLWNoYW5nZVwiLFwicmFuZ2Utc3RhcnRcIixcInJhbmdlLWVuZFwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQsdT1lLnVzZVNsb3RzKCkscD1lLnJlZighMSksZz1lLnRvUmVmKG4sXCJtb2RlbFZhbHVlXCIpLEI9ZS50b1JlZihuLFwidGltZXpvbmVcIiksRT1lLnJlZihudWxsKSx2PWUucmVmKG51bGwpLHg9ZS5yZWYoITEpLFA9ZS5yZWYobnVsbCksbT1lLnJlYWN0aXZlKHtkaXNhYmxlZERhdGVzOm51bGwsYWxsb3dlZERhdGVzOm51bGwsaGlnaGxpZ2h0ZWREYXRlczpudWxsfSkse3NldE1lbnVGb2N1c2VkOmssc2V0U2hpZnRLZXk6cX09UnQoKSx7Y2xlYXJBcnJvd05hdjpZfT1fZSgpLHt2YWxpZGF0ZURhdGU6TCxpc1ZhbGlkVGltZTpSLGRlZmF1bHRzOk8sbWFwRGF0ZXNBcnJUb01hcDpRfT0kZShuKTtlLm9uTW91bnRlZCgoKT0+e1Qobi5tb2RlbFZhbHVlKSxuLmlubGluZXx8KFYoUC52YWx1ZSkuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLE4pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsTSkpLG4uaW5saW5lJiYocC52YWx1ZT0hMCksUShtKX0pLGUub25Vbm1vdW50ZWQoKCk9PntpZighbi5pbmxpbmUpe2NvbnN0IEs9VihQLnZhbHVlKTtLJiZLLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixOKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLE0pfX0pO2NvbnN0IGVlPUllKHUsXCJhbGxcIixuLnByZXNldFJhbmdlcyksXz1JZSh1LFwiaW5wdXRcIik7ZS53YXRjaChbZyxCXSwoKT0+e1QoZy52YWx1ZSl9LHtkZWVwOiEwfSk7Y29uc3R7b3Blbk9uVG9wOlUsbWVudVN0eWxlOkcscmVzZXRQb3NpdGlvbjpKLHNldE1lbnVQb3NpdGlvbjpyZSxzZXRJbml0aWFsUG9zaXRpb246b2UsZ2V0U2Nyb2xsYWJsZVBhcmVudDpWfT1RbihFLHYscixuKSx7aW5wdXRWYWx1ZTpELGludGVybmFsTW9kZWxWYWx1ZTp5LHBhcnNlRXh0ZXJuYWxNb2RlbFZhbHVlOlQsZW1pdE1vZGVsVmFsdWU6QSxmb3JtYXRJbnB1dFZhbHVlOkksY2hlY2tCZWZvcmVFbWl0OkN9PVhuKHIsbix4KSxoPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX21haW46ITAsZHBfX3RoZW1lX2Rhcms6bi5kYXJrLGRwX190aGVtZV9saWdodDohbi5kYXJrLGRwX19mbGV4X2Rpc3BsYXk6bi5pbmxpbmUsZHBfX2ZsZXhfZGlzcGxheV93aXRoX2lucHV0Om4uaW5saW5lV2l0aElucHV0fSkpLGY9ZS5jb21wdXRlZCgoKT0+bi5kYXJrP1wiZHBfX3RoZW1lX2RhcmtcIjpcImRwX190aGVtZV9saWdodFwiKSxjPWUuY29tcHV0ZWQoKCk9Pm4udGVsZXBvcnQ/e3RvOnR5cGVvZiBuLnRlbGVwb3J0PT1cImJvb2xlYW5cIj9cImJvZHlcIjpuLnRlbGVwb3J0LGRpc2FibGVkOm4uaW5saW5lfTp7Y2xhc3M6XCJkcF9fb3V0ZXJfbWVudV93cmFwXCJ9KSxOPSgpPT57cC52YWx1ZSYmKG4uY2xvc2VPblNjcm9sbD95ZSgpOnJlKCkpfSxNPSgpPT57cC52YWx1ZSYmcmUoKX0sVz1hc3luYygpPT57dmFyIEssWCxhZTshbi5kaXNhYmxlZCYmIW4ucmVhZG9ubHkmJihKKCksYXdhaXQgZS5uZXh0VGljaygpLHAudmFsdWU9ITAsYXdhaXQgZS5uZXh0VGljaygpLG9lKCksYXdhaXQgZS5uZXh0VGljaygpLHJlKCksZGVsZXRlIEcudmFsdWUub3BhY2l0eSwhKChLPU8udmFsdWUudHJhbnNpdGlvbnMpIT1udWxsJiZLLm1lbnVBcHBlYXIpJiZuLnRyYW5zaXRpb25zJiYoKGFlPShYPUUudmFsdWUpPT1udWxsP3ZvaWQgMDpYLiRlbCk9PW51bGx8fGFlLmNsYXNzTGlzdC5hZGQoXCJkcF9fbWVudV90cmFuc2l0aW9uZWRcIikpLHAudmFsdWUmJnIoXCJvcGVuXCIpLHAudmFsdWV8fHBlKCksVChuLm1vZGVsVmFsdWUpKX0sbz0oKT0+e0QudmFsdWU9XCJcIixwZSgpLHIoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixudWxsKSxyKFwiY2xlYXJlZFwiKSxuLmNsb3NlT25DbGVhclZhbHVlJiZ5ZSgpfSxzPSgpPT57Y29uc3QgSz15LnZhbHVlO3JldHVybiFLfHwhQXJyYXkuaXNBcnJheShLKSYmTChLKT8hMDpBcnJheS5pc0FycmF5KEspP0subGVuZ3RoPT09MiYmTChLWzBdKSYmTChLWzFdKT8hMDpMKEtbMF0pOiExfSxsPSgpPT57QygpJiZzKCk/KEEoKSx5ZSgpKTpyKFwiaW52YWxpZC1zZWxlY3RcIix5LnZhbHVlKX0sUz1LPT57RigpLEEoKSxuLmNsb3NlT25BdXRvQXBwbHkmJiFLJiZ5ZSgpfSxGPSgpPT57di52YWx1ZSYmbi50ZXh0SW5wdXQmJnYudmFsdWUuc2V0UGFyc2VkRGF0ZSh5LnZhbHVlKX0sdGU9KEs9ITEpPT57bi5hdXRvQXBwbHkmJlIoeS52YWx1ZSkmJnMoKSYmKG4ucmFuZ2UmJkFycmF5LmlzQXJyYXkoeS52YWx1ZSk/KG4ucGFydGlhbFJhbmdlfHx5LnZhbHVlLmxlbmd0aD09PTIpJiZTKEspOlMoSykpfSxwZT0oKT0+e24udGV4dElucHV0fHwoeS52YWx1ZT1udWxsKX0seWU9KCk9PntuLmlubGluZXx8KHAudmFsdWUmJihwLnZhbHVlPSExLGsoITEpLHEoITEpLFkoKSxyKFwiY2xvc2VkXCIpLG9lKCksRC52YWx1ZSYmVChnLnZhbHVlKSkscGUoKSl9LFo9KEssWCk9PntpZighSyl7eS52YWx1ZT1udWxsO3JldHVybn15LnZhbHVlPUssWCYmKGwoKSxyKFwidGV4dC1zdWJtaXRcIikpfSxDZT0oKT0+e24uYXV0b0FwcGx5JiZSKHkudmFsdWUpJiZBKCksRigpfSxrZT0oKT0+cC52YWx1ZT95ZSgpOlcoKSxtZT1LPT57eS52YWx1ZT1LfSx2ZT0oKT0+e24udGV4dElucHV0JiYoeC52YWx1ZT0hMCxJKCkpLHIoXCJmb2N1c1wiKX0sT2U9KCk9PntuLnRleHRJbnB1dCYmKHgudmFsdWU9ITEsVChuLm1vZGVsVmFsdWUpKSxyKFwiYmx1clwiKX0sVGU9Sz0+e0UudmFsdWUmJkUudmFsdWUudXBkYXRlTW9udGhZZWFyKDAse21vbnRoOlp0KEsubW9udGgpLHllYXI6WnQoSy55ZWFyKX0pfSxMZT1LPT57VChLfHxuLm1vZGVsVmFsdWUpfSxOZT0oSyxYKT0+e3ZhciBhZTsoYWU9RS52YWx1ZSk9PW51bGx8fGFlLnN3aXRjaFZpZXcoSyxYKX07cmV0dXJuIG5yKEUsdixuLm9uQ2xpY2tPdXRzaWRlPygpPT5uLm9uQ2xpY2tPdXRzaWRlKHMpOnllKSxhKHtjbG9zZU1lbnU6eWUsc2VsZWN0RGF0ZTpsLGNsZWFyVmFsdWU6byxvcGVuTWVudTpXLG9uU2Nyb2xsOk4sZm9ybWF0SW5wdXRWYWx1ZTpJLHVwZGF0ZUludGVybmFsTW9kZWxWYWx1ZTptZSxzZXRNb250aFllYXI6VGUscGFyc2VNb2RlbDpMZSxzd2l0Y2hWaWV3Ok5lfSksKEssWCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoaC52YWx1ZSkscmVmX2tleTpcInBpY2tlcldyYXBwZXJSZWZcIixyZWY6UH0sW2UuY3JlYXRlVk5vZGUocmEsZS5tZXJnZVByb3BzKHtyZWZfa2V5OlwiaW5wdXRSZWZcIixyZWY6dixcImlzLW1lbnUtb3BlblwiOnAudmFsdWUsXCJpbnB1dC12YWx1ZVwiOmUudW5yZWYoRCksXCJvblVwZGF0ZTppbnB1dFZhbHVlXCI6WFswXXx8KFhbMF09YWU9PmUuaXNSZWYoRCk/RC52YWx1ZT1hZTpudWxsKX0sSy4kcHJvcHMse29uQ2xlYXI6byxvbk9wZW46VyxvblNldElucHV0RGF0ZTpaLG9uU2V0RW1wdHlEYXRlOmUudW5yZWYoQSksb25TZWxlY3REYXRlOmwsb25Ub2dnbGU6a2Usb25DbG9zZTp5ZSxvbkZvY3VzOnZlLG9uQmx1cjpPZSxvblJlYWxCbHVyOlhbMV18fChYWzFdPWFlPT54LnZhbHVlPSExKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKF8pLChhZSxIZSk9Pih7bmFtZTphZSxmbjplLndpdGhDdHgoWWU9PltlLnJlbmRlclNsb3QoSy4kc2xvdHMsYWUsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhZZSkpKV0pfSkpXSksMTA0MCxbXCJpcy1tZW51LW9wZW5cIixcImlucHV0LXZhbHVlXCIsXCJvblNldEVtcHR5RGF0ZVwiXSkscC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoSy50ZWxlcG9ydD9lLlRlbGVwb3J0OlwiZGl2XCIpLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0sYy52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhRYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9rZXk6XCJkcE1lbnVSZWZcIixyZWY6RSxjbGFzczpmLnZhbHVlLHN0eWxlOksuaW5saW5lP3ZvaWQgMDplLnVucmVmKEcpLFwib3Blbi1vbi10b3BcIjplLnVucmVmKFUpLFwiYXJyLW1hcC12YWx1ZXNcIjptfSxLLiRwcm9wcyx7XCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOmUudW5yZWYoeSksXCJvblVwZGF0ZTppbnRlcm5hbE1vZGVsVmFsdWVcIjpYWzJdfHwoWFsyXT1hZT0+ZS5pc1JlZih5KT95LnZhbHVlPWFlOm51bGwpLG9uQ2xvc2VQaWNrZXI6eWUsb25TZWxlY3REYXRlOmwsb25BdXRvQXBwbHk6dGUsb25UaW1lVXBkYXRlOkNlLG9uRmxvd1N0ZXA6WFszXXx8KFhbM109YWU9PksuJGVtaXQoXCJmbG93LXN0ZXBcIixhZSkpLG9uVXBkYXRlTW9udGhZZWFyOlhbNF18fChYWzRdPWFlPT5LLiRlbWl0KFwidXBkYXRlLW1vbnRoLXllYXJcIixhZSkpLG9uSW52YWxpZFNlbGVjdDpYWzVdfHwoWFs1XT1hZT0+Sy4kZW1pdChcImludmFsaWQtc2VsZWN0XCIsZS51bnJlZih5KSkpLG9uSW52YWxpZEZpeGVkUmFuZ2U6WFs2XXx8KFhbNl09YWU9PksuJGVtaXQoXCJpbnZhbGlkLWZpeGVkLXJhbmdlXCIsYWUpKSxvblJlY2FsY3VsYXRlUG9zaXRpb246ZS51bnJlZihyZSksb25Ub29sdGlwT3BlbjpYWzddfHwoWFs3XT1hZT0+Sy4kZW1pdChcInRvb2x0aXAtb3BlblwiLGFlKSksb25Ub29sdGlwQ2xvc2U6WFs4XXx8KFhbOF09YWU9PksuJGVtaXQoXCJ0b29sdGlwLWNsb3NlXCIsYWUpKSxvblRpbWVQaWNrZXJPcGVuOlhbOV18fChYWzldPWFlPT5LLiRlbWl0KFwidGltZS1waWNrZXItb3BlblwiLGFlKSksb25UaW1lUGlja2VyQ2xvc2U6WFsxMF18fChYWzEwXT1hZT0+Sy4kZW1pdChcInRpbWUtcGlja2VyLWNsb3NlXCIsYWUpKSxvbkFtUG1DaGFuZ2U6WFsxMV18fChYWzExXT1hZT0+Sy4kZW1pdChcImFtLXBtLWNoYW5nZVwiLGFlKSksb25SYW5nZVN0YXJ0OlhbMTJdfHwoWFsxMl09YWU9PksuJGVtaXQoXCJyYW5nZS1zdGFydFwiLGFlKSksb25SYW5nZUVuZDpYWzEzXXx8KFhbMTNdPWFlPT5LLiRlbWl0KFwicmFuZ2UtZW5kXCIsYWUpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKGVlKSwoYWUsSGUpPT4oe25hbWU6YWUsZm46ZS53aXRoQ3R4KFllPT5bZS5yZW5kZXJTbG90KEsuJHNsb3RzLGFlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLlllfSkpKV0pfSkpXSksMTA0MCxbXCJjbGFzc1wiLFwic3R5bGVcIixcIm9wZW4tb24tdG9wXCIsXCJhcnItbWFwLXZhbHVlc1wiLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIixcIm9uUmVjYWxjdWxhdGVQb3NpdGlvblwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzozfSwxNikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSwyKSl9fSksTXQ9KCgpPT57Y29uc3QgdD1hcjtyZXR1cm4gdC5pbnN0YWxsPWE9PnthLmNvbXBvbmVudChcIlZ1ZTNEYXRlUGlja2VyXCIsdCl9LHR9KSgpO3JldHVybiBPYmplY3QuZW50cmllcyhPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZGVmYXVsdDpNdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSkpKS5mb3JFYWNoKChbdCxhXSk9Pnt0IT09XCJkZWZhdWx0XCImJihNdFt0XT1hKX0pLE10fSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBzaGFyZWQgPSByZXF1aXJlKCdAdnVldXNlL3NoYXJlZCcpO1xudmFyIHZ1ZURlbWkgPSByZXF1aXJlKCd2dWUtZGVtaScpO1xuXG5mdW5jdGlvbiBjb21wdXRlZEFzeW5jKGV2YWx1YXRpb25DYWxsYmFjaywgaW5pdGlhbFN0YXRlLCBvcHRpb25zT3JSZWYpIHtcbiAgbGV0IG9wdGlvbnM7XG4gIGlmICh2dWVEZW1pLmlzUmVmKG9wdGlvbnNPclJlZikpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgZXZhbHVhdGluZzogb3B0aW9uc09yUmVmXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zID0gb3B0aW9uc09yUmVmIHx8IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBsYXp5ID0gZmFsc2UsXG4gICAgZXZhbHVhdGluZyA9IHZvaWQgMCxcbiAgICBvbkVycm9yID0gc2hhcmVkLm5vb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXJ0ZWQgPSB2dWVEZW1pLnJlZighbGF6eSk7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLnJlZihpbml0aWFsU3RhdGUpO1xuICBsZXQgY291bnRlciA9IDA7XG4gIHZ1ZURlbWkud2F0Y2hFZmZlY3QoYXN5bmMgKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIGlmICghc3RhcnRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBjb3VudGVyKys7XG4gICAgY29uc3QgY291bnRlckF0QmVnaW5uaW5nID0gY291bnRlcjtcbiAgICBsZXQgaGFzRmluaXNoZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZhbHVhdGluZykge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV2YWx1YXRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0aW9uQ2FsbGJhY2soKGNhbmNlbENhbGxiYWNrKSA9PiB7XG4gICAgICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2YWx1YXRpbmcpXG4gICAgICAgICAgICBldmFsdWF0aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgaWYgKCFoYXNGaW5pc2hlZClcbiAgICAgICAgICAgIGNhbmNlbENhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoY291bnRlckF0QmVnaW5uaW5nID09PSBjb3VudGVyKVxuICAgICAgICBjdXJyZW50LnZhbHVlID0gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChldmFsdWF0aW5nICYmIGNvdW50ZXJBdEJlZ2lubmluZyA9PT0gY291bnRlcilcbiAgICAgICAgZXZhbHVhdGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgaGFzRmluaXNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIGlmIChsYXp5KSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgc3RhcnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICByZXR1cm4gY3VycmVudC52YWx1ZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wdXRlZEluamVjdChrZXksIG9wdGlvbnMsIGRlZmF1bHRTb3VyY2UsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSkge1xuICBsZXQgc291cmNlID0gdnVlRGVtaS5pbmplY3Qoa2V5KTtcbiAgaWYgKGRlZmF1bHRTb3VyY2UpXG4gICAgc291cmNlID0gdnVlRGVtaS5pbmplY3Qoa2V5LCBkZWZhdWx0U291cmNlKTtcbiAgaWYgKHRyZWF0RGVmYXVsdEFzRmFjdG9yeSlcbiAgICBzb3VyY2UgPSB2dWVEZW1pLmluamVjdChrZXksIGRlZmF1bHRTb3VyY2UsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSk7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKGN0eCkgPT4gb3B0aW9ucyhzb3VyY2UsIGN0eCkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICAgIGdldDogKGN0eCkgPT4gb3B0aW9ucy5nZXQoc291cmNlLCBjdHgpLFxuICAgICAgc2V0OiBvcHRpb25zLnNldFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNyZWF0ZVVucmVmRm4gPSAoZm4pID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJncy5tYXAoKGkpID0+IHZ1ZURlbWkudW5yZWYoaSkpKTtcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHVucmVmRWxlbWVudChlbFJlZikge1xuICB2YXIgX2E7XG4gIGNvbnN0IHBsYWluID0gdnVlRGVtaS51bnJlZihlbFJlZik7XG4gIHJldHVybiAoX2EgPSBwbGFpbiA9PSBudWxsID8gdm9pZCAwIDogcGxhaW4uJGVsKSAhPSBudWxsID8gX2EgOiBwbGFpbjtcbn1cblxuY29uc3QgZGVmYXVsdFdpbmRvdyA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdyA6IHZvaWQgMDtcbmNvbnN0IGRlZmF1bHREb2N1bWVudCA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdy5kb2N1bWVudCA6IHZvaWQgMDtcbmNvbnN0IGRlZmF1bHROYXZpZ2F0b3IgPSBzaGFyZWQuaXNDbGllbnQgPyB3aW5kb3cubmF2aWdhdG9yIDogdm9pZCAwO1xuY29uc3QgZGVmYXVsdExvY2F0aW9uID0gc2hhcmVkLmlzQ2xpZW50ID8gd2luZG93LmxvY2F0aW9uIDogdm9pZCAwO1xuXG5mdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKC4uLmFyZ3MpIHtcbiAgbGV0IHRhcmdldDtcbiAgbGV0IGV2ZW50O1xuICBsZXQgbGlzdGVuZXI7XG4gIGxldCBvcHRpb25zO1xuICBpZiAoc2hhcmVkLmlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgW2V2ZW50LCBsaXN0ZW5lciwgb3B0aW9uc10gPSBhcmdzO1xuICAgIHRhcmdldCA9IGRlZmF1bHRXaW5kb3c7XG4gIH0gZWxzZSB7XG4gICAgW3RhcmdldCwgZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zXSA9IGFyZ3M7XG4gIH1cbiAgaWYgKCF0YXJnZXQpXG4gICAgcmV0dXJuIHNoYXJlZC5ub29wO1xuICBsZXQgY2xlYW51cCA9IHNoYXJlZC5ub29wO1xuICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWwpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICAgIGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgICB9O1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIHN0b3BXYXRjaCgpO1xuICAgIGNsZWFudXAoKTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4gc3RvcDtcbn1cblxuZnVuY3Rpb24gb25DbGlja091dHNpZGUodGFyZ2V0LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93LCBpZ25vcmUsIGNhcHR1cmUgPSB0cnVlLCBkZXRlY3RJZnJhbWUgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgaWYgKCF3aW5kb3cpXG4gICAgcmV0dXJuO1xuICBjb25zdCBzaG91bGRMaXN0ZW4gPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgbGV0IGZhbGxiYWNrO1xuICBjb25zdCBsaXN0ZW5lciA9IChldmVudCkgPT4ge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoZmFsbGJhY2spO1xuICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKCk7XG4gICAgaWYgKCFlbCB8fCBlbCA9PT0gZXZlbnQudGFyZ2V0IHx8IGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhlbCkgfHwgIXNob3VsZExpc3Rlbi52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoaWdub3JlICYmIGlnbm9yZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoaWdub3JlLnNvbWUoKHRhcmdldDIpID0+IHtcbiAgICAgICAgY29uc3QgZWwyID0gdW5yZWZFbGVtZW50KHRhcmdldDIpO1xuICAgICAgICByZXR1cm4gZWwyICYmIChldmVudC50YXJnZXQgPT09IGVsMiB8fCBjb21wb3NlZFBhdGguaW5jbHVkZXMoZWwyKSk7XG4gICAgICB9KSlcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBoYW5kbGVyKGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgY2xlYW51cCA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJjbGlja1wiLCBsaXN0ZW5lciwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInBvaW50ZXJkb3duXCIsIChlKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgICAgc2hvdWxkTGlzdGVuLnZhbHVlID0gISFlbCAmJiAhZS5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhlbCk7XG4gICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInBvaW50ZXJ1cFwiLCAoZSkgPT4ge1xuICAgICAgaWYgKGUuYnV0dG9uID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBlLmNvbXBvc2VkUGF0aCgpO1xuICAgICAgICBlLmNvbXBvc2VkUGF0aCA9ICgpID0+IHBhdGg7XG4gICAgICAgIGZhbGxiYWNrID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gbGlzdGVuZXIoZSksIDUwKTtcbiAgICAgIH1cbiAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSksXG4gICAgZGV0ZWN0SWZyYW1lICYmIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJsdXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgICAgaWYgKCgoX2EgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2EudGFnTmFtZSkgPT09IFwiSUZSQU1FXCIgJiYgIShlbCA9PSBudWxsID8gdm9pZCAwIDogZWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpKVxuICAgICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICB9KVxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IGNsZWFudXAuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICByZXR1cm4gc3RvcDtcbn1cblxudmFyIF9fZGVmUHJvcCRqID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkOCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGwgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kbCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGogPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGoob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGogPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRsLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkaihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkbClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkbChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRsLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRqKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkOCA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDgoYSwgX19nZXRPd25Qcm9wRGVzY3MkOChiKSk7XG5jb25zdCBjcmVhdGVLZXlQcmVkaWNhdGUgPSAoa2V5RmlsdGVyKSA9PiB7XG4gIGlmICh0eXBlb2Yga2V5RmlsdGVyID09PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIGtleUZpbHRlcjtcbiAgZWxzZSBpZiAodHlwZW9mIGtleUZpbHRlciA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gKGV2ZW50KSA9PiBldmVudC5rZXkgPT09IGtleUZpbHRlcjtcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShrZXlGaWx0ZXIpKVxuICAgIHJldHVybiAoZXZlbnQpID0+IGtleUZpbHRlci5pbmNsdWRlcyhldmVudC5rZXkpO1xuICBlbHNlIGlmIChrZXlGaWx0ZXIpXG4gICAgcmV0dXJuICgpID0+IHRydWU7XG4gIGVsc2VcbiAgICByZXR1cm4gKCkgPT4gZmFsc2U7XG59O1xuZnVuY3Rpb24gb25LZXlTdHJva2Uoa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB0YXJnZXQgPSBkZWZhdWx0V2luZG93LCBldmVudE5hbWUgPSBcImtleWRvd25cIiwgcGFzc2l2ZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcmVkaWNhdGUgPSBjcmVhdGVLZXlQcmVkaWNhdGUoa2V5KTtcbiAgY29uc3QgbGlzdGVuZXIgPSAoZSkgPT4ge1xuICAgIGlmIChwcmVkaWNhdGUoZSkpXG4gICAgICBoYW5kbGVyKGUpO1xuICB9O1xuICByZXR1cm4gdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50TmFtZSwgbGlzdGVuZXIsIHBhc3NpdmUpO1xufVxuZnVuY3Rpb24gb25LZXlEb3duKGtleSwgaGFuZGxlciwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBvbktleVN0cm9rZShrZXksIGhhbmRsZXIsIF9fc3ByZWFkUHJvcHMkOChfX3NwcmVhZFZhbHVlcyRqKHt9LCBvcHRpb25zKSwgeyBldmVudE5hbWU6IFwia2V5ZG93blwiIH0pKTtcbn1cbmZ1bmN0aW9uIG9uS2V5UHJlc3NlZChrZXksIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gb25LZXlTdHJva2Uoa2V5LCBoYW5kbGVyLCBfX3NwcmVhZFByb3BzJDgoX19zcHJlYWRWYWx1ZXMkaih7fSwgb3B0aW9ucyksIHsgZXZlbnROYW1lOiBcImtleXByZXNzXCIgfSkpO1xufVxuZnVuY3Rpb24gb25LZXlVcChrZXksIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gb25LZXlTdHJva2Uoa2V5LCBoYW5kbGVyLCBfX3NwcmVhZFByb3BzJDgoX19zcHJlYWRWYWx1ZXMkaih7fSwgb3B0aW9ucyksIHsgZXZlbnROYW1lOiBcImtleXVwXCIgfSkpO1xufVxuXG5jb25zdCBERUZBVUxUX0RFTEFZID0gNTAwO1xuZnVuY3Rpb24gb25Mb25nUHJlc3ModGFyZ2V0LCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpKTtcbiAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gb25Eb3duKGV2KSB7XG4gICAgdmFyIF9hMiwgX2IyLCBfYywgX2Q7XG4gICAgaWYgKCgoX2EyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuc2VsZikgJiYgZXYudGFyZ2V0ICE9PSBlbGVtZW50UmVmLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGNsZWFyKCk7XG4gICAgaWYgKChfYjIgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iMi5wcmV2ZW50KVxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoKF9jID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYy5zdG9wKVxuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gaGFuZGxlcihldiksIChfZCA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZGVsYXkpICE9IG51bGwgPyBfZCA6IERFRkFVTFRfREVMQVkpO1xuICB9XG4gIGNvbnN0IGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICBjYXB0dXJlOiAoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhcHR1cmUsXG4gICAgb25jZTogKF9iID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYi5vbmNlXG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudFJlZiwgXCJwb2ludGVyZG93blwiLCBvbkRvd24sIGxpc3RlbmVyT3B0aW9ucyk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudFJlZiwgXCJwb2ludGVydXBcIiwgY2xlYXIsIGxpc3RlbmVyT3B0aW9ucyk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudFJlZiwgXCJwb2ludGVybGVhdmVcIiwgY2xlYXIsIGxpc3RlbmVyT3B0aW9ucyk7XG59XG5cbmNvbnN0IGlzRm9jdXNlZEVsZW1lbnRFZGl0YWJsZSA9ICgpID0+IHtcbiAgY29uc3QgeyBhY3RpdmVFbGVtZW50LCBib2R5IH0gPSBkb2N1bWVudDtcbiAgaWYgKCFhY3RpdmVFbGVtZW50KVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKGFjdGl2ZUVsZW1lbnQgPT09IGJvZHkpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKGFjdGl2ZUVsZW1lbnQudGFnTmFtZSkge1xuICAgIGNhc2UgXCJJTlBVVFwiOlxuICAgIGNhc2UgXCJURVhUQVJFQVwiOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpO1xufTtcbmNvbnN0IGlzVHlwZWRDaGFyVmFsaWQgPSAoe1xuICBrZXlDb2RlLFxuICBtZXRhS2V5LFxuICBjdHJsS2V5LFxuICBhbHRLZXlcbn0pID0+IHtcbiAgaWYgKG1ldGFLZXkgfHwgY3RybEtleSB8fCBhbHRLZXkpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoa2V5Q29kZSA+PSA0OCAmJiBrZXlDb2RlIDw9IDU3IHx8IGtleUNvZGUgPj0gOTYgJiYga2V5Q29kZSA8PSAxMDUpXG4gICAgcmV0dXJuIHRydWU7XG4gIGlmIChrZXlDb2RlID49IDY1ICYmIGtleUNvZGUgPD0gOTApXG4gICAgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn07XG5mdW5jdGlvbiBvblN0YXJ0VHlwaW5nKGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBkb2N1bWVudDogZG9jdW1lbnQyID0gZGVmYXVsdERvY3VtZW50IH0gPSBvcHRpb25zO1xuICBjb25zdCBrZXlkb3duID0gKGV2ZW50KSA9PiB7XG4gICAgIWlzRm9jdXNlZEVsZW1lbnRFZGl0YWJsZSgpICYmIGlzVHlwZWRDaGFyVmFsaWQoZXZlbnQpICYmIGNhbGxiYWNrKGV2ZW50KTtcbiAgfTtcbiAgaWYgKGRvY3VtZW50MilcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50MiwgXCJrZXlkb3duXCIsIGtleWRvd24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gdGVtcGxhdGVSZWYoa2V5LCBpbml0aWFsVmFsdWUgPSBudWxsKSB7XG4gIGNvbnN0IGluc3RhbmNlID0gdnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgbGV0IF90cmlnZ2VyID0gKCkgPT4ge1xuICB9O1xuICBjb25zdCBlbGVtZW50ID0gdnVlRGVtaS5jdXN0b21SZWYoKHRyYWNrLCB0cmlnZ2VyKSA9PiB7XG4gICAgX3RyaWdnZXIgPSB0cmlnZ2VyO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSBpbnN0YW5jZSA9PSBudWxsID8gdm9pZCAwIDogaW5zdGFuY2UucHJveHkpID09IG51bGwgPyB2b2lkIDAgOiBfYS4kcmVmc1trZXldKSAhPSBudWxsID8gX2IgOiBpbml0aWFsVmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0KCkge1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKF90cmlnZ2VyKTtcbiAgdnVlRGVtaS5vblVwZGF0ZWQoX3RyaWdnZXIpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdXNlQWN0aXZlRWxlbWVudChvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBjb3VudGVyID0gdnVlRGVtaS5yZWYoMCk7XG4gIGlmICh3aW5kb3cpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJibHVyXCIsICgpID0+IGNvdW50ZXIudmFsdWUgKz0gMSwgdHJ1ZSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZm9jdXNcIiwgKCkgPT4gY291bnRlci52YWx1ZSArPSAxLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgY291bnRlci52YWx1ZTtcbiAgICByZXR1cm4gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUFzeW5jUXVldWUodGFza3MsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZXJydXB0ID0gdHJ1ZSxcbiAgICBvbkVycm9yID0gc2hhcmVkLm5vb3AsXG4gICAgb25GaW5pc2hlZCA9IHNoYXJlZC5ub29wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcm9taXNlU3RhdGUgPSB7XG4gICAgcGVuZGluZzogXCJwZW5kaW5nXCIsXG4gICAgcmVqZWN0ZWQ6IFwicmVqZWN0ZWRcIixcbiAgICBmdWxmaWxsZWQ6IFwiZnVsZmlsbGVkXCJcbiAgfTtcbiAgY29uc3QgaW5pdGlhbFJlc3VsdCA9IEFycmF5LmZyb20obmV3IEFycmF5KHRhc2tzLmxlbmd0aCksICgpID0+ICh7IHN0YXRlOiBwcm9taXNlU3RhdGUucGVuZGluZywgZGF0YTogbnVsbCB9KSk7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkucmVhY3RpdmUoaW5pdGlhbFJlc3VsdCk7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gdnVlRGVtaS5yZWYoLTEpO1xuICBpZiAoIXRhc2tzIHx8IHRhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uRmluaXNoZWQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICByZXN1bHRcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVJlc3VsdChzdGF0ZSwgcmVzKSB7XG4gICAgYWN0aXZlSW5kZXgudmFsdWUrKztcbiAgICByZXN1bHRbYWN0aXZlSW5kZXgudmFsdWVdLmRhdGEgPSByZXM7XG4gICAgcmVzdWx0W2FjdGl2ZUluZGV4LnZhbHVlXS5zdGF0ZSA9IHN0YXRlO1xuICB9XG4gIHRhc2tzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgIHJldHVybiBwcmV2LnRoZW4oKHByZXZSZXMpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmICgoKF9hID0gcmVzdWx0W2FjdGl2ZUluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0YXRlKSA9PT0gcHJvbWlzZVN0YXRlLnJlamVjdGVkICYmIGludGVycnVwdCkge1xuICAgICAgICBvbkZpbmlzaGVkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyKHByZXZSZXMpLnRoZW4oKGN1cnJlbnRSZXMpID0+IHtcbiAgICAgICAgdXBkYXRlUmVzdWx0KHByb21pc2VTdGF0ZS5mdWxmaWxsZWQsIGN1cnJlbnRSZXMpO1xuICAgICAgICBhY3RpdmVJbmRleC52YWx1ZSA9PT0gdGFza3MubGVuZ3RoIC0gMSAmJiBvbkZpbmlzaGVkKCk7XG4gICAgICAgIHJldHVybiBjdXJyZW50UmVzO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgIHVwZGF0ZVJlc3VsdChwcm9taXNlU3RhdGUucmVqZWN0ZWQsIGUpO1xuICAgICAgb25FcnJvcigpO1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG4gIH0sIFByb21pc2UucmVzb2x2ZSgpKTtcbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICByZXN1bHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlQXN5bmNTdGF0ZShwcm9taXNlLCBpbml0aWFsU3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgZGVsYXkgPSAwLFxuICAgIG9uRXJyb3IgPSBzaGFyZWQubm9vcCxcbiAgICByZXNldE9uRXhlY3V0ZSA9IHRydWUsXG4gICAgc2hhbGxvdyA9IHRydWVcbiAgfSA9IG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fTtcbiAgY29uc3Qgc3RhdGUgPSBzaGFsbG93ID8gdnVlRGVtaS5zaGFsbG93UmVmKGluaXRpYWxTdGF0ZSkgOiB2dWVEZW1pLnJlZihpbml0aWFsU3RhdGUpO1xuICBjb25zdCBpc1JlYWR5ID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBpc0xvYWRpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZShkZWxheTIgPSAwLCAuLi5hcmdzKSB7XG4gICAgaWYgKHJlc2V0T25FeGVjdXRlKVxuICAgICAgc3RhdGUudmFsdWUgPSBpbml0aWFsU3RhdGU7XG4gICAgZXJyb3IudmFsdWUgPSB2b2lkIDA7XG4gICAgaXNSZWFkeS52YWx1ZSA9IGZhbHNlO1xuICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGRlbGF5MiA+IDApXG4gICAgICBhd2FpdCBzaGFyZWQucHJvbWlzZVRpbWVvdXQoZGVsYXkyKTtcbiAgICBjb25zdCBfcHJvbWlzZSA9IHR5cGVvZiBwcm9taXNlID09PSBcImZ1bmN0aW9uXCIgPyBwcm9taXNlKC4uLmFyZ3MpIDogcHJvbWlzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IF9wcm9taXNlO1xuICAgICAgc3RhdGUudmFsdWUgPSBkYXRhO1xuICAgICAgaXNSZWFkeS52YWx1ZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3IudmFsdWUgPSBlO1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZS52YWx1ZTtcbiAgfVxuICBpZiAoaW1tZWRpYXRlKVxuICAgIGV4ZWN1dGUoZGVsYXkpO1xuICByZXR1cm4ge1xuICAgIHN0YXRlLFxuICAgIGlzUmVhZHksXG4gICAgaXNMb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGV4ZWN1dGVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdHMgPSB7XG4gIGFycmF5OiAodikgPT4gSlNPTi5zdHJpbmdpZnkodiksXG4gIG9iamVjdDogKHYpID0+IEpTT04uc3RyaW5naWZ5KHYpLFxuICBzZXQ6ICh2KSA9PiBKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHYpKSxcbiAgbWFwOiAodikgPT4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmZyb21FbnRyaWVzKHYpKSxcbiAgbnVsbDogKCkgPT4gXCJcIlxufTtcbmZ1bmN0aW9uIGdldERlZmF1bHRTZXJpYWxpemF0aW9uKHRhcmdldCkge1xuICBpZiAoIXRhcmdldClcbiAgICByZXR1cm4gZGVmYXVsdHMubnVsbDtcbiAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIE1hcClcbiAgICByZXR1cm4gZGVmYXVsdHMubWFwO1xuICBlbHNlIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBTZXQpXG4gICAgcmV0dXJuIGRlZmF1bHRzLnNldDtcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKVxuICAgIHJldHVybiBkZWZhdWx0cy5hcnJheTtcbiAgZWxzZVxuICAgIHJldHVybiBkZWZhdWx0cy5vYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHVzZUJhc2U2NCh0YXJnZXQsIG9wdGlvbnMpIHtcbiAgY29uc3QgYmFzZTY0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IHByb21pc2UgPSB2dWVEZW1pLnJlZigpO1xuICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgIGlmICghc2hhcmVkLmlzQ2xpZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHByb21pc2UudmFsdWUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBfdGFyZ2V0ID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgICAgICBpZiAoX3RhcmdldCA9PSBudWxsKSB7XG4gICAgICAgICAgcmVzb2x2ZShcIlwiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgX3RhcmdldCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJlc29sdmUoYmxvYlRvQmFzZTY0KG5ldyBCbG9iKFtfdGFyZ2V0XSwgeyB0eXBlOiBcInRleHQvcGxhaW5cIiB9KSkpO1xuICAgICAgICB9IGVsc2UgaWYgKF90YXJnZXQgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgcmVzb2x2ZShibG9iVG9CYXNlNjQoX3RhcmdldCkpO1xuICAgICAgICB9IGVsc2UgaWYgKF90YXJnZXQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHJlc29sdmUod2luZG93LmJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShfdGFyZ2V0KSkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChfdGFyZ2V0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgICAgICAgICByZXNvbHZlKF90YXJnZXQudG9EYXRhVVJMKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMudHlwZSwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5xdWFsaXR5KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBpbWcgPSBfdGFyZ2V0LmNsb25lTm9kZShmYWxzZSk7XG4gICAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gXCJBbm9ueW1vdXNcIjtcbiAgICAgICAgICBpbWdMb2FkZWQoaW1nKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7XG4gICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIHJlc29sdmUoY2FudmFzLnRvRGF0YVVSTChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnR5cGUsIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucXVhbGl0eSkpO1xuICAgICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90YXJnZXQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBjb25zdCBfc2VyaWFsaXplRm4gPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5zZXJpYWxpemVyKSB8fCBnZXREZWZhdWx0U2VyaWFsaXphdGlvbihfdGFyZ2V0KTtcbiAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gX3NlcmlhbGl6ZUZuKF90YXJnZXQpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGJsb2JUb0Jhc2U2NChuZXcgQmxvYihbc2VyaWFsaXplZF0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKFwidGFyZ2V0IGlzIHVuc3VwcG9ydGVkIHR5cGVzXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBwcm9taXNlLnZhbHVlLnRoZW4oKHJlcykgPT4gYmFzZTY0LnZhbHVlID0gcmVzKTtcbiAgICByZXR1cm4gcHJvbWlzZS52YWx1ZTtcbiAgfVxuICBpZiAodnVlRGVtaS5pc1JlZih0YXJnZXQpKVxuICAgIHZ1ZURlbWkud2F0Y2godGFyZ2V0LCBleGVjdXRlLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgZWxzZVxuICAgIGV4ZWN1dGUoKTtcbiAgcmV0dXJuIHtcbiAgICBiYXNlNjQsXG4gICAgcHJvbWlzZSxcbiAgICBleGVjdXRlXG4gIH07XG59XG5mdW5jdGlvbiBpbWdMb2FkZWQoaW1nKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCFpbWcuY29tcGxldGUpIHtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBmci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpO1xuICAgIH07XG4gICAgZnIub25lcnJvciA9IHJlamVjdDtcbiAgICBmci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQmF0dGVyeSh7IG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IgfSA9IHt9KSB7XG4gIGNvbnN0IGV2ZW50cyA9IFtcImNoYXJnaW5nY2hhbmdlXCIsIFwiY2hhcmdpbmd0aW1lY2hhbmdlXCIsIFwiZGlzY2hhcmdpbmd0aW1lY2hhbmdlXCIsIFwibGV2ZWxjaGFuZ2VcIl07XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIFwiZ2V0QmF0dGVyeVwiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgY2hhcmdpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGNoYXJnaW5nVGltZSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBkaXNjaGFyZ2luZ1RpbWUgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgbGV2ZWwgPSB2dWVEZW1pLnJlZigxKTtcbiAgbGV0IGJhdHRlcnk7XG4gIGZ1bmN0aW9uIHVwZGF0ZUJhdHRlcnlJbmZvKCkge1xuICAgIGNoYXJnaW5nLnZhbHVlID0gdGhpcy5jaGFyZ2luZztcbiAgICBjaGFyZ2luZ1RpbWUudmFsdWUgPSB0aGlzLmNoYXJnaW5nVGltZSB8fCAwO1xuICAgIGRpc2NoYXJnaW5nVGltZS52YWx1ZSA9IHRoaXMuZGlzY2hhcmdpbmdUaW1lIHx8IDA7XG4gICAgbGV2ZWwudmFsdWUgPSB0aGlzLmxldmVsO1xuICB9XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIG5hdmlnYXRvci5nZXRCYXR0ZXJ5KCkudGhlbigoX2JhdHRlcnkpID0+IHtcbiAgICAgIGJhdHRlcnkgPSBfYmF0dGVyeTtcbiAgICAgIHVwZGF0ZUJhdHRlcnlJbmZvLmNhbGwoYmF0dGVyeSk7XG4gICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cylcbiAgICAgICAgdXNlRXZlbnRMaXN0ZW5lcihiYXR0ZXJ5LCBldmVudCwgdXBkYXRlQmF0dGVyeUluZm8sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNoYXJnaW5nLFxuICAgIGNoYXJnaW5nVGltZSxcbiAgICBkaXNjaGFyZ2luZ1RpbWUsXG4gICAgbGV2ZWxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlQmx1ZXRvb3RoKG9wdGlvbnMpIHtcbiAgbGV0IHtcbiAgICBhY2NlcHRBbGxEZXZpY2VzID0gZmFsc2VcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXJzID0gdm9pZCAwLFxuICAgIG9wdGlvbmFsU2VydmljZXMgPSB2b2lkIDAsXG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgXCJibHVldG9vdGhcIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IGRldmljZSA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIHZ1ZURlbWkud2F0Y2goZGV2aWNlLCAoKSA9PiB7XG4gICAgY29ubmVjdFRvQmx1ZXRvb3RoR0FUVFNlcnZlcigpO1xuICB9KTtcbiAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdERldmljZSgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgICBpZiAoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCA+IDApXG4gICAgICBhY2NlcHRBbGxEZXZpY2VzID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGRldmljZS52YWx1ZSA9IGF3YWl0IChuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5ibHVldG9vdGgucmVxdWVzdERldmljZSh7XG4gICAgICAgIGFjY2VwdEFsbERldmljZXMsXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIG9wdGlvbmFsU2VydmljZXNcbiAgICAgIH0pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xuICAgIH1cbiAgfVxuICBjb25zdCBzZXJ2ZXIgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBpc0Nvbm5lY3RlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKChfYSA9IHNlcnZlci52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbm5lY3RlZCkgfHwgZmFsc2U7XG4gIH0pO1xuICBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9CbHVldG9vdGhHQVRUU2VydmVyKCkge1xuICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgICBpZiAoZGV2aWNlLnZhbHVlICYmIGRldmljZS52YWx1ZS5nYXR0KSB7XG4gICAgICBkZXZpY2UudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcImdhdHRzZXJ2ZXJkaXNjb25uZWN0ZWRcIiwgKCkgPT4ge1xuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBzZXJ2ZXIudmFsdWUgPSBhd2FpdCBkZXZpY2UudmFsdWUuZ2F0dC5jb25uZWN0KCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgZXJyb3IudmFsdWUgPSBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZGV2aWNlLnZhbHVlKVxuICAgICAgKF9hID0gZGV2aWNlLnZhbHVlLmdhdHQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb25uZWN0KCk7XG4gIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZGV2aWNlLnZhbHVlKVxuICAgICAgKF9hID0gZGV2aWNlLnZhbHVlLmdhdHQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kaXNjb25uZWN0KCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzQ29ubmVjdGVkLFxuICAgIGRldmljZSxcbiAgICByZXF1ZXN0RGV2aWNlLFxuICAgIHNlcnZlcixcbiAgICBlcnJvclxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4od2luZG93ICYmIFwibWF0Y2hNZWRpYVwiIGluIHdpbmRvdyAmJiB0eXBlb2Ygd2luZG93Lm1hdGNoTWVkaWEgPT09IFwiZnVuY3Rpb25cIik7XG4gIGxldCBtZWRpYVF1ZXJ5O1xuICBjb25zdCBtYXRjaGVzID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIW1lZGlhUXVlcnkpXG4gICAgICBtZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIG1hdGNoZXMudmFsdWUgPSBtZWRpYVF1ZXJ5Lm1hdGNoZXM7XG4gIH07XG4gIHNoYXJlZC50cnlPbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgICBpZiAoIW1lZGlhUXVlcnkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKFwiYWRkRXZlbnRMaXN0ZW5lclwiIGluIG1lZGlhUXVlcnkpXG4gICAgICBtZWRpYVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICBlbHNlXG4gICAgICBtZWRpYVF1ZXJ5LmFkZExpc3RlbmVyKHVwZGF0ZSk7XG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICAgIGlmIChcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiBpbiBtZWRpYVF1ZXJ5KVxuICAgICAgICBtZWRpYVF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVMaXN0ZW5lcih1cGRhdGUpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5cbmNvbnN0IGJyZWFrcG9pbnRzVGFpbHdpbmQgPSB7XG4gIFwic21cIjogNjQwLFxuICBcIm1kXCI6IDc2OCxcbiAgXCJsZ1wiOiAxMDI0LFxuICBcInhsXCI6IDEyODAsXG4gIFwiMnhsXCI6IDE1MzZcbn07XG5jb25zdCBicmVha3BvaW50c0Jvb3RzdHJhcFY1ID0ge1xuICBzbTogNTc2LFxuICBtZDogNzY4LFxuICBsZzogOTkyLFxuICB4bDogMTIwMCxcbiAgeHhsOiAxNDAwXG59O1xuY29uc3QgYnJlYWtwb2ludHNWdWV0aWZ5ID0ge1xuICB4czogNjAwLFxuICBzbTogOTYwLFxuICBtZDogMTI2NCxcbiAgbGc6IDE5MDRcbn07XG5jb25zdCBicmVha3BvaW50c0FudERlc2lnbiA9IHtcbiAgeHM6IDQ4MCxcbiAgc206IDU3NixcbiAgbWQ6IDc2OCxcbiAgbGc6IDk5MixcbiAgeGw6IDEyMDAsXG4gIHh4bDogMTYwMFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzUXVhc2FyID0ge1xuICB4czogNjAwLFxuICBzbTogMTAyNCxcbiAgbWQ6IDE0NDAsXG4gIGxnOiAxOTIwXG59O1xuY29uc3QgYnJlYWtwb2ludHNTZW1hdGljID0ge1xuICBtb2JpbGVTOiAzMjAsXG4gIG1vYmlsZU06IDM3NSxcbiAgbW9iaWxlTDogNDI1LFxuICB0YWJsZXQ6IDc2OCxcbiAgbGFwdG9wOiAxMDI0LFxuICBsYXB0b3BMOiAxNDQwLFxuICBkZXNrdG9wNEs6IDI1NjBcbn07XG5cbnZhciBfX2RlZlByb3AkaSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGsgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRrID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kayA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGkgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGkob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGkgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRrLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkaShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkaylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkayhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRrLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRpKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlQnJlYWtwb2ludHMoYnJlYWtwb2ludHMsIG9wdGlvbnMgPSB7fSkge1xuICBmdW5jdGlvbiBnZXRWYWx1ZShrLCBkZWx0YSkge1xuICAgIGxldCB2ID0gYnJlYWtwb2ludHNba107XG4gICAgaWYgKGRlbHRhICE9IG51bGwpXG4gICAgICB2ID0gc2hhcmVkLmluY3JlYXNlV2l0aFVuaXQodiwgZGVsdGEpO1xuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIilcbiAgICAgIHYgPSBgJHt2fXB4YDtcbiAgICByZXR1cm4gdjtcbiAgfVxuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGZ1bmN0aW9uIG1hdGNoKHF1ZXJ5KSB7XG4gICAgaWYgKCF3aW5kb3cpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzO1xuICB9XG4gIGNvbnN0IGdyZWF0ZXIgPSAoaykgPT4ge1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGAobWluLXdpZHRoOiAke2dldFZhbHVlKGspfSlgLCBvcHRpb25zKTtcbiAgfTtcbiAgY29uc3Qgc2hvcnRjdXRNZXRob2RzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludHMpLnJlZHVjZSgoc2hvcnRjdXRzLCBrKSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNob3J0Y3V0cywgaywge1xuICAgICAgZ2V0OiAoKSA9PiBncmVhdGVyKGspLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBzaG9ydGN1dHM7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJGkoe1xuICAgIGdyZWF0ZXIsXG4gICAgc21hbGxlcihrKSB7XG4gICAgICByZXR1cm4gdXNlTWVkaWFRdWVyeShgKG1heC13aWR0aDogJHtnZXRWYWx1ZShrLCAtMC4xKX0pYCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBiZXR3ZWVuKGEsIGIpIHtcbiAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGAobWluLXdpZHRoOiAke2dldFZhbHVlKGEpfSkgYW5kIChtYXgtd2lkdGg6ICR7Z2V0VmFsdWUoYiwgLTAuMSl9KWAsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgaXNHcmVhdGVyKGspIHtcbiAgICAgIHJldHVybiBtYXRjaChgKG1pbi13aWR0aDogJHtnZXRWYWx1ZShrKX0pYCk7XG4gICAgfSxcbiAgICBpc1NtYWxsZXIoaykge1xuICAgICAgcmV0dXJuIG1hdGNoKGAobWF4LXdpZHRoOiAke2dldFZhbHVlKGssIC0wLjEpfSlgKTtcbiAgICB9LFxuICAgIGlzSW5CZXR3ZWVuKGEsIGIpIHtcbiAgICAgIHJldHVybiBtYXRjaChgKG1pbi13aWR0aDogJHtnZXRWYWx1ZShhKX0pIGFuZCAobWF4LXdpZHRoOiAke2dldFZhbHVlKGIsIC0wLjEpfSlgKTtcbiAgICB9XG4gIH0sIHNob3J0Y3V0TWV0aG9kcyk7XG59XG5cbmNvbnN0IHVzZUJyb2FkY2FzdENoYW5uZWwgPSAob3B0aW9ucykgPT4ge1xuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHdpbmRvdyAmJiBcIkJyb2FkY2FzdENoYW5uZWxcIiBpbiB3aW5kb3c7XG4gIGNvbnN0IGlzQ2xvc2VkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBjaGFubmVsID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHBvc3QgPSAoZGF0YTIpID0+IHtcbiAgICBpZiAoY2hhbm5lbC52YWx1ZSlcbiAgICAgIGNoYW5uZWwudmFsdWUucG9zdE1lc3NhZ2UoZGF0YTIpO1xuICB9O1xuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoY2hhbm5lbC52YWx1ZSlcbiAgICAgIGNoYW5uZWwudmFsdWUuY2xvc2UoKTtcbiAgICBpc0Nsb3NlZC52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICAgICAgY2hhbm5lbC52YWx1ZSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKG5hbWUpO1xuICAgICAgY2hhbm5lbC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZSkgPT4ge1xuICAgICAgICBkYXRhLnZhbHVlID0gZS5kYXRhO1xuICAgICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgY2hhbm5lbC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZWVycm9yXCIsIChlKSA9PiB7XG4gICAgICAgIGVycm9yLnZhbHVlID0gZTtcbiAgICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNoYW5uZWwudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgaXNDbG9zZWQudmFsdWUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBjbG9zZSgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBjaGFubmVsLFxuICAgIGRhdGEsXG4gICAgcG9zdCxcbiAgICBjbG9zZSxcbiAgICBlcnJvcixcbiAgICBpc0Nsb3NlZFxuICB9O1xufTtcblxuZnVuY3Rpb24gdXNlQnJvd3NlckxvY2F0aW9uKHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0ge30pIHtcbiAgY29uc3QgYnVpbGRTdGF0ZSA9ICh0cmlnZ2VyKSA9PiB7XG4gICAgY29uc3QgeyBzdGF0ZTogc3RhdGUyLCBsZW5ndGggfSA9ICh3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5oaXN0b3J5KSB8fCB7fTtcbiAgICBjb25zdCB7IGhhc2gsIGhvc3QsIGhvc3RuYW1lLCBocmVmLCBvcmlnaW4sIHBhdGhuYW1lLCBwb3J0LCBwcm90b2NvbCwgc2VhcmNoIH0gPSAod2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubG9jYXRpb24pIHx8IHt9O1xuICAgIHJldHVybiB7XG4gICAgICB0cmlnZ2VyLFxuICAgICAgc3RhdGU6IHN0YXRlMixcbiAgICAgIGxlbmd0aCxcbiAgICAgIGhhc2gsXG4gICAgICBob3N0LFxuICAgICAgaG9zdG5hbWUsXG4gICAgICBocmVmLFxuICAgICAgb3JpZ2luLFxuICAgICAgcGF0aG5hbWUsXG4gICAgICBwb3J0LFxuICAgICAgcHJvdG9jb2wsXG4gICAgICBzZWFyY2hcbiAgICB9O1xuICB9O1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKGJ1aWxkU3RhdGUoXCJsb2FkXCIpKTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInBvcHN0YXRlXCIsICgpID0+IHN0YXRlLnZhbHVlID0gYnVpbGRTdGF0ZShcInBvcHN0YXRlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiaGFzaGNoYW5nZVwiLCAoKSA9PiBzdGF0ZS52YWx1ZSA9IGJ1aWxkU3RhdGUoXCJoYXNoY2hhbmdlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiB1c2VDYWNoZWQocmVmVmFsdWUsIGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gYSA9PT0gYiwgd2F0Y2hPcHRpb25zKSB7XG4gIGNvbnN0IGNhY2hlZFZhbHVlID0gdnVlRGVtaS5yZWYocmVmVmFsdWUudmFsdWUpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHJlZlZhbHVlLnZhbHVlLCAodmFsdWUpID0+IHtcbiAgICBpZiAoIWNvbXBhcmF0b3IodmFsdWUsIGNhY2hlZFZhbHVlLnZhbHVlKSlcbiAgICAgIGNhY2hlZFZhbHVlLnZhbHVlID0gdmFsdWU7XG4gIH0sIHdhdGNoT3B0aW9ucyk7XG4gIHJldHVybiBjYWNoZWRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gdXNlQ2xhbXAodmFsdWUsIG1pbiwgbWF4KSB7XG4gIGNvbnN0IF92YWx1ZSA9IHZ1ZURlbWkucmVmKHZhbHVlKTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBfdmFsdWUudmFsdWUgPSBzaGFyZWQuY2xhbXAoX3ZhbHVlLnZhbHVlLCB2dWVEZW1pLnVucmVmKG1pbiksIHZ1ZURlbWkudW5yZWYobWF4KSk7XG4gICAgfSxcbiAgICBzZXQodmFsdWUyKSB7XG4gICAgICBfdmFsdWUudmFsdWUgPSBzaGFyZWQuY2xhbXAodmFsdWUyLCB2dWVEZW1pLnVucmVmKG1pbiksIHZ1ZURlbWkudW5yZWYobWF4KSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQ2xpcGJvYXJkKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvcixcbiAgICByZWFkID0gZmFsc2UsXG4gICAgc291cmNlLFxuICAgIGNvcGllZER1cmluZyA9IDE1MDBcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGV2ZW50cyA9IFtcImNvcHlcIiwgXCJjdXRcIl07XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihuYXZpZ2F0b3IgJiYgXCJjbGlwYm9hcmRcIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCB0ZXh0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IGNvcGllZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgdGltZW91dCA9IHNoYXJlZC51c2VUaW1lb3V0Rm4oKCkgPT4gY29waWVkLnZhbHVlID0gZmFsc2UsIGNvcGllZER1cmluZyk7XG4gIGZ1bmN0aW9uIHVwZGF0ZVRleHQoKSB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICB0ZXh0LnZhbHVlID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzU3VwcG9ydGVkICYmIHJlYWQpIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cylcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIoZXZlbnQsIHVwZGF0ZVRleHQpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNvcHkodmFsdWUgPSB2dWVEZW1pLnVucmVmKHNvdXJjZSkpIHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQgJiYgdmFsdWUgIT0gbnVsbCkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodmFsdWUpO1xuICAgICAgdGV4dC52YWx1ZSA9IHZhbHVlO1xuICAgICAgY29waWVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRpbWVvdXQuc3RhcnQoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICB0ZXh0LFxuICAgIGNvcGllZCxcbiAgICBjb3B5XG4gIH07XG59XG5cbmNvbnN0IF9nbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHt9O1xuY29uc3QgZ2xvYmFsS2V5ID0gXCJfX3Z1ZXVzZV9zc3JfaGFuZGxlcnNfX1wiO1xuX2dsb2JhbFtnbG9iYWxLZXldID0gX2dsb2JhbFtnbG9iYWxLZXldIHx8IHt9O1xuY29uc3QgaGFuZGxlcnMgPSBfZ2xvYmFsW2dsb2JhbEtleV07XG5mdW5jdGlvbiBnZXRTU1JIYW5kbGVyKGtleSwgZmFsbGJhY2spIHtcbiAgcmV0dXJuIGhhbmRsZXJzW2tleV0gfHwgZmFsbGJhY2s7XG59XG5mdW5jdGlvbiBzZXRTU1JIYW5kbGVyKGtleSwgZm4pIHtcbiAgaGFuZGxlcnNba2V5XSA9IGZuO1xufVxuXG5mdW5jdGlvbiBndWVzc1NlcmlhbGl6ZXJUeXBlKHJhd0luaXQpIHtcbiAgcmV0dXJuIHJhd0luaXQgPT0gbnVsbCA/IFwiYW55XCIgOiByYXdJbml0IGluc3RhbmNlb2YgU2V0ID8gXCJzZXRcIiA6IHJhd0luaXQgaW5zdGFuY2VvZiBNYXAgPyBcIm1hcFwiIDogcmF3SW5pdCBpbnN0YW5jZW9mIERhdGUgPyBcImRhdGVcIiA6IHR5cGVvZiByYXdJbml0ID09PSBcImJvb2xlYW5cIiA/IFwiYm9vbGVhblwiIDogdHlwZW9mIHJhd0luaXQgPT09IFwic3RyaW5nXCIgPyBcInN0cmluZ1wiIDogdHlwZW9mIHJhd0luaXQgPT09IFwib2JqZWN0XCIgPyBcIm9iamVjdFwiIDogQXJyYXkuaXNBcnJheShyYXdJbml0KSA/IFwib2JqZWN0XCIgOiAhTnVtYmVyLmlzTmFOKHJhd0luaXQpID8gXCJudW1iZXJcIiA6IFwiYW55XCI7XG59XG5cbmNvbnN0IFN0b3JhZ2VTZXJpYWxpemVycyA9IHtcbiAgYm9vbGVhbjoge1xuICAgIHJlYWQ6ICh2KSA9PiB2ID09PSBcInRydWVcIixcbiAgICB3cml0ZTogKHYpID0+IFN0cmluZyh2KVxuICB9LFxuICBvYmplY3Q6IHtcbiAgICByZWFkOiAodikgPT4gSlNPTi5wYXJzZSh2KSxcbiAgICB3cml0ZTogKHYpID0+IEpTT04uc3RyaW5naWZ5KHYpXG4gIH0sXG4gIG51bWJlcjoge1xuICAgIHJlYWQ6ICh2KSA9PiBOdW1iZXIucGFyc2VGbG9hdCh2KSxcbiAgICB3cml0ZTogKHYpID0+IFN0cmluZyh2KVxuICB9LFxuICBhbnk6IHtcbiAgICByZWFkOiAodikgPT4gdixcbiAgICB3cml0ZTogKHYpID0+IFN0cmluZyh2KVxuICB9LFxuICBzdHJpbmc6IHtcbiAgICByZWFkOiAodikgPT4gdixcbiAgICB3cml0ZTogKHYpID0+IFN0cmluZyh2KVxuICB9LFxuICBtYXA6IHtcbiAgICByZWFkOiAodikgPT4gbmV3IE1hcChKU09OLnBhcnNlKHYpKSxcbiAgICB3cml0ZTogKHYpID0+IEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odi5lbnRyaWVzKCkpKVxuICB9LFxuICBzZXQ6IHtcbiAgICByZWFkOiAodikgPT4gbmV3IFNldChKU09OLnBhcnNlKHYpKSxcbiAgICB3cml0ZTogKHYpID0+IEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odikpXG4gIH0sXG4gIGRhdGU6IHtcbiAgICByZWFkOiAodikgPT4gbmV3IERhdGUodiksXG4gICAgd3JpdGU6ICh2KSA9PiB2LnRvSVNPU3RyaW5nKClcbiAgfVxufTtcbmZ1bmN0aW9uIHVzZVN0b3JhZ2Uoa2V5LCBpbml0aWFsVmFsdWUsIHN0b3JhZ2UsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwicHJlXCIsXG4gICAgZGVlcCA9IHRydWUsXG4gICAgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyA9IHRydWUsXG4gICAgd3JpdGVEZWZhdWx0cyA9IHRydWUsXG4gICAgc2hhbGxvdyxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyLFxuICAgIG9uRXJyb3IgPSAoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkYXRhID0gKHNoYWxsb3cgPyB2dWVEZW1pLnNoYWxsb3dSZWYgOiB2dWVEZW1pLnJlZikoaW5pdGlhbFZhbHVlKTtcbiAgaWYgKCFzdG9yYWdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0b3JhZ2UgPSBnZXRTU1JIYW5kbGVyKFwiZ2V0RGVmYXVsdFN0b3JhZ2VcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgX2EyO1xuICAgICAgICByZXR1cm4gKF9hMiA9IGRlZmF1bHRXaW5kb3cpID09IG51bGwgPyB2b2lkIDAgOiBfYTIubG9jYWxTdG9yYWdlO1xuICAgICAgfSkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBpZiAoIXN0b3JhZ2UpXG4gICAgcmV0dXJuIGRhdGE7XG4gIGNvbnN0IHJhd0luaXQgPSB2dWVEZW1pLnVucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHR5cGUgPSBndWVzc1NlcmlhbGl6ZXJUeXBlKHJhd0luaXQpO1xuICBjb25zdCBzZXJpYWxpemVyID0gKF9hID0gb3B0aW9ucy5zZXJpYWxpemVyKSAhPSBudWxsID8gX2EgOiBTdG9yYWdlU2VyaWFsaXplcnNbdHlwZV07XG4gIGNvbnN0IHsgcGF1c2U6IHBhdXNlV2F0Y2gsIHJlc3VtZTogcmVzdW1lV2F0Y2ggfSA9IHNoYXJlZC5wYXVzYWJsZVdhdGNoKGRhdGEsICgpID0+IHdyaXRlKGRhdGEudmFsdWUpLCB7IGZsdXNoLCBkZWVwLCBldmVudEZpbHRlciB9KTtcbiAgaWYgKHdpbmRvdyAmJiBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInN0b3JhZ2VcIiwgdXBkYXRlKTtcbiAgdXBkYXRlKCk7XG4gIHJldHVybiBkYXRhO1xuICBmdW5jdGlvbiB3cml0ZSh2KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh2ID09IG51bGwpXG4gICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgZWxzZVxuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzZXJpYWxpemVyLndyaXRlKHYpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZWFkKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmtleSAhPT0ga2V5KVxuICAgICAgcmV0dXJuO1xuICAgIHBhdXNlV2F0Y2goKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3VmFsdWUgPSBldmVudCA/IGV2ZW50Lm5ld1ZhbHVlIDogc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAocmF3VmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBpZiAod3JpdGVEZWZhdWx0cyAmJiByYXdJbml0ICE9PSBudWxsKVxuICAgICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIHNlcmlhbGl6ZXIud3JpdGUocmF3SW5pdCkpO1xuICAgICAgICByZXR1cm4gcmF3SW5pdDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd1ZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiByYXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVyLnJlYWQocmF3VmFsdWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlc3VtZVdhdGNoKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZShldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC5rZXkgIT09IGtleSlcbiAgICAgIHJldHVybjtcbiAgICBkYXRhLnZhbHVlID0gcmVhZChldmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUHJlZmVycmVkRGFyayhvcHRpb25zKSB7XG4gIHJldHVybiB1c2VNZWRpYVF1ZXJ5KFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiLCBvcHRpb25zKTtcbn1cblxudmFyIF9fZGVmUHJvcCRoID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkaiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGogPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRqID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkaCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkaChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkaCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGouY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRoKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRqKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRqKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGouY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGgoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VDb2xvck1vZGUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzZWxlY3RvciA9IFwiaHRtbFwiLFxuICAgIGF0dHJpYnV0ZSA9IFwiY2xhc3NcIixcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIHN0b3JhZ2UsXG4gICAgc3RvcmFnZUtleSA9IFwidnVldXNlLWNvbG9yLXNjaGVtZVwiLFxuICAgIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMgPSB0cnVlLFxuICAgIHN0b3JhZ2VSZWYsXG4gICAgZW1pdEF1dG9cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG1vZGVzID0gX19zcHJlYWRWYWx1ZXMkaCh7XG4gICAgYXV0bzogXCJcIixcbiAgICBsaWdodDogXCJsaWdodFwiLFxuICAgIGRhcms6IFwiZGFya1wiXG4gIH0sIG9wdGlvbnMubW9kZXMgfHwge30pO1xuICBjb25zdCBwcmVmZXJyZWREYXJrID0gdXNlUHJlZmVycmVkRGFyayh7IHdpbmRvdyB9KTtcbiAgY29uc3QgcHJlZmVycmVkTW9kZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcHJlZmVycmVkRGFyay52YWx1ZSA/IFwiZGFya1wiIDogXCJsaWdodFwiKTtcbiAgY29uc3Qgc3RvcmUgPSBzdG9yYWdlUmVmIHx8IChzdG9yYWdlS2V5ID09IG51bGwgPyB2dWVEZW1pLnJlZihcImF1dG9cIikgOiB1c2VTdG9yYWdlKHN0b3JhZ2VLZXksIFwiYXV0b1wiLCBzdG9yYWdlLCB7IHdpbmRvdywgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyB9KSk7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHN0b3JlLnZhbHVlID09PSBcImF1dG9cIiAmJiAhZW1pdEF1dG8gPyBwcmVmZXJyZWRNb2RlLnZhbHVlIDogc3RvcmUudmFsdWU7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgc3RvcmUudmFsdWUgPSB2O1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHVwZGF0ZUhUTUxBdHRycyA9IGdldFNTUkhhbmRsZXIoXCJ1cGRhdGVIVE1MQXR0cnNcIiwgKHNlbGVjdG9yMiwgYXR0cmlidXRlMiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBlbCA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IyKTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChhdHRyaWJ1dGUyID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB2YWx1ZS5zcGxpdCgvXFxzL2cpO1xuICAgICAgT2JqZWN0LnZhbHVlcyhtb2RlcykuZmxhdE1hcCgoaSkgPT4gKGkgfHwgXCJcIikuc3BsaXQoL1xccy9nKSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnQuaW5jbHVkZXModikpXG4gICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCh2KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUodik7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZTIsIHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICBmdW5jdGlvbiBkZWZhdWx0T25DaGFuZ2VkKG1vZGUpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgcmVzb2x2ZWRNb2RlID0gbW9kZSA9PT0gXCJhdXRvXCIgPyBwcmVmZXJyZWRNb2RlLnZhbHVlIDogbW9kZTtcbiAgICB1cGRhdGVIVE1MQXR0cnMoc2VsZWN0b3IsIGF0dHJpYnV0ZSwgKF9hID0gbW9kZXNbcmVzb2x2ZWRNb2RlXSkgIT0gbnVsbCA/IF9hIDogcmVzb2x2ZWRNb2RlKTtcbiAgfVxuICBmdW5jdGlvbiBvbkNoYW5nZWQobW9kZSkge1xuICAgIGlmIChvcHRpb25zLm9uQ2hhbmdlZClcbiAgICAgIG9wdGlvbnMub25DaGFuZ2VkKG1vZGUsIGRlZmF1bHRPbkNoYW5nZWQpO1xuICAgIGVsc2VcbiAgICAgIGRlZmF1bHRPbkNoYW5nZWQobW9kZSk7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChzdGF0ZSwgb25DaGFuZ2VkLCB7IGZsdXNoOiBcInBvc3RcIiwgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IG9uQ2hhbmdlZChzdGF0ZS52YWx1ZSkpO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpcm1EaWFsb2cocmV2ZWFsZWQgPSB2dWVEZW1pLnJlZihmYWxzZSkpIHtcbiAgY29uc3QgY29uZmlybUhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGNhbmNlbEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IHJldmVhbEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGxldCBfcmVzb2x2ZSA9IHNoYXJlZC5ub29wO1xuICBjb25zdCByZXZlYWwgPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbEhvb2sudHJpZ2dlcihkYXRhKTtcbiAgICByZXZlYWxlZC52YWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGNvbmZpcm0gPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgY29uZmlybUhvb2sudHJpZ2dlcihkYXRhKTtcbiAgICBfcmVzb2x2ZSh7IGRhdGEsIGlzQ2FuY2VsZWQ6IGZhbHNlIH0pO1xuICB9O1xuICBjb25zdCBjYW5jZWwgPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgY2FuY2VsSG9vay50cmlnZ2VyKGRhdGEpO1xuICAgIF9yZXNvbHZlKHsgZGF0YSwgaXNDYW5jZWxlZDogdHJ1ZSB9KTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc1JldmVhbGVkOiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHJldmVhbGVkLnZhbHVlKSxcbiAgICByZXZlYWwsXG4gICAgY29uZmlybSxcbiAgICBjYW5jZWwsXG4gICAgb25SZXZlYWw6IHJldmVhbEhvb2sub24sXG4gICAgb25Db25maXJtOiBjb25maXJtSG9vay5vbixcbiAgICBvbkNhbmNlbDogY2FuY2VsSG9vay5vblxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VDc3NWYXIocHJvcCwgdGFyZ2V0LCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIGluaXRpYWxWYWx1ZSA9IFwiXCIgfSA9IHt9KSB7XG4gIGNvbnN0IHZhcmlhYmxlID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgZWxSZWYgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIHVucmVmRWxlbWVudCh0YXJnZXQpIHx8ICgoX2EgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRvY3VtZW50RWxlbWVudCk7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKFtlbFJlZiwgKCkgPT4gdnVlRGVtaS51bnJlZihwcm9wKV0sIChbZWwsIHByb3AyXSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZWwgJiYgd2luZG93KSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChfYSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3AyKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRyaW0oKTtcbiAgICAgIHZhcmlhYmxlLnZhbHVlID0gdmFsdWUgfHwgaW5pdGlhbFZhbHVlO1xuICAgIH1cbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHZ1ZURlbWkud2F0Y2godmFyaWFibGUsICh2YWwpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKChfYSA9IGVsUmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3R5bGUpXG4gICAgICBlbFJlZi52YWx1ZS5zdHlsZS5zZXRQcm9wZXJ0eSh2dWVEZW1pLnVucmVmKHByb3ApLCB2YWwpO1xuICB9KTtcbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5mdW5jdGlvbiB1c2VDdXJyZW50RWxlbWVudCgpIHtcbiAgY29uc3Qgdm0gPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBjb25zdCBjb3VudCA9IHZ1ZURlbWkucmVmKDApO1xuICB2dWVEZW1pLm9uVXBkYXRlZCgoKSA9PiB7XG4gICAgY291bnQudmFsdWUgKz0gMTtcbiAgfSk7XG4gIHZ1ZURlbWkub25Nb3VudGVkKCgpID0+IHtcbiAgICBjb3VudC52YWx1ZSArPSAxO1xuICB9KTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvdW50LnZhbHVlO1xuICAgIHJldHVybiB2bS5wcm94eS4kZWw7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VDeWNsZUxpc3QobGlzdCwgb3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5zaGFsbG93UmVmKChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW5pdGlhbFZhbHVlKSAhPSBudWxsID8gX2EgOiBsaXN0WzBdKTtcbiAgY29uc3QgaW5kZXggPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgbGV0IGluZGV4MiA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmdldEluZGV4T2YpID8gb3B0aW9ucy5nZXRJbmRleE9mKHN0YXRlLnZhbHVlLCBsaXN0KSA6IGxpc3QuaW5kZXhPZihzdGF0ZS52YWx1ZSk7XG4gICAgICBpZiAoaW5kZXgyIDwgMClcbiAgICAgICAgaW5kZXgyID0gKF9hMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZmFsbGJhY2tJbmRleCkgIT0gbnVsbCA/IF9hMiA6IDA7XG4gICAgICByZXR1cm4gaW5kZXgyO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIHNldCh2KTtcbiAgICB9XG4gIH0pO1xuICBmdW5jdGlvbiBzZXQoaSkge1xuICAgIGNvbnN0IGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICAgIGNvbnN0IGluZGV4MiA9IChpICUgbGVuZ3RoICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXgyXTtcbiAgICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdChkZWx0YSA9IDEpIHtcbiAgICByZXR1cm4gc2V0KGluZGV4LnZhbHVlICsgZGVsdGEpO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQobiA9IDEpIHtcbiAgICByZXR1cm4gc2hpZnQobik7XG4gIH1cbiAgZnVuY3Rpb24gcHJldihuID0gMSkge1xuICAgIHJldHVybiBzaGlmdCgtbik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGF0ZSxcbiAgICBpbmRleCxcbiAgICBuZXh0LFxuICAgIHByZXZcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCRnID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDcgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRpID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kaSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGcgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGcob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGcgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRpLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkZyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkaSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkaShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRpLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRnKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNyA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDcoYSwgX19nZXRPd25Qcm9wRGVzY3MkNyhiKSk7XG5mdW5jdGlvbiB1c2VEYXJrKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdmFsdWVEYXJrID0gXCJkYXJrXCIsXG4gICAgdmFsdWVMaWdodCA9IFwiXCIsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbW9kZSA9IHVzZUNvbG9yTW9kZShfX3NwcmVhZFByb3BzJDcoX19zcHJlYWRWYWx1ZXMkZyh7fSwgb3B0aW9ucyksIHtcbiAgICBvbkNoYW5nZWQ6IChtb2RlMiwgZGVmYXVsdEhhbmRsZXIpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChvcHRpb25zLm9uQ2hhbmdlZClcbiAgICAgICAgKF9hID0gb3B0aW9ucy5vbkNoYW5nZWQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIG1vZGUyID09PSBcImRhcmtcIik7XG4gICAgICBlbHNlXG4gICAgICAgIGRlZmF1bHRIYW5kbGVyKG1vZGUyKTtcbiAgICB9LFxuICAgIG1vZGVzOiB7XG4gICAgICBkYXJrOiB2YWx1ZURhcmssXG4gICAgICBsaWdodDogdmFsdWVMaWdodFxuICAgIH1cbiAgfSkpO1xuICBjb25zdCBwcmVmZXJyZWREYXJrID0gdXNlUHJlZmVycmVkRGFyayh7IHdpbmRvdyB9KTtcbiAgY29uc3QgaXNEYXJrID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09IFwiZGFya1wiO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIGlmICh2ID09PSBwcmVmZXJyZWREYXJrLnZhbHVlKVxuICAgICAgICBtb2RlLnZhbHVlID0gXCJhdXRvXCI7XG4gICAgICBlbHNlXG4gICAgICAgIG1vZGUudmFsdWUgPSB2ID8gXCJkYXJrXCIgOiBcImxpZ2h0XCI7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGlzRGFyaztcbn1cblxuY29uc3QgZm5DbG9uZSA9ICh2KSA9PiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHYpKTtcbmNvbnN0IGZuQnlwYXNzID0gKHYpID0+IHY7XG5jb25zdCBmblNldFNvdXJjZSA9IChzb3VyY2UsIHZhbHVlKSA9PiBzb3VyY2UudmFsdWUgPSB2YWx1ZTtcbmZ1bmN0aW9uIGRlZmF1bHREdW1wKGNsb25lKSB7XG4gIHJldHVybiBjbG9uZSA/IHNoYXJlZC5pc0Z1bmN0aW9uKGNsb25lKSA/IGNsb25lIDogZm5DbG9uZSA6IGZuQnlwYXNzO1xufVxuZnVuY3Rpb24gZGVmYXVsdFBhcnNlKGNsb25lKSB7XG4gIHJldHVybiBjbG9uZSA/IHNoYXJlZC5pc0Z1bmN0aW9uKGNsb25lKSA/IGNsb25lIDogZm5DbG9uZSA6IGZuQnlwYXNzO1xufVxuZnVuY3Rpb24gdXNlTWFudWFsUmVmSGlzdG9yeShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY2xvbmUgPSBmYWxzZSxcbiAgICBkdW1wID0gZGVmYXVsdER1bXAoY2xvbmUpLFxuICAgIHBhcnNlID0gZGVmYXVsdFBhcnNlKGNsb25lKSxcbiAgICBzZXRTb3VyY2UgPSBmblNldFNvdXJjZVxuICB9ID0gb3B0aW9ucztcbiAgZnVuY3Rpb24gX2NyZWF0ZUhpc3RvcnlSZWNvcmQoKSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkubWFya1Jhdyh7XG4gICAgICBzbmFwc2hvdDogZHVtcChzb3VyY2UudmFsdWUpLFxuICAgICAgdGltZXN0YW1wOiBzaGFyZWQudGltZXN0YW1wKClcbiAgICB9KTtcbiAgfVxuICBjb25zdCBsYXN0ID0gdnVlRGVtaS5yZWYoX2NyZWF0ZUhpc3RvcnlSZWNvcmQoKSk7XG4gIGNvbnN0IHVuZG9TdGFjayA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3QgcmVkb1N0YWNrID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBfc2V0U291cmNlID0gKHJlY29yZCkgPT4ge1xuICAgIHNldFNvdXJjZShzb3VyY2UsIHBhcnNlKHJlY29yZC5zbmFwc2hvdCkpO1xuICAgIGxhc3QudmFsdWUgPSByZWNvcmQ7XG4gIH07XG4gIGNvbnN0IGNvbW1pdCA9ICgpID0+IHtcbiAgICB1bmRvU3RhY2sudmFsdWUudW5zaGlmdChsYXN0LnZhbHVlKTtcbiAgICBsYXN0LnZhbHVlID0gX2NyZWF0ZUhpc3RvcnlSZWNvcmQoKTtcbiAgICBpZiAob3B0aW9ucy5jYXBhY2l0eSAmJiB1bmRvU3RhY2sudmFsdWUubGVuZ3RoID4gb3B0aW9ucy5jYXBhY2l0eSlcbiAgICAgIHVuZG9TdGFjay52YWx1ZS5zcGxpY2Uob3B0aW9ucy5jYXBhY2l0eSwgSW5maW5pdHkpO1xuICAgIGlmIChyZWRvU3RhY2sudmFsdWUubGVuZ3RoKVxuICAgICAgcmVkb1N0YWNrLnZhbHVlLnNwbGljZSgwLCByZWRvU3RhY2sudmFsdWUubGVuZ3RoKTtcbiAgfTtcbiAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgdW5kb1N0YWNrLnZhbHVlLnNwbGljZSgwLCB1bmRvU3RhY2sudmFsdWUubGVuZ3RoKTtcbiAgICByZWRvU3RhY2sudmFsdWUuc3BsaWNlKDAsIHJlZG9TdGFjay52YWx1ZS5sZW5ndGgpO1xuICB9O1xuICBjb25zdCB1bmRvID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdW5kb1N0YWNrLnZhbHVlLnNoaWZ0KCk7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICByZWRvU3RhY2sudmFsdWUudW5zaGlmdChsYXN0LnZhbHVlKTtcbiAgICAgIF9zZXRTb3VyY2Uoc3RhdGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVkbyA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlZG9TdGFjay52YWx1ZS5zaGlmdCgpO1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdW5kb1N0YWNrLnZhbHVlLnVuc2hpZnQobGFzdC52YWx1ZSk7XG4gICAgICBfc2V0U291cmNlKHN0YXRlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIF9zZXRTb3VyY2UobGFzdC52YWx1ZSk7XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IFtsYXN0LnZhbHVlLCAuLi51bmRvU3RhY2sudmFsdWVdKTtcbiAgY29uc3QgY2FuVW5kbyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5kb1N0YWNrLnZhbHVlLmxlbmd0aCA+IDApO1xuICBjb25zdCBjYW5SZWRvID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiByZWRvU3RhY2sudmFsdWUubGVuZ3RoID4gMCk7XG4gIHJldHVybiB7XG4gICAgc291cmNlLFxuICAgIHVuZG9TdGFjayxcbiAgICByZWRvU3RhY2ssXG4gICAgbGFzdCxcbiAgICBoaXN0b3J5LFxuICAgIGNhblVuZG8sXG4gICAgY2FuUmVkbyxcbiAgICBjbGVhcixcbiAgICBjb21taXQsXG4gICAgcmVzZXQsXG4gICAgdW5kbyxcbiAgICByZWRvXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkZiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDYgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ2ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRoID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkaCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGggPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRmID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRmKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRmID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkaC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGYoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGgpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGgoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kaC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkZihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDYgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ2KGEsIF9fZ2V0T3duUHJvcERlc2NzJDYoYikpO1xuZnVuY3Rpb24gdXNlUmVmSGlzdG9yeShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZGVlcCA9IGZhbHNlLFxuICAgIGZsdXNoID0gXCJwcmVcIixcbiAgICBldmVudEZpbHRlclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGV2ZW50RmlsdGVyOiBjb21wb3NlZEZpbHRlcixcbiAgICBwYXVzZSxcbiAgICByZXN1bWU6IHJlc3VtZVRyYWNraW5nLFxuICAgIGlzQWN0aXZlOiBpc1RyYWNraW5nXG4gIH0gPSBzaGFyZWQucGF1c2FibGVGaWx0ZXIoZXZlbnRGaWx0ZXIpO1xuICBjb25zdCB7XG4gICAgaWdub3JlVXBkYXRlcyxcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzLFxuICAgIHN0b3BcbiAgfSA9IHNoYXJlZC53YXRjaElnbm9yYWJsZShzb3VyY2UsIGNvbW1pdCwgeyBkZWVwLCBmbHVzaCwgZXZlbnRGaWx0ZXI6IGNvbXBvc2VkRmlsdGVyIH0pO1xuICBmdW5jdGlvbiBzZXRTb3VyY2Uoc291cmNlMiwgdmFsdWUpIHtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzKCk7XG4gICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgICBzb3VyY2UyLnZhbHVlID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWFudWFsSGlzdG9yeSA9IHVzZU1hbnVhbFJlZkhpc3Rvcnkoc291cmNlLCBfX3NwcmVhZFByb3BzJDYoX19zcHJlYWRWYWx1ZXMkZih7fSwgb3B0aW9ucyksIHsgY2xvbmU6IG9wdGlvbnMuY2xvbmUgfHwgZGVlcCwgc2V0U291cmNlIH0pKTtcbiAgY29uc3QgeyBjbGVhciwgY29tbWl0OiBtYW51YWxDb21taXQgfSA9IG1hbnVhbEhpc3Rvcnk7XG4gIGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzKCk7XG4gICAgbWFudWFsQ29tbWl0KCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKGNvbW1pdE5vdykge1xuICAgIHJlc3VtZVRyYWNraW5nKCk7XG4gICAgaWYgKGNvbW1pdE5vdylcbiAgICAgIGNvbW1pdCgpO1xuICB9XG4gIGZ1bmN0aW9uIGJhdGNoKGZuKSB7XG4gICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7XG4gICAgY29uc3QgY2FuY2VsID0gKCkgPT4gY2FuY2VsZWQgPSB0cnVlO1xuICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xuICAgICAgZm4oY2FuY2VsKTtcbiAgICB9KTtcbiAgICBpZiAoIWNhbmNlbGVkKVxuICAgICAgY29tbWl0KCk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBzdG9wKCk7XG4gICAgY2xlYXIoKTtcbiAgfVxuICByZXR1cm4gX19zcHJlYWRQcm9wcyQ2KF9fc3ByZWFkVmFsdWVzJGYoe30sIG1hbnVhbEhpc3RvcnkpLCB7XG4gICAgaXNUcmFja2luZyxcbiAgICBwYXVzZSxcbiAgICByZXN1bWUsXG4gICAgY29tbWl0LFxuICAgIGJhdGNoLFxuICAgIGRpc3Bvc2VcbiAgfSk7XG59XG5cbnZhciBfX2RlZlByb3AkZSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDUgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ1ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRnID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkZyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGcgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRlID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRlKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRlID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkZy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGUoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGcpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGcoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kZy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkZShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDUgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ1KGEsIF9fZ2V0T3duUHJvcERlc2NzJDUoYikpO1xuZnVuY3Rpb24gdXNlRGVib3VuY2VkUmVmSGlzdG9yeShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBmaWx0ZXIgPSBvcHRpb25zLmRlYm91bmNlID8gc2hhcmVkLmRlYm91bmNlRmlsdGVyKG9wdGlvbnMuZGVib3VuY2UpIDogdm9pZCAwO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlUmVmSGlzdG9yeShzb3VyY2UsIF9fc3ByZWFkUHJvcHMkNShfX3NwcmVhZFZhbHVlcyRlKHt9LCBvcHRpb25zKSwgeyBldmVudEZpbHRlcjogZmlsdGVyIH0pKTtcbiAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJGUoe30sIGhpc3RvcnkpO1xufVxuXG5mdW5jdGlvbiB1c2VEZXZpY2VNb3Rpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyID0gc2hhcmVkLmJ5cGFzc0ZpbHRlclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgYWNjZWxlcmF0aW9uID0gdnVlRGVtaS5yZWYoeyB4OiBudWxsLCB5OiBudWxsLCB6OiBudWxsIH0pO1xuICBjb25zdCByb3RhdGlvblJhdGUgPSB2dWVEZW1pLnJlZih7IGFscGhhOiBudWxsLCBiZXRhOiBudWxsLCBnYW1tYTogbnVsbCB9KTtcbiAgY29uc3QgaW50ZXJ2YWwgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSA9IHZ1ZURlbWkucmVmKHtcbiAgICB4OiBudWxsLFxuICAgIHk6IG51bGwsXG4gICAgejogbnVsbFxuICB9KTtcbiAgaWYgKHdpbmRvdykge1xuICAgIGNvbnN0IG9uRGV2aWNlTW90aW9uID0gc2hhcmVkLmNyZWF0ZUZpbHRlcldyYXBwZXIoZXZlbnRGaWx0ZXIsIChldmVudCkgPT4ge1xuICAgICAgYWNjZWxlcmF0aW9uLnZhbHVlID0gZXZlbnQuYWNjZWxlcmF0aW9uO1xuICAgICAgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eS52YWx1ZSA9IGV2ZW50LmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk7XG4gICAgICByb3RhdGlvblJhdGUudmFsdWUgPSBldmVudC5yb3RhdGlvblJhdGU7XG4gICAgICBpbnRlcnZhbC52YWx1ZSA9IGV2ZW50LmludGVydmFsO1xuICAgIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRldmljZW1vdGlvblwiLCBvbkRldmljZU1vdGlvbik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBhY2NlbGVyYXRpb24sXG4gICAgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSxcbiAgICByb3RhdGlvblJhdGUsXG4gICAgaW50ZXJ2YWxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRGV2aWNlT3JpZW50YXRpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKHdpbmRvdyAmJiBcIkRldmljZU9yaWVudGF0aW9uRXZlbnRcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBpc0Fic29sdXRlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBhbHBoYSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBiZXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGdhbW1hID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGlmICh3aW5kb3cgJiYgaXNTdXBwb3J0ZWQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJkZXZpY2VvcmllbnRhdGlvblwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlzQWJzb2x1dGUudmFsdWUgPSBldmVudC5hYnNvbHV0ZTtcbiAgICAgIGFscGhhLnZhbHVlID0gZXZlbnQuYWxwaGE7XG4gICAgICBiZXRhLnZhbHVlID0gZXZlbnQuYmV0YTtcbiAgICAgIGdhbW1hLnZhbHVlID0gZXZlbnQuZ2FtbWE7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0Fic29sdXRlLFxuICAgIGFscGhhLFxuICAgIGJldGEsXG4gICAgZ2FtbWFcbiAgfTtcbn1cblxuY29uc3QgREVWSUNFX1BJWEVMX1JBVElPX1NDQUxFUyA9IFtcbiAgMSxcbiAgMS4zMjUsXG4gIDEuNCxcbiAgMS41LFxuICAxLjgsXG4gIDIsXG4gIDIuNCxcbiAgMi41LFxuICAyLjc1LFxuICAzLFxuICAzLjUsXG4gIDRcbl07XG5mdW5jdGlvbiB1c2VEZXZpY2VQaXhlbFJhdGlvKHtcbiAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xufSA9IHt9KSB7XG4gIGlmICghd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBpeGVsUmF0aW86IHZ1ZURlbWkucmVmKDEpXG4gICAgfTtcbiAgfVxuICBjb25zdCBwaXhlbFJhdGlvID0gdnVlRGVtaS5yZWYod2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICBjb25zdCBoYW5kbGVEZXZpY2VQaXhlbFJhdGlvID0gKCkgPT4ge1xuICAgIHBpeGVsUmF0aW8udmFsdWUgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgfTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicmVzaXplXCIsIGhhbmRsZURldmljZVBpeGVsUmF0aW8sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgREVWSUNFX1BJWEVMX1JBVElPX1NDQUxFUy5mb3JFYWNoKChkcHB4KSA9PiB7XG4gICAgY29uc3QgbXFsTWluID0gdXNlTWVkaWFRdWVyeShgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICR7ZHBweH1kcHB4KWApO1xuICAgIGNvbnN0IG1xbE1heCA9IHVzZU1lZGlhUXVlcnkoYHNjcmVlbiBhbmQgKG1heC1yZXNvbHV0aW9uOiAke2RwcHh9ZHBweClgKTtcbiAgICB2dWVEZW1pLndhdGNoKFttcWxNaW4sIG1xbE1heF0sIGhhbmRsZURldmljZVBpeGVsUmF0aW8pO1xuICB9KTtcbiAgcmV0dXJuIHsgcGl4ZWxSYXRpbyB9O1xufVxuXG5mdW5jdGlvbiB1c2VQZXJtaXNzaW9uKHBlcm1pc3Npb25EZXNjLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzID0gZmFsc2UsXG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKG5hdmlnYXRvciAmJiBcInBlcm1pc3Npb25zXCIgaW4gbmF2aWdhdG9yKTtcbiAgbGV0IHBlcm1pc3Npb25TdGF0dXM7XG4gIGNvbnN0IGRlc2MgPSB0eXBlb2YgcGVybWlzc2lvbkRlc2MgPT09IFwic3RyaW5nXCIgPyB7IG5hbWU6IHBlcm1pc3Npb25EZXNjIH0gOiBwZXJtaXNzaW9uRGVzYztcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICBpZiAocGVybWlzc2lvblN0YXR1cylcbiAgICAgIHN0YXRlLnZhbHVlID0gcGVybWlzc2lvblN0YXR1cy5zdGF0ZTtcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSBzaGFyZWQuY3JlYXRlU2luZ2xldG9uUHJvbWlzZShhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXBlcm1pc3Npb25TdGF0dXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBlcm1pc3Npb25TdGF0dXMgPSBhd2FpdCBuYXZpZ2F0b3IucGVybWlzc2lvbnMucXVlcnkoZGVzYyk7XG4gICAgICAgIHVzZUV2ZW50TGlzdGVuZXIocGVybWlzc2lvblN0YXR1cywgXCJjaGFuZ2VcIiwgb25DaGFuZ2UpO1xuICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzdGF0ZS52YWx1ZSA9IFwicHJvbXB0XCI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwZXJtaXNzaW9uU3RhdHVzO1xuICB9KTtcbiAgcXVlcnkoKTtcbiAgaWYgKGNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlLFxuICAgICAgaXNTdXBwb3J0ZWQsXG4gICAgICBxdWVyeVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZURldmljZXNMaXN0KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvcixcbiAgICByZXF1ZXN0UGVybWlzc2lvbnMgPSBmYWxzZSxcbiAgICBjb25zdHJhaW50cyA9IHsgYXVkaW86IHRydWUsIHZpZGVvOiB0cnVlIH0sXG4gICAgb25VcGRhdGVkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkZXZpY2VzID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCB2aWRlb0lucHV0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZGV2aWNlcy52YWx1ZS5maWx0ZXIoKGkpID0+IGkua2luZCA9PT0gXCJ2aWRlb2lucHV0XCIpKTtcbiAgY29uc3QgYXVkaW9JbnB1dHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGRldmljZXMudmFsdWUuZmlsdGVyKChpKSA9PiBpLmtpbmQgPT09IFwiYXVkaW9pbnB1dFwiKSk7XG4gIGNvbnN0IGF1ZGlvT3V0cHV0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZGV2aWNlcy52YWx1ZS5maWx0ZXIoKGkpID0+IGkua2luZCA9PT0gXCJhdWRpb291dHB1dFwiKSk7XG4gIGxldCBpc1N1cHBvcnRlZCA9IGZhbHNlO1xuICBjb25zdCBwZXJtaXNzaW9uR3JhbnRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgZGV2aWNlcy52YWx1ZSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpO1xuICAgIG9uVXBkYXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25VcGRhdGVkKGRldmljZXMudmFsdWUpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGVuc3VyZVBlcm1pc3Npb25zKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHBlcm1pc3Npb25HcmFudGVkLnZhbHVlKVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgeyBzdGF0ZSwgcXVlcnkgfSA9IHVzZVBlcm1pc3Npb24oXCJjYW1lcmFcIiwgeyBjb250cm9sczogdHJ1ZSB9KTtcbiAgICBhd2FpdCBxdWVyeSgpO1xuICAgIGlmIChzdGF0ZS52YWx1ZSAhPT0gXCJncmFudGVkXCIpIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKTtcbiAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHBlcm1pc3Npb25HcmFudGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVybWlzc2lvbkdyYW50ZWQudmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcGVybWlzc2lvbkdyYW50ZWQudmFsdWU7XG4gIH1cbiAgaWYgKG5hdmlnYXRvcikge1xuICAgIGlzU3VwcG9ydGVkID0gQm9vbGVhbihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzICYmIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyk7XG4gICAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgICBpZiAocmVxdWVzdFBlcm1pc3Npb25zKVxuICAgICAgICBlbnN1cmVQZXJtaXNzaW9ucygpO1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLCBcImRldmljZWNoYW5nZVwiLCB1cGRhdGUpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgZGV2aWNlcyxcbiAgICBlbnN1cmVQZXJtaXNzaW9ucyxcbiAgICBwZXJtaXNzaW9uR3JhbnRlZCxcbiAgICB2aWRlb0lucHV0cyxcbiAgICBhdWRpb0lucHV0cyxcbiAgICBhdWRpb091dHB1dHMsXG4gICAgaXNTdXBwb3J0ZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRGlzcGxheU1lZGlhKG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBlbmFibGVkID0gdnVlRGVtaS5yZWYoKF9hID0gb3B0aW9ucy5lbmFibGVkKSAhPSBudWxsID8gX2EgOiBmYWxzZSk7XG4gIGNvbnN0IHZpZGVvID0gb3B0aW9ucy52aWRlbztcbiAgY29uc3QgYXVkaW8gPSBvcHRpb25zLmF1ZGlvO1xuICBjb25zdCB7IG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbigoX2IgPSBuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5tZWRpYURldmljZXMpID09IG51bGwgPyB2b2lkIDAgOiBfYi5nZXREaXNwbGF5TWVkaWEpO1xuICBjb25zdCBjb25zdHJhaW50ID0geyBhdWRpbywgdmlkZW8gfTtcbiAgY29uc3Qgc3RyZWFtID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGFzeW5jIGZ1bmN0aW9uIF9zdGFydCgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkIHx8IHN0cmVhbS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzdHJlYW0udmFsdWUgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYShjb25zdHJhaW50KTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIF9zdG9wKCkge1xuICAgIHZhciBfYTI7XG4gICAgKF9hMiA9IHN0cmVhbS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XG4gICAgc3RyZWFtLnZhbHVlID0gdm9pZCAwO1xuICB9XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgX3N0b3AoKTtcbiAgICBlbmFibGVkLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgYXdhaXQgX3N0YXJ0KCk7XG4gICAgaWYgKHN0cmVhbS52YWx1ZSlcbiAgICAgIGVuYWJsZWQudmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiBzdHJlYW0udmFsdWU7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChlbmFibGVkLCAodikgPT4ge1xuICAgIGlmICh2KVxuICAgICAgX3N0YXJ0KCk7XG4gICAgZWxzZVxuICAgICAgX3N0b3AoKTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RyZWFtLFxuICAgIHN0YXJ0LFxuICAgIHN0b3AsXG4gICAgZW5hYmxlZFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VEb2N1bWVudFZpc2liaWxpdHkoeyBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCB9ID0ge30pIHtcbiAgaWYgKCFkb2N1bWVudClcbiAgICByZXR1cm4gdnVlRGVtaS5yZWYoXCJ2aXNpYmxlXCIpO1xuICBjb25zdCB2aXNpYmlsaXR5ID0gdnVlRGVtaS5yZWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsICgpID0+IHtcbiAgICB2aXNpYmlsaXR5LnZhbHVlID0gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlO1xuICB9KTtcbiAgcmV0dXJuIHZpc2liaWxpdHk7XG59XG5cbnZhciBfX2RlZlByb3AkZCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDQgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRmID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkZiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGYgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRkID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRkKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRkID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkZi5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGQoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGYpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGYoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kZi5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkZChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDQgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ0KGEsIF9fZ2V0T3duUHJvcERlc2NzJDQoYikpO1xuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGRyYWdnaW5nRWxlbWVudCA9IChfYSA9IG9wdGlvbnMuZHJhZ2dpbmdFbGVtZW50KSAhPSBudWxsID8gX2EgOiBkZWZhdWx0V2luZG93O1xuICBjb25zdCBwb3NpdGlvbiA9IHZ1ZURlbWkucmVmKChfYiA9IG9wdGlvbnMuaW5pdGlhbFZhbHVlKSAhPSBudWxsID8gX2IgOiB7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IHByZXNzZWREZWx0YSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGZpbHRlckV2ZW50ID0gKGUpID0+IHtcbiAgICBpZiAob3B0aW9ucy5wb2ludGVyVHlwZXMpXG4gICAgICByZXR1cm4gb3B0aW9ucy5wb2ludGVyVHlwZXMuaW5jbHVkZXMoZS5wb2ludGVyVHlwZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUV2ZW50ID0gKGUpID0+IHtcbiAgICBpZiAodnVlRGVtaS51bnJlZihvcHRpb25zLnByZXZlbnREZWZhdWx0KSlcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodnVlRGVtaS51bnJlZihvcHRpb25zLnN0b3BQcm9wYWdhdGlvbikpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9O1xuICBjb25zdCBzdGFydCA9IChlKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICh2dWVEZW1pLnVucmVmKG9wdGlvbnMuZXhhY3QpICYmIGUudGFyZ2V0ICE9PSB2dWVEZW1pLnVucmVmKHRhcmdldCkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgcmVjdCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwb3MgPSB7XG4gICAgICB4OiBlLnBhZ2VYIC0gcmVjdC5sZWZ0LFxuICAgICAgeTogZS5wYWdlWSAtIHJlY3QudG9wXG4gICAgfTtcbiAgICBpZiAoKChfYTIgPSBvcHRpb25zLm9uU3RhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChvcHRpb25zLCBwb3MsIGUpKSA9PT0gZmFsc2UpXG4gICAgICByZXR1cm47XG4gICAgcHJlc3NlZERlbHRhLnZhbHVlID0gcG9zO1xuICAgIGhhbmRsZUV2ZW50KGUpO1xuICB9O1xuICBjb25zdCBtb3ZlID0gKGUpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFwcmVzc2VkRGVsdGEudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgcG9zaXRpb24udmFsdWUgPSB7XG4gICAgICB4OiBlLnBhZ2VYIC0gcHJlc3NlZERlbHRhLnZhbHVlLngsXG4gICAgICB5OiBlLnBhZ2VZIC0gcHJlc3NlZERlbHRhLnZhbHVlLnlcbiAgICB9O1xuICAgIChfYTIgPSBvcHRpb25zLm9uTW92ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jYWxsKG9wdGlvbnMsIHBvc2l0aW9uLnZhbHVlLCBlKTtcbiAgICBoYW5kbGVFdmVudChlKTtcbiAgfTtcbiAgY29uc3QgZW5kID0gKGUpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFwcmVzc2VkRGVsdGEudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgcHJlc3NlZERlbHRhLnZhbHVlID0gdm9pZCAwO1xuICAgIChfYTIgPSBvcHRpb25zLm9uRW5kKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNhbGwob3B0aW9ucywgcG9zaXRpb24udmFsdWUsIGUpO1xuICAgIGhhbmRsZUV2ZW50KGUpO1xuICB9O1xuICBpZiAoc2hhcmVkLmlzQ2xpZW50KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmRvd25cIiwgc3RhcnQsIHRydWUpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZHJhZ2dpbmdFbGVtZW50LCBcInBvaW50ZXJtb3ZlXCIsIG1vdmUsIHRydWUpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZHJhZ2dpbmdFbGVtZW50LCBcInBvaW50ZXJ1cFwiLCBlbmQsIHRydWUpO1xuICB9XG4gIHJldHVybiBfX3NwcmVhZFByb3BzJDQoX19zcHJlYWRWYWx1ZXMkZCh7fSwgc2hhcmVkLnRvUmVmcyhwb3NpdGlvbikpLCB7XG4gICAgcG9zaXRpb24sXG4gICAgaXNEcmFnZ2luZzogdnVlRGVtaS5jb21wdXRlZCgoKSA9PiAhIXByZXNzZWREZWx0YS52YWx1ZSksXG4gICAgc3R5bGU6IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gYGxlZnQ6JHtwb3NpdGlvbi52YWx1ZS54fXB4O3RvcDoke3Bvc2l0aW9uLnZhbHVlLnl9cHg7YClcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZURyb3Bab25lKHRhcmdldCwgb25Ecm9wKSB7XG4gIGNvbnN0IGlzT3ZlckRyb3Bab25lID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBsZXQgY291bnRlciA9IDA7XG4gIGlmIChzaGFyZWQuaXNDbGllbnQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcmFnZW50ZXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY291bnRlciArPSAxO1xuICAgICAgaXNPdmVyRHJvcFpvbmUudmFsdWUgPSB0cnVlO1xuICAgIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdvdmVyXCIsIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcmFnbGVhdmVcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY291bnRlciAtPSAxO1xuICAgICAgaWYgKGNvdW50ZXIgPT09IDApXG4gICAgICAgIGlzT3ZlckRyb3Bab25lLnZhbHVlID0gZmFsc2U7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJvcFwiLCAoZXZlbnQpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY291bnRlciA9IDA7XG4gICAgICBpc092ZXJEcm9wWm9uZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKChfYiA9IChfYSA9IGV2ZW50LmRhdGFUcmFuc2ZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZpbGVzKSAhPSBudWxsID8gX2IgOiBbXSk7XG4gICAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG9uRHJvcChudWxsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb25Ecm9wKGZpbGVzKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzT3ZlckRyb3Bab25lXG4gIH07XG59XG5cbnZhciBfX2dldE93blByb3BTeW1ib2xzJGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRlID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19vYmpSZXN0JDIgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCRlLmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyRlKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRlKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSRlLmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcih0YXJnZXQsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IF9hLCBvYnNlcnZlck9wdGlvbnMgPSBfX29ialJlc3QkMihfYSwgW1wid2luZG93XCJdKTtcbiAgbGV0IG9ic2VydmVyO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHdpbmRvdyAmJiBcIlJlc2l6ZU9ic2VydmVyXCIgaW4gd2luZG93O1xuICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgb2JzZXJ2ZXIgPSB2b2lkIDA7XG4gICAgfVxuICB9O1xuICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWwpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKGlzU3VwcG9ydGVkICYmIHdpbmRvdyAmJiBlbCkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgb2JzZXJ2ZXJPcHRpb25zKTtcbiAgICB9XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfSk7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIHN0b3BXYXRjaCgpO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50Qm91bmRpbmcodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJlc2V0ID0gdHJ1ZSxcbiAgICB3aW5kb3dSZXNpemUgPSB0cnVlLFxuICAgIHdpbmRvd1Njcm9sbCA9IHRydWUsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaGVpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGJvdHRvbSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBsZWZ0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHJpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHRvcCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB3aWR0aCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHkgPSB2dWVEZW1pLnJlZigwKTtcbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgaWYgKHJlc2V0KSB7XG4gICAgICAgIGhlaWdodC52YWx1ZSA9IDA7XG4gICAgICAgIGJvdHRvbS52YWx1ZSA9IDA7XG4gICAgICAgIGxlZnQudmFsdWUgPSAwO1xuICAgICAgICByaWdodC52YWx1ZSA9IDA7XG4gICAgICAgIHRvcC52YWx1ZSA9IDA7XG4gICAgICAgIHdpZHRoLnZhbHVlID0gMDtcbiAgICAgICAgeC52YWx1ZSA9IDA7XG4gICAgICAgIHkudmFsdWUgPSAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaGVpZ2h0LnZhbHVlID0gcmVjdC5oZWlnaHQ7XG4gICAgYm90dG9tLnZhbHVlID0gcmVjdC5ib3R0b207XG4gICAgbGVmdC52YWx1ZSA9IHJlY3QubGVmdDtcbiAgICByaWdodC52YWx1ZSA9IHJlY3QucmlnaHQ7XG4gICAgdG9wLnZhbHVlID0gcmVjdC50b3A7XG4gICAgd2lkdGgudmFsdWUgPSByZWN0LndpZHRoO1xuICAgIHgudmFsdWUgPSByZWN0Lng7XG4gICAgeS52YWx1ZSA9IHJlY3QueTtcbiAgfVxuICB1c2VSZXNpemVPYnNlcnZlcih0YXJnZXQsIHVwZGF0ZSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbGUpID0+ICFlbGUgJiYgdXBkYXRlKCkpO1xuICBpZiAod2luZG93U2Nyb2xsKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIGlmICh3aW5kb3dSZXNpemUpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGltbWVkaWF0ZSlcbiAgICAgIHVwZGF0ZSgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBoZWlnaHQsXG4gICAgYm90dG9tLFxuICAgIGxlZnQsXG4gICAgcmlnaHQsXG4gICAgdG9wLFxuICAgIHdpZHRoLFxuICAgIHgsXG4gICAgeSxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlUmFmRm4oZm4sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgbGV0IHJhZklkID0gbnVsbDtcbiAgZnVuY3Rpb24gbG9vcCgpIHtcbiAgICBpZiAoIWlzQWN0aXZlLnZhbHVlIHx8ICF3aW5kb3cpXG4gICAgICByZXR1cm47XG4gICAgZm4oKTtcbiAgICByYWZJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUgJiYgd2luZG93KSB7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gICAgICBsb29wKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHJhZklkICE9IG51bGwgJiYgd2luZG93KSB7XG4gICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgcmFmSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuICBpZiAoaW1tZWRpYXRlKVxuICAgIHJlc3VtZSgpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UocGF1c2UpO1xuICByZXR1cm4ge1xuICAgIGlzQWN0aXZlLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJGMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRkID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkZCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGQgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRjID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRjKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRjID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkZC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGMoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGQpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGQoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kZC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkYyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZUVsZW1lbnRCeVBvaW50KG9wdGlvbnMpIHtcbiAgY29uc3QgZWxlbWVudCA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCB7IHgsIHkgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvbnRyb2xzID0gdXNlUmFmRm4oKCkgPT4ge1xuICAgIGVsZW1lbnQudmFsdWUgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHZ1ZURlbWkudW5yZWYoeCksIHZ1ZURlbWkudW5yZWYoeSkpO1xuICB9KTtcbiAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJGMoe1xuICAgIGVsZW1lbnRcbiAgfSwgY29udHJvbHMpO1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50SG92ZXIoZWwpIHtcbiAgY29uc3QgaXNIb3ZlcmVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKGVsLCBcIm1vdXNlZW50ZXJcIiwgKCkgPT4gaXNIb3ZlcmVkLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoZWwsIFwibW91c2VsZWF2ZVwiLCAoKSA9PiBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZSk7XG4gIHJldHVybiBpc0hvdmVyZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZUVsZW1lbnRTaXplKHRhcmdldCwgaW5pdGlhbFNpemUgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHdpZHRoID0gdnVlRGVtaS5yZWYoaW5pdGlhbFNpemUud2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSB2dWVEZW1pLnJlZihpbml0aWFsU2l6ZS5oZWlnaHQpO1xuICB1c2VSZXNpemVPYnNlcnZlcih0YXJnZXQsIChbZW50cnldKSA9PiB7XG4gICAgd2lkdGgudmFsdWUgPSBlbnRyeS5jb250ZW50UmVjdC53aWR0aDtcbiAgICBoZWlnaHQudmFsdWUgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gIH0sIG9wdGlvbnMpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWxlKSA9PiB7XG4gICAgd2lkdGgudmFsdWUgPSBlbGUgPyBpbml0aWFsU2l6ZS53aWR0aCA6IDA7XG4gICAgaGVpZ2h0LnZhbHVlID0gZWxlID8gaW5pdGlhbFNpemUuaGVpZ2h0IDogMDtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUVsZW1lbnRWaXNpYmlsaXR5KGVsZW1lbnQsIHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdywgc2Nyb2xsVGFyZ2V0IH0gPSB7fSkge1xuICBjb25zdCBlbGVtZW50SXNWaXNpYmxlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB0ZXN0Qm91bmRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG4gICAgaWYgKCF2dWVEZW1pLnVucmVmKGVsZW1lbnQpKSB7XG4gICAgICBlbGVtZW50SXNWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlY3QgPSB2dWVEZW1pLnVucmVmKGVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWxlbWVudElzVmlzaWJsZS52YWx1ZSA9IHJlY3QudG9wIDw9ICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkgJiYgcmVjdC5sZWZ0IDw9ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpICYmIHJlY3QuYm90dG9tID49IDAgJiYgcmVjdC5yaWdodCA+PSAwO1xuICAgIH1cbiAgfTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCh0ZXN0Qm91bmRpbmcpO1xuICBpZiAod2luZG93KVxuICAgIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4gdXNlRXZlbnRMaXN0ZW5lcih2dWVEZW1pLnVucmVmKHNjcm9sbFRhcmdldCkgfHwgd2luZG93LCBcInNjcm9sbFwiLCB0ZXN0Qm91bmRpbmcsIHsgY2FwdHVyZTogZmFsc2UsIHBhc3NpdmU6IHRydWUgfSkpO1xuICByZXR1cm4gZWxlbWVudElzVmlzaWJsZTtcbn1cblxuY29uc3QgZXZlbnRzID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiB1c2VFdmVudEJ1cyhrZXkpIHtcbiAgY29uc3Qgc2NvcGUgPSB2dWVEZW1pLmdldEN1cnJlbnRTY29wZSgpO1xuICBmdW5jdGlvbiBvbihsaXN0ZW5lcikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBldmVudHMuZ2V0KGtleSkgfHwgW107XG4gICAgbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIGV2ZW50cy5zZXQoa2V5LCBsaXN0ZW5lcnMpO1xuICAgIGNvbnN0IF9vZmYgPSAoKSA9PiBvZmYobGlzdGVuZXIpO1xuICAgIChfYSA9IHNjb3BlID09IG51bGwgPyB2b2lkIDAgOiBzY29wZS5jbGVhbnVwcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnB1c2goX29mZik7XG4gICAgcmV0dXJuIF9vZmY7XG4gIH1cbiAgZnVuY3Rpb24gb25jZShsaXN0ZW5lcikge1xuICAgIGZ1bmN0aW9uIF9saXN0ZW5lciguLi5hcmdzKSB7XG4gICAgICBvZmYoX2xpc3RlbmVyKTtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gb24oX2xpc3RlbmVyKTtcbiAgfVxuICBmdW5jdGlvbiBvZmYobGlzdGVuZXIpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBldmVudHMuZ2V0KGtleSk7XG4gICAgaWYgKCFsaXN0ZW5lcnMpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgaW5kZXggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ID4gLTEpXG4gICAgICBsaXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpZiAoIWxpc3RlbmVycy5sZW5ndGgpXG4gICAgICBldmVudHMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgZXZlbnRzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQsIHBheWxvYWQpIHtcbiAgICB2YXIgX2E7XG4gICAgKF9hID0gZXZlbnRzLmdldChrZXkpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9yRWFjaCgodikgPT4gdihldmVudCwgcGF5bG9hZCkpO1xuICB9XG4gIHJldHVybiB7IG9uLCBvbmNlLCBvZmYsIGVtaXQsIHJlc2V0IH07XG59XG5cbmZ1bmN0aW9uIHVzZUV2ZW50U291cmNlKHVybCwgZXZlbnRzID0gW10sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBldmVudCA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiQ09OTkVDVElOR1wiKTtcbiAgY29uc3QgZXZlbnRTb3VyY2UgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3Qge1xuICAgIHdpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoZXZlbnRTb3VyY2UudmFsdWUpIHtcbiAgICAgIGV2ZW50U291cmNlLnZhbHVlLmNsb3NlKCk7XG4gICAgICBldmVudFNvdXJjZS52YWx1ZSA9IG51bGw7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcIkNMT1NFRFwiO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZXMgPSBuZXcgRXZlbnRTb3VyY2UodXJsLCB7IHdpdGhDcmVkZW50aWFscyB9KTtcbiAgZXZlbnRTb3VyY2UudmFsdWUgPSBlcztcbiAgZXMub25vcGVuID0gKCkgPT4ge1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiT1BFTlwiO1xuICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgfTtcbiAgZXMub25lcnJvciA9IChlKSA9PiB7XG4gICAgc3RhdHVzLnZhbHVlID0gXCJDTE9TRURcIjtcbiAgICBlcnJvci52YWx1ZSA9IGU7XG4gIH07XG4gIGVzLm9ubWVzc2FnZSA9IChlKSA9PiB7XG4gICAgZXZlbnQudmFsdWUgPSBudWxsO1xuICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gIH07XG4gIGZvciAoY29uc3QgZXZlbnRfbmFtZSBvZiBldmVudHMpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKGVzLCBldmVudF9uYW1lLCAoZSkgPT4ge1xuICAgICAgZXZlbnQudmFsdWUgPSBldmVudF9uYW1lO1xuICAgICAgZGF0YS52YWx1ZSA9IGUuZGF0YSB8fCBudWxsO1xuICAgIH0pO1xuICB9XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZXZlbnRTb3VyY2UsXG4gICAgZXZlbnQsXG4gICAgZGF0YSxcbiAgICBzdGF0dXMsXG4gICAgZXJyb3IsXG4gICAgY2xvc2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRXllRHJvcHBlcihvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgPSBcIlwiIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4odHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBcIkV5ZURyb3BwZXJcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBzUkdCSGV4ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgYXN5bmMgZnVuY3Rpb24gb3BlbihvcGVuT3B0aW9ucykge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZXllRHJvcHBlciA9IG5ldyB3aW5kb3cuRXllRHJvcHBlcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV5ZURyb3BwZXIub3BlbihvcGVuT3B0aW9ucyk7XG4gICAgc1JHQkhleC52YWx1ZSA9IHJlc3VsdC5zUkdCSGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHsgaXNTdXBwb3J0ZWQsIHNSR0JIZXgsIG9wZW4gfTtcbn1cblxuZnVuY3Rpb24gdXNlRmF2aWNvbihuZXdJY29uID0gbnVsbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBiYXNlVXJsID0gXCJcIixcbiAgICByZWwgPSBcImljb25cIixcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmF2aWNvbiA9IHZ1ZURlbWkuaXNSZWYobmV3SWNvbikgPyBuZXdJY29uIDogdnVlRGVtaS5yZWYobmV3SWNvbik7XG4gIGNvbnN0IGFwcGx5SWNvbiA9IChpY29uKSA9PiB7XG4gICAgZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvckFsbChgbGlua1tyZWwqPVwiJHtyZWx9XCJdYCkuZm9yRWFjaCgoZWwpID0+IGVsLmhyZWYgPSBgJHtiYXNlVXJsfSR7aWNvbn1gKTtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaChmYXZpY29uLCAoaSwgbykgPT4ge1xuICAgIGlmIChzaGFyZWQuaXNTdHJpbmcoaSkgJiYgaSAhPT0gbylcbiAgICAgIGFwcGx5SWNvbihpKTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHJldHVybiBmYXZpY29uO1xufVxuXG52YXIgX19kZWZQcm9wJGIgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRjID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkYiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkYihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkYiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGMuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRiKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRjKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRjKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGMuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGIoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMyhhLCBfX2dldE93blByb3BEZXNjcyQzKGIpKTtcbmNvbnN0IHBheWxvYWRNYXBwaW5nID0ge1xuICBqc29uOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgdGV4dDogXCJ0ZXh0L3BsYWluXCIsXG4gIGZvcm1EYXRhOiBcIm11bHRpcGFydC9mb3JtLWRhdGFcIlxufTtcbmZ1bmN0aW9uIGlzRmV0Y2hPcHRpb25zKG9iaikge1xuICByZXR1cm4gc2hhcmVkLmNvbnRhaW5zUHJvcChvYmosIFwiaW1tZWRpYXRlXCIsIFwicmVmZXRjaFwiLCBcImluaXRpYWxEYXRhXCIsIFwidGltZW91dFwiLCBcImJlZm9yZUZldGNoXCIsIFwiYWZ0ZXJGZXRjaFwiLCBcIm9uRmV0Y2hFcnJvclwiLCBcImZldGNoXCIpO1xufVxuZnVuY3Rpb24gaGVhZGVyc1RvT2JqZWN0KGhlYWRlcnMpIHtcbiAgaWYgKHR5cGVvZiBIZWFkZXJzICE9PSBcInVuZGVmaW5lZFwiICYmIGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKVxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoWy4uLmhlYWRlcnMuZW50cmllcygpXSk7XG4gIHJldHVybiBoZWFkZXJzO1xufVxuZnVuY3Rpb24gY3JlYXRlRmV0Y2goY29uZmlnID0ge30pIHtcbiAgY29uc3QgX29wdGlvbnMgPSBjb25maWcub3B0aW9ucyB8fCB7fTtcbiAgY29uc3QgX2ZldGNoT3B0aW9ucyA9IGNvbmZpZy5mZXRjaE9wdGlvbnMgfHwge307XG4gIGZ1bmN0aW9uIHVzZUZhY3RvcnlGZXRjaCh1cmwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBjb21wdXRlZFVybCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY29uZmlnLmJhc2VVcmwgPyBqb2luUGF0aHModnVlRGVtaS51bnJlZihjb25maWcuYmFzZVVybCksIHZ1ZURlbWkudW5yZWYodXJsKSkgOiB2dWVEZW1pLnVucmVmKHVybCkpO1xuICAgIGxldCBvcHRpb25zID0gX29wdGlvbnM7XG4gICAgbGV0IGZldGNoT3B0aW9ucyA9IF9mZXRjaE9wdGlvbnM7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGlzRmV0Y2hPcHRpb25zKGFyZ3NbMF0pKSB7XG4gICAgICAgIG9wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIG9wdGlvbnMpLCBhcmdzWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZldGNoT3B0aW9ucyA9IF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIGZldGNoT3B0aW9ucyksIGFyZ3NbMF0pLCB7XG4gICAgICAgICAgaGVhZGVyczogX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBoZWFkZXJzVG9PYmplY3QoZmV0Y2hPcHRpb25zLmhlYWRlcnMpIHx8IHt9KSwgaGVhZGVyc1RvT2JqZWN0KGFyZ3NbMF0uaGVhZGVycykgfHwge30pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxICYmIGlzRmV0Y2hPcHRpb25zKGFyZ3NbMV0pKVxuICAgICAgb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgb3B0aW9ucyksIGFyZ3NbMV0pO1xuICAgIHJldHVybiB1c2VGZXRjaChjb21wdXRlZFVybCwgZmV0Y2hPcHRpb25zLCBvcHRpb25zKTtcbiAgfVxuICByZXR1cm4gdXNlRmFjdG9yeUZldGNoO1xufVxuZnVuY3Rpb24gdXNlRmV0Y2godXJsLCAuLi5hcmdzKSB7XG4gIHZhciBfYTtcbiAgY29uc3Qgc3VwcG9ydHNBYm9ydCA9IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09IFwiZnVuY3Rpb25cIjtcbiAgbGV0IGZldGNoT3B0aW9ucyA9IHt9O1xuICBsZXQgb3B0aW9ucyA9IHsgaW1tZWRpYXRlOiB0cnVlLCByZWZldGNoOiBmYWxzZSwgdGltZW91dDogMCB9O1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHR5cGU6IFwidGV4dFwiLFxuICAgIHBheWxvYWQ6IHZvaWQgMFxuICB9O1xuICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGlzRmV0Y2hPcHRpb25zKGFyZ3NbMF0pKVxuICAgICAgb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgb3B0aW9ucyksIGFyZ3NbMF0pO1xuICAgIGVsc2VcbiAgICAgIGZldGNoT3B0aW9ucyA9IGFyZ3NbMF07XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgIGlmIChpc0ZldGNoT3B0aW9ucyhhcmdzWzFdKSlcbiAgICAgIG9wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIG9wdGlvbnMpLCBhcmdzWzFdKTtcbiAgfVxuICBjb25zdCB7XG4gICAgZmV0Y2ggPSAoX2EgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZmV0Y2gsXG4gICAgaW5pdGlhbERhdGEsXG4gICAgdGltZW91dFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVzcG9uc2VFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgZXJyb3JFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgZmluYWxseUV2ZW50ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBpc0ZpbmlzaGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBpc0ZldGNoaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBhYm9ydGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdGF0dXNDb2RlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkuc2hhbGxvd1JlZihpbml0aWFsRGF0YSk7XG4gIGNvbnN0IGNhbkFib3J0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdXBwb3J0c0Fib3J0ICYmIGlzRmV0Y2hpbmcudmFsdWUpO1xuICBsZXQgY29udHJvbGxlcjtcbiAgbGV0IHRpbWVyO1xuICBjb25zdCBhYm9ydCA9ICgpID0+IHtcbiAgICBpZiAoc3VwcG9ydHNBYm9ydCAmJiBjb250cm9sbGVyKVxuICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuICB9O1xuICBjb25zdCBsb2FkaW5nID0gKGlzTG9hZGluZykgPT4ge1xuICAgIGlzRmV0Y2hpbmcudmFsdWUgPSBpc0xvYWRpbmc7XG4gICAgaXNGaW5pc2hlZC52YWx1ZSA9ICFpc0xvYWRpbmc7XG4gIH07XG4gIGlmICh0aW1lb3V0KVxuICAgIHRpbWVyID0gc2hhcmVkLnVzZVRpbWVvdXRGbihhYm9ydCwgdGltZW91dCwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICBjb25zdCBleGVjdXRlID0gYXN5bmMgKHRocm93T25GYWlsZWQgPSBmYWxzZSkgPT4ge1xuICAgIHZhciBfYTI7XG4gICAgbG9hZGluZyh0cnVlKTtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgc3RhdHVzQ29kZS52YWx1ZSA9IG51bGw7XG4gICAgYWJvcnRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIGNvbnRyb2xsZXIgPSB2b2lkIDA7XG4gICAgaWYgKHN1cHBvcnRzQWJvcnQpIHtcbiAgICAgIGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICBjb250cm9sbGVyLnNpZ25hbC5vbmFib3J0ID0gKCkgPT4gYWJvcnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICBmZXRjaE9wdGlvbnMgPSBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYih7fSwgZmV0Y2hPcHRpb25zKSwge1xuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEZldGNoT3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHt9XG4gICAgfTtcbiAgICBpZiAoY29uZmlnLnBheWxvYWQpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBoZWFkZXJzVG9PYmplY3QoZGVmYXVsdEZldGNoT3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgIGlmIChjb25maWcucGF5bG9hZFR5cGUpXG4gICAgICAgIGhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSAoX2EyID0gcGF5bG9hZE1hcHBpbmdbY29uZmlnLnBheWxvYWRUeXBlXSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZy5wYXlsb2FkVHlwZTtcbiAgICAgIGRlZmF1bHRGZXRjaE9wdGlvbnMuYm9keSA9IGNvbmZpZy5wYXlsb2FkVHlwZSA9PT0gXCJqc29uXCIgPyBKU09OLnN0cmluZ2lmeSh2dWVEZW1pLnVucmVmKGNvbmZpZy5wYXlsb2FkKSkgOiB2dWVEZW1pLnVucmVmKGNvbmZpZy5wYXlsb2FkKTtcbiAgICB9XG4gICAgbGV0IGlzQ2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjb250ZXh0ID0geyB1cmw6IHZ1ZURlbWkudW5yZWYodXJsKSwgb3B0aW9uczogX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBkZWZhdWx0RmV0Y2hPcHRpb25zKSwgZmV0Y2hPcHRpb25zKSwgY2FuY2VsOiAoKSA9PiB7XG4gICAgICBpc0NhbmNlbGVkID0gdHJ1ZTtcbiAgICB9IH07XG4gICAgaWYgKG9wdGlvbnMuYmVmb3JlRmV0Y2gpXG4gICAgICBPYmplY3QuYXNzaWduKGNvbnRleHQsIGF3YWl0IG9wdGlvbnMuYmVmb3JlRmV0Y2goY29udGV4dCkpO1xuICAgIGlmIChpc0NhbmNlbGVkIHx8ICFmZXRjaCkge1xuICAgICAgbG9hZGluZyhmYWxzZSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgICBsZXQgcmVzcG9uc2VEYXRhID0gbnVsbDtcbiAgICBpZiAodGltZXIpXG4gICAgICB0aW1lci5zdGFydCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB2YXIgX2EzO1xuICAgICAgZmV0Y2goY29udGV4dC51cmwsIF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIGRlZmF1bHRGZXRjaE9wdGlvbnMpLCBjb250ZXh0Lm9wdGlvbnMpLCB7XG4gICAgICAgIGhlYWRlcnM6IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgaGVhZGVyc1RvT2JqZWN0KGRlZmF1bHRGZXRjaE9wdGlvbnMuaGVhZGVycykpLCBoZWFkZXJzVG9PYmplY3QoKF9hMyA9IGNvbnRleHQub3B0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMy5oZWFkZXJzKSlcbiAgICAgIH0pKS50aGVuKGFzeW5jIChmZXRjaFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJlc3BvbnNlLnZhbHVlID0gZmV0Y2hSZXNwb25zZTtcbiAgICAgICAgc3RhdHVzQ29kZS52YWx1ZSA9IGZldGNoUmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICByZXNwb25zZURhdGEgPSBhd2FpdCBmZXRjaFJlc3BvbnNlW2NvbmZpZy50eXBlXSgpO1xuICAgICAgICBpZiAob3B0aW9ucy5hZnRlckZldGNoICYmIHN0YXR1c0NvZGUudmFsdWUgPj0gMjAwICYmIHN0YXR1c0NvZGUudmFsdWUgPCAzMDApXG4gICAgICAgICAgKHsgZGF0YTogcmVzcG9uc2VEYXRhIH0gPSBhd2FpdCBvcHRpb25zLmFmdGVyRmV0Y2goeyBkYXRhOiByZXNwb25zZURhdGEsIHJlc3BvbnNlOiBmZXRjaFJlc3BvbnNlIH0pKTtcbiAgICAgICAgZGF0YS52YWx1ZSA9IHJlc3BvbnNlRGF0YTtcbiAgICAgICAgaWYgKCFmZXRjaFJlc3BvbnNlLm9rKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihmZXRjaFJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICByZXNwb25zZUV2ZW50LnRyaWdnZXIoZmV0Y2hSZXNwb25zZSk7XG4gICAgICAgIHJldHVybiByZXNvbHZlKGZldGNoUmVzcG9uc2UpO1xuICAgICAgfSkuY2F0Y2goYXN5bmMgKGZldGNoRXJyb3IpID0+IHtcbiAgICAgICAgbGV0IGVycm9yRGF0YSA9IGZldGNoRXJyb3IubWVzc2FnZSB8fCBmZXRjaEVycm9yLm5hbWU7XG4gICAgICAgIGlmIChvcHRpb25zLm9uRmV0Y2hFcnJvcilcbiAgICAgICAgICAoeyBkYXRhOiByZXNwb25zZURhdGEsIGVycm9yOiBlcnJvckRhdGEgfSA9IGF3YWl0IG9wdGlvbnMub25GZXRjaEVycm9yKHsgZGF0YTogcmVzcG9uc2VEYXRhLCBlcnJvcjogZmV0Y2hFcnJvciwgcmVzcG9uc2U6IHJlc3BvbnNlLnZhbHVlIH0pKTtcbiAgICAgICAgZGF0YS52YWx1ZSA9IHJlc3BvbnNlRGF0YTtcbiAgICAgICAgZXJyb3IudmFsdWUgPSBlcnJvckRhdGE7XG4gICAgICAgIGVycm9yRXZlbnQudHJpZ2dlcihmZXRjaEVycm9yKTtcbiAgICAgICAgaWYgKHRocm93T25GYWlsZWQpXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChmZXRjaEVycm9yKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgbG9hZGluZyhmYWxzZSk7XG4gICAgICAgIGlmICh0aW1lcilcbiAgICAgICAgICB0aW1lci5zdG9wKCk7XG4gICAgICAgIGZpbmFsbHlFdmVudC50cmlnZ2VyKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gW1xuICAgIHZ1ZURlbWkudW5yZWYodXJsKSxcbiAgICB2dWVEZW1pLnVucmVmKG9wdGlvbnMucmVmZXRjaClcbiAgXSwgKCkgPT4gdnVlRGVtaS51bnJlZihvcHRpb25zLnJlZmV0Y2gpICYmIGV4ZWN1dGUoKSwgeyBkZWVwOiB0cnVlIH0pO1xuICBjb25zdCBzaGVsbCA9IHtcbiAgICBpc0ZpbmlzaGVkLFxuICAgIHN0YXR1c0NvZGUsXG4gICAgcmVzcG9uc2UsXG4gICAgZXJyb3IsXG4gICAgZGF0YSxcbiAgICBpc0ZldGNoaW5nLFxuICAgIGNhbkFib3J0LFxuICAgIGFib3J0ZWQsXG4gICAgYWJvcnQsXG4gICAgZXhlY3V0ZSxcbiAgICBvbkZldGNoUmVzcG9uc2U6IHJlc3BvbnNlRXZlbnQub24sXG4gICAgb25GZXRjaEVycm9yOiBlcnJvckV2ZW50Lm9uLFxuICAgIG9uRmV0Y2hGaW5hbGx5OiBmaW5hbGx5RXZlbnQub24sXG4gICAgZ2V0OiBzZXRNZXRob2QoXCJHRVRcIiksXG4gICAgcHV0OiBzZXRNZXRob2QoXCJQVVRcIiksXG4gICAgcG9zdDogc2V0TWV0aG9kKFwiUE9TVFwiKSxcbiAgICBkZWxldGU6IHNldE1ldGhvZChcIkRFTEVURVwiKSxcbiAgICBwYXRjaDogc2V0TWV0aG9kKFwiUEFUQ0hcIiksXG4gICAgaGVhZDogc2V0TWV0aG9kKFwiSEVBRFwiKSxcbiAgICBvcHRpb25zOiBzZXRNZXRob2QoXCJPUFRJT05TXCIpLFxuICAgIGpzb246IHNldFR5cGUoXCJqc29uXCIpLFxuICAgIHRleHQ6IHNldFR5cGUoXCJ0ZXh0XCIpLFxuICAgIGJsb2I6IHNldFR5cGUoXCJibG9iXCIpLFxuICAgIGFycmF5QnVmZmVyOiBzZXRUeXBlKFwiYXJyYXlCdWZmZXJcIiksXG4gICAgZm9ybURhdGE6IHNldFR5cGUoXCJmb3JtRGF0YVwiKVxuICB9O1xuICBmdW5jdGlvbiBzZXRNZXRob2QobWV0aG9kKSB7XG4gICAgcmV0dXJuIChwYXlsb2FkLCBwYXlsb2FkVHlwZSkgPT4ge1xuICAgICAgaWYgKCFpc0ZldGNoaW5nLnZhbHVlKSB7XG4gICAgICAgIGNvbmZpZy5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIGNvbmZpZy5wYXlsb2FkID0gcGF5bG9hZDtcbiAgICAgICAgY29uZmlnLnBheWxvYWRUeXBlID0gcGF5bG9hZFR5cGU7XG4gICAgICAgIGlmICh2dWVEZW1pLmlzUmVmKGNvbmZpZy5wYXlsb2FkKSkge1xuICAgICAgICAgIHZ1ZURlbWkud2F0Y2goKCkgPT4gW1xuICAgICAgICAgICAgdnVlRGVtaS51bnJlZihjb25maWcucGF5bG9hZCksXG4gICAgICAgICAgICB2dWVEZW1pLnVucmVmKG9wdGlvbnMucmVmZXRjaClcbiAgICAgICAgICBdLCAoKSA9PiB2dWVEZW1pLnVucmVmKG9wdGlvbnMucmVmZXRjaCkgJiYgZXhlY3V0ZSgpLCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXlsb2FkVHlwZSAmJiB2dWVEZW1pLnVucmVmKHBheWxvYWQpICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih2dWVEZW1pLnVucmVmKHBheWxvYWQpKSA9PT0gT2JqZWN0LnByb3RvdHlwZSlcbiAgICAgICAgICBjb25maWcucGF5bG9hZFR5cGUgPSBcImpzb25cIjtcbiAgICAgICAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKHt9LCBzaGVsbCksIHtcbiAgICAgICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHdhaXRVbnRpbEZpbmlzaGVkKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzaGFyZWQudW50aWwoaXNGaW5pc2hlZCkudG9CZSh0cnVlKS50aGVuKCgpID0+IHJlc29sdmUoc2hlbGwpKS5jYXRjaCgoZXJyb3IyKSA9PiByZWplY3QoZXJyb3IyKSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0VHlwZSh0eXBlKSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghaXNGZXRjaGluZy52YWx1ZSkge1xuICAgICAgICBjb25maWcudHlwZSA9IHR5cGU7XG4gICAgICAgIHJldHVybiBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYih7fSwgc2hlbGwpLCB7XG4gICAgICAgICAgdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRVbnRpbEZpbmlzaGVkKCkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfTtcbiAgfVxuICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpXG4gICAgc2V0VGltZW91dChleGVjdXRlLCAwKTtcbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKHt9LCBzaGVsbCksIHtcbiAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gam9pblBhdGhzKHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydC5lbmRzV2l0aChcIi9cIikgJiYgIWVuZC5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICByZXR1cm4gYCR7c3RhcnR9LyR7ZW5kfWA7XG4gIHJldHVybiBgJHtzdGFydH0ke2VuZH1gO1xufVxuXG52YXIgX19kZWZQcm9wJGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRiID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkYiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGIgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRhID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRhKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRhID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkYi5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGEoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGIpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGIoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kYi5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkYShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgbXVsdGlwbGU6IHRydWUsXG4gIGFjY2VwdDogXCIqXCJcbn07XG5mdW5jdGlvbiB1c2VGaWxlRGlhbG9nKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZpbGVzID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGxldCBpbnB1dDtcbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgaW5wdXQudHlwZSA9IFwiZmlsZVwiO1xuICAgIGlucHV0Lm9uY2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBldmVudC50YXJnZXQ7XG4gICAgICBmaWxlcy52YWx1ZSA9IHJlc3VsdC5maWxlcztcbiAgICB9O1xuICB9XG4gIGNvbnN0IG9wZW4gPSAobG9jYWxPcHRpb25zKSA9PiB7XG4gICAgaWYgKCFpbnB1dClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBfb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJGEoX19zcHJlYWRWYWx1ZXMkYShfX3NwcmVhZFZhbHVlcyRhKHt9LCBERUZBVUxUX09QVElPTlMpLCBvcHRpb25zKSwgbG9jYWxPcHRpb25zKTtcbiAgICBpbnB1dC5tdWx0aXBsZSA9IF9vcHRpb25zLm11bHRpcGxlO1xuICAgIGlucHV0LmFjY2VwdCA9IF9vcHRpb25zLmFjY2VwdDtcbiAgICBpbnB1dC5jYXB0dXJlID0gX29wdGlvbnMuY2FwdHVyZTtcbiAgICBpbnB1dC5jbGljaygpO1xuICB9O1xuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBmaWxlcy52YWx1ZSA9IG51bGw7XG4gICAgaWYgKGlucHV0KVxuICAgICAgaW5wdXQudmFsdWUgPSBcIlwiO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGZpbGVzOiB2dWVEZW1pLnJlYWRvbmx5KGZpbGVzKSxcbiAgICBvcGVuLFxuICAgIHJlc2V0XG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkOSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRhID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kYSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDkgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDkob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDkgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRhLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkOShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkYSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkYShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRhLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ5KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlRmlsZVN5c3RlbUFjY2VzcyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdzogX3dpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZGF0YVR5cGUgPSBcIlRleHRcIlxuICB9ID0gdnVlRGVtaS51bnJlZihvcHRpb25zKTtcbiAgY29uc3Qgd2luZG93ID0gX3dpbmRvdztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKHdpbmRvdyAmJiBcInNob3dTYXZlRmlsZVBpY2tlclwiIGluIHdpbmRvdyAmJiBcInNob3dPcGVuRmlsZVBpY2tlclwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IGZpbGVIYW5kbGUgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZmlsZSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGZpbGVOYW1lID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLm5hbWUpICE9IG51bGwgPyBfYiA6IFwiXCI7XG4gIH0pO1xuICBjb25zdCBmaWxlTUlNRSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50eXBlKSAhPSBudWxsID8gX2IgOiBcIlwiO1xuICB9KTtcbiAgY29uc3QgZmlsZVNpemUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2l6ZSkgIT0gbnVsbCA/IF9iIDogMDtcbiAgfSk7XG4gIGNvbnN0IGZpbGVMYXN0TW9kaWZpZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EubGFzdE1vZGlmaWVkKSAhPSBudWxsID8gX2IgOiAwO1xuICB9KTtcbiAgYXN5bmMgZnVuY3Rpb24gb3Blbihfb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBbaGFuZGxlXSA9IGF3YWl0IHdpbmRvdy5zaG93T3BlbkZpbGVQaWNrZXIoX19zcHJlYWRWYWx1ZXMkOShfX3NwcmVhZFZhbHVlcyQ5KHt9LCB2dWVEZW1pLnVucmVmKG9wdGlvbnMpKSwgX29wdGlvbnMpKTtcbiAgICBmaWxlSGFuZGxlLnZhbHVlID0gaGFuZGxlO1xuICAgIGF3YWl0IHVwZGF0ZUZpbGUoKTtcbiAgICBhd2FpdCB1cGRhdGVEYXRhKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlKF9vcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGZpbGVIYW5kbGUudmFsdWUgPSBhd2FpdCB3aW5kb3cuc2hvd1NhdmVGaWxlUGlja2VyKF9fc3ByZWFkVmFsdWVzJDkoX19zcHJlYWRWYWx1ZXMkOSh7fSwgdnVlRGVtaS51bnJlZihvcHRpb25zKSksIF9vcHRpb25zKSk7XG4gICAgZGF0YS52YWx1ZSA9IHZvaWQgMDtcbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gICAgYXdhaXQgdXBkYXRlRGF0YSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHNhdmUoX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFmaWxlSGFuZGxlLnZhbHVlKVxuICAgICAgcmV0dXJuIHNhdmVBcyhfb3B0aW9ucyk7XG4gICAgaWYgKGRhdGEudmFsdWUpIHtcbiAgICAgIGNvbnN0IHdyaXRhYmxlU3RyZWFtID0gYXdhaXQgZmlsZUhhbmRsZS52YWx1ZS5jcmVhdGVXcml0YWJsZSgpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0ud3JpdGUoZGF0YS52YWx1ZSk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS5jbG9zZSgpO1xuICAgIH1cbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc2F2ZUFzKF9vcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGZpbGVIYW5kbGUudmFsdWUgPSBhd2FpdCB3aW5kb3cuc2hvd1NhdmVGaWxlUGlja2VyKF9fc3ByZWFkVmFsdWVzJDkoX19zcHJlYWRWYWx1ZXMkOSh7fSwgdnVlRGVtaS51bnJlZihvcHRpb25zKSksIF9vcHRpb25zKSk7XG4gICAgaWYgKGRhdGEudmFsdWUpIHtcbiAgICAgIGNvbnN0IHdyaXRhYmxlU3RyZWFtID0gYXdhaXQgZmlsZUhhbmRsZS52YWx1ZS5jcmVhdGVXcml0YWJsZSgpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0ud3JpdGUoZGF0YS52YWx1ZSk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS5jbG9zZSgpO1xuICAgIH1cbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRmlsZSgpIHtcbiAgICB2YXIgX2E7XG4gICAgZmlsZS52YWx1ZSA9IGF3YWl0ICgoX2EgPSBmaWxlSGFuZGxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZ2V0RmlsZSgpKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVEYXRhKCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYoZGF0YVR5cGUpID09PSBcIlRleHRcIilcbiAgICAgIGRhdGEudmFsdWUgPSBhd2FpdCAoKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRleHQoKSk7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYoZGF0YVR5cGUpID09PSBcIkFycmF5QnVmZmVyXCIpXG4gICAgICBkYXRhLnZhbHVlID0gYXdhaXQgKChfYiA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5hcnJheUJ1ZmZlcigpKTtcbiAgICBpZiAodnVlRGVtaS51bnJlZihkYXRhVHlwZSkgPT09IFwiQmxvYlwiKVxuICAgICAgZGF0YS52YWx1ZSA9IGZpbGUudmFsdWU7XG4gIH1cbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB2dWVEZW1pLnVucmVmKGRhdGFUeXBlKSwgdXBkYXRlRGF0YSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgZGF0YSxcbiAgICBmaWxlLFxuICAgIGZpbGVOYW1lLFxuICAgIGZpbGVNSU1FLFxuICAgIGZpbGVTaXplLFxuICAgIGZpbGVMYXN0TW9kaWZpZWQsXG4gICAgb3BlbixcbiAgICBjcmVhdGUsXG4gICAgc2F2ZSxcbiAgICBzYXZlQXMsXG4gICAgdXBkYXRlRGF0YVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VGb2N1cyh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdXNlQWN0aXZlRWxlbWVudChvcHRpb25zKTtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICBjb25zdCBmb2N1c2VkID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHNoYXJlZC5pc0RlZihhY3RpdmVFbGVtZW50LnZhbHVlKSAmJiBzaGFyZWQuaXNEZWYodGFyZ2V0RWxlbWVudC52YWx1ZSkgJiYgYWN0aXZlRWxlbWVudC52YWx1ZSA9PT0gdGFyZ2V0RWxlbWVudC52YWx1ZTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmICghdmFsdWUgJiYgZm9jdXNlZC52YWx1ZSlcbiAgICAgICAgKF9hID0gdGFyZ2V0RWxlbWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmJsdXIoKTtcbiAgICAgIGlmICh2YWx1ZSAmJiAhZm9jdXNlZC52YWx1ZSlcbiAgICAgICAgKF9iID0gdGFyZ2V0RWxlbWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmZvY3VzKCk7XG4gICAgfVxuICB9KTtcbiAgdnVlRGVtaS53YXRjaCh0YXJnZXRFbGVtZW50LCAoKSA9PiB7XG4gICAgZm9jdXNlZC52YWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9KTtcbiAgcmV0dXJuIHsgZm9jdXNlZCB9O1xufVxuXG5mdW5jdGlvbiB1c2VGb2N1c1dpdGhpbih0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdXNlQWN0aXZlRWxlbWVudChvcHRpb25zKTtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICBjb25zdCBmb2N1c2VkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB0YXJnZXRFbGVtZW50LnZhbHVlICYmIGFjdGl2ZUVsZW1lbnQudmFsdWUgPyB0YXJnZXRFbGVtZW50LnZhbHVlLmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQudmFsdWUpIDogZmFsc2UpO1xuICByZXR1cm4geyBmb2N1c2VkIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZwcyhvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgZnBzID0gdnVlRGVtaS5yZWYoMCk7XG4gIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuIGZwcztcbiAgY29uc3QgZXZlcnkgPSAoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmV2ZXJ5KSAhPSBudWxsID8gX2EgOiAxMDtcbiAgbGV0IGxhc3QgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgbGV0IHRpY2tzID0gMDtcbiAgdXNlUmFmRm4oKCkgPT4ge1xuICAgIHRpY2tzICs9IDE7XG4gICAgaWYgKHRpY2tzID49IGV2ZXJ5KSB7XG4gICAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgIGNvbnN0IGRpZmYgPSBub3cgLSBsYXN0O1xuICAgICAgZnBzLnZhbHVlID0gTWF0aC5yb3VuZCgxZTMgLyAoZGlmZiAvIHRpY2tzKSk7XG4gICAgICBsYXN0ID0gbm93O1xuICAgICAgdGlja3MgPSAwO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmcHM7XG59XG5cbmNvbnN0IGZ1bmN0aW9uc01hcCA9IFtcbiAgW1xuICAgIFwicmVxdWVzdEZ1bGxzY3JlZW5cIixcbiAgICBcImV4aXRGdWxsc2NyZWVuXCIsXG4gICAgXCJmdWxsc2NyZWVuRWxlbWVudFwiLFxuICAgIFwiZnVsbHNjcmVlbkVuYWJsZWRcIixcbiAgICBcImZ1bGxzY3JlZW5jaGFuZ2VcIixcbiAgICBcImZ1bGxzY3JlZW5lcnJvclwiXG4gIF0sXG4gIFtcbiAgICBcIndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuXCIsXG4gICAgXCJ3ZWJraXRFeGl0RnVsbHNjcmVlblwiLFxuICAgIFwid2Via2l0RnVsbHNjcmVlbkVsZW1lbnRcIixcbiAgICBcIndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkXCIsXG4gICAgXCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlXCIsXG4gICAgXCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3JcIlxuICBdLFxuICBbXG4gICAgXCJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlblwiLFxuICAgIFwid2Via2l0Q2FuY2VsRnVsbFNjcmVlblwiLFxuICAgIFwid2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50XCIsXG4gICAgXCJ3ZWJraXRDYW5jZWxGdWxsU2NyZWVuXCIsXG4gICAgXCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlXCIsXG4gICAgXCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3JcIlxuICBdLFxuICBbXG4gICAgXCJtb3pSZXF1ZXN0RnVsbFNjcmVlblwiLFxuICAgIFwibW96Q2FuY2VsRnVsbFNjcmVlblwiLFxuICAgIFwibW96RnVsbFNjcmVlbkVsZW1lbnRcIixcbiAgICBcIm1vekZ1bGxTY3JlZW5FbmFibGVkXCIsXG4gICAgXCJtb3pmdWxsc2NyZWVuY2hhbmdlXCIsXG4gICAgXCJtb3pmdWxsc2NyZWVuZXJyb3JcIlxuICBdLFxuICBbXG4gICAgXCJtc1JlcXVlc3RGdWxsc2NyZWVuXCIsXG4gICAgXCJtc0V4aXRGdWxsc2NyZWVuXCIsXG4gICAgXCJtc0Z1bGxzY3JlZW5FbGVtZW50XCIsXG4gICAgXCJtc0Z1bGxzY3JlZW5FbmFibGVkXCIsXG4gICAgXCJNU0Z1bGxzY3JlZW5DaGFuZ2VcIixcbiAgICBcIk1TRnVsbHNjcmVlbkVycm9yXCJcbiAgXVxuXTtcbmZ1bmN0aW9uIHVzZUZ1bGxzY3JlZW4odGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCwgYXV0b0V4aXQgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgdGFyZ2V0UmVmID0gdGFyZ2V0IHx8IChkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImh0bWxcIikpO1xuICBjb25zdCBpc0Z1bGxzY3JlZW4gPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCBpc1N1cHBvcnRlZCA9IGZhbHNlO1xuICBsZXQgbWFwID0gZnVuY3Rpb25zTWFwWzBdO1xuICBpZiAoIWRvY3VtZW50KSB7XG4gICAgaXNTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IG0gb2YgZnVuY3Rpb25zTWFwKSB7XG4gICAgICBpZiAobVsxXSBpbiBkb2N1bWVudCkge1xuICAgICAgICBtYXAgPSBtO1xuICAgICAgICBpc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBbUkVRVUVTVCwgRVhJVCwgRUxFTUVOVCwgLCBFVkVOVF0gPSBtYXA7XG4gIGFzeW5jIGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50W0VMRU1FTlRdKVxuICAgICAgYXdhaXQgZG9jdW1lbnRbRVhJVF0oKTtcbiAgICBpc0Z1bGxzY3JlZW4udmFsdWUgPSBmYWxzZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGF3YWl0IGV4aXQoKTtcbiAgICBjb25zdCB0YXJnZXQyID0gdW5yZWZFbGVtZW50KHRhcmdldFJlZik7XG4gICAgaWYgKHRhcmdldDIpIHtcbiAgICAgIGF3YWl0IHRhcmdldDJbUkVRVUVTVF0oKTtcbiAgICAgIGlzRnVsbHNjcmVlbi52YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZSgpIHtcbiAgICBpZiAoaXNGdWxsc2NyZWVuLnZhbHVlKVxuICAgICAgYXdhaXQgZXhpdCgpO1xuICAgIGVsc2VcbiAgICAgIGF3YWl0IGVudGVyKCk7XG4gIH1cbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgRVZFTlQsICgpID0+IHtcbiAgICAgIGlzRnVsbHNjcmVlbi52YWx1ZSA9ICEhKGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudFtFTEVNRU5UXSk7XG4gICAgfSwgZmFsc2UpO1xuICB9XG4gIGlmIChhdXRvRXhpdClcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoZXhpdCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNGdWxsc2NyZWVuLFxuICAgIGVudGVyLFxuICAgIGV4aXQsXG4gICAgdG9nZ2xlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyKGdhbWVwYWQpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChnYW1lcGFkLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBidXR0b25zOiB7XG4gICAgICAgICAgYTogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzBdLFxuICAgICAgICAgIGI6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxXSxcbiAgICAgICAgICB4OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMl0sXG4gICAgICAgICAgeTogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzNdXG4gICAgICAgIH0sXG4gICAgICAgIGJ1bXBlcjoge1xuICAgICAgICAgIGxlZnQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s0XSxcbiAgICAgICAgICByaWdodDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzVdXG4gICAgICAgIH0sXG4gICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgbGVmdDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzZdLFxuICAgICAgICAgIHJpZ2h0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbN11cbiAgICAgICAgfSxcbiAgICAgICAgc3RpY2s6IHtcbiAgICAgICAgICBsZWZ0OiB7XG4gICAgICAgICAgICBob3Jpem9udGFsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbMF0sXG4gICAgICAgICAgICB2ZXJ0aWNhbDogZ2FtZXBhZC52YWx1ZS5heGVzWzFdLFxuICAgICAgICAgICAgYnV0dG9uOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICByaWdodDoge1xuICAgICAgICAgICAgaG9yaXpvbnRhbDogZ2FtZXBhZC52YWx1ZS5heGVzWzJdLFxuICAgICAgICAgICAgdmVydGljYWw6IGdhbWVwYWQudmFsdWUuYXhlc1szXSxcbiAgICAgICAgICAgIGJ1dHRvbjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzExXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZHBhZDoge1xuICAgICAgICAgIHVwOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTJdLFxuICAgICAgICAgIGRvd246IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxM10sXG4gICAgICAgICAgbGVmdDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzE0XSxcbiAgICAgICAgICByaWdodDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzE1XVxuICAgICAgICB9LFxuICAgICAgICBiYWNrOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbOF0sXG4gICAgICAgIHN0YXJ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbOV1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHVzZUdhbWVwYWQob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBcImdldEdhbWVwYWRzXCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBnYW1lcGFkcyA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3Qgb25Db25uZWN0ZWRIb29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBvbkRpc2Nvbm5lY3RlZEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IHN0YXRlRnJvbUdhbWVwYWQgPSAoZ2FtZXBhZCkgPT4ge1xuICAgIGNvbnN0IGhhcHRpY0FjdHVhdG9ycyA9IFtdO1xuICAgIGNvbnN0IHZpYnJhdGlvbkFjdHVhdG9yID0gXCJ2aWJyYXRpb25BY3R1YXRvclwiIGluIGdhbWVwYWQgPyBnYW1lcGFkLnZpYnJhdGlvbkFjdHVhdG9yIDogbnVsbDtcbiAgICBpZiAodmlicmF0aW9uQWN0dWF0b3IpXG4gICAgICBoYXB0aWNBY3R1YXRvcnMucHVzaCh2aWJyYXRpb25BY3R1YXRvcik7XG4gICAgaWYgKGdhbWVwYWQuaGFwdGljQWN0dWF0b3JzKVxuICAgICAgaGFwdGljQWN0dWF0b3JzLnB1c2goLi4uZ2FtZXBhZC5oYXB0aWNBY3R1YXRvcnMpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogZ2FtZXBhZC5pZCxcbiAgICAgIGhhcHRpY0FjdHVhdG9ycyxcbiAgICAgIGluZGV4OiBnYW1lcGFkLmluZGV4LFxuICAgICAgbWFwcGluZzogZ2FtZXBhZC5tYXBwaW5nLFxuICAgICAgY29ubmVjdGVkOiBnYW1lcGFkLmNvbm5lY3RlZCxcbiAgICAgIHRpbWVzdGFtcDogZ2FtZXBhZC50aW1lc3RhbXAsXG4gICAgICBheGVzOiBnYW1lcGFkLmF4ZXMubWFwKChheGVzKSA9PiBheGVzKSxcbiAgICAgIGJ1dHRvbnM6IGdhbWVwYWQuYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4gKHsgcHJlc3NlZDogYnV0dG9uLnByZXNzZWQsIHRvdWNoZWQ6IGJ1dHRvbi50b3VjaGVkLCB2YWx1ZTogYnV0dG9uLnZhbHVlIH0pKVxuICAgIH07XG4gIH07XG4gIGNvbnN0IHVwZGF0ZUdhbWVwYWRTdGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBfZ2FtZXBhZHMgPSAobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IuZ2V0R2FtZXBhZHMoKSkgfHwgW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfZ2FtZXBhZHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGdhbWVwYWQgPSBfZ2FtZXBhZHNbaV07XG4gICAgICBpZiAoZ2FtZXBhZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGdhbWVwYWRzLnZhbHVlLmZpbmRJbmRleCgoeyBpbmRleDogaW5kZXgyIH0pID0+IGluZGV4MiA9PT0gZ2FtZXBhZC5pbmRleCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgICAgIGdhbWVwYWRzLnZhbHVlW2luZGV4XSA9IHN0YXRlRnJvbUdhbWVwYWQoZ2FtZXBhZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCB7IGlzQWN0aXZlLCBwYXVzZSwgcmVzdW1lIH0gPSB1c2VSYWZGbih1cGRhdGVHYW1lcGFkU3RhdGUpO1xuICBjb25zdCBvbkdhbWVwYWRDb25uZWN0ZWQgPSAoZ2FtZXBhZCkgPT4ge1xuICAgIGlmICghZ2FtZXBhZHMudmFsdWUuc29tZSgoeyBpbmRleCB9KSA9PiBpbmRleCA9PT0gZ2FtZXBhZC5pbmRleCkpIHtcbiAgICAgIGdhbWVwYWRzLnZhbHVlLnB1c2goc3RhdGVGcm9tR2FtZXBhZChnYW1lcGFkKSk7XG4gICAgICBvbkNvbm5lY3RlZEhvb2sudHJpZ2dlcihnYW1lcGFkLmluZGV4KTtcbiAgICB9XG4gICAgcmVzdW1lKCk7XG4gIH07XG4gIGNvbnN0IG9uR2FtZXBhZERpc2Nvbm5lY3RlZCA9IChnYW1lcGFkKSA9PiB7XG4gICAgZ2FtZXBhZHMudmFsdWUgPSBnYW1lcGFkcy52YWx1ZS5maWx0ZXIoKHgpID0+IHguaW5kZXggIT09IGdhbWVwYWQuaW5kZXgpO1xuICAgIG9uRGlzY29ubmVjdGVkSG9vay50cmlnZ2VyKGdhbWVwYWQuaW5kZXgpO1xuICB9O1xuICB1c2VFdmVudExpc3RlbmVyKFwiZ2FtZXBhZGNvbm5lY3RlZFwiLCAoZSkgPT4gb25HYW1lcGFkQ29ubmVjdGVkKGUuZ2FtZXBhZCkpO1xuICB1c2VFdmVudExpc3RlbmVyKFwiZ2FtZXBhZGRpc2Nvbm5lY3RlZFwiLCAoZSkgPT4gb25HYW1lcGFkRGlzY29ubmVjdGVkKGUuZ2FtZXBhZCkpO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHtcbiAgICBjb25zdCBfZ2FtZXBhZHMgPSAobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IuZ2V0R2FtZXBhZHMoKSkgfHwgW107XG4gICAgaWYgKF9nYW1lcGFkcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfZ2FtZXBhZHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgZ2FtZXBhZCA9IF9nYW1lcGFkc1tpXTtcbiAgICAgICAgaWYgKGdhbWVwYWQpXG4gICAgICAgICAgb25HYW1lcGFkQ29ubmVjdGVkKGdhbWVwYWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHBhdXNlKCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgb25Db25uZWN0ZWQ6IG9uQ29ubmVjdGVkSG9vay5vbixcbiAgICBvbkRpc2Nvbm5lY3RlZDogb25EaXNjb25uZWN0ZWRIb29rLm9uLFxuICAgIGdhbWVwYWRzLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZSxcbiAgICBpc0FjdGl2ZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VHZW9sb2NhdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVuYWJsZUhpZ2hBY2N1cmFjeSA9IHRydWUsXG4gICAgbWF4aW11bUFnZSA9IDNlNCxcbiAgICB0aW1lb3V0ID0gMjdlMyxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBcImdlb2xvY2F0aW9uXCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBsb2NhdGVkQXQgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgY29vcmRzID0gdnVlRGVtaS5yZWYoe1xuICAgIGFjY3VyYWN5OiAwLFxuICAgIGxhdGl0dWRlOiBJbmZpbml0eSxcbiAgICBsb25naXR1ZGU6IEluZmluaXR5LFxuICAgIGFsdGl0dWRlOiBudWxsLFxuICAgIGFsdGl0dWRlQWNjdXJhY3k6IG51bGwsXG4gICAgaGVhZGluZzogbnVsbCxcbiAgICBzcGVlZDogbnVsbFxuICB9KTtcbiAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICBsb2NhdGVkQXQudmFsdWUgPSBwb3NpdGlvbi50aW1lc3RhbXA7XG4gICAgY29vcmRzLnZhbHVlID0gcG9zaXRpb24uY29vcmRzO1xuICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgfVxuICBsZXQgd2F0Y2hlcjtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgd2F0Y2hlciA9IG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKHVwZGF0ZVBvc2l0aW9uLCAoZXJyKSA9PiBlcnJvci52YWx1ZSA9IGVyciwge1xuICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5LFxuICAgICAgbWF4aW11bUFnZSxcbiAgICAgIHRpbWVvdXRcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGlmICh3YXRjaGVyICYmIG5hdmlnYXRvcilcbiAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHdhdGNoZXIpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBjb29yZHMsXG4gICAgbG9jYXRlZEF0LFxuICAgIGVycm9yXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRFdmVudHMkMSA9IFtcIm1vdXNlbW92ZVwiLCBcIm1vdXNlZG93blwiLCBcInJlc2l6ZVwiLCBcImtleWRvd25cIiwgXCJ0b3VjaHN0YXJ0XCIsIFwid2hlZWxcIl07XG5jb25zdCBvbmVNaW51dGUgPSA2ZTQ7XG5mdW5jdGlvbiB1c2VJZGxlKHRpbWVvdXQgPSBvbmVNaW51dGUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW5pdGlhbFN0YXRlID0gZmFsc2UsXG4gICAgbGlzdGVuRm9yVmlzaWJpbGl0eUNoYW5nZSA9IHRydWUsXG4gICAgZXZlbnRzID0gZGVmYXVsdEV2ZW50cyQxLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIgPSBzaGFyZWQudGhyb3R0bGVGaWx0ZXIoNTApXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZGxlID0gdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgY29uc3QgbGFzdEFjdGl2ZSA9IHZ1ZURlbWkucmVmKHNoYXJlZC50aW1lc3RhbXAoKSk7XG4gIGxldCB0aW1lcjtcbiAgY29uc3Qgb25FdmVudCA9IHNoYXJlZC5jcmVhdGVGaWx0ZXJXcmFwcGVyKGV2ZW50RmlsdGVyLCAoKSA9PiB7XG4gICAgaWRsZS52YWx1ZSA9IGZhbHNlO1xuICAgIGxhc3RBY3RpdmUudmFsdWUgPSBzaGFyZWQudGltZXN0YW1wKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gaWRsZS52YWx1ZSA9IHRydWUsIHRpbWVvdXQpO1xuICB9KTtcbiAgaWYgKHdpbmRvdykge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKVxuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIGV2ZW50LCBvbkV2ZW50LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgaWYgKGxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIGlmICghZG9jdW1lbnQuaGlkZGVuKVxuICAgICAgICAgIG9uRXZlbnQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gaWRsZS52YWx1ZSA9IHRydWUsIHRpbWVvdXQpO1xuICByZXR1cm4geyBpZGxlLCBsYXN0QWN0aXZlIH07XG59XG5cbnZhciBfX2RlZlByb3AkOCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kOSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDggPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDgob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDggPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ5LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkOChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkOSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkOShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ5LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ4KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICBjb25zdCB7IHNyYywgc3Jjc2V0LCBzaXplcyB9ID0gb3B0aW9ucztcbiAgICBpbWcuc3JjID0gc3JjO1xuICAgIGlmIChzcmNzZXQpXG4gICAgICBpbWcuc3Jjc2V0ID0gc3Jjc2V0O1xuICAgIGlmIChzaXplcylcbiAgICAgIGltZy5zaXplcyA9IHNpemVzO1xuICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKGltZyk7XG4gICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XG4gIH0pO1xufVxuY29uc3QgdXNlSW1hZ2UgPSAob3B0aW9ucywgYXN5bmNTdGF0ZU9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IHVzZUFzeW5jU3RhdGUoKCkgPT4gbG9hZEltYWdlKHZ1ZURlbWkudW5yZWYob3B0aW9ucykpLCB2b2lkIDAsIF9fc3ByZWFkVmFsdWVzJDgoe1xuICAgIHJlc2V0T25FeGVjdXRlOiB0cnVlXG4gIH0sIGFzeW5jU3RhdGVPcHRpb25zKSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdnVlRGVtaS51bnJlZihvcHRpb25zKSwgKCkgPT4gc3RhdGUuZXhlY3V0ZShhc3luY1N0YXRlT3B0aW9ucy5kZWxheSksIHsgZGVlcDogdHJ1ZSB9KTtcbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuZnVuY3Rpb24gdXNlU2Nyb2xsKGVsZW1lbnQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGhyb3R0bGUgPSAwLFxuICAgIGlkbGUgPSAyMDAsXG4gICAgb25TdG9wID0gc2hhcmVkLm5vb3AsXG4gICAgb25TY3JvbGwgPSBzaGFyZWQubm9vcCxcbiAgICBvZmZzZXQgPSB7XG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB0b3A6IDAsXG4gICAgICBib3R0b206IDBcbiAgICB9LFxuICAgIGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgeCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB5ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGlzU2Nyb2xsaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBhcnJpdmVkU3RhdGUgPSB2dWVEZW1pLnJlYWN0aXZlKHtcbiAgICBsZWZ0OiB0cnVlLFxuICAgIHJpZ2h0OiBmYWxzZSxcbiAgICB0b3A6IHRydWUsXG4gICAgYm90dG9tOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgZGlyZWN0aW9ucyA9IHZ1ZURlbWkucmVhY3RpdmUoe1xuICAgIGxlZnQ6IGZhbHNlLFxuICAgIHJpZ2h0OiBmYWxzZSxcbiAgICB0b3A6IGZhbHNlLFxuICAgIGJvdHRvbTogZmFsc2VcbiAgfSk7XG4gIGlmIChlbGVtZW50KSB7XG4gICAgY29uc3Qgb25TY3JvbGxFbmQgPSBzaGFyZWQudXNlRGVib3VuY2VGbigoZSkgPT4ge1xuICAgICAgaXNTY3JvbGxpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIGRpcmVjdGlvbnMubGVmdCA9IGZhbHNlO1xuICAgICAgZGlyZWN0aW9ucy5yaWdodCA9IGZhbHNlO1xuICAgICAgZGlyZWN0aW9ucy50b3AgPSBmYWxzZTtcbiAgICAgIGRpcmVjdGlvbnMuYm90dG9tID0gZmFsc2U7XG4gICAgICBvblN0b3AoZSk7XG4gICAgfSwgdGhyb3R0bGUgKyBpZGxlKTtcbiAgICBjb25zdCBvblNjcm9sbEhhbmRsZXIgPSAoZSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBlLnRhcmdldCA9PT0gZG9jdW1lbnQgPyBlLnRhcmdldC5kb2N1bWVudEVsZW1lbnQgOiBlLnRhcmdldDtcbiAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSBldmVudFRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgZGlyZWN0aW9ucy5sZWZ0ID0gc2Nyb2xsTGVmdCA8IHgudmFsdWU7XG4gICAgICBkaXJlY3Rpb25zLnJpZ2h0ID0gc2Nyb2xsTGVmdCA+IHgudmFsdWU7XG4gICAgICBhcnJpdmVkU3RhdGUubGVmdCA9IHNjcm9sbExlZnQgPD0gMCArIChvZmZzZXQubGVmdCB8fCAwKTtcbiAgICAgIGFycml2ZWRTdGF0ZS5yaWdodCA9IHNjcm9sbExlZnQgKyBldmVudFRhcmdldC5jbGllbnRXaWR0aCA+PSBldmVudFRhcmdldC5zY3JvbGxXaWR0aCAtIChvZmZzZXQucmlnaHQgfHwgMCk7XG4gICAgICB4LnZhbHVlID0gc2Nyb2xsTGVmdDtcbiAgICAgIGxldCBzY3JvbGxUb3AgPSBldmVudFRhcmdldC5zY3JvbGxUb3A7XG4gICAgICBpZiAoZS50YXJnZXQgPT09IGRvY3VtZW50ICYmICFzY3JvbGxUb3ApXG4gICAgICAgIHNjcm9sbFRvcCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wO1xuICAgICAgZGlyZWN0aW9ucy50b3AgPSBzY3JvbGxUb3AgPCB5LnZhbHVlO1xuICAgICAgZGlyZWN0aW9ucy5ib3R0b20gPSBzY3JvbGxUb3AgPiB5LnZhbHVlO1xuICAgICAgYXJyaXZlZFN0YXRlLnRvcCA9IHNjcm9sbFRvcCA8PSAwICsgKG9mZnNldC50b3AgfHwgMCk7XG4gICAgICBhcnJpdmVkU3RhdGUuYm90dG9tID0gc2Nyb2xsVG9wICsgZXZlbnRUYXJnZXQuY2xpZW50SGVpZ2h0ID49IGV2ZW50VGFyZ2V0LnNjcm9sbEhlaWdodCAtIChvZmZzZXQuYm90dG9tIHx8IDApO1xuICAgICAgeS52YWx1ZSA9IHNjcm9sbFRvcDtcbiAgICAgIGlzU2Nyb2xsaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIG9uU2Nyb2xsRW5kKGUpO1xuICAgICAgb25TY3JvbGwoZSk7XG4gICAgfTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnQsIFwic2Nyb2xsXCIsIHRocm90dGxlID8gc2hhcmVkLnVzZVRocm90dGxlRm4ob25TY3JvbGxIYW5kbGVyLCB0aHJvdHRsZSkgOiBvblNjcm9sbEhhbmRsZXIsIGV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBpc1Njcm9sbGluZyxcbiAgICBhcnJpdmVkU3RhdGUsXG4gICAgZGlyZWN0aW9uc1xuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDcgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQyID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkOCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDggPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ4ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDguY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ3KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ4KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ4KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDguY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDcoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQyID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMihhLCBfX2dldE93blByb3BEZXNjcyQyKGIpKTtcbmZ1bmN0aW9uIHVzZUluZmluaXRlU2Nyb2xsKGVsZW1lbnQsIG9uTG9hZE1vcmUsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBkaXJlY3Rpb24gPSAoX2EgPSBvcHRpb25zLmRpcmVjdGlvbikgIT0gbnVsbCA/IF9hIDogXCJib3R0b21cIjtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlYWN0aXZlKHVzZVNjcm9sbChlbGVtZW50LCBfX3NwcmVhZFByb3BzJDIoX19zcHJlYWRWYWx1ZXMkNyh7fSwgb3B0aW9ucyksIHtcbiAgICBvZmZzZXQ6IF9fc3ByZWFkVmFsdWVzJDcoe1xuICAgICAgW2RpcmVjdGlvbl06IChfYiA9IG9wdGlvbnMuZGlzdGFuY2UpICE9IG51bGwgPyBfYiA6IDBcbiAgICB9LCBvcHRpb25zLm9mZnNldClcbiAgfSkpKTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiBzdGF0ZS5hcnJpdmVkU3RhdGVbZGlyZWN0aW9uXSwgYXN5bmMgKHYpID0+IHtcbiAgICB2YXIgX2EyLCBfYjI7XG4gICAgaWYgKHYpIHtcbiAgICAgIGNvbnN0IGVsZW0gPSB2dWVEZW1pLnVucmVmKGVsZW1lbnQpO1xuICAgICAgY29uc3QgcHJldmlvdXMgPSB7XG4gICAgICAgIGhlaWdodDogKF9hMiA9IGVsZW0gPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW0uc2Nyb2xsSGVpZ2h0KSAhPSBudWxsID8gX2EyIDogMCxcbiAgICAgICAgd2lkdGg6IChfYjIgPSBlbGVtID09IG51bGwgPyB2b2lkIDAgOiBlbGVtLnNjcm9sbFdpZHRoKSAhPSBudWxsID8gX2IyIDogMFxuICAgICAgfTtcbiAgICAgIGF3YWl0IG9uTG9hZE1vcmUoc3RhdGUpO1xuICAgICAgaWYgKG9wdGlvbnMucHJlc2VydmVTY3JvbGxQb3NpdGlvbiAmJiBlbGVtKSB7XG4gICAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIGVsZW0uc2Nyb2xsVG8oe1xuICAgICAgICAgICAgdG9wOiBlbGVtLnNjcm9sbEhlaWdodCAtIHByZXZpb3VzLmhlaWdodCxcbiAgICAgICAgICAgIGxlZnQ6IGVsZW0uc2Nyb2xsV2lkdGggLSBwcmV2aW91cy53aWR0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VJbnRlcnNlY3Rpb25PYnNlcnZlcih0YXJnZXQsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJvb3QsXG4gICAgcm9vdE1hcmdpbiA9IFwiMHB4XCIsXG4gICAgdGhyZXNob2xkID0gMC4xLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gd2luZG93ICYmIFwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcIiBpbiB3aW5kb3c7XG4gIGxldCBjbGVhbnVwID0gc2hhcmVkLm5vb3A7XG4gIGNvbnN0IHN0b3BXYXRjaCA9IGlzU3VwcG9ydGVkID8gdnVlRGVtaS53YXRjaCgoKSA9PiAoe1xuICAgIGVsOiB1bnJlZkVsZW1lbnQodGFyZ2V0KSxcbiAgICByb290OiB1bnJlZkVsZW1lbnQocm9vdClcbiAgfSksICh7IGVsLCByb290OiByb290MiB9KSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIHtcbiAgICAgIHJvb3Q6IHJvb3QyLFxuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZFxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgIGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICBjbGVhbnVwID0gc2hhcmVkLm5vb3A7XG4gICAgfTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9KSA6IHNoYXJlZC5ub29wO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBzdG9wV2F0Y2goKTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdEV2ZW50cyA9IFtcIm1vdXNlZG93blwiLCBcIm1vdXNldXBcIiwgXCJrZXlkb3duXCIsIFwia2V5dXBcIl07XG5mdW5jdGlvbiB1c2VLZXlNb2RpZmllcihtb2RpZmllciwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBldmVudHMgPSBkZWZhdWx0RXZlbnRzLFxuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIGluaXRpYWwgPSBudWxsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKGluaXRpYWwpO1xuICBpZiAoZG9jdW1lbnQpIHtcbiAgICBldmVudHMuZm9yRWFjaCgobGlzdGVuZXJFdmVudCkgPT4ge1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgbGlzdGVuZXJFdmVudCwgKGV2dCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGV2dC5nZXRNb2RpZmllclN0YXRlID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgc3RhdGUudmFsdWUgPSBldnQuZ2V0TW9kaWZpZXJTdGF0ZShtb2RpZmllcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIHVzZVN0b3JhZ2Uoa2V5LCBpbml0aWFsVmFsdWUsIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmxvY2FsU3RvcmFnZSwgb3B0aW9ucyk7XG59XG5cbmNvbnN0IERlZmF1bHRNYWdpY0tleXNBbGlhc01hcCA9IHtcbiAgY3RybDogXCJjb250cm9sXCIsXG4gIGNvbW1hbmQ6IFwibWV0YVwiLFxuICBjbWQ6IFwibWV0YVwiLFxuICBvcHRpb246IFwiYWx0XCIsXG4gIHVwOiBcImFycm93dXBcIixcbiAgZG93bjogXCJhcnJvd2Rvd25cIixcbiAgbGVmdDogXCJhcnJvd2xlZnRcIixcbiAgcmlnaHQ6IFwiYXJyb3dyaWdodFwiXG59O1xuXG5mdW5jdGlvbiB1c2VNYWdpY0tleXMob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByZWFjdGl2ZTogdXNlUmVhY3RpdmUgPSBmYWxzZSxcbiAgICB0YXJnZXQgPSBkZWZhdWx0V2luZG93LFxuICAgIGFsaWFzTWFwID0gRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwLFxuICAgIHBhc3NpdmUgPSB0cnVlLFxuICAgIG9uRXZlbnRGaXJlZCA9IHNoYXJlZC5ub29wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjdXJyZW50ID0gdnVlRGVtaS5yZWFjdGl2ZShuZXcgU2V0KCkpO1xuICBjb25zdCBvYmogPSB7IHRvSlNPTigpIHtcbiAgICByZXR1cm4ge307XG4gIH0sIGN1cnJlbnQgfTtcbiAgY29uc3QgcmVmcyA9IHVzZVJlYWN0aXZlID8gdnVlRGVtaS5yZWFjdGl2ZShvYmopIDogb2JqO1xuICBjb25zdCBtZXRhRGVwcyA9IG5ldyBTZXQoKTtcbiAgY29uc3QgdXNlZEtleXMgPSBuZXcgU2V0KCk7XG4gIGZ1bmN0aW9uIHNldFJlZnMoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcmVmcykge1xuICAgICAgaWYgKHVzZVJlYWN0aXZlKVxuICAgICAgICByZWZzW2tleV0gPSB2YWx1ZTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmVmc1trZXldLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHVzZWRLZXlzKVxuICAgICAgc2V0UmVmcyhrZXksIGZhbHNlKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVSZWZzKGUsIHZhbHVlKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBrZXkgPSAoX2EgPSBlLmtleSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgY29kZSA9IChfYiA9IGUuY29kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgdmFsdWVzID0gW2NvZGUsIGtleV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChjb2RlKSB7XG4gICAgICBpZiAodmFsdWUpXG4gICAgICAgIGN1cnJlbnQuYWRkKGUuY29kZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGN1cnJlbnQuZGVsZXRlKGUuY29kZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5MiBvZiB2YWx1ZXMpIHtcbiAgICAgIHVzZWRLZXlzLmFkZChrZXkyKTtcbiAgICAgIHNldFJlZnMoa2V5MiwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSBcIm1ldGFcIiAmJiAhdmFsdWUpIHtcbiAgICAgIG1ldGFEZXBzLmZvckVhY2goKGtleTIpID0+IHtcbiAgICAgICAgY3VycmVudC5kZWxldGUoa2V5Mik7XG4gICAgICAgIHNldFJlZnMoa2V5MiwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgICBtZXRhRGVwcy5jbGVhcigpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGUuZ2V0TW9kaWZpZXJTdGF0ZSA9PT0gXCJmdW5jdGlvblwiICYmIGUuZ2V0TW9kaWZpZXJTdGF0ZShcIk1ldGFcIikgJiYgdmFsdWUpIHtcbiAgICAgIFsuLi5jdXJyZW50LCAuLi52YWx1ZXNdLmZvckVhY2goKGtleTIpID0+IG1ldGFEZXBzLmFkZChrZXkyKSk7XG4gICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJrZXlkb3duXCIsIChlKSA9PiB7XG4gICAgICB1cGRhdGVSZWZzKGUsIHRydWUpO1xuICAgICAgcmV0dXJuIG9uRXZlbnRGaXJlZChlKTtcbiAgICB9LCB7IHBhc3NpdmUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwia2V5dXBcIiwgKGUpID0+IHtcbiAgICAgIHVwZGF0ZVJlZnMoZSwgZmFsc2UpO1xuICAgICAgcmV0dXJuIG9uRXZlbnRGaXJlZChlKTtcbiAgICB9LCB7IHBhc3NpdmUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgcmVzZXQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgcmVzZXQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eShyZWZzLCB7XG4gICAgZ2V0KHRhcmdldDIsIHByb3AsIHJlYykge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wICE9PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0MiwgcHJvcCwgcmVjKTtcbiAgICAgIHByb3AgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocHJvcCBpbiBhbGlhc01hcClcbiAgICAgICAgcHJvcCA9IGFsaWFzTWFwW3Byb3BdO1xuICAgICAgaWYgKCEocHJvcCBpbiByZWZzKSkge1xuICAgICAgICBpZiAoL1srXy1dLy50ZXN0KHByb3ApKSB7XG4gICAgICAgICAgY29uc3Qga2V5cyA9IHByb3Auc3BsaXQoL1srXy1dL2cpLm1hcCgoaSkgPT4gaS50cmltKCkpO1xuICAgICAgICAgIHJlZnNbcHJvcF0gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGtleXMuZXZlcnkoKGtleSkgPT4gdnVlRGVtaS51bnJlZihwcm94eVtrZXldKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnNbcHJvcF0gPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHIgPSBSZWZsZWN0LmdldCh0YXJnZXQyLCBwcm9wLCByZWMpO1xuICAgICAgcmV0dXJuIHVzZVJlYWN0aXZlID8gdnVlRGVtaS51bnJlZihyKSA6IHI7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufVxuXG52YXIgX19kZWZQcm9wJDYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ3ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDcgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ2ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ2KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ2ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkNy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDYoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDcpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDcoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kNy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzaW5nRWxSZWYoc291cmNlLCBjYikge1xuICBpZiAodnVlRGVtaS51bnJlZihzb3VyY2UpKVxuICAgIGNiKHZ1ZURlbWkudW5yZWYoc291cmNlKSk7XG59XG5mdW5jdGlvbiB0aW1lUmFuZ2VUb0FycmF5KHRpbWVSYW5nZXMpIHtcbiAgbGV0IHJhbmdlcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoOyArK2kpXG4gICAgcmFuZ2VzID0gWy4uLnJhbmdlcywgW3RpbWVSYW5nZXMuc3RhcnQoaSksIHRpbWVSYW5nZXMuZW5kKGkpXV07XG4gIHJldHVybiByYW5nZXM7XG59XG5mdW5jdGlvbiB0cmFja3NUb0FycmF5KHRyYWNrcykge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0cmFja3MpLm1hcCgoeyBsYWJlbCwga2luZCwgbGFuZ3VhZ2UsIG1vZGUsIGFjdGl2ZUN1ZXMsIGN1ZXMsIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUgfSwgaWQpID0+ICh7IGlkLCBsYWJlbCwga2luZCwgbGFuZ3VhZ2UsIG1vZGUsIGFjdGl2ZUN1ZXMsIGN1ZXMsIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUgfSkpO1xufVxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHNyYzogXCJcIixcbiAgdHJhY2tzOiBbXVxufTtcbmZ1bmN0aW9uIHVzZU1lZGlhQ29udHJvbHModGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJDYoX19zcHJlYWRWYWx1ZXMkNih7fSwgZGVmYXVsdE9wdGlvbnMpLCBvcHRpb25zKTtcbiAgY29uc3Qge1xuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjdXJyZW50VGltZSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBkdXJhdGlvbiA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBzZWVraW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB2b2x1bWUgPSB2dWVEZW1pLnJlZigxKTtcbiAgY29uc3Qgd2FpdGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZW5kZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHBsYXlpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHJhdGUgPSB2dWVEZW1pLnJlZigxKTtcbiAgY29uc3Qgc3RhbGxlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgYnVmZmVyZWQgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHRyYWNrcyA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3Qgc2VsZWN0ZWRUcmFjayA9IHZ1ZURlbWkucmVmKC0xKTtcbiAgY29uc3QgaXNQaWN0dXJlSW5QaWN0dXJlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBtdXRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlID0gZG9jdW1lbnQgJiYgXCJwaWN0dXJlSW5QaWN0dXJlRW5hYmxlZFwiIGluIGRvY3VtZW50O1xuICBjb25zdCBzb3VyY2VFcnJvckV2ZW50ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBkaXNhYmxlVHJhY2sgPSAodHJhY2spID0+IHtcbiAgICB1c2luZ0VsUmVmKHRhcmdldCwgKGVsKSA9PiB7XG4gICAgICBpZiAodHJhY2spIHtcbiAgICAgICAgY29uc3QgaWQgPSBzaGFyZWQuaXNOdW1iZXIodHJhY2spID8gdHJhY2sgOiB0cmFjay5pZDtcbiAgICAgICAgZWwudGV4dFRyYWNrc1tpZF0ubW9kZSA9IFwiZGlzYWJsZWRcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWwudGV4dFRyYWNrcy5sZW5ndGg7ICsraSlcbiAgICAgICAgICBlbC50ZXh0VHJhY2tzW2ldLm1vZGUgPSBcImRpc2FibGVkXCI7XG4gICAgICB9XG4gICAgICBzZWxlY3RlZFRyYWNrLnZhbHVlID0gLTE7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGVuYWJsZVRyYWNrID0gKHRyYWNrLCBkaXNhYmxlVHJhY2tzID0gdHJ1ZSkgPT4ge1xuICAgIHVzaW5nRWxSZWYodGFyZ2V0LCAoZWwpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gc2hhcmVkLmlzTnVtYmVyKHRyYWNrKSA/IHRyYWNrIDogdHJhY2suaWQ7XG4gICAgICBpZiAoZGlzYWJsZVRyYWNrcylcbiAgICAgICAgZGlzYWJsZVRyYWNrKCk7XG4gICAgICBlbC50ZXh0VHJhY2tzW2lkXS5tb2RlID0gXCJzaG93aW5nXCI7XG4gICAgICBzZWxlY3RlZFRyYWNrLnZhbHVlID0gaWQ7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZVBpY3R1cmVJblBpY3R1cmUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHVzaW5nRWxSZWYodGFyZ2V0LCBhc3luYyAoZWwpID0+IHtcbiAgICAgICAgaWYgKHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSkge1xuICAgICAgICAgIGlmICghaXNQaWN0dXJlSW5QaWN0dXJlLnZhbHVlKSB7XG4gICAgICAgICAgICBlbC5yZXF1ZXN0UGljdHVyZUluUGljdHVyZSgpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuZXhpdFBpY3R1cmVJblBpY3R1cmUoKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHNyYyA9IHZ1ZURlbWkudW5yZWYob3B0aW9ucy5zcmMpO1xuICAgIGxldCBzb3VyY2VzID0gW107XG4gICAgaWYgKCFzcmMpXG4gICAgICByZXR1cm47XG4gICAgaWYgKHNoYXJlZC5pc1N0cmluZyhzcmMpKVxuICAgICAgc291cmNlcyA9IFt7IHNyYyB9XTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNyYykpXG4gICAgICBzb3VyY2VzID0gc3JjO1xuICAgIGVsc2UgaWYgKHNoYXJlZC5pc09iamVjdChzcmMpKVxuICAgICAgc291cmNlcyA9IFtzcmNdO1xuICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzb3VyY2VcIikuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgc291cmNlRXJyb3JFdmVudC50cmlnZ2VyKTtcbiAgICAgIGUucmVtb3ZlKCk7XG4gICAgfSk7XG4gICAgc291cmNlcy5mb3JFYWNoKCh7IHNyYzogc3JjMiwgdHlwZSB9KSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIpO1xuICAgICAgc291cmNlLnNldEF0dHJpYnV0ZShcInNyY1wiLCBzcmMyKTtcbiAgICAgIHNvdXJjZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIHR5cGUgfHwgXCJcIik7XG4gICAgICBzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHNvdXJjZUVycm9yRXZlbnQudHJpZ2dlcik7XG4gICAgICBlbC5hcHBlbmRDaGlsZChzb3VyY2UpO1xuICAgIH0pO1xuICAgIGVsLmxvYWQoKTtcbiAgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKFwic291cmNlXCIpLmZvckVhY2goKGUpID0+IGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHNvdXJjZUVycm9yRXZlbnQudHJpZ2dlcikpO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaCh2b2x1bWUsICh2b2wpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLnZvbHVtZSA9IHZvbDtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2gobXV0ZWQsIChtdXRlKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5tdXRlZCA9IG11dGU7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKHJhdGUsIChyYXRlMikgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwucGxheWJhY2tSYXRlID0gcmF0ZTI7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHRleHRUcmFja3MgPSB2dWVEZW1pLnVucmVmKG9wdGlvbnMudHJhY2tzKTtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIXRleHRUcmFja3MgfHwgIXRleHRUcmFja3MubGVuZ3RoIHx8ICFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKFwidHJhY2tcIikuZm9yRWFjaCgoZSkgPT4gZS5yZW1vdmUoKSk7XG4gICAgdGV4dFRyYWNrcy5mb3JFYWNoKCh7IGRlZmF1bHQ6IGlzRGVmYXVsdCwga2luZCwgbGFiZWwsIHNyYywgc3JjTGFuZyB9LCBpKSA9PiB7XG4gICAgICBjb25zdCB0cmFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0cmFja1wiKTtcbiAgICAgIHRyYWNrLmRlZmF1bHQgPSBpc0RlZmF1bHQgfHwgZmFsc2U7XG4gICAgICB0cmFjay5raW5kID0ga2luZDtcbiAgICAgIHRyYWNrLmxhYmVsID0gbGFiZWw7XG4gICAgICB0cmFjay5zcmMgPSBzcmM7XG4gICAgICB0cmFjay5zcmNsYW5nID0gc3JjTGFuZztcbiAgICAgIGlmICh0cmFjay5kZWZhdWx0KVxuICAgICAgICBzZWxlY3RlZFRyYWNrLnZhbHVlID0gaTtcbiAgICAgIGVsLmFwcGVuZENoaWxkKHRyYWNrKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHsgaWdub3JlVXBkYXRlczogaWdub3JlQ3VycmVudFRpbWVVcGRhdGVzIH0gPSBzaGFyZWQud2F0Y2hJZ25vcmFibGUoY3VycmVudFRpbWUsICh0aW1lKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5jdXJyZW50VGltZSA9IHRpbWU7XG4gIH0pO1xuICBjb25zdCB7IGlnbm9yZVVwZGF0ZXM6IGlnbm9yZVBsYXlpbmdVcGRhdGVzIH0gPSBzaGFyZWQud2F0Y2hJZ25vcmFibGUocGxheWluZywgKGlzUGxheWluZykgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgaXNQbGF5aW5nID8gZWwucGxheSgpIDogZWwucGF1c2UoKTtcbiAgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRpbWV1cGRhdGVcIiwgKCkgPT4gaWdub3JlQ3VycmVudFRpbWVVcGRhdGVzKCgpID0+IGN1cnJlbnRUaW1lLnZhbHVlID0gdnVlRGVtaS51bnJlZih0YXJnZXQpLmN1cnJlbnRUaW1lKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImR1cmF0aW9uY2hhbmdlXCIsICgpID0+IGR1cmF0aW9uLnZhbHVlID0gdnVlRGVtaS51bnJlZih0YXJnZXQpLmR1cmF0aW9uKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicHJvZ3Jlc3NcIiwgKCkgPT4gYnVmZmVyZWQudmFsdWUgPSB0aW1lUmFuZ2VUb0FycmF5KHZ1ZURlbWkudW5yZWYodGFyZ2V0KS5idWZmZXJlZCkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJzZWVraW5nXCIsICgpID0+IHNlZWtpbmcudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwic2Vla2VkXCIsICgpID0+IHNlZWtpbmcudmFsdWUgPSBmYWxzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcIndhaXRpbmdcIiwgKCkgPT4gd2FpdGluZy52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwbGF5aW5nXCIsICgpID0+IHdhaXRpbmcudmFsdWUgPSBmYWxzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInJhdGVjaGFuZ2VcIiwgKCkgPT4gcmF0ZS52YWx1ZSA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KS5wbGF5YmFja1JhdGUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJzdGFsbGVkXCIsICgpID0+IHN0YWxsZWQudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZW5kZWRcIiwgKCkgPT4gZW5kZWQudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicGF1c2VcIiwgKCkgPT4gaWdub3JlUGxheWluZ1VwZGF0ZXMoKCkgPT4gcGxheWluZy52YWx1ZSA9IGZhbHNlKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBsYXlcIiwgKCkgPT4gaWdub3JlUGxheWluZ1VwZGF0ZXMoKCkgPT4gcGxheWluZy52YWx1ZSA9IHRydWUpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZW50ZXJwaWN0dXJlaW5waWN0dXJlXCIsICgpID0+IGlzUGljdHVyZUluUGljdHVyZS52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJsZWF2ZXBpY3R1cmVpbnBpY3R1cmVcIiwgKCkgPT4gaXNQaWN0dXJlSW5QaWN0dXJlLnZhbHVlID0gZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ2b2x1bWVjaGFuZ2VcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgdm9sdW1lLnZhbHVlID0gZWwudm9sdW1lO1xuICAgIG11dGVkLnZhbHVlID0gZWwubXV0ZWQ7XG4gIH0pO1xuICBjb25zdCBsaXN0ZW5lcnMgPSBbXTtcbiAgY29uc3Qgc3RvcCA9IHZ1ZURlbWkud2F0Y2goW3RhcmdldF0sICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIHN0b3AoKTtcbiAgICBsaXN0ZW5lcnNbMF0gPSB1c2VFdmVudExpc3RlbmVyKGVsLnRleHRUcmFja3MsIFwiYWRkdHJhY2tcIiwgKCkgPT4gdHJhY2tzLnZhbHVlID0gdHJhY2tzVG9BcnJheShlbC50ZXh0VHJhY2tzKSk7XG4gICAgbGlzdGVuZXJzWzFdID0gdXNlRXZlbnRMaXN0ZW5lcihlbC50ZXh0VHJhY2tzLCBcInJlbW92ZXRyYWNrXCIsICgpID0+IHRyYWNrcy52YWx1ZSA9IHRyYWNrc1RvQXJyYXkoZWwudGV4dFRyYWNrcykpO1xuICAgIGxpc3RlbmVyc1syXSA9IHVzZUV2ZW50TGlzdGVuZXIoZWwudGV4dFRyYWNrcywgXCJjaGFuZ2VcIiwgKCkgPT4gdHJhY2tzLnZhbHVlID0gdHJhY2tzVG9BcnJheShlbC50ZXh0VHJhY2tzKSk7XG4gIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4gbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcigpKSk7XG4gIHJldHVybiB7XG4gICAgY3VycmVudFRpbWUsXG4gICAgZHVyYXRpb24sXG4gICAgd2FpdGluZyxcbiAgICBzZWVraW5nLFxuICAgIGVuZGVkLFxuICAgIHN0YWxsZWQsXG4gICAgYnVmZmVyZWQsXG4gICAgcGxheWluZyxcbiAgICByYXRlLFxuICAgIHZvbHVtZSxcbiAgICBtdXRlZCxcbiAgICB0cmFja3MsXG4gICAgc2VsZWN0ZWRUcmFjayxcbiAgICBlbmFibGVUcmFjayxcbiAgICBkaXNhYmxlVHJhY2ssXG4gICAgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlLFxuICAgIHRvZ2dsZVBpY3R1cmVJblBpY3R1cmUsXG4gICAgaXNQaWN0dXJlSW5QaWN0dXJlLFxuICAgIG9uU291cmNlRXJyb3I6IHNvdXJjZUVycm9yRXZlbnQub25cbiAgfTtcbn1cblxuY29uc3QgZ2V0TWFwVnVlMkNvbXBhdCA9ICgpID0+IHtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVhY3RpdmUoe30pO1xuICByZXR1cm4ge1xuICAgIGdldDogKGtleSkgPT4gZGF0YVtrZXldLFxuICAgIHNldDogKGtleSwgdmFsdWUpID0+IHZ1ZURlbWkuc2V0KGRhdGEsIGtleSwgdmFsdWUpLFxuICAgIGhhczogKGtleSkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSksXG4gICAgZGVsZXRlOiAoa2V5KSA9PiB2dWVEZW1pLmRlbChkYXRhLCBrZXkpLFxuICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdnVlRGVtaS5kZWwoZGF0YSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn07XG5mdW5jdGlvbiB1c2VNZW1vaXplKHJlc29sdmVyLCBvcHRpb25zKSB7XG4gIGNvbnN0IGluaXRDYWNoZSA9ICgpID0+IHtcbiAgICBpZiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5jYWNoZSlcbiAgICAgIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKG9wdGlvbnMuY2FjaGUpO1xuICAgIGlmICh2dWVEZW1pLmlzVnVlMilcbiAgICAgIHJldHVybiBnZXRNYXBWdWUyQ29tcGF0KCk7XG4gICAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUobmV3IE1hcCgpKTtcbiAgfTtcbiAgY29uc3QgY2FjaGUgPSBpbml0Q2FjaGUoKTtcbiAgY29uc3QgZ2VuZXJhdGVLZXkgPSAoLi4uYXJncykgPT4gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZ2V0S2V5KSA/IG9wdGlvbnMuZ2V0S2V5KC4uLmFyZ3MpIDogSlNPTi5zdHJpbmdpZnkoYXJncyk7XG4gIGNvbnN0IF9sb2FkRGF0YSA9IChrZXksIC4uLmFyZ3MpID0+IHtcbiAgICBjYWNoZS5zZXQoa2V5LCByZXNvbHZlciguLi5hcmdzKSk7XG4gICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICB9O1xuICBjb25zdCBsb2FkRGF0YSA9ICguLi5hcmdzKSA9PiBfbG9hZERhdGEoZ2VuZXJhdGVLZXkoLi4uYXJncyksIC4uLmFyZ3MpO1xuICBjb25zdCBkZWxldGVEYXRhID0gKC4uLmFyZ3MpID0+IHtcbiAgICBjYWNoZS5kZWxldGUoZ2VuZXJhdGVLZXkoLi4uYXJncykpO1xuICB9O1xuICBjb25zdCBjbGVhckRhdGEgPSAoKSA9PiB7XG4gICAgY2FjaGUuY2xlYXIoKTtcbiAgfTtcbiAgY29uc3QgbWVtb2l6ZWQgPSAoLi4uYXJncykgPT4ge1xuICAgIGNvbnN0IGtleSA9IGdlbmVyYXRlS2V5KC4uLmFyZ3MpO1xuICAgIGlmIChjYWNoZS5oYXMoa2V5KSlcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICByZXR1cm4gX2xvYWREYXRhKGtleSwgLi4uYXJncyk7XG4gIH07XG4gIG1lbW9pemVkLmxvYWQgPSBsb2FkRGF0YTtcbiAgbWVtb2l6ZWQuZGVsZXRlID0gZGVsZXRlRGF0YTtcbiAgbWVtb2l6ZWQuY2xlYXIgPSBjbGVhckRhdGE7XG4gIG1lbW9pemVkLmdlbmVyYXRlS2V5ID0gZ2VuZXJhdGVLZXk7XG4gIG1lbW9pemVkLmNhY2hlID0gY2FjaGU7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuZnVuY3Rpb24gdXNlTWVtb3J5KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBtZW1vcnkgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBcIm1lbW9yeVwiIGluIHBlcmZvcm1hbmNlO1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICBjb25zdCB7IGludGVydmFsID0gMWUzIH0gPSBvcHRpb25zO1xuICAgIHNoYXJlZC51c2VJbnRlcnZhbEZuKCgpID0+IHtcbiAgICAgIG1lbW9yeS52YWx1ZSA9IHBlcmZvcm1hbmNlLm1lbW9yeTtcbiAgICB9LCBpbnRlcnZhbCwgeyBpbW1lZGlhdGU6IG9wdGlvbnMuaW1tZWRpYXRlLCBpbW1lZGlhdGVDYWxsYmFjazogb3B0aW9ucy5pbW1lZGlhdGVDYWxsYmFjayB9KTtcbiAgfVxuICByZXR1cm4geyBpc1N1cHBvcnRlZCwgbWVtb3J5IH07XG59XG5cbmZ1bmN0aW9uIHVzZU1vdW50ZWQoKSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgdnVlRGVtaS5vbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlzTW91bnRlZC52YWx1ZSA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gaXNNb3VudGVkO1xufVxuXG5mdW5jdGlvbiB1c2VNb3VzZShvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBcInBhZ2VcIixcbiAgICB0b3VjaCA9IHRydWUsXG4gICAgcmVzZXRPblRvdWNoRW5kcyA9IGZhbHNlLFxuICAgIGluaXRpYWxWYWx1ZSA9IHsgeDogMCwgeTogMCB9LFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHggPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUueCk7XG4gIGNvbnN0IHkgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUueSk7XG4gIGNvbnN0IHNvdXJjZVR5cGUgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgbW91c2VIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHR5cGUgPT09IFwicGFnZVwiKSB7XG4gICAgICB4LnZhbHVlID0gZXZlbnQucGFnZVg7XG4gICAgICB5LnZhbHVlID0gZXZlbnQucGFnZVk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcImNsaWVudFwiKSB7XG4gICAgICB4LnZhbHVlID0gZXZlbnQuY2xpZW50WDtcbiAgICAgIHkudmFsdWUgPSBldmVudC5jbGllbnRZO1xuICAgIH1cbiAgICBzb3VyY2VUeXBlLnZhbHVlID0gXCJtb3VzZVwiO1xuICB9O1xuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICB4LnZhbHVlID0gaW5pdGlhbFZhbHVlLng7XG4gICAgeS52YWx1ZSA9IGluaXRpYWxWYWx1ZS55O1xuICB9O1xuICBjb25zdCB0b3VjaEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0b3VjaDIgPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgaWYgKHR5cGUgPT09IFwicGFnZVwiKSB7XG4gICAgICAgIHgudmFsdWUgPSB0b3VjaDIucGFnZVg7XG4gICAgICAgIHkudmFsdWUgPSB0b3VjaDIucGFnZVk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY2xpZW50XCIpIHtcbiAgICAgICAgeC52YWx1ZSA9IHRvdWNoMi5jbGllbnRYO1xuICAgICAgICB5LnZhbHVlID0gdG91Y2gyLmNsaWVudFk7XG4gICAgICB9XG4gICAgICBzb3VyY2VUeXBlLnZhbHVlID0gXCJ0b3VjaFwiO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbW91c2VIYW5kbGVyV3JhcHBlciA9IChldmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudEZpbHRlciA9PT0gdm9pZCAwID8gbW91c2VIYW5kbGVyKGV2ZW50KSA6IGV2ZW50RmlsdGVyKCgpID0+IG1vdXNlSGFuZGxlcihldmVudCksIHt9KTtcbiAgfTtcbiAgY29uc3QgdG91Y2hIYW5kbGVyV3JhcHBlciA9IChldmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudEZpbHRlciA9PT0gdm9pZCAwID8gdG91Y2hIYW5kbGVyKGV2ZW50KSA6IGV2ZW50RmlsdGVyKCgpID0+IHRvdWNoSGFuZGxlcihldmVudCksIHt9KTtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNlbW92ZVwiLCBtb3VzZUhhbmRsZXJXcmFwcGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZHJhZ292ZXJcIiwgbW91c2VIYW5kbGVyV3JhcHBlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIGlmICh0b3VjaCkge1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwidG91Y2hzdGFydFwiLCB0b3VjaEhhbmRsZXJXcmFwcGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaG1vdmVcIiwgdG91Y2hIYW5kbGVyV3JhcHBlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgaWYgKHJlc2V0T25Ub3VjaEVuZHMpXG4gICAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNoZW5kXCIsIHJlc2V0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHNvdXJjZVR5cGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTW91c2VJbkVsZW1lbnQodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGhhbmRsZU91dHNpZGUgPSB0cnVlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgeCwgeSwgc291cmNlVHlwZSB9ID0gdXNlTW91c2Uob3B0aW9ucyk7XG4gIGNvbnN0IHRhcmdldFJlZiA9IHZ1ZURlbWkucmVmKHRhcmdldCAhPSBudWxsID8gdGFyZ2V0IDogd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQuYm9keSk7XG4gIGNvbnN0IGVsZW1lbnRYID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRZID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRQb3NpdGlvblggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudFBvc2l0aW9uWSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBpc091dHNpZGUgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgbGV0IHN0b3AgPSAoKSA9PiB7XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICBzdG9wID0gdnVlRGVtaS53YXRjaChbdGFyZ2V0UmVmLCB4LCB5XSwgKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0UmVmKTtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGVmdCxcbiAgICAgICAgdG9wLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBlbGVtZW50UG9zaXRpb25YLnZhbHVlID0gbGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgIGVsZW1lbnRQb3NpdGlvblkudmFsdWUgPSB0b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICBlbGVtZW50SGVpZ2h0LnZhbHVlID0gaGVpZ2h0O1xuICAgICAgZWxlbWVudFdpZHRoLnZhbHVlID0gd2lkdGg7XG4gICAgICBjb25zdCBlbFggPSB4LnZhbHVlIC0gZWxlbWVudFBvc2l0aW9uWC52YWx1ZTtcbiAgICAgIGNvbnN0IGVsWSA9IHkudmFsdWUgLSBlbGVtZW50UG9zaXRpb25ZLnZhbHVlO1xuICAgICAgaXNPdXRzaWRlLnZhbHVlID0gd2lkdGggPT09IDAgfHwgaGVpZ2h0ID09PSAwIHx8IGVsWCA8IDAgfHwgZWxZIDwgMCB8fCBlbFggPiB3aWR0aCB8fCBlbFkgPiBoZWlnaHQ7XG4gICAgICBpZiAoaGFuZGxlT3V0c2lkZSB8fCAhaXNPdXRzaWRlLnZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnRYLnZhbHVlID0gZWxYO1xuICAgICAgICBlbGVtZW50WS52YWx1ZSA9IGVsWTtcbiAgICAgIH1cbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBzb3VyY2VUeXBlLFxuICAgIGVsZW1lbnRYLFxuICAgIGVsZW1lbnRZLFxuICAgIGVsZW1lbnRQb3NpdGlvblgsXG4gICAgZWxlbWVudFBvc2l0aW9uWSxcbiAgICBlbGVtZW50SGVpZ2h0LFxuICAgIGVsZW1lbnRXaWR0aCxcbiAgICBpc091dHNpZGUsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VNb3VzZVByZXNzZWQob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0b3VjaCA9IHRydWUsXG4gICAgZHJhZyA9IHRydWUsXG4gICAgaW5pdGlhbFZhbHVlID0gZmFsc2UsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJlc3NlZCA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHNvdXJjZVR5cGUgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgaWYgKCF3aW5kb3cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlc3NlZCxcbiAgICAgIHNvdXJjZVR5cGVcbiAgICB9O1xuICB9XG4gIGNvbnN0IG9uUHJlc3NlZCA9IChzcmNUeXBlKSA9PiAoKSA9PiB7XG4gICAgcHJlc3NlZC52YWx1ZSA9IHRydWU7XG4gICAgc291cmNlVHlwZS52YWx1ZSA9IHNyY1R5cGU7XG4gIH07XG4gIGNvbnN0IG9uUmVsZWFzZWQgPSAoKSA9PiB7XG4gICAgcHJlc3NlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHNvdXJjZVR5cGUudmFsdWUgPSBudWxsO1xuICB9O1xuICBjb25zdCB0YXJnZXQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHVucmVmRWxlbWVudChvcHRpb25zLnRhcmdldCkgfHwgd2luZG93KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwibW91c2Vkb3duXCIsIG9uUHJlc3NlZChcIm1vdXNlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNlbGVhdmVcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZXVwXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgaWYgKGRyYWcpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcmFnc3RhcnRcIiwgb25QcmVzc2VkKFwibW91c2VcIiksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJkcm9wXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJkcmFnZW5kXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICBpZiAodG91Y2gpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaHN0YXJ0XCIsIG9uUHJlc3NlZChcInRvdWNoXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwidG91Y2hlbmRcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNoY2FuY2VsXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByZXNzZWQsXG4gICAgc291cmNlVHlwZVxuICB9O1xufVxuXG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ2ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDYgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fb2JqUmVzdCQxID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkNi5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkNilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNihzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kNi5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gdXNlTXV0YXRpb25PYnNlcnZlcih0YXJnZXQsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IF9hLCBtdXRhdGlvbk9wdGlvbnMgPSBfX29ialJlc3QkMShfYSwgW1wid2luZG93XCJdKTtcbiAgbGV0IG9ic2VydmVyO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHdpbmRvdyAmJiBcIk11dGF0aW9uT2JzZXJ2ZXJcIiBpbiB3aW5kb3c7XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICBvYnNlcnZlciA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoaXNTdXBwb3J0ZWQgJiYgd2luZG93ICYmIGVsKSB7XG4gICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoZWwsIG11dGF0aW9uT3B0aW9ucyk7XG4gICAgfVxuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgc3RvcFdhdGNoKCk7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdG9wXG4gIH07XG59XG5cbmNvbnN0IHVzZU5hdmlnYXRvckxhbmd1YWdlID0gKG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG5hdmlnYXRvciA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lm5hdmlnYXRvcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKG5hdmlnYXRvciAmJiBcImxhbmd1YWdlXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgbGFuZ3VhZ2UgPSB2dWVEZW1pLnJlZihuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5sYW5ndWFnZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImxhbmd1YWdlY2hhbmdlXCIsICgpID0+IHtcbiAgICBpZiAobmF2aWdhdG9yKVxuICAgICAgbGFuZ3VhZ2UudmFsdWUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGxhbmd1YWdlXG4gIH07XG59O1xuXG5mdW5jdGlvbiB1c2VOZXR3b3JrKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG5hdmlnYXRvciA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lm5hdmlnYXRvcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKG5hdmlnYXRvciAmJiBcImNvbm5lY3Rpb25cIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCBpc09ubGluZSA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBjb25zdCBzYXZlRGF0YSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgb2ZmbGluZUF0ID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3Qgb25saW5lQXQgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBkb3dubGluayA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IGRvd25saW5rTWF4ID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgcnR0ID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgZWZmZWN0aXZlVHlwZSA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IHR5cGUgPSB2dWVEZW1pLnJlZihcInVua25vd25cIik7XG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBpc1N1cHBvcnRlZCAmJiBuYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgZnVuY3Rpb24gdXBkYXRlTmV0d29ya0luZm9ybWF0aW9uKCkge1xuICAgIGlmICghbmF2aWdhdG9yKVxuICAgICAgcmV0dXJuO1xuICAgIGlzT25saW5lLnZhbHVlID0gbmF2aWdhdG9yLm9uTGluZTtcbiAgICBvZmZsaW5lQXQudmFsdWUgPSBpc09ubGluZS52YWx1ZSA/IHZvaWQgMCA6IERhdGUubm93KCk7XG4gICAgb25saW5lQXQudmFsdWUgPSBpc09ubGluZS52YWx1ZSA/IERhdGUubm93KCkgOiB2b2lkIDA7XG4gICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgIGRvd25saW5rLnZhbHVlID0gY29ubmVjdGlvbi5kb3dubGluaztcbiAgICAgIGRvd25saW5rTWF4LnZhbHVlID0gY29ubmVjdGlvbi5kb3dubGlua01heDtcbiAgICAgIGVmZmVjdGl2ZVR5cGUudmFsdWUgPSBjb25uZWN0aW9uLmVmZmVjdGl2ZVR5cGU7XG4gICAgICBydHQudmFsdWUgPSBjb25uZWN0aW9uLnJ0dDtcbiAgICAgIHNhdmVEYXRhLnZhbHVlID0gY29ubmVjdGlvbi5zYXZlRGF0YTtcbiAgICAgIHR5cGUudmFsdWUgPSBjb25uZWN0aW9uLnR5cGU7XG4gICAgfVxuICB9XG4gIGlmICh3aW5kb3cpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJvZmZsaW5lXCIsICgpID0+IHtcbiAgICAgIGlzT25saW5lLnZhbHVlID0gZmFsc2U7XG4gICAgICBvZmZsaW5lQXQudmFsdWUgPSBEYXRlLm5vdygpO1xuICAgIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm9ubGluZVwiLCAoKSA9PiB7XG4gICAgICBpc09ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICBvbmxpbmVBdC52YWx1ZSA9IERhdGUubm93KCk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKGNvbm5lY3Rpb24pXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihjb25uZWN0aW9uLCBcImNoYW5nZVwiLCB1cGRhdGVOZXR3b3JrSW5mb3JtYXRpb24sIGZhbHNlKTtcbiAgdXBkYXRlTmV0d29ya0luZm9ybWF0aW9uKCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNPbmxpbmUsXG4gICAgc2F2ZURhdGEsXG4gICAgb2ZmbGluZUF0LFxuICAgIG9ubGluZUF0LFxuICAgIGRvd25saW5rLFxuICAgIGRvd25saW5rTWF4LFxuICAgIGVmZmVjdGl2ZVR5cGUsXG4gICAgcnR0LFxuICAgIHR5cGVcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ1ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ1ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDUuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ1KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ1KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ1KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDUuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDUoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VOb3cob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZSxcbiAgICBpbnRlcnZhbCA9IFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG5vdyA9IHZ1ZURlbWkucmVmKG5ldyBEYXRlKCkpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiBub3cudmFsdWUgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBjb250cm9scyA9IGludGVydmFsID09PSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiID8gdXNlUmFmRm4odXBkYXRlLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KSA6IHNoYXJlZC51c2VJbnRlcnZhbEZuKHVwZGF0ZSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkNSh7XG4gICAgICBub3dcbiAgICB9LCBjb250cm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vdztcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VPYmplY3RVcmwob2JqZWN0KSB7XG4gIGNvbnN0IHVybCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHJlbGVhc2UgPSAoKSA9PiB7XG4gICAgaWYgKHVybC52YWx1ZSlcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsLnZhbHVlKTtcbiAgICB1cmwudmFsdWUgPSB2b2lkIDA7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdnVlRGVtaS51bnJlZihvYmplY3QpLCAobmV3T2JqZWN0KSA9PiB7XG4gICAgcmVsZWFzZSgpO1xuICAgIGlmIChuZXdPYmplY3QpXG4gICAgICB1cmwudmFsdWUgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ld09iamVjdCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UocmVsZWFzZSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWRvbmx5KHVybCk7XG59XG5cbmZ1bmN0aW9uIHVzZU9mZnNldFBhZ2luYXRpb24ob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgdG90YWwgPSBJbmZpbml0eSxcbiAgICBwYWdlU2l6ZSA9IDEwLFxuICAgIHBhZ2UgPSAxLFxuICAgIG9uUGFnZUNoYW5nZSA9IHNoYXJlZC5ub29wLFxuICAgIG9uUGFnZVNpemVDaGFuZ2UgPSBzaGFyZWQubm9vcCxcbiAgICBvblBhZ2VDb3VudENoYW5nZSA9IHNoYXJlZC5ub29wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjdXJyZW50UGFnZVNpemUgPSB1c2VDbGFtcChwYWdlU2l6ZSwgMSwgSW5maW5pdHkpO1xuICBjb25zdCBwYWdlQ291bnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IE1hdGguY2VpbCh2dWVEZW1pLnVucmVmKHRvdGFsKSAvIHZ1ZURlbWkudW5yZWYoY3VycmVudFBhZ2VTaXplKSkpO1xuICBjb25zdCBjdXJyZW50UGFnZSA9IHVzZUNsYW1wKHBhZ2UsIDEsIHBhZ2VDb3VudCk7XG4gIGNvbnN0IGlzRmlyc3RQYWdlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZS52YWx1ZSA9PT0gMSk7XG4gIGNvbnN0IGlzTGFzdFBhZ2UgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGN1cnJlbnRQYWdlLnZhbHVlID09PSBwYWdlQ291bnQudmFsdWUpO1xuICBpZiAodnVlRGVtaS5pc1JlZihwYWdlKSlcbiAgICBzaGFyZWQuc3luY1JlZihwYWdlLCBjdXJyZW50UGFnZSk7XG4gIGlmICh2dWVEZW1pLmlzUmVmKHBhZ2VTaXplKSlcbiAgICBzaGFyZWQuc3luY1JlZihwYWdlU2l6ZSwgY3VycmVudFBhZ2VTaXplKTtcbiAgZnVuY3Rpb24gcHJldigpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZS0tO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgY3VycmVudFBhZ2UudmFsdWUrKztcbiAgfVxuICBjb25zdCByZXR1cm5WYWx1ZSA9IHtcbiAgICBjdXJyZW50UGFnZSxcbiAgICBjdXJyZW50UGFnZVNpemUsXG4gICAgcGFnZUNvdW50LFxuICAgIGlzRmlyc3RQYWdlLFxuICAgIGlzTGFzdFBhZ2UsXG4gICAgcHJldixcbiAgICBuZXh0XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goY3VycmVudFBhZ2UsICgpID0+IHtcbiAgICBvblBhZ2VDaGFuZ2UodnVlRGVtaS5yZWFjdGl2ZShyZXR1cm5WYWx1ZSkpO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChjdXJyZW50UGFnZVNpemUsICgpID0+IHtcbiAgICBvblBhZ2VTaXplQ2hhbmdlKHZ1ZURlbWkucmVhY3RpdmUocmV0dXJuVmFsdWUpKTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2gocGFnZUNvdW50LCAoKSA9PiB7XG4gICAgb25QYWdlQ291bnRDaGFuZ2UodnVlRGVtaS5yZWFjdGl2ZShyZXR1cm5WYWx1ZSkpO1xuICB9KTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5mdW5jdGlvbiB1c2VPbmxpbmUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaXNPbmxpbmUgfSA9IHVzZU5ldHdvcmsob3B0aW9ucyk7XG4gIHJldHVybiBpc09ubGluZTtcbn1cblxuZnVuY3Rpb24gdXNlUGFnZUxlYXZlKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzTGVmdCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGlmICghd2luZG93KVxuICAgICAgcmV0dXJuO1xuICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50O1xuICAgIGNvbnN0IGZyb20gPSBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGV2ZW50LnRvRWxlbWVudDtcbiAgICBpc0xlZnQudmFsdWUgPSAhZnJvbTtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNlb3V0XCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdy5kb2N1bWVudCwgXCJtb3VzZWxlYXZlXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdy5kb2N1bWVudCwgXCJtb3VzZWVudGVyXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gaXNMZWZ0O1xufVxuXG5mdW5jdGlvbiB1c2VQYXJhbGxheCh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZGV2aWNlT3JpZW50YXRpb25UaWx0QWRqdXN0ID0gKGkpID0+IGksXG4gICAgZGV2aWNlT3JpZW50YXRpb25Sb2xsQWRqdXN0ID0gKGkpID0+IGksXG4gICAgbW91c2VUaWx0QWRqdXN0ID0gKGkpID0+IGksXG4gICAgbW91c2VSb2xsQWRqdXN0ID0gKGkpID0+IGksXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgb3JpZW50YXRpb24gPSB2dWVEZW1pLnJlYWN0aXZlKHVzZURldmljZU9yaWVudGF0aW9uKHsgd2luZG93IH0pKTtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRYOiB4LFxuICAgIGVsZW1lbnRZOiB5LFxuICAgIGVsZW1lbnRXaWR0aDogd2lkdGgsXG4gICAgZWxlbWVudEhlaWdodDogaGVpZ2h0XG4gIH0gPSB1c2VNb3VzZUluRWxlbWVudCh0YXJnZXQsIHsgaGFuZGxlT3V0c2lkZTogZmFsc2UsIHdpbmRvdyB9KTtcbiAgY29uc3Qgc291cmNlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKG9yaWVudGF0aW9uLmlzU3VwcG9ydGVkICYmIChvcmllbnRhdGlvbi5hbHBoYSAhPSBudWxsICYmIG9yaWVudGF0aW9uLmFscGhhICE9PSAwIHx8IG9yaWVudGF0aW9uLmdhbW1hICE9IG51bGwgJiYgb3JpZW50YXRpb24uZ2FtbWEgIT09IDApKVxuICAgICAgcmV0dXJuIFwiZGV2aWNlT3JpZW50YXRpb25cIjtcbiAgICByZXR1cm4gXCJtb3VzZVwiO1xuICB9KTtcbiAgY29uc3Qgcm9sbCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChzb3VyY2UudmFsdWUgPT09IFwiZGV2aWNlT3JpZW50YXRpb25cIikge1xuICAgICAgY29uc3QgdmFsdWUgPSAtb3JpZW50YXRpb24uYmV0YSAvIDkwO1xuICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uUm9sbEFkanVzdCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gLSh5LnZhbHVlIC0gaGVpZ2h0LnZhbHVlIC8gMikgLyBoZWlnaHQudmFsdWU7XG4gICAgICByZXR1cm4gbW91c2VSb2xsQWRqdXN0KHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCB0aWx0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHNvdXJjZS52YWx1ZSA9PT0gXCJkZXZpY2VPcmllbnRhdGlvblwiKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9yaWVudGF0aW9uLmdhbW1hIC8gOTA7XG4gICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb25UaWx0QWRqdXN0KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWUgPSAoeC52YWx1ZSAtIHdpZHRoLnZhbHVlIC8gMikgLyB3aWR0aC52YWx1ZTtcbiAgICAgIHJldHVybiBtb3VzZVRpbHRBZGp1c3QodmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7IHJvbGwsIHRpbHQsIHNvdXJjZSB9O1xufVxuXG52YXIgX19kZWZQcm9wJDQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQxID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDQgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ0ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDQuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ0KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ0KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ0KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDQuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDQoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQxID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMShhLCBfX2dldE93blByb3BEZXNjcyQxKGIpKTtcbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcbiAgeDogMCxcbiAgeTogMCxcbiAgcG9pbnRlcklkOiAwLFxuICBwcmVzc3VyZTogMCxcbiAgdGlsdFg6IDAsXG4gIHRpbHRZOiAwLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICB0d2lzdDogMCxcbiAgcG9pbnRlclR5cGU6IG51bGxcbn07XG5jb25zdCBrZXlzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5rZXlzKGRlZmF1bHRTdGF0ZSk7XG5mdW5jdGlvbiB1c2VQb2ludGVyKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGFyZ2V0ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNJbnNpZGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYob3B0aW9ucy5pbml0aWFsVmFsdWUgfHwge30pO1xuICBPYmplY3QuYXNzaWduKHN0YXRlLnZhbHVlLCBkZWZhdWx0U3RhdGUsIHN0YXRlLnZhbHVlKTtcbiAgY29uc3QgaGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGlzSW5zaWRlLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucy5wb2ludGVyVHlwZXMgJiYgIW9wdGlvbnMucG9pbnRlclR5cGVzLmluY2x1ZGVzKGV2ZW50LnBvaW50ZXJUeXBlKSlcbiAgICAgIHJldHVybjtcbiAgICBzdGF0ZS52YWx1ZSA9IHNoYXJlZC5vYmplY3RQaWNrKGV2ZW50LCBrZXlzLCBmYWxzZSk7XG4gIH07XG4gIGlmICh0YXJnZXQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVyZG93blwiLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcm1vdmVcIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJsZWF2ZVwiLCAoKSA9PiBpc0luc2lkZS52YWx1ZSA9IGZhbHNlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkMShfX3NwcmVhZFZhbHVlcyQ0KHt9LCBzaGFyZWQudG9SZWZzKHN0YXRlKSksIHtcbiAgICBpc0luc2lkZVxuICB9KTtcbn1cblxuZXhwb3J0cy5Td2lwZURpcmVjdGlvbiA9IHZvaWQgMDtcbihmdW5jdGlvbihTd2lwZURpcmVjdGlvbjIpIHtcbiAgU3dpcGVEaXJlY3Rpb24yW1wiVVBcIl0gPSBcIlVQXCI7XG4gIFN3aXBlRGlyZWN0aW9uMltcIlJJR0hUXCJdID0gXCJSSUdIVFwiO1xuICBTd2lwZURpcmVjdGlvbjJbXCJET1dOXCJdID0gXCJET1dOXCI7XG4gIFN3aXBlRGlyZWN0aW9uMltcIkxFRlRcIl0gPSBcIkxFRlRcIjtcbiAgU3dpcGVEaXJlY3Rpb24yW1wiTk9ORVwiXSA9IFwiTk9ORVwiO1xufSkoZXhwb3J0cy5Td2lwZURpcmVjdGlvbiB8fCAoZXhwb3J0cy5Td2lwZURpcmVjdGlvbiA9IHt9KSk7XG5mdW5jdGlvbiB1c2VTd2lwZSh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGhyZXNob2xkID0gNTAsXG4gICAgb25Td2lwZSxcbiAgICBvblN3aXBlRW5kLFxuICAgIG9uU3dpcGVTdGFydCxcbiAgICBwYXNzaXZlID0gdHJ1ZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjb29yZHNTdGFydCA9IHZ1ZURlbWkucmVhY3RpdmUoeyB4OiAwLCB5OiAwIH0pO1xuICBjb25zdCBjb29yZHNFbmQgPSB2dWVEZW1pLnJlYWN0aXZlKHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgZGlmZlggPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGNvb3Jkc1N0YXJ0LnggLSBjb29yZHNFbmQueCk7XG4gIGNvbnN0IGRpZmZZID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjb29yZHNTdGFydC55IC0gY29vcmRzRW5kLnkpO1xuICBjb25zdCB7IG1heCwgYWJzIH0gPSBNYXRoO1xuICBjb25zdCBpc1RocmVzaG9sZEV4Y2VlZGVkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBtYXgoYWJzKGRpZmZYLnZhbHVlKSwgYWJzKGRpZmZZLnZhbHVlKSkgPj0gdGhyZXNob2xkKTtcbiAgY29uc3QgaXNTd2lwaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBkaXJlY3Rpb24gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIWlzVGhyZXNob2xkRXhjZWVkZWQudmFsdWUpXG4gICAgICByZXR1cm4gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5OT05FO1xuICAgIGlmIChhYnMoZGlmZlgudmFsdWUpID4gYWJzKGRpZmZZLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIGRpZmZYLnZhbHVlID4gMCA/IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uTEVGVCA6IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uUklHSFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWZmWS52YWx1ZSA+IDAgPyBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLlVQIDogZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5ET1dOO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGdldFRvdWNoRXZlbnRDb29yZHMgPSAoZSkgPT4gW2UudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WV07XG4gIGNvbnN0IHVwZGF0ZUNvb3Jkc1N0YXJ0ID0gKHgsIHkpID0+IHtcbiAgICBjb29yZHNTdGFydC54ID0geDtcbiAgICBjb29yZHNTdGFydC55ID0geTtcbiAgfTtcbiAgY29uc3QgdXBkYXRlQ29vcmRzRW5kID0gKHgsIHkpID0+IHtcbiAgICBjb29yZHNFbmQueCA9IHg7XG4gICAgY29vcmRzRW5kLnkgPSB5O1xuICB9O1xuICBsZXQgbGlzdGVuZXJPcHRpb25zO1xuICBjb25zdCBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCA9IGNoZWNrUGFzc2l2ZUV2ZW50U3VwcG9ydCh3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudCk7XG4gIGlmICghcGFzc2l2ZSlcbiAgICBsaXN0ZW5lck9wdGlvbnMgPSBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCA/IHsgcGFzc2l2ZTogZmFsc2UsIGNhcHR1cmU6IHRydWUgfSA6IHsgY2FwdHVyZTogdHJ1ZSB9O1xuICBlbHNlXG4gICAgbGlzdGVuZXJPcHRpb25zID0gaXNQYXNzaXZlRXZlbnRTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IHRydWUgfSA6IHsgY2FwdHVyZTogZmFsc2UgfTtcbiAgY29uc3Qgb25Ub3VjaEVuZCA9IChlKSA9PiB7XG4gICAgaWYgKGlzU3dpcGluZy52YWx1ZSlcbiAgICAgIG9uU3dpcGVFbmQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGVFbmQoZSwgZGlyZWN0aW9uLnZhbHVlKTtcbiAgICBpc1N3aXBpbmcudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgY29uc3Qgc3RvcHMgPSBbXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2hzdGFydFwiLCAoZSkgPT4ge1xuICAgICAgaWYgKGxpc3RlbmVyT3B0aW9ucy5jYXB0dXJlICYmICFsaXN0ZW5lck9wdGlvbnMucGFzc2l2ZSlcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgW3gsIHldID0gZ2V0VG91Y2hFdmVudENvb3JkcyhlKTtcbiAgICAgIHVwZGF0ZUNvb3Jkc1N0YXJ0KHgsIHkpO1xuICAgICAgdXBkYXRlQ29vcmRzRW5kKHgsIHkpO1xuICAgICAgb25Td2lwZVN0YXJ0ID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlU3RhcnQoZSk7XG4gICAgfSwgbGlzdGVuZXJPcHRpb25zKSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaG1vdmVcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGdldFRvdWNoRXZlbnRDb29yZHMoZSk7XG4gICAgICB1cGRhdGVDb29yZHNFbmQoeCwgeSk7XG4gICAgICBpZiAoIWlzU3dpcGluZy52YWx1ZSAmJiBpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgICBpc1N3aXBpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKGlzU3dpcGluZy52YWx1ZSlcbiAgICAgICAgb25Td2lwZSA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZShlKTtcbiAgICB9LCBsaXN0ZW5lck9wdGlvbnMpLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRvdWNoZW5kXCIsIG9uVG91Y2hFbmQsIGxpc3RlbmVyT3B0aW9ucyksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2hjYW5jZWxcIiwgb25Ub3VjaEVuZCwgbGlzdGVuZXJPcHRpb25zKVxuICBdO1xuICBjb25zdCBzdG9wID0gKCkgPT4gc3RvcHMuZm9yRWFjaCgocykgPT4gcygpKTtcbiAgcmV0dXJuIHtcbiAgICBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCxcbiAgICBpc1N3aXBpbmcsXG4gICAgZGlyZWN0aW9uLFxuICAgIGNvb3Jkc1N0YXJ0LFxuICAgIGNvb3Jkc0VuZCxcbiAgICBsZW5ndGhYOiBkaWZmWCxcbiAgICBsZW5ndGhZOiBkaWZmWSxcbiAgICBzdG9wXG4gIH07XG59XG5mdW5jdGlvbiBjaGVja1Bhc3NpdmVFdmVudFN1cHBvcnQoZG9jdW1lbnQpIHtcbiAgaWYgKCFkb2N1bWVudClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGxldCBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbiAgY29uc3Qgb3B0aW9uc0Jsb2NrID0ge1xuICAgIGdldCBwYXNzaXZlKCkge1xuICAgICAgc3VwcG9ydHNQYXNzaXZlID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ4XCIsIHNoYXJlZC5ub29wLCBvcHRpb25zQmxvY2spO1xuICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwieFwiLCBzaGFyZWQubm9vcCk7XG4gIHJldHVybiBzdXBwb3J0c1Bhc3NpdmU7XG59XG5cbmZ1bmN0aW9uIHVzZVBvaW50ZXJTd2lwZSh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB0YXJnZXRSZWYgPSB2dWVEZW1pLnJlZih0YXJnZXQpO1xuICBjb25zdCB7XG4gICAgdGhyZXNob2xkID0gNTAsXG4gICAgb25Td2lwZSxcbiAgICBvblN3aXBlRW5kLFxuICAgIG9uU3dpcGVTdGFydFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcG9zU3RhcnQgPSB2dWVEZW1pLnJlYWN0aXZlKHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgdXBkYXRlUG9zU3RhcnQgPSAoeCwgeSkgPT4ge1xuICAgIHBvc1N0YXJ0LnggPSB4O1xuICAgIHBvc1N0YXJ0LnkgPSB5O1xuICB9O1xuICBjb25zdCBwb3NFbmQgPSB2dWVEZW1pLnJlYWN0aXZlKHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgdXBkYXRlUG9zRW5kID0gKHgsIHkpID0+IHtcbiAgICBwb3NFbmQueCA9IHg7XG4gICAgcG9zRW5kLnkgPSB5O1xuICB9O1xuICBjb25zdCBkaXN0YW5jZVggPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHBvc1N0YXJ0LnggLSBwb3NFbmQueCk7XG4gIGNvbnN0IGRpc3RhbmNlWSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcG9zU3RhcnQueSAtIHBvc0VuZC55KTtcbiAgY29uc3QgeyBtYXgsIGFicyB9ID0gTWF0aDtcbiAgY29uc3QgaXNUaHJlc2hvbGRFeGNlZWRlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gbWF4KGFicyhkaXN0YW5jZVgudmFsdWUpLCBhYnMoZGlzdGFuY2VZLnZhbHVlKSkgPj0gdGhyZXNob2xkKTtcbiAgY29uc3QgaXNTd2lwaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBpc1BvaW50ZXJEb3duID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBkaXJlY3Rpb24gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIWlzVGhyZXNob2xkRXhjZWVkZWQudmFsdWUpXG4gICAgICByZXR1cm4gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5OT05FO1xuICAgIGlmIChhYnMoZGlzdGFuY2VYLnZhbHVlKSA+IGFicyhkaXN0YW5jZVkudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGlzdGFuY2VYLnZhbHVlID4gMCA/IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uTEVGVCA6IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uUklHSFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaXN0YW5jZVkudmFsdWUgPiAwID8gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5VUCA6IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uRE9XTjtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBmaWx0ZXJFdmVudCA9IChlKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMucG9pbnRlclR5cGVzKVxuICAgICAgcmV0dXJuIG9wdGlvbnMucG9pbnRlclR5cGVzLmluY2x1ZGVzKGUucG9pbnRlclR5cGUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBjb25zdCBzdG9wcyA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVyZG93blwiLCAoZSkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlzUG9pbnRlckRvd24udmFsdWUgPSB0cnVlO1xuICAgICAgKF9iID0gKF9hID0gdGFyZ2V0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3R5bGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5zZXRQcm9wZXJ0eShcInRvdWNoLWFjdGlvblwiLCBcIm5vbmVcIik7XG4gICAgICBjb25zdCBldmVudFRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgZXZlbnRUYXJnZXQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTtcbiAgICAgIGNvbnN0IHsgY2xpZW50WDogeCwgY2xpZW50WTogeSB9ID0gZTtcbiAgICAgIHVwZGF0ZVBvc1N0YXJ0KHgsIHkpO1xuICAgICAgdXBkYXRlUG9zRW5kKHgsIHkpO1xuICAgICAgb25Td2lwZVN0YXJ0ID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlU3RhcnQoZSk7XG4gICAgfSksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcm1vdmVcIiwgKGUpID0+IHtcbiAgICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghaXNQb2ludGVyRG93bi52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgeyBjbGllbnRYOiB4LCBjbGllbnRZOiB5IH0gPSBlO1xuICAgICAgdXBkYXRlUG9zRW5kKHgsIHkpO1xuICAgICAgaWYgKCFpc1N3aXBpbmcudmFsdWUgJiYgaXNUaHJlc2hvbGRFeGNlZWRlZC52YWx1ZSlcbiAgICAgICAgaXNTd2lwaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGlmIChpc1N3aXBpbmcudmFsdWUpXG4gICAgICAgIG9uU3dpcGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGUoZSk7XG4gICAgfSksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcnVwXCIsIChlKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzU3dpcGluZy52YWx1ZSlcbiAgICAgICAgb25Td2lwZUVuZCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZUVuZChlLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgICAgaXNQb2ludGVyRG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgaXNTd2lwaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAoX2IgPSAoX2EgPSB0YXJnZXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdHlsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnNldFByb3BlcnR5KFwidG91Y2gtYWN0aW9uXCIsIFwiaW5pdGlhbFwiKTtcbiAgICB9KVxuICBdO1xuICBjb25zdCBzdG9wID0gKCkgPT4gc3RvcHMuZm9yRWFjaCgocykgPT4gcygpKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N3aXBpbmc6IHZ1ZURlbWkucmVhZG9ubHkoaXNTd2lwaW5nKSxcbiAgICBkaXJlY3Rpb246IHZ1ZURlbWkucmVhZG9ubHkoZGlyZWN0aW9uKSxcbiAgICBwb3NTdGFydDogdnVlRGVtaS5yZWFkb25seShwb3NTdGFydCksXG4gICAgcG9zRW5kOiB2dWVEZW1pLnJlYWRvbmx5KHBvc0VuZCksXG4gICAgZGlzdGFuY2VYLFxuICAgIGRpc3RhbmNlWSxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVByZWZlcnJlZENvbG9yU2NoZW1lKG9wdGlvbnMpIHtcbiAgY29uc3QgaXNMaWdodCA9IHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KVwiLCBvcHRpb25zKTtcbiAgY29uc3QgaXNEYXJrID0gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIiwgb3B0aW9ucyk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaXNEYXJrLnZhbHVlKVxuICAgICAgcmV0dXJuIFwiZGFya1wiO1xuICAgIGlmIChpc0xpZ2h0LnZhbHVlKVxuICAgICAgcmV0dXJuIFwibGlnaHRcIjtcbiAgICByZXR1cm4gXCJuby1wcmVmZXJlbmNlXCI7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VQcmVmZXJyZWRMYW5ndWFnZXMob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgaWYgKCF3aW5kb3cpXG4gICAgcmV0dXJuIHZ1ZURlbWkucmVmKFtcImVuXCJdKTtcbiAgY29uc3QgbmF2aWdhdG9yID0gd2luZG93Lm5hdmlnYXRvcjtcbiAgY29uc3QgdmFsdWUgPSB2dWVEZW1pLnJlZihuYXZpZ2F0b3IubGFuZ3VhZ2VzKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibGFuZ3VhZ2VjaGFuZ2VcIiwgKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmF2aWdhdG9yLmxhbmd1YWdlcztcbiAgfSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuY29uc3QgdXNlU2NyZWVuT3JpZW50YXRpb24gPSAob3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9ICEhKHdpbmRvdyAmJiBcInNjcmVlblwiIGluIHdpbmRvdyAmJiBcIm9yaWVudGF0aW9uXCIgaW4gd2luZG93LnNjcmVlbik7XG4gIGNvbnN0IHNjcmVlbk9yaWVudGF0aW9uID0gaXNTdXBwb3J0ZWQgPyB3aW5kb3cuc2NyZWVuLm9yaWVudGF0aW9uIDoge307XG4gIGNvbnN0IG9yaWVudGF0aW9uID0gdnVlRGVtaS5yZWYoc2NyZWVuT3JpZW50YXRpb24udHlwZSk7XG4gIGNvbnN0IGFuZ2xlID0gdnVlRGVtaS5yZWYoc2NyZWVuT3JpZW50YXRpb24uYW5nbGUgfHwgMCk7XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm9yaWVudGF0aW9uY2hhbmdlXCIsICgpID0+IHtcbiAgICAgIG9yaWVudGF0aW9uLnZhbHVlID0gc2NyZWVuT3JpZW50YXRpb24udHlwZTtcbiAgICAgIGFuZ2xlLnZhbHVlID0gc2NyZWVuT3JpZW50YXRpb24uYW5nbGU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbG9ja09yaWVudGF0aW9uID0gKHR5cGUpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWRcIikpO1xuICAgIHJldHVybiBzY3JlZW5PcmllbnRhdGlvbi5sb2NrKHR5cGUpO1xuICB9O1xuICBjb25zdCB1bmxvY2tPcmllbnRhdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpXG4gICAgICBzY3JlZW5PcmllbnRhdGlvbi51bmxvY2soKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBvcmllbnRhdGlvbixcbiAgICBhbmdsZSxcbiAgICBsb2NrT3JpZW50YXRpb24sXG4gICAgdW5sb2NrT3JpZW50YXRpb25cbiAgfTtcbn07XG5cbmNvbnN0IHRvcFZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS10b3BcIjtcbmNvbnN0IHJpZ2h0VmFyTmFtZSA9IFwiLS12dWV1c2Utc2FmZS1hcmVhLXJpZ2h0XCI7XG5jb25zdCBib3R0b21WYXJOYW1lID0gXCItLXZ1ZXVzZS1zYWZlLWFyZWEtYm90dG9tXCI7XG5jb25zdCBsZWZ0VmFyTmFtZSA9IFwiLS12dWV1c2Utc2FmZS1hcmVhLWxlZnRcIjtcbmZ1bmN0aW9uIHVzZVNjcmVlblNhZmVBcmVhKCkge1xuICBjb25zdCB0b3AgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgcmlnaHQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgYm90dG9tID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IGxlZnQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgaWYgKHNoYXJlZC5pc0NsaWVudCkge1xuICAgIGNvbnN0IHRvcENzc1ZhciA9IHVzZUNzc1Zhcih0b3BWYXJOYW1lKTtcbiAgICBjb25zdCByaWdodENzc1ZhciA9IHVzZUNzc1ZhcihyaWdodFZhck5hbWUpO1xuICAgIGNvbnN0IGJvdHRvbUNzc1ZhciA9IHVzZUNzc1Zhcihib3R0b21WYXJOYW1lKTtcbiAgICBjb25zdCBsZWZ0Q3NzVmFyID0gdXNlQ3NzVmFyKGxlZnRWYXJOYW1lKTtcbiAgICB0b3BDc3NWYXIudmFsdWUgPSBcImVudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwcHgpXCI7XG4gICAgcmlnaHRDc3NWYXIudmFsdWUgPSBcImVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsIDBweClcIjtcbiAgICBib3R0b21Dc3NWYXIudmFsdWUgPSBcImVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpXCI7XG4gICAgbGVmdENzc1Zhci52YWx1ZSA9IFwiZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0LCAwcHgpXCI7XG4gICAgdXBkYXRlKCk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBzaGFyZWQudXNlRGVib3VuY2VGbih1cGRhdGUpKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgdG9wLnZhbHVlID0gZ2V0VmFsdWUodG9wVmFyTmFtZSk7XG4gICAgcmlnaHQudmFsdWUgPSBnZXRWYWx1ZShyaWdodFZhck5hbWUpO1xuICAgIGJvdHRvbS52YWx1ZSA9IGdldFZhbHVlKGJvdHRvbVZhck5hbWUpO1xuICAgIGxlZnQudmFsdWUgPSBnZXRWYWx1ZShsZWZ0VmFyTmFtZSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0b3AsXG4gICAgcmlnaHQsXG4gICAgYm90dG9tLFxuICAgIGxlZnQsXG4gICAgdXBkYXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRWYWx1ZShwb3NpdGlvbikge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUocG9zaXRpb24pO1xufVxuXG5mdW5jdGlvbiB1c2VTY3JpcHRUYWcoc3JjLCBvbkxvYWRlZCA9IHNoYXJlZC5ub29wLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgbWFudWFsID0gZmFsc2UsXG4gICAgdHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXG4gICAgYXN5bmMgPSB0cnVlLFxuICAgIGNyb3NzT3JpZ2luLFxuICAgIHJlZmVycmVyUG9saWN5LFxuICAgIG5vTW9kdWxlLFxuICAgIGRlZmVyLFxuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIGF0dHJzID0ge31cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNjcmlwdFRhZyA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBsZXQgX3Byb21pc2UgPSBudWxsO1xuICBjb25zdCBsb2FkU2NyaXB0ID0gKHdhaXRGb3JTY3JpcHRMb2FkKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZVdpdGhFbGVtZW50ID0gKGVsMikgPT4ge1xuICAgICAgc2NyaXB0VGFnLnZhbHVlID0gZWwyO1xuICAgICAgcmVzb2x2ZShlbDIpO1xuICAgICAgcmV0dXJuIGVsMjtcbiAgICB9O1xuICAgIGlmICghZG9jdW1lbnQpIHtcbiAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgc2hvdWxkQXBwZW5kID0gZmFsc2U7XG4gICAgbGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuICAgIGlmICghZWwpIHtcbiAgICAgIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgIGVsLnR5cGUgPSB0eXBlO1xuICAgICAgZWwuYXN5bmMgPSBhc3luYztcbiAgICAgIGVsLnNyYyA9IHZ1ZURlbWkudW5yZWYoc3JjKTtcbiAgICAgIGlmIChkZWZlcilcbiAgICAgICAgZWwuZGVmZXIgPSBkZWZlcjtcbiAgICAgIGlmIChjcm9zc09yaWdpbilcbiAgICAgICAgZWwuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICAgIGlmIChub01vZHVsZSlcbiAgICAgICAgZWwubm9Nb2R1bGUgPSBub01vZHVsZTtcbiAgICAgIGlmIChyZWZlcnJlclBvbGljeSlcbiAgICAgICAgZWwucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJzKS5mb3JFYWNoKChbbmFtZSwgdmFsdWVdKSA9PiBlbCA9PSBudWxsID8gdm9pZCAwIDogZWwuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7XG4gICAgICBzaG91bGRBcHBlbmQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZWwuaGFzQXR0cmlidXRlKFwiZGF0YS1sb2FkZWRcIikpIHtcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gICAgfVxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXZlbnQpID0+IHJlamVjdChldmVudCkpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoZXZlbnQpID0+IHJlamVjdChldmVudCkpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShcImRhdGEtbG9hZGVkXCIsIFwidHJ1ZVwiKTtcbiAgICAgIG9uTG9hZGVkKGVsKTtcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gICAgfSk7XG4gICAgaWYgKHNob3VsZEFwcGVuZClcbiAgICAgIGVsID0gZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbCk7XG4gICAgaWYgKCF3YWl0Rm9yU2NyaXB0TG9hZClcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gIH0pO1xuICBjb25zdCBsb2FkID0gKHdhaXRGb3JTY3JpcHRMb2FkID0gdHJ1ZSkgPT4ge1xuICAgIGlmICghX3Byb21pc2UpXG4gICAgICBfcHJvbWlzZSA9IGxvYWRTY3JpcHQod2FpdEZvclNjcmlwdExvYWQpO1xuICAgIHJldHVybiBfcHJvbWlzZTtcbiAgfTtcbiAgY29uc3QgdW5sb2FkID0gKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgX3Byb21pc2UgPSBudWxsO1xuICAgIGlmIChzY3JpcHRUYWcudmFsdWUpXG4gICAgICBzY3JpcHRUYWcudmFsdWUgPSBudWxsO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuICAgIGlmIChlbClcbiAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoZWwpO1xuICB9O1xuICBpZiAoaW1tZWRpYXRlICYmICFtYW51YWwpXG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZChsb2FkKTtcbiAgaWYgKCFtYW51YWwpXG4gICAgc2hhcmVkLnRyeU9uVW5tb3VudGVkKHVubG9hZCk7XG4gIHJldHVybiB7IHNjcmlwdFRhZywgbG9hZCwgdW5sb2FkIH07XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KHJhd0V2ZW50KSB7XG4gIGNvbnN0IGUgPSByYXdFdmVudCB8fCB3aW5kb3cuZXZlbnQ7XG4gIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKGUucHJldmVudERlZmF1bHQpXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB1c2VTY3JvbGxMb2NrKGVsZW1lbnQsIGluaXRpYWxTdGF0ZSA9IGZhbHNlKSB7XG4gIGNvbnN0IGlzTG9ja2VkID0gdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgbGV0IHN0b3BUb3VjaE1vdmVMaXN0ZW5lciA9IG51bGw7XG4gIGxldCBpbml0aWFsT3ZlcmZsb3c7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdnVlRGVtaS51bnJlZihlbGVtZW50KSwgKGVsKSA9PiB7XG4gICAgaWYgKGVsKSB7XG4gICAgICBjb25zdCBlbGUgPSBlbDtcbiAgICAgIGluaXRpYWxPdmVyZmxvdyA9IGVsZS5zdHlsZS5vdmVyZmxvdztcbiAgICAgIGlmIChpc0xvY2tlZC52YWx1ZSlcbiAgICAgICAgZWxlLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICB9XG4gIH0sIHtcbiAgICBpbW1lZGlhdGU6IHRydWVcbiAgfSk7XG4gIGNvbnN0IGxvY2sgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlID0gdnVlRGVtaS51bnJlZihlbGVtZW50KTtcbiAgICBpZiAoIWVsZSB8fCBpc0xvY2tlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoc2hhcmVkLmlzSU9TKSB7XG4gICAgICBzdG9wVG91Y2hNb3ZlTGlzdGVuZXIgPSB1c2VFdmVudExpc3RlbmVyKGVsZSwgXCJ0b3VjaG1vdmVcIiwgcHJldmVudERlZmF1bHQsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgfVxuICAgIGVsZS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgaXNMb2NrZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuICBjb25zdCB1bmxvY2sgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlID0gdnVlRGVtaS51bnJlZihlbGVtZW50KTtcbiAgICBpZiAoIWVsZSB8fCAhaXNMb2NrZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc2hhcmVkLmlzSU9TICYmIChzdG9wVG91Y2hNb3ZlTGlzdGVuZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3BUb3VjaE1vdmVMaXN0ZW5lcigpKTtcbiAgICBlbGUuc3R5bGUub3ZlcmZsb3cgPSBpbml0aWFsT3ZlcmZsb3c7XG4gICAgaXNMb2NrZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHVubG9jayk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gaXNMb2NrZWQudmFsdWU7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgaWYgKHYpXG4gICAgICAgIGxvY2soKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdW5sb2NrKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlU2Vzc2lvblN0b3JhZ2Uoa2V5LCBpbml0aWFsVmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIHJldHVybiB1c2VTdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5zZXNzaW9uU3RvcmFnZSwgb3B0aW9ucyk7XG59XG5cbnZhciBfX2RlZlByb3AkMyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDMgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDMob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQzLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQzLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQzKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlU2hhcmUoc2hhcmVPcHRpb25zID0ge30sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IF9uYXZpZ2F0b3IgPSBuYXZpZ2F0b3I7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gX25hdmlnYXRvciAmJiBcImNhblNoYXJlXCIgaW4gX25hdmlnYXRvcjtcbiAgY29uc3Qgc2hhcmUgPSBhc3luYyAob3ZlcnJpZGVPcHRpb25zID0ge30pID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBfX3NwcmVhZFZhbHVlcyQzKF9fc3ByZWFkVmFsdWVzJDMoe30sIHZ1ZURlbWkudW5yZWYoc2hhcmVPcHRpb25zKSksIHZ1ZURlbWkudW5yZWYob3ZlcnJpZGVPcHRpb25zKSk7XG4gICAgICBsZXQgZ3JhbnRlZCA9IHRydWU7XG4gICAgICBpZiAoZGF0YS5maWxlcyAmJiBfbmF2aWdhdG9yLmNhblNoYXJlKVxuICAgICAgICBncmFudGVkID0gX25hdmlnYXRvci5jYW5TaGFyZSh7IGZpbGVzOiBkYXRhLmZpbGVzIH0pO1xuICAgICAgaWYgKGdyYW50ZWQpXG4gICAgICAgIHJldHVybiBfbmF2aWdhdG9yLnNoYXJlKGRhdGEpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzaGFyZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTcGVlY2hSZWNvZ25pdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGludGVyaW1SZXN1bHRzID0gdHJ1ZSxcbiAgICBjb250aW51b3VzID0gdHJ1ZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsYW5nID0gdnVlRGVtaS5yZWYob3B0aW9ucy5sYW5nIHx8IFwiZW4tVVNcIik7XG4gIGNvbnN0IGlzTGlzdGVuaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBpc0ZpbmFsID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCByZXN1bHQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnNoYWxsb3dSZWYodm9pZCAwKTtcbiAgY29uc3QgdG9nZ2xlID0gKHZhbHVlID0gIWlzTGlzdGVuaW5nLnZhbHVlKSA9PiB7XG4gICAgaXNMaXN0ZW5pbmcudmFsdWUgPSB2YWx1ZTtcbiAgfTtcbiAgY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gICAgaXNMaXN0ZW5pbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGlzTGlzdGVuaW5nLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uID0gd2luZG93ICYmICh3aW5kb3cuU3BlZWNoUmVjb2duaXRpb24gfHwgd2luZG93LndlYmtpdFNwZWVjaFJlY29nbml0aW9uKTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKFNwZWVjaFJlY29nbml0aW9uKTtcbiAgbGV0IHJlY29nbml0aW9uO1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICByZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpO1xuICAgIHJlY29nbml0aW9uLmNvbnRpbnVvdXMgPSBjb250aW51b3VzO1xuICAgIHJlY29nbml0aW9uLmludGVyaW1SZXN1bHRzID0gaW50ZXJpbVJlc3VsdHM7XG4gICAgcmVjb2duaXRpb24ubGFuZyA9IHZ1ZURlbWkudW5yZWYobGFuZyk7XG4gICAgcmVjb2duaXRpb24ub25zdGFydCA9ICgpID0+IHtcbiAgICAgIGlzRmluYWwudmFsdWUgPSBmYWxzZTtcbiAgICB9O1xuICAgIHZ1ZURlbWkud2F0Y2gobGFuZywgKGxhbmcyKSA9PiB7XG4gICAgICBpZiAocmVjb2duaXRpb24gJiYgIWlzTGlzdGVuaW5nLnZhbHVlKVxuICAgICAgICByZWNvZ25pdGlvbi5sYW5nID0gbGFuZzI7XG4gICAgfSk7XG4gICAgcmVjb2duaXRpb24ub25yZXN1bHQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBBcnJheS5mcm9tKGV2ZW50LnJlc3VsdHMpLm1hcCgocmVzdWx0MikgPT4ge1xuICAgICAgICBpc0ZpbmFsLnZhbHVlID0gcmVzdWx0Mi5pc0ZpbmFsO1xuICAgICAgICByZXR1cm4gcmVzdWx0MlswXTtcbiAgICAgIH0pLm1hcCgocmVzdWx0MikgPT4gcmVzdWx0Mi50cmFuc2NyaXB0KS5qb2luKFwiXCIpO1xuICAgICAgcmVzdWx0LnZhbHVlID0gdHJhbnNjcmlwdDtcbiAgICAgIGVycm9yLnZhbHVlID0gdm9pZCAwO1xuICAgIH07XG4gICAgcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4ge1xuICAgICAgZXJyb3IudmFsdWUgPSBldmVudDtcbiAgICB9O1xuICAgIHJlY29nbml0aW9uLm9uZW5kID0gKCkgPT4ge1xuICAgICAgaXNMaXN0ZW5pbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHJlY29nbml0aW9uLmxhbmcgPSB2dWVEZW1pLnVucmVmKGxhbmcpO1xuICAgIH07XG4gICAgdnVlRGVtaS53YXRjaChpc0xpc3RlbmluZywgKCkgPT4ge1xuICAgICAgaWYgKGlzTGlzdGVuaW5nLnZhbHVlKVxuICAgICAgICByZWNvZ25pdGlvbi5zdGFydCgpO1xuICAgICAgZWxzZVxuICAgICAgICByZWNvZ25pdGlvbi5zdG9wKCk7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IGZhbHNlO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0xpc3RlbmluZyxcbiAgICBpc0ZpbmFsLFxuICAgIHJlY29nbml0aW9uLFxuICAgIHJlc3VsdCxcbiAgICBlcnJvcixcbiAgICB0b2dnbGUsXG4gICAgc3RhcnQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTcGVlY2hTeW50aGVzaXModGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IHtcbiAgICBwaXRjaCA9IDEsXG4gICAgcmF0ZSA9IDEsXG4gICAgdm9sdW1lID0gMSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzeW50aCA9IHdpbmRvdyAmJiB3aW5kb3cuc3BlZWNoU3ludGhlc2lzO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4oc3ludGgpO1xuICBjb25zdCBpc1BsYXlpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiaW5pdFwiKTtcbiAgY29uc3Qgdm9pY2VJbmZvID0ge1xuICAgIGxhbmc6ICgoX2EgPSBvcHRpb25zLnZvaWNlKSA9PSBudWxsID8gdm9pZCAwIDogX2EubGFuZykgfHwgXCJkZWZhdWx0XCIsXG4gICAgbmFtZTogKChfYiA9IG9wdGlvbnMudm9pY2UpID09IG51bGwgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCBcIlwiXG4gIH07XG4gIGNvbnN0IHNwb2tlblRleHQgPSB2dWVEZW1pLnJlZih0ZXh0IHx8IFwiXCIpO1xuICBjb25zdCBsYW5nID0gdnVlRGVtaS5yZWYob3B0aW9ucy5sYW5nIHx8IFwiZW4tVVNcIik7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKHZvaWQgMCk7XG4gIGNvbnN0IHRvZ2dsZSA9ICh2YWx1ZSA9ICFpc1BsYXlpbmcudmFsdWUpID0+IHtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSB2YWx1ZTtcbiAgfTtcbiAgY29uc3QgYmluZEV2ZW50c0ZvclV0dGVyYW5jZSA9ICh1dHRlcmFuY2UyKSA9PiB7XG4gICAgdXR0ZXJhbmNlMi5sYW5nID0gdnVlRGVtaS51bnJlZihsYW5nKTtcbiAgICBvcHRpb25zLnZvaWNlICYmICh1dHRlcmFuY2UyLnZvaWNlID0gb3B0aW9ucy52b2ljZSk7XG4gICAgdXR0ZXJhbmNlMi5waXRjaCA9IHBpdGNoO1xuICAgIHV0dGVyYW5jZTIucmF0ZSA9IHJhdGU7XG4gICAgdXR0ZXJhbmNlMi52b2x1bWUgPSB2b2x1bWU7XG4gICAgdXR0ZXJhbmNlMi5vbnN0YXJ0ID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwicGxheVwiO1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbnBhdXNlID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcInBhdXNlXCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9ucmVzdW1lID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwicGxheVwiO1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbmVuZCA9ICgpID0+IHtcbiAgICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJlbmRcIjtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25lcnJvciA9IChldmVudCkgPT4ge1xuICAgICAgZXJyb3IudmFsdWUgPSBldmVudDtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25lbmQgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHV0dGVyYW5jZTIubGFuZyA9IHZ1ZURlbWkudW5yZWYobGFuZyk7XG4gICAgfTtcbiAgfTtcbiAgY29uc3QgdXR0ZXJhbmNlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgc3RhdHVzLnZhbHVlID0gXCJpbml0XCI7XG4gICAgY29uc3QgbmV3VXR0ZXJhbmNlID0gbmV3IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShzcG9rZW5UZXh0LnZhbHVlKTtcbiAgICBiaW5kRXZlbnRzRm9yVXR0ZXJhbmNlKG5ld1V0dGVyYW5jZSk7XG4gICAgcmV0dXJuIG5ld1V0dGVyYW5jZTtcbiAgfSk7XG4gIGNvbnN0IHNwZWFrID0gKCkgPT4ge1xuICAgIHN5bnRoLmNhbmNlbCgpO1xuICAgIHV0dGVyYW5jZSAmJiBzeW50aC5zcGVhayh1dHRlcmFuY2UudmFsdWUpO1xuICB9O1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICBiaW5kRXZlbnRzRm9yVXR0ZXJhbmNlKHV0dGVyYW5jZS52YWx1ZSk7XG4gICAgdnVlRGVtaS53YXRjaChsYW5nLCAobGFuZzIpID0+IHtcbiAgICAgIGlmICh1dHRlcmFuY2UudmFsdWUgJiYgIWlzUGxheWluZy52YWx1ZSlcbiAgICAgICAgdXR0ZXJhbmNlLnZhbHVlLmxhbmcgPSBsYW5nMjtcbiAgICB9KTtcbiAgICB2dWVEZW1pLndhdGNoKGlzUGxheWluZywgKCkgPT4ge1xuICAgICAgaWYgKGlzUGxheWluZy52YWx1ZSlcbiAgICAgICAgc3ludGgucmVzdW1lKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHN5bnRoLnBhdXNlKCk7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNQbGF5aW5nLFxuICAgIHN0YXR1cyxcbiAgICB2b2ljZUluZm8sXG4gICAgdXR0ZXJhbmNlLFxuICAgIGVycm9yLFxuICAgIHRvZ2dsZSxcbiAgICBzcGVha1xuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTdGVwcGVyKHN0ZXBzLCBpbml0aWFsU3RlcCkge1xuICBjb25zdCBzdGVwc1JlZiA9IHZ1ZURlbWkucmVmKHN0ZXBzKTtcbiAgY29uc3Qgc3RlcE5hbWVzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBBcnJheS5pc0FycmF5KHN0ZXBzUmVmLnZhbHVlKSA/IHN0ZXBzUmVmLnZhbHVlIDogT2JqZWN0LmtleXMoc3RlcHNSZWYudmFsdWUpKTtcbiAgY29uc3QgaW5kZXggPSB2dWVEZW1pLnJlZihzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihpbml0aWFsU3RlcCAhPSBudWxsID8gaW5pdGlhbFN0ZXAgOiBzdGVwTmFtZXMudmFsdWVbMF0pKTtcbiAgY29uc3QgY3VycmVudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gYXQoaW5kZXgudmFsdWUpKTtcbiAgY29uc3QgaXNGaXJzdCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gaW5kZXgudmFsdWUgPT09IDApO1xuICBjb25zdCBpc0xhc3QgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGluZGV4LnZhbHVlID09PSBzdGVwTmFtZXMudmFsdWUubGVuZ3RoIC0gMSk7XG4gIGNvbnN0IG5leHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN0ZXBOYW1lcy52YWx1ZVtpbmRleC52YWx1ZSArIDFdKTtcbiAgY29uc3QgcHJldmlvdXMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN0ZXBOYW1lcy52YWx1ZVtpbmRleC52YWx1ZSAtIDFdKTtcbiAgZnVuY3Rpb24gYXQoaW5kZXgyKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3RlcHNSZWYudmFsdWUpKVxuICAgICAgcmV0dXJuIHN0ZXBzUmVmLnZhbHVlW2luZGV4Ml07XG4gICAgcmV0dXJuIHN0ZXBzUmVmLnZhbHVlW3N0ZXBOYW1lcy52YWx1ZVtpbmRleDJdXTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoc3RlcCkge1xuICAgIGlmICghc3RlcE5hbWVzLnZhbHVlLmluY2x1ZGVzKHN0ZXApKVxuICAgICAgcmV0dXJuO1xuICAgIHJldHVybiBhdChzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ29UbyhzdGVwKSB7XG4gICAgaWYgKHN0ZXBOYW1lcy52YWx1ZS5pbmNsdWRlcyhzdGVwKSlcbiAgICAgIGluZGV4LnZhbHVlID0gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCk7XG4gIH1cbiAgZnVuY3Rpb24gZ29Ub05leHQoKSB7XG4gICAgaWYgKGlzTGFzdC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpbmRleC52YWx1ZSsrO1xuICB9XG4gIGZ1bmN0aW9uIGdvVG9QcmV2aW91cygpIHtcbiAgICBpZiAoaXNGaXJzdC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpbmRleC52YWx1ZS0tO1xuICB9XG4gIGZ1bmN0aW9uIGdvQmFja1RvKHN0ZXApIHtcbiAgICBpZiAoaXNBZnRlcihzdGVwKSlcbiAgICAgIGdvVG8oc3RlcCk7XG4gIH1cbiAgZnVuY3Rpb24gaXNOZXh0KHN0ZXApIHtcbiAgICByZXR1cm4gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkgPT09IGluZGV4LnZhbHVlICsgMTtcbiAgfVxuICBmdW5jdGlvbiBpc1ByZXZpb3VzKHN0ZXApIHtcbiAgICByZXR1cm4gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkgPT09IGluZGV4LnZhbHVlIC0gMTtcbiAgfVxuICBmdW5jdGlvbiBpc0N1cnJlbnQoc3RlcCkge1xuICAgIHJldHVybiBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKSA9PT0gaW5kZXgudmFsdWU7XG4gIH1cbiAgZnVuY3Rpb24gaXNCZWZvcmUoc3RlcCkge1xuICAgIHJldHVybiBpbmRleC52YWx1ZSA8IHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApO1xuICB9XG4gIGZ1bmN0aW9uIGlzQWZ0ZXIoc3RlcCkge1xuICAgIHJldHVybiBpbmRleC52YWx1ZSA+IHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RlcHM6IHN0ZXBzUmVmLFxuICAgIHN0ZXBOYW1lcyxcbiAgICBpbmRleCxcbiAgICBjdXJyZW50LFxuICAgIG5leHQsXG4gICAgcHJldmlvdXMsXG4gICAgaXNGaXJzdCxcbiAgICBpc0xhc3QsXG4gICAgYXQsXG4gICAgZ2V0LFxuICAgIGdvVG8sXG4gICAgZ29Ub05leHQsXG4gICAgZ29Ub1ByZXZpb3VzLFxuICAgIGdvQmFja1RvLFxuICAgIGlzTmV4dCxcbiAgICBpc1ByZXZpb3VzLFxuICAgIGlzQ3VycmVudCxcbiAgICBpc0JlZm9yZSxcbiAgICBpc0FmdGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVN0b3JhZ2VBc3luYyhrZXksIGluaXRpYWxWYWx1ZSwgc3RvcmFnZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYTtcbiAgY29uc3Qge1xuICAgIGZsdXNoID0gXCJwcmVcIixcbiAgICBkZWVwID0gdHJ1ZSxcbiAgICBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzID0gdHJ1ZSxcbiAgICB3cml0ZURlZmF1bHRzID0gdHJ1ZSxcbiAgICBzaGFsbG93LFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIsXG4gICAgb25FcnJvciA9IChlKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJhd0luaXQgPSB2dWVEZW1pLnVucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHR5cGUgPSBndWVzc1NlcmlhbGl6ZXJUeXBlKHJhd0luaXQpO1xuICBjb25zdCBkYXRhID0gKHNoYWxsb3cgPyB2dWVEZW1pLnNoYWxsb3dSZWYgOiB2dWVEZW1pLnJlZikoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qgc2VyaWFsaXplciA9IChfYSA9IG9wdGlvbnMuc2VyaWFsaXplcikgIT0gbnVsbCA/IF9hIDogU3RvcmFnZVNlcmlhbGl6ZXJzW3R5cGVdO1xuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgc3RvcmFnZSA9IGdldFNTUkhhbmRsZXIoXCJnZXREZWZhdWx0U3RvcmFnZVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBfYTI7XG4gICAgICAgIHJldHVybiAoX2EyID0gZGVmYXVsdFdpbmRvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5sb2NhbFN0b3JhZ2U7XG4gICAgICB9KSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHJlYWQoZXZlbnQpIHtcbiAgICBpZiAoIXN0b3JhZ2UgfHwgZXZlbnQgJiYgZXZlbnQua2V5ICE9PSBrZXkpXG4gICAgICByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gZXZlbnQgPyBldmVudC5uZXdWYWx1ZSA6IGF3YWl0IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKHJhd1ZhbHVlID09IG51bGwpIHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IHJhd0luaXQ7XG4gICAgICAgIGlmICh3cml0ZURlZmF1bHRzICYmIHJhd0luaXQgIT09IG51bGwpXG4gICAgICAgICAgYXdhaXQgc3RvcmFnZS5zZXRJdGVtKGtleSwgYXdhaXQgc2VyaWFsaXplci53cml0ZShyYXdJbml0KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLnZhbHVlID0gYXdhaXQgc2VyaWFsaXplci5yZWFkKHJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICByZWFkKCk7XG4gIGlmICh3aW5kb3cgJiYgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcylcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJzdG9yYWdlXCIsIChlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlYWQoZSksIDApKTtcbiAgaWYgKHN0b3JhZ2UpIHtcbiAgICBzaGFyZWQud2F0Y2hXaXRoRmlsdGVyKGRhdGEsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChkYXRhLnZhbHVlID09IG51bGwpXG4gICAgICAgICAgYXdhaXQgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhd2FpdCBzdG9yYWdlLnNldEl0ZW0oa2V5LCBhd2FpdCBzZXJpYWxpemVyLndyaXRlKGRhdGEudmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBmbHVzaCxcbiAgICAgIGRlZXAsXG4gICAgICBldmVudEZpbHRlclxuICAgIH0pO1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5sZXQgX2lkID0gMDtcbmZ1bmN0aW9uIHVzZVN0eWxlVGFnKGNzcywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGlzTG9hZGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBtYW51YWwgPSBmYWxzZSxcbiAgICBpZCA9IGB2dWV1c2Vfc3R5bGV0YWdfJHsrK19pZH1gXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjc3NSZWYgPSB2dWVEZW1pLnJlZihjc3MpO1xuICBsZXQgc3RvcCA9ICgpID0+IHtcbiAgfTtcbiAgY29uc3QgbG9hZCA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICBlbC50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuICAgIGVsLmlkID0gaWQ7XG4gICAgaWYgKG9wdGlvbnMubWVkaWEpXG4gICAgICBlbC5tZWRpYSA9IG9wdGlvbnMubWVkaWE7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbCk7XG4gICAgaWYgKGlzTG9hZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHN0b3AgPSB2dWVEZW1pLndhdGNoKGNzc1JlZiwgKHZhbHVlKSA9PiB7XG4gICAgICBlbC5pbm5lclRleHQgPSB2YWx1ZTtcbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgICBpc0xvYWRlZC52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHVubG9hZCA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50IHx8ICFpc0xvYWRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzdG9wKCk7XG4gICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpO1xuICAgIGlzTG9hZGVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIGlmIChpbW1lZGlhdGUgJiYgIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25Nb3VudGVkKGxvYWQpO1xuICBpZiAoIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UodW5sb2FkKTtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBjc3M6IGNzc1JlZixcbiAgICB1bmxvYWQsXG4gICAgbG9hZCxcbiAgICBpc0xvYWRlZDogdnVlRGVtaS5yZWFkb25seShpc0xvYWRlZClcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVGVtcGxhdGVSZWZzTGlzdCgpIHtcbiAgY29uc3QgcmVmcyA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgcmVmcy52YWx1ZS5zZXQgPSAoZWwpID0+IHtcbiAgICBpZiAoZWwpXG4gICAgICByZWZzLnZhbHVlLnB1c2goZWwpO1xuICB9O1xuICB2dWVEZW1pLm9uQmVmb3JlVXBkYXRlKCgpID0+IHtcbiAgICByZWZzLnZhbHVlLmxlbmd0aCA9IDA7XG4gIH0pO1xuICByZXR1cm4gcmVmcztcbn1cblxuZnVuY3Rpb24gZ2V0UmFuZ2VzRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgdmFyIF9hO1xuICBjb25zdCByYW5nZUNvdW50ID0gKF9hID0gc2VsZWN0aW9uLnJhbmdlQ291bnQpICE9IG51bGwgPyBfYSA6IDA7XG4gIGNvbnN0IHJhbmdlcyA9IG5ldyBBcnJheShyYW5nZUNvdW50KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHtcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KGkpO1xuICAgIHJhbmdlc1tpXSA9IHJhbmdlO1xuICB9XG4gIHJldHVybiByYW5nZXM7XG59XG5mdW5jdGlvbiB1c2VUZXh0U2VsZWN0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2VsZWN0aW9uID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHRleHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3Rpb24udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpKSAhPSBudWxsID8gX2IgOiBcIlwiO1xuICB9KTtcbiAgY29uc3QgcmFuZ2VzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzZWxlY3Rpb24udmFsdWUgPyBnZXRSYW5nZXNGcm9tU2VsZWN0aW9uKHNlbGVjdGlvbi52YWx1ZSkgOiBbXSk7XG4gIGNvbnN0IHJlY3RzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiByYW5nZXMudmFsdWUubWFwKChyYW5nZSkgPT4gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtcbiAgZnVuY3Rpb24gb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgc2VsZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBpZiAod2luZG93KVxuICAgICAgc2VsZWN0aW9uLnZhbHVlID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICB9XG4gIGlmICh3aW5kb3cpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3cuZG9jdW1lbnQsIFwic2VsZWN0aW9uY2hhbmdlXCIsIG9uU2VsZWN0aW9uQ2hhbmdlKTtcbiAgcmV0dXJuIHtcbiAgICB0ZXh0LFxuICAgIHJlY3RzLFxuICAgIHJhbmdlcyxcbiAgICBzZWxlY3Rpb25cbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVGV4dGFyZWFBdXRvc2l6ZShvcHRpb25zKSB7XG4gIGNvbnN0IHRleHRhcmVhID0gdnVlRGVtaS5yZWYob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5lbGVtZW50KTtcbiAgY29uc3QgaW5wdXQgPSB2dWVEZW1pLnJlZihvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmlucHV0KTtcbiAgZnVuY3Rpb24gdHJpZ2dlclJlc2l6ZSgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghdGV4dGFyZWEudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgdGV4dGFyZWEudmFsdWUuc3R5bGUuaGVpZ2h0ID0gXCIxcHhcIjtcbiAgICB0ZXh0YXJlYS52YWx1ZS5zdHlsZS5oZWlnaHQgPSBgJHsoX2EgPSB0ZXh0YXJlYS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEhlaWdodH1weGA7XG4gICAgKF9iID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5vblJlc2l6ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwob3B0aW9ucyk7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChbaW5wdXQsIHRleHRhcmVhXSwgdHJpZ2dlclJlc2l6ZSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLndhdGNoKVxuICAgIHZ1ZURlbWkud2F0Y2gob3B0aW9ucy53YXRjaCwgdHJpZ2dlclJlc2l6ZSwgeyBpbW1lZGlhdGU6IHRydWUsIGRlZXA6IHRydWUgfSk7XG4gIHJldHVybiB7XG4gICAgdGV4dGFyZWEsXG4gICAgaW5wdXQsXG4gICAgdHJpZ2dlclJlc2l6ZVxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDIgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQyID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDIgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQyID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQyKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQyID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMi5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDIoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDIpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDIoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMi5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMoYSwgX19nZXRPd25Qcm9wRGVzY3MoYikpO1xuZnVuY3Rpb24gdXNlVGhyb3R0bGVkUmVmSGlzdG9yeShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHRocm90dGxlID0gMjAwLCB0cmFpbGluZyA9IHRydWUgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZpbHRlciA9IHNoYXJlZC50aHJvdHRsZUZpbHRlcih0aHJvdHRsZSwgdHJhaWxpbmcpO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlUmVmSGlzdG9yeShzb3VyY2UsIF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMkMih7fSwgb3B0aW9ucyksIHsgZXZlbnRGaWx0ZXI6IGZpbHRlciB9KSk7XG4gIHJldHVybiBfX3NwcmVhZFZhbHVlcyQyKHt9LCBoaXN0b3J5KTtcbn1cblxudmFyIF9fZGVmUHJvcCQxID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQxID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDEuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQxKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQxKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQxKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDEuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDEoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkMS5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkMSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMShzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kMS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuY29uc3QgVU5JVFMgPSBbXG4gIHsgbWF4OiA2ZTQsIHZhbHVlOiAxZTMsIG5hbWU6IFwic2Vjb25kXCIgfSxcbiAgeyBtYXg6IDI3NmU0LCB2YWx1ZTogNmU0LCBuYW1lOiBcIm1pbnV0ZVwiIH0sXG4gIHsgbWF4OiA3MmU2LCB2YWx1ZTogMzZlNSwgbmFtZTogXCJob3VyXCIgfSxcbiAgeyBtYXg6IDUxODRlNSwgdmFsdWU6IDg2NGU1LCBuYW1lOiBcImRheVwiIH0sXG4gIHsgbWF4OiAyNDE5MmU1LCB2YWx1ZTogNjA0OGU1LCBuYW1lOiBcIndlZWtcIiB9LFxuICB7IG1heDogMjg1MTJlNiwgdmFsdWU6IDI1OTJlNiwgbmFtZTogXCJtb250aFwiIH0sXG4gIHsgbWF4OiBJbmZpbml0eSwgdmFsdWU6IDMxNTM2ZTYsIG5hbWU6IFwieWVhclwiIH1cbl07XG5jb25zdCBERUZBVUxUX01FU1NBR0VTID0ge1xuICBqdXN0Tm93OiBcImp1c3Qgbm93XCIsXG4gIHBhc3Q6IChuKSA9PiBuLm1hdGNoKC9cXGQvKSA/IGAke259IGFnb2AgOiBuLFxuICBmdXR1cmU6IChuKSA9PiBuLm1hdGNoKC9cXGQvKSA/IGBpbiAke259YCA6IG4sXG4gIG1vbnRoOiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcImxhc3QgbW9udGhcIiA6IFwibmV4dCBtb250aFwiIDogYCR7bn0gbW9udGgke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIHllYXI6IChuLCBwYXN0KSA9PiBuID09PSAxID8gcGFzdCA/IFwibGFzdCB5ZWFyXCIgOiBcIm5leHQgeWVhclwiIDogYCR7bn0geWVhciR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgZGF5OiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcInllc3RlcmRheVwiIDogXCJ0b21vcnJvd1wiIDogYCR7bn0gZGF5JHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICB3ZWVrOiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcImxhc3Qgd2Vla1wiIDogXCJuZXh0IHdlZWtcIiA6IGAke259IHdlZWske24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIGhvdXI6IChuKSA9PiBgJHtufSBob3VyJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICBtaW51dGU6IChuKSA9PiBgJHtufSBtaW51dGUke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIHNlY29uZDogKG4pID0+IGAke259IHNlY29uZCR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YFxufTtcbmNvbnN0IERFRkFVTFRfRk9STUFUVEVSID0gKGRhdGUpID0+IGRhdGUudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCk7XG5mdW5jdGlvbiB1c2VUaW1lQWdvKHRpbWUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgbWF4LFxuICAgIHVwZGF0ZUludGVydmFsID0gM2U0LFxuICAgIG1lc3NhZ2VzID0gREVGQVVMVF9NRVNTQUdFUyxcbiAgICBmdWxsRGF0ZUZvcm1hdHRlciA9IERFRkFVTFRfRk9STUFUVEVSXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IGFicywgcm91bmQgfSA9IE1hdGg7XG4gIGNvbnN0IF9hID0gdXNlTm93KHsgaW50ZXJ2YWw6IHVwZGF0ZUludGVydmFsLCBjb250cm9sczogdHJ1ZSB9KSwgeyBub3cgfSA9IF9hLCBjb250cm9scyA9IF9fb2JqUmVzdChfYSwgW1wibm93XCJdKTtcbiAgZnVuY3Rpb24gZ2V0VGltZWFnbyhmcm9tLCBub3cyKSB7XG4gICAgdmFyIF9hMjtcbiAgICBjb25zdCBkaWZmID0gK25vdzIgLSArZnJvbTtcbiAgICBjb25zdCBhYnNEaWZmID0gYWJzKGRpZmYpO1xuICAgIGlmIChhYnNEaWZmIDwgNmU0KVxuICAgICAgcmV0dXJuIG1lc3NhZ2VzLmp1c3ROb3c7XG4gICAgaWYgKHR5cGVvZiBtYXggPT09IFwibnVtYmVyXCIgJiYgYWJzRGlmZiA+IG1heClcbiAgICAgIHJldHVybiBmdWxsRGF0ZUZvcm1hdHRlcihuZXcgRGF0ZShmcm9tKSk7XG4gICAgaWYgKHR5cGVvZiBtYXggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IHVuaXRNYXggPSAoX2EyID0gVU5JVFMuZmluZCgoaSkgPT4gaS5uYW1lID09PSBtYXgpKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLm1heDtcbiAgICAgIGlmICh1bml0TWF4ICYmIGFic0RpZmYgPiB1bml0TWF4KVxuICAgICAgICByZXR1cm4gZnVsbERhdGVGb3JtYXR0ZXIobmV3IERhdGUoZnJvbSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVuaXQgb2YgVU5JVFMpIHtcbiAgICAgIGlmIChhYnNEaWZmIDwgdW5pdC5tYXgpXG4gICAgICAgIHJldHVybiBmb3JtYXQoZGlmZiwgdW5pdCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGFwcGx5Rm9ybWF0KG5hbWUsIHZhbCwgaXNQYXN0KSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbWVzc2FnZXNbbmFtZV07XG4gICAgaWYgKHR5cGVvZiBmb3JtYXR0ZXIgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIodmFsLCBpc1Bhc3QpO1xuICAgIHJldHVybiBmb3JtYXR0ZXIucmVwbGFjZShcInswfVwiLCB2YWwudG9TdHJpbmcoKSk7XG4gIH1cbiAgZnVuY3Rpb24gZm9ybWF0KGRpZmYsIHVuaXQpIHtcbiAgICBjb25zdCB2YWwgPSByb3VuZChhYnMoZGlmZikgLyB1bml0LnZhbHVlKTtcbiAgICBjb25zdCBwYXN0ID0gZGlmZiA+IDA7XG4gICAgY29uc3Qgc3RyID0gYXBwbHlGb3JtYXQodW5pdC5uYW1lLCB2YWwsIHBhc3QpO1xuICAgIHJldHVybiBhcHBseUZvcm1hdChwYXN0ID8gXCJwYXN0XCIgOiBcImZ1dHVyZVwiLCBzdHIsIHBhc3QpO1xuICB9XG4gIGNvbnN0IHRpbWVBZ28gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGdldFRpbWVhZ28obmV3IERhdGUodnVlRGVtaS51bnJlZih0aW1lKSksIHZ1ZURlbWkudW5yZWYobm93LnZhbHVlKSkpO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkMSh7XG4gICAgICB0aW1lQWdvXG4gICAgfSwgY29udHJvbHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aW1lQWdvO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVRpbWVvdXRQb2xsKGZuLCBpbnRlcnZhbCwgdGltZW91dFBvbGxPcHRpb25zKSB7XG4gIGNvbnN0IHsgc3RhcnQgfSA9IHNoYXJlZC51c2VUaW1lb3V0Rm4obG9vcCwgaW50ZXJ2YWwpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgYXN5bmMgZnVuY3Rpb24gbG9vcCgpIHtcbiAgICBpZiAoIWlzQWN0aXZlLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGF3YWl0IGZuKCk7XG4gICAgc3RhcnQoKTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUoKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuICAgICAgbG9vcCgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGlmICh0aW1lb3V0UG9sbE9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IHRpbWVvdXRQb2xsT3B0aW9ucy5pbW1lZGlhdGUpXG4gICAgcmVzdW1lKCk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShwYXVzZSk7XG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmUsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZVRpbWVzdGFtcChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlLFxuICAgIG9mZnNldCA9IDAsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBpbnRlcnZhbCA9IFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHRzID0gdnVlRGVtaS5yZWYoc2hhcmVkLnRpbWVzdGFtcCgpICsgb2Zmc2V0KTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4gdHMudmFsdWUgPSBzaGFyZWQudGltZXN0YW1wKCkgKyBvZmZzZXQ7XG4gIGNvbnN0IGNvbnRyb2xzID0gaW50ZXJ2YWwgPT09IFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCIgPyB1c2VSYWZGbih1cGRhdGUsIHsgaW1tZWRpYXRlIH0pIDogc2hhcmVkLnVzZUludGVydmFsRm4odXBkYXRlLCBpbnRlcnZhbCwgeyBpbW1lZGlhdGUgfSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyh7XG4gICAgICB0aW1lc3RhbXA6IHRzXG4gICAgfSwgY29udHJvbHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0cztcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VUaXRsZShuZXdUaXRsZSA9IG51bGwsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgb2JzZXJ2ZSA9IGZhbHNlLFxuICAgIHRpdGxlVGVtcGxhdGUgPSBcIiVzXCJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHRpdGxlID0gdnVlRGVtaS5yZWYoKF9hID0gbmV3VGl0bGUgIT0gbnVsbCA/IG5ld1RpdGxlIDogZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LnRpdGxlKSAhPSBudWxsID8gX2EgOiBudWxsKTtcbiAgdnVlRGVtaS53YXRjaCh0aXRsZSwgKHQsIG8pID0+IHtcbiAgICBpZiAoc2hhcmVkLmlzU3RyaW5nKHQpICYmIHQgIT09IG8gJiYgZG9jdW1lbnQpXG4gICAgICBkb2N1bWVudC50aXRsZSA9IHRpdGxlVGVtcGxhdGUucmVwbGFjZShcIiVzXCIsIHQpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgaWYgKG9ic2VydmUgJiYgZG9jdW1lbnQpIHtcbiAgICB1c2VNdXRhdGlvbk9ic2VydmVyKChfYiA9IGRvY3VtZW50LmhlYWQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIiksICgpID0+IHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC50aXRsZSAhPT0gdGl0bGUudmFsdWUpXG4gICAgICAgIHRpdGxlLnZhbHVlID0gdGl0bGVUZW1wbGF0ZS5yZXBsYWNlKFwiJXNcIiwgZG9jdW1lbnQudGl0bGUpO1xuICAgIH0sIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB0aXRsZTtcbn1cblxuY29uc3QgVHJhbnNpdGlvblByZXNldHMgPSB7XG4gIGxpbmVhcjogc2hhcmVkLmlkZW50aXR5LFxuICBlYXNlSW5TaW5lOiBbMC4xMiwgMCwgMC4zOSwgMF0sXG4gIGVhc2VPdXRTaW5lOiBbMC42MSwgMSwgMC44OCwgMV0sXG4gIGVhc2VJbk91dFNpbmU6IFswLjM3LCAwLCAwLjYzLCAxXSxcbiAgZWFzZUluUXVhZDogWzAuMTEsIDAsIDAuNSwgMF0sXG4gIGVhc2VPdXRRdWFkOiBbMC41LCAxLCAwLjg5LCAxXSxcbiAgZWFzZUluT3V0UXVhZDogWzAuNDUsIDAsIDAuNTUsIDFdLFxuICBlYXNlSW5DdWJpYzogWzAuMzIsIDAsIDAuNjcsIDBdLFxuICBlYXNlT3V0Q3ViaWM6IFswLjMzLCAxLCAwLjY4LCAxXSxcbiAgZWFzZUluT3V0Q3ViaWM6IFswLjY1LCAwLCAwLjM1LCAxXSxcbiAgZWFzZUluUXVhcnQ6IFswLjUsIDAsIDAuNzUsIDBdLFxuICBlYXNlT3V0UXVhcnQ6IFswLjI1LCAxLCAwLjUsIDFdLFxuICBlYXNlSW5PdXRRdWFydDogWzAuNzYsIDAsIDAuMjQsIDFdLFxuICBlYXNlSW5RdWludDogWzAuNjQsIDAsIDAuNzgsIDBdLFxuICBlYXNlT3V0UXVpbnQ6IFswLjIyLCAxLCAwLjM2LCAxXSxcbiAgZWFzZUluT3V0UXVpbnQ6IFswLjgzLCAwLCAwLjE3LCAxXSxcbiAgZWFzZUluRXhwbzogWzAuNywgMCwgMC44NCwgMF0sXG4gIGVhc2VPdXRFeHBvOiBbMC4xNiwgMSwgMC4zLCAxXSxcbiAgZWFzZUluT3V0RXhwbzogWzAuODcsIDAsIDAuMTMsIDFdLFxuICBlYXNlSW5DaXJjOiBbMC41NSwgMCwgMSwgMC40NV0sXG4gIGVhc2VPdXRDaXJjOiBbMCwgMC41NSwgMC40NSwgMV0sXG4gIGVhc2VJbk91dENpcmM6IFswLjg1LCAwLCAwLjE1LCAxXSxcbiAgZWFzZUluQmFjazogWzAuMzYsIDAsIDAuNjYsIC0wLjU2XSxcbiAgZWFzZU91dEJhY2s6IFswLjM0LCAxLjU2LCAwLjY0LCAxXSxcbiAgZWFzZUluT3V0QmFjazogWzAuNjgsIC0wLjYsIDAuMzIsIDEuNl1cbn07XG5mdW5jdGlvbiBjcmVhdGVFYXNpbmdGdW5jdGlvbihbcDAsIHAxLCBwMiwgcDNdKSB7XG4gIGNvbnN0IGEgPSAoYTEsIGEyKSA9PiAxIC0gMyAqIGEyICsgMyAqIGExO1xuICBjb25zdCBiID0gKGExLCBhMikgPT4gMyAqIGEyIC0gNiAqIGExO1xuICBjb25zdCBjID0gKGExKSA9PiAzICogYTE7XG4gIGNvbnN0IGNhbGNCZXppZXIgPSAodCwgYTEsIGEyKSA9PiAoKGEoYTEsIGEyKSAqIHQgKyBiKGExLCBhMikpICogdCArIGMoYTEpKSAqIHQ7XG4gIGNvbnN0IGdldFNsb3BlID0gKHQsIGExLCBhMikgPT4gMyAqIGEoYTEsIGEyKSAqIHQgKiB0ICsgMiAqIGIoYTEsIGEyKSAqIHQgKyBjKGExKTtcbiAgY29uc3QgZ2V0VGZvclggPSAoeCkgPT4ge1xuICAgIGxldCBhR3Vlc3NUID0geDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgY29uc3QgY3VycmVudFNsb3BlID0gZ2V0U2xvcGUoYUd1ZXNzVCwgcDAsIHAyKTtcbiAgICAgIGlmIChjdXJyZW50U2xvcGUgPT09IDApXG4gICAgICAgIHJldHVybiBhR3Vlc3NUO1xuICAgICAgY29uc3QgY3VycmVudFggPSBjYWxjQmV6aWVyKGFHdWVzc1QsIHAwLCBwMikgLSB4O1xuICAgICAgYUd1ZXNzVCAtPSBjdXJyZW50WCAvIGN1cnJlbnRTbG9wZTtcbiAgICB9XG4gICAgcmV0dXJuIGFHdWVzc1Q7XG4gIH07XG4gIHJldHVybiAoeCkgPT4gcDAgPT09IHAxICYmIHAyID09PSBwMyA/IHggOiBjYWxjQmV6aWVyKGdldFRmb3JYKHgpLCBwMSwgcDMpO1xufVxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvbihzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZGVsYXkgPSAwLFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgZHVyYXRpb24gPSAxZTMsXG4gICAgb25GaW5pc2hlZCA9IHNoYXJlZC5ub29wLFxuICAgIG9uU3RhcnRlZCA9IHNoYXJlZC5ub29wLFxuICAgIHRyYW5zaXRpb24gPSBzaGFyZWQuaWRlbnRpdHlcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnRUcmFuc2l0aW9uID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdCA9IHZ1ZURlbWkudW5yZWYodHJhbnNpdGlvbik7XG4gICAgcmV0dXJuIHNoYXJlZC5pc0Z1bmN0aW9uKHQpID8gdCA6IGNyZWF0ZUVhc2luZ0Z1bmN0aW9uKHQpO1xuICB9KTtcbiAgY29uc3Qgc291cmNlVmFsdWUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdnVlRGVtaS51bnJlZihzb3VyY2UpO1xuICAgIHJldHVybiBzaGFyZWQuaXNOdW1iZXIocykgPyBzIDogcy5tYXAodnVlRGVtaS51bnJlZik7XG4gIH0pO1xuICBjb25zdCBzb3VyY2VWZWN0b3IgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHNoYXJlZC5pc051bWJlcihzb3VyY2VWYWx1ZS52YWx1ZSkgPyBbc291cmNlVmFsdWUudmFsdWVdIDogc291cmNlVmFsdWUudmFsdWUpO1xuICBjb25zdCBvdXRwdXRWZWN0b3IgPSB2dWVEZW1pLnJlZihzb3VyY2VWZWN0b3IudmFsdWUuc2xpY2UoMCkpO1xuICBsZXQgY3VycmVudER1cmF0aW9uO1xuICBsZXQgZGlmZlZlY3RvcjtcbiAgbGV0IGVuZEF0O1xuICBsZXQgc3RhcnRBdDtcbiAgbGV0IHN0YXJ0VmVjdG9yO1xuICBjb25zdCB7IHJlc3VtZSwgcGF1c2UgfSA9IHVzZVJhZkZuKCgpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHByb2dyZXNzID0gc2hhcmVkLmNsYW1wKDEgLSAoZW5kQXQgLSBub3cpIC8gY3VycmVudER1cmF0aW9uLCAwLCAxKTtcbiAgICBvdXRwdXRWZWN0b3IudmFsdWUgPSBzdGFydFZlY3Rvci5tYXAoKHZhbCwgaSkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgcmV0dXJuIHZhbCArICgoX2EgPSBkaWZmVmVjdG9yW2ldKSAhPSBudWxsID8gX2EgOiAwKSAqIGN1cnJlbnRUcmFuc2l0aW9uLnZhbHVlKHByb2dyZXNzKTtcbiAgICB9KTtcbiAgICBpZiAocHJvZ3Jlc3MgPj0gMSkge1xuICAgICAgcGF1c2UoKTtcbiAgICAgIG9uRmluaXNoZWQoKTtcbiAgICB9XG4gIH0sIHsgaW1tZWRpYXRlOiBmYWxzZSB9KTtcbiAgY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gICAgcGF1c2UoKTtcbiAgICBjdXJyZW50RHVyYXRpb24gPSB2dWVEZW1pLnVucmVmKGR1cmF0aW9uKTtcbiAgICBkaWZmVmVjdG9yID0gb3V0cHV0VmVjdG9yLnZhbHVlLm1hcCgobiwgaSkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIHJldHVybiAoKF9hID0gc291cmNlVmVjdG9yLnZhbHVlW2ldKSAhPSBudWxsID8gX2EgOiAwKSAtICgoX2IgPSBvdXRwdXRWZWN0b3IudmFsdWVbaV0pICE9IG51bGwgPyBfYiA6IDApO1xuICAgIH0pO1xuICAgIHN0YXJ0VmVjdG9yID0gb3V0cHV0VmVjdG9yLnZhbHVlLnNsaWNlKDApO1xuICAgIHN0YXJ0QXQgPSBEYXRlLm5vdygpO1xuICAgIGVuZEF0ID0gc3RhcnRBdCArIGN1cnJlbnREdXJhdGlvbjtcbiAgICByZXN1bWUoKTtcbiAgICBvblN0YXJ0ZWQoKTtcbiAgfTtcbiAgY29uc3QgdGltZW91dCA9IHNoYXJlZC51c2VUaW1lb3V0Rm4oc3RhcnQsIGRlbGF5LCB7IGltbWVkaWF0ZTogZmFsc2UgfSk7XG4gIHZ1ZURlbWkud2F0Y2goc291cmNlVmVjdG9yLCAoKSA9PiB7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYoZGlzYWJsZWQpKSB7XG4gICAgICBvdXRwdXRWZWN0b3IudmFsdWUgPSBzb3VyY2VWZWN0b3IudmFsdWUuc2xpY2UoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2dWVEZW1pLnVucmVmKGRlbGF5KSA8PSAwKVxuICAgICAgICBzdGFydCgpO1xuICAgICAgZWxzZVxuICAgICAgICB0aW1lb3V0LnN0YXJ0KCk7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXRWZWN0b3IgPSB2dWVEZW1pLnVucmVmKGRpc2FibGVkKSA/IHNvdXJjZVZlY3RvciA6IG91dHB1dFZlY3RvcjtcbiAgICByZXR1cm4gc2hhcmVkLmlzTnVtYmVyKHNvdXJjZVZhbHVlLnZhbHVlKSA/IHRhcmdldFZlY3Rvci52YWx1ZVswXSA6IHRhcmdldFZlY3Rvci52YWx1ZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVVybFNlYXJjaFBhcmFtcyhtb2RlID0gXCJoaXN0b3J5XCIsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW5pdGlhbFZhbHVlID0ge30sXG4gICAgcmVtb3ZlTnVsbGlzaFZhbHVlcyA9IHRydWUsXG4gICAgcmVtb3ZlRmFsc3lWYWx1ZXMgPSBmYWxzZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVhY3RpdmUoe30pO1xuICBmdW5jdGlvbiBnZXRSYXdQYXJhbXMoKSB7XG4gICAgaWYgKG1vZGUgPT09IFwiaGlzdG9yeVwiKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnNlYXJjaCB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gXCJoYXNoXCIpIHtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaCB8fCBcIlwiO1xuICAgICAgY29uc3QgaW5kZXggPSBoYXNoLmluZGV4T2YoXCI/XCIpO1xuICAgICAgcmV0dXJuIGluZGV4ID4gMCA/IGhhc2guc2xpY2UoaW5kZXgpIDogXCJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICh3aW5kb3cubG9jYXRpb24uaGFzaCB8fCBcIlwiKS5yZXBsYWNlKC9eIy8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjb25zdHJ1Y3RRdWVyeShwYXJhbXMpIHtcbiAgICBjb25zdCBzdHJpbmdpZmllZCA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIGlmIChtb2RlID09PSBcImhpc3RvcnlcIilcbiAgICAgIHJldHVybiBgJHtzdHJpbmdpZmllZCA/IGA/JHtzdHJpbmdpZmllZH1gIDogXCJcIn0ke2xvY2F0aW9uLmhhc2ggfHwgXCJcIn1gO1xuICAgIGlmIChtb2RlID09PSBcImhhc2gtcGFyYW1zXCIpXG4gICAgICByZXR1cm4gYCR7bG9jYXRpb24uc2VhcmNoIHx8IFwiXCJ9JHtzdHJpbmdpZmllZCA/IGAjJHtzdHJpbmdpZmllZH1gIDogXCJcIn1gO1xuICAgIGNvbnN0IGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaCB8fCBcIiNcIjtcbiAgICBjb25zdCBpbmRleCA9IGhhc2guaW5kZXhPZihcIj9cIik7XG4gICAgaWYgKGluZGV4ID4gMClcbiAgICAgIHJldHVybiBgJHtoYXNoLnNsaWNlKDAsIGluZGV4KX0ke3N0cmluZ2lmaWVkID8gYD8ke3N0cmluZ2lmaWVkfWAgOiBcIlwifWA7XG4gICAgcmV0dXJuIGAke2hhc2h9JHtzdHJpbmdpZmllZCA/IGA/JHtzdHJpbmdpZmllZH1gIDogXCJcIn1gO1xuICB9XG4gIGZ1bmN0aW9uIHJlYWQoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoZ2V0UmF3UGFyYW1zKCkpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YXRlKHBhcmFtcykge1xuICAgIGNvbnN0IHVudXNlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHN0YXRlKSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcGFyYW1zLmtleXMoKSkge1xuICAgICAgY29uc3QgcGFyYW1zRm9yS2V5ID0gcGFyYW1zLmdldEFsbChrZXkpO1xuICAgICAgc3RhdGVba2V5XSA9IHBhcmFtc0ZvcktleS5sZW5ndGggPiAxID8gcGFyYW1zRm9yS2V5IDogcGFyYW1zLmdldChrZXkpIHx8IFwiXCI7XG4gICAgICB1bnVzZWRLZXlzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICBBcnJheS5mcm9tKHVudXNlZEtleXMpLmZvckVhY2goKGtleSkgPT4gZGVsZXRlIHN0YXRlW2tleV0pO1xuICB9XG4gIGNvbnN0IHsgcGF1c2UsIHJlc3VtZSB9ID0gc2hhcmVkLnBhdXNhYmxlV2F0Y2goc3RhdGUsICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKFwiXCIpO1xuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IG1hcEVudHJ5ID0gc3RhdGVba2V5XTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hcEVudHJ5KSlcbiAgICAgICAgbWFwRW50cnkuZm9yRWFjaCgodmFsdWUpID0+IHBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSkpO1xuICAgICAgZWxzZSBpZiAocmVtb3ZlTnVsbGlzaFZhbHVlcyAmJiBtYXBFbnRyeSA9PSBudWxsKVxuICAgICAgICBwYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICBlbHNlIGlmIChyZW1vdmVGYWxzeVZhbHVlcyAmJiAhbWFwRW50cnkpXG4gICAgICAgIHBhcmFtcy5kZWxldGUoa2V5KTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyYW1zLnNldChrZXksIG1hcEVudHJ5KTtcbiAgICB9KTtcbiAgICB3cml0ZShwYXJhbXMpO1xuICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gIGZ1bmN0aW9uIHdyaXRlKHBhcmFtcywgc2hvdWxkVXBkYXRlKSB7XG4gICAgcGF1c2UoKTtcbiAgICBpZiAoc2hvdWxkVXBkYXRlKVxuICAgICAgdXBkYXRlU3RhdGUocGFyYW1zKTtcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsIHdpbmRvdy5kb2N1bWVudC50aXRsZSwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgY29uc3RydWN0UXVlcnkocGFyYW1zKSk7XG4gICAgcmVzdW1lKCk7XG4gIH1cbiAgZnVuY3Rpb24gb25DaGFuZ2VkKCkge1xuICAgIHdyaXRlKHJlYWQoKSwgdHJ1ZSk7XG4gIH1cbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicG9wc3RhdGVcIiwgb25DaGFuZ2VkLCBmYWxzZSk7XG4gIGlmIChtb2RlICE9PSBcImhpc3RvcnlcIilcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJoYXNoY2hhbmdlXCIsIG9uQ2hhbmdlZCwgZmFsc2UpO1xuICBjb25zdCBpbml0aWFsID0gcmVhZCgpO1xuICBpZiAoaW5pdGlhbC5rZXlzKCkubmV4dCgpLnZhbHVlKVxuICAgIHVwZGF0ZVN0YXRlKGluaXRpYWwpO1xuICBlbHNlXG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZSwgaW5pdGlhbFZhbHVlKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiB1c2VVc2VyTWVkaWEob3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2IsIF9jO1xuICBjb25zdCBlbmFibGVkID0gdnVlRGVtaS5yZWYoKF9hID0gb3B0aW9ucy5lbmFibGVkKSAhPSBudWxsID8gX2EgOiBmYWxzZSk7XG4gIGNvbnN0IGF1dG9Td2l0Y2ggPSB2dWVEZW1pLnJlZigoX2IgPSBvcHRpb25zLmF1dG9Td2l0Y2gpICE9IG51bGwgPyBfYiA6IHRydWUpO1xuICBjb25zdCB2aWRlb0RldmljZUlkID0gdnVlRGVtaS5yZWYob3B0aW9ucy52aWRlb0RldmljZUlkKTtcbiAgY29uc3QgYXVkaW9EZXZpY2VJZCA9IHZ1ZURlbWkucmVmKG9wdGlvbnMuYXVkaW9EZXZpY2VJZCk7XG4gIGNvbnN0IHsgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvciB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKChfYyA9IG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLm1lZGlhRGV2aWNlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmdldFVzZXJNZWRpYSk7XG4gIGNvbnN0IHN0cmVhbSA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICBmdW5jdGlvbiBnZXREZXZpY2VPcHRpb25zKGRldmljZSkge1xuICAgIGlmIChkZXZpY2UudmFsdWUgPT09IFwibm9uZVwiIHx8IGRldmljZS52YWx1ZSA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGRldmljZS52YWx1ZSA9PSBudWxsKVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldmljZUlkOiBkZXZpY2UudmFsdWVcbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIF9zdGFydCgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkIHx8IHN0cmVhbS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzdHJlYW0udmFsdWUgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7XG4gICAgICB2aWRlbzogZ2V0RGV2aWNlT3B0aW9ucyh2aWRlb0RldmljZUlkKSxcbiAgICAgIGF1ZGlvOiBnZXREZXZpY2VPcHRpb25zKGF1ZGlvRGV2aWNlSWQpXG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cmVhbS52YWx1ZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBfc3RvcCgpIHtcbiAgICB2YXIgX2EyO1xuICAgIChfYTIgPSBzdHJlYW0udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgIHN0cmVhbS52YWx1ZSA9IHZvaWQgMDtcbiAgfVxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIF9zdG9wKCk7XG4gICAgZW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkge1xuICAgIGF3YWl0IF9zdGFydCgpO1xuICAgIGlmIChzdHJlYW0udmFsdWUpXG4gICAgICBlbmFibGVkLnZhbHVlID0gdHJ1ZTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHJlc3RhcnQoKSB7XG4gICAgX3N0b3AoKTtcbiAgICByZXR1cm4gYXdhaXQgc3RhcnQoKTtcbiAgfVxuICB2dWVEZW1pLndhdGNoKGVuYWJsZWQsICh2KSA9PiB7XG4gICAgaWYgKHYpXG4gICAgICBfc3RhcnQoKTtcbiAgICBlbHNlXG4gICAgICBfc3RvcCgpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgdnVlRGVtaS53YXRjaChbdmlkZW9EZXZpY2VJZCwgYXVkaW9EZXZpY2VJZF0sICgpID0+IHtcbiAgICBpZiAoYXV0b1N3aXRjaC52YWx1ZSAmJiBzdHJlYW0udmFsdWUpXG4gICAgICByZXN0YXJ0KCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0cmVhbSxcbiAgICBzdGFydCxcbiAgICBzdG9wLFxuICAgIHJlc3RhcnQsXG4gICAgdmlkZW9EZXZpY2VJZCxcbiAgICBhdWRpb0RldmljZUlkLFxuICAgIGVuYWJsZWQsXG4gICAgYXV0b1N3aXRjaFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VWTW9kZWwocHJvcHMsIGtleSwgZW1pdCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gIGNvbnN0IHtcbiAgICBwYXNzaXZlID0gZmFsc2UsXG4gICAgZXZlbnROYW1lLFxuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHZtID0gdnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgY29uc3QgX2VtaXQgPSBlbWl0IHx8ICh2bSA9PSBudWxsID8gdm9pZCAwIDogdm0uZW1pdCkgfHwgKChfYSA9IHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS4kZW1pdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmJpbmQodm0pKSB8fCAoKF9jID0gKF9iID0gdm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLnByb3h5KSA9PSBudWxsID8gdm9pZCAwIDogX2IuJGVtaXQpID09IG51bGwgPyB2b2lkIDAgOiBfYy5iaW5kKHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5wcm94eSkpO1xuICBsZXQgZXZlbnQgPSBldmVudE5hbWU7XG4gIGlmICgha2V5KSB7XG4gICAgaWYgKHZ1ZURlbWkuaXNWdWUyKSB7XG4gICAgICBjb25zdCBtb2RlbE9wdGlvbnMgPSAoX2UgPSAoX2QgPSB2bSA9PSBudWxsID8gdm9pZCAwIDogdm0ucHJveHkpID09IG51bGwgPyB2b2lkIDAgOiBfZC4kb3B0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLm1vZGVsO1xuICAgICAga2V5ID0gKG1vZGVsT3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogbW9kZWxPcHRpb25zLnZhbHVlKSB8fCBcInZhbHVlXCI7XG4gICAgICBpZiAoIWV2ZW50TmFtZSlcbiAgICAgICAgZXZlbnQgPSAobW9kZWxPcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBtb2RlbE9wdGlvbnMuZXZlbnQpIHx8IFwiaW5wdXRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ID0gXCJtb2RlbFZhbHVlXCI7XG4gICAgfVxuICB9XG4gIGV2ZW50ID0gZXZlbnROYW1lIHx8IGV2ZW50IHx8IGB1cGRhdGU6JHtrZXkudG9TdHJpbmcoKX1gO1xuICBjb25zdCBnZXRWYWx1ZSA9ICgpID0+IHNoYXJlZC5pc0RlZihwcm9wc1trZXldKSA/IHByb3BzW2tleV0gOiBkZWZhdWx0VmFsdWU7XG4gIGlmIChwYXNzaXZlKSB7XG4gICAgY29uc3QgcHJveHkgPSB2dWVEZW1pLnJlZihnZXRWYWx1ZSgpKTtcbiAgICB2dWVEZW1pLndhdGNoKCgpID0+IHByb3BzW2tleV0sICh2KSA9PiBwcm94eS52YWx1ZSA9IHYpO1xuICAgIHZ1ZURlbWkud2F0Y2gocHJveHksICh2KSA9PiB7XG4gICAgICBpZiAodiAhPT0gcHJvcHNba2V5XSB8fCBkZWVwKVxuICAgICAgICBfZW1pdChldmVudCwgdik7XG4gICAgfSwge1xuICAgICAgZGVlcFxuICAgIH0pO1xuICAgIHJldHVybiBwcm94eTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRWYWx1ZSgpO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWx1ZSkge1xuICAgICAgICBfZW1pdChldmVudCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVZNb2RlbHMocHJvcHMsIGVtaXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZXQgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpXG4gICAgcmV0W2tleV0gPSB1c2VWTW9kZWwocHJvcHMsIGtleSwgZW1pdCwgb3B0aW9ucyk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHVzZVZpYnJhdGUob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGF0dGVybiA9IFtdLFxuICAgIGludGVydmFsID0gMCxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09IFwidW5kZWZpbmVkXCIgJiYgXCJ2aWJyYXRlXCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBwYXR0ZXJuUmVmID0gdnVlRGVtaS5yZWYocGF0dGVybik7XG4gIGxldCBpbnRlcnZhbENvbnRyb2xzO1xuICBjb25zdCB2aWJyYXRlID0gKHBhdHRlcm4yID0gcGF0dGVyblJlZi52YWx1ZSkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZClcbiAgICAgIG5hdmlnYXRvci52aWJyYXRlKHBhdHRlcm4yKTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpXG4gICAgICBuYXZpZ2F0b3IudmlicmF0ZSgwKTtcbiAgICBpbnRlcnZhbENvbnRyb2xzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcnZhbENvbnRyb2xzLnBhdXNlKCk7XG4gIH07XG4gIGlmIChpbnRlcnZhbCA+IDApIHtcbiAgICBpbnRlcnZhbENvbnRyb2xzID0gc2hhcmVkLnVzZUludGVydmFsRm4odmlicmF0ZSwgaW50ZXJ2YWwsIHtcbiAgICAgIGltbWVkaWF0ZTogZmFsc2UsXG4gICAgICBpbW1lZGlhdGVDYWxsYmFjazogZmFsc2VcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHBhdHRlcm4sXG4gICAgaW50ZXJ2YWxDb250cm9scyxcbiAgICB2aWJyYXRlLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVmlydHVhbExpc3QobGlzdCwgb3B0aW9ucykge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBzaXplID0gdXNlRWxlbWVudFNpemUoY29udGFpbmVyUmVmKTtcbiAgY29uc3QgY3VycmVudExpc3QgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHNvdXJjZSA9IHZ1ZURlbWkuc2hhbGxvd1JlZihsaXN0KTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlZih7IHN0YXJ0OiAwLCBlbmQ6IDEwIH0pO1xuICBjb25zdCB7IGl0ZW1IZWlnaHQsIG92ZXJzY2FuID0gNSB9ID0gb3B0aW9ucztcbiAgY29uc3QgZ2V0Vmlld0NhcGFjaXR5ID0gKGNvbnRhaW5lckhlaWdodCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbUhlaWdodCA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJldHVybiBNYXRoLmNlaWwoY29udGFpbmVySGVpZ2h0IC8gaXRlbUhlaWdodCk7XG4gICAgY29uc3QgeyBzdGFydCA9IDAgfSA9IHN0YXRlLnZhbHVlO1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGxldCBjYXBhY2l0eSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgc291cmNlLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBpdGVtSGVpZ2h0KGkpO1xuICAgICAgc3VtICs9IGhlaWdodDtcbiAgICAgIGlmIChzdW0gPj0gY29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgIGNhcGFjaXR5ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYXBhY2l0eSAtIHN0YXJ0O1xuICB9O1xuICBjb25zdCBnZXRPZmZzZXQgPSAoc2Nyb2xsVG9wKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtSGVpZ2h0ID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gaXRlbUhlaWdodCkgKyAxO1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBpdGVtSGVpZ2h0KGkpO1xuICAgICAgc3VtICs9IGhlaWdodDtcbiAgICAgIGlmIChzdW0gPj0gc2Nyb2xsVG9wKSB7XG4gICAgICAgIG9mZnNldCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2Zmc2V0ICsgMTtcbiAgfTtcbiAgY29uc3QgY2FsY3VsYXRlUmFuZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGNvbnRhaW5lclJlZi52YWx1ZTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0KGVsZW1lbnQuc2Nyb2xsVG9wKTtcbiAgICAgIGNvbnN0IHZpZXdDYXBhY2l0eSA9IGdldFZpZXdDYXBhY2l0eShlbGVtZW50LmNsaWVudEhlaWdodCk7XG4gICAgICBjb25zdCBmcm9tID0gb2Zmc2V0IC0gb3ZlcnNjYW47XG4gICAgICBjb25zdCB0byA9IG9mZnNldCArIHZpZXdDYXBhY2l0eSArIG92ZXJzY2FuO1xuICAgICAgc3RhdGUudmFsdWUgPSB7XG4gICAgICAgIHN0YXJ0OiBmcm9tIDwgMCA/IDAgOiBmcm9tLFxuICAgICAgICBlbmQ6IHRvID4gc291cmNlLnZhbHVlLmxlbmd0aCA/IHNvdXJjZS52YWx1ZS5sZW5ndGggOiB0b1xuICAgICAgfTtcbiAgICAgIGN1cnJlbnRMaXN0LnZhbHVlID0gc291cmNlLnZhbHVlLnNsaWNlKHN0YXRlLnZhbHVlLnN0YXJ0LCBzdGF0ZS52YWx1ZS5lbmQpLm1hcCgoZWxlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgZGF0YTogZWxlLFxuICAgICAgICBpbmRleDogaW5kZXggKyBzdGF0ZS52YWx1ZS5zdGFydFxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcbiAgdnVlRGVtaS53YXRjaChbc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIGxpc3RdLCAoKSA9PiB7XG4gICAgY2FsY3VsYXRlUmFuZ2UoKTtcbiAgfSk7XG4gIGNvbnN0IHRvdGFsSGVpZ2h0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtSGVpZ2h0ID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIHNvdXJjZS52YWx1ZS5sZW5ndGggKiBpdGVtSGVpZ2h0O1xuICAgIHJldHVybiBzb3VyY2UudmFsdWUucmVkdWNlKChzdW0sIF8sIGluZGV4KSA9PiBzdW0gKyBpdGVtSGVpZ2h0KGluZGV4KSwgMCk7XG4gIH0pO1xuICBjb25zdCBnZXREaXN0YW5jZVRvcCA9IChpbmRleCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbUhlaWdodCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY29uc3QgaGVpZ2h0MiA9IGluZGV4ICogaXRlbUhlaWdodDtcbiAgICAgIHJldHVybiBoZWlnaHQyO1xuICAgIH1cbiAgICBjb25zdCBoZWlnaHQgPSBzb3VyY2UudmFsdWUuc2xpY2UoMCwgaW5kZXgpLnJlZHVjZSgoc3VtLCBfLCBpKSA9PiBzdW0gKyBpdGVtSGVpZ2h0KGkpLCAwKTtcbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9O1xuICBjb25zdCBzY3JvbGxUbyA9IChpbmRleCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxUb3AgPSBnZXREaXN0YW5jZVRvcChpbmRleCk7XG4gICAgICBjYWxjdWxhdGVSYW5nZSgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb2Zmc2V0VG9wID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBnZXREaXN0YW5jZVRvcChzdGF0ZS52YWx1ZS5zdGFydCkpO1xuICBjb25zdCB3cmFwcGVyUHJvcHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICBoZWlnaHQ6IGAke3RvdGFsSGVpZ2h0LnZhbHVlIC0gb2Zmc2V0VG9wLnZhbHVlfXB4YCxcbiAgICAgICAgbWFyZ2luVG9wOiBgJHtvZmZzZXRUb3AudmFsdWV9cHhgXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlID0geyBvdmVyZmxvd1k6IFwiYXV0b1wiIH07XG4gIHJldHVybiB7XG4gICAgbGlzdDogY3VycmVudExpc3QsXG4gICAgc2Nyb2xsVG8sXG4gICAgY29udGFpbmVyUHJvcHM6IHtcbiAgICAgIHJlZjogY29udGFpbmVyUmVmLFxuICAgICAgb25TY3JvbGw6ICgpID0+IHtcbiAgICAgICAgY2FsY3VsYXRlUmFuZ2UoKTtcbiAgICAgIH0sXG4gICAgICBzdHlsZTogY29udGFpbmVyU3R5bGVcbiAgICB9LFxuICAgIHdyYXBwZXJQcm9wc1xuICB9O1xufVxuXG5jb25zdCB1c2VXYWtlTG9jayA9IChvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGxldCB3YWtlTG9jaztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgXCJ3YWtlTG9ja1wiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGFzeW5jIGZ1bmN0aW9uIG9uVmlzaWJpbGl0eUNoYW5nZSgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkIHx8ICF3YWtlTG9jaylcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSBcInZpc2libGVcIilcbiAgICAgIHdha2VMb2NrID0gYXdhaXQgbmF2aWdhdG9yLndha2VMb2NrLnJlcXVlc3QoXCJzY3JlZW5cIik7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhd2FrZUxvY2sucmVsZWFzZWQ7XG4gIH1cbiAgaWYgKGRvY3VtZW50KVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCBvblZpc2liaWxpdHlDaGFuZ2UsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdCh0eXBlKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICB3YWtlTG9jayA9IGF3YWl0IG5hdmlnYXRvci53YWtlTG9jay5yZXF1ZXN0KHR5cGUpO1xuICAgIGlzQWN0aXZlLnZhbHVlID0gIXdha2VMb2NrLnJlbGVhc2VkO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHJlbGVhc2UoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZCB8fCAhd2FrZUxvY2spXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgd2FrZUxvY2sucmVsZWFzZSgpO1xuICAgIGlzQWN0aXZlLnZhbHVlID0gIXdha2VMb2NrLnJlbGVhc2VkO1xuICAgIHdha2VMb2NrID0gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzQWN0aXZlLFxuICAgIHJlcXVlc3QsXG4gICAgcmVsZWFzZVxuICB9O1xufTtcblxuY29uc3QgdXNlV2ViTm90aWZpY2F0aW9uID0gKGRlZmF1bHRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IGRlZmF1bHRPcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9ICEhd2luZG93ICYmIFwiTm90aWZpY2F0aW9uXCIgaW4gd2luZG93O1xuICBjb25zdCBub3RpZmljYXRpb24gPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgcmVxdWVzdFBlcm1pc3Npb24gPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoXCJwZXJtaXNzaW9uXCIgaW4gTm90aWZpY2F0aW9uICYmIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uICE9PSBcImRlbmllZFwiKVxuICAgICAgYXdhaXQgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IG9uU2hvdyA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgb25FcnJvciA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgb25DbG9zZSA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgc2hvdyA9IGFzeW5jIChvdmVycmlkZXMpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGF3YWl0IHJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvdmVycmlkZXMpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZSA9IG5ldyBOb3RpZmljYXRpb24ob3B0aW9ucy50aXRsZSB8fCBcIlwiLCBvcHRpb25zKTtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25jbGljayA9IChldmVudCkgPT4gb25DbGljay50cmlnZ2VyKGV2ZW50KTtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25zaG93ID0gKGV2ZW50KSA9PiBvblNob3cudHJpZ2dlcihldmVudCk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlLm9uZXJyb3IgPSAoZXZlbnQpID0+IG9uRXJyb3IudHJpZ2dlcihldmVudCk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlLm9uY2xvc2UgPSAoZXZlbnQpID0+IG9uQ2xvc2UudHJpZ2dlcihldmVudCk7XG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi52YWx1ZTtcbiAgfTtcbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKG5vdGlmaWNhdGlvbi52YWx1ZSlcbiAgICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5jbG9zZSgpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZSA9IG51bGw7XG4gIH07XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZClcbiAgICAgIGF3YWl0IHJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoY2xvc2UpO1xuICBpZiAoaXNTdXBwb3J0ZWQgJiYgd2luZG93KSB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSBcInZpc2libGVcIikge1xuICAgICAgICBjbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgbm90aWZpY2F0aW9uLFxuICAgIHNob3csXG4gICAgY2xvc2UsXG4gICAgb25DbGljayxcbiAgICBvblNob3csXG4gICAgb25FcnJvcixcbiAgICBvbkNsb3NlXG4gIH07XG59O1xuXG5mdW5jdGlvbiByZXNvbHZlTmVzdGVkT3B0aW9ucyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB0cnVlKVxuICAgIHJldHVybiB7fTtcbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5mdW5jdGlvbiB1c2VXZWJTb2NrZXQodXJsLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG9uQ29ubmVjdGVkLFxuICAgIG9uRGlzY29ubmVjdGVkLFxuICAgIG9uRXJyb3IsXG4gICAgb25NZXNzYWdlLFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgYXV0b0Nsb3NlID0gdHJ1ZSxcbiAgICBwcm90b2NvbHMgPSBbXVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBzdGF0dXMgPSB2dWVEZW1pLnJlZihcIkNPTk5FQ1RJTkdcIik7XG4gIGNvbnN0IHdzUmVmID0gdnVlRGVtaS5yZWYoKTtcbiAgbGV0IGhlYXJ0YmVhdFBhdXNlO1xuICBsZXQgaGVhcnRiZWF0UmVzdW1lO1xuICBsZXQgZXhwbGljaXRseUNsb3NlZCA9IGZhbHNlO1xuICBsZXQgcmV0cmllZCA9IDA7XG4gIGxldCBidWZmZXJlZERhdGEgPSBbXTtcbiAgY29uc3QgY2xvc2UgPSAoY29kZSA9IDFlMywgcmVhc29uKSA9PiB7XG4gICAgaWYgKCF3c1JlZi52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBleHBsaWNpdGx5Q2xvc2VkID0gdHJ1ZTtcbiAgICBoZWFydGJlYXRQYXVzZSA9PSBudWxsID8gdm9pZCAwIDogaGVhcnRiZWF0UGF1c2UoKTtcbiAgICB3c1JlZi52YWx1ZS5jbG9zZShjb2RlLCByZWFzb24pO1xuICB9O1xuICBjb25zdCBfc2VuZEJ1ZmZlciA9ICgpID0+IHtcbiAgICBpZiAoYnVmZmVyZWREYXRhLmxlbmd0aCAmJiB3c1JlZi52YWx1ZSAmJiBzdGF0dXMudmFsdWUgPT09IFwiT1BFTlwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJlZERhdGEpXG4gICAgICAgIHdzUmVmLnZhbHVlLnNlbmQoYnVmZmVyKTtcbiAgICAgIGJ1ZmZlcmVkRGF0YSA9IFtdO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgc2VuZCA9IChkYXRhMiwgdXNlQnVmZmVyID0gdHJ1ZSkgPT4ge1xuICAgIGlmICghd3NSZWYudmFsdWUgfHwgc3RhdHVzLnZhbHVlICE9PSBcIk9QRU5cIikge1xuICAgICAgaWYgKHVzZUJ1ZmZlcilcbiAgICAgICAgYnVmZmVyZWREYXRhLnB1c2goZGF0YTIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBfc2VuZEJ1ZmZlcigpO1xuICAgIHdzUmVmLnZhbHVlLnNlbmQoZGF0YTIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBjb25zdCBfaW5pdCA9ICgpID0+IHtcbiAgICBjb25zdCB3cyA9IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbHMpO1xuICAgIHdzUmVmLnZhbHVlID0gd3M7XG4gICAgc3RhdHVzLnZhbHVlID0gXCJDT05ORUNUSU5HXCI7XG4gICAgZXhwbGljaXRseUNsb3NlZCA9IGZhbHNlO1xuICAgIHdzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiT1BFTlwiO1xuICAgICAgb25Db25uZWN0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ29ubmVjdGVkKHdzKTtcbiAgICAgIGhlYXJ0YmVhdFJlc3VtZSA9PSBudWxsID8gdm9pZCAwIDogaGVhcnRiZWF0UmVzdW1lKCk7XG4gICAgICBfc2VuZEJ1ZmZlcigpO1xuICAgIH07XG4gICAgd3Mub25jbG9zZSA9IChldikgPT4ge1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJDTE9TRURcIjtcbiAgICAgIHdzUmVmLnZhbHVlID0gdm9pZCAwO1xuICAgICAgb25EaXNjb25uZWN0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRGlzY29ubmVjdGVkKHdzLCBldik7XG4gICAgICBpZiAoIWV4cGxpY2l0bHlDbG9zZWQgJiYgb3B0aW9ucy5hdXRvUmVjb25uZWN0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICByZXRyaWVzID0gLTEsXG4gICAgICAgICAgZGVsYXkgPSAxZTMsXG4gICAgICAgICAgb25GYWlsZWRcbiAgICAgICAgfSA9IHJlc29sdmVOZXN0ZWRPcHRpb25zKG9wdGlvbnMuYXV0b1JlY29ubmVjdCk7XG4gICAgICAgIHJldHJpZWQgKz0gMTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXRyaWVzID09PSBcIm51bWJlclwiICYmIChyZXRyaWVzIDwgMCB8fCByZXRyaWVkIDwgcmV0cmllcykpXG4gICAgICAgICAgc2V0VGltZW91dChfaW5pdCwgZGVsYXkpO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2YgcmV0cmllcyA9PT0gXCJmdW5jdGlvblwiICYmIHJldHJpZXMoKSlcbiAgICAgICAgICBzZXRUaW1lb3V0KF9pbml0LCBkZWxheSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvbkZhaWxlZCA9PSBudWxsID8gdm9pZCAwIDogb25GYWlsZWQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdzLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgb25FcnJvciA9PSBudWxsID8gdm9pZCAwIDogb25FcnJvcih3cywgZSk7XG4gICAgfTtcbiAgICB3cy5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgZGF0YS52YWx1ZSA9IGUuZGF0YTtcbiAgICAgIG9uTWVzc2FnZSA9PSBudWxsID8gdm9pZCAwIDogb25NZXNzYWdlKHdzLCBlKTtcbiAgICB9O1xuICB9O1xuICBpZiAob3B0aW9ucy5oZWFydGJlYXQpIHtcbiAgICBjb25zdCB7XG4gICAgICBtZXNzYWdlID0gXCJwaW5nXCIsXG4gICAgICBpbnRlcnZhbCA9IDFlM1xuICAgIH0gPSByZXNvbHZlTmVzdGVkT3B0aW9ucyhvcHRpb25zLmhlYXJ0YmVhdCk7XG4gICAgY29uc3QgeyBwYXVzZSwgcmVzdW1lIH0gPSBzaGFyZWQudXNlSW50ZXJ2YWxGbigoKSA9PiBzZW5kKG1lc3NhZ2UsIGZhbHNlKSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiBmYWxzZSB9KTtcbiAgICBoZWFydGJlYXRQYXVzZSA9IHBhdXNlO1xuICAgIGhlYXJ0YmVhdFJlc3VtZSA9IHJlc3VtZTtcbiAgfVxuICBpZiAoaW1tZWRpYXRlKVxuICAgIF9pbml0KCk7XG4gIGlmIChhdXRvQ2xvc2UpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJiZWZvcmV1bmxvYWRcIiwgKCkgPT4gY2xvc2UoKSk7XG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKGNsb3NlKTtcbiAgfVxuICBjb25zdCBvcGVuID0gKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gICAgcmV0cmllZCA9IDA7XG4gICAgX2luaXQoKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIHN0YXR1cyxcbiAgICBjbG9zZSxcbiAgICBzZW5kLFxuICAgIG9wZW4sXG4gICAgd3M6IHdzUmVmXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVdlYldvcmtlcih1cmwsIHdvcmtlck9wdGlvbnMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCB3b3JrZXIgPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgY29uc3QgcG9zdCA9IGZ1bmN0aW9uIHBvc3QyKHZhbCkge1xuICAgIGlmICghd29ya2VyLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHdvcmtlci52YWx1ZS5wb3N0TWVzc2FnZSh2YWwpO1xuICB9O1xuICBjb25zdCB0ZXJtaW5hdGUgPSBmdW5jdGlvbiB0ZXJtaW5hdGUyKCkge1xuICAgIGlmICghd29ya2VyLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHdvcmtlci52YWx1ZS50ZXJtaW5hdGUoKTtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHdvcmtlci52YWx1ZSA9IG5ldyBXb3JrZXIodXJsLCB3b3JrZXJPcHRpb25zKTtcbiAgICB3b3JrZXIudmFsdWUub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgfTtcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgICAgaWYgKHdvcmtlci52YWx1ZSlcbiAgICAgICAgd29ya2VyLnZhbHVlLnRlcm1pbmF0ZSgpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBwb3N0LFxuICAgIHRlcm1pbmF0ZSxcbiAgICB3b3JrZXJcbiAgfTtcbn1cblxuY29uc3Qgam9iUnVubmVyID0gKHVzZXJGdW5jKSA9PiAoZSkgPT4ge1xuICBjb25zdCB1c2VyRnVuY0FyZ3MgPSBlLmRhdGFbMF07XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodXNlckZ1bmMuYXBwbHkodm9pZCAwLCB1c2VyRnVuY0FyZ3MpKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICBwb3N0TWVzc2FnZShbXCJTVUNDRVNTXCIsIHJlc3VsdF0pO1xuICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBwb3N0TWVzc2FnZShbXCJFUlJPUlwiLCBlcnJvcl0pO1xuICB9KTtcbn07XG5cbmNvbnN0IGRlcHNQYXJzZXIgPSAoZGVwcykgPT4ge1xuICBpZiAoZGVwcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFwiXCI7XG4gIGNvbnN0IGRlcHNTdHJpbmcgPSBkZXBzLm1hcCgoZGVwKSA9PiBgJyR7ZGVwfSdgKS50b1N0cmluZygpO1xuICByZXR1cm4gYGltcG9ydFNjcmlwdHMoJHtkZXBzU3RyaW5nfSlgO1xufTtcblxuY29uc3QgY3JlYXRlV29ya2VyQmxvYlVybCA9IChmbiwgZGVwcykgPT4ge1xuICBjb25zdCBibG9iQ29kZSA9IGAke2RlcHNQYXJzZXIoZGVwcyl9OyBvbm1lc3NhZ2U9KCR7am9iUnVubmVyfSkoJHtmbn0pYDtcbiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtibG9iQ29kZV0sIHsgdHlwZTogXCJ0ZXh0L2phdmFzY3JpcHRcIiB9KTtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgcmV0dXJuIHVybDtcbn07XG5cbmNvbnN0IHVzZVdlYldvcmtlckZuID0gKGZuLCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGRlcGVuZGVuY2llcyA9IFtdLFxuICAgIHRpbWVvdXQsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgd29ya2VyID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3Qgd29ya2VyU3RhdHVzID0gdnVlRGVtaS5yZWYoXCJQRU5ESU5HXCIpO1xuICBjb25zdCBwcm9taXNlID0gdnVlRGVtaS5yZWYoe30pO1xuICBjb25zdCB0aW1lb3V0SWQgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCB3b3JrZXJUZXJtaW5hdGUgPSAoc3RhdHVzID0gXCJQRU5ESU5HXCIpID0+IHtcbiAgICBpZiAod29ya2VyLnZhbHVlICYmIHdvcmtlci52YWx1ZS5fdXJsICYmIHdpbmRvdykge1xuICAgICAgd29ya2VyLnZhbHVlLnRlcm1pbmF0ZSgpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh3b3JrZXIudmFsdWUuX3VybCk7XG4gICAgICBwcm9taXNlLnZhbHVlID0ge307XG4gICAgICB3b3JrZXIudmFsdWUgPSB2b2lkIDA7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gICAgICB3b3JrZXJTdGF0dXMudmFsdWUgPSBzdGF0dXM7XG4gICAgfVxuICB9O1xuICB3b3JrZXJUZXJtaW5hdGUoKTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHdvcmtlclRlcm1pbmF0ZSk7XG4gIGNvbnN0IGdlbmVyYXRlV29ya2VyID0gKCkgPT4ge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBjcmVhdGVXb3JrZXJCbG9iVXJsKGZuLCBkZXBlbmRlbmNpZXMpO1xuICAgIGNvbnN0IG5ld1dvcmtlciA9IG5ldyBXb3JrZXIoYmxvYlVybCk7XG4gICAgbmV3V29ya2VyLl91cmwgPSBibG9iVXJsO1xuICAgIG5ld1dvcmtlci5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgY29uc3QgeyByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgfSwgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgfSB9ID0gcHJvbWlzZS52YWx1ZTtcbiAgICAgIGNvbnN0IFtzdGF0dXMsIHJlc3VsdF0gPSBlLmRhdGE7XG4gICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICBjYXNlIFwiU1VDQ0VTU1wiOlxuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB3b3JrZXJUZXJtaW5hdGUoc3RhdHVzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWplY3QocmVzdWx0KTtcbiAgICAgICAgICB3b3JrZXJUZXJtaW5hdGUoXCJFUlJPUlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuICAgIG5ld1dvcmtlci5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgfSB9ID0gcHJvbWlzZS52YWx1ZTtcbiAgICAgIHJlamVjdChlKTtcbiAgICAgIHdvcmtlclRlcm1pbmF0ZShcIkVSUk9SXCIpO1xuICAgIH07XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoKCkgPT4gd29ya2VyVGVybWluYXRlKFwiVElNRU9VVF9FWFBJUkVEXCIpLCB0aW1lb3V0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1dvcmtlcjtcbiAgfTtcbiAgY29uc3QgY2FsbFdvcmtlciA9ICguLi5mbkFyZ3MpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBwcm9taXNlLnZhbHVlID0ge1xuICAgICAgcmVzb2x2ZSxcbiAgICAgIHJlamVjdFxuICAgIH07XG4gICAgd29ya2VyLnZhbHVlICYmIHdvcmtlci52YWx1ZS5wb3N0TWVzc2FnZShbWy4uLmZuQXJnc11dKTtcbiAgICB3b3JrZXJTdGF0dXMudmFsdWUgPSBcIlJVTk5JTkdcIjtcbiAgfSk7XG4gIGNvbnN0IHdvcmtlckZuID0gKC4uLmZuQXJncykgPT4ge1xuICAgIGlmICh3b3JrZXJTdGF0dXMudmFsdWUgPT09IFwiUlVOTklOR1wiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW3VzZVdlYldvcmtlckZuXSBZb3UgY2FuIG9ubHkgcnVuIG9uZSBpbnN0YW5jZSBvZiB0aGUgd29ya2VyIGF0IGEgdGltZS5cIik7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICB9XG4gICAgd29ya2VyLnZhbHVlID0gZ2VuZXJhdGVXb3JrZXIoKTtcbiAgICByZXR1cm4gY2FsbFdvcmtlciguLi5mbkFyZ3MpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHdvcmtlckZuLFxuICAgIHdvcmtlclN0YXR1cyxcbiAgICB3b3JrZXJUZXJtaW5hdGVcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHVzZVdpbmRvd0ZvY3VzKHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0ge30pIHtcbiAgaWYgKCF3aW5kb3cpXG4gICAgcmV0dXJuIHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZm9jdXNlZCA9IHZ1ZURlbWkucmVmKHdpbmRvdy5kb2N1bWVudC5oYXNGb2N1cygpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiYmx1clwiLCAoKSA9PiB7XG4gICAgZm9jdXNlZC52YWx1ZSA9IGZhbHNlO1xuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZm9jdXNcIiwgKCkgPT4ge1xuICAgIGZvY3VzZWQudmFsdWUgPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIGZvY3VzZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZVdpbmRvd1Njcm9sbCh7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IHt9KSB7XG4gIGlmICghd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHZ1ZURlbWkucmVmKDApLFxuICAgICAgeTogdnVlRGVtaS5yZWYoMClcbiAgICB9O1xuICB9XG4gIGNvbnN0IHggPSB2dWVEZW1pLnJlZih3aW5kb3cucGFnZVhPZmZzZXQpO1xuICBjb25zdCB5ID0gdnVlRGVtaS5yZWYod2luZG93LnBhZ2VZT2Zmc2V0KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCAoKSA9PiB7XG4gICAgeC52YWx1ZSA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICB5LnZhbHVlID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICB9LCB7XG4gICAgY2FwdHVyZTogZmFsc2UsXG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIHsgeCwgeSB9O1xufVxuXG5mdW5jdGlvbiB1c2VXaW5kb3dTaXplKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBpbml0aWFsV2lkdGggPSBJbmZpbml0eSxcbiAgICBpbml0aWFsSGVpZ2h0ID0gSW5maW5pdHksXG4gICAgbGlzdGVuT3JpZW50YXRpb24gPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB3aWR0aCA9IHZ1ZURlbWkucmVmKGluaXRpYWxXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IHZ1ZURlbWkucmVmKGluaXRpYWxIZWlnaHQpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgd2lkdGgudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgIGhlaWdodC52YWx1ZSA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG4gIH07XG4gIHVwZGF0ZSgpO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKHVwZGF0ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIGlmIChsaXN0ZW5PcmllbnRhdGlvbilcbiAgICB1c2VFdmVudExpc3RlbmVyKFwib3JpZW50YXRpb25jaGFuZ2VcIiwgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcbn1cblxuZXhwb3J0cy5EZWZhdWx0TWFnaWNLZXlzQWxpYXNNYXAgPSBEZWZhdWx0TWFnaWNLZXlzQWxpYXNNYXA7XG5leHBvcnRzLlN0b3JhZ2VTZXJpYWxpemVycyA9IFN0b3JhZ2VTZXJpYWxpemVycztcbmV4cG9ydHMuVHJhbnNpdGlvblByZXNldHMgPSBUcmFuc2l0aW9uUHJlc2V0cztcbmV4cG9ydHMuYXN5bmNDb21wdXRlZCA9IGNvbXB1dGVkQXN5bmM7XG5leHBvcnRzLmJyZWFrcG9pbnRzQW50RGVzaWduID0gYnJlYWtwb2ludHNBbnREZXNpZ247XG5leHBvcnRzLmJyZWFrcG9pbnRzQm9vdHN0cmFwVjUgPSBicmVha3BvaW50c0Jvb3RzdHJhcFY1O1xuZXhwb3J0cy5icmVha3BvaW50c1F1YXNhciA9IGJyZWFrcG9pbnRzUXVhc2FyO1xuZXhwb3J0cy5icmVha3BvaW50c1NlbWF0aWMgPSBicmVha3BvaW50c1NlbWF0aWM7XG5leHBvcnRzLmJyZWFrcG9pbnRzVGFpbHdpbmQgPSBicmVha3BvaW50c1RhaWx3aW5kO1xuZXhwb3J0cy5icmVha3BvaW50c1Z1ZXRpZnkgPSBicmVha3BvaW50c1Z1ZXRpZnk7XG5leHBvcnRzLmNvbXB1dGVkQXN5bmMgPSBjb21wdXRlZEFzeW5jO1xuZXhwb3J0cy5jb21wdXRlZEluamVjdCA9IGNvbXB1dGVkSW5qZWN0O1xuZXhwb3J0cy5jcmVhdGVGZXRjaCA9IGNyZWF0ZUZldGNoO1xuZXhwb3J0cy5jcmVhdGVVbnJlZkZuID0gY3JlYXRlVW5yZWZGbjtcbmV4cG9ydHMuZGVmYXVsdERvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50O1xuZXhwb3J0cy5kZWZhdWx0TG9jYXRpb24gPSBkZWZhdWx0TG9jYXRpb247XG5leHBvcnRzLmRlZmF1bHROYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yO1xuZXhwb3J0cy5kZWZhdWx0V2luZG93ID0gZGVmYXVsdFdpbmRvdztcbmV4cG9ydHMuZ2V0U1NSSGFuZGxlciA9IGdldFNTUkhhbmRsZXI7XG5leHBvcnRzLm1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyID0gbWFwR2FtZXBhZFRvWGJveDM2MENvbnRyb2xsZXI7XG5leHBvcnRzLm9uQ2xpY2tPdXRzaWRlID0gb25DbGlja091dHNpZGU7XG5leHBvcnRzLm9uS2V5RG93biA9IG9uS2V5RG93bjtcbmV4cG9ydHMub25LZXlQcmVzc2VkID0gb25LZXlQcmVzc2VkO1xuZXhwb3J0cy5vbktleVN0cm9rZSA9IG9uS2V5U3Ryb2tlO1xuZXhwb3J0cy5vbktleVVwID0gb25LZXlVcDtcbmV4cG9ydHMub25Mb25nUHJlc3MgPSBvbkxvbmdQcmVzcztcbmV4cG9ydHMub25TdGFydFR5cGluZyA9IG9uU3RhcnRUeXBpbmc7XG5leHBvcnRzLnNldFNTUkhhbmRsZXIgPSBzZXRTU1JIYW5kbGVyO1xuZXhwb3J0cy50ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuZXhwb3J0cy51bnJlZkVsZW1lbnQgPSB1bnJlZkVsZW1lbnQ7XG5leHBvcnRzLnVzZUFjdGl2ZUVsZW1lbnQgPSB1c2VBY3RpdmVFbGVtZW50O1xuZXhwb3J0cy51c2VBc3luY1F1ZXVlID0gdXNlQXN5bmNRdWV1ZTtcbmV4cG9ydHMudXNlQXN5bmNTdGF0ZSA9IHVzZUFzeW5jU3RhdGU7XG5leHBvcnRzLnVzZUJhc2U2NCA9IHVzZUJhc2U2NDtcbmV4cG9ydHMudXNlQmF0dGVyeSA9IHVzZUJhdHRlcnk7XG5leHBvcnRzLnVzZUJsdWV0b290aCA9IHVzZUJsdWV0b290aDtcbmV4cG9ydHMudXNlQnJlYWtwb2ludHMgPSB1c2VCcmVha3BvaW50cztcbmV4cG9ydHMudXNlQnJvYWRjYXN0Q2hhbm5lbCA9IHVzZUJyb2FkY2FzdENoYW5uZWw7XG5leHBvcnRzLnVzZUJyb3dzZXJMb2NhdGlvbiA9IHVzZUJyb3dzZXJMb2NhdGlvbjtcbmV4cG9ydHMudXNlQ2FjaGVkID0gdXNlQ2FjaGVkO1xuZXhwb3J0cy51c2VDbGFtcCA9IHVzZUNsYW1wO1xuZXhwb3J0cy51c2VDbGlwYm9hcmQgPSB1c2VDbGlwYm9hcmQ7XG5leHBvcnRzLnVzZUNvbG9yTW9kZSA9IHVzZUNvbG9yTW9kZTtcbmV4cG9ydHMudXNlQ29uZmlybURpYWxvZyA9IHVzZUNvbmZpcm1EaWFsb2c7XG5leHBvcnRzLnVzZUNzc1ZhciA9IHVzZUNzc1ZhcjtcbmV4cG9ydHMudXNlQ3VycmVudEVsZW1lbnQgPSB1c2VDdXJyZW50RWxlbWVudDtcbmV4cG9ydHMudXNlQ3ljbGVMaXN0ID0gdXNlQ3ljbGVMaXN0O1xuZXhwb3J0cy51c2VEYXJrID0gdXNlRGFyaztcbmV4cG9ydHMudXNlRGVib3VuY2VkUmVmSGlzdG9yeSA9IHVzZURlYm91bmNlZFJlZkhpc3Rvcnk7XG5leHBvcnRzLnVzZURldmljZU1vdGlvbiA9IHVzZURldmljZU1vdGlvbjtcbmV4cG9ydHMudXNlRGV2aWNlT3JpZW50YXRpb24gPSB1c2VEZXZpY2VPcmllbnRhdGlvbjtcbmV4cG9ydHMudXNlRGV2aWNlUGl4ZWxSYXRpbyA9IHVzZURldmljZVBpeGVsUmF0aW87XG5leHBvcnRzLnVzZURldmljZXNMaXN0ID0gdXNlRGV2aWNlc0xpc3Q7XG5leHBvcnRzLnVzZURpc3BsYXlNZWRpYSA9IHVzZURpc3BsYXlNZWRpYTtcbmV4cG9ydHMudXNlRG9jdW1lbnRWaXNpYmlsaXR5ID0gdXNlRG9jdW1lbnRWaXNpYmlsaXR5O1xuZXhwb3J0cy51c2VEcmFnZ2FibGUgPSB1c2VEcmFnZ2FibGU7XG5leHBvcnRzLnVzZURyb3Bab25lID0gdXNlRHJvcFpvbmU7XG5leHBvcnRzLnVzZUVsZW1lbnRCb3VuZGluZyA9IHVzZUVsZW1lbnRCb3VuZGluZztcbmV4cG9ydHMudXNlRWxlbWVudEJ5UG9pbnQgPSB1c2VFbGVtZW50QnlQb2ludDtcbmV4cG9ydHMudXNlRWxlbWVudEhvdmVyID0gdXNlRWxlbWVudEhvdmVyO1xuZXhwb3J0cy51c2VFbGVtZW50U2l6ZSA9IHVzZUVsZW1lbnRTaXplO1xuZXhwb3J0cy51c2VFbGVtZW50VmlzaWJpbGl0eSA9IHVzZUVsZW1lbnRWaXNpYmlsaXR5O1xuZXhwb3J0cy51c2VFdmVudEJ1cyA9IHVzZUV2ZW50QnVzO1xuZXhwb3J0cy51c2VFdmVudExpc3RlbmVyID0gdXNlRXZlbnRMaXN0ZW5lcjtcbmV4cG9ydHMudXNlRXZlbnRTb3VyY2UgPSB1c2VFdmVudFNvdXJjZTtcbmV4cG9ydHMudXNlRXllRHJvcHBlciA9IHVzZUV5ZURyb3BwZXI7XG5leHBvcnRzLnVzZUZhdmljb24gPSB1c2VGYXZpY29uO1xuZXhwb3J0cy51c2VGZXRjaCA9IHVzZUZldGNoO1xuZXhwb3J0cy51c2VGaWxlRGlhbG9nID0gdXNlRmlsZURpYWxvZztcbmV4cG9ydHMudXNlRmlsZVN5c3RlbUFjY2VzcyA9IHVzZUZpbGVTeXN0ZW1BY2Nlc3M7XG5leHBvcnRzLnVzZUZvY3VzID0gdXNlRm9jdXM7XG5leHBvcnRzLnVzZUZvY3VzV2l0aGluID0gdXNlRm9jdXNXaXRoaW47XG5leHBvcnRzLnVzZUZwcyA9IHVzZUZwcztcbmV4cG9ydHMudXNlRnVsbHNjcmVlbiA9IHVzZUZ1bGxzY3JlZW47XG5leHBvcnRzLnVzZUdhbWVwYWQgPSB1c2VHYW1lcGFkO1xuZXhwb3J0cy51c2VHZW9sb2NhdGlvbiA9IHVzZUdlb2xvY2F0aW9uO1xuZXhwb3J0cy51c2VJZGxlID0gdXNlSWRsZTtcbmV4cG9ydHMudXNlSW1hZ2UgPSB1c2VJbWFnZTtcbmV4cG9ydHMudXNlSW5maW5pdGVTY3JvbGwgPSB1c2VJbmZpbml0ZVNjcm9sbDtcbmV4cG9ydHMudXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB1c2VJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbmV4cG9ydHMudXNlS2V5TW9kaWZpZXIgPSB1c2VLZXlNb2RpZmllcjtcbmV4cG9ydHMudXNlTG9jYWxTdG9yYWdlID0gdXNlTG9jYWxTdG9yYWdlO1xuZXhwb3J0cy51c2VNYWdpY0tleXMgPSB1c2VNYWdpY0tleXM7XG5leHBvcnRzLnVzZU1hbnVhbFJlZkhpc3RvcnkgPSB1c2VNYW51YWxSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VNZWRpYUNvbnRyb2xzID0gdXNlTWVkaWFDb250cm9scztcbmV4cG9ydHMudXNlTWVkaWFRdWVyeSA9IHVzZU1lZGlhUXVlcnk7XG5leHBvcnRzLnVzZU1lbW9pemUgPSB1c2VNZW1vaXplO1xuZXhwb3J0cy51c2VNZW1vcnkgPSB1c2VNZW1vcnk7XG5leHBvcnRzLnVzZU1vdW50ZWQgPSB1c2VNb3VudGVkO1xuZXhwb3J0cy51c2VNb3VzZSA9IHVzZU1vdXNlO1xuZXhwb3J0cy51c2VNb3VzZUluRWxlbWVudCA9IHVzZU1vdXNlSW5FbGVtZW50O1xuZXhwb3J0cy51c2VNb3VzZVByZXNzZWQgPSB1c2VNb3VzZVByZXNzZWQ7XG5leHBvcnRzLnVzZU11dGF0aW9uT2JzZXJ2ZXIgPSB1c2VNdXRhdGlvbk9ic2VydmVyO1xuZXhwb3J0cy51c2VOYXZpZ2F0b3JMYW5ndWFnZSA9IHVzZU5hdmlnYXRvckxhbmd1YWdlO1xuZXhwb3J0cy51c2VOZXR3b3JrID0gdXNlTmV0d29yaztcbmV4cG9ydHMudXNlTm93ID0gdXNlTm93O1xuZXhwb3J0cy51c2VPYmplY3RVcmwgPSB1c2VPYmplY3RVcmw7XG5leHBvcnRzLnVzZU9mZnNldFBhZ2luYXRpb24gPSB1c2VPZmZzZXRQYWdpbmF0aW9uO1xuZXhwb3J0cy51c2VPbmxpbmUgPSB1c2VPbmxpbmU7XG5leHBvcnRzLnVzZVBhZ2VMZWF2ZSA9IHVzZVBhZ2VMZWF2ZTtcbmV4cG9ydHMudXNlUGFyYWxsYXggPSB1c2VQYXJhbGxheDtcbmV4cG9ydHMudXNlUGVybWlzc2lvbiA9IHVzZVBlcm1pc3Npb247XG5leHBvcnRzLnVzZVBvaW50ZXIgPSB1c2VQb2ludGVyO1xuZXhwb3J0cy51c2VQb2ludGVyU3dpcGUgPSB1c2VQb2ludGVyU3dpcGU7XG5leHBvcnRzLnVzZVByZWZlcnJlZENvbG9yU2NoZW1lID0gdXNlUHJlZmVycmVkQ29sb3JTY2hlbWU7XG5leHBvcnRzLnVzZVByZWZlcnJlZERhcmsgPSB1c2VQcmVmZXJyZWREYXJrO1xuZXhwb3J0cy51c2VQcmVmZXJyZWRMYW5ndWFnZXMgPSB1c2VQcmVmZXJyZWRMYW5ndWFnZXM7XG5leHBvcnRzLnVzZVJhZkZuID0gdXNlUmFmRm47XG5leHBvcnRzLnVzZVJlZkhpc3RvcnkgPSB1c2VSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VSZXNpemVPYnNlcnZlciA9IHVzZVJlc2l6ZU9ic2VydmVyO1xuZXhwb3J0cy51c2VTY3JlZW5PcmllbnRhdGlvbiA9IHVzZVNjcmVlbk9yaWVudGF0aW9uO1xuZXhwb3J0cy51c2VTY3JlZW5TYWZlQXJlYSA9IHVzZVNjcmVlblNhZmVBcmVhO1xuZXhwb3J0cy51c2VTY3JpcHRUYWcgPSB1c2VTY3JpcHRUYWc7XG5leHBvcnRzLnVzZVNjcm9sbCA9IHVzZVNjcm9sbDtcbmV4cG9ydHMudXNlU2Nyb2xsTG9jayA9IHVzZVNjcm9sbExvY2s7XG5leHBvcnRzLnVzZVNlc3Npb25TdG9yYWdlID0gdXNlU2Vzc2lvblN0b3JhZ2U7XG5leHBvcnRzLnVzZVNoYXJlID0gdXNlU2hhcmU7XG5leHBvcnRzLnVzZVNwZWVjaFJlY29nbml0aW9uID0gdXNlU3BlZWNoUmVjb2duaXRpb247XG5leHBvcnRzLnVzZVNwZWVjaFN5bnRoZXNpcyA9IHVzZVNwZWVjaFN5bnRoZXNpcztcbmV4cG9ydHMudXNlU3RlcHBlciA9IHVzZVN0ZXBwZXI7XG5leHBvcnRzLnVzZVN0b3JhZ2UgPSB1c2VTdG9yYWdlO1xuZXhwb3J0cy51c2VTdG9yYWdlQXN5bmMgPSB1c2VTdG9yYWdlQXN5bmM7XG5leHBvcnRzLnVzZVN0eWxlVGFnID0gdXNlU3R5bGVUYWc7XG5leHBvcnRzLnVzZVN3aXBlID0gdXNlU3dpcGU7XG5leHBvcnRzLnVzZVRlbXBsYXRlUmVmc0xpc3QgPSB1c2VUZW1wbGF0ZVJlZnNMaXN0O1xuZXhwb3J0cy51c2VUZXh0U2VsZWN0aW9uID0gdXNlVGV4dFNlbGVjdGlvbjtcbmV4cG9ydHMudXNlVGV4dGFyZWFBdXRvc2l6ZSA9IHVzZVRleHRhcmVhQXV0b3NpemU7XG5leHBvcnRzLnVzZVRocm90dGxlZFJlZkhpc3RvcnkgPSB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VUaW1lQWdvID0gdXNlVGltZUFnbztcbmV4cG9ydHMudXNlVGltZW91dFBvbGwgPSB1c2VUaW1lb3V0UG9sbDtcbmV4cG9ydHMudXNlVGltZXN0YW1wID0gdXNlVGltZXN0YW1wO1xuZXhwb3J0cy51c2VUaXRsZSA9IHVzZVRpdGxlO1xuZXhwb3J0cy51c2VUcmFuc2l0aW9uID0gdXNlVHJhbnNpdGlvbjtcbmV4cG9ydHMudXNlVXJsU2VhcmNoUGFyYW1zID0gdXNlVXJsU2VhcmNoUGFyYW1zO1xuZXhwb3J0cy51c2VVc2VyTWVkaWEgPSB1c2VVc2VyTWVkaWE7XG5leHBvcnRzLnVzZVZNb2RlbCA9IHVzZVZNb2RlbDtcbmV4cG9ydHMudXNlVk1vZGVscyA9IHVzZVZNb2RlbHM7XG5leHBvcnRzLnVzZVZpYnJhdGUgPSB1c2VWaWJyYXRlO1xuZXhwb3J0cy51c2VWaXJ0dWFsTGlzdCA9IHVzZVZpcnR1YWxMaXN0O1xuZXhwb3J0cy51c2VXYWtlTG9jayA9IHVzZVdha2VMb2NrO1xuZXhwb3J0cy51c2VXZWJOb3RpZmljYXRpb24gPSB1c2VXZWJOb3RpZmljYXRpb247XG5leHBvcnRzLnVzZVdlYlNvY2tldCA9IHVzZVdlYlNvY2tldDtcbmV4cG9ydHMudXNlV2ViV29ya2VyID0gdXNlV2ViV29ya2VyO1xuZXhwb3J0cy51c2VXZWJXb3JrZXJGbiA9IHVzZVdlYldvcmtlckZuO1xuZXhwb3J0cy51c2VXaW5kb3dGb2N1cyA9IHVzZVdpbmRvd0ZvY3VzO1xuZXhwb3J0cy51c2VXaW5kb3dTY3JvbGwgPSB1c2VXaW5kb3dTY3JvbGw7XG5leHBvcnRzLnVzZVdpbmRvd1NpemUgPSB1c2VXaW5kb3dTaXplO1xuT2JqZWN0LmtleXMoc2hhcmVkKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gIGlmIChrICE9PSAnZGVmYXVsdCcgJiYgIWV4cG9ydHMuaGFzT3duUHJvcGVydHkoaykpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoYXJlZFtrXTsgfVxuICB9KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgdnVlRGVtaSA9IHJlcXVpcmUoJ3Z1ZS1kZW1pJyk7XG5cbnZhciBfX2RlZlByb3AkOSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDYgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ2ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRiID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkYiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGIgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ5ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ5KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ5ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkYi5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDkoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGIpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGIoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kYi5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkOShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDYgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ2KGEsIF9fZ2V0T3duUHJvcERlc2NzJDYoYikpO1xuZnVuY3Rpb24gY29tcHV0ZWRFYWdlcihmbiwgb3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KCgpID0+IHtcbiAgICByZXN1bHQudmFsdWUgPSBmbigpO1xuICB9LCBfX3NwcmVhZFByb3BzJDYoX19zcHJlYWRWYWx1ZXMkOSh7fSwgb3B0aW9ucyksIHtcbiAgICBmbHVzaDogKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5mbHVzaCkgIT0gbnVsbCA/IF9hIDogXCJzeW5jXCJcbiAgfSkpO1xuICByZXR1cm4gdnVlRGVtaS5yZWFkb25seShyZXN1bHQpO1xufVxuXG52YXIgX2E7XG5jb25zdCBpc0NsaWVudCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCI7XG5jb25zdCBpc0RlZiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgIT09IFwidW5kZWZpbmVkXCI7XG5jb25zdCBhc3NlcnQgPSAoY29uZGl0aW9uLCAuLi5pbmZvcykgPT4ge1xuICBpZiAoIWNvbmRpdGlvbilcbiAgICBjb25zb2xlLndhcm4oLi4uaW5mb3MpO1xufTtcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmNvbnN0IGlzQm9vbGVhbiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwiYm9vbGVhblwiO1xuY29uc3QgaXNGdW5jdGlvbiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwiZnVuY3Rpb25cIjtcbmNvbnN0IGlzTnVtYmVyID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIjtcbmNvbnN0IGlzU3RyaW5nID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIjtcbmNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xuY29uc3QgaXNXaW5kb3cgPSAodmFsKSA9PiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gXCJbb2JqZWN0IFdpbmRvd11cIjtcbmNvbnN0IG5vdyA9ICgpID0+IERhdGUubm93KCk7XG5jb25zdCB0aW1lc3RhbXAgPSAoKSA9PiArRGF0ZS5ub3coKTtcbmNvbnN0IGNsYW1wID0gKG4sIG1pbiwgbWF4KSA9PiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgbikpO1xuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5jb25zdCByYW5kID0gKG1pbiwgbWF4KSA9PiB7XG4gIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xufTtcbmNvbnN0IGlzSU9TID0gaXNDbGllbnQgJiYgKChfYSA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lm5hdmlnYXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgJiYgL2lQKGFkfGhvbmV8b2QpLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZnVuY3Rpb24gY3JlYXRlRmlsdGVyV3JhcHBlcihmaWx0ZXIsIGZuKSB7XG4gIGZ1bmN0aW9uIHdyYXBwZXIoLi4uYXJncykge1xuICAgIGZpbHRlcigoKSA9PiBmbi5hcHBseSh0aGlzLCBhcmdzKSwgeyBmbiwgdGhpc0FyZzogdGhpcywgYXJncyB9KTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cbmNvbnN0IGJ5cGFzc0ZpbHRlciA9IChpbnZva2UpID0+IHtcbiAgcmV0dXJuIGludm9rZSgpO1xufTtcbmZ1bmN0aW9uIGRlYm91bmNlRmlsdGVyKG1zLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHRpbWVyO1xuICBsZXQgbWF4VGltZXI7XG4gIGNvbnN0IGZpbHRlciA9IChpbnZva2UpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHZ1ZURlbWkudW5yZWYobXMpO1xuICAgIGNvbnN0IG1heER1cmF0aW9uID0gdnVlRGVtaS51bnJlZihvcHRpb25zLm1heFdhaXQpO1xuICAgIGlmICh0aW1lcilcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgaWYgKGR1cmF0aW9uIDw9IDAgfHwgbWF4RHVyYXRpb24gIT09IHZvaWQgMCAmJiBtYXhEdXJhdGlvbiA8PSAwKSB7XG4gICAgICBpZiAobWF4VGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KG1heFRpbWVyKTtcbiAgICAgICAgbWF4VGltZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGludm9rZSgpO1xuICAgIH1cbiAgICBpZiAobWF4RHVyYXRpb24gJiYgIW1heFRpbWVyKSB7XG4gICAgICBtYXhUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGltZXIpXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgbWF4VGltZXIgPSBudWxsO1xuICAgICAgICBpbnZva2UoKTtcbiAgICAgIH0sIG1heER1cmF0aW9uKTtcbiAgICB9XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChtYXhUaW1lcilcbiAgICAgICAgY2xlYXJUaW1lb3V0KG1heFRpbWVyKTtcbiAgICAgIG1heFRpbWVyID0gbnVsbDtcbiAgICAgIGludm9rZSgpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgfTtcbiAgcmV0dXJuIGZpbHRlcjtcbn1cbmZ1bmN0aW9uIHRocm90dGxlRmlsdGVyKG1zLCB0cmFpbGluZyA9IHRydWUsIGxlYWRpbmcgPSB0cnVlKSB7XG4gIGxldCBsYXN0RXhlYyA9IDA7XG4gIGxldCB0aW1lcjtcbiAgbGV0IGlzTGVhZGluZyA9IHRydWU7XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZmlsdGVyID0gKGludm9rZSkgPT4ge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdnVlRGVtaS51bnJlZihtcyk7XG4gICAgY29uc3QgZWxhcHNlZCA9IERhdGUubm93KCkgLSBsYXN0RXhlYztcbiAgICBjbGVhcigpO1xuICAgIGlmIChkdXJhdGlvbiA8PSAwKSB7XG4gICAgICBsYXN0RXhlYyA9IERhdGUubm93KCk7XG4gICAgICByZXR1cm4gaW52b2tlKCk7XG4gICAgfVxuICAgIGlmIChlbGFwc2VkID4gZHVyYXRpb24gJiYgKGxlYWRpbmcgfHwgIWlzTGVhZGluZykpIHtcbiAgICAgIGxhc3RFeGVjID0gRGF0ZS5ub3coKTtcbiAgICAgIGludm9rZSgpO1xuICAgIH0gZWxzZSBpZiAodHJhaWxpbmcpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxhc3RFeGVjID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaXNMZWFkaW5nID0gdHJ1ZTtcbiAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgaW52b2tlKCk7XG4gICAgICB9LCBkdXJhdGlvbik7XG4gICAgfVxuICAgIGlmICghbGVhZGluZyAmJiAhdGltZXIpXG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gaXNMZWFkaW5nID0gdHJ1ZSwgZHVyYXRpb24pO1xuICAgIGlzTGVhZGluZyA9IGZhbHNlO1xuICB9O1xuICByZXR1cm4gZmlsdGVyO1xufVxuZnVuY3Rpb24gcGF1c2FibGVGaWx0ZXIoZXh0ZW5kRmlsdGVyID0gYnlwYXNzRmlsdGVyKSB7XG4gIGNvbnN0IGlzQWN0aXZlID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBldmVudEZpbHRlciA9ICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKGlzQWN0aXZlLnZhbHVlKVxuICAgICAgZXh0ZW5kRmlsdGVyKC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4geyBpc0FjdGl2ZSwgcGF1c2UsIHJlc3VtZSwgZXZlbnRGaWx0ZXIgfTtcbn1cblxuZnVuY3Rpb24gX19vbmx5VnVlMyhuYW1lID0gXCJ0aGlzIGZ1bmN0aW9uXCIpIHtcbiAgaWYgKHZ1ZURlbWkuaXNWdWUzKVxuICAgIHJldHVybjtcbiAgdGhyb3cgbmV3IEVycm9yKGBbVnVlVXNlXSAke25hbWV9IGlzIG9ubHkgd29ya3Mgb24gVnVlIDMuYCk7XG59XG5jb25zdCBkaXJlY3RpdmVIb29rcyA9IHtcbiAgbW91bnRlZDogdnVlRGVtaS5pc1Z1ZTMgPyBcIm1vdW50ZWRcIiA6IFwiaW5zZXJ0ZWRcIixcbiAgdXBkYXRlZDogdnVlRGVtaS5pc1Z1ZTMgPyBcInVwZGF0ZWRcIiA6IFwiY29tcG9uZW50VXBkYXRlZFwiLFxuICB1bm1vdW50ZWQ6IHZ1ZURlbWkuaXNWdWUzID8gXCJ1bm1vdW50ZWRcIiA6IFwidW5iaW5kXCJcbn07XG5cbmZ1bmN0aW9uIHByb21pc2VUaW1lb3V0KG1zLCB0aHJvd09uVGltZW91dCA9IGZhbHNlLCByZWFzb24gPSBcIlRpbWVvdXRcIikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICh0aHJvd09uVGltZW91dClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KHJlYXNvbiksIG1zKTtcbiAgICBlbHNlXG4gICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBpZGVudGl0eShhcmcpIHtcbiAgcmV0dXJuIGFyZztcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNpbmdsZXRvblByb21pc2UoZm4pIHtcbiAgbGV0IF9wcm9taXNlO1xuICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgIGlmICghX3Byb21pc2UpXG4gICAgICBfcHJvbWlzZSA9IGZuKCk7XG4gICAgcmV0dXJuIF9wcm9taXNlO1xuICB9XG4gIHdyYXBwZXIucmVzZXQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgX3ByZXYgPSBfcHJvbWlzZTtcbiAgICBfcHJvbWlzZSA9IHZvaWQgMDtcbiAgICBpZiAoX3ByZXYpXG4gICAgICBhd2FpdCBfcHJldjtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG5mdW5jdGlvbiBpbnZva2UoZm4pIHtcbiAgcmV0dXJuIGZuKCk7XG59XG5mdW5jdGlvbiBjb250YWluc1Byb3Aob2JqLCAuLi5wcm9wcykge1xuICByZXR1cm4gcHJvcHMuc29tZSgoaykgPT4gayBpbiBvYmopO1xufVxuZnVuY3Rpb24gaW5jcmVhc2VXaXRoVW5pdCh0YXJnZXQsIGRlbHRhKSB7XG4gIHZhciBfYTtcbiAgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwibnVtYmVyXCIpXG4gICAgcmV0dXJuIHRhcmdldCArIGRlbHRhO1xuICBjb25zdCB2YWx1ZSA9ICgoX2EgPSB0YXJnZXQubWF0Y2goL14tP1swLTldK1xcLj9bMC05XSovKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSB8fCBcIlwiO1xuICBjb25zdCB1bml0ID0gdGFyZ2V0LnNsaWNlKHZhbHVlLmxlbmd0aCk7XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlRmxvYXQodmFsdWUpICsgZGVsdGE7XG4gIGlmIChOdW1iZXIuaXNOYU4ocmVzdWx0KSlcbiAgICByZXR1cm4gdGFyZ2V0O1xuICByZXR1cm4gcmVzdWx0ICsgdW5pdDtcbn1cbmZ1bmN0aW9uIG9iamVjdFBpY2sob2JqLCBrZXlzLCBvbWl0VW5kZWZpbmVkID0gZmFsc2UpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKChuLCBrKSA9PiB7XG4gICAgaWYgKGsgaW4gb2JqKSB7XG4gICAgICBpZiAoIW9taXRVbmRlZmluZWQgfHwgb2JqW2tdICE9PSB2b2lkIDApXG4gICAgICAgIG5ba10gPSBvYmpba107XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVkV2l0aENvbnRyb2woc291cmNlLCBmbikge1xuICBsZXQgdiA9IHZvaWQgMDtcbiAgbGV0IHRyYWNrO1xuICBsZXQgdHJpZ2dlcjtcbiAgY29uc3QgZGlydHkgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGRpcnR5LnZhbHVlID0gdHJ1ZTtcbiAgICB0cmlnZ2VyKCk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goc291cmNlLCB1cGRhdGUsIHsgZmx1c2g6IFwic3luY1wiIH0pO1xuICBjb25zdCBnZXQgPSBpc0Z1bmN0aW9uKGZuKSA/IGZuIDogZm4uZ2V0O1xuICBjb25zdCBzZXQgPSBpc0Z1bmN0aW9uKGZuKSA/IHZvaWQgMCA6IGZuLnNldDtcbiAgY29uc3QgcmVzdWx0ID0gdnVlRGVtaS5jdXN0b21SZWYoKF90cmFjaywgX3RyaWdnZXIpID0+IHtcbiAgICB0cmFjayA9IF90cmFjaztcbiAgICB0cmlnZ2VyID0gX3RyaWdnZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgaWYgKGRpcnR5LnZhbHVlKSB7XG4gICAgICAgICAgdiA9IGdldCgpO1xuICAgICAgICAgIGRpcnR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdHJhY2soKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9LFxuICAgICAgc2V0KHYyKSB7XG4gICAgICAgIHNldCA9PSBudWxsID8gdm9pZCAwIDogc2V0KHYyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgaWYgKE9iamVjdC5pc0V4dGVuc2libGUocmVzdWx0KSlcbiAgICByZXN1bHQudHJpZ2dlciA9IHVwZGF0ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXZlbnRIb29rKCkge1xuICBjb25zdCBmbnMgPSBbXTtcbiAgY29uc3Qgb2ZmID0gKGZuKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBmbnMuaW5kZXhPZihmbik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgIGZucy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuICBjb25zdCBvbiA9IChmbikgPT4ge1xuICAgIGZucy5wdXNoKGZuKTtcbiAgICByZXR1cm4ge1xuICAgICAgb2ZmOiAoKSA9PiBvZmYoZm4pXG4gICAgfTtcbiAgfTtcbiAgY29uc3QgdHJpZ2dlciA9IChwYXJhbSkgPT4ge1xuICAgIGZucy5mb3JFYWNoKChmbikgPT4gZm4ocGFyYW0pKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBvbixcbiAgICBvZmYsXG4gICAgdHJpZ2dlclxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVHbG9iYWxTdGF0ZShzdGF0ZUZhY3RvcnkpIHtcbiAgbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3Qgc2NvcGUgPSB2dWVEZW1pLmVmZmVjdFNjb3BlKHRydWUpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHN0YXRlID0gc2NvcGUucnVuKHN0YXRlRmFjdG9yeSk7XG4gICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSW5qZWN0aW9uU3RhdGUoY29tcG9zYWJsZSkge1xuICBjb25zdCBrZXkgPSBTeW1ib2woXCJJbmplY3Rpb25TdGF0ZVwiKTtcbiAgY29uc3QgdXNlUHJvdmlkaW5nU3RhdGUgPSAoLi4uYXJncykgPT4ge1xuICAgIHZ1ZURlbWkucHJvdmlkZShrZXksIGNvbXBvc2FibGUoLi4uYXJncykpO1xuICB9O1xuICBjb25zdCB1c2VJbmplY3RlZFN0YXRlID0gKCkgPT4gdnVlRGVtaS5pbmplY3Qoa2V5KTtcbiAgcmV0dXJuIFt1c2VQcm92aWRpbmdTdGF0ZSwgdXNlSW5qZWN0ZWRTdGF0ZV07XG59XG5cbmZ1bmN0aW9uIHRyeU9uU2NvcGVEaXNwb3NlKGZuKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgdnVlRGVtaS5vblNjb3BlRGlzcG9zZShmbik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGFyZWRDb21wb3NhYmxlKGNvbXBvc2FibGUpIHtcbiAgbGV0IHN1YnNjcmliZXJzID0gMDtcbiAgbGV0IHN0YXRlO1xuICBsZXQgc2NvcGU7XG4gIGNvbnN0IGRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgc3Vic2NyaWJlcnMgLT0gMTtcbiAgICBpZiAoc2NvcGUgJiYgc3Vic2NyaWJlcnMgPD0gMCkge1xuICAgICAgc2NvcGUuc3RvcCgpO1xuICAgICAgc3RhdGUgPSB2b2lkIDA7XG4gICAgICBzY29wZSA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHN1YnNjcmliZXJzICs9IDE7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgc2NvcGUgPSB2dWVEZW1pLmVmZmVjdFNjb3BlKHRydWUpO1xuICAgICAgc3RhdGUgPSBzY29wZS5ydW4oKCkgPT4gY29tcG9zYWJsZSguLi5hcmdzKSk7XG4gICAgfVxuICAgIHRyeU9uU2NvcGVEaXNwb3NlKGRpc3Bvc2UpO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXh0ZW5kUmVmKHJlZiwgZXh0ZW5kLCB7IGVudW1lcmFibGUgPSBmYWxzZSwgdW53cmFwID0gdHJ1ZSB9ID0ge30pIHtcbiAgX19vbmx5VnVlMygpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHRlbmQpKSB7XG4gICAgaWYgKGtleSA9PT0gXCJ2YWx1ZVwiKVxuICAgICAgY29udGludWU7XG4gICAgaWYgKHZ1ZURlbWkuaXNSZWYodmFsdWUpICYmIHVud3JhcCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCh2KSB7XG4gICAgICAgICAgdmFsdWUudmFsdWUgPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwga2V5LCB7IHZhbHVlLCBlbnVtZXJhYmxlIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVmO1xufVxuXG5mdW5jdGlvbiBnZXQob2JqLCBrZXkpIHtcbiAgaWYgKGtleSA9PSBudWxsKVxuICAgIHJldHVybiB2dWVEZW1pLnVucmVmKG9iaik7XG4gIHJldHVybiB2dWVEZW1pLnVucmVmKG9iailba2V5XTtcbn1cblxuZnVuY3Rpb24gaXNEZWZpbmVkKHYpIHtcbiAgcmV0dXJuIHZ1ZURlbWkudW5yZWYodikgIT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gbG9naWNBbmQoLi4uYXJncykge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBhcmdzLmV2ZXJ5KChpKSA9PiB2dWVEZW1pLnVucmVmKGkpKSk7XG59XG5cbmZ1bmN0aW9uIGxvZ2ljTm90KHYpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gIXZ1ZURlbWkudW5yZWYodikpO1xufVxuXG5mdW5jdGlvbiBsb2dpY09yKC4uLmFyZ3MpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gYXJncy5zb21lKChpKSA9PiB2dWVEZW1pLnVucmVmKGkpKSk7XG59XG5cbnZhciBfX2RlZlByb3AkOCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRhID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kYSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDggPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDgob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDggPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRhLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkOChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkYSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkYShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRhLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ4KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gbWFrZURlc3RydWN0dXJhYmxlKG9iaiwgYXJyKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY29uc3QgY2xvbmUgPSBfX3NwcmVhZFZhbHVlcyQ4KHt9LCBvYmopO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZSwgU3ltYm9sLml0ZXJhdG9yLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlKCkge1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5leHQ6ICgpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogYXJyW2luZGV4KytdLFxuICAgICAgICAgICAgZG9uZTogaW5kZXggPiBhcnIubGVuZ3RoXG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oWy4uLmFycl0sIG9iaik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhY3RpZnkoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBmbi5hcHBseSh0aGlzLCBhcmdzLm1hcCgoaSkgPT4gdnVlRGVtaS51bnJlZihpKSkpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVhY3RpZnlPYmplY3Qob2JqLCBvcHRpb25zT3JLZXlzID0ge30pIHtcbiAgbGV0IGtleXMgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uc09yS2V5cykpIHtcbiAgICBrZXlzID0gb3B0aW9uc09yS2V5cztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGluY2x1ZGVPd25Qcm9wZXJ0aWVzID0gdHJ1ZSB9ID0gb3B0aW9uc09yS2V5cztcbiAgICBrZXlzLnB1c2goLi4uT2JqZWN0LmtleXMob2JqKSk7XG4gICAgaWYgKGluY2x1ZGVPd25Qcm9wZXJ0aWVzKVxuICAgICAga2V5cy5wdXNoKC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikpO1xuICB9XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoa2V5cy5tYXAoKGtleSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgcmV0dXJuIFtcbiAgICAgIGtleSxcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVhY3RpZnkodmFsdWUuYmluZChvYmopKSA6IHZhbHVlXG4gICAgXTtcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiB0b1JlYWN0aXZlKG9iamVjdFJlZikge1xuICBpZiAoIXZ1ZURlbWkuaXNSZWYob2JqZWN0UmVmKSlcbiAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShvYmplY3RSZWYpO1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh7fSwge1xuICAgIGdldChfLCBwLCByZWNlaXZlcikge1xuICAgICAgcmV0dXJuIHZ1ZURlbWkudW5yZWYoUmVmbGVjdC5nZXQob2JqZWN0UmVmLnZhbHVlLCBwLCByZWNlaXZlcikpO1xuICAgIH0sXG4gICAgc2V0KF8sIHAsIHZhbHVlKSB7XG4gICAgICBpZiAodnVlRGVtaS5pc1JlZihvYmplY3RSZWYudmFsdWVbcF0pICYmICF2dWVEZW1pLmlzUmVmKHZhbHVlKSlcbiAgICAgICAgb2JqZWN0UmVmLnZhbHVlW3BdLnZhbHVlID0gdmFsdWU7XG4gICAgICBlbHNlXG4gICAgICAgIG9iamVjdFJlZi52YWx1ZVtwXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBkZWxldGVQcm9wZXJ0eShfLCBwKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShvYmplY3RSZWYudmFsdWUsIHApO1xuICAgIH0sXG4gICAgaGFzKF8sIHApIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmhhcyhvYmplY3RSZWYudmFsdWUsIHApO1xuICAgIH0sXG4gICAgb3duS2V5cygpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3RSZWYudmFsdWUpO1xuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKHByb3h5KTtcbn1cblxuZnVuY3Rpb24gcmVhY3RpdmVDb21wdXRlZChmbikge1xuICByZXR1cm4gdG9SZWFjdGl2ZSh2dWVEZW1pLmNvbXB1dGVkKGZuKSk7XG59XG5cbmZ1bmN0aW9uIHJlYWN0aXZlT21pdChvYmosIC4uLmtleXMpIHtcbiAgY29uc3QgZmxhdEtleXMgPSBrZXlzLmZsYXQoKTtcbiAgcmV0dXJuIHJlYWN0aXZlQ29tcHV0ZWQoKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZ1ZURlbWkudG9SZWZzKG9iaikpLmZpbHRlcigoZSkgPT4gIWZsYXRLZXlzLmluY2x1ZGVzKGVbMF0pKSkpO1xufVxuXG5mdW5jdGlvbiByZWFjdGl2ZVBpY2sob2JqLCAuLi5rZXlzKSB7XG4gIGNvbnN0IGZsYXRLZXlzID0ga2V5cy5mbGF0KCk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKE9iamVjdC5mcm9tRW50cmllcyhmbGF0S2V5cy5tYXAoKGspID0+IFtrLCB2dWVEZW1pLnRvUmVmKG9iaiwgayldKSkpO1xufVxuXG5mdW5jdGlvbiByZWZBdXRvUmVzZXQoZGVmYXVsdFZhbHVlLCBhZnRlck1zID0gMWU0KSB7XG4gIHJldHVybiB2dWVEZW1pLmN1c3RvbVJlZigodHJhY2ssIHRyaWdnZXIpID0+IHtcbiAgICBsZXQgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgbGV0IHRpbWVyO1xuICAgIGNvbnN0IHJlc2V0QWZ0ZXIgPSAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgdHJpZ2dlcigpO1xuICAgIH0sIHZ1ZURlbWkudW5yZWYoYWZ0ZXJNcykpO1xuICAgIHRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgdHJhY2soKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB0cmlnZ2VyKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHRpbWVyID0gcmVzZXRBZnRlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VEZWJvdW5jZUZuKGZuLCBtcyA9IDIwMCwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGRlYm91bmNlRmlsdGVyKG1zLCBvcHRpb25zKSwgZm4pO1xufVxuXG5mdW5jdGlvbiByZWZEZWJvdW5jZWQodmFsdWUsIG1zID0gMjAwLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKG1zIDw9IDApXG4gICAgcmV0dXJuIHZhbHVlO1xuICBjb25zdCBkZWJvdW5jZWQgPSB2dWVEZW1pLnJlZih2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IHVwZGF0ZXIgPSB1c2VEZWJvdW5jZUZuKCgpID0+IHtcbiAgICBkZWJvdW5jZWQudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgfSwgbXMsIG9wdGlvbnMpO1xuICB2dWVEZW1pLndhdGNoKHZhbHVlLCAoKSA9PiB1cGRhdGVyKCkpO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5mdW5jdGlvbiByZWZEZWZhdWx0KHNvdXJjZSwgZGVmYXVsdFZhbHVlKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4gKF9hID0gc291cmNlLnZhbHVlKSAhPSBudWxsID8gX2EgOiBkZWZhdWx0VmFsdWU7XG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIHNvdXJjZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVRocm90dGxlRm4oZm4sIG1zID0gMjAwLCB0cmFpbGluZyA9IHRydWUsIGxlYWRpbmcgPSB0cnVlKSB7XG4gIHJldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKHRocm90dGxlRmlsdGVyKG1zLCB0cmFpbGluZywgbGVhZGluZyksIGZuKTtcbn1cblxuZnVuY3Rpb24gcmVmVGhyb3R0bGVkKHZhbHVlLCBkZWxheSA9IDIwMCwgdHJhaWxpbmcgPSB0cnVlLCBsZWFkaW5nID0gdHJ1ZSkge1xuICBpZiAoZGVsYXkgPD0gMClcbiAgICByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IHRocm90dGxlZCA9IHZ1ZURlbWkucmVmKHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgdXBkYXRlciA9IHVzZVRocm90dGxlRm4oKCkgPT4ge1xuICAgIHRocm90dGxlZC52YWx1ZSA9IHZhbHVlLnZhbHVlO1xuICB9LCBkZWxheSwgdHJhaWxpbmcsIGxlYWRpbmcpO1xuICB2dWVEZW1pLndhdGNoKHZhbHVlLCAoKSA9PiB1cGRhdGVyKCkpO1xuICByZXR1cm4gdGhyb3R0bGVkO1xufVxuXG5mdW5jdGlvbiByZWZXaXRoQ29udHJvbChpbml0aWFsLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHNvdXJjZSA9IGluaXRpYWw7XG4gIGxldCB0cmFjaztcbiAgbGV0IHRyaWdnZXI7XG4gIGNvbnN0IHJlZiA9IHZ1ZURlbWkuY3VzdG9tUmVmKChfdHJhY2ssIF90cmlnZ2VyKSA9PiB7XG4gICAgdHJhY2sgPSBfdHJhY2s7XG4gICAgdHJpZ2dlciA9IF90cmlnZ2VyO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBnZXQoKTtcbiAgICAgIH0sXG4gICAgICBzZXQodikge1xuICAgICAgICBzZXQodik7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIGZ1bmN0aW9uIGdldCh0cmFja2luZyA9IHRydWUpIHtcbiAgICBpZiAodHJhY2tpbmcpXG4gICAgICB0cmFjaygpO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KHZhbHVlLCB0cmlnZ2VyaW5nID0gdHJ1ZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKHZhbHVlID09PSBzb3VyY2UpXG4gICAgICByZXR1cm47XG4gICAgY29uc3Qgb2xkID0gc291cmNlO1xuICAgIGlmICgoKF9hID0gb3B0aW9ucy5vbkJlZm9yZUNoYW5nZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0aW9ucywgdmFsdWUsIG9sZCkpID09PSBmYWxzZSlcbiAgICAgIHJldHVybjtcbiAgICBzb3VyY2UgPSB2YWx1ZTtcbiAgICAoX2IgPSBvcHRpb25zLm9uQ2hhbmdlZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwob3B0aW9ucywgdmFsdWUsIG9sZCk7XG4gICAgaWYgKHRyaWdnZXJpbmcpXG4gICAgICB0cmlnZ2VyKCk7XG4gIH1cbiAgY29uc3QgdW50cmFja2VkR2V0ID0gKCkgPT4gZ2V0KGZhbHNlKTtcbiAgY29uc3Qgc2lsZW50U2V0ID0gKHYpID0+IHNldCh2LCBmYWxzZSk7XG4gIGNvbnN0IHBlZWsgPSAoKSA9PiBnZXQoZmFsc2UpO1xuICBjb25zdCBsYXkgPSAodikgPT4gc2V0KHYsIGZhbHNlKTtcbiAgcmV0dXJuIGV4dGVuZFJlZihyZWYsIHtcbiAgICBnZXQsXG4gICAgc2V0LFxuICAgIHVudHJhY2tlZEdldCxcbiAgICBzaWxlbnRTZXQsXG4gICAgcGVlayxcbiAgICBsYXlcbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xufVxuY29uc3QgY29udHJvbGxlZFJlZiA9IHJlZldpdGhDb250cm9sO1xuXG5mdW5jdGlvbiByZXNvbHZlUmVmKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09PSBcImZ1bmN0aW9uXCIgPyB2dWVEZW1pLmNvbXB1dGVkKHIpIDogdnVlRGVtaS5yZWYocik7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVVbnJlZihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PT0gXCJmdW5jdGlvblwiID8gcigpIDogdnVlRGVtaS51bnJlZihyKTtcbn1cblxuZnVuY3Rpb24gc2V0KC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgW3JlZiwgdmFsdWVdID0gYXJncztcbiAgICByZWYudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICBpZiAodnVlRGVtaS5pc1Z1ZTIpIHtcbiAgICAgIHZ1ZURlbWkuc2V0KC4uLmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBbdGFyZ2V0LCBrZXksIHZhbHVlXSA9IGFyZ3M7XG4gICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzeW5jUmVmKGxlZnQsIHJpZ2h0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGZsdXNoID0gXCJzeW5jXCIsXG4gICAgZGVlcCA9IGZhbHNlLFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgZGlyZWN0aW9uID0gXCJib3RoXCJcbiAgfSA9IG9wdGlvbnM7XG4gIGxldCBzdG9wMSwgc3RvcDI7XG4gIGlmIChkaXJlY3Rpb24gPT09IFwiYm90aFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJsdHJcIikge1xuICAgIHN0b3AxID0gdnVlRGVtaS53YXRjaChsZWZ0LCAobmV3VmFsdWUpID0+IHJpZ2h0LnZhbHVlID0gbmV3VmFsdWUsIHsgZmx1c2gsIGRlZXAsIGltbWVkaWF0ZSB9KTtcbiAgfVxuICBpZiAoZGlyZWN0aW9uID09PSBcImJvdGhcIiB8fCBkaXJlY3Rpb24gPT09IFwicnRsXCIpIHtcbiAgICBzdG9wMiA9IHZ1ZURlbWkud2F0Y2gocmlnaHQsIChuZXdWYWx1ZSkgPT4gbGVmdC52YWx1ZSA9IG5ld1ZhbHVlLCB7IGZsdXNoLCBkZWVwLCBpbW1lZGlhdGUgfSk7XG4gIH1cbiAgcmV0dXJuICgpID0+IHtcbiAgICBzdG9wMSA9PSBudWxsID8gdm9pZCAwIDogc3RvcDEoKTtcbiAgICBzdG9wMiA9PSBudWxsID8gdm9pZCAwIDogc3RvcDIoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3luY1JlZnMoc291cmNlLCB0YXJnZXRzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGZsdXNoID0gXCJzeW5jXCIsXG4gICAgZGVlcCA9IGZhbHNlLFxuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghQXJyYXkuaXNBcnJheSh0YXJnZXRzKSlcbiAgICB0YXJnZXRzID0gW3RhcmdldHNdO1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChzb3VyY2UsIChuZXdWYWx1ZSkgPT4gdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHRhcmdldC52YWx1ZSA9IG5ld1ZhbHVlKSwgeyBmbHVzaCwgZGVlcCwgaW1tZWRpYXRlIH0pO1xufVxuXG52YXIgX19kZWZQcm9wJDcgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ1ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkOSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ5ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDkuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ3KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ5KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ5KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDkuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDcoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ1ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNShhLCBfX2dldE93blByb3BEZXNjcyQ1KGIpKTtcbmZ1bmN0aW9uIHRvUmVmcyhvYmplY3RSZWYpIHtcbiAgaWYgKCF2dWVEZW1pLmlzUmVmKG9iamVjdFJlZikpXG4gICAgcmV0dXJuIHZ1ZURlbWkudG9SZWZzKG9iamVjdFJlZik7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkob2JqZWN0UmVmLnZhbHVlKSA/IG5ldyBBcnJheShvYmplY3RSZWYudmFsdWUubGVuZ3RoKSA6IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3RSZWYudmFsdWUpIHtcbiAgICByZXN1bHRba2V5XSA9IHZ1ZURlbWkuY3VzdG9tUmVmKCgpID0+ICh7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBvYmplY3RSZWYudmFsdWVba2V5XTtcbiAgICAgIH0sXG4gICAgICBzZXQodikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3RSZWYudmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgY29weSA9IFsuLi5vYmplY3RSZWYudmFsdWVdO1xuICAgICAgICAgIGNvcHlba2V5XSA9IHY7XG4gICAgICAgICAgb2JqZWN0UmVmLnZhbHVlID0gY29weTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdPYmplY3QgPSBfX3NwcmVhZFByb3BzJDUoX19zcHJlYWRWYWx1ZXMkNyh7fSwgb2JqZWN0UmVmLnZhbHVlKSwgeyBba2V5XTogdiB9KTtcbiAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YobmV3T2JqZWN0LCBvYmplY3RSZWYudmFsdWUpO1xuICAgICAgICAgIG9iamVjdFJlZi52YWx1ZSA9IG5ld09iamVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB0cnlPbkJlZm9yZU1vdW50KGZuLCBzeW5jID0gdHJ1ZSkge1xuICBpZiAodnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKSlcbiAgICB2dWVEZW1pLm9uQmVmb3JlTW91bnQoZm4pO1xuICBlbHNlIGlmIChzeW5jKVxuICAgIGZuKCk7XG4gIGVsc2VcbiAgICB2dWVEZW1pLm5leHRUaWNrKGZuKTtcbn1cblxuZnVuY3Rpb24gdHJ5T25CZWZvcmVVbm1vdW50KGZuKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpKVxuICAgIHZ1ZURlbWkub25CZWZvcmVVbm1vdW50KGZuKTtcbn1cblxuZnVuY3Rpb24gdHJ5T25Nb3VudGVkKGZuLCBzeW5jID0gdHJ1ZSkge1xuICBpZiAodnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKSlcbiAgICB2dWVEZW1pLm9uTW91bnRlZChmbik7XG4gIGVsc2UgaWYgKHN5bmMpXG4gICAgZm4oKTtcbiAgZWxzZVxuICAgIHZ1ZURlbWkubmV4dFRpY2soZm4pO1xufVxuXG5mdW5jdGlvbiB0cnlPblVubW91bnRlZChmbikge1xuICBpZiAodnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKSlcbiAgICB2dWVEZW1pLm9uVW5tb3VudGVkKGZuKTtcbn1cblxuZnVuY3Rpb24gdW50aWwocikge1xuICBsZXQgaXNOb3QgPSBmYWxzZTtcbiAgZnVuY3Rpb24gdG9NYXRjaChjb25kaXRpb24sIHsgZmx1c2ggPSBcInN5bmNcIiwgZGVlcCA9IGZhbHNlLCB0aW1lb3V0LCB0aHJvd09uVGltZW91dCB9ID0ge30pIHtcbiAgICBsZXQgc3RvcCA9IG51bGw7XG4gICAgY29uc3Qgd2F0Y2hlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzdG9wID0gdnVlRGVtaS53YXRjaChyLCAodikgPT4ge1xuICAgICAgICBpZiAoY29uZGl0aW9uKHYpICE9PSBpc05vdCkge1xuICAgICAgICAgIHN0b3AgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AoKTtcbiAgICAgICAgICByZXNvbHZlKHYpO1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGZsdXNoLFxuICAgICAgICBkZWVwLFxuICAgICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHByb21pc2VzID0gW3dhdGNoZXJdO1xuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZVRpbWVvdXQodGltZW91dCwgdGhyb3dPblRpbWVvdXQpLnRoZW4oKCkgPT4gdnVlRGVtaS51bnJlZihyKSkuZmluYWxseSgoKSA9PiBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZSh2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmICghdnVlRGVtaS5pc1JlZih2YWx1ZSkpXG4gICAgICByZXR1cm4gdG9NYXRjaCgodikgPT4gdiA9PT0gdmFsdWUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgZmx1c2ggPSBcInN5bmNcIiwgZGVlcCA9IGZhbHNlLCB0aW1lb3V0LCB0aHJvd09uVGltZW91dCB9ID0gb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHt9O1xuICAgIGxldCBzdG9wID0gbnVsbDtcbiAgICBjb25zdCB3YXRjaGVyID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHN0b3AgPSB2dWVEZW1pLndhdGNoKFtyLCB2YWx1ZV0sIChbdjEsIHYyXSkgPT4ge1xuICAgICAgICBpZiAoaXNOb3QgIT09ICh2MSA9PT0gdjIpKSB7XG4gICAgICAgICAgc3RvcCA9PSBudWxsID8gdm9pZCAwIDogc3RvcCgpO1xuICAgICAgICAgIHJlc29sdmUodjEpO1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGZsdXNoLFxuICAgICAgICBkZWVwLFxuICAgICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHByb21pc2VzID0gW3dhdGNoZXJdO1xuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZVRpbWVvdXQodGltZW91dCwgdGhyb3dPblRpbWVvdXQpLnRoZW4oKCkgPT4gdnVlRGVtaS51bnJlZihyKSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHN0b3AgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AoKTtcbiAgICAgICAgcmV0dXJuIHZ1ZURlbWkudW5yZWYocik7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmVUcnV0aHkob3B0aW9ucykge1xuICAgIHJldHVybiB0b01hdGNoKCh2KSA9PiBCb29sZWFuKHYpLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlTnVsbChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvQmUobnVsbCwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZVVuZGVmaW5lZChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvQmUodm9pZCAwLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlTmFOKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9NYXRjaChOdW1iZXIuaXNOYU4sIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQ29udGFpbnModmFsdWUsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9NYXRjaCgodikgPT4ge1xuICAgICAgY29uc3QgYXJyYXkgPSBBcnJheS5mcm9tKHYpO1xuICAgICAgcmV0dXJuIGFycmF5LmluY2x1ZGVzKHZhbHVlKSB8fCBhcnJheS5pbmNsdWRlcyh2dWVEZW1pLnVucmVmKHZhbHVlKSk7XG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gY2hhbmdlZChvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNoYW5nZWRUaW1lcygxLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiBjaGFuZ2VkVGltZXMobiA9IDEsIG9wdGlvbnMpIHtcbiAgICBsZXQgY291bnQgPSAtMTtcbiAgICByZXR1cm4gdG9NYXRjaCgoKSA9PiB7XG4gICAgICBjb3VudCArPSAxO1xuICAgICAgcmV0dXJuIGNvdW50ID49IG47XG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodnVlRGVtaS51bnJlZihyKSkpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHtcbiAgICAgIHRvTWF0Y2gsXG4gICAgICB0b0NvbnRhaW5zLFxuICAgICAgY2hhbmdlZCxcbiAgICAgIGNoYW5nZWRUaW1lcyxcbiAgICAgIGdldCBub3QoKSB7XG4gICAgICAgIGlzTm90ID0gIWlzTm90O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHtcbiAgICAgIHRvTWF0Y2gsXG4gICAgICB0b0JlLFxuICAgICAgdG9CZVRydXRoeSxcbiAgICAgIHRvQmVOdWxsLFxuICAgICAgdG9CZU5hTixcbiAgICAgIHRvQmVVbmRlZmluZWQsXG4gICAgICBjaGFuZ2VkLFxuICAgICAgY2hhbmdlZFRpbWVzLFxuICAgICAgZ2V0IG5vdCgpIHtcbiAgICAgICAgaXNOb3QgPSAhaXNOb3Q7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNvdW50ZXIoaW5pdGlhbFZhbHVlID0gMCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGNvdW50ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qge1xuICAgIG1heCA9IEluZmluaXR5LFxuICAgIG1pbiA9IC1JbmZpbml0eVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaW5jID0gKGRlbHRhID0gMSkgPT4gY291bnQudmFsdWUgPSBNYXRoLm1pbihtYXgsIGNvdW50LnZhbHVlICsgZGVsdGEpO1xuICBjb25zdCBkZWMgPSAoZGVsdGEgPSAxKSA9PiBjb3VudC52YWx1ZSA9IE1hdGgubWF4KG1pbiwgY291bnQudmFsdWUgLSBkZWx0YSk7XG4gIGNvbnN0IGdldCA9ICgpID0+IGNvdW50LnZhbHVlO1xuICBjb25zdCBzZXQgPSAodmFsKSA9PiBjb3VudC52YWx1ZSA9IHZhbDtcbiAgY29uc3QgcmVzZXQgPSAodmFsID0gaW5pdGlhbFZhbHVlKSA9PiB7XG4gICAgaW5pdGlhbFZhbHVlID0gdmFsO1xuICAgIHJldHVybiBzZXQodmFsKTtcbiAgfTtcbiAgcmV0dXJuIHsgY291bnQsIGluYywgZGVjLCBnZXQsIHNldCwgcmVzZXQgfTtcbn1cblxuY29uc3QgUkVHRVhfUEFSU0UgPSAvXihcXGR7NH0pWy0vXT8oXFxkezEsMn0pP1stL10/KFxcZHswLDJ9KVtUdFxcc10qKFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Oj8oXFxkezEsMn0pP1suOl0/KFxcZCspPyQvO1xuY29uc3QgUkVHRVhfRk9STUFUID0gL1xcWyhbXlxcXV0rKV18WXsxLDR9fE17MSw0fXxEezEsMn18ZHsxLDR9fEh7MSwyfXxoezEsMn18YXxBfG17MSwyfXxzezEsMn18WnsxLDJ9fFNTUy9nO1xuY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlLCBmb3JtYXRTdHIpID0+IHtcbiAgY29uc3QgeWVhcnMgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICBjb25zdCBkYXlzID0gZGF0ZS5nZXREYXRlKCk7XG4gIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKTtcbiAgY29uc3QgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgbWF0Y2hlcyA9IHtcbiAgICBZWTogU3RyaW5nKHllYXJzKS5zbGljZSgtMiksXG4gICAgWVlZWTogeWVhcnMsXG4gICAgTTogbW9udGggKyAxLFxuICAgIE1NOiBgJHttb250aCArIDF9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgRDogU3RyaW5nKGRheXMpLFxuICAgIEREOiBgJHtkYXlzfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIEg6IFN0cmluZyhob3VycyksXG4gICAgSEg6IGAke2hvdXJzfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIGg6IGAke2hvdXJzICUgMTIgfHwgMTJ9YC5wYWRTdGFydCgxLCBcIjBcIiksXG4gICAgaGg6IGAke2hvdXJzICUgMTIgfHwgMTJ9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgbTogU3RyaW5nKG1pbnV0ZXMpLFxuICAgIG1tOiBgJHttaW51dGVzfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIHM6IFN0cmluZyhzZWNvbmRzKSxcbiAgICBzczogYCR7c2Vjb25kc31gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBTU1M6IGAke21pbGxpc2Vjb25kc31gLnBhZFN0YXJ0KDMsIFwiMFwiKSxcbiAgICBkOiBkYXlcbiAgfTtcbiAgcmV0dXJuIGZvcm1hdFN0ci5yZXBsYWNlKFJFR0VYX0ZPUk1BVCwgKG1hdGNoLCAkMSkgPT4gJDEgfHwgbWF0Y2hlc1ttYXRjaF0pO1xufTtcbmNvbnN0IG5vcm1hbGl6ZURhdGUgPSAoZGF0ZSkgPT4ge1xuICBpZiAoZGF0ZSA9PT0gbnVsbClcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgaWYgKGRhdGUgPT09IHZvaWQgMClcbiAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKVxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKTtcbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiICYmICEvWiQvaS50ZXN0KGRhdGUpKSB7XG4gICAgY29uc3QgZCA9IGRhdGUubWF0Y2goUkVHRVhfUEFSU0UpO1xuICAgIGlmIChkKSB7XG4gICAgICBjb25zdCBtID0gZFsyXSAtIDEgfHwgMDtcbiAgICAgIGNvbnN0IG1zID0gKGRbN10gfHwgXCIwXCIpLnN1YnN0cmluZygwLCAzKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkWzFdLCBtLCBkWzNdIHx8IDEsIGRbNF0gfHwgMCwgZFs1XSB8fCAwLCBkWzZdIHx8IDAsIG1zKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpO1xufTtcbmZ1bmN0aW9uIHVzZURhdGVGb3JtYXQoZGF0ZSwgZm9ybWF0U3RyID0gXCJISDptbTpzc1wiKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGZvcm1hdERhdGUobm9ybWFsaXplRGF0ZSh2dWVEZW1pLnVucmVmKGRhdGUpKSwgdnVlRGVtaS51bnJlZihmb3JtYXRTdHIpKSk7XG59XG5cbmZ1bmN0aW9uIHVzZUludGVydmFsRm4oY2IsIGludGVydmFsID0gMWUzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgaW1tZWRpYXRlQ2FsbGJhY2sgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHRpbWVyID0gbnVsbDtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGZ1bmN0aW9uIGNsZWFuKCkge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gZmFsc2U7XG4gICAgY2xlYW4oKTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUoKSB7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYoaW50ZXJ2YWwpIDw9IDApXG4gICAgICByZXR1cm47XG4gICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuICAgIGlmIChpbW1lZGlhdGVDYWxsYmFjaylcbiAgICAgIGNiKCk7XG4gICAgY2xlYW4oKTtcbiAgICB0aW1lciA9IHNldEludGVydmFsKGNiLCB2dWVEZW1pLnVucmVmKGludGVydmFsKSk7XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSAmJiBpc0NsaWVudClcbiAgICByZXN1bWUoKTtcbiAgaWYgKHZ1ZURlbWkuaXNSZWYoaW50ZXJ2YWwpKSB7XG4gICAgY29uc3Qgc3RvcFdhdGNoID0gdnVlRGVtaS53YXRjaChpbnRlcnZhbCwgKCkgPT4ge1xuICAgICAgaWYgKGlzQWN0aXZlLnZhbHVlICYmIGlzQ2xpZW50KVxuICAgICAgICByZXN1bWUoKTtcbiAgICB9KTtcbiAgICB0cnlPblNjb3BlRGlzcG9zZShzdG9wV2F0Y2gpO1xuICB9XG4gIHRyeU9uU2NvcGVEaXNwb3NlKHBhdXNlKTtcbiAgcmV0dXJuIHtcbiAgICBpc0FjdGl2ZSxcbiAgICBwYXVzZSxcbiAgICByZXN1bWVcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ2ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkOCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDggPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ4ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDguY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ2KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ4KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ4KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDguY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDYoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VJbnRlcnZhbChpbnRlcnZhbCA9IDFlMywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjb3VudGVyID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGNvbnRyb2xzID0gdXNlSW50ZXJ2YWxGbigoKSA9PiBjb3VudGVyLnZhbHVlICs9IDEsIGludGVydmFsLCB7IGltbWVkaWF0ZSB9KTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJDYoe1xuICAgICAgY291bnRlclxuICAgIH0sIGNvbnRyb2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VMYXN0Q2hhbmdlZChzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IG1zID0gdnVlRGVtaS5yZWYoKF9hID0gb3B0aW9ucy5pbml0aWFsVmFsdWUpICE9IG51bGwgPyBfYSA6IG51bGwpO1xuICB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKCkgPT4gbXMudmFsdWUgPSB0aW1lc3RhbXAoKSwgb3B0aW9ucyk7XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gdXNlVGltZW91dEZuKGNiLCBpbnRlcnZhbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1BlbmRpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCB0aW1lciA9IG51bGw7XG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICBpc1BlbmRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICBjbGVhcigpO1xuICB9XG4gIGZ1bmN0aW9uIHN0YXJ0KC4uLmFyZ3MpIHtcbiAgICBjbGVhcigpO1xuICAgIGlzUGVuZGluZy52YWx1ZSA9IHRydWU7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlzUGVuZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgY2IoLi4uYXJncyk7XG4gICAgfSwgdnVlRGVtaS51bnJlZihpbnRlcnZhbCkpO1xuICB9XG4gIGlmIChpbW1lZGlhdGUpIHtcbiAgICBpc1BlbmRpbmcudmFsdWUgPSB0cnVlO1xuICAgIGlmIChpc0NsaWVudClcbiAgICAgIHN0YXJ0KCk7XG4gIH1cbiAgdHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNQZW5kaW5nLFxuICAgIHN0YXJ0LFxuICAgIHN0b3BcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ1ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDcgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ3ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDcuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ1KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ3KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ3KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDcuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDUoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VUaW1lb3V0KGludGVydmFsID0gMWUzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjb250cm9scyA9IHVzZVRpbWVvdXRGbihub29wLCBpbnRlcnZhbCwgb3B0aW9ucyk7XG4gIGNvbnN0IHJlYWR5ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiAhY29udHJvbHMuaXNQZW5kaW5nLnZhbHVlKTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJDUoe1xuICAgICAgcmVhZHlcbiAgICB9LCBjb250cm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlYWR5O1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVRvZ2dsZShpbml0aWFsVmFsdWUgPSBmYWxzZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0cnV0aHlWYWx1ZSA9IHRydWUsXG4gICAgZmFsc3lWYWx1ZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB2YWx1ZUlzUmVmID0gdnVlRGVtaS5pc1JlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBpbm5lclZhbHVlID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgZnVuY3Rpb24gdG9nZ2xlKHZhbHVlKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIGlubmVyVmFsdWUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybiBpbm5lclZhbHVlLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lclZhbHVlLnZhbHVlID0gaW5uZXJWYWx1ZS52YWx1ZSA9PT0gdnVlRGVtaS51bnJlZih0cnV0aHlWYWx1ZSkgPyB2dWVEZW1pLnVucmVmKGZhbHN5VmFsdWUpIDogdnVlRGVtaS51bnJlZih0cnV0aHlWYWx1ZSk7XG4gICAgICByZXR1cm4gaW5uZXJWYWx1ZS52YWx1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKHZhbHVlSXNSZWYpXG4gICAgcmV0dXJuIHRvZ2dsZTtcbiAgZWxzZVxuICAgIHJldHVybiBbaW5uZXJWYWx1ZSwgdG9nZ2xlXTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hBcnJheShzb3VyY2UsIGNiLCBvcHRpb25zKSB7XG4gIGxldCBvbGRMaXN0ID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW1tZWRpYXRlKSA/IFtdIDogW1xuICAgIC4uLnNvdXJjZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gc291cmNlKCkgOiBBcnJheS5pc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UgOiB2dWVEZW1pLnVucmVmKHNvdXJjZSlcbiAgXTtcbiAgcmV0dXJuIHZ1ZURlbWkud2F0Y2goc291cmNlLCAobmV3TGlzdCwgXywgb25DbGVhbnVwKSA9PiB7XG4gICAgY29uc3Qgb2xkTGlzdFJlbWFpbnMgPSBuZXcgQXJyYXkob2xkTGlzdC5sZW5ndGgpO1xuICAgIGNvbnN0IGFkZGVkID0gW107XG4gICAgZm9yIChjb25zdCBvYmogb2YgbmV3TGlzdCkge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9sZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFvbGRMaXN0UmVtYWluc1tpXSAmJiBvYmogPT09IG9sZExpc3RbaV0pIHtcbiAgICAgICAgICBvbGRMaXN0UmVtYWluc1tpXSA9IHRydWU7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kKVxuICAgICAgICBhZGRlZC5wdXNoKG9iaik7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZWQgPSBvbGRMaXN0LmZpbHRlcigoXzIsIGkpID0+ICFvbGRMaXN0UmVtYWluc1tpXSk7XG4gICAgY2IobmV3TGlzdCwgb2xkTGlzdCwgYWRkZWQsIHJlbW92ZWQsIG9uQ2xlYW51cCk7XG4gICAgb2xkTGlzdCA9IFsuLi5uZXdMaXN0XTtcbiAgfSwgb3B0aW9ucyk7XG59XG5cbnZhciBfX2dldE93blByb3BTeW1ib2xzJDYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ2ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19vYmpSZXN0JDUgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ2LmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQ2KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ2KHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQ2LmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaFdpdGhGaWx0ZXIoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIGV2ZW50RmlsdGVyID0gYnlwYXNzRmlsdGVyXG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0JDUoX2EsIFtcbiAgICBcImV2ZW50RmlsdGVyXCJcbiAgXSk7XG4gIHJldHVybiB2dWVEZW1pLndhdGNoKHNvdXJjZSwgY3JlYXRlRmlsdGVyV3JhcHBlcihldmVudEZpbHRlciwgY2IpLCB3YXRjaE9wdGlvbnMpO1xufVxuXG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ1ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fb2JqUmVzdCQ0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkNS5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkNSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNShzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kNS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hBdE1vc3Qoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICBjb3VudFxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdCQ0KF9hLCBbXG4gICAgXCJjb3VudFwiXG4gIF0pO1xuICBjb25zdCBjdXJyZW50ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHN0b3AgPSB3YXRjaFdpdGhGaWx0ZXIoc291cmNlLCAoLi4uYXJncykgPT4ge1xuICAgIGN1cnJlbnQudmFsdWUgKz0gMTtcbiAgICBpZiAoY3VycmVudC52YWx1ZSA+PSB2dWVEZW1pLnVucmVmKGNvdW50KSlcbiAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gc3RvcCgpKTtcbiAgICBjYiguLi5hcmdzKTtcbiAgfSwgd2F0Y2hPcHRpb25zKTtcbiAgcmV0dXJuIHsgY291bnQ6IGN1cnJlbnQsIHN0b3AgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ0ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ0ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDQob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDQgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ0LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkNClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ0LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ0KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNCA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDQoYSwgX19nZXRPd25Qcm9wRGVzY3MkNChiKSk7XG52YXIgX19vYmpSZXN0JDMgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ0LmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQ0KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ0KHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQ0LmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaERlYm91bmNlZChzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgZGVib3VuY2UgPSAwLFxuICAgIG1heFdhaXQgPSB2b2lkIDBcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QkMyhfYSwgW1xuICAgIFwiZGVib3VuY2VcIixcbiAgICBcIm1heFdhaXRcIlxuICBdKTtcbiAgcmV0dXJuIHdhdGNoV2l0aEZpbHRlcihzb3VyY2UsIGNiLCBfX3NwcmVhZFByb3BzJDQoX19zcHJlYWRWYWx1ZXMkNCh7fSwgd2F0Y2hPcHRpb25zKSwge1xuICAgIGV2ZW50RmlsdGVyOiBkZWJvdW5jZUZpbHRlcihkZWJvdW5jZSwgeyBtYXhXYWl0IH0pXG4gIH0pKTtcbn1cblxudmFyIF9fZGVmUHJvcCQzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDMgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDMob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQzLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQzLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQzKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMyA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDMoYSwgX19nZXRPd25Qcm9wRGVzY3MkMyhiKSk7XG52YXIgX19vYmpSZXN0JDIgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQzLmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQzKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQzLmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaElnbm9yYWJsZShzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgZXZlbnRGaWx0ZXIgPSBieXBhc3NGaWx0ZXJcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QkMihfYSwgW1xuICAgIFwiZXZlbnRGaWx0ZXJcIlxuICBdKTtcbiAgY29uc3QgZmlsdGVyZWRDYiA9IGNyZWF0ZUZpbHRlcldyYXBwZXIoZXZlbnRGaWx0ZXIsIGNiKTtcbiAgbGV0IGlnbm9yZVVwZGF0ZXM7XG4gIGxldCBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzO1xuICBsZXQgc3RvcDtcbiAgaWYgKHdhdGNoT3B0aW9ucy5mbHVzaCA9PT0gXCJzeW5jXCIpIHtcbiAgICBjb25zdCBpZ25vcmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcyA9ICgpID0+IHtcbiAgICB9O1xuICAgIGlnbm9yZVVwZGF0ZXMgPSAodXBkYXRlcikgPT4ge1xuICAgICAgaWdub3JlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZXIoKTtcbiAgICAgIGlnbm9yZS52YWx1ZSA9IGZhbHNlO1xuICAgIH07XG4gICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goc291cmNlLCAoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKCFpZ25vcmUudmFsdWUpXG4gICAgICAgIGZpbHRlcmVkQ2IoLi4uYXJncyk7XG4gICAgfSwgd2F0Y2hPcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkaXNwb3NhYmxlcyA9IFtdO1xuICAgIGNvbnN0IGlnbm9yZUNvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgICBjb25zdCBzeW5jQ291bnRlciA9IHZ1ZURlbWkucmVmKDApO1xuICAgIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMgPSAoKSA9PiB7XG4gICAgICBpZ25vcmVDb3VudGVyLnZhbHVlID0gc3luY0NvdW50ZXIudmFsdWU7XG4gICAgfTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKHZ1ZURlbWkud2F0Y2goc291cmNlLCAoKSA9PiB7XG4gICAgICBzeW5jQ291bnRlci52YWx1ZSsrO1xuICAgIH0sIF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyQzKHt9LCB3YXRjaE9wdGlvbnMpLCB7IGZsdXNoOiBcInN5bmNcIiB9KSkpO1xuICAgIGlnbm9yZVVwZGF0ZXMgPSAodXBkYXRlcikgPT4ge1xuICAgICAgY29uc3Qgc3luY0NvdW50ZXJQcmV2ID0gc3luY0NvdW50ZXIudmFsdWU7XG4gICAgICB1cGRhdGVyKCk7XG4gICAgICBpZ25vcmVDb3VudGVyLnZhbHVlICs9IHN5bmNDb3VudGVyLnZhbHVlIC0gc3luY0NvdW50ZXJQcmV2O1xuICAgIH07XG4gICAgZGlzcG9zYWJsZXMucHVzaCh2dWVEZW1pLndhdGNoKHNvdXJjZSwgKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZSA9IGlnbm9yZUNvdW50ZXIudmFsdWUgPiAwICYmIGlnbm9yZUNvdW50ZXIudmFsdWUgPT09IHN5bmNDb3VudGVyLnZhbHVlO1xuICAgICAgaWdub3JlQ291bnRlci52YWx1ZSA9IDA7XG4gICAgICBzeW5jQ291bnRlci52YWx1ZSA9IDA7XG4gICAgICBpZiAoaWdub3JlKVxuICAgICAgICByZXR1cm47XG4gICAgICBmaWx0ZXJlZENiKC4uLmFyZ3MpO1xuICAgIH0sIHdhdGNoT3B0aW9ucykpO1xuICAgIHN0b3AgPSAoKSA9PiB7XG4gICAgICBkaXNwb3NhYmxlcy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4geyBzdG9wLCBpZ25vcmVVcGRhdGVzLCBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzIH07XG59XG5cbmZ1bmN0aW9uIHdhdGNoT25jZShzb3VyY2UsIGNiLCBvcHRpb25zKSB7XG4gIGNvbnN0IHN0b3AgPSB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKC4uLmFyZ3MpID0+IHtcbiAgICB2dWVEZW1pLm5leHRUaWNrKCgpID0+IHN0b3AoKSk7XG4gICAgcmV0dXJuIGNiKC4uLmFyZ3MpO1xuICB9LCBvcHRpb25zKTtcbn1cblxudmFyIF9fZGVmUHJvcCQyID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQyID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDIgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDIob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDIgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQyLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQyLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQyKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMiA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDIoYSwgX19nZXRPd25Qcm9wRGVzY3MkMihiKSk7XG52YXIgX19vYmpSZXN0JDEgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQyLmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQyKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQyKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQyLmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaFBhdXNhYmxlKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICBldmVudEZpbHRlcjogZmlsdGVyXG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0JDEoX2EsIFtcbiAgICBcImV2ZW50RmlsdGVyXCJcbiAgXSk7XG4gIGNvbnN0IHsgZXZlbnRGaWx0ZXIsIHBhdXNlLCByZXN1bWUsIGlzQWN0aXZlIH0gPSBwYXVzYWJsZUZpbHRlcihmaWx0ZXIpO1xuICBjb25zdCBzdG9wID0gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgY2IsIF9fc3ByZWFkUHJvcHMkMihfX3NwcmVhZFZhbHVlcyQyKHt9LCB3YXRjaE9wdGlvbnMpLCB7XG4gICAgZXZlbnRGaWx0ZXJcbiAgfSkpO1xuICByZXR1cm4geyBzdG9wLCBwYXVzZSwgcmVzdW1lLCBpc0FjdGl2ZSB9O1xufVxuXG52YXIgX19kZWZQcm9wJDEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQxID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQxID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDEuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQxKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQxKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQxKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDEuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDEoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQxID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMShhLCBfX2dldE93blByb3BEZXNjcyQxKGIpKTtcbnZhciBfX29ialJlc3QgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQxLmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQxKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQxKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQxLmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaFRocm90dGxlZChzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgdGhyb3R0bGUgPSAwLFxuICAgIHRyYWlsaW5nID0gdHJ1ZSxcbiAgICBsZWFkaW5nID0gdHJ1ZVxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdChfYSwgW1xuICAgIFwidGhyb3R0bGVcIixcbiAgICBcInRyYWlsaW5nXCIsXG4gICAgXCJsZWFkaW5nXCJcbiAgXSk7XG4gIHJldHVybiB3YXRjaFdpdGhGaWx0ZXIoc291cmNlLCBjYiwgX19zcHJlYWRQcm9wcyQxKF9fc3ByZWFkVmFsdWVzJDEoe30sIHdhdGNoT3B0aW9ucyksIHtcbiAgICBldmVudEZpbHRlcjogdGhyb3R0bGVGaWx0ZXIodGhyb3R0bGUsIHRyYWlsaW5nLCBsZWFkaW5nKVxuICB9KSk7XG59XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMoYSwgX19nZXRPd25Qcm9wRGVzY3MoYikpO1xuZnVuY3Rpb24gd2F0Y2hUcmlnZ2VyYWJsZShzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGNsZWFudXBGbjtcbiAgZnVuY3Rpb24gb25FZmZlY3QoKSB7XG4gICAgaWYgKCFjbGVhbnVwRm4pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZm4gPSBjbGVhbnVwRm47XG4gICAgY2xlYW51cEZuID0gdm9pZCAwO1xuICAgIGZuKCk7XG4gIH1cbiAgZnVuY3Rpb24gb25DbGVhbnVwKGNhbGxiYWNrKSB7XG4gICAgY2xlYW51cEZuID0gY2FsbGJhY2s7XG4gIH1cbiAgY29uc3QgX2NiID0gKHZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgIG9uRWZmZWN0KCk7XG4gICAgcmV0dXJuIGNiKHZhbHVlLCBvbGRWYWx1ZSwgb25DbGVhbnVwKTtcbiAgfTtcbiAgY29uc3QgcmVzID0gd2F0Y2hJZ25vcmFibGUoc291cmNlLCBfY2IsIG9wdGlvbnMpO1xuICBjb25zdCB7IGlnbm9yZVVwZGF0ZXMgfSA9IHJlcztcbiAgY29uc3QgdHJpZ2dlciA9ICgpID0+IHtcbiAgICBsZXQgcmVzMjtcbiAgICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcbiAgICAgIHJlczIgPSBfY2IoZ2V0V2F0Y2hTb3VyY2VzKHNvdXJjZSksIGdldE9sZFZhbHVlKHNvdXJjZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXMyO1xuICB9O1xuICByZXR1cm4gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgcmVzKSwge1xuICAgIHRyaWdnZXJcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRXYXRjaFNvdXJjZXMoc291cmNlcykge1xuICBpZiAodnVlRGVtaS5pc1JlYWN0aXZlKHNvdXJjZXMpKVxuICAgIHJldHVybiBzb3VyY2VzO1xuICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VzKSlcbiAgICByZXR1cm4gc291cmNlcy5tYXAoKGl0ZW0pID0+IGdldE9uZVdhdGNoU291cmNlKGl0ZW0pKTtcbiAgcmV0dXJuIGdldE9uZVdhdGNoU291cmNlKHNvdXJjZXMpO1xufVxuZnVuY3Rpb24gZ2V0T25lV2F0Y2hTb3VyY2Uoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSBcImZ1bmN0aW9uXCIgPyBzb3VyY2UoKSA6IHZ1ZURlbWkudW5yZWYoc291cmNlKTtcbn1cbmZ1bmN0aW9uIGdldE9sZFZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzb3VyY2UpID8gc291cmNlLm1hcCgoKSA9PiB2b2lkIDApIDogdm9pZCAwO1xufVxuXG5mdW5jdGlvbiB3aGVuZXZlcihzb3VyY2UsIGNiLCBvcHRpb25zKSB7XG4gIHJldHVybiB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKHYsIG92LCBvbkludmFsaWRhdGUpID0+IHtcbiAgICBpZiAodilcbiAgICAgIGNiKHYsIG92LCBvbkludmFsaWRhdGUpO1xuICB9LCBvcHRpb25zKTtcbn1cblxuZXhwb3J0cy5fX29ubHlWdWUzID0gX19vbmx5VnVlMztcbmV4cG9ydHMuYW5kID0gbG9naWNBbmQ7XG5leHBvcnRzLmFzc2VydCA9IGFzc2VydDtcbmV4cG9ydHMuYXV0b1Jlc2V0UmVmID0gcmVmQXV0b1Jlc2V0O1xuZXhwb3J0cy5ieXBhc3NGaWx0ZXIgPSBieXBhc3NGaWx0ZXI7XG5leHBvcnRzLmNsYW1wID0gY2xhbXA7XG5leHBvcnRzLmNvbXB1dGVkRWFnZXIgPSBjb21wdXRlZEVhZ2VyO1xuZXhwb3J0cy5jb21wdXRlZFdpdGhDb250cm9sID0gY29tcHV0ZWRXaXRoQ29udHJvbDtcbmV4cG9ydHMuY29udGFpbnNQcm9wID0gY29udGFpbnNQcm9wO1xuZXhwb3J0cy5jb250cm9sbGVkQ29tcHV0ZWQgPSBjb21wdXRlZFdpdGhDb250cm9sO1xuZXhwb3J0cy5jb250cm9sbGVkUmVmID0gY29udHJvbGxlZFJlZjtcbmV4cG9ydHMuY3JlYXRlRXZlbnRIb29rID0gY3JlYXRlRXZlbnRIb29rO1xuZXhwb3J0cy5jcmVhdGVGaWx0ZXJXcmFwcGVyID0gY3JlYXRlRmlsdGVyV3JhcHBlcjtcbmV4cG9ydHMuY3JlYXRlR2xvYmFsU3RhdGUgPSBjcmVhdGVHbG9iYWxTdGF0ZTtcbmV4cG9ydHMuY3JlYXRlSW5qZWN0aW9uU3RhdGUgPSBjcmVhdGVJbmplY3Rpb25TdGF0ZTtcbmV4cG9ydHMuY3JlYXRlUmVhY3RpdmVGbiA9IHJlYWN0aWZ5O1xuZXhwb3J0cy5jcmVhdGVTaGFyZWRDb21wb3NhYmxlID0gY3JlYXRlU2hhcmVkQ29tcG9zYWJsZTtcbmV4cG9ydHMuY3JlYXRlU2luZ2xldG9uUHJvbWlzZSA9IGNyZWF0ZVNpbmdsZXRvblByb21pc2U7XG5leHBvcnRzLmRlYm91bmNlRmlsdGVyID0gZGVib3VuY2VGaWx0ZXI7XG5leHBvcnRzLmRlYm91bmNlZFJlZiA9IHJlZkRlYm91bmNlZDtcbmV4cG9ydHMuZGVib3VuY2VkV2F0Y2ggPSB3YXRjaERlYm91bmNlZDtcbmV4cG9ydHMuZGlyZWN0aXZlSG9va3MgPSBkaXJlY3RpdmVIb29rcztcbmV4cG9ydHMuZWFnZXJDb21wdXRlZCA9IGNvbXB1dGVkRWFnZXI7XG5leHBvcnRzLmV4dGVuZFJlZiA9IGV4dGVuZFJlZjtcbmV4cG9ydHMuZm9ybWF0RGF0ZSA9IGZvcm1hdERhdGU7XG5leHBvcnRzLmdldCA9IGdldDtcbmV4cG9ydHMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbmV4cG9ydHMuaWdub3JhYmxlV2F0Y2ggPSB3YXRjaElnbm9yYWJsZTtcbmV4cG9ydHMuaW5jcmVhc2VXaXRoVW5pdCA9IGluY3JlYXNlV2l0aFVuaXQ7XG5leHBvcnRzLmludm9rZSA9IGludm9rZTtcbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuZXhwb3J0cy5pc0NsaWVudCA9IGlzQ2xpZW50O1xuZXhwb3J0cy5pc0RlZiA9IGlzRGVmO1xuZXhwb3J0cy5pc0RlZmluZWQgPSBpc0RlZmluZWQ7XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuZXhwb3J0cy5pc0lPUyA9IGlzSU9TO1xuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuZXhwb3J0cy5pc1dpbmRvdyA9IGlzV2luZG93O1xuZXhwb3J0cy5sb2dpY0FuZCA9IGxvZ2ljQW5kO1xuZXhwb3J0cy5sb2dpY05vdCA9IGxvZ2ljTm90O1xuZXhwb3J0cy5sb2dpY09yID0gbG9naWNPcjtcbmV4cG9ydHMubWFrZURlc3RydWN0dXJhYmxlID0gbWFrZURlc3RydWN0dXJhYmxlO1xuZXhwb3J0cy5ub29wID0gbm9vcDtcbmV4cG9ydHMubm9ybWFsaXplRGF0ZSA9IG5vcm1hbGl6ZURhdGU7XG5leHBvcnRzLm5vdCA9IGxvZ2ljTm90O1xuZXhwb3J0cy5ub3cgPSBub3c7XG5leHBvcnRzLm9iamVjdFBpY2sgPSBvYmplY3RQaWNrO1xuZXhwb3J0cy5vciA9IGxvZ2ljT3I7XG5leHBvcnRzLnBhdXNhYmxlRmlsdGVyID0gcGF1c2FibGVGaWx0ZXI7XG5leHBvcnRzLnBhdXNhYmxlV2F0Y2ggPSB3YXRjaFBhdXNhYmxlO1xuZXhwb3J0cy5wcm9taXNlVGltZW91dCA9IHByb21pc2VUaW1lb3V0O1xuZXhwb3J0cy5yYW5kID0gcmFuZDtcbmV4cG9ydHMucmVhY3RpZnkgPSByZWFjdGlmeTtcbmV4cG9ydHMucmVhY3RpZnlPYmplY3QgPSByZWFjdGlmeU9iamVjdDtcbmV4cG9ydHMucmVhY3RpdmVDb21wdXRlZCA9IHJlYWN0aXZlQ29tcHV0ZWQ7XG5leHBvcnRzLnJlYWN0aXZlT21pdCA9IHJlYWN0aXZlT21pdDtcbmV4cG9ydHMucmVhY3RpdmVQaWNrID0gcmVhY3RpdmVQaWNrO1xuZXhwb3J0cy5yZWZBdXRvUmVzZXQgPSByZWZBdXRvUmVzZXQ7XG5leHBvcnRzLnJlZkRlYm91bmNlZCA9IHJlZkRlYm91bmNlZDtcbmV4cG9ydHMucmVmRGVmYXVsdCA9IHJlZkRlZmF1bHQ7XG5leHBvcnRzLnJlZlRocm90dGxlZCA9IHJlZlRocm90dGxlZDtcbmV4cG9ydHMucmVmV2l0aENvbnRyb2wgPSByZWZXaXRoQ29udHJvbDtcbmV4cG9ydHMucmVzb2x2ZVJlZiA9IHJlc29sdmVSZWY7XG5leHBvcnRzLnJlc29sdmVVbnJlZiA9IHJlc29sdmVVbnJlZjtcbmV4cG9ydHMuc2V0ID0gc2V0O1xuZXhwb3J0cy5zeW5jUmVmID0gc3luY1JlZjtcbmV4cG9ydHMuc3luY1JlZnMgPSBzeW5jUmVmcztcbmV4cG9ydHMudGhyb3R0bGVGaWx0ZXIgPSB0aHJvdHRsZUZpbHRlcjtcbmV4cG9ydHMudGhyb3R0bGVkUmVmID0gcmVmVGhyb3R0bGVkO1xuZXhwb3J0cy50aHJvdHRsZWRXYXRjaCA9IHdhdGNoVGhyb3R0bGVkO1xuZXhwb3J0cy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XG5leHBvcnRzLnRvUmVhY3RpdmUgPSB0b1JlYWN0aXZlO1xuZXhwb3J0cy50b1JlZnMgPSB0b1JlZnM7XG5leHBvcnRzLnRyeU9uQmVmb3JlTW91bnQgPSB0cnlPbkJlZm9yZU1vdW50O1xuZXhwb3J0cy50cnlPbkJlZm9yZVVubW91bnQgPSB0cnlPbkJlZm9yZVVubW91bnQ7XG5leHBvcnRzLnRyeU9uTW91bnRlZCA9IHRyeU9uTW91bnRlZDtcbmV4cG9ydHMudHJ5T25TY29wZURpc3Bvc2UgPSB0cnlPblNjb3BlRGlzcG9zZTtcbmV4cG9ydHMudHJ5T25Vbm1vdW50ZWQgPSB0cnlPblVubW91bnRlZDtcbmV4cG9ydHMudW50aWwgPSB1bnRpbDtcbmV4cG9ydHMudXNlQ291bnRlciA9IHVzZUNvdW50ZXI7XG5leHBvcnRzLnVzZURhdGVGb3JtYXQgPSB1c2VEYXRlRm9ybWF0O1xuZXhwb3J0cy51c2VEZWJvdW5jZSA9IHJlZkRlYm91bmNlZDtcbmV4cG9ydHMudXNlRGVib3VuY2VGbiA9IHVzZURlYm91bmNlRm47XG5leHBvcnRzLnVzZUludGVydmFsID0gdXNlSW50ZXJ2YWw7XG5leHBvcnRzLnVzZUludGVydmFsRm4gPSB1c2VJbnRlcnZhbEZuO1xuZXhwb3J0cy51c2VMYXN0Q2hhbmdlZCA9IHVzZUxhc3RDaGFuZ2VkO1xuZXhwb3J0cy51c2VUaHJvdHRsZSA9IHJlZlRocm90dGxlZDtcbmV4cG9ydHMudXNlVGhyb3R0bGVGbiA9IHVzZVRocm90dGxlRm47XG5leHBvcnRzLnVzZVRpbWVvdXQgPSB1c2VUaW1lb3V0O1xuZXhwb3J0cy51c2VUaW1lb3V0Rm4gPSB1c2VUaW1lb3V0Rm47XG5leHBvcnRzLnVzZVRvZ2dsZSA9IHVzZVRvZ2dsZTtcbmV4cG9ydHMud2F0Y2hBcnJheSA9IHdhdGNoQXJyYXk7XG5leHBvcnRzLndhdGNoQXRNb3N0ID0gd2F0Y2hBdE1vc3Q7XG5leHBvcnRzLndhdGNoRGVib3VuY2VkID0gd2F0Y2hEZWJvdW5jZWQ7XG5leHBvcnRzLndhdGNoSWdub3JhYmxlID0gd2F0Y2hJZ25vcmFibGU7XG5leHBvcnRzLndhdGNoT25jZSA9IHdhdGNoT25jZTtcbmV4cG9ydHMud2F0Y2hQYXVzYWJsZSA9IHdhdGNoUGF1c2FibGU7XG5leHBvcnRzLndhdGNoVGhyb3R0bGVkID0gd2F0Y2hUaHJvdHRsZWQ7XG5leHBvcnRzLndhdGNoVHJpZ2dlcmFibGUgPSB3YXRjaFRyaWdnZXJhYmxlO1xuZXhwb3J0cy53YXRjaFdpdGhGaWx0ZXIgPSB3YXRjaFdpdGhGaWx0ZXI7XG5leHBvcnRzLndoZW5ldmVyID0gd2hlbmV2ZXI7XG4iLCJ2YXIgVnVlID0gcmVxdWlyZSgndnVlJylcblxuT2JqZWN0LmtleXMoVnVlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBWdWVba2V5XVxufSlcblxuZXhwb3J0cy5zZXQgPSBmdW5jdGlvbih0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0Lmxlbmd0aCwga2V5KVxuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpXG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHRhcmdldFtrZXldID0gdmFsXG4gIHJldHVybiB2YWxcbn1cblxuZXhwb3J0cy5kZWwgPSBmdW5jdGlvbih0YXJnZXQsIGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpXG4gICAgcmV0dXJuXG4gIH1cbiAgZGVsZXRlIHRhcmdldFtrZXldXG59XG5cbmV4cG9ydHMuVnVlID0gVnVlXG5leHBvcnRzLlZ1ZTIgPSB1bmRlZmluZWRcbmV4cG9ydHMuaXNWdWUyID0gZmFsc2VcbmV4cG9ydHMuaXNWdWUzID0gdHJ1ZVxuZXhwb3J0cy5pbnN0YWxsID0gZnVuY3Rpb24oKXt9XG4iLCIvLyBBeGlvcyB2MS42LjAgQ29weXJpZ2h0IChjKSAyMDIzIE1hdHQgWmFicmlza2llIGFuZCBjb250cmlidXRvcnNcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxuY29uc3Qge3RvU3RyaW5nfSA9IE9iamVjdC5wcm90b3R5cGU7XG5jb25zdCB7Z2V0UHJvdG90eXBlT2Z9ID0gT2JqZWN0O1xuXG5jb25zdCBraW5kT2YgPSAoY2FjaGUgPT4gdGhpbmcgPT4ge1xuICAgIGNvbnN0IHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICAgIHJldHVybiBjYWNoZVtzdHJdIHx8IChjYWNoZVtzdHJdID0gc3RyLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpKTtcbn0pKE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG5jb25zdCBraW5kT2ZUZXN0ID0gKHR5cGUpID0+IHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuICh0aGluZykgPT4ga2luZE9mKHRoaW5nKSA9PT0gdHlwZVxufTtcblxuY29uc3QgdHlwZU9mVGVzdCA9IHR5cGUgPT4gdGhpbmcgPT4gdHlwZW9mIHRoaW5nID09PSB0eXBlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3Qge2lzQXJyYXl9ID0gQXJyYXk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNVbmRlZmluZWQgPSB0eXBlT2ZUZXN0KCd1bmRlZmluZWQnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiBpc0Z1bmN0aW9uKHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNBcnJheUJ1ZmZlciA9IGtpbmRPZlRlc3QoJ0FycmF5QnVmZmVyJyk7XG5cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICBsZXQgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzU3RyaW5nID0gdHlwZU9mVGVzdCgnc3RyaW5nJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGdW5jdGlvbiA9IHR5cGVPZlRlc3QoJ2Z1bmN0aW9uJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgTnVtYmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNOdW1iZXIgPSB0eXBlT2ZUZXN0KCdudW1iZXInKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNPYmplY3QgPSAodGhpbmcpID0+IHRoaW5nICE9PSBudWxsICYmIHR5cGVvZiB0aGluZyA9PT0gJ29iamVjdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCb29sZWFuXG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCb29sZWFuLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNCb29sZWFuID0gdGhpbmcgPT4gdGhpbmcgPT09IHRydWUgfHwgdGhpbmcgPT09IGZhbHNlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB7XG4gIGlmIChraW5kT2YodmFsKSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gKHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSkgPT09IG51bGwpICYmICEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbCkgJiYgIShTeW1ib2wuaXRlcmF0b3IgaW4gdmFsKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0RhdGUgPSBraW5kT2ZUZXN0KCdEYXRlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGUgPSBraW5kT2ZUZXN0KCdGaWxlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jsb2IgPSBraW5kT2ZUZXN0KCdCbG9iJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlTGlzdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGaWxlTGlzdCA9IGtpbmRPZlRlc3QoJ0ZpbGVMaXN0Jyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJlYW0gPSAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Zvcm1EYXRhID0gKHRoaW5nKSA9PiB7XG4gIGxldCBraW5kO1xuICByZXR1cm4gdGhpbmcgJiYgKFxuICAgICh0eXBlb2YgRm9ybURhdGEgPT09ICdmdW5jdGlvbicgJiYgdGhpbmcgaW5zdGFuY2VvZiBGb3JtRGF0YSkgfHwgKFxuICAgICAgaXNGdW5jdGlvbih0aGluZy5hcHBlbmQpICYmIChcbiAgICAgICAgKGtpbmQgPSBraW5kT2YodGhpbmcpKSA9PT0gJ2Zvcm1kYXRhJyB8fFxuICAgICAgICAvLyBkZXRlY3QgZm9ybS1kYXRhIGluc3RhbmNlXG4gICAgICAgIChraW5kID09PSAnb2JqZWN0JyAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRvU3RyaW5nKSAmJiB0aGluZy50b1N0cmluZygpID09PSAnW29iamVjdCBGb3JtRGF0YV0nKVxuICAgICAgKVxuICAgIClcbiAgKVxufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVVJMU2VhcmNoUGFyYW1zID0ga2luZE9mVGVzdCgnVVJMU2VhcmNoUGFyYW1zJyk7XG5cbi8qKlxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgU3RyaW5nIHRvIHRyaW1cbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmNvbnN0IHRyaW0gPSAoc3RyKSA9PiBzdHIudHJpbSA/XG4gIHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csICcnKTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICpcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW2FsbE93bktleXMgPSBmYWxzZV1cbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbiwge2FsbE93bktleXMgPSBmYWxzZX0gPSB7fSkge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBpO1xuICBsZXQgbDtcblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAoaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgY29uc3Qga2V5cyA9IGFsbE93bktleXMgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopIDogT2JqZWN0LmtleXMob2JqKTtcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kS2V5KG9iaiwga2V5KSB7XG4gIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgbGV0IF9rZXk7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgX2tleSA9IGtleXNbaV07XG4gICAgaWYgKGtleSA9PT0gX2tleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gX2tleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmNvbnN0IF9nbG9iYWwgPSAoKCkgPT4ge1xuICAvKmVzbGludCBuby11bmRlZjowKi9cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gZ2xvYmFsVGhpcztcbiAgcmV0dXJuIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IGdsb2JhbClcbn0pKCk7XG5cbmNvbnN0IGlzQ29udGV4dERlZmluZWQgPSAoY29udGV4dCkgPT4gIWlzVW5kZWZpbmVkKGNvbnRleHQpICYmIGNvbnRleHQgIT09IF9nbG9iYWw7XG5cbi8qKlxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgY29uc3Qge2Nhc2VsZXNzfSA9IGlzQ29udGV4dERlZmluZWQodGhpcykgJiYgdGhpcyB8fCB7fTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGNvbnN0IGFzc2lnblZhbHVlID0gKHZhbCwga2V5KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0S2V5ID0gY2FzZWxlc3MgJiYgZmluZEtleShyZXN1bHQsIGtleSkgfHwga2V5O1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFt0YXJnZXRLZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2UocmVzdWx0W3RhcmdldEtleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gdmFsO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBhcmd1bWVudHNbaV0gJiYgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5c11cbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuY29uc3QgZXh0ZW5kID0gKGEsIGIsIHRoaXNBcmcsIHthbGxPd25LZXlzfT0ge30pID0+IHtcbiAgZm9yRWFjaChiLCAodmFsLCBrZXkpID0+IHtcbiAgICBpZiAodGhpc0FyZyAmJiBpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSwge2FsbE93bktleXN9KTtcbiAgcmV0dXJuIGE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5jb25zdCBzdHJpcEJPTSA9IChjb250ZW50KSA9PiB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufTtcblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtvYmplY3R9IFtkZXNjcmlwdG9yc11cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgaW5oZXJpdHMgPSAoY29uc3RydWN0b3IsIHN1cGVyQ29uc3RydWN0b3IsIHByb3BzLCBkZXNjcmlwdG9ycykgPT4ge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLCBkZXNjcmlwdG9ycyk7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IsICdzdXBlcicsIHtcbiAgICB2YWx1ZTogc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfSk7XG4gIHByb3BzICYmIE9iamVjdC5hc3NpZ24oY29uc3RydWN0b3IucHJvdG90eXBlLCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIFJlc29sdmUgb2JqZWN0IHdpdGggZGVlcCBwcm90b3R5cGUgY2hhaW4gdG8gYSBmbGF0IG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZU9iaiBzb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gW2Rlc3RPYmpdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufEJvb2xlYW59IFtmaWx0ZXJdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJvcEZpbHRlcl1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5jb25zdCB0b0ZsYXRPYmplY3QgPSAoc291cmNlT2JqLCBkZXN0T2JqLCBmaWx0ZXIsIHByb3BGaWx0ZXIpID0+IHtcbiAgbGV0IHByb3BzO1xuICBsZXQgaTtcbiAgbGV0IHByb3A7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuXG4gIGRlc3RPYmogPSBkZXN0T2JqIHx8IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgaWYgKHNvdXJjZU9iaiA9PSBudWxsKSByZXR1cm4gZGVzdE9iajtcblxuICBkbyB7XG4gICAgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VPYmopO1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgIHByb3AgPSBwcm9wc1tpXTtcbiAgICAgIGlmICgoIXByb3BGaWx0ZXIgfHwgcHJvcEZpbHRlcihwcm9wLCBzb3VyY2VPYmosIGRlc3RPYmopKSAmJiAhbWVyZ2VkW3Byb3BdKSB7XG4gICAgICAgIGRlc3RPYmpbcHJvcF0gPSBzb3VyY2VPYmpbcHJvcF07XG4gICAgICAgIG1lcmdlZFtwcm9wXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZU9iaiA9IGZpbHRlciAhPT0gZmFsc2UgJiYgZ2V0UHJvdG90eXBlT2Yoc291cmNlT2JqKTtcbiAgfSB3aGlsZSAoc291cmNlT2JqICYmICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJiBzb3VyY2VPYmogIT09IE9iamVjdC5wcm90b3R5cGUpO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIG9mIGEgc3BlY2lmaWVkIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGVuZHNXaXRoID0gKHN0ciwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbikgPT4ge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPiBzdHIubGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSBzdHIubGVuZ3RoO1xuICB9XG4gIHBvc2l0aW9uIC09IHNlYXJjaFN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgbmV3IGFycmF5IGZyb20gYXJyYXkgbGlrZSBvYmplY3Qgb3IgbnVsbCBpZiBmYWlsZWRcbiAqXG4gKiBAcGFyYW0geyp9IFt0aGluZ11cbiAqXG4gKiBAcmV0dXJucyB7P0FycmF5fVxuICovXG5jb25zdCB0b0FycmF5ID0gKHRoaW5nKSA9PiB7XG4gIGlmICghdGhpbmcpIHJldHVybiBudWxsO1xuICBpZiAoaXNBcnJheSh0aGluZykpIHJldHVybiB0aGluZztcbiAgbGV0IGkgPSB0aGluZy5sZW5ndGg7XG4gIGlmICghaXNOdW1iZXIoaSkpIHJldHVybiBudWxsO1xuICBjb25zdCBhcnIgPSBuZXcgQXJyYXkoaSk7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgYXJyW2ldID0gdGhpbmdbaV07XG4gIH1cbiAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogQ2hlY2tpbmcgaWYgdGhlIFVpbnQ4QXJyYXkgZXhpc3RzIGFuZCBpZiBpdCBkb2VzLCBpdCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgdGhlXG4gKiB0aGluZyBwYXNzZWQgaW4gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheVxuICpcbiAqIEBwYXJhbSB7VHlwZWRBcnJheX1cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5jb25zdCBpc1R5cGVkQXJyYXkgPSAoVHlwZWRBcnJheSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiB0aGluZyA9PiB7XG4gICAgcmV0dXJuIFR5cGVkQXJyYXkgJiYgdGhpbmcgaW5zdGFuY2VvZiBUeXBlZEFycmF5O1xuICB9O1xufSkodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpKTtcblxuLyoqXG4gKiBGb3IgZWFjaCBlbnRyeSBpbiB0aGUgb2JqZWN0LCBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBrZXkgYW5kIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PGFueSwgYW55Pn0gb2JqIC0gVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBmb3JFYWNoRW50cnkgPSAob2JqLCBmbikgPT4ge1xuICBjb25zdCBnZW5lcmF0b3IgPSBvYmogJiYgb2JqW1N5bWJvbC5pdGVyYXRvcl07XG5cbiAgY29uc3QgaXRlcmF0b3IgPSBnZW5lcmF0b3IuY2FsbChvYmopO1xuXG4gIGxldCByZXN1bHQ7XG5cbiAgd2hpbGUgKChyZXN1bHQgPSBpdGVyYXRvci5uZXh0KCkpICYmICFyZXN1bHQuZG9uZSkge1xuICAgIGNvbnN0IHBhaXIgPSByZXN1bHQudmFsdWU7XG4gICAgZm4uY2FsbChvYmosIHBhaXJbMF0sIHBhaXJbMV0pO1xuICB9XG59O1xuXG4vKipcbiAqIEl0IHRha2VzIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCBhIHN0cmluZywgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ0V4cCAtIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIHNlYXJjaC5cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8Ym9vbGVhbj59XG4gKi9cbmNvbnN0IG1hdGNoQWxsID0gKHJlZ0V4cCwgc3RyKSA9PiB7XG4gIGxldCBtYXRjaGVzO1xuICBjb25zdCBhcnIgPSBbXTtcblxuICB3aGlsZSAoKG1hdGNoZXMgPSByZWdFeHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuICAgIGFyci5wdXNoKG1hdGNoZXMpO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn07XG5cbi8qIENoZWNraW5nIGlmIHRoZSBraW5kT2ZUZXN0IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHBhc3NlZCBhbiBIVE1MRm9ybUVsZW1lbnQuICovXG5jb25zdCBpc0hUTUxGb3JtID0ga2luZE9mVGVzdCgnSFRNTEZvcm1FbGVtZW50Jyk7XG5cbmNvbnN0IHRvQ2FtZWxDYXNlID0gc3RyID0+IHtcbiAgcmV0dXJuIHN0ci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csXG4gICAgZnVuY3Rpb24gcmVwbGFjZXIobSwgcDEsIHAyKSB7XG4gICAgICByZXR1cm4gcDEudG9VcHBlckNhc2UoKSArIHAyO1xuICAgIH1cbiAgKTtcbn07XG5cbi8qIENyZWF0aW5nIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGNoZWNrIGlmIGFuIG9iamVjdCBoYXMgYSBwcm9wZXJ0eS4gKi9cbmNvbnN0IGhhc093blByb3BlcnR5ID0gKCh7aGFzT3duUHJvcGVydHl9KSA9PiAob2JqLCBwcm9wKSA9PiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpKE9iamVjdC5wcm90b3R5cGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNSZWdFeHAgPSBraW5kT2ZUZXN0KCdSZWdFeHAnKTtcblxuY29uc3QgcmVkdWNlRGVzY3JpcHRvcnMgPSAob2JqLCByZWR1Y2VyKSA9PiB7XG4gIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKTtcbiAgY29uc3QgcmVkdWNlZERlc2NyaXB0b3JzID0ge307XG5cbiAgZm9yRWFjaChkZXNjcmlwdG9ycywgKGRlc2NyaXB0b3IsIG5hbWUpID0+IHtcbiAgICBsZXQgcmV0O1xuICAgIGlmICgocmV0ID0gcmVkdWNlcihkZXNjcmlwdG9yLCBuYW1lLCBvYmopKSAhPT0gZmFsc2UpIHtcbiAgICAgIHJlZHVjZWREZXNjcmlwdG9yc1tuYW1lXSA9IHJldCB8fCBkZXNjcmlwdG9yO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMob2JqLCByZWR1Y2VkRGVzY3JpcHRvcnMpO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhbGwgbWV0aG9kcyByZWFkLW9ubHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqL1xuXG5jb25zdCBmcmVlemVNZXRob2RzID0gKG9iaikgPT4ge1xuICByZWR1Y2VEZXNjcmlwdG9ycyhvYmosIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgLy8gc2tpcCByZXN0cmljdGVkIHByb3BzIGluIHN0cmljdCBtb2RlXG4gICAgaWYgKGlzRnVuY3Rpb24ob2JqKSAmJiBbJ2FyZ3VtZW50cycsICdjYWxsZXInLCAnY2FsbGVlJ10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybjtcblxuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCd3cml0YWJsZScgaW4gZGVzY3JpcHRvcikge1xuICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGVzY3JpcHRvci5zZXQpIHtcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKCkgPT4ge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXFwnJyArIG5hbWUgKyAnXFwnJyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCB0b09iamVjdFNldCA9IChhcnJheU9yU3RyaW5nLCBkZWxpbWl0ZXIpID0+IHtcbiAgY29uc3Qgb2JqID0ge307XG5cbiAgY29uc3QgZGVmaW5lID0gKGFycikgPT4ge1xuICAgIGFyci5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIG9ialt2YWx1ZV0gPSB0cnVlO1xuICAgIH0pO1xuICB9O1xuXG4gIGlzQXJyYXkoYXJyYXlPclN0cmluZykgPyBkZWZpbmUoYXJyYXlPclN0cmluZykgOiBkZWZpbmUoU3RyaW5nKGFycmF5T3JTdHJpbmcpLnNwbGl0KGRlbGltaXRlcikpO1xuXG4gIHJldHVybiBvYmo7XG59O1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbmNvbnN0IHRvRmluaXRlTnVtYmVyID0gKHZhbHVlLCBkZWZhdWx0VmFsdWUpID0+IHtcbiAgdmFsdWUgPSArdmFsdWU7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBBTFBIQSA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7XG5cbmNvbnN0IERJR0lUID0gJzAxMjM0NTY3ODknO1xuXG5jb25zdCBBTFBIQUJFVCA9IHtcbiAgRElHSVQsXG4gIEFMUEhBLFxuICBBTFBIQV9ESUdJVDogQUxQSEEgKyBBTFBIQS50b1VwcGVyQ2FzZSgpICsgRElHSVRcbn07XG5cbmNvbnN0IGdlbmVyYXRlU3RyaW5nID0gKHNpemUgPSAxNiwgYWxwaGFiZXQgPSBBTFBIQUJFVC5BTFBIQV9ESUdJVCkgPT4ge1xuICBsZXQgc3RyID0gJyc7XG4gIGNvbnN0IHtsZW5ndGh9ID0gYWxwaGFiZXQ7XG4gIHdoaWxlIChzaXplLS0pIHtcbiAgICBzdHIgKz0gYWxwaGFiZXRbTWF0aC5yYW5kb20oKSAqIGxlbmd0aHwwXTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIElmIHRoZSB0aGluZyBpcyBhIEZvcm1EYXRhIG9iamVjdCwgcmV0dXJuIHRydWUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB0aGluZyAtIFRoZSB0aGluZyB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNTcGVjQ29tcGxpYW50Rm9ybSh0aGluZykge1xuICByZXR1cm4gISEodGhpbmcgJiYgaXNGdW5jdGlvbih0aGluZy5hcHBlbmQpICYmIHRoaW5nW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdGb3JtRGF0YScgJiYgdGhpbmdbU3ltYm9sLml0ZXJhdG9yXSk7XG59XG5cbmNvbnN0IHRvSlNPTk9iamVjdCA9IChvYmopID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgQXJyYXkoMTApO1xuXG4gIGNvbnN0IHZpc2l0ID0gKHNvdXJjZSwgaSkgPT4ge1xuXG4gICAgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIGlmIChzdGFjay5pbmRleE9mKHNvdXJjZSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmKCEoJ3RvSlNPTicgaW4gc291cmNlKSkge1xuICAgICAgICBzdGFja1tpXSA9IHNvdXJjZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gaXNBcnJheShzb3VyY2UpID8gW10gOiB7fTtcblxuICAgICAgICBmb3JFYWNoKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICBjb25zdCByZWR1Y2VkVmFsdWUgPSB2aXNpdCh2YWx1ZSwgaSArIDEpO1xuICAgICAgICAgICFpc1VuZGVmaW5lZChyZWR1Y2VkVmFsdWUpICYmICh0YXJnZXRba2V5XSA9IHJlZHVjZWRWYWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YWNrW2ldID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gdmlzaXQob2JqLCAwKTtcbn07XG5cbmNvbnN0IGlzQXN5bmNGbiA9IGtpbmRPZlRlc3QoJ0FzeW5jRnVuY3Rpb24nKTtcblxuY29uc3QgaXNUaGVuYWJsZSA9ICh0aGluZykgPT5cbiAgdGhpbmcgJiYgKGlzT2JqZWN0KHRoaW5nKSB8fCBpc0Z1bmN0aW9uKHRoaW5nKSkgJiYgaXNGdW5jdGlvbih0aGluZy50aGVuKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLmNhdGNoKTtcblxudmFyIHV0aWxzID0ge1xuICBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcixcbiAgaXNGb3JtRGF0YSxcbiAgaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nLFxuICBpc051bWJlcixcbiAgaXNCb29sZWFuLFxuICBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQsXG4gIGlzRGF0ZSxcbiAgaXNGaWxlLFxuICBpc0Jsb2IsXG4gIGlzUmVnRXhwLFxuICBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbSxcbiAgaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzVHlwZWRBcnJheSxcbiAgaXNGaWxlTGlzdCxcbiAgZm9yRWFjaCxcbiAgbWVyZ2UsXG4gIGV4dGVuZCxcbiAgdHJpbSxcbiAgc3RyaXBCT00sXG4gIGluaGVyaXRzLFxuICB0b0ZsYXRPYmplY3QsXG4gIGtpbmRPZixcbiAga2luZE9mVGVzdCxcbiAgZW5kc1dpdGgsXG4gIHRvQXJyYXksXG4gIGZvckVhY2hFbnRyeSxcbiAgbWF0Y2hBbGwsXG4gIGlzSFRNTEZvcm0sXG4gIGhhc093blByb3BlcnR5LFxuICBoYXNPd25Qcm9wOiBoYXNPd25Qcm9wZXJ0eSwgLy8gYW4gYWxpYXMgdG8gYXZvaWQgRVNMaW50IG5vLXByb3RvdHlwZS1idWlsdGlucyBkZXRlY3Rpb25cbiAgcmVkdWNlRGVzY3JpcHRvcnMsXG4gIGZyZWV6ZU1ldGhvZHMsXG4gIHRvT2JqZWN0U2V0LFxuICB0b0NhbWVsQ2FzZSxcbiAgbm9vcCxcbiAgdG9GaW5pdGVOdW1iZXIsXG4gIGZpbmRLZXksXG4gIGdsb2JhbDogX2dsb2JhbCxcbiAgaXNDb250ZXh0RGVmaW5lZCxcbiAgQUxQSEFCRVQsXG4gIGdlbmVyYXRlU3RyaW5nLFxuICBpc1NwZWNDb21wbGlhbnRGb3JtLFxuICB0b0pTT05PYmplY3QsXG4gIGlzQXN5bmNGbixcbiAgaXNUaGVuYWJsZVxufTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtjb25maWddIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICpcbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIEF4aW9zRXJyb3IobWVzc2FnZSwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBFcnJvci5jYWxsKHRoaXMpO1xuXG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICB9XG5cbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgdGhpcy5uYW1lID0gJ0F4aW9zRXJyb3InO1xuICBjb2RlICYmICh0aGlzLmNvZGUgPSBjb2RlKTtcbiAgY29uZmlnICYmICh0aGlzLmNvbmZpZyA9IGNvbmZpZyk7XG4gIHJlcXVlc3QgJiYgKHRoaXMucmVxdWVzdCA9IHJlcXVlc3QpO1xuICByZXNwb25zZSAmJiAodGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoQXhpb3NFcnJvciwgRXJyb3IsIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdXRpbHMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIHN0YXR1czogdGhpcy5yZXNwb25zZSAmJiB0aGlzLnJlc3BvbnNlLnN0YXR1cyA/IHRoaXMucmVzcG9uc2Uuc3RhdHVzIDogbnVsbFxuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBwcm90b3R5cGUkMSA9IEF4aW9zRXJyb3IucHJvdG90eXBlO1xuY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcblxuW1xuICAnRVJSX0JBRF9PUFRJT05fVkFMVUUnLFxuICAnRVJSX0JBRF9PUFRJT04nLFxuICAnRUNPTk5BQk9SVEVEJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFUlJfTkVUV09SSycsXG4gICdFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTJyxcbiAgJ0VSUl9ERVBSRUNBVEVEJyxcbiAgJ0VSUl9CQURfUkVTUE9OU0UnLFxuICAnRVJSX0JBRF9SRVFVRVNUJyxcbiAgJ0VSUl9DQU5DRUxFRCcsXG4gICdFUlJfTk9UX1NVUFBPUlQnLFxuICAnRVJSX0lOVkFMSURfVVJMJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbl0uZm9yRWFjaChjb2RlID0+IHtcbiAgZGVzY3JpcHRvcnNbY29kZV0gPSB7dmFsdWU6IGNvZGV9O1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEF4aW9zRXJyb3IsIGRlc2NyaXB0b3JzKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUkMSwgJ2lzQXhpb3NFcnJvcicsIHt2YWx1ZTogdHJ1ZX0pO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuQXhpb3NFcnJvci5mcm9tID0gKGVycm9yLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlLCBjdXN0b21Qcm9wcykgPT4ge1xuICBjb25zdCBheGlvc0Vycm9yID0gT2JqZWN0LmNyZWF0ZShwcm90b3R5cGUkMSk7XG5cbiAgdXRpbHMudG9GbGF0T2JqZWN0KGVycm9yLCBheGlvc0Vycm9yLCBmdW5jdGlvbiBmaWx0ZXIob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gRXJyb3IucHJvdG90eXBlO1xuICB9LCBwcm9wID0+IHtcbiAgICByZXR1cm4gcHJvcCAhPT0gJ2lzQXhpb3NFcnJvcic7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLmNhdXNlID0gZXJyb3I7XG5cbiAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcblxuICBjdXN0b21Qcm9wcyAmJiBPYmplY3QuYXNzaWduKGF4aW9zRXJyb3IsIGN1c3RvbVByb3BzKTtcblxuICByZXR1cm4gYXhpb3NFcnJvcjtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdHJpY3RcbnZhciBodHRwQWRhcHRlciA9IG51bGw7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gdGhpbmcgaXMgYSBhcnJheSBvciBqcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRoaW5nIC0gVGhlIG9iamVjdCBvciBhcnJheSB0byBiZSB2aXNpdGVkLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1Zpc2l0YWJsZSh0aGluZykge1xuICByZXR1cm4gdXRpbHMuaXNQbGFpbk9iamVjdCh0aGluZykgfHwgdXRpbHMuaXNBcnJheSh0aGluZyk7XG59XG5cbi8qKlxuICogSXQgcmVtb3ZlcyB0aGUgYnJhY2tldHMgZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIHBhcmFtZXRlci5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUga2V5IHdpdGhvdXQgdGhlIGJyYWNrZXRzLlxuICovXG5mdW5jdGlvbiByZW1vdmVCcmFja2V0cyhrZXkpIHtcbiAgcmV0dXJuIHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgPyBrZXkuc2xpY2UoMCwgLTIpIDoga2V5O1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcGF0aCwgYSBrZXksIGFuZCBhIGJvb2xlYW4sIGFuZCByZXR1cm5zIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byB0aGUgY3VycmVudCBrZXkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgY3VycmVudCBvYmplY3QgYmVpbmcgaXRlcmF0ZWQgb3Zlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkb3RzIC0gSWYgdHJ1ZSwgdGhlIGtleSB3aWxsIGJlIHJlbmRlcmVkIHdpdGggZG90cyBpbnN0ZWFkIG9mIGJyYWNrZXRzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cykge1xuICBpZiAoIXBhdGgpIHJldHVybiBrZXk7XG4gIHJldHVybiBwYXRoLmNvbmNhdChrZXkpLm1hcChmdW5jdGlvbiBlYWNoKHRva2VuLCBpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdG9rZW4gPSByZW1vdmVCcmFja2V0cyh0b2tlbik7XG4gICAgcmV0dXJuICFkb3RzICYmIGkgPyAnWycgKyB0b2tlbiArICddJyA6IHRva2VuO1xuICB9KS5qb2luKGRvdHMgPyAnLicgOiAnJyk7XG59XG5cbi8qKlxuICogSWYgdGhlIGFycmF5IGlzIGFuIGFycmF5IGFuZCBub25lIG9mIGl0cyBlbGVtZW50cyBhcmUgdmlzaXRhYmxlLCB0aGVuIGl0J3MgYSBmbGF0IGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gYXJyIC0gVGhlIGFycmF5IHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmxhdEFycmF5KGFycikge1xuICByZXR1cm4gdXRpbHMuaXNBcnJheShhcnIpICYmICFhcnIuc29tZShpc1Zpc2l0YWJsZSk7XG59XG5cbmNvbnN0IHByZWRpY2F0ZXMgPSB1dGlscy50b0ZsYXRPYmplY3QodXRpbHMsIHt9LCBudWxsLCBmdW5jdGlvbiBmaWx0ZXIocHJvcCkge1xuICByZXR1cm4gL15pc1tBLVpdLy50ZXN0KHByb3ApO1xufSk7XG5cbi8qKlxuICogQ29udmVydCBhIGRhdGEgb2JqZWN0IHRvIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcGFyYW0gez9PYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMudmlzaXRvcl1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMubWV0YVRva2VucyA9IHRydWVdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmRvdHMgPSBmYWxzZV1cbiAqIEBwYXJhbSB7P0Jvb2xlYW59IFtvcHRpb25zLmluZGV4ZXMgPSBmYWxzZV1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG4vKipcbiAqIEl0IGNvbnZlcnRzIGFuIG9iamVjdCBpbnRvIGEgRm9ybURhdGEgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3Q8YW55LCBhbnk+fSBvYmogLSBUaGUgb2JqZWN0IHRvIGNvbnZlcnQgdG8gZm9ybSBkYXRhLlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1EYXRhIC0gVGhlIEZvcm1EYXRhIG9iamVjdCB0byBhcHBlbmQgdG8uXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgZm9ybURhdGEgPSBmb3JtRGF0YSB8fCBuZXcgKEZvcm1EYXRhKSgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvcHRpb25zID0gdXRpbHMudG9GbGF0T2JqZWN0KG9wdGlvbnMsIHtcbiAgICBtZXRhVG9rZW5zOiB0cnVlLFxuICAgIGRvdHM6IGZhbHNlLFxuICAgIGluZGV4ZXM6IGZhbHNlXG4gIH0sIGZhbHNlLCBmdW5jdGlvbiBkZWZpbmVkKG9wdGlvbiwgc291cmNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gICAgcmV0dXJuICF1dGlscy5pc1VuZGVmaW5lZChzb3VyY2Vbb3B0aW9uXSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1ldGFUb2tlbnMgPSBvcHRpb25zLm1ldGFUb2tlbnM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBjb25zdCB2aXNpdG9yID0gb3B0aW9ucy52aXNpdG9yIHx8IGRlZmF1bHRWaXNpdG9yO1xuICBjb25zdCBkb3RzID0gb3B0aW9ucy5kb3RzO1xuICBjb25zdCBpbmRleGVzID0gb3B0aW9ucy5pbmRleGVzO1xuICBjb25zdCBfQmxvYiA9IG9wdGlvbnMuQmxvYiB8fCB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgJiYgQmxvYjtcbiAgY29uc3QgdXNlQmxvYiA9IF9CbG9iICYmIHV0aWxzLmlzU3BlY0NvbXBsaWFudEZvcm0oZm9ybURhdGEpO1xuXG4gIGlmICghdXRpbHMuaXNGdW5jdGlvbih2aXNpdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Zpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmdW5jdGlvbiBjb252ZXJ0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnJztcblxuICAgIGlmICh1dGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZUJsb2IgJiYgdXRpbHMuaXNCbG9iKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ0Jsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB1c2VCbG9iICYmIHR5cGVvZiBCbG9iID09PSAnZnVuY3Rpb24nID8gbmV3IEJsb2IoW3ZhbHVlXSkgOiBCdWZmZXIuZnJvbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmlzaXRvci5cbiAgICpcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IGtleVxuICAgKiBAcGFyYW0ge0FycmF5PFN0cmluZ3xOdW1iZXI+fSBwYXRoXG4gICAqIEB0aGlzIHtGb3JtRGF0YX1cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybiB0cnVlIHRvIHZpc2l0IHRoZSBlYWNoIHByb3Agb2YgdGhlIHZhbHVlIHJlY3Vyc2l2ZWx5XG4gICAqL1xuICBmdW5jdGlvbiBkZWZhdWx0VmlzaXRvcih2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgbGV0IGFyciA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICYmICFwYXRoICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh1dGlscy5lbmRzV2l0aChrZXksICd7fScpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBrZXkgPSBtZXRhVG9rZW5zID8ga2V5IDoga2V5LnNsaWNlKDAsIC0yKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKHV0aWxzLmlzQXJyYXkodmFsdWUpICYmIGlzRmxhdEFycmF5KHZhbHVlKSkgfHxcbiAgICAgICAgKCh1dGlscy5pc0ZpbGVMaXN0KHZhbHVlKSB8fCB1dGlscy5lbmRzV2l0aChrZXksICdbXScpKSAmJiAoYXJyID0gdXRpbHMudG9BcnJheSh2YWx1ZSkpXG4gICAgICAgICkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IHJlbW92ZUJyYWNrZXRzKGtleSk7XG5cbiAgICAgICAgYXJyLmZvckVhY2goZnVuY3Rpb24gZWFjaChlbCwgaW5kZXgpIHtcbiAgICAgICAgICAhKHV0aWxzLmlzVW5kZWZpbmVkKGVsKSB8fCBlbCA9PT0gbnVsbCkgJiYgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgICAgICBpbmRleGVzID09PSB0cnVlID8gcmVuZGVyS2V5KFtrZXldLCBpbmRleCwgZG90cykgOiAoaW5kZXhlcyA9PT0gbnVsbCA/IGtleSA6IGtleSArICdbXScpLFxuICAgICAgICAgICAgY29udmVydFZhbHVlKGVsKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzVmlzaXRhYmxlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9ybURhdGEuYXBwZW5kKHJlbmRlcktleShwYXRoLCBrZXksIGRvdHMpLCBjb252ZXJ0VmFsdWUodmFsdWUpKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrID0gW107XG5cbiAgY29uc3QgZXhwb3NlZEhlbHBlcnMgPSBPYmplY3QuYXNzaWduKHByZWRpY2F0ZXMsIHtcbiAgICBkZWZhdWx0VmlzaXRvcixcbiAgICBjb252ZXJ0VmFsdWUsXG4gICAgaXNWaXNpdGFibGVcbiAgfSk7XG5cbiAgZnVuY3Rpb24gYnVpbGQodmFsdWUsIHBhdGgpIHtcbiAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICBpZiAoc3RhY2suaW5kZXhPZih2YWx1ZSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXRoLmpvaW4oJy4nKSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHZhbHVlLCBmdW5jdGlvbiBlYWNoKGVsLCBrZXkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9ICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiB2aXNpdG9yLmNhbGwoXG4gICAgICAgIGZvcm1EYXRhLCBlbCwgdXRpbHMuaXNTdHJpbmcoa2V5KSA/IGtleS50cmltKCkgOiBrZXksIHBhdGgsIGV4cG9zZWRIZWxwZXJzXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgIGJ1aWxkKGVsLCBwYXRoID8gcGF0aC5jb25jYXQoa2V5KSA6IFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0YWNrLnBvcCgpO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG5cbiAgYnVpbGQob2JqKTtcblxuICByZXR1cm4gZm9ybURhdGE7XG59XG5cbi8qKlxuICogSXQgZW5jb2RlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGluIHRoZSB1bnJlc2VydmVkIHNldCB3aXRoXG4gKiB0aGVpciBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBlbmNvZGUuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlbmNvZGUkMShzdHIpIHtcbiAgY29uc3QgY2hhck1hcCA9IHtcbiAgICAnISc6ICclMjEnLFxuICAgIFwiJ1wiOiAnJTI3JyxcbiAgICAnKCc6ICclMjgnLFxuICAgICcpJzogJyUyOScsXG4gICAgJ34nOiAnJTdFJyxcbiAgICAnJTIwJzogJysnLFxuICAgICclMDAnOiAnXFx4MDAnXG4gIH07XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyKS5yZXBsYWNlKC9bIScoKX5dfCUyMHwlMDAvZywgZnVuY3Rpb24gcmVwbGFjZXIobWF0Y2gpIHtcbiAgICByZXR1cm4gY2hhck1hcFttYXRjaF07XG4gIH0pO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcGFyYW1zIG9iamVjdCBhbmQgY29udmVydHMgaXQgdG8gYSBGb3JtRGF0YSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGJlIGNvbnZlcnRlZCB0byBhIEZvcm1EYXRhIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdCBwYXNzZWQgdG8gdGhlIEF4aW9zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBBeGlvc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMsIG9wdGlvbnMpIHtcbiAgdGhpcy5fcGFpcnMgPSBbXTtcblxuICBwYXJhbXMgJiYgdG9Gb3JtRGF0YShwYXJhbXMsIHRoaXMsIG9wdGlvbnMpO1xufVxuXG5jb25zdCBwcm90b3R5cGUgPSBBeGlvc1VSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG5cbnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQobmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5fcGFpcnMucHVzaChbbmFtZSwgdmFsdWVdKTtcbn07XG5cbnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGVuY29kZXIpIHtcbiAgY29uc3QgX2VuY29kZSA9IGVuY29kZXIgPyBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBlbmNvZGVyLmNhbGwodGhpcywgdmFsdWUsIGVuY29kZSQxKTtcbiAgfSA6IGVuY29kZSQxO1xuXG4gIHJldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24gZWFjaChwYWlyKSB7XG4gICAgcmV0dXJuIF9lbmNvZGUocGFpclswXSkgKyAnPScgKyBfZW5jb2RlKHBhaXJbMV0pO1xuICB9LCAnJykuam9pbignJicpO1xufTtcblxuLyoqXG4gKiBJdCByZXBsYWNlcyBhbGwgaW5zdGFuY2VzIG9mIHRoZSBjaGFyYWN0ZXJzIGA6YCwgYCRgLCBgLGAsIGArYCwgYFtgLCBhbmQgYF1gIHdpdGggdGhlaXJcbiAqIFVSSSBlbmNvZGVkIGNvdW50ZXJwYXJ0c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgVGhlIHZhbHVlIHRvIGJlIGVuY29kZWQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZSh2YWwpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cbiAgICByZXBsYWNlKC8lMjQvZywgJyQnKS5cbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXG4gICAgcmVwbGFjZSgvJTVCL2dpLCAnWycpLlxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcGFyYW0gez9vYmplY3R9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5mdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgb3B0aW9ucykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIFxuICBjb25zdCBfZW5jb2RlID0gb3B0aW9ucyAmJiBvcHRpb25zLmVuY29kZSB8fCBlbmNvZGU7XG5cbiAgY29uc3Qgc2VyaWFsaXplRm4gPSBvcHRpb25zICYmIG9wdGlvbnMuc2VyaWFsaXplO1xuXG4gIGxldCBzZXJpYWxpemVkUGFyYW1zO1xuXG4gIGlmIChzZXJpYWxpemVGbikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBzZXJpYWxpemVGbihwYXJhbXMsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSB1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpID9cbiAgICAgIHBhcmFtcy50b1N0cmluZygpIDpcbiAgICAgIG5ldyBBeGlvc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMsIG9wdGlvbnMpLnRvU3RyaW5nKF9lbmNvZGUpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICBjb25zdCBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuXG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59XG5cbmNsYXNzIEludGVyY2VwdG9yTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICAgKi9cbiAgdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgICAgZnVsZmlsbGVkLFxuICAgICAgcmVqZWN0ZWQsXG4gICAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSBpbnRlcmNlcHRvciB3YXMgcmVtb3ZlZCwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIGVqZWN0KGlkKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVycykge1xuICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICAgKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmb3JFYWNoKGZuKSB7XG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgICBmbihoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyJDEgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG5cbnZhciB0cmFuc2l0aW9uYWxEZWZhdWx0cyA9IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtcyQxID0gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgPyBVUkxTZWFyY2hQYXJhbXMgOiBBeGlvc1VSTFNlYXJjaFBhcmFtcztcblxudmFyIEZvcm1EYXRhJDEgPSB0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnID8gRm9ybURhdGEgOiBudWxsO1xuXG52YXIgQmxvYiQxID0gdHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnID8gQmxvYiA6IG51bGw7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBpc1N0YW5kYXJkQnJvd3NlckVudiA9ICgoKSA9PiB7XG4gIGxldCBwcm9kdWN0O1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIChwcm9kdWN0ID0gbmF2aWdhdG9yLnByb2R1Y3QpID09PSAnUmVhY3ROYXRpdmUnIHx8XG4gICAgcHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICBwcm9kdWN0ID09PSAnTlMnKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcbn0pKCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIHdlYldvcmtlciBlbnZpcm9ubWVudFxuICpcbiAqIEFsdGhvdWdoIHRoZSBgaXNTdGFuZGFyZEJyb3dzZXJFbnZgIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdFxuICogYGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyYCwgdGhlIFdlYldvcmtlciB3aWxsIHN0aWxsIGJlXG4gKiBmaWx0ZXJlZCBvdXQgZHVlIHRvIGl0cyBqdWRnbWVudCBzdGFuZGFyZFxuICogYHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdgLlxuICogVGhpcyBsZWFkcyB0byBhIHByb2JsZW0gd2hlbiBheGlvcyBwb3N0IGBGb3JtRGF0YWAgaW4gd2ViV29ya2VyXG4gKi9cbiBjb25zdCBpc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudiA9ICgoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSAmJlxuICAgIHR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbidcbiAgKTtcbn0pKCk7XG5cblxudmFyIHBsYXRmb3JtID0ge1xuICBpc0Jyb3dzZXI6IHRydWUsXG4gIGNsYXNzZXM6IHtcbiAgICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyQxLFxuICAgIEZvcm1EYXRhOiBGb3JtRGF0YSQxLFxuICAgIEJsb2I6IEJsb2IkMVxuICB9LFxuICBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgaXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYsXG4gIHByb3RvY29sczogWydodHRwJywgJ2h0dHBzJywgJ2ZpbGUnLCAnYmxvYicsICd1cmwnLCAnZGF0YSddXG59O1xuXG5mdW5jdGlvbiB0b1VSTEVuY29kZWRGb3JtKGRhdGEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRvRm9ybURhdGEoZGF0YSwgbmV3IHBsYXRmb3JtLmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zKCksIE9iamVjdC5hc3NpZ24oe1xuICAgIHZpc2l0b3I6IGZ1bmN0aW9uKHZhbHVlLCBrZXksIHBhdGgsIGhlbHBlcnMpIHtcbiAgICAgIGlmIChwbGF0Zm9ybS5pc05vZGUgJiYgdXRpbHMuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGVscGVycy5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfSwgb3B0aW9ucykpO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nIGxpa2UgYGZvb1t4XVt5XVt6XWAgYW5kIHJldHVybnMgYW4gYXJyYXkgbGlrZSBgWydmb28nLCAneCcsICd5JywgJ3onXVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzLlxuICovXG5mdW5jdGlvbiBwYXJzZVByb3BQYXRoKG5hbWUpIHtcbiAgLy8gZm9vW3hdW3ldW3pdXG4gIC8vIGZvby54LnkuelxuICAvLyBmb28teC15LXpcbiAgLy8gZm9vIHggeSB6XG4gIHJldHVybiB1dGlscy5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csIG5hbWUpLm1hcChtYXRjaCA9PiB7XG4gICAgcmV0dXJuIG1hdGNoWzBdID09PSAnW10nID8gJycgOiBtYXRjaFsxXSB8fCBtYXRjaFswXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBhcnJheSB0byBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY29udmVydCB0byBhbiBvYmplY3QuXG4gKlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhbmQgdmFsdWVzIGFzIHRoZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlUb09iamVjdChhcnIpIHtcbiAgY29uc3Qgb2JqID0ge307XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICBsZXQgaTtcbiAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gIGxldCBrZXk7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgb2JqW2tleV0gPSBhcnJba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgRm9ybURhdGEgb2JqZWN0IGFuZCByZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgVGhlIEZvcm1EYXRhIG9iamVjdCB0byBjb252ZXJ0IHRvIEpTT04uXG4gKlxuICogQHJldHVybnMge09iamVjdDxzdHJpbmcsIGFueT4gfCBudWxsfSBUaGUgY29udmVydGVkIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZm9ybURhdGFUb0pTT04oZm9ybURhdGEpIHtcbiAgZnVuY3Rpb24gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXQsIGluZGV4KSB7XG4gICAgbGV0IG5hbWUgPSBwYXRoW2luZGV4KytdO1xuICAgIGNvbnN0IGlzTnVtZXJpY0tleSA9IE51bWJlci5pc0Zpbml0ZSgrbmFtZSk7XG4gICAgY29uc3QgaXNMYXN0ID0gaW5kZXggPj0gcGF0aC5sZW5ndGg7XG4gICAgbmFtZSA9ICFuYW1lICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldC5sZW5ndGggOiBuYW1lO1xuXG4gICAgaWYgKGlzTGFzdCkge1xuICAgICAgaWYgKHV0aWxzLmhhc093blByb3AodGFyZ2V0LCBuYW1lKSkge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSBbdGFyZ2V0W25hbWVdLCB2YWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXRbbmFtZV0gfHwgIXV0aWxzLmlzT2JqZWN0KHRhcmdldFtuYW1lXSkpIHtcbiAgICAgIHRhcmdldFtuYW1lXSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGJ1aWxkUGF0aChwYXRoLCB2YWx1ZSwgdGFyZ2V0W25hbWVdLCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0ICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gYXJyYXlUb09iamVjdCh0YXJnZXRbbmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiAhaXNOdW1lcmljS2V5O1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZm9ybURhdGEpICYmIHV0aWxzLmlzRnVuY3Rpb24oZm9ybURhdGEuZW50cmllcykpIHtcbiAgICBjb25zdCBvYmogPSB7fTtcblxuICAgIHV0aWxzLmZvckVhY2hFbnRyeShmb3JtRGF0YSwgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICBidWlsZFBhdGgocGFyc2VQcm9wUGF0aChuYW1lKSwgdmFsdWUsIG9iaiwgMCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBzdHJpbmcsIHRyaWVzIHRvIHBhcnNlIGl0LCBhbmQgaWYgaXQgZmFpbHMsIGl0IHJldHVybnMgdGhlIHN0cmluZ2lmaWVkIHZlcnNpb25cbiAqIG9mIHRoZSBpbnB1dFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdWYWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBzdHJpbmdpZmllZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcnNlciAtIEEgZnVuY3Rpb24gdGhhdCBwYXJzZXMgYSBzdHJpbmcgaW50byBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZW5jb2RlciAtIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHZhbHVlIGFuZCByZXR1cm5zIGEgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5naWZpZWQgdmVyc2lvbiBvZiB0aGUgcmF3VmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG5jb25zdCBkZWZhdWx0cyA9IHtcblxuICB0cmFuc2l0aW9uYWw6IHRyYW5zaXRpb25hbERlZmF1bHRzLFxuXG4gIGFkYXB0ZXI6IFsneGhyJywgJ2h0dHAnXSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSBoZWFkZXJzLmdldENvbnRlbnRUeXBlKCkgfHwgJyc7XG4gICAgY29uc3QgaGFzSlNPTkNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpID4gLTE7XG4gICAgY29uc3QgaXNPYmplY3RQYXlsb2FkID0gdXRpbHMuaXNPYmplY3QoZGF0YSk7XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkICYmIHV0aWxzLmlzSFRNTEZvcm0oZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBuZXcgRm9ybURhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGb3JtRGF0YSA9IHV0aWxzLmlzRm9ybURhdGEoZGF0YSk7XG5cbiAgICBpZiAoaXNGb3JtRGF0YSkge1xuICAgICAgaWYgKCFoYXNKU09OQ29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzSlNPTkNvbnRlbnRUeXBlID8gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGFUb0pTT04oZGF0YSkpIDogZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04JywgZmFsc2UpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgaXNGaWxlTGlzdDtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQpIHtcbiAgICAgIGlmIChjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0b1VSTEVuY29kZWRGb3JtKGRhdGEsIHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoaXNGaWxlTGlzdCA9IHV0aWxzLmlzRmlsZUxpc3QoZGF0YSkpIHx8IGNvbnRlbnRUeXBlLmluZGV4T2YoJ211bHRpcGFydC9mb3JtLWRhdGEnKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IF9Gb3JtRGF0YSA9IHRoaXMuZW52ICYmIHRoaXMuZW52LkZvcm1EYXRhO1xuXG4gICAgICAgIHJldHVybiB0b0Zvcm1EYXRhKFxuICAgICAgICAgIGlzRmlsZUxpc3QgPyB7J2ZpbGVzW10nOiBkYXRhfSA6IGRhdGEsXG4gICAgICAgICAgX0Zvcm1EYXRhICYmIG5ldyBfRm9ybURhdGEoKSxcbiAgICAgICAgICB0aGlzLmZvcm1TZXJpYWxpemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCB8fCBoYXNKU09OQ29udGVudFR5cGUgKSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi9qc29uJywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgY29uc3QgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIGNvbnN0IGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICBjb25zdCBKU09OUmVxdWVzdGVkID0gdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChkYXRhICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmICgoZm9yY2VkSlNPTlBhcnNpbmcgJiYgIXRoaXMucmVzcG9uc2VUeXBlKSB8fCBKU09OUmVxdWVzdGVkKSkge1xuICAgICAgY29uc3Qgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgICAgY29uc3Qgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgSlNPTlJlcXVlc3RlZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcGxhdGZvcm0uY2xhc3Nlcy5Gb3JtRGF0YSxcbiAgICBCbG9iOiBwbGF0Zm9ybS5jbGFzc2VzLkJsb2JcbiAgfSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAgICdDb250ZW50LVR5cGUnOiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgKG1ldGhvZCkgPT4ge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG52YXIgZGVmYXVsdHMkMSA9IGRlZmF1bHRzO1xuXG4vLyBSYXdBeGlvc0hlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG5jb25zdCBpZ25vcmVEdXBsaWNhdGVPZiA9IHV0aWxzLnRvT2JqZWN0U2V0KFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJhd0hlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbnZhciBwYXJzZUhlYWRlcnMgPSByYXdIZWFkZXJzID0+IHtcbiAgY29uc3QgcGFyc2VkID0ge307XG4gIGxldCBrZXk7XG4gIGxldCB2YWw7XG4gIGxldCBpO1xuXG4gIHJhd0hlYWRlcnMgJiYgcmF3SGVhZGVycy5zcGxpdCgnXFxuJykuZm9yRWFjaChmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygwLCBpKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSBsaW5lLnN1YnN0cmluZyhpICsgMSkudHJpbSgpO1xuXG4gICAgaWYgKCFrZXkgfHwgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mW2tleV0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0pIHtcbiAgICAgICAgcGFyc2VkW2tleV0ucHVzaCh2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBbdmFsXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuXG5jb25zdCAkaW50ZXJuYWxzID0gU3ltYm9sKCdpbnRlcm5hbHMnKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyICYmIFN0cmluZyhoZWFkZXIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAobm9ybWFsaXplVmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUb2tlbnMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHRva2Vuc1JFID0gLyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZztcbiAgbGV0IG1hdGNoO1xuXG4gIHdoaWxlICgobWF0Y2ggPSB0b2tlbnNSRS5leGVjKHN0cikpKSB7XG4gICAgdG9rZW5zW21hdGNoWzFdXSA9IG1hdGNoWzJdO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuY29uc3QgaXNWYWxpZEhlYWRlck5hbWUgPSAoc3RyKSA9PiAvXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KHN0ci50cmltKCkpO1xuXG5mdW5jdGlvbiBtYXRjaEhlYWRlclZhbHVlKGNvbnRleHQsIHZhbHVlLCBoZWFkZXIsIGZpbHRlciwgaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gIGlmICh1dGlscy5pc0Z1bmN0aW9uKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLmNhbGwodGhpcywgdmFsdWUsIGhlYWRlcik7XG4gIH1cblxuICBpZiAoaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gICAgdmFsdWUgPSBoZWFkZXI7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuO1xuXG4gIGlmICh1dGlscy5pc1N0cmluZyhmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZmlsdGVyKSAhPT0gLTE7XG4gIH1cblxuICBpZiAodXRpbHMuaXNSZWdFeHAoZmlsdGVyKSkge1xuICAgIHJldHVybiBmaWx0ZXIudGVzdCh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0SGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyLnRyaW0oKVxuICAgIC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywgKHcsIGNoYXIsIHN0cikgPT4ge1xuICAgICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKSArIHN0cjtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBY2Nlc3NvcnMob2JqLCBoZWFkZXIpIHtcbiAgY29uc3QgYWNjZXNzb3JOYW1lID0gdXRpbHMudG9DYW1lbENhc2UoJyAnICsgaGVhZGVyKTtcblxuICBbJ2dldCcsICdzZXQnLCAnaGFzJ10uZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBtZXRob2ROYW1lICsgYWNjZXNzb3JOYW1lLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24oYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgICByZXR1cm4gdGhpc1ttZXRob2ROYW1lXS5jYWxsKHRoaXMsIGhlYWRlciwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xufVxuXG5jbGFzcyBBeGlvc0hlYWRlcnMge1xuICBjb25zdHJ1Y3RvcihoZWFkZXJzKSB7XG4gICAgaGVhZGVycyAmJiB0aGlzLnNldChoZWFkZXJzKTtcbiAgfVxuXG4gIHNldChoZWFkZXIsIHZhbHVlT3JSZXdyaXRlLCByZXdyaXRlKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBzZXRIZWFkZXIoX3ZhbHVlLCBfaGVhZGVyLCBfcmV3cml0ZSkge1xuICAgICAgY29uc3QgbEhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihfaGVhZGVyKTtcblxuICAgICAgaWYgKCFsSGVhZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShzZWxmLCBsSGVhZGVyKTtcblxuICAgICAgaWYoIWtleSB8fCBzZWxmW2tleV0gPT09IHVuZGVmaW5lZCB8fCBfcmV3cml0ZSA9PT0gdHJ1ZSB8fCAoX3Jld3JpdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxmW2tleV0gIT09IGZhbHNlKSkge1xuICAgICAgICBzZWxmW2tleSB8fCBfaGVhZGVyXSA9IG5vcm1hbGl6ZVZhbHVlKF92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0SGVhZGVycyA9IChoZWFkZXJzLCBfcmV3cml0ZSkgPT5cbiAgICAgIHV0aWxzLmZvckVhY2goaGVhZGVycywgKF92YWx1ZSwgX2hlYWRlcikgPT4gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpKTtcblxuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGhlYWRlcikgfHwgaGVhZGVyIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcikge1xuICAgICAgc2V0SGVhZGVycyhoZWFkZXIsIHZhbHVlT3JSZXdyaXRlKTtcbiAgICB9IGVsc2UgaWYodXRpbHMuaXNTdHJpbmcoaGVhZGVyKSAmJiAoaGVhZGVyID0gaGVhZGVyLnRyaW0oKSkgJiYgIWlzVmFsaWRIZWFkZXJOYW1lKGhlYWRlcikpIHtcbiAgICAgIHNldEhlYWRlcnMocGFyc2VIZWFkZXJzKGhlYWRlciksIHZhbHVlT3JSZXdyaXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyICE9IG51bGwgJiYgc2V0SGVhZGVyKHZhbHVlT3JSZXdyaXRlLCBoZWFkZXIsIHJld3JpdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KGhlYWRlciwgcGFyc2VyKSB7XG4gICAgaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKGhlYWRlcik7XG5cbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHRoaXMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tleV07XG5cbiAgICAgICAgaWYgKCFwYXJzZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VyID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5zKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcnNlcikpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLmNhbGwodGhpcywgdmFsdWUsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNSZWdFeHAocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuZXhlYyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgcmV0dXJuICEhKGtleSAmJiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlcikpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBkZWxldGUoaGVhZGVyLCBtYXRjaGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUhlYWRlcihfaGVhZGVyKSB7XG4gICAgICBfaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoX2hlYWRlcikge1xuICAgICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIF9oZWFkZXIpO1xuXG4gICAgICAgIGlmIChrZXkgJiYgKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUoc2VsZiwgc2VsZltrZXldLCBrZXksIG1hdGNoZXIpKSkge1xuICAgICAgICAgIGRlbGV0ZSBzZWxmW2tleV07XG5cbiAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlci5mb3JFYWNoKGRlbGV0ZUhlYWRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZUhlYWRlcihoZWFkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgY2xlYXIobWF0Y2hlcikge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlciwgdHJ1ZSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXNba2V5XTtcbiAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBub3JtYWxpemUoZm9ybWF0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaGVhZGVycyA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLCAodmFsdWUsIGhlYWRlcikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShoZWFkZXJzLCBoZWFkZXIpO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHNlbGZba2V5XSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkID0gZm9ybWF0ID8gZm9ybWF0SGVhZGVyKGhlYWRlcikgOiBTdHJpbmcoaGVhZGVyKS50cmltKCk7XG5cbiAgICAgIGlmIChub3JtYWxpemVkICE9PSBoZWFkZXIpIHtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgIH1cblxuICAgICAgc2VsZltub3JtYWxpemVkXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgaGVhZGVyc1tub3JtYWxpemVkXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbmNhdCguLi50YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsIC4uLnRhcmdldHMpO1xuICB9XG5cbiAgdG9KU09OKGFzU3RyaW5ncykge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSBmYWxzZSAmJiAob2JqW2hlYWRlcl0gPSBhc1N0cmluZ3MgJiYgdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsICcpIDogdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbaGVhZGVyLCB2YWx1ZV0pID0+IGhlYWRlciArICc6ICcgKyB2YWx1ZSkuam9pbignXFxuJyk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdBeGlvc0hlYWRlcnMnO1xuICB9XG5cbiAgc3RhdGljIGZyb20odGhpbmcpIHtcbiAgICByZXR1cm4gdGhpbmcgaW5zdGFuY2VvZiB0aGlzID8gdGhpbmcgOiBuZXcgdGhpcyh0aGluZyk7XG4gIH1cblxuICBzdGF0aWMgY29uY2F0KGZpcnN0LCAuLi50YXJnZXRzKSB7XG4gICAgY29uc3QgY29tcHV0ZWQgPSBuZXcgdGhpcyhmaXJzdCk7XG5cbiAgICB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4gY29tcHV0ZWQuc2V0KHRhcmdldCkpO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkO1xuICB9XG5cbiAgc3RhdGljIGFjY2Vzc29yKGhlYWRlcikge1xuICAgIGNvbnN0IGludGVybmFscyA9IHRoaXNbJGludGVybmFsc10gPSAodGhpc1skaW50ZXJuYWxzXSA9IHtcbiAgICAgIGFjY2Vzc29yczoge31cbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IGludGVybmFscy5hY2Nlc3NvcnM7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdGhpcy5wcm90b3R5cGU7XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVBY2Nlc3NvcihfaGVhZGVyKSB7XG4gICAgICBjb25zdCBsSGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoIWFjY2Vzc29yc1tsSGVhZGVyXSkge1xuICAgICAgICBidWlsZEFjY2Vzc29ycyhwcm90b3R5cGUsIF9oZWFkZXIpO1xuICAgICAgICBhY2Nlc3NvcnNbbEhlYWRlcl0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHV0aWxzLmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlci5mb3JFYWNoKGRlZmluZUFjY2Vzc29yKSA6IGRlZmluZUFjY2Vzc29yKGhlYWRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5BeGlvc0hlYWRlcnMuYWNjZXNzb3IoWydDb250ZW50LVR5cGUnLCAnQ29udGVudC1MZW5ndGgnLCAnQWNjZXB0JywgJ0FjY2VwdC1FbmNvZGluZycsICdVc2VyLUFnZW50JywgJ0F1dGhvcml6YXRpb24nXSk7XG5cbi8vIHJlc2VydmVkIG5hbWVzIGhvdGZpeFxudXRpbHMucmVkdWNlRGVzY3JpcHRvcnMoQXhpb3NIZWFkZXJzLnByb3RvdHlwZSwgKHt2YWx1ZX0sIGtleSkgPT4ge1xuICBsZXQgbWFwcGVkID0ga2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7IC8vIG1hcCBgc2V0YCA9PiBgU2V0YFxuICByZXR1cm4ge1xuICAgIGdldDogKCkgPT4gdmFsdWUsXG4gICAgc2V0KGhlYWRlclZhbHVlKSB7XG4gICAgICB0aGlzW21hcHBlZF0gPSBoZWFkZXJWYWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG51dGlscy5mcmVlemVNZXRob2RzKEF4aW9zSGVhZGVycyk7XG5cbnZhciBBeGlvc0hlYWRlcnMkMSA9IEF4aW9zSGVhZGVycztcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHBhcmFtIHs/T2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2Ugb2JqZWN0XG4gKlxuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGZucywgcmVzcG9uc2UpIHtcbiAgY29uc3QgY29uZmlnID0gdGhpcyB8fCBkZWZhdWx0cyQxO1xuICBjb25zdCBjb250ZXh0ID0gcmVzcG9uc2UgfHwgY29uZmlnO1xuICBjb25zdCBoZWFkZXJzID0gQXhpb3NIZWFkZXJzJDEuZnJvbShjb250ZXh0LmhlYWRlcnMpO1xuICBsZXQgZGF0YSA9IGNvbnRleHQuZGF0YTtcblxuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29uZmlnLCBkYXRhLCBoZWFkZXJzLm5vcm1hbGl6ZSgpLCByZXNwb25zZSA/IHJlc3BvbnNlLnN0YXR1cyA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGhlYWRlcnMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn1cblxuLyoqXG4gKiBBIGBDYW5jZWxlZEVycm9yYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0PX0gcmVxdWVzdCBUaGUgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyB7Q2FuY2VsZWRFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbGVkRXJyb3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBBeGlvc0Vycm9yLmNhbGwodGhpcywgbWVzc2FnZSA9PSBudWxsID8gJ2NhbmNlbGVkJyA6IG1lc3NhZ2UsIEF4aW9zRXJyb3IuRVJSX0NBTkNFTEVELCBjb25maWcsIHJlcXVlc3QpO1xuICB0aGlzLm5hbWUgPSAnQ2FuY2VsZWRFcnJvcic7XG59XG5cbnV0aWxzLmluaGVyaXRzKENhbmNlbGVkRXJyb3IsIEF4aW9zRXJyb3IsIHtcbiAgX19DQU5DRUxfXzogdHJ1ZVxufSk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIHJlc3BvbnNlLlxuICovXG5mdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICBjb25zdCB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAnUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgW0F4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IocmVzcG9uc2Uuc3RhdHVzIC8gMTAwKSAtIDRdLFxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn1cblxudmFyIGNvb2tpZXMgPSBwbGF0Zm9ybS5pc1N0YW5kYXJkQnJvd3NlckVudiA/XG5cbi8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIHJldHVybiB7XG4gICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IFtdO1xuICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XG4gICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKGRvbWFpbikpIHtcbiAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgICAgfSxcblxuICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICAgIH1cbiAgICB9O1xuICB9KSgpIDpcblxuLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIHJldHVybiB7XG4gICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH0pKCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xuZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5mdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn1cblxudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHBsYXRmb3JtLmlzU3RhbmRhcmRCcm93c2VyRW52ID9cblxuLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4vLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cbiAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICBjb25zdCBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICBjb25zdCB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsZXQgb3JpZ2luVVJMO1xuXG4gICAgLyoqXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICovXG4gICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgIGxldCBocmVmID0gdXJsO1xuXG4gICAgICBpZiAobXNpZSkge1xuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgIH1cblxuICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXG4gICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxuICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICB9O1xuICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICB9KSgpO1xuXG5mdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICBjb25zdCBtYXRjaCA9IC9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKHVybCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgZGF0YSBtYXhSYXRlXG4gKiBAcGFyYW0ge051bWJlcn0gW3NhbXBsZXNDb3VudD0gMTBdXG4gKiBAcGFyYW0ge051bWJlcn0gW21pbj0gMTAwMF1cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gc3BlZWRvbWV0ZXIoc2FtcGxlc0NvdW50LCBtaW4pIHtcbiAgc2FtcGxlc0NvdW50ID0gc2FtcGxlc0NvdW50IHx8IDEwO1xuICBjb25zdCBieXRlcyA9IG5ldyBBcnJheShzYW1wbGVzQ291bnQpO1xuICBjb25zdCB0aW1lc3RhbXBzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGxldCBoZWFkID0gMDtcbiAgbGV0IHRhaWwgPSAwO1xuICBsZXQgZmlyc3RTYW1wbGVUUztcblxuICBtaW4gPSBtaW4gIT09IHVuZGVmaW5lZCA/IG1pbiA6IDEwMDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHB1c2goY2h1bmtMZW5ndGgpIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gdGltZXN0YW1wc1t0YWlsXTtcblxuICAgIGlmICghZmlyc3RTYW1wbGVUUykge1xuICAgICAgZmlyc3RTYW1wbGVUUyA9IG5vdztcbiAgICB9XG5cbiAgICBieXRlc1toZWFkXSA9IGNodW5rTGVuZ3RoO1xuICAgIHRpbWVzdGFtcHNbaGVhZF0gPSBub3c7XG5cbiAgICBsZXQgaSA9IHRhaWw7XG4gICAgbGV0IGJ5dGVzQ291bnQgPSAwO1xuXG4gICAgd2hpbGUgKGkgIT09IGhlYWQpIHtcbiAgICAgIGJ5dGVzQ291bnQgKz0gYnl0ZXNbaSsrXTtcbiAgICAgIGkgPSBpICUgc2FtcGxlc0NvdW50O1xuICAgIH1cblxuICAgIGhlYWQgPSAoaGVhZCArIDEpICUgc2FtcGxlc0NvdW50O1xuXG4gICAgaWYgKGhlYWQgPT09IHRhaWwpIHtcbiAgICAgIHRhaWwgPSAodGFpbCArIDEpICUgc2FtcGxlc0NvdW50O1xuICAgIH1cblxuICAgIGlmIChub3cgLSBmaXJzdFNhbXBsZVRTIDwgbWluKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFzc2VkID0gc3RhcnRlZEF0ICYmIG5vdyAtIHN0YXJ0ZWRBdDtcblxuICAgIHJldHVybiBwYXNzZWQgPyBNYXRoLnJvdW5kKGJ5dGVzQ291bnQgKiAxMDAwIC8gcGFzc2VkKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvZ3Jlc3NFdmVudFJlZHVjZXIobGlzdGVuZXIsIGlzRG93bmxvYWRTdHJlYW0pIHtcbiAgbGV0IGJ5dGVzTm90aWZpZWQgPSAwO1xuICBjb25zdCBfc3BlZWRvbWV0ZXIgPSBzcGVlZG9tZXRlcig1MCwgMjUwKTtcblxuICByZXR1cm4gZSA9PiB7XG4gICAgY29uc3QgbG9hZGVkID0gZS5sb2FkZWQ7XG4gICAgY29uc3QgdG90YWwgPSBlLmxlbmd0aENvbXB1dGFibGUgPyBlLnRvdGFsIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHByb2dyZXNzQnl0ZXMgPSBsb2FkZWQgLSBieXRlc05vdGlmaWVkO1xuICAgIGNvbnN0IHJhdGUgPSBfc3BlZWRvbWV0ZXIocHJvZ3Jlc3NCeXRlcyk7XG4gICAgY29uc3QgaW5SYW5nZSA9IGxvYWRlZCA8PSB0b3RhbDtcblxuICAgIGJ5dGVzTm90aWZpZWQgPSBsb2FkZWQ7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgbG9hZGVkLFxuICAgICAgdG90YWwsXG4gICAgICBwcm9ncmVzczogdG90YWwgPyAobG9hZGVkIC8gdG90YWwpIDogdW5kZWZpbmVkLFxuICAgICAgYnl0ZXM6IHByb2dyZXNzQnl0ZXMsXG4gICAgICByYXRlOiByYXRlID8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGVzdGltYXRlZDogcmF0ZSAmJiB0b3RhbCAmJiBpblJhbmdlID8gKHRvdGFsIC0gbG9hZGVkKSAvIHJhdGUgOiB1bmRlZmluZWQsXG4gICAgICBldmVudDogZVxuICAgIH07XG5cbiAgICBkYXRhW2lzRG93bmxvYWRTdHJlYW0gPyAnZG93bmxvYWQnIDogJ3VwbG9hZCddID0gdHJ1ZTtcblxuICAgIGxpc3RlbmVyKGRhdGEpO1xuICB9O1xufVxuXG5jb25zdCBpc1hIUkFkYXB0ZXJTdXBwb3J0ZWQgPSB0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgeGhyQWRhcHRlciA9IGlzWEhSQWRhcHRlclN1cHBvcnRlZCAmJiBmdW5jdGlvbiAoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbGV0IHJlcXVlc3REYXRhID0gY29uZmlnLmRhdGE7XG4gICAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBBeGlvc0hlYWRlcnMkMS5mcm9tKGNvbmZpZy5oZWFkZXJzKS5ub3JtYWxpemUoKTtcbiAgICBjb25zdCByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIGxldCBvbkNhbmNlbGVkO1xuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjb250ZW50VHlwZTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgaWYgKHBsYXRmb3JtLmlzU3RhbmRhcmRCcm93c2VyRW52IHx8IHBsYXRmb3JtLmlzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldENvbnRlbnRUeXBlKGZhbHNlKTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgICAgfSBlbHNlIGlmKCFyZXF1ZXN0SGVhZGVycy5nZXRDb250ZW50VHlwZSgvXlxccyptdWx0aXBhcnRcXC9mb3JtLWRhdGEvKSl7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldENvbnRlbnRUeXBlKCdtdWx0aXBhcnQvZm9ybS1kYXRhJyk7IC8vIG1vYmlsZS9kZXNrdG9wIGFwcCBmcmFtZXdvcmtzXG4gICAgICB9IGVsc2UgaWYodXRpbHMuaXNTdHJpbmcoY29udGVudFR5cGUgPSByZXF1ZXN0SGVhZGVycy5nZXRDb250ZW50VHlwZSgpKSl7XG4gICAgICAgIC8vIGZpeCBzZW1pY29sb24gZHVwbGljYXRpb24gaXNzdWUgZm9yIFJlYWN0TmF0aXZlIEZvcm1EYXRhIGltcGxlbWVudGF0aW9uXG4gICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLnJlcGxhY2UoL15cXHMqKG11bHRpcGFydFxcL2Zvcm0tZGF0YSk7Ky8sICckMScpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgIGlmIChjb25maWcuYXV0aCkge1xuICAgICAgY29uc3QgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIGNvbnN0IHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBidG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuXG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBBeGlvc0hlYWRlcnMkMS5mcm9tKFxuICAgICAgICAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ICYmIHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcbiAgICAgICk7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCwgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIGxldCB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgY29uc3QgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgIGlmIChjb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2U7XG4gICAgICB9XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UsXG4gICAgICAgIHRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yID8gQXhpb3NFcnJvci5FVElNRURPVVQgOiBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxuICAgIGlmIChwbGF0Zm9ybS5pc1N0YW5kYXJkQnJvd3NlckVudikge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICAvLyByZWdhcmRpbmcgQ1ZFLTIwMjMtNDU4NTcgY29uZmlnLndpdGhDcmVkZW50aWFscyBjb25kaXRpb24gd2FzIHJlbW92ZWQgdGVtcG9yYXJpbHlcbiAgICAgIGNvbnN0IHhzcmZWYWx1ZSA9IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lICYmIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldChjb25maWcueHNyZkhlYWRlck5hbWUsIHhzcmZWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgIHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQgJiYgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUobnVsbCk7XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycy50b0pTT04oKSwgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHByb2dyZXNzRXZlbnRSZWR1Y2VyKGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MsIHRydWUpKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MpKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuIHx8IGNvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gY2FuY2VsID0+IHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IGNhbmNlbC50eXBlID8gbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnLCByZXF1ZXN0KSA6IGNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9O1xuXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4gJiYgY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IGNvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwcm90b2NvbCA9IHBhcnNlUHJvdG9jb2woZnVsbFBhdGgpO1xuXG4gICAgaWYgKHByb3RvY29sICYmIHBsYXRmb3JtLnByb3RvY29scy5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignVW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyArIHByb3RvY29sICsgJzonLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgY29uZmlnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhIHx8IG51bGwpO1xuICB9KTtcbn07XG5cbmNvbnN0IGtub3duQWRhcHRlcnMgPSB7XG4gIGh0dHA6IGh0dHBBZGFwdGVyLFxuICB4aHI6IHhockFkYXB0ZXJcbn07XG5cbnV0aWxzLmZvckVhY2goa25vd25BZGFwdGVycywgKGZuLCB2YWx1ZSkgPT4ge1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHt2YWx1ZX0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICdhZGFwdGVyTmFtZScsIHt2YWx1ZX0pO1xuICB9XG59KTtcblxuY29uc3QgcmVuZGVyUmVhc29uID0gKHJlYXNvbikgPT4gYC0gJHtyZWFzb259YDtcblxuY29uc3QgaXNSZXNvbHZlZEhhbmRsZSA9IChhZGFwdGVyKSA9PiB1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gZmFsc2U7XG5cbnZhciBhZGFwdGVycyA9IHtcbiAgZ2V0QWRhcHRlcjogKGFkYXB0ZXJzKSA9PiB7XG4gICAgYWRhcHRlcnMgPSB1dGlscy5pc0FycmF5KGFkYXB0ZXJzKSA/IGFkYXB0ZXJzIDogW2FkYXB0ZXJzXTtcblxuICAgIGNvbnN0IHtsZW5ndGh9ID0gYWRhcHRlcnM7XG4gICAgbGV0IG5hbWVPckFkYXB0ZXI7XG4gICAgbGV0IGFkYXB0ZXI7XG5cbiAgICBjb25zdCByZWplY3RlZFJlYXNvbnMgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWVPckFkYXB0ZXIgPSBhZGFwdGVyc1tpXTtcbiAgICAgIGxldCBpZDtcblxuICAgICAgYWRhcHRlciA9IG5hbWVPckFkYXB0ZXI7XG5cbiAgICAgIGlmICghaXNSZXNvbHZlZEhhbmRsZShuYW1lT3JBZGFwdGVyKSkge1xuICAgICAgICBhZGFwdGVyID0ga25vd25BZGFwdGVyc1soaWQgPSBTdHJpbmcobmFtZU9yQWRhcHRlcikpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgIGlmIChhZGFwdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgVW5rbm93biBhZGFwdGVyICcke2lkfSdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRhcHRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVqZWN0ZWRSZWFzb25zW2lkIHx8ICcjJyArIGldID0gYWRhcHRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWFkYXB0ZXIpIHtcblxuICAgICAgY29uc3QgcmVhc29ucyA9IE9iamVjdC5lbnRyaWVzKHJlamVjdGVkUmVhc29ucylcbiAgICAgICAgLm1hcCgoW2lkLCBzdGF0ZV0pID0+IGBhZGFwdGVyICR7aWR9IGAgK1xuICAgICAgICAgIChzdGF0ZSA9PT0gZmFsc2UgPyAnaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQnIDogJ2lzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkJylcbiAgICAgICAgKTtcblxuICAgICAgbGV0IHMgPSBsZW5ndGggP1xuICAgICAgICAocmVhc29ucy5sZW5ndGggPiAxID8gJ3NpbmNlIDpcXG4nICsgcmVhc29ucy5tYXAocmVuZGVyUmVhc29uKS5qb2luKCdcXG4nKSA6ICcgJyArIHJlbmRlclJlYXNvbihyZWFzb25zWzBdKSkgOlxuICAgICAgICAnYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQnO1xuXG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgYFRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgYCArIHMsXG4gICAgICAgICdFUlJfTk9UX1NVUFBPUlQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhZGFwdGVyO1xuICB9LFxuICBhZGFwdGVyczoga25vd25BZGFwdGVyc1xufTtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsZWRFcnJvcmAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxuXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBDYW5jZWxlZEVycm9yKG51bGwsIGNvbmZpZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKlxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5mdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICBjb25maWcuaGVhZGVycyA9IEF4aW9zSGVhZGVycyQxLmZyb20oY29uZmlnLmhlYWRlcnMpO1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgaWYgKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXS5pbmRleE9mKGNvbmZpZy5tZXRob2QpICE9PSAtMSkge1xuICAgIGNvbmZpZy5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCBmYWxzZSk7XG4gIH1cblxuICBjb25zdCBhZGFwdGVyID0gYWRhcHRlcnMuZ2V0QWRhcHRlcihjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cyQxLmFkYXB0ZXIpO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgcmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycyQxLmZyb20ocmVzcG9uc2UuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2UsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzID0gQXhpb3NIZWFkZXJzJDEuZnJvbShyZWFzb24ucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufVxuXG5jb25zdCBoZWFkZXJzVG9PYmplY3QgPSAodGhpbmcpID0+IHRoaW5nIGluc3RhbmNlb2YgQXhpb3NIZWFkZXJzJDEgPyB0aGluZy50b0pTT04oKSA6IHRoaW5nO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICBjb25zdCBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSwgY2FzZWxlc3MpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlLmNhbGwoe2Nhc2VsZXNzfSwgdGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKGEsIGIsIGNhc2VsZXNzKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIsIGNhc2VsZXNzKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSwgY2FzZWxlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihhLCBiKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYik7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMoYSwgYiwgcHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShhLCBiKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVyZ2VNYXAgPSB7XG4gICAgdXJsOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIG1ldGhvZDogdmFsdWVGcm9tQ29uZmlnMixcbiAgICBkYXRhOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGJhc2VVUkw6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNmb3JtUmVxdWVzdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXNwb25zZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBwYXJhbXNTZXJpYWxpemVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRpbWVvdXQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dE1lc3NhZ2U6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGFkYXB0ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcmVzcG9uc2VUeXBlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHhzcmZDb29raWVOYW1lOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHhzcmZIZWFkZXJOYW1lOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG9uVXBsb2FkUHJvZ3Jlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgb25Eb3dubG9hZFByb2dyZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGRlY29tcHJlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgbWF4Q29udGVudExlbmd0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBtYXhCb2R5TGVuZ3RoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGJlZm9yZVJlZGlyZWN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zcG9ydDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBodHRwQWdlbnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgaHR0cHNBZ2VudDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBjYW5jZWxUb2tlbjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBzb2NrZXRQYXRoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHJlc3BvbnNlRW5jb2Rpbmc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdmFsaWRhdGVTdGF0dXM6IG1lcmdlRGlyZWN0S2V5cyxcbiAgICBoZWFkZXJzOiAoYSwgYikgPT4gbWVyZ2VEZWVwUHJvcGVydGllcyhoZWFkZXJzVG9PYmplY3QoYSksIGhlYWRlcnNUb09iamVjdChiKSwgdHJ1ZSlcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZzEsIGNvbmZpZzIpKSwgZnVuY3Rpb24gY29tcHV0ZUNvbmZpZ1ZhbHVlKHByb3ApIHtcbiAgICBjb25zdCBtZXJnZSA9IG1lcmdlTWFwW3Byb3BdIHx8IG1lcmdlRGVlcFByb3BlcnRpZXM7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSBtZXJnZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdLCBwcm9wKTtcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59XG5cbmNvbnN0IFZFUlNJT04gPSBcIjEuNi4wXCI7XG5cbmNvbnN0IHZhbGlkYXRvcnMkMSA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goKHR5cGUsIGkpID0+IHtcbiAgdmFsaWRhdG9ycyQxW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxuY29uc3QgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZz99IG1lc3NhZ2UgLSBzb21lIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9cbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMkMS50cmFuc2l0aW9uYWwgPSBmdW5jdGlvbiB0cmFuc2l0aW9uYWwodmFsaWRhdG9yLCB2ZXJzaW9uLCBtZXNzYWdlKSB7XG4gIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2Uob3B0LCBkZXNjKSB7XG4gICAgcmV0dXJuICdbQXhpb3MgdicgKyBWRVJTSU9OICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiAodmFsdWUsIG9wdCwgb3B0cykgPT4ge1xuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShvcHQsICcgaGFzIGJlZW4gcmVtb3ZlZCcgKyAodmVyc2lvbiA/ICcgaW4gJyArIHZlcnNpb24gOiAnJykpLFxuICAgICAgICBBeGlvc0Vycm9yLkVSUl9ERVBSRUNBVEVEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBjb25zdCBvcHQgPSBrZXlzW2ldO1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTik7XG4gICAgfVxuICB9XG59XG5cbnZhciB2YWxpZGF0b3IgPSB7XG4gIGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMkMVxufTtcblxuY29uc3QgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5jbGFzcyBBeGlvcyB7XG4gIGNvbnN0cnVjdG9yKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlciQxKCksXG4gICAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlciQxKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGNvbmZpZ09yVXJsIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBjb25maWdcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICAgKi9cbiAgcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICAgIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gICAgICBjb25maWcudXJsID0gY29uZmlnT3JVcmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZyA9IGNvbmZpZ09yVXJsIHx8IHt9O1xuICAgIH1cblxuICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgICBjb25zdCB7dHJhbnNpdGlvbmFsLCBwYXJhbXNTZXJpYWxpemVyLCBoZWFkZXJzfSA9IGNvbmZpZztcblxuICAgIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XG4gICAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXNTZXJpYWxpemVyICE9IG51bGwpIHtcbiAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcmFtc1NlcmlhbGl6ZXIpKSB7XG4gICAgICAgIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyID0ge1xuICAgICAgICAgIHNlcmlhbGl6ZTogcGFyYW1zU2VyaWFsaXplclxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMocGFyYW1zU2VyaWFsaXplciwge1xuICAgICAgICAgIGVuY29kZTogdmFsaWRhdG9ycy5mdW5jdGlvbixcbiAgICAgICAgICBzZXJpYWxpemU6IHZhbGlkYXRvcnMuZnVuY3Rpb25cbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgICBjb25maWcubWV0aG9kID0gKGNvbmZpZy5tZXRob2QgfHwgdGhpcy5kZWZhdWx0cy5tZXRob2QgfHwgJ2dldCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgICBsZXQgY29udGV4dEhlYWRlcnMgPSBoZWFkZXJzICYmIHV0aWxzLm1lcmdlKFxuICAgICAgaGVhZGVycy5jb21tb24sXG4gICAgICBoZWFkZXJzW2NvbmZpZy5tZXRob2RdXG4gICAgKTtcblxuICAgIGhlYWRlcnMgJiYgdXRpbHMuZm9yRWFjaChcbiAgICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgICAgKG1ldGhvZCkgPT4ge1xuICAgICAgICBkZWxldGUgaGVhZGVyc1ttZXRob2RdO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25maWcuaGVhZGVycyA9IEF4aW9zSGVhZGVycyQxLmNvbmNhdChjb250ZXh0SGVhZGVycywgaGVhZGVycyk7XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gICAgY29uc3QgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICBsZXQgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0b3IucnVuV2hlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnRlcmNlcHRvci5ydW5XaGVuKGNvbmZpZykgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xuXG4gICAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgbGV0IHByb21pc2U7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBsZW47XG5cbiAgICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgICAgY29uc3QgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LmJpbmQodGhpcyksIHVuZGVmaW5lZF07XG4gICAgICBjaGFpbi51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBjaGFpbi5wdXNoLmFwcGx5KGNoYWluLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4pO1xuICAgICAgbGVuID0gY2hhaW4ubGVuZ3RoO1xuXG4gICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG5cbiAgICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW5baSsrXSwgY2hhaW5baSsrXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIGxlbiA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aDtcblxuICAgIGxldCBuZXdDb25maWcgPSBjb25maWc7XG5cbiAgICBpID0gMDtcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBjb25zdCBvbkZ1bGZpbGxlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluW2krK107XG4gICAgICBjb25zdCBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBvblJlamVjdGVkLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdC5jYWxsKHRoaXMsIG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxuXG4gICAgaSA9IDA7XG4gICAgbGVuID0gcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aDtcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW5baSsrXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBnZXRVcmkoY29uZmlnKSB7XG4gICAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICAgIHJldHVybiBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpO1xuICB9XG59XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kLFxuICAgICAgdXJsLFxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuXG4gIGZ1bmN0aW9uIGdlbmVyYXRlSFRUUE1ldGhvZChpc0Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaHR0cE1ldGhvZCh1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBpc0Zvcm0gPyB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJ1xuICAgICAgICB9IDoge30sXG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YVxuICAgICAgfSkpO1xuICAgIH07XG4gIH1cblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCgpO1xuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2QgKyAnRm9ybSddID0gZ2VuZXJhdGVIVFRQTWV0aG9kKHRydWUpO1xufSk7XG5cbnZhciBBeGlvcyQxID0gQXhpb3M7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKlxuICogQHJldHVybnMge0NhbmNlbFRva2VufVxuICovXG5jbGFzcyBDYW5jZWxUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKGV4ZWN1dG9yKSB7XG4gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcblxuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXM7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuKGNhbmNlbCA9PiB7XG4gICAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgICAgbGV0IGkgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgICAgfVxuICAgICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuID0gb25mdWxmaWxsZWQgPT4ge1xuICAgICAgbGV0IF9yZXNvbHZlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCk7XG4gICAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIHRocm93IHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAgICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAgICovXG4gIHN0YXRpYyBzb3VyY2UoKSB7XG4gICAgbGV0IGNhbmNlbDtcbiAgICBjb25zdCB0b2tlbiA9IG5ldyBDYW5jZWxUb2tlbihmdW5jdGlvbiBleGVjdXRvcihjKSB7XG4gICAgICBjYW5jZWwgPSBjO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbixcbiAgICAgIGNhbmNlbFxuICAgIH07XG4gIH1cbn1cblxudmFyIENhbmNlbFRva2VuJDEgPSBDYW5jZWxUb2tlbjtcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufVxuXG5jb25zdCBIdHRwU3RhdHVzQ29kZSA9IHtcbiAgQ29udGludWU6IDEwMCxcbiAgU3dpdGNoaW5nUHJvdG9jb2xzOiAxMDEsXG4gIFByb2Nlc3Npbmc6IDEwMixcbiAgRWFybHlIaW50czogMTAzLFxuICBPazogMjAwLFxuICBDcmVhdGVkOiAyMDEsXG4gIEFjY2VwdGVkOiAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjogMjAzLFxuICBOb0NvbnRlbnQ6IDIwNCxcbiAgUmVzZXRDb250ZW50OiAyMDUsXG4gIFBhcnRpYWxDb250ZW50OiAyMDYsXG4gIE11bHRpU3RhdHVzOiAyMDcsXG4gIEFscmVhZHlSZXBvcnRlZDogMjA4LFxuICBJbVVzZWQ6IDIyNixcbiAgTXVsdGlwbGVDaG9pY2VzOiAzMDAsXG4gIE1vdmVkUGVybWFuZW50bHk6IDMwMSxcbiAgRm91bmQ6IDMwMixcbiAgU2VlT3RoZXI6IDMwMyxcbiAgTm90TW9kaWZpZWQ6IDMwNCxcbiAgVXNlUHJveHk6IDMwNSxcbiAgVW51c2VkOiAzMDYsXG4gIFRlbXBvcmFyeVJlZGlyZWN0OiAzMDcsXG4gIFBlcm1hbmVudFJlZGlyZWN0OiAzMDgsXG4gIEJhZFJlcXVlc3Q6IDQwMCxcbiAgVW5hdXRob3JpemVkOiA0MDEsXG4gIFBheW1lbnRSZXF1aXJlZDogNDAyLFxuICBGb3JiaWRkZW46IDQwMyxcbiAgTm90Rm91bmQ6IDQwNCxcbiAgTWV0aG9kTm90QWxsb3dlZDogNDA1LFxuICBOb3RBY2NlcHRhYmxlOiA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDogNDA3LFxuICBSZXF1ZXN0VGltZW91dDogNDA4LFxuICBDb25mbGljdDogNDA5LFxuICBHb25lOiA0MTAsXG4gIExlbmd0aFJlcXVpcmVkOiA0MTEsXG4gIFByZWNvbmRpdGlvbkZhaWxlZDogNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2U6IDQxMyxcbiAgVXJpVG9vTG9uZzogNDE0LFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZTogNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlOiA0MTYsXG4gIEV4cGVjdGF0aW9uRmFpbGVkOiA0MTcsXG4gIEltQVRlYXBvdDogNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3Q6IDQyMSxcbiAgVW5wcm9jZXNzYWJsZUVudGl0eTogNDIyLFxuICBMb2NrZWQ6IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeTogNDI0LFxuICBUb29FYXJseTogNDI1LFxuICBVcGdyYWRlUmVxdWlyZWQ6IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQ6IDQyOCxcbiAgVG9vTWFueVJlcXVlc3RzOiA0MjksXG4gIFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTogNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczogNDUxLFxuICBJbnRlcm5hbFNlcnZlckVycm9yOiA1MDAsXG4gIE5vdEltcGxlbWVudGVkOiA1MDEsXG4gIEJhZEdhdGV3YXk6IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlOiA1MDMsXG4gIEdhdGV3YXlUaW1lb3V0OiA1MDQsXG4gIEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOiA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlczogNTA2LFxuICBJbnN1ZmZpY2llbnRTdG9yYWdlOiA1MDcsXG4gIExvb3BEZXRlY3RlZDogNTA4LFxuICBOb3RFeHRlbmRlZDogNTEwLFxuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDogNTExLFxufTtcblxuT2JqZWN0LmVudHJpZXMoSHR0cFN0YXR1c0NvZGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICBIdHRwU3RhdHVzQ29kZVt2YWx1ZV0gPSBrZXk7XG59KTtcblxudmFyIEh0dHBTdGF0dXNDb2RlJDEgPSBIdHRwU3RhdHVzQ29kZTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm5zIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEF4aW9zJDEoZGVmYXVsdENvbmZpZyk7XG4gIGNvbnN0IGluc3RhbmNlID0gYmluZChBeGlvcyQxLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zJDEucHJvdG90eXBlLCBjb250ZXh0LCB7YWxsT3duS2V5czogdHJ1ZX0pO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQsIG51bGwsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxuY29uc3QgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyQxKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zJDE7XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsZWRFcnJvciA9IENhbmNlbGVkRXJyb3I7XG5heGlvcy5DYW5jZWxUb2tlbiA9IENhbmNlbFRva2VuJDE7XG5heGlvcy5pc0NhbmNlbCA9IGlzQ2FuY2VsO1xuYXhpb3MuVkVSU0lPTiA9IFZFUlNJT047XG5heGlvcy50b0Zvcm1EYXRhID0gdG9Gb3JtRGF0YTtcblxuLy8gRXhwb3NlIEF4aW9zRXJyb3IgY2xhc3NcbmF4aW9zLkF4aW9zRXJyb3IgPSBBeGlvc0Vycm9yO1xuXG4vLyBhbGlhcyBmb3IgQ2FuY2VsZWRFcnJvciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuYXhpb3MuQ2FuY2VsID0gYXhpb3MuQ2FuY2VsZWRFcnJvcjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcblxuYXhpb3Muc3ByZWFkID0gc3ByZWFkO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSBpc0F4aW9zRXJyb3I7XG5cbi8vIEV4cG9zZSBtZXJnZUNvbmZpZ1xuYXhpb3MubWVyZ2VDb25maWcgPSBtZXJnZUNvbmZpZztcblxuYXhpb3MuQXhpb3NIZWFkZXJzID0gQXhpb3NIZWFkZXJzJDE7XG5cbmF4aW9zLmZvcm1Ub0pTT04gPSB0aGluZyA9PiBmb3JtRGF0YVRvSlNPTih1dGlscy5pc0hUTUxGb3JtKHRoaW5nKSA/IG5ldyBGb3JtRGF0YSh0aGluZykgOiB0aGluZyk7XG5cbmF4aW9zLmdldEFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyO1xuXG5heGlvcy5IdHRwU3RhdHVzQ29kZSA9IEh0dHBTdGF0dXNDb2RlJDE7XG5cbmF4aW9zLmRlZmF1bHQgPSBheGlvcztcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWF4aW9zLmNqcy5tYXBcbiIsIihmdW5jdGlvbihaLFNlKXt0eXBlb2YgZXhwb3J0cz09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZTxcInVcIj9tb2R1bGUuZXhwb3J0cz1TZShyZXF1aXJlKFwidnVlXCIpKTp0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQ/ZGVmaW5lKFtcInZ1ZVwiXSxTZSk6KFo9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczpafHxzZWxmLFouVnVlQXBleENoYXJ0cz1TZShaLlZ1ZSkpfSkodGhpcyxmdW5jdGlvbihaKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBTZShfKXtyZXR1cm4gXyYmXy5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXyxcImRlZmF1bHRcIik/Xy5kZWZhdWx0Ol99dmFyIEhlPXtleHBvcnRzOnt9fTsvKiFcbiAqIEFwZXhDaGFydHMgdjMuNDUuMlxuICogKGMpIDIwMTgtMjAyNCBBcGV4Q2hhcnRzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi8oZnVuY3Rpb24oXyxEZSl7ZnVuY3Rpb24gQ2UoeSxlKXt2YXIgdD1PYmplY3Qua2V5cyh5KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHkpO2UmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksYSkuZW51bWVyYWJsZX0pKSx0LnB1c2guYXBwbHkodCxpKX1yZXR1cm4gdH1mdW5jdGlvbiBYKHkpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciB0PWFyZ3VtZW50c1tlXSE9bnVsbD9hcmd1bWVudHNbZV06e307ZSUyP0NlKE9iamVjdCh0KSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXt0ZSh5LGksdFtpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh5LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTpDZShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHksaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSkpfSl9cmV0dXJuIHl9ZnVuY3Rpb24gVSh5KXtyZXR1cm4gVT10eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PVwic3ltYm9sXCI/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxVKHkpfWZ1bmN0aW9uIEYoeSxlKXtpZighKHkgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGRlKHksZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBpPWVbdF07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LGkua2V5LGkpfX1mdW5jdGlvbiBZKHksZSx0KXtyZXR1cm4gZSYmZGUoeS5wcm90b3R5cGUsZSksdCYmZGUoeSx0KSx5fWZ1bmN0aW9uIHRlKHksZSx0KXtyZXR1cm4gZSBpbiB5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LGUse3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp5W2VdPXQseX1mdW5jdGlvbiB1ZSh5LGUpe2lmKHR5cGVvZiBlIT1cImZ1bmN0aW9uXCImJmUhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt5LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6eSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmTGUoeSxlKX1mdW5jdGlvbiB2ZSh5KXtyZXR1cm4gdmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sdmUoeSl9ZnVuY3Rpb24gTGUoeSxlKXtyZXR1cm4gTGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGkpe3JldHVybiB0Ll9fcHJvdG9fXz1pLHR9LExlKHksZSl9ZnVuY3Rpb24gWGUoeSl7aWYoeT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHl9ZnVuY3Rpb24gcGUoeSl7dmFyIGU9ZnVuY3Rpb24oKXtpZih0eXBlb2YgUmVmbGVjdD5cInVcInx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09XCJmdW5jdGlvblwiKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9dmUoeSk7aWYoZSl7dmFyIGE9dmUodGhpcykuY29uc3RydWN0b3I7dD1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxhKX1lbHNlIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKHMscil7aWYociYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKSlyZXR1cm4gcjtpZihyIT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gWGUocyl9KHRoaXMsdCl9fWZ1bmN0aW9uIEVlKHksZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHkpfHxmdW5jdGlvbih0LGkpe3ZhciBhPXQ9PW51bGw/bnVsbDp0eXBlb2YgU3ltYm9sPFwidVwiJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbXCJAQGl0ZXJhdG9yXCJdO2lmKGEhPW51bGwpe3ZhciBzLHIsbj1bXSxvPSEwLGg9ITE7dHJ5e2ZvcihhPWEuY2FsbCh0KTshKG89KHM9YS5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKHMudmFsdWUpLCFpfHxuLmxlbmd0aCE9PWkpO289ITApO31jYXRjaChjKXtoPSEwLHI9Y31maW5hbGx5e3RyeXtvfHxhLnJldHVybj09bnVsbHx8YS5yZXR1cm4oKX1maW5hbGx5e2lmKGgpdGhyb3cgcn19cmV0dXJuIG59fSh5LGUpfHxZZSh5LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9KCl9ZnVuY3Rpb24gUSh5KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gUGUoZSl9KHkpfHxmdW5jdGlvbihlKXtpZih0eXBlb2YgU3ltYm9sPFwidVwiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbXCJAQGl0ZXJhdG9yXCJdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKGUpfSh5KXx8WWUoeSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9KCl9ZnVuY3Rpb24gWWUoeSxlKXtpZih5KXtpZih0eXBlb2YgeT09XCJzdHJpbmdcIilyZXR1cm4gUGUoeSxlKTt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeSkuc2xpY2UoOCwtMSk7cmV0dXJuIHQ9PT1cIk9iamVjdFwiJiZ5LmNvbnN0cnVjdG9yJiYodD15LmNvbnN0cnVjdG9yLm5hbWUpLHQ9PT1cIk1hcFwifHx0PT09XCJTZXRcIj9BcnJheS5mcm9tKHkpOnQ9PT1cIkFyZ3VtZW50c1wifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9QZSh5LGUpOnZvaWQgMH19ZnVuY3Rpb24gUGUoeSxlKXsoZT09bnVsbHx8ZT55Lmxlbmd0aCkmJihlPXkubGVuZ3RoKTtmb3IodmFyIHQ9MCxpPW5ldyBBcnJheShlKTt0PGU7dCsrKWlbdF09eVt0XTtyZXR1cm4gaX12YXIgUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXtGKHRoaXMseSl9cmV0dXJuIFkoeSxbe2tleTpcInNoYWRlUkdCQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXQuc3BsaXQoXCIsXCIpLGE9ZTwwPzA6MjU1LHM9ZTwwPy0xKmU6ZSxyPXBhcnNlSW50KGlbMF0uc2xpY2UoNCksMTApLG49cGFyc2VJbnQoaVsxXSwxMCksbz1wYXJzZUludChpWzJdLDEwKTtyZXR1cm5cInJnYihcIisoTWF0aC5yb3VuZCgoYS1yKSpzKStyKStcIixcIisoTWF0aC5yb3VuZCgoYS1uKSpzKStuKStcIixcIisoTWF0aC5yb3VuZCgoYS1vKSpzKStvKStcIilcIn19LHtrZXk6XCJzaGFkZUhleENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1wYXJzZUludCh0LnNsaWNlKDEpLDE2KSxhPWU8MD8wOjI1NSxzPWU8MD8tMSplOmUscj1pPj4xNixuPWk+PjgmMjU1LG89MjU1Jmk7cmV0dXJuXCIjXCIrKDE2Nzc3MjE2KzY1NTM2KihNYXRoLnJvdW5kKChhLXIpKnMpK3IpKzI1NiooTWF0aC5yb3VuZCgoYS1uKSpzKStuKSsoTWF0aC5yb3VuZCgoYS1vKSpzKStvKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpfX0se2tleTpcInNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB5LmlzQ29sb3JIZXgodCk/dGhpcy5zaGFkZUhleENvbG9yKGUsdCk6dGhpcy5zaGFkZVJHQkNvbG9yKGUsdCl9fV0sW3trZXk6XCJiaW5kXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0se2tleTpcImlzT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlUoZSk9PT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheShlKSYmZSE9bnVsbH19LHtrZXk6XCJpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PVwiW29iamVjdCBcIitlK1wiXVwifX0se2tleTpcImxpc3RUb0FycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1bXTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlbdF09ZVt0XTtyZXR1cm4gaX19LHtrZXk6XCJleHRlbmRcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7dHlwZW9mIE9iamVjdC5hc3NpZ24hPVwiZnVuY3Rpb25cIiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24ocyl7aWYocz09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO2Zvcih2YXIgcj1PYmplY3Qocyksbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciBvPWFyZ3VtZW50c1tuXTtpZihvIT1udWxsKWZvcih2YXIgaCBpbiBvKW8uaGFzT3duUHJvcGVydHkoaCkmJihyW2hdPW9baF0pfXJldHVybiByfSk7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gdGhpcy5pc09iamVjdChlKSYmdGhpcy5pc09iamVjdCh0KSYmT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihzKXtpLmlzT2JqZWN0KHRbc10pJiZzIGluIGU/YVtzXT1pLmV4dGVuZChlW3NdLHRbc10pOk9iamVjdC5hc3NpZ24oYSx0ZSh7fSxzLHRbc10pKX0pLGF9fSx7a2V5OlwiZXh0ZW5kQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPVtdO3JldHVybiBlLm1hcChmdW5jdGlvbihhKXtpLnB1c2goeS5leHRlbmQodCxhKSl9KSxlPWl9fSx7a2V5OlwibW9udGhNb2RcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSUxMn19LHtrZXk6XCJjbG9uZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHkuaXMoXCJBcnJheVwiLGUpKXtmb3IodmFyIHQ9W10saT0wO2k8ZS5sZW5ndGg7aSsrKXRbaV09dGhpcy5jbG9uZShlW2ldKTtyZXR1cm4gdH1pZih5LmlzKFwiTnVsbFwiLGUpKXJldHVybiBudWxsO2lmKHkuaXMoXCJEYXRlXCIsZSkpcmV0dXJuIGU7aWYoVShlKT09PVwib2JqZWN0XCIpe3ZhciBhPXt9O2Zvcih2YXIgcyBpbiBlKWUuaGFzT3duUHJvcGVydHkocykmJihhW3NdPXRoaXMuY2xvbmUoZVtzXSkpO3JldHVybiBhfXJldHVybiBlfX0se2tleTpcImxvZzEwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpL01hdGguTE4xMH19LHtrZXk6XCJyb3VuZFRvQmFzZTEwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cxMChlKSkpfX0se2tleTpcInJvdW5kVG9CYXNlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5wb3codCxNYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgubG9nKHQpKSl9fSx7a2V5OlwicGFyc2VOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT09PW51bGw/ZTpwYXJzZUZsb2F0KGUpfX0se2tleTpcInN0cmlwTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOjI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/ZTpwYXJzZUZsb2F0KGUudG9QcmVjaXNpb24odCkpfX0se2tleTpcInJhbmRvbUlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpfX0se2tleTpcIm5vRXhwb25lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9U3RyaW5nKGUpLnNwbGl0KC9bZUVdLyk7aWYodC5sZW5ndGg9PT0xKXJldHVybiB0WzBdO3ZhciBpPVwiXCIsYT1lPDA/XCItXCI6XCJcIixzPXRbMF0ucmVwbGFjZShcIi5cIixcIlwiKSxyPU51bWJlcih0WzFdKSsxO2lmKHI8MCl7Zm9yKGk9YStcIjAuXCI7cisrOylpKz1cIjBcIjtyZXR1cm4gaStzLnJlcGxhY2UoL14tLyxcIlwiKX1mb3Ioci09cy5sZW5ndGg7ci0tOylpKz1cIjBcIjtyZXR1cm4gcytpfX0se2tleTpcImdldERpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCksaT1lLmNsaWVudEhlaWdodCxhPWUuY2xpZW50V2lkdGg7cmV0dXJuIGktPXBhcnNlRmxvYXQodC5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KHQucGFkZGluZ0JvdHRvbSksW2EtPXBhcnNlRmxvYXQodC5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdCh0LnBhZGRpbmdSaWdodCksaV19fSx7a2V5OlwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnQudG9wLHJpZ2h0OnQucmlnaHQsYm90dG9tOnQuYm90dG9tLGxlZnQ6dC5sZWZ0LHdpZHRoOmUuY2xpZW50V2lkdGgsaGVpZ2h0OmUuY2xpZW50SGVpZ2h0LHg6dC5sZWZ0LHk6dC50b3B9fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tQXJyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSkmJihpPWkucmVkdWNlKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGEubGVuZ3RoPnMubGVuZ3RoP2E6c30pKSx0Lmxlbmd0aD5pLmxlbmd0aD90Oml9LDApfX0se2tleTpcImhleFRvUmdiYVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOlwiIzk5OTk5OVwiLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOi42O2Uuc3Vic3RyaW5nKDAsMSkhPT1cIiNcIiYmKGU9XCIjOTk5OTk5XCIpO3ZhciBpPWUucmVwbGFjZShcIiNcIixcIlwiKTtpPWkubWF0Y2gobmV3IFJlZ0V4cChcIigue1wiK2kubGVuZ3RoLzMrXCJ9KVwiLFwiZ1wiKSk7Zm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspaVthXT1wYXJzZUludChpW2FdLmxlbmd0aD09PTE/aVthXStpW2FdOmlbYV0sMTYpO3JldHVybiB0IT09dm9pZCAwJiZpLnB1c2godCksXCJyZ2JhKFwiK2kuam9pbihcIixcIikrXCIpXCJ9fSx7a2V5OlwiZ2V0T3BhY2l0eUZyb21SR0JBXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlRmxvYXQoZS5yZXBsYWNlKC9eLiosKC4rKVxcKS8sXCIkMVwiKSl9fSx7a2V5OlwicmdiMmhleFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihlPWUubWF0Y2goL15yZ2JhP1tcXHMrXT9cXChbXFxzK10/KFxcZCspW1xccytdPyxbXFxzK10/KFxcZCspW1xccytdPyxbXFxzK10/KFxcZCspW1xccytdPy9pKSkmJmUubGVuZ3RoPT09ND9cIiNcIisoXCIwXCIrcGFyc2VJbnQoZVsxXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KGVbMl0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludChlWzNdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTpcIlwifX0se2tleTpcImlzQ29sb3JIZXhcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4vKF4jWzAtOUEtRl17Nn0kKXwoXiNbMC05QS1GXXszfSQpfCheI1swLTlBLUZdezh9JCkvaS50ZXN0KGUpfX0se2tleTpcImdldFBvbHlnb25Qb3NcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT1bXSxhPTIqTWF0aC5QSS90LHM9MDtzPHQ7cysrKXt2YXIgcj17fTtyLng9ZSpNYXRoLnNpbihzKmEpLHIueT0tZSpNYXRoLmNvcyhzKmEpLGkucHVzaChyKX1yZXR1cm4gaX19LHtrZXk6XCJwb2xhclRvQ2FydGVzaWFuXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9KGEtOTApKk1hdGguUEkvMTgwO3JldHVybnt4OmUraSpNYXRoLmNvcyhzKSx5OnQraSpNYXRoLnNpbihzKX19fSx7a2V5OlwiZXNjYXBlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOlwieFwiLGk9ZS50b1N0cmluZygpLnNsaWNlKCk7cmV0dXJuIGk9aS5yZXBsYWNlKC9bYCB+IUAjJCVeJiooKXwrXFw9Pzs6J1wiLC48Pnt9W1xcXVxcXFwvXS9naSx0KX19LHtrZXk6XCJuZWdUb1plcm9cIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZTwwPzA6ZX19LHtrZXk6XCJtb3ZlSW5kZXhJbkFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe2lmKGk+PWUubGVuZ3RoKWZvcih2YXIgYT1pLWUubGVuZ3RoKzE7YS0tOyllLnB1c2godm9pZCAwKTtyZXR1cm4gZS5zcGxpY2UoaSwwLGUuc3BsaWNlKHQsMSlbMF0pLGV9fSx7a2V5OlwiZXh0cmFjdE51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUZsb2F0KGUucmVwbGFjZSgvW15cXGQuXSovZyxcIlwiKSl9fSx7a2V5OlwiZmluZEFuY2VzdG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IoOyhlPWUucGFyZW50RWxlbWVudCkmJiFlLmNsYXNzTGlzdC5jb250YWlucyh0KTspO3JldHVybiBlfX0se2tleTpcInNldEVMc3R5bGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYoZS5zdHlsZS5rZXk9dFtpXSl9fSx7a2V5OlwiaXNOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4haXNOYU4oZSkmJnBhcnNlRmxvYXQoTnVtYmVyKGUpKT09PWUmJiFpc05hTihwYXJzZUludChlLDEwKSl9fSx7a2V5OlwiaXNGbG9hdFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIoZSk9PT1lJiZlJTEhPTB9fSx7a2V5OlwiaXNTYWZhcmlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybi9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9fSx7a2V5OlwiaXNGaXJlZm94XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJmaXJlZm94XCIpPi0xfX0se2tleTpcImlzSUUxMVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIikhPT0tMXx8d2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoXCJUcmlkZW50L1wiKT4tMSlyZXR1cm4hMH19LHtrZXk6XCJpc0lFXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCx0PWUuaW5kZXhPZihcIk1TSUUgXCIpO2lmKHQ+MClyZXR1cm4gcGFyc2VJbnQoZS5zdWJzdHJpbmcodCs1LGUuaW5kZXhPZihcIi5cIix0KSksMTApO2lmKGUuaW5kZXhPZihcIlRyaWRlbnQvXCIpPjApe3ZhciBpPWUuaW5kZXhPZihcInJ2OlwiKTtyZXR1cm4gcGFyc2VJbnQoZS5zdWJzdHJpbmcoaSszLGUuaW5kZXhPZihcIi5cIixpKSksMTApfXZhciBhPWUuaW5kZXhPZihcIkVkZ2UvXCIpO3JldHVybiBhPjAmJnBhcnNlSW50KGUuc3Vic3RyaW5nKGErNSxlLmluZGV4T2YoXCIuXCIsYSkpLDEwKX19XSkseX0oKSxnZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNldEVhc2luZ0Z1bmN0aW9ucygpfXJldHVybiBZKHksW3trZXk6XCJzZXRFYXNpbmdGdW5jdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO2lmKCF0aGlzLncuZ2xvYmFscy5lYXNpbmcpe3N3aXRjaCh0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZWFzaW5nKXtjYXNlXCJsaW5lYXJcIjplPVwiLVwiO2JyZWFrO2Nhc2VcImVhc2VpblwiOmU9XCI8XCI7YnJlYWs7Y2FzZVwiZWFzZW91dFwiOmU9XCI+XCI7YnJlYWs7Y2FzZVwiZWFzZWlub3V0XCI6ZGVmYXVsdDplPVwiPD5cIjticmVhaztjYXNlXCJzd2luZ1wiOmU9ZnVuY3Rpb24odCl7dmFyIGk9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGkrMSkqdCtpKSsxfTticmVhaztjYXNlXCJib3VuY2VcIjplPWZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9O2JyZWFrO2Nhc2VcImVsYXN0aWNcIjplPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ISF0P3Q6TWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHQtLjA3NSkqKDIqTWF0aC5QSSkvLjMpKzF9fXRoaXMudy5nbG9iYWxzLmVhc2luZz1lfX19LHtrZXk6XCJhbmltYXRlTGluZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe2UuYXR0cih0KS5hbmltYXRlKGEpLmF0dHIoaSl9fSx7a2V5OlwiYW5pbWF0ZU1hcmtlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyKXt0fHwodD0wKSxlLmF0dHIoe3I6dCx3aWR0aDp0LGhlaWdodDp0fSkuYW5pbWF0ZShhLHMpLmF0dHIoe3I6aSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0pLmFmdGVyQWxsKGZ1bmN0aW9uKCl7cigpfSl9fSx7a2V5OlwiYW5pbWF0ZUNpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7ZS5hdHRyKHtyOnQucixjeDp0LmN4LGN5OnQuY3l9KS5hbmltYXRlKGEscykuYXR0cih7cjppLnIsY3g6aS5jeCxjeTppLmN5fSl9fSx7a2V5OlwiYW5pbWF0ZVJlY3RcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMpe2UuYXR0cih0KS5hbmltYXRlKGEpLmF0dHIoaSkuYWZ0ZXJBbGwoZnVuY3Rpb24oKXtyZXR1cm4gcygpfSl9fSx7a2V5OlwiYW5pbWF0ZVBhdGhzR3JhZHVhbGx5XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lbCxpPWUucmVhbEluZGV4LGE9ZS5qLHM9ZS5maWxsLHI9ZS5wYXRoRnJvbSxuPWUucGF0aFRvLG89ZS5zcGVlZCxoPWUuZGVsYXksYz10aGlzLncsZD0wO2MuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5lbmFibGVkJiYoZD1jLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkpLGMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkJiZjLmdsb2JhbHMuZGF0YUNoYW5nZWQmJmMuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImJhclwiJiYoZD0wKSx0aGlzLm1vcnBoU1ZHKHQsaSxhLGMuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImxpbmVcInx8Yy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3M6XCJzdHJva2VcIixyLG4sbyxoKmQpfX0se2tleTpcInNob3dEZWxheWVkRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZWw7dC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1lbGVtZW50LXNob3duXCIpfSl9fSx7a2V5OlwiYW5pbWF0aW9uQ29tcGxldGVkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5hbmltYXRpb25FbmRlZHx8KHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCx0aGlzLnNob3dEZWxheWVkRWxlbWVudHMoKSx0eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZD09XCJmdW5jdGlvblwiJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kKHRoaXMuY3R4LHtlbDplLHc6dH0pKX19LHtrZXk6XCJtb3JwaFNWR1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyLG4sbyl7dmFyIGg9dGhpcyxjPXRoaXMudztzfHwocz1lLmF0dHIoXCJwYXRoRnJvbVwiKSkscnx8KHI9ZS5hdHRyKFwicGF0aFRvXCIpKTt2YXIgZD1mdW5jdGlvbihnKXtyZXR1cm4gYy5jb25maWcuY2hhcnQudHlwZT09PVwicmFkYXJcIiYmKG49MSksXCJNIDAgXCIuY29uY2F0KGMuZ2xvYmFscy5ncmlkSGVpZ2h0KX07KCFzfHxzLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHMuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihzPWQoKSksKCFyfHxyLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHIuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihyPWQoKSksYy5nbG9iYWxzLnNob3VsZEFuaW1hdGV8fChuPTEpLGUucGxvdChzKS5hbmltYXRlKDEsYy5nbG9iYWxzLmVhc2luZyxvKS5wbG90KHMpLmFuaW1hdGUobixjLmdsb2JhbHMuZWFzaW5nLG8pLnBsb3QocikuYWZ0ZXJBbGwoZnVuY3Rpb24oKXtQLmlzTnVtYmVyKGkpP2k9PT1jLmdsb2JhbHMuc2VyaWVzW2MuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMiYmYy5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJmguYW5pbWF0aW9uQ29tcGxldGVkKGUpOmEhPT1cIm5vbmVcIiYmYy5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJighYy5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ0PT09Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMXx8Yy5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmaC5hbmltYXRpb25Db21wbGV0ZWQoZSksaC5zaG93RGVsYXllZEVsZW1lbnRzKCl9KX19XSkseX0oKSwkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJnZXREZWZhdWx0RmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7ZS51bmZpbHRlcighMCksbmV3IHdpbmRvdy5TVkcuRmlsdGVyKCkuc2l6ZShcIjEyMCVcIixcIjE4MCVcIixcIi01JVwiLFwiLTQwJVwiKSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlciE9PVwibm9uZVwiP3RoaXMuYXBwbHlGaWx0ZXIoZSx0LGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudmFsdWUpOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmdGhpcy5kcm9wU2hhZG93KGUsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyx0KX19LHtrZXk6XCJhZGROb3JtYWxGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJiFlLm5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikmJnRoaXMuZHJvcFNoYWRvdyhlLGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csdCl9fSx7a2V5OlwiYWRkTGlnaHRlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9aS5pbnRlbnNpdHk7ZS51bmZpbHRlcighMCksbmV3IHdpbmRvdy5TVkcuRmlsdGVyLGUuZmlsdGVyKGZ1bmN0aW9uKG4pe3ZhciBvPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KG8uZW5hYmxlZD9hLmFkZFNoYWRvdyhuLHQsbyk6bikuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOjEuNSxpbnRlcmNlcHQ6cn19KX0pLGUuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKGUuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYWRkRGFya2VuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTtlLnVuZmlsdGVyKCEwKSxuZXcgd2luZG93LlNWRy5GaWx0ZXIsZS5maWx0ZXIoZnVuY3Rpb24obil7dmFyIG89cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoby5lbmFibGVkP2EuYWRkU2hhZG93KG4sdCxvKTpuKS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6cn19KX0pLGUuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKGUuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYXBwbHlGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOi41O3N3aXRjaChpKXtjYXNlXCJub25lXCI6dGhpcy5hZGROb3JtYWxGaWx0ZXIoZSx0KTticmVhaztjYXNlXCJsaWdodGVuXCI6dGhpcy5hZGRMaWdodGVuRmlsdGVyKGUsdCx7aW50ZW5zaXR5OmF9KTticmVhaztjYXNlXCJkYXJrZW5cIjp0aGlzLmFkZERhcmtlbkZpbHRlcihlLHQse2ludGVuc2l0eTphfSl9fX0se2tleTpcImFkZFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1pLmJsdXIscz1pLnRvcCxyPWkubGVmdCxuPWkuY29sb3Isbz1pLm9wYWNpdHksaD1lLmZsb29kKEFycmF5LmlzQXJyYXkobik/blt0XTpuLG8pLmNvbXBvc2l0ZShlLnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHIscykuZ2F1c3NpYW5CbHVyKGEpLm1lcmdlKGUuc291cmNlKTtyZXR1cm4gZS5ibGVuZChlLnNvdXJjZSxoKX19LHtrZXk6XCJkcm9wU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06MCxhPXQudG9wLHM9dC5sZWZ0LHI9dC5ibHVyLG49dC5jb2xvcixvPXQub3BhY2l0eSxoPXQubm9Vc2VyU3BhY2VPblVzZSxjPXRoaXMudztyZXR1cm4gZS51bmZpbHRlcighMCksUC5pc0lFKCkmJmMuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhZGlhbEJhclwifHwobj1BcnJheS5pc0FycmF5KG4pP25baV06bixlLmZpbHRlcihmdW5jdGlvbihkKXt2YXIgZz1udWxsO2c9UC5pc1NhZmFyaSgpfHxQLmlzRmlyZWZveCgpfHxQLmlzSUUoKT9kLmZsb29kKG4sbykuY29tcG9zaXRlKGQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocik6ZC5mbG9vZChuLG8pLmNvbXBvc2l0ZShkLnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpLm1lcmdlKGQuc291cmNlKSxkLmJsZW5kKGQuc291cmNlLGcpfSksaHx8ZS5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUoZS5maWx0ZXJlci5ub2RlKSksZX19LHtrZXk6XCJzZXRTZWxlY3Rpb25GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53O2lmKGEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbdF0hPT12b2lkIDAmJmEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbdF0uaW5kZXhPZihpKT4tMSl7ZS5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsITApO3ZhciBzPWEuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO3MhPT1cIm5vbmVcIiYmdGhpcy5hcHBseUZpbHRlcihlLHQscy50eXBlLHMudmFsdWUpfX19LHtrZXk6XCJfc2NhbGVGaWx0ZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpe2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJmUuc2V0QXR0cmlidXRlKGksdFtpXSl9KSh7d2lkdGg6XCIyMDAlXCIsaGVpZ2h0OlwiMjAwJVwiLHg6XCItNTAlXCIseTpcIi01MCVcIn0pfX1dKSx5fSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcInJvdW5kUGF0aENvcm5lcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGkoUyxDLEwpe3ZhciBJPUMueC1TLngsej1DLnktUy55LFQ9TWF0aC5zcXJ0KEkqSSt6KnopO3JldHVybiBhKFMsQyxNYXRoLm1pbigxLEwvVCkpfWZ1bmN0aW9uIGEoUyxDLEwpe3JldHVybnt4OlMueCsoQy54LVMueCkqTCx5OlMueSsoQy55LVMueSkqTH19ZnVuY3Rpb24gcyhTLEMpe1MubGVuZ3RoPjImJihTW1MubGVuZ3RoLTJdPUMueCxTW1MubGVuZ3RoLTFdPUMueSl9ZnVuY3Rpb24gcihTKXtyZXR1cm57eDpwYXJzZUZsb2F0KFNbUy5sZW5ndGgtMl0pLHk6cGFyc2VGbG9hdChTW1MubGVuZ3RoLTFdKX19ZS5pbmRleE9mKFwiTmFOXCIpPi0xJiYoZT1cIlwiKTt2YXIgbj1lLnNwbGl0KC9bLFxcc10vKS5yZWR1Y2UoZnVuY3Rpb24oUyxDKXt2YXIgTD1DLm1hdGNoKFwiKFthLXpBLVpdKSguKylcIik7cmV0dXJuIEw/KFMucHVzaChMWzFdKSxTLnB1c2goTFsyXSkpOlMucHVzaChDKSxTfSxbXSkucmVkdWNlKGZ1bmN0aW9uKFMsQyl7cmV0dXJuIHBhcnNlRmxvYXQoQyk9PUMmJlMubGVuZ3RoP1NbUy5sZW5ndGgtMV0ucHVzaChDKTpTLnB1c2goW0NdKSxTfSxbXSksbz1bXTtpZihuLmxlbmd0aD4xKXt2YXIgaD1yKG5bMF0pLGM9bnVsbDtuW24ubGVuZ3RoLTFdWzBdPT1cIlpcIiYmblswXS5sZW5ndGg+MiYmKGM9W1wiTFwiLGgueCxoLnldLG5bbi5sZW5ndGgtMV09Yyksby5wdXNoKG5bMF0pO2Zvcih2YXIgZD0xO2Q8bi5sZW5ndGg7ZCsrKXt2YXIgZz1vW28ubGVuZ3RoLTFdLHA9bltkXSxmPXA9PWM/blsxXTpuW2QrMV07aWYoZiYmZyYmZy5sZW5ndGg+MiYmcFswXT09XCJMXCImJmYubGVuZ3RoPjImJmZbMF09PVwiTFwiKXt2YXIgYixtLHc9cihnKSxBPXIocCksbD1yKGYpO2I9aShBLHcsdCksbT1pKEEsbCx0KSxzKHAsYikscC5vcmlnUG9pbnQ9QSxvLnB1c2gocCk7dmFyIHU9YShiLEEsLjUpLHg9YShBLG0sLjUpLHY9W1wiQ1wiLHUueCx1LnkseC54LHgueSxtLngsbS55XTt2Lm9yaWdQb2ludD1BLG8ucHVzaCh2KX1lbHNlIG8ucHVzaChwKX1pZihjKXt2YXIgaz1yKG9bby5sZW5ndGgtMV0pO28ucHVzaChbXCJaXCJdKSxzKG9bMF0sayl9fWVsc2Ugbz1uO3JldHVybiBvLnJlZHVjZShmdW5jdGlvbihTLEMpe3JldHVybiBTK0Muam9pbihcIiBcIikrXCIgXCJ9LFwiXCIpfX0se2tleTpcImRyYXdMaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOlwiI2E4YThhOFwiLHI9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOjAsbj1hcmd1bWVudHMubGVuZ3RoPjYmJmFyZ3VtZW50c1s2XSE9PXZvaWQgMD9hcmd1bWVudHNbNl06bnVsbCxvPWFyZ3VtZW50cy5sZW5ndGg+NyYmYXJndW1lbnRzWzddIT09dm9pZCAwP2FyZ3VtZW50c1s3XTpcImJ1dHRcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHt4MTplLHkxOnQseDI6aSx5MjphLHN0cm9rZTpzLFwic3Ryb2tlLWRhc2hhcnJheVwiOnIsXCJzdHJva2Utd2lkdGhcIjpuLFwic3Ryb2tlLWxpbmVjYXBcIjpvfSl9fSx7a2V5OlwiZHJhd1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTowLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06MCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOjAscj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06XCIjZmVmZWZlXCIsbj1hcmd1bWVudHMubGVuZ3RoPjYmJmFyZ3VtZW50c1s2XSE9PXZvaWQgMD9hcmd1bWVudHNbNl06MSxvPWFyZ3VtZW50cy5sZW5ndGg+NyYmYXJndW1lbnRzWzddIT09dm9pZCAwP2FyZ3VtZW50c1s3XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD44JiZhcmd1bWVudHNbOF0hPT12b2lkIDA/YXJndW1lbnRzWzhdOm51bGwsYz1hcmd1bWVudHMubGVuZ3RoPjkmJmFyZ3VtZW50c1s5XSE9PXZvaWQgMD9hcmd1bWVudHNbOV06MCxkPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7cmV0dXJuIGQuYXR0cih7eDplLHk6dCx3aWR0aDppPjA/aTowLGhlaWdodDphPjA/YTowLHJ4OnMscnk6cyxvcGFjaXR5Om4sXCJzdHJva2Utd2lkdGhcIjpvIT09bnVsbD9vOjAsc3Ryb2tlOmghPT1udWxsP2g6XCJub25lXCIsXCJzdHJva2UtZGFzaGFycmF5XCI6Y30pLGQubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsciksZH19LHtrZXk6XCJkcmF3UG9seWdvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpcIiNlMWUxZTFcIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXToxLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOlwibm9uZVwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbihlKS5hdHRyKHtmaWxsOmEsc3Ryb2tlOnQsXCJzdHJva2Utd2lkdGhcIjppfSl9fSx7a2V5OlwiZHJhd0NpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO2U8MCYmKGU9MCk7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmNpcmNsZSgyKmUpO3JldHVybiB0IT09bnVsbCYmaS5hdHRyKHQpLGl9fSx7a2V5OlwiZHJhd1BhdGhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmQsaT10PT09dm9pZCAwP1wiXCI6dCxhPWUuc3Ryb2tlLHM9YT09PXZvaWQgMD9cIiNhOGE4YThcIjphLHI9ZS5zdHJva2VXaWR0aCxuPXI9PT12b2lkIDA/MTpyLG89ZS5maWxsLGg9ZS5maWxsT3BhY2l0eSxjPWg9PT12b2lkIDA/MTpoLGQ9ZS5zdHJva2VPcGFjaXR5LGc9ZD09PXZvaWQgMD8xOmQscD1lLmNsYXNzZXMsZj1lLnN0cm9rZUxpbmVjYXAsYj1mPT09dm9pZCAwP251bGw6ZixtPWUuc3Ryb2tlRGFzaEFycmF5LHc9bT09PXZvaWQgMD8wOm0sQT10aGlzLnc7cmV0dXJuIGI9PT1udWxsJiYoYj1BLmNvbmZpZy5zdHJva2UubGluZUNhcCksKGkuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8aS5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKGk9XCJNIDAgXCIuY29uY2F0KEEuZ2xvYmFscy5ncmlkSGVpZ2h0KSksQS5nbG9iYWxzLmRvbS5QYXBlci5wYXRoKGkpLmF0dHIoe2ZpbGw6byxcImZpbGwtb3BhY2l0eVwiOmMsc3Ryb2tlOnMsXCJzdHJva2Utb3BhY2l0eVwiOmcsXCJzdHJva2UtbGluZWNhcFwiOmIsXCJzdHJva2Utd2lkdGhcIjpuLFwic3Ryb2tlLWRhc2hhcnJheVwiOncsY2xhc3M6cH0pfX0se2tleTpcImdyb3VwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06bnVsbCx0PXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ncm91cCgpO3JldHVybiBlIT09bnVsbCYmdC5hdHRyKGUpLHR9fSx7a2V5OlwibW92ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9W1wiTVwiLGUsdF0uam9pbihcIiBcIik7cmV0dXJuIGl9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGwsYT1udWxsO3JldHVybiBpPT09bnVsbD9hPVtcIiBMXCIsZSx0XS5qb2luKFwiIFwiKTppPT09XCJIXCI/YT1bXCIgSFwiLGVdLmpvaW4oXCIgXCIpOmk9PT1cIlZcIiYmKGE9W1wiIFZcIix0XS5qb2luKFwiIFwiKSksYX19LHtrZXk6XCJjdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyKXt2YXIgbj1bXCJDXCIsZSx0LGksYSxzLHJdLmpvaW4oXCIgXCIpO3JldHVybiBufX0se2tleTpcInF1YWRyYXRpY0N1cnZlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7cmV0dXJuW1wiUVwiLGUsdCxpLGFdLmpvaW4oXCIgXCIpfX0se2tleTpcImFyY1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyLG4pe3ZhciBvPVwiQVwiO2FyZ3VtZW50cy5sZW5ndGg+NyYmYXJndW1lbnRzWzddIT09dm9pZCAwJiZhcmd1bWVudHNbN10mJihvPVwiYVwiKTt2YXIgaD1bbyxlLHQsaSxhLHMscixuXS5qb2luKFwiIFwiKTtyZXR1cm4gaH19LHtrZXk6XCJyZW5kZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9ZS5qLGE9ZS5yZWFsSW5kZXgscz1lLnBhdGhGcm9tLHI9ZS5wYXRoVG8sbj1lLnN0cm9rZSxvPWUuc3Ryb2tlV2lkdGgsaD1lLnN0cm9rZUxpbmVjYXAsYz1lLmZpbGwsZD1lLmFuaW1hdGlvbkRlbGF5LGc9ZS5pbml0aWFsU3BlZWQscD1lLmRhdGFDaGFuZ2VTcGVlZCxmPWUuY2xhc3NOYW1lLGI9ZS5zaG91bGRDbGlwVG9HcmlkLG09Yj09PXZvaWQgMHx8Yix3PWUuYmluZEV2ZW50c09uUGF0aHMsQT13PT09dm9pZCAwfHx3LGw9ZS5kcmF3U2hhZG93LHU9bD09PXZvaWQgMHx8bCx4PXRoaXMudyx2PW5ldyAkKHRoaXMuY3R4KSxrPW5ldyBnZSh0aGlzLmN0eCksUz10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxDPVMmJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsTD0hIShTJiYheC5nbG9iYWxzLnJlc2l6ZWR8fEMmJnguZ2xvYmFscy5kYXRhQ2hhbmdlZCYmeC5nbG9iYWxzLnNob3VsZEFuaW1hdGUpO0w/dD1zOih0PXIseC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKTt2YXIgST14LmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LHo9MDt6PUFycmF5LmlzQXJyYXkoSSk/SVthXTp4LmNvbmZpZy5zdHJva2UuZGFzaEFycmF5O3ZhciBUPXRoaXMuZHJhd1BhdGgoe2Q6dCxzdHJva2U6bixzdHJva2VXaWR0aDpvLGZpbGw6YyxmaWxsT3BhY2l0eToxLGNsYXNzZXM6ZixzdHJva2VMaW5lY2FwOmgsc3Ryb2tlRGFzaEFycmF5Onp9KTtpZihULmF0dHIoXCJpbmRleFwiLGEpLG0mJlQuYXR0cih7XCJjbGlwLXBhdGhcIjpcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KHguZ2xvYmFscy5jdWlkLFwiKVwiKX0pLHguY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUhPT1cIm5vbmVcIil2LmdldERlZmF1bHRGaWx0ZXIoVCxhKTtlbHNlIGlmKHguY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmdSYmKCF4LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllc3x8eC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMmJnguY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoYSkhPT0tMSkpe3ZhciBFPXguY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7di5kcm9wU2hhZG93KFQsRSxhKX1BJiYoVC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsVCkpLFQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLFQpKSxULm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsVCkpKSxULmF0dHIoe3BhdGhUbzpyLHBhdGhGcm9tOnN9KTt2YXIgUj17ZWw6VCxqOmkscmVhbEluZGV4OmEscGF0aEZyb206cyxwYXRoVG86cixmaWxsOmMsc3Ryb2tlV2lkdGg6byxkZWxheTpkfTtyZXR1cm4hU3x8eC5nbG9iYWxzLnJlc2l6ZWR8fHguZ2xvYmFscy5kYXRhQ2hhbmdlZD8heC5nbG9iYWxzLnJlc2l6ZWQmJnguZ2xvYmFscy5kYXRhQ2hhbmdlZHx8ay5zaG93RGVsYXllZEVsZW1lbnRzKCk6ay5hbmltYXRlUGF0aHNHcmFkdWFsbHkoWChYKHt9LFIpLHt9LHtzcGVlZDpnfSkpLHguZ2xvYmFscy5kYXRhQ2hhbmdlZCYmQyYmTCYmay5hbmltYXRlUGF0aHNHcmFkdWFsbHkoWChYKHt9LFIpLHt9LHtzcGVlZDpwfSkpLFR9fSx7a2V5OlwiZHJhd1BhdHRlcm5cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOlwiI2E4YThhOFwiLHM9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOjA7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wYXR0ZXJuKHQsaSxmdW5jdGlvbihyKXtlPT09XCJob3Jpem9udGFsTGluZXNcIj9yLmxpbmUoMCwwLGksMCkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOmU9PT1cInZlcnRpY2FsTGluZXNcIj9yLmxpbmUoMCwwLDAsdCkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOmU9PT1cInNsYW50ZWRMaW5lc1wiP3IubGluZSgwLDAsdCxpKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOmU9PT1cInNxdWFyZXNcIj9yLnJlY3QodCxpKS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOmU9PT1cImNpcmNsZXNcIiYmci5jaXJjbGUodCkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KX0pfX0se2tleTpcImRyYXdHcmFkaWVudFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06bnVsbCxvPWFyZ3VtZW50cy5sZW5ndGg+NiYmYXJndW1lbnRzWzZdIT09dm9pZCAwP2FyZ3VtZW50c1s2XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD43JiZhcmd1bWVudHNbN10hPT12b2lkIDA/YXJndW1lbnRzWzddOm51bGwsYz1hcmd1bWVudHMubGVuZ3RoPjgmJmFyZ3VtZW50c1s4XSE9PXZvaWQgMD9hcmd1bWVudHNbOF06MCxkPXRoaXMudzt0Lmxlbmd0aDw5JiZ0LmluZGV4T2YoXCIjXCIpPT09MCYmKHQ9UC5oZXhUb1JnYmEodCxhKSksaS5sZW5ndGg8OSYmaS5pbmRleE9mKFwiI1wiKT09PTAmJihpPVAuaGV4VG9SZ2JhKGkscykpO3ZhciBnPTAscD0xLGY9MSxiPW51bGw7byE9PW51bGwmJihnPW9bMF0hPT12b2lkIDA/b1swXS8xMDA6MCxwPW9bMV0hPT12b2lkIDA/b1sxXS8xMDA6MSxmPW9bMl0hPT12b2lkIDA/b1syXS8xMDA6MSxiPW9bM10hPT12b2lkIDA/b1szXS8xMDA6bnVsbCk7dmFyIG09IShkLmNvbmZpZy5jaGFydC50eXBlIT09XCJkb251dFwiJiZkLmNvbmZpZy5jaGFydC50eXBlIT09XCJwaWVcIiYmZC5jb25maWcuY2hhcnQudHlwZSE9PVwicG9sYXJBcmVhXCImJmQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImJ1YmJsZVwiKTtpZihyPWg9PT1udWxsfHxoLmxlbmd0aD09PTA/ZC5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChtP1wicmFkaWFsXCI6XCJsaW5lYXJcIixmdW5jdGlvbihsKXtsLmF0KGcsdCxhKSxsLmF0KHAsaSxzKSxsLmF0KGYsaSxzKSxiIT09bnVsbCYmbC5hdChiLHQsYSl9KTpkLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KG0/XCJyYWRpYWxcIjpcImxpbmVhclwiLGZ1bmN0aW9uKGwpeyhBcnJheS5pc0FycmF5KGhbY10pP2hbY106aCkuZm9yRWFjaChmdW5jdGlvbih1KXtsLmF0KHUub2Zmc2V0LzEwMCx1LmNvbG9yLHUub3BhY2l0eSl9KX0pLG0pe3ZhciB3PWQuZ2xvYmFscy5ncmlkV2lkdGgvMixBPWQuZ2xvYmFscy5ncmlkSGVpZ2h0LzI7ZC5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCI/ci5hdHRyKHtncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjeDp3LGN5OkEscjpufSk6ci5hdHRyKHtjeDouNSxjeTouNSxyOi44LGZ4Oi4yLGZ5Oi4yfSl9ZWxzZSBlPT09XCJ2ZXJ0aWNhbFwiP3IuZnJvbSgwLDApLnRvKDAsMSk6ZT09PVwiZGlhZ29uYWxcIj9yLmZyb20oMCwwKS50bygxLDEpOmU9PT1cImhvcml6b250YWxcIj9yLmZyb20oMCwxKS50bygxLDEpOmU9PT1cImRpYWdvbmFsMlwiJiZyLmZyb20oMSwwKS50bygwLDEpO3JldHVybiByfX0se2tleTpcImdldFRleHRCYXNlZE9uTWF4V2lkdGhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRleHQsaT1lLm1heFdpZHRoLGE9ZS5mb250U2l6ZSxzPWUuZm9udEZhbWlseSxyPXRoaXMuZ2V0VGV4dFJlY3RzKHQsYSxzKSxuPXIud2lkdGgvdC5sZW5ndGgsbz1NYXRoLmZsb29yKGkvbik7cmV0dXJuIGk8ci53aWR0aD90LnNsaWNlKDAsby0zKStcIi4uLlwiOnR9fSx7a2V5OlwiZHJhd1RleHRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS54LGE9ZS55LHM9ZS50ZXh0LHI9ZS50ZXh0QW5jaG9yLG49ZS5mb250U2l6ZSxvPWUuZm9udEZhbWlseSxoPWUuZm9udFdlaWdodCxjPWUuZm9yZUNvbG9yLGQ9ZS5vcGFjaXR5LGc9ZS5tYXhXaWR0aCxwPWUuY3NzQ2xhc3MsZj1wPT09dm9pZCAwP1wiXCI6cCxiPWUuaXNQbGFpblRleHQsbT1iPT09dm9pZCAwfHxiLHc9ZS5kb21pbmFudEJhc2VsaW5lLEE9dz09PXZvaWQgMD9cImF1dG9cIjp3LGw9dGhpcy53O3M9PT12b2lkIDAmJihzPVwiXCIpO3ZhciB1PXM7cnx8KHI9XCJzdGFydFwiKSxjJiZjLmxlbmd0aHx8KGM9bC5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxvPW98fGwuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksaD1ofHxcInJlZ3VsYXJcIjt2YXIgeCx2PXttYXhXaWR0aDpnLGZvbnRTaXplOm49bnx8XCIxMXB4XCIsZm9udEZhbWlseTpvfTtyZXR1cm4gQXJyYXkuaXNBcnJheShzKT94PWwuZ2xvYmFscy5kb20uUGFwZXIudGV4dChmdW5jdGlvbihrKXtmb3IodmFyIFM9MDtTPHMubGVuZ3RoO1MrKyl1PXNbU10sZyYmKHU9dC5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKFgoe3RleHQ6c1tTXX0sdikpKSxTPT09MD9rLnRzcGFuKHUpOmsudHNwYW4odSkubmV3TGluZSgpfSk6KGcmJih1PXRoaXMuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChYKHt0ZXh0OnN9LHYpKSkseD1tP2wuZ2xvYmFscy5kb20uUGFwZXIucGxhaW4ocyk6bC5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KGZ1bmN0aW9uKGspe3JldHVybiBrLnRzcGFuKHUpfSkpLHguYXR0cih7eDppLHk6YSxcInRleHQtYW5jaG9yXCI6cixcImRvbWluYW50LWJhc2VsaW5lXCI6QSxcImZvbnQtc2l6ZVwiOm4sXCJmb250LWZhbWlseVwiOm8sXCJmb250LXdlaWdodFwiOmgsZmlsbDpjLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0IFwiK2Z9KSx4Lm5vZGUuc3R5bGUuZm9udEZhbWlseT1vLHgubm9kZS5zdHlsZS5vcGFjaXR5PWQseH19LHtrZXk6XCJkcmF3TWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe2U9ZXx8MDt2YXIgYT1pLnBTaXplfHwwLHM9bnVsbDtpZihpLnNoYXBlPT09XCJzcXVhcmVcInx8aS5zaGFwZT09PVwicmVjdFwiKXt2YXIgcj1pLnBSYWRpdXM9PT12b2lkIDA/YS8yOmkucFJhZGl1czt0IT09bnVsbCYmYXx8KGE9MCxyPTApO3ZhciBuPTEuMiphK3Isbz10aGlzLmRyYXdSZWN0KG4sbixuLG4scik7by5hdHRyKHt4OmUtbi8yLHk6dC1uLzIsY3g6ZSxjeTp0LGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkscz1vfWVsc2UgaS5zaGFwZSE9PVwiY2lyY2xlXCImJmkuc2hhcGV8fChQLmlzTnVtYmVyKHQpfHwoYT0wLHQ9MCkscz10aGlzLmRyYXdDaXJjbGUoYSx7Y3g6ZSxjeTp0LGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkpO3JldHVybiBzfX0se2tleTpcInBhdGhNb3VzZUVudGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1uZXcgJCh0aGlzLmN0eCkscz1wYXJzZUludChlLm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQoZS5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO2lmKHR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlcj09XCJmdW5jdGlvblwiJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlcih0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlRW50ZXJcIixbdCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSwoaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZT09PVwibm9uZVwifHxlLm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikhPT1cInRydWVcIikmJmkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSE9PVwibm9uZVwiJiYhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2Upe3ZhciBuPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcihlLHMsbi50eXBlLG4udmFsdWUpfX19LHtrZXk6XCJwYXRoTW91c2VMZWF2ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3ICQodGhpcy5jdHgpLHM9cGFyc2VJbnQoZS5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKTt0eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmU9PVwiZnVuY3Rpb25cIiYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUodCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUxlYXZlXCIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSE9PVwibm9uZVwiJiZlLm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIik9PT1cInRydWVcInx8aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlIT09XCJub25lXCImJmEuZ2V0RGVmYXVsdEZpbHRlcihlLHMpfX0se2tleTpcInBhdGhNb3VzZURvd25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPW5ldyAkKHRoaXMuY3R4KSxzPXBhcnNlSW50KGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludChlLm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCksbj1cImZhbHNlXCI7aWYoZS5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpPT09XCJ0cnVlXCIpe2lmKGUubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwiZmFsc2VcIiksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5pbmRleE9mKHIpPi0xKXt2YXIgbz1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5zcGxpY2UobywxKX19ZWxzZXtpZighaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5hbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbiYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGg+MCl7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cz1bXTt2YXIgaD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBwYXRoXCIpLm1lbWJlcnMsYz1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBjaXJjbGUsIC5hcGV4Y2hhcnRzLXNlcmllcyByZWN0XCIpLm1lbWJlcnMsZD1mdW5jdGlvbihmKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGYsZnVuY3Rpb24oYil7Yi5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxhLmdldERlZmF1bHRGaWx0ZXIoYixzKX0pfTtkKGgpLGQoYyl9ZS5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJ0cnVlXCIpLG49XCJ0cnVlXCIsaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXT09PXZvaWQgMCYmKGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc109W10pLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10ucHVzaChyKX1pZihuPT09XCJ0cnVlXCIpe3ZhciBnPWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO2lmKGchPT1cIm5vbmVcIilhLmFwcGx5RmlsdGVyKGUscyxnLnR5cGUsZy52YWx1ZSk7ZWxzZSBpZihpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyIT09XCJub25lXCImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIHA9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKGUscyxwLnR5cGUscC52YWx1ZSl9fWVsc2UgaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSE9PVwibm9uZVwiJiYoaS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlPT09XCJub25lXCJ8fGkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP2EuZ2V0RGVmYXVsdEZpbHRlcihlLHMpOihwPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIsYS5hcHBseUZpbHRlcihlLHMscC50eXBlLHAudmFsdWUpKSk7dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb249PVwiZnVuY3Rpb25cIiYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbih0LHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdCYmdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludFNlbGVjdGlvblwiLFt0LHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pfX0se2tleTpcInJvdGF0ZUFyb3VuZENlbnRlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlJiZ0eXBlb2YgZS5nZXRCQm94PT1cImZ1bmN0aW9uXCImJih0PWUuZ2V0QkJveCgpKSx7eDp0LngrdC53aWR0aC8yLHk6dC55K3QuaGVpZ2h0LzJ9fX0se2tleTpcImdldFRleHRSZWN0c1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPSEoYXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDApfHxhcmd1bWVudHNbNF0scj10aGlzLncsbj10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6ZSx0ZXh0QW5jaG9yOlwic3RhcnRcIixmb250U2l6ZTp0LGZvbnRGYW1pbHk6aSxmb3JlQ29sb3I6XCIjZmZmXCIsb3BhY2l0eTowfSk7YSYmbi5hdHRyKFwidHJhbnNmb3JtXCIsYSksci5nbG9iYWxzLmRvbS5QYXBlci5hZGQobik7dmFyIG89bi5iYm94KCk7cmV0dXJuIHN8fChvPW4ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbi5yZW1vdmUoKSx7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9fX0se2tleTpcInBsYWNlVGV4dFdpdGhFbGxpcHNpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtpZih0eXBlb2YgZS5nZXRDb21wdXRlZFRleHRMZW5ndGg9PVwiZnVuY3Rpb25cIiYmKGUudGV4dENvbnRlbnQ9dCx0Lmxlbmd0aD4wJiZlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpPj1pLzEuMSkpe2Zvcih2YXIgYT10Lmxlbmd0aC0zO2E+MDthLT0zKWlmKGUuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsYSk8PWkvMS4xKXJldHVybiB2b2lkKGUudGV4dENvbnRlbnQ9dC5zdWJzdHJpbmcoMCxhKStcIi4uLlwiKTtlLnRleHRDb250ZW50PVwiLlwifX19XSxbe2tleTpcInNldEF0dHJzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiZlLnNldEF0dHJpYnV0ZShpLHRbaV0pfX1dKSx5fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImdldFN0YWNrZWRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXSx0PXRoaXMudyxpPVtdO2lmKHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPT09MClyZXR1cm4gaTtmb3IodmFyIGE9MDthPHQuZ2xvYmFscy5zZXJpZXNbdC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO3IrKyl0Lmdsb2JhbHMuc2VyaWVzW3JdW2FdIT09dm9pZCAwJiZlLmluZGV4T2Yocik9PT0tMSYmKHMrPXQuZ2xvYmFscy5zZXJpZXNbcl1bYV0pO2kucHVzaChzKX1yZXR1cm4gaX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbEJ5SW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBlPT09bnVsbD90aGlzLncuY29uZmlnLnNlcmllcy5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gdCtpfSwwKTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbZV0ucmVkdWNlKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQraX0sMCl9fSx7a2V5OlwiZ2V0U3RhY2tlZFNlcmllc1RvdGFsc0J5R3JvdXBzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9W107cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcz1bXTt0LmNvbmZpZy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihuLG8pe2EuaW5kZXhPZihuLm5hbWUpPi0xJiZzLnB1c2gobyl9KTt2YXIgcj10Lmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbihuLG8pe3JldHVybiBzLmluZGV4T2Yobyk9PT0tMT9vOi0xfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuIT09LTF9KTtpLnB1c2goZS5nZXRTdGFja2VkU2VyaWVzVG90YWxzKHIpKX0pLGl9fSx7a2V5OlwiaXNTZXJpZXNOdWxsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4oZT09PW51bGw/dGhpcy53LmNvbmZpZy5zZXJpZXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09bnVsbH0pOnRoaXMudy5jb25maWcuc2VyaWVzW2VdLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09bnVsbH0pKS5sZW5ndGg9PT0wfX0se2tleTpcInNlcmllc0hhdmVTYW1lVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1tlXS5ldmVyeShmdW5jdGlvbih0LGksYSl7cmV0dXJuIHQ9PT1hWzBdfSl9fSx7a2V5OlwiZ2V0Q2F0ZWdvcnlMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1lLnNsaWNlKCk7cmV0dXJuIHQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGk9ZS5tYXAoZnVuY3Rpb24oYSxzKXtyZXR1cm4gdC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcihhLXQuZ2xvYmFscy5taW5YKzEpfSkpLGl9fSx7a2V5OlwiZ2V0TGFyZ2VzdFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4PWUuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pLmluZGV4T2YoTWF0aC5tYXguYXBwbHkoTWF0aCxlLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkpfX0se2tleTpcImdldExhcmdlc3RNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD0wO3JldHVybiBlLmdsb2JhbHMubWFya2Vycy5zaXplLmZvckVhY2goZnVuY3Rpb24oaSl7dD1NYXRoLm1heCh0LGkpfSksZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGgmJmUuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUuZm9yRWFjaChmdW5jdGlvbihpKXt0PU1hdGgubWF4KHQsaS5zaXplKX0pLHQ+MCYmKHQrPWUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCsxKSxlLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT10LHR9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLnNlcmllc1RvdGFscz1lLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbih0LGkpe3ZhciBhPTA7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKylhKz10W3NdO2Vsc2UgYSs9dDtyZXR1cm4gYX0pfX0se2tleTpcImdldFNlcmllc1RvdGFsc1hSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbihhLHMpe2Zvcih2YXIgcj0wLG49MDtuPGEubGVuZ3RoO24rKylpLmdsb2JhbHMuc2VyaWVzWFtzXVtuXT5lJiZpLmdsb2JhbHMuc2VyaWVzWFtzXVtuXTx0JiYocis9YVtuXSk7cmV0dXJuIHJ9KX19LHtrZXk6XCJnZXRQZXJjZW50U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLnNlcmllc1BlcmNlbnQ9ZS5nbG9iYWxzLnNlcmllcy5tYXAoZnVuY3Rpb24odCxpKXt2YXIgYT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgcj1lLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsc1tzXSxuPTA7ciYmKG49MTAwKnRbc10vciksYS5wdXNoKG4pfWVsc2V7dmFyIG89MTAwKnQvZS5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoZnVuY3Rpb24oaCxjKXtyZXR1cm4gaCtjfSwwKTthLnB1c2gobyl9cmV0dXJuIGF9KX19LHtrZXk6XCJnZXRDYWxjdWxhdGVkUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LGksYT10aGlzLncuZ2xvYmFscyxzPVtdLHI9MCxuPVtdLG89LjEsaD0wO2lmKGEueVJhbmdlPVtdLGEuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYz0wO2M8YS5taW5ZQXJyLmxlbmd0aDtjKyspYS55UmFuZ2UucHVzaChNYXRoLmFicyhhLm1pbllBcnJbY10tYS5tYXhZQXJyW2NdKSksbi5wdXNoKDApO2Vsc2UgYS55UmFuZ2UucHVzaChNYXRoLmFicyhhLm1pblktYS5tYXhZKSk7YS54UmFuZ2U9TWF0aC5hYnMoYS5tYXhYLWEubWluWCksYS56UmFuZ2U9TWF0aC5hYnMoYS5tYXhaLWEubWluWik7Zm9yKHZhciBkPTA7ZDxhLnlSYW5nZS5sZW5ndGg7ZCsrKXMucHVzaChhLnlSYW5nZVtkXS9hLmdyaWRIZWlnaHQpO2lmKHQ9YS54UmFuZ2UvYS5ncmlkV2lkdGgsZT1hLnlSYW5nZS9hLmdyaWRXaWR0aCxpPWEueFJhbmdlL2EuZ3JpZEhlaWdodCwocj1hLnpSYW5nZS9hLmdyaWRIZWlnaHQqMTYpfHwocj0xKSxhLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiZNYXRoLmFicyhhLm1pblkpIT09MCYmKGEuaGFzTmVncz0hMCksYS5pc011bHRpcGxlWUF4aXMpe249W107Zm9yKHZhciBnPTA7ZzxzLmxlbmd0aDtnKyspbi5wdXNoKC1hLm1pbllBcnJbZ10vc1tnXSl9ZWxzZSBuLnB1c2goLWEubWluWS9zWzBdKSxhLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiZNYXRoLmFicyhhLm1pblkpIT09MCYmKG89LWEubWluWS9lLGg9YS5taW5YL3QpO3JldHVybnt5UmF0aW86cyxpbnZlcnRlZFlSYXRpbzplLHpSYXRpbzpyLHhSYXRpbzp0LGludmVydGVkWFJhdGlvOmksYmFzZUxpbmVJbnZlcnRlZFk6byxiYXNlTGluZVk6bixiYXNlTGluZVg6aH19fSx7a2V5OlwiZ2V0TG9nU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllc0xvZz1lLm1hcChmdW5jdGlvbihhLHMpe3JldHVybiBpLmNvbmZpZy55YXhpc1tzXSYmaS5jb25maWcueWF4aXNbc10ubG9nYXJpdGhtaWM/YS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1udWxsP251bGw6dC5nZXRMb2dWYWwoaS5jb25maWcueWF4aXNbc10ubG9nQmFzZSxyLHMpfSk6YX0pLGkuZ2xvYmFscy5pbnZhbGlkTG9nU2NhbGU/ZTppLmdsb2JhbHMuc2VyaWVzTG9nfX0se2tleTpcImdldEJhc2VMb2dcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLmxvZyhlKX19LHtrZXk6XCJnZXRMb2dWYWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7aWYodD09PTApcmV0dXJuIDA7dmFyIGE9dGhpcy53LHM9YS5nbG9iYWxzLm1pbllBcnJbaV09PT0wPy0xOnRoaXMuZ2V0QmFzZUxvZyhlLGEuZ2xvYmFscy5taW5ZQXJyW2ldKSxyPShhLmdsb2JhbHMubWF4WUFycltpXT09PTA/MDp0aGlzLmdldEJhc2VMb2coZSxhLmdsb2JhbHMubWF4WUFycltpXSkpLXM7cmV0dXJuIHQ8MT90L3I6KHRoaXMuZ2V0QmFzZUxvZyhlLHQpLXMpL3J9fSx7a2V5OlwiZ2V0TG9nWVJhdGlvc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLncsYT10aGlzLncuZ2xvYmFscztyZXR1cm4gYS55TG9nUmF0aW89ZS5zbGljZSgpLGEubG9nWVJhbmdlPWEueVJhbmdlLm1hcChmdW5jdGlvbihzLHIpe2lmKGkuY29uZmlnLnlheGlzW3JdJiZ0LncuY29uZmlnLnlheGlzW3JdLmxvZ2FyaXRobWljKXt2YXIgbixvPS1OdW1iZXIuTUFYX1ZBTFVFLGg9TnVtYmVyLk1JTl9WQUxVRTtyZXR1cm4gYS5zZXJpZXNMb2cuZm9yRWFjaChmdW5jdGlvbihjLGQpe2MuZm9yRWFjaChmdW5jdGlvbihnKXtpLmNvbmZpZy55YXhpc1tkXSYmaS5jb25maWcueWF4aXNbZF0ubG9nYXJpdGhtaWMmJihvPU1hdGgubWF4KGcsbyksaD1NYXRoLm1pbihnLGgpKX0pfSksbj1NYXRoLnBvdyhhLnlSYW5nZVtyXSxNYXRoLmFicyhoLW8pL2EueVJhbmdlW3JdKSxhLnlMb2dSYXRpb1tyXT1uL2EuZ3JpZEhlaWdodCxufX0pLGEuaW52YWxpZExvZ1NjYWxlP2Uuc2xpY2UoKTphLnlMb2dSYXRpb319XSxbe2tleTpcImNoZWNrQ29tYm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hMSxpPTAsYT0wO3JldHVybiBlLmxlbmd0aCYmZVswXS50eXBlIT09dm9pZCAwJiZlLmZvckVhY2goZnVuY3Rpb24ocyl7cy50eXBlIT09XCJiYXJcIiYmcy50eXBlIT09XCJjb2x1bW5cIiYmcy50eXBlIT09XCJjYW5kbGVzdGlja1wiJiZzLnR5cGUhPT1cImJveFBsb3RcInx8aSsrLHMudHlwZSE9PXZvaWQgMCYmYSsrfSksYT4wJiYodD0hMCkse2NvbWJvQmFyQ291bnQ6aSxjb21ib0NoYXJ0czp0fX19LHtrZXk6XCJleHRlbmRBcnJheVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0LnlheGlzJiYodD1lLmV4dGVuZFlBeGlzKHQsaSkpLHQuYW5ub3RhdGlvbnMmJih0LmFubm90YXRpb25zLnlheGlzJiYodD1lLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCkpLHQuYW5ub3RhdGlvbnMueGF4aXMmJih0PWUuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyh0KSksdC5hbm5vdGF0aW9ucy5wb2ludHMmJih0PWUuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyh0KSkpLHR9fV0pLHl9KCkseWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lfXJldHVybiBZKHksW3trZXk6XCJzZXRPcmllbnRhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudztpZihlLmxhYmVsLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiKXt2YXIgYT10IT09bnVsbD90OjAscz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiLmNvbmNhdChhLFwiJ11cIikpO2lmKHMhPT1udWxsKXt2YXIgcj1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Muc2V0QXR0cmlidXRlKFwieFwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKS1yLmhlaWdodCs0KSxlLmxhYmVsLnBvc2l0aW9uPT09XCJ0b3BcIj9zLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSkrci53aWR0aCk6cy5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInlcIikpLXIud2lkdGgpO3ZhciBuPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5yb3RhdGVBcm91bmRDZW50ZXIocyksbz1uLngsaD1uLnk7cy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KG8sXCIgXCIpLmNvbmNhdChoLFwiKVwiKSl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9Bbm5vXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aWYoIWV8fHQubGFiZWwudGV4dD09PXZvaWQgMHx8dC5sYWJlbC50ZXh0IT09dm9pZCAwJiYhU3RyaW5nKHQubGFiZWwudGV4dCkudHJpbSgpKXJldHVybiBudWxsO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXQubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LG49dC5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG89dC5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxoPXQubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b207dC5sYWJlbC5vcmllbnRhdGlvbj09PVwidmVydGljYWxcIiYmKG89dC5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsaD10LmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQscj10LmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLG49dC5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbSk7dmFyIGM9cy5sZWZ0LWEubGVmdC1yLGQ9cy50b3AtYS50b3AtbyxnPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChjLWkuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxkLHMud2lkdGgrcituLHMuaGVpZ2h0K28raCx0LmxhYmVsLmJvcmRlclJhZGl1cyx0LmxhYmVsLnN0eWxlLmJhY2tncm91bmQsMSx0LmxhYmVsLmJvcmRlcldpZHRoLHQubGFiZWwuYm9yZGVyQ29sb3IsMCk7cmV0dXJuIHQuaWQmJmcubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpLGd9fSx7a2V5OlwiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9ZnVuY3Rpb24oYSxzLHIpe3ZhciBuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocixcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHIsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQocyxcIiddXCIpKTtpZihuKXt2YXIgbz1uLnBhcmVudE5vZGUsaD1lLmFkZEJhY2tncm91bmRUb0Fubm8obixhKTtoJiYoby5pbnNlcnRCZWZvcmUoaC5ub2RlLG4pLGEubGFiZWwubW91c2VFbnRlciYmaC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsYS5sYWJlbC5tb3VzZUVudGVyLmJpbmQoZSxhKSksYS5sYWJlbC5tb3VzZUxlYXZlJiZoLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixhLmxhYmVsLm1vdXNlTGVhdmUuYmluZChlLGEpKSxhLmxhYmVsLmNsaWNrJiZoLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsYS5sYWJlbC5jbGljay5iaW5kKGUsYSkpKX19O3QuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcChmdW5jdGlvbihhLHMpe2koYSxzLFwieGF4aXNcIil9KSx0LmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoZnVuY3Rpb24oYSxzKXtpKGEscyxcInlheGlzXCIpfSksdC5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcChmdW5jdGlvbihhLHMpe2koYSxzLFwicG9pbnRcIil9KX19LHtrZXk6XCJnZXRZMVkyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxhPWU9PT1cInkxXCI/dC55OnQueTIscz10aGlzLnc7aWYodGhpcy5hbm5vQ3R4LmludmVydEF4aXMpe3ZhciByPXMuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihhKTtzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihyPXMuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGEpKTt2YXIgbj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisocisxKStcIilcIik7biYmKGk9cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcInlcIikpKSx0LnNlcmllc0luZGV4IT09dm9pZCAwJiZzLmdsb2JhbHMuYmFySGVpZ2h0JiYoaT1pLXMuZ2xvYmFscy5iYXJIZWlnaHQvMioocy5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMSkrcy5nbG9iYWxzLmJhckhlaWdodCp0LnNlcmllc0luZGV4KX1lbHNle3ZhciBvO3MuY29uZmlnLnlheGlzW3QueUF4aXNJbmRleF0ubG9nYXJpdGhtaWM/bz0oYT1uZXcgcSh0aGlzLmFubm9DdHguY3R4KS5nZXRMb2dWYWwoYSx0LnlBeGlzSW5kZXgpKS9zLmdsb2JhbHMueUxvZ1JhdGlvW3QueUF4aXNJbmRleF06bz0oYS1zLmdsb2JhbHMubWluWUFyclt0LnlBeGlzSW5kZXhdKS8ocy5nbG9iYWxzLnlSYW5nZVt0LnlBeGlzSW5kZXhdL3MuZ2xvYmFscy5ncmlkSGVpZ2h0KSxpPXMuZ2xvYmFscy5ncmlkSGVpZ2h0LW8sIXQubWFya2VyfHx0LnkhPT12b2lkIDAmJnQueSE9PW51bGx8fChpPTApLHMuY29uZmlnLnlheGlzW3QueUF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW3QueUF4aXNJbmRleF0ucmV2ZXJzZWQmJihpPW8pfXJldHVybiB0eXBlb2YgYT09XCJzdHJpbmdcIiYmYS5pbmRleE9mKFwicHhcIik+LTEmJihpPXBhcnNlRmxvYXQoYSkpLGl9fSx7a2V5OlwiZ2V0WDFYMlwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1pblk6aS5nbG9iYWxzLm1pblgscz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWF4WTppLmdsb2JhbHMubWF4WCxyPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy55UmFuZ2VbMF06aS5nbG9iYWxzLnhSYW5nZSxuPSh0LngtYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7dGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobj0ocy10LngpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxpLmNvbmZpZy54YXhpcy50eXBlIT09XCJjYXRlZ29yeVwiJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG49dGhpcy5nZXRTdHJpbmdYKHQueCkpO3ZhciBvPSh0LngyLWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3JldHVybiB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihvPShzLXQueDIpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxpLmNvbmZpZy54YXhpcy50eXBlIT09XCJjYXRlZ29yeVwiJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG89dGhpcy5nZXRTdHJpbmdYKHQueDIpKSx0LnghPT12b2lkIDAmJnQueCE9PW51bGx8fCF0Lm1hcmtlcnx8KG49aS5nbG9iYWxzLmdyaWRXaWR0aCksZT09PVwieDFcIiYmdHlwZW9mIHQueD09XCJzdHJpbmdcIiYmdC54LmluZGV4T2YoXCJweFwiKT4tMSYmKG49cGFyc2VGbG9hdCh0LngpKSxlPT09XCJ4MlwiJiZ0eXBlb2YgdC54Mj09XCJzdHJpbmdcIiYmdC54Mi5pbmRleE9mKFwicHhcIik+LTEmJihvPXBhcnNlRmxvYXQodC54MikpLHQuc2VyaWVzSW5kZXghPT12b2lkIDAmJmkuZ2xvYmFscy5iYXJXaWR0aCYmIXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzJiYobj1uLWkuZ2xvYmFscy5iYXJXaWR0aC8yKihpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xKStpLmdsb2JhbHMuYmFyV2lkdGgqdC5zZXJpZXNJbmRleCksZT09PVwieDFcIj9uOm99fSx7a2V5OlwiZ2V0U3RyaW5nWFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPWU7dC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZ0Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMubGVuZ3RoJiYoZT10Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMuaW5kZXhPZihlKSsxKTt2YXIgYT10Lmdsb2JhbHMubGFiZWxzLmluZGV4T2YoZSkscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisoYSsxKStcIilcIik7cmV0dXJuIHMmJihpPXBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKSksaX19XSkseX0oKSxOZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5pbnZlcnRBeGlzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLHRoaXMuaGVscGVycz1uZXcgeWUodGhpcy5hbm5vQ3R4KX1yZXR1cm4gWSh5LFt7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHM9dGhpcy53LHI9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLGUpLG49ZS5sYWJlbC50ZXh0LG89ZS5zdHJva2VEYXNoQXJyYXk7aWYoUC5pc051bWJlcihyKSl7aWYoZS54Mj09PW51bGx8fGUueDI9PT12b2lkIDApe3ZhciBoPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TGluZShyK2Uub2Zmc2V0WCwwK2Uub2Zmc2V0WSxyK2Uub2Zmc2V0WCxzLmdsb2JhbHMuZ3JpZEhlaWdodCtlLm9mZnNldFksZS5ib3JkZXJDb2xvcixvLGUuYm9yZGVyV2lkdGgpO3QuYXBwZW5kQ2hpbGQoaC5ub2RlKSxlLmlkJiZoLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDJcIixlKSk8cil7dmFyIGM9cjtyPWEsYT1jfXZhciBkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChyK2Uub2Zmc2V0WCwwK2Uub2Zmc2V0WSxhLXIscy5nbG9iYWxzLmdyaWRIZWlnaHQrZS5vZmZzZXRZLDAsZS5maWxsQ29sb3IsZS5vcGFjaXR5LDEsZS5ib3JkZXJDb2xvcixvKTtkLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGQuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSx0LmFwcGVuZENoaWxkKGQubm9kZSksZS5pZCYmZC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCl9dmFyIGc9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhuLHBhcnNlRmxvYXQoZS5sYWJlbC5zdHlsZS5mb250U2l6ZSkpLHA9ZS5sYWJlbC5wb3NpdGlvbj09PVwidG9wXCI/NDplLmxhYmVsLnBvc2l0aW9uPT09XCJjZW50ZXJcIj9zLmdsb2JhbHMuZ3JpZEhlaWdodC8yKyhlLmxhYmVsLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiP2cud2lkdGgvMjowKTpzLmdsb2JhbHMuZ3JpZEhlaWdodCxmPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpyK2UubGFiZWwub2Zmc2V0WCx5OnArZS5sYWJlbC5vZmZzZXRZLShlLmxhYmVsLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiP2UubGFiZWwucG9zaXRpb249PT1cInRvcFwiP2cud2lkdGgvMi0xMjotZy53aWR0aC8yOjApLHRleHQ6bix0ZXh0QW5jaG9yOmUubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTplLmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdChlLmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQoZS5pZD9lLmlkOlwiXCIpfSk7Zi5hdHRyKHtyZWw6aX0pLHQuYXBwZW5kQ2hpbGQoZi5ub2RlKSx0aGlzLmFubm9DdHguaGVscGVycy5zZXRPcmllbnRhdGlvbnMoZSxpKX19fSx7a2V5OlwiZHJhd1hBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIHQuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcChmdW5jdGlvbihhLHMpe2UuYWRkWGF4aXNBbm5vdGF0aW9uKGEsaS5ub2RlLHMpfSksaX19XSkseX0oKSxXZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB5ZSh0aGlzLmFubm9DdHgpfXJldHVybiBZKHksW3trZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGEscz10aGlzLncscj1lLnN0cm9rZURhc2hBcnJheSxuPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTFcIixlKSxvPWUubGFiZWwudGV4dDtpZihlLnkyPT09bnVsbHx8ZS55Mj09PXZvaWQgMCl7dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDArZS5vZmZzZXRYLG4rZS5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKGUpLG4rZS5vZmZzZXRZLGUuYm9yZGVyQ29sb3IscixlLmJvcmRlcldpZHRoKTt0LmFwcGVuZENoaWxkKGgubm9kZSksZS5pZCYmaC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCl9ZWxzZXtpZigoYT10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkyXCIsZSkpPm4pe3ZhciBjPW47bj1hLGE9Y312YXIgZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoMCtlLm9mZnNldFgsYStlLm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgoZSksbi1hLDAsZS5maWxsQ29sb3IsZS5vcGFjaXR5LDEsZS5ib3JkZXJDb2xvcixyKTtkLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGQuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSx0LmFwcGVuZENoaWxkKGQubm9kZSksZS5pZCYmZC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCl9dmFyIGc9ZS5sYWJlbC5wb3NpdGlvbj09PVwicmlnaHRcIj9zLmdsb2JhbHMuZ3JpZFdpZHRoOmUubGFiZWwucG9zaXRpb249PT1cImNlbnRlclwiP3MuZ2xvYmFscy5ncmlkV2lkdGgvMjowLHA9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OmcrZS5sYWJlbC5vZmZzZXRYLHk6KGE/P24pK2UubGFiZWwub2Zmc2V0WS0zLHRleHQ6byx0ZXh0QW5jaG9yOmUubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTplLmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdChlLmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQoZS5pZD9lLmlkOlwiXCIpfSk7cC5hdHRyKHtyZWw6aX0pLHQuYXBwZW5kQ2hpbGQocC5ub2RlKX19LHtrZXk6XCJfZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7cmV0dXJuIHQuZ2xvYmFscy5ncmlkV2lkdGgsKGUud2lkdGguaW5kZXhPZihcIiVcIik+LTE/dC5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludChlLndpZHRoLDEwKS8xMDA6cGFyc2VJbnQoZS53aWR0aCwxMCkpK2Uub2Zmc2V0WH19LHtrZXk6XCJkcmF3WUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gdC5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKGZ1bmN0aW9uKGEscyl7ZS5hZGRZYXhpc0Fubm90YXRpb24oYSxpLm5vZGUscyl9KSxpfX1dKSx5fSgpLGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHllKHRoaXMuYW5ub0N0eCl9cmV0dXJuIFkoeSxbe2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt0aGlzLnc7dmFyIGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLGUpLHM9dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLGUpO2lmKFAuaXNOdW1iZXIoYSkpe3ZhciByPXtwU2l6ZTplLm1hcmtlci5zaXplLHBvaW50U3Ryb2tlV2lkdGg6ZS5tYXJrZXIuc3Ryb2tlV2lkdGgscG9pbnRGaWxsQ29sb3I6ZS5tYXJrZXIuZmlsbENvbG9yLHBvaW50U3Ryb2tlQ29sb3I6ZS5tYXJrZXIuc3Ryb2tlQ29sb3Isc2hhcGU6ZS5tYXJrZXIuc2hhcGUscFJhZGl1czplLm1hcmtlci5yYWRpdXMsY2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyIFwiLmNvbmNhdChlLm1hcmtlci5jc3NDbGFzcyxcIiBcIikuY29uY2F0KGUuaWQ/ZS5pZDpcIlwiKX0sbj10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihhK2UubWFya2VyLm9mZnNldFgscytlLm1hcmtlci5vZmZzZXRZLHIpO3QuYXBwZW5kQ2hpbGQobi5ub2RlKTt2YXIgbz1lLmxhYmVsLnRleHQ/ZS5sYWJlbC50ZXh0OlwiXCIsaD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6YStlLmxhYmVsLm9mZnNldFgseTpzK2UubGFiZWwub2Zmc2V0WS1lLm1hcmtlci5zaXplLXBhcnNlRmxvYXQoZS5sYWJlbC5zdHlsZS5mb250U2l6ZSkvMS42LHRleHQ6byx0ZXh0QW5jaG9yOmUubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTplLmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdChlLmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQoZS5pZD9lLmlkOlwiXCIpfSk7aWYoaC5hdHRyKHtyZWw6aX0pLHQuYXBwZW5kQ2hpbGQoaC5ub2RlKSxlLmN1c3RvbVNWRy5TVkcpe3ZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgXCIrZS5jdXN0b21TVkcuY3NzQ2xhc3N9KTtjLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoYStlLmN1c3RvbVNWRy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KHMrZS5jdXN0b21TVkcub2Zmc2V0WSxcIilcIil9KSxjLm5vZGUuaW5uZXJIVE1MPWUuY3VzdG9tU1ZHLlNWRyx0LmFwcGVuZENoaWxkKGMubm9kZSl9aWYoZS5pbWFnZS5wYXRoKXt2YXIgZD1lLmltYWdlLndpZHRoP2UuaW1hZ2Uud2lkdGg6MjAsZz1lLmltYWdlLmhlaWdodD9lLmltYWdlLmhlaWdodDoyMDtuPXRoaXMuYW5ub0N0eC5hZGRJbWFnZSh7eDphK2UuaW1hZ2Uub2Zmc2V0WC1kLzIseTpzK2UuaW1hZ2Uub2Zmc2V0WS1nLzIsd2lkdGg6ZCxoZWlnaHQ6ZyxwYXRoOmUuaW1hZ2UucGF0aCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KX1lLm1vdXNlRW50ZXImJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGUubW91c2VFbnRlci5iaW5kKHRoaXMsZSkpLGUubW91c2VMZWF2ZSYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZS5tb3VzZUxlYXZlLmJpbmQodGhpcyxlKSksZS5jbGljayYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUuY2xpY2suYmluZCh0aGlzLGUpKX19fSx7a2V5OlwiZHJhd1BvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIHQuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoZnVuY3Rpb24oYSxzKXtlLmFkZFBvaW50QW5ub3RhdGlvbihhLGkubm9kZSxzKX0pLGl9fV0pLHl9KCksSD17bmFtZTpcImVuXCIsb3B0aW9uczp7bW9udGhzOltcIkphbnVhcnlcIixcIkZlYnJ1YXJ5XCIsXCJNYXJjaFwiLFwiQXByaWxcIixcIk1heVwiLFwiSnVuZVwiLFwiSnVseVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9jdG9iZXJcIixcIk5vdmVtYmVyXCIsXCJEZWNlbWJlclwiXSxzaG9ydE1vbnRoczpbXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdLGRheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sc2hvcnREYXlzOltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSx0b29sYmFyOntleHBvcnRUb1NWRzpcIkRvd25sb2FkIFNWR1wiLGV4cG9ydFRvUE5HOlwiRG93bmxvYWQgUE5HXCIsZXhwb3J0VG9DU1Y6XCJEb3dubG9hZCBDU1ZcIixtZW51OlwiTWVudVwiLHNlbGVjdGlvbjpcIlNlbGVjdGlvblwiLHNlbGVjdGlvblpvb206XCJTZWxlY3Rpb24gWm9vbVwiLHpvb21JbjpcIlpvb20gSW5cIix6b29tT3V0OlwiWm9vbSBPdXRcIixwYW46XCJQYW5uaW5nXCIscmVzZXQ6XCJSZXNldCBab29tXCJ9fX0sRz1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXtGKHRoaXMseSksdGhpcy55QXhpcz17c2hvdzohMCxzaG93QWx3YXlzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNlcmllc05hbWU6dm9pZCAwLG9wcG9zaXRlOiExLHJldmVyc2VkOiExLGxvZ2FyaXRobWljOiExLGxvZ0Jhc2U6MTAsdGlja0Ftb3VudDp2b2lkIDAsc3RlcFNpemU6dm9pZCAwLGZvcmNlTmljZVNjYWxlOiExLG1heDp2b2lkIDAsbWluOnZvaWQgMCxmbG9hdGluZzohMSxkZWNpbWFsc0luRmxvYXQ6dm9pZCAwLGxhYmVsczp7c2hvdzohMCxtaW5XaWR0aDowLG1heFdpZHRoOjE2MCxvZmZzZXRYOjAsb2Zmc2V0WTowLGFsaWduOnZvaWQgMCxyb3RhdGU6MCxwYWRkaW5nOjIwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMXB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sZm9ybWF0dGVyOnZvaWQgMH0sYXhpc0JvcmRlcjp7c2hvdzohMSxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMSxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDo2LG9mZnNldFg6MCxvZmZzZXRZOjB9LHRpdGxlOnt0ZXh0OnZvaWQgMCxyb3RhdGU6LTkwLG9mZnNldFk6MCxvZmZzZXRYOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sdG9vbHRpcDp7ZW5hYmxlZDohMSxvZmZzZXRYOjB9LGNyb3NzaGFpcnM6e3Nob3c6ITAscG9zaXRpb246XCJmcm9udFwiLHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6MH19fSx0aGlzLnBvaW50QW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx5Om51bGwseUF4aXNJbmRleDowLHNlcmllc0luZGV4OnZvaWQgMCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsbWFya2VyOntzaXplOjQsZmlsbENvbG9yOlwiI2ZmZlwiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlQ29sb3I6XCIjMzMzXCIsc2hhcGU6XCJjaXJjbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHJhZGl1czoyLGNzc0NsYXNzOlwiXCJ9LGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fSxjdXN0b21TVkc6e1NWRzp2b2lkIDAsY3NzQ2xhc3M6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjB9LGltYWdlOntwYXRoOnZvaWQgMCx3aWR0aDoyMCxoZWlnaHQ6MjAsb2Zmc2V0WDowLG9mZnNldFk6MH19LHRoaXMueUF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseTowLHkyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOlwiI2MyYzJjMlwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOlwiMTAwJVwiLHlBeGlzSW5kZXg6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwiZW5kXCIscG9zaXRpb246XCJyaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOi0zLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy54QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx4OjAseDI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9yaWVudGF0aW9uOlwidmVydGljYWxcIixwb3NpdGlvbjpcInRvcFwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnRleHQ9e3g6MCx5OjAsdGV4dDpcIlwiLHRleHRBbmNob3I6XCJzdGFydFwiLGZvcmVDb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxM3B4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsYXBwZW5kVG86XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyUmFkaXVzOjAsYm9yZGVyV2lkdGg6MCxwYWRkaW5nTGVmdDo0LHBhZGRpbmdSaWdodDo0LHBhZGRpbmdUb3A6MixwYWRkaW5nQm90dG9tOjJ9fXJldHVybiBZKHksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57YW5ub3RhdGlvbnM6e3lheGlzOlt0aGlzLnlBeGlzQW5ub3RhdGlvbl0seGF4aXM6W3RoaXMueEF4aXNBbm5vdGF0aW9uXSxwb2ludHM6W3RoaXMucG9pbnRBbm5vdGF0aW9uXSx0ZXh0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdfSxjaGFydDp7YW5pbWF0aW9uczp7ZW5hYmxlZDohMCxlYXNpbmc6XCJlYXNlaW5vdXRcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZGVsYXk6MTUwLGVuYWJsZWQ6ITB9LGR5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6MzUwfX0sYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbG9jYWxlczpbSF0sZGVmYXVsdExvY2FsZTpcImVuXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHRvcDoyLGxlZnQ6MixibHVyOjQsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouMzV9LGV2ZW50czp7YW5pbWF0aW9uRW5kOnZvaWQgMCxiZWZvcmVNb3VudDp2b2lkIDAsbW91bnRlZDp2b2lkIDAsdXBkYXRlZDp2b2lkIDAsY2xpY2s6dm9pZCAwLG1vdXNlTW92ZTp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAseEF4aXNMYWJlbENsaWNrOnZvaWQgMCxsZWdlbmRDbGljazp2b2lkIDAsbWFya2VyQ2xpY2s6dm9pZCAwLHNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50U2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUVudGVyOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUxlYXZlOnZvaWQgMCxiZWZvcmVab29tOnZvaWQgMCxiZWZvcmVSZXNldFpvb206dm9pZCAwLHpvb21lZDp2b2lkIDAsc2Nyb2xsZWQ6dm9pZCAwLGJydXNoU2Nyb2xsZWQ6dm9pZCAwfSxmb3JlQ29sb3I6XCIjMzczZDNmXCIsZm9udEZhbWlseTpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCJhdXRvXCIscGFyZW50SGVpZ2h0T2Zmc2V0OjE1LHJlZHJhd09uUGFyZW50UmVzaXplOiEwLHJlZHJhd09uV2luZG93UmVzaXplOiEwLGlkOnZvaWQgMCxncm91cDp2b2lkIDAsbm9uY2U6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc2VsZWN0aW9uOntlbmFibGVkOiExLHR5cGU6XCJ4XCIsZmlsbDp7Y29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouMX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjQsZGFzaEFycmF5OjN9LHhheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9LHlheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9fSxzcGFya2xpbmU6e2VuYWJsZWQ6ITF9LGJydXNoOntlbmFibGVkOiExLGF1dG9TY2FsZVlheGlzOiEwLHRhcmdldDp2b2lkIDAsdGFyZ2V0czp2b2lkIDB9LHN0YWNrZWQ6ITEsc3RhY2tPbmx5QmFyOiEwLHN0YWNrVHlwZTpcIm5vcm1hbFwiLHRvb2xiYXI6e3Nob3c6ITAsb2Zmc2V0WDowLG9mZnNldFk6MCx0b29sczp7ZG93bmxvYWQ6ITAsc2VsZWN0aW9uOiEwLHpvb206ITAsem9vbWluOiEwLHpvb21vdXQ6ITAscGFuOiEwLHJlc2V0OiEwLGN1c3RvbUljb25zOltdfSxleHBvcnQ6e2Nzdjp7ZmlsZW5hbWU6dm9pZCAwLGNvbHVtbkRlbGltaXRlcjpcIixcIixoZWFkZXJDYXRlZ29yeTpcImNhdGVnb3J5XCIsaGVhZGVyVmFsdWU6XCJ2YWx1ZVwiLGRhdGVGb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBEYXRlKGUpLnRvRGF0ZVN0cmluZygpfX0scG5nOntmaWxlbmFtZTp2b2lkIDB9LHN2Zzp7ZmlsZW5hbWU6dm9pZCAwfX0sYXV0b1NlbGVjdGVkOlwiem9vbVwifSx0eXBlOlwibGluZVwiLHdpZHRoOlwiMTAwJVwiLHpvb206e2VuYWJsZWQ6ITAsdHlwZTpcInhcIixhdXRvU2NhbGVZYXhpczohMSx6b29tZWRBcmVhOntmaWxsOntjb2xvcjpcIiM5MENBRjlcIixvcGFjaXR5Oi40fSxzdHJva2U6e2NvbG9yOlwiIzBENDdBMVwiLG9wYWNpdHk6LjQsd2lkdGg6MX19fX0scGxvdE9wdGlvbnM6e2FyZWE6e2ZpbGxUbzpcIm9yaWdpblwifSxiYXI6e2hvcml6b250YWw6ITEsY29sdW1uV2lkdGg6XCI3MCVcIixiYXJIZWlnaHQ6XCI3MCVcIixkaXN0cmlidXRlZDohMSxib3JkZXJSYWRpdXM6MCxib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImFyb3VuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwiLHJhbmdlQmFyT3ZlcmxhcDohMCxyYW5nZUJhckdyb3VwUm93czohMSxoaWRlWmVyb0JhcnNXaGVuR3JvdXBlZDohMSxpc0R1bWJiZWxsOiExLGR1bWJiZWxsQ29sb3JzOnZvaWQgMCxpc0Z1bm5lbDohMSxpc0Z1bm5lbDNkOiEwLGNvbG9yczp7cmFuZ2VzOltdLGJhY2tncm91bmRCYXJDb2xvcnM6W10sYmFja2dyb3VuZEJhck9wYWNpdHk6MSxiYWNrZ3JvdW5kQmFyUmFkaXVzOjB9LGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwidG9wXCIsbWF4SXRlbXM6MTAwLGhpZGVPdmVyZmxvd2luZ0xhYmVsczohMCxvcmllbnRhdGlvbjpcImhvcml6b250YWxcIix0b3RhbDp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOlwiIzM3M2QzZlwiLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwfX19fSxidWJibGU6e3pTY2FsaW5nOiEwLG1pbkJ1YmJsZVJhZGl1czp2b2lkIDAsbWF4QnViYmxlUmFkaXVzOnZvaWQgMH0sY2FuZGxlc3RpY2s6e2NvbG9yczp7dXB3YXJkOlwiIzAwQjc0NlwiLGRvd253YXJkOlwiI0VGNDAzQ1wifSx3aWNrOnt1c2VGaWxsQ29sb3I6ITB9fSxib3hQbG90Ontjb2xvcnM6e3VwcGVyOlwiIzAwRTM5NlwiLGxvd2VyOlwiIzAwOEZGQlwifX0saGVhdG1hcDp7cmFkaXVzOjIsZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLGRpc3RyaWJ1dGVkOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHRyZWVtYXA6e2VuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxkaXN0cmlidXRlZDohMSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxib3JkZXJSYWRpdXM6NCxkYXRhTGFiZWxzOntmb3JtYXQ6XCJzY2FsZVwifSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e2ludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOlwiNTAlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsaW1hZ2U6dm9pZCAwLGltYWdlV2lkdGg6MTUwLGltYWdlSGVpZ2h0OjE1MCxpbWFnZU9mZnNldFg6MCxpbWFnZU9mZnNldFk6MCxpbWFnZUNsaXBwZWQ6ITAscG9zaXRpb246XCJmcm9udFwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sdHJhY2s6e3Nob3c6ITAsc3RhcnRBbmdsZTp2b2lkIDAsZW5kQW5nbGU6dm9pZCAwLGJhY2tncm91bmQ6XCIjZjJmMmYyXCIsc3Ryb2tlV2lkdGg6XCI5NyVcIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSxkYXRhTGFiZWxzOntzaG93OiEwLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MCxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxNixmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrXCIlXCJ9fSx0b3RhbDp7c2hvdzohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo2MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gdCtpfSwwKS9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCtcIiVcIn19fSxiYXJMYWJlbHM6e2VuYWJsZWQ6ITEsbWFyZ2luOjUsdXNlU2VyaWVzQ29sb3JzOiEwLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGZvbnRTaXplOlwiMTZweFwiLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sb25DbGljazp2b2lkIDB9fSxwaWU6e2N1c3RvbVNjYWxlOjEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGV4cGFuZE9uQ2xpY2s6ITAsZGF0YUxhYmVsczp7b2Zmc2V0OjAsbWluQW5nbGVUb1Nob3dMYWJlbDoxMH0sZG9udXQ6e3NpemU6XCI2NSVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTotMTAsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIyMHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTAsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sdG90YWw6e3Nob3c6ITEsc2hvd0Fsd2F5czohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gdCtpfSwwKX19fX19LHBvbGFyQXJlYTp7cmluZ3M6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3I6XCIjZThlOGU4XCJ9LHNwb2tlczp7c3Ryb2tlV2lkdGg6MSxjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCJ9fSxyYWRhcjp7c2l6ZTp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxwb2x5Z29uczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjZThlOGU4XCIsY29ubmVjdG9yQ29sb3JzOlwiI2U4ZThlOFwiLGZpbGw6e2NvbG9yczp2b2lkIDB9fX19LGNvbG9yczp2b2lkIDAsZGF0YUxhYmVsczp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9PW51bGw/ZTpcIlwifSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZGlzdHJpYnV0ZWQ6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3JzOnZvaWQgMH0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMCxmb3JlQ29sb3I6XCIjZmZmXCIsYm9yZGVyUmFkaXVzOjIscGFkZGluZzo0LG9wYWNpdHk6LjksYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjpcIiNmZmZcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119LGltYWdlOntzcmM6W10sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDB9LHBhdHRlcm46e3N0eWxlOlwic3F1YXJlc1wiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGZvcmVjYXN0RGF0YVBvaW50czp7Y291bnQ6MCxmaWxsT3BhY2l0eTouNSxzdHJva2VXaWR0aDp2b2lkIDAsZGFzaEFycmF5OjR9LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6XCIjZTBlMGUwXCIsc3Ryb2tlRGFzaEFycmF5OjAscG9zaXRpb246XCJiYWNrXCIseGF4aXM6e2xpbmVzOntzaG93OiExfX0seWF4aXM6e2xpbmVzOntzaG93OiEwfX0scm93Ontjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LGNvbHVtbjp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxwYWRkaW5nOnt0b3A6MCxyaWdodDoxMCxib3R0b206MCxsZWZ0OjEyfX0sbGFiZWxzOltdLGxlZ2VuZDp7c2hvdzohMCxzaG93Rm9yU2luZ2xlU2VyaWVzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNob3dGb3JaZXJvU2VyaWVzOiEwLGZsb2F0aW5nOiExLHBvc2l0aW9uOlwiYm90dG9tXCIsaG9yaXpvbnRhbEFsaWduOlwiY2VudGVyXCIsaW52ZXJzZU9yZGVyOiExLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsdG9vbHRpcEhvdmVyRm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOi0yMCxvZmZzZXRZOjQsY3VzdG9tTGVnZW5kSXRlbXM6W10sbGFiZWxzOntjb2xvcnM6dm9pZCAwLHVzZVNlcmllc0NvbG9yczohMX0sbWFya2Vyczp7d2lkdGg6MTIsaGVpZ2h0OjEyLHN0cm9rZVdpZHRoOjAsZmlsbENvbG9yczp2b2lkIDAsc3Ryb2tlQ29sb3I6XCIjZmZmXCIscmFkaXVzOjEyLGN1c3RvbUhUTUw6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDB9LGl0ZW1NYXJnaW46e2hvcml6b250YWw6NSx2ZXJ0aWNhbDoyfSxvbkl0ZW1DbGljazp7dG9nZ2xlRGF0YVNlcmllczohMH0sb25JdGVtSG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITB9fSxtYXJrZXJzOntkaXNjcmV0ZTpbXSxzaXplOjAsY29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcnM6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VPcGFjaXR5Oi45LHN0cm9rZURhc2hBcnJheTowLGZpbGxPcGFjaXR5OjEsc2hhcGU6XCJjaXJjbGVcIix3aWR0aDo4LGhlaWdodDo4LHJhZGl1czoyLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDAsb25EYmxDbGljazp2b2lkIDAsc2hvd051bGxEYXRhUG9pbnRzOiEwLGhvdmVyOntzaXplOnZvaWQgMCxzaXplT2Zmc2V0OjN9fSxub0RhdGE6e3RleHQ6dm9pZCAwLGFsaWduOlwiY2VudGVyXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMH19LHJlc3BvbnNpdmU6W10sc2VyaWVzOnZvaWQgMCxzdGF0ZXM6e25vcm1hbDp7ZmlsdGVyOnt0eXBlOlwibm9uZVwiLHZhbHVlOjB9fSxob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibGlnaHRlblwiLHZhbHVlOi4xfX0sYWN0aXZlOnthbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjohMSxmaWx0ZXI6e3R5cGU6XCJkYXJrZW5cIix2YWx1ZTouNX19fSx0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6XCIxNHB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwfX0sc3VidGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjo1LG9mZnNldFg6MCxvZmZzZXRZOjMwLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6XCJzbW9vdGhcIixsaW5lQ2FwOlwiYnV0dFwiLHdpZHRoOjIsY29sb3JzOnZvaWQgMCxkYXNoQXJyYXk6MCxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHNoYXJlZDohMCxoaWRlRW1wdHlTZXJpZXM6ITEsZm9sbG93Q3Vyc29yOiExLGludGVyc2VjdDohMSxpbnZlcnNlT3JkZXI6ITEsY3VzdG9tOnZvaWQgMCxmaWxsU2VyaWVzQ29sb3I6ITEsdGhlbWU6XCJsaWdodFwiLGNzc0NsYXNzOlwiXCIsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfSxvbkRhdGFzZXRIb3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMX0seDp7c2hvdzohMCxmb3JtYXQ6XCJkZCBNTU1cIixmb3JtYXR0ZXI6dm9pZCAwfSx5Ontmb3JtYXR0ZXI6dm9pZCAwLHRpdGxlOntmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZStcIjogXCI6XCJcIn19fSx6Ontmb3JtYXR0ZXI6dm9pZCAwLHRpdGxlOlwiU2l6ZTogXCJ9LG1hcmtlcjp7c2hvdzohMCxmaWxsQ29sb3JzOnZvaWQgMH0saXRlbXM6e2Rpc3BsYXk6XCJmbGV4XCJ9LGZpeGVkOntlbmFibGVkOiExLHBvc2l0aW9uOlwidG9wUmlnaHRcIixvZmZzZXRYOjAsb2Zmc2V0WTowfX0seGF4aXM6e3R5cGU6XCJjYXRlZ29yeVwiLGNhdGVnb3JpZXM6W10sY29udmVydGVkQ2F0VG9OdW1lcmljOiExLG9mZnNldFg6MCxvZmZzZXRZOjAsb3ZlcndyaXRlQ2F0ZWdvcmllczp2b2lkIDAsbGFiZWxzOntzaG93OiEwLHJvdGF0ZTotNDUscm90YXRlQWx3YXlzOiExLGhpZGVPdmVybGFwcGluZ0xhYmVsczohMCx0cmltOiExLG1pbkhlaWdodDp2b2lkIDAsbWF4SGVpZ2h0OjEyMCxzaG93RHVwbGljYXRlczohMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LG9mZnNldFg6MCxvZmZzZXRZOjAsZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLGRhdGV0aW1lVVRDOiEwLGRhdGV0aW1lRm9ybWF0dGVyOnt5ZWFyOlwieXl5eVwiLG1vbnRoOlwiTU1NICd5eVwiLGRheTpcImRkIE1NTVwiLGhvdXI6XCJISDptbVwiLG1pbnV0ZTpcIkhIOm1tOnNzXCIsc2Vjb25kOlwiSEg6bW06c3NcIn19LGdyb3VwOntncm91cHM6W10sc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sYXhpc0JvcmRlcjp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDpcIjEwMCVcIixoZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITAsY29sb3I6XCIjZTBlMGUwXCIsaGVpZ2h0OjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sc3RlcFNpemU6dm9pZCAwLHRpY2tBbW91bnQ6dm9pZCAwLHRpY2tQbGFjZW1lbnQ6XCJvblwiLG1pbjp2b2lkIDAsbWF4OnZvaWQgMCxyYW5nZTp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxwb3NpdGlvbjpcImJvdHRvbVwiLHRpdGxlOnt0ZXh0OnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGNyb3NzaGFpcnM6e3Nob3c6ITAsd2lkdGg6MSxwb3NpdGlvbjpcImJhY2tcIixvcGFjaXR5Oi45LHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6M30sZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3I6XCIjQjFCOUM0XCIsZ3JhZGllbnQ6e2NvbG9yRnJvbTpcIiNEOEUzRjBcIixjb2xvclRvOlwiI0JFRDFFNlwiLHN0b3BzOlswLDEwMF0sb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi41fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxsZWZ0OjAsdG9wOjAsYmx1cjoxLG9wYWNpdHk6LjR9fSx0b29sdGlwOntlbmFibGVkOiEwLG9mZnNldFk6MCxmb3JtYXR0ZXI6dm9pZCAwLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH19fSx5YXhpczp0aGlzLnlBeGlzLHRoZW1lOnttb2RlOlwibGlnaHRcIixwYWxldHRlOlwicGFsZXR0ZTFcIixtb25vY2hyb21lOntlbmFibGVkOiExLGNvbG9yOlwiIzAwOEZGQlwiLHNoYWRlVG86XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi42NX19fX19XSkseX0oKSxhZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmdyYXBoaWNzPW5ldyBNKHRoaXMuY3R4KSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLmludmVydEF4aXM9ITApLHRoaXMuaGVscGVycz1uZXcgeWUodGhpcyksdGhpcy54QXhpc0Fubm90YXRpb25zPW5ldyBOZSh0aGlzKSx0aGlzLnlBeGlzQW5ub3RhdGlvbnM9bmV3IFdlKHRoaXMpLHRoaXMucG9pbnRzQW5ub3RhdGlvbnM9bmV3IGZlKHRoaXMpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy53LmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKHRoaXMuaW52ZXJzZWRSZXZlcnNlZEF4aXM9ITApLHRoaXMueERpdmlzaW9uPXRoaXMudy5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzfXJldHVybiBZKHksW3trZXk6XCJkcmF3QXhlc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMpe2Zvcih2YXIgdD10aGlzLnlBeGlzQW5ub3RhdGlvbnMuZHJhd1lBeGlzQW5ub3RhdGlvbnMoKSxpPXRoaXMueEF4aXNBbm5vdGF0aW9ucy5kcmF3WEF4aXNBbm5vdGF0aW9ucygpLGE9dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5kcmF3UG9pbnRBbm5vdGF0aW9ucygpLHM9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHI9W3QsaSxhXSxuPVtpLm5vZGUsdC5ub2RlLGEubm9kZV0sbz0wO288MztvKyspZS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocltvXSksIXN8fGUuZ2xvYmFscy5yZXNpemVkfHxlLmdsb2JhbHMuZGF0YUNoYW5nZWR8fGUuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInNjYXR0ZXJcIiYmZS5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCImJmUuZ2xvYmFscy5kYXRhUG9pbnRzPjEmJm5bb10uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIiksZS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpuW29dLGluZGV4OjB9KTt0aGlzLmhlbHBlcnMuYW5ub3RhdGlvbnNCYWNrZ3JvdW5kKCl9fX0se2tleTpcImRyYXdJbWFnZUFubm9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudy5jb25maWcuYW5ub3RhdGlvbnMuaW1hZ2VzLm1hcChmdW5jdGlvbih0LGkpe2UuYWRkSW1hZ2UodCxpKX0pfX0se2tleTpcImRyYXdUZXh0QW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy50ZXh0cy5tYXAoZnVuY3Rpb24odCxpKXtlLmFkZFRleHQodCxpKX0pfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt0aGlzLnhBeGlzQW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uKGUsdCxpKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbihlLHQsaSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3RoaXMucG9pbnRzQW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uKGUsdCxpKX19LHtrZXk6XCJhZGRUZXh0XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLngsYT1lLnkscz1lLnRleHQscj1lLnRleHRBbmNob3Isbj1lLmZvcmVDb2xvcixvPWUuZm9udFNpemUsaD1lLmZvbnRGYW1pbHksYz1lLmZvbnRXZWlnaHQsZD1lLmNzc0NsYXNzLGc9ZS5iYWNrZ3JvdW5kQ29sb3IscD1lLmJvcmRlcldpZHRoLGY9ZS5zdHJva2VEYXNoQXJyYXksYj1lLmJvcmRlclJhZGl1cyxtPWUuYm9yZGVyQ29sb3Isdz1lLmFwcGVuZFRvLEE9dz09PXZvaWQgMD9cIi5hcGV4Y2hhcnRzLXN2Z1wiOncsbD1lLnBhZGRpbmdMZWZ0LHU9bD09PXZvaWQgMD80OmwseD1lLnBhZGRpbmdSaWdodCx2PXg9PT12b2lkIDA/NDp4LGs9ZS5wYWRkaW5nQm90dG9tLFM9az09PXZvaWQgMD8yOmssQz1lLnBhZGRpbmdUb3AsTD1DPT09dm9pZCAwPzI6QyxJPXRoaXMudyx6PXRoaXMuZ3JhcGhpY3MuZHJhd1RleHQoe3g6aSx5OmEsdGV4dDpzLHRleHRBbmNob3I6cnx8XCJzdGFydFwiLGZvbnRTaXplOm98fFwiMTJweFwiLGZvbnRXZWlnaHQ6Y3x8XCJyZWd1bGFyXCIsZm9udEZhbWlseTpofHxJLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGZvcmVDb2xvcjpufHxJLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IsY3NzQ2xhc3M6ZH0pLFQ9SS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihBKTtUJiZULmFwcGVuZENoaWxkKHoubm9kZSk7dmFyIEU9ei5iYm94KCk7aWYocyl7dmFyIFI9dGhpcy5ncmFwaGljcy5kcmF3UmVjdChFLngtdSxFLnktTCxFLndpZHRoK3UrdixFLmhlaWdodCtTK0wsYixnfHxcInRyYW5zcGFyZW50XCIsMSxwLG0sZik7VC5pbnNlcnRCZWZvcmUoUi5ub2RlLHoubm9kZSl9fX0se2tleTpcImFkZEltYWdlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1lLnBhdGgscz1lLngscj1zPT09dm9pZCAwPzA6cyxuPWUueSxvPW49PT12b2lkIDA/MDpuLGg9ZS53aWR0aCxjPWg9PT12b2lkIDA/MjA6aCxkPWUuaGVpZ2h0LGc9ZD09PXZvaWQgMD8yMDpkLHA9ZS5hcHBlbmRUbyxmPXA9PT12b2lkIDA/XCIuYXBleGNoYXJ0cy1zdmdcIjpwLGI9aS5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShhKTtiLnNpemUoYyxnKS5tb3ZlKHIsbyk7dmFyIG09aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihmKTtyZXR1cm4gbSYmbS5hcHBlbmRDaGlsZChiLm5vZGUpLGJ9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6ZSxwdXNoVG9NZW1vcnk6dCxjb250ZXh0OmksdHlwZTpcInhheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFhheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6ZSxwdXNoVG9NZW1vcnk6dCxjb250ZXh0OmksdHlwZTpcInlheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFlheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuaW52ZXJ0QXhpcz09PXZvaWQgMCYmKHRoaXMuaW52ZXJ0QXhpcz1pLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpLHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6ZSxwdXNoVG9NZW1vcnk6dCxjb250ZXh0OmksdHlwZTpcInBvaW50XCIsY29udGV4dE1ldGhvZDppLmFkZFBvaW50QW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJhbXMsaT1lLnB1c2hUb01lbW9yeSxhPWUuY29udGV4dCxzPWUudHlwZSxyPWUuY29udGV4dE1ldGhvZCxuPWEsbz1uLncsaD1vLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnNcIikpLGM9aC5jaGlsZE5vZGVzLmxlbmd0aCsxLGQ9bmV3IEcsZz1PYmplY3QuYXNzaWduKHt9LHM9PT1cInhheGlzXCI/ZC54QXhpc0Fubm90YXRpb246cz09PVwieWF4aXNcIj9kLnlBeGlzQW5ub3RhdGlvbjpkLnBvaW50QW5ub3RhdGlvbikscD1QLmV4dGVuZChnLHQpO3N3aXRjaChzKXtjYXNlXCJ4YXhpc1wiOnRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKHAsaCxjKTticmVhaztjYXNlXCJ5YXhpc1wiOnRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKHAsaCxjKTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKHAsaCxjKX12YXIgZj1vLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChzLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGMsXCInXVwiKSksYj10aGlzLmhlbHBlcnMuYWRkQmFja2dyb3VuZFRvQW5ubyhmLHApO3JldHVybiBiJiZoLmluc2VydEJlZm9yZShiLm5vZGUsZiksaSYmby5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goe2NvbnRleHQ6bixpZDpwLmlkP3AuaWQ6UC5yYW5kb21JZCgpLG1ldGhvZDpyLGxhYmVsOlwiYWRkQW5ub3RhdGlvblwiLHBhcmFtczp0fSksYX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS53LGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIik7dC5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcChmdW5jdGlvbihhLHMpe2EubGFiZWwhPT1cImFkZFRleHRcIiYmYS5sYWJlbCE9PVwiYWRkQW5ub3RhdGlvblwifHx0Lmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKHMsMSl9KSxpPVAubGlzdFRvQXJyYXkoaSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpLGZ1bmN0aW9uKGEpe2Zvcig7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCl9KX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLncsYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLlwiLmNvbmNhdCh0KSk7YSYmKGkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoZnVuY3Rpb24ocyxyKXtzLmlkPT09dCYmaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShyLDEpfSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGZ1bmN0aW9uKHMpe3MucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChzKX0pKX19XSkseX0oKSxCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubW9udGhzMzE9WzEsMyw1LDcsOCwxMCwxMl0sdGhpcy5tb250aHMzMD1bMiw0LDYsOSwxMV0sdGhpcy5kYXlzQ250T2ZZZWFyPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdfXJldHVybiBZKHksW3trZXk6XCJpc1ZhbGlkRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZSE9XCJudW1iZXJcIiYmIWlzTmFOKHRoaXMucGFyc2VEYXRlKGUpKX19LHtrZXk6XCJnZXRUaW1lU3RhbXBcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRGF0ZS5wYXJzZShlKT90aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZShlKS50b0lTT1N0cmluZygpLnN1YnN0cigwLDI1KSkuZ2V0VGltZSgpOm5ldyBEYXRlKGUpLmdldFRpbWUoKTplfX0se2tleTpcImdldERhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUoZSkudG9VVENTdHJpbmcoKSk6bmV3IERhdGUoZSl9fSx7a2V5OlwicGFyc2VEYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9RGF0ZS5wYXJzZShlKTtpZighaXNOYU4odCkpcmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKGUpO3ZhciBpPURhdGUucGFyc2UoZS5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpO3JldHVybiBpPXRoaXMuZ2V0VGltZVN0YW1wKGkpfX0se2tleTpcInBhcnNlRGF0ZVdpdGhUaW1lem9uZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBEYXRlLnBhcnNlKGUucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKX19LHtrZXk6XCJmb3JtYXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncuZ2xvYmFscy5sb2NhbGUsYT10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQyxzPVtcIlxcMFwiXS5jb25jYXQoUShpLm1vbnRocykpLHI9W1wiXHUwMDAxXCJdLmNvbmNhdChRKGkuc2hvcnRNb250aHMpKSxuPVtcIlx1MDAwMlwiXS5jb25jYXQoUShpLmRheXMpKSxvPVtcIlx1MDAwM1wiXS5jb25jYXQoUShpLnNob3J0RGF5cykpO2Z1bmN0aW9uIGgoUyxDKXt2YXIgTD1TK1wiXCI7Zm9yKEM9Q3x8MjtMLmxlbmd0aDxDOylMPVwiMFwiK0w7cmV0dXJuIEx9dmFyIGM9YT9lLmdldFVUQ0Z1bGxZZWFyKCk6ZS5nZXRGdWxsWWVhcigpO3Q9KHQ9KHQ9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5eXkrL2csXCIkMVwiK2MpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5L2csXCIkMVwiK2MudG9TdHJpbmcoKS5zdWJzdHIoMiwyKSkpLnJlcGxhY2UoLyhefFteXFxcXF0peS9nLFwiJDFcIitjKTt2YXIgZD0oYT9lLmdldFVUQ01vbnRoKCk6ZS5nZXRNb250aCgpKSsxO3Q9KHQ9KHQ9KHQ9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTU0rL2csXCIkMVwiK3NbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTS9nLFwiJDFcIityWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTS9nLFwiJDFcIitoKGQpKSkucmVwbGFjZSgvKF58W15cXFxcXSlNL2csXCIkMVwiK2QpO3ZhciBnPWE/ZS5nZXRVVENEYXRlKCk6ZS5nZXREYXRlKCk7dD0odD0odD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0pZGRkZCsvZyxcIiQxXCIrblswXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkL2csXCIkMVwiK29bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkL2csXCIkMVwiK2goZykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWQvZyxcIiQxXCIrZyk7dmFyIHA9YT9lLmdldFVUQ0hvdXJzKCk6ZS5nZXRIb3VycygpLGY9cD4xMj9wLTEyOnA9PT0wPzEyOnA7dD0odD0odD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0pSEgrL2csXCIkMVwiK2gocCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKUgvZyxcIiQxXCIrcCkpLnJlcGxhY2UoLyhefFteXFxcXF0paGgrL2csXCIkMVwiK2goZikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWgvZyxcIiQxXCIrZik7dmFyIGI9YT9lLmdldFVUQ01pbnV0ZXMoKTplLmdldE1pbnV0ZXMoKTt0PSh0PXQucmVwbGFjZSgvKF58W15cXFxcXSltbSsvZyxcIiQxXCIraChiKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pbS9nLFwiJDFcIitiKTt2YXIgbT1hP2UuZ2V0VVRDU2Vjb25kcygpOmUuZ2V0U2Vjb25kcygpO3Q9KHQ9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKXNzKy9nLFwiJDFcIitoKG0pKSkucmVwbGFjZSgvKF58W15cXFxcXSlzL2csXCIkMVwiK20pO3ZhciB3PWE/ZS5nZXRVVENNaWxsaXNlY29uZHMoKTplLmdldE1pbGxpc2Vjb25kcygpO3Q9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmZisvZyxcIiQxXCIraCh3LDMpKSx3PU1hdGgucm91bmQody8xMCksdD10LnJlcGxhY2UoLyhefFteXFxcXF0pZmYvZyxcIiQxXCIraCh3KSksdz1NYXRoLnJvdW5kKHcvMTApO3ZhciBBPXA8MTI/XCJBTVwiOlwiUE1cIjt0PSh0PSh0PXQucmVwbGFjZSgvKF58W15cXFxcXSlmL2csXCIkMVwiK3cpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVRUKy9nLFwiJDFcIitBKSkucmVwbGFjZSgvKF58W15cXFxcXSlUL2csXCIkMVwiK0EuY2hhckF0KDApKTt2YXIgbD1BLnRvTG93ZXJDYXNlKCk7dD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0pdHQrL2csXCIkMVwiK2wpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXQvZyxcIiQxXCIrbC5jaGFyQXQoMCkpO3ZhciB1PS1lLmdldFRpbWV6b25lT2Zmc2V0KCkseD1hfHwhdT9cIlpcIjp1PjA/XCIrXCI6XCItXCI7aWYoIWEpe3ZhciB2PSh1PU1hdGguYWJzKHUpKSU2MDt4Kz1oKE1hdGguZmxvb3IodS82MCkpK1wiOlwiK2godil9dD10LnJlcGxhY2UoLyhefFteXFxcXF0pSy9nLFwiJDFcIit4KTt2YXIgaz0oYT9lLmdldFVUQ0RheSgpOmUuZ2V0RGF5KCkpKzE7cmV0dXJuIHQ9KHQ9KHQ9KHQ9KHQ9dC5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSxcImdcIiksbltrXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChvWzBdLFwiZ1wiKSxvW2tdKSkucmVwbGFjZShuZXcgUmVnRXhwKHNbMF0sXCJnXCIpLHNbZF0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoclswXSxcImdcIikscltkXSkpLnJlcGxhY2UoL1xcXFwoLikvZyxcIiQxXCIpfX0se2tleTpcImdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXBcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53O2EuY29uZmlnLnhheGlzLm1pbiE9PXZvaWQgMCYmKGU9YS5jb25maWcueGF4aXMubWluKSxhLmNvbmZpZy54YXhpcy5tYXghPT12b2lkIDAmJih0PWEuY29uZmlnLnhheGlzLm1heCk7dmFyIHM9dGhpcy5nZXREYXRlKGUpLHI9dGhpcy5nZXREYXRlKHQpLG49dGhpcy5mb3JtYXREYXRlKHMsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIiksbz10aGlzLmZvcm1hdERhdGUocixcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKTtyZXR1cm57bWluTWlsbGlzZWNvbmQ6cGFyc2VJbnQobls2XSwxMCksbWF4TWlsbGlzZWNvbmQ6cGFyc2VJbnQob1s2XSwxMCksbWluU2Vjb25kOnBhcnNlSW50KG5bNV0sMTApLG1heFNlY29uZDpwYXJzZUludChvWzVdLDEwKSxtaW5NaW51dGU6cGFyc2VJbnQobls0XSwxMCksbWF4TWludXRlOnBhcnNlSW50KG9bNF0sMTApLG1pbkhvdXI6cGFyc2VJbnQoblszXSwxMCksbWF4SG91cjpwYXJzZUludChvWzNdLDEwKSxtaW5EYXRlOnBhcnNlSW50KG5bMl0sMTApLG1heERhdGU6cGFyc2VJbnQob1syXSwxMCksbWluTW9udGg6cGFyc2VJbnQoblsxXSwxMCktMSxtYXhNb250aDpwYXJzZUludChvWzFdLDEwKS0xLG1pblllYXI6cGFyc2VJbnQoblswXSwxMCksbWF4WWVhcjpwYXJzZUludChvWzBdLDEwKX19fSx7a2V5OlwiaXNMZWFwWWVhclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlJTQ9PTAmJmUlMTAwIT0wfHxlJTQwMD09MH19LHtrZXk6XCJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0aGlzLmRldGVybWluZURheXNPZk1vbnRocyhlLHQpLWl9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PTM2NTtyZXR1cm4gdGhpcy5pc0xlYXBZZWFyKGUpJiYodD0zNjYpLHR9fSx7a2V5OlwiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLmRheXNDbnRPZlllYXJbdF0raTtyZXR1cm4gdD4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmYSsrLGF9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mTW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT0zMDtzd2l0Y2goZT1QLm1vbnRoTW9kKGUpLCEwKXtjYXNlIHRoaXMubW9udGhzMzAuaW5kZXhPZihlKT4tMTplPT09MiYmKGk9dGhpcy5pc0xlYXBZZWFyKHQpPzI5OjI4KTticmVhaztjYXNlIHRoaXMubW9udGhzMzEuaW5kZXhPZihlKT4tMTpkZWZhdWx0Omk9MzF9cmV0dXJuIGl9fV0pLHl9KCksbmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50b29sdGlwS2V5Rm9ybWF0PVwiZGQgTU1NXCJ9cmV0dXJuIFkoeSxbe2tleTpcInhMYWJlbEZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPXRoaXMudztpZihzLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiJiZzLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPT09dm9pZCAwJiZzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyPT09dm9pZCAwKXt2YXIgcj1uZXcgQih0aGlzLmN0eCk7cmV0dXJuIHIuZm9ybWF0RGF0ZShyLmdldERhdGUodCkscy5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9cmV0dXJuIGUodCxpLGEpfX0se2tleTpcImRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHR9KTplfX0se2tleTpcImRlZmF1bHRZRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudztyZXR1cm4gUC5pc051bWJlcihlKSYmKGU9YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWwhPT0wP2UudG9GaXhlZCh0LmRlY2ltYWxzSW5GbG9hdCE9PXZvaWQgMD90LmRlY2ltYWxzSW5GbG9hdDphLmdsb2JhbHMueVZhbHVlRGVjaW1hbCk6YS5nbG9iYWxzLm1heFlBcnJbaV0tYS5nbG9iYWxzLm1pbllBcnJbaV08NT9lLnRvRml4ZWQoMSk6ZS50b0ZpeGVkKDApKSxlfX0se2tleTpcInNldExhYmVsRm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudztyZXR1cm4gdC5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1mdW5jdGlvbihpKXtyZXR1cm4gZS5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihpKX0sdC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPWZ1bmN0aW9uKGkpe3JldHVybiBlLmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGkpfSx0Lmdsb2JhbHMudHRaRm9ybWF0dGVyPWZ1bmN0aW9uKGkpe3JldHVybiBpfSx0Lmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyPWZ1bmN0aW9uKGkpe3JldHVybiBlLmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGkpfSx0LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyIT09dm9pZCAwP3QuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9dC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcjp0Lmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKGkpe2lmKFAuaXNOdW1iZXIoaSkpe2lmKCF0LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnQuY29uZmlnLnhheGlzLnR5cGU9PT1cIm51bWVyaWNcIil7aWYoUC5pc051bWJlcih0LmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpKXJldHVybiBpLnRvRml4ZWQodC5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KTt2YXIgYT10Lmdsb2JhbHMubWF4WC10Lmdsb2JhbHMubWluWDtyZXR1cm4gYT4wJiZhPDEwMD9pLnRvRml4ZWQoMSk6aS50b0ZpeGVkKDApfXJldHVybiB0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0Lmdsb2JhbHMubWF4WS10Lmdsb2JhbHMubWluWUFycjw0P2kudG9GaXhlZCgxKTppLnRvRml4ZWQoMCl9cmV0dXJuIGl9LHR5cGVvZiB0LmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyPT1cImZ1bmN0aW9uXCI/dC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPXQuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXI6dC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPXQuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsdHlwZW9mIHQuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyPT1cImZ1bmN0aW9uXCImJih0Lmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPXQuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyKSwoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy50b29sdGlwLnkpfHx0LmNvbmZpZy50b29sdGlwLnkuZm9ybWF0dGVyIT09dm9pZCAwKSYmKHQuZ2xvYmFscy50dFZhbD10LmNvbmZpZy50b29sdGlwLnkpLHQuY29uZmlnLnRvb2x0aXAuei5mb3JtYXR0ZXIhPT12b2lkIDAmJih0Lmdsb2JhbHMudHRaRm9ybWF0dGVyPXQuY29uZmlnLnRvb2x0aXAuei5mb3JtYXR0ZXIpLHQuY29uZmlnLmxlZ2VuZC5mb3JtYXR0ZXIhPT12b2lkIDAmJih0Lmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyPXQuY29uZmlnLmxlZ2VuZC5mb3JtYXR0ZXIpLHQuY29uZmlnLnlheGlzLmZvckVhY2goZnVuY3Rpb24oaSxhKXtpLmxhYmVscy5mb3JtYXR0ZXIhPT12b2lkIDA/dC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09aS5sYWJlbHMuZm9ybWF0dGVyOnQuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdPWZ1bmN0aW9uKHMpe3JldHVybiB0Lmdsb2JhbHMueHlDaGFydHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gZS5kZWZhdWx0WUZvcm1hdHRlcihyLGksYSl9KTplLmRlZmF1bHRZRm9ybWF0dGVyKHMsaSxhKTpzfX0pLHQuZ2xvYmFsc319LHtrZXk6XCJoZWF0bWFwTGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7aWYoZS5jb25maWcuY2hhcnQudHlwZT09PVwiaGVhdG1hcFwiKXtlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9ZS5nbG9iYWxzLnNlcmllc05hbWVzLnNsaWNlKCk7dmFyIHQ9ZS5nbG9iYWxzLnNlcmllc05hbWVzLnJlZHVjZShmdW5jdGlvbihpLGEpe3JldHVybiBpLmxlbmd0aD5hLmxlbmd0aD9pOmF9LDApO2UuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXg9dCxlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluPXR9fX1dKSx5fSgpLHhlPWZ1bmN0aW9uKHkpe3ZhciBlLHQ9eS5pc1RpbWVsaW5lLGk9eS5jdHgsYT15LnNlcmllc0luZGV4LHM9eS5kYXRhUG9pbnRJbmRleCxyPXkueTEsbj15LnkyLG89eS53LGg9by5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbYV1bc10sYz1vLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbYV1bc10sZD1vLmdsb2JhbHMubGFiZWxzW3NdLGc9by5jb25maWcuc2VyaWVzW2FdLm5hbWU/by5jb25maWcuc2VyaWVzW2FdLm5hbWU6XCJcIixwPW8uZ2xvYmFscy50dEtleUZvcm1hdHRlcixmPW8uY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsYj17dzpvLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyxzdGFydDpoLGVuZDpjfTt0eXBlb2YgZj09XCJmdW5jdGlvblwiJiYoZz1mKGcsYikpLChlPW8uY29uZmlnLnNlcmllc1thXS5kYXRhW3NdKSE9PW51bGwmJmUhPT12b2lkIDAmJmUueCYmKGQ9by5jb25maWcuc2VyaWVzW2FdLmRhdGFbc10ueCksdHx8by5jb25maWcueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIiYmKGQ9bmV3IG5lKGkpLnhMYWJlbEZvcm1hdChvLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZCxkLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBCKGkpLmZvcm1hdERhdGUsdzpvfSkpLHR5cGVvZiBwPT1cImZ1bmN0aW9uXCImJihkPXAoZCxiKSksTnVtYmVyLmlzRmluaXRlKHIpJiZOdW1iZXIuaXNGaW5pdGUobikmJihoPXIsYz1uKTt2YXIgbT1cIlwiLHc9XCJcIixBPW8uZ2xvYmFscy5jb2xvcnNbYV07aWYoby5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcj09PXZvaWQgMClpZihvLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiKXt2YXIgbD1uZXcgQihpKTttPWwuZm9ybWF0RGF0ZShsLmdldERhdGUoaCksby5jb25maWcudG9vbHRpcC54LmZvcm1hdCksdz1sLmZvcm1hdERhdGUobC5nZXREYXRlKGMpLG8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpfWVsc2UgbT1oLHc9YztlbHNlIG09by5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihoKSx3PW8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoYyk7cmV0dXJue3N0YXJ0OmgsZW5kOmMsc3RhcnRWYWw6bSxlbmRWYWw6dyx5bGFiZWw6ZCxjb2xvcjpBLHNlcmllc05hbWU6Z319LG9lPWZ1bmN0aW9uKHkpe3ZhciBlPXkuY29sb3IsdD15LnNlcmllc05hbWUsaT15LnlsYWJlbCxhPXkuc3RhcnQscz15LmVuZCxyPXkuc2VyaWVzSW5kZXgsbj15LmRhdGFQb2ludEluZGV4LG89eS5jdHgudG9vbHRpcC50b29sdGlwTGFiZWxzLmdldEZvcm1hdHRlcnMocik7YT1vLnlMYkZvcm1hdHRlcihhKSxzPW8ueUxiRm9ybWF0dGVyKHMpO3ZhciBoPW8ueUxiRm9ybWF0dGVyKHkudy5nbG9iYWxzLnNlcmllc1tyXVtuXSksYz1gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBzdGFydC12YWx1ZVwiPlxuICBgLmNvbmNhdChhLGBcbiAgPC9zcGFuPiA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPi08L3NwYW4+IDxzcGFuIGNsYXNzPVwidmFsdWUgZW5kLXZhbHVlXCI+XG4gIGApLmNvbmNhdChzLGBcbiAgPC9zcGFuPmApO3JldHVybic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyXCI+PGRpdj4gPHNwYW4gY2xhc3M9XCJzZXJpZXMtbmFtZVwiIHN0eWxlPVwiY29sb3I6ICcrZSsnXCI+JysodHx8XCJcIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz1cImNhdGVnb3J5XCI+JytpK1wiOiA8L3NwYW4+IFwiKyh5LncuZ2xvYmFscy5jb21ib0NoYXJ0cz95LncuY29uZmlnLnNlcmllc1tyXS50eXBlPT09XCJyYW5nZUFyZWFcInx8eS53LmNvbmZpZy5zZXJpZXNbcl0udHlwZT09PVwicmFuZ2VCYXJcIj9jOlwiPHNwYW4+XCIuY29uY2F0KGgsXCI8L3NwYW4+XCIpOmMpK1wiIDwvZGl2PjwvZGl2PlwifSxsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMub3B0cz1lfXJldHVybiBZKHksW3trZXk6XCJoaWRlWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3B0cy55YXhpc1swXS5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS50aXRsZS50ZXh0PVwiXCIsdGhpcy5vcHRzLnlheGlzWzBdLmF4aXNCb3JkZXIuc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uYXhpc1RpY2tzLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLmZsb2F0aW5nPSEwfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6NSxjdXJ2ZTpcInN0cmFpZ2h0XCJ9LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5Olwic3BhcmtsaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGlkZVlBeGlzKCksUC5leHRlbmQoZSx7Z3JpZDp7c2hvdzohMSxwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH19LGxlZ2VuZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleTpcImJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExLGFuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxwbG90T3B0aW9uczp7YmFyOntkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwicm91bmRcIn0sZmlsbDp7b3BhY2l0eTouODV9LGxlZ2VuZDp7bWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sdGlja1BsYWNlbWVudDpcImJldHdlZW5cIixjcm9zc2hhaXJzOnt3aWR0aDpcImJhcldpZHRoXCIscG9zaXRpb246XCJiYWNrXCIsZmlsbDp7dHlwZTpcImdyYWRpZW50XCJ9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiZnVubmVsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRlWUF4aXMoKSxYKFgoe30sdGhpcy5iYXIoKSkse30se2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJsaW5lYXJcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZW5hYmxlZDohMX19fSxwbG90T3B0aW9uczp7YmFyOntob3Jpem9udGFsOiEwLGJvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiYXJvdW5kXCIsYm9yZGVyUmFkaXVzOjAsZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX19KX19LHtrZXk6XCJjYW5kbGVzdGlja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm57c3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMzMzXCJdfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24odCl7dmFyIGk9dC5zZXJpZXNJbmRleCxhPXQuZGF0YVBvaW50SW5kZXgscz10Lnc7cmV0dXJuIGUuX2dldEJveFRvb2x0aXAocyxpLGEsW1wiT3BlblwiLFwiSGlnaFwiLFwiXCIsXCJMb3dcIixcIkNsb3NlXCJdLFwiY2FuZGxlc3RpY2tcIil9fSxzdGF0ZXM6e2FjdGl2ZTp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcImJveFBsb3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiExfX19LHN0cm9rZTp7d2lkdGg6MSxjb2xvcnM6W1wiIzI0MjkyZVwiXX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbih0KXt2YXIgaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXQudztyZXR1cm4gZS5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJNaW5pbXVtXCIsXCJRMVwiLFwiTWVkaWFuXCIsXCJRM1wiLFwiTWF4aW11bVwiXSxcImJveFBsb3RcIil9fSxtYXJrZXJzOntzaXplOjUsc3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjMTExXCJ9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInJhbmdlQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2FuaW1hdGVHcmFkdWFsbHk6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDpcInNxdWFyZVwifSxwbG90T3B0aW9uczp7YmFyOntib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKGUsdCl7dC5jdHg7dmFyIGk9dC5zZXJpZXNJbmRleCxhPXQuZGF0YVBvaW50SW5kZXgscz10Lncscj1mdW5jdGlvbigpe3ZhciBuPXMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW2FdO3JldHVybiBzLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV0tbn07cmV0dXJuIHMuZ2xvYmFscy5jb21ib0NoYXJ0cz9zLmNvbmZpZy5zZXJpZXNbaV0udHlwZT09PVwicmFuZ2VCYXJcInx8cy5jb25maWcuc2VyaWVzW2ldLnR5cGU9PT1cInJhbmdlQXJlYVwiP3IoKTplOnIoKX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sbWFya2Vyczp7c2l6ZToxMH0sdG9vbHRpcDp7c2hhcmVkOiExLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24oZSl7cmV0dXJuIGUudy5jb25maWcucGxvdE9wdGlvbnMmJmUudy5jb25maWcucGxvdE9wdGlvbnMuYmFyJiZlLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsP2Z1bmN0aW9uKHQpe3ZhciBpPXhlKFgoWCh7fSx0KSx7fSx7aXNUaW1lbGluZTohMH0pKSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxuPWkuc3RhcnRWYWwsbz1pLmVuZFZhbDtyZXR1cm4gb2UoWChYKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpuLGVuZDpvfSkpfShlKTpmdW5jdGlvbih0KXt2YXIgaT14ZSh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxuPWkuc3RhcnQsbz1pLmVuZDtyZXR1cm4gb2UoWChYKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpuLGVuZDpvfSkpfShlKX19LHhheGlzOnt0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3N0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiZHVtYmJlbGxcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpO3JldHVybih0PWUucGxvdE9wdGlvbnMuYmFyKSE9PW51bGwmJnQhPT12b2lkIDAmJnQuYmFySGVpZ2h0fHwoZS5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0PTIpLChpPWUucGxvdE9wdGlvbnMuYmFyKSE9PW51bGwmJmkhPT12b2lkIDAmJmkuY29sdW1uV2lkdGh8fChlLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aD0yKSxlfX0se2tleTpcImFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e3dpZHRoOjQsZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fX0sZmlsbDp7dHlwZTpcImdyYWRpZW50XCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMX19fX0se2tleTpcInJhbmdlQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7Y3VydmU6XCJzdHJhaWdodFwiLHdpZHRoOjB9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLG9wYWNpdHk6LjZ9LG1hcmtlcnM6e3NpemU6MH0sc3RhdGVzOntob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX0sYWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0sdG9vbHRpcDp7aW50ZXJzZWN0OiExLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgaT14ZSh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxuPWkuc3RhcnQsbz1pLmVuZDtyZXR1cm4gb2UoWChYKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpuLGVuZDpvfSkpfShlKX19fX19LHtrZXk6XCJicnVzaFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBQLmV4dGVuZChlLHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOlwic2VsZWN0aW9uXCIsc2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9fX0pfX0se2tleTpcInN0YWNrZWQxMDBcIix2YWx1ZTpmdW5jdGlvbihlKXtlLmRhdGFMYWJlbHM9ZS5kYXRhTGFiZWxzfHx7fSxlLmRhdGFMYWJlbHMuZm9ybWF0dGVyPWUuZGF0YUxhYmVscy5mb3JtYXR0ZXJ8fHZvaWQgMDt2YXIgdD1lLmRhdGFMYWJlbHMuZm9ybWF0dGVyO3JldHVybiBlLnlheGlzLmZvckVhY2goZnVuY3Rpb24oaSxhKXtlLnlheGlzW2FdLm1pbj0wLGUueWF4aXNbYV0ubWF4PTEwMH0pLGUuY2hhcnQudHlwZT09PVwiYmFyXCImJihlLmRhdGFMYWJlbHMuZm9ybWF0dGVyPXR8fGZ1bmN0aW9uKGkpe3JldHVybiB0eXBlb2YgaT09XCJudW1iZXJcIiYmaT9pLnRvRml4ZWQoMCkrXCIlXCI6aX0pLGV9fSx7a2V5Olwic3RhY2tlZEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuYmFyKCk7cmV0dXJuIFgoWCh7fSxlKSx7fSx7cGxvdE9wdGlvbnM6WChYKHt9LGUucGxvdE9wdGlvbnMpLHt9LHtiYXI6WChYKHt9LGUucGxvdE9wdGlvbnMuYmFyKSx7fSx7Ym9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJlbmRcIixib3JkZXJSYWRpdXNXaGVuU3RhY2tlZDpcImxhc3RcIn0pfSl9KX19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljPSEwLGV9fSx7a2V5OlwiY29udmVydENhdFRvTnVtZXJpY1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe2UueGF4aXMudHlwZT1cIm51bWVyaWNcIixlLnhheGlzLmxhYmVscz1lLnhheGlzLmxhYmVsc3x8e30sZS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPWUueGF4aXMubGFiZWxzLmZvcm1hdHRlcnx8ZnVuY3Rpb24ocil7cmV0dXJuIFAuaXNOdW1iZXIocik/TWF0aC5mbG9vcihyKTpyfTt2YXIgYT1lLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIscz1lLnhheGlzLmNhdGVnb3JpZXMmJmUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg/ZS54YXhpcy5jYXRlZ29yaWVzOmUubGFiZWxzO3JldHVybiBpJiZpLmxlbmd0aCYmKHM9aS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIEFycmF5LmlzQXJyYXkocik/cjpTdHJpbmcocil9KSkscyYmcy5sZW5ndGgmJihlLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIFAuaXNOdW1iZXIocik/YShzW01hdGguZmxvb3IociktMV0pOmEocil9KSxlLnhheGlzLmNhdGVnb3JpZXM9W10sZS5sYWJlbHM9W10sZS54YXhpcy50aWNrQW1vdW50PWUueGF4aXMudGlja0Ftb3VudHx8XCJkYXRhUG9pbnRzXCIsZX19LHtrZXk6XCJidWJibGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsaW52ZXJzZTohMCxzaGFkZUludGVuc2l0eTouNTUsb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi44fX19fX0se2tleTpcInNjYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6MSxob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleTpcImhlYXRtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjpcInRvcFwiLG1hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIsc2l6ZToxMCxvZmZzZXRZOjJ9fSxncmlkOntwYWRkaW5nOntyaWdodDoyMH19fX19LHtrZXk6XCJ0cmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3pvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntzdHlsZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsY29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mixjb2xvcnM6W1wiI2ZmZlwiXX0sbGVnZW5kOntzaG93OiExfSxmaWxsOntncmFkaWVudDp7c3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCx4OntzaG93OiExfX0sZ3JpZDp7cGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7Y3Jvc3NoYWlyczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX19fX19LHtrZXk6XCJwaWVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcImRvbnV0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjM1LHN0b3BzOls4MCwxMDBdLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjF9fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicG9sYXJBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ9dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ/dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ6Nix7Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCgxKStcIiVcIn0sZW5hYmxlZDohMX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjJ9LGZpbGw6e29wYWNpdHk6Ljd9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJyYWRhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT10aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk/dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZOjYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTFweFwifX0sc3Ryb2tlOnt3aWR0aDoyfSxtYXJrZXJzOntzaXplOjMsc3Ryb2tlV2lkdGg6MSxzdHJva2VPcGFjaXR5OjF9LGZpbGw6e29wYWNpdHk6LjJ9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITAsZm9sbG93Q3Vyc29yOiEwfSxncmlkOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN0eWxlOntjb2xvcnM6W1wiI2E4YThhOFwiXSxmb250U2l6ZTpcIjExcHhcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3Nob3c6ITF9fX19fSx7a2V5OlwicmFkaWFsQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6ODAwfX0sdG9vbGJhcjp7c2hvdzohMX19LGZpbGw6e2dyYWRpZW50OntzaGFkZTpcImRhcmtcIixzaGFkZUludGVuc2l0eTouNCxpbnZlcnNlQ29sb3JzOiExLHR5cGU6XCJkaWFnb25hbDJcIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOlwicmlnaHRcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMSxmaWxsU2VyaWVzQ29sb3I6ITB9fX19LHtrZXk6XCJfZ2V0Qm94VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7dmFyIHI9ZS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1baV0sbj1lLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtpXSxvPWUuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW3RdW2ldLGg9ZS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1baV0sYz1lLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtpXTtyZXR1cm4gZS5jb25maWcuc2VyaWVzW3RdLnR5cGUmJmUuY29uZmlnLnNlcmllc1t0XS50eXBlIT09cz9gPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXBcIj5cbiAgICAgICAgICBgLmNvbmNhdChlLmNvbmZpZy5zZXJpZXNbdF0ubmFtZT9lLmNvbmZpZy5zZXJpZXNbdF0ubmFtZTpcInNlcmllcy1cIisodCsxKSxcIjogPHN0cm9uZz5cIikuY29uY2F0KGUuZ2xvYmFscy5zZXJpZXNbdF1baV0sYDwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5gKTonPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1ib3ggYXBleGNoYXJ0cy10b29sdGlwLScuY29uY2F0KGUuY29uZmlnLmNoYXJ0LnR5cGUsJ1wiPicpK1wiPGRpdj5cIi5jb25jYXQoYVswXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrcitcIjwvc3Bhbj48L2Rpdj5cIitcIjxkaXY+XCIuY29uY2F0KGFbMV0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK24rXCI8L3NwYW4+PC9kaXY+XCIrKG8/XCI8ZGl2PlwiLmNvbmNhdChhWzJdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStvK1wiPC9zcGFuPjwvZGl2PlwiOlwiXCIpK1wiPGRpdj5cIi5jb25jYXQoYVszXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykraCtcIjwvc3Bhbj48L2Rpdj5cIitcIjxkaXY+XCIuY29uY2F0KGFbNF0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK2MrXCI8L3NwYW4+PC9kaXY+PC9kaXY+XCJ9fV0pLHl9KCksSWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLm9wdHM9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUucmVzcG9uc2l2ZU92ZXJyaWRlLGk9dGhpcy5vcHRzLGE9bmV3IEcscz1uZXcgbGUoaSk7dGhpcy5jaGFydFR5cGU9aS5jaGFydC50eXBlLGk9dGhpcy5leHRlbmRZQXhpcyhpKSxpPXRoaXMuZXh0ZW5kQW5ub3RhdGlvbnMoaSk7dmFyIHI9YS5pbml0KCksbj17fTtpZihpJiZVKGkpPT09XCJvYmplY3RcIil7dmFyIG8saCxjLGQsZyxwLGYsYixtPXt9O209W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiYnViYmxlXCIsXCJzY2F0dGVyXCIsXCJoZWF0bWFwXCIsXCJ0cmVlbWFwXCIsXCJwaWVcIixcInBvbGFyQXJlYVwiLFwiZG9udXRcIixcInJhZGFyXCIsXCJyYWRpYWxCYXJcIl0uaW5kZXhPZihpLmNoYXJ0LnR5cGUpIT09LTE/c1tpLmNoYXJ0LnR5cGVdKCk6cy5saW5lKCksKG89aS5wbG90T3B0aW9ucykhPT1udWxsJiZvIT09dm9pZCAwJiYoaD1vLmJhcikhPT1udWxsJiZoIT09dm9pZCAwJiZoLmlzRnVubmVsJiYobT1zLmZ1bm5lbCgpKSxpLmNoYXJ0LnN0YWNrZWQmJmkuY2hhcnQudHlwZT09PVwiYmFyXCImJihtPXMuc3RhY2tlZEJhcnMoKSksKGM9aS5jaGFydC5icnVzaCkhPT1udWxsJiZjIT09dm9pZCAwJiZjLmVuYWJsZWQmJihtPXMuYnJ1c2gobSkpLGkuY2hhcnQuc3RhY2tlZCYmaS5jaGFydC5zdGFja1R5cGU9PT1cIjEwMCVcIiYmKGk9cy5zdGFja2VkMTAwKGkpKSwoZD1pLnBsb3RPcHRpb25zKSE9PW51bGwmJmQhPT12b2lkIDAmJihnPWQuYmFyKSE9PW51bGwmJmchPT12b2lkIDAmJmcuaXNEdW1iYmVsbCYmKGk9cy5kdW1iYmVsbChpKSksdGhpcy5jaGVja0ZvckRhcmtUaGVtZSh3aW5kb3cuQXBleCksdGhpcy5jaGVja0ZvckRhcmtUaGVtZShpKSxpLnhheGlzPWkueGF4aXN8fHdpbmRvdy5BcGV4LnhheGlzfHx7fSx0fHwoaS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITEpLCgocD0oaT10aGlzLmNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXModGhpcy5jaGFydFR5cGUsbSxpKSkuY2hhcnQuc3BhcmtsaW5lKSE9PW51bGwmJnAhPT12b2lkIDAmJnAuZW5hYmxlZHx8KGY9d2luZG93LkFwZXguY2hhcnQpIT09bnVsbCYmZiE9PXZvaWQgMCYmKGI9Zi5zcGFya2xpbmUpIT09bnVsbCYmYiE9PXZvaWQgMCYmYi5lbmFibGVkKSYmKG09cy5zcGFya2xpbmUobSkpLG49UC5leHRlbmQocixtKX12YXIgdz1QLmV4dGVuZChuLHdpbmRvdy5BcGV4KTtyZXR1cm4gcj1QLmV4dGVuZCh3LGkpLHI9dGhpcy5oYW5kbGVVc2VySW5wdXRFcnJvcnMocil9fSx7a2V5OlwiY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxzLHI9bmV3IGxlKGkpLG49KGU9PT1cImJhclwifHxlPT09XCJib3hQbG90XCIpJiYoKGE9aS5wbG90T3B0aW9ucyk9PT1udWxsfHxhPT09dm9pZCAwfHwocz1hLmJhcik9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLmhvcml6b250YWwpLG89ZT09PVwicGllXCJ8fGU9PT1cInBvbGFyQXJlYVwifHxlPT09XCJkb251dFwifHxlPT09XCJyYWRhclwifHxlPT09XCJyYWRpYWxCYXJcInx8ZT09PVwiaGVhdG1hcFwiLGg9aS54YXhpcy50eXBlIT09XCJkYXRldGltZVwiJiZpLnhheGlzLnR5cGUhPT1cIm51bWVyaWNcIixjPWkueGF4aXMudGlja1BsYWNlbWVudD9pLnhheGlzLnRpY2tQbGFjZW1lbnQ6dC54YXhpcyYmdC54YXhpcy50aWNrUGxhY2VtZW50O3JldHVybiBufHxvfHwhaHx8Yz09PVwiYmV0d2VlblwifHwoaT1yLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLGl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPW5ldyBHOyhlLnlheGlzPT09dm9pZCAwfHwhZS55YXhpc3x8QXJyYXkuaXNBcnJheShlLnlheGlzKSYmZS55YXhpcy5sZW5ndGg9PT0wKSYmKGUueWF4aXM9e30pLGUueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmd2luZG93LkFwZXgueWF4aXMmJndpbmRvdy5BcGV4LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJihlLnlheGlzPVAuZXh0ZW5kKGUueWF4aXMsd2luZG93LkFwZXgueWF4aXMpKSxlLnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXk/ZS55YXhpcz1bUC5leHRlbmQoaS55QXhpcyxlLnlheGlzKV06ZS55YXhpcz1QLmV4dGVuZEFycmF5KGUueWF4aXMsaS55QXhpcyk7dmFyIGE9ITE7ZS55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe3IubG9nYXJpdGhtaWMmJihhPSEwKX0pO3ZhciBzPWUuc2VyaWVzO3JldHVybiB0JiYhcyYmKHM9dC5jb25maWcuc2VyaWVzKSxhJiZzLmxlbmd0aCE9PWUueWF4aXMubGVuZ3RoJiZzLmxlbmd0aCYmKGUueWF4aXM9cy5tYXAoZnVuY3Rpb24ocixuKXtpZihyLm5hbWV8fChzW25dLm5hbWU9XCJzZXJpZXMtXCIuY29uY2F0KG4rMSkpLGUueWF4aXNbbl0pcmV0dXJuIGUueWF4aXNbbl0uc2VyaWVzTmFtZT1zW25dLm5hbWUsZS55YXhpc1tuXTt2YXIgbz1QLmV4dGVuZChpLnlBeGlzLGUueWF4aXNbMF0pO3JldHVybiBvLnNob3c9ITEsb30pKSxhJiZzLmxlbmd0aD4xJiZzLmxlbmd0aCE9PWUueWF4aXMubGVuZ3RoJiZjb25zb2xlLndhcm4oXCJBIG11bHRpLXNlcmllcyBsb2dhcml0aG1pYyBjaGFydCBzaG91bGQgaGF2ZSBlcXVhbCBudW1iZXIgb2Ygc2VyaWVzIGFuZCB5LWF4ZXNcIiksZX19LHtrZXk6XCJleHRlbmRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmFubm90YXRpb25zPT09dm9pZCAwJiYoZS5hbm5vdGF0aW9ucz17fSxlLmFubm90YXRpb25zLnlheGlzPVtdLGUuYW5ub3RhdGlvbnMueGF4aXM9W10sZS5hbm5vdGF0aW9ucy5wb2ludHM9W10pLGU9dGhpcy5leHRlbmRZQXhpc0Fubm90YXRpb25zKGUpLGU9dGhpcy5leHRlbmRYQXhpc0Fubm90YXRpb25zKGUpLGU9dGhpcy5leHRlbmRQb2ludEFubm90YXRpb25zKGUpfX0se2tleTpcImV4dGVuZFlBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRztyZXR1cm4gZS5hbm5vdGF0aW9ucy55YXhpcz1QLmV4dGVuZEFycmF5KGUuYW5ub3RhdGlvbnMueWF4aXMhPT12b2lkIDA/ZS5hbm5vdGF0aW9ucy55YXhpczpbXSx0LnlBeGlzQW5ub3RhdGlvbiksZX19LHtrZXk6XCJleHRlbmRYQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEc7cmV0dXJuIGUuYW5ub3RhdGlvbnMueGF4aXM9UC5leHRlbmRBcnJheShlLmFubm90YXRpb25zLnhheGlzIT09dm9pZCAwP2UuYW5ub3RhdGlvbnMueGF4aXM6W10sdC54QXhpc0Fubm90YXRpb24pLGV9fSx7a2V5OlwiZXh0ZW5kUG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBHO3JldHVybiBlLmFubm90YXRpb25zLnBvaW50cz1QLmV4dGVuZEFycmF5KGUuYW5ub3RhdGlvbnMucG9pbnRzIT09dm9pZCAwP2UuYW5ub3RhdGlvbnMucG9pbnRzOltdLHQucG9pbnRBbm5vdGF0aW9uKSxlfX0se2tleTpcImNoZWNrRm9yRGFya1RoZW1lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS50aGVtZSYmZS50aGVtZS5tb2RlPT09XCJkYXJrXCImJihlLnRvb2x0aXB8fChlLnRvb2x0aXA9e30pLGUudG9vbHRpcC50aGVtZSE9PVwibGlnaHRcIiYmKGUudG9vbHRpcC50aGVtZT1cImRhcmtcIiksZS5jaGFydC5mb3JlQ29sb3J8fChlLmNoYXJ0LmZvcmVDb2xvcj1cIiNmNmY3ZjhcIiksZS5jaGFydC5iYWNrZ3JvdW5kfHwoZS5jaGFydC5iYWNrZ3JvdW5kPVwiIzQyNDI0MlwiKSxlLnRoZW1lLnBhbGV0dGV8fChlLnRoZW1lLnBhbGV0dGU9XCJwYWxldHRlNFwiKSl9fSx7a2V5OlwiaGFuZGxlVXNlcklucHV0RXJyb3JzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtpZih0LnRvb2x0aXAuc2hhcmVkJiZ0LnRvb2x0aXAuaW50ZXJzZWN0KXRocm93IG5ldyBFcnJvcihcInRvb2x0aXAuc2hhcmVkIGNhbm5vdCBiZSBlbmFibGVkIHdoZW4gdG9vbHRpcC5pbnRlcnNlY3QgaXMgdHJ1ZS4gVHVybiBvZmYgYW55IG90aGVyIG9wdGlvbiBieSBzZXR0aW5nIGl0IHRvIGZhbHNlLlwiKTtpZih0LmNoYXJ0LnR5cGU9PT1cImJhclwiJiZ0LnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsKXtpZih0LnlheGlzLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcihcIk11bHRpcGxlIFkgQXhpcyBmb3IgYmFycyBhcmUgbm90IHN1cHBvcnRlZC4gU3dpdGNoIHRvIGNvbHVtbiBjaGFydCBieSBzZXR0aW5nIHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsPWZhbHNlXCIpO3QueWF4aXNbMF0ucmV2ZXJzZWQmJih0LnlheGlzWzBdLm9wcG9zaXRlPSEwKSx0LnhheGlzLnRvb2x0aXAuZW5hYmxlZD0hMSx0LnlheGlzWzBdLnRvb2x0aXAuZW5hYmxlZD0hMSx0LmNoYXJ0Lnpvb20uZW5hYmxlZD0hMX1yZXR1cm4gdC5jaGFydC50eXBlIT09XCJiYXJcIiYmdC5jaGFydC50eXBlIT09XCJyYW5nZUJhclwifHx0LnRvb2x0aXAuc2hhcmVkJiZ0LnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT1cImJhcldpZHRoXCImJnQuc2VyaWVzLmxlbmd0aD4xJiYodC54YXhpcy5jcm9zc2hhaXJzLndpZHRoPVwidGlja1dpZHRoXCIpLHQuY2hhcnQudHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmdC5jaGFydC50eXBlIT09XCJib3hQbG90XCJ8fHQueWF4aXNbMF0ucmV2ZXJzZWQmJihjb25zb2xlLndhcm4oXCJSZXZlcnNlZCB5LWF4aXMgaW4gXCIuY29uY2F0KHQuY2hhcnQudHlwZSxcIiBjaGFydCBpcyBub3Qgc3VwcG9ydGVkLlwiKSksdC55YXhpc1swXS5yZXZlcnNlZD0hMSksdH19XSkseX0oKSxRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXtGKHRoaXMseSl9cmV0dXJuIFkoeSxbe2tleTpcImluaXRHbG9iYWxWYXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zZXJpZXM9W10sZS5zZXJpZXNDYW5kbGVPPVtdLGUuc2VyaWVzQ2FuZGxlSD1bXSxlLnNlcmllc0NhbmRsZU09W10sZS5zZXJpZXNDYW5kbGVMPVtdLGUuc2VyaWVzQ2FuZGxlQz1bXSxlLnNlcmllc1JhbmdlU3RhcnQ9W10sZS5zZXJpZXNSYW5nZUVuZD1bXSxlLnNlcmllc1JhbmdlPVtdLGUuc2VyaWVzUGVyY2VudD1bXSxlLnNlcmllc0dvYWxzPVtdLGUuc2VyaWVzWD1bXSxlLnNlcmllc1o9W10sZS5zZXJpZXNOYW1lcz1bXSxlLnNlcmllc1RvdGFscz1bXSxlLnNlcmllc0xvZz1bXSxlLnNlcmllc0NvbG9ycz1bXSxlLnN0YWNrZWRTZXJpZXNUb3RhbHM9W10sZS5zZXJpZXNYdmFsdWVzPVtdLGUuc2VyaWVzWXZhbHVlcz1bXSxlLmxhYmVscz1bXSxlLmhhc1hheGlzR3JvdXBzPSExLGUuZ3JvdXBzPVtdLGUuaGFzU2VyaWVzR3JvdXBzPSExLGUuc2VyaWVzR3JvdXBzPVtdLGUuY2F0ZWdvcnlMYWJlbHM9W10sZS50aW1lc2NhbGVMYWJlbHM9W10sZS5ub0xhYmVsc1Byb3ZpZGVkPSExLGUucmVzaXplVGltZXI9bnVsbCxlLnNlbGVjdGlvblJlc2l6ZVRpbWVyPW51bGwsZS5kZWxheWVkRWxlbWVudHM9W10sZS5wb2ludHNBcnJheT1bXSxlLmRhdGFMYWJlbHNSZWN0cz1bXSxlLmlzWE51bWVyaWM9ITEsZS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsZS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExLGUuaXNEYXRhWFlaPSExLGUuaXNNdWx0aUxpbmVYPSExLGUuaXNNdWx0aXBsZVlBeGlzPSExLGUubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblk9TnVtYmVyLk1JTl9WQUxVRSxlLm1pbllBcnI9W10sZS5tYXhZQXJyPVtdLGUubWF4WD0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblg9TnVtYmVyLk1BWF9WQUxVRSxlLmluaXRpYWxNYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLGUuaW5pdGlhbE1pblg9TnVtYmVyLk1BWF9WQUxVRSxlLm1heERhdGU9MCxlLm1pbkRhdGU9TnVtYmVyLk1BWF9WQUxVRSxlLm1pblo9TnVtYmVyLk1BWF9WQUxVRSxlLm1heFo9LU51bWJlci5NQVhfVkFMVUUsZS5taW5YRGlmZj1OdW1iZXIuTUFYX1ZBTFVFLGUueUF4aXNTY2FsZT1bXSxlLnhBeGlzU2NhbGU9bnVsbCxlLnhBeGlzVGlja3NQb3NpdGlvbnM9W10sZS55TGFiZWxzQ29vcmRzPVtdLGUueVRpdGxlQ29vcmRzPVtdLGUuYmFyUGFkRm9yTnVtZXJpY0F4aXM9MCxlLnBhZEhvcml6b250YWw9MCxlLnhSYW5nZT0wLGUueVJhbmdlPVtdLGUuelJhbmdlPTAsZS5kYXRhUG9pbnRzPTAsZS54VGlja0Ftb3VudD0wfX0se2tleTpcImdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57Y2hhcnRJRDpudWxsLGN1aWQ6bnVsbCxldmVudHM6e2JlZm9yZU1vdW50OltdLG1vdW50ZWQ6W10sdXBkYXRlZDpbXSxjbGlja2VkOltdLHNlbGVjdGlvbjpbXSxkYXRhUG9pbnRTZWxlY3Rpb246W10sem9vbWVkOltdLHNjcm9sbGVkOltdfSxjb2xvcnM6W10sY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxmaWxsOntjb2xvcnM6W119LHN0cm9rZTp7Y29sb3JzOltdfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltdfX0scmFkYXJQb2x5Z29uczp7ZmlsbDp7Y29sb3JzOltdfX0sbWFya2Vyczp7Y29sb3JzOltdLHNpemU6ZS5tYXJrZXJzLnNpemUsbGFyZ2VzdFNpemU6MH0sYW5pbWF0aW9uRW5kZWQ6ITEsaXNUb3VjaERldmljZTpcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsaW5pdGlhbFNlcmllczpbXSxsYXN0WEF4aXM6W10sbGFzdFlBeGlzOltdLGNvbHVtblNlcmllczpudWxsLGxhYmVsczpbXSx0aW1lc2NhbGVMYWJlbHM6W10sbm9MYWJlbHNQcm92aWRlZDohMSxhbGxTZXJpZXNDb2xsYXBzZWQ6ITEsY29sbGFwc2VkU2VyaWVzOltdLGNvbGxhcHNlZFNlcmllc0luZGljZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM6W10scmlzaW5nU2VyaWVzOltdLGRhdGFGb3JtYXRYTnVtZXJpYzohMSxjYXB0dXJlZFNlcmllc0luZGV4Oi0xLGNhcHR1cmVkRGF0YVBvaW50SW5kZXg6LTEsc2VsZWN0ZWREYXRhUG9pbnRzOltdLGdvbGRlblBhZGRpbmc6MzUsaW52YWxpZExvZ1NjYWxlOiExLGlnbm9yZVlBeGlzSW5kZXhlczpbXSx5QXhpc1NhbWVTY2FsZUluZGljZXM6W10sbWF4VmFsc0luQXJyYXlJbmRleDowLHJhZGlhbFNpemU6MCxzZWxlY3Rpb246dm9pZCAwLHpvb21FbmFibGVkOmUuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQ9PT1cInpvb21cIiYmZS5jaGFydC50b29sYmFyLnRvb2xzLnpvb20mJmUuY2hhcnQuem9vbS5lbmFibGVkLHBhbkVuYWJsZWQ6ZS5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZD09PVwicGFuXCImJmUuY2hhcnQudG9vbGJhci50b29scy5wYW4sc2VsZWN0aW9uRW5hYmxlZDplLmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkPT09XCJzZWxlY3Rpb25cIiYmZS5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1vdXNlZG93bjohMSxsYXN0Q2xpZW50UG9zaXRpb246e30sdmlzaWJsZVhSYW5nZTp2b2lkIDAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN2Z1dpZHRoOjAsc3ZnSGVpZ2h0OjAsbm9EYXRhOiExLGxvY2FsZTp7fSxkb206e30sbWVtb3J5OnttZXRob2RzVG9FeGVjOltdfSxzaG91bGRBbmltYXRlOiEwLHNraXBMYXN0VGltZWxpbmVsYWJlbDohMSxza2lwRmlyc3RUaW1lbGluZWxhYmVsOiExLGRlbGF5ZWRFbGVtZW50czpbXSxheGlzQ2hhcnRzOiEwLGlzRGF0YVhZWjohMSxyZXNpemVkOiExLHJlc2l6ZVRpbWVyOm51bGwsY29tYm9DaGFydHM6ITEsZGF0YUNoYW5nZWQ6ITEscHJldmlvdXNQYXRoczpbXSxhbGxTZXJpZXNIYXNFcXVhbFg6ITAscG9pbnRzQXJyYXk6W10sZGF0YUxhYmVsc1JlY3RzOltdLGxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzOltdLGhhc051bGxWYWx1ZXM6ITEsZWFzaW5nOm51bGwsem9vbWVkOiExLGdyaWRXaWR0aDowLGdyaWRIZWlnaHQ6MCxyb3RhdGVYTGFiZWxzOiExLGRlZmF1bHRMYWJlbHM6ITEseExhYmVsRm9ybWF0dGVyOnZvaWQgMCx5TGFiZWxGb3JtYXR0ZXJzOltdLHhheGlzVG9vbHRpcEZvcm1hdHRlcjp2b2lkIDAsdHRLZXlGb3JtYXR0ZXI6dm9pZCAwLHR0VmFsOnZvaWQgMCx0dFpGb3JtYXR0ZXI6dm9pZCAwLExJTkVfSEVJR0hUX1JBVElPOjEuNjE4LHhBeGlzTGFiZWxzSGVpZ2h0OjAseEF4aXNHcm91cExhYmVsc0hlaWdodDowLHhBeGlzTGFiZWxzV2lkdGg6MCx5QXhpc0xhYmVsc1dpZHRoOjAsc2NhbGVYOjEsc2NhbGVZOjEsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCx0cmFuc2xhdGVZQXhpc1g6W10seUF4aXNXaWR0aHM6W10sdHJhbnNsYXRlWEF4aXNZOjAsdHJhbnNsYXRlWEF4aXNYOjAsdG9vbHRpcDpudWxsfX19LHtrZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nbG9iYWxWYXJzKGUpO3JldHVybiB0aGlzLmluaXRHbG9iYWxWYXJzKHQpLHQuaW5pdGlhbENvbmZpZz1QLmV4dGVuZCh7fSxlKSx0LmluaXRpYWxTZXJpZXM9UC5jbG9uZShlLnNlcmllcyksdC5sYXN0WEF4aXM9UC5jbG9uZSh0LmluaXRpYWxDb25maWcueGF4aXMpLHQubGFzdFlBeGlzPVAuY2xvbmUodC5pbml0aWFsQ29uZmlnLnlheGlzKSx0fX1dKSx5fSgpLGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5vcHRzPWV9cmV0dXJuIFkoeSxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyBJZSh0aGlzLm9wdHMpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMX0pO3JldHVybntjb25maWc6ZSxnbG9iYWxzOm5ldyBRZSgpLmluaXQoZSl9fX1dKSx5fSgpLHNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub3B0cz1udWxsLHRoaXMuc2VyaWVzSW5kZXg9MH1yZXR1cm4gWSh5LFt7a2V5OlwiY2xpcHBlZEltZ0FyZWFcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10LmNvbmZpZyxhPXBhcnNlSW50KHQuZ2xvYmFscy5ncmlkV2lkdGgsMTApLHM9cGFyc2VJbnQodC5nbG9iYWxzLmdyaWRIZWlnaHQsMTApLHI9YT5zP2E6cyxuPWUuaW1hZ2Usbz0wLGg9MDtlLndpZHRoPT09dm9pZCAwJiZlLmhlaWdodD09PXZvaWQgMD9pLmZpbGwuaW1hZ2Uud2lkdGghPT12b2lkIDAmJmkuZmlsbC5pbWFnZS5oZWlnaHQhPT12b2lkIDA/KG89aS5maWxsLmltYWdlLndpZHRoKzEsaD1pLmZpbGwuaW1hZ2UuaGVpZ2h0KToobz1yKzEsaD1yKToobz1lLndpZHRoLGg9ZS5oZWlnaHQpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJwYXR0ZXJuXCIpO00uc2V0QXR0cnMoYyx7aWQ6ZS5wYXR0ZXJuSUQscGF0dGVyblVuaXRzOmUucGF0dGVyblVuaXRzP2UucGF0dGVyblVuaXRzOlwidXNlclNwYWNlT25Vc2VcIix3aWR0aDpvK1wicHhcIixoZWlnaHQ6aCtcInB4XCJ9KTt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5nbG9iYWxzLlNWR05TLFwiaW1hZ2VcIik7Yy5hcHBlbmRDaGlsZChkKSxkLnNldEF0dHJpYnV0ZU5TKHdpbmRvdy5TVkcueGxpbmssXCJocmVmXCIsbiksTS5zZXRBdHRycyhkLHt4OjAseTowLHByZXNlcnZlQXNwZWN0UmF0aW86XCJub25lXCIsd2lkdGg6bytcInB4XCIsaGVpZ2h0OmgrXCJweFwifSksZC5zdHlsZS5vcGFjaXR5PWUub3BhY2l0eSx0Lmdsb2JhbHMuZG9tLmVsRGVmcy5ub2RlLmFwcGVuZENoaWxkKGMpfX0se2tleTpcImdldFNlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dC5jb25maWcuY2hhcnQudHlwZTtyZXR1cm4oaT09PVwiYmFyXCJ8fGk9PT1cInJhbmdlQmFyXCIpJiZ0LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fGk9PT1cImhlYXRtYXBcInx8aT09PVwidHJlZW1hcFwiP3RoaXMuc2VyaWVzSW5kZXg9ZS5zZXJpZXNOdW1iZXI6dGhpcy5zZXJpZXNJbmRleD1lLnNlcmllc051bWJlciV0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCx0aGlzLnNlcmllc0luZGV4fX0se2tleTpcImZpbGxQYXRoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O3RoaXMub3B0cz1lO3ZhciBpLGEscyxyPXRoaXMudy5jb25maWc7dGhpcy5zZXJpZXNJbmRleD10aGlzLmdldFNlcmllc0luZGV4KGUpO3ZhciBuPXRoaXMuZ2V0RmlsbENvbG9ycygpW3RoaXMuc2VyaWVzSW5kZXhdO3QuZ2xvYmFscy5zZXJpZXNDb2xvcnNbdGhpcy5zZXJpZXNJbmRleF0hPT12b2lkIDAmJihuPXQuZ2xvYmFscy5zZXJpZXNDb2xvcnNbdGhpcy5zZXJpZXNJbmRleF0pLHR5cGVvZiBuPT1cImZ1bmN0aW9uXCImJihuPW4oe3Nlcmllc0luZGV4OnRoaXMuc2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6ZS5kYXRhUG9pbnRJbmRleCx2YWx1ZTplLnZhbHVlLHc6dH0pKTt2YXIgbz1lLmZpbGxUeXBlP2UuZmlsbFR5cGU6dGhpcy5nZXRGaWxsVHlwZSh0aGlzLnNlcmllc0luZGV4KSxoPUFycmF5LmlzQXJyYXkoci5maWxsLm9wYWNpdHkpP3IuZmlsbC5vcGFjaXR5W3RoaXMuc2VyaWVzSW5kZXhdOnIuZmlsbC5vcGFjaXR5O2UuY29sb3ImJihuPWUuY29sb3IpLG58fChuPVwiI2ZmZlwiLGNvbnNvbGUud2FybihcInVuZGVmaW5lZCBjb2xvciAtIEFwZXhDaGFydHNcIikpO3ZhciBjPW47aWYobi5pbmRleE9mKFwicmdiXCIpPT09LTE/bi5sZW5ndGg8OSYmKGM9UC5oZXhUb1JnYmEobixoKSk6bi5pbmRleE9mKFwicmdiYVwiKT4tMSYmKGg9UC5nZXRPcGFjaXR5RnJvbVJHQkEobikpLGUub3BhY2l0eSYmKGg9ZS5vcGFjaXR5KSxvPT09XCJwYXR0ZXJuXCImJihhPXRoaXMuaGFuZGxlUGF0dGVybkZpbGwoe2ZpbGxDb25maWc6ZS5maWxsQ29uZmlnLHBhdHRlcm5GaWxsOmEsZmlsbENvbG9yOm4sZmlsbE9wYWNpdHk6aCxkZWZhdWx0Q29sb3I6Y30pKSxvPT09XCJncmFkaWVudFwiJiYocz10aGlzLmhhbmRsZUdyYWRpZW50RmlsbCh7ZmlsbENvbmZpZzplLmZpbGxDb25maWcsZmlsbENvbG9yOm4sZmlsbE9wYWNpdHk6aCxpOnRoaXMuc2VyaWVzSW5kZXh9KSksbz09PVwiaW1hZ2VcIil7dmFyIGQ9ci5maWxsLmltYWdlLnNyYyxnPWUucGF0dGVybklEP2UucGF0dGVybklEOlwiXCI7dGhpcy5jbGlwcGVkSW1nQXJlYSh7b3BhY2l0eTpoLGltYWdlOkFycmF5LmlzQXJyYXkoZCk/ZS5zZXJpZXNOdW1iZXI8ZC5sZW5ndGg/ZFtlLnNlcmllc051bWJlcl06ZFswXTpkLHdpZHRoOmUud2lkdGg/ZS53aWR0aDp2b2lkIDAsaGVpZ2h0OmUuaGVpZ2h0P2UuaGVpZ2h0OnZvaWQgMCxwYXR0ZXJuVW5pdHM6ZS5wYXR0ZXJuVW5pdHMscGF0dGVybklEOlwicGF0dGVyblwiLmNvbmNhdCh0Lmdsb2JhbHMuY3VpZCkuY29uY2F0KGUuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChnKX0pLGk9XCJ1cmwoI3BhdHRlcm5cIi5jb25jYXQodC5nbG9iYWxzLmN1aWQpLmNvbmNhdChlLnNlcmllc051bWJlcisxKS5jb25jYXQoZyxcIilcIil9ZWxzZSBpPW89PT1cImdyYWRpZW50XCI/czpvPT09XCJwYXR0ZXJuXCI/YTpjO3JldHVybiBlLnNvbGlkJiYoaT1jKSxpfX0se2tleTpcImdldEZpbGxUeXBlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O3JldHVybiBBcnJheS5pc0FycmF5KHQuY29uZmlnLmZpbGwudHlwZSk/dC5jb25maWcuZmlsbC50eXBlW2VdOnQuY29uZmlnLmZpbGwudHlwZX19LHtrZXk6XCJnZXRGaWxsQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmNvbmZpZyxpPXRoaXMub3B0cyxhPVtdO3JldHVybiBlLmdsb2JhbHMuY29tYm9DaGFydHM/ZS5jb25maWcuc2VyaWVzW3RoaXMuc2VyaWVzSW5kZXhdLnR5cGU9PT1cImxpbmVcIj9BcnJheS5pc0FycmF5KGUuZ2xvYmFscy5zdHJva2UuY29sb3JzKT9hPWUuZ2xvYmFscy5zdHJva2UuY29sb3JzOmEucHVzaChlLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk6QXJyYXkuaXNBcnJheShlLmdsb2JhbHMuZmlsbC5jb2xvcnMpP2E9ZS5nbG9iYWxzLmZpbGwuY29sb3JzOmEucHVzaChlLmdsb2JhbHMuZmlsbC5jb2xvcnMpOnQuY2hhcnQudHlwZT09PVwibGluZVwiP0FycmF5LmlzQXJyYXkoZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKGUuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KGUuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT1lLmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKGUuZ2xvYmFscy5maWxsLmNvbG9ycyksaS5maWxsQ29sb3JzIT09dm9pZCAwJiYoYT1bXSxBcnJheS5pc0FycmF5KGkuZmlsbENvbG9ycyk/YT1pLmZpbGxDb2xvcnMuc2xpY2UoKTphLnB1c2goaS5maWxsQ29sb3JzKSksYX19LHtrZXk6XCJoYW5kbGVQYXR0ZXJuRmlsbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlsbENvbmZpZyxpPWUucGF0dGVybkZpbGwsYT1lLmZpbGxDb2xvcixzPWUuZmlsbE9wYWNpdHkscj1lLmRlZmF1bHRDb2xvcixuPXRoaXMudy5jb25maWcuZmlsbDt0JiYobj10KTt2YXIgbz10aGlzLm9wdHMsaD1uZXcgTSh0aGlzLmN0eCksYz1BcnJheS5pc0FycmF5KG4ucGF0dGVybi5zdHJva2VXaWR0aCk/bi5wYXR0ZXJuLnN0cm9rZVdpZHRoW3RoaXMuc2VyaWVzSW5kZXhdOm4ucGF0dGVybi5zdHJva2VXaWR0aCxkPWE7cmV0dXJuIEFycmF5LmlzQXJyYXkobi5wYXR0ZXJuLnN0eWxlKT9pPW4ucGF0dGVybi5zdHlsZVtvLnNlcmllc051bWJlcl0hPT12b2lkIDA/aC5kcmF3UGF0dGVybihuLnBhdHRlcm4uc3R5bGVbby5zZXJpZXNOdW1iZXJdLG4ucGF0dGVybi53aWR0aCxuLnBhdHRlcm4uaGVpZ2h0LGQsYyxzKTpyOmk9aC5kcmF3UGF0dGVybihuLnBhdHRlcm4uc3R5bGUsbi5wYXR0ZXJuLndpZHRoLG4ucGF0dGVybi5oZWlnaHQsZCxjLHMpLGl9fSx7a2V5OlwiaGFuZGxlR3JhZGllbnRGaWxsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maWxsQ29sb3IsaT1lLmZpbGxPcGFjaXR5LGE9ZS5maWxsQ29uZmlnLHM9ZS5pLHI9dGhpcy53LmNvbmZpZy5maWxsO2EmJihyPVgoWCh7fSxyKSxhKSk7dmFyIG4sbz10aGlzLm9wdHMsaD1uZXcgTSh0aGlzLmN0eCksYz1uZXcgUCxkPXIuZ3JhZGllbnQudHlwZSxnPXQscD1yLmdyYWRpZW50Lm9wYWNpdHlGcm9tPT09dm9pZCAwP2k6QXJyYXkuaXNBcnJheShyLmdyYWRpZW50Lm9wYWNpdHlGcm9tKT9yLmdyYWRpZW50Lm9wYWNpdHlGcm9tW3NdOnIuZ3JhZGllbnQub3BhY2l0eUZyb207Zy5pbmRleE9mKFwicmdiYVwiKT4tMSYmKHA9UC5nZXRPcGFjaXR5RnJvbVJHQkEoZykpO3ZhciBmPXIuZ3JhZGllbnQub3BhY2l0eVRvPT09dm9pZCAwP2k6QXJyYXkuaXNBcnJheShyLmdyYWRpZW50Lm9wYWNpdHlUbyk/ci5ncmFkaWVudC5vcGFjaXR5VG9bc106ci5ncmFkaWVudC5vcGFjaXR5VG87aWYoci5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzPT09dm9pZCAwfHxyLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnMubGVuZ3RoPT09MCluPXIuZ3JhZGllbnQuc2hhZGU9PT1cImRhcmtcIj9jLnNoYWRlQ29sb3IoLTEqcGFyc2VGbG9hdChyLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSx0LmluZGV4T2YoXCJyZ2JcIik+LTE/UC5yZ2IyaGV4KHQpOnQpOmMuc2hhZGVDb2xvcihwYXJzZUZsb2F0KHIuZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLHQuaW5kZXhPZihcInJnYlwiKT4tMT9QLnJnYjJoZXgodCk6dCk7ZWxzZSBpZihyLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbby5zZXJpZXNOdW1iZXJdKXt2YXIgYj1yLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbby5zZXJpZXNOdW1iZXJdO249YixiLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYoZj1QLmdldE9wYWNpdHlGcm9tUkdCQShiKSl9ZWxzZSBuPXQ7aWYoci5ncmFkaWVudC5ncmFkaWVudEZyb20mJihnPXIuZ3JhZGllbnQuZ3JhZGllbnRGcm9tKSxyLmdyYWRpZW50LmdyYWRpZW50VG8mJihuPXIuZ3JhZGllbnQuZ3JhZGllbnRUbyksci5ncmFkaWVudC5pbnZlcnNlQ29sb3JzKXt2YXIgbT1nO2c9bixuPW19cmV0dXJuIGcuaW5kZXhPZihcInJnYlwiKT4tMSYmKGc9UC5yZ2IyaGV4KGcpKSxuLmluZGV4T2YoXCJyZ2JcIik+LTEmJihuPVAucmdiMmhleChuKSksaC5kcmF3R3JhZGllbnQoZCxnLG4scCxmLG8uc2l6ZSxyLmdyYWRpZW50LnN0b3BzLHIuZ3JhZGllbnQuY29sb3JTdG9wcyxzKX19XSkseX0oKSxUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJzZXRHbG9iYWxNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7aWYoZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KGUuY29uZmlnLm1hcmtlcnMuc2l6ZSk/ZS5jb25maWcubWFya2Vycy5zaXplOltlLmNvbmZpZy5tYXJrZXJzLnNpemVdLGUuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKGUuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciB0PTA7dDw9ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7dCsrKWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbdF09PT12b2lkIDAmJmUuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaChlLmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIGUuZ2xvYmFscy5tYXJrZXJzLnNpemU9ZS5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gZS5jb25maWcubWFya2Vycy5zaXplfSl9fSx7a2V5OlwicGxvdENoYXJ0TWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzLHI9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDAmJmFyZ3VtZW50c1s0XSxuPXRoaXMudyxvPXQsaD1lLGM9bnVsbCxkPW5ldyBNKHRoaXMuY3R4KSxnPW4uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJm4uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoO2lmKChuLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjB8fHJ8fGcpJiYoYz1kLmdyb3VwKHtjbGFzczpyfHxnP1wiXCI6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KSkuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQobi5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KGgueCkpZm9yKHZhciBwPTA7cDxoLngubGVuZ3RoO3ArKyl7dmFyIGY9aTtpPT09MSYmcD09PTAmJihmPTApLGk9PT0xJiZwPT09MSYmKGY9MSk7dmFyIGI9XCJhcGV4Y2hhcnRzLW1hcmtlclwiO2lmKG4uY29uZmlnLmNoYXJ0LnR5cGUhPT1cImxpbmVcIiYmbi5jb25maWcuY2hhcnQudHlwZSE9PVwiYXJlYVwifHxuLmdsb2JhbHMuY29tYm9DaGFydHN8fG4uY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwoYis9XCIgbm8tcG9pbnRlci1ldmVudHNcIiksKEFycmF5LmlzQXJyYXkobi5jb25maWcubWFya2Vycy5zaXplKT9uLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjA6bi5jb25maWcubWFya2Vycy5zaXplPjApfHxyfHxnKXtQLmlzTnVtYmVyKGgueVtwXSk/Yis9XCIgd1wiLmNvbmNhdChQLnJhbmRvbUlkKCkpOmI9XCJhcGV4Y2hhcnRzLW51bGxwb2ludFwiO3ZhciBtPXRoaXMuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpiLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6Zn0pO24uY29uZmlnLnNlcmllc1tvXS5kYXRhW2ZdJiYobi5jb25maWcuc2VyaWVzW29dLmRhdGFbZl0uZmlsbENvbG9yJiYobS5wb2ludEZpbGxDb2xvcj1uLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtmXS5maWxsQ29sb3IpLG4uY29uZmlnLnNlcmllc1tvXS5kYXRhW2ZdLnN0cm9rZUNvbG9yJiYobS5wb2ludFN0cm9rZUNvbG9yPW4uY29uZmlnLnNlcmllc1tvXS5kYXRhW2ZdLnN0cm9rZUNvbG9yKSksYSYmKG0ucFNpemU9YSksKGgueFtwXTwwfHxoLnhbcF0+bi5nbG9iYWxzLmdyaWRXaWR0aHx8aC55W3BdPC1uLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZXx8aC55W3BdPm4uZ2xvYmFscy5ncmlkSGVpZ2h0K24uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKSYmKG0ucFNpemU9MCksKHM9ZC5kcmF3TWFya2VyKGgueFtwXSxoLnlbcF0sbSkpLmF0dHIoXCJyZWxcIixmKSxzLmF0dHIoXCJqXCIsZikscy5hdHRyKFwiaW5kZXhcIix0KSxzLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLG0ucFNpemUpLG5ldyAkKHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIocyx0LGYpLHRoaXMuYWRkRXZlbnRzKHMpLGMmJmMuYWRkKHMpfWVsc2Ugbi5nbG9iYWxzLnBvaW50c0FycmF5W3RdPT09dm9pZCAwJiYobi5nbG9iYWxzLnBvaW50c0FycmF5W3RdPVtdKSxuLmdsb2JhbHMucG9pbnRzQXJyYXlbdF0ucHVzaChbaC54W3BdLGgueVtwXV0pfXJldHVybiBjfX0se2tleTpcImdldE1hcmtlckNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3NzQ2xhc3MsaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWE9PT12b2lkIDA/bnVsbDphLHI9ZS5maW5pc2hSYWRpdXMsbj1yPT09dm9pZCAwP251bGw6cixvPXRoaXMudyxoPXRoaXMuZ2V0TWFya2VyU3R5bGUoaSksYz1vLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLGQ9by5jb25maWcubWFya2VycztyZXR1cm4gcyE9PW51bGwmJmQuZGlzY3JldGUubGVuZ3RoJiZkLmRpc2NyZXRlLm1hcChmdW5jdGlvbihnKXtnLnNlcmllc0luZGV4PT09aSYmZy5kYXRhUG9pbnRJbmRleD09PXMmJihoLnBvaW50U3Ryb2tlQ29sb3I9Zy5zdHJva2VDb2xvcixoLnBvaW50RmlsbENvbG9yPWcuZmlsbENvbG9yLGM9Zy5zaXplLGgucG9pbnRTaGFwZT1nLnNoYXBlKX0pLHtwU2l6ZTpuPT09bnVsbD9jOm4scFJhZGl1czpkLnJhZGl1cyx3aWR0aDpBcnJheS5pc0FycmF5KGQud2lkdGgpP2Qud2lkdGhbaV06ZC53aWR0aCxoZWlnaHQ6QXJyYXkuaXNBcnJheShkLmhlaWdodCk/ZC5oZWlnaHRbaV06ZC5oZWlnaHQscG9pbnRTdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGQuc3Ryb2tlV2lkdGgpP2Quc3Ryb2tlV2lkdGhbaV06ZC5zdHJva2VXaWR0aCxwb2ludFN0cm9rZUNvbG9yOmgucG9pbnRTdHJva2VDb2xvcixwb2ludEZpbGxDb2xvcjpoLnBvaW50RmlsbENvbG9yLHNoYXBlOmgucG9pbnRTaGFwZXx8KEFycmF5LmlzQXJyYXkoZC5zaGFwZSk/ZC5zaGFwZVtpXTpkLnNoYXBlKSxjbGFzczp0LHBvaW50U3Ryb2tlT3BhY2l0eTpBcnJheS5pc0FycmF5KGQuc3Ryb2tlT3BhY2l0eSk/ZC5zdHJva2VPcGFjaXR5W2ldOmQuc3Ryb2tlT3BhY2l0eSxwb2ludFN0cm9rZURhc2hBcnJheTpBcnJheS5pc0FycmF5KGQuc3Ryb2tlRGFzaEFycmF5KT9kLnN0cm9rZURhc2hBcnJheVtpXTpkLnN0cm9rZURhc2hBcnJheSxwb2ludEZpbGxPcGFjaXR5OkFycmF5LmlzQXJyYXkoZC5maWxsT3BhY2l0eSk/ZC5maWxsT3BhY2l0eVtpXTpkLmZpbGxPcGFjaXR5LHNlcmllc0luZGV4Oml9fX0se2tleTpcImFkZEV2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KTtlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcy5jdHgsZSkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLmN0eCxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuY29uZmlnLm1hcmtlcnMub25DbGljayksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLHQuY29uZmlnLm1hcmtlcnMub25EYmxDbGljayksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsZSkse3Bhc3NpdmU6ITB9KX19LHtrZXk6XCJnZXRNYXJrZXJTdHlsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXQuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyxhPXQuY29uZmlnLm1hcmtlcnMuc3Ryb2tlQ29sb3J8fHQuY29uZmlnLm1hcmtlcnMuc3Ryb2tlQ29sb3JzO3JldHVybntwb2ludFN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoYSk/YVtlXTphLHBvaW50RmlsbENvbG9yOkFycmF5LmlzQXJyYXkoaSk/aVtlXTppfX19XSkseX0oKSxLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZH1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLncscz1uZXcgTSh0aGlzLmN0eCkscj1pLnJlYWxJbmRleCxuPWkucG9pbnRzUG9zLG89aS56UmF0aW8saD1pLmVsUGFyZW50LGM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLVwiLmNvbmNhdChhLmNvbmZpZy5jaGFydC50eXBlKX0pO2lmKGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoYS5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KG4ueCkpZm9yKHZhciBkPTA7ZDxuLngubGVuZ3RoO2QrKyl7dmFyIGc9dCsxLHA9ITA7dD09PTAmJmQ9PT0wJiYoZz0wKSx0PT09MCYmZD09PTEmJihnPTEpO3ZhciBmPTAsYj1hLmdsb2JhbHMubWFya2Vycy5zaXplW3JdO2lmKG8hPT0xLzApe3ZhciBtPWEuY29uZmlnLnBsb3RPcHRpb25zLmJ1YmJsZTtiPWEuZ2xvYmFscy5zZXJpZXNaW3JdW2ddLG0uelNjYWxpbmcmJihiLz1vKSxtLm1pbkJ1YmJsZVJhZGl1cyYmYjxtLm1pbkJ1YmJsZVJhZGl1cyYmKGI9bS5taW5CdWJibGVSYWRpdXMpLG0ubWF4QnViYmxlUmFkaXVzJiZiPm0ubWF4QnViYmxlUmFkaXVzJiYoYj1tLm1heEJ1YmJsZVJhZGl1cyl9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkfHwoZj1iKTt2YXIgdz1uLnhbZF0sQT1uLnlbZF07aWYoZj1mfHwwLEEhPT1udWxsJiZhLmdsb2JhbHMuc2VyaWVzW3JdW2ddIT09dm9pZCAwfHwocD0hMSkscCl7dmFyIGw9dGhpcy5kcmF3UG9pbnQodyxBLGYsYixyLGcsdCk7Yy5hZGQobCl9aC5hZGQoYyl9fX0se2tleTpcImRyYXdQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyLG4pe3ZhciBvPXRoaXMudyxoPXMsYz1uZXcgZ2UodGhpcy5jdHgpLGQ9bmV3ICQodGhpcy5jdHgpLGc9bmV3IHNlKHRoaXMuY3R4KSxwPW5ldyBUZSh0aGlzLmN0eCksZj1uZXcgTSh0aGlzLmN0eCksYj1wLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4OmgsZGF0YVBvaW50SW5kZXg6cixmaW5pc2hSYWRpdXM6by5jb25maWcuY2hhcnQudHlwZT09PVwiYnViYmxlXCJ8fG8uZ2xvYmFscy5jb21ib0NoYXJ0cyYmby5jb25maWcuc2VyaWVzW3NdJiZvLmNvbmZpZy5zZXJpZXNbc10udHlwZT09PVwiYnViYmxlXCI/YTpudWxsfSk7YT1iLnBTaXplO3ZhciBtLHc9Zy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnMsZGF0YVBvaW50SW5kZXg6cixjb2xvcjpiLnBvaW50RmlsbENvbG9yLHBhdHRlcm5Vbml0czpcIm9iamVjdEJvdW5kaW5nQm94XCIsdmFsdWU6by5nbG9iYWxzLnNlcmllc1tzXVtuXX0pO2lmKGIuc2hhcGU9PT1cImNpcmNsZVwiP209Zi5kcmF3Q2lyY2xlKGkpOmIuc2hhcGUhPT1cInNxdWFyZVwiJiZiLnNoYXBlIT09XCJyZWN0XCJ8fChtPWYuZHJhd1JlY3QoMCwwLGIud2lkdGgtYi5wb2ludFN0cm9rZVdpZHRoLzIsYi5oZWlnaHQtYi5wb2ludFN0cm9rZVdpZHRoLzIsYi5wUmFkaXVzKSksby5jb25maWcuc2VyaWVzW2hdLmRhdGFbcl0mJm8uY29uZmlnLnNlcmllc1toXS5kYXRhW3JdLmZpbGxDb2xvciYmKHc9by5jb25maWcuc2VyaWVzW2hdLmRhdGFbcl0uZmlsbENvbG9yKSxtLmF0dHIoe3g6ZS1iLndpZHRoLzItYi5wb2ludFN0cm9rZVdpZHRoLzIseTp0LWIuaGVpZ2h0LzItYi5wb2ludFN0cm9rZVdpZHRoLzIsY3g6ZSxjeTp0LGZpbGw6dyxcImZpbGwtb3BhY2l0eVwiOmIucG9pbnRGaWxsT3BhY2l0eSxzdHJva2U6Yi5wb2ludFN0cm9rZUNvbG9yLHI6YSxcInN0cm9rZS13aWR0aFwiOmIucG9pbnRTdHJva2VXaWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpiLnBvaW50U3Ryb2tlRGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpiLnBvaW50U3Ryb2tlT3BhY2l0eX0pLG8uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIEE9by5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztkLmRyb3BTaGFkb3cobSxBLHMpfWlmKCF0aGlzLmluaXRpYWxBbmltfHxvLmdsb2JhbHMuZGF0YUNoYW5nZWR8fG8uZ2xvYmFscy5yZXNpemVkKW8uZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMDtlbHNle3ZhciBsPW8uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQ7Yy5hbmltYXRlTWFya2VyKG0sMCxiLnNoYXBlPT09XCJjaXJjbGVcIj9hOnt3aWR0aDpiLndpZHRoLGhlaWdodDpiLmhlaWdodH0sbCxvLmdsb2JhbHMuZWFzaW5nLGZ1bmN0aW9uKCl7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmFuaW1hdGlvbkNvbXBsZXRlZChtKX0sMTAwKX0pfWlmKG8uZ2xvYmFscy5kYXRhQ2hhbmdlZCYmYi5zaGFwZT09PVwiY2lyY2xlXCIpaWYodGhpcy5keW5hbWljQW5pbSl7dmFyIHUseCx2LGssUz1vLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQ7KGs9by5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10mJm8uZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdW25dKSE9bnVsbCYmKHU9ay54LHg9ay55LHY9ay5yIT09dm9pZCAwP2sucjphKTtmb3IodmFyIEM9MDtDPG8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO0MrKylvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW0NdLmluZGV4PT09cyYmKFM9MSxhPTApO2U9PT0wJiZ0PT09MCYmKGE9MCksYy5hbmltYXRlQ2lyY2xlKG0se2N4OnUsY3k6eCxyOnZ9LHtjeDplLGN5OnQscjphfSxTLG8uZ2xvYmFscy5lYXNpbmcpfWVsc2UgbS5hdHRyKHtyOmF9KTtyZXR1cm4gbS5hdHRyKHtyZWw6cixqOnIsaW5kZXg6cyxcImRlZmF1bHQtbWFya2VyLXNpemVcIjphfSksZC5zZXRTZWxlY3Rpb25GaWx0ZXIobSxzLHIpLHAuYWRkRXZlbnRzKG0pLG0ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tYXJrZXJcIiksbX19LHtrZXk6XCJjZW50ZXJUZXh0SW5CdWJibGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7cmV0dXJue3k6ZSs9cGFyc2VJbnQodC5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvNH19fV0pLHl9KCksd2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImRhdGFMYWJlbHNDb3JyZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIsbil7dmFyIG89dGhpcy53LGg9ITEsYz1uZXcgTSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGksbiksZD1jLndpZHRoLGc9Yy5oZWlnaHQ7dDwwJiYodD0wKSx0Pm8uZ2xvYmFscy5ncmlkSGVpZ2h0K2cmJih0PW8uZ2xvYmFscy5ncmlkSGVpZ2h0K2cvMiksby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXT09PXZvaWQgMCYmKG8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV09W10pLG8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ucHVzaCh7eDplLHk6dCx3aWR0aDpkLGhlaWdodDpnfSk7dmFyIHA9by5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5sZW5ndGgtMixmPW8uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXSE9PXZvaWQgMD9vLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV1bby5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdLmxlbmd0aC0xXTowO2lmKG8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bcF0hPT12b2lkIDApe3ZhciBiPW8uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bZl07KGU+Yi54K2Iud2lkdGh8fHQ+Yi55K2IuaGVpZ2h0fHx0K2c8Yi55fHxlK2Q8Yi54KSYmKGg9ITApfXJldHVybihzPT09MHx8cikmJihoPSEwKSx7eDplLHk6dCx0ZXh0UmVjdHM6YyxkcmF3bmV4dExhYmVsOmh9fX0se2tleTpcImRyYXdEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS50eXBlLGE9ZS5wb3Mscz1lLmkscj1lLmosbj1lLmlzUmFuZ2VTdGFydCxvPWUuc3Ryb2tlV2lkdGgsaD1vPT09dm9pZCAwPzI6byxjPXRoaXMudyxkPW5ldyBNKHRoaXMuY3R4KSxnPWMuY29uZmlnLmRhdGFMYWJlbHMscD0wLGY9MCxiPXIsbT1udWxsO2lmKCFnLmVuYWJsZWR8fCFBcnJheS5pc0FycmF5KGEueCkpcmV0dXJuIG07bT1kLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO2Zvcih2YXIgdz0wO3c8YS54Lmxlbmd0aDt3KyspaWYocD1hLnhbd10rZy5vZmZzZXRYLGY9YS55W3ddK2cub2Zmc2V0WStoLCFpc05hTihwKSl7cj09PTEmJnc9PT0wJiYoYj0wKSxyPT09MSYmdz09PTEmJihiPTEpO3ZhciBBPWMuZ2xvYmFscy5zZXJpZXNbc11bYl07aT09PVwicmFuZ2VBcmVhXCImJihBPW4/Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bYl06Yy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW2JdKTt2YXIgbD1cIlwiLHU9ZnVuY3Rpb24oeCl7cmV0dXJuIGMuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHgse2N0eDp0LmN0eCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OmIsdzpjfSl9O2MuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJ1YmJsZVwiPyhsPXUoQT1jLmdsb2JhbHMuc2VyaWVzWltzXVtiXSksZj1hLnlbd10sZj1uZXcgS2UodGhpcy5jdHgpLmNlbnRlclRleHRJbkJ1YmJsZShmLHMsYikueSk6QSE9PXZvaWQgMCYmKGw9dShBKSksdGhpcy5wbG90RGF0YUxhYmVsc1RleHQoe3g6cCx5OmYsdGV4dDpsLGk6cyxqOmIscGFyZW50Om0sb2Zmc2V0Q29ycmVjdGlvbjohMCxkYXRhTGFiZWxzQ29uZmlnOmMuY29uZmlnLmRhdGFMYWJlbHN9KX1yZXR1cm4gbX19LHtrZXk6XCJwbG90RGF0YUxhYmVsc1RleHRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1uZXcgTSh0aGlzLmN0eCksYT1lLngscz1lLnkscj1lLmksbj1lLmosbz1lLnRleHQsaD1lLnRleHRBbmNob3IsYz1lLmZvbnRTaXplLGQ9ZS5wYXJlbnQsZz1lLmRhdGFMYWJlbHNDb25maWcscD1lLmNvbG9yLGY9ZS5hbHdheXNEcmF3RGF0YUxhYmVsLGI9ZS5vZmZzZXRDb3JyZWN0aW9uO2lmKCEoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcykmJnQuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCkpe3ZhciBtPXt4OmEseTpzLGRyYXduZXh0TGFiZWw6ITAsdGV4dFJlY3RzOm51bGx9O2ImJihtPXRoaXMuZGF0YUxhYmVsc0NvcnJlY3Rpb24oYSxzLG8scixuLGYscGFyc2VJbnQoZy5zdHlsZS5mb250U2l6ZSwxMCkpKSx0Lmdsb2JhbHMuem9vbWVkfHwoYT1tLngscz1tLnkpLG0udGV4dFJlY3RzJiYoYTwtMjAtbS50ZXh0UmVjdHMud2lkdGh8fGE+dC5nbG9iYWxzLmdyaWRXaWR0aCttLnRleHRSZWN0cy53aWR0aCszMCkmJihvPVwiXCIpO3ZhciB3PXQuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tyXTsoKHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwifHx0LmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiKSYmdC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHx0LmNvbmZpZy5kYXRhTGFiZWxzLmRpc3RyaWJ1dGVkKSYmKHc9dC5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW25dKSx0eXBlb2Ygdz09XCJmdW5jdGlvblwiJiYodz13KHtzZXJpZXM6dC5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om4sdzp0fSkpLHAmJih3PXApO3ZhciBBPWcub2Zmc2V0WCxsPWcub2Zmc2V0WTtpZih0LmNvbmZpZy5jaGFydC50eXBlIT09XCJiYXJcIiYmdC5jb25maWcuY2hhcnQudHlwZSE9PVwicmFuZ2VCYXJcInx8KEE9MCxsPTApLG0uZHJhd25leHRMYWJlbCl7dmFyIHU9aS5kcmF3VGV4dCh7d2lkdGg6MTAwLGhlaWdodDpwYXJzZUludChnLnN0eWxlLmZvbnRTaXplLDEwKSx4OmErQSx5OnMrbCxmb3JlQ29sb3I6dyx0ZXh0QW5jaG9yOmh8fGcudGV4dEFuY2hvcix0ZXh0Om8sZm9udFNpemU6Y3x8Zy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omcuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0Omcuc3R5bGUuZm9udFdlaWdodHx8XCJub3JtYWxcIn0pO2lmKHUuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbFwiLGN4OmEsY3k6c30pLGcuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgeD1nLmRyb3BTaGFkb3c7bmV3ICQodGhpcy5jdHgpLmRyb3BTaGFkb3codSx4KX1kLmFkZCh1KSx0Lmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl09PT12b2lkIDAmJih0Lmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl09W10pLHQuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXS5wdXNoKG4pfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQscz1hLnBhZGRpbmcscj1hLnBhZGRpbmcvMixuPXQud2lkdGgsbz10LmhlaWdodCxoPW5ldyBNKHRoaXMuY3R4KS5kcmF3UmVjdCh0Lngtcyx0Lnktci8yLG4rMipzLG8rcixhLmJvcmRlclJhZGl1cyxpLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kPT09XCJ0cmFuc3BhcmVudFwiP1wiI2ZmZlwiOmkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsYS5vcGFjaXR5LGEuYm9yZGVyV2lkdGgsYS5ib3JkZXJDb2xvcik7cmV0dXJuIGEuZHJvcFNoYWRvdy5lbmFibGVkJiZuZXcgJCh0aGlzLmN0eCkuZHJvcFNoYWRvdyhoLGEuZHJvcFNoYWRvdyksaH19LHtrZXk6XCJkYXRhTGFiZWxzQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O2lmKGUuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImJ1YmJsZVwiKWZvcih2YXIgdD1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscyB0ZXh0XCIpLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXSxzPWEuZ2V0QkJveCgpLHI9bnVsbDtpZihzLndpZHRoJiZzLmhlaWdodCYmKHI9dGhpcy5hZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWwoYSxzKSkscil7YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLm5vZGUsYSk7dmFyIG49YS5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO2UuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWUuZ2xvYmFscy5yZXNpemVkJiYhZS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3IuYW5pbWF0ZSgpLmF0dHIoe2ZpbGw6bn0pOnIuYXR0cih7ZmlsbDpufSksYS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsZS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmZvcmVDb2xvcil9fX19LHtrZXk6XCJicmluZ0ZvcndhcmRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKSxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkXCIpLGE9MDthPHQubGVuZ3RoO2ErKylpJiZpLmluc2VydEJlZm9yZSh0W2FdLGkubmV4dFNpYmxpbmcpfX1dKSx5fSgpLGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcz1cImxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmVcIn1yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0QWxsU2VyaWVzRWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1zZXJpZXNcIil9fSx7a2V5OlwiZ2V0U2VyaWVzQnlOYW1lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWlubmVyIC5hcGV4Y2hhcnRzLXNlcmllc1tzZXJpZXNOYW1lPSdcIi5jb25jYXQoUC5lc2NhcGVTdHJpbmcoZSksXCInXVwiKSl9fSx7a2V5OlwiaXNTZXJpZXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFNlcmllc0J5TmFtZShlKSxpPXBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApO3JldHVybntpc0hpZGRlbjp0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKSxyZWFsSW5kZXg6aX19fSx7a2V5OlwiYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2Z1bmN0aW9uIGEocyl7Zm9yKHZhciByPTA7cjxzLmxlbmd0aDtyKyspc1tyXS5pbmRleD09PXQmJmUubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpfWEoaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcyksYShpLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzKX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmlzU2VyaWVzSGlkZGVuKGUpO3JldHVybiB0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKHQucmVhbEluZGV4LHQuaXNIaWRkZW4pLHQuaXNIaWRkZW59fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaXNTZXJpZXNIaWRkZW4oZSk7dC5pc0hpZGRlbiYmdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyh0LnJlYWxJbmRleCwhMCl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaXNTZXJpZXNIaWRkZW4oZSk7dC5pc0hpZGRlbnx8dGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyh0LnJlYWxJbmRleCwhMSl9fSx7a2V5OlwicmVzZXRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDApfHxhcmd1bWVudHNbMF0sdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXSxhPXRoaXMudyxzPVAuY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpO2EuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLGk/KGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXM9W10sYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcz1bXSk6cz10aGlzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHMpLGEuY29uZmlnLnNlcmllcz1zLGUmJih0JiYoYS5nbG9iYWxzLnpvb21lZD0hMSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSl9fSx7a2V5OlwiZW1wdHlDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy53LGk9MDtpPGUubGVuZ3RoO2krKyl0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpPi0xJiYoZVtpXS5kYXRhPVtdKTtyZXR1cm4gZX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7dHx8KHQ9ZS50YXJnZXQpO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMsIC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIik7aWYoZS50eXBlPT09XCJtb3VzZW1vdmVcIil7dmFyIHM9cGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEscj1udWxsLG49bnVsbDtpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8aS5jb25maWcuY2hhcnQudHlwZT09PVwicmFkaWFsQmFyXCI/aS5nbG9iYWxzLmF4aXNDaGFydHM/KHI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpLG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQocyxcIiddXCIpKSk6cj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHMrMSxcIiddXCIpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ10gcGF0aFwiKSk7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspYVtvXS5jbGFzc0xpc3QuYWRkKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyk7ciE9PW51bGwmJihpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8ci5wYXJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSxyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSxuIT09bnVsbCYmbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcykpfWVsc2UgaWYoZS50eXBlPT09XCJtb3VzZW91dFwiKWZvcih2YXIgaD0wO2g8YS5sZW5ndGg7aCsrKWFbaF0uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0se2tleTpcImhpZ2hsaWdodFJhbmdlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsYT10aGlzLncscz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIikscj1mdW5jdGlvbihvKXtmb3IodmFyIGg9MDtoPHMubGVuZ3RoO2grKylzW2hdLmNsYXNzTGlzdFtvXShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfTtpZihlLnR5cGU9PT1cIm1vdXNlbW92ZVwiKXt2YXIgbj1wYXJzZUludCh0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTtyKFwiYWRkXCIpLGZ1bmN0aW9uKG8pe2Zvcih2YXIgaD0wO2g8cy5sZW5ndGg7aCsrKXt2YXIgYz1wYXJzZUludChzW2hdLmdldEF0dHJpYnV0ZShcInZhbFwiKSwxMCk7Yz49by5mcm9tJiZjPD1vLnRvJiZzW2hdLmNsYXNzTGlzdC5yZW1vdmUoaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19KGEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXNbbl0pfWVsc2UgZS50eXBlPT09XCJtb3VzZW91dFwiJiZyKFwicmVtb3ZlXCIpfX0se2tleTpcImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06XCJhc2NcIix0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpbXSxpPXRoaXMudyxhPTA7aWYoaS5jb25maWcuc2VyaWVzLmxlbmd0aD4xKXtmb3IodmFyIHM9aS5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihuLG8pe3JldHVybiBuLmRhdGEmJm4uZGF0YS5sZW5ndGg+MCYmaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihvKT09PS0xJiYoIWkuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dC5sZW5ndGg9PT0wfHx0Lmxlbmd0aCYmdC5pbmRleE9mKGkuY29uZmlnLnNlcmllc1tvXS50eXBlKT4tMSk/bzotMX0pLHI9ZT09PVwiYXNjXCI/MDpzLmxlbmd0aC0xO2U9PT1cImFzY1wiP3I8cy5sZW5ndGg6cj49MDtlPT09XCJhc2NcIj9yKys6ci0tKWlmKHNbcl0hPT0tMSl7YT1zW3JdO2JyZWFrfX1yZXR1cm4gYX19LHtrZXk6XCJnZXRCYXJTZXJpZXNJbmRpY2VzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuY29tYm9DaGFydHM/dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PVwiYmFyXCJ8fGUudHlwZT09PVwiY29sdW1uXCI/dDotMX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PS0xfSk6dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZnVuY3Rpb24gdChyLG4sbyl7Zm9yKHZhciBoPXJbbl0uY2hpbGROb2RlcyxjPXt0eXBlOm8scGF0aHM6W10scmVhbEluZGV4OnJbbl0uZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIil9LGQ9MDtkPGgubGVuZ3RoO2QrKylpZihoW2RdLmhhc0F0dHJpYnV0ZShcInBhdGhUb1wiKSl7dmFyIGc9aFtkXS5nZXRBdHRyaWJ1dGUoXCJwYXRoVG9cIik7Yy5wYXRocy5wdXNoKHtkOmd9KX1lLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKGMpfWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLFtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2ViYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcInJhZGFyXCJdLmZvckVhY2goZnVuY3Rpb24ocil7Zm9yKHZhciBuLG89KG49cixlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KG4sXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSkpLGg9MDtoPG8ubGVuZ3RoO2grKyl0KG8saCxyKX0pLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcImJ1YmJsZVwiKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJzY2F0dGVyXCIpO3ZhciBpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoZS5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGUuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChyLFwiJ10gcmVjdFwiKSksbz1bXSxoPWZ1bmN0aW9uKGQpe3ZhciBnPWZ1bmN0aW9uKGYpe3JldHVybiBuW2RdLmdldEF0dHJpYnV0ZShmKX0scD17eDpwYXJzZUZsb2F0KGcoXCJ4XCIpKSx5OnBhcnNlRmxvYXQoZyhcInlcIikpLHdpZHRoOnBhcnNlRmxvYXQoZyhcIndpZHRoXCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChnKFwiaGVpZ2h0XCIpKX07by5wdXNoKHtyZWN0OnAsY29sb3I6bltkXS5nZXRBdHRyaWJ1dGUoXCJjb2xvclwiKX0pfSxjPTA7YzxuLmxlbmd0aDtjKyspaChjKTtlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKG8pfSxzPTA7czxpLmxlbmd0aDtzKyspYShzKTtlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzPWUuZ2xvYmFscy5zZXJpZXMpfX0se2tleTpcImhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGUsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoZSxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChhLFwiJ10gY2lyY2xlXCIpKSxyPVtdLG49MDtuPHMubGVuZ3RoO24rKylyLnB1c2goe3g6c1tuXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSx5OnNbbl0uZ2V0QXR0cmlidXRlKFwiY3lcIikscjpzW25dLmdldEF0dHJpYnV0ZShcInJcIil9KTt0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpfX19LHtrZXk6XCJjbGVhclByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSxlLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExfX0se2tleTpcImhhbmRsZU5vRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5jb25maWcubm9EYXRhLGk9bmV3IE0odGhpcy5jdHgpLGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLzIscz1lLmdsb2JhbHMuc3ZnSGVpZ2h0LzIscj1cIm1pZGRsZVwiO2lmKGUuZ2xvYmFscy5ub0RhdGE9ITAsZS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLHQuYWxpZ249PT1cImxlZnRcIj8oYT0xMCxyPVwic3RhcnRcIik6dC5hbGlnbj09PVwicmlnaHRcIiYmKGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksdC52ZXJ0aWNhbEFsaWduPT09XCJ0b3BcIj9zPTUwOnQudmVydGljYWxBbGlnbj09PVwiYm90dG9tXCImJihzPWUuZ2xvYmFscy5zdmdIZWlnaHQtNTApLGErPXQub2Zmc2V0WCxzPXMrcGFyc2VJbnQodC5zdHlsZS5mb250U2l6ZSwxMCkrMit0Lm9mZnNldFksdC50ZXh0IT09dm9pZCAwJiZ0LnRleHQhPT1cIlwiKXt2YXIgbj1pLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6dC50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTp0LnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjp0LnN0eWxlLmNvbG9yLG9wYWNpdHk6MSxjbGFzczpcImFwZXhjaGFydHMtdGV4dC1ub2RhdGFcIn0pO2UuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG4pfX19LHtrZXk6XCJzZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudyxpPTA7aTxlLmxlbmd0aDtpKyspaWYoZVtpXS5sZW5ndGg9PT0wKWZvcih2YXIgYT0wO2E8ZVt0Lmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyllW2ldLnB1c2goMCk7cmV0dXJuIGV9fSx7a2V5OlwiaGFzQWxsU2VyaWVzRXF1YWxYXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ITAsdD10aGlzLncsaT10aGlzLmZpbHRlcmVkU2VyaWVzWCgpLGE9MDthPGkubGVuZ3RoLTE7YSsrKWlmKGlbYV1bMF0hPT1pW2ErMV1bMF0pe2U9ITE7YnJlYWt9cmV0dXJuIHQuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFg9ZSxlfX0se2tleTpcImZpbHRlcmVkU2VyaWVzWFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoPjA/dDpbXX0pO3JldHVybiBlfX1dKSx5fSgpLGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMuc2VyaWVzR29hbHM9W10sdGhpcy5jb3JlVXRpbHM9bmV3IHEodGhpcy5jdHgpfXJldHVybiBZKHksW3trZXk6XCJpc011bHRpRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0Zvcm1hdFhZKCl8fHRoaXMuaXNGb3JtYXQyREFycmF5KCl9fSx7a2V5OlwiaXNGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSx0PW5ldyBpZSh0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD10LmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhIT09dm9pZCAwJiZlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSE9PW51bGwmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS54IT09dm9pZCAwJiZlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0hPT1udWxsKXJldHVybiEwfX0se2tleTpcImlzRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSx0PW5ldyBpZSh0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD10LmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhIT09dm9pZCAwJiZlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSE9PXZvaWQgMCYmZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdIT09bnVsbCYmZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLmNvbnN0cnVjdG9yPT09QXJyYXkpcmV0dXJuITB9fSx7a2V5OlwiaGFuZGxlRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPXRoaXMudy5jb25maWcsYT10aGlzLncuZ2xvYmFscyxzPWkuY2hhcnQudHlwZT09PVwiYm94UGxvdFwifHxpLnNlcmllc1t0XS50eXBlPT09XCJib3hQbG90XCIscj0wO3I8ZVt0XS5kYXRhLmxlbmd0aDtyKyspaWYoZVt0XS5kYXRhW3JdWzFdIT09dm9pZCAwJiYoQXJyYXkuaXNBcnJheShlW3RdLmRhdGFbcl1bMV0pJiZlW3RdLmRhdGFbcl1bMV0ubGVuZ3RoPT09NCYmIXM/dGhpcy50d29EU2VyaWVzLnB1c2goUC5wYXJzZU51bWJlcihlW3RdLmRhdGFbcl1bMV1bM10pKTplW3RdLmRhdGFbcl0ubGVuZ3RoPj01P3RoaXMudHdvRFNlcmllcy5wdXNoKFAucGFyc2VOdW1iZXIoZVt0XS5kYXRhW3JdWzRdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goUC5wYXJzZU51bWJlcihlW3RdLmRhdGFbcl1bMV0pKSxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCksaS54YXhpcy50eXBlPT09XCJkYXRldGltZVwiKXt2YXIgbj1uZXcgRGF0ZShlW3RdLmRhdGFbcl1bMF0pO249bmV3IERhdGUobikuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChuKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaChlW3RdLmRhdGFbcl1bMF0pO2Zvcih2YXIgbz0wO288ZVt0XS5kYXRhLmxlbmd0aDtvKyspZVt0XS5kYXRhW29dWzJdIT09dm9pZCAwJiYodGhpcy50aHJlZURTZXJpZXMucHVzaChlW3RdLmRhdGFbb11bMl0pLGEuaXNEYXRhWFlaPSEwKX19LHtrZXk6XCJoYW5kbGVGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9bmV3IEIodGhpcy5jdHgpLHI9dDthLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KT4tMSYmKHI9dGhpcy5hY3RpdmVTZXJpZXNJbmRleCk7Zm9yKHZhciBuPTA7bjxlW3RdLmRhdGEubGVuZ3RoO24rKyllW3RdLmRhdGFbbl0ueSE9PXZvaWQgMCYmKEFycmF5LmlzQXJyYXkoZVt0XS5kYXRhW25dLnkpP3RoaXMudHdvRFNlcmllcy5wdXNoKFAucGFyc2VOdW1iZXIoZVt0XS5kYXRhW25dLnlbZVt0XS5kYXRhW25dLnkubGVuZ3RoLTFdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goUC5wYXJzZU51bWJlcihlW3RdLmRhdGFbbl0ueSkpKSxlW3RdLmRhdGFbbl0uZ29hbHMhPT12b2lkIDAmJkFycmF5LmlzQXJyYXkoZVt0XS5kYXRhW25dLmdvYWxzKT8odGhpcy5zZXJpZXNHb2Fsc1t0XT09PXZvaWQgMCYmKHRoaXMuc2VyaWVzR29hbHNbdF09W10pLHRoaXMuc2VyaWVzR29hbHNbdF0ucHVzaChlW3RdLmRhdGFbbl0uZ29hbHMpKToodGhpcy5zZXJpZXNHb2Fsc1t0XT09PXZvaWQgMCYmKHRoaXMuc2VyaWVzR29hbHNbdF09W10pLHRoaXMuc2VyaWVzR29hbHNbdF0ucHVzaChudWxsKSk7Zm9yKHZhciBvPTA7bzxlW3JdLmRhdGEubGVuZ3RoO28rKyl7dmFyIGg9dHlwZW9mIGVbcl0uZGF0YVtvXS54PT1cInN0cmluZ1wiLGM9QXJyYXkuaXNBcnJheShlW3JdLmRhdGFbb10ueCksZD0hYyYmISFzLmlzVmFsaWREYXRlKGVbcl0uZGF0YVtvXS54KTtpZihofHxkKWlmKGh8fGkueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgZz1hLmlzQmFySG9yaXpvbnRhbCYmYS5pc1JhbmdlRGF0YTtpLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCJ8fGc/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaChlW3JdLmRhdGFbb10ueCksaXNOYU4oZVtyXS5kYXRhW29dLngpfHx0aGlzLncuY29uZmlnLnhheGlzLnR5cGU9PT1cImNhdGVnb3J5XCJ8fHR5cGVvZiBlW3JdLmRhdGFbb10ueD09XCJzdHJpbmdcInx8KGEuaXNYTnVtZXJpYz0hMCkpOnRoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZShlW3JdLmRhdGFbb10ueCkpfWVsc2UgaS54YXhpcy50eXBlPT09XCJkYXRldGltZVwiP3RoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZShlW3JdLmRhdGFbb10ueC50b1N0cmluZygpKSk6KGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLGEuaXNYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdChlW3JdLmRhdGFbb10ueCkpKTtlbHNlIGM/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaChlW3JdLmRhdGFbb10ueCkpOihhLmlzWE51bWVyaWM9ITAsYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKGVbcl0uZGF0YVtvXS54KSl9aWYoZVt0XS5kYXRhWzBdJiZlW3RdLmRhdGFbMF0ueiE9PXZvaWQgMCl7Zm9yKHZhciBwPTA7cDxlW3RdLmRhdGEubGVuZ3RoO3ArKyl0aGlzLnRocmVlRFNlcmllcy5wdXNoKGVbdF0uZGF0YVtwXS56KTthLmlzRGF0YVhZWj0hMH19fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJhcnJheVwiLGUsdCk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwieHlcIixlLHQpKSxpLnNlcmllc1JhbmdlU3RhcnQucHVzaChhLnN0YXJ0KSxpLnNlcmllc1JhbmdlRW5kLnB1c2goYS5lbmQpLGkuc2VyaWVzUmFuZ2UucHVzaChhLnJhbmdlVW5pcXVlcyksaS5zZXJpZXNSYW5nZS5mb3JFYWNoKGZ1bmN0aW9uKHMscil7cyYmcy5mb3JFYWNoKGZ1bmN0aW9uKG4sbyl7bi55LmZvckVhY2goZnVuY3Rpb24oaCxjKXtmb3IodmFyIGQ9MDtkPG4ueS5sZW5ndGg7ZCsrKWlmKGMhPT1kKXt2YXIgZz1oLnkxLHA9aC55MixmPW4ueVtkXS55MTtnPD1uLnlbZF0ueTImJmY8PXAmJihuLm92ZXJsYXBzLmluZGV4T2YoaC5yYW5nZU5hbWUpPDAmJm4ub3ZlcmxhcHMucHVzaChoLnJhbmdlTmFtZSksbi5vdmVybGFwcy5pbmRleE9mKG4ueVtkXS5yYW5nZU5hbWUpPDAmJm4ub3ZlcmxhcHMucHVzaChuLnlbZF0ucmFuZ2VOYW1lKSl9fSl9KX0pLGF9fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJhcnJheVwiLGUsdCk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwieHlcIixlLHQpKSxpLnNlcmllc0NhbmRsZU9bdF09YS5vLGkuc2VyaWVzQ2FuZGxlSFt0XT1hLmgsaS5zZXJpZXNDYW5kbGVNW3RdPWEubSxpLnNlcmllc0NhbmRsZUxbdF09YS5sLGkuc2VyaWVzQ2FuZGxlQ1t0XT1hLmMsYX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9W10scz1bXSxyPXRbaV0uZGF0YS5maWx0ZXIoZnVuY3Rpb24oYyxkLGcpe3JldHVybiBkPT09Zy5maW5kSW5kZXgoZnVuY3Rpb24ocCl7cmV0dXJuIHAueD09PWMueH0pfSkubWFwKGZ1bmN0aW9uKGMsZCl7cmV0dXJue3g6Yy54LG92ZXJsYXBzOltdLHk6W119fSk7aWYoZT09PVwiYXJyYXlcIilmb3IodmFyIG49MDtuPHRbaV0uZGF0YS5sZW5ndGg7bisrKUFycmF5LmlzQXJyYXkodFtpXS5kYXRhW25dKT8oYS5wdXNoKHRbaV0uZGF0YVtuXVsxXVswXSkscy5wdXNoKHRbaV0uZGF0YVtuXVsxXVsxXSkpOihhLnB1c2godFtpXS5kYXRhW25dKSxzLnB1c2godFtpXS5kYXRhW25dKSk7ZWxzZSBpZihlPT09XCJ4eVwiKWZvcih2YXIgbz1mdW5jdGlvbihjKXt2YXIgZD1BcnJheS5pc0FycmF5KHRbaV0uZGF0YVtjXS55KSxnPVAucmFuZG9tSWQoKSxwPXRbaV0uZGF0YVtjXS54LGY9e3kxOmQ/dFtpXS5kYXRhW2NdLnlbMF06dFtpXS5kYXRhW2NdLnkseTI6ZD90W2ldLmRhdGFbY10ueVsxXTp0W2ldLmRhdGFbY10ueSxyYW5nZU5hbWU6Z307dFtpXS5kYXRhW2NdLnJhbmdlTmFtZT1nO3ZhciBiPXIuZmluZEluZGV4KGZ1bmN0aW9uKG0pe3JldHVybiBtLng9PT1wfSk7cltiXS55LnB1c2goZiksYS5wdXNoKGYueTEpLHMucHVzaChmLnkyKX0saD0wO2g8dFtpXS5kYXRhLmxlbmd0aDtoKyspbyhoKTtyZXR1cm57c3RhcnQ6YSxlbmQ6cyxyYW5nZVVuaXF1ZXM6cn19fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPWEuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcInx8YS5jb25maWcuc2VyaWVzW2ldLnR5cGU9PT1cImJveFBsb3RcIixyPVtdLG49W10sbz1bXSxoPVtdLGM9W107aWYoZT09PVwiYXJyYXlcIilpZihzJiZ0W2ldLmRhdGFbMF0ubGVuZ3RoPT09Nnx8IXMmJnRbaV0uZGF0YVswXS5sZW5ndGg9PT01KWZvcih2YXIgZD0wO2Q8dFtpXS5kYXRhLmxlbmd0aDtkKyspci5wdXNoKHRbaV0uZGF0YVtkXVsxXSksbi5wdXNoKHRbaV0uZGF0YVtkXVsyXSkscz8oby5wdXNoKHRbaV0uZGF0YVtkXVszXSksaC5wdXNoKHRbaV0uZGF0YVtkXVs0XSksYy5wdXNoKHRbaV0uZGF0YVtkXVs1XSkpOihoLnB1c2godFtpXS5kYXRhW2RdWzNdKSxjLnB1c2godFtpXS5kYXRhW2RdWzRdKSk7ZWxzZSBmb3IodmFyIGc9MDtnPHRbaV0uZGF0YS5sZW5ndGg7ZysrKUFycmF5LmlzQXJyYXkodFtpXS5kYXRhW2ddWzFdKSYmKHIucHVzaCh0W2ldLmRhdGFbZ11bMV1bMF0pLG4ucHVzaCh0W2ldLmRhdGFbZ11bMV1bMV0pLHM/KG8ucHVzaCh0W2ldLmRhdGFbZ11bMV1bMl0pLGgucHVzaCh0W2ldLmRhdGFbZ11bMV1bM10pLGMucHVzaCh0W2ldLmRhdGFbZ11bMV1bNF0pKTooaC5wdXNoKHRbaV0uZGF0YVtnXVsxXVsyXSksYy5wdXNoKHRbaV0uZGF0YVtnXVsxXVszXSkpKTtlbHNlIGlmKGU9PT1cInh5XCIpZm9yKHZhciBwPTA7cDx0W2ldLmRhdGEubGVuZ3RoO3ArKylBcnJheS5pc0FycmF5KHRbaV0uZGF0YVtwXS55KSYmKHIucHVzaCh0W2ldLmRhdGFbcF0ueVswXSksbi5wdXNoKHRbaV0uZGF0YVtwXS55WzFdKSxzPyhvLnB1c2godFtpXS5kYXRhW3BdLnlbMl0pLGgucHVzaCh0W2ldLmRhdGFbcF0ueVszXSksYy5wdXNoKHRbaV0uZGF0YVtwXS55WzRdKSk6KGgucHVzaCh0W2ldLmRhdGFbcF0ueVsyXSksYy5wdXNoKHRbaV0uZGF0YVtwXS55WzNdKSkpO3JldHVybntvOnIsaDpuLG06byxsOmgsY319fSx7a2V5OlwicGFyc2VEYXRhQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp0aGlzLmN0eCxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxuPW5ldyBCKGEpLG89cy5sYWJlbHMubGVuZ3RoPjA/cy5sYWJlbHMuc2xpY2UoKTpzLnhheGlzLmNhdGVnb3JpZXMuc2xpY2UoKTtpZihyLmlzUmFuZ2VCYXI9cy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiJiZyLmlzQmFySG9yaXpvbnRhbCxyLmhhc1hheGlzR3JvdXBzPXMueGF4aXMudHlwZT09PVwiY2F0ZWdvcnlcIiYmcy54YXhpcy5ncm91cC5ncm91cHMubGVuZ3RoPjAsci5oYXNYYXhpc0dyb3VwcyYmKHIuZ3JvdXBzPXMueGF4aXMuZ3JvdXAuZ3JvdXBzKSxyLmhhc1Nlcmllc0dyb3Vwcz0odD1lWzBdKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZ3JvdXAsci5oYXNTZXJpZXNHcm91cHMpe3ZhciBoPVtdLGM9UShuZXcgU2V0KGUubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmdyb3VwfSkpKTtlLmZvckVhY2goZnVuY3Rpb24oZixiKXt2YXIgbT1jLmluZGV4T2YoZi5ncm91cCk7aFttXXx8KGhbbV09W10pLGhbbV0ucHVzaChmLm5hbWUpfSksci5zZXJpZXNHcm91cHM9aH1mb3IodmFyIGQ9ZnVuY3Rpb24oKXtmb3IodmFyIGY9MDtmPG8ubGVuZ3RoO2YrKylpZih0eXBlb2Ygb1tmXT09XCJzdHJpbmdcIil7aWYoIW4uaXNWYWxpZERhdGUob1tmXSkpdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIik7aS50d29EU2VyaWVzWC5wdXNoKG4ucGFyc2VEYXRlKG9bZl0pKX1lbHNlIGkudHdvRFNlcmllc1gucHVzaChvW2ZdKX0sZz0wO2c8ZS5sZW5ndGg7ZysrKXtpZih0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSxlW2ddLmRhdGE9PT12b2lkIDApcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihcIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuXCIpO2lmKHMuY2hhcnQudHlwZSE9PVwicmFuZ2VCYXJcIiYmcy5jaGFydC50eXBlIT09XCJyYW5nZUFyZWFcIiYmZVtnXS50eXBlIT09XCJyYW5nZUJhclwiJiZlW2ddLnR5cGUhPT1cInJhbmdlQXJlYVwifHwoci5pc1JhbmdlRGF0YT0hMCxzLmNoYXJ0LnR5cGUhPT1cInJhbmdlQmFyXCImJnMuY2hhcnQudHlwZSE9PVwicmFuZ2VBcmVhXCJ8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKGUsZykpLHRoaXMuaXNNdWx0aUZvcm1hdCgpKXRoaXMuaXNGb3JtYXQyREFycmF5KCk/dGhpcy5oYW5kbGVGb3JtYXQyREFycmF5KGUsZyk6dGhpcy5pc0Zvcm1hdFhZKCkmJnRoaXMuaGFuZGxlRm9ybWF0WFkoZSxnKSxzLmNoYXJ0LnR5cGUhPT1cImNhbmRsZXN0aWNrXCImJmVbZ10udHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmcy5jaGFydC50eXBlIT09XCJib3hQbG90XCImJmVbZ10udHlwZSE9PVwiYm94UGxvdFwifHx0aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YShlLGcpLHIuc2VyaWVzLnB1c2godGhpcy50d29EU2VyaWVzKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHIuc2VyaWVzR29hbHM9dGhpcy5zZXJpZXNHb2FscyxnIT09dGhpcy5hY3RpdmVTZXJpZXNJbmRleHx8dGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnl8fChyLmlzWE51bWVyaWM9ITApO2Vsc2V7cy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiPyhyLmlzWE51bWVyaWM9ITAsZCgpLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKTpzLnhheGlzLnR5cGU9PT1cIm51bWVyaWNcIiYmKHIuaXNYTnVtZXJpYz0hMCxvLmxlbmd0aD4wJiYodGhpcy50d29EU2VyaWVzWD1vLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKSksci5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKTt2YXIgcD1lW2ddLmRhdGEubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBQLnBhcnNlTnVtYmVyKGYpfSk7ci5zZXJpZXMucHVzaChwKX1yLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksZVtnXS5uYW1lIT09dm9pZCAwP3Iuc2VyaWVzTmFtZXMucHVzaChlW2ddLm5hbWUpOnIuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIitwYXJzZUludChnKzEsMTApKSxlW2ddLmNvbG9yIT09dm9pZCAwP3Iuc2VyaWVzQ29sb3JzLnB1c2goZVtnXS5jb2xvcik6ci5zZXJpZXNDb2xvcnMucHVzaCh2b2lkIDApfXJldHVybiB0aGlzLnd9fSx7a2V5OlwicGFyc2VEYXRhTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZzt0LnNlcmllcz1lLnNsaWNlKCksdC5zZXJpZXNOYW1lcz1pLmxhYmVscy5zbGljZSgpO2Zvcih2YXIgYT0wO2E8dC5zZXJpZXMubGVuZ3RoO2ErKyl0LnNlcmllc05hbWVzW2FdPT09dm9pZCAwJiZ0LnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrKGErMSkpO3JldHVybiB0aGlzLnd9fSx7a2V5OlwiaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LmNvbmZpZyxpPXRoaXMudy5nbG9iYWxzO3QueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg+MD9pLmxhYmVscz10LnhheGlzLmNhdGVnb3JpZXM6dC5sYWJlbHMubGVuZ3RoPjA/aS5sYWJlbHM9dC5sYWJlbHMuc2xpY2UoKTp0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT8oaS5sYWJlbHM9aS5sYWJlbHNbMF0saS5zZXJpZXNSYW5nZS5sZW5ndGgmJihpLnNlcmllc1JhbmdlLm1hcChmdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24ocyl7aS5sYWJlbHMuaW5kZXhPZihzLngpPDAmJnMueCYmaS5sYWJlbHMucHVzaChzLngpfSl9KSxpLmxhYmVscz1BcnJheS5mcm9tKG5ldyBTZXQoaS5sYWJlbHMubWFwKEpTT04uc3RyaW5naWZ5KSksSlNPTi5wYXJzZSkpLHQueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYobmV3IGxlKHQpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyh0LHRoaXMuY3R4LGkuc2VyaWVzWFswXSksdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyhlKSkpOnRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHMoZSl9fSx7a2V5OlwiX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1bXTtpZih0LmF4aXNDaGFydHMpe2lmKHQuc2VyaWVzLmxlbmd0aD4wKWlmKHRoaXMuaXNGb3JtYXRYWSgpKWZvcih2YXIgcz1pLnNlcmllcy5tYXAoZnVuY3Rpb24oZCxnKXtyZXR1cm4gZC5kYXRhLmZpbHRlcihmdW5jdGlvbihwLGYsYil7cmV0dXJuIGIuZmluZEluZGV4KGZ1bmN0aW9uKG0pe3JldHVybiBtLng9PT1wLnh9KT09PWZ9KX0pLHI9cy5yZWR1Y2UoZnVuY3Rpb24oZCxnLHAsZil7cmV0dXJuIGZbZF0ubGVuZ3RoPmcubGVuZ3RoP2Q6cH0sMCksbj0wO248c1tyXS5sZW5ndGg7bisrKWEucHVzaChuKzEpO2Vsc2UgZm9yKHZhciBvPTA7bzx0LnNlcmllc1t0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtvKyspYS5wdXNoKG8rMSk7dC5zZXJpZXNYPVtdO2Zvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKXQuc2VyaWVzWC5wdXNoKGEpO3RoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KHQuaXNYTnVtZXJpYz0hMCl9aWYoYS5sZW5ndGg9PT0wKXthPXQuYXhpc0NoYXJ0cz9bXTp0LnNlcmllcy5tYXAoZnVuY3Rpb24oZCxnKXtyZXR1cm4gZysxfSk7Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspdC5zZXJpZXNYLnB1c2goYSl9dC5sYWJlbHM9YSxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHQuY2F0ZWdvcnlMYWJlbHM9YS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGkueGF4aXMubGFiZWxzLmZvcm1hdHRlcihkKX0pKSx0Lm5vTGFiZWxzUHJvdmlkZWQ9ITB9fSx7a2V5OlwicGFyc2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dC5jb25maWcsYT10Lmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMuY3R4LmNvcmUucmVzZXRHbG9iYWxzKCksdGhpcy5jdHguY29yZS5pc011bHRpcGxlWSgpLGEuYXhpc0NoYXJ0cz8odGhpcy5wYXJzZURhdGFBeGlzQ2hhcnRzKGUpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKGUpLGkuY2hhcnQuc3RhY2tlZCl7dmFyIHM9bmV3IGllKHRoaXMuY3R4KTthLnNlcmllcz1zLnNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXMoYS5zZXJpZXMpfXRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFscygpLGEuYXhpc0NoYXJ0cyYmKGEuc3RhY2tlZFNlcmllc1RvdGFscz10aGlzLmNvcmVVdGlscy5nZXRTdGFja2VkU2VyaWVzVG90YWxzKCksYS5zdGFja2VkU2VyaWVzVG90YWxzQnlHcm91cHM9dGhpcy5jb3JlVXRpbHMuZ2V0U3RhY2tlZFNlcmllc1RvdGFsc0J5R3JvdXBzKCkpLHRoaXMuY29yZVV0aWxzLmdldFBlcmNlbnRTZXJpZXMoKSxhLmRhdGFGb3JtYXRYTnVtZXJpY3x8YS5pc1hOdW1lcmljJiYoaS54YXhpcy50eXBlIT09XCJudW1lcmljXCJ8fGkubGFiZWxzLmxlbmd0aCE9PTB8fGkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGghPT0wKXx8dGhpcy5oYW5kbGVFeHRlcm5hbExhYmVsc0RhdGEoZSk7Zm9yKHZhciByPXRoaXMuY29yZVV0aWxzLmdldENhdGVnb3J5TGFiZWxzKGEubGFiZWxzKSxuPTA7bjxyLmxlbmd0aDtuKyspaWYoQXJyYXkuaXNBcnJheShyW25dKSl7YS5pc011bHRpTGluZVg9ITA7YnJlYWt9fX0se2tleTpcImV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53O3QuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXM9dC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5tYXAoZnVuY3Rpb24oaSxhKXtpZihlLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJiF0LmNvbmZpZy5jaGFydC5zdGFja2VkKXJldHVybiBpLmluZGV4fSl9fV0pLHl9KCksYmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImdldExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOltdLHI9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOlwiMTJweFwiLG49IShhcmd1bWVudHMubGVuZ3RoPjYmJmFyZ3VtZW50c1s2XSE9PXZvaWQgMCl8fGFyZ3VtZW50c1s2XSxvPXRoaXMudyxoPWVbYV09PT12b2lkIDA/XCJcIjplW2FdLGM9aCxkPW8uZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsZz1vLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLHA9ITEsZj1uZXcgbmUodGhpcy5jdHgpLGI9aDtuJiYoYz1mLnhMYWJlbEZvcm1hdChkLGgsYix7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEIodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpvfSksZyE9PXZvaWQgMCYmKGM9ZyhoLGVbYV0se2k6YSxkYXRlRm9ybWF0dGVyOm5ldyBCKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6b30pKSk7dmFyIG0sdzt0Lmxlbmd0aD4wPyhtPXRbYV0udW5pdCx3PW51bGwsdC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3gudW5pdD09PVwibW9udGhcIj93PVwieWVhclwiOngudW5pdD09PVwiZGF5XCI/dz1cIm1vbnRoXCI6eC51bml0PT09XCJob3VyXCI/dz1cImRheVwiOngudW5pdD09PVwibWludXRlXCImJih3PVwiaG91clwiKX0pLHA9dz09PW0saT10W2FdLnBvc2l0aW9uLGM9dFthXS52YWx1ZSk6by5jb25maWcueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIiYmZz09PXZvaWQgMCYmKGM9XCJcIiksYz09PXZvaWQgMCYmKGM9XCJcIiksYz1BcnJheS5pc0FycmF5KGMpP2M6Yy50b1N0cmluZygpO3ZhciBBPW5ldyBNKHRoaXMuY3R4KSxsPXt9O2w9by5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJm4/QS5nZXRUZXh0UmVjdHMoYyxwYXJzZUludChyLDEwKSxudWxsLFwicm90YXRlKFwiLmNvbmNhdChvLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpOkEuZ2V0VGV4dFJlY3RzKGMscGFyc2VJbnQociwxMCkpO3ZhciB1PSFvLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMmJnRoaXMuY3R4LnRpbWVTY2FsZTtyZXR1cm4hQXJyYXkuaXNBcnJheShjKSYmKGMuaW5kZXhPZihcIk5hTlwiKT09PTB8fGMudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW52YWxpZFwiKT09PTB8fGMudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW5maW5pdHlcIik+PTB8fHMuaW5kZXhPZihjKT49MCYmdSkmJihjPVwiXCIpLHt4OmksdGV4dDpjLHRleHRSZWN0OmwsaXNCb2xkOnB9fX0se2tleTpcImNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy54YXhpcy50aWNrQW1vdW50O3JldHVybiBzPT09XCJkYXRhUG9pbnRzXCImJihzPU1hdGgucm91bmQoYS5nbG9iYWxzLmdyaWRXaWR0aC8xMjApKSxzPml8fGUlTWF0aC5yb3VuZChpLyhzKzEpKT09MHx8KHQudGV4dD1cIlwiKSx0fX0se2tleTpcImNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMpe3ZhciByPXRoaXMudztpZihlPT09MCYmci5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJih0LnRleHQ9XCJcIiksZT09PWktMSYmci5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKHQudGV4dD1cIlwiKSxyLmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzJiZhLmxlbmd0aD4wKXt2YXIgbj1zW3MubGVuZ3RoLTFdO3QueDxuLnRleHRSZWN0LndpZHRoLyhyLmdsb2JhbHMucm90YXRlWExhYmVscz9NYXRoLmFicyhyLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlKS8xMjoxLjAxKStuLngmJih0LnRleHQ9XCJcIil9cmV0dXJuIHR9fSx7a2V5OlwiY2hlY2tGb3JSZXZlcnNlZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O3JldHVybiBpLmNvbmZpZy55YXhpc1tlXSYmaS5jb25maWcueWF4aXNbZV0ucmV2ZXJzZWQmJnQucmV2ZXJzZSgpLHR9fSx7a2V5OlwiaXNZQXhpc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBxKHRoaXMuY3R4KTtyZXR1cm4hdC5jb25maWcueWF4aXNbZV0uc2hvd3x8IXQuY29uZmlnLnlheGlzW2VdLnNob3dGb3JOdWxsU2VyaWVzJiZpLmlzU2VyaWVzTnVsbChlKSYmdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT09PS0xfX0se2tleTpcImdldFlBeGlzRm9yZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmkuZ2xvYmFscy55QXhpc1NjYWxlW3RdJiZ0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnMoZSxpLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLCExKSxlfX0se2tleTpcImRyYXdZQXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIsbil7dmFyIG89dGhpcy53LGg9bmV3IE0odGhpcy5jdHgpLGM9by5nbG9iYWxzLnRyYW5zbGF0ZVk7aWYoYS5zaG93JiZ0PjApe28uY29uZmlnLnlheGlzW3NdLm9wcG9zaXRlPT09ITAmJihlKz1hLndpZHRoKTtmb3IodmFyIGQ9dDtkPj0wO2QtLSl7dmFyIGc9Yyt0LzEwK28uY29uZmlnLnlheGlzW3NdLmxhYmVscy5vZmZzZXRZLTE7by5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGc9cipkKSxvLmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCImJihnKz1yLzIpO3ZhciBwPWguZHJhd0xpbmUoZStpLm9mZnNldFgtYS53aWR0aCthLm9mZnNldFgsZythLm9mZnNldFksZStpLm9mZnNldFgrYS5vZmZzZXRYLGcrYS5vZmZzZXRZLGEuY29sb3IpO24uYWRkKHApLGMrPXJ9fX19XSkseX0oKSxGZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5Olwic2NhbGVTdmdOb2RlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1wYXJzZUZsb2F0KGUuZ2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIpKSxhPXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGVOUyhudWxsLFwiaGVpZ2h0XCIpKTtlLnNldEF0dHJpYnV0ZU5TKG51bGwsXCJ3aWR0aFwiLGkqdCksZS5zZXRBdHRyaWJ1dGVOUyhudWxsLFwiaGVpZ2h0XCIsYSp0KSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsXCJ2aWV3Qm94XCIsXCIwIDAgXCIraStcIiBcIithKX19LHtrZXk6XCJmaXhTdmdTdHJpbmdGb3JJZTExXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIVAuaXNJRTExKCkpcmV0dXJuIGUucmVwbGFjZSgvJm5ic3A7L2csXCImIzE2MDtcIik7dmFyIHQ9MCxpPWUucmVwbGFjZSgveG1sbnM9XCJodHRwOlxcL1xcL3d3dy53My5vcmdcXC8yMDAwXFwvc3ZnXCIvZyxmdW5jdGlvbihhKXtyZXR1cm4rK3Q9PT0yPyd4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4bWxuczpzdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIic6YX0pO3JldHVybiBpPShpPWkucmVwbGFjZSgveG1sbnM6TlNcXGQrPVwiXCIvZyxcIlwiKSkucmVwbGFjZSgvTlNcXGQrOihcXHcrOlxcdys9XCIpL2csXCIkMVwiKX19LHtrZXk6XCJnZXRTdmdTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXtlPT1udWxsJiYoZT0xKTt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuc3ZnKCk7aWYoZSE9PTEpe3ZhciBpPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlLmNsb25lTm9kZSghMCk7dGhpcy5zY2FsZVN2Z05vZGUoaSxlKSx0PW5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoaSl9cmV0dXJuIHRoaXMuZml4U3ZnU3RyaW5nRm9ySWUxMSh0KX19LHtrZXk6XCJjbGVhbnVwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiKSxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXpvb20tcmVjdCwgLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGZ1bmN0aW9uKHMpe3Muc2V0QXR0cmlidXRlKFwid2lkdGhcIiwwKX0pLHQmJnRbMF0mJih0WzBdLnNldEF0dHJpYnV0ZShcInhcIiwtNTAwKSx0WzBdLnNldEF0dHJpYnV0ZShcIngxXCIsLTUwMCksdFswXS5zZXRBdHRyaWJ1dGUoXCJ4MlwiLC01MDApKSxpJiZpWzBdJiYoaVswXS5zZXRBdHRyaWJ1dGUoXCJ5XCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTJcIiwtMTAwKSl9fSx7a2V5Olwic3ZnVXJsXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFudXAoKTt2YXIgZT10aGlzLmdldFN2Z1N0cmluZygpLHQ9bmV3IEJsb2IoW2VdLHt0eXBlOlwiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04XCJ9KTtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTCh0KX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oaSl7dmFyIGE9dC53LHM9ZT9lLnNjYWxlfHxlLndpZHRoL2EuZ2xvYmFscy5zdmdXaWR0aDoxO3QuY2xlYW51cCgpO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7ci53aWR0aD1hLmdsb2JhbHMuc3ZnV2lkdGgqcyxyLmhlaWdodD1wYXJzZUludChhLmdsb2JhbHMuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQsMTApKnM7dmFyIG49YS5jb25maWcuY2hhcnQuYmFja2dyb3VuZD09PVwidHJhbnNwYXJlbnRcIj9cIiNmZmZcIjphLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kLG89ci5nZXRDb250ZXh0KFwiMmRcIik7by5maWxsU3R5bGU9bixvLmZpbGxSZWN0KDAsMCxyLndpZHRoKnMsci5oZWlnaHQqcyk7dmFyIGg9dC5nZXRTdmdTdHJpbmcocyk7aWYod2luZG93LmNhbnZnJiZQLmlzSUUxMSgpKXt2YXIgYz13aW5kb3cuY2FudmcuQ2FudmcuZnJvbVN0cmluZyhvLGgse2lnbm9yZUNsZWFyOiEwLGlnbm9yZURpbWVuc2lvbnM6ITB9KTtjLnN0YXJ0KCk7dmFyIGQ9ci5tc1RvQmxvYigpO2Muc3RvcCgpLGkoe2Jsb2I6ZH0pfWVsc2V7dmFyIGc9XCJkYXRhOmltYWdlL3N2Zyt4bWwsXCIrZW5jb2RlVVJJQ29tcG9uZW50KGgpLHA9bmV3IEltYWdlO3AuY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIixwLm9ubG9hZD1mdW5jdGlvbigpe2lmKG8uZHJhd0ltYWdlKHAsMCwwKSxyLm1zVG9CbG9iKXt2YXIgZj1yLm1zVG9CbG9iKCk7aSh7YmxvYjpmfSl9ZWxzZXt2YXIgYj1yLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtpKHtpbWdVUkk6Yn0pfX0scC5zcmM9Z319KX19LHtrZXk6XCJleHBvcnRUb1NWR1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyRG93bmxvYWQodGhpcy5zdmdVcmwoKSx0aGlzLncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnN2Zy5maWxlbmFtZSxcIi5zdmdcIil9fSx7a2V5OlwiZXhwb3J0VG9QbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5kYXRhVVJJKCkudGhlbihmdW5jdGlvbih0KXt2YXIgaT10LmltZ1VSSSxhPXQuYmxvYjthP25hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGEsZS53Lmdsb2JhbHMuY2hhcnRJRCtcIi5wbmdcIik6ZS50cmlnZ2VyRG93bmxvYWQoaSxlLncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnBuZy5maWxlbmFtZSxcIi5wbmdcIil9KX19LHtrZXk6XCJleHBvcnRUb0NTVlwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLnNlcmllcyxhPWUuZmlsZU5hbWUscz1lLmNvbHVtbkRlbGltaXRlcixyPXM9PT12b2lkIDA/XCIsXCI6cyxuPWUubGluZURlbGltaXRlcixvPW49PT12b2lkIDA/YFxuYDpuLGg9dGhpcy53O2l8fChpPWguY29uZmlnLnNlcmllcyk7dmFyIGMsZCxnPVtdLHA9W10sZj1cIlwiLGI9aC5nbG9iYWxzLnNlcmllcy5tYXAoZnVuY3Rpb24odixrKXtyZXR1cm4gaC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihrKT09PS0xP3Y6W119KSxtPWZ1bmN0aW9uKHYpe3JldHVybiBoLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiJiZTdHJpbmcodikubGVuZ3RoPj0xMH0sdz1NYXRoLm1heC5hcHBseShNYXRoLFEoaS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIHYuZGF0YT92LmRhdGEubGVuZ3RoOjB9KSkpLEE9bmV3IGV0KHRoaXMuY3R4KSxsPW5ldyBiZSh0aGlzLmN0eCksdT1mdW5jdGlvbih2KXt2YXIgaz1cIlwiO2lmKGguZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihoLmNvbmZpZy54YXhpcy50eXBlPT09XCJjYXRlZ29yeVwifHxoLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpaWYoaC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIFM9aC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sQz1uZXcgaWUodC5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7az1TKGguZ2xvYmFscy5sYWJlbHNbdl0se3Nlcmllc0luZGV4OkMsZGF0YVBvaW50SW5kZXg6dix3Omh9KX1lbHNlIGs9bC5nZXRMYWJlbChoLmdsb2JhbHMubGFiZWxzLGguZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsMCx2KS50ZXh0O2guY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCImJihoLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD9rPWguY29uZmlnLnhheGlzLmNhdGVnb3JpZXNbdl06aC5jb25maWcubGFiZWxzLmxlbmd0aCYmKGs9aC5jb25maWcubGFiZWxzW3ZdKSl9ZWxzZSBrPWguY29uZmlnLmxhYmVsc1t2XTtyZXR1cm4gQXJyYXkuaXNBcnJheShrKSYmKGs9ay5qb2luKFwiIFwiKSksUC5pc051bWJlcihrKT9rOmsuc3BsaXQocikuam9pbihcIlwiKX0seD1mdW5jdGlvbih2LGspe2lmKGcubGVuZ3RoJiZrPT09MCYmcC5wdXNoKGcuam9pbihyKSksdi5kYXRhKXt2LmRhdGE9di5kYXRhLmxlbmd0aCYmdi5kYXRhfHxRKEFycmF5KHcpKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm5cIlwifSk7Zm9yKHZhciBTPTA7Uzx2LmRhdGEubGVuZ3RoO1MrKyl7Zz1bXTt2YXIgQz11KFMpO2lmKEN8fChBLmlzRm9ybWF0WFkoKT9DPWlba10uZGF0YVtTXS54OkEuaXNGb3JtYXQyREFycmF5KCkmJihDPWlba10uZGF0YVtTXT9pW2tdLmRhdGFbU11bMF06XCJcIikpLGs9PT0wKXtnLnB1c2gobShDKT9oLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuZGF0ZUZvcm1hdHRlcihDKTpQLmlzTnVtYmVyKEMpP0M6Qy5zcGxpdChyKS5qb2luKFwiXCIpKTtmb3IodmFyIEw9MDtMPGguZ2xvYmFscy5zZXJpZXMubGVuZ3RoO0wrKyl7dmFyIEk7QS5pc0Zvcm1hdFhZKCk/Zy5wdXNoKChJPWlbTF0uZGF0YVtTXSk9PT1udWxsfHxJPT09dm9pZCAwP3ZvaWQgMDpJLnkpOmcucHVzaChiW0xdW1NdKX19KGguY29uZmlnLmNoYXJ0LnR5cGU9PT1cImNhbmRsZXN0aWNrXCJ8fHYudHlwZSYmdi50eXBlPT09XCJjYW5kbGVzdGlja1wiKSYmKGcucG9wKCksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZUhba11bU10pLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtrXVtTXSksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2tdW1NdKSksKGguY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcInx8di50eXBlJiZ2LnR5cGU9PT1cImJveFBsb3RcIikmJihnLnBvcCgpLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1trXVtTXSksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZU1ba11bU10pLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtrXVtTXSksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2tdW1NdKSksaC5jb25maWcuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcIiYmKGcucG9wKCksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2tdW1NdKSksZy5sZW5ndGgmJnAucHVzaChnLmpvaW4ocikpfX19O2cucHVzaChoLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyQ2F0ZWdvcnkpLGguY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcIj8oZy5wdXNoKFwibWluaW11bVwiKSxnLnB1c2goXCJxMVwiKSxnLnB1c2goXCJtZWRpYW5cIiksZy5wdXNoKFwicTNcIiksZy5wdXNoKFwibWF4aW11bVwiKSk6aC5jb25maWcuY2hhcnQudHlwZT09PVwiY2FuZGxlc3RpY2tcIj8oZy5wdXNoKFwib3BlblwiKSxnLnB1c2goXCJoaWdoXCIpLGcucHVzaChcImxvd1wiKSxnLnB1c2goXCJjbG9zZVwiKSk6aC5jb25maWcuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcIj8oZy5wdXNoKFwibWluaW11bVwiKSxnLnB1c2goXCJtYXhpbXVtXCIpKTppLm1hcChmdW5jdGlvbih2LGspe3ZhciBTPSh2Lm5hbWU/di5uYW1lOlwic2VyaWVzLVwiLmNvbmNhdChrKSkrXCJcIjtoLmdsb2JhbHMuYXhpc0NoYXJ0cyYmZy5wdXNoKFMuc3BsaXQocikuam9pbihcIlwiKT9TLnNwbGl0KHIpLmpvaW4oXCJcIik6XCJzZXJpZXMtXCIuY29uY2F0KGspKX0pLGguZ2xvYmFscy5heGlzQ2hhcnRzfHwoZy5wdXNoKGguY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJWYWx1ZSkscC5wdXNoKGcuam9pbihyKSkpLGguZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFh8fCFoLmdsb2JhbHMuYXhpc0NoYXJ0c3x8aC5jb25maWcueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGh8fGguY29uZmlnLmxhYmVscy5sZW5ndGg/aS5tYXAoZnVuY3Rpb24odixrKXtoLmdsb2JhbHMuYXhpc0NoYXJ0cz94KHYsayk6KChnPVtdKS5wdXNoKGguZ2xvYmFscy5sYWJlbHNba10uc3BsaXQocikuam9pbihcIlwiKSksZy5wdXNoKGJba10pLHAucHVzaChnLmpvaW4ocikpKX0pOihjPW5ldyBTZXQsZD17fSxpLmZvckVhY2goZnVuY3Rpb24odixrKXt2PT1udWxsfHx2LmRhdGEuZm9yRWFjaChmdW5jdGlvbihTKXt2YXIgQyxMO2lmKEEuaXNGb3JtYXRYWSgpKUM9Uy54LEw9Uy55O2Vsc2V7aWYoIUEuaXNGb3JtYXQyREFycmF5KCkpcmV0dXJuO0M9U1swXSxMPVNbMV19ZFtDXXx8KGRbQ109QXJyYXkoaS5sZW5ndGgpLmZpbGwoXCJcIikpLGRbQ11ba109TCxjLmFkZChDKX0pfSksZy5sZW5ndGgmJnAucHVzaChnLmpvaW4ocikpLEFycmF5LmZyb20oYykuc29ydCgpLmZvckVhY2goZnVuY3Rpb24odil7cC5wdXNoKFttKHYpJiZoLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiP2guY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKHYpOlAuaXNOdW1iZXIodik/djp2LnNwbGl0KHIpLmpvaW4oXCJcIiksZFt2XS5qb2luKHIpXSl9KSksZis9cC5qb2luKG8pLHRoaXMudHJpZ2dlckRvd25sb2FkKFwiZGF0YTp0ZXh0L2NzdjsgY2hhcnNldD11dGYtOCxcIitlbmNvZGVVUklDb21wb25lbnQoXCJcXHVGRUZGXCIrZiksYXx8aC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmZpbGVuYW1lLFwiLmNzdlwiKX19LHtrZXk6XCJ0cmlnZ2VyRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7YS5ocmVmPWUsYS5kb3dubG9hZD0odHx8dGhpcy53Lmdsb2JhbHMuY2hhcnRJRCkraSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpfX1dKSx5fSgpLHplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlLHQpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPXQsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5heGVzVXRpbHM9bmV3IGJlKGUpLHRoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLGkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJiFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpLGkuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMmJih0aGlzLnhheGlzTGFiZWxzPWkuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5kcmF3bkxhYmVsc1JlY3RzPVtdLGkuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJ0b3BcIj90aGlzLm9mZlk9MDp0aGlzLm9mZlk9aS5nbG9iYWxzLmdyaWRIZWlnaHQrMSx0aGlzLm9mZlk9dGhpcy5vZmZZK2kuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WSx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPWkuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwiJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhheGlzRm9udFNpemU9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMueGF4aXNGb250RmFtaWx5PWkuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPWkuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy54YXhpc0JvcmRlcldpZHRoPWkuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIud2lkdGgsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCYmKHRoaXMueGF4aXNCb3JkZXJXaWR0aD1pLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLndpZHRoLnRvU3RyaW5nKCkpLHRoaXMueGF4aXNCb3JkZXJXaWR0aC5pbmRleE9mKFwiJVwiKT4tMT90aGlzLnhheGlzQm9yZGVyV2lkdGg9aS5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLzEwMDp0aGlzLnhheGlzQm9yZGVyV2lkdGg9cGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKSx0aGlzLnhheGlzQm9yZGVySGVpZ2h0PWkuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuaGVpZ2h0LHRoaXMueWF4aXM9aS5jb25maWcueWF4aXNbMF19cmV0dXJuIFkoeSxbe2tleTpcImRyYXdYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9bmV3IE0odGhpcy5jdHgpLGk9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmNvbmZpZy54YXhpcy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KGUuY29uZmlnLnhheGlzLm9mZnNldFksXCIpXCIpfSksYT10Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCxcIiwgXCIpLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNZLFwiKVwiKX0pO2kuYWRkKGEpO2Zvcih2YXIgcz1bXSxyPTA7cjx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtyKyspcy5wdXNoKHRoaXMueGF4aXNMYWJlbHNbcl0pO2lmKHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMCx0LGEscyxlLmdsb2JhbHMuaXNYTnVtZXJpYyxmdW5jdGlvbihmLGIpe3JldHVybiBifSksZS5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXt2YXIgbj1lLmdsb2JhbHMuZ3JvdXBzO3M9W107Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspcy5wdXNoKG5bb10udGl0bGUpO3ZhciBoPXt9O2UuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlJiYoaC54YXhpc0ZvbnRTaXplPWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLGgueGF4aXNGb250RmFtaWx5PWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksaC54YXhpc0ZvcmVDb2xvcnM9ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLGguZm9udFdlaWdodD1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LGguY3NzQ2xhc3M9ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMSx0LGEscywhMSxmdW5jdGlvbihmLGIpe3JldHVybiBuW2ZdLmNvbHMqYn0saCl9aWYoZS5jb25maWcueGF4aXMudGl0bGUudGV4dCE9PXZvaWQgMCl7dmFyIGM9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlXCJ9KSxkPXQuZHJhd1RleHQoe3g6ZS5nbG9iYWxzLmdyaWRXaWR0aC8yK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlkrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpKyhlLmNvbmZpZy54YXhpcy5wb3NpdGlvbj09PVwiYm90dG9tXCI/ZS5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0Oi1lLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtMTApK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFksdGV4dDplLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIitlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2MuYWRkKGQpLGkuYWRkKGMpfWlmKGUuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGc9ZS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLHA9dC5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtlLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgtZyx0aGlzLm9mZlksdGhpcy54YXhpc0JvcmRlcldpZHRoK2csdGhpcy5vZmZZLGUuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsMCx0aGlzLnhheGlzQm9yZGVySGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmZS5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHApOmkuYWRkKHApfXJldHVybiBpfX0se2tleTpcImRyYXdYQXhpc0xhYmVsQW5kR3JvdXBcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscil7dmFyIG4sbz10aGlzLGg9YXJndW1lbnRzLmxlbmd0aD42JiZhcmd1bWVudHNbNl0hPT12b2lkIDA/YXJndW1lbnRzWzZdOnt9LGM9W10sZD1bXSxnPXRoaXMudyxwPWgueGF4aXNGb250U2l6ZXx8dGhpcy54YXhpc0ZvbnRTaXplLGY9aC54YXhpc0ZvbnRGYW1pbHl8fHRoaXMueGF4aXNGb250RmFtaWx5LGI9aC54YXhpc0ZvcmVDb2xvcnN8fHRoaXMueGF4aXNGb3JlQ29sb3JzLG09aC5mb250V2VpZ2h0fHxnLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCx3PWguY3NzQ2xhc3N8fGcuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzcyxBPWcuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGw9YS5sZW5ndGgsdT1nLmNvbmZpZy54YXhpcy50eXBlPT09XCJjYXRlZ29yeVwiP2cuZ2xvYmFscy5kYXRhUG9pbnRzOmw7aWYodT09PTAmJmw+dSYmKHU9bCkscyl7dmFyIHg9dT4xP3UtMTp1O249Zy5nbG9iYWxzLmdyaWRXaWR0aC9NYXRoLm1pbih4LGwtMSksQT1BK3IoMCxuKS8yK2cuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYfWVsc2Ugbj1nLmdsb2JhbHMuZ3JpZFdpZHRoL3UsQT1BK3IoMCxuKStnLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDtmb3IodmFyIHY9ZnVuY3Rpb24oUyl7dmFyIEM9QS1yKFMsbikvMitnLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDtTPT09MCYmbD09PTEmJm4vMj09PUEmJnU9PT0xJiYoQz1nLmdsb2JhbHMuZ3JpZFdpZHRoLzIpO3ZhciBMPW8uYXhlc1V0aWxzLmdldExhYmVsKGEsZy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscyxDLFMsYyxwLGUpLEk9Mjg7aWYoZy5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJmUmJihJPTIyKSxnLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0JiZnLmNvbmZpZy54YXhpcy5wb3NpdGlvbj09PVwidG9wXCImJihJKz1wYXJzZUZsb2F0KGcuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSsyKSxlfHwoST1JK3BhcnNlRmxvYXQocCkrKGcuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC1nLmdsb2JhbHMueEF4aXNHcm91cExhYmVsc0hlaWdodCkrKGcuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjApKSxMPWcuY29uZmlnLnhheGlzLnRpY2tBbW91bnQhPT12b2lkIDAmJmcuY29uZmlnLnhheGlzLnRpY2tBbW91bnQhPT1cImRhdGFQb2ludHNcIiYmZy5jb25maWcueGF4aXMudHlwZSE9PVwiZGF0ZXRpbWVcIj9vLmF4ZXNVdGlscy5jaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnQoUyxMLGwpOm8uYXhlc1V0aWxzLmNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHMoUyxMLGwsYyxkKSxnLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIHo9dC5kcmF3VGV4dCh7eDpMLngseTpvLm9mZlkrZy5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrSS0oZy5jb25maWcueGF4aXMucG9zaXRpb249PT1cInRvcFwiP2cuZ2xvYmFscy54QXhpc0hlaWdodCtnLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDpMLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRXZWlnaHQ6TC5pc0JvbGQ/NjAwOm0sZm9udFNpemU6cCxmb250RmFtaWx5OmYsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoYik/ZSYmZy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP2JbZy5nbG9iYWxzLm1pblgrUy0xXTpiW1NdOmIsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6KGU/XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiOlwiYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCBcIikrd30pO2lmKGkuYWRkKHopLHoub24oXCJjbGlja1wiLGZ1bmN0aW9uKEUpe2lmKHR5cGVvZiBnLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrPT1cImZ1bmN0aW9uXCIpe3ZhciBSPU9iamVjdC5hc3NpZ24oe30sZyx7bGFiZWxJbmRleDpTfSk7Zy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayhFLG8uY3R4LFIpfX0pLGUpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhnLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtULnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkoTC50ZXh0KT9MLnRleHQuam9pbihcIiBcIik6TC50ZXh0LHoubm9kZS5hcHBlbmRDaGlsZChUKSxMLnRleHQhPT1cIlwiJiYoYy5wdXNoKEwudGV4dCksZC5wdXNoKEwpKX19UzxsLTEmJihBKz1yKFMrMSxuKSl9LGs9MDtrPD1sLTE7aysrKXYoayl9fSx7a2V5OlwiZHJhd1hheGlzSW52ZXJzZWRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGE9dGhpcyxzPXRoaXMudyxyPW5ldyBNKHRoaXMuY3R4KSxuPXMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlP3MuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbZV06MCxvPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkXCIscmVsOmV9KSxoPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWQtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIituK1wiLCAwKVwifSk7by5hZGQoaCk7dmFyIGM9W107aWYocy5jb25maWcueWF4aXNbZV0uc2hvdylmb3IodmFyIGQ9MDtkPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO2QrKyljLnB1c2godGhpcy54YXhpc0xhYmVsc1tkXSk7dD1zLmdsb2JhbHMuZ3JpZEhlaWdodC9jLmxlbmd0aCxpPS10LzIuMjt2YXIgZz1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSxwPXMuY29uZmlnLnlheGlzWzBdLmxhYmVscztpZihwLnNob3cpZm9yKHZhciBmPWZ1bmN0aW9uKHgpe3ZhciB2PWNbeF09PT12b2lkIDA/XCJcIjpjW3hdO3Y9Zyh2LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OngsdzpzfSk7dmFyIGs9YS5heGVzVXRpbHMuZ2V0WUF4aXNGb3JlQ29sb3IocC5zdHlsZS5jb2xvcnMsZSksUz0wO0FycmF5LmlzQXJyYXkodikmJihTPXYubGVuZ3RoLzIqcGFyc2VJbnQocC5zdHlsZS5mb250U2l6ZSwxMCkpO3ZhciBDPXAub2Zmc2V0WC0xNSxMPVwiZW5kXCI7YS55YXhpcy5vcHBvc2l0ZSYmKEw9XCJzdGFydFwiKSxzLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ249PT1cImxlZnRcIj8oQz1wLm9mZnNldFgsTD1cInN0YXJ0XCIpOnMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj09PVwiY2VudGVyXCI/KEM9cC5vZmZzZXRYLEw9XCJtaWRkbGVcIik6cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPT09XCJyaWdodFwiJiYoTD1cImVuZFwiKTt2YXIgST1yLmRyYXdUZXh0KHt4OkMseTppK3QrcC5vZmZzZXRZLVMsdGV4dDp2LHRleHRBbmNob3I6TCxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShrKT9rW3hdOmssZm9udFNpemU6cC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnAuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnAuc3R5bGUuZm9udFdlaWdodCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrcC5zdHlsZS5jc3NDbGFzcyxtYXhXaWR0aDpwLm1heFdpZHRofSk7aC5hZGQoSSksSS5vbihcImNsaWNrXCIsZnVuY3Rpb24oRSl7aWYodHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2s9PVwiZnVuY3Rpb25cIil7dmFyIFI9T2JqZWN0LmFzc2lnbih7fSxzLHtsYWJlbEluZGV4Onh9KTtzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKEUsYS5jdHgsUil9fSk7dmFyIHo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHMuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKHoudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh2KT92LmpvaW4oXCIgXCIpOnYsSS5ub2RlLmFwcGVuZENoaWxkKHopLHMuY29uZmlnLnlheGlzW2VdLmxhYmVscy5yb3RhdGUhPT0wKXt2YXIgVD1yLnJvdGF0ZUFyb3VuZENlbnRlcihJLm5vZGUpO0kubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQocy5jb25maWcueWF4aXNbZV0ubGFiZWxzLnJvdGF0ZSxcIiAwIFwiKS5jb25jYXQoVC55LFwiKVwiKSl9aSs9dH0sYj0wO2I8PWMubGVuZ3RoLTE7YisrKWYoYik7aWYocy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCE9PXZvaWQgMCl7dmFyIG09ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlIGFwZXhjaGFydHMteGF4aXMtdGl0bGUtaW52ZXJzZWRcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbitcIiwgMClcIn0pLHc9ci5kcmF3VGV4dCh7eDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRYLHk6cy5nbG9iYWxzLmdyaWRIZWlnaHQvMitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRZLHRleHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIrcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTttLmFkZCh3KSxvLmFkZChtKX12YXIgQT0wO3RoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJnMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiYoQT1zLmdsb2JhbHMuZ3JpZFdpZHRoKTt2YXIgbD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKGwuc2hvdyl7dmFyIHU9ci5kcmF3TGluZShzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtsLm9mZnNldFgrQSwxK2wub2Zmc2V0WSxzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtsLm9mZnNldFgrQSxzLmdsb2JhbHMuZ3JpZEhlaWdodCtsLm9mZnNldFksbC5jb2xvciwwKTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmcy5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHUpOm8uYWRkKHUpfXJldHVybiBzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoQSxjLmxlbmd0aCxzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLHQsbyksb319LHtrZXk6XCJkcmF3WGF4aXNUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLncscz1lO2lmKCEoZTwwfHxlLTI+YS5nbG9iYWxzLmdyaWRXaWR0aCkpe3ZhciByPXRoaXMub2ZmWSthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WTtpZih0PXQrcithLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LGEuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJ0b3BcIiYmKHQ9ci1hLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIG49bmV3IE0odGhpcy5jdHgpLmRyYXdMaW5lKGUrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgscithLmNvbmZpZy54YXhpcy5vZmZzZXRZLHMrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgsdCthLmNvbmZpZy54YXhpcy5vZmZzZXRZLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5jb2xvcik7aS5hZGQobiksbi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzLXRpY2tcIil9fX19LHtrZXk6XCJnZXRYQXhpc1RpY2tzUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1bXSxpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLGE9ZS5nbG9iYWxzLnBhZEhvcml6b250YWw7aWYoZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGk7cysrKWE9dGhpcy54YXhpc0xhYmVsc1tzXS5wb3NpdGlvbix0LnB1c2goYSk7ZWxzZSBmb3IodmFyIHI9aSxuPTA7bjxyO24rKyl7dmFyIG89cjtlLmdsb2JhbHMuaXNYTnVtZXJpYyYmZS5jb25maWcuY2hhcnQudHlwZSE9PVwiYmFyXCImJihvLT0xKSxhKz1lLmdsb2JhbHMuZ3JpZFdpZHRoL28sdC5wdXNoKGEpfXJldHVybiB0fX0se2tleTpcInhBeGlzTGFiZWxDb3JyZWN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9bmV3IE0odGhpcy5jdHgpLGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIiksYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbClcIikscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWQgdGV4dFwiKSxyPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIHRleHQgdHNwYW5cIik7aWYoZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHN8fGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpZm9yKHZhciBuPTA7bjxhLmxlbmd0aDtuKyspe3ZhciBvPXQucm90YXRlQXJvdW5kQ2VudGVyKGFbbl0pO28ueT1vLnktMSxvLng9by54KzEsYVtuXS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KG8ueCxcIiBcIikuY29uY2F0KG8ueSxcIilcIikpLGFbbl0uc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKSxpLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKDAsIFwiLmNvbmNhdCgtMTAsXCIpXCIpKTt2YXIgaD1hW25dLmNoaWxkTm9kZXM7ZS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoaCxmdW5jdGlvbihwKXt0LnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhwLHAudGV4dENvbnRlbnQsZS5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LShlLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwiPzIwOjEwKSl9KX1lbHNlKGZ1bmN0aW9uKCl7Zm9yKHZhciBwPWUuZ2xvYmFscy5ncmlkV2lkdGgvKGUuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKzEpLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGI9YVtmXS5jaGlsZE5vZGVzO2UuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZlLmNvbmZpZy54YXhpcy50eXBlIT09XCJkYXRldGltZVwiJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24obSl7dC5wbGFjZVRleHRXaXRoRWxsaXBzaXMobSxtLnRleHRDb250ZW50LHApfSl9fSkoKTtpZihzLmxlbmd0aD4wKXt2YXIgYz1zW3MubGVuZ3RoLTFdLmdldEJCb3goKSxkPXNbMF0uZ2V0QkJveCgpO2MueDwtMjAmJnNbcy5sZW5ndGgtMV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzW3MubGVuZ3RoLTFdKSxkLngrZC53aWR0aD5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmc1swXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbMF0pO2Zvcih2YXIgZz0wO2c8ci5sZW5ndGg7ZysrKXQucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHJbZ10scltnXS50ZXh0Q29udGVudCxlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMubWF4V2lkdGgtKGUuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQ/MipwYXJzZUZsb2F0KGUuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKTowKS0xNSl9fX1dKSx5fSgpLHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciB0PXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPXQuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSx0aGlzLmF4ZXNVdGlscz1uZXcgYmUoZSksdGhpcy5pc1JhbmdlQmFyPXQuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwsdC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9dC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpKX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd0dyaWRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06bnVsbCx0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KTtlPT09bnVsbCYmKGU9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pKTt2YXIgYT1pLmRyYXdMaW5lKHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsLDEsdC5nbG9iYWxzLnBhZEhvcml6b250YWwsdC5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKSxzPWkuZHJhd0xpbmUodC5nbG9iYWxzLnBhZEhvcml6b250YWwsdC5nbG9iYWxzLmdyaWRIZWlnaHQsdC5nbG9iYWxzLmdyaWRXaWR0aCx0Lmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpO3JldHVybiBlLmFkZChzKSxlLmFkZChhKSxlfX0se2tleTpcImRyYXdHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLncuZ2xvYmFscy5heGlzQ2hhcnRzJiYoZT10aGlzLnJlbmRlckdyaWQoKSx0aGlzLmRyYXdHcmlkQXJlYShlLmVsKSksZX19LHtrZXk6XCJjcmVhdGVHcmlkTWFza1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5nbG9iYWxzLGk9bmV3IE0odGhpcy5jdHgpLGE9QXJyYXkuaXNBcnJheShlLmNvbmZpZy5zdHJva2Uud2lkdGgpPzA6ZS5jb25maWcuc3Ryb2tlLndpZHRoO2lmKEFycmF5LmlzQXJyYXkoZS5jb25maWcuc3Ryb2tlLndpZHRoKSl7dmFyIHM9MDtlLmNvbmZpZy5zdHJva2Uud2lkdGguZm9yRWFjaChmdW5jdGlvbihkKXtzPU1hdGgubWF4KHMsZCl9KSxhPXN9dC5kb20uZWxHcmlkUmVjdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHTlMsXCJjbGlwUGF0aFwiKSx0LmRvbS5lbEdyaWRSZWN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXNrXCIuY29uY2F0KHQuY3VpZCkpLHQuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR05TLFwiY2xpcFBhdGhcIiksdC5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdCh0LmN1aWQpKSx0LmRvbS5lbEZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImNsaXBQYXRoXCIpLHQuZG9tLmVsRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJmb3JlY2FzdE1hc2tcIi5jb25jYXQodC5jdWlkKSksdC5kb20uZWxOb25Gb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHTlMsXCJjbGlwUGF0aFwiKSx0LmRvbS5lbE5vbkZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwibm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KHQuY3VpZCkpO3ZhciByPWUuY29uZmlnLmNoYXJ0LnR5cGUsbj0wLG89MDsocj09PVwiYmFyXCJ8fHI9PT1cInJhbmdlQmFyXCJ8fHI9PT1cImNhbmRsZXN0aWNrXCJ8fHI9PT1cImJveFBsb3RcInx8ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG49ZS5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQsbz1lLmNvbmZpZy5ncmlkLnBhZGRpbmcucmlnaHQsdC5iYXJQYWRGb3JOdW1lcmljQXhpcz5uJiYobj10LmJhclBhZEZvck51bWVyaWNBeGlzLG89dC5iYXJQYWRGb3JOdW1lcmljQXhpcykpLHQuZG9tLmVsR3JpZFJlY3Q9aS5kcmF3UmVjdCgtYS1uLTIsMiotYS0yLHQuZ3JpZFdpZHRoK2ErbytuKzQsdC5ncmlkSGVpZ2h0KzQqYSs0LDAsXCIjZmZmXCIpO3ZhciBoPWUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKzE7dC5kb20uZWxHcmlkUmVjdE1hcmtlcj1pLmRyYXdSZWN0KDIqLWgsMiotaCx0LmdyaWRXaWR0aCs0KmgsdC5ncmlkSGVpZ2h0KzQqaCwwLFwiI2ZmZlwiKSx0LmRvbS5lbEdyaWRSZWN0TWFzay5hcHBlbmRDaGlsZCh0LmRvbS5lbEdyaWRSZWN0Lm5vZGUpLHQuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLmFwcGVuZENoaWxkKHQuZG9tLmVsR3JpZFJlY3RNYXJrZXIubm9kZSk7dmFyIGM9dC5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJkZWZzXCIpO2MuYXBwZW5kQ2hpbGQodC5kb20uZWxHcmlkUmVjdE1hc2spLGMuYXBwZW5kQ2hpbGQodC5kb20uZWxGb3JlY2FzdE1hc2spLGMuYXBwZW5kQ2hpbGQodC5kb20uZWxOb25Gb3JlY2FzdE1hc2spLGMuYXBwZW5kQ2hpbGQodC5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2spfX0se2tleTpcIl9kcmF3R3JpZExpbmVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pLGk9ZS54MSxhPWUueTEscz1lLngyLHI9ZS55MixuPWUueENvdW50LG89ZS5wYXJlbnQsaD10aGlzLnc7aWYoISh0PT09MCYmaC5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWx8fHQ9PT1uLTEmJmguZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJiFoLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxoLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRhclwiKSl7aC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6dCx4MTppLHkxOmEseDI6cyx5MjpyLHhDb3VudDpuLHBhcmVudDpvfSk7dmFyIGM9MDtpZihoLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMmJmguY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQ9PT1cImJldHdlZW5cIil7dmFyIGQ9aC5nbG9iYWxzLmdyb3VwcztpZihkKXtmb3IodmFyIGc9MCxwPTA7Zzx0JiZwPGQubGVuZ3RoO3ArKylnKz1kW3BdLmNvbHM7Zz09PXQmJihjPS42KmguZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodCl9fW5ldyB6ZSh0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MoaSxjLGguZ2xvYmFscy5kb20uZWxHcmFwaGljYWwpfX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pLGk9ZS54MSxhPWUueTEscz1lLngyLHI9ZS55MixuPWUueENvdW50LG89ZS5wYXJlbnQsaD10aGlzLncsYz0hMSxkPW8ubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCIpLGc9aC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXkscD1oLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7KGE9PT0wJiZyPT09MHx8aT09PTAmJnM9PT0wKSYmKGM9ITApLGE9PT1oLmdsb2JhbHMuZ3JpZEhlaWdodCYmcj09PWguZ2xvYmFscy5ncmlkSGVpZ2h0JiYoYz0hMCksIWguZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHQhPT0wJiZ0IT09bi0xfHwoYz0hMCk7dmFyIGY9bmV3IE0odGhpcykuZHJhd0xpbmUoaS0oZD9wOjApLGEscysoZD9wOjApLHIsaC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixnKTtmLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZGxpbmVcIiksYyYmaC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxHcmlkQm9yZGVycy5hZGQoZik6by5hZGQoZil9fSx7a2V5OlwiX2RyYXdHcmlkQmFuZFJlY3RcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmMsaT1lLngxLGE9ZS55MSxzPWUueDIscj1lLnkyLG49ZS50eXBlLG89dGhpcy53LGg9bmV3IE0odGhpcy5jdHgpLGM9by5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKG4hPT1cImNvbHVtblwifHxvLmNvbmZpZy54YXhpcy50eXBlIT09XCJkYXRldGltZVwiKXt2YXIgZD1vLmNvbmZpZy5ncmlkW25dLmNvbG9yc1t0XSxnPWguZHJhd1JlY3QoaS0obj09PVwicm93XCI/YzowKSxhLHMrKG49PT1cInJvd1wiPzIqYzowKSxyLDAsZCxvLmNvbmZpZy5ncmlkW25dLm9wYWNpdHkpO3RoaXMuZWxnLmFkZChnKSxnLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSksZy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWQtXCIuY29uY2F0KG4pKX19fSx7a2V5OlwiX2RyYXdYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWUueENvdW50LGE9ZS50aWNrQW1vdW50LHM9dGhpcy53O2lmKHMuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8cy5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciByLG49cy5nbG9iYWxzLnBhZEhvcml6b250YWwsbz1zLmdsb2JhbHMuZ3JpZEhlaWdodDtzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD9mdW5jdGlvbihmKXtmb3IodmFyIGI9Zi54QyxtPWYueDEsdz1mLnkxLEE9Zi54MixsPWYueTIsdT0wO3U8Yjt1KyspbT10LnhheGlzTGFiZWxzW3VdLnBvc2l0aW9uLEE9dC54YXhpc0xhYmVsc1t1XS5wb3NpdGlvbix0Ll9kcmF3R3JpZExpbmVzKHtpOnUseDE6bSx5MTp3LHgyOkEseTI6bCx4Q291bnQ6aSxwYXJlbnQ6dC5lbGdyaWRMaW5lc1Z9KX0oe3hDOmkseDE6bix5MTowLHgyOnIseTI6b30pOihzLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9cy5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksZnVuY3Rpb24oZil7Zm9yKHZhciBiPWYueEMsbT1mLngxLHc9Zi55MSxBPWYueDIsbD1mLnkyLHU9MDt1PGIrKHMuZ2xvYmFscy5pc1hOdW1lcmljPzA6MSk7dSsrKXU9PT0wJiZiPT09MSYmcy5nbG9iYWxzLmRhdGFQb2ludHM9PT0xJiYoQT1tPXMuZ2xvYmFscy5ncmlkV2lkdGgvMiksdC5fZHJhd0dyaWRMaW5lcyh7aTp1LHgxOm0seTE6dyx4MjpBLHkyOmwseENvdW50OmkscGFyZW50OnQuZWxncmlkTGluZXNWfSksQT1tKz1zLmdsb2JhbHMuZ3JpZFdpZHRoLyhzLmdsb2JhbHMuaXNYTnVtZXJpYz9iLTE6Yil9KHt4QzppLHgxOm4seTE6MCx4MjpyLHkyOm99KSl9aWYocy5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KXt2YXIgaD0wLGM9MCxkPXMuZ2xvYmFscy5ncmlkV2lkdGgsZz1hKzE7dGhpcy5pc1JhbmdlQmFyJiYoZz1zLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7Zm9yKHZhciBwPTA7cDxnKyh0aGlzLmlzUmFuZ2VCYXI/MTowKTtwKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOnAseENvdW50OmcrKHRoaXMuaXNSYW5nZUJhcj8xOjApLHgxOjAseTE6aCx4MjpkLHkyOmMscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksYz1oKz1zLmdsb2JhbHMuZ3JpZEhlaWdodC8odGhpcy5pc1JhbmdlQmFyP2c6YSl9fX0se2tleTpcIl9kcmF3SW52ZXJ0ZWRYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54Q291bnQsaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIGEscz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxyPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LG49MDtuPHQrMTtuKyspaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6bix4Q291bnQ6dCsxLHgxOnMseTE6MCx4MjphLHkyOnIscGFyZW50OnRoaXMuZWxncmlkTGluZXNWfSksbmV3IHplKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhzLDAsaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCksYT1zPXMraS5nbG9iYWxzLmdyaWRXaWR0aC90Ky4zO2lmKGkuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdylmb3IodmFyIG89MCxoPTAsYz1pLmdsb2JhbHMuZ3JpZFdpZHRoLGQ9MDtkPGkuZ2xvYmFscy5kYXRhUG9pbnRzKzE7ZCsrKXRoaXMuX2RyYXdHcmlkTGluZSh7aTpkLHhDb3VudDppLmdsb2JhbHMuZGF0YVBvaW50cysxLHgxOjAseTE6byx4MjpjLHkyOmgscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksaD1vKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuZGF0YVBvaW50c319LHtrZXk6XCJyZW5kZXJHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCk7dGhpcy5lbGc9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pLHRoaXMuZWxncmlkTGluZXNIPXQuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbFwifSksdGhpcy5lbGdyaWRMaW5lc1Y9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbFwifSksdGhpcy5lbEdyaWRCb3JkZXJzPXQuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkLWJvcmRlcnNcIn0pLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzSCksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNWKSxlLmNvbmZpZy5ncmlkLnNob3d8fCh0aGlzLmVsZ3JpZExpbmVzVi5oaWRlKCksdGhpcy5lbGdyaWRMaW5lc0guaGlkZSgpLHRoaXMuZWxHcmlkQm9yZGVycy5oaWRlKCkpO2Zvcih2YXIgaSxhPWUuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aD9lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQubGVuZ3RoLTE6NSxzPTA7czxlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKGUuZ2xvYmFscy55QXhpc1NjYWxlW3NdIT09dm9pZCAwJiYoYT1lLmdsb2JhbHMueUF4aXNTY2FsZVtzXS5yZXN1bHQubGVuZ3RoLTEpLCEoYT4yKSk7cysrKTtpZighZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5pc1JhbmdlQmFyKXt2YXIgcixuLG87aT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCx0aGlzLmlzUmFuZ2VCYXImJihpLS0sYT1lLmdsb2JhbHMubGFiZWxzLmxlbmd0aCxlLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZlLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiYoaT1lLmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSwoKHI9ZS5nbG9iYWxzLnlBeGlzU2NhbGUpPT09bnVsbHx8cj09PXZvaWQgMHx8KG49clswXSk9PT1udWxsfHxuPT09dm9pZCAwfHwobz1uLnJlc3VsdCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmxlbmd0aCk+MCYmZS5jb25maWcueGF4aXMudHlwZSE9PVwiZGF0ZXRpbWVcIiYmKGk9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0Lmxlbmd0aC0xKSksdGhpcy5fZHJhd1hZTGluZXMoe3hDb3VudDppLHRpY2tBbW91bnQ6YX0pfWVsc2UgaT1hLGE9ZS5nbG9iYWxzLnhUaWNrQW1vdW50LHRoaXMuX2RyYXdJbnZlcnRlZFhZTGluZXMoe3hDb3VudDppLHRpY2tBbW91bnQ6YX0pO3JldHVybiB0aGlzLmRyYXdHcmlkQmFuZHMoaSxhKSx7ZWw6dGhpcy5lbGcsZWxHcmlkQm9yZGVyczp0aGlzLmVsR3JpZEJvcmRlcnMseEF4aXNUaWNrV2lkdGg6ZS5nbG9iYWxzLmdyaWRXaWR0aC9pfX19LHtrZXk6XCJkcmF3R3JpZEJhbmRzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC5yb3cuY29sb3JzIT09dm9pZCAwJiZpLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoPjApZm9yKHZhciBhPTAscz1pLmdsb2JhbHMuZ3JpZEhlaWdodC90LHI9aS5nbG9iYWxzLmdyaWRXaWR0aCxuPTAsbz0wO248dDtuKyssbysrKW8+PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGgmJihvPTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6byx4MTowLHkxOmEseDI6cix5MjpzLHR5cGU6XCJyb3dcIn0pLGErPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L3Q7aWYoaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzIT09dm9pZCAwJiZpLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoPjApZm9yKHZhciBoPWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fGkuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQhPT1cIm9uXCJ8fGkuY29uZmlnLnhheGlzLnR5cGUhPT1cImNhdGVnb3J5XCImJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/ZTplLTEsYz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxkPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsK2kuZ2xvYmFscy5ncmlkV2lkdGgvaCxnPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LHA9MCxmPTA7cDxlO3ArKyxmKyspZj49aS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aCYmKGY9MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7YzpmLHgxOmMseTE6MCx4MjpkLHkyOmcsdHlwZTpcImNvbHVtblwifSksYys9aS5nbG9iYWxzLmdyaWRXaWR0aC9ofX1dKSx5fSgpLGtlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJuaWNlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTo1LGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOjAscz1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMCxyPXRoaXMudyxuPU1hdGguYWJzKHQtZSk7aWYoKGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxuKSk9PT1cImRhdGFQb2ludHNcIiYmKGk9ci5nbG9iYWxzLmRhdGFQb2ludHMtMSksZT09PU51bWJlci5NSU5fVkFMVUUmJnQ9PT0wfHwhUC5pc051bWJlcihlKSYmIVAuaXNOdW1iZXIodCl8fGU9PT1OdW1iZXIuTUlOX1ZBTFVFJiZ0PT09LU51bWJlci5NQVhfVkFMVUUpcmV0dXJuIGU9MCx0PWksdGhpcy5saW5lYXJTY2FsZShlLHQsaSxhLHIuY29uZmlnLnlheGlzW2FdLnN0ZXBTaXplKTtlPnQ/KGNvbnNvbGUud2FybihcImF4aXMubWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gYXhpcy5tYXhcIiksdD1lKy4xKTplPT09dCYmKGU9ZT09PTA/MDplLS41LHQ9dD09PTA/Mjp0Ky41KTt2YXIgbz1bXTtuPDEmJnMmJihyLmNvbmZpZy5jaGFydC50eXBlPT09XCJjYW5kbGVzdGlja1wifHxyLmNvbmZpZy5zZXJpZXNbYV0udHlwZT09PVwiY2FuZGxlc3RpY2tcInx8ci5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwifHxyLmNvbmZpZy5zZXJpZXNbYV0udHlwZT09PVwiYm94UGxvdFwifHxyLmdsb2JhbHMuaXNSYW5nZURhdGEpJiYodCo9MS4wMSk7dmFyIGg9aSsxO2g8Mj9oPTI6aD4yJiYoaC09Mik7dmFyIGM9bi9oLGQ9TWF0aC5mbG9vcihQLmxvZzEwKGMpKSxnPU1hdGgucG93KDEwLGQpLHA9TWF0aC5yb3VuZChjL2cpO3A8MSYmKHA9MSk7dmFyIGY9cCpnO3IuY29uZmlnLnlheGlzW2FdLnN0ZXBTaXplJiYoZj1yLmNvbmZpZy55YXhpc1thXS5zdGVwU2l6ZSksci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmci5jb25maWcueGF4aXMuc3RlcFNpemUmJnIuY29uZmlnLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCImJihmPXIuY29uZmlnLnhheGlzLnN0ZXBTaXplKTt2YXIgYj1mKk1hdGguZmxvb3IoZS9mKSxtPWYqTWF0aC5jZWlsKHQvZiksdz1iO2lmKHMmJm4+Mil7Zm9yKDtvLnB1c2goUC5zdHJpcE51bWJlcih3LDcpKSwhKCh3Kz1mKT5tKTspO3JldHVybntyZXN1bHQ6byxuaWNlTWluOm9bMF0sbmljZU1heDpvW28ubGVuZ3RoLTFdfX12YXIgQT1lOyhvPVtdKS5wdXNoKFAuc3RyaXBOdW1iZXIoQSw3KSk7Zm9yKHZhciBsPU1hdGguYWJzKHQtZSkvaSx1PTA7dTw9aTt1KyspQSs9bCxvLnB1c2goQSk7cmV0dXJuIG9bby5sZW5ndGgtMl0+PXQmJm8ucG9wKCkse3Jlc3VsdDpvLG5pY2VNaW46b1swXSxuaWNlTWF4Om9bby5sZW5ndGgtMV19fX0se2tleTpcImxpbmVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06NSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOnZvaWQgMCxyPU1hdGguYWJzKHQtZSk7KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxyKSk9PT1cImRhdGFQb2ludHNcIiYmKGk9dGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50cy0xKSxzfHwocz1yL2kpLGk9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT01LHM9MSk7Zm9yKHZhciBuPVtdLG89ZTtpPj0wOyluLnB1c2gobyksbys9cyxpLT0xO3JldHVybntyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlTmljZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt0PD0wJiYodD1NYXRoLm1heChlLGkpKSxlPD0wJiYoZT1NYXRoLm1pbih0LGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5sb2coaSkrMSkscj1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgubG9nKGkpKTtyPHM7cisrKWEucHVzaChNYXRoLnBvdyhpLHIpKTtyZXR1cm57cmVzdWx0OmEsbmljZU1pbjphWzBdLG5pY2VNYXg6YVthLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt0PD0wJiYodD1NYXRoLm1heChlLGkpKSxlPD0wJiYoZT1NYXRoLm1pbih0LGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSxyPU1hdGgubG9nKGUpL01hdGgubG9nKGkpLG49cy1yLG89TWF0aC5yb3VuZChuKSxoPW4vbyxjPTAsZD1yO2M8bztjKyssZCs9aClhLnB1c2goTWF0aC5wb3coaSxkKSk7cmV0dXJuIGEucHVzaChNYXRoLnBvdyhpLHMpKSx7cmVzdWx0OmEsbmljZU1pbjplLG5pY2VNYXg6dH19fSx7a2V5OlwiX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1lO2lmKHQhPT12b2lkIDAmJnRoaXMudy5jb25maWcueWF4aXNbdF0ubGFiZWxzLmZvcm1hdHRlciYmdGhpcy53LmNvbmZpZy55YXhpc1t0XS50aWNrQW1vdW50PT09dm9pZCAwKXt2YXIgcz1OdW1iZXIodGhpcy53LmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuZm9ybWF0dGVyKDEpKTtQLmlzTnVtYmVyKHMpJiZ0aGlzLncuZ2xvYmFscy55VmFsdWVEZWNpbWFsPT09MCYmKGE9TWF0aC5jZWlsKGkpKX1yZXR1cm4gYTxlP2E6ZX19LHtrZXk6XCJzZXRZU2NhbGVGb3JJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLncuZ2xvYmFscyxzPXRoaXMudy5jb25maWcscj1hLmlzQmFySG9yaXpvbnRhbD9zLnhheGlzOnMueWF4aXNbZV07YS55QXhpc1NjYWxlW2VdPT09dm9pZCAwJiYoYS55QXhpc1NjYWxlW2VdPVtdKTt2YXIgbj1NYXRoLmFicyhpLXQpO2lmKHIubG9nYXJpdGhtaWMmJm48PTUmJihhLmludmFsaWRMb2dTY2FsZT0hMCksci5sb2dhcml0aG1pYyYmbj41KWEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLGEueUF4aXNTY2FsZVtlXT10aGlzLmxvZ2FyaXRobWljU2NhbGUodCxpLHIubG9nQmFzZSksYS55QXhpc1NjYWxlW2VdPXIuZm9yY2VOaWNlU2NhbGU/dGhpcy5sb2dhcml0aG1pY1NjYWxlTmljZSh0LGksci5sb2dCYXNlKTp0aGlzLmxvZ2FyaXRobWljU2NhbGUodCxpLHIubG9nQmFzZSk7ZWxzZSBpZihpIT09LU51bWJlci5NQVhfVkFMVUUmJlAuaXNOdW1iZXIoaSkpaWYoYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsci5taW49PT12b2lkIDAmJnIubWF4PT09dm9pZCAwfHxyLmZvcmNlTmljZVNjYWxlKXt2YXIgbz1zLnlheGlzW2VdLm1heD09PXZvaWQgMCYmcy55YXhpc1tlXS5taW49PT12b2lkIDB8fHMueWF4aXNbZV0uZm9yY2VOaWNlU2NhbGU7YS55QXhpc1NjYWxlW2VdPXRoaXMubmljZVNjYWxlKHQsaSxyLnRpY2tBbW91bnQ/ci50aWNrQW1vdW50Om48NSYmbj4xP24rMTo1LGUsbyl9ZWxzZSBhLnlBeGlzU2NhbGVbZV09dGhpcy5saW5lYXJTY2FsZSh0LGksci50aWNrQW1vdW50LGUscy55YXhpc1tlXS5zdGVwU2l6ZSk7ZWxzZSBhLnlBeGlzU2NhbGVbZV09dGhpcy5saW5lYXJTY2FsZSgwLDUsNSxlLHMueWF4aXNbZV0uc3RlcFNpemUpfX0se2tleTpcInNldFhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9TWF0aC5hYnModC1lKTtyZXR1cm4gdCE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZQLmlzTnVtYmVyKHQpP2EueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKGUsdCxpLmNvbmZpZy54YXhpcy50aWNrQW1vdW50P2kuY29uZmlnLnhheGlzLnRpY2tBbW91bnQ6czw1JiZzPjE/cysxOjUsMCxpLmNvbmZpZy54YXhpcy5zdGVwU2l6ZSk6YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpLGEueEF4aXNTY2FsZX19LHtrZXk6XCJzZXRNdWx0aXBsZVlTY2FsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT10Lm1pbllBcnIuY29uY2F0KFtdKSxzPXQubWF4WUFyci5jb25jYXQoW10pLHI9W107aS55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKG4sbyl7dmFyIGg9bztpLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGcscCl7Zy5uYW1lPT09bi5zZXJpZXNOYW1lJiYoaD1wLG8hPT1wP3IucHVzaCh7aW5kZXg6cCxzaW1pbGFySW5kZXg6byxhbHJlYWR5RXhpc3RzOiEwfSk6ci5wdXNoKHtpbmRleDpwfSkpfSk7dmFyIGM9YVtoXSxkPXNbaF07ZS5zZXRZU2NhbGVGb3JJbmRleChvLGMsZCl9KSx0aGlzLnNhbWVTY2FsZUluTXVsdGlwbGVBeGVzKGEscyxyKX19LHtrZXk6XCJzYW1lU2NhbGVJbk11bHRpcGxlQXhlc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG49W107aS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuYWxyZWFkeUV4aXN0cyYmKG5bYi5pbmRleF09PT12b2lkIDAmJihuW2IuaW5kZXhdPVtdKSxuW2IuaW5kZXhdLnB1c2goYi5pbmRleCksbltiLmluZGV4XS5wdXNoKGIuc2ltaWxhckluZGV4KSl9KSxyLnlBeGlzU2FtZVNjYWxlSW5kaWNlcz1uLG4uZm9yRWFjaChmdW5jdGlvbihiLG0pe24uZm9yRWFjaChmdW5jdGlvbih3LEEpe3ZhciBsLHU7bSE9PUEmJihsPWIsdT13LGwuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB1LmluZGV4T2YoeCkhPT0tMX0pKS5sZW5ndGg+MCYmKG5bbV09blttXS5jb25jYXQobltBXSkpfSl9KTt2YXIgbz1uLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5maWx0ZXIoZnVuY3Rpb24obSx3KXtyZXR1cm4gYi5pbmRleE9mKG0pPT09d30pfSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLnNvcnQoKX0pO249bi5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuISFifSk7dmFyIGg9by5zbGljZSgpLGM9aC5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGIpfSk7aD1oLmZpbHRlcihmdW5jdGlvbihiLG0pe3JldHVybiBjLmluZGV4T2YoSlNPTi5zdHJpbmdpZnkoYikpPT09bX0pO3ZhciBkPVtdLGc9W107ZS5mb3JFYWNoKGZ1bmN0aW9uKGIsbSl7aC5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7dy5pbmRleE9mKG0pPi0xJiYoZFtBXT09PXZvaWQgMCYmKGRbQV09W10sZ1tBXT1bXSksZFtBXS5wdXNoKHtrZXk6bSx2YWx1ZTpifSksZ1tBXS5wdXNoKHtrZXk6bSx2YWx1ZTp0W21dfSkpfSl9KTt2YXIgcD1BcnJheS5hcHBseShudWxsLEFycmF5KGgubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZixOdW1iZXIuTUlOX1ZBTFVFKSxmPUFycmF5LmFwcGx5KG51bGwsQXJyYXkoaC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLC1OdW1iZXIuTUFYX1ZBTFVFKTtkLmZvckVhY2goZnVuY3Rpb24oYixtKXtiLmZvckVhY2goZnVuY3Rpb24odyxBKXtwW21dPU1hdGgubWluKHcudmFsdWUscFttXSl9KX0pLGcuZm9yRWFjaChmdW5jdGlvbihiLG0pe2IuZm9yRWFjaChmdW5jdGlvbih3LEEpe2ZbbV09TWF0aC5tYXgody52YWx1ZSxmW21dKX0pfSksZS5mb3JFYWNoKGZ1bmN0aW9uKGIsbSl7Zy5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7dmFyIGw9cFtBXSx1PWZbQV07cy5jaGFydC5zdGFja2VkJiYodT0wLHcuZm9yRWFjaChmdW5jdGlvbih4LHYpe3gudmFsdWUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmKHUrPXgudmFsdWUpLGwhPT1OdW1iZXIuTUlOX1ZBTFVFJiYobCs9ZFtBXVt2XS52YWx1ZSl9KSksdy5mb3JFYWNoKGZ1bmN0aW9uKHgsdil7d1t2XS5rZXk9PT1tJiYocy55YXhpc1ttXS5taW4hPT12b2lkIDAmJihsPXR5cGVvZiBzLnlheGlzW21dLm1pbj09XCJmdW5jdGlvblwiP3MueWF4aXNbbV0ubWluKHIubWluWSk6cy55YXhpc1ttXS5taW4pLHMueWF4aXNbbV0ubWF4IT09dm9pZCAwJiYodT10eXBlb2Ygcy55YXhpc1ttXS5tYXg9PVwiZnVuY3Rpb25cIj9zLnlheGlzW21dLm1heChyLm1heFkpOnMueWF4aXNbbV0ubWF4KSxhLnNldFlTY2FsZUZvckluZGV4KG0sbCx1KSl9KX0pfSl9fSx7a2V5OlwiYXV0b1NjYWxlWVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtlfHwoZT10aGlzKTt2YXIgYT1lLnc7aWYoYS5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpc3x8YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgpcmV0dXJuIGNvbnNvbGUud2FybihcImF1dG9TY2FsZVlheGlzIG5vdCBzdXBwb3J0ZWQgaW4gYSBtdWx0aS15YXhpcyBjaGFydC5cIiksdDt2YXIgcz1hLmdsb2JhbHMuc2VyaWVzWFswXSxyPWEuY29uZmlnLmNoYXJ0LnN0YWNrZWQ7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihuLG8pe2Zvcih2YXIgaD0wLGM9MDtjPHMubGVuZ3RoO2MrKylpZihzW2NdPj1pLnhheGlzLm1pbil7aD1jO2JyZWFrfXZhciBkLGcscD1hLmdsb2JhbHMubWluWUFycltvXSxmPWEuZ2xvYmFscy5tYXhZQXJyW29dLGI9YS5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHM7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKG0sdyl7dmFyIEE9bVtoXTtyPyhBPWJbaF0sZD1nPUEsYi5mb3JFYWNoKGZ1bmN0aW9uKGwsdSl7c1t1XTw9aS54YXhpcy5tYXgmJnNbdV0+PWkueGF4aXMubWluJiYobD5nJiZsIT09bnVsbCYmKGc9bCksbVt1XTxkJiZtW3VdIT09bnVsbCYmKGQ9bVt1XSkpfSkpOihkPWc9QSxtLmZvckVhY2goZnVuY3Rpb24obCx1KXtpZihzW3VdPD1pLnhheGlzLm1heCYmc1t1XT49aS54YXhpcy5taW4pe3ZhciB4PWwsdj1sO2EuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihrLFMpe2whPT1udWxsJiYoeD1NYXRoLm1pbihrW3VdLHgpLHY9TWF0aC5tYXgoa1t1XSx2KSl9KSx2PmcmJnYhPT1udWxsJiYoZz12KSx4PGQmJnghPT1udWxsJiYoZD14KX19KSksZD09PXZvaWQgMCYmZz09PXZvaWQgMCYmKGQ9cCxnPWYpLGcqPWc8MD8uOToxLjEsKGQqPWQ8MD8xLjE6LjkpPT09MCYmZz09PTAmJihkPS0xLGc9MSksZzwwJiZnPGYmJihnPWYpLGQ8MCYmZD5wJiYoZD1wKSx0Lmxlbmd0aD4xPyh0W3ddLm1pbj1uLm1pbj09PXZvaWQgMD9kOm4ubWluLHRbd10ubWF4PW4ubWF4PT09dm9pZCAwP2c6bi5tYXgpOih0WzBdLm1pbj1uLm1pbj09PXZvaWQgMD9kOm4ubWluLHRbMF0ubWF4PW4ubWF4PT09dm9pZCAwP2c6bi5tYXgpfSl9KSx0fX1dKSx5fSgpLEJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc2NhbGVzPW5ldyBrZShlKX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRZUmFuZ2UoKSx0aGlzLnNldFhSYW5nZSgpLHRoaXMuc2V0WlJhbmdlKCl9fSx7a2V5OlwiZ2V0TWluWU1heFlcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG49LU51bWJlci5NQVhfVkFMVUUsbz1OdW1iZXIuTUlOX1ZBTFVFO2E9PT1udWxsJiYoYT1lKzEpO3ZhciBoPXIuc2VyaWVzLGM9aCxkPWg7cy5jaGFydC50eXBlPT09XCJjYW5kbGVzdGlja1wiPyhjPXIuc2VyaWVzQ2FuZGxlTCxkPXIuc2VyaWVzQ2FuZGxlSCk6cy5jaGFydC50eXBlPT09XCJib3hQbG90XCI/KGM9ci5zZXJpZXNDYW5kbGVPLGQ9ci5zZXJpZXNDYW5kbGVDKTpyLmlzUmFuZ2VEYXRhJiYoYz1yLnNlcmllc1JhbmdlU3RhcnQsZD1yLnNlcmllc1JhbmdlRW5kKTtmb3IodmFyIGc9ZTtnPGE7ZysrKXtyLmRhdGFQb2ludHM9TWF0aC5tYXgoci5kYXRhUG9pbnRzLGhbZ10ubGVuZ3RoKSxyLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHIuZGF0YVBvaW50cz1yLmNhdGVnb3J5TGFiZWxzLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYiE9PXZvaWQgMH0pLmxlbmd0aCksci5sYWJlbHMubGVuZ3RoJiZzLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCImJnIuc2VyaWVzLnJlZHVjZShmdW5jdGlvbihiLG0pe3JldHVybiBiK20ubGVuZ3RofSwwKSE9PTAmJihyLmRhdGFQb2ludHM9TWF0aC5tYXgoci5kYXRhUG9pbnRzLHIubGFiZWxzLmxlbmd0aCkpO2Zvcih2YXIgcD0wO3A8ci5zZXJpZXNbZ10ubGVuZ3RoO3ArKyl7dmFyIGY9aFtnXVtwXTtmIT09bnVsbCYmUC5pc051bWJlcihmKT8oZFtnXVtwXSE9PXZvaWQgMCYmKG49TWF0aC5tYXgobixkW2ddW3BdKSx0PU1hdGgubWluKHQsZFtnXVtwXSkpLGNbZ11bcF0hPT12b2lkIDAmJih0PU1hdGgubWluKHQsY1tnXVtwXSksaT1NYXRoLm1heChpLGNbZ11bcF0pKSx0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImNhbmRsZXN0aWNrXCImJnRoaXMudy5jb25maWcuY2hhcnQudHlwZSE9PVwiYm94UGxvdFwiJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhbmdlQXJlYVwiJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCJ8fCh0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImNhbmRsZXN0aWNrXCImJnRoaXMudy5jb25maWcuY2hhcnQudHlwZSE9PVwiYm94UGxvdFwifHxyLnNlcmllc0NhbmRsZUNbZ11bcF0hPT12b2lkIDAmJihuPU1hdGgubWF4KG4sci5zZXJpZXNDYW5kbGVPW2ddW3BdKSxuPU1hdGgubWF4KG4sci5zZXJpZXNDYW5kbGVIW2ddW3BdKSxuPU1hdGgubWF4KG4sci5zZXJpZXNDYW5kbGVMW2ddW3BdKSxuPU1hdGgubWF4KG4sci5zZXJpZXNDYW5kbGVDW2ddW3BdKSx0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcIiYmKG49TWF0aC5tYXgobixyLnNlcmllc0NhbmRsZU1bZ11bcF0pKSksIXMuc2VyaWVzW2ddLnR5cGV8fHMuc2VyaWVzW2ddLnR5cGU9PT1cImNhbmRsZXN0aWNrXCImJnMuc2VyaWVzW2ddLnR5cGU9PT1cImJveFBsb3RcIiYmcy5zZXJpZXNbZ10udHlwZT09PVwicmFuZ2VBcmVhXCImJnMuc2VyaWVzW2ddLnR5cGU9PT1cInJhbmdlQmFyXCJ8fChuPU1hdGgubWF4KG4sci5zZXJpZXNbZ11bcF0pLHQ9TWF0aC5taW4odCxyLnNlcmllc1tnXVtwXSkpLGk9biksci5zZXJpZXNHb2Fsc1tnXSYmci5zZXJpZXNHb2Fsc1tnXVtwXSYmQXJyYXkuaXNBcnJheShyLnNlcmllc0dvYWxzW2ddW3BdKSYmci5zZXJpZXNHb2Fsc1tnXVtwXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe28hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobz1NYXRoLm1pbihvLGIudmFsdWUpLHQ9byksbj1NYXRoLm1heChuLGIudmFsdWUpLGk9bn0pLFAuaXNGbG9hdChmKSYmKGY9UC5ub0V4cG9uZW50cyhmKSxyLnlWYWx1ZURlY2ltYWw9TWF0aC5tYXgoci55VmFsdWVEZWNpbWFsLGYudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0ubGVuZ3RoKSksbz5jW2ddW3BdJiZjW2ddW3BdPDAmJihvPWNbZ11bcF0pKTpyLmhhc051bGxWYWx1ZXM9ITB9fXJldHVybiBzLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCImJnIuc2VyaWVzUmFuZ2VTdGFydC5sZW5ndGgmJnIuaXNCYXJIb3Jpem9udGFsJiYobz10KSxzLmNoYXJ0LnR5cGU9PT1cImJhclwiJiYobzwwJiZuPDAmJihuPTApLG89PT1OdW1iZXIuTUlOX1ZBTFVFJiYobz0wKSkse21pblk6byxtYXhZOm4sbG93ZXN0WTp0LGhpZ2hlc3RZOml9fX0se2tleTpcInNldFlSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsdD10aGlzLncuY29uZmlnO2UubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblk9TnVtYmVyLk1JTl9WQUxVRTt2YXIgaT1OdW1iZXIuTUFYX1ZBTFVFO2lmKGUuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYT0wO2E8ZS5zZXJpZXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy5nZXRNaW5ZTWF4WShhLGksbnVsbCxhKzEpO2UubWluWUFyci5wdXNoKHMubWluWSksZS5tYXhZQXJyLnB1c2gocy5tYXhZKSxpPXMubG93ZXN0WX12YXIgcj10aGlzLmdldE1pbllNYXhZKDAsaSxudWxsLGUuc2VyaWVzLmxlbmd0aCk7aWYoZS5taW5ZPXIubWluWSxlLm1heFk9ci5tYXhZLGk9ci5sb3dlc3RZLHQuY2hhcnQuc3RhY2tlZCYmdGhpcy5fc2V0U3RhY2tlZE1pbk1heCgpLCh0LmNoYXJ0LnR5cGU9PT1cImxpbmVcInx8dC5jaGFydC50eXBlPT09XCJhcmVhXCJ8fHQuY2hhcnQudHlwZT09PVwiY2FuZGxlc3RpY2tcInx8dC5jaGFydC50eXBlPT09XCJib3hQbG90XCJ8fHQuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcIiYmIWUuaXNCYXJIb3Jpem9udGFsKSYmZS5taW5ZPT09TnVtYmVyLk1JTl9WQUxVRSYmaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZpIT09ZS5tYXhZKXt2YXIgbj1lLm1heFktaTsoaT49MCYmaTw9MTB8fHQueWF4aXNbMF0ubWluIT09dm9pZCAwfHx0LnlheGlzWzBdLm1heCE9PXZvaWQgMCkmJihuPTApLGUubWluWT1pLTUqbi8xMDAsaT4wJiZlLm1pblk8MCYmKGUubWluWT0wKSxlLm1heFk9ZS5tYXhZKzUqbi8xMDB9cmV0dXJuIHQueWF4aXMuZm9yRWFjaChmdW5jdGlvbihvLGgpe28ubWF4IT09dm9pZCAwJiYodHlwZW9mIG8ubWF4PT1cIm51bWJlclwiP2UubWF4WUFycltoXT1vLm1heDp0eXBlb2Ygby5tYXg9PVwiZnVuY3Rpb25cIiYmKGUubWF4WUFycltoXT1vLm1heChlLmlzTXVsdGlwbGVZQXhpcz9lLm1heFlBcnJbaF06ZS5tYXhZKSksZS5tYXhZPWUubWF4WUFycltoXSksby5taW4hPT12b2lkIDAmJih0eXBlb2Ygby5taW49PVwibnVtYmVyXCI/ZS5taW5ZQXJyW2hdPW8ubWluOnR5cGVvZiBvLm1pbj09XCJmdW5jdGlvblwiJiYoZS5taW5ZQXJyW2hdPW8ubWluKGUuaXNNdWx0aXBsZVlBeGlzP2UubWluWUFycltoXT09PU51bWJlci5NSU5fVkFMVUU/MDplLm1pbllBcnJbaF06ZS5taW5ZKSksZS5taW5ZPWUubWluWUFycltoXSl9KSxlLmlzQmFySG9yaXpvbnRhbCYmW1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaChmdW5jdGlvbihvKXt0LnhheGlzW29dIT09dm9pZCAwJiZ0eXBlb2YgdC54YXhpc1tvXT09XCJudW1iZXJcIiYmKG89PT1cIm1pblwiP2UubWluWT10LnhheGlzW29dOmUubWF4WT10LnhheGlzW29dKX0pLGUuaXNNdWx0aXBsZVlBeGlzPyh0aGlzLnNjYWxlcy5zZXRNdWx0aXBsZVlTY2FsZXMoKSxlLm1pblk9aSxlLnlBeGlzU2NhbGUuZm9yRWFjaChmdW5jdGlvbihvLGgpe2UubWluWUFycltoXT1vLm5pY2VNaW4sZS5tYXhZQXJyW2hdPW8ubmljZU1heH0pKToodGhpcy5zY2FsZXMuc2V0WVNjYWxlRm9ySW5kZXgoMCxlLm1pblksZS5tYXhZKSxlLm1pblk9ZS55QXhpc1NjYWxlWzBdLm5pY2VNaW4sZS5tYXhZPWUueUF4aXNTY2FsZVswXS5uaWNlTWF4LGUubWluWUFyclswXT1lLnlBeGlzU2NhbGVbMF0ubmljZU1pbixlLm1heFlBcnJbMF09ZS55QXhpc1NjYWxlWzBdLm5pY2VNYXgpLHttaW5ZOmUubWluWSxtYXhZOmUubWF4WSxtaW5ZQXJyOmUubWluWUFycixtYXhZQXJyOmUubWF4WUFycix5QXhpc1NjYWxlOmUueUF4aXNTY2FsZX19fSx7a2V5Olwic2V0WFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscyx0PXRoaXMudy5jb25maWcsaT10LnhheGlzLnR5cGU9PT1cIm51bWVyaWNcInx8dC54YXhpcy50eXBlPT09XCJkYXRldGltZVwifHx0LnhheGlzLnR5cGU9PT1cImNhdGVnb3J5XCImJiFlLm5vTGFiZWxzUHJvdmlkZWR8fGUubm9MYWJlbHNQcm92aWRlZHx8ZS5pc1hOdW1lcmljO2lmKGUuaXNYTnVtZXJpYyYmZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPGUuc2VyaWVzLmxlbmd0aDtuKyspaWYoZS5sYWJlbHNbbl0pZm9yKHZhciBvPTA7bzxlLmxhYmVsc1tuXS5sZW5ndGg7bysrKWUubGFiZWxzW25dW29dIT09bnVsbCYmUC5pc051bWJlcihlLmxhYmVsc1tuXVtvXSkmJihlLm1heFg9TWF0aC5tYXgoZS5tYXhYLGUubGFiZWxzW25dW29dKSxlLmluaXRpYWxNYXhYPU1hdGgubWF4KGUubWF4WCxlLmxhYmVsc1tuXVtvXSksZS5taW5YPU1hdGgubWluKGUubWluWCxlLmxhYmVsc1tuXVtvXSksZS5pbml0aWFsTWluWD1NYXRoLm1pbihlLm1pblgsZS5sYWJlbHNbbl1bb10pKX0oKSxlLm5vTGFiZWxzUHJvdmlkZWQmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg9PT0wJiYoZS5tYXhYPWUubGFiZWxzW2UubGFiZWxzLmxlbmd0aC0xXSxlLmluaXRpYWxNYXhYPWUubGFiZWxzW2UubGFiZWxzLmxlbmd0aC0xXSxlLm1pblg9MSxlLmluaXRpYWxNaW5YPTEpLGUuaXNYTnVtZXJpY3x8ZS5ub0xhYmVsc1Byb3ZpZGVkfHxlLmRhdGFGb3JtYXRYTnVtZXJpYyl7dmFyIGE7aWYodC54YXhpcy50aWNrQW1vdW50PT09dm9pZCAwPyhhPU1hdGgucm91bmQoZS5zdmdXaWR0aC8xNTApLHQueGF4aXMudHlwZT09PVwibnVtZXJpY1wiJiZlLmRhdGFQb2ludHM8MzAmJihhPWUuZGF0YVBvaW50cy0xKSxhPmUuZGF0YVBvaW50cyYmZS5kYXRhUG9pbnRzIT09MCYmKGE9ZS5kYXRhUG9pbnRzLTEpKTp0LnhheGlzLnRpY2tBbW91bnQ9PT1cImRhdGFQb2ludHNcIj8oZS5zZXJpZXMubGVuZ3RoPjEmJihhPWUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTEpLGUuaXNYTnVtZXJpYyYmKGE9ZS5tYXhYLWUubWluWC0xKSk6YT10LnhheGlzLnRpY2tBbW91bnQsZS54VGlja0Ftb3VudD1hLHQueGF4aXMubWF4IT09dm9pZCAwJiZ0eXBlb2YgdC54YXhpcy5tYXg9PVwibnVtYmVyXCImJihlLm1heFg9dC54YXhpcy5tYXgpLHQueGF4aXMubWluIT09dm9pZCAwJiZ0eXBlb2YgdC54YXhpcy5taW49PVwibnVtYmVyXCImJihlLm1pblg9dC54YXhpcy5taW4pLHQueGF4aXMucmFuZ2UhPT12b2lkIDAmJihlLm1pblg9ZS5tYXhYLXQueGF4aXMucmFuZ2UpLGUubWluWCE9PU51bWJlci5NQVhfVkFMVUUmJmUubWF4WCE9PS1OdW1iZXIuTUFYX1ZBTFVFKWlmKHQueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYhZS5kYXRhRm9ybWF0WE51bWVyaWMpe2Zvcih2YXIgcz1bXSxyPWUubWluWC0xO3I8ZS5tYXhYO3IrKylzLnB1c2gocisxKTtlLnhBeGlzU2NhbGU9e3Jlc3VsdDpzLG5pY2VNaW46c1swXSxuaWNlTWF4OnNbcy5sZW5ndGgtMV19fWVsc2UgZS54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLnNldFhTY2FsZShlLm1pblgsZS5tYXhYKTtlbHNlIGUueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgwLGEsYSwwLHQueGF4aXMuc3RlcFNpemUpLGUubm9MYWJlbHNQcm92aWRlZCYmZS5sYWJlbHMubGVuZ3RoPjAmJihlLnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoMSxlLmxhYmVscy5sZW5ndGgsYS0xLDAsdC54YXhpcy5zdGVwU2l6ZSksZS5zZXJpZXNYPWUubGFiZWxzLnNsaWNlKCkpO2kmJihlLmxhYmVscz1lLnhBeGlzU2NhbGUucmVzdWx0LnNsaWNlKCkpfXJldHVybiBlLmlzQmFySG9yaXpvbnRhbCYmZS5sYWJlbHMubGVuZ3RoJiYoZS54VGlja0Ftb3VudD1lLmxhYmVscy5sZW5ndGgpLHRoaXMuX2hhbmRsZVNpbmdsZURhdGFQb2ludCgpLHRoaXMuX2dldE1pblhEaWZmKCkse21pblg6ZS5taW5YLG1heFg6ZS5tYXhYfX19LHtrZXk6XCJzZXRaUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzO2lmKGUuaXNEYXRhWFlaKXtmb3IodmFyIHQ9MDt0PGUuc2VyaWVzLmxlbmd0aDt0KyspaWYoZS5zZXJpZXNaW3RdIT09dm9pZCAwKWZvcih2YXIgaT0wO2k8ZS5zZXJpZXNaW3RdLmxlbmd0aDtpKyspZS5zZXJpZXNaW3RdW2ldIT09bnVsbCYmUC5pc051bWJlcihlLnNlcmllc1pbdF1baV0pJiYoZS5tYXhaPU1hdGgubWF4KGUubWF4WixlLnNlcmllc1pbdF1baV0pLGUubWluWj1NYXRoLm1pbihlLm1pblosZS5zZXJpZXNaW3RdW2ldKSl9fX0se2tleTpcIl9oYW5kbGVTaW5nbGVEYXRhUG9pbnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLHQ9dGhpcy53LmNvbmZpZztpZihlLm1pblg9PT1lLm1heFgpe3ZhciBpPW5ldyBCKHRoaXMuY3R4KTtpZih0LnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCIpe3ZhciBhPWkuZ2V0RGF0ZShlLm1pblgpO3QueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP2Euc2V0VVRDRGF0ZShhLmdldFVUQ0RhdGUoKS0yKTphLnNldERhdGUoYS5nZXREYXRlKCktMiksZS5taW5YPW5ldyBEYXRlKGEpLmdldFRpbWUoKTt2YXIgcz1pLmdldERhdGUoZS5tYXhYKTt0LnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9zLnNldFVUQ0RhdGUocy5nZXRVVENEYXRlKCkrMik6cy5zZXREYXRlKHMuZ2V0RGF0ZSgpKzIpLGUubWF4WD1uZXcgRGF0ZShzKS5nZXRUaW1lKCl9ZWxzZSh0LnhheGlzLnR5cGU9PT1cIm51bWVyaWNcInx8dC54YXhpcy50eXBlPT09XCJjYXRlZ29yeVwiJiYhZS5ub0xhYmVsc1Byb3ZpZGVkKSYmKGUubWluWD1lLm1pblgtMixlLmluaXRpYWxNaW5YPWUubWluWCxlLm1heFg9ZS5tYXhYKzIsZS5pbml0aWFsTWF4WD1lLm1heFgpfX19LHtrZXk6XCJfZ2V0TWluWERpZmZcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzO2UuaXNYTnVtZXJpYyYmZS5zZXJpZXNYLmZvckVhY2goZnVuY3Rpb24odCxpKXt0Lmxlbmd0aD09PTEmJnQucHVzaChlLnNlcmllc1hbZS5tYXhWYWxzSW5BcnJheUluZGV4XVtlLnNlcmllc1hbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMV0pO3ZhciBhPXQuc2xpY2UoKTthLnNvcnQoZnVuY3Rpb24ocyxyKXtyZXR1cm4gcy1yfSksYS5mb3JFYWNoKGZ1bmN0aW9uKHMscil7aWYocj4wKXt2YXIgbj1zLWFbci0xXTtuPjAmJihlLm1pblhEaWZmPU1hdGgubWluKG4sZS5taW5YRGlmZikpfX0pLGUuZGF0YVBvaW50cyE9PTEmJmUubWluWERpZmYhPT1OdW1iZXIuTUFYX1ZBTFVFfHwoZS5taW5YRGlmZj0uNSl9KX19LHtrZXk6XCJfc2V0U3RhY2tlZE1pbk1heFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudy5nbG9iYWxzO2lmKHQuc2VyaWVzLmxlbmd0aCl7dmFyIGk9dC5zZXJpZXNHcm91cHM7aS5sZW5ndGh8fChpPVt0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZX0pXSk7dmFyIGE9e30scz17fTtpLmZvckVhY2goZnVuY3Rpb24ocil7YVtyXT1bXSxzW3JdPVtdLGUudy5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihuLG8pe3JldHVybiByLmluZGV4T2Yobi5uYW1lKT4tMT9vOm51bGx9KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIG4hPT1udWxsfSkuZm9yRWFjaChmdW5jdGlvbihuKXtmb3IodmFyIG89MDtvPHQuc2VyaWVzW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO28rKyl7dmFyIGgsYzthW3JdW29dPT09dm9pZCAwJiYoYVtyXVtvXT0wLHNbcl1bb109MCksKGUudy5jb25maWcuY2hhcnQuc3RhY2tlZCYmIXQuY29tYm9DaGFydHN8fGUudy5jb25maWcuY2hhcnQuc3RhY2tlZCYmdC5jb21ib0NoYXJ0cyYmKCFlLncuY29uZmlnLmNoYXJ0LnN0YWNrT25seUJhcnx8KChoPWUudy5jb25maWcuc2VyaWVzKT09PW51bGx8fGg9PT12b2lkIDB8fChjPWhbbl0pPT09bnVsbHx8Yz09PXZvaWQgMD92b2lkIDA6Yy50eXBlKT09PVwiYmFyXCIpKSYmdC5zZXJpZXNbbl1bb10hPT1udWxsJiZQLmlzTnVtYmVyKHQuc2VyaWVzW25dW29dKSYmKHQuc2VyaWVzW25dW29dPjA/YVtyXVtvXSs9cGFyc2VGbG9hdCh0LnNlcmllc1tuXVtvXSkrMWUtNDpzW3JdW29dKz1wYXJzZUZsb2F0KHQuc2VyaWVzW25dW29dKSl9fSl9KSxPYmplY3QuZW50cmllcyhhKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBuPUVlKHIsMSlbMF07YVtuXS5mb3JFYWNoKGZ1bmN0aW9uKG8saCl7dC5tYXhZPU1hdGgubWF4KHQubWF4WSxhW25dW2hdKSx0Lm1pblk9TWF0aC5taW4odC5taW5ZLHNbbl1baF0pfSl9KX19fV0pLHl9KCksR2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9dCx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzRm9udFNpemU9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMuYXhpc0ZvbnRGYW1pbHk9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPWkuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwiJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhBeGlzb2ZmWD0wLGkuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJib3R0b21cIiYmKHRoaXMueEF4aXNvZmZYPWkuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuYXhlc1V0aWxzPW5ldyBiZShlKX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1lheGlzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPW5ldyBNKHRoaXMuY3R4KSxzPWkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5zdHlsZSxyPXMuZm9udFNpemUsbj1zLmZvbnRGYW1pbHksbz1zLmZvbnRXZWlnaHQsaD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIixyZWw6ZSx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIraS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtlXStcIiwgMClcIn0pO2lmKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4oZSkpcmV0dXJuIGg7dmFyIGM9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIn0pO2guYWRkKGMpO3ZhciBkPWkuZ2xvYmFscy55QXhpc1NjYWxlW2VdLnJlc3VsdC5sZW5ndGgtMSxnPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2QscD1pLmdsb2JhbHMudHJhbnNsYXRlWSxmPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2VdLGI9aS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ucmVzdWx0LnNsaWNlKCk7Yj10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKGUsYik7dmFyIG09XCJcIjtpZihpLmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuc2hvdylmb3IodmFyIHc9ZnVuY3Rpb24oQyl7dmFyIEw9YltDXTtMPWYoTCxDLGkpO3ZhciBJPWkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5wYWRkaW5nO2kuY29uZmlnLnlheGlzW2VdLm9wcG9zaXRlJiZpLmNvbmZpZy55YXhpcy5sZW5ndGghPT0wJiYoSSo9LTEpO3ZhciB6PVwiZW5kXCI7aS5jb25maWcueWF4aXNbZV0ub3Bwb3NpdGUmJih6PVwic3RhcnRcIiksaS5jb25maWcueWF4aXNbZV0ubGFiZWxzLmFsaWduPT09XCJsZWZ0XCI/ej1cInN0YXJ0XCI6aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLmFsaWduPT09XCJjZW50ZXJcIj96PVwibWlkZGxlXCI6aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLmFsaWduPT09XCJyaWdodFwiJiYoej1cImVuZFwiKTt2YXIgVD10LmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihzLmNvbG9ycyxlKSxFPWkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5vZmZzZXRZO2kuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcIiYmKEUtPShpLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xKS8yKTt2YXIgUj1hLmRyYXdUZXh0KHt4OkkseTpwK2QvMTArRSsxLHRleHQ6TCx0ZXh0QW5jaG9yOnosZm9udFNpemU6cixmb250RmFtaWx5Om4sZm9udFdlaWdodDpvLG1heFdpZHRoOmkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5tYXhXaWR0aCxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShUKT9UW0NdOlQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK3MuY3NzQ2xhc3N9KTtDPT09ZCYmKG09UiksYy5hZGQoUik7dmFyIE89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKE8udGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShMKT9MLmpvaW4oXCIgXCIpOkwsUi5ub2RlLmFwcGVuZENoaWxkKE8pLGkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5yb3RhdGUhPT0wKXt2YXIgRD1hLnJvdGF0ZUFyb3VuZENlbnRlcihtLm5vZGUpLFc9YS5yb3RhdGVBcm91bmRDZW50ZXIoUi5ub2RlKTtSLm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChELngsXCIgXCIpLmNvbmNhdChXLnksXCIpXCIpKX1wKz1nfSxBPWQ7QT49MDtBLS0pdyhBKTtpZihpLmNvbmZpZy55YXhpc1tlXS50aXRsZS50ZXh0IT09dm9pZCAwKXt2YXIgbD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGVcIn0pLHU9MDtpLmNvbmZpZy55YXhpc1tlXS5vcHBvc2l0ZSYmKHU9aS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtlXSk7dmFyIHg9YS5kcmF3VGV4dCh7eDp1LHk6aS5nbG9iYWxzLmdyaWRIZWlnaHQvMitpLmdsb2JhbHMudHJhbnNsYXRlWStpLmNvbmZpZy55YXhpc1tlXS50aXRsZS5vZmZzZXRZLHRleHQ6aS5jb25maWcueWF4aXNbZV0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwiZW5kXCIsZm9yZUNvbG9yOmkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOmkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6aS5jb25maWcueWF4aXNbZV0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OmkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIraS5jb25maWcueWF4aXNbZV0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtsLmFkZCh4KSxoLmFkZChsKX12YXIgdj1pLmNvbmZpZy55YXhpc1tlXS5heGlzQm9yZGVyLGs9MzErdi5vZmZzZXRYO2lmKGkuY29uZmlnLnlheGlzW2VdLm9wcG9zaXRlJiYoaz0tMzEtdi5vZmZzZXRYKSx2LnNob3cpe3ZhciBTPWEuZHJhd0xpbmUoayxpLmdsb2JhbHMudHJhbnNsYXRlWSt2Lm9mZnNldFktMixrLGkuZ2xvYmFscy5ncmlkSGVpZ2h0K2kuZ2xvYmFscy50cmFuc2xhdGVZK3Yub2Zmc2V0WSsyLHYuY29sb3IsMCx2LndpZHRoKTtoLmFkZChTKX1yZXR1cm4gaS5jb25maWcueWF4aXNbZV0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKGssZCx2LGkuY29uZmlnLnlheGlzW2VdLmF4aXNUaWNrcyxlLGcsaCksaH19LHtrZXk6XCJkcmF3WWF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkXCJ9KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7YS5hZGQocyk7dmFyIHI9dC5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ucmVzdWx0Lmxlbmd0aC0xLG49dC5nbG9iYWxzLmdyaWRXaWR0aC9yKy4xLG89bit0LmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxoPXQuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsYz10Lmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQuc2xpY2UoKSxkPXQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM7ZC5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9ZC5zbGljZSgpLHI9KGM9ZC5zbGljZSgpKS5sZW5ndGgpLGM9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyhlLGMpO3ZhciBnPWQubGVuZ3RoO2lmKHQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgcD1nPzA6cjtnP3A8ZzpwPj0wO2c/cCsrOnAtLSl7dmFyIGY9Y1twXTtmPWgoZixwLHQpO3ZhciBiPXQuZ2xvYmFscy5ncmlkV2lkdGgrdC5nbG9iYWxzLnBhZEhvcml6b250YWwtKG8tbit0LmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoZC5sZW5ndGgpe3ZhciBtPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGMsZCxiLHAsdGhpcy5kcmF3bkxhYmVscyx0aGlzLnhheGlzRm9udFNpemUpO2I9bS54LGY9bS50ZXh0LHRoaXMuZHJhd25MYWJlbHMucHVzaChtLnRleHQpLHA9PT0wJiZ0Lmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKGY9XCJcIikscD09PWMubGVuZ3RoLTEmJnQuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJihmPVwiXCIpfXZhciB3PWkuZHJhd1RleHQoe3g6Yix5OnRoaXMueEF4aXNvZmZYK3QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZKzMwLSh0LmNvbmZpZy54YXhpcy5wb3NpdGlvbj09PVwidG9wXCI/dC5nbG9iYWxzLnhBeGlzSGVpZ2h0K3QuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKT90aGlzLnhheGlzRm9yZUNvbG9yc1tlXTp0aGlzLnhheGlzRm9yZUNvbG9ycyxmb250U2l6ZTp0aGlzLnhheGlzRm9udFNpemUsZm9udEZhbWlseTp0aGlzLnhheGlzRm9udEZhbWlseSxmb250V2VpZ2h0OnQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCBcIit0LmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3N9KTtzLmFkZCh3KSx3LnRzcGFuKGYpO3ZhciBBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtBLnRleHRDb250ZW50PWYsdy5ub2RlLmFwcGVuZENoaWxkKEEpLG8rPW59cmV0dXJuIHRoaXMuaW52ZXJzZWRZQXhpc1RpdGxlVGV4dChhKSx0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIoYSksYX19LHtrZXk6XCJpbnZlcnNlZFlBeGlzQm9yZGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IE0odGhpcy5jdHgpLGE9dC5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZihhLnNob3cpe3ZhciBzPTA7dC5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCImJnQuZ2xvYmFscy5pc1hOdW1lcmljJiYocy09MTUpO3ZhciByPWkuZHJhd0xpbmUodC5nbG9iYWxzLnBhZEhvcml6b250YWwrcythLm9mZnNldFgsdGhpcy54QXhpc29mZlgsdC5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLnhBeGlzb2ZmWCxhLmNvbG9yLDAsYS5oZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZ0LmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQocik6ZS5hZGQocil9fX0se2tleTpcImludmVyc2VkWUF4aXNUaXRsZVRleHRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1uZXcgTSh0aGlzLmN0eCk7aWYodC5jb25maWcueGF4aXMudGl0bGUudGV4dCE9PXZvaWQgMCl7dmFyIGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWRcIn0pLHM9aS5kcmF3VGV4dCh7eDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLzIrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMueEF4aXNvZmZYK3BhcnNlRmxvYXQodGhpcy54YXhpc0ZvbnRTaXplKStwYXJzZUZsb2F0KHQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSt0LmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZKzIwLHRleHQ6dC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTthLmFkZChzKSxlLmFkZChhKX19fSx7a2V5OlwieUF4aXNUaXRsZVJvdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpLHM9e3dpZHRoOjAsaGVpZ2h0OjB9LHI9e3dpZHRoOjAsaGVpZ2h0OjB9LG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIiAuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wiKSk7biE9PW51bGwmJihzPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGl0bGUgdGV4dFwiKSk7aWYobyE9PW51bGwmJihyPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG8hPT1udWxsKXt2YXIgaD10aGlzLnhQYWRkaW5nRm9yWUF4aXNUaXRsZShlLHMscix0KTtvLnNldEF0dHJpYnV0ZShcInhcIixoLnhQb3MtKHQ/MTA6MCkpfWlmKG8hPT1udWxsKXt2YXIgYz1hLnJvdGF0ZUFyb3VuZENlbnRlcihvKTtvLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdCh0Py0xKmkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnJvdGF0ZTppLmNvbmZpZy55YXhpc1tlXS50aXRsZS5yb3RhdGUsXCIgXCIpLmNvbmNhdChjLngsXCIgXCIpLmNvbmNhdChjLnksXCIpXCIpKX19fSx7a2V5OlwieFBhZGRpbmdGb3JZQXhpc1RpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53LHI9MCxuPTAsbz0xMDtyZXR1cm4gcy5jb25maWcueWF4aXNbZV0udGl0bGUudGV4dD09PXZvaWQgMHx8ZTwwP3t4UG9zOm4scGFkZDowfTooYT8obj10LndpZHRoK3MuY29uZmlnLnlheGlzW2VdLnRpdGxlLm9mZnNldFgraS53aWR0aC8yK28vMiwocis9MSk9PT0wJiYobi09by8yKSk6KG49LTEqdC53aWR0aCtzLmNvbmZpZy55YXhpc1tlXS50aXRsZS5vZmZzZXRYK28vMitpLndpZHRoLzIscy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89MjUsbj0tMSp0LndpZHRoLXMuY29uZmlnLnlheGlzW2VdLnRpdGxlLm9mZnNldFgtbykpLHt4UG9zOm4scGFkZDpvfSl9fSx7a2V5Olwic2V0WUF4aXNYUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPTAscz0wLHI9MTgsbj0xO2kuY29uZmlnLnlheGlzLmxlbmd0aD4xJiYodGhpcy5tdWx0aXBsZVlzPSEwKSxpLmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24obyxoKXt2YXIgYz1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoaCk+LTF8fCFvLnNob3d8fG8uZmxvYXRpbmd8fGVbaF0ud2lkdGg9PT0wLGQ9ZVtoXS53aWR0aCt0W2hdLndpZHRoO28ub3Bwb3NpdGU/aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8ocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYLTEsaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtoXT1zLW8ubGFiZWxzLm9mZnNldFgpOihzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgrbixjfHwobj1uK2QrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbaF09cy1vLmxhYmVscy5vZmZzZXRYKzIwKTooYT1pLmdsb2JhbHMudHJhbnNsYXRlWC1yLGN8fChyPXIrZCsyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtoXT1hK28ubGFiZWxzLm9mZnNldFgpfSl9fSx7a2V5Olwic2V0WUF4aXNUZXh0QWxpZ25tZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWF4aXNcIik7KHQ9UC5saXN0VG9BcnJheSh0KSkuZm9yRWFjaChmdW5jdGlvbihpLGEpe3ZhciBzPWUuY29uZmlnLnlheGlzW2FdO2lmKHMmJiFzLmZsb2F0aW5nJiZzLmxhYmVscy5hbGlnbiE9PXZvaWQgMCl7dmFyIHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGEsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKSxuPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChhLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtbGFiZWxcIikpO249UC5saXN0VG9BcnJheShuKTt2YXIgbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3MubGFiZWxzLmFsaWduPT09XCJsZWZ0XCI/KG4uZm9yRWFjaChmdW5jdGlvbihoLGMpe2guc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcInN0YXJ0XCIpfSkscy5vcHBvc2l0ZXx8ci5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgtXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSk6cy5sYWJlbHMuYWxpZ249PT1cImNlbnRlclwiPyhuLmZvckVhY2goZnVuY3Rpb24oaCxjKXtoLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIil9KSxyLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLzIqKHMub3Bwb3NpdGU/MTotMSksXCIsIDApXCIpKSk6cy5sYWJlbHMuYWxpZ249PT1cInJpZ2h0XCImJihuLmZvckVhY2goZnVuY3Rpb24oaCxjKXtoLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIil9KSxzLm9wcG9zaXRlJiZyLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpfX0pfX1dKSx5fSgpLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZG9jdW1lbnRFdmVudD1QLmJpbmQodGhpcy5kb2N1bWVudEV2ZW50LHRoaXMpfXJldHVybiBZKHksW3trZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eShlKT9pLmdsb2JhbHMuZXZlbnRzW2VdLnB1c2godCk6aS5nbG9iYWxzLmV2ZW50c1tlXT1bdF19fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBhPWkuZ2xvYmFscy5ldmVudHNbZV0uaW5kZXhPZih0KTthIT09LTEmJmkuZ2xvYmFscy5ldmVudHNbZV0uc3BsaWNlKGEsMSl9fX0se2tleTpcImZpcmVFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkoZSkpe3QmJnQubGVuZ3RofHwodD1bXSk7Zm9yKHZhciBhPWkuZ2xvYmFscy5ldmVudHNbZV0scz1hLmxlbmd0aCxyPTA7cjxzO3IrKylhW3JdLmFwcGx5KG51bGwsdCl9fX0se2tleTpcInNldHVwRXZlbnRIYW5kbGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXRoaXMuY3R4LGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3Rvcih0Lmdsb2JhbHMuY2hhcnRDbGFzcyk7dGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocyl7YS5hZGRFdmVudExpc3RlbmVyKHMsZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmFzc2lnbih7fSx0LHtzZXJpZXNJbmRleDp0Lmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDp0Lmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleH0pO3IudHlwZT09PVwibW91c2Vtb3ZlXCJ8fHIudHlwZT09PVwidG91Y2htb3ZlXCI/dHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmU9PVwiZnVuY3Rpb25cIiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTW92ZShyLGksbik6ci50eXBlPT09XCJtb3VzZWxlYXZlXCJ8fHIudHlwZT09PVwidG91Y2hsZWF2ZVwiP3R5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZT09XCJmdW5jdGlvblwiJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZShyLGksbik6KHIudHlwZT09PVwibW91c2V1cFwiJiZyLndoaWNoPT09MXx8ci50eXBlPT09XCJ0b3VjaGVuZFwiKSYmKHR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2s9PVwiZnVuY3Rpb25cIiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrKHIsaSxuKSxpLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiY2xpY2tcIixbcixpLG5dKSl9LHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pLHRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHMpe3QuZ2xvYmFscy5kb20uYmFzZUVsLmFkZEV2ZW50TGlzdGVuZXIocyxlLmRvY3VtZW50RXZlbnQse3Bhc3NpdmU6ITB9KX0pLHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKX19LHtrZXk6XCJkb2N1bWVudEV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9ZS50YXJnZXQuY2xhc3NOYW1lO2lmKGUudHlwZT09PVwiY2xpY2tcIil7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1lbnVcIik7YSYmYS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKSYmaSE9PVwiYXBleGNoYXJ0cy1tZW51LWljb25cIiYmYS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9dC5nbG9iYWxzLmNsaWVudFg9ZS50eXBlPT09XCJ0b3VjaG1vdmVcIj9lLnRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFgsdC5nbG9iYWxzLmNsaWVudFk9ZS50eXBlPT09XCJ0b3VjaG1vdmVcIj9lLnRvdWNoZXNbMF0uY2xpZW50WTplLmNsaWVudFl9fV0pLHl9KCksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcInNldEN1cnJlbnRMb2NhbGVWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXM7d2luZG93LkFwZXguY2hhcnQmJndpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMmJndpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMubGVuZ3RoPjAmJih0PXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlcy5jb25jYXQod2luZG93LkFwZXguY2hhcnQubG9jYWxlcykpO3ZhciBpPXQuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiBzLm5hbWU9PT1lfSlbMF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbG9jYWxlIG5hbWUgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCB0aGUgY29ycmVjdCBsb2NhbGUgbmFtZSBpbiBvcHRpb25zXCIpO3ZhciBhPVAuZXh0ZW5kKEgsaSk7dGhpcy53Lmdsb2JhbHMubG9jYWxlPWEub3B0aW9uc319XSkseX0oKSx5dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd0F4aXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpLGEscz10aGlzLHI9dGhpcy53Lmdsb2JhbHMsbj10aGlzLncuY29uZmlnLG89bmV3IHplKHRoaXMuY3R4LHQpLGg9bmV3IEdlKHRoaXMuY3R4LHQpO3IuYXhpc0NoYXJ0cyYmZSE9PVwicmFkYXJcIiYmKHIuaXNCYXJIb3Jpem9udGFsPyhhPWguZHJhd1lheGlzSW52ZXJzZWQoMCksaT1vLmRyYXdYYXhpc0ludmVyc2VkKDApLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoYSkpOihpPW8uZHJhd1hheGlzKCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLG4ueWF4aXMubWFwKGZ1bmN0aW9uKGMsZCl7aWYoci5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihkKT09PS0xJiYoYT1oLmRyYXdZYXhpcyhkKSxyLmRvbS5QYXBlci5hZGQoYSkscy53LmNvbmZpZy5ncmlkLnBvc2l0aW9uPT09XCJiYWNrXCIpKXt2YXIgZz1yLmRvbS5QYXBlci5jaGlsZHJlbigpWzFdO2cucmVtb3ZlKCksci5kb20uUGFwZXIuYWRkKGcpfX0pKSl9fV0pLHl9KCksVmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9bmV3IE0odGhpcy5jdHgpLGk9bmV3ICQodGhpcy5jdHgpLGE9ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmdyYWRpZW50LHM9ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5kcm9wU2hhZG93LHI9ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLnR5cGUsbj1hLmNvbG9yRnJvbSxvPWEuY29sb3JUbyxoPWEub3BhY2l0eUZyb20sYz1hLm9wYWNpdHlUbyxkPWEuc3RvcHMsZz1zLmVuYWJsZWQscD1zLmxlZnQsZj1zLnRvcCxiPXMuYmx1cixtPXMuY29sb3Isdz1zLm9wYWNpdHksQT1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuY29sb3I7aWYoZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zaG93KXtyPT09XCJncmFkaWVudFwiJiYoQT10LmRyYXdHcmFkaWVudChcInZlcnRpY2FsXCIsbixvLGgsYyxudWxsLGQsbnVsbCkpO3ZhciBsPXQuZHJhd1JlY3QoKTtlLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoPT09MSYmKGw9dC5kcmF3TGluZSgpKTt2YXIgdT1lLmdsb2JhbHMuZ3JpZEhlaWdodDsoIVAuaXNOdW1iZXIodSl8fHU8MCkmJih1PTApO3ZhciB4PWUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg7KCFQLmlzTnVtYmVyKHgpfHx4PDApJiYoeD0wKSxsLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiLHg6MCx5OjAseTI6dSx3aWR0aDp4LGhlaWdodDp1LGZpbGw6QSxmaWx0ZXI6XCJub25lXCIsXCJmaWxsLW9wYWNpdHlcIjplLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLm9wYWNpdHksc3Ryb2tlOmUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2Uud2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuZGFzaEFycmF5fSksZyYmKGw9aS5kcm9wU2hhZG93KGwse2xlZnQ6cCx0b3A6ZixibHVyOmIsY29sb3I6bSxvcGFjaXR5Ond9KSksZS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobCl9fX0se2tleTpcImRyYXdZQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9bmV3IE0odGhpcy5jdHgpLGk9ZS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycyxhPWUuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcztpZihlLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnNob3cpe3ZhciBzPXQuZHJhd0xpbmUoLWEsMCxlLmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvcixpLnN0cm9rZS5kYXNoQXJyYXksaS5zdHJva2Uud2lkdGgpO3MuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCJ9KSxlLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChzKX12YXIgcj10LmRyYXdMaW5lKC1hLDAsZS5nbG9iYWxzLmdyaWRXaWR0aCthLDAsaS5zdHJva2UuY29sb3IsMCwwKTtyLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW5cIn0pLGUuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHIpfX1dKSx5fSgpLHd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJjaGVja1Jlc3BvbnNpdmVDb25maWdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9aS5jb25maWc7aWYoYS5yZXNwb25zaXZlLmxlbmd0aCE9PTApe3ZhciBzPWEucmVzcG9uc2l2ZS5zbGljZSgpO3Muc29ydChmdW5jdGlvbihoLGMpe3JldHVybiBoLmJyZWFrcG9pbnQ+Yy5icmVha3BvaW50PzE6Yy5icmVha3BvaW50PmguYnJlYWtwb2ludD8tMTowfSkucmV2ZXJzZSgpO3ZhciByPW5ldyBJZSh7fSksbj1mdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxjPXNbMF0uYnJlYWtwb2ludCxkPXdpbmRvdy5pbm5lcldpZHRoPjA/d2luZG93LmlubmVyV2lkdGg6c2NyZWVuLndpZHRoO2lmKGQ+Yyl7dmFyIGc9cS5leHRlbmRBcnJheVByb3BzKHIsaS5nbG9iYWxzLmluaXRpYWxDb25maWcsaSk7aD1QLmV4dGVuZChnLGgpLGg9UC5leHRlbmQoaS5jb25maWcsaCksdC5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKGgpfWVsc2UgZm9yKHZhciBwPTA7cDxzLmxlbmd0aDtwKyspZDxzW3BdLmJyZWFrcG9pbnQmJihoPXEuZXh0ZW5kQXJyYXlQcm9wcyhyLHNbcF0ub3B0aW9ucyxpKSxoPVAuZXh0ZW5kKGkuY29uZmlnLGgpLHQub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyhoKSl9O2lmKGUpe3ZhciBvPXEuZXh0ZW5kQXJyYXlQcm9wcyhyLGUsaSk7bz1QLmV4dGVuZChpLmNvbmZpZyxvKSxuKG89UC5leHRlbmQobyxlKSl9ZWxzZSBuKHt9KX19fSx7a2V5Olwib3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBJZShlKS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITB9KTt0aGlzLncuY29uZmlnPXR9fV0pLHl9KCksa3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMuY29sb3JzPVtdLHRoaXMudz1lLnc7dmFyIHQ9dGhpcy53O3RoaXMuaXNDb2xvckZuPSExLHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQ9dC5jb25maWcuY2hhcnQudHlwZT09PVwidHJlZW1hcFwiJiZ0LmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmRpc3RyaWJ1dGVkfHx0LmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCImJnQuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuZGlzdHJpYnV0ZWQsdGhpcy5pc0JhckRpc3RyaWJ1dGVkPXQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwifHx0LmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiKX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0Q29sb3JzKCl9fSx7a2V5Olwic2V0RGVmYXVsdENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dGhpcy53LGE9bmV3IFA7aWYoaS5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KGkuY29uZmlnLnRoZW1lLm1vZGUpKSxpLmNvbmZpZy5jb2xvcnM9PT12b2lkIDB8fCgoZT1pLmNvbmZpZy5jb2xvcnMpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5sZW5ndGgpPT09MD9pLmdsb2JhbHMuY29sb3JzPXRoaXMucHJlZGVmaW5lZCgpOihpLmdsb2JhbHMuY29sb3JzPWkuY29uZmlnLmNvbG9ycyxBcnJheS5pc0FycmF5KGkuY29uZmlnLmNvbG9ycykmJmkuY29uZmlnLmNvbG9ycy5sZW5ndGg+MCYmdHlwZW9mIGkuY29uZmlnLmNvbG9yc1swXT09XCJmdW5jdGlvblwiJiYoaS5nbG9iYWxzLmNvbG9ycz1pLmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKGYsYil7dmFyIG09aS5jb25maWcuY29sb3JzW2JdO3JldHVybiBtfHwobT1pLmNvbmZpZy5jb2xvcnNbMF0pLHR5cGVvZiBtPT1cImZ1bmN0aW9uXCI/KHQuaXNDb2xvckZuPSEwLG0oe3ZhbHVlOmkuZ2xvYmFscy5heGlzQ2hhcnRzP2kuZ2xvYmFscy5zZXJpZXNbYl1bMF0/aS5nbG9iYWxzLnNlcmllc1tiXVswXTowOmkuZ2xvYmFscy5zZXJpZXNbYl0sc2VyaWVzSW5kZXg6YixkYXRhUG9pbnRJbmRleDpiLHc6aX0pKTptfSkpKSxpLmdsb2JhbHMuc2VyaWVzQ29sb3JzLm1hcChmdW5jdGlvbihmLGIpe2YmJihpLmdsb2JhbHMuY29sb3JzW2JdPWYpfSksaS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5lbmFibGVkKXt2YXIgcz1bXSxyPWkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyh0aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQpJiYocj1pLmdsb2JhbHMuc2VyaWVzWzBdLmxlbmd0aCppLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCk7Zm9yKHZhciBuPWkuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuY29sb3Isbz0xLyhyL2kuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVJbnRlbnNpdHkpLGg9aS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZVRvLGM9MCxkPTA7ZDxyO2QrKyl7dmFyIGc9dm9pZCAwO2g9PT1cImRhcmtcIj8oZz1hLnNoYWRlQ29sb3IoLTEqYyxuKSxjKz1vKTooZz1hLnNoYWRlQ29sb3IoYyxuKSxjKz1vKSxzLnB1c2goZyl9aS5nbG9iYWxzLmNvbG9ycz1zLnNsaWNlKCl9dmFyIHA9aS5nbG9iYWxzLmNvbG9ycy5zbGljZSgpO3RoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5jb2xvcnMpLFtcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2kuY29uZmlnW2ZdLmNvbG9ycz09PXZvaWQgMD9pLmdsb2JhbHNbZl0uY29sb3JzPXQuaXNDb2xvckZuP2kuY29uZmlnLmNvbG9yczpwOmkuZ2xvYmFsc1tmXS5jb2xvcnM9aS5jb25maWdbZl0uY29sb3JzLnNsaWNlKCksdC5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzW2ZdLmNvbG9ycyl9KSxpLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz09PXZvaWQgMD9pLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9cDppLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMsNTApLGkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzPT09dm9pZCAwP2kuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPVtpLmNvbmZpZy50aGVtZS5tb2RlPT09XCJkYXJrXCI/XCIjNDI0MjQyXCI6XCJub25lXCJdOmkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMsMjApLGkuY29uZmlnLm1hcmtlcnMuY29sb3JzPT09dm9pZCAwP2kuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1wOmkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1pLmNvbmZpZy5tYXJrZXJzLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyl9fSx7a2V5OlwicHVzaEV4dHJhQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPXR8fGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2lmKGk9PT1udWxsJiYoaT10aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWR8fGEuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcIiYmYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLmludmVyc2UpLGkmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYocz1hLmdsb2JhbHMuc2VyaWVzW2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgqYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLGUubGVuZ3RoPHMpZm9yKHZhciByPXMtZS5sZW5ndGgsbj0wO248cjtuKyspZS5wdXNoKGVbbl0pfX0se2tleTpcInVwZGF0ZVRoZW1lT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2UuY2hhcnQ9ZS5jaGFydHx8e30sZS50b29sdGlwPWUudG9vbHRpcHx8e307dmFyIHQ9ZS50aGVtZS5tb2RlfHxcImxpZ2h0XCIsaT1lLnRoZW1lLnBhbGV0dGU/ZS50aGVtZS5wYWxldHRlOnQ9PT1cImRhcmtcIj9cInBhbGV0dGU0XCI6XCJwYWxldHRlMVwiLGE9ZS5jaGFydC5mb3JlQ29sb3I/ZS5jaGFydC5mb3JlQ29sb3I6dD09PVwiZGFya1wiP1wiI2Y2ZjdmOFwiOlwiIzM3M2QzZlwiO3JldHVybiBlLnRvb2x0aXAudGhlbWU9dCxlLmNoYXJ0LmZvcmVDb2xvcj1hLGUudGhlbWUucGFsZXR0ZT1pLGV9fSx7a2V5OlwicHJlZGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudy5jb25maWcudGhlbWUucGFsZXR0ZSl7Y2FzZVwicGFsZXR0ZTFcIjpkZWZhdWx0OnRoaXMuY29sb3JzPVtcIiMwMDhGRkJcIixcIiMwMEUzOTZcIixcIiNGRUIwMTlcIixcIiNGRjQ1NjBcIixcIiM3NzVERDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTJcIjp0aGlzLmNvbG9ycz1bXCIjM2Y1MWI1XCIsXCIjMDNhOWY0XCIsXCIjNGNhZjUwXCIsXCIjZjljZTFkXCIsXCIjRkY5ODAwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUzXCI6dGhpcy5jb2xvcnM9W1wiIzMzYjJkZlwiLFwiIzU0NkU3QVwiLFwiI2Q0NTI2ZVwiLFwiIzEzZDhhYVwiLFwiI0E1OTc4QlwiXTticmVhaztjYXNlXCJwYWxldHRlNFwiOnRoaXMuY29sb3JzPVtcIiM0ZWNkYzRcIixcIiNjN2Y0NjRcIixcIiM4MUQ0RkFcIixcIiNmZDZhNmFcIixcIiM1NDZFN0FcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTVcIjp0aGlzLmNvbG9ycz1bXCIjMmI5MDhmXCIsXCIjZjlhM2E0XCIsXCIjOTBlZTdlXCIsXCIjZmE0NDQzXCIsXCIjNjlkMmU3XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU2XCI6dGhpcy5jb2xvcnM9W1wiIzQ0OUREMVwiLFwiI0Y4NjYyNFwiLFwiI0VBMzU0NlwiLFwiIzY2MkU5QlwiLFwiI0M1RDg2RFwiXTticmVhaztjYXNlXCJwYWxldHRlN1wiOnRoaXMuY29sb3JzPVtcIiNENzI2M0RcIixcIiMxQjk5OEJcIixcIiMyRTI5NEVcIixcIiNGNDYwMzZcIixcIiNFMkMwNDRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZThcIjp0aGlzLmNvbG9ycz1bXCIjNjYyRTlCXCIsXCIjRjg2NjI0XCIsXCIjRjlDODBFXCIsXCIjRUEzNTQ2XCIsXCIjNDNCQ0NEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU5XCI6dGhpcy5jb2xvcnM9W1wiIzVDNDc0MlwiLFwiI0E1OTc4QlwiLFwiIzhENUI0Q1wiLFwiIzVBMkEyN1wiLFwiI0M0QkJBRlwiXTticmVhaztjYXNlXCJwYWxldHRlMTBcIjp0aGlzLmNvbG9ycz1bXCIjQTMwMEQ2XCIsXCIjN0QwMkVCXCIsXCIjNTY1M0ZFXCIsXCIjMjk4M0ZGXCIsXCIjMDBCMUYyXCJdfXJldHVybiB0aGlzLmNvbG9yc319XSkseX0oKSxBdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInRpdGxlXCIpLHRoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJzdWJ0aXRsZVwiKX19LHtrZXk6XCJkcmF3VGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPWU9PT1cInRpdGxlXCI/dC5jb25maWcudGl0bGU6dC5jb25maWcuc3VidGl0bGUsYT10Lmdsb2JhbHMuc3ZnV2lkdGgvMixzPWkub2Zmc2V0WSxyPVwibWlkZGxlXCI7aWYoaS5hbGlnbj09PVwibGVmdFwiPyhhPTEwLHI9XCJzdGFydFwiKTppLmFsaWduPT09XCJyaWdodFwiJiYoYT10Lmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSxhKz1pLm9mZnNldFgscz1zK3BhcnNlSW50KGkuc3R5bGUuZm9udFNpemUsMTApK2kubWFyZ2luLzIsaS50ZXh0IT09dm9pZCAwKXt2YXIgbj1uZXcgTSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDppLnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOmkuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmkuc3R5bGUuY29sb3Isb3BhY2l0eToxfSk7bi5ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChlLFwiLXRleHRcIikpLHQuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG4pfX19XSkseX0oKSxTdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcImdldFRpdGxlU3VidGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT0wLGE9MCxzPWU9PT1cInRpdGxlXCI/dC5jb25maWcudGl0bGUuZmxvYXRpbmc6dC5jb25maWcuc3VidGl0bGUuZmxvYXRpbmcscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGUsXCItdGV4dFwiKSk7aWYociE9PW51bGwmJiFzKXt2YXIgbj1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9bi53aWR0aCxhPXQuZ2xvYmFscy5heGlzQ2hhcnRzP24uaGVpZ2h0KzU6bi5oZWlnaHR9cmV0dXJue3dpZHRoOmksaGVpZ2h0OmF9fX0se2tleTpcImdldExlZ2VuZHNSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcDtlLmNvbmZpZy5sZWdlbmQuaGVpZ2h0fHxlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cInRvcFwiJiZlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cImJvdHRvbVwifHwodC5zdHlsZS5tYXhIZWlnaHQ9ZS5nbG9iYWxzLnN2Z0hlaWdodC8yK1wicHhcIik7dmFyIGk9T2JqZWN0LmFzc2lnbih7fSxQLmdldEJvdW5kaW5nQ2xpZW50UmVjdCh0KSk7cmV0dXJuIHQhPT1udWxsJiYhZS5jb25maWcubGVnZW5kLmZsb2F0aW5nJiZlLmNvbmZpZy5sZWdlbmQuc2hvdz90aGlzLmRDdHgubGdSZWN0PXt4OmkueCx5OmkueSxoZWlnaHQ6aS5oZWlnaHQsd2lkdGg6aS5oZWlnaHQ9PT0wPzA6aS53aWR0aH06dGhpcy5kQ3R4LmxnUmVjdD17eDowLHk6MCxoZWlnaHQ6MCx3aWR0aDowfSxlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cImxlZnRcIiYmZS5jb25maWcubGVnZW5kLnBvc2l0aW9uIT09XCJyaWdodFwifHwxLjUqdGhpcy5kQ3R4LmxnUmVjdC53aWR0aD5lLmdsb2JhbHMuc3ZnV2lkdGgmJih0aGlzLmRDdHgubGdSZWN0LndpZHRoPWUuZ2xvYmFscy5zdmdXaWR0aC8xLjUpLHRoaXMuZEN0eC5sZ1JlY3R9fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFyclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9ZTtpZih0aGlzLncuZ2xvYmFscy5pc011bHRpTGluZVgpe3ZhciBhPXQubWFwKGZ1bmN0aW9uKHIsbil7cmV0dXJuIEFycmF5LmlzQXJyYXkocik/ci5sZW5ndGg6MX0pLHM9TWF0aC5tYXguYXBwbHkoTWF0aCxRKGEpKTtpPXRbYS5pbmRleE9mKHMpXX1yZXR1cm4gaX19XSkseX0oKSxDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcImdldHhBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMudyxpPXQuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTtpZih0LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJmkubGVuZ3RoPT09MCYmKGk9dC5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzKSx0Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKXt2YXIgYT10aGlzLmdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzKCk7ZT17d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9LHQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfWVsc2V7dGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcz10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cImxlZnRcIiYmdC5jb25maWcubGVnZW5kLnBvc2l0aW9uIT09XCJyaWdodFwifHx0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmc/MDp0aGlzLmRDdHgubGdSZWN0LndpZHRoO3ZhciBzPXQuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIscj1QLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGkpLG49dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLGkpO3QuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihuPXI9dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJlZHVjZShmdW5jdGlvbihmLGIpe3JldHVybiBmLmxlbmd0aD5iLmxlbmd0aD9mOmJ9LDApKTt2YXIgbz1uZXcgbmUodGhpcy5kQ3R4LmN0eCksaD1yO3I9by54TGFiZWxGb3JtYXQocyxyLGgse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEIodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OnR9KSxuPW8ueExhYmVsRm9ybWF0KHMsbixoLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBCKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzp0fSksKHQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmcj09PXZvaWQgMHx8U3RyaW5nKHIpLnRyaW0oKT09PVwiXCIpJiYobj1yPVwiMVwiKTt2YXIgYz1uZXcgTSh0aGlzLmRDdHguY3R4KSxkPWMuZ2V0VGV4dFJlY3RzKHIsdC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSxnPWQ7aWYociE9PW4mJihnPWMuZ2V0VGV4dFJlY3RzKG4sdC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSksKGU9e3dpZHRoOmQud2lkdGg+PWcud2lkdGg/ZC53aWR0aDpnLndpZHRoLGhlaWdodDpkLmhlaWdodD49Zy5oZWlnaHQ/ZC5oZWlnaHQ6Zy5oZWlnaHR9KS53aWR0aCppLmxlbmd0aD50Lmdsb2JhbHMuc3ZnV2lkdGgtdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcy10aGlzLmRDdHgueUF4aXNXaWR0aC10aGlzLmRDdHguZ3JpZFBhZC5sZWZ0LXRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0JiZ0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlIT09MHx8dC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cyl7aWYoIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3QuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwO3ZhciBwPWZ1bmN0aW9uKGYpe3JldHVybiBjLmdldFRleHRSZWN0cyhmLHQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0LmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxcInJvdGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKX07ZD1wKHIpLHIhPT1uJiYoZz1wKG4pKSxlLmhlaWdodD0oZC5oZWlnaHQ+Zy5oZWlnaHQ/ZC5oZWlnaHQ6Zy5oZWlnaHQpLzEuNSxlLndpZHRoPWQud2lkdGg+Zy53aWR0aD9kLndpZHRoOmcud2lkdGh9fWVsc2UgdC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9cmV0dXJuIHQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoZT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnc7aWYoIXQuZ2xvYmFscy5oYXNYYXhpc0dyb3VwcylyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIGksYT0oKGU9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5mb250U2l6ZSl8fHQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxzPXQuZ2xvYmFscy5ncm91cHMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLnRpdGxlfSkscj1QLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHMpLG49dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLHMpLG89bmV3IE0odGhpcy5kQ3R4LmN0eCksaD1vLmdldFRleHRSZWN0cyhyLGEpLGM9aDtyZXR1cm4gciE9PW4mJihjPW8uZ2V0VGV4dFJlY3RzKG4sYSkpLGk9e3dpZHRoOmgud2lkdGg+PWMud2lkdGg/aC53aWR0aDpjLndpZHRoLGhlaWdodDpoLmhlaWdodD49Yy5oZWlnaHQ/aC5oZWlnaHQ6Yy5oZWlnaHR9LHQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoaT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9MCxpPTA7aWYoZS5jb25maWcueGF4aXMudGl0bGUudGV4dCE9PXZvaWQgMCl7dmFyIGE9bmV3IE0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKGUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpO3Q9YS53aWR0aCxpPWEuaGVpZ2h0fXJldHVybnt3aWR0aDp0LGhlaWdodDppfX19LHtrZXk6XCJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnc7dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscz10Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCk7dmFyIGk9dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscy5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHMudmFsdWV9KSxhPWkucmVkdWNlKGZ1bmN0aW9uKHMscil7cmV0dXJuIHM9PT12b2lkIDA/KGNvbnNvbGUuZXJyb3IoXCJZb3UgaGF2ZSBwb3NzaWJseSBzdXBwbGllZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2Ugc3VwcGx5IGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlXCIpLDApOnMubGVuZ3RoPnIubGVuZ3RoP3M6cn0sMCk7cmV0dXJuIDEuMDUqKGU9bmV3IE0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKGEsdC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSkud2lkdGgqaS5sZW5ndGg+dC5nbG9iYWxzLmdyaWRXaWR0aCYmdC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSE9PTAmJih0Lmdsb2JhbHMub3ZlcmxhcHBpbmdYTGFiZWxzPSEwKSxlfX0se2tleTpcImFkZGl0aW9uYWxQYWRkaW5nWExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMscz1pLmNvbmZpZyxyPXMueGF4aXMudHlwZSxuPWUud2lkdGg7YS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExO3ZhciBvPWkuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGg9ZnVuY3Rpb24oYyxkKXtzLnlheGlzLmxlbmd0aD4xJiZmdW5jdGlvbihnKXtyZXR1cm4gYS5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZykhPT0tMX0oZCl8fGZ1bmN0aW9uKGcpe2lmKHQuZEN0eC50aW1lc2NhbGVMYWJlbHMmJnQuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoKXt2YXIgcD10LmRDdHgudGltZXNjYWxlTGFiZWxzWzBdLGY9dC5kQ3R4LnRpbWVzY2FsZUxhYmVsc1t0LmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aC0xXS5wb3NpdGlvbituLzEuNzUtdC5kQ3R4LnlBeGlzV2lkdGhSaWdodCxiPXAucG9zaXRpb24tbi8xLjc1K3QuZEN0eC55QXhpc1dpZHRoTGVmdCxtPWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwicmlnaHRcIiYmdC5kQ3R4LmxnUmVjdC53aWR0aD4wP3QuZEN0eC5sZ1JlY3Qud2lkdGg6MDtmPmEuc3ZnV2lkdGgtYS50cmFuc2xhdGVYLW0mJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCksYjwtKGcuc2hvdyYmIWcuZmxvYXRpbmd8fHMuY2hhcnQudHlwZSE9PVwiYmFyXCImJnMuY2hhcnQudHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmcy5jaGFydC50eXBlIT09XCJyYW5nZUJhclwiJiZzLmNoYXJ0LnR5cGUhPT1cImJveFBsb3RcIj8xMDpuLzEuNzUpJiYoYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSEwKX1lbHNlIHI9PT1cImRhdGV0aW1lXCI/dC5kQ3R4LmdyaWRQYWQucmlnaHQ8biYmIWEucm90YXRlWExhYmVscyYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKTpyIT09XCJkYXRldGltZVwiJiZ0LmRDdHguZ3JpZFBhZC5yaWdodDxuLzItdC5kQ3R4LnlBeGlzV2lkdGhSaWdodCYmIWEucm90YXRlWExhYmVscyYmIWkuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiYoaS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCE9PVwiYmV0d2VlblwifHxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSYmKHQuZEN0eC54UGFkUmlnaHQ9bi8yKzEpfShjKX07cy55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7bz8odC5kQ3R4LmdyaWRQYWQubGVmdDxuJiYodC5kQ3R4LnhQYWRMZWZ0PW4vMisxKSx0LmRDdHgueFBhZFJpZ2h0PW4vMisxKTpoKGMsZCl9KX19XSkseX0oKSxMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcImdldHlBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9W10sYT0xMCxzPW5ldyBiZSh0aGlzLmRDdHguY3R4KTtyZXR1cm4gdC5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKHIsbil7dmFyIG89e3Nlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6LTEsdzp0fSxoPXQuZ2xvYmFscy55QXhpc1NjYWxlW25dLGM9MDtpZighcy5pc1lBeGlzSGlkZGVuKG4pJiZyLmxhYmVscy5zaG93JiZyLmxhYmVscy5taW5XaWR0aCE9PXZvaWQgMCYmKGM9ci5sYWJlbHMubWluV2lkdGgpLCFzLmlzWUF4aXNIaWRkZW4obikmJnIubGFiZWxzLnNob3cmJmgucmVzdWx0Lmxlbmd0aCl7dmFyIGQ9dC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbbl0sZz1oLm5pY2VNaW49PT1OdW1iZXIuTUlOX1ZBTFVFPzA6aC5uaWNlTWluLHA9aC5yZXN1bHQucmVkdWNlKGZ1bmN0aW9uKHUseCl7dmFyIHYsaztyZXR1cm4oKHY9U3RyaW5nKGQodSxvKSkpPT09bnVsbHx8dj09PXZvaWQgMD92b2lkIDA6di5sZW5ndGgpPigoaz1TdHJpbmcoZCh4LG8pKSk9PT1udWxsfHxrPT09dm9pZCAwP3ZvaWQgMDprLmxlbmd0aCk/dTp4fSxnKSxmPXA9ZChwLG8pO2lmKHAhPT12b2lkIDAmJnAubGVuZ3RoIT09MHx8KHA9aC5uaWNlTWF4KSx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXthPTA7dmFyIGI9dC5nbG9iYWxzLmxhYmVscy5zbGljZSgpO3A9UC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihiKSxwPWQocCx7c2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDotMSx3OnR9KSxmPWUuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIocCxiKX12YXIgbT1uZXcgTShlLmRDdHguY3R4KSx3PVwicm90YXRlKFwiLmNvbmNhdChyLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSxBPW0uZ2V0VGV4dFJlY3RzKHAsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx3LCExKSxsPUE7cCE9PWYmJihsPW0uZ2V0VGV4dFJlY3RzKGYsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx3LCExKSksaS5wdXNoKHt3aWR0aDooYz5sLndpZHRofHxjPkEud2lkdGg/YzpsLndpZHRoPkEud2lkdGg/bC53aWR0aDpBLndpZHRoKSthLGhlaWdodDpsLmhlaWdodD5BLmhlaWdodD9sLmhlaWdodDpBLmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSxpfX0se2tleTpcImdldHlBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT1bXTtyZXR1cm4gdC5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKGEscyl7aWYoYS5zaG93JiZhLnRpdGxlLnRleHQhPT12b2lkIDApe3ZhciByPW5ldyBNKGUuZEN0eC5jdHgpLG49XCJyb3RhdGUoXCIuY29uY2F0KGEudGl0bGUucm90YXRlLFwiIDAgMClcIiksbz1yLmdldFRleHRSZWN0cyhhLnRpdGxlLnRleHQsYS50aXRsZS5zdHlsZS5mb250U2l6ZSxhLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksbiwhMSk7aS5wdXNoKHt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSxpfX0se2tleTpcImdldFRvdGFsWUF4aXNXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9MCxpPTAsYT0wLHM9ZS5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoPjE/MTA6MCxyPW5ldyBiZSh0aGlzLmRDdHguY3R4KSxuPWZ1bmN0aW9uKG8saCl7dmFyIGM9ZS5jb25maWcueWF4aXNbaF0uZmxvYXRpbmcsZD0wO28ud2lkdGg+MCYmIWM/KGQ9by53aWR0aCtzLGZ1bmN0aW9uKGcpe3JldHVybiBlLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZyk+LTF9KGgpJiYoZD1kLW8ud2lkdGgtcykpOmQ9Y3x8ci5pc1lBeGlzSGlkZGVuKGgpPzA6NSxlLmNvbmZpZy55YXhpc1toXS5vcHBvc2l0ZT9hKz1kOmkrPWQsdCs9ZH07cmV0dXJuIGUuZ2xvYmFscy55TGFiZWxzQ29vcmRzLm1hcChmdW5jdGlvbihvLGgpe24obyxoKX0pLGUuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKGZ1bmN0aW9uKG8saCl7bihvLGgpfSksZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmIWUuY29uZmlnLnlheGlzWzBdLmZsb2F0aW5nJiYodD1lLmdsb2JhbHMueUxhYmVsc0Nvb3Jkc1swXS53aWR0aCtlLmdsb2JhbHMueVRpdGxlQ29vcmRzWzBdLndpZHRoKzE1KSx0aGlzLmRDdHgueUF4aXNXaWR0aExlZnQ9aSx0aGlzLmRDdHgueUF4aXNXaWR0aFJpZ2h0PWEsdH19XSkseX0oKSxQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcImdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMubm9EYXRhfHx0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiAwO3ZhciBpPWZ1bmN0aW9uKGMpe3JldHVybiBjPT09XCJiYXJcInx8Yz09PVwicmFuZ2VCYXJcInx8Yz09PVwiY2FuZGxlc3RpY2tcInx8Yz09PVwiYm94UGxvdFwifSxhPXQuY29uZmlnLmNoYXJ0LnR5cGUscz0wLHI9aShhKT90LmNvbmZpZy5zZXJpZXMubGVuZ3RoOjE7aWYodC5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCYmKHI9dC5nbG9iYWxzLmNvbWJvQmFyQ291bnQpLHQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMuZm9yRWFjaChmdW5jdGlvbihjKXtpKGMudHlwZSkmJihyLT0xKX0pLHQuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJihyPTEpLChpKGEpfHx0Lmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmdC5nbG9iYWxzLmlzWE51bWVyaWMmJiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZyPjApe3ZhciBuLG8saD1NYXRoLmFicyh0Lmdsb2JhbHMuaW5pdGlhbE1heFgtdC5nbG9iYWxzLmluaXRpYWxNaW5YKTtoPD0zJiYoaD10Lmdsb2JhbHMuZGF0YVBvaW50cyksbj1oL2UsdC5nbG9iYWxzLm1pblhEaWZmJiZ0Lmdsb2JhbHMubWluWERpZmYvbj4wJiYobz10Lmdsb2JhbHMubWluWERpZmYvbiksbz5lLzImJihvLz0yKSwocz1vL3IqcGFyc2VJbnQodC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihzPTEpLHM9cy8ocj4xPzE6MS41KSs1LHQuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcz1zfXJldHVybiBzfX0se2tleTpcImdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9dC5nbG9iYWxzLGE9dGhpcy5kQ3R4LmlzU3BhcmtsaW5lfHwhdC5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDtbXCJ0aXRsZVwiLFwic3VidGl0bGVcIl0uZm9yRWFjaChmdW5jdGlvbihuKXt0LmNvbmZpZ1tuXS50ZXh0IT09dm9pZCAwP2ErPXQuY29uZmlnW25dLm1hcmdpbjphKz1lLmRDdHguaXNTcGFya2xpbmV8fCF0Lmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjV9KSwhdC5jb25maWcubGVnZW5kLnNob3d8fHQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwiYm90dG9tXCJ8fHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8dC5nbG9iYWxzLmF4aXNDaGFydHN8fChhKz0xMCk7dmFyIHM9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpO2kuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtcy5oZWlnaHQtci5oZWlnaHQtYSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3MuaGVpZ2h0K3IuaGVpZ2h0K2F9fSx7a2V5Olwic2V0R3JpZFhQb3NGb3JEdWFsWUF4aXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPW5ldyBiZSh0aGlzLmRDdHguY3R4KTtpLmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24ocyxyKXtpLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YocikhPT0tMXx8cy5mbG9hdGluZ3x8YS5pc1lBeGlzSGlkZGVuKHIpfHwocy5vcHBvc2l0ZSYmKGkuZ2xvYmFscy50cmFuc2xhdGVYPWkuZ2xvYmFscy50cmFuc2xhdGVYLSh0W3JdLndpZHRoK2Vbcl0ud2lkdGgpLXBhcnNlSW50KGkuY29uZmlnLnlheGlzW3JdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS4yLTEyKSxpLmdsb2JhbHMudHJhbnNsYXRlWDwyJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9MikpfSl9fV0pLHl9KCksUmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZ1JlY3Q9e30sdGhpcy55QXhpc1dpZHRoPTAsdGhpcy55QXhpc1dpZHRoTGVmdD0wLHRoaXMueUF4aXNXaWR0aFJpZ2h0PTAsdGhpcy54QXhpc0hlaWdodD0wLHRoaXMuaXNTcGFya2xpbmU9dGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCx0aGlzLmRpbUhlbHBlcnM9bmV3IFN0KHRoaXMpLHRoaXMuZGltWUF4aXM9bmV3IEx0KHRoaXMpLHRoaXMuZGltWEF4aXM9bmV3IEN0KHRoaXMpLHRoaXMuZGltR3JpZD1uZXcgUHQodGhpcyksdGhpcy5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9MCx0aGlzLmdyaWRQYWQ9dGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsdGhpcy54UGFkUmlnaHQ9MCx0aGlzLnhQYWRMZWZ0PTB9cmV0dXJuIFkoeSxbe2tleTpcInBsb3RDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10Lmdsb2JhbHM7dGhpcy5sZ1JlY3Q9dGhpcy5kaW1IZWxwZXJzLmdldExlZ2VuZHNSZWN0KCksdGhpcy5pc1NwYXJrbGluZSYmKCh0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aD4wfHx0LmNvbmZpZy5tYXJrZXJzLnNpemU+MCkmJk9iamVjdC5lbnRyaWVzKHRoaXMuZ3JpZFBhZCkuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgcj1FZShzLDIpLG49clswXSxvPXJbMV07ZS5ncmlkUGFkW25dPU1hdGgubWF4KG8sZS53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZS8xLjUpfSksdGhpcy5ncmlkUGFkLnRvcD1NYXRoLm1heCh0LmNvbmZpZy5zdHJva2Uud2lkdGgvMix0aGlzLmdyaWRQYWQudG9wKSx0aGlzLmdyaWRQYWQuYm90dG9tPU1hdGgubWF4KHQuY29uZmlnLnN0cm9rZS53aWR0aC8yLHRoaXMuZ3JpZFBhZC5ib3R0b20pKSxpLmF4aXNDaGFydHM/dGhpcy5zZXREaW1lbnNpb25zRm9yQXhpc0NoYXJ0cygpOnRoaXMuc2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHMoKSx0aGlzLmRpbUdyaWQuZ3JpZFBhZEZvcnRpdGxlU3VidGl0bGUoKSxpLmdyaWRIZWlnaHQ9aS5ncmlkSGVpZ2h0LXRoaXMuZ3JpZFBhZC50b3AtdGhpcy5ncmlkUGFkLmJvdHRvbSxpLmdyaWRXaWR0aD1pLmdyaWRXaWR0aC10aGlzLmdyaWRQYWQubGVmdC10aGlzLmdyaWRQYWQucmlnaHQtdGhpcy54UGFkUmlnaHQtdGhpcy54UGFkTGVmdDt2YXIgYT10aGlzLmRpbUdyaWQuZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzKGkuZ3JpZFdpZHRoKTtpLmdyaWRXaWR0aD1pLmdyaWRXaWR0aC0yKmEsaS50cmFuc2xhdGVYPWkudHJhbnNsYXRlWCt0aGlzLmdyaWRQYWQubGVmdCt0aGlzLnhQYWRMZWZ0KyhhPjA/YSs0OjApLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrdGhpcy5ncmlkUGFkLnRvcH19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXQuZ2xvYmFscyxhPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNMYWJlbHNDb29yZHMoKSxzPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNUaXRsZUNvb3JkcygpO3QuZ2xvYmFscy55TGFiZWxzQ29vcmRzPVtdLHQuZ2xvYmFscy55VGl0bGVDb29yZHM9W10sdC5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKHAsZil7dC5nbG9iYWxzLnlMYWJlbHNDb29yZHMucHVzaCh7d2lkdGg6YVtmXS53aWR0aCxpbmRleDpmfSksdC5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5wdXNoKHt3aWR0aDpzW2ZdLndpZHRoLGluZGV4OmZ9KX0pLHRoaXMueUF4aXNXaWR0aD10aGlzLmRpbVlBeGlzLmdldFRvdGFsWUF4aXNXaWR0aCgpO3ZhciByPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNMYWJlbHNDb29yZHMoKSxuPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3JkcygpLG89dGhpcy5kaW1YQXhpcy5nZXR4QXhpc1RpdGxlQ29vcmRzKCk7dGhpcy5jb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHMocixvLG4pLGkudHJhbnNsYXRlWEF4aXNZPXQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP3RoaXMueEF4aXNIZWlnaHQvODotNCxpLnRyYW5zbGF0ZVhBeGlzWD10Lmdsb2JhbHMucm90YXRlWExhYmVscyYmdC5nbG9iYWxzLmlzWE51bWVyaWMmJnQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU8PS00NT8tdGhpcy54QXhpc1dpZHRoLzQ6MCx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaS5yb3RhdGVYTGFiZWxzPSExLGkudHJhbnNsYXRlWEF4aXNZPXBhcnNlSW50KHQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS41Ki0xKSxpLnRyYW5zbGF0ZVhBeGlzWT1pLnRyYW5zbGF0ZVhBeGlzWSt0LmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSxpLnRyYW5zbGF0ZVhBeGlzWD1pLnRyYW5zbGF0ZVhBeGlzWCt0LmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDt2YXIgaD10aGlzLnlBeGlzV2lkdGgsYz10aGlzLnhBeGlzSGVpZ2h0O2kueEF4aXNMYWJlbHNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodC1vLmhlaWdodCxpLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ9aS54QXhpc0xhYmVsc0hlaWdodC1yLmhlaWdodCxpLnhBeGlzTGFiZWxzV2lkdGg9dGhpcy54QXhpc1dpZHRoLGkueEF4aXNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodDt2YXIgZD0xMDsodC5jb25maWcuY2hhcnQudHlwZT09PVwicmFkYXJcInx8dGhpcy5pc1NwYXJrbGluZSkmJihoPTAsYz1pLmdvbGRlblBhZGRpbmcpLHRoaXMuaXNTcGFya2xpbmUmJih0aGlzLmxnUmVjdD17aGVpZ2h0OjAsd2lkdGg6MH0pLCh0aGlzLmlzU3BhcmtsaW5lfHx0LmNvbmZpZy5jaGFydC50eXBlPT09XCJ0cmVlbWFwXCIpJiYoaD0wLGM9MCxkPTApLHRoaXMuaXNTcGFya2xpbmV8fHRoaXMuZGltWEF4aXMuYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzKHIpO3ZhciBnPWZ1bmN0aW9uKCl7aS50cmFuc2xhdGVYPWgsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWUubGdSZWN0LmhlaWdodC1jLShlLmlzU3BhcmtsaW5lfHx0LmNvbmZpZy5jaGFydC50eXBlPT09XCJ0cmVlbWFwXCI/MDp0Lmdsb2JhbHMucm90YXRlWExhYmVscz8xMDoxNSksaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC1ofTtzd2l0Y2godC5jb25maWcueGF4aXMucG9zaXRpb249PT1cInRvcFwiJiYoZD1pLnhBeGlzSGVpZ2h0LXQuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtNSksdC5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjppLnRyYW5zbGF0ZVk9ZCxnKCk7YnJlYWs7Y2FzZVwidG9wXCI6aS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtkLGcoKTticmVhaztjYXNlXCJsZWZ0XCI6aS50cmFuc2xhdGVZPWQsaS50cmFuc2xhdGVYPXRoaXMubGdSZWN0LndpZHRoK2gsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWMtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1oO2JyZWFrO2Nhc2VcInJpZ2h0XCI6aS50cmFuc2xhdGVZPWQsaS50cmFuc2xhdGVYPWgsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWMtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1oLTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX10aGlzLmRpbUdyaWQuc2V0R3JpZFhQb3NGb3JEdWFsWUF4aXMocyxhKSxuZXcgR2UodGhpcy5jdHgpLnNldFlBeGlzWFBvc2l0aW9uKGEscyl9fSx7a2V5Olwic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PWUuZ2xvYmFscyxpPWUuY29uZmlnLGE9MDtlLmNvbmZpZy5sZWdlbmQuc2hvdyYmIWUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmKGE9MjApO3ZhciBzPWkuY2hhcnQudHlwZT09PVwicGllXCJ8fGkuY2hhcnQudHlwZT09PVwicG9sYXJBcmVhXCJ8fGkuY2hhcnQudHlwZT09PVwiZG9udXRcIj9cInBpZVwiOlwicmFkaWFsQmFyXCIscj1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFksbj1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFg7aWYoIWkubGVnZW5kLnNob3d8fGkubGVnZW5kLmZsb2F0aW5nKXJldHVybiB0LmdyaWRIZWlnaHQ9dC5zdmdIZWlnaHQtaS5ncmlkLnBhZGRpbmcubGVmdCtpLmdyaWQucGFkZGluZy5yaWdodCx0LmdyaWRXaWR0aD10LmdyaWRIZWlnaHQsdC50cmFuc2xhdGVZPXIsdm9pZCh0LnRyYW5zbGF0ZVg9bisodC5zdmdXaWR0aC10LmdyaWRXaWR0aCkvMik7c3dpdGNoKGkubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjp0LmdyaWRIZWlnaHQ9dC5zdmdIZWlnaHQtdGhpcy5sZ1JlY3QuaGVpZ2h0LXQuZ29sZGVuUGFkZGluZyx0LmdyaWRXaWR0aD10LnN2Z1dpZHRoLHQudHJhbnNsYXRlWT1yLTEwLHQudHJhbnNsYXRlWD1uKyh0LnN2Z1dpZHRoLXQuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcInRvcFwiOnQuZ3JpZEhlaWdodD10LnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtdC5nb2xkZW5QYWRkaW5nLHQuZ3JpZFdpZHRoPXQuc3ZnV2lkdGgsdC50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtyKzEwLHQudHJhbnNsYXRlWD1uKyh0LnN2Z1dpZHRoLXQuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcImxlZnRcIjp0LmdyaWRXaWR0aD10LnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWEsdC5ncmlkSGVpZ2h0PWkuY2hhcnQuaGVpZ2h0IT09XCJhdXRvXCI/dC5zdmdIZWlnaHQ6dC5ncmlkV2lkdGgsdC50cmFuc2xhdGVZPXIsdC50cmFuc2xhdGVYPW4rdGhpcy5sZ1JlY3Qud2lkdGgrYTticmVhaztjYXNlXCJyaWdodFwiOnQuZ3JpZFdpZHRoPXQuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYS01LHQuZ3JpZEhlaWdodD1pLmNoYXJ0LmhlaWdodCE9PVwiYXV0b1wiP3Quc3ZnSGVpZ2h0OnQuZ3JpZFdpZHRoLHQudHJhbnNsYXRlWT1yLHQudHJhbnNsYXRlWD1uKzEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9fX0se2tleTpcImNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuaGFzWGF4aXNHcm91cHM/MjoxLHI9aS5oZWlnaHQrZS5oZWlnaHQrdC5oZWlnaHQsbj1hLmdsb2JhbHMuaXNNdWx0aUxpbmVYPzEuMjphLmdsb2JhbHMuTElORV9IRUlHSFRfUkFUSU8sbz1hLmdsb2JhbHMucm90YXRlWExhYmVscz8yMjoxMCxoPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZhLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwiPzEwOjA7dGhpcy54QXhpc0hlaWdodD1yKm4rcypvK2gsdGhpcy54QXhpc1dpZHRoPWUud2lkdGgsdGhpcy54QXhpc0hlaWdodC10LmhlaWdodD5hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0JiYodGhpcy54QXhpc0hlaWdodD1hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0JiZ0aGlzLnhBeGlzSGVpZ2h0PGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQpLGEuY29uZmlnLnhheGlzLmZsb2F0aW5nJiYodGhpcy54QXhpc0hlaWdodD0wKTt2YXIgYz0wLGQ9MDthLmNvbmZpZy55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2MrPWcubGFiZWxzLm1pbldpZHRoLGQrPWcubGFiZWxzLm1heFdpZHRofSksdGhpcy55QXhpc1dpZHRoPGMmJih0aGlzLnlBeGlzV2lkdGg9YyksdGhpcy55QXhpc1dpZHRoPmQmJih0aGlzLnlBeGlzV2lkdGg9ZCl9fV0pLHl9KCksSXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMubGdDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0TGVnZW5kU3R5bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LGksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7YS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJ0ZXh0L2Nzc1wiKTt2YXIgcz0oKGU9dGhpcy5sZ0N0eC5jdHgpPT09bnVsbHx8ZT09PXZvaWQgMHx8KHQ9ZS5vcHRzKT09PW51bGx8fHQ9PT12b2lkIDB8fChpPXQuY2hhcnQpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5ub25jZSl8fHRoaXMudy5jb25maWcuY2hhcnQubm9uY2U7cyYmYS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLHMpO3ZhciByPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGBcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20sIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcFxuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWxlZnQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcyB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCAqLCAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyICoge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIH1cblxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tbGVmdCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLmFwZXhjaGFydHMtbm8tY2xpY2sge1xuICAgICAgICBjdXJzb3I6IGF1dG87XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIHtcbiAgICAgICAgb3BhY2l0eTogMC40NTtcbiAgICAgIH1gKTtyZXR1cm4gYS5hcHBlbmRDaGlsZChyKSxhfX0se2tleTpcImdldExlZ2VuZEJCb3hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PWUud2lkdGg7cmV0dXJue2Nsd2g6ZS5oZWlnaHQsY2x3dzp0fX19LHtrZXk6XCJhcHBlbmRUb0ZvcmVpZ25PYmplY3RcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSl9fSx7a2V5OlwidG9nZ2xlRGF0YVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPXRoaXMudztpZihhLmdsb2JhbHMuYXhpc0NoYXJ0c3x8YS5jb25maWcuY2hhcnQudHlwZT09PVwicmFkaWFsQmFyXCIpe2EuZ2xvYmFscy5yZXNpemVkPSEwO3ZhciBzPW51bGwscj1udWxsO2EuZ2xvYmFscy5yaXNpbmdTZXJpZXM9W10sYS5nbG9iYWxzLmF4aXNDaGFydHM/KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpOihzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQoZSsxLFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEpLHQ/W3tjczphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc30se2NzOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzfV0uZm9yRWFjaChmdW5jdGlvbihjKXtpLnJpc2VDb2xsYXBzZWRTZXJpZXMoYy5jcyxjLmNzaSxyKX0pOnRoaXMuaGlkZVNlcmllcyh7c2VyaWVzRWw6cyxyZWFsSW5kZXg6cn0pfWVsc2V7dmFyIG49YS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KGUrMSxcIiddIHBhdGhcIikpLG89YS5jb25maWcuY2hhcnQudHlwZTtpZihvPT09XCJwaWVcInx8bz09PVwicG9sYXJBcmVhXCJ8fG89PT1cImRvbnV0XCIpe3ZhciBoPWEuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHM7bmV3IE0odGhpcy5sZ0N0eC5jdHgpLnBhdGhNb3VzZURvd24obi5tZW1iZXJzWzBdLG51bGwpLHRoaXMubGdDdHguY3R4LnBpZS5wcmludERhdGFMYWJlbHNJbm5lcihuLm1lbWJlcnNbMF0ubm9kZSxoKX1uLmZpcmUoXCJjbGlja1wiKX19fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VyaWVzRWwsaT1lLnJlYWxJbmRleCxhPXRoaXMudyxzPVAuY2xvbmUoYS5jb25maWcuc2VyaWVzKTtpZihhLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dmFyIHI9ITE7aWYoYS5jb25maWcueWF4aXNbaV0mJmEuY29uZmlnLnlheGlzW2ldLnNob3cmJmEuY29uZmlnLnlheGlzW2ldLnNob3dBbHdheXMmJihyPSEwLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk8MCYmKGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV0uZGF0YS5zbGljZSgpLHR5cGU6dC5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSkpKSwhcil7YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTp0LnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKTt2YXIgbj1hLmdsb2JhbHMucmlzaW5nU2VyaWVzLmluZGV4T2YoaSk7YS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5zcGxpY2UobiwxKX19ZWxzZSBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldfSksYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKTtmb3IodmFyIG89dC5jaGlsZE5vZGVzLGg9MDtoPG8ubGVuZ3RoO2grKylvW2hdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKSYmKG9baF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1oaWRlXCIpP29baF0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtaGlkZVwiKTpvW2hdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGVcIikpO2EuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQ9YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1hLmNvbmZpZy5zZXJpZXMubGVuZ3RoLHM9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19LHtrZXk6XCJyaXNlQ29sbGFwc2VkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPVAuY2xvbmUoYS5jb25maWcuc2VyaWVzKTtpZihlLmxlbmd0aD4wKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmluZGV4PT09aSYmKGEuZ2xvYmFscy5heGlzQ2hhcnRzPyhzW2ldLmRhdGE9ZVtyXS5kYXRhLnNsaWNlKCksZS5zcGxpY2UociwxKSx0LnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSk6KHNbaV09ZVtyXS5kYXRhLGUuc3BsaWNlKHIsMSksdC5zcGxpY2UociwxKSxhLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpKTtzPXRoaXMuX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZShzKSx0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fX0se2tleTpcIl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7cmV0dXJuIHQuZ2xvYmFscy5heGlzQ2hhcnRzP2UuZm9yRWFjaChmdW5jdGlvbihpLGEpe3QuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJihlW2FdLmRhdGE9W10pfSk6ZS5mb3JFYWNoKGZ1bmN0aW9uKGksYSl7dC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKGVbYV09MCl9KSxlfX1dKSx5fSgpLGl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub25MZWdlbmRDbGljaz10aGlzLm9uTGVnZW5kQ2xpY2suYmluZCh0aGlzKSx0aGlzLm9uTGVnZW5kSG92ZXJlZD10aGlzLm9uTGVnZW5kSG92ZXJlZC5iaW5kKHRoaXMpLHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQ9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlPT09XCJiYXJcIiYmdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJnRoaXMudy5jb25maWcuc2VyaWVzLmxlbmd0aD09PTEsdGhpcy5sZWdlbmRIZWxwZXJzPW5ldyBJdCh0aGlzKX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5nbG9iYWxzLGk9ZS5jb25maWc7aWYoKGkubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXMmJnQuc2VyaWVzLmxlbmd0aD09PTF8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWR8fHQuc2VyaWVzLmxlbmd0aD4xfHwhdC5heGlzQ2hhcnRzKSYmaS5sZWdlbmQuc2hvdyl7Zm9yKDt0LmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZDspdC5kb20uZWxMZWdlbmRXcmFwLnJlbW92ZUNoaWxkKHQuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkKTt0aGlzLmRyYXdMZWdlbmRzKCksUC5pc0lFMTEoKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZFN0eWxlcygpKTp0aGlzLmxlZ2VuZEhlbHBlcnMuYXBwZW5kVG9Gb3JlaWduT2JqZWN0KCksaS5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwifHxpLmxlZ2VuZC5wb3NpdGlvbj09PVwidG9wXCI/dGhpcy5sZWdlbmRBbGlnbkhvcml6b250YWwoKTppLmxlZ2VuZC5wb3NpdGlvbiE9PVwicmlnaHRcIiYmaS5sZWdlbmQucG9zaXRpb24hPT1cImxlZnRcInx8dGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCl9fX0se2tleTpcImRyYXdMZWdlbmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9dC5jb25maWcubGVnZW5kLmZvbnRGYW1pbHksYT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMscz10Lmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7aWYodC5jb25maWcuY2hhcnQudHlwZT09PVwiaGVhdG1hcFwiKXt2YXIgcj10LmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzO2E9ci5tYXAoZnVuY3Rpb24oVCl7cmV0dXJuIFQubmFtZT9ULm5hbWU6VC5mcm9tK1wiIC0gXCIrVC50b30pLHM9ci5tYXAoZnVuY3Rpb24oVCl7cmV0dXJuIFQuY29sb3J9KX1lbHNlIHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJihhPXQuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSk7dC5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGE9dC5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zKTtmb3IodmFyIG49dC5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcixvPXQuY29uZmlnLmxlZ2VuZC5pbnZlcnNlT3JkZXIsaD1vP2EubGVuZ3RoLTE6MDtvP2g+PTA6aDw9YS5sZW5ndGgtMTtvP2gtLTpoKyspe3ZhciBjLGQ9bihhW2hdLHtzZXJpZXNJbmRleDpoLHc6dH0pLGc9ITEscD0hMTtpZih0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD4wKWZvcih2YXIgZj0wO2Y8dC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7ZisrKXQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZl0uaW5kZXg9PT1oJiYoZz0hMCk7aWYodC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjApZm9yKHZhciBiPTA7Yjx0Lmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7YisrKXQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2JdPT09aCYmKHA9ITApO3ZhciBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO20uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTt2YXIgdz10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRYLEE9dC5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WSxsPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmhlaWdodCx1PXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLndpZHRoLHg9dC5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlV2lkdGgsdj10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VDb2xvcixrPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnJhZGl1cyxTPW0uc3R5bGU7Uy5iYWNrZ3JvdW5kPXNbaF0sUy5jb2xvcj1zW2hdLFMuc2V0UHJvcGVydHkoXCJiYWNrZ3JvdW5kXCIsc1toXSxcImltcG9ydGFudFwiKSx0LmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzJiZ0LmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2hdJiYoUy5iYWNrZ3JvdW5kPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbaF0pLHQuZ2xvYmFscy5zZXJpZXNDb2xvcnNbaF0hPT12b2lkIDAmJihTLmJhY2tncm91bmQ9dC5nbG9iYWxzLnNlcmllc0NvbG9yc1toXSxTLmNvbG9yPXQuZ2xvYmFscy5zZXJpZXNDb2xvcnNbaF0pLFMuaGVpZ2h0PUFycmF5LmlzQXJyYXkobCk/cGFyc2VGbG9hdChsW2hdKStcInB4XCI6cGFyc2VGbG9hdChsKStcInB4XCIsUy53aWR0aD1BcnJheS5pc0FycmF5KHUpP3BhcnNlRmxvYXQodVtoXSkrXCJweFwiOnBhcnNlRmxvYXQodSkrXCJweFwiLFMubGVmdD0oQXJyYXkuaXNBcnJheSh3KT9wYXJzZUZsb2F0KHdbaF0pOnBhcnNlRmxvYXQodykpK1wicHhcIixTLnRvcD0oQXJyYXkuaXNBcnJheShBKT9wYXJzZUZsb2F0KEFbaF0pOnBhcnNlRmxvYXQoQSkpK1wicHhcIixTLmJvcmRlcldpZHRoPUFycmF5LmlzQXJyYXkoeCk/eFtoXTp4LFMuYm9yZGVyQ29sb3I9QXJyYXkuaXNBcnJheSh2KT92W2hdOnYsUy5ib3JkZXJSYWRpdXM9QXJyYXkuaXNBcnJheShrKT9wYXJzZUZsb2F0KGtbaF0pK1wicHhcIjpwYXJzZUZsb2F0KGspK1wicHhcIix0LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MJiYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKT90LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2hdJiYobS5pbm5lckhUTUw9dC5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtoXSgpKTptLmlubmVySFRNTD10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKCkpLE0uc2V0QXR0cnMobSx7cmVsOmgrMSxcImRhdGE6Y29sbGFwc2VkXCI6Z3x8cH0pLChnfHxwKSYmbS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIik7dmFyIEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO0wuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksTC5pbm5lckhUTUw9QXJyYXkuaXNBcnJheShkKT9kLmpvaW4oXCIgXCIpOmQ7dmFyIEk9dC5jb25maWcubGVnZW5kLmxhYmVscy51c2VTZXJpZXNDb2xvcnM/dC5nbG9iYWxzLmNvbG9yc1toXTpBcnJheS5pc0FycmF5KHQuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKT8oYz10LmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycyk9PT1udWxsfHxjPT09dm9pZCAwP3ZvaWQgMDpjW2hdOnQuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzO0l8fChJPXQuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksTC5zdHlsZS5jb2xvcj1JLEwuc3R5bGUuZm9udFNpemU9cGFyc2VGbG9hdCh0LmNvbmZpZy5sZWdlbmQuZm9udFNpemUpK1wicHhcIixMLnN0eWxlLmZvbnRXZWlnaHQ9dC5jb25maWcubGVnZW5kLmZvbnRXZWlnaHQsTC5zdHlsZS5mb250RmFtaWx5PWl8fHQuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksTS5zZXRBdHRycyhMLHtyZWw6aCsxLGk6aCxcImRhdGE6ZGVmYXVsdC10ZXh0XCI6ZW5jb2RlVVJJQ29tcG9uZW50KGQpLFwiZGF0YTpjb2xsYXBzZWRcIjpnfHxwfSksQy5hcHBlbmRDaGlsZChtKSxDLmFwcGVuZENoaWxkKEwpO3ZhciB6PW5ldyBxKHRoaXMuY3R4KTt0LmNvbmZpZy5sZWdlbmQuc2hvd0Zvclplcm9TZXJpZXN8fHouZ2V0U2VyaWVzVG90YWxCeUluZGV4KGgpPT09MCYmei5zZXJpZXNIYXZlU2FtZVZhbHVlcyhoKSYmIXouaXNTZXJpZXNOdWxsKGgpJiZ0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGgpPT09LTEmJnQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaCk9PT0tMSYmQy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXNcIiksdC5jb25maWcubGVnZW5kLnNob3dGb3JOdWxsU2VyaWVzfHx6LmlzU2VyaWVzTnVsbChoKSYmdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihoKT09PS0xJiZ0Lmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGgpPT09LTEmJkMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzXCIpLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmFwcGVuZENoaWxkKEMpLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFsaWduLVwiLmNvbmNhdCh0LmNvbmZpZy5sZWdlbmQuaG9yaXpvbnRhbEFsaWduKSksdC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFweC1sZWdlbmQtcG9zaXRpb24tXCIrdC5jb25maWcubGVnZW5kLnBvc2l0aW9uKSxDLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIiksQy5zdHlsZS5tYXJnaW49XCJcIi5jb25jYXQodC5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4udmVydGljYWwsXCJweCBcIikuY29uY2F0KHQuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLmhvcml6b250YWwsXCJweFwiKSx0Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS53aWR0aD10LmNvbmZpZy5sZWdlbmQud2lkdGg/dC5jb25maWcubGVnZW5kLndpZHRoK1wicHhcIjpcIlwiLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLmhlaWdodD10LmNvbmZpZy5sZWdlbmQuaGVpZ2h0P3QuY29uZmlnLmxlZ2VuZC5oZWlnaHQrXCJweFwiOlwiXCIsTS5zZXRBdHRycyhDLHtyZWw6aCsxLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcoYVtoXSksXCJkYXRhOmNvbGxhcHNlZFwiOmd8fHB9KSwoZ3x8cCkmJkMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpLHQuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzfHxDLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW5vLWNsaWNrXCIpfXQuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUub25MZWdlbmRDbGljaywhMCksdC5jb25maWcubGVnZW5kLm9uSXRlbUhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJnQuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGg9PT0wJiYodC5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGUub25MZWdlbmRIb3ZlcmVkLCEwKSx0Lmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdXRcIixlLm9uTGVnZW5kSG92ZXJlZCwhMCkpfX0se2tleTpcInNldExlZ2VuZFdyYXBYWVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAscz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9MCxuPTA7aWYoaS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJib3R0b21cIiluKz1pLmdsb2JhbHMuc3ZnSGVpZ2h0LXMuaGVpZ2h0LzI7ZWxzZSBpZihpLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cInRvcFwiKXt2YXIgbz1uZXcgUmUodGhpcy5jdHgpLGg9by5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKS5oZWlnaHQsYz1vLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLmhlaWdodDtuPW4rKGg+MD9oLTEwOjApKyhjPjA/Yy0xMDowKX1hLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixyPXIrZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxuPW4rdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxhLnN0eWxlLmxlZnQ9citcInB4XCIsYS5zdHlsZS50b3A9bitcInB4XCIsaS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJib3R0b21cIj8oYS5zdHlsZS50b3A9XCJhdXRvXCIsYS5zdHlsZS5ib3R0b209NS1pLmNvbmZpZy5sZWdlbmQub2Zmc2V0WStcInB4XCIpOmkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwicmlnaHRcIiYmKGEuc3R5bGUubGVmdD1cImF1dG9cIixhLnN0eWxlLnJpZ2h0PTI1K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYK1wicHhcIiksW1wid2lkdGhcIixcImhlaWdodFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2Euc3R5bGVbZF0mJihhLnN0eWxlW2RdPXBhcnNlSW50KGkuY29uZmlnLmxlZ2VuZFtkXSwxMCkrXCJweFwiKX0pfX0se2tleTpcImxlZ2VuZEFsaWduSG9yaXpvbnRhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLnJpZ2h0PTA7dmFyIHQ9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPW5ldyBSZSh0aGlzLmN0eCksYT1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHM9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKSxyPTA7ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJib3R0b21cIj9yPS10LmNsd2gvMS44OmUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwidG9wXCImJihyPWEuaGVpZ2h0K3MuaGVpZ2h0K2UuY29uZmlnLnRpdGxlLm1hcmdpbitlLmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLHIpfX0se2tleTpcImxlZ2VuZEFsaWduVmVydGljYWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PXRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCksaT0wO2UuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwibGVmdFwiJiYoaT0yMCksZS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJyaWdodFwiJiYoaT1lLmdsb2JhbHMuc3ZnV2lkdGgtdC5jbHd3LTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWShpLDIwKX19LHtrZXk6XCJvbkxlZ2VuZEhvdmVyZWRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1lLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIil8fGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTtpZih0LmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCJ8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQpe2lmKGkpe3ZhciBhPXBhcnNlSW50KGUudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kSG92ZXJcIixbdGhpcy5jdHgsYSx0aGlzLnddKSxuZXcgaWUodGhpcy5jdHgpLmhpZ2hsaWdodFJhbmdlSW5TZXJpZXMoZSxlLnRhcmdldCl9fWVsc2UhZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIikmJmkmJm5ldyBpZSh0aGlzLmN0eCkudG9nZ2xlU2VyaWVzT25Ib3ZlcihlLGUudGFyZ2V0KX19LHtrZXk6XCJvbkxlZ2VuZENsaWNrXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O2lmKCF0LmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpfHxlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHxlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikpKXt2YXIgaT1wYXJzZUludChlLnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsYT1lLnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmNvbGxhcHNlZFwiKT09PVwidHJ1ZVwiLHM9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMubGVnZW5kQ2xpY2s7dHlwZW9mIHM9PVwiZnVuY3Rpb25cIiYmcyh0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZENsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSk7dmFyIHI9dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrO3R5cGVvZiByPT1cImZ1bmN0aW9uXCImJmUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSYmKHIodGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRNYXJrZXJDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pKSx0LmNvbmZpZy5jaGFydC50eXBlIT09XCJ0cmVlbWFwXCImJnQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImhlYXRtYXBcIiYmIXRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJnQuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzJiZ0aGlzLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhpLGEpfX19XSkseX0oKSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgdD10aGlzLnc7dGhpcy5ldj10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cyx0aGlzLnNlbGVjdGVkQ2xhc3M9XCJhcGV4Y2hhcnRzLXNlbGVjdGVkXCIsdGhpcy5sb2NhbGVWYWx1ZXM9dGhpcy53Lmdsb2JhbHMubG9jYWxlLnRvb2xiYXIsdGhpcy5taW5YPXQuZ2xvYmFscy5taW5YLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WH1yZXR1cm4gWSh5LFt7a2V5OlwiY3JlYXRlVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9LGE9aSgpO2lmKGEuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtdG9vbGJhclwiKSxhLnN0eWxlLnRvcD10LmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFkrXCJweFwiLGEuc3R5bGUucmlnaHQ9My10LmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFgrXCJweFwiLHQuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGEpLHRoaXMuZWxab29tPWkoKSx0aGlzLmVsWm9vbUluPWkoKSx0aGlzLmVsWm9vbU91dD1pKCksdGhpcy5lbFBhbj1pKCksdGhpcy5lbFNlbGVjdGlvbj1pKCksdGhpcy5lbFpvb21SZXNldD1pKCksdGhpcy5lbE1lbnVJY29uPWkoKSx0aGlzLmVsTWVudT1pKCksdGhpcy5lbEN1c3RvbUljb25zPVtdLHRoaXMudD10LmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLEFycmF5LmlzQXJyYXkodGhpcy50LmN1c3RvbUljb25zKSlmb3IodmFyIHM9MDtzPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7cysrKXRoaXMuZWxDdXN0b21JY29ucy5wdXNoKGkoKSk7dmFyIHI9W10sbj1mdW5jdGlvbihkLGcscCl7dmFyIGY9ZC50b0xvd2VyQ2FzZSgpO2UudFtmXSYmdC5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOmcsaWNvbjp0eXBlb2YgZS50W2ZdPT1cInN0cmluZ1wiP2UudFtmXTpwLHRpdGxlOmUubG9jYWxlVmFsdWVzW2RdLGNsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoZixcIi1pY29uXCIpfSl9O24oXCJ6b29tSW5cIix0aGlzLmVsWm9vbUluLGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cbiAgICA8cGF0aCBkPVwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XG48L3N2Zz5cbmApLG4oXCJ6b29tT3V0XCIsdGhpcy5lbFpvb21PdXQsYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxuICAgIDxwYXRoIGQ9XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxuPC9zdmc+XG5gKTt2YXIgbz1mdW5jdGlvbihkKXtlLnRbZF0mJnQuY29uZmlnLmNoYXJ0W2RdLmVuYWJsZWQmJnIucHVzaCh7ZWw6ZD09PVwiem9vbVwiP2UuZWxab29tOmUuZWxTZWxlY3Rpb24saWNvbjp0eXBlb2YgZS50W2RdPT1cInN0cmluZ1wiP2UudFtkXTpkPT09XCJ6b29tXCI/YDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxuICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMFYwelwiIGZpbGw9XCJub25lXCIvPlxuICAgIDxwYXRoIGQ9XCJNMTIgMTBoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXpcIi8+XG48L3N2Zz5gOmA8c3ZnIGZpbGw9XCIjNkU4MTkyXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxuICAgIDxwYXRoIGQ9XCJNMyA1aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTAgOGgydi0ySDN2MnptNCA4aDJ2LTJIN3Yyek0zIDloMlY3SDN2MnptMTAtNmgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6TTkgM0g3djJoMlYzem0yIDE4aDJ2LTJoLTJ2MnptOC04aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyelwiLz5cbjwvc3ZnPmAsdGl0bGU6ZS5sb2NhbGVWYWx1ZXNbZD09PVwiem9vbVwiP1wic2VsZWN0aW9uWm9vbVwiOlwic2VsZWN0aW9uXCJdLGNsYXNzOnQuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoZCxcIi1pY29uXCIpfSl9O28oXCJ6b29tXCIpLG8oXCJzZWxlY3Rpb25cIiksdGhpcy50LnBhbiYmdC5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOnRoaXMuZWxQYW4saWNvbjp0eXBlb2YgdGhpcy50LnBhbj09XCJzdHJpbmdcIj90aGlzLnQucGFuOmA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cbiAgICA8ZGVmcz5cbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBpZD1cImFcIi8+XG4gICAgPC9kZWZzPlxuICAgIDxjbGlwUGF0aCBpZD1cImJcIj5cbiAgICAgICAgPHVzZSBvdmVyZmxvdz1cInZpc2libGVcIiB4bGluazpocmVmPVwiI2FcIi8+XG4gICAgPC9jbGlwUGF0aD5cbiAgICA8cGF0aCBjbGlwLXBhdGg9XCJ1cmwoI2IpXCIgZD1cIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIi8+XG48L3N2Zz5gLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnBhbixjbGFzczp0Lmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtcGFuLWljb25cIn0pLG4oXCJyZXNldFwiLHRoaXMuZWxab29tUmVzZXQsYDxzdmcgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxwYXRoIGQ9XCJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4elwiLz5cbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxuPC9zdmc+YCksdGhpcy50LmRvd25sb2FkJiZyLnB1c2goe2VsOnRoaXMuZWxNZW51SWNvbixpY29uOnR5cGVvZiB0aGlzLnQuZG93bmxvYWQ9PVwic3RyaW5nXCI/dGhpcy50LmRvd25sb2FkOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIi8+PC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5tZW51LGNsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWljb25cIn0pO2Zvcih2YXIgaD0wO2g8dGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDtoKyspci5wdXNoKHtlbDp0aGlzLmVsQ3VzdG9tSWNvbnNbaF0saWNvbjp0aGlzLnQuY3VzdG9tSWNvbnNbaF0uaWNvbix0aXRsZTp0aGlzLnQuY3VzdG9tSWNvbnNbaF0udGl0bGUsaW5kZXg6dGhpcy50LmN1c3RvbUljb25zW2hdLmluZGV4LGNsYXNzOlwiYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIFwiK3RoaXMudC5jdXN0b21JY29uc1toXS5jbGFzc30pO3IuZm9yRWFjaChmdW5jdGlvbihkLGcpe2QuaW5kZXgmJlAubW92ZUluZGV4SW5BcnJheShyLGcsZC5pbmRleCl9KTtmb3IodmFyIGM9MDtjPHIubGVuZ3RoO2MrKylNLnNldEF0dHJzKHJbY10uZWwse2NsYXNzOnJbY10uY2xhc3MsdGl0bGU6cltjXS50aXRsZX0pLHJbY10uZWwuaW5uZXJIVE1MPXJbY10uaWNvbixhLmFwcGVuZENoaWxkKHJbY10uZWwpO3RoaXMuX2NyZWF0ZUhhbWJ1cmdlck1lbnUoYSksdC5nbG9iYWxzLnpvb21FbmFibGVkP3RoaXMuZWxab29tLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTp0Lmdsb2JhbHMucGFuRW5hYmxlZD90aGlzLmVsUGFuLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTp0Lmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5lbFNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksdGhpcy5hZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnMoKX19LHtrZXk6XCJfY3JlYXRlSGFtYnVyZ2VyTWVudVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZWxNZW51SXRlbXM9W10sZS5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudSksTS5zZXRBdHRycyh0aGlzLmVsTWVudSx7Y2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnVcIn0pO2Zvcih2YXIgdD1be25hbWU6XCJleHBvcnRTVkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1NWR30se25hbWU6XCJleHBvcnRQTkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR30se25hbWU6XCJleHBvcnRDU1ZcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb0NTVn1dLGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGhpcy5lbE1lbnVJdGVtc1tpXS5pbm5lckhUTUw9dFtpXS50aXRsZSxNLnNldEF0dHJzKHRoaXMuZWxNZW51SXRlbXNbaV0se2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWl0ZW0gXCIuY29uY2F0KHRbaV0ubmFtZSksdGl0bGU6dFtpXS50aXRsZX0pLHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pfX0se2tleTpcImFkZFRvb2xiYXJFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmVsWm9vbVJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbVJlc2V0LmJpbmQodGhpcykpLHRoaXMuZWxTZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInNlbGVjdGlvblwiKSksdGhpcy5lbFpvb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInpvb21cIikpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tSW4uYmluZCh0aGlzKSksdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tT3V0LmJpbmQodGhpcykpLHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2kuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0U1ZHXCIpP2kuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5oYW5kbGVEb3dubG9hZC5iaW5kKGUsXCJzdmdcIikpOmkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0UE5HXCIpP2kuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5oYW5kbGVEb3dubG9hZC5iaW5kKGUsXCJwbmdcIikpOmkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0Q1NWXCIpJiZpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUuaGFuZGxlRG93bmxvYWQuYmluZChlLFwiY3N2XCIpKX0pO2Zvcih2YXIgdD0wO3Q8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDt0KyspdGhpcy5lbEN1c3RvbUljb25zW3RdLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudC5jdXN0b21JY29uc1t0XS5jbGljay5iaW5kKHRoaXMsdGhpcy5jdHgsdGhpcy5jdHgudykpfX0se2tleTpcInRvZ2dsZVpvb21TZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpO3ZhciBpPWU9PT1cInNlbGVjdGlvblwiP3QuY3R4LnRvb2xiYXIuZWxTZWxlY3Rpb246dC5jdHgudG9vbGJhci5lbFpvb20sYT1lPT09XCJzZWxlY3Rpb25cIj9cInNlbGVjdGlvbkVuYWJsZWRcIjpcInpvb21FbmFibGVkXCI7dC53Lmdsb2JhbHNbYV09IXQudy5nbG9iYWxzW2FdLGkuY2xhc3NMaXN0LmNvbnRhaW5zKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/aS5jbGFzc0xpc3QucmVtb3ZlKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6aS5jbGFzc0xpc3QuYWRkKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KX19LHtrZXk6XCJnZXRUb29sYmFySWNvbnNSZWZlcmVuY2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudzt0aGlzLmVsWm9vbXx8KHRoaXMuZWxab29tPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy16b29tLWljb25cIikpLHRoaXMuZWxQYW58fCh0aGlzLmVsUGFuPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wYW4taWNvblwiKSksdGhpcy5lbFNlbGVjdGlvbnx8KHRoaXMuZWxTZWxlY3Rpb249ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uXCIpKX19LHtrZXk6XCJlbmFibGVab29tUGFuRnJvbVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnRvZ2dsZU90aGVyQ29udHJvbHMoKSxlPT09XCJwYW5cIj90aGlzLncuZ2xvYmFscy5wYW5FbmFibGVkPSEwOnRoaXMudy5nbG9iYWxzLnpvb21FbmFibGVkPSEwO3ZhciB0PWU9PT1cInBhblwiP3RoaXMuZWxQYW46dGhpcy5lbFpvb20saT1lPT09XCJwYW5cIj90aGlzLmVsWm9vbTp0aGlzLmVsUGFuO3QmJnQuY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLGkmJmkuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnNlbGVjdGVkQ2xhc3MpfX0se2tleTpcInRvZ2dsZVBhbm5pbmdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCksZS53Lmdsb2JhbHMucGFuRW5hYmxlZD0hZS53Lmdsb2JhbHMucGFuRW5hYmxlZCxlLmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyhlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP2UuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOmUuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmFkZChlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSl9fSx7a2V5OlwidG9nZ2xlT3RoZXJDb250cm9sc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudzt0Lmdsb2JhbHMucGFuRW5hYmxlZD0hMSx0Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITEsdC5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQ9ITEsdGhpcy5nZXRUb29sYmFySWNvbnNSZWZlcmVuY2UoKSxbdGhpcy5lbFBhbix0aGlzLmVsU2VsZWN0aW9uLHRoaXMuZWxab29tXS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2kmJmkuY2xhc3NMaXN0LnJlbW92ZShlLnNlbGVjdGVkQ2xhc3MpfSl9fSx7a2V5OlwiaGFuZGxlWm9vbUluXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9ZS5nbG9iYWxzLm1pblksdGhpcy5tYXhYPWUuZ2xvYmFscy5tYXhZKTt2YXIgdD0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPSh0aGlzLm1pblgrdCkvMixhPSh0aGlzLm1heFgrdCkvMixzPXRoaXMuX2dldE5ld01pblhNYXhYKGksYSk7ZS5nbG9iYWxzLmRpc2FibGVab29tSW58fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fSx7a2V5OlwiaGFuZGxlWm9vbU91dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O2lmKGUuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPWUuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD1lLmdsb2JhbHMubWF4WSksIShlLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiJiZuZXcgRGF0ZSh0aGlzLm1pblgpLmdldFVUQ0Z1bGxZZWFyKCk8MWUzKSl7dmFyIHQ9KHRoaXMubWluWCt0aGlzLm1heFgpLzIsaT10aGlzLm1pblgtKHQtdGhpcy5taW5YKSxhPXRoaXMubWF4WC0odC10aGlzLm1heFgpLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTtlLmdsb2JhbHMuZGlzYWJsZVpvb21PdXR8fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fX0se2tleTpcIl9nZXROZXdNaW5YTWF4WFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM7cmV0dXJue21pblg6aT9NYXRoLmZsb29yKGUpOmUsbWF4WDppP01hdGguZmxvb3IodCk6dH19fSx7a2V5Olwiem9vbVVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztpZihlIT09dm9pZCAwfHx0IT09dm9pZCAwKXtpZighKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGU8MSYmKGU9MSx0PWkuZ2xvYmFscy5kYXRhUG9pbnRzKSx0LWU8MikpKXt2YXIgYT17bWluOmUsbWF4OnR9LHM9dGhpcy5nZXRCZWZvcmVab29tUmFuZ2UoYSk7cyYmKGE9cy54YXhpcyk7dmFyIHI9e3hheGlzOmF9LG49UC5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7aS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyYmKG49bmV3IGtlKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LG4se3hheGlzOmF9KSksaS5jb25maWcuY2hhcnQuZ3JvdXB8fChyLnlheGlzPW4pLHRoaXMudy5nbG9iYWxzLnpvb21lZD0hMCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHIsITEsdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksdGhpcy56b29tQ2FsbGJhY2soYSxuKX19ZWxzZSB0aGlzLmhhbmRsZVpvb21SZXNldCgpfX0se2tleTpcInpvb21DYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dHlwZW9mIHRoaXMuZXYuem9vbWVkPT1cImZ1bmN0aW9uXCImJnRoaXMuZXYuem9vbWVkKHRoaXMuY3R4LHt4YXhpczplLHlheGlzOnR9KX19LHtrZXk6XCJnZXRCZWZvcmVab29tUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPW51bGw7cmV0dXJuIHR5cGVvZiB0aGlzLmV2LmJlZm9yZVpvb209PVwiZnVuY3Rpb25cIiYmKGk9dGhpcy5ldi5iZWZvcmVab29tKHRoaXMse3hheGlzOmUseWF4aXM6dH0pKSxpfX0se2tleTpcInRvZ2dsZU1lbnVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmVsTWVudS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKT9lLmVsTWVudS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIik6ZS5lbE1lbnUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpfSwwKX19LHtrZXk6XCJoYW5kbGVEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBGZSh0aGlzLmN0eCk7c3dpdGNoKGUpe2Nhc2VcInN2Z1wiOmkuZXhwb3J0VG9TVkcodGhpcy5jdHgpO2JyZWFrO2Nhc2VcInBuZ1wiOmkuZXhwb3J0VG9QbmcodGhpcy5jdHgpO2JyZWFrO2Nhc2VcImNzdlwiOmkuZXhwb3J0VG9DU1Yoe3Nlcmllczp0LmNvbmZpZy5zZXJpZXMsY29sdW1uRGVsaW1pdGVyOnQuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5jb2x1bW5EZWxpbWl0ZXJ9KX19fSx7a2V5OlwiaGFuZGxlWm9vbVJlc2V0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT10Lnc7aWYoaS5nbG9iYWxzLmxhc3RYQXhpcy5taW49aS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWluLGkuZ2xvYmFscy5sYXN0WEF4aXMubWF4PWkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzLm1heCx0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZVJlc2V0Wm9vbT09XCJmdW5jdGlvblwiKXt2YXIgYT1pLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKHQsaSk7YSYmdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KGEpfXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPT1cImZ1bmN0aW9uXCImJnQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHttaW46aS5jb25maWcueGF4aXMubWluLG1heDppLmNvbmZpZy54YXhpcy5tYXh9KSxpLmdsb2JhbHMuem9vbWVkPSExO3ZhciBzPXQuY3R4LnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhQLmNsb25lKGkuZ2xvYmFscy5pbml0aWFsU2VyaWVzKSk7dC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9KX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsWm9vbT1udWxsLHRoaXMuZWxab29tSW49bnVsbCx0aGlzLmVsWm9vbU91dD1udWxsLHRoaXMuZWxQYW49bnVsbCx0aGlzLmVsU2VsZWN0aW9uPW51bGwsdGhpcy5lbFpvb21SZXNldD1udWxsLHRoaXMuZWxNZW51SWNvbj1udWxsfX1dKSx5fSgpLFR0PWZ1bmN0aW9uKHkpe3VlKHQsYXQpO3ZhciBlPXBlKHQpO2Z1bmN0aW9uIHQoaSl7dmFyIGE7cmV0dXJuIEYodGhpcyx0KSwoYT1lLmNhbGwodGhpcyxpKSkuY3R4PWksYS53PWkudyxhLmRyYWdnZWQ9ITEsYS5ncmFwaGljcz1uZXcgTShhLmN0eCksYS5ldmVudExpc3Q9W1wibW91c2Vkb3duXCIsXCJtb3VzZWxlYXZlXCIsXCJtb3VzZW1vdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwibW91c2V1cFwiLFwidG91Y2hlbmRcIl0sYS5jbGllbnRYPTAsYS5jbGllbnRZPTAsYS5zdGFydFg9MCxhLmVuZFg9MCxhLmRyYWdYPTAsYS5zdGFydFk9MCxhLmVuZFk9MCxhLmRyYWdZPTAsYS5tb3ZlRGlyZWN0aW9uPVwibm9uZVwiLGF9cmV0dXJuIFkodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT10aGlzLHM9aS54eVJhdGlvcyxyPXRoaXMudyxuPXRoaXM7dGhpcy54eVJhdGlvcz1zLHRoaXMuem9vbVJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLnNlbGVjdGlvblJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLmdyaWRSZWN0PXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLHRoaXMuem9vbVJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy16b29tLXJlY3RcIiksdGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIiksci5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy56b29tUmVjdCksci5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy5zZWxlY3Rpb25SZWN0KSxyLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT09PVwieFwiP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtaW5ZOjAsbWF4WDpyLmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6ci5nbG9iYWxzLmdyaWRIZWlnaHR9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6ci5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU9PT1cInlcIj90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWF4WDpyLmdsb2JhbHMuZ3JpZFdpZHRofSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOnRoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoKS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSksdGhpcy5wcmVzZWxlY3RlZFNlbGVjdGlvbigpLHRoaXMuaG92ZXJBcmVhPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJcIi5jb25jYXQoci5nbG9iYWxzLmNoYXJ0Q2xhc3MsXCIgLmFwZXhjaGFydHMtc3ZnXCIpKSx0aGlzLmhvdmVyQXJlYS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy16b29tYWJsZVwiKSx0aGlzLmV2ZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKG8pe2EuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIobyxuLnN2Z01vdXNlRXZlbnRzLmJpbmQobixzKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNsRHJhZ2dhYmxlUmVjdCYmKHRoaXMuc2xEcmFnZ2FibGVSZWN0LmRyYWdnYWJsZSghMSksdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksdGhpcy5zZWxlY3Rpb25SZWN0Lm9mZigpKSx0aGlzLnNlbGVjdGlvblJlY3Q9bnVsbCx0aGlzLnpvb21SZWN0PW51bGwsdGhpcy5ncmlkUmVjdD1udWxsfX0se2tleTpcInN2Z01vdXNlRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLncscj10aGlzLG49dGhpcy5jdHgudG9vbGJhcixvPXMuZ2xvYmFscy56b29tRW5hYmxlZD9zLmNvbmZpZy5jaGFydC56b29tLnR5cGU6cy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUsaD1zLmNvbmZpZy5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZDtpZihhLnNoaWZ0S2V5Pyh0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMCxuLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihoPT09XCJwYW5cIj9cInpvb21cIjpcInBhblwiKSk6dGhpcy5zaGlmdFdhc1ByZXNzZWQmJihuLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihoKSx0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMSksYS50YXJnZXQpe3ZhciBjLGQ9YS50YXJnZXQuY2xhc3NMaXN0O2lmKGEudGFyZ2V0LnBhcmVudE5vZGUmJmEudGFyZ2V0LnBhcmVudE5vZGUhPT1udWxsJiYoYz1hLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTGlzdCksIShkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKXx8ZC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKXx8ZC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fGMmJmMuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIikpKXtpZihyLmNsaWVudFg9YS50eXBlPT09XCJ0b3VjaG1vdmVcInx8YS50eXBlPT09XCJ0b3VjaHN0YXJ0XCI/YS50b3VjaGVzWzBdLmNsaWVudFg6YS50eXBlPT09XCJ0b3VjaGVuZFwiP2EuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDphLmNsaWVudFgsci5jbGllbnRZPWEudHlwZT09PVwidG91Y2htb3ZlXCJ8fGEudHlwZT09PVwidG91Y2hzdGFydFwiP2EudG91Y2hlc1swXS5jbGllbnRZOmEudHlwZT09PVwidG91Y2hlbmRcIj9hLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6YS5jbGllbnRZLGEudHlwZT09PVwibW91c2Vkb3duXCImJmEud2hpY2g9PT0xKXt2YXIgZz1yLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Iuc3RhcnRYPXIuY2xpZW50WC1nLmxlZnQsci5zdGFydFk9ci5jbGllbnRZLWcudG9wLHIuZHJhZ2dlZD0hMSxyLncuZ2xvYmFscy5tb3VzZWRvd249ITB9aWYoKGEudHlwZT09PVwibW91c2Vtb3ZlXCImJmEud2hpY2g9PT0xfHxhLnR5cGU9PT1cInRvdWNobW92ZVwiKSYmKHIuZHJhZ2dlZD0hMCxzLmdsb2JhbHMucGFuRW5hYmxlZD8ocy5nbG9iYWxzLnNlbGVjdGlvbj1udWxsLHIudy5nbG9iYWxzLm1vdXNlZG93biYmci5wYW5EcmFnZ2luZyh7Y29udGV4dDpyLHpvb210eXBlOm8seHlSYXRpb3M6aX0pKTooci53Lmdsb2JhbHMubW91c2Vkb3duJiZzLmdsb2JhbHMuem9vbUVuYWJsZWR8fHIudy5nbG9iYWxzLm1vdXNlZG93biYmcy5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiYoci5zZWxlY3Rpb249ci5zZWxlY3Rpb25EcmF3aW5nKHtjb250ZXh0OnIsem9vbXR5cGU6b30pKSksYS50eXBlPT09XCJtb3VzZXVwXCJ8fGEudHlwZT09PVwidG91Y2hlbmRcInx8YS50eXBlPT09XCJtb3VzZWxlYXZlXCIpe3ZhciBwPXIuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ci53Lmdsb2JhbHMubW91c2Vkb3duJiYoci5lbmRYPXIuY2xpZW50WC1wLmxlZnQsci5lbmRZPXIuY2xpZW50WS1wLnRvcCxyLmRyYWdYPU1hdGguYWJzKHIuZW5kWC1yLnN0YXJ0WCksci5kcmFnWT1NYXRoLmFicyhyLmVuZFktci5zdGFydFkpLChzLmdsb2JhbHMuem9vbUVuYWJsZWR8fHMuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmci5zZWxlY3Rpb25EcmF3bih7Y29udGV4dDpyLHpvb210eXBlOm99KSxzLmdsb2JhbHMucGFuRW5hYmxlZCYmcy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZyLmRlbGF5ZWRQYW5TY3JvbGxlZCgpKSxzLmdsb2JhbHMuem9vbUVuYWJsZWQmJnIuaGlkZVNlbGVjdGlvblJlY3QodGhpcy5zZWxlY3Rpb25SZWN0KSxyLmRyYWdnZWQ9ITEsci53Lmdsb2JhbHMubW91c2Vkb3duPSExfXRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKX19fX0se2tleTpcIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLnc7aWYodGhpcy5zZWxlY3Rpb25SZWN0KXt2YXIgYT10aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLndpZHRoPjAmJmEuaGVpZ2h0PjAmJnRoaXMuc2xEcmFnZ2FibGVSZWN0LnNlbGVjdGl6ZSh7cG9pbnRzOlwibCwgclwiLHBvaW50U2l6ZTo4LHBvaW50VHlwZTpcInJlY3RcIn0pLnJlc2l6ZSh7Y29uc3RyYWludDp7bWluWDowLG1pblk6MCxtYXhYOmkuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTppLmdsb2JhbHMuZ3JpZEhlaWdodH19KS5vbihcInJlc2l6aW5nXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJyZXNpemluZ1wiKSl9fX0se2tleTpcInByZXNlbGVjdGVkU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLncsYT10aGlzLnh5UmF0aW9zO2lmKCFpLmdsb2JhbHMuem9vbUVuYWJsZWQpe2lmKGkuZ2xvYmFscy5zZWxlY3Rpb24hPT12b2lkIDAmJmkuZ2xvYmFscy5zZWxlY3Rpb24hPT1udWxsKXRoaXMuZHJhd1NlbGVjdGlvblJlY3QoaS5nbG9iYWxzLnNlbGVjdGlvbik7ZWxzZSBpZihpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluIT09dm9pZCAwJiZpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4IT09dm9pZCAwKXt2YXIgcz0oaS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi1pLmdsb2JhbHMubWluWCkvYS54UmF0aW8scj1pLmdsb2JhbHMuZ3JpZFdpZHRoLShpLmdsb2JhbHMubWF4WC1pLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KS9hLnhSYXRpby1zO2kuZ2xvYmFscy5pc1JhbmdlQmFyJiYocz0oaS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi1pLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKS9hLmludmVydGVkWVJhdGlvLHI9KGkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgtaS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbikvYS5pbnZlcnRlZFlSYXRpbyk7dmFyIG49e3g6cyx5OjAsd2lkdGg6cixoZWlnaHQ6aS5nbG9iYWxzLmdyaWRIZWlnaHQsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxzZWxlY3Rpb25FbmFibGVkOiEwfTt0aGlzLmRyYXdTZWxlY3Rpb25SZWN0KG4pLHRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKSx0eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbj09XCJmdW5jdGlvblwiJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKHRoaXMuY3R4LHt4YXhpczp7bWluOmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4sbWF4OmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXh9LHlheGlzOnt9fSl9fX19LHtrZXk6XCJkcmF3U2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkueCxzPWkueSxyPWkud2lkdGgsbj1pLmhlaWdodCxvPWkudHJhbnNsYXRlWCxoPW89PT12b2lkIDA/MDpvLGM9aS50cmFuc2xhdGVZLGQ9Yz09PXZvaWQgMD8wOmMsZz10aGlzLncscD10aGlzLnpvb21SZWN0LGY9dGhpcy5zZWxlY3Rpb25SZWN0O2lmKHRoaXMuZHJhZ2dlZHx8Zy5nbG9iYWxzLnNlbGVjdGlvbiE9PW51bGwpe3ZhciBiPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIraCtcIiwgXCIrZCtcIilcIn07Zy5nbG9iYWxzLnpvb21FbmFibGVkJiZ0aGlzLmRyYWdnZWQmJihyPDAmJihyPTEpLHAuYXR0cih7eDphLHk6cyx3aWR0aDpyLGhlaWdodDpuLGZpbGw6Zy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpnLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LHN0cm9rZTpnLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6Zy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS53aWR0aCxcInN0cm9rZS1vcGFjaXR5XCI6Zy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksTS5zZXRBdHRycyhwLm5vZGUsYikpLGcuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoZi5hdHRyKHt4OmEseTpzLHdpZHRoOnI+MD9yOjAsaGVpZ2h0Om4+MD9uOjAsZmlsbDpnLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLm9wYWNpdHksc3Ryb2tlOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpnLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuZGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpnLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLm9wYWNpdHl9KSxNLnNldEF0dHJzKGYubm9kZSxiKSl9fX0se2tleTpcImhpZGVTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24oaSl7aSYmaS5hdHRyKHt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9KX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3aW5nXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9aS5jb250ZXh0LHM9aS56b29tdHlwZSxyPXRoaXMudyxuPWEsbz10aGlzLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9bi5zdGFydFgtMSxjPW4uc3RhcnRZLGQ9ITEsZz0hMSxwPW4uY2xpZW50WC1vLmxlZnQtaCxmPW4uY2xpZW50WS1vLnRvcC1jLGI9e307cmV0dXJuIE1hdGguYWJzKHAraCk+ci5nbG9iYWxzLmdyaWRXaWR0aD9wPXIuZ2xvYmFscy5ncmlkV2lkdGgtaDpuLmNsaWVudFgtby5sZWZ0PDAmJihwPWgpLGg+bi5jbGllbnRYLW8ubGVmdCYmKGQ9ITAscD1NYXRoLmFicyhwKSksYz5uLmNsaWVudFktby50b3AmJihnPSEwLGY9TWF0aC5hYnMoZikpLGI9cz09PVwieFwiP3t4OmQ/aC1wOmgseTowLHdpZHRoOnAsaGVpZ2h0OnIuZ2xvYmFscy5ncmlkSGVpZ2h0fTpzPT09XCJ5XCI/e3g6MCx5Omc/Yy1mOmMsd2lkdGg6ci5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6Zn06e3g6ZD9oLXA6aCx5Omc/Yy1mOmMsd2lkdGg6cCxoZWlnaHQ6Zn0sbi5kcmF3U2VsZWN0aW9uUmVjdChiKSxuLnNlbGVjdGlvbkRyYWdnaW5nKFwicmVzaXppbmdcIiksYn19LHtrZXk6XCJzZWxlY3Rpb25EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKGksYSl7dmFyIHM9dGhpcyxyPXRoaXMudyxuPXRoaXMueHlSYXRpb3Msbz10aGlzLnNlbGVjdGlvblJlY3QsaD0wO2k9PT1cInJlc2l6aW5nXCImJihoPTMwKTt2YXIgYz1mdW5jdGlvbihnKXtyZXR1cm4gcGFyc2VGbG9hdChvLm5vZGUuZ2V0QXR0cmlidXRlKGcpKX0sZD17eDpjKFwieFwiKSx5OmMoXCJ5XCIpLHdpZHRoOmMoXCJ3aWR0aFwiKSxoZWlnaHQ6YyhcImhlaWdodFwiKX07ci5nbG9iYWxzLnNlbGVjdGlvbj1kLHR5cGVvZiByLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uPT1cImZ1bmN0aW9uXCImJnIuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoY2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBnLHAsZixiLG09cy5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx3PW8ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyLmdsb2JhbHMuaXNSYW5nZUJhcj8oZz1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh3LmxlZnQtbS5sZWZ0KSpuLmludmVydGVkWVJhdGlvLHA9ci5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbisody5yaWdodC1tLmxlZnQpKm4uaW52ZXJ0ZWRZUmF0aW8sZj0wLGI9MSk6KGc9ci5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisody5sZWZ0LW0ubGVmdCkqbi54UmF0aW8scD1yLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyh3LnJpZ2h0LW0ubGVmdCkqbi54UmF0aW8sZj1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyhtLmJvdHRvbS13LmJvdHRvbSkqbi55UmF0aW9bMF0sYj1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LSh3LnRvcC1tLnRvcCkqbi55UmF0aW9bMF0pO3ZhciBBPXt4YXhpczp7bWluOmcsbWF4OnB9LHlheGlzOnttaW46ZixtYXg6Yn19O3IuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24ocy5jdHgsQSksci5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmci5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQhPT12b2lkIDAmJnIuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkKHMuY3R4LEEpfSxoKSl9fSx7a2V5Olwic2VsZWN0aW9uRHJhd25cIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmNvbnRleHQscz1pLnpvb210eXBlLHI9dGhpcy53LG49YSxvPXRoaXMueHlSYXRpb3MsaD10aGlzLmN0eC50b29sYmFyO2lmKG4uc3RhcnRYPm4uZW5kWCl7dmFyIGM9bi5zdGFydFg7bi5zdGFydFg9bi5lbmRYLG4uZW5kWD1jfWlmKG4uc3RhcnRZPm4uZW5kWSl7dmFyIGQ9bi5zdGFydFk7bi5zdGFydFk9bi5lbmRZLG4uZW5kWT1kfXZhciBnPXZvaWQgMCxwPXZvaWQgMDtyLmdsb2JhbHMuaXNSYW5nZUJhcj8oZz1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK24uc3RhcnRYKm8uaW52ZXJ0ZWRZUmF0aW8scD1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK24uZW5kWCpvLmludmVydGVkWVJhdGlvKTooZz1yLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK24uc3RhcnRYKm8ueFJhdGlvLHA9ci5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbituLmVuZFgqby54UmF0aW8pO3ZhciBmPVtdLGI9W107aWYoci5jb25maWcueWF4aXMuZm9yRWFjaChmdW5jdGlvbihrLFMpe2YucHVzaChyLmdsb2JhbHMueUF4aXNTY2FsZVtTXS5uaWNlTWF4LW8ueVJhdGlvW1NdKm4uc3RhcnRZKSxiLnB1c2goci5nbG9iYWxzLnlBeGlzU2NhbGVbU10ubmljZU1heC1vLnlSYXRpb1tTXSpuLmVuZFkpfSksbi5kcmFnZ2VkJiYobi5kcmFnWD4xMHx8bi5kcmFnWT4xMCkmJmchPT1wKXtpZihyLmdsb2JhbHMuem9vbUVuYWJsZWQpe3ZhciBtPVAuY2xvbmUoci5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHc9UC5jbG9uZShyLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcyk7aWYoci5nbG9iYWxzLnpvb21lZD0hMCxyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihnPU1hdGguZmxvb3IoZykscD1NYXRoLmZsb29yKHApLGc8MSYmKGc9MSxwPXIuZ2xvYmFscy5kYXRhUG9pbnRzKSxwLWc8MiYmKHA9ZysxKSkscyE9PVwieHlcIiYmcyE9PVwieFwifHwodz17bWluOmcsbWF4OnB9KSxzIT09XCJ4eVwiJiZzIT09XCJ5XCJ8fG0uZm9yRWFjaChmdW5jdGlvbihrLFMpe21bU10ubWluPWJbU10sbVtTXS5tYXg9ZltTXX0pLHIuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMpe3ZhciBBPW5ldyBrZShuLmN0eCk7bT1BLmF1dG9TY2FsZVkobi5jdHgsbSx7eGF4aXM6d30pfWlmKGgpe3ZhciBsPWguZ2V0QmVmb3JlWm9vbVJhbmdlKHcsbSk7bCYmKHc9bC54YXhpcz9sLnhheGlzOncsbT1sLnlheGlzP2wueWF4aXM6bSl9dmFyIHU9e3hheGlzOnd9O3IuY29uZmlnLmNoYXJ0Lmdyb3VwfHwodS55YXhpcz1tKSxuLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHUsITEsbi53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksdHlwZW9mIHIuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQ9PVwiZnVuY3Rpb25cIiYmaC56b29tQ2FsbGJhY2sodyxtKX1lbHNlIGlmKHIuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKXt2YXIgeCx2PW51bGw7eD17bWluOmcsbWF4OnB9LHMhPT1cInh5XCImJnMhPT1cInlcInx8KHY9UC5jbG9uZShyLmNvbmZpZy55YXhpcykpLmZvckVhY2goZnVuY3Rpb24oayxTKXt2W1NdLm1pbj1iW1NdLHZbU10ubWF4PWZbU119KSxyLmdsb2JhbHMuc2VsZWN0aW9uPW4uc2VsZWN0aW9uLHR5cGVvZiByLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uPT1cImZ1bmN0aW9uXCImJnIuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24obi5jdHgse3hheGlzOngseWF4aXM6dn0pfX19fSx7a2V5OlwicGFuRHJhZ2dpbmdcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmNvbnRleHQscz10aGlzLncscj1hO2lmKHMuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueCE9PXZvaWQgMCl7dmFyIG49cy5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54LXIuY2xpZW50WCxvPXMuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueS1yLmNsaWVudFk7TWF0aC5hYnMobik+TWF0aC5hYnMobykmJm4+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJsZWZ0XCI6TWF0aC5hYnMobik+TWF0aC5hYnMobykmJm48MD90aGlzLm1vdmVEaXJlY3Rpb249XCJyaWdodFwiOk1hdGguYWJzKG8pPk1hdGguYWJzKG4pJiZvPjA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwidXBcIjpNYXRoLmFicyhvKT5NYXRoLmFicyhuKSYmbzwwJiYodGhpcy5tb3ZlRGlyZWN0aW9uPVwiZG93blwiKX1zLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uPXt4OnIuY2xpZW50WCx5OnIuY2xpZW50WX07dmFyIGg9cy5nbG9iYWxzLmlzUmFuZ2VCYXI/cy5nbG9iYWxzLm1pblk6cy5nbG9iYWxzLm1pblgsYz1zLmdsb2JhbHMuaXNSYW5nZUJhcj9zLmdsb2JhbHMubWF4WTpzLmdsb2JhbHMubWF4WDtzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHIucGFuU2Nyb2xsZWQoaCxjKX19LHtrZXk6XCJkZWxheWVkUGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscy5taW5YLHM9aS5nbG9iYWxzLm1heFgscj0oaS5nbG9iYWxzLm1heFgtaS5nbG9iYWxzLm1pblgpLzI7dGhpcy5tb3ZlRGlyZWN0aW9uPT09XCJsZWZ0XCI/KGE9aS5nbG9iYWxzLm1pblgrcixzPWkuZ2xvYmFscy5tYXhYK3IpOnRoaXMubW92ZURpcmVjdGlvbj09PVwicmlnaHRcIiYmKGE9aS5nbG9iYWxzLm1pblgtcixzPWkuZ2xvYmFscy5tYXhYLXIpLGE9TWF0aC5mbG9vcihhKSxzPU1hdGguZmxvb3IocyksdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KHt4YXhpczp7bWluOmEsbWF4OnN9fSxhLHMpfX0se2tleTpcInBhblNjcm9sbGVkXCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLncscj10aGlzLnh5UmF0aW9zLG49UC5jbG9uZShzLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyksbz1yLnhSYXRpbyxoPXMuZ2xvYmFscy5taW5YLGM9cy5nbG9iYWxzLm1heFg7cy5nbG9iYWxzLmlzUmFuZ2VCYXImJihvPXIuaW52ZXJ0ZWRZUmF0aW8saD1zLmdsb2JhbHMubWluWSxjPXMuZ2xvYmFscy5tYXhZKSx0aGlzLm1vdmVEaXJlY3Rpb249PT1cImxlZnRcIj8oaT1oK3MuZ2xvYmFscy5ncmlkV2lkdGgvMTUqbyxhPWMrcy5nbG9iYWxzLmdyaWRXaWR0aC8xNSpvKTp0aGlzLm1vdmVEaXJlY3Rpb249PT1cInJpZ2h0XCImJihpPWgtcy5nbG9iYWxzLmdyaWRXaWR0aC8xNSpvLGE9Yy1zLmdsb2JhbHMuZ3JpZFdpZHRoLzE1Km8pLHMuZ2xvYmFscy5pc1JhbmdlQmFyfHwoaTxzLmdsb2JhbHMuaW5pdGlhbE1pblh8fGE+cy5nbG9iYWxzLmluaXRpYWxNYXhYKSYmKGk9aCxhPWMpO3ZhciBkPXttaW46aSxtYXg6YX07cy5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyYmKG49bmV3IGtlKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LG4se3hheGlzOmR9KSk7dmFyIGc9e3hheGlzOnttaW46aSxtYXg6YX19O3MuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoZy55YXhpcz1uKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoZyxpLGEpfX0se2tleTpcInVwZGF0ZVNjcm9sbGVkQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbihpLGEscyl7dmFyIHI9dGhpcy53O3RoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoaSwhMSwhMSksdHlwZW9mIHIuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZD09XCJmdW5jdGlvblwiJiZyLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQodGhpcy5jdHgse3hheGlzOnttaW46YSxtYXg6c319KX19XSksdH0oKSxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4fXJldHVybiBZKHksW3trZXk6XCJnZXROZWFyZXN0VmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ob3ZlckFyZWEsaT1lLmVsR3JpZCxhPWUuY2xpZW50WCxzPWUuY2xpZW50WSxyPXRoaXMudyxuPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1uLndpZHRoLGg9bi5oZWlnaHQsYz1vLyhyLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxkPWgvci5nbG9iYWxzLmRhdGFQb2ludHMsZz10aGlzLmhhc0JhcnMoKTshci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhZ3x8ci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHwoYz1vL3IuZ2xvYmFscy5kYXRhUG9pbnRzKTt2YXIgcD1hLW4ubGVmdC1yLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsZj1zLW4udG9wO3A8MHx8ZjwwfHxwPm98fGY+aD8odC5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSx0LmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIikpOnIuZ2xvYmFscy56b29tRW5hYmxlZD8odC5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpLHQuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXpvb21cIikpOnIuZ2xvYmFscy5wYW5FbmFibGVkJiYodC5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSx0LmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy1wYW5cIikpO3ZhciBiPU1hdGgucm91bmQocC9jKSxtPU1hdGguZmxvb3IoZi9kKTtnJiYhci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYj1NYXRoLmNlaWwocC9jKSxiLT0xKTt2YXIgdz1udWxsLEE9bnVsbCxsPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzLm1hcChmdW5jdGlvbihTKXtyZXR1cm4gUy5maWx0ZXIoZnVuY3Rpb24oQyl7cmV0dXJuIFAuaXNOdW1iZXIoQyl9KX0pLHU9ci5nbG9iYWxzLnNlcmllc1l2YWx1ZXMubWFwKGZ1bmN0aW9uKFMpe3JldHVybiBTLmZpbHRlcihmdW5jdGlvbihDKXtyZXR1cm4gUC5pc051bWJlcihDKX0pfSk7aWYoci5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciB4PXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj1wKih4LndpZHRoL28pLGs9ZiooeC5oZWlnaHQvaCk7dz0oQT10aGlzLmNsb3Nlc3RJbk11bHRpQXJyYXkodixrLGwsdSkpLmluZGV4LGI9QS5qLHchPT1udWxsJiYobD1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t3XSxiPShBPXRoaXMuY2xvc2VzdEluQXJyYXkodixsKSkuaW5kZXgpfXJldHVybiByLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD13PT09bnVsbD8tMTp3LCghYnx8YjwxKSYmKGI9MCksci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9yLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1tOnIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWIse2NhcHR1cmVkU2VyaWVzOncsajpyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP206Yixob3Zlclg6cCxob3Zlclk6Zn19fSx7a2V5OlwiY2xvc2VzdEluTXVsdGlBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPXRoaXMudyxyPTAsbj1udWxsLG89LTE7cy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MT9yPXRoaXMuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoaSk6bj0wO3ZhciBoPWlbcl1bMF0sYz1NYXRoLmFicyhlLWgpO2lmKGkuZm9yRWFjaChmdW5jdGlvbihwKXtwLmZvckVhY2goZnVuY3Rpb24oZixiKXt2YXIgbT1NYXRoLmFicyhlLWYpO208PWMmJihjPW0sbz1iKX0pfSksbyE9PS0xKXt2YXIgZD1hW3JdW29dLGc9TWF0aC5hYnModC1kKTtuPXIsYS5mb3JFYWNoKGZ1bmN0aW9uKHAsZil7dmFyIGI9TWF0aC5hYnModC1wW29dKTtiPD1nJiYoZz1iLG49Zil9KX1yZXR1cm57aW5kZXg6bixqOm99fX0se2tleTpcImdldEZpcnN0QWN0aXZlWEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudyxpPTAsYT1lLm1hcChmdW5jdGlvbihyLG4pe3JldHVybiByLmxlbmd0aD4wP246LTF9KSxzPTA7czxhLmxlbmd0aDtzKyspaWYoYVtzXSE9PS0xJiZ0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpPT09LTEmJnQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocyk9PT0tMSl7aT1hW3NdO2JyZWFrfXJldHVybiBpfX0se2tleTpcImNsb3Nlc3RJbkFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9dFswXSxhPW51bGwscz1NYXRoLmFicyhlLWkpLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49TWF0aC5hYnMoZS10W3JdKTtuPHMmJihzPW4sYT1yKX1yZXR1cm57aW5kZXg6YX19fSx7a2V5OlwiaXNYb3ZlcmxhcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLGk9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5maWx0ZXIoZnVuY3Rpb24ocyl7cmV0dXJuIHNbMF0hPT12b2lkIDB9KTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGgtMTthKyspaVthXVtlXSE9PXZvaWQgMCYmaVthKzFdW2VdIT09dm9pZCAwJiZpW2FdW2VdIT09aVthKzFdW2VdJiZ0LnB1c2goXCJ1bkVxdWFsXCIpO3JldHVybiB0Lmxlbmd0aD09PTB9fSx7a2V5OlwiaXNJbml0aWFsU2VyaWVzU2FtZUxlblwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPSEwLHQ9dGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpPTA7aTx0Lmxlbmd0aC0xO2krKylpZih0W2ldLmRhdGEubGVuZ3RoIT09dFtpKzFdLmRhdGEubGVuZ3RoKXtlPSExO2JyZWFrfXJldHVybiBlfX0se2tleTpcImdldEJhcnNIZWlnaHRcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUShlKS5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gdCtpLmdldEJCb3goKS5oZWlnaHR9LDApfX0se2tleTpcImdldEVsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJudW1iZXJcIj90aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoZSxcIiddIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpKTp0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwID4gKlwiKX19LHtrZXk6XCJnZXRBbGxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpOyhlPVEoZSkpLnNvcnQoZnVuY3Rpb24oaSxhKXt2YXIgcz1OdW1iZXIoaS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSkscj1OdW1iZXIoYS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSk7cmV0dXJuIHI8cz8xOnI+cz8tMTowfSk7dmFyIHQ9W107cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihpKXt0LnB1c2goaS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWFya2VyXCIpKX0pLHR9fSx7a2V5OlwiaGFzTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEVsTWFya2VycyhlKS5sZW5ndGg+MH19LHtrZXk6XCJnZXRFbEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzLCAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcywgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzXCIpfX0se2tleTpcImhhc0JhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsQmFycygpLmxlbmd0aD4wfX0se2tleTpcImdldEhvdmVyTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZTtyZXR1cm4gaT09PXZvaWQgMCYmKGk9dC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXSt0LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGl9fSx7a2V5OlwidG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3Vwc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXRoaXMudHRDdHg7aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLmxlbmd0aD09PTAmJihpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpKTtmb3IodmFyIGE9aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLHM9MDtzPGEubGVuZ3RoO3MrKyllPT09XCJlbmFibGVcIj8oYVtzXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PXQuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSk6KGFbc10uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLGFbc10uc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9fV0pLHl9KCksenQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMuY3R4PWUuY3R4LHRoaXMudHRDdHg9ZSx0aGlzLnRvb2x0aXBVdGlsPW5ldyBzdChlKX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1Nlcmllc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zaGFyZWQsaT10PT09dm9pZCAwfHx0LGE9ZS50dEl0ZW1zLHM9ZS5pLHI9cz09PXZvaWQgMD8wOnMsbj1lLmosbz1uPT09dm9pZCAwP251bGw6bixoPWUueTEsYz1lLnkyLGQ9ZS5lLGc9dGhpcy53O2cuY29uZmlnLnRvb2x0aXAuY3VzdG9tIT09dm9pZCAwP3RoaXMuaGFuZGxlQ3VzdG9tVG9vbHRpcCh7aTpyLGo6byx5MTpoLHkyOmMsdzpnfSk6dGhpcy50b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllcyhpKTt2YXIgcD10aGlzLmdldFZhbHVlc1RvUHJpbnQoe2k6cixqOm99KTt0aGlzLnByaW50TGFiZWxzKHtpOnIsajpvLHZhbHVlczpwLHR0SXRlbXM6YSxzaGFyZWQ6aSxlOmR9KTt2YXIgZj10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpO3RoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQ9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9fSx7a2V5OlwicHJpbnRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsYT1lLmkscz1lLmoscj1lLnZhbHVlcyxuPWUudHRJdGVtcyxvPWUuc2hhcmVkLGg9ZS5lLGM9dGhpcy53LGQ9W10sZz1mdW5jdGlvbih4KXtyZXR1cm4gYy5nbG9iYWxzLnNlcmllc0dvYWxzW3hdJiZjLmdsb2JhbHMuc2VyaWVzR29hbHNbeF1bc10mJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3hdW3NdKX0scD1yLnhWYWwsZj1yLnpWYWwsYj1yLnhBeGlzVFRWYWwsbT1cIlwiLHc9Yy5nbG9iYWxzLmNvbG9yc1thXTtzIT09bnVsbCYmYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYodz1jLmdsb2JhbHMuY29sb3JzW3NdKTtmb3IodmFyIEE9ZnVuY3Rpb24oeCx2KXt2YXIgaz1pLmdldEZvcm1hdHRlcnMoYSk7bT1pLmdldFNlcmllc05hbWUoe2ZuOmsueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6YSxzZXJpZXNJbmRleDphLGo6c30pLGMuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInRyZWVtYXBcIiYmKG09ay55TGJUaXRsZUZvcm1hdHRlcihTdHJpbmcoYy5jb25maWcuc2VyaWVzW2FdLmRhdGFbc10ueCkse3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyx3OmN9KSk7dmFyIFM9Yy5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/djp4O2lmKGMuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgQz1mdW5jdGlvbih6KXt2YXIgVCxFLFIsTztyZXR1cm4gYy5nbG9iYWxzLmlzUmFuZ2VEYXRhP2sueUxiRm9ybWF0dGVyKChUPWMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0KT09PW51bGx8fFQ9PT12b2lkIDB8fChFPVRbel0pPT09bnVsbHx8RT09PXZvaWQgMD92b2lkIDA6RVtzXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHNlcmllc0luZGV4OnosZGF0YVBvaW50SW5kZXg6cyx3OmN9KStcIiAtIFwiK2sueUxiRm9ybWF0dGVyKChSPWMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCk9PT1udWxsfHxSPT09dm9pZCAwfHwoTz1SW3pdKT09PW51bGx8fE89PT12b2lkIDA/dm9pZCAwOk9bc10se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsc2VyaWVzSW5kZXg6eixkYXRhUG9pbnRJbmRleDpzLHc6Y30pOmsueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbel1bc10se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnosZGF0YVBvaW50SW5kZXg6cyx3OmN9KX07aWYobylrPWkuZ2V0Rm9ybWF0dGVycyhTKSxtPWkuZ2V0U2VyaWVzTmFtZSh7Zm46ay55TGJUaXRsZUZvcm1hdHRlcixpbmRleDpTLHNlcmllc0luZGV4OmEsajpzfSksdz1jLmdsb2JhbHMuY29sb3JzW1NdLHQ9QyhTKSxnKFMpJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbU11bc10ubWFwKGZ1bmN0aW9uKHope3JldHVybnthdHRyczp6LHZhbDprLnlMYkZvcm1hdHRlcih6LnZhbHVlLHtzZXJpZXNJbmRleDpTLGRhdGFQb2ludEluZGV4OnMsdzpjfSl9fSkpO2Vsc2V7dmFyIEwsST1oPT1udWxsfHwoTD1oLnRhcmdldCk9PT1udWxsfHxMPT09dm9pZCAwP3ZvaWQgMDpMLmdldEF0dHJpYnV0ZShcImZpbGxcIik7SSYmKHc9SS5pbmRleE9mKFwidXJsXCIpIT09LTE/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihJLnN1YnN0cig0KS5zbGljZSgwLC0xKSkuY2hpbGROb2Rlc1swXS5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIik6SSksdD1DKGEpLGcoYSkmJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdKSYmKGQ9Yy5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdLm1hcChmdW5jdGlvbih6KXtyZXR1cm57YXR0cnM6eix2YWw6ay55TGJGb3JtYXR0ZXIoei52YWx1ZSx7c2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpzLHc6Y30pfX0pKX19cz09PW51bGwmJih0PWsueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbYV0sWChYKHt9LGMpLHt9LHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OmF9KSkpLGkuRE9NSGFuZGxpbmcoe2k6YSx0OlMsajpzLHR0SXRlbXM6bix2YWx1ZXM6e3ZhbDp0LGdvYWxWYWxzOmQseFZhbDpwLHhBeGlzVFRWYWw6Yix6VmFsOmZ9LHNlcmllc05hbWU6bSxzaGFyZWQ6byxwQ29sb3I6d30pfSxsPTAsdT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO2w8Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bCsrLHUtLSlBKGwsdSl9fSx7a2V5OlwiZ2V0Rm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy53LGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbZV07cmV0dXJuIGkuZ2xvYmFscy50dFZhbCE9PXZvaWQgMD9BcnJheS5pc0FycmF5KGkuZ2xvYmFscy50dFZhbCk/KGE9aS5nbG9iYWxzLnR0VmFsW2VdJiZpLmdsb2JhbHMudHRWYWxbZV0uZm9ybWF0dGVyLHQ9aS5nbG9iYWxzLnR0VmFsW2VdJiZpLmdsb2JhbHMudHRWYWxbZV0udGl0bGUmJmkuZ2xvYmFscy50dFZhbFtlXS50aXRsZS5mb3JtYXR0ZXIpOihhPWkuZ2xvYmFscy50dFZhbC5mb3JtYXR0ZXIsdHlwZW9mIGkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXI9PVwiZnVuY3Rpb25cIiYmKHQ9aS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlcikpOnQ9aS5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcix0eXBlb2YgYSE9XCJmdW5jdGlvblwiJiYoYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXT9pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTpmdW5jdGlvbihzKXtyZXR1cm4gc30pLHR5cGVvZiB0IT1cImZ1bmN0aW9uXCImJih0PWZ1bmN0aW9uKHMpe3JldHVybiBzfSkse3lMYkZvcm1hdHRlcjphLHlMYlRpdGxlRm9ybWF0dGVyOnR9fX0se2tleTpcImdldFNlcmllc05hbWVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZuLGk9ZS5pbmRleCxhPWUuc2VyaWVzSW5kZXgscz1lLmoscj10aGlzLnc7cmV0dXJuIHQoU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSkse3NlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyx3OnJ9KX19LHtrZXk6XCJET01IYW5kbGluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2UuaTt2YXIgdD1lLnQsaT1lLmosYT1lLnR0SXRlbXMscz1lLnZhbHVlcyxyPWUuc2VyaWVzTmFtZSxuPWUuc2hhcmVkLG89ZS5wQ29sb3IsaD10aGlzLncsYz10aGlzLnR0Q3R4LGQ9cy52YWwsZz1zLmdvYWxWYWxzLHA9cy54VmFsLGY9cy54QXhpc1RUVmFsLGI9cy56VmFsLG09bnVsbDttPWFbdF0uY2hpbGRyZW4saC5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihhW3RdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1vLG1bMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksYy5zaG93VG9vbHRpcFRpdGxlJiYoYy50b29sdGlwVGl0bGU9PT1udWxsJiYoYy50b29sdGlwVGl0bGU9aC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIikpLGMudG9vbHRpcFRpdGxlLmlubmVySFRNTD1wKSxjLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKGMueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUw9ZiE9PVwiXCI/ZjpwKTt2YXIgdz1hW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbFwiKTt3JiYody5pbm5lckhUTUw9cnx8XCJcIik7dmFyIEE9YVt0XS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWVcIik7QSYmKEEuaW5uZXJIVE1MPWQhPT12b2lkIDA/ZDpcIlwiKSxtWzBdJiZtWzBdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIikmJihoLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzJiZBcnJheS5pc0FycmF5KGguY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMpJiYobz1oLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzW3RdKSxtWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1vKSxoLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93fHwobVswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgbD1hW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWxcIiksdT1hW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWVcIik7aWYoZy5sZW5ndGgmJmguZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XSl7dmFyIHg9ZnVuY3Rpb24oKXt2YXIgUz1cIjxkaXYgPlwiLEM9XCI8ZGl2PlwiO2cuZm9yRWFjaChmdW5jdGlvbihMLEkpe1MrPScgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj48c3BhbiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICcuY29uY2F0KEwuYXR0cnMuc3Ryb2tlQ29sb3IsJzsgaGVpZ2h0OiAzcHg7IGJvcmRlci1yYWRpdXM6IDA7IHRvcDogNXB4O1wiPjwvc3Bhbj4gJykuY29uY2F0KEwuYXR0cnMubmFtZSxcIjwvZGl2PlwiKSxDKz1cIjxkaXY+XCIuY29uY2F0KEwudmFsLFwiPC9kaXY+XCIpfSksbC5pbm5lckhUTUw9UytcIjwvZGl2PlwiLHUuaW5uZXJIVE1MPUMrXCI8L2Rpdj5cIn07bj9oLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1baV0mJkFycmF5LmlzQXJyYXkoaC5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW2ldKT94KCk6KGwuaW5uZXJIVE1MPVwiXCIsdS5pbm5lckhUTUw9XCJcIik6eCgpfWVsc2UgbC5pbm5lckhUTUw9XCJcIix1LmlubmVySFRNTD1cIlwiO2lmKGIhPT1udWxsJiYoYVt0XS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotbGFiZWxcIikuaW5uZXJIVE1MPWguY29uZmlnLnRvb2x0aXAuei50aXRsZSxhW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZVwiKS5pbm5lckhUTUw9YiE9PXZvaWQgMD9iOlwiXCIpLG4mJm1bMF0pe2lmKGguY29uZmlnLnRvb2x0aXAuaGlkZUVtcHR5U2VyaWVzKXt2YXIgdj1hW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxrPWFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKTtwYXJzZUZsb2F0KGQpPT0wPyh2LnN0eWxlLmRpc3BsYXk9XCJub25lXCIsay5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKToodi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIixrLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiKX1kPT1udWxsfHxoLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpPi0xfHxoLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpPi0xP21bMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOm1bMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PWguY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheX19fSx7a2V5OlwidG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7aWYoZSl0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJlbmFibGVcIik7ZWxzZXt0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJkaXNhYmxlXCIpO3ZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKTtpJiYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS5zdHlsZS5kaXNwbGF5PXQuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fX0se2tleTpcImdldFZhbHVlc1RvUHJpbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmksaT1lLmosYT10aGlzLncscz10aGlzLmN0eC5zZXJpZXMuZmlsdGVyZWRTZXJpZXNYKCkscj1cIlwiLG49XCJcIixvPW51bGwsaD1udWxsLGM9e3NlcmllczphLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6aSx3OmF9LGQ9YS5nbG9iYWxzLnR0WkZvcm1hdHRlcjtpPT09bnVsbD9oPWEuZ2xvYmFscy5zZXJpZXNbdF06YS5nbG9iYWxzLmlzWE51bWVyaWMmJmEuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInRyZWVtYXBcIj8ocj1zW3RdW2ldLHNbdF0ubGVuZ3RoPT09MCYmKHI9c1t0aGlzLnRvb2x0aXBVdGlsLmdldEZpcnN0QWN0aXZlWEFycmF5KHMpXVtpXSkpOnI9YS5nbG9iYWxzLmxhYmVsc1tpXSE9PXZvaWQgMD9hLmdsb2JhbHMubGFiZWxzW2ldOlwiXCI7dmFyIGc9cjtyZXR1cm4gYS5nbG9iYWxzLmlzWE51bWVyaWMmJmEuY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCI/cj1uZXcgbmUodGhpcy5jdHgpLnhMYWJlbEZvcm1hdChhLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZyxnLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBCKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6dGhpcy53fSk6cj1hLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2EuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGcsYyk6YS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihnLGMpLGEuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIhPT12b2lkIDAmJihyPWEuZ2xvYmFscy50dEtleUZvcm1hdHRlcihnLGMpKSxhLmdsb2JhbHMuc2VyaWVzWi5sZW5ndGg+MCYmYS5nbG9iYWxzLnNlcmllc1pbdF0ubGVuZ3RoPjAmJihvPWQoYS5nbG9iYWxzLnNlcmllc1pbdF1baV0sYSkpLG49dHlwZW9mIGEuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyPT1cImZ1bmN0aW9uXCI/YS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcihnLGMpOnIse3ZhbDpBcnJheS5pc0FycmF5KGgpP2guam9pbihcIiBcIik6aCx4VmFsOkFycmF5LmlzQXJyYXkocik/ci5qb2luKFwiIFwiKTpyLHhBeGlzVFRWYWw6QXJyYXkuaXNBcnJheShuKT9uLmpvaW4oXCIgXCIpOm4selZhbDpvfX19LHtrZXk6XCJoYW5kbGVDdXN0b21Ub29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pLGk9ZS5qLGE9ZS55MSxzPWUueTIscj1lLncsbj10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpLG89ci5jb25maWcudG9vbHRpcC5jdXN0b207QXJyYXkuaXNBcnJheShvKSYmb1t0XSYmKG89b1t0XSksbi5pbm5lckhUTUw9byh7Y3R4OnRoaXMuY3R4LHNlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6aSx5MTphLHkyOnMsdzpyfSl9fV0pLHl9KCkscnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwibW92ZVhDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGwsaT10aGlzLnR0Q3R4LGE9dGhpcy53LHM9aS5nZXRFbFhDcm9zc2hhaXJzKCkscj1lLWkueGNyb3NzaGFpcnNXaWR0aC8yLG49YS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLmxlbmd0aDtpZih0IT09bnVsbCYmKHI9YS5nbG9iYWxzLmdyaWRXaWR0aC9uKnQpLHM9PT1udWxsfHxhLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwocy5zZXRBdHRyaWJ1dGUoXCJ4XCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MVwiLHIpLHMuc2V0QXR0cmlidXRlKFwieDJcIixyKSxzLnNldEF0dHJpYnV0ZShcInkyXCIsYS5nbG9iYWxzLmdyaWRIZWlnaHQpLHMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpKSxyPDAmJihyPTApLHI+YS5nbG9iYWxzLmdyaWRXaWR0aCYmKHI9YS5nbG9iYWxzLmdyaWRXaWR0aCksaS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQpe3ZhciBvPXI7YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCE9PVwidGlja1dpZHRoXCImJmEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGghPT1cImJhcldpZHRoXCJ8fChvPXIraS54Y3Jvc3NoYWlyc1dpZHRoLzIpLHRoaXMubW92ZVhBeGlzVG9vbHRpcChvKX19fSx7a2V5OlwibW92ZVlDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50dEN0eDt0Lnljcm9zc2hhaXJzIT09bnVsbCYmTS5zZXRBdHRycyh0Lnljcm9zc2hhaXJzLHt5MTplLHkyOmV9KSx0Lnljcm9zc2hhaXJzSGlkZGVuIT09bnVsbCYmTS5zZXRBdHRycyh0Lnljcm9zc2hhaXJzSGlkZGVuLHt5MTplLHkyOmV9KX19LHtrZXk6XCJtb3ZlWEF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dGhpcy50dEN0eDtpZihpLnhheGlzVG9vbHRpcCE9PW51bGwmJmkueGNyb3NzaGFpcnNXaWR0aCE9PTApe2kueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgYT1pLnhheGlzT2ZmWSt0LmNvbmZpZy54YXhpcy50b29sdGlwLm9mZnNldFkrdC5nbG9iYWxzLnRyYW5zbGF0ZVkrMSt0LmNvbmZpZy54YXhpcy5vZmZzZXRZO2lmKGUtPWkueGF4aXNUb29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLzIsIWlzTmFOKGUpKXtlKz10Lmdsb2JhbHMudHJhbnNsYXRlWDt2YXIgcztzPW5ldyBNKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaS54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTCksaS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLm1pbldpZHRoPXMud2lkdGgrXCJweFwiLGkueGF4aXNUb29sdGlwLnN0eWxlLmxlZnQ9ZStcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUudG9wPWErXCJweFwifX19fSx7a2V5OlwibW92ZVlBeGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXRoaXMudHRDdHg7aS55YXhpc1RURWxzPT09bnVsbCYmKGkueWF4aXNUVEVscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwXCIpKTt2YXIgYT1wYXJzZUludChpLnljcm9zc2hhaXJzSGlkZGVuLmdldEF0dHJpYnV0ZShcInkxXCIpLDEwKSxzPXQuZ2xvYmFscy50cmFuc2xhdGVZK2Escj1pLnlheGlzVFRFbHNbZV0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LG49dC5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtlXS0yO3QuY29uZmlnLnlheGlzW2VdLm9wcG9zaXRlJiYobi09MjYpLHMtPXIvMix0Lmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSk9PT0tMT8oaS55YXhpc1RURWxzW2VdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnlheGlzVFRFbHNbZV0uc3R5bGUudG9wPXMrXCJweFwiLGkueWF4aXNUVEVsc1tlXS5zdHlsZS5sZWZ0PW4rdC5jb25maWcueWF4aXNbZV0udG9vbHRpcC5vZmZzZXRYK1wicHhcIik6aS55YXhpc1RURWxzW2VdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX19LHtrZXk6XCJtb3ZlVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGwsYT10aGlzLncscz10aGlzLnR0Q3R4LHI9cy5nZXRFbFRvb2x0aXAoKSxuPXMudG9vbHRpcFJlY3Qsbz1pIT09bnVsbD9wYXJzZUZsb2F0KGkpOjEsaD1wYXJzZUZsb2F0KGUpK28rNSxjPXBhcnNlRmxvYXQodCkrby8yO2lmKGg+YS5nbG9iYWxzLmdyaWRXaWR0aC8yJiYoaD1oLW4udHRXaWR0aC1vLTEwKSxoPmEuZ2xvYmFscy5ncmlkV2lkdGgtbi50dFdpZHRoLTEwJiYoaD1hLmdsb2JhbHMuZ3JpZFdpZHRoLW4udHRXaWR0aCksaDwtMjAmJihoPS0yMCksYS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBkPXMuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KGg9cy5lLmNsaWVudFgtZC5sZWZ0KT5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihoLT1zLnRvb2x0aXBSZWN0LnR0V2lkdGgpLChjPXMuZS5jbGllbnRZK2EuZ2xvYmFscy50cmFuc2xhdGVZLWQudG9wKT5hLmdsb2JhbHMuZ3JpZEhlaWdodC8yJiYoYy09cy50b29sdGlwUmVjdC50dEhlaWdodCl9ZWxzZSBhLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHxuLnR0SGVpZ2h0LzIrYz5hLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGM9YS5nbG9iYWxzLmdyaWRIZWlnaHQtbi50dEhlaWdodCthLmdsb2JhbHMudHJhbnNsYXRlWSk7aXNOYU4oaCl8fChoKz1hLmdsb2JhbHMudHJhbnNsYXRlWCxyLnN0eWxlLmxlZnQ9aCtcInB4XCIsci5zdHlsZS50b3A9YytcInB4XCIpfX0se2tleTpcIm1vdmVNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT10aGlzLnR0Q3R4O2lmKGkuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MClmb3IodmFyIHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoZSxcIiddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSkscj0wO3I8cy5sZW5ndGg7cisrKXBhcnNlSW50KHNbcl0uZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKT09PXQmJihhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxhLm1hcmtlci5lbmxhcmdlQ3VycmVudFBvaW50KHQsc1tyXSkpO2Vsc2UgYS5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksdGhpcy5tb3ZlRHluYW1pY1BvaW50T25Ib3Zlcih0LGUpfX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxhLHM9dGhpcy53LHI9dGhpcy50dEN0eCxuPXMuZ2xvYmFscy5wb2ludHNBcnJheSxvPXIudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKHQpLGg9cy5jb25maWcuc2VyaWVzW3RdLnR5cGU7aWYoIWh8fGghPT1cImNvbHVtblwiJiZoIT09XCJjYW5kbGVzdGlja1wiJiZoIT09XCJib3hQbG90XCIpe2k9blt0XVtlXVswXSxhPW5bdF1bZV1bMV0/blt0XVtlXVsxXTowO3ZhciBjPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGNpcmNsZVwiKSk7YyYmYTxzLmdsb2JhbHMuZ3JpZEhlaWdodCYmYT4wJiYoYy5zZXRBdHRyaWJ1dGUoXCJyXCIsbyksYy5zZXRBdHRyaWJ1dGUoXCJjeFwiLGkpLGMuc2V0QXR0cmlidXRlKFwiY3lcIixhKSksdGhpcy5tb3ZlWENyb3NzaGFpcnMoaSksci5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAoaSxhLG8pfX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50c09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMudHRDdHgsYT1pLncscz0wLHI9MCxuPWEuZ2xvYmFscy5wb2ludHNBcnJheTt0PW5ldyBpZSh0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJhc2NcIixbXCJsaW5lXCIsXCJhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0pO3ZhciBvPWkudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKHQpO25bdF0mJihzPW5bdF1bZV1bMF0scj1uW3RdW2VdWzFdKTt2YXIgaD1pLnRvb2x0aXBVdGlsLmdldEFsbE1hcmtlcnMoKTtpZihoIT09bnVsbClmb3IodmFyIGM9MDtjPGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2MrKyl7dmFyIGQ9bltjXTtpZihhLmdsb2JhbHMuY29tYm9DaGFydHMmJmQ9PT12b2lkIDAmJmguc3BsaWNlKGMsMCxudWxsKSxkJiZkLmxlbmd0aCl7dmFyIGc9bltjXVtlXVsxXSxwPXZvaWQgMDtpZihoW2NdLnNldEF0dHJpYnV0ZShcImN4XCIscyksYS5jb25maWcuY2hhcnQudHlwZT09PVwicmFuZ2VBcmVhXCImJiFhLmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciBmPWUrYS5nbG9iYWxzLnNlcmllc1tjXS5sZW5ndGg7cD1uW2NdW2ZdWzFdLGctPU1hdGguYWJzKGctcCkvMn1nIT09bnVsbCYmIWlzTmFOKGcpJiZnPGEuZ2xvYmFscy5ncmlkSGVpZ2h0K28mJmcrbz4wPyhoW2NdJiZoW2NdLnNldEF0dHJpYnV0ZShcInJcIixvKSxoW2NdJiZoW2NdLnNldEF0dHJpYnV0ZShcImN5XCIsZykpOmhbY10mJmhbY10uc2V0QXR0cmlidXRlKFwiclwiLDApfX10aGlzLm1vdmVYQ3Jvc3NoYWlycyhzKSxpLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChzLHJ8fGEuZ2xvYmFscy5ncmlkSGVpZ2h0LG8pfX0se2tleTpcIm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHgscz1pLmdsb2JhbHMuY29sdW1uU2VyaWVzP2kuZ2xvYmFscy5jb2x1bW5TZXJpZXMubGVuZ3RoOmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHI9cz49MiYmcyUyPT0wP01hdGguZmxvb3Iocy8yKTpNYXRoLmZsb29yKHMvMikrMTtpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYocj1uZXcgaWUodGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiKSsxKTt2YXIgbj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KGUsXCInXVwiKSk7bnx8dHlwZW9mIHQhPVwibnVtYmVyXCJ8fChuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KGUsYCddLFxuICAgICAgICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nYCkuY29uY2F0KHQsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxgJ10sXG4gICAgICAgIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J2ApLmNvbmNhdCh0LFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KGUsYCddLFxuICAgICAgICAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nYCkuY29uY2F0KHQsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKSk7dmFyIG89bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKFwiY3hcIikpOjAsaD1uP3BhcnNlRmxvYXQobi5nZXRBdHRyaWJ1dGUoXCJjeVwiKSk6MCxjPW4/cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTowLGQ9YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnPW4mJihuLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8bi5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKSk7aS5nbG9iYWxzLmlzWE51bWVyaWM/KG4mJiFnJiYoby09cyUyIT0wP2MvMjowKSxuJiZnJiZpLmdsb2JhbHMuY29tYm9DaGFydHMmJihvLT1jLzIpKTppLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwobz1hLnhBeGlzVGlja3NQb3NpdGlvbnNbZS0xXSthLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMixpc05hTihvKSYmKG89YS54QXhpc1RpY2tzUG9zaXRpb25zW2VdLWEuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yKSksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9oLT1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OmkuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP2g9YS5lLmNsaWVudFktZC50b3AtYS50b29sdGlwUmVjdC50dEhlaWdodC8yOmgrYS50b29sdGlwUmVjdC50dEhlaWdodCsxNT5pLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGg9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMubW92ZVhDcm9zc2hhaXJzKG8pLGEuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKG8saHx8aS5nbG9iYWxzLmdyaWRIZWlnaHQpfX1dKSx5fSgpLE10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHJ0KGUpfXJldHVybiBZKHksW3trZXk6XCJkcmF3RHluYW1pY1BvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9bmV3IE0odGhpcy5jdHgpLGk9bmV3IFRlKHRoaXMuY3R4KSxhPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7YT1RKGEpLGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmEuc29ydChmdW5jdGlvbihkLGcpe3JldHVybiBwYXJzZUZsb2F0KGQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpLXBhcnNlRmxvYXQoZy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KTtmb3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTtpZihyIT09bnVsbCl7dmFyIG49dm9pZCAwLG89XCJhcGV4Y2hhcnRzLW1hcmtlciB3XCIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpO2UuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImxpbmVcIiYmZS5jb25maWcuY2hhcnQudHlwZSE9PVwiYXJlYVwifHxlLmdsb2JhbHMuY29tYm9DaGFydHN8fGUuY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwobys9XCIgbm8tcG9pbnRlci1ldmVudHNcIik7dmFyIGg9aS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOm8sc2VyaWVzSW5kZXg6TnVtYmVyKHIuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpfSk7KG49dC5kcmF3TWFya2VyKDAsMCxoKSkubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsMCk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcImdcIik7Yy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wiKSxjLmFwcGVuZENoaWxkKG4ubm9kZSksci5hcHBlbmRDaGlsZChjKX19fX0se2tleTpcImVubGFyZ2VDdXJyZW50UG9pbnRcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTpudWxsLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLnc7cy5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCImJnRoaXMubmV3UG9pbnRTaXplKGUsdCk7dmFyIHI9dC5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxuPXQuZ2V0QXR0cmlidXRlKFwiY3lcIik7aWYoaSE9PW51bGwmJmEhPT1udWxsJiYocj1pLG49YSksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKHIpLCF0aGlzLmZpeGVkVG9vbHRpcCl7aWYocy5jb25maWcuY2hhcnQudHlwZT09PVwicmFkYXJcIil7dmFyIG89dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyPXRoaXMudHRDdHguZS5jbGllbnRYLW8ubGVmdH10aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChyLG4scy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplKX19fSx7a2V5OlwiZW5sYXJnZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLncsaT10aGlzLGE9dGhpcy50dEN0eCxzPWUscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksbj10LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsbz0wO288ci5sZW5ndGg7bysrKXt2YXIgaD1yW29dLmdldEF0dHJpYnV0ZShcInJlbFwiKSxjPXJbb10uZ2V0QXR0cmlidXRlKFwiaW5kZXhcIik7aWYobj09PXZvaWQgMCYmKG49dC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtjXSt0LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLHM9PT1wYXJzZUludChoLDEwKSl7aS5uZXdQb2ludFNpemUocyxyW29dKTt2YXIgZD1yW29dLmdldEF0dHJpYnV0ZShcImN4XCIpLGc9cltvXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoZCksYS5maXhlZFRvb2x0aXB8fGkudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKGQsZyxuKX1lbHNlIGkub2xkUG9pbnRTaXplKHJbb10pfX19LHtrZXk6XCJuZXdQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxzPWU9PT0wP3QucGFyZW50Tm9kZS5maXJzdENoaWxkOnQucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7aWYocy5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpIT09XCIwXCIpe3ZhciByPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApO2E9PT12b2lkIDAmJihhPWkuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl0raS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxhPDAmJihhPTApLHMuc2V0QXR0cmlidXRlKFwiclwiLGEpfX19LHtrZXk6XCJvbGRQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1wYXJzZUZsb2F0KGUuZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7ZS5zZXRBdHRyaWJ1dGUoXCJyXCIsdCl9fSx7a2V5OlwicmVzZXRQb2ludHNTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgaT1wYXJzZUZsb2F0KGVbdF0uZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7UC5pc051bWJlcihpKSYmaT49MD9lW3RdLnNldEF0dHJpYnV0ZShcInJcIixpKTplW3RdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19fV0pLHl9KCksWHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53O3ZhciB0PXRoaXMudzt0aGlzLnR0Q3R4PWUsdGhpcy5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyPSF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0LmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiJiZ0LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3N9cmV0dXJuIFkoeSxbe2tleTpcImdldEF0dHJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBwYXJzZUZsb2F0KGUudGFyZ2V0LmdldEF0dHJpYnV0ZSh0KSl9fSx7a2V5OlwiaGFuZGxlSGVhdFRyZWVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lLGk9ZS5vcHQsYT1lLngscz1lLnkscj1lLnR5cGUsbj10aGlzLnR0Q3R4LG89dGhpcy53O2lmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtXCIuY29uY2F0KHIsXCItcmVjdFwiKSkpe3ZhciBoPXRoaXMuZ2V0QXR0cih0LFwiaVwiKSxjPXRoaXMuZ2V0QXR0cih0LFwialwiKSxkPXRoaXMuZ2V0QXR0cih0LFwiY3hcIiksZz10aGlzLmdldEF0dHIodCxcImN5XCIpLHA9dGhpcy5nZXRBdHRyKHQsXCJ3aWR0aFwiKSxmPXRoaXMuZ2V0QXR0cih0LFwiaGVpZ2h0XCIpO2lmKG4udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6aCxqOmMsc2hhcmVkOiExLGU6dH0pLG8uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWgsby5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9YyxhPWQrbi50b29sdGlwUmVjdC50dFdpZHRoLzIrcCxzPWcrbi50b29sdGlwUmVjdC50dEhlaWdodC8yLWYvMixuLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoZCtwLzIpLGE+by5nbG9iYWxzLmdyaWRXaWR0aC8yJiYoYT1kLW4udG9vbHRpcFJlY3QudHRXaWR0aC8yK3ApLG4udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBiPW8uZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9by5nbG9iYWxzLmNsaWVudFgtYi5sZWZ0LShhPm8uZ2xvYmFscy5ncmlkV2lkdGgvMj9uLnRvb2x0aXBSZWN0LnR0V2lkdGg6MCkscz1vLmdsb2JhbHMuY2xpZW50WS1iLnRvcC0ocz5vLmdsb2JhbHMuZ3JpZEhlaWdodC8yP24udG9vbHRpcFJlY3QudHRIZWlnaHQ6MCl9fXJldHVybnt4OmEseTpzfX19LHtrZXk6XCJoYW5kbGVNYXJrZXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhPWUuZSxzPWUub3B0LHI9ZS54LG49ZS55LG89dGhpcy53LGg9dGhpcy50dEN0eDtpZihhLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSl7dmFyIGM9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksZD1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKSxnPXBhcnNlRmxvYXQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJ2YWxcIikpO2lmKGk9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLHQ9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsaC5pbnRlcnNlY3Qpe3ZhciBwPVAuZmluZEFuY2VzdG9yKHMucGF0aHMsXCJhcGV4Y2hhcnRzLXNlcmllc1wiKTtwJiYodD1wYXJzZUludChwLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSl9aWYoaC50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczpzLnR0SXRlbXMsaTp0LGo6aSxzaGFyZWQ6IWguc2hvd09uSW50ZXJzZWN0JiZvLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOmF9KSxhLnR5cGU9PT1cIm1vdXNldXBcIiYmaC5tYXJrZXJDbGljayhhLHQsaSksby5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9dCxvLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1pLHI9YyxuPWQrby5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmgudG9vbHRpcFJlY3QudHRIZWlnaHQsaC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGY9aC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtuPWguZS5jbGllbnRZK28uZ2xvYmFscy50cmFuc2xhdGVZLWYudG9wfWc8MCYmKG49ZCksaC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLHMucGF0aHMscixuKX1yZXR1cm57eDpyLHk6bn19fSx7a2V5OlwiaGFuZGxlQmFyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGksYT1lLmUscz1lLm9wdCxyPXRoaXMudyxuPXRoaXMudHRDdHgsbz1uLmdldEVsVG9vbHRpcCgpLGg9MCxjPTAsZD0wLGc9dGhpcy5nZXRCYXJUb29sdGlwWFkoe2U6YSxvcHQ6c30pO3Q9Zy5pO3ZhciBwPWcuYmFySGVpZ2h0LGY9Zy5qO3IuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PXQsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9ZixyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZuLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8IXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkPyhjPWcueCxkPWcueSxpPUFycmF5LmlzQXJyYXkoci5jb25maWcuc3Ryb2tlLndpZHRoKT9yLmNvbmZpZy5zdHJva2Uud2lkdGhbdF06ci5jb25maWcuc3Ryb2tlLndpZHRoLGg9Yyk6ci5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KGgvPTIpLGlzTmFOKGQpJiYoZD1yLmdsb2JhbHMuc3ZnSGVpZ2h0LW4udG9vbHRpcFJlY3QudHRIZWlnaHQpO3ZhciBiPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCksbT1yLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzP3IuY29uZmlnLnlheGlzW2JdJiZyLmNvbmZpZy55YXhpc1tiXS5yZXZlcnNlZDpyLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZDtpZihjK24udG9vbHRpcFJlY3QudHRXaWR0aD5yLmdsb2JhbHMuZ3JpZFdpZHRoJiYhbT9jLT1uLnRvb2x0aXBSZWN0LnR0V2lkdGg6YzwwJiYoYz0wKSxuLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgdz1uLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Q9bi5lLmNsaWVudFktdy50b3B9bi50b29sdGlwPT09bnVsbCYmKG4udG9vbHRpcD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKSksci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChyLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wP24udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhoK2kvMik6bi50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGgpKSwhbi5maXhlZFRvb2x0aXAmJighci5jb25maWcudG9vbHRpcC5zaGFyZWR8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4udG9vbHRpcFV0aWwuaGFzQmFycygpKSYmKG0mJihjLT1uLnRvb2x0aXBSZWN0LnR0V2lkdGgpPDAmJihjPTApLCFtfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZuLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8KGQ9ZCtwLTIqKHIuZ2xvYmFscy5zZXJpZXNbdF1bZl08MD9wOjApKSxkPWQrci5nbG9iYWxzLnRyYW5zbGF0ZVktbi50b29sdGlwUmVjdC50dEhlaWdodC8yLG8uc3R5bGUubGVmdD1jK3IuZ2xvYmFscy50cmFuc2xhdGVYK1wicHhcIixvLnN0eWxlLnRvcD1kK1wicHhcIil9fSx7a2V5OlwiZ2V0QmFyVG9vbHRpcFhZXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWUuZSxhPWUub3B0LHM9dGhpcy53LHI9bnVsbCxuPXRoaXMudHRDdHgsbz0wLGg9MCxjPTAsZD0wLGc9MCxwPWkudGFyZ2V0LmNsYXNzTGlzdDtpZihwLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1iYXItYXJlYVwiKXx8cC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8cC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpfHxwLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpKXt2YXIgZj1pLnRhcmdldCxiPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbT1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx3PWIuaGVpZ2h0O2c9Yi5oZWlnaHQ7dmFyIEE9Yi53aWR0aCxsPXBhcnNlSW50KGYuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLHU9cGFyc2VJbnQoZi5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCk7ZD1wYXJzZUZsb2F0KGYuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO3ZhciB4PWkudHlwZT09PVwidG91Y2htb3ZlXCI/aS50b3VjaGVzWzBdLmNsaWVudFg6aS5jbGllbnRYO3I9cGFyc2VJbnQoZi5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxvPXBhcnNlSW50KGYucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7dmFyIHY9Zi5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkxXCIpLGs9Zi5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkyXCIpO3MuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG89cGFyc2VJbnQoZi5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSk7dmFyIFM9ZnVuY3Rpb24oTCl7cmV0dXJuIHMuZ2xvYmFscy5pc1hOdW1lcmljP2wtQS8yOnQuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj9sK0EvMjpsLW4uZGF0YVBvaW50c0RpdmlkZWRXaWR0aCtBLzJ9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gdS1uLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K3cvMi1uLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzJ9O24udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6YS50dEl0ZW1zLGk6byxqOnIseTE6dj9wYXJzZUludCh2LDEwKTpudWxsLHkyOms/cGFyc2VJbnQoaywxMCk6bnVsbCxzaGFyZWQ6IW4uc2hvd09uSW50ZXJzZWN0JiZzLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOml9KSxzLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9zLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhoPXgtbS5sZWZ0KzE1LGM9QygpKTooaD1TKCksYz1pLmNsaWVudFktbS50b3Atbi50b29sdGlwUmVjdC50dEhlaWdodC8yLTE1KTpzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPygoaD1sKTxuLnh5UmF0aW9zLmJhc2VMaW5lSW52ZXJ0ZWRZJiYoaD1sLW4udG9vbHRpcFJlY3QudHRXaWR0aCksYz1DKCkpOihoPVMoKSxjPXUpfXJldHVybnt4OmgseTpjLGJhckhlaWdodDpnLGJhcldpZHRoOmQsaTpvLGo6cn19fV0pLHl9KCksRXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1hheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9dGhpcy50dEN0eCxpPWUuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJib3R0b21cIjt0LnhheGlzT2ZmWT1pP2UuZ2xvYmFscy5ncmlkSGVpZ2h0KzE6LWUuZ2xvYmFscy54QXhpc0hlaWdodC1lLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KzM7dmFyIGE9aT9cImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbVwiOlwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wXCIscz1lLmdsb2JhbHMuZG9tLmVsV3JhcDt0LmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcFwiKT09PW51bGwmJih0LnhheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQueGF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsYStcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK2UuY29uZmlnLnRvb2x0aXAudGhlbWUpLHMuYXBwZW5kQ2hpbGQodC54YXhpc1Rvb2x0aXApLHQueGF4aXNUb29sdGlwVGV4dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQueGF4aXNUb29sdGlwVGV4dC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdGV4dFwiKSx0LnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udEZhbWlseT1lLmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRGYW1pbHl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksdC54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRTaXplPWUuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udFNpemUsdC54YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQodC54YXhpc1Rvb2x0aXBUZXh0KSl9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMudyx0PXRoaXMudHRDdHgsaT1mdW5jdGlvbihzKXt2YXIgcj1lLmNvbmZpZy55YXhpc1tzXS5vcHBvc2l0ZXx8ZS5jb25maWcueWF4aXNbc10uY3Jvc3NoYWlycy5vcHBvc2l0ZTt0LnlheGlzT2ZmWD1yP2UuZ2xvYmFscy5ncmlkV2lkdGgrMToxO3ZhciBuPVwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KHMscj9cIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnRcIik7ZS5nbG9iYWxzLnlBeGlzU2FtZVNjYWxlSW5kaWNlcy5tYXAoZnVuY3Rpb24oaCxjKXtoLm1hcChmdW5jdGlvbihkLGcpe2c9PT1zJiYobis9ZS5jb25maWcueWF4aXNbZ10uc2hvdz9cIiBcIjpcIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW5cIil9KX0pO3ZhciBvPWUuZ2xvYmFscy5kb20uZWxXcmFwO2UuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KHMpKT09PW51bGwmJih0LnlheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQueWF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsbitcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK2UuY29uZmlnLnRvb2x0aXAudGhlbWUpLG8uYXBwZW5kQ2hpbGQodC55YXhpc1Rvb2x0aXApLHM9PT0wJiYodC55YXhpc1Rvb2x0aXBUZXh0PVtdKSx0LnlheGlzVG9vbHRpcFRleHRbc109ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0LnlheGlzVG9vbHRpcFRleHRbc10uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteWF4aXN0b29sdGlwLXRleHRcIiksdC55YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQodC55YXhpc1Rvb2x0aXBUZXh0W3NdKSl9LGE9MDthPGUuY29uZmlnLnlheGlzLmxlbmd0aDthKyspaShhKX19LHtrZXk6XCJzZXRYQ3Jvc3NoYWlyV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PXRoaXMudHRDdHgsaT10LmdldEVsWENyb3NzaGFpcnMoKTtpZih0Lnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQoZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwxMCksZS5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYoYSE9PW51bGwmJmUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT1cImJhcldpZHRoXCIpe3ZhciBzPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7dC54Y3Jvc3NoYWlyc1dpZHRoPXN9ZWxzZSBpZihlLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoPT09XCJ0aWNrV2lkdGhcIil7dmFyIHI9ZS5nbG9iYWxzLmxhYmVscy5sZW5ndGg7dC54Y3Jvc3NoYWlyc1dpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvcn19ZWxzZSBpZihlLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoPT09XCJ0aWNrV2lkdGhcIil7dmFyIG49ZS5nbG9iYWxzLmxhYmVscy5sZW5ndGg7dC54Y3Jvc3NoYWlyc1dpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvbn1lbHNlIGlmKGUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT1cImJhcldpZHRoXCIpe3ZhciBvPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihvIT09bnVsbCl7dmFyIGg9cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTt0Lnhjcm9zc2hhaXJzV2lkdGg9aH1lbHNlIHQueGNyb3NzaGFpcnNXaWR0aD0xfWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0Lnhjcm9zc2hhaXJzV2lkdGg9MCksaSE9PW51bGwmJnQueGNyb3NzaGFpcnNXaWR0aD4wJiZpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsdC54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6XCJoYW5kbGVZQ3Jvc3NoYWlyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD10aGlzLnR0Q3R4O3QueWNyb3NzaGFpcnM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLHQueWNyb3NzaGFpcnNIaWRkZW49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwiKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLnR0Q3R4LHM9dGhpcy53LHI9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbZV07aWYoYS55YXhpc1Rvb2x0aXBzW2VdKXt2YXIgbj1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89KHQtbi50b3ApKmkueVJhdGlvW2VdLGg9cy5nbG9iYWxzLm1heFlBcnJbZV0tcy5nbG9iYWxzLm1pbllBcnJbZV0sYz1zLmdsb2JhbHMubWluWUFycltlXSsoaC1vKTthLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUNyb3NzaGFpcnModC1uLnRvcCksYS55YXhpc1Rvb2x0aXBUZXh0W2VdLmlubmVySFRNTD1yKGMpLGEudG9vbHRpcFBvc2l0aW9uLm1vdmVZQXhpc1Rvb2x0aXAoZSl9fX1dKSx5fSgpLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciB0PXRoaXMudzt0aGlzLnRDb25maWc9dC5jb25maWcudG9vbHRpcCx0aGlzLnRvb2x0aXBVdGlsPW5ldyBzdCh0aGlzKSx0aGlzLnRvb2x0aXBMYWJlbHM9bmV3IHp0KHRoaXMpLHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyBydCh0aGlzKSx0aGlzLm1hcmtlcj1uZXcgTXQodGhpcyksdGhpcy5pbnRlcnNlY3Q9bmV3IFh0KHRoaXMpLHRoaXMuYXhlc1Rvb2x0aXA9bmV3IEV0KHRoaXMpLHRoaXMuc2hvd09uSW50ZXJzZWN0PXRoaXMudENvbmZpZy5pbnRlcnNlY3QsdGhpcy5zaG93VG9vbHRpcFRpdGxlPXRoaXMudENvbmZpZy54LnNob3csdGhpcy5maXhlZFRvb2x0aXA9dGhpcy50Q29uZmlnLmZpeGVkLmVuYWJsZWQsdGhpcy54YXhpc1Rvb2x0aXA9bnVsbCx0aGlzLnlheGlzVFRFbHM9bnVsbCx0aGlzLmlzQmFyU2hhcmVkPSF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRDb25maWcuc2hhcmVkLHRoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpfXJldHVybiBZKHksW3trZXk6XCJnZXRFbFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZXx8KGU9dGhpcyksZS53Lmdsb2JhbHMuZG9tLmJhc2VFbD9lLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpOm51bGx9fSx7a2V5OlwiZ2V0RWxYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpfX0se2tleTpcImdldEVsR3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIil9fSx7a2V5OlwiZHJhd1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7dGhpcy54eVJhdGlvcz1lLHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkPXQuY29uZmlnLnhheGlzLnRvb2x0aXAuZW5hYmxlZCYmdC5nbG9iYWxzLmF4aXNDaGFydHMsdGhpcy55YXhpc1Rvb2x0aXBzPXQuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihyLG4pe3JldHVybiEhKHIuc2hvdyYmci50b29sdGlwLmVuYWJsZWQmJnQuZ2xvYmFscy5heGlzQ2hhcnRzKX0pLHRoaXMuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1bXSx0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT0hMSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXBcIiksdC5jb25maWcudG9vbHRpcC5jc3NDbGFzcyYmaS5jbGFzc0xpc3QuYWRkKHQuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KHRoaXMudENvbmZpZy50aGVtZSkpLHQuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLHQuZ2xvYmFscy5heGlzQ2hhcnRzKXt0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLnNldFhDcm9zc2hhaXJXaWR0aCgpLHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpO3ZhciBhPW5ldyB6ZSh0aGlzLmN0eCk7dGhpcy54QXhpc1RpY2tzUG9zaXRpb25zPWEuZ2V0WEF4aXNUaWNrc1Bvc2l0aW9ucygpfWlmKCF0Lmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnRDb25maWcuaW50ZXJzZWN0JiZ0LmNvbmZpZy5jaGFydC50eXBlIT09XCJyYW5nZUJhclwifHx0aGlzLnRDb25maWcuc2hhcmVkfHwodGhpcy5zaG93T25JbnRlcnNlY3Q9ITApLHQuY29uZmlnLm1hcmtlcnMuc2l6ZSE9PTAmJnQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplIT09MHx8dGhpcy5tYXJrZXIuZHJhd0R5bmFtaWNQb2ludHModGhpcyksdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT10Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCl7dGhpcy5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodD10Lmdsb2JhbHMuZ3JpZEhlaWdodC90Lmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLmRhdGFQb2ludHNEaXZpZGVkV2lkdGg9dC5nbG9iYWxzLmdyaWRXaWR0aC90Lmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLnNob3dUb29sdGlwVGl0bGUmJih0aGlzLnRvb2x0aXBUaXRsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMudG9vbHRpcFRpdGxlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIiksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udEZhbWlseT10aGlzLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250U2l6ZT10aGlzLnRDb25maWcuc3R5bGUuZm9udFNpemUsaS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBUaXRsZSkpO3ZhciBzPXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyh0Lmdsb2JhbHMueHlDaGFydHN8fHQuZ2xvYmFscy5jb21ib0NoYXJ0cykmJnRoaXMudENvbmZpZy5zaGFyZWQmJihzPXRoaXMuc2hvd09uSW50ZXJzZWN0PzE6dC5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHRoaXMubGVnZW5kTGFiZWxzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKSx0aGlzLnR0SXRlbXM9dGhpcy5jcmVhdGVUVEVsZW1lbnRzKHMpLHRoaXMuYWRkU1ZHRXZlbnRzKCl9fX0se2tleTpcImNyZWF0ZVRURWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcyxpPXRoaXMudyxhPVtdLHM9dGhpcy5nZXRFbFRvb2x0aXAoKSxyPWZ1bmN0aW9uKG8pe3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKSxoLnN0eWxlLm9yZGVyPWkuY29uZmlnLnRvb2x0aXAuaW52ZXJzZU9yZGVyP2UtbzpvKzEsdC50Q29uZmlnLnNoYXJlZCYmdC50Q29uZmlnLmVuYWJsZWRPblNlcmllcyYmQXJyYXkuaXNBcnJheSh0LnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmdC50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKG8pPDAmJmguY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuXCIpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2MuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIiksYy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9aS5nbG9iYWxzLmNvbG9yc1tvXSxoLmFwcGVuZENoaWxkKGMpO3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ZC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHRcIiksZC5zdHlsZS5mb250RmFtaWx5PXQudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxpLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGQuc3R5bGUuZm9udFNpemU9dC50Q29uZmlnLnN0eWxlLmZvbnRTaXplLFtcInlcIixcImdvYWxzXCIsXCJ6XCJdLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtXCIuY29uY2F0KGcsXCItZ3JvdXBcIikpO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2YuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdChnLFwiLWxhYmVsXCIpKSxwLmFwcGVuZENoaWxkKGYpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2IuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdChnLFwiLXZhbHVlXCIpKSxwLmFwcGVuZENoaWxkKGIpLGQuYXBwZW5kQ2hpbGQocCl9KSxoLmFwcGVuZENoaWxkKGQpLHMuYXBwZW5kQ2hpbGQoaCksYS5wdXNoKGgpfSxuPTA7bjxlO24rKylyKG4pO3JldHVybiBhfX0se2tleTpcImFkZFNWR0V2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCksYT0hKHQhPT1cImJhclwiJiZ0IT09XCJjYW5kbGVzdGlja1wiJiZ0IT09XCJib3hQbG90XCImJnQhPT1cInJhbmdlQmFyXCIpLHM9dD09PVwiYXJlYVwifHx0PT09XCJsaW5lXCJ8fHQ9PT1cInNjYXR0ZXJcInx8dD09PVwiYnViYmxlXCJ8fHQ9PT1cInJhZGFyXCIscj1lLmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUsbj10aGlzLmdldEVsR3JpZCgpO24mJih0aGlzLnNlcmllc0JvdW5kPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBvLGg9W10sYz1bXSxkPXtob3ZlckFyZWE6cixlbEdyaWQ6bix0b29sdGlwRWw6aSx0b29sdGlwWTpoLHRvb2x0aXBYOmMsdHRJdGVtczp0aGlzLnR0SXRlbXN9O2lmKGUuZ2xvYmFscy5heGlzQ2hhcnRzJiYocz9vPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTphP289ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpOnQhPT1cImhlYXRtYXBcIiYmdCE9PVwidHJlZW1hcFwifHwobz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWhlYXRtYXAsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy10cmVlbWFwXCIpKSxvJiZvLmxlbmd0aCkpZm9yKHZhciBnPTA7ZzxvLmxlbmd0aDtnKyspaC5wdXNoKG9bZ10uZ2V0QXR0cmlidXRlKFwiY3lcIikpLGMucHVzaChvW2ddLmdldEF0dHJpYnV0ZShcImN4XCIpKTtpZihlLmdsb2JhbHMueHlDaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8ZS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fGEmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkKXRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhbcl0sZCk7ZWxzZSBpZihhJiYhZS5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxzJiZ0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhkKTtlbHNlIGlmKCFlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8dD09PVwiaGVhdG1hcFwifHx0PT09XCJ0cmVlbWFwXCIpe3ZhciBwPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKHAsZCl9aWYodGhpcy5zaG93T25JbnRlcnNlY3Qpe3ZhciBmPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTtmLmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZixkKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGQpfX19LHtrZXk6XCJkcmF3Rml4ZWRUb29sdGlwUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9dGhpcy5nZXRFbFRvb2x0aXAoKSxpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLndpZHRoKzEwLHM9aS5oZWlnaHQrMTAscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCxuPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZLG89dGhpcy50Q29uZmlnLmZpeGVkLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG8uaW5kZXhPZihcInJpZ2h0XCIpPi0xJiYocj1yK2UuZ2xvYmFscy5zdmdXaWR0aC1hKzEwKSxvLmluZGV4T2YoXCJib3R0b21cIik+LTEmJihuPW4rZS5nbG9iYWxzLnN2Z0hlaWdodC1zLTEwKSx0LnN0eWxlLmxlZnQ9citcInB4XCIsdC5zdHlsZS50b3A9bitcInB4XCIse3g6cix5Om4sdHRXaWR0aDphLHR0SGVpZ2h0OnN9fX0se2tleTpcImFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModCxlKX19LHtrZXk6XCJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9dGhpcyxhPWZ1bmN0aW9uKHIpe3ZhciBuPXtwYXRoczplW3JdLHRvb2x0aXBFbDp0LnRvb2x0aXBFbCx0b29sdGlwWTp0LnRvb2x0aXBZLHRvb2x0aXBYOnQudG9vbHRpcFgsZWxHcmlkOnQuZWxHcmlkLGhvdmVyQXJlYTp0LmhvdmVyQXJlYSx0dEl0ZW1zOnQudHRJdGVtc307W1wibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNlb3V0XCIsXCJ0b3VjaGVuZFwiXS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIGVbcl0uYWRkRXZlbnRMaXN0ZW5lcihvLGkub25TZXJpZXNIb3Zlci5iaW5kKGksbikse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSl9LHM9MDtzPGUubGVuZ3RoO3MrKylhKHMpfX0se2tleTpcIm9uU2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsYT1EYXRlLm5vdygpLXRoaXMubGFzdEhvdmVyVGltZTthPj0xMDA/dGhpcy5zZXJpZXNIb3ZlcihlLHQpOihjbGVhclRpbWVvdXQodGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQpLHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnNlcmllc0hvdmVyKGUsdCl9LDEwMC1hKSl9fSx7a2V5Olwic2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7dGhpcy5sYXN0SG92ZXJUaW1lPURhdGUubm93KCk7dmFyIGE9W10scz10aGlzLnc7cy5jb25maWcuY2hhcnQuZ3JvdXAmJihhPXRoaXMuY3R4LmdldEdyb3VwZWRDaGFydHMoKSkscy5nbG9iYWxzLmF4aXNDaGFydHMmJihzLmdsb2JhbHMubWluWD09PS0xLzAmJnMuZ2xvYmFscy5tYXhYPT09MS8wfHxzLmdsb2JhbHMuZGF0YVBvaW50cz09PTApfHwoYS5sZW5ndGg/YS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBuPWkuZ2V0RWxUb29sdGlwKHIpLG89e3BhdGhzOmUucGF0aHMsdG9vbHRpcEVsOm4sdG9vbHRpcFk6ZS50b29sdGlwWSx0b29sdGlwWDplLnRvb2x0aXBYLGVsR3JpZDplLmVsR3JpZCxob3ZlckFyZWE6ZS5ob3ZlckFyZWEsdHRJdGVtczpyLncuZ2xvYmFscy50b29sdGlwLnR0SXRlbXN9O3Iudy5nbG9iYWxzLm1pblg9PT1pLncuZ2xvYmFscy5taW5YJiZyLncuZ2xvYmFscy5tYXhYPT09aS53Lmdsb2JhbHMubWF4WCYmci53Lmdsb2JhbHMudG9vbHRpcC5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6cix0dEN0eDpyLncuZ2xvYmFscy50b29sdGlwLG9wdDpvLGU6dH0pfSk6dGhpcy5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6dGhpcy5jdHgsdHRDdHg6dGhpcy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6ZSxlOnR9KSl9fSx7a2V5Olwic2VyaWVzSG92ZXJCeUNvbnRleHRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmNoYXJ0Q3R4LGk9ZS50dEN0eCxhPWUub3B0LHM9ZS5lLHI9dC53LG49dGhpcy5nZXRFbFRvb2x0aXAoKTtuJiYoaS50b29sdGlwUmVjdD17eDowLHk6MCx0dFdpZHRoOm4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdHRIZWlnaHQ6bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGkuZT1zLGkudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhaS5pc0JhclNoYXJlZCYmdGhpcy50Q29uZmlnLm9uRGF0YXNldEhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJm5ldyBpZSh0KS50b2dnbGVTZXJpZXNPbkhvdmVyKHMscy50YXJnZXQucGFyZW50Tm9kZSksaS5maXhlZFRvb2x0aXAmJmkuZHJhd0ZpeGVkVG9vbHRpcFJlY3QoKSxyLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KTppLm5vbkF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KSl9fSx7a2V5OlwiYXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhPWUuZSxzPWUub3B0LHI9dGhpcy53LG49cy5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1hLnR5cGU9PT1cInRvdWNobW92ZVwiP2EudG91Y2hlc1swXS5jbGllbnRYOmEuY2xpZW50WCxoPWEudHlwZT09PVwidG91Y2htb3ZlXCI/YS50b3VjaGVzWzBdLmNsaWVudFk6YS5jbGllbnRZO2lmKHRoaXMuY2xpZW50WT1oLHRoaXMuY2xpZW50WD1vLHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PS0xLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PS0xLGg8bi50b3B8fGg+bi50b3Arbi5oZWlnaHQpdGhpcy5oYW5kbGVNb3VzZU91dChzKTtlbHNle2lmKEFycmF5LmlzQXJyYXkodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJiFyLmNvbmZpZy50b29sdGlwLnNoYXJlZCl7dmFyIGM9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7aWYodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKGMpPDApcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChzKX12YXIgZD10aGlzLmdldEVsVG9vbHRpcCgpLGc9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCkscD1yLmdsb2JhbHMueHlDaGFydHN8fHIuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwiJiYhci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWR8fHIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCk7aWYoYS50eXBlPT09XCJtb3VzZW1vdmVcInx8YS50eXBlPT09XCJ0b3VjaG1vdmVcInx8YS50eXBlPT09XCJtb3VzZXVwXCIpe2lmKHIuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoK3IuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09ci5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuO2chPT1udWxsJiZnLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgZj10aGlzLnlheGlzVG9vbHRpcHMuZmlsdGVyKGZ1bmN0aW9uKHcpe3JldHVybiB3PT09ITB9KTtpZih0aGlzLnljcm9zc2hhaXJzIT09bnVsbCYmZi5sZW5ndGgmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLHAmJiF0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmhhbmRsZVN0aWNreVRvb2x0aXAoYSxvLGgscyk7ZWxzZSBpZihyLmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCJ8fHIuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInRyZWVtYXBcIil7dmFyIGI9dGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHtlOmEsb3B0OnMseDp0LHk6aSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KTt0PWIueCxpPWIueSxkLnN0eWxlLmxlZnQ9dCtcInB4XCIsZC5zdHlsZS50b3A9aStcInB4XCJ9ZWxzZSB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlQmFyVG9vbHRpcCh7ZTphLG9wdDpzfSksdGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZU1hcmtlclRvb2x0aXAoe2U6YSxvcHQ6cyx4OnQseTppfSk7aWYodGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aClmb3IodmFyIG09MDttPHIuY29uZmlnLnlheGlzLmxlbmd0aDttKyspdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwVGV4dChtLGgsdGhpcy54eVJhdGlvcyk7cy50b29sdGlwRWwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpfWVsc2UgYS50eXBlIT09XCJtb3VzZW91dFwiJiZhLnR5cGUhPT1cInRvdWNoZW5kXCJ8fHRoaXMuaGFuZGxlTW91c2VPdXQocyl9fX0se2tleTpcIm5vbkF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZSxpPWUub3B0LGE9ZS50b29sdGlwUmVjdCxzPXRoaXMudyxyPWkucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLG49dGhpcy5nZXRFbFRvb2x0aXAoKSxvPXMuZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQudHlwZT09PVwibW91c2Vtb3ZlXCJ8fHQudHlwZT09PVwidG91Y2htb3ZlXCIpe24uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6cGFyc2VJbnQociwxMCktMSxzaGFyZWQ6ITF9KTt2YXIgaD1zLmdsb2JhbHMuY2xpZW50WC1vLmxlZnQtYS50dFdpZHRoLzIsYz1zLmdsb2JhbHMuY2xpZW50WS1vLnRvcC1hLnR0SGVpZ2h0LTEwO2lmKG4uc3R5bGUubGVmdD1oK1wicHhcIixuLnN0eWxlLnRvcD1jK1wicHhcIixzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgZD1yLTEsZz0oMCxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKSh0aGlzLmxlZ2VuZExhYmVsc1tkXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSx7c2VyaWVzSW5kZXg6ZCxkYXRhUG9pbnRJbmRleDpkLHc6c30pO3RoaXMubGVnZW5kTGFiZWxzW2RdLmlubmVySFRNTD1nfX1lbHNlIHQudHlwZSE9PVwibW91c2VvdXRcIiYmdC50eXBlIT09XCJ0b3VjaGVuZFwifHwobi5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikscy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaChmdW5jdGlvbihwKXt2YXIgZj1wLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3AuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChmKX0pKX19LHtrZXk6XCJoYW5kbGVTdGlja3lUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53LHI9dGhpcy50b29sdGlwVXRpbC5nZXROZWFyZXN0VmFsdWVzKHtjb250ZXh0OnRoaXMsaG92ZXJBcmVhOmEuaG92ZXJBcmVhLGVsR3JpZDphLmVsR3JpZCxjbGllbnRYOnQsY2xpZW50WTppfSksbj1yLmosbz1yLmNhcHR1cmVkU2VyaWVzO3MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKG8pJiYobz1udWxsKTt2YXIgaD1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihyLmhvdmVyWDwwfHxyLmhvdmVyWD5oLndpZHRoKXRoaXMuaGFuZGxlTW91c2VPdXQoYSk7ZWxzZSBpZihvIT09bnVsbCl0aGlzLmhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzKGUsbyxhLG4pO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKG4pfHxzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgYz1zLmdsb2JhbHMuc2VyaWVzLmZpbmRJbmRleChmdW5jdGlvbihkLGcpe3JldHVybiFzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhnKX0pO3RoaXMuY3JlYXRlKGUsdGhpcyxjLG4sYS50dEl0ZW1zKX19fSx7a2V5OlwiaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz10aGlzLnc7aWYoIXRoaXMudENvbmZpZy5zaGFyZWQmJnMuZ2xvYmFscy5zZXJpZXNbdF1bYV09PT1udWxsKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQoaSk7aWYocy5nbG9iYWxzLnNlcmllc1t0XVthXSE9PXZvaWQgMCl0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkmJnRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpP3RoaXMuY3JlYXRlKGUsdGhpcyx0LGEsaS50dEl0ZW1zKTp0aGlzLmNyZWF0ZShlLHRoaXMsdCxhLGkudHRJdGVtcywhMSk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkpe3ZhciByPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KGZ1bmN0aW9uKG4sbyl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKG8pfSk7dGhpcy5jcmVhdGUoZSx0aGlzLHIsYSxpLnR0SXRlbXMpfX19LHtrZXk6XCJkZWFjdGl2YXRlSG92ZXJGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT1lLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpLGE9MDthPGkubGVuZ3RoO2ErKyl0LnBhdGhNb3VzZUxlYXZlKGlbYV0pfX0se2tleTpcImhhbmRsZU1vdXNlT3V0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCk7aWYoZS50b29sdGlwRWwuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksdC5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCImJnRoaXMubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLGkhPT1udWxsJiZpLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLnljcm9zc2hhaXJzIT09bnVsbCYmdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJnRoaXMueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLnlheGlzVG9vbHRpcHMubGVuZ3RoKXt0aGlzLnlheGlzVFRFbHM9PT1udWxsJiYodGhpcy55YXhpc1RURWxzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO2Zvcih2YXIgYT0wO2E8dGhpcy55YXhpc1RURWxzLmxlbmd0aDthKyspdGhpcy55YXhpc1RURWxzW2FdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX10LmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciByPXMuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7cy5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KHIpfSl9fSx7a2V5OlwibWFya2VyQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53O3R5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2s9PVwiZnVuY3Rpb25cIiYmYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6aSx3OmF9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibWFya2VyQ2xpY2tcIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDppLHc6YX1dKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMpe3ZhciByLG4sbyxoLGMsZCxnLHAsZixiLG0sdyxBLGwsdSx4LHY9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOm51bGwsaz10aGlzLncsUz10O2UudHlwZT09PVwibW91c2V1cFwiJiZ0aGlzLm1hcmtlckNsaWNrKGUsaSxhKSx2PT09bnVsbCYmKHY9dGhpcy50Q29uZmlnLnNoYXJlZCk7dmFyIEM9dGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKGkpLEw9dGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTtpZihrLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgST1rLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyLHo9QXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7ei5mb3JFYWNoKGZ1bmN0aW9uKHJlKXt2YXIgZWU9cmUuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7cmUuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlZSl9KTtmb3IodmFyIFQ9MDtUPHoubGVuZ3RoO1QrKyl7dmFyIEU9eltUXSxSPXBhcnNlSW50KEUuZ2V0QXR0cmlidXRlKFwiaVwiKSwxMCksTz1kZWNvZGVVUklDb21wb25lbnQoRS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSksRD1JKE8se3Nlcmllc0luZGV4OnY/UjppLGRhdGFQb2ludEluZGV4OmEsdzprfSk7aWYodilFLmlubmVySFRNTD1rLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKFIpPDA/RDpPO2Vsc2UgaWYoRS5pbm5lckhUTUw9Uj09PWk/RDpPLGk9PT1SKWJyZWFrfX12YXIgVz1YKFgoe3R0SXRlbXM6cyxpLGo6YX0sKChyPWsuZ2xvYmFscy5zZXJpZXNSYW5nZSk9PT1udWxsfHxyPT09dm9pZCAwfHwobj1yW2ldKT09PW51bGx8fG49PT12b2lkIDB8fChvPW5bYV0pPT09bnVsbHx8bz09PXZvaWQgMHx8KGg9by55WzBdKT09PW51bGx8fGg9PT12b2lkIDA/dm9pZCAwOmgueTEpIT09dm9pZCAwJiZ7eTE6KGM9ay5nbG9iYWxzLnNlcmllc1JhbmdlKT09PW51bGx8fGM9PT12b2lkIDB8fChkPWNbaV0pPT09bnVsbHx8ZD09PXZvaWQgMHx8KGc9ZFthXSk9PT1udWxsfHxnPT09dm9pZCAwfHwocD1nLnlbMF0pPT09bnVsbHx8cD09PXZvaWQgMD92b2lkIDA6cC55MX0pLCgoZj1rLmdsb2JhbHMuc2VyaWVzUmFuZ2UpPT09bnVsbHx8Zj09PXZvaWQgMHx8KGI9ZltpXSk9PT1udWxsfHxiPT09dm9pZCAwfHwobT1iW2FdKT09PW51bGx8fG09PT12b2lkIDB8fCh3PW0ueVswXSk9PT1udWxsfHx3PT09dm9pZCAwP3ZvaWQgMDp3LnkyKSE9PXZvaWQgMCYme3kyOihBPWsuZ2xvYmFscy5zZXJpZXNSYW5nZSk9PT1udWxsfHxBPT09dm9pZCAwfHwobD1BW2ldKT09PW51bGx8fGw9PT12b2lkIDB8fCh1PWxbYV0pPT09bnVsbHx8dT09PXZvaWQgMHx8KHg9dS55WzBdKT09PW51bGx8fHg9PT12b2lkIDA/dm9pZCAwOngueTJ9KTtpZih2KXtpZihTLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKFgoWCh7fSxXKSx7fSx7c2hhcmVkOiF0aGlzLnNob3dPbkludGVyc2VjdCYmdGhpcy50Q29uZmlnLnNoYXJlZH0pKSxDKWsuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPjA/Uy5tYXJrZXIuZW5sYXJnZVBvaW50cyhhKTpTLnRvb2x0aXBQb3NpdGlvbi5tb3ZlRHluYW1pY1BvaW50c09uSG92ZXIoYSk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmKHRoaXMuYmFyU2VyaWVzSGVpZ2h0PXRoaXMudG9vbHRpcFV0aWwuZ2V0QmFyc0hlaWdodChMKSx0aGlzLmJhclNlcmllc0hlaWdodD4wKSl7dmFyIE49bmV3IE0odGhpcy5jdHgpLFY9ay5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVtqPSdcIi5jb25jYXQoYSxcIiddXCIpKTt0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMoYSxpKTtmb3IodmFyIGo9MDtqPFYubGVuZ3RoO2orKylOLnBhdGhNb3VzZUVudGVyKFZbal0pfX1lbHNlIFMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoWCh7c2hhcmVkOiExfSxXKSksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJlMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMoYSxpKSxDJiZTLnRvb2x0aXBQb3NpdGlvbi5tb3ZlTWFya2VycyhpLGEpfX1dKSx5fSgpLFl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lLHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy50b3RhbC5mb3JtYXR0ZXIsdGhpcy50b3RhbEZvcm1hdHRlcnx8KHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcil9cmV0dXJuIFkoeSxbe2tleTpcImhhbmRsZUJhckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLngsaT1lLnksYT1lLnkxLHM9ZS55MixyPWUuaSxuPWUuaixvPWUucmVhbEluZGV4LGg9ZS5ncm91cEluZGV4LGM9ZS5zZXJpZXMsZD1lLmJhckhlaWdodCxnPWUuYmFyV2lkdGgscD1lLmJhclhQb3NpdGlvbixmPWUuYmFyWVBvc2l0aW9uLGI9ZS52aXNpYmxlU2VyaWVzLG09ZS5yZW5kZXJlZFBhdGgsdz10aGlzLncsQT1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLGw9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbb106dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgsdT10K3BhcnNlRmxvYXQoZypiKSx4PWkrcGFyc2VGbG9hdChkKmIpO3cuZ2xvYmFscy5pc1hOdW1lcmljJiYhdy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHU9dCtwYXJzZUZsb2F0KGcqKGIrMSkpLHg9aStwYXJzZUZsb2F0KGQqKGIrMSkpLWwpO3ZhciB2LGs9bnVsbCxTPXQsQz1pLEw9e30sST13LmNvbmZpZy5kYXRhTGFiZWxzLHo9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLFQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLnRvdGFsO2YhPT12b2lkIDAmJnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJih4PWYsQz1mKSxwIT09dm9pZCAwJiZ0aGlzLmJhckN0eC5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyJiYodT1wLFM9cCk7dmFyIEU9SS5vZmZzZXRYLFI9SS5vZmZzZXRZLE89e3dpZHRoOjAsaGVpZ2h0OjB9O2lmKHcuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEQ9dGhpcy5iYXJDdHguc2VyaWVzW3JdW25dO089QS5nZXRUZXh0UmVjdHMody5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oRCkscGFyc2VGbG9hdChJLnN0eWxlLmZvbnRTaXplKSl9dmFyIFc9e3g6dCx5OmksaTpyLGo6bixyZWFsSW5kZXg6byxncm91cEluZGV4Omh8fC0xLHJlbmRlcmVkUGF0aDptLGJjeDp1LGJjeTp4LGJhckhlaWdodDpkLGJhcldpZHRoOmcsdGV4dFJlY3RzOk8sc3Ryb2tlV2lkdGg6bCxkYXRhTGFiZWxzWDpTLGRhdGFMYWJlbHNZOkMsZGF0YUxhYmVsc0NvbmZpZzpJLGJhckRhdGFMYWJlbHNDb25maWc6eixiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6VCxvZmZYOkUsb2ZmWTpSfTtyZXR1cm4gTD10aGlzLmJhckN0eC5pc0hvcml6b250YWw/dGhpcy5jYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uKFcpOnRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihXKSxtLmF0dHIoe2N5OkwuYmN5LGN4OkwuYmN4LGo6bix2YWw6Y1tyXVtuXSxiYXJIZWlnaHQ6ZCxiYXJXaWR0aDpnfSksdj10aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDpMLmRhdGFMYWJlbHNYLHk6TC5kYXRhTGFiZWxzWSx2YWw6dGhpcy5iYXJDdHguaXNSYW5nZUJhcj9bYSxzXTpjW3JdW25dLGk6byxqOm4sYmFyV2lkdGg6ZyxiYXJIZWlnaHQ6ZCx0ZXh0UmVjdHM6TyxkYXRhTGFiZWxzQ29uZmlnOkl9KSx3LmNvbmZpZy5jaGFydC5zdGFja2VkJiZULmVuYWJsZWQmJihrPXRoaXMuZHJhd1RvdGFsRGF0YUxhYmVscyh7eDpMLnRvdGFsRGF0YUxhYmVsc1gseTpMLnRvdGFsRGF0YUxhYmVsc1ksYmFyV2lkdGg6ZyxiYXJIZWlnaHQ6ZCxyZWFsSW5kZXg6byx0ZXh0QW5jaG9yOkwudG90YWxEYXRhTGFiZWxzQW5jaG9yLHZhbDp0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om8sajpufSksZGF0YUxhYmVsc0NvbmZpZzpJLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpUfSkpLHtkYXRhTGFiZWxzOnYsdG90YWxEYXRhTGFiZWxzOmt9fX0se2tleTpcImdldFN0YWNrZWRUb3RhbERhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhbEluZGV4LGk9ZS5qLGE9dGhpcy53LHM9dGhpcy5iYXJDdHguc3RhY2tlZFNlcmllc1RvdGFsc1tpXTtyZXR1cm4gdGhpcy50b3RhbEZvcm1hdHRlciYmKHM9dGhpcy50b3RhbEZvcm1hdHRlcihzLFgoWCh7fSxhKSx7fSx7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDppLHc6YX0pKSksc319LHtrZXk6XCJjYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhPXRoaXMudyxzPWUuaSxyPWUuaixuPWUucmVhbEluZGV4LG89ZS5ncm91cEluZGV4LGg9ZS55LGM9ZS5iY3gsZD1lLmJhcldpZHRoLGc9ZS5iYXJIZWlnaHQscD1lLnRleHRSZWN0cyxmPWUuZGF0YUxhYmVsc1gsYj1lLmRhdGFMYWJlbHNZLG09ZS5kYXRhTGFiZWxzQ29uZmlnLHc9ZS5iYXJEYXRhTGFiZWxzQ29uZmlnLEE9ZS5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsbD1lLnN0cm9rZVdpZHRoLHU9ZS5vZmZYLHg9ZS5vZmZZO2c9TWF0aC5hYnMoZyk7dmFyIHY9YS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCIsaz10aGlzLmJhckN0eC5iYXJIZWxwZXJzLmdldFplcm9WYWx1ZUVuY291bnRlcnMoe2k6cyxqOnJ9KS56ZXJvRW5jb3VudGVycztjPWMtbC8yKyhvIT09LTE/bypkOjApO3ZhciBTPWEuZ2xvYmFscy5ncmlkV2lkdGgvYS5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5iYXJDdHguaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj9mKz1kLzI6KGY9YS5nbG9iYWxzLmlzWE51bWVyaWM/Yy1kLzIrdTpjLVMrZC8yK3Usaz4wJiZhLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJihmLT1kKmspKSx2JiYoZj1mK3AuaGVpZ2h0LzItbC8yLTIpO3ZhciBDPXRoaXMuYmFyQ3R4LnNlcmllc1tzXVtyXTwwLEw9aDtzd2l0Y2godGhpcy5iYXJDdHguaXNSZXZlcnNlZCYmKEw9aC1nKyhDPzIqZzowKSxoLT1nKSx3LnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpiPXY/Qz9MLWcvMit4OkwrZy8yLXg6Qz9MLWcvMitwLmhlaWdodC8yK3g6TCtnLzIrcC5oZWlnaHQvMi14O2JyZWFrO2Nhc2VcImJvdHRvbVwiOmI9dj9DP0wtZyt4OkwrZy14OkM/TC1nK3AuaGVpZ2h0K2wreDpMK2ctcC5oZWlnaHQvMitsLXg7YnJlYWs7Y2FzZVwidG9wXCI6Yj12P0M/TCt4OkwteDpDP0wtcC5oZWlnaHQvMi14OkwrcC5oZWlnaHQreH1pZih0aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PW4mJkEuZW5hYmxlZCl7dmFyIEk9bmV3IE0odGhpcy5iYXJDdHguY3R4KS5nZXRUZXh0UmVjdHModGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpuLGo6cn0pLG0uZm9udFNpemUpO3Q9Qz9MLUkuaGVpZ2h0LzIteC1BLm9mZnNldFkrMTg6TCtJLmhlaWdodCt4K0Eub2Zmc2V0WS0xOCxpPWYrQS5vZmZzZXRYfXJldHVybiBhLmNvbmZpZy5jaGFydC5zdGFja2VkfHwoYjwwP2I9MCtsOmIrcC5oZWlnaHQvMz5hLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGI9YS5nbG9iYWxzLmdyaWRIZWlnaHQtbCkpLHtiY3g6YyxiY3k6aCxkYXRhTGFiZWxzWDpmLGRhdGFMYWJlbHNZOmIsdG90YWxEYXRhTGFiZWxzWDppLHRvdGFsRGF0YUxhYmVsc1k6dCx0b3RhbERhdGFMYWJlbHNBbmNob3I6XCJtaWRkbGVcIn19fSx7a2V5OlwiY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPWUueCxhPWUuaSxzPWUuaixyPWUucmVhbEluZGV4LG49ZS5ncm91cEluZGV4LG89ZS5iY3ksaD1lLmJhckhlaWdodCxjPWUuYmFyV2lkdGgsZD1lLnRleHRSZWN0cyxnPWUuZGF0YUxhYmVsc1gscD1lLnN0cm9rZVdpZHRoLGY9ZS5kYXRhTGFiZWxzQ29uZmlnLGI9ZS5iYXJEYXRhTGFiZWxzQ29uZmlnLG09ZS5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsdz1lLm9mZlgsQT1lLm9mZlksbD10Lmdsb2JhbHMuZ3JpZEhlaWdodC90Lmdsb2JhbHMuZGF0YVBvaW50cztjPU1hdGguYWJzKGMpO3ZhciB1LHgsdj0obys9biE9PS0xP24qaDowKS0odGhpcy5iYXJDdHguaXNSYW5nZUJhcj8wOmwpK2gvMitkLmhlaWdodC8yK0EtMyxrPVwic3RhcnRcIixTPXRoaXMuYmFyQ3R4LnNlcmllc1thXVtzXTwwLEM9aTtzd2l0Y2godGhpcy5iYXJDdHguaXNSZXZlcnNlZCYmKEM9aStjLShTPzIqYzowKSxpPXQuZ2xvYmFscy5ncmlkV2lkdGgtYyksYi5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6Zz1TP0MrYy8yLXc6TWF0aC5tYXgoZC53aWR0aC8yLEMtYy8yKSt3O2JyZWFrO2Nhc2VcImJvdHRvbVwiOmc9Uz9DK2MtcC1NYXRoLnJvdW5kKGQud2lkdGgvMiktdzpDLWMrcCtNYXRoLnJvdW5kKGQud2lkdGgvMikrdzticmVhaztjYXNlXCJ0b3BcIjpnPVM/Qy1wK01hdGgucm91bmQoZC53aWR0aC8yKS13OkMtcC1NYXRoLnJvdW5kKGQud2lkdGgvMikrd31pZih0aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXImJm0uZW5hYmxlZCl7dmFyIEw9bmV3IE0odGhpcy5iYXJDdHguY3R4KS5nZXRUZXh0UmVjdHModGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpyLGo6c30pLGYuZm9udFNpemUpO1M/KHU9Qy1wK01hdGgucm91bmQoTC53aWR0aC8yKS13LW0ub2Zmc2V0WC0xNSxrPVwiZW5kXCIpOnU9Qy1wLU1hdGgucm91bmQoTC53aWR0aC8yKSt3K20ub2Zmc2V0WCsxNSx4PXYrbS5vZmZzZXRZfXJldHVybiB0LmNvbmZpZy5jaGFydC5zdGFja2VkfHwoZzwwP2c9ZytkLndpZHRoK3A6ZytkLndpZHRoLzI+dC5nbG9iYWxzLmdyaWRXaWR0aCYmKGc9dC5nbG9iYWxzLmdyaWRXaWR0aC1kLndpZHRoLXApKSx7YmN4OmksYmN5Om8sZGF0YUxhYmVsc1g6ZyxkYXRhTGFiZWxzWTp2LHRvdGFsRGF0YUxhYmVsc1g6dSx0b3RhbERhdGFMYWJlbHNZOngsdG90YWxEYXRhTGFiZWxzQW5jaG9yOmt9fX0se2tleTpcImRyYXdDYWxjdWxhdGVkRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUueCxpPWUueSxhPWUudmFsLHM9ZS5pLHI9ZS5qLG49ZS50ZXh0UmVjdHMsbz1lLmJhckhlaWdodCxoPWUuYmFyV2lkdGgsYz1lLmRhdGFMYWJlbHNDb25maWcsZD10aGlzLncsZz1cInJvdGF0ZSgwKVwiO2QuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiJiYoZz1cInJvdGF0ZSgtOTAsIFwiLmNvbmNhdCh0LFwiLCBcIikuY29uY2F0KGksXCIpXCIpKTt2YXIgcD1uZXcgd2UodGhpcy5iYXJDdHguY3R4KSxmPW5ldyBNKHRoaXMuYmFyQ3R4LmN0eCksYj1jLmZvcm1hdHRlcixtPW51bGwsdz1kLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpPi0xO2lmKGMuZW5hYmxlZCYmIXcpe209Zi5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCIsdHJhbnNmb3JtOmd9KTt2YXIgQT1cIlwiO2EhPT12b2lkIDAmJihBPWIoYSxYKFgoe30sZCkse30se3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3OmR9KSkpLCFhJiZkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJihBPVwiXCIpO3ZhciBsPWQuZ2xvYmFscy5zZXJpZXNbc11bcl08MCx1PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnBvc2l0aW9uO2QuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiJiYodT09PVwidG9wXCImJihjLnRleHRBbmNob3I9bD9cImVuZFwiOlwic3RhcnRcIiksdT09PVwiY2VudGVyXCImJihjLnRleHRBbmNob3I9XCJtaWRkbGVcIiksdT09PVwiYm90dG9tXCImJihjLnRleHRBbmNob3I9bD9cImVuZFwiOlwic3RhcnRcIikpLHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMmJmg8Zi5nZXRUZXh0UmVjdHMoQSxwYXJzZUZsb2F0KGMuc3R5bGUuZm9udFNpemUpKS53aWR0aCYmKEE9XCJcIiksZC5jb25maWcuY2hhcnQuc3RhY2tlZCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyYmKHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9uLndpZHRoLzEuNj5NYXRoLmFicyhoKSYmKEE9XCJcIik6bi5oZWlnaHQvMS42Pk1hdGguYWJzKG8pJiYoQT1cIlwiKSk7dmFyIHg9WCh7fSxjKTt0aGlzLmJhckN0eC5pc0hvcml6b250YWwmJmE8MCYmKGMudGV4dEFuY2hvcj09PVwic3RhcnRcIj94LnRleHRBbmNob3I9XCJlbmRcIjpjLnRleHRBbmNob3I9PT1cImVuZFwiJiYoeC50ZXh0QW5jaG9yPVwic3RhcnRcIikpLHAucGxvdERhdGFMYWJlbHNUZXh0KHt4OnQseTppLHRleHQ6QSxpOnMsajpyLHBhcmVudDptLGRhdGFMYWJlbHNDb25maWc6eCxhbHdheXNEcmF3RGF0YUxhYmVsOiEwLG9mZnNldENvcnJlY3Rpb246ITB9KX1yZXR1cm4gbX19LHtrZXk6XCJkcmF3VG90YWxEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLngsYT1lLnkscz1lLnZhbCxyPWUuYmFyV2lkdGgsbj1lLmJhckhlaWdodCxvPWUucmVhbEluZGV4LGg9ZS50ZXh0QW5jaG9yLGM9ZS5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsZD10aGlzLncsZz1uZXcgTSh0aGlzLmJhckN0eC5jdHgpO3JldHVybiBjLmVuYWJsZWQmJmkhPT12b2lkIDAmJmEhPT12b2lkIDAmJnRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09byYmKHQ9Zy5kcmF3VGV4dCh7eDppLSghZC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmZC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGg/ci9kLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDowKSx5OmEtKGQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJmQuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoP24vZC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGg6MCksZm9yZUNvbG9yOmMuc3R5bGUuY29sb3IsdGV4dDpzLHRleHRBbmNob3I6aCxmb250RmFtaWx5OmMuc3R5bGUuZm9udEZhbWlseSxmb250U2l6ZTpjLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6Yy5zdHlsZS5mb250V2VpZ2h0fSkpLHR9fV0pLHl9KCksRnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcImluaXRWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7dGhpcy5iYXJDdHguc2VyaWVzPWUsdGhpcy5iYXJDdHgudG90YWxJdGVtcz0wLHRoaXMuYmFyQ3R4LnNlcmllc0xlbj0wLHRoaXMuYmFyQ3R4LnZpc2libGVJPS0xLHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz0xO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKWlmKGVbaV0ubGVuZ3RoPjAmJih0aGlzLmJhckN0eC5zZXJpZXNMZW49dGhpcy5iYXJDdHguc2VyaWVzTGVuKzEsdGhpcy5iYXJDdHgudG90YWxJdGVtcys9ZVtpXS5sZW5ndGgpLHQuZ2xvYmFscy5pc1hOdW1lcmljKWZvcih2YXIgYT0wO2E8ZVtpXS5sZW5ndGg7YSsrKXQuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPnQuZ2xvYmFscy5taW5YJiZ0Lmdsb2JhbHMuc2VyaWVzWFtpXVthXTx0Lmdsb2JhbHMubWF4WCYmdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zKys7ZWxzZSB0aGlzLmJhckN0eC52aXNpYmxlSXRlbXM9dC5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5iYXJDdHguc2VyaWVzTGVuPT09MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj0xKSx0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXM9W10sdC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0aGlzLmNoZWNrWmVyb1Nlcmllcyh7c2VyaWVzOmV9KX19LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LGksYSxzLHIsbixvLGg9dGhpcy53LGM9aC5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKGM9aC5nbG9iYWxzLmxhYmVscy5sZW5ndGgpO3ZhciBkPXRoaXMuYmFyQ3R4LnNlcmllc0xlbjtpZihoLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MmJihkPTEpLHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbClzPShpPWguZ2xvYmFscy5ncmlkSGVpZ2h0L2MpL2QsaC5nbG9iYWxzLmlzWE51bWVyaWMmJihzPShpPWguZ2xvYmFscy5ncmlkSGVpZ2h0L3RoaXMuYmFyQ3R4LnRvdGFsSXRlbXMpL3RoaXMuYmFyQ3R4LnNlcmllc0xlbikscz1zKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKS8xMDAsU3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKT09PS0xJiYocz1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLG89dGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFkraC5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/aC5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5iYXJDdHguaXNSZXZlcnNlZD8yKnRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZOjApLHRoaXMuYmFyQ3R4LmlzRnVubmVsJiYobz1oLmdsb2JhbHMuZ3JpZFdpZHRoLzIpLHQ9KGktcyp0aGlzLmJhckN0eC5zZXJpZXNMZW4pLzI7ZWxzZXtpZihhPWguZ2xvYmFscy5ncmlkV2lkdGgvdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zLGguY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGE9aC5nbG9iYWxzLmdyaWRXaWR0aC9oLmdsb2JhbHMuZGF0YVBvaW50cykscj1hL2QqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwLGguZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZz10aGlzLmJhckN0eC54UmF0aW87aC5nbG9iYWxzLm1pblhEaWZmJiZoLmdsb2JhbHMubWluWERpZmYhPT0uNSYmaC5nbG9iYWxzLm1pblhEaWZmL2c+MCYmKGE9aC5nbG9iYWxzLm1pblhEaWZmL2cpLChyPWEvZCpwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihyPTEpfVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKT09PS0xJiYocj1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKSksbj1oLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF0tKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/aC5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCksZT1oLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoYS1yKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMn1yZXR1cm4gaC5nbG9iYWxzLmJhckhlaWdodD1zLGguZ2xvYmFscy5iYXJXaWR0aD1yLHt4OmUseTp0LHlEaXZpc2lvbjppLHhEaXZpc2lvbjphLGJhckhlaWdodDpzLGJhcldpZHRoOnIsemVyb0g6bix6ZXJvVzpvfX19LHtrZXk6XCJpbml0aWFsaXplU3RhY2tlZFByZXZWYXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS53O3QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/dC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2VbaV18fChlW2ldPXt9KSxlW2ldLnByZXZZPVtdLGVbaV0ucHJldlg9W10sZVtpXS5wcmV2WUY9W10sZVtpXS5wcmV2WEY9W10sZVtpXS5wcmV2WVZhbD1bXSxlW2ldLnByZXZYVmFsPVtdfSk6KGUucHJldlk9W10sZS5wcmV2WD1bXSxlLnByZXZZRj1bXSxlLnByZXZYRj1bXSxlLnByZXZZVmFsPVtdLGUucHJldlhWYWw9W10pfX0se2tleTpcImluaXRpYWxpemVTdGFja2VkWFlWYXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS53O3QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/dC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2VbaV18fChlW2ldPXt9KSxlW2ldLnhBcnJqPVtdLGVbaV0ueEFycmpGPVtdLGVbaV0ueEFycmpWYWw9W10sZVtpXS55QXJyaj1bXSxlW2ldLnlBcnJqRj1bXSxlW2ldLnlBcnJqVmFsPVtdfSk6KGUueEFycmo9W10sZS54QXJyakY9W10sZS54QXJyalZhbD1bXSxlLnlBcnJqPVtdLGUueUFycmpGPVtdLGUueUFycmpWYWw9W10pfX0se2tleTpcImdldFBhdGhGaWxsQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcyxyLG4sbyxoPXRoaXMudyxjPW5ldyBzZSh0aGlzLmJhckN0eC5jdHgpLGQ9bnVsbCxnPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/aTp0O3JldHVybiB0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubGVuZ3RoPjAmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5tYXAoZnVuY3Rpb24ocCl7ZVt0XVtpXT49cC5mcm9tJiZlW3RdW2ldPD1wLnRvJiYoZD1wLmNvbG9yKX0pLGguY29uZmlnLnNlcmllc1t0XS5kYXRhW2ldJiZoLmNvbmZpZy5zZXJpZXNbdF0uZGF0YVtpXS5maWxsQ29sb3ImJihkPWguY29uZmlnLnNlcmllc1t0XS5kYXRhW2ldLmZpbGxDb2xvciksYy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/ZzphLGRhdGFQb2ludEluZGV4OmksY29sb3I6ZCx2YWx1ZTplW3RdW2ldLGZpbGxDb25maWc6KHM9aC5jb25maWcuc2VyaWVzW3RdLmRhdGFbaV0pPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6cy5maWxsLGZpbGxUeXBlOihyPWguY29uZmlnLnNlcmllc1t0XS5kYXRhW2ldKSE9PW51bGwmJnIhPT12b2lkIDAmJihuPXIuZmlsbCkhPT1udWxsJiZuIT09dm9pZCAwJiZuLnR5cGU/KG89aC5jb25maWcuc2VyaWVzW3RdLmRhdGFbaV0pPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5maWxsLnR5cGU6QXJyYXkuaXNBcnJheShoLmNvbmZpZy5maWxsLnR5cGUpP2guY29uZmlnLmZpbGwudHlwZVt0XTpoLmNvbmZpZy5maWxsLnR5cGV9KX19LHtrZXk6XCJnZXRTdHJva2VXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT0wLHM9dGhpcy53O3JldHVybiB0aGlzLmJhckN0eC5zZXJpZXNbZV1bdF09PT12b2lkIDB8fHRoaXMuYmFyQ3R4LnNlcmllc1tlXVt0XT09PW51bGw/dGhpcy5iYXJDdHguaXNOdWxsVmFsdWU9ITA6dGhpcy5iYXJDdHguaXNOdWxsVmFsdWU9ITEscy5jb25maWcuc3Ryb2tlLnNob3cmJih0aGlzLmJhckN0eC5pc051bGxWYWx1ZXx8KGE9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbaV06dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpKSxhfX0se2tleTpcInNob3VsZEFwcGx5UmFkaXVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9ITE7cmV0dXJuIHQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXM+MCYmKHQuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJnQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNXaGVuU3RhY2tlZD09PVwibGFzdFwiP3RoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ZSYmKGk9ITApOmk9ITApLGl9fSx7a2V5OlwiYmFyQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaixpPWUuaSxhPWUueDEscz1lLngyLHI9ZS55MSxuPWUueTIsbz1lLmVsU2VyaWVzLGg9dGhpcy53LGM9bmV3IE0odGhpcy5iYXJDdHguY3R4KSxkPW5ldyBpZSh0aGlzLmJhckN0eC5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aWYodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGg+MCYmZD09PWkpe3Q+PXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYodCU9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgpO3ZhciBnPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbdF0scD1jLmRyYXdSZWN0KGEhPT12b2lkIDA/YTowLHIhPT12b2lkIDA/cjowLHMhPT12b2lkIDA/czpoLmdsb2JhbHMuZ3JpZFdpZHRoLG4hPT12b2lkIDA/bjpoLmdsb2JhbHMuZ3JpZEhlaWdodCx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyUmFkaXVzLGcsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO28uYWRkKHApLHAubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfX19LHtrZXk6XCJnZXRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9ZS5iYXJXaWR0aCxhPWUuYmFyWFBvc2l0aW9uLHM9ZS55MSxyPWUueTIsbj1lLnN0cm9rZVdpZHRoLG89ZS5zZXJpZXNHcm91cCxoPWUucmVhbEluZGV4LGM9ZS5pLGQ9ZS5qLGc9ZS53LHA9bmV3IE0odGhpcy5iYXJDdHguY3R4KTsobj1BcnJheS5pc0FycmF5KG4pP25baF06bil8fChuPTApO3ZhciBmPWksYj1hOyh0PWcuY29uZmlnLnNlcmllc1toXS5kYXRhW2RdKSE9PW51bGwmJnQhPT12b2lkIDAmJnQuY29sdW1uV2lkdGhPZmZzZXQmJihiPWEtZy5jb25maWcuc2VyaWVzW2hdLmRhdGFbZF0uY29sdW1uV2lkdGhPZmZzZXQvMixmPWkrZy5jb25maWcuc2VyaWVzW2hdLmRhdGFbZF0uY29sdW1uV2lkdGhPZmZzZXQpO3ZhciBtPWIsdz1iK2Y7cys9LjAwMSxyKz0uMDAxO3ZhciBBPXAubW92ZShtLHMpLGw9cC5tb3ZlKG0scyksdT1wLmxpbmUody1uLHMpO2lmKGcuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYobD10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgoaCxkLCExKSksQT1BK3AubGluZShtLHIpK3AubGluZSh3LW4scikrcC5saW5lKHctbixzKSsoZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uPT09XCJhcm91bmRcIj9cIiBaXCI6XCIgelwiKSxsPWwrcC5saW5lKG0scykrdSt1K3UrdSt1K3AubGluZShtLHMpKyhnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb249PT1cImFyb3VuZFwiP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMoaCkmJihBPXAucm91bmRQYXRoQ29ybmVycyhBLGcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxnLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgeD10aGlzLmJhckN0eDtnLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZvJiYoeD10aGlzLmJhckN0eFtvXSkseC55QXJyai5wdXNoKHIpLHgueUFycmpGLnB1c2goTWF0aC5hYnMocy1yKSkseC55QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1tjXVtkXSl9cmV0dXJue3BhdGhUbzpBLHBhdGhGcm9tOmx9fX0se2tleTpcImdldEJhcnBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLmJhcllQb3NpdGlvbixhPWUuYmFySGVpZ2h0LHM9ZS54MSxyPWUueDIsbj1lLnN0cm9rZVdpZHRoLG89ZS5zZXJpZXNHcm91cCxoPWUucmVhbEluZGV4LGM9ZS5pLGQ9ZS5qLGc9ZS53LHA9bmV3IE0odGhpcy5iYXJDdHguY3R4KTsobj1BcnJheS5pc0FycmF5KG4pP25baF06bil8fChuPTApO3ZhciBmPWksYj1hOyh0PWcuY29uZmlnLnNlcmllc1toXS5kYXRhW2RdKSE9PW51bGwmJnQhPT12b2lkIDAmJnQuYmFySGVpZ2h0T2Zmc2V0JiYoZj1pLWcuY29uZmlnLnNlcmllc1toXS5kYXRhW2RdLmJhckhlaWdodE9mZnNldC8yLGI9YStnLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtkXS5iYXJIZWlnaHRPZmZzZXQpO3ZhciBtPWYsdz1mK2I7cys9LjAwMSxyKz0uMDAxO3ZhciBBPXAubW92ZShzLG0pLGw9cC5tb3ZlKHMsbSk7Zy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihsPXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChoLGQsITEpKTt2YXIgdT1wLmxpbmUocyx3LW4pO2lmKEE9QStwLmxpbmUocixtKStwLmxpbmUocix3LW4pK3UrKGcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj09PVwiYXJvdW5kXCI/XCIgWlwiOlwiIHpcIiksbD1sK3AubGluZShzLG0pK3UrdSt1K3UrdStwLmxpbmUocyxtKSsoZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uPT09XCJhcm91bmRcIj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGgpJiYoQT1wLnJvdW5kUGF0aENvcm5lcnMoQSxnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZy5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHg9dGhpcy5iYXJDdHg7Zy5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbyYmKHg9dGhpcy5iYXJDdHhbb10pLHgueEFycmoucHVzaChyKSx4LnhBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHgueEFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbY11bZF0pfXJldHVybntwYXRoVG86QSxwYXRoRnJvbTpsfX19LHtrZXk6XCJjaGVja1plcm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5zZXJpZXMsaT10aGlzLncsYT0wO2E8dC5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjx0W2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKXMrPXRbYV1bcl07cz09PTAmJnRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcy5wdXNoKGEpfX19LHtrZXk6XCJnZXRYRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDApfHxhcmd1bWVudHNbMl0/dDpudWxsO3JldHVybiBlIT1udWxsJiYoaT10K2UvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9lL3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvOjApKSxpfX0se2tleTpcImdldFlGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXT90Om51bGw7cmV0dXJuIGUhPW51bGwmJihpPXQtZS90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF0rMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9lL3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSksaX19LHtrZXk6XCJnZXRHb2FsVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzKXt2YXIgcj10aGlzLG49dGhpcy53LG89W10saD1mdW5jdGlvbihnLHApe3ZhciBmO28ucHVzaCgodGUoZj17fSxlLGU9PT1cInhcIj9yLmdldFhGb3JWYWx1ZShnLHQsITEpOnIuZ2V0WUZvclZhbHVlKGcsaSwhMSkpLHRlKGYsXCJhdHRyc1wiLHApLGYpKX07aWYobi5nbG9iYWxzLnNlcmllc0dvYWxzW2FdJiZuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10mJkFycmF5LmlzQXJyYXkobi5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdKSYmbi5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdLmZvckVhY2goZnVuY3Rpb24oZyl7aChnLnZhbHVlLGcpfSksdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5pc0R1bWJiZWxsJiZuLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoKXt2YXIgYz10aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzP3RoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM6bi5nbG9iYWxzLmNvbG9ycyxkPXtzdHJva2VIZWlnaHQ6ZT09PVwieFwiPzA6bi5nbG9iYWxzLm1hcmtlcnMuc2l6ZVthXSxzdHJva2VXaWR0aDplPT09XCJ4XCI/bi5nbG9iYWxzLm1hcmtlcnMuc2l6ZVthXTowLHN0cm9rZURhc2hBcnJheTowLHN0cm9rZUxpbmVDYXA6XCJyb3VuZFwiLHN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoY1thXSk/Y1thXVswXTpjW2FdfTtoKG4uZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2FdW3NdLGQpLGgobi5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2FdW3NdLFgoWCh7fSxkKSx7fSx7c3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShjW2FdKT9jW2FdWzFdOmNbYV19KSl9cmV0dXJuIG99fSx7a2V5OlwiZHJhd0dvYWxMaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5iYXJYUG9zaXRpb24saT1lLmJhcllQb3NpdGlvbixhPWUuZ29hbFgscz1lLmdvYWxZLHI9ZS5iYXJXaWR0aCxuPWUuYmFySGVpZ2h0LG89bmV3IE0odGhpcy5iYXJDdHguY3R4KSxoPW8uZ3JvdXAoe2NsYXNzTmFtZTpcImFwZXhjaGFydHMtYmFyLWdvYWxzLWdyb3Vwc1wifSk7aC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6aC5ub2RlfSksaC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdCh0aGlzLmJhckN0eC53Lmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBjPW51bGw7cmV0dXJuIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9BcnJheS5pc0FycmF5KGEpJiZhLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGc9ZC5hdHRycy5zdHJva2VIZWlnaHQhPT12b2lkIDA/ZC5hdHRycy5zdHJva2VIZWlnaHQ6bi8yLHA9aStnK24vMjtjPW8uZHJhd0xpbmUoZC54LHAtMipnLGQueCxwLGQuYXR0cnMuc3Ryb2tlQ29sb3I/ZC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsZC5hdHRycy5zdHJva2VEYXNoQXJyYXksZC5hdHRycy5zdHJva2VXaWR0aD9kLmF0dHJzLnN0cm9rZVdpZHRoOjIsZC5hdHRycy5zdHJva2VMaW5lQ2FwKSxoLmFkZChjKX0pOkFycmF5LmlzQXJyYXkocykmJnMuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZz1kLmF0dHJzLnN0cm9rZVdpZHRoIT09dm9pZCAwP2QuYXR0cnMuc3Ryb2tlV2lkdGg6ci8yLHA9dCtnK3IvMjtjPW8uZHJhd0xpbmUocC0yKmcsZC55LHAsZC55LGQuYXR0cnMuc3Ryb2tlQ29sb3I/ZC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsZC5hdHRycy5zdHJva2VEYXNoQXJyYXksZC5hdHRycy5zdHJva2VIZWlnaHQ/ZC5hdHRycy5zdHJva2VIZWlnaHQ6MixkLmF0dHJzLnN0cm9rZUxpbmVDYXApLGguYWRkKGMpfSksaH19LHtrZXk6XCJkcmF3QmFyU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcmV2UGF0aHMsaT1lLmN1cnJQYXRocyxhPWUuY29sb3Iscz10aGlzLncscj10Lngsbj10LngxLG89dC5iYXJZUG9zaXRpb24saD1pLngsYz1pLngxLGQ9aS5iYXJZUG9zaXRpb24sZz1vK2kuYmFySGVpZ2h0LHA9bmV3IE0odGhpcy5iYXJDdHguY3R4KSxmPW5ldyBQLGI9cC5tb3ZlKG4sZykrcC5saW5lKHIsZykrcC5saW5lKGgsZCkrcC5saW5lKGMsZCkrcC5saW5lKG4sZykrKHMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj09PVwiYXJvdW5kXCI/XCIgWlwiOlwiIHpcIik7cmV0dXJuIHAuZHJhd1BhdGgoe2Q6YixmaWxsOmYuc2hhZGVDb2xvciguNSxQLnJnYjJoZXgoYSkpLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpcImFwZXhjaGFydHMtYmFyLXNoYWRvd3NcIn0pfX0se2tleTpcImdldFplcm9WYWx1ZUVuY291bnRlcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmksaT1lLmosYT10aGlzLncscz0wLHI9MDtyZXR1cm4gYS5nbG9iYWxzLnNlcmllc1BlcmNlbnQuZm9yRWFjaChmdW5jdGlvbihuLG8pe25baV0mJnMrKyxvPHQmJm5baV09PT0wJiZyKyt9KSx7bm9uWmVyb0NvbHVtbnM6cyx6ZXJvRW5jb3VudGVyczpyfX19XSkseX0oKSxBZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9aS5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy5pc1JhbmdlQmFyPWkuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnRoaXMuaXNIb3Jpem9udGFsLHRoaXMuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmaS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzLHRoaXMuaXNGdW5uZWw9dGhpcy5iYXJPcHRpb25zLmlzRnVubmVsLHRoaXMueHlSYXRpb3M9dCx0aGlzLnh5UmF0aW9zIT09bnVsbCYmKHRoaXMueFJhdGlvPXQueFJhdGlvLHRoaXMueVJhdGlvPXQueVJhdGlvLHRoaXMuaW52ZXJ0ZWRYUmF0aW89dC5pbnZlcnRlZFhSYXRpbyx0aGlzLmludmVydGVkWVJhdGlvPXQuaW52ZXJ0ZWRZUmF0aW8sdGhpcy5iYXNlTGluZVk9dC5iYXNlTGluZVksdGhpcy5iYXNlTGluZUludmVydGVkWT10LmJhc2VMaW5lSW52ZXJ0ZWRZKSx0aGlzLnlheGlzSW5kZXg9MCx0aGlzLnNlcmllc0xlbj0wLHRoaXMucGF0aEFycj1bXTt2YXIgYT1uZXcgaWUodGhpcy5jdHgpO3RoaXMubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9YS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleChcImRlc2NcIixbXCJiYXJcIixcImNvbHVtblwiXSk7dmFyIHM9YS5nZXRCYXJTZXJpZXNJbmRpY2VzKCkscj1uZXcgcSh0aGlzLmN0eCk7dGhpcy5zdGFja2VkU2VyaWVzVG90YWxzPXIuZ2V0U3RhY2tlZFNlcmllc1RvdGFscyh0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoZnVuY3Rpb24obixvKXtyZXR1cm4gcy5pbmRleE9mKG8pPT09LTE/bzotMX0pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbiE9PS0xfSkpLHRoaXMuYmFySGVscGVycz1uZXcgRnQodGhpcyl9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPW5ldyBNKHRoaXMuY3R4KSxzPW5ldyBxKHRoaXMuY3R4LGkpO2U9cy5nZXRMb2dTZXJpZXMoZSksdGhpcy5zZXJpZXM9ZSx0aGlzLnlSYXRpbz1zLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKGUpO3ZhciByPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmdGhpcy50b3RhbEl0ZW1zPnRoaXMuYmFyT3B0aW9ucy5kYXRhTGFiZWxzLm1heEl0ZW1zJiZjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcgLSBBcGV4Q2hhcnRzXCIpO2Zvcih2YXIgbj0wLG89MDtuPGUubGVuZ3RoO24rKyxvKyspe3ZhciBoLGMsZCxnLHA9dm9pZCAwLGY9dm9pZCAwLGI9W10sbT1bXSx3PWkuZ2xvYmFscy5jb21ib0NoYXJ0cz90W25dOm4sQT1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIscmVsOm4rMSxzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1t3XSksXCJkYXRhOnJlYWxJbmRleFwiOnd9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhBLHcpLGVbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGw9MCx1PTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9dyksdGhpcy5pc1JldmVyc2VkPWkuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmkuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIHg9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtmPXgueSxsPXguYmFySGVpZ2h0LGM9eC55RGl2aXNpb24sZz14Lnplcm9XLHA9eC54LHU9eC5iYXJXaWR0aCxoPXgueERpdmlzaW9uLGQ9eC56ZXJvSCx0aGlzLmhvcml6b250YWx8fG0ucHVzaChwK3UvMik7dmFyIHY9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6d30pO2kuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6di5ub2RlfSksdi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBrPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksUz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNoYWRvd3NcIn0pO2kuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6Uy5ub2RlfSksUy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO2Zvcih2YXIgQz0wO0M8aS5nbG9iYWxzLmRhdGFQb2ludHM7QysrKXt2YXIgTD10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixDLHcpLEk9bnVsbCx6PXtpbmRleGVzOntpOm4sajpDLHJlYWxJbmRleDp3LGJjOm99LHg6cCx5OmYsc3Ryb2tlV2lkdGg6TCxlbFNlcmllczpBfTt0aGlzLmlzSG9yaXpvbnRhbD8oST10aGlzLmRyYXdCYXJQYXRocyhYKFgoe30seikse30se2JhckhlaWdodDpsLHplcm9XOmcseURpdmlzaW9uOmN9KSksdT10aGlzLnNlcmllc1tuXVtDXS90aGlzLmludmVydGVkWVJhdGlvKTooST10aGlzLmRyYXdDb2x1bW5QYXRocyhYKFgoe30seikse30se3hEaXZpc2lvbjpoLGJhcldpZHRoOnUsemVyb0g6ZH0pKSxsPXRoaXMuc2VyaWVzW25dW0NdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0pO3ZhciBUPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKGUsbixDLHcpO2lmKHRoaXMuaXNGdW5uZWwmJnRoaXMuYmFyT3B0aW9ucy5pc0Z1bm5lbDNkJiZ0aGlzLnBhdGhBcnIubGVuZ3RoJiZDPjApe3ZhciBFPXRoaXMuYmFySGVscGVycy5kcmF3QmFyU2hhZG93KHtjb2xvcjp0eXBlb2YgVD09XCJzdHJpbmdcIiYmKFQ9PW51bGw/dm9pZCAwOlQuaW5kZXhPZihcInVybFwiKSk9PT0tMT9UOlAuaGV4VG9SZ2JhKGkuZ2xvYmFscy5jb2xvcnNbbl0pLHByZXZQYXRoczp0aGlzLnBhdGhBcnJbdGhpcy5wYXRoQXJyLmxlbmd0aC0xXSxjdXJyUGF0aHM6SX0pO0UmJlMuYWRkKEUpfXRoaXMucGF0aEFyci5wdXNoKEkpO3ZhciBSPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246SS5iYXJZUG9zaXRpb24sZ29hbFg6SS5nb2FsWCxnb2FsWTpJLmdvYWxZLGJhckhlaWdodDpsLGJhcldpZHRoOnV9KTtSJiZrLmFkZChSKSxmPUkueSxwPUkueCxDPjAmJm0ucHVzaChwK3UvMiksYi5wdXNoKGYpLHRoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dyxwYXRoRmlsbDpULGo6QyxpOm4scGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6TCxlbFNlcmllczpBLHg6cCx5OmYsc2VyaWVzOmUsYmFySGVpZ2h0OkkuYmFySGVpZ2h0P0kuYmFySGVpZ2h0OmwsYmFyV2lkdGg6SS5iYXJXaWR0aD9JLmJhcldpZHRoOnUsZWxEYXRhTGFiZWxzV3JhcDp2LGVsR29hbHNNYXJrZXJzOmssZWxCYXJTaGFkb3dzOlMsdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6XCJiYXJcIn0pfWkuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ddPW0saS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbd109YixyLmFkZChBKX1yZXR1cm4gcn19LHtrZXk6XCJyZW5kZXJTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWxJbmRleCxpPWUucGF0aEZpbGwsYT1lLmxpbmVGaWxsLHM9ZS5qLHI9ZS5pLG49ZS5ncm91cEluZGV4LG89ZS5wYXRoRnJvbSxoPWUucGF0aFRvLGM9ZS5zdHJva2VXaWR0aCxkPWUuZWxTZXJpZXMsZz1lLngscD1lLnksZj1lLnkxLGI9ZS55MixtPWUuc2VyaWVzLHc9ZS5iYXJIZWlnaHQsQT1lLmJhcldpZHRoLGw9ZS5iYXJYUG9zaXRpb24sdT1lLmJhcllQb3NpdGlvbix4PWUuZWxEYXRhTGFiZWxzV3JhcCx2PWUuZWxHb2Fsc01hcmtlcnMsaz1lLmVsQmFyU2hhZG93cyxTPWUudmlzaWJsZVNlcmllcyxDPWUudHlwZSxMPXRoaXMudyxJPW5ldyBNKHRoaXMuY3R4KTthfHwoYT10aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/TC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbc106TC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbdF0pLEwuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdJiZMLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciYmKGE9TC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3IpLHRoaXMuaXNOdWxsVmFsdWUmJihpPVwibm9uZVwiKTt2YXIgej1zL0wuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSooTC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC9MLmdsb2JhbHMuZGF0YVBvaW50cykvMi40LFQ9SS5yZW5kZXJQYXRocyh7aTpyLGo6cyxyZWFsSW5kZXg6dCxwYXRoRnJvbTpvLHBhdGhUbzpoLHN0cm9rZTphLHN0cm9rZVdpZHRoOmMsc3Ryb2tlTGluZUNhcDpMLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOmksYW5pbWF0aW9uRGVsYXk6eixpbml0aWFsU3BlZWQ6TC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6TC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KEMsXCItYXJlYVwiKX0pO1QuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoTC5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgRT1MLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7RS5jb3VudD4wJiZzPj1MLmdsb2JhbHMuZGF0YVBvaW50cy1FLmNvdW50JiYoVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIixFLmRhc2hBcnJheSksVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLEUuc3Ryb2tlV2lkdGgpLFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIixFLmZpbGxPcGFjaXR5KSksZiE9PXZvaWQgMCYmYiE9PXZvaWQgMCYmKFQuYXR0cihcImRhdGEtcmFuZ2UteTFcIixmKSxULmF0dHIoXCJkYXRhLXJhbmdlLXkyXCIsYikpLG5ldyAkKHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIoVCx0LHMpLGQuYWRkKFQpO3ZhciBSPW5ldyBZdCh0aGlzKS5oYW5kbGVCYXJEYXRhTGFiZWxzKHt4OmcseTpwLHkxOmYseTI6YixpOnIsajpzLHNlcmllczptLHJlYWxJbmRleDp0LGdyb3VwSW5kZXg6bixiYXJIZWlnaHQ6dyxiYXJXaWR0aDpBLGJhclhQb3NpdGlvbjpsLGJhcllQb3NpdGlvbjp1LHJlbmRlcmVkUGF0aDpULHZpc2libGVTZXJpZXM6U30pO3JldHVybiBSLmRhdGFMYWJlbHMhPT1udWxsJiZ4LmFkZChSLmRhdGFMYWJlbHMpLFIudG90YWxEYXRhTGFiZWxzJiZ4LmFkZChSLnRvdGFsRGF0YUxhYmVscyksZC5hZGQoeCksdiYmZC5hZGQodiksayYmZC5hZGQoayksZH19LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPWUuaW5kZXhlcyxhPWUuYmFySGVpZ2h0LHM9ZS5zdHJva2VXaWR0aCxyPWUuemVyb1csbj1lLngsbz1lLnksaD1lLnlEaXZpc2lvbixjPWUuZWxTZXJpZXMsZD10aGlzLncsZz1pLmkscD1pLmo7aWYoZC5nbG9iYWxzLmlzWE51bWVyaWMpdD0obz0oZC5nbG9iYWxzLnNlcmllc1hbZ11bcF0tZC5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tYSkrYSp0aGlzLnZpc2libGVJO2Vsc2UgaWYoZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgZj0wLGI9MDtkLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7d1twXSYmZisrLEE8ZyYmd1twXT09PTAmJmIrK30pLGY+MCYmKGE9dGhpcy5zZXJpZXNMZW4qYS9mKSx0PW8rYSp0aGlzLnZpc2libGVJLHQtPWEqYn1lbHNlIHQ9bythKnRoaXMudmlzaWJsZUk7dGhpcy5pc0Z1bm5lbCYmKHItPSh0aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2ddW3BdLHIpLXIpLzIpLG49dGhpcy5iYXJIZWxwZXJzLmdldFhGb3JWYWx1ZSh0aGlzLnNlcmllc1tnXVtwXSxyKTt2YXIgbT10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjp0LGJhckhlaWdodDphLHgxOnIseDI6bixzdHJva2VXaWR0aDpzLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpnLGo6cCx3OmR9KTtyZXR1cm4gZC5nbG9iYWxzLmlzWE51bWVyaWN8fChvKz1oKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpwLGk6Zyx5MTp0LWEqdGhpcy52aXNpYmxlSSx5MjphKnRoaXMuc2VyaWVzTGVuLGVsU2VyaWVzOmN9KSx7cGF0aFRvOm0ucGF0aFRvLHBhdGhGcm9tOm0ucGF0aEZyb20seDE6cix4Om4seTpvLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLHIsbnVsbCxnLHApLGJhcllQb3NpdGlvbjp0LGJhckhlaWdodDphfX19LHtrZXk6XCJkcmF3Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPWUuaW5kZXhlcyxhPWUueCxzPWUueSxyPWUueERpdmlzaW9uLG49ZS5iYXJXaWR0aCxvPWUuemVyb0gsaD1lLnN0cm9rZVdpZHRoLGM9ZS5lbFNlcmllcyxkPXRoaXMudyxnPWkucmVhbEluZGV4LHA9aS5pLGY9aS5qLGI9aS5iYztpZihkLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIG09dGhpcy5nZXRCYXJYRm9yTnVtZXJpY1hBeGlzKHt4OmEsajpmLHJlYWxJbmRleDpnLGJhcldpZHRoOm59KTthPW0ueCx0PW0uYmFyWFBvc2l0aW9ufWVsc2UgaWYoZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgdz10aGlzLmJhckhlbHBlcnMuZ2V0WmVyb1ZhbHVlRW5jb3VudGVycyh7aTpwLGo6Zn0pLEE9dy5ub25aZXJvQ29sdW1ucyxsPXcuemVyb0VuY291bnRlcnM7QT4wJiYobj10aGlzLnNlcmllc0xlbipuL0EpLHQ9YStuKnRoaXMudmlzaWJsZUksdC09bipsfWVsc2UgdD1hK24qdGhpcy52aXNpYmxlSTtzPXRoaXMuYmFySGVscGVycy5nZXRZRm9yVmFsdWUodGhpcy5zZXJpZXNbcF1bZl0sbyk7dmFyIHU9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246dCxiYXJXaWR0aDpuLHkxOm8seTI6cyxzdHJva2VXaWR0aDpoLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpwLGo6Zix3OmR9KTtyZXR1cm4gZC5nbG9iYWxzLmlzWE51bWVyaWN8fChhKz1yKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6YixqOmYsaTpwLHgxOnQtaC8yLW4qdGhpcy52aXNpYmxlSSx4MjpuKnRoaXMuc2VyaWVzTGVuK2gvMixlbFNlcmllczpjfSkse3BhdGhUbzp1LnBhdGhUbyxwYXRoRnJvbTp1LnBhdGhGcm9tLHg6YSx5OnMsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLHAsZiksYmFyWFBvc2l0aW9uOnQsYmFyV2lkdGg6bn19fSx7a2V5OlwiZ2V0QmFyWEZvck51bWVyaWNYQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUueCxpPWUuYmFyV2lkdGgsYT1lLnJlYWxJbmRleCxzPWUuaixyPXRoaXMudyxuPWE7cmV0dXJuIHIuZ2xvYmFscy5zZXJpZXNYW2FdLmxlbmd0aHx8KG49ci5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXgpLHIuZ2xvYmFscy5zZXJpZXNYW25dW3NdJiYodD0oci5nbG9iYWxzLnNlcmllc1hbbl1bc10tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLWkqdGhpcy5zZXJpZXNMZW4vMikse2JhclhQb3NpdGlvbjp0K2kqdGhpcy52aXNpYmxlSSx4OnR9fX0se2tleTpcImdldFByZXZpb3VzUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpLGE9dGhpcy53LHM9MDtzPGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtzKyspe3ZhciByPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdO3IucGF0aHMmJnIucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KHIucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KGUsMTApJiZhLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1t0XSE9PXZvaWQgMCYmKGk9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbdF0uZCl9cmV0dXJuIGl9fV0pLHl9KCksb3Q9ZnVuY3Rpb24oeSl7dWUodCxBZSk7dmFyIGU9cGUodCk7ZnVuY3Rpb24gdCgpe3JldHVybiBGKHRoaXMsdCksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIFkodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihpLGEpe3ZhciBzPXRoaXMscj10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgTSh0aGlzLmN0eCksdGhpcy5iYXI9bmV3IEFlKHRoaXMuY3R4LHRoaXMueHlSYXRpb3MpO3ZhciBuPW5ldyBxKHRoaXMuY3R4LHIpO2k9bi5nZXRMb2dTZXJpZXMoaSksdGhpcy55UmF0aW89bi5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyhpKSxyLmNvbmZpZy5jaGFydC5zdGFja1R5cGU9PT1cIjEwMCVcIiYmKGk9ci5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksdGhpcy5zZXJpZXM9aSx0aGlzLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFycyh0aGlzKTtmb3IodmFyIG89dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksaD0wLGM9MCxkPWZ1bmN0aW9uKGYsYil7dmFyIG09dm9pZCAwLHc9dm9pZCAwLEE9dm9pZCAwLGw9dm9pZCAwLHU9LTE7cy5ncm91cEN0eD1zLHIuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaChmdW5jdGlvbihWLGope1YuaW5kZXhPZihyLmNvbmZpZy5zZXJpZXNbZl0ubmFtZSk+LTEmJih1PWopfSksdSE9PS0xJiYocy5ncm91cEN0eD1zW3IuZ2xvYmFscy5zZXJpZXNHcm91cHNbdV1dKTt2YXIgeD1bXSx2PVtdLGs9ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2FbZl06ZjtzLnlSYXRpby5sZW5ndGg+MSYmKHMueWF4aXNJbmRleD1rKSxzLmlzUmV2ZXJzZWQ9ci5jb25maWcueWF4aXNbcy55YXhpc0luZGV4XSYmci5jb25maWcueWF4aXNbcy55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgUz1zLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNba10pLHJlbDpmKzEsXCJkYXRhOnJlYWxJbmRleFwiOmt9KTtzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhTLGspO3ZhciBDPXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOmt9KSxMPXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksST0wLHo9MCxUPXMuaW5pdGlhbFBvc2l0aW9ucyhoLGMsbSx3LEEsbCk7Yz1ULnksST1ULmJhckhlaWdodCx3PVQueURpdmlzaW9uLGw9VC56ZXJvVyxoPVQueCx6PVQuYmFyV2lkdGgsbT1ULnhEaXZpc2lvbixBPVQuemVyb0gsci5nbG9iYWxzLmJhckhlaWdodD1JLHIuZ2xvYmFscy5iYXJXaWR0aD16LHMuYmFySGVscGVycy5pbml0aWFsaXplU3RhY2tlZFhZVmFycyhzKSxzLmdyb3VwQ3R4LnByZXZZLmxlbmd0aD09PTEmJnMuZ3JvdXBDdHgucHJldllbMF0uZXZlcnkoZnVuY3Rpb24oVil7cmV0dXJuIGlzTmFOKFYpfSkmJihzLmdyb3VwQ3R4LnByZXZZWzBdPXMuZ3JvdXBDdHgucHJldllbMF0ubWFwKGZ1bmN0aW9uKFYpe3JldHVybiBBfSkscy5ncm91cEN0eC5wcmV2WUZbMF09cy5ncm91cEN0eC5wcmV2WUZbMF0ubWFwKGZ1bmN0aW9uKFYpe3JldHVybiAwfSkpO2Zvcih2YXIgRT0wO0U8ci5nbG9iYWxzLmRhdGFQb2ludHM7RSsrKXt2YXIgUj1zLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgoZixFLGspLE89e2luZGV4ZXM6e2k6ZixqOkUscmVhbEluZGV4OmssYmM6Yn0sc3Ryb2tlV2lkdGg6Uix4OmgseTpjLGVsU2VyaWVzOlMsZ3JvdXBJbmRleDp1LHNlcmllc0dyb3VwOnIuZ2xvYmFscy5zZXJpZXNHcm91cHNbdV19LEQ9bnVsbDtzLmlzSG9yaXpvbnRhbD8oRD1zLmRyYXdTdGFja2VkQmFyUGF0aHMoWChYKHt9LE8pLHt9LHt6ZXJvVzpsLGJhckhlaWdodDpJLHlEaXZpc2lvbjp3fSkpLHo9cy5zZXJpZXNbZl1bRV0vcy5pbnZlcnRlZFlSYXRpbyk6KEQ9cy5kcmF3U3RhY2tlZENvbHVtblBhdGhzKFgoWCh7fSxPKSx7fSx7eERpdmlzaW9uOm0sYmFyV2lkdGg6eix6ZXJvSDpBfSkpLEk9cy5zZXJpZXNbZl1bRV0vcy55UmF0aW9bcy55YXhpc0luZGV4XSk7dmFyIFc9cy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkQuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpELmJhcllQb3NpdGlvbixnb2FsWDpELmdvYWxYLGdvYWxZOkQuZ29hbFksYmFySGVpZ2h0OkksYmFyV2lkdGg6en0pO1cmJkwuYWRkKFcpLGM9RC55LGg9RC54LHgucHVzaChoKSx2LnB1c2goYyk7dmFyIE49cy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IoaSxmLEUsayk7Uz1zLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OmsscGF0aEZpbGw6TixqOkUsaTpmLGdyb3VwSW5kZXg6dSxwYXRoRnJvbTpELnBhdGhGcm9tLHBhdGhUbzpELnBhdGhUbyxzdHJva2VXaWR0aDpSLGVsU2VyaWVzOlMseDpoLHk6YyxzZXJpZXM6aSxiYXJIZWlnaHQ6SSxiYXJXaWR0aDp6LGVsRGF0YUxhYmVsc1dyYXA6QyxlbEdvYWxzTWFya2VyczpMLHR5cGU6XCJiYXJcIix2aXNpYmxlU2VyaWVzOjB9KX1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1trXT14LHIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2tdPXYscy5ncm91cEN0eC5wcmV2WS5wdXNoKHMuZ3JvdXBDdHgueUFycmopLHMuZ3JvdXBDdHgucHJldllGLnB1c2gocy5ncm91cEN0eC55QXJyakYpLHMuZ3JvdXBDdHgucHJldllWYWwucHVzaChzLmdyb3VwQ3R4LnlBcnJqVmFsKSxzLmdyb3VwQ3R4LnByZXZYLnB1c2gocy5ncm91cEN0eC54QXJyaikscy5ncm91cEN0eC5wcmV2WEYucHVzaChzLmdyb3VwQ3R4LnhBcnJqRikscy5ncm91cEN0eC5wcmV2WFZhbC5wdXNoKHMuZ3JvdXBDdHgueEFycmpWYWwpLG8uYWRkKFMpfSxnPTAscD0wO2c8aS5sZW5ndGg7ZysrLHArKylkKGcscCk7cmV0dXJuIG99fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGksYSxzLHIsbixvKXt2YXIgaCxjLGQsZyxwPXRoaXMudztyZXR1cm4gdGhpcy5pc0hvcml6b250YWw/KGQ9KGQ9cj1wLmdsb2JhbHMuZ3JpZEhlaWdodC9wLmdsb2JhbHMuZGF0YVBvaW50cykqcGFyc2VJbnQocC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwxMCkvMTAwLFN0cmluZyhwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKT09PS0xJiYoZD1wYXJzZUludChwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKSksbz10aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZK3AuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmlzUmV2ZXJzZWQ/cC5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZUludmVydGVkWTowKSxhPShyLWQpLzIpOihnPXM9cC5nbG9iYWxzLmdyaWRXaWR0aC9wLmdsb2JhbHMuZGF0YVBvaW50cyxnPXAuZ2xvYmFscy5pc1hOdW1lcmljJiZwLmdsb2JhbHMuZGF0YVBvaW50cz4xPyhzPXAuZ2xvYmFscy5taW5YRGlmZi90aGlzLnhSYXRpbykqcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDA6ZypwYXJzZUludChwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCxTdHJpbmcocC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKT09PS0xJiYoZz1wYXJzZUludChwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApKSxuPXAuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9wLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSxpPXAuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhzLWcpLzIpLHt4OmkseTphLHlEaXZpc2lvbjpyLHhEaXZpc2lvbjpzLGJhckhlaWdodDooaD1wLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSE9PW51bGwmJmghPT12b2lkIDAmJmgubGVuZ3RoP2QvcC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGg6ZCxiYXJXaWR0aDooYz1wLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSE9PW51bGwmJmMhPT12b2lkIDAmJmMubGVuZ3RoP2cvcC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGg6Zyx6ZXJvSDpuLHplcm9XOm99fX0se2tleTpcImRyYXdTdGFja2VkQmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXtmb3IodmFyIGEscz1pLmluZGV4ZXMscj1pLmJhckhlaWdodCxuPWkuc3Ryb2tlV2lkdGgsbz1pLnplcm9XLGg9aS54LGM9aS55LGQ9aS5ncm91cEluZGV4LGc9aS5zZXJpZXNHcm91cCxwPWkueURpdmlzaW9uLGY9aS5lbFNlcmllcyxiPXRoaXMudyxtPWMrKGQhPT0tMT9kKnI6MCksdz1zLmksQT1zLmosbD0wLHU9MDt1PHRoaXMuZ3JvdXBDdHgucHJldlhGLmxlbmd0aDt1KyspbCs9dGhpcy5ncm91cEN0eC5wcmV2WEZbdV1bQV07dmFyIHg9dztpZihnJiYoeD1nLmluZGV4T2YoYi5jb25maWcuc2VyaWVzW3ddLm5hbWUpKSx4PjApe3ZhciB2PW87dGhpcy5ncm91cEN0eC5wcmV2WFZhbFt4LTFdW0FdPDA/dj10aGlzLnNlcmllc1t3XVtBXT49MD90aGlzLmdyb3VwQ3R4LnByZXZYW3gtMV1bQV0rbC0yKih0aGlzLmlzUmV2ZXJzZWQ/bDowKTp0aGlzLmdyb3VwQ3R4LnByZXZYW3gtMV1bQV06dGhpcy5ncm91cEN0eC5wcmV2WFZhbFt4LTFdW0FdPj0wJiYodj10aGlzLnNlcmllc1t3XVtBXT49MD90aGlzLmdyb3VwQ3R4LnByZXZYW3gtMV1bQV06dGhpcy5ncm91cEN0eC5wcmV2WFt4LTFdW0FdLWwrMioodGhpcy5pc1JldmVyc2VkP2w6MCkpLGE9dn1lbHNlIGE9bztoPXRoaXMuc2VyaWVzW3ddW0FdPT09bnVsbD9hOmErdGhpcy5zZXJpZXNbd11bQV0vdGhpcy5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbd11bQV0vdGhpcy5pbnZlcnRlZFlSYXRpbzowKTt2YXIgaz10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjptLGJhckhlaWdodDpyLHgxOmEseDI6aCxzdHJva2VXaWR0aDpuLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6cy5yZWFsSW5kZXgsc2VyaWVzR3JvdXA6ZyxpOncsajpBLHc6Yn0pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpBLGk6dyx5MTptLHkyOnIsZWxTZXJpZXM6Zn0pLGMrPXAse3BhdGhUbzprLnBhdGhUbyxwYXRoRnJvbTprLnBhdGhGcm9tLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLG8sbnVsbCx3LEEpLGJhcllQb3NpdGlvbjptLHg6aCx5OmN9fX0se2tleTpcImRyYXdTdGFja2VkQ29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmluZGV4ZXMscz1pLngscj1pLnksbj1pLnhEaXZpc2lvbixvPWkuYmFyV2lkdGgsaD1pLnplcm9ILGM9aS5ncm91cEluZGV4LGQ9aS5zZXJpZXNHcm91cCxnPWkuZWxTZXJpZXMscD10aGlzLncsZj1hLmksYj1hLmosbT1hLmJjO2lmKHAuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgdz1wLmdsb2JhbHMuc2VyaWVzWFtmXVtiXTt3fHwodz0wKSxzPSh3LXAuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1vLzIscC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgmJihzPSh3LXAuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1vLzIqcC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgpfWZvcih2YXIgQSxsPXMrKGMhPT0tMT9jKm86MCksdT0wLHg9MDt4PHRoaXMuZ3JvdXBDdHgucHJldllGLmxlbmd0aDt4KyspdSs9aXNOYU4odGhpcy5ncm91cEN0eC5wcmV2WUZbeF1bYl0pPzA6dGhpcy5ncm91cEN0eC5wcmV2WUZbeF1bYl07dmFyIHY9ZjtpZihkJiYodj1kLmluZGV4T2YocC5jb25maWcuc2VyaWVzW2ZdLm5hbWUpKSx2PjAmJiFwLmdsb2JhbHMuaXNYTnVtZXJpY3x8dj4wJiZwLmdsb2JhbHMuaXNYTnVtZXJpYyYmcC5nbG9iYWxzLnNlcmllc1hbZi0xXVtiXT09PXAuZ2xvYmFscy5zZXJpZXNYW2ZdW2JdKXt2YXIgayxTLEMsTD1NYXRoLm1pbih0aGlzLnlSYXRpby5sZW5ndGgrMSxmKzEpO2lmKHRoaXMuZ3JvdXBDdHgucHJldllbdi0xXSE9PXZvaWQgMCYmdGhpcy5ncm91cEN0eC5wcmV2WVt2LTFdLmxlbmd0aClmb3IodmFyIEk9MTtJPEw7SSsrKXt2YXIgejtpZighaXNOYU4oKHo9dGhpcy5ncm91cEN0eC5wcmV2WVt2LUldKT09PW51bGx8fHo9PT12b2lkIDA/dm9pZCAwOnpbYl0pKXtDPXRoaXMuZ3JvdXBDdHgucHJldllbdi1JXVtiXTticmVha319Zm9yKHZhciBUPTE7VDxMO1QrKyl7dmFyIEUsUjtpZigoKEU9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFt2LVRdKT09PW51bGx8fEU9PT12b2lkIDA/dm9pZCAwOkVbYl0pPDApe1M9dGhpcy5zZXJpZXNbZl1bYl0+PTA/Qy11KzIqKHRoaXMuaXNSZXZlcnNlZD91OjApOkM7YnJlYWt9aWYoKChSPXRoaXMuZ3JvdXBDdHgucHJldllWYWxbdi1UXSk9PT1udWxsfHxSPT09dm9pZCAwP3ZvaWQgMDpSW2JdKT49MCl7Uz10aGlzLnNlcmllc1tmXVtiXT49MD9DOkMrdS0yKih0aGlzLmlzUmV2ZXJzZWQ/dTowKTticmVha319Uz09PXZvaWQgMCYmKFM9cC5nbG9iYWxzLmdyaWRIZWlnaHQpLEE9KGs9dGhpcy5ncm91cEN0eC5wcmV2WUZbMF0pIT09bnVsbCYmayE9PXZvaWQgMCYmay5ldmVyeShmdW5jdGlvbihEKXtyZXR1cm4gRD09PTB9KSYmdGhpcy5ncm91cEN0eC5wcmV2WUYuc2xpY2UoMSx2KS5ldmVyeShmdW5jdGlvbihEKXtyZXR1cm4gRC5ldmVyeShmdW5jdGlvbihXKXtyZXR1cm4gaXNOYU4oVyl9KX0pP2g6U31lbHNlIEE9aDtyPXRoaXMuc2VyaWVzW2ZdW2JdP0EtdGhpcy5zZXJpZXNbZl1bYl0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbZl1bYl0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XTowKTpBO3ZhciBPPXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOmwsYmFyV2lkdGg6byx5MTpBLHkyOnIseVJhdGlvOnRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXMsc2VyaWVzR3JvdXA6ZCxyZWFsSW5kZXg6YS5yZWFsSW5kZXgsaTpmLGo6Yix3OnB9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2JjOm0sajpiLGk6Zix4MTpsLHgyOm8sZWxTZXJpZXM6Z30pLHMrPW4se3BhdGhUbzpPLnBhdGhUbyxwYXRoRnJvbTpPLnBhdGhGcm9tLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsaCxmLGIpLGJhclhQb3NpdGlvbjpsLHg6cC5nbG9iYWxzLmlzWE51bWVyaWM/cy1uOnMseTpyfX19XSksdH0oKSxqZT1mdW5jdGlvbih5KXt1ZSh0LEFlKTt2YXIgZT1wZSh0KTtmdW5jdGlvbiB0KCl7cmV0dXJuIEYodGhpcyx0KSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gWSh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGksYSxzKXt2YXIgcj10aGlzLG49dGhpcy53LG89bmV3IE0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLmNvbWJvQ2hhcnRzP2E6bi5jb25maWcuY2hhcnQudHlwZSxjPW5ldyBzZSh0aGlzLmN0eCk7dGhpcy5jYW5kbGVzdGlja09wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljayx0aGlzLmJveE9wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5ib3hQbG90LHRoaXMuaXNIb3Jpem9udGFsPW4uY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsO3ZhciBkPW5ldyBxKHRoaXMuY3R4LG4pO2k9ZC5nZXRMb2dTZXJpZXMoaSksdGhpcy5zZXJpZXM9aSx0aGlzLnlSYXRpbz1kLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKGkpO2Zvcih2YXIgZz1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KGgsXCItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIil9KSxwPWZ1bmN0aW9uKGIpe3IuaXNCb3hQbG90PW4uY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcInx8bi5jb25maWcuc2VyaWVzW2JdLnR5cGU9PT1cImJveFBsb3RcIjt2YXIgbSx3LEEsbCx1PXZvaWQgMCx4PXZvaWQgMCx2PVtdLGs9W10sUz1uLmdsb2JhbHMuY29tYm9DaGFydHM/c1tiXTpiLEM9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcobi5nbG9iYWxzLnNlcmllc05hbWVzW1NdKSxyZWw6YisxLFwiZGF0YTpyZWFsSW5kZXhcIjpTfSk7ci5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoQyxTKSxpW2JdLmxlbmd0aD4wJiYoci52aXNpYmxlST1yLnZpc2libGVJKzEpO3ZhciBMLEk7ci55UmF0aW8ubGVuZ3RoPjEmJihyLnlheGlzSW5kZXg9Uyk7dmFyIHo9ci5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTt4PXoueSxMPXouYmFySGVpZ2h0LHc9ei55RGl2aXNpb24sbD16Lnplcm9XLHU9ei54LEk9ei5iYXJXaWR0aCxtPXoueERpdmlzaW9uLEE9ei56ZXJvSCxrLnB1c2godStJLzIpO2Zvcih2YXIgVD1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjpTfSksRT1mdW5jdGlvbihPKXt2YXIgRD1yLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgoYixPLFMpLFc9bnVsbCxOPXtpbmRleGVzOntpOmIsajpPLHJlYWxJbmRleDpTfSx4OnUseTp4LHN0cm9rZVdpZHRoOkQsZWxTZXJpZXM6Q307Vz1yLmlzSG9yaXpvbnRhbD9yLmRyYXdIb3Jpem9udGFsQm94UGF0aHMoWChYKHt9LE4pLHt9LHt5RGl2aXNpb246dyxiYXJIZWlnaHQ6TCx6ZXJvVzpsfSkpOnIuZHJhd1ZlcnRpY2FsQm94UGF0aHMoWChYKHt9LE4pLHt9LHt4RGl2aXNpb246bSxiYXJXaWR0aDpJLHplcm9IOkF9KSkseD1XLnksdT1XLngsTz4wJiZrLnB1c2godStJLzIpLHYucHVzaCh4KSxXLnBhdGhUby5mb3JFYWNoKGZ1bmN0aW9uKFYsail7dmFyIHJlPSFyLmlzQm94UGxvdCYmci5jYW5kbGVzdGlja09wdGlvbnMud2ljay51c2VGaWxsQ29sb3I/Vy5jb2xvcltqXTpuLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tiXSxlZT1jLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6UyxkYXRhUG9pbnRJbmRleDpPLGNvbG9yOlcuY29sb3Jbal0sdmFsdWU6aVtiXVtPXX0pO3IucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6UyxwYXRoRmlsbDplZSxsaW5lRmlsbDpyZSxqOk8saTpiLHBhdGhGcm9tOlcucGF0aEZyb20scGF0aFRvOlYsc3Ryb2tlV2lkdGg6RCxlbFNlcmllczpDLHg6dSx5Ongsc2VyaWVzOmksYmFySGVpZ2h0OkwsYmFyV2lkdGg6SSxlbERhdGFMYWJlbHNXcmFwOlQsdmlzaWJsZVNlcmllczpyLnZpc2libGVJLHR5cGU6bi5jb25maWcuY2hhcnQudHlwZX0pfSl9LFI9MDtSPG4uZ2xvYmFscy5kYXRhUG9pbnRzO1IrKylFKFIpO24uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW1NdPWssbi5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbU109dixnLmFkZChDKX0sZj0wO2Y8aS5sZW5ndGg7ZisrKXAoZik7cmV0dXJuIGd9fSx7a2V5OlwiZHJhd1ZlcnRpY2FsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmluZGV4ZXMscz1pLng7aS55O3ZhciByPWkueERpdmlzaW9uLG49aS5iYXJXaWR0aCxvPWkuemVyb0gsaD1pLnN0cm9rZVdpZHRoLGM9dGhpcy53LGQ9bmV3IE0odGhpcy5jdHgpLGc9YS5pLHA9YS5qLGY9ITAsYj1jLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMudXB3YXJkLG09Yy5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2suY29sb3JzLmRvd253YXJkLHc9XCJcIjt0aGlzLmlzQm94UGxvdCYmKHc9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBBPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sbD1hLnJlYWxJbmRleCx1PXRoaXMuZ2V0T0hMQ1ZhbHVlKGwscCkseD1vLHY9bzt1Lm8+dS5jJiYoZj0hMSk7dmFyIGs9TWF0aC5taW4odS5vLHUuYyksUz1NYXRoLm1heCh1Lm8sdS5jKSxDPXUubTtjLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGMuZ2xvYmFscy5zZXJpZXNYW2xdW3BdLWMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1uLzIpO3ZhciBMPXMrbip0aGlzLnZpc2libGVJO3RoaXMuc2VyaWVzW2ddW3BdPT09dm9pZCAwfHx0aGlzLnNlcmllc1tnXVtwXT09PW51bGw/KGs9byxTPW8pOihrPW8tay9BLFM9by1TL0EseD1vLXUuaC9BLHY9by11LmwvQSxDPW8tdS5tL0EpO3ZhciBJPWQubW92ZShMLG8pLHo9ZC5tb3ZlKEwrbi8yLGspO3JldHVybiBjLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHo9dGhpcy5nZXRQcmV2aW91c1BhdGgobCxwLCEwKSksST10aGlzLmlzQm94UGxvdD9bZC5tb3ZlKEwsaykrZC5saW5lKEwrbi8yLGspK2QubGluZShMK24vMix4KStkLmxpbmUoTCtuLzQseCkrZC5saW5lKEwrbi1uLzQseCkrZC5saW5lKEwrbi8yLHgpK2QubGluZShMK24vMixrKStkLmxpbmUoTCtuLGspK2QubGluZShMK24sQykrZC5saW5lKEwsQykrZC5saW5lKEwsaytoLzIpLGQubW92ZShMLEMpK2QubGluZShMK24sQykrZC5saW5lKEwrbixTKStkLmxpbmUoTCtuLzIsUykrZC5saW5lKEwrbi8yLHYpK2QubGluZShMK24tbi80LHYpK2QubGluZShMK24vNCx2KStkLmxpbmUoTCtuLzIsdikrZC5saW5lKEwrbi8yLFMpK2QubGluZShMLFMpK2QubGluZShMLEMpK1wielwiXTpbZC5tb3ZlKEwsUykrZC5saW5lKEwrbi8yLFMpK2QubGluZShMK24vMix4KStkLmxpbmUoTCtuLzIsUykrZC5saW5lKEwrbixTKStkLmxpbmUoTCtuLGspK2QubGluZShMK24vMixrKStkLmxpbmUoTCtuLzIsdikrZC5saW5lKEwrbi8yLGspK2QubGluZShMLGspK2QubGluZShMLFMtaC8yKV0seis9ZC5tb3ZlKEwsayksYy5nbG9iYWxzLmlzWE51bWVyaWN8fChzKz1yKSx7cGF0aFRvOkkscGF0aEZyb206eix4OnMseTpTLGJhclhQb3NpdGlvbjpMLGNvbG9yOnRoaXMuaXNCb3hQbG90P3c6Zj9bYl06W21dfX19LHtrZXk6XCJkcmF3SG9yaXpvbnRhbEJveFBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9aS5pbmRleGVzO2kueDt2YXIgcz1pLnkscj1pLnlEaXZpc2lvbixuPWkuYmFySGVpZ2h0LG89aS56ZXJvVyxoPWkuc3Ryb2tlV2lkdGgsYz10aGlzLncsZD1uZXcgTSh0aGlzLmN0eCksZz1hLmkscD1hLmosZj10aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyO3RoaXMuaXNCb3hQbG90JiYoZj1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGI9dGhpcy5pbnZlcnRlZFlSYXRpbyxtPWEucmVhbEluZGV4LHc9dGhpcy5nZXRPSExDVmFsdWUobSxwKSxBPW8sbD1vLHU9TWF0aC5taW4ody5vLHcuYykseD1NYXRoLm1heCh3Lm8sdy5jKSx2PXcubTtjLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGMuZ2xvYmFscy5zZXJpZXNYW21dW3BdLWMuZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLW4vMik7dmFyIGs9cytuKnRoaXMudmlzaWJsZUk7dGhpcy5zZXJpZXNbZ11bcF09PT12b2lkIDB8fHRoaXMuc2VyaWVzW2ddW3BdPT09bnVsbD8odT1vLHg9byk6KHU9byt1L2IseD1vK3gvYixBPW8rdy5oL2IsbD1vK3cubC9iLHY9byt3Lm0vYik7dmFyIFM9ZC5tb3ZlKG8sayksQz1kLm1vdmUodSxrK24vMik7cmV0dXJuIGMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoQz10aGlzLmdldFByZXZpb3VzUGF0aChtLHAsITApKSxTPVtkLm1vdmUodSxrKStkLmxpbmUodSxrK24vMikrZC5saW5lKEEsaytuLzIpK2QubGluZShBLGsrbi8yLW4vNCkrZC5saW5lKEEsaytuLzIrbi80KStkLmxpbmUoQSxrK24vMikrZC5saW5lKHUsaytuLzIpK2QubGluZSh1LGsrbikrZC5saW5lKHYsaytuKStkLmxpbmUodixrKStkLmxpbmUodStoLzIsayksZC5tb3ZlKHYsaykrZC5saW5lKHYsaytuKStkLmxpbmUoeCxrK24pK2QubGluZSh4LGsrbi8yKStkLmxpbmUobCxrK24vMikrZC5saW5lKGwsaytuLW4vNCkrZC5saW5lKGwsaytuLzQpK2QubGluZShsLGsrbi8yKStkLmxpbmUoeCxrK24vMikrZC5saW5lKHgsaykrZC5saW5lKHYsaykrXCJ6XCJdLEMrPWQubW92ZSh1LGspLGMuZ2xvYmFscy5pc1hOdW1lcmljfHwocys9cikse3BhdGhUbzpTLHBhdGhGcm9tOkMseCx5OnMsYmFyWVBvc2l0aW9uOmssY29sb3I6Zn19fSx7a2V5OlwiZ2V0T0hMQ1ZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLnc7cmV0dXJue286dGhpcy5pc0JveFBsb3Q/cy5nbG9iYWxzLnNlcmllc0NhbmRsZUhbaV1bYV06cy5nbG9iYWxzLnNlcmllc0NhbmRsZU9baV1bYV0saDp0aGlzLmlzQm94UGxvdD9zLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tpXVthXTpzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtpXVthXSxtOnMuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2ldW2FdLGw6dGhpcy5pc0JveFBsb3Q/cy5nbG9iYWxzLnNlcmllc0NhbmRsZUNbaV1bYV06cy5nbG9iYWxzLnNlcmllc0NhbmRsZUxbaV1bYV0sYzp0aGlzLmlzQm94UGxvdD9zLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtpXVthXTpzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tpXVthXX19fV0pLHR9KCksbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImNoZWNrQ29sb3JSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ITEsaT1lLmNvbmZpZy5wbG90T3B0aW9uc1tlLmNvbmZpZy5jaGFydC50eXBlXTtyZXR1cm4gaS5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmaS5jb2xvclNjYWxlLnJhbmdlcy5tYXAoZnVuY3Rpb24oYSxzKXthLmZyb208PTAmJih0PSEwKX0pLHR9fSx7a2V5OlwiZ2V0U2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPXRoaXMudyxyPTEsbj1zLmNvbmZpZy5wbG90T3B0aW9uc1tlXS5zaGFkZUludGVuc2l0eSxvPXRoaXMuZGV0ZXJtaW5lQ29sb3IoZSx0LGkpO3MuZ2xvYmFscy5oYXNOZWdzfHxhP3I9cy5jb25maWcucGxvdE9wdGlvbnNbZV0ucmV2ZXJzZU5lZ2F0aXZlU2hhZGU/by5wZXJjZW50PDA/by5wZXJjZW50LzEwMCooMS4yNSpuKTooMS1vLnBlcmNlbnQvMTAwKSooMS4yNSpuKTpvLnBlcmNlbnQ8PTA/MS0oMStvLnBlcmNlbnQvMTAwKSpuOigxLW8ucGVyY2VudC8xMDApKm46KHI9MS1vLnBlcmNlbnQvMTAwLGU9PT1cInRyZWVtYXBcIiYmKHI9KDEtby5wZXJjZW50LzEwMCkqKDEuMjUqbikpKTt2YXIgaD1vLmNvbG9yLGM9bmV3IFA7cmV0dXJuIHMuY29uZmlnLnBsb3RPcHRpb25zW2VdLmVuYWJsZVNoYWRlcyYmKGg9dGhpcy53LmNvbmZpZy50aGVtZS5tb2RlPT09XCJkYXJrXCI/UC5oZXhUb1JnYmEoYy5zaGFkZUNvbG9yKC0xKnIsby5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KTpQLmhleFRvUmdiYShjLnNoYWRlQ29sb3IocixvLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpKSx7Y29sb3I6aCxjb2xvclByb3BzOm99fX0se2tleTpcImRldGVybWluZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5zZXJpZXNbdF1baV0scj1hLmNvbmZpZy5wbG90T3B0aW9uc1tlXSxuPXIuY29sb3JTY2FsZS5pbnZlcnNlP2k6dDtyLmRpc3RyaWJ1dGVkJiZhLmNvbmZpZy5jaGFydC50eXBlPT09XCJ0cmVlbWFwXCImJihuPWkpO3ZhciBvPWEuZ2xvYmFscy5jb2xvcnNbbl0saD1udWxsLGM9TWF0aC5taW4uYXBwbHkoTWF0aCxRKGEuZ2xvYmFscy5zZXJpZXNbdF0pKSxkPU1hdGgubWF4LmFwcGx5KE1hdGgsUShhLmdsb2JhbHMuc2VyaWVzW3RdKSk7ci5kaXN0cmlidXRlZHx8ZSE9PVwiaGVhdG1hcFwifHwoYz1hLmdsb2JhbHMubWluWSxkPWEuZ2xvYmFscy5tYXhZKSxyLmNvbG9yU2NhbGUubWluIT09dm9pZCAwJiYoYz1yLmNvbG9yU2NhbGUubWluPGEuZ2xvYmFscy5taW5ZP3IuY29sb3JTY2FsZS5taW46YS5nbG9iYWxzLm1pblksZD1yLmNvbG9yU2NhbGUubWF4PmEuZ2xvYmFscy5tYXhZP3IuY29sb3JTY2FsZS5tYXg6YS5nbG9iYWxzLm1heFkpO3ZhciBnPU1hdGguYWJzKGQpK01hdGguYWJzKGMpLHA9MTAwKnMvKGc9PT0wP2ctMWUtNjpnKTtyZXR1cm4gci5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmci5jb2xvclNjYWxlLnJhbmdlcy5tYXAoZnVuY3Rpb24oZixiKXtpZihzPj1mLmZyb20mJnM8PWYudG8pe289Zi5jb2xvcixoPWYuZm9yZUNvbG9yP2YuZm9yZUNvbG9yOm51bGwsYz1mLmZyb20sZD1mLnRvO3ZhciBtPU1hdGguYWJzKGQpK01hdGguYWJzKGMpO3A9MTAwKnMvKG09PT0wP20tMWUtNjptKX19KSx7Y29sb3I6byxmb3JlQ29sb3I6aCxwZXJjZW50OnB9fX0se2tleTpcImNhbGN1bGF0ZURhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRleHQsaT1lLngsYT1lLnkscz1lLmkscj1lLmosbj1lLmNvbG9yUHJvcHMsbz1lLmZvbnRTaXplLGg9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLGM9bmV3IE0odGhpcy5jdHgpLGQ9bmV3IHdlKHRoaXMuY3R4KSxnPW51bGw7aWYoaC5lbmFibGVkKXtnPWMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7dmFyIHA9aC5vZmZzZXRYLGY9aC5vZmZzZXRZLGI9aStwLG09YStwYXJzZUZsb2F0KGguc3R5bGUuZm9udFNpemUpLzMrZjtkLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpiLHk6bSx0ZXh0OnQsaTpzLGo6cixjb2xvcjpuLmZvcmVDb2xvcixwYXJlbnQ6Zyxmb250U2l6ZTpvLGRhdGFMYWJlbHNDb25maWc6aH0pfXJldHVybiBnfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBNKHRoaXMuY3R4KTtlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0LnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdC5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsZSkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdC5wYXRoTW91c2VEb3duLmJpbmQodGhpcyxlKSl9fV0pLHl9KCksUnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnhSYXRpbz10LnhSYXRpbyx0aGlzLnlSYXRpbz10LnlSYXRpbyx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMuaGVscGVycz1uZXcgbHQoZSksdGhpcy5yZWN0UmFkaXVzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5yYWRpdXMsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS5zaG93P3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoOjB9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1uZXcgTSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtaGVhdG1hcFwifSk7YS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdCh0Lmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBzPXQuZ2xvYmFscy5ncmlkV2lkdGgvdC5nbG9iYWxzLmRhdGFQb2ludHMscj10Lmdsb2JhbHMuZ3JpZEhlaWdodC90Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxuPTAsbz0hMTt0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTt2YXIgaD1lLnNsaWNlKCk7dC5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJihvPSEwLGgucmV2ZXJzZSgpKTtmb3IodmFyIGM9bz8wOmgubGVuZ3RoLTE7bz9jPGgubGVuZ3RoOmM+PTA7bz9jKys6Yy0tKXt2YXIgZD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtaGVhdG1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKHQuZ2xvYmFscy5zZXJpZXNOYW1lc1tjXSkscmVsOmMrMSxcImRhdGE6cmVhbEluZGV4XCI6Y30pO2lmKHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGQsYyksdC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZz10LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyAkKHRoaXMuY3R4KS5kcm9wU2hhZG93KGQsZyxjKX1mb3IodmFyIHA9MCxmPXQuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuc2hhZGVJbnRlbnNpdHksYj0wO2I8aFtjXS5sZW5ndGg7YisrKXt2YXIgbT10aGlzLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcih0LmNvbmZpZy5jaGFydC50eXBlLGMsYix0aGlzLm5lZ1JhbmdlKSx3PW0uY29sb3IsQT1tLmNvbG9yUHJvcHM7dC5jb25maWcuZmlsbC50eXBlPT09XCJpbWFnZVwiJiYodz1uZXcgc2UodGhpcy5jdHgpLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YyxkYXRhUG9pbnRJbmRleDpiLG9wYWNpdHk6dC5nbG9iYWxzLmhhc05lZ3M/QS5wZXJjZW50PDA/MS0oMStBLnBlcmNlbnQvMTAwKTpmK0EucGVyY2VudC8xMDA6QS5wZXJjZW50LzEwMCxwYXR0ZXJuSUQ6UC5yYW5kb21JZCgpLHdpZHRoOnQuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg/dC5jb25maWcuZmlsbC5pbWFnZS53aWR0aDpzLGhlaWdodDp0LmNvbmZpZy5maWxsLmltYWdlLmhlaWdodD90LmNvbmZpZy5maWxsLmltYWdlLmhlaWdodDpyfSkpO3ZhciBsPXRoaXMucmVjdFJhZGl1cyx1PWkuZHJhd1JlY3QocCxuLHMscixsKTtpZih1LmF0dHIoe2N4OnAsY3k6bn0pLHUubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIiksZC5hZGQodSksdS5hdHRyKHtmaWxsOncsaTpjLGluZGV4OmMsajpiLHZhbDplW2NdW2JdLFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxzdHJva2U6dC5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT93OnQuZ2xvYmFscy5zdHJva2UuY29sb3JzWzBdLGNvbG9yOnd9KSx0aGlzLmhlbHBlcnMuYWRkTGlzdGVuZXJzKHUpLHQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIXQuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIHg9MTt0Lmdsb2JhbHMucmVzaXplZHx8KHg9dC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksdGhpcy5hbmltYXRlSGVhdE1hcCh1LHAsbixzLHIseCl9aWYodC5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgdj0xO2lmKHRoaXMuZHluYW1pY0FuaW0uZW5hYmxlZCYmdC5nbG9iYWxzLnNob3VsZEFuaW1hdGUpe3Y9dGhpcy5keW5hbWljQW5pbS5zcGVlZDt2YXIgaz10Lmdsb2JhbHMucHJldmlvdXNQYXRoc1tjXSYmdC5nbG9iYWxzLnByZXZpb3VzUGF0aHNbY11bYl0mJnQuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2NdW2JdLmNvbG9yO2t8fChrPVwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKVwiKSx0aGlzLmFuaW1hdGVIZWF0Q29sb3IodSxQLmlzQ29sb3JIZXgoayk/azpQLnJnYjJoZXgoayksUC5pc0NvbG9ySGV4KHcpP3c6UC5yZ2IyaGV4KHcpLHYpfX12YXIgUz0oMCx0LmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcikodC5nbG9iYWxzLnNlcmllc1tjXVtiXSx7dmFsdWU6dC5nbG9iYWxzLnNlcmllc1tjXVtiXSxzZXJpZXNJbmRleDpjLGRhdGFQb2ludEluZGV4OmIsdzp0fSksQz10aGlzLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDpTLHg6cCtzLzIseTpuK3IvMixpOmMsajpiLGNvbG9yUHJvcHM6QSxzZXJpZXM6aH0pO0MhPT1udWxsJiZkLmFkZChDKSxwKz1zfW4rPXIsYS5hZGQoZCl9dmFyIEw9dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnNsaWNlKCk7cmV0dXJuIHQuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkP0wudW5zaGlmdChcIlwiKTpMLnB1c2goXCJcIiksdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUwsYX19LHtrZXk6XCJhbmltYXRlSGVhdE1hcFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyKXt2YXIgbj1uZXcgZ2UodGhpcy5jdHgpO24uYW5pbWF0ZVJlY3QoZSx7eDp0K2EvMix5Omkrcy8yLHdpZHRoOjAsaGVpZ2h0OjB9LHt4OnQseTppLHdpZHRoOmEsaGVpZ2h0OnN9LHIsZnVuY3Rpb24oKXtuLmFuaW1hdGlvbkNvbXBsZXRlZChlKX0pfX0se2tleTpcImFuaW1hdGVIZWF0Q29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXtlLmF0dHIoe2ZpbGw6dH0pLmFuaW1hdGUoYSkuYXR0cih7ZmlsbDppfSl9fV0pLHl9KCksaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdZQXhpc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53LHI9cy5jb25maWcueWF4aXNbMF0sbj1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTtyZXR1cm4gbmV3IE0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OmUrci5sYWJlbHMub2Zmc2V0WCx5OnQrci5sYWJlbHMub2Zmc2V0WSx0ZXh0Om4oYSxpKSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ci5sYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHIubGFiZWxzLnN0eWxlLmNvbG9ycyk/ci5sYWJlbHMuc3R5bGUuY29sb3JzW2ldOnIubGFiZWxzLnN0eWxlLmNvbG9yc30pfX1dKSx5fSgpLGN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciB0PXRoaXMudzt0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltQmVnaW5BcnI9WzBdLHRoaXMuYW5pbUR1cj0wLHRoaXMuZG9udXREYXRhTGFiZWxzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscyx0aGlzLmxpbmVDb2xvckFycj10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyE9PXZvaWQgMD90Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczp0Lmdsb2JhbHMuY29sb3JzLHRoaXMuZGVmYXVsdFNpemU9TWF0aC5taW4odC5nbG9iYWxzLmdyaWRXaWR0aCx0Lmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jZW50ZXJZPXRoaXMuZGVmYXVsdFNpemUvMix0aGlzLmNlbnRlclg9dC5nbG9iYWxzLmdyaWRXaWR0aC8yLHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhZGlhbEJhclwiP3RoaXMuZnVsbEFuZ2xlPTM2MDp0aGlzLmZ1bGxBbmdsZT1NYXRoLmFicyh0LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZW5kQW5nbGUtdC5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLHRoaXMuaW5pdGlhbEFuZ2xlPXQuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLHQuZ2xvYmFscy5yYWRpYWxTaXplPXRoaXMuZGVmYXVsdFNpemUvMi4wNS10LmNvbmZpZy5zdHJva2Uud2lkdGgtKHQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6dC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSx0aGlzLmRvbnV0U2l6ZT10Lmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludCh0LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSwxMCkvMTAwLHRoaXMubWF4WT0wLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5zbGljZVNpemVzPVtdLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyPVtdfXJldHVybiBZKHksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPW5ldyBNKHRoaXMuY3R4KTtpZih0aGlzLnJldD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcGllXCJ9KSxpLmdsb2JhbHMubm9EYXRhKXJldHVybiB0aGlzLnJldDtmb3IodmFyIHM9MCxyPTA7cjxlLmxlbmd0aDtyKyspcys9UC5uZWdUb1plcm8oZVtyXSk7dmFyIG49W10sbz1hLmdyb3VwKCk7cz09PTAmJihzPTFlLTUpLGUuZm9yRWFjaChmdW5jdGlvbihrKXt0Lm1heFk9TWF0aC5tYXgodC5tYXhZLGspfSksaS5jb25maWcueWF4aXNbMF0ubWF4JiYodGhpcy5tYXhZPWkuY29uZmlnLnlheGlzWzBdLm1heCksaS5jb25maWcuZ3JpZC5wb3NpdGlvbj09PVwiYmFja1wiJiZ0aGlzLmNoYXJ0VHlwZT09PVwicG9sYXJBcmVhXCImJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpO2Zvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgYz10aGlzLmZ1bGxBbmdsZSpQLm5lZ1RvWmVybyhlW2hdKS9zO24ucHVzaChjKSx0aGlzLmNoYXJ0VHlwZT09PVwicG9sYXJBcmVhXCI/KG5baF09dGhpcy5mdWxsQW5nbGUvZS5sZW5ndGgsdGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUqZVtoXS90aGlzLm1heFkpKTp0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXtmb3IodmFyIGQsZz0wLHA9MDtwPGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtwKyspZys9UC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcF0pO2Zvcih2YXIgZj0wO2Y8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2YrKylkPXRoaXMuZnVsbEFuZ2xlKlAubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ZdKS9nLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyLnB1c2goZCl9dGhpcy5kb251dFNpemU8MCYmKHRoaXMuZG9udXRTaXplPTApO3ZhciBiPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxtPWkuZ2xvYmFscy5ncmlkV2lkdGgvMix3PWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsQT1tLWkuZ2xvYmFscy5ncmlkV2lkdGgvMipiLGw9dy1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yKmI7aWYodGhpcy5jaGFydFR5cGU9PT1cImRvbnV0XCIpe3ZhciB1PWEuZHJhd0NpcmNsZSh0aGlzLmRvbnV0U2l6ZSk7dS5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ/aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwifSksby5hZGQodSl9dmFyIHg9dGhpcy5kcmF3QXJjcyhuLGUpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaChmdW5jdGlvbihrKXt4LmFkZChrKX0pLG8uYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChBLFwiLCBcIikuY29uY2F0KGwsXCIpIHNjYWxlKFwiKS5jb25jYXQoYixcIilcIil9KSxvLmFkZCh4KSx0aGlzLnJldC5hZGQobyksdGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyl7dmFyIHY9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5kb251dERhdGFMYWJlbHMse2hvbGxvd1NpemU6dGhpcy5kb251dFNpemUsY2VudGVyWDp0aGlzLmNlbnRlclgsY2VudGVyWTp0aGlzLmNlbnRlclksb3BhY2l0eTp0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93LHRyYW5zbGF0ZVg6QSx0cmFuc2xhdGVZOmx9KTt0aGlzLnJldC5hZGQodil9cmV0dXJuIGkuY29uZmlnLmdyaWQucG9zaXRpb249PT1cImZyb250XCImJnRoaXMuY2hhcnRUeXBlPT09XCJwb2xhckFyZWFcIiYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCksdGhpcy5yZXR9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPW5ldyAkKHRoaXMuY3R4KSxzPW5ldyBNKHRoaXMuY3R4KSxyPW5ldyBzZSh0aGlzLmN0eCksbj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2xpY2VzXCJ9KSxvPXRoaXMuaW5pdGlhbEFuZ2xlLGg9dGhpcy5pbml0aWFsQW5nbGUsYz10aGlzLmluaXRpYWxBbmdsZSxkPXRoaXMuaW5pdGlhbEFuZ2xlO3RoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjA7Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspe3ZhciBwPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1waWUtc2VyaWVzXCIsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbZ10pLHJlbDpnKzEsXCJkYXRhOnJlYWxJbmRleFwiOmd9KTtuLmFkZChwKSxoPWQsYz0obz1jKStlW2ddLGQ9aCt0aGlzLnByZXZTZWN0b3JBbmdsZUFycltnXTt2YXIgZj1jPG8/dGhpcy5mdWxsQW5nbGUrYy1vOmMtbyxiPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpnLHNpemU6dGhpcy5zbGljZVNpemVzW2ddLHZhbHVlOnRbZ119KSxtPXRoaXMuZ2V0Q2hhbmdlZFBhdGgoaCxkKSx3PXMuZHJhd1BhdGgoe2Q6bSxzdHJva2U6QXJyYXkuaXNBcnJheSh0aGlzLmxpbmVDb2xvckFycik/dGhpcy5saW5lQ29sb3JBcnJbZ106dGhpcy5saW5lQ29sb3JBcnIsc3Ryb2tlV2lkdGg6MCxmaWxsOmIsZmlsbE9wYWNpdHk6aS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtXCIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChnKX0pO2lmKHcuYXR0cih7aW5kZXg6MCxqOmd9KSxhLnNldFNlbGVjdGlvbkZpbHRlcih3LDAsZyksaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgQT1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyh3LEEsZyl9dGhpcy5hZGRMaXN0ZW5lcnModyx0aGlzLmRvbnV0RGF0YUxhYmVscyksTS5zZXRBdHRycyh3Lm5vZGUse1wiZGF0YTphbmdsZVwiOmYsXCJkYXRhOnN0YXJ0QW5nbGVcIjpvLFwiZGF0YTpzdHJva2VXaWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsXCJkYXRhOnZhbHVlXCI6dFtnXX0pO3ZhciBsPXt4OjAseTowfTt0aGlzLmNoYXJ0VHlwZT09PVwicGllXCJ8fHRoaXMuY2hhcnRUeXBlPT09XCJwb2xhckFyZWFcIj9sPVAucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLzEuMjUraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChvK2YvMikldGhpcy5mdWxsQW5nbGUpOnRoaXMuY2hhcnRUeXBlPT09XCJkb251dFwiJiYobD1QLnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSwoaS5nbG9iYWxzLnJhZGlhbFNpemUrdGhpcy5kb251dFNpemUpLzIraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChvK2YvMikldGhpcy5mdWxsQW5nbGUpKSxwLmFkZCh3KTt2YXIgdT0wO2lmKCF0aGlzLmluaXRpYWxBbmltfHxpLmdsb2JhbHMucmVzaXplZHx8aS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3RoaXMuYW5pbUJlZ2luQXJyLnB1c2goMCk6KCh1PWYvdGhpcy5mdWxsQW5nbGUqaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCk9PT0wJiYodT0xKSx0aGlzLmFuaW1EdXI9dSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSx0aGlzLmR5bmFtaWNBbmltJiZpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltYXRlUGF0aHModyx7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZ10sZW5kQW5nbGU6YyxzdGFydEFuZ2xlOm8scHJldlN0YXJ0QW5nbGU6aCxwcmV2RW5kQW5nbGU6ZCxhbmltYXRlU3RhcnRpbmdQb3M6ITAsaTpnLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixzaG91bGRTZXRQcmV2UGF0aHM6ITAsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKHcse3NpemU6dGhpcy5zbGljZVNpemVzW2ddLGVuZEFuZ2xlOmMsc3RhcnRBbmdsZTpvLGk6Zyx0b3RhbEl0ZW1zOmUubGVuZ3RoLTEsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjp1fSksaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2smJnRoaXMuY2hhcnRUeXBlIT09XCJwb2xhckFyZWFcIiYmdy5jbGljayh0aGlzLnBpZUNsaWNrZWQuYmluZCh0aGlzLGcpKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdIT09dm9pZCAwJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmluZGV4T2YoZyk+LTEmJnRoaXMucGllQ2xpY2tlZChnKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciB4PWwueCx2PWwueSxrPTEwMCpmL3RoaXMuZnVsbEFuZ2xlK1wiJVwiO2lmKGYhPT0wJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5taW5BbmdsZVRvU2hvd0xhYmVsPGVbZ10pe3ZhciBTPWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyO1MhPT12b2lkIDAmJihrPVMoaS5nbG9iYWxzLnNlcmllc1BlcmNlbnRbZ11bMF0se3Nlcmllc0luZGV4OmcsdzppfSkpO3ZhciBDPWkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tnXSxMPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxJPXMuZHJhd1RleHQoe3gseTp2LHRleHQ6ayx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6Q30pO2lmKEwuYWRkKEkpLGkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgej1pLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KEkseil9SS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbFwiKSxpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGUmJmkuZ2xvYmFscy5yZXNpemVkPT09ITEmJihJLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5XCIpLEkubm9kZS5zdHlsZS5hbmltYXRpb25EZWxheT1pLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLzk0MCtcInNcIiksdGhpcy5zbGljZUxhYmVscy5wdXNoKEwpfX19cmV0dXJuIG59fSx7a2V5OlwiYWRkTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1uZXcgTSh0aGlzLmN0eCk7ZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsZSkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLGUpKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsZS5ub2RlLHQpKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsZSkpLHRoaXMuZG9udXREYXRhTGFiZWxzLnRvdGFsLnNob3dBbHdheXN8fChlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyxlLm5vZGUsdCkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsZS5ub2RlLHQpKSl9fSx7a2V5OlwiYW5pbWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT10LmVuZEFuZ2xlPHQuc3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZSt0LmVuZEFuZ2xlLXQuc3RhcnRBbmdsZTp0LmVuZEFuZ2xlLXQuc3RhcnRBbmdsZSxzPWEscj10LnN0YXJ0QW5nbGUsbj10LnN0YXJ0QW5nbGU7dC5wcmV2U3RhcnRBbmdsZSE9PXZvaWQgMCYmdC5wcmV2RW5kQW5nbGUhPT12b2lkIDAmJihyPXQucHJldkVuZEFuZ2xlLHM9dC5wcmV2RW5kQW5nbGU8dC5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZSt0LnByZXZFbmRBbmdsZS10LnByZXZTdGFydEFuZ2xlOnQucHJldkVuZEFuZ2xlLXQucHJldlN0YXJ0QW5nbGUpLHQuaT09PWkuY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmKGErbj50aGlzLmZ1bGxBbmdsZT90LmVuZEFuZ2xlPXQuZW5kQW5nbGUtKGErbik6YStuPHRoaXMuZnVsbEFuZ2xlJiYodC5lbmRBbmdsZT10LmVuZEFuZ2xlKyh0aGlzLmZ1bGxBbmdsZS0oYStuKSkpKSxhPT09dGhpcy5mdWxsQW5nbGUmJihhPXRoaXMuZnVsbEFuZ2xlLS4wMSksdGhpcy5hbmltYXRlQXJjKGUscixuLGEscyx0KX19LHtrZXk6XCJhbmltYXRlQXJjXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIpe3ZhciBuLG89dGhpcyxoPXRoaXMudyxjPW5ldyBnZSh0aGlzLmN0eCksZD1yLnNpemU7KGlzTmFOKHQpfHxpc05hTihzKSkmJih0PWkscz1hLHIuZHVyPTApO3ZhciBnPWEscD1pLGY9dDxpP3RoaXMuZnVsbEFuZ2xlK3QtaTp0LWk7aC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZyLnNob3VsZFNldFByZXZQYXRocyYmci5wcmV2RW5kQW5nbGUmJihuPW8uZ2V0UGllUGF0aCh7bWU6byxzdGFydEFuZ2xlOnIucHJldlN0YXJ0QW5nbGUsYW5nbGU6ci5wcmV2RW5kQW5nbGU8ci5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlOnIucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGUsc2l6ZTpkfSksZS5hdHRyKHtkOm59KSksci5kdXIhPT0wP2UuYW5pbWF0ZShyLmR1cixoLmdsb2JhbHMuZWFzaW5nLHIuYW5pbUJlZ2luQXJyW3IuaV0pLmFmdGVyQWxsKGZ1bmN0aW9uKCl7by5jaGFydFR5cGUhPT1cInBpZVwiJiZvLmNoYXJ0VHlwZSE9PVwiZG9udXRcIiYmby5jaGFydFR5cGUhPT1cInBvbGFyQXJlYVwifHx0aGlzLmFuaW1hdGUoaC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKS5hdHRyKHtcInN0cm9rZS13aWR0aFwiOm8uc3Ryb2tlV2lkdGh9KSxyLmk9PT1oLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJmMuYW5pbWF0aW9uQ29tcGxldGVkKGUpfSkuZHVyaW5nKGZ1bmN0aW9uKGIpe2c9ZisoYS1mKSpiLHIuYW5pbWF0ZVN0YXJ0aW5nUG9zJiYoZz1zKyhhLXMpKmIscD10LXMrKGktKHQtcykpKmIpLG49by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6cCxhbmdsZTpnLHNpemU6ZH0pLGUubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbiksZS5hdHRyKHtkOm59KX0pOihuPW8uZ2V0UGllUGF0aCh7bWU6byxzdGFydEFuZ2xlOnAsYW5nbGU6YSxzaXplOmR9KSxyLmlzVHJhY2t8fChoLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApLGUubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbiksZS5hdHRyKHtkOm4sXCJzdHJva2Utd2lkdGhcIjpvLnN0cm9rZVdpZHRofSkpfX0se2tleTpcInBpZUNsaWNrZWRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMudyxhPXRoaXMscz1hLnNsaWNlU2l6ZXNbZV0rKGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5leHBhbmRPbkNsaWNrPzQ6MCkscj1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChhLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoZSkpLm1lbWJlcnNbMF07aWYoci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIpIT09XCJ0cnVlXCIpe3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXBpZS1hcmVhXCIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobixmdW5jdGlvbihkKXtkLnNldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiLFwiZmFsc2VcIik7dmFyIGc9ZC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIpO2cmJmQuc2V0QXR0cmlidXRlKFwiZFwiLGcpfSksci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJ0cnVlXCIpO3ZhciBvPXBhcnNlSW50KHIuYXR0cihcImRhdGE6c3RhcnRBbmdsZVwiKSwxMCksaD1wYXJzZUludChyLmF0dHIoXCJkYXRhOmFuZ2xlXCIpLDEwKTt0PWEuZ2V0UGllUGF0aCh7bWU6YSxzdGFydEFuZ2xlOm8sYW5nbGU6aCxzaXplOnN9KSxoIT09MzYwJiZyLnBsb3QodCl9ZWxzZXtyLmF0dHIoe1wiZGF0YTpwaWVDbGlja2VkXCI6XCJmYWxzZVwifSksdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIoci5ub2RlLHRoaXMuZG9udXREYXRhTGFiZWxzKTt2YXIgYz1yLmF0dHIoXCJkYXRhOnBhdGhPcmlnXCIpO3IuYXR0cih7ZDpjfSl9fX0se2tleTpcImdldENoYW5nZWRQYXRoXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1cIlwiO3JldHVybiB0aGlzLmR5bmFtaWNBbmltJiZ0aGlzLncuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGk9dGhpcy5nZXRQaWVQYXRoKHttZTp0aGlzLHN0YXJ0QW5nbGU6ZSxhbmdsZTp0LWUsc2l6ZTp0aGlzLnNpemV9KSksaX19LHtrZXk6XCJnZXRQaWVQYXRoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLm1lLGE9ZS5zdGFydEFuZ2xlLHM9ZS5hbmdsZSxyPWUuc2l6ZSxuPW5ldyBNKHRoaXMuY3R4KSxvPWEsaD1NYXRoLlBJKihvLTkwKS8xODAsYz1zK2E7TWF0aC5jZWlsKGMpPj10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlJiYoYz10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLS4wMSksTWF0aC5jZWlsKGMpPnRoaXMuZnVsbEFuZ2xlJiYoYy09dGhpcy5mdWxsQW5nbGUpO3ZhciBkPU1hdGguUEkqKGMtOTApLzE4MCxnPWkuY2VudGVyWCtyKk1hdGguY29zKGgpLHA9aS5jZW50ZXJZK3IqTWF0aC5zaW4oaCksZj1pLmNlbnRlclgrcipNYXRoLmNvcyhkKSxiPWkuY2VudGVyWStyKk1hdGguc2luKGQpLG09UC5wb2xhclRvQ2FydGVzaWFuKGkuY2VudGVyWCxpLmNlbnRlclksaS5kb251dFNpemUsYyksdz1QLnBvbGFyVG9DYXJ0ZXNpYW4oaS5jZW50ZXJYLGkuY2VudGVyWSxpLmRvbnV0U2l6ZSxvKSxBPXM+MTgwPzE6MCxsPVtcIk1cIixnLHAsXCJBXCIscixyLDAsQSwxLGYsYl07cmV0dXJuIHQ9aS5jaGFydFR5cGU9PT1cImRvbnV0XCI/W10uY29uY2F0KGwsW1wiTFwiLG0ueCxtLnksXCJBXCIsaS5kb251dFNpemUsaS5kb251dFNpemUsMCxBLDAsdy54LHcueSxcIkxcIixnLHAsXCJ6XCJdKS5qb2luKFwiIFwiKTppLmNoYXJ0VHlwZT09PVwicGllXCJ8fGkuY2hhcnRUeXBlPT09XCJwb2xhckFyZWFcIj9bXS5jb25jYXQobCxbXCJMXCIsaS5jZW50ZXJYLGkuY2VudGVyWSxcIkxcIixnLHBdKS5qb2luKFwiIFwiKTpbXS5jb25jYXQobCkuam9pbihcIiBcIiksbi5yb3VuZFBhdGhDb3JuZXJzKHQsMip0aGlzLnN0cm9rZVdpZHRoKX19LHtrZXk6XCJkcmF3UG9sYXJFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBrZSh0aGlzLmN0eCksYT1uZXcgTSh0aGlzLmN0eCkscz1uZXcgaHQodGhpcy5jdHgpLHI9YS5ncm91cCgpLG49YS5ncm91cCgpLG89aS5uaWNlU2NhbGUoMCxNYXRoLmNlaWwodGhpcy5tYXhZKSx0LmNvbmZpZy55YXhpc1swXS50aWNrQW1vdW50LDAsITApLGg9by5yZXN1bHQucmV2ZXJzZSgpLGM9by5yZXN1bHQubGVuZ3RoO3RoaXMubWF4WT1vLm5pY2VNYXg7Zm9yKHZhciBkPXQuZ2xvYmFscy5yYWRpYWxTaXplLGc9ZC8oYy0xKSxwPTA7cDxjLTE7cCsrKXt2YXIgZj1hLmRyYXdDaXJjbGUoZCk7aWYoZi5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6XCJub25lXCIsXCJzdHJva2Utd2lkdGhcIjp0LmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEucmluZ3Muc3Ryb2tlV2lkdGgsc3Ryb2tlOnQuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VDb2xvcn0pLHQuY29uZmlnLnlheGlzWzBdLnNob3cpe3ZhciBiPXMuZHJhd1lBeGlzVGV4dHModGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWS1kK3BhcnNlSW50KHQuY29uZmlnLnlheGlzWzBdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMixwLGhbcF0pO24uYWRkKGIpfXIuYWRkKGYpLGQtPWd9dGhpcy5kcmF3U3Bva2VzKGUpLGUuYWRkKHIpLGUuYWRkKG4pfX0se2tleTpcInJlbmRlcklubmVyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpLHM9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQudHJhbnNsYXRlWD90LnRyYW5zbGF0ZVg6MCxcIiwgXCIpLmNvbmNhdCh0LnRyYW5zbGF0ZVk/dC50cmFuc2xhdGVZOjAsXCIpIHNjYWxlKFwiKS5jb25jYXQoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLFwiKVwiKX0pLHI9ZS50b3RhbC5zaG93O3Mubm9kZS5zdHlsZS5vcGFjaXR5PXQub3BhY2l0eTt2YXIgbixvLGg9dC5jZW50ZXJYLGM9dC5jZW50ZXJZO249ZS5uYW1lLmNvbG9yPT09dm9pZCAwP2kuZ2xvYmFscy5jb2xvcnNbMF06ZS5uYW1lLmNvbG9yO3ZhciBkPWUubmFtZS5mb250U2l6ZSxnPWUubmFtZS5mb250RmFtaWx5LHA9ZS5uYW1lLmZvbnRXZWlnaHQ7bz1lLnZhbHVlLmNvbG9yPT09dm9pZCAwP2kuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcjplLnZhbHVlLmNvbG9yO3ZhciBmPWUudmFsdWUuZm9ybWF0dGVyLGI9XCJcIixtPVwiXCI7aWYocj8obj1lLnRvdGFsLmNvbG9yLGQ9ZS50b3RhbC5mb250U2l6ZSxnPWUudG90YWwuZm9udEZhbWlseSxwPWUudG90YWwuZm9udFdlaWdodCxtPWUudG90YWwubGFiZWwsYj1lLnRvdGFsLmZvcm1hdHRlcihpKSk6aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg9PT0xJiYoYj1mKGkuZ2xvYmFscy5zZXJpZXNbMF0saSksbT1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbMF0pLG0mJihtPWUubmFtZS5mb3JtYXR0ZXIobSxlLnRvdGFsLnNob3csaSkpLGUubmFtZS5zaG93KXt2YXIgdz1hLmRyYXdUZXh0KHt4OmgseTpjK3BhcnNlRmxvYXQoZS5uYW1lLm9mZnNldFkpLHRleHQ6bSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm4sZm9udFNpemU6ZCxmb250V2VpZ2h0OnAsZm9udEZhbWlseTpnfSk7dy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxzLmFkZCh3KX1pZihlLnZhbHVlLnNob3cpe3ZhciBBPWUubmFtZS5zaG93P3BhcnNlRmxvYXQoZS52YWx1ZS5vZmZzZXRZKSsxNjplLnZhbHVlLm9mZnNldFksbD1hLmRyYXdUZXh0KHt4OmgseTpjK0EsdGV4dDpiLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6byxmb250V2VpZ2h0OmUudmFsdWUuZm9udFdlaWdodCxmb250U2l6ZTplLnZhbHVlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS52YWx1ZS5mb250RmFtaWx5fSk7bC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKSxzLmFkZChsKX1yZXR1cm4gc319LHtrZXk6XCJwcmludElubmVyTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHMscj10aGlzLnc7YT9zPWUubmFtZS5jb2xvcj09PXZvaWQgMD9yLmdsb2JhbHMuY29sb3JzW3BhcnNlSW50KGEucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdOmUubmFtZS5jb2xvcjpyLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiZlLnRvdGFsLnNob3cmJihzPWUudG90YWwuY29sb3IpO3ZhciBuPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWxcIiksbz1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpO2k9KDAsZS52YWx1ZS5mb3JtYXR0ZXIpKGksciksYXx8dHlwZW9mIGUudG90YWwuZm9ybWF0dGVyIT1cImZ1bmN0aW9uXCJ8fChpPWUudG90YWwuZm9ybWF0dGVyKHIpKTt2YXIgaD10PT09ZS50b3RhbC5sYWJlbDt0PWUubmFtZS5mb3JtYXR0ZXIodCxoLHIpLG4hPT1udWxsJiYobi50ZXh0Q29udGVudD10KSxvIT09bnVsbCYmKG8udGV4dENvbnRlbnQ9aSksbiE9PW51bGwmJihuLnN0eWxlLmZpbGw9cyl9fSx7a2V5OlwicHJpbnREYXRhTGFiZWxzSW5uZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWUuZ2V0QXR0cmlidXRlKFwiZGF0YTp2YWx1ZVwiKSxzPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1twYXJzZUludChlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xXTtpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiZ0aGlzLnByaW50SW5uZXJMYWJlbHModCxzLGEsZSk7dmFyIHI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIik7ciE9PW51bGwmJihyLnN0eWxlLm9wYWNpdHk9MSl9fSx7a2V5OlwiZHJhd1Nwb2tlc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1uZXcgTSh0aGlzLmN0eCkscz1pLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEuc3Bva2VzO2lmKHMuc3Ryb2tlV2lkdGghPT0wKXtmb3IodmFyIHI9W10sbj0zNjAvaS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbz0wO288aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bysrKXIucHVzaChQLnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSxpLmdsb2JhbHMucmFkaWFsU2l6ZSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZStuKm8pKTtyLmZvckVhY2goZnVuY3Rpb24oaCxjKXt2YXIgZD1hLmRyYXdMaW5lKGgueCxoLnksdC5jZW50ZXJYLHQuY2VudGVyWSxBcnJheS5pc0FycmF5KHMuY29ubmVjdG9yQ29sb3JzKT9zLmNvbm5lY3RvckNvbG9yc1tjXTpzLmNvbm5lY3RvckNvbG9ycyk7ZS5hZGQoZCl9KX19fSx7a2V5OlwicmV2ZXJ0RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKSxuPSExLG89cy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIiksaD1mdW5jdGlvbihnKXt2YXIgcD1nLm1ha2VTbGljZU91dCxmPWcucHJpbnRMYWJlbDtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sZnVuY3Rpb24oYil7Yi5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIik9PT1cInRydWVcIiYmKHAmJihuPSEwKSxmJiZhLnByaW50RGF0YUxhYmVsc0lubmVyKGIsdCkpfSl9O2lmKGgoe21ha2VTbGljZU91dDohMCxwcmludExhYmVsOiExfSksdC50b3RhbC5zaG93JiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKW4mJiF0LnRvdGFsLnNob3dBbHdheXM/aCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KTp0aGlzLnByaW50SW5uZXJMYWJlbHModCx0LnRvdGFsLmxhYmVsLHQudG90YWwuZm9ybWF0dGVyKHMpKTtlbHNlIGlmKGgoe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSksIW4paWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGM9cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxkPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGMpKTt0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyKGQsdCl9ZWxzZSByJiZzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmcy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg9PT0wJiYoci5zdHlsZS5vcGFjaXR5PTApO2Vsc2UgciYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKHIuc3R5bGUub3BhY2l0eT0wKX19XSkseX0oKSxPdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltRHVyPTA7dmFyIHQ9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IE0odGhpcy5jdHgpLHRoaXMubGluZUNvbG9yQXJyPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzIT09dm9pZCAwP3QuZ2xvYmFscy5zdHJva2UuY29sb3JzOnQuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT10Lmdsb2JhbHMuc3ZnSGVpZ2h0PHQuZ2xvYmFscy5zdmdXaWR0aD90Lmdsb2JhbHMuZ3JpZEhlaWdodCsxLjUqdC5nbG9iYWxzLmdvbGRlblBhZGRpbmc6dC5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLmlzTG9nPXQuY29uZmlnLnlheGlzWzBdLmxvZ2FyaXRobWljLHRoaXMuY29yZVV0aWxzPW5ldyBxKHRoaXMuY3R4KSx0aGlzLm1heFZhbHVlPXRoaXMuaXNMb2c/dGhpcy5jb3JlVXRpbHMuZ2V0TG9nVmFsKHQuZ2xvYmFscy5tYXhZLDApOnQuZ2xvYmFscy5tYXhZLHRoaXMubWluVmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodGhpcy53Lmdsb2JhbHMubWluWSwwKTp0Lmdsb2JhbHMubWluWSx0aGlzLnBvbHlnb25zPXQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLHRoaXMuc3Ryb2tlV2lkdGg9dC5jb25maWcuc3Ryb2tlLnNob3c/dC5jb25maWcuc3Ryb2tlLndpZHRoOjAsdGhpcy5zaXplPXRoaXMuZGVmYXVsdFNpemUvMi4xLXRoaXMuc3Ryb2tlV2lkdGgtdC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyLHQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93JiYodGhpcy5zaXplPXRoaXMuc2l6ZS10Lmdsb2JhbHMueEF4aXNMYWJlbHNXaWR0aC8xLjc1KSx0LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplIT09dm9pZCAwJiYodGhpcy5zaXplPXQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUpLHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudD1bXSx0aGlzLmRhdGFSYWRpdXM9W10sdGhpcy5hbmdsZUFycj1bXSx0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3M9W119cmV0dXJuIFkoeSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9bmV3IHNlKHRoaXMuY3R4KSxzPVtdLHI9bmV3IHdlKHRoaXMuY3R4KTtlLmxlbmd0aCYmKHRoaXMuZGF0YVBvaW50c0xlbj1lW2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgpLHRoaXMuZGlzQW5nbGU9MipNYXRoLlBJL3RoaXMuZGF0YVBvaW50c0xlbjt2YXIgbj1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbz1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yLGg9bitpLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRYLGM9bytpLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRZLGQ9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChofHwwLFwiLCBcIikuY29uY2F0KGN8fDAsXCIpXCIpfSksZz1bXSxwPW51bGwsZj1udWxsO2lmKHRoaXMueWF4aXNMYWJlbHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCJ9KSxlLmZvckVhY2goZnVuY3Rpb24obSx3KXt2YXIgQT1tLmxlbmd0aD09PWkuZ2xvYmFscy5kYXRhUG9pbnRzLGw9dC5ncmFwaGljcy5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixcImRhdGE6bG9uZ2VzdFNlcmllc1wiOkEsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbd10pLHJlbDp3KzEsXCJkYXRhOnJlYWxJbmRleFwiOnd9KTt0LmRhdGFSYWRpdXNPZlBlcmNlbnRbd109W10sdC5kYXRhUmFkaXVzW3ddPVtdLHQuYW5nbGVBcnJbd109W10sbS5mb3JFYWNoKGZ1bmN0aW9uKFQsRSl7dmFyIFI9TWF0aC5hYnModC5tYXhWYWx1ZS10Lm1pblZhbHVlKTtUKz1NYXRoLmFicyh0Lm1pblZhbHVlKSx0LmlzTG9nJiYoVD10LmNvcmVVdGlscy5nZXRMb2dWYWwoVCwwKSksdC5kYXRhUmFkaXVzT2ZQZXJjZW50W3ddW0VdPVQvUix0LmRhdGFSYWRpdXNbd11bRV09dC5kYXRhUmFkaXVzT2ZQZXJjZW50W3ddW0VdKnQuc2l6ZSx0LmFuZ2xlQXJyW3ddW0VdPUUqdC5kaXNBbmdsZX0pLGc9dC5nZXREYXRhUG9pbnRzUG9zKHQuZGF0YVJhZGl1c1t3XSx0LmFuZ2xlQXJyW3ddKTt2YXIgdT10LmNyZWF0ZVBhdGhzKGcse3g6MCx5OjB9KTtwPXQuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIGFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIn0pLGY9dC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6d30pLGkuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6cC5ub2RlLGluZGV4Ond9KTt2YXIgeD17aTp3LHJlYWxJbmRleDp3LGFuaW1hdGlvbkRlbGF5OncsaW5pdGlhbFNwZWVkOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLXJhZGFyXCIsc2hvdWxkQ2xpcFRvR3JpZDohMSxiaW5kRXZlbnRzT25QYXRoczohMSxzdHJva2U6aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbd10sc3Ryb2tlTGluZUNhcDppLmNvbmZpZy5zdHJva2UubGluZUNhcH0sdj1udWxsO2kuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10LmdldFByZXZpb3VzUGF0aCh3KSk7Zm9yKHZhciBrPTA7azx1LmxpbmVQYXRoc1RvLmxlbmd0aDtrKyspe3ZhciBTPXQuZ3JhcGhpY3MucmVuZGVyUGF0aHMoWChYKHt9LHgpLHt9LHtwYXRoRnJvbTp2PT09bnVsbD91LmxpbmVQYXRoc0Zyb21ba106dixwYXRoVG86dS5saW5lUGF0aHNUb1trXSxzdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KHQuc3Ryb2tlV2lkdGgpP3Quc3Ryb2tlV2lkdGhbd106dC5zdHJva2VXaWR0aCxmaWxsOlwibm9uZVwiLGRyYXdTaGFkb3c6ITF9KSk7bC5hZGQoUyk7dmFyIEM9YS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnd9KSxMPXQuZ3JhcGhpY3MucmVuZGVyUGF0aHMoWChYKHt9LHgpLHt9LHtwYXRoRnJvbTp2PT09bnVsbD91LmFyZWFQYXRoc0Zyb21ba106dixwYXRoVG86dS5hcmVhUGF0aHNUb1trXSxzdHJva2VXaWR0aDowLGZpbGw6QyxkcmF3U2hhZG93OiExfSkpO2lmKGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIEk9bmV3ICQodC5jdHgpLHo9aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztJLmRyb3BTaGFkb3coTCxPYmplY3QuYXNzaWduKHt9LHose25vVXNlclNwYWNlT25Vc2U6ITB9KSx3KX1sLmFkZChMKX1tLmZvckVhY2goZnVuY3Rpb24oVCxFKXt2YXIgUj1uZXcgVGUodC5jdHgpLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4OncsZGF0YVBvaW50SW5kZXg6RX0pLE89dC5ncmFwaGljcy5kcmF3TWFya2VyKGdbRV0ueCxnW0VdLnksUik7Ty5hdHRyKFwicmVsXCIsRSksTy5hdHRyKFwialwiLEUpLE8uYXR0cihcImluZGV4XCIsdyksTy5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixSLnBTaXplKTt2YXIgRD10LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pO0QmJkQuYWRkKE8pLHAuYWRkKEQpLGwuYWRkKHApO3ZhciBXPWkuY29uZmlnLmRhdGFMYWJlbHM7aWYoVy5lbmFibGVkKXt2YXIgTj1XLmZvcm1hdHRlcihpLmdsb2JhbHMuc2VyaWVzW3ddW0VdLHtzZXJpZXNJbmRleDp3LGRhdGFQb2ludEluZGV4OkUsdzppfSk7ci5wbG90RGF0YUxhYmVsc1RleHQoe3g6Z1tFXS54LHk6Z1tFXS55LHRleHQ6Tix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsaTp3LGo6dyxwYXJlbnQ6ZixvZmZzZXRDb3JyZWN0aW9uOiExLGRhdGFMYWJlbHNDb25maWc6WCh7fSxXKX0pfWwuYWRkKGYpfSkscy5wdXNoKGwpfSksdGhpcy5kcmF3UG9seWdvbnMoe3BhcmVudDpkfSksaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpe3ZhciBiPXRoaXMuZHJhd1hBeGlzVGV4dHMoKTtkLmFkZChiKX1yZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKG0pe2QuYWRkKG0pfSksZC5hZGQodGhpcy55YXhpc0xhYmVscyksZH19LHtrZXk6XCJkcmF3UG9seWdvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcyxpPXRoaXMudyxhPWUucGFyZW50LHM9bmV3IGh0KHRoaXMuY3R4KSxyPWkuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5yZXZlcnNlKCksbj1yLmxlbmd0aCxvPVtdLGg9dGhpcy5zaXplLyhuLTEpLGM9MDtjPG47YysrKW9bY109aCpjO28ucmV2ZXJzZSgpO3ZhciBkPVtdLGc9W107by5mb3JFYWNoKGZ1bmN0aW9uKHAsZil7dmFyIGI9UC5nZXRQb2x5Z29uUG9zKHAsdC5kYXRhUG9pbnRzTGVuKSxtPVwiXCI7Yi5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7aWYoZj09PTApe3ZhciBsPXQuZ3JhcGhpY3MuZHJhd0xpbmUody54LHcueSwwLDAsQXJyYXkuaXNBcnJheSh0LnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk/dC5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnNbQV06dC5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpO2cucHVzaChsKX1BPT09MCYmdC55YXhpc0xhYmVsc1RleHRzUG9zLnB1c2goe3g6dy54LHk6dy55fSksbSs9dy54K1wiLFwiK3cueStcIiBcIn0pLGQucHVzaChtKX0pLGQuZm9yRWFjaChmdW5jdGlvbihwLGYpe3ZhciBiPXQucG9seWdvbnMuc3Ryb2tlQ29sb3JzLG09dC5wb2x5Z29ucy5zdHJva2VXaWR0aCx3PXQuZ3JhcGhpY3MuZHJhd1BvbHlnb24ocCxBcnJheS5pc0FycmF5KGIpP2JbZl06YixBcnJheS5pc0FycmF5KG0pP21bZl06bSxpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1tmXSk7YS5hZGQodyl9KSxnLmZvckVhY2goZnVuY3Rpb24ocCl7YS5hZGQocCl9KSxpLmNvbmZpZy55YXhpc1swXS5zaG93JiZ0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MuZm9yRWFjaChmdW5jdGlvbihwLGYpe3ZhciBiPXMuZHJhd1lBeGlzVGV4dHMocC54LHAueSxmLHJbZl0pO3QueWF4aXNMYWJlbHMuYWRkKGIpfSl9fSx7a2V5OlwiZHJhd1hBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10LmNvbmZpZy54YXhpcy5sYWJlbHMsYT10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIn0pLHM9UC5nZXRQb2x5Z29uUG9zKHRoaXMuc2l6ZSx0aGlzLmRhdGFQb2ludHNMZW4pO3JldHVybiB0Lmdsb2JhbHMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24ocixuKXt2YXIgbz10LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGg9bmV3IHdlKGUuY3R4KTtpZihzW25dKXt2YXIgYz1lLmdldFRleHRQb3Moc1tuXSxlLnNpemUpLGQ9byhyLHtzZXJpZXNJbmRleDotMSxkYXRhUG9pbnRJbmRleDpuLHc6dH0pO2gucGxvdERhdGFMYWJlbHNUZXh0KHt4OmMubmV3WCx5OmMubmV3WSx0ZXh0OmQsdGV4dEFuY2hvcjpjLnRleHRBbmNob3IsaTpuLGo6bixwYXJlbnQ6YSxjb2xvcjpBcnJheS5pc0FycmF5KGkuc3R5bGUuY29sb3JzKSYmaS5zdHlsZS5jb2xvcnNbbl0/aS5zdHlsZS5jb2xvcnNbbl06XCIjYThhOGE4XCIsZGF0YUxhYmVsc0NvbmZpZzpYKHt0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixkcm9wU2hhZG93OntlbmFibGVkOiExfX0saSksb2Zmc2V0Q29ycmVjdGlvbjohMX0pfX0pLGF9fSx7a2V5OlwiY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsYT1bXSxzPVtdLHI9W10sbj1bXTtpZihlLmxlbmd0aCl7cz1bdGhpcy5ncmFwaGljcy5tb3ZlKHQueCx0LnkpXSxuPVt0aGlzLmdyYXBoaWNzLm1vdmUodC54LHQueSldO3ZhciBvPXRoaXMuZ3JhcGhpY3MubW92ZShlWzBdLngsZVswXS55KSxoPXRoaXMuZ3JhcGhpY3MubW92ZShlWzBdLngsZVswXS55KTtlLmZvckVhY2goZnVuY3Rpb24oYyxkKXtvKz1pLmdyYXBoaWNzLmxpbmUoYy54LGMueSksaCs9aS5ncmFwaGljcy5saW5lKGMueCxjLnkpLGQ9PT1lLmxlbmd0aC0xJiYobys9XCJaXCIsaCs9XCJaXCIpfSksYS5wdXNoKG8pLHIucHVzaChoKX1yZXR1cm57bGluZVBhdGhzRnJvbTpzLGxpbmVQYXRoc1RvOmEsYXJlYVBhdGhzRnJvbTpuLGFyZWFQYXRoc1RvOnJ9fX0se2tleTpcImdldFRleHRQb3NcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPVwibWlkZGxlXCIsYT1lLngscz1lLnk7cmV0dXJuIE1hdGguYWJzKGUueCk+PTEwP2UueD4wPyhpPVwic3RhcnRcIixhKz0xMCk6ZS54PDAmJihpPVwiZW5kXCIsYS09MTApOmk9XCJtaWRkbGVcIixNYXRoLmFicyhlLnkpPj10LTEwJiYoZS55PDA/cy09MTA6ZS55PjAmJihzKz0xMCkpLHt0ZXh0QW5jaG9yOmksbmV3WDphLG5ld1k6c319fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudyxpPW51bGwsYT0wO2E8dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2ErKyl7dmFyIHM9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV07cy5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQocy5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoZSwxMCkmJnQuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdIT09dm9pZCAwJiYoaT10Lmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1swXS5kKX1yZXR1cm4gaX19LHtrZXk6XCJnZXREYXRhUG9pbnRzUG9zXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06dGhpcy5kYXRhUG9pbnRzTGVuO2U9ZXx8W10sdD10fHxbXTtmb3IodmFyIGE9W10scz0wO3M8aTtzKyspe3ZhciByPXt9O3IueD1lW3NdKk1hdGguc2luKHRbc10pLHIueT0tZVtzXSpNYXRoLmNvcyh0W3NdKSxhLnB1c2gocil9cmV0dXJuIGF9fV0pLHl9KCksSHQ9ZnVuY3Rpb24oeSl7dWUodCxjdCk7dmFyIGU9cGUodCk7ZnVuY3Rpb24gdChpKXt2YXIgYTtGKHRoaXMsdCksKGE9ZS5jYWxsKHRoaXMsaSkpLmN0eD1pLGEudz1pLncsYS5hbmltQmVnaW5BcnI9WzBdLGEuYW5pbUR1cj0wO3ZhciBzPWEudztyZXR1cm4gYS5zdGFydEFuZ2xlPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLGEuZW5kQW5nbGU9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLGEudG90YWxBbmdsZT1NYXRoLmFicyhzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUtcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpLGEudHJhY2tTdGFydEFuZ2xlPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLGEudHJhY2tFbmRBbmdsZT1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUsYS5iYXJMYWJlbHM9YS53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuYmFyTGFiZWxzLGEuZG9udXREYXRhTGFiZWxzPWEudy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmRhdGFMYWJlbHMsYS5yYWRpYWxEYXRhTGFiZWxzPWEuZG9udXREYXRhTGFiZWxzLGEudHJhY2tTdGFydEFuZ2xlfHwoYS50cmFja1N0YXJ0QW5nbGU9YS5zdGFydEFuZ2xlKSxhLnRyYWNrRW5kQW5nbGV8fChhLnRyYWNrRW5kQW5nbGU9YS5lbmRBbmdsZSksYS5lbmRBbmdsZT09PTM2MCYmKGEuZW5kQW5nbGU9MzU5Ljk5KSxhLm1hcmdpbj1wYXJzZUludChzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2subWFyZ2luLDEwKSxhLm9uQmFyTGFiZWxDbGljaz1hLm9uQmFyTGFiZWxDbGljay5iaW5kKFhlKGEpKSxhfXJldHVybiBZKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9dGhpcy53LHM9bmV3IE0odGhpcy5jdHgpLHI9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhclwifSk7aWYoYS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gcjt2YXIgbj1zLmdyb3VwKCksbz10aGlzLmRlZmF1bHRTaXplLzIsaD1hLmdsb2JhbHMuZ3JpZFdpZHRoLzIsYz10aGlzLmRlZmF1bHRTaXplLzIuMDU7YS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fChjPWMtYS5jb25maWcuc3Ryb2tlLndpZHRoLWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7dmFyIGQ9YS5nbG9iYWxzLmZpbGwuY29sb3JzO2lmKGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KXt2YXIgZz10aGlzLmRyYXdUcmFja3Moe3NpemU6YyxjZW50ZXJYOmgsY2VudGVyWTpvLGNvbG9yQXJyOmQsc2VyaWVzOml9KTtuLmFkZChnKX12YXIgcD10aGlzLmRyYXdBcmNzKHtzaXplOmMsY2VudGVyWDpoLGNlbnRlclk6byxjb2xvckFycjpkLHNlcmllczppfSksZj0zNjA7YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGY9dGhpcy50b3RhbEFuZ2xlKTt2YXIgYj0oMzYwLWYpLzM2MDtpZihhLmdsb2JhbHMucmFkaWFsU2l6ZT1jLWMqYix0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUuc2hvdyl7dmFyIG09TWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksdGhpcy5yYWRpYWxEYXRhTGFiZWxzLm5hbWUub2Zmc2V0WSk7YS5nbG9iYWxzLnJhZGlhbFNpemUrPW0qYn1yZXR1cm4gbi5hZGQocC5nKSxhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uPT09XCJmcm9udFwiJiYocC5nLmFkZChwLmVsSG9sbG93KSxwLmRhdGFMYWJlbHMmJnAuZy5hZGQocC5kYXRhTGFiZWxzKSksci5hZGQobikscn19LHtrZXk6XCJkcmF3VHJhY2tzXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9dGhpcy53LHM9bmV3IE0odGhpcy5jdHgpLHI9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyYWNrc1wifSksbj1uZXcgJCh0aGlzLmN0eCksbz1uZXcgc2UodGhpcy5jdHgpLGg9dGhpcy5nZXRTdHJva2VXaWR0aChpKTtpLnNpemU9aS5zaXplLWgvMjtmb3IodmFyIGM9MDtjPGkuc2VyaWVzLmxlbmd0aDtjKyspe3ZhciBkPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItdHJhY2sgYXBleGNoYXJ0cy10cmFja1wifSk7ci5hZGQoZCksZC5hdHRyKHtyZWw6YysxfSksaS5zaXplPWkuc2l6ZS1oLXRoaXMubWFyZ2luO3ZhciBnPWEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjayxwPW8uZmlsbFBhdGgoe3Nlcmllc051bWJlcjowLHNpemU6aS5zaXplLGZpbGxDb2xvcnM6QXJyYXkuaXNBcnJheShnLmJhY2tncm91bmQpP2cuYmFja2dyb3VuZFtjXTpnLmJhY2tncm91bmQsc29saWQ6ITB9KSxmPXRoaXMudHJhY2tTdGFydEFuZ2xlLGI9dGhpcy50cmFja0VuZEFuZ2xlO01hdGguYWJzKGIpK01hdGguYWJzKGYpPj0zNjAmJihiPTM2MC1NYXRoLmFicyh0aGlzLnN0YXJ0QW5nbGUpLS4xKTt2YXIgbT1zLmRyYXdQYXRoKHtkOlwiXCIsc3Ryb2tlOnAsc3Ryb2tlV2lkdGg6aCpwYXJzZUludChnLnN0cm9rZVdpZHRoLDEwKS8xMDAsZmlsbDpcIm5vbmVcIixzdHJva2VPcGFjaXR5Omcub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYVwifSk7aWYoZy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB3PWcuZHJvcFNoYWRvdztuLmRyb3BTaGFkb3cobSx3KX1kLmFkZChtKSxtLmF0dHIoXCJpZFwiLFwiYXBleGNoYXJ0cy1yYWRpYWxiYXJUcmFjay1cIitjKSx0aGlzLmFuaW1hdGVQYXRocyhtLHtjZW50ZXJYOmkuY2VudGVyWCxjZW50ZXJZOmkuY2VudGVyWSxlbmRBbmdsZTpiLHN0YXJ0QW5nbGU6ZixzaXplOmkuc2l6ZSxpOmMsdG90YWxJdGVtczoyLGFuaW1CZWdpbkFycjowLGR1cjowLGlzVHJhY2s6ITAsZWFzaW5nOmEuZ2xvYmFscy5lYXNpbmd9KX1yZXR1cm4gcn19LHtrZXk6XCJkcmF3QXJjc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPXRoaXMudyxzPW5ldyBNKHRoaXMuY3R4KSxyPW5ldyBzZSh0aGlzLmN0eCksbj1uZXcgJCh0aGlzLmN0eCksbz1zLmdyb3VwKCksaD10aGlzLmdldFN0cm9rZVdpZHRoKGkpO2kuc2l6ZT1pLnNpemUtaC8yO3ZhciBjPWEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuYmFja2dyb3VuZCxkPWkuc2l6ZS1oKmkuc2VyaWVzLmxlbmd0aC10aGlzLm1hcmdpbippLnNlcmllcy5sZW5ndGgtaCpwYXJzZUludChhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3Ryb2tlV2lkdGgsMTApLzEwMC8yLGc9ZC1hLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjthLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlIT09dm9pZCAwJiYoYz10aGlzLmRyYXdIb2xsb3dJbWFnZShpLG8sZCxjKSk7dmFyIHA9dGhpcy5kcmF3SG9sbG93KHtzaXplOmcsY2VudGVyWDppLmNlbnRlclgsY2VudGVyWTppLmNlbnRlclksZmlsbDpjfHxcInRyYW5zcGFyZW50XCJ9KTtpZihhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGY9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93O24uZHJvcFNoYWRvdyhwLGYpfXZhciBiPTE7IXRoaXMucmFkaWFsRGF0YUxhYmVscy50b3RhbC5zaG93JiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoYj0wKTt2YXIgbT1udWxsO3RoaXMucmFkaWFsRGF0YUxhYmVscy5zaG93JiYobT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMse2hvbGxvd1NpemU6ZCxjZW50ZXJYOmkuY2VudGVyWCxjZW50ZXJZOmkuY2VudGVyWSxvcGFjaXR5OmJ9KSksYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbj09PVwiYmFja1wiJiYoby5hZGQocCksbSYmby5hZGQobSkpO3ZhciB3PSExO2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5pbnZlcnNlT3JkZXImJih3PSEwKTtmb3IodmFyIEE9dz9pLnNlcmllcy5sZW5ndGgtMTowO3c/QT49MDpBPGkuc2VyaWVzLmxlbmd0aDt3P0EtLTpBKyspe3ZhciBsPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1yYWRpYWwtc2VyaWVzXCIsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbQV0pfSk7by5hZGQobCksbC5hdHRyKHtyZWw6QSsxLFwiZGF0YTpyZWFsSW5kZXhcIjpBfSksdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMobCxBKSxpLnNpemU9aS5zaXplLWgtdGhpcy5tYXJnaW47dmFyIHU9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOkEsc2l6ZTppLnNpemUsdmFsdWU6aS5zZXJpZXNbQV19KSx4PXRoaXMuc3RhcnRBbmdsZSx2PXZvaWQgMCxrPVAubmVnVG9aZXJvKGkuc2VyaWVzW0FdPjEwMD8xMDA6aS5zZXJpZXNbQV0pLzEwMCxTPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKmspK3RoaXMuc3RhcnRBbmdsZSxDPXZvaWQgMDthLmdsb2JhbHMuZGF0YUNoYW5nZWQmJih2PXRoaXMuc3RhcnRBbmdsZSxDPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKlAubmVnVG9aZXJvKGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW0FdKS8xMDApK3YpLE1hdGguYWJzKFMpK01hdGguYWJzKHgpPj0zNjAmJihTLT0uMDEpLE1hdGguYWJzKEMpK01hdGguYWJzKHYpPj0zNjAmJihDLT0uMDEpO3ZhciBMPVMteCxJPUFycmF5LmlzQXJyYXkoYS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSk/YS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheVtBXTphLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LHo9cy5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTp1LHN0cm9rZVdpZHRoOmgsZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTphLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWEgYXBleGNoYXJ0cy1yYWRpYWxiYXItc2xpY2UtXCIrQSxzdHJva2VEYXNoQXJyYXk6SX0pO2lmKE0uc2V0QXR0cnMoei5ub2RlLHtcImRhdGE6YW5nbGVcIjpMLFwiZGF0YTp2YWx1ZVwiOmkuc2VyaWVzW0FdfSksYS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgVD1hLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O24uZHJvcFNoYWRvdyh6LFQsQSl9aWYobi5zZXRTZWxlY3Rpb25GaWx0ZXIoeiwwLEEpLHRoaXMuYWRkTGlzdGVuZXJzKHosdGhpcy5yYWRpYWxEYXRhTGFiZWxzKSxsLmFkZCh6KSx6LmF0dHIoe2luZGV4OjAsajpBfSksdGhpcy5iYXJMYWJlbHMuZW5hYmxlZCl7dmFyIEU9UC5wb2xhclRvQ2FydGVzaWFuKGkuY2VudGVyWCxpLmNlbnRlclksaS5zaXplLHgpLFI9dGhpcy5iYXJMYWJlbHMuZm9ybWF0dGVyKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tBXSx7c2VyaWVzSW5kZXg6QSx3OmF9KSxPPVtcImFwZXhjaGFydHMtcmFkaWFsYmFyLWxhYmVsXCJdO3RoaXMuYmFyTGFiZWxzLm9uQ2xpY2t8fE8ucHVzaChcImFwZXhjaGFydHMtbm8tY2xpY2tcIik7dmFyIEQ9dGhpcy5iYXJMYWJlbHMudXNlU2VyaWVzQ29sb3JzP2EuZ2xvYmFscy5jb2xvcnNbQV06YS5jb25maWcuY2hhcnQuZm9yZUNvbG9yO0R8fChEPWEuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcik7dmFyIFc9RS54LXRoaXMuYmFyTGFiZWxzLm1hcmdpbixOPUUueSxWPXMuZHJhd1RleHQoe3g6Vyx5Ok4sdGV4dDpSLHRleHRBbmNob3I6XCJlbmRcIixkb21pbmFudEJhc2VsaW5lOlwibWlkZGxlXCIsZm9udEZhbWlseTp0aGlzLmJhckxhYmVscy5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dGhpcy5iYXJMYWJlbHMuZm9udFdlaWdodCxmb250U2l6ZTp0aGlzLmJhckxhYmVscy5mb250U2l6ZSxmb3JlQ29sb3I6RCxjc3NDbGFzczpPLmpvaW4oXCIgXCIpfSk7Vi5vbihcImNsaWNrXCIsdGhpcy5vbkJhckxhYmVsQ2xpY2spLFYuYXR0cih7cmVsOkErMX0pLHghPT0wJiZWLmF0dHIoe1widHJhbnNmb3JtLW9yaWdpblwiOlwiXCIuY29uY2F0KFcsXCIgXCIpLmNvbmNhdChOKSx0cmFuc2Zvcm06XCJyb3RhdGUoXCIuY29uY2F0KHgsXCIgMCAwKVwiKX0pLGwuYWRkKFYpfXZhciBqPTA7IXRoaXMuaW5pdGlhbEFuaW18fGEuZ2xvYmFscy5yZXNpemVkfHxhLmdsb2JhbHMuZGF0YUNoYW5nZWR8fChqPWEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGo9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKSx0aGlzLmFuaW1EdXI9ai8oMS4yKmkuc2VyaWVzLmxlbmd0aCkrdGhpcy5hbmltRHVyLHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSx0aGlzLmFuaW1hdGVQYXRocyh6LHtjZW50ZXJYOmkuY2VudGVyWCxjZW50ZXJZOmkuY2VudGVyWSxlbmRBbmdsZTpTLHN0YXJ0QW5nbGU6eCxwcmV2RW5kQW5nbGU6QyxwcmV2U3RhcnRBbmdsZTp2LHNpemU6aS5zaXplLGk6QSx0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjpqLHNob3VsZFNldFByZXZQYXRoczohMCxlYXNpbmc6YS5nbG9iYWxzLmVhc2luZ30pfXJldHVybntnOm8sZWxIb2xsb3c6cCxkYXRhTGFiZWxzOm19fX0se2tleTpcImRyYXdIb2xsb3dcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1uZXcgTSh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyKmkuc2l6ZSk7cmV0dXJuIGEuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3dcIixjeDppLmNlbnRlclgsY3k6aS5jZW50ZXJZLHI6aS5zaXplLGZpbGw6aS5maWxsfSksYX19LHtrZXk6XCJkcmF3SG9sbG93SW1hZ2VcIix2YWx1ZTpmdW5jdGlvbihpLGEscyxyKXt2YXIgbj10aGlzLncsbz1uZXcgc2UodGhpcy5jdHgpLGg9UC5yYW5kb21JZCgpLGM9bi5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZTtpZihuLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlQ2xpcHBlZClvLmNsaXBwZWRJbWdBcmVhKHt3aWR0aDpzLGhlaWdodDpzLGltYWdlOmMscGF0dGVybklEOlwicGF0dGVyblwiLmNvbmNhdChuLmdsb2JhbHMuY3VpZCkuY29uY2F0KGgpfSkscj1cInVybCgjcGF0dGVyblwiLmNvbmNhdChuLmdsb2JhbHMuY3VpZCkuY29uY2F0KGgsXCIpXCIpO2Vsc2V7dmFyIGQ9bi5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZVdpZHRoLGc9bi5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUhlaWdodDtpZihkPT09dm9pZCAwJiZnPT09dm9pZCAwKXt2YXIgcD1uLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKGMpLmxvYWRlZChmdW5jdGlvbihiKXt0aGlzLm1vdmUoaS5jZW50ZXJYLWIud2lkdGgvMituLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCxpLmNlbnRlclktYi5oZWlnaHQvMituLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSl9KTthLmFkZChwKX1lbHNle3ZhciBmPW4uZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYykubG9hZGVkKGZ1bmN0aW9uKGIpe3RoaXMubW92ZShpLmNlbnRlclgtZC8yK24uY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLGkuY2VudGVyWS1nLzIrbi5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpLHRoaXMuc2l6ZShkLGcpfSk7YS5hZGQoZil9fXJldHVybiByfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9dGhpcy53O3JldHVybiBpLnNpemUqKDEwMC1wYXJzZUludChhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnNpemUsMTApKS8xMDAvKGkuc2VyaWVzLmxlbmd0aCsxKS10aGlzLm1hcmdpbn19LHtrZXk6XCJvbkJhckxhYmVsQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1wYXJzZUludChpLnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEscz10aGlzLmJhckxhYmVscy5vbkNsaWNrLHI9dGhpcy53O3MmJnMoci5nbG9iYWxzLnNlcmllc05hbWVzW2FdLHt3OnIsc2VyaWVzSW5kZXg6YX0pfX1dKSx0fSgpLER0PWZ1bmN0aW9uKHkpe3VlKHQsQWUpO3ZhciBlPXBlKHQpO2Z1bmN0aW9uIHQoKXtyZXR1cm4gRih0aGlzLHQpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBZKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLncscj1uZXcgTSh0aGlzLmN0eCk7dGhpcy5yYW5nZUJhck9wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYW5nZUJhcix0aGlzLnNlcmllcz1pLHRoaXMuc2VyaWVzUmFuZ2VTdGFydD1zLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCx0aGlzLnNlcmllc1JhbmdlRW5kPXMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyhpKTtmb3IodmFyIG49ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBoLGMsZCxnLHA9dm9pZCAwLGY9dm9pZCAwLGI9cy5nbG9iYWxzLmNvbWJvQ2hhcnRzP2Fbb106byxtPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1tiXSkscmVsOm8rMSxcImRhdGE6cmVhbEluZGV4XCI6Yn0pO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sYiksaVtvXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgdz0wLEE9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1iKTt2YXIgbD10aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO2Y9bC55LGc9bC56ZXJvVyxwPWwueCxBPWwuYmFyV2lkdGgsdz1sLmJhckhlaWdodCxoPWwueERpdmlzaW9uLGM9bC55RGl2aXNpb24sZD1sLnplcm9IO2Zvcih2YXIgdT1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjpifSkseD1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2Vyc1wifSksdj0wO3Y8cy5nbG9iYWxzLmRhdGFQb2ludHM7disrKXt2YXIgayxTPXRoaXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChvLHYsYiksQz10aGlzLnNlcmllc1JhbmdlU3RhcnRbb11bdl0sTD10aGlzLnNlcmllc1JhbmdlRW5kW29dW3ZdLEk9bnVsbCx6PW51bGwsVD1udWxsLEU9e3g6cCx5OmYsc3Ryb2tlV2lkdGg6UyxlbFNlcmllczptfSxSPXRoaXMuc2VyaWVzTGVuO2lmKHMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKFI9MSkscy5jb25maWcuc2VyaWVzW29dLmRhdGFbdl09PT12b2lkIDApYnJlYWs7aWYodGhpcy5pc0hvcml6b250YWwpe1Q9Zit3KnRoaXMudmlzaWJsZUk7dmFyIE89KGMtdypSKS8yO2lmKHMuY29uZmlnLnNlcmllc1tvXS5kYXRhW3ZdLngpe3ZhciBEPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOm8sajp2LGJhcllQb3NpdGlvbjpULHNydHk6TyxiYXJIZWlnaHQ6dyx5RGl2aXNpb246Yyxpbml0UG9zaXRpb25zOmx9KTt3PUQuYmFySGVpZ2h0LFQ9RC5iYXJZUG9zaXRpb259QT0oST10aGlzLmRyYXdSYW5nZUJhclBhdGhzKFgoe2luZGV4ZXM6e2k6byxqOnYscmVhbEluZGV4OmJ9LGJhckhlaWdodDp3LGJhcllQb3NpdGlvbjpULHplcm9XOmcseURpdmlzaW9uOmMseTE6Qyx5MjpMfSxFKSkpLmJhcldpZHRofWVsc2V7cy5nbG9iYWxzLmlzWE51bWVyaWMmJihwPShzLmdsb2JhbHMuc2VyaWVzWFtvXVt2XS1zLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tQS8yKSx6PXArQSp0aGlzLnZpc2libGVJO3ZhciBXPShoLUEqUikvMjtpZihzLmNvbmZpZy5zZXJpZXNbb10uZGF0YVt2XS54KXt2YXIgTj10aGlzLmRldGVjdE92ZXJsYXBwaW5nQmFycyh7aTpvLGo6dixiYXJYUG9zaXRpb246eixzcnR4OlcsYmFyV2lkdGg6QSx4RGl2aXNpb246aCxpbml0UG9zaXRpb25zOmx9KTtBPU4uYmFyV2lkdGgsej1OLmJhclhQb3NpdGlvbn13PShJPXRoaXMuZHJhd1JhbmdlQ29sdW1uUGF0aHMoWCh7aW5kZXhlczp7aTpvLGo6dixyZWFsSW5kZXg6Yn0sYmFyV2lkdGg6QSxiYXJYUG9zaXRpb246eix6ZXJvSDpkLHhEaXZpc2lvbjpofSxFKSkpLmJhckhlaWdodH12YXIgVj10aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246SS5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlQsZ29hbFg6SS5nb2FsWCxnb2FsWTpJLmdvYWxZLGJhckhlaWdodDp3LGJhcldpZHRoOkF9KTtWJiZ4LmFkZChWKSxmPUkueSxwPUkueDt2YXIgaj10aGlzLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcihpLG8sdixiKSxyZT1zLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tiXTt0aGlzLnJlbmRlclNlcmllcygodGUoaz17cmVhbEluZGV4OmIscGF0aEZpbGw6aixsaW5lRmlsbDpyZSxqOnYsaTpvLHg6cCx5OmYseTE6Qyx5MjpMLHBhdGhGcm9tOkkucGF0aEZyb20scGF0aFRvOkkucGF0aFRvLHN0cm9rZVdpZHRoOlMsZWxTZXJpZXM6bSxzZXJpZXM6aSxiYXJIZWlnaHQ6dyxiYXJXaWR0aDpBLGJhclhQb3NpdGlvbjp6LGJhcllQb3NpdGlvbjpUfSxcImJhcldpZHRoXCIsQSksdGUoayxcImVsRGF0YUxhYmVsc1dyYXBcIix1KSx0ZShrLFwiZWxHb2Fsc01hcmtlcnNcIix4KSx0ZShrLFwidmlzaWJsZVNlcmllc1wiLHRoaXMudmlzaWJsZUkpLHRlKGssXCJ0eXBlXCIsXCJyYW5nZWJhclwiKSxrKSl9bi5hZGQobSl9cmV0dXJuIG59fSx7a2V5OlwiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9aS5pLHM9aS5qLHI9aS5iYXJZUG9zaXRpb24sbj1pLmJhclhQb3NpdGlvbixvPWkuc3J0eSxoPWkuc3J0eCxjPWkuYmFySGVpZ2h0LGQ9aS5iYXJXaWR0aCxnPWkueURpdmlzaW9uLHA9aS54RGl2aXNpb24sZj1pLmluaXRQb3NpdGlvbnMsYj10aGlzLncsbT1bXSx3PWIuY29uZmlnLnNlcmllc1thXS5kYXRhW3NdLnJhbmdlTmFtZSxBPWIuY29uZmlnLnNlcmllc1thXS5kYXRhW3NdLngsbD1BcnJheS5pc0FycmF5KEEpP0Euam9pbihcIiBcIik6QSx1PWIuZ2xvYmFscy5sYWJlbHMubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBBcnJheS5pc0FycmF5KHYpP3Yuam9pbihcIiBcIik6dn0pLmluZGV4T2YobCkseD1iLmdsb2JhbHMuc2VyaWVzUmFuZ2VbYV0uZmluZEluZGV4KGZ1bmN0aW9uKHYpe3JldHVybiB2Lng9PT1sJiZ2Lm92ZXJsYXBzLmxlbmd0aD4wfSk7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsPyhyPWIuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cz9vK2cqdTpvK2MqdGhpcy52aXNpYmxlSStnKnUseD4tMSYmIWIuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhck92ZXJsYXAmJihtPWIuZ2xvYmFscy5zZXJpZXNSYW5nZVthXVt4XS5vdmVybGFwcykuaW5kZXhPZih3KT4tMSYmKHI9KGM9Zi5iYXJIZWlnaHQvbS5sZW5ndGgpKnRoaXMudmlzaWJsZUkrZyooMTAwLXBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApKS8xMDAvMitjKih0aGlzLnZpc2libGVJK20uaW5kZXhPZih3KSkrZyp1KSk6KHU+LTEmJihuPWIuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cz9oK3AqdTpoK2QqdGhpcy52aXNpYmxlSStwKnUpLHg+LTEmJiFiLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwJiYobT1iLmdsb2JhbHMuc2VyaWVzUmFuZ2VbYV1beF0ub3ZlcmxhcHMpLmluZGV4T2Yodyk+LTEmJihuPShkPWYuYmFyV2lkdGgvbS5sZW5ndGgpKnRoaXMudmlzaWJsZUkrcCooMTAwLXBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5iYXJXaWR0aCwxMCkpLzEwMC8yK2QqKHRoaXMudmlzaWJsZUkrbS5pbmRleE9mKHcpKStwKnUpKSx7YmFyWVBvc2l0aW9uOnIsYmFyWFBvc2l0aW9uOm4sYmFySGVpZ2h0OmMsYmFyV2lkdGg6ZH19fSx7a2V5OlwiZHJhd1JhbmdlQ29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmluZGV4ZXMscz1pLngscj1pLnhEaXZpc2lvbixuPWkuYmFyV2lkdGgsbz1pLmJhclhQb3NpdGlvbixoPWkuemVyb0gsYz10aGlzLncsZD1hLmksZz1hLmoscD10aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGY9YS5yZWFsSW5kZXgsYj10aGlzLmdldFJhbmdlVmFsdWUoZixnKSxtPU1hdGgubWluKGIuc3RhcnQsYi5lbmQpLHc9TWF0aC5tYXgoYi5zdGFydCxiLmVuZCk7dGhpcy5zZXJpZXNbZF1bZ109PT12b2lkIDB8fHRoaXMuc2VyaWVzW2RdW2ddPT09bnVsbD9tPWg6KG09aC1tL3Asdz1oLXcvcCk7dmFyIEE9TWF0aC5hYnMody1tKSxsPXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOm8sYmFyV2lkdGg6bix5MTptLHkyOncsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxyZWFsSW5kZXg6YS5yZWFsSW5kZXgsaTpmLGo6Zyx3OmN9KTtpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHU9dGhpcy5nZXRCYXJYRm9yTnVtZXJpY1hBeGlzKHt4OnMsajpnLHJlYWxJbmRleDpmLGJhcldpZHRoOm59KTtzPXUueCxvPXUuYmFyWFBvc2l0aW9ufWVsc2Ugcys9cjtyZXR1cm57cGF0aFRvOmwucGF0aFRvLHBhdGhGcm9tOmwucGF0aEZyb20sYmFySGVpZ2h0OkEseDpzLHk6dyxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLGgsZCxnKSxiYXJYUG9zaXRpb246b319fSx7a2V5OlwiZHJhd1JhbmdlQmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmluZGV4ZXMscz1pLnkscj1pLnkxLG49aS55MixvPWkueURpdmlzaW9uLGg9aS5iYXJIZWlnaHQsYz1pLmJhcllQb3NpdGlvbixkPWkuemVyb1csZz10aGlzLncscD1kK3IvdGhpcy5pbnZlcnRlZFlSYXRpbyxmPWQrbi90aGlzLmludmVydGVkWVJhdGlvLGI9TWF0aC5hYnMoZi1wKSxtPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOmMsYmFySGVpZ2h0OmgseDE6cCx4MjpmLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzUmFuZ2VFbmQsaTphLnJlYWxJbmRleCxyZWFsSW5kZXg6YS5yZWFsSW5kZXgsajphLmosdzpnfSk7cmV0dXJuIGcuZ2xvYmFscy5pc1hOdW1lcmljfHwocys9bykse3BhdGhUbzptLnBhdGhUbyxwYXRoRnJvbTptLnBhdGhGcm9tLGJhcldpZHRoOmIseDpmLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLGQsbnVsbCxhLnJlYWxJbmRleCxhLmopLHk6c319fSx7a2V5OlwiZ2V0UmFuZ2VWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGksYSl7dmFyIHM9dGhpcy53O3JldHVybntzdGFydDpzLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtpXVthXSxlbmQ6cy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2ldW2FdfX19XSksdH0oKSxOdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5saW5lQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcInNhbWVWYWx1ZVNlcmllc0ZpeFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2lmKChpLmNvbmZpZy5maWxsLnR5cGU9PT1cImdyYWRpZW50XCJ8fGkuY29uZmlnLmZpbGwudHlwZVtlXT09PVwiZ3JhZGllbnRcIikmJm5ldyBxKHRoaXMubGluZUN0eC5jdHgsaSkuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMoZSkpe3ZhciBhPXRbZV0uc2xpY2UoKTthW2EubGVuZ3RoLTFdPWFbYS5sZW5ndGgtMV0rMWUtNix0W2VdPWF9cmV0dXJuIHR9fSx7a2V5OlwiY2FsY3VsYXRlUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXJpZXMsaT1lLnJlYWxJbmRleCxhPWUueCxzPWUueSxyPWUuaSxuPWUuaixvPWUucHJldlksaD10aGlzLncsYz1bXSxkPVtdO2lmKG49PT0wKXt2YXIgZz10aGlzLmxpbmVDdHguY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbitoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFg7aC5nbG9iYWxzLmlzWE51bWVyaWMmJihnPShoLmdsb2JhbHMuc2VyaWVzWFtpXVswXS1oLmdsb2JhbHMubWluWCkvdGhpcy5saW5lQ3R4LnhSYXRpbytoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGMucHVzaChnKSxkLnB1c2goUC5pc051bWJlcih0W3JdWzBdKT9vK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKSxjLnB1c2goYStoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGQucHVzaChQLmlzTnVtYmVyKHRbcl1bbisxXSk/cytoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCl9ZWxzZSBjLnB1c2goYStoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGQucHVzaChQLmlzTnVtYmVyKHRbcl1bbisxXSk/cytoLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCk7cmV0dXJue3g6Yyx5OmR9fX0se2tleTpcImNoZWNrUHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnBhdGhGcm9tTGluZSxpPWUucGF0aEZyb21BcmVhLGE9ZS5yZWFsSW5kZXgscz10aGlzLncscj0wO3I8cy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3IrKyl7dmFyIG49cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl07KG4udHlwZT09PVwibGluZVwifHxuLnR5cGU9PT1cImFyZWFcIikmJm4ucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KG4ucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KGEsMTApJiYobi50eXBlPT09XCJsaW5lXCI/KHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSx0PXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQpOm4udHlwZT09PVwiYXJlYVwiJiYodGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLGk9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmcy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0mJih0PXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdLmQpKSl9cmV0dXJue3BhdGhGcm9tTGluZTp0LHBhdGhGcm9tQXJlYTppfX19LHtrZXk6XCJkZXRlcm1pbmVGaXJzdFByZXZZXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhPWUuaSxzPWUuc2VyaWVzLHI9ZS5wcmV2WSxuPWUubGluZVlQb3NpdGlvbixvPXRoaXMudyxoPW8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJiFvLmdsb2JhbHMuY29tYm9DaGFydHN8fG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJm8uZ2xvYmFscy5jb21ib0NoYXJ0cyYmKCF0aGlzLncuY29uZmlnLmNoYXJ0LnN0YWNrT25seUJhcnx8KCh0PXRoaXMudy5jb25maWcuc2VyaWVzW2FdKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudHlwZSk9PT1cImJhclwiKTtpZigoKGk9c1thXSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppWzBdKSE9PXZvaWQgMClyPShuPWgmJmE+MD90aGlzLmxpbmVDdHgucHJldlNlcmllc1lbYS0xXVswXTp0aGlzLmxpbmVDdHguemVyb1kpLXNbYV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF0rMioodGhpcy5saW5lQ3R4LmlzUmV2ZXJzZWQ/c1thXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XTowKTtlbHNlIGlmKGgmJmE+MCYmc1thXVswXT09PXZvaWQgMCl7Zm9yKHZhciBjPWEtMTtjPj0wO2MtLSlpZihzW2NdWzBdIT09bnVsbCYmc1tjXVswXSE9PXZvaWQgMCl7cj1uPXRoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtjXVswXTticmVha319cmV0dXJue3ByZXZZOnIsbGluZVlQb3NpdGlvbjpufX19XSkseX0oKSxXdD1mdW5jdGlvbih5KXtmb3IodmFyIGUsdCxpLGEscz1mdW5jdGlvbihjKXtmb3IodmFyIGQ9W10sZz1jWzBdLHA9Y1sxXSxmPWRbMF09VWUoZyxwKSxiPTEsbT1jLmxlbmd0aC0xO2I8bTtiKyspZz1wLHA9Y1tiKzFdLGRbYl09LjUqKGYrKGY9VWUoZyxwKSkpO3JldHVybiBkW2JdPWYsZH0oeSkscj15Lmxlbmd0aC0xLG49W10sbz0wO288cjtvKyspaT1VZSh5W29dLHlbbysxXSksTWF0aC5hYnMoaSk8MWUtNj9zW29dPXNbbysxXT0wOihhPShlPXNbb10vaSkqZSsodD1zW28rMV0vaSkqdCk+OSYmKGE9MyppL01hdGguc3FydChhKSxzW29dPWEqZSxzW28rMV09YSp0KTtmb3IodmFyIGg9MDtoPD1yO2grKylhPSh5W01hdGgubWluKHIsaCsxKV1bMF0teVtNYXRoLm1heCgwLGgtMSldWzBdKS8oNiooMStzW2hdKnNbaF0pKSxuLnB1c2goW2F8fDAsc1toXSphfHwwXSk7cmV0dXJuIG59LF9lPWZ1bmN0aW9uKHkpe2Zvcih2YXIgZT1cIlwiLHQ9MDt0PHkubGVuZ3RoO3QrKyl7dmFyIGk9eVt0XSxhPWkubGVuZ3RoO2E+ND8oZSs9XCJDXCIuY29uY2F0KGlbMF0sXCIsIFwiKS5jb25jYXQoaVsxXSksZSs9XCIsIFwiLmNvbmNhdChpWzJdLFwiLCBcIikuY29uY2F0KGlbM10pLGUrPVwiLCBcIi5jb25jYXQoaVs0XSxcIiwgXCIpLmNvbmNhdChpWzVdKSk6YT4yJiYoZSs9XCJTXCIuY29uY2F0KGlbMF0sXCIsIFwiKS5jb25jYXQoaVsxXSksZSs9XCIsIFwiLmNvbmNhdChpWzJdLFwiLCBcIikuY29uY2F0KGlbM10pKX1yZXR1cm4gZX0sZHQ9ZnVuY3Rpb24oeSl7dmFyIGU9V3QoeSksdD15WzFdLGk9eVswXSxhPVtdLHM9ZVsxXSxyPWVbMF07YS5wdXNoKGksW2lbMF0rclswXSxpWzFdK3JbMV0sdFswXS1zWzBdLHRbMV0tc1sxXSx0WzBdLHRbMV1dKTtmb3IodmFyIG49MixvPWUubGVuZ3RoO248bztuKyspe3ZhciBoPXlbbl0sYz1lW25dO2EucHVzaChbaFswXS1jWzBdLGhbMV0tY1sxXSxoWzBdLGhbMV1dKX1yZXR1cm4gYX07ZnVuY3Rpb24gVWUoeSxlKXtyZXR1cm4oZVsxXS15WzFdKS8oZVswXS15WzBdKX12YXIgcWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCxpKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMueHlSYXRpb3M9dCx0aGlzLnBvaW50c0NoYXJ0PSEodGhpcy53LmNvbmZpZy5jaGFydC50eXBlIT09XCJidWJibGVcIiYmdGhpcy53LmNvbmZpZy5jaGFydC50eXBlIT09XCJzY2F0dGVyXCIpfHxpLHRoaXMuc2NhdHRlcj1uZXcgS2UodGhpcy5jdHgpLHRoaXMubm9OZWdhdGl2ZXM9dGhpcy53Lmdsb2JhbHMubWluWD09PU51bWJlci5NQVhfVkFMVUUsdGhpcy5saW5lSGVscGVycz1uZXcgTnQodGhpcyksdGhpcy5tYXJrZXJzPW5ldyBUZSh0aGlzLmN0eCksdGhpcy5wcmV2U2VyaWVzWT1bXSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249MCx0aGlzLnlheGlzSW5kZXg9MH1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzLHI9dGhpcy53LG49bmV3IE0odGhpcy5jdHgpLG89ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP3Q6ci5jb25maWcuY2hhcnQudHlwZSxoPW4uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobyxcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGM9bmV3IHEodGhpcy5jdHgscik7dGhpcy55UmF0aW89dGhpcy54eVJhdGlvcy55UmF0aW8sdGhpcy56UmF0aW89dGhpcy54eVJhdGlvcy56UmF0aW8sdGhpcy54UmF0aW89dGhpcy54eVJhdGlvcy54UmF0aW8sdGhpcy5iYXNlTGluZVk9dGhpcy54eVJhdGlvcy5iYXNlTGluZVksZT1jLmdldExvZ1NlcmllcyhlKSx0aGlzLnlSYXRpbz1jLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pO2Zvcih2YXIgZD1bXSxnPTA7ZzxlLmxlbmd0aDtnKyspe2U9dGhpcy5saW5lSGVscGVycy5zYW1lVmFsdWVTZXJpZXNGaXgoZyxlKTt2YXIgcD1yLmdsb2JhbHMuY29tYm9DaGFydHM/aVtnXTpnO3RoaXMuX2luaXRTZXJpZVZhcmlhYmxlcyhlLGcscCk7dmFyIGY9W10sYj1bXSxtPVtdLHc9ci5nbG9iYWxzLnBhZEhvcml6b250YWwrdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHRoaXMuZWxTZXJpZXMscCksci5nbG9iYWxzLmlzWE51bWVyaWMmJnIuZ2xvYmFscy5zZXJpZXNYLmxlbmd0aD4wJiYodz0oci5nbG9iYWxzLnNlcmllc1hbcF1bMF0tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvKSxtLnB1c2godyk7dmFyIEEsbD13LHU9dm9pZCAwLHg9bCx2PXRoaXMuemVyb1ksaz10aGlzLnplcm9ZO3Y9dGhpcy5saW5lSGVscGVycy5kZXRlcm1pbmVGaXJzdFByZXZZKHtpOmcsc2VyaWVzOmUscHJldlk6dixsaW5lWVBvc2l0aW9uOjB9KS5wcmV2WSxyLmNvbmZpZy5zdHJva2UuY3VydmU9PT1cIm1vbm90b25DdWJpY1wiJiZlW2ddWzBdPT09bnVsbD9mLnB1c2gobnVsbCk6Zi5wdXNoKHYpLEE9dixvPT09XCJyYW5nZUFyZWFcIiYmKHU9az10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6YSxwcmV2WTprLGxpbmVZUG9zaXRpb246MH0pLnByZXZZLGIucHVzaChrKSk7dmFyIFM9e3R5cGU6byxzZXJpZXM6ZSxyZWFsSW5kZXg6cCxpOmcseDp3LHk6MSxwWDpsLHBZOkEscGF0aHNGcm9tOnRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7dHlwZTpvLHNlcmllczplLGk6ZyxyZWFsSW5kZXg6cCxwcmV2WDp4LHByZXZZOnYscHJldlkyOmt9KSxsaW5lUGF0aHM6W10sYXJlYVBhdGhzOltdLHNlcmllc0luZGV4OmksbGluZVlQb3NpdGlvbjowLHhBcnJqOm0seUFycmo6Zix5MkFycmo6YixzZXJpZXNSYW5nZUVuZDphfSxDPXRoaXMuX2l0ZXJhdGVPdmVyRGF0YVBvaW50cyhYKFgoe30sUykse30se2l0ZXJhdGlvbnM6bz09PVwicmFuZ2VBcmVhXCI/ZVtnXS5sZW5ndGgtMTp2b2lkIDAsaXNSYW5nZVN0YXJ0OiEwfSkpO2lmKG89PT1cInJhbmdlQXJlYVwiKXt2YXIgTD10aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3NlcmllczphLGk6ZyxyZWFsSW5kZXg6cCxwcmV2WDp4LHByZXZZOmt9KSxJPXRoaXMuX2l0ZXJhdGVPdmVyRGF0YVBvaW50cyhYKFgoe30sUykse30se3NlcmllczphLHBZOnUscGF0aHNGcm9tOkwsaXRlcmF0aW9uczphW2ddLmxlbmd0aC0xLGlzUmFuZ2VTdGFydDohMX0pKTtDLmxpbmVQYXRoc1swXT1JLmxpbmVQYXRoK0MubGluZVBhdGgsQy5wYXRoRnJvbUxpbmU9SS5wYXRoRnJvbUxpbmUrQy5wYXRoRnJvbUxpbmV9dGhpcy5faGFuZGxlUGF0aHMoe3R5cGU6byxyZWFsSW5kZXg6cCxpOmcscGF0aHM6Q30pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxQb2ludHNNYWluKSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLGQucHVzaCh0aGlzLmVsU2VyaWVzKX1pZigoKHM9ci5jb25maWcuc2VyaWVzWzBdKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuekluZGV4KSE9PXZvaWQgMCYmZC5zb3J0KGZ1bmN0aW9uKEUsUil7cmV0dXJuIE51bWJlcihFLm5vZGUuZ2V0QXR0cmlidXRlKFwiekluZGV4XCIpKS1OdW1iZXIoUi5ub2RlLmdldEF0dHJpYnV0ZShcInpJbmRleFwiKSl9KSxyLmNvbmZpZy5jaGFydC5zdGFja2VkKWZvcih2YXIgej1kLmxlbmd0aDt6PjA7ei0tKWguYWRkKGRbei0xXSk7ZWxzZSBmb3IodmFyIFQ9MDtUPGQubGVuZ3RoO1QrKyloLmFkZChkW1RdKTtyZXR1cm4gaH19LHtrZXk6XCJfaW5pdFNlcmllVmFyaWFibGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBNKHRoaXMuY3R4KTt0aGlzLnhEaXZpc2lvbj1hLmdsb2JhbHMuZ3JpZFdpZHRoLyhhLmdsb2JhbHMuZGF0YVBvaW50cy0oYS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudD09PVwib25cIj8xOjApKSx0aGlzLnN0cm9rZVdpZHRoPUFycmF5LmlzQXJyYXkoYS5jb25maWcuc3Ryb2tlLndpZHRoKT9hLmNvbmZpZy5zdHJva2Uud2lkdGhbaV06YS5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PWkpLHRoaXMuaXNSZXZlcnNlZD1hLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkLHRoaXMuemVyb1k9YS5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP2EuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLHRoaXMuYXJlYUJvdHRvbVk9dGhpcy56ZXJvWSwodGhpcy56ZXJvWT5hLmdsb2JhbHMuZ3JpZEhlaWdodHx8YS5jb25maWcucGxvdE9wdGlvbnMuYXJlYS5maWxsVG89PT1cImVuZFwiKSYmKHRoaXMuYXJlYUJvdHRvbVk9YS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj10aGlzLnhEaXZpc2lvbi8yLHRoaXMuZWxTZXJpZXM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHpJbmRleDphLmNvbmZpZy5zZXJpZXNbaV0uekluZGV4IT09dm9pZCAwP2EuY29uZmlnLnNlcmllc1tpXS56SW5kZXg6aSxzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSl9KSx0aGlzLmVsUG9pbnRzTWFpbj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiLFwiZGF0YTpyZWFsSW5kZXhcIjppfSksdGhpcy5lbERhdGFMYWJlbHNXcmFwPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KTt2YXIgcj1lW3RdLmxlbmd0aD09PWEuZ2xvYmFscy5kYXRhUG9pbnRzO3RoaXMuZWxTZXJpZXMuYXR0cih7XCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpyLHJlbDp0KzEsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmFwcGVuZFBhdGhGcm9tPSEwfX0se2tleTpcIl9jYWxjdWxhdGVQYXRoc0Zyb21cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGEscyxyPWUudHlwZSxuPWUuc2VyaWVzLG89ZS5pLGg9ZS5yZWFsSW5kZXgsYz1lLnByZXZYLGQ9ZS5wcmV2WSxnPWUucHJldlkyLHA9dGhpcy53LGY9bmV3IE0odGhpcy5jdHgpO2lmKG5bb11bMF09PT1udWxsKXtmb3IodmFyIGI9MDtiPG5bb10ubGVuZ3RoO2IrKylpZihuW29dW2JdIT09bnVsbCl7Yz10aGlzLnhEaXZpc2lvbipiLGQ9dGhpcy56ZXJvWS1uW29dW2JdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sdD1mLm1vdmUoYyxkKSxpPWYubW92ZShjLHRoaXMuYXJlYUJvdHRvbVkpO2JyZWFrfX1lbHNlIHQ9Zi5tb3ZlKGMsZCkscj09PVwicmFuZ2VBcmVhXCImJih0PWYubW92ZShjLGcpK2YubGluZShjLGQpKSxpPWYubW92ZShjLHRoaXMuYXJlYUJvdHRvbVkpK2YubGluZShjLGQpO2lmKGE9Zi5tb3ZlKC0xLHRoaXMuemVyb1kpK2YubGluZSgtMSx0aGlzLnplcm9ZKSxzPWYubW92ZSgtMSx0aGlzLnplcm9ZKStmLmxpbmUoLTEsdGhpcy56ZXJvWSkscC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjApe3ZhciBtPXRoaXMubGluZUhlbHBlcnMuY2hlY2tQcmV2aW91c1BhdGhzKHtwYXRoRnJvbUxpbmU6YSxwYXRoRnJvbUFyZWE6cyxyZWFsSW5kZXg6aH0pO2E9bS5wYXRoRnJvbUxpbmUscz1tLnBhdGhGcm9tQXJlYX1yZXR1cm57cHJldlg6YyxwcmV2WTpkLGxpbmVQYXRoOnQsYXJlYVBhdGg6aSxwYXRoRnJvbUxpbmU6YSxwYXRoRnJvbUFyZWE6c319fSx7a2V5OlwiX2hhbmRsZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50eXBlLGk9ZS5yZWFsSW5kZXgsYT1lLmkscz1lLnBhdGhzLHI9dGhpcy53LG49bmV3IE0odGhpcy5jdHgpLG89bmV3IHNlKHRoaXMuY3R4KTt0aGlzLnByZXZTZXJpZXNZLnB1c2gocy55QXJyaiksci5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbaV09cy54QXJyaixyLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1tpXT1zLnlBcnJqO3ZhciBoPXIuY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztpZihoLmNvdW50PjAmJnQhPT1cInJhbmdlQXJlYVwiKXt2YXIgYz1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXVtyLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXS5sZW5ndGgtaC5jb3VudC0xXSxkPW4uZHJhd1JlY3QoYywwLHIuZ2xvYmFscy5ncmlkV2lkdGgsci5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7ci5nbG9iYWxzLmRvbS5lbEZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChkLm5vZGUpO3ZhciBnPW4uZHJhd1JlY3QoMCwwLGMsci5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7ci5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChnLm5vZGUpfXRoaXMucG9pbnRzQ2hhcnR8fHIuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dGhpcy5lbFBvaW50c01haW4ubm9kZSxpbmRleDppfSk7dmFyIHA9e2k6YSxyZWFsSW5kZXg6aSxhbmltYXRpb25EZWxheTphLGluaXRpYWxTcGVlZDpyLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpyLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQodCl9O2lmKHQ9PT1cImFyZWFcIilmb3IodmFyIGY9by5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOml9KSxiPTA7YjxzLmFyZWFQYXRocy5sZW5ndGg7YisrKXt2YXIgbT1uLnJlbmRlclBhdGhzKFgoWCh7fSxwKSx7fSx7cGF0aEZyb206cy5wYXRoRnJvbUFyZWEscGF0aFRvOnMuYXJlYVBhdGhzW2JdLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOmZ9KSk7dGhpcy5lbFNlcmllcy5hZGQobSl9aWYoci5jb25maWcuc3Ryb2tlLnNob3cmJiF0aGlzLnBvaW50c0NoYXJ0KXt2YXIgdz1udWxsO2lmKHQ9PT1cImxpbmVcIil3PW8uZmlsbFBhdGgoe3Nlcmllc051bWJlcjppLGk6YX0pO2Vsc2UgaWYoci5jb25maWcuc3Ryb2tlLmZpbGwudHlwZT09PVwic29saWRcIil3PXIuZ2xvYmFscy5zdHJva2UuY29sb3JzW2ldO2Vsc2V7dmFyIEE9ci5jb25maWcuZmlsbDtyLmNvbmZpZy5maWxsPXIuY29uZmlnLnN0cm9rZS5maWxsLHc9by5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmksaTphfSksci5jb25maWcuZmlsbD1BfWZvcih2YXIgbD0wO2w8cy5saW5lUGF0aHMubGVuZ3RoO2wrKyl7dmFyIHU9dzt0PT09XCJyYW5nZUFyZWFcIiYmKHU9by5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOml9KSk7dmFyIHg9WChYKHt9LHApLHt9LHtwYXRoRnJvbTpzLnBhdGhGcm9tTGluZSxwYXRoVG86cy5saW5lUGF0aHNbbF0sc3Ryb2tlOncsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzdHJva2VMaW5lQ2FwOnIuY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6dD09PVwicmFuZ2VBcmVhXCI/dTpcIm5vbmVcIn0pLHY9bi5yZW5kZXJQYXRocyh4KTtpZih0aGlzLmVsU2VyaWVzLmFkZCh2KSx2LmF0dHIoXCJmaWxsLXJ1bGVcIixcImV2ZW5vZGRcIiksaC5jb3VudD4wJiZ0IT09XCJyYW5nZUFyZWFcIil7dmFyIGs9bi5yZW5kZXJQYXRocyh4KTtrLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLGguZGFzaEFycmF5KSxoLnN0cm9rZVdpZHRoJiZrLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsaC5zdHJva2VXaWR0aCksdGhpcy5lbFNlcmllcy5hZGQoayksay5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2ZvcmVjYXN0TWFza1wiLmNvbmNhdChyLmdsb2JhbHMuY3VpZCxcIilcIikpLHYuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQoci5nbG9iYWxzLmN1aWQsXCIpXCIpKX19fX19LHtrZXk6XCJfaXRlcmF0ZU92ZXJEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLGE9ZS50eXBlLHM9ZS5zZXJpZXMscj1lLml0ZXJhdGlvbnMsbj1lLnJlYWxJbmRleCxvPWUuaSxoPWUueCxjPWUueSxkPWUucFgsZz1lLnBZLHA9ZS5wYXRoc0Zyb20sZj1lLmxpbmVQYXRocyxiPWUuYXJlYVBhdGhzLG09ZS5zZXJpZXNJbmRleCx3PWUubGluZVlQb3NpdGlvbixBPWUueEFycmosbD1lLnlBcnJqLHU9ZS55MkFycmoseD1lLmlzUmFuZ2VTdGFydCx2PWUuc2VyaWVzUmFuZ2VFbmQsaz10aGlzLncsUz1uZXcgTSh0aGlzLmN0eCksQz10aGlzLnlSYXRpbyxMPXAucHJldlksST1wLmxpbmVQYXRoLHo9cC5hcmVhUGF0aCxUPXAucGF0aEZyb21MaW5lLEU9cC5wYXRoRnJvbUFyZWEsUj1QLmlzTnVtYmVyKGsuZ2xvYmFscy5taW5ZQXJyW25dKT9rLmdsb2JhbHMubWluWUFycltuXTprLmdsb2JhbHMubWluWTtyfHwocj1rLmdsb2JhbHMuZGF0YVBvaW50cz4xP2suZ2xvYmFscy5kYXRhUG9pbnRzLTE6ay5nbG9iYWxzLmRhdGFQb2ludHMpO2Zvcih2YXIgTz1mdW5jdGlvbihoZSxjZSl7cmV0dXJuIGNlLWhlL0NbaS55YXhpc0luZGV4XSsyKihpLmlzUmV2ZXJzZWQ/aGUvQ1tpLnlheGlzSW5kZXhdOjApfSxEPWMsVz1rLmNvbmZpZy5jaGFydC5zdGFja2VkJiYhay5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxrLmNvbmZpZy5jaGFydC5zdGFja2VkJiZrLmdsb2JhbHMuY29tYm9DaGFydHMmJighdGhpcy53LmNvbmZpZy5jaGFydC5zdGFja09ubHlCYXJ8fCgodD10aGlzLncuY29uZmlnLnNlcmllc1tuXSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnR5cGUpPT09XCJiYXJcIiksTj0wO048cjtOKyspe3ZhciBWPXNbb11bTisxXT09PXZvaWQgMHx8c1tvXVtOKzFdPT09bnVsbDtpZihrLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGo9ay5nbG9iYWxzLnNlcmllc1hbbl1bTisxXTtrLmdsb2JhbHMuc2VyaWVzWFtuXVtOKzFdPT09dm9pZCAwJiYoaj1rLmdsb2JhbHMuc2VyaWVzWFtuXVtyLTFdKSxoPShqLWsuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpb31lbHNlIGgrPXRoaXMueERpdmlzaW9uO1c/bz4wJiZrLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDxrLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTE/dz10aGlzLnByZXZTZXJpZXNZW2Z1bmN0aW9uKGhlKXtmb3IodmFyIGNlPWhlLEo9MDtKPGsuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO0orKylpZihrLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGhlKT4tMSl7Y2UtLTticmVha31yZXR1cm4gY2U+PTA/Y2U6MH0oby0xKV1bTisxXTp3PXRoaXMuemVyb1k6dz10aGlzLnplcm9ZLFY/Yz1PKFIsdyk6KGM9TyhzW29dW04rMV0sdyksYT09PVwicmFuZ2VBcmVhXCImJihEPU8odltvXVtOKzFdLHcpKSksQS5wdXNoKGgpLFYmJmsuY29uZmlnLnN0cm9rZS5jdXJ2ZT09PVwic21vb3RoXCI/bC5wdXNoKG51bGwpOmwucHVzaChjKSx1LnB1c2goRCk7dmFyIHJlPXRoaXMubGluZUhlbHBlcnMuY2FsY3VsYXRlUG9pbnRzKHtzZXJpZXM6cyx4OmgseTpjLHJlYWxJbmRleDpuLGk6byxqOk4scHJldlk6TH0pLGVlPXRoaXMuX2NyZWF0ZVBhdGhzKHt0eXBlOmEsc2VyaWVzOnMsaTpvLHJlYWxJbmRleDpuLGo6Tix4OmgseTpjLHkyOkQseEFycmo6QSx5QXJyajpsLHkyQXJyajp1LHBYOmQscFk6ZyxsaW5lUGF0aDpJLGFyZWFQYXRoOnosbGluZVBhdGhzOmYsYXJlYVBhdGhzOmIsc2VyaWVzSW5kZXg6bSxpc1JhbmdlU3RhcnQ6eH0pO2I9ZWUuYXJlYVBhdGhzLGY9ZWUubGluZVBhdGhzLGQ9ZWUucFgsZz1lZS5wWSx6PWVlLmFyZWFQYXRoLEk9ZWUubGluZVBhdGgsIXRoaXMuYXBwZW5kUGF0aEZyb218fGsuY29uZmlnLnN0cm9rZS5jdXJ2ZT09PVwibW9ub3RvbmVDdWJpY1wiJiZhPT09XCJyYW5nZUFyZWFcInx8KFQrPVMubGluZShoLHRoaXMuemVyb1kpLEUrPVMubGluZShoLHRoaXMuemVyb1kpKSx0aGlzLmhhbmRsZU51bGxEYXRhUG9pbnRzKHMscmUsbyxOLG4pLHRoaXMuX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHMoe3R5cGU6YSxwb2ludHNQb3M6cmUsaTpvLGo6TixyZWFsSW5kZXg6bixpc1JhbmdlU3RhcnQ6eH0pfXJldHVybnt5QXJyajpsLHhBcnJqOkEscGF0aEZyb21BcmVhOkUsYXJlYVBhdGhzOmIscGF0aEZyb21MaW5lOlQsbGluZVBhdGhzOmYsbGluZVBhdGg6SSxhcmVhUGF0aDp6fX19LHtrZXk6XCJfaGFuZGxlTWFya2Vyc0FuZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZSxpPWUucG9pbnRzUG9zLGE9ZS5pc1JhbmdlU3RhcnQscz1lLmkscj1lLmosbj1lLnJlYWxJbmRleCxvPXRoaXMudyxoPW5ldyB3ZSh0aGlzLmN0eCk7aWYodGhpcy5wb2ludHNDaGFydCl0aGlzLnNjYXR0ZXIuZHJhdyh0aGlzLmVsU2VyaWVzLHIse3JlYWxJbmRleDpuLHBvaW50c1BvczppLHpSYXRpbzp0aGlzLnpSYXRpbyxlbFBhcmVudDp0aGlzLmVsUG9pbnRzTWFpbn0pO2Vsc2V7by5nbG9iYWxzLnNlcmllc1tzXS5sZW5ndGg+MSYmdGhpcy5lbFBvaW50c01haW4ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTt2YXIgYz10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2VycyhpLG4scisxKTtjIT09bnVsbCYmdGhpcy5lbFBvaW50c01haW4uYWRkKGMpfXZhciBkPWguZHJhd0RhdGFMYWJlbCh7dHlwZTp0LGlzUmFuZ2VTdGFydDphLHBvczppLGk6bixqOnIrMX0pO2QhPT1udWxsJiZ0aGlzLmVsRGF0YUxhYmVsc1dyYXAuYWRkKGQpfX0se2tleTpcIl9jcmVhdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZSxpPWUuc2VyaWVzLGE9ZS5pLHM9ZS5yZWFsSW5kZXgscj1lLmosbj1lLngsbz1lLnksaD1lLnhBcnJqLGM9ZS55QXJyaixkPWUueTIsZz1lLnkyQXJyaixwPWUucFgsZj1lLnBZLGI9ZS5saW5lUGF0aCxtPWUuYXJlYVBhdGgsdz1lLmxpbmVQYXRocyxBPWUuYXJlYVBhdGhzLGw9ZS5zZXJpZXNJbmRleCx1PWUuaXNSYW5nZVN0YXJ0LHg9dGhpcy53LHY9bmV3IE0odGhpcy5jdHgpLGs9eC5jb25maWcuc3Ryb2tlLmN1cnZlLFM9dGhpcy5hcmVhQm90dG9tWTtpZihBcnJheS5pc0FycmF5KHguY29uZmlnLnN0cm9rZS5jdXJ2ZSkmJihrPUFycmF5LmlzQXJyYXkobCk/eC5jb25maWcuc3Ryb2tlLmN1cnZlW2xbYV1dOnguY29uZmlnLnN0cm9rZS5jdXJ2ZVthXSksdD09PVwicmFuZ2VBcmVhXCImJih4Lmdsb2JhbHMuaGFzTnVsbFZhbHVlc3x8eC5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzLmNvdW50PjApJiZrPT09XCJtb25vdG9uZUN1YmljXCImJihrPVwic3RyYWlnaHRcIiksaz09PVwibW9ub3RvbmVDdWJpY1wiKXt2YXIgQz10PT09XCJyYW5nZUFyZWFcIj9oLmxlbmd0aD09PXguZ2xvYmFscy5kYXRhUG9pbnRzOnI9PT1pW2FdLmxlbmd0aC0yLEw9aC5tYXAoZnVuY3Rpb24oVyxOKXtyZXR1cm5baFtOXSxjW05dXX0pLmZpbHRlcihmdW5jdGlvbihXKXtyZXR1cm4gV1sxXSE9PW51bGx9KTtpZihDJiZMLmxlbmd0aD4xKXt2YXIgST1kdChMKTtpZihiKz1fZShJKSxpW2FdWzBdPT09bnVsbD9tPWI6bSs9X2UoSSksdD09PVwicmFuZ2VBcmVhXCImJnUpe2IrPXYubGluZShoW2gubGVuZ3RoLTFdLGdbZy5sZW5ndGgtMV0pO3ZhciB6PWguc2xpY2UoKS5yZXZlcnNlKCksVD1nLnNsaWNlKCkucmV2ZXJzZSgpLEU9ei5tYXAoZnVuY3Rpb24oVyxOKXtyZXR1cm5beltOXSxUW05dXX0pLFI9ZHQoRSk7bT1iKz1fZShSKX1lbHNlIG0rPXYubGluZShMW0wubGVuZ3RoLTFdWzBdLFMpK3YubGluZShMWzBdWzBdLFMpK3YubW92ZShMWzBdWzBdLExbMF1bMV0pK1wielwiO3cucHVzaChiKSxBLnB1c2gobSl9fWVsc2UgaWYoaz09PVwic21vb3RoXCIpe3ZhciBPPS4zNSoobi1wKTt4Lmdsb2JhbHMuaGFzTnVsbFZhbHVlcz8oaVthXVtyXSE9PW51bGwmJihpW2FdW3IrMV0hPT1udWxsPyhiPXYubW92ZShwLGYpK3YuY3VydmUocCtPLGYsbi1PLG8sbisxLG8pLG09di5tb3ZlKHArMSxmKSt2LmN1cnZlKHArTyxmLG4tTyxvLG4rMSxvKSt2LmxpbmUobixTKSt2LmxpbmUocCxTKStcInpcIik6KGI9di5tb3ZlKHAsZiksbT12Lm1vdmUocCxmKStcInpcIikpLHcucHVzaChiKSxBLnB1c2gobSkpOihiKz12LmN1cnZlKHArTyxmLG4tTyxvLG4sbyksbSs9di5jdXJ2ZShwK08sZixuLU8sbyxuLG8pKSxwPW4sZj1vLHI9PT1pW2FdLmxlbmd0aC0yJiYobT1tK3YuY3VydmUocCxmLG4sbyxuLFMpK3YubW92ZShuLG8pK1wielwiLHQ9PT1cInJhbmdlQXJlYVwiJiZ1P2I9Yit2LmN1cnZlKHAsZixuLG8sbixkKSt2Lm1vdmUobixkKStcInpcIjp4Lmdsb2JhbHMuaGFzTnVsbFZhbHVlc3x8KHcucHVzaChiKSxBLnB1c2gobSkpKX1lbHNle2lmKGlbYV1bcisxXT09PW51bGwpe2IrPXYubW92ZShuLG8pO3ZhciBEPXguZ2xvYmFscy5pc1hOdW1lcmljPyh4Lmdsb2JhbHMuc2VyaWVzWFtzXVtyXS14Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW86bi10aGlzLnhEaXZpc2lvbjttPW0rdi5saW5lKEQsUykrdi5tb3ZlKG4sbykrXCJ6XCJ9aVthXVtyXT09PW51bGwmJihiKz12Lm1vdmUobixvKSxtKz12Lm1vdmUobixTKSksaz09PVwic3RlcGxpbmVcIj8oYj1iK3YubGluZShuLG51bGwsXCJIXCIpK3YubGluZShudWxsLG8sXCJWXCIpLG09bSt2LmxpbmUobixudWxsLFwiSFwiKSt2LmxpbmUobnVsbCxvLFwiVlwiKSk6az09PVwic3RyYWlnaHRcIiYmKGIrPXYubGluZShuLG8pLG0rPXYubGluZShuLG8pKSxyPT09aVthXS5sZW5ndGgtMiYmKG09bSt2LmxpbmUobixTKSt2Lm1vdmUobixvKStcInpcIix0PT09XCJyYW5nZUFyZWFcIiYmdT9iPWIrdi5saW5lKG4sZCkrdi5tb3ZlKG4sZCkrXCJ6XCI6KHcucHVzaChiKSxBLnB1c2gobSkpKX1yZXR1cm57bGluZVBhdGhzOncsYXJlYVBhdGhzOkEscFg6cCxwWTpmLGxpbmVQYXRoOmIsYXJlYVBhdGg6bX19fSx7a2V5OlwiaGFuZGxlTnVsbERhdGFQb2ludHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMpe3ZhciByPXRoaXMudztpZihlW2ldW2FdPT09bnVsbCYmci5jb25maWcubWFya2Vycy5zaG93TnVsbERhdGFQb2ludHN8fGVbaV0ubGVuZ3RoPT09MSl7dmFyIG49dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnModCxzLGErMSx0aGlzLnN0cm9rZVdpZHRoLXIuY29uZmlnLm1hcmtlcnMuc3Ryb2tlV2lkdGgvMiwhMCk7biE9PW51bGwmJnRoaXMuZWxQb2ludHNNYWluLmFkZChuKX19fV0pLHl9KCk7d2luZG93LlRyZWVtYXBTcXVhcmVkPXt9LHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkobixvLGgsYyl7dGhpcy54b2Zmc2V0PW4sdGhpcy55b2Zmc2V0PW8sdGhpcy5oZWlnaHQ9Yyx0aGlzLndpZHRoPWgsdGhpcy5zaG9ydGVzdEVkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5oZWlnaHQsdGhpcy53aWR0aCl9LHRoaXMuZ2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24oZCl7dmFyIGcscD1bXSxmPXRoaXMueG9mZnNldCxiPXRoaXMueW9mZnNldCxtPXMoZCkvdGhpcy5oZWlnaHQsdz1zKGQpL3RoaXMud2lkdGg7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpZm9yKGc9MDtnPGQubGVuZ3RoO2crKylwLnB1c2goW2YsYixmK20sYitkW2ddL21dKSxiKz1kW2ddL207ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXAucHVzaChbZixiLGYrZFtnXS93LGIrd10pLGYrPWRbZ10vdztyZXR1cm4gcH0sdGhpcy5jdXRBcmVhPWZ1bmN0aW9uKGQpe3ZhciBnO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KXt2YXIgcD1kL3RoaXMuaGVpZ2h0LGY9dGhpcy53aWR0aC1wO2c9bmV3IHkodGhpcy54b2Zmc2V0K3AsdGhpcy55b2Zmc2V0LGYsdGhpcy5oZWlnaHQpfWVsc2V7dmFyIGI9ZC90aGlzLndpZHRoLG09dGhpcy5oZWlnaHQtYjtnPW5ldyB5KHRoaXMueG9mZnNldCx0aGlzLnlvZmZzZXQrYix0aGlzLndpZHRoLG0pfXJldHVybiBnfX1mdW5jdGlvbiBlKG4sbyxoLGMsZCl7Yz1jPT09dm9pZCAwPzA6YyxkPWQ9PT12b2lkIDA/MDpkO3ZhciBnPXQoZnVuY3Rpb24ocCxmKXt2YXIgYixtPVtdLHc9Zi9zKHApO2ZvcihiPTA7YjxwLmxlbmd0aDtiKyspbVtiXT1wW2JdKnc7cmV0dXJuIG19KG4sbypoKSxbXSxuZXcgeShjLGQsbyxoKSxbXSk7cmV0dXJuIGZ1bmN0aW9uKHApe3ZhciBmLGIsbT1bXTtmb3IoZj0wO2Y8cC5sZW5ndGg7ZisrKWZvcihiPTA7YjxwW2ZdLmxlbmd0aDtiKyspbS5wdXNoKHBbZl1bYl0pO3JldHVybiBtfShnKX1mdW5jdGlvbiB0KG4sbyxoLGMpe3ZhciBkLGcscDtpZihuLmxlbmd0aCE9PTApcmV0dXJuIGQ9aC5zaG9ydGVzdEVkZ2UoKSxmdW5jdGlvbihmLGIsbSl7dmFyIHc7aWYoZi5sZW5ndGg9PT0wKXJldHVybiEwOyh3PWYuc2xpY2UoKSkucHVzaChiKTt2YXIgQT1pKGYsbSksbD1pKHcsbSk7cmV0dXJuIEE+PWx9KG8sZz1uWzBdLGQpPyhvLnB1c2goZyksdChuLnNsaWNlKDEpLG8saCxjKSk6KHA9aC5jdXRBcmVhKHMobyksYyksYy5wdXNoKGguZ2V0Q29vcmRpbmF0ZXMobykpLHQobixbXSxwLGMpKSxjO2MucHVzaChoLmdldENvb3JkaW5hdGVzKG8pKX1mdW5jdGlvbiBpKG4sbyl7dmFyIGg9TWF0aC5taW4uYXBwbHkoTWF0aCxuKSxjPU1hdGgubWF4LmFwcGx5KE1hdGgsbiksZD1zKG4pO3JldHVybiBNYXRoLm1heChNYXRoLnBvdyhvLDIpKmMvTWF0aC5wb3coZCwyKSxNYXRoLnBvdyhkLDIpLyhNYXRoLnBvdyhvLDIpKmgpKX1mdW5jdGlvbiBhKG4pe3JldHVybiBuJiZuLmNvbnN0cnVjdG9yPT09QXJyYXl9ZnVuY3Rpb24gcyhuKXt2YXIgbyxoPTA7Zm9yKG89MDtvPG4ubGVuZ3RoO28rKyloKz1uW29dO3JldHVybiBofWZ1bmN0aW9uIHIobil7dmFyIG8saD0wO2lmKGEoblswXSkpZm9yKG89MDtvPG4ubGVuZ3RoO28rKyloKz1yKG5bb10pO2Vsc2UgaD1zKG4pO3JldHVybiBofXJldHVybiBmdW5jdGlvbiBuKG8saCxjLGQsZyl7ZD1kPT09dm9pZCAwPzA6ZCxnPWc9PT12b2lkIDA/MDpnO3ZhciBwLGYsYj1bXSxtPVtdO2lmKGEob1swXSkpe2ZvcihmPTA7ZjxvLmxlbmd0aDtmKyspYltmXT1yKG9bZl0pO2ZvcihwPWUoYixoLGMsZCxnKSxmPTA7ZjxvLmxlbmd0aDtmKyspbS5wdXNoKG4ob1tmXSxwW2ZdWzJdLXBbZl1bMF0scFtmXVszXS1wW2ZdWzFdLHBbZl1bMF0scFtmXVsxXSkpfWVsc2UgbT1lKG8saCxjLGQsZyk7cmV0dXJuIG19fSgpO3ZhciBtZSxPZSxCdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy5oZWxwZXJzPW5ldyBsdChlKSx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMubGFiZWxzPVtdfXJldHVybiBZKHksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPW5ldyBNKHRoaXMuY3R4KSxzPW5ldyBzZSh0aGlzLmN0eCkscj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJlZW1hcFwifSk7aWYoaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gcjt2YXIgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3ZhciBoPW8ubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBNYXRoLmFicyhjKX0pO24ucHVzaChoKX0pLHRoaXMubmVnUmFuZ2U9dGhpcy5oZWxwZXJzLmNoZWNrQ29sb3JSYW5nZSgpLGkuY29uZmlnLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKG8saCl7by5kYXRhLmZvckVhY2goZnVuY3Rpb24oYyl7QXJyYXkuaXNBcnJheSh0LmxhYmVsc1toXSl8fCh0LmxhYmVsc1toXT1bXSksdC5sYWJlbHNbaF0ucHVzaChjLngpfSl9KSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGUobixpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KS5mb3JFYWNoKGZ1bmN0aW9uKG8saCl7dmFyIGM9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbaF0pLHJlbDpoKzEsXCJkYXRhOnJlYWxJbmRleFwiOmh9KTtpZihpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3ICQodC5jdHgpLmRyb3BTaGFkb3cocixkLGgpfXZhciBnPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7by5mb3JFYWNoKGZ1bmN0aW9uKHAsZil7dmFyIGI9cFswXSxtPXBbMV0sdz1wWzJdLEE9cFszXSxsPWEuZHJhd1JlY3QoYixtLHctYixBLW0saS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5ib3JkZXJSYWRpdXMsXCIjZmZmXCIsMSx0LnN0cm9rZVdpZHRoLGkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/eDppLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1toXSk7bC5hdHRyKHtjeDpiLGN5Om0saW5kZXg6aCxpOmgsajpmLHdpZHRoOnctYixoZWlnaHQ6QS1tfSk7dmFyIHU9dC5oZWxwZXJzLmdldFNoYWRlQ29sb3IoaS5jb25maWcuY2hhcnQudHlwZSxoLGYsdC5uZWdSYW5nZSkseD11LmNvbG9yO2kuY29uZmlnLnNlcmllc1toXS5kYXRhW2ZdIT09dm9pZCAwJiZpLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtmXS5maWxsQ29sb3ImJih4PWkuY29uZmlnLnNlcmllc1toXS5kYXRhW2ZdLmZpbGxDb2xvcik7dmFyIHY9cy5maWxsUGF0aCh7Y29sb3I6eCxzZXJpZXNOdW1iZXI6aCxkYXRhUG9pbnRJbmRleDpmfSk7bC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRyZWVtYXAtcmVjdFwiKSxsLmF0dHIoe2ZpbGw6dn0pLHQuaGVscGVycy5hZGRMaXN0ZW5lcnMobCk7dmFyIGs9e3g6Yisody1iKS8yLHk6bSsoQS1tKS8yLHdpZHRoOjAsaGVpZ2h0OjB9LFM9e3g6Yix5Om0sd2lkdGg6dy1iLGhlaWdodDpBLW19O2lmKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEM9MTtpLmdsb2JhbHMucmVzaXplZHx8KEM9aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksdC5hbmltYXRlVHJlZW1hcChsLGssUyxDKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBMPTE7dC5keW5hbWljQW5pbS5lbmFibGVkJiZpLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKEw9dC5keW5hbWljQW5pbS5zcGVlZCxpLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bZl0mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW2ZdLnJlY3QmJihrPWkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW2ZdLnJlY3QpLHQuYW5pbWF0ZVRyZWVtYXAobCxrLFMsTCkpfXZhciBJPXQuZ2V0Rm9udFNpemUocCksej1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcih0LmxhYmVsc1toXVtmXSx7dmFsdWU6aS5nbG9iYWxzLnNlcmllc1toXVtmXSxzZXJpZXNJbmRleDpoLGRhdGFQb2ludEluZGV4OmYsdzppfSk7aS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kYXRhTGFiZWxzLmZvcm1hdD09PVwidHJ1bmNhdGVcIiYmKEk9cGFyc2VJbnQoaS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCksej10LnRydW5jYXRlTGFiZWxzKHosSSxiLG0sdyxBKSk7dmFyIFQ9dC5oZWxwZXJzLmNhbGN1bGF0ZURhdGFMYWJlbHMoe3RleHQ6eix4OihiK3cpLzIseToobStBKS8yK3Quc3Ryb2tlV2lkdGgvMitJLzMsaTpoLGo6Zixjb2xvclByb3BzOnUsZm9udFNpemU6SSxzZXJpZXM6ZX0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmVCYmdC5yb3RhdGVUb0ZpdExhYmVsKFQsSSx6LGIsbSx3LEEpLGMuYWRkKGwpLFQhPT1udWxsJiZjLmFkZChUKX0pLGMuYWRkKGcpLHIuYWRkKGMpfSkscn19LHtrZXk6XCJnZXRGb250U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpLGEscyxyLG49ZnVuY3Rpb24gbyhoKXt2YXIgYyxkPTA7aWYoQXJyYXkuaXNBcnJheShoWzBdKSlmb3IoYz0wO2M8aC5sZW5ndGg7YysrKWQrPW8oaFtjXSk7ZWxzZSBmb3IoYz0wO2M8aC5sZW5ndGg7YysrKWQrPWhbY10ubGVuZ3RoO3JldHVybiBkfSh0aGlzLmxhYmVscykvZnVuY3Rpb24gbyhoKXt2YXIgYyxkPTA7aWYoQXJyYXkuaXNBcnJheShoWzBdKSlmb3IoYz0wO2M8aC5sZW5ndGg7YysrKWQrPW8oaFtjXSk7ZWxzZSBmb3IoYz0wO2M8aC5sZW5ndGg7YysrKWQrPTE7cmV0dXJuIGR9KHRoaXMubGFiZWxzKTtyZXR1cm4gaT1lWzJdLWVbMF0sYT1lWzNdLWVbMV0scz1pKmEscj1NYXRoLnBvdyhzLC41KSxNYXRoLm1pbihyL24scGFyc2VJbnQodC5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkpfX0se2tleTpcInJvdGF0ZVRvRml0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscixuKXt2YXIgbz1uZXcgTSh0aGlzLmN0eCksaD1vLmdldFRleHRSZWN0cyhpLHQpO2lmKGgud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5yLWEmJmgud2lkdGg8PW4tcyl7dmFyIGM9by5yb3RhdGVBcm91bmRDZW50ZXIoZS5ub2RlKTtlLm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChjLngsXCIgXCIpLmNvbmNhdChjLnksXCIpIHRyYW5zbGF0ZShcIikuY29uY2F0KGguaGVpZ2h0LzMsXCIpXCIpKX19fSx7a2V5OlwidHJ1bmNhdGVMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscil7dmFyIG49bmV3IE0odGhpcy5jdHgpLG89bi5nZXRUZXh0UmVjdHMoZSx0KS53aWR0aCt0aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCs1PnMtaSYmci1hPnMtaT9yLWE6cy1pLGg9bi5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKHt0ZXh0OmUsbWF4V2lkdGg6byxmb250U2l6ZTp0fSk7cmV0dXJuIGUubGVuZ3RoIT09aC5sZW5ndGgmJm8vdDw1P1wiXCI6aH19LHtrZXk6XCJhbmltYXRlVHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPW5ldyBnZSh0aGlzLmN0eCk7cy5hbmltYXRlUmVjdChlLHt4OnQueCx5OnQueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH0se3g6aS54LHk6aS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxhLGZ1bmN0aW9uKCl7cy5hbmltYXRpb25Db21wbGV0ZWQoZSl9KX19XSkseX0oKSxHdD04NjQwMCxWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRpbWVTY2FsZUFycmF5PVtdLHRoaXMudXRjPXRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDfXJldHVybiBZKHksW3trZXk6XCJjYWxjdWxhdGVUaW1lU2NhbGVUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPXRoaXMudztpZihhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiBhLmdsb2JhbHMubGFiZWxzPVtdLGEuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9W10sW107dmFyIHM9bmV3IEIodGhpcy5jdHgpLHI9KHQtZSkvODY0ZTU7dGhpcy5kZXRlcm1pbmVJbnRlcnZhbChyKSxhLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMSxhLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITEscjwuMDAwMTE1NzQwNzQwNzQwNzQwNzU/YS5nbG9iYWxzLmRpc2FibGVab29tSW49ITA6cj41ZTQmJihhLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITApO3ZhciBuPXMuZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcChlLHQsdGhpcy51dGMpLG89YS5nbG9iYWxzLmdyaWRXaWR0aC9yLGg9by8yNCxjPWgvNjAsZD1jLzYwLGc9TWF0aC5mbG9vcigyNCpyKSxwPU1hdGguZmxvb3IoMTQ0MCpyKSxmPU1hdGguZmxvb3IocipHdCksYj1NYXRoLmZsb29yKHIpLG09TWF0aC5mbG9vcihyLzMwKSx3PU1hdGguZmxvb3Ioci8zNjUpLEE9e21pbk1pbGxpc2Vjb25kOm4ubWluTWlsbGlzZWNvbmQsbWluU2Vjb25kOm4ubWluU2Vjb25kLG1pbk1pbnV0ZTpuLm1pbk1pbnV0ZSxtaW5Ib3VyOm4ubWluSG91cixtaW5EYXRlOm4ubWluRGF0ZSxtaW5Nb250aDpuLm1pbk1vbnRoLG1pblllYXI6bi5taW5ZZWFyfSxsPXtmaXJzdFZhbDpBLGN1cnJlbnRNaWxsaXNlY29uZDpBLm1pbk1pbGxpc2Vjb25kLGN1cnJlbnRTZWNvbmQ6QS5taW5TZWNvbmQsY3VycmVudE1pbnV0ZTpBLm1pbk1pbnV0ZSxjdXJyZW50SG91cjpBLm1pbkhvdXIsY3VycmVudE1vbnRoRGF0ZTpBLm1pbkRhdGUsY3VycmVudERhdGU6QS5taW5EYXRlLGN1cnJlbnRNb250aDpBLm1pbk1vbnRoLGN1cnJlbnRZZWFyOkEubWluWWVhcixkYXlzV2lkdGhPblhBeGlzOm8saG91cnNXaWR0aE9uWEF4aXM6aCxtaW51dGVzV2lkdGhPblhBeGlzOmMsc2Vjb25kc1dpZHRoT25YQXhpczpkLG51bWJlck9mU2Vjb25kczpmLG51bWJlck9mTWludXRlczpwLG51bWJlck9mSG91cnM6ZyxudW1iZXJPZkRheXM6YixudW1iZXJPZk1vbnRoczptLG51bWJlck9mWWVhcnM6d307c3dpdGNoKHRoaXMudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOnRoaXMuZ2VuZXJhdGVZZWFyU2NhbGUobCk7YnJlYWs7Y2FzZVwibW9udGhzXCI6Y2FzZVwiaGFsZl95ZWFyXCI6dGhpcy5nZW5lcmF0ZU1vbnRoU2NhbGUobCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjpjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6Y2FzZVwiZGF5c1wiOmNhc2VcIndlZWtfZGF5c1wiOnRoaXMuZ2VuZXJhdGVEYXlTY2FsZShsKTticmVhaztjYXNlXCJob3Vyc1wiOnRoaXMuZ2VuZXJhdGVIb3VyU2NhbGUobCk7YnJlYWs7Y2FzZVwibWludXRlc19maXZlc1wiOmNhc2VcIm1pbnV0ZXNcIjp0aGlzLmdlbmVyYXRlTWludXRlU2NhbGUobCk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6Y2FzZVwic2Vjb25kc19maXZlc1wiOmNhc2VcInNlY29uZHNcIjp0aGlzLmdlbmVyYXRlU2Vjb25kU2NhbGUobCl9dmFyIHU9dGhpcy50aW1lU2NhbGVBcnJheS5tYXAoZnVuY3Rpb24oeCl7dmFyIHY9e3Bvc2l0aW9uOngucG9zaXRpb24sdW5pdDp4LnVuaXQseWVhcjp4LnllYXIsZGF5OnguZGF5P3guZGF5OjEsaG91cjp4LmhvdXI/eC5ob3VyOjAsbW9udGg6eC5tb250aCsxfTtyZXR1cm4geC51bml0PT09XCJtb250aFwiP1goWCh7fSx2KSx7fSx7ZGF5OjEsdmFsdWU6eC52YWx1ZSsxfSk6eC51bml0PT09XCJkYXlcInx8eC51bml0PT09XCJob3VyXCI/WChYKHt9LHYpLHt9LHt2YWx1ZTp4LnZhbHVlfSk6eC51bml0PT09XCJtaW51dGVcIj9YKFgoe30sdikse30se3ZhbHVlOngudmFsdWUsbWludXRlOngudmFsdWV9KTp4LnVuaXQ9PT1cInNlY29uZFwiP1goWCh7fSx2KSx7fSx7dmFsdWU6eC52YWx1ZSxtaW51dGU6eC5taW51dGUsc2Vjb25kOnguc2Vjb25kfSk6eH0pO3JldHVybiB1LmZpbHRlcihmdW5jdGlvbih4KXt2YXIgdj0xLGs9TWF0aC5jZWlsKGEuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSxTPXgudmFsdWU7YS5jb25maWcueGF4aXMudGlja0Ftb3VudCE9PXZvaWQgMCYmKGs9YS5jb25maWcueGF4aXMudGlja0Ftb3VudCksdS5sZW5ndGg+ayYmKHY9TWF0aC5mbG9vcih1Lmxlbmd0aC9rKSk7dmFyIEM9ITEsTD0hMTtzd2l0Y2goaS50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6eC51bml0PT09XCJ5ZWFyXCImJihDPSEwKTticmVhaztjYXNlXCJoYWxmX3llYXJcIjp2PTcseC51bml0PT09XCJ5ZWFyXCImJihDPSEwKTticmVhaztjYXNlXCJtb250aHNcIjp2PTEseC51bml0PT09XCJ5ZWFyXCImJihDPSEwKTticmVhaztjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6dj0xNSx4LnVuaXQhPT1cInllYXJcIiYmeC51bml0IT09XCJtb250aFwifHwoQz0hMCksUz09PTMwJiYoTD0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjp2PTEwLHgudW5pdD09PVwibW9udGhcIiYmKEM9ITApLFM9PT0zMCYmKEw9ITApO2JyZWFrO2Nhc2VcIndlZWtfZGF5c1wiOnY9OCx4LnVuaXQ9PT1cIm1vbnRoXCImJihDPSEwKTticmVhaztjYXNlXCJkYXlzXCI6dj0xLHgudW5pdD09PVwibW9udGhcIiYmKEM9ITApO2JyZWFrO2Nhc2VcImhvdXJzXCI6eC51bml0PT09XCJkYXlcIiYmKEM9ITApO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6UyU1IT0wJiYoTD0hMCk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6UyUxMCE9MCYmKEw9ITApfWlmKGkudGlja0ludGVydmFsPT09XCJob3Vyc1wifHxpLnRpY2tJbnRlcnZhbD09PVwibWludXRlc19maXZlc1wifHxpLnRpY2tJbnRlcnZhbD09PVwic2Vjb25kc190ZW5zXCJ8fGkudGlja0ludGVydmFsPT09XCJzZWNvbmRzX2ZpdmVzXCIpe2lmKCFMKXJldHVybiEwfWVsc2UgaWYoKFMldj09MHx8QykmJiFMKXJldHVybiEwfSl9fSx7a2V5OlwicmVjYWxjRGltZW5zaW9uc0Jhc2VkT25Gb3JtYXRcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPXRoaXMuZm9ybWF0RGF0ZXMoZSkscz10aGlzLnJlbW92ZU92ZXJsYXBwaW5nVFMoYSk7aS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1zLnNsaWNlKCksbmV3IFJlKHRoaXMuY3R4KS5wbG90Q29vcmRzKCl9fSx7a2V5OlwiZGV0ZXJtaW5lSW50ZXJ2YWxcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0yNCplLGk9NjAqdDtzd2l0Y2goITApe2Nhc2UgZS8zNjU+NTp0aGlzLnRpY2tJbnRlcnZhbD1cInllYXJzXCI7YnJlYWs7Y2FzZSBlPjgwMDp0aGlzLnRpY2tJbnRlcnZhbD1cImhhbGZfeWVhclwiO2JyZWFrO2Nhc2UgZT4xODA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNcIjticmVhaztjYXNlIGU+OTA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZm9ydG5pZ2h0XCI7YnJlYWs7Y2FzZSBlPjYwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2RheXNcIjticmVhaztjYXNlIGU+MzA6dGhpcy50aWNrSW50ZXJ2YWw9XCJ3ZWVrX2RheXNcIjticmVhaztjYXNlIGU+Mjp0aGlzLnRpY2tJbnRlcnZhbD1cImRheXNcIjticmVhaztjYXNlIHQ+Mi40OnRoaXMudGlja0ludGVydmFsPVwiaG91cnNcIjticmVhaztjYXNlIGk+MTU6dGhpcy50aWNrSW50ZXJ2YWw9XCJtaW51dGVzX2ZpdmVzXCI7YnJlYWs7Y2FzZSBpPjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJtaW51dGVzXCI7YnJlYWs7Y2FzZSBpPjE6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzX3RlbnNcIjticmVhaztjYXNlIDYwKmk+MjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzX2ZpdmVzXCI7YnJlYWs7ZGVmYXVsdDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNcIn19fSx7a2V5OlwiZ2VuZXJhdGVZZWFyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0VmFsLGk9ZS5jdXJyZW50TW9udGgsYT1lLmN1cnJlbnRZZWFyLHM9ZS5kYXlzV2lkdGhPblhBeGlzLHI9ZS5udW1iZXJPZlllYXJzLG49dC5taW5ZZWFyLG89MCxoPW5ldyBCKHRoaXMuY3R4KSxjPVwieWVhclwiO2lmKHQubWluRGF0ZT4xfHx0Lm1pbk1vbnRoPjApe3ZhciBkPWguZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhcih0Lm1pblllYXIsdC5taW5Nb250aCx0Lm1pbkRhdGUpO289KGguZGV0ZXJtaW5lRGF5c09mWWVhcih0Lm1pblllYXIpLWQrMSkqcyxuPXQubWluWWVhcisxLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246byx2YWx1ZTpuLHVuaXQ6Yyx5ZWFyOm4sbW9udGg6UC5tb250aE1vZChpKzEpfSl9ZWxzZSB0Lm1pbkRhdGU9PT0xJiZ0Lm1pbk1vbnRoPT09MCYmdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpvLHZhbHVlOm4sdW5pdDpjLHllYXI6YSxtb250aDpQLm1vbnRoTW9kKGkrMSl9KTtmb3IodmFyIGc9bixwPW8sZj0wO2Y8cjtmKyspZysrLHA9aC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGctMSkqcytwLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246cCx2YWx1ZTpnLHVuaXQ6Yyx5ZWFyOmcsbW9udGg6MX0pfX0se2tleTpcImdlbmVyYXRlTW9udGhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlyc3RWYWwsaT1lLmN1cnJlbnRNb250aERhdGUsYT1lLmN1cnJlbnRNb250aCxzPWUuY3VycmVudFllYXIscj1lLmRheXNXaWR0aE9uWEF4aXMsbj1lLm51bWJlck9mTW9udGhzLG89YSxoPTAsYz1uZXcgQih0aGlzLmN0eCksZD1cIm1vbnRoXCIsZz0wO2lmKHQubWluRGF0ZT4xKXtoPShjLmRldGVybWluZURheXNPZk1vbnRocyhhKzEsdC5taW5ZZWFyKS1pKzEpKnIsbz1QLm1vbnRoTW9kKGErMSk7dmFyIHA9cytnLGY9UC5tb250aE1vZChvKSxiPW87bz09PTAmJihkPVwieWVhclwiLGI9cCxmPTEscCs9Zys9MSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpoLHZhbHVlOmIsdW5pdDpkLHllYXI6cCxtb250aDpmfSl9ZWxzZSB0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmgsdmFsdWU6byx1bml0OmQseWVhcjpzLG1vbnRoOlAubW9udGhNb2QoYSl9KTtmb3IodmFyIG09bysxLHc9aCxBPTAsbD0xO0E8bjtBKyssbCsrKXsobT1QLm1vbnRoTW9kKG0pKT09PTA/KGQ9XCJ5ZWFyXCIsZys9MSk6ZD1cIm1vbnRoXCI7dmFyIHU9dGhpcy5fZ2V0WWVhcihzLG0sZyk7dz1jLmRldGVybWluZURheXNPZk1vbnRocyhtLHUpKnIrdzt2YXIgeD1tPT09MD91Om07dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp3LHZhbHVlOngsdW5pdDpkLHllYXI6dSxtb250aDptPT09MD8xOm19KSxtKyt9fX0se2tleTpcImdlbmVyYXRlRGF5U2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0VmFsLGk9ZS5jdXJyZW50TW9udGgsYT1lLmN1cnJlbnRZZWFyLHM9ZS5ob3Vyc1dpZHRoT25YQXhpcyxyPWUubnVtYmVyT2ZEYXlzLG49bmV3IEIodGhpcy5jdHgpLG89XCJkYXlcIixoPXQubWluRGF0ZSsxLGM9aCxkPWZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gbD5uLmRldGVybWluZURheXNPZk1vbnRocyh1KzEseCkmJihjPTEsbz1cIm1vbnRoXCIscD11Kz0xKSx1fSxnPSgyNC10Lm1pbkhvdXIpKnMscD1oLGY9ZChjLGksYSk7dC5taW5Ib3VyPT09MCYmdC5taW5EYXRlPT09MT8oZz0wLHA9UC5tb250aE1vZCh0Lm1pbk1vbnRoKSxvPVwibW9udGhcIixjPXQubWluRGF0ZSk6dC5taW5EYXRlIT09MSYmdC5taW5Ib3VyPT09MCYmdC5taW5NaW51dGU9PT0wJiYoZz0wLGg9dC5taW5EYXRlLHA9aCxmPWQoYz1oLGksYSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTpwLHVuaXQ6byx5ZWFyOnRoaXMuX2dldFllYXIoYSxmLDApLG1vbnRoOlAubW9udGhNb2QoZiksZGF5OmN9KTtmb3IodmFyIGI9ZyxtPTA7bTxyO20rKyl7bz1cImRheVwiLGY9ZChjKz0xLGYsdGhpcy5fZ2V0WWVhcihhLGYsMCkpO3ZhciB3PXRoaXMuX2dldFllYXIoYSxmLDApO2I9MjQqcytiO3ZhciBBPWM9PT0xP1AubW9udGhNb2QoZik6Yzt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6QSx1bml0Om8seWVhcjp3LG1vbnRoOlAubW9udGhNb2QoZiksZGF5OkF9KX19fSx7a2V5OlwiZ2VuZXJhdGVIb3VyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0VmFsLGk9ZS5jdXJyZW50RGF0ZSxhPWUuY3VycmVudE1vbnRoLHM9ZS5jdXJyZW50WWVhcixyPWUubWludXRlc1dpZHRoT25YQXhpcyxuPWUubnVtYmVyT2ZIb3VycyxvPW5ldyBCKHRoaXMuY3R4KSxoPVwiaG91clwiLGM9ZnVuY3Rpb24odixrKXtyZXR1cm4gdj5vLmRldGVybWluZURheXNPZk1vbnRocyhrKzEscykmJihtPTEsays9MSkse21vbnRoOmssZGF0ZTptfX0sZD1mdW5jdGlvbih2LGspe3JldHVybiB2Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGsrMSxzKT9rKz0xOmt9LGc9NjAtKHQubWluTWludXRlK3QubWluU2Vjb25kLzYwKSxwPWcqcixmPXQubWluSG91cisxLGI9ZjtnPT09NjAmJihwPTAsYj1mPXQubWluSG91cik7dmFyIG09aTtiPj0yNCYmKGI9MCxtKz0xLGg9XCJkYXlcIik7dmFyIHc9YyhtLGEpLm1vbnRoO3c9ZChtLHcpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246cCx2YWx1ZTpmLHVuaXQ6aCxkYXk6bSxob3VyOmIseWVhcjpzLG1vbnRoOlAubW9udGhNb2Qodyl9KSxiKys7Zm9yKHZhciBBPXAsbD0wO2w8bjtsKyspe2g9XCJob3VyXCIsYj49MjQmJihiPTAsaD1cImRheVwiLHc9YyhtKz0xLHcpLm1vbnRoLHc9ZChtLHcpKTt2YXIgdT10aGlzLl9nZXRZZWFyKHMsdywwKTtBPTYwKnIrQTt2YXIgeD1iPT09MD9tOmI7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpBLHZhbHVlOngsdW5pdDpoLGhvdXI6YixkYXk6bSx5ZWFyOnUsbW9udGg6UC5tb250aE1vZCh3KX0pLGIrK319fSx7a2V5OlwiZ2VuZXJhdGVNaW51dGVTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmN1cnJlbnRNaWxsaXNlY29uZCxpPWUuY3VycmVudFNlY29uZCxhPWUuY3VycmVudE1pbnV0ZSxzPWUuY3VycmVudEhvdXIscj1lLmN1cnJlbnREYXRlLG49ZS5jdXJyZW50TW9udGgsbz1lLmN1cnJlbnRZZWFyLGg9ZS5taW51dGVzV2lkdGhPblhBeGlzLGM9ZS5zZWNvbmRzV2lkdGhPblhBeGlzLGQ9ZS5udW1iZXJPZk1pbnV0ZXMsZz1hKzEscD1yLGY9bixiPW8sbT1zLHc9KDYwLWktdC8xZTMpKmMsQT0wO0E8ZDtBKyspZz49NjAmJihnPTAsKG0rPTEpPT09MjQmJihtPTApKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOncsdmFsdWU6Zyx1bml0OlwibWludXRlXCIsaG91cjptLG1pbnV0ZTpnLGRheTpwLHllYXI6dGhpcy5fZ2V0WWVhcihiLGYsMCksbW9udGg6UC5tb250aE1vZChmKX0pLHcrPWgsZysrfX0se2tleTpcImdlbmVyYXRlU2Vjb25kU2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5jdXJyZW50TWlsbGlzZWNvbmQsaT1lLmN1cnJlbnRTZWNvbmQsYT1lLmN1cnJlbnRNaW51dGUscz1lLmN1cnJlbnRIb3VyLHI9ZS5jdXJyZW50RGF0ZSxuPWUuY3VycmVudE1vbnRoLG89ZS5jdXJyZW50WWVhcixoPWUuc2Vjb25kc1dpZHRoT25YQXhpcyxjPWUubnVtYmVyT2ZTZWNvbmRzLGQ9aSsxLGc9YSxwPXIsZj1uLGI9byxtPXMsdz0oMWUzLXQpLzFlMypoLEE9MDtBPGM7QSsrKWQ+PTYwJiYoZD0wLCsrZz49NjAmJihnPTAsKyttPT09MjQmJihtPTApKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp3LHZhbHVlOmQsdW5pdDpcInNlY29uZFwiLGhvdXI6bSxtaW51dGU6ZyxzZWNvbmQ6ZCxkYXk6cCx5ZWFyOnRoaXMuX2dldFllYXIoYixmLDApLG1vbnRoOlAubW9udGhNb2QoZil9KSx3Kz1oLGQrK319LHtrZXk6XCJjcmVhdGVSYXdEYXRlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLnllYXI7cmV0dXJuIGUubW9udGg9PT0wJiYoZS5tb250aD0xKSxpKz1cIi1cIisoXCIwXCIrZS5tb250aC50b1N0cmluZygpKS5zbGljZSgtMiksZS51bml0PT09XCJkYXlcIj9pKz1lLnVuaXQ9PT1cImRheVwiP1wiLVwiKyhcIjBcIit0KS5zbGljZSgtMik6XCItMDFcIjppKz1cIi1cIisoXCIwXCIrKGUuZGF5P2UuZGF5OlwiMVwiKSkuc2xpY2UoLTIpLGUudW5pdD09PVwiaG91clwiP2krPWUudW5pdD09PVwiaG91clwiP1wiVFwiKyhcIjBcIit0KS5zbGljZSgtMik6XCJUMDBcIjppKz1cIlRcIisoXCIwXCIrKGUuaG91cj9lLmhvdXI6XCIwXCIpKS5zbGljZSgtMiksZS51bml0PT09XCJtaW51dGVcIj9pKz1cIjpcIisoXCIwXCIrdCkuc2xpY2UoLTIpOmkrPVwiOlwiKyhlLm1pbnV0ZT8oXCIwXCIrZS5taW51dGUpLnNsaWNlKC0yKTpcIjAwXCIpLGUudW5pdD09PVwic2Vjb25kXCI/aSs9XCI6XCIrKFwiMFwiK3QpLnNsaWNlKC0yKTppKz1cIjowMFwiLHRoaXMudXRjJiYoaSs9XCIuMDAwWlwiKSxpfX0se2tleTpcImZvcm1hdERhdGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudztyZXR1cm4gZS5tYXAoZnVuY3Rpb24oYSl7dmFyIHM9YS52YWx1ZS50b1N0cmluZygpLHI9bmV3IEIodC5jdHgpLG49dC5jcmVhdGVSYXdEYXRlU3RyaW5nKGEscyksbz1yLmdldERhdGUoci5wYXJzZURhdGUobikpO2lmKHQudXRjfHwobz1yLmdldERhdGUoci5wYXJzZURhdGVXaXRoVGltZXpvbmUobikpKSxpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0PT09dm9pZCAwKXt2YXIgaD1cImRkIE1NTVwiLGM9aS5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lRm9ybWF0dGVyO2EudW5pdD09PVwieWVhclwiJiYoaD1jLnllYXIpLGEudW5pdD09PVwibW9udGhcIiYmKGg9Yy5tb250aCksYS51bml0PT09XCJkYXlcIiYmKGg9Yy5kYXkpLGEudW5pdD09PVwiaG91clwiJiYoaD1jLmhvdXIpLGEudW5pdD09PVwibWludXRlXCImJihoPWMubWludXRlKSxhLnVuaXQ9PT1cInNlY29uZFwiJiYoaD1jLnNlY29uZCkscz1yLmZvcm1hdERhdGUobyxoKX1lbHNlIHM9ci5mb3JtYXREYXRlKG8saS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCk7cmV0dXJue2RhdGVTdHJpbmc6bixwb3NpdGlvbjphLnBvc2l0aW9uLHZhbHVlOnMsdW5pdDphLnVuaXQseWVhcjphLnllYXIsbW9udGg6YS5tb250aH19KX19LHtrZXk6XCJyZW1vdmVPdmVybGFwcGluZ1RTXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLGE9bmV3IE0odGhpcy5jdHgpLHM9ITE7ZS5sZW5ndGg+MCYmZVswXS52YWx1ZSYmZS5ldmVyeShmdW5jdGlvbihvKXtyZXR1cm4gby52YWx1ZS5sZW5ndGg9PT1lWzBdLnZhbHVlLmxlbmd0aH0pJiYocz0hMCx0PWEuZ2V0VGV4dFJlY3RzKGVbMF0udmFsdWUpLndpZHRoKTt2YXIgcj0wLG49ZS5tYXAoZnVuY3Rpb24obyxoKXtpZihoPjAmJmkudy5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscyl7dmFyIGM9cz90OmEuZ2V0VGV4dFJlY3RzKGVbcl0udmFsdWUpLndpZHRoLGQ9ZVtyXS5wb3NpdGlvbjtyZXR1cm4gby5wb3NpdGlvbj5kK2MrMTA/KHI9aCxvKTpudWxsfXJldHVybiBvfSk7cmV0dXJuIG49bi5maWx0ZXIoZnVuY3Rpb24obyl7cmV0dXJuIG8hPT1udWxsfSl9fSx7a2V5OlwiX2dldFllYXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIGUrTWF0aC5mbG9vcih0LzEyKStpfX1dKSx5fSgpLGp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlLHQpe0YodGhpcyx5KSx0aGlzLmN0eD10LHRoaXMudz10LncsdGhpcy5lbD1lfXJldHVybiBZKHksW3trZXk6XCJzZXR1cEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscyx0PXRoaXMudy5jb25maWcsaT10LmNoYXJ0LnR5cGU7ZS5heGlzQ2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiLFwicmFkYXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIl0uaW5kZXhPZihpKT4tMSxlLnh5Q2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXS5pbmRleE9mKGkpPi0xLGUuaXNCYXJIb3Jpem9udGFsPSh0LmNoYXJ0LnR5cGU9PT1cImJhclwifHx0LmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCJ8fHQuY2hhcnQudHlwZT09PVwiYm94UGxvdFwiKSYmdC5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCxlLmNoYXJ0Q2xhc3M9XCIuYXBleGNoYXJ0c1wiK2UuY2hhcnRJRCxlLmRvbS5iYXNlRWw9dGhpcy5lbCxlLmRvbS5lbFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxNLnNldEF0dHJzKGUuZG9tLmVsV3JhcCx7aWQ6ZS5jaGFydENsYXNzLnN1YnN0cmluZygxKSxjbGFzczpcImFwZXhjaGFydHMtY2FudmFzIFwiK2UuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSl9KSx0aGlzLmVsLmFwcGVuZENoaWxkKGUuZG9tLmVsV3JhcCksZS5kb20uUGFwZXI9bmV3IHdpbmRvdy5TVkcuRG9jKGUuZG9tLmVsV3JhcCksZS5kb20uUGFwZXIuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXN2Z1wiLFwieG1sbnM6ZGF0YVwiOlwiQXBleENoYXJ0c05TXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0LmNoYXJ0Lm9mZnNldFgsXCIsIFwiKS5jb25jYXQodC5jaGFydC5vZmZzZXRZLFwiKVwiKX0pLGUuZG9tLlBhcGVyLm5vZGUuc3R5bGUuYmFja2dyb3VuZD10LnRoZW1lLm1vZGUhPT1cImRhcmtcInx8dC5jaGFydC5iYWNrZ3JvdW5kP3QuY2hhcnQuYmFja2dyb3VuZDpcInJnYmEoMCwgMCwgMCwgMC44KVwiLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLGUuZG9tLmVsTGVnZW5kRm9yZWlnbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImZvcmVpZ25PYmplY3RcIiksTS5zZXRBdHRycyhlLmRvbS5lbExlZ2VuZEZvcmVpZ24se3g6MCx5OjAsd2lkdGg6ZS5zdmdXaWR0aCxoZWlnaHQ6ZS5zdmdIZWlnaHR9KSxlLmRvbS5lbExlZ2VuZFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kXCIpLGUuZG9tLmVsTGVnZW5kV3JhcC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSxlLmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQoZS5kb20uZWxMZWdlbmRXcmFwKSxlLmRvbS5QYXBlci5ub2RlLmFwcGVuZENoaWxkKGUuZG9tLmVsTGVnZW5kRm9yZWlnbiksZS5kb20uZWxHcmFwaGljYWw9ZS5kb20uUGFwZXIuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtaW5uZXIgYXBleGNoYXJ0cy1ncmFwaGljYWxcIn0pLGUuZG9tLmVsRGVmcz1lLmRvbS5QYXBlci5kZWZzKCksZS5kb20uUGFwZXIuYWRkKGUuZG9tLmVsR3JhcGhpY2FsKSxlLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5kb20uZWxEZWZzKX19LHtrZXk6XCJwbG90Q2hhcnRUeXBlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZyxzPWkuZ2xvYmFscyxyPXtzZXJpZXM6W10saTpbXX0sbj17c2VyaWVzOltdLGk6W119LG89e3NlcmllczpbXSxpOltdfSxoPXtzZXJpZXM6W10saTpbXX0sYz17c2VyaWVzOltdLGk6W119LGQ9e3NlcmllczpbXSxpOltdfSxnPXtzZXJpZXM6W10saTpbXX0scD17c2VyaWVzOltdLGk6W119LGY9e3NlcmllczpbXSxzZXJpZXNSYW5nZUVuZDpbXSxpOltdfTtzLnNlcmllcy5tYXAoZnVuY3Rpb24oayxTKXt2YXIgQz0wO2VbU10udHlwZSE9PXZvaWQgMD8oZVtTXS50eXBlPT09XCJjb2x1bW5cInx8ZVtTXS50eXBlPT09XCJiYXJcIj8ocy5zZXJpZXMubGVuZ3RoPjEmJmEucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwmJmNvbnNvbGUud2FybihcIkhvcml6b250YWwgYmFycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhIG1peGVkL2NvbWJvIGNoYXJ0LiBQbGVhc2UgdHVybiBvZmYgYHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsYFwiKSxjLnNlcmllcy5wdXNoKGspLGMuaS5wdXNoKFMpLEMrKyxpLmdsb2JhbHMuY29sdW1uU2VyaWVzPWMuc2VyaWVzKTplW1NdLnR5cGU9PT1cImFyZWFcIj8obi5zZXJpZXMucHVzaChrKSxuLmkucHVzaChTKSxDKyspOmVbU10udHlwZT09PVwibGluZVwiPyhyLnNlcmllcy5wdXNoKGspLHIuaS5wdXNoKFMpLEMrKyk6ZVtTXS50eXBlPT09XCJzY2F0dGVyXCI/KG8uc2VyaWVzLnB1c2goayksby5pLnB1c2goUykpOmVbU10udHlwZT09PVwiYnViYmxlXCI/KGguc2VyaWVzLnB1c2goayksaC5pLnB1c2goUyksQysrKTplW1NdLnR5cGU9PT1cImNhbmRsZXN0aWNrXCI/KGQuc2VyaWVzLnB1c2goayksZC5pLnB1c2goUyksQysrKTplW1NdLnR5cGU9PT1cImJveFBsb3RcIj8oZy5zZXJpZXMucHVzaChrKSxnLmkucHVzaChTKSxDKyspOmVbU10udHlwZT09PVwicmFuZ2VCYXJcIj8ocC5zZXJpZXMucHVzaChrKSxwLmkucHVzaChTKSxDKyspOmVbU10udHlwZT09PVwicmFuZ2VBcmVhXCI/KGYuc2VyaWVzLnB1c2gocy5zZXJpZXNSYW5nZVN0YXJ0W1NdKSxmLnNlcmllc1JhbmdlRW5kLnB1c2gocy5zZXJpZXNSYW5nZUVuZFtTXSksZi5pLnB1c2goUyksQysrKTpjb25zb2xlLndhcm4oXCJZb3UgaGF2ZSBzcGVjaWZpZWQgYW4gdW5yZWNvZ25pemVkIGNoYXJ0IHR5cGUuIEF2YWlsYWJsZSB0eXBlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgbGluZS9hcmVhL2NvbHVtbi9iYXIvc2NhdHRlci9idWJibGUvY2FuZGxlc3RpY2svYm94UGxvdC9yYW5nZUJhci9yYW5nZUFyZWFcIiksQz4xJiYocy5jb21ib0NoYXJ0cz0hMCkpOihyLnNlcmllcy5wdXNoKGspLHIuaS5wdXNoKFMpKX0pO3ZhciBiPW5ldyBxZSh0aGlzLmN0eCx0KSxtPW5ldyBqZSh0aGlzLmN0eCx0KTt0aGlzLmN0eC5waWU9bmV3IGN0KHRoaXMuY3R4KTt2YXIgdz1uZXcgSHQodGhpcy5jdHgpO3RoaXMuY3R4LnJhbmdlQmFyPW5ldyBEdCh0aGlzLmN0eCx0KTt2YXIgQT1uZXcgT3QodGhpcy5jdHgpLGw9W107aWYocy5jb21ib0NoYXJ0cyl7aWYobi5zZXJpZXMubGVuZ3RoPjAmJmwucHVzaChiLmRyYXcobi5zZXJpZXMsXCJhcmVhXCIsbi5pKSksYy5zZXJpZXMubGVuZ3RoPjApaWYoaS5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHU9bmV3IG90KHRoaXMuY3R4LHQpO2wucHVzaCh1LmRyYXcoYy5zZXJpZXMsYy5pKSl9ZWxzZSB0aGlzLmN0eC5iYXI9bmV3IEFlKHRoaXMuY3R4LHQpLGwucHVzaCh0aGlzLmN0eC5iYXIuZHJhdyhjLnNlcmllcyxjLmkpKTtpZihmLnNlcmllcy5sZW5ndGg+MCYmbC5wdXNoKGIuZHJhdyhmLnNlcmllcyxcInJhbmdlQXJlYVwiLGYuaSxmLnNlcmllc1JhbmdlRW5kKSksci5zZXJpZXMubGVuZ3RoPjAmJmwucHVzaChiLmRyYXcoci5zZXJpZXMsXCJsaW5lXCIsci5pKSksZC5zZXJpZXMubGVuZ3RoPjAmJmwucHVzaChtLmRyYXcoZC5zZXJpZXMsXCJjYW5kbGVzdGlja1wiLGQuaSkpLGcuc2VyaWVzLmxlbmd0aD4wJiZsLnB1c2gobS5kcmF3KGcuc2VyaWVzLFwiYm94UGxvdFwiLGcuaSkpLHAuc2VyaWVzLmxlbmd0aD4wJiZsLnB1c2godGhpcy5jdHgucmFuZ2VCYXIuZHJhdyhwLnNlcmllcyxwLmkpKSxvLnNlcmllcy5sZW5ndGg+MCl7dmFyIHg9bmV3IHFlKHRoaXMuY3R4LHQsITApO2wucHVzaCh4LmRyYXcoby5zZXJpZXMsXCJzY2F0dGVyXCIsby5pKSl9aWYoaC5zZXJpZXMubGVuZ3RoPjApe3ZhciB2PW5ldyBxZSh0aGlzLmN0eCx0LCEwKTtsLnB1c2godi5kcmF3KGguc2VyaWVzLFwiYnViYmxlXCIsaC5pKSl9fWVsc2Ugc3dpdGNoKGEuY2hhcnQudHlwZSl7Y2FzZVwibGluZVwiOmw9Yi5kcmF3KHMuc2VyaWVzLFwibGluZVwiKTticmVhaztjYXNlXCJhcmVhXCI6bD1iLmRyYXcocy5zZXJpZXMsXCJhcmVhXCIpO2JyZWFrO2Nhc2VcImJhclwiOmEuY2hhcnQuc3RhY2tlZD9sPW5ldyBvdCh0aGlzLmN0eCx0KS5kcmF3KHMuc2VyaWVzKToodGhpcy5jdHguYmFyPW5ldyBBZSh0aGlzLmN0eCx0KSxsPXRoaXMuY3R4LmJhci5kcmF3KHMuc2VyaWVzKSk7YnJlYWs7Y2FzZVwiY2FuZGxlc3RpY2tcIjpsPW5ldyBqZSh0aGlzLmN0eCx0KS5kcmF3KHMuc2VyaWVzLFwiY2FuZGxlc3RpY2tcIik7YnJlYWs7Y2FzZVwiYm94UGxvdFwiOmw9bmV3IGplKHRoaXMuY3R4LHQpLmRyYXcocy5zZXJpZXMsYS5jaGFydC50eXBlKTticmVhaztjYXNlXCJyYW5nZUJhclwiOmw9dGhpcy5jdHgucmFuZ2VCYXIuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFuZ2VBcmVhXCI6bD1iLmRyYXcocy5zZXJpZXNSYW5nZVN0YXJ0LFwicmFuZ2VBcmVhXCIsdm9pZCAwLHMuc2VyaWVzUmFuZ2VFbmQpO2JyZWFrO2Nhc2VcImhlYXRtYXBcIjpsPW5ldyBSdCh0aGlzLmN0eCx0KS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJ0cmVlbWFwXCI6bD1uZXcgQnQodGhpcy5jdHgsdCkuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicGllXCI6Y2FzZVwiZG9udXRcIjpjYXNlXCJwb2xhckFyZWFcIjpsPXRoaXMuY3R4LnBpZS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRpYWxCYXJcIjpsPXcuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFkYXJcIjpsPUEuZHJhdyhzLnNlcmllcyk7YnJlYWs7ZGVmYXVsdDpsPWIuZHJhdyhzLnNlcmllcyl9cmV0dXJuIGx9fSx7a2V5Olwic2V0U1ZHRGltZW5zaW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsdD10aGlzLncuY29uZmlnO2Uuc3ZnV2lkdGg9dC5jaGFydC53aWR0aCxlLnN2Z0hlaWdodD10LmNoYXJ0LmhlaWdodDt2YXIgaT1QLmdldERpbWVuc2lvbnModGhpcy5lbCksYT10LmNoYXJ0LndpZHRoLnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTthPT09XCIlXCI/UC5pc051bWJlcihpWzBdKSYmKGlbMF0ud2lkdGg9PT0wJiYoaT1QLmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKSksZS5zdmdXaWR0aD1pWzBdKnBhcnNlSW50KHQuY2hhcnQud2lkdGgsMTApLzEwMCk6YSE9PVwicHhcIiYmYSE9PVwiXCJ8fChlLnN2Z1dpZHRoPXBhcnNlSW50KHQuY2hhcnQud2lkdGgsMTApKTt2YXIgcz10LmNoYXJ0LmhlaWdodC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7aWYoZS5zdmdIZWlnaHQhPT1cImF1dG9cIiYmZS5zdmdIZWlnaHQhPT1cIlwiKWlmKHM9PT1cIiVcIil7dmFyIHI9UC5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSk7ZS5zdmdIZWlnaHQ9clsxXSpwYXJzZUludCh0LmNoYXJ0LmhlaWdodCwxMCkvMTAwfWVsc2UgZS5zdmdIZWlnaHQ9cGFyc2VJbnQodC5jaGFydC5oZWlnaHQsMTApO2Vsc2UgZS5heGlzQ2hhcnRzP2Uuc3ZnSGVpZ2h0PWUuc3ZnV2lkdGgvMS42MTplLnN2Z0hlaWdodD1lLnN2Z1dpZHRoLzEuMjtpZihlLnN2Z1dpZHRoPDAmJihlLnN2Z1dpZHRoPTApLGUuc3ZnSGVpZ2h0PDAmJihlLnN2Z0hlaWdodD0wKSxNLnNldEF0dHJzKGUuZG9tLlBhcGVyLm5vZGUse3dpZHRoOmUuc3ZnV2lkdGgsaGVpZ2h0OmUuc3ZnSGVpZ2h0fSkscyE9PVwiJVwiKXt2YXIgbj10LmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6ZS5heGlzQ2hhcnRzP3QuY2hhcnQucGFyZW50SGVpZ2h0T2Zmc2V0OjA7ZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PWUuc3ZnSGVpZ2h0K24rXCJweFwifWUuZG9tLmVsV3JhcC5zdHlsZS53aWR0aD1lLnN2Z1dpZHRoK1wicHhcIixlLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PWUuc3ZnSGVpZ2h0K1wicHhcIn19LHtrZXk6XCJzaGlmdEdyYXBoUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLHQ9ZS50cmFuc2xhdGVZLGk9e3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitlLnRyYW5zbGF0ZVgrXCIsIFwiK3QrXCIpXCJ9O00uc2V0QXR0cnMoZS5kb20uZWxHcmFwaGljYWwubm9kZSxpKX19LHtrZXk6XCJyZXNpemVOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMsaT0wLGE9ZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MToxNTthKz1lLmNvbmZpZy5ncmlkLnBhZGRpbmcuYm90dG9tLGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwidG9wXCImJmUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwiYm90dG9tXCJ8fCFlLmNvbmZpZy5sZWdlbmQuc2hvd3x8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nfHwoaT1uZXcgaXQodGhpcy5jdHgpLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLmNsd2grMTApO3ZhciBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1yYWRpYWxiYXIsIC5hcGV4Y2hhcnRzLXBpZVwiKSxyPTIuMDUqZS5nbG9iYWxzLnJhZGlhbFNpemU7aWYocyYmIWUuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSE9PTApe3ZhciBuPVAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHMpO3I9bi5ib3R0b207dmFyIG89bi5ib3R0b20tbi50b3A7cj1NYXRoLm1heCgyLjA1KmUuZ2xvYmFscy5yYWRpYWxTaXplLG8pfXZhciBoPXIrdC50cmFuc2xhdGVZK2krYTt0LmRvbS5lbExlZ2VuZEZvcmVpZ24mJnQuZG9tLmVsTGVnZW5kRm9yZWlnbi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixoKSxlLmNvbmZpZy5jaGFydC5oZWlnaHQmJlN0cmluZyhlLmNvbmZpZy5jaGFydC5oZWlnaHQpLmluZGV4T2YoXCIlXCIpPjB8fCh0LmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PWgrXCJweFwiLE0uc2V0QXR0cnModC5kb20uUGFwZXIubm9kZSx7aGVpZ2h0Omh9KSx0LmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9aCtcInB4XCIpfX0se2tleTpcImNvcmVDYWxjdWxhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe25ldyBCZSh0aGlzLmN0eCkuaW5pdCgpfX0se2tleTpcInJlc2V0R2xvYmFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWZ1bmN0aW9uKCl7cmV0dXJuIGUudy5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihzKXtyZXR1cm5bXX0pfSxpPW5ldyBRZSxhPXRoaXMudy5nbG9iYWxzO2kuaW5pdEdsb2JhbFZhcnMoYSksYS5zZXJpZXNYdmFsdWVzPXQoKSxhLnNlcmllc1l2YWx1ZXM9dCgpfX0se2tleTpcImlzTXVsdGlwbGVZXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLncuY29uZmlnLnlheGlzLmNvbnN0cnVjdG9yPT09QXJyYXkmJnRoaXMudy5jb25maWcueWF4aXMubGVuZ3RoPjEpcmV0dXJuIHRoaXMudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz0hMCwhMH19LHtrZXk6XCJ4eVNldHRpbmdzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1udWxsLHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZih0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uPT09XCJiYWNrXCImJm5ldyBWZSh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCksdC5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbj09PVwiYmFja1wiJiZuZXcgVmUodGhpcy5jdHgpLmRyYXdZQ3Jvc3NoYWlycygpLHQuY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCImJnQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9PT12b2lkIDApe3RoaXMuY3R4LnRpbWVTY2FsZT1uZXcgVnQodGhpcy5jdHgpO3ZhciBpPVtdO2lzRmluaXRlKHQuZ2xvYmFscy5taW5YKSYmaXNGaW5pdGUodC5nbG9iYWxzLm1heFgpJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9pPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyh0Lmdsb2JhbHMubWluWCx0Lmdsb2JhbHMubWF4WCk6dC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGk9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKHQuZ2xvYmFscy5taW5ZLHQuZ2xvYmFscy5tYXhZKSksdGhpcy5jdHgudGltZVNjYWxlLnJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0KGkpfWU9bmV3IHEodGhpcy5jdHgpLmdldENhbGN1bGF0ZWRSYXRpb3MoKX1yZXR1cm4gZX19LHtrZXk6XCJ1cGRhdGVTb3VyY2VDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuY3R4LncuZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe2NoYXJ0OntzZWxlY3Rpb246e3hheGlzOnttaW46ZS53Lmdsb2JhbHMubWluWCxtYXg6ZS53Lmdsb2JhbHMubWF4WH19fX0sITEsITEpfX0se2tleTpcInNldHVwQnJ1c2hIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53O2lmKHQuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJnR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uIT1cImZ1bmN0aW9uXCIpe3ZhciBpPUFycmF5LmlzQXJyYXkodC5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0cyk/dC5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0czpbdC5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0XTtpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQoYSk7cy53Lmdsb2JhbHMuYnJ1c2hTb3VyY2U9ZS5jdHgsdHlwZW9mIHMudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCE9XCJmdW5jdGlvblwiJiYocy53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7ZS51cGRhdGVTb3VyY2VDaGFydChzKX0pLHR5cGVvZiBzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCE9XCJmdW5jdGlvblwiJiYocy53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQ9ZnVuY3Rpb24oKXtlLnVwZGF0ZVNvdXJjZUNoYXJ0KHMpfSl9KSx0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uPWZ1bmN0aW9uKGEscyl7aS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBuPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHIpLG89UC5jbG9uZSh0LmNvbmZpZy55YXhpcyk7aWYodC5jb25maWcuY2hhcnQuYnJ1c2guYXV0b1NjYWxlWWF4aXMmJm4udy5nbG9iYWxzLnNlcmllcy5sZW5ndGg9PT0xKXt2YXIgaD1uZXcga2Uobik7bz1oLmF1dG9TY2FsZVkobixvLHMpfXZhciBjPW4udy5jb25maWcueWF4aXMucmVkdWNlKGZ1bmN0aW9uKGQsZyxwKXtyZXR1cm5bXS5jb25jYXQoUShkKSxbWChYKHt9LG4udy5jb25maWcueWF4aXNbcF0pLHt9LHttaW46b1swXS5taW4sbWF4Om9bMF0ubWF4fSldKX0sW10pO24uY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe3hheGlzOnttaW46cy54YXhpcy5taW4sbWF4OnMueGF4aXMubWF4fSx5YXhpczpjfSwhMSwhMSwhMSwhMSl9KX19fX1dKSx5fSgpLF90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJfdXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMCYmYXJndW1lbnRzWzFdLGE9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDApfHxhcmd1bWVudHNbM10scj1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMCYmYXJndW1lbnRzWzRdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuKXt2YXIgbz1bdC5jdHhdO3MmJihvPXQuY3R4LmdldFN5bmNlZENoYXJ0cygpKSx0LmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkJiYobz1bdC5jdHhdLHQuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITEpLG8uZm9yRWFjaChmdW5jdGlvbihoLGMpe3ZhciBkPWgudztpZihkLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1hLGl8fChkLmdsb2JhbHMucmVzaXplZD0hMCxkLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsYSYmaC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpKSxlJiZVKGUpPT09XCJvYmplY3RcIiYmKGguY29uZmlnPW5ldyBJZShlKSxlPXEuZXh0ZW5kQXJyYXlQcm9wcyhoLmNvbmZpZyxlLGQpLGgudy5nbG9iYWxzLmNoYXJ0SUQhPT10LmN0eC53Lmdsb2JhbHMuY2hhcnRJRCYmZGVsZXRlIGUuc2VyaWVzLGQuY29uZmlnPVAuZXh0ZW5kKGQuY29uZmlnLGUpLHImJihkLmdsb2JhbHMubGFzdFhBeGlzPWUueGF4aXM/UC5jbG9uZShlLnhheGlzKTpbXSxkLmdsb2JhbHMubGFzdFlBeGlzPWUueWF4aXM/UC5jbG9uZShlLnlheGlzKTpbXSxkLmdsb2JhbHMuaW5pdGlhbENvbmZpZz1QLmV4dGVuZCh7fSxkLmNvbmZpZyksZC5nbG9iYWxzLmluaXRpYWxTZXJpZXM9UC5jbG9uZShkLmNvbmZpZy5zZXJpZXMpLGUuc2VyaWVzKSkpe2Zvcih2YXIgZz0wO2c8ZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO2crKyl7dmFyIHA9ZC5jb25maWcuc2VyaWVzW2QuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2ddXTtkLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2ddLmRhdGE9ZC5nbG9iYWxzLmF4aXNDaGFydHM/cC5kYXRhLnNsaWNlKCk6cH1mb3IodmFyIGY9MDtmPGQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDtmKyspe3ZhciBiPWQuY29uZmlnLnNlcmllc1tkLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1tmXV07ZC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc1tmXS5kYXRhPWQuZ2xvYmFscy5heGlzQ2hhcnRzP2IuZGF0YS5zbGljZSgpOmJ9aC5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoZC5jb25maWcuc2VyaWVzKX1yZXR1cm4gaC51cGRhdGUoZSkudGhlbihmdW5jdGlvbigpe2M9PT1vLmxlbmd0aC0xJiZuKGgpfSl9KX0pfX0se2tleTpcIl91cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCYmYXJndW1lbnRzWzJdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihzKXt2YXIgcixuPWkudztyZXR1cm4gbi5nbG9iYWxzLnNob3VsZEFuaW1hdGU9dCxuLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsdCYmaS5jdHguc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKSxuLmdsb2JhbHMuYXhpc0NoYXJ0cz8oKHI9ZS5tYXAoZnVuY3Rpb24obyxoKXtyZXR1cm4gaS5fZXh0ZW5kU2VyaWVzKG8saCl9KSkubGVuZ3RoPT09MCYmKHI9W3tkYXRhOltdfV0pLG4uY29uZmlnLnNlcmllcz1yKTpuLmNvbmZpZy5zZXJpZXM9ZS5zbGljZSgpLGEmJihuLmdsb2JhbHMuaW5pdGlhbENvbmZpZy5zZXJpZXM9UC5jbG9uZShuLmNvbmZpZy5zZXJpZXMpLG4uZ2xvYmFscy5pbml0aWFsU2VyaWVzPVAuY2xvbmUobi5jb25maWcuc2VyaWVzKSksaS5jdHgudXBkYXRlKCkudGhlbihmdW5jdGlvbigpe3MoaS5jdHgpfSl9KX19LHtrZXk6XCJfZXh0ZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5zZXJpZXNbdF07cmV0dXJuIFgoWCh7fSxpLmNvbmZpZy5zZXJpZXNbdF0pLHt9LHtuYW1lOmUubmFtZT9lLm5hbWU6YT09bnVsbD92b2lkIDA6YS5uYW1lLGNvbG9yOmUuY29sb3I/ZS5jb2xvcjphPT1udWxsP3ZvaWQgMDphLmNvbG9yLHR5cGU6ZS50eXBlP2UudHlwZTphPT1udWxsP3ZvaWQgMDphLnR5cGUsZ3JvdXA6ZS5ncm91cD9lLmdyb3VwOmE9PW51bGw/dm9pZCAwOmEuZ3JvdXAsZGF0YTplLmRhdGE/ZS5kYXRhOmE9PW51bGw/dm9pZCAwOmEuZGF0YSx6SW5kZXg6ZS56SW5kZXghPT12b2lkIDA/ZS56SW5kZXg6dH0pfX0se2tleTpcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bnVsbCxzPVwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXVwiKTtyZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHM/YT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIFwiKS5jb25jYXQocyxcIiBjaXJjbGVbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIFwiKS5jb25jYXQocyxcIiByZWN0W2o9J1wiKS5jb25jYXQodCxcIiddXCIpKS5tZW1iZXJzWzBdOnQ9PT12b2lkIDAmJihhPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KGUsXCInXVwiKSkubWVtYmVyc1swXSxpLmNvbmZpZy5jaGFydC50eXBlIT09XCJwaWVcIiYmaS5jb25maWcuY2hhcnQudHlwZSE9PVwicG9sYXJBcmVhXCImJmkuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImRvbnV0XCJ8fHRoaXMuY3R4LnBpZS5waWVDbGlja2VkKGUpKSxhPyhuZXcgTSh0aGlzLmN0eCkucGF0aE1vdXNlRG93bihhLG51bGwpLGEubm9kZT9hLm5vZGU6bnVsbCk6KGNvbnNvbGUud2FybihcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmRcIiksbnVsbCl9fSx7a2V5OlwiZm9yY2VYQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztpZihbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2UueGF4aXNbYV0hPT12b2lkIDAmJih0LmNvbmZpZy54YXhpc1thXT1lLnhheGlzW2FdLHQuZ2xvYmFscy5sYXN0WEF4aXNbYV09ZS54YXhpc1thXSl9KSxlLnhheGlzLmNhdGVnb3JpZXMmJmUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJih0LmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzPWUueGF4aXMuY2F0ZWdvcmllcyksdC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgaT1uZXcgbGUoZSk7ZT1pLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhlLHRoaXMuY3R4KX1yZXR1cm4gZX19LHtrZXk6XCJmb3JjZVlBeGlzVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhcnQmJmUuY2hhcnQuc3RhY2tlZCYmZS5jaGFydC5zdGFja1R5cGU9PT1cIjEwMCVcIiYmKEFycmF5LmlzQXJyYXkoZS55YXhpcyk/ZS55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7ZS55YXhpc1tpXS5taW49MCxlLnlheGlzW2ldLm1heD0xMDB9KTooZS55YXhpcy5taW49MCxlLnlheGlzLm1heD0xMDApKSxlfX0se2tleTpcInJldmVydERlZmF1bHRBeGlzTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscy5sYXN0WEF4aXMscz1pLmdsb2JhbHMubGFzdFlBeGlzO2UmJmUueGF4aXMmJihhPWUueGF4aXMpLGUmJmUueWF4aXMmJihzPWUueWF4aXMpLGkuY29uZmlnLnhheGlzLm1pbj1hLm1pbixpLmNvbmZpZy54YXhpcy5tYXg9YS5tYXg7dmFyIHI9ZnVuY3Rpb24obil7c1tuXSE9PXZvaWQgMCYmKGkuY29uZmlnLnlheGlzW25dLm1pbj1zW25dLm1pbixpLmNvbmZpZy55YXhpc1tuXS5tYXg9c1tuXS5tYXgpfTtpLmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24obixvKXtpLmdsb2JhbHMuem9vbWVkfHxzW29dIT09dm9pZCAwP3Iobyk6dC5jdHgub3B0cy55YXhpc1tvXSE9PXZvaWQgMCYmKG4ubWluPXQuY3R4Lm9wdHMueWF4aXNbb10ubWluLG4ubWF4PXQuY3R4Lm9wdHMueWF4aXNbb10ubWF4KX0pfX1dKSx5fSgpO21lPXR5cGVvZiB3aW5kb3c8XCJ1XCI/d2luZG93OnZvaWQgMCxPZT1mdW5jdGlvbih5LGUpe3ZhciB0PSh0aGlzIT09dm9pZCAwP3RoaXM6eSkuU1ZHPWZ1bmN0aW9uKGwpe2lmKHQuc3VwcG9ydGVkKXJldHVybiBsPW5ldyB0LkRvYyhsKSx0LnBhcnNlci5kcmF3fHx0LnByZXBhcmUoKSxsfTtpZih0Lm5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix0LnhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIix0LnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLHQuc3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCIsdC5zdXBwb3J0ZWQ9ITAsIXQuc3VwcG9ydGVkKXJldHVybiExO3QuZGlkPTFlMyx0LmVpZD1mdW5jdGlvbihsKXtyZXR1cm5cIlN2Z2pzXCIrYyhsKSt0LmRpZCsrfSx0LmNyZWF0ZT1mdW5jdGlvbihsKXt2YXIgdT1lLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLGwpO3JldHVybiB1LnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5laWQobCkpLHV9LHQuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGwsdTt1PShsPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkucG9wKCk7Zm9yKHZhciB4PWwubGVuZ3RoLTE7eD49MDt4LS0paWYobFt4XSlmb3IodmFyIHYgaW4gdSlsW3hdLnByb3RvdHlwZVt2XT11W3ZdO3QuU2V0JiZ0LlNldC5pbmhlcml0JiZ0LlNldC5pbmhlcml0KCl9LHQuaW52ZW50PWZ1bmN0aW9uKGwpe3ZhciB1PXR5cGVvZiBsLmNyZWF0ZT09XCJmdW5jdGlvblwiP2wuY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdC5jcmVhdGUobC5jcmVhdGUpKX07cmV0dXJuIGwuaW5oZXJpdCYmKHUucHJvdG90eXBlPW5ldyBsLmluaGVyaXQpLGwuZXh0ZW5kJiZ0LmV4dGVuZCh1LGwuZXh0ZW5kKSxsLmNvbnN0cnVjdCYmdC5leHRlbmQobC5wYXJlbnR8fHQuQ29udGFpbmVyLGwuY29uc3RydWN0KSx1fSx0LmFkb3B0PWZ1bmN0aW9uKGwpe3JldHVybiBsP2wuaW5zdGFuY2U/bC5pbnN0YW5jZTooKHU9bC5ub2RlTmFtZT09XCJzdmdcIj9sLnBhcmVudE5vZGUgaW5zdGFuY2VvZiB5LlNWR0VsZW1lbnQ/bmV3IHQuTmVzdGVkOm5ldyB0LkRvYzpsLm5vZGVOYW1lPT1cImxpbmVhckdyYWRpZW50XCI/bmV3IHQuR3JhZGllbnQoXCJsaW5lYXJcIik6bC5ub2RlTmFtZT09XCJyYWRpYWxHcmFkaWVudFwiP25ldyB0LkdyYWRpZW50KFwicmFkaWFsXCIpOnRbYyhsLm5vZGVOYW1lKV0/bmV3IHRbYyhsLm5vZGVOYW1lKV06bmV3IHQuRWxlbWVudChsKSkudHlwZT1sLm5vZGVOYW1lLHUubm9kZT1sLGwuaW5zdGFuY2U9dSx1IGluc3RhbmNlb2YgdC5Eb2MmJnUubmFtZXNwYWNlKCkuZGVmcygpLHUuc2V0RGF0YShKU09OLnBhcnNlKGwuZ2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSl8fHt9KSx1KTpudWxsO3ZhciB1fSx0LnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgbD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSx1PShsP25ldyB0LkRvYyhsKTp0LmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO3QucGFyc2VyPXtib2R5Omx8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6dS5zdHlsZShcIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW5cIikubm9kZSxwb2x5OnUucG9seWxpbmUoKS5ub2RlLHBhdGg6dS5wYXRoKCkubm9kZSxuYXRpdmU6dC5jcmVhdGUoXCJzdmdcIil9fSx0LnBhcnNlcj17bmF0aXZlOnQuY3JlYXRlKFwic3ZnXCIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsZnVuY3Rpb24oKXt0LnBhcnNlci5kcmF3fHx0LnByZXBhcmUoKX0sITEpLHQucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaSxyZ2I6L3JnYlxcKChcXGQrKSwoXFxkKyksKFxcZCspXFwpLyxyZWZlcmVuY2U6LyMoW2EtejAtOVxcLV9dKykvaSx0cmFuc2Zvcm1zOi9cXClcXHMqLD9cXHMqLyx3aGl0ZXNwYWNlOi9cXHMvZyxpc0hleDovXiNbYS1mMC05XXszLDZ9JC9pLGlzUmdiOi9ecmdiXFwoLyxpc0NzczovW146XSs6W147XSs7Py8saXNCbGFuazovXihcXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcXGRcXC5dKyUkLyxpc0ltYWdlOi9cXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFxcP1tePV0rLiopPy9pLGRlbGltaXRlcjovW1xccyxdKy8saHlwaGVuOi8oW15lXSlcXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcXGQ/XFwuXFxkKyg/OmVbKy1dP1xcZCspPykoKD86XFwuXFxkKyg/OmVbKy1dP1xcZCspPykrKSkrL2dpLGRvdHM6L1xcLi9nfSx0LnV0aWxzPXttYXA6ZnVuY3Rpb24obCx1KXtmb3IodmFyIHg9bC5sZW5ndGgsdj1bXSxrPTA7azx4O2srKyl2LnB1c2godShsW2tdKSk7cmV0dXJuIHZ9LGZpbHRlcjpmdW5jdGlvbihsLHUpe2Zvcih2YXIgeD1sLmxlbmd0aCx2PVtdLGs9MDtrPHg7aysrKXUobFtrXSkmJnYucHVzaChsW2tdKTtyZXR1cm4gdn0sZmlsdGVyU1ZHRWxlbWVudHM6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZmlsdGVyKGwsZnVuY3Rpb24odSl7cmV0dXJuIHUgaW5zdGFuY2VvZiB5LlNWR0VsZW1lbnR9KX19LHQuZGVmYXVsdHM9e2F0dHJzOntcImZpbGwtb3BhY2l0eVwiOjEsXCJzdHJva2Utb3BhY2l0eVwiOjEsXCJzdHJva2Utd2lkdGhcIjowLFwic3Ryb2tlLWxpbmVqb2luXCI6XCJtaXRlclwiLFwic3Ryb2tlLWxpbmVjYXBcIjpcImJ1dHRcIixmaWxsOlwiIzAwMDAwMFwiLHN0cm9rZTpcIiMwMDAwMDBcIixvcGFjaXR5OjEseDowLHk6MCxjeDowLGN5OjAsd2lkdGg6MCxoZWlnaHQ6MCxyOjAscng6MCxyeTowLG9mZnNldDowLFwic3RvcC1vcGFjaXR5XCI6MSxcInN0b3AtY29sb3JcIjpcIiMwMDAwMDBcIixcImZvbnQtc2l6ZVwiOjE2LFwiZm9udC1mYW1pbHlcIjpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixcInRleHQtYW5jaG9yXCI6XCJzdGFydFwifX0sdC5Db2xvcj1mdW5jdGlvbihsKXt2YXIgdSx4O3RoaXMucj0wLHRoaXMuZz0wLHRoaXMuYj0wLGwmJih0eXBlb2YgbD09XCJzdHJpbmdcIj90LnJlZ2V4LmlzUmdiLnRlc3QobCk/KHU9dC5yZWdleC5yZ2IuZXhlYyhsLnJlcGxhY2UodC5yZWdleC53aGl0ZXNwYWNlLFwiXCIpKSx0aGlzLnI9cGFyc2VJbnQodVsxXSksdGhpcy5nPXBhcnNlSW50KHVbMl0pLHRoaXMuYj1wYXJzZUludCh1WzNdKSk6dC5yZWdleC5pc0hleC50ZXN0KGwpJiYodT10LnJlZ2V4LmhleC5leGVjKCh4PWwpLmxlbmd0aD09ND9bXCIjXCIseC5zdWJzdHJpbmcoMSwyKSx4LnN1YnN0cmluZygxLDIpLHguc3Vic3RyaW5nKDIsMykseC5zdWJzdHJpbmcoMiwzKSx4LnN1YnN0cmluZygzLDQpLHguc3Vic3RyaW5nKDMsNCldLmpvaW4oXCJcIik6eCksdGhpcy5yPXBhcnNlSW50KHVbMV0sMTYpLHRoaXMuZz1wYXJzZUludCh1WzJdLDE2KSx0aGlzLmI9cGFyc2VJbnQodVszXSwxNikpOlUobCk9PT1cIm9iamVjdFwiJiYodGhpcy5yPWwucix0aGlzLmc9bC5nLHRoaXMuYj1sLmIpKX0sdC5leHRlbmQodC5Db2xvcix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b0hleCgpfSx0b0hleDpmdW5jdGlvbigpe3JldHVyblwiI1wiK2QodGhpcy5yKStkKHRoaXMuZykrZCh0aGlzLmIpfSx0b1JnYjpmdW5jdGlvbigpe3JldHVyblwicmdiKFwiK1t0aGlzLnIsdGhpcy5nLHRoaXMuYl0uam9pbigpK1wiKVwifSxicmlnaHRuZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuci8yNTUqLjMrdGhpcy5nLzI1NSouNTkrdGhpcy5iLzI1NSouMTF9LG1vcnBoOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyB0LkNvbG9yKGwpLHRoaXN9LGF0OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPyhsPWw8MD8wOmw+MT8xOmwsbmV3IHQuQ29sb3Ioe3I6fn4odGhpcy5yKyh0aGlzLmRlc3RpbmF0aW9uLnItdGhpcy5yKSpsKSxnOn5+KHRoaXMuZysodGhpcy5kZXN0aW5hdGlvbi5nLXRoaXMuZykqbCksYjp+fih0aGlzLmIrKHRoaXMuZGVzdGluYXRpb24uYi10aGlzLmIpKmwpfSkpOnRoaXN9fSksdC5Db2xvci50ZXN0PWZ1bmN0aW9uKGwpe3JldHVybiBsKz1cIlwiLHQucmVnZXguaXNIZXgudGVzdChsKXx8dC5yZWdleC5pc1JnYi50ZXN0KGwpfSx0LkNvbG9yLmlzUmdiPWZ1bmN0aW9uKGwpe3JldHVybiBsJiZ0eXBlb2YgbC5yPT1cIm51bWJlclwiJiZ0eXBlb2YgbC5nPT1cIm51bWJlclwiJiZ0eXBlb2YgbC5iPT1cIm51bWJlclwifSx0LkNvbG9yLmlzQ29sb3I9ZnVuY3Rpb24obCl7cmV0dXJuIHQuQ29sb3IuaXNSZ2IobCl8fHQuQ29sb3IudGVzdChsKX0sdC5BcnJheT1mdW5jdGlvbihsLHUpeyhsPShsfHxbXSkudmFsdWVPZigpKS5sZW5ndGg9PTAmJnUmJihsPXUudmFsdWVPZigpKSx0aGlzLnZhbHVlPXRoaXMucGFyc2UobCl9LHQuZXh0ZW5kKHQuQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUuam9pbihcIiBcIil9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0scGFyc2U6ZnVuY3Rpb24obCl7cmV0dXJuIGw9bC52YWx1ZU9mKCksQXJyYXkuaXNBcnJheShsKT9sOnRoaXMuc3BsaXQobCl9fSksdC5Qb2ludEFycmF5PWZ1bmN0aW9uKGwsdSl7dC5BcnJheS5jYWxsKHRoaXMsbCx1fHxbWzAsMF1dKX0sdC5Qb2ludEFycmF5LnByb3RvdHlwZT1uZXcgdC5BcnJheSx0LlBvaW50QXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQuUG9pbnRBcnJheTtmb3IodmFyIGk9e006ZnVuY3Rpb24obCx1LHgpe3JldHVybiB1Lng9eC54PWxbMF0sdS55PXgueT1sWzFdLFtcIk1cIix1LngsdS55XX0sTDpmdW5jdGlvbihsLHUpe3JldHVybiB1Lng9bFswXSx1Lnk9bFsxXSxbXCJMXCIsbFswXSxsWzFdXX0sSDpmdW5jdGlvbihsLHUpe3JldHVybiB1Lng9bFswXSxbXCJIXCIsbFswXV19LFY6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdS55PWxbMF0sW1wiVlwiLGxbMF1dfSxDOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHUueD1sWzRdLHUueT1sWzVdLFtcIkNcIixsWzBdLGxbMV0sbFsyXSxsWzNdLGxbNF0sbFs1XV19LFE6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdS54PWxbMl0sdS55PWxbM10sW1wiUVwiLGxbMF0sbFsxXSxsWzJdLGxbM11dfSxTOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHUueD1sWzJdLHUueT1sWzNdLFtcIlNcIixsWzBdLGxbMV0sbFsyXSxsWzNdXX0sWjpmdW5jdGlvbihsLHUseCl7cmV0dXJuIHUueD14LngsdS55PXgueSxbXCJaXCJdfX0sYT1cIm1saHZxdGNzYXpcIi5zcGxpdChcIlwiKSxzPTAscj1hLmxlbmd0aDtzPHI7KytzKWlbYVtzXV09ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKHUseCx2KXtpZihsPT1cIkhcIil1WzBdPXVbMF0reC54O2Vsc2UgaWYobD09XCJWXCIpdVswXT11WzBdK3gueTtlbHNlIGlmKGw9PVwiQVwiKXVbNV09dVs1XSt4LngsdVs2XT11WzZdK3gueTtlbHNlIGZvcih2YXIgaz0wLFM9dS5sZW5ndGg7azxTOysrayl1W2tdPXVba10rKGslMj94Lnk6eC54KTtpZihpJiZ0eXBlb2YgaVtsXT09XCJmdW5jdGlvblwiKXJldHVybiBpW2xdKHUseCx2KX19KGFbc10udG9VcHBlckNhc2UoKSk7dC5QYXRoQXJyYXk9ZnVuY3Rpb24obCx1KXt0LkFycmF5LmNhbGwodGhpcyxsLHV8fFtbXCJNXCIsMCwwXV0pfSx0LlBhdGhBcnJheS5wcm90b3R5cGU9bmV3IHQuQXJyYXksdC5QYXRoQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQuUGF0aEFycmF5LHQuZXh0ZW5kKHQuUGF0aEFycmF5LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihsKXtmb3IodmFyIHU9MCx4PWwubGVuZ3RoLHY9XCJcIjt1PHg7dSsrKXYrPWxbdV1bMF0sbFt1XVsxXSE9bnVsbCYmKHYrPWxbdV1bMV0sbFt1XVsyXSE9bnVsbCYmKHYrPVwiIFwiLHYrPWxbdV1bMl0sbFt1XVszXSE9bnVsbCYmKHYrPVwiIFwiLHYrPWxbdV1bM10sdis9XCIgXCIsdis9bFt1XVs0XSxsW3VdWzVdIT1udWxsJiYodis9XCIgXCIsdis9bFt1XVs1XSx2Kz1cIiBcIix2Kz1sW3VdWzZdLGxbdV1bN10hPW51bGwmJih2Kz1cIiBcIix2Kz1sW3VdWzddKSkpKSk7cmV0dXJuIHYrXCIgXCJ9KHRoaXMudmFsdWUpfSxtb3ZlOmZ1bmN0aW9uKGwsdSl7dmFyIHg9dGhpcy5iYm94KCk7cmV0dXJuIHgueCx4LnksdGhpc30sYXQ6ZnVuY3Rpb24obCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7Zm9yKHZhciB1PXRoaXMudmFsdWUseD10aGlzLmRlc3RpbmF0aW9uLnZhbHVlLHY9W10saz1uZXcgdC5QYXRoQXJyYXksUz0wLEM9dS5sZW5ndGg7UzxDO1MrKyl7dltTXT1bdVtTXVswXV07Zm9yKHZhciBMPTEsST11W1NdLmxlbmd0aDtMPEk7TCsrKXZbU11bTF09dVtTXVtMXSsoeFtTXVtMXS11W1NdW0xdKSpsO3ZbU11bMF09PT1cIkFcIiYmKHZbU11bNF09Kyh2W1NdWzRdIT0wKSx2W1NdWzVdPSsodltTXVs1XSE9MCkpfXJldHVybiBrLnZhbHVlPXYsa30scGFyc2U6ZnVuY3Rpb24obCl7aWYobCBpbnN0YW5jZW9mIHQuUGF0aEFycmF5KXJldHVybiBsLnZhbHVlT2YoKTt2YXIgdSx4PXtNOjIsTDoyLEg6MSxWOjEsQzo2LFM6NCxROjQsVDoyLEE6NyxaOjB9O2w9dHlwZW9mIGw9PVwic3RyaW5nXCI/bC5yZXBsYWNlKHQucmVnZXgubnVtYmVyc1dpdGhEb3RzLG8pLnJlcGxhY2UodC5yZWdleC5wYXRoTGV0dGVycyxcIiAkJiBcIikucmVwbGFjZSh0LnJlZ2V4Lmh5cGhlbixcIiQxIC1cIikudHJpbSgpLnNwbGl0KHQucmVnZXguZGVsaW1pdGVyKTpsLnJlZHVjZShmdW5jdGlvbihJLHope3JldHVybltdLmNvbmNhdC5jYWxsKEkseil9LFtdKTt2YXIgdj1bXSxrPW5ldyB0LlBvaW50LFM9bmV3IHQuUG9pbnQsQz0wLEw9bC5sZW5ndGg7ZG8gdC5yZWdleC5pc1BhdGhMZXR0ZXIudGVzdChsW0NdKT8odT1sW0NdLCsrQyk6dT09XCJNXCI/dT1cIkxcIjp1PT1cIm1cIiYmKHU9XCJsXCIpLHYucHVzaChpW3VdLmNhbGwobnVsbCxsLnNsaWNlKEMsQys9eFt1LnRvVXBwZXJDYXNlKCldKS5tYXAocGFyc2VGbG9hdCksayxTKSk7d2hpbGUoTD5DKTtyZXR1cm4gdn0sYmJveDpmdW5jdGlvbigpe3JldHVybiB0LnBhcnNlci5kcmF3fHx0LnByZXBhcmUoKSx0LnBhcnNlci5wYXRoLnNldEF0dHJpYnV0ZShcImRcIix0aGlzLnRvU3RyaW5nKCkpLHQucGFyc2VyLnBhdGguZ2V0QkJveCgpfX0pLHQuTnVtYmVyPXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCx1KXt0aGlzLnZhbHVlPTAsdGhpcy51bml0PXV8fFwiXCIsdHlwZW9mIGw9PVwibnVtYmVyXCI/dGhpcy52YWx1ZT1pc05hTihsKT8wOmlzRmluaXRlKGwpP2w6bDwwPy0zNGUzNzozNGUzNzp0eXBlb2YgbD09XCJzdHJpbmdcIj8odT1sLm1hdGNoKHQucmVnZXgubnVtYmVyQW5kVW5pdCkpJiYodGhpcy52YWx1ZT1wYXJzZUZsb2F0KHVbMV0pLHVbNV09PVwiJVwiP3RoaXMudmFsdWUvPTEwMDp1WzVdPT1cInNcIiYmKHRoaXMudmFsdWUqPTFlMyksdGhpcy51bml0PXVbNV0pOmwgaW5zdGFuY2VvZiB0Lk51bWJlciYmKHRoaXMudmFsdWU9bC52YWx1ZU9mKCksdGhpcy51bml0PWwudW5pdCl9LGV4dGVuZDp7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy51bml0PT1cIiVcIj9+figxZTgqdGhpcy52YWx1ZSkvMWU2OnRoaXMudW5pdD09XCJzXCI/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24obCl7cmV0dXJuIGw9bmV3IHQuTnVtYmVyKGwpLG5ldyB0Lk51bWJlcih0aGlzK2wsdGhpcy51bml0fHxsLnVuaXQpfSxtaW51czpmdW5jdGlvbihsKXtyZXR1cm4gbD1uZXcgdC5OdW1iZXIobCksbmV3IHQuTnVtYmVyKHRoaXMtbCx0aGlzLnVuaXR8fGwudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKGwpe3JldHVybiBsPW5ldyB0Lk51bWJlcihsKSxuZXcgdC5OdW1iZXIodGhpcypsLHRoaXMudW5pdHx8bC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKGwpe3JldHVybiBsPW5ldyB0Lk51bWJlcihsKSxuZXcgdC5OdW1iZXIodGhpcy9sLHRoaXMudW5pdHx8bC51bml0KX0sdG86ZnVuY3Rpb24obCl7dmFyIHU9bmV3IHQuTnVtYmVyKHRoaXMpO3JldHVybiB0eXBlb2YgbD09XCJzdHJpbmdcIiYmKHUudW5pdD1sKSx1fSxtb3JwaDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgdC5OdW1iZXIobCksbC5yZWxhdGl2ZSYmKHRoaXMuZGVzdGluYXRpb24udmFsdWUrPXRoaXMudmFsdWUpLHRoaXN9LGF0OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uP25ldyB0Lk51bWJlcih0aGlzLmRlc3RpbmF0aW9uKS5taW51cyh0aGlzKS50aW1lcyhsKS5wbHVzKHRoaXMpOnRoaXN9fX0pLHQuRWxlbWVudD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuX3N0cm9rZT10LmRlZmF1bHRzLmF0dHJzLnN0cm9rZSx0aGlzLl9ldmVudD1udWxsLHRoaXMuZG9tPXt9LCh0aGlzLm5vZGU9bCkmJih0aGlzLnR5cGU9bC5ub2RlTmFtZSx0aGlzLm5vZGUuaW5zdGFuY2U9dGhpcyx0aGlzLl9zdHJva2U9bC5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIil8fHRoaXMuX3N0cm9rZSl9LGV4dGVuZDp7eDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwieFwiLGwpfSx5OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJ5XCIsbCl9LGN4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMueCgpK3RoaXMud2lkdGgoKS8yOnRoaXMueChsLXRoaXMud2lkdGgoKS8yKX0sY3k6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy55KCkrdGhpcy5oZWlnaHQoKS8yOnRoaXMueShsLXRoaXMuaGVpZ2h0KCkvMil9LG1vdmU6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy54KGwpLnkodSl9LGNlbnRlcjpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmN4KGwpLmN5KHUpfSx3aWR0aDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwid2lkdGhcIixsKX0saGVpZ2h0OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJoZWlnaHRcIixsKX0sc2l6ZTpmdW5jdGlvbihsLHUpe3ZhciB4PWcodGhpcyxsLHUpO3JldHVybiB0aGlzLndpZHRoKG5ldyB0Lk51bWJlcih4LndpZHRoKSkuaGVpZ2h0KG5ldyB0Lk51bWJlcih4LmhlaWdodCkpfSxjbG9uZTpmdW5jdGlvbihsKXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIHU9Yih0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGw/bC5hZGQodSk6dGhpcy5hZnRlcih1KSx1fSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVFbGVtZW50KHRoaXMpLHRoaXN9LHJlcGxhY2U6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYWZ0ZXIobCkucmVtb3ZlKCksbH0sYWRkVG86ZnVuY3Rpb24obCl7cmV0dXJuIGwucHV0KHRoaXMpfSxwdXRJbjpmdW5jdGlvbihsKXtyZXR1cm4gbC5hZGQodGhpcyl9LGlkOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiLGwpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIikhPVwibm9uZVwifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiKX0sY2xhc3NlczpmdW5jdGlvbigpe3ZhciBsPXRoaXMuYXR0cihcImNsYXNzXCIpO3JldHVybiBsPT1udWxsP1tdOmwudHJpbSgpLnNwbGl0KHQucmVnZXguZGVsaW1pdGVyKX0saGFzQ2xhc3M6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuY2xhc3NlcygpLmluZGV4T2YobCkhPS0xfSxhZGRDbGFzczpmdW5jdGlvbihsKXtpZighdGhpcy5oYXNDbGFzcyhsKSl7dmFyIHU9dGhpcy5jbGFzc2VzKCk7dS5wdXNoKGwpLHRoaXMuYXR0cihcImNsYXNzXCIsdS5qb2luKFwiIFwiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmhhc0NsYXNzKGwpJiZ0aGlzLmF0dHIoXCJjbGFzc1wiLHRoaXMuY2xhc3NlcygpLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4gdSE9bH0pLmpvaW4oXCIgXCIpKSx0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5oYXNDbGFzcyhsKT90aGlzLnJlbW92ZUNsYXNzKGwpOnRoaXMuYWRkQ2xhc3MobCl9LHJlZmVyZW5jZTpmdW5jdGlvbihsKXtyZXR1cm4gdC5nZXQodGhpcy5hdHRyKGwpKX0scGFyZW50OmZ1bmN0aW9uKGwpe3ZhciB1PXRoaXM7aWYoIXUubm9kZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2lmKHU9dC5hZG9wdCh1Lm5vZGUucGFyZW50Tm9kZSksIWwpcmV0dXJuIHU7Zm9yKDt1JiZ1Lm5vZGUgaW5zdGFuY2VvZiB5LlNWR0VsZW1lbnQ7KXtpZih0eXBlb2YgbD09XCJzdHJpbmdcIj91Lm1hdGNoZXMobCk6dSBpbnN0YW5jZW9mIGwpcmV0dXJuIHU7aWYoIXUubm9kZS5wYXJlbnROb2RlfHx1Lm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZT09XCIjZG9jdW1lbnRcIilyZXR1cm4gbnVsbDt1PXQuYWRvcHQodS5ub2RlLnBhcmVudE5vZGUpfX0sZG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB0LkRvYz90aGlzOnRoaXMucGFyZW50KHQuRG9jKX0scGFyZW50czpmdW5jdGlvbihsKXt2YXIgdT1bXSx4PXRoaXM7ZG97aWYoISh4PXgucGFyZW50KGwpKXx8IXgubm9kZSlicmVhazt1LnB1c2goeCl9d2hpbGUoeC5wYXJlbnQpO3JldHVybiB1fSxtYXRjaGVzOmZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbih1LHgpe3JldHVybih1Lm1hdGNoZXN8fHUubWF0Y2hlc1NlbGVjdG9yfHx1Lm1zTWF0Y2hlc1NlbGVjdG9yfHx1Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHUub01hdGNoZXNTZWxlY3RvcikuY2FsbCh1LHgpfSh0aGlzLm5vZGUsbCl9LG5hdGl2ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHN2ZzpmdW5jdGlvbihsKXt2YXIgdT1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIik7aWYoIShsJiZ0aGlzIGluc3RhbmNlb2YgdC5QYXJlbnQpKXJldHVybiB1LmFwcGVuZENoaWxkKGw9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpKSx0aGlzLndyaXRlRGF0YVRvRG9tKCksbC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSksdS5pbm5lckhUTUwucmVwbGFjZSgvXjxzdmc+LyxcIlwiKS5yZXBsYWNlKC88XFwvc3ZnPiQvLFwiXCIpO3UuaW5uZXJIVE1MPVwiPHN2Zz5cIitsLnJlcGxhY2UoL1xcbi8sXCJcIikucmVwbGFjZSgvPChbXFx3Oi1dKykoW148XSs/KVxcLz4vZyxcIjwkMSQyPjwvJDE+XCIpK1wiPC9zdmc+XCI7Zm9yKHZhciB4PTAsdj11LmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7eDx2O3grKyl0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodS5maXJzdENoaWxkLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSx3cml0ZURhdGFUb0RvbTpmdW5jdGlvbigpe3JldHVybih0aGlzLmVhY2h8fHRoaXMubGluZXMpJiYodGhpcy5lYWNoP3RoaXM6dGhpcy5saW5lcygpKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy53cml0ZURhdGFUb0RvbSgpfSksdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIiksT2JqZWN0LmtleXModGhpcy5kb20pLmxlbmd0aCYmdGhpcy5ub2RlLnNldEF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIixKU09OLnN0cmluZ2lmeSh0aGlzLmRvbSkpLHRoaXN9LHNldERhdGE6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZG9tPWwsdGhpc30saXM6ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKHUseCl7cmV0dXJuIHUgaW5zdGFuY2VvZiB4fSh0aGlzLGwpfX19KSx0LmVhc2luZz17XCItXCI6ZnVuY3Rpb24obCl7cmV0dXJuIGx9LFwiPD5cIjpmdW5jdGlvbihsKXtyZXR1cm4tTWF0aC5jb3MobCpNYXRoLlBJKS8yKy41fSxcIj5cIjpmdW5jdGlvbihsKXtyZXR1cm4gTWF0aC5zaW4obCpNYXRoLlBJLzIpfSxcIjxcIjpmdW5jdGlvbihsKXtyZXR1cm4gMS1NYXRoLmNvcyhsKk1hdGguUEkvMil9fSx0Lm1vcnBoPWZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbih1LHgpe3JldHVybiBuZXcgdC5Nb3JwaE9iaih1LHgpLmF0KGwpfX0sdC5TaXR1YXRpb249dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLmluaXQ9ITEsdGhpcy5yZXZlcnNlZD0hMSx0aGlzLnJldmVyc2luZz0hMSx0aGlzLmR1cmF0aW9uPW5ldyB0Lk51bWJlcihsLmR1cmF0aW9uKS52YWx1ZU9mKCksdGhpcy5kZWxheT1uZXcgdC5OdW1iZXIobC5kZWxheSkudmFsdWVPZigpLHRoaXMuc3RhcnQ9K25ldyBEYXRlK3RoaXMuZGVsYXksdGhpcy5maW5pc2g9dGhpcy5zdGFydCt0aGlzLmR1cmF0aW9uLHRoaXMuZWFzZT1sLmVhc2UsdGhpcy5sb29wPTAsdGhpcy5sb29wcz0hMSx0aGlzLmFuaW1hdGlvbnM9e30sdGhpcy5hdHRycz17fSx0aGlzLnN0eWxlcz17fSx0aGlzLnRyYW5zZm9ybXM9W10sdGhpcy5vbmNlPXt9fX0pLHQuRlg9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLl90YXJnZXQ9bCx0aGlzLnNpdHVhdGlvbnM9W10sdGhpcy5hY3RpdmU9ITEsdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzLnBhdXNlZD0hMSx0aGlzLmxhc3RQb3M9MCx0aGlzLnBvcz0wLHRoaXMuYWJzUG9zPTAsdGhpcy5fc3BlZWQ9MX0sZXh0ZW5kOnthbmltYXRlOmZ1bmN0aW9uKGwsdSx4KXtVKGwpPT09XCJvYmplY3RcIiYmKHU9bC5lYXNlLHg9bC5kZWxheSxsPWwuZHVyYXRpb24pO3ZhciB2PW5ldyB0LlNpdHVhdGlvbih7ZHVyYXRpb246bHx8MWUzLGRlbGF5Onh8fDAsZWFzZTp0LmVhc2luZ1t1fHxcIi1cIl18fHV9KTtyZXR1cm4gdGhpcy5xdWV1ZSh2KSx0aGlzfSx0YXJnZXQ6ZnVuY3Rpb24obCl7cmV0dXJuIGwmJmwgaW5zdGFuY2VvZiB0LkVsZW1lbnQ/KHRoaXMuX3RhcmdldD1sLHRoaXMpOnRoaXMuX3RhcmdldH0sdGltZVRvQWJzUG9zOmZ1bmN0aW9uKGwpe3JldHVybihsLXRoaXMuc2l0dWF0aW9uLnN0YXJ0KS8odGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQpfSxhYnNQb3NUb1RpbWU6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKmwrdGhpcy5zaXR1YXRpb24uc3RhcnR9LHN0YXJ0QW5pbUZyYW1lOmZ1bmN0aW9uKCl7dGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy5hbmltYXRpb25GcmFtZT15LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0aGlzLnN0ZXAoKX0pLmJpbmQodGhpcykpfSxzdG9wQW5pbUZyYW1lOmZ1bmN0aW9uKCl7eS5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKX0sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hY3RpdmUmJnRoaXMuc2l0dWF0aW9uJiYodGhpcy5hY3RpdmU9ITAsdGhpcy5zdGFydEN1cnJlbnQoKSksdGhpc30sc3RhcnRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLnNpdHVhdGlvbi5kZWxheS90aGlzLl9zcGVlZCx0aGlzLnNpdHVhdGlvbi5maW5pc2g9dGhpcy5zaXR1YXRpb24uc3RhcnQrdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQsdGhpcy5pbml0QW5pbWF0aW9ucygpLnN0ZXAoKX0scXVldWU6ZnVuY3Rpb24obCl7cmV0dXJuKHR5cGVvZiBsPT1cImZ1bmN0aW9uXCJ8fGwgaW5zdGFuY2VvZiB0LlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKGwpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIHQuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciBsLHU9dGhpcy5zaXR1YXRpb247aWYodS5pbml0KXJldHVybiB0aGlzO2Zvcih2YXIgeCBpbiB1LmFuaW1hdGlvbnMpe2w9dGhpcy50YXJnZXQoKVt4XSgpLEFycmF5LmlzQXJyYXkobCl8fChsPVtsXSksQXJyYXkuaXNBcnJheSh1LmFuaW1hdGlvbnNbeF0pfHwodS5hbmltYXRpb25zW3hdPVt1LmFuaW1hdGlvbnNbeF1dKTtmb3IodmFyIHY9bC5sZW5ndGg7di0tOyl1LmFuaW1hdGlvbnNbeF1bdl1pbnN0YW5jZW9mIHQuTnVtYmVyJiYobFt2XT1uZXcgdC5OdW1iZXIobFt2XSkpLHUuYW5pbWF0aW9uc1t4XVt2XT1sW3ZdLm1vcnBoKHUuYW5pbWF0aW9uc1t4XVt2XSl9Zm9yKHZhciB4IGluIHUuYXR0cnMpdS5hdHRyc1t4XT1uZXcgdC5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIoeCksdS5hdHRyc1t4XSk7Zm9yKHZhciB4IGluIHUuc3R5bGVzKXUuc3R5bGVzW3hdPW5ldyB0Lk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuc3R5bGUoeCksdS5zdHlsZXNbeF0pO3JldHVybiB1LmluaXRpYWxUcmFuc2Zvcm1hdGlvbj10aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLHUuaW5pdD0hMCx0aGlzfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzfSxjbGVhckN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzfSxzdG9wOmZ1bmN0aW9uKGwsdSl7dmFyIHg9dGhpcy5hY3RpdmU7cmV0dXJuIHRoaXMuYWN0aXZlPSExLHUmJnRoaXMuY2xlYXJRdWV1ZSgpLGwmJnRoaXMuc2l0dWF0aW9uJiYoIXgmJnRoaXMuc3RhcnRDdXJyZW50KCksdGhpcy5hdEVuZCgpKSx0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmNsZWFyQ3VycmVudCgpfSxhZnRlcjpmdW5jdGlvbihsKXt2YXIgdT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbihcImZpbmlzaGVkLmZ4XCIsZnVuY3Rpb24geCh2KXt2LmRldGFpbC5zaXR1YXRpb249PXUmJihsLmNhbGwodGhpcyx1KSx0aGlzLm9mZihcImZpbmlzaGVkLmZ4XCIseCkpfSksdGhpcy5fY2FsbFN0YXJ0KCl9LGR1cmluZzpmdW5jdGlvbihsKXt2YXIgdT10aGlzLmxhc3QoKSx4PWZ1bmN0aW9uKHYpe3YuZGV0YWlsLnNpdHVhdGlvbj09dSYmbC5jYWxsKHRoaXMsdi5kZXRhaWwucG9zLHQubW9ycGgodi5kZXRhaWwucG9zKSx2LmRldGFpbC5lYXNlZCx1KX07cmV0dXJuIHRoaXMudGFyZ2V0KCkub2ZmKFwiZHVyaW5nLmZ4XCIseCkub24oXCJkdXJpbmcuZnhcIix4KSx0aGlzLmFmdGVyKGZ1bmN0aW9uKCl7dGhpcy5vZmYoXCJkdXJpbmcuZnhcIix4KX0pLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbihsKXt2YXIgdT1mdW5jdGlvbiB4KHYpe2wuY2FsbCh0aGlzKSx0aGlzLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIseCl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsdSkub24oXCJhbGxmaW5pc2hlZC5meFwiLHUpLHRoaXMuX2NhbGxTdGFydCgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGg/dGhpcy5zaXR1YXRpb25zW3RoaXMuc2l0dWF0aW9ucy5sZW5ndGgtMV06dGhpcy5zaXR1YXRpb259LGFkZDpmdW5jdGlvbihsLHUseCl7cmV0dXJuIHRoaXMubGFzdCgpW3h8fFwiYW5pbWF0aW9uc1wiXVtsXT11LHRoaXMuX2NhbGxTdGFydCgpfSxzdGVwOmZ1bmN0aW9uKGwpe3ZhciB1LHgsdjtsfHwodGhpcy5hYnNQb3M9dGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksdGhpcy5zaXR1YXRpb24ubG9vcHMhPT0hMT8odT1NYXRoLm1heCh0aGlzLmFic1BvcywwKSx4PU1hdGguZmxvb3IodSksdGhpcy5zaXR1YXRpb24ubG9vcHM9PT0hMHx8eDx0aGlzLnNpdHVhdGlvbi5sb29wcz8odGhpcy5wb3M9dS14LHY9dGhpcy5zaXR1YXRpb24ubG9vcCx0aGlzLnNpdHVhdGlvbi5sb29wPXgpOih0aGlzLmFic1Bvcz10aGlzLnNpdHVhdGlvbi5sb29wcyx0aGlzLnBvcz0xLHY9dGhpcy5zaXR1YXRpb24ubG9vcC0xLHRoaXMuc2l0dWF0aW9uLmxvb3A9dGhpcy5zaXR1YXRpb24ubG9vcHMpLHRoaXMuc2l0dWF0aW9uLnJldmVyc2luZyYmKHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkPXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkIT0hISgodGhpcy5zaXR1YXRpb24ubG9vcC12KSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1BvcyksdGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIGs9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciBTIGluIHRoaXMuc2l0dWF0aW9uLm9uY2UpUz50aGlzLmxhc3RQb3MmJlM8PWsmJih0aGlzLnNpdHVhdGlvbi5vbmNlW1NdLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxrKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtTXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoXCJkdXJpbmdcIix7cG9zOnRoaXMucG9zLGVhc2VkOmssZng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbj8odGhpcy5lYWNoQXQoKSx0aGlzLnBvcz09MSYmIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkfHx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmdGhpcy5wb3M9PTA/KHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMudGFyZ2V0KCkuZmlyZShcImZpbmlzaGVkXCIse2Z4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkuZmlyZShcImFsbGZpbmlzaGVkXCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZihcIi5meFwiKSx0aGlzLmFjdGl2ZT0hMSkpLHRoaXMuYWN0aXZlP3RoaXMuZGVxdWV1ZSgpOnRoaXMuY2xlYXJDdXJyZW50KCkpOiF0aGlzLnBhdXNlZCYmdGhpcy5hY3RpdmUmJnRoaXMuc3RhcnRBbmltRnJhbWUoKSx0aGlzLmxhc3RQb3M9ayx0aGlzKTp0aGlzfSxlYWNoQXQ6ZnVuY3Rpb24oKXt2YXIgbCx1PXRoaXMseD10aGlzLnRhcmdldCgpLHY9dGhpcy5zaXR1YXRpb247Zm9yKHZhciBrIGluIHYuYW5pbWF0aW9ucylsPVtdLmNvbmNhdCh2LmFuaW1hdGlvbnNba10pLm1hcChmdW5jdGlvbihMKXtyZXR1cm4gdHlwZW9mIEwhPVwic3RyaW5nXCImJkwuYXQ/TC5hdCh2LmVhc2UodS5wb3MpLHUucG9zKTpMfSkseFtrXS5hcHBseSh4LGwpO2Zvcih2YXIgayBpbiB2LmF0dHJzKWw9W2tdLmNvbmNhdCh2LmF0dHJzW2tdKS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIHR5cGVvZiBJIT1cInN0cmluZ1wiJiZJLmF0P0kuYXQodi5lYXNlKHUucG9zKSx1LnBvcyk6SX0pLHguYXR0ci5hcHBseSh4LGwpO2Zvcih2YXIgayBpbiB2LnN0eWxlcylsPVtrXS5jb25jYXQodi5zdHlsZXNba10pLm1hcChmdW5jdGlvbihJKXtyZXR1cm4gdHlwZW9mIEkhPVwic3RyaW5nXCImJkkuYXQ/SS5hdCh2LmVhc2UodS5wb3MpLHUucG9zKTpJfSkseC5zdHlsZS5hcHBseSh4LGwpO2lmKHYudHJhbnNmb3Jtcy5sZW5ndGgpe2w9di5pbml0aWFsVHJhbnNmb3JtYXRpb24saz0wO2Zvcih2YXIgUz12LnRyYW5zZm9ybXMubGVuZ3RoO2s8UztrKyspe3ZhciBDPXYudHJhbnNmb3Jtc1trXTtDIGluc3RhbmNlb2YgdC5NYXRyaXg/bD1DLnJlbGF0aXZlP2wubXVsdGlwbHkobmV3IHQuTWF0cml4KCkubW9ycGgoQykuYXQodi5lYXNlKHRoaXMucG9zKSkpOmwubW9ycGgoQykuYXQodi5lYXNlKHRoaXMucG9zKSk6KEMucmVsYXRpdmV8fEMudW5kbyhsLmV4dHJhY3QoKSksbD1sLm11bHRpcGx5KEMuYXQodi5lYXNlKHRoaXMucG9zKSkpKX14Lm1hdHJpeChsKX1yZXR1cm4gdGhpc30sb25jZTpmdW5jdGlvbihsLHUseCl7dmFyIHY9dGhpcy5sYXN0KCk7cmV0dXJuIHh8fChsPXYuZWFzZShsKSksdi5vbmNlW2xdPXUsdGhpc30sX2NhbGxTdGFydDpmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RoaXMuc3RhcnQoKX0pLmJpbmQodGhpcyksMCksdGhpc319LHBhcmVudDp0LkVsZW1lbnQsY29uc3RydWN0OnthbmltYXRlOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IHQuRlgodGhpcykpKS5hbmltYXRlKGwsdSx4KX0sZGVsYXk6ZnVuY3Rpb24obCl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyB0LkZYKHRoaXMpKSkuZGVsYXkobCl9LHN0b3A6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5zdG9wKGwsdSksdGhpc30sZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguZmluaXNoKCksdGhpc319fSksdC5Nb3JwaE9iaj10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHQuQ29sb3IuaXNDb2xvcih1KT9uZXcgdC5Db2xvcihsKS5tb3JwaCh1KTp0LnJlZ2V4LmRlbGltaXRlci50ZXN0KGwpP3QucmVnZXgucGF0aExldHRlcnMudGVzdChsKT9uZXcgdC5QYXRoQXJyYXkobCkubW9ycGgodSk6bmV3IHQuQXJyYXkobCkubW9ycGgodSk6dC5yZWdleC5udW1iZXJBbmRVbml0LnRlc3QodSk/bmV3IHQuTnVtYmVyKGwpLm1vcnBoKHUpOih0aGlzLnZhbHVlPWwsdm9pZCh0aGlzLmRlc3RpbmF0aW9uPXUpKX0sZXh0ZW5kOnthdDpmdW5jdGlvbihsLHUpe3JldHVybiB1PDE/dGhpcy52YWx1ZTp0aGlzLmRlc3RpbmF0aW9ufSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fX0pLHQuZXh0ZW5kKHQuRlgse2F0dHI6ZnVuY3Rpb24obCx1LHgpe2lmKFUobCk9PT1cIm9iamVjdFwiKWZvcih2YXIgdiBpbiBsKXRoaXMuYXR0cih2LGxbdl0pO2Vsc2UgdGhpcy5hZGQobCx1LFwiYXR0cnNcIik7cmV0dXJuIHRoaXN9LHBsb3Q6ZnVuY3Rpb24obCx1LHgsdil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PTQ/dGhpcy5wbG90KFtsLHUseCx2XSk6dGhpcy5hZGQoXCJwbG90XCIsbmV3KHRoaXMudGFyZ2V0KCkpLm1vcnBoQXJyYXkobCkpfX0pLHQuQm94PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCx1LHgsdil7aWYoIShVKGwpIT09XCJvYmplY3RcInx8bCBpbnN0YW5jZW9mIHQuRWxlbWVudCkpcmV0dXJuIHQuQm94LmNhbGwodGhpcyxsLmxlZnQhPW51bGw/bC5sZWZ0OmwueCxsLnRvcCE9bnVsbD9sLnRvcDpsLnksbC53aWR0aCxsLmhlaWdodCk7dmFyIGs7YXJndW1lbnRzLmxlbmd0aD09NCYmKHRoaXMueD1sLHRoaXMueT11LHRoaXMud2lkdGg9eCx0aGlzLmhlaWdodD12KSwoaz10aGlzKS54PT1udWxsJiYoay54PTAsay55PTAsay53aWR0aD0wLGsuaGVpZ2h0PTApLGsudz1rLndpZHRoLGsuaD1rLmhlaWdodCxrLngyPWsueCtrLndpZHRoLGsueTI9ay55K2suaGVpZ2h0LGsuY3g9ay54K2sud2lkdGgvMixrLmN5PWsueStrLmhlaWdodC8yfX0pLHQuQkJveD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe2lmKHQuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSxsIGluc3RhbmNlb2YgdC5FbGVtZW50KXt2YXIgdTt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIHg9bC5ub2RlO3gucGFyZW50Tm9kZTspeD14LnBhcmVudE5vZGU7aWYoeCE9ZSl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBpbiB0aGUgZG9tXCIpfXU9bC5ub2RlLmdldEJCb3goKX1jYXRjaHtpZihsIGluc3RhbmNlb2YgdC5TaGFwZSl7dC5wYXJzZXIuZHJhd3x8dC5wcmVwYXJlKCk7dmFyIHY9bC5jbG9uZSh0LnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7diYmdi5ub2RlJiZ0eXBlb2Ygdi5ub2RlLmdldEJCb3g9PVwiZnVuY3Rpb25cIiYmKHU9di5ub2RlLmdldEJCb3goKSksdiYmdHlwZW9mIHYucmVtb3ZlPT1cImZ1bmN0aW9uXCImJnYucmVtb3ZlKCl9ZWxzZSB1PXt4Omwubm9kZS5jbGllbnRMZWZ0LHk6bC5ub2RlLmNsaWVudFRvcCx3aWR0aDpsLm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0Omwubm9kZS5jbGllbnRIZWlnaHR9fXQuQm94LmNhbGwodGhpcyx1KX19LGluaGVyaXQ6dC5Cb3gscGFyZW50OnQuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuQkJveCh0aGlzKX19fSksdC5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LkJCb3gsdC5NYXRyaXg9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt2YXIgdT1mKFsxLDAsMCwxLDAsMF0pO2w9bD09PW51bGw/dTpsIGluc3RhbmNlb2YgdC5FbGVtZW50P2wubWF0cml4aWZ5KCk6dHlwZW9mIGw9PVwic3RyaW5nXCI/ZihsLnNwbGl0KHQucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpOmFyZ3VtZW50cy5sZW5ndGg9PTY/ZihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOkFycmF5LmlzQXJyYXkobCk/ZihsKTpsJiZVKGwpPT09XCJvYmplY3RcIj9sOnU7Zm9yKHZhciB4PXcubGVuZ3RoLTE7eD49MDstLXgpdGhpc1t3W3hdXT1sW3dbeF1dIT1udWxsP2xbd1t4XV06dVt3W3hdXX0sZXh0ZW5kOntleHRyYWN0OmZ1bmN0aW9uKCl7dmFyIGw9cCh0aGlzLDAsMSk7cCh0aGlzLDEsMCk7dmFyIHU9MTgwL01hdGguUEkqTWF0aC5hdGFuMihsLnksbC54KS05MDtyZXR1cm57eDp0aGlzLmUseTp0aGlzLmYsdHJhbnNmb3JtZWRYOih0aGlzLmUqTWF0aC5jb3ModSpNYXRoLlBJLzE4MCkrdGhpcy5mKk1hdGguc2luKHUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5hKnRoaXMuYSt0aGlzLmIqdGhpcy5iKSx0cmFuc2Zvcm1lZFk6KHRoaXMuZipNYXRoLmNvcyh1Kk1hdGguUEkvMTgwKSt0aGlzLmUqTWF0aC5zaW4oLXUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5jKnRoaXMuYyt0aGlzLmQqdGhpcy5kKSxyb3RhdGlvbjp1LGE6dGhpcy5hLGI6dGhpcy5iLGM6dGhpcy5jLGQ6dGhpcy5kLGU6dGhpcy5lLGY6dGhpcy5mLG1hdHJpeDpuZXcgdC5NYXRyaXgodGhpcyl9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdC5NYXRyaXgodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyB0Lk1hdHJpeChsKSx0aGlzfSxtdWx0aXBseTpmdW5jdGlvbihsKXtyZXR1cm4gbmV3IHQuTWF0cml4KHRoaXMubmF0aXZlKCkubXVsdGlwbHkoZnVuY3Rpb24odSl7cmV0dXJuIHUgaW5zdGFuY2VvZiB0Lk1hdHJpeHx8KHU9bmV3IHQuTWF0cml4KHUpKSx1fShsKS5uYXRpdmUoKSkpfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0Lk1hdHJpeCh0aGlzLm5hdGl2ZSgpLmludmVyc2UoKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihsLHUpe3JldHVybiBuZXcgdC5NYXRyaXgodGhpcy5uYXRpdmUoKS50cmFuc2xhdGUobHx8MCx1fHwwKSl9LG5hdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgbD10LnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksdT13Lmxlbmd0aC0xO3U+PTA7dS0tKWxbd1t1XV09dGhpc1t3W3VdXTtyZXR1cm4gbH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIm1hdHJpeChcIittKHRoaXMuYSkrXCIsXCIrbSh0aGlzLmIpK1wiLFwiK20odGhpcy5jKStcIixcIittKHRoaXMuZCkrXCIsXCIrbSh0aGlzLmUpK1wiLFwiK20odGhpcy5mKStcIilcIn19LHBhcmVudDp0LkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiB0Lk5lc3RlZCl7dmFyIGw9dGhpcy5yZWN0KDEsMSksdT1sLm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIGwucmVtb3ZlKCksbmV3IHQuTWF0cml4KHUpfXJldHVybiBuZXcgdC5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksdC5Qb2ludD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwsdSl7dmFyIHg7eD1BcnJheS5pc0FycmF5KGwpP3t4OmxbMF0seTpsWzFdfTpVKGwpPT09XCJvYmplY3RcIj97eDpsLngseTpsLnl9OmwhPW51bGw/e3g6bCx5OnU/P2x9Ont4OjAseTowfSx0aGlzLng9eC54LHRoaXMueT14Lnl9LGV4dGVuZDp7Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuUG9pbnQodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IHQuUG9pbnQobCx1KSx0aGlzfX19KSx0LmV4dGVuZCh0LkVsZW1lbnQse3BvaW50OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIG5ldyB0LlBvaW50KGwsdSkudHJhbnNmb3JtKHRoaXMuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpKX19KSx0LmV4dGVuZCh0LkVsZW1lbnQse2F0dHI6ZnVuY3Rpb24obCx1LHgpe2lmKGw9PW51bGwpe2ZvcihsPXt9LHg9KHU9dGhpcy5ub2RlLmF0dHJpYnV0ZXMpLmxlbmd0aC0xO3g+PTA7eC0tKWxbdVt4XS5ub2RlTmFtZV09dC5yZWdleC5pc051bWJlci50ZXN0KHVbeF0ubm9kZVZhbHVlKT9wYXJzZUZsb2F0KHVbeF0ubm9kZVZhbHVlKTp1W3hdLm5vZGVWYWx1ZTtyZXR1cm4gbH1pZihVKGwpPT09XCJvYmplY3RcIilmb3IodmFyIHYgaW4gbCl0aGlzLmF0dHIodixsW3ZdKTtlbHNlIGlmKHU9PT1udWxsKXRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUobCk7ZWxzZXtpZih1PT1udWxsKXJldHVybih1PXRoaXMubm9kZS5nZXRBdHRyaWJ1dGUobCkpPT1udWxsP3QuZGVmYXVsdHMuYXR0cnNbbF06dC5yZWdleC5pc051bWJlci50ZXN0KHUpP3BhcnNlRmxvYXQodSk6dTtsPT1cInN0cm9rZS13aWR0aFwiP3RoaXMuYXR0cihcInN0cm9rZVwiLHBhcnNlRmxvYXQodSk+MD90aGlzLl9zdHJva2U6bnVsbCk6bD09XCJzdHJva2VcIiYmKHRoaXMuX3N0cm9rZT11KSxsIT1cImZpbGxcIiYmbCE9XCJzdHJva2VcInx8KHQucmVnZXguaXNJbWFnZS50ZXN0KHUpJiYodT10aGlzLmRvYygpLmRlZnMoKS5pbWFnZSh1LDAsMCkpLHUgaW5zdGFuY2VvZiB0LkltYWdlJiYodT10aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsMCxmdW5jdGlvbigpe3RoaXMuYWRkKHUpfSkpKSx0eXBlb2YgdT09XCJudW1iZXJcIj91PW5ldyB0Lk51bWJlcih1KTp0LkNvbG9yLmlzQ29sb3IodSk/dT1uZXcgdC5Db2xvcih1KTpBcnJheS5pc0FycmF5KHUpJiYodT1uZXcgdC5BcnJheSh1KSksbD09XCJsZWFkaW5nXCI/dGhpcy5sZWFkaW5nJiZ0aGlzLmxlYWRpbmcodSk6dHlwZW9mIHg9PVwic3RyaW5nXCI/dGhpcy5ub2RlLnNldEF0dHJpYnV0ZU5TKHgsbCx1LnRvU3RyaW5nKCkpOnRoaXMubm9kZS5zZXRBdHRyaWJ1dGUobCx1LnRvU3RyaW5nKCkpLCF0aGlzLnJlYnVpbGR8fGwhPVwiZm9udC1zaXplXCImJmwhPVwieFwifHx0aGlzLnJlYnVpbGQobCx1KX1yZXR1cm4gdGhpc319KSx0LmV4dGVuZCh0LkVsZW1lbnQse3RyYW5zZm9ybTpmdW5jdGlvbihsLHUpe3ZhciB4O3JldHVybiBVKGwpIT09XCJvYmplY3RcIj8oeD1uZXcgdC5NYXRyaXgodGhpcykuZXh0cmFjdCgpLHR5cGVvZiBsPT1cInN0cmluZ1wiP3hbbF06eCk6KHg9bmV3IHQuTWF0cml4KHRoaXMpLHU9ISF1fHwhIWwucmVsYXRpdmUsbC5hIT1udWxsJiYoeD11P3gubXVsdGlwbHkobmV3IHQuTWF0cml4KGwpKTpuZXcgdC5NYXRyaXgobCkpLHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLHgpKX19KSx0LmV4dGVuZCh0LkVsZW1lbnQse3VudHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG51bGwpfSxtYXRyaXhpZnk6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5hdHRyKFwidHJhbnNmb3JtXCIpfHxcIlwiKS5zcGxpdCh0LnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsLTEpLm1hcChmdW5jdGlvbihsKXt2YXIgdT1sLnRyaW0oKS5zcGxpdChcIihcIik7cmV0dXJuW3VbMF0sdVsxXS5zcGxpdCh0LnJlZ2V4LmRlbGltaXRlcikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBwYXJzZUZsb2F0KHgpfSldfSkucmVkdWNlKGZ1bmN0aW9uKGwsdSl7cmV0dXJuIHVbMF09PVwibWF0cml4XCI/bC5tdWx0aXBseShmKHVbMV0pKTpsW3VbMF1dLmFwcGx5KGwsdVsxXSl9LG5ldyB0Lk1hdHJpeCl9LHRvUGFyZW50OmZ1bmN0aW9uKGwpe2lmKHRoaXM9PWwpcmV0dXJuIHRoaXM7dmFyIHU9dGhpcy5zY3JlZW5DVE0oKSx4PWwuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3JldHVybiB0aGlzLmFkZFRvKGwpLnVudHJhbnNmb3JtKCkudHJhbnNmb3JtKHgubXVsdGlwbHkodSkpLHRoaXN9LHRvRG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9QYXJlbnQodGhpcy5kb2MoKSl9fSksdC5UcmFuc2Zvcm1hdGlvbj10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwsdSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZ0eXBlb2YgdSE9XCJib29sZWFuXCIpcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7aWYoQXJyYXkuaXNBcnJheShsKSlmb3IodmFyIHg9MCx2PXRoaXMuYXJndW1lbnRzLmxlbmd0aDt4PHY7Kyt4KXRoaXNbdGhpcy5hcmd1bWVudHNbeF1dPWxbeF07ZWxzZSBpZihsJiZVKGwpPT09XCJvYmplY3RcIilmb3IoeD0wLHY9dGhpcy5hcmd1bWVudHMubGVuZ3RoO3g8djsrK3gpdGhpc1t0aGlzLmFyZ3VtZW50c1t4XV09bFt0aGlzLmFyZ3VtZW50c1t4XV07dGhpcy5pbnZlcnNlZD0hMSx1PT09ITAmJih0aGlzLmludmVyc2VkPSEwKX19KSx0LlRyYW5zbGF0ZT10LmludmVudCh7cGFyZW50OnQuTWF0cml4LGluaGVyaXQ6dC5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24obCx1KXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6W1widHJhbnNmb3JtZWRYXCIsXCJ0cmFuc2Zvcm1lZFlcIl0sbWV0aG9kOlwidHJhbnNsYXRlXCJ9fSksdC5leHRlbmQodC5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbihsLHUpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTApcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHxcIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilpZihVKGwpPT09XCJvYmplY3RcIilmb3IodmFyIHggaW4gbCl0aGlzLnN0eWxlKHgsbFt4XSk7ZWxzZXtpZighdC5yZWdleC5pc0Nzcy50ZXN0KGwpKXJldHVybiB0aGlzLm5vZGUuc3R5bGVbaChsKV07Zm9yKGw9bC5zcGxpdCgvXFxzKjtcXHMqLykuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiEhdn0pLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gdi5zcGxpdCgvXFxzKjpcXHMqLyl9KTt1PWwucG9wKCk7KXRoaXMuc3R5bGUodVswXSx1WzFdKX1lbHNlIHRoaXMubm9kZS5zdHlsZVtoKGwpXT11PT09bnVsbHx8dC5yZWdleC5pc0JsYW5rLnRlc3QodSk/XCJcIjp1O3JldHVybiB0aGlzfX0pLHQuUGFyZW50PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsbCl9LGluaGVyaXQ6dC5FbGVtZW50LGV4dGVuZDp7Y2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gdC51dGlscy5tYXAodC51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0aGlzLm5vZGUuY2hpbGROb2RlcyksZnVuY3Rpb24obCl7cmV0dXJuIHQuYWRvcHQobCl9KX0sYWRkOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHU9PW51bGw/dGhpcy5ub2RlLmFwcGVuZENoaWxkKGwubm9kZSk6bC5ub2RlIT10aGlzLm5vZGUuY2hpbGROb2Rlc1t1XSYmdGhpcy5ub2RlLmluc2VydEJlZm9yZShsLm5vZGUsdGhpcy5ub2RlLmNoaWxkTm9kZXNbdV0pLHRoaXN9LHB1dDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmFkZChsLHUpLGx9LGhhczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5pbmRleChsKT49MH0saW5kZXg6ZnVuY3Rpb24obCl7cmV0dXJuW10uc2xpY2UuY2FsbCh0aGlzLm5vZGUuY2hpbGROb2RlcykuaW5kZXhPZihsLm5vZGUpfSxnZXQ6ZnVuY3Rpb24obCl7cmV0dXJuIHQuYWRvcHQodGhpcy5ub2RlLmNoaWxkTm9kZXNbbF0pfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm5vZGUuY2hpbGROb2Rlcy5sZW5ndGgtMSl9LGVhY2g6ZnVuY3Rpb24obCx1KXtmb3IodmFyIHg9dGhpcy5jaGlsZHJlbigpLHY9MCxrPXgubGVuZ3RoO3Y8azt2KyspeFt2XWluc3RhbmNlb2YgdC5FbGVtZW50JiZsLmFwcGx5KHhbdl0sW3YseF0pLHUmJnhbdl1pbnN0YW5jZW9mIHQuQ29udGFpbmVyJiZ4W3ZdLmVhY2gobCx1KTtyZXR1cm4gdGhpc30scmVtb3ZlRWxlbWVudDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKGwubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdGhpc30sZGVmczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYygpLmRlZnMoKX19fSksdC5leHRlbmQodC5QYXJlbnQse3VuZ3JvdXA6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdT09PTB8fHRoaXMgaW5zdGFuY2VvZiB0LkRlZnN8fHRoaXMubm9kZT09dC5wYXJzZXIuZHJhd3x8KGw9bHx8KHRoaXMgaW5zdGFuY2VvZiB0LkRvYz90aGlzOnRoaXMucGFyZW50KHQuUGFyZW50KSksdT11fHwxLzAsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB0LkRlZnM/dGhpczp0aGlzIGluc3RhbmNlb2YgdC5QYXJlbnQ/dGhpcy51bmdyb3VwKGwsdS0xKTp0aGlzLnRvUGFyZW50KGwpfSksdGhpcy5ub2RlLmZpcnN0Q2hpbGR8fHRoaXMucmVtb3ZlKCkpLHRoaXN9LGZsYXR0ZW46ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy51bmdyb3VwKGwsdSl9fSksdC5Db250YWluZXI9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxsKX0saW5oZXJpdDp0LlBhcmVudH0pLHQuVmlld0JveD10LmludmVudCh7cGFyZW50OnQuQ29udGFpbmVyLGNvbnN0cnVjdDp7fX0pLFtcImNsaWNrXCIsXCJkYmxjbGlja1wiLFwibW91c2Vkb3duXCIsXCJtb3VzZXVwXCIsXCJtb3VzZW92ZXJcIixcIm1vdXNlb3V0XCIsXCJtb3VzZW1vdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwidG91Y2hsZWF2ZVwiLFwidG91Y2hlbmRcIixcInRvdWNoY2FuY2VsXCJdLmZvckVhY2goZnVuY3Rpb24obCl7dC5FbGVtZW50LnByb3RvdHlwZVtsXT1mdW5jdGlvbih1KXtyZXR1cm4gdC5vbih0aGlzLm5vZGUsbCx1KSx0aGlzfX0pLHQubGlzdGVuZXJzPVtdLHQuaGFuZGxlck1hcD1bXSx0Lmxpc3RlbmVySWQ9MCx0Lm9uPWZ1bmN0aW9uKGwsdSx4LHYsayl7dmFyIFM9eC5iaW5kKHZ8fGwuaW5zdGFuY2V8fGwpLEM9KHQuaGFuZGxlck1hcC5pbmRleE9mKGwpKzF8fHQuaGFuZGxlck1hcC5wdXNoKGwpKS0xLEw9dS5zcGxpdChcIi5cIilbMF0sST11LnNwbGl0KFwiLlwiKVsxXXx8XCIqXCI7dC5saXN0ZW5lcnNbQ109dC5saXN0ZW5lcnNbQ118fHt9LHQubGlzdGVuZXJzW0NdW0xdPXQubGlzdGVuZXJzW0NdW0xdfHx7fSx0Lmxpc3RlbmVyc1tDXVtMXVtJXT10Lmxpc3RlbmVyc1tDXVtMXVtJXXx8e30seC5fc3ZnanNMaXN0ZW5lcklkfHwoeC5fc3ZnanNMaXN0ZW5lcklkPSsrdC5saXN0ZW5lcklkKSx0Lmxpc3RlbmVyc1tDXVtMXVtJXVt4Ll9zdmdqc0xpc3RlbmVySWRdPVMsbC5hZGRFdmVudExpc3RlbmVyKEwsUyxrfHx7cGFzc2l2ZTohMH0pfSx0Lm9mZj1mdW5jdGlvbihsLHUseCl7dmFyIHY9dC5oYW5kbGVyTWFwLmluZGV4T2YobCksaz11JiZ1LnNwbGl0KFwiLlwiKVswXSxTPXUmJnUuc3BsaXQoXCIuXCIpWzFdLEM9XCJcIjtpZih2IT0tMSlpZih4KXtpZih0eXBlb2YgeD09XCJmdW5jdGlvblwiJiYoeD14Ll9zdmdqc0xpc3RlbmVySWQpLCF4KXJldHVybjt0Lmxpc3RlbmVyc1t2XVtrXSYmdC5saXN0ZW5lcnNbdl1ba11bU3x8XCIqXCJdJiYobC5yZW1vdmVFdmVudExpc3RlbmVyKGssdC5saXN0ZW5lcnNbdl1ba11bU3x8XCIqXCJdW3hdLCExKSxkZWxldGUgdC5saXN0ZW5lcnNbdl1ba11bU3x8XCIqXCJdW3hdKX1lbHNlIGlmKFMmJmspe2lmKHQubGlzdGVuZXJzW3ZdW2tdJiZ0Lmxpc3RlbmVyc1t2XVtrXVtTXSl7Zm9yKHZhciBMIGluIHQubGlzdGVuZXJzW3ZdW2tdW1NdKXQub2ZmKGwsW2ssU10uam9pbihcIi5cIiksTCk7ZGVsZXRlIHQubGlzdGVuZXJzW3ZdW2tdW1NdfX1lbHNlIGlmKFMpZm9yKHZhciBJIGluIHQubGlzdGVuZXJzW3ZdKWZvcih2YXIgQyBpbiB0Lmxpc3RlbmVyc1t2XVtJXSlTPT09QyYmdC5vZmYobCxbSSxTXS5qb2luKFwiLlwiKSk7ZWxzZSBpZihrKXtpZih0Lmxpc3RlbmVyc1t2XVtrXSl7Zm9yKHZhciBDIGluIHQubGlzdGVuZXJzW3ZdW2tdKXQub2ZmKGwsW2ssQ10uam9pbihcIi5cIikpO2RlbGV0ZSB0Lmxpc3RlbmVyc1t2XVtrXX19ZWxzZXtmb3IodmFyIEkgaW4gdC5saXN0ZW5lcnNbdl0pdC5vZmYobCxJKTtkZWxldGUgdC5saXN0ZW5lcnNbdl0sZGVsZXRlIHQuaGFuZGxlck1hcFt2XX19LHQuZXh0ZW5kKHQuRWxlbWVudCx7b246ZnVuY3Rpb24obCx1LHgsdil7cmV0dXJuIHQub24odGhpcy5ub2RlLGwsdSx4LHYpLHRoaXN9LG9mZjpmdW5jdGlvbihsLHUpe3JldHVybiB0Lm9mZih0aGlzLm5vZGUsbCx1KSx0aGlzfSxmaXJlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIGwgaW5zdGFuY2VvZiB5LkV2ZW50P3RoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGwpOnRoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGw9bmV3IHQuQ3VzdG9tRXZlbnQobCx7ZGV0YWlsOnUsY2FuY2VsYWJsZTohMH0pKSx0aGlzLl9ldmVudD1sLHRoaXN9LGV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50fX0pLHQuRGVmcz10LmludmVudCh7Y3JlYXRlOlwiZGVmc1wiLGluaGVyaXQ6dC5Db250YWluZXJ9KSx0Lkc9dC5pbnZlbnQoe2NyZWF0ZTpcImdcIixpbmhlcml0OnQuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLnRyYW5zZm9ybShcInhcIik6dGhpcy50cmFuc2Zvcm0oe3g6bC10aGlzLngoKX0sITApfX0sY29uc3RydWN0Ontncm91cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgdC5HKX19fSksdC5Eb2M9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXtsJiYoKGw9dHlwZW9mIGw9PVwic3RyaW5nXCI/ZS5nZXRFbGVtZW50QnlJZChsKTpsKS5ub2RlTmFtZT09XCJzdmdcIj90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxsKToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdC5jcmVhdGUoXCJzdmdcIikpLGwuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSx0aGlzLnNpemUoXCIxMDAlXCIsXCIxMDAlXCIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6dC5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczp0Lm5zLHZlcnNpb246XCIxLjFcIn0pLmF0dHIoXCJ4bWxuczp4bGlua1wiLHQueGxpbmssdC54bWxucykuYXR0cihcInhtbG5zOnN2Z2pzXCIsdC5zdmdqcyx0LnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciBsO3JldHVybiB0aGlzLl9kZWZzfHwoKGw9dGhpcy5ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGVmc1wiKVswXSk/dGhpcy5fZGVmcz10LmFkb3B0KGwpOnRoaXMuX2RlZnM9bmV3IHQuRGVmcyx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZGVmcy5ub2RlKSksdGhpcy5fZGVmc30scGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlJiZ0aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSE9XCIjZG9jdW1lbnRcIj90aGlzLm5vZGUucGFyZW50Tm9kZTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOyl0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9kZWZzLHQucGFyc2VyLmRyYXcmJiF0LnBhcnNlci5kcmF3LnBhcmVudE5vZGUmJnRoaXMubm9kZS5hcHBlbmRDaGlsZCh0LnBhcnNlci5kcmF3KSx0aGlzfSxjbG9uZTpmdW5jdGlvbihsKXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIHU9dGhpcy5ub2RlLHg9Yih1LmNsb25lTm9kZSghMCkpO3JldHVybiBsPyhsLm5vZGV8fGwpLmFwcGVuZENoaWxkKHgubm9kZSk6dS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh4Lm5vZGUsdS5uZXh0U2libGluZykseH19fSksdC5leHRlbmQodC5FbGVtZW50LHt9KSx0LkdyYWRpZW50PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdC5jcmVhdGUobCtcIkdyYWRpZW50XCIpKSx0aGlzLnR5cGU9bH0saW5oZXJpdDp0LkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuU3RvcCkudXBkYXRlKGwsdSx4KX0sdXBkYXRlOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmNsZWFyKCksdHlwZW9mIGw9PVwiZnVuY3Rpb25cIiYmbC5jYWxsKHRoaXMsdGhpcyksdGhpc30sZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gbD09XCJ0cmFuc2Zvcm1cIiYmKGw9XCJncmFkaWVudFRyYW5zZm9ybVwiKSx0LkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsbCx1LHgpfX0sY29uc3RydWN0OntncmFkaWVudDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmRlZnMoKS5ncmFkaWVudChsLHUpfX19KSx0LmV4dGVuZCh0LkdyYWRpZW50LHQuRlgse2Zyb206ZnVuY3Rpb24obCx1KXtyZXR1cm4odGhpcy5fdGFyZ2V0fHx0aGlzKS50eXBlPT1cInJhZGlhbFwiP3RoaXMuYXR0cih7Zng6bmV3IHQuTnVtYmVyKGwpLGZ5Om5ldyB0Lk51bWJlcih1KX0pOnRoaXMuYXR0cih7eDE6bmV3IHQuTnVtYmVyKGwpLHkxOm5ldyB0Lk51bWJlcih1KX0pfSx0bzpmdW5jdGlvbihsLHUpe3JldHVybih0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU9PVwicmFkaWFsXCI/dGhpcy5hdHRyKHtjeDpuZXcgdC5OdW1iZXIobCksY3k6bmV3IHQuTnVtYmVyKHUpfSk6dGhpcy5hdHRyKHt4MjpuZXcgdC5OdW1iZXIobCkseTI6bmV3IHQuTnVtYmVyKHUpfSl9fSksdC5leHRlbmQodC5EZWZzLHtncmFkaWVudDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLnB1dChuZXcgdC5HcmFkaWVudChsKSkudXBkYXRlKHUpfX0pLHQuU3RvcD10LmludmVudCh7Y3JlYXRlOlwic3RvcFwiLGluaGVyaXQ6dC5FbGVtZW50LGV4dGVuZDp7dXBkYXRlOmZ1bmN0aW9uKGwpe3JldHVybih0eXBlb2YgbD09XCJudW1iZXJcInx8bCBpbnN0YW5jZW9mIHQuTnVtYmVyKSYmKGw9e29mZnNldDphcmd1bWVudHNbMF0sY29sb3I6YXJndW1lbnRzWzFdLG9wYWNpdHk6YXJndW1lbnRzWzJdfSksbC5vcGFjaXR5IT1udWxsJiZ0aGlzLmF0dHIoXCJzdG9wLW9wYWNpdHlcIixsLm9wYWNpdHkpLGwuY29sb3IhPW51bGwmJnRoaXMuYXR0cihcInN0b3AtY29sb3JcIixsLmNvbG9yKSxsLm9mZnNldCE9bnVsbCYmdGhpcy5hdHRyKFwib2Zmc2V0XCIsbmV3IHQuTnVtYmVyKGwub2Zmc2V0KSksdGhpc319fSksdC5QYXR0ZXJuPXQuaW52ZW50KHtjcmVhdGU6XCJwYXR0ZXJuXCIsaW5oZXJpdDp0LkNvbnRhaW5lcixleHRlbmQ6e2ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx1cGRhdGU6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuY2xlYXIoKSx0eXBlb2YgbD09XCJmdW5jdGlvblwiJiZsLmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbihsLHUseCl7cmV0dXJuIGw9PVwidHJhbnNmb3JtXCImJihsPVwicGF0dGVyblRyYW5zZm9ybVwiKSx0LkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsbCx1LHgpfX0sY29uc3RydWN0OntwYXR0ZXJuOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdGhpcy5kZWZzKCkucGF0dGVybihsLHUseCl9fX0pLHQuZXh0ZW5kKHQuRGVmcyx7cGF0dGVybjpmdW5jdGlvbihsLHUseCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlBhdHRlcm4pLnVwZGF0ZSh4KS5hdHRyKHt4OjAseTowLHdpZHRoOmwsaGVpZ2h0OnUscGF0dGVyblVuaXRzOlwidXNlclNwYWNlT25Vc2VcIn0pfX0pLHQuU2hhcGU9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxsKX0saW5oZXJpdDp0LkVsZW1lbnR9KSx0LlN5bWJvbD10LmludmVudCh7Y3JlYXRlOlwic3ltYm9sXCIsaW5oZXJpdDp0LkNvbnRhaW5lcixjb25zdHJ1Y3Q6e3N5bWJvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgdC5TeW1ib2wpfX19KSx0LlVzZT10LmludmVudCh7Y3JlYXRlOlwidXNlXCIsaW5oZXJpdDp0LlNoYXBlLGV4dGVuZDp7ZWxlbWVudDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmF0dHIoXCJocmVmXCIsKHV8fFwiXCIpK1wiI1wiK2wsdC54bGluayl9fSxjb25zdHJ1Y3Q6e3VzZTpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLnB1dChuZXcgdC5Vc2UpLmVsZW1lbnQobCx1KX19fSksdC5SZWN0PXQuaW52ZW50KHtjcmVhdGU6XCJyZWN0XCIsaW5oZXJpdDp0LlNoYXBlLGNvbnN0cnVjdDp7cmVjdDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLnB1dChuZXcgdC5SZWN0KS5zaXplKGwsdSl9fX0pLHQuQ2lyY2xlPXQuaW52ZW50KHtjcmVhdGU6XCJjaXJjbGVcIixpbmhlcml0OnQuU2hhcGUsY29uc3RydWN0OntjaXJjbGU6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LkNpcmNsZSkucngobmV3IHQuTnVtYmVyKGwpLmRpdmlkZSgyKSkubW92ZSgwLDApfX19KSx0LmV4dGVuZCh0LkNpcmNsZSx0LkZYLHtyeDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwiclwiLGwpfSxyeTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yeChsKX19KSx0LkVsbGlwc2U9dC5pbnZlbnQoe2NyZWF0ZTpcImVsbGlwc2VcIixpbmhlcml0OnQuU2hhcGUsY29uc3RydWN0OntlbGxpcHNlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LkVsbGlwc2UpLnNpemUobCx1KS5tb3ZlKDAsMCl9fX0pLHQuZXh0ZW5kKHQuRWxsaXBzZSx0LlJlY3QsdC5GWCx7cng6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcInJ4XCIsbCl9LHJ5OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJyeVwiLGwpfX0pLHQuZXh0ZW5kKHQuQ2lyY2xlLHQuRWxsaXBzZSx7eDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLmN4KCktdGhpcy5yeCgpOnRoaXMuY3gobCt0aGlzLnJ4KCkpfSx5OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuY3koKS10aGlzLnJ5KCk6dGhpcy5jeShsK3RoaXMucnkoKSl9LGN4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYXR0cihcImN4XCIpOnRoaXMuYXR0cihcImN4XCIsbCl9LGN5OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYXR0cihcImN5XCIpOnRoaXMuYXR0cihcImN5XCIsbCl9LHdpZHRoOmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsPzIqdGhpcy5yeCgpOnRoaXMucngobmV3IHQuTnVtYmVyKGwpLmRpdmlkZSgyKSl9LGhlaWdodDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD8yKnRoaXMucnkoKTp0aGlzLnJ5KG5ldyB0Lk51bWJlcihsKS5kaXZpZGUoMikpfSxzaXplOmZ1bmN0aW9uKGwsdSl7dmFyIHg9Zyh0aGlzLGwsdSk7cmV0dXJuIHRoaXMucngobmV3IHQuTnVtYmVyKHgud2lkdGgpLmRpdmlkZSgyKSkucnkobmV3IHQuTnVtYmVyKHguaGVpZ2h0KS5kaXZpZGUoMikpfX0pLHQuTGluZT10LmludmVudCh7Y3JlYXRlOlwibGluZVwiLGluaGVyaXQ6dC5TaGFwZSxleHRlbmQ6e2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0LlBvaW50QXJyYXkoW1t0aGlzLmF0dHIoXCJ4MVwiKSx0aGlzLmF0dHIoXCJ5MVwiKV0sW3RoaXMuYXR0cihcIngyXCIpLHRoaXMuYXR0cihcInkyXCIpXV0pfSxwbG90OmZ1bmN0aW9uKGwsdSx4LHYpe3JldHVybiBsPT1udWxsP3RoaXMuYXJyYXkoKToobD11IT09dm9pZCAwP3t4MTpsLHkxOnUseDI6eCx5Mjp2fTpuZXcgdC5Qb2ludEFycmF5KGwpLnRvTGluZSgpLHRoaXMuYXR0cihsKSl9LG1vdmU6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5tb3ZlKGwsdSkudG9MaW5lKCkpfSxzaXplOmZ1bmN0aW9uKGwsdSl7dmFyIHg9Zyh0aGlzLGwsdSk7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkuc2l6ZSh4LndpZHRoLHguaGVpZ2h0KS50b0xpbmUoKSl9fSxjb25zdHJ1Y3Q6e2xpbmU6ZnVuY3Rpb24obCx1LHgsdil7cmV0dXJuIHQuTGluZS5wcm90b3R5cGUucGxvdC5hcHBseSh0aGlzLnB1dChuZXcgdC5MaW5lKSxsIT1udWxsP1tsLHUseCx2XTpbMCwwLDAsMF0pfX19KSx0LlBvbHlsaW5lPXQuaW52ZW50KHtjcmVhdGU6XCJwb2x5bGluZVwiLGluaGVyaXQ6dC5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlsaW5lOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnB1dChuZXcgdC5Qb2x5bGluZSkucGxvdChsfHxuZXcgdC5Qb2ludEFycmF5KX19fSksdC5Qb2x5Z29uPXQuaW52ZW50KHtjcmVhdGU6XCJwb2x5Z29uXCIsaW5oZXJpdDp0LlNoYXBlLGNvbnN0cnVjdDp7cG9seWdvbjpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuUG9seWdvbikucGxvdChsfHxuZXcgdC5Qb2ludEFycmF5KX19fSksdC5leHRlbmQodC5Qb2x5bGluZSx0LlBvbHlnb24se2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IHQuUG9pbnRBcnJheSh0aGlzLmF0dHIoXCJwb2ludHNcIikpKX0scGxvdDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLmFycmF5KCk6dGhpcy5jbGVhcigpLmF0dHIoXCJwb2ludHNcIix0eXBlb2YgbD09XCJzdHJpbmdcIj9sOnRoaXMuX2FycmF5PW5ldyB0LlBvaW50QXJyYXkobCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc30sbW92ZTpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmF0dHIoXCJwb2ludHNcIix0aGlzLmFycmF5KCkubW92ZShsLHUpKX0sc2l6ZTpmdW5jdGlvbihsLHUpe3ZhciB4PWcodGhpcyxsLHUpO3JldHVybiB0aGlzLmF0dHIoXCJwb2ludHNcIix0aGlzLmFycmF5KCkuc2l6ZSh4LndpZHRoLHguaGVpZ2h0KSl9fSksdC5leHRlbmQodC5MaW5lLHQuUG9seWxpbmUsdC5Qb2x5Z29uLHttb3JwaEFycmF5OnQuUG9pbnRBcnJheSx4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYmJveCgpLng6dGhpcy5tb3ZlKGwsdGhpcy5iYm94KCkueSl9LHk6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5iYm94KCkueTp0aGlzLm1vdmUodGhpcy5iYm94KCkueCxsKX0sd2lkdGg6ZnVuY3Rpb24obCl7dmFyIHU9dGhpcy5iYm94KCk7cmV0dXJuIGw9PW51bGw/dS53aWR0aDp0aGlzLnNpemUobCx1LmhlaWdodCl9LGhlaWdodDpmdW5jdGlvbihsKXt2YXIgdT10aGlzLmJib3goKTtyZXR1cm4gbD09bnVsbD91LmhlaWdodDp0aGlzLnNpemUodS53aWR0aCxsKX19KSx0LlBhdGg9dC5pbnZlbnQoe2NyZWF0ZTpcInBhdGhcIixpbmhlcml0OnQuU2hhcGUsZXh0ZW5kOnttb3JwaEFycmF5OnQuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IHQuUGF0aEFycmF5KHRoaXMuYXR0cihcImRcIikpKX0scGxvdDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLmFycmF5KCk6dGhpcy5jbGVhcigpLmF0dHIoXCJkXCIsdHlwZW9mIGw9PVwic3RyaW5nXCI/bDp0aGlzLl9hcnJheT1uZXcgdC5QYXRoQXJyYXkobCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc319LGNvbnN0cnVjdDp7cGF0aDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuUGF0aCkucGxvdChsfHxuZXcgdC5QYXRoQXJyYXkpfX19KSx0LkltYWdlPXQuaW52ZW50KHtjcmVhdGU6XCJpbWFnZVwiLGluaGVyaXQ6dC5TaGFwZSxleHRlbmQ6e2xvYWQ6ZnVuY3Rpb24obCl7aWYoIWwpcmV0dXJuIHRoaXM7dmFyIHU9dGhpcyx4PW5ldyB5LkltYWdlO3JldHVybiB0Lm9uKHgsXCJsb2FkXCIsZnVuY3Rpb24oKXt0Lm9mZih4KTt2YXIgdj11LnBhcmVudCh0LlBhdHRlcm4pO3YhPT1udWxsJiYodS53aWR0aCgpPT0wJiZ1LmhlaWdodCgpPT0wJiZ1LnNpemUoeC53aWR0aCx4LmhlaWdodCksdiYmdi53aWR0aCgpPT0wJiZ2LmhlaWdodCgpPT0wJiZ2LnNpemUodS53aWR0aCgpLHUuaGVpZ2h0KCkpLHR5cGVvZiB1Ll9sb2FkZWQ9PVwiZnVuY3Rpb25cIiYmdS5fbG9hZGVkLmNhbGwodSx7d2lkdGg6eC53aWR0aCxoZWlnaHQ6eC5oZWlnaHQscmF0aW86eC53aWR0aC94LmhlaWdodCx1cmw6bH0pKX0pLHQub24oeCxcImVycm9yXCIsZnVuY3Rpb24odil7dC5vZmYoeCksdHlwZW9mIHUuX2Vycm9yPT1cImZ1bmN0aW9uXCImJnUuX2Vycm9yLmNhbGwodSx2KX0pLHRoaXMuYXR0cihcImhyZWZcIix4LnNyYz10aGlzLnNyYz1sLHQueGxpbmspfSxsb2FkZWQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuX2xvYWRlZD1sLHRoaXN9LGVycm9yOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLl9lcnJvcj1sLHRoaXN9fSxjb25zdHJ1Y3Q6e2ltYWdlOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuSW1hZ2UpLmxvYWQobCkuc2l6ZSh1fHwwLHh8fHV8fDApfX19KSx0LlRleHQ9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQuY3JlYXRlKFwidGV4dFwiKSksdGhpcy5kb20ubGVhZGluZz1uZXcgdC5OdW1iZXIoMS4zKSx0aGlzLl9yZWJ1aWxkPSEwLHRoaXMuX2J1aWxkPSExLHRoaXMuYXR0cihcImZvbnQtZmFtaWx5XCIsdC5kZWZhdWx0cy5hdHRyc1tcImZvbnQtZmFtaWx5XCJdKX0saW5oZXJpdDp0LlNoYXBlLGV4dGVuZDp7eDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLmF0dHIoXCJ4XCIpOnRoaXMuYXR0cihcInhcIixsKX0sdGV4dDpmdW5jdGlvbihsKXtpZihsPT09dm9pZCAwKXtsPVwiXCI7Zm9yKHZhciB1PXRoaXMubm9kZS5jaGlsZE5vZGVzLHg9MCx2PXUubGVuZ3RoO3g8djsrK3gpeCE9MCYmdVt4XS5ub2RlVHlwZSE9MyYmdC5hZG9wdCh1W3hdKS5kb20ubmV3TGluZWQ9PTEmJihsKz1gXG5gKSxsKz11W3hdLnRleHRDb250ZW50O3JldHVybiBsfWlmKHRoaXMuY2xlYXIoKS5idWlsZCghMCksdHlwZW9mIGw9PVwiZnVuY3Rpb25cIilsLmNhbGwodGhpcyx0aGlzKTtlbHNle3g9MDtmb3IodmFyIGs9KGw9bC5zcGxpdChgXG5gKSkubGVuZ3RoO3g8azt4KyspdGhpcy50c3BhbihsW3hdKS5uZXdMaW5lKCl9cmV0dXJuIHRoaXMuYnVpbGQoITEpLnJlYnVpbGQoKX0sc2l6ZTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwiZm9udC1zaXplXCIsbCkucmVidWlsZCgpfSxsZWFkaW5nOmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuZG9tLmxlYWRpbmc6KHRoaXMuZG9tLmxlYWRpbmc9bmV3IHQuTnVtYmVyKGwpLHRoaXMucmVidWlsZCgpKX0sbGluZXM6ZnVuY3Rpb24oKXt2YXIgbD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLHU9dC51dGlscy5tYXAodC51dGlscy5maWx0ZXJTVkdFbGVtZW50cyhsLmNoaWxkTm9kZXMpLGZ1bmN0aW9uKHgpe3JldHVybiB0LmFkb3B0KHgpfSk7cmV0dXJuIG5ldyB0LlNldCh1KX0scmVidWlsZDpmdW5jdGlvbihsKXtpZih0eXBlb2YgbD09XCJib29sZWFuXCImJih0aGlzLl9yZWJ1aWxkPWwpLHRoaXMuX3JlYnVpbGQpe3ZhciB1PXRoaXMseD0wLHY9dGhpcy5kb20ubGVhZGluZypuZXcgdC5OdW1iZXIodGhpcy5hdHRyKFwiZm9udC1zaXplXCIpKTt0aGlzLmxpbmVzKCkuZWFjaChmdW5jdGlvbigpe3RoaXMuZG9tLm5ld0xpbmVkJiYodS50ZXh0UGF0aCgpfHx0aGlzLmF0dHIoXCJ4XCIsdS5hdHRyKFwieFwiKSksdGhpcy50ZXh0KCk9PWBcbmA/eCs9djoodGhpcy5hdHRyKFwiZHlcIix2K3gpLHg9MCkpfSksdGhpcy5maXJlKFwicmVidWlsZFwiKX1yZXR1cm4gdGhpc30sYnVpbGQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuX2J1aWxkPSEhbCx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRvbT1sLHRoaXMuZG9tLmxlYWRpbmc9bmV3IHQuTnVtYmVyKGwubGVhZGluZ3x8MS4zKSx0aGlzfX0sY29uc3RydWN0Ont0ZXh0OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnB1dChuZXcgdC5UZXh0KS50ZXh0KGwpfSxwbGFpbjpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuVGV4dCkucGxhaW4obCl9fX0pLHQuVHNwYW49dC5pbnZlbnQoe2NyZWF0ZTpcInRzcGFuXCIsaW5oZXJpdDp0LlNoYXBlLGV4dGVuZDp7dGV4dDpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLm5vZGUudGV4dENvbnRlbnQrKHRoaXMuZG9tLm5ld0xpbmVkP2BcbmA6XCJcIik6KHR5cGVvZiBsPT1cImZ1bmN0aW9uXCI/bC5jYWxsKHRoaXMsdGhpcyk6dGhpcy5wbGFpbihsKSx0aGlzKX0sZHg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcImR4XCIsbCl9LGR5OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJkeVwiLGwpfSxuZXdMaW5lOmZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5wYXJlbnQodC5UZXh0KTtyZXR1cm4gdGhpcy5kb20ubmV3TGluZWQ9ITAsdGhpcy5keShsLmRvbS5sZWFkaW5nKmwuYXR0cihcImZvbnQtc2l6ZVwiKSkuYXR0cihcInhcIixsLngoKSl9fX0pLHQuZXh0ZW5kKHQuVGV4dCx0LlRzcGFuLHtwbGFpbjpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fYnVpbGQ9PT0hMSYmdGhpcy5jbGVhcigpLHRoaXMubm9kZS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKGwpKSx0aGlzfSx0c3BhbjpmdW5jdGlvbihsKXt2YXIgdT0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLHg9bmV3IHQuVHNwYW47cmV0dXJuIHRoaXMuX2J1aWxkPT09ITEmJnRoaXMuY2xlYXIoKSx1LmFwcGVuZENoaWxkKHgubm9kZSkseC50ZXh0KGwpfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgbD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlO2wuaGFzQ2hpbGROb2RlcygpOylsLnJlbW92ZUNoaWxkKGwubGFzdENoaWxkKTtyZXR1cm4gdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKX19KSx0LlRleHRQYXRoPXQuaW52ZW50KHtjcmVhdGU6XCJ0ZXh0UGF0aFwiLGluaGVyaXQ6dC5QYXJlbnQscGFyZW50OnQuVGV4dCxjb25zdHJ1Y3Q6e21vcnBoQXJyYXk6dC5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXt2YXIgbD10aGlzLnRyYWNrKCk7cmV0dXJuIGw/bC5hcnJheSgpOm51bGx9LHBsb3Q6ZnVuY3Rpb24obCl7dmFyIHU9dGhpcy50cmFjaygpLHg9bnVsbDtyZXR1cm4gdSYmKHg9dS5wbG90KGwpKSxsPT1udWxsP3g6dGhpc30sdHJhY2s6ZnVuY3Rpb24oKXt2YXIgbD10aGlzLnRleHRQYXRoKCk7aWYobClyZXR1cm4gbC5yZWZlcmVuY2UoXCJocmVmXCIpfSx0ZXh0UGF0aDpmdW5jdGlvbigpe2lmKHRoaXMubm9kZS5maXJzdENoaWxkJiZ0aGlzLm5vZGUuZmlyc3RDaGlsZC5ub2RlTmFtZT09XCJ0ZXh0UGF0aFwiKXJldHVybiB0LmFkb3B0KHRoaXMubm9kZS5maXJzdENoaWxkKX19fSksdC5OZXN0ZWQ9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQuY3JlYXRlKFwic3ZnXCIpKSx0aGlzLnN0eWxlKFwib3ZlcmZsb3dcIixcInZpc2libGVcIil9LGluaGVyaXQ6dC5Db250YWluZXIsY29uc3RydWN0OntuZXN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuTmVzdGVkKX19fSk7dmFyIG49e3N0cm9rZTpbXCJjb2xvclwiLFwid2lkdGhcIixcIm9wYWNpdHlcIixcImxpbmVjYXBcIixcImxpbmVqb2luXCIsXCJtaXRlcmxpbWl0XCIsXCJkYXNoYXJyYXlcIixcImRhc2hvZmZzZXRcIl0sZmlsbDpbXCJjb2xvclwiLFwib3BhY2l0eVwiLFwicnVsZVwiXSxwcmVmaXg6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdT09XCJjb2xvclwiP2w6bCtcIi1cIit1fX07ZnVuY3Rpb24gbyhsLHUseCx2KXtyZXR1cm4geCt2LnJlcGxhY2UodC5yZWdleC5kb3RzLFwiIC5cIil9ZnVuY3Rpb24gaChsKXtyZXR1cm4gbC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbih1LHgpe3JldHVybiB4LnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBjKGwpe3JldHVybiBsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2wuc2xpY2UoMSl9ZnVuY3Rpb24gZChsKXt2YXIgdT1sLnRvU3RyaW5nKDE2KTtyZXR1cm4gdS5sZW5ndGg9PTE/XCIwXCIrdTp1fWZ1bmN0aW9uIGcobCx1LHgpe2lmKHU9PW51bGx8fHg9PW51bGwpe3ZhciB2PWwuYmJveCgpO3U9PW51bGw/dT12LndpZHRoL3YuaGVpZ2h0Kng6eD09bnVsbCYmKHg9di5oZWlnaHQvdi53aWR0aCp1KX1yZXR1cm57d2lkdGg6dSxoZWlnaHQ6eH19ZnVuY3Rpb24gcChsLHUseCl7cmV0dXJue3g6dSpsLmEreCpsLmMrMCx5OnUqbC5iK3gqbC5kKzB9fWZ1bmN0aW9uIGYobCl7cmV0dXJue2E6bFswXSxiOmxbMV0sYzpsWzJdLGQ6bFszXSxlOmxbNF0sZjpsWzVdfX1mdW5jdGlvbiBiKGwpe2Zvcih2YXIgdT1sLmNoaWxkTm9kZXMubGVuZ3RoLTE7dT49MDt1LS0pbC5jaGlsZE5vZGVzW3VdaW5zdGFuY2VvZiB5LlNWR0VsZW1lbnQmJmIobC5jaGlsZE5vZGVzW3VdKTtyZXR1cm4gdC5hZG9wdChsKS5pZCh0LmVpZChsLm5vZGVOYW1lKSl9ZnVuY3Rpb24gbShsKXtyZXR1cm4gTWF0aC5hYnMobCk+MWUtMzc/bDowfVtcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciB1PXt9O3VbbF09ZnVuY3Rpb24oeCl7aWYoeD09PXZvaWQgMClyZXR1cm4gdGhpcztpZih0eXBlb2YgeD09XCJzdHJpbmdcInx8dC5Db2xvci5pc1JnYih4KXx8eCYmdHlwZW9mIHguZmlsbD09XCJmdW5jdGlvblwiKXRoaXMuYXR0cihsLHgpO2Vsc2UgZm9yKHZhciB2PW5bbF0ubGVuZ3RoLTE7dj49MDt2LS0peFtuW2xdW3ZdXSE9bnVsbCYmdGhpcy5hdHRyKG4ucHJlZml4KGwsbltsXVt2XSkseFtuW2xdW3ZdXSk7cmV0dXJuIHRoaXN9LHQuZXh0ZW5kKHQuRWxlbWVudCx0LkZYLHUpfSksdC5leHRlbmQodC5FbGVtZW50LHQuRlgse3RyYW5zbGF0ZTpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLnRyYW5zZm9ybSh7eDpsLHk6dX0pfSxtYXRyaXg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG5ldyB0Lk1hdHJpeChhcmd1bWVudHMubGVuZ3RoPT02P1tdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTpsKSl9LG9wYWNpdHk6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcIm9wYWNpdHlcIixsKX0sZHg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMueChuZXcgdC5OdW1iZXIobCkucGx1cyh0aGlzIGluc3RhbmNlb2YgdC5GWD8wOnRoaXMueCgpKSwhMCl9LGR5OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnkobmV3IHQuTnVtYmVyKGwpLnBsdXModGhpcyBpbnN0YW5jZW9mIHQuRlg/MDp0aGlzLnkoKSksITApfX0pLHQuZXh0ZW5kKHQuUGF0aCx7bGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRUb3RhbExlbmd0aCgpfSxwb2ludEF0OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLm5vZGUuZ2V0UG9pbnRBdExlbmd0aChsKX19KSx0LlNldD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe0FycmF5LmlzQXJyYXkobCk/dGhpcy5tZW1iZXJzPWw6dGhpcy5jbGVhcigpfSxleHRlbmQ6e2FkZDpmdW5jdGlvbigpe2Zvcih2YXIgbD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdT0wLHg9bC5sZW5ndGg7dTx4O3UrKyl0aGlzLm1lbWJlcnMucHVzaChsW3VdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGwpe3ZhciB1PXRoaXMuaW5kZXgobCk7cmV0dXJuIHU+LTEmJnRoaXMubWVtYmVycy5zcGxpY2UodSwxKSx0aGlzfSxlYWNoOmZ1bmN0aW9uKGwpe2Zvcih2YXIgdT0wLHg9dGhpcy5tZW1iZXJzLmxlbmd0aDt1PHg7dSsrKWwuYXBwbHkodGhpcy5tZW1iZXJzW3VdLFt1LHRoaXMubWVtYmVyc10pO3JldHVybiB0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnM9W10sdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycy5sZW5ndGh9LGhhczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5pbmRleChsKT49MH0saW5kZXg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMubWVtYmVycy5pbmRleE9mKGwpfSxnZXQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMubWVtYmVyc1tsXX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5tZW1iZXJzLmxlbmd0aC0xKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnN9fSxjb25zdHJ1Y3Q6e3NldDpmdW5jdGlvbihsKXtyZXR1cm4gbmV3IHQuU2V0KGwpfX19KSx0LkZYLlNldD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuc2V0PWx9fSksdC5TZXQuaW5oZXJpdD1mdW5jdGlvbigpe3ZhciBsPVtdO2Zvcih2YXIgdSBpbiB0LlNoYXBlLnByb3RvdHlwZSl0eXBlb2YgdC5TaGFwZS5wcm90b3R5cGVbdV09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIHQuU2V0LnByb3RvdHlwZVt1XSE9XCJmdW5jdGlvblwiJiZsLnB1c2godSk7Zm9yKHZhciB1IGluIGwuZm9yRWFjaChmdW5jdGlvbih2KXt0LlNldC5wcm90b3R5cGVbdl09ZnVuY3Rpb24oKXtmb3IodmFyIGs9MCxTPXRoaXMubWVtYmVycy5sZW5ndGg7azxTO2srKyl0aGlzLm1lbWJlcnNba10mJnR5cGVvZiB0aGlzLm1lbWJlcnNba11bdl09PVwiZnVuY3Rpb25cIiYmdGhpcy5tZW1iZXJzW2tdW3ZdLmFwcGx5KHRoaXMubWVtYmVyc1trXSxhcmd1bWVudHMpO3JldHVybiB2PT1cImFuaW1hdGVcIj90aGlzLmZ4fHwodGhpcy5meD1uZXcgdC5GWC5TZXQodGhpcykpOnRoaXN9fSksbD1bXSx0LkZYLnByb3RvdHlwZSl0eXBlb2YgdC5GWC5wcm90b3R5cGVbdV09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIHQuRlguU2V0LnByb3RvdHlwZVt1XSE9XCJmdW5jdGlvblwiJiZsLnB1c2godSk7bC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3QuRlguU2V0LnByb3RvdHlwZVt4XT1mdW5jdGlvbigpe2Zvcih2YXIgdj0wLGs9dGhpcy5zZXQubWVtYmVycy5sZW5ndGg7djxrO3YrKyl0aGlzLnNldC5tZW1iZXJzW3ZdLmZ4W3hdLmFwcGx5KHRoaXMuc2V0Lm1lbWJlcnNbdl0uZngsYXJndW1lbnRzKTtyZXR1cm4gdGhpc319KX0sdC5leHRlbmQodC5FbGVtZW50LHt9KSx0LmV4dGVuZCh0LkVsZW1lbnQse3JlbWVtYmVyOmZ1bmN0aW9uKGwsdSl7aWYoVShhcmd1bWVudHNbMF0pPT09XCJvYmplY3RcIilmb3IodmFyIHggaW4gbCl0aGlzLnJlbWVtYmVyKHgsbFt4XSk7ZWxzZXtpZihhcmd1bWVudHMubGVuZ3RoPT0xKXJldHVybiB0aGlzLm1lbW9yeSgpW2xdO3RoaXMubWVtb3J5KClbbF09dX1yZXR1cm4gdGhpc30sZm9yZ2V0OmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aD09MCl0aGlzLl9tZW1vcnk9e307ZWxzZSBmb3IodmFyIGw9YXJndW1lbnRzLmxlbmd0aC0xO2w+PTA7bC0tKWRlbGV0ZSB0aGlzLm1lbW9yeSgpW2FyZ3VtZW50c1tsXV07cmV0dXJuIHRoaXN9LG1lbW9yeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZW1vcnl8fCh0aGlzLl9tZW1vcnk9e30pfX0pLHQuZ2V0PWZ1bmN0aW9uKGwpe3ZhciB1PWUuZ2V0RWxlbWVudEJ5SWQoZnVuY3Rpb24oeCl7dmFyIHY9KHh8fFwiXCIpLnRvU3RyaW5nKCkubWF0Y2godC5yZWdleC5yZWZlcmVuY2UpO2lmKHYpcmV0dXJuIHZbMV19KGwpfHxsKTtyZXR1cm4gdC5hZG9wdCh1KX0sdC5zZWxlY3Q9ZnVuY3Rpb24obCx1KXtyZXR1cm4gbmV3IHQuU2V0KHQudXRpbHMubWFwKCh1fHxlKS5xdWVyeVNlbGVjdG9yQWxsKGwpLGZ1bmN0aW9uKHgpe3JldHVybiB0LmFkb3B0KHgpfSkpfSx0LmV4dGVuZCh0LlBhcmVudCx7c2VsZWN0OmZ1bmN0aW9uKGwpe3JldHVybiB0LnNlbGVjdChsLHRoaXMubm9kZSl9fSk7dmFyIHc9XCJhYmNkZWZcIi5zcGxpdChcIlwiKTtpZih0eXBlb2YgeS5DdXN0b21FdmVudCE9XCJmdW5jdGlvblwiKXt2YXIgQT1mdW5jdGlvbihsLHUpe3U9dXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgeD1lLmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIHguaW5pdEN1c3RvbUV2ZW50KGwsdS5idWJibGVzLHUuY2FuY2VsYWJsZSx1LmRldGFpbCkseH07QS5wcm90b3R5cGU9eS5FdmVudC5wcm90b3R5cGUsdC5DdXN0b21FdmVudD1BfWVsc2UgdC5DdXN0b21FdmVudD15LkN1c3RvbUV2ZW50O3JldHVybiB0fSxVKERlKT09PVwib2JqZWN0XCI/Xy5leHBvcnRzPW1lLmRvY3VtZW50P09lKG1lLG1lLmRvY3VtZW50KTpmdW5jdGlvbih5KXtyZXR1cm4gT2UoeSx5LmRvY3VtZW50KX06bWUuU1ZHPU9lKG1lLG1lLmRvY3VtZW50KSwoZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZTpcImZpbHRlclwiLGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e3NvdXJjZTpcIlNvdXJjZUdyYXBoaWNcIixzb3VyY2VBbHBoYTpcIlNvdXJjZUFscGhhXCIsYmFja2dyb3VuZDpcIkJhY2tncm91bmRJbWFnZVwiLGJhY2tncm91bmRBbHBoYTpcIkJhY2tncm91bmRBbHBoYVwiLGZpbGw6XCJGaWxsUGFpbnRcIixzdHJva2U6XCJTdHJva2VQYWludFwiLGF1dG9TZXRJbjohMCxwdXQ6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5hZGQocixuKSwhci5hdHRyKFwiaW5cIikmJnRoaXMuYXV0b1NldEluJiZyLmF0dHIoXCJpblwiLHRoaXMuc291cmNlKSxyLmF0dHIoXCJyZXN1bHRcIil8fHIuYXR0cihcInJlc3VsdFwiLHIpLHJ9LGJsZW5kOmZ1bmN0aW9uKHIsbixvKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5CbGVuZEVmZmVjdChyLG4sbykpfSxjb2xvck1hdHJpeDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbG9yTWF0cml4RWZmZWN0KHIsbikpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db252b2x2ZU1hdHJpeEVmZmVjdChyKSl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvbmVudFRyYW5zZmVyRWZmZWN0KHIpKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHIsbixvKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb3NpdGVFZmZlY3QocixuLG8pKX0sZmxvb2Q6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5GbG9vZEVmZmVjdChyLG4pKX0sb2Zmc2V0OmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHIsbikpfSxpbWFnZTpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5JbWFnZUVmZmVjdChyKSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHI9W3ZvaWQgMF07Zm9yKHZhciBuIGluIGFyZ3VtZW50cylyLnB1c2goYXJndW1lbnRzW25dKTtyZXR1cm4gdGhpcy5wdXQobmV3KFNWRy5NZXJnZUVmZmVjdC5iaW5kLmFwcGx5KFNWRy5NZXJnZUVmZmVjdCxyKSkpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QocixuKSl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Nb3JwaG9sb2d5RWZmZWN0KHIsbikpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24ocixuLG8pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpZmZ1c2VMaWdodGluZ0VmZmVjdChyLG4sbykpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24ocixuLG8saCxjKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3QocixuLG8saCxjKSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24ocixuLG8saCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdChyLG4sbyxoKSl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KX0sdHVyYnVsZW5jZTpmdW5jdGlvbihyLG4sbyxoLGMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlR1cmJ1bGVuY2VFZmZlY3QocixuLG8saCxjKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuYXR0cihcImlkXCIpK1wiKVwifX19KSxTVkcuZXh0ZW5kKFNWRy5EZWZzLHtmaWx0ZXI6ZnVuY3Rpb24ocil7dmFyIG49dGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpO3JldHVybiB0eXBlb2Ygcj09XCJmdW5jdGlvblwiJiZyLmNhbGwobixuKSxufX0pLFNWRy5leHRlbmQoU1ZHLkNvbnRhaW5lcix7ZmlsdGVyOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmRlZnMoKS5maWx0ZXIocil9fSksU1ZHLmV4dGVuZChTVkcuRWxlbWVudCxTVkcuRyxTVkcuTmVzdGVkLHtmaWx0ZXI6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuZmlsdGVyZXI9ciBpbnN0YW5jZW9mIFNWRy5FbGVtZW50P3I6dGhpcy5kb2MoKS5maWx0ZXIociksdGhpcy5kb2MoKSYmdGhpcy5maWx0ZXJlci5kb2MoKSE9PXRoaXMuZG9jKCkmJnRoaXMuZG9jKCkuZGVmcygpLmFkZCh0aGlzLmZpbHRlcmVyKSx0aGlzLmF0dHIoXCJmaWx0ZXJcIix0aGlzLmZpbHRlcmVyKSx0aGlzLmZpbHRlcmVyfSx1bmZpbHRlcjpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5maWx0ZXJlciYmcj09PSEwJiZ0aGlzLmZpbHRlcmVyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmZpbHRlcmVyLHRoaXMuYXR0cihcImZpbHRlclwiLG51bGwpfX0pLFNWRy5FZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluXCIpOnRoaXMuYXR0cihcImluXCIscil9LHJlc3VsdDpmdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLmF0dHIoXCJyZXN1bHRcIik6dGhpcy5hdHRyKFwicmVzdWx0XCIscil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pLFNWRy5QYXJlbnRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntpbjpmdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIixyKX0scmVzdWx0OmZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIixyKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSk7dmFyIHk9e2JsZW5kOmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuYmxlbmQodGhpcyxyLG4pfSxjb2xvck1hdHJpeDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbG9yTWF0cml4KHIsbikuaW4odGhpcyl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbnZvbHZlTWF0cml4KHIpLmluKHRoaXMpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb25lbnRUcmFuc2ZlcihyKS5pbih0aGlzKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9zaXRlKHRoaXMscixuKX0sZmxvb2Q6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5mbG9vZChyLG4pfSxvZmZzZXQ6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5vZmZzZXQocixuKS5pbih0aGlzKX0saW1hZ2U6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuaW1hZ2Uocil9LG1lcmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubWVyZ2UuYXBwbHkodGhpcy5wYXJlbnQoKSxbdGhpc10uY29uY2F0KGFyZ3VtZW50cykpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5nYXVzc2lhbkJsdXIocixuKS5pbih0aGlzKX0sbW9ycGhvbG9neTpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1vcnBob2xvZ3kocixuKS5pbih0aGlzKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHIsbixvKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaWZmdXNlTGlnaHRpbmcocixuLG8pLmluKHRoaXMpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24ocixuLG8saCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlzcGxhY2VtZW50TWFwKHRoaXMscixuLG8saCl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24ocixuLG8saCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc3BlY3VsYXJMaWdodGluZyhyLG4sbyxoKS5pbih0aGlzKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnRpbGUoKS5pbih0aGlzKX0sdHVyYnVsZW5jZTpmdW5jdGlvbihyLG4sbyxoLGMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnR1cmJ1bGVuY2UocixuLG8saCxjKS5pbih0aGlzKX19O1NWRy5leHRlbmQoU1ZHLkVmZmVjdCx5KSxTVkcuZXh0ZW5kKFNWRy5QYXJlbnRFZmZlY3QseSksU1ZHLkNoaWxkRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHIpe3RoaXMuYXR0cihcImluXCIscil9fX0pO3ZhciBlPXtibGVuZDpmdW5jdGlvbihyLG4sbyl7dGhpcy5hdHRyKHtpbjpyLGluMjpuLG1vZGU6b3x8XCJub3JtYWxcIn0pfSxjb2xvck1hdHJpeDpmdW5jdGlvbihyLG4pe3I9PVwibWF0cml4XCImJihuPWEobikpLHRoaXMuYXR0cih7dHlwZTpyLHZhbHVlczpuPT09dm9pZCAwP251bGw6bn0pfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbihyKXtyPWEociksdGhpcy5hdHRyKHtvcmRlcjpNYXRoLnNxcnQoci5zcGxpdChcIiBcIikubGVuZ3RoKSxrZXJuZWxNYXRyaXg6cn0pfSxjb21wb3NpdGU6ZnVuY3Rpb24ocixuLG8pe3RoaXMuYXR0cih7aW46cixpbjI6bixvcGVyYXRvcjpvfSl9LGZsb29kOmZ1bmN0aW9uKHIsbil7dGhpcy5hdHRyKFwiZmxvb2QtY29sb3JcIixyKSxuIT1udWxsJiZ0aGlzLmF0dHIoXCJmbG9vZC1vcGFjaXR5XCIsbil9LG9mZnNldDpmdW5jdGlvbihyLG4pe3RoaXMuYXR0cih7ZHg6cixkeTpufSl9LGltYWdlOmZ1bmN0aW9uKHIpe3RoaXMuYXR0cihcImhyZWZcIixyLFNWRy54bGluayl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbihyLG4sbyxoLGMpe3RoaXMuYXR0cih7aW46cixpbjI6bixzY2FsZTpvLHhDaGFubmVsU2VsZWN0b3I6aCx5Q2hhbm5lbFNlbGVjdG9yOmN9KX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHIsbil7ciE9bnVsbHx8biE9bnVsbD90aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixmdW5jdGlvbihvKXtpZighQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gbztmb3IodmFyIGg9MCxjPW8ubGVuZ3RoLGQ9W107aDxjO2grKylkLnB1c2gob1toXSk7cmV0dXJuIGQuam9pbihcIiBcIil9KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTp0aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixcIjAgMFwiKX0sbW9ycGhvbG9neTpmdW5jdGlvbihyLG4pe3RoaXMuYXR0cih7b3BlcmF0b3I6cixyYWRpdXM6bn0pfSx0aWxlOmZ1bmN0aW9uKCl7fSx0dXJidWxlbmNlOmZ1bmN0aW9uKHIsbixvLGgsYyl7dGhpcy5hdHRyKHtudW1PY3RhdmVzOm4sc2VlZDpvLHN0aXRjaFRpbGVzOmgsYmFzZUZyZXF1ZW5jeTpyLHR5cGU6Y30pfX0sdD17bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgcjtpZihhcmd1bWVudHNbMF1pbnN0YW5jZW9mIFNWRy5TZXQpe3ZhciBuPXRoaXM7YXJndW1lbnRzWzBdLmVhY2goZnVuY3Rpb24oaCl7dGhpcyBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/bi5wdXQodGhpcyk6KHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0fHx0aGlzIGluc3RhbmNlb2YgU1ZHLlBhcmVudEVmZmVjdCkmJm4ucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRoaXMpKX0pfWVsc2V7cj1BcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSk/YXJndW1lbnRzWzBdOmFyZ3VtZW50cztmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylyW29daW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMucHV0KHJbb10pOnRoaXMucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHJbb10pKX19LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHIpe2lmKHRoaXMucmdiPW5ldyBTVkcuU2V0LFtcInJcIixcImdcIixcImJcIixcImFcIl0uZm9yRWFjaCgoZnVuY3Rpb24obyl7dGhpc1tvXT1uZXcgU1ZHW1wiRnVuY1wiK28udG9VcHBlckNhc2UoKV0oXCJpZGVudGl0eVwiKSx0aGlzLnJnYi5hZGQodGhpc1tvXSksdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXNbb10ubm9kZSl9KS5iaW5kKHRoaXMpKSxyKWZvcih2YXIgbiBpbiByLnJnYiYmKFtcInJcIixcImdcIixcImJcIl0uZm9yRWFjaCgoZnVuY3Rpb24obyl7dGhpc1tvXS5hdHRyKHIucmdiKX0pLmJpbmQodGhpcykpLGRlbGV0ZSByLnJnYikscil0aGlzW25dLmF0dHIocltuXSl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbihyLG4sbyl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6cixkaWZmdXNlQ29uc3RhbnQ6bixrZXJuZWxVbml0TGVuZ3RoOm99KX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbihyLG4sbyxoKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTpyLGRpZmZ1c2VDb25zdGFudDpuLHNwZWN1bGFyRXhwb25lbnQ6byxrZXJuZWxVbml0TGVuZ3RoOmh9KX19LGk9e2Rpc3RhbnRMaWdodDpmdW5jdGlvbihyLG4pe3RoaXMuYXR0cih7YXppbXV0aDpyLGVsZXZhdGlvbjpufSl9LHBvaW50TGlnaHQ6ZnVuY3Rpb24ocixuLG8pe3RoaXMuYXR0cih7eDpyLHk6bix6Om99KX0sc3BvdExpZ2h0OmZ1bmN0aW9uKHIsbixvLGgsYyxkKXt0aGlzLmF0dHIoe3g6cix5Om4sejpvLHBvaW50c0F0WDpoLHBvaW50c0F0WTpjLHBvaW50c0F0WjpkfSl9LG1lcmdlTm9kZTpmdW5jdGlvbihyKXt0aGlzLmF0dHIoXCJpblwiLHIpfX07ZnVuY3Rpb24gYShyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYmKHI9bmV3IFNWRy5BcnJheShyKSksci50b1N0cmluZygpLnJlcGxhY2UoL15cXHMrLyxcIlwiKS5yZXBsYWNlKC9cXHMrJC8sXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKX1mdW5jdGlvbiBzKCl7dmFyIHI9ZnVuY3Rpb24oKXt9O2Zvcih2YXIgbiBpbiB0eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV09PVwiZnVuY3Rpb25cIiYmKHI9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGFyZ3VtZW50cyxhcmd1bWVudHMubGVuZ3RoLTEsMSkpLGFyZ3VtZW50cylmb3IodmFyIG8gaW4gYXJndW1lbnRzW25dKXIoYXJndW1lbnRzW25dW29dLG8sYXJndW1lbnRzW25dKX1bXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goZnVuY3Rpb24ocil7aVtcIkZ1bmNcIityLnRvVXBwZXJDYXNlKCldPWZ1bmN0aW9uKG4pe3N3aXRjaCh0aGlzLmF0dHIoXCJ0eXBlXCIsbiksbil7Y2FzZVwidGFibGVcIjp0aGlzLmF0dHIoXCJ0YWJsZVZhbHVlc1wiLGFyZ3VtZW50c1sxXSk7YnJlYWs7Y2FzZVwibGluZWFyXCI6dGhpcy5hdHRyKFwic2xvcGVcIixhcmd1bWVudHNbMV0pLHRoaXMuYXR0cihcImludGVyY2VwdFwiLGFyZ3VtZW50c1syXSk7YnJlYWs7Y2FzZVwiZ2FtbWFcIjp0aGlzLmF0dHIoXCJhbXBsaXR1ZGVcIixhcmd1bWVudHNbMV0pLHRoaXMuYXR0cihcImV4cG9uZW50XCIsYXJndW1lbnRzWzJdKSx0aGlzLmF0dHIoXCJvZmZzZXRcIixhcmd1bWVudHNbMl0pfX19KSxzKGUsZnVuY3Rpb24ocixuKXt2YXIgbz1uLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSk7U1ZHW28rXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIrbykpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5FZmZlY3QsZXh0ZW5kOnt9fSl9KSxzKHQsZnVuY3Rpb24ocixuKXt2YXIgbz1uLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSk7U1ZHW28rXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIrbykpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5QYXJlbnRFZmZlY3QsZXh0ZW5kOnt9fSl9KSxzKGksZnVuY3Rpb24ocixuKXt2YXIgbz1uLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSk7U1ZHW29dPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK28pKSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saW5oZXJpdDpTVkcuQ2hpbGRFZmZlY3QsZXh0ZW5kOnt9fSl9KSxTVkcuZXh0ZW5kKFNWRy5NZXJnZUVmZmVjdCx7aW46ZnVuY3Rpb24ocil7cmV0dXJuIHIgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMuYWRkKHIsMCk6dGhpcy5hZGQobmV3IFNWRy5NZXJnZU5vZGUociksMCksdGhpc319KSxTVkcuZXh0ZW5kKFNWRy5Db21wb3NpdGVFZmZlY3QsU1ZHLkJsZW5kRWZmZWN0LFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3Qse2luMjpmdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW4yXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluMlwiKTp0aGlzLmF0dHIoXCJpbjJcIixyKX19KSxTVkcuZmlsdGVyPXtzZXBpYXRvbmU6Wy4zNDMsLjY2OSwuMTE5LDAsMCwuMjQ5LC42MjYsLjEzLDAsMCwuMTcyLC4zMzQsLjExMSwwLDAsMCwwLDAsMSwwXX19KS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB5KHMscixuLG8saCxjLGQpe2Zvcih2YXIgZz1zLnNsaWNlKHIsbnx8ZCkscD1vLnNsaWNlKGgsY3x8ZCksZj0wLGI9e3BvczpbMCwwXSxzdGFydDpbMCwwXX0sbT17cG9zOlswLDBdLHN0YXJ0OlswLDBdfTtnW2ZdPWUuY2FsbChiLGdbZl0pLHBbZl09ZS5jYWxsKG0scFtmXSksZ1tmXVswXSE9cFtmXVswXXx8Z1tmXVswXT09XCJNXCJ8fGdbZl1bMF09PVwiQVwiJiYoZ1tmXVs0XSE9cFtmXVs0XXx8Z1tmXVs1XSE9cFtmXVs1XSk/KEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoZyxbZiwxXS5jb25jYXQoaS5jYWxsKGIsZ1tmXSkpKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHAsW2YsMV0uY29uY2F0KGkuY2FsbChtLHBbZl0pKSkpOihnW2ZdPXQuY2FsbChiLGdbZl0pLHBbZl09dC5jYWxsKG0scFtmXSkpLCEoKytmPT1nLmxlbmd0aCYmZj09cC5sZW5ndGgpOylmPT1nLmxlbmd0aCYmZy5wdXNoKFtcIkNcIixiLnBvc1swXSxiLnBvc1sxXSxiLnBvc1swXSxiLnBvc1sxXSxiLnBvc1swXSxiLnBvc1sxXV0pLGY9PXAubGVuZ3RoJiZwLnB1c2goW1wiQ1wiLG0ucG9zWzBdLG0ucG9zWzFdLG0ucG9zWzBdLG0ucG9zWzFdLG0ucG9zWzBdLG0ucG9zWzFdXSk7cmV0dXJue3N0YXJ0OmcsZGVzdDpwfX1mdW5jdGlvbiBlKHMpe3N3aXRjaChzWzBdKXtjYXNlXCJ6XCI6Y2FzZVwiWlwiOnNbMF09XCJMXCIsc1sxXT10aGlzLnN0YXJ0WzBdLHNbMl09dGhpcy5zdGFydFsxXTticmVhaztjYXNlXCJIXCI6c1swXT1cIkxcIixzWzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlZcIjpzWzBdPVwiTFwiLHNbMl09c1sxXSxzWzFdPXRoaXMucG9zWzBdO2JyZWFrO2Nhc2VcIlRcIjpzWzBdPVwiUVwiLHNbM109c1sxXSxzWzRdPXNbMl0sc1sxXT10aGlzLnJlZmxlY3Rpb25bMV0sc1syXT10aGlzLnJlZmxlY3Rpb25bMF07YnJlYWs7Y2FzZVwiU1wiOnNbMF09XCJDXCIsc1s2XT1zWzRdLHNbNV09c1szXSxzWzRdPXNbMl0sc1szXT1zWzFdLHNbMl09dGhpcy5yZWZsZWN0aW9uWzFdLHNbMV09dGhpcy5yZWZsZWN0aW9uWzBdfXJldHVybiBzfWZ1bmN0aW9uIHQocyl7dmFyIHI9cy5sZW5ndGg7cmV0dXJuIHRoaXMucG9zPVtzW3ItMl0sc1tyLTFdXSxcIlNDUVRcIi5pbmRleE9mKHNbMF0pIT0tMSYmKHRoaXMucmVmbGVjdGlvbj1bMip0aGlzLnBvc1swXS1zW3ItNF0sMip0aGlzLnBvc1sxXS1zW3ItM11dKSxzfWZ1bmN0aW9uIGkocyl7dmFyIHI9W3NdO3N3aXRjaChzWzBdKXtjYXNlXCJNXCI6cmV0dXJuIHRoaXMucG9zPXRoaXMuc3RhcnQ9W3NbMV0sc1syXV0scjtjYXNlXCJMXCI6c1s1XT1zWzNdPXNbMV0sc1s2XT1zWzRdPXNbMl0sc1sxXT10aGlzLnBvc1swXSxzWzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlFcIjpzWzZdPXNbNF0sc1s1XT1zWzNdLHNbNF09MSpzWzRdLzMrMipzWzJdLzMsc1szXT0xKnNbM10vMysyKnNbMV0vMyxzWzJdPTEqdGhpcy5wb3NbMV0vMysyKnNbMl0vMyxzWzFdPTEqdGhpcy5wb3NbMF0vMysyKnNbMV0vMzticmVhaztjYXNlXCJBXCI6cj1mdW5jdGlvbihuLG8pe3ZhciBoLGMsZCxnLHAsZixiLG0sdyxBLGwsdSx4LHYsayxTLEMsTCxJLHosVCxFLFIsTyxELFcsTj1NYXRoLmFicyhvWzFdKSxWPU1hdGguYWJzKG9bMl0pLGo9b1szXSUzNjAscmU9b1s0XSxlZT1vWzVdLGhlPW9bNl0sY2U9b1s3XSxKPW5ldyBTVkcuUG9pbnQobiksSz1uZXcgU1ZHLlBvaW50KGhlLGNlKSxwdD1bXTtpZihOPT09MHx8Vj09PTB8fEoueD09PUsueCYmSi55PT09Sy55KXJldHVybltbXCJDXCIsSi54LEoueSxLLngsSy55LEsueCxLLnldXTtmb3IoaD1uZXcgU1ZHLlBvaW50KChKLngtSy54KS8yLChKLnktSy55KS8yKS50cmFuc2Zvcm0obmV3IFNWRy5NYXRyaXgoKS5yb3RhdGUoaikpLChjPWgueCpoLngvKE4qTikraC55KmgueS8oVipWKSk+MSYmKE4qPWM9TWF0aC5zcXJ0KGMpLFYqPWMpLGQ9bmV3IFNWRy5NYXRyaXgoKS5yb3RhdGUoaikuc2NhbGUoMS9OLDEvVikucm90YXRlKC1qKSxKPUoudHJhbnNmb3JtKGQpLEs9Sy50cmFuc2Zvcm0oZCksZz1bSy54LUoueCxLLnktSi55XSxmPWdbMF0qZ1swXStnWzFdKmdbMV0scD1NYXRoLnNxcnQoZiksZ1swXS89cCxnWzFdLz1wLGI9Zjw0P01hdGguc3FydCgxLWYvNCk6MCxyZT09PWVlJiYoYio9LTEpLG09bmV3IFNWRy5Qb2ludCgoSy54K0oueCkvMitiKi1nWzFdLChLLnkrSi55KS8yK2IqZ1swXSksdz1uZXcgU1ZHLlBvaW50KEoueC1tLngsSi55LW0ueSksQT1uZXcgU1ZHLlBvaW50KEsueC1tLngsSy55LW0ueSksbD1NYXRoLmFjb3Mody54L01hdGguc3FydCh3Lngqdy54K3cueSp3LnkpKSx3Lnk8MCYmKGwqPS0xKSx1PU1hdGguYWNvcyhBLngvTWF0aC5zcXJ0KEEueCpBLngrQS55KkEueSkpLEEueTwwJiYodSo9LTEpLGVlJiZsPnUmJih1Kz0yKk1hdGguUEkpLCFlZSYmbDx1JiYodS09MipNYXRoLlBJKSx2PU1hdGguY2VpbCgyKk1hdGguYWJzKGwtdSkvTWF0aC5QSSksUz1bXSxDPWwseD0odS1sKS92LGs9NCpNYXRoLnRhbih4LzQpLzMsVD0wO1Q8PXY7VCsrKUk9TWF0aC5jb3MoQyksTD1NYXRoLnNpbihDKSx6PW5ldyBTVkcuUG9pbnQobS54K0ksbS55K0wpLFNbVF09W25ldyBTVkcuUG9pbnQoei54K2sqTCx6LnktaypJKSx6LG5ldyBTVkcuUG9pbnQoei54LWsqTCx6LnkraypJKV0sQys9eDtmb3IoU1swXVswXT1TWzBdWzFdLmNsb25lKCksU1tTLmxlbmd0aC0xXVsyXT1TW1MubGVuZ3RoLTFdWzFdLmNsb25lKCksZD1uZXcgU1ZHLk1hdHJpeCgpLnJvdGF0ZShqKS5zY2FsZShOLFYpLnJvdGF0ZSgtaiksVD0wLEU9Uy5sZW5ndGg7VDxFO1QrKylTW1RdWzBdPVNbVF1bMF0udHJhbnNmb3JtKGQpLFNbVF1bMV09U1tUXVsxXS50cmFuc2Zvcm0oZCksU1tUXVsyXT1TW1RdWzJdLnRyYW5zZm9ybShkKTtmb3IoVD0xLEU9Uy5sZW5ndGg7VDxFO1QrKylSPSh6PVNbVC0xXVsyXSkueCxPPXoueSxEPSh6PVNbVF1bMF0pLngsVz16LnksaGU9KHo9U1tUXVsxXSkueCxjZT16LnkscHQucHVzaChbXCJDXCIsUixPLEQsVyxoZSxjZV0pO3JldHVybiBwdH0odGhpcy5wb3Mscykscz1yWzBdfXJldHVybiBzWzBdPVwiQ1wiLHRoaXMucG9zPVtzWzVdLHNbNl1dLHRoaXMucmVmbGVjdGlvbj1bMipzWzVdLXNbM10sMipzWzZdLXNbNF1dLHJ9ZnVuY3Rpb24gYShzLHIpe2lmKHI9PT0hMSlyZXR1cm4hMTtmb3IodmFyIG49cixvPXMubGVuZ3RoO248bzsrK24paWYoc1tuXVswXT09XCJNXCIpcmV0dXJuIG47cmV0dXJuITF9U1ZHLmV4dGVuZChTVkcuUGF0aEFycmF5LHttb3JwaDpmdW5jdGlvbihzKXtmb3IodmFyIHI9dGhpcy52YWx1ZSxuPXRoaXMucGFyc2Uocyksbz0wLGg9MCxjPSExLGQ9ITE7byE9PSExfHxoIT09ITE7KXt2YXIgZztjPWEocixvIT09ITEmJm8rMSksZD1hKG4saCE9PSExJiZoKzEpLG89PT0hMSYmKG89KGc9bmV3IFNWRy5QYXRoQXJyYXkocC5zdGFydCkuYmJveCgpKS5oZWlnaHQ9PTB8fGcud2lkdGg9PTA/ci5wdXNoKHJbMF0pLTE6ci5wdXNoKFtcIk1cIixnLngrZy53aWR0aC8yLGcueStnLmhlaWdodC8yXSktMSksaD09PSExJiYoaD0oZz1uZXcgU1ZHLlBhdGhBcnJheShwLmRlc3QpLmJib3goKSkuaGVpZ2h0PT0wfHxnLndpZHRoPT0wP24ucHVzaChuWzBdKS0xOm4ucHVzaChbXCJNXCIsZy54K2cud2lkdGgvMixnLnkrZy5oZWlnaHQvMl0pLTEpO3ZhciBwPXkocixvLGMsbixoLGQpO3I9ci5zbGljZSgwLG8pLmNvbmNhdChwLnN0YXJ0LGM9PT0hMT9bXTpyLnNsaWNlKGMpKSxuPW4uc2xpY2UoMCxoKS5jb25jYXQocC5kZXN0LGQ9PT0hMT9bXTpuLnNsaWNlKGQpKSxvPWMhPT0hMSYmbytwLnN0YXJ0Lmxlbmd0aCxoPWQhPT0hMSYmaCtwLmRlc3QubGVuZ3RofXJldHVybiB0aGlzLnZhbHVlPXIsdGhpcy5kZXN0aW5hdGlvbj1uZXcgU1ZHLlBhdGhBcnJheSx0aGlzLmRlc3RpbmF0aW9uLnZhbHVlPW4sdGhpc319KX0oKSwoZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe2UucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIsdGhpcyksdGhpcy5lbD1lfXkucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO3RoaXMuY29uc3RyYWludD1lLHRoaXMudmFsdWU9dCx0aGlzLmVsLm9uKFwibW91c2Vkb3duLmRyYWdcIixmdW5jdGlvbihhKXtpLnN0YXJ0KGEpfSksdGhpcy5lbC5vbihcInRvdWNoc3RhcnQuZHJhZ1wiLGZ1bmN0aW9uKGEpe2kuc3RhcnQoYSl9KX0seS5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT0oZT1lfHx3aW5kb3cuZXZlbnQpLmNoYW5nZWRUb3VjaGVzJiZlLmNoYW5nZWRUb3VjaGVzWzBdfHxlO3JldHVybiB0aGlzLnAueD1pLmNsaWVudFgtKHR8fDApLHRoaXMucC55PWkuY2xpZW50WSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKHRoaXMubSl9LHkucHJvdG90eXBlLmdldEJCb3g9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQmJihlPXRoaXMuZWwucmJveCgpKSwodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlVzZXx8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQpJiYoZS54PXRoaXMuZWwueCgpLGUueT10aGlzLmVsLnkoKSksZX0seS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSl7aWYoZS50eXBlIT1cImNsaWNrXCImJmUudHlwZSE9XCJtb3VzZWRvd25cIiYmZS50eXBlIT1cIm1vdXNlbW92ZVwifHwoZS53aGljaHx8ZS5idXR0b25zKT09MSl7dmFyIHQ9dGhpcztpZih0aGlzLmVsLmZpcmUoXCJiZWZvcmVkcmFnXCIse2V2ZW50OmUsaGFuZGxlcjp0aGlzfSksIXRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCl8fHRoaXMuZWwucGFyZW50KFNWRy5Eb2MpLHRoaXMucD10aGlzLnBhcmVudC5ub2RlLmNyZWF0ZVNWR1BvaW50KCksdGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCk7dmFyIGksYT10aGlzLmdldEJCb3goKTtpZih0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlRleHQpc3dpdGNoKGk9dGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLHRoaXMuZWwuYXR0cihcInRleHQtYW5jaG9yXCIpKXtjYXNlXCJtaWRkbGVcIjppLz0yO2JyZWFrO2Nhc2VcInN0YXJ0XCI6aT0wfXRoaXMuc3RhcnRQb2ludHM9e3BvaW50OnRoaXMudHJhbnNmb3JtUG9pbnQoZSxpKSxib3g6YSx0cmFuc2Zvcm06dGhpcy5lbC50cmFuc2Zvcm0oKX0sU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIsZnVuY3Rpb24ocyl7dC5kcmFnKHMpfSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIsZnVuY3Rpb24ocyl7dC5kcmFnKHMpfSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAuZHJhZ1wiLGZ1bmN0aW9uKHMpe3QuZW5kKHMpfSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIixmdW5jdGlvbihzKXt0LmVuZChzKX0pLHRoaXMuZWwuZmlyZShcImRyYWdzdGFydFwiLHtldmVudDplLHA6dGhpcy5zdGFydFBvaW50cy5wb2ludCxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KX19fSx5LnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0QkJveCgpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludChlKSxhPXRoaXMuc3RhcnRQb2ludHMuYm94LngraS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxzPXRoaXMuc3RhcnRQb2ludHMuYm94LnkraS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueSxyPXRoaXMuY29uc3RyYWludCxuPWkueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lngsbz1pLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55O2lmKHRoaXMuZWwuZmlyZShcImRyYWdtb3ZlXCIse2V2ZW50OmUscDppLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLHRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXJldHVybiBpO2lmKHR5cGVvZiByPT1cImZ1bmN0aW9uXCIpe3ZhciBoPXIuY2FsbCh0aGlzLmVsLGEscyx0aGlzLm0pO3R5cGVvZiBoPT1cImJvb2xlYW5cIiYmKGg9e3g6aCx5Omh9KSxoLng9PT0hMD90aGlzLmVsLngoYSk6aC54IT09ITEmJnRoaXMuZWwueChoLngpLGgueT09PSEwP3RoaXMuZWwueShzKTpoLnkhPT0hMSYmdGhpcy5lbC55KGgueSl9ZWxzZSB0eXBlb2Ygcj09XCJvYmplY3RcIiYmKHIubWluWCE9bnVsbCYmYTxyLm1pblg/bj0oYT1yLm1pblgpLXRoaXMuc3RhcnRQb2ludHMuYm94Lng6ci5tYXhYIT1udWxsJiZhPnIubWF4WC10LndpZHRoJiYobj0oYT1yLm1heFgtdC53aWR0aCktdGhpcy5zdGFydFBvaW50cy5ib3gueCksci5taW5ZIT1udWxsJiZzPHIubWluWT9vPShzPXIubWluWSktdGhpcy5zdGFydFBvaW50cy5ib3gueTpyLm1heFkhPW51bGwmJnM+ci5tYXhZLXQuaGVpZ2h0JiYobz0ocz1yLm1heFktdC5oZWlnaHQpLXRoaXMuc3RhcnRQb2ludHMuYm94LnkpLHIuc25hcFRvR3JpZCE9bnVsbCYmKGEtPWElci5zbmFwVG9HcmlkLHMtPXMlci5zbmFwVG9HcmlkLG4tPW4lci5zbmFwVG9HcmlkLG8tPW8lci5zbmFwVG9HcmlkKSx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkc/dGhpcy5lbC5tYXRyaXgodGhpcy5zdGFydFBvaW50cy50cmFuc2Zvcm0pLnRyYW5zZm9ybSh7eDpuLHk6b30sITApOnRoaXMuZWwubW92ZShhLHMpKTtyZXR1cm4gaX0seS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZHJhZyhlKTt0aGlzLmVsLmZpcmUoXCJkcmFnZW5kXCIse2V2ZW50OmUscDp0LG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIil9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse2RyYWdnYWJsZTpmdW5jdGlvbihlLHQpe3R5cGVvZiBlIT1cImZ1bmN0aW9uXCImJnR5cGVvZiBlIT1cIm9iamVjdFwifHwodD1lLGU9ITApO3ZhciBpPXRoaXMucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIpfHxuZXcgeSh0aGlzKTtyZXR1cm4oZT1lPT09dm9pZCAwfHxlKT9pLmluaXQodHx8e30sZSk6KHRoaXMub2ZmKFwibW91c2Vkb3duLmRyYWdcIiksdGhpcy5vZmYoXCJ0b3VjaHN0YXJ0LmRyYWdcIikpLHRoaXN9fSl9KS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe3RoaXMuZWw9ZSxlLnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIix0aGlzKSx0aGlzLnBvaW50U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnJlY3RTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucG9pbnRzTGlzdD17bHQ6WzAsMF0scnQ6W1wid2lkdGhcIiwwXSxyYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGxiOlswLFwiaGVpZ2h0XCJdLHQ6W1wid2lkdGhcIiwwXSxyOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGw6WzAsXCJoZWlnaHRcIl19LHRoaXMucG9pbnRDb29yZD1mdW5jdGlvbih0LGksYSl7dmFyIHM9dHlwZW9mIHQhPVwic3RyaW5nXCI/dDppW3RdO3JldHVybiBhP3MvMjpzfSx0aGlzLnBvaW50Q29vcmRzPWZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy5wb2ludHNMaXN0W3RdO3JldHVybnt4OnRoaXMucG9pbnRDb29yZChhWzBdLGksdD09PVwidFwifHx0PT09XCJiXCIpLHk6dGhpcy5wb2ludENvb3JkKGFbMV0saSx0PT09XCJyXCJ8fHQ9PT1cImxcIil9fX15LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5lbC5iYm94KCk7dGhpcy5vcHRpb25zPXt9O3ZhciBhPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzLnBvaW50cztmb3IodmFyIHMgaW4gdGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW3NdPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzW3NdLHRbc10hPT12b2lkIDAmJih0aGlzLm9wdGlvbnNbc109dFtzXSk7dmFyIHI9W1wicG9pbnRzXCIsXCJwb2ludHNFeGNsdWRlXCJdO2Zvcih2YXIgcyBpbiByKXt2YXIgbj10aGlzLm9wdGlvbnNbcltzXV07dHlwZW9mIG49PVwic3RyaW5nXCI/bj1uLmxlbmd0aD4wP24uc3BsaXQoL1xccyosXFxzKi9pKTpbXTp0eXBlb2Ygbj09XCJib29sZWFuXCImJnJbc109PT1cInBvaW50c1wiJiYobj1uP2E6W10pLHRoaXMub3B0aW9uc1tyW3NdXT1ufXRoaXMub3B0aW9ucy5wb2ludHM9W2EsdGhpcy5vcHRpb25zLnBvaW50c10ucmVkdWNlKGZ1bmN0aW9uKG8saCl7cmV0dXJuIG8uZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBoLmluZGV4T2YoYyk+LTF9KX0pLHRoaXMub3B0aW9ucy5wb2ludHM9W3RoaXMub3B0aW9ucy5wb2ludHMsdGhpcy5vcHRpb25zLnBvaW50c0V4Y2x1ZGVdLnJlZHVjZShmdW5jdGlvbihvLGgpe3JldHVybiBvLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gaC5pbmRleE9mKGMpPDB9KX0pLHRoaXMucGFyZW50PXRoaXMuZWwucGFyZW50KCksdGhpcy5uZXN0ZWQ9dGhpcy5uZXN0ZWR8fHRoaXMucGFyZW50Lmdyb3VwKCksdGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZShpLngsaS55KSksdGhpcy5vcHRpb25zLmRlZXBTZWxlY3QmJltcImxpbmVcIixcInBvbHlsaW5lXCIsXCJwb2x5Z29uXCJdLmluZGV4T2YodGhpcy5lbC50eXBlKSE9PS0xP3RoaXMuc2VsZWN0UG9pbnRzKGUpOnRoaXMuc2VsZWN0UmVjdChlKSx0aGlzLm9ic2VydmUoKSx0aGlzLmNsZWFudXAoKX0seS5wcm90b3R5cGUuc2VsZWN0UG9pbnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9ZSx0aGlzLnBvaW50U2VsZWN0aW9uLnNldHx8KHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0PXRoaXMucGFyZW50LnNldCgpLHRoaXMuZHJhd1BvaW50cygpKSx0aGlzfSx5LnByb3RvdHlwZS5nZXRQb2ludEFycmF5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0WzBdLWUueCx0WzFdLWUueV19KX0seS5wcm90b3R5cGUuZHJhd1BvaW50cz1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9dGhpcy5nZXRQb2ludEFycmF5KCksaT0wLGE9dC5sZW5ndGg7aTxhOysraSl7dmFyIHM9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8peyhvPW98fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/by5wcmV2ZW50RGVmYXVsdCgpOm8ucmV0dXJuVmFsdWU9ITEsby5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaD1vLnBhZ2VYfHxvLnRvdWNoZXNbMF0ucGFnZVgsYz1vLnBhZ2VZfHxvLnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKFwicG9pbnRcIix7eDpoLHk6YyxpOm4sZXZlbnQ6b30pfX0oaSkscj10aGlzLmRyYXdQb2ludCh0W2ldWzBdLHRbaV1bMV0pLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3BvaW50XCIpLm9uKFwidG91Y2hzdGFydFwiLHMpLm9uKFwibW91c2Vkb3duXCIscyk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuYWRkKHIpfX0seS5wcm90b3R5cGUuZHJhd1BvaW50PWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5vcHRpb25zLnBvaW50VHlwZTtzd2l0Y2goaSl7Y2FzZVwiY2lyY2xlXCI6cmV0dXJuIHRoaXMuZHJhd0NpcmNsZShlLHQpO2Nhc2VcInJlY3RcIjpyZXR1cm4gdGhpcy5kcmF3UmVjdChlLHQpO2RlZmF1bHQ6aWYodHlwZW9mIGk9PVwiZnVuY3Rpb25cIilyZXR1cm4gaS5jYWxsKHRoaXMsZSx0KTt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIFwiK2krXCIgcG9pbnQgdHlwZSFcIil9fSx5LnByb3RvdHlwZS5kcmF3Q2lyY2xlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIoZSx0KX0seS5wcm90b3R5cGUuZHJhd1JlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5uZXN0ZWQucmVjdCh0aGlzLm9wdGlvbnMucG9pbnRTaXplLHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcihlLHQpfSx5LnByb3RvdHlwZS51cGRhdGVQb2ludFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0UG9pbnRBcnJheSgpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goZnVuY3Rpb24odCl7dGhpcy5jeCgpPT09ZVt0XVswXSYmdGhpcy5jeSgpPT09ZVt0XVsxXXx8dGhpcy5jZW50ZXIoZVt0XVswXSxlW3RdWzFdKX0pfSx5LnByb3RvdHlwZS51cGRhdGVSZWN0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuZWwuYmJveCgpO2lmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApLmF0dHIoe3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMub3B0aW9ucy5wb2ludHMubWFwKGZ1bmN0aW9uKGEscyl7dmFyIHI9ZS5wb2ludENvb3JkcyhhLHQpO2UucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KHMrMSkuY2VudGVyKHIueCxyLnkpfSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQpe3ZhciBpPXRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoaS0xKS5jZW50ZXIodC53aWR0aC8yLDIwKX19LHkucHJvdG90eXBlLnNlbGVjdFJlY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMuZWwuYmJveCgpO2Z1bmN0aW9uIGEobil7cmV0dXJuIGZ1bmN0aW9uKG8peyhvPW98fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/by5wcmV2ZW50RGVmYXVsdCgpOm8ucmV0dXJuVmFsdWU9ITEsby5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaD1vLnBhZ2VYfHxvLnRvdWNoZXNbMF0ucGFnZVgsYz1vLnBhZ2VZfHxvLnRvdWNoZXNbMF0ucGFnZVk7dC5lbC5maXJlKG4se3g6aCx5OmMsZXZlbnQ6b30pfX1pZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZD1lLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQ9dGhpcy5yZWN0U2VsZWN0aW9uLnNldHx8dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCl8fHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLnJlY3QoaS53aWR0aCxpLmhlaWdodCkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUmVjdCkpLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpPDImJih0aGlzLm9wdGlvbnMucG9pbnRzLm1hcChmdW5jdGlvbihuLG8pe3ZhciBoPXQucG9pbnRDb29yZHMobixpKSxjPXQuZHJhd1BvaW50KGgueCxoLnkpLmF0dHIoXCJjbGFzc1wiLHQub3B0aW9ucy5jbGFzc1BvaW50cytcIl9cIituKS5vbihcIm1vdXNlZG93blwiLGEobikpLm9uKFwidG91Y2hzdGFydFwiLGEobikpO3QucmVjdFNlbGVjdGlvbi5zZXQuYWRkKGMpfSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5hZGRDbGFzcyh0Lm9wdGlvbnMuY2xhc3NQb2ludHMpfSkpLHRoaXMub3B0aW9ucy5yb3RhdGlvblBvaW50JiYodGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDkpfHwhdGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDEpKSl7dmFyIHM9ZnVuY3Rpb24obil7KG49bnx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9uLnByZXZlbnREZWZhdWx0KCk6bi5yZXR1cm5WYWx1ZT0hMSxuLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBvPW4ucGFnZVh8fG4udG91Y2hlc1swXS5wYWdlWCxoPW4ucGFnZVl8fG4udG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUoXCJyb3RcIix7eDpvLHk6aCxldmVudDpufSl9LHI9dGhpcy5kcmF3UG9pbnQoaS53aWR0aC8yLDIwKS5hdHRyKFwiY2xhc3NcIix0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcm90XCIpLm9uKFwidG91Y2hzdGFydFwiLHMpLm9uKFwibW91c2Vkb3duXCIscyk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQocil9fSx5LnByb3RvdHlwZS5oYW5kbGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbC5iYm94KCk7dGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZShlLngsZS55KSksdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMudXBkYXRlUmVjdFNlbGVjdGlvbigpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVQb2ludFNlbGVjdGlvbigpfSx5LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihNdXRhdGlvbk9ic2VydmVyKWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpdGhpcy5vYnNlcnZlckluc3Q9dGhpcy5vYnNlcnZlckluc3R8fG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7ZS5oYW5kbGVyKCl9KSx0aGlzLm9ic2VydmVySW5zdC5vYnNlcnZlKHRoaXMuZWwubm9kZSx7YXR0cmlidXRlczohMH0pO2Vsc2UgdHJ5e3RoaXMub2JzZXJ2ZXJJbnN0LmRpc2Nvbm5lY3QoKSxkZWxldGUgdGhpcy5vYnNlcnZlckluc3R9Y2F0Y2h7fWVsc2UgdGhpcy5lbC5vZmYoXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIpLCh0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKSYmdGhpcy5lbC5vbihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIixmdW5jdGlvbigpe2UuaGFuZGxlcigpfSl9LHkucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXshdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQmJih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5jbGVhcigpLGRlbGV0ZSB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0KSwhdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnBvaW50U2VsZWN0aW9uLnNldCYmKHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSksdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fCh0aGlzLm5lc3RlZC5yZW1vdmUoKSxkZWxldGUgdGhpcy5uZXN0ZWQpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtzZWxlY3RpemU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHlwZW9mIGU9PVwib2JqZWN0XCImJih0PWUsZT0hMCksKHRoaXMucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiKXx8bmV3IHkodGhpcykpLmluaXQoZT09PXZvaWQgMHx8ZSx0fHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0aXplLmRlZmF1bHRzPXtwb2ludHM6W1wibHRcIixcInJ0XCIsXCJyYlwiLFwibGJcIixcInRcIixcInJcIixcImJcIixcImxcIl0scG9pbnRzRXhjbHVkZTpbXSxjbGFzc1JlY3Q6XCJzdmdfc2VsZWN0X2JvdW5kaW5nUmVjdFwiLGNsYXNzUG9pbnRzOlwic3ZnX3NlbGVjdF9wb2ludHNcIixwb2ludFNpemU6Nyxyb3RhdGlvblBvaW50OiEwLGRlZXBTZWxlY3Q6ITEscG9pbnRUeXBlOlwiY2lyY2xlXCJ9fSgpLGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtlLnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIix0aGlzKSx0aGlzLmVsPWUsdGhpcy5wYXJhbWV0ZXJzPXt9LHRoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCx0aGlzLnA9ZS5kb2MoKS5ub2RlLmNyZWF0ZVNWR1BvaW50KCl9eS5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0aGlzLnAueD1lLSh0aGlzLm9mZnNldC54LXdpbmRvdy5wYWdlWE9mZnNldCksdGhpcy5wLnk9dC0odGhpcy5vZmZzZXQueS13aW5kb3cucGFnZVlPZmZzZXQpLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0oaXx8dGhpcy5tKX0seS5wcm90b3R5cGUuX2V4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm57eDplLmNsaWVudFghPW51bGw/ZS5jbGllbnRYOmUudG91Y2hlc1swXS5jbGllbnRYLHk6ZS5jbGllbnRZIT1udWxsP2UuY2xpZW50WTplLnRvdWNoZXNbMF0uY2xpZW50WX19LHkucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLnN0b3AoKSxlIT09XCJzdG9wXCIpe2Zvcih2YXIgaSBpbiB0aGlzLm9wdGlvbnM9e30sdGhpcy5lbC5yZXNpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW2ldPXRoaXMuZWwucmVzaXplLmRlZmF1bHRzW2ldLGVbaV0hPT12b2lkIDAmJih0aGlzLm9wdGlvbnNbaV09ZVtpXSk7dGhpcy5lbC5vbihcImx0LnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwicnQucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJyYi5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcImxiLnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwidC5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcInIucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJiLnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwibC5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcInJvdC5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcInBvaW50LnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLnVwZGF0ZSgpfX0seS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVsLm9mZihcImx0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJ0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImxiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwici5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImwucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicm90LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInBvaW50LnJlc2l6ZVwiKSx0aGlzfSx5LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLm09dGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSx0aGlzLm9mZnNldD17eDp3aW5kb3cucGFnZVhPZmZzZXQseTp3aW5kb3cucGFnZVlPZmZzZXR9O3ZhciBpPXRoaXMuX2V4dHJhY3RQb3NpdGlvbihlLmRldGFpbC5ldmVudCk7aWYodGhpcy5wYXJhbWV0ZXJzPXt0eXBlOnRoaXMuZWwudHlwZSxwOnRoaXMudHJhbnNmb3JtUG9pbnQoaS54LGkueSkseDplLmRldGFpbC54LHk6ZS5kZXRhaWwueSxib3g6dGhpcy5lbC5iYm94KCkscm90YXRpb246dGhpcy5lbC50cmFuc2Zvcm0oKS5yb3RhdGlvbn0sdGhpcy5lbC50eXBlPT09XCJ0ZXh0XCImJih0aGlzLnBhcmFtZXRlcnMuZm9udFNpemU9dGhpcy5lbC5hdHRyKClbXCJmb250LXNpemVcIl0pLGUuZGV0YWlsLmkhPT12b2lkIDApe3ZhciBhPXRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCk7dGhpcy5wYXJhbWV0ZXJzLmk9ZS5kZXRhaWwuaSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHM9W2FbZS5kZXRhaWwuaV1bMF0sYVtlLmRldGFpbC5pXVsxXV19c3dpdGNoKGUudHlwZSl7Y2FzZVwibHRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLW5bMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtblsxXT4wKXtpZih0aGlzLnBhcmFtZXRlcnMudHlwZT09PVwidGV4dFwiKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K25bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZS1uWzBdKTtuPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhuKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K25bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55K25bMV0pLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1uWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LW5bMV0pfX07YnJlYWs7Y2FzZVwicnRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrblswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1uWzFdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngtblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplK25bMF0pO249dGhpcy5jaGVja0FzcGVjdFJhdGlvKG4sITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K25bMV0pLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtuWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LW5bMV0pfX07YnJlYWs7Y2FzZVwicmJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrblswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtuWzFdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngtblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplK25bMF0pO249dGhpcy5jaGVja0FzcGVjdFJhdGlvKG4pLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtuWzFdKX19O2JyZWFrO2Nhc2VcImxiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHMscil7dmFyIG49dGhpcy5zbmFwVG9HcmlkKHMsciwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLW5bMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQrblsxXT4wKXtpZih0aGlzLnBhcmFtZXRlcnMudHlwZT09PVwidGV4dFwiKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K25bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZS1uWzBdKTtuPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhuLCEwKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K25bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtuWzFdKX19O2JyZWFrO2Nhc2VcInRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LW5bMV0+MCl7aWYodGhpcy5wYXJhbWV0ZXJzLnR5cGU9PT1cInRleHRcIilyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkrblsxXSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LW5bMV0pfX07YnJlYWs7Y2FzZVwiclwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtuWzBdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK25bMF0pfX07YnJlYWs7Y2FzZVwiYlwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQrblsxXT4wKXtpZih0aGlzLnBhcmFtZXRlcnMudHlwZT09PVwidGV4dFwiKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K25bMV0pfX07YnJlYWs7Y2FzZVwibFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1uWzBdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtblswXSl9fTticmVhaztjYXNlXCJyb3RcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj1zK3RoaXMucGFyYW1ldGVycy5wLngsbz1yK3RoaXMucGFyYW1ldGVycy5wLnksaD1NYXRoLmF0YW4yKHRoaXMucGFyYW1ldGVycy5wLnktdGhpcy5wYXJhbWV0ZXJzLmJveC55LXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LzIsdGhpcy5wYXJhbWV0ZXJzLnAueC10aGlzLnBhcmFtZXRlcnMuYm94LngtdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC8yKSxjPU1hdGguYXRhbjIoby10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMixuLXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLGQ9dGhpcy5wYXJhbWV0ZXJzLnJvdGF0aW9uKzE4MCooYy1oKS9NYXRoLlBJK3RoaXMub3B0aW9ucy5zbmFwVG9BbmdsZS8yO3RoaXMuZWwuY2VudGVyKHRoaXMucGFyYW1ldGVycy5ib3guY3gsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeSkucm90YXRlKGQtZCV0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KX07YnJlYWs7Y2FzZVwicG9pbnRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0pLG89dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTtvW3RoaXMucGFyYW1ldGVycy5pXVswXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0rblswXSxvW3RoaXMucGFyYW1ldGVycy5pXVsxXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0rblsxXSx0aGlzLmVsLnBsb3Qobyl9fXRoaXMuZWwuZmlyZShcInJlc2l6ZXN0YXJ0XCIse2R4OnRoaXMucGFyYW1ldGVycy54LGR5OnRoaXMucGFyYW1ldGVycy55LGV2ZW50OmV9KSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiLGZ1bmN0aW9uKHMpe3QudXBkYXRlKHN8fHdpbmRvdy5ldmVudCl9KSxTVkcub24od2luZG93LFwidG91Y2hlbmQucmVzaXplXCIsZnVuY3Rpb24oKXt0LmRvbmUoKX0pLFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIsZnVuY3Rpb24ocyl7dC51cGRhdGUoc3x8d2luZG93LmV2ZW50KX0pLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLnJlc2l6ZVwiLGZ1bmN0aW9uKCl7dC5kb25lKCl9KX0seS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMuX2V4dHJhY3RQb3NpdGlvbihlKSxpPXRoaXMudHJhbnNmb3JtUG9pbnQodC54LHQueSksYT1pLngtdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWkueS10aGlzLnBhcmFtZXRlcnMucC55O3RoaXMubGFzdFVwZGF0ZUNhbGw9W2Esc10sdGhpcy5jYWxjKGEscyksdGhpcy5lbC5maXJlKFwicmVzaXppbmdcIix7ZHg6YSxkeTpzLGV2ZW50OmV9KX1lbHNlIHRoaXMubGFzdFVwZGF0ZUNhbGwmJnRoaXMuY2FsYyh0aGlzLmxhc3RVcGRhdGVDYWxsWzBdLHRoaXMubGFzdFVwZGF0ZUNhbGxbMV0pfSx5LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiKSx0aGlzLmVsLmZpcmUoXCJyZXNpemVkb25lXCIpfSx5LnByb3RvdHlwZS5zbmFwVG9HcmlkPWZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzO3JldHVybiBhIT09dm9pZCAwP3M9WyhpK2UpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLChhK3QpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXTooaT1pPz8zLHM9Wyh0aGlzLnBhcmFtZXRlcnMuYm94LngrZSsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLCh0aGlzLnBhcmFtZXRlcnMuYm94LnkrdCsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF0pLGU8MCYmKHNbMF0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0PDAmJihzWzFdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZS09TWF0aC5hYnMoc1swXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzBdOnNbMF0tKGU8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHQtPU1hdGguYWJzKHNbMV0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/c1sxXTpzWzFdLSh0PDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0aGlzLmNvbnN0cmFpbnRUb0JveChlLHQsaSxhKX0seS5wcm90b3R5cGUuY29uc3RyYWludFRvQm94PWZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzLHIsbj10aGlzLm9wdGlvbnMuY29uc3RyYWludHx8e307cmV0dXJuIGEhPT12b2lkIDA/KHM9aSxyPWEpOihzPXRoaXMucGFyYW1ldGVycy5ib3gueCsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkscj10aGlzLnBhcmFtZXRlcnMuYm94LnkrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSksbi5taW5YIT09dm9pZCAwJiZzK2U8bi5taW5YJiYoZT1uLm1pblgtcyksbi5tYXhYIT09dm9pZCAwJiZzK2U+bi5tYXhYJiYoZT1uLm1heFgtcyksbi5taW5ZIT09dm9pZCAwJiZyK3Q8bi5taW5ZJiYodD1uLm1pblktciksbi5tYXhZIT09dm9pZCAwJiZyK3Q+bi5tYXhZJiYodD1uLm1heFktciksW2UsdF19LHkucHJvdG90eXBlLmNoZWNrQXNwZWN0UmF0aW89ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5vcHRpb25zLnNhdmVBc3BlY3RSYXRpbylyZXR1cm4gZTt2YXIgaT1lLnNsaWNlKCksYT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoL3RoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LHM9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtlWzBdLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtZVsxXSxuPXMvcjtyZXR1cm4gbjxhPyhpWzFdPXMvYS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCx0JiYoaVsxXT0taVsxXSkpOm4+YSYmKGlbMF09dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1yKmEsdCYmKGlbMF09LWlbMF0pKSxpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtyZXNpemU6ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiKXx8bmV3IHkodGhpcykpLmluaXQoZXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnJlc2l6ZS5kZWZhdWx0cz17c25hcFRvQW5nbGU6LjEsc25hcFRvR3JpZDoxLGNvbnN0cmFpbnQ6e30sc2F2ZUFzcGVjdFJhdGlvOiExfX0pLmNhbGwodGhpcyl9KCksd2luZG93LkFwZXg9PT12b2lkIDAmJih3aW5kb3cuQXBleD17fSk7dmFyIGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJpbml0TW9kdWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHgucHVibGljTWV0aG9kcz1bXCJ1cGRhdGVPcHRpb25zXCIsXCJ1cGRhdGVTZXJpZXNcIixcImFwcGVuZERhdGFcIixcImFwcGVuZFNlcmllc1wiLFwiaXNTZXJpZXNIaWRkZW5cIixcInRvZ2dsZVNlcmllc1wiLFwic2hvd1Nlcmllc1wiLFwiaGlkZVNlcmllc1wiLFwic2V0TG9jYWxlXCIsXCJyZXNldFNlcmllc1wiLFwiem9vbVhcIixcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLFwiZGF0YVVSSVwiLFwiZXhwb3J0VG9DU1ZcIixcImFkZFhheGlzQW5ub3RhdGlvblwiLFwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsXCJhZGRQb2ludEFubm90YXRpb25cIixcImNsZWFyQW5ub3RhdGlvbnNcIixcInJlbW92ZUFubm90YXRpb25cIixcInBhcGVyXCIsXCJkZXN0cm95XCJdLHRoaXMuY3R4LmV2ZW50TGlzdD1bXCJjbGlja1wiLFwibW91c2Vkb3duXCIsXCJtb3VzZW1vdmVcIixcIm1vdXNlbGVhdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwidG91Y2hsZWF2ZVwiLFwibW91c2V1cFwiLFwidG91Y2hlbmRcIl0sdGhpcy5jdHguYW5pbWF0aW9ucz1uZXcgZ2UodGhpcy5jdHgpLHRoaXMuY3R4LmF4ZXM9bmV3IHl0KHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlPW5ldyBqdCh0aGlzLmN0eC5lbCx0aGlzLmN0eCksdGhpcy5jdHguY29uZmlnPW5ldyBJZSh7fSksdGhpcy5jdHguZGF0YT1uZXcgZXQodGhpcy5jdHgpLHRoaXMuY3R4LmdyaWQ9bmV3IHR0KHRoaXMuY3R4KSx0aGlzLmN0eC5ncmFwaGljcz1uZXcgTSh0aGlzLmN0eCksdGhpcy5jdHguY29yZVV0aWxzPW5ldyBxKHRoaXMuY3R4KSx0aGlzLmN0eC5jcm9zc2hhaXJzPW5ldyBWZSh0aGlzLmN0eCksdGhpcy5jdHguZXZlbnRzPW5ldyBtdCh0aGlzLmN0eCksdGhpcy5jdHguZXhwb3J0cz1uZXcgRmUodGhpcy5jdHgpLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1uZXcgdnQodGhpcy5jdHgpLHRoaXMuY3R4Lm9wdGlvbnM9bmV3IEcsdGhpcy5jdHgucmVzcG9uc2l2ZT1uZXcgd3QodGhpcy5jdHgpLHRoaXMuY3R4LnNlcmllcz1uZXcgaWUodGhpcy5jdHgpLHRoaXMuY3R4LnRoZW1lPW5ldyBrdCh0aGlzLmN0eCksdGhpcy5jdHguZm9ybWF0dGVycz1uZXcgbmUodGhpcy5jdHgpLHRoaXMuY3R4LnRpdGxlU3VidGl0bGU9bmV3IEF0KHRoaXMuY3R4KSx0aGlzLmN0eC5sZWdlbmQ9bmV3IGl0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sYmFyPW5ldyBhdCh0aGlzLmN0eCksdGhpcy5jdHgudG9vbHRpcD1uZXcgbnQodGhpcy5jdHgpLHRoaXMuY3R4LmRpbWVuc2lvbnM9bmV3IFJlKHRoaXMuY3R4KSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzPW5ldyBfdCh0aGlzLmN0eCksdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1uZXcgVHQodGhpcy5jdHgpLHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwPW5ldyBudCh0aGlzLmN0eCl9fV0pLHl9KCksdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImNsZWFyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc1VwZGF0aW5nO3RoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24mJnRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24uZGVzdHJveSgpLHRoaXMuY3R4LnRvb2xiYXImJnRoaXMuY3R4LnRvb2xiYXIuZGVzdHJveSgpLHRoaXMuY3R4LmFuaW1hdGlvbnM9bnVsbCx0aGlzLmN0eC5heGVzPW51bGwsdGhpcy5jdHguYW5ub3RhdGlvbnM9bnVsbCx0aGlzLmN0eC5jb3JlPW51bGwsdGhpcy5jdHguZGF0YT1udWxsLHRoaXMuY3R4LmdyaWQ9bnVsbCx0aGlzLmN0eC5zZXJpZXM9bnVsbCx0aGlzLmN0eC5yZXNwb25zaXZlPW51bGwsdGhpcy5jdHgudGhlbWU9bnVsbCx0aGlzLmN0eC5mb3JtYXR0ZXJzPW51bGwsdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1udWxsLHRoaXMuY3R4LmxlZ2VuZD1udWxsLHRoaXMuY3R4LmRpbWVuc2lvbnM9bnVsbCx0aGlzLmN0eC5vcHRpb25zPW51bGwsdGhpcy5jdHguY3Jvc3NoYWlycz1udWxsLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bnVsbCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzPW51bGwsdGhpcy5jdHgudG9vbGJhcj1udWxsLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1udWxsLHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwPW51bGwsdGhpcy5jbGVhckRvbUVsZW1lbnRzKHtpc1VwZGF0aW5nOnR9KX19LHtrZXk6XCJraWxsU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5lYWNoKGZ1bmN0aW9uKHQsaSl7dGhpcy5yZW1vdmVDbGFzcyhcIipcIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0sITApLGUudW5ncm91cCgpLGUuY2xlYXIoKX19LHtrZXk6XCJjbGVhckRvbUVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWUuaXNVcGRhdGluZyxhPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlO2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnBhcmVudE5vZGUmJiFpJiYoYS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PVwidW5zZXRcIik7dmFyIHM9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbDtzJiZ0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaChmdW5jdGlvbihuKXtzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0LmN0eC5ldmVudHMuZG9jdW1lbnRFdmVudCl9KTt2YXIgcj10aGlzLncuZ2xvYmFscy5kb207aWYodGhpcy5jdHguZWwhPT1udWxsKWZvcig7dGhpcy5jdHguZWwuZmlyc3RDaGlsZDspdGhpcy5jdHguZWwucmVtb3ZlQ2hpbGQodGhpcy5jdHguZWwuZmlyc3RDaGlsZCk7dGhpcy5raWxsU1ZHKHIuUGFwZXIpLHIuUGFwZXIucmVtb3ZlKCksci5lbFdyYXA9bnVsbCxyLmVsR3JhcGhpY2FsPW51bGwsci5lbExlZ2VuZFdyYXA9bnVsbCxyLmVsTGVnZW5kRm9yZWlnbj1udWxsLHIuYmFzZUVsPW51bGwsci5lbEdyaWRSZWN0PW51bGwsci5lbEdyaWRSZWN0TWFzaz1udWxsLHIuZWxHcmlkUmVjdE1hcmtlck1hc2s9bnVsbCxyLmVsRm9yZWNhc3RNYXNrPW51bGwsci5lbE5vbkZvcmVjYXN0TWFzaz1udWxsLHIuZWxEZWZzPW51bGx9fV0pLHl9KCksWmU9bmV3IFdlYWtNYXAsVXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCl7Rih0aGlzLHkpLHRoaXMub3B0cz10LHRoaXMuY3R4PXRoaXMsdGhpcy53PW5ldyBidCh0KS5pbml0KCksdGhpcy5lbD1lLHRoaXMudy5nbG9iYWxzLmN1aWQ9UC5yYW5kb21JZCgpLHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQ9dGhpcy53LmNvbmZpZy5jaGFydC5pZD9QLmVzY2FwZVN0cmluZyh0aGlzLncuY29uZmlnLmNoYXJ0LmlkKTp0aGlzLncuZ2xvYmFscy5jdWlkLG5ldyBndCh0aGlzKS5pbml0TW9kdWxlcygpLHRoaXMuY3JlYXRlPVAuYmluZCh0aGlzLmNyZWF0ZSx0aGlzKSx0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXI9dGhpcy5fd2luZG93UmVzaXplSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMucGFyZW50UmVzaXplSGFuZGxlcj10aGlzLl9wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiBZKHksW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsaSl7aWYoZS5lbCE9PW51bGwpe0FwZXguX2NoYXJ0SW5zdGFuY2VzPT09dm9pZCAwJiYoQXBleC5fY2hhcnRJbnN0YW5jZXM9W10pLGUudy5jb25maWcuY2hhcnQuaWQmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goe2lkOmUudy5nbG9iYWxzLmNoYXJ0SUQsZ3JvdXA6ZS53LmNvbmZpZy5jaGFydC5ncm91cCxjaGFydDplfSksZS5zZXRMb2NhbGUoZS53LmNvbmZpZy5jaGFydC5kZWZhdWx0TG9jYWxlKTt2YXIgYT1lLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVNb3VudDtpZih0eXBlb2YgYT09XCJmdW5jdGlvblwiJiZhKGUsZS53KSxlLmV2ZW50cy5maXJlRXZlbnQoXCJiZWZvcmVNb3VudFwiLFtlLGUud10pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZS53aW5kb3dSZXNpemVIYW5kbGVyKSxmdW5jdGlvbihnLHApe3ZhciBmPSExO2lmKGcubm9kZVR5cGUhPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpe3ZhciBiPWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zy5zdHlsZS5kaXNwbGF5IT09XCJub25lXCImJmIud2lkdGghPT0wfHwoZj0hMCl9dmFyIG09bmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uKHcpe2YmJnAuY2FsbChnLHcpLGY9ITB9KTtnLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP0FycmF5LmZyb20oZy5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbih3KXtyZXR1cm4gbS5vYnNlcnZlKHcpfSk6bS5vYnNlcnZlKGcpLFplLnNldChwLG0pfShlLmVsLnBhcmVudE5vZGUsZS5wYXJlbnRSZXNpemVIYW5kbGVyKSwhZS5jc3Mpe3ZhciBzPWUuZWwuZ2V0Um9vdE5vZGUmJmUuZWwuZ2V0Um9vdE5vZGUoKSxyPVAuaXMoXCJTaGFkb3dSb290XCIscyksbj1lLmVsLm93bmVyRG9jdW1lbnQsbz1uLmdldEVsZW1lbnRCeUlkKFwiYXBleGNoYXJ0cy1jc3NcIik7aWYocnx8IW8pe3ZhciBoO2UuY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSxlLmNzcy5pZD1cImFwZXhjaGFydHMtY3NzXCIsZS5jc3MudGV4dENvbnRlbnQ9YEBrZXlmcmFtZXMgb3BhcXVlIHtcbiAgMCUge1xuICAgICAgb3BhY2l0eTogMFxuICB9XG5cbiAgdG8ge1xuICAgICAgb3BhY2l0eTogMVxuICB9XG59XG5cbkBrZXlmcmFtZXMgcmVzaXplYW5pbSB7XG4gIDAlLHRvIHtcbiAgICAgIG9wYWNpdHk6IDBcbiAgfVxufVxuXG4uYXBleGNoYXJ0cy1jYW52YXMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHVzZXItc2VsZWN0OiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB3aWR0aDogNnB4XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcbiAgYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLWlubmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlXG59XG5cbi5hcGV4Y2hhcnRzLXRleHQgdHNwYW4ge1xuICBmb250LWZhbWlseTogaW5oZXJpdFxufVxuXG4ubGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XG4gIG9wYWNpdHk6IC4yXG59XG5cbi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBtYXJnaW4tbGVmdDogLTE1cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQge1xuICBvcGFjaXR5OiAwXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IDJweCAycHggNnB4IC00cHggIzk5OTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxlZnQ6IDYycHg7XG4gIG9wYWNpdHk6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMjBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgei1pbmRleDogMTI7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuOTYpXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsMzAsMzAsLjgpXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAgKiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xuICBwYWRkaW5nOiA2cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogNHB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogI2VjZWZmMTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzM1xufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDBcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbDplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlOmVtcHR5IHtcbiAgZGlzcGxheTogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcbiAgcGFkZGluZzogNnB4IDAgNXB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtZ29hbHMtZ3JvdXAsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XG4gIGRpc3BsYXk6IGZsZXhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOm5vdCg6ZW1wdHkpLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTpub3QoOmVtcHR5KSB7XG4gIG1hcmdpbi10b3A6IC02cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIge1xuICB3aWR0aDogMTJweDtcbiAgaGVpZ2h0OiAxMnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCVcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAge1xuICBwYWRkaW5nOiAwIDEwcHg7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSAuYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XG4gIG9wYWNpdHk6IDFcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXA6bGFzdC1jaGlsZCB7XG4gIHBhZGRpbmctYm90dG9tOiA0cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAwO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcGFkZGluZzogMCFpbXBvcnRhbnRcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC15LWdyb3VwIHtcbiAgcGFkZGluZzogNnB4IDAgNXB4XG59XG5cbi5hcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHtcbiAgcGFkZGluZzogNHB4IDhweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveFBsb3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2Vcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3g+ZGl2IHtcbiAgbWFyZ2luOiA0cHggMFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveCBzcGFuLnZhbHVlIHtcbiAgZm9udC13ZWlnaHQ6IDcwMFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcbiAgcGFkZGluZzogNXB4IDhweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIC5jYXRlZ29yeSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjNzc3XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLnNlcmllcy1uYW1lIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDVweFxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiAjMzczZDNmO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xuICBib3JkZXI6IDFweCBzb2xpZCAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCB7XG4gIHBhZGRpbmc6IDlweCAxMHB4O1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7XG4gIGNvbG9yOiAjZmZmXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgbGVmdDogNTAlO1xuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb250ZW50OiBcIiBcIjtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDZweDtcbiAgbWFyZ2luLWxlZnQ6IC02cHhcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogN3B4O1xuICBtYXJnaW4tbGVmdDogLTdweFxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgYm90dG9tOiAxMDAlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xuICB0b3A6IDEwMCVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlY2VmZjFcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjZWNlZmYxXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzkwYTRhZVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XG4gIHBhZGRpbmc6IDRweCAxMHB4XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7XG4gIGNvbG9yOiAjZmZmXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgdG9wOiA1MCU7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogNnB4O1xuICBtYXJnaW4tdG9wOiAtNnB4XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDdweDtcbiAgbWFyZ2luLXRvcDogLTdweFxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xuICBsZWZ0OiAxMDAlXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgcmlnaHQ6IDEwMCVcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2VjZWZmMVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzkwYTRhZVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIge1xuICBib3JkZXItcmlnaHQtY29sb3I6ICNlY2VmZjFcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogIzkwYTRhZVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xuICBvcGFjaXR5OiAxXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMuYXBleGNoYXJ0cy1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDBcbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3Qge1xuICBjdXJzb3I6IG1vdmVcbn1cblxuLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuXG59XG5cbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlblxufVxuXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19sLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3Ige1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZVxufVxuXG4uc3ZnX3NlbGVjdF9wb2ludHMge1xuICBmaWxsOiAjZWZlZmVmO1xuICBzdHJva2U6ICMzMzM7XG4gIHJ4OiAyXG59XG5cbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXpvb20ge1xuICBjdXJzb3I6IGNyb3NzaGFpclxufVxuXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy1wYW4ge1xuICBjdXJzb3I6IG1vdmVcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXBhbi1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24sLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgY29sb3I6ICM2ZTgxOTI7XG4gIHRleHQtYWxpZ246IGNlbnRlclxufVxuXG4uYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xuICBmaWxsOiAjNmU4MTkyXG59XG5cbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZyB7XG4gIGZpbGw6ICM0NDQ7XG4gIHRyYW5zZm9ybTogc2NhbGUoLjc2KVxufVxuXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xuICBmaWxsOiAjZjNmNGY1XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1yZXNldC16b29tLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy16b29tLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcge1xuICBmaWxsOiAjMDA4ZmZiXG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbS1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tb3V0LWljb246aG92ZXIgc3ZnIHtcbiAgZmlsbDogIzMzM1xufVxuXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmVcbn1cblxuLmFwZXhjaGFydHMtcmVzZXQtaWNvbiB7XG4gIG1hcmdpbi1sZWZ0OiA1cHhcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSguODUpXG59XG5cbi5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoLjcpXG59XG5cbi5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XG4gIG1hcmdpbi1yaWdodDogM3B4XG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSguNjIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IDFweDtcbiAgdG9wOiAwXG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZyB7XG4gIGZpbGw6ICNmZmY7XG4gIHN0cm9rZTogIzZlODE5MjtcbiAgc3Ryb2tlLXdpZHRoOiAyXG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcbiAgc3Ryb2tlOiAjMDA4ZmZiXG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnIHtcbiAgc3Ryb2tlOiAjMzMzXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2xiYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDExO1xuICBtYXgtd2lkdGg6IDE3NnB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAwIDZweCAycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxufVxuXG4uYXBleGNoYXJ0cy1tZW51IHtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogM3B4O1xuICByaWdodDogMTBweDtcbiAgb3BhY2l0eTogMDtcbiAgbWluLXdpZHRoOiAxMTBweDtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMtbWVudS5hcGV4Y2hhcnRzLW1lbnUtb3BlbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pdGVtIHtcbiAgcGFkZGluZzogNnB4IDdweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjdXJzb3I6IHBvaW50ZXJcbn1cblxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2VlZVxufVxuXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcbiAgY29sb3I6ICNmZmZcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkge1xuICAuYXBleGNoYXJ0cy1jYW52YXM6aG92ZXIgLmFwZXhjaGFydHMtdG9vbGJhciB7XG4gICAgICBvcGFjaXR5OiAxXG4gIH1cbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC5hcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuLC5hcGV4Y2hhcnRzLWhpZGUgLmFwZXhjaGFydHMtc2VyaWVzLXBvaW50cyB7XG4gIG9wYWNpdHk6IDBcbn1cblxuLmFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd24ge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiAwLjI1cyBlYXNlIGFsbDtcbn1cbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMsLmFwZXhjaGFydHMtcGllLWxhYmVsIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xuICBvcGFjaXR5OiAwO1xuICBhbmltYXRpb24tbmFtZTogb3BhcXVlO1xuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Vcbn1cblxuLmFwZXhjaGFydHMtcmFkaWFsYmFyLWxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3QsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtYXJlYSwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtZ3JpZGxpbmUsLmFwZXhjaGFydHMtbGluZSwuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcGF0aCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiwuYXBleGNoYXJ0cy10b29sYmFyIHN2ZywuYXBleGNoYXJ0cy10b29sdGlwIC5hcGV4Y2hhcnRzLW1hcmtlciwuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtem9vbS1yZWN0IHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMtbWFya2VyIHtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4ucmVzaXplLXRyaWdnZXJzIHtcbiAgYW5pbWF0aW9uOiAxbXMgcmVzaXplYW5pbTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuXG59XG5cbi5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSwucmVzaXplLXRyaWdnZXJzLC5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcbiAgY29udGVudDogXCIgXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMFxufVxuXG4ucmVzaXplLXRyaWdnZXJzPmRpdiB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICNlZWU7XG4gIG92ZXJmbG93OiBhdXRvXG59XG5cbi5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAyMDAlO1xuICBoZWlnaHQ6IDIwMCVcbn1cblxuLmFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnN7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLWJhci1zaGFkb3dze1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJze1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufWA7dmFyIGM9KChoPWUub3B0cy5jaGFydCk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLm5vbmNlKXx8ZS53LmNvbmZpZy5jaGFydC5ub25jZTtjJiZlLmNzcy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGMpLHI/cy5wcmVwZW5kKGUuY3NzKTpuLmhlYWQuYXBwZW5kQ2hpbGQoZS5jc3MpfX12YXIgZD1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx7fSk7aWYoIWQpcmV0dXJuIHQoZSk7ZS5tb3VudChkKS50aGVuKGZ1bmN0aW9uKCl7dHlwZW9mIGUudy5jb25maWcuY2hhcnQuZXZlbnRzLm1vdW50ZWQ9PVwiZnVuY3Rpb25cIiYmZS53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZChlLGUudyksZS5ldmVudHMuZmlyZUV2ZW50KFwibW91bnRlZFwiLFtlLGUud10pLHQoZCl9KS5jYXRjaChmdW5jdGlvbihnKXtpKGcpfSl9ZWxzZSBpKG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpKX0pfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O25ldyBndCh0aGlzKS5pbml0TW9kdWxlcygpO3ZhciBhPXRoaXMudy5nbG9iYWxzO2lmKGEubm9EYXRhPSExLGEuYW5pbWF0aW9uRW5kZWQ9ITEsdGhpcy5yZXNwb25zaXZlLmNoZWNrUmVzcG9uc2l2ZUNvbmZpZyh0KSxpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJm5ldyBsZShpLmNvbmZpZykuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGkuY29uZmlnLHRoaXMuY3R4KSx0aGlzLmVsPT09bnVsbHx8KHRoaXMuY29yZS5zZXR1cEVsZW1lbnRzKCksaS5jb25maWcuY2hhcnQudHlwZT09PVwidHJlZW1hcFwiJiYoaS5jb25maWcuZ3JpZC5zaG93PSExLGkuY29uZmlnLnlheGlzWzBdLnNob3c9ITEpLGEuc3ZnV2lkdGg9PT0wKSlyZXR1cm4gYS5hbmltYXRpb25FbmRlZD0hMCxudWxsO3ZhciBzPXEuY2hlY2tDb21ib1NlcmllcyhlKTthLmNvbWJvQ2hhcnRzPXMuY29tYm9DaGFydHMsYS5jb21ib0JhckNvdW50PXMuY29tYm9CYXJDb3VudDt2YXIgcj1lLmV2ZXJ5KGZ1bmN0aW9uKGMpe3JldHVybiBjLmRhdGEmJmMuZGF0YS5sZW5ndGg9PT0wfSk7KGUubGVuZ3RoPT09MHx8cikmJnRoaXMuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLHRoaXMuZXZlbnRzLnNldHVwRXZlbnRIYW5kbGVycygpLHRoaXMuZGF0YS5wYXJzZURhdGEoZSksdGhpcy50aGVtZS5pbml0KCksbmV3IFRlKHRoaXMpLnNldEdsb2JhbE1hcmtlclNpemUoKSx0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy50aXRsZVN1YnRpdGxlLmRyYXcoKSxhLm5vRGF0YSYmYS5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09YS5zZXJpZXMubGVuZ3RoJiYhaS5jb25maWcubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXN8fHRoaXMubGVnZW5kLmluaXQoKSx0aGlzLnNlcmllcy5oYXNBbGxTZXJpZXNFcXVhbFgoKSxhLmF4aXNDaGFydHMmJih0aGlzLmNvcmUuY29yZUNhbGN1bGF0aW9ucygpLGkuY29uZmlnLnhheGlzLnR5cGUhPT1cImNhdGVnb3J5XCImJnRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLmN0eC50b29sYmFyLm1pblg9aS5nbG9iYWxzLm1pblgsdGhpcy5jdHgudG9vbGJhci5tYXhYPWkuZ2xvYmFscy5tYXhYKSx0aGlzLmZvcm1hdHRlcnMuaGVhdG1hcExhYmVsRm9ybWF0dGVycygpLG5ldyBxKHRoaXMpLmdldExhcmdlc3RNYXJrZXJTaXplKCksdGhpcy5kaW1lbnNpb25zLnBsb3RDb29yZHMoKTt2YXIgbj10aGlzLmNvcmUueHlTZXR0aW5ncygpO3RoaXMuZ3JpZC5jcmVhdGVHcmlkTWFzaygpO3ZhciBvPXRoaXMuY29yZS5wbG90Q2hhcnRUeXBlKGUsbiksaD1uZXcgd2UodGhpcyk7cmV0dXJuIGguYnJpbmdGb3J3YXJkKCksaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQmJmguZGF0YUxhYmVsc0JhY2tncm91bmQoKSx0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCkse2VsR3JhcGg6byx4eVJhdGlvczpuLGRpbWVuc2lvbnM6e3Bsb3Q6e2xlZnQ6aS5nbG9iYWxzLnRyYW5zbGF0ZVgsdG9wOmkuZ2xvYmFscy50cmFuc2xhdGVZLHdpZHRoOmkuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX19fX0se2tleTpcIm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOm51bGwsaT10aGlzLGE9aS53O3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihzLHIpe2lmKGkuZWw9PT1udWxsKXJldHVybiByKG5ldyBFcnJvcihcIk5vdCBlbm91Z2ggZGF0YSB0byBkaXNwbGF5IG9yIHRhcmdldCBlbGVtZW50IG5vdCBmb3VuZFwiKSk7KHQ9PT1udWxsfHxhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKSYmaS5zZXJpZXMuaGFuZGxlTm9EYXRhKCksaS5ncmlkPW5ldyB0dChpKTt2YXIgbixvLGg9aS5ncmlkLmRyYXdHcmlkKCk7aWYoaS5hbm5vdGF0aW9ucz1uZXcgYWUoaSksaS5hbm5vdGF0aW9ucy5kcmF3SW1hZ2VBbm5vcygpLGkuYW5ub3RhdGlvbnMuZHJhd1RleHRBbm5vcygpLGEuY29uZmlnLmdyaWQucG9zaXRpb249PT1cImJhY2tcIiYmKGgmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGguZWwpLGghPW51bGwmJihuPWguZWxHcmlkQm9yZGVycykhPT1udWxsJiZuIT09dm9pZCAwJiZuLm5vZGUmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGguZWxHcmlkQm9yZGVycykpLEFycmF5LmlzQXJyYXkodC5lbEdyYXBoKSlmb3IodmFyIGM9MDtjPHQuZWxHcmFwaC5sZW5ndGg7YysrKWEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHQuZWxHcmFwaFtjXSk7ZWxzZSBhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0LmVsR3JhcGgpO2EuY29uZmlnLmdyaWQucG9zaXRpb249PT1cImZyb250XCImJihoJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChoLmVsKSxoIT1udWxsJiYobz1oLmVsR3JpZEJvcmRlcnMpIT09bnVsbCYmbyE9PXZvaWQgMCYmby5ub2RlJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChoLmVsR3JpZEJvcmRlcnMpKSxhLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uPT09XCJmcm9udFwiJiZpLmNyb3NzaGFpcnMuZHJhd1hDcm9zc2hhaXJzKCksYS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbj09PVwiZnJvbnRcIiYmaS5jcm9zc2hhaXJzLmRyYXdZQ3Jvc3NoYWlycygpLGEuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInRyZWVtYXBcIiYmaS5heGVzLmRyYXdBeGlzKGEuY29uZmlnLmNoYXJ0LnR5cGUsaCk7dmFyIGQ9bmV3IHplKGUuY3R4LGgpLGc9bmV3IEdlKGUuY3R4LGgpO2lmKGghPT1udWxsJiYoZC54QXhpc0xhYmVsQ29ycmVjdGlvbnMoaC54QXhpc1RpY2tXaWR0aCksZy5zZXRZQXhpc1RleHRBbGlnbm1lbnRzKCksYS5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKGYsYil7YS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGIpPT09LTEmJmcueUF4aXNUaXRsZVJvdGF0ZShiLGYub3Bwb3NpdGUpfSkpLGkuYW5ub3RhdGlvbnMuZHJhd0F4ZXNBbm5vdGF0aW9ucygpLCFhLmdsb2JhbHMubm9EYXRhKXtpZihhLmNvbmZpZy50b29sdGlwLmVuYWJsZWQmJiFhLmdsb2JhbHMubm9EYXRhJiZpLncuZ2xvYmFscy50b29sdGlwLmRyYXdUb29sdGlwKHQueHlSYXRpb3MpLGEuZ2xvYmFscy5heGlzQ2hhcnRzJiYoYS5nbG9iYWxzLmlzWE51bWVyaWN8fGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8YS5nbG9iYWxzLmlzUmFuZ2VCYXIpKShhLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWR8fGEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbiYmYS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmVuYWJsZWR8fGEuY29uZmlnLmNoYXJ0LnBhbiYmYS5jb25maWcuY2hhcnQucGFuLmVuYWJsZWQpJiZpLnpvb21QYW5TZWxlY3Rpb24uaW5pdCh7eHlSYXRpb3M6dC54eVJhdGlvc30pO2Vsc2V7dmFyIHA9YS5jb25maWcuY2hhcnQudG9vbGJhci50b29scztbXCJ6b29tXCIsXCJ6b29taW5cIixcInpvb21vdXRcIixcInNlbGVjdGlvblwiLFwicGFuXCIsXCJyZXNldFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3BbZl09ITF9KX1hLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfWEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmYS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goZnVuY3Rpb24oZil7Zi5tZXRob2QoZi5wYXJhbXMsITEsZi5jb250ZXh0KX0pLGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxhLmdsb2JhbHMubm9EYXRhfHxpLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLHMoaSl9KX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0O3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyKSx0aGlzLmVsLnBhcmVudE5vZGUsZT10aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXIsKHQ9WmUuZ2V0KGUpKSYmKHQuZGlzY29ubmVjdCgpLFplLmRlbGV0ZShlKSk7dmFyIGk9dGhpcy53LmNvbmZpZy5jaGFydC5pZDtpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGEscyl7YS5pZD09PVAuZXNjYXBlU3RyaW5nKGkpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5zcGxpY2UocywxKX0pLG5ldyB1dCh0aGlzLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITF9KX19LHtrZXk6XCJ1cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwJiZhcmd1bWVudHNbMV0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1szXSxyPSEoYXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDApfHxhcmd1bWVudHNbNF0sbj10aGlzLnc7cmV0dXJuIG4uZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLGUuc2VyaWVzJiYodGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEsITAsITEpLGUuc2VyaWVzLmxlbmd0aCYmZS5zZXJpZXNbMF0uZGF0YSYmKGUuc2VyaWVzPWUuc2VyaWVzLm1hcChmdW5jdGlvbihvLGgpe3JldHVybiB0LnVwZGF0ZUhlbHBlcnMuX2V4dGVuZFNlcmllcyhvLGgpfSkpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSxlLnhheGlzJiYoZT10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VYQXhpc1VwZGF0ZShlKSksZS55YXhpcyYmKGU9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWUF4aXNVcGRhdGUoZSkpLG4uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aD4wJiZ0aGlzLnNlcmllcy5jbGVhclByZXZpb3VzUGF0aHMoKSxlLnRoZW1lJiYoZT10aGlzLnRoZW1lLnVwZGF0ZVRoZW1lT3B0aW9ucyhlKSksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKGUsaSxhLHMscil9fSx7a2V5OlwidXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06W10sdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXTtyZXR1cm4gdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGUsdCxpKX19LHtrZXk6XCJhcHBlbmRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXSxhPXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCk7cmV0dXJuIGEucHVzaChlKSx0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSx0LGkpfX0se2tleTpcImFwcGVuZERhdGFcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9dGhpcztpLncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxpLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCk7Zm9yKHZhciBhPWkudy5jb25maWcuc2VyaWVzLnNsaWNlKCkscz0wO3M8YS5sZW5ndGg7cysrKWlmKGVbc10hPT1udWxsJiZlW3NdIT09dm9pZCAwKWZvcih2YXIgcj0wO3I8ZVtzXS5kYXRhLmxlbmd0aDtyKyspYVtzXS5kYXRhLnB1c2goZVtzXS5kYXRhW3JdKTtyZXR1cm4gaS53LmNvbmZpZy5zZXJpZXM9YSx0JiYoaS53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcz1QLmNsb25lKGkudy5jb25maWcuc2VyaWVzKSksdGhpcy51cGRhdGUoKX19LHtrZXk6XCJ1cGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihpLGEpe25ldyB1dCh0LmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITB9KTt2YXIgcz10LmNyZWF0ZSh0LncuY29uZmlnLnNlcmllcyxlKTtpZighcylyZXR1cm4gaSh0KTt0Lm1vdW50KHMpLnRoZW4oZnVuY3Rpb24oKXt0eXBlb2YgdC53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZD09XCJmdW5jdGlvblwiJiZ0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJ1cGRhdGVkXCIsW3QsdC53XSksdC53Lmdsb2JhbHMuaXNEaXJ0eT0hMCxpKHQpfSkuY2F0Y2goZnVuY3Rpb24ocil7YShyKX0pfSl9fSx7a2V5OlwiZ2V0U3luY2VkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEdyb3VwZWRDaGFydHMoKSx0PVt0aGlzXTtyZXR1cm4gZS5sZW5ndGgmJih0PVtdLGUuZm9yRWFjaChmdW5jdGlvbihpKXt0LnB1c2goaSl9KSksdH19LHtrZXk6XCJnZXRHcm91cGVkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBBcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoZnVuY3Rpb24odCl7aWYodC5ncm91cClyZXR1cm4hMH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS53LmNvbmZpZy5jaGFydC5ncm91cD09PXQuZ3JvdXA/dC5jaGFydDplfSl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllcyhlKX19LHtrZXk6XCJoaWdobGlnaHRTZXJpZXNPbkxlZ2VuZEhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzT25Ib3ZlcihlLHQpfX0se2tleTpcInNob3dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNlcmllcy5zaG93U2VyaWVzKGUpfX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNlcmllcy5oaWRlU2VyaWVzKGUpfX0se2tleTpcImlzU2VyaWVzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXJpZXMuaXNTZXJpZXNIaWRkZW4oZSl9fSx7a2V5OlwicmVzZXRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDApfHxhcmd1bWVudHNbMF0sdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdO3RoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKGUsdCl9fSx7a2V5OlwiYWRkRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5ldmVudHMuYWRkRXZlbnRMaXN0ZW5lcihlLHQpfX0se2tleTpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuZXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbChlLHQsYSl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwoZSx0LGEpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsKGUsdCxhKX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06dm9pZCAwLHQ9dGhpcztlJiYodD1lKSx0LmFubm90YXRpb25zLmNsZWFyQW5ub3RhdGlvbnModCl9fSx7a2V5OlwicmVtb3ZlQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp2b2lkIDAsaT10aGlzO3QmJihpPXQpLGkuYW5ub3RhdGlvbnMucmVtb3ZlQW5ub3RhdGlvbihpLGUpfX0se2tleTpcImdldENoYXJ0QXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWlubmVyXCIpfX0se2tleTpcImdldFNlcmllc1RvdGFsWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzWFJhbmdlKGUsdCl9fSx7a2V5OlwiZ2V0SGlnaGVzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgQmUodGhpcy5jdHgpLmdldE1pbllNYXhZKGUpLmhpZ2hlc3RZfX0se2tleTpcImdldExvd2VzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgQmUodGhpcy5jdHgpLmdldE1pbllNYXhZKGUpLmxvd2VzdFl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNUb3RhbHN9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy51cGRhdGVIZWxwZXJzLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbihlLHQpfX0se2tleTpcInpvb21YXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKGUsdCl9fSx7a2V5Olwic2V0TG9jYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5sb2NhbGl6YXRpb24uc2V0Q3VycmVudExvY2FsZVZhbHVlcyhlKX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBGZSh0aGlzLmN0eCkuZGF0YVVSSShlKX19LHtrZXk6XCJleHBvcnRUb0NTVlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3JldHVybiBuZXcgRmUodGhpcy5jdHgpLmV4cG9ydFRvQ1NWKGUpfX0se2tleTpcInBhcGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyfX0se2tleTpcIl9wYXJlbnRSZXNpemVDYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQmJnRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25QYXJlbnRSZXNpemUmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX0se2tleTpcIl93aW5kb3dSZXNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2Uudy5nbG9iYWxzLnJlc2l6ZWQ9ITAsZS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITEsZS5jdHgudXBkYXRlKCl9LDE1MCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZUhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25XaW5kb3dSZXNpemU7dHlwZW9mIGU9PVwiZnVuY3Rpb25cIiYmKGU9ZSgpKSxlJiZ0aGlzLl93aW5kb3dSZXNpemUoKX19XSxbe2tleTpcImdldENoYXJ0QnlJRFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZXNjYXBlU3RyaW5nKGUpO2lmKEFwZXguX2NoYXJ0SW5zdGFuY2VzKXt2YXIgaT1BcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT10fSlbMF07cmV0dXJuIGkmJmkuY2hhcnR9fX0se2tleTpcImluaXRPbkxvYWRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtYXBleGNoYXJ0c11cIiksdD0wO3Q8ZS5sZW5ndGg7dCsrKW5ldyB5KGVbdF0sSlNPTi5wYXJzZShlW3RdLmdldEF0dHJpYnV0ZShcImRhdGEtb3B0aW9uc1wiKSkpLnJlbmRlcigpfX0se2tleTpcImV4ZWNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZ2V0Q2hhcnRCeUlEKGUpO2lmKGkpe2kudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMDt2YXIgYT1udWxsO2lmKGkucHVibGljTWV0aG9kcy5pbmRleE9mKHQpIT09LTEpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHM+Mj9zLTI6MCksbj0yO248cztuKyspcltuLTJdPWFyZ3VtZW50c1tuXTthPWlbdF0uYXBwbHkoaSxyKX1yZXR1cm4gYX19fSx7a2V5OlwibWVyZ2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBQLmV4dGVuZChlLHQpfX1dKSx5fSgpO18uZXhwb3J0cz1VdH0pKEhlLEhlLmV4cG9ydHMpO3ZhciBmdD1IZS5leHBvcnRzO2NvbnN0ICRlPVNlKGZ0KSxKZT1bXCJhbmltYXRpb25FbmRcIixcImJlZm9yZU1vdW50XCIsXCJtb3VudGVkXCIsXCJ1cGRhdGVkXCIsXCJjbGlja1wiLFwibW91c2VNb3ZlXCIsXCJtb3VzZUxlYXZlXCIsXCJsZWdlbmRDbGlja1wiLFwibWFya2VyQ2xpY2tcIixcInNlbGVjdGlvblwiLFwiZGF0YVBvaW50U2VsZWN0aW9uXCIsXCJkYXRhUG9pbnRNb3VzZUVudGVyXCIsXCJkYXRhUG9pbnRNb3VzZUxlYXZlXCIsXCJiZWZvcmVab29tXCIsXCJiZWZvcmVSZXNldFpvb21cIixcInpvb21lZFwiLFwic2Nyb2xsZWRcIixcImJydXNoU2Nyb2xsZWRcIl0sTWU9Wi5kZWZpbmVDb21wb25lbnQoe25hbWU6XCJhcGV4Y2hhcnRcIixwcm9wczp7b3B0aW9uczp7dHlwZTpPYmplY3R9LHR5cGU6e3R5cGU6U3RyaW5nfSxzZXJpZXM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LHdpZHRoOntkZWZhdWx0OlwiMTAwJVwifSxoZWlnaHQ6e2RlZmF1bHQ6XCJhdXRvXCJ9fSxlbWl0czpKZSxzZXR1cChfLHtlbWl0OkRlfSl7Y29uc3QgQ2U9Wi5yZWYobnVsbCksWD1aLnJlZihudWxsKSxVPUg9PkgmJnR5cGVvZiBIPT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheShIKSYmSCE9bnVsbCxGPShILEcpPT57dHlwZW9mIE9iamVjdC5hc3NpZ24hPVwiZnVuY3Rpb25cIiYmZnVuY3Rpb24oKXtPYmplY3QuYXNzaWduPWZ1bmN0aW9uKEIpe2lmKEI9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtsZXQgbmU9T2JqZWN0KEIpO2ZvcihsZXQgeGU9MTt4ZTxhcmd1bWVudHMubGVuZ3RoO3hlKyspe2xldCBvZT1hcmd1bWVudHNbeGVdO2lmKG9lIT1udWxsKWZvcihsZXQgbGUgaW4gb2Upb2UuaGFzT3duUHJvcGVydHkobGUpJiYobmVbbGVdPW9lW2xlXSl9cmV0dXJuIG5lfX0oKTtsZXQgYWU9T2JqZWN0LmFzc2lnbih7fSxIKTtyZXR1cm4gVShIKSYmVShHKSYmT2JqZWN0LmtleXMoRykuZm9yRWFjaChCPT57VShHW0JdKT9CIGluIEg/YWVbQl09RihIW0JdLEdbQl0pOk9iamVjdC5hc3NpZ24oYWUse1tCXTpHW0JdfSk6T2JqZWN0LmFzc2lnbihhZSx7W0JdOkdbQl19KX0pLGFlfSxkZT1hc3luYygpPT57aWYoYXdhaXQgWi5uZXh0VGljaygpLFgudmFsdWUpcmV0dXJuO2NvbnN0IEg9e2NoYXJ0Ont0eXBlOl8udHlwZXx8Xy5vcHRpb25zLmNoYXJ0LnR5cGV8fFwibGluZVwiLGhlaWdodDpfLmhlaWdodCx3aWR0aDpfLndpZHRoLGV2ZW50czp7fX0sc2VyaWVzOl8uc2VyaWVzfTtKZS5mb3JFYWNoKGFlPT57bGV0IEI9KC4uLm5lKT0+RGUoYWUsLi4ubmUpO0guY2hhcnQuZXZlbnRzW2FlXT1CfSk7Y29uc3QgRz1GKF8ub3B0aW9ucyxIKTtyZXR1cm4gWC52YWx1ZT1uZXcgJGUoQ2UudmFsdWUsRyksWC52YWx1ZS5yZW5kZXIoKX0sWT0oKT0+KHRlKCksZGUoKSksdGU9KCk9PntYLnZhbHVlLmRlc3Ryb3koKX0sdWU9KEgsRyk9PlgudmFsdWUudXBkYXRlU2VyaWVzKEgsRyksdmU9KEgsRyxhZSxCKT0+WC52YWx1ZS51cGRhdGVPcHRpb25zKEgsRyxhZSxCKSxMZT1IPT5YLnZhbHVlLnRvZ2dsZVNlcmllcyhIKSxYZT1IPT57WC52YWx1ZS5zaG93U2VyaWVzKEgpfSxwZT1IPT57WC52YWx1ZS5oaWRlU2VyaWVzKEgpfSxFZT0oSCxHKT0+WC52YWx1ZS5hcHBlbmRTZXJpZXMoSCxHKSxRPSgpPT57WC52YWx1ZS5yZXNldFNlcmllcygpfSxZZT0oSCxHKT0+e1gudmFsdWUudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKEgsRyl9LFBlPUg9PlgudmFsdWUuYXBwZW5kRGF0YShIKSxQPShILEcpPT5YLnZhbHVlLnpvb21YKEgsRyksZ2U9SD0+WC52YWx1ZS5kYXRhVVJJKEgpLCQ9SD0+WC52YWx1ZS5zZXRMb2NhbGUoSCksTT0oSCxHKT0+e1gudmFsdWUuYWRkWGF4aXNBbm5vdGF0aW9uKEgsRyl9LHE9KEgsRyk9PntYLnZhbHVlLmFkZFlheGlzQW5ub3RhdGlvbihILEcpfSx5ZT0oSCxHKT0+e1gudmFsdWUuYWRkUG9pbnRBbm5vdGF0aW9uKEgsRyl9LE5lPShILEcpPT57WC52YWx1ZS5yZW1vdmVBbm5vdGF0aW9uKEgsRyl9LFdlPSgpPT57WC52YWx1ZS5jbGVhckFubm90YXRpb25zKCl9O1oub25CZWZvcmVNb3VudCgoKT0+e3dpbmRvdy5BcGV4Q2hhcnRzPSRlfSksWi5vbk1vdW50ZWQoKCk9PntDZS52YWx1ZT1aLmdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5LiRlbCxkZSgpfSksWi5vbkJlZm9yZVVubW91bnQoKCk9PntYLnZhbHVlJiZ0ZSgpfSk7Y29uc3QgZmU9Wi50b1JlZnMoXyk7cmV0dXJuIFoud2F0Y2goZmUub3B0aW9ucywoKT0+eyFYLnZhbHVlJiZfLm9wdGlvbnM/ZGUoKTpYLnZhbHVlLnVwZGF0ZU9wdGlvbnMoXy5vcHRpb25zKX0pLFoud2F0Y2goZmUuc2VyaWVzLCgpPT57IVgudmFsdWUmJl8uc2VyaWVzP2RlKCk6WC52YWx1ZS51cGRhdGVTZXJpZXMoXy5zZXJpZXMpfSx7ZGVlcDohMH0pLFoud2F0Y2goZmUudHlwZSwoKT0+e1koKX0pLFoud2F0Y2goZmUud2lkdGgsKCk9PntZKCl9KSxaLndhdGNoKGZlLmhlaWdodCwoKT0+e1koKX0pLHtjaGFydDpYLGluaXQ6ZGUscmVmcmVzaDpZLGRlc3Ryb3k6dGUsdXBkYXRlT3B0aW9uczp2ZSx1cGRhdGVTZXJpZXM6dWUsdG9nZ2xlU2VyaWVzOkxlLHNob3dTZXJpZXM6WGUsaGlkZVNlcmllczpwZSxyZXNldFNlcmllczpRLHpvb21YOlAsdG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uOlllLGFwcGVuZERhdGE6UGUsYXBwZW5kU2VyaWVzOkVlLGFkZFhheGlzQW5ub3RhdGlvbjpNLGFkZFlheGlzQW5ub3RhdGlvbjpxLGFkZFBvaW50QW5ub3RhdGlvbjp5ZSxyZW1vdmVBbm5vdGF0aW9uOk5lLGNsZWFyQW5ub3RhdGlvbnM6V2Usc2V0TG9jYWxlOiQsZGF0YVVSSTpnZX19LHJlbmRlcigpe3JldHVybiBaLmgoXCJkaXZcIix7Y2xhc3M6XCJ2dWUtYXBleGNoYXJ0c1wifSl9fSkseHQ9Xz0+e18uY29tcG9uZW50KE1lLm5hbWUsTWUpfTtyZXR1cm4gTWUuaW5zdGFsbD14dCxNZX0pO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNlbGY7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn0iLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCB0b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkge1xuICB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKCFpdCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgaWYgKGl0KSBvID0gaXQ7XG4gICAgICB2YXIgaSA9IDA7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHM6IEYsXG4gICAgICAgIG46IGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7XG4gICAgICAgICAgICBkb25lOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZG9uZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogb1tpKytdXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgZTogZnVuY3Rpb24gZShfZSkge1xuICAgICAgICAgIHRocm93IF9lO1xuICAgICAgICB9LFxuICAgICAgICBmOiBGXG4gICAgICB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG4gIH1cbiAgdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLFxuICAgIGRpZEVyciA9IGZhbHNlLFxuICAgIGVycjtcbiAgcmV0dXJuIHtcbiAgICBzOiBmdW5jdGlvbiBzKCkge1xuICAgICAgaXQgPSBpdC5jYWxsKG8pO1xuICAgIH0sXG4gICAgbjogZnVuY3Rpb24gbigpIHtcbiAgICAgIHZhciBzdGVwID0gaXQubmV4dCgpO1xuICAgICAgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTtcbiAgICAgIHJldHVybiBzdGVwO1xuICAgIH0sXG4gICAgZTogZnVuY3Rpb24gZShfZTIpIHtcbiAgICAgIGRpZEVyciA9IHRydWU7XG4gICAgICBlcnIgPSBfZTI7XG4gICAgfSxcbiAgICBmOiBmdW5jdGlvbiBmKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0W1wicmV0dXJuXCJdICE9IG51bGwpIGl0W1wicmV0dXJuXCJdKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9O1xufSIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBmcm9tIFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIjtcbmltcG9ydCBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7XG4gIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHtcbiAgICB2YXIgU3VwZXIgPSBnZXRQcm90b3R5cGVPZihEZXJpdmVkKSxcbiAgICAgIHJlc3VsdDtcbiAgICBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkge1xuICAgICAgdmFyIE5ld1RhcmdldCA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTtcbiAgfTtcbn0iLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7XG4gIGlmIChfdHlwZW9mKGlucHV0KSAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0O1xuICB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmIChwcmltICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgcmVzID0gcHJpbS5jYWxsKGlucHV0LCBoaW50IHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoX3R5cGVvZihyZXMpICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKGhpbnQgPT09IFwic3RyaW5nXCIgPyBTdHJpbmcgOiBOdW1iZXIpKGlucHV0KTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCB0b1ByaW1pdGl2ZSBmcm9tIFwiLi90b1ByaW1pdGl2ZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gX3R5cGVvZihrZXkpID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gIH0sIF90eXBlb2Yob2JqKTtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImltcG9ydCB7IHVybEFscGhhYmV0IH0gZnJvbSAnLi91cmwtYWxwaGFiZXQvaW5kZXguanMnXG5sZXQgcmFuZG9tID0gYnl0ZXMgPT4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShieXRlcykpXG5sZXQgY3VzdG9tUmFuZG9tID0gKGFscGhhYmV0LCBkZWZhdWx0U2l6ZSwgZ2V0UmFuZG9tKSA9PiB7XG4gIGxldCBtYXNrID0gKDIgPDwgKE1hdGgubG9nKGFscGhhYmV0Lmxlbmd0aCAtIDEpIC8gTWF0aC5MTjIpKSAtIDFcbiAgbGV0IHN0ZXAgPSAtfigoMS42ICogbWFzayAqIGRlZmF1bHRTaXplKSAvIGFscGhhYmV0Lmxlbmd0aClcbiAgcmV0dXJuIChzaXplID0gZGVmYXVsdFNpemUpID0+IHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgYnl0ZXMgPSBnZXRSYW5kb20oc3RlcClcbiAgICAgIGxldCBqID0gc3RlcFxuICAgICAgd2hpbGUgKGotLSkge1xuICAgICAgICBpZCArPSBhbHBoYWJldFtieXRlc1tqXSAmIG1hc2tdIHx8ICcnXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IHNpemUpIHJldHVybiBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxubGV0IGN1c3RvbUFscGhhYmV0ID0gKGFscGhhYmV0LCBzaXplID0gMjEpID0+XG4gIGN1c3RvbVJhbmRvbShhbHBoYWJldCwgc2l6ZSwgcmFuZG9tKVxubGV0IG5hbm9pZCA9IChzaXplID0gMjEpID0+XG4gIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpLnJlZHVjZSgoaWQsIGJ5dGUpID0+IHtcbiAgICBieXRlICY9IDYzXG4gICAgaWYgKGJ5dGUgPCAzNikge1xuICAgICAgaWQgKz0gYnl0ZS50b1N0cmluZygzNilcbiAgICB9IGVsc2UgaWYgKGJ5dGUgPCA2Mikge1xuICAgICAgaWQgKz0gKGJ5dGUgLSAyNikudG9TdHJpbmcoMzYpLnRvVXBwZXJDYXNlKClcbiAgICB9IGVsc2UgaWYgKGJ5dGUgPiA2Mikge1xuICAgICAgaWQgKz0gJy0nXG4gICAgfSBlbHNlIHtcbiAgICAgIGlkICs9ICdfJ1xuICAgIH1cbiAgICByZXR1cm4gaWRcbiAgfSwgJycpXG5leHBvcnQgeyBuYW5vaWQsIGN1c3RvbUFscGhhYmV0LCBjdXN0b21SYW5kb20sIHVybEFscGhhYmV0LCByYW5kb20gfVxuIiwibGV0IHVybEFscGhhYmV0ID1cbiAgJ3VzZWFuZG9tLTI2VDE5ODM0MFBYNzVweEpBQ0tWRVJZTUlOREJVU0hXT0xGX0dRWmJmZ2hqa2xxdnd5enJpY3QnXG5leHBvcnQgeyB1cmxBbHBoYWJldCB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUUsc0RBQVM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2Q0FBSTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1Q0FBdUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxpREFBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBLEtBQUssSUFBcUM7QUFDMUMsSUFBSSwwREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLG1EQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhNQUE4TTtBQUMxTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUJBQXFCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELEtBQUs7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsdURBQVUsY0FBYyxxQ0FBcUM7QUFDeEU7O0FBRUE7QUFDQTtBQUNBLFFBQVEsdURBQVU7QUFDbEIsbUJBQW1CO0FBQ25CO0FBQ0EsWUFBWTtBQUNaLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUMsY0FBYyxxREFBUSxXQUFXLHVEQUFVO0FBQ3pHLGdGQUFnRixLQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLDJCQUEyQixvREFBRztBQUM5QiwwQkFBMEIsb0RBQUc7QUFDN0IsNEJBQTRCLG9EQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRixRQUFRO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlDQUFpQyxTQUFTLGlDQUFpQyxVQUFVO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixZQUFZLHNDQUFzQyxvQkFBb0I7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxVQUFVLDJCQUEyQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3QkFBd0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPO0FBQ2Y7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFNO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOERBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFhO0FBQzdCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELHdCQUF3Qix5REFBWTtBQUNwQyxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0RBQWtCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0MsMENBQTBDLGtEQUFTO0FBQ25ELFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBYTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscURBQVE7QUFDekMsaUNBQWlDLHVEQUFVLENBQUMscURBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGtCQUFrQixJQUFJLEtBQUssRUFBRSxNQUFNO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQsdUJBQXVCLHVEQUFVLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQVE7QUFDN0IscUJBQXFCLHVEQUFVLENBQUMscURBQVE7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTyxZQUFZLHFEQUFRO0FBQ25DO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELG9FQUFvRSxPQUFPO0FBQzNFO0FBQ0E7QUFDQSx3QkFBd0IsWUFBWTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxhQUFhLHFEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseUJBQXlCO0FBQzdDO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CLDRCQUE0QixpQkFBaUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsTUFBTTtBQUN2RTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUFLO0FBQ3JCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLE1BQU0scURBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFJO0FBQ3hCLGNBQWMseURBQVk7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbURBQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDLElBQUksZ0VBQWUsWUFBWSxDQUFPO0FBQzlGLG1CQUFtQixLQUFxQyxJQUFJLGdFQUFlLFlBQVksQ0FBTztBQUM5RixtQkFBbUIsS0FBcUMsSUFBSSxnRUFBZSxZQUFZLENBQU87QUFDOUYsa0JBQWtCLEtBQXFDLElBQUksZ0VBQWUsV0FBVyxDQUFNO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixLQUFtQiw2QkFBNkIsQ0FBTTtBQUMxRTtBQUNBO0FBQ0Esa0JBQWtCLEtBQW1CLDJCQUEyQixDQUFJO0FBQ3BFLENBQUM7QUFDRDtBQUNBO0FBQ0EsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQiw4REFBOEQ7QUFDOUU7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMkJBQTJCLGtEQUFTO0FBQ3BDO0FBQ0EsWUFBWSxtREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0RBQVMsSUFBSSxtREFBTTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVMsSUFBSSxtREFBTTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0RBQVMsSUFBSSxtREFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsTUFBb0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQixpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtEQUFTLElBQUksbURBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLEtBQXFDO0FBQ3ZEO0FBQ0EsY0FBYyxxREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0RBQVMsZ0NBQWdDLG1EQUFNO0FBQ3hFLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQix3QkFBd0I7QUFDeEMsMkJBQTJCLGtEQUFTLElBQUksbURBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtEQUFTLElBQUksbURBQU07QUFDN0M7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCLGFBQWEsS0FBcUM7QUFDbEQsbURBQW1ELElBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw4REFBOEQsSUFBSTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxLQUFLLGdFQUFnRTtBQUMvRTtBQUNBO0FBQ0Esc0JBQXNCLGtEQUFTLElBQUksbURBQU07QUFDekMsNEJBQTRCLGtEQUFTLElBQUksbURBQU07QUFDL0Msb0RBQW9ELG1EQUFNO0FBQzFELFlBQVksbURBQU07QUFDbEIsWUFBWSxtREFBTTtBQUNsQixZQUFZLG1EQUFNO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQWlEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxtREFBTSxHQUFHO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVDQUF1QyxrRUFBcUI7QUFDNUQsYUFBYSxLQUFxQztBQUNsRCw2QkFBNkIscUJBQXFCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkNBQUk7QUFDckIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0NBQW9DO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBSTtBQUN6QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUIsZ0JBQWdCLHNEQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnREFBZ0QscUJBQXFCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFJO0FBQ3pCLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNLFlBQVksSUFBSSwwQkFBMEIsV0FBVztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLHNDQUFzQyxLQUFxQywrQkFBK0IsQ0FBSTtBQUM5RyxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUIsRUFFSjtBQUNqQixxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLElBQXFDO0FBQzNELGdDQUFnQyxJQUFJLGNBQWMscUJBQXFCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLE1BQU0sdURBQVU7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLEtBQUssc0RBQVM7QUFDaEUsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckIsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0EsNEJBQTRCLHlEQUFRO0FBQ3BDLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDZDQUFJO0FBQ3JDLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBVTtBQUNsQztBQUNBLGtCQUFrQix1REFBVTtBQUM1QjtBQUNBLHNCQUFzQiw2Q0FBSTtBQUMxQixpQkFBaUIsS0FBcUMsYUFBYSw2Q0FBSTtBQUN2RSwyQ0FBMkMsSUFBSTtBQUMvQztBQUNBLHlCQUF5Qix1REFBVSxTQUFTLHVEQUFVO0FBQ3REO0FBQ0EsbUJBQW1CLEtBQXFDO0FBQ3hEO0FBQ0EsMkVBQTJFLElBQUk7QUFDL0U7QUFDQSxzQkFBc0IsQ0FBSTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsdURBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0Esc0VBQXNFO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2Q0FBSTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDZDQUFJO0FBQzlFLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRCwrQ0FBK0MsSUFBSTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9EQUFPO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBUTtBQUNoQjtBQUNBLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCw0REFBNEQsSUFBSTtBQUNoRTtBQUNBO0FBQ0EsYUFBYSx1REFBVTtBQUN2QjtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1REFBVTtBQUN0QztBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFVO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsSUFBcUM7QUFDM0QsZ0VBQWdFLFlBQVk7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QyxZQUFZLHFEQUFxRCwwQkFBMEI7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEscURBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0NBQWtDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNLEVBQUUsdURBQVUsaUNBQWlDLHVEQUFVO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU0sQ0FBQyxtREFBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbURBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsZ0VBQWU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUIsY0FBYztBQUNqRCw0QkFBNEIsc0RBQUs7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxLQUFxQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMEJBQTBCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1EQUFNO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxxREFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1EQUFNO0FBQ3hCO0FBQ0E7QUFDQSxpQ0FBaUMsc0RBQVMsbUJBQW1CLG1EQUFNO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1EQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0RBQU87QUFDZjtBQUNBLFNBQVMsSUFBcUM7QUFDOUMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU0sc0JBQXNCLHFEQUFRO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQUs7QUFDckMsNENBQTRDLGtEQUFTO0FBQ3JELHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQSxxR0FBcUcsbURBQU07QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHVEQUFVO0FBQ25ELHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsc0RBQVM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBbUIsS0FBSyx1REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCLDRCQUE0QixrREFBUztBQUNyQztBQUNBLGVBQWUsa0RBQVM7QUFDeEI7QUFDQSxRQUFRLG9EQUFPO0FBQ2Ysd0JBQXdCLGdCQUFnQjtBQUN4QyxpQkFBaUIsS0FBcUMsTUFBTSxxREFBUTtBQUNwRTtBQUNBO0FBQ0Esa0NBQWtDLHFEQUFRO0FBQzFDO0FBQ0EsNENBQTRDLGtEQUFTO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxNQUFNLHFEQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxxREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU8sU0FBUyx1REFBVSxVQUFVLFlBQVk7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsbURBQU07QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0RBQUs7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxtREFBTSxvQkFBb0IsbURBQU0sV0FBVyxzREFBUztBQUN6RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDRCQUE0QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU87QUFDN0I7QUFDQTtBQUNBLHdCQUF3Qiw4QkFBOEI7QUFDdEQsb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxLQUFLO0FBQ3BFLHFCQUFxQixrQkFBa0IsbURBQVUsY0FBYztBQUMvRDtBQUNBLHlCQUF5QixzREFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsY0FBYztBQUNoRDtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQU07QUFDekI7QUFDQTtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQSxrQkFBa0IsTUFBTTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0Msb0RBQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMEJBQTBCLElBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFDUztBQUN6QixpRUFBaUUsSUFBSTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHNEQUFLO0FBQ2xDO0FBQ0EsWUFBWSxnREFBRztBQUNmO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0EsWUFBWSxlQUFlO0FBQzNCO0FBQ0EsbUNBQW1DLGtEQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBRTtBQUMzQjtBQUNBLGdDQUFnQztBQUNoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esc0JBQXNCO0FBQ3RCLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCLDRDQUE0QztBQUM1QztBQUNBLGtDQUFrQyxxREFBUTtBQUMxQyxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSxtQ0FBbUMsdURBQVU7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHVEQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9CQUFvQixJQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsSUFBcUM7QUFDbkU7QUFDQSwrQ0FBK0MsV0FBVztBQUMxRDtBQUNBO0FBQ0EscUJBQXFCLEVBRUo7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixJQUFnRTtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQWdFO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCxvRUFBb0UsWUFBWTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZix5REFBeUQsb0RBQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbUJBQW1CO0FBQy9CLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxrREFBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscURBQVE7QUFDbEMsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0RBQU8sY0FBYyxtREFBTTtBQUNuRDtBQUNBO0FBQ0EsNkJBQTZCLG9EQUFPO0FBQ3BDO0FBQ0E7QUFDQSxvQ0FBb0MsbURBQU07QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbURBQU07QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCxnRUFBZ0UsV0FBVztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx3REFBd0QsV0FBVztBQUNuRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQ0FBbUMsa0ZBQWtGO0FBQ2pJO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtDQUFrQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0EsK0NBQStDLDBCQUEwQjtBQUN6RSwrQ0FBK0MsK0JBQStCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsdUJBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9ELDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwQ0FBMEM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBOEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsaURBQUksVUFBVSwyREFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQsZ0VBQWdFLFdBQVc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELG9FQUFvRSxXQUFXO0FBQy9FLHlDQUF5QyxlQUFlO0FBQ3hELHlDQUF5QyxlQUFlO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELDREQUE0RCxnQ0FBZ0M7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUNBQXFDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFLLEdBQUcsYUFBYTtBQUM5QztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsYUFBYTtBQUNyRDtBQUNBO0FBQ0EseUJBQXlCLDZDQUE2QyxJQUFJLEtBQUs7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFnRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXdDLEVBQUUsRUFHN0M7QUFDTCxRQUFRLEtBQTBDLEVBQUUsRUFHL0M7QUFDTCxTQUFTLEtBQXFDO0FBQzlDO0FBQ0Esb0NBQW9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwREFBYTtBQUNoQztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBLFlBQVksbVRBQW1ULDZDQUFJLDJFQUEyRTtBQUM5WSwyRUFBMkU7QUFDM0U7QUFDQSxxSkFBcUosS0FBcUM7QUFDMUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0QsMERBQTBELFlBQVk7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsWUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLFlBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBc0Q7QUFDdEUsWUFBWSxLQUdnQiwyQkFBMkIsRUFNOUM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QywyREFBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHlCQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUNBQW1DO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxrREFBUztBQUM5QyxxQ0FBcUMsa0RBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywwQkFBMEI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtEQUFTO0FBQ3RDO0FBQ0EseUJBQXlCLDJEQUFjO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQWlFO0FBQy9FLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixZQUFZO0FBQ3BDLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBZ0U7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZCQUE2QjtBQUNuRDtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQWdFO0FBQ3BGO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywyREFBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0EsdUJBQXVCLDJEQUFjO0FBQ3JDO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVM7QUFDNUIsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQVM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixrREFBUztBQUMzQjtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNENBQTRDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0NBQWdDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwRUFBMEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0JBQStCO0FBQy9DO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGdCQUFnQixrQ0FBa0M7QUFDbEQ7QUFDQTtBQUNBLFlBQVksMkRBQWM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPLFNBQVMsb0RBQU87QUFDL0Isd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw2Q0FBNkMsZUFBZTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRUFBb0UscURBQXFEO0FBQ3pJO0FBQ0EsY0FBYyx1Q0FBdUM7QUFDckQ7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxLQUFxQztBQUMvRTtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDLDZDQUE2QyxLQUFxQztBQUNsRjtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFxQztBQUMzRCxzRUFBc0UsY0FBYztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLElBQXFDO0FBQ25FLCtFQUErRSxjQUFjO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxnRUFBZ0Usa0JBQWtCLHNCQUFzQjtBQUN4RyxnQkFBZ0IsMkRBQTJEO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHFCQUFxQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxLQUFLLFFBQVEsV0FBVztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUNBQXlDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRyxLQUFLLDBDQUEwQztBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixLQUFxQyxpQkFBaUIsQ0FBUztBQUN4RixxQkFBcUIsS0FBcUMsYUFBYSxDQUFTO0FBQ2hGLHdCQUF3QixLQUFxQyxnQkFBZ0IsQ0FBUztBQUN0Rix1QkFBdUIsS0FBcUMsZUFBZSxDQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxrREFBUztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEtBQUs7QUFDN0Isd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBLFVBQVUscURBQVEsU0FBUyxzREFBSyxTQUFTLHVEQUFVO0FBQ25ELGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLEtBQXFDLG1DQUFtQyxDQUFZO0FBQzFHO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELDREQUE0RCxLQUFLO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0JBQXNCO0FBQ3BDLHNCQUFzQixxREFBUTtBQUM5QiwwQkFBMEIsMkRBQWM7QUFDeEM7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQU8sWUFBWSxvREFBTztBQUMxQyx3QkFBd0IsbURBQU0sR0FBRztBQUNqQztBQUNBLDBCQUEwQiwyREFBYztBQUN4QztBQUNBO0FBQ0E7QUFDQSxzQkFBc0IscURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixxREFBUTtBQUMxQjtBQUNBLHNCQUFzQix1REFBVTtBQUNoQztBQUNBO0FBQ0EsU0FBUyxLQUFxQywwREFBMEQsd0RBQU87QUFDL0csZUFBZSxzREFBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0RBQU87QUFDbEIsVUFBVSxtREFBTSxHQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QywyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixvREFBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsS0FBcUMsa0RBQWtELG9EQUFPO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQVU7QUFDdkIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQWM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDJEQUFjO0FBQzFDO0FBQ0EscUJBQXFCLGlEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9EQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrREFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFTO0FBQ3RCLGNBQWMsa0RBQVM7QUFDdkIsZUFBZSxrREFBUztBQUN4QixlQUFlLGtEQUFTO0FBQ3hCLGVBQWUsa0RBQVM7QUFDeEIsY0FBYyxrREFBUztBQUN2QixvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBLFNBQVMsRUFFSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBLGlEQUFpRCwyQ0FBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQU87QUFDNUIsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCLHdHQUF3RyxLQUFxQyxJQUFJLGdFQUFlLG1CQUFtQixDQUFjO0FBQ2pNLFFBQVEsOERBQWE7QUFDckI7QUFDQSxZQUFZLHNEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFVO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQSw4QkFBOEIsMERBQVM7QUFDdkMsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQXFDO0FBQ25ELDJEQUEyRCxtREFBbUQ7QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0Esd0JBQXdCLG1DQUFtQztBQUMzRCx3QkFBd0Isd0RBQXdEO0FBQ2hGLDZDQUE2QyxtREFBTSxDQUFDLG1EQUFNO0FBQzFEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsNkNBQUk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBZ0M7QUFDeEM7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUMsOENBQThDLDZDQUFJO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLEtBQXFDO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsQ0FLRDtBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixnRUFBZTtBQUN0QyxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVMsRUFTSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLDBEQUFTLENBQUMsd0RBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1REFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVU7QUFDckI7O0FBRUE7QUFDQTtBQUNBLFdBQVcseURBQVU7QUFDckIsQ0FBQzs7QUFFRDtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvREFBTztBQUN6Qiw0REFBNEQsa0JBQWtCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPLFNBQVMsdURBQVU7QUFDMUMsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRLHNCQUFzQixvREFBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsS0FBcUMsbUJBQW1CLENBQUU7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLE1BQXdDO0FBQ2hEO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFLO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJEQUFVLDJCQUEyQjtBQUM3RDtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHNEQUFLO0FBQzFEO0FBQ0Esb0NBQW9DLGtEQUFTO0FBQzdDO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVM7QUFDdkMsb0RBQW9ELHNEQUFLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBTSxHQUFHO0FBQzFCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMkJBQTJCLHNCQUFzQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QixnQ0FBZ0MsZ0JBQWdCLHNEQUFLLFNBQVM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0RBQU87QUFDcEIsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWcyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNQbitCO0FBQzNWO0FBQ3VQOztBQUV6UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsS0FBSztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsUUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0JBQXNCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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O0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMENBQUs7QUFDL0I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUssSUFBSSxlQUFlO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0EsNERBQTRELFdBQVc7QUFDdkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUksWUFBWTs7QUFFbkIsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLDBDQUFLOztBQUVQLEVBQUUsMENBQUs7QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVo7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQkFBa0IsNkNBQVE7QUFDMUI7QUFDQSxHQUFHOztBQUVILGlCQUFpQiw2Q0FBUTtBQUN6QjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUgsdUJBQXVCLDZDQUFRO0FBQy9CO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQiw2Q0FBUTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQSxHQUFHO0FBQ0g7QUFDQSx5Q0FBeUMsNkNBQVE7QUFDakQ7QUFDQSxHQUFHOztBQUVILHdDQUF3Qyw2Q0FBUTtBQUNoRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0NBQXdDLDZDQUFRO0FBQ2hEO0FBQ0E7QUFDQSxHQUFHOztBQUVILHFDQUFxQyw2Q0FBUTtBQUM3QztBQUNBLEdBQUc7O0FBRUgscUNBQXFDLDZDQUFRO0FBQzdDO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUksNkNBQVE7QUFDWjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDZDQUFRO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2Q0FBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQyxPQUFPOztBQUVSO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3RELCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsS0FBSztBQUNMO0FBQ0EsR0FBRyxJQUFJLEdBQUc7O0FBRVY7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBLFFBQVE7QUFDUixNQUFNOzs7QUFHTjtBQUNBOztBQUVBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7QUFDRjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRTtBQUMvRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsdUJBQXVC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SztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVosZ0JBQWdCLHVEQUFrQjs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7QUFDRDtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVILG9CQUFvQiw2Q0FBUTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsT0FBTztBQUNQO0FBQ0E7QUFD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QkFBaUI7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsRUFBRTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZUFBZTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSx5QkFBeUIsUUFBUTtBQUNqQztBQUNBLHNCQUFzQixlQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsU0FBUztBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLFNBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLFNBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0Esb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdEQUF3RCxPQUFPO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3REFBd0QsT0FBTztBQUMvRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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RztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtB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L0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRSx3QkFBd0IsNENBQTRDO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLFdBQVcsZUFBZTtBQUMxQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWSx5R0FBeUc7QUFDakksWUFBWSxZQUFZLHFHQUFxRztBQUM3SCxZQUFZLFlBQVksK0dBQStHO0FBQ3ZJLFlBQVksWUFBWSxpSEFBaUg7QUFDekksWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0EsRUFBRSxzRUFBWTtBQUNkO0FBQ0EsdUJBQXVCLCtFQUFpQjtBQUN4QyxtT0FBbU8sbUVBQWE7QUFDaFAsOEJBQThCLG1FQUFTOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixtRUFBUzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQU07QUFDM0IsT0FBTyw2REFBTztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlGQUErQjtBQUN0RCxnQkFBZ0IscUVBQWU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJFQUFjO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVFQUFVO0FBQzlCO0FBQ0EsOEZBQThGLHdGQUF3QjtBQUN0SCxRQUFRLG1GQUFtQjtBQUMzQjtBQUNBLCtGQUErRix5RkFBeUI7QUFDeEgsUUFBUSxtRkFBbUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDalpvRTtBQUNwQjtBQUNnQjtBQUNFO0FBQ1A7QUFDbkI7QUFDZTtBQUNWO0FBQ2tEO0FBQ3RDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVlO0FBQ2Y7QUFDQSxFQUFFLHNFQUFZO0FBQ2QsdUJBQXVCLCtFQUFpQjtBQUN4QyxtT0FBbU8sbUVBQWE7QUFDaFA7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdFQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnRUFBTSxDQUFDLHFFQUFXO0FBQzFDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0REFBTTtBQUNyQixnQkFBZ0IsNERBQU07QUFDdEIsSUFBSTtBQUNKLGVBQWUsNERBQU07QUFDckIsZ0JBQWdCLDREQUFNO0FBQ3RCO0FBQ0EsZ0JBQWdCLHlFQUFtQjtBQUNuQyx5QkFBeUIseUZBQStCLGNBQWMseUZBQStCO0FBQ3JHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxXQUFXLHdFQUFrQjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMU1vRTtBQUMyQjtBQUMvQztBQUNSO0FBQ2U7QUFDVjtBQUNjO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsV0FBVywrQ0FBK0M7QUFDMUQsV0FBVyx3QkFBd0I7QUFDbkMsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFZTtBQUNmO0FBQ0EsRUFBRSxzRUFBWTtBQUNkLHVCQUF1QiwrRUFBaUI7QUFDeEMsbU9BQW1PLG1FQUFhO0FBQ2hQO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnRUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0VBQU0sQ0FBQyxxRUFBVztBQUMxQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNERBQU07QUFDckIsZ0JBQWdCLDREQUFNO0FBQ3RCLElBQUk7QUFDSixlQUFlLDREQUFNO0FBQ3JCLGdCQUFnQiw0REFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlGQUErQixjQUFjLHlGQUErQjs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzdMeUQ7QUFDQTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsb0VBQWU7QUFDeEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0ZvRTtBQUNYO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLCtDQUErQztBQUMxRCxXQUFXLHdCQUF3QjtBQUNuQyxXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUywwRUFBb0I7QUFDN0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0VvRTtBQUNUO0FBQzNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUJBQXFCO0FBQ3pDO0FBQ0Esb0JBQW9CLHFCQUFxQixJQUFJLFlBQVk7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0JBQStCLElBQUksaUJBQWlCO0FBQ3hFO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtFQUFpQjtBQUN4QyxtT0FBbU8sbUVBQWE7QUFDaFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUZ3QztBQUN1QjtBQUNOO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsb0JBQW9CO0FBQy9CLFdBQVcsMEJBQTBCO0FBQ3JDLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxpQkFBaUI7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0Usd0JBQXdCO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLHdCQUF3QjtBQUN4RjtBQUNBO0FBQ2U7QUFDZjtBQUNBLEVBQUUsc0VBQVk7QUFDZCxxQkFBcUIsNERBQU07QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHlFQUFlO0FBQzdCLGdCQUFnQix5RUFBZTtBQUMvQixlQUFlLHlFQUFlOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlFQUFlO0FBQ3RDLHlCQUF5Qix5RUFBZTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLGVBQWUseUVBQWU7QUFDOUIsaUJBQWlCLHlFQUFlO0FBQ2hDLGlCQUFpQix5RUFBZTs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25Hd0M7QUFDRTtBQUNxQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLG9CQUFvQjtBQUMvQixXQUFXLDBCQUEwQjtBQUNyQyxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsaUJBQWlCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLHdCQUF3QjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSx3QkFBd0I7QUFDNUY7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQU07QUFDM0IsT0FBTyw2REFBTztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHlFQUFlO0FBQzdCLGdCQUFnQix5RUFBZTtBQUMvQixlQUFlLHlFQUFlOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUseUVBQWU7QUFDOUIsaUJBQWlCLHlFQUFlO0FBQ2hDLGlCQUFpQix5RUFBZTs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JGd0Q7QUFDQztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLE9BQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLE1BQU0sNkVBQU87QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUN3QztBQUNFO0FBQ3FCO0FBQ1o7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUVBQXlFLG1CQUFtQjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlFQUF5RSxtQkFBbUI7QUFDNUY7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQU07QUFDM0IsT0FBTyw2REFBTztBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUVBQWU7QUFDM0IsY0FBYyx5RUFBZTtBQUM3QjtBQUNBLGFBQWEseUVBQWU7QUFDNUIsZUFBZSx5RUFBZTtBQUM5QixlQUFlLHlFQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHlFQUFlO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIseUVBQWUsQ0FBQyxtRUFBUztBQUM5Qyx1QkFBdUIseUVBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzRXdDO0FBQ0U7QUFDcUI7QUFDL0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQU07QUFDM0IsT0FBTyw2REFBTztBQUNkO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5RUFBZTtBQUNsQztBQUNBO0FBQ0EsYUFBYSx5RUFBZTtBQUM1QixlQUFlLHlFQUFlO0FBQzlCLGVBQWUseUVBQWU7O0FBRTlCO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0NvRTtBQUNRO0FBQ3BDO0FBQ21CO0FBQ0Q7QUFDbEI7QUFDdUQ7QUFDdEM7QUFDTjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixXQUFXLGVBQWU7QUFDMUIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0EsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkIsaUJBQWlCLDREQUFNO0FBQ3ZCLHVCQUF1QiwrRUFBaUI7QUFDeEMsbU9BQW1PLG1FQUFhO0FBQ2hQLHFCQUFxQixtRUFBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhFQUF3QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGdCQUFnQixxRUFBZSxPQUFPLHlGQUErQjtBQUNyRSxvQkFBb0IscUVBQWUsV0FBVyx5RkFBK0I7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFNBQVMsNERBQU07QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1RndDO0FBQ1c7QUFDTTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsaUJBQWlCLG1FQUFTO0FBQzFCLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxlQUFlO0FBQzVCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hCd0M7QUFDVTtBQUMwQjtBQUNuQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQixhQUFhLDhFQUF3QixPQUFPLGlFQUFXO0FBQ3ZEO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QndDO0FBQ1E7QUFDUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLGdFQUFVO0FBQ25COzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekJpRztBQUNwRDtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELGtEQUFrRDtBQUNuRztBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMENBQTBDO0FBQ2pFO0FBQ0EsVUFBVTtBQUNWO0FBQ2U7QUFDZixTQUFTLGdFQUFNLEdBQUcsRUFBRSwrRUFBeUI7QUFDN0M7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5QndDO0FBQ2dCO0FBQ1E7QUFDUDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkIsYUFBYSxvRUFBYyxtQkFBbUIsd0VBQWtCOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQ3dDO0FBQ2dCO0FBQ0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0VBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9FQUFjO0FBQ3RDO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ2dFO0FBQ3BCO0FBQ2E7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxpQkFBaUIsd0VBQWtCO0FBQ25DLGlCQUFpQix3RUFBa0IsQ0FBQyw4REFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakN3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJ3QztBQUNpQjtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVLDZEQUE2RDtBQUNsRixXQUFXLFVBQVUsK0RBQStEO0FBQ3BGLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sMERBQTBEO0FBQ2pFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDBEQUEwRDtBQUNqRSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkO0FBQ0E7QUFDQSxzQkFBc0IsNERBQU07QUFDNUIsb0JBQW9CLDREQUFNO0FBQzFCLHVCQUF1Qiw0REFBTTtBQUM3QixxQkFBcUIsNERBQU07O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3pEd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3hCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3hCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3hCMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2Qsb0JBQW9CLDZEQUFPO0FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJrRDtBQUNRO0FBQ2xCO0FBQ2lCO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsV0FBVyxlQUFlO0FBQzFCLFdBQVcsZUFBZTtBQUMxQixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRWU7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQixhQUFhLGlFQUFXLDRCQUE0QixxRUFBZTs7QUFFbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdERvRTtBQUMxQjtBQUNGO0FBQ1k7QUFDSztBQUNOO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsV0FBVyxlQUFlO0FBQzFCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQSxFQUFFLHNFQUFZO0FBQ2QsdUJBQXVCLCtFQUFpQjtBQUN4QyxxQkFBcUIsbUVBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDZEQUFPO0FBQ2pDO0FBQ0EscUJBQXFCLDREQUFNLENBQUMsa0VBQVk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ2tEO0FBQ1Y7QUFDVztBQUNNO0FBQ1c7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixXQUFXLGVBQWU7QUFDMUIsV0FBVyxlQUFlO0FBQzFCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGlCQUFpQjtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCwwQkFBMEI7QUFDbEY7QUFDQTtBQUNlO0FBQ2Y7QUFDQSxFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBLHVCQUF1QiwrRUFBaUI7QUFDeEMsOEJBQThCLG1FQUFTOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpRUFBVztBQUNuQztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUVBQVc7QUFDbkM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2RThFO0FBQ3RCO0FBQ0o7QUFDSztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLFdBQVcsZUFBZTtBQUMxQixhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsaUJBQWlCO0FBQzNFO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLCtFQUF5QixDQUFDLG9FQUFjLFFBQVEsa0VBQVk7QUFDckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEN3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw0REFBTTtBQUNmOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCeUQ7QUFDRTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCw0QkFBNEIsbUVBQWtCO0FBQzlDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCeUQ7QUFDSDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCw0QkFBNEIsOERBQWE7QUFDekM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJ5RDtBQUNIO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDRCQUE0Qiw4REFBYTtBQUN6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCQTtBQUNnRDtBQUN3QjtBQUNoQjtBQUNFO0FBQ2M7QUFDQTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0o7QUFDQTtBQUM4QjtBQUNwQztBQUNrQjtBQUNWO0FBQ0U7QUFDRTtBQUNBO0FBQzBCO0FBQ0E7QUFDZ0I7QUFDUjtBQUNKO0FBQ0k7QUFDTjtBQUNBO0FBQ2xCO0FBQ0U7QUFDYztBQUNBO0FBQ1Y7QUFDRjtBQUNJO0FBQ0Y7QUFDSjtBQUNBO0FBQ0E7QUFDRTtBQUNJO0FBQ0Y7QUFDSTtBQUNOO0FBQ007QUFDTjtBQUNGO0FBQ0U7QUFDcEI7QUFDTTtBQUNKO0FBQ007QUFDUTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0Y7QUFDTTtBQUNSO0FBQ0E7QUFDVTtBQUNoQjtBQUNnQjtBQUNZO0FBQ0Y7QUFDWTtBQUN0QjtBQUNWO0FBQ1E7QUFDUTtBQUNSO0FBQ0E7QUFDRTtBQUNKO0FBQ1Y7QUFDRjtBQUNZO0FBQ0k7QUFDRjtBQUNSO0FBQ2dCO0FBQ2xCO0FBQ0U7QUFDRTtBQUNRO0FBQ007QUFDSjtBQUNWO0FBQ0o7QUFDMEM7QUFDdEM7QUFDQTtBQUNOO0FBQ1E7QUFDUjtBQUNjO0FBQ047QUFDUTtBQUNoQjtBQUN3QjtBQUNWO0FBQ0E7QUFDUTtBQUNoQjtBQUNnQjtBQUN0QjtBQUNF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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7QUFDcEUsd0JBQXdCLDRDQUE0QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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L0d3RDtBQUNzQztBQUNuQztBQUNEO0FBQ2xCO0FBQ0s7QUFDdUI7QUFDMkI7QUFDNkI7QUFDekU7QUFDTTtBQUNLO0FBQ1o7QUFDa0IsQ0FBQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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RUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7O0FBR0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLFlBQVk7O0FBRXJCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRixvQkFBb0I7O0FBRXBCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLDhDQUE4QztBQUM5QztBQUNBO0FBQ0EsbUJBQW1CLGlDQUFpQztBQUNwRCxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxZQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsU0FBUztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsSUFBSTtBQUN0Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBLGlDQUFpQyxNQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxlQUFlOztBQUVmLFNBQVM7O0FBRVQ7QUFDQSxTQUFTLGdDQUFnQztBQUN6QyxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLHFDQUFxQztBQUM5QyxTQUFTO0FBQ1QsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrREFBK0Q7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0Esa0VBQWtFLFVBQVU7QUFDNUUsdUNBQXVDLDJCQUEyQjtBQUNsRTtBQUNBLGlDQUFpQyxNQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxhQUFhLHVFQUF1RTtBQUNwRjtBQUNBO0FBQ0EsYUFBYSw0QkFBNEI7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDZEQUE2RDs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLFNBQVM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpREFBaUQ7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELFdBQVcsNENBQTRDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUI7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQSxFQUFFOzs7O0FBSUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUyxHQUFHO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7Ozs7QUFJQTs7QUFFQTs7QUFFQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUEsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsMkJBQTJCLHdCQUF3Qjs7QUFFbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsMkNBQTJDO0FBQzNDLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5QyxxQ0FBcUM7QUFDOUUscUNBQXFDLHNDQUFzQztBQUMzRSxxQ0FBcUMscUNBQXFDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZOztBQUVaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUM7QUFDckMsc0NBQXNDO0FBQ3RDLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7OztBQUtBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLGFBQWE7QUFDckMsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsU0FBUztBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTs7O0FBR0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWU7O0FBRWY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixnQkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7QUFDRjs7QUFFQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEdBQUc7QUFDSDs7QUFFQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxPQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLE9BQU87QUFDaEI7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVzs7QUFFWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxlQUFlLHNCQUFzQjtBQUNyQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxnRUFBZ0U7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLGNBQWM7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUJBQW1CO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdUNBQXVDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBdUQ7QUFDL0U7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGVBQWUsb0NBQW9DO0FBQ25EOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOzs7QUFHRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFD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O0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMsY0FBYztBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhEQUE4RDtBQUMzRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLE9BQU87O0FBRWhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBOztBQUVBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFlBQVksU0FBUztBQUNyQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsZ0JBQWdCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxTQUFTO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsWUFBWSxpQkFBaUI7QUFDN0IsZUFBZTtBQUNmLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUyxtQkFBbUI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHVCQUF1QjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBOztBQUVBLEtBQUs7QUFDTDs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLFNBQVM7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7OztBQUdBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBOztBQUVBOztBQUVBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9DQUFvQzs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGNBQWM7O0FBRWQ7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSixHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FB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QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBLHNCQUFzQjtBQUN0QiwyQkFBMkI7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLHdCQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQyxjQUFjLHVDQUF1QztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxxREFBcUQ7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLGVBQWUscURBQXFEO0FBQ3BFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0EsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RLRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2pFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN2TUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFD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O0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM1R0Q7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMvREQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Es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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0VEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0hEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Es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QVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLEtBQUs7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5R0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JORDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDckZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDakVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM3REQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzFGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtB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QTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLElBQUk7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFD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QUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQU87QUFDeEMsZ0JBQWdCLDhFQUFlLElBQVcsT0FBTyxDQUFDO0FBQ2xEO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0E7QUFDQSxxQ0FBcUMsRUFBRTtBQUN2QywrQkFBK0IsRUFBRTtBQUNqQyxpQ0FBaUMsRUFBRTtBQUNuQywrQkFBK0IsRUFBRTtBQUNqQyw2QkFBNkIsRUFBRSxJQUFJLEVBQUU7QUFDckMsNEJBQTRCLEVBQUU7QUFDOUIsbUNBQW1DLEdBQUc7QUFDdEMsNkJBQTZCLEVBQUU7QUFDL0IsK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQ3ZDLDhCQUE4QixFQUFFLElBQUksRUFBRTtBQUN0Qyw0QkFBNEIsRUFBRTtBQUM5QiwyQkFBMkIsRUFBRTtBQUM3Qix5QkFBeUIsRUFBRTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxJQUFJLDBEQUEwRCxJQUFJLHFFQUFxRSxFQUFFO0FBQ2pNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtCQUErQjtBQUNuRDtBQUNBOztBQUVBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRHQUE0RztBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxzQkFBc0I7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msc0JBQXNCO0FBQzFEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsbUJBQW1CO0FBQ3pDO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdmpMRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxNQUFNLElBQTBDO0FBQ2hEO0FBQ0EsSUFBSSxpQ0FBTyxDQUFDLHlFQUFRLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUMvQixJQUFJLEtBQUssRUFxQk47QUFDSCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxlQUFlO0FBQ3RCLFdBQVcsV0FBVyxPQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1QyxPQUFPO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLDBDQUEwQztBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsdUZBQXVGO0FBQ3ZGO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHlCQUF5QixxQkFBcUI7QUFDOUM7QUFDQSxDQUFDO0FBQ0QsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9CQUFvQix5QkFBeUI7QUFDN0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLDZCQUE2QjtBQUNqRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsU0FBUztBQUNyRDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQSxvQ0FBb0M7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0IseUJBQXlCO0FBQzdDOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVAsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxzQkFBc0IsMEJBQTBCO0FBQ2hEOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQyxRQUFRO0FBQ1I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVixrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw2QkFBNkI7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0IsaUJBQWlCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQix3QkFBd0I7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixzQkFBc0I7QUFDNUM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1Qzs7QUFFdkM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsaUJBQWlCO0FBQ3ZDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLEdBQUcsUUFBUTs7QUFFdkM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLDZCQUE2QjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0EsK0NBQStDLFFBQVE7QUFDdkQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBLG9CQUFvQixzQkFBc0I7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvQkFBb0Isc0JBQXNCO0FBQzFDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEMsd0NBQXdDLE9BQU87QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsK0JBQStCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsMkNBQTJDOztBQUUzQztBQUNBLFVBQVU7QUFDViwyQ0FBMkM7O0FBRTNDO0FBQ0EsVUFBVTtBQUNWLDZDQUE2Qzs7QUFFN0M7QUFDQSxVQUFVO0FBQ1YseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0M7QUFDaEMsTUFBTTtBQUNOLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsaUNBQWlDO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0QixxQkFBcUI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBCQUEwQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsT0FBTyxtQkFBbUIsa0JBQWtCLGFBQWE7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsWUFBWTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkJBQTJCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFD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QUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGtCQUFrQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUksWUFBWTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFVBQVUscUNBQXFDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSSxrQkFBa0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Qsc0JBQXNCLFlBQVkseUNBQXlDO0FBQzNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsWUFBWTtBQUMxRSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YscURBQXFELG9CQUFvQjtBQUN6RSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVjtBQUNBO0FBQ0EsK0RBQStELDBCQUEwQjtBQUN6RixVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGlCQUFpQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsZ0NBQWdDO0FBQ2hDLFVBQVUsK0JBQStCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsZUFBZTtBQUM1RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDLFVBQVUseUJBQXlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBLFVBQVUsaURBQWlEO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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c0RBQXNELFdBQVc7QUFDakUsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLG1EQUFtRDtBQUNuRCxVQUFVLHNEQUFzRDtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGlCQUFpQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsaUJBQWlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUM7QUFDbkMsVUFBVSxvQkFBb0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUEsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSw4RkFBOEYsSUFBSTtBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixRQUFRLEVBQUUsS0FBSztBQUN0Qyw2QkFBNkIsc0JBQXNCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLFFBQVEsRUFBRSxLQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGtCQUFrQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxXQUFXLHVDQUF1QztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU0sR0FBRyxJQUFJO0FBQzNCLFlBQVksTUFBTSxFQUFFLElBQUk7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25D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Q0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlCQUF5QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBdUQ7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FB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QUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRDQUE0QztBQUM1QyxVQUFVLDZCQUE2QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFFBQVE7QUFDN0M7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixzQ0FBc0MsWUFBWTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxZQUFZO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsV0FBVztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHlCQUF5QjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMseUJBQXlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSwyQ0FBMkM7QUFDM0MsVUFBVSx5QkFBeUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsb0JBQW9CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsb0JBQW9CO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsMERBQTBEO0FBQzFELFVBQVUseUJBQXlCO0FBQ25DO0FBQ0E7O0FBRUEsbUNBQW1DLGNBQWM7QUFDakQsVUFBVSwrQkFBK0I7QUFDekM7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxtQkFBbUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsYUFBYTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNqQztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLHFEQUFxRCxVQUFVO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxxQ0FBcUM7QUFDL0MsVUFBVSxtQ0FBbUM7QUFDN0MsVUFBVSxxQ0FBcUM7QUFDL0MsVUFBVSxxQ0FBcUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixZQUFZLGdCQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsSUFBSTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCx5QkFBeUI7QUFDcEYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLHFFQUFxRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0NBQWdDLHdEQUF3RCxJQUFJO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQXdEO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxRQUFRO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFh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QTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7O0FBR0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLDRCQUE0QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7QUFDaEU7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsbUJBQW1CO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMEJBQTBCLEtBQUs7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsUUFBUTtBQUNSLDhEQUE4RDtBQUM5RCxRQUFRO0FBQ1I7QUFDQSxzRkFBc0Y7QUFDdEY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Qs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QTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QztBQUM2QjtBQUNoRDtBQUNmLGVBQWUsc0RBQU87QUFDdEI7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLFNBQVMscUVBQXFCO0FBQzlCOzs7Ozs7Ozs7Ozs7Ozs7QUNUZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ05rQztBQUNuQjtBQUNmLE1BQU0sc0RBQU87QUFDYjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVmtDO0FBQ1M7QUFDNUI7QUFDZixZQUFZLDJEQUFXO0FBQ3ZCLFNBQVMsc0RBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7OztBQ0xlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7OztBQ1JxRDtBQUN0QztBQUNmO0FBQ0Esb0NBQW9DLGdFQUFnQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxzRkFBc0YsZ0VBQWdCO0FBQ3RHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDaUU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQ3BFO0FBQ0E7QUFDc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1jb3JlL2Rpc3QvY29tcGlsZXItY29yZS5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1kb20vZGlzdC9jb21waWxlci1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vY29uc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vZW52LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3Byb3h5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3RpbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcmVhY3Rpdml0eS9kaXN0L3JlYWN0aXZpdHkuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcnVudGltZS1jb3JlL2Rpc3QvcnVudGltZS1jb3JlLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtZG9tL2Rpc3QvcnVudGltZS1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvc2hhcmVkL2Rpc3Qvc2hhcmVkLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC9kaXN0L211bHRpc2VsZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYXNlNjQtanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC9tYWluLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9jbG9uZU9iamVjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0RheU9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zZXRVVENEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0lTT0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkQnVzaW5lc3NEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZEhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZE1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFdlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hcmVJbnRlcnZhbHNPdmVybGFwcGluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NsYW1wL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY2xvc2VzdEluZGV4VG8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jbG9zZXN0VG8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jb21wYXJlQXNjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY29tcGFyZURlc2MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kYXlzVG9XZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJblF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbldlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoRGF5T2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hIb3VyT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hNaW51dGVPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaE1vbnRoT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hRdWFydGVyT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFllYXJPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZkRlY2FkZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZk1pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlNlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mVG9kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlRvbW9ycm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZZZXN0ZXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREaXN0YW5jZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RGlzdGFuY2VUb05vdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREdXJhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdElTTy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdElTTzkwNzUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRJU09EdXJhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdFJGQzMzMzkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRSRkM3MjMxL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0UmVsYXRpdmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mcm9tVW5peFRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5c0luTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXlzSW5ZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGVmYXVsdE9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRIb3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT1dlZWtzSW5ZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldE1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0U2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRVbml4VGltZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRXZWVrT2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0V2Vla3NJbk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0WWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2hvdXJzVG9NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9ob3Vyc1RvTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2hvdXJzVG9TZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbnRlcnZhbFRvRHVyYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbnRsRm9ybWF0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW50bEZvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNBZnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzQmVmb3JlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNEYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNFcXVhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRXhpc3RzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNGaXJzdERheU9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0ZyaWRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRnV0dXJlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNMYXN0RGF5T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzTGVhcFllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc01hdGNoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNNb25kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1Bhc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZUlTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lTWludXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lU2Vjb25kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZVllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhdHVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTdW5kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc01pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc01vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1NlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaHVyc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVG9kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RvbW9ycm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUdWVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNWYWxpZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzV2VkbmVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNXZWVrZW5kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNXaXRoaW5JbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzWWVzdGVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mRGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZklTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9saWdodEZvcm1hdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRMb2NhbGl6ZUZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRNYXRjaEZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRNYXRjaFBhdHRlcm5Gbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0TG9uZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvbG9jYWxpemUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9tYXRjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21heC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kc1RvSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHNUb01pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHNUb1NlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW51dGVzVG9Ib3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbnV0ZXNUb01pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbnV0ZXNUb1NlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9tb250aHNUb1F1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbW9udGhzVG9ZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHREYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0RnJpZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dE1vbmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRTYXR1cmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRTdW5kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0VGh1cnNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0VHVlc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRXZWRuZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvU2V0dGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvQU1QTU1pZG5pZ2h0UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0FNUE1QYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF0ZVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXlPZlllYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF5UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheVBlcmlvZFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9FcmFQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRXh0ZW5kZWRZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjBUbzExUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIwdG8yM1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMVRvMjRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjF0bzEyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT0RheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1dlZWtQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPV2Vla1llYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTG9jYWxEYXlQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTG9jYWxXZWVrUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0xvY2FsV2Vla1llYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTWludXRlUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL01vbnRoUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1F1YXJ0ZXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU2Vjb25kUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVMb2NhbERheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TdGFuZEFsb25lTW9udGhQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1RpbWVzdGFtcFNlY29uZHNQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlSVNPL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2VKU09OL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c0ZyaWRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzTW9uZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNTYXR1cmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzU3VuZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNUaHVyc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzVHVlc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzV2VkbmVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcXVhcnRlcnNUb01vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3F1YXJ0ZXJzVG9ZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3JvdW5kVG9OZWFyZXN0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NlY29uZHNUb0hvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2Vjb25kc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2Vjb25kc1RvTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldERhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldEhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SVNPRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldElTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldE1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0UXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0V2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZkRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZEZWNhZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZk1pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlNlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZUb2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZUb21vcnJvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mWWVzdGVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViQnVzaW5lc3NEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YkhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1Yk1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YlF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YldlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS90b0RhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS93ZWVrc1RvRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3llYXJzVG9Nb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS95ZWFyc1RvUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2lzYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwQ2FjaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlTb21lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FzY2lpVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDbGFtcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNvbmZvcm1zVG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXlhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2FibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2l0ZXJhdG9yVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVBZGQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmluZ1RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9Tb3VyY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2FzdEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZURlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZURlZXBXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uZm9ybXNUby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ndGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQm9vbGVhbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNEYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFbGVtZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFbXB0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsV2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Zpbml0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXRjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWF0Y2hXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOYU4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTmlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOdWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1JlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2FmZUludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1VuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzV2Vha1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sYW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU2FmZUludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1wcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3Uta21yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbW9tZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zZWxlY3QyL2Rpc3QvanMvc2VsZWN0Mi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L21haW4uY3NzPzNiZWMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz9kN2JlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3ZnLXZ1ZTMvZGlzdC9zdmctdnVlLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2UvZGlzdC9idW5kbGUtY2pzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtcmFkaWFsLXByb2dyZXNzL2Rpc3QvUmFkaWFsUHJvZ3Jlc3NCYXIuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLXNtb290aC1zY3JvbGwvZGlzdC92dWUtc21vb3RoLXNjcm9sbC5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXgvZGlzdC92dWV4LmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AaGVhZGxlc3N1aS92dWUvZGlzdC9oZWFkbGVzc3VpLmRldi5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BoZWFkbGVzc3VpL3Z1ZS9kaXN0L2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLnVtZC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9ub2RlX21vZHVsZXMvdnVlLWRlbWkvbGliL2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9zaGFyZWQvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL3NoYXJlZC9ub2RlX21vZHVsZXMvdnVlLWRlbWkvbGliL2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvZGlzdC9icm93c2VyL2F4aW9zLmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlMy1hcGV4Y2hhcnRzL2Rpc3QvdnVlMy1hcGV4Y2hhcnRzLnVtZC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9uYW5vaWQvdXJsLWFscGhhYmV0L2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nLCBoeXBoZW5hdGUsIE5PT1AsIGV4dGVuZCwgaXNPYmplY3QsIE5PLCBpc0FycmF5LCBtYWtlTWFwLCBpc1N5bWJvbCwgRU1QVFlfT0JKLCBjYXBpdGFsaXplLCBjYW1lbGl6ZSBhcyBjYW1lbGl6ZSQxLCBQYXRjaEZsYWdOYW1lcywgc2xvdEZsYWdzVGV4dCwgaXNPbiwgaXNCdWlsdEluRGlyZWN0aXZlLCBpc1Jlc2VydmVkUHJvcCwgdG9IYW5kbGVyS2V5IH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuZXhwb3J0IHsgZ2VuZXJhdGVDb2RlRnJhbWUgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycm9yKSB7XHJcbiAgICB0aHJvdyBlcnJvcjtcclxufVxyXG5mdW5jdGlvbiBkZWZhdWx0T25XYXJuKG1zZykge1xyXG4gICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnNvbGUud2FybihgW1Z1ZSB3YXJuXSAke21zZy5tZXNzYWdlfWApO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jLCBtZXNzYWdlcywgYWRkaXRpb25hbE1lc3NhZ2UpIHtcclxuICAgIGNvbnN0IG1zZyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZVxyXG4gICAgICAgID8gKG1lc3NhZ2VzIHx8IGVycm9yTWVzc2FnZXMpW2NvZGVdICsgKGFkZGl0aW9uYWxNZXNzYWdlIHx8IGBgKVxyXG4gICAgICAgIDogY29kZTtcclxuICAgIGNvbnN0IGVycm9yID0gbmV3IFN5bnRheEVycm9yKFN0cmluZyhtc2cpKTtcclxuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xyXG4gICAgZXJyb3IubG9jID0gbG9jO1xyXG4gICAgcmV0dXJuIGVycm9yO1xyXG59XHJcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICAvLyBwYXJzZSBlcnJvcnNcclxuICAgIFswIC8qIEVycm9yQ29kZXMuQUJSVVBUX0NMT1NJTkdfT0ZfRU1QVFlfQ09NTUVOVCAqL106ICdJbGxlZ2FsIGNvbW1lbnQuJyxcclxuICAgIFsxIC8qIEVycm9yQ29kZXMuQ0RBVEFfSU5fSFRNTF9DT05URU5UICovXTogJ0NEQVRBIHNlY3Rpb24gaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LicsXHJcbiAgICBbMiAvKiBFcnJvckNvZGVzLkRVUExJQ0FURV9BVFRSSUJVVEUgKi9dOiAnRHVwbGljYXRlIGF0dHJpYnV0ZS4nLFxyXG4gICAgWzMgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfQVRUUklCVVRFUyAqL106ICdFbmQgdGFnIGNhbm5vdCBoYXZlIGF0dHJpYnV0ZXMuJyxcclxuICAgIFs0IC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi9dOiBcIklsbGVnYWwgJy8nIGluIHRhZ3MuXCIsXHJcbiAgICBbNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gdGFnLicsXHJcbiAgICBbNiAvKiBFcnJvckNvZGVzLkVPRl9JTl9DREFUQSAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiBDREFUQSBzZWN0aW9uLicsXHJcbiAgICBbNyAvKiBFcnJvckNvZGVzLkVPRl9JTl9DT01NRU5UICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIGNvbW1lbnQuJyxcclxuICAgIFs4IC8qIEVycm9yQ29kZXMuRU9GX0lOX1NDUklQVF9IVE1MX0NPTU1FTlRfTElLRV9URVhUICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHNjcmlwdC4nLFxyXG4gICAgWzkgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fVEFHICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHRhZy4nLFxyXG4gICAgWzEwIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi9dOiAnSW5jb3JyZWN0bHkgY2xvc2VkIGNvbW1lbnQuJyxcclxuICAgIFsxMSAvKiBFcnJvckNvZGVzLklOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UICovXTogJ0luY29ycmVjdGx5IG9wZW5lZCBjb21tZW50LicsXHJcbiAgICBbMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqL106IFwiSWxsZWdhbCB0YWcgbmFtZS4gVXNlICcmbHQ7JyB0byBwcmludCAnPCcuXCIsXHJcbiAgICBbMTMgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqL106ICdBdHRyaWJ1dGUgdmFsdWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTQgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0VORF9UQUdfTkFNRSAqL106ICdFbmQgdGFnIG5hbWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTUgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX1dISVRFU1BBQ0VfQkVUV0VFTl9BVFRSSUJVVEVTICovXTogJ1doaXRlc3BhY2Ugd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTYgLyogRXJyb3JDb2Rlcy5ORVNURURfQ09NTUVOVCAqL106IFwiVW5leHBlY3RlZCAnPCEtLScgaW4gY29tbWVudC5cIixcclxuICAgIFsxNyAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX0FUVFJJQlVURV9OQU1FICovXTogJ0F0dHJpYnV0ZSBuYW1lIGNhbm5vdCBjb250YWluIFUrMDAyMiAoXCIpLCBVKzAwMjcgKFxcJyksIGFuZCBVKzAwM0MgKDwpLicsXHJcbiAgICBbMTggLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUUgKi9dOiAnVW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIGNhbm5vdCBjb250YWluIFUrMDAyMiAoXCIpLCBVKzAwMjcgKFxcJyksIFUrMDAzQyAoPCksIFUrMDAzRCAoPSksIGFuZCBVKzAwNjAgKGApLicsXHJcbiAgICBbMTkgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRSAqL106IFwiQXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggJz0nLlwiLFxyXG4gICAgWzIxIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9RVUVTVElPTl9NQVJLX0lOU1RFQURfT0ZfVEFHX05BTUUgKi9dOiBcIic8PycgaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LlwiLFxyXG4gICAgWzIwIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9OVUxMX0NIQVJBQ1RFUiAqL106IGBVbmV4cGVjdGVkIG51bGwgY2hhcmFjdGVyLmAsXHJcbiAgICBbMjIgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovXTogXCJJbGxlZ2FsICcvJyBpbiB0YWdzLlwiLFxyXG4gICAgLy8gVnVlLXNwZWNpZmljIHBhcnNlIGVycm9yc1xyXG4gICAgWzIzIC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VORF9UQUcgKi9dOiAnSW52YWxpZCBlbmQgdGFnLicsXHJcbiAgICBbMjQgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRU5EX1RBRyAqL106ICdFbGVtZW50IGlzIG1pc3NpbmcgZW5kIHRhZy4nLFxyXG4gICAgWzI1IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovXTogJ0ludGVycG9sYXRpb24gZW5kIHNpZ24gd2FzIG5vdCBmb3VuZC4nLFxyXG4gICAgWzI3IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCAqL106ICdFbmQgYnJhY2tldCBmb3IgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgd2FzIG5vdCBmb3VuZC4gJyArXHJcbiAgICAgICAgJ05vdGUgdGhhdCBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCBjYW5ub3QgY29udGFpbiBzcGFjZXMuJyxcclxuICAgIFsyNiAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSAqL106ICdMZWdhbCBkaXJlY3RpdmUgbmFtZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIC8vIHRyYW5zZm9ybSBlcnJvcnNcclxuICAgIFsyOCAvKiBFcnJvckNvZGVzLlhfVl9JRl9OT19FWFBSRVNTSU9OICovXTogYHYtaWYvdi1lbHNlLWlmIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzI5IC8qIEVycm9yQ29kZXMuWF9WX0lGX1NBTUVfS0VZICovXTogYHYtaWYvZWxzZSBicmFuY2hlcyBtdXN0IHVzZSB1bmlxdWUga2V5cy5gLFxyXG4gICAgWzMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi9dOiBgdi1lbHNlL3YtZWxzZS1pZiBoYXMgbm8gYWRqYWNlbnQgdi1pZiBvciB2LWVsc2UtaWYuYCxcclxuICAgIFszMSAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTk9fRVhQUkVTU0lPTiAqL106IGB2LWZvciBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszMiAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTUFMRk9STUVEX0VYUFJFU1NJT04gKi9dOiBgdi1mb3IgaGFzIGludmFsaWQgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzMzIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UICovXTogYDx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHNob3VsZCBiZSBwbGFjZWQgb24gdGhlIDx0ZW1wbGF0ZT4gdGFnLmAsXHJcbiAgICBbMzQgLyogRXJyb3JDb2Rlcy5YX1ZfQklORF9OT19FWFBSRVNTSU9OICovXTogYHYtYmluZCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovXTogYHYtb24gaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMzYgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9VTkVYUEVDVEVEX0RJUkVDVElWRV9PTl9TTE9UX09VVExFVCAqL106IGBVbmV4cGVjdGVkIGN1c3RvbSBkaXJlY3RpdmUgb24gPHNsb3Q+IG91dGxldC5gLFxyXG4gICAgWzM3IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqL106IGBNaXhlZCB2LXNsb3QgdXNhZ2Ugb24gYm90aCB0aGUgY29tcG9uZW50IGFuZCBuZXN0ZWQgPHRlbXBsYXRlPi5gICtcclxuICAgICAgICBgV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbmFtZWQgc2xvdHMsIGFsbCBzbG90cyBzaG91bGQgdXNlIDx0ZW1wbGF0ZT4gYCArXHJcbiAgICAgICAgYHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuYCxcclxuICAgIFszOCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0RVUExJQ0FURV9TTE9UX05BTUVTICovXTogYER1cGxpY2F0ZSBzbG90IG5hbWVzIGZvdW5kLiBgLFxyXG4gICAgWzM5IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRVhUUkFORU9VU19ERUZBVUxUX1NMT1RfQ0hJTERSRU4gKi9dOiBgRXh0cmFuZW91cyBjaGlsZHJlbiBmb3VuZCB3aGVuIGNvbXBvbmVudCBhbHJlYWR5IGhhcyBleHBsaWNpdGx5IG5hbWVkIGAgK1xyXG4gICAgICAgIGBkZWZhdWx0IHNsb3QuIFRoZXNlIGNoaWxkcmVuIHdpbGwgYmUgaWdub3JlZC5gLFxyXG4gICAgWzQwIC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlTUExBQ0VEICovXTogYHYtc2xvdCBjYW4gb25seSBiZSB1c2VkIG9uIGNvbXBvbmVudHMgb3IgPHRlbXBsYXRlPiB0YWdzLmAsXHJcbiAgICBbNDEgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiAqL106IGB2LW1vZGVsIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzQyIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX01BTEZPUk1FRF9FWFBSRVNTSU9OICovXTogYHYtbW9kZWwgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgbWVtYmVyIGV4cHJlc3Npb24uYCxcclxuICAgIFs0MyAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRSAqL106IGB2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIHYtZm9yIG9yIHYtc2xvdCBzY29wZSB2YXJpYWJsZXMgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd3JpdGFibGUuYCxcclxuICAgIFs0NCAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FWFBSRVNTSU9OICovXTogYEVycm9yIHBhcnNpbmcgSmF2YVNjcmlwdCBleHByZXNzaW9uOiBgLFxyXG4gICAgWzQ1IC8qIEVycm9yQ29kZXMuWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU4gKi9dOiBgPEtlZXBBbGl2ZT4gZXhwZWN0cyBleGFjdGx5IG9uZSBjaGlsZCBjb21wb25lbnQuYCxcclxuICAgIC8vIGdlbmVyaWMgZXJyb3JzXHJcbiAgICBbNDYgLyogRXJyb3JDb2Rlcy5YX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovXTogYFwicHJlZml4SWRlbnRpZmllcnNcIiBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIGNvbXBpbGVyLmAsXHJcbiAgICBbNDcgLyogRXJyb3JDb2Rlcy5YX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQgKi9dOiBgRVMgbW9kdWxlIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIGNvbXBpbGVyLmAsXHJcbiAgICBbNDggLyogRXJyb3JDb2Rlcy5YX0NBQ0hFX0hBTkRMRVJfTk9UX1NVUFBPUlRFRCAqL106IGBcImNhY2hlSGFuZGxlcnNcIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB0aGUgXCJwcmVmaXhJZGVudGlmaWVyc1wiIG9wdGlvbiBpcyBlbmFibGVkLmAsXHJcbiAgICBbNDkgLyogRXJyb3JDb2Rlcy5YX1NDT1BFX0lEX05PVF9TVVBQT1JURUQgKi9dOiBgXCJzY29wZUlkXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIG1vZHVsZSBtb2RlLmAsXHJcbiAgICAvLyBqdXN0IHRvIGZ1bGZpbGwgdHlwZXNcclxuICAgIFs1MCAvKiBFcnJvckNvZGVzLl9fRVhURU5EX1BPSU5UX18gKi9dOiBgYFxyXG59O1xuXG5jb25zdCBGUkFHTUVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgRnJhZ21lbnRgIDogYGApO1xyXG5jb25zdCBURUxFUE9SVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVGVsZXBvcnRgIDogYGApO1xyXG5jb25zdCBTVVNQRU5TRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgU3VzcGVuc2VgIDogYGApO1xyXG5jb25zdCBLRUVQX0FMSVZFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBLZWVwQWxpdmVgIDogYGApO1xyXG5jb25zdCBCQVNFX1RSQU5TSVRJT04gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEJhc2VUcmFuc2l0aW9uYCA6IGBgKTtcclxuY29uc3QgT1BFTl9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgb3BlbkJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVCbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9FTEVNRU5UX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVFbGVtZW50QmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfVk5PREUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0VMRU1FTlRfVk5PREUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUVsZW1lbnRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9DT01NRU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVDb21tZW50Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfVEVYVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlVGV4dFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1NUQVRJQyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlU3RhdGljVk5vZGVgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0NPTVBPTkVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUNvbXBvbmVudGAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVEeW5hbWljQ29tcG9uZW50YCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9ESVJFQ1RJVkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVEaXJlY3RpdmVgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0ZJTFRFUiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUZpbHRlcmAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfRElSRUNUSVZFUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aERpcmVjdGl2ZXNgIDogYGApO1xyXG5jb25zdCBSRU5ERVJfTElTVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVuZGVyTGlzdGAgOiBgYCk7XHJcbmNvbnN0IFJFTkRFUl9TTE9UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZW5kZXJTbG90YCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1NMT1RTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVTbG90c2AgOiBgYCk7XHJcbmNvbnN0IFRPX0RJU1BMQVlfU1RSSU5HID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0Rpc3BsYXlTdHJpbmdgIDogYGApO1xyXG5jb25zdCBNRVJHRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbWVyZ2VQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9DTEFTUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplQ2xhc3NgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfU1RZTEUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZVN0eWxlYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IEdVQVJEX1JFQUNUSVZFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBndWFyZFJlYWN0aXZlUHJvcHNgIDogYGApO1xyXG5jb25zdCBUT19IQU5ETEVSUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9IYW5kbGVyc2AgOiBgYCk7XHJcbmNvbnN0IENBTUVMSVpFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjYW1lbGl6ZWAgOiBgYCk7XHJcbmNvbnN0IENBUElUQUxJWkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNhcGl0YWxpemVgIDogYGApO1xyXG5jb25zdCBUT19IQU5ETEVSX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9IYW5kbGVyS2V5YCA6IGBgKTtcclxuY29uc3QgU0VUX0JMT0NLX1RSQUNLSU5HID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBzZXRCbG9ja1RyYWNraW5nYCA6IGBgKTtcclxuY29uc3QgUFVTSF9TQ09QRV9JRCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcHVzaFNjb3BlSWRgIDogYGApO1xyXG5jb25zdCBQT1BfU0NPUEVfSUQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHBvcFNjb3BlSWRgIDogYGApO1xyXG5jb25zdCBXSVRIX0NUWCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aEN0eGAgOiBgYCk7XHJcbmNvbnN0IFVOUkVGID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB1bnJlZmAgOiBgYCk7XHJcbmNvbnN0IElTX1JFRiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgaXNSZWZgIDogYGApO1xyXG5jb25zdCBXSVRIX01FTU8gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhNZW1vYCA6IGBgKTtcclxuY29uc3QgSVNfTUVNT19TQU1FID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBpc01lbW9TYW1lYCA6IGBgKTtcclxuLy8gTmFtZSBtYXBwaW5nIGZvciBydW50aW1lIGhlbHBlcnMgdGhhdCBuZWVkIHRvIGJlIGltcG9ydGVkIGZyb20gJ3Z1ZScgaW5cclxuLy8gZ2VuZXJhdGVkIGNvZGUuIE1ha2Ugc3VyZSB0aGVzZSBhcmUgY29ycmVjdGx5IGV4cG9ydGVkIGluIHRoZSBydW50aW1lIVxyXG4vLyBVc2luZyBgYW55YCBoZXJlIGJlY2F1c2UgVFMgZG9lc24ndCBhbGxvdyBzeW1ib2xzIGFzIGluZGV4IHR5cGUuXHJcbmNvbnN0IGhlbHBlck5hbWVNYXAgPSB7XHJcbiAgICBbRlJBR01FTlRdOiBgRnJhZ21lbnRgLFxyXG4gICAgW1RFTEVQT1JUXTogYFRlbGVwb3J0YCxcclxuICAgIFtTVVNQRU5TRV06IGBTdXNwZW5zZWAsXHJcbiAgICBbS0VFUF9BTElWRV06IGBLZWVwQWxpdmVgLFxyXG4gICAgW0JBU0VfVFJBTlNJVElPTl06IGBCYXNlVHJhbnNpdGlvbmAsXHJcbiAgICBbT1BFTl9CTE9DS106IGBvcGVuQmxvY2tgLFxyXG4gICAgW0NSRUFURV9CTE9DS106IGBjcmVhdGVCbG9ja2AsXHJcbiAgICBbQ1JFQVRFX0VMRU1FTlRfQkxPQ0tdOiBgY3JlYXRlRWxlbWVudEJsb2NrYCxcclxuICAgIFtDUkVBVEVfVk5PREVdOiBgY3JlYXRlVk5vZGVgLFxyXG4gICAgW0NSRUFURV9FTEVNRU5UX1ZOT0RFXTogYGNyZWF0ZUVsZW1lbnRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX0NPTU1FTlRdOiBgY3JlYXRlQ29tbWVudFZOb2RlYCxcclxuICAgIFtDUkVBVEVfVEVYVF06IGBjcmVhdGVUZXh0Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9TVEFUSUNdOiBgY3JlYXRlU3RhdGljVk5vZGVgLFxyXG4gICAgW1JFU09MVkVfQ09NUE9ORU5UXTogYHJlc29sdmVDb21wb25lbnRgLFxyXG4gICAgW1JFU09MVkVfRFlOQU1JQ19DT01QT05FTlRdOiBgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnRgLFxyXG4gICAgW1JFU09MVkVfRElSRUNUSVZFXTogYHJlc29sdmVEaXJlY3RpdmVgLFxyXG4gICAgW1JFU09MVkVfRklMVEVSXTogYHJlc29sdmVGaWx0ZXJgLFxyXG4gICAgW1dJVEhfRElSRUNUSVZFU106IGB3aXRoRGlyZWN0aXZlc2AsXHJcbiAgICBbUkVOREVSX0xJU1RdOiBgcmVuZGVyTGlzdGAsXHJcbiAgICBbUkVOREVSX1NMT1RdOiBgcmVuZGVyU2xvdGAsXHJcbiAgICBbQ1JFQVRFX1NMT1RTXTogYGNyZWF0ZVNsb3RzYCxcclxuICAgIFtUT19ESVNQTEFZX1NUUklOR106IGB0b0Rpc3BsYXlTdHJpbmdgLFxyXG4gICAgW01FUkdFX1BST1BTXTogYG1lcmdlUHJvcHNgLFxyXG4gICAgW05PUk1BTElaRV9DTEFTU106IGBub3JtYWxpemVDbGFzc2AsXHJcbiAgICBbTk9STUFMSVpFX1NUWUxFXTogYG5vcm1hbGl6ZVN0eWxlYCxcclxuICAgIFtOT1JNQUxJWkVfUFJPUFNdOiBgbm9ybWFsaXplUHJvcHNgLFxyXG4gICAgW0dVQVJEX1JFQUNUSVZFX1BST1BTXTogYGd1YXJkUmVhY3RpdmVQcm9wc2AsXHJcbiAgICBbVE9fSEFORExFUlNdOiBgdG9IYW5kbGVyc2AsXHJcbiAgICBbQ0FNRUxJWkVdOiBgY2FtZWxpemVgLFxyXG4gICAgW0NBUElUQUxJWkVdOiBgY2FwaXRhbGl6ZWAsXHJcbiAgICBbVE9fSEFORExFUl9LRVldOiBgdG9IYW5kbGVyS2V5YCxcclxuICAgIFtTRVRfQkxPQ0tfVFJBQ0tJTkddOiBgc2V0QmxvY2tUcmFja2luZ2AsXHJcbiAgICBbUFVTSF9TQ09QRV9JRF06IGBwdXNoU2NvcGVJZGAsXHJcbiAgICBbUE9QX1NDT1BFX0lEXTogYHBvcFNjb3BlSWRgLFxyXG4gICAgW1dJVEhfQ1RYXTogYHdpdGhDdHhgLFxyXG4gICAgW1VOUkVGXTogYHVucmVmYCxcclxuICAgIFtJU19SRUZdOiBgaXNSZWZgLFxyXG4gICAgW1dJVEhfTUVNT106IGB3aXRoTWVtb2AsXHJcbiAgICBbSVNfTUVNT19TQU1FXTogYGlzTWVtb1NhbWVgXHJcbn07XHJcbmZ1bmN0aW9uIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMoaGVscGVycykge1xyXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhoZWxwZXJzKS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgIGhlbHBlck5hbWVNYXBbc10gPSBoZWxwZXJzW3NdO1xyXG4gICAgfSk7XHJcbn1cblxuLy8gQVNUIFV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU29tZSBleHByZXNzaW9ucywgZS5nLiBzZXF1ZW5jZSBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMsIGFyZSBuZXZlclxyXG4vLyBhc3NvY2lhdGVkIHdpdGggdGVtcGxhdGUgbm9kZXMsIHNvIHRoZWlyIHNvdXJjZSBsb2NhdGlvbnMgYXJlIGp1c3QgYSBzdHViLlxyXG4vLyBDb250YWluZXIgdHlwZXMgbGlrZSBDb21wb3VuZEV4cHJlc3Npb24gYWxzbyBkb24ndCBuZWVkIGEgcmVhbCBsb2NhdGlvbi5cclxuY29uc3QgbG9jU3R1YiA9IHtcclxuICAgIHNvdXJjZTogJycsXHJcbiAgICBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9LFxyXG4gICAgZW5kOiB7IGxpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwIH1cclxufTtcclxuZnVuY3Rpb24gY3JlYXRlUm9vdChjaGlsZHJlbiwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAwIC8qIE5vZGVUeXBlcy5ST09UICovLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIGhlbHBlcnM6IFtdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IFtdLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IFtdLFxyXG4gICAgICAgIGhvaXN0czogW10sXHJcbiAgICAgICAgaW1wb3J0czogW10sXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIHRlbXBzOiAwLFxyXG4gICAgICAgIGNvZGVnZW5Ob2RlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCB0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIGRpcmVjdGl2ZXMsIGlzQmxvY2sgPSBmYWxzZSwgZGlzYWJsZVRyYWNraW5nID0gZmFsc2UsIGlzQ29tcG9uZW50ID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFdJVEhfRElSRUNUSVZFUyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLyxcclxuICAgICAgICB0YWcsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkaXJlY3RpdmVzLFxyXG4gICAgICAgIGlzQmxvY2ssXHJcbiAgICAgICAgZGlzYWJsZVRyYWNraW5nLFxyXG4gICAgICAgIGlzQ29tcG9uZW50LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZWxlbWVudHMsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGVsZW1lbnRzXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcGVydGllcywgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIHByb3BlcnRpZXNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCB2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNiAvKiBOb2RlVHlwZXMuSlNfUFJPUEVSVFkgKi8sXHJcbiAgICAgICAgbG9jOiBsb2NTdHViLFxyXG4gICAgICAgIGtleTogaXNTdHJpbmcoa2V5KSA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oa2V5LCB0cnVlKSA6IGtleSxcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGlzU3RhdGljID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIsIGNvbnN0VHlwZSA9IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgaXNTdGF0aWMsXHJcbiAgICAgICAgY29uc3RUeXBlOiBpc1N0YXRpYyA/IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovIDogY29uc3RUeXBlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUludGVycG9sYXRpb24oY29udGVudCwgbG9jKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNvbnRlbnQ6IGlzU3RyaW5nKGNvbnRlbnQpXHJcbiAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBmYWxzZSwgbG9jKVxyXG4gICAgICAgICAgICA6IGNvbnRlbnRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKGNoaWxkcmVuLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNoaWxkcmVuXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNhbGxlZSwgYXJncyA9IFtdLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNhbGxlZSxcclxuICAgICAgICBhcmd1bWVudHM6IGFyZ3NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHBhcmFtcywgcmV0dXJucyA9IHVuZGVmaW5lZCwgbmV3bGluZSA9IGZhbHNlLCBpc1Nsb3QgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOCAvKiBOb2RlVHlwZXMuSlNfRlVOQ1RJT05fRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgcmV0dXJucyxcclxuICAgICAgICBuZXdsaW5lLFxyXG4gICAgICAgIGlzU2xvdCxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgbmV3bGluZSA9IHRydWUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgdGVzdCxcclxuICAgICAgICBjb25zZXF1ZW50LFxyXG4gICAgICAgIGFsdGVybmF0ZSxcclxuICAgICAgICBuZXdsaW5lLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDYWNoZUV4cHJlc3Npb24oaW5kZXgsIHZhbHVlLCBpc1ZOb2RlID0gZmFsc2UpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgaXNWTm9kZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYm9keSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMSAvKiBOb2RlVHlwZXMuSlNfQkxPQ0tfU1RBVEVNRU5UICovLFxyXG4gICAgICAgIGJvZHksXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlTGl0ZXJhbChlbGVtZW50cykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMiAvKiBOb2RlVHlwZXMuSlNfVEVNUExBVEVfTElURVJBTCAqLyxcclxuICAgICAgICBlbGVtZW50cyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIzIC8qIE5vZGVUeXBlcy5KU19JRl9TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgdGVzdCxcclxuICAgICAgICBjb25zZXF1ZW50LFxyXG4gICAgICAgIGFsdGVybmF0ZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24obGVmdCwgcmlnaHQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjQgLyogTm9kZVR5cGVzLkpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsZWZ0LFxyXG4gICAgICAgIHJpZ2h0LFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24oZXhwcmVzc2lvbnMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjUgLyogTm9kZVR5cGVzLkpTX1NFUVVFTkNFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgZXhwcmVzc2lvbnMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJldHVyblN0YXRlbWVudChyZXR1cm5zKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDI2IC8qIE5vZGVUeXBlcy5KU19SRVRVUk5fU1RBVEVNRU5UICovLFxyXG4gICAgICAgIHJldHVybnMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IGlzU3RhdGljRXhwID0gKHApID0+IHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgcC5pc1N0YXRpYztcclxuY29uc3QgaXNCdWlsdEluVHlwZSA9ICh0YWcsIGV4cGVjdGVkKSA9PiB0YWcgPT09IGV4cGVjdGVkIHx8IHRhZyA9PT0gaHlwaGVuYXRlKGV4cGVjdGVkKTtcclxuZnVuY3Rpb24gaXNDb3JlQ29tcG9uZW50KHRhZykge1xyXG4gICAgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnVGVsZXBvcnQnKSkge1xyXG4gICAgICAgIHJldHVybiBURUxFUE9SVDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnU3VzcGVuc2UnKSkge1xyXG4gICAgICAgIHJldHVybiBTVVNQRU5TRTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnS2VlcEFsaXZlJykpIHtcclxuICAgICAgICByZXR1cm4gS0VFUF9BTElWRTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnQmFzZVRyYW5zaXRpb24nKSkge1xyXG4gICAgICAgIHJldHVybiBCQVNFX1RSQU5TSVRJT047XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgbm9uSWRlbnRpZmllclJFID0gL15cXGR8W15cXCRcXHddLztcclxuY29uc3QgaXNTaW1wbGVJZGVudGlmaWVyID0gKG5hbWUpID0+ICFub25JZGVudGlmaWVyUkUudGVzdChuYW1lKTtcclxuY29uc3QgdmFsaWRGaXJzdElkZW50Q2hhclJFID0gL1tBLVphLXpfJFxceEEwLVxcdUZGRkZdLztcclxuY29uc3QgdmFsaWRJZGVudENoYXJSRSA9IC9bXFwuXFw/XFx3JFxceEEwLVxcdUZGRkZdLztcclxuY29uc3Qgd2hpdGVzcGFjZVJFID0gL1xccytbLltdXFxzKnxcXHMqWy5bXVxccysvZztcclxuLyoqXHJcbiAqIFNpbXBsZSBsZXhlciB0byBjaGVjayBpZiBhbiBleHByZXNzaW9uIGlzIGEgbWVtYmVyIGV4cHJlc3Npb24uIFRoaXMgaXNcclxuICogbGF4IGFuZCBvbmx5IGNoZWNrcyB2YWxpZGl0eSBhdCB0aGUgcm9vdCBsZXZlbCAoaS5lLiBkb2VzIG5vdCB2YWxpZGF0ZSBleHBzXHJcbiAqIGluc2lkZSBzcXVhcmUgYnJhY2tldHMpLCBidXQgaXQncyBvayBzaW5jZSB0aGVzZSBhcmUgb25seSB1c2VkIG9uIHRlbXBsYXRlXHJcbiAqIGV4cHJlc3Npb25zIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIGludmFsaWQgZXhwcmVzc2lvbnMgaW4gdGhlIGZpcnN0IHBsYWNlLlxyXG4gKi9cclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlciA9IChwYXRoKSA9PiB7XHJcbiAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYXJvdW5kIC4gb3IgWyBmaXJzdFxyXG4gICAgcGF0aCA9IHBhdGgudHJpbSgpLnJlcGxhY2Uod2hpdGVzcGFjZVJFLCBzID0+IHMudHJpbSgpKTtcclxuICAgIGxldCBzdGF0ZSA9IDAgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5NZW1iZXJFeHAgKi87XHJcbiAgICBsZXQgc3RhdGVTdGFjayA9IFtdO1xyXG4gICAgbGV0IGN1cnJlbnRPcGVuQnJhY2tldENvdW50ID0gMDtcclxuICAgIGxldCBjdXJyZW50T3BlblBhcmVuc0NvdW50ID0gMDtcclxuICAgIGxldCBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGFyID0gcGF0aC5jaGFyQXQoaSk7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgICAgICBjYXNlIDAgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5NZW1iZXJFeHAgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJ1snKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDEgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5CcmFja2V0cyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gJygnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5QYXJlbnMgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5QYXJlbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIShpID09PSAwID8gdmFsaWRGaXJzdElkZW50Q2hhclJFIDogdmFsaWRJZGVudENoYXJSRSkudGVzdChjaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5CcmFja2V0cyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBgJ2AgfHwgY2hhciA9PT0gYFwiYCB8fCBjaGFyID09PSAnYCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMyAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblN0cmluZyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IGNoYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgW2ApIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYF1gKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWN1cnJlbnRPcGVuQnJhY2tldENvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyIC8qIE1lbWJlckV4cExleFN0YXRlLmluUGFyZW5zICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09ICdgJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzIC8qIE1lbWJlckV4cExleFN0YXRlLmluU3RyaW5nICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGAoYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuUGFyZW5zQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGApYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBleHAgZW5kcyBhcyBhIGNhbGwgdGhlbiBpdCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgdmFsaWRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcGF0aC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWN1cnJlbnRPcGVuUGFyZW5zQ291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDMgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5TdHJpbmcgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gY3VycmVudFN0cmluZ1R5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICFjdXJyZW50T3BlbkJyYWNrZXRDb3VudCAmJiAhY3VycmVudE9wZW5QYXJlbnNDb3VudDtcclxufTtcclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uTm9kZSA9IE5PT1BcclxuICAgIDtcclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uID0gaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlclxyXG4gICAgO1xyXG5mdW5jdGlvbiBnZXRJbm5lclJhbmdlKGxvYywgb2Zmc2V0LCBsZW5ndGgpIHtcclxuICAgIGNvbnN0IHNvdXJjZSA9IGxvYy5zb3VyY2Uuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpO1xyXG4gICAgY29uc3QgbmV3TG9jID0ge1xyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICBzdGFydDogYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKGxvYy5zdGFydCwgbG9jLnNvdXJjZSwgb2Zmc2V0KSxcclxuICAgICAgICBlbmQ6IGxvYy5lbmRcclxuICAgIH07XHJcbiAgICBpZiAobGVuZ3RoICE9IG51bGwpIHtcclxuICAgICAgICBuZXdMb2MuZW5kID0gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKGxvYy5zdGFydCwgbG9jLnNvdXJjZSwgb2Zmc2V0ICsgbGVuZ3RoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdMb2M7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHBvcywgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMgPSBzb3VyY2UubGVuZ3RoKSB7XHJcbiAgICByZXR1cm4gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGV4dGVuZCh7fSwgcG9zKSwgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbi8vIGFkdmFuY2UgYnkgbXV0YXRpb24gd2l0aG91dCBjbG9uaW5nIChmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyksIHNpbmNlIHRoaXNcclxuLy8gZ2V0cyBjYWxsZWQgYSBsb3QgaW4gdGhlIHBhcnNlclxyXG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24ocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIGxldCBsaW5lc0NvdW50ID0gMDtcclxuICAgIGxldCBsYXN0TmV3TGluZVBvcyA9IC0xO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYXJhY3RlcnM7IGkrKykge1xyXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpKSA9PT0gMTAgLyogbmV3bGluZSBjaGFyIGNvZGUgKi8pIHtcclxuICAgICAgICAgICAgbGluZXNDb3VudCsrO1xyXG4gICAgICAgICAgICBsYXN0TmV3TGluZVBvcyA9IGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcG9zLm9mZnNldCArPSBudW1iZXJPZkNoYXJhY3RlcnM7XHJcbiAgICBwb3MubGluZSArPSBsaW5lc0NvdW50O1xyXG4gICAgcG9zLmNvbHVtbiA9XHJcbiAgICAgICAgbGFzdE5ld0xpbmVQb3MgPT09IC0xXHJcbiAgICAgICAgICAgID8gcG9zLmNvbHVtbiArIG51bWJlck9mQ2hhcmFjdGVyc1xyXG4gICAgICAgICAgICA6IG51bWJlck9mQ2hhcmFjdGVycyAtIGxhc3ROZXdMaW5lUG9zO1xyXG4gICAgcmV0dXJuIHBvcztcclxufVxyXG5mdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtc2cpIHtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKCFjb25kaXRpb24pIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8IGB1bmV4cGVjdGVkIGNvbXBpbGVyIGNvbmRpdGlvbmApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZpbmREaXIobm9kZSwgbmFtZSwgYWxsb3dFbXB0eSA9IGZhbHNlKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgKGFsbG93RW1wdHkgfHwgcC5leHApICYmXHJcbiAgICAgICAgICAgIChpc1N0cmluZyhuYW1lKSA/IHAubmFtZSA9PT0gbmFtZSA6IG5hbWUudGVzdChwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmluZFByb3Aobm9kZSwgbmFtZSwgZHluYW1pY09ubHkgPSBmYWxzZSwgYWxsb3dFbXB0eSA9IGZhbHNlKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNPbmx5KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09IG5hbWUgJiYgKHAudmFsdWUgfHwgYWxsb3dFbXB0eSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgICAgIChwLmV4cCB8fCBhbGxvd0VtcHR5KSAmJlxyXG4gICAgICAgICAgICBpc1N0YXRpY0FyZ09mKHAuYXJnLCBuYW1lKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdGF0aWNBcmdPZihhcmcsIG5hbWUpIHtcclxuICAgIHJldHVybiAhIShhcmcgJiYgaXNTdGF0aWNFeHAoYXJnKSAmJiBhcmcuY29udGVudCA9PT0gbmFtZSk7XHJcbn1cclxuZnVuY3Rpb24gaGFzRHluYW1pY0tleVZCaW5kKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgIHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgKCFwLmFyZyB8fCAvLyB2LWJpbmQ9XCJvYmpcIlxyXG4gICAgICAgICAgICBwLmFyZy50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fCAvLyB2LWJpbmQ6W19jdHguZm9vXVxyXG4gICAgICAgICAgICAhcC5hcmcuaXNTdGF0aWMpIC8vIHYtYmluZDpbZm9vXVxyXG4gICAgKTtcclxufVxyXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyB8fCBub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi87XHJcbn1cclxuZnVuY3Rpb24gaXNWU2xvdChwKSB7XHJcbiAgICByZXR1cm4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnc2xvdCc7XHJcbn1cclxuZnVuY3Rpb24gaXNUZW1wbGF0ZU5vZGUobm9kZSkge1xyXG4gICAgcmV0dXJuIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgbm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLyk7XHJcbn1cclxuZnVuY3Rpb24gaXNTbG90T3V0bGV0KG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgbm9kZS50YWdUeXBlID09PSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovO1xyXG59XHJcbmZ1bmN0aW9uIGdldFZOb2RlSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfVk5PREUgOiBDUkVBVEVfRUxFTUVOVF9WTk9ERTtcclxufVxyXG5mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfQkxPQ0sgOiBDUkVBVEVfRUxFTUVOVF9CTE9DSztcclxufVxyXG5jb25zdCBwcm9wc0hlbHBlclNldCA9IG5ldyBTZXQoW05PUk1BTElaRV9QUk9QUywgR1VBUkRfUkVBQ1RJVkVfUFJPUFNdKTtcclxuZnVuY3Rpb24gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMsIGNhbGxQYXRoID0gW10pIHtcclxuICAgIGlmIChwcm9wcyAmJlxyXG4gICAgICAgICFpc1N0cmluZyhwcm9wcykgJiZcclxuICAgICAgICBwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbGVlID0gcHJvcHMuY2FsbGVlO1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcoY2FsbGVlKSAmJiBwcm9wc0hlbHBlclNldC5oYXMoY2FsbGVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMuYXJndW1lbnRzWzBdLCBjYWxsUGF0aC5jb25jYXQocHJvcHMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3Byb3BzLCBjYWxsUGF0aF07XHJcbn1cclxuZnVuY3Rpb24gaW5qZWN0UHJvcChub2RlLCBwcm9wLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBtZXJnZVByb3BzKC4uLilcclxuICAgICAqIDIuIHRvSGFuZGxlcnMoLi4uKVxyXG4gICAgICogMy4gbm9ybWFsaXplUHJvcHMoLi4uKVxyXG4gICAgICogNC4gbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKC4uLikpXHJcbiAgICAgKlxyXG4gICAgICogd2UgbmVlZCB0byBnZXQgdGhlIHJlYWwgcHJvcHMgYmVmb3JlIG5vcm1hbGl6YXRpb25cclxuICAgICAqL1xyXG4gICAgbGV0IHByb3BzID0gbm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLyA/IG5vZGUucHJvcHMgOiBub2RlLmFyZ3VtZW50c1syXTtcclxuICAgIGxldCBjYWxsUGF0aCA9IFtdO1xyXG4gICAgbGV0IHBhcmVudENhbGw7XHJcbiAgICBpZiAocHJvcHMgJiZcclxuICAgICAgICAhaXNTdHJpbmcocHJvcHMpICYmXHJcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGdldFVubm9ybWFsaXplZFByb3BzKHByb3BzKTtcclxuICAgICAgICBwcm9wcyA9IHJldFswXTtcclxuICAgICAgICBjYWxsUGF0aCA9IHJldFsxXTtcclxuICAgICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMgPT0gbnVsbCB8fCBpc1N0cmluZyhwcm9wcykpIHtcclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgLy8gbWVyZ2VkIHByb3BzLi4uIGFkZCBvdXJzXHJcbiAgICAgICAgLy8gb25seSBpbmplY3Qga2V5IHRvIG9iamVjdCBsaXRlcmFsIGlmIGl0J3MgdGhlIGZpcnN0IGFyZ3VtZW50IHNvIHRoYXRcclxuICAgICAgICAvLyBpZiBkb2Vzbid0IG92ZXJyaWRlIHVzZXIgcHJvdmlkZWQga2V5c1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gcHJvcHMuYXJndW1lbnRzWzBdO1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcoZmlyc3QpICYmIGZpcnN0LnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBmaXJzdC5wcm9wZXJ0aWVzLnVuc2hpZnQocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocHJvcHMuY2FsbGVlID09PSBUT19IQU5ETEVSUykge1xyXG4gICAgICAgICAgICAgICAgLy8gIzIzNjZcclxuICAgICAgICAgICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc1xyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5hcmd1bWVudHMudW5zaGlmdChjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICFwcm9wc1dpdGhJbmplY3Rpb24gJiYgKHByb3BzV2l0aEluamVjdGlvbiA9IHByb3BzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGxldCBhbHJlYWR5RXhpc3RzID0gZmFsc2U7XHJcbiAgICAgICAgLy8gY2hlY2sgZXhpc3Rpbmcga2V5IHRvIGF2b2lkIG92ZXJyaWRpbmcgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgaWYgKHByb3Aua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BLZXlOYW1lID0gcHJvcC5rZXkuY29udGVudDtcclxuICAgICAgICAgICAgYWxyZWFkeUV4aXN0cyA9IHByb3BzLnByb3BlcnRpZXMuc29tZShwID0+IHAua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgICAgICBwLmtleS5jb250ZW50ID09PSBwcm9wS2V5TmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xyXG4gICAgICAgICAgICBwcm9wcy5wcm9wZXJ0aWVzLnVuc2hpZnQocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc2luZ2xlIHYtYmluZCB3aXRoIGV4cHJlc3Npb24sIHJldHVybiBhIG1lcmdlZCByZXBsYWNlbWVudFxyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSksXHJcbiAgICAgICAgICAgIHByb3BzXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGhlbHBlciBjYWxsLCBlLmcuIGBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpKWAsXHJcbiAgICAgICAgLy8gaXQgd2lsbCBiZSByZXdyaXR0ZW4gYXMgYG5vcm1hbGl6ZVByb3BzKG1lcmdlUHJvcHMoeyBrZXk6IDAgfSwgcHJvcHMpKWAsXHJcbiAgICAgICAgLy8gdGhlIGBndWFyZFJlYWN0aXZlUHJvcHNgIHdpbGwgbm8gbG9uZ2VyIGJlIG5lZWRlZFxyXG4gICAgICAgIGlmIChwYXJlbnRDYWxsICYmIHBhcmVudENhbGwuY2FsbGVlID09PSBHVUFSRF9SRUFDVElWRV9QUk9QUykge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsLmFyZ3VtZW50c1swXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUucHJvcHMgPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbC5hcmd1bWVudHNbMF0gPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlLmFyZ3VtZW50c1syXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdG9WYWxpZEFzc2V0SWQobmFtZSwgdHlwZSkge1xyXG4gICAgLy8gc2VlIGlzc3VlIzQ0MjIsIHdlIG5lZWQgYWRkaW5nIGlkZW50aWZpZXIgb24gdmFsaWRBc3NldElkIGlmIHZhcmlhYmxlIGBuYW1lYCBoYXMgc3BlY2lmaWMgY2hhcmFjdGVyXHJcbiAgICByZXR1cm4gYF8ke3R5cGV9XyR7bmFtZS5yZXBsYWNlKC9bXlxcd10vZywgKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gc2VhcmNoVmFsdWUgPT09ICctJyA/ICdfJyA6IG5hbWUuY2hhckNvZGVBdChyZXBsYWNlVmFsdWUpLnRvU3RyaW5nKCk7XHJcbiAgICB9KX1gO1xyXG59XHJcbi8vIENoZWNrIGlmIGEgbm9kZSBjb250YWlucyBleHByZXNzaW9ucyB0aGF0IHJlZmVyZW5jZSBjdXJyZW50IGNvbnRleHQgc2NvcGUgaWRzXHJcbmZ1bmN0aW9uIGhhc1Njb3BlUmVmKG5vZGUsIGlkcykge1xyXG4gICAgaWYgKCFub2RlIHx8IE9iamVjdC5rZXlzKGlkcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGFzU2NvcGVSZWYocC5hcmcsIGlkcykgfHwgaGFzU2NvcGVSZWYocC5leHAsIGlkcykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuc291cmNlLCBpZHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYnJhbmNoZXMuc29tZShiID0+IGhhc1Njb3BlUmVmKGIsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuY29uZGl0aW9uLCBpZHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuICghbm9kZS5pc1N0YXRpYyAmJlxyXG4gICAgICAgICAgICAgICAgaXNTaW1wbGVJZGVudGlmaWVyKG5vZGUuY29udGVudCkgJiZcclxuICAgICAgICAgICAgICAgICEhaWRzW25vZGUuY29udGVudF0pO1xyXG4gICAgICAgIGNhc2UgOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGlzT2JqZWN0KGMpICYmIGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBoYXNTY29wZVJlZihub2RlLmNvbnRlbnQsIGlkcyk7XHJcbiAgICAgICAgY2FzZSAyIC8qIE5vZGVUeXBlcy5URVhUICovOlxyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIDtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldE1lbW9lZFZOb2RlQ2FsbChub2RlKSB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovICYmIG5vZGUuY2FsbGVlID09PSBXSVRIX01FTU8pIHtcclxuICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHNbMV0ucmV0dXJucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG1ha2VCbG9jayhub2RlLCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyLCBpblNTUiB9KSB7XHJcbiAgICBpZiAoIW5vZGUuaXNCbG9jaykge1xyXG4gICAgICAgIG5vZGUuaXNCbG9jayA9IHRydWU7XHJcbiAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgaGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgIGhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgZGVwcmVjYXRpb25EYXRhID0ge1xyXG4gICAgW1wiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBQbGF0Zm9ybS1uYXRpdmUgZWxlbWVudHMgd2l0aCBcImlzXCIgcHJvcCB3aWxsIG5vIGxvbmdlciBiZSBgICtcclxuICAgICAgICAgICAgYHRyZWF0ZWQgYXMgY29tcG9uZW50cyBpbiBWdWUgMyB1bmxlc3MgdGhlIFwiaXNcIiB2YWx1ZSBpcyBleHBsaWNpdGx5IGAgK1xyXG4gICAgICAgICAgICBgcHJlZml4ZWQgd2l0aCBcInZ1ZTpcIi5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9jdXN0b20tZWxlbWVudHMtaW50ZXJvcC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9TWU5DICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGtleSA9PiBgLnN5bmMgbW9kaWZpZXIgZm9yIHYtYmluZCBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugdi1tb2RlbCB3aXRoIGAgK1xyXG4gICAgICAgICAgICBgYXJndW1lbnQgaW5zdGVhZC4gXFxgdi1iaW5kOiR7a2V5fS5zeW5jXFxgIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGAgK1xyXG4gICAgICAgICAgICBgXFxgdi1tb2RlbDoke2tleX1cXGAuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1tb2RlbC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9QUk9QXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9QUk9QICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGAucHJvcCBtb2RpZmllciBmb3Igdi1iaW5kIGhhcyBiZWVuIHJlbW92ZWQgYW5kIG5vIGxvbmdlciBuZWNlc3NhcnkuIGAgK1xyXG4gICAgICAgICAgICBgVnVlIDMgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCBhIGJpbmRpbmcgYXMgRE9NIHByb3BlcnR5IHdoZW4gYXBwcm9wcmlhdGUuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgdi1iaW5kPVwib2JqXCIgdXNhZ2UgaXMgbm93IG9yZGVyIHNlbnNpdGl2ZSBhbmQgYmVoYXZlcyBsaWtlIEphdmFTY3JpcHQgYCArXHJcbiAgICAgICAgICAgIGBvYmplY3Qgc3ByZWFkOiBpdCB3aWxsIG5vdyBvdmVyd3JpdGUgYW4gZXhpc3Rpbmcgbm9uLW1lcmdlYWJsZSBhdHRyaWJ1dGUgYCArXHJcbiAgICAgICAgICAgIGB0aGF0IGFwcGVhcnMgYmVmb3JlIHYtYmluZCBpbiB0aGUgY2FzZSBvZiBjb25mbGljdC4gYCArXHJcbiAgICAgICAgICAgIGBUbyByZXRhaW4gMi54IGJlaGF2aW9yLCBtb3ZlIHYtYmluZCB0byBtYWtlIGl0IHRoZSBmaXJzdCBhdHRyaWJ1dGUuIGAgK1xyXG4gICAgICAgICAgICBgWW91IGNhbiBhbHNvIHN1cHByZXNzIHRoaXMgd2FybmluZyBpZiB0aGUgdXNhZ2UgaXMgaW50ZW5kZWQuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1iaW5kLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9PTl9OQVRJVkVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9PTl9OQVRJVkUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYC5uYXRpdmUgbW9kaWZpZXIgZm9yIHYtb24gaGFzIGJlZW4gcmVtb3ZlZCBhcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3Ytb24tbmF0aXZlLW1vZGlmaWVyLXJlbW92ZWQuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWlmIC8gdi1mb3IgcHJlY2VkZW5jZSB3aGVuIHVzZWQgb24gdGhlIHNhbWUgZWxlbWVudCBoYXMgY2hhbmdlZCBgICtcclxuICAgICAgICAgICAgYGluIFZ1ZSAzOiB2LWlmIG5vdyB0YWtlcyBoaWdoZXIgcHJlY2VkZW5jZSBhbmQgd2lsbCBubyBsb25nZXIgaGF2ZSBgICtcclxuICAgICAgICAgICAgYGFjY2VzcyB0byB2LWZvciBzY29wZSB2YXJpYWJsZXMuIEl0IGlzIGJlc3QgdG8gYXZvaWQgdGhlIGFtYmlndWl0eSBgICtcclxuICAgICAgICAgICAgYHdpdGggPHRlbXBsYXRlPiB0YWdzIG9yIHVzZSBhIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgZmlsdGVycyB2LWZvciBgICtcclxuICAgICAgICAgICAgYGRhdGEgc291cmNlLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtaWYtdi1mb3IuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGA8dGVtcGxhdGU+IHdpdGggbm8gc3BlY2lhbCBkaXJlY3RpdmVzIHdpbGwgcmVuZGVyIGFzIGEgbmF0aXZlIHRlbXBsYXRlIGAgK1xyXG4gICAgICAgICAgICBgZWxlbWVudCBpbnN0ZWFkIG9mIGl0cyBpbm5lciBjb250ZW50IGluIFZ1ZSAzLmBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBcImlubGluZS10ZW1wbGF0ZVwiIGhhcyBiZWVuIHJlbW92ZWQgaW4gVnVlIDMuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvaW5saW5lLXRlbXBsYXRlLWF0dHJpYnV0ZS5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9GSUxURVJTICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBmaWx0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLiBgICtcclxuICAgICAgICAgICAgYFRoZSBcInxcIiBzeW1ib2wgd2lsbCBiZSB0cmVhdGVkIGFzIG5hdGl2ZSBKYXZhU2NyaXB0IGJpdHdpc2UgT1Igb3BlcmF0b3IuIGAgK1xyXG4gICAgICAgICAgICBgVXNlIG1ldGhvZCBjYWxscyBvciBjb21wdXRlZCBwcm9wZXJ0aWVzIGluc3RlYWQuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvZmlsdGVycy5odG1sYFxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRleHQub3B0aW9uc1xyXG4gICAgICAgID8gY29udGV4dC5vcHRpb25zLmNvbXBhdENvbmZpZ1xyXG4gICAgICAgIDogY29udGV4dC5jb21wYXRDb25maWc7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZyAmJiBjb25maWdba2V5XTtcclxuICAgIGlmIChrZXkgPT09ICdNT0RFJykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSB8fCAzOyAvLyBjb21waWxlciBkZWZhdWx0cyB0byB2MyBiZWhhdmlvclxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb21wYXRWYWx1ZSgnTU9ERScsIGNvbnRleHQpO1xyXG4gICAgY29uc3QgdmFsdWUgPSBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpO1xyXG4gICAgLy8gaW4gdjMgbW9kZSwgb25seSBlbmFibGUgaWYgZXhwbGljaXRseSBzZXQgdG8gdHJ1ZVxyXG4gICAgLy8gb3RoZXJ3aXNlIGVuYWJsZSBmb3IgYW55IG5vbi1mYWxzZSB2YWx1ZVxyXG4gICAgcmV0dXJuIG1vZGUgPT09IDMgPyB2YWx1ZSA9PT0gdHJ1ZSA6IHZhbHVlICE9PSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBjaGVja0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGVuYWJsZWQgPSBpc0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0KTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZW5hYmxlZCkge1xyXG4gICAgICAgIHdhcm5EZXByZWNhdGlvbihrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5hYmxlZDtcclxufVxyXG5mdW5jdGlvbiB3YXJuRGVwcmVjYXRpb24oa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHZhbCA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XHJcbiAgICBpZiAodmFsID09PSAnc3VwcHJlc3Mtd2FybmluZycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGxpbmsgfSA9IGRlcHJlY2F0aW9uRGF0YVtrZXldO1xyXG4gICAgY29uc3QgbXNnID0gYChkZXByZWNhdGlvbiAke2tleX0pICR7dHlwZW9mIG1lc3NhZ2UgPT09ICdmdW5jdGlvbicgPyBtZXNzYWdlKC4uLmFyZ3MpIDogbWVzc2FnZX0ke2xpbmsgPyBgXFxuICBEZXRhaWxzOiAke2xpbmt9YCA6IGBgfWA7XHJcbiAgICBjb25zdCBlcnIgPSBuZXcgU3ludGF4RXJyb3IobXNnKTtcclxuICAgIGVyci5jb2RlID0ga2V5O1xyXG4gICAgaWYgKGxvYylcclxuICAgICAgICBlcnIubG9jID0gbG9jO1xyXG4gICAgY29udGV4dC5vbldhcm4oZXJyKTtcclxufVxuXG4vLyBUaGUgZGVmYXVsdCBkZWNvZGVyIG9ubHkgcHJvdmlkZXMgZXNjYXBlcyBmb3IgY2hhcmFjdGVycyByZXNlcnZlZCBhcyBwYXJ0IG9mXHJcbi8vIHRoZSB0ZW1wbGF0ZSBzeW50YXgsIGFuZCBpcyBvbmx5IHVzZWQgaWYgdGhlIGN1c3RvbSByZW5kZXJlciBkaWQgbm90IHByb3ZpZGVcclxuLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWNvZGVyLlxyXG5jb25zdCBkZWNvZGVSRSA9IC8mKGd0fGx0fGFtcHxhcG9zfHF1b3QpOy9nO1xyXG5jb25zdCBkZWNvZGVNYXAgPSB7XHJcbiAgICBndDogJz4nLFxyXG4gICAgbHQ6ICc8JyxcclxuICAgIGFtcDogJyYnLFxyXG4gICAgYXBvczogXCInXCIsXHJcbiAgICBxdW90OiAnXCInXHJcbn07XHJcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xyXG4gICAgZGVsaW1pdGVyczogW2B7e2AsIGB9fWBdLFxyXG4gICAgZ2V0TmFtZXNwYWNlOiAoKSA9PiAwIC8qIE5hbWVzcGFjZXMuSFRNTCAqLyxcclxuICAgIGdldFRleHRNb2RlOiAoKSA9PiAwIC8qIFRleHRNb2Rlcy5EQVRBICovLFxyXG4gICAgaXNWb2lkVGFnOiBOTyxcclxuICAgIGlzUHJlVGFnOiBOTyxcclxuICAgIGlzQ3VzdG9tRWxlbWVudDogTk8sXHJcbiAgICBkZWNvZGVFbnRpdGllczogKHJhd1RleHQpID0+IHJhd1RleHQucmVwbGFjZShkZWNvZGVSRSwgKF8sIHAxKSA9PiBkZWNvZGVNYXBbcDFdKSxcclxuICAgIG9uRXJyb3I6IGRlZmF1bHRPbkVycm9yLFxyXG4gICAgb25XYXJuOiBkZWZhdWx0T25XYXJuLFxyXG4gICAgY29tbWVudHM6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG59O1xyXG5mdW5jdGlvbiBiYXNlUGFyc2UoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCBvcHRpb25zKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJvb3QocGFyc2VDaGlsZHJlbihjb250ZXh0LCAwIC8qIFRleHRNb2Rlcy5EQVRBICovLCBbXSksIGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCkpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlckNvbnRleHQoY29udGVudCwgcmF3T3B0aW9ucykge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdFBhcnNlck9wdGlvbnMpO1xyXG4gICAgbGV0IGtleTtcclxuICAgIGZvciAoa2V5IGluIHJhd09wdGlvbnMpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgb3B0aW9uc1trZXldID1cclxuICAgICAgICAgICAgcmF3T3B0aW9uc1trZXldID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgID8gZGVmYXVsdFBhcnNlck9wdGlvbnNba2V5XVxyXG4gICAgICAgICAgICAgICAgOiByYXdPcHRpb25zW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgY29sdW1uOiAxLFxyXG4gICAgICAgIGxpbmU6IDEsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIG9yaWdpbmFsU291cmNlOiBjb250ZW50LFxyXG4gICAgICAgIHNvdXJjZTogY29udGVudCxcclxuICAgICAgICBpblByZTogZmFsc2UsXHJcbiAgICAgICAgaW5WUHJlOiBmYWxzZSxcclxuICAgICAgICBvbldhcm46IG9wdGlvbnMub25XYXJuXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICBjb25zdCBucyA9IHBhcmVudCA/IHBhcmVudC5ucyA6IDAgLyogTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcclxuICAgIHdoaWxlICghaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSkge1xyXG4gICAgICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgICAgICBsZXQgbm9kZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAobW9kZSA9PT0gMCAvKiBUZXh0TW9kZXMuREFUQSAqLyB8fCBtb2RlID09PSAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi8pIHtcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiBzdGFydHNXaXRoKHMsIGNvbnRleHQub3B0aW9ucy5kZWxpbWl0ZXJzWzBdKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gJ3t7J1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlSW50ZXJwb2xhdGlvbihjb250ZXh0LCBtb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAwIC8qIFRleHRNb2Rlcy5EQVRBICovICYmIHNbMF0gPT09ICc8Jykge1xyXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RhZy1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi8sIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJyEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI21hcmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJzwhLS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKHMsICc8IURPQ1RZUEUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgRE9DVFlQRSBieSBhIGxpbWl0YXRpb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChzLCAnPCFbQ0RBVEFbJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5zICE9PSAwIC8qIE5hbWVzcGFjZXMuSFRNTCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQ0RBVEEoY29udGV4dCwgYW5jZXN0b3JzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxIC8qIEVycm9yQ29kZXMuQ0RBVEFfSU5fSFRNTF9DT05URU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDExIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfT1BFTkVEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2VuZC10YWctb3Blbi1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzJdID09PSAnPicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE0IC8qIEVycm9yQ29kZXMuTUlTU0lOR19FTkRfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMl0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMyAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FTkRfVEFHICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VUYWcoY29udGV4dCwgMSAvKiBUYWdUeXBlLkVuZCAqLywgcGFyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlRWxlbWVudChjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDIueCA8dGVtcGxhdGU+IHdpdGggbm8gZGlyZWN0aXZlIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovLCBjb250ZXh0KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnID09PSAndGVtcGxhdGUnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLnByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovLCBjb250ZXh0LCBub2RlLmxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICc/Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBwYXJzZVRleHQoY29udGV4dCwgbW9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0FycmF5KG5vZGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcHVzaE5vZGUobm9kZXMsIG5vZGVbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwdXNoTm9kZShub2Rlcywgbm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZyBzdHJhdGVneSBsaWtlIHYyXHJcbiAgICBsZXQgcmVtb3ZlZFdoaXRlc3BhY2UgPSBmYWxzZTtcclxuICAgIGlmIChtb2RlICE9PSAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovICYmIG1vZGUgIT09IDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLykge1xyXG4gICAgICAgIGNvbnN0IHNob3VsZENvbmRlbnNlID0gY29udGV4dC5vcHRpb25zLndoaXRlc3BhY2UgIT09ICdwcmVzZXJ2ZSc7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5pblByZSAmJiBub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmICghL1teXFx0XFxyXFxuXFxmIF0vLnRlc3Qobm9kZS5jb250ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBub2Rlc1tpIC0gMV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5vZGVzW2kgKyAxXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgaWY6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSB0aGUgd2hpdGVzcGFjZSBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlLCBvcjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIChjb25kZW5zZSBtb2RlKSB0aGUgd2hpdGVzcGFjZSBpcyBhZGphY2VudCB0byBhIGNvbW1lbnQsIG9yOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gKGNvbmRlbnNlIG1vZGUpIHRoZSB3aGl0ZXNwYWNlIGlzIGJldHdlZW4gdHdvIGVsZW1lbnRzIEFORCBjb250YWlucyBuZXdsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFuZXh0IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzaG91bGRDb25kZW5zZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2LnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9bXFxyXFxuXS8udGVzdChub2RlLmNvbnRlbnQpKSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRXaGl0ZXNwYWNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgd2hpdGVzcGFjZSBpcyBjb25kZW5zZWQgaW50byBhIHNpbmdsZSBzcGFjZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNvbnRlbnQgPSAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvdWxkQ29uZGVuc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbiBjb25kZW5zZSBtb2RlLCBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlcyBpbiB0ZXh0IGFyZSBjb25kZW5zZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBkb3duIHRvIGEgc2luZ2xlIHNwYWNlLlxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY29udGVudCA9IG5vZGUuY29udGVudC5yZXBsYWNlKC9bXFx0XFxyXFxuXFxmIF0rL2csICcgJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnQgbm9kZXMgaWYgZGVzaXJlZCBieSBjb25maWd1cmF0aW9uLlxyXG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8gJiYgIWNvbnRleHQub3B0aW9ucy5jb21tZW50cykge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250ZXh0LmluUHJlICYmIHBhcmVudCAmJiBjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcocGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgbmV3bGluZSBwZXIgaHRtbCBzcGVjXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2dyb3VwaW5nLWNvbnRlbnQuaHRtbCN0aGUtcHJlLWVsZW1lbnRcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBub2Rlc1swXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIGZpcnN0LnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0LmNvbnRlbnQgPSBmaXJzdC5jb250ZW50LnJlcGxhY2UoL15cXHI/XFxuLywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlbW92ZWRXaGl0ZXNwYWNlID8gbm9kZXMuZmlsdGVyKEJvb2xlYW4pIDogbm9kZXM7XHJcbn1cclxuZnVuY3Rpb24gcHVzaE5vZGUobm9kZXMsIG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICBjb25zdCBwcmV2ID0gbGFzdChub2Rlcyk7XHJcbiAgICAgICAgLy8gTWVyZ2UgaWYgYm90aCB0aGlzIGFuZCB0aGUgcHJldmlvdXMgbm9kZSBhcmUgdGV4dCBhbmQgdGhvc2UgYXJlXHJcbiAgICAgICAgLy8gY29uc2VjdXRpdmUuIFRoaXMgaGFwcGVucyBmb3IgY2FzZXMgbGlrZSBcImEgPCBiXCIuXHJcbiAgICAgICAgaWYgKHByZXYgJiZcclxuICAgICAgICAgICAgcHJldi50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmXHJcbiAgICAgICAgICAgIHByZXYubG9jLmVuZC5vZmZzZXQgPT09IG5vZGUubG9jLnN0YXJ0Lm9mZnNldCkge1xyXG4gICAgICAgICAgICBwcmV2LmNvbnRlbnQgKz0gbm9kZS5jb250ZW50O1xyXG4gICAgICAgICAgICBwcmV2LmxvYy5lbmQgPSBub2RlLmxvYy5lbmQ7XHJcbiAgICAgICAgICAgIHByZXYubG9jLnNvdXJjZSArPSBub2RlLmxvYy5zb3VyY2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ0RBVEEoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgOSk7XHJcbiAgICBjb25zdCBub2RlcyA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi8sIGFuY2VzdG9ycyk7XHJcbiAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDYgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ0RBVEEgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ29tbWVudChjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgLy8gUmVndWxhciBjb21tZW50LlxyXG4gICAgY29uc3QgbWF0Y2ggPSAvLS0oXFwhKT8+Ly5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCk7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDcgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ09NTUVOVCAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAobWF0Y2guaW5kZXggPD0gMykge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMCAvKiBFcnJvckNvZGVzLkFCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWF0Y2hbMV0pIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEwIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCwgbWF0Y2guaW5kZXgpO1xyXG4gICAgICAgIC8vIEFkdmFuY2luZyB3aXRoIHJlcG9ydGluZyBuZXN0ZWQgY29tbWVudHMuXHJcbiAgICAgICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIG1hdGNoLmluZGV4KTtcclxuICAgICAgICBsZXQgcHJldkluZGV4ID0gMSwgbmVzdGVkSW5kZXggPSAwO1xyXG4gICAgICAgIHdoaWxlICgobmVzdGVkSW5kZXggPSBzLmluZGV4T2YoJzwhLS0nLCBwcmV2SW5kZXgpKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5lc3RlZEluZGV4IC0gcHJldkluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIGlmIChuZXN0ZWRJbmRleCArIDQgPCBzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE2IC8qIEVycm9yQ29kZXMuTkVTVEVEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByZXZJbmRleCA9IG5lc3RlZEluZGV4ICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIC0gcHJldkluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBjb250ZXh0LnNvdXJjZVsxXSA9PT0gJz8nID8gMSA6IDI7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKCc+Jyk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoY29udGVudFN0YXJ0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZShjb250ZW50U3RhcnQsIGNsb3NlSW5kZXgpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjbG9zZUluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VFbGVtZW50KGNvbnRleHQsIGFuY2VzdG9ycykge1xyXG4gICAgLy8gU3RhcnQgdGFnLlxyXG4gICAgY29uc3Qgd2FzSW5QcmUgPSBjb250ZXh0LmluUHJlO1xyXG4gICAgY29uc3Qgd2FzSW5WUHJlID0gY29udGV4dC5pblZQcmU7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gcGFyc2VUYWcoY29udGV4dCwgMCAvKiBUYWdUeXBlLlN0YXJ0ICovLCBwYXJlbnQpO1xyXG4gICAgY29uc3QgaXNQcmVCb3VuZGFyeSA9IGNvbnRleHQuaW5QcmUgJiYgIXdhc0luUHJlO1xyXG4gICAgY29uc3QgaXNWUHJlQm91bmRhcnkgPSBjb250ZXh0LmluVlByZSAmJiAhd2FzSW5WUHJlO1xyXG4gICAgaWYgKGVsZW1lbnQuaXNTZWxmQ2xvc2luZyB8fCBjb250ZXh0Lm9wdGlvbnMuaXNWb2lkVGFnKGVsZW1lbnQudGFnKSkge1xyXG4gICAgICAgIC8vICM0MDMwIHNlbGYtY2xvc2luZyA8cHJlPiB0YWdcclxuICAgICAgICBpZiAoaXNQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluUHJlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1ZQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVlByZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuICAgIC8vIENoaWxkcmVuLlxyXG4gICAgYW5jZXN0b3JzLnB1c2goZWxlbWVudCk7XHJcbiAgICBjb25zdCBtb2RlID0gY29udGV4dC5vcHRpb25zLmdldFRleHRNb2RlKGVsZW1lbnQsIHBhcmVudCk7XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKTtcclxuICAgIGFuY2VzdG9ycy5wb3AoKTtcclxuICAgIC8vIDIueCBpbmxpbmUtdGVtcGxhdGUgY29tcGF0XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgaW5saW5lVGVtcGxhdGVQcm9wID0gZWxlbWVudC5wcm9wcy5maW5kKHAgPT4gcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiYgcC5uYW1lID09PSAnaW5saW5lLXRlbXBsYXRlJyk7XHJcbiAgICAgICAgaWYgKGlubGluZVRlbXBsYXRlUHJvcCAmJlxyXG4gICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFICovLCBjb250ZXh0LCBpbmxpbmVUZW1wbGF0ZVByb3AubG9jKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZWxlbWVudC5sb2MuZW5kKTtcclxuICAgICAgICAgICAgaW5saW5lVGVtcGxhdGVQcm9wLnZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxvYy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBsb2NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAvLyBFbmQgdGFnLlxyXG4gICAgaWYgKHN0YXJ0c1dpdGhFbmRUYWdPcGVuKGNvbnRleHQuc291cmNlLCBlbGVtZW50LnRhZykpIHtcclxuICAgICAgICBwYXJzZVRhZyhjb250ZXh0LCAxIC8qIFRhZ1R5cGUuRW5kICovLCBwYXJlbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI0IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0VORF9UQUcgKi8sIDAsIGVsZW1lbnQubG9jLnN0YXJ0KTtcclxuICAgICAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwICYmIGVsZW1lbnQudGFnLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChmaXJzdCAmJiBzdGFydHNXaXRoKGZpcnN0LmxvYy5zb3VyY2UsICc8IS0tJykpIHtcclxuICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA4IC8qIEVycm9yQ29kZXMuRU9GX0lOX1NDUklQVF9IVE1MX0NPTU1FTlRfTElLRV9URVhUICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1lbnQubG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGVsZW1lbnQubG9jLnN0YXJ0KTtcclxuICAgIGlmIChpc1ByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblByZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVlByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG59XHJcbmNvbnN0IGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBpZixlbHNlLGVsc2UtaWYsZm9yLHNsb3RgKTtcclxuZnVuY3Rpb24gcGFyc2VUYWcoY29udGV4dCwgdHlwZSwgcGFyZW50KSB7XHJcbiAgICAvLyBUYWcgb3Blbi5cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXjxcXC8/KFthLXpdW15cXHRcXHJcXG5cXGYgLz5dKikvaS5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGNvbnN0IHRhZyA9IG1hdGNoWzFdO1xyXG4gICAgY29uc3QgbnMgPSBjb250ZXh0Lm9wdGlvbnMuZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgIC8vIHNhdmUgY3VycmVudCBzdGF0ZSBpbiBjYXNlIHdlIG5lZWQgdG8gcmUtcGFyc2UgYXR0cmlidXRlcyB3aXRoIHYtcHJlXHJcbiAgICBjb25zdCBjdXJzb3IgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjdXJyZW50U291cmNlID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICAvLyBjaGVjayA8cHJlPiB0YWdcclxuICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcodGFnKSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5QcmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQXR0cmlidXRlcy5cclxuICAgIGxldCBwcm9wcyA9IHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKTtcclxuICAgIC8vIGNoZWNrIHYtcHJlXHJcbiAgICBpZiAodHlwZSA9PT0gMCAvKiBUYWdUeXBlLlN0YXJ0ICovICYmXHJcbiAgICAgICAgIWNvbnRleHQuaW5WUHJlICYmXHJcbiAgICAgICAgcHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3ByZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSB0cnVlO1xyXG4gICAgICAgIC8vIHJlc2V0IGNvbnRleHRcclxuICAgICAgICBleHRlbmQoY29udGV4dCwgY3Vyc29yKTtcclxuICAgICAgICBjb250ZXh0LnNvdXJjZSA9IGN1cnJlbnRTb3VyY2U7XHJcbiAgICAgICAgLy8gcmUtcGFyc2UgYXR0cnMgYW5kIGZpbHRlciBvdXQgdi1wcmUgaXRzZWxmXHJcbiAgICAgICAgcHJvcHMgPSBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSkuZmlsdGVyKHAgPT4gcC5uYW1lICE9PSAndi1wcmUnKTtcclxuICAgIH1cclxuICAgIC8vIFRhZyBjbG9zZS5cclxuICAgIGxldCBpc1NlbGZDbG9zaW5nID0gZmFsc2U7XHJcbiAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDkgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fVEFHICovKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlzU2VsZkNsb3NpbmcgPSBzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLz4nKTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gMSAvKiBUYWdUeXBlLkVuZCAqLyAmJiBpc1NlbGZDbG9zaW5nKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA0IC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgaXNTZWxmQ2xvc2luZyA/IDIgOiAxKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gMi54IGRlcHJlY2F0aW9uIGNoZWNrc1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgbGV0IGhhc0lmID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGhhc0ZvciA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpZicpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNJZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwLm5hbWUgPT09ICdmb3InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzRm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaGFzSWYgJiYgaGFzRm9yKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovLCBjb250ZXh0LCBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHRhZ1R5cGUgPSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSkge1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdzbG90Jykge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMiAvKiBFbGVtZW50VHlwZXMuU0xPVCAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGFnID09PSAndGVtcGxhdGUnKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgIHRhZ1R5cGUgPSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0NvbXBvbmVudCh0YWcsIHByb3BzLCBjb250ZXh0KSkge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyxcclxuICAgICAgICBucyxcclxuICAgICAgICB0YWcsXHJcbiAgICAgICAgdGFnVHlwZSxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBpc1NlbGZDbG9zaW5nLFxyXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCksXHJcbiAgICAgICAgY29kZWdlbk5vZGU6IHVuZGVmaW5lZCAvLyB0byBiZSBjcmVhdGVkIGR1cmluZyB0cmFuc2Zvcm0gcGhhc2VcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wb25lbnQodGFnLCBwcm9wcywgY29udGV4dCkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbnRleHQub3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zLmlzQ3VzdG9tRWxlbWVudCh0YWcpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRhZyA9PT0gJ2NvbXBvbmVudCcgfHxcclxuICAgICAgICAvXltBLVpdLy50ZXN0KHRhZykgfHxcclxuICAgICAgICBpc0NvcmVDb21wb25lbnQodGFnKSB8fFxyXG4gICAgICAgIChvcHRpb25zLmlzQnVpbHRJbkNvbXBvbmVudCAmJiBvcHRpb25zLmlzQnVpbHRJbkNvbXBvbmVudCh0YWcpKSB8fFxyXG4gICAgICAgIChvcHRpb25zLmlzTmF0aXZlVGFnICYmICFvcHRpb25zLmlzTmF0aXZlVGFnKHRhZykpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBhdCB0aGlzIHBvaW50IHRoZSB0YWcgc2hvdWxkIGJlIGEgbmF0aXZlIHRhZywgYnV0IGNoZWNrIGZvciBwb3RlbnRpYWwgXCJpc1wiXHJcbiAgICAvLyBjYXN0aW5nXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSAnaXMnICYmIHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQsIHAubG9jKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkaXJlY3RpdmVcclxuICAgICAgICAgICAgLy8gdi1pcyAoVE9ETyBEZXByZWNhdGUpXHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpcycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAvLyA6aXMgb24gcGxhaW4gZWxlbWVudCAtIG9ubHkgdHJlYXQgYXMgY29tcG9uZW50IGluIGNvbXBhdCBtb2RlXHJcbiAgICAgICAgICAgIHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpY0FyZ09mKHAuYXJnLCAnaXMnKSAmJlxyXG4gICAgICAgICAgICAgICAgdHJ1ZSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0LCBwLmxvYykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IFtdO1xyXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgICB3aGlsZSAoY29udGV4dC5zb3VyY2UubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICFzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnPicpICYmXHJcbiAgICAgICAgIXN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvPicpKSB7XHJcbiAgICAgICAgaWYgKHN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvJykpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIyIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRyAqLyk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAzIC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX0FUVFJJQlVURVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhdHRyID0gcGFyc2VBdHRyaWJ1dGUoY29udGV4dCwgYXR0cmlidXRlTmFtZXMpO1xyXG4gICAgICAgIC8vIFRyaW0gd2hpdGVzcGFjZSBiZXR3ZWVuIGNsYXNzXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL2NvcmUvaXNzdWVzLzQyNTFcclxuICAgICAgICBpZiAoYXR0ci50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgYXR0ci52YWx1ZSAmJlxyXG4gICAgICAgICAgICBhdHRyLm5hbWUgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgYXR0ci52YWx1ZS5jb250ZW50ID0gYXR0ci52YWx1ZS5jb250ZW50LnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8pIHtcclxuICAgICAgICAgICAgcHJvcHMucHVzaChhdHRyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKC9eW15cXHRcXHJcXG5cXGYgLz5dLy50ZXN0KGNvbnRleHQuc291cmNlKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTUgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX1dISVRFU1BBQ0VfQkVUV0VFTl9BVFRSSUJVVEVTICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZShjb250ZXh0LCBuYW1lU2V0KSB7XHJcbiAgICAvLyBOYW1lLlxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBtYXRjaCA9IC9eW15cXHRcXHJcXG5cXGYgLz5dW15cXHRcXHJcXG5cXGYgLz49XSovLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgY29uc3QgbmFtZSA9IG1hdGNoWzBdO1xyXG4gICAgaWYgKG5hbWVTZXQuaGFzKG5hbWUpKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIgLyogRXJyb3JDb2Rlcy5EVVBMSUNBVEVfQVRUUklCVVRFICovKTtcclxuICAgIH1cclxuICAgIG5hbWVTZXQuYWRkKG5hbWUpO1xyXG4gICAgaWYgKG5hbWVbMF0gPT09ICc9Jykge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxOSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfRVFVQUxTX1NJR05fQkVGT1JFX0FUVFJJQlVURV9OQU1FICovKTtcclxuICAgIH1cclxuICAgIHtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID0gL1tcIic8XS9nO1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IHBhdHRlcm4uZXhlYyhuYW1lKSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE3IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUgKi8sIG0uaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBuYW1lLmxlbmd0aCk7XHJcbiAgICAvLyBWYWx1ZVxyXG4gICAgbGV0IHZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKC9eW1xcdFxcclxcblxcZiBdKj0vLnRlc3QoY29udGV4dC5zb3VyY2UpKSB7XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICB2YWx1ZSA9IHBhcnNlQXR0cmlidXRlVmFsdWUoY29udGV4dCk7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTMgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KTtcclxuICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgL14odi1bQS1aYS16MC05LV18OnxcXC58QHwjKS8udGVzdChuYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gLyg/Ol52LShbYS16MC05LV0rKSk/KD86KD86OnxeXFwufF5AfF4jKShcXFtbXlxcXV0rXFxdfFteXFwuXSspKT8oLispPyQvaS5leGVjKG5hbWUpO1xyXG4gICAgICAgIGxldCBpc1Byb3BTaG9ydGhhbmQgPSBzdGFydHNXaXRoKG5hbWUsICcuJyk7XHJcbiAgICAgICAgbGV0IGRpck5hbWUgPSBtYXRjaFsxXSB8fFxyXG4gICAgICAgICAgICAoaXNQcm9wU2hvcnRoYW5kIHx8IHN0YXJ0c1dpdGgobmFtZSwgJzonKVxyXG4gICAgICAgICAgICAgICAgPyAnYmluZCdcclxuICAgICAgICAgICAgICAgIDogc3RhcnRzV2l0aChuYW1lLCAnQCcpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnb24nXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnc2xvdCcpO1xyXG4gICAgICAgIGxldCBhcmc7XHJcbiAgICAgICAgaWYgKG1hdGNoWzJdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzU2xvdCA9IGRpck5hbWUgPT09ICdzbG90JztcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBuYW1lLmxhc3RJbmRleE9mKG1hdGNoWzJdKTtcclxuICAgICAgICAgICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCksIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCArIG1hdGNoWzJdLmxlbmd0aCArICgoaXNTbG90ICYmIG1hdGNoWzNdKSB8fCAnJykubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gbWF0Y2hbMl07XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChjb250ZW50LnN0YXJ0c1dpdGgoJ1snKSkge1xyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5lbmRzV2l0aCgnXScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI3IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxLCBjb250ZW50Lmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gIzEyNDEgc3BlY2lhbCBjYXNlIGZvciB2LXNsb3Q6IHZ1ZXRpZnkgcmVsaWVzIGV4dGVuc2l2ZWx5IG9uIHNsb3RcclxuICAgICAgICAgICAgICAgIC8vIG5hbWVzIGNvbnRhaW5pbmcgZG90cy4gdi1zbG90IGRvZXNuJ3QgaGF2ZSBhbnkgbW9kaWZpZXJzIGFuZCBWdWUgMi54XHJcbiAgICAgICAgICAgICAgICAvLyBzdXBwb3J0cyBzdWNoIHVzYWdlIHNvIHdlIGFyZSBrZWVwaW5nIGl0IGNvbnNpc3RlbnQgd2l0aCAyLnguXHJcbiAgICAgICAgICAgICAgICBjb250ZW50ICs9IG1hdGNoWzNdIHx8ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFyZyA9IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljLFxyXG4gICAgICAgICAgICAgICAgY29uc3RUeXBlOiBpc1N0YXRpY1xyXG4gICAgICAgICAgICAgICAgICAgID8gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi9cclxuICAgICAgICAgICAgICAgICAgICA6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgICAgICBsb2NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzUXVvdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlTG9jID0gdmFsdWUubG9jO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zdGFydC5vZmZzZXQrKztcclxuICAgICAgICAgICAgdmFsdWVMb2Muc3RhcnQuY29sdW1uKys7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLmVuZCA9IGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZSh2YWx1ZUxvYy5zdGFydCwgdmFsdWUuY29udGVudCk7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnNvdXJjZSA9IHZhbHVlTG9jLnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IG1hdGNoWzNdID8gbWF0Y2hbM10uc2xpY2UoMSkuc3BsaXQoJy4nKSA6IFtdO1xyXG4gICAgICAgIGlmIChpc1Byb3BTaG9ydGhhbmQpXHJcbiAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKCdwcm9wJyk7XHJcbiAgICAgICAgLy8gMi54IGNvbXBhdCB2LWJpbmQ6Zm9vLnN5bmMgLT4gdi1tb2RlbDpmb29cclxuICAgICAgICBpZiAoZGlyTmFtZSA9PT0gJ2JpbmQnICYmIGFyZykge1xyXG4gICAgICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdzeW5jJykgJiZcclxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9TWU5DICovLCBjb250ZXh0LCBsb2MsIGFyZy5sb2Muc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgZGlyTmFtZSA9ICdtb2RlbCc7XHJcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMuc3BsaWNlKG1vZGlmaWVycy5pbmRleE9mKCdzeW5jJyksIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbW9kaWZpZXJzLmluY2x1ZGVzKCdwcm9wJykpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9QUk9QXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9QUk9QICovLCBjb250ZXh0LCBsb2MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyxcclxuICAgICAgICAgICAgbmFtZTogZGlyTmFtZSxcclxuICAgICAgICAgICAgZXhwOiB2YWx1ZSAmJiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlLmNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpYzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAvLyBUcmVhdCBhcyBub24tY29uc3RhbnQgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgcG90ZW50aWFsbHkgc2V0IHRvXHJcbiAgICAgICAgICAgICAgICAvLyBvdGhlciB2YWx1ZXMgYnkgYHRyYW5zZm9ybUV4cHJlc3Npb25gIHRvIG1ha2UgaXQgZWxpZ2libGUgZm9yIGhvaXN0aW5nLlxyXG4gICAgICAgICAgICAgICAgY29uc3RUeXBlOiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovLFxyXG4gICAgICAgICAgICAgICAgbG9jOiB2YWx1ZS5sb2NcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICBtb2RpZmllcnMsXHJcbiAgICAgICAgICAgIGxvY1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICAvLyBtaXNzaW5nIGRpcmVjdGl2ZSBuYW1lIG9yIGlsbGVnYWwgZGlyZWN0aXZlIG5hbWVcclxuICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgc3RhcnRzV2l0aChuYW1lLCAndi0nKSkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNiAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyxcclxuICAgICAgICBuYW1lLFxyXG4gICAgICAgIHZhbHVlOiB2YWx1ZSAmJiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8sXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIGxvYzogdmFsdWUubG9jXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgY29uc3QgcXVvdGUgPSBjb250ZXh0LnNvdXJjZVswXTtcclxuICAgIGNvbnN0IGlzUXVvdGVkID0gcXVvdGUgPT09IGBcImAgfHwgcXVvdGUgPT09IGAnYDtcclxuICAgIGlmIChpc1F1b3RlZCkge1xyXG4gICAgICAgIC8vIFF1b3RlZCB2YWx1ZS5cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKHF1b3RlKTtcclxuICAgICAgICBpZiAoZW5kSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCwgNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGVuZEluZGV4LCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gVW5xdW90ZWRcclxuICAgICAgICBjb25zdCBtYXRjaCA9IC9eW15cXHRcXHJcXG5cXGYgPl0rLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgICAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVuZXhwZWN0ZWRDaGFycyA9IC9bXCInPD1gXS9nO1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IHVuZXhwZWN0ZWRDaGFycy5leGVjKG1hdGNoWzBdKSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE4IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFICovLCBtLmluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgbWF0Y2hbMF0ubGVuZ3RoLCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29udGVudCwgaXNRdW90ZWQsIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlSW50ZXJwb2xhdGlvbihjb250ZXh0LCBtb2RlKSB7XHJcbiAgICBjb25zdCBbb3BlbiwgY2xvc2VdID0gY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnM7XHJcbiAgICBjb25zdCBjbG9zZUluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpO1xyXG4gICAgaWYgKGNsb3NlSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI1IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovKTtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgb3Blbi5sZW5ndGgpO1xyXG4gICAgY29uc3QgaW5uZXJTdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGlubmVyRW5kID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgcmF3Q29udGVudExlbmd0aCA9IGNsb3NlSW5kZXggLSBvcGVuLmxlbmd0aDtcclxuICAgIGNvbnN0IHJhd0NvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCByYXdDb250ZW50TGVuZ3RoKTtcclxuICAgIGNvbnN0IHByZVRyaW1Db250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCByYXdDb250ZW50TGVuZ3RoLCBtb2RlKTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwcmVUcmltQ29udGVudC50cmltKCk7XHJcbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHByZVRyaW1Db250ZW50LmluZGV4T2YoY29udGVudCk7XHJcbiAgICBpZiAoc3RhcnRPZmZzZXQgPiAwKSB7XHJcbiAgICAgICAgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGlubmVyU3RhcnQsIHJhd0NvbnRlbnQsIHN0YXJ0T2Zmc2V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZE9mZnNldCA9IHJhd0NvbnRlbnRMZW5ndGggLSAocHJlVHJpbUNvbnRlbnQubGVuZ3RoIC0gY29udGVudC5sZW5ndGggLSBzdGFydE9mZnNldCk7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oaW5uZXJFbmQsIHJhd0NvbnRlbnQsIGVuZE9mZnNldCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgY2xvc2UubGVuZ3RoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyxcclxuICAgICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICBpc1N0YXRpYzogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vIFNldCBgaXNDb25zdGFudGAgdG8gZmFsc2UgYnkgZGVmYXVsdCBhbmQgd2lsbCBkZWNpZGUgaW4gdHJhbnNmb3JtRXhwcmVzc2lvblxyXG4gICAgICAgICAgICBjb25zdFR5cGU6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGlubmVyU3RhcnQsIGlubmVyRW5kKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlVGV4dChjb250ZXh0LCBtb2RlKSB7XHJcbiAgICBjb25zdCBlbmRUb2tlbnMgPSBtb2RlID09PSAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLyA/IFsnXV0+J10gOiBbJzwnLCBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVyc1swXV07XHJcbiAgICBsZXQgZW5kSW5kZXggPSBjb250ZXh0LnNvdXJjZS5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVuZFRva2Vucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihlbmRUb2tlbnNbaV0sIDEpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgZW5kSW5kZXggPiBpbmRleCkge1xyXG4gICAgICAgICAgICBlbmRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgZW5kSW5kZXgsIG1vZGUpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyIC8qIE5vZGVUeXBlcy5URVhUICovLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBHZXQgdGV4dCBkYXRhIHdpdGggYSBnaXZlbiBsZW5ndGggZnJvbSB0aGUgY3VycmVudCBsb2NhdGlvbi5cclxuICogVGhpcyB0cmFuc2xhdGVzIEhUTUwgZW50aXRpZXMgaW4gdGhlIHRleHQgZGF0YS5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlVGV4dERhdGEoY29udGV4dCwgbGVuZ3RoLCBtb2RlKSB7XHJcbiAgICBjb25zdCByYXdUZXh0ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgbGVuZ3RoKTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBsZW5ndGgpO1xyXG4gICAgaWYgKG1vZGUgPT09IDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi8gfHxcclxuICAgICAgICBtb2RlID09PSAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLyB8fFxyXG4gICAgICAgICFyYXdUZXh0LmluY2x1ZGVzKCcmJykpIHtcclxuICAgICAgICByZXR1cm4gcmF3VGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIERBVEEgb3IgUkNEQVRBIGNvbnRhaW5pbmcgXCImXCJcIi4gRW50aXR5IGRlY29kaW5nIHJlcXVpcmVkLlxyXG4gICAgICAgIHJldHVybiBjb250ZXh0Lm9wdGlvbnMuZGVjb2RlRW50aXRpZXMocmF3VGV4dCwgbW9kZSA9PT0gNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDdXJzb3IoY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW4sIGxpbmUsIG9mZnNldCB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiB7IGNvbHVtbiwgbGluZSwgb2Zmc2V0IH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0LCBlbmQpIHtcclxuICAgIGVuZCA9IGVuZCB8fCBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0LFxyXG4gICAgICAgIGVuZCxcclxuICAgICAgICBzb3VyY2U6IGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBlbmQub2Zmc2V0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBsYXN0KHhzKSB7XHJcbiAgICByZXR1cm4geHNbeHMubGVuZ3RoIC0gMV07XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aChzb3VyY2UsIHNlYXJjaFN0cmluZykge1xyXG4gICAgcmV0dXJuIHNvdXJjZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyk7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZUJ5KGNvbnRleHQsIG51bWJlck9mQ2hhcmFjdGVycykge1xyXG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IGNvbnRleHQ7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oY29udGV4dCwgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG4gICAgY29udGV4dC5zb3VyY2UgPSBzb3VyY2Uuc2xpY2UobnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlU3BhY2VzKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXFx0XFxyXFxuXFxmIF0rLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBudW1iZXJPZkNoYXJhY3RlcnMpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUoc3RhcnQsIGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBudW1iZXJPZkNoYXJhY3RlcnMpLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbmZ1bmN0aW9uIGVtaXRFcnJvcihjb250ZXh0LCBjb2RlLCBvZmZzZXQsIGxvYyA9IGdldEN1cnNvcihjb250ZXh0KSkge1xyXG4gICAgaWYgKG9mZnNldCkge1xyXG4gICAgICAgIGxvYy5vZmZzZXQgKz0gb2Zmc2V0O1xyXG4gICAgICAgIGxvYy5jb2x1bW4gKz0gb2Zmc2V0O1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5vcHRpb25zLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCB7XHJcbiAgICAgICAgc3RhcnQ6IGxvYyxcclxuICAgICAgICBlbmQ6IGxvYyxcclxuICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICB9KSk7XHJcbn1cclxuZnVuY3Rpb24gaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSB7XHJcbiAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgICBjYXNlIDAgLyogVGV4dE1vZGVzLkRBVEEgKi86XHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICc8LycpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBwcm9iYWJseSBiYWQgcGVyZm9ybWFuY2VcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBhbmNlc3RvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aEVuZFRhZ09wZW4ocywgYW5jZXN0b3JzW2ldLnRhZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovOlxyXG4gICAgICAgIGNhc2UgMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLzoge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgc3RhcnRzV2l0aEVuZFRhZ09wZW4ocywgcGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDMgLyogVGV4dE1vZGVzLkNEQVRBICovOlxyXG4gICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzLCAnXV0+JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICFzO1xyXG59XHJcbmZ1bmN0aW9uIHN0YXJ0c1dpdGhFbmRUYWdPcGVuKHNvdXJjZSwgdGFnKSB7XHJcbiAgICByZXR1cm4gKHN0YXJ0c1dpdGgoc291cmNlLCAnPC8nKSAmJlxyXG4gICAgICAgIHNvdXJjZS5zbGljZSgyLCAyICsgdGFnLmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gdGFnLnRvTG93ZXJDYXNlKCkgJiZcclxuICAgICAgICAvW1xcdFxcclxcblxcZiAvPl0vLnRlc3Qoc291cmNlWzIgKyB0YWcubGVuZ3RoXSB8fCAnPicpKTtcclxufVxuXG5mdW5jdGlvbiBob2lzdFN0YXRpYyhyb290LCBjb250ZXh0KSB7XHJcbiAgICB3YWxrKHJvb3QsIGNvbnRleHQsIFxyXG4gICAgLy8gUm9vdCBub2RlIGlzIHVuZm9ydHVuYXRlbHkgbm9uLWhvaXN0YWJsZSBkdWUgdG8gcG90ZW50aWFsIHBhcmVudFxyXG4gICAgLy8gZmFsbHRocm91Z2ggYXR0cmlidXRlcy5cclxuICAgIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgcm9vdC5jaGlsZHJlblswXSkpO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvb3Q7XHJcbiAgICByZXR1cm4gKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgIGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAhaXNTbG90T3V0bGV0KGNoaWxkKSk7XHJcbn1cclxuZnVuY3Rpb24gd2Fsayhub2RlLCBjb250ZXh0LCBkb05vdEhvaXN0Tm9kZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBub2RlO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxDb3VudCA9IGNoaWxkcmVuLmxlbmd0aDtcclxuICAgIGxldCBob2lzdGVkQ291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgLy8gb25seSBwbGFpbiBlbGVtZW50cyAmIHRleHQgY2FsbHMgYXJlIGVsaWdpYmxlIGZvciBob2lzdGluZy5cclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICBjaGlsZC50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnN0YW50VHlwZSA9IGRvTm90SG9pc3ROb2RlXHJcbiAgICAgICAgICAgICAgICA/IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi9cclxuICAgICAgICAgICAgICAgIDogZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25zdGFudFR5cGUgPj0gMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlLnBhdGNoRmxhZyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qIEhPSVNURUQgKi9gIDogYGApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlID0gY29udGV4dC5ob2lzdChjaGlsZC5jb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIG1heSBjb250YWluIGR5bmFtaWMgY2hpbGRyZW4sIGJ1dCBpdHMgcHJvcHMgbWF5IGJlIGVsaWdpYmxlIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gaG9pc3RpbmcuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IGdldFBhdGNoRmxhZyhjb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCghZmxhZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID09PSA1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDEgLyogUGF0Y2hGbGFncy5URVhUICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPj1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBnZXROb2RlUHJvcHMoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLnByb3BzID0gY29udGV4dC5ob2lzdChwcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5keW5hbWljUHJvcHMgPSBjb250ZXh0LmhvaXN0KGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8gJiZcclxuICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLmNvbnRlbnQsIGNvbnRleHQpID49IDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pIHtcclxuICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUgPSBjb250ZXh0LmhvaXN0KGNoaWxkLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgaG9pc3RlZENvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdhbGsgZnVydGhlclxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzQ29tcG9uZW50ID0gY2hpbGQudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2FsayhjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QtLTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBob2lzdCB2LWZvciBzaW5nbGUgY2hpbGQgYmVjYXVzZSBpdCBoYXMgdG8gYmUgYSBibG9ja1xyXG4gICAgICAgICAgICB3YWxrKGNoaWxkLCBjb250ZXh0LCBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPT09IDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkLmJyYW5jaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgaG9pc3Qgdi1pZiBzaW5nbGUgY2hpbGQgYmVjYXVzZSBpdCBoYXMgdG8gYmUgYSBibG9ja1xyXG4gICAgICAgICAgICAgICAgd2FsayhjaGlsZC5icmFuY2hlc1tpXSwgY29udGV4dCwgY2hpbGQuYnJhbmNoZXNbaV0uY2hpbGRyZW4ubGVuZ3RoID09PSAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChob2lzdGVkQ291bnQgJiYgY29udGV4dC50cmFuc2Zvcm1Ib2lzdCkge1xyXG4gICAgICAgIGNvbnRleHQudHJhbnNmb3JtSG9pc3QoY2hpbGRyZW4sIGNvbnRleHQsIG5vZGUpO1xyXG4gICAgfVxyXG4gICAgLy8gYWxsIGNoaWxkcmVuIHdlcmUgaG9pc3RlZCAtIHRoZSBlbnRpcmUgY2hpbGRyZW4gYXJyYXkgaXMgaG9pc3RhYmxlLlxyXG4gICAgaWYgKGhvaXN0ZWRDb3VudCAmJlxyXG4gICAgICAgIGhvaXN0ZWRDb3VudCA9PT0gb3JpZ2luYWxDb3VudCAmJlxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgJiZcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovICYmXHJcbiAgICAgICAgaXNBcnJheShub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4gPSBjb250ZXh0LmhvaXN0KGNyZWF0ZUFycmF5RXhwcmVzc2lvbihub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29uc3RhbnRDYWNoZSB9ID0gY29udGV4dDtcclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjb25zdGFudENhY2hlLmdldChub2RlKTtcclxuICAgICAgICAgICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgIT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuaXNCbG9jayAmJlxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWcgIT09ICdzdmcnICYmXHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZyAhPT0gJ2ZvcmVpZ25PYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmbGFnID0gZ2V0UGF0Y2hGbGFnKGNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgICAgICAgICAgLy8gRWxlbWVudCBpdHNlbGYgaGFzIG5vIHBhdGNoIGZsYWcuIEhvd2V2ZXIgd2Ugc3RpbGwgbmVlZCB0byBjaGVjazpcclxuICAgICAgICAgICAgICAgIC8vIDEuIEV2ZW4gZm9yIGEgbm9kZSB3aXRoIG5vIHBhdGNoIGZsYWcsIGl0IGlzIHBvc3NpYmxlIGZvciBpdCB0byBjb250YWluXHJcbiAgICAgICAgICAgICAgICAvLyBub24taG9pc3RhYmxlIGV4cHJlc3Npb25zIHRoYXQgcmVmZXJzIHRvIHNjb3BlIHZhcmlhYmxlcywgZS5nLiBjb21waWxlclxyXG4gICAgICAgICAgICAgICAgLy8gaW5qZWN0ZWQga2V5cyBvciBjYWNoZWQgZXZlbnQgaGFuZGxlcnMuIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGFsd2F5c1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGNvZGVnZW5Ob2RlJ3MgcHJvcHMgdG8gYmUgc3VyZS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRlZFByb3BzVHlwZSA9IGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZFByb3BzVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZFByb3BzVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2VuZXJhdGVkUHJvcHNUeXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gMi4gaXRzIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKG5vZGUuY2hpbGRyZW5baV0sIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gY2hpbGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIDMuIGlmIHRoZSB0eXBlIGlzIG5vdCBhbHJlYWR5IENBTl9TS0lQX1BBVENIIHdoaWNoIGlzIHRoZSBsb3dlc3Qgbm9uLTBcclxuICAgICAgICAgICAgICAgIC8vIHR5cGUsIGNoZWNrIGlmIGFueSBvZiB0aGUgcHJvcHMgY2FuIGNhdXNlIHRoZSB0eXBlIHRvIGJlIGxvd2VyZWRcclxuICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBza2lwIGNhbl9wYXRjaCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCBieSB0aGUgYWJzZW5jZSBvZiBhXHJcbiAgICAgICAgICAgICAgICAvLyBwYXRjaEZsYWcuXHJcbiAgICAgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSA+IDEgLyogQ29uc3RhbnRUeXBlcy5DQU5fU0tJUF9QQVRDSCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ2JpbmQnICYmIHAuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKHAuZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gZXhwVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9ubHkgc3ZnL2ZvcmVpZ25PYmplY3QgY291bGQgYmUgYmxvY2sgaGVyZSwgaG93ZXZlciBpZiB0aGV5IGFyZVxyXG4gICAgICAgICAgICAgICAgLy8gc3RhdGljIHRoZW4gdGhleSBkb24ndCBuZWVkIHRvIGJlIGJsb2NrcyBzaW5jZSB0aGVyZSB3aWxsIGJlIG5vXHJcbiAgICAgICAgICAgICAgICAvLyBuZXN0ZWQgdXBkYXRlcy5cclxuICAgICAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS5pc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0IHNldCBjdXN0b20gZGlyZWN0aXZlcy5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUuaXNCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCByZXR1cm5UeXBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMiAvKiBOb2RlVHlwZXMuVEVYVCAqLzpcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIHJldHVybiAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICBjYXNlIDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jb25zdFR5cGU7XHJcbiAgICAgICAgY2FzZSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkgfHwgaXNTeW1ib2woY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFR5cGUgPSBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBjaGlsZFR5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgO1xyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgIH1cclxufVxyXG5jb25zdCBhbGxvd0hvaXN0ZWRIZWxwZXJTZXQgPSBuZXcgU2V0KFtcclxuICAgIE5PUk1BTElaRV9DTEFTUyxcclxuICAgIE5PUk1BTElaRV9TVFlMRSxcclxuICAgIE5PUk1BTElaRV9QUk9QUyxcclxuICAgIEdVQVJEX1JFQUNUSVZFX1BST1BTXHJcbl0pO1xyXG5mdW5jdGlvbiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpIHtcclxuICAgIGlmICh2YWx1ZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHZhbHVlLmNhbGxlZSkgJiZcclxuICAgICAgICBhbGxvd0hvaXN0ZWRIZWxwZXJTZXQuaGFzKHZhbHVlLmNhbGxlZSkpIHtcclxuICAgICAgICBjb25zdCBhcmcgPSB2YWx1ZS5hcmd1bWVudHNbMF07XHJcbiAgICAgICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIG5lc3RlZCBoZWxwZXIgY2FsbCwgZS5nLiBgbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKGV4cCkpYFxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbn1cclxuZnVuY3Rpb24gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgIGNvbnN0IHByb3BzID0gZ2V0Tm9kZVByb3BzKG5vZGUpO1xyXG4gICAgaWYgKHByb3BzICYmIHByb3BzLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAgICAgY29uc3Qga2V5VHlwZSA9IGdldENvbnN0YW50VHlwZShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoa2V5VHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGtleVR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0ga2V5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gc29tZSBoZWxwZXIgY2FsbHMgY2FuIGJlIGhvaXN0ZWQsXHJcbiAgICAgICAgICAgICAgICAvLyBzdWNoIGFzIHRoZSBgbm9ybWFsaXplUHJvcHNgIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgZm9yIHByZS1ub3JtYWxpemUgY2xhc3MsXHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byByZXNwZWN0IHRoZSBDb25zdGFudFR5cGUgb2YgdGhlIGhlbHBlcidzIGFyZ3VtZW50c1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG59XHJcbmZ1bmN0aW9uIGdldE5vZGVQcm9wcyhub2RlKSB7XHJcbiAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGU7XHJcbiAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICByZXR1cm4gY29kZWdlbk5vZGUucHJvcHM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGF0Y2hGbGFnKG5vZGUpIHtcclxuICAgIGNvbnN0IGZsYWcgPSBub2RlLnBhdGNoRmxhZztcclxuICAgIHJldHVybiBmbGFnID8gcGFyc2VJbnQoZmxhZywgMTApIDogdW5kZWZpbmVkO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQocm9vdCwgeyBmaWxlbmFtZSA9ICcnLCBwcmVmaXhJZGVudGlmaWVycyA9IGZhbHNlLCBob2lzdFN0YXRpYyA9IGZhbHNlLCBjYWNoZUhhbmRsZXJzID0gZmFsc2UsIG5vZGVUcmFuc2Zvcm1zID0gW10sIGRpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7fSwgdHJhbnNmb3JtSG9pc3QgPSBudWxsLCBpc0J1aWx0SW5Db21wb25lbnQgPSBOT09QLCBpc0N1c3RvbUVsZW1lbnQgPSBOT09QLCBleHByZXNzaW9uUGx1Z2lucyA9IFtdLCBzY29wZUlkID0gbnVsbCwgc2xvdHRlZCA9IHRydWUsIHNzciA9IGZhbHNlLCBpblNTUiA9IGZhbHNlLCBzc3JDc3NWYXJzID0gYGAsIGJpbmRpbmdNZXRhZGF0YSA9IEVNUFRZX09CSiwgaW5saW5lID0gZmFsc2UsIGlzVFMgPSBmYWxzZSwgb25FcnJvciA9IGRlZmF1bHRPbkVycm9yLCBvbldhcm4gPSBkZWZhdWx0T25XYXJuLCBjb21wYXRDb25maWcgfSkge1xyXG4gICAgY29uc3QgbmFtZU1hdGNoID0gZmlsZW5hbWUucmVwbGFjZSgvXFw/LiokLywgJycpLm1hdGNoKC8oW14vXFxcXF0rKVxcLlxcdyskLyk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0ge1xyXG4gICAgICAgIC8vIG9wdGlvbnNcclxuICAgICAgICBzZWxmTmFtZTogbmFtZU1hdGNoICYmIGNhcGl0YWxpemUoY2FtZWxpemUkMShuYW1lTWF0Y2hbMV0pKSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBob2lzdFN0YXRpYyxcclxuICAgICAgICBjYWNoZUhhbmRsZXJzLFxyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgdHJhbnNmb3JtSG9pc3QsXHJcbiAgICAgICAgaXNCdWlsdEluQ29tcG9uZW50LFxyXG4gICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcclxuICAgICAgICBleHByZXNzaW9uUGx1Z2lucyxcclxuICAgICAgICBzY29wZUlkLFxyXG4gICAgICAgIHNsb3R0ZWQsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGluU1NSLFxyXG4gICAgICAgIHNzckNzc1ZhcnMsXHJcbiAgICAgICAgYmluZGluZ01ldGFkYXRhLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBpc1RTLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuLFxyXG4gICAgICAgIGNvbXBhdENvbmZpZyxcclxuICAgICAgICAvLyBzdGF0ZVxyXG4gICAgICAgIHJvb3QsXHJcbiAgICAgICAgaGVscGVyczogbmV3IE1hcCgpLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IG5ldyBTZXQoKSxcclxuICAgICAgICBkaXJlY3RpdmVzOiBuZXcgU2V0KCksXHJcbiAgICAgICAgaG9pc3RzOiBbXSxcclxuICAgICAgICBpbXBvcnRzOiBbXSxcclxuICAgICAgICBjb25zdGFudENhY2hlOiBuZXcgTWFwKCksXHJcbiAgICAgICAgdGVtcHM6IDAsXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIGlkZW50aWZpZXJzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxyXG4gICAgICAgIHNjb3Blczoge1xyXG4gICAgICAgICAgICB2Rm9yOiAwLFxyXG4gICAgICAgICAgICB2U2xvdDogMCxcclxuICAgICAgICAgICAgdlByZTogMCxcclxuICAgICAgICAgICAgdk9uY2U6IDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcmVudDogbnVsbCxcclxuICAgICAgICBjdXJyZW50Tm9kZTogcm9vdCxcclxuICAgICAgICBjaGlsZEluZGV4OiAwLFxyXG4gICAgICAgIGluVk9uY2U6IGZhbHNlLFxyXG4gICAgICAgIC8vIG1ldGhvZHNcclxuICAgICAgICBoZWxwZXIobmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IGNvbnRleHQuaGVscGVycy5nZXQobmFtZSkgfHwgMDtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLnNldChuYW1lLCBjb3VudCArIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUhlbHBlcihuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gY29udGV4dC5oZWxwZXJzLmdldChuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBjb3VudCAtIDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5kZWxldGUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGN1cnJlbnRDb3VudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlbHBlclN0cmluZyhuYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgXyR7aGVscGVyTmFtZU1hcFtjb250ZXh0LmhlbHBlcihuYW1lKV19YDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlcGxhY2VOb2RlKG5vZGUpIHtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBiZWluZyByZXBsYWNlZCBpcyBhbHJlYWR5IHJlbW92ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5wYXJlbnQuY2hpbGRyZW5bY29udGV4dC5jaGlsZEluZGV4XSA9IGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlTm9kZShub2RlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZW1vdmUgcm9vdCBub2RlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgY29uc3QgcmVtb3ZhbEluZGV4ID0gbm9kZVxyXG4gICAgICAgICAgICAgICAgPyBsaXN0LmluZGV4T2Yobm9kZSlcclxuICAgICAgICAgICAgICAgIDogY29udGV4dC5jdXJyZW50Tm9kZVxyXG4gICAgICAgICAgICAgICAgICAgID8gY29udGV4dC5jaGlsZEluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgOiAtMTtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcmVtb3ZhbEluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBub2RlIGJlaW5nIHJlbW92ZWQgaXMgbm90IGEgY2hpbGQgb2YgY3VycmVudCBwYXJlbnRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PT0gY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBub2RlIHJlbW92ZWRcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzaWJsaW5nIG5vZGUgcmVtb3ZlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuY2hpbGRJbmRleCA+IHJlbW92YWxJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2hpbGRJbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQucGFyZW50LmNoaWxkcmVuLnNwbGljZShyZW1vdmFsSW5kZXgsIDEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25Ob2RlUmVtb3ZlZDogKCkgPT4geyB9LFxyXG4gICAgICAgIGFkZElkZW50aWZpZXJzKGV4cCkge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlSWRlbnRpZmllcnMoZXhwKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBob2lzdChleHApIHtcclxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGV4cCkpXHJcbiAgICAgICAgICAgICAgICBleHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV4cCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaG9pc3RzLnB1c2goZXhwKTtcclxuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9ob2lzdGVkXyR7Y29udGV4dC5ob2lzdHMubGVuZ3RofWAsIGZhbHNlLCBleHAubG9jLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKTtcclxuICAgICAgICAgICAgaWRlbnRpZmllci5ob2lzdGVkID0gZXhwO1xyXG4gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhY2hlKGV4cCwgaXNWTm9kZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDYWNoZUV4cHJlc3Npb24oY29udGV4dC5jYWNoZWQrKywgZXhwLCBpc1ZOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAge1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycyA9IG5ldyBTZXQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG59XHJcbmZ1bmN0aW9uIHRyYW5zZm9ybShyb290LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlVHJhbnNmb3JtQ29udGV4dChyb290LCBvcHRpb25zKTtcclxuICAgIHRyYXZlcnNlTm9kZShyb290LCBjb250ZXh0KTtcclxuICAgIGlmIChvcHRpb25zLmhvaXN0U3RhdGljKSB7XHJcbiAgICAgICAgaG9pc3RTdGF0aWMocm9vdCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMuc3NyKSB7XHJcbiAgICAgICAgY3JlYXRlUm9vdENvZGVnZW4ocm9vdCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICAvLyBmaW5hbGl6ZSBtZXRhIGluZm9ybWF0aW9uXHJcbiAgICByb290LmhlbHBlcnMgPSBbLi4uY29udGV4dC5oZWxwZXJzLmtleXMoKV07XHJcbiAgICByb290LmNvbXBvbmVudHMgPSBbLi4uY29udGV4dC5jb21wb25lbnRzXTtcclxuICAgIHJvb3QuZGlyZWN0aXZlcyA9IFsuLi5jb250ZXh0LmRpcmVjdGl2ZXNdO1xyXG4gICAgcm9vdC5pbXBvcnRzID0gY29udGV4dC5pbXBvcnRzO1xyXG4gICAgcm9vdC5ob2lzdHMgPSBjb250ZXh0LmhvaXN0cztcclxuICAgIHJvb3QudGVtcHMgPSBjb250ZXh0LnRlbXBzO1xyXG4gICAgcm9vdC5jYWNoZWQgPSBjb250ZXh0LmNhY2hlZDtcclxuICAgIHtcclxuICAgICAgICByb290LmZpbHRlcnMgPSBbLi4uY29udGV4dC5maWx0ZXJzXTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSb290Q29kZWdlbihyb290LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvb3Q7XHJcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAvLyBpZiB0aGUgc2luZ2xlIGNoaWxkIGlzIGFuIGVsZW1lbnQsIHR1cm4gaXQgaW50byBhIGJsb2NrLlxyXG4gICAgICAgIGlmIChpc1NpbmdsZUVsZW1lbnRSb290KHJvb3QsIGNoaWxkKSAmJiBjaGlsZC5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgZWxlbWVudCByb290IGlzIG5ldmVyIGhvaXN0ZWQgc28gY29kZWdlbk5vZGUgd2lsbCBuZXZlciBiZVxyXG4gICAgICAgICAgICAvLyBTaW1wbGVFeHByZXNzaW9uTm9kZVxyXG4gICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNvZGVnZW5Ob2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgPHNsb3QvPiwgSWZOb2RlLCBGb3JOb2RlOiBhbHJlYWR5IGJsb2Nrcy5cclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgdGV4dCBub2RlOiBhbHdheXMgcGF0Y2hlZC5cclxuICAgICAgICAgICAgLy8gcm9vdCBjb2RlZ2VuIGZhbGxzIHRocm91Z2ggdmlhIGdlbk5vZGUoKVxyXG4gICAgICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY2hpbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIC8vIHJvb3QgaGFzIG11bHRpcGxlIG5vZGVzIC0gcmV0dXJuIGEgZnJhZ21lbnQgYmxvY2suXHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovO1xyXG4gICAgICAgIGxldCBwYXRjaEZsYWdUZXh0ID0gUGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dO1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBmcmFnbWVudCBhY3R1YWxseSBjb250YWlucyBhIHNpbmdsZSB2YWxpZCBjaGlsZCB3aXRoXHJcbiAgICAgICAgLy8gdGhlIHJlc3QgYmVpbmcgY29tbWVudHNcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZ1RleHQgKz0gYCwgJHtQYXRjaEZsYWdOYW1lc1syMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgdW5kZWZpbmVkLCByb290LmNoaWxkcmVuLCBwYXRjaEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3BhdGNoRmxhZ1RleHR9ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSA7XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihwYXJlbnQsIGNvbnRleHQpIHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGNvbnN0IG5vZGVSZW1vdmVkID0gKCkgPT4ge1xyXG4gICAgICAgIGktLTtcclxuICAgIH07XHJcbiAgICBmb3IgKDsgaSA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gcGFyZW50LmNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnRleHQucGFyZW50ID0gcGFyZW50O1xyXG4gICAgICAgIGNvbnRleHQuY2hpbGRJbmRleCA9IGk7XHJcbiAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkID0gbm9kZVJlbW92ZWQ7XHJcbiAgICAgICAgdHJhdmVyc2VOb2RlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZU5vZGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICAvLyBhcHBseSB0cmFuc2Zvcm0gcGx1Z2luc1xyXG4gICAgY29uc3QgeyBub2RlVHJhbnNmb3JtcyB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGV4aXRGbnMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvbkV4aXQgPSBub2RlVHJhbnNmb3Jtc1tpXShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAob25FeGl0KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9uRXhpdCkpIHtcclxuICAgICAgICAgICAgICAgIGV4aXRGbnMucHVzaCguLi5vbkV4aXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIG5vZGUgd2FzIHJlbW92ZWRcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm9kZSBtYXkgaGF2ZSBiZWVuIHJlcGxhY2VkXHJcbiAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmN1cnJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbmplY3QgaW1wb3J0IGZvciB0aGUgQ29tbWVudCBzeW1ib2wsIHdoaWNoIGlzIG5lZWRlZCBmb3IgY3JlYXRpbmdcclxuICAgICAgICAgICAgICAgIC8vIGNvbW1lbnQgbm9kZXMgd2l0aCBgY3JlYXRlVk5vZGVgXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcihDUkVBVEVfQ09NTUVOVCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgICAgICAvLyBubyBuZWVkIHRvIHRyYXZlcnNlLCBidXQgd2UgbmVlZCB0byBpbmplY3QgdG9TdHJpbmcgaGVscGVyXHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFRPX0RJU1BMQVlfU1RSSU5HKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBmb3IgY29udGFpbmVyIHR5cGVzLCBmdXJ0aGVyIHRyYXZlcnNlIGRvd253YXJkc1xyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5icmFuY2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VOb2RlKG5vZGUuYnJhbmNoZXNbaV0sIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgIGNhc2UgMCAvKiBOb2RlVHlwZXMuUk9PVCAqLzpcclxuICAgICAgICAgICAgdHJhdmVyc2VDaGlsZHJlbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICAvLyBleGl0IHRyYW5zZm9ybXNcclxuICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgbGV0IGkgPSBleGl0Rm5zLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBleGl0Rm5zW2ldKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybShuYW1lLCBmbikge1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IGlzU3RyaW5nKG5hbWUpXHJcbiAgICAgICAgPyAobikgPT4gbiA9PT0gbmFtZVxyXG4gICAgICAgIDogKG4pID0+IG5hbWUudGVzdChuKTtcclxuICAgIHJldHVybiAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9wcyB9ID0gbm9kZTtcclxuICAgICAgICAgICAgLy8gc3RydWN0dXJhbCBkaXJlY3RpdmUgdHJhbnNmb3JtcyBhcmUgbm90IGNvbmNlcm5lZCB3aXRoIHNsb3RzXHJcbiAgICAgICAgICAgIC8vIGFzIHRoZXkgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBpbiB2U2xvdC50c1xyXG4gICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLyAmJiBwcm9wcy5zb21lKGlzVlNsb3QpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXhpdEZucyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgbWF0Y2hlcyhwcm9wLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJhbCBkaXJlY3RpdmVzIGFyZSByZW1vdmVkIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gd2UgcmVtb3ZlIHRoZW0gKmJlZm9yZSogYXBwbHlpbmcgc28gdGhhdCBpdCBjYW4gZnVydGhlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNlIGl0c2VsZiBpbiBjYXNlIGl0IG1vdmVzIHRoZSBub2RlIGFyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25FeGl0ID0gZm4obm9kZSwgcHJvcCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uRXhpdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGV4aXRGbnM7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCBQVVJFX0FOTk9UQVRJT04gPSBgLyojX19QVVJFX18qL2A7XHJcbmNvbnN0IGFsaWFzSGVscGVyID0gKHMpID0+IGAke2hlbHBlck5hbWVNYXBbc119OiBfJHtoZWxwZXJOYW1lTWFwW3NdfWA7XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgeyBtb2RlID0gJ2Z1bmN0aW9uJywgcHJlZml4SWRlbnRpZmllcnMgPSBtb2RlID09PSAnbW9kdWxlJywgc291cmNlTWFwID0gZmFsc2UsIGZpbGVuYW1lID0gYHRlbXBsYXRlLnZ1ZS5odG1sYCwgc2NvcGVJZCA9IG51bGwsIG9wdGltaXplSW1wb3J0cyA9IGZhbHNlLCBydW50aW1lR2xvYmFsTmFtZSA9IGBWdWVgLCBydW50aW1lTW9kdWxlTmFtZSA9IGB2dWVgLCBzc3JSdW50aW1lTW9kdWxlTmFtZSA9ICd2dWUvc2VydmVyLXJlbmRlcmVyJywgc3NyID0gZmFsc2UsIGlzVFMgPSBmYWxzZSwgaW5TU1IgPSBmYWxzZSB9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0ge1xyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgc291cmNlTWFwLFxyXG4gICAgICAgIGZpbGVuYW1lLFxyXG4gICAgICAgIHNjb3BlSWQsXHJcbiAgICAgICAgb3B0aW1pemVJbXBvcnRzLFxyXG4gICAgICAgIHJ1bnRpbWVHbG9iYWxOYW1lLFxyXG4gICAgICAgIHJ1bnRpbWVNb2R1bGVOYW1lLFxyXG4gICAgICAgIHNzclJ1bnRpbWVNb2R1bGVOYW1lLFxyXG4gICAgICAgIHNzcixcclxuICAgICAgICBpc1RTLFxyXG4gICAgICAgIGluU1NSLFxyXG4gICAgICAgIHNvdXJjZTogYXN0LmxvYy5zb3VyY2UsXHJcbiAgICAgICAgY29kZTogYGAsXHJcbiAgICAgICAgY29sdW1uOiAxLFxyXG4gICAgICAgIGxpbmU6IDEsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIGluZGVudExldmVsOiAwLFxyXG4gICAgICAgIHB1cmU6IGZhbHNlLFxyXG4gICAgICAgIG1hcDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGhlbHBlcihrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBfJHtoZWxwZXJOYW1lTWFwW2tleV19YDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHB1c2goY29kZSwgbm9kZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmNvZGUgKz0gY29kZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGluZGVudCgpIHtcclxuICAgICAgICAgICAgbmV3bGluZSgrK2NvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVpbmRlbnQod2l0aG91dE5ld0xpbmUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpZiAod2l0aG91dE5ld0xpbmUpIHtcclxuICAgICAgICAgICAgICAgIC0tY29udGV4dC5pbmRlbnRMZXZlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5ld2xpbmUoLS1jb250ZXh0LmluZGVudExldmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbmV3bGluZSgpIHtcclxuICAgICAgICAgICAgbmV3bGluZShjb250ZXh0LmluZGVudExldmVsKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZnVuY3Rpb24gbmV3bGluZShuKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKCdcXG4nICsgYCAgYC5yZXBlYXQobikpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGUoYXN0LCBvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVDb2RlZ2VuQ29udGV4dChhc3QsIG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZClcclxuICAgICAgICBvcHRpb25zLm9uQ29udGV4dENyZWF0ZWQoY29udGV4dCk7XHJcbiAgICBjb25zdCB7IG1vZGUsIHB1c2gsIHByZWZpeElkZW50aWZpZXJzLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lLCBzY29wZUlkLCBzc3IgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBoYXNIZWxwZXJzID0gYXN0LmhlbHBlcnMubGVuZ3RoID4gMDtcclxuICAgIGNvbnN0IHVzZVdpdGhCbG9jayA9ICFwcmVmaXhJZGVudGlmaWVycyAmJiBtb2RlICE9PSAnbW9kdWxlJztcclxuICAgIC8vIHByZWFtYmxlc1xyXG4gICAgLy8gaW4gc2V0dXAoKSBpbmxpbmUgbW9kZSwgdGhlIHByZWFtYmxlIGlzIGdlbmVyYXRlZCBpbiBhIHN1YiBjb250ZXh0XHJcbiAgICAvLyBhbmQgcmV0dXJuZWQgc2VwYXJhdGVseS5cclxuICAgIGNvbnN0IHByZWFtYmxlQ29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB7XHJcbiAgICAgICAgZ2VuRnVuY3Rpb25QcmVhbWJsZShhc3QsIHByZWFtYmxlQ29udGV4dCk7XHJcbiAgICB9XHJcbiAgICAvLyBlbnRlciByZW5kZXIgZnVuY3Rpb25cclxuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHNzciA/IGBzc3JSZW5kZXJgIDogYHJlbmRlcmA7XHJcbiAgICBjb25zdCBhcmdzID0gc3NyID8gWydfY3R4JywgJ19wdXNoJywgJ19wYXJlbnQnLCAnX2F0dHJzJ10gOiBbJ19jdHgnLCAnX2NhY2hlJ107XHJcbiAgICBjb25zdCBzaWduYXR1cmUgPSBhcmdzLmpvaW4oJywgJyk7XHJcbiAgICB7XHJcbiAgICAgICAgcHVzaChgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9KCR7c2lnbmF0dXJlfSkge2ApO1xyXG4gICAgfVxyXG4gICAgaW5kZW50KCk7XHJcbiAgICBpZiAodXNlV2l0aEJsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgd2l0aCAoX2N0eCkge2ApO1xyXG4gICAgICAgIGluZGVudCgpO1xyXG4gICAgICAgIC8vIGZ1bmN0aW9uIG1vZGUgY29uc3QgZGVjbGFyYXRpb25zIHNob3VsZCBiZSBpbnNpZGUgd2l0aCBibG9ja1xyXG4gICAgICAgIC8vIGFsc28gdGhleSBzaG91bGQgYmUgcmVuYW1lZCB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCB1c2VyIHByb3BlcnRpZXNcclxuICAgICAgICBpZiAoaGFzSGVscGVycykge1xyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCB7ICR7YXN0LmhlbHBlcnMubWFwKGFsaWFzSGVscGVyKS5qb2luKCcsICcpfSB9ID0gX1Z1ZWApO1xyXG4gICAgICAgICAgICBwdXNoKGBcXG5gKTtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGdlbmVyYXRlIGFzc2V0IHJlc29sdXRpb24gc3RhdGVtZW50c1xyXG4gICAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuY29tcG9uZW50cywgJ2NvbXBvbmVudCcsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChhc3QuZGlyZWN0aXZlcy5sZW5ndGggfHwgYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5kaXJlY3RpdmVzLmxlbmd0aCkge1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuZGlyZWN0aXZlcywgJ2RpcmVjdGl2ZScsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmZpbHRlcnMgJiYgYXN0LmZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuZmlsdGVycywgJ2ZpbHRlcicsIGNvbnRleHQpO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIGlmIChhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgcHVzaChgbGV0IGApO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXN0LnRlbXBzOyBpKyspIHtcclxuICAgICAgICAgICAgcHVzaChgJHtpID4gMCA/IGAsIGAgOiBgYH1fdGVtcCR7aX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmNvbXBvbmVudHMubGVuZ3RoIHx8IGFzdC5kaXJlY3RpdmVzLmxlbmd0aCB8fCBhc3QudGVtcHMpIHtcclxuICAgICAgICBwdXNoKGBcXG5gKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICAvLyBnZW5lcmF0ZSB0aGUgVk5vZGUgdHJlZSBleHByZXNzaW9uXHJcbiAgICBpZiAoIXNzcikge1xyXG4gICAgICAgIHB1c2goYHJldHVybiBgKTtcclxuICAgIH1cclxuICAgIGlmIChhc3QuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICBnZW5Ob2RlKGFzdC5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwdXNoKGBudWxsYCk7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlV2l0aEJsb2NrKSB7XHJcbiAgICAgICAgZGVpbmRlbnQoKTtcclxuICAgICAgICBwdXNoKGB9YCk7XHJcbiAgICB9XHJcbiAgICBkZWluZGVudCgpO1xyXG4gICAgcHVzaChgfWApO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBhc3QsXHJcbiAgICAgICAgY29kZTogY29udGV4dC5jb2RlLFxyXG4gICAgICAgIHByZWFtYmxlOiBgYCxcclxuICAgICAgICAvLyBTb3VyY2VNYXBHZW5lcmF0b3IgZG9lcyBoYXZlIHRvSlNPTigpIG1ldGhvZCBidXQgaXQncyBub3QgaW4gdGhlIHR5cGVzXHJcbiAgICAgICAgbWFwOiBjb250ZXh0Lm1hcCA/IGNvbnRleHQubWFwLnRvSlNPTigpIDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGdlbkZ1bmN0aW9uUHJlYW1ibGUoYXN0LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHNzciwgcHJlZml4SWRlbnRpZmllcnMsIHB1c2gsIG5ld2xpbmUsIHJ1bnRpbWVNb2R1bGVOYW1lLCBydW50aW1lR2xvYmFsTmFtZSwgc3NyUnVudGltZU1vZHVsZU5hbWUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBWdWVCaW5kaW5nID0gcnVudGltZUdsb2JhbE5hbWU7XHJcbiAgICAvLyBHZW5lcmF0ZSBjb25zdCBkZWNsYXJhdGlvbiBmb3IgaGVscGVyc1xyXG4gICAgLy8gSW4gcHJlZml4IG1vZGUsIHdlIHBsYWNlIHRoZSBjb25zdCBkZWNsYXJhdGlvbiBhdCB0b3Agc28gaXQncyBkb25lXHJcbiAgICAvLyBvbmx5IG9uY2U7IEJ1dCBpZiB3ZSBub3QgcHJlZml4aW5nLCB3ZSBwbGFjZSB0aGUgZGVjbGFyYXRpb24gaW5zaWRlIHRoZVxyXG4gICAgLy8gd2l0aCBibG9jayBzbyBpdCBkb2Vzbid0IGluY3VyIHRoZSBgaW5gIGNoZWNrIGNvc3QgZm9yIGV2ZXJ5IGhlbHBlciBhY2Nlc3MuXHJcbiAgICBpZiAoYXN0LmhlbHBlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gXCJ3aXRoXCIgbW9kZS5cclxuICAgICAgICAgICAgLy8gc2F2ZSBWdWUgaW4gYSBzZXBhcmF0ZSB2YXJpYWJsZSB0byBhdm9pZCBjb2xsaXNpb25cclxuICAgICAgICAgICAgcHVzaChgY29uc3QgX1Z1ZSA9ICR7VnVlQmluZGluZ31cXG5gKTtcclxuICAgICAgICAgICAgLy8gaW4gXCJ3aXRoXCIgbW9kZSwgaGVscGVycyBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoZSB3aXRoIGJsb2NrIHRvIGF2b2lkXHJcbiAgICAgICAgICAgIC8vIGhhcyBjaGVjayBjb3N0LCBidXQgaG9pc3RzIGFyZSBsaWZ0ZWQgb3V0IG9mIHRoZSBmdW5jdGlvbiAtIHdlIG5lZWRcclxuICAgICAgICAgICAgLy8gdG8gcHJvdmlkZSB0aGUgaGVscGVyIGhlcmUuXHJcbiAgICAgICAgICAgIGlmIChhc3QuaG9pc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGljSGVscGVycyA9IFtcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfVk5PREUsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX0VMRU1FTlRfVk5PREUsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX0NPTU1FTlQsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX1RFWFQsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX1NUQVRJQ1xyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaGVscGVyID0+IGFzdC5oZWxwZXJzLmluY2x1ZGVzKGhlbHBlcikpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChhbGlhc0hlbHBlcilcclxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcclxuICAgICAgICAgICAgICAgIHB1c2goYGNvbnN0IHsgJHtzdGF0aWNIZWxwZXJzfSB9ID0gX1Z1ZVxcbmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2VuSG9pc3RzKGFzdC5ob2lzdHMsIGNvbnRleHQpO1xyXG4gICAgbmV3bGluZSgpO1xyXG4gICAgcHVzaChgcmV0dXJuIGApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkFzc2V0cyhhc3NldHMsIHR5cGUsIHsgaGVscGVyLCBwdXNoLCBuZXdsaW5lLCBpc1RTIH0pIHtcclxuICAgIGNvbnN0IHJlc29sdmVyID0gaGVscGVyKHR5cGUgPT09ICdmaWx0ZXInXHJcbiAgICAgICAgPyBSRVNPTFZFX0ZJTFRFUlxyXG4gICAgICAgIDogdHlwZSA9PT0gJ2NvbXBvbmVudCdcclxuICAgICAgICAgICAgPyBSRVNPTFZFX0NPTVBPTkVOVFxyXG4gICAgICAgICAgICA6IFJFU09MVkVfRElSRUNUSVZFKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNzZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gYXNzZXRzW2ldO1xyXG4gICAgICAgIC8vIHBvdGVudGlhbCBjb21wb25lbnQgaW1wbGljaXQgc2VsZi1yZWZlcmVuY2UgaW5mZXJyZWQgZnJvbSBTRkMgZmlsZW5hbWVcclxuICAgICAgICBjb25zdCBtYXliZVNlbGZSZWZlcmVuY2UgPSBpZC5lbmRzV2l0aCgnX19zZWxmJyk7XHJcbiAgICAgICAgaWYgKG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBpZCA9IGlkLnNsaWNlKDAsIC02KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHVzaChgY29uc3QgJHt0b1ZhbGlkQXNzZXRJZChpZCwgdHlwZSl9ID0gJHtyZXNvbHZlcn0oJHtKU09OLnN0cmluZ2lmeShpZCl9JHttYXliZVNlbGZSZWZlcmVuY2UgPyBgLCB0cnVlYCA6IGBgfSkke2lzVFMgPyBgIWAgOiBgYH1gKTtcclxuICAgICAgICBpZiAoaSA8IGFzc2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuSG9pc3RzKGhvaXN0cywgY29udGV4dCkge1xyXG4gICAgaWYgKCFob2lzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5wdXJlID0gdHJ1ZTtcclxuICAgIGNvbnN0IHsgcHVzaCwgbmV3bGluZSwgaGVscGVyLCBzY29wZUlkLCBtb2RlIH0gPSBjb250ZXh0O1xyXG4gICAgbmV3bGluZSgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob2lzdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBleHAgPSBob2lzdHNbaV07XHJcbiAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCBfaG9pc3RlZF8ke2kgKyAxfSA9ICR7YGB9YCk7XHJcbiAgICAgICAgICAgIGdlbk5vZGUoZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQucHVyZSA9IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGV4dCQxKG4pIHtcclxuICAgIHJldHVybiAoaXNTdHJpbmcobikgfHxcclxuICAgICAgICBuLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZXMsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG11bHRpbGluZXMgPSBub2Rlcy5sZW5ndGggPiAzIHx8XHJcbiAgICAgICAgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpICYmIG5vZGVzLnNvbWUobiA9PiBpc0FycmF5KG4pIHx8ICFpc1RleHQkMShuKSkpO1xyXG4gICAgY29udGV4dC5wdXNoKGBbYCk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGNvbnRleHQuaW5kZW50KCk7XHJcbiAgICBnZW5Ob2RlTGlzdChub2RlcywgY29udGV4dCwgbXVsdGlsaW5lcyk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGNvbnRleHQuZGVpbmRlbnQoKTtcclxuICAgIGNvbnRleHQucHVzaChgXWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGVMaXN0KG5vZGVzLCBjb250ZXh0LCBtdWx0aWxpbmVzID0gZmFsc2UsIGNvbW1hID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcclxuICAgICAgICAgICAgcHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlKSkge1xyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaSA8IG5vZGVzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgaWYgKG11bHRpbGluZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hICYmIHB1c2goJywnKTtcclxuICAgICAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hICYmIHB1c2goJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcclxuICAgICAgICBjb250ZXh0LnB1c2gobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU3ltYm9sKG5vZGUpKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKGNvbnRleHQuaGVscGVyKG5vZGUpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBhc3NlcnQobm9kZS5jb2RlZ2VuTm9kZSAhPSBudWxsLCBgQ29kZWdlbiBub2RlIGlzIG1pc3NpbmcgZm9yIGVsZW1lbnQvaWYvZm9yIG5vZGUuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBBcHBseSBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1zIGZpcnN0LmApO1xyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIgLyogTm9kZVR5cGVzLlRFWFQgKi86XHJcbiAgICAgICAgICAgIGdlblRleHQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICAgICAgZ2VuSW50ZXJwb2xhdGlvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICBnZW5Db21tZW50KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5WTm9kZUNhbGwobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ2FsbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5PYmplY3RFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTggLyogTm9kZVR5cGVzLkpTX0ZVTkNUSU9OX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkZ1bmN0aW9uRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjEgLyogTm9kZVR5cGVzLkpTX0JMT0NLX1NUQVRFTUVOVCAqLzpcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3Qobm9kZS5ib2R5LCBjb250ZXh0LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIFNTUiBvbmx5IHR5cGVzXHJcbiAgICAgICAgY2FzZSAyMiAvKiBOb2RlVHlwZXMuSlNfVEVNUExBVEVfTElURVJBTCAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMyAvKiBOb2RlVHlwZXMuSlNfSUZfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI0IC8qIE5vZGVUeXBlcy5KU19BU1NJR05NRU5UX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjUgLyogTm9kZVR5cGVzLkpTX1NFUVVFTkNFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjYgLyogTm9kZVR5cGVzLkpTX1JFVFVSTl9TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICAvLyBub29wXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYHVuaGFuZGxlZCBjb2RlZ2VuIG5vZGUgdHlwZTogJHtub2RlLnR5cGV9YCk7XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgZXhoYXVzdCBhbGwgcG9zc2libGUgdHlwZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjayA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhoYXVzdGl2ZUNoZWNrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuVGV4dChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LnB1c2goSlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KSwgbm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnQsIGlzU3RhdGljIH0gPSBub2RlO1xyXG4gICAgY29udGV4dC5wdXNoKGlzU3RhdGljID8gSlNPTi5zdHJpbmdpZnkoY29udGVudCkgOiBjb250ZW50LCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5JbnRlcnBvbGF0aW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKHB1cmUpXHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgcHVzaChgJHtoZWxwZXIoVE9fRElTUExBWV9TVFJJTkcpfShgKTtcclxuICAgIGdlbk5vZGUobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Db21wb3VuZEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5wdXNoKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2ggfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgcHVzaChgW2ApO1xyXG4gICAgICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGBdYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmlzU3RhdGljKSB7XHJcbiAgICAgICAgLy8gb25seSBxdW90ZSBrZXlzIGlmIG5lY2Vzc2FyeVxyXG4gICAgICAgIGNvbnN0IHRleHQgPSBpc1NpbXBsZUlkZW50aWZpZXIobm9kZS5jb250ZW50KVxyXG4gICAgICAgICAgICA/IG5vZGUuY29udGVudFxyXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCk7XHJcbiAgICAgICAgcHVzaCh0ZXh0LCBub2RlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYFske25vZGUuY29udGVudH1dYCwgbm9kZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ29tbWVudChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgcHVzaChgJHtoZWxwZXIoQ1JFQVRFX0NPTU1FTlQpfSgke0pTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCl9KWAsIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlblZOb2RlQ2FsbChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgdGFnLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBkaXJlY3RpdmVzLCBpc0Jsb2NrLCBkaXNhYmxlVHJhY2tpbmcsIGlzQ29tcG9uZW50IH0gPSBub2RlO1xyXG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICBwdXNoKGhlbHBlcihXSVRIX0RJUkVDVElWRVMpICsgYChgKTtcclxuICAgIH1cclxuICAgIGlmIChpc0Jsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgKCR7aGVscGVyKE9QRU5fQkxPQ0spfSgke2Rpc2FibGVUcmFja2luZyA/IGB0cnVlYCA6IGBgfSksIGApO1xyXG4gICAgfVxyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjYWxsSGVscGVyID0gaXNCbG9ja1xyXG4gICAgICAgID8gZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudClcclxuICAgICAgICA6IGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KTtcclxuICAgIHB1c2goaGVscGVyKGNhbGxIZWxwZXIpICsgYChgLCBub2RlKTtcclxuICAgIGdlbk5vZGVMaXN0KGdlbk51bGxhYmxlQXJncyhbdGFnLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzXSksIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG4gICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyZWN0aXZlcykge1xyXG4gICAgICAgIHB1c2goYCwgYCk7XHJcbiAgICAgICAgZ2VuTm9kZShkaXJlY3RpdmVzLCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuTnVsbGFibGVBcmdzKGFyZ3MpIHtcclxuICAgIGxldCBpID0gYXJncy5sZW5ndGg7XHJcbiAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgaWYgKGFyZ3NbaV0gIT0gbnVsbClcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJncy5zbGljZSgwLCBpICsgMSkubWFwKGFyZyA9PiBhcmcgfHwgYG51bGxgKTtcclxufVxyXG4vLyBKYXZhU2NyaXB0XHJcbmZ1bmN0aW9uIGdlbkNhbGxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgY2FsbGVlID0gaXNTdHJpbmcobm9kZS5jYWxsZWUpID8gbm9kZS5jYWxsZWUgOiBoZWxwZXIobm9kZS5jYWxsZWUpO1xyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBwdXNoKGNhbGxlZSArIGAoYCwgbm9kZSk7XHJcbiAgICBnZW5Ob2RlTGlzdChub2RlLmFyZ3VtZW50cywgY29udGV4dCk7XHJcbiAgICBwdXNoKGApYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuT2JqZWN0RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IG5vZGU7XHJcbiAgICBpZiAoIXByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcHVzaChge31gLCBub2RlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBtdWx0aWxpbmVzID0gcHJvcGVydGllcy5sZW5ndGggPiAxIHx8XHJcbiAgICAgICAgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpICYmXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMuc29tZShwID0+IHAudmFsdWUudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pKTtcclxuICAgIHB1c2gobXVsdGlsaW5lcyA/IGB7YCA6IGB7IGApO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBpbmRlbnQoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAvLyBrZXlcclxuICAgICAgICBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYDogYCk7XHJcbiAgICAgICAgLy8gdmFsdWVcclxuICAgICAgICBnZW5Ob2RlKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoaSA8IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAvLyB3aWxsIG9ubHkgcmVhY2ggdGhpcyBpZiBpdCdzIG11bHRpbGluZXNcclxuICAgICAgICAgICAgcHVzaChgLGApO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbXVsdGlsaW5lcyAmJiBkZWluZGVudCgpO1xyXG4gICAgcHVzaChtdWx0aWxpbmVzID8gYH1gIDogYCB9YCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXJyYXlFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLmVsZW1lbnRzLCBjb250ZXh0KTtcclxufVxyXG5mdW5jdGlvbiBnZW5GdW5jdGlvbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50IH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBwYXJhbXMsIHJldHVybnMsIGJvZHksIG5ld2xpbmUsIGlzU2xvdCB9ID0gbm9kZTtcclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICAvLyB3cmFwIHNsb3QgZnVuY3Rpb25zIHdpdGggb3duZXIgY29udGV4dFxyXG4gICAgICAgIHB1c2goYF8ke2hlbHBlck5hbWVNYXBbV0lUSF9DVFhdfShgKTtcclxuICAgIH1cclxuICAgIHB1c2goYChgLCBub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBnZW5Ob2RlTGlzdChwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgZ2VuTm9kZShwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKSA9PiBgKTtcclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBwdXNoKGB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmV0dXJucykge1xyXG4gICAgICAgIGlmIChuZXdsaW5lKSB7XHJcbiAgICAgICAgICAgIHB1c2goYHJldHVybiBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmV0dXJucykpIHtcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3RBc0FycmF5KHJldHVybnMsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShyZXR1cm5zLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChib2R5KSB7XHJcbiAgICAgICAgZ2VuTm9kZShib2R5LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYH1gKTtcclxuICAgIH1cclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICBpZiAobm9kZS5pc05vblNjb3BlZFNsb3QpIHtcclxuICAgICAgICAgICAgcHVzaChgLCB1bmRlZmluZWQsIHRydWVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgbmV3bGluZTogbmVlZE5ld2xpbmUgfSA9IG5vZGU7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAodGVzdC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IG5lZWRzUGFyZW5zID0gIWlzU2ltcGxlSWRlbnRpZmllcih0ZXN0LmNvbnRlbnQpO1xyXG4gICAgICAgIG5lZWRzUGFyZW5zICYmIHB1c2goYChgKTtcclxuICAgICAgICBnZW5FeHByZXNzaW9uKHRlc3QsIGNvbnRleHQpO1xyXG4gICAgICAgIG5lZWRzUGFyZW5zICYmIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYChgKTtcclxuICAgICAgICBnZW5Ob2RlKHRlc3QsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIG5lZWROZXdsaW5lICYmIGluZGVudCgpO1xyXG4gICAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xyXG4gICAgbmVlZE5ld2xpbmUgfHwgcHVzaChgIGApO1xyXG4gICAgcHVzaChgPyBgKTtcclxuICAgIGdlbk5vZGUoY29uc2VxdWVudCwgY29udGV4dCk7XHJcbiAgICBjb250ZXh0LmluZGVudExldmVsLS07XHJcbiAgICBuZWVkTmV3bGluZSAmJiBuZXdsaW5lKCk7XHJcbiAgICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XHJcbiAgICBwdXNoKGA6IGApO1xyXG4gICAgY29uc3QgaXNOZXN0ZWQgPSBhbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi87XHJcbiAgICBpZiAoIWlzTmVzdGVkKSB7XHJcbiAgICAgICAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xyXG4gICAgfVxyXG4gICAgZ2VuTm9kZShhbHRlcm5hdGUsIGNvbnRleHQpO1xyXG4gICAgaWYgKCFpc05lc3RlZCkge1xyXG4gICAgICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcclxuICAgIH1cclxuICAgIG5lZWROZXdsaW5lICYmIGRlaW5kZW50KHRydWUgLyogd2l0aG91dCBuZXdsaW5lICovKTtcclxufVxyXG5mdW5jdGlvbiBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV0gfHwgKGApO1xyXG4gICAgaWYgKG5vZGUuaXNWTm9kZSkge1xyXG4gICAgICAgIGluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYCR7aGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyl9KC0xKSxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV0gPSBgKTtcclxuICAgIGdlbk5vZGUobm9kZS52YWx1ZSwgY29udGV4dCk7XHJcbiAgICBpZiAobm9kZS5pc1ZOb2RlKSB7XHJcbiAgICAgICAgcHVzaChgLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBwdXNoKGAke2hlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpfSgxKSxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dYCk7XHJcbiAgICAgICAgZGVpbmRlbnQoKTtcclxuICAgIH1cclxuICAgIHB1c2goYClgKTtcclxufVxuXG5mdW5jdGlvbiB3YWxrSWRlbnRpZmllcnMocm9vdCwgb25JZGVudGlmaWVyLCBpbmNsdWRlQWxsID0gZmFsc2UsIHBhcmVudFN0YWNrID0gW10sIGtub3duSWRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSkge1xyXG4gICAge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1JlZmVyZW5jZWRJZGVudGlmaWVyKGlkLCBwYXJlbnQsIHBhcmVudFN0YWNrKSB7XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQocGFyZW50LCBwYXJlbnRTdGFjaykge1xyXG4gICAgaWYgKHBhcmVudCAmJlxyXG4gICAgICAgIChwYXJlbnQudHlwZSA9PT0gJ09iamVjdFByb3BlcnR5JyB8fCBwYXJlbnQudHlwZSA9PT0gJ0FycmF5UGF0dGVybicpKSB7XHJcbiAgICAgICAgbGV0IGkgPSBwYXJlbnRTdGFjay5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBwID0gcGFyZW50U3RhY2tbaV07XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHAudHlwZSAhPT0gJ09iamVjdFByb3BlcnR5JyAmJiAhcC50eXBlLmVuZHNXaXRoKCdQYXR0ZXJuJykpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIHdhbGtGdW5jdGlvblBhcmFtcyhub2RlLCBvbklkZW50KSB7XHJcbiAgICBmb3IgKGNvbnN0IHAgb2Ygbm9kZS5wYXJhbXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGV4dHJhY3RJZGVudGlmaWVycyhwKSkge1xyXG4gICAgICAgICAgICBvbklkZW50KGlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGJsb2NrLCBvbklkZW50KSB7XHJcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2YgYmxvY2suYm9keSkge1xyXG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0aW9uJykge1xyXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJlKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVjbCBvZiBzdG10LmRlY2xhcmF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBleHRyYWN0SWRlbnRpZmllcnMoZGVjbC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBvbklkZW50KGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzdG10LnR5cGUgPT09ICdGdW5jdGlvbkRlY2xhcmF0aW9uJyB8fFxyXG4gICAgICAgICAgICBzdG10LnR5cGUgPT09ICdDbGFzc0RlY2xhcmF0aW9uJykge1xyXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJlIHx8ICFzdG10LmlkKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIG9uSWRlbnQoc3RtdC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbSwgbm9kZXMgPSBbXSkge1xyXG4gICAgc3dpdGNoIChwYXJhbS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnSWRlbnRpZmllcic6XHJcbiAgICAgICAgICAgIG5vZGVzLnB1c2gocGFyYW0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdNZW1iZXJFeHByZXNzaW9uJzpcclxuICAgICAgICAgICAgbGV0IG9iamVjdCA9IHBhcmFtO1xyXG4gICAgICAgICAgICB3aGlsZSAob2JqZWN0LnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm9iamVjdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ09iamVjdFBhdHRlcm4nOlxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcGFyYW0ucHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gJ1Jlc3RFbGVtZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwcm9wLmFyZ3VtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocHJvcC52YWx1ZSwgbm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0FycmF5UGF0dGVybic6XHJcbiAgICAgICAgICAgIHBhcmFtLmVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudClcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMoZWxlbWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnUmVzdEVsZW1lbnQnOlxyXG4gICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0uYXJndW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQXNzaWdubWVudFBhdHRlcm4nOlxyXG4gICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0ubGVmdCwgbm9kZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlcztcclxufVxyXG5jb25zdCBpc0Z1bmN0aW9uVHlwZSA9IChub2RlKSA9PiB7XHJcbiAgICByZXR1cm4gL0Z1bmN0aW9uKD86RXhwcmVzc2lvbnxEZWNsYXJhdGlvbikkfE1ldGhvZCQvLnRlc3Qobm9kZS50eXBlKTtcclxufTtcclxuY29uc3QgaXNTdGF0aWNQcm9wZXJ0eSA9IChub2RlKSA9PiBub2RlICYmXHJcbiAgICAobm9kZS50eXBlID09PSAnT2JqZWN0UHJvcGVydHknIHx8IG5vZGUudHlwZSA9PT0gJ09iamVjdE1ldGhvZCcpICYmXHJcbiAgICAhbm9kZS5jb21wdXRlZDtcclxuY29uc3QgaXNTdGF0aWNQcm9wZXJ0eUtleSA9IChub2RlLCBwYXJlbnQpID0+IGlzU3RhdGljUHJvcGVydHkocGFyZW50KSAmJiBwYXJlbnQua2V5ID09PSBub2RlO1xuXG4vLyB0aGVzZSBrZXl3b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNpZGUgZXhwcmVzc2lvbnMsIGJ1dCBvcGVyYXRvcnMgbGlrZVxyXG4vLyB0eXBlb2YsIGluc3RhbmNlb2YgYW5kIGluIGFyZSBhbGxvd2VkXHJcbmNvbnN0IHByb2hpYml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgK1xyXG4gICAgKCdkbyxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LCcgK1xyXG4gICAgICAgICdzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsJyArXHJcbiAgICAgICAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMsdHlwZW9mLHZvaWQnKVxyXG4gICAgICAgIC5zcGxpdCgnLCcpXHJcbiAgICAgICAgLmpvaW4oJ1xcXFxifFxcXFxiJykgK1xyXG4gICAgJ1xcXFxiJyk7XHJcbi8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNcclxuY29uc3Qgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xyXG4vKipcclxuICogVmFsaWRhdGUgYSBub24tcHJlZml4ZWQgZXhwcmVzc2lvbi5cclxuICogVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIHVzaW5nIHRoZSBpbi1icm93c2VyIHJ1bnRpbWUgY29tcGlsZXIgc2luY2UgaXRcclxuICogZG9lc24ndCBwcmVmaXggZXhwcmVzc2lvbnMuXHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIGFzUGFyYW1zID0gZmFsc2UsIGFzUmF3U3RhdGVtZW50cyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XHJcbiAgICAvLyBlbXB0eSBleHByZXNzaW9ucyBhcmUgdmFsaWRhdGVkIHBlci1kaXJlY3RpdmUgc2luY2Ugc29tZSBkaXJlY3RpdmVzXHJcbiAgICAvLyBkbyBhbGxvdyBlbXB0eSBleHByZXNzaW9ucy5cclxuICAgIGlmICghZXhwLnRyaW0oKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgICAgbmV3IEZ1bmN0aW9uKGFzUmF3U3RhdGVtZW50c1xyXG4gICAgICAgICAgICA/IGAgJHtleHB9IGBcclxuICAgICAgICAgICAgOiBgcmV0dXJuICR7YXNQYXJhbXMgPyBgKCR7ZXhwfSkgPT4ge31gIDogYCgke2V4cH0pYH1gKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBlLm1lc3NhZ2U7XHJcbiAgICAgICAgY29uc3Qga2V5d29yZE1hdGNoID0gZXhwXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKVxyXG4gICAgICAgICAgICAubWF0Y2gocHJvaGliaXRlZEtleXdvcmRSRSk7XHJcbiAgICAgICAgaWYgKGtleXdvcmRNYXRjaCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gYGF2b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiR7a2V5d29yZE1hdGNoWzBdfVwiYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDQgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRVhQUkVTU0lPTiAqLywgbm9kZS5sb2MsIHVuZGVmaW5lZCwgbWVzc2FnZSkpO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHRyYW5zZm9ybUV4cHJlc3Npb24gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgIG5vZGUuY29udGVudCA9IHByb2Nlc3NFeHByZXNzaW9uKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAvLyBoYW5kbGUgZGlyZWN0aXZlcyBvbiBlbGVtZW50XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGZvciB2LW9uICYgdi1mb3Igc2luY2UgdGhleSBhcmUgc3BlY2lhbCBoYW5kbGVkXHJcbiAgICAgICAgICAgIGlmIChkaXIudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIGRpci5uYW1lICE9PSAnZm9yJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwID0gZGlyLmV4cDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZyA9IGRpci5hcmc7XHJcbiAgICAgICAgICAgICAgICAvLyBkbyBub3QgcHJvY2VzcyBleHAgaWYgdGhpcyBpcyB2LW9uOmFyZyAtIHdlIG5lZWQgc3BlY2lhbCBoYW5kbGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yIHdyYXBwaW5nIGlubGluZSBzdGF0ZW1lbnRzLlxyXG4gICAgICAgICAgICAgICAgaWYgKGV4cCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGV4cC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEoZGlyLm5hbWUgPT09ICdvbicgJiYgYXJnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5leHAgPSBwcm9jZXNzRXhwcmVzc2lvbihleHAsIGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNsb3QgYXJncyBtdXN0IGJlIHByb2Nlc3NlZCBhcyBmdW5jdGlvbiBwYXJhbXNcclxuICAgICAgICAgICAgICAgICAgICBkaXIubmFtZSA9PT0gJ3Nsb3QnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChhcmcgJiYgYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmICFhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuYXJnID0gcHJvY2Vzc0V4cHJlc3Npb24oYXJnLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuLy8gSW1wb3J0YW50OiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHVzZXMgTm9kZS5qcyBvbmx5IGRlcGVuZGVuY2llcywgaXQgc2hvdWxkXHJcbi8vIGFsd2F5cyBiZSB1c2VkIHdpdGggYSBsZWFkaW5nICF0cnVlIGNoZWNrIHNvIHRoYXQgaXQgY2FuIGJlXHJcbi8vIHRyZWUtc2hha2VuIGZyb20gdGhlIGJyb3dzZXIgYnVpbGQuXHJcbmZ1bmN0aW9uIHByb2Nlc3NFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIFxyXG4vLyBzb21lIGV4cHJlc3Npb25zIGxpa2Ugdi1zbG90IHByb3BzICYgdi1mb3IgYWxpYXNlcyBzaG91bGQgYmUgcGFyc2VkIGFzXHJcbi8vIGZ1bmN0aW9uIHBhcmFtc1xyXG5hc1BhcmFtcyA9IGZhbHNlLCBcclxuLy8gdi1vbiBoYW5kbGVyIHZhbHVlcyBtYXkgY29udGFpbiBtdWx0aXBsZSBzdGF0ZW1lbnRzXHJcbmFzUmF3U3RhdGVtZW50cyA9IGZhbHNlLCBsb2NhbFZhcnMgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQuaWRlbnRpZmllcnMpKSB7XHJcbiAgICB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAvLyBzaW1wbGUgaW4tYnJvd3NlciB2YWxpZGF0aW9uIChzYW1lIGxvZ2ljIGluIDIueClcclxuICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcywgYXNSYXdTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtSWYgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKC9eKGlmfGVsc2V8ZWxzZS1pZikkLywgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIChpZk5vZGUsIGJyYW5jaCwgaXNSb290KSA9PiB7XHJcbiAgICAgICAgLy8gIzE1ODc6IFdlIG5lZWQgdG8gZHluYW1pY2FsbHkgaW5jcmVtZW50IHRoZSBrZXkgYmFzZWQgb24gdGhlIGN1cnJlbnRcclxuICAgICAgICAvLyBub2RlJ3Mgc2libGluZyBub2Rlcywgc2luY2UgY2hhaW5lZCB2LWlmL2Vsc2UgYnJhbmNoZXMgYXJlXHJcbiAgICAgICAgLy8gcmVuZGVyZWQgYXQgdGhlIHNhbWUgZGVwdGhcclxuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihpZk5vZGUpO1xyXG4gICAgICAgIGxldCBrZXkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpLS0gPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8pIHtcclxuICAgICAgICAgICAgICAgIGtleSArPSBzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBFeGl0IGNhbGxiYWNrLiBDb21wbGV0ZSB0aGUgY29kZWdlbk5vZGUgd2hlbiBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuXHJcbiAgICAgICAgLy8gdHJhbnNmb3JtZWQuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgaWZOb2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYnJhbmNoLCBrZXksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoaXMgYnJhbmNoJ3MgY29kZWdlbiBub2RlIHRvIHRoZSB2LWlmIHJvb3QuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDb25kaXRpb24gPSBnZXRQYXJlbnRDb25kaXRpb24oaWZOb2RlLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgIHBhcmVudENvbmRpdGlvbi5hbHRlcm5hdGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleSArIGlmTm9kZS5icmFuY2hlcy5sZW5ndGggLSAxLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufSk7XHJcbi8vIHRhcmdldC1hZ25vc3RpYyB0cmFuc2Zvcm0gdXNlZCBmb3IgYm90aCBDbGllbnQgYW5kIFNTUlxyXG5mdW5jdGlvbiBwcm9jZXNzSWYobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgaWYgKGRpci5uYW1lICE9PSAnZWxzZScgJiZcclxuICAgICAgICAoIWRpci5leHAgfHwgIWRpci5leHAuY29udGVudC50cmltKCkpKSB7XHJcbiAgICAgICAgY29uc3QgbG9jID0gZGlyLmV4cCA/IGRpci5leHAubG9jIDogbm9kZS5sb2M7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMjggLyogRXJyb3JDb2Rlcy5YX1ZfSUZfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIGRpci5leHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0cnVlYCwgZmFsc2UsIGxvYyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUgJiYgZGlyLmV4cCkge1xyXG4gICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyLm5hbWUgPT09ICdpZicpIHtcclxuICAgICAgICBjb25zdCBicmFuY2ggPSBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpO1xyXG4gICAgICAgIGNvbnN0IGlmTm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogOSAvKiBOb2RlVHlwZXMuSUYgKi8sXHJcbiAgICAgICAgICAgIGxvYzogbm9kZS5sb2MsXHJcbiAgICAgICAgICAgIGJyYW5jaGVzOiBbYnJhbmNoXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29udGV4dC5yZXBsYWNlTm9kZShpZk5vZGUpO1xyXG4gICAgICAgIGlmIChwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0NvZGVnZW4oaWZOb2RlLCBicmFuY2gsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGxvY2F0ZSB0aGUgYWRqYWNlbnQgdi1pZlxyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcclxuICAgICAgICBsZXQgaSA9IHNpYmxpbmdzLmluZGV4T2Yobm9kZSk7XHJcbiAgICAgICAgd2hpbGUgKGktLSA+PSAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZShzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbW1lbnRzLnVuc2hpZnQoc2libGluZyk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2libGluZyAmJlxyXG4gICAgICAgICAgICAgICAgc2libGluZy50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmXHJcbiAgICAgICAgICAgICAgICAhc2libGluZy5jb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZShzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHYtZWxzZSB3YXMgZm9sbG93ZWQgYnkgdi1lbHNlLWlmXHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyLm5hbWUgPT09ICdlbHNlLWlmJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXNbc2libGluZy5icmFuY2hlcy5sZW5ndGggLSAxXS5jb25kaXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBpZiBub2RlJ3MgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyAjMzYxOSBpZ25vcmUgY29tbWVudHMgaWYgdGhlIHYtaWYgaXMgZGlyZWN0IGNoaWxkIG9mIDx0cmFuc2l0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICEoY29udGV4dC5wYXJlbnQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5wYXJlbnQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0J1aWx0SW5UeXBlKGNvbnRleHQucGFyZW50LnRhZywgJ3RyYW5zaXRpb24nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmFuY2guY2hpbGRyZW4gPSBbLi4uY29tbWVudHMsIC4uLmJyYW5jaC5jaGlsZHJlbl07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB1c2VyIGlzIGZvcmNpbmcgc2FtZSBrZXkgb24gZGlmZmVyZW50IGJyYW5jaGVzXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYnJhbmNoLnVzZXJLZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLmJyYW5jaGVzLmZvckVhY2goKHsgdXNlcktleSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTYW1lS2V5KHVzZXJLZXksIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigyOSAvKiBFcnJvckNvZGVzLlhfVl9JRl9TQU1FX0tFWSAqLywgYnJhbmNoLnVzZXJLZXkubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMucHVzaChicmFuY2gpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb25FeGl0ID0gcHJvY2Vzc0NvZGVnZW4gJiYgcHJvY2Vzc0NvZGVnZW4oc2libGluZywgYnJhbmNoLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgYnJhbmNoIHdhcyByZW1vdmVkLCBpdCB3aWxsIG5vdCBiZSB0cmF2ZXJzZWQuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gdHJhdmVyc2UgaGVyZS5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlTm9kZShicmFuY2gsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY2FsbCBvbiBleGl0XHJcbiAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgIG9uRXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHJlc2V0IGN1cnJlbnROb2RlIGFmdGVyIHRyYXZlcnNhbCB0byBpbmRpY2F0ZSB0aGlzXHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIGhhcyBiZWVuIHJlbW92ZWQuXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUlmQnJhbmNoKG5vZGUsIGRpcikge1xyXG4gICAgY29uc3QgaXNUZW1wbGF0ZUlmID0gbm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLztcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLyxcclxuICAgICAgICBsb2M6IG5vZGUubG9jLFxyXG4gICAgICAgIGNvbmRpdGlvbjogZGlyLm5hbWUgPT09ICdlbHNlJyA/IHVuZGVmaW5lZCA6IGRpci5leHAsXHJcbiAgICAgICAgY2hpbGRyZW46IGlzVGVtcGxhdGVJZiAmJiAhZmluZERpcihub2RlLCAnZm9yJykgPyBub2RlLmNoaWxkcmVuIDogW25vZGVdLFxyXG4gICAgICAgIHVzZXJLZXk6IGZpbmRQcm9wKG5vZGUsIGBrZXlgKSxcclxuICAgICAgICBpc1RlbXBsYXRlSWZcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCkge1xyXG4gICAgaWYgKGJyYW5jaC5jb25kaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGJyYW5jaC5jb25kaXRpb24sIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCksIFxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBwYXNzIGluIGFzQmxvY2s6IHRydWUgc28gdGhhdCB0aGUgY29tbWVudCBub2RlIGNhbGxcclxuICAgICAgICAvLyBjbG9zZXMgdGhlIGN1cnJlbnQgYmxvY2suXHJcbiAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoQ1JFQVRFX0NPTU1FTlQpLCBbXHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdcInYtaWZcIicgOiAnXCJcIicsXHJcbiAgICAgICAgICAgICd0cnVlJ1xyXG4gICAgICAgIF0pKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBrZXlQcm9wZXJ0eSA9IGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke2tleUluZGV4fWAsIGZhbHNlLCBsb2NTdHViLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSk7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBicmFuY2g7XHJcbiAgICBjb25zdCBmaXJzdENoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGZpcnN0Q2hpbGQudHlwZSAhPT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLztcclxuICAgIGlmIChuZWVkRnJhZ21lbnRXcmFwcGVyKSB7XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBmaXJzdENoaWxkLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gb3B0aW1pemUgYXdheSBuZXN0ZWQgZnJhZ21lbnRzIHdoZW4gY2hpbGQgaXMgYSBGb3JOb2RlXHJcbiAgICAgICAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGluamVjdFByb3Aodm5vZGVDYWxsLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiB2bm9kZUNhbGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hGbGFnID0gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgIGxldCBwYXRjaEZsYWdUZXh0ID0gUGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgZnJhZ21lbnQgYWN0dWFsbHkgY29udGFpbnMgYSBzaW5nbGUgdmFsaWQgY2hpbGQgd2l0aFxyXG4gICAgICAgICAgICAvLyB0aGUgcmVzdCBiZWluZyBjb21tZW50c1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAhYnJhbmNoLmlzVGVtcGxhdGVJZiAmJlxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWdUZXh0ICs9IGAsICR7UGF0Y2hGbGFnTmFtZXNbMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovXX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihba2V5UHJvcGVydHldKSwgY2hpbGRyZW4sIHBhdGNoRmxhZyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7cGF0Y2hGbGFnVGV4dH0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwgZmFsc2UsIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovLCBicmFuY2gubG9jKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCByZXQgPSBmaXJzdENoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGdldE1lbW9lZFZOb2RlQ2FsbChyZXQpO1xyXG4gICAgICAgIC8vIENoYW5nZSBjcmVhdGVWTm9kZSB0byBjcmVhdGVCbG9jay5cclxuICAgICAgICBpZiAodm5vZGVDYWxsLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgIG1ha2VCbG9jayh2bm9kZUNhbGwsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgYnJhbmNoIGtleVxyXG4gICAgICAgIGluamVjdFByb3Aodm5vZGVDYWxsLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1NhbWVLZXkoYSwgYikge1xyXG4gICAgaWYgKCFhIHx8IGEudHlwZSAhPT0gYi50eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGEudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgaWYgKGEudmFsdWUuY29udGVudCAhPT0gYi52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkaXJlY3RpdmVcclxuICAgICAgICBjb25zdCBleHAgPSBhLmV4cDtcclxuICAgICAgICBjb25zdCBicmFuY2hFeHAgPSBiLmV4cDtcclxuICAgICAgICBpZiAoZXhwLnR5cGUgIT09IGJyYW5jaEV4cC50eXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4cC50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICBleHAuaXNTdGF0aWMgIT09IGJyYW5jaEV4cC5pc1N0YXRpYyB8fFxyXG4gICAgICAgICAgICBleHAuY29udGVudCAhPT0gYnJhbmNoRXhwLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIGdldFBhcmVudENvbmRpdGlvbihub2RlKSB7XHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGlmIChub2RlLmFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBub2RlID0gbm9kZS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtRm9yID0gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSgnZm9yJywgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBoZWxwZXIsIHJlbW92ZUhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiBwcm9jZXNzRm9yKG5vZGUsIGRpciwgY29udGV4dCwgZm9yTm9kZSA9PiB7XHJcbiAgICAgICAgLy8gY3JlYXRlIHRoZSBsb29wIHJlbmRlciBmdW5jdGlvbiBleHByZXNzaW9uIG5vdywgYW5kIGFkZCB0aGVcclxuICAgICAgICAvLyBpdGVyYXRvciBvbiBleGl0IGFmdGVyIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW4gdHJhdmVyc2VkXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oaGVscGVyKFJFTkRFUl9MSVNUKSwgW1xyXG4gICAgICAgICAgICBmb3JOb2RlLnNvdXJjZVxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIGNvbnN0IGlzVGVtcGxhdGUgPSBpc1RlbXBsYXRlTm9kZShub2RlKTtcclxuICAgICAgICBjb25zdCBtZW1vID0gZmluZERpcihub2RlLCAnbWVtbycpO1xyXG4gICAgICAgIGNvbnN0IGtleVByb3AgPSBmaW5kUHJvcChub2RlLCBga2V5YCk7XHJcbiAgICAgICAgY29uc3Qga2V5RXhwID0ga2V5UHJvcCAmJlxyXG4gICAgICAgICAgICAoa2V5UHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi9cclxuICAgICAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXlQcm9wLnZhbHVlLmNvbnRlbnQsIHRydWUpXHJcbiAgICAgICAgICAgICAgICA6IGtleVByb3AuZXhwKTtcclxuICAgICAgICBjb25zdCBrZXlQcm9wZXJ0eSA9IGtleVByb3AgPyBjcmVhdGVPYmplY3RQcm9wZXJ0eShga2V5YCwga2V5RXhwKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgaXNTdGFibGVGcmFnbWVudCA9IGZvck5vZGUuc291cmNlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlLmNvbnN0VHlwZSA+IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRGbGFnID0gaXNTdGFibGVGcmFnbWVudFxyXG4gICAgICAgICAgICA/IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXHJcbiAgICAgICAgICAgIDoga2V5UHJvcFxyXG4gICAgICAgICAgICAgICAgPyAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgOiAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovO1xyXG4gICAgICAgIGZvck5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgdW5kZWZpbmVkLCByZW5kZXJFeHAsIGZyYWdtZW50RmxhZyArXHJcbiAgICAgICAgICAgICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbZnJhZ21lbnRGbGFnXX0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSAvKiBpc0Jsb2NrICovLCAhaXNTdGFibGVGcmFnbWVudCAvKiBkaXNhYmxlVHJhY2tpbmcgKi8sIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovLCBub2RlLmxvYyk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgLy8gZmluaXNoIHRoZSBjb2RlZ2VuIG5vdyB0aGF0IGFsbCBjaGlsZHJlbiBoYXZlIGJlZW4gdHJhdmVyc2VkXHJcbiAgICAgICAgICAgIGxldCBjaGlsZEJsb2NrO1xyXG4gICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBmb3JOb2RlO1xyXG4gICAgICAgICAgICAvLyBjaGVjayA8dGVtcGxhdGUgdi1mb3I+IGtleSBwbGFjZW1lbnRcclxuICAgICAgICAgICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUpICYmIGlzVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpbmRQcm9wKGMsICdrZXknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzMgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQgKi8sIGtleS5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbmVlZEZyYWdtZW50V3JhcHBlciA9IGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fCBjaGlsZHJlblswXS50eXBlICE9PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgICAgICAgICBjb25zdCBzbG90T3V0bGV0ID0gaXNTbG90T3V0bGV0KG5vZGUpXHJcbiAgICAgICAgICAgICAgICA/IG5vZGVcclxuICAgICAgICAgICAgICAgIDogaXNUZW1wbGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTbG90T3V0bGV0KG5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgPyBub2RlLmNoaWxkcmVuWzBdIC8vIGFwaS1leHRyYWN0b3Igc29tZWhvdyBmYWlscyB0byBpbmZlciB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoc2xvdE91dGxldCkge1xyXG4gICAgICAgICAgICAgICAgLy8gPHNsb3Qgdi1mb3I9XCIuLi5cIj4gb3IgPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCI+PHNsb3QvPjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gc2xvdE91dGxldC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCIgOmtleT1cIi4uLlwiPjxzbG90Lz48L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gaW5qZWN0IHRoZSBrZXkgdG8gdGhlIHJlbmRlclNsb3QoKSBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9wcyBmb3IgcmVuZGVyU2xvdCBpcyBwYXNzZWQgYXMgdGhlIDNyZCBhcmd1bWVudC5cclxuICAgICAgICAgICAgICAgICAgICBpbmplY3RQcm9wKGNoaWxkQmxvY2ssIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuZWVkRnJhZ21lbnRXcmFwcGVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIj4gd2l0aCB0ZXh0IG9yIG11bHRpLWVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgZ2VuZXJhdGUgYSBmcmFnbWVudCBibG9jayBmb3IgZWFjaCBsb29wXHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIGtleVByb3BlcnR5ID8gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihba2V5UHJvcGVydHldKSA6IHVuZGVmaW5lZCwgbm9kZS5jaGlsZHJlbiwgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8gK1xyXG4gICAgICAgICAgICAgICAgICAgICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dfSAqL2BcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCB1bmRlZmluZWQsIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBlbGVtZW50IHYtZm9yLiBEaXJlY3RseSB1c2UgdGhlIGNoaWxkJ3MgY29kZWdlbk5vZGVcclxuICAgICAgICAgICAgICAgIC8vIGJ1dCBtYXJrIGl0IGFzIGEgYmxvY2suXHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gY2hpbGRyZW5bMF1cclxuICAgICAgICAgICAgICAgICAgICAuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZW1wbGF0ZSAmJiBrZXlQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluamVjdFByb3AoY2hpbGRCbG9jaywga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jayAhPT0gIWlzU3RhYmxlRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBmcm9tIGJsb2NrIHRvIHZub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gdm5vZGUgdG8gYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrLmlzQmxvY2sgPSAhaXNTdGFibGVGcmFnbWVudDtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWVtbykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9vcCA9IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGZvck5vZGUucGFyc2VSZXN1bHQsIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVkYClcclxuICAgICAgICAgICAgICAgIF0pKTtcclxuICAgICAgICAgICAgICAgIGxvb3AuYm9keSA9IGNyZWF0ZUJsb2NrU3RhdGVtZW50KFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Bjb25zdCBfbWVtbyA9IChgLCBtZW1vLmV4cCwgYClgXSksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGlmIChfY2FjaGVkYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGtleUV4cCA/IFtgICYmIF9jYWNoZWQua2V5ID09PSBgLCBrZXlFeHBdIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgICYmICR7Y29udGV4dC5oZWxwZXJTdHJpbmcoSVNfTUVNT19TQU1FKX0oX2NhY2hlZCwgX21lbW8pKSByZXR1cm4gX2NhY2hlZGBcclxuICAgICAgICAgICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Bjb25zdCBfaXRlbSA9IGAsIGNoaWxkQmxvY2tdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfaXRlbS5tZW1vID0gX21lbW9gKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGByZXR1cm4gX2l0ZW1gKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJFeHAuYXJndW1lbnRzLnB1c2gobG9vcCwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2NhY2hlYCksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGNvbnRleHQuY2FjaGVkKyspKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJFeHAuYXJndW1lbnRzLnB1c2goY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCksIGNoaWxkQmxvY2ssIHRydWUgLyogZm9yY2UgbmV3bGluZSAqLykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59KTtcclxuLy8gdGFyZ2V0LWFnbm9zdGljIHRyYW5zZm9ybSB1c2VkIGZvciBib3RoIENsaWVudCBhbmQgU1NSXHJcbmZ1bmN0aW9uIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzEgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlRm9yRXhwcmVzc2lvbihcclxuICAgIC8vIGNhbiBvbmx5IGJlIHNpbXBsZSBleHByZXNzaW9uIGJlY2F1c2UgdkZvciB0cmFuc2Zvcm0gaXMgYXBwbGllZFxyXG4gICAgLy8gYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtLlxyXG4gICAgZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICBpZiAoIXBhcnNlUmVzdWx0KSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBhZGRJZGVudGlmaWVycywgcmVtb3ZlSWRlbnRpZmllcnMsIHNjb3BlcyB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgc291cmNlLCB2YWx1ZSwga2V5LCBpbmRleCB9ID0gcGFyc2VSZXN1bHQ7XHJcbiAgICBjb25zdCBmb3JOb2RlID0ge1xyXG4gICAgICAgIHR5cGU6IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8sXHJcbiAgICAgICAgbG9jOiBkaXIubG9jLFxyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICB2YWx1ZUFsaWFzOiB2YWx1ZSxcclxuICAgICAgICBrZXlBbGlhczoga2V5LFxyXG4gICAgICAgIG9iamVjdEluZGV4QWxpYXM6IGluZGV4LFxyXG4gICAgICAgIHBhcnNlUmVzdWx0LFxyXG4gICAgICAgIGNoaWxkcmVuOiBpc1RlbXBsYXRlTm9kZShub2RlKSA/IG5vZGUuY2hpbGRyZW4gOiBbbm9kZV1cclxuICAgIH07XHJcbiAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGZvck5vZGUpO1xyXG4gICAgLy8gYm9va2tlZXBpbmdcclxuICAgIHNjb3Blcy52Rm9yKys7XHJcbiAgICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihmb3JOb2RlKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgc2NvcGVzLnZGb3ItLTtcclxuICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICBvbkV4aXQoKTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgZm9yQWxpYXNSRSA9IC8oW1xcc1xcU10qPylcXHMrKD86aW58b2YpXFxzKyhbXFxzXFxTXSopLztcclxuLy8gVGhpcyByZWdleCBkb2Vzbid0IGNvdmVyIHRoZSBjYXNlIGlmIGtleSBvciBpbmRleCBhbGlhc2VzIGhhdmUgZGVzdHJ1Y3R1cmluZyxcclxuLy8gYnV0IHRob3NlIGRvIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBmaXJzdCBwbGFjZSwgc28gdGhpcyB3b3JrcyBpbiBwcmFjdGljZS5cclxuY29uc3QgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLztcclxuY29uc3Qgc3RyaXBQYXJlbnNSRSA9IC9eXFwofFxcKSQvZztcclxuZnVuY3Rpb24gcGFyc2VGb3JFeHByZXNzaW9uKGlucHV0LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBsb2MgPSBpbnB1dC5sb2M7XHJcbiAgICBjb25zdCBleHAgPSBpbnB1dC5jb250ZW50O1xyXG4gICAgY29uc3QgaW5NYXRjaCA9IGV4cC5tYXRjaChmb3JBbGlhc1JFKTtcclxuICAgIGlmICghaW5NYXRjaClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjb25zdCBbLCBMSFMsIFJIU10gPSBpbk1hdGNoO1xyXG4gICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgIHNvdXJjZTogY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgUkhTLnRyaW0oKSwgZXhwLmluZGV4T2YoUkhTLCBMSFMubGVuZ3RoKSksXHJcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcclxuICAgICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICBpbmRleDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQuc291cmNlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGxldCB2YWx1ZUNvbnRlbnQgPSBMSFMudHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgJycpLnRyaW0oKTtcclxuICAgIGNvbnN0IHRyaW1tZWRPZmZzZXQgPSBMSFMuaW5kZXhPZih2YWx1ZUNvbnRlbnQpO1xyXG4gICAgY29uc3QgaXRlcmF0b3JNYXRjaCA9IHZhbHVlQ29udGVudC5tYXRjaChmb3JJdGVyYXRvclJFKTtcclxuICAgIGlmIChpdGVyYXRvck1hdGNoKSB7XHJcbiAgICAgICAgdmFsdWVDb250ZW50ID0gdmFsdWVDb250ZW50LnJlcGxhY2UoZm9ySXRlcmF0b3JSRSwgJycpLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBrZXlDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XHJcbiAgICAgICAgbGV0IGtleU9mZnNldDtcclxuICAgICAgICBpZiAoa2V5Q29udGVudCkge1xyXG4gICAgICAgICAgICBrZXlPZmZzZXQgPSBleHAuaW5kZXhPZihrZXlDb250ZW50LCB0cmltbWVkT2Zmc2V0ICsgdmFsdWVDb250ZW50Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXkgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBrZXlDb250ZW50LCBrZXlPZmZzZXQpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmtleSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsyXS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmRleCA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIGluZGV4Q29udGVudCwgZXhwLmluZGV4T2YoaW5kZXhDb250ZW50LCByZXN1bHQua2V5XHJcbiAgICAgICAgICAgICAgICAgICAgPyBrZXlPZmZzZXQgKyBrZXlDb250ZW50Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgIDogdHJpbW1lZE9mZnNldCArIHZhbHVlQ29udGVudC5sZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmluZGV4LCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh2YWx1ZUNvbnRlbnQpIHtcclxuICAgICAgICByZXN1bHQudmFsdWUgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCB2YWx1ZUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC52YWx1ZSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBbGlhc0V4cHJlc3Npb24ocmFuZ2UsIGNvbnRlbnQsIG9mZnNldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgZmFsc2UsIGdldElubmVyUmFuZ2UocmFuZ2UsIG9mZnNldCwgY29udGVudC5sZW5ndGgpKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JMb29wUGFyYW1zKHsgdmFsdWUsIGtleSwgaW5kZXggfSwgbWVtb0FyZ3MgPSBbXSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVBhcmFtc0xpc3QoW3ZhbHVlLCBrZXksIGluZGV4LCAuLi5tZW1vQXJnc10pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcmFtc0xpc3QoYXJncykge1xyXG4gICAgbGV0IGkgPSBhcmdzLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAoYXJnc1tpXSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJnc1xyXG4gICAgICAgIC5zbGljZSgwLCBpICsgMSlcclxuICAgICAgICAubWFwKChhcmcsIGkpID0+IGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfYC5yZXBlYXQoaSArIDEpLCBmYWxzZSkpO1xyXG59XG5cbmNvbnN0IGRlZmF1bHRGYWxsYmFjayA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHVuZGVmaW5lZGAsIGZhbHNlKTtcclxuLy8gQSBOb2RlVHJhbnNmb3JtIHRoYXQ6XHJcbi8vIDEuIFRyYWNrcyBzY29wZSBpZGVudGlmaWVycyBmb3Igc2NvcGVkIHNsb3RzIHNvIHRoYXQgdGhleSBkb24ndCBnZXQgcHJlZml4ZWRcclxuLy8gICAgYnkgdHJhbnNmb3JtRXhwcmVzc2lvbi4gVGhpcyBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGhcclxuLy8gICAgeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9LlxyXG4vLyAyLiBUcmFjayB2LXNsb3QgZGVwdGhzIHNvIHRoYXQgd2Uga25vdyBhIHNsb3QgaXMgaW5zaWRlIGFub3RoZXIgc2xvdC5cclxuLy8gICAgTm90ZSB0aGUgZXhpdCBjYWxsYmFjayBpcyBleGVjdXRlZCBiZWZvcmUgYnVpbGRTbG90cygpIG9uIHRoZSBzYW1lIG5vZGUsXHJcbi8vICAgIHNvIG9ubHkgbmVzdGVkIHNsb3RzIHNlZSBwb3NpdGl2ZSBudW1iZXJzLlxyXG5jb25zdCB0cmFja1Nsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIChub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLyB8fFxyXG4gICAgICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovKSkge1xyXG4gICAgICAgIC8vIFdlIGFyZSBvbmx5IGNoZWNraW5nIG5vbi1lbXB0eSB2LXNsb3QgaGVyZVxyXG4gICAgICAgIC8vIHNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBzbG90cyB0aGF0IGludHJvZHVjZSBzY29wZSB2YXJpYWJsZXMuXHJcbiAgICAgICAgY29uc3QgdlNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90Jyk7XHJcbiAgICAgICAgaWYgKHZTbG90KSB7XHJcbiAgICAgICAgICAgIHZTbG90LmV4cDtcclxuICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4vLyBBIE5vZGVUcmFuc2Zvcm0gdGhhdCB0cmFja3Mgc2NvcGUgaWRlbnRpZmllcnMgZm9yIHNjb3BlZCBzbG90cyB3aXRoIHYtZm9yLlxyXG4vLyBUaGlzIHRyYW5zZm9ybSBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGggeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9XHJcbmNvbnN0IHRyYWNrVkZvclNsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgbGV0IHZGb3I7XHJcbiAgICBpZiAoaXNUZW1wbGF0ZU5vZGUobm9kZSkgJiZcclxuICAgICAgICBub2RlLnByb3BzLnNvbWUoaXNWU2xvdCkgJiZcclxuICAgICAgICAodkZvciA9IGZpbmREaXIobm9kZSwgJ2ZvcicpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICh2Rm9yLnBhcnNlUmVzdWx0ID0gcGFyc2VGb3JFeHByZXNzaW9uKHZGb3IuZXhwLCBjb250ZXh0KSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBrZXksIGluZGV4IH0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkSWRlbnRpZmllcnMsIHJlbW92ZUlkZW50aWZpZXJzIH0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICB2YWx1ZSAmJiBhZGRJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGtleSAmJiBhZGRJZGVudGlmaWVycyhrZXkpO1xyXG4gICAgICAgICAgICBpbmRleCAmJiBhZGRJZGVudGlmaWVycyhpbmRleCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSAmJiByZW1vdmVJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBrZXkgJiYgcmVtb3ZlSWRlbnRpZmllcnMoa2V5KTtcclxuICAgICAgICAgICAgICAgIGluZGV4ICYmIHJlbW92ZUlkZW50aWZpZXJzKGluZGV4KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGJ1aWxkQ2xpZW50U2xvdEZuID0gKHByb3BzLCBjaGlsZHJlbiwgbG9jKSA9PiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocHJvcHMsIGNoaWxkcmVuLCBmYWxzZSAvKiBuZXdsaW5lICovLCB0cnVlIC8qIGlzU2xvdCAqLywgY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW5bMF0ubG9jIDogbG9jKTtcclxuLy8gSW5zdGVhZCBvZiBiZWluZyBhIERpcmVjdGl2ZVRyYW5zZm9ybSwgdi1zbG90IHByb2Nlc3NpbmcgaXMgY2FsbGVkIGR1cmluZ1xyXG4vLyB0cmFuc2Zvcm1FbGVtZW50IHRvIGJ1aWxkIHRoZSBzbG90cyBvYmplY3QgZm9yIGEgY29tcG9uZW50LlxyXG5mdW5jdGlvbiBidWlsZFNsb3RzKG5vZGUsIGNvbnRleHQsIGJ1aWxkU2xvdEZuID0gYnVpbGRDbGllbnRTbG90Rm4pIHtcclxuICAgIGNvbnRleHQuaGVscGVyKFdJVEhfQ1RYKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGxvYyB9ID0gbm9kZTtcclxuICAgIGNvbnN0IHNsb3RzUHJvcGVydGllcyA9IFtdO1xyXG4gICAgY29uc3QgZHluYW1pY1Nsb3RzID0gW107XHJcbiAgICAvLyBJZiB0aGUgc2xvdCBpcyBpbnNpZGUgYSB2LWZvciBvciBhbm90aGVyIHYtc2xvdCwgZm9yY2UgaXQgdG8gYmUgZHluYW1pY1xyXG4gICAgLy8gc2luY2UgaXQgbGlrZWx5IHVzZXMgYSBzY29wZSB2YXJpYWJsZS5cclxuICAgIGxldCBoYXNEeW5hbWljU2xvdHMgPSBjb250ZXh0LnNjb3Blcy52U2xvdCA+IDAgfHwgY29udGV4dC5zY29wZXMudkZvciA+IDA7XHJcbiAgICAvLyAxLiBDaGVjayBmb3Igc2xvdCB3aXRoIHNsb3RQcm9wcyBvbiBjb21wb25lbnQgaXRzZWxmLlxyXG4gICAgLy8gICAgPENvbXAgdi1zbG90PVwieyBwcm9wIH1cIi8+XHJcbiAgICBjb25zdCBvbkNvbXBvbmVudFNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90JywgdHJ1ZSk7XHJcbiAgICBpZiAob25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgY29uc3QgeyBhcmcsIGV4cCB9ID0gb25Db21wb25lbnRTbG90O1xyXG4gICAgICAgIGlmIChhcmcgJiYgIWlzU3RhdGljRXhwKGFyZykpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ2RlZmF1bHQnLCB0cnVlKSwgYnVpbGRTbG90Rm4oZXhwLCBjaGlsZHJlbiwgbG9jKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkcmVuIGFuZCBjaGVjayBmb3IgdGVtcGxhdGUgc2xvdHNcclxuICAgIC8vICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Zm9vPVwieyBwcm9wIH1cIj5cclxuICAgIGxldCBoYXNUZW1wbGF0ZVNsb3RzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzTmFtZWREZWZhdWx0U2xvdCA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4gPSBbXTtcclxuICAgIGNvbnN0IHNlZW5TbG90TmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgICBsZXQgY29uZGl0aW9uYWxCcmFuY2hJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBsZXQgc2xvdERpcjtcclxuICAgICAgICBpZiAoIWlzVGVtcGxhdGVOb2RlKHNsb3RFbGVtZW50KSB8fFxyXG4gICAgICAgICAgICAhKHNsb3REaXIgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnc2xvdCcsIHRydWUpKSkge1xyXG4gICAgICAgICAgICAvLyBub3QgYSA8dGVtcGxhdGUgdi1zbG90Piwgc2tpcC5cclxuICAgICAgICAgICAgaWYgKHNsb3RFbGVtZW50LnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLnB1c2goc2xvdEVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgICAgIC8vIGFscmVhZHkgaGFzIG9uLWNvbXBvbmVudCBzbG90IC0gdGhpcyBpcyBpbmNvcnJlY3QgdXNhZ2UuXHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM3IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqLywgc2xvdERpci5sb2MpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhhc1RlbXBsYXRlU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IHNsb3RDaGlsZHJlbiwgbG9jOiBzbG90TG9jIH0gPSBzbG90RWxlbWVudDtcclxuICAgICAgICBjb25zdCB7IGFyZzogc2xvdE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBkZWZhdWx0YCwgdHJ1ZSksIGV4cDogc2xvdFByb3BzLCBsb2M6IGRpckxvYyB9ID0gc2xvdERpcjtcclxuICAgICAgICAvLyBjaGVjayBpZiBuYW1lIGlzIGR5bmFtaWMuXHJcbiAgICAgICAgbGV0IHN0YXRpY1Nsb3ROYW1lO1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0V4cChzbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgc3RhdGljU2xvdE5hbWUgPSBzbG90TmFtZSA/IHNsb3ROYW1lLmNvbnRlbnQgOiBgZGVmYXVsdGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzbG90RnVuY3Rpb24gPSBidWlsZFNsb3RGbihzbG90UHJvcHMsIHNsb3RDaGlsZHJlbiwgc2xvdExvYyk7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBzbG90IGlzIGNvbmRpdGlvbmFsICh2LWlmL3YtZm9yKVxyXG4gICAgICAgIGxldCB2SWY7XHJcbiAgICAgICAgbGV0IHZFbHNlO1xyXG4gICAgICAgIGxldCB2Rm9yO1xyXG4gICAgICAgIGlmICgodklmID0gZmluZERpcihzbG90RWxlbWVudCwgJ2lmJykpKSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgICAgIGR5bmFtaWNTbG90cy5wdXNoKGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbih2SWYuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyksIGRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgodkVsc2UgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAvXmVsc2UoLWlmKT8kLywgdHJ1ZSAvKiBhbGxvd0VtcHR5ICovKSkpIHtcclxuICAgICAgICAgICAgLy8gZmluZCBhZGphY2VudCB2LWlmXHJcbiAgICAgICAgICAgIGxldCBqID0gaTtcclxuICAgICAgICAgICAgbGV0IHByZXY7XHJcbiAgICAgICAgICAgIHdoaWxlIChqLS0pIHtcclxuICAgICAgICAgICAgICAgIHByZXYgPSBjaGlsZHJlbltqXTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2LnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldiAmJiBpc1RlbXBsYXRlTm9kZShwcmV2KSAmJiBmaW5kRGlyKHByZXYsICdpZicpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgbm9kZVxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoaXMgc2xvdCB0byBwcmV2aW91cyBjb25kaXRpb25hbFxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gZHluYW1pY1Nsb3RzW2R5bmFtaWNTbG90cy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb25kaXRpb25hbC5hbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmFsdGVybmF0ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsLmFsdGVybmF0ZSA9IHZFbHNlLmV4cFxyXG4gICAgICAgICAgICAgICAgICAgID8gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHZFbHNlLmV4cCwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uLCBjb25kaXRpb25hbEJyYW5jaEluZGV4KyspLCBkZWZhdWx0RmFsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgOiBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMCAvKiBFcnJvckNvZGVzLlhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovLCB2RWxzZS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgodkZvciA9IGZpbmREaXIoc2xvdEVsZW1lbnQsICdmb3InKSkpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcGFyc2VSZXN1bHQgPSB2Rm9yLnBhcnNlUmVzdWx0IHx8XHJcbiAgICAgICAgICAgICAgICBwYXJzZUZvckV4cHJlc3Npb24odkZvci5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAocGFyc2VSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgZHluYW1pYyBzbG90cyBhcyBhbiBhcnJheSBhbmQgYWRkIGl0IHRvIHRoZSBjcmVhdGVTbG90KClcclxuICAgICAgICAgICAgICAgIC8vIGFyZ3MuIFRoZSBydW50aW1lIGtub3dzIGhvdyB0byBoYW5kbGUgaXQgYXBwcm9wcmlhdGVseS5cclxuICAgICAgICAgICAgICAgIGR5bmFtaWNTbG90cy5wdXNoKGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFTkRFUl9MSVNUKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0LnNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhwYXJzZVJlc3VsdCksIGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiksIHRydWUgLyogZm9yY2UgbmV3bGluZSAqLylcclxuICAgICAgICAgICAgICAgIF0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgdkZvci5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgZHVwbGljYXRlIHN0YXRpYyBuYW1lc1xyXG4gICAgICAgICAgICBpZiAoc3RhdGljU2xvdE5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZWVuU2xvdE5hbWVzLmhhcyhzdGF0aWNTbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzOCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0RVUExJQ0FURV9TTE9UX05BTUVTICovLCBkaXJMb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNlZW5TbG90TmFtZXMuYWRkKHN0YXRpY1Nsb3ROYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0aWNTbG90TmFtZSA9PT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTmFtZWREZWZhdWx0U2xvdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbikpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghb25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgY29uc3QgYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5ID0gKHByb3BzLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmbiA9IGJ1aWxkU2xvdEZuKHByb3BzLCBjaGlsZHJlbiwgbG9jKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuY29tcGF0Q29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICBmbi5pc05vblNjb3BlZFNsb3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZGVmYXVsdGAsIGZuKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghaGFzVGVtcGxhdGVTbG90cykge1xyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdCBkZWZhdWx0IHNsb3QgKG9uIGNvbXBvbmVudClcclxuICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHVuZGVmaW5lZCwgY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIC8vICMzNzY2XHJcbiAgICAgICAgICAgIC8vIHdpdGggd2hpdGVzcGFjZTogJ3ByZXNlcnZlJywgd2hpdGVzcGFjZXMgYmV0d2VlbiBzbG90cyB3aWxsIGVuZCB1cCBpblxyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi4gSWdub3JlIGlmIGFsbCBpbXBsaWNpdCBjaGlsZHJlbiBhcmUgd2hpdGVzcGFjZXMuXHJcbiAgICAgICAgICAgIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLnNvbWUobm9kZSA9PiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUpKSkge1xyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdCBkZWZhdWx0IHNsb3QgKG1peGVkIHdpdGggbmFtZWQgc2xvdHMpXHJcbiAgICAgICAgICAgIGlmIChoYXNOYW1lZERlZmF1bHRTbG90KSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzOSAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOICovLCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlblswXS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSh1bmRlZmluZWQsIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzbG90RmxhZyA9IGhhc0R5bmFtaWNTbG90c1xyXG4gICAgICAgID8gMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqL1xyXG4gICAgICAgIDogaGFzRm9yd2FyZGVkU2xvdHMobm9kZS5jaGlsZHJlbilcclxuICAgICAgICAgICAgPyAzIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi9cclxuICAgICAgICAgICAgOiAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi87XHJcbiAgICBsZXQgc2xvdHMgPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHNsb3RzUHJvcGVydGllcy5jb25jYXQoY3JlYXRlT2JqZWN0UHJvcGVydHkoYF9gLCBcclxuICAgIC8vIDIgPSBjb21waWxlZCBidXQgZHluYW1pYyA9IGNhbiBza2lwIG5vcm1hbGl6YXRpb24sIGJ1dCBtdXN0IHJ1biBkaWZmXHJcbiAgICAvLyAxID0gY29tcGlsZWQgYW5kIHN0YXRpYyA9IGNhbiBza2lwIG5vcm1hbGl6YXRpb24gQU5EIGRpZmYgYXMgb3B0aW1pemVkXHJcbiAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHNsb3RGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtzbG90RmxhZ3NUZXh0W3Nsb3RGbGFnXX0gKi9gIDogYGApLCBmYWxzZSkpKSwgbG9jKTtcclxuICAgIGlmIChkeW5hbWljU2xvdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgc2xvdHMgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfU0xPVFMpLCBbXHJcbiAgICAgICAgICAgIHNsb3RzLFxyXG4gICAgICAgICAgICBjcmVhdGVBcnJheUV4cHJlc3Npb24oZHluYW1pY1Nsb3RzKVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzbG90cyxcclxuICAgICAgICBoYXNEeW5hbWljU2xvdHNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gYnVpbGREeW5hbWljU2xvdChuYW1lLCBmbiwgaW5kZXgpIHtcclxuICAgIGNvbnN0IHByb3BzID0gW1xyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBuYW1lYCwgbmFtZSksXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYGZuYCwgZm4pXHJcbiAgICBdO1xyXG4gICAgaWYgKGluZGV4ICE9IG51bGwpIHtcclxuICAgICAgICBwcm9wcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFN0cmluZyhpbmRleCksIHRydWUpKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wcyk7XHJcbn1cclxuZnVuY3Rpb24gaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGRyZW4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQudGFnVHlwZSA9PT0gMiAvKiBFbGVtZW50VHlwZXMuU0xPVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuYnJhbmNoZXMpKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgIT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiYgbm9kZS50eXBlICE9PSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqL1xyXG4gICAgICAgID8gISFub2RlLmNvbnRlbnQudHJpbSgpXHJcbiAgICAgICAgOiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUuY29udGVudCk7XHJcbn1cblxuLy8gc29tZSBkaXJlY3RpdmUgdHJhbnNmb3JtcyAoZS5nLiB2LW1vZGVsKSBtYXkgcmV0dXJuIGEgc3ltYm9sIGZvciBydW50aW1lXHJcbi8vIGltcG9ydCwgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBhIHJlc29sdmVEaXJlY3RpdmUgY2FsbC5cclxuY29uc3QgZGlyZWN0aXZlSW1wb3J0TWFwID0gbmV3IFdlYWtNYXAoKTtcclxuLy8gZ2VuZXJhdGUgYSBKYXZhU2NyaXB0IEFTVCBmb3IgdGhpcyBlbGVtZW50J3MgY29kZWdlblxyXG5jb25zdCB0cmFuc2Zvcm1FbGVtZW50ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIC8vIHBlcmZvcm0gdGhlIHdvcmsgb24gZXhpdCwgYWZ0ZXIgYWxsIGNoaWxkIGV4cHJlc3Npb25zIGhhdmUgYmVlblxyXG4gICAgLy8gcHJvY2Vzc2VkIGFuZCBtZXJnZWQuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gcG9zdFRyYW5zZm9ybUVsZW1lbnQoKSB7XHJcbiAgICAgICAgbm9kZSA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgaWYgKCEobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIChub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHRhZywgcHJvcHMgfSA9IG5vZGU7XHJcbiAgICAgICAgY29uc3QgaXNDb21wb25lbnQgPSBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLztcclxuICAgICAgICAvLyBUaGUgZ29hbCBvZiB0aGUgdHJhbnNmb3JtIGlzIHRvIGNyZWF0ZSBhIGNvZGVnZW5Ob2RlIGltcGxlbWVudGluZyB0aGVcclxuICAgICAgICAvLyBWTm9kZUNhbGwgaW50ZXJmYWNlLlxyXG4gICAgICAgIGxldCB2bm9kZVRhZyA9IGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAgID8gcmVzb2x2ZUNvbXBvbmVudFR5cGUobm9kZSwgY29udGV4dClcclxuICAgICAgICAgICAgOiBgXCIke3RhZ31cImA7XHJcbiAgICAgICAgY29uc3QgaXNEeW5hbWljQ29tcG9uZW50ID0gaXNPYmplY3Qodm5vZGVUYWcpICYmIHZub2RlVGFnLmNhbGxlZSA9PT0gUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVDtcclxuICAgICAgICBsZXQgdm5vZGVQcm9wcztcclxuICAgICAgICBsZXQgdm5vZGVDaGlsZHJlbjtcclxuICAgICAgICBsZXQgdm5vZGVQYXRjaEZsYWc7XHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDA7XHJcbiAgICAgICAgbGV0IHZub2RlRHluYW1pY1Byb3BzO1xyXG4gICAgICAgIGxldCBkeW5hbWljUHJvcE5hbWVzO1xyXG4gICAgICAgIGxldCB2bm9kZURpcmVjdGl2ZXM7XHJcbiAgICAgICAgbGV0IHNob3VsZFVzZUJsb2NrID0gXHJcbiAgICAgICAgLy8gZHluYW1pYyBjb21wb25lbnQgbWF5IHJlc29sdmUgdG8gcGxhaW4gZWxlbWVudHNcclxuICAgICAgICBpc0R5bmFtaWNDb21wb25lbnQgfHxcclxuICAgICAgICAgICAgdm5vZGVUYWcgPT09IFRFTEVQT1JUIHx8XHJcbiAgICAgICAgICAgIHZub2RlVGFnID09PSBTVVNQRU5TRSB8fFxyXG4gICAgICAgICAgICAoIWlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAvLyA8c3ZnPiBhbmQgPGZvcmVpZ25PYmplY3Q+IG11c3QgYmUgZm9yY2VkIGludG8gYmxvY2tzIHNvIHRoYXQgYmxvY2tcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZXMgaW5zaWRlIGdldCBwcm9wZXIgaXNTVkcgZmxhZyBhdCBydW50aW1lLiAoIzYzOSwgIzY0MylcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgd2ViLXNwZWNpZmljLCBidXQgc3BsaXR0aW5nIHRoZSBsb2dpYyBvdXQgb2YgY29yZVxyXG4gICAgICAgICAgICAgICAgLy8gbGVhZHMgdG8gdG9vIG11Y2ggdW5uZWNlc3NhcnkgY29tcGxleGl0eS5cclxuICAgICAgICAgICAgICAgICh0YWcgPT09ICdzdmcnIHx8IHRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSk7XHJcbiAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICBpZiAocHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wc0J1aWxkUmVzdWx0ID0gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCB1bmRlZmluZWQsIGlzQ29tcG9uZW50LCBpc0R5bmFtaWNDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB2bm9kZVByb3BzID0gcHJvcHNCdWlsZFJlc3VsdC5wcm9wcztcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gcHJvcHNCdWlsZFJlc3VsdC5wYXRjaEZsYWc7XHJcbiAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMgPSBwcm9wc0J1aWxkUmVzdWx0LmR5bmFtaWNQcm9wTmFtZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBwcm9wc0J1aWxkUmVzdWx0LmRpcmVjdGl2ZXM7XHJcbiAgICAgICAgICAgIHZub2RlRGlyZWN0aXZlcyA9XHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzICYmIGRpcmVjdGl2ZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVBcnJheUV4cHJlc3Npb24oZGlyZWN0aXZlcy5tYXAoZGlyID0+IGJ1aWxkRGlyZWN0aXZlQXJncyhkaXIsIGNvbnRleHQpKSlcclxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHByb3BzQnVpbGRSZXN1bHQuc2hvdWxkVXNlQmxvY2spIHtcclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjaGlsZHJlblxyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlVGFnID09PSBLRUVQX0FMSVZFKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBbHRob3VnaCBhIGJ1aWx0LWluIGNvbXBvbmVudCwgd2UgY29tcGlsZSBLZWVwQWxpdmUgd2l0aCByYXcgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIC8vIGluc3RlYWQgb2Ygc2xvdCBmdW5jdGlvbnMgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbnNpZGUgVHJhbnNpdGlvblxyXG4gICAgICAgICAgICAgICAgLy8gb3Igb3RoZXIgVHJhbnNpdGlvbi13cmFwcGluZyBIT0NzLlxyXG4gICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIGNvcnJlY3QgdXBkYXRlcyB3aXRoIGJsb2NrIG9wdGltaXphdGlvbnMsIHdlIG5lZWQgdG86XHJcbiAgICAgICAgICAgICAgICAvLyAxLiBGb3JjZSBrZWVwLWFsaXZlIGludG8gYSBibG9jay4gVGhpcyBhdm9pZHMgaXRzIGNoaWxkcmVuIGJlaW5nXHJcbiAgICAgICAgICAgICAgICAvLyAgICBjb2xsZWN0ZWQgYnkgYSBwYXJlbnQgYmxvY2suXHJcbiAgICAgICAgICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyAyLiBGb3JjZSBrZWVwLWFsaXZlIHRvIGFsd2F5cyBiZSB1cGRhdGVkLCBzaW5jZSBpdCB1c2VzIHJhdyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDUgLyogRXJyb3JDb2Rlcy5YX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTiAqLywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbm9kZS5jaGlsZHJlblswXS5sb2Muc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJydcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQnVpbGRBc1Nsb3RzID0gaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIC8vIFRlbGVwb3J0IGlzIG5vdCBhIHJlYWwgY29tcG9uZW50IGFuZCBoYXMgZGVkaWNhdGVkIHJ1bnRpbWUgaGFuZGxpbmdcclxuICAgICAgICAgICAgICAgIHZub2RlVGFnICE9PSBURUxFUE9SVCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gZXhwbGFpbmVkIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgdm5vZGVUYWcgIT09IEtFRVBfQUxJVkU7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZEFzU2xvdHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2xvdHMsIGhhc0R5bmFtaWNTbG90cyB9ID0gYnVpbGRTbG90cyhub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBzbG90cztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljU2xvdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgdm5vZGVUYWcgIT09IFRFTEVQT1JUKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gY2hpbGQudHlwZTtcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBkeW5hbWljIHRleHQgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0R5bmFtaWNUZXh0Q2hpbGQgPSB0eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljVGV4dENoaWxkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHBhc3MgZGlyZWN0bHkgaWYgdGhlIG9ubHkgY2hpbGQgaXMgYSB0ZXh0IG5vZGVcclxuICAgICAgICAgICAgICAgIC8vIChwbGFpbiAvIGludGVycG9sYXRpb24gLyBleHByZXNzaW9uKVxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNUZXh0Q2hpbGQgfHwgdHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcGF0Y2hGbGFnICYgZHluYW1pY1Byb3BOYW1lc1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgIT09IDApIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGZsYWdzIChuZWdhdGl2ZSBhbmQgbXV0dWFsbHkgZXhjbHVzaXZlKVxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gcGF0Y2hGbGFnICsgYCAvKiAke1BhdGNoRmxhZ05hbWVzW3BhdGNoRmxhZ119ICovYDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJpdHdpc2UgZmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnTmFtZXMgPSBPYmplY3Qua2V5cyhQYXRjaEZsYWdOYW1lcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChOdW1iZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobiA9PiBuID4gMCAmJiBwYXRjaEZsYWcgJiBuKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKG4gPT4gUGF0Y2hGbGFnTmFtZXNbbl0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKGAsIGApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gcGF0Y2hGbGFnICsgYCAvKiAke2ZsYWdOYW1lc30gKi9gO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBTdHJpbmcocGF0Y2hGbGFnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZHluYW1pY1Byb3BOYW1lcyAmJiBkeW5hbWljUHJvcE5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVEeW5hbWljUHJvcHMgPSBzdHJpbmdpZnlEeW5hbWljUHJvcE5hbWVzKGR5bmFtaWNQcm9wTmFtZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgdm5vZGVUYWcsIHZub2RlUHJvcHMsIHZub2RlQ2hpbGRyZW4sIHZub2RlUGF0Y2hGbGFnLCB2bm9kZUR5bmFtaWNQcm9wcywgdm5vZGVEaXJlY3RpdmVzLCAhIXNob3VsZFVzZUJsb2NrLCBmYWxzZSAvKiBkaXNhYmxlVHJhY2tpbmcgKi8sIGlzQ29tcG9uZW50LCBub2RlLmxvYyk7XHJcbiAgICB9O1xyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0LCBzc3IgPSBmYWxzZSkge1xyXG4gICAgbGV0IHsgdGFnIH0gPSBub2RlO1xyXG4gICAgLy8gMS4gZHluYW1pYyBjb21wb25lbnRcclxuICAgIGNvbnN0IGlzRXhwbGljaXREeW5hbWljID0gaXNDb21wb25lbnRUYWcodGFnKTtcclxuICAgIGNvbnN0IGlzUHJvcCA9IGZpbmRQcm9wKG5vZGUsICdpcycpO1xyXG4gICAgaWYgKGlzUHJvcCkge1xyXG4gICAgICAgIGlmIChpc0V4cGxpY2l0RHluYW1pYyB8fFxyXG4gICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwID0gaXNQcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqL1xyXG4gICAgICAgICAgICAgICAgPyBpc1Byb3AudmFsdWUgJiYgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihpc1Byb3AudmFsdWUuY29udGVudCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDogaXNQcm9wLmV4cDtcclxuICAgICAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1Byb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmXHJcbiAgICAgICAgICAgIGlzUHJvcC52YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkge1xyXG4gICAgICAgICAgICAvLyA8YnV0dG9uIGlzPVwidnVlOnh4eFwiPlxyXG4gICAgICAgICAgICAvLyBpZiBub3QgPGNvbXBvbmVudD4sIG9ubHkgaXMgdmFsdWUgdGhhdCBzdGFydHMgd2l0aCBcInZ1ZTpcIiB3aWxsIGJlXHJcbiAgICAgICAgICAgIC8vIHRyZWF0ZWQgYXMgY29tcG9uZW50IGJ5IHRoZSBwYXJzZSBwaGFzZSBhbmQgcmVhY2ggaGVyZSwgdW5sZXNzIGl0J3NcclxuICAgICAgICAgICAgLy8gY29tcGF0IG1vZGUgd2hlcmUgYWxsIGlzIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjb21wb25lbnRzXHJcbiAgICAgICAgICAgIHRhZyA9IGlzUHJvcC52YWx1ZS5jb250ZW50LnNsaWNlKDQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDEuNSB2LWlzIChUT0RPOiBEZXByZWNhdGUpXHJcbiAgICBjb25zdCBpc0RpciA9ICFpc0V4cGxpY2l0RHluYW1pYyAmJiBmaW5kRGlyKG5vZGUsICdpcycpO1xyXG4gICAgaWYgKGlzRGlyICYmIGlzRGlyLmV4cCkge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UKSwgW1xyXG4gICAgICAgICAgICBpc0Rpci5leHBcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIC8vIDIuIGJ1aWx0LWluIGNvbXBvbmVudHMgKFRlbGVwb3J0LCBUcmFuc2l0aW9uLCBLZWVwQWxpdmUsIFN1c3BlbnNlLi4uKVxyXG4gICAgY29uc3QgYnVpbHRJbiA9IGlzQ29yZUNvbXBvbmVudCh0YWcpIHx8IGNvbnRleHQuaXNCdWlsdEluQ29tcG9uZW50KHRhZyk7XHJcbiAgICBpZiAoYnVpbHRJbikge1xyXG4gICAgICAgIC8vIGJ1aWx0LWlucyBhcmUgc2ltcGx5IGZhbGx0aHJvdWdocyAvIGhhdmUgc3BlY2lhbCBoYW5kbGluZyBkdXJpbmcgc3NyXHJcbiAgICAgICAgLy8gc28gd2UgZG9uJ3QgbmVlZCB0byBpbXBvcnQgdGhlaXIgcnVudGltZSBlcXVpdmFsZW50c1xyXG4gICAgICAgIGlmICghc3NyKVxyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihidWlsdEluKTtcclxuICAgICAgICByZXR1cm4gYnVpbHRJbjtcclxuICAgIH1cclxuICAgIC8vIDUuIHVzZXIgY29tcG9uZW50IChyZXNvbHZlKVxyXG4gICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9DT01QT05FTlQpO1xyXG4gICAgY29udGV4dC5jb21wb25lbnRzLmFkZCh0YWcpO1xyXG4gICAgcmV0dXJuIHRvVmFsaWRBc3NldElkKHRhZywgYGNvbXBvbmVudGApO1xyXG59XHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgcHJvcHMgPSBub2RlLnByb3BzLCBpc0NvbXBvbmVudCwgaXNEeW5hbWljQ29tcG9uZW50LCBzc3IgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyB0YWcsIGxvYzogZWxlbWVudExvYywgY2hpbGRyZW4gfSA9IG5vZGU7XHJcbiAgICBsZXQgcHJvcGVydGllcyA9IFtdO1xyXG4gICAgY29uc3QgbWVyZ2VBcmdzID0gW107XHJcbiAgICBjb25zdCBydW50aW1lRGlyZWN0aXZlcyA9IFtdO1xyXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHNob3VsZFVzZUJsb2NrID0gZmFsc2U7XHJcbiAgICAvLyBwYXRjaEZsYWcgYW5hbHlzaXNcclxuICAgIGxldCBwYXRjaEZsYWcgPSAwO1xyXG4gICAgbGV0IGhhc1JlZiA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0NsYXNzQmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc1N0eWxlQmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0R5bmFtaWNLZXlzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzVm5vZGVIb29rID0gZmFsc2U7XHJcbiAgICBjb25zdCBkeW5hbWljUHJvcE5hbWVzID0gW107XHJcbiAgICBjb25zdCBhbmFseXplUGF0Y2hGbGFnID0gKHsga2V5LCB2YWx1ZSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGtleS5jb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCBpc0V2ZW50SGFuZGxlciA9IGlzT24obmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJlxyXG4gICAgICAgICAgICAgICAgKCFpc0NvbXBvbmVudCB8fCBpc0R5bmFtaWNDb21wb25lbnQpICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IHRoZSBmbGFnIGZvciBjbGljayBoYW5kbGVycyBiZWNhdXNlIGh5ZHJhdGlvbiBnaXZlcyBjbGlja1xyXG4gICAgICAgICAgICAgICAgLy8gZGVkaWNhdGVkIGZhc3QgcGF0aC5cclxuICAgICAgICAgICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29uY2xpY2snICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IHYtbW9kZWwgaGFuZGxlcnNcclxuICAgICAgICAgICAgICAgIG5hbWUgIT09ICdvblVwZGF0ZTptb2RlbFZhbHVlJyAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCBvblZub2RlWFhYIGhvb2tzXHJcbiAgICAgICAgICAgICAgICAhaXNSZXNlcnZlZFByb3AobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzRXZlbnRIYW5kbGVyICYmIGlzUmVzZXJ2ZWRQcm9wKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNWbm9kZUhvb2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgKCh2YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKHZhbHVlLCBjb250ZXh0KSA+IDApKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIHRoZSBwcm9wIGlzIGEgY2FjaGVkIGhhbmRsZXIgb3IgaGFzIGNvbnN0YW50IHZhbHVlXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdyZWYnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNSZWYgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgICAgIGhhc0NsYXNzQmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgaGFzU3R5bGVCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lICE9PSAna2V5JyAmJiAhZHluYW1pY1Byb3BOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcy5wdXNoKG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRyZWF0IHRoZSBkeW5hbWljIGNsYXNzIGFuZCBzdHlsZSBiaW5kaW5nIG9mIHRoZSBjb21wb25lbnQgYXMgZHluYW1pYyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIChuYW1lID09PSAnY2xhc3MnIHx8IG5hbWUgPT09ICdzdHlsZScpICYmXHJcbiAgICAgICAgICAgICAgICAhZHluYW1pY1Byb3BOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcy5wdXNoKG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBzdGF0aWMgYXR0cmlidXRlXHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxvYywgbmFtZSwgdmFsdWUgfSA9IHByb3A7XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAncmVmJykge1xyXG4gICAgICAgICAgICAgICAgaGFzUmVmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnNjb3Blcy52Rm9yID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgaXMgb24gPGNvbXBvbmVudD4sIG9yIGlzPVwidnVlOnh4eFwiXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnICYmXHJcbiAgICAgICAgICAgICAgICAoaXNDb21wb25lbnRUYWcodGFnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSAmJiB2YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihuYW1lLCB0cnVlLCBnZXRJbm5lclJhbmdlKGxvYywgMCwgbmFtZS5sZW5ndGgpKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbih2YWx1ZSA/IHZhbHVlLmNvbnRlbnQgOiAnJywgaXNTdGF0aWMsIHZhbHVlID8gdmFsdWUubG9jIDogbG9jKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZGlyZWN0aXZlc1xyXG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIGFyZywgZXhwLCBsb2MgfSA9IHByb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVkJpbmQgPSBuYW1lID09PSAnYmluZCc7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVk9uID0gbmFtZSA9PT0gJ29uJztcclxuICAgICAgICAgICAgLy8gc2tpcCB2LXNsb3QgLSBpdCBpcyBoYW5kbGVkIGJ5IGl0cyBkZWRpY2F0ZWQgdHJhbnNmb3JtLlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3Nsb3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDAgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVNQTEFDRUQgKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LW9uY2Uvdi1tZW1vIC0gdGhleSBhcmUgaGFuZGxlZCBieSBkZWRpY2F0ZWQgdHJhbnNmb3Jtcy5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdvbmNlJyB8fCBuYW1lID09PSAnbWVtbycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1pcyBhbmQgOmlzIG9uIDxjb21wb25lbnQ+XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNWQmluZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YoYXJnLCAnaXMnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIHYtb24gaW4gU1NSIGNvbXBpbGF0aW9uXHJcbiAgICAgICAgICAgIGlmIChpc1ZPbiAmJiBzc3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgLy8gIzkzODogZWxlbWVudHMgd2l0aCBkeW5hbWljIGtleXMgc2hvdWxkIGJlIGZvcmNlZCBpbnRvIGJsb2Nrc1xyXG4gICAgICAgICAgICAoaXNWQmluZCAmJiBpc1N0YXRpY0FyZ09mKGFyZywgJ2tleScpKSB8fFxyXG4gICAgICAgICAgICAgICAgLy8gaW5saW5lIGJlZm9yZS11cGRhdGUgaG9va3MgbmVlZCB0byBmb3JjZSBibG9jayBzbyB0aGF0IGl0IGlzIGludm9rZWRcclxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgKGlzVk9uICYmIGhhc0NoaWxkcmVuICYmIGlzU3RhdGljQXJnT2YoYXJnLCAndnVlOmJlZm9yZS11cGRhdGUnKSkpIHtcclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNWQmluZCAmJiBpc1N0YXRpY0FyZ09mKGFyZywgJ3JlZicpICYmIGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigncmVmX2ZvcicsIHRydWUpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCd0cnVlJykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHYtYmluZCBhbmQgdi1vbiB3aXRoIG5vIGFyZ3VtZW50XHJcbiAgICAgICAgICAgIGlmICghYXJnICYmIChpc1ZCaW5kIHx8IGlzVk9uKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzRHluYW1pY0tleXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWQmluZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyLnggdi1iaW5kIG9iamVjdCBvcmRlciBjb21wYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNPdmVycmlkYWJsZUtleXMgPSBtZXJnZUFyZ3Muc29tZShhcmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5wcm9wZXJ0aWVzLnNvbWUoKHsga2V5IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFrZXkuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoa2V5LmNvbnRlbnQgIT09ICdjbGFzcycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmNvbnRlbnQgIT09ICdzdHlsZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzT24oa2V5LmNvbnRlbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHluYW1pYyBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPdmVycmlkYWJsZUtleXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovLCBjb250ZXh0LCBsb2MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnVuc2hpZnQoZXhwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChleHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1vbj1cIm9ialwiIC0+IHRvSGFuZGxlcnMob2JqKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlOiBjb250ZXh0LmhlbHBlcihUT19IQU5ETEVSUyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6IGlzQ29tcG9uZW50ID8gW2V4cF0gOiBbZXhwLCBgdHJ1ZWBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKGlzVkJpbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAzNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAzNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZVRyYW5zZm9ybSA9IGNvbnRleHQuZGlyZWN0aXZlVHJhbnNmb3Jtc1tuYW1lXTtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZVRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaGFzIGJ1aWx0LWluIGRpcmVjdGl2ZSB0cmFuc2Zvcm0uXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzLCBuZWVkUnVudGltZSB9ID0gZGlyZWN0aXZlVHJhbnNmb3JtKHByb3AsIG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgIXNzciAmJiBwcm9wcy5mb3JFYWNoKGFuYWx5emVQYXRjaEZsYWcpO1xyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKC4uLnByb3BzKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZWVkUnVudGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVEaXJlY3RpdmVzLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3ltYm9sKG5lZWRSdW50aW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbXBvcnRNYXAuc2V0KHByb3AsIG5lZWRSdW50aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzQnVpbHRJbkRpcmVjdGl2ZShuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gbm8gYnVpbHQtaW4gdHJhbnNmb3JtLCB0aGlzIGlzIGEgdXNlciBjdXN0b20gZGlyZWN0aXZlLlxyXG4gICAgICAgICAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBkaXJzIG1heSB1c2UgYmVmb3JlVXBkYXRlIHNvIHRoZXkgbmVlZCB0byBmb3JjZSBibG9ja3NcclxuICAgICAgICAgICAgICAgIC8vIHRvIGVuc3VyZSBiZWZvcmUtdXBkYXRlIGdldHMgY2FsbGVkIGJlZm9yZSBjaGlsZHJlbiB1cGRhdGVcclxuICAgICAgICAgICAgICAgIGlmIChoYXNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBwcm9wc0V4cHJlc3Npb24gPSB1bmRlZmluZWQ7XHJcbiAgICAvLyBoYXMgdi1iaW5kPVwib2JqZWN0XCIgb3Igdi1vbj1cIm9iamVjdFwiLCB3cmFwIHdpdGggbWVyZ2VQcm9wc1xyXG4gICAgaWYgKG1lcmdlQXJncy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtZXJnZUFyZ3MubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIG1lcmdlQXJncywgZWxlbWVudExvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgdi1iaW5kIHdpdGggbm90aGluZyBlbHNlIC0gbm8gbmVlZCBmb3IgYSBtZXJnZVByb3BzIGNhbGxcclxuICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gbWVyZ2VBcmdzWzBdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKTtcclxuICAgIH1cclxuICAgIC8vIHBhdGNoRmxhZyBhbmFseXNpc1xyXG4gICAgaWYgKGhhc0R5bmFtaWNLZXlzKSB7XHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChoYXNDbGFzc0JpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyIC8qIFBhdGNoRmxhZ3MuQ0xBU1MgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoYXNTdHlsZUJpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSA0IC8qIFBhdGNoRmxhZ3MuU1RZTEUgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkeW5hbWljUHJvcE5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gOCAvKiBQYXRjaEZsYWdzLlBST1BTICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghc2hvdWxkVXNlQmxvY2sgJiZcclxuICAgICAgICAocGF0Y2hGbGFnID09PSAwIHx8IHBhdGNoRmxhZyA9PT0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykgJiZcclxuICAgICAgICAoaGFzUmVmIHx8IGhhc1Zub2RlSG9vayB8fCBydW50aW1lRGlyZWN0aXZlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgIHBhdGNoRmxhZyB8PSA1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovO1xyXG4gICAgfVxyXG4gICAgLy8gcHJlLW5vcm1hbGl6ZSBwcm9wcywgU1NSIGlzIHNraXBwZWQgZm9yIG5vd1xyXG4gICAgaWYgKCFjb250ZXh0LmluU1NSICYmIHByb3BzRXhwcmVzc2lvbikge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcHNFeHByZXNzaW9uLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIHYtYmluZCxcclxuICAgICAgICAgICAgICAgIC8vIGJ1dCBzdGlsbCBuZWVkIHRvIGRlYWwgd2l0aCBkeW5hbWljIGtleSBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICBsZXQgY2xhc3NLZXlJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0eWxlS2V5SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNEeW5hbWljS2V5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbaV0ua2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuY29udGVudCA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NLZXlJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5LmNvbnRlbnQgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlS2V5SW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFrZXkuaXNIYW5kbGVyS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0R5bmFtaWNLZXkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzUHJvcCA9IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzW2NsYXNzS2V5SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbc3R5bGVLZXlJbmRleF07XHJcbiAgICAgICAgICAgICAgICAvLyBubyBkeW5hbWljIGtleVxyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNEeW5hbWljS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsYXNzUHJvcCAmJiAhaXNTdGF0aWNFeHAoY2xhc3NQcm9wLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc1Byb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfQ0xBU1MpLCBbY2xhc3NQcm9wLnZhbHVlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVByb3AgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHN0YXRpYyBzdHlsZSBpcyBjb21waWxlZCBpbnRvIGFuIG9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gdXNlIGBoYXNTdHlsZUJpbmRpbmdgIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGEgZHluYW1pYyBzdHlsZSBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChoYXNTdHlsZUJpbmRpbmcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUuY29udGVudC50cmltKClbMF0gPT09IGBbYCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtYmluZDpzdHlsZSBhbmQgc3R5bGUgYm90aCBleGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtYmluZDpzdHlsZSB3aXRoIHN0YXRpYyBsaXRlcmFsIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVQcm9wLnZhbHVlLnR5cGUgPT09IDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfU1RZTEUpLCBbc3R5bGVQcm9wLnZhbHVlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZHluYW1pYyBrZXkgYmluZGluZywgd3JhcCB3aXRoIGBub3JtYWxpemVQcm9wc2BcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfUFJPUFMpLCBbcHJvcHNFeHByZXNzaW9uXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICAgICAgLy8gbWVyZ2VQcm9wcyBjYWxsLCBkbyBub3RoaW5nXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmRcclxuICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihHVUFSRF9SRUFDVElWRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogcHJvcHNFeHByZXNzaW9uLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHJ1bnRpbWVEaXJlY3RpdmVzLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcE5hbWVzLFxyXG4gICAgICAgIHNob3VsZFVzZUJsb2NrXHJcbiAgICB9O1xyXG59XHJcbi8vIERlZHVwZSBwcm9wcyBpbiBhbiBvYmplY3QgbGl0ZXJhbC5cclxuLy8gTGl0ZXJhbCBkdXBsaWNhdGVkIGF0dHJpYnV0ZXMgd291bGQgaGF2ZSBiZWVuIHdhcm5lZCBkdXJpbmcgdGhlIHBhcnNlIHBoYXNlLFxyXG4vLyBob3dldmVyLCBpdCdzIHBvc3NpYmxlIHRvIGVuY291bnRlciBkdXBsaWNhdGVkIGBvblhYWGAgaGFuZGxlcnMgd2l0aCBkaWZmZXJlbnRcclxuLy8gbW9kaWZpZXJzLiBXZSBhbHNvIG5lZWQgdG8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIGNsYXNzIC8gc3R5bGUgYXR0cmlidXRlcy5cclxuLy8gLSBvblhYWCBoYW5kbGVycyAvIHN0eWxlOiBtZXJnZSBpbnRvIGFycmF5XHJcbi8vIC0gY2xhc3M6IG1lcmdlIGludG8gc2luZ2xlIGV4cHJlc3Npb24gd2l0aCBjb25jYXRlbmF0aW9uXHJcbmZ1bmN0aW9uIGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcykge1xyXG4gICAgY29uc3Qga25vd25Qcm9wcyA9IG5ldyBNYXAoKTtcclxuICAgIGNvbnN0IGRlZHVwZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgIC8vIGR5bmFtaWMga2V5cyBhcmUgYWx3YXlzIGFsbG93ZWRcclxuICAgICAgICBpZiAocHJvcC5rZXkudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyB8fCAhcHJvcC5rZXkuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHByb3Aua2V5LmNvbnRlbnQ7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBrbm93blByb3BzLmdldChuYW1lKTtcclxuICAgICAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdzdHlsZScgfHwgbmFtZSA9PT0gJ2NsYXNzJyB8fCBpc09uKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBtZXJnZUFzQXJyYXkoZXhpc3RpbmcsIHByb3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgZHVwbGljYXRlLCBzaG91bGQgaGF2ZSBlbWl0dGVkIGVycm9yIGR1cmluZyBwYXJzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAga25vd25Qcm9wcy5zZXQobmFtZSwgcHJvcCk7XHJcbiAgICAgICAgICAgIGRlZHVwZWQucHVzaChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVkdXBlZDtcclxufVxyXG5mdW5jdGlvbiBtZXJnZUFzQXJyYXkoZXhpc3RpbmcsIGluY29taW5nKSB7XHJcbiAgICBpZiAoZXhpc3RpbmcudmFsdWUudHlwZSA9PT0gMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBleGlzdGluZy52YWx1ZS5lbGVtZW50cy5wdXNoKGluY29taW5nLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGV4aXN0aW5nLnZhbHVlID0gY3JlYXRlQXJyYXlFeHByZXNzaW9uKFtleGlzdGluZy52YWx1ZSwgaW5jb21pbmcudmFsdWVdLCBleGlzdGluZy5sb2MpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGJ1aWxkRGlyZWN0aXZlQXJncyhkaXIsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGRpckFyZ3MgPSBbXTtcclxuICAgIGNvbnN0IHJ1bnRpbWUgPSBkaXJlY3RpdmVJbXBvcnRNYXAuZ2V0KGRpcik7XHJcbiAgICBpZiAocnVudGltZSkge1xyXG4gICAgICAgIC8vIGJ1aWx0LWluIGRpcmVjdGl2ZSB3aXRoIHJ1bnRpbWVcclxuICAgICAgICBkaXJBcmdzLnB1c2goY29udGV4dC5oZWxwZXJTdHJpbmcocnVudGltZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBpbmplY3Qgc3RhdGVtZW50IGZvciByZXNvbHZpbmcgZGlyZWN0aXZlXHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFJFU09MVkVfRElSRUNUSVZFKTtcclxuICAgICAgICAgICAgY29udGV4dC5kaXJlY3RpdmVzLmFkZChkaXIubmFtZSk7XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaCh0b1ZhbGlkQXNzZXRJZChkaXIubmFtZSwgYGRpcmVjdGl2ZWApKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKGRpci5leHApXHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGRpci5leHApO1xyXG4gICAgaWYgKGRpci5hcmcpIHtcclxuICAgICAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGRpci5hcmcpO1xyXG4gICAgfVxyXG4gICAgaWYgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMpLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICghZGlyLmFyZykge1xyXG4gICAgICAgICAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdHJ1ZUV4cHJlc3Npb24gPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0cnVlYCwgZmFsc2UsIGxvYyk7XHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGlyLm1vZGlmaWVycy5tYXAobW9kaWZpZXIgPT4gY3JlYXRlT2JqZWN0UHJvcGVydHkobW9kaWZpZXIsIHRydWVFeHByZXNzaW9uKSksIGxvYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkaXJBcmdzLCBkaXIubG9jKTtcclxufVxyXG5mdW5jdGlvbiBzdHJpbmdpZnlEeW5hbWljUHJvcE5hbWVzKHByb3BzKSB7XHJcbiAgICBsZXQgcHJvcHNOYW1lc1N0cmluZyA9IGBbYDtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcHJvcHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgcHJvcHNOYW1lc1N0cmluZyArPSBKU09OLnN0cmluZ2lmeShwcm9wc1tpXSk7XHJcbiAgICAgICAgaWYgKGkgPCBsIC0gMSlcclxuICAgICAgICAgICAgcHJvcHNOYW1lc1N0cmluZyArPSAnLCAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzTmFtZXNTdHJpbmcgKyBgXWA7XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wb25lbnRUYWcodGFnKSB7XHJcbiAgICByZXR1cm4gdGFnID09PSAnY29tcG9uZW50JyB8fCB0YWcgPT09ICdDb21wb25lbnQnO1xyXG59XG5cbihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgPyBPYmplY3QuZnJlZXplKHt9KVxyXG4gICAgOiB7fTtcclxuKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gT2JqZWN0LmZyZWV6ZShbXSkgOiBbXTtcclxuY29uc3QgY2FjaGVTdHJpbmdGdW5jdGlvbiA9IChmbikgPT4ge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICgoc3RyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcclxuICAgICAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XHJcbn0pO1xuXG5jb25zdCB0cmFuc2Zvcm1TbG90T3V0bGV0ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChpc1Nsb3RPdXRsZXQobm9kZSkpIHtcclxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBsb2MgfSA9IG5vZGU7XHJcbiAgICAgICAgY29uc3QgeyBzbG90TmFtZSwgc2xvdFByb3BzIH0gPSBwcm9jZXNzU2xvdE91dGxldChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBjb25zdCBzbG90QXJncyA9IFtcclxuICAgICAgICAgICAgY29udGV4dC5wcmVmaXhJZGVudGlmaWVycyA/IGBfY3R4LiRzbG90c2AgOiBgJHNsb3RzYCxcclxuICAgICAgICAgICAgc2xvdE5hbWUsXHJcbiAgICAgICAgICAgICd7fScsXHJcbiAgICAgICAgICAgICd1bmRlZmluZWQnLFxyXG4gICAgICAgICAgICAndHJ1ZSdcclxuICAgICAgICBdO1xyXG4gICAgICAgIGxldCBleHBlY3RlZExlbiA9IDI7XHJcbiAgICAgICAgaWYgKHNsb3RQcm9wcykge1xyXG4gICAgICAgICAgICBzbG90QXJnc1syXSA9IHNsb3RQcm9wcztcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHNsb3RBcmdzWzNdID0gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKFtdLCBjaGlsZHJlbiwgZmFsc2UsIGZhbHNlLCBsb2MpO1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250ZXh0LnNjb3BlSWQgJiYgIWNvbnRleHQuc2xvdHRlZCkge1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNsb3RBcmdzLnNwbGljZShleHBlY3RlZExlbik7IC8vIHJlbW92ZSB1bnVzZWQgYXJndW1lbnRzXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFTkRFUl9TTE9UKSwgc2xvdEFyZ3MsIGxvYyk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHByb2Nlc3NTbG90T3V0bGV0KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGxldCBzbG90TmFtZSA9IGBcImRlZmF1bHRcImA7XHJcbiAgICBsZXQgc2xvdFByb3BzID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgbm9uTmFtZVByb3BzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICduYW1lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNsb3ROYW1lID0gSlNPTi5zdHJpbmdpZnkocC52YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHAubmFtZSA9IGNhbWVsaXplKHAubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9uTmFtZVByb3BzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBpc1N0YXRpY0FyZ09mKHAuYXJnLCAnbmFtZScpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5leHApXHJcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWUgPSBwLmV4cDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBwLmFyZyAmJiBpc1N0YXRpY0V4cChwLmFyZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwLmFyZy5jb250ZW50ID0gY2FtZWxpemUocC5hcmcuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub25OYW1lUHJvcHMucHVzaChwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChub25OYW1lUHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcHMsIGRpcmVjdGl2ZXMgfSA9IGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgbm9uTmFtZVByb3BzLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHNsb3RQcm9wcyA9IHByb3BzO1xyXG4gICAgICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNiAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUICovLCBkaXJlY3RpdmVzWzBdLmxvYykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc2xvdE5hbWUsXHJcbiAgICAgICAgc2xvdFByb3BzXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IGZuRXhwUkUgPSAvXlxccyooW1xcdyRfXSt8KGFzeW5jXFxzKik/XFwoW14pXSo/XFwpKVxccyo9PnxeXFxzKihhc3luY1xccyspP2Z1bmN0aW9uKD86XFxzK1tcXHckXSspP1xccypcXCgvO1xyXG5jb25zdCB0cmFuc2Zvcm1PbiA9IChkaXIsIG5vZGUsIGNvbnRleHQsIGF1Z21lbnRvcikgPT4ge1xyXG4gICAgY29uc3QgeyBsb2MsIG1vZGlmaWVycywgYXJnIH0gPSBkaXI7XHJcbiAgICBpZiAoIWRpci5leHAgJiYgIW1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGxldCBldmVudE5hbWU7XHJcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBsZXQgcmF3TmFtZSA9IGFyZy5jb250ZW50O1xyXG4gICAgICAgICAgICAvLyBUT0RPIGRlcHJlY2F0ZSBAdm5vZGVYWFggdXNhZ2VcclxuICAgICAgICAgICAgaWYgKHJhd05hbWUuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgICAgICByYXdOYW1lID0gYHZub2RlLSR7cmF3TmFtZS5zbGljZSg0KX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RyaW5nID0gbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgIHJhd05hbWUuc3RhcnRzV2l0aCgndm5vZGUnKSB8fFxyXG4gICAgICAgICAgICAgICAgIS9bQS1aXS8udGVzdChyYXdOYW1lKVxyXG4gICAgICAgICAgICAgICAgPyAvLyBmb3IgY29tcG9uZW50IGFuZCB2bm9kZSBsaWZlY3ljbGUgZXZlbnQgbGlzdGVuZXJzLCBhdXRvIGNvbnZlcnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCB0byBjYW1lbENhc2UuIFNlZSBpc3N1ZSAjMjI0OVxyXG4gICAgICAgICAgICAgICAgICAgIHRvSGFuZGxlcktleShjYW1lbGl6ZSQxKHJhd05hbWUpKVxyXG4gICAgICAgICAgICAgICAgLy8gcHJlc2VydmUgY2FzZSBmb3IgcGxhaW4gZWxlbWVudCBsaXN0ZW5lcnMgdGhhdCBoYXZlIHVwcGVyY2FzZVxyXG4gICAgICAgICAgICAgICAgLy8gbGV0dGVycywgYXMgdGhlc2UgbWF5IGJlIGN1c3RvbSBlbGVtZW50cycgY3VzdG9tIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgOiBgb246JHtyYXdOYW1lfWA7XHJcbiAgICAgICAgICAgIGV2ZW50TmFtZSA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXZlbnRTdHJpbmcsIHRydWUsIGFyZy5sb2MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gIzIzODhcclxuICAgICAgICAgICAgZXZlbnROYW1lID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAke2NvbnRleHQuaGVscGVyU3RyaW5nKFRPX0hBTkRMRVJfS0VZKX0oYCxcclxuICAgICAgICAgICAgICAgIGFyZyxcclxuICAgICAgICAgICAgICAgIGApYFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBhbHJlYWR5IGEgY29tcG91bmQgZXhwcmVzc2lvbi5cclxuICAgICAgICBldmVudE5hbWUgPSBhcmc7XHJcbiAgICAgICAgZXZlbnROYW1lLmNoaWxkcmVuLnVuc2hpZnQoYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgKTtcclxuICAgICAgICBldmVudE5hbWUuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgLy8gaGFuZGxlciBwcm9jZXNzaW5nXHJcbiAgICBsZXQgZXhwID0gZGlyLmV4cDtcclxuICAgIGlmIChleHAgJiYgIWV4cC5jb250ZW50LnRyaW0oKSkge1xyXG4gICAgICAgIGV4cCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGxldCBzaG91bGRDYWNoZSA9IGNvbnRleHQuY2FjaGVIYW5kbGVycyAmJiAhZXhwICYmICFjb250ZXh0LmluVk9uY2U7XHJcbiAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgY29uc3QgaXNNZW1iZXJFeHAgPSBpc01lbWJlckV4cHJlc3Npb24oZXhwLmNvbnRlbnQpO1xyXG4gICAgICAgIGNvbnN0IGlzSW5saW5lU3RhdGVtZW50ID0gIShpc01lbWJlckV4cCB8fCBmbkV4cFJFLnRlc3QoZXhwLmNvbnRlbnQpKTtcclxuICAgICAgICBjb25zdCBoYXNNdWx0aXBsZVN0YXRlbWVudHMgPSBleHAuY29udGVudC5pbmNsdWRlcyhgO2ApO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKGV4cCwgY29udGV4dCwgZmFsc2UsIGhhc011bHRpcGxlU3RhdGVtZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0lubGluZVN0YXRlbWVudCB8fCAoc2hvdWxkQ2FjaGUgJiYgaXNNZW1iZXJFeHApKSB7XHJcbiAgICAgICAgICAgIC8vIHdyYXAgaW5saW5lIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgZXhwID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAke2lzSW5saW5lU3RhdGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgPyBgJGV2ZW50YFxyXG4gICAgICAgICAgICAgICAgICAgIDogYCR7YGB9KC4uLmFyZ3MpYH0gPT4gJHtoYXNNdWx0aXBsZVN0YXRlbWVudHMgPyBge2AgOiBgKGB9YCxcclxuICAgICAgICAgICAgICAgIGV4cCxcclxuICAgICAgICAgICAgICAgIGhhc011bHRpcGxlU3RhdGVtZW50cyA/IGB9YCA6IGApYFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgcmV0ID0ge1xyXG4gICAgICAgIHByb3BzOiBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGV2ZW50TmFtZSwgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCgpID0+IHt9YCwgZmFsc2UsIGxvYykpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxuICAgIC8vIGFwcGx5IGV4dGVuZGVkIGNvbXBpbGVyIGF1Z21lbnRvclxyXG4gICAgaWYgKGF1Z21lbnRvcikge1xyXG4gICAgICAgIHJldCA9IGF1Z21lbnRvcihyZXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XHJcbiAgICAgICAgLy8gY2FjaGUgaGFuZGxlcnMgc28gdGhhdCBpdCdzIGFsd2F5cyB0aGUgc2FtZSBoYW5kbGVyIGJlaW5nIHBhc3NlZCBkb3duLlxyXG4gICAgICAgIC8vIHRoaXMgYXZvaWRzIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnMgd2hlbiB1c2VycyB1c2UgaW5saW5lIGhhbmRsZXJzIG9uXHJcbiAgICAgICAgLy8gY29tcG9uZW50cy5cclxuICAgICAgICByZXQucHJvcHNbMF0udmFsdWUgPSBjb250ZXh0LmNhY2hlKHJldC5wcm9wc1swXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyBtYXJrIHRoZSBrZXkgYXMgaGFuZGxlciBmb3IgcHJvcHMgbm9ybWFsaXphdGlvbiBjaGVja1xyXG4gICAgcmV0LnByb3BzLmZvckVhY2gocCA9PiAocC5rZXkuaXNIYW5kbGVyS2V5ID0gdHJ1ZSkpO1xyXG4gICAgcmV0dXJuIHJldDtcclxufTtcblxuLy8gdi1iaW5kIHdpdGhvdXQgYXJnIGlzIGhhbmRsZWQgZGlyZWN0bHkgaW4gLi90cmFuc2Zvcm1FbGVtZW50cy50cyBkdWUgdG8gaXQgYWZmZWN0aW5nXHJcbi8vIGNvZGVnZW4gZm9yIHRoZSBlbnRpcmUgcHJvcHMgb2JqZWN0LiBUaGlzIHRyYW5zZm9ybSBoZXJlIGlzIG9ubHkgZm9yIHYtYmluZFxyXG4vLyAqd2l0aCogYXJncy5cclxuY29uc3QgdHJhbnNmb3JtQmluZCA9IChkaXIsIF9ub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbW9kaWZpZXJzLCBsb2MgfSA9IGRpcjtcclxuICAgIGNvbnN0IGFyZyA9IGRpci5hcmc7XHJcbiAgICBpZiAoYXJnLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYChgKTtcclxuICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKSB8fCBcIlwiYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgYXJnLmNvbnRlbnQgPSBgJHthcmcuY29udGVudH0gfHwgXCJcImA7XHJcbiAgICB9XHJcbiAgICAvLyAuc3luYyBpcyByZXBsYWNlZCBieSB2LW1vZGVsOmFyZ1xyXG4gICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygnY2FtZWwnKSkge1xyXG4gICAgICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZSQxKGFyZy5jb250ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFyZy5jb250ZW50ID0gYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoQ0FNRUxJWkUpfSgke2FyZy5jb250ZW50fSlgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhDQU1FTElaRSl9KGApO1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghY29udGV4dC5pblNTUikge1xyXG4gICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3Byb3AnKSkge1xyXG4gICAgICAgICAgICBpbmplY3RQcmVmaXgoYXJnLCAnLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdhdHRyJykpIHtcclxuICAgICAgICAgICAgaW5qZWN0UHJlZml4KGFyZywgJ14nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWV4cCB8fFxyXG4gICAgICAgIChleHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgIWV4cC5jb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlLCBsb2MpKV1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGFyZywgZXhwKV1cclxuICAgIH07XHJcbn07XHJcbmNvbnN0IGluamVjdFByZWZpeCA9IChhcmcsIHByZWZpeCkgPT4ge1xyXG4gICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBwcmVmaXggKyBhcmcuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyZy5jb250ZW50ID0gYFxcYCR7cHJlZml4fVxcJHske2FyZy5jb250ZW50fX1cXGBgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAnJHtwcmVmaXh9JyArIChgKTtcclxuICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgfVxyXG59O1xuXG4vLyBNZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzIGFuZCBleHByZXNzaW9ucyBpbnRvIGEgc2luZ2xlIGV4cHJlc3Npb25cclxuLy8gZS5nLiA8ZGl2PmFiYyB7eyBkIH19IHt7IGUgfX08L2Rpdj4gc2hvdWxkIGhhdmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBub2RlIGFzIGNoaWxkLlxyXG5jb25zdCB0cmFuc2Zvcm1UZXh0ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDAgLyogTm9kZVR5cGVzLlJPT1QgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi8pIHtcclxuICAgICAgICAvLyBwZXJmb3JtIHRoZSB0cmFuc2Zvcm0gb24gbm9kZSBleGl0IHNvIHRoYXQgYWxsIGV4cHJlc3Npb25zIGhhdmUgYWxyZWFkeVxyXG4gICAgICAgIC8vIGJlZW4gcHJvY2Vzc2VkLlxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZXh0KGNoaWxkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1RleHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltqXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVGV4dChuZXh0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lciA9IGNoaWxkcmVuW2ldID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtjaGlsZF0sIGNoaWxkLmxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGUgaW50byBjdXJyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyLmNoaWxkcmVuLnB1c2goYCArIGAsIG5leHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGosIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgai0tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaGFzVGV4dCB8fFxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgd2l0aCBhIHNpbmdsZSB0ZXh0IGNoaWxkLCBsZWF2ZSBpdFxyXG4gICAgICAgICAgICAgICAgLy8gYXMtaXMgc2luY2UgdGhlIHJ1bnRpbWUgaGFzIGRlZGljYXRlZCBmYXN0IHBhdGggZm9yIHRoaXMgYnkgZGlyZWN0bHlcclxuICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBmb3IgY29tcG9uZW50IHJvb3QgaXQncyBhbHdheXMgbm9ybWFsaXplZCBhbnl3YXkuXHJcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKG5vZGUudHlwZSA9PT0gMCAvKiBOb2RlVHlwZXMuUk9PVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMzNzU2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXN0b20gZGlyZWN0aXZlcyBjYW4gcG90ZW50aWFsbHkgYWRkIERPTSBlbGVtZW50cyBhcmJpdHJhcmlseSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gYXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCBhdCBydW50aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBhY2NpZGVudGFsbHkgb3ZlcndyaXRpbmcgdGhlIERPTSBlbGVtZW50cyBhZGRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgdGhlIHVzZXIgdGhyb3VnaCBjdXN0b20gZGlyZWN0aXZlcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLnByb3BzLmZpbmQocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250ZXh0LmRpcmVjdGl2ZVRyYW5zZm9ybXNbcC5uYW1lXSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNvbXBhdCBtb2RlLCA8dGVtcGxhdGU+IHRhZ3Mgd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBmcmFnbWVudCBzbyBpdHMgY2hpbGRyZW4gbXVzdCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydGVkIGludG8gdm5vZGVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShub2RlLnRhZyA9PT0gJ3RlbXBsYXRlJykpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcmUtY29udmVydCB0ZXh0IG5vZGVzIGludG8gY3JlYXRlVGV4dFZOb2RlKHRleHQpIGNhbGxzIHRvIGF2b2lkXHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWUgbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RleHQoY2hpbGQpIHx8IGNoaWxkLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWxsQXJncyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZVRleHRWTm9kZSBkZWZhdWx0cyB0byBzaW5nbGUgd2hpdGVzcGFjZSwgc28gaWYgaXQgaXMgYVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmdsZSBzcGFjZSB0aGUgY29kZSBjb3VsZCBiZSBhbiBlbXB0eSBjYWxsIHRvIHNhdmUgYnl0ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gfHwgY2hpbGQuY29udGVudCAhPT0gJyAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxBcmdzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBtYXJrIGR5bmFtaWMgdGV4dCB3aXRoIGZsYWcgc28gaXQgZ2V0cyBwYXRjaGVkIGluc2lkZSBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LnNzciAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxBcmdzLnB1c2goMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8gK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1sxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqL119ICovYCA6IGBgKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBjaGlsZC5sb2MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlOiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfVEVYVCksIGNhbGxBcmdzKVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcclxuY29uc3QgdHJhbnNmb3JtT25jZSA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmIGZpbmREaXIobm9kZSwgJ29uY2UnLCB0cnVlKSkge1xyXG4gICAgICAgIGlmIChzZWVuLmhhcyhub2RlKSB8fCBjb250ZXh0LmluVk9uY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWVuLmFkZChub2RlKTtcclxuICAgICAgICBjb250ZXh0LmluVk9uY2UgPSB0cnVlO1xyXG4gICAgICAgIGNvbnRleHQuaGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29udGV4dC5pblZPbmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1ciA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjdXIuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICAgICAgICAgIGN1ci5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuY2FjaGUoY3VyLmNvZGVnZW5Ob2RlLCB0cnVlIC8qIGlzVk5vZGUgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgYXJnIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQxIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhd0V4cCA9IGV4cC5sb2Muc291cmNlO1xyXG4gICAgY29uc3QgZXhwU3RyaW5nID0gZXhwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovID8gZXhwLmNvbnRlbnQgOiByYXdFeHA7XHJcbiAgICAvLyBpbSBTRkMgPHNjcmlwdCBzZXR1cD4gaW5saW5lIG1vZGUsIHRoZSBleHAgbWF5IGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvXHJcbiAgICAvLyBfdW5yZWYoZXhwKVxyXG4gICAgY29udGV4dC5iaW5kaW5nTWV0YWRhdGFbcmF3RXhwXTtcclxuICAgIGNvbnN0IG1heWJlUmVmID0gIXRydWUgICAgLyogQmluZGluZ1R5cGVzLlNFVFVQX0NPTlNUICovO1xyXG4gICAgaWYgKCFleHBTdHJpbmcudHJpbSgpIHx8XHJcbiAgICAgICAgKCFpc01lbWJlckV4cHJlc3Npb24oZXhwU3RyaW5nKSAmJiAhbWF5YmVSZWYpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDIgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04gKi8sIGV4cC5sb2MpKTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3BOYW1lID0gYXJnID8gYXJnIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignbW9kZWxWYWx1ZScsIHRydWUpO1xyXG4gICAgY29uc3QgZXZlbnROYW1lID0gYXJnXHJcbiAgICAgICAgPyBpc1N0YXRpY0V4cChhcmcpXHJcbiAgICAgICAgICAgID8gYG9uVXBkYXRlOiR7YXJnLmNvbnRlbnR9YFxyXG4gICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbJ1wib25VcGRhdGU6XCIgKyAnLCBhcmddKVxyXG4gICAgICAgIDogYG9uVXBkYXRlOm1vZGVsVmFsdWVgO1xyXG4gICAgbGV0IGFzc2lnbm1lbnRFeHA7XHJcbiAgICBjb25zdCBldmVudEFyZyA9IGNvbnRleHQuaXNUUyA/IGAoJGV2ZW50OiBhbnkpYCA6IGAkZXZlbnRgO1xyXG4gICAge1xyXG4gICAgICAgIGFzc2lnbm1lbnRFeHAgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICBgJHtldmVudEFyZ30gPT4gKChgLFxyXG4gICAgICAgICAgICBleHAsXHJcbiAgICAgICAgICAgIGApID0gJGV2ZW50KWBcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3BzID0gW1xyXG4gICAgICAgIC8vIG1vZGVsVmFsdWU6IGZvb1xyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KHByb3BOYW1lLCBkaXIuZXhwKSxcclxuICAgICAgICAvLyBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogJGV2ZW50ID0+IChmb28gPSAkZXZlbnQpXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBhc3NpZ25tZW50RXhwKVxyXG4gICAgXTtcclxuICAgIC8vIG1vZGVsTW9kaWZpZXJzOiB7IGZvbzogdHJ1ZSwgXCJiYXItYmF6XCI6IHRydWUgfVxyXG4gICAgaWYgKGRpci5tb2RpZmllcnMubGVuZ3RoICYmIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVyc1xyXG4gICAgICAgICAgICAubWFwKG0gPT4gKGlzU2ltcGxlSWRlbnRpZmllcihtKSA/IG0gOiBKU09OLnN0cmluZ2lmeShtKSkgKyBgOiB0cnVlYClcclxuICAgICAgICAgICAgLmpvaW4oYCwgYCk7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzS2V5ID0gYXJnXHJcbiAgICAgICAgICAgID8gaXNTdGF0aWNFeHAoYXJnKVxyXG4gICAgICAgICAgICAgICAgPyBgJHthcmcuY29udGVudH1Nb2RpZmllcnNgXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYXJnLCAnICsgXCJNb2RpZmllcnNcIiddKVxyXG4gICAgICAgICAgICA6IGBtb2RlbE1vZGlmaWVyc2A7XHJcbiAgICAgICAgcHJvcHMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShtb2RpZmllcnNLZXksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHsgJHttb2RpZmllcnN9IH1gLCBmYWxzZSwgZGlyLmxvYywgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcyhwcm9wcyk7XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzID0gW10pIHtcclxuICAgIHJldHVybiB7IHByb3BzIH07XHJcbn1cblxuY29uc3QgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcclxuY29uc3QgdHJhbnNmb3JtRmlsdGVyID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmICghaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgIC8vIGZpbHRlciByZXdyaXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtIHNvIG9ubHlcclxuICAgICAgICAvLyBzaW1wbGUgZXhwcmVzc2lvbnMgYXJlIHBvc3NpYmxlIGF0IHRoaXMgc3RhZ2VcclxuICAgICAgICByZXdyaXRlRmlsdGVyKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgbm9kZS5wcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnZm9yJyAmJlxyXG4gICAgICAgICAgICAgICAgcHJvcC5leHApIHtcclxuICAgICAgICAgICAgICAgIHJld3JpdGVGaWx0ZXIocHJvcC5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHJld3JpdGVGaWx0ZXIobm9kZSwgY29udGV4dCkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQgIT09ICdvYmplY3QnKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcGFyc2VGaWx0ZXIoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHJld3JpdGVGaWx0ZXIobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihjaGlsZC5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XHJcbiAgICBsZXQgaW5TaW5nbGUgPSBmYWxzZTtcclxuICAgIGxldCBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgbGV0IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcclxuICAgIGxldCBpblJlZ2V4ID0gZmFsc2U7XHJcbiAgICBsZXQgY3VybHkgPSAwO1xyXG4gICAgbGV0IHNxdWFyZSA9IDA7XHJcbiAgICBsZXQgcGFyZW4gPSAwO1xyXG4gICAgbGV0IGxhc3RGaWx0ZXJJbmRleCA9IDA7XHJcbiAgICBsZXQgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycyA9IFtdO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHByZXYgPSBjO1xyXG4gICAgICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcclxuICAgICAgICBpZiAoaW5TaW5nbGUpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluU2luZ2xlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluRG91YmxlKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDIyICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluUmVnZXgpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluUmVnZXggPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYyA9PT0gMHg3YyAmJiAvLyBwaXBlXHJcbiAgICAgICAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3YyAmJlxyXG4gICAgICAgICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDB4N2MgJiZcclxuICAgICAgICAgICAgIWN1cmx5ICYmXHJcbiAgICAgICAgICAgICFzcXVhcmUgJiZcclxuICAgICAgICAgICAgIXBhcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDIyOlxyXG4gICAgICAgICAgICAgICAgICAgIGluRG91YmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXCJcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNzpcclxuICAgICAgICAgICAgICAgICAgICBpblNpbmdsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vICdcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg2MDpcclxuICAgICAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gYFxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI4OlxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVuKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIChcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyOTpcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbi0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyApXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4NWI6XHJcbiAgICAgICAgICAgICAgICAgICAgc3F1YXJlKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg1ZDpcclxuICAgICAgICAgICAgICAgICAgICBzcXVhcmUtLTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXVxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDdiOlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cmx5Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg3ZDpcclxuICAgICAgICAgICAgICAgICAgICBjdXJseS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYpIHtcclxuICAgICAgICAgICAgICAgIC8vIC9cclxuICAgICAgICAgICAgICAgIGxldCBqID0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcDtcclxuICAgICAgICAgICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFyXHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgaiA+PSAwOyBqLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBwID0gZXhwLmNoYXJBdChqKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocCAhPT0gJyAnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5SZWdleCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcclxuICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXNoRmlsdGVyKCkge1xyXG4gICAgICAgIGZpbHRlcnMucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xyXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9GSUxURVJTICovLCBjb250ZXh0LCBub2RlLmxvYyk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuY29udGVudCA9IGV4cHJlc3Npb247XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd3JhcEZpbHRlcihleHAsIGZpbHRlciwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9GSUxURVIpO1xyXG4gICAgY29uc3QgaSA9IGZpbHRlci5pbmRleE9mKCcoJyk7XHJcbiAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMuYWRkKGZpbHRlcik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RvVmFsaWRBc3NldElkKGZpbHRlciwgJ2ZpbHRlcicpfSgke2V4cH0pYDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XHJcbiAgICAgICAgY29uc3QgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XHJcbiAgICAgICAgY29udGV4dC5maWx0ZXJzLmFkZChuYW1lKTtcclxuICAgICAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQobmFtZSwgJ2ZpbHRlcicpfSgke2V4cH0ke2FyZ3MgIT09ICcpJyA/ICcsJyArIGFyZ3MgOiBhcmdzfWA7XHJcbiAgICB9XHJcbn1cblxuY29uc3Qgc2VlbiQxID0gbmV3IFdlYWtTZXQoKTtcclxuY29uc3QgdHJhbnNmb3JtTWVtbyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgZGlyID0gZmluZERpcihub2RlLCAnbWVtbycpO1xyXG4gICAgICAgIGlmICghZGlyIHx8IHNlZW4kMS5oYXMobm9kZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWVuJDEuYWRkKG5vZGUpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZSB8fFxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlICYmIGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub24tY29tcG9uZW50IHN1YiB0cmVlIHNob3VsZCBiZSB0dXJuZWQgaW50byBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWtlQmxvY2soY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFdJVEhfTUVNTyksIFtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuZXhwLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih1bmRlZmluZWQsIGNvZGVnZW5Ob2RlKSxcclxuICAgICAgICAgICAgICAgICAgICBgX2NhY2hlYCxcclxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcoY29udGV4dC5jYWNoZWQrKylcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gZ2V0QmFzZVRyYW5zZm9ybVByZXNldChwcmVmaXhJZGVudGlmaWVycykge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybU9uY2UsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUlmLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1NZW1vLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1Gb3IsXHJcbiAgICAgICAgICAgIC4uLihbdHJhbnNmb3JtRmlsdGVyXSApLFxyXG4gICAgICAgICAgICAuLi4oKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbdHJhbnNmb3JtRXhwcmVzc2lvbl1cclxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcclxuICAgICAgICAgICAgdHJhbnNmb3JtU2xvdE91dGxldCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtRWxlbWVudCxcclxuICAgICAgICAgICAgdHJhY2tTbG90U2NvcGVzLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1UZXh0XHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG9uOiB0cmFuc2Zvcm1PbixcclxuICAgICAgICAgICAgYmluZDogdHJhbnNmb3JtQmluZCxcclxuICAgICAgICAgICAgbW9kZWw6IHRyYW5zZm9ybU1vZGVsXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxufVxyXG4vLyB3ZSBuYW1lIGl0IGBiYXNlQ29tcGlsZWAgc28gdGhhdCBoaWdoZXIgb3JkZXIgY29tcGlsZXJzIGxpa2VcclxuLy8gQHZ1ZS9jb21waWxlci1kb20gY2FuIGV4cG9ydCBgY29tcGlsZWAgd2hpbGUgcmUtZXhwb3J0aW5nIGV2ZXJ5dGhpbmcgZWxzZS5cclxuZnVuY3Rpb24gYmFzZUNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3Qgb25FcnJvciA9IG9wdGlvbnMub25FcnJvciB8fCBkZWZhdWx0T25FcnJvcjtcclxuICAgIGNvbnN0IGlzTW9kdWxlTW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gJ21vZHVsZSc7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5wcmVmaXhJZGVudGlmaWVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDYgLyogRXJyb3JDb2Rlcy5YX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlTW9kZSkge1xyXG4gICAgICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDcgLyogRXJyb3JDb2Rlcy5YX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmVmaXhJZGVudGlmaWVycyA9ICF0cnVlIDtcclxuICAgIGlmIChvcHRpb25zLmNhY2hlSGFuZGxlcnMpIHtcclxuICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDggLyogRXJyb3JDb2Rlcy5YX0NBQ0hFX0hBTkRMRVJfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuc2NvcGVJZCAmJiAhaXNNb2R1bGVNb2RlKSB7XHJcbiAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ5IC8qIEVycm9yQ29kZXMuWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3QgPSBpc1N0cmluZyh0ZW1wbGF0ZSkgPyBiYXNlUGFyc2UodGVtcGxhdGUsIG9wdGlvbnMpIDogdGVtcGxhdGU7XHJcbiAgICBjb25zdCBbbm9kZVRyYW5zZm9ybXMsIGRpcmVjdGl2ZVRyYW5zZm9ybXNdID0gZ2V0QmFzZVRyYW5zZm9ybVByZXNldCgpO1xyXG4gICAgdHJhbnNmb3JtKGFzdCwgZXh0ZW5kKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXM6IFtcclxuICAgICAgICAgICAgLi4ubm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdKSAvLyB1c2VyIHRyYW5zZm9ybXNcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZCh7fSwgZGlyZWN0aXZlVHJhbnNmb3Jtcywgb3B0aW9ucy5kaXJlY3RpdmVUcmFuc2Zvcm1zIHx8IHt9IC8vIHVzZXIgdHJhbnNmb3Jtc1xyXG4gICAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHJldHVybiBnZW5lcmF0ZShhc3QsIGV4dGVuZCh7fSwgb3B0aW9ucywge1xyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzXHJcbiAgICB9KSk7XHJcbn1cblxuY29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSA9ICgpID0+ICh7IHByb3BzOiBbXSB9KTtcblxuZXhwb3J0IHsgQkFTRV9UUkFOU0lUSU9OLCBDQU1FTElaRSwgQ0FQSVRBTElaRSwgQ1JFQVRFX0JMT0NLLCBDUkVBVEVfQ09NTUVOVCwgQ1JFQVRFX0VMRU1FTlRfQkxPQ0ssIENSRUFURV9FTEVNRU5UX1ZOT0RFLCBDUkVBVEVfU0xPVFMsIENSRUFURV9TVEFUSUMsIENSRUFURV9URVhULCBDUkVBVEVfVk5PREUsIEZSQUdNRU5ULCBHVUFSRF9SRUFDVElWRV9QUk9QUywgSVNfTUVNT19TQU1FLCBJU19SRUYsIEtFRVBfQUxJVkUsIE1FUkdFX1BST1BTLCBOT1JNQUxJWkVfQ0xBU1MsIE5PUk1BTElaRV9QUk9QUywgTk9STUFMSVpFX1NUWUxFLCBPUEVOX0JMT0NLLCBQT1BfU0NPUEVfSUQsIFBVU0hfU0NPUEVfSUQsIFJFTkRFUl9MSVNULCBSRU5ERVJfU0xPVCwgUkVTT0xWRV9DT01QT05FTlQsIFJFU09MVkVfRElSRUNUSVZFLCBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5ULCBSRVNPTFZFX0ZJTFRFUiwgU0VUX0JMT0NLX1RSQUNLSU5HLCBTVVNQRU5TRSwgVEVMRVBPUlQsIFRPX0RJU1BMQVlfU1RSSU5HLCBUT19IQU5ETEVSUywgVE9fSEFORExFUl9LRVksIFVOUkVGLCBXSVRIX0NUWCwgV0lUSF9ESVJFQ1RJVkVTLCBXSVRIX01FTU8sIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZSwgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uLCBhc3NlcnQsIGJhc2VDb21waWxlLCBiYXNlUGFyc2UsIGJ1aWxkRGlyZWN0aXZlQXJncywgYnVpbGRQcm9wcywgYnVpbGRTbG90cywgY2hlY2tDb21wYXRFbmFibGVkLCBjcmVhdGVBcnJheUV4cHJlc3Npb24sIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uLCBjcmVhdGVCbG9ja1N0YXRlbWVudCwgY3JlYXRlQ2FjaGVFeHByZXNzaW9uLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24sIGNyZWF0ZUZvckxvb3BQYXJhbXMsIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbiwgY3JlYXRlSWZTdGF0ZW1lbnQsIGNyZWF0ZUludGVycG9sYXRpb24sIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24sIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQsIGNyZWF0ZVJvb3QsIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbiwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSwgY3JlYXRlVGVtcGxhdGVMaXRlcmFsLCBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LCBjcmVhdGVWTm9kZUNhbGwsIGV4dHJhY3RJZGVudGlmaWVycywgZmluZERpciwgZmluZFByb3AsIGdlbmVyYXRlLCBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0LCBnZXRDb25zdGFudFR5cGUsIGdldElubmVyUmFuZ2UsIGdldE1lbW9lZFZOb2RlQ2FsbCwgZ2V0Vk5vZGVCbG9ja0hlbHBlciwgZ2V0Vk5vZGVIZWxwZXIsIGhhc0R5bmFtaWNLZXlWQmluZCwgaGFzU2NvcGVSZWYsIGhlbHBlck5hbWVNYXAsIGluamVjdFByb3AsIGlzQnVpbHRJblR5cGUsIGlzQ29yZUNvbXBvbmVudCwgaXNGdW5jdGlvblR5cGUsIGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQsIGlzTWVtYmVyRXhwcmVzc2lvbiwgaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlciwgaXNNZW1iZXJFeHByZXNzaW9uTm9kZSwgaXNSZWZlcmVuY2VkSWRlbnRpZmllciwgaXNTaW1wbGVJZGVudGlmaWVyLCBpc1Nsb3RPdXRsZXQsIGlzU3RhdGljQXJnT2YsIGlzU3RhdGljRXhwLCBpc1N0YXRpY1Byb3BlcnR5LCBpc1N0YXRpY1Byb3BlcnR5S2V5LCBpc1RlbXBsYXRlTm9kZSwgaXNUZXh0LCBpc1ZTbG90LCBsb2NTdHViLCBtYWtlQmxvY2ssIG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sIHByb2Nlc3NFeHByZXNzaW9uLCBwcm9jZXNzRm9yLCBwcm9jZXNzSWYsIHByb2Nlc3NTbG90T3V0bGV0LCByZWdpc3RlclJ1bnRpbWVIZWxwZXJzLCByZXNvbHZlQ29tcG9uZW50VHlwZSwgdG9WYWxpZEFzc2V0SWQsIHRyYWNrU2xvdFNjb3BlcywgdHJhY2tWRm9yU2xvdFNjb3BlcywgdHJhbnNmb3JtLCB0cmFuc2Zvcm1CaW5kLCB0cmFuc2Zvcm1FbGVtZW50LCB0cmFuc2Zvcm1FeHByZXNzaW9uLCB0cmFuc2Zvcm1Nb2RlbCwgdHJhbnNmb3JtT24sIHRyYXZlcnNlTm9kZSwgd2Fsa0Jsb2NrRGVjbGFyYXRpb25zLCB3YWxrRnVuY3Rpb25QYXJhbXMsIHdhbGtJZGVudGlmaWVycywgd2FybkRlcHJlY2F0aW9uIH07XG4iLCJpbXBvcnQgeyByZWdpc3RlclJ1bnRpbWVIZWxwZXJzLCBpc0J1aWx0SW5UeXBlLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uLCBjcmVhdGVDb21waWxlckVycm9yLCBjcmVhdGVPYmplY3RQcm9wZXJ0eSwgZ2V0Q29uc3RhbnRUeXBlLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgVE9fRElTUExBWV9TVFJJTkcsIHRyYW5zZm9ybU1vZGVsIGFzIHRyYW5zZm9ybU1vZGVsJDEsIGZpbmRQcm9wLCBoYXNEeW5hbWljS2V5VkJpbmQsIHRyYW5zZm9ybU9uIGFzIHRyYW5zZm9ybU9uJDEsIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbiwgaXNTdGF0aWNFeHAsIGNoZWNrQ29tcGF0RW5hYmxlZCwgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSwgYmFzZUNvbXBpbGUsIGJhc2VQYXJzZSB9IGZyb20gJ0B2dWUvY29tcGlsZXItY29yZSc7XG5leHBvcnQgKiBmcm9tICdAdnVlL2NvbXBpbGVyLWNvcmUnO1xuaW1wb3J0IHsgaXNWb2lkVGFnLCBpc0hUTUxUYWcsIGlzU1ZHVGFnLCBtYWtlTWFwLCBwYXJzZVN0cmluZ1N0eWxlLCBjYXBpdGFsaXplLCBleHRlbmQgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IFZfTU9ERUxfUkFESU8gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFJhZGlvYCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9DSEVDS0JPWCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsQ2hlY2tib3hgIDogYGApO1xyXG5jb25zdCBWX01PREVMX1RFWFQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFRleHRgIDogYGApO1xyXG5jb25zdCBWX01PREVMX1NFTEVDVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsU2VsZWN0YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9EWU5BTUlDID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxEeW5hbWljYCA6IGBgKTtcclxuY29uc3QgVl9PTl9XSVRIX01PRElGSUVSUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk9uTW9kaWZpZXJzR3VhcmRgIDogYGApO1xyXG5jb25zdCBWX09OX1dJVEhfS0VZUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk9uS2V5c0d1YXJkYCA6IGBgKTtcclxuY29uc3QgVl9TSE9XID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2U2hvd2AgOiBgYCk7XHJcbmNvbnN0IFRSQU5TSVRJT04gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRyYW5zaXRpb25gIDogYGApO1xyXG5jb25zdCBUUkFOU0lUSU9OX0dST1VQID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUcmFuc2l0aW9uR3JvdXBgIDogYGApO1xyXG5yZWdpc3RlclJ1bnRpbWVIZWxwZXJzKHtcclxuICAgIFtWX01PREVMX1JBRElPXTogYHZNb2RlbFJhZGlvYCxcclxuICAgIFtWX01PREVMX0NIRUNLQk9YXTogYHZNb2RlbENoZWNrYm94YCxcclxuICAgIFtWX01PREVMX1RFWFRdOiBgdk1vZGVsVGV4dGAsXHJcbiAgICBbVl9NT0RFTF9TRUxFQ1RdOiBgdk1vZGVsU2VsZWN0YCxcclxuICAgIFtWX01PREVMX0RZTkFNSUNdOiBgdk1vZGVsRHluYW1pY2AsXHJcbiAgICBbVl9PTl9XSVRIX01PRElGSUVSU106IGB3aXRoTW9kaWZpZXJzYCxcclxuICAgIFtWX09OX1dJVEhfS0VZU106IGB3aXRoS2V5c2AsXHJcbiAgICBbVl9TSE9XXTogYHZTaG93YCxcclxuICAgIFtUUkFOU0lUSU9OXTogYFRyYW5zaXRpb25gLFxyXG4gICAgW1RSQU5TSVRJT05fR1JPVVBdOiBgVHJhbnNpdGlvbkdyb3VwYFxyXG59KTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBkZWNvZGVyO1xyXG5mdW5jdGlvbiBkZWNvZGVIdG1sQnJvd3NlcihyYXcsIGFzQXR0ciA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIWRlY29kZXIpIHtcclxuICAgICAgICBkZWNvZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXNBdHRyKSB7XHJcbiAgICAgICAgZGVjb2Rlci5pbm5lckhUTUwgPSBgPGRpdiBmb289XCIke3Jhdy5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyl9XCI+YDtcclxuICAgICAgICByZXR1cm4gZGVjb2Rlci5jaGlsZHJlblswXS5nZXRBdHRyaWJ1dGUoJ2ZvbycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZGVjb2Rlci5pbm5lckhUTUwgPSByYXc7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnQ7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNSYXdUZXh0Q29udGFpbmVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdzdHlsZSxpZnJhbWUsc2NyaXB0LG5vc2NyaXB0JywgdHJ1ZSk7XHJcbmNvbnN0IHBhcnNlck9wdGlvbnMgPSB7XHJcbiAgICBpc1ZvaWRUYWcsXHJcbiAgICBpc05hdGl2ZVRhZzogdGFnID0+IGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHVGFnKHRhZyksXHJcbiAgICBpc1ByZVRhZzogdGFnID0+IHRhZyA9PT0gJ3ByZScsXHJcbiAgICBkZWNvZGVFbnRpdGllczogZGVjb2RlSHRtbEJyb3dzZXIgLFxyXG4gICAgaXNCdWlsdEluQ29tcG9uZW50OiAodGFnKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzQnVpbHRJblR5cGUodGFnLCBgVHJhbnNpdGlvbmApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUUkFOU0lUSU9OO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgYFRyYW5zaXRpb25Hcm91cGApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUUkFOU0lUSU9OX0dST1VQO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjdHJlZS1jb25zdHJ1Y3Rpb24tZGlzcGF0Y2hlclxyXG4gICAgZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50KSB7XHJcbiAgICAgICAgbGV0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgaWYgKHBhcmVudCAmJiBucyA9PT0gMiAvKiBET01OYW1lc3BhY2VzLk1BVEhfTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC50YWcgPT09ICdhbm5vdGF0aW9uLXhtbCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0YWcgPT09ICdzdmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogRE9NTmFtZXNwYWNlcy5TVkcgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LnByb3BzLnNvbWUoYSA9PiBhLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEubmFtZSA9PT0gJ2VuY29kaW5nJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEudmFsdWUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChhLnZhbHVlLmNvbnRlbnQgPT09ICd0ZXh0L2h0bWwnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGEudmFsdWUuY29udGVudCA9PT0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5zID0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoL15tKD86W2lvbnNdfHRleHQpJC8udGVzdChwYXJlbnQudGFnKSAmJlxyXG4gICAgICAgICAgICAgICAgdGFnICE9PSAnbWdseXBoJyAmJlxyXG4gICAgICAgICAgICAgICAgdGFnICE9PSAnbWFsaWdubWFyaycpIHtcclxuICAgICAgICAgICAgICAgIG5zID0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGFyZW50ICYmIG5zID09PSAxIC8qIERPTU5hbWVzcGFjZXMuU1ZHICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQudGFnID09PSAnZm9yZWlnbk9iamVjdCcgfHxcclxuICAgICAgICAgICAgICAgIHBhcmVudC50YWcgPT09ICdkZXNjJyB8fFxyXG4gICAgICAgICAgICAgICAgcGFyZW50LnRhZyA9PT0gJ3RpdGxlJykge1xyXG4gICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobnMgPT09IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdzdmcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBET01OYW1lc3BhY2VzLlNWRyAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFnID09PSAnbWF0aCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAyIC8qIERPTU5hbWVzcGFjZXMuTUFUSF9NTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnM7XHJcbiAgICB9LFxyXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHNcclxuICAgIGdldFRleHRNb2RlKHsgdGFnLCBucyB9KSB7XHJcbiAgICAgICAgaWYgKG5zID09PSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLykge1xyXG4gICAgICAgICAgICBpZiAodGFnID09PSAndGV4dGFyZWEnIHx8IHRhZyA9PT0gJ3RpdGxlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNSYXdUZXh0Q29udGFpbmVyKHRhZykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwIC8qIFRleHRNb2Rlcy5EQVRBICovO1xyXG4gICAgfVxyXG59O1xuXG4vLyBQYXJzZSBpbmxpbmUgQ1NTIHN0cmluZ3MgZm9yIHN0YXRpYyBzdHlsZSBhdHRyaWJ1dGVzIGludG8gYW4gb2JqZWN0LlxyXG4vLyBUaGlzIGlzIGEgTm9kZVRyYW5zZm9ybSBzaW5jZSBpdCB3b3JrcyBvbiB0aGUgc3RhdGljIGBzdHlsZWAgYXR0cmlidXRlIGFuZFxyXG4vLyBjb252ZXJ0cyBpdCBpbnRvIGEgZHluYW1pYyBlcXVpdmFsZW50OlxyXG4vLyBzdHlsZT1cImNvbG9yOiByZWRcIiAtPiA6c3R5bGU9J3sgXCJjb2xvclwiOiBcInJlZFwiIH0nXHJcbi8vIEl0IGlzIHRoZW4gcHJvY2Vzc2VkIGJ5IGB0cmFuc2Zvcm1FbGVtZW50YCBhbmQgaW5jbHVkZWQgaW4gdGhlIGdlbmVyYXRlZFxyXG4vLyBwcm9wcy5cclxuY29uc3QgdHJhbnNmb3JtU3R5bGUgPSBub2RlID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBub2RlLnByb3BzLmZvckVhY2goKHAsIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmIHAubmFtZSA9PT0gJ3N0eWxlJyAmJiBwLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHAgd2l0aCBhbiBleHByZXNzaW9uIG5vZGVcclxuICAgICAgICAgICAgICAgIG5vZGUucHJvcHNbaV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGBiaW5kYCxcclxuICAgICAgICAgICAgICAgICAgICBhcmc6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHN0eWxlYCwgdHJ1ZSwgcC5sb2MpLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4cDogcGFyc2VJbmxpbmVDU1MocC52YWx1ZS5jb250ZW50LCBwLmxvYyksXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBsb2M6IHAubG9jXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHBhcnNlSW5saW5lQ1NTID0gKGNzc1RleHQsIGxvYykgPT4ge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHBhcnNlU3RyaW5nU3R5bGUoY3NzVGV4dCk7XHJcbiAgICByZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihKU09OLnN0cmluZ2lmeShub3JtYWxpemVkKSwgZmFsc2UsIGxvYywgMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi8pO1xyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVET01Db21waWxlckVycm9yKGNvZGUsIGxvYykge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUgPyBET01FcnJvck1lc3NhZ2VzIDogdW5kZWZpbmVkKTtcclxufVxyXG5jb25zdCBET01FcnJvck1lc3NhZ2VzID0ge1xyXG4gICAgWzUwIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfTk9fRVhQUkVTU0lPTiAqL106IGB2LWh0bWwgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTEgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9XSVRIX0NISUxEUkVOICovXTogYHYtaHRtbCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uYCxcclxuICAgIFs1MiAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX05PX0VYUFJFU1NJT04gKi9dOiBgdi10ZXh0IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzUzIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfV0lUSF9DSElMRFJFTiAqL106IGB2LXRleHQgd2lsbCBvdmVycmlkZSBlbGVtZW50IGNoaWxkcmVuLmAsXHJcbiAgICBbNTQgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UICovXTogYHYtbW9kZWwgY2FuIG9ubHkgYmUgdXNlZCBvbiA8aW5wdXQ+LCA8dGV4dGFyZWE+IGFuZCA8c2VsZWN0PiBlbGVtZW50cy5gLFxyXG4gICAgWzU1IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX0FSR19PTl9FTEVNRU5UICovXTogYHYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy5gLFxyXG4gICAgWzU2IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCAqL106IGB2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGZpbGUgaW5wdXRzIHNpbmNlIHRoZXkgYXJlIHJlYWQtb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC5gLFxyXG4gICAgWzU3IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFICovXTogYFVubmVjZXNzYXJ5IHZhbHVlIGJpbmRpbmcgdXNlZCBhbG9uZ3NpZGUgdi1tb2RlbC4gSXQgd2lsbCBpbnRlcmZlcmUgd2l0aCB2LW1vZGVsJ3MgYmVoYXZpb3IuYCxcclxuICAgIFs1OCAvKiBET01FcnJvckNvZGVzLlhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi9dOiBgdi1zaG93IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzU5IC8qIERPTUVycm9yQ29kZXMuWF9UUkFOU0lUSU9OX0lOVkFMSURfQ0hJTERSRU4gKi9dOiBgPFRyYW5zaXRpb24+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudCBvciBjb21wb25lbnQuYCxcclxuICAgIFs2MCAvKiBET01FcnJvckNvZGVzLlhfSUdOT1JFRF9TSURFX0VGRkVDVF9UQUcgKi9dOiBgVGFncyB3aXRoIHNpZGUgZWZmZWN0ICg8c2NyaXB0PiBhbmQgPHN0eWxlPikgYXJlIGlnbm9yZWQgaW4gY2xpZW50IGNvbXBvbmVudCB0ZW1wbGF0ZXMuYFxyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WSHRtbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTAgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUxIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfV0lUSF9DSElMRFJFTiAqLywgbG9jKSk7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBpbm5lckhUTUxgLCB0cnVlLCBsb2MpLCBleHAgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSkpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtVlRleHQgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUyIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MyAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX1dJVEhfQ0hJTERSRU4gKi8sIGxvYykpO1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdGV4dENvbnRlbnRgLCB0cnVlKSwgZXhwXHJcbiAgICAgICAgICAgICAgICA/IGdldENvbnN0YW50VHlwZShleHAsIGNvbnRleHQpID4gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gZXhwXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlclN0cmluZyhUT19ESVNQTEFZX1NUUklORyksIFtleHBdLCBsb2MpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUpKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybU1vZGVsID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgYmFzZVJlc3VsdCA9IHRyYW5zZm9ybU1vZGVsJDEoZGlyLCBub2RlLCBjb250ZXh0KTtcclxuICAgIC8vIGJhc2UgdHJhbnNmb3JtIGhhcyBlcnJvcnMgT1IgY29tcG9uZW50IHYtbW9kZWwgKG9ubHkgbmVlZCBwcm9wcylcclxuICAgIGlmICghYmFzZVJlc3VsdC5wcm9wcy5sZW5ndGggfHwgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmIChkaXIuYXJnKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTUgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQgKi8sIGRpci5hcmcubG9jKSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbmRQcm9wKG5vZGUsICd2YWx1ZScpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NyAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRSAqLywgdmFsdWUubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YWcgfSA9IG5vZGU7XHJcbiAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBjb250ZXh0LmlzQ3VzdG9tRWxlbWVudCh0YWcpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3RleHRhcmVhJyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3NlbGVjdCcgfHxcclxuICAgICAgICBpc0N1c3RvbUVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1RFWFQ7XHJcbiAgICAgICAgbGV0IGlzSW52YWxpZFR5cGUgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8IGlzQ3VzdG9tRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gZmluZFByb3Aobm9kZSwgYHR5cGVgKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDp0eXBlPVwiZm9vXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUuY29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfUkFESU87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX0NIRUNLQk9YO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkVHlwZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NiAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9GSUxFX0lOUFVUX0VMRU1FTlQgKi8sIGRpci5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaGFzIGJpbmRpbmdzIHdpdGggZHluYW1pYyBrZXlzLCB3aGljaCBjYW4gcG9zc2libHkgY29udGFpblxyXG4gICAgICAgICAgICAgICAgLy8gXCJ0eXBlXCIuXHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRleHQgdHlwZVxyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGFnID09PSAnc2VsZWN0Jykge1xyXG4gICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfU0VMRUNUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGV4dGFyZWFcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCBydW50aW1lIGRpcmVjdGl2ZVxyXG4gICAgICAgIC8vIGJ5IHJldHVybmluZyB0aGUgaGVscGVyIHN5bWJvbCB2aWEgbmVlZFJ1bnRpbWVcclxuICAgICAgICAvLyB0aGUgaW1wb3J0IHdpbGwgcmVwbGFjZWQgYSByZXNvbHZlRGlyZWN0aXZlIGNhbGwuXHJcbiAgICAgICAgaWYgKCFpc0ludmFsaWRUeXBlKSB7XHJcbiAgICAgICAgICAgIGJhc2VSZXN1bHQubmVlZFJ1bnRpbWUgPSBjb250ZXh0LmhlbHBlcihkaXJlY3RpdmVUb1VzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTQgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UICovLCBkaXIubG9jKSk7XHJcbiAgICB9XHJcbiAgICAvLyBuYXRpdmUgdm1vZGVsIGRvZXNuJ3QgbmVlZCB0aGUgYG1vZGVsVmFsdWVgIHByb3BzIHNpbmNlIHRoZXkgYXJlIGFsc29cclxuICAgIC8vIHBhc3NlZCB0byB0aGUgcnVudGltZSBhcyBgYmluZGluZy52YWx1ZWAuIHJlbW92aW5nIGl0IHJlZHVjZXMgY29kZSBzaXplLlxyXG4gICAgYmFzZVJlc3VsdC5wcm9wcyA9IGJhc2VSZXN1bHQucHJvcHMuZmlsdGVyKHAgPT4gIShwLmtleS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgIHAua2V5LmNvbnRlbnQgPT09ICdtb2RlbFZhbHVlJykpO1xyXG4gICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbn07XG5cbmNvbnN0IGlzRXZlbnRPcHRpb25Nb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgcGFzc2l2ZSxvbmNlLGNhcHR1cmVgKTtcclxuY29uc3QgaXNOb25LZXlNb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChcclxuLy8gZXZlbnQgcHJvcGFnYXRpb24gbWFuYWdlbWVudFxyXG5gc3RvcCxwcmV2ZW50LHNlbGYsYCArXHJcbiAgICAvLyBzeXN0ZW0gbW9kaWZpZXJzICsgZXhhY3RcclxuICAgIGBjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0LGAgK1xyXG4gICAgLy8gbW91c2VcclxuICAgIGBtaWRkbGVgKTtcclxuLy8gbGVmdCAmIHJpZ2h0IGNvdWxkIGJlIG1vdXNlIG9yIGtleSBtb2RpZmllcnMgYmFzZWQgb24gZXZlbnQgdHlwZVxyXG5jb25zdCBtYXliZUtleU1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdsZWZ0LHJpZ2h0Jyk7XHJcbmNvbnN0IGlzS2V5Ym9hcmRFdmVudCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgb25rZXl1cCxvbmtleWRvd24sb25rZXlwcmVzc2AsIHRydWUpO1xyXG5jb25zdCByZXNvbHZlTW9kaWZpZXJzID0gKGtleSwgbW9kaWZpZXJzLCBjb250ZXh0LCBsb2MpID0+IHtcclxuICAgIGNvbnN0IGtleU1vZGlmaWVycyA9IFtdO1xyXG4gICAgY29uc3Qgbm9uS2V5TW9kaWZpZXJzID0gW107XHJcbiAgICBjb25zdCBldmVudE9wdGlvbk1vZGlmaWVycyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vZGlmaWVyc1tpXTtcclxuICAgICAgICBpZiAobW9kaWZpZXIgPT09ICduYXRpdmUnICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfT05fTkFUSVZFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfT05fTkFUSVZFICovLCBjb250ZXh0LCBsb2MpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0V2ZW50T3B0aW9uTW9kaWZpZXIobW9kaWZpZXIpKSB7XHJcbiAgICAgICAgICAgIC8vIGV2ZW50T3B0aW9uTW9kaWZpZXJzOiBtb2RpZmllcnMgZm9yIGFkZEV2ZW50TGlzdGVuZXIoKSBvcHRpb25zLFxyXG4gICAgICAgICAgICAvLyBlLmcuIC5wYXNzaXZlICYgLmNhcHR1cmVcclxuICAgICAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBydW50aW1lTW9kaWZpZXJzOiBtb2RpZmllcnMgdGhhdCBuZWVkcyBydW50aW1lIGd1YXJkc1xyXG4gICAgICAgICAgICBpZiAobWF5YmVLZXlNb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudChrZXkuY29udGVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uS2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOb25LZXlNb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleU1vZGlmaWVycyxcclxuICAgICAgICBub25LZXlNb2RpZmllcnMsXHJcbiAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnNcclxuICAgIH07XHJcbn07XHJcbmNvbnN0IHRyYW5zZm9ybUNsaWNrID0gKGtleSwgZXZlbnQpID0+IHtcclxuICAgIGNvbnN0IGlzU3RhdGljQ2xpY2sgPSBpc1N0YXRpY0V4cChrZXkpICYmIGtleS5jb250ZW50LnRvTG93ZXJDYXNlKCkgPT09ICdvbmNsaWNrJztcclxuICAgIHJldHVybiBpc1N0YXRpY0NsaWNrXHJcbiAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV2ZW50LCB0cnVlKVxyXG4gICAgICAgIDoga2V5LnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovXHJcbiAgICAgICAgICAgID8gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAoYCxcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIGApID09PSBcIm9uQ2xpY2tcIiA/IFwiJHtldmVudH1cIiA6IChgLFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgYClgXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgIDoga2V5O1xyXG59O1xyXG5jb25zdCB0cmFuc2Zvcm1PbiA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIHJldHVybiB0cmFuc2Zvcm1PbiQxKGRpciwgbm9kZSwgY29udGV4dCwgYmFzZVJlc3VsdCA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMgfSA9IGRpcjtcclxuICAgICAgICBpZiAoIW1vZGlmaWVycy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlUmVzdWx0O1xyXG4gICAgICAgIGxldCB7IGtleSwgdmFsdWU6IGhhbmRsZXJFeHAgfSA9IGJhc2VSZXN1bHQucHJvcHNbMF07XHJcbiAgICAgICAgY29uc3QgeyBrZXlNb2RpZmllcnMsIG5vbktleU1vZGlmaWVycywgZXZlbnRPcHRpb25Nb2RpZmllcnMgfSA9IHJlc29sdmVNb2RpZmllcnMoa2V5LCBtb2RpZmllcnMsIGNvbnRleHQsIGRpci5sb2MpO1xyXG4gICAgICAgIC8vIG5vcm1hbGl6ZSBjbGljay5yaWdodCBhbmQgY2xpY2subWlkZGxlIHNpbmNlIHRoZXkgZG9uJ3QgYWN0dWFsbHkgZmlyZVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMuaW5jbHVkZXMoJ3JpZ2h0JykpIHtcclxuICAgICAgICAgICAga2V5ID0gdHJhbnNmb3JtQ2xpY2soa2V5LCBgb25Db250ZXh0bWVudWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmluY2x1ZGVzKCdtaWRkbGUnKSkge1xyXG4gICAgICAgICAgICBrZXkgPSB0cmFuc2Zvcm1DbGljayhrZXksIGBvbk1vdXNldXBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9NT0RJRklFUlMpLCBbXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyRXhwLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobm9uS2V5TW9kaWZpZXJzKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleU1vZGlmaWVycy5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gaWYgZXZlbnQgbmFtZSBpcyBkeW5hbWljLCBhbHdheXMgd3JhcCB3aXRoIGtleXMgZ3VhcmRcclxuICAgICAgICAgICAgKCFpc1N0YXRpY0V4cChrZXkpIHx8IGlzS2V5Ym9hcmRFdmVudChrZXkuY29udGVudCkpKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihWX09OX1dJVEhfS0VZUyksIFtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJFeHAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShrZXlNb2RpZmllcnMpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnRPcHRpb25Nb2RpZmllcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyUG9zdGZpeCA9IGV2ZW50T3B0aW9uTW9kaWZpZXJzLm1hcChjYXBpdGFsaXplKS5qb2luKCcnKTtcclxuICAgICAgICAgICAga2V5ID0gaXNTdGF0aWNFeHAoa2V5KVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke2tleS5jb250ZW50fSR7bW9kaWZpZXJQb3N0Zml4fWAsIHRydWUpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYChgLCBrZXksIGApICsgXCIke21vZGlmaWVyUG9zdGZpeH1cImBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShrZXksIGhhbmRsZXJFeHApXVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtU2hvdyA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTggLyogRE9NRXJyb3JDb2Rlcy5YX1ZfU0hPV19OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtdLFxyXG4gICAgICAgIG5lZWRSdW50aW1lOiBjb250ZXh0LmhlbHBlcihWX1NIT1cpXHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1UcmFuc2l0aW9uID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbnRleHQuaXNCdWlsdEluQ29tcG9uZW50KG5vZGUudGFnKTtcclxuICAgICAgICBpZiAoY29tcG9uZW50ID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gd2FybiBtdWx0aXBsZSB0cmFuc2l0aW9uIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzTXVsdGlwbGVDaGlsZHJlbihub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU5IC8qIERPTUVycm9yQ29kZXMuWF9UUkFOU0lUSU9OX0lOVkFMSURfQ0hJTERSRU4gKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5vZGUuY2hpbGRyZW5bMF0ubG9jLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXQncyBzIHNpbmdsZSBjaGlsZCB3LyB2LXNob3dcclxuICAgICAgICAgICAgICAgIC8vIGlmIHllcywgaW5qZWN0IFwicGVyc2lzdGVkOiB0cnVlXCIgdG8gdGhlIHRyYW5zaXRpb24gcHJvcHNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIGNoaWxkLnByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdzaG93Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5wcm9wcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcnNpc3RlZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IG5vZGUubG9jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIGhhc011bHRpcGxlQ2hpbGRyZW4obm9kZSkge1xyXG4gICAgLy8gIzEzNTIgZmlsdGVyIG91dCBwb3RlbnRpYWwgY29tbWVudCBub2Rlcy5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyAmJlxyXG4gICAgICAgICEoYy50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmICFjLmNvbnRlbnQudHJpbSgpKSkpO1xyXG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgIHJldHVybiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8XHJcbiAgICAgICAgY2hpbGQudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLyB8fFxyXG4gICAgICAgIChjaGlsZC50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLyAmJiBjaGlsZC5icmFuY2hlcy5zb21lKGhhc011bHRpcGxlQ2hpbGRyZW4pKSk7XHJcbn1cblxuY29uc3QgaWdub3JlU2lkZUVmZmVjdFRhZ3MgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIChub2RlLnRhZyA9PT0gJ3NjcmlwdCcgfHwgbm9kZS50YWcgPT09ICdzdHlsZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNjAgLyogRE9NRXJyb3JDb2Rlcy5YX0lHTk9SRURfU0lERV9FRkZFQ1RfVEFHICovLCBub2RlLmxvYykpO1xyXG4gICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCBET01Ob2RlVHJhbnNmb3JtcyA9IFtcclxuICAgIHRyYW5zZm9ybVN0eWxlLFxyXG4gICAgLi4uKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IFt0cmFuc2Zvcm1UcmFuc2l0aW9uXSA6IFtdKVxyXG5dO1xyXG5jb25zdCBET01EaXJlY3RpdmVUcmFuc2Zvcm1zID0ge1xyXG4gICAgY2xvYWs6IG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sXHJcbiAgICBodG1sOiB0cmFuc2Zvcm1WSHRtbCxcclxuICAgIHRleHQ6IHRyYW5zZm9ybVZUZXh0LFxyXG4gICAgbW9kZWw6IHRyYW5zZm9ybU1vZGVsLFxyXG4gICAgb246IHRyYW5zZm9ybU9uLFxyXG4gICAgc2hvdzogdHJhbnNmb3JtU2hvd1xyXG59O1xyXG5mdW5jdGlvbiBjb21waWxlKHRlbXBsYXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgZXh0ZW5kKHt9LCBwYXJzZXJPcHRpb25zLCBvcHRpb25zLCB7XHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXM6IFtcclxuICAgICAgICAgICAgLy8gaWdub3JlIDxzY3JpcHQ+IGFuZCA8dGFnPlxyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBwdXQgaW5zaWRlIERPTU5vZGVUcmFuc2Zvcm1zIGJlY2F1c2UgdGhhdCBsaXN0IGlzIHVzZWRcclxuICAgICAgICAgICAgLy8gYnkgY29tcGlsZXItc3NyIHRvIGdlbmVyYXRlIHZub2RlIGZhbGxiYWNrIGJyYW5jaGVzXHJcbiAgICAgICAgICAgIGlnbm9yZVNpZGVFZmZlY3RUYWdzLFxyXG4gICAgICAgICAgICAuLi5ET01Ob2RlVHJhbnNmb3JtcyxcclxuICAgICAgICAgICAgLi4uKG9wdGlvbnMubm9kZVRyYW5zZm9ybXMgfHwgW10pXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkaXJlY3RpdmVUcmFuc2Zvcm1zOiBleHRlbmQoe30sIERPTURpcmVjdGl2ZVRyYW5zZm9ybXMsIG9wdGlvbnMuZGlyZWN0aXZlVHJhbnNmb3JtcyB8fCB7fSksXHJcbiAgICAgICAgdHJhbnNmb3JtSG9pc3Q6IG51bGwgXHJcbiAgICB9KSk7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2UodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIGJhc2VQYXJzZSh0ZW1wbGF0ZSwgZXh0ZW5kKHt9LCBwYXJzZXJPcHRpb25zLCBvcHRpb25zKSk7XHJcbn1cblxuZXhwb3J0IHsgRE9NRGlyZWN0aXZlVHJhbnNmb3JtcywgRE9NTm9kZVRyYW5zZm9ybXMsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fR1JPVVAsIFZfTU9ERUxfQ0hFQ0tCT1gsIFZfTU9ERUxfRFlOQU1JQywgVl9NT0RFTF9SQURJTywgVl9NT0RFTF9TRUxFQ1QsIFZfTU9ERUxfVEVYVCwgVl9PTl9XSVRIX0tFWVMsIFZfT05fV0lUSF9NT0RJRklFUlMsIFZfU0hPVywgY29tcGlsZSwgY3JlYXRlRE9NQ29tcGlsZXJFcnJvciwgcGFyc2UsIHBhcnNlck9wdGlvbnMsIHRyYW5zZm9ybVN0eWxlIH07XG4iLCJleHBvcnQgY29uc3QgSE9PS19TRVRVUCA9ICdkZXZ0b29scy1wbHVnaW46c2V0dXAnO1xuZXhwb3J0IGNvbnN0IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCA9ICdwbHVnaW46c2V0dGluZ3M6c2V0JztcbiIsImV4cG9ydCBmdW5jdGlvbiBnZXREZXZ0b29sc0dsb2JhbEhvb2soKSB7XG4gICAgcmV0dXJuIGdldFRhcmdldCgpLl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGdsb2JhbFxuICAgICAgICAgICAgOiB7fTtcbn1cbmV4cG9ydCBjb25zdCBpc1Byb3h5QXZhaWxhYmxlID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuIiwiaW1wb3J0IHsgZ2V0VGFyZ2V0LCBnZXREZXZ0b29sc0dsb2JhbEhvb2ssIGlzUHJveHlBdmFpbGFibGUgfSBmcm9tICcuL2Vudi5qcyc7XG5pbXBvcnQgeyBIT09LX1NFVFVQIH0gZnJvbSAnLi9jb25zdC5qcyc7XG5pbXBvcnQgeyBBcGlQcm94eSB9IGZyb20gJy4vcHJveHkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGkvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4uanMnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cERldnRvb2xzUGx1Z2luKHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4pIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gcGx1Z2luRGVzY3JpcHRvcjtcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoKTtcbiAgICBjb25zdCBob29rID0gZ2V0RGV2dG9vbHNHbG9iYWxIb29rKCk7XG4gICAgY29uc3QgZW5hYmxlUHJveHkgPSBpc1Byb3h5QXZhaWxhYmxlICYmIGRlc2NyaXB0b3IuZW5hYmxlRWFybHlQcm94eTtcbiAgICBpZiAoaG9vayAmJiAodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTl9BUElfQVZBSUxBQkxFX18gfHwgIWVuYWJsZVByb3h5KSkge1xuICAgICAgICBob29rLmVtaXQoSE9PS19TRVRVUCwgcGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBwcm94eSA9IGVuYWJsZVByb3h5ID8gbmV3IEFwaVByb3h5KGRlc2NyaXB0b3IsIGhvb2spIDogbnVsbDtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOU19fIHx8IFtdO1xuICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgcGx1Z2luRGVzY3JpcHRvcjogZGVzY3JpcHRvcixcbiAgICAgICAgICAgIHNldHVwRm4sXG4gICAgICAgICAgICBwcm94eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm94eSlcbiAgICAgICAgICAgIHNldHVwRm4ocHJveHkucHJveGllZFRhcmdldCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSE9PS19QTFVHSU5fU0VUVElOR1NfU0VUIH0gZnJvbSAnLi9jb25zdC5qcyc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuL3RpbWUuanMnO1xuZXhwb3J0IGNsYXNzIEFwaVByb3h5IHtcbiAgICBjb25zdHJ1Y3RvcihwbHVnaW4sIGhvb2spIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnRhcmdldFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub25RdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5ob29rID0gaG9vaztcbiAgICAgICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge307XG4gICAgICAgIGlmIChwbHVnaW4uc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgaW4gcGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHBsdWdpbi5zZXR0aW5nc1tpZF07XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNldHRpbmdzW2lkXSA9IGl0ZW0uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsU2V0dGluZ3NTYXZlSWQgPSBgX192dWUtZGV2dG9vbHMtcGx1Z2luLXNldHRpbmdzX18ke3BsdWdpbi5pZH1gO1xuICAgICAgICBsZXQgY3VycmVudFNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNldHRpbmdzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY3VycmVudFNldHRpbmdzLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmFsbGJhY2tzID0ge1xuICAgICAgICAgICAgZ2V0U2V0dGluZ3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTZXR0aW5ncztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRTZXR0aW5ncyh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFNldHRpbmdzID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbm93KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmIChob29rKSB7XG4gICAgICAgICAgICBob29rLm9uKEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCwgKHBsdWdpbklkLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwbHVnaW5JZCA9PT0gdGhpcy5wbHVnaW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWxsYmFja3Muc2V0U2V0dGluZ3ModmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJveGllZE9uID0gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgICAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5vbltwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJveGllZFRhcmdldCA9IG5ldyBQcm94eSh7fSwge1xuICAgICAgICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXRbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3AgPT09ICdvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJveGllZE9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyh0aGlzLmZhbGxiYWNrcykuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmU6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tzW3Byb3BdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNldFJlYWxUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5vblF1ZXVlKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vbltpdGVtLm1ldGhvZF0oLi4uaXRlbS5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy50YXJnZXRRdWV1ZSkge1xuICAgICAgICAgICAgaXRlbS5yZXNvbHZlKGF3YWl0IHRoaXMudGFyZ2V0W2l0ZW0ubWV0aG9kXSguLi5pdGVtLmFyZ3MpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImxldCBzdXBwb3J0ZWQ7XG5sZXQgcGVyZjtcbmV4cG9ydCBmdW5jdGlvbiBpc1BlcmZvcm1hbmNlU3VwcG9ydGVkKCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoc3VwcG9ydGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICBwZXJmID0gd2luZG93LnBlcmZvcm1hbmNlO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiAoKF9hID0gZ2xvYmFsLnBlcmZfaG9va3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wZXJmb3JtYW5jZSkpIHtcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgcGVyZiA9IGdsb2JhbC5wZXJmX2hvb2tzLnBlcmZvcm1hbmNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3VwcG9ydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdXBwb3J0ZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICAgIHJldHVybiBpc1BlcmZvcm1hbmNlU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKTtcbn1cbiIsImltcG9ydCB7IGV4dGVuZCwgaXNBcnJheSwgaXNNYXAsIGlzSW50ZWdlcktleSwgaGFzT3duLCBpc1N5bWJvbCwgaXNPYmplY3QsIGhhc0NoYW5nZWQsIG1ha2VNYXAsIGNhcGl0YWxpemUsIHRvUmF3VHlwZSwgZGVmLCBpc0Z1bmN0aW9uLCBOT09QIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiB3YXJuKG1zZywgLi4uYXJncykge1xyXG4gICAgY29uc29sZS53YXJuKGBbVnVlIHdhcm5dICR7bXNnfWAsIC4uLmFyZ3MpO1xyXG59XG5cbmxldCBhY3RpdmVFZmZlY3RTY29wZTtcclxuY2xhc3MgRWZmZWN0U2NvcGUge1xyXG4gICAgY29uc3RydWN0b3IoZGV0YWNoZWQgPSBmYWxzZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmVmZmVjdHMgPSBbXTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmNsZWFudXBzID0gW107XHJcbiAgICAgICAgaWYgKCFkZXRhY2hlZCAmJiBhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB0aGlzLmluZGV4ID1cclxuICAgICAgICAgICAgICAgIChhY3RpdmVFZmZlY3RTY29wZS5zY29wZXMgfHwgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyA9IFtdKSkucHVzaCh0aGlzKSAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcnVuKGZuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFZmZlY3RTY29wZSA9IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IGN1cnJlbnRFZmZlY3RTY29wZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgY2Fubm90IHJ1biBhbiBpbmFjdGl2ZSBlZmZlY3Qgc2NvcGUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBub24tZGV0YWNoZWQgc2NvcGVzXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgb24oKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBub24tZGV0YWNoZWQgc2NvcGVzXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcy5wYXJlbnQ7XHJcbiAgICB9XHJcbiAgICBzdG9wKGZyb21QYXJlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgbGV0IGksIGw7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmVmZmVjdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVmZmVjdHNbaV0uc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmNsZWFudXBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwc1tpXSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjb3Blcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuc2NvcGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NvcGVzW2ldLnN0b3AodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbmVzdGVkIHNjb3BlLCBkZXJlZmVyZW5jZSBmcm9tIHBhcmVudCB0byBhdm9pZCBtZW1vcnkgbGVha3NcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmICFmcm9tUGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBvcHRpbWl6ZWQgTygxKSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgJiYgbGFzdCAhPT0gdGhpcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XSA9IGxhc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5pbmRleCA9IHRoaXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWZmZWN0U2NvcGUoZGV0YWNoZWQpIHtcclxuICAgIHJldHVybiBuZXcgRWZmZWN0U2NvcGUoZGV0YWNoZWQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlY29yZEVmZmVjdFNjb3BlKGVmZmVjdCwgc2NvcGUgPSBhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgaWYgKHNjb3BlICYmIHNjb3BlLmFjdGl2ZSkge1xyXG4gICAgICAgIHNjb3BlLmVmZmVjdHMucHVzaChlZmZlY3QpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEN1cnJlbnRTY29wZSgpIHtcclxuICAgIHJldHVybiBhY3RpdmVFZmZlY3RTY29wZTtcclxufVxyXG5mdW5jdGlvbiBvblNjb3BlRGlzcG9zZShmbikge1xyXG4gICAgaWYgKGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUuY2xlYW51cHMucHVzaChmbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBvblNjb3BlRGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBlZmZlY3Qgc2NvcGVgICtcclxuICAgICAgICAgICAgYCB0byBiZSBhc3NvY2lhdGVkIHdpdGguYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgY3JlYXRlRGVwID0gKGVmZmVjdHMpID0+IHtcclxuICAgIGNvbnN0IGRlcCA9IG5ldyBTZXQoZWZmZWN0cyk7XHJcbiAgICBkZXAudyA9IDA7XHJcbiAgICBkZXAubiA9IDA7XHJcbiAgICByZXR1cm4gZGVwO1xyXG59O1xyXG5jb25zdCB3YXNUcmFja2VkID0gKGRlcCkgPT4gKGRlcC53ICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBuZXdUcmFja2VkID0gKGRlcCkgPT4gKGRlcC5uICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBpbml0RGVwTWFya2VycyA9ICh7IGRlcHMgfSkgPT4ge1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlcHNbaV0udyB8PSB0cmFja09wQml0OyAvLyBzZXQgd2FzIHRyYWNrZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGZpbmFsaXplRGVwTWFya2VycyA9IChlZmZlY3QpID0+IHtcclxuICAgIGNvbnN0IHsgZGVwcyB9ID0gZWZmZWN0O1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHB0ciA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlcCA9IGRlcHNbaV07XHJcbiAgICAgICAgICAgIGlmICh3YXNUcmFja2VkKGRlcCkgJiYgIW5ld1RyYWNrZWQoZGVwKSkge1xyXG4gICAgICAgICAgICAgICAgZGVwLmRlbGV0ZShlZmZlY3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGVwc1twdHIrK10gPSBkZXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2xlYXIgYml0c1xyXG4gICAgICAgICAgICBkZXAudyAmPSB+dHJhY2tPcEJpdDtcclxuICAgICAgICAgICAgZGVwLm4gJj0gfnRyYWNrT3BCaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlcHMubGVuZ3RoID0gcHRyO1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBUaGUgbnVtYmVyIG9mIGVmZmVjdHMgY3VycmVudGx5IGJlaW5nIHRyYWNrZWQgcmVjdXJzaXZlbHkuXHJcbmxldCBlZmZlY3RUcmFja0RlcHRoID0gMDtcclxubGV0IHRyYWNrT3BCaXQgPSAxO1xyXG4vKipcclxuICogVGhlIGJpdHdpc2UgdHJhY2sgbWFya2VycyBzdXBwb3J0IGF0IG1vc3QgMzAgbGV2ZWxzIG9mIHJlY3Vyc2lvbi5cclxuICogVGhpcyB2YWx1ZSBpcyBjaG9zZW4gdG8gZW5hYmxlIG1vZGVybiBKUyBlbmdpbmVzIHRvIHVzZSBhIFNNSSBvbiBhbGwgcGxhdGZvcm1zLlxyXG4gKiBXaGVuIHJlY3Vyc2lvbiBkZXB0aCBpcyBncmVhdGVyLCBmYWxsIGJhY2sgdG8gdXNpbmcgYSBmdWxsIGNsZWFudXAuXHJcbiAqL1xyXG5jb25zdCBtYXhNYXJrZXJCaXRzID0gMzA7XHJcbmxldCBhY3RpdmVFZmZlY3Q7XHJcbmNvbnN0IElURVJBVEVfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdpdGVyYXRlJyA6ICcnKTtcclxuY29uc3QgTUFQX0tFWV9JVEVSQVRFX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnTWFwIGtleSBpdGVyYXRlJyA6ICcnKTtcclxuY2xhc3MgUmVhY3RpdmVFZmZlY3Qge1xyXG4gICAgY29uc3RydWN0b3IoZm4sIHNjaGVkdWxlciA9IG51bGwsIHNjb3BlKSB7XHJcbiAgICAgICAgdGhpcy5mbiA9IGZuO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRlcHMgPSBbXTtcclxuICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZWNvcmRFZmZlY3RTY29wZSh0aGlzLCBzY29wZSk7XHJcbiAgICB9XHJcbiAgICBydW4oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcGFyZW50ID0gYWN0aXZlRWZmZWN0O1xyXG4gICAgICAgIGxldCBsYXN0U2hvdWxkVHJhY2sgPSBzaG91bGRUcmFjaztcclxuICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IGFjdGl2ZUVmZmVjdDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcztcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB0cmFja09wQml0ID0gMSA8PCArK2VmZmVjdFRyYWNrRGVwdGg7XHJcbiAgICAgICAgICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICAgICAgICAgIGluaXREZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2xlYW51cEVmZmVjdCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgICAgICAgICAgZmluYWxpemVEZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyYWNrT3BCaXQgPSAxIDw8IC0tZWZmZWN0VHJhY2tEZXB0aDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gbGFzdFNob3VsZFRyYWNrO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmZXJTdG9wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN0b3AoKSB7XHJcbiAgICAgICAgLy8gc3RvcHBlZCB3aGlsZSBydW5uaW5nIGl0c2VsZiAtIGRlZmVyIHRoZSBjbGVhbnVwXHJcbiAgICAgICAgaWYgKGFjdGl2ZUVmZmVjdCA9PT0gdGhpcykge1xyXG4gICAgICAgICAgICB0aGlzLmRlZmVyU3RvcCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNsZWFudXBFZmZlY3QodGhpcyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9uU3RvcCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjbGVhbnVwRWZmZWN0KGVmZmVjdCkge1xyXG4gICAgY29uc3QgeyBkZXBzIH0gPSBlZmZlY3Q7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZGVwc1tpXS5kZWxldGUoZWZmZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwcy5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGVmZmVjdChmbiwgb3B0aW9ucykge1xyXG4gICAgaWYgKGZuLmVmZmVjdCkge1xyXG4gICAgICAgIGZuID0gZm4uZWZmZWN0LmZuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgX2VmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChmbik7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgIGV4dGVuZChfZWZmZWN0LCBvcHRpb25zKTtcclxuICAgICAgICBpZiAob3B0aW9ucy5zY29wZSlcclxuICAgICAgICAgICAgcmVjb3JkRWZmZWN0U2NvcGUoX2VmZmVjdCwgb3B0aW9ucy5zY29wZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMubGF6eSkge1xyXG4gICAgICAgIF9lZmZlY3QucnVuKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBydW5uZXIgPSBfZWZmZWN0LnJ1bi5iaW5kKF9lZmZlY3QpO1xyXG4gICAgcnVubmVyLmVmZmVjdCA9IF9lZmZlY3Q7XHJcbiAgICByZXR1cm4gcnVubmVyO1xyXG59XHJcbmZ1bmN0aW9uIHN0b3AocnVubmVyKSB7XHJcbiAgICBydW5uZXIuZWZmZWN0LnN0b3AoKTtcclxufVxyXG5sZXQgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG5jb25zdCB0cmFja1N0YWNrID0gW107XHJcbmZ1bmN0aW9uIHBhdXNlVHJhY2tpbmcoKSB7XHJcbiAgICB0cmFja1N0YWNrLnB1c2goc2hvdWxkVHJhY2spO1xyXG4gICAgc2hvdWxkVHJhY2sgPSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBlbmFibGVUcmFja2luZygpIHtcclxuICAgIHRyYWNrU3RhY2sucHVzaChzaG91bGRUcmFjayk7XHJcbiAgICBzaG91bGRUcmFjayA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gcmVzZXRUcmFja2luZygpIHtcclxuICAgIGNvbnN0IGxhc3QgPSB0cmFja1N0YWNrLnBvcCgpO1xyXG4gICAgc2hvdWxkVHJhY2sgPSBsYXN0ID09PSB1bmRlZmluZWQgPyB0cnVlIDogbGFzdDtcclxufVxyXG5mdW5jdGlvbiB0cmFjayh0YXJnZXQsIHR5cGUsIGtleSkge1xyXG4gICAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xyXG4gICAgICAgIGxldCBkZXBzTWFwID0gdGFyZ2V0TWFwLmdldCh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghZGVwc01hcCkge1xyXG4gICAgICAgICAgICB0YXJnZXRNYXAuc2V0KHRhcmdldCwgKGRlcHNNYXAgPSBuZXcgTWFwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRlcCA9IGRlcHNNYXAuZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKCFkZXApIHtcclxuICAgICAgICAgICAgZGVwc01hcC5zZXQoa2V5LCAoZGVwID0gY3JlYXRlRGVwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXZlbnRJbmZvID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgID8geyBlZmZlY3Q6IGFjdGl2ZUVmZmVjdCwgdGFyZ2V0LCB0eXBlLCBrZXkgfVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICB0cmFja0VmZmVjdHMoZGVwLCBldmVudEluZm8pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyYWNrRWZmZWN0cyhkZXAsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIGxldCBzaG91bGRUcmFjayA9IGZhbHNlO1xyXG4gICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgIGlmICghbmV3VHJhY2tlZChkZXApKSB7XHJcbiAgICAgICAgICAgIGRlcC5uIHw9IHRyYWNrT3BCaXQ7IC8vIHNldCBuZXdseSB0cmFja2VkXHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gIXdhc1RyYWNrZWQoZGVwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBGdWxsIGNsZWFudXAgbW9kZS5cclxuICAgICAgICBzaG91bGRUcmFjayA9ICFkZXAuaGFzKGFjdGl2ZUVmZmVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvdWxkVHJhY2spIHtcclxuICAgICAgICBkZXAuYWRkKGFjdGl2ZUVmZmVjdCk7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0LmRlcHMucHVzaChkZXApO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYWN0aXZlRWZmZWN0Lm9uVHJhY2spIHtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0Lm9uVHJhY2soT2JqZWN0LmFzc2lnbih7IGVmZmVjdDogYWN0aXZlRWZmZWN0IH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlcih0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQpIHtcclxuICAgIGNvbnN0IGRlcHNNYXAgPSB0YXJnZXRNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICBpZiAoIWRlcHNNYXApIHtcclxuICAgICAgICAvLyBuZXZlciBiZWVuIHRyYWNrZWRcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZGVwcyA9IFtdO1xyXG4gICAgaWYgKHR5cGUgPT09IFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLykge1xyXG4gICAgICAgIC8vIGNvbGxlY3Rpb24gYmVpbmcgY2xlYXJlZFxyXG4gICAgICAgIC8vIHRyaWdnZXIgYWxsIGVmZmVjdHMgZm9yIHRhcmdldFxyXG4gICAgICAgIGRlcHMgPSBbLi4uZGVwc01hcC52YWx1ZXMoKV07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChrZXkgPT09ICdsZW5ndGgnICYmIGlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgIGRlcHNNYXAuZm9yRWFjaCgoZGVwLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2xlbmd0aCcgfHwga2V5ID49IG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc2NoZWR1bGUgcnVucyBmb3IgU0VUIHwgQUREIHwgREVMRVRFXHJcbiAgICAgICAgaWYgKGtleSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWxzbyBydW4gZm9yIGl0ZXJhdGlvbiBrZXkgb24gQUREIHwgREVMRVRFIHwgTWFwLlNFVFxyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50ZWdlcktleShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmV3IGluZGV4IGFkZGVkIHRvIGFycmF5IC0+IGxlbmd0aCBjaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KCdsZW5ndGgnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLzpcclxuICAgICAgICAgICAgICAgIGlmICghaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KE1BUF9LRVlfSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudEluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IHsgdGFyZ2V0LCB0eXBlLCBrZXksIG5ld1ZhbHVlLCBvbGRWYWx1ZSwgb2xkVGFyZ2V0IH1cclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIGlmIChkZXBzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGlmIChkZXBzWzBdKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGRlcHNbMF0sIGV2ZW50SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhkZXBzWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XHJcbiAgICAgICAgICAgIGlmIChkZXApIHtcclxuICAgICAgICAgICAgICAgIGVmZmVjdHMucHVzaCguLi5kZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoY3JlYXRlRGVwKGVmZmVjdHMpLCBldmVudEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoY3JlYXRlRGVwKGVmZmVjdHMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlckVmZmVjdHMoZGVwLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICAvLyBzcHJlYWQgaW50byBhcnJheSBmb3Igc3RhYmlsaXphdGlvblxyXG4gICAgY29uc3QgZWZmZWN0cyA9IGlzQXJyYXkoZGVwKSA/IGRlcCA6IFsuLi5kZXBdO1xyXG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgZWZmZWN0cykge1xyXG4gICAgICAgIGlmIChlZmZlY3QuY29tcHV0ZWQpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdChlZmZlY3QsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZWZmZWN0IG9mIGVmZmVjdHMpIHtcclxuICAgICAgICBpZiAoIWVmZmVjdC5jb21wdXRlZCkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0KGVmZmVjdCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJFZmZlY3QoZWZmZWN0LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICBpZiAoZWZmZWN0ICE9PSBhY3RpdmVFZmZlY3QgfHwgZWZmZWN0LmFsbG93UmVjdXJzZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZWZmZWN0Lm9uVHJpZ2dlcikge1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmlnZ2VyKGV4dGVuZCh7IGVmZmVjdCB9LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlZmZlY3Quc2NoZWR1bGVyKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5zY2hlZHVsZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNOb25UcmFja2FibGVLZXlzID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBfX3Byb3RvX18sX192X2lzUmVmLF9faXNWdWVgKTtcclxuY29uc3QgYnVpbHRJblN5bWJvbHMgPSBuZXcgU2V0KFxyXG4vKiNfX1BVUkVfXyovXHJcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbClcclxuICAgIC8vIGlvczEwLnggT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBjYW4gZW51bWVyYXRlICdhcmd1bWVudHMnIGFuZCAnY2FsbGVyJ1xyXG4gICAgLy8gYnV0IGFjY2Vzc2luZyB0aGVtIG9uIFN5bWJvbCBsZWFkcyB0byBUeXBlRXJyb3IgYmVjYXVzZSBTeW1ib2wgaXMgYSBzdHJpY3QgbW9kZVxyXG4gICAgLy8gZnVuY3Rpb25cclxuICAgIC5maWx0ZXIoa2V5ID0+IGtleSAhPT0gJ2FyZ3VtZW50cycgJiYga2V5ICE9PSAnY2FsbGVyJylcclxuICAgIC5tYXAoa2V5ID0+IFN5bWJvbFtrZXldKVxyXG4gICAgLmZpbHRlcihpc1N5bWJvbCkpO1xyXG5jb25zdCBnZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcigpO1xyXG5jb25zdCBzaGFsbG93R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIoZmFsc2UsIHRydWUpO1xyXG5jb25zdCByZWFkb25seUdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKHRydWUpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcih0cnVlLCB0cnVlKTtcclxuY29uc3QgYXJyYXlJbnN0cnVtZW50YXRpb25zID0gLyojX19QVVJFX18qLyBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zKCkge1xyXG4gICAgY29uc3QgaW5zdHJ1bWVudGF0aW9ucyA9IHt9O1xyXG4gICAgWydpbmNsdWRlcycsICdpbmRleE9mJywgJ2xhc3RJbmRleE9mJ10uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGluc3RydW1lbnRhdGlvbnNba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHRvUmF3KHRoaXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhhcnIsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgaSArICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3ZSBydW4gdGhlIG1ldGhvZCB1c2luZyB0aGUgb3JpZ2luYWwgYXJncyBmaXJzdCAod2hpY2ggbWF5IGJlIHJlYWN0aXZlKVxyXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhcnJba2V5XSguLi5hcmdzKTtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PT0gLTEgfHwgcmVzID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhhdCBkaWRuJ3Qgd29yaywgcnVuIGl0IGFnYWluIHVzaW5nIHJhdyB2YWx1ZXMuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyW2tleV0oLi4uYXJncy5tYXAodG9SYXcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBbJ3B1c2gnLCAncG9wJywgJ3NoaWZ0JywgJ3Vuc2hpZnQnLCAnc3BsaWNlJ10uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGluc3RydW1lbnRhdGlvbnNba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gdG9SYXcodGhpcylba2V5XS5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25zO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUdldHRlcihpc1JlYWRvbmx5ID0gZmFsc2UsIHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaGFsbG93O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovICYmXHJcbiAgICAgICAgICAgIHJlY2VpdmVyID09PVxyXG4gICAgICAgICAgICAgICAgKGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaGFsbG93UmVhZG9ubHlNYXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFkb25seU1hcFxyXG4gICAgICAgICAgICAgICAgICAgIDogc2hhbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dSZWFjdGl2ZU1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWN0aXZlTWFwKS5nZXQodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YXJnZXRJc0FycmF5ID0gaXNBcnJheSh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghaXNSZWFkb25seSAmJiB0YXJnZXRJc0FycmF5ICYmIGhhc093bihhcnJheUluc3RydW1lbnRhdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KGFycmF5SW5zdHJ1bWVudGF0aW9ucywga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcyA9IFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgaWYgKGlzU3ltYm9sKGtleSkgPyBidWlsdEluU3ltYm9scy5oYXMoa2V5KSA6IGlzTm9uVHJhY2thYmxlS2V5cyhrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgICAgICB0cmFjayh0YXJnZXQsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYWxsb3cpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUmVmKHJlcykpIHtcclxuICAgICAgICAgICAgLy8gcmVmIHVud3JhcHBpbmcgLSBza2lwIHVud3JhcCBmb3IgQXJyYXkgKyBpbnRlZ2VyIGtleS5cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldElzQXJyYXkgJiYgaXNJbnRlZ2VyS2V5KGtleSkgPyByZXMgOiByZXMudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChyZXMpKSB7XHJcbiAgICAgICAgICAgIC8vIENvbnZlcnQgcmV0dXJuZWQgdmFsdWUgaW50byBhIHByb3h5IGFzIHdlbGwuIHdlIGRvIHRoZSBpc09iamVjdCBjaGVja1xyXG4gICAgICAgICAgICAvLyBoZXJlIHRvIGF2b2lkIGludmFsaWQgdmFsdWUgd2FybmluZy4gQWxzbyBuZWVkIHRvIGxhenkgYWNjZXNzIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8vIGFuZCByZWFjdGl2ZSBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kuXHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5ID8gcmVhZG9ubHkocmVzKSA6IHJlYWN0aXZlKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IHNldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlU2V0dGVyKCk7XHJcbmNvbnN0IHNoYWxsb3dTZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZVNldHRlcih0cnVlKTtcclxuZnVuY3Rpb24gY3JlYXRlU2V0dGVyKHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSB7XHJcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVhZG9ubHkob2xkVmFsdWUpICYmIGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFzaGFsbG93KSB7XHJcbiAgICAgICAgICAgIGlmICghaXNTaGFsbG93KHZhbHVlKSAmJiAhaXNSZWFkb25seSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlID0gdG9SYXcob2xkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoYWRLZXkgPSBpc0FycmF5KHRhcmdldCkgJiYgaXNJbnRlZ2VyS2V5KGtleSlcclxuICAgICAgICAgICAgPyBOdW1iZXIoa2V5KSA8IHRhcmdldC5sZW5ndGhcclxuICAgICAgICAgICAgOiBoYXNPd24odGFyZ2V0LCBrZXkpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIC8vIGRvbid0IHRyaWdnZXIgaWYgdGFyZ2V0IGlzIHNvbWV0aGluZyB1cCBpbiB0aGUgcHJvdG90eXBlIGNoYWluIG9mIG9yaWdpbmFsXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdG9SYXcocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8sIGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLCBrZXksIHZhbHVlLCBvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpIHtcclxuICAgIGNvbnN0IGhhZEtleSA9IGhhc093bih0YXJnZXQsIGtleSk7XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAocmVzdWx0ICYmIGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gaGFzKHRhcmdldCwga2V5KSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0Lmhhcyh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWlzU3ltYm9sKGtleSkgfHwgIWJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgdHJhY2sodGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIG93bktleXModGFyZ2V0KSB7XHJcbiAgICB0cmFjayh0YXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBpc0FycmF5KHRhcmdldCkgPyAnbGVuZ3RoJyA6IElURVJBVEVfS0VZKTtcclxuICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcclxufVxyXG5jb25zdCBtdXRhYmxlSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQsXHJcbiAgICBzZXQsXHJcbiAgICBkZWxldGVQcm9wZXJ0eSxcclxuICAgIGhhcyxcclxuICAgIG93bktleXNcclxufTtcclxuY29uc3QgcmVhZG9ubHlIYW5kbGVycyA9IHtcclxuICAgIGdldDogcmVhZG9ubHlHZXQsXHJcbiAgICBzZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNldCBvcGVyYXRpb24gb24ga2V5IFwiJHtTdHJpbmcoa2V5KX1cIiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgRGVsZXRlIG9wZXJhdGlvbiBvbiBrZXkgXCIke1N0cmluZyhrZXkpfVwiIGZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsIHRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBzaGFsbG93UmVhY3RpdmVIYW5kbGVycyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBtdXRhYmxlSGFuZGxlcnMsIHtcclxuICAgIGdldDogc2hhbGxvd0dldCxcclxuICAgIHNldDogc2hhbGxvd1NldFxyXG59KTtcclxuLy8gUHJvcHMgaGFuZGxlcnMgYXJlIHNwZWNpYWwgaW4gdGhlIHNlbnNlIHRoYXQgaXQgc2hvdWxkIG5vdCB1bndyYXAgdG9wLWxldmVsXHJcbi8vIHJlZnMgKGluIG9yZGVyIHRvIGFsbG93IHJlZnMgdG8gYmUgZXhwbGljaXRseSBwYXNzZWQgZG93biksIGJ1dCBzaG91bGRcclxuLy8gcmV0YWluIHRoZSByZWFjdGl2aXR5IG9mIHRoZSBub3JtYWwgcmVhZG9ubHkgb2JqZWN0LlxyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlIYW5kbGVycyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCByZWFkb25seUhhbmRsZXJzLCB7XHJcbiAgICBnZXQ6IHNoYWxsb3dSZWFkb25seUdldFxyXG59KTtcblxuY29uc3QgdG9TaGFsbG93ID0gKHZhbHVlKSA9PiB2YWx1ZTtcclxuY29uc3QgZ2V0UHJvdG8gPSAodikgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZih2KTtcclxuZnVuY3Rpb24gZ2V0JDEodGFyZ2V0LCBrZXksIGlzUmVhZG9ubHkgPSBmYWxzZSwgaXNTaGFsbG93ID0gZmFsc2UpIHtcclxuICAgIC8vICMxNzcyOiByZWFkb25seShyZWFjdGl2ZShNYXApKSBzaG91bGQgcmV0dXJuIHJlYWRvbmx5ICsgcmVhY3RpdmUgdmVyc2lvblxyXG4gICAgLy8gb2YgdGhlIHZhbHVlXHJcbiAgICB0YXJnZXQgPSB0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAoIWlzUmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSByYXdLZXkpIHtcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCByYXdLZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBoYXMgfSA9IGdldFByb3RvKHJhd1RhcmdldCk7XHJcbiAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgaWYgKGhhcy5jYWxsKHJhd1RhcmdldCwga2V5KSkge1xyXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldC5nZXQoa2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChoYXMuY2FsbChyYXdUYXJnZXQsIHJhd0tleSkpIHtcclxuICAgICAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KHJhd0tleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGFyZ2V0ICE9PSByYXdUYXJnZXQpIHtcclxuICAgICAgICAvLyAjMzYwMiByZWFkb25seShyZWFjdGl2ZShNYXApKVxyXG4gICAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBuZXN0ZWQgcmVhY3RpdmUgYE1hcGAgY2FuIGRvIHRyYWNraW5nIGZvciBpdHNlbGZcclxuICAgICAgICB0YXJnZXQuZ2V0KGtleSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFzJDEoa2V5LCBpc1JlYWRvbmx5ID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAoIWlzUmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSByYXdLZXkpIHtcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJoYXNcIiAvKiBUcmFja09wVHlwZXMuSEFTICovLCByYXdLZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleSA9PT0gcmF3S2V5XHJcbiAgICAgICAgPyB0YXJnZXQuaGFzKGtleSlcclxuICAgICAgICA6IHRhcmdldC5oYXMoa2V5KSB8fCB0YXJnZXQuaGFzKHJhd0tleSk7XHJcbn1cclxuZnVuY3Rpb24gc2l6ZSh0YXJnZXQsIGlzUmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgICFpc1JlYWRvbmx5ICYmIHRyYWNrKHRvUmF3KHRhcmdldCksIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCAnc2l6ZScsIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gYWRkKHZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgcHJvdG8gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgY29uc3QgaGFkS2V5ID0gcHJvdG8uaGFzLmNhbGwodGFyZ2V0LCB2YWx1ZSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIHRhcmdldC5hZGQodmFsdWUpO1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLywgdmFsdWUsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59XHJcbmZ1bmN0aW9uIHNldCQxKGtleSwgdmFsdWUpIHtcclxuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCB7IGhhcywgZ2V0IH0gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgbGV0IGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAga2V5ID0gdG9SYXcoa2V5KTtcclxuICAgICAgICBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0LmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgdGFyZ2V0LnNldChrZXksIHZhbHVlKTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovLCBrZXksIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLywga2V5LCB2YWx1ZSwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlRW50cnkoa2V5KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHsgaGFzLCBnZXQgfSA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBsZXQgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICBrZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgICAgIGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQgPyBnZXQuY2FsbCh0YXJnZXQsIGtleSkgOiB1bmRlZmluZWQ7XHJcbiAgICAvLyBmb3J3YXJkIHRoZSBvcGVyYXRpb24gYmVmb3JlIHF1ZXVlaW5nIHJlYWN0aW9uc1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0LmRlbGV0ZShrZXkpO1xyXG4gICAgaWYgKGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gY2xlYXIoKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IGhhZEl0ZW1zID0gdGFyZ2V0LnNpemUgIT09IDA7XHJcbiAgICBjb25zdCBvbGRUYXJnZXQgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IGlzTWFwKHRhcmdldClcclxuICAgICAgICAgICAgPyBuZXcgTWFwKHRhcmdldClcclxuICAgICAgICAgICAgOiBuZXcgU2V0KHRhcmdldClcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGZvcndhcmQgdGhlIG9wZXJhdGlvbiBiZWZvcmUgcXVldWVpbmcgcmVhY3Rpb25zXHJcbiAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuY2xlYXIoKTtcclxuICAgIGlmIChoYWRJdGVtcykge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvbGRUYXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JFYWNoKGlzUmVhZG9ubHksIGlzU2hhbGxvdykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlZCA9IHRoaXM7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gb2JzZXJ2ZWRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICAgICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgICAgICAhaXNSZWFkb25seSAmJiB0cmFjayhyYXdUYXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGltcG9ydGFudDogbWFrZSBzdXJlIHRoZSBjYWxsYmFjayBpc1xyXG4gICAgICAgICAgICAvLyAxLiBpbnZva2VkIHdpdGggdGhlIHJlYWN0aXZlIG1hcCBhcyBgdGhpc2AgYW5kIDNyZCBhcmdcclxuICAgICAgICAgICAgLy8gMi4gdGhlIHZhbHVlIHJlY2VpdmVkIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgcmVhY3RpdmUvcmVhZG9ubHkuXHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHdyYXAodmFsdWUpLCB3cmFwKGtleSksIG9ic2VydmVkKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBpc1JlYWRvbmx5LCBpc1NoYWxsb3cpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNNYXAgPSBpc01hcChyYXdUYXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IGlzUGFpciA9IG1ldGhvZCA9PT0gJ2VudHJpZXMnIHx8IChtZXRob2QgPT09IFN5bWJvbC5pdGVyYXRvciAmJiB0YXJnZXRJc01hcCk7XHJcbiAgICAgICAgY29uc3QgaXNLZXlPbmx5ID0gbWV0aG9kID09PSAna2V5cycgJiYgdGFyZ2V0SXNNYXA7XHJcbiAgICAgICAgY29uc3QgaW5uZXJJdGVyYXRvciA9IHRhcmdldFttZXRob2RdKC4uLmFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICAgICAgIWlzUmVhZG9ubHkgJiZcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcIml0ZXJhdGVcIiAvKiBUcmFja09wVHlwZXMuSVRFUkFURSAqLywgaXNLZXlPbmx5ID8gTUFQX0tFWV9JVEVSQVRFX0tFWSA6IElURVJBVEVfS0VZKTtcclxuICAgICAgICAvLyByZXR1cm4gYSB3cmFwcGVkIGl0ZXJhdG9yIHdoaWNoIHJldHVybnMgb2JzZXJ2ZWQgdmVyc2lvbnMgb2YgdGhlXHJcbiAgICAgICAgLy8gdmFsdWVzIGVtaXR0ZWQgZnJvbSB0aGUgcmVhbCBpdGVyYXRvclxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdG9yIHByb3RvY29sXHJcbiAgICAgICAgICAgIG5leHQoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBpbm5lckl0ZXJhdG9yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7IHZhbHVlLCBkb25lIH1cclxuICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlzUGFpciA/IFt3cmFwKHZhbHVlWzBdKSwgd3JhcCh2YWx1ZVsxXSldIDogd3JhcCh2YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBpdGVyYWJsZSBwcm90b2NvbFxyXG4gICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVhZG9ubHlNZXRob2QodHlwZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhcmdzWzBdID8gYG9uIGtleSBcIiR7YXJnc1swXX1cIiBgIDogYGA7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtjYXBpdGFsaXplKHR5cGUpfSBvcGVyYXRpb24gJHtrZXl9ZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdG9SYXcodGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8gPyBmYWxzZSA6IHRoaXM7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIHRydWUpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcywgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXMoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXMkMS5jYWxsKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovKSxcclxuICAgICAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovKSxcclxuICAgICAgICBkZWxldGU6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovKSxcclxuICAgICAgICBjbGVhcjogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovKSxcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKHRydWUsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCB0cnVlLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhcyhrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhcyQxLmNhbGwodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8pLFxyXG4gICAgICAgIHNldDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8pLFxyXG4gICAgICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8pLFxyXG4gICAgICAgIGNsZWFyOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8pLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2godHJ1ZSwgdHJ1ZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBpdGVyYXRvck1ldGhvZHMgPSBbJ2tleXMnLCAndmFsdWVzJywgJ2VudHJpZXMnLCBTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaXRlcmF0b3JNZXRob2RzLmZvckVhY2gobWV0aG9kID0+IHtcclxuICAgICAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgIF07XHJcbn1cclxuY29uc3QgW211dGFibGVJbnN0cnVtZW50YXRpb25zLCByZWFkb25seUluc3RydW1lbnRhdGlvbnMsIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLCBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXSA9IC8qICNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGlzUmVhZG9ubHksIHNoYWxsb3cpIHtcclxuICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSBzaGFsbG93XHJcbiAgICAgICAgPyBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgOiBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogbXV0YWJsZUluc3RydW1lbnRhdGlvbnM7XHJcbiAgICByZXR1cm4gKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoaGFzT3duKGluc3RydW1lbnRhdGlvbnMsIGtleSkgJiYga2V5IGluIHRhcmdldFxyXG4gICAgICAgICAgICA/IGluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiB0YXJnZXQsIGtleSwgcmVjZWl2ZXIpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBtdXRhYmxlQ29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihmYWxzZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCB0cnVlKVxyXG59O1xyXG5jb25zdCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgdHJ1ZSlcclxufTtcclxuZnVuY3Rpb24gY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSkge1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmIChyYXdLZXkgIT09IGtleSAmJiBoYXMuY2FsbCh0YXJnZXQsIHJhd0tleSkpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gdG9SYXdUeXBlKHRhcmdldCk7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWFjdGl2ZSAke3R5cGV9IGNvbnRhaW5zIGJvdGggdGhlIHJhdyBhbmQgcmVhY3RpdmUgYCArXHJcbiAgICAgICAgICAgIGB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBvYmplY3Qke3R5cGUgPT09IGBNYXBgID8gYCBhcyBrZXlzYCA6IGBgfSwgYCArXHJcbiAgICAgICAgICAgIGB3aGljaCBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMuIGAgK1xyXG4gICAgICAgICAgICBgQXZvaWQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gdGhlIHJhdyBhbmQgcmVhY3RpdmUgdmVyc2lvbnMgYCArXHJcbiAgICAgICAgICAgIGBvZiBhbiBvYmplY3QgYW5kIG9ubHkgdXNlIHRoZSByZWFjdGl2ZSB2ZXJzaW9uIGlmIHBvc3NpYmxlLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHJlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3Qgc2hhbGxvd1JlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgcmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5mdW5jdGlvbiB0YXJnZXRUeXBlTWFwKHJhd1R5cGUpIHtcclxuICAgIHN3aXRjaCAocmF3VHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ09iamVjdCc6XHJcbiAgICAgICAgY2FzZSAnQXJyYXknOlxyXG4gICAgICAgICAgICByZXR1cm4gMSAvKiBUYXJnZXRUeXBlLkNPTU1PTiAqLztcclxuICAgICAgICBjYXNlICdNYXAnOlxyXG4gICAgICAgIGNhc2UgJ1NldCc6XHJcbiAgICAgICAgY2FzZSAnV2Vha01hcCc6XHJcbiAgICAgICAgY2FzZSAnV2Vha1NldCc6XHJcbiAgICAgICAgICAgIHJldHVybiAyIC8qIFRhcmdldFR5cGUuQ09MTEVDVElPTiAqLztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBUYXJnZXRUeXBlLklOVkFMSUQgKi87XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGFyZ2V0VHlwZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlW1wiX192X3NraXBcIiAvKiBSZWFjdGl2ZUZsYWdzLlNLSVAgKi9dIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKVxyXG4gICAgICAgID8gMCAvKiBUYXJnZXRUeXBlLklOVkFMSUQgKi9cclxuICAgICAgICA6IHRhcmdldFR5cGVNYXAodG9SYXdUeXBlKHZhbHVlKSk7XHJcbn1cclxuZnVuY3Rpb24gcmVhY3RpdmUodGFyZ2V0KSB7XHJcbiAgICAvLyBpZiB0cnlpbmcgdG8gb2JzZXJ2ZSBhIHJlYWRvbmx5IHByb3h5LCByZXR1cm4gdGhlIHJlYWRvbmx5IHZlcnNpb24uXHJcbiAgICBpZiAoaXNSZWFkb25seSh0YXJnZXQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGZhbHNlLCBtdXRhYmxlSGFuZGxlcnMsIG11dGFibGVDb2xsZWN0aW9uSGFuZGxlcnMsIHJlYWN0aXZlTWFwKTtcclxufVxyXG4vKipcclxuICogUmV0dXJuIGEgc2hhbGxvd2x5LXJlYWN0aXZlIGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdCwgd2hlcmUgb25seSB0aGUgcm9vdFxyXG4gKiBsZXZlbCBwcm9wZXJ0aWVzIGFyZSByZWFjdGl2ZS4gSXQgYWxzbyBkb2VzIG5vdCBhdXRvLXVud3JhcCByZWZzIChldmVuIGF0IHRoZVxyXG4gKiByb290IGxldmVsKS5cclxuICovXHJcbmZ1bmN0aW9uIHNoYWxsb3dSZWFjdGl2ZSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGZhbHNlLCBzaGFsbG93UmVhY3RpdmVIYW5kbGVycywgc2hhbGxvd0NvbGxlY3Rpb25IYW5kbGVycywgc2hhbGxvd1JlYWN0aXZlTWFwKTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlcyBhIHJlYWRvbmx5IGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4gTm90ZSB0aGUgcmV0dXJuZWQgY29weSBpcyBub3RcclxuICogbWFkZSByZWFjdGl2ZSwgYnV0IGByZWFkb25seWAgY2FuIGJlIGNhbGxlZCBvbiBhbiBhbHJlYWR5IHJlYWN0aXZlIG9iamVjdC5cclxuICovXHJcbmZ1bmN0aW9uIHJlYWRvbmx5KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgdHJ1ZSwgcmVhZG9ubHlIYW5kbGVycywgcmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMsIHJlYWRvbmx5TWFwKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyBhIHJlYWN0aXZlLWNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdCwgd2hlcmUgb25seSB0aGUgcm9vdCBsZXZlbFxyXG4gKiBwcm9wZXJ0aWVzIGFyZSByZWFkb25seSwgYW5kIGRvZXMgTk9UIHVud3JhcCByZWZzIG5vciByZWN1cnNpdmVseSBjb252ZXJ0XHJcbiAqIHJldHVybmVkIHByb3BlcnRpZXMuXHJcbiAqIFRoaXMgaXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIHByb3BzIHByb3h5IG9iamVjdCBmb3Igc3RhdGVmdWwgY29tcG9uZW50cy5cclxuICovXHJcbmZ1bmN0aW9uIHNoYWxsb3dSZWFkb25seSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIHRydWUsIHNoYWxsb3dSZWFkb25seUhhbmRsZXJzLCBzaGFsbG93UmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMsIHNoYWxsb3dSZWFkb25seU1hcCk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCBpc1JlYWRvbmx5LCBiYXNlSGFuZGxlcnMsIGNvbGxlY3Rpb25IYW5kbGVycywgcHJveHlNYXApIHtcclxuICAgIGlmICghaXNPYmplY3QodGFyZ2V0KSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGB2YWx1ZSBjYW5ub3QgYmUgbWFkZSByZWFjdGl2ZTogJHtTdHJpbmcodGFyZ2V0KX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIC8vIHRhcmdldCBpcyBhbHJlYWR5IGEgUHJveHksIHJldHVybiBpdC5cclxuICAgIC8vIGV4Y2VwdGlvbjogY2FsbGluZyByZWFkb25seSgpIG9uIGEgcmVhY3RpdmUgb2JqZWN0XHJcbiAgICBpZiAodGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXSAmJlxyXG4gICAgICAgICEoaXNSZWFkb25seSAmJiB0YXJnZXRbXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi9dKSkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICAvLyB0YXJnZXQgYWxyZWFkeSBoYXMgY29ycmVzcG9uZGluZyBQcm94eVxyXG4gICAgY29uc3QgZXhpc3RpbmdQcm94eSA9IHByb3h5TWFwLmdldCh0YXJnZXQpO1xyXG4gICAgaWYgKGV4aXN0aW5nUHJveHkpIHtcclxuICAgICAgICByZXR1cm4gZXhpc3RpbmdQcm94eTtcclxuICAgIH1cclxuICAgIC8vIG9ubHkgc3BlY2lmaWMgdmFsdWUgdHlwZXMgY2FuIGJlIG9ic2VydmVkLlxyXG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFRhcmdldFR5cGUodGFyZ2V0KTtcclxuICAgIGlmICh0YXJnZXRUeXBlID09PSAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqLykge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHRhcmdldFR5cGUgPT09IDIgLyogVGFyZ2V0VHlwZS5DT0xMRUNUSU9OICovID8gY29sbGVjdGlvbkhhbmRsZXJzIDogYmFzZUhhbmRsZXJzKTtcclxuICAgIHByb3h5TWFwLnNldCh0YXJnZXQsIHByb3h5KTtcclxuICAgIHJldHVybiBwcm94eTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWN0aXZlKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNSZWFkb25seSh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gaXNSZWFjdGl2ZSh2YWx1ZVtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL10pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNSZWFkb25seSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaGFsbG93KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNQcm94eSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGlzUmVhY3RpdmUodmFsdWUpIHx8IGlzUmVhZG9ubHkodmFsdWUpO1xyXG59XHJcbmZ1bmN0aW9uIHRvUmF3KG9ic2VydmVkKSB7XHJcbiAgICBjb25zdCByYXcgPSBvYnNlcnZlZCAmJiBvYnNlcnZlZFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICByZXR1cm4gcmF3ID8gdG9SYXcocmF3KSA6IG9ic2VydmVkO1xyXG59XHJcbmZ1bmN0aW9uIG1hcmtSYXcodmFsdWUpIHtcclxuICAgIGRlZih2YWx1ZSwgXCJfX3Zfc2tpcFwiIC8qIFJlYWN0aXZlRmxhZ3MuU0tJUCAqLywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuY29uc3QgdG9SZWFjdGl2ZSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhY3RpdmUodmFsdWUpIDogdmFsdWU7XHJcbmNvbnN0IHRvUmVhZG9ubHkgPSAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSA/IHJlYWRvbmx5KHZhbHVlKSA6IHZhbHVlO1xuXG5mdW5jdGlvbiB0cmFja1JlZlZhbHVlKHJlZikge1xyXG4gICAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xyXG4gICAgICAgIHJlZiA9IHRvUmF3KHJlZik7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmFja0VmZmVjdHMocmVmLmRlcCB8fCAocmVmLmRlcCA9IGNyZWF0ZURlcCgpKSwge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiByZWYsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sXHJcbiAgICAgICAgICAgICAgICBrZXk6ICd2YWx1ZSdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFja0VmZmVjdHMocmVmLmRlcCB8fCAocmVmLmRlcCA9IGNyZWF0ZURlcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJSZWZWYWx1ZShyZWYsIG5ld1ZhbCkge1xyXG4gICAgcmVmID0gdG9SYXcocmVmKTtcclxuICAgIGlmIChyZWYuZGVwKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhyZWYuZGVwLCB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHJlZixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLFxyXG4gICAgICAgICAgICAgICAga2V5OiAndmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKHJlZi5kZXApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1JlZihyKSB7XHJcbiAgICByZXR1cm4gISEociAmJiByLl9fdl9pc1JlZiA9PT0gdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gcmVmKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCBmYWxzZSk7XHJcbn1cclxuZnVuY3Rpb24gc2hhbGxvd1JlZih2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlZih2YWx1ZSwgdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVmKHJhd1ZhbHVlLCBzaGFsbG93KSB7XHJcbiAgICBpZiAoaXNSZWYocmF3VmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhd1ZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSZWZJbXBsKHJhd1ZhbHVlLCBzaGFsbG93KTtcclxufVxyXG5jbGFzcyBSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlLCBfX3ZfaXNTaGFsbG93KSB7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNTaGFsbG93ID0gX192X2lzU2hhbGxvdztcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSBfX3ZfaXNTaGFsbG93ID8gdmFsdWUgOiB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBfX3ZfaXNTaGFsbG93ID8gdmFsdWUgOiB0b1JlYWN0aXZlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICBjb25zdCB1c2VEaXJlY3RWYWx1ZSA9IHRoaXMuX192X2lzU2hhbGxvdyB8fCBpc1NoYWxsb3cobmV3VmFsKSB8fCBpc1JlYWRvbmx5KG5ld1ZhbCk7XHJcbiAgICAgICAgbmV3VmFsID0gdXNlRGlyZWN0VmFsdWUgPyBuZXdWYWwgOiB0b1JhdyhuZXdWYWwpO1xyXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKG5ld1ZhbCwgdGhpcy5fcmF3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gbmV3VmFsO1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHVzZURpcmVjdFZhbHVlID8gbmV3VmFsIDogdG9SZWFjdGl2ZShuZXdWYWwpO1xyXG4gICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcywgbmV3VmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZihyZWYpIHtcclxuICAgIHRyaWdnZXJSZWZWYWx1ZShyZWYsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHJlZi52YWx1ZSA6IHZvaWQgMCk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWYocmVmKSB7XHJcbiAgICByZXR1cm4gaXNSZWYocmVmKSA/IHJlZi52YWx1ZSA6IHJlZjtcclxufVxyXG5jb25zdCBzaGFsbG93VW53cmFwSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6ICh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpID0+IHVucmVmKFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikpLFxyXG4gICAgc2V0OiAodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcHJveHlSZWZzKG9iamVjdFdpdGhSZWZzKSB7XHJcbiAgICByZXR1cm4gaXNSZWFjdGl2ZShvYmplY3RXaXRoUmVmcylcclxuICAgICAgICA/IG9iamVjdFdpdGhSZWZzXHJcbiAgICAgICAgOiBuZXcgUHJveHkob2JqZWN0V2l0aFJlZnMsIHNoYWxsb3dVbndyYXBIYW5kbGVycyk7XHJcbn1cclxuY2xhc3MgQ3VzdG9tUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihmYWN0b3J5KSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgZ2V0LCBzZXQgfSA9IGZhY3RvcnkoKCkgPT4gdHJhY2tSZWZWYWx1ZSh0aGlzKSwgKCkgPT4gdHJpZ2dlclJlZlZhbHVlKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9nZXQgPSBnZXQ7XHJcbiAgICAgICAgdGhpcy5fc2V0ID0gc2V0O1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXQoKTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICB0aGlzLl9zZXQobmV3VmFsKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjdXN0b21SZWYoZmFjdG9yeSkge1xyXG4gICAgcmV0dXJuIG5ldyBDdXN0b21SZWZJbXBsKGZhY3RvcnkpO1xyXG59XHJcbmZ1bmN0aW9uIHRvUmVmcyhvYmplY3QpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzUHJveHkob2JqZWN0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgdG9SZWZzKCkgZXhwZWN0cyBhIHJlYWN0aXZlIG9iamVjdCBidXQgcmVjZWl2ZWQgYSBwbGFpbiBvbmUuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXQgPSBpc0FycmF5KG9iamVjdCkgPyBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCkgOiB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xyXG4gICAgICAgIHJldFtrZXldID0gdG9SZWYob2JqZWN0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5jbGFzcyBPYmplY3RSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vYmplY3QsIF9rZXksIF9kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3QgPSBfb2JqZWN0O1xyXG4gICAgICAgIHRoaXMuX2tleSA9IF9rZXk7XHJcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gX2RlZmF1bHRWYWx1ZTtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5fb2JqZWN0W3RoaXMuX2tleV07XHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gdW5kZWZpbmVkID8gdGhpcy5fZGVmYXVsdFZhbHVlIDogdmFsO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIHRoaXMuX29iamVjdFt0aGlzLl9rZXldID0gbmV3VmFsO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRvUmVmKG9iamVjdCwga2V5LCBkZWZhdWx0VmFsdWUpIHtcclxuICAgIGNvbnN0IHZhbCA9IG9iamVjdFtrZXldO1xyXG4gICAgcmV0dXJuIGlzUmVmKHZhbClcclxuICAgICAgICA/IHZhbFxyXG4gICAgICAgIDogbmV3IE9iamVjdFJlZkltcGwob2JqZWN0LCBrZXksIGRlZmF1bHRWYWx1ZSk7XHJcbn1cblxudmFyIF9hO1xyXG5jbGFzcyBDb21wdXRlZFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZ2V0dGVyLCBfc2V0dGVyLCBpc1JlYWRvbmx5LCBpc1NTUikge1xyXG4gICAgICAgIHRoaXMuX3NldHRlciA9IF9zZXR0ZXI7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIHRoaXNbX2FdID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGdldHRlciwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVmZmVjdC5jb21wdXRlZCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuYWN0aXZlID0gdGhpcy5fY2FjaGVhYmxlID0gIWlzU1NSO1xyXG4gICAgICAgIHRoaXNbXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi9dID0gaXNSZWFkb25seTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICAvLyB0aGUgY29tcHV0ZWQgcmVmIG1heSBnZXQgd3JhcHBlZCBieSBvdGhlciBwcm94aWVzIGUuZy4gcmVhZG9ubHkoKSAjMzM3NlxyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0b1Jhdyh0aGlzKTtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHNlbGYpO1xyXG4gICAgICAgIGlmIChzZWxmLl9kaXJ0eSB8fCAhc2VsZi5fY2FjaGVhYmxlKSB7XHJcbiAgICAgICAgICAgIHNlbGYuX2RpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gc2VsZi5lZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZWxmLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3NldHRlcihuZXdWYWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuX2EgPSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLztcclxuZnVuY3Rpb24gY29tcHV0ZWQoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzU1NSID0gZmFsc2UpIHtcclxuICAgIGxldCBnZXR0ZXI7XHJcbiAgICBsZXQgc2V0dGVyO1xyXG4gICAgY29uc3Qgb25seUdldHRlciA9IGlzRnVuY3Rpb24oZ2V0dGVyT3JPcHRpb25zKTtcclxuICAgIGlmIChvbmx5R2V0dGVyKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zO1xyXG4gICAgICAgIHNldHRlciA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgdmFsdWUgaXMgcmVhZG9ubHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IE5PT1A7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBnZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnMuZ2V0O1xyXG4gICAgICAgIHNldHRlciA9IGdldHRlck9yT3B0aW9ucy5zZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjUmVmID0gbmV3IENvbXB1dGVkUmVmSW1wbChnZXR0ZXIsIHNldHRlciwgb25seUdldHRlciB8fCAhc2V0dGVyLCBpc1NTUik7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGRlYnVnT3B0aW9ucyAmJiAhaXNTU1IpIHtcclxuICAgICAgICBjUmVmLmVmZmVjdC5vblRyYWNrID0gZGVidWdPcHRpb25zLm9uVHJhY2s7XHJcbiAgICAgICAgY1JlZi5lZmZlY3Qub25UcmlnZ2VyID0gZGVidWdPcHRpb25zLm9uVHJpZ2dlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBjUmVmO1xyXG59XG5cbnZhciBfYSQxO1xyXG5jb25zdCB0aWNrID0gLyojX19QVVJFX18qLyBQcm9taXNlLnJlc29sdmUoKTtcclxuY29uc3QgcXVldWUgPSBbXTtcclxubGV0IHF1ZXVlZCA9IGZhbHNlO1xyXG5jb25zdCBzY2hlZHVsZXIgPSAoZm4pID0+IHtcclxuICAgIHF1ZXVlLnB1c2goZm4pO1xyXG4gICAgaWYgKCFxdWV1ZWQpIHtcclxuICAgICAgICBxdWV1ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRpY2sudGhlbihmbHVzaCk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGZsdXNoID0gKCkgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHF1ZXVlW2ldKCk7XHJcbiAgICB9XHJcbiAgICBxdWV1ZS5sZW5ndGggPSAwO1xyXG4gICAgcXVldWVkID0gZmFsc2U7XHJcbn07XHJcbmNsYXNzIERlZmVycmVkQ29tcHV0ZWRSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGdldHRlcikge1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpc1tfYSQxXSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVUYXJnZXQ7XHJcbiAgICAgICAgbGV0IGhhc0NvbXBhcmVUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgc2NoZWR1bGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoY29tcHV0ZWRUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkVHJpZ2dlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVUYXJnZXQgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVRvQ29tcGFyZSA9IGhhc0NvbXBhcmVUYXJnZXQgPyBjb21wYXJlVGFyZ2V0IDogdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWZmZWN0LmFjdGl2ZSAmJiB0aGlzLl9nZXQoKSAhPT0gdmFsdWVUb0NvbXBhcmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoYWluZWQgdXBzdHJlYW0gY29tcHV0ZWRzIGFyZSBub3RpZmllZCBzeW5jaHJvbm91c2x5IHRvIGVuc3VyZVxyXG4gICAgICAgICAgICAgICAgLy8gdmFsdWUgaW52YWxpZGF0aW9uIGluIGNhc2Ugb2Ygc3luYyBhY2Nlc3M7IG5vcm1hbCBlZmZlY3RzIGFyZVxyXG4gICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQgdG8gYmUgdHJpZ2dlcmVkIGluIHNjaGVkdWxlci5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXB1dGVkIGluc3RhbmNlb2YgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zY2hlZHVsZXIodHJ1ZSAvKiBjb21wdXRlZFRyaWdnZXIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuY29tcHV0ZWQgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgX2dldCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLl92YWx1ZSA9IHRoaXMuZWZmZWN0LnJ1bigpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgLy8gdGhlIGNvbXB1dGVkIHJlZiBtYXkgZ2V0IHdyYXBwZWQgYnkgb3RoZXIgcHJveGllcyBlLmcuIHJlYWRvbmx5KCkgIzMzNzZcclxuICAgICAgICByZXR1cm4gdG9SYXcodGhpcykuX2dldCgpO1xyXG4gICAgfVxyXG59XHJcbl9hJDEgPSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLztcclxuZnVuY3Rpb24gZGVmZXJyZWRDb21wdXRlZChnZXR0ZXIpIHtcclxuICAgIHJldHVybiBuZXcgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwoZ2V0dGVyKTtcclxufVxuXG5leHBvcnQgeyBFZmZlY3RTY29wZSwgSVRFUkFURV9LRVksIFJlYWN0aXZlRWZmZWN0LCBjb21wdXRlZCwgY3VzdG9tUmVmLCBkZWZlcnJlZENvbXB1dGVkLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBlbmFibGVUcmFja2luZywgZ2V0Q3VycmVudFNjb3BlLCBpc1Byb3h5LCBpc1JlYWN0aXZlLCBpc1JlYWRvbmx5LCBpc1JlZiwgaXNTaGFsbG93LCBtYXJrUmF3LCBvblNjb3BlRGlzcG9zZSwgcGF1c2VUcmFja2luZywgcHJveHlSZWZzLCByZWFjdGl2ZSwgcmVhZG9ubHksIHJlZiwgcmVzZXRUcmFja2luZywgc2hhbGxvd1JlYWN0aXZlLCBzaGFsbG93UmVhZG9ubHksIHNoYWxsb3dSZWYsIHN0b3AsIHRvUmF3LCB0b1JlZiwgdG9SZWZzLCB0cmFjaywgdHJpZ2dlciwgdHJpZ2dlclJlZiwgdW5yZWYgfTtcbiIsImltcG9ydCB7IHBhdXNlVHJhY2tpbmcsIHJlc2V0VHJhY2tpbmcsIGlzUmVmLCB0b1JhdywgaXNTaGFsbG93IGFzIGlzU2hhbGxvdyQxLCBpc1JlYWN0aXZlLCBSZWFjdGl2ZUVmZmVjdCwgcmVmLCBzaGFsbG93UmVhZG9ubHksIHRyYWNrLCByZWFjdGl2ZSwgc2hhbGxvd1JlYWN0aXZlLCB0cmlnZ2VyLCBpc1Byb3h5LCBFZmZlY3RTY29wZSwgbWFya1JhdywgcHJveHlSZWZzLCBjb21wdXRlZCBhcyBjb21wdXRlZCQxLCBpc1JlYWRvbmx5IH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBSZWFjdGl2ZUVmZmVjdCwgY3VzdG9tUmVmLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRyaWdnZXJSZWYsIHVucmVmIH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0Z1bmN0aW9uLCBpc1Byb21pc2UsIGlzQXJyYXksIE5PT1AsIGdldEdsb2JhbFRoaXMsIGV4dGVuZCwgRU1QVFlfT0JKLCB0b0hhbmRsZXJLZXksIHRvTnVtYmVyLCBoeXBoZW5hdGUsIGNhbWVsaXplLCBpc09iamVjdCwgaXNPbiwgaGFzT3duLCBpc01vZGVsTGlzdGVuZXIsIGhhc0NoYW5nZWQsIHJlbW92ZSwgaXNTZXQsIGlzTWFwLCBpc1BsYWluT2JqZWN0LCBpbnZva2VBcnJheUZucywgaXNCdWlsdEluRGlyZWN0aXZlLCBjYXBpdGFsaXplLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQsIGRlZiwgaXNSZXNlcnZlZFByb3AsIEVNUFRZX0FSUiwgdG9SYXdUeXBlLCBtYWtlTWFwLCBOTywgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVN0eWxlIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuZXhwb3J0IHsgY2FtZWxpemUsIGNhcGl0YWxpemUsIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVQcm9wcywgbm9ybWFsaXplU3R5bGUsIHRvRGlzcGxheVN0cmluZywgdG9IYW5kbGVyS2V5IH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBzdGFjayA9IFtdO1xyXG5mdW5jdGlvbiBwdXNoV2FybmluZ0NvbnRleHQodm5vZGUpIHtcclxuICAgIHN0YWNrLnB1c2godm5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIHBvcFdhcm5pbmdDb250ZXh0KCkge1xyXG4gICAgc3RhY2sucG9wKCk7XHJcbn1cclxuZnVuY3Rpb24gd2Fybihtc2csIC4uLmFyZ3MpIHtcclxuICAgIC8vIGF2b2lkIHByb3BzIGZvcm1hdHRpbmcgb3Igd2FybiBoYW5kbGVyIHRyYWNraW5nIGRlcHMgdGhhdCBtaWdodCBiZSBtdXRhdGVkXHJcbiAgICAvLyBkdXJpbmcgcGF0Y2gsIGxlYWRpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxyXG4gICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBzdGFjay5sZW5ndGggPyBzdGFja1tzdGFjay5sZW5ndGggLSAxXS5jb21wb25lbnQgOiBudWxsO1xyXG4gICAgY29uc3QgYXBwV2FybkhhbmRsZXIgPSBpbnN0YW5jZSAmJiBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy53YXJuSGFuZGxlcjtcclxuICAgIGNvbnN0IHRyYWNlID0gZ2V0Q29tcG9uZW50VHJhY2UoKTtcclxuICAgIGlmIChhcHBXYXJuSGFuZGxlcikge1xyXG4gICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhhcHBXYXJuSGFuZGxlciwgaW5zdGFuY2UsIDExIC8qIEVycm9yQ29kZXMuQVBQX1dBUk5fSEFORExFUiAqLywgW1xyXG4gICAgICAgICAgICBtc2cgKyBhcmdzLmpvaW4oJycpLFxyXG4gICAgICAgICAgICBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wcm94eSxcclxuICAgICAgICAgICAgdHJhY2VcclxuICAgICAgICAgICAgICAgIC5tYXAoKHsgdm5vZGUgfSkgPT4gYGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIHZub2RlLnR5cGUpfT5gKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpLFxyXG4gICAgICAgICAgICB0cmFjZVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2FybkFyZ3MgPSBbYFtWdWUgd2Fybl06ICR7bXNnfWAsIC4uLmFyZ3NdO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICh0cmFjZS5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gYXZvaWQgc3BhbW1pbmcgY29uc29sZSBkdXJpbmcgdGVzdHNcclxuICAgICAgICAgICAgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgIHdhcm5BcmdzLnB1c2goYFxcbmAsIC4uLmZvcm1hdFRyYWNlKHRyYWNlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUud2FybiguLi53YXJuQXJncyk7XHJcbiAgICB9XHJcbiAgICByZXNldFRyYWNraW5nKCk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50VHJhY2UoKSB7XHJcbiAgICBsZXQgY3VycmVudFZOb2RlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoIWN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIC8vIHdlIGNhbid0IGp1c3QgdXNlIHRoZSBzdGFjayBiZWNhdXNlIGl0IHdpbGwgYmUgaW5jb21wbGV0ZSBkdXJpbmcgdXBkYXRlc1xyXG4gICAgLy8gdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gdGhlIHJvb3QuIFJlLWNvbnN0cnVjdCB0aGUgcGFyZW50IGNoYWluIHVzaW5nXHJcbiAgICAvLyBpbnN0YW5jZSBwYXJlbnQgcG9pbnRlcnMuXHJcbiAgICBjb25zdCBub3JtYWxpemVkU3RhY2sgPSBbXTtcclxuICAgIHdoaWxlIChjdXJyZW50Vk5vZGUpIHtcclxuICAgICAgICBjb25zdCBsYXN0ID0gbm9ybWFsaXplZFN0YWNrWzBdO1xyXG4gICAgICAgIGlmIChsYXN0ICYmIGxhc3Qudm5vZGUgPT09IGN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgICAgICBsYXN0LnJlY3Vyc2VDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplZFN0YWNrLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdm5vZGU6IGN1cnJlbnRWTm9kZSxcclxuICAgICAgICAgICAgICAgIHJlY3Vyc2VDb3VudDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyZW50SW5zdGFuY2UgPSBjdXJyZW50Vk5vZGUuY29tcG9uZW50ICYmIGN1cnJlbnRWTm9kZS5jb21wb25lbnQucGFyZW50O1xyXG4gICAgICAgIGN1cnJlbnRWTm9kZSA9IHBhcmVudEluc3RhbmNlICYmIHBhcmVudEluc3RhbmNlLnZub2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRTdGFjaztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRUcmFjZSh0cmFjZSkge1xyXG4gICAgY29uc3QgbG9ncyA9IFtdO1xyXG4gICAgdHJhY2UuZm9yRWFjaCgoZW50cnksIGkpID0+IHtcclxuICAgICAgICBsb2dzLnB1c2goLi4uKGkgPT09IDAgPyBbXSA6IFtgXFxuYF0pLCAuLi5mb3JtYXRUcmFjZUVudHJ5KGVudHJ5KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsb2dzO1xyXG59XHJcbmZ1bmN0aW9uIGZvcm1hdFRyYWNlRW50cnkoeyB2bm9kZSwgcmVjdXJzZUNvdW50IH0pIHtcclxuICAgIGNvbnN0IHBvc3RmaXggPSByZWN1cnNlQ291bnQgPiAwID8gYC4uLiAoJHtyZWN1cnNlQ291bnR9IHJlY3Vyc2l2ZSBjYWxscylgIDogYGA7XHJcbiAgICBjb25zdCBpc1Jvb3QgPSB2bm9kZS5jb21wb25lbnQgPyB2bm9kZS5jb21wb25lbnQucGFyZW50ID09IG51bGwgOiBmYWxzZTtcclxuICAgIGNvbnN0IG9wZW4gPSBgIGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUodm5vZGUuY29tcG9uZW50LCB2bm9kZS50eXBlLCBpc1Jvb3QpfWA7XHJcbiAgICBjb25zdCBjbG9zZSA9IGA+YCArIHBvc3RmaXg7XHJcbiAgICByZXR1cm4gdm5vZGUucHJvcHNcclxuICAgICAgICA/IFtvcGVuLCAuLi5mb3JtYXRQcm9wcyh2bm9kZS5wcm9wcyksIGNsb3NlXVxyXG4gICAgICAgIDogW29wZW4gKyBjbG9zZV07XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0UHJvcHMocHJvcHMpIHtcclxuICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcclxuICAgIGtleXMuc2xpY2UoMCwgMykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIHJlcy5wdXNoKC4uLmZvcm1hdFByb3Aoa2V5LCBwcm9wc1trZXldKSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA+IDMpIHtcclxuICAgICAgICByZXMucHVzaChgIC4uLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRQcm9wKGtleSwgdmFsdWUsIHJhdykge1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PSR7dmFsdWV9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHxcclxuICAgICAgICB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gZm9ybWF0UHJvcChrZXksIHRvUmF3KHZhbHVlLnZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09UmVmPGAsIHZhbHVlLCBgPmBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gW2Ake2tleX09Zm4ke3ZhbHVlLm5hbWUgPyBgPCR7dmFsdWUubmFtZX0+YCA6IGBgfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09YCwgdmFsdWVdO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IEVycm9yVHlwZVN0cmluZ3MgPSB7XHJcbiAgICBbXCJzcFwiIC8qIExpZmVjeWNsZUhvb2tzLlNFUlZFUl9QUkVGRVRDSCAqL106ICdzZXJ2ZXJQcmVmZXRjaCBob29rJyxcclxuICAgIFtcImJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX0NSRUFURSAqL106ICdiZWZvcmVDcmVhdGUgaG9vaycsXHJcbiAgICBbXCJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQ1JFQVRFRCAqL106ICdjcmVhdGVkIGhvb2snLFxyXG4gICAgW1wiYm1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfTU9VTlQgKi9dOiAnYmVmb3JlTW91bnQgaG9vaycsXHJcbiAgICBbXCJtXCIgLyogTGlmZWN5Y2xlSG9va3MuTU9VTlRFRCAqL106ICdtb3VudGVkIGhvb2snLFxyXG4gICAgW1wiYnVcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVVBEQVRFICovXTogJ2JlZm9yZVVwZGF0ZSBob29rJyxcclxuICAgIFtcInVcIiAvKiBMaWZlY3ljbGVIb29rcy5VUERBVEVEICovXTogJ3VwZGF0ZWQnLFxyXG4gICAgW1wiYnVtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VOTU9VTlQgKi9dOiAnYmVmb3JlVW5tb3VudCBob29rJyxcclxuICAgIFtcInVtXCIgLyogTGlmZWN5Y2xlSG9va3MuVU5NT1VOVEVEICovXTogJ3VubW91bnRlZCBob29rJyxcclxuICAgIFtcImFcIiAvKiBMaWZlY3ljbGVIb29rcy5BQ1RJVkFURUQgKi9dOiAnYWN0aXZhdGVkIGhvb2snLFxyXG4gICAgW1wiZGFcIiAvKiBMaWZlY3ljbGVIb29rcy5ERUFDVElWQVRFRCAqL106ICdkZWFjdGl2YXRlZCBob29rJyxcclxuICAgIFtcImVjXCIgLyogTGlmZWN5Y2xlSG9va3MuRVJST1JfQ0FQVFVSRUQgKi9dOiAnZXJyb3JDYXB0dXJlZCBob29rJyxcclxuICAgIFtcInJ0Y1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUkFDS0VEICovXTogJ3JlbmRlclRyYWNrZWQgaG9vaycsXHJcbiAgICBbXCJydGdcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJJR0dFUkVEICovXTogJ3JlbmRlclRyaWdnZXJlZCBob29rJyxcclxuICAgIFswIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi9dOiAnc2V0dXAgZnVuY3Rpb24nLFxyXG4gICAgWzEgLyogRXJyb3JDb2Rlcy5SRU5ERVJfRlVOQ1RJT04gKi9dOiAncmVuZGVyIGZ1bmN0aW9uJyxcclxuICAgIFsyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovXTogJ3dhdGNoZXIgZ2V0dGVyJyxcclxuICAgIFszIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi9dOiAnd2F0Y2hlciBjYWxsYmFjaycsXHJcbiAgICBbNCAvKiBFcnJvckNvZGVzLldBVENIX0NMRUFOVVAgKi9dOiAnd2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uJyxcclxuICAgIFs1IC8qIEVycm9yQ29kZXMuTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi9dOiAnbmF0aXZlIGV2ZW50IGhhbmRsZXInLFxyXG4gICAgWzYgLyogRXJyb3JDb2Rlcy5DT01QT05FTlRfRVZFTlRfSEFORExFUiAqL106ICdjb21wb25lbnQgZXZlbnQgaGFuZGxlcicsXHJcbiAgICBbNyAvKiBFcnJvckNvZGVzLlZOT0RFX0hPT0sgKi9dOiAndm5vZGUgaG9vaycsXHJcbiAgICBbOCAvKiBFcnJvckNvZGVzLkRJUkVDVElWRV9IT09LICovXTogJ2RpcmVjdGl2ZSBob29rJyxcclxuICAgIFs5IC8qIEVycm9yQ29kZXMuVFJBTlNJVElPTl9IT09LICovXTogJ3RyYW5zaXRpb24gaG9vaycsXHJcbiAgICBbMTAgLyogRXJyb3JDb2Rlcy5BUFBfRVJST1JfSEFORExFUiAqL106ICdhcHAgZXJyb3JIYW5kbGVyJyxcclxuICAgIFsxMSAvKiBFcnJvckNvZGVzLkFQUF9XQVJOX0hBTkRMRVIgKi9dOiAnYXBwIHdhcm5IYW5kbGVyJyxcclxuICAgIFsxMiAvKiBFcnJvckNvZGVzLkZVTkNUSU9OX1JFRiAqL106ICdyZWYgZnVuY3Rpb24nLFxyXG4gICAgWzEzIC8qIEVycm9yQ29kZXMuQVNZTkNfQ09NUE9ORU5UX0xPQURFUiAqL106ICdhc3luYyBjb21wb25lbnQgbG9hZGVyJyxcclxuICAgIFsxNCAvKiBFcnJvckNvZGVzLlNDSEVEVUxFUiAqL106ICdzY2hlZHVsZXIgZmx1c2guIFRoaXMgaXMgbGlrZWx5IGEgVnVlIGludGVybmFscyBidWcuICcgK1xyXG4gICAgICAgICdQbGVhc2Ugb3BlbiBhbiBpc3N1ZSBhdCBodHRwczovL25ldy1pc3N1ZS52dWVqcy5vcmcvP3JlcG89dnVlanMvY29yZSdcclxufTtcclxuZnVuY3Rpb24gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncykge1xyXG4gICAgbGV0IHJlcztcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmVzID0gYXJncyA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihmbikpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKTtcclxuICAgICAgICBpZiAocmVzICYmIGlzUHJvbWlzZShyZXMpKSB7XHJcbiAgICAgICAgICAgIHJlcy5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFsdWVzLnB1c2goY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm5baV0sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUsIHRocm93SW5EZXYgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBjb250ZXh0Vk5vZGUgPSBpbnN0YW5jZSA/IGluc3RhbmNlLnZub2RlIDogbnVsbDtcclxuICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgIGxldCBjdXIgPSBpbnN0YW5jZS5wYXJlbnQ7XHJcbiAgICAgICAgLy8gdGhlIGV4cG9zZWQgaW5zdGFuY2UgaXMgdGhlIHJlbmRlciBwcm94eSB0byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCAyLnhcclxuICAgICAgICBjb25zdCBleHBvc2VkSW5zdGFuY2UgPSBpbnN0YW5jZS5wcm94eTtcclxuICAgICAgICAvLyBpbiBwcm9kdWN0aW9uIHRoZSBob29rIHJlY2VpdmVzIG9ubHkgdGhlIGVycm9yIGNvZGVcclxuICAgICAgICBjb25zdCBlcnJvckluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBFcnJvclR5cGVTdHJpbmdzW3R5cGVdIDogdHlwZTtcclxuICAgICAgICB3aGlsZSAoY3VyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQ2FwdHVyZWRIb29rcyA9IGN1ci5lYztcclxuICAgICAgICAgICAgaWYgKGVycm9yQ2FwdHVyZWRIb29rcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlcnJvckNhcHR1cmVkSG9va3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDYXB0dXJlZEhvb2tzW2ldKGVyciwgZXhwb3NlZEluc3RhbmNlLCBlcnJvckluZm8pID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFwcC1sZXZlbCBoYW5kbGluZ1xyXG4gICAgICAgIGNvbnN0IGFwcEVycm9ySGFuZGxlciA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLmVycm9ySGFuZGxlcjtcclxuICAgICAgICBpZiAoYXBwRXJyb3JIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhhcHBFcnJvckhhbmRsZXIsIG51bGwsIDEwIC8qIEVycm9yQ29kZXMuQVBQX0VSUk9SX0hBTkRMRVIgKi8sIFtlcnIsIGV4cG9zZWRJbnN0YW5jZSwgZXJyb3JJbmZvXSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2dFcnJvcihlcnIsIHR5cGUsIGNvbnRleHRWTm9kZSwgdGhyb3dJbkRldik7XHJcbn1cclxuZnVuY3Rpb24gbG9nRXJyb3IoZXJyLCB0eXBlLCBjb250ZXh0Vk5vZGUsIHRocm93SW5EZXYgPSB0cnVlKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IEVycm9yVHlwZVN0cmluZ3NbdHlwZV07XHJcbiAgICAgICAgaWYgKGNvbnRleHRWTm9kZSkge1xyXG4gICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQoY29udGV4dFZOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2FybihgVW5oYW5kbGVkIGVycm9yJHtpbmZvID8gYCBkdXJpbmcgZXhlY3V0aW9uIG9mICR7aW5mb31gIDogYGB9YCk7XHJcbiAgICAgICAgaWYgKGNvbnRleHRWTm9kZSkge1xyXG4gICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjcmFzaCBpbiBkZXYgYnkgZGVmYXVsdCBzbyBpdCdzIG1vcmUgbm90aWNlYWJsZVxyXG4gICAgICAgIGlmICh0aHJvd0luRGV2KSB7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyByZWNvdmVyIGluIHByb2QgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb24gZW5kLXVzZXJcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICB9XHJcbn1cblxubGV0IGlzRmx1c2hpbmcgPSBmYWxzZTtcclxubGV0IGlzRmx1c2hQZW5kaW5nID0gZmFsc2U7XHJcbmNvbnN0IHF1ZXVlID0gW107XHJcbmxldCBmbHVzaEluZGV4ID0gMDtcclxuY29uc3QgcGVuZGluZ1Bvc3RGbHVzaENicyA9IFtdO1xyXG5sZXQgYWN0aXZlUG9zdEZsdXNoQ2JzID0gbnVsbDtcclxubGV0IHBvc3RGbHVzaEluZGV4ID0gMDtcclxuY29uc3QgcmVzb2x2ZWRQcm9taXNlID0gLyojX19QVVJFX18qLyBQcm9taXNlLnJlc29sdmUoKTtcclxubGV0IGN1cnJlbnRGbHVzaFByb21pc2UgPSBudWxsO1xyXG5jb25zdCBSRUNVUlNJT05fTElNSVQgPSAxMDA7XHJcbmZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7XHJcbiAgICBjb25zdCBwID0gY3VycmVudEZsdXNoUHJvbWlzZSB8fCByZXNvbHZlZFByb21pc2U7XHJcbiAgICByZXR1cm4gZm4gPyBwLnRoZW4odGhpcyA/IGZuLmJpbmQodGhpcykgOiBmbikgOiBwO1xyXG59XHJcbi8vICMyNzY4XHJcbi8vIFVzZSBiaW5hcnktc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwb3NpdGlvbiBpbiB0aGUgcXVldWUsXHJcbi8vIHNvIHRoYXQgdGhlIHF1ZXVlIG1haW50YWlucyB0aGUgaW5jcmVhc2luZyBvcmRlciBvZiBqb2IncyBpZCxcclxuLy8gd2hpY2ggY2FuIHByZXZlbnQgdGhlIGpvYiBmcm9tIGJlaW5nIHNraXBwZWQgYW5kIGFsc28gY2FuIGF2b2lkIHJlcGVhdGVkIHBhdGNoaW5nLlxyXG5mdW5jdGlvbiBmaW5kSW5zZXJ0aW9uSW5kZXgoaWQpIHtcclxuICAgIC8vIHRoZSBzdGFydCBpbmRleCBzaG91bGQgYmUgYGZsdXNoSW5kZXggKyAxYFxyXG4gICAgbGV0IHN0YXJ0ID0gZmx1c2hJbmRleCArIDE7XHJcbiAgICBsZXQgZW5kID0gcXVldWUubGVuZ3RoO1xyXG4gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XHJcbiAgICAgICAgY29uc3QgbWlkZGxlID0gKHN0YXJ0ICsgZW5kKSA+Pj4gMTtcclxuICAgICAgICBjb25zdCBtaWRkbGVKb2JJZCA9IGdldElkKHF1ZXVlW21pZGRsZV0pO1xyXG4gICAgICAgIG1pZGRsZUpvYklkIDwgaWQgPyAoc3RhcnQgPSBtaWRkbGUgKyAxKSA6IChlbmQgPSBtaWRkbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXJ0O1xyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlSm9iKGpvYikge1xyXG4gICAgLy8gdGhlIGRlZHVwZSBzZWFyY2ggdXNlcyB0aGUgc3RhcnRJbmRleCBhcmd1bWVudCBvZiBBcnJheS5pbmNsdWRlcygpXHJcbiAgICAvLyBieSBkZWZhdWx0IHRoZSBzZWFyY2ggaW5kZXggaW5jbHVkZXMgdGhlIGN1cnJlbnQgam9iIHRoYXQgaXMgYmVpbmcgcnVuXHJcbiAgICAvLyBzbyBpdCBjYW5ub3QgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgYWdhaW4uXHJcbiAgICAvLyBpZiB0aGUgam9iIGlzIGEgd2F0Y2goKSBjYWxsYmFjaywgdGhlIHNlYXJjaCB3aWxsIHN0YXJ0IHdpdGggYSArMSBpbmRleCB0b1xyXG4gICAgLy8gYWxsb3cgaXQgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgLSBpdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvXHJcbiAgICAvLyBlbnN1cmUgaXQgZG9lc24ndCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgbG9vcC5cclxuICAgIGlmICghcXVldWUubGVuZ3RoIHx8XHJcbiAgICAgICAgIXF1ZXVlLmluY2x1ZGVzKGpvYiwgaXNGbHVzaGluZyAmJiBqb2IuYWxsb3dSZWN1cnNlID8gZmx1c2hJbmRleCArIDEgOiBmbHVzaEluZGV4KSkge1xyXG4gICAgICAgIGlmIChqb2IuaWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBxdWV1ZS5wdXNoKGpvYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBxdWV1ZS5zcGxpY2UoZmluZEluc2VydGlvbkluZGV4KGpvYi5pZCksIDAsIGpvYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXVlRmx1c2goKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBxdWV1ZUZsdXNoKCkge1xyXG4gICAgaWYgKCFpc0ZsdXNoaW5nICYmICFpc0ZsdXNoUGVuZGluZykge1xyXG4gICAgICAgIGlzRmx1c2hQZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICBjdXJyZW50Rmx1c2hQcm9taXNlID0gcmVzb2x2ZWRQcm9taXNlLnRoZW4oZmx1c2hKb2JzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbnZhbGlkYXRlSm9iKGpvYikge1xyXG4gICAgY29uc3QgaSA9IHF1ZXVlLmluZGV4T2Yoam9iKTtcclxuICAgIGlmIChpID4gZmx1c2hJbmRleCkge1xyXG4gICAgICAgIHF1ZXVlLnNwbGljZShpLCAxKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBxdWV1ZVBvc3RGbHVzaENiKGNiKSB7XHJcbiAgICBpZiAoIWlzQXJyYXkoY2IpKSB7XHJcbiAgICAgICAgaWYgKCFhY3RpdmVQb3N0Rmx1c2hDYnMgfHxcclxuICAgICAgICAgICAgIWFjdGl2ZVBvc3RGbHVzaENicy5pbmNsdWRlcyhjYiwgY2IuYWxsb3dSZWN1cnNlID8gcG9zdEZsdXNoSW5kZXggKyAxIDogcG9zdEZsdXNoSW5kZXgpKSB7XHJcbiAgICAgICAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMucHVzaChjYik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gaWYgY2IgaXMgYW4gYXJyYXksIGl0IGlzIGEgY29tcG9uZW50IGxpZmVjeWNsZSBob29rIHdoaWNoIGNhbiBvbmx5IGJlXHJcbiAgICAgICAgLy8gdHJpZ2dlcmVkIGJ5IGEgam9iLCB3aGljaCBpcyBhbHJlYWR5IGRlZHVwZWQgaW4gdGhlIG1haW4gcXVldWUsIHNvXHJcbiAgICAgICAgLy8gd2UgY2FuIHNraXAgZHVwbGljYXRlIGNoZWNrIGhlcmUgdG8gaW1wcm92ZSBwZXJmXHJcbiAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5wdXNoKC4uLmNiKTtcclxuICAgIH1cclxuICAgIHF1ZXVlRmx1c2goKTtcclxufVxyXG5mdW5jdGlvbiBmbHVzaFByZUZsdXNoQ2JzKHNlZW4sIGkgPSBmbHVzaEluZGV4KSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcCgpO1xyXG4gICAgfVxyXG4gICAgZm9yICg7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNiID0gcXVldWVbaV07XHJcbiAgICAgICAgaWYgKGNiICYmIGNiLnByZSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBjYikpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICBjYigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmbHVzaFBvc3RGbHVzaENicyhzZWVuKSB7XHJcbiAgICBpZiAocGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBkZWR1cGVkID0gWy4uLm5ldyBTZXQocGVuZGluZ1Bvc3RGbHVzaENicyldO1xyXG4gICAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoID0gMDtcclxuICAgICAgICAvLyAjMTk0NyBhbHJlYWR5IGhhcyBhY3RpdmUgcXVldWUsIG5lc3RlZCBmbHVzaFBvc3RGbHVzaENicyBjYWxsXHJcbiAgICAgICAgaWYgKGFjdGl2ZVBvc3RGbHVzaENicykge1xyXG4gICAgICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMucHVzaCguLi5kZWR1cGVkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBkZWR1cGVkO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMuc29ydCgoYSwgYikgPT4gZ2V0SWQoYSkgLSBnZXRJZChiKSk7XHJcbiAgICAgICAgZm9yIChwb3N0Rmx1c2hJbmRleCA9IDA7IHBvc3RGbHVzaEluZGV4IDwgYWN0aXZlUG9zdEZsdXNoQ2JzLmxlbmd0aDsgcG9zdEZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgYWN0aXZlUG9zdEZsdXNoQ2JzW3Bvc3RGbHVzaEluZGV4XSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFjdGl2ZVBvc3RGbHVzaENic1twb3N0Rmx1c2hJbmRleF0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzID0gbnVsbDtcclxuICAgICAgICBwb3N0Rmx1c2hJbmRleCA9IDA7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgZ2V0SWQgPSAoam9iKSA9PiBqb2IuaWQgPT0gbnVsbCA/IEluZmluaXR5IDogam9iLmlkO1xyXG5jb25zdCBjb21wYXJhdG9yID0gKGEsIGIpID0+IHtcclxuICAgIGNvbnN0IGRpZmYgPSBnZXRJZChhKSAtIGdldElkKGIpO1xyXG4gICAgaWYgKGRpZmYgPT09IDApIHtcclxuICAgICAgICBpZiAoYS5wcmUgJiYgIWIucHJlKVxyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKGIucHJlICYmICFhLnByZSlcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlmZjtcclxufTtcclxuZnVuY3Rpb24gZmx1c2hKb2JzKHNlZW4pIHtcclxuICAgIGlzRmx1c2hQZW5kaW5nID0gZmFsc2U7XHJcbiAgICBpc0ZsdXNoaW5nID0gdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cclxuICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxyXG4gICAgLy8gMS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0byBjaGlsZC4gKGJlY2F1c2UgcGFyZW50IGlzIGFsd2F5c1xyXG4gICAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkIHNvIGl0cyByZW5kZXIgZWZmZWN0IHdpbGwgaGF2ZSBzbWFsbGVyXHJcbiAgICAvLyAgICBwcmlvcml0eSBudW1iZXIpXHJcbiAgICAvLyAyLiBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHVwZGF0ZSxcclxuICAgIC8vICAgIGl0cyB1cGRhdGUgY2FuIGJlIHNraXBwZWQuXHJcbiAgICBxdWV1ZS5zb3J0KGNvbXBhcmF0b3IpO1xyXG4gICAgLy8gY29uZGl0aW9uYWwgdXNhZ2Ugb2YgY2hlY2tSZWN1cnNpdmVVcGRhdGUgbXVzdCBiZSBkZXRlcm1pbmVkIG91dCBvZlxyXG4gICAgLy8gdHJ5IC4uLiBjYXRjaCBibG9jayBzaW5jZSBSb2xsdXAgYnkgZGVmYXVsdCBkZS1vcHRpbWl6ZXMgdHJlZXNoYWtpbmdcclxuICAgIC8vIGluc2lkZSB0cnktY2F0Y2guIFRoaXMgY2FuIGxlYXZlIGFsbCB3YXJuaW5nIGNvZGUgdW5zaGFrZWQuIEFsdGhvdWdoXHJcbiAgICAvLyB0aGV5IHdvdWxkIGdldCBldmVudHVhbGx5IHNoYWtlbiBieSBhIG1pbmlmaWVyIGxpa2UgdGVyc2VyLCBzb21lIG1pbmlmaWVyc1xyXG4gICAgLy8gd291bGQgZmFpbCB0byBkbyB0aGF0IChlLmcuIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkL2lzc3Vlcy8xNjEwKVxyXG4gICAgY29uc3QgY2hlY2sgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IChqb2IpID0+IGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBqb2IpXHJcbiAgICAgICAgOiBOT09QO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBmb3IgKGZsdXNoSW5kZXggPSAwOyBmbHVzaEluZGV4IDwgcXVldWUubGVuZ3RoOyBmbHVzaEluZGV4KyspIHtcclxuICAgICAgICAgICAgY29uc3Qgam9iID0gcXVldWVbZmx1c2hJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChqb2IgJiYgam9iLmFjdGl2ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2soam9iKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHJ1bm5pbmc6YCwgam9iLmlkKVxyXG4gICAgICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGpvYiwgbnVsbCwgMTQgLyogRXJyb3JDb2Rlcy5TQ0hFRFVMRVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgZmx1c2hJbmRleCA9IDA7XHJcbiAgICAgICAgcXVldWUubGVuZ3RoID0gMDtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicyhzZWVuKTtcclxuICAgICAgICBpc0ZsdXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgLy8gc29tZSBwb3N0Rmx1c2hDYiBxdWV1ZWQgam9icyFcclxuICAgICAgICAvLyBrZWVwIGZsdXNoaW5nIHVudGlsIGl0IGRyYWlucy5cclxuICAgICAgICBpZiAocXVldWUubGVuZ3RoIHx8IHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGZsdXNoSm9icyhzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGZuKSB7XHJcbiAgICBpZiAoIXNlZW4uaGFzKGZuKSkge1xyXG4gICAgICAgIHNlZW4uc2V0KGZuLCAxKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gc2Vlbi5nZXQoZm4pO1xyXG4gICAgICAgIGlmIChjb3VudCA+IFJFQ1VSU0lPTl9MSU1JVCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGZuLm93bmVySW5zdGFuY2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBpbnN0YW5jZSAmJiBnZXRDb21wb25lbnROYW1lKGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgICAgICB3YXJuKGBNYXhpbXVtIHJlY3Vyc2l2ZSB1cGRhdGVzIGV4Y2VlZGVkJHtjb21wb25lbnROYW1lID8gYCBpbiBjb21wb25lbnQgPCR7Y29tcG9uZW50TmFtZX0+YCA6IGBgfS4gYCArXHJcbiAgICAgICAgICAgICAgICBgVGhpcyBtZWFucyB5b3UgaGF2ZSBhIHJlYWN0aXZlIGVmZmVjdCB0aGF0IGlzIG11dGF0aW5nIGl0cyBvd24gYCArXHJcbiAgICAgICAgICAgICAgICBgZGVwZW5kZW5jaWVzIGFuZCB0aHVzIHJlY3Vyc2l2ZWx5IHRyaWdnZXJpbmcgaXRzZWxmLiBQb3NzaWJsZSBzb3VyY2VzIGAgK1xyXG4gICAgICAgICAgICAgICAgYGluY2x1ZGUgY29tcG9uZW50IHRlbXBsYXRlLCByZW5kZXIgZnVuY3Rpb24sIHVwZGF0ZWQgaG9vayBvciBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaGVyIHNvdXJjZSBmdW5jdGlvbi5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZWVuLnNldChmbiwgY291bnQgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBpc0htclVwZGF0aW5nID0gZmFsc2U7XHJcbmNvbnN0IGhtckRpcnR5Q29tcG9uZW50cyA9IG5ldyBTZXQoKTtcclxuLy8gRXhwb3NlIHRoZSBITVIgcnVudGltZSBvbiB0aGUgZ2xvYmFsIG9iamVjdFxyXG4vLyBUaGlzIG1ha2VzIGl0IGVudGlyZWx5IHRyZWUtc2hha2FibGUgd2l0aG91dCBwb2xsdXRpbmcgdGhlIGV4cG9ydHMgYW5kIG1ha2VzXHJcbi8vIGl0IGVhc2llciB0byBiZSB1c2VkIGluIHRvb2xpbmdzIGxpa2UgdnVlLWxvYWRlclxyXG4vLyBOb3RlOiBmb3IgYSBjb21wb25lbnQgdG8gYmUgZWxpZ2libGUgZm9yIEhNUiBpdCBhbHNvIG5lZWRzIHRoZSBfX2htcklkIG9wdGlvblxyXG4vLyB0byBiZSBzZXQgc28gdGhhdCBpdHMgaW5zdGFuY2VzIGNhbiBiZSByZWdpc3RlcmVkIC8gcmVtb3ZlZC5cclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX0hNUl9SVU5USU1FX18gPSB7XHJcbiAgICAgICAgY3JlYXRlUmVjb3JkOiB0cnlXcmFwKGNyZWF0ZVJlY29yZCksXHJcbiAgICAgICAgcmVyZW5kZXI6IHRyeVdyYXAocmVyZW5kZXIpLFxyXG4gICAgICAgIHJlbG9hZDogdHJ5V3JhcChyZWxvYWQpXHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcclxuZnVuY3Rpb24gcmVnaXN0ZXJITVIoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGlkID0gaW5zdGFuY2UudHlwZS5fX2htcklkO1xyXG4gICAgbGV0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICBjcmVhdGVSZWNvcmQoaWQsIGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgfVxyXG4gICAgcmVjb3JkLmluc3RhbmNlcy5hZGQoaW5zdGFuY2UpO1xyXG59XHJcbmZ1bmN0aW9uIHVucmVnaXN0ZXJITVIoaW5zdGFuY2UpIHtcclxuICAgIG1hcC5nZXQoaW5zdGFuY2UudHlwZS5fX2htcklkKS5pbnN0YW5jZXMuZGVsZXRlKGluc3RhbmNlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWNvcmQoaWQsIGluaXRpYWxEZWYpIHtcclxuICAgIGlmIChtYXAuaGFzKGlkKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIG1hcC5zZXQoaWQsIHtcclxuICAgICAgICBpbml0aWFsRGVmOiBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbml0aWFsRGVmKSxcclxuICAgICAgICBpbnN0YW5jZXM6IG5ldyBTZXQoKVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDbGFzc0NvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIHJldHVybiBpc0NsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkgPyBjb21wb25lbnQuX192Y2NPcHRzIDogY29tcG9uZW50O1xyXG59XHJcbmZ1bmN0aW9uIHJlcmVuZGVyKGlkLCBuZXdSZW5kZXIpIHtcclxuICAgIGNvbnN0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyB1cGRhdGUgaW5pdGlhbCByZWNvcmQgKGZvciBub3QteWV0LXJlbmRlcmVkIGNvbXBvbmVudClcclxuICAgIHJlY29yZC5pbml0aWFsRGVmLnJlbmRlciA9IG5ld1JlbmRlcjtcclxuICAgIFsuLi5yZWNvcmQuaW5zdGFuY2VzXS5mb3JFYWNoKGluc3RhbmNlID0+IHtcclxuICAgICAgICBpZiAobmV3UmVuZGVyKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnJlbmRlciA9IG5ld1JlbmRlcjtcclxuICAgICAgICAgICAgbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSkucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXJDYWNoZSA9IFtdO1xyXG4gICAgICAgIC8vIHRoaXMgZmxhZyBmb3JjZXMgY2hpbGQgY29tcG9uZW50cyB3aXRoIHNsb3QgY29udGVudCB0byB1cGRhdGVcclxuICAgICAgICBpc0htclVwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICBpbnN0YW5jZS51cGRhdGUoKTtcclxuICAgICAgICBpc0htclVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiByZWxvYWQoaWQsIG5ld0NvbXApIHtcclxuICAgIGNvbnN0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgbmV3Q29tcCA9IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KG5ld0NvbXApO1xyXG4gICAgLy8gdXBkYXRlIGluaXRpYWwgZGVmIChmb3Igbm90LXlldC1yZW5kZXJlZCBjb21wb25lbnRzKVxyXG4gICAgdXBkYXRlQ29tcG9uZW50RGVmKHJlY29yZC5pbml0aWFsRGVmLCBuZXdDb21wKTtcclxuICAgIC8vIGNyZWF0ZSBhIHNuYXBzaG90IHdoaWNoIGF2b2lkcyB0aGUgc2V0IGJlaW5nIG11dGF0ZWQgZHVyaW5nIHVwZGF0ZXNcclxuICAgIGNvbnN0IGluc3RhbmNlcyA9IFsuLi5yZWNvcmQuaW5zdGFuY2VzXTtcclxuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgaW5zdGFuY2VzKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkQ29tcCA9IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIGlmICghaG1yRGlydHlDb21wb25lbnRzLmhhcyhvbGRDb21wKSkge1xyXG4gICAgICAgICAgICAvLyAxLiBVcGRhdGUgZXhpc3RpbmcgY29tcCBkZWZpbml0aW9uIHRvIG1hdGNoIG5ldyBvbmVcclxuICAgICAgICAgICAgaWYgKG9sZENvbXAgIT09IHJlY29yZC5pbml0aWFsRGVmKSB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gMi4gbWFyayBkZWZpbml0aW9uIGRpcnR5LiBUaGlzIGZvcmNlcyB0aGUgcmVuZGVyZXIgdG8gcmVwbGFjZSB0aGVcclxuICAgICAgICAgICAgLy8gY29tcG9uZW50IG9uIHBhdGNoLlxyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuYWRkKG9sZENvbXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAzLiBpbnZhbGlkYXRlIG9wdGlvbnMgcmVzb2x1dGlvbiBjYWNoZVxyXG4gICAgICAgIGluc3RhbmNlLmFwcENvbnRleHQub3B0aW9uc0NhY2hlLmRlbGV0ZShpbnN0YW5jZS50eXBlKTtcclxuICAgICAgICAvLyA0LiBhY3R1YWxseSB1cGRhdGVcclxuICAgICAgICBpZiAoaW5zdGFuY2UuY2VSZWxvYWQpIHtcclxuICAgICAgICAgICAgLy8gY3VzdG9tIGVsZW1lbnRcclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmFkZChvbGRDb21wKTtcclxuICAgICAgICAgICAgaW5zdGFuY2UuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuZGVsZXRlKG9sZENvbXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5wYXJlbnQpIHtcclxuICAgICAgICAgICAgLy8gNC4gRm9yY2UgdGhlIHBhcmVudCBpbnN0YW5jZSB0byByZS1yZW5kZXIuIFRoaXMgd2lsbCBjYXVzZSBhbGwgdXBkYXRlZFxyXG4gICAgICAgICAgICAvLyBjb21wb25lbnRzIHRvIGJlIHVubW91bnRlZCBhbmQgcmUtbW91bnRlZC4gUXVldWUgdGhlIHVwZGF0ZSBzbyB0aGF0IHdlXHJcbiAgICAgICAgICAgIC8vIGRvbid0IGVuZCB1cCBmb3JjaW5nIHRoZSBzYW1lIHBhcmVudCB0byByZS1yZW5kZXIgbXVsdGlwbGUgdGltZXMuXHJcbiAgICAgICAgICAgIHF1ZXVlSm9iKGluc3RhbmNlLnBhcmVudC51cGRhdGUpO1xyXG4gICAgICAgICAgICAvLyBpbnN0YW5jZSBpcyB0aGUgaW5uZXIgY29tcG9uZW50IG9mIGFuIGFzeW5jIGN1c3RvbSBlbGVtZW50XHJcbiAgICAgICAgICAgIC8vIGludm9rZSB0byByZXNldCBzdHlsZXNcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLnBhcmVudC50eXBlLl9fYXN5bmNMb2FkZXIgJiZcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudC5jZVJlbG9hZCkge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LmNlUmVsb2FkKG5ld0NvbXAuc3R5bGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LnJlbG9hZCkge1xyXG4gICAgICAgICAgICAvLyByb290IGluc3RhbmNlIG1vdW50ZWQgdmlhIGNyZWF0ZUFwcCgpIGhhcyBhIHJlbG9hZCBtZXRob2RcclxuICAgICAgICAgICAgaW5zdGFuY2UuYXBwQ29udGV4dC5yZWxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBpbnN0YW5jZSBpbnNpZGUgdHJlZSBjcmVhdGVkIHZpYSByYXcgcmVuZGVyKCkuIEZvcmNlIHJlbG9hZC5cclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbSE1SXSBSb290IG9yIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UgbW9kaWZpZWQuIEZ1bGwgcmVsb2FkIHJlcXVpcmVkLicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDUuIG1ha2Ugc3VyZSB0byBjbGVhbnVwIGRpcnR5IGhtciBjb21wb25lbnRzIGFmdGVyIHVwZGF0ZVxyXG4gICAgcXVldWVQb3N0Rmx1c2hDYigoKSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBpbnN0YW5jZXMpIHtcclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmRlbGV0ZShub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50RGVmKG9sZENvbXAsIG5ld0NvbXApIHtcclxuICAgIGV4dGVuZChvbGRDb21wLCBuZXdDb21wKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9sZENvbXApIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSAnX19maWxlJyAmJiAhKGtleSBpbiBuZXdDb21wKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgb2xkQ29tcFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cnlXcmFwKGZuKSB7XHJcbiAgICByZXR1cm4gKGlkLCBhcmcpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm4oaWQsIGFyZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0hNUl0gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIFZ1ZSBjb21wb25lbnQgaG90LXJlbG9hZC4gYCArXHJcbiAgICAgICAgICAgICAgICBgRnVsbCByZWxvYWQgcmVxdWlyZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5sZXQgZGV2dG9vbHM7XHJcbmxldCBidWZmZXIgPSBbXTtcclxubGV0IGRldnRvb2xzTm90SW5zdGFsbGVkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcclxuICAgIGlmIChkZXZ0b29scykge1xyXG4gICAgICAgIGRldnRvb2xzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWRldnRvb2xzTm90SW5zdGFsbGVkKSB7XHJcbiAgICAgICAgYnVmZmVyLnB1c2goeyBldmVudCwgYXJncyB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXREZXZ0b29sc0hvb2soaG9vaywgdGFyZ2V0KSB7XHJcbiAgICB2YXIgX2EsIF9iO1xyXG4gICAgZGV2dG9vbHMgPSBob29rO1xyXG4gICAgaWYgKGRldnRvb2xzKSB7XHJcbiAgICAgICAgZGV2dG9vbHMuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgYnVmZmVyLmZvckVhY2goKHsgZXZlbnQsIGFyZ3MgfSkgPT4gZGV2dG9vbHMuZW1pdChldmVudCwgLi4uYXJncykpO1xyXG4gICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAvLyBoYW5kbGUgbGF0ZSBkZXZ0b29scyBpbmplY3Rpb24gLSBvbmx5IGRvIHRoaXMgaWYgd2UgYXJlIGluIGFuIGFjdHVhbFxyXG4gICAgLy8gYnJvd3NlciBlbnZpcm9ubWVudCB0byBhdm9pZCB0aGUgdGltZXIgaGFuZGxlIHN0YWxsaW5nIHRlc3QgcnVubmVyIGV4aXRcclxuICAgIC8vICgjNDgxNSlcclxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgLy8gc29tZSBlbnZzIG1vY2sgd2luZG93IGJ1dCBub3QgZnVsbHlcclxuICAgICAgICB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcclxuICAgICAgICAvLyBhbHNvIGV4Y2x1ZGUganNkb21cclxuICAgICAgICAhKChfYiA9IChfYSA9IHdpbmRvdy5uYXZpZ2F0b3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS51c2VyQWdlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5pbmNsdWRlcygnanNkb20nKSkpIHtcclxuICAgICAgICBjb25zdCByZXBsYXkgPSAodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPVxyXG4gICAgICAgICAgICB0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyB8fCBbXSk7XHJcbiAgICAgICAgcmVwbGF5LnB1c2goKG5ld0hvb2spID0+IHtcclxuICAgICAgICAgICAgc2V0RGV2dG9vbHNIb29rKG5ld0hvb2ssIHRhcmdldCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY2xlYXIgYnVmZmVyIGFmdGVyIDNzIC0gdGhlIHVzZXIgcHJvYmFibHkgZG9lc24ndCBoYXZlIGRldnRvb2xzIGluc3RhbGxlZFxyXG4gICAgICAgIC8vIGF0IGFsbCwgYW5kIGtlZXBpbmcgdGhlIGJ1ZmZlciB3aWxsIGNhdXNlIG1lbW9yeSBsZWFrcyAoIzQ3MzgpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghZGV2dG9vbHMpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzTm90SW5zdGFsbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBub24tYnJvd3NlciBlbnYsIGFzc3VtZSBub3QgaW5zdGFsbGVkXHJcbiAgICAgICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzSW5pdEFwcChhcHAsIHZlcnNpb24pIHtcclxuICAgIGVtaXQoXCJhcHA6aW5pdFwiIC8qIERldnRvb2xzSG9va3MuQVBQX0lOSVQgKi8sIGFwcCwgdmVyc2lvbiwge1xyXG4gICAgICAgIEZyYWdtZW50LFxyXG4gICAgICAgIFRleHQsXHJcbiAgICAgICAgQ29tbWVudCxcclxuICAgICAgICBTdGF0aWNcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzVW5tb3VudEFwcChhcHApIHtcclxuICAgIGVtaXQoXCJhcHA6dW5tb3VudFwiIC8qIERldnRvb2xzSG9va3MuQVBQX1VOTU9VTlQgKi8sIGFwcCk7XHJcbn1cclxuY29uc3QgZGV2dG9vbHNDb21wb25lbnRBZGRlZCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKFwiY29tcG9uZW50OmFkZGVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfQURERUQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQgPSBcclxuLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6dXBkYXRlZFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX1VQREFURUQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQgPSBcclxuLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6cmVtb3ZlZFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX1JFTU9WRUQgKi8pO1xyXG5mdW5jdGlvbiBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soaG9vaykge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQpID0+IHtcclxuICAgICAgICBlbWl0KGhvb2ssIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LnVpZCwgY29tcG9uZW50LnBhcmVudCA/IGNvbXBvbmVudC5wYXJlbnQudWlkIDogdW5kZWZpbmVkLCBjb21wb25lbnQpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBkZXZ0b29sc1BlcmZTdGFydCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soXCJwZXJmOnN0YXJ0XCIgLyogRGV2dG9vbHNIb29rcy5QRVJGT1JNQU5DRV9TVEFSVCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzUGVyZkVuZCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soXCJwZXJmOmVuZFwiIC8qIERldnRvb2xzSG9va3MuUEVSRk9STUFOQ0VfRU5EICovKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soaG9vaykge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQsIHR5cGUsIHRpbWUpID0+IHtcclxuICAgICAgICBlbWl0KGhvb2ssIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LnVpZCwgY29tcG9uZW50LCB0eXBlLCB0aW1lKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNDb21wb25lbnRFbWl0KGNvbXBvbmVudCwgZXZlbnQsIHBhcmFtcykge1xyXG4gICAgZW1pdChcImNvbXBvbmVudDplbWl0XCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfRU1JVCAqLywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQsIGV2ZW50LCBwYXJhbXMpO1xyXG59XG5cbmZ1bmN0aW9uIGVtaXQkMShpbnN0YW5jZSwgZXZlbnQsIC4uLnJhd0FyZ3MpIHtcclxuICAgIGlmIChpbnN0YW5jZS5pc1VubW91bnRlZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjb25zdCBwcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCB7IGVtaXRzT3B0aW9ucywgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgaWYgKGVtaXRzT3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoIShldmVudCBpbiBlbWl0c09wdGlvbnMpICYmXHJcbiAgICAgICAgICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcHJvcHNPcHRpb25zIHx8ICEodG9IYW5kbGVyS2V5KGV2ZW50KSBpbiBwcm9wc09wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGVtaXR0ZWQgZXZlbnQgXCIke2V2ZW50fVwiIGJ1dCBpdCBpcyBuZWl0aGVyIGRlY2xhcmVkIGluIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGhlIGVtaXRzIG9wdGlvbiBub3IgYXMgYW4gXCIke3RvSGFuZGxlcktleShldmVudCl9XCIgcHJvcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGVtaXRzT3B0aW9uc1tldmVudF07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRvciguLi5yYXdBcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCBldmVudCBhcmd1bWVudHM6IGV2ZW50IHZhbGlkYXRpb24gZmFpbGVkIGZvciBldmVudCBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFyZ3MgPSByYXdBcmdzO1xyXG4gICAgY29uc3QgaXNNb2RlbExpc3RlbmVyID0gZXZlbnQuc3RhcnRzV2l0aCgndXBkYXRlOicpO1xyXG4gICAgLy8gZm9yIHYtbW9kZWwgdXBkYXRlOnh4eCBldmVudHMsIGFwcGx5IG1vZGlmaWVycyBvbiBhcmdzXHJcbiAgICBjb25zdCBtb2RlbEFyZyA9IGlzTW9kZWxMaXN0ZW5lciAmJiBldmVudC5zbGljZSg3KTtcclxuICAgIGlmIChtb2RlbEFyZyAmJiBtb2RlbEFyZyBpbiBwcm9wcykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyc0tleSA9IGAke21vZGVsQXJnID09PSAnbW9kZWxWYWx1ZScgPyAnbW9kZWwnIDogbW9kZWxBcmd9TW9kaWZpZXJzYDtcclxuICAgICAgICBjb25zdCB7IG51bWJlciwgdHJpbSB9ID0gcHJvcHNbbW9kaWZpZXJzS2V5XSB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKGEgPT4gYS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGFyZ3MgPSByYXdBcmdzLm1hcCh0b051bWJlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEVtaXQoaW5zdGFuY2UsIGV2ZW50LCBhcmdzKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiBwcm9wc1t0b0hhbmRsZXJLZXkobG93ZXJDYXNlRXZlbnQpXSkge1xyXG4gICAgICAgICAgICB3YXJuKGBFdmVudCBcIiR7bG93ZXJDYXNlRXZlbnR9XCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgYCArXHJcbiAgICAgICAgICAgICAgICBgJHtmb3JtYXRDb21wb25lbnROYW1lKGluc3RhbmNlLCBpbnN0YW5jZS50eXBlKX0gYnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZm9yIFwiJHtldmVudH1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICBgTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgYCArXHJcbiAgICAgICAgICAgICAgICBgdi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIGAgK1xyXG4gICAgICAgICAgICAgICAgYFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFwiJHtoeXBoZW5hdGUoZXZlbnQpfVwiIGluc3RlYWQgb2YgXCIke2V2ZW50fVwiLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBoYW5kbGVyTmFtZTtcclxuICAgIGxldCBoYW5kbGVyID0gcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGV2ZW50KSldIHx8XHJcbiAgICAgICAgLy8gYWxzbyB0cnkgY2FtZWxDYXNlIGV2ZW50IGhhbmRsZXIgKCMyMjQ5KVxyXG4gICAgICAgIHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShjYW1lbGl6ZShldmVudCkpKV07XHJcbiAgICAvLyBmb3Igdi1tb2RlbCB1cGRhdGU6eHh4IGV2ZW50cywgYWxzbyB0cmlnZ2VyIGtlYmFiLWNhc2UgZXF1aXZhbGVudFxyXG4gICAgLy8gZm9yIHByb3BzIHBhc3NlZCB2aWEga2ViYWItY2FzZVxyXG4gICAgaWYgKCFoYW5kbGVyICYmIGlzTW9kZWxMaXN0ZW5lcikge1xyXG4gICAgICAgIGhhbmRsZXIgPSBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoaHlwaGVuYXRlKGV2ZW50KSkpXTtcclxuICAgIH1cclxuICAgIGlmIChoYW5kbGVyKSB7XHJcbiAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaGFuZGxlciwgaW5zdGFuY2UsIDYgLyogRXJyb3JDb2Rlcy5DT01QT05FTlRfRVZFTlRfSEFORExFUiAqLywgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbmNlSGFuZGxlciA9IHByb3BzW2hhbmRsZXJOYW1lICsgYE9uY2VgXTtcclxuICAgIGlmIChvbmNlSGFuZGxlcikge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UuZW1pdHRlZCkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5lbWl0dGVkID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmVtaXR0ZWRbaGFuZGxlck5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UuZW1pdHRlZFtoYW5kbGVyTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKG9uY2VIYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovLCBhcmdzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVFbWl0c09wdGlvbnMoY29tcCwgYXBwQ29udGV4dCwgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IGFwcENvbnRleHQuZW1pdHNDYWNoZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChjb21wKTtcclxuICAgIGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXcgPSBjb21wLmVtaXRzO1xyXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB7fTtcclxuICAgIC8vIGFwcGx5IG1peGluL2V4dGVuZHMgcHJvcHNcclxuICAgIGxldCBoYXNFeHRlbmRzID0gZmFsc2U7XHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZEVtaXRzID0gKHJhdykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRnJvbUV4dGVuZCA9IG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhyYXcsIGFwcENvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZEZyb21FeHRlbmQpIHtcclxuICAgICAgICAgICAgICAgIGhhc0V4dGVuZHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIG5vcm1hbGl6ZWRGcm9tRXh0ZW5kKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBhcHBDb250ZXh0Lm1peGlucy5mb3JFYWNoKGV4dGVuZEVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAuZXh0ZW5kcykge1xyXG4gICAgICAgICAgICBleHRlbmRFbWl0cyhjb21wLmV4dGVuZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5taXhpbnMpIHtcclxuICAgICAgICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFyYXcgJiYgIWhhc0V4dGVuZHMpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICAgICAgY2FjaGUuc2V0KGNvbXAsIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICByYXcuZm9yRWFjaChrZXkgPT4gKG5vcm1hbGl6ZWRba2V5XSA9IG51bGwpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGV4dGVuZChub3JtYWxpemVkLCByYXcpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGNvbXAsIG5vcm1hbGl6ZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn1cclxuLy8gQ2hlY2sgaWYgYW4gaW5jb21pbmcgcHJvcCBrZXkgaXMgYSBkZWNsYXJlZCBlbWl0IGV2ZW50IGxpc3RlbmVyLlxyXG4vLyBlLmcuIFdpdGggYGVtaXRzOiB7IGNsaWNrOiBudWxsIH1gLCBwcm9wcyBuYW1lZCBgb25DbGlja2AgYW5kIGBvbmNsaWNrYCBhcmVcclxuLy8gYm90aCBjb25zaWRlcmVkIG1hdGNoZWQgbGlzdGVuZXJzLlxyXG5mdW5jdGlvbiBpc0VtaXRMaXN0ZW5lcihvcHRpb25zLCBrZXkpIHtcclxuICAgIGlmICghb3B0aW9ucyB8fCAhaXNPbihrZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAga2V5ID0ga2V5LnNsaWNlKDIpLnJlcGxhY2UoL09uY2UkLywgJycpO1xyXG4gICAgcmV0dXJuIChoYXNPd24ob3B0aW9ucywga2V5WzBdLnRvTG93ZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSkpIHx8XHJcbiAgICAgICAgaGFzT3duKG9wdGlvbnMsIGh5cGhlbmF0ZShrZXkpKSB8fFxyXG4gICAgICAgIGhhc093bihvcHRpb25zLCBrZXkpKTtcclxufVxuXG4vKipcclxuICogbWFyayB0aGUgY3VycmVudCByZW5kZXJpbmcgaW5zdGFuY2UgZm9yIGFzc2V0IHJlc29sdXRpb24gKGUuZy5cclxuICogcmVzb2x2ZUNvbXBvbmVudCwgcmVzb2x2ZURpcmVjdGl2ZSkgZHVyaW5nIHJlbmRlclxyXG4gKi9cclxubGV0IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XHJcbmxldCBjdXJyZW50U2NvcGVJZCA9IG51bGw7XHJcbi8qKlxyXG4gKiBOb3RlOiByZW5kZXJpbmcgY2FsbHMgbWF5YmUgbmVzdGVkLiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgcGFyZW50IHJlbmRlcmluZ1xyXG4gKiBpbnN0YW5jZSBpZiBwcmVzZW50LCB3aGljaCBzaG91bGQgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlIHJlbmRlciBpcyBkb25lOlxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiBjb25zdCBwcmV2ID0gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGkpXHJcbiAqIC8vIC4uLnJlbmRlclxyXG4gKiBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldilcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHByZXYgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gKGluc3RhbmNlICYmIGluc3RhbmNlLnR5cGUuX19zY29wZUlkKSB8fCBudWxsO1xyXG4gICAgcmV0dXJuIHByZXY7XHJcbn1cclxuLyoqXHJcbiAqIFNldCBzY29wZSBpZCB3aGVuIGNyZWF0aW5nIGhvaXN0ZWQgdm5vZGVzLlxyXG4gKiBAcHJpdmF0ZSBjb21waWxlciBoZWxwZXJcclxuICovXHJcbmZ1bmN0aW9uIHB1c2hTY29wZUlkKGlkKSB7XHJcbiAgICBjdXJyZW50U2NvcGVJZCA9IGlkO1xyXG59XHJcbi8qKlxyXG4gKiBUZWNobmljYWxseSB3ZSBubyBsb25nZXIgbmVlZCB0aGlzIGFmdGVyIDMuMC44IGJ1dCB3ZSBuZWVkIHRvIGtlZXAgdGhlIHNhbWVcclxuICogQVBJIGZvciBiYWNrd2FyZHMgY29tcGF0IHcvIGNvZGUgZ2VuZXJhdGVkIGJ5IGNvbXBpbGVycy5cclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHBvcFNjb3BlSWQoKSB7XHJcbiAgICBjdXJyZW50U2NvcGVJZCA9IG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIE9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhTY29wZUlkID0gKF9pZCkgPT4gd2l0aEN0eDtcclxuLyoqXHJcbiAqIFdyYXAgYSBzbG90IGZ1bmN0aW9uIHRvIG1lbW9pemUgY3VycmVudCByZW5kZXJpbmcgaW5zdGFuY2VcclxuICogQHByaXZhdGUgY29tcGlsZXIgaGVscGVyXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoQ3R4KGZuLCBjdHggPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsIGlzTm9uU2NvcGVkU2xvdCAvLyBmYWxzZSBvbmx5XHJcbikge1xyXG4gICAgaWYgKCFjdHgpXHJcbiAgICAgICAgcmV0dXJuIGZuO1xyXG4gICAgLy8gYWxyZWFkeSBub3JtYWxpemVkXHJcbiAgICBpZiAoZm4uX24pIHtcclxuICAgICAgICByZXR1cm4gZm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZW5kZXJGbldpdGhDb250ZXh0ID0gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAvLyBJZiBhIHVzZXIgY2FsbHMgYSBjb21waWxlZCBzbG90IGluc2lkZSBhIHRlbXBsYXRlIGV4cHJlc3Npb24gKCMxNzQ1KSwgaXRcclxuICAgICAgICAvLyBjYW4gbWVzcyB1cCBibG9jayB0cmFja2luZywgc28gYnkgZGVmYXVsdCB3ZSBkaXNhYmxlIGJsb2NrIHRyYWNraW5nIGFuZFxyXG4gICAgICAgIC8vIGZvcmNlIGJhaWwgb3V0IHdoZW4gaW52b2tpbmcgYSBjb21waWxlZCBzbG90IChpbmRpY2F0ZWQgYnkgdGhlIC5fZCBmbGFnKS5cclxuICAgICAgICAvLyBUaGlzIGlzbid0IG5lY2Vzc2FyeSBpZiByZW5kZXJpbmcgYSBjb21waWxlZCBgPHNsb3Q+YCwgc28gd2UgZmxpcCB0aGVcclxuICAgICAgICAvLyAuX2QgZmxhZyBvZmYgd2hlbiBpbnZva2luZyB0aGUgd3JhcHBlZCBmbiBpbnNpZGUgYHJlbmRlclNsb3RgLlxyXG4gICAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XHJcbiAgICAgICAgICAgIHNldEJsb2NrVHJhY2tpbmcoLTEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwcmV2SW5zdGFuY2UgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoY3R4KTtcclxuICAgICAgICBjb25zdCByZXMgPSBmbiguLi5hcmdzKTtcclxuICAgICAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldkluc3RhbmNlKTtcclxuICAgICAgICBpZiAocmVuZGVyRm5XaXRoQ29udGV4dC5fZCkge1xyXG4gICAgICAgICAgICBzZXRCbG9ja1RyYWNraW5nKDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQoY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH07XHJcbiAgICAvLyBtYXJrIG5vcm1hbGl6ZWQgdG8gYXZvaWQgZHVwbGljYXRlZCB3cmFwcGluZ1xyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fbiA9IHRydWU7XHJcbiAgICAvLyBtYXJrIHRoaXMgYXMgY29tcGlsZWQgYnkgZGVmYXVsdFxyXG4gICAgLy8gdGhpcyBpcyB1c2VkIGluIHZub2RlLnRzIC0+IG5vcm1hbGl6ZUNoaWxkcmVuKCkgdG8gc2V0IHRoZSBzbG90XHJcbiAgICAvLyByZW5kZXJpbmcgZmxhZy5cclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX2MgPSB0cnVlO1xyXG4gICAgLy8gZGlzYWJsZSBibG9jayB0cmFja2luZyBieSBkZWZhdWx0XHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9kID0gdHJ1ZTtcclxuICAgIHJldHVybiByZW5kZXJGbldpdGhDb250ZXh0O1xyXG59XG5cbi8qKlxyXG4gKiBkZXYgb25seSBmbGFnIHRvIHRyYWNrIHdoZXRoZXIgJGF0dHJzIHdhcyB1c2VkIGR1cmluZyByZW5kZXIuXHJcbiAqIElmICRhdHRycyB3YXMgdXNlZCBkdXJpbmcgcmVuZGVyIHRoZW4gdGhlIHdhcm5pbmcgZm9yIGZhaWxlZCBhdHRyc1xyXG4gKiBmYWxsdGhyb3VnaCBjYW4gYmUgc3VwcHJlc3NlZC5cclxuICovXHJcbmxldCBhY2Nlc3NlZEF0dHJzID0gZmFsc2U7XHJcbmZ1bmN0aW9uIG1hcmtBdHRyc0FjY2Vzc2VkKCkge1xyXG4gICAgYWNjZXNzZWRBdHRycyA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgeyB0eXBlOiBDb21wb25lbnQsIHZub2RlLCBwcm94eSwgd2l0aFByb3h5LCBwcm9wcywgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSwgc2xvdHMsIGF0dHJzLCBlbWl0LCByZW5kZXIsIHJlbmRlckNhY2hlLCBkYXRhLCBzZXR1cFN0YXRlLCBjdHgsIGluaGVyaXRBdHRycyB9ID0gaW5zdGFuY2U7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IGZhbGx0aHJvdWdoQXR0cnM7XHJcbiAgICBjb25zdCBwcmV2ID0gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGluc3RhbmNlKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBhY2Nlc3NlZEF0dHJzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIC8vIHdpdGhQcm94eSBpcyBhIHByb3h5IHdpdGggYSBkaWZmZXJlbnQgYGhhc2AgdHJhcCBvbmx5IGZvclxyXG4gICAgICAgICAgICAvLyBydW50aW1lLWNvbXBpbGVkIHJlbmRlciBmdW5jdGlvbnMgdXNpbmcgYHdpdGhgIGJsb2NrLlxyXG4gICAgICAgICAgICBjb25zdCBwcm94eVRvVXNlID0gd2l0aFByb3h5IHx8IHByb3h5O1xyXG4gICAgICAgICAgICByZXN1bHQgPSBub3JtYWxpemVWTm9kZShyZW5kZXIuY2FsbChwcm94eVRvVXNlLCBwcm94eVRvVXNlLCByZW5kZXJDYWNoZSwgcHJvcHMsIHNldHVwU3RhdGUsIGRhdGEsIGN0eCkpO1xyXG4gICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gYXR0cnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsXHJcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IENvbXBvbmVudDtcclxuICAgICAgICAgICAgLy8gaW4gZGV2LCBtYXJrIGF0dHJzIGFjY2Vzc2VkIGlmIG9wdGlvbmFsIHByb3BzIChhdHRycyA9PT0gcHJvcHMpXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYXR0cnMgPT09IHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbGl6ZVZOb2RlKHJlbmRlci5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICA/IHJlbmRlcihwcm9wcywgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogeyBhdHRycywgc2xvdHMsIGVtaXQgfSlcclxuICAgICAgICAgICAgICAgIDogcmVuZGVyKHByb3BzLCBudWxsIC8qIHdlIGtub3cgaXQgZG9lc24ndCBuZWVkIGl0ICovKSk7XHJcbiAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBDb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgID8gYXR0cnNcclxuICAgICAgICAgICAgICAgIDogZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoKGF0dHJzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgYmxvY2tTdGFjay5sZW5ndGggPSAwO1xyXG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDEgLyogRXJyb3JDb2Rlcy5SRU5ERVJfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xyXG4gICAgfVxyXG4gICAgLy8gYXR0ciBtZXJnaW5nXHJcbiAgICAvLyBpbiBkZXYgbW9kZSwgY29tbWVudHMgYXJlIHByZXNlcnZlZCwgYW5kIGl0J3MgcG9zc2libGUgZm9yIGEgdGVtcGxhdGVcclxuICAgIC8vIHRvIGhhdmUgY29tbWVudHMgYWxvbmcgc2lkZSB0aGUgcm9vdCBlbGVtZW50IHdoaWNoIG1ha2VzIGl0IGEgZnJhZ21lbnRcclxuICAgIGxldCByb290ID0gcmVzdWx0O1xyXG4gICAgbGV0IHNldFJvb3QgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgcmVzdWx0LnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICByZXN1bHQucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgW3Jvb3QsIHNldFJvb3RdID0gZ2V0Q2hpbGRSb290KHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmFsbHRocm91Z2hBdHRycyAmJiBpbmhlcml0QXR0cnMgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZhbGx0aHJvdWdoQXR0cnMpO1xyXG4gICAgICAgIGNvbnN0IHsgc2hhcGVGbGFnIH0gPSByb290O1xyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgKDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovIHwgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wc09wdGlvbnMgJiYga2V5cy5zb21lKGlzTW9kZWxMaXN0ZW5lcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIHYtbW9kZWwgbGlzdGVuZXIgKG9uVXBkYXRlOnh4eCkgaGFzIGEgY29ycmVzcG9uZGluZyBkZWNsYXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByb3AsIGl0IGluZGljYXRlcyB0aGlzIGNvbXBvbmVudCBleHBlY3RzIHRvIGhhbmRsZSB2LW1vZGVsIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHNob3VsZCBub3QgZmFsbHRocm91Z2guXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVsYXRlZDogIzE1NDMsICMxNjQzLCAjMTk4OVxyXG4gICAgICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBmaWx0ZXJNb2RlbExpc3RlbmVycyhmYWxsdGhyb3VnaEF0dHJzLCBwcm9wc09wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcm9vdCA9IGNsb25lVk5vZGUocm9vdCwgZmFsbHRocm91Z2hBdHRycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFhY2Nlc3NlZEF0dHJzICYmIHJvb3QudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsQXR0cnMgPSBPYmplY3Qua2V5cyhhdHRycyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudEF0dHJzID0gW107XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYUF0dHJzID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFsbEF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFsbEF0dHJzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHYtbW9kZWwgaGFuZGxlcnMgd2hlbiB0aGV5IGZhaWwgdG8gZmFsbHRocm91Z2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGBvbmAsIGxvd2VyY2FzZSBmaXJzdCBsZXR0ZXIgdG8gcmVmbGVjdCBldmVudCBjYXNpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QXR0cnMucHVzaChrZXlbMl0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhQXR0cnMucHVzaChrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChleHRyYUF0dHJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEV4dHJhbmVvdXMgbm9uLXByb3BzIGF0dHJpYnV0ZXMgKGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtleHRyYUF0dHJzLmpvaW4oJywgJyl9KSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHdlcmUgcGFzc2VkIHRvIGNvbXBvbmVudCBidXQgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5oZXJpdGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYmVjYXVzZSBjb21wb25lbnQgcmVuZGVycyBmcmFnbWVudCBvciB0ZXh0IHJvb3Qgbm9kZXMuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRBdHRycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBFeHRyYW5lb3VzIG5vbi1lbWl0cyBldmVudCBsaXN0ZW5lcnMgKGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtldmVudEF0dHJzLmpvaW4oJywgJyl9KSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHdlcmUgcGFzc2VkIHRvIGNvbXBvbmVudCBidXQgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5oZXJpdGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYmVjYXVzZSBjb21wb25lbnQgcmVuZGVycyBmcmFnbWVudCBvciB0ZXh0IHJvb3Qgbm9kZXMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSWYgdGhlIGxpc3RlbmVyIGlzIGludGVuZGVkIHRvIGJlIGEgY29tcG9uZW50IGN1c3RvbSBldmVudCBsaXN0ZW5lciBvbmx5LCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGRlY2xhcmUgaXQgdXNpbmcgdGhlIFwiZW1pdHNcIiBvcHRpb24uYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBpbmhlcml0IGRpcmVjdGl2ZXNcclxuICAgIGlmICh2bm9kZS5kaXJzKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNFbGVtZW50Um9vdChyb290KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBSdW50aW1lIGRpcmVjdGl2ZSB1c2VkIG9uIGNvbXBvbmVudCB3aXRoIG5vbi1lbGVtZW50IHJvb3Qgbm9kZS4gYCArXHJcbiAgICAgICAgICAgICAgICBgVGhlIGRpcmVjdGl2ZXMgd2lsbCBub3QgZnVuY3Rpb24gYXMgaW50ZW5kZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsb25lIGJlZm9yZSBtdXRhdGluZyBzaW5jZSB0aGUgcm9vdCBtYXkgYmUgYSBob2lzdGVkIHZub2RlXHJcbiAgICAgICAgcm9vdCA9IGNsb25lVk5vZGUocm9vdCk7XHJcbiAgICAgICAgcm9vdC5kaXJzID0gcm9vdC5kaXJzID8gcm9vdC5kaXJzLmNvbmNhdCh2bm9kZS5kaXJzKSA6IHZub2RlLmRpcnM7XHJcbiAgICB9XHJcbiAgICAvLyBpbmhlcml0IHRyYW5zaXRpb24gZGF0YVxyXG4gICAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0VsZW1lbnRSb290KHJvb3QpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBpbnNpZGUgPFRyYW5zaXRpb24+IHJlbmRlcnMgbm9uLWVsZW1lbnQgcm9vdCBub2RlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHRoYXQgY2Fubm90IGJlIGFuaW1hdGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LnRyYW5zaXRpb24gPSB2bm9kZS50cmFuc2l0aW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzZXRSb290KSB7XHJcbiAgICAgICAgc2V0Um9vdChyb290KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IHJvb3Q7XHJcbiAgICB9XHJcbiAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldik7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKiBJbiBkZXYgbW9kZSwgdGVtcGxhdGUgcm9vdCBsZXZlbCBjb21tZW50cyBhcmUgcmVuZGVyZWQsIHdoaWNoIHR1cm5zIHRoZVxyXG4gKiB0ZW1wbGF0ZSBpbnRvIGEgZnJhZ21lbnQgcm9vdCwgYnV0IHdlIG5lZWQgdG8gbG9jYXRlIHRoZSBzaW5nbGUgZWxlbWVudFxyXG4gKiByb290IGZvciBhdHRycyBhbmQgc2NvcGUgaWQgcHJvY2Vzc2luZy5cclxuICovXHJcbmNvbnN0IGdldENoaWxkUm9vdCA9ICh2bm9kZSkgPT4ge1xyXG4gICAgY29uc3QgcmF3Q2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgIGNvbnN0IGR5bmFtaWNDaGlsZHJlbiA9IHZub2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgIGNvbnN0IGNoaWxkUm9vdCA9IGZpbHRlclNpbmdsZVJvb3QocmF3Q2hpbGRyZW4pO1xyXG4gICAgaWYgKCFjaGlsZFJvb3QpIHtcclxuICAgICAgICByZXR1cm4gW3Zub2RlLCB1bmRlZmluZWRdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXggPSByYXdDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCk7XHJcbiAgICBjb25zdCBkeW5hbWljSW5kZXggPSBkeW5hbWljQ2hpbGRyZW4gPyBkeW5hbWljQ2hpbGRyZW4uaW5kZXhPZihjaGlsZFJvb3QpIDogLTE7XHJcbiAgICBjb25zdCBzZXRSb290ID0gKHVwZGF0ZWRSb290KSA9PiB7XHJcbiAgICAgICAgcmF3Q2hpbGRyZW5baW5kZXhdID0gdXBkYXRlZFJvb3Q7XHJcbiAgICAgICAgaWYgKGR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY0luZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbltkeW5hbWljSW5kZXhdID0gdXBkYXRlZFJvb3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXBkYXRlZFJvb3QucGF0Y2hGbGFnID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID0gWy4uLmR5bmFtaWNDaGlsZHJlbiwgdXBkYXRlZFJvb3RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBbbm9ybWFsaXplVk5vZGUoY2hpbGRSb290KSwgc2V0Um9vdF07XHJcbn07XHJcbmZ1bmN0aW9uIGZpbHRlclNpbmdsZVJvb3QoY2hpbGRyZW4pIHtcclxuICAgIGxldCBzaW5nbGVSb290O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB1c2VyIGNvbW1lbnRcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IENvbW1lbnQgfHwgY2hpbGQuY2hpbGRyZW4gPT09ICd2LWlmJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNpbmdsZVJvb3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbW9yZSB0aGFuIDEgbm9uLWNvbW1lbnQgY2hpbGQsIHJldHVybiBub3dcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVSb290ID0gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2luZ2xlUm9vdDtcclxufVxyXG5jb25zdCBnZXRGdW5jdGlvbmFsRmFsbHRocm91Z2ggPSAoYXR0cnMpID0+IHtcclxuICAgIGxldCByZXM7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnc3R5bGUnIHx8IGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAocmVzIHx8IChyZXMgPSB7fSkpW2tleV0gPSBhdHRyc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn07XHJcbmNvbnN0IGZpbHRlck1vZGVsTGlzdGVuZXJzID0gKGF0dHJzLCBwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgcmVzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgIGlmICghaXNNb2RlbExpc3RlbmVyKGtleSkgfHwgIShrZXkuc2xpY2UoOSkgaW4gcHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHJlc1trZXldID0gYXR0cnNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59O1xyXG5jb25zdCBpc0VsZW1lbnRSb290ID0gKHZub2RlKSA9PiB7XHJcbiAgICByZXR1cm4gKHZub2RlLnNoYXBlRmxhZyAmICg2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovIHwgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHx8XHJcbiAgICAgICAgdm5vZGUudHlwZSA9PT0gQ29tbWVudCAvLyBwb3RlbnRpYWwgdi1pZiBicmFuY2ggc3dpdGNoXHJcbiAgICApO1xyXG59O1xyXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVDb21wb25lbnQocHJldlZOb2RlLCBuZXh0Vk5vZGUsIG9wdGltaXplZCkge1xyXG4gICAgY29uc3QgeyBwcm9wczogcHJldlByb3BzLCBjaGlsZHJlbjogcHJldkNoaWxkcmVuLCBjb21wb25lbnQgfSA9IHByZXZWTm9kZTtcclxuICAgIGNvbnN0IHsgcHJvcHM6IG5leHRQcm9wcywgY2hpbGRyZW46IG5leHRDaGlsZHJlbiwgcGF0Y2hGbGFnIH0gPSBuZXh0Vk5vZGU7XHJcbiAgICBjb25zdCBlbWl0cyA9IGNvbXBvbmVudC5lbWl0c09wdGlvbnM7XHJcbiAgICAvLyBQYXJlbnQgY29tcG9uZW50J3MgcmVuZGVyIGZ1bmN0aW9uIHdhcyBob3QtdXBkYXRlZC4gU2luY2UgdGhpcyBtYXkgaGF2ZVxyXG4gICAgLy8gY2F1c2VkIHRoZSBjaGlsZCBjb21wb25lbnQncyBzbG90cyBjb250ZW50IHRvIGhhdmUgY2hhbmdlZCwgd2UgbmVlZCB0b1xyXG4gICAgLy8gZm9yY2UgdGhlIGNoaWxkIHRvIHVwZGF0ZSBhcyB3ZWxsLlxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gZm9yY2UgY2hpbGQgdXBkYXRlIGZvciBydW50aW1lIGRpcmVjdGl2ZSBvciB0cmFuc2l0aW9uIG9uIGNvbXBvbmVudCB2bm9kZS5cclxuICAgIGlmIChuZXh0Vk5vZGUuZGlycyB8fCBuZXh0Vk5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGltaXplZCAmJiBwYXRjaEZsYWcgPj0gMCkge1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLykge1xyXG4gICAgICAgICAgICAvLyBzbG90IGNvbnRlbnQgdGhhdCByZWZlcmVuY2VzIHZhbHVlcyB0aGF0IG1pZ2h0IGhhdmUgY2hhbmdlZCxcclxuICAgICAgICAgICAgLy8gZS5nLiBpbiBhIHYtZm9yXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldlByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXh0UHJvcHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJlc2VuY2Ugb2YgdGhpcyBmbGFnIGluZGljYXRlcyBwcm9wcyBhcmUgYWx3YXlzIG5vbi1udWxsXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNQcm9wcyA9IG5leHRWTm9kZS5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY1Byb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBkeW5hbWljUHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IHByZXZQcm9wc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWlzRW1pdExpc3RlbmVyKGVtaXRzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzIHBhdGggaXMgb25seSB0YWtlbiBieSBtYW51YWxseSB3cml0dGVuIHJlbmRlciBmdW5jdGlvbnNcclxuICAgICAgICAvLyBzbyBwcmVzZW5jZSBvZiBhbnkgY2hpbGRyZW4gbGVhZHMgdG8gYSBmb3JjZWQgdXBkYXRlXHJcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbiB8fCBuZXh0Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gfHwgIW5leHRDaGlsZHJlbi4kc3RhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJldlByb3BzID09PSBuZXh0UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXByZXZQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gISFuZXh0UHJvcHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbmV4dFByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0c09wdGlvbnMpIHtcclxuICAgIGNvbnN0IG5leHRLZXlzID0gT2JqZWN0LmtleXMobmV4dFByb3BzKTtcclxuICAgIGlmIChuZXh0S2V5cy5sZW5ndGggIT09IE9iamVjdC5rZXlzKHByZXZQcm9wcykubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5leHRLZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gbmV4dEtleXNbaV07XHJcbiAgICAgICAgaWYgKG5leHRQcm9wc1trZXldICE9PSBwcmV2UHJvcHNba2V5XSAmJlxyXG4gICAgICAgICAgICAhaXNFbWl0TGlzdGVuZXIoZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiB1cGRhdGVIT0NIb3N0RWwoeyB2bm9kZSwgcGFyZW50IH0sIGVsIC8vIEhvc3ROb2RlXHJcbikge1xyXG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQuc3ViVHJlZSA9PT0gdm5vZGUpIHtcclxuICAgICAgICAodm5vZGUgPSBwYXJlbnQudm5vZGUpLmVsID0gZWw7XHJcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcclxuICAgIH1cclxufVxuXG5jb25zdCBpc1N1c3BlbnNlID0gKHR5cGUpID0+IHR5cGUuX19pc1N1c3BlbnNlO1xyXG4vLyBTdXNwZW5zZSBleHBvc2VzIGEgY29tcG9uZW50LWxpa2UgQVBJLCBhbmQgaXMgdHJlYXRlZCBsaWtlIGEgY29tcG9uZW50XHJcbi8vIGluIHRoZSBjb21waWxlciwgYnV0IGludGVybmFsbHkgaXQncyBhIHNwZWNpYWwgYnVpbHQtaW4gdHlwZSB0aGF0IGhvb2tzXHJcbi8vIGRpcmVjdGx5IGludG8gdGhlIHJlbmRlcmVyLlxyXG5jb25zdCBTdXNwZW5zZUltcGwgPSB7XHJcbiAgICBuYW1lOiAnU3VzcGVuc2UnLFxyXG4gICAgLy8gSW4gb3JkZXIgdG8gbWFrZSBTdXNwZW5zZSB0cmVlLXNoYWthYmxlLCB3ZSBuZWVkIHRvIGF2b2lkIGltcG9ydGluZyBpdFxyXG4gICAgLy8gZGlyZWN0bHkgaW4gdGhlIHJlbmRlcmVyLiBUaGUgcmVuZGVyZXIgY2hlY2tzIGZvciB0aGUgX19pc1N1c3BlbnNlIGZsYWdcclxuICAgIC8vIG9uIGEgdm5vZGUncyB0eXBlIGFuZCBjYWxscyB0aGUgYHByb2Nlc3NgIG1ldGhvZCwgcGFzc2luZyBpbiByZW5kZXJlclxyXG4gICAgLy8gaW50ZXJuYWxzLlxyXG4gICAgX19pc1N1c3BlbnNlOiB0cnVlLFxyXG4gICAgcHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIFxyXG4gICAgLy8gcGxhdGZvcm0tc3BlY2lmaWMgaW1wbCBwYXNzZWQgZnJvbSByZW5kZXJlclxyXG4gICAgcmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBtb3VudFN1c3BlbnNlKG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXRjaFN1c3BlbnNlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGh5ZHJhdGU6IGh5ZHJhdGVTdXNwZW5zZSxcclxuICAgIGNyZWF0ZTogY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSxcclxuICAgIG5vcm1hbGl6ZTogbm9ybWFsaXplU3VzcGVuc2VDaGlsZHJlblxyXG59O1xyXG4vLyBGb3JjZS1jYXN0ZWQgcHVibGljIHR5cGluZyBmb3IgaCBhbmQgVFNYIHByb3BzIGluZmVyZW5jZVxyXG5jb25zdCBTdXNwZW5zZSA9IChTdXNwZW5zZUltcGwgKTtcclxuZnVuY3Rpb24gdHJpZ2dlckV2ZW50KHZub2RlLCBuYW1lKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVyID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHNbbmFtZV07XHJcbiAgICBpZiAoaXNGdW5jdGlvbihldmVudExpc3RlbmVyKSkge1xyXG4gICAgICAgIGV2ZW50TGlzdGVuZXIoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBtb3VudFN1c3BlbnNlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscykge1xyXG4gICAgY29uc3QgeyBwOiBwYXRjaCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgaGlkZGVuQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9ICh2bm9kZS5zdXNwZW5zZSA9IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudFN1c3BlbnNlLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaGlkZGVuQ29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpKTtcclxuICAgIC8vIHN0YXJ0IG1vdW50aW5nIHRoZSBjb250ZW50IHN1YnRyZWUgaW4gYW4gb2ZmLWRvbSBjb250YWluZXJcclxuICAgIHBhdGNoKG51bGwsIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50KSwgaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgIC8vIG5vdyBjaGVjayBpZiB3ZSBoYXZlIGVuY291bnRlcmVkIGFueSBhc3luYyBkZXBzXHJcbiAgICBpZiAoc3VzcGVuc2UuZGVwcyA+IDApIHtcclxuICAgICAgICAvLyBoYXMgYXN5bmNcclxuICAgICAgICAvLyBpbnZva2UgQGZhbGxiYWNrIGV2ZW50XHJcbiAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25QZW5kaW5nJyk7XHJcbiAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25GYWxsYmFjaycpO1xyXG4gICAgICAgIC8vIG1vdW50IHRoZSBmYWxsYmFjayB0cmVlXHJcbiAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUuc3NGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIHZub2RlLnNzRmFsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gU3VzcGVuc2UgaGFzIG5vIGFzeW5jIGRlcHMuIEp1c3QgcmVzb2x2ZS5cclxuICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcGF0Y2hTdXNwZW5zZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgeyBwOiBwYXRjaCwgdW06IHVubW91bnQsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0pIHtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKG4yLnN1c3BlbnNlID0gbjEuc3VzcGVuc2UpO1xyXG4gICAgc3VzcGVuc2Uudm5vZGUgPSBuMjtcclxuICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICBjb25zdCBuZXdCcmFuY2ggPSBuMi5zc0NvbnRlbnQ7XHJcbiAgICBjb25zdCBuZXdGYWxsYmFjayA9IG4yLnNzRmFsbGJhY2s7XHJcbiAgICBjb25zdCB7IGFjdGl2ZUJyYW5jaCwgcGVuZGluZ0JyYW5jaCwgaXNJbkZhbGxiYWNrLCBpc0h5ZHJhdGluZyB9ID0gc3VzcGVuc2U7XHJcbiAgICBpZiAocGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgaWYgKGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIHBlbmRpbmdCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgIC8vIHNhbWUgcm9vdCB0eXBlIGJ1dCBjb250ZW50IG1heSBoYXZlIGNoYW5nZWQuXHJcbiAgICAgICAgICAgIHBhdGNoKHBlbmRpbmdCcmFuY2gsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0b2dnbGVkIGJlZm9yZSBwZW5kaW5nIHRyZWUgaXMgcmVzb2x2ZWRcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkKys7XHJcbiAgICAgICAgICAgIGlmIChpc0h5ZHJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgdG9nZ2xlZCBiZWZvcmUgaHlkcmF0aW9uIGlzIGZpbmlzaGVkLCB0aGUgY3VycmVudCBET00gdHJlZSBpc1xyXG4gICAgICAgICAgICAgICAgLy8gbm8gbG9uZ2VyIHZhbGlkLiBzZXQgaXQgYXMgdGhlIGFjdGl2ZSBicmFuY2ggc28gaXQgd2lsbCBiZSB1bm1vdW50ZWRcclxuICAgICAgICAgICAgICAgIC8vIHdoZW4gcmVzb2x2ZWRcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmlzSHlkcmF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBwZW5kaW5nQnJhbmNoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChwZW5kaW5nQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpbmNyZW1lbnQgcGVuZGluZyBJRC4gdGhpcyBpcyB1c2VkIHRvIGludmFsaWRhdGUgYXN5bmMgY2FsbGJhY2tzXHJcbiAgICAgICAgICAgIC8vIHJlc2V0IHN1c3BlbnNlIHN0YXRlXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmRlcHMgPSAwO1xyXG4gICAgICAgICAgICAvLyBkaXNjYXJkIGVmZmVjdHMgZnJvbSBwZW5kaW5nIGJyYW5jaFxyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIC8vIGRpc2NhcmQgcHJldmlvdXMgY29udGFpbmVyXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICBpZiAoaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGluIGZhbGxiYWNrIHN0YXRlXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYWN0aXZlQnJhbmNoICYmIGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIGFjdGl2ZUJyYW5jaCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRvZ2dsZWQgXCJiYWNrXCIgdG8gY3VycmVudCBhY3RpdmUgYnJhbmNoXHJcbiAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSByZXNvbHZlXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoZWQgdG8gYSAzcmQgYnJhbmNoXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoYWN0aXZlQnJhbmNoICYmIGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIGFjdGl2ZUJyYW5jaCkpIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBkaWQgbm90IGNoYW5nZSwganVzdCBub3JtYWwgcGF0Y2hcclxuICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0JyYW5jaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyByb290IG5vZGUgdG9nZ2xlZFxyXG4gICAgICAgICAgICAvLyBpbnZva2UgQHBlbmRpbmcgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KG4yLCAnb25QZW5kaW5nJyk7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IHBlbmRpbmcgYnJhbmNoIGluIG9mZi1kb20gY29udGFpbmVyXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCsrO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaW5jb21pbmcgYnJhbmNoIGhhcyBubyBhc3luYyBkZXBzLCByZXNvbHZlIG5vdy5cclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGltZW91dCwgcGVuZGluZ0lkIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0lkID09PSBwZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLmZhbGxiYWNrKG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZW91dCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLmZhbGxiYWNrKG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5sZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudCwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGhpZGRlbkNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBpc0h5ZHJhdGluZyA9IGZhbHNlKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWZhbHNlICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgYGNvbnNvbGUuaW5mb2AgY2Fubm90IGJlIG51bGwgZXJyb3JcclxuICAgICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShgPFN1c3BlbnNlPiBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBhbmQgaXRzIEFQSSB3aWxsIGxpa2VseSBjaGFuZ2UuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHA6IHBhdGNoLCBtOiBtb3ZlLCB1bTogdW5tb3VudCwgbjogbmV4dCwgbzogeyBwYXJlbnROb2RlLCByZW1vdmUgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCB0aW1lb3V0ID0gdG9OdW1iZXIodm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudGltZW91dCk7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9IHtcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICBwYXJlbnQsXHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxyXG4gICAgICAgIGlzU1ZHLFxyXG4gICAgICAgIGNvbnRhaW5lcixcclxuICAgICAgICBoaWRkZW5Db250YWluZXIsXHJcbiAgICAgICAgYW5jaG9yLFxyXG4gICAgICAgIGRlcHM6IDAsXHJcbiAgICAgICAgcGVuZGluZ0lkOiAwLFxyXG4gICAgICAgIHRpbWVvdXQ6IHR5cGVvZiB0aW1lb3V0ID09PSAnbnVtYmVyJyA/IHRpbWVvdXQgOiAtMSxcclxuICAgICAgICBhY3RpdmVCcmFuY2g6IG51bGwsXHJcbiAgICAgICAgcGVuZGluZ0JyYW5jaDogbnVsbCxcclxuICAgICAgICBpc0luRmFsbGJhY2s6IHRydWUsXHJcbiAgICAgICAgaXNIeWRyYXRpbmcsXHJcbiAgICAgICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGVmZmVjdHM6IFtdLFxyXG4gICAgICAgIHJlc29sdmUocmVzdW1lID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bWUgJiYgIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHN1c3BlbnNlLnJlc29sdmUoKSBpcyBjYWxsZWQgd2l0aG91dCBhIHBlbmRpbmcgYnJhbmNoLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdXNwZW5zZS5yZXNvbHZlKCkgaXMgY2FsbGVkIG9uIGFuIGFscmVhZHkgdW5tb3VudGVkIHN1c3BlbnNlIGJvdW5kYXJ5LmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUsIGFjdGl2ZUJyYW5jaCwgcGVuZGluZ0JyYW5jaCwgcGVuZGluZ0lkLCBlZmZlY3RzLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5pc0h5ZHJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNIeWRyYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghcmVzdW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxheUVudGVyID0gYWN0aXZlQnJhbmNoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0JyYW5jaC50cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0JyYW5jaC50cmFuc2l0aW9uLm1vZGUgPT09ICdvdXQtaW4nO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVCcmFuY2gudHJhbnNpdGlvbi5hZnRlckxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVuZGluZ0lkID09PSBzdXNwZW5zZS5wZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUocGVuZGluZ0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIDAgLyogTW92ZVR5cGUuRU5URVIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaW5pdGlhbCBhbmNob3Igb24gbW91bnRcclxuICAgICAgICAgICAgICAgIGxldCB7IGFuY2hvciB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgICAgICAvLyB1bm1vdW50IGN1cnJlbnQgYWN0aXZlIHRyZWVcclxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZmFsbGJhY2sgdHJlZSB3YXMgbW91bnRlZCwgaXQgbWF5IGhhdmUgYmVlbiBtb3ZlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIHBhcnQgb2YgYSBwYXJlbnQgc3VzcGVuc2UuIGdldCB0aGUgbGF0ZXN0IGFuY2hvciBmb3IgaW5zZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yID0gbmV4dChhY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQoYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgY29udGVudCBmcm9tIG9mZi1kb20gY29udGFpbmVyIHRvIGFjdHVhbCBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlKHBlbmRpbmdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIE1vdmVUeXBlLkVOVEVSICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIHBlbmRpbmdCcmFuY2gpO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbnVsbDtcclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNJbkZhbGxiYWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIGZsdXNoIGJ1ZmZlcmVkIGVmZmVjdHNcclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYSBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZVxyXG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gc3VzcGVuc2UucGFyZW50O1xyXG4gICAgICAgICAgICBsZXQgaGFzVW5yZXNvbHZlZEFuY2VzdG9yID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgcGVuZGluZyBwYXJlbnQgc3VzcGVuc2UsIG1lcmdlIGJ1ZmZlcmVkIHBvc3Qgam9ic1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhhdCBwYXJlbnRcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQuZWZmZWN0cy5wdXNoKC4uLmVmZmVjdHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG5vIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlLCBmbHVzaCBhbGwgam9ic1xyXG4gICAgICAgICAgICBpZiAoIWhhc1VucmVzb2x2ZWRBbmNlc3Rvcikge1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0Rmx1c2hDYihlZmZlY3RzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzID0gW107XHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAcmVzb2x2ZSBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvblJlc29sdmUnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbGxiYWNrKGZhbGxiYWNrVk5vZGUpIHtcclxuICAgICAgICAgICAgaWYgKCFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyB2bm9kZSwgYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaXNTVkcgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAvLyBpbnZva2UgQGZhbGxiYWNrIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uRmFsbGJhY2snKTtcclxuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dChhY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgICAgICBjb25zdCBtb3VudEZhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdXNwZW5zZS5pc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudCB0aGUgZmFsbGJhY2sgdHJlZVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgZmFsbGJhY2tWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIGZhbGxiYWNrVk5vZGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBkZWxheUVudGVyID0gZmFsbGJhY2tWTm9kZS50cmFuc2l0aW9uICYmIGZhbGxiYWNrVk5vZGUudHJhbnNpdGlvbi5tb2RlID09PSAnb3V0LWluJztcclxuICAgICAgICAgICAgaWYgKGRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUJyYW5jaC50cmFuc2l0aW9uLmFmdGVyTGVhdmUgPSBtb3VudEZhbGxiYWNrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmlzSW5GYWxsYmFjayA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIHVubW91bnQgY3VycmVudCBhY3RpdmUgYnJhbmNoXHJcbiAgICAgICAgICAgIHVubW91bnQoYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIG5vIHN1c3BlbnNlIHNvIHVubW91bnQgaG9va3MgZmlyZSBub3dcclxuICAgICAgICAgICAgdHJ1ZSAvLyBzaG91bGRSZW1vdmVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudEZhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdmUoY29udGFpbmVyLCBhbmNob3IsIHR5cGUpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuYWN0aXZlQnJhbmNoICYmXHJcbiAgICAgICAgICAgICAgICBtb3ZlKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHR5cGUpO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBuZXh0KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VzcGVuc2UuYWN0aXZlQnJhbmNoICYmIG5leHQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCkge1xyXG4gICAgICAgICAgICBjb25zdCBpc0luUGVuZGluZ1N1c3BlbnNlID0gISFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoO1xyXG4gICAgICAgICAgICBpZiAoaXNJblBlbmRpbmdTdXNwZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuZGVwcysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkRWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcclxuICAgICAgICAgICAgaW5zdGFuY2VcclxuICAgICAgICAgICAgICAgIC5hc3luY0RlcC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jU2V0dXBSZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0cnkgd2hlbiB0aGUgc2V0dXAoKSBwcm9taXNlIHJlc29sdmVzLlxyXG4gICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IG1heSBoYXZlIGJlZW4gdW5tb3VudGVkIGJlZm9yZSByZXNvbHZlLlxyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmlzVW5tb3VudGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNVbm1vdW50ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQgIT09IGluc3RhbmNlLnN1c3BlbnNlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyByZXRyeSBmcm9tIHRoaXMgY29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3luY1Jlc29sdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dCh2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgYXN5bmNTZXR1cFJlc3VsdCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGh5ZHJhdGVkRWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSBtYXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGlmIGFuIHVwZGF0ZSBoYXBwZW5lZCBiZWZvcmUgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXN5bmMgZGVwIGlzIHJlc29sdmVkLlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLmVsID0gaHlkcmF0ZWRFbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gIWh5ZHJhdGVkRWwgJiYgaW5zdGFuY2Uuc3ViVHJlZS5lbDtcclxuICAgICAgICAgICAgICAgIHNldHVwUmVuZGVyRWZmZWN0KGluc3RhbmNlLCB2bm9kZSwgXHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGhhdmUgYmVlbiBtb3ZlZCBiZWZvcmUgcmVzb2x2ZS5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgaHlkcmF0aW9uLCBpbnN0YW5jZS5zdWJUcmVlIHdpbGwgYmUgdGhlIGNvbW1lbnRcclxuICAgICAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVyLlxyXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZShoeWRyYXRlZEVsIHx8IGluc3RhbmNlLnN1YlRyZWUuZWwpLCBcclxuICAgICAgICAgICAgICAgIC8vIGFuY2hvciB3aWxsIG5vdCBiZSB1c2VkIGlmIHRoaXMgaXMgaHlkcmF0aW9uLCBzbyBvbmx5IG5lZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBjb21tZW50IHBsYWNlaG9sZGVyIGNhc2UuXHJcbiAgICAgICAgICAgICAgICBoeWRyYXRlZEVsID8gbnVsbCA6IG5leHQoaW5zdGFuY2Uuc3ViVHJlZSksIHN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChwbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShwbGFjZWhvbGRlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVIT0NIb3N0RWwoaW5zdGFuY2UsIHZub2RlLmVsKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25seSBkZWNyZWFzZSBkZXBzIGNvdW50IGlmIHN1c3BlbnNlIGlzIG5vdCBhbHJlYWR5IHJlc29sdmVkXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNJblBlbmRpbmdTdXNwZW5zZSAmJiAtLXN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdW5tb3VudChwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNVbm1vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuYWN0aXZlQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gc3VzcGVuc2U7XHJcbn1cclxuZnVuY3Rpb24gaHlkcmF0ZVN1c3BlbnNlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlTm9kZSkge1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbiAgICBjb25zdCBzdXNwZW5zZSA9ICh2bm9kZS5zdXNwZW5zZSA9IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudFN1c3BlbnNlLCBwYXJlbnRDb21wb25lbnQsIG5vZGUucGFyZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIG51bGwsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIHRydWUgLyogaHlkcmF0aW5nICovKSk7XHJcbiAgICAvLyB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIHNjZW5hcmlvcyBmb3Igc2VydmVyLXJlbmRlcmVkIHN1c3BlbnNlOlxyXG4gICAgLy8gLSBzdWNjZXNzOiBzc3IgY29udGVudCBzaG91bGQgYmUgZnVsbHkgcmVzb2x2ZWRcclxuICAgIC8vIC0gZmFpbHVyZTogc3NyIGNvbnRlbnQgc2hvdWxkIGJlIHRoZSBmYWxsYmFjayBicmFuY2guXHJcbiAgICAvLyBob3dldmVyLCBvbiB0aGUgY2xpZW50IHdlIGRvbid0IHJlYWxseSBrbm93IGlmIGl0IGhhcyBmYWlsZWQgb3Igbm90XHJcbiAgICAvLyBhdHRlbXB0IHRvIGh5ZHJhdGUgdGhlIERPTSBhc3N1bWluZyBpdCBoYXMgc3VjY2VlZGVkLCBidXQgd2Ugc3RpbGxcclxuICAgIC8vIG5lZWQgdG8gY29uc3RydWN0IGEgc3VzcGVuc2UgYm91bmRhcnkgZmlyc3RcclxuICAgIGNvbnN0IHJlc3VsdCA9IGh5ZHJhdGVOb2RlKG5vZGUsIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50KSwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgaWYgKHN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVTdXNwZW5zZUNoaWxkcmVuKHZub2RlKSB7XHJcbiAgICBjb25zdCB7IHNoYXBlRmxhZywgY2hpbGRyZW4gfSA9IHZub2RlO1xyXG4gICAgY29uc3QgaXNTbG90Q2hpbGRyZW4gPSBzaGFwZUZsYWcgJiAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgdm5vZGUuc3NDb250ZW50ID0gbm9ybWFsaXplU3VzcGVuc2VTbG90KGlzU2xvdENoaWxkcmVuID8gY2hpbGRyZW4uZGVmYXVsdCA6IGNoaWxkcmVuKTtcclxuICAgIHZub2RlLnNzRmFsbGJhY2sgPSBpc1Nsb3RDaGlsZHJlblxyXG4gICAgICAgID8gbm9ybWFsaXplU3VzcGVuc2VTbG90KGNoaWxkcmVuLmZhbGxiYWNrKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplU3VzcGVuc2VTbG90KHMpIHtcclxuICAgIGxldCBibG9jaztcclxuICAgIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgY29uc3QgdHJhY2tCbG9jayA9IGlzQmxvY2tUcmVlRW5hYmxlZCAmJiBzLl9jO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIC8vIGRpc2FibGVUcmFja2luZzogZmFsc2VcclxuICAgICAgICAgICAgLy8gYWxsb3cgYmxvY2sgdHJhY2tpbmcgZm9yIGNvbXBpbGVkIHNsb3RzXHJcbiAgICAgICAgICAgIC8vIChzZWUgLi9jb21wb25lbnRSZW5kZXJDb250ZXh0LnRzKVxyXG4gICAgICAgICAgICBzLl9kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9wZW5CbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gcygpO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIHMuX2QgPSB0cnVlO1xyXG4gICAgICAgICAgICBibG9jayA9IGN1cnJlbnRCbG9jaztcclxuICAgICAgICAgICAgY2xvc2VCbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHMpKSB7XHJcbiAgICAgICAgY29uc3Qgc2luZ2xlQ2hpbGQgPSBmaWx0ZXJTaW5nbGVSb290KHMpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXNpbmdsZUNoaWxkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYDxTdXNwZW5zZT4gc2xvdHMgZXhwZWN0IGEgc2luZ2xlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcyA9IHNpbmdsZUNoaWxkO1xyXG4gICAgfVxyXG4gICAgcyA9IG5vcm1hbGl6ZVZOb2RlKHMpO1xyXG4gICAgaWYgKGJsb2NrICYmICFzLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgIHMuZHluYW1pY0NoaWxkcmVuID0gYmxvY2suZmlsdGVyKGMgPT4gYyAhPT0gcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxufVxyXG5mdW5jdGlvbiBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZShmbiwgc3VzcGVuc2UpIHtcclxuICAgIGlmIChzdXNwZW5zZSAmJiBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoZm4pKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCguLi5mbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLnB1c2goZm4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZm4pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgYnJhbmNoKSB7XHJcbiAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBicmFuY2g7XHJcbiAgICBjb25zdCB7IHZub2RlLCBwYXJlbnRDb21wb25lbnQgfSA9IHN1c3BlbnNlO1xyXG4gICAgY29uc3QgZWwgPSAodm5vZGUuZWwgPSBicmFuY2guZWwpO1xyXG4gICAgLy8gaW4gY2FzZSBzdXNwZW5zZSBpcyB0aGUgcm9vdCBub2RlIG9mIGEgY29tcG9uZW50LFxyXG4gICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIHRoZSBIT0MgZWxcclxuICAgIGlmIChwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LnZub2RlLmVsID0gZWw7XHJcbiAgICAgICAgdXBkYXRlSE9DSG9zdEVsKHBhcmVudENvbXBvbmVudCwgZWwpO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHByb3ZpZGUoa2V5LCB2YWx1ZSkge1xyXG4gICAgaWYgKCFjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3ZpZGUoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBwcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wcm92aWRlcztcclxuICAgICAgICAvLyBieSBkZWZhdWx0IGFuIGluc3RhbmNlIGluaGVyaXRzIGl0cyBwYXJlbnQncyBwcm92aWRlcyBvYmplY3RcclxuICAgICAgICAvLyBidXQgd2hlbiBpdCBuZWVkcyB0byBwcm92aWRlIHZhbHVlcyBvZiBpdHMgb3duLCBpdCBjcmVhdGVzIGl0c1xyXG4gICAgICAgIC8vIG93biBwcm92aWRlcyBvYmplY3QgdXNpbmcgcGFyZW50IHByb3ZpZGVzIG9iamVjdCBhcyBwcm90b3R5cGUuXHJcbiAgICAgICAgLy8gdGhpcyB3YXkgaW4gYGluamVjdGAgd2UgY2FuIHNpbXBseSBsb29rIHVwIGluamVjdGlvbnMgZnJvbSBkaXJlY3RcclxuICAgICAgICAvLyBwYXJlbnQgYW5kIGxldCB0aGUgcHJvdG90eXBlIGNoYWluIGRvIHRoZSB3b3JrLlxyXG4gICAgICAgIGNvbnN0IHBhcmVudFByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnBhcmVudCAmJiBjdXJyZW50SW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xyXG4gICAgICAgIGlmIChwYXJlbnRQcm92aWRlcyA9PT0gcHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgcHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucHJvdmlkZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFByb3ZpZGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVFMgZG9lc24ndCBhbGxvdyBzeW1ib2wgYXMgaW5kZXggdHlwZVxyXG4gICAgICAgIHByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbmplY3Qoa2V5LCBkZWZhdWx0VmFsdWUsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSA9IGZhbHNlKSB7XHJcbiAgICAvLyBmYWxsYmFjayB0byBgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlYCBzbyB0aGF0IHRoaXMgY2FuIGJlIGNhbGxlZCBpblxyXG4gICAgLy8gYSBmdW5jdGlvbmFsIGNvbXBvbmVudFxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2UgfHwgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgLy8gIzI0MDBcclxuICAgICAgICAvLyB0byBzdXBwb3J0IGBhcHAudXNlYCBwbHVnaW5zLFxyXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIGFwcENvbnRleHQncyBgcHJvdmlkZXNgIGlmIHRoZSBpbnN0YW5jZSBpcyBhdCByb290XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXMgPSBpbnN0YW5jZS5wYXJlbnQgPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGluc3RhbmNlLnZub2RlLmFwcENvbnRleHQgJiYgaW5zdGFuY2Uudm5vZGUuYXBwQ29udGV4dC5wcm92aWRlc1xyXG4gICAgICAgICAgICA6IGluc3RhbmNlLnBhcmVudC5wcm92aWRlcztcclxuICAgICAgICBpZiAocHJvdmlkZXMgJiYga2V5IGluIHByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgIC8vIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9sIGFzIGluZGV4IHR5cGVcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVhdERlZmF1bHRBc0ZhY3RvcnkgJiYgaXNGdW5jdGlvbihkZWZhdWx0VmFsdWUpXHJcbiAgICAgICAgICAgICAgICA/IGRlZmF1bHRWYWx1ZS5jYWxsKGluc3RhbmNlLnByb3h5KVxyXG4gICAgICAgICAgICAgICAgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBpbmplY3Rpb24gXCIke1N0cmluZyhrZXkpfVwiIG5vdCBmb3VuZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBpbmplY3QoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpIG9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cy5gKTtcclxuICAgIH1cclxufVxuXG4vLyBTaW1wbGUgZWZmZWN0LlxyXG5mdW5jdGlvbiB3YXRjaEVmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gd2F0Y2hQb3N0RWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZsdXNoOiAncG9zdCcgfSkgOiB7IGZsdXNoOiAncG9zdCcgfSkpO1xyXG59XHJcbmZ1bmN0aW9uIHdhdGNoU3luY0VmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBmbHVzaDogJ3N5bmMnIH0pIDogeyBmbHVzaDogJ3N5bmMnIH0pKTtcclxufVxyXG4vLyBpbml0aWFsIHZhbHVlIGZvciB3YXRjaGVycyB0byB0cmlnZ2VyIG9uIHVuZGVmaW5lZCBpbml0aWFsIHZhbHVlc1xyXG5jb25zdCBJTklUSUFMX1dBVENIRVJfVkFMVUUgPSB7fTtcclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gd2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucykge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNGdW5jdGlvbihjYikpIHtcclxuICAgICAgICB3YXJuKGBcXGB3YXRjaChmbiwgb3B0aW9ucz8pXFxgIHNpZ25hdHVyZSBoYXMgYmVlbiBtb3ZlZCB0byBhIHNlcGFyYXRlIEFQSS4gYCArXHJcbiAgICAgICAgICAgIGBVc2UgXFxgd2F0Y2hFZmZlY3QoZm4sIG9wdGlvbnM/KVxcYCBpbnN0ZWFkLiBcXGB3YXRjaFxcYCBub3cgb25seSBgICtcclxuICAgICAgICAgICAgYHN1cHBvcnRzIFxcYHdhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9XYXRjaChzb3VyY2UsIGNiLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiBkb1dhdGNoKHNvdXJjZSwgY2IsIHsgaW1tZWRpYXRlLCBkZWVwLCBmbHVzaCwgb25UcmFjaywgb25UcmlnZ2VyIH0gPSBFTVBUWV9PQkopIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNiKSB7XHJcbiAgICAgICAgaWYgKGltbWVkaWF0ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHdhdGNoKCkgXCJpbW1lZGlhdGVcIiBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyB0aGUgYCArXHJcbiAgICAgICAgICAgICAgICBgd2F0Y2goc291cmNlLCBjYWxsYmFjaywgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlZXAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB3YXJuKGB3YXRjaCgpIFwiZGVlcFwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHdhcm5JbnZhbGlkU291cmNlID0gKHMpID0+IHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIHNvdXJjZTogYCwgcywgYEEgd2F0Y2ggc291cmNlIGNhbiBvbmx5IGJlIGEgZ2V0dGVyL2VmZmVjdCBmdW5jdGlvbiwgYSByZWYsIGAgK1xyXG4gICAgICAgICAgICBgYSByZWFjdGl2ZSBvYmplY3QsIG9yIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzLmApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgbGV0IGdldHRlcjtcclxuICAgIGxldCBmb3JjZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgIGxldCBpc011bHRpU291cmNlID0gZmFsc2U7XHJcbiAgICBpZiAoaXNSZWYoc291cmNlKSkge1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHNvdXJjZS52YWx1ZTtcclxuICAgICAgICBmb3JjZVRyaWdnZXIgPSBpc1NoYWxsb3ckMShzb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShzb3VyY2UpKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlO1xyXG4gICAgICAgIGRlZXAgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheShzb3VyY2UpKSB7XHJcbiAgICAgICAgaXNNdWx0aVNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgZm9yY2VUcmlnZ2VyID0gc291cmNlLnNvbWUocyA9PiBpc1JlYWN0aXZlKHMpIHx8IGlzU2hhbGxvdyQxKHMpKTtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2UubWFwKHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSZWYocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzLnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhY3RpdmUocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZShzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHMsIGluc3RhbmNlLCAyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihzb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKGNiKSB7XHJcbiAgICAgICAgICAgIC8vIGdldHRlciB3aXRoIGNiXHJcbiAgICAgICAgICAgIGdldHRlciA9ICgpID0+IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vIGNiIC0+IHNpbXBsZSBlZmZlY3RcclxuICAgICAgICAgICAgZ2V0dGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoc291cmNlLCBpbnN0YW5jZSwgMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovLCBbb25DbGVhbnVwXSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZ2V0dGVyID0gTk9PUDtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkludmFsaWRTb3VyY2Uoc291cmNlKTtcclxuICAgIH1cclxuICAgIGlmIChjYiAmJiBkZWVwKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZUdldHRlciA9IGdldHRlcjtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiB0cmF2ZXJzZShiYXNlR2V0dGVyKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNsZWFudXA7XHJcbiAgICBsZXQgb25DbGVhbnVwID0gKGZuKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCA9IGVmZmVjdC5vblN0b3AgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIDQgLyogRXJyb3JDb2Rlcy5XQVRDSF9DTEVBTlVQICovKTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIC8vIGluIFNTUiB0aGVyZSBpcyBubyBuZWVkIHRvIHNldHVwIGFuIGFjdHVhbCBlZmZlY3QsIGFuZCBpdCBzaG91bGQgYmUgbm9vcFxyXG4gICAgLy8gdW5sZXNzIGl0J3MgZWFnZXJcclxuICAgIGlmIChpc0luU1NSQ29tcG9uZW50U2V0dXApIHtcclxuICAgICAgICAvLyB3ZSB3aWxsIGFsc28gbm90IGNhbGwgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgKCsgcnVubmVyIGlzIG5vdCBzZXQgdXApXHJcbiAgICAgICAgb25DbGVhbnVwID0gTk9PUDtcclxuICAgICAgICBpZiAoIWNiKSB7XHJcbiAgICAgICAgICAgIGdldHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbW1lZGlhdGUpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoY2IsIGluc3RhbmNlLCAzIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi8sIFtcclxuICAgICAgICAgICAgICAgIGdldHRlcigpLFxyXG4gICAgICAgICAgICAgICAgaXNNdWx0aVNvdXJjZSA/IFtdIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgb25DbGVhbnVwXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTk9PUDtcclxuICAgIH1cclxuICAgIGxldCBvbGRWYWx1ZSA9IGlzTXVsdGlTb3VyY2UgPyBbXSA6IElOSVRJQUxfV0FUQ0hFUl9WQUxVRTtcclxuICAgIGNvbnN0IGpvYiA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIWVmZmVjdC5hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2IpIHtcclxuICAgICAgICAgICAgLy8gd2F0Y2goc291cmNlLCBjYilcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgICAgIGlmIChkZWVwIHx8XHJcbiAgICAgICAgICAgICAgICBmb3JjZVRyaWdnZXIgfHxcclxuICAgICAgICAgICAgICAgIChpc011bHRpU291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXdWYWx1ZS5zb21lKCh2LCBpKSA9PiBoYXNDaGFuZ2VkKHYsIG9sZFZhbHVlW2ldKSlcclxuICAgICAgICAgICAgICAgICAgICA6IGhhc0NoYW5nZWQobmV3VmFsdWUsIG9sZFZhbHVlKSkgfHxcclxuICAgICAgICAgICAgICAgIChmYWxzZSAgKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2xlYW51cCBiZWZvcmUgcnVubmluZyBjYiBhZ2FpblxyXG4gICAgICAgICAgICAgICAgaWYgKGNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhjYiwgaW5zdGFuY2UsIDMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgdW5kZWZpbmVkIGFzIHRoZSBvbGQgdmFsdWUgd2hlbiBpdCdzIGNoYW5nZWQgZm9yIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWUgPT09IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA/IHVuZGVmaW5lZCA6IG9sZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB3YXRjaEVmZmVjdFxyXG4gICAgICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGltcG9ydGFudDogbWFyayB0aGUgam9iIGFzIGEgd2F0Y2hlciBjYWxsYmFjayBzbyB0aGF0IHNjaGVkdWxlciBrbm93c1xyXG4gICAgLy8gaXQgaXMgYWxsb3dlZCB0byBzZWxmLXRyaWdnZXIgKCMxNzI3KVxyXG4gICAgam9iLmFsbG93UmVjdXJzZSA9ICEhY2I7XHJcbiAgICBsZXQgc2NoZWR1bGVyO1xyXG4gICAgaWYgKGZsdXNoID09PSAnc3luYycpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSBqb2I7IC8vIHRoZSBzY2hlZHVsZXIgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZGlyZWN0bHlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZsdXNoID09PSAncG9zdCcpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSAoKSA9PiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3Qoam9iLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkZWZhdWx0OiAncHJlJ1xyXG4gICAgICAgIGpvYi5wcmUgPSB0cnVlO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSlcclxuICAgICAgICAgICAgam9iLmlkID0gaW5zdGFuY2UudWlkO1xyXG4gICAgICAgIHNjaGVkdWxlciA9ICgpID0+IHF1ZXVlSm9iKGpvYik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCBzY2hlZHVsZXIpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGVmZmVjdC5vblRyYWNrID0gb25UcmFjaztcclxuICAgICAgICBlZmZlY3Qub25UcmlnZ2VyID0gb25UcmlnZ2VyO1xyXG4gICAgfVxyXG4gICAgLy8gaW5pdGlhbCBydW5cclxuICAgIGlmIChjYikge1xyXG4gICAgICAgIGlmIChpbW1lZGlhdGUpIHtcclxuICAgICAgICAgICAgam9iKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBvbGRWYWx1ZSA9IGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmbHVzaCA9PT0gJ3Bvc3QnKSB7XHJcbiAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGVmZmVjdC5ydW4uYmluZChlZmZlY3QpLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIGVmZmVjdC5zdG9wKCk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLnNjb3BlKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZShpbnN0YW5jZS5zY29wZS5lZmZlY3RzLCBlZmZlY3QpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8gdGhpcy4kd2F0Y2hcclxuZnVuY3Rpb24gaW5zdGFuY2VXYXRjaChzb3VyY2UsIHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCBwdWJsaWNUaGlzID0gdGhpcy5wcm94eTtcclxuICAgIGNvbnN0IGdldHRlciA9IGlzU3RyaW5nKHNvdXJjZSlcclxuICAgICAgICA/IHNvdXJjZS5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgICAgID8gY3JlYXRlUGF0aEdldHRlcihwdWJsaWNUaGlzLCBzb3VyY2UpXHJcbiAgICAgICAgICAgIDogKCkgPT4gcHVibGljVGhpc1tzb3VyY2VdXHJcbiAgICAgICAgOiBzb3VyY2UuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKTtcclxuICAgIGxldCBjYjtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgIGNiID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjYiA9IHZhbHVlLmhhbmRsZXI7XHJcbiAgICAgICAgb3B0aW9ucyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VyID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgc2V0Q3VycmVudEluc3RhbmNlKHRoaXMpO1xyXG4gICAgY29uc3QgcmVzID0gZG9XYXRjaChnZXR0ZXIsIGNiLmJpbmQocHVibGljVGhpcyksIG9wdGlvbnMpO1xyXG4gICAgaWYgKGN1cikge1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShjdXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGF0aEdldHRlcihjdHgsIHBhdGgpIHtcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBsZXQgY3VyID0gY3R4O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoICYmIGN1cjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGN1ciA9IGN1cltzZWdtZW50c1tpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXI7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlKHZhbHVlLCBzZWVuKSB7XHJcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCB2YWx1ZVtcIl9fdl9za2lwXCIgLyogUmVhY3RpdmVGbGFncy5TS0lQICovXSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBTZXQoKTtcclxuICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICBpZiAoaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgdHJhdmVyc2UodmFsdWUudmFsdWUsIHNlZW4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHZhbHVlW2ldLCBzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkgfHwgaXNNYXAodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2LCBzZWVuKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWVba2V5XSwgc2Vlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb25TdGF0ZSgpIHtcclxuICAgIGNvbnN0IHN0YXRlID0ge1xyXG4gICAgICAgIGlzTW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNMZWF2aW5nOiBmYWxzZSxcclxuICAgICAgICBpc1VubW91bnRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGxlYXZpbmdWTm9kZXM6IG5ldyBNYXAoKVxyXG4gICAgfTtcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgc3RhdGUuaXNNb3VudGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcclxuICAgICAgICBzdGF0ZS5pc1VubW91bnRpbmcgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbn1cclxuY29uc3QgVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IgPSBbRnVuY3Rpb24sIEFycmF5XTtcclxuY29uc3QgQmFzZVRyYW5zaXRpb25JbXBsID0ge1xyXG4gICAgbmFtZTogYEJhc2VUcmFuc2l0aW9uYCxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgbW9kZTogU3RyaW5nLFxyXG4gICAgICAgIGFwcGVhcjogQm9vbGVhbixcclxuICAgICAgICBwZXJzaXN0ZWQ6IEJvb2xlYW4sXHJcbiAgICAgICAgLy8gZW50ZXJcclxuICAgICAgICBvbkJlZm9yZUVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uRW50ZXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIC8vIGxlYXZlXHJcbiAgICAgICAgb25CZWZvcmVMZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25MZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkxlYXZlQ2FuY2VsbGVkOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICAvLyBhcHBlYXJcclxuICAgICAgICBvbkJlZm9yZUFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJBcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQXBwZWFyQ2FuY2VsbGVkOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvclxyXG4gICAgfSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XHJcbiAgICAgICAgbGV0IHByZXZUcmFuc2l0aW9uS2V5O1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCAmJiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpLCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzRm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8vIGxvY2F0ZSBmaXJzdCBub24tY29tbWVudCBjaGlsZFxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGhhc0ZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YXJuIG1vcmUgdGhhbiBvbmUgbm9uLWNvbW1lbnQgY2hpbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJzx0cmFuc2l0aW9uPiBjYW4gb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQgb3IgY29tcG9uZW50LiAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlIDx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBuZWVkIHRvIHRyYWNrIHJlYWN0aXZpdHkgZm9yIHRoZXNlIHByb3BzIHNvIHVzZSB0aGUgcmF3XHJcbiAgICAgICAgICAgIC8vIHByb3BzIGZvciBhIGJpdCBiZXR0ZXIgcGVyZlxyXG4gICAgICAgICAgICBjb25zdCByYXdQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgeyBtb2RlIH0gPSByYXdQcm9wcztcclxuICAgICAgICAgICAgLy8gY2hlY2sgbW9kZVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICE9PSAnaW4tb3V0JyAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAhPT0gJ291dC1pbicgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgICAgICAgICAgd2FybihgaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJHttb2RlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc0xlYXZpbmcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiA8dHJhbnNpdGlvbj48a2VlcC1hbGl2ZS8+PC90cmFuc2l0aW9uPiwgd2UgbmVlZCB0b1xyXG4gICAgICAgICAgICAvLyBjb21wYXJlIHRoZSB0eXBlIG9mIHRoZSBrZXB0LWFsaXZlIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICBjb25zdCBpbm5lckNoaWxkID0gZ2V0S2VlcEFsaXZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgICAgICBpZiAoIWlubmVyQ2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbnRlckhvb2tzID0gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhpbm5lckNoaWxkLCByYXdQcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIGVudGVySG9va3MpO1xyXG4gICAgICAgICAgICBjb25zdCBvbGRDaGlsZCA9IGluc3RhbmNlLnN1YlRyZWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZElubmVyQ2hpbGQgPSBvbGRDaGlsZCAmJiBnZXRLZWVwQWxpdmVDaGlsZChvbGRDaGlsZCk7XHJcbiAgICAgICAgICAgIGxldCB0cmFuc2l0aW9uS2V5Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCB7IGdldFRyYW5zaXRpb25LZXkgfSA9IGlubmVyQ2hpbGQudHlwZTtcclxuICAgICAgICAgICAgaWYgKGdldFRyYW5zaXRpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldFRyYW5zaXRpb25LZXkoKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2VHJhbnNpdGlvbktleSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldlRyYW5zaXRpb25LZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgIT09IHByZXZUcmFuc2l0aW9uS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldlRyYW5zaXRpb25LZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbktleUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtb2RlXHJcbiAgICAgICAgICAgIGlmIChvbGRJbm5lckNoaWxkICYmXHJcbiAgICAgICAgICAgICAgICBvbGRJbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQgJiZcclxuICAgICAgICAgICAgICAgICghaXNTYW1lVk5vZGVUeXBlKGlubmVyQ2hpbGQsIG9sZElubmVyQ2hpbGQpIHx8IHRyYW5zaXRpb25LZXlDaGFuZ2VkKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVhdmluZ0hvb2tzID0gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCByYXdQcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBvbGQgdHJlZSdzIGhvb2tzIGluIGNhc2Ugb2YgZHluYW1pYyB0cmFuc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Mob2xkSW5uZXJDaGlsZCwgbGVhdmluZ0hvb2tzKTtcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaGluZyBiZXR3ZWVuIGRpZmZlcmVudCB2aWV3c1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdvdXQtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNMZWF2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcclxuICAgICAgICAgICAgICAgICAgICBsZWF2aW5nSG9va3MuYWZ0ZXJMZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNMZWF2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcgJiYgaW5uZXJDaGlsZC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVhdmluZ0hvb2tzLmRlbGF5TGVhdmUgPSAoZWwsIGVhcmx5UmVtb3ZlLCBkZWxheWVkTGVhdmUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgb2xkSW5uZXJDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZXNDYWNoZVtTdHJpbmcob2xkSW5uZXJDaGlsZC5rZXkpXSA9IG9sZElubmVyQ2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhcmx5IHJlbW92YWwgY2FsbGJhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJseVJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZW50ZXJIb29rcy5kZWxheWVkTGVhdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGVySG9va3MuZGVsYXllZExlYXZlID0gZGVsYXllZExlYXZlO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbi8vIGV4cG9ydCB0aGUgcHVibGljIHR5cGUgZm9yIGgvdHN4IGluZmVyZW5jZVxyXG4vLyBhbHNvIHRvIGF2b2lkIGlubGluZSBpbXBvcnQoKSBpbiBnZW5lcmF0ZWQgZC50cyBmaWxlc1xyXG5jb25zdCBCYXNlVHJhbnNpdGlvbiA9IEJhc2VUcmFuc2l0aW9uSW1wbDtcclxuZnVuY3Rpb24gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgdm5vZGUpIHtcclxuICAgIGNvbnN0IHsgbGVhdmluZ1ZOb2RlcyB9ID0gc3RhdGU7XHJcbiAgICBsZXQgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gbGVhdmluZ1ZOb2Rlcy5nZXQodm5vZGUudHlwZSk7XHJcbiAgICBpZiAoIWxlYXZpbmdWTm9kZXNDYWNoZSkge1xyXG4gICAgICAgIGxlYXZpbmdWTm9kZXNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgbGVhdmluZ1ZOb2Rlcy5zZXQodm5vZGUudHlwZSwgbGVhdmluZ1ZOb2Rlc0NhY2hlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsZWF2aW5nVk5vZGVzQ2FjaGU7XHJcbn1cclxuLy8gVGhlIHRyYW5zaXRpb24gaG9va3MgYXJlIGF0dGFjaGVkIHRvIHRoZSB2bm9kZSBhcyB2bm9kZS50cmFuc2l0aW9uXHJcbi8vIGFuZCB3aWxsIGJlIGNhbGxlZCBhdCBhcHByb3ByaWF0ZSB0aW1pbmcgaW4gdGhlIHJlbmRlcmVyLlxyXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHZub2RlLCBwcm9wcywgc3RhdGUsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGFwcGVhciwgbW9kZSwgcGVyc2lzdGVkID0gZmFsc2UsIG9uQmVmb3JlRW50ZXIsIG9uRW50ZXIsIG9uQWZ0ZXJFbnRlciwgb25FbnRlckNhbmNlbGxlZCwgb25CZWZvcmVMZWF2ZSwgb25MZWF2ZSwgb25BZnRlckxlYXZlLCBvbkxlYXZlQ2FuY2VsbGVkLCBvbkJlZm9yZUFwcGVhciwgb25BcHBlYXIsIG9uQWZ0ZXJBcHBlYXIsIG9uQXBwZWFyQ2FuY2VsbGVkIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IGtleSA9IFN0cmluZyh2bm9kZS5rZXkpO1xyXG4gICAgY29uc3QgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgdm5vZGUpO1xyXG4gICAgY29uc3QgY2FsbEhvb2sgPSAoaG9vaywgYXJncykgPT4ge1xyXG4gICAgICAgIGhvb2sgJiZcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDkgLyogRXJyb3JDb2Rlcy5UUkFOU0lUSU9OX0hPT0sgKi8sIGFyZ3MpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNhbGxBc3luY0hvb2sgPSAoaG9vaywgYXJncykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRvbmUgPSBhcmdzWzFdO1xyXG4gICAgICAgIGNhbGxIb29rKGhvb2ssIGFyZ3MpO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgICAgIGlmIChob29rLmV2ZXJ5KGhvb2sgPT4gaG9vay5sZW5ndGggPD0gMSkpXHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhvb2subGVuZ3RoIDw9IDEpIHtcclxuICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBob29rcyA9IHtcclxuICAgICAgICBtb2RlLFxyXG4gICAgICAgIHBlcnNpc3RlZCxcclxuICAgICAgICBiZWZvcmVFbnRlcihlbCkge1xyXG4gICAgICAgICAgICBsZXQgaG9vayA9IG9uQmVmb3JlRW50ZXI7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9vayA9IG9uQmVmb3JlQXBwZWFyIHx8IG9uQmVmb3JlRW50ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZm9yIHNhbWUgZWxlbWVudCAodi1zaG93KVxyXG4gICAgICAgICAgICBpZiAoZWwuX2xlYXZlQ2IpIHtcclxuICAgICAgICAgICAgICAgIGVsLl9sZWF2ZUNiKHRydWUgLyogY2FuY2VsbGVkICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmb3IgdG9nZ2xlZCBlbGVtZW50IHdpdGggc2FtZSBrZXkgKHYtaWYpXHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZpbmdWTm9kZSA9IGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICBpZiAobGVhdmluZ1ZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVWTm9kZVR5cGUodm5vZGUsIGxlYXZpbmdWTm9kZSkgJiZcclxuICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZS5lbC5fbGVhdmVDYikge1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgZWFybHkgcmVtb3ZhbCAobm90IGNhbmNlbGxlZClcclxuICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZS5lbC5fbGVhdmVDYigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxIb29rKGhvb2ssIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgbGV0IGhvb2sgPSBvbkVudGVyO1xyXG4gICAgICAgICAgICBsZXQgYWZ0ZXJIb29rID0gb25BZnRlckVudGVyO1xyXG4gICAgICAgICAgICBsZXQgY2FuY2VsSG9vayA9IG9uRW50ZXJDYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9vayA9IG9uQXBwZWFyIHx8IG9uRW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJIb29rID0gb25BZnRlckFwcGVhciB8fCBvbkFmdGVyRW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsSG9vayA9IG9uQXBwZWFyQ2FuY2VsbGVkIHx8IG9uRW50ZXJDYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBkb25lID0gKGVsLl9lbnRlckNiID0gKGNhbmNlbGxlZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxlZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKGNhbmNlbEhvb2ssIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2soYWZ0ZXJIb29rLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChob29rcy5kZWxheWVkTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rcy5kZWxheWVkTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsLl9lbnRlckNiID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgICAgIGNhbGxBc3luY0hvb2soaG9vaywgW2VsLCBkb25lXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGxlYXZlKGVsLCByZW1vdmUpIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHZub2RlLmtleSk7XHJcbiAgICAgICAgICAgIGlmIChlbC5fZW50ZXJDYikge1xyXG4gICAgICAgICAgICAgICAgZWwuX2VudGVyQ2IodHJ1ZSAvKiBjYW5jZWxsZWQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1VubW91bnRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW1vdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUxlYXZlLCBbZWxdKTtcclxuICAgICAgICAgICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBkb25lID0gKGVsLl9sZWF2ZUNiID0gKGNhbmNlbGxlZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxlZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2sob25MZWF2ZUNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhvbkFmdGVyTGVhdmUsIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV0gPT09IHZub2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV0gPSB2bm9kZTtcclxuICAgICAgICAgICAgaWYgKG9uTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxBc3luY0hvb2sob25MZWF2ZSwgW2VsLCBkb25lXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb25lKHZub2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHZub2RlLCBwcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGhvb2tzO1xyXG59XHJcbi8vIHRoZSBwbGFjZWhvbGRlciByZWFsbHkgb25seSBoYW5kbGVzIG9uZSBzcGVjaWFsIGNhc2U6IEtlZXBBbGl2ZVxyXG4vLyBpbiB0aGUgY2FzZSBvZiBhIEtlZXBBbGl2ZSBpbiBhIGxlYXZlIHBoYXNlIHdlIG5lZWQgdG8gcmV0dXJuIGEgS2VlcEFsaXZlXHJcbi8vIHBsYWNlaG9sZGVyIHdpdGggZW1wdHkgY29udGVudCB0byBhdm9pZCB0aGUgS2VlcEFsaXZlIGluc3RhbmNlIGZyb20gYmVpbmdcclxuLy8gdW5tb3VudGVkLlxyXG5mdW5jdGlvbiBlbXB0eVBsYWNlaG9sZGVyKHZub2RlKSB7XHJcbiAgICBpZiAoaXNLZWVwQWxpdmUodm5vZGUpKSB7XHJcbiAgICAgICAgdm5vZGUgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgICAgICB2bm9kZS5jaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEtlZXBBbGl2ZUNoaWxkKHZub2RlKSB7XHJcbiAgICByZXR1cm4gaXNLZWVwQWxpdmUodm5vZGUpXHJcbiAgICAgICAgPyB2bm9kZS5jaGlsZHJlblxyXG4gICAgICAgICAgICA/IHZub2RlLmNoaWxkcmVuWzBdXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgICAgOiB2bm9kZTtcclxufVxyXG5mdW5jdGlvbiBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUsIGhvb2tzKSB7XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyAmJiB2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGhvb2tzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgdm5vZGUuc3NDb250ZW50LnRyYW5zaXRpb24gPSBob29rcy5jbG9uZSh2bm9kZS5zc0NvbnRlbnQpO1xyXG4gICAgICAgIHZub2RlLnNzRmFsbGJhY2sudHJhbnNpdGlvbiA9IGhvb2tzLmNsb25lKHZub2RlLnNzRmFsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdm5vZGUudHJhbnNpdGlvbiA9IGhvb2tzO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihjaGlsZHJlbiwga2VlcENvbW1lbnQgPSBmYWxzZSwgcGFyZW50S2V5KSB7XHJcbiAgICBsZXQgcmV0ID0gW107XHJcbiAgICBsZXQga2V5ZWRGcmFnbWVudENvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAvLyAjNTM2MCBpbmhlcml0IHBhcmVudCBrZXkgaW4gY2FzZSBvZiA8dGVtcGxhdGUgdi1mb3I+XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcGFyZW50S2V5ID09IG51bGxcclxuICAgICAgICAgICAgPyBjaGlsZC5rZXlcclxuICAgICAgICAgICAgOiBTdHJpbmcocGFyZW50S2V5KSArIFN0cmluZyhjaGlsZC5rZXkgIT0gbnVsbCA/IGNoaWxkLmtleSA6IGkpO1xyXG4gICAgICAgIC8vIGhhbmRsZSBmcmFnbWVudCBjaGlsZHJlbiBjYXNlLCBlLmcuIHYtZm9yXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5wYXRjaEZsYWcgJiAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqLylcclxuICAgICAgICAgICAgICAgIGtleWVkRnJhZ21lbnRDb3VudCsrO1xyXG4gICAgICAgICAgICByZXQgPSByZXQuY29uY2F0KGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihjaGlsZC5jaGlsZHJlbiwga2VlcENvbW1lbnQsIGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb21tZW50IHBsYWNlaG9sZGVycyBzaG91bGQgYmUgc2tpcHBlZCwgZS5nLiB2LWlmXHJcbiAgICAgICAgZWxzZSBpZiAoa2VlcENvbW1lbnQgfHwgY2hpbGQudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICByZXQucHVzaChrZXkgIT0gbnVsbCA/IGNsb25lVk5vZGUoY2hpbGQsIHsga2V5IH0pIDogY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vICMxMTI2IGlmIGEgdHJhbnNpdGlvbiBjaGlsZHJlbiBsaXN0IGNvbnRhaW5zIG11bHRpcGxlIHN1YiBmcmFnbWVudHMsIHRoZXNlXHJcbiAgICAvLyBmcmFnbWVudHMgd2lsbCBiZSBtZXJnZWQgaW50byBhIGZsYXQgY2hpbGRyZW4gYXJyYXkuIFNpbmNlIGVhY2ggdi1mb3JcclxuICAgIC8vIGZyYWdtZW50IG1heSBjb250YWluIGRpZmZlcmVudCBzdGF0aWMgYmluZGluZ3MgaW5zaWRlLCB3ZSBuZWVkIHRvIGRlLW9wXHJcbiAgICAvLyB0aGVzZSBjaGlsZHJlbiB0byBmb3JjZSBmdWxsIGRpZmZzIHRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yLlxyXG4gICAgaWYgKGtleWVkRnJhZ21lbnRDb3VudCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0ucGF0Y2hGbGFnID0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLy8gaW1wbGVtZW50YXRpb24sIGNsb3NlIHRvIG5vLW9wXHJcbmZ1bmN0aW9uIGRlZmluZUNvbXBvbmVudChvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihvcHRpb25zKSA/IHsgc2V0dXA6IG9wdGlvbnMsIG5hbWU6IG9wdGlvbnMubmFtZSB9IDogb3B0aW9ucztcclxufVxuXG5jb25zdCBpc0FzeW5jV3JhcHBlciA9IChpKSA9PiAhIWkudHlwZS5fX2FzeW5jTG9hZGVyO1xyXG5mdW5jdGlvbiBkZWZpbmVBc3luY0NvbXBvbmVudChzb3VyY2UpIHtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcclxuICAgICAgICBzb3VyY2UgPSB7IGxvYWRlcjogc291cmNlIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGxvYWRlciwgbG9hZGluZ0NvbXBvbmVudCwgZXJyb3JDb21wb25lbnQsIGRlbGF5ID0gMjAwLCB0aW1lb3V0LCAvLyB1bmRlZmluZWQgPSBuZXZlciB0aW1lcyBvdXRcclxuICAgIHN1c3BlbnNpYmxlID0gdHJ1ZSwgb25FcnJvcjogdXNlck9uRXJyb3IgfSA9IHNvdXJjZTtcclxuICAgIGxldCBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICBsZXQgcmVzb2x2ZWRDb21wO1xyXG4gICAgbGV0IHJldHJpZXMgPSAwO1xyXG4gICAgY29uc3QgcmV0cnkgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0cmllcysrO1xyXG4gICAgICAgIHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gbG9hZCgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHRoaXNSZXF1ZXN0O1xyXG4gICAgICAgIHJldHVybiAocGVuZGluZ1JlcXVlc3QgfHxcclxuICAgICAgICAgICAgKHRoaXNSZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3QgPVxyXG4gICAgICAgICAgICAgICAgbG9hZGVyKClcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlcnIgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJPbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyUmV0cnkgPSAoKSA9PiByZXNvbHZlKHJldHJ5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlckZhaWwgPSAoKSA9PiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJPbkVycm9yKGVyciwgdXNlclJldHJ5LCB1c2VyRmFpbCwgcmV0cmllcyArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChjb21wKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNSZXF1ZXN0ICE9PSBwZW5kaW5nUmVxdWVzdCAmJiBwZW5kaW5nUmVxdWVzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGVuZGluZ1JlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNvbXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgQXN5bmMgY29tcG9uZW50IGxvYWRlciByZXNvbHZlZCB0byB1bmRlZmluZWQuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYElmIHlvdSBhcmUgdXNpbmcgcmV0cnkoKSwgbWFrZSBzdXJlIHRvIHJldHVybiBpdHMgcmV0dXJuIHZhbHVlLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcm9wIG1vZHVsZSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXAuX19lc01vZHVsZSB8fCBjb21wW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wID0gY29tcC5kZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbXAgJiYgIWlzT2JqZWN0KGNvbXApICYmICFpc0Z1bmN0aW9uKGNvbXApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3luYyBjb21wb25lbnQgbG9hZCByZXN1bHQ6ICR7Y29tcH1gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wID0gY29tcDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDtcclxuICAgICAgICAgICAgICAgIH0pKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGRlZmluZUNvbXBvbmVudCh7XHJcbiAgICAgICAgbmFtZTogJ0FzeW5jQ29tcG9uZW50V3JhcHBlcicsXHJcbiAgICAgICAgX19hc3luY0xvYWRlcjogbG9hZCxcclxuICAgICAgICBnZXQgX19hc3luY1Jlc29sdmVkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRDb21wO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0dXAoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlc29sdmVkXHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZENvbXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBjcmVhdGVJbm5lckNvbXAocmVzb2x2ZWRDb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDEzIC8qIEVycm9yQ29kZXMuQVNZTkNfQ09NUE9ORU5UX0xPQURFUiAqLywgIWVycm9yQ29tcG9uZW50IC8qIGRvIG5vdCB0aHJvdyBpbiBkZXYgaWYgdXNlciBwcm92aWRlZCBlcnJvciBjb21wb25lbnQgKi8pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvLyBzdXNwZW5zZS1jb250cm9sbGVkIG9yIFNTUi5cclxuICAgICAgICAgICAgaWYgKChzdXNwZW5zaWJsZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSkgfHxcclxuICAgICAgICAgICAgICAgIChpc0luU1NSQ29tcG9uZW50U2V0dXApKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZCgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oY29tcCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNyZWF0ZUlubmVyQ29tcChjb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gZXJyb3JDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBsb2FkZWQgPSByZWYoZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHJlZigpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWxheWVkID0gcmVmKCEhZGVsYXkpO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXkpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIGRlbGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYWRlZC52YWx1ZSAmJiAhZXJyb3IudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBBc3luYyBjb21wb25lbnQgdGltZWQgb3V0IGFmdGVyICR7dGltZW91dH1tcy5gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IGVycjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsb2FkKClcclxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxvYWRlZC52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UucGFyZW50ICYmIGlzS2VlcEFsaXZlKGluc3RhbmNlLnBhcmVudC52bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXJlbnQgaXMga2VlcC1hbGl2ZSwgZm9yY2UgdXBkYXRlIHNvIHRoZSBsb2FkZWQgY29tcG9uZW50J3NcclxuICAgICAgICAgICAgICAgICAgICAvLyBuYW1lIGlzIHRha2VuIGludG8gYWNjb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlSm9iKGluc3RhbmNlLnBhcmVudC51cGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IGVycjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9hZGVkLnZhbHVlICYmIHJlc29sdmVkQ29tcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbm5lckNvbXAocmVzb2x2ZWRDb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlcnJvci52YWx1ZSAmJiBlcnJvckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvYWRpbmdDb21wb25lbnQgJiYgIWRlbGF5ZWQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUobG9hZGluZ0NvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW5uZXJDb21wKGNvbXAsIHsgdm5vZGU6IHsgcmVmLCBwcm9wcywgY2hpbGRyZW4sIHNoYXBlRmxhZyB9LCBwYXJlbnQgfSkge1xyXG4gICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShjb21wLCBwcm9wcywgY2hpbGRyZW4pO1xyXG4gICAgLy8gZW5zdXJlIGlubmVyIGNvbXBvbmVudCBpbmhlcml0cyB0aGUgYXN5bmMgd3JhcHBlcidzIHJlZiBvd25lclxyXG4gICAgdm5vZGUucmVmID0gcmVmO1xyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XG5cbmNvbnN0IGlzS2VlcEFsaXZlID0gKHZub2RlKSA9PiB2bm9kZS50eXBlLl9faXNLZWVwQWxpdmU7XHJcbmNvbnN0IEtlZXBBbGl2ZUltcGwgPSB7XHJcbiAgICBuYW1lOiBgS2VlcEFsaXZlYCxcclxuICAgIC8vIE1hcmtlciBmb3Igc3BlY2lhbCBoYW5kbGluZyBpbnNpZGUgdGhlIHJlbmRlcmVyLiBXZSBhcmUgbm90IHVzaW5nIGEgPT09XHJcbiAgICAvLyBjaGVjayBkaXJlY3RseSBvbiBLZWVwQWxpdmUgaW4gdGhlIHJlbmRlcmVyLCBiZWNhdXNlIGltcG9ydGluZyBpdCBkaXJlY3RseVxyXG4gICAgLy8gd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIHRyZWUtc2hha2VuLlxyXG4gICAgX19pc0tlZXBBbGl2ZTogdHJ1ZSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgaW5jbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXHJcbiAgICAgICAgZXhjbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXHJcbiAgICAgICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgLy8gS2VlcEFsaXZlIGNvbW11bmljYXRlcyB3aXRoIHRoZSBpbnN0YW50aWF0ZWQgcmVuZGVyZXIgdmlhIHRoZVxyXG4gICAgICAgIC8vIGN0eCB3aGVyZSB0aGUgcmVuZGVyZXIgcGFzc2VzIGluIGl0cyBpbnRlcm5hbHMsXHJcbiAgICAgICAgLy8gYW5kIHRoZSBLZWVwQWxpdmUgaW5zdGFuY2UgZXhwb3NlcyBhY3RpdmF0ZS9kZWFjdGl2YXRlIGltcGxlbWVudGF0aW9ucy5cclxuICAgICAgICAvLyBUaGUgd2hvbGUgcG9pbnQgb2YgdGhpcyBpcyB0byBhdm9pZCBpbXBvcnRpbmcgS2VlcEFsaXZlIGRpcmVjdGx5IGluIHRoZVxyXG4gICAgICAgIC8vIHJlbmRlcmVyIHRvIGZhY2lsaXRhdGUgdHJlZS1zaGFraW5nLlxyXG4gICAgICAgIGNvbnN0IHNoYXJlZENvbnRleHQgPSBpbnN0YW5jZS5jdHg7XHJcbiAgICAgICAgLy8gaWYgdGhlIGludGVybmFsIHJlbmRlcmVyIGlzIG5vdCByZWdpc3RlcmVkLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIHNlcnZlci1zaWRlIHJlbmRlcmluZyxcclxuICAgICAgICAvLyBmb3IgS2VlcEFsaXZlLCB3ZSBqdXN0IG5lZWQgdG8gcmVuZGVyIGl0cyBjaGlsZHJlblxyXG4gICAgICAgIGlmICghc2hhcmVkQ29udGV4dC5yZW5kZXJlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIHNsb3RzLmRlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGggPT09IDEgPyBjaGlsZHJlblswXSA6IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcclxuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldCgpO1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gbnVsbDtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5fX3ZfY2FjaGUgPSBjYWNoZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyZW50U3VzcGVuc2UgPSBpbnN0YW5jZS5zdXNwZW5zZTtcclxuICAgICAgICBjb25zdCB7IHJlbmRlcmVyOiB7IHA6IHBhdGNoLCBtOiBtb3ZlLCB1bTogX3VubW91bnQsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0gfSA9IHNoYXJlZENvbnRleHQ7XHJcbiAgICAgICAgY29uc3Qgc3RvcmFnZUNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHNoYXJlZENvbnRleHQuYWN0aXZhdGUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICBtb3ZlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLywgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHByb3BzIGhhdmUgY2hhbmdlZFxyXG4gICAgICAgICAgICBwYXRjaChpbnN0YW5jZS52bm9kZSwgdm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCB2bm9kZS5zbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0RlYWN0aXZhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGluc3RhbmNlLmEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGVIb29rID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMub25Wbm9kZU1vdW50ZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGVIb29rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgaW5zdGFuY2UucGFyZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnRzIHRyZWVcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50QWRkZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBzaGFyZWRDb250ZXh0LmRlYWN0aXZhdGUgPSAodm5vZGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUsIHN0b3JhZ2VDb250YWluZXIsIG51bGwsIDEgLyogTW92ZVR5cGUuTEVBVkUgKi8sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5kYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGluc3RhbmNlLmRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlSG9vayA9IHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGVIb29rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgaW5zdGFuY2UucGFyZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0RlYWN0aXZhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudHMgdHJlZVxyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGZ1bmN0aW9uIHVubW91bnQodm5vZGUpIHtcclxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHNoYXBlRmxhZyBzbyBpdCBjYW4gYmUgcHJvcGVybHkgdW5tb3VudGVkXHJcbiAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKHZub2RlKTtcclxuICAgICAgICAgICAgX3VubW91bnQodm5vZGUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHBydW5lQ2FjaGUoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIGNhY2hlLmZvckVhY2goKHZub2RlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKHZub2RlLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgJiYgKCFmaWx0ZXIgfHwgIWZpbHRlcihuYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoa2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeShrZXkpIHtcclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIGlmICghY3VycmVudCB8fCBjYWNoZWQudHlwZSAhPT0gY3VycmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNhY2hlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBhY3RpdmUgaW5zdGFuY2Ugc2hvdWxkIG5vIGxvbmdlciBiZSBrZXB0LWFsaXZlLlxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FuJ3QgdW5tb3VudCBpdCBub3cgYnV0IGl0IG1pZ2h0IGJlIGxhdGVyLCBzbyByZXNldCBpdHMgZmxhZyBub3cuXHJcbiAgICAgICAgICAgICAgICByZXNldFNoYXBlRmxhZyhjdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWNoZS5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHJ1bmUgY2FjaGUgb24gaW5jbHVkZS9leGNsdWRlIHByb3AgY2hhbmdlXHJcbiAgICAgICAgd2F0Y2goKCkgPT4gW3Byb3BzLmluY2x1ZGUsIHByb3BzLmV4Y2x1ZGVdLCAoW2luY2x1ZGUsIGV4Y2x1ZGVdKSA9PiB7XHJcbiAgICAgICAgICAgIGluY2x1ZGUgJiYgcHJ1bmVDYWNoZShuYW1lID0+IG1hdGNoZXMoaW5jbHVkZSwgbmFtZSkpO1xyXG4gICAgICAgICAgICBleGNsdWRlICYmIHBydW5lQ2FjaGUobmFtZSA9PiAhbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSk7XHJcbiAgICAgICAgfSwgXHJcbiAgICAgICAgLy8gcHJ1bmUgcG9zdC1yZW5kZXIgYWZ0ZXIgYGN1cnJlbnRgIGhhcyBiZWVuIHVwZGF0ZWRcclxuICAgICAgICB7IGZsdXNoOiAncG9zdCcsIGRlZXA6IHRydWUgfSk7XHJcbiAgICAgICAgLy8gY2FjaGUgc3ViIHRyZWUgYWZ0ZXIgcmVuZGVyXHJcbiAgICAgICAgbGV0IHBlbmRpbmdDYWNoZUtleSA9IG51bGw7XHJcbiAgICAgICAgY29uc3QgY2FjaGVTdWJ0cmVlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBmaXggIzE2MjEsIHRoZSBwZW5kaW5nQ2FjaGVLZXkgY291bGQgYmUgMFxyXG4gICAgICAgICAgICBpZiAocGVuZGluZ0NhY2hlS2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNhY2hlLnNldChwZW5kaW5nQ2FjaGVLZXksIGdldElubmVyQ2hpbGQoaW5zdGFuY2Uuc3ViVHJlZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBvbk1vdW50ZWQoY2FjaGVTdWJ0cmVlKTtcclxuICAgICAgICBvblVwZGF0ZWQoY2FjaGVTdWJ0cmVlKTtcclxuICAgICAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWNoZS5mb3JFYWNoKGNhY2hlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YlRyZWUsIHN1c3BlbnNlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlID0gZ2V0SW5uZXJDaGlsZChzdWJUcmVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYWNoZWQudHlwZSA9PT0gdm5vZGUudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgaW5zdGFuY2Ugd2lsbCBiZSB1bm1vdW50ZWQgYXMgcGFydCBvZiBrZWVwLWFsaXZlJ3MgdW5tb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKHZub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBidXQgaW52b2tlIGl0cyBkZWFjdGl2YXRlZCBob29rIGhlcmVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYSA9IHZub2RlLmNvbXBvbmVudC5kYTtcclxuICAgICAgICAgICAgICAgICAgICBkYSAmJiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoZGEsIHN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNhY2hlZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHBlbmRpbmdDYWNoZUtleSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghc2xvdHMuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1ZOb2RlID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgS2VlcEFsaXZlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIGNvbXBvbmVudCBjaGlsZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc1ZOb2RlKHJhd1ZOb2RlKSB8fFxyXG4gICAgICAgICAgICAgICAgKCEocmF3Vk5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAhKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSkpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2bm9kZSA9IGdldElubmVyQ2hpbGQocmF3Vk5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBjb21wID0gdm5vZGUudHlwZTtcclxuICAgICAgICAgICAgLy8gZm9yIGFzeW5jIGNvbXBvbmVudHMsIG5hbWUgY2hlY2sgc2hvdWxkIGJlIGJhc2VkIGluIGl0cyBsb2FkZWRcclxuICAgICAgICAgICAgLy8gaW5uZXIgY29tcG9uZW50IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShpc0FzeW5jV3JhcHBlcih2bm9kZSlcclxuICAgICAgICAgICAgICAgID8gdm5vZGUudHlwZS5fX2FzeW5jUmVzb2x2ZWQgfHwge31cclxuICAgICAgICAgICAgICAgIDogY29tcCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaW5jbHVkZSwgZXhjbHVkZSwgbWF4IH0gPSBwcm9wcztcclxuICAgICAgICAgICAgaWYgKChpbmNsdWRlICYmICghbmFtZSB8fCAhbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSkpIHx8XHJcbiAgICAgICAgICAgICAgICAoZXhjbHVkZSAmJiBuYW1lICYmIG1hdGNoZXMoZXhjbHVkZSwgbmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmF3Vk5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdm5vZGUua2V5ID09IG51bGwgPyBjb21wIDogdm5vZGUua2V5O1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWRWTm9kZSA9IGNhY2hlLmdldChrZXkpO1xyXG4gICAgICAgICAgICAvLyBjbG9uZSB2bm9kZSBpZiBpdCdzIHJldXNlZCBiZWNhdXNlIHdlIGFyZSBnb2luZyB0byBtdXRhdGUgaXRcclxuICAgICAgICAgICAgaWYgKHZub2RlLmVsKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmF3Vk5vZGUuc3NDb250ZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gIzE1MTMgaXQncyBwb3NzaWJsZSBmb3IgdGhlIHJldHVybmVkIHZub2RlIHRvIGJlIGNsb25lZCBkdWUgdG8gYXR0clxyXG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaCBvciBzY29wZUlkLCBzbyB0aGUgdm5vZGUgaGVyZSBtYXkgbm90IGJlIHRoZSBmaW5hbCB2bm9kZVxyXG4gICAgICAgICAgICAvLyB0aGF0IGlzIG1vdW50ZWQuIEluc3RlYWQgb2YgY2FjaGluZyBpdCBkaXJlY3RseSwgd2Ugc3RvcmUgdGhlIHBlbmRpbmdcclxuICAgICAgICAgICAgLy8ga2V5IGFuZCBjYWNoZSBgaW5zdGFuY2Uuc3ViVHJlZWAgKHRoZSBub3JtYWxpemVkIHZub2RlKSBpblxyXG4gICAgICAgICAgICAvLyBiZWZvcmVNb3VudC9iZWZvcmVVcGRhdGUgaG9va3MuXHJcbiAgICAgICAgICAgIHBlbmRpbmdDYWNoZUtleSA9IGtleTtcclxuICAgICAgICAgICAgaWYgKGNhY2hlZFZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb3B5IG92ZXIgbW91bnRlZCBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgdm5vZGUuZWwgPSBjYWNoZWRWTm9kZS5lbDtcclxuICAgICAgICAgICAgICAgIHZub2RlLmNvbXBvbmVudCA9IGNhY2hlZFZOb2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZS50cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIHRyYW5zaXRpb24gaG9va3Mgb24gc3ViVHJlZVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZSwgdm5vZGUudHJhbnNpdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCB2bm9kZSBiZWluZyBtb3VudGVkIGFzIGZyZXNoXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHRoaXMga2V5IHRoZSBmcmVzaGVzdFxyXG4gICAgICAgICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xyXG4gICAgICAgICAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XHJcbiAgICAgICAgICAgICAgICBpZiAobWF4ICYmIGtleXMuc2l6ZSA+IHBhcnNlSW50KG1heCwgMTApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGtleXMudmFsdWVzKCkubmV4dCgpLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhdm9pZCB2bm9kZSBiZWluZyB1bm1vdW50ZWRcclxuICAgICAgICAgICAgdm5vZGUuc2hhcGVGbGFnIHw9IDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLztcclxuICAgICAgICAgICAgY3VycmVudCA9IHZub2RlO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNTdXNwZW5zZShyYXdWTm9kZS50eXBlKSA/IHJhd1ZOb2RlIDogdm5vZGU7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbmNvbnN0IEtlZXBBbGl2ZSA9IEtlZXBBbGl2ZUltcGw7XHJcbmZ1bmN0aW9uIG1hdGNoZXMocGF0dGVybiwgbmFtZSkge1xyXG4gICAgaWYgKGlzQXJyYXkocGF0dGVybikpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi5zb21lKChwKSA9PiBtYXRjaGVzKHAsIG5hbWUpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU3RyaW5nKHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmNsdWRlcyhuYW1lKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHBhdHRlcm4udGVzdCkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSk7XHJcbiAgICB9XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIG9uQWN0aXZhdGVkKGhvb2ssIHRhcmdldCkge1xyXG4gICAgcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIFwiYVwiIC8qIExpZmVjeWNsZUhvb2tzLkFDVElWQVRFRCAqLywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiBvbkRlYWN0aXZhdGVkKGhvb2ssIHRhcmdldCkge1xyXG4gICAgcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIFwiZGFcIiAvKiBMaWZlY3ljbGVIb29rcy5ERUFDVElWQVRFRCAqLywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgdHlwZSwgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICAvLyBjYWNoZSB0aGUgZGVhY3RpdmF0ZSBicmFuY2ggY2hlY2sgd3JhcHBlciBmb3IgaW5qZWN0ZWQgaG9va3Mgc28gdGhlIHNhbWVcclxuICAgIC8vIGhvb2sgY2FuIGJlIHByb3Blcmx5IGRlZHVwZWQgYnkgdGhlIHNjaGVkdWxlci4gXCJfX3dkY1wiIHN0YW5kcyBmb3IgXCJ3aXRoXHJcbiAgICAvLyBkZWFjdGl2YXRpb24gY2hlY2tcIi5cclxuICAgIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dkYyB8fFxyXG4gICAgICAgIChob29rLl9fd2RjID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBvbmx5IGZpcmUgdGhlIGhvb2sgaWYgdGhlIHRhcmdldCBpbnN0YW5jZSBpcyBOT1QgaW4gYSBkZWFjdGl2YXRlZCBicmFuY2guXHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuaXNEZWFjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaG9vaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgaW5qZWN0SG9vayh0eXBlLCB3cmFwcGVkSG9vaywgdGFyZ2V0KTtcclxuICAgIC8vIEluIGFkZGl0aW9uIHRvIHJlZ2lzdGVyaW5nIGl0IG9uIHRoZSB0YXJnZXQgaW5zdGFuY2UsIHdlIHdhbGsgdXAgdGhlIHBhcmVudFxyXG4gICAgLy8gY2hhaW4gYW5kIHJlZ2lzdGVyIGl0IG9uIGFsbCBhbmNlc3RvciBpbnN0YW5jZXMgdGhhdCBhcmUga2VlcC1hbGl2ZSByb290cy5cclxuICAgIC8vIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIHdhbGsgdGhlIGVudGlyZSBjb21wb25lbnQgdHJlZSB3aGVuIGludm9raW5nIHRoZXNlXHJcbiAgICAvLyBob29rcywgYW5kIG1vcmUgaW1wb3J0YW50bHksIGF2b2lkcyB0aGUgbmVlZCB0byB0cmFjayBjaGlsZCBjb21wb25lbnRzIGluXHJcbiAgICAvLyBhcnJheXMuXHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSB0YXJnZXQucGFyZW50O1xyXG4gICAgICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0tlZXBBbGl2ZShjdXJyZW50LnBhcmVudC52bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIGluamVjdFRvS2VlcEFsaXZlUm9vdCh3cmFwcGVkSG9vaywgdHlwZSwgdGFyZ2V0LCBjdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGluamVjdFRvS2VlcEFsaXZlUm9vdChob29rLCB0eXBlLCB0YXJnZXQsIGtlZXBBbGl2ZVJvb3QpIHtcclxuICAgIC8vIGluamVjdEhvb2sgd3JhcHMgdGhlIG9yaWdpbmFsIGZvciBlcnJvciBoYW5kbGluZywgc28gbWFrZSBzdXJlIHRvIHJlbW92ZVxyXG4gICAgLy8gdGhlIHdyYXBwZWQgdmVyc2lvbi5cclxuICAgIGNvbnN0IGluamVjdGVkID0gaW5qZWN0SG9vayh0eXBlLCBob29rLCBrZWVwQWxpdmVSb290LCB0cnVlIC8qIHByZXBlbmQgKi8pO1xyXG4gICAgb25Vbm1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJlbW92ZShrZWVwQWxpdmVSb290W3R5cGVdLCBpbmplY3RlZCk7XHJcbiAgICB9LCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlc2V0U2hhcGVGbGFnKHZub2RlKSB7XHJcbiAgICBsZXQgc2hhcGVGbGFnID0gdm5vZGUuc2hhcGVGbGFnO1xyXG4gICAgaWYgKHNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykge1xyXG4gICAgICAgIHNoYXBlRmxhZyAtPSAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi87XHJcbiAgICB9XHJcbiAgICBpZiAoc2hhcGVGbGFnICYgNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi8pIHtcclxuICAgICAgICBzaGFwZUZsYWcgLT0gNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi87XHJcbiAgICB9XHJcbiAgICB2bm9kZS5zaGFwZUZsYWcgPSBzaGFwZUZsYWc7XHJcbn1cclxuZnVuY3Rpb24gZ2V0SW5uZXJDaGlsZCh2bm9kZSkge1xyXG4gICAgcmV0dXJuIHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovID8gdm5vZGUuc3NDb250ZW50IDogdm5vZGU7XHJcbn1cblxuZnVuY3Rpb24gaW5qZWN0SG9vayh0eXBlLCBob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UsIHByZXBlbmQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGNvbnN0IGhvb2tzID0gdGFyZ2V0W3R5cGVdIHx8ICh0YXJnZXRbdHlwZV0gPSBbXSk7XHJcbiAgICAgICAgLy8gY2FjaGUgdGhlIGVycm9yIGhhbmRsaW5nIHdyYXBwZXIgZm9yIGluamVjdGVkIGhvb2tzIHNvIHRoZSBzYW1lIGhvb2tcclxuICAgICAgICAvLyBjYW4gYmUgcHJvcGVybHkgZGVkdXBlZCBieSB0aGUgc2NoZWR1bGVyLiBcIl9fd2VoXCIgc3RhbmRzIGZvciBcIndpdGggZXJyb3JcclxuICAgICAgICAvLyBoYW5kbGluZ1wiLlxyXG4gICAgICAgIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dlaCB8fFxyXG4gICAgICAgICAgICAoaG9vay5fX3dlaCA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSB0cmFja2luZyBpbnNpZGUgYWxsIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhleSBjYW4gcG90ZW50aWFsbHkgYmUgY2FsbGVkIGluc2lkZSBlZmZlY3RzLlxyXG4gICAgICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnRJbnN0YW5jZSBkdXJpbmcgaG9vayBpbnZvY2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHRoZSBob29rIGRvZXMgbm90IHN5bmNocm9ub3VzbHkgdHJpZ2dlciBvdGhlciBob29rcywgd2hpY2hcclxuICAgICAgICAgICAgICAgIC8vIGNhbiBvbmx5IGJlIGZhbHNlIHdoZW4gdGhlIHVzZXIgZG9lcyBzb21ldGhpbmcgcmVhbGx5IGZ1bmt5LlxyXG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCB0YXJnZXQsIHR5cGUsIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChwcmVwZW5kKSB7XHJcbiAgICAgICAgICAgIGhvb2tzLnVuc2hpZnQod3JhcHBlZEhvb2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9va3MucHVzaCh3cmFwcGVkSG9vayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3cmFwcGVkSG9vaztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGFwaU5hbWUgPSB0b0hhbmRsZXJLZXkoRXJyb3JUeXBlU3RyaW5nc1t0eXBlXS5yZXBsYWNlKC8gaG9vayQvLCAnJykpO1xyXG4gICAgICAgIHdhcm4oYCR7YXBpTmFtZX0gaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBgICtcclxuICAgICAgICAgICAgYGFzc29jaWF0ZWQgd2l0aC4gYCArXHJcbiAgICAgICAgICAgIGBMaWZlY3ljbGUgaW5qZWN0aW9uIEFQSXMgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIHNldHVwKCkuYCArXHJcbiAgICAgICAgICAgIChgIElmIHlvdSBhcmUgdXNpbmcgYXN5bmMgc2V0dXAoKSwgbWFrZSBzdXJlIHRvIHJlZ2lzdGVyIGxpZmVjeWNsZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgaG9va3MgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdCBzdGF0ZW1lbnQuYFxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgY3JlYXRlSG9vayA9IChsaWZlY3ljbGUpID0+IChob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpID0+IFxyXG4vLyBwb3N0LWNyZWF0ZSBsaWZlY3ljbGUgcmVnaXN0cmF0aW9ucyBhcmUgbm9vcHMgZHVyaW5nIFNTUiAoZXhjZXB0IGZvciBzZXJ2ZXJQcmVmZXRjaClcclxuKCFpc0luU1NSQ29tcG9uZW50U2V0dXAgfHwgbGlmZWN5Y2xlID09PSBcInNwXCIgLyogTGlmZWN5Y2xlSG9va3MuU0VSVkVSX1BSRUZFVENIICovKSAmJlxyXG4gICAgaW5qZWN0SG9vayhsaWZlY3ljbGUsIGhvb2ssIHRhcmdldCk7XHJcbmNvbnN0IG9uQmVmb3JlTW91bnQgPSBjcmVhdGVIb29rKFwiYm1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfTU9VTlQgKi8pO1xyXG5jb25zdCBvbk1vdW50ZWQgPSBjcmVhdGVIb29rKFwibVwiIC8qIExpZmVjeWNsZUhvb2tzLk1PVU5URUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVwZGF0ZSA9IGNyZWF0ZUhvb2soXCJidVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VUERBVEUgKi8pO1xyXG5jb25zdCBvblVwZGF0ZWQgPSBjcmVhdGVIb29rKFwidVwiIC8qIExpZmVjeWNsZUhvb2tzLlVQREFURUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVubW91bnQgPSBjcmVhdGVIb29rKFwiYnVtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VOTU9VTlQgKi8pO1xyXG5jb25zdCBvblVubW91bnRlZCA9IGNyZWF0ZUhvb2soXCJ1bVwiIC8qIExpZmVjeWNsZUhvb2tzLlVOTU9VTlRFRCAqLyk7XHJcbmNvbnN0IG9uU2VydmVyUHJlZmV0Y2ggPSBjcmVhdGVIb29rKFwic3BcIiAvKiBMaWZlY3ljbGVIb29rcy5TRVJWRVJfUFJFRkVUQ0ggKi8pO1xyXG5jb25zdCBvblJlbmRlclRyaWdnZXJlZCA9IGNyZWF0ZUhvb2soXCJydGdcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJJR0dFUkVEICovKTtcclxuY29uc3Qgb25SZW5kZXJUcmFja2VkID0gY3JlYXRlSG9vayhcInJ0Y1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUkFDS0VEICovKTtcclxuZnVuY3Rpb24gb25FcnJvckNhcHR1cmVkKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgaW5qZWN0SG9vayhcImVjXCIgLyogTGlmZWN5Y2xlSG9va3MuRVJST1JfQ0FQVFVSRUQgKi8sIGhvb2ssIHRhcmdldCk7XHJcbn1cblxuLyoqXHJcblJ1bnRpbWUgaGVscGVyIGZvciBhcHBseWluZyBkaXJlY3RpdmVzIHRvIGEgdm5vZGUuIEV4YW1wbGUgdXNhZ2U6XHJcblxuY29uc3QgY29tcCA9IHJlc29sdmVDb21wb25lbnQoJ2NvbXAnKVxyXG5jb25zdCBmb28gPSByZXNvbHZlRGlyZWN0aXZlKCdmb28nKVxyXG5jb25zdCBiYXIgPSByZXNvbHZlRGlyZWN0aXZlKCdiYXInKVxyXG5cbnJldHVybiB3aXRoRGlyZWN0aXZlcyhoKGNvbXApLCBbXHJcbiAgW2ZvbywgdGhpcy54XSxcclxuICBbYmFyLCB0aGlzLnldXHJcbl0pXHJcbiovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgd2FybignRG8gbm90IHVzZSBidWlsdC1pbiBkaXJlY3RpdmUgaWRzIGFzIGN1c3RvbSBkaXJlY3RpdmUgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQWRkcyBkaXJlY3RpdmVzIHRvIGEgVk5vZGUuXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoRGlyZWN0aXZlcyh2bm9kZSwgZGlyZWN0aXZlcykge1xyXG4gICAgY29uc3QgaW50ZXJuYWxJbnN0YW5jZSA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlID09PSBudWxsKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHdpdGhEaXJlY3RpdmVzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHJlbmRlciBmdW5jdGlvbnMuYCk7XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRFeHBvc2VQcm94eShpbnRlcm5hbEluc3RhbmNlKSB8fFxyXG4gICAgICAgIGludGVybmFsSW5zdGFuY2UucHJveHk7XHJcbiAgICBjb25zdCBiaW5kaW5ncyA9IHZub2RlLmRpcnMgfHwgKHZub2RlLmRpcnMgPSBbXSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpcmVjdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgW2RpciwgdmFsdWUsIGFyZywgbW9kaWZpZXJzID0gRU1QVFlfT0JKXSA9IGRpcmVjdGl2ZXNbaV07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oZGlyKSkge1xyXG4gICAgICAgICAgICBkaXIgPSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudGVkOiBkaXIsXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkOiBkaXJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5kZWVwKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGluZ3MucHVzaCh7XHJcbiAgICAgICAgICAgIGRpcixcclxuICAgICAgICAgICAgaW5zdGFuY2UsXHJcbiAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZTogdm9pZCAwLFxyXG4gICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgIG1vZGlmaWVyc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbmZ1bmN0aW9uIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIHByZXZWTm9kZSwgaW5zdGFuY2UsIG5hbWUpIHtcclxuICAgIGNvbnN0IGJpbmRpbmdzID0gdm5vZGUuZGlycztcclxuICAgIGNvbnN0IG9sZEJpbmRpbmdzID0gcHJldlZOb2RlICYmIHByZXZWTm9kZS5kaXJzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nc1tpXTtcclxuICAgICAgICBpZiAob2xkQmluZGluZ3MpIHtcclxuICAgICAgICAgICAgYmluZGluZy5vbGRWYWx1ZSA9IG9sZEJpbmRpbmdzW2ldLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaG9vayA9IGJpbmRpbmcuZGlyW25hbWVdO1xyXG4gICAgICAgIGlmIChob29rKSB7XHJcbiAgICAgICAgICAgIC8vIGRpc2FibGUgdHJhY2tpbmcgaW5zaWRlIGFsbCBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAgICAgLy8gc2luY2UgdGhleSBjYW4gcG90ZW50aWFsbHkgYmUgY2FsbGVkIGluc2lkZSBlZmZlY3RzLlxyXG4gICAgICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIGluc3RhbmNlLCA4IC8qIEVycm9yQ29kZXMuRElSRUNUSVZFX0hPT0sgKi8sIFtcclxuICAgICAgICAgICAgICAgIHZub2RlLmVsLFxyXG4gICAgICAgICAgICAgICAgYmluZGluZyxcclxuICAgICAgICAgICAgICAgIHZub2RlLFxyXG4gICAgICAgICAgICAgICAgcHJldlZOb2RlXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IENPTVBPTkVOVFMgPSAnY29tcG9uZW50cyc7XHJcbmNvbnN0IERJUkVDVElWRVMgPSAnZGlyZWN0aXZlcyc7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudChuYW1lLCBtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgIHJldHVybiByZXNvbHZlQXNzZXQoQ09NUE9ORU5UUywgbmFtZSwgdHJ1ZSwgbWF5YmVTZWxmUmVmZXJlbmNlKSB8fCBuYW1lO1xyXG59XHJcbmNvbnN0IE5VTExfRFlOQU1JQ19DT01QT05FTlQgPSBTeW1ib2woKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY0NvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIGlmIChpc1N0cmluZyhjb21wb25lbnQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBjb21wb25lbnQsIGZhbHNlKSB8fCBjb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpbnZhbGlkIHR5cGVzIHdpbGwgZmFsbHRocm91Z2ggdG8gY3JlYXRlVk5vZGUgYW5kIHJhaXNlIHdhcm5pbmdcclxuICAgICAgICByZXR1cm4gKGNvbXBvbmVudCB8fCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVEaXJlY3RpdmUobmFtZSkge1xyXG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChESVJFQ1RJVkVTLCBuYW1lKTtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQodHlwZSwgbmFtZSwgd2Fybk1pc3NpbmcgPSB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfHwgY3VycmVudEluc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgICAgICAvLyBleHBsaWNpdCBzZWxmIG5hbWUgaGFzIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgICAgICBpZiAodHlwZSA9PT0gQ09NUE9ORU5UUykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxmTmFtZSA9IGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50LCBmYWxzZSAvKiBkbyBub3QgaW5jbHVkZSBpbmZlcnJlZCBuYW1lIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvZGUgKi8pO1xyXG4gICAgICAgICAgICBpZiAoc2VsZk5hbWUgJiZcclxuICAgICAgICAgICAgICAgIChzZWxmTmFtZSA9PT0gbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGZOYW1lID09PSBjYW1lbGl6ZShuYW1lKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGZOYW1lID09PSBjYXBpdGFsaXplKGNhbWVsaXplKG5hbWUpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzID0gXHJcbiAgICAgICAgLy8gbG9jYWwgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgLy8gY2hlY2sgaW5zdGFuY2VbdHlwZV0gZmlyc3Qgd2hpY2ggaXMgcmVzb2x2ZWQgZm9yIG9wdGlvbnMgQVBJXHJcbiAgICAgICAgcmVzb2x2ZShpbnN0YW5jZVt0eXBlXSB8fCBDb21wb25lbnRbdHlwZV0sIG5hbWUpIHx8XHJcbiAgICAgICAgICAgIC8vIGdsb2JhbCByZWdpc3RyYXRpb25cclxuICAgICAgICAgICAgcmVzb2x2ZShpbnN0YW5jZS5hcHBDb250ZXh0W3R5cGVdLCBuYW1lKTtcclxuICAgICAgICBpZiAoIXJlcyAmJiBtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgLy8gZmFsbGJhY2sgdG8gaW1wbGljaXQgc2VsZi1yZWZlcmVuY2VcclxuICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuTWlzc2luZyAmJiAhcmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdHlwZSA9PT0gQ09NUE9ORU5UU1xyXG4gICAgICAgICAgICAgICAgPyBgXFxuSWYgdGhpcyBpcyBhIG5hdGl2ZSBjdXN0b20gZWxlbWVudCwgbWFrZSBzdXJlIHRvIGV4Y2x1ZGUgaXQgZnJvbSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgY29tcG9uZW50IHJlc29sdXRpb24gdmlhIGNvbXBpbGVyT3B0aW9ucy5pc0N1c3RvbUVsZW1lbnQuYFxyXG4gICAgICAgICAgICAgICAgOiBgYDtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIHJlc29sdmUgJHt0eXBlLnNsaWNlKDAsIC0xKX06ICR7bmFtZX0ke2V4dHJhfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgcmVzb2x2ZSR7Y2FwaXRhbGl6ZSh0eXBlLnNsaWNlKDAsIC0xKSl9IGAgK1xyXG4gICAgICAgICAgICBgY2FuIG9ubHkgYmUgdXNlZCBpbiByZW5kZXIoKSBvciBzZXR1cCgpLmApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmUocmVnaXN0cnksIG5hbWUpIHtcclxuICAgIHJldHVybiAocmVnaXN0cnkgJiZcclxuICAgICAgICAocmVnaXN0cnlbbmFtZV0gfHxcclxuICAgICAgICAgICAgcmVnaXN0cnlbY2FtZWxpemUobmFtZSldIHx8XHJcbiAgICAgICAgICAgIHJlZ2lzdHJ5W2NhcGl0YWxpemUoY2FtZWxpemUobmFtZSkpXSkpO1xyXG59XG5cbi8qKlxyXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb25cclxuICovXHJcbmZ1bmN0aW9uIHJlbmRlckxpc3Qoc291cmNlLCByZW5kZXJJdGVtLCBjYWNoZSwgaW5kZXgpIHtcclxuICAgIGxldCByZXQ7XHJcbiAgICBjb25zdCBjYWNoZWQgPSAoY2FjaGUgJiYgY2FjaGVbaW5kZXhdKTtcclxuICAgIGlmIChpc0FycmF5KHNvdXJjZSkgfHwgaXNTdHJpbmcoc291cmNlKSkge1xyXG4gICAgICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHNvdXJjZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShzb3VyY2VbaV0sIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFOdW1iZXIuaXNJbnRlZ2VyKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgd2FybihgVGhlIHYtZm9yIHJhbmdlIGV4cGVjdCBhbiBpbnRlZ2VyIHZhbHVlIGJ1dCBnb3QgJHtzb3VyY2V9LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXQgPSBuZXcgQXJyYXkoc291cmNlKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oaSArIDEsIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xyXG4gICAgICAgIGlmIChzb3VyY2VbU3ltYm9sLml0ZXJhdG9yXSkge1xyXG4gICAgICAgICAgICByZXQgPSBBcnJheS5mcm9tKHNvdXJjZSwgKGl0ZW0sIGkpID0+IHJlbmRlckl0ZW0oaXRlbSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcclxuICAgICAgICAgICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcclxuICAgICAgICAgICAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oc291cmNlW2tleV0sIGtleSwgaSwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXQgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChjYWNoZSkge1xyXG4gICAgICAgIGNhY2hlW2luZGV4XSA9IHJldDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLyoqXHJcbiAqIENvbXBpbGVyIHJ1bnRpbWUgaGVscGVyIGZvciBjcmVhdGluZyBkeW5hbWljIHNsb3RzIG9iamVjdFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlU2xvdHMoc2xvdHMsIGR5bmFtaWNTbG90cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkeW5hbWljU2xvdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBzbG90ID0gZHluYW1pY1Nsb3RzW2ldO1xyXG4gICAgICAgIC8vIGFycmF5IG9mIGR5bmFtaWMgc2xvdCBnZW5lcmF0ZWQgYnkgPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCIgI1suLi5dPlxyXG4gICAgICAgIGlmIChpc0FycmF5KHNsb3QpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2xvdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgc2xvdHNbc2xvdFtqXS5uYW1lXSA9IHNsb3Rbal0uZm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2xvdCkge1xyXG4gICAgICAgICAgICAvLyBjb25kaXRpb25hbCBzaW5nbGUgc2xvdCBnZW5lcmF0ZWQgYnkgPHRlbXBsYXRlIHYtaWY9XCIuLi5cIiAjZm9vPlxyXG4gICAgICAgICAgICBzbG90c1tzbG90Lm5hbWVdID0gc2xvdC5rZXlcclxuICAgICAgICAgICAgICAgID8gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBzbG90LmZuKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5rZXkgPSBzbG90LmtleTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgOiBzbG90LmZuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzbG90cztcclxufVxuXG4vKipcclxuICogQ29tcGlsZXIgcnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBgPHNsb3QvPmBcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlbmRlclNsb3Qoc2xvdHMsIG5hbWUsIHByb3BzID0ge30sIFxyXG4vLyB0aGlzIGlzIG5vdCBhIHVzZXItZmFjaW5nIGZ1bmN0aW9uLCBzbyB0aGUgZmFsbGJhY2sgaXMgYWx3YXlzIGdlbmVyYXRlZCBieVxyXG4vLyB0aGUgY29tcGlsZXIgYW5kIGd1YXJhbnRlZWQgdG8gYmUgYSBmdW5jdGlvbiByZXR1cm5pbmcgYW4gYXJyYXlcclxuZmFsbGJhY2ssIG5vU2xvdHRlZCkge1xyXG4gICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5pc0NFIHx8XHJcbiAgICAgICAgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5wYXJlbnQgJiZcclxuICAgICAgICAgICAgaXNBc3luY1dyYXBwZXIoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudCkgJiZcclxuICAgICAgICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudC5pc0NFKSkge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSgnc2xvdCcsIG5hbWUgPT09ICdkZWZhdWx0JyA/IG51bGwgOiB7IG5hbWUgfSwgZmFsbGJhY2sgJiYgZmFsbGJhY2soKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgc2xvdCA9IHNsb3RzW25hbWVdO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzbG90ICYmIHNsb3QubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHdhcm4oYFNTUi1vcHRpbWl6ZWQgc2xvdCBmdW5jdGlvbiBkZXRlY3RlZCBpbiBhIG5vbi1TU1Itb3B0aW1pemVkIHJlbmRlciBgICtcclxuICAgICAgICAgICAgYGZ1bmN0aW9uLiBZb3UgbmVlZCB0byBtYXJrIHRoaXMgY29tcG9uZW50IHdpdGggJGR5bmFtaWMtc2xvdHMgaW4gdGhlIGAgK1xyXG4gICAgICAgICAgICBgcGFyZW50IHRlbXBsYXRlLmApO1xyXG4gICAgICAgIHNsb3QgPSAoKSA9PiBbXTtcclxuICAgIH1cclxuICAgIC8vIGEgY29tcGlsZWQgc2xvdCBkaXNhYmxlcyBibG9jayB0cmFja2luZyBieSBkZWZhdWx0IHRvIGF2b2lkIG1hbnVhbFxyXG4gICAgLy8gaW52b2NhdGlvbiBpbnRlcmZlcmluZyB3aXRoIHRlbXBsYXRlLWJhc2VkIGJsb2NrIHRyYWNraW5nLCBidXQgaW5cclxuICAgIC8vIGByZW5kZXJTbG90YCB3ZSBjYW4gYmUgc3VyZSB0aGF0IGl0J3MgdGVtcGxhdGUtYmFzZWQgc28gd2UgY2FuIGZvcmNlXHJcbiAgICAvLyBlbmFibGUgaXQuXHJcbiAgICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XHJcbiAgICAgICAgc2xvdC5fZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgb3BlbkJsb2NrKCk7XHJcbiAgICBjb25zdCB2YWxpZFNsb3RDb250ZW50ID0gc2xvdCAmJiBlbnN1cmVWYWxpZFZOb2RlKHNsb3QocHJvcHMpKTtcclxuICAgIGNvbnN0IHJlbmRlcmVkID0gY3JlYXRlQmxvY2soRnJhZ21lbnQsIHtcclxuICAgICAgICBrZXk6IHByb3BzLmtleSB8fFxyXG4gICAgICAgICAgICAvLyBzbG90IGNvbnRlbnQgYXJyYXkgb2YgYSBkeW5hbWljIGNvbmRpdGlvbmFsIHNsb3QgbWF5IGhhdmUgYSBicmFuY2hcclxuICAgICAgICAgICAgLy8ga2V5IGF0dGFjaGVkIGluIHRoZSBgY3JlYXRlU2xvdHNgIGhlbHBlciwgcmVzcGVjdCB0aGF0XHJcbiAgICAgICAgICAgICh2YWxpZFNsb3RDb250ZW50ICYmIHZhbGlkU2xvdENvbnRlbnQua2V5KSB8fFxyXG4gICAgICAgICAgICBgXyR7bmFtZX1gXHJcbiAgICB9LCB2YWxpZFNsb3RDb250ZW50IHx8IChmYWxsYmFjayA/IGZhbGxiYWNrKCkgOiBbXSksIHZhbGlkU2xvdENvbnRlbnQgJiYgc2xvdHMuXyA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovXHJcbiAgICAgICAgPyA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL1xyXG4gICAgICAgIDogLTIgLyogUGF0Y2hGbGFncy5CQUlMICovKTtcclxuICAgIGlmICghbm9TbG90dGVkICYmIHJlbmRlcmVkLnNjb3BlSWQpIHtcclxuICAgICAgICByZW5kZXJlZC5zbG90U2NvcGVJZHMgPSBbcmVuZGVyZWQuc2NvcGVJZCArICctcyddO1xyXG4gICAgfVxyXG4gICAgaWYgKHNsb3QgJiYgc2xvdC5fYykge1xyXG4gICAgICAgIHNsb3QuX2QgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlbmRlcmVkO1xyXG59XHJcbmZ1bmN0aW9uIGVuc3VyZVZhbGlkVk5vZGUodm5vZGVzKSB7XHJcbiAgICByZXR1cm4gdm5vZGVzLnNvbWUoY2hpbGQgPT4ge1xyXG4gICAgICAgIGlmICghaXNWTm9kZShjaGlsZCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSBDb21tZW50KVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IEZyYWdtZW50ICYmXHJcbiAgICAgICAgICAgICFlbnN1cmVWYWxpZFZOb2RlKGNoaWxkLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSlcclxuICAgICAgICA/IHZub2Rlc1xyXG4gICAgICAgIDogbnVsbDtcclxufVxuXG4vKipcclxuICogRm9yIHByZWZpeGluZyBrZXlzIGluIHYtb249XCJvYmpcIiB3aXRoIFwib25cIlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gdG9IYW5kbGVycyhvYmosIHByZXNlcnZlQ2FzZUlmTmVjZXNzYXJ5KSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB3YXJuKGB2LW9uIHdpdGggbm8gYXJndW1lbnQgZXhwZWN0cyBhbiBvYmplY3QgdmFsdWUuYCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG4gICAgICAgIHJldFtwcmVzZXJ2ZUNhc2VJZk5lY2Vzc2FyeSAmJiAvW0EtWl0vLnRlc3Qoa2V5KVxyXG4gICAgICAgICAgICA/IGBvbjoke2tleX1gXHJcbiAgICAgICAgICAgIDogdG9IYW5kbGVyS2V5KGtleSldID0gb2JqW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8qKlxyXG4gKiAjMjQzNyBJbiBWdWUgMywgZnVuY3Rpb25hbCBjb21wb25lbnRzIGRvIG5vdCBoYXZlIGEgcHVibGljIGluc3RhbmNlIHByb3h5IGJ1dFxyXG4gKiB0aGV5IGV4aXN0IGluIHRoZSBpbnRlcm5hbCBwYXJlbnQgY2hhaW4uIEZvciBjb2RlIHRoYXQgcmVsaWVzIG9uIHRyYXZlcnNpbmdcclxuICogcHVibGljICRwYXJlbnQgY2hhaW5zLCBza2lwIGZ1bmN0aW9uYWwgb25lcyBhbmQgZ28gdG8gdGhlIHBhcmVudCBpbnN0ZWFkLlxyXG4gKi9cclxuY29uc3QgZ2V0UHVibGljSW5zdGFuY2UgPSAoaSkgPT4ge1xyXG4gICAgaWYgKCFpKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGlzU3RhdGVmdWxDb21wb25lbnQoaSkpXHJcbiAgICAgICAgcmV0dXJuIGdldEV4cG9zZVByb3h5KGkpIHx8IGkucHJveHk7XHJcbiAgICByZXR1cm4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpO1xyXG59O1xyXG5jb25zdCBwdWJsaWNQcm9wZXJ0aWVzTWFwID0gXHJcbi8vIE1vdmUgUFVSRSBtYXJrZXIgdG8gbmV3IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21waWxlciBkaXNjYXJkaW5nIGl0XHJcbi8vIGR1ZSB0byB0eXBlIGFubm90YXRpb25cclxuLyojX19QVVJFX18qLyBleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwge1xyXG4gICAgJDogaSA9PiBpLFxyXG4gICAgJGVsOiBpID0+IGkudm5vZGUuZWwsXHJcbiAgICAkZGF0YTogaSA9PiBpLmRhdGEsXHJcbiAgICAkcHJvcHM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnByb3BzKSA6IGkucHJvcHMpLFxyXG4gICAgJGF0dHJzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5hdHRycykgOiBpLmF0dHJzKSxcclxuICAgICRzbG90czogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkuc2xvdHMpIDogaS5zbG90cyksXHJcbiAgICAkcmVmczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkucmVmcykgOiBpLnJlZnMpLFxyXG4gICAgJHBhcmVudDogaSA9PiBnZXRQdWJsaWNJbnN0YW5jZShpLnBhcmVudCksXHJcbiAgICAkcm9vdDogaSA9PiBnZXRQdWJsaWNJbnN0YW5jZShpLnJvb3QpLFxyXG4gICAgJGVtaXQ6IGkgPT4gaS5lbWl0LFxyXG4gICAgJG9wdGlvbnM6IGkgPT4gKF9fVlVFX09QVElPTlNfQVBJX18gPyByZXNvbHZlTWVyZ2VkT3B0aW9ucyhpKSA6IGkudHlwZSksXHJcbiAgICAkZm9yY2VVcGRhdGU6IGkgPT4gaS5mIHx8IChpLmYgPSAoKSA9PiBxdWV1ZUpvYihpLnVwZGF0ZSkpLFxyXG4gICAgJG5leHRUaWNrOiBpID0+IGkubiB8fCAoaS5uID0gbmV4dFRpY2suYmluZChpLnByb3h5KSksXHJcbiAgICAkd2F0Y2g6IGkgPT4gKF9fVlVFX09QVElPTlNfQVBJX18gPyBpbnN0YW5jZVdhdGNoLmJpbmQoaSkgOiBOT09QKVxyXG59KTtcclxuY29uc3QgaXNSZXNlcnZlZFByZWZpeCA9IChrZXkpID0+IGtleSA9PT0gJ18nIHx8IGtleSA9PT0gJyQnO1xyXG5jb25zdCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMgPSB7XHJcbiAgICBnZXQoeyBfOiBpbnN0YW5jZSB9LCBrZXkpIHtcclxuICAgICAgICBjb25zdCB7IGN0eCwgc2V0dXBTdGF0ZSwgZGF0YSwgcHJvcHMsIGFjY2Vzc0NhY2hlLCB0eXBlLCBhcHBDb250ZXh0IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAvLyBmb3IgaW50ZXJuYWwgZm9ybWF0dGVycyB0byBrbm93IHRoYXQgdGhpcyBpcyBhIFZ1ZSBpbnN0YW5jZVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5ID09PSAnX19pc1Z1ZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHByaW9yaXRpemUgPHNjcmlwdCBzZXR1cD4gYmluZGluZ3MgZHVyaW5nIGRldi5cclxuICAgICAgICAvLyB0aGlzIGFsbG93cyBldmVuIHByb3BlcnRpZXMgdGhhdCBzdGFydCB3aXRoIF8gb3IgJCB0byBiZSB1c2VkIC0gc28gdGhhdFxyXG4gICAgICAgIC8vIGl0IGFsaWducyB3aXRoIHRoZSBwcm9kdWN0aW9uIGJlaGF2aW9yIHdoZXJlIHRoZSByZW5kZXIgZm4gaXMgaW5saW5lZCBhbmRcclxuICAgICAgICAvLyBpbmRlZWQgaGFzIGFjY2VzcyB0byBhbGwgZGVjbGFyZWQgdmFyaWFibGVzLlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmXHJcbiAgICAgICAgICAgIHNldHVwU3RhdGUuX19pc1NjcmlwdFNldHVwICYmXHJcbiAgICAgICAgICAgIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGRhdGEgLyBwcm9wcyAvIGN0eFxyXG4gICAgICAgIC8vIFRoaXMgZ2V0dGVyIGdldHMgY2FsbGVkIGZvciBldmVyeSBwcm9wZXJ0eSBhY2Nlc3Mgb24gdGhlIHJlbmRlciBjb250ZXh0XHJcbiAgICAgICAgLy8gZHVyaW5nIHJlbmRlciBhbmQgaXMgYSBtYWpvciBob3RzcG90LiBUaGUgbW9zdCBleHBlbnNpdmUgcGFydCBvZiB0aGlzXHJcbiAgICAgICAgLy8gaXMgdGhlIG11bHRpcGxlIGhhc093bigpIGNhbGxzLiBJdCdzIG11Y2ggZmFzdGVyIHRvIGRvIGEgc2ltcGxlIHByb3BlcnR5XHJcbiAgICAgICAgLy8gYWNjZXNzIG9uIGEgcGxhaW4gb2JqZWN0LCBzbyB3ZSB1c2UgYW4gYWNjZXNzQ2FjaGUgb2JqZWN0ICh3aXRoIG51bGxcclxuICAgICAgICAvLyBwcm90b3R5cGUpIHRvIG1lbW9pemUgd2hhdCBhY2Nlc3MgdHlwZSBhIGtleSBjb3JyZXNwb25kcyB0by5cclxuICAgICAgICBsZXQgbm9ybWFsaXplZFByb3BzO1xyXG4gICAgICAgIGlmIChrZXlbMF0gIT09ICckJykge1xyXG4gICAgICAgICAgICBjb25zdCBuID0gYWNjZXNzQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgaWYgKG4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxIC8qIEFjY2Vzc1R5cGVzLlNFVFVQICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dXBTdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBBY2Nlc3NUeXBlcy5EQVRBICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3R4W2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzIC8qIEFjY2Vzc1R5cGVzLlBST1BTICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0OiBqdXN0IGZhbGx0aHJvdWdoXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMSAvKiBBY2Nlc3NUeXBlcy5TRVRVUCAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMiAvKiBBY2Nlc3NUeXBlcy5EQVRBICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgLy8gb25seSBjYWNoZSBvdGhlciBwcm9wZXJ0aWVzIHdoZW4gaW5zdGFuY2UgaGFzIGRlY2xhcmVkICh0aHVzIHN0YWJsZSlcclxuICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgKG5vcm1hbGl6ZWRQcm9wcyA9IGluc3RhbmNlLnByb3BzT3B0aW9uc1swXSkgJiZcclxuICAgICAgICAgICAgICAgIGhhc093bihub3JtYWxpemVkUHJvcHMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAzIC8qIEFjY2Vzc1R5cGVzLlBST1BTICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3R4ICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGN0eCwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDQgLyogQWNjZXNzVHlwZXMuQ09OVEVYVCAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghX19WVUVfT1BUSU9OU19BUElfXyB8fCBzaG91bGRDYWNoZUFjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDAgLyogQWNjZXNzVHlwZXMuT1RIRVIgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHVibGljR2V0dGVyID0gcHVibGljUHJvcGVydGllc01hcFtrZXldO1xyXG4gICAgICAgIGxldCBjc3NNb2R1bGUsIGdsb2JhbFByb3BlcnRpZXM7XHJcbiAgICAgICAgLy8gcHVibGljICR4eHggcHJvcGVydGllc1xyXG4gICAgICAgIGlmIChwdWJsaWNHZXR0ZXIpIHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJyRhdHRycycpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHVibGljR2V0dGVyKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgLy8gY3NzIG1vZHVsZSAoaW5qZWN0ZWQgYnkgdnVlLWxvYWRlcilcclxuICAgICAgICAoY3NzTW9kdWxlID0gdHlwZS5fX2Nzc01vZHVsZXMpICYmXHJcbiAgICAgICAgICAgIChjc3NNb2R1bGUgPSBjc3NNb2R1bGVba2V5XSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNzc01vZHVsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY3R4ICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGN0eCwga2V5KSkge1xyXG4gICAgICAgICAgICAvLyB1c2VyIG1heSBzZXQgY3VzdG9tIHByb3BlcnRpZXMgdG8gYHRoaXNgIHRoYXQgc3RhcnQgd2l0aCBgJGBcclxuICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDQgLyogQWNjZXNzVHlwZXMuQ09OVEVYVCAqLztcclxuICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAvLyBnbG9iYWwgcHJvcGVydGllc1xyXG4gICAgICAgICgoZ2xvYmFsUHJvcGVydGllcyA9IGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpLFxyXG4gICAgICAgICAgICBoYXNPd24oZ2xvYmFsUHJvcGVydGllcywga2V5KSkpIHtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFByb3BlcnRpZXNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlICYmXHJcbiAgICAgICAgICAgICghaXNTdHJpbmcoa2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgLy8gIzEwOTEgYXZvaWQgaW50ZXJuYWwgaXNSZWYvaXNWTm9kZSBjaGVja3Mgb24gY29tcG9uZW50IGluc3RhbmNlIGxlYWRpbmdcclxuICAgICAgICAgICAgICAgIC8vIHRvIGluZmluaXRlIHdhcm5pbmcgbG9vcFxyXG4gICAgICAgICAgICAgICAga2V5LmluZGV4T2YoJ19fdicpICE9PSAwKSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSAmJiBoYXNPd24oZGF0YSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSBtdXN0IGJlIGFjY2Vzc2VkIHZpYSAkZGF0YSBiZWNhdXNlIGl0IHN0YXJ0cyB3aXRoIGEgcmVzZXJ2ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGNoYXJhY3RlciAoXCIkXCIgb3IgXCJfXCIpIGFuZCBpcyBub3QgcHJveGllZCBvbiB0aGUgcmVuZGVyIGNvbnRleHQuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UgPT09IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSB3YXMgYWNjZXNzZWQgZHVyaW5nIHJlbmRlciBgICtcclxuICAgICAgICAgICAgICAgICAgICBgYnV0IGlzIG5vdCBkZWZpbmVkIG9uIGluc3RhbmNlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHNldCh7IF86IGluc3RhbmNlIH0sIGtleSwgdmFsdWUpIHtcclxuICAgICAgICBjb25zdCB7IGRhdGEsIHNldHVwU3RhdGUsIGN0eCB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgaWYgKHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkge1xyXG4gICAgICAgICAgICBzZXR1cFN0YXRlW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhhc093bihpbnN0YW5jZS5wcm9wcywga2V5KSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gbXV0YXRlIHByb3AgXCIke2tleX1cIi4gUHJvcHMgYXJlIHJlYWRvbmx5LmAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5WzBdID09PSAnJCcgJiYga2V5LnNsaWNlKDEpIGluIGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBtdXRhdGUgcHVibGljIHByb3BlcnR5IFwiJHtrZXl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQcm9wZXJ0aWVzIHN0YXJ0aW5nIHdpdGggJCBhcmUgcmVzZXJ2ZWQgYW5kIHJlYWRvbmx5LmAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgaW4gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3R4W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBoYXMoeyBfOiB7IGRhdGEsIHNldHVwU3RhdGUsIGFjY2Vzc0NhY2hlLCBjdHgsIGFwcENvbnRleHQsIHByb3BzT3B0aW9ucyB9IH0sIGtleSkge1xyXG4gICAgICAgIGxldCBub3JtYWxpemVkUHJvcHM7XHJcbiAgICAgICAgcmV0dXJuICghIWFjY2Vzc0NhY2hlW2tleV0gfHxcclxuICAgICAgICAgICAgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSkgfHxcclxuICAgICAgICAgICAgKHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkgfHxcclxuICAgICAgICAgICAgKChub3JtYWxpemVkUHJvcHMgPSBwcm9wc09wdGlvbnNbMF0pICYmIGhhc093bihub3JtYWxpemVkUHJvcHMsIGtleSkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihjdHgsIGtleSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKHB1YmxpY1Byb3BlcnRpZXNNYXAsIGtleSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsIGtleSkpO1xyXG4gICAgfSxcclxuICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaW52YWxpZGF0ZSBrZXkgY2FjaGUgb2YgYSBnZXR0ZXIgYmFzZWQgcHJvcGVydHkgIzU0MTdcclxuICAgICAgICAgICAgdGFyZ2V0Ll8uYWNjZXNzQ2FjaGVba2V5XSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhhc093bihkZXNjcmlwdG9yLCAndmFsdWUnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldCh0YXJnZXQsIGtleSwgZGVzY3JpcHRvci52YWx1ZSwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcclxuICAgIH1cclxufTtcclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZmFsc2UpIHtcclxuICAgIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5vd25LZXlzID0gKHRhcmdldCkgPT4ge1xyXG4gICAgICAgIHdhcm4oYEF2b2lkIGFwcCBsb2dpYyB0aGF0IHJlbGllcyBvbiBlbnVtZXJhdGluZyBrZXlzIG9uIGEgY29tcG9uZW50IGluc3RhbmNlLiBgICtcclxuICAgICAgICAgICAgYFRoZSBrZXlzIHdpbGwgYmUgZW1wdHkgaW4gcHJvZHVjdGlvbiBtb2RlIHRvIGF2b2lkIHBlcmZvcm1hbmNlIG92ZXJoZWFkLmApO1xyXG4gICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgUnVudGltZUNvbXBpbGVkUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycywge1xyXG4gICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgLy8gZmFzdCBwYXRoIGZvciB1bnNjb3BhYmxlcyB3aGVuIHVzaW5nIGB3aXRoYCBibG9ja1xyXG4gICAgICAgIGlmIChrZXkgPT09IFN5bWJvbC51bnNjb3BhYmxlcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMuZ2V0KHRhcmdldCwga2V5LCB0YXJnZXQpO1xyXG4gICAgfSxcclxuICAgIGhhcyhfLCBrZXkpIHtcclxuICAgICAgICBjb25zdCBoYXMgPSBrZXlbMF0gIT09ICdfJyAmJiAhaXNHbG9iYWxseVdoaXRlbGlzdGVkKGtleSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGFzICYmIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5oYXMoXywga2V5KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHNob3VsZCBub3Qgc3RhcnQgd2l0aCBfIHdoaWNoIGlzIGEgcmVzZXJ2ZWQgcHJlZml4IGZvciBWdWUgaW50ZXJuYWxzLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGFzO1xyXG4gICAgfVxyXG59KTtcclxuLy8gZGV2IG9ubHlcclxuLy8gSW4gZGV2IG1vZGUsIHRoZSBwcm94eSB0YXJnZXQgZXhwb3NlcyB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHNlZW4gb24gYHRoaXNgXHJcbi8vIGZvciBlYXNpZXIgY29uc29sZSBpbnNwZWN0aW9uLiBJbiBwcm9kIG1vZGUgaXQgd2lsbCBiZSBhbiBlbXB0eSBvYmplY3Qgc29cclxuLy8gdGhlc2UgcHJvcGVydGllcyBkZWZpbml0aW9ucyBjYW4gYmUgc2tpcHBlZC5cclxuZnVuY3Rpb24gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0ge307XHJcbiAgICAvLyBleHBvc2UgaW50ZXJuYWwgaW5zdGFuY2UgZm9yIHByb3h5IGhhbmRsZXJzXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX2AsIHtcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZVxyXG4gICAgfSk7XHJcbiAgICAvLyBleHBvc2UgcHVibGljIHByb3BlcnRpZXNcclxuICAgIE9iamVjdC5rZXlzKHB1YmxpY1Byb3BlcnRpZXNNYXApLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV0oaW5zdGFuY2UpLFxyXG4gICAgICAgICAgICAvLyBpbnRlcmNlcHRlZCBieSB0aGUgcHJveHkgc28gbm8gbmVlZCBmb3IgaW1wbGVtZW50YXRpb24sXHJcbiAgICAgICAgICAgIC8vIGJ1dCBuZWVkZWQgdG8gcHJldmVudCBzZXQgZXJyb3JzXHJcbiAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGFyZ2V0O1xyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGN0eCwgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSB9ID0gaW5zdGFuY2U7XHJcbiAgICBpZiAocHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcHNPcHRpb25zKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gaW5zdGFuY2UucHJvcHNba2V5XSxcclxuICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBleHBvc2VTZXR1cFN0YXRlT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGN0eCwgc2V0dXBTdGF0ZSB9ID0gaW5zdGFuY2U7XHJcbiAgICBPYmplY3Qua2V5cyh0b1JhdyhzZXR1cFN0YXRlKSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmICghc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXApIHtcclxuICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihgc2V0dXAoKSByZXR1cm4gcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSBzaG91bGQgbm90IHN0YXJ0IHdpdGggXCIkXCIgb3IgXCJfXCIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYHdoaWNoIGFyZSByZXNlcnZlZCBwcmVmaXhlcyBmb3IgVnVlIGludGVybmFscy5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHNldHVwU3RhdGVba2V5XSxcclxuICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxuXG5mdW5jdGlvbiBjcmVhdGVEdXBsaWNhdGVDaGVja2VyKCkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICh0eXBlLCBrZXkpID0+IHtcclxuICAgICAgICBpZiAoY2FjaGVba2V5XSkge1xyXG4gICAgICAgICAgICB3YXJuKGAke3R5cGV9IHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluICR7Y2FjaGVba2V5XX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjYWNoZVtrZXldID0gdHlwZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbmxldCBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XHJcbmZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhpbnN0YW5jZSkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKTtcclxuICAgIGNvbnN0IHB1YmxpY1RoaXMgPSBpbnN0YW5jZS5wcm94eTtcclxuICAgIGNvbnN0IGN0eCA9IGluc3RhbmNlLmN0eDtcclxuICAgIC8vIGRvIG5vdCBjYWNoZSBwcm9wZXJ0eSBhY2Nlc3Mgb24gcHVibGljIHByb3h5IGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvblxyXG4gICAgc2hvdWxkQ2FjaGVBY2Nlc3MgPSBmYWxzZTtcclxuICAgIC8vIGNhbGwgYmVmb3JlQ3JlYXRlIGZpcnN0IGJlZm9yZSBhY2Nlc3Npbmcgb3RoZXIgb3B0aW9ucyBzaW5jZVxyXG4gICAgLy8gdGhlIGhvb2sgbWF5IG11dGF0ZSByZXNvbHZlZCBvcHRpb25zICgjMjc5MSlcclxuICAgIGlmIChvcHRpb25zLmJlZm9yZUNyZWF0ZSkge1xyXG4gICAgICAgIGNhbGxIb29rKG9wdGlvbnMuYmVmb3JlQ3JlYXRlLCBpbnN0YW5jZSwgXCJiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9DUkVBVEUgKi8pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBcclxuICAgIC8vIHN0YXRlXHJcbiAgICBkYXRhOiBkYXRhT3B0aW9ucywgY29tcHV0ZWQ6IGNvbXB1dGVkT3B0aW9ucywgbWV0aG9kcywgd2F0Y2g6IHdhdGNoT3B0aW9ucywgcHJvdmlkZTogcHJvdmlkZU9wdGlvbnMsIGluamVjdDogaW5qZWN0T3B0aW9ucywgXHJcbiAgICAvLyBsaWZlY3ljbGVcclxuICAgIGNyZWF0ZWQsIGJlZm9yZU1vdW50LCBtb3VudGVkLCBiZWZvcmVVcGRhdGUsIHVwZGF0ZWQsIGFjdGl2YXRlZCwgZGVhY3RpdmF0ZWQsIGJlZm9yZURlc3Ryb3ksIGJlZm9yZVVubW91bnQsIGRlc3Ryb3llZCwgdW5tb3VudGVkLCByZW5kZXIsIHJlbmRlclRyYWNrZWQsIHJlbmRlclRyaWdnZXJlZCwgZXJyb3JDYXB0dXJlZCwgc2VydmVyUHJlZmV0Y2gsIFxyXG4gICAgLy8gcHVibGljIEFQSVxyXG4gICAgZXhwb3NlLCBpbmhlcml0QXR0cnMsIFxyXG4gICAgLy8gYXNzZXRzXHJcbiAgICBjb21wb25lbnRzLCBkaXJlY3RpdmVzLCBmaWx0ZXJzIH0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gY3JlYXRlRHVwbGljYXRlQ2hlY2tlcigpIDogbnVsbDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBbcHJvcHNPcHRpb25zXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgICAgICBpZiAocHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiUHJvcHNcIiAvKiBPcHRpb25UeXBlcy5QUk9QUyAqLywga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gb3JkZXIgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBWdWUgMik6XHJcbiAgICAvLyAtIHByb3BzIChhbHJlYWR5IGRvbmUgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uKVxyXG4gICAgLy8gLSBpbmplY3RcclxuICAgIC8vIC0gbWV0aG9kc1xyXG4gICAgLy8gLSBkYXRhIChkZWZlcnJlZCBzaW5jZSBpdCByZWxpZXMgb24gYHRoaXNgIGFjY2VzcylcclxuICAgIC8vIC0gY29tcHV0ZWRcclxuICAgIC8vIC0gd2F0Y2ggKGRlZmVycmVkIHNpbmNlIGl0IHJlbGllcyBvbiBgdGhpc2AgYWNjZXNzKVxyXG4gICAgaWYgKGluamVjdE9wdGlvbnMpIHtcclxuICAgICAgICByZXNvbHZlSW5qZWN0aW9ucyhpbmplY3RPcHRpb25zLCBjdHgsIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcywgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcudW53cmFwSW5qZWN0ZWRSZWYpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1ldGhvZHMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXRob2RzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZEhhbmRsZXIgPSBtZXRob2RzW2tleV07XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG1ldGhvZEhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJbiBkZXYgbW9kZSwgd2UgdXNlIHRoZSBgY3JlYXRlUmVuZGVyQ29udGV4dGAgZnVuY3Rpb24gdG8gZGVmaW5lXHJcbiAgICAgICAgICAgICAgICAvLyBtZXRob2RzIHRvIHRoZSBwcm94eSB0YXJnZXQsIGFuZCB0aG9zZSBhcmUgcmVhZC1vbmx5IGJ1dFxyXG4gICAgICAgICAgICAgICAgLy8gcmVjb25maWd1cmFibGUsIHNvIGl0IG5lZWRzIHRvIGJlIHJlZGVmaW5lZCBoZXJlXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtZXRob2RIYW5kbGVyLmJpbmQocHVibGljVGhpcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGN0eFtrZXldID0gbWV0aG9kSGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIk1ldGhvZHNcIiAvKiBPcHRpb25UeXBlcy5NRVRIT0RTICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTWV0aG9kIFwiJHtrZXl9XCIgaGFzIHR5cGUgXCIke3R5cGVvZiBtZXRob2RIYW5kbGVyfVwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYERpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHk/YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YU9wdGlvbnMpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0Z1bmN0aW9uKGRhdGFPcHRpb25zKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBUaGUgZGF0YSBvcHRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uLiBgICtcclxuICAgICAgICAgICAgICAgIGBQbGFpbiBvYmplY3QgdXNhZ2UgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFPcHRpb25zLmNhbGwocHVibGljVGhpcywgcHVibGljVGhpcyk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc1Byb21pc2UoZGF0YSkpIHtcclxuICAgICAgICAgICAgd2FybihgZGF0YSgpIHJldHVybmVkIGEgUHJvbWlzZSAtIG5vdGUgZGF0YSgpIGNhbm5vdCBiZSBhc3luYzsgSWYgeW91IGAgK1xyXG4gICAgICAgICAgICAgICAgYGludGVuZCB0byBwZXJmb3JtIGRhdGEgZmV0Y2hpbmcgYmVmb3JlIGNvbXBvbmVudCByZW5kZXJzLCB1c2UgYCArXHJcbiAgICAgICAgICAgICAgICBgYXN5bmMgc2V0dXAoKSArIDxTdXNwZW5zZT4uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYGRhdGEoKSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmRhdGEgPSByZWFjdGl2ZShkYXRhKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkRhdGFcIiAvKiBPcHRpb25UeXBlcy5EQVRBICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGV4cG9zZSBkYXRhIG9uIGN0eCBkdXJpbmcgZGV2XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2VydmVkUHJlZml4KGtleVswXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBkYXRhW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc3RhdGUgaW5pdGlhbGl6YXRpb24gY29tcGxldGUgYXQgdGhpcyBwb2ludCAtIHN0YXJ0IGNhY2hpbmcgYWNjZXNzXHJcbiAgICBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XHJcbiAgICBpZiAoY29tcHV0ZWRPcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29tcHV0ZWRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IGNvbXB1dGVkT3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICBjb25zdCBnZXQgPSBpc0Z1bmN0aW9uKG9wdClcclxuICAgICAgICAgICAgICAgID8gb3B0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgIDogaXNGdW5jdGlvbihvcHQuZ2V0KVxyXG4gICAgICAgICAgICAgICAgICAgID8gb3B0LmdldC5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGdldCA9PT0gTk9PUCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgQ29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBoYXMgbm8gZ2V0dGVyLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNldCA9ICFpc0Z1bmN0aW9uKG9wdCkgJiYgaXNGdW5jdGlvbihvcHQuc2V0KVxyXG4gICAgICAgICAgICAgICAgPyBvcHQuc2V0LmJpbmQocHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgIDogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYFdyaXRlIG9wZXJhdGlvbiBmYWlsZWQ6IGNvbXB1dGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogTk9PUDtcclxuICAgICAgICAgICAgY29uc3QgYyA9IGNvbXB1dGVkKHtcclxuICAgICAgICAgICAgICAgIGdldCxcclxuICAgICAgICAgICAgICAgIHNldFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBjLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgc2V0OiB2ID0+IChjLnZhbHVlID0gdilcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkNvbXB1dGVkXCIgLyogT3B0aW9uVHlwZXMuQ09NUFVURUQgKi8sIGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2F0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gd2F0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNyZWF0ZVdhdGNoZXIod2F0Y2hPcHRpb25zW2tleV0sIGN0eCwgcHVibGljVGhpcywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvdmlkZU9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBwcm92aWRlcyA9IGlzRnVuY3Rpb24ocHJvdmlkZU9wdGlvbnMpXHJcbiAgICAgICAgICAgID8gcHJvdmlkZU9wdGlvbnMuY2FsbChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICA6IHByb3ZpZGVPcHRpb25zO1xyXG4gICAgICAgIFJlZmxlY3Qub3duS2V5cyhwcm92aWRlcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBwcm92aWRlKGtleSwgcHJvdmlkZXNba2V5XSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY3JlYXRlZCkge1xyXG4gICAgICAgIGNhbGxIb29rKGNyZWF0ZWQsIGluc3RhbmNlLCBcImNcIiAvKiBMaWZlY3ljbGVIb29rcy5DUkVBVEVEICovKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhyZWdpc3RlciwgaG9vaykge1xyXG4gICAgICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgICAgIGhvb2suZm9yRWFjaChfaG9vayA9PiByZWdpc3RlcihfaG9vay5iaW5kKHB1YmxpY1RoaXMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgcmVnaXN0ZXIoaG9vay5iaW5kKHB1YmxpY1RoaXMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVNb3VudCwgYmVmb3JlTW91bnQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uTW91bnRlZCwgbW91bnRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVVcGRhdGUsIGJlZm9yZVVwZGF0ZSk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25VcGRhdGVkLCB1cGRhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkFjdGl2YXRlZCwgYWN0aXZhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkRlYWN0aXZhdGVkLCBkZWFjdGl2YXRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25FcnJvckNhcHR1cmVkLCBlcnJvckNhcHR1cmVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblJlbmRlclRyYWNrZWQsIHJlbmRlclRyYWNrZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJpZ2dlcmVkLCByZW5kZXJUcmlnZ2VyZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlVW5tb3VudCwgYmVmb3JlVW5tb3VudCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Vbm1vdW50ZWQsIHVubW91bnRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25TZXJ2ZXJQcmVmZXRjaCwgc2VydmVyUHJlZmV0Y2gpO1xyXG4gICAgaWYgKGlzQXJyYXkoZXhwb3NlKSkge1xyXG4gICAgICAgIGlmIChleHBvc2UubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cG9zZWQgPSBpbnN0YW5jZS5leHBvc2VkIHx8IChpbnN0YW5jZS5leHBvc2VkID0ge30pO1xyXG4gICAgICAgICAgICBleHBvc2UuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9zZWQsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gcHVibGljVGhpc1trZXldLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldDogdmFsID0+IChwdWJsaWNUaGlzW2tleV0gPSB2YWwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmV4cG9zZWQgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb25zIHRoYXQgYXJlIGhhbmRsZWQgd2hlbiBjcmVhdGluZyB0aGUgaW5zdGFuY2UgYnV0IGFsc28gbmVlZCB0byBiZVxyXG4gICAgLy8gYXBwbGllZCBmcm9tIG1peGluc1xyXG4gICAgaWYgKHJlbmRlciAmJiBpbnN0YW5jZS5yZW5kZXIgPT09IE5PT1ApIHtcclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSByZW5kZXI7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5oZXJpdEF0dHJzICE9IG51bGwpIHtcclxuICAgICAgICBpbnN0YW5jZS5pbmhlcml0QXR0cnMgPSBpbmhlcml0QXR0cnM7XHJcbiAgICB9XHJcbiAgICAvLyBhc3NldCBvcHRpb25zLlxyXG4gICAgaWYgKGNvbXBvbmVudHMpXHJcbiAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50cyA9IGNvbXBvbmVudHM7XHJcbiAgICBpZiAoZGlyZWN0aXZlcylcclxuICAgICAgICBpbnN0YW5jZS5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcclxufVxyXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0aW9ucyhpbmplY3RPcHRpb25zLCBjdHgsIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyA9IE5PT1AsIHVud3JhcFJlZiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoaXNBcnJheShpbmplY3RPcHRpb25zKSkge1xyXG4gICAgICAgIGluamVjdE9wdGlvbnMgPSBub3JtYWxpemVJbmplY3QoaW5qZWN0T3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbmplY3RPcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0ID0gaW5qZWN0T3B0aW9uc1trZXldO1xyXG4gICAgICAgIGxldCBpbmplY3RlZDtcclxuICAgICAgICBpZiAoaXNPYmplY3Qob3B0KSkge1xyXG4gICAgICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIG9wdCkge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0LmZyb20gfHwga2V5LCBvcHQuZGVmYXVsdCwgdHJ1ZSAvKiB0cmVhdCBkZWZhdWx0IGZ1bmN0aW9uIGFzIGZhY3RvcnkgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0LmZyb20gfHwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUmVmKGluamVjdGVkKSkge1xyXG4gICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGUgY2hlY2sgaW4gMy4zXHJcbiAgICAgICAgICAgIGlmICh1bndyYXBSZWYpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gaW5qZWN0ZWQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0OiB2ID0+IChpbmplY3RlZC52YWx1ZSA9IHYpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBpbmplY3RlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGlzIGEgcmVmIGFuZCB3aWxsIGJlIGF1dG8tdW53cmFwcGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYW5kIG5vIGxvbmdlciBuZWVkcyBcXGAudmFsdWVcXGAgaW4gdGhlIG5leHQgbWlub3IgcmVsZWFzZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBUbyBvcHQtaW4gdG8gdGhlIG5ldyBiZWhhdmlvciBub3csIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgc2V0IFxcYGFwcC5jb25maWcudW53cmFwSW5qZWN0ZWRSZWYgPSB0cnVlXFxgICh0aGlzIGNvbmZpZyBpcyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHRlbXBvcmFyeSBhbmQgd2lsbCBub3QgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuKWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3R4W2tleV0gPSBpbmplY3RlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY3R4W2tleV0gPSBpbmplY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJJbmplY3RcIiAvKiBPcHRpb25UeXBlcy5JTkpFQ1QgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNhbGxIb29rKGhvb2ssIGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhpc0FycmF5KGhvb2spXHJcbiAgICAgICAgPyBob29rLm1hcChoID0+IGguYmluZChpbnN0YW5jZS5wcm94eSkpXHJcbiAgICAgICAgOiBob29rLmJpbmQoaW5zdGFuY2UucHJveHkpLCBpbnN0YW5jZSwgdHlwZSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlcihyYXcsIGN0eCwgcHVibGljVGhpcywga2V5KSB7XHJcbiAgICBjb25zdCBnZXR0ZXIgPSBrZXkuaW5jbHVkZXMoJy4nKVxyXG4gICAgICAgID8gY3JlYXRlUGF0aEdldHRlcihwdWJsaWNUaGlzLCBrZXkpXHJcbiAgICAgICAgOiAoKSA9PiBwdWJsaWNUaGlzW2tleV07XHJcbiAgICBpZiAoaXNTdHJpbmcocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSBjdHhbcmF3XTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xyXG4gICAgICAgICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBoYW5kbGVyIHNwZWNpZmllZCBieSBrZXkgXCIke3Jhd31cImAsIGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocmF3KSkge1xyXG4gICAgICAgIHdhdGNoKGdldHRlciwgcmF3LmJpbmQocHVibGljVGhpcykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QocmF3KSkge1xyXG4gICAgICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICAgICAgcmF3LmZvckVhY2gociA9PiBjcmVhdGVXYXRjaGVyKHIsIGN0eCwgcHVibGljVGhpcywga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gaXNGdW5jdGlvbihyYXcuaGFuZGxlcilcclxuICAgICAgICAgICAgICAgID8gcmF3LmhhbmRsZXIuYmluZChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiBjdHhbcmF3LmhhbmRsZXJdO1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xyXG4gICAgICAgICAgICAgICAgd2F0Y2goZ2V0dGVyLCBoYW5kbGVyLCByYXcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBoYW5kbGVyIHNwZWNpZmllZCBieSBrZXkgXCIke3Jhdy5oYW5kbGVyfVwiYCwgaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIG9wdGlvbjogXCIke2tleX1cImAsIHJhdyk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIFJlc29sdmUgbWVyZ2VkIG9wdGlvbnMgYW5kIGNhY2hlIGl0IG9uIHRoZSBjb21wb25lbnQuXHJcbiAqIFRoaXMgaXMgZG9uZSBvbmx5IG9uY2UgcGVyLWNvbXBvbmVudCBzaW5jZSB0aGUgbWVyZ2luZyBkb2VzIG5vdCBpbnZvbHZlXHJcbiAqIGluc3RhbmNlcy5cclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBiYXNlID0gaW5zdGFuY2UudHlwZTtcclxuICAgIGNvbnN0IHsgbWl4aW5zLCBleHRlbmRzOiBleHRlbmRzT3B0aW9ucyB9ID0gYmFzZTtcclxuICAgIGNvbnN0IHsgbWl4aW5zOiBnbG9iYWxNaXhpbnMsIG9wdGlvbnNDYWNoZTogY2FjaGUsIGNvbmZpZzogeyBvcHRpb25NZXJnZVN0cmF0ZWdpZXMgfSB9ID0gaW5zdGFuY2UuYXBwQ29udGV4dDtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChiYXNlKTtcclxuICAgIGxldCByZXNvbHZlZDtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXNvbHZlZCA9IGNhY2hlZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFnbG9iYWxNaXhpbnMubGVuZ3RoICYmICFtaXhpbnMgJiYgIWV4dGVuZHNPcHRpb25zKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXNvbHZlZCA9IGJhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZWQgPSB7fTtcclxuICAgICAgICBpZiAoZ2xvYmFsTWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBnbG9iYWxNaXhpbnMuZm9yRWFjaChtID0+IG1lcmdlT3B0aW9ucyhyZXNvbHZlZCwgbSwgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzLCB0cnVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lcmdlT3B0aW9ucyhyZXNvbHZlZCwgYmFzZSwgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzKTtcclxuICAgIH1cclxuICAgIGlmIChpc09iamVjdChiYXNlKSkge1xyXG4gICAgICAgIGNhY2hlLnNldChiYXNlLCByZXNvbHZlZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzb2x2ZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKHRvLCBmcm9tLCBzdHJhdHMsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBmcm9tO1xyXG4gICAgaWYgKGV4dGVuZHNPcHRpb25zKSB7XHJcbiAgICAgICAgbWVyZ2VPcHRpb25zKHRvLCBleHRlbmRzT3B0aW9ucywgc3RyYXRzLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmIChtaXhpbnMpIHtcclxuICAgICAgICBtaXhpbnMuZm9yRWFjaCgobSkgPT4gbWVyZ2VPcHRpb25zKHRvLCBtLCBzdHJhdHMsIHRydWUpKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcclxuICAgICAgICBpZiAoYXNNaXhpbiAmJiBrZXkgPT09ICdleHBvc2UnKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgXCJleHBvc2VcIiBvcHRpb24gaXMgaWdub3JlZCB3aGVuIGRlY2xhcmVkIGluIG1peGlucyBvciBleHRlbmRzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgSXQgc2hvdWxkIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIGJhc2UgY29tcG9uZW50IGl0c2VsZi5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmF0ID0gaW50ZXJuYWxPcHRpb25NZXJnZVN0cmF0c1trZXldIHx8IChzdHJhdHMgJiYgc3RyYXRzW2tleV0pO1xyXG4gICAgICAgICAgICB0b1trZXldID0gc3RyYXQgPyBzdHJhdCh0b1trZXldLCBmcm9tW2tleV0pIDogZnJvbVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxufVxyXG5jb25zdCBpbnRlcm5hbE9wdGlvbk1lcmdlU3RyYXRzID0ge1xyXG4gICAgZGF0YTogbWVyZ2VEYXRhRm4sXHJcbiAgICBwcm9wczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgZW1pdHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIG9iamVjdHNcclxuICAgIG1ldGhvZHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIGNvbXB1dGVkOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICAvLyBsaWZlY3ljbGVcclxuICAgIGJlZm9yZUNyZWF0ZTogbWVyZ2VBc0FycmF5LFxyXG4gICAgY3JlYXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlTW91bnQ6IG1lcmdlQXNBcnJheSxcclxuICAgIG1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGJlZm9yZVVwZGF0ZTogbWVyZ2VBc0FycmF5LFxyXG4gICAgdXBkYXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlRGVzdHJveTogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlVW5tb3VudDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZGVzdHJveWVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICB1bm1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGFjdGl2YXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZGVhY3RpdmF0ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGVycm9yQ2FwdHVyZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIHNlcnZlclByZWZldGNoOiBtZXJnZUFzQXJyYXksXHJcbiAgICAvLyBhc3NldHNcclxuICAgIGNvbXBvbmVudHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIGRpcmVjdGl2ZXM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIHdhdGNoXHJcbiAgICB3YXRjaDogbWVyZ2VXYXRjaE9wdGlvbnMsXHJcbiAgICAvLyBwcm92aWRlIC8gaW5qZWN0XHJcbiAgICBwcm92aWRlOiBtZXJnZURhdGFGbixcclxuICAgIGluamVjdDogbWVyZ2VJbmplY3RcclxufTtcclxuZnVuY3Rpb24gbWVyZ2VEYXRhRm4odG8sIGZyb20pIHtcclxuICAgIGlmICghZnJvbSkge1xyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIH1cclxuICAgIGlmICghdG8pIHtcclxuICAgICAgICByZXR1cm4gZnJvbTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4oKSB7XHJcbiAgICAgICAgcmV0dXJuIChleHRlbmQpKGlzRnVuY3Rpb24odG8pID8gdG8uY2FsbCh0aGlzLCB0aGlzKSA6IHRvLCBpc0Z1bmN0aW9uKGZyb20pID8gZnJvbS5jYWxsKHRoaXMsIHRoaXMpIDogZnJvbSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlSW5qZWN0KHRvLCBmcm9tKSB7XHJcbiAgICByZXR1cm4gbWVyZ2VPYmplY3RPcHRpb25zKG5vcm1hbGl6ZUluamVjdCh0byksIG5vcm1hbGl6ZUluamVjdChmcm9tKSk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplSW5qZWN0KHJhdykge1xyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc1tyYXdbaV1dID0gcmF3W2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhdztcclxufVxyXG5mdW5jdGlvbiBtZXJnZUFzQXJyYXkodG8sIGZyb20pIHtcclxuICAgIHJldHVybiB0byA/IFsuLi5uZXcgU2V0KFtdLmNvbmNhdCh0bywgZnJvbSkpXSA6IGZyb207XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VPYmplY3RPcHRpb25zKHRvLCBmcm9tKSB7XHJcbiAgICByZXR1cm4gdG8gPyBleHRlbmQoZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHRvKSwgZnJvbSkgOiBmcm9tO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlV2F0Y2hPcHRpb25zKHRvLCBmcm9tKSB7XHJcbiAgICBpZiAoIXRvKVxyXG4gICAgICAgIHJldHVybiBmcm9tO1xyXG4gICAgaWYgKCFmcm9tKVxyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIGNvbnN0IG1lcmdlZCA9IGV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB0byk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmcm9tKSB7XHJcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBtZXJnZUFzQXJyYXkodG9ba2V5XSwgZnJvbVtrZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXJnZWQ7XHJcbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgaXNTdGF0ZWZ1bCwgLy8gcmVzdWx0IG9mIGJpdHdpc2UgZmxhZyBjb21wYXJpc29uXHJcbmlzU1NSID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHByb3BzID0ge307XHJcbiAgICBjb25zdCBhdHRycyA9IHt9O1xyXG4gICAgZGVmKGF0dHJzLCBJbnRlcm5hbE9iamVjdEtleSwgMSk7XHJcbiAgICBpbnN0YW5jZS5wcm9wc0RlZmF1bHRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycyk7XHJcbiAgICAvLyBlbnN1cmUgYWxsIGRlY2xhcmVkIHByb3Aga2V5cyBhcmUgcHJlc2VudFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSB7XHJcbiAgICAgICAgaWYgKCEoa2V5IGluIHByb3BzKSkge1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHZhbGlkYXRpb25cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzIHx8IHt9LCBwcm9wcywgaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU3RhdGVmdWwpIHtcclxuICAgICAgICAvLyBzdGF0ZWZ1bFxyXG4gICAgICAgIGluc3RhbmNlLnByb3BzID0gaXNTU1IgPyBwcm9wcyA6IHNoYWxsb3dSZWFjdGl2ZShwcm9wcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoIWluc3RhbmNlLnR5cGUucHJvcHMpIHtcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb25hbCB3LyBvcHRpb25hbCBwcm9wcywgcHJvcHMgPT09IGF0dHJzXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BzID0gYXR0cnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsIHcvIGRlY2xhcmVkIHByb3BzXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BzID0gcHJvcHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaW5zdGFuY2UuYXR0cnMgPSBhdHRycztcclxufVxyXG5mdW5jdGlvbiBpc0luSG1yQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgd2hpbGUgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUuX19obXJJZClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS5wYXJlbnQ7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCByYXdQcmV2UHJvcHMsIG9wdGltaXplZCkge1xyXG4gICAgY29uc3QgeyBwcm9wcywgYXR0cnMsIHZub2RlOiB7IHBhdGNoRmxhZyB9IH0gPSBpbnN0YW5jZTtcclxuICAgIGNvbnN0IHJhd0N1cnJlbnRQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgIGNvbnN0IFtvcHRpb25zXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgIGxldCBoYXNBdHRyc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgIC8vIGFsd2F5cyBmb3JjZSBmdWxsIGRpZmYgaW4gZGV2XHJcbiAgICAvLyAtICMxOTQyIGlmIGhtciBpcyBlbmFibGVkIHdpdGggc2ZjIGNvbXBvbmVudFxyXG4gICAgLy8gLSB2aXRlIzg3MiBub24tc2ZjIGNvbXBvbmVudCB1c2VkIGJ5IHNmYyBjb21wb25lbnRcclxuICAgICEoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSW5IbXJDb250ZXh0KGluc3RhbmNlKSkgJiZcclxuICAgICAgICAob3B0aW1pemVkIHx8IHBhdGNoRmxhZyA+IDApICYmXHJcbiAgICAgICAgIShwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pKSB7XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAvLyBDb21waWxlci1nZW5lcmF0ZWQgcHJvcHMgJiBubyBrZXlzIGNoYW5nZSwganVzdCBzZXQgdGhlIHVwZGF0ZWRcclxuICAgICAgICAgICAgLy8gdGhlIHByb3BzLlxyXG4gICAgICAgICAgICBjb25zdCBwcm9wc1RvVXBkYXRlID0gaW5zdGFuY2Uudm5vZGUuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBrZXkgPSBwcm9wc1RvVXBkYXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBpZiB0aGUgcHJvcCBrZXkgaXMgYSBkZWNsYXJlZCBlbWl0IGV2ZW50IGxpc3RlbmVyXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbWl0TGlzdGVuZXIoaW5zdGFuY2UuZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBQUk9QUyBmbGFnIGd1YXJhbnRlZXMgcmF3UHJvcHMgdG8gYmUgbm9uLW51bGxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXR0ciAvIHByb3BzIHNlcGFyYXRpb24gd2FzIGRvbmUgb24gaW5pdCBhbmQgd2lsbCBiZSBjb25zaXN0ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBjb2RlIHBhdGgsIHNvIGp1c3QgY2hlY2sgaWYgYXR0cnMgaGF2ZSBpdC5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKGF0dHJzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FtZWxpemVkS2V5ID0gY2FtZWxpemUoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbY2FtZWxpemVkS2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBjYW1lbGl6ZWRLZXksIHZhbHVlLCBpbnN0YW5jZSwgZmFsc2UgLyogaXNBYnNlbnQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gZnVsbCBwcm9wcyB1cGRhdGUuXHJcbiAgICAgICAgaWYgKHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycykpIHtcclxuICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW4gY2FzZSBvZiBkeW5hbWljIHByb3BzLCBjaGVjayBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSBrZXlzIGZyb21cclxuICAgICAgICAvLyB0aGUgcHJvcHMgb2JqZWN0XHJcbiAgICAgICAgbGV0IGtlYmFiS2V5O1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJhd0N1cnJlbnRQcm9wcykge1xyXG4gICAgICAgICAgICBpZiAoIXJhd1Byb3BzIHx8XHJcbiAgICAgICAgICAgICAgICAvLyBmb3IgY2FtZWxDYXNlXHJcbiAgICAgICAgICAgICAgICAoIWhhc093bihyYXdQcm9wcywga2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0J3MgcG9zc2libGUgdGhlIG9yaWdpbmFsIHByb3BzIHdhcyBwYXNzZWQgaW4gYXMga2ViYWItY2FzZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlICgjOTU1KVxyXG4gICAgICAgICAgICAgICAgICAgICgoa2ViYWJLZXkgPSBoeXBoZW5hdGUoa2V5KSkgPT09IGtleSB8fCAhaGFzT3duKHJhd1Byb3BzLCBrZWJhYktleSkpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmF3UHJldlByb3BzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBjYW1lbENhc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJhd1ByZXZQcm9wc1trZXldICE9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBrZWJhYi1jYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdQcmV2UHJvcHNba2ViYWJLZXldICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywga2V5LCB1bmRlZmluZWQsIGluc3RhbmNlLCB0cnVlIC8qIGlzQWJzZW50ICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBmdW5jdGlvbmFsIGNvbXBvbmVudCB3L28gcHJvcHMgZGVjbGFyYXRpb24sIHByb3BzIGFuZFxyXG4gICAgICAgIC8vIGF0dHJzIHBvaW50IHRvIHRoZSBzYW1lIG9iamVjdCBzbyBpdCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gdXBkYXRlZC5cclxuICAgICAgICBpZiAoYXR0cnMgIT09IHJhd0N1cnJlbnRQcm9wcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyYXdQcm9wcyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICghaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICghZmFsc2UgKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYXR0cnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJpZ2dlciB1cGRhdGVzIGZvciAkYXR0cnMgaW4gY2FzZSBpdCdzIHVzZWQgaW4gY29tcG9uZW50IHNsb3RzXHJcbiAgICBpZiAoaGFzQXR0cnNDaGFuZ2VkKSB7XHJcbiAgICAgICAgdHJpZ2dlcihpbnN0YW5jZSwgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sICckYXR0cnMnKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzIHx8IHt9LCBwcm9wcywgaW5zdGFuY2UpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycykge1xyXG4gICAgY29uc3QgW29wdGlvbnMsIG5lZWRDYXN0S2V5c10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICBsZXQgaGFzQXR0cnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBsZXQgcmF3Q2FzdFZhbHVlcztcclxuICAgIGlmIChyYXdQcm9wcykge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiByYXdQcm9wcykge1xyXG4gICAgICAgICAgICAvLyBrZXksIHJlZiBhcmUgcmVzZXJ2ZWQgYW5kIG5ldmVyIHBhc3NlZCBkb3duXHJcbiAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgIC8vIHByb3Agb3B0aW9uIG5hbWVzIGFyZSBjYW1lbGl6ZWQgZHVyaW5nIG5vcm1hbGl6YXRpb24sIHNvIHRvIHN1cHBvcnRcclxuICAgICAgICAgICAgLy8ga2ViYWIgLT4gY2FtZWwgY29udmVyc2lvbiBoZXJlIHdlIG5lZWQgdG8gY2FtZWxpemUgdGhlIGtleS5cclxuICAgICAgICAgICAgbGV0IGNhbWVsS2V5O1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgKGNhbWVsS2V5ID0gY2FtZWxpemUoa2V5KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5lZWRDYXN0S2V5cyB8fCAhbmVlZENhc3RLZXlzLmluY2x1ZGVzKGNhbWVsS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW2NhbWVsS2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHJhd0Nhc3RWYWx1ZXMgfHwgKHJhd0Nhc3RWYWx1ZXMgPSB7fSkpW2NhbWVsS2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0VtaXRMaXN0ZW5lcihpbnN0YW5jZS5lbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBhdHRycykgfHwgdmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChuZWVkQ2FzdEtleXMpIHtcclxuICAgICAgICBjb25zdCByYXdDdXJyZW50UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICAgICAgY29uc3QgY2FzdFZhbHVlcyA9IHJhd0Nhc3RWYWx1ZXMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZENhc3RLZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG5lZWRDYXN0S2V5c1tpXTtcclxuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBrZXksIGNhc3RWYWx1ZXNba2V5XSwgaW5zdGFuY2UsICFoYXNPd24oY2FzdFZhbHVlcywga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc0F0dHJzQ2hhbmdlZDtcclxufVxyXG5mdW5jdGlvbiByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHByb3BzLCBrZXksIHZhbHVlLCBpbnN0YW5jZSwgaXNBYnNlbnQpIHtcclxuICAgIGNvbnN0IG9wdCA9IG9wdGlvbnNba2V5XTtcclxuICAgIGlmIChvcHQgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGhhc0RlZmF1bHQgPSBoYXNPd24ob3B0LCAnZGVmYXVsdCcpO1xyXG4gICAgICAgIC8vIGRlZmF1bHQgdmFsdWVzXHJcbiAgICAgICAgaWYgKGhhc0RlZmF1bHQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvcHQuZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKG9wdC50eXBlICE9PSBGdW5jdGlvbiAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvcHNEZWZhdWx0cyB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzRGVmYXVsdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByb3BzRGVmYXVsdHNba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcm9wc0RlZmF1bHRzW2tleV0gPSBkZWZhdWx0VmFsdWUuY2FsbChudWxsLCBwcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGJvb2xlYW4gY2FzdGluZ1xyXG4gICAgICAgIGlmIChvcHRbMCAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdCAqL10pIHtcclxuICAgICAgICAgICAgaWYgKGlzQWJzZW50ICYmICFoYXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdFsxIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0VHJ1ZSAqL10gJiZcclxuICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhjb21wLCBhcHBDb250ZXh0LCBhc01peGluID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gYXBwQ29udGV4dC5wcm9wc0NhY2hlO1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGNvbXApO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXcgPSBjb21wLnByb3BzO1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xyXG4gICAgY29uc3QgbmVlZENhc3RLZXlzID0gW107XHJcbiAgICAvLyBhcHBseSBtaXhpbi9leHRlbmRzIHByb3BzXHJcbiAgICBsZXQgaGFzRXh0ZW5kcyA9IGZhbHNlO1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICBjb25zdCBleHRlbmRQcm9wcyA9IChyYXcpID0+IHtcclxuICAgICAgICAgICAgaGFzRXh0ZW5kcyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IFtwcm9wcywga2V5c10gPSBub3JtYWxpemVQcm9wc09wdGlvbnMocmF3LCBhcHBDb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHByb3BzKTtcclxuICAgICAgICAgICAgaWYgKGtleXMpXHJcbiAgICAgICAgICAgICAgICBuZWVkQ2FzdEtleXMucHVzaCguLi5rZXlzKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghYXNNaXhpbiAmJiBhcHBDb250ZXh0Lm1peGlucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXBwQ29udGV4dC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLmV4dGVuZHMpIHtcclxuICAgICAgICAgICAgZXh0ZW5kUHJvcHMoY29tcC5leHRlbmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAubWl4aW5zKSB7XHJcbiAgICAgICAgICAgIGNvbXAubWl4aW5zLmZvckVhY2goZXh0ZW5kUHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghcmF3ICYmICFoYXNFeHRlbmRzKSB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgICAgIGNhY2hlLnNldChjb21wLCBFTVBUWV9BUlIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gRU1QVFlfQVJSO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzU3RyaW5nKHJhd1tpXSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHByb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC5gLCByYXdbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShyYXdbaV0pO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9IEVNUFRZX09CSjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJhdykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzT2JqZWN0KHJhdykpIHtcclxuICAgICAgICAgICAgd2FybihgaW52YWxpZCBwcm9wcyBvcHRpb25zYCwgcmF3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmF3KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcmF3W2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gKG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXkob3B0KSB8fCBpc0Z1bmN0aW9uKG9wdCkgPyB7IHR5cGU6IG9wdCB9IDogb3B0KTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbGVhbkluZGV4ID0gZ2V0VHlwZUluZGV4KEJvb2xlYW4sIHByb3AudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMCAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdCAqL10gPSBib29sZWFuSW5kZXggPiAtMTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wWzEgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3RUcnVlICovXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0luZGV4IDwgMCB8fCBib29sZWFuSW5kZXggPCBzdHJpbmdJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcHJvcCBuZWVkcyBib29sZWFuIGNhc3Rpbmcgb3IgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChib29sZWFuSW5kZXggPiAtMSB8fCBoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ2FzdEtleXMucHVzaChub3JtYWxpemVkS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXMgPSBbbm9ybWFsaXplZCwgbmVlZENhc3RLZXlzXTtcclxuICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgIGNhY2hlLnNldChjb21wLCByZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BOYW1lKGtleSkge1xyXG4gICAgaWYgKGtleVswXSAhPT0gJyQnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHByb3AgbmFtZTogXCIke2tleX1cIiBpcyBhIHJlc2VydmVkIHByb3BlcnR5LmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8vIHVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayB0eXBlIGNvbnN0cnVjdG9yc1xyXG4vLyBzbyB0aGF0IGl0IHdvcmtzIGFjcm9zcyB2bXMgLyBpZnJhbWVzLlxyXG5mdW5jdGlvbiBnZXRUeXBlKGN0b3IpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gY3RvciAmJiBjdG9yLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XHJcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IGN0b3IgPT09IG51bGwgPyAnbnVsbCcgOiAnJztcclxufVxyXG5mdW5jdGlvbiBpc1NhbWVUeXBlKGEsIGIpIHtcclxuICAgIHJldHVybiBnZXRUeXBlKGEpID09PSBnZXRUeXBlKGIpO1xyXG59XHJcbmZ1bmN0aW9uIGdldFR5cGVJbmRleCh0eXBlLCBleHBlY3RlZFR5cGVzKSB7XHJcbiAgICBpZiAoaXNBcnJheShleHBlY3RlZFR5cGVzKSkge1xyXG4gICAgICAgIHJldHVybiBleHBlY3RlZFR5cGVzLmZpbmRJbmRleCh0ID0+IGlzU2FtZVR5cGUodCwgdHlwZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihleHBlY3RlZFR5cGVzKSkge1xyXG4gICAgICAgIHJldHVybiBpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXMsIHR5cGUpID8gMCA6IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wcyhyYXdQcm9wcywgcHJvcHMsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHRvUmF3KHByb3BzKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF07XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IG9wdCA9IG9wdGlvbnNba2V5XTtcclxuICAgICAgICBpZiAob3B0ID09IG51bGwpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcChrZXksIHJlc29sdmVkVmFsdWVzW2tleV0sIG9wdCwgIWhhc093bihyYXdQcm9wcywga2V5KSAmJiAhaGFzT3duKHJhd1Byb3BzLCBoeXBoZW5hdGUoa2V5KSkpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wKG5hbWUsIHZhbHVlLCBwcm9wLCBpc0Fic2VudCkge1xyXG4gICAgY29uc3QgeyB0eXBlLCByZXF1aXJlZCwgdmFsaWRhdG9yIH0gPSBwcm9wO1xyXG4gICAgLy8gcmVxdWlyZWQhXHJcbiAgICBpZiAocmVxdWlyZWQgJiYgaXNBYnNlbnQpIHtcclxuICAgICAgICB3YXJuKCdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBtaXNzaW5nIGJ1dCBvcHRpb25hbFxyXG4gICAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyB0eXBlIGNoZWNrXHJcbiAgICBpZiAodHlwZSAhPSBudWxsICYmIHR5cGUgIT09IHRydWUpIHtcclxuICAgICAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHR5cGVzID0gaXNBcnJheSh0eXBlKSA/IHR5cGUgOiBbdHlwZV07XHJcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlcyA9IFtdO1xyXG4gICAgICAgIC8vIHZhbHVlIGlzIHZhbGlkIGFzIGxvbmcgYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgdHlwZXMgbWF0Y2hcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aCAmJiAhaXNWYWxpZDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQsIGV4cGVjdGVkVHlwZSB9ID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZXNbaV0pO1xyXG4gICAgICAgICAgICBleHBlY3RlZFR5cGVzLnB1c2goZXhwZWN0ZWRUeXBlIHx8ICcnKTtcclxuICAgICAgICAgICAgaXNWYWxpZCA9IHZhbGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgd2FybihnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGN1c3RvbSB2YWxpZGF0b3JcclxuICAgIGlmICh2YWxpZGF0b3IgJiYgIXZhbGlkYXRvcih2YWx1ZSkpIHtcclxuICAgICAgICB3YXJuKCdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgaXNTaW1wbGVUeXBlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdTdHJpbmcsTnVtYmVyLEJvb2xlYW4sRnVuY3Rpb24sU3ltYm9sLEJpZ0ludCcpO1xyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGFzc2VydFR5cGUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWxpZDtcclxuICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XHJcbiAgICBpZiAoaXNTaW1wbGVUeXBlKGV4cGVjdGVkVHlwZSkpIHtcclxuICAgICAgICBjb25zdCB0ID0gdHlwZW9mIHZhbHVlO1xyXG4gICAgICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgLy8gZm9yIHByaW1pdGl2ZSB3cmFwcGVyIG9iamVjdHNcclxuICAgICAgICBpZiAoIXZhbGlkICYmIHQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcclxuICAgICAgICB2YWxpZCA9IGlzT2JqZWN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xyXG4gICAgICAgIHZhbGlkID0gaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdudWxsJykge1xyXG4gICAgICAgIHZhbGlkID0gdmFsdWUgPT09IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdmFsaWQsXHJcbiAgICAgICAgZXhwZWN0ZWRUeXBlXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0SW52YWxpZFR5cGVNZXNzYWdlKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSB7XHJcbiAgICBsZXQgbWVzc2FnZSA9IGBJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJHtuYW1lfVwiLmAgK1xyXG4gICAgICAgIGAgRXhwZWN0ZWQgJHtleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcgfCAnKX1gO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gZXhwZWN0ZWRUeXBlc1swXTtcclxuICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHRvUmF3VHlwZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBleHBlY3RlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgZXhwZWN0ZWRUeXBlKTtcclxuICAgIGNvbnN0IHJlY2VpdmVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCByZWNlaXZlZFR5cGUpO1xyXG4gICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGVjdGVkIHZhbHVlXHJcbiAgICBpZiAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICBpc0V4cGxpY2FibGUoZXhwZWN0ZWRUeXBlKSAmJlxyXG4gICAgICAgICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZSArPSBgIHdpdGggdmFsdWUgJHtleHBlY3RlZFZhbHVlfWA7XHJcbiAgICB9XHJcbiAgICBtZXNzYWdlICs9IGAsIGdvdCAke3JlY2VpdmVkVHlwZX0gYDtcclxuICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSByZWNlaXZlZCB2YWx1ZVxyXG4gICAgaWYgKGlzRXhwbGljYWJsZShyZWNlaXZlZFR5cGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZSArPSBgd2l0aCB2YWx1ZSAke3JlY2VpdmVkVmFsdWV9LmA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVzc2FnZTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHN0eWxlVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGlmICh0eXBlID09PSAnU3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGUgPT09ICdOdW1iZXInKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke051bWJlcih2YWx1ZSl9YDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gaXNFeHBsaWNhYmxlKHR5cGUpIHtcclxuICAgIGNvbnN0IGV4cGxpY2l0VHlwZXMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbiddO1xyXG4gICAgcmV0dXJuIGV4cGxpY2l0VHlwZXMuc29tZShlbGVtID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZWxlbSk7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBpc0Jvb2xlYW4oLi4uYXJncykge1xyXG4gICAgcmV0dXJuIGFyZ3Muc29tZShlbGVtID0+IGVsZW0udG9Mb3dlckNhc2UoKSA9PT0gJ2Jvb2xlYW4nKTtcclxufVxuXG5jb25zdCBpc0ludGVybmFsS2V5ID0gKGtleSkgPT4ga2V5WzBdID09PSAnXycgfHwga2V5ID09PSAnJHN0YWJsZSc7XHJcbmNvbnN0IG5vcm1hbGl6ZVNsb3RWYWx1ZSA9ICh2YWx1ZSkgPT4gaXNBcnJheSh2YWx1ZSlcclxuICAgID8gdmFsdWUubWFwKG5vcm1hbGl6ZVZOb2RlKVxyXG4gICAgOiBbbm9ybWFsaXplVk5vZGUodmFsdWUpXTtcclxuY29uc3Qgbm9ybWFsaXplU2xvdCA9IChrZXksIHJhd1Nsb3QsIGN0eCkgPT4ge1xyXG4gICAgaWYgKHJhd1Nsb3QuX24pIHtcclxuICAgICAgICAvLyBhbHJlYWR5IG5vcm1hbGl6ZWQgLSAjNTM1M1xyXG4gICAgICAgIHJldHVybiByYXdTbG90O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHdpdGhDdHgoKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBTbG90IFwiJHtrZXl9XCIgaW52b2tlZCBvdXRzaWRlIG9mIHRoZSByZW5kZXIgZnVuY3Rpb246IGAgK1xyXG4gICAgICAgICAgICAgICAgYHRoaXMgd2lsbCBub3QgdHJhY2sgZGVwZW5kZW5jaWVzIHVzZWQgaW4gdGhlIHNsb3QuIGAgK1xyXG4gICAgICAgICAgICAgICAgYEludm9rZSB0aGUgc2xvdCBmdW5jdGlvbiBpbnNpZGUgdGhlIHJlbmRlciBmdW5jdGlvbiBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplU2xvdFZhbHVlKHJhd1Nsb3QoLi4uYXJncykpO1xyXG4gICAgfSwgY3R4KTtcclxuICAgIG5vcm1hbGl6ZWQuX2MgPSBmYWxzZTtcclxuICAgIHJldHVybiBub3JtYWxpemVkO1xyXG59O1xyXG5jb25zdCBub3JtYWxpemVPYmplY3RTbG90cyA9IChyYXdTbG90cywgc2xvdHMsIGluc3RhbmNlKSA9PiB7XHJcbiAgICBjb25zdCBjdHggPSByYXdTbG90cy5fY3R4O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3U2xvdHMpIHtcclxuICAgICAgICBpZiAoaXNJbnRlcm5hbEtleShrZXkpKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Nsb3RzW2tleV07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHNsb3RzW2tleV0gPSBub3JtYWxpemVTbG90KGtleSwgdmFsdWUsIGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgIShmYWxzZSApKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBOb24tZnVuY3Rpb24gdmFsdWUgZW5jb3VudGVyZWQgZm9yIHNsb3QgXCIke2tleX1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFByZWZlciBmdW5jdGlvbiBzbG90cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVTbG90VmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICBzbG90c1trZXldID0gKCkgPT4gbm9ybWFsaXplZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IG5vcm1hbGl6ZVZOb2RlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgIWlzS2VlcEFsaXZlKGluc3RhbmNlLnZub2RlKSAmJlxyXG4gICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgIHdhcm4oYE5vbi1mdW5jdGlvbiB2YWx1ZSBlbmNvdW50ZXJlZCBmb3IgZGVmYXVsdCBzbG90LiBgICtcclxuICAgICAgICAgICAgYFByZWZlciBmdW5jdGlvbiBzbG90cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLmApO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNsb3RWYWx1ZShjaGlsZHJlbik7XHJcbiAgICBpbnN0YW5jZS5zbG90cy5kZWZhdWx0ID0gKCkgPT4gbm9ybWFsaXplZDtcclxufTtcclxuY29uc3QgaW5pdFNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKGluc3RhbmNlLnZub2RlLnNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gY2hpbGRyZW4uXztcclxuICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAvLyB1c2VycyBjYW4gZ2V0IHRoZSBzaGFsbG93IHJlYWRvbmx5IHZlcnNpb24gb2YgdGhlIHNsb3RzIG9iamVjdCB0aHJvdWdoIGB0aGlzLiRzbG90c2AsXHJcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZCBhdm9pZCB0aGUgcHJveHkgb2JqZWN0IHBvbGx1dGluZyB0aGUgc2xvdHMgb2YgdGhlIGludGVybmFsIGluc3RhbmNlXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNsb3RzID0gdG9SYXcoY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAvLyBtYWtlIGNvbXBpbGVyIG1hcmtlciBub24tZW51bWVyYWJsZVxyXG4gICAgICAgICAgICBkZWYoY2hpbGRyZW4sICdfJywgdHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub3JtYWxpemVPYmplY3RTbG90cyhjaGlsZHJlbiwgKGluc3RhbmNlLnNsb3RzID0ge30pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpbnN0YW5jZS5zbG90cyA9IHt9O1xyXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICBub3JtYWxpemVWTm9kZVNsb3RzKGluc3RhbmNlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGVmKGluc3RhbmNlLnNsb3RzLCBJbnRlcm5hbE9iamVjdEtleSwgMSk7XHJcbn07XHJcbmNvbnN0IHVwZGF0ZVNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbiwgb3B0aW1pemVkKSA9PiB7XHJcbiAgICBjb25zdCB7IHZub2RlLCBzbG90cyB9ID0gaW5zdGFuY2U7XHJcbiAgICBsZXQgbmVlZERlbGV0aW9uQ2hlY2sgPSB0cnVlO1xyXG4gICAgbGV0IGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IEVNUFRZX09CSjtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgLy8gY29tcGlsZWQgc2xvdHMuXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gUGFyZW50IHdhcyBITVIgdXBkYXRlZCBzbyBzbG90IGNvbnRlbnQgbWF5IGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHVwZGF0ZSBzbG90cyBhbmQgbWFyayBpbnN0YW5jZSBmb3IgaG1yIGFzIHdlbGxcclxuICAgICAgICAgICAgICAgIGV4dGVuZChzbG90cywgY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGltaXplZCAmJiB0eXBlID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkIEFORCBzdGFibGUuXHJcbiAgICAgICAgICAgICAgICAvLyBubyBuZWVkIHRvIHVwZGF0ZSwgYW5kIHNraXAgc3RhbGUgc2xvdHMgcmVtb3ZhbC5cclxuICAgICAgICAgICAgICAgIG5lZWREZWxldGlvbkNoZWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb21waWxlZCBidXQgZHluYW1pYyAodi1pZi92LWZvciBvbiBzbG90cykgLSB1cGRhdGUgc2xvdHMsIGJ1dCBza2lwXHJcbiAgICAgICAgICAgICAgICAvLyBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKHNsb3RzLCBjaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjg5M1xyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiByZW5kZXJpbmcgdGhlIG9wdGltaXplZCBzbG90cyBieSBtYW51YWxseSB3cml0dGVuIHJlbmRlciBmdW5jdGlvbixcclxuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZGVsZXRlIHRoZSBgc2xvdHMuX2AgZmxhZyBpZiBuZWNlc3NhcnkgdG8gbWFrZSBzdWJzZXF1ZW50IHVwZGF0ZXMgcmVsaWFibGUsXHJcbiAgICAgICAgICAgICAgICAvLyBpLmUuIGxldCB0aGUgYHJlbmRlclNsb3RgIGNyZWF0ZSB0aGUgYmFpbGVkIEZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGltaXplZCAmJiB0eXBlID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2xvdHMuXztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSAhY2hpbGRyZW4uJHN0YWJsZTtcclxuICAgICAgICAgICAgbm9ybWFsaXplT2JqZWN0U2xvdHMoY2hpbGRyZW4sIHNsb3RzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0gY2hpbGRyZW47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgIC8vIG5vbiBzbG90IG9iamVjdCBjaGlsZHJlbiAoZGlyZWN0IHZhbHVlKSBwYXNzZWQgdG8gYSBjb21wb25lbnRcclxuICAgICAgICBub3JtYWxpemVWTm9kZVNsb3RzKGluc3RhbmNlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0geyBkZWZhdWx0OiAxIH07XHJcbiAgICB9XHJcbiAgICAvLyBkZWxldGUgc3RhbGUgc2xvdHNcclxuICAgIGlmIChuZWVkRGVsZXRpb25DaGVjaykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNsb3RzKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNJbnRlcm5hbEtleShrZXkpICYmICEoa2V5IGluIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzbG90c1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBcHBDb250ZXh0KCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBhcHA6IG51bGwsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIGlzTmF0aXZlVGFnOiBOTyxcclxuICAgICAgICAgICAgcGVyZm9ybWFuY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzOiB7fSxcclxuICAgICAgICAgICAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiB7fSxcclxuICAgICAgICAgICAgZXJyb3JIYW5kbGVyOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHdhcm5IYW5kbGVyOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9uczoge31cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1peGluczogW10sXHJcbiAgICAgICAgY29tcG9uZW50czoge30sXHJcbiAgICAgICAgZGlyZWN0aXZlczoge30sXHJcbiAgICAgICAgcHJvdmlkZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXHJcbiAgICAgICAgb3B0aW9uc0NhY2hlOiBuZXcgV2Vha01hcCgpLFxyXG4gICAgICAgIHByb3BzQ2FjaGU6IG5ldyBXZWFrTWFwKCksXHJcbiAgICAgICAgZW1pdHNDYWNoZTogbmV3IFdlYWtNYXAoKVxyXG4gICAgfTtcclxufVxyXG5sZXQgdWlkID0gMDtcclxuZnVuY3Rpb24gY3JlYXRlQXBwQVBJKHJlbmRlciwgaHlkcmF0ZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZUFwcChyb290Q29tcG9uZW50LCByb290UHJvcHMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKHJvb3RDb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgIHJvb3RDb21wb25lbnQgPSBPYmplY3QuYXNzaWduKHt9LCByb290Q29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvb3RQcm9wcyAhPSBudWxsICYmICFpc09iamVjdChyb290UHJvcHMpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGByb290IHByb3BzIHBhc3NlZCB0byBhcHAubW91bnQoKSBtdXN0IGJlIGFuIG9iamVjdC5gKTtcclxuICAgICAgICAgICAgcm9vdFByb3BzID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUFwcENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpbnN0YWxsZWRQbHVnaW5zID0gbmV3IFNldCgpO1xyXG4gICAgICAgIGxldCBpc01vdW50ZWQgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBhcHAgPSAoY29udGV4dC5hcHAgPSB7XHJcbiAgICAgICAgICAgIF91aWQ6IHVpZCsrLFxyXG4gICAgICAgICAgICBfY29tcG9uZW50OiByb290Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBfcHJvcHM6IHJvb3RQcm9wcyxcclxuICAgICAgICAgICAgX2NvbnRhaW5lcjogbnVsbCxcclxuICAgICAgICAgICAgX2NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgICAgIF9pbnN0YW5jZTogbnVsbCxcclxuICAgICAgICAgICAgdmVyc2lvbixcclxuICAgICAgICAgICAgZ2V0IGNvbmZpZygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNvbmZpZztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IGNvbmZpZyh2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgYXBwLmNvbmZpZyBjYW5ub3QgYmUgcmVwbGFjZWQuIE1vZGlmeSBpbmRpdmlkdWFsIG9wdGlvbnMgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdXNlKHBsdWdpbiwgLi4ub3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbGxlZFBsdWdpbnMuaGFzKHBsdWdpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgUGx1Z2luIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocGx1Z2luICYmIGlzRnVuY3Rpb24ocGx1Z2luLmluc3RhbGwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2lucy5hZGQocGx1Z2luKTtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW4uaW5zdGFsbChhcHAsIC4uLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbihwbHVnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2lucy5hZGQocGx1Z2luKTtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW4oYXBwLCAuLi5vcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEEgcGx1Z2luIG11c3QgZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IHdpdGggYW4gXCJpbnN0YWxsXCIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBmdW5jdGlvbi5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1peGluKG1peGluKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5taXhpbnMuaW5jbHVkZXMobWl4aW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWl4aW5zLnB1c2gobWl4aW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybignTWl4aW4gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRhcmdldCBhcHAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaXhpbi5uYW1lID8gYDogJHttaXhpbi5uYW1lfWAgOiAnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ01peGlucyBhcmUgb25seSBhdmFpbGFibGUgaW4gYnVpbGRzIHN1cHBvcnRpbmcgT3B0aW9ucyBBUEknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbXBvbmVudChuYW1lLCBjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZSwgY29udGV4dC5jb25maWcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jb21wb25lbnRzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgXCIke25hbWV9XCIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGluIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV0gPSBjb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkaXJlY3RpdmUobmFtZSwgZGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5kaXJlY3RpdmVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBEaXJlY3RpdmUgXCIke25hbWV9XCIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGluIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0gPSBkaXJlY3RpdmU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtb3VudChyb290Q29udGFpbmVyLCBpc0h5ZHJhdGUsIGlzU1ZHKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICM1NTcxXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiByb290Q29udGFpbmVyLl9fdnVlX2FwcF9fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYFRoZXJlIGlzIGFscmVhZHkgYW4gYXBwIGluc3RhbmNlIG1vdW50ZWQgb24gdGhlIGhvc3QgY29udGFpbmVyLlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCBJZiB5b3Ugd2FudCB0byBtb3VudCBhbm90aGVyIGFwcCBvbiB0aGUgc2FtZSBob3N0IGNvbnRhaW5lcixgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgeW91IG5lZWQgdG8gdW5tb3VudCB0aGUgcHJldmlvdXMgYXBwIGJ5IGNhbGxpbmcgXFxgYXBwLnVubW91bnQoKVxcYCBmaXJzdC5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShyb290Q29tcG9uZW50LCByb290UHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlIGFwcCBjb250ZXh0IG9uIHRoZSByb290IFZOb2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBiZSBzZXQgb24gdGhlIHJvb3QgaW5zdGFuY2Ugb24gaW5pdGlhbCBtb3VudC5cclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5hcHBDb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBITVIgcm9vdCByZWxvYWRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVsb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKGNsb25lVk5vZGUodm5vZGUpLCByb290Q29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0h5ZHJhdGUgJiYgaHlkcmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlKHZub2RlLCByb290Q29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcih2bm9kZSwgcm9vdENvbnRhaW5lciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcC5fY29udGFpbmVyID0gcm9vdENvbnRhaW5lcjtcclxuICAgICAgICAgICAgICAgICAgICByb290Q29udGFpbmVyLl9fdnVlX2FwcF9fID0gYXBwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5faW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2xzSW5pdEFwcChhcHAsIHZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RXhwb3NlUHJveHkodm5vZGUuY29tcG9uZW50KSB8fCB2bm9kZS5jb21wb25lbnQucHJveHk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBcHAgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSWYgeW91IHdhbnQgdG8gcmVtb3VudCB0aGUgc2FtZSBhcHAsIG1vdmUgeW91ciBhcHAgY3JlYXRpb24gbG9naWMgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpbnRvIGEgZmFjdG9yeSBmdW5jdGlvbiBhbmQgY3JlYXRlIGZyZXNoIGFwcCBpbnN0YW5jZXMgZm9yIGVhY2ggYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBtb3VudCAtIGUuZy4gXFxgY29uc3QgY3JlYXRlTXlBcHAgPSAoKSA9PiBjcmVhdGVBcHAoQXBwKVxcYGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB1bm1vdW50KCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCBhcHAuX2NvbnRhaW5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2xzVW5tb3VudEFwcChhcHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYXBwLl9jb250YWluZXIuX192dWVfYXBwX187XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDYW5ub3QgdW5tb3VudCBhbiBhcHAgdGhhdCBpcyBub3QgbW91bnRlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcHJvdmlkZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleSBpbiBjb250ZXh0LnByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQXBwIGFscmVhZHkgcHJvdmlkZXMgcHJvcGVydHkgd2l0aCBrZXkgXCIke1N0cmluZyhrZXkpfVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYEl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV3IHZhbHVlLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5wcm92aWRlc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgIH07XHJcbn1cblxuLyoqXHJcbiAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyBhIHRlbXBsYXRlIHJlZlxyXG4gKi9cclxuZnVuY3Rpb24gc2V0UmVmKHJhd1JlZiwgb2xkUmF3UmVmLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIGlzVW5tb3VudCA9IGZhbHNlKSB7XHJcbiAgICBpZiAoaXNBcnJheShyYXdSZWYpKSB7XHJcbiAgICAgICAgcmF3UmVmLmZvckVhY2goKHIsIGkpID0+IHNldFJlZihyLCBvbGRSYXdSZWYgJiYgKGlzQXJyYXkob2xkUmF3UmVmKSA/IG9sZFJhd1JlZltpXSA6IG9sZFJhd1JlZiksIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgaXNVbm1vdW50KSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXN5bmNXcmFwcGVyKHZub2RlKSAmJiAhaXNVbm1vdW50KSB7XHJcbiAgICAgICAgLy8gd2hlbiBtb3VudGluZyBhc3luYyBjb21wb25lbnRzLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUsXHJcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgdGVtcGxhdGUgcmVmIGlzIGZvcndhcmRlZCB0byBpbm5lciBjb21wb25lbnRcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWZWYWx1ZSA9IHZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi9cclxuICAgICAgICA/IGdldEV4cG9zZVByb3h5KHZub2RlLmNvbXBvbmVudCkgfHwgdm5vZGUuY29tcG9uZW50LnByb3h5XHJcbiAgICAgICAgOiB2bm9kZS5lbDtcclxuICAgIGNvbnN0IHZhbHVlID0gaXNVbm1vdW50ID8gbnVsbCA6IHJlZlZhbHVlO1xyXG4gICAgY29uc3QgeyBpOiBvd25lciwgcjogcmVmIH0gPSByYXdSZWY7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFvd25lcikge1xyXG4gICAgICAgIHdhcm4oYE1pc3NpbmcgcmVmIG93bmVyIGNvbnRleHQuIHJlZiBjYW5ub3QgYmUgdXNlZCBvbiBob2lzdGVkIHZub2Rlcy4gYCArXHJcbiAgICAgICAgICAgIGBBIHZub2RlIHdpdGggcmVmIG11c3QgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIHJlbmRlciBmdW5jdGlvbi5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRSZWYgPSBvbGRSYXdSZWYgJiYgb2xkUmF3UmVmLnI7XHJcbiAgICBjb25zdCByZWZzID0gb3duZXIucmVmcyA9PT0gRU1QVFlfT0JKID8gKG93bmVyLnJlZnMgPSB7fSkgOiBvd25lci5yZWZzO1xyXG4gICAgY29uc3Qgc2V0dXBTdGF0ZSA9IG93bmVyLnNldHVwU3RhdGU7XHJcbiAgICAvLyBkeW5hbWljIHJlZiBjaGFuZ2VkLiB1bnNldCBvbGQgcmVmXHJcbiAgICBpZiAob2xkUmVmICE9IG51bGwgJiYgb2xkUmVmICE9PSByZWYpIHtcclxuICAgICAgICBpZiAoaXNTdHJpbmcob2xkUmVmKSkge1xyXG4gICAgICAgICAgICByZWZzW29sZFJlZl0gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIG9sZFJlZikpIHtcclxuICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbb2xkUmVmXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNSZWYob2xkUmVmKSkge1xyXG4gICAgICAgICAgICBvbGRSZWYudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcclxuICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcocmVmLCBvd25lciwgMTIgLyogRXJyb3JDb2Rlcy5GVU5DVElPTl9SRUYgKi8sIFt2YWx1ZSwgcmVmc10pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgX2lzU3RyaW5nID0gaXNTdHJpbmcocmVmKTtcclxuICAgICAgICBjb25zdCBfaXNSZWYgPSBpc1JlZihyZWYpO1xyXG4gICAgICAgIGlmIChfaXNTdHJpbmcgfHwgX2lzUmVmKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvU2V0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5mKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBfaXNTdHJpbmcgPyByZWZzW3JlZl0gOiByZWYudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5tb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FycmF5KGV4aXN0aW5nKSAmJiByZW1vdmUoZXhpc3RpbmcsIHJlZlZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBcnJheShleGlzdGluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzW3JlZl0gPSBbcmVmVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgcmVmKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW3JlZl0gPSByZWZzW3JlZl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gW3JlZlZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmF3UmVmLmspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbcmF3UmVmLmtdID0gcmVmLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFleGlzdGluZy5pbmNsdWRlcyhyZWZWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLnB1c2gocmVmVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoX2lzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmc1tyZWZdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCByZWYpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbcmVmXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9pc1JlZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyYXdSZWYua10gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgdGVtcGxhdGUgcmVmIHR5cGU6JywgcmVmLCBgKCR7dHlwZW9mIHJlZn0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgZG9TZXQuaWQgPSAtMTtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkb1NldCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9TZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybignSW52YWxpZCB0ZW1wbGF0ZSByZWYgdHlwZTonLCByZWYsIGAoJHt0eXBlb2YgcmVmfSlgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxubGV0IGhhc01pc21hdGNoID0gZmFsc2U7XHJcbmNvbnN0IGlzU1ZHQ29udGFpbmVyID0gKGNvbnRhaW5lcikgPT4gL3N2Zy8udGVzdChjb250YWluZXIubmFtZXNwYWNlVVJJKSAmJiBjb250YWluZXIudGFnTmFtZSAhPT0gJ2ZvcmVpZ25PYmplY3QnO1xyXG5jb25zdCBpc0NvbW1lbnQgPSAobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBET01Ob2RlVHlwZXMuQ09NTUVOVCAqLztcclxuLy8gTm90ZTogaHlkcmF0aW9uIGlzIERPTS1zcGVjaWZpY1xyXG4vLyBCdXQgd2UgaGF2ZSB0byBwbGFjZSBpdCBpbiBjb3JlIGR1ZSB0byB0aWdodCBjb3VwbGluZyB3aXRoIGNvcmUgLSBzcGxpdHRpbmdcclxuLy8gaXQgb3V0IGNyZWF0ZXMgYSB0b24gb2YgdW5uZWNlc3NhcnkgY29tcGxleGl0eS5cclxuLy8gSHlkcmF0aW9uIGFsc28gZGVwZW5kcyBvbiBzb21lIHJlbmRlcmVyIGludGVybmFsIGxvZ2ljIHdoaWNoIG5lZWRzIHRvIGJlXHJcbi8vIHBhc3NlZCBpbiB2aWEgYXJndW1lbnRzLlxyXG5mdW5jdGlvbiBjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMocmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgIGNvbnN0IHsgbXQ6IG1vdW50Q29tcG9uZW50LCBwOiBwYXRjaCwgbzogeyBwYXRjaFByb3AsIGNyZWF0ZVRleHQsIG5leHRTaWJsaW5nLCBwYXJlbnROb2RlLCByZW1vdmUsIGluc2VydCwgY3JlYXRlQ29tbWVudCB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IGh5ZHJhdGUgPSAodm5vZGUsIGNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgIGlmICghY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gaHlkcmF0ZSBleGlzdGluZyBtYXJrdXAgYnV0IGNvbnRhaW5lciBpcyBlbXB0eS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFBlcmZvcm1pbmcgZnVsbCBtb3VudCBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyKTtcclxuICAgICAgICAgICAgZmx1c2hQb3N0Rmx1c2hDYnMoKTtcclxuICAgICAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhhc01pc21hdGNoID0gZmFsc2U7XHJcbiAgICAgICAgaHlkcmF0ZU5vZGUoY29udGFpbmVyLmZpcnN0Q2hpbGQsIHZub2RlLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgIGNvbnRhaW5lci5fdm5vZGUgPSB2bm9kZTtcclxuICAgICAgICBpZiAoaGFzTWlzbWF0Y2ggJiYgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMgZXJyb3Igc2hvdWxkIHNob3cgdXAgaW4gcHJvZHVjdGlvblxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBIeWRyYXRpb24gY29tcGxldGVkIGJ1dCBjb250YWlucyBtaXNtYXRjaGVzLmApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlTm9kZSA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzRnJhZ21lbnRTdGFydCA9IGlzQ29tbWVudChub2RlKSAmJiBub2RlLmRhdGEgPT09ICdbJztcclxuICAgICAgICBjb25zdCBvbk1pc21hdGNoID0gKCkgPT4gaGFuZGxlTWlzbWF0Y2gobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgaXNGcmFnbWVudFN0YXJ0KTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcgfSA9IHZub2RlO1xyXG4gICAgICAgIGNvbnN0IGRvbVR5cGUgPSBub2RlLm5vZGVUeXBlO1xyXG4gICAgICAgIHZub2RlLmVsID0gbm9kZTtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnID09PSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi8pIHtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVGV4dDpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAzIC8qIERPTU5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzU3MjggZW1wdHkgdGV4dCBub2RlIGluc2lkZSBhIHNsb3QgY2FuIGNhdXNlIGh5ZHJhdGlvbiBmYWlsdXJlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgc2VydmVyIHJlbmRlcmVkIEhUTUwgd29uJ3QgY29udGFpbiBhIHRleHQgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2bm9kZS5jaGlsZHJlbiA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KCh2bm9kZS5lbCA9IGNyZWF0ZVRleHQoJycpKSwgcGFyZW50Tm9kZShub2RlKSwgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbm9kZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgIT09IHZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gdGV4dCBtaXNtYXRjaDpgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBDbGllbnQ6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS5kYXRhKX1gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBTZXJ2ZXI6ICR7SlNPTi5zdHJpbmdpZnkodm5vZGUuY2hpbGRyZW4pfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmRhdGEgPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbW1lbnQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gOCAvKiBET01Ob2RlVHlwZXMuQ09NTUVOVCAqLyB8fCBpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0aWM6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBkb21UeXBlICE9PSAzIC8qIERPTU5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgYW5jaG9yLCBhZG9wdCBjb250ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzdGF0aWMgdm5vZGUgaGFzIGl0cyBjb250ZW50IHN0cmlwcGVkIGR1cmluZyBidWlsZCxcclxuICAgICAgICAgICAgICAgICAgICAvLyBhZG9wdCBpdCBmcm9tIHRoZSBzZXJ2ZXItcmVuZGVyZWQgSFRNTC5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZWVkVG9BZG9wdENvbnRlbnQgPSAhdm5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdm5vZGUuc3RhdGljQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVlZFRvQWRvcHRDb250ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuY2hpbGRyZW4gKz1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5leHROb2RlLm91dGVySFRNTFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5leHROb2RlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB2bm9kZS5zdGF0aWNDb3VudCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHROb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobmV4dE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dE5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBGcmFnbWVudDpcclxuICAgICAgICAgICAgICAgIGlmICghaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGh5ZHJhdGVGcmFnbWVudChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50eXBlLnRvTG93ZXJDYXNlKCkgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUVsZW1lbnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBzZXR0aW5nIHVwIHRoZSByZW5kZXIgZWZmZWN0LCBpZiB0aGUgaW5pdGlhbCB2bm9kZSBhbHJlYWR5XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFzIC5lbCBzZXQsIHRoZSBjb21wb25lbnQgd2lsbCBwZXJmb3JtIGh5ZHJhdGlvbiBpbnN0ZWFkIG9mIG1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gaXRzIHN1Yi10cmVlLlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLnNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50Q29tcG9uZW50KHZub2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lciksIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IG1heSBiZSBhc3luYywgc28gaW4gdGhlIGNhc2Ugb2YgZnJhZ21lbnRzIHdlIGNhbm5vdCByZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gY29tcG9uZW50J3MgcmVuZGVyZWQgb3V0cHV0IHRvIGRldGVybWluZSB0aGUgZW5kIG9mIHRoZSBmcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluc3RlYWQsIHdlIGRvIGEgbG9va2FoZWFkIHRvIGZpbmQgdGhlIGVuZCBhbmNob3Igbm9kZS5cclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGlzRnJhZ21lbnRTdGFydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvcihub2RlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICM0MjkzIHRlbGVwb3J0IGFzIGNvbXBvbmVudCByb290XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHROb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29tbWVudChuZXh0Tm9kZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUuZGF0YSA9PT0gJ3RlbGVwb3J0IGVuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhuZXh0Tm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vICMzNzg3XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgY29tcG9uZW50IGlzIGFzeW5jLCBpdCBtYXkgZ2V0IG1vdmVkIC8gdW5tb3VudGVkIGJlZm9yZSBpdHNcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbm5lciBjb21wb25lbnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIGdpdmUgaXQgYSBwbGFjZWhvbGRlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIHRoYXQgbWF0Y2hlcyBpdHMgYWRvcHRlZCBET00uXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmNXcmFwcGVyKHZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKEZyYWdtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUuYW5jaG9yID0gbmV4dE5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5leHROb2RlLnByZXZpb3VzU2libGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbmVyLmxhc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDMgPyBjcmVhdGVUZXh0Vk5vZGUoJycpIDogY3JlYXRlVk5vZGUoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUuZWwgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5jb21wb25lbnQuc3ViVHJlZSA9IHN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSB2bm9kZS50eXBlLmh5ZHJhdGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaHlkcmF0ZUNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihwYXJlbnROb2RlKG5vZGUpKSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIEhvc3RWTm9kZSB0eXBlOicsIHR5cGUsIGAoJHt0eXBlb2YgdHlwZX0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV4dE5vZGU7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUVsZW1lbnQgPSAoZWwsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG9wdGltaXplZCA9IG9wdGltaXplZCB8fCAhIXZub2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBwYXRjaEZsYWcsIHNoYXBlRmxhZywgZGlycyB9ID0gdm5vZGU7XHJcbiAgICAgICAgLy8gIzQwMDYgZm9yIGZvcm0gZWxlbWVudHMgd2l0aCBub24tc3RyaW5nIHYtbW9kZWwgdmFsdWUgYmluZGluZ3NcclxuICAgICAgICAvLyBlLmcuIDxvcHRpb24gOnZhbHVlPVwib2JqXCI+LCA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgOnRydWUtdmFsdWU9XCIxXCI+XHJcbiAgICAgICAgY29uc3QgZm9yY2VQYXRjaFZhbHVlID0gKHR5cGUgPT09ICdpbnB1dCcgJiYgZGlycykgfHwgdHlwZSA9PT0gJ29wdGlvbic7XHJcbiAgICAgICAgLy8gc2tpcCBwcm9wcyAmIGNoaWxkcmVuIGlmIHRoaXMgaXMgaG9pc3RlZCBzdGF0aWMgbm9kZXNcclxuICAgICAgICAvLyAjNTQwNSBpbiBkZXYsIGFsd2F5cyBoeWRyYXRlIGNoaWxkcmVuIGZvciBITVJcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IGZvcmNlUGF0Y2hWYWx1ZSB8fCBwYXRjaEZsYWcgIT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLykge1xyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnY3JlYXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcmNlUGF0Y2hWYWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICFvcHRpbWl6ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJiAoMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovIHwgMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZvcmNlUGF0Y2hWYWx1ZSAmJiBrZXkuZW5kc1dpdGgoJ3ZhbHVlJykpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNPbihrZXkpICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hQcm9wKGVsLCBrZXksIG51bGwsIHByb3BzW2tleV0sIGZhbHNlLCB1bmRlZmluZWQsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5vbkNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjbGljayBsaXN0ZW5lcnMgKHdoaWNoIGlzIG1vc3Qgb2Z0ZW4pIHRvIGF2b2lkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIHRocm91Z2ggcHJvcHMuXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hQcm9wKGVsLCAnb25DbGljaycsIG51bGwsIHByb3BzLm9uQ2xpY2ssIGZhbHNlLCB1bmRlZmluZWQsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdm5vZGUgLyBkaXJlY3RpdmUgaG9va3NcclxuICAgICAgICAgICAgbGV0IHZub2RlSG9va3M7XHJcbiAgICAgICAgICAgIGlmICgodm5vZGVIb29rcyA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2tzLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlTW91bnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHZub2RlSG9va3MgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkgfHwgZGlycykge1xyXG4gICAgICAgICAgICAgICAgcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlSG9va3MgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnbW91bnRlZCcpO1xyXG4gICAgICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNoaWxkcmVuXHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovICYmXHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIGVsZW1lbnQgaGFzIGlubmVySFRNTCAvIHRleHRDb250ZW50XHJcbiAgICAgICAgICAgICAgICAhKHByb3BzICYmIChwcm9wcy5pbm5lckhUTUwgfHwgcHJvcHMudGV4dENvbnRlbnQpKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBoeWRyYXRlQ2hpbGRyZW4oZWwuZmlyc3RDaGlsZCwgdm5vZGUsIGVsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIGluIDwke3Zub2RlLnR5cGV9PjogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc2VydmVyIHJlbmRlcmVkIGVsZW1lbnQgY29udGFpbnMgbW9yZSBjaGlsZCBub2RlcyB0aGFuIGNsaWVudCB2ZG9tLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgU1NSZWQgRE9NIGNvbnRhaW5zIG1vcmUgbm9kZXMgdGhhbiBpdCBzaG91bGQuIFJlbW92ZSB0aGVtLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1ciA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGN1cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbC50ZXh0Q29udGVudCAhPT0gdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiB0ZXh0IGNvbnRlbnQgbWlzbWF0Y2ggaW4gPCR7dm5vZGUudHlwZX0+OlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0gQ2xpZW50OiAke2VsLnRleHRDb250ZW50fVxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0gU2VydmVyOiAke3Zub2RlLmNoaWxkcmVufWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gdm5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVsLm5leHRTaWJsaW5nO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVDaGlsZHJlbiA9IChub2RlLCBwYXJlbnRWTm9kZSwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG9wdGltaXplZCA9IG9wdGltaXplZCB8fCAhIXBhcmVudFZOb2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudFZOb2RlLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IGwgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZub2RlID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNoaWxkcmVuW2ldXHJcbiAgICAgICAgICAgICAgICA6IChjaGlsZHJlbltpXSA9IG5vcm1hbGl6ZVZOb2RlKGNoaWxkcmVuW2ldKSk7XHJcbiAgICAgICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gaHlkcmF0ZU5vZGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBUZXh0ICYmICF2bm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gY2hpbGRyZW4gbWlzbWF0Y2ggaW4gPCR7Y29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0+OiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHNlcnZlciByZW5kZXJlZCBlbGVtZW50IGNvbnRhaW5zIGZld2VyIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoZSBTU1JlZCBET00gZGlkbid0IGNvbnRhaW4gZW5vdWdoIG5vZGVzLiBNb3VudCB0aGUgbWlzc2luZyBvbmVzLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlRnJhZ21lbnQgPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBzbG90U2NvcGVJZHM6IGZyYWdtZW50U2xvdFNjb3BlSWRzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoZnJhZ21lbnRTbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzXHJcbiAgICAgICAgICAgICAgICA/IHNsb3RTY29wZUlkcy5jb25jYXQoZnJhZ21lbnRTbG90U2NvcGVJZHMpXHJcbiAgICAgICAgICAgICAgICA6IGZyYWdtZW50U2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IG5leHQgPSBoeWRyYXRlQ2hpbGRyZW4obmV4dFNpYmxpbmcobm9kZSksIHZub2RlLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICBpZiAobmV4dCAmJiBpc0NvbW1lbnQobmV4dCkgJiYgbmV4dC5kYXRhID09PSAnXScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCh2bm9kZS5hbmNob3IgPSBuZXh0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmcmFnbWVudCBkaWRuJ3QgaHlkcmF0ZSBzdWNjZXNzZnVsbHksIHNpbmNlIHdlIGRpZG4ndCBnZXQgYSBlbmQgYW5jaG9yXHJcbiAgICAgICAgICAgIC8vIGJhY2suIFRoaXMgc2hvdWxkIGhhdmUgbGVkIHRvIG5vZGUvY2hpbGRyZW4gbWlzbWF0Y2ggd2FybmluZ3MuXHJcbiAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gc2luY2UgdGhlIGFuY2hvciBpcyBtaXNzaW5nLCB3ZSBuZWVkIHRvIGNyZWF0ZSBvbmUgYW5kIGluc2VydCBpdFxyXG4gICAgICAgICAgICBpbnNlcnQoKHZub2RlLmFuY2hvciA9IGNyZWF0ZUNvbW1lbnQoYF1gKSksIGNvbnRhaW5lciwgbmV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBoYW5kbGVNaXNtYXRjaCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBpc0ZyYWdtZW50KSA9PiB7XHJcbiAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gbm9kZSBtaXNtYXRjaDpcXG4tIENsaWVudCB2bm9kZTpgLCB2bm9kZS50eXBlLCBgXFxuLSBTZXJ2ZXIgcmVuZGVyZWQgRE9NOmAsIG5vZGUsIG5vZGUubm9kZVR5cGUgPT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi9cclxuICAgICAgICAgICAgICAgID8gYCh0ZXh0KWBcclxuICAgICAgICAgICAgICAgIDogaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gJ1snXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgKHN0YXJ0IG9mIGZyYWdtZW50KWBcclxuICAgICAgICAgICAgICAgICAgICA6IGBgKTtcclxuICAgICAgICB2bm9kZS5lbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGlzRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4Y2Vzc2l2ZSBmcmFnbWVudCBub2Rlc1xyXG4gICAgICAgICAgICBjb25zdCBlbmQgPSBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3Iobm9kZSk7XHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0ICE9PSBlbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUobmV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICByZW1vdmUobm9kZSk7XHJcbiAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbmV4dCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgIH07XHJcbiAgICBjb25zdCBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3IgPSAobm9kZSkgPT4ge1xyXG4gICAgICAgIGxldCBtYXRjaCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAobm9kZSAmJiBpc0NvbW1lbnQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgPT09ICdbJylcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaCsrO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJ10nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLS07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdO1xyXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgc3VwcG9ydGVkO1xyXG5sZXQgcGVyZjtcclxuZnVuY3Rpb24gc3RhcnRNZWFzdXJlKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcucGVyZm9ybWFuY2UgJiYgaXNTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIHBlcmYubWFyayhgdnVlLSR7dHlwZX0tJHtpbnN0YW5jZS51aWR9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzUGVyZlN0YXJ0KGluc3RhbmNlLCB0eXBlLCBpc1N1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGVuZE1lYXN1cmUoaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5wZXJmb3JtYW5jZSAmJiBpc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUYWcgPSBgdnVlLSR7dHlwZX0tJHtpbnN0YW5jZS51aWR9YDtcclxuICAgICAgICBjb25zdCBlbmRUYWcgPSBzdGFydFRhZyArIGA6ZW5kYDtcclxuICAgICAgICBwZXJmLm1hcmsoZW5kVGFnKTtcclxuICAgICAgICBwZXJmLm1lYXN1cmUoYDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfT4gJHt0eXBlfWAsIHN0YXJ0VGFnLCBlbmRUYWcpO1xyXG4gICAgICAgIHBlcmYuY2xlYXJNYXJrcyhzdGFydFRhZyk7XHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzUGVyZkVuZChpbnN0YW5jZSwgdHlwZSwgaXNTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N1cHBvcnRlZCgpIHtcclxuICAgIGlmIChzdXBwb3J0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBlcmZvcm1hbmNlKSB7XHJcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgICAgICBwZXJmID0gd2luZG93LnBlcmZvcm1hbmNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgc3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VwcG9ydGVkO1xyXG59XG5cbi8qKlxyXG4gKiBUaGlzIGlzIG9ubHkgY2FsbGVkIGluIGVzbS1idW5kbGVyIGJ1aWxkcy5cclxuICogSXQgaXMgY2FsbGVkIHdoZW4gYSByZW5kZXJlciBpcyBjcmVhdGVkLCBpbiBgYmFzZUNyZWF0ZVJlbmRlcmVyYCBzbyB0aGF0XHJcbiAqIGltcG9ydGluZyBydW50aW1lLWNvcmUgaXMgc2lkZS1lZmZlY3RzIGZyZWUuXHJcbiAqXHJcbiAqIGlzdGFuYnVsLWlnbm9yZS1uZXh0XHJcbiAqL1xyXG5mdW5jdGlvbiBpbml0RmVhdHVyZUZsYWdzKCkge1xyXG4gICAgY29uc3QgbmVlZFdhcm4gPSBbXTtcclxuICAgIGlmICh0eXBlb2YgX19WVUVfT1BUSU9OU19BUElfXyAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLnB1c2goYF9fVlVFX09QVElPTlNfQVBJX19gKTtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfT1BUSU9OU19BUElfXyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX1BST0RfREVWVE9PTFNfXyAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLnB1c2goYF9fVlVFX1BST0RfREVWVE9PTFNfX2ApO1xyXG4gICAgICAgIGdldEdsb2JhbFRoaXMoKS5fX1ZVRV9QUk9EX0RFVlRPT0xTX18gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgbXVsdGkgPSBuZWVkV2Fybi5sZW5ndGggPiAxO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgRmVhdHVyZSBmbGFnJHttdWx0aSA/IGBzYCA6IGBgfSAke25lZWRXYXJuLmpvaW4oJywgJyl9ICR7bXVsdGkgPyBgYXJlYCA6IGBpc2B9IG5vdCBleHBsaWNpdGx5IGRlZmluZWQuIFlvdSBhcmUgcnVubmluZyB0aGUgZXNtLWJ1bmRsZXIgYnVpbGQgb2YgVnVlLCBgICtcclxuICAgICAgICAgICAgYHdoaWNoIGV4cGVjdHMgdGhlc2UgY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZ3MgdG8gYmUgZ2xvYmFsbHkgaW5qZWN0ZWQgYCArXHJcbiAgICAgICAgICAgIGB2aWEgdGhlIGJ1bmRsZXIgY29uZmlnIGluIG9yZGVyIHRvIGdldCBiZXR0ZXIgdHJlZS1zaGFraW5nIGluIHRoZSBgICtcclxuICAgICAgICAgICAgYHByb2R1Y3Rpb24gYnVuZGxlLlxcblxcbmAgK1xyXG4gICAgICAgICAgICBgRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHBzOi8vbGluay52dWVqcy5vcmcvZmVhdHVyZS1mbGFncy5gKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QgPSBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZVxyXG4gICAgO1xyXG4vKipcclxuICogVGhlIGNyZWF0ZVJlbmRlcmVyIGZ1bmN0aW9uIGFjY2VwdHMgdHdvIGdlbmVyaWMgYXJndW1lbnRzOlxyXG4gKiBIb3N0Tm9kZSBhbmQgSG9zdEVsZW1lbnQsIGNvcnJlc3BvbmRpbmcgdG8gTm9kZSBhbmQgRWxlbWVudCB0eXBlcyBpbiB0aGVcclxuICogaG9zdCBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGZvciBydW50aW1lLWRvbSwgSG9zdE5vZGUgd291bGQgYmUgdGhlIERPTVxyXG4gKiBgTm9kZWAgaW50ZXJmYWNlIGFuZCBIb3N0RWxlbWVudCB3b3VsZCBiZSB0aGUgRE9NIGBFbGVtZW50YCBpbnRlcmZhY2UuXHJcbiAqXHJcbiAqIEN1c3RvbSByZW5kZXJlcnMgY2FuIHBhc3MgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzIGxpa2UgdGhpczpcclxuICpcclxuICogYGBgIGpzXHJcbiAqIGNvbnN0IHsgcmVuZGVyLCBjcmVhdGVBcHAgfSA9IGNyZWF0ZVJlbmRlcmVyPE5vZGUsIEVsZW1lbnQ+KHtcclxuICogICBwYXRjaFByb3AsXHJcbiAqICAgLi4ubm9kZU9wc1xyXG4gKiB9KVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucyk7XHJcbn1cclxuLy8gU2VwYXJhdGUgQVBJIGZvciBjcmVhdGluZyBoeWRyYXRpb24tZW5hYmxlZCByZW5kZXJlci5cclxuLy8gSHlkcmF0aW9uIGxvZ2ljIGlzIG9ubHkgdXNlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgbWFraW5nIGl0XHJcbi8vIHRyZWUtc2hha2FibGUuXHJcbmZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucywgY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKTtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucywgY3JlYXRlSHlkcmF0aW9uRm5zKSB7XHJcbiAgICAvLyBjb21waWxlLXRpbWUgZmVhdHVyZSBmbGFncyBjaGVja1xyXG4gICAge1xyXG4gICAgICAgIGluaXRGZWF0dXJlRmxhZ3MoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhcmdldCA9IGdldEdsb2JhbFRoaXMoKTtcclxuICAgIHRhcmdldC5fX1ZVRV9fID0gdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgc2V0RGV2dG9vbHNIb29rKHRhcmdldC5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLCB0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBpbnNlcnQ6IGhvc3RJbnNlcnQsIHJlbW92ZTogaG9zdFJlbW92ZSwgcGF0Y2hQcm9wOiBob3N0UGF0Y2hQcm9wLCBjcmVhdGVFbGVtZW50OiBob3N0Q3JlYXRlRWxlbWVudCwgY3JlYXRlVGV4dDogaG9zdENyZWF0ZVRleHQsIGNyZWF0ZUNvbW1lbnQ6IGhvc3RDcmVhdGVDb21tZW50LCBzZXRUZXh0OiBob3N0U2V0VGV4dCwgc2V0RWxlbWVudFRleHQ6IGhvc3RTZXRFbGVtZW50VGV4dCwgcGFyZW50Tm9kZTogaG9zdFBhcmVudE5vZGUsIG5leHRTaWJsaW5nOiBob3N0TmV4dFNpYmxpbmcsIHNldFNjb3BlSWQ6IGhvc3RTZXRTY29wZUlkID0gTk9PUCwgY2xvbmVOb2RlOiBob3N0Q2xvbmVOb2RlLCBpbnNlcnRTdGF0aWNDb250ZW50OiBob3N0SW5zZXJ0U3RhdGljQ29udGVudCB9ID0gb3B0aW9ucztcclxuICAgIC8vIE5vdGU6IGZ1bmN0aW9ucyBpbnNpZGUgdGhpcyBjbG9zdXJlIHNob3VsZCB1c2UgYGNvbnN0IHh4eCA9ICgpID0+IHt9YFxyXG4gICAgLy8gc3R5bGUgaW4gb3JkZXIgdG8gcHJldmVudCBiZWluZyBpbmxpbmVkIGJ5IG1pbmlmaWVycy5cclxuICAgIGNvbnN0IHBhdGNoID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IgPSBudWxsLCBwYXJlbnRDb21wb25lbnQgPSBudWxsLCBwYXJlbnRTdXNwZW5zZSA9IG51bGwsIGlzU1ZHID0gZmFsc2UsIHNsb3RTY29wZUlkcyA9IG51bGwsIG9wdGltaXplZCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nID8gZmFsc2UgOiAhIW4yLmR5bmFtaWNDaGlsZHJlbikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PT0gbjIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYXRjaGluZyAmIG5vdCBzYW1lIHR5cGUsIHVubW91bnQgb2xkIHRyZWVcclxuICAgICAgICBpZiAobjEgJiYgIWlzU2FtZVZOb2RlVHlwZShuMSwgbjIpKSB7XHJcbiAgICAgICAgICAgIGFuY2hvciA9IGdldE5leHRIb3N0Tm9kZShuMSk7XHJcbiAgICAgICAgICAgIHVubW91bnQobjEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICBuMSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuMi5wYXRjaEZsYWcgPT09IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgbjIuZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZWYsIHNoYXBlRmxhZyB9ID0gbjI7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVGV4dDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NUZXh0KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29tbWVudDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tZW50Tm9kZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXRpYzpcclxuICAgICAgICAgICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRTdGF0aWNOb2RlKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0aWNOb2RlKG4xLCBuMiwgY29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBGcmFnbWVudDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NGcmFnbWVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRWxlbWVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NDb21wb25lbnQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLnByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLnByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBWTm9kZSB0eXBlOicsIHR5cGUsIGAoJHt0eXBlb2YgdHlwZX0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldCByZWZcclxuICAgICAgICBpZiAocmVmICE9IG51bGwgJiYgcGFyZW50Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG4xICYmIG4xLnJlZiwgcGFyZW50U3VzcGVuc2UsIG4yIHx8IG4xLCAhbjIpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzVGV4dCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydCgobjIuZWwgPSBob3N0Q3JlYXRlVGV4dChuMi5jaGlsZHJlbikpLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlbCA9IChuMi5lbCA9IG4xLmVsKTtcclxuICAgICAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzQ29tbWVudE5vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoKG4yLmVsID0gaG9zdENyZWF0ZUNvbW1lbnQobjIuY2hpbGRyZW4gfHwgJycpKSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50U3RhdGljTm9kZSA9IChuMiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQobjIuY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgbjIuZWwsIG4yLmFuY2hvcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZXYgLyBITVIgb25seVxyXG4gICAgICovXHJcbiAgICBjb25zdCBwYXRjaFN0YXRpY05vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgLy8gc3RhdGljIG5vZGVzIGFyZSBvbmx5IHBhdGNoZWQgZHVyaW5nIGRldiBmb3IgSE1SXHJcbiAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSBob3N0TmV4dFNpYmxpbmcobjEuYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nXHJcbiAgICAgICAgICAgIHJlbW92ZVN0YXRpY05vZGUobjEpO1xyXG4gICAgICAgICAgICBbbjIuZWwsIG4yLmFuY2hvcl0gPSBob3N0SW5zZXJ0U3RhdGljQ29udGVudChuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIG4yLmFuY2hvciA9IG4xLmFuY2hvcjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0sIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBuZXh0U2libGluZyk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdEluc2VydChhbmNob3IsIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0pID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NFbGVtZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgbjIudHlwZSA9PT0gJ3N2Zyc7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgbW91bnRFbGVtZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoRWxlbWVudChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50RWxlbWVudCA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGxldCBlbDtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNoYXBlRmxhZywgdHJhbnNpdGlvbiwgcGF0Y2hGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB2bm9kZS5lbCAmJlxyXG4gICAgICAgICAgICBob3N0Q2xvbmVOb2RlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID09PSAtMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi8pIHtcclxuICAgICAgICAgICAgLy8gSWYgYSB2bm9kZSBoYXMgbm9uLW51bGwgZWwsIGl0IG1lYW5zIGl0J3MgYmVpbmcgcmV1c2VkLlxyXG4gICAgICAgICAgICAvLyBPbmx5IHN0YXRpYyB2bm9kZXMgY2FuIGJlIHJldXNlZCwgc28gaXRzIG1vdW50ZWQgRE9NIG5vZGVzIHNob3VsZCBiZVxyXG4gICAgICAgICAgICAvLyBleGFjdGx5IHRoZSBzYW1lLCBhbmQgd2UgY2FuIHNpbXBseSBkbyBhIGNsb25lIGhlcmUuXHJcbiAgICAgICAgICAgIC8vIG9ubHkgZG8gdGhpcyBpbiBwcm9kdWN0aW9uIHNpbmNlIGNsb25lZCB0cmVlcyBjYW5ub3QgYmUgSE1SIHVwZGF0ZWQuXHJcbiAgICAgICAgICAgIGVsID0gdm5vZGUuZWwgPSBob3N0Q2xvbmVOb2RlKHZub2RlLmVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsID0gdm5vZGUuZWwgPSBob3N0Q3JlYXRlRWxlbWVudCh2bm9kZS50eXBlLCBpc1NWRywgcHJvcHMgJiYgcHJvcHMuaXMsIHByb3BzKTtcclxuICAgICAgICAgICAgLy8gbW91bnQgY2hpbGRyZW4gZmlyc3QsIHNpbmNlIHNvbWUgcHJvcHMgbWF5IHJlbHkgb24gY2hpbGQgY29udGVudFxyXG4gICAgICAgICAgICAvLyBiZWluZyBhbHJlYWR5IHJlbmRlcmVkLCBlLmcuIGA8c2VsZWN0IHZhbHVlPmBcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIHZub2RlLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKHZub2RlLmNoaWxkcmVuLCBlbCwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcgJiYgdHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2NyZWF0ZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3ZhbHVlJyAmJiAhaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIG51bGwsIHByb3BzW2tleV0sIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIFNwZWNpYWwgY2FzZSBmb3Igc2V0dGluZyB2YWx1ZSBvbiBET00gZWxlbWVudHM6XHJcbiAgICAgICAgICAgICAgICAgKiAtIGl0IGNhbiBiZSBvcmRlci1zZW5zaXRpdmUgKGUuZy4gc2hvdWxkIGJlIHNldCAqYWZ0ZXIqIG1pbi9tYXgsICMyMzI1LCAjNDAyNClcclxuICAgICAgICAgICAgICAgICAqIC0gaXQgbmVlZHMgdG8gYmUgZm9yY2VkICgjMTQ3MSlcclxuICAgICAgICAgICAgICAgICAqICMyMzUzIHByb3Bvc2VzIGFkZGluZyBhbm90aGVyIHJlbmRlcmVyIG9wdGlvbiB0byBjb25maWd1cmUgdGhpcywgYnV0XHJcbiAgICAgICAgICAgICAgICAgKiB0aGUgcHJvcGVydGllcyBhZmZlY3RzIGFyZSBzbyBmaW5pdGUgaXQgaXMgd29ydGggc3BlY2lhbCBjYXNpbmcgaXRcclxuICAgICAgICAgICAgICAgICAqIGhlcmUgdG8gcmVkdWNlIHRoZSBjb21wbGV4aXR5LiAoU3BlY2lhbCBjYXNpbmcgaXQgYWxzbyBzaG91bGQgbm90XHJcbiAgICAgICAgICAgICAgICAgKiBhZmZlY3Qgbm9uLURPTSByZW5kZXJlcnMpXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGlmICgndmFsdWUnIGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgbnVsbCwgcHJvcHMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2NvcGVJZFxyXG4gICAgICAgICAgICBzZXRTY29wZUlkKGVsLCB2bm9kZSwgdm5vZGUuc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWwsICdfX3Zub2RlJywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZub2RlLFxyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbCwgJ19fdnVlUGFyZW50Q29tcG9uZW50Jywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudENvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAjMTU4MyBGb3IgaW5zaWRlIHN1c3BlbnNlICsgc3VzcGVuc2Ugbm90IHJlc29sdmVkIGNhc2UsIGVudGVyIGhvb2sgc2hvdWxkIGNhbGwgd2hlbiBzdXNwZW5zZSByZXNvbHZlZFxyXG4gICAgICAgIC8vICMxNjg5IEZvciBpbnNpZGUgc3VzcGVuc2UgKyBzdXNwZW5zZSByZXNvbHZlZCBjYXNlLCBqdXN0IGNhbGwgaXRcclxuICAgICAgICBjb25zdCBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyA9ICghcGFyZW50U3VzcGVuc2UgfHwgKHBhcmVudFN1c3BlbnNlICYmICFwYXJlbnRTdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSkgJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQ7XHJcbiAgICAgICAgaWYgKG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkgfHxcclxuICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgfHxcclxuICAgICAgICAgICAgZGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgJiYgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ21vdW50ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZXRTY29wZUlkID0gKGVsLCB2bm9kZSwgc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpID0+IHtcclxuICAgICAgICBpZiAoc2NvcGVJZCkge1xyXG4gICAgICAgICAgICBob3N0U2V0U2NvcGVJZChlbCwgc2NvcGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbG90U2NvcGVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzbG90U2NvcGVJZHNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgbGV0IHN1YlRyZWUgPSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgc3ViVHJlZS5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlLnBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgc3ViVHJlZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyU2luZ2xlUm9vdChzdWJUcmVlLmNoaWxkcmVuKSB8fCBzdWJUcmVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2bm9kZSA9PT0gc3ViVHJlZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Vk5vZGUgPSBwYXJlbnRDb21wb25lbnQudm5vZGU7XHJcbiAgICAgICAgICAgICAgICBzZXRTY29wZUlkKGVsLCBwYXJlbnRWTm9kZSwgcGFyZW50Vk5vZGUuc2NvcGVJZCwgcGFyZW50Vk5vZGUuc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQucGFyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudENoaWxkcmVuID0gKGNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBzdGFydCA9IDApID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IChjaGlsZHJlbltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjaGlsZHJlbltpXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pKTtcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgY2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaEVsZW1lbnQgPSAobjEsIG4yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBlbCA9IChuMi5lbCA9IG4xLmVsKTtcclxuICAgICAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgZGlycyB9ID0gbjI7XHJcbiAgICAgICAgLy8gIzE0MjYgdGFrZSB0aGUgb2xkIHZub2RlJ3MgcGF0Y2ggZmxhZyBpbnRvIGFjY291bnQgc2luY2UgdXNlciBtYXkgY2xvbmUgYVxyXG4gICAgICAgIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCB2bm9kZSwgd2hpY2ggZGUtb3B0cyB0byBGVUxMX1BST1BTXHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IG4xLnBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLztcclxuICAgICAgICBjb25zdCBvbGRQcm9wcyA9IG4xLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBjb25zdCBuZXdQcm9wcyA9IG4yLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIC8vIGRpc2FibGUgcmVjdXJzZSBpbiBiZWZvcmVVcGRhdGUgaG9va3NcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQgJiYgdG9nZ2xlUmVjdXJzZShwYXJlbnRDb21wb25lbnQsIGZhbHNlKTtcclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5ld1Byb3BzLm9uVm5vZGVCZWZvcmVVcGRhdGUpKSB7XHJcbiAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgbjIsIG4xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZVVwZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJlbnRDb21wb25lbnQgJiYgdG9nZ2xlUmVjdXJzZShwYXJlbnRDb21wb25lbnQsIHRydWUpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICAvLyBITVIgdXBkYXRlZCwgZm9yY2UgZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyA9IDA7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcmVDaGlsZHJlblNWRyA9IGlzU1ZHICYmIG4yLnR5cGUgIT09ICdmb3JlaWduT2JqZWN0JztcclxuICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgZWwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGFyZUNoaWxkcmVuU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCkge1xyXG4gICAgICAgICAgICAvLyBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGVsLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBhcmVDaGlsZHJlblNWRywgc2xvdFNjb3BlSWRzLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoZSBwcmVzZW5jZSBvZiBhIHBhdGNoRmxhZyBtZWFucyB0aGlzIGVsZW1lbnQncyByZW5kZXIgY29kZSB3YXNcclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBhbmQgY2FuIHRha2UgdGhlIGZhc3QgcGF0aC5cclxuICAgICAgICAgICAgLy8gaW4gdGhpcyBwYXRoIG9sZCBub2RlIGFuZCBuZXcgbm9kZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIHRoZSBzYW1lIHNoYXBlXHJcbiAgICAgICAgICAgIC8vIChpLmUuIGF0IHRoZSBleGFjdCBzYW1lIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UgdGVtcGxhdGUpXHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgcHJvcHMgY29udGFpbiBkeW5hbWljIGtleXMsIGZ1bGwgZGlmZiBuZWVkZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoUHJvcHMoZWwsIG4yLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNsYXNzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIGNsYXNzIGJpbmRpbmdzLlxyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDIgLyogUGF0Y2hGbGFncy5DTEFTUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRQcm9wcy5jbGFzcyAhPT0gbmV3UHJvcHMuY2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ2NsYXNzJywgbnVsbCwgbmV3UHJvcHMuY2xhc3MsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBzdHlsZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBzdHlsZSBiaW5kaW5nc1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDQgLyogUGF0Y2hGbGFncy5TVFlMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICdzdHlsZScsIG9sZFByb3BzLnN0eWxlLCBuZXdQcm9wcy5zdHlsZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgcHJvcC9hdHRyIGJpbmRpbmdzXHJcbiAgICAgICAgICAgICAgICAvLyBvdGhlciB0aGFuIGNsYXNzIGFuZCBzdHlsZS4gVGhlIGtleXMgb2YgZHluYW1pYyBwcm9wL2F0dHJzIGFyZSBzYXZlZCBmb3JcclxuICAgICAgICAgICAgICAgIC8vIGZhc3RlciBpdGVyYXRpb24uXHJcbiAgICAgICAgICAgICAgICAvLyBOb3RlIGR5bmFtaWMga2V5cyBsaWtlIDpbZm9vXT1cImJhclwiIHdpbGwgY2F1c2UgdGhpcyBvcHRpbWl6YXRpb24gdG9cclxuICAgICAgICAgICAgICAgIC8vIGJhaWwgb3V0IGFuZCBnbyB0aHJvdWdoIGEgZnVsbCBkaWZmIGJlY2F1c2Ugd2UgbmVlZCB0byB1bnNldCB0aGUgb2xkIGtleVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmbGFnIGlzIHByZXNlbnQgdGhlbiBkeW5hbWljUHJvcHMgbXVzdCBiZSBub24tbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBuMi5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvVXBkYXRlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3BzVG9VcGRhdGVbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzE0NzEgZm9yY2UgcGF0Y2ggdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT09IHByZXYgfHwga2V5ID09PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCBuMS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0ZXh0XHJcbiAgICAgICAgICAgIC8vIFRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIG9ubHkgZHluYW1pYyB0ZXh0IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChuMS5jaGlsZHJlbiAhPT0gbjIuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkICYmIGR5bmFtaWNDaGlsZHJlbiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIHVub3B0aW1pemVkLCBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hQcm9wcyhlbCwgbjIsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5ld1Byb3BzLm9uVm5vZGVVcGRhdGVkKSB8fCBkaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xyXG4gICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKG4yLCBuMSwgcGFyZW50Q29tcG9uZW50LCAndXBkYXRlZCcpO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIFRoZSBmYXN0IHBhdGggZm9yIGJsb2Nrcy5cclxuICAgIGNvbnN0IHBhdGNoQmxvY2tDaGlsZHJlbiA9IChvbGRDaGlsZHJlbiwgbmV3Q2hpbGRyZW4sIGZhbGxiYWNrQ29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWTm9kZSA9IG5ld0NoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNvbnRhaW5lciAocGFyZW50IGVsZW1lbnQpIGZvciB0aGUgcGF0Y2guXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IFxyXG4gICAgICAgICAgICAvLyBvbGRWTm9kZSBtYXkgYmUgYW4gZXJyb3JlZCBhc3luYyBzZXR1cCgpIGNvbXBvbmVudCBpbnNpZGUgU3VzcGVuc2VcclxuICAgICAgICAgICAgLy8gd2hpY2ggd2lsbCBub3QgaGF2ZSBhIG1vdW50ZWQgZWxlbWVudFxyXG4gICAgICAgICAgICBvbGRWTm9kZS5lbCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBhIEZyYWdtZW50LCB3ZSBuZWVkIHRvIHByb3ZpZGUgdGhlIGFjdHVhbCBwYXJlbnRcclxuICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBGcmFnbWVudCBpdHNlbGYgc28gaXQgY2FuIG1vdmUgaXRzIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgKG9sZFZOb2RlLnR5cGUgPT09IEZyYWdtZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBkaWZmZXJlbnQgbm9kZXMsIHRoZXJlIGlzIGdvaW5nIHRvIGJlIGEgcmVwbGFjZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhbHNvIHJlcXVpcmVzIHRoZSBjb3JyZWN0IHBhcmVudCBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAhaXNTYW1lVk5vZGVUeXBlKG9sZFZOb2RlLCBuZXdWTm9kZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGEgY29tcG9uZW50LCBpdCBjb3VsZCBjb250YWluIGFueXRoaW5nLlxyXG4gICAgICAgICAgICAgICAgICAgIG9sZFZOb2RlLnNoYXBlRmxhZyAmICg2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovIHwgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykpXHJcbiAgICAgICAgICAgICAgICA/IGhvc3RQYXJlbnROb2RlKG9sZFZOb2RlLmVsKVxyXG4gICAgICAgICAgICAgICAgOiAvLyBJbiBvdGhlciBjYXNlcywgdGhlIHBhcmVudCBjb250YWluZXIgaXMgbm90IGFjdHVhbGx5IHVzZWQgc28gd2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IHBhc3MgdGhlIGJsb2NrIGVsZW1lbnQgaGVyZSB0byBhdm9pZCBhIERPTSBwYXJlbnROb2RlIGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tDb250YWluZXI7XHJcbiAgICAgICAgICAgIHBhdGNoKG9sZFZOb2RlLCBuZXdWTm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hQcm9wcyA9IChlbCwgdm5vZGUsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAob2xkUHJvcHMgIT09IG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBzdHJpbmcgaXMgbm90IHZhbGlkIHByb3BcclxuICAgICAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5ld1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gb2xkUHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIC8vIGRlZmVyIHBhdGNoaW5nIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiAmJiBrZXkgIT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2xkUHJvcHMgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXJ2ZWRQcm9wKGtleSkgJiYgIShrZXkgaW4gbmV3UHJvcHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgb2xkUHJvcHNba2V5XSwgbnVsbCwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBuZXdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgb2xkUHJvcHMudmFsdWUsIG5ld1Byb3BzLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzRnJhZ21lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEFuY2hvciA9IChuMi5lbCA9IG4xID8gbjEuZWwgOiBob3N0Q3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50RW5kQW5jaG9yID0gKG4yLmFuY2hvciA9IG4xID8gbjEuYW5jaG9yIDogaG9zdENyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gbjI7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAvLyAjNTUyMyBkZXYgcm9vdCBmcmFnbWVudCBtYXkgaW5oZXJpdCBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgIChpc0htclVwZGF0aW5nIHx8IHBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLykpIHtcclxuICAgICAgICAgICAgLy8gSE1SIHVwZGF0ZWQgLyBEZXYgcm9vdCBmcmFnbWVudCAody8gY29tbWVudHMpLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgYSBzbG90IGZyYWdtZW50IHdpdGggOnNsb3R0ZWQgc2NvcGUgaWRzXHJcbiAgICAgICAgaWYgKGZyYWdtZW50U2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkc1xyXG4gICAgICAgICAgICAgICAgPyBzbG90U2NvcGVJZHMuY29uY2F0KGZyYWdtZW50U2xvdFNjb3BlSWRzKVxyXG4gICAgICAgICAgICAgICAgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChmcmFnbWVudFN0YXJ0QW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZnJhZ21lbnRFbmRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gYSBmcmFnbWVudCBjYW4gb25seSBoYXZlIGFycmF5IGNoaWxkcmVuXHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgYXJlIGVpdGhlciBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyLCBvciBpbXBsaWNpdGx5IGNyZWF0ZWRcclxuICAgICAgICAgICAgLy8gZnJvbSBhcnJheXMuXHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4objIuY2hpbGRyZW4sIGNvbnRhaW5lciwgZnJhZ21lbnRFbmRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnICYgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gIzI3MTUgdGhlIHByZXZpb3VzIGZyYWdtZW50IGNvdWxkJ3ZlIGJlZW4gYSBCQUlMZWQgb25lIGFzIGEgcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAvLyBvZiByZW5kZXJTbG90KCkgd2l0aCBubyB2YWxpZCBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgbjEuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhIHN0YWJsZSBmcmFnbWVudCAodGVtcGxhdGUgcm9vdCBvciA8dGVtcGxhdGUgdi1mb3I+KSBkb2Vzbid0IG5lZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIHBhdGNoIGNoaWxkcmVuIG9yZGVyLCBidXQgaXQgbWF5IGNvbnRhaW4gZHluYW1pY0NoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgLy8gIzIwODAgaWYgdGhlIHN0YWJsZSBmcmFnbWVudCBoYXMgYSBrZXksIGl0J3MgYSA8dGVtcGxhdGUgdi1mb3I+IHRoYXQgbWF5XHJcbiAgICAgICAgICAgICAgICAvLyAgZ2V0IG1vdmVkIGFyb3VuZC4gTWFrZSBzdXJlIGFsbCByb290IGxldmVsIHZub2RlcyBpbmhlcml0IGVsLlxyXG4gICAgICAgICAgICAgICAgLy8gIzIxMzQgb3IgaWYgaXQncyBhIGNvbXBvbmVudCByb290LCBpdCBtYXkgYWxzbyBnZXQgbW92ZWQgYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAvLyBhcyB0aGUgY29tcG9uZW50IGlzIGJlaW5nIG1vdmVkLlxyXG4gICAgICAgICAgICAgICAgbjIua2V5ICE9IG51bGwgfHxcclxuICAgICAgICAgICAgICAgICAgICAocGFyZW50Q29tcG9uZW50ICYmIG4yID09PSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgdHJ1ZSAvKiBzaGFsbG93ICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGtleWVkIC8gdW5rZXllZCwgb3IgbWFudWFsIGZyYWdtZW50cy5cclxuICAgICAgICAgICAgICAgIC8vIGZvciBrZXllZCAmIHVua2V5ZWQsIHNpbmNlIHRoZXkgYXJlIGNvbXBpbGVyIGdlbmVyYXRlZCBmcm9tIHYtZm9yLFxyXG4gICAgICAgICAgICAgICAgLy8gZWFjaCBjaGlsZCBpcyBndWFyYW50ZWVkIHRvIGJlIGEgYmxvY2sgc28gdGhlIGZyYWdtZW50IHdpbGwgbmV2ZXJcclxuICAgICAgICAgICAgICAgIC8vIGhhdmUgZHluYW1pY0NoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGNvbnRhaW5lciwgZnJhZ21lbnRFbmRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0NvbXBvbmVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBuMi5zbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHM7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKG4yLnNoYXBlRmxhZyAmIDUxMiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9LRVBUX0FMSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQuY3R4LmFjdGl2YXRlKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudENvbXBvbmVudChuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB1cGRhdGVDb21wb25lbnQobjEsIG4yLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudENvbXBvbmVudCA9IChpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAoaW5pdGlhbFZOb2RlLmNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlKGluaXRpYWxWTm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSkpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgIHJlZ2lzdGVySE1SKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQoaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgbW91bnRgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IHJlbmRlcmVyIGludGVybmFscyBmb3Iga2VlcEFsaXZlXHJcbiAgICAgICAgaWYgKGlzS2VlcEFsaXZlKGluaXRpYWxWTm9kZSkpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuY3R4LnJlbmRlcmVyID0gaW50ZXJuYWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZXNvbHZlIHByb3BzIGFuZCBzbG90cyBmb3Igc2V0dXAgY29udGV4dFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldHVwQ29tcG9uZW50KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGluaXRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXR1cCgpIGlzIGFzeW5jLiBUaGlzIGNvbXBvbmVudCByZWxpZXMgb24gYXN5bmMgbG9naWMgdG8gYmUgcmVzb2x2ZWRcclxuICAgICAgICAvLyBiZWZvcmUgcHJvY2VlZGluZ1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS5hc3luY0RlcCkge1xyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSAmJiBwYXJlbnRTdXNwZW5zZS5yZWdpc3RlckRlcChpbnN0YW5jZSwgc2V0dXBSZW5kZXJFZmZlY3QpO1xyXG4gICAgICAgICAgICAvLyBHaXZlIGl0IGEgcGxhY2Vob2xkZXIgaWYgdGhpcyBpcyBub3QgaHlkcmF0aW9uXHJcbiAgICAgICAgICAgIC8vIFRPRE8gaGFuZGxlIHNlbGYtZGVmaW5lZCBmYWxsYmFja1xyXG4gICAgICAgICAgICBpZiAoIWluaXRpYWxWTm9kZS5lbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAoaW5zdGFuY2Uuc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKENvbW1lbnQpKTtcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tZW50Tm9kZShudWxsLCBwbGFjZWhvbGRlciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoaW5zdGFuY2UsIGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1cGRhdGVDb21wb25lbnQgPSAobjEsIG4yLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChuMi5jb21wb25lbnQgPSBuMS5jb21wb25lbnQpO1xyXG4gICAgICAgIGlmIChzaG91bGRVcGRhdGVDb21wb25lbnQobjEsIG4yLCBvcHRpbWl6ZWQpKSB7XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hc3luY0RlcCAmJlxyXG4gICAgICAgICAgICAgICAgIWluc3RhbmNlLmFzeW5jUmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGFzeW5jICYgc3RpbGwgcGVuZGluZyAtIGp1c3QgdXBkYXRlIHByb3BzIGFuZCBzbG90c1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhlIGNvbXBvbmVudCdzIHJlYWN0aXZlIGVmZmVjdCBmb3IgcmVuZGVyIGlzbid0IHNldC11cCB5ZXRcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQobjIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKGluc3RhbmNlLCBuMiwgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubmV4dCA9IG4yO1xyXG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGUgY2hpbGQgY29tcG9uZW50IGlzIGFsc28gcXVldWVkLCByZW1vdmUgaXQgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgIC8vIGRvdWJsZSB1cGRhdGluZyB0aGUgc2FtZSBjaGlsZCBjb21wb25lbnQgaW4gdGhlIHNhbWUgZmx1c2guXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSm9iKGluc3RhbmNlLnVwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZS51cGRhdGUgaXMgdGhlIHJlYWN0aXZlIGVmZmVjdC5cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBubyB1cGRhdGUgbmVlZGVkLiBqdXN0IGNvcHkgb3ZlciBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnZub2RlID0gbjI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNldHVwUmVuZGVyRWZmZWN0ID0gKGluc3RhbmNlLCBpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFVwZGF0ZUZuID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZWwsIHByb3BzIH0gPSBpbml0aWFsVk5vZGU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGJtLCBtLCBwYXJlbnQgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBc3luY1dyYXBwZXJWTm9kZSA9IGlzQXN5bmNXcmFwcGVyKGluaXRpYWxWTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmVNb3VudCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAoYm0pIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VBcnJheUZucyhibSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlQmVmb3JlTW91bnRcclxuICAgICAgICAgICAgICAgIGlmICghaXNBc3luY1dyYXBwZXJWTm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWwgJiYgaHlkcmF0ZU5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSBoYXMgYWRvcHRlZCBob3N0IG5vZGUgLSBwZXJmb3JtIGh5ZHJhdGlvbiBpbnN0ZWFkIG9mIG1vdW50LlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVTdWJUcmVlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdWJUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHlkcmF0ZU5vZGUoZWwsIGluc3RhbmNlLnN1YlRyZWUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzeW5jV3JhcHBlclZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxWTm9kZS50eXBlLl9fYXN5bmNMb2FkZXIoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3RlOiB3ZSBhcmUgbW92aW5nIHRoZSByZW5kZXIgY2FsbCBpbnRvIGFuIGFzeW5jIGNhbGxiYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBtZWFucyBpdCB3b24ndCB0cmFjayBkZXBlbmRlbmNpZXMgLSBidXQgaXQncyBvayBiZWNhdXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgc2VydmVyLXJlbmRlcmVkIGFzeW5jIHdyYXBwZXIgaXMgYWxyZWFkeSBpbiByZXNvbHZlZCBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGNoYW5nZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gIWluc3RhbmNlLmlzVW5tb3VudGVkICYmIGh5ZHJhdGVTdWJUcmVlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHlkcmF0ZVN1YlRyZWUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJUcmVlID0gKGluc3RhbmNlLnN1YlRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgc3ViVHJlZSwgY29udGFpbmVyLCBhbmNob3IsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxWTm9kZS5lbCA9IHN1YlRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudGVkIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KG0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVNb3VudGVkXHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZU1vdW50ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVkSW5pdGlhbFZOb2RlID0gaW5pdGlhbFZOb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIHNjb3BlZEluaXRpYWxWTm9kZSksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlZCBob29rIGZvciBrZWVwLWFsaXZlIHJvb3RzLlxyXG4gICAgICAgICAgICAgICAgLy8gIzE3NDIgYWN0aXZhdGVkIGhvb2sgbXVzdCBiZSBhY2Nlc3NlZCBhZnRlciBmaXJzdCByZW5kZXJcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBob29rIG1heSBiZSBpbmplY3RlZCBieSBhIGNoaWxkIGtlZXAtYWxpdmVcclxuICAgICAgICAgICAgICAgIGlmIChpbml0aWFsVk5vZGUuc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhcmVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FzeW5jV3JhcHBlcihwYXJlbnQudm5vZGUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC52bm9kZS5zaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuYSAmJiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoaW5zdGFuY2UuYSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaXNNb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAjMjQ1ODogZGVmZXJlbmNlIG1vdW50LW9ubHkgb2JqZWN0IHBhcmFtZXRlcnMgdG8gcHJldmVudCBtZW1sZWFrc1xyXG4gICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlID0gY29udGFpbmVyID0gYW5jaG9yID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgbXV0YXRpb24gb2YgY29tcG9uZW50J3Mgb3duIHN0YXRlIChuZXh0OiBudWxsKVxyXG4gICAgICAgICAgICAgICAgLy8gT1IgcGFyZW50IGNhbGxpbmcgcHJvY2Vzc0NvbXBvbmVudCAobmV4dDogVk5vZGUpXHJcbiAgICAgICAgICAgICAgICBsZXQgeyBuZXh0LCBidSwgdSwgcGFyZW50LCB2bm9kZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luTmV4dCA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChuZXh0IHx8IGluc3RhbmNlLnZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIERpc2FsbG93IGNvbXBvbmVudCBlZmZlY3QgcmVjdXJzaW9uIGR1cmluZyBwcmUtbGlmZWN5Y2xlIGhvb2tzLlxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0LmVsID0gdm5vZGUuZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKGluc3RhbmNlLCBuZXh0LCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHZub2RlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlVXBkYXRlIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChidSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJ1KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVCZWZvcmVVcGRhdGVcclxuICAgICAgICAgICAgICAgIGlmICgodm5vZGVIb29rID0gbmV4dC5wcm9wcyAmJiBuZXh0LnByb3BzLm9uVm5vZGVCZWZvcmVVcGRhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBuZXh0LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIC8vIHJlbmRlclxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2VHJlZSA9IGluc3RhbmNlLnN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdWJUcmVlID0gbmV4dFRyZWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBhdGNoKHByZXZUcmVlLCBuZXh0VHJlZSwgXHJcbiAgICAgICAgICAgICAgICAvLyBwYXJlbnQgbWF5IGhhdmUgY2hhbmdlZCBpZiBpdCdzIGluIGEgdGVsZXBvcnRcclxuICAgICAgICAgICAgICAgIGhvc3RQYXJlbnROb2RlKHByZXZUcmVlLmVsKSwgXHJcbiAgICAgICAgICAgICAgICAvLyBhbmNob3IgbWF5IGhhdmUgY2hhbmdlZCBpZiBpdCdzIGluIGEgZnJhZ21lbnRcclxuICAgICAgICAgICAgICAgIGdldE5leHRIb3N0Tm9kZShwcmV2VHJlZSksIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV4dC5lbCA9IG5leHRUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbk5leHQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZWxmLXRyaWdnZXJlZCB1cGRhdGUuIEluIGNhc2Ugb2YgSE9DLCB1cGRhdGUgcGFyZW50IGNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIGVsLiBIT0MgaXMgaW5kaWNhdGVkIGJ5IHBhcmVudCBpbnN0YW5jZSdzIHN1YlRyZWUgcG9pbnRpbmdcclxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGlsZCBjb21wb25lbnQncyB2bm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChpbnN0YW5jZSwgbmV4dFRyZWUuZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlZCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAodSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCh1LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlVXBkYXRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXh0LnByb3BzICYmIG5leHQucHJvcHMub25Wbm9kZVVwZGF0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgbmV4dCwgdm5vZGUpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY3JlYXRlIHJlYWN0aXZlIGVmZmVjdCBmb3IgcmVuZGVyaW5nXHJcbiAgICAgICAgY29uc3QgZWZmZWN0ID0gKGluc3RhbmNlLmVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChjb21wb25lbnRVcGRhdGVGbiwgKCkgPT4gcXVldWVKb2IodXBkYXRlKSwgaW5zdGFuY2Uuc2NvcGUgLy8gdHJhY2sgaXQgaW4gY29tcG9uZW50J3MgZWZmZWN0IHNjb3BlXHJcbiAgICAgICAgKSk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlID0gKGluc3RhbmNlLnVwZGF0ZSA9ICgpID0+IGVmZmVjdC5ydW4oKSk7XHJcbiAgICAgICAgdXBkYXRlLmlkID0gaW5zdGFuY2UudWlkO1xyXG4gICAgICAgIC8vIGFsbG93UmVjdXJzZVxyXG4gICAgICAgIC8vICMxODAxLCAjMjA0MyBjb21wb25lbnQgcmVuZGVyIGVmZmVjdHMgc2hvdWxkIGFsbG93IHJlY3Vyc2l2ZSB1cGRhdGVzXHJcbiAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmFjayA9IGluc3RhbmNlLnJ0Y1xyXG4gICAgICAgICAgICAgICAgPyBlID0+IGludm9rZUFycmF5Rm5zKGluc3RhbmNlLnJ0YywgZSlcclxuICAgICAgICAgICAgICAgIDogdm9pZCAwO1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmlnZ2VyID0gaW5zdGFuY2UucnRnXHJcbiAgICAgICAgICAgICAgICA/IGUgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRnLCBlKVxyXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XHJcbiAgICAgICAgICAgIHVwZGF0ZS5vd25lckluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlciA9IChpbnN0YW5jZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBuZXh0Vk5vZGUuY29tcG9uZW50ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgY29uc3QgcHJldlByb3BzID0gaW5zdGFuY2Uudm5vZGUucHJvcHM7XHJcbiAgICAgICAgaW5zdGFuY2Uudm5vZGUgPSBuZXh0Vk5vZGU7XHJcbiAgICAgICAgaW5zdGFuY2UubmV4dCA9IG51bGw7XHJcbiAgICAgICAgdXBkYXRlUHJvcHMoaW5zdGFuY2UsIG5leHRWTm9kZS5wcm9wcywgcHJldlByb3BzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIHVwZGF0ZVNsb3RzKGluc3RhbmNlLCBuZXh0Vk5vZGUuY2hpbGRyZW4sIG9wdGltaXplZCk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIC8vIHByb3BzIHVwZGF0ZSBtYXkgaGF2ZSB0cmlnZ2VyZWQgcHJlLWZsdXNoIHdhdGNoZXJzLlxyXG4gICAgICAgIC8vIGZsdXNoIHRoZW0gYmVmb3JlIHRoZSByZW5kZXIgdXBkYXRlLlxyXG4gICAgICAgIGZsdXNoUHJlRmx1c2hDYnMoKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hDaGlsZHJlbiA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGMxID0gbjEgJiYgbjEuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgcHJldlNoYXBlRmxhZyA9IG4xID8gbjEuc2hhcGVGbGFnIDogMDtcclxuICAgICAgICBjb25zdCBjMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgcGF0Y2hGbGFnLCBzaGFwZUZsYWcgfSA9IG4yO1xyXG4gICAgICAgIC8vIGZhc3QgcGF0aFxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSBlaXRoZXIgZnVsbHkta2V5ZWQgb3IgbWl4ZWQgKHNvbWUga2V5ZWQgc29tZSBub3QpXHJcbiAgICAgICAgICAgICAgICAvLyBwcmVzZW5jZSBvZiBwYXRjaEZsYWcgbWVhbnMgY2hpbGRyZW4gYXJlIGd1YXJhbnRlZWQgdG8gYmUgYXJyYXlzXHJcbiAgICAgICAgICAgICAgICBwYXRjaEtleWVkQ2hpbGRyZW4oYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChwYXRjaEZsYWcgJiAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB1bmtleWVkXHJcbiAgICAgICAgICAgICAgICBwYXRjaFVua2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoaWxkcmVuIGhhcyAzIHBvc3NpYmlsaXRpZXM6IHRleHQsIGFycmF5IG9yIG5vIGNoaWxkcmVuLlxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAvLyB0ZXh0IGNoaWxkcmVuIGZhc3QgcGF0aFxyXG4gICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihjMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMyICE9PSBjMSkge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGNvbnRhaW5lciwgYzIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXYgY2hpbGRyZW4gd2FzIGFycmF5XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBhcnJheXMsIGNhbm5vdCBhc3N1bWUgYW55dGhpbmcsIGRvIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbm8gbmV3IGNoaWxkcmVuLCBqdXN0IHVubW91bnQgb2xkXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXYgY2hpbGRyZW4gd2FzIHRleHQgT1IgbnVsbFxyXG4gICAgICAgICAgICAgICAgLy8gbmV3IGNoaWxkcmVuIGlzIGFycmF5IE9SIG51bGxcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudCBuZXcgaWYgYXJyYXlcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hVbmtleWVkQ2hpbGRyZW4gPSAoYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgYzEgPSBjMSB8fCBFTVBUWV9BUlI7XHJcbiAgICAgICAgYzIgPSBjMiB8fCBFTVBUWV9BUlI7XHJcbiAgICAgICAgY29uc3Qgb2xkTGVuZ3RoID0gYzEubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGMyLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBjb21tb25MZW5ndGggPSBNYXRoLm1pbihvbGRMZW5ndGgsIG5ld0xlbmd0aCk7XHJcbiAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbW1vbkxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pKTtcclxuICAgICAgICAgICAgcGF0Y2goYzFbaV0sIG5leHRDaGlsZCwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2xkTGVuZ3RoID4gbmV3TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBvbGRcclxuICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlLCBmYWxzZSwgY29tbW9uTGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IG5ld1xyXG4gICAgICAgICAgICBtb3VudENoaWxkcmVuKGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBjb21tb25MZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBjYW4gYmUgYWxsLWtleWVkIG9yIG1peGVkXHJcbiAgICBjb25zdCBwYXRjaEtleWVkQ2hpbGRyZW4gPSAoYzEsIGMyLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICAgIGNvbnN0IGwyID0gYzIubGVuZ3RoO1xyXG4gICAgICAgIGxldCBlMSA9IGMxLmxlbmd0aCAtIDE7IC8vIHByZXYgZW5kaW5nIGluZGV4XHJcbiAgICAgICAgbGV0IGUyID0gbDIgLSAxOyAvLyBuZXh0IGVuZGluZyBpbmRleFxyXG4gICAgICAgIC8vIDEuIHN5bmMgZnJvbSBzdGFydFxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyAoYSBiKSBkIGVcclxuICAgICAgICB3aGlsZSAoaSA8PSBlMSAmJiBpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4xID0gYzFbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IG4yID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKG4xLCBuMiwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAyLiBzeW5jIGZyb20gZW5kXHJcbiAgICAgICAgLy8gYSAoYiBjKVxyXG4gICAgICAgIC8vIGQgZSAoYiBjKVxyXG4gICAgICAgIHdoaWxlIChpIDw9IGUxICYmIGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgY29uc3QgbjEgPSBjMVtlMV07XHJcbiAgICAgICAgICAgIGNvbnN0IG4yID0gKGMyW2UyXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltlMl0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2UyXSkpO1xyXG4gICAgICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKG4xLCBuMiwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZTEtLTtcclxuICAgICAgICAgICAgZTItLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMy4gY29tbW9uIHNlcXVlbmNlICsgbW91bnRcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSAxLCBlMiA9IDJcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIGMgKGEgYilcclxuICAgICAgICAvLyBpID0gMCwgZTEgPSAtMSwgZTIgPSAwXHJcbiAgICAgICAgaWYgKGkgPiBlMSkge1xyXG4gICAgICAgICAgICBpZiAoaSA8PSBlMikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFBvcyA9IGUyICsgMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IG5leHRQb3MgPCBsMiA/IGMyW25leHRQb3NdLmVsIDogcGFyZW50QW5jaG9yO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNC4gY29tbW9uIHNlcXVlbmNlICsgdW5tb3VudFxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDIsIGUyID0gMVxyXG4gICAgICAgIC8vIGEgKGIgYylcclxuICAgICAgICAvLyAoYiBjKVxyXG4gICAgICAgIC8vIGkgPSAwLCBlMSA9IDAsIGUyID0gLTFcclxuICAgICAgICBlbHNlIGlmIChpID4gZTIpIHtcclxuICAgICAgICAgICAgd2hpbGUgKGkgPD0gZTEpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoYzFbaV0sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDUuIHVua25vd24gc2VxdWVuY2VcclxuICAgICAgICAvLyBbaSAuLi4gZTEgKyAxXTogYSBiIFtjIGQgZV0gZiBnXHJcbiAgICAgICAgLy8gW2kgLi4uIGUyICsgMV06IGEgYiBbZSBkIGMgaF0gZiBnXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gNCwgZTIgPSA1XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHMxID0gaTsgLy8gcHJldiBzdGFydGluZyBpbmRleFxyXG4gICAgICAgICAgICBjb25zdCBzMiA9IGk7IC8vIG5leHQgc3RhcnRpbmcgaW5kZXhcclxuICAgICAgICAgICAgLy8gNS4xIGJ1aWxkIGtleTppbmRleCBtYXAgZm9yIG5ld0NoaWxkcmVuXHJcbiAgICAgICAgICAgIGNvbnN0IGtleVRvTmV3SW5kZXhNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IHMyOyBpIDw9IGUyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRDaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5VG9OZXdJbmRleE1hcC5oYXMobmV4dENoaWxkLmtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgRHVwbGljYXRlIGtleXMgZm91bmQgZHVyaW5nIHVwZGF0ZTpgLCBKU09OLnN0cmluZ2lmeShuZXh0Q2hpbGQua2V5KSwgYE1ha2Ugc3VyZSBrZXlzIGFyZSB1bmlxdWUuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGtleVRvTmV3SW5kZXhNYXAuc2V0KG5leHRDaGlsZC5rZXksIGkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIDUuMiBsb29wIHRocm91Z2ggb2xkIGNoaWxkcmVuIGxlZnQgdG8gYmUgcGF0Y2hlZCBhbmQgdHJ5IHRvIHBhdGNoXHJcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIG5vZGVzICYgcmVtb3ZlIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50XHJcbiAgICAgICAgICAgIGxldCBqO1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hlZCA9IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvQmVQYXRjaGVkID0gZTIgLSBzMiArIDE7XHJcbiAgICAgICAgICAgIGxldCBtb3ZlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB1c2VkIHRvIHRyYWNrIHdoZXRoZXIgYW55IG5vZGUgaGFzIG1vdmVkXHJcbiAgICAgICAgICAgIGxldCBtYXhOZXdJbmRleFNvRmFyID0gMDtcclxuICAgICAgICAgICAgLy8gd29ya3MgYXMgTWFwPG5ld0luZGV4LCBvbGRJbmRleD5cclxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IG9sZEluZGV4IGlzIG9mZnNldCBieSArMVxyXG4gICAgICAgICAgICAvLyBhbmQgb2xkSW5kZXggPSAwIGlzIGEgc3BlY2lhbCB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBuZXcgbm9kZSBoYXNcclxuICAgICAgICAgICAgLy8gbm8gY29ycmVzcG9uZGluZyBvbGQgbm9kZS5cclxuICAgICAgICAgICAgLy8gdXNlZCBmb3IgZGV0ZXJtaW5pbmcgbG9uZ2VzdCBzdGFibGUgc3Vic2VxdWVuY2VcclxuICAgICAgICAgICAgY29uc3QgbmV3SW5kZXhUb09sZEluZGV4TWFwID0gbmV3IEFycmF5KHRvQmVQYXRjaGVkKTtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRvQmVQYXRjaGVkOyBpKyspXHJcbiAgICAgICAgICAgICAgICBuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSBzMTsgaSA8PSBlMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2Q2hpbGQgPSBjMVtpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaGVkID49IHRvQmVQYXRjaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG5ldyBjaGlsZHJlbiBoYXZlIGJlZW4gcGF0Y2hlZCBzbyB0aGlzIGNhbiBvbmx5IGJlIGEgcmVtb3ZhbFxyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBuZXdJbmRleDtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2Q2hpbGQua2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdJbmRleCA9IGtleVRvTmV3SW5kZXhNYXAuZ2V0KHByZXZDaGlsZC5rZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8ga2V5LWxlc3Mgbm9kZSwgdHJ5IHRvIGxvY2F0ZSBhIGtleS1sZXNzIG5vZGUgb2YgdGhlIHNhbWUgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IHMyOyBqIDw9IGUyOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4VG9PbGRJbmRleE1hcFtqIC0gczJdID09PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NhbWVWTm9kZVR5cGUocHJldkNoaWxkLCBjMltqXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ID0gajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KHByZXZDaGlsZCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdJbmRleFRvT2xkSW5kZXhNYXBbbmV3SW5kZXggLSBzMl0gPSBpICsgMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPj0gbWF4TmV3SW5kZXhTb0Zhcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhOZXdJbmRleFNvRmFyID0gbmV3SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKHByZXZDaGlsZCwgYzJbbmV3SW5kZXhdLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIDUuMyBtb3ZlIGFuZCBtb3VudFxyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBsb25nZXN0IHN0YWJsZSBzdWJzZXF1ZW5jZSBvbmx5IHdoZW4gbm9kZXMgaGF2ZSBtb3ZlZFxyXG4gICAgICAgICAgICBjb25zdCBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZSA9IG1vdmVkXHJcbiAgICAgICAgICAgICAgICA/IGdldFNlcXVlbmNlKG5ld0luZGV4VG9PbGRJbmRleE1hcClcclxuICAgICAgICAgICAgICAgIDogRU1QVFlfQVJSO1xyXG4gICAgICAgICAgICBqID0gaW5jcmVhc2luZ05ld0luZGV4U2VxdWVuY2UubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgLy8gbG9vcGluZyBiYWNrd2FyZHMgc28gdGhhdCB3ZSBjYW4gdXNlIGxhc3QgcGF0Y2hlZCBub2RlIGFzIGFuY2hvclxyXG4gICAgICAgICAgICBmb3IgKGkgPSB0b0JlUGF0Y2hlZCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBzMiArIGk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q2hpbGQgPSBjMltuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dEluZGV4ICsgMSA8IGwyID8gYzJbbmV4dEluZGV4ICsgMV0uZWwgOiBwYXJlbnRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXhUb09sZEluZGV4TWFwW2ldID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW91bnQgbmV3XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpZjpcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBzdGFibGUgc3Vic2VxdWVuY2UgKGUuZy4gYSByZXZlcnNlKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9SIGN1cnJlbnQgbm9kZSBpcyBub3QgYW1vbmcgdGhlIHN0YWJsZSBzZXF1ZW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqIDwgMCB8fCBpICE9PSBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZVtqXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKG5leHRDaGlsZCwgY29udGFpbmVyLCBhbmNob3IsIDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqLS07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdmUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSwgcGFyZW50U3VzcGVuc2UgPSBudWxsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBlbCwgdHlwZSwgdHJhbnNpdGlvbiwgY2hpbGRyZW4sIHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgdm5vZGUuc3VzcGVuc2UubW92ZShjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUubW92ZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbW92ZShjaGlsZHJlbltpXSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KHZub2RlLmFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICAgICAgbW92ZVN0YXRpY05vZGUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzaW5nbGUgbm9kZXNcclxuICAgICAgICBjb25zdCBuZWVkVHJhbnNpdGlvbiA9IG1vdmVUeXBlICE9PSAyIC8qIE1vdmVUeXBlLlJFT1JERVIgKi8gJiZcclxuICAgICAgICAgICAgc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjtcclxuICAgICAgICBpZiAobmVlZFRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKG1vdmVUeXBlID09PSAwIC8qIE1vdmVUeXBlLkVOVEVSICovKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB0cmFuc2l0aW9uLmVudGVyKGVsKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWF2ZSwgZGVsYXlMZWF2ZSwgYWZ0ZXJMZWF2ZSB9ID0gdHJhbnNpdGlvbjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZSA9ICgpID0+IGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmZvcm1MZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2ZShlbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5TGVhdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxheUxlYXZlKGVsLCByZW1vdmUsIHBlcmZvcm1MZWF2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50ID0gKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSA9IGZhbHNlLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHJlZiwgY2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIC8vIHVuc2V0IHJlZlxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5jdHguZGVhY3RpdmF0ZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkSW52b2tlRGlycyA9IHNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmIGRpcnM7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkSW52b2tlVm5vZGVIb29rID0gIWlzQXN5bmNXcmFwcGVyKHZub2RlKTtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIGlmIChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiZcclxuICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVVbm1vdW50KSkge1xyXG4gICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgdW5tb3VudENvbXBvbmVudCh2bm9kZS5jb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLnN1c3BlbnNlLnVubW91bnQocGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hvdWxkSW52b2tlRGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlVW5tb3VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS50eXBlLnJlbW92ZSh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgb3B0aW1pemVkLCBpbnRlcm5hbHMsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkeW5hbWljQ2hpbGRyZW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICMxMTUzOiBmYXN0IHBhdGggc2hvdWxkIG5vdCBiZSB0YWtlbiBmb3Igbm9uLXN0YWJsZSAodi1mb3IpIGZyYWdtZW50c1xyXG4gICAgICAgICAgICAgICAgKHR5cGUgIT09IEZyYWdtZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhdGNoRmxhZyA+IDAgJiYgcGF0Y2hGbGFnICYgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmFzdCBwYXRoIGZvciBibG9jayBub2Rlczogb25seSBuZWVkIHRvIHVubW91bnQgZHluYW1pYyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihkeW5hbWljQ2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgodHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmXHJcbiAgICAgICAgICAgICAgICAgICAgKDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovIHwgMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqLykpIHx8XHJcbiAgICAgICAgICAgICAgICAoIW9wdGltaXplZCAmJiBzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZG9SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiZcclxuICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVVbm1vdW50ZWQpKSB8fFxyXG4gICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAndW5tb3VudGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlID0gdm5vZGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZWwsIGFuY2hvciwgdHJhbnNpdGlvbiB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgIXRyYW5zaXRpb24ucGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UmVtb3ZlKGNoaWxkLmVsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVGcmFnbWVudChlbCwgYW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICAgICAgcmVtb3ZlU3RhdGljTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGVyZm9ybVJlbW92ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uICYmICF0cmFuc2l0aW9uLnBlcnNpc3RlZCAmJiB0cmFuc2l0aW9uLmFmdGVyTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBsZWF2ZSwgZGVsYXlMZWF2ZSB9ID0gdHJhbnNpdGlvbjtcclxuICAgICAgICAgICAgY29uc3QgcGVyZm9ybUxlYXZlID0gKCkgPT4gbGVhdmUoZWwsIHBlcmZvcm1SZW1vdmUpO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXlMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgZGVsYXlMZWF2ZSh2bm9kZS5lbCwgcGVyZm9ybVJlbW92ZSwgcGVyZm9ybUxlYXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBlcmZvcm1MZWF2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwZXJmb3JtUmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZUZyYWdtZW50ID0gKGN1ciwgZW5kKSA9PiB7XHJcbiAgICAgICAgLy8gRm9yIGZyYWdtZW50cywgZGlyZWN0bHkgcmVtb3ZlIGFsbCBjb250YWluZWQgRE9NIG5vZGVzLlxyXG4gICAgICAgIC8vIChmcmFnbWVudCBjaGlsZCBub2RlcyBjYW5ub3QgaGF2ZSB0cmFuc2l0aW9uKVxyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChjdXIgIT09IGVuZCkge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGN1cik7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoY3VyKTtcclxuICAgICAgICAgICAgY3VyID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdFJlbW92ZShlbmQpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnRDb21wb25lbnQgPSAoaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgIHVucmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGJ1bSwgc2NvcGUsIHVwZGF0ZSwgc3ViVHJlZSwgdW0gfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIC8vIGJlZm9yZVVubW91bnQgaG9va1xyXG4gICAgICAgIGlmIChidW0pIHtcclxuICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYnVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc3RvcCBlZmZlY3RzIGluIGNvbXBvbmVudCBzY29wZVxyXG4gICAgICAgIHNjb3BlLnN0b3AoKTtcclxuICAgICAgICAvLyB1cGRhdGUgbWF5IGJlIG51bGwgaWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJlZm9yZSBpdHMgYXN5bmNcclxuICAgICAgICAvLyBzZXR1cCBoYXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgaWYgKHVwZGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHNjaGVkdWxlciB3aWxsIG5vIGxvbmdlciBpbnZva2UgaXRcclxuICAgICAgICAgICAgdXBkYXRlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB1bm1vdW50KHN1YlRyZWUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB1bm1vdW50ZWQgaG9va1xyXG4gICAgICAgIGlmICh1bSkge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QodW0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuaXNVbm1vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAvLyBBIGNvbXBvbmVudCB3aXRoIGFzeW5jIGRlcCBpbnNpZGUgYSBwZW5kaW5nIHN1c3BlbnNlIGlzIHVubW91bnRlZCBiZWZvcmVcclxuICAgICAgICAvLyBpdHMgYXN5bmMgZGVwIHJlc29sdmVzLiBUaGlzIHNob3VsZCByZW1vdmUgdGhlIGRlcCBmcm9tIHRoZSBzdXNwZW5zZSwgYW5kXHJcbiAgICAgICAgLy8gY2F1c2UgdGhlIHN1c3BlbnNlIHRvIHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgdGhhdCB3YXMgdGhlIGxhc3QgZGVwLlxyXG4gICAgICAgIGlmIChwYXJlbnRTdXNwZW5zZSAmJlxyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nQnJhbmNoICYmXHJcbiAgICAgICAgICAgICFwYXJlbnRTdXNwZW5zZS5pc1VubW91bnRlZCAmJlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5hc3luY0RlcCAmJlxyXG4gICAgICAgICAgICAhaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCAmJlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zdXNwZW5zZUlkID09PSBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UuZGVwcy0tO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50U3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50UmVtb3ZlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnRDaGlsZHJlbiA9IChjaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUgPSBmYWxzZSwgb3B0aW1pemVkID0gZmFsc2UsIHN0YXJ0ID0gMCkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHVubW91bnQoY2hpbGRyZW5baV0sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBnZXROZXh0SG9zdE5vZGUgPSB2bm9kZSA9PiB7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldE5leHRIb3N0Tm9kZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdm5vZGUuc3VzcGVuc2UubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaG9zdE5leHRTaWJsaW5nKCh2bm9kZS5hbmNob3IgfHwgdm5vZGUuZWwpKTtcclxuICAgIH07XHJcbiAgICBjb25zdCByZW5kZXIgPSAodm5vZGUsIGNvbnRhaW5lciwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAodm5vZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyLl92bm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjb250YWluZXIuX3Zub2RlLCBudWxsLCBudWxsLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2goY29udGFpbmVyLl92bm9kZSB8fCBudWxsLCB2bm9kZSwgY29udGFpbmVyLCBudWxsLCBudWxsLCBudWxsLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZsdXNoUHJlRmx1c2hDYnMoKTtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgIGNvbnRhaW5lci5fdm5vZGUgPSB2bm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBpbnRlcm5hbHMgPSB7XHJcbiAgICAgICAgcDogcGF0Y2gsXHJcbiAgICAgICAgdW06IHVubW91bnQsXHJcbiAgICAgICAgbTogbW92ZSxcclxuICAgICAgICByOiByZW1vdmUsXHJcbiAgICAgICAgbXQ6IG1vdW50Q29tcG9uZW50LFxyXG4gICAgICAgIG1jOiBtb3VudENoaWxkcmVuLFxyXG4gICAgICAgIHBjOiBwYXRjaENoaWxkcmVuLFxyXG4gICAgICAgIHBiYzogcGF0Y2hCbG9ja0NoaWxkcmVuLFxyXG4gICAgICAgIG46IGdldE5leHRIb3N0Tm9kZSxcclxuICAgICAgICBvOiBvcHRpb25zXHJcbiAgICB9O1xyXG4gICAgbGV0IGh5ZHJhdGU7XHJcbiAgICBsZXQgaHlkcmF0ZU5vZGU7XHJcbiAgICBpZiAoY3JlYXRlSHlkcmF0aW9uRm5zKSB7XHJcbiAgICAgICAgW2h5ZHJhdGUsIGh5ZHJhdGVOb2RlXSA9IGNyZWF0ZUh5ZHJhdGlvbkZucyhpbnRlcm5hbHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByZW5kZXIsXHJcbiAgICAgICAgaHlkcmF0ZSxcclxuICAgICAgICBjcmVhdGVBcHA6IGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHRvZ2dsZVJlY3Vyc2UoeyBlZmZlY3QsIHVwZGF0ZSB9LCBhbGxvd2VkKSB7XHJcbiAgICBlZmZlY3QuYWxsb3dSZWN1cnNlID0gdXBkYXRlLmFsbG93UmVjdXJzZSA9IGFsbG93ZWQ7XHJcbn1cclxuLyoqXHJcbiAqICMxMTU2XHJcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgSE1SLWVuYWJsZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIHN0YXRpYyBub2Rlc1xyXG4gKiBpbnNpZGUgYSBibG9jayBhbHNvIGluaGVyaXQgdGhlIERPTSBlbGVtZW50IGZyb20gdGhlIHByZXZpb3VzIHRyZWUgc28gdGhhdFxyXG4gKiBITVIgdXBkYXRlcyAod2hpY2ggYXJlIGZ1bGwgdXBkYXRlcykgY2FuIHJldHJpZXZlIHRoZSBlbGVtZW50IGZvciBwYXRjaGluZy5cclxuICpcclxuICogIzIwODBcclxuICogSW5zaWRlIGtleWVkIGB0ZW1wbGF0ZWAgZnJhZ21lbnQgc3RhdGljIGNoaWxkcmVuLCBpZiBhIGZyYWdtZW50IGlzIG1vdmVkLFxyXG4gKiB0aGUgY2hpbGRyZW4gd2lsbCBhbHdheXMgYmUgbW92ZWQuIFRoZXJlZm9yZSwgaW4gb3JkZXIgdG8gZW5zdXJlIGNvcnJlY3QgbW92ZVxyXG4gKiBwb3NpdGlvbiwgZWwgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHByZXZpb3VzIG5vZGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2gxID0gbjEuY2hpbGRyZW47XHJcbiAgICBjb25zdCBjaDIgPSBuMi5jaGlsZHJlbjtcclxuICAgIGlmIChpc0FycmF5KGNoMSkgJiYgaXNBcnJheShjaDIpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaDEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgLy8gdGhpcyBpcyBvbmx5IGNhbGxlZCBpbiB0aGUgb3B0aW1pemVkIHBhdGggc28gYXJyYXkgY2hpbGRyZW4gYXJlXHJcbiAgICAgICAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgdm5vZGVzXHJcbiAgICAgICAgICAgIGNvbnN0IGMxID0gY2gxW2ldO1xyXG4gICAgICAgICAgICBsZXQgYzIgPSBjaDJbaV07XHJcbiAgICAgICAgICAgIGlmIChjMi5zaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJiAhYzIuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYzIucGF0Y2hGbGFnIDw9IDAgfHwgYzIucGF0Y2hGbGFnID09PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYzIgPSBjaDJbaV0gPSBjbG9uZUlmTW91bnRlZChjaDJbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGMyLmVsID0gYzEuZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3cpXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihjMSwgYzIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGFsc28gaW5oZXJpdCBmb3IgY29tbWVudCBub2RlcywgYnV0IG5vdCBwbGFjZWhvbGRlcnMgKGUuZy4gdi1pZiB3aGljaFxyXG4gICAgICAgICAgICAvLyB3b3VsZCBoYXZlIHJlY2VpdmVkIC5lbCBkdXJpbmcgYmxvY2sgcGF0Y2gpXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYzIudHlwZSA9PT0gQ29tbWVudCAmJiAhYzIuZWwpIHtcclxuICAgICAgICAgICAgICAgIGMyLmVsID0gYzEuZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9uZ2VzdF9pbmNyZWFzaW5nX3N1YnNlcXVlbmNlXHJcbmZ1bmN0aW9uIGdldFNlcXVlbmNlKGFycikge1xyXG4gICAgY29uc3QgcCA9IGFyci5zbGljZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gWzBdO1xyXG4gICAgbGV0IGksIGosIHUsIHYsIGM7XHJcbiAgICBjb25zdCBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYXJySSA9IGFycltpXTtcclxuICAgICAgICBpZiAoYXJySSAhPT0gMCkge1xyXG4gICAgICAgICAgICBqID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgaWYgKGFycltqXSA8IGFyckkpIHtcclxuICAgICAgICAgICAgICAgIHBbaV0gPSBqO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaSk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1ID0gMDtcclxuICAgICAgICAgICAgdiA9IHJlc3VsdC5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICB3aGlsZSAodSA8IHYpIHtcclxuICAgICAgICAgICAgICAgIGMgPSAodSArIHYpID4+IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyW3Jlc3VsdFtjXV0gPCBhcnJJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdSA9IGMgKyAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdiA9IGM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFyckkgPCBhcnJbcmVzdWx0W3VdXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcFtpXSA9IHJlc3VsdFt1IC0gMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbdV0gPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdSA9IHJlc3VsdC5sZW5ndGg7XHJcbiAgICB2ID0gcmVzdWx0W3UgLSAxXTtcclxuICAgIHdoaWxlICh1LS0gPiAwKSB7XHJcbiAgICAgICAgcmVzdWx0W3VdID0gdjtcclxuICAgICAgICB2ID0gcFt2XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cblxuY29uc3QgaXNUZWxlcG9ydCA9ICh0eXBlKSA9PiB0eXBlLl9faXNUZWxlcG9ydDtcclxuY29uc3QgaXNUZWxlcG9ydERpc2FibGVkID0gKHByb3BzKSA9PiBwcm9wcyAmJiAocHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMuZGlzYWJsZWQgPT09ICcnKTtcclxuY29uc3QgaXNUYXJnZXRTVkcgPSAodGFyZ2V0KSA9PiB0eXBlb2YgU1ZHRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGFyZ2V0IGluc3RhbmNlb2YgU1ZHRWxlbWVudDtcclxuY29uc3QgcmVzb2x2ZVRhcmdldCA9IChwcm9wcywgc2VsZWN0KSA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXRTZWxlY3RvciA9IHByb3BzICYmIHByb3BzLnRvO1xyXG4gICAgaWYgKGlzU3RyaW5nKHRhcmdldFNlbGVjdG9yKSkge1xyXG4gICAgICAgIGlmICghc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQ3VycmVudCByZW5kZXJlciBkb2VzIG5vdCBzdXBwb3J0IHN0cmluZyB0YXJnZXQgZm9yIFRlbGVwb3J0cy4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYChtaXNzaW5nIHF1ZXJ5U2VsZWN0b3IgcmVuZGVyZXIgb3B0aW9uKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdCh0YXJnZXRTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBGYWlsZWQgdG8gbG9jYXRlIFRlbGVwb3J0IHRhcmdldCB3aXRoIHNlbGVjdG9yIFwiJHt0YXJnZXRTZWxlY3Rvcn1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBOb3RlIHRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGV4aXN0IGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQgLSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGkuZS4gdGhlIHRhcmdldCBjYW5ub3QgYmUgcmVuZGVyZWQgYnkgdGhlIGNvbXBvbmVudCBpdHNlbGYsIGFuZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGlkZWFsbHkgc2hvdWxkIGJlIG91dHNpZGUgb2YgdGhlIGVudGlyZSBWdWUgY29tcG9uZW50IHRyZWUuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICF0YXJnZXRTZWxlY3RvciAmJiAhaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIFRlbGVwb3J0IHRhcmdldDogJHt0YXJnZXRTZWxlY3Rvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldFNlbGVjdG9yO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBUZWxlcG9ydEltcGwgPSB7XHJcbiAgICBfX2lzVGVsZXBvcnQ6IHRydWUsXHJcbiAgICBwcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgaW50ZXJuYWxzKSB7XHJcbiAgICAgICAgY29uc3QgeyBtYzogbW91bnRDaGlsZHJlbiwgcGM6IHBhdGNoQ2hpbGRyZW4sIHBiYzogcGF0Y2hCbG9ja0NoaWxkcmVuLCBvOiB7IGluc2VydCwgcXVlcnlTZWxlY3RvciwgY3JlYXRlVGV4dCwgY3JlYXRlQ29tbWVudCB9IH0gPSBpbnRlcm5hbHM7XHJcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBpc1RlbGVwb3J0RGlzYWJsZWQobjIucHJvcHMpO1xyXG4gICAgICAgIGxldCB7IHNoYXBlRmxhZywgY2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiB9ID0gbjI7XHJcbiAgICAgICAgLy8gIzMzMDJcclxuICAgICAgICAvLyBITVIgdXBkYXRlZCwgZm9yY2UgZnVsbCBkaWZmXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBpbnNlcnQgYW5jaG9ycyBpbiB0aGUgbWFpbiB2aWV3XHJcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gKG4yLmVsID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZUNvbW1lbnQoJ3RlbGVwb3J0IHN0YXJ0JylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBjb25zdCBtYWluQW5jaG9yID0gKG4yLmFuY2hvciA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVDb21tZW50KCd0ZWxlcG9ydCBlbmQnKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGluc2VydChwbGFjZWhvbGRlciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBpbnNlcnQobWFpbkFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAobjIudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChuMi5wcm9wcywgcXVlcnlTZWxlY3RvcikpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRBbmNob3IgPSAobjIudGFyZ2V0QW5jaG9yID0gY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQodGFyZ2V0QW5jaG9yLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgLy8gIzI2NTIgd2UgY291bGQgYmUgdGVsZXBvcnRpbmcgZnJvbSBhIG5vbi1TVkcgdHJlZSBpbnRvIGFuIFNWRyB0cmVlXHJcbiAgICAgICAgICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IGlzVGFyZ2V0U1ZHKHRhcmdldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQgb24gbW91bnQ6JywgdGFyZ2V0LCBgKCR7dHlwZW9mIHRhcmdldH0pYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbW91bnQgPSAoY29udGFpbmVyLCBhbmNob3IpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIFRlbGVwb3J0ICphbHdheXMqIGhhcyBBcnJheSBjaGlsZHJlbi4gVGhpcyBpcyBlbmZvcmNlZCBpbiBib3RoIHRoZVxyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgYW5kIHZub2RlIGNoaWxkcmVuIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50KGNvbnRhaW5lciwgbWFpbkFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudCh0YXJnZXQsIHRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjb250ZW50XHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5BbmNob3IgPSAobjIuYW5jaG9yID0gbjEuYW5jaG9yKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKG4yLnRhcmdldCA9IG4xLnRhcmdldCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IChuMi50YXJnZXRBbmNob3IgPSBuMS50YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB3YXNEaXNhYmxlZCA9IGlzVGVsZXBvcnREaXNhYmxlZChuMS5wcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb250YWluZXIgPSB3YXNEaXNhYmxlZCA/IGNvbnRhaW5lciA6IHRhcmdldDtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuY2hvciA9IHdhc0Rpc2FibGVkID8gbWFpbkFuY2hvciA6IHRhcmdldEFuY2hvcjtcclxuICAgICAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBpc1RhcmdldFNWRyh0YXJnZXQpO1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYXN0IHBhdGggd2hlbiB0aGUgdGVsZXBvcnQgaGFwcGVucyB0byBiZSBhIGJsb2NrIHJvb3RcclxuICAgICAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgY3VycmVudENvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBldmVuIGluIGJsb2NrIHRyZWUgbW9kZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgcm9vdC1sZXZlbCBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gaW4gdGhlIHRlbGVwb3J0IGluaGVyaXQgcHJldmlvdXMgRE9NIHJlZmVyZW5jZXMgc28gdGhhdCB0aGV5IGNhblxyXG4gICAgICAgICAgICAgICAgLy8gYmUgbW92ZWQgaW4gZnV0dXJlIHBhdGNoZXMuXHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGN1cnJlbnRDb250YWluZXIsIGN1cnJlbnRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2FzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIC0+IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpbnRvIG1haW4gY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCBjb250YWluZXIsIG1haW5BbmNob3IsIGludGVybmFscywgMSAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UT0dHTEUgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0IGNoYW5nZWRcclxuICAgICAgICAgICAgICAgIGlmICgobjIucHJvcHMgJiYgbjIucHJvcHMudG8pICE9PSAobjEucHJvcHMgJiYgbjEucHJvcHMudG8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IChuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KG4yLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRUYXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCBuZXh0VGFyZ2V0LCBudWxsLCBpbnRlcm5hbHMsIDAgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVEFSR0VUX0NIQU5HRSAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFRlbGVwb3J0IHRhcmdldCBvbiB1cGRhdGU6JywgdGFyZ2V0LCBgKCR7dHlwZW9mIHRhcmdldH0pYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCAtPiBlbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpbnRvIHRlbGVwb3J0IHRhcmdldFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVUZWxlcG9ydChuMiwgdGFyZ2V0LCB0YXJnZXRBbmNob3IsIGludGVybmFscywgMSAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UT0dHTEUgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbW92ZSh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgb3B0aW1pemVkLCB7IHVtOiB1bm1vdW50LCBvOiB7IHJlbW92ZTogaG9zdFJlbW92ZSB9IH0sIGRvUmVtb3ZlKSB7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZUZsYWcsIGNoaWxkcmVuLCBhbmNob3IsIHRhcmdldEFuY2hvciwgdGFyZ2V0LCBwcm9wcyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKHRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFuIHVubW91bnRlZCB0ZWxlcG9ydCBzaG91bGQgYWx3YXlzIHJlbW92ZSBpdHMgY2hpbGRyZW4gaWYgbm90IGRpc2FibGVkXHJcbiAgICAgICAgaWYgKGRvUmVtb3ZlIHx8ICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoYW5jaG9yKTtcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQoY2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsICEhY2hpbGQuZHluYW1pY0NoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3ZlOiBtb3ZlVGVsZXBvcnQsXHJcbiAgICBoeWRyYXRlOiBoeWRyYXRlVGVsZXBvcnRcclxufTtcclxuZnVuY3Rpb24gbW92ZVRlbGVwb3J0KHZub2RlLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgeyBvOiB7IGluc2VydCB9LCBtOiBtb3ZlIH0sIG1vdmVUeXBlID0gMiAvKiBUZWxlcG9ydE1vdmVUeXBlcy5SRU9SREVSICovKSB7XHJcbiAgICAvLyBtb3ZlIHRhcmdldCBhbmNob3IgaWYgdGhpcyBpcyBhIHRhcmdldCBjaGFuZ2UuXHJcbiAgICBpZiAobW92ZVR5cGUgPT09IDAgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVEFSR0VUX0NIQU5HRSAqLykge1xyXG4gICAgICAgIGluc2VydCh2bm9kZS50YXJnZXRBbmNob3IsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZWwsIGFuY2hvciwgc2hhcGVGbGFnLCBjaGlsZHJlbiwgcHJvcHMgfSA9IHZub2RlO1xyXG4gICAgY29uc3QgaXNSZW9yZGVyID0gbW92ZVR5cGUgPT09IDIgLyogVGVsZXBvcnRNb3ZlVHlwZXMuUkVPUkRFUiAqLztcclxuICAgIC8vIG1vdmUgbWFpbiB2aWV3IGFuY2hvciBpZiB0aGlzIGlzIGEgcmUtb3JkZXIuXHJcbiAgICBpZiAoaXNSZW9yZGVyKSB7XHJcbiAgICAgICAgaW5zZXJ0KGVsLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGlzIGlzIGEgcmUtb3JkZXIgYW5kIHRlbGVwb3J0IGlzIGVuYWJsZWQgKGNvbnRlbnQgaXMgaW4gdGFyZ2V0KVxyXG4gICAgLy8gZG8gbm90IG1vdmUgY2hpbGRyZW4uIFNvIHRoZSBvcHBvc2l0ZSBpczogb25seSBtb3ZlIGNoaWxkcmVuIGlmIHRoaXNcclxuICAgIC8vIGlzIG5vdCBhIHJlb3JkZXIsIG9yIHRoZSB0ZWxlcG9ydCBpcyBkaXNhYmxlZFxyXG4gICAgaWYgKCFpc1Jlb3JkZXIgfHwgaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgIC8vIFRlbGVwb3J0IGhhcyBlaXRoZXIgQXJyYXkgY2hpbGRyZW4gb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbW92ZShjaGlsZHJlbltpXSwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IsIDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBtb3ZlIG1haW4gdmlldyBhbmNob3IgaWYgdGhpcyBpcyBhIHJlLW9yZGVyLlxyXG4gICAgaWYgKGlzUmVvcmRlcikge1xyXG4gICAgICAgIGluc2VydChhbmNob3IsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoeWRyYXRlVGVsZXBvcnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCB7IG86IHsgbmV4dFNpYmxpbmcsIHBhcmVudE5vZGUsIHF1ZXJ5U2VsZWN0b3IgfSB9LCBoeWRyYXRlQ2hpbGRyZW4pIHtcclxuICAgIGNvbnN0IHRhcmdldCA9ICh2bm9kZS50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KHZub2RlLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgLy8gaWYgbXVsdGlwbGUgdGVsZXBvcnRzIHJlbmRlcmVkIHRvIHRoZSBzYW1lIHRhcmdldCBlbGVtZW50LCB3ZSBuZWVkIHRvXHJcbiAgICAgICAgLy8gcGljayB1cCBmcm9tIHdoZXJlIHRoZSBsYXN0IHRlbGVwb3J0IGZpbmlzaGVkIGluc3RlYWQgb2YgdGhlIGZpcnN0IG5vZGVcclxuICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Ll9scGEgfHwgdGFyZ2V0LmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgaWYgKGlzVGVsZXBvcnREaXNhYmxlZCh2bm9kZS5wcm9wcykpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IGh5ZHJhdGVDaGlsZHJlbihuZXh0U2libGluZyhub2RlKSwgdm5vZGUsIHBhcmVudE5vZGUobm9kZSksIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHZub2RlLnRhcmdldEFuY2hvciA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5hbmNob3IgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIGxvb2thaGVhZCB1bnRpbCB3ZSBmaW5kIHRoZSB0YXJnZXQgYW5jaG9yXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW5ub3QgcmVseSBvbiByZXR1cm4gdmFsdWUgb2YgaHlkcmF0ZUNoaWxkcmVuKCkgYmVjYXVzZSB0aGVyZVxyXG4gICAgICAgICAgICAgICAgLy8gY291bGQgYmUgbmVzdGVkIHRlbGVwb3J0c1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAodGFyZ2V0QW5jaG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QW5jaG9yID0gbmV4dFNpYmxpbmcodGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QW5jaG9yICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEFuY2hvci5ub2RlVHlwZSA9PT0gOCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBbmNob3IuZGF0YSA9PT0gJ3RlbGVwb3J0IGFuY2hvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gdGFyZ2V0QW5jaG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuX2xwYSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgJiYgbmV4dFNpYmxpbmcodm5vZGUudGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaHlkcmF0ZUNoaWxkcmVuKHRhcmdldE5vZGUsIHZub2RlLCB0YXJnZXQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZS5hbmNob3IgJiYgbmV4dFNpYmxpbmcodm5vZGUuYW5jaG9yKTtcclxufVxyXG4vLyBGb3JjZS1jYXN0ZWQgcHVibGljIHR5cGluZyBmb3IgaCBhbmQgVFNYIHByb3BzIGluZmVyZW5jZVxyXG5jb25zdCBUZWxlcG9ydCA9IFRlbGVwb3J0SW1wbDtcblxuY29uc3QgRnJhZ21lbnQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ0ZyYWdtZW50JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IFRleHQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1RleHQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgQ29tbWVudCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnQ29tbWVudCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBTdGF0aWMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1N0YXRpYycgOiB1bmRlZmluZWQpO1xyXG4vLyBTaW5jZSB2LWlmIGFuZCB2LWZvciBhcmUgdGhlIHR3byBwb3NzaWJsZSB3YXlzIG5vZGUgc3RydWN0dXJlIGNhbiBkeW5hbWljYWxseVxyXG4vLyBjaGFuZ2UsIG9uY2Ugd2UgY29uc2lkZXIgdi1pZiBicmFuY2hlcyBhbmQgZWFjaCB2LWZvciBmcmFnbWVudCBhIGJsb2NrLCB3ZVxyXG4vLyBjYW4gZGl2aWRlIGEgdGVtcGxhdGUgaW50byBuZXN0ZWQgYmxvY2tzLCBhbmQgd2l0aGluIGVhY2ggYmxvY2sgdGhlIG5vZGVcclxuLy8gc3RydWN0dXJlIHdvdWxkIGJlIHN0YWJsZS4gVGhpcyBhbGxvd3MgdXMgdG8gc2tpcCBtb3N0IGNoaWxkcmVuIGRpZmZpbmdcclxuLy8gYW5kIG9ubHkgd29ycnkgYWJvdXQgdGhlIGR5bmFtaWMgbm9kZXMgKGluZGljYXRlZCBieSBwYXRjaCBmbGFncykuXHJcbmNvbnN0IGJsb2NrU3RhY2sgPSBbXTtcclxubGV0IGN1cnJlbnRCbG9jayA9IG51bGw7XHJcbi8qKlxyXG4gKiBPcGVuIGEgYmxvY2suXHJcbiAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGBjcmVhdGVCbG9ja2AuIEl0IGNhbm5vdCBiZSBwYXJ0IG9mIGBjcmVhdGVCbG9ja2BcclxuICogYmVjYXVzZSB0aGUgY2hpbGRyZW4gb2YgdGhlIGJsb2NrIGFyZSBldmFsdWF0ZWQgYmVmb3JlIGBjcmVhdGVCbG9ja2AgaXRzZWxmXHJcbiAqIGlzIGNhbGxlZC4gVGhlIGdlbmVyYXRlZCBjb2RlIHR5cGljYWxseSBsb29rcyBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIGBgYGpzXHJcbiAqIGZ1bmN0aW9uIHJlbmRlcigpIHtcclxuICogICByZXR1cm4gKG9wZW5CbG9jaygpLGNyZWF0ZUJsb2NrKCdkaXYnLCBudWxsLCBbLi4uXSkpXHJcbiAqIH1cclxuICogYGBgXHJcbiAqIGRpc2FibGVUcmFja2luZyBpcyB0cnVlIHdoZW4gY3JlYXRpbmcgYSB2LWZvciBmcmFnbWVudCBibG9jaywgc2luY2UgYSB2LWZvclxyXG4gKiBmcmFnbWVudCBhbHdheXMgZGlmZnMgaXRzIGNoaWxkcmVuLlxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gb3BlbkJsb2NrKGRpc2FibGVUcmFja2luZyA9IGZhbHNlKSB7XHJcbiAgICBibG9ja1N0YWNrLnB1c2goKGN1cnJlbnRCbG9jayA9IGRpc2FibGVUcmFja2luZyA/IG51bGwgOiBbXSkpO1xyXG59XHJcbmZ1bmN0aW9uIGNsb3NlQmxvY2soKSB7XHJcbiAgICBibG9ja1N0YWNrLnBvcCgpO1xyXG4gICAgY3VycmVudEJsb2NrID0gYmxvY2tTdGFja1tibG9ja1N0YWNrLmxlbmd0aCAtIDFdIHx8IG51bGw7XHJcbn1cclxuLy8gV2hldGhlciB3ZSBzaG91bGQgYmUgdHJhY2tpbmcgZHluYW1pYyBjaGlsZCBub2RlcyBpbnNpZGUgYSBibG9jay5cclxuLy8gT25seSB0cmFja3Mgd2hlbiB0aGlzIHZhbHVlIGlzID4gMFxyXG4vLyBXZSBhcmUgbm90IHVzaW5nIGEgc2ltcGxlIGJvb2xlYW4gYmVjYXVzZSB0aGlzIHZhbHVlIG1heSBuZWVkIHRvIGJlXHJcbi8vIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGJ5IG5lc3RlZCB1c2FnZSBvZiB2LW9uY2UgKHNlZSBiZWxvdylcclxubGV0IGlzQmxvY2tUcmVlRW5hYmxlZCA9IDE7XHJcbi8qKlxyXG4gKiBCbG9jayB0cmFja2luZyBzb21ldGltZXMgbmVlZHMgdG8gYmUgZGlzYWJsZWQsIGZvciBleGFtcGxlIGR1cmluZyB0aGVcclxuICogY3JlYXRpb24gb2YgYSB0cmVlIHRoYXQgbmVlZHMgdG8gYmUgY2FjaGVkIGJ5IHYtb25jZS4gVGhlIGNvbXBpbGVyIGdlbmVyYXRlc1xyXG4gKiBjb2RlIGxpa2UgdGhpczpcclxuICpcclxuICogYGBgIGpzXHJcbiAqIF9jYWNoZVsxXSB8fCAoXHJcbiAqICAgc2V0QmxvY2tUcmFja2luZygtMSksXHJcbiAqICAgX2NhY2hlWzFdID0gY3JlYXRlVk5vZGUoLi4uKSxcclxuICogICBzZXRCbG9ja1RyYWNraW5nKDEpLFxyXG4gKiAgIF9jYWNoZVsxXVxyXG4gKiApXHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gc2V0QmxvY2tUcmFja2luZyh2YWx1ZSkge1xyXG4gICAgaXNCbG9ja1RyZWVFbmFibGVkICs9IHZhbHVlO1xyXG59XHJcbmZ1bmN0aW9uIHNldHVwQmxvY2sodm5vZGUpIHtcclxuICAgIC8vIHNhdmUgY3VycmVudCBibG9jayBjaGlsZHJlbiBvbiB0aGUgYmxvY2sgdm5vZGVcclxuICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9XHJcbiAgICAgICAgaXNCbG9ja1RyZWVFbmFibGVkID4gMCA/IGN1cnJlbnRCbG9jayB8fCBFTVBUWV9BUlIgOiBudWxsO1xyXG4gICAgLy8gY2xvc2UgYmxvY2tcclxuICAgIGNsb3NlQmxvY2soKTtcclxuICAgIC8vIGEgYmxvY2sgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIHBhdGNoZWQsIHNvIHRyYWNrIGl0IGFzIGEgY2hpbGQgb2YgaXRzXHJcbiAgICAvLyBwYXJlbnQgYmxvY2tcclxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmIGN1cnJlbnRCbG9jaykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKHZub2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRCbG9jayh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcpIHtcclxuICAgIHJldHVybiBzZXR1cEJsb2NrKGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcsIHRydWUgLyogaXNCbG9jayAqLykpO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBibG9jayByb290IHZub2RlLiBUYWtlcyB0aGUgc2FtZSBleGFjdCBhcmd1bWVudHMgYXMgYGNyZWF0ZVZOb2RlYC5cclxuICogQSBibG9jayByb290IGtlZXBzIHRyYWNrIG9mIGR5bmFtaWMgbm9kZXMgd2l0aGluIHRoZSBibG9jayBpbiB0aGVcclxuICogYGR5bmFtaWNDaGlsZHJlbmAgYXJyYXkuXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVCbG9jayh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzKSB7XHJcbiAgICByZXR1cm4gc2V0dXBCbG9jayhjcmVhdGVWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCB0cnVlIC8qIGlzQmxvY2s6IHByZXZlbnQgYSBibG9jayBmcm9tIHRyYWNraW5nIGl0c2VsZiAqLykpO1xyXG59XHJcbmZ1bmN0aW9uIGlzVk5vZGUodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLl9fdl9pc1ZOb2RlID09PSB0cnVlIDogZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIG4yLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gJiZcclxuICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG4yLnR5cGUpKSB7XHJcbiAgICAgICAgLy8gSE1SIG9ubHk6IGlmIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gaG90LXVwZGF0ZWQsIGZvcmNlIGEgcmVsb2FkLlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuMS50eXBlID09PSBuMi50eXBlICYmIG4xLmtleSA9PT0gbjIua2V5O1xyXG59XHJcbmxldCB2bm9kZUFyZ3NUcmFuc2Zvcm1lcjtcclxuLyoqXHJcbiAqIEludGVybmFsIEFQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXJndW1lbnRzIHRyYW5zZm9ybSBmb3IgY3JlYXRlVk5vZGVcclxuICogdXNlZCBmb3IgY3JlYXRpbmcgc3R1YnMgaW4gdGhlIHRlc3QtdXRpbHNcclxuICogSXQgaXMgKmludGVybmFsKiBidXQgbmVlZHMgdG8gYmUgZXhwb3NlZCBmb3IgdGVzdC11dGlscyB0byBwaWNrIHVwIHByb3BlclxyXG4gKiB0eXBpbmdzXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmFuc2Zvcm1WTm9kZUFyZ3ModHJhbnNmb3JtZXIpIHtcclxuICAgIHZub2RlQXJnc1RyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXI7XHJcbn1cclxuY29uc3QgY3JlYXRlVk5vZGVXaXRoQXJnc1RyYW5zZm9ybSA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICByZXR1cm4gX2NyZWF0ZVZOb2RlKC4uLih2bm9kZUFyZ3NUcmFuc2Zvcm1lclxyXG4gICAgICAgID8gdm5vZGVBcmdzVHJhbnNmb3JtZXIoYXJncywgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKVxyXG4gICAgICAgIDogYXJncykpO1xyXG59O1xyXG5jb25zdCBJbnRlcm5hbE9iamVjdEtleSA9IGBfX3ZJbnRlcm5hbGA7XHJcbmNvbnN0IG5vcm1hbGl6ZUtleSA9ICh7IGtleSB9KSA9PiBrZXkgIT0gbnVsbCA/IGtleSA6IG51bGw7XHJcbmNvbnN0IG5vcm1hbGl6ZVJlZiA9ICh7IHJlZiwgcmVmX2tleSwgcmVmX2ZvciB9KSA9PiB7XHJcbiAgICByZXR1cm4gKHJlZiAhPSBudWxsXHJcbiAgICAgICAgPyBpc1N0cmluZyhyZWYpIHx8IGlzUmVmKHJlZikgfHwgaXNGdW5jdGlvbihyZWYpXHJcbiAgICAgICAgICAgID8geyBpOiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsIHI6IHJlZiwgazogcmVmX2tleSwgZjogISFyZWZfZm9yIH1cclxuICAgICAgICAgICAgOiByZWZcclxuICAgICAgICA6IG51bGwpO1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIHNoYXBlRmxhZyA9IHR5cGUgPT09IEZyYWdtZW50ID8gMCA6IDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovLCBpc0Jsb2NrTm9kZSA9IGZhbHNlLCBuZWVkRnVsbENoaWxkcmVuTm9ybWFsaXphdGlvbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2bm9kZSA9IHtcclxuICAgICAgICBfX3ZfaXNWTm9kZTogdHJ1ZSxcclxuICAgICAgICBfX3Zfc2tpcDogdHJ1ZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHByb3BzLFxyXG4gICAgICAgIGtleTogcHJvcHMgJiYgbm9ybWFsaXplS2V5KHByb3BzKSxcclxuICAgICAgICByZWY6IHByb3BzICYmIG5vcm1hbGl6ZVJlZihwcm9wcyksXHJcbiAgICAgICAgc2NvcGVJZDogY3VycmVudFNjb3BlSWQsXHJcbiAgICAgICAgc2xvdFNjb3BlSWRzOiBudWxsLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIGNvbXBvbmVudDogbnVsbCxcclxuICAgICAgICBzdXNwZW5zZTogbnVsbCxcclxuICAgICAgICBzc0NvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgc3NGYWxsYmFjazogbnVsbCxcclxuICAgICAgICBkaXJzOiBudWxsLFxyXG4gICAgICAgIHRyYW5zaXRpb246IG51bGwsXHJcbiAgICAgICAgZWw6IG51bGwsXHJcbiAgICAgICAgYW5jaG9yOiBudWxsLFxyXG4gICAgICAgIHRhcmdldDogbnVsbCxcclxuICAgICAgICB0YXJnZXRBbmNob3I6IG51bGwsXHJcbiAgICAgICAgc3RhdGljQ291bnQ6IDAsXHJcbiAgICAgICAgc2hhcGVGbGFnLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcHMsXHJcbiAgICAgICAgZHluYW1pY0NoaWxkcmVuOiBudWxsLFxyXG4gICAgICAgIGFwcENvbnRleHQ6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAobmVlZEZ1bGxDaGlsZHJlbk5vcm1hbGl6YXRpb24pIHtcclxuICAgICAgICBub3JtYWxpemVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIC8vIG5vcm1hbGl6ZSBzdXNwZW5zZSBjaGlsZHJlblxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICB0eXBlLm5vcm1hbGl6ZSh2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAvLyBjb21waWxlZCBlbGVtZW50IHZub2RlIC0gaWYgY2hpbGRyZW4gaXMgcGFzc2VkLCBvbmx5IHBvc3NpYmxlIHR5cGVzIGFyZVxyXG4gICAgICAgIC8vIHN0cmluZyBvciBBcnJheS5cclxuICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gaXNTdHJpbmcoY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi9cclxuICAgICAgICAgICAgOiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgLy8gdmFsaWRhdGUga2V5XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHZub2RlLmtleSAhPT0gdm5vZGUua2V5KSB7XHJcbiAgICAgICAgd2FybihgVk5vZGUgY3JlYXRlZCB3aXRoIGludmFsaWQga2V5IChOYU4pLiBWTm9kZSB0eXBlOmAsIHZub2RlLnR5cGUpO1xyXG4gICAgfVxyXG4gICAgLy8gdHJhY2sgdm5vZGUgZm9yIGJsb2NrIHRyZWVcclxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmXHJcbiAgICAgICAgLy8gYXZvaWQgYSBibG9jayBub2RlIGZyb20gdHJhY2tpbmcgaXRzZWxmXHJcbiAgICAgICAgIWlzQmxvY2tOb2RlICYmXHJcbiAgICAgICAgLy8gaGFzIGN1cnJlbnQgcGFyZW50IGJsb2NrXHJcbiAgICAgICAgY3VycmVudEJsb2NrICYmXHJcbiAgICAgICAgLy8gcHJlc2VuY2Ugb2YgYSBwYXRjaCBmbGFnIGluZGljYXRlcyB0aGlzIG5vZGUgbmVlZHMgcGF0Y2hpbmcgb24gdXBkYXRlcy5cclxuICAgICAgICAvLyBjb21wb25lbnQgbm9kZXMgYWxzbyBzaG91bGQgYWx3YXlzIGJlIHBhdGNoZWQsIGJlY2F1c2UgZXZlbiBpZiB0aGVcclxuICAgICAgICAvLyBjb21wb25lbnQgZG9lc24ndCBuZWVkIHRvIHVwZGF0ZSwgaXQgbmVlZHMgdG8gcGVyc2lzdCB0aGUgaW5zdGFuY2Ugb24gdG9cclxuICAgICAgICAvLyB0aGUgbmV4dCB2bm9kZSBzbyB0aGF0IGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWQgbGF0ZXIuXHJcbiAgICAgICAgKHZub2RlLnBhdGNoRmxhZyA+IDAgfHwgc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykgJiZcclxuICAgICAgICAvLyB0aGUgRVZFTlRTIGZsYWcgaXMgb25seSBmb3IgaHlkcmF0aW9uIGFuZCBpZiBpdCBpcyB0aGUgb25seSBmbGFnLCB0aGVcclxuICAgICAgICAvLyB2bm9kZSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZHluYW1pYyBkdWUgdG8gaGFuZGxlciBjYWNoaW5nLlxyXG4gICAgICAgIHZub2RlLnBhdGNoRmxhZyAhPT0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKHZub2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG5jb25zdCBjcmVhdGVWTm9kZSA9ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtIDogX2NyZWF0ZVZOb2RlKTtcclxuZnVuY3Rpb24gX2NyZWF0ZVZOb2RlKHR5cGUsIHByb3BzID0gbnVsbCwgY2hpbGRyZW4gPSBudWxsLCBwYXRjaEZsYWcgPSAwLCBkeW5hbWljUHJvcHMgPSBudWxsLCBpc0Jsb2NrTm9kZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXR5cGUgfHwgdHlwZSA9PT0gTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXR5cGUpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCB2bm9kZSB0eXBlIHdoZW4gY3JlYXRpbmcgdm5vZGU6ICR7dHlwZX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHR5cGUgPSBDb21tZW50O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVk5vZGUodHlwZSkpIHtcclxuICAgICAgICAvLyBjcmVhdGVWTm9kZSByZWNlaXZpbmcgYW4gZXhpc3Rpbmcgdm5vZGUuIFRoaXMgaGFwcGVucyBpbiBjYXNlcyBsaWtlXHJcbiAgICAgICAgLy8gPGNvbXBvbmVudCA6aXM9XCJ2bm9kZVwiLz5cclxuICAgICAgICAvLyAjMjA3OCBtYWtlIHN1cmUgdG8gbWVyZ2UgcmVmcyBkdXJpbmcgdGhlIGNsb25lIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgaXRcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHR5cGUsIHByb3BzLCB0cnVlIC8qIG1lcmdlUmVmOiB0cnVlICovKTtcclxuICAgICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4oY2xvbmVkLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmICFpc0Jsb2NrTm9kZSAmJiBjdXJyZW50QmxvY2spIHtcclxuICAgICAgICAgICAgaWYgKGNsb25lZC5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2tbY3VycmVudEJsb2NrLmluZGV4T2YodHlwZSldID0gY2xvbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2xvbmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjbG9uZWQucGF0Y2hGbGFnIHw9IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLztcclxuICAgICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfVxyXG4gICAgLy8gY2xhc3MgY29tcG9uZW50IG5vcm1hbGl6YXRpb24uXHJcbiAgICBpZiAoaXNDbGFzc0NvbXBvbmVudCh0eXBlKSkge1xyXG4gICAgICAgIHR5cGUgPSB0eXBlLl9fdmNjT3B0cztcclxuICAgIH1cclxuICAgIC8vIGNsYXNzICYgc3R5bGUgbm9ybWFsaXphdGlvbi5cclxuICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgIC8vIGZvciByZWFjdGl2ZSBvciBwcm94eSBvYmplY3RzLCB3ZSBuZWVkIHRvIGNsb25lIGl0IHRvIGVuYWJsZSBtdXRhdGlvbi5cclxuICAgICAgICBwcm9wcyA9IGd1YXJkUmVhY3RpdmVQcm9wcyhwcm9wcyk7XHJcbiAgICAgICAgbGV0IHsgY2xhc3M6IGtsYXNzLCBzdHlsZSB9ID0gcHJvcHM7XHJcbiAgICAgICAgaWYgKGtsYXNzICYmICFpc1N0cmluZyhrbGFzcykpIHtcclxuICAgICAgICAgICAgcHJvcHMuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhrbGFzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChzdHlsZSkpIHtcclxuICAgICAgICAgICAgLy8gcmVhY3RpdmUgc3RhdGUgb2JqZWN0cyBuZWVkIHRvIGJlIGNsb25lZCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgdG8gYmVcclxuICAgICAgICAgICAgLy8gbXV0YXRlZFxyXG4gICAgICAgICAgICBpZiAoaXNQcm94eShzdHlsZSkgJiYgIWlzQXJyYXkoc3R5bGUpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZSA9IGV4dGVuZCh7fSwgc3R5bGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BzLnN0eWxlID0gbm9ybWFsaXplU3R5bGUoc3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGVuY29kZSB0aGUgdm5vZGUgdHlwZSBpbmZvcm1hdGlvbiBpbnRvIGEgYml0bWFwXHJcbiAgICBjb25zdCBzaGFwZUZsYWcgPSBpc1N0cmluZyh0eXBlKVxyXG4gICAgICAgID8gMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi9cclxuICAgICAgICA6IGlzU3VzcGVuc2UodHlwZSlcclxuICAgICAgICAgICAgPyAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqL1xyXG4gICAgICAgICAgICA6IGlzVGVsZXBvcnQodHlwZSlcclxuICAgICAgICAgICAgICAgID8gNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqL1xyXG4gICAgICAgICAgICAgICAgOiBpc09iamVjdCh0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgID8gNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIDogaXNGdW5jdGlvbih0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDIgLyogU2hhcGVGbGFncy5GVU5DVElPTkFMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi8gJiYgaXNQcm94eSh0eXBlKSkge1xyXG4gICAgICAgIHR5cGUgPSB0b1Jhdyh0eXBlKTtcclxuICAgICAgICB3YXJuKGBWdWUgcmVjZWl2ZWQgYSBDb21wb25lbnQgd2hpY2ggd2FzIG1hZGUgYSByZWFjdGl2ZSBvYmplY3QuIFRoaXMgY2FuIGAgK1xyXG4gICAgICAgICAgICBgbGVhZCB0byB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBvdmVyaGVhZCwgYW5kIHNob3VsZCBiZSBhdm9pZGVkIGJ5IGAgK1xyXG4gICAgICAgICAgICBgbWFya2luZyB0aGUgY29tcG9uZW50IHdpdGggXFxgbWFya1Jhd1xcYCBvciB1c2luZyBcXGBzaGFsbG93UmVmXFxgIGAgK1xyXG4gICAgICAgICAgICBgaW5zdGVhZCBvZiBcXGByZWZcXGAuYCwgYFxcbkNvbXBvbmVudCB0aGF0IHdhcyBtYWRlIHJlYWN0aXZlOiBgLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgc2hhcGVGbGFnLCBpc0Jsb2NrTm9kZSwgdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKSB7XHJcbiAgICBpZiAoIXByb3BzKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIGlzUHJveHkocHJvcHMpIHx8IEludGVybmFsT2JqZWN0S2V5IGluIHByb3BzXHJcbiAgICAgICAgPyBleHRlbmQoe30sIHByb3BzKVxyXG4gICAgICAgIDogcHJvcHM7XHJcbn1cclxuZnVuY3Rpb24gY2xvbmVWTm9kZSh2bm9kZSwgZXh0cmFQcm9wcywgbWVyZ2VSZWYgPSBmYWxzZSkge1xyXG4gICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IE5PVCB1c2luZyBzcHJlYWQgb3IgZXh0ZW5kIHRvIGF2b2lkIHRoZSBydW50aW1lXHJcbiAgICAvLyBrZXkgZW51bWVyYXRpb24gY29zdC5cclxuICAgIGNvbnN0IHsgcHJvcHMsIHJlZiwgcGF0Y2hGbGFnLCBjaGlsZHJlbiB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBtZXJnZWRQcm9wcyA9IGV4dHJhUHJvcHMgPyBtZXJnZVByb3BzKHByb3BzIHx8IHt9LCBleHRyYVByb3BzKSA6IHByb3BzO1xyXG4gICAgY29uc3QgY2xvbmVkID0ge1xyXG4gICAgICAgIF9fdl9pc1ZOb2RlOiB0cnVlLFxyXG4gICAgICAgIF9fdl9za2lwOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6IHZub2RlLnR5cGUsXHJcbiAgICAgICAgcHJvcHM6IG1lcmdlZFByb3BzLFxyXG4gICAgICAgIGtleTogbWVyZ2VkUHJvcHMgJiYgbm9ybWFsaXplS2V5KG1lcmdlZFByb3BzKSxcclxuICAgICAgICByZWY6IGV4dHJhUHJvcHMgJiYgZXh0cmFQcm9wcy5yZWZcclxuICAgICAgICAgICAgPyAvLyAjMjA3OCBpbiB0aGUgY2FzZSBvZiA8Y29tcG9uZW50IDppcz1cInZub2RlXCIgcmVmPVwiZXh0cmFcIi8+XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdm5vZGUgaXRzZWxmIGFscmVhZHkgaGFzIGEgcmVmLCBjbG9uZVZOb2RlIHdpbGwgbmVlZCB0byBtZXJnZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHJlZnMgc28gdGhlIHNpbmdsZSB2bm9kZSBjYW4gYmUgc2V0IG9uIG11bHRpcGxlIHJlZnNcclxuICAgICAgICAgICAgICAgIG1lcmdlUmVmICYmIHJlZlxyXG4gICAgICAgICAgICAgICAgICAgID8gaXNBcnJheShyZWYpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVmLmNvbmNhdChub3JtYWxpemVSZWYoZXh0cmFQcm9wcykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW3JlZiwgbm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpXVxyXG4gICAgICAgICAgICAgICAgICAgIDogbm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpXHJcbiAgICAgICAgICAgIDogcmVmLFxyXG4gICAgICAgIHNjb3BlSWQ6IHZub2RlLnNjb3BlSWQsXHJcbiAgICAgICAgc2xvdFNjb3BlSWRzOiB2bm9kZS5zbG90U2NvcGVJZHMsXHJcbiAgICAgICAgY2hpbGRyZW46IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXRjaEZsYWcgPT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLyAmJiBpc0FycmF5KGNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IGNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSlcclxuICAgICAgICAgICAgOiBjaGlsZHJlbixcclxuICAgICAgICB0YXJnZXQ6IHZub2RlLnRhcmdldCxcclxuICAgICAgICB0YXJnZXRBbmNob3I6IHZub2RlLnRhcmdldEFuY2hvcixcclxuICAgICAgICBzdGF0aWNDb3VudDogdm5vZGUuc3RhdGljQ291bnQsXHJcbiAgICAgICAgc2hhcGVGbGFnOiB2bm9kZS5zaGFwZUZsYWcsXHJcbiAgICAgICAgLy8gaWYgdGhlIHZub2RlIGlzIGNsb25lZCB3aXRoIGV4dHJhIHByb3BzLCB3ZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSBpdHNcclxuICAgICAgICAvLyBleGlzdGluZyBwYXRjaCBmbGFnIHRvIGJlIHJlbGlhYmxlIGFuZCBuZWVkIHRvIGFkZCB0aGUgRlVMTF9QUk9QUyBmbGFnLlxyXG4gICAgICAgIC8vIG5vdGU6IHByZXNlcnZlIGZsYWcgZm9yIGZyYWdtZW50cyBzaW5jZSB0aGV5IHVzZSB0aGUgZmxhZyBmb3IgY2hpbGRyZW5cclxuICAgICAgICAvLyBmYXN0IHBhdGhzIG9ubHkuXHJcbiAgICAgICAgcGF0Y2hGbGFnOiBleHRyYVByb3BzICYmIHZub2RlLnR5cGUgIT09IEZyYWdtZW50XHJcbiAgICAgICAgICAgID8gcGF0Y2hGbGFnID09PSAtMSAvLyBob2lzdGVkIG5vZGVcclxuICAgICAgICAgICAgICAgID8gMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXHJcbiAgICAgICAgICAgICAgICA6IHBhdGNoRmxhZyB8IDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqL1xyXG4gICAgICAgICAgICA6IHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcHM6IHZub2RlLmR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkeW5hbWljQ2hpbGRyZW46IHZub2RlLmR5bmFtaWNDaGlsZHJlbixcclxuICAgICAgICBhcHBDb250ZXh0OiB2bm9kZS5hcHBDb250ZXh0LFxyXG4gICAgICAgIGRpcnM6IHZub2RlLmRpcnMsXHJcbiAgICAgICAgdHJhbnNpdGlvbjogdm5vZGUudHJhbnNpdGlvbixcclxuICAgICAgICAvLyBUaGVzZSBzaG91bGQgdGVjaG5pY2FsbHkgb25seSBiZSBub24tbnVsbCBvbiBtb3VudGVkIFZOb2Rlcy4gSG93ZXZlcixcclxuICAgICAgICAvLyB0aGV5ICpzaG91bGQqIGJlIGNvcGllZCBmb3Iga2VwdC1hbGl2ZSB2bm9kZXMuIFNvIHdlIGp1c3QgYWx3YXlzIGNvcHlcclxuICAgICAgICAvLyB0aGVtIHNpbmNlIHRoZW0gYmVpbmcgbm9uLW51bGwgZHVyaW5nIGEgbW91bnQgZG9lc24ndCBhZmZlY3QgdGhlIGxvZ2ljIGFzXHJcbiAgICAgICAgLy8gdGhleSB3aWxsIHNpbXBseSBiZSBvdmVyd3JpdHRlbi5cclxuICAgICAgICBjb21wb25lbnQ6IHZub2RlLmNvbXBvbmVudCxcclxuICAgICAgICBzdXNwZW5zZTogdm5vZGUuc3VzcGVuc2UsXHJcbiAgICAgICAgc3NDb250ZW50OiB2bm9kZS5zc0NvbnRlbnQgJiYgY2xvbmVWTm9kZSh2bm9kZS5zc0NvbnRlbnQpLFxyXG4gICAgICAgIHNzRmFsbGJhY2s6IHZub2RlLnNzRmFsbGJhY2sgJiYgY2xvbmVWTm9kZSh2bm9kZS5zc0ZhbGxiYWNrKSxcclxuICAgICAgICBlbDogdm5vZGUuZWwsXHJcbiAgICAgICAgYW5jaG9yOiB2bm9kZS5hbmNob3JcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmVkO1xyXG59XHJcbi8qKlxyXG4gKiBEZXYgb25seSwgZm9yIEhNUiBvZiBob2lzdGVkIHZub2RlcyByZXVzZWQgaW4gdi1mb3JcclxuICogaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL2lzc3Vlcy8yMDIyXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWVwQ2xvbmVWTm9kZSh2bm9kZSkge1xyXG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmVWTm9kZSh2bm9kZSk7XHJcbiAgICBpZiAoaXNBcnJheSh2bm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBjbG9uZWQuY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbi5tYXAoZGVlcENsb25lVk5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsb25lZDtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSh0ZXh0ID0gJyAnLCBmbGFnID0gMCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIHRleHQsIGZsYWcpO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlU3RhdGljVk5vZGUoY29udGVudCwgbnVtYmVyT2ZOb2Rlcykge1xyXG4gICAgLy8gQSBzdGF0aWMgdm5vZGUgY2FuIGNvbnRhaW4gbXVsdGlwbGUgc3RyaW5naWZpZWQgZWxlbWVudHMsIGFuZCB0aGUgbnVtYmVyXHJcbiAgICAvLyBvZiBlbGVtZW50cyBpcyBuZWNlc3NhcnkgZm9yIGh5ZHJhdGlvbi5cclxuICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUoU3RhdGljLCBudWxsLCBjb250ZW50KTtcclxuICAgIHZub2RlLnN0YXRpY0NvdW50ID0gbnVtYmVyT2ZOb2RlcztcclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnRWTm9kZSh0ZXh0ID0gJycsIFxyXG4vLyB3aGVuIHVzZWQgYXMgdGhlIHYtZWxzZSBicmFuY2gsIHRoZSBjb21tZW50IG5vZGUgbXVzdCBiZSBjcmVhdGVkIGFzIGFcclxuLy8gYmxvY2sgdG8gZW5zdXJlIGNvcnJlY3QgdXBkYXRlcy5cclxuYXNCbG9jayA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gYXNCbG9ja1xyXG4gICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhDb21tZW50LCBudWxsLCB0ZXh0KSlcclxuICAgICAgICA6IGNyZWF0ZVZOb2RlKENvbW1lbnQsIG51bGwsIHRleHQpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVZOb2RlKGNoaWxkKSB7XHJcbiAgICBpZiAoY2hpbGQgPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGQgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIC8vIGVtcHR5IHBsYWNlaG9sZGVyXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheShjaGlsZCkpIHtcclxuICAgICAgICAvLyBmcmFnbWVudFxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShGcmFnbWVudCwgbnVsbCwgXHJcbiAgICAgICAgLy8gIzM2NjYsIGF2b2lkIHJlZmVyZW5jZSBwb2xsdXRpb24gd2hlbiByZXVzaW5nIHZub2RlXHJcbiAgICAgICAgY2hpbGQuc2xpY2UoKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgLy8gYWxyZWFkeSB2bm9kZSwgdGhpcyBzaG91bGQgYmUgdGhlIG1vc3QgY29tbW9uIHNpbmNlIGNvbXBpbGVkIHRlbXBsYXRlc1xyXG4gICAgICAgIC8vIGFsd2F5cyBwcm9kdWNlIGFsbC12bm9kZSBjaGlsZHJlbiBhcnJheXNcclxuICAgICAgICByZXR1cm4gY2xvbmVJZk1vdW50ZWQoY2hpbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc3RyaW5ncyBhbmQgbnVtYmVyc1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShUZXh0LCBudWxsLCBTdHJpbmcoY2hpbGQpKTtcclxuICAgIH1cclxufVxyXG4vLyBvcHRpbWl6ZWQgbm9ybWFsaXphdGlvbiBmb3IgdGVtcGxhdGUtY29tcGlsZWQgcmVuZGVyIGZuc1xyXG5mdW5jdGlvbiBjbG9uZUlmTW91bnRlZChjaGlsZCkge1xyXG4gICAgcmV0dXJuIGNoaWxkLmVsID09PSBudWxsIHx8IGNoaWxkLm1lbW8gPyBjaGlsZCA6IGNsb25lVk5vZGUoY2hpbGQpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbikge1xyXG4gICAgbGV0IHR5cGUgPSAwO1xyXG4gICAgY29uc3QgeyBzaGFwZUZsYWcgfSA9IHZub2RlO1xyXG4gICAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcclxuICAgICAgICBjaGlsZHJlbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICAgIHR5cGUgPSAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gfCA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSkge1xyXG4gICAgICAgICAgICAvLyBOb3JtYWxpemUgc2xvdCB0byBwbGFpbiBjaGlsZHJlbiBmb3IgcGxhaW4gZWxlbWVudCBhbmQgVGVsZXBvcnRcclxuICAgICAgICAgICAgY29uc3Qgc2xvdCA9IGNoaWxkcmVuLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgIGlmIChzbG90KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBfYyBtYXJrZXIgaXMgYWRkZWQgYnkgd2l0aEN0eCgpIGluZGljYXRpbmcgdGhpcyBpcyBhIGNvbXBpbGVkIHNsb3RcclxuICAgICAgICAgICAgICAgIHNsb3QuX2MgJiYgKHNsb3QuX2QgPSBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVDaGlsZHJlbih2bm9kZSwgc2xvdCgpKTtcclxuICAgICAgICAgICAgICAgIHNsb3QuX2MgJiYgKHNsb3QuX2QgPSB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0eXBlID0gMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLztcclxuICAgICAgICAgICAgY29uc3Qgc2xvdEZsYWcgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgICAgICBpZiAoIXNsb3RGbGFnICYmICEoSW50ZXJuYWxPYmplY3RLZXkgaW4gY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5fY3R4ID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNsb3RGbGFnID09PSAzIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi8gJiYgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhIGNoaWxkIGNvbXBvbmVudCByZWNlaXZlcyBmb3J3YXJkZWQgc2xvdHMgZnJvbSB0aGUgcGFyZW50LlxyXG4gICAgICAgICAgICAgICAgLy8gaXRzIHNsb3QgdHlwZSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyBwYXJlbnQncyBzbG90IHR5cGUuXHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnNsb3RzLl8gPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLl8gPSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5fID0gMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqLztcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5wYXRjaEZsYWcgfD0gMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNoaWxkcmVuID0geyBkZWZhdWx0OiBjaGlsZHJlbiwgX2N0eDogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIH07XHJcbiAgICAgICAgdHlwZSA9IDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjaGlsZHJlbiA9IFN0cmluZyhjaGlsZHJlbik7XHJcbiAgICAgICAgLy8gZm9yY2UgdGVsZXBvcnQgY2hpbGRyZW4gdG8gYXJyYXkgc28gaXQgY2FuIGJlIG1vdmVkIGFyb3VuZFxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2bm9kZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgdm5vZGUuc2hhcGVGbGFnIHw9IHR5cGU7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5hcmdzKSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRvTWVyZ2UgPSBhcmdzW2ldO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRvTWVyZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5jbGFzcyAhPT0gdG9NZXJnZS5jbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldC5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKFtyZXQuY2xhc3MsIHRvTWVyZ2UuY2xhc3NdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgIHJldC5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKFtyZXQuc3R5bGUsIHRvTWVyZ2Uuc3R5bGVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcmV0W2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmNvbWluZyA9IHRvTWVyZ2Vba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmNvbWluZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nICE9PSBpbmNvbWluZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEoaXNBcnJheShleGlzdGluZykgJiYgZXhpc3RpbmcuaW5jbHVkZXMoaW5jb21pbmcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldFtrZXldID0gZXhpc3RpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGluY29taW5nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGluY29taW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldFtrZXldID0gdG9NZXJnZVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBpbnZva2VWTm9kZUhvb2soaG9vaywgaW5zdGFuY2UsIHZub2RlLCBwcmV2Vk5vZGUgPSBudWxsKSB7XHJcbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgNyAvKiBFcnJvckNvZGVzLlZOT0RFX0hPT0sgKi8sIFtcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICBwcmV2Vk5vZGVcclxuICAgIF0pO1xyXG59XG5cbmNvbnN0IGVtcHR5QXBwQ29udGV4dCA9IGNyZWF0ZUFwcENvbnRleHQoKTtcclxubGV0IHVpZCQxID0gMDtcclxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2Uodm5vZGUsIHBhcmVudCwgc3VzcGVuc2UpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB2bm9kZS50eXBlO1xyXG4gICAgLy8gaW5oZXJpdCBwYXJlbnQgYXBwIGNvbnRleHQgLSBvciAtIGlmIHJvb3QsIGFkb3B0IGZyb20gcm9vdCB2bm9kZVxyXG4gICAgY29uc3QgYXBwQ29udGV4dCA9IChwYXJlbnQgPyBwYXJlbnQuYXBwQ29udGV4dCA6IHZub2RlLmFwcENvbnRleHQpIHx8IGVtcHR5QXBwQ29udGV4dDtcclxuICAgIGNvbnN0IGluc3RhbmNlID0ge1xyXG4gICAgICAgIHVpZDogdWlkJDErKyxcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHBhcmVudCxcclxuICAgICAgICBhcHBDb250ZXh0LFxyXG4gICAgICAgIHJvb3Q6IG51bGwsXHJcbiAgICAgICAgbmV4dDogbnVsbCxcclxuICAgICAgICBzdWJUcmVlOiBudWxsLFxyXG4gICAgICAgIGVmZmVjdDogbnVsbCxcclxuICAgICAgICB1cGRhdGU6IG51bGwsXHJcbiAgICAgICAgc2NvcGU6IG5ldyBFZmZlY3RTY29wZSh0cnVlIC8qIGRldGFjaGVkICovKSxcclxuICAgICAgICByZW5kZXI6IG51bGwsXHJcbiAgICAgICAgcHJveHk6IG51bGwsXHJcbiAgICAgICAgZXhwb3NlZDogbnVsbCxcclxuICAgICAgICBleHBvc2VQcm94eTogbnVsbCxcclxuICAgICAgICB3aXRoUHJveHk6IG51bGwsXHJcbiAgICAgICAgcHJvdmlkZXM6IHBhcmVudCA/IHBhcmVudC5wcm92aWRlcyA6IE9iamVjdC5jcmVhdGUoYXBwQ29udGV4dC5wcm92aWRlcyksXHJcbiAgICAgICAgYWNjZXNzQ2FjaGU6IG51bGwsXHJcbiAgICAgICAgcmVuZGVyQ2FjaGU6IFtdLFxyXG4gICAgICAgIC8vIGxvY2FsIHJlc29sdmVkIGFzc2V0c1xyXG4gICAgICAgIGNvbXBvbmVudHM6IG51bGwsXHJcbiAgICAgICAgZGlyZWN0aXZlczogbnVsbCxcclxuICAgICAgICAvLyByZXNvbHZlZCBwcm9wcyBhbmQgZW1pdHMgb3B0aW9uc1xyXG4gICAgICAgIHByb3BzT3B0aW9uczogbm9ybWFsaXplUHJvcHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxyXG4gICAgICAgIGVtaXRzT3B0aW9uczogbm9ybWFsaXplRW1pdHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxyXG4gICAgICAgIC8vIGVtaXRcclxuICAgICAgICBlbWl0OiBudWxsLFxyXG4gICAgICAgIGVtaXR0ZWQ6IG51bGwsXHJcbiAgICAgICAgLy8gcHJvcHMgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAgIHByb3BzRGVmYXVsdHM6IEVNUFRZX09CSixcclxuICAgICAgICAvLyBpbmhlcml0QXR0cnNcclxuICAgICAgICBpbmhlcml0QXR0cnM6IHR5cGUuaW5oZXJpdEF0dHJzLFxyXG4gICAgICAgIC8vIHN0YXRlXHJcbiAgICAgICAgY3R4OiBFTVBUWV9PQkosXHJcbiAgICAgICAgZGF0YTogRU1QVFlfT0JKLFxyXG4gICAgICAgIHByb3BzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgYXR0cnM6IEVNUFRZX09CSixcclxuICAgICAgICBzbG90czogRU1QVFlfT0JKLFxyXG4gICAgICAgIHJlZnM6IEVNUFRZX09CSixcclxuICAgICAgICBzZXR1cFN0YXRlOiBFTVBUWV9PQkosXHJcbiAgICAgICAgc2V0dXBDb250ZXh0OiBudWxsLFxyXG4gICAgICAgIC8vIHN1c3BlbnNlIHJlbGF0ZWRcclxuICAgICAgICBzdXNwZW5zZSxcclxuICAgICAgICBzdXNwZW5zZUlkOiBzdXNwZW5zZSA/IHN1c3BlbnNlLnBlbmRpbmdJZCA6IDAsXHJcbiAgICAgICAgYXN5bmNEZXA6IG51bGwsXHJcbiAgICAgICAgYXN5bmNSZXNvbHZlZDogZmFsc2UsXHJcbiAgICAgICAgLy8gbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgLy8gbm90IHVzaW5nIGVudW1zIGhlcmUgYmVjYXVzZSBpdCByZXN1bHRzIGluIGNvbXB1dGVkIHByb3BlcnRpZXNcclxuICAgICAgICBpc01vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzVW5tb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc0RlYWN0aXZhdGVkOiBmYWxzZSxcclxuICAgICAgICBiYzogbnVsbCxcclxuICAgICAgICBjOiBudWxsLFxyXG4gICAgICAgIGJtOiBudWxsLFxyXG4gICAgICAgIG06IG51bGwsXHJcbiAgICAgICAgYnU6IG51bGwsXHJcbiAgICAgICAgdTogbnVsbCxcclxuICAgICAgICB1bTogbnVsbCxcclxuICAgICAgICBidW06IG51bGwsXHJcbiAgICAgICAgZGE6IG51bGwsXHJcbiAgICAgICAgYTogbnVsbCxcclxuICAgICAgICBydGc6IG51bGwsXHJcbiAgICAgICAgcnRjOiBudWxsLFxyXG4gICAgICAgIGVjOiBudWxsLFxyXG4gICAgICAgIHNwOiBudWxsXHJcbiAgICB9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGluc3RhbmNlLmN0eCA9IGNyZWF0ZURldlJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaW5zdGFuY2UuY3R4ID0geyBfOiBpbnN0YW5jZSB9O1xyXG4gICAgfVxyXG4gICAgaW5zdGFuY2Uucm9vdCA9IHBhcmVudCA/IHBhcmVudC5yb290IDogaW5zdGFuY2U7XHJcbiAgICBpbnN0YW5jZS5lbWl0ID0gZW1pdCQxLmJpbmQobnVsbCwgaW5zdGFuY2UpO1xyXG4gICAgLy8gYXBwbHkgY3VzdG9tIGVsZW1lbnQgc3BlY2lhbCBoYW5kbGluZ1xyXG4gICAgaWYgKHZub2RlLmNlKSB7XHJcbiAgICAgICAgdm5vZGUuY2UoaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGluc3RhbmNlO1xyXG59XHJcbmxldCBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xyXG5jb25zdCBnZXRDdXJyZW50SW5zdGFuY2UgPSAoKSA9PiBjdXJyZW50SW5zdGFuY2UgfHwgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG5jb25zdCBzZXRDdXJyZW50SW5zdGFuY2UgPSAoaW5zdGFuY2UpID0+IHtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgaW5zdGFuY2Uuc2NvcGUub24oKTtcclxufTtcclxuY29uc3QgdW5zZXRDdXJyZW50SW5zdGFuY2UgPSAoKSA9PiB7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgJiYgY3VycmVudEluc3RhbmNlLnNjb3BlLm9mZigpO1xyXG4gICAgY3VycmVudEluc3RhbmNlID0gbnVsbDtcclxufTtcclxuY29uc3QgaXNCdWlsdEluVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcpO1xyXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZSwgY29uZmlnKSB7XHJcbiAgICBjb25zdCBhcHBJc05hdGl2ZVRhZyA9IGNvbmZpZy5pc05hdGl2ZVRhZyB8fCBOTztcclxuICAgIGlmIChpc0J1aWx0SW5UYWcobmFtZSkgfHwgYXBwSXNOYXRpdmVUYWcobmFtZSkpIHtcclxuICAgICAgICB3YXJuKCdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50IGlkOiAnICsgbmFtZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSkge1xyXG4gICAgcmV0dXJuIGluc3RhbmNlLnZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi87XHJcbn1cclxubGV0IGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBzZXR1cENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgaXNJblNTUkNvbXBvbmVudFNldHVwID0gaXNTU1I7XHJcbiAgICBjb25zdCB7IHByb3BzLCBjaGlsZHJlbiB9ID0gaW5zdGFuY2Uudm5vZGU7XHJcbiAgICBjb25zdCBpc1N0YXRlZnVsID0gaXNTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSk7XHJcbiAgICBpbml0UHJvcHMoaW5zdGFuY2UsIHByb3BzLCBpc1N0YXRlZnVsLCBpc1NTUik7XHJcbiAgICBpbml0U2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gaXNTdGF0ZWZ1bFxyXG4gICAgICAgID8gc2V0dXBTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBmYWxzZTtcclxuICAgIHJldHVybiBzZXR1cFJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBzZXR1cFN0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUikge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpZiAoQ29tcG9uZW50Lm5hbWUpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKENvbXBvbmVudC5uYW1lLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKENvbXBvbmVudC5jb21wb25lbnRzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWVzW2ldLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5kaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmRpcmVjdGl2ZXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZXNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcGlsZXJPcHRpb25zICYmIGlzUnVudGltZU9ubHkoKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBcImNvbXBpbGVyT3B0aW9uc1wiIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgYSBidWlsZCBvZiBWdWUgdGhhdCBgICtcclxuICAgICAgICAgICAgICAgIGBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlci4gU2luY2UgeW91IGFyZSB1c2luZyBhIHJ1bnRpbWUtb25seSBgICtcclxuICAgICAgICAgICAgICAgIGBidWlsZCwgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHBhc3NlZCB2aWEgeW91ciBidWlsZCB0b29sIGNvbmZpZyBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDAuIGNyZWF0ZSByZW5kZXIgcHJveHkgcHJvcGVydHkgYWNjZXNzIGNhY2hlXHJcbiAgICBpbnN0YW5jZS5hY2Nlc3NDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAvLyAxLiBjcmVhdGUgcHVibGljIGluc3RhbmNlIC8gcmVuZGVyIHByb3h5XHJcbiAgICAvLyBhbHNvIG1hcmsgaXQgcmF3IHNvIGl0J3MgbmV2ZXIgb2JzZXJ2ZWRcclxuICAgIGluc3RhbmNlLnByb3h5ID0gbWFya1JhdyhuZXcgUHJveHkoaW5zdGFuY2UuY3R4LCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBleHBvc2VQcm9wc09uUmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBjYWxsIHNldHVwKClcclxuICAgIGNvbnN0IHsgc2V0dXAgfSA9IENvbXBvbmVudDtcclxuICAgIGlmIChzZXR1cCkge1xyXG4gICAgICAgIGNvbnN0IHNldHVwQ29udGV4dCA9IChpbnN0YW5jZS5zZXR1cENvbnRleHQgPVxyXG4gICAgICAgICAgICBzZXR1cC5sZW5ndGggPiAxID8gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSA6IG51bGwpO1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHNldHVwLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovLCBbKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGluc3RhbmNlLnByb3BzKSA6IGluc3RhbmNlLnByb3BzLCBzZXR1cENvbnRleHRdKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBpZiAoaXNQcm9taXNlKHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgICAgICBzZXR1cFJlc3VsdC50aGVuKHVuc2V0Q3VycmVudEluc3RhbmNlLCB1bnNldEN1cnJlbnRJbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NTUikge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBwcm9taXNlIHNvIHNlcnZlci1yZW5kZXJlciBjYW4gd2FpdCBvbiBpdFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwUmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc29sdmVkUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHJlc29sdmVkUmVzdWx0LCBpc1NTUik7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgc2V0dXAgcmV0dXJuZWQgUHJvbWlzZS5cclxuICAgICAgICAgICAgICAgIC8vIGJhaWwgaGVyZSBhbmQgd2FpdCBmb3IgcmUtZW50cnkuXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3luY0RlcCA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaW5zdGFuY2Uuc3VzcGVuc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gKF9hID0gQ29tcG9uZW50Lm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdBbm9ueW1vdXMnO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCA8JHtuYW1lfT46IHNldHVwIGZ1bmN0aW9uIHJldHVybmVkIGEgcHJvbWlzZSwgYnV0IG5vIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgPFN1c3BlbnNlPiBib3VuZGFyeSB3YXMgZm91bmQgaW4gdGhlIHBhcmVudCBjb21wb25lbnQgdHJlZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBBIGNvbXBvbmVudCB3aXRoIGFzeW5jIHNldHVwKCkgbXVzdCBiZSBuZXN0ZWQgaW4gYSA8U3VzcGVuc2U+IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaW4gb3JkZXIgdG8gYmUgcmVuZGVyZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBzZXR1cFJlc3VsdCwgaXNTU1IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHNldHVwUmVzdWx0LCBpc1NTUikge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYW4gaW5saW5lIHJlbmRlciBmdW5jdGlvblxyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLl9fc3NySW5saW5lUmVuZGVyKSB7XHJcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBpcyBgc3NyUmVuZGVyYCAoY29tcGlsZWQgYnkgU0ZDIGlubGluZSBtb2RlKSxcclxuICAgICAgICAgICAgLy8gc2V0IGl0IGFzIHNzclJlbmRlciBpbnN0ZWFkLlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zc3JSZW5kZXIgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNWTm9kZShzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgbm90IHJldHVybiBWTm9kZXMgZGlyZWN0bHkgLSBgICtcclxuICAgICAgICAgICAgICAgIGByZXR1cm4gYSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYmluZGluZ3MuXHJcbiAgICAgICAgLy8gYXNzdW1pbmcgYSByZW5kZXIgZnVuY3Rpb24gY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZSBpcyBwcmVzZW50LlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmRldnRvb2xzUmF3U2V0dXBTdGF0ZSA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5zZXR1cFN0YXRlID0gcHJveHlSZWZzKHNldHVwUmVzdWx0KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzZXR1cFJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC4gUmVjZWl2ZWQ6ICR7c2V0dXBSZXN1bHQgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2Ygc2V0dXBSZXN1bHR9YCk7XHJcbiAgICB9XHJcbiAgICBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IpO1xyXG59XHJcbmxldCBjb21waWxlO1xyXG5sZXQgaW5zdGFsbFdpdGhQcm94eTtcclxuLyoqXHJcbiAqIEZvciBydW50aW1lLWRvbSB0byByZWdpc3RlciB0aGUgY29tcGlsZXIuXHJcbiAqIE5vdGUgdGhlIGV4cG9ydGVkIG1ldGhvZCB1c2VzIGFueSB0byBhdm9pZCBkLnRzIHJlbHlpbmcgb24gdGhlIGNvbXBpbGVyIHR5cGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIoX2NvbXBpbGUpIHtcclxuICAgIGNvbXBpbGUgPSBfY29tcGlsZTtcclxuICAgIGluc3RhbGxXaXRoUHJveHkgPSBpID0+IHtcclxuICAgICAgICBpZiAoaS5yZW5kZXIuX3JjKSB7XHJcbiAgICAgICAgICAgIGkud2l0aFByb3h5ID0gbmV3IFByb3h5KGkuY3R4LCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuY29uc3QgaXNSdW50aW1lT25seSA9ICgpID0+ICFjb21waWxlO1xyXG5mdW5jdGlvbiBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IsIHNraXBPcHRpb25zKSB7XHJcbiAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgLy8gdGVtcGxhdGUgLyByZW5kZXIgZnVuY3Rpb24gbm9ybWFsaXphdGlvblxyXG4gICAgLy8gY291bGQgYmUgYWxyZWFkeSBzZXQgd2hlbiByZXR1cm5lZCBmcm9tIHNldHVwKClcclxuICAgIGlmICghaW5zdGFuY2UucmVuZGVyKSB7XHJcbiAgICAgICAgLy8gb25seSBkbyBvbi10aGUtZmx5IGNvbXBpbGUgaWYgbm90IGluIFNTUiAtIFNTUiBvbi10aGUtZmx5IGNvbXBpbGF0aW9uXHJcbiAgICAgICAgLy8gaXMgZG9uZSBieSBzZXJ2ZXItcmVuZGVyZXJcclxuICAgICAgICBpZiAoIWlzU1NSICYmIGNvbXBpbGUgJiYgIUNvbXBvbmVudC5yZW5kZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBDb21wb25lbnQudGVtcGxhdGU7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXNDdXN0b21FbGVtZW50LCBjb21waWxlck9wdGlvbnMgfSA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBkZWxpbWl0ZXJzLCBjb21waWxlck9wdGlvbnM6IGNvbXBvbmVudENvbXBpbGVyT3B0aW9ucyB9ID0gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb21waWxlck9wdGlvbnMgPSBleHRlbmQoZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgICAgICBpc0N1c3RvbUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyc1xyXG4gICAgICAgICAgICAgICAgfSwgY29tcGlsZXJPcHRpb25zKSwgY29tcG9uZW50Q29tcGlsZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIENvbXBvbmVudC5yZW5kZXIgPSBjb21waWxlKHRlbXBsYXRlLCBmaW5hbENvbXBpbGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSAoQ29tcG9uZW50LnJlbmRlciB8fCBOT09QKTtcclxuICAgICAgICAvLyBmb3IgcnVudGltZS1jb21waWxlZCByZW5kZXIgZnVuY3Rpb25zIHVzaW5nIGB3aXRoYCBibG9ja3MsIHRoZSByZW5kZXJcclxuICAgICAgICAvLyBwcm94eSB1c2VkIG5lZWRzIGEgZGlmZmVyZW50IGBoYXNgIGhhbmRsZXIgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGFuZFxyXG4gICAgICAgIC8vIGFsc28gb25seSBhbGxvd3MgYSB3aGl0ZWxpc3Qgb2YgZ2xvYmFscyB0byBmYWxsdGhyb3VnaC5cclxuICAgICAgICBpZiAoaW5zdGFsbFdpdGhQcm94eSkge1xyXG4gICAgICAgICAgICBpbnN0YWxsV2l0aFByb3h5KGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdXBwb3J0IGZvciAyLnggb3B0aW9uc1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIShmYWxzZSApKSB7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgYXBwbHlPcHRpb25zKGluc3RhbmNlKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIC8vIHdhcm4gbWlzc2luZyB0ZW1wbGF0ZS9yZW5kZXJcclxuICAgIC8vIHRoZSBydW50aW1lIGNvbXBpbGF0aW9uIG9mIHRlbXBsYXRlIGluIFNTUiBpcyBkb25lIGJ5IHNlcnZlci1yZW5kZXJcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIUNvbXBvbmVudC5yZW5kZXIgJiYgaW5zdGFuY2UucmVuZGVyID09PSBOT09QICYmICFpc1NTUikge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICghY29tcGlsZSAmJiBDb21wb25lbnQudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IHByb3ZpZGVkIHRlbXBsYXRlIG9wdGlvbiBidXQgYCArXHJcbiAgICAgICAgICAgICAgICBgcnVudGltZSBjb21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgVnVlLmAgK1xyXG4gICAgICAgICAgICAgICAgKGAgQ29uZmlndXJlIHlvdXIgYnVuZGxlciB0byBhbGlhcyBcInZ1ZVwiIHRvIFwidnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzXCIuYFxyXG4gICAgICAgICAgICAgICAgICAgICkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGlzIG1pc3NpbmcgdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb3h5KGluc3RhbmNlLmF0dHJzLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgJyRhdHRycycpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cENvbnRleHQuYXR0cnMgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihgc2V0dXBDb250ZXh0LmF0dHJzIGlzIHJlYWRvbmx5LmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDoge1xyXG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sICckYXR0cnMnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNldHVwQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgZXhwb3NlID0gZXhwb3NlZCA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGV4cG9zZSgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlIHBlciBzZXR1cCgpLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5leHBvc2VkID0gZXhwb3NlZCB8fCB7fTtcclxuICAgIH07XHJcbiAgICBsZXQgYXR0cnM7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgLy8gV2UgdXNlIGdldHRlcnMgaW4gZGV2IGluIGNhc2UgbGlicyBsaWtlIHRlc3QtdXRpbHMgb3ZlcndyaXRlIGluc3RhbmNlXHJcbiAgICAgICAgLy8gcHJvcGVydGllcyAob3ZlcndyaXRlcyBzaG91bGQgbm90IGJlIGRvbmUgaW4gcHJvZClcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRycyB8fCAoYXR0cnMgPSBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldCBzbG90cygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzaGFsbG93UmVhZG9ubHkoaW5zdGFuY2Uuc2xvdHMpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXQgZW1pdCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoZXZlbnQsIC4uLmFyZ3MpID0+IGluc3RhbmNlLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBleHBvc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRycyB8fCAoYXR0cnMgPSBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNsb3RzOiBpbnN0YW5jZS5zbG90cyxcclxuICAgICAgICAgICAgZW1pdDogaW5zdGFuY2UuZW1pdCxcclxuICAgICAgICAgICAgZXhwb3NlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRFeHBvc2VQcm94eShpbnN0YW5jZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICByZXR1cm4gKGluc3RhbmNlLmV4cG9zZVByb3h5IHx8XHJcbiAgICAgICAgICAgIChpbnN0YW5jZS5leHBvc2VQcm94eSA9IG5ldyBQcm94eShwcm94eVJlZnMobWFya1JhdyhpbnN0YW5jZS5leHBvc2VkKSksIHtcclxuICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5IGluIHB1YmxpY1Byb3BlcnRpZXNNYXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSkpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XHJcbmNvbnN0IGNsYXNzaWZ5ID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoY2xhc3NpZnlSRSwgYyA9PiBjLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL1stX10vZywgJycpO1xyXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCwgaW5jbHVkZUluZmVycmVkID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oQ29tcG9uZW50KVxyXG4gICAgICAgID8gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lXHJcbiAgICAgICAgOiBDb21wb25lbnQubmFtZSB8fCAoaW5jbHVkZUluZmVycmVkICYmIENvbXBvbmVudC5fX25hbWUpO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIENvbXBvbmVudCwgaXNSb290ID0gZmFsc2UpIHtcclxuICAgIGxldCBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQpO1xyXG4gICAgaWYgKCFuYW1lICYmIENvbXBvbmVudC5fX2ZpbGUpIHtcclxuICAgICAgICBjb25zdCBtYXRjaCA9IENvbXBvbmVudC5fX2ZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwuXFx3KyQvKTtcclxuICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgbmFtZSA9IG1hdGNoWzFdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghbmFtZSAmJiBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wYXJlbnQpIHtcclxuICAgICAgICAvLyB0cnkgdG8gaW5mZXIgdGhlIG5hbWUgYmFzZWQgb24gcmV2ZXJzZSByZXNvbHV0aW9uXHJcbiAgICAgICAgY29uc3QgaW5mZXJGcm9tUmVnaXN0cnkgPSAocmVnaXN0cnkpID0+IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVnaXN0cnkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyeVtrZXldID09PSBDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBuYW1lID1cclxuICAgICAgICAgICAgaW5mZXJGcm9tUmVnaXN0cnkoaW5zdGFuY2UuY29tcG9uZW50cyB8fFxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LnR5cGUuY29tcG9uZW50cykgfHwgaW5mZXJGcm9tUmVnaXN0cnkoaW5zdGFuY2UuYXBwQ29udGV4dC5jb21wb25lbnRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuYW1lID8gY2xhc3NpZnkobmFtZSkgOiBpc1Jvb3QgPyBgQXBwYCA6IGBBbm9ueW1vdXNgO1xyXG59XHJcbmZ1bmN0aW9uIGlzQ2xhc3NDb21wb25lbnQodmFsdWUpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlKSAmJiAnX192Y2NPcHRzJyBpbiB2YWx1ZTtcclxufVxuXG5jb25zdCBjb21wdXRlZCA9ICgoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMpID0+IHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBjb21wdXRlZCQxKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zLCBpc0luU1NSQ29tcG9uZW50U2V0dXApO1xyXG59KTtcblxuLy8gZGV2IG9ubHlcclxuY29uc3Qgd2FyblJ1bnRpbWVVc2FnZSA9IChtZXRob2QpID0+IHdhcm4oYCR7bWV0aG9kfSgpIGlzIGEgY29tcGlsZXItaGludCBoZWxwZXIgdGhhdCBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYCArXHJcbiAgICBgPHNjcmlwdCBzZXR1cD4gb2YgYSBzaW5nbGUgZmlsZSBjb21wb25lbnQuIEl0cyBhcmd1bWVudHMgc2hvdWxkIGJlIGAgK1xyXG4gICAgYGNvbXBpbGVkIGF3YXkgYW5kIHBhc3NpbmcgaXQgYXQgcnVudGltZSBoYXMgbm8gZWZmZWN0LmApO1xyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBkZWZpbmVQcm9wcygpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVQcm9wc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gZGVmaW5lRW1pdHMoKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lRW1pdHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBWdWUgYDxzY3JpcHQgc2V0dXA+YCBjb21waWxlciBtYWNybyBmb3IgZGVjbGFyaW5nIGEgY29tcG9uZW50J3MgZXhwb3NlZFxyXG4gKiBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4gaXQgaXMgYWNjZXNzZWQgYnkgYSBwYXJlbnQgY29tcG9uZW50IHZpYSB0ZW1wbGF0ZVxyXG4gKiByZWZzLlxyXG4gKlxyXG4gKiBgPHNjcmlwdCBzZXR1cD5gIGNvbXBvbmVudHMgYXJlIGNsb3NlZCBieSBkZWZhdWx0IC0gaS5lLiB2YXJpYWJsZXMgaW5zaWRlXHJcbiAqIHRoZSBgPHNjcmlwdCBzZXR1cD5gIHNjb3BlIGlzIG5vdCBleHBvc2VkIHRvIHBhcmVudCB1bmxlc3MgZXhwbGljaXRseSBleHBvc2VkXHJcbiAqIHZpYSBgZGVmaW5lRXhwb3NlYC5cclxuICpcclxuICogVGhpcyBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYDxzY3JpcHQgc2V0dXA+YCwgaXMgY29tcGlsZWQgYXdheSBpbiB0aGVcclxuICogb3V0cHV0IGFuZCBzaG91bGQgKipub3QqKiBiZSBhY3R1YWxseSBjYWxsZWQgYXQgcnVudGltZS5cclxuICovXHJcbmZ1bmN0aW9uIGRlZmluZUV4cG9zZShleHBvc2VkKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lRXhwb3NlYCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIFZ1ZSBgPHNjcmlwdCBzZXR1cD5gIGNvbXBpbGVyIG1hY3JvIGZvciBwcm92aWRpbmcgcHJvcHMgZGVmYXVsdCB2YWx1ZXMgd2hlblxyXG4gKiB1c2luZyB0eXBlLWJhc2VkIGBkZWZpbmVQcm9wc2AgZGVjbGFyYXRpb24uXHJcbiAqXHJcbiAqIEV4YW1wbGUgdXNhZ2U6XHJcbiAqIGBgYHRzXHJcbiAqIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczx7XHJcbiAqICAgc2l6ZT86IG51bWJlclxyXG4gKiAgIGxhYmVscz86IHN0cmluZ1tdXHJcbiAqIH0+KCksIHtcclxuICogICBzaXplOiAzLFxyXG4gKiAgIGxhYmVsczogKCkgPT4gWydkZWZhdWx0IGxhYmVsJ11cclxuICogfSlcclxuICogYGBgXHJcbiAqXHJcbiAqIFRoaXMgaXMgb25seSB1c2FibGUgaW5zaWRlIGA8c2NyaXB0IHNldHVwPmAsIGlzIGNvbXBpbGVkIGF3YXkgaW4gdGhlIG91dHB1dFxyXG4gKiBhbmQgc2hvdWxkICoqbm90KiogYmUgYWN0dWFsbHkgY2FsbGVkIGF0IHJ1bnRpbWUuXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoRGVmYXVsdHMocHJvcHMsIGRlZmF1bHRzKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgd2l0aERlZmF1bHRzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5mdW5jdGlvbiB1c2VTbG90cygpIHtcclxuICAgIHJldHVybiBnZXRDb250ZXh0KCkuc2xvdHM7XHJcbn1cclxuZnVuY3Rpb24gdXNlQXR0cnMoKSB7XHJcbiAgICByZXR1cm4gZ2V0Q29udGV4dCgpLmF0dHJzO1xyXG59XHJcbmZ1bmN0aW9uIGdldENvbnRleHQoKSB7XHJcbiAgICBjb25zdCBpID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpKSB7XHJcbiAgICAgICAgd2FybihgdXNlQ29udGV4dCgpIGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBpbnN0YW5jZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpLnNldHVwQ29udGV4dCB8fCAoaS5zZXR1cENvbnRleHQgPSBjcmVhdGVTZXR1cENvbnRleHQoaSkpO1xyXG59XHJcbi8qKlxyXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgbWVyZ2luZyBkZWZhdWx0IGRlY2xhcmF0aW9ucy4gSW1wb3J0ZWQgYnkgY29tcGlsZWQgY29kZVxyXG4gKiBvbmx5LlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIG1lcmdlRGVmYXVsdHMocmF3LCBkZWZhdWx0cykge1xyXG4gICAgY29uc3QgcHJvcHMgPSBpc0FycmF5KHJhdylcclxuICAgICAgICA/IHJhdy5yZWR1Y2UoKG5vcm1hbGl6ZWQsIHApID0+ICgobm9ybWFsaXplZFtwXSA9IHt9KSwgbm9ybWFsaXplZCksIHt9KVxyXG4gICAgICAgIDogcmF3O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGVmYXVsdHMpIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBwcm9wc1trZXldO1xyXG4gICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkob3B0KSB8fCBpc0Z1bmN0aW9uKG9wdCkpIHtcclxuICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSB7IHR5cGU6IG9wdCwgZGVmYXVsdDogZGVmYXVsdHNba2V5XSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3B0LmRlZmF1bHQgPSBkZWZhdWx0c1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG9wdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0geyBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBwcm9wcyBkZWZhdWx0IGtleSBcIiR7a2V5fVwiIGhhcyBubyBjb3JyZXNwb25kaW5nIGRlY2xhcmF0aW9uLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxyXG4vKipcclxuICogVXNlZCB0byBjcmVhdGUgYSBwcm94eSBmb3IgdGhlIHJlc3QgZWxlbWVudCB3aGVuIGRlc3RydWN0dXJpbmcgcHJvcHMgd2l0aFxyXG4gKiBkZWZpbmVQcm9wcygpLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVByb3BzUmVzdFByb3h5KHByb3BzLCBleGNsdWRlZEtleXMpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcclxuICAgICAgICBpZiAoIWV4Y2x1ZGVkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gcHJvcHNba2V5XVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbi8qKlxyXG4gKiBgPHNjcmlwdCBzZXR1cD5gIGhlbHBlciBmb3IgcGVyc2lzdGluZyB0aGUgY3VycmVudCBpbnN0YW5jZSBjb250ZXh0IG92ZXJcclxuICogYXN5bmMvYXdhaXQgZmxvd3MuXHJcbiAqXHJcbiAqIGBAdnVlL2NvbXBpbGVyLXNmY2AgY29udmVydHMgdGhlIGZvbGxvd2luZzpcclxuICpcclxuICogYGBgdHNcclxuICogY29uc3QgeCA9IGF3YWl0IGZvbygpXHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBpbnRvOlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiBsZXQgX190ZW1wLCBfX3Jlc3RvcmVcclxuICogY29uc3QgeCA9ICgoW19fdGVtcCwgX19yZXN0b3JlXSA9IHdpdGhBc3luY0NvbnRleHQoKCkgPT4gZm9vKCkpKSxfX3RlbXA9YXdhaXQgX190ZW1wLF9fcmVzdG9yZSgpLF9fdGVtcClcclxuICogYGBgXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gd2l0aEFzeW5jQ29udGV4dChnZXRBd2FpdGFibGUpIHtcclxuICAgIGNvbnN0IGN0eCA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY3R4KSB7XHJcbiAgICAgICAgd2Fybihgd2l0aEFzeW5jQ29udGV4dCBjYWxsZWQgd2l0aG91dCBhY3RpdmUgY3VycmVudCBpbnN0YW5jZS4gYCArXHJcbiAgICAgICAgICAgIGBUaGlzIGlzIGxpa2VseSBhIGJ1Zy5gKTtcclxuICAgIH1cclxuICAgIGxldCBhd2FpdGFibGUgPSBnZXRBd2FpdGFibGUoKTtcclxuICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoaXNQcm9taXNlKGF3YWl0YWJsZSkpIHtcclxuICAgICAgICBhd2FpdGFibGUgPSBhd2FpdGFibGUuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShjdHgpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFthd2FpdGFibGUsICgpID0+IHNldEN1cnJlbnRJbnN0YW5jZShjdHgpXTtcclxufVxuXG4vLyBBY3R1YWwgaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gaCh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKSB7XHJcbiAgICBjb25zdCBsID0gYXJndW1lbnRzLmxlbmd0aDtcclxuICAgIGlmIChsID09PSAyKSB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BzT3JDaGlsZHJlbikgJiYgIWlzQXJyYXkocHJvcHNPckNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgdm5vZGUgd2l0aG91dCBwcm9wc1xyXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShwcm9wc09yQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbnVsbCwgW3Byb3BzT3JDaGlsZHJlbl0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzIHdpdGhvdXQgY2hpbGRyZW5cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzT3JDaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBvbWl0IHByb3BzXHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBudWxsLCBwcm9wc09yQ2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsID4gMykge1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGwgPT09IDMgJiYgaXNWTm9kZShjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBbY2hpbGRyZW5dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHNPckNoaWxkcmVuLCBjaGlsZHJlbik7XHJcbiAgICB9XHJcbn1cblxuY29uc3Qgc3NyQ29udGV4dEtleSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgc3NyQ29udGV4dGAgOiBgYCk7XHJcbmNvbnN0IHVzZVNTUkNvbnRleHQgPSAoKSA9PiB7XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gaW5qZWN0KHNzckNvbnRleHRLZXkpO1xyXG4gICAgICAgIGlmICghY3R4KSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNlcnZlciByZW5kZXJpbmcgY29udGV4dCBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byBvbmx5IGNhbGwgYCArXHJcbiAgICAgICAgICAgICAgICBgdXNlU1NSQ29udGV4dCgpIGNvbmRpdGlvbmFsbHkgaW4gdGhlIHNlcnZlciBidWlsZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN0eDtcclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gaXNTaGFsbG93KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovXSk7XHJcbn1cblxuZnVuY3Rpb24gaW5pdEN1c3RvbUZvcm1hdHRlcigpIHtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG4gICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB2dWVTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojM2JhNzc2JyB9O1xyXG4gICAgY29uc3QgbnVtYmVyU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzBiMWJjOScgfTtcclxuICAgIGNvbnN0IHN0cmluZ1N0eWxlID0geyBzdHlsZTogJ2NvbG9yOiNiNjJlMjQnIH07XHJcbiAgICBjb25zdCBrZXl3b3JkU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzlkMjg4YycgfTtcclxuICAgIC8vIGN1c3RvbSBmb3JtYXR0ZXIgZm9yIENocm9tZVxyXG4gICAgLy8gaHR0cHM6Ly93d3cubWF0dHpldW5lcnQuY29tLzIwMTYvMDIvMTkvY3VzdG9tLWNocm9tZS1kZXZ0b29scy1vYmplY3QtZm9ybWF0dGVycy5odG1sXHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSB7XHJcbiAgICAgICAgaGVhZGVyKG9iaikge1xyXG4gICAgICAgICAgICAvLyBUT0RPIGFsc28gZm9ybWF0IENvbXBvbmVudFB1YmxpY0luc3RhbmNlICYgY3R4LnNsb3RzL2F0dHJzIGluIHNldHVwXHJcbiAgICAgICAgICAgIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydkaXYnLCB2dWVTdHlsZSwgYFZ1ZUluc3RhbmNlYF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWYob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgZ2VuUmVmRmxhZyhvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBgPmBcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/ICdTaGFsbG93UmVhY3RpdmUnIDogJ1JlYWN0aXZlJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXHJcbiAgICAgICAgICAgICAgICAgICAgYD4ke2lzUmVhZG9ubHkob2JqKSA/IGAgKHJlYWRvbmx5KWAgOiBgYH1gXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhZG9ubHkob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgaXNTaGFsbG93KG9iaikgPyAnU2hhbGxvd1JlYWRvbmx5JyA6ICdSZWFkb25seSddLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmopLFxyXG4gICAgICAgICAgICAgICAgICAgICc+J1xyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhc0JvZHkob2JqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLl9faXNWdWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBib2R5KG9iaikge1xyXG4gICAgICAgICAgICBpZiAob2JqICYmIG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1hdEluc3RhbmNlKG9iai4kKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBmb3JtYXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrcyA9IFtdO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLnByb3BzICYmIGluc3RhbmNlLnByb3BzKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ3Byb3BzJywgdG9SYXcoaW5zdGFuY2UucHJvcHMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5zZXR1cFN0YXRlICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnc2V0dXAnLCBpbnN0YW5jZS5zZXR1cFN0YXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5kYXRhICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnZGF0YScsIHRvUmF3KGluc3RhbmNlLmRhdGEpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdjb21wdXRlZCcpO1xyXG4gICAgICAgIGlmIChjb21wdXRlZCkge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdjb21wdXRlZCcsIGNvbXB1dGVkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdpbmplY3QnKTtcclxuICAgICAgICBpZiAoaW5qZWN0ZWQpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnaW5qZWN0ZWQnLCBpbmplY3RlZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBibG9ja3MucHVzaChbXHJcbiAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiBrZXl3b3JkU3R5bGUuc3R5bGUgKyAnO29wYWNpdHk6MC42NidcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnJCAoaW50ZXJuYWwpOiAnXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFsnb2JqZWN0JywgeyBvYmplY3Q6IGluc3RhbmNlIH1dXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgcmV0dXJuIGJsb2NrcztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlQmxvY2sodHlwZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGFyZ2V0ID0gZXh0ZW5kKHt9LCB0YXJnZXQpO1xyXG4gICAgICAgIGlmICghT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHt9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgIHsgc3R5bGU6ICdsaW5lLWhlaWdodDoxLjI1ZW07bWFyZ2luLWJvdHRvbTowLjZlbScgfSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdjb2xvcjojNDc2NTgyJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHR5cGVcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdwYWRkaW5nLWxlZnQ6MS4yNWVtJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKHRhcmdldCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCBrZXl3b3JkU3R5bGUsIGtleSArICc6ICddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZSh0YXJnZXRba2V5XSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodiwgYXNSYXcgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgbnVtYmVyU3R5bGUsIHZdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHN0cmluZ1N0eWxlLCBKU09OLnN0cmluZ2lmeSh2KV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIGtleXdvcmRTdHlsZSwgdl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ29iamVjdCcsIHsgb2JqZWN0OiBhc1JhdyA/IHRvUmF3KHYpIDogdiB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBzdHJpbmdTdHlsZSwgU3RyaW5nKHYpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBleHRyYWN0S2V5cyhpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IENvbXAgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKENvbXApKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UuY3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBleHRyYWN0ZWRba2V5XSA9IGluc3RhbmNlLmN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBleHRyYWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpIHtcclxuICAgICAgICBjb25zdCBvcHRzID0gQ29tcFt0eXBlXTtcclxuICAgICAgICBpZiAoKGlzQXJyYXkob3B0cykgJiYgb3B0cy5pbmNsdWRlcyhrZXkpKSB8fFxyXG4gICAgICAgICAgICAoaXNPYmplY3Qob3B0cykgJiYga2V5IGluIG9wdHMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcC5leHRlbmRzICYmIGlzS2V5T2ZUeXBlKENvbXAuZXh0ZW5kcywga2V5LCB0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXAubWl4aW5zICYmIENvbXAubWl4aW5zLnNvbWUobSA9PiBpc0tleU9mVHlwZShtLCBrZXksIHR5cGUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZW5SZWZGbGFnKHYpIHtcclxuICAgICAgICBpZiAoaXNTaGFsbG93KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgU2hhbGxvd1JlZmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2LmVmZmVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYENvbXB1dGVkUmVmYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBSZWZgO1xyXG4gICAgfVxyXG4gICAgaWYgKHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMpIHtcclxuICAgICAgICB3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzLnB1c2goZm9ybWF0dGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMgPSBbZm9ybWF0dGVyXTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB3aXRoTWVtbyhtZW1vLCByZW5kZXIsIGNhY2hlLCBpbmRleCkge1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGVbaW5kZXhdO1xyXG4gICAgaWYgKGNhY2hlZCAmJiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0ID0gcmVuZGVyKCk7XHJcbiAgICAvLyBzaGFsbG93IGNsb25lXHJcbiAgICByZXQubWVtbyA9IG1lbW8uc2xpY2UoKTtcclxuICAgIHJldHVybiAoY2FjaGVbaW5kZXhdID0gcmV0KTtcclxufVxyXG5mdW5jdGlvbiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykge1xyXG4gICAgY29uc3QgcHJldiA9IGNhY2hlZC5tZW1vO1xyXG4gICAgaWYgKHByZXYubGVuZ3RoICE9IG1lbW8ubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQocHJldltpXSwgbWVtb1tpXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG1ha2Ugc3VyZSB0byBsZXQgcGFyZW50IGJsb2NrIHRyYWNrIGl0IHdoZW4gcmV0dXJuaW5nIGNhY2hlZFxyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2FjaGVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XG5cbi8vIENvcmUgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5jb25zdCB2ZXJzaW9uID0gXCIzLjIuMzhcIjtcclxuY29uc3QgX3NzclV0aWxzID0ge1xyXG4gICAgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UsXHJcbiAgICBzZXR1cENvbXBvbmVudCxcclxuICAgIHJlbmRlckNvbXBvbmVudFJvb3QsXHJcbiAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsXHJcbiAgICBpc1ZOb2RlLFxyXG4gICAgbm9ybWFsaXplVk5vZGVcclxufTtcclxuLyoqXHJcbiAqIFNTUiB1dGlscyBmb3IgXFxAdnVlL3NlcnZlci1yZW5kZXJlci4gT25seSBleHBvc2VkIGluIHNzci1wb3NzaWJsZSBidWlsZHMuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgc3NyVXRpbHMgPSAoX3NzclV0aWxzICk7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWwgb25seSBleHBvc2VkIGluIGNvbXBhdCBidWlsZHNcclxuICovXHJcbmNvbnN0IHJlc29sdmVGaWx0ZXIgPSBudWxsO1xyXG4vKipcclxuICogQGludGVybmFsIG9ubHkgZXhwb3NlZCBpbiBjb21wYXQgYnVpbGRzLlxyXG4gKi9cclxuY29uc3QgY29tcGF0VXRpbHMgPSAobnVsbCk7XG5cbmV4cG9ydCB7IEJhc2VUcmFuc2l0aW9uLCBDb21tZW50LCBGcmFnbWVudCwgS2VlcEFsaXZlLCBTdGF0aWMsIFN1c3BlbnNlLCBUZWxlcG9ydCwgVGV4dCwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGNhbGxXaXRoRXJyb3JIYW5kbGluZywgY2xvbmVWTm9kZSwgY29tcGF0VXRpbHMsIGNvbXB1dGVkLCBjcmVhdGVCbG9jaywgY3JlYXRlQ29tbWVudFZOb2RlLCBjcmVhdGVFbGVtZW50QmxvY2ssIGNyZWF0ZUJhc2VWTm9kZSBhcyBjcmVhdGVFbGVtZW50Vk5vZGUsIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyLCBjcmVhdGVQcm9wc1Jlc3RQcm94eSwgY3JlYXRlUmVuZGVyZXIsIGNyZWF0ZVNsb3RzLCBjcmVhdGVTdGF0aWNWTm9kZSwgY3JlYXRlVGV4dFZOb2RlLCBjcmVhdGVWTm9kZSwgZGVmaW5lQXN5bmNDb21wb25lbnQsIGRlZmluZUNvbXBvbmVudCwgZGVmaW5lRW1pdHMsIGRlZmluZUV4cG9zZSwgZGVmaW5lUHJvcHMsIGRldnRvb2xzLCBnZXRDdXJyZW50SW5zdGFuY2UsIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiwgZ3VhcmRSZWFjdGl2ZVByb3BzLCBoLCBoYW5kbGVFcnJvciwgaW5pdEN1c3RvbUZvcm1hdHRlciwgaW5qZWN0LCBpc01lbW9TYW1lLCBpc1J1bnRpbWVPbmx5LCBpc1ZOb2RlLCBtZXJnZURlZmF1bHRzLCBtZXJnZVByb3BzLCBuZXh0VGljaywgb25BY3RpdmF0ZWQsIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25CZWZvcmVVcGRhdGUsIG9uRGVhY3RpdmF0ZWQsIG9uRXJyb3JDYXB0dXJlZCwgb25Nb3VudGVkLCBvblJlbmRlclRyYWNrZWQsIG9uUmVuZGVyVHJpZ2dlcmVkLCBvblNlcnZlclByZWZldGNoLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCBvcGVuQmxvY2ssIHBvcFNjb3BlSWQsIHByb3ZpZGUsIHB1c2hTY29wZUlkLCBxdWV1ZVBvc3RGbHVzaENiLCByZWdpc3RlclJ1bnRpbWVDb21waWxlciwgcmVuZGVyTGlzdCwgcmVuZGVyU2xvdCwgcmVzb2x2ZUNvbXBvbmVudCwgcmVzb2x2ZURpcmVjdGl2ZSwgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsIHJlc29sdmVGaWx0ZXIsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIHNldEJsb2NrVHJhY2tpbmcsIHNldERldnRvb2xzSG9vaywgc2V0VHJhbnNpdGlvbkhvb2tzLCBzc3JDb250ZXh0S2V5LCBzc3JVdGlscywgdG9IYW5kbGVycywgdHJhbnNmb3JtVk5vZGVBcmdzLCB1c2VBdHRycywgdXNlU1NSQ29udGV4dCwgdXNlU2xvdHMsIHVzZVRyYW5zaXRpb25TdGF0ZSwgdmVyc2lvbiwgd2Fybiwgd2F0Y2gsIHdhdGNoRWZmZWN0LCB3YXRjaFBvc3RFZmZlY3QsIHdhdGNoU3luY0VmZmVjdCwgd2l0aEFzeW5jQ29udGV4dCwgd2l0aEN0eCwgd2l0aERlZmF1bHRzLCB3aXRoRGlyZWN0aXZlcywgd2l0aE1lbW8sIHdpdGhTY29wZUlkIH07XG4iLCJpbXBvcnQgeyBjYW1lbGl6ZSwgd2FybiwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIGNyZWF0ZVZOb2RlLCBnZXRDdXJyZW50SW5zdGFuY2UsIHdhdGNoUG9zdEVmZmVjdCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgRnJhZ21lbnQsIFN0YXRpYywgaCwgQmFzZVRyYW5zaXRpb24sIHVzZVRyYW5zaXRpb25TdGF0ZSwgb25VcGRhdGVkLCB0b1JhdywgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuLCBzZXRUcmFuc2l0aW9uSG9va3MsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIGNyZWF0ZVJlbmRlcmVyLCBpc1J1bnRpbWVPbmx5LCBjcmVhdGVIeWRyYXRpb25SZW5kZXJlciB9IGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0FycmF5LCBoeXBoZW5hdGUsIGNhcGl0YWxpemUsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGlzT24sIGlzTW9kZWxMaXN0ZW5lciwgaXNGdW5jdGlvbiwgdG9OdW1iZXIsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIGV4dGVuZCwgRU1QVFlfT0JKLCBpc09iamVjdCwgaW52b2tlQXJyYXlGbnMsIGxvb3NlSW5kZXhPZiwgaXNTZXQsIGxvb3NlRXF1YWwsIGlzSFRNTFRhZywgaXNTVkdUYWcgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN2Z05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcclxuY29uc3QgZG9jID0gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IG51bGwpO1xyXG5jb25zdCB0ZW1wbGF0ZUNvbnRhaW5lciA9IGRvYyAmJiAvKiNfX1BVUkVfXyovIGRvYy5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xyXG5jb25zdCBub2RlT3BzID0ge1xyXG4gICAgaW5zZXJ0OiAoY2hpbGQsIHBhcmVudCwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgYW5jaG9yIHx8IG51bGwpO1xyXG4gICAgfSxcclxuICAgIHJlbW92ZTogY2hpbGQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkLnBhcmVudE5vZGU7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVFbGVtZW50OiAodGFnLCBpc1NWRywgaXMsIHByb3BzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSBpc1NWR1xyXG4gICAgICAgICAgICA/IGRvYy5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIHRhZylcclxuICAgICAgICAgICAgOiBkb2MuY3JlYXRlRWxlbWVudCh0YWcsIGlzID8geyBpcyB9IDogdW5kZWZpbmVkKTtcclxuICAgICAgICBpZiAodGFnID09PSAnc2VsZWN0JyAmJiBwcm9wcyAmJiBwcm9wcy5tdWx0aXBsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCBwcm9wcy5tdWx0aXBsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbDtcclxuICAgIH0sXHJcbiAgICBjcmVhdGVUZXh0OiB0ZXh0ID0+IGRvYy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSxcclxuICAgIGNyZWF0ZUNvbW1lbnQ6IHRleHQgPT4gZG9jLmNyZWF0ZUNvbW1lbnQodGV4dCksXHJcbiAgICBzZXRUZXh0OiAobm9kZSwgdGV4dCkgPT4ge1xyXG4gICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcclxuICAgIH0sXHJcbiAgICBzZXRFbGVtZW50VGV4dDogKGVsLCB0ZXh0KSA9PiB7XHJcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0ZXh0O1xyXG4gICAgfSxcclxuICAgIHBhcmVudE5vZGU6IG5vZGUgPT4gbm9kZS5wYXJlbnROb2RlLFxyXG4gICAgbmV4dFNpYmxpbmc6IG5vZGUgPT4gbm9kZS5uZXh0U2libGluZyxcclxuICAgIHF1ZXJ5U2VsZWN0b3I6IHNlbGVjdG9yID0+IGRvYy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSxcclxuICAgIHNldFNjb3BlSWQoZWwsIGlkKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKGlkLCAnJyk7XHJcbiAgICB9LFxyXG4gICAgY2xvbmVOb2RlKGVsKSB7XHJcbiAgICAgICAgY29uc3QgY2xvbmVkID0gZWwuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIC8vICMzMDcyXHJcbiAgICAgICAgLy8gLSBpbiBgcGF0Y2hET01Qcm9wYCwgd2Ugc3RvcmUgdGhlIGFjdHVhbCB2YWx1ZSBpbiB0aGUgYGVsLl92YWx1ZWAgcHJvcGVydHkuXHJcbiAgICAgICAgLy8gLSBub3JtYWxseSwgZWxlbWVudHMgdXNpbmcgYDp2YWx1ZWAgYmluZGluZ3Mgd2lsbCBub3QgYmUgaG9pc3RlZCwgYnV0IGlmXHJcbiAgICAgICAgLy8gICB0aGUgYm91bmQgdmFsdWUgaXMgYSBjb25zdGFudCwgZS5nLiBgOnZhbHVlPVwidHJ1ZVwiYCAtIHRoZXkgZG8gZ2V0XHJcbiAgICAgICAgLy8gICBob2lzdGVkLlxyXG4gICAgICAgIC8vIC0gaW4gcHJvZHVjdGlvbiwgaG9pc3RlZCBub2RlcyBhcmUgY2xvbmVkIHdoZW4gc3Vic2VxdWVudCBpbnNlcnRzLCBidXRcclxuICAgICAgICAvLyAgIGNsb25lTm9kZSgpIGRvZXMgbm90IGNvcHkgdGhlIGN1c3RvbSBwcm9wZXJ0eSB3ZSBhdHRhY2hlZC5cclxuICAgICAgICAvLyAtIFRoaXMgbWF5IG5lZWQgdG8gYWNjb3VudCBmb3Igb3RoZXIgY3VzdG9tIERPTSBwcm9wZXJ0aWVzIHdlIGF0dGFjaCB0b1xyXG4gICAgICAgIC8vICAgZWxlbWVudHMgaW4gYWRkaXRpb24gdG8gYF92YWx1ZWAgaW4gdGhlIGZ1dHVyZS5cclxuICAgICAgICBpZiAoYF92YWx1ZWAgaW4gZWwpIHtcclxuICAgICAgICAgICAgY2xvbmVkLl92YWx1ZSA9IGVsLl92YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcclxuICAgIH0sXHJcbiAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAvLyBSZWFzb246IGlubmVySFRNTC5cclxuICAgIC8vIFN0YXRpYyBjb250ZW50IGhlcmUgY2FuIG9ubHkgY29tZSBmcm9tIGNvbXBpbGVkIHRlbXBsYXRlcy5cclxuICAgIC8vIEFzIGxvbmcgYXMgdGhlIHVzZXIgb25seSB1c2VzIHRydXN0ZWQgdGVtcGxhdGVzLCB0aGlzIGlzIHNhZmUuXHJcbiAgICBpbnNlcnRTdGF0aWNDb250ZW50KGNvbnRlbnQsIHBhcmVudCwgYW5jaG9yLCBpc1NWRywgc3RhcnQsIGVuZCkge1xyXG4gICAgICAgIC8vIDxwYXJlbnQ+IGJlZm9yZSB8IGZpcnN0IC4uLiBsYXN0IHwgYW5jaG9yIDwvcGFyZW50PlxyXG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IGFuY2hvciA/IGFuY2hvci5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xyXG4gICAgICAgIC8vICM1MzA4IGNhbiBvbmx5IHRha2UgY2FjaGVkIHBhdGggaWY6XHJcbiAgICAgICAgLy8gLSBoYXMgYSBzaW5nbGUgcm9vdCBub2RlXHJcbiAgICAgICAgLy8gLSBuZXh0U2libGluZyBpbmZvIGlzIHN0aWxsIGF2YWlsYWJsZVxyXG4gICAgICAgIGlmIChzdGFydCAmJiAoc3RhcnQgPT09IGVuZCB8fCBzdGFydC5uZXh0U2libGluZykpIHtcclxuICAgICAgICAgICAgLy8gY2FjaGVkXHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHN0YXJ0LmNsb25lTm9kZSh0cnVlKSwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gZW5kIHx8ICEoc3RhcnQgPSBzdGFydC5uZXh0U2libGluZykpXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZyZXNoIGluc2VydFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZUNvbnRhaW5lci5pbm5lckhUTUwgPSBpc1NWRyA/IGA8c3ZnPiR7Y29udGVudH08L3N2Zz5gIDogY29udGVudDtcclxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0ZW1wbGF0ZUNvbnRhaW5lci5jb250ZW50O1xyXG4gICAgICAgICAgICBpZiAoaXNTVkcpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBvdXRlciBzdmcgd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IHRlbXBsYXRlLmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAod3JhcHBlci5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuYXBwZW5kQ2hpbGQod3JhcHBlci5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnJlbW92ZUNoaWxkKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGVtcGxhdGUsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIC8vIGZpcnN0XHJcbiAgICAgICAgICAgIGJlZm9yZSA/IGJlZm9yZS5uZXh0U2libGluZyA6IHBhcmVudC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAvLyBsYXN0XHJcbiAgICAgICAgICAgIGFuY2hvciA/IGFuY2hvci5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufTtcblxuLy8gY29tcGlsZXIgc2hvdWxkIG5vcm1hbGl6ZSBjbGFzcyArIDpjbGFzcyBiaW5kaW5ncyBvbiB0aGUgc2FtZSBlbGVtZW50XHJcbi8vIGludG8gYSBzaW5nbGUgYmluZGluZyBbJ3N0YXRpY0NsYXNzJywgZHluYW1pY11cclxuZnVuY3Rpb24gcGF0Y2hDbGFzcyhlbCwgdmFsdWUsIGlzU1ZHKSB7XHJcbiAgICAvLyBkaXJlY3RseSBzZXR0aW5nIGNsYXNzTmFtZSBzaG91bGQgYmUgZmFzdGVyIHRoYW4gc2V0QXR0cmlidXRlIGluIHRoZW9yeVxyXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBlbGVtZW50IGR1cmluZyBhIHRyYW5zaXRpb24sIHRha2UgdGhlIHRlbXBvcmFyeSB0cmFuc2l0aW9uXHJcbiAgICAvLyBjbGFzc2VzIGludG8gYWNjb3VudC5cclxuICAgIGNvbnN0IHRyYW5zaXRpb25DbGFzc2VzID0gZWwuX3Z0YztcclxuICAgIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcykge1xyXG4gICAgICAgIHZhbHVlID0gKHZhbHVlID8gW3ZhbHVlLCAuLi50cmFuc2l0aW9uQ2xhc3Nlc10gOiBbLi4udHJhbnNpdGlvbkNsYXNzZXNdKS5qb2luKCcgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVsLmNsYXNzTmFtZSA9IHZhbHVlO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHBhdGNoU3R5bGUoZWwsIHByZXYsIG5leHQpIHtcclxuICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGU7XHJcbiAgICBjb25zdCBpc0Nzc1N0cmluZyA9IGlzU3RyaW5nKG5leHQpO1xyXG4gICAgaWYgKG5leHQgJiYgIWlzQ3NzU3RyaW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV4dCkge1xyXG4gICAgICAgICAgICBzZXRTdHlsZShzdHlsZSwga2V5LCBuZXh0W2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJldiAmJiAhaXNTdHJpbmcocHJldikpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJldikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGUoc3R5bGUsIGtleSwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xyXG4gICAgICAgIGlmIChpc0Nzc1N0cmluZykge1xyXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgc3R5bGUuY3NzVGV4dCA9IG5leHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocHJldikge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRoZSBgZGlzcGxheWAgb2YgdGhlIGVsZW1lbnQgaXMgY29udHJvbGxlZCBieSBgdi1zaG93YCxcclxuICAgICAgICAvLyBzbyB3ZSBhbHdheXMga2VlcCB0aGUgY3VycmVudCBgZGlzcGxheWAgdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgYHN0eWxlYFxyXG4gICAgICAgIC8vIHZhbHVlLCB0aHVzIGhhbmRpbmcgb3ZlciBjb250cm9sIHRvIGB2LXNob3dgLlxyXG4gICAgICAgIGlmICgnX3ZvZCcgaW4gZWwpIHtcclxuICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IGN1cnJlbnREaXNwbGF5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xyXG5mdW5jdGlvbiBzZXRTdHlsZShzdHlsZSwgbmFtZSwgdmFsKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgICAgdmFsLmZvckVhY2godiA9PiBzZXRTdHlsZShzdHlsZSwgbmFtZSwgdikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICB2YWwgPSAnJztcclxuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCctLScpKSB7XHJcbiAgICAgICAgICAgIC8vIGN1c3RvbSBwcm9wZXJ0eSBkZWZpbml0aW9uXHJcbiAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhlZCA9IGF1dG9QcmVmaXgoc3R5bGUsIG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW1wb3J0YW50UkUudGVzdCh2YWwpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAhaW1wb3J0YW50XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShoeXBoZW5hdGUocHJlZml4ZWQpLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZVtwcmVmaXhlZF0gPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3QgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcclxuY29uc3QgcHJlZml4Q2FjaGUgPSB7fTtcclxuZnVuY3Rpb24gYXV0b1ByZWZpeChzdHlsZSwgcmF3TmFtZSkge1xyXG4gICAgY29uc3QgY2FjaGVkID0gcHJlZml4Q2FjaGVbcmF3TmFtZV07XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGxldCBuYW1lID0gY2FtZWxpemUocmF3TmFtZSk7XHJcbiAgICBpZiAobmFtZSAhPT0gJ2ZpbHRlcicgJiYgbmFtZSBpbiBzdHlsZSkge1xyXG4gICAgICAgIHJldHVybiAocHJlZml4Q2FjaGVbcmF3TmFtZV0gPSBuYW1lKTtcclxuICAgIH1cclxuICAgIG5hbWUgPSBjYXBpdGFsaXplKG5hbWUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHByZWZpeGVkID0gcHJlZml4ZXNbaV0gKyBuYW1lO1xyXG4gICAgICAgIGlmIChwcmVmaXhlZCBpbiBzdHlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gKHByZWZpeENhY2hlW3Jhd05hbWVdID0gcHJlZml4ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByYXdOYW1lO1xyXG59XG5cbmNvbnN0IHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XHJcbmZ1bmN0aW9uIHBhdGNoQXR0cihlbCwga2V5LCB2YWx1ZSwgaXNTVkcsIGluc3RhbmNlKSB7XHJcbiAgICBpZiAoaXNTVkcgJiYga2V5LnN0YXJ0c1dpdGgoJ3hsaW5rOicpKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywga2V5LnNsaWNlKDYsIGtleS5sZW5ndGgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIG5vdGUgd2UgYXJlIG9ubHkgY2hlY2tpbmcgYm9vbGVhbiBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2ZSBhXHJcbiAgICAgICAgLy8gY29ycmVzcG9uZGluZyBkb20gcHJvcCBvZiB0aGUgc2FtZSBuYW1lIGhlcmUuXHJcbiAgICAgICAgY29uc3QgaXNCb29sZWFuID0gaXNTcGVjaWFsQm9vbGVhbkF0dHIoa2V5KTtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAoaXNCb29sZWFuICYmICFpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpKSkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzQm9vbGVhbiA/ICcnIDogdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vLyBfX1VOU0FGRV9fXHJcbi8vIGZ1bmN0aW9ucy4gVGhlIHVzZXIgaXMgcmVzcG9uc2libGUgZm9yIHVzaW5nIHRoZW0gd2l0aCBvbmx5IHRydXN0ZWQgY29udGVudC5cclxuZnVuY3Rpb24gcGF0Y2hET01Qcm9wKGVsLCBrZXksIHZhbHVlLCBcclxuLy8gdGhlIGZvbGxvd2luZyBhcmdzIGFyZSBwYXNzZWQgb25seSBkdWUgdG8gcG90ZW50aWFsIGlubmVySFRNTC90ZXh0Q29udGVudFxyXG4vLyBvdmVycmlkaW5nIGV4aXN0aW5nIFZOb2RlcywgaW4gd2hpY2ggY2FzZSB0aGUgb2xkIHRyZWUgbXVzdCBiZSBwcm9wZXJseVxyXG4vLyB1bm1vdW50ZWQuXHJcbnByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKSB7XHJcbiAgICBpZiAoa2V5ID09PSAnaW5uZXJIVE1MJyB8fCBrZXkgPT09ICd0ZXh0Q29udGVudCcpIHtcclxuICAgICAgICBpZiAocHJldkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbFtrZXldID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJyAmJlxyXG4gICAgICAgIGVsLnRhZ05hbWUgIT09ICdQUk9HUkVTUycgJiZcclxuICAgICAgICAvLyBjdXN0b20gZWxlbWVudHMgbWF5IHVzZSBfdmFsdWUgaW50ZXJuYWxseVxyXG4gICAgICAgICFlbC50YWdOYW1lLmluY2x1ZGVzKCctJykpIHtcclxuICAgICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxyXG4gICAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQuXHJcbiAgICAgICAgZWwuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICBpZiAoZWwudmFsdWUgIT09IG5ld1ZhbHVlIHx8XHJcbiAgICAgICAgICAgIC8vICM0OTU2OiBhbHdheXMgc2V0IGZvciBPUFRJT04gZWxlbWVudHMgYmVjYXVzZSBpdHMgdmFsdWUgZmFsbHMgYmFjayB0b1xyXG4gICAgICAgICAgICAvLyB0ZXh0Q29udGVudCBpZiBubyB2YWx1ZSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4gQW5kIHNldHRpbmcgLnZhbHVlIGZvclxyXG4gICAgICAgICAgICAvLyBPUFRJT04gaGFzIG5vIHNpZGUgZWZmZWN0XHJcbiAgICAgICAgICAgIGVsLnRhZ05hbWUgPT09ICdPUFRJT04nKSB7XHJcbiAgICAgICAgICAgIGVsLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmVlZFJlbW92ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiBlbFtrZXldO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8c2VsZWN0IG11bHRpcGxlPiBjb21waWxlcyB0byB7IG11bHRpcGxlOiAnJyB9XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gbnVsbCAmJiB0eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxkaXYgOmlkPVwibnVsbFwiPlxyXG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICBuZWVkUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8aW1nIDp3aWR0aD1cIm51bGxcIj5cclxuICAgICAgICAgICAgLy8gdGhlIHZhbHVlIG9mIHNvbWUgSURMIGF0dHIgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgZS5nLiBpbnB1dC5zaXplID0gMCAtPiBlcnJvclxyXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XHJcbiAgICAgICAgICAgIG5lZWRSZW1vdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHNvbWUgcHJvcGVydGllcyBwZXJmb3JtIHZhbHVlIHZhbGlkYXRpb24gYW5kIHRocm93LFxyXG4gICAgLy8gc29tZSBwcm9wZXJ0aWVzIGhhcyBnZXR0ZXIsIG5vIHNldHRlciwgd2lsbCBlcnJvciBpbiAndXNlIHN0cmljdCdcclxuICAgIC8vIGVnLiA8c2VsZWN0IDp0eXBlPVwibnVsbFwiPjwvc2VsZWN0PiA8c2VsZWN0IDp3aWxsVmFsaWRhdGU9XCJudWxsXCI+PC9zZWxlY3Q+XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGVsW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBGYWlsZWQgc2V0dGluZyBwcm9wIFwiJHtrZXl9XCIgb24gPCR7ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT46IGAgK1xyXG4gICAgICAgICAgICAgICAgYHZhbHVlICR7dmFsdWV9IGlzIGludmFsaWQuYCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmVlZFJlbW92ZSAmJiBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcclxufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgZml4IHJlcXVpcmVzIHN0b3JpbmcgYW4gZXZlbnQgbGlzdGVuZXIncyBhdHRhY2ggdGltZXN0YW1wLlxyXG5jb25zdCBbX2dldE5vdywgc2tpcFRpbWVzdGFtcENoZWNrXSA9IC8qI19fUFVSRV9fKi8gKCgpID0+IHtcclxuICAgIGxldCBfZ2V0Tm93ID0gRGF0ZS5ub3c7XHJcbiAgICBsZXQgc2tpcFRpbWVzdGFtcENoZWNrID0gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCBldmVudCB0aW1lc3RhbXAgdGhlIGJyb3dzZXIgaXMgdXNpbmcuIEFubm95aW5nbHksIHRoZVxyXG4gICAgICAgIC8vIHRpbWVzdGFtcCBjYW4gZWl0aGVyIGJlIGhpLXJlcyAocmVsYXRpdmUgdG8gcGFnZSBsb2FkKSBvciBsb3ctcmVzXHJcbiAgICAgICAgLy8gKHJlbGF0aXZlIHRvIFVOSVggZXBvY2gpLCBzbyBpbiBvcmRlciB0byBjb21wYXJlIHRpbWUgd2UgaGF2ZSB0byB1c2UgdGhlXHJcbiAgICAgICAgLy8gc2FtZSB0aW1lc3RhbXAgdHlwZSB3aGVuIHNhdmluZyB0aGUgZmx1c2ggdGltZXN0YW1wLlxyXG4gICAgICAgIGlmIChEYXRlLm5vdygpID4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykudGltZVN0YW1wKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBsb3ctcmVzIHRpbWVzdGFtcCB3aGljaCBpcyBiaWdnZXIgdGhhbiB0aGUgZXZlbnQgdGltZXN0YW1wXHJcbiAgICAgICAgICAgIC8vICh3aGljaCBpcyBldmFsdWF0ZWQgQUZURVIpIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHVzZSB0aGUgaGktcmVzIHZlcnNpb24gZm9yIGV2ZW50IGxpc3RlbmVycyBhcyB3ZWxsLlxyXG4gICAgICAgICAgICBfZ2V0Tm93ID0gcGVyZm9ybWFuY2Uubm93LmJpbmQocGVyZm9ybWFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAjMzQ4NTogRmlyZWZveCA8PSA1MyBoYXMgaW5jb3JyZWN0IEV2ZW50LnRpbWVTdGFtcCBpbXBsZW1lbnRhdGlvblxyXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBmaXJlIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbiwgc28gc2FmZSB0byBleGNsdWRlLlxyXG4gICAgICAgIGNvbnN0IGZmTWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9maXJlZm94XFwvKFxcZCspL2kpO1xyXG4gICAgICAgIHNraXBUaW1lc3RhbXBDaGVjayA9ICEhKGZmTWF0Y2ggJiYgTnVtYmVyKGZmTWF0Y2hbMV0pIDw9IDUzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBbX2dldE5vdywgc2tpcFRpbWVzdGFtcENoZWNrXTtcclxufSkoKTtcclxuLy8gVG8gYXZvaWQgdGhlIG92ZXJoZWFkIG9mIHJlcGVhdGVkbHkgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSwgd2UgY2FjaGVcclxuLy8gYW5kIHVzZSB0aGUgc2FtZSB0aW1lc3RhbXAgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgaW4gdGhlIHNhbWUgdGljay5cclxubGV0IGNhY2hlZE5vdyA9IDA7XHJcbmNvbnN0IHAgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5jb25zdCByZXNldCA9ICgpID0+IHtcclxuICAgIGNhY2hlZE5vdyA9IDA7XHJcbn07XHJcbmNvbnN0IGdldE5vdyA9ICgpID0+IGNhY2hlZE5vdyB8fCAocC50aGVuKHJlc2V0KSwgKGNhY2hlZE5vdyA9IF9nZXROb3coKSkpO1xyXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKGVsLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xyXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcclxuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIHBhdGNoRXZlbnQoZWwsIHJhd05hbWUsIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpbnN0YW5jZSA9IG51bGwpIHtcclxuICAgIC8vIHZlaSA9IHZ1ZSBldmVudCBpbnZva2Vyc1xyXG4gICAgY29uc3QgaW52b2tlcnMgPSBlbC5fdmVpIHx8IChlbC5fdmVpID0ge30pO1xyXG4gICAgY29uc3QgZXhpc3RpbmdJbnZva2VyID0gaW52b2tlcnNbcmF3TmFtZV07XHJcbiAgICBpZiAobmV4dFZhbHVlICYmIGV4aXN0aW5nSW52b2tlcikge1xyXG4gICAgICAgIC8vIHBhdGNoXHJcbiAgICAgICAgZXhpc3RpbmdJbnZva2VyLnZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gcGFyc2VOYW1lKHJhd05hbWUpO1xyXG4gICAgICAgIGlmIChuZXh0VmFsdWUpIHtcclxuICAgICAgICAgICAgLy8gYWRkXHJcbiAgICAgICAgICAgIGNvbnN0IGludm9rZXIgPSAoaW52b2tlcnNbcmF3TmFtZV0gPSBjcmVhdGVJbnZva2VyKG5leHRWYWx1ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgbmFtZSwgaW52b2tlciwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGV4aXN0aW5nSW52b2tlcikge1xyXG4gICAgICAgICAgICAvLyByZW1vdmVcclxuICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbCwgbmFtZSwgZXhpc3RpbmdJbnZva2VyLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgaW52b2tlcnNbcmF3TmFtZV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IG9wdGlvbnNNb2RpZmllclJFID0gLyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO1xyXG5mdW5jdGlvbiBwYXJzZU5hbWUobmFtZSkge1xyXG4gICAgbGV0IG9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9uc01vZGlmaWVyUkUudGVzdChuYW1lKSkge1xyXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcclxuICAgICAgICBsZXQgbTtcclxuICAgICAgICB3aGlsZSAoKG0gPSBuYW1lLm1hdGNoKG9wdGlvbnNNb2RpZmllclJFKSkpIHtcclxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgbmFtZS5sZW5ndGggLSBtWzBdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbbVswXS50b0xvd2VyQ2FzZSgpXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSBuYW1lWzJdID09PSAnOicgPyBuYW1lLnNsaWNlKDMpIDogaHlwaGVuYXRlKG5hbWUuc2xpY2UoMikpO1xyXG4gICAgcmV0dXJuIFtldmVudCwgb3B0aW9uc107XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW52b2tlcihpbml0aWFsVmFsdWUsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBpbnZva2VyID0gKGUpID0+IHtcclxuICAgICAgICAvLyBhc3luYyBlZGdlIGNhc2UgIzY1NjY6IGlubmVyIGNsaWNrIGV2ZW50IHRyaWdnZXJzIHBhdGNoLCBldmVudCBoYW5kbGVyXHJcbiAgICAgICAgLy8gYXR0YWNoZWQgdG8gb3V0ZXIgZWxlbWVudCBkdXJpbmcgcGF0Y2gsIGFuZCB0cmlnZ2VyZWQgYWdhaW4uIFRoaXNcclxuICAgICAgICAvLyBoYXBwZW5zIGJlY2F1c2UgYnJvd3NlcnMgZmlyZSBtaWNyb3Rhc2sgdGlja3MgYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbi5cclxuICAgICAgICAvLyB0aGUgc29sdXRpb24gaXMgc2ltcGxlOiB3ZSBzYXZlIHRoZSB0aW1lc3RhbXAgd2hlbiBhIGhhbmRsZXIgaXMgYXR0YWNoZWQsXHJcbiAgICAgICAgLy8gYW5kIHRoZSBoYW5kbGVyIHdvdWxkIG9ubHkgZmlyZSBpZiB0aGUgZXZlbnQgcGFzc2VkIHRvIGl0IHdhcyBmaXJlZFxyXG4gICAgICAgIC8vIEFGVEVSIGl0IHdhcyBhdHRhY2hlZC5cclxuICAgICAgICBjb25zdCB0aW1lU3RhbXAgPSBlLnRpbWVTdGFtcCB8fCBfZ2V0Tm93KCk7XHJcbiAgICAgICAgaWYgKHNraXBUaW1lc3RhbXBDaGVjayB8fCB0aW1lU3RhbXAgPj0gaW52b2tlci5hdHRhY2hlZCAtIDEpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcocGF0Y2hTdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oZSwgaW52b2tlci52YWx1ZSksIGluc3RhbmNlLCA1IC8qIEVycm9yQ29kZXMuTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi8sIFtlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGludm9rZXIudmFsdWUgPSBpbml0aWFsVmFsdWU7XHJcbiAgICBpbnZva2VyLmF0dGFjaGVkID0gZ2V0Tm93KCk7XHJcbiAgICByZXR1cm4gaW52b2tlcjtcclxufVxyXG5mdW5jdGlvbiBwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCB2YWx1ZSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTdG9wID0gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9yaWdpbmFsU3RvcC5jYWxsKGUpO1xyXG4gICAgICAgICAgICBlLl9zdG9wcGVkID0gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZm4gPT4gKGUpID0+ICFlLl9zdG9wcGVkICYmIGZuICYmIGZuKGUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxuXG5jb25zdCBuYXRpdmVPblJFID0gL15vblthLXpdLztcclxuY29uc3QgcGF0Y2hQcm9wID0gKGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpc1NWRyA9IGZhbHNlLCBwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgIHBhdGNoQ2xhc3MoZWwsIG5leHRWYWx1ZSwgaXNTVkcpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgcGF0Y2hTdHlsZShlbCwgcHJldlZhbHVlLCBuZXh0VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgLy8gaWdub3JlIHYtbW9kZWwgbGlzdGVuZXJzXHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xyXG4gICAgICAgICAgICBwYXRjaEV2ZW50KGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleVswXSA9PT0gJy4nXHJcbiAgICAgICAgPyAoKGtleSA9IGtleS5zbGljZSgxKSksIHRydWUpXHJcbiAgICAgICAgOiBrZXlbMF0gPT09ICdeJ1xyXG4gICAgICAgICAgICA/ICgoa2V5ID0ga2V5LnNsaWNlKDEpKSwgZmFsc2UpXHJcbiAgICAgICAgICAgIDogc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgaXNTVkcpKSB7XHJcbiAgICAgICAgcGF0Y2hET01Qcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgcHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciA8aW5wdXQgdi1tb2RlbCB0eXBlPVwiY2hlY2tib3hcIj4gd2l0aFxyXG4gICAgICAgIC8vIDp0cnVlLXZhbHVlICYgOmZhbHNlLXZhbHVlXHJcbiAgICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgZG9tIHByb3BlcnRpZXMgc2luY2Ugbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZVxyXG4gICAgICAgIC8vIHN0cmluZ2lmaWVkLlxyXG4gICAgICAgIGlmIChrZXkgPT09ICd0cnVlLXZhbHVlJykge1xyXG4gICAgICAgICAgICBlbC5fdHJ1ZVZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdmYWxzZS12YWx1ZScpIHtcclxuICAgICAgICAgICAgZWwuX2ZhbHNlVmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhdGNoQXR0cihlbCwga2V5LCBuZXh0VmFsdWUsIGlzU1ZHKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIHZhbHVlLCBpc1NWRykge1xyXG4gICAgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgLy8gbW9zdCBrZXlzIG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZSBvbiBzdmcgZWxlbWVudHMgdG8gd29ya1xyXG4gICAgICAgIC8vIC4uLmV4Y2VwdCBpbm5lckhUTUwgJiB0ZXh0Q29udGVudFxyXG4gICAgICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gb3IgbmF0aXZlIG9uY2xpY2sgd2l0aCBmdW5jdGlvbiB2YWx1ZXNcclxuICAgICAgICBpZiAoa2V5IGluIGVsICYmIG5hdGl2ZU9uUkUudGVzdChrZXkpICYmIGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyB0aGVzZSBhcmUgZW51bWVyYXRlZCBhdHRycywgaG93ZXZlciB0aGVpciBjb3JyZXNwb25kaW5nIERPTSBwcm9wZXJ0aWVzXHJcbiAgICAvLyBhcmUgYWN0dWFsbHkgYm9vbGVhbnMgLSB0aGlzIGxlYWRzIHRvIHNldHRpbmcgaXQgd2l0aCBhIHN0cmluZyBcImZhbHNlXCJcclxuICAgIC8vIHZhbHVlIGxlYWRpbmcgaXQgdG8gYmUgY29lcmNlZCB0byBgdHJ1ZWAsIHNvIHdlIG5lZWQgdG8gYWx3YXlzIHRyZWF0XHJcbiAgICAvLyB0aGVtIGFzIGF0dHJpYnV0ZXMuXHJcbiAgICAvLyBOb3RlIHRoYXQgYGNvbnRlbnRFZGl0YWJsZWAgZG9lc24ndCBoYXZlIHRoaXMgcHJvYmxlbTogaXRzIERPTVxyXG4gICAgLy8gcHJvcGVydHkgaXMgYWxzbyBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZXMuXHJcbiAgICBpZiAoa2V5ID09PSAnc3BlbGxjaGVjaycgfHwga2V5ID09PSAnZHJhZ2dhYmxlJyB8fCBrZXkgPT09ICd0cmFuc2xhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzE3ODcsICMyODQwIGZvcm0gcHJvcGVydHkgb24gZm9ybSBlbGVtZW50cyBpcyByZWFkb25seSBhbmQgbXVzdCBiZSBzZXQgYXNcclxuICAgIC8vIGF0dHJpYnV0ZS5cclxuICAgIGlmIChrZXkgPT09ICdmb3JtJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMxNTI2IDxpbnB1dCBsaXN0PiBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChrZXkgPT09ICdsaXN0JyAmJiBlbC50YWdOYW1lID09PSAnSU5QVVQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzI3NjYgPHRleHRhcmVhIHR5cGU+IG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGtleSA9PT0gJ3R5cGUnICYmIGVsLnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBuYXRpdmUgb25jbGljayB3aXRoIHN0cmluZyB2YWx1ZSwgbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAobmF0aXZlT25SRS50ZXN0KGtleSkgJiYgaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleSBpbiBlbDtcclxufVxuXG5mdW5jdGlvbiBkZWZpbmVDdXN0b21FbGVtZW50KG9wdGlvbnMsIGh5ZHJhdGUpIHtcclxuICAgIGNvbnN0IENvbXAgPSBkZWZpbmVDb21wb25lbnQob3B0aW9ucyk7XHJcbiAgICBjbGFzcyBWdWVDdXN0b21FbGVtZW50IGV4dGVuZHMgVnVlRWxlbWVudCB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoaW5pdGlhbFByb3BzKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKENvbXAsIGluaXRpYWxQcm9wcywgaHlkcmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgVnVlQ3VzdG9tRWxlbWVudC5kZWYgPSBDb21wO1xyXG4gICAgcmV0dXJuIFZ1ZUN1c3RvbUVsZW1lbnQ7XHJcbn1cclxuY29uc3QgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudCA9ICgob3B0aW9ucykgPT4ge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgaHlkcmF0ZSk7XHJcbn0pO1xyXG5jb25zdCBCYXNlQ2xhc3MgPSAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IEhUTUxFbGVtZW50IDogY2xhc3Mge1xyXG59KTtcclxuY2xhc3MgVnVlRWxlbWVudCBleHRlbmRzIEJhc2VDbGFzcyB7XHJcbiAgICBjb25zdHJ1Y3RvcihfZGVmLCBfcHJvcHMgPSB7fSwgaHlkcmF0ZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fZGVmID0gX2RlZjtcclxuICAgICAgICB0aGlzLl9wcm9wcyA9IF9wcm9wcztcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9udW1iZXJQcm9wcyA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hhZG93Um9vdCAmJiBoeWRyYXRlKSB7XHJcbiAgICAgICAgICAgIGh5ZHJhdGUodGhpcy5fY3JlYXRlVk5vZGUoKSwgdGhpcy5zaGFkb3dSb290KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdGhpcy5zaGFkb3dSb290KSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXN0b20gZWxlbWVudCBoYXMgcHJlLXJlbmRlcmVkIGRlY2xhcmF0aXZlIHNoYWRvdyByb290IGJ1dCBpcyBub3QgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGRlZmluZWQgYXMgaHlkcmF0YWJsZS4gVXNlIFxcYGRlZmluZVNTUkN1c3RvbUVsZW1lbnRcXGAuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVEZWYoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBuZXh0VGljaygoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICByZW5kZXIobnVsbCwgdGhpcy5zaGFkb3dSb290KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiByZXNvbHZlIGlubmVyIGNvbXBvbmVudCBkZWZpbml0aW9uIChoYW5kbGUgcG9zc2libGUgYXN5bmMgY29tcG9uZW50KVxyXG4gICAgICovXHJcbiAgICBfcmVzb2x2ZURlZigpIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gc2V0IGluaXRpYWwgYXR0cnNcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRBdHRyKHRoaXMuYXR0cmlidXRlc1tpXS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2F0Y2ggZnV0dXJlIGF0dHIgY2hhbmdlc1xyXG4gICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldEF0dHIobS5hdHRyaWJ1dGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLm9ic2VydmUodGhpcywgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoZGVmKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMsIHN0eWxlcyB9ID0gZGVmO1xyXG4gICAgICAgICAgICBjb25zdCBoYXNPcHRpb25zID0gIWlzQXJyYXkocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCByYXdLZXlzID0gcHJvcHMgPyAoaGFzT3B0aW9ucyA/IE9iamVjdC5rZXlzKHByb3BzKSA6IHByb3BzKSA6IFtdO1xyXG4gICAgICAgICAgICAvLyBjYXN0IE51bWJlci10eXBlIHByb3BzIHNldCBiZWZvcmUgcmVzb2x2ZVxyXG4gICAgICAgICAgICBsZXQgbnVtYmVyUHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChoYXNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9wcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdCA9IHByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdCA9PT0gTnVtYmVyIHx8IChvcHQgJiYgb3B0LnR5cGUgPT09IE51bWJlcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvcHNba2V5XSA9IHRvTnVtYmVyKHRoaXMuX3Byb3BzW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAobnVtYmVyUHJvcHMgfHwgKG51bWJlclByb3BzID0gT2JqZWN0LmNyZWF0ZShudWxsKSkpW2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9udW1iZXJQcm9wcyA9IG51bWJlclByb3BzO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgcHJvcHMgc2V0IHByZS11cGdyYWRlIG9yIGNvbm5lY3RcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXlbMF0gIT09ICdfJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFByb3Aoa2V5LCB0aGlzW2tleV0sIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBkZWZpbmluZyBnZXR0ZXIvc2V0dGVycyBvbiBwcm90b3R5cGVcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgcmF3S2V5cy5tYXAoY2FtZWxpemUkMSkpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFByb3Aoa2V5LCB2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGFwcGx5IENTU1xyXG4gICAgICAgICAgICB0aGlzLl9hcHBseVN0eWxlcyhzdHlsZXMpO1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsIHJlbmRlclxyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGFzeW5jRGVmID0gdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXI7XHJcbiAgICAgICAgaWYgKGFzeW5jRGVmKSB7XHJcbiAgICAgICAgICAgIGFzeW5jRGVmKCkudGhlbihyZXNvbHZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZGVmKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfc2V0QXR0cihrZXkpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIGlmICh0aGlzLl9udW1iZXJQcm9wcyAmJiB0aGlzLl9udW1iZXJQcm9wc1trZXldKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zZXRQcm9wKGNhbWVsaXplJDEoa2V5KSwgdmFsdWUsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGludGVybmFsXHJcbiAgICAgKi9cclxuICAgIF9nZXRQcm9wKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wc1trZXldO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgX3NldFByb3Aoa2V5LCB2YWwsIHNob3VsZFJlZmxlY3QgPSB0cnVlLCBzaG91bGRVcGRhdGUgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5fcHJvcHNba2V5XSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRlICYmIHRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyByZWZsZWN0XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRSZWZsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoaHlwaGVuYXRlKGtleSksICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoaHlwaGVuYXRlKGtleSksIHZhbCArICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfdXBkYXRlKCkge1xyXG4gICAgICAgIHJlbmRlcih0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgfVxyXG4gICAgX2NyZWF0ZVZOb2RlKCkge1xyXG4gICAgICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUodGhpcy5fZGVmLCBleHRlbmQoe30sIHRoaXMuX3Byb3BzKSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB2bm9kZS5jZSA9IGluc3RhbmNlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0NFID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIEhNUlxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNlUmVsb2FkID0gbmV3U3R5bGVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIHJlc2V0IHN0eWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZXMuZm9yRWFjaChzID0+IHRoaXMuc2hhZG93Um9vdC5yZW1vdmVDaGlsZChzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZXMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVN0eWxlcyhuZXdTdHlsZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGFuIGFzeW5jIGNvbXBvbmVudCwgY2VSZWxvYWQgaXMgY2FsbGVkIGZyb20gdGhlIGlubmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBzbyBubyBuZWVkIHRvIHJlbG9hZCB0aGUgYXN5bmMgd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2RlZi5fX2FzeW5jTG9hZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGludGVyY2VwdCBlbWl0XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lbWl0ID0gKGV2ZW50LCAuLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IGFyZ3NcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRlIG5lYXJlc3QgVnVlIGN1c3RvbSBlbGVtZW50IHBhcmVudCBmb3IgcHJvdmlkZS9pbmplY3RcclxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKChwYXJlbnQgPVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCAmJiAocGFyZW50LnBhcmVudE5vZGUgfHwgcGFyZW50Lmhvc3QpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBWdWVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudCA9IHBhcmVudC5faW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG4gICAgX2FwcGx5U3R5bGVzKHN0eWxlcykge1xyXG4gICAgICAgIGlmIChzdHlsZXMpIHtcclxuICAgICAgICAgICAgc3R5bGVzLmZvckVhY2goY3NzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICAgICAgcy50ZXh0Q29udGVudCA9IGNzcztcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzKTtcclxuICAgICAgICAgICAgICAgIC8vIHJlY29yZCBmb3IgSE1SXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuX3N0eWxlcyB8fCAodGhpcy5fc3R5bGVzID0gW10pKS5wdXNoKHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gdXNlQ3NzTW9kdWxlKG5hbWUgPSAnJHN0eWxlJykge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cclxuICAgIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHVzZUNzc01vZHVsZSBtdXN0IGJlIGNhbGxlZCBpbnNpZGUgc2V0dXAoKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2R1bGVzID0gaW5zdGFuY2UudHlwZS5fX2Nzc01vZHVsZXM7XHJcbiAgICAgICAgaWYgKCFtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBDdXJyZW50IGluc3RhbmNlIGRvZXMgbm90IGhhdmUgQ1NTIG1vZHVsZXMgaW5qZWN0ZWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZCA9IG1vZHVsZXNbbmFtZV07XHJcbiAgICAgICAgaWYgKCFtb2QpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXJyZW50IGluc3RhbmNlIGRvZXMgbm90IGhhdmUgQ1NTIG1vZHVsZSBuYW1lZCBcIiR7bmFtZX1cIi5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1vZDtcclxuICAgIH1cclxufVxuXG4vKipcclxuICogUnVudGltZSBoZWxwZXIgZm9yIFNGQydzIENTUyB2YXJpYWJsZSBpbmplY3Rpb24gZmVhdHVyZS5cclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHVzZUNzc1ZhcnMoZ2V0dGVyKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgdXNlQ3NzVmFycyBpcyBjYWxsZWQgd2l0aG91dCBjdXJyZW50IGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2UuYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2V0VmFycyA9ICgpID0+IHNldFZhcnNPblZOb2RlKGluc3RhbmNlLnN1YlRyZWUsIGdldHRlcihpbnN0YW5jZS5wcm94eSkpO1xyXG4gICAgd2F0Y2hQb3N0RWZmZWN0KHNldFZhcnMpO1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCBvYiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHNldFZhcnMpO1xyXG4gICAgICAgIG9iLm9ic2VydmUoaW5zdGFuY2Uuc3ViVHJlZS5lbC5wYXJlbnROb2RlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcclxuICAgICAgICBvblVubW91bnRlZCgoKSA9PiBvYi5kaXNjb25uZWN0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gc2V0VmFyc09uVk5vZGUodm5vZGUsIHZhcnMpIHtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgIGNvbnN0IHN1c3BlbnNlID0gdm5vZGUuc3VzcGVuc2U7XHJcbiAgICAgICAgdm5vZGUgPSBzdXNwZW5zZS5hY3RpdmVCcmFuY2g7XHJcbiAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiYgIXN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYXJzT25WTm9kZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIHZhcnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBkcmlsbCBkb3duIEhPQ3MgdW50aWwgaXQncyBhIG5vbi1jb21wb25lbnQgdm5vZGVcclxuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVudC5zdWJUcmVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmIHZub2RlLmVsKSB7XHJcbiAgICAgICAgc2V0VmFyc09uTm9kZSh2bm9kZS5lbCwgdmFycyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBGcmFnbWVudCkge1xyXG4gICAgICAgIHZub2RlLmNoaWxkcmVuLmZvckVhY2goYyA9PiBzZXRWYXJzT25WTm9kZShjLCB2YXJzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICBsZXQgeyBlbCwgYW5jaG9yIH0gPSB2bm9kZTtcclxuICAgICAgICB3aGlsZSAoZWwpIHtcclxuICAgICAgICAgICAgc2V0VmFyc09uTm9kZShlbCwgdmFycyk7XHJcbiAgICAgICAgICAgIGlmIChlbCA9PT0gYW5jaG9yKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsID0gZWwubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldFZhcnNPbk5vZGUoZWwsIHZhcnMpIHtcclxuICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGU7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFycykge1xyXG4gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShgLS0ke2tleX1gLCB2YXJzW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xyXG5jb25zdCBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcclxuLy8gRE9NIFRyYW5zaXRpb24gaXMgYSBoaWdoZXItb3JkZXItY29tcG9uZW50IGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS1hZ25vc3RpY1xyXG4vLyBiYXNlIFRyYW5zaXRpb24gY29tcG9uZW50LCB3aXRoIERPTS1zcGVjaWZpYyBsb2dpYy5cclxuY29uc3QgVHJhbnNpdGlvbiA9IChwcm9wcywgeyBzbG90cyB9KSA9PiBoKEJhc2VUcmFuc2l0aW9uLCByZXNvbHZlVHJhbnNpdGlvblByb3BzKHByb3BzKSwgc2xvdHMpO1xyXG5UcmFuc2l0aW9uLmRpc3BsYXlOYW1lID0gJ1RyYW5zaXRpb24nO1xyXG5jb25zdCBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzID0ge1xyXG4gICAgbmFtZTogU3RyaW5nLFxyXG4gICAgdHlwZTogU3RyaW5nLFxyXG4gICAgY3NzOiB7XHJcbiAgICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZHVyYXRpb246IFtTdHJpbmcsIE51bWJlciwgT2JqZWN0XSxcclxuICAgIGVudGVyRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhckZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhclRvQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZVRvQ2xhc3M6IFN0cmluZ1xyXG59O1xyXG5jb25zdCBUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzID0gKFRyYW5zaXRpb24ucHJvcHMgPVxyXG4gICAgLyojX19QVVJFX18qLyBleHRlbmQoe30sIEJhc2VUcmFuc2l0aW9uLnByb3BzLCBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzKSk7XHJcbi8qKlxyXG4gKiAjMzIyNyBJbmNvbWluZyBob29rcyBtYXkgYmUgbWVyZ2VkIGludG8gYXJyYXlzIHdoZW4gd3JhcHBpbmcgVHJhbnNpdGlvblxyXG4gKiB3aXRoIGN1c3RvbSBIT0NzLlxyXG4gKi9cclxuY29uc3QgY2FsbEhvb2sgPSAoaG9vaywgYXJncyA9IFtdKSA9PiB7XHJcbiAgICBpZiAoaXNBcnJheShob29rKSkge1xyXG4gICAgICAgIGhvb2suZm9yRWFjaChoID0+IGgoLi4uYXJncykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaG9vaykge1xyXG4gICAgICAgIGhvb2soLi4uYXJncyk7XHJcbiAgICB9XHJcbn07XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIGhvb2sgZXhwZWN0cyBhIGNhbGxiYWNrICgybmQgYXJnKSwgd2hpY2ggbWVhbnMgdGhlIHVzZXJcclxuICogaW50ZW5kcyB0byBleHBsaWNpdGx5IGNvbnRyb2wgdGhlIGVuZCBvZiB0aGUgdHJhbnNpdGlvbi5cclxuICovXHJcbmNvbnN0IGhhc0V4cGxpY2l0Q2FsbGJhY2sgPSAoaG9vaykgPT4ge1xyXG4gICAgcmV0dXJuIGhvb2tcclxuICAgICAgICA/IGlzQXJyYXkoaG9vaylcclxuICAgICAgICAgICAgPyBob29rLnNvbWUoaCA9PiBoLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIDogaG9vay5sZW5ndGggPiAxXHJcbiAgICAgICAgOiBmYWxzZTtcclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcykge1xyXG4gICAgY29uc3QgYmFzZVByb3BzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdQcm9wcykge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzKSkge1xyXG4gICAgICAgICAgICBiYXNlUHJvcHNba2V5XSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJhd1Byb3BzLmNzcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gYmFzZVByb3BzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBuYW1lID0gJ3YnLCB0eXBlLCBkdXJhdGlvbiwgZW50ZXJGcm9tQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci1mcm9tYCwgZW50ZXJBY3RpdmVDbGFzcyA9IGAke25hbWV9LWVudGVyLWFjdGl2ZWAsIGVudGVyVG9DbGFzcyA9IGAke25hbWV9LWVudGVyLXRvYCwgYXBwZWFyRnJvbUNsYXNzID0gZW50ZXJGcm9tQ2xhc3MsIGFwcGVhckFjdGl2ZUNsYXNzID0gZW50ZXJBY3RpdmVDbGFzcywgYXBwZWFyVG9DbGFzcyA9IGVudGVyVG9DbGFzcywgbGVhdmVGcm9tQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS1mcm9tYCwgbGVhdmVBY3RpdmVDbGFzcyA9IGAke25hbWV9LWxlYXZlLWFjdGl2ZWAsIGxlYXZlVG9DbGFzcyA9IGAke25hbWV9LWxlYXZlLXRvYCB9ID0gcmF3UHJvcHM7XHJcbiAgICBjb25zdCBkdXJhdGlvbnMgPSBub3JtYWxpemVEdXJhdGlvbihkdXJhdGlvbik7XHJcbiAgICBjb25zdCBlbnRlckR1cmF0aW9uID0gZHVyYXRpb25zICYmIGR1cmF0aW9uc1swXTtcclxuICAgIGNvbnN0IGxlYXZlRHVyYXRpb24gPSBkdXJhdGlvbnMgJiYgZHVyYXRpb25zWzFdO1xyXG4gICAgY29uc3QgeyBvbkJlZm9yZUVudGVyLCBvbkVudGVyLCBvbkVudGVyQ2FuY2VsbGVkLCBvbkxlYXZlLCBvbkxlYXZlQ2FuY2VsbGVkLCBvbkJlZm9yZUFwcGVhciA9IG9uQmVmb3JlRW50ZXIsIG9uQXBwZWFyID0gb25FbnRlciwgb25BcHBlYXJDYW5jZWxsZWQgPSBvbkVudGVyQ2FuY2VsbGVkIH0gPSBiYXNlUHJvcHM7XHJcbiAgICBjb25zdCBmaW5pc2hFbnRlciA9IChlbCwgaXNBcHBlYXIsIGRvbmUpID0+IHtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyVG9DbGFzcyA6IGVudGVyVG9DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhckFjdGl2ZUNsYXNzIDogZW50ZXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgZG9uZSAmJiBkb25lKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZmluaXNoTGVhdmUgPSAoZWwsIGRvbmUpID0+IHtcclxuICAgICAgICBlbC5faXNMZWF2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUZyb21DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgZG9uZSAmJiBkb25lKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbWFrZUVudGVySG9vayA9IChpc0FwcGVhcikgPT4ge1xyXG4gICAgICAgIHJldHVybiAoZWwsIGRvbmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaG9vayA9IGlzQXBwZWFyID8gb25BcHBlYXIgOiBvbkVudGVyO1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoRW50ZXIoZWwsIGlzQXBwZWFyLCBkb25lKTtcclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsLCByZXNvbHZlXSk7XHJcbiAgICAgICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyRnJvbUNsYXNzIDogZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKGhvb2spKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBlbnRlckR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZXh0ZW5kKGJhc2VQcm9wcywge1xyXG4gICAgICAgIG9uQmVmb3JlRW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVFbnRlciwgW2VsXSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGVudGVyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25CZWZvcmVBcHBlYXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVBcHBlYXIsIFtlbF0pO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFwcGVhckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYXBwZWFyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlcjogbWFrZUVudGVySG9vayhmYWxzZSksXHJcbiAgICAgICAgb25BcHBlYXI6IG1ha2VFbnRlckhvb2sodHJ1ZSksXHJcbiAgICAgICAgb25MZWF2ZShlbCwgZG9uZSkge1xyXG4gICAgICAgICAgICBlbC5faXNMZWF2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IGZpbmlzaExlYXZlKGVsLCBkb25lKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIC8vIGZvcmNlIHJlZmxvdyBzbyAqLWxlYXZlLWZyb20gY2xhc3NlcyBpbW1lZGlhdGVseSB0YWtlIGVmZmVjdCAoIzI1OTMpXHJcbiAgICAgICAgICAgIGZvcmNlUmVmbG93KCk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVsLl9pc0xlYXZpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYW5jZWxsZWRcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcclxuICAgICAgICAgICAgICAgIGlmICghaGFzRXhwbGljaXRDYWxsYmFjayhvbkxlYXZlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgbGVhdmVEdXJhdGlvbiwgcmVzb2x2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlLCBbZWwsIHJlc29sdmVdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uRW50ZXJDYW5jZWxsZWQoZWwpIHtcclxuICAgICAgICAgICAgZmluaXNoRW50ZXIoZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25FbnRlckNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFwcGVhckNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hFbnRlcihlbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQXBwZWFyQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uTGVhdmVDYW5jZWxsZWQoZWwpIHtcclxuICAgICAgICAgICAgZmluaXNoTGVhdmUoZWwpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXJhdGlvbikge1xyXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBbTnVtYmVyT2YoZHVyYXRpb24uZW50ZXIpLCBOdW1iZXJPZihkdXJhdGlvbi5sZWF2ZSldO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbiA9IE51bWJlck9mKGR1cmF0aW9uKTtcclxuICAgICAgICByZXR1cm4gW24sIG5dO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIE51bWJlck9mKHZhbCkge1xyXG4gICAgY29uc3QgcmVzID0gdG9OdW1iZXIodmFsKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpXHJcbiAgICAgICAgdmFsaWRhdGVEdXJhdGlvbihyZXMpO1xyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiB2YWxpZGF0ZUR1cmF0aW9uKHZhbCkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgd2FybihgPHRyYW5zaXRpb24+IGV4cGxpY2l0IGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIGAgK1xyXG4gICAgICAgICAgICBgZ290ICR7SlNPTi5zdHJpbmdpZnkodmFsKX0uYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc05hTih2YWwpKSB7XHJcbiAgICAgICAgd2FybihgPHRyYW5zaXRpb24+IGV4cGxpY2l0IGR1cmF0aW9uIGlzIE5hTiAtIGAgK1xyXG4gICAgICAgICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0LicpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgY2xzKSB7XHJcbiAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBlbC5jbGFzc0xpc3QuYWRkKGMpKTtcclxuICAgIChlbC5fdnRjIHx8XHJcbiAgICAgICAgKGVsLl92dGMgPSBuZXcgU2V0KCkpKS5hZGQoY2xzKTtcclxufVxyXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGNscykge1xyXG4gICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgZWwuY2xhc3NMaXN0LnJlbW92ZShjKSk7XHJcbiAgICBjb25zdCB7IF92dGMgfSA9IGVsO1xyXG4gICAgaWYgKF92dGMpIHtcclxuICAgICAgICBfdnRjLmRlbGV0ZShjbHMpO1xyXG4gICAgICAgIGlmICghX3Z0Yy5zaXplKSB7XHJcbiAgICAgICAgICAgIGVsLl92dGMgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG5leHRGcmFtZShjYikge1xyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpO1xyXG4gICAgfSk7XHJcbn1cclxubGV0IGVuZElkID0gMDtcclxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzKGVsLCBleHBlY3RlZFR5cGUsIGV4cGxpY2l0VGltZW91dCwgcmVzb2x2ZSkge1xyXG4gICAgY29uc3QgaWQgPSAoZWwuX2VuZElkID0gKytlbmRJZCk7XHJcbiAgICBjb25zdCByZXNvbHZlSWZOb3RTdGFsZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoaWQgPT09IGVsLl9lbmRJZCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmIChleHBsaWNpdFRpbWVvdXQpIHtcclxuICAgICAgICByZXR1cm4gc2V0VGltZW91dChyZXNvbHZlSWZOb3RTdGFsZSwgZXhwbGljaXRUaW1lb3V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdHlwZSwgdGltZW91dCwgcHJvcENvdW50IH0gPSBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKTtcclxuICAgIGlmICghdHlwZSkge1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbmRFdmVudCA9IHR5cGUgKyAnZW5kJztcclxuICAgIGxldCBlbmRlZCA9IDA7XHJcbiAgICBjb25zdCBlbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihlbmRFdmVudCwgb25FbmQpO1xyXG4gICAgICAgIHJlc29sdmVJZk5vdFN0YWxlKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb25FbmQgPSAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gZWwgJiYgKytlbmRlZCA+PSBwcm9wQ291bnQpIHtcclxuICAgICAgICAgICAgZW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xyXG4gICAgICAgICAgICBlbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9LCB0aW1lb3V0ICsgMSk7XHJcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSkge1xyXG4gICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xyXG4gICAgLy8gSlNET00gbWF5IHJldHVybiB1bmRlZmluZWQgZm9yIHRyYW5zaXRpb24gcHJvcGVydGllc1xyXG4gICAgY29uc3QgZ2V0U3R5bGVQcm9wZXJ0aWVzID0gKGtleSkgPT4gKHN0eWxlc1trZXldIHx8ICcnKS5zcGxpdCgnLCAnKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25EZWxheXMgPSBnZXRTdHlsZVByb3BlcnRpZXMoVFJBTlNJVElPTiArICdEZWxheScpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhUUkFOU0lUSU9OICsgJ0R1cmF0aW9uJyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uVGltZW91dCA9IGdldFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25EZWxheXMgPSBnZXRTdHlsZVByb3BlcnRpZXMoQU5JTUFUSU9OICsgJ0RlbGF5Jyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbnMgPSBnZXRTdHlsZVByb3BlcnRpZXMoQU5JTUFUSU9OICsgJ0R1cmF0aW9uJyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRpb25EZWxheXMsIGFuaW1hdGlvbkR1cmF0aW9ucyk7XHJcbiAgICBsZXQgdHlwZSA9IG51bGw7XHJcbiAgICBsZXQgdGltZW91dCA9IDA7XHJcbiAgICBsZXQgcHJvcENvdW50ID0gMDtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgdHlwZSA9IFRSQU5TSVRJT047XHJcbiAgICAgICAgICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91dDtcclxuICAgICAgICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcclxuICAgICAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgdHlwZSA9IEFOSU1BVElPTjtcclxuICAgICAgICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XHJcbiAgICAgICAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGltZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0LCBhbmltYXRpb25UaW1lb3V0KTtcclxuICAgICAgICB0eXBlID1cclxuICAgICAgICAgICAgdGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgID8gdHJhbnNpdGlvblRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XHJcbiAgICAgICAgICAgICAgICAgICAgPyBUUkFOU0lUSU9OXHJcbiAgICAgICAgICAgICAgICAgICAgOiBBTklNQVRJT05cclxuICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICBwcm9wQ291bnQgPSB0eXBlXHJcbiAgICAgICAgICAgID8gdHlwZSA9PT0gVFJBTlNJVElPTlxyXG4gICAgICAgICAgICAgICAgPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybSA9IHR5cGUgPT09IFRSQU5TSVRJT04gJiZcclxuICAgICAgICAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLnRlc3Qoc3R5bGVzW1RSQU5TSVRJT04gKyAnUHJvcGVydHknXSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdGltZW91dCxcclxuICAgICAgICBwcm9wQ291bnQsXHJcbiAgICAgICAgaGFzVHJhbnNmb3JtXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGdldFRpbWVvdXQoZGVsYXlzLCBkdXJhdGlvbnMpIHtcclxuICAgIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kdXJhdGlvbnMubWFwKChkLCBpKSA9PiB0b01zKGQpICsgdG9NcyhkZWxheXNbaV0pKSk7XHJcbn1cclxuLy8gT2xkIHZlcnNpb25zIG9mIENocm9taXVtIChiZWxvdyA2MS4wLjMxNjMuMTAwKSBmb3JtYXRzIGZsb2F0aW5nIHBvaW50ZXJcclxuLy8gbnVtYmVycyBpbiBhIGxvY2FsZS1kZXBlbmRlbnQgd2F5LCB1c2luZyBhIGNvbW1hIGluc3RlYWQgb2YgYSBkb3QuXHJcbi8vIElmIGNvbW1hIGlzIG5vdCByZXBsYWNlZCB3aXRoIGEgZG90LCB0aGUgaW5wdXQgd2lsbCBiZSByb3VuZGVkIGRvd25cclxuLy8gKGkuZS4gYWN0aW5nIGFzIGEgZmxvb3IgZnVuY3Rpb24pIGNhdXNpbmcgdW5leHBlY3RlZCBiZWhhdmlvcnNcclxuZnVuY3Rpb24gdG9NcyhzKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHMuc2xpY2UoMCwgLTEpLnJlcGxhY2UoJywnLCAnLicpKSAqIDEwMDA7XHJcbn1cclxuLy8gc3luY2hyb25vdXNseSBmb3JjZSBsYXlvdXQgdG8gcHV0IGVsZW1lbnRzIGludG8gYSBjZXJ0YWluIHN0YXRlXHJcbmZ1bmN0aW9uIGZvcmNlUmVmbG93KCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xyXG59XG5cbmNvbnN0IHBvc2l0aW9uTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgbmV3UG9zaXRpb25NYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBUcmFuc2l0aW9uR3JvdXBJbXBsID0ge1xyXG4gICAgbmFtZTogJ1RyYW5zaXRpb25Hcm91cCcsXHJcbiAgICBwcm9wczogLyojX19QVVJFX18qLyBleHRlbmQoe30sIFRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMsIHtcclxuICAgICAgICB0YWc6IFN0cmluZyxcclxuICAgICAgICBtb3ZlQ2xhc3M6IFN0cmluZ1xyXG4gICAgfSksXHJcbiAgICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IHVzZVRyYW5zaXRpb25TdGF0ZSgpO1xyXG4gICAgICAgIGxldCBwcmV2Q2hpbGRyZW47XHJcbiAgICAgICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgICAgIG9uVXBkYXRlZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGNoaWxkcmVuIGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QgYWZ0ZXIgaW5pdGlhbCByZW5kZXJcclxuICAgICAgICAgICAgaWYgKCFwcmV2Q2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbW92ZUNsYXNzID0gcHJvcHMubW92ZUNsYXNzIHx8IGAke3Byb3BzLm5hbWUgfHwgJ3YnfS1tb3ZlYDtcclxuICAgICAgICAgICAgaWYgKCFoYXNDU1NUcmFuc2Zvcm0ocHJldkNoaWxkcmVuWzBdLmVsLCBpbnN0YW5jZS52bm9kZS5lbCwgbW92ZUNsYXNzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xyXG4gICAgICAgICAgICAvLyBpbiBlYWNoIGl0ZXJhdGlvbiAtIHdoaWNoIGhlbHBzIHByZXZlbnQgbGF5b3V0IHRocmFzaGluZy5cclxuICAgICAgICAgICAgcHJldkNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkQ2hpbGRyZW4gPSBwcmV2Q2hpbGRyZW4uZmlsdGVyKGFwcGx5VHJhbnNsYXRpb24pO1xyXG4gICAgICAgICAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cclxuICAgICAgICAgICAgZm9yY2VSZWZsb3coKTtcclxuICAgICAgICAgICAgbW92ZWRDaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSBjLmVsO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgICAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcclxuICAgICAgICAgICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IHN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSAoZWwuX21vdmVDYiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNiKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmF3UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNzc1RyYW5zaXRpb25Qcm9wcyA9IHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocmF3UHJvcHMpO1xyXG4gICAgICAgICAgICBsZXQgdGFnID0gcmF3UHJvcHMudGFnIHx8IEZyYWdtZW50O1xyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ID8gZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKHNsb3RzLmRlZmF1bHQoKSkgOiBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhjaGlsZCwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhjaGlsZCwgY3NzVHJhbnNpdGlvblByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYDxUcmFuc2l0aW9uR3JvdXA+IGNoaWxkcmVuIG11c3QgYmUga2V5ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByZXZDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IHByZXZDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoY2hpbGQsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MoY2hpbGQsIGNzc1RyYW5zaXRpb25Qcm9wcywgc3RhdGUsIGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25NYXAuc2V0KGNoaWxkLCBjaGlsZC5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHRhZywgbnVsbCwgY2hpbGRyZW4pO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IFRyYW5zaXRpb25Hcm91cCA9IFRyYW5zaXRpb25Hcm91cEltcGw7XHJcbmZ1bmN0aW9uIGNhbGxQZW5kaW5nQ2JzKGMpIHtcclxuICAgIGNvbnN0IGVsID0gYy5lbDtcclxuICAgIGlmIChlbC5fbW92ZUNiKSB7XHJcbiAgICAgICAgZWwuX21vdmVDYigpO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLl9lbnRlckNiKSB7XHJcbiAgICAgICAgZWwuX2VudGVyQ2IoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiByZWNvcmRQb3NpdGlvbihjKSB7XHJcbiAgICBuZXdQb3NpdGlvbk1hcC5zZXQoYywgYy5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XHJcbn1cclxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbihjKSB7XHJcbiAgICBjb25zdCBvbGRQb3MgPSBwb3NpdGlvbk1hcC5nZXQoYyk7XHJcbiAgICBjb25zdCBuZXdQb3MgPSBuZXdQb3NpdGlvbk1hcC5nZXQoYyk7XHJcbiAgICBjb25zdCBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XHJcbiAgICBjb25zdCBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xyXG4gICAgaWYgKGR4IHx8IGR5KSB7XHJcbiAgICAgICAgY29uc3QgcyA9IGMuZWwuc3R5bGU7XHJcbiAgICAgICAgcy50cmFuc2Zvcm0gPSBzLndlYmtpdFRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtkeH1weCwke2R5fXB4KWA7XHJcbiAgICAgICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xyXG4gICAgICAgIHJldHVybiBjO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGhhc0NTU1RyYW5zZm9ybShlbCwgcm9vdCwgbW92ZUNsYXNzKSB7XHJcbiAgICAvLyBEZXRlY3Qgd2hldGhlciBhbiBlbGVtZW50IHdpdGggdGhlIG1vdmUgY2xhc3MgYXBwbGllZCBoYXNcclxuICAgIC8vIENTUyB0cmFuc2l0aW9ucy4gU2luY2UgdGhlIGVsZW1lbnQgbWF5IGJlIGluc2lkZSBhbiBlbnRlcmluZ1xyXG4gICAgLy8gdHJhbnNpdGlvbiBhdCB0aGlzIHZlcnkgbW9tZW50LCB3ZSBtYWtlIGEgY2xvbmUgb2YgaXQgYW5kIHJlbW92ZVxyXG4gICAgLy8gYWxsIG90aGVyIHRyYW5zaXRpb24gY2xhc3NlcyBhcHBsaWVkIHRvIGVuc3VyZSBvbmx5IHRoZSBtb3ZlIGNsYXNzXHJcbiAgICAvLyBpcyBhcHBsaWVkLlxyXG4gICAgY29uc3QgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcclxuICAgIGlmIChlbC5fdnRjKSB7XHJcbiAgICAgICAgZWwuX3Z0Yy5mb3JFYWNoKGNscyA9PiB7XHJcbiAgICAgICAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGNsb25lLmNsYXNzTGlzdC5yZW1vdmUoYykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbW92ZUNsYXNzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgY2xvbmUuY2xhc3NMaXN0LmFkZChjKSk7XHJcbiAgICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gKHJvb3Qubm9kZVR5cGUgPT09IDEgPyByb290IDogcm9vdC5wYXJlbnROb2RlKTtcclxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjbG9uZSk7XHJcbiAgICBjb25zdCB7IGhhc1RyYW5zZm9ybSB9ID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xyXG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNsb25lKTtcclxuICAgIHJldHVybiBoYXNUcmFuc2Zvcm07XHJcbn1cblxuY29uc3QgZ2V0TW9kZWxBc3NpZ25lciA9ICh2bm9kZSkgPT4ge1xyXG4gICAgY29uc3QgZm4gPSB2bm9kZS5wcm9wc1snb25VcGRhdGU6bW9kZWxWYWx1ZSddIHx8XHJcbiAgICAgICAgKGZhbHNlICk7XHJcbiAgICByZXR1cm4gaXNBcnJheShmbikgPyB2YWx1ZSA9PiBpbnZva2VBcnJheUZucyhmbiwgdmFsdWUpIDogZm47XHJcbn07XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydChlKSB7XHJcbiAgICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmNvbXBvc2luZykge1xyXG4gICAgICAgIHRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xyXG4gICAgfVxyXG59XHJcbi8vIFdlIGFyZSBleHBvcnRpbmcgdGhlIHYtbW9kZWwgcnVudGltZSBkaXJlY3RseSBhcyB2bm9kZSBob29rcyBzbyB0aGF0IGl0IGNhblxyXG4vLyBiZSB0cmVlLXNoYWtlbiBpbiBjYXNlIHYtbW9kZWwgaXMgbmV2ZXIgdXNlZC5cclxuY29uc3Qgdk1vZGVsVGV4dCA9IHtcclxuICAgIGNyZWF0ZWQoZWwsIHsgbW9kaWZpZXJzOiB7IGxhenksIHRyaW0sIG51bWJlciB9IH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGNhc3RUb051bWJlciA9IG51bWJlciB8fCAodm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSA9PT0gJ251bWJlcicpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIGxhenkgPyAnY2hhbmdlJyA6ICdpbnB1dCcsIGUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZS50YXJnZXQuY29tcG9zaW5nKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBsZXQgZG9tVmFsdWUgPSBlbC52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgICAgIGRvbVZhbHVlID0gZG9tVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjYXN0VG9OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIGRvbVZhbHVlID0gdG9OdW1iZXIoZG9tVmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZG9tVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0cmltKSB7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC52YWx1ZSA9IGVsLnZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbGF6eSkge1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY29tcG9zaXRpb25zdGFydCcsIG9uQ29tcG9zaXRpb25TdGFydCk7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xyXG4gICAgICAgICAgICAvLyBTYWZhcmkgPCAxMC4yICYgVUlXZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVuZCB3aGVuXHJcbiAgICAgICAgICAgIC8vIHN3aXRjaGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21wb3NpdGlvbiBjaG9pY2VcclxuICAgICAgICAgICAgLy8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9TIENocm9tZVxyXG4gICAgICAgICAgICAvLyBmaXJlcyBcImNoYW5nZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwiIG9uIGF1dG9jb21wbGV0ZS5cclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBzZXQgdmFsdWUgb24gbW91bnRlZCBzbyBpdCdzIGFmdGVyIG1pbi9tYXggZm9yIHR5cGU9XCJyYW5nZVwiXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBlbC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgbW9kaWZpZXJzOiB7IGxhenksIHRyaW0sIG51bWJlciB9IH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIC8vIGF2b2lkIGNsZWFyaW5nIHVucmVzb2x2ZWQgdGV4dC4gIzIzMDJcclxuICAgICAgICBpZiAoZWwuY29tcG9zaW5nKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsICYmIGVsLnR5cGUgIT09ICdyYW5nZScpIHtcclxuICAgICAgICAgICAgaWYgKGxhenkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHJpbSAmJiBlbC52YWx1ZS50cmltKCkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChudW1iZXIgfHwgZWwudHlwZSA9PT0gJ251bWJlcicpICYmIHRvTnVtYmVyKGVsLnZhbHVlKSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIGlmIChlbC52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHZNb2RlbENoZWNrYm94ID0ge1xyXG4gICAgLy8gIzQwOTYgYXJyYXkgY2hlY2tib3hlcyBuZWVkIHRvIGJlIGRlZXAgdHJhdmVyc2VkXHJcbiAgICBkZWVwOiB0cnVlLFxyXG4gICAgY3JlYXRlZChlbCwgXywgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IGVsLl9tb2RlbFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSBnZXRWYWx1ZShlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbC5jaGVja2VkO1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ24gPSBlbC5fYXNzaWduO1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShtb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBsb29zZUluZGV4T2YobW9kZWxWYWx1ZSwgZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gaW5kZXggIT09IC0xO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQgJiYgIWZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKG1vZGVsVmFsdWUuY29uY2F0KGVsZW1lbnRWYWx1ZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWNoZWNrZWQgJiYgZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5tb2RlbFZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbihmaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTZXQobW9kZWxWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lZCA9IG5ldyBTZXQobW9kZWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5hZGQoZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5kZWxldGUoZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFzc2lnbihjbG9uZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXNzaWduKGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIC8vIHNldCBpbml0aWFsIGNoZWNrZWQgb24gbW91bnQgdG8gd2FpdCBmb3IgdHJ1ZS12YWx1ZS9mYWxzZS12YWx1ZVxyXG4gICAgbW91bnRlZDogc2V0Q2hlY2tlZCxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgc2V0Q2hlY2tlZChlbCwgYmluZGluZywgdm5vZGUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXRDaGVja2VkKGVsLCB7IHZhbHVlLCBvbGRWYWx1ZSB9LCB2bm9kZSkge1xyXG4gICAgZWwuX21vZGVsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IHZhbHVlLmhhcyh2bm9kZS5wcm9wcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgZ2V0Q2hlY2tib3hWYWx1ZShlbCwgdHJ1ZSkpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IHZNb2RlbFJhZGlvID0ge1xyXG4gICAgY3JlYXRlZChlbCwgeyB2YWx1ZSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZ2V0VmFsdWUoZWwpKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHZNb2RlbFNlbGVjdCA9IHtcclxuICAgIC8vIDxzZWxlY3QgbXVsdGlwbGU+IHZhbHVlIG5lZWQgdG8gYmUgZGVlcCB0cmF2ZXJzZWRcclxuICAgIGRlZXA6IHRydWUsXHJcbiAgICBjcmVhdGVkKGVsLCB7IHZhbHVlLCBtb2RpZmllcnM6IHsgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBjb25zdCBpc1NldE1vZGVsID0gaXNTZXQodmFsdWUpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxyXG4gICAgICAgICAgICAgICAgLmNhbGwoZWwub3B0aW9ucywgKG8pID0+IG8uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgICAgICAubWFwKChvKSA9PiBudW1iZXIgPyB0b051bWJlcihnZXRWYWx1ZShvKSkgOiBnZXRWYWx1ZShvKSk7XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZWwubXVsdGlwbGVcclxuICAgICAgICAgICAgICAgID8gaXNTZXRNb2RlbFxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IFNldChzZWxlY3RlZFZhbClcclxuICAgICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkVmFsXHJcbiAgICAgICAgICAgICAgICA6IHNlbGVjdGVkVmFsWzBdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IHZhbHVlIGluIG1vdW50ZWQgJiB1cGRhdGVkIGJlY2F1c2UgPHNlbGVjdD4gcmVsaWVzIG9uIGl0cyBjaGlsZHJlblxyXG4gICAgLy8gPG9wdGlvbj5zLlxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWQoZWwsIHZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIF9iaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXRTZWxlY3RlZChlbCwgdmFsdWUpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBlbC5tdWx0aXBsZTtcclxuICAgIGlmIChpc011bHRpcGxlICYmICFpc0FycmF5KHZhbHVlKSAmJiAhaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm4oYDxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD4gZXhwZWN0cyBhbiBBcnJheSBvciBTZXQgdmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBgICtcclxuICAgICAgICAgICAgICAgIGBidXQgZ290ICR7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSl9LmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gZ2V0VmFsdWUob3B0aW9uKTtcclxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgb3B0aW9uVmFsdWUpID4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB2YWx1ZS5oYXMob3B0aW9uVmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKVxyXG4gICAgICAgICAgICAgICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFpc011bHRpcGxlICYmIGVsLnNlbGVjdGVkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgfVxyXG59XHJcbi8vIHJldHJpZXZlIHJhdyB2YWx1ZSBzZXQgdmlhIDp2YWx1ZSBiaW5kaW5nc1xyXG5mdW5jdGlvbiBnZXRWYWx1ZShlbCkge1xyXG4gICAgcmV0dXJuICdfdmFsdWUnIGluIGVsID8gZWwuX3ZhbHVlIDogZWwudmFsdWU7XHJcbn1cclxuLy8gcmV0cmlldmUgcmF3IHZhbHVlIGZvciB0cnVlLXZhbHVlIGFuZCBmYWxzZS12YWx1ZSBzZXQgdmlhIDp0cnVlLXZhbHVlIG9yIDpmYWxzZS12YWx1ZSBiaW5kaW5nc1xyXG5mdW5jdGlvbiBnZXRDaGVja2JveFZhbHVlKGVsLCBjaGVja2VkKSB7XHJcbiAgICBjb25zdCBrZXkgPSBjaGVja2VkID8gJ190cnVlVmFsdWUnIDogJ19mYWxzZVZhbHVlJztcclxuICAgIHJldHVybiBrZXkgaW4gZWwgPyBlbFtrZXldIDogY2hlY2tlZDtcclxufVxyXG5jb25zdCB2TW9kZWxEeW5hbWljID0ge1xyXG4gICAgY3JlYXRlZChlbCwgYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgbnVsbCwgJ2NyZWF0ZWQnKTtcclxuICAgIH0sXHJcbiAgICBtb3VudGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCAnbW91bnRlZCcpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsICdiZWZvcmVVcGRhdGUnKTtcclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgJ3VwZGF0ZWQnKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZUR5bmFtaWNNb2RlbCh0YWdOYW1lLCB0eXBlKSB7XHJcbiAgICBzd2l0Y2ggKHRhZ05hbWUpIHtcclxuICAgICAgICBjYXNlICdTRUxFQ1QnOlxyXG4gICAgICAgICAgICByZXR1cm4gdk1vZGVsU2VsZWN0O1xyXG4gICAgICAgIGNhc2UgJ1RFWFRBUkVBJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFRleHQ7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbENoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmFkaW8nOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2TW9kZWxSYWRpbztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFRleHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCBob29rKSB7XHJcbiAgICBjb25zdCBtb2RlbFRvVXNlID0gcmVzb2x2ZUR5bmFtaWNNb2RlbChlbC50YWdOYW1lLCB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlKTtcclxuICAgIGNvbnN0IGZuID0gbW9kZWxUb1VzZVtob29rXTtcclxuICAgIGZuICYmIGZuKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKTtcclxufVxyXG4vLyBTU1Igdm5vZGUgdHJhbnNmb3Jtcywgb25seSB1c2VkIHdoZW4gdXNlciBpbmNsdWRlcyBjbGllbnQtb3JpZW50ZWQgcmVuZGVyXHJcbi8vIGZ1bmN0aW9uIGluIFNTUlxyXG5mdW5jdGlvbiBpbml0Vk1vZGVsRm9yU1NSKCkge1xyXG4gICAgdk1vZGVsVGV4dC5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0pID0+ICh7IHZhbHVlIH0pO1xyXG4gICAgdk1vZGVsUmFkaW8uZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9LCB2bm9kZSkgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiBsb29zZUVxdWFsKHZub2RlLnByb3BzLnZhbHVlLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2TW9kZWxDaGVja2JveC5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0sIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiBsb29zZUluZGV4T2YodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiB2YWx1ZS5oYXModm5vZGUucHJvcHMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2TW9kZWxEeW5hbWljLmdldFNTUlByb3BzID0gKGJpbmRpbmcsIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2bm9kZS50eXBlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZGVsVG9Vc2UgPSByZXNvbHZlRHluYW1pY01vZGVsKFxyXG4gICAgICAgIC8vIHJlc29sdmVEeW5hbWljTW9kZWwgZXhwZWN0cyBhbiB1cHBlcmNhc2UgdGFnIG5hbWUsIGJ1dCB2bm9kZS50eXBlIGlzIGxvd2VyY2FzZVxyXG4gICAgICAgIHZub2RlLnR5cGUudG9VcHBlckNhc2UoKSwgdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSk7XHJcbiAgICAgICAgaWYgKG1vZGVsVG9Vc2UuZ2V0U1NSUHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZGVsVG9Vc2UuZ2V0U1NSUHJvcHMoYmluZGluZywgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxuY29uc3Qgc3lzdGVtTW9kaWZpZXJzID0gWydjdHJsJywgJ3NoaWZ0JywgJ2FsdCcsICdtZXRhJ107XHJcbmNvbnN0IG1vZGlmaWVyR3VhcmRzID0ge1xyXG4gICAgc3RvcDogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLFxyXG4gICAgcHJldmVudDogZSA9PiBlLnByZXZlbnREZWZhdWx0KCksXHJcbiAgICBzZWxmOiBlID0+IGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQsXHJcbiAgICBjdHJsOiBlID0+ICFlLmN0cmxLZXksXHJcbiAgICBzaGlmdDogZSA9PiAhZS5zaGlmdEtleSxcclxuICAgIGFsdDogZSA9PiAhZS5hbHRLZXksXHJcbiAgICBtZXRhOiBlID0+ICFlLm1ldGFLZXksXHJcbiAgICBsZWZ0OiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDAsXHJcbiAgICBtaWRkbGU6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMSxcclxuICAgIHJpZ2h0OiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDIsXHJcbiAgICBleGFjdDogKGUsIG1vZGlmaWVycykgPT4gc3lzdGVtTW9kaWZpZXJzLnNvbWUobSA9PiBlW2Ake219S2V5YF0gJiYgIW1vZGlmaWVycy5pbmNsdWRlcyhtKSlcclxufTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB3aXRoTW9kaWZpZXJzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcclxuICAgIHJldHVybiAoZXZlbnQsIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBndWFyZCA9IG1vZGlmaWVyR3VhcmRzW21vZGlmaWVyc1tpXV07XHJcbiAgICAgICAgICAgIGlmIChndWFyZCAmJiBndWFyZChldmVudCwgbW9kaWZpZXJzKSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZuKGV2ZW50LCAuLi5hcmdzKTtcclxuICAgIH07XHJcbn07XHJcbi8vIEtlcHQgZm9yIDIueCBjb21wYXQuXHJcbi8vIE5vdGU6IElFMTEgY29tcGF0IGZvciBgc3BhY2ViYXJgIGFuZCBgZGVsYCBpcyByZW1vdmVkIGZvciBub3cuXHJcbmNvbnN0IGtleU5hbWVzID0ge1xyXG4gICAgZXNjOiAnZXNjYXBlJyxcclxuICAgIHNwYWNlOiAnICcsXHJcbiAgICB1cDogJ2Fycm93LXVwJyxcclxuICAgIGxlZnQ6ICdhcnJvdy1sZWZ0JyxcclxuICAgIHJpZ2h0OiAnYXJyb3ctcmlnaHQnLFxyXG4gICAgZG93bjogJ2Fycm93LWRvd24nLFxyXG4gICAgZGVsZXRlOiAnYmFja3NwYWNlJ1xyXG59O1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhLZXlzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcclxuICAgIHJldHVybiAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoISgna2V5JyBpbiBldmVudCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBldmVudEtleSA9IGh5cGhlbmF0ZShldmVudC5rZXkpO1xyXG4gICAgICAgIGlmIChtb2RpZmllcnMuc29tZShrID0+IGsgPT09IGV2ZW50S2V5IHx8IGtleU5hbWVzW2tdID09PSBldmVudEtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZuKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB2U2hvdyA9IHtcclxuICAgIGJlZm9yZU1vdW50KGVsLCB7IHZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgZWwuX3ZvZCA9IGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbiAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCB7IHZhbHVlLCBvbGRWYWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGlmICghdmFsdWUgPT09ICFvbGRWYWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5sZWF2ZShlbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJlZm9yZVVubW91bnQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2V0RGlzcGxheShlbCwgdmFsdWUpIHtcclxuICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl92b2QgOiAnbm9uZSc7XHJcbn1cclxuLy8gU1NSIHZub2RlIHRyYW5zZm9ybXMsIG9ubHkgdXNlZCB3aGVuIHVzZXIgaW5jbHVkZXMgY2xpZW50LW9yaWVudGVkIHJlbmRlclxyXG4vLyBmdW5jdGlvbiBpbiBTU1JcclxuZnVuY3Rpb24gaW5pdFZTaG93Rm9yU1NSKCkge1xyXG4gICAgdlNob3cuZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBzdHlsZTogeyBkaXNwbGF5OiAnbm9uZScgfSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxuY29uc3QgcmVuZGVyZXJPcHRpb25zID0gLyojX19QVVJFX18qLyBleHRlbmQoeyBwYXRjaFByb3AgfSwgbm9kZU9wcyk7XHJcbi8vIGxhenkgY3JlYXRlIHRoZSByZW5kZXJlciAtIHRoaXMgbWFrZXMgY29yZSByZW5kZXJlciBsb2dpYyB0cmVlLXNoYWthYmxlXHJcbi8vIGluIGNhc2UgdGhlIHVzZXIgb25seSBpbXBvcnRzIHJlYWN0aXZpdHkgdXRpbGl0aWVzIGZyb20gVnVlLlxyXG5sZXQgcmVuZGVyZXI7XHJcbmxldCBlbmFibGVkSHlkcmF0aW9uID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGVuc3VyZVJlbmRlcmVyKCkge1xyXG4gICAgcmV0dXJuIChyZW5kZXJlciB8fFxyXG4gICAgICAgIChyZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKHJlbmRlcmVyT3B0aW9ucykpKTtcclxufVxyXG5mdW5jdGlvbiBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpIHtcclxuICAgIHJlbmRlcmVyID0gZW5hYmxlZEh5ZHJhdGlvblxyXG4gICAgICAgID8gcmVuZGVyZXJcclxuICAgICAgICA6IGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKHJlbmRlcmVyT3B0aW9ucyk7XHJcbiAgICBlbmFibGVkSHlkcmF0aW9uID0gdHJ1ZTtcclxuICAgIHJldHVybiByZW5kZXJlcjtcclxufVxyXG4vLyB1c2UgZXhwbGljaXQgdHlwZSBjYXN0cyBoZXJlIHRvIGF2b2lkIGltcG9ydCgpIGNhbGxzIGluIHJvbGxlZC11cCBkLnRzXHJcbmNvbnN0IHJlbmRlciA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgZW5zdXJlUmVuZGVyZXIoKS5yZW5kZXIoLi4uYXJncyk7XHJcbn0pO1xyXG5jb25zdCBoeWRyYXRlID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmh5ZHJhdGUoLi4uYXJncyk7XHJcbn0pO1xyXG5jb25zdCBjcmVhdGVBcHAgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGNvbnN0IGFwcCA9IGVuc3VyZVJlbmRlcmVyKCkuY3JlYXRlQXBwKC4uLmFyZ3MpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGluamVjdE5hdGl2ZVRhZ0NoZWNrKGFwcCk7XHJcbiAgICAgICAgaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbW91bnQgfSA9IGFwcDtcclxuICAgIGFwcC5tb3VudCA9IChjb250YWluZXJPclNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lck9yU2VsZWN0b3IpO1xyXG4gICAgICAgIGlmICghY29udGFpbmVyKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gYXBwLl9jb21wb25lbnQ7XHJcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKGNvbXBvbmVudCkgJiYgIWNvbXBvbmVudC5yZW5kZXIgJiYgIWNvbXBvbmVudC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAgICAgICAgIC8vIFJlYXNvbjogcG90ZW50aWFsIGV4ZWN1dGlvbiBvZiBKUyBleHByZXNzaW9ucyBpbiBpbi1ET00gdGVtcGxhdGUuXHJcbiAgICAgICAgICAgIC8vIFRoZSB1c2VyIG11c3QgbWFrZSBzdXJlIHRoZSBpbi1ET00gdGVtcGxhdGUgaXMgdHJ1c3RlZC4gSWYgaXQnc1xyXG4gICAgICAgICAgICAvLyByZW5kZXJlZCBieSB0aGUgc2VydmVyLCB0aGUgdGVtcGxhdGUgc2hvdWxkIG5vdCBjb250YWluIGFueSB1c2VyIGRhdGEuXHJcbiAgICAgICAgICAgIGNvbXBvbmVudC50ZW1wbGF0ZSA9IGNvbnRhaW5lci5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsZWFyIGNvbnRlbnQgYmVmb3JlIG1vdW50aW5nXHJcbiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbW91bnQoY29udGFpbmVyLCBmYWxzZSwgY29udGFpbmVyIGluc3RhbmNlb2YgU1ZHRWxlbWVudCk7XHJcbiAgICAgICAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgndi1jbG9haycpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdkYXRhLXYtYXBwJywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJveHk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGFwcDtcclxufSk7XHJcbmNvbnN0IGNyZWF0ZVNTUkFwcCA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgY29uc3QgYXBwID0gZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKS5jcmVhdGVBcHAoLi4uYXJncyk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKTtcclxuICAgICAgICBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xyXG4gICAgYXBwLm1vdW50ID0gKGNvbnRhaW5lck9yU2VsZWN0b3IpID0+IHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyT3JTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbW91bnQoY29udGFpbmVyLCB0cnVlLCBjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGFwcDtcclxufSk7XHJcbmZ1bmN0aW9uIGluamVjdE5hdGl2ZVRhZ0NoZWNrKGFwcCkge1xyXG4gICAgLy8gSW5qZWN0IGBpc05hdGl2ZVRhZ2BcclxuICAgIC8vIHRoaXMgaXMgdXNlZCBmb3IgY29tcG9uZW50IG5hbWUgdmFsaWRhdGlvbiAoZGV2IG9ubHkpXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2lzTmF0aXZlVGFnJywge1xyXG4gICAgICAgIHZhbHVlOiAodGFnKSA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpLFxyXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxyXG4gICAgfSk7XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKSB7XHJcbiAgICBpZiAoaXNSdW50aW1lT25seSgpKSB7XHJcbiAgICAgICAgY29uc3QgaXNDdXN0b21FbGVtZW50ID0gYXBwLmNvbmZpZy5pc0N1c3RvbUVsZW1lbnQ7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcsICdpc0N1c3RvbUVsZW1lbnQnLCB7XHJcbiAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0N1c3RvbUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFRoZSBcXGBpc0N1c3RvbUVsZW1lbnRcXGAgY29uZmlnIG9wdGlvbiBpcyBkZXByZWNhdGVkLiBVc2UgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFxcYGNvbXBpbGVyT3B0aW9ucy5pc0N1c3RvbUVsZW1lbnRcXGAgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IGFwcC5jb25maWcuY29tcGlsZXJPcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGBUaGUgXFxgY29tcGlsZXJPcHRpb25zXFxgIGNvbmZpZyBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyBgICtcclxuICAgICAgICAgICAgYGEgYnVpbGQgb2YgVnVlLmpzIHRoYXQgaW5jbHVkZXMgdGhlIHJ1bnRpbWUgY29tcGlsZXIgKGFrYSBcImZ1bGwgYnVpbGRcIikuIGAgK1xyXG4gICAgICAgICAgICBgU2luY2UgeW91IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkLCBcXGBjb21waWxlck9wdGlvbnNcXGAgYCArXHJcbiAgICAgICAgICAgIGBtdXN0IGJlIHBhc3NlZCB0byBcXGBAdnVlL2NvbXBpbGVyLWRvbVxcYCBpbiB0aGUgYnVpbGQgc2V0dXAgaW5zdGVhZC5cXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZ1ZS1sb2FkZXI6IHBhc3MgaXQgdmlhIHZ1ZS1sb2FkZXIncyBcXGBjb21waWxlck9wdGlvbnNcXGAgbG9hZGVyIG9wdGlvbi5cXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZ1ZS1jbGk6IHNlZSBodHRwczovL2NsaS52dWVqcy5vcmcvZ3VpZGUvd2VicGFjay5odG1sI21vZGlmeWluZy1vcHRpb25zLW9mLWEtbG9hZGVyXFxuYCArXHJcbiAgICAgICAgICAgIGAtIEZvciB2aXRlOiBwYXNzIGl0IHZpYSBAdml0ZWpzL3BsdWdpbi12dWUgb3B0aW9ucy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS90cmVlL21haW4vcGFja2FnZXMvcGx1Z2luLXZ1ZSNleGFtcGxlLWZvci1wYXNzaW5nLW9wdGlvbnMtdG8tdnVlY29tcGlsZXItZG9tYDtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2NvbXBpbGVyT3B0aW9ucycsIHtcclxuICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihtc2cpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyT3B0aW9ucztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihtc2cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lcikge1xyXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lcik7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhcmVzKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byBtb3VudCBhcHA6IG1vdW50IHRhcmdldCBzZWxlY3RvciBcIiR7Y29udGFpbmVyfVwiIHJldHVybmVkIG51bGwuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgd2luZG93LlNoYWRvd1Jvb3QgJiZcclxuICAgICAgICBjb250YWluZXIgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCAmJlxyXG4gICAgICAgIGNvbnRhaW5lci5tb2RlID09PSAnY2xvc2VkJykge1xyXG4gICAgICAgIHdhcm4oYG1vdW50aW5nIG9uIGEgU2hhZG93Um9vdCB3aXRoIFxcYHttb2RlOiBcImNsb3NlZFwifVxcYCBtYXkgbGVhZCB0byB1bnByZWRpY3RhYmxlIGJ1Z3NgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250YWluZXI7XHJcbn1cclxubGV0IHNzckRpcmVjdGl2ZUluaXRpYWxpemVkID0gZmFsc2U7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmNvbnN0IGluaXREaXJlY3RpdmVzRm9yU1NSID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpbml0Vk1vZGVsRm9yU1NSKCk7XHJcbiAgICAgICAgICAgIGluaXRWU2hvd0ZvclNTUigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIDtcblxuZXhwb3J0IHsgVHJhbnNpdGlvbiwgVHJhbnNpdGlvbkdyb3VwLCBWdWVFbGVtZW50LCBjcmVhdGVBcHAsIGNyZWF0ZVNTUkFwcCwgZGVmaW5lQ3VzdG9tRWxlbWVudCwgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudCwgaHlkcmF0ZSwgaW5pdERpcmVjdGl2ZXNGb3JTU1IsIHJlbmRlciwgdXNlQ3NzTW9kdWxlLCB1c2VDc3NWYXJzLCB2TW9kZWxDaGVja2JveCwgdk1vZGVsRHluYW1pYywgdk1vZGVsUmFkaW8sIHZNb2RlbFNlbGVjdCwgdk1vZGVsVGV4dCwgdlNob3csIHdpdGhLZXlzLCB3aXRoTW9kaWZpZXJzIH07XG4iLCIvKipcclxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5XHJcbiAqIGlzIGluIHRoYXQgbWFwLlxyXG4gKiBJTVBPUlRBTlQ6IGFsbCBjYWxscyBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJlZml4ZWQgd2l0aFxyXG4gKiBcXC9cXCojXFxfXFxfUFVSRVxcX1xcX1xcKlxcL1xyXG4gKiBTbyB0aGF0IHJvbGx1cCBjYW4gdHJlZS1zaGFrZSB0aGVtIGlmIG5lY2Vzc2FyeS5cclxuICovXHJcbmZ1bmN0aW9uIG1ha2VNYXAoc3RyLCBleHBlY3RzTG93ZXJDYXNlKSB7XHJcbiAgICBjb25zdCBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgY29uc3QgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbWFwW2xpc3RbaV1dID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBleHBlY3RzTG93ZXJDYXNlID8gdmFsID0+ICEhbWFwW3ZhbC50b0xvd2VyQ2FzZSgpXSA6IHZhbCA9PiAhIW1hcFt2YWxdO1xyXG59XG5cbi8qKlxyXG4gKiBkZXYgb25seSBmbGFnIC0+IG5hbWUgbWFwcGluZ1xyXG4gKi9cclxuY29uc3QgUGF0Y2hGbGFnTmFtZXMgPSB7XHJcbiAgICBbMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi9dOiBgVEVYVGAsXHJcbiAgICBbMiAvKiBQYXRjaEZsYWdzLkNMQVNTICovXTogYENMQVNTYCxcclxuICAgIFs0IC8qIFBhdGNoRmxhZ3MuU1RZTEUgKi9dOiBgU1RZTEVgLFxyXG4gICAgWzggLyogUGF0Y2hGbGFncy5QUk9QUyAqL106IGBQUk9QU2AsXHJcbiAgICBbMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXTogYEZVTExfUFJPUFNgLFxyXG4gICAgWzMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi9dOiBgSFlEUkFURV9FVkVOVFNgLFxyXG4gICAgWzY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXTogYFNUQUJMRV9GUkFHTUVOVGAsXHJcbiAgICBbMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi9dOiBgS0VZRURfRlJBR01FTlRgLFxyXG4gICAgWzI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi9dOiBgVU5LRVlFRF9GUkFHTUVOVGAsXHJcbiAgICBbNTEyIC8qIFBhdGNoRmxhZ3MuTkVFRF9QQVRDSCAqL106IGBORUVEX1BBVENIYCxcclxuICAgIFsxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqL106IGBEWU5BTUlDX1NMT1RTYCxcclxuICAgIFsyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dOiBgREVWX1JPT1RfRlJBR01FTlRgLFxyXG4gICAgWy0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqL106IGBIT0lTVEVEYCxcclxuICAgIFstMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi9dOiBgQkFJTGBcclxufTtcblxuLyoqXHJcbiAqIERldiBvbmx5XHJcbiAqL1xyXG5jb25zdCBzbG90RmxhZ3NUZXh0ID0ge1xyXG4gICAgWzEgLyogU2xvdEZsYWdzLlNUQUJMRSAqL106ICdTVEFCTEUnLFxyXG4gICAgWzIgLyogU2xvdEZsYWdzLkRZTkFNSUMgKi9dOiAnRFlOQU1JQycsXHJcbiAgICBbMyAvKiBTbG90RmxhZ3MuRk9SV0FSREVEICovXTogJ0ZPUldBUkRFRCdcclxufTtcblxuY29uc3QgR0xPQkFMU19XSElURV9MSVNURUQgPSAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSwnICtcclxuICAgICdkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LCcgK1xyXG4gICAgJ09iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50JztcclxuY29uc3QgaXNHbG9iYWxseVdoaXRlbGlzdGVkID0gLyojX19QVVJFX18qLyBtYWtlTWFwKEdMT0JBTFNfV0hJVEVfTElTVEVEKTtcblxuY29uc3QgcmFuZ2UgPSAyO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZUNvZGVGcmFtZShzb3VyY2UsIHN0YXJ0ID0gMCwgZW5kID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgLy8gU3BsaXQgdGhlIGNvbnRlbnQgaW50byBpbmRpdmlkdWFsIGxpbmVzIGJ1dCBjYXB0dXJlIHRoZSBuZXdsaW5lIHNlcXVlbmNlXHJcbiAgICAvLyB0aGF0IHNlcGFyYXRlZCBlYWNoIGxpbmUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGFjdHVhbCBzZXF1ZW5jZSBpc1xyXG4gICAgLy8gbmVlZGVkIHRvIHByb3Blcmx5IHRha2UgaW50byBhY2NvdW50IHRoZSBmdWxsIGxpbmUgbGVuZ3RoIGZvciBvZmZzZXRcclxuICAgIC8vIGNvbXBhcmlzb25cclxuICAgIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvKFxccj9cXG4pLyk7XHJcbiAgICAvLyBTZXBhcmF0ZSB0aGUgbGluZXMgYW5kIG5ld2xpbmUgc2VxdWVuY2VzIGludG8gc2VwYXJhdGUgYXJyYXlzIGZvciBlYXNpZXIgcmVmZXJlbmNpbmdcclxuICAgIGNvbnN0IG5ld2xpbmVTZXF1ZW5jZXMgPSBsaW5lcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ICUgMiA9PT0gMSk7XHJcbiAgICBsaW5lcyA9IGxpbmVzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggJSAyID09PSAwKTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBjb25zdCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb3VudCArPVxyXG4gICAgICAgICAgICBsaW5lc1tpXS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgKChuZXdsaW5lU2VxdWVuY2VzW2ldICYmIG5ld2xpbmVTZXF1ZW5jZXNbaV0ubGVuZ3RoKSB8fCAwKTtcclxuICAgICAgICBpZiAoY291bnQgPj0gc3RhcnQpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgLSByYW5nZTsgaiA8PSBpICsgcmFuZ2UgfHwgZW5kID4gY291bnQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGogPj0gbGluZXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGogKyAxO1xyXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goYCR7bGluZX0keycgJy5yZXBlYXQoTWF0aC5tYXgoMyAtIFN0cmluZyhsaW5lKS5sZW5ndGgsIDApKX18ICAke2xpbmVzW2pdfWApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IGxpbmVzW2pdLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVTZXFMZW5ndGggPSAobmV3bGluZVNlcXVlbmNlc1tqXSAmJiBuZXdsaW5lU2VxdWVuY2VzW2pdLmxlbmd0aCkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmIChqID09PSBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHVzaCB1bmRlcmxpbmVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWQgPSBzdGFydCAtIChjb3VudCAtIChsaW5lTGVuZ3RoICsgbmV3TGluZVNlcUxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KDEsIGVuZCA+IGNvdW50ID8gbGluZUxlbmd0aCAtIHBhZCA6IGVuZCAtIHN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICcgJy5yZXBlYXQocGFkKSArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID4gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmQgPiBjb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heChNYXRoLm1pbihlbmQgLSBjb3VudCwgbGluZUxlbmd0aCksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IGxpbmVMZW5ndGggKyBuZXdMaW5lU2VxTGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXMuam9pbignXFxuJyk7XHJcbn1cblxuLyoqXHJcbiAqIE9uIHRoZSBjbGllbnQgd2Ugb25seSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgY2FzZXMgZm9yIGJvb2xlYW4gYXR0cmlidXRlcyB0aGF0XHJcbiAqIGhhdmUgZGlmZmVyZW50IG5hbWVzIGZyb20gdGhlaXIgY29ycmVzcG9uZGluZyBkb20gcHJvcGVydGllczpcclxuICogLSBpdGVtc2NvcGUgLT4gTi9BXHJcbiAqIC0gYWxsb3dmdWxsc2NyZWVuIC0+IGFsbG93RnVsbHNjcmVlblxyXG4gKiAtIGZvcm1ub3ZhbGlkYXRlIC0+IGZvcm1Ob1ZhbGlkYXRlXHJcbiAqIC0gaXNtYXAgLT4gaXNNYXBcclxuICogLSBub21vZHVsZSAtPiBub01vZHVsZVxyXG4gKiAtIG5vdmFsaWRhdGUgLT4gbm9WYWxpZGF0ZVxyXG4gKiAtIHJlYWRvbmx5IC0+IHJlYWRPbmx5XHJcbiAqL1xyXG5jb25zdCBzcGVjaWFsQm9vbGVhbkF0dHJzID0gYGl0ZW1zY29wZSxhbGxvd2Z1bGxzY3JlZW4sZm9ybW5vdmFsaWRhdGUsaXNtYXAsbm9tb2R1bGUsbm92YWxpZGF0ZSxyZWFkb25seWA7XHJcbmNvbnN0IGlzU3BlY2lhbEJvb2xlYW5BdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKHNwZWNpYWxCb29sZWFuQXR0cnMpO1xyXG4vKipcclxuICogVGhlIGZ1bGwgbGlzdCBpcyBuZWVkZWQgZHVyaW5nIFNTUiB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGluaXRpYWwgbWFya3VwLlxyXG4gKi9cclxuY29uc3QgaXNCb29sZWFuQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChzcGVjaWFsQm9vbGVhbkF0dHJzICtcclxuICAgIGAsYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNvbnRyb2xzLGRlZmF1bHQsZGVmZXIsZGlzYWJsZWQsaGlkZGVuLGAgK1xyXG4gICAgYGxvb3Asb3BlbixyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3MsYCArXHJcbiAgICBgY2hlY2tlZCxtdXRlZCxtdWx0aXBsZSxzZWxlY3RlZGApO1xyXG4vKipcclxuICogQm9vbGVhbiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBpbmNsdWRlZCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IG9yICcnLlxyXG4gKiBlLmcuIGA8c2VsZWN0IG11bHRpcGxlPmAgY29tcGlsZXMgdG8gYHsgbXVsdGlwbGU6ICcnIH1gXHJcbiAqL1xyXG5mdW5jdGlvbiBpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpIHtcclxuICAgIHJldHVybiAhIXZhbHVlIHx8IHZhbHVlID09PSAnJztcclxufVxyXG5jb25zdCB1bnNhZmVBdHRyQ2hhclJFID0gL1s+Lz1cIidcXHUwMDA5XFx1MDAwYVxcdTAwMGNcXHUwMDIwXS87XHJcbmNvbnN0IGF0dHJWYWxpZGF0aW9uQ2FjaGUgPSB7fTtcclxuZnVuY3Rpb24gaXNTU1JTYWZlQXR0ck5hbWUobmFtZSkge1xyXG4gICAgaWYgKGF0dHJWYWxpZGF0aW9uQ2FjaGUuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gYXR0clZhbGlkYXRpb25DYWNoZVtuYW1lXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzVW5zYWZlID0gdW5zYWZlQXR0ckNoYXJSRS50ZXN0KG5hbWUpO1xyXG4gICAgaWYgKGlzVW5zYWZlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5zYWZlIGF0dHJpYnV0ZSBuYW1lOiAke25hbWV9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKGF0dHJWYWxpZGF0aW9uQ2FjaGVbbmFtZV0gPSAhaXNVbnNhZmUpO1xyXG59XHJcbmNvbnN0IHByb3BzVG9BdHRyTWFwID0ge1xyXG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcclxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcclxuICAgIGh0bWxGb3I6ICdmb3InLFxyXG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcclxufTtcclxuLyoqXHJcbiAqIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWNjZXB0IHBsYWluIG51bWJlcnNcclxuICovXHJcbmNvbnN0IGlzTm9Vbml0TnVtZXJpY1N0eWxlUHJvcCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxib3JkZXItaW1hZ2Utb3V0c2V0LGJvcmRlci1pbWFnZS1zbGljZSxgICtcclxuICAgIGBib3JkZXItaW1hZ2Utd2lkdGgsYm94LWZsZXgsYm94LWZsZXgtZ3JvdXAsYm94LW9yZGluYWwtZ3JvdXAsY29sdW1uLWNvdW50LGAgK1xyXG4gICAgYGNvbHVtbnMsZmxleCxmbGV4LWdyb3csZmxleC1wb3NpdGl2ZSxmbGV4LXNocmluayxmbGV4LW5lZ2F0aXZlLGZsZXgtb3JkZXIsYCArXHJcbiAgICBgZ3JpZC1yb3csZ3JpZC1yb3ctZW5kLGdyaWQtcm93LXNwYW4sZ3JpZC1yb3ctc3RhcnQsZ3JpZC1jb2x1bW4sYCArXHJcbiAgICBgZ3JpZC1jb2x1bW4tZW5kLGdyaWQtY29sdW1uLXNwYW4sZ3JpZC1jb2x1bW4tc3RhcnQsZm9udC13ZWlnaHQsbGluZS1jbGFtcCxgICtcclxuICAgIGBsaW5lLWhlaWdodCxvcGFjaXR5LG9yZGVyLG9ycGhhbnMsdGFiLXNpemUsd2lkb3dzLHotaW5kZXgsem9vbSxgICtcclxuICAgIC8vIFNWR1xyXG4gICAgYGZpbGwtb3BhY2l0eSxmbG9vZC1vcGFjaXR5LHN0b3Atb3BhY2l0eSxzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LGAgK1xyXG4gICAgYHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aGApO1xyXG4vKipcclxuICogS25vd24gYXR0cmlidXRlcywgdGhpcyBpcyB1c2VkIGZvciBzdHJpbmdpZmljYXRpb24gb2YgcnVudGltZSBzdGF0aWMgbm9kZXNcclxuICogc28gdGhhdCB3ZSBkb24ndCBzdHJpbmdpZnkgYmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgc2V0IGZyb20gSFRNTC5cclxuICogRG9uJ3QgYWxzbyBmb3JnZXQgdG8gYWxsb3cgYGRhdGEtKmAgYW5kIGBhcmlhLSpgIVxyXG4gKiBHZW5lcmF0ZWQgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXNcclxuICovXHJcbmNvbnN0IGlzS25vd25IdG1sQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24sYWxpZ24sYWxsb3csYWx0LGFzeW5jLGAgK1xyXG4gICAgYGF1dG9jYXBpdGFsaXplLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3BsYXksYmFja2dyb3VuZCxiZ2NvbG9yLGAgK1xyXG4gICAgYGJvcmRlcixidWZmZXJlZCxjYXB0dXJlLGNoYWxsZW5nZSxjaGFyc2V0LGNoZWNrZWQsY2l0ZSxjbGFzcyxjb2RlLGAgK1xyXG4gICAgYGNvZGViYXNlLGNvbG9yLGNvbHMsY29sc3Bhbixjb250ZW50LGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxgICtcclxuICAgIGBjb29yZHMsY3Jvc3NvcmlnaW4sY3NwLGRhdGEsZGF0ZXRpbWUsZGVjb2RpbmcsZGVmYXVsdCxkZWZlcixkaXIsZGlybmFtZSxgICtcclxuICAgIGBkaXNhYmxlZCxkb3dubG9hZCxkcmFnZ2FibGUsZHJvcHpvbmUsZW5jdHlwZSxlbnRlcmtleWhpbnQsZm9yLGZvcm0sYCArXHJcbiAgICBgZm9ybWFjdGlvbixmb3JtZW5jdHlwZSxmb3JtbWV0aG9kLGZvcm1ub3ZhbGlkYXRlLGZvcm10YXJnZXQsaGVhZGVycyxgICtcclxuICAgIGBoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LGljb24saWQsaW1wb3J0YW5jZSxpbnRlZ3JpdHksYCArXHJcbiAgICBgaXNtYXAsaXRlbXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9hZGluZyxsaXN0LGxvb3AsbG93LGAgK1xyXG4gICAgYG1hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWlubGVuZ3RoLG1lZGlhLG1pbixtdWx0aXBsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsYCArXHJcbiAgICBgb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJlYWRvbmx5LGAgK1xyXG4gICAgYHJlZmVycmVycG9saWN5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxzY29wZWQsYCArXHJcbiAgICBgc2VsZWN0ZWQsc2hhcGUsc2l6ZSxzaXplcyxzbG90LHNwYW4sc3BlbGxjaGVjayxzcmMsc3JjZG9jLHNyY2xhbmcsc3Jjc2V0LGAgK1xyXG4gICAgYHN0YXJ0LHN0ZXAsc3R5bGUsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLGAgK1xyXG4gICAgYHZhbHVlLHdpZHRoLHdyYXBgKTtcclxuLyoqXHJcbiAqIEdlbmVyYXRlZCBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGVcclxuICovXHJcbmNvbnN0IGlzS25vd25TdmdBdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGB4bWxucyxhY2NlbnQtaGVpZ2h0LGFjY3VtdWxhdGUsYWRkaXRpdmUsYWxpZ25tZW50LWJhc2VsaW5lLGFscGhhYmV0aWMsYW1wbGl0dWRlLGAgK1xyXG4gICAgYGFyYWJpYy1mb3JtLGFzY2VudCxhdHRyaWJ1dGVOYW1lLGF0dHJpYnV0ZVR5cGUsYXppbXV0aCxiYXNlRnJlcXVlbmN5LGAgK1xyXG4gICAgYGJhc2VsaW5lLXNoaWZ0LGJhc2VQcm9maWxlLGJib3gsYmVnaW4sYmlhcyxieSxjYWxjTW9kZSxjYXAtaGVpZ2h0LGNsYXNzLGAgK1xyXG4gICAgYGNsaXAsY2xpcFBhdGhVbml0cyxjbGlwLXBhdGgsY2xpcC1ydWxlLGNvbG9yLGNvbG9yLWludGVycG9sYXRpb24sYCArXHJcbiAgICBgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLGNvbG9yLXByb2ZpbGUsY29sb3ItcmVuZGVyaW5nLGAgK1xyXG4gICAgYGNvbnRlbnRTY3JpcHRUeXBlLGNvbnRlbnRTdHlsZVR5cGUsY3Jvc3NvcmlnaW4sY3Vyc29yLGN4LGN5LGQsZGVjZWxlcmF0ZSxgICtcclxuICAgIGBkZXNjZW50LGRpZmZ1c2VDb25zdGFudCxkaXJlY3Rpb24sZGlzcGxheSxkaXZpc29yLGRvbWluYW50LWJhc2VsaW5lLGR1cixkeCxgICtcclxuICAgIGBkeSxlZGdlTW9kZSxlbGV2YXRpb24sZW5hYmxlLWJhY2tncm91bmQsZW5kLGV4cG9uZW50LGZpbGwsZmlsbC1vcGFjaXR5LGAgK1xyXG4gICAgYGZpbGwtcnVsZSxmaWx0ZXIsZmlsdGVyUmVzLGZpbHRlclVuaXRzLGZsb29kLWNvbG9yLGZsb29kLW9wYWNpdHksYCArXHJcbiAgICBgZm9udC1mYW1pbHksZm9udC1zaXplLGZvbnQtc2l6ZS1hZGp1c3QsZm9udC1zdHJldGNoLGZvbnQtc3R5bGUsYCArXHJcbiAgICBgZm9udC12YXJpYW50LGZvbnQtd2VpZ2h0LGZvcm1hdCxmcm9tLGZyLGZ4LGZ5LGcxLGcyLGdseXBoLW5hbWUsYCArXHJcbiAgICBgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCxnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCxnbHlwaFJlZixgICtcclxuICAgIGBncmFkaWVudFRyYW5zZm9ybSxncmFkaWVudFVuaXRzLGhhbmdpbmcsaGVpZ2h0LGhyZWYsaHJlZmxhbmcsaG9yaXotYWR2LXgsYCArXHJcbiAgICBgaG9yaXotb3JpZ2luLXgsaWQsaWRlb2dyYXBoaWMsaW1hZ2UtcmVuZGVyaW5nLGluLGluMixpbnRlcmNlcHQsayxrMSxrMixrMyxgICtcclxuICAgIGBrNCxrZXJuZWxNYXRyaXgsa2VybmVsVW5pdExlbmd0aCxrZXJuaW5nLGtleVBvaW50cyxrZXlTcGxpbmVzLGtleVRpbWVzLGAgK1xyXG4gICAgYGxhbmcsbGVuZ3RoQWRqdXN0LGxldHRlci1zcGFjaW5nLGxpZ2h0aW5nLWNvbG9yLGxpbWl0aW5nQ29uZUFuZ2xlLGxvY2FsLGAgK1xyXG4gICAgYG1hcmtlci1lbmQsbWFya2VyLW1pZCxtYXJrZXItc3RhcnQsbWFya2VySGVpZ2h0LG1hcmtlclVuaXRzLG1hcmtlcldpZHRoLGAgK1xyXG4gICAgYG1hc2ssbWFza0NvbnRlbnRVbml0cyxtYXNrVW5pdHMsbWF0aGVtYXRpY2FsLG1heCxtZWRpYSxtZXRob2QsbWluLG1vZGUsYCArXHJcbiAgICBgbmFtZSxudW1PY3RhdmVzLG9mZnNldCxvcGFjaXR5LG9wZXJhdG9yLG9yZGVyLG9yaWVudCxvcmllbnRhdGlvbixvcmlnaW4sYCArXHJcbiAgICBgb3ZlcmZsb3csb3ZlcmxpbmUtcG9zaXRpb24sb3ZlcmxpbmUtdGhpY2tuZXNzLHBhbm9zZS0xLHBhaW50LW9yZGVyLHBhdGgsYCArXHJcbiAgICBgcGF0aExlbmd0aCxwYXR0ZXJuQ29udGVudFVuaXRzLHBhdHRlcm5UcmFuc2Zvcm0scGF0dGVyblVuaXRzLHBpbmcsYCArXHJcbiAgICBgcG9pbnRlci1ldmVudHMscG9pbnRzLHBvaW50c0F0WCxwb2ludHNBdFkscG9pbnRzQXRaLHByZXNlcnZlQWxwaGEsYCArXHJcbiAgICBgcHJlc2VydmVBc3BlY3RSYXRpbyxwcmltaXRpdmVVbml0cyxyLHJhZGl1cyxyZWZlcnJlclBvbGljeSxyZWZYLHJlZlkscmVsLGAgK1xyXG4gICAgYHJlbmRlcmluZy1pbnRlbnQscmVwZWF0Q291bnQscmVwZWF0RHVyLHJlcXVpcmVkRXh0ZW5zaW9ucyxyZXF1aXJlZEZlYXR1cmVzLGAgK1xyXG4gICAgYHJlc3RhcnQscmVzdWx0LHJvdGF0ZSxyeCxyeSxzY2FsZSxzZWVkLHNoYXBlLXJlbmRlcmluZyxzbG9wZSxzcGFjaW5nLGAgK1xyXG4gICAgYHNwZWN1bGFyQ29uc3RhbnQsc3BlY3VsYXJFeHBvbmVudCxzcGVlZCxzcHJlYWRNZXRob2Qsc3RhcnRPZmZzZXQsYCArXHJcbiAgICBgc3RkRGV2aWF0aW9uLHN0ZW1oLHN0ZW12LHN0aXRjaFRpbGVzLHN0b3AtY29sb3Isc3RvcC1vcGFjaXR5LGAgK1xyXG4gICAgYHN0cmlrZXRocm91Z2gtcG9zaXRpb24sc3RyaWtldGhyb3VnaC10aGlja25lc3Msc3RyaW5nLHN0cm9rZSxgICtcclxuICAgIGBzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LHN0cm9rZS1saW5lY2FwLHN0cm9rZS1saW5lam9pbixgICtcclxuICAgIGBzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGgsc3R5bGUsc3VyZmFjZVNjYWxlLGAgK1xyXG4gICAgYHN5c3RlbUxhbmd1YWdlLHRhYmluZGV4LHRhYmxlVmFsdWVzLHRhcmdldCx0YXJnZXRYLHRhcmdldFksdGV4dC1hbmNob3IsYCArXHJcbiAgICBgdGV4dC1kZWNvcmF0aW9uLHRleHQtcmVuZGVyaW5nLHRleHRMZW5ndGgsdG8sdHJhbnNmb3JtLHRyYW5zZm9ybS1vcmlnaW4sYCArXHJcbiAgICBgdHlwZSx1MSx1Mix1bmRlcmxpbmUtcG9zaXRpb24sdW5kZXJsaW5lLXRoaWNrbmVzcyx1bmljb2RlLHVuaWNvZGUtYmlkaSxgICtcclxuICAgIGB1bmljb2RlLXJhbmdlLHVuaXRzLXBlci1lbSx2LWFscGhhYmV0aWMsdi1oYW5naW5nLHYtaWRlb2dyYXBoaWMsYCArXHJcbiAgICBgdi1tYXRoZW1hdGljYWwsdmFsdWVzLHZlY3Rvci1lZmZlY3QsdmVyc2lvbix2ZXJ0LWFkdi15LHZlcnQtb3JpZ2luLXgsYCArXHJcbiAgICBgdmVydC1vcmlnaW4teSx2aWV3Qm94LHZpZXdUYXJnZXQsdmlzaWJpbGl0eSx3aWR0aCx3aWR0aHMsd29yZC1zcGFjaW5nLGAgK1xyXG4gICAgYHdyaXRpbmctbW9kZSx4LHgtaGVpZ2h0LHgxLHgyLHhDaGFubmVsU2VsZWN0b3IseGxpbms6YWN0dWF0ZSx4bGluazphcmNyb2xlLGAgK1xyXG4gICAgYHhsaW5rOmhyZWYseGxpbms6cm9sZSx4bGluazpzaG93LHhsaW5rOnRpdGxlLHhsaW5rOnR5cGUseG1sOmJhc2UseG1sOmxhbmcsYCArXHJcbiAgICBgeG1sOnNwYWNlLHkseTEseTIseUNoYW5uZWxTZWxlY3Rvcix6LHpvb21BbmRQYW5gKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGUodmFsdWUpIHtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHZhbHVlW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaXNTdHJpbmcoaXRlbSlcclxuICAgICAgICAgICAgICAgID8gcGFyc2VTdHJpbmdTdHlsZShpdGVtKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVTdHlsZShpdGVtKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IG5vcm1hbGl6ZWRba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGxpc3REZWxpbWl0ZXJSRSA9IC87KD8hW14oXSpcXCkpL2c7XHJcbmNvbnN0IHByb3BlcnR5RGVsaW1pdGVyUkUgPSAvOiguKykvO1xyXG5mdW5jdGlvbiBwYXJzZVN0cmluZ1N0eWxlKGNzc1RleHQpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyUkUpLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlclJFKTtcclxuICAgICAgICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJldFt0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBzdHJpbmdpZnlTdHlsZShzdHlsZXMpIHtcclxuICAgIGxldCByZXQgPSAnJztcclxuICAgIGlmICghc3R5bGVzIHx8IGlzU3RyaW5nKHN0eWxlcykpIHtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdHlsZXNba2V5XTtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0ga2V5LnN0YXJ0c1dpdGgoYC0tYCkgPyBrZXkgOiBoeXBoZW5hdGUoa2V5KTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpIHx8XHJcbiAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTm9Vbml0TnVtZXJpY1N0eWxlUHJvcChub3JtYWxpemVkS2V5KSkpIHtcclxuICAgICAgICAgICAgLy8gb25seSByZW5kZXIgdmFsaWQgdmFsdWVzXHJcbiAgICAgICAgICAgIHJldCArPSBgJHtub3JtYWxpemVkS2V5fToke3ZhbHVlfTtgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2xhc3ModmFsdWUpIHtcclxuICAgIGxldCByZXMgPSAnJztcclxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXMgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplQ2xhc3ModmFsdWVbaV0pO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgcmVzICs9IG5vcm1hbGl6ZWQgKyAnICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICByZXMgKz0gbmFtZSArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXMudHJpbSgpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzKHByb3BzKSB7XHJcbiAgICBpZiAoIXByb3BzKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgbGV0IHsgY2xhc3M6IGtsYXNzLCBzdHlsZSB9ID0gcHJvcHM7XHJcbiAgICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xyXG4gICAgICAgIHByb3BzLmNsYXNzID0gbm9ybWFsaXplQ2xhc3Moa2xhc3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0eWxlKSB7XHJcbiAgICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbn1cblxuLy8gVGhlc2UgdGFnIGNvbmZpZ3MgYXJlIHNoYXJlZCBiZXR3ZWVuIGNvbXBpbGVyLWRvbSBhbmQgcnVudGltZS1kb20sIHNvIHRoZXlcclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50XHJcbmNvbnN0IEhUTUxfVEFHUyA9ICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLCcgK1xyXG4gICAgJ2hlYWRlcixoMSxoMixoMyxoNCxoNSxoNixuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbiwnICtcclxuICAgICdmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSwnICtcclxuICAgICdkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCwnICtcclxuICAgICd0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLCcgK1xyXG4gICAgJ2NhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCwnICtcclxuICAgICd0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsJyArXHJcbiAgICAnb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSwnICtcclxuICAgICdzdW1tYXJ5LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290JztcclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0VsZW1lbnRcclxuY29uc3QgU1ZHX1RBR1MgPSAnc3ZnLGFuaW1hdGUsYW5pbWF0ZU1vdGlvbixhbmltYXRlVHJhbnNmb3JtLGNpcmNsZSxjbGlwUGF0aCxjb2xvci1wcm9maWxlLCcgK1xyXG4gICAgJ2RlZnMsZGVzYyxkaXNjYXJkLGVsbGlwc2UsZmVCbGVuZCxmZUNvbG9yTWF0cml4LGZlQ29tcG9uZW50VHJhbnNmZXIsJyArXHJcbiAgICAnZmVDb21wb3NpdGUsZmVDb252b2x2ZU1hdHJpeCxmZURpZmZ1c2VMaWdodGluZyxmZURpc3BsYWNlbWVudE1hcCwnICtcclxuICAgICdmZURpc3RhbmNlTGlnaHQsZmVEcm9wU2hhZG93LGZlRmxvb2QsZmVGdW5jQSxmZUZ1bmNCLGZlRnVuY0csZmVGdW5jUiwnICtcclxuICAgICdmZUdhdXNzaWFuQmx1cixmZUltYWdlLGZlTWVyZ2UsZmVNZXJnZU5vZGUsZmVNb3JwaG9sb2d5LGZlT2Zmc2V0LCcgK1xyXG4gICAgJ2ZlUG9pbnRMaWdodCxmZVNwZWN1bGFyTGlnaHRpbmcsZmVTcG90TGlnaHQsZmVUaWxlLGZlVHVyYnVsZW5jZSxmaWx0ZXIsJyArXHJcbiAgICAnZm9yZWlnbk9iamVjdCxnLGhhdGNoLGhhdGNocGF0aCxpbWFnZSxsaW5lLGxpbmVhckdyYWRpZW50LG1hcmtlcixtYXNrLCcgK1xyXG4gICAgJ21lc2gsbWVzaGdyYWRpZW50LG1lc2hwYXRjaCxtZXNocm93LG1ldGFkYXRhLG1wYXRoLHBhdGgscGF0dGVybiwnICtcclxuICAgICdwb2x5Z29uLHBvbHlsaW5lLHJhZGlhbEdyYWRpZW50LHJlY3Qsc2V0LHNvbGlkY29sb3Isc3RvcCxzd2l0Y2gsc3ltYm9sLCcgK1xyXG4gICAgJ3RleHQsdGV4dFBhdGgsdGl0bGUsdHNwYW4sdW5rbm93bix1c2Usdmlldyc7XHJcbmNvbnN0IFZPSURfVEFHUyA9ICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGhyLGltZyxpbnB1dCxsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdicic7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc0hUTUxUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoSFRNTF9UQUdTKTtcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzU1ZHVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFNWR19UQUdTKTtcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzVm9pZFRhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChWT0lEX1RBR1MpO1xuXG5jb25zdCBlc2NhcGVSRSA9IC9bXCInJjw+XS87XHJcbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdHIgPSAnJyArIHN0cmluZztcclxuICAgIGNvbnN0IG1hdGNoID0gZXNjYXBlUkUuZXhlYyhzdHIpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcbiAgICBsZXQgaHRtbCA9ICcnO1xyXG4gICAgbGV0IGVzY2FwZWQ7XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtcclxuICAgICAgICAgICAgY2FzZSAzNDogLy8gXCJcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJnF1b3Q7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM4OiAvLyAmXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZhbXA7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM5OiAvLyAnXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyYjMzk7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDYwOiAvLyA8XHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZsdDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNjI6IC8vID5cclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmd0Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkge1xyXG4gICAgICAgICAgICBodG1sICs9IHN0ci5zbGljZShsYXN0SW5kZXgsIGluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xyXG4gICAgICAgIGh0bWwgKz0gZXNjYXBlZDtcclxuICAgIH1cclxuICAgIHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zbGljZShsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XHJcbn1cclxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1Mi9zeW50YXguaHRtbCNjb21tZW50c1xyXG5jb25zdCBjb21tZW50U3RyaXBSRSA9IC9eLT8+fDwhLS18LS0+fC0tIT58PCEtJC9nO1xyXG5mdW5jdGlvbiBlc2NhcGVIdG1sQ29tbWVudChzcmMpIHtcclxuICAgIHJldHVybiBzcmMucmVwbGFjZShjb21tZW50U3RyaXBSRSwgJycpO1xyXG59XG5cbmZ1bmN0aW9uIGxvb3NlQ29tcGFyZUFycmF5cyhhLCBiKSB7XHJcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBlcXVhbCA9IHRydWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgZXF1YWwgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBlcXVhbCA9IGxvb3NlRXF1YWwoYVtpXSwgYltpXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXF1YWw7XHJcbn1cclxuZnVuY3Rpb24gbG9vc2VFcXVhbChhLCBiKSB7XHJcbiAgICBpZiAoYSA9PT0gYilcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGxldCBhVmFsaWRUeXBlID0gaXNEYXRlKGEpO1xyXG4gICAgbGV0IGJWYWxpZFR5cGUgPSBpc0RhdGUoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFWYWxpZFR5cGUgJiYgYlZhbGlkVHlwZSA/IGEuZ2V0VGltZSgpID09PSBiLmdldFRpbWUoKSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzU3ltYm9sKGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzU3ltYm9sKGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhID09PSBiO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzQXJyYXkoYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNBcnJheShiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICByZXR1cm4gYVZhbGlkVHlwZSAmJiBiVmFsaWRUeXBlID8gbG9vc2VDb21wYXJlQXJyYXlzKGEsIGIpIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNPYmplY3QoYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNPYmplY3QoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmOiB0aGlzIGlmIHdpbGwgcHJvYmFibHkgbmV2ZXIgYmUgY2FsbGVkICovXHJcbiAgICAgICAgaWYgKCFhVmFsaWRUeXBlIHx8ICFiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYUtleXNDb3VudCA9IE9iamVjdC5rZXlzKGEpLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBiS2V5c0NvdW50ID0gT2JqZWN0LmtleXMoYikubGVuZ3RoO1xyXG4gICAgICAgIGlmIChhS2V5c0NvdW50ICE9PSBiS2V5c0NvdW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYSkge1xyXG4gICAgICAgICAgICBjb25zdCBhSGFzS2V5ID0gYS5oYXNPd25Qcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgICAgICBjb25zdCBiSGFzS2V5ID0gYi5oYXNPd25Qcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgICAgICBpZiAoKGFIYXNLZXkgJiYgIWJIYXNLZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAoIWFIYXNLZXkgJiYgYkhhc0tleSkgfHxcclxuICAgICAgICAgICAgICAgICFsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpO1xyXG59XHJcbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZihhcnIsIHZhbCkge1xyXG4gICAgcmV0dXJuIGFyci5maW5kSW5kZXgoaXRlbSA9PiBsb29zZUVxdWFsKGl0ZW0sIHZhbCkpO1xyXG59XG5cbi8qKlxyXG4gKiBGb3IgY29udmVydGluZyB7eyBpbnRlcnBvbGF0aW9uIH19IHZhbHVlcyB0byBkaXNwbGF5ZWQgc3RyaW5ncy5cclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHRvRGlzcGxheVN0cmluZyA9ICh2YWwpID0+IHtcclxuICAgIHJldHVybiBpc1N0cmluZyh2YWwpXHJcbiAgICAgICAgPyB2YWxcclxuICAgICAgICA6IHZhbCA9PSBudWxsXHJcbiAgICAgICAgICAgID8gJydcclxuICAgICAgICAgICAgOiBpc0FycmF5KHZhbCkgfHxcclxuICAgICAgICAgICAgICAgIChpc09iamVjdCh2YWwpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbC50b1N0cmluZyA9PT0gb2JqZWN0VG9TdHJpbmcgfHwgIWlzRnVuY3Rpb24odmFsLnRvU3RyaW5nKSkpXHJcbiAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgcmVwbGFjZXIsIDIpXHJcbiAgICAgICAgICAgICAgICA6IFN0cmluZyh2YWwpO1xyXG59O1xyXG5jb25zdCByZXBsYWNlciA9IChfa2V5LCB2YWwpID0+IHtcclxuICAgIC8vIGNhbid0IHVzZSBpc1JlZiBoZXJlIHNpbmNlIEB2dWUvc2hhcmVkIGhhcyBubyBkZXBzXHJcbiAgICBpZiAodmFsICYmIHZhbC5fX3ZfaXNSZWYpIHtcclxuICAgICAgICByZXR1cm4gcmVwbGFjZXIoX2tleSwgdmFsLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzTWFwKHZhbCkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBbYE1hcCgke3ZhbC5zaXplfSlgXTogWy4uLnZhbC5lbnRyaWVzKCldLnJlZHVjZSgoZW50cmllcywgW2tleSwgdmFsXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZW50cmllc1tgJHtrZXl9ID0+YF0gPSB2YWw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cmllcztcclxuICAgICAgICAgICAgfSwge30pXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbCkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBbYFNldCgke3ZhbC5zaXplfSlgXTogWy4uLnZhbC52YWx1ZXMoKV1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpICYmICFpc1BsYWluT2JqZWN0KHZhbCkpIHtcclxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsO1xyXG59O1xuXG5jb25zdCBFTVBUWV9PQkogPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgID8gT2JqZWN0LmZyZWV6ZSh7fSlcclxuICAgIDoge307XHJcbmNvbnN0IEVNUFRZX0FSUiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IE9iamVjdC5mcmVlemUoW10pIDogW107XHJcbmNvbnN0IE5PT1AgPSAoKSA9PiB7IH07XHJcbi8qKlxyXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxyXG4gKi9cclxuY29uc3QgTk8gPSAoKSA9PiBmYWxzZTtcclxuY29uc3Qgb25SRSA9IC9eb25bXmEtel0vO1xyXG5jb25zdCBpc09uID0gKGtleSkgPT4gb25SRS50ZXN0KGtleSk7XHJcbmNvbnN0IGlzTW9kZWxMaXN0ZW5lciA9IChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdvblVwZGF0ZTonKTtcclxuY29uc3QgZXh0ZW5kID0gT2JqZWN0LmFzc2lnbjtcclxuY29uc3QgcmVtb3ZlID0gKGFyciwgZWwpID0+IHtcclxuICAgIGNvbnN0IGkgPSBhcnIuaW5kZXhPZihlbCk7XHJcbiAgICBpZiAoaSA+IC0xKSB7XHJcbiAgICAgICAgYXJyLnNwbGljZShpLCAxKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xyXG5jb25zdCBoYXNPd24gPSAodmFsLCBrZXkpID0+IGhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpO1xyXG5jb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcclxuY29uc3QgaXNNYXAgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgTWFwXSc7XHJcbmNvbnN0IGlzU2V0ID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IFNldF0nO1xyXG5jb25zdCBpc0RhdGUgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xyXG5jb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcclxuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcclxuY29uc3QgaXNTeW1ib2wgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3ltYm9sJztcclxuY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XHJcbmNvbnN0IGlzUHJvbWlzZSA9ICh2YWwpID0+IHtcclxuICAgIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnRoZW4pICYmIGlzRnVuY3Rpb24odmFsLmNhdGNoKTtcclxufTtcclxuY29uc3Qgb2JqZWN0VG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xyXG5jb25zdCB0b1R5cGVTdHJpbmcgPSAodmFsdWUpID0+IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xyXG5jb25zdCB0b1Jhd1R5cGUgPSAodmFsdWUpID0+IHtcclxuICAgIC8vIGV4dHJhY3QgXCJSYXdUeXBlXCIgZnJvbSBzdHJpbmdzIGxpa2UgXCJbb2JqZWN0IFJhd1R5cGVdXCJcclxuICAgIHJldHVybiB0b1R5cGVTdHJpbmcodmFsdWUpLnNsaWNlKDgsIC0xKTtcclxufTtcclxuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBPYmplY3RdJztcclxuY29uc3QgaXNJbnRlZ2VyS2V5ID0gKGtleSkgPT4gaXNTdHJpbmcoa2V5KSAmJlxyXG4gICAga2V5ICE9PSAnTmFOJyAmJlxyXG4gICAga2V5WzBdICE9PSAnLScgJiZcclxuICAgICcnICsgcGFyc2VJbnQoa2V5LCAxMCkgPT09IGtleTtcclxuY29uc3QgaXNSZXNlcnZlZFByb3AgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoXHJcbi8vIHRoZSBsZWFkaW5nIGNvbW1hIGlzIGludGVudGlvbmFsIHNvIGVtcHR5IHN0cmluZyBcIlwiIGlzIGFsc28gaW5jbHVkZWRcclxuJyxrZXkscmVmLHJlZl9mb3IscmVmX2tleSwnICtcclxuICAgICdvblZub2RlQmVmb3JlTW91bnQsb25Wbm9kZU1vdW50ZWQsJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZVVwZGF0ZSxvblZub2RlVXBkYXRlZCwnICtcclxuICAgICdvblZub2RlQmVmb3JlVW5tb3VudCxvblZub2RlVW5tb3VudGVkJyk7XHJcbmNvbnN0IGlzQnVpbHRJbkRpcmVjdGl2ZSA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnYmluZCxjbG9hayxlbHNlLWlmLGVsc2UsZm9yLGh0bWwsaWYsbW9kZWwsb24sb25jZSxwcmUsc2hvdyxzbG90LHRleHQsbWVtbycpO1xyXG5jb25zdCBjYWNoZVN0cmluZ0Z1bmN0aW9uID0gKGZuKSA9PiB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKChzdHIpID0+IHtcclxuICAgICAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xyXG4gICAgICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IChjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpKTtcclxufSk7XHJcbmNvbnN0IGh5cGhlbmF0ZVJFID0gL1xcQihbQS1aXSkvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBoeXBoZW5hdGUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnLSQxJykudG9Mb3dlckNhc2UoKSk7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FwaXRhbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB0b0hhbmRsZXJLZXkgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ciA/IGBvbiR7Y2FwaXRhbGl6ZShzdHIpfWAgOiBgYCk7XHJcbi8vIGNvbXBhcmUgd2hldGhlciBhIHZhbHVlIGhhcyBjaGFuZ2VkLCBhY2NvdW50aW5nIGZvciBOYU4uXHJcbmNvbnN0IGhhc0NoYW5nZWQgPSAodmFsdWUsIG9sZFZhbHVlKSA9PiAhT2JqZWN0LmlzKHZhbHVlLCBvbGRWYWx1ZSk7XHJcbmNvbnN0IGludm9rZUFycmF5Rm5zID0gKGZucywgYXJnKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZuc1tpXShhcmcpO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBkZWYgPSAob2JqLCBrZXksIHZhbHVlKSA9PiB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCB0b051bWJlciA9ICh2YWwpID0+IHtcclxuICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KHZhbCk7XHJcbiAgICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuO1xyXG59O1xyXG5sZXQgX2dsb2JhbFRoaXM7XHJcbmNvbnN0IGdldEdsb2JhbFRoaXMgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gKF9nbG9iYWxUaGlzIHx8XHJcbiAgICAgICAgKF9nbG9iYWxUaGlzID1cclxuICAgICAgICAgICAgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICA/IGdsb2JhbFRoaXNcclxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHdpbmRvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdsb2JhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSkpO1xyXG59O1xyXG5jb25zdCBpZGVudFJFID0gL15bXyRhLXpBLVpcXHhBMC1cXHVGRkZGXVtfJGEtekEtWjAtOVxceEEwLVxcdUZGRkZdKiQvO1xyXG5mdW5jdGlvbiBnZW5Qcm9wc0FjY2Vzc0V4cChuYW1lKSB7XHJcbiAgICByZXR1cm4gaWRlbnRSRS50ZXN0KG5hbWUpXHJcbiAgICAgICAgPyBgX19wcm9wcy4ke25hbWV9YFxyXG4gICAgICAgIDogYF9fcHJvcHNbJHtKU09OLnN0cmluZ2lmeShuYW1lKX1dYDtcclxufVxuXG5leHBvcnQgeyBFTVBUWV9BUlIsIEVNUFRZX09CSiwgTk8sIE5PT1AsIFBhdGNoRmxhZ05hbWVzLCBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgZGVmLCBlc2NhcGVIdG1sLCBlc2NhcGVIdG1sQ29tbWVudCwgZXh0ZW5kLCBnZW5Qcm9wc0FjY2Vzc0V4cCwgZ2VuZXJhdGVDb2RlRnJhbWUsIGdldEdsb2JhbFRoaXMsIGhhc0NoYW5nZWQsIGhhc093biwgaHlwaGVuYXRlLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGludm9rZUFycmF5Rm5zLCBpc0FycmF5LCBpc0Jvb2xlYW5BdHRyLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNHbG9iYWxseVdoaXRlbGlzdGVkLCBpc0hUTUxUYWcsIGlzSW50ZWdlcktleSwgaXNLbm93bkh0bWxBdHRyLCBpc0tub3duU3ZnQXR0ciwgaXNNYXAsIGlzTW9kZWxMaXN0ZW5lciwgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wLCBpc09iamVjdCwgaXNPbiwgaXNQbGFpbk9iamVjdCwgaXNQcm9taXNlLCBpc1Jlc2VydmVkUHJvcCwgaXNTU1JTYWZlQXR0ck5hbWUsIGlzU1ZHVGFnLCBpc1NldCwgaXNTcGVjaWFsQm9vbGVhbkF0dHIsIGlzU3RyaW5nLCBpc1N5bWJvbCwgaXNWb2lkVGFnLCBsb29zZUVxdWFsLCBsb29zZUluZGV4T2YsIG1ha2VNYXAsIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVQcm9wcywgbm9ybWFsaXplU3R5bGUsIG9iamVjdFRvU3RyaW5nLCBwYXJzZVN0cmluZ1N0eWxlLCBwcm9wc1RvQXR0ck1hcCwgcmVtb3ZlLCBzbG90RmxhZ3NUZXh0LCBzdHJpbmdpZnlTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXksIHRvTnVtYmVyLCB0b1Jhd1R5cGUsIHRvVHlwZVN0cmluZyB9O1xuIiwiaW1wb3J0IHsgdG9SZWZzLCBnZXRDdXJyZW50SW5zdGFuY2UsIGN1c3RvbVJlZiwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG5leHRUaWNrLCBvbk1vdW50ZWQsIG9uQmVmb3JlVW5tb3VudCwgc2hhbGxvd1JlZiwgb3BlbkJsb2NrLCBjcmVhdGVFbGVtZW50QmxvY2ssIG5vcm1hbGl6ZUNsYXNzLCBjcmVhdGVFbGVtZW50Vk5vZGUsIG1lcmdlUHJvcHMsIGNyZWF0ZUNvbW1lbnRWTm9kZSwgd2l0aE1vZGlmaWVycywgRnJhZ21lbnQsIHJlbmRlckxpc3QsIHJlbmRlclNsb3QsIHdpdGhLZXlzLCB0b0Rpc3BsYXlTdHJpbmcsIGNyZWF0ZUJsb2NrLCBUZWxlcG9ydCB9IGZyb20gJ3Z1ZSc7XG5cbmZ1bmN0aW9uIGlzTnVsbGlzaCAodmFsKSB7XG4gIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gdXNlRGF0YSAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBvYmplY3QsIHZhbHVlUHJvcCwgbW9kZSB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXYgPSBkZXAuaXY7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCB1cGRhdGUgPSAodmFsLCB0cmlnZ2VySW5wdXQgPSB0cnVlKSA9PiB7XG4gICAgLy8gU2V0dGluZyBvYmplY3QocykgYXMgaW50ZXJuYWwgdmFsdWVcbiAgICBpdi52YWx1ZSA9IG1ha2VJbnRlcm5hbCh2YWwpO1xuXG4gICAgLy8gU2V0dGluZyBvYmplY3Qocykgb3IgcGxhaW4gdmFsdWUgYXMgZXh0ZXJuYWwgXG4gICAgLy8gdmFsdWUgYmFzZWQgb24gYG9wdGlvbmAgc2V0dGluZ1xuICAgIGNvbnN0IGV4dGVybmFsVmFsID0gbWFrZUV4dGVybmFsKHZhbCk7XG5cbiAgICBjb250ZXh0LmVtaXQoJ2NoYW5nZScsIGV4dGVybmFsVmFsLCAkdGhpcyk7XG5cbiAgICBpZiAodHJpZ2dlcklucHV0KSB7XG4gICAgICBjb250ZXh0LmVtaXQoJ2lucHV0JywgZXh0ZXJuYWxWYWwpO1xuICAgICAgY29udGV4dC5lbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGV4dGVybmFsVmFsKTtcbiAgICB9XG4gIH07IFxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBtYWtlRXh0ZXJuYWwgPSAodmFsKSA9PiB7XG4gICAgLy8gSWYgZXh0ZXJuYWwgdmFsdWUgc2hvdWxkIGJlIG9iamVjdFxuICAgIC8vIG5vIHRyYW5zZm9ybWF0aW9uIGlzIHJlcXVpcmVkXG4gICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIC8vIE5vIG5lZWQgdG8gdHJhbnNmb3JtIGlmIGVtcHR5IHZhbHVlXG4gICAgaWYgKGlzTnVsbGlzaCh2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gSWYgZXh0ZXJuYWwgc2hvdWxkIGJlIHBsYWluIHRyYW5zZm9ybVxuICAgIC8vIHZhbHVlIG9iamVjdCB0byBwbGFpbiB2YWx1ZXNcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSA/IHZhbFt2YWx1ZVByb3AudmFsdWVdIDogdmFsLm1hcCh2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbWFrZUludGVybmFsID0gKHZhbCkgPT4ge1xuICAgIGlmIChpc051bGxpc2godmFsKSkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8ge30gOiBbXVxuICAgIH1cblxuICAgIHJldHVybiB2YWxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHVwZGF0ZSxcbiAgfVxufVxuXG4vLyBQb2x5ZmlsbCBmb3IgVnVlIDwzLjMgZm9yIGdldHRlcnMgb25seVxuLy8gaHR0cHM6Ly92dWVqcy5vcmcvYXBpL3JlYWN0aXZpdHktdXRpbGl0aWVzLmh0bWwjdG9yZWZcbmZ1bmN0aW9uIHRvUmVmIChnZXQpIHtcbiAgICByZXR1cm4gY3VzdG9tUmVmKCgpID0+ICh7IGdldCwgc2V0OiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAoKSA9PiB7IH0gfSkpXG59XG5cbmZ1bmN0aW9uIHVzZVZhbHVlIChwcm9wcywgY29udGV4dClcbntcbiAgY29uc3QgeyB2YWx1ZSwgbW9kZWxWYWx1ZSwgbW9kZSwgdmFsdWVQcm9wIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgLy8gaW50ZXJuYWxWYWx1ZVxuICBjb25zdCBpdiA9IHJlZihtb2RlLnZhbHVlICE9PSAnc2luZ2xlJyA/IFtdIDoge30pO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXh0ZXJuYWxWYWx1ZVxuICBjb25zdCBldiA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZWxWYWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkID8gbW9kZWxWYWx1ZS52YWx1ZSA6IHZhbHVlLnZhbHVlXG4gIH0pO1xuXG4gIGNvbnN0IHBsYWluVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA6IGl2LnZhbHVlLm1hcCh2PT52W3ZhbHVlUHJvcC52YWx1ZV0pXG4gIH0pO1xuXG4gIGNvbnN0IHRleHRWYWx1ZSA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgPyBpdi52YWx1ZS5tYXAodj0+dlt2YWx1ZVByb3AudmFsdWVdKS5qb2luKCcsJykgOiBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaXYsXG4gICAgaW50ZXJuYWxWYWx1ZTogaXYsXG4gICAgZXYsXG4gICAgZXh0ZXJuYWxWYWx1ZTogZXYsXG4gICAgdGV4dFZhbHVlLFxuICAgIHBsYWluVmFsdWUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlU2VhcmNoIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHJlZ2V4IH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBzZWFyY2ggPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBjbGVhclNlYXJjaCA9ICgpID0+IHtcbiAgICBzZWFyY2gudmFsdWUgPSAnJztcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hJbnB1dCA9IChlKSA9PiB7XG4gICAgc2VhcmNoLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5cHJlc3MgPSAoZSkgPT4ge1xuICAgIGlmIChyZWdleC52YWx1ZSkge1xuICAgICAgbGV0IHJlZ2V4cCA9IHJlZ2V4LnZhbHVlO1xuXG4gICAgICBpZiAodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWUua2V5Lm1hdGNoKHJlZ2V4cCkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVQYXN0ZSA9IChlKSA9PiB7XG4gICAgaWYgKHJlZ2V4LnZhbHVlKSB7XG4gICAgICBsZXQgY2xpcGJvYXJkRGF0YSA9IGUuY2xpcGJvYXJkRGF0YSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB3aW5kb3cuY2xpcGJvYXJkRGF0YTtcbiAgICAgIGxldCBwYXN0ZWREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG5cbiAgICAgIGxldCByZWdleHAgPSByZWdleC52YWx1ZTtcblxuICAgICAgaWYgKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKCFwYXN0ZWREYXRhLnNwbGl0KCcnKS5ldmVyeShjID0+ICEhYy5tYXRjaChyZWdleHApKSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdwYXN0ZScsIGUsICR0aGlzKTtcbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKHNlYXJjaCwgKHZhbCkgPT4ge1xuICAgIGlmICghaXNPcGVuLnZhbHVlICYmIHZhbCkge1xuICAgICAgb3BlbigpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnc2VhcmNoLWNoYW5nZScsIHZhbCwgJHRoaXMpO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHNlYXJjaCxcbiAgICBjbGVhclNlYXJjaCxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dCxcbiAgICBoYW5kbGVLZXlwcmVzcyxcbiAgICBoYW5kbGVQYXN0ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyJDEgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgZ3JvdXBTZWxlY3QsIG1vZGUsIGdyb3VwcywgZGlzYWJsZWRQcm9wIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgcG9pbnRlciA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHNldFBvaW50ZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbiA9PT0gdW5kZWZpbmVkIHx8IChvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uW2Rpc2FibGVkUHJvcC52YWx1ZV0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXBzLnZhbHVlICYmIG9wdGlvbiAmJiBvcHRpb24uZ3JvdXAgJiYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnIHx8ICFncm91cFNlbGVjdC52YWx1ZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHBvaW50ZXIudmFsdWUgPSBvcHRpb247XG4gIH07XG5cbiAgY29uc3QgY2xlYXJQb2ludGVyID0gKCkgPT4ge1xuICAgIHNldFBvaW50ZXIobnVsbCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBwb2ludGVyLFxuICAgIHNldFBvaW50ZXIsXG4gICAgY2xlYXJQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSAoc3RyLCBzdHJpY3QgPSB0cnVlKSB7XG4gIHJldHVybiBzdHJpY3RcbiAgICA/IFN0cmluZyhzdHIpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gICAgOiBTdHJpbmcoc3RyKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL8OmL2csICdhZScpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/Fky9nLCAnb2UnKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvw7gvZywgJ28nKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxwe0RpYWNyaXRpY30vZ3UsICcnKVxufVxuXG5mdW5jdGlvbiBpc09iamVjdCAodmFyaWFibGUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YXJpYWJsZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsIChhcnJheTEsIGFycmF5Mikge1xuICBpZiAoYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgY29uc3QgYXJyYXkyU29ydGVkID0gYXJyYXkyLnNsaWNlKCkuc29ydCgpO1xuXG4gIHJldHVybiBhcnJheTEuc2xpY2UoKS5zb3J0KCkuZXZlcnkoZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IGFycmF5MlNvcnRlZFtpbmRleF07XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHVzZU9wdGlvbnMgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgXG4gICAgb3B0aW9ucywgbW9kZSwgdHJhY2tCeTogdHJhY2tCeV8sIGxpbWl0LCBoaWRlU2VsZWN0ZWQsIGNyZWF0ZVRhZywgY3JlYXRlT3B0aW9uOiBjcmVhdGVPcHRpb25fLCBsYWJlbCxcbiAgICBhcHBlbmROZXdUYWcsIGFwcGVuZE5ld09wdGlvbjogYXBwZW5kTmV3T3B0aW9uXywgbXVsdGlwbGVMYWJlbCwgb2JqZWN0LCBsb2FkaW5nLCBkZWxheSwgcmVzb2x2ZU9uTG9hZCxcbiAgICBtaW5DaGFycywgZmlsdGVyUmVzdWx0cywgY2xlYXJPblNlYXJjaCwgY2xlYXJPblNlbGVjdCwgdmFsdWVQcm9wLCBhbGxvd0Fic2VudCwgZ3JvdXBMYWJlbCxcbiAgICBjYW5EZXNlbGVjdCwgbWF4LCBzdHJpY3QsIGNsb3NlT25TZWxlY3QsIGNsb3NlT25EZXNlbGVjdCwgZ3JvdXBzOiBncm91cHBlZCwgcmV2ZXJzZSwgaW5maW5pdGUsXG4gICAgZ3JvdXBPcHRpb25zLCBncm91cEhpZGVFbXB0eSwgZ3JvdXBTZWxlY3QsIG9uQ3JlYXRlLCBkaXNhYmxlZFByb3AsIHNlYXJjaFN0YXJ0LCBzZWFyY2hGaWx0ZXIsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcbiAgY29uc3QgZXYgPSBkZXAuZXY7XG4gIGNvbnN0IHNlYXJjaCA9IGRlcC5zZWFyY2g7XG4gIGNvbnN0IGNsZWFyU2VhcmNoID0gZGVwLmNsZWFyU2VhcmNoO1xuICBjb25zdCB1cGRhdGUgPSBkZXAudXBkYXRlO1xuICBjb25zdCBwb2ludGVyID0gZGVwLnBvaW50ZXI7XG4gIGNvbnN0IHNldFBvaW50ZXIgPSBkZXAuc2V0UG9pbnRlcjtcbiAgY29uc3QgY2xlYXJQb2ludGVyID0gZGVwLmNsZWFyUG9pbnRlcjtcbiAgY29uc3QgZm9jdXMgPSBkZXAuZm9jdXM7XG4gIGNvbnN0IGRlYWN0aXZhdGUgPSBkZXAuZGVhY3RpdmF0ZTtcbiAgY29uc3QgY2xvc2UgPSBkZXAuY2xvc2U7XG4gIGNvbnN0IGxvY2FsaXplID0gZGVwLmxvY2FsaXplO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGFwcGVuZGVkT3B0aW9uc1xuICBjb25zdCBhcCA9IHJlZihbXSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIHJlc29sdmVkT3B0aW9uc1xuICBjb25zdCBybyA9IHJlZihbXSk7XG5cbiAgY29uc3QgcmVzb2x2aW5nID0gcmVmKGZhbHNlKTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgc2VhcmNoV2F0Y2hlciA9IHJlZihudWxsKTtcblxuICBjb25zdCBvZmZzZXQgPSByZWYoaW5maW5pdGUudmFsdWUgJiYgbGltaXQudmFsdWUgPT09IC0xID8gMTAgOiBsaW1pdC52YWx1ZSk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBjb21wdXRlZCh7XG4gICAgZ2V0OiAoKSA9PiByby52YWx1ZSxcbiAgICBzZXQ6ICh2KSA9PiByby52YWx1ZSA9IHZcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGNyZWF0ZU9wdGlvbiA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlVGFnLnZhbHVlIHx8IGNyZWF0ZU9wdGlvbl8udmFsdWUgfHwgZmFsc2VcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFwcGVuZE5ld09wdGlvbiA9IHRvUmVmKCgpID0+IHtcbiAgICBpZiAoYXBwZW5kTmV3VGFnLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcHBlbmROZXdUYWcudmFsdWVcbiAgICB9IGVsc2UgaWYgKGFwcGVuZE5ld09wdGlvbl8udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFwcGVuZE5ld09wdGlvbl8udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgLy8gZXh0ZW5kZWRPcHRpb25zXG4gIGNvbnN0IGVvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChncm91cHBlZC52YWx1ZSkge1xuICAgICAgbGV0IGdyb3VwcyA9IGVnLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdO1xuXG4gICAgICBsZXQgZW8gPSBbXTtcblxuICAgICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIG9wdGlvbnNUb0FycmF5KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGVvLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uLCBncm91cFtkaXNhYmxlZFByb3AudmFsdWVdID8geyBbZGlzYWJsZWRQcm9wLnZhbHVlXTogdHJ1ZSB9IDoge30pKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGVvXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbyA9IG9wdGlvbnNUb0FycmF5KHJvLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdKTtcblxuICAgICAgaWYgKGFwLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICBlbyA9IGVvLmNvbmNhdChhcC52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlb1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gcHJlRmlsdGVyZWRPcHRpb25zXG4gIGNvbnN0IHBmbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgb3B0aW9ucyA9IGVvLnZhbHVlO1xuXG4gICAgaWYgKHJldmVyc2UudmFsdWUpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlZE9wdGlvbi52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIG9wdGlvbnMgPSBjcmVhdGVkT3B0aW9uLnZhbHVlLmNvbmNhdChvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyT3B0aW9ucyhvcHRpb25zKVxuICB9KTtcblxuICAvLyBmaWx0ZXJlZE9wdGlvbnNcbiAgY29uc3QgZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IG9wdGlvbnMgPSBwZm8udmFsdWU7XG5cbiAgICBpZiAob2Zmc2V0LnZhbHVlID4gMCkge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuc2xpY2UoMCwgb2Zmc2V0LnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uc1xuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgLy8gZXh0ZW5kZWRHcm91cHNcbiAgY29uc3QgZWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFncm91cHBlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgbGV0IGVnID0gW107XG4gICAgbGV0IGdyb3VwcyA9IHJvLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdO1xuXG4gICAgaWYgKGFwLnZhbHVlLmxlbmd0aCkge1xuICAgICAgZWcucHVzaCh7XG4gICAgICAgIFtncm91cExhYmVsLnZhbHVlXTogJyAnLFxuICAgICAgICBbZ3JvdXBPcHRpb25zLnZhbHVlXTogWy4uLmFwLnZhbHVlXSxcbiAgICAgICAgX19DUkVBVEVfXzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVnLmNvbmNhdChncm91cHMpXG4gIH0pO1xuXG4gIC8vIHByZUZpbHRlcmVkR3JvdXBzXG4gIGNvbnN0IHBmZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgZ3JvdXBzID0gWy4uLmVnLnZhbHVlXS5tYXAoZyA9PiAoey4uLmd9KSk7XG5cbiAgICBpZiAoY3JlYXRlZE9wdGlvbi52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGlmIChncm91cHNbMF0gJiYgZ3JvdXBzWzBdLl9fQ1JFQVRFX18pIHtcbiAgICAgICAgZ3JvdXBzWzBdW2dyb3VwT3B0aW9ucy52YWx1ZV0gPSBbLi4uY3JlYXRlZE9wdGlvbi52YWx1ZSwgLi4uZ3JvdXBzWzBdW2dyb3VwT3B0aW9ucy52YWx1ZV1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBzID0gW3tcbiAgICAgICAgICBbZ3JvdXBMYWJlbC52YWx1ZV06ICcgJyxcbiAgICAgICAgICBbZ3JvdXBPcHRpb25zLnZhbHVlXTogWy4uLmNyZWF0ZWRPcHRpb24udmFsdWVdLFxuICAgICAgICAgIF9fQ1JFQVRFX186IHRydWVcbiAgICAgICAgfV0uY29uY2F0KGdyb3Vwcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3Vwc1xuICB9KTtcblxuICAvLyBmaWx0ZXJlZEdyb3Vwc1xuICBjb25zdCBmZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIWdyb3VwcGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBsZXQgb3B0aW9ucyA9IHBmZy52YWx1ZTtcblxuICAgIHJldHVybiBmaWx0ZXJHcm91cHMoKG9wdGlvbnMgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gW10pLm1hcCgoZ3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBhcnJheU9wdGlvbnMgPSBvcHRpb25zVG9BcnJheShncm91cFtncm91cE9wdGlvbnMudmFsdWVdKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBncm91cDogdHJ1ZSxcbiAgICAgICAgW2dyb3VwT3B0aW9ucy52YWx1ZV06IGZpbHRlck9wdGlvbnMoYXJyYXlPcHRpb25zLCBmYWxzZSkubWFwKG8gPT4gT2JqZWN0LmFzc2lnbih7fSwgbywgZ3JvdXBbZGlzYWJsZWRQcm9wLnZhbHVlXSA/IHsgW2Rpc2FibGVkUHJvcC52YWx1ZV06IHRydWUgfSA6IHt9KSksXG4gICAgICAgIF9fVklTSUJMRV9fOiBmaWx0ZXJPcHRpb25zKGFycmF5T3B0aW9ucykubWFwKG8gPT4gT2JqZWN0LmFzc2lnbih7fSwgbywgZ3JvdXBbZGlzYWJsZWRQcm9wLnZhbHVlXSA/IHsgW2Rpc2FibGVkUHJvcC52YWx1ZV06IHRydWUgfSA6IHt9KSksXG4gICAgICB9XG4gICAgICAvLyBEaWZmZXJlbmNlIGJldHdlZW4gX19WSVNJQkxFX18gYW5kIHtncm91cE9wdGlvbnN9OiB2aXNpYmxlIGRvZXMgbm90IGNvbnRhaW4gc2VsZWN0ZWQgb3B0aW9ucyB3aGVuIGhpZGVTZWxlY3RlZD10cnVlXG4gICAgfSkpXG4gIH0pO1xuXG4gIGNvbnN0IGhhc1NlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgcmV0dXJuICFpc051bGxpc2goaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSlcblxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZS5sZW5ndGggPiAwXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBtdWx0aXBsZUxhYmVsVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbXVsdGlwbGVMYWJlbC52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IG11bHRpcGxlTGFiZWwudmFsdWUoaXYudmFsdWUsICR0aGlzKVxuICAgICAgOiAoaXYudmFsdWUgJiYgaXYudmFsdWUubGVuZ3RoID4gMSA/IGAke2l2LnZhbHVlLmxlbmd0aH0gb3B0aW9ucyBzZWxlY3RlZGAgOiBgMSBvcHRpb24gc2VsZWN0ZWRgKVxuICB9KTtcblxuICBjb25zdCBub09wdGlvbnMgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuICFlby52YWx1ZS5sZW5ndGggJiYgIXJlc29sdmluZy52YWx1ZSAmJiAhY3JlYXRlZE9wdGlvbi52YWx1ZS5sZW5ndGhcbiAgfSk7XG5cblxuICBjb25zdCBub1Jlc3VsdHMgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIGVvLnZhbHVlLmxlbmd0aCA+IDAgJiYgZm8udmFsdWUubGVuZ3RoID09IDAgJiYgKChzZWFyY2gudmFsdWUgJiYgZ3JvdXBwZWQudmFsdWUpIHx8ICFncm91cHBlZC52YWx1ZSlcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGNyZWF0ZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGNyZWF0ZU9wdGlvbi52YWx1ZSA9PT0gZmFsc2UgfHwgIXNlYXJjaC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgaWYgKGdldE9wdGlvbkJ5VHJhY2tCeShzZWFyY2gudmFsdWUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIFt7XG4gICAgICBbdmFsdWVQcm9wLnZhbHVlXTogc2VhcmNoLnZhbHVlLFxuICAgICAgW3RyYWNrQnkudmFsdWVbMF1dOiBzZWFyY2gudmFsdWUsXG4gICAgICBbbGFiZWwudmFsdWVdOiBzZWFyY2gudmFsdWUsXG4gICAgICBfX0NSRUFURV9fOiB0cnVlLFxuICAgIH1dXG4gIH0pO1xuXG4gIGNvbnN0IHRyYWNrQnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRyYWNrQnlfLnZhbHVlID8gKEFycmF5LmlzQXJyYXkodHJhY2tCeV8udmFsdWUpID8gdHJhY2tCeV8udmFsdWUgOiBbdHJhY2tCeV8udmFsdWVdKSA6IFtsYWJlbC52YWx1ZV1cbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG51bGxWYWx1ZSA9IHRvUmVmKCgpID0+IHtcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiBudWxsXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGJ1c3kgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIGxvYWRpbmcudmFsdWUgfHwgcmVzb2x2aW5nLnZhbHVlXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YXJyYXl8b2JqZWN0fHN0cmluZ3xudW1iZXJ9IG9wdGlvbiBcbiAgICovXG4gIGNvbnN0IHNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbiA9IGdldE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgdXBkYXRlKG9wdGlvbik7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICB1cGRhdGUoKGl2LnZhbHVlKS5jb25jYXQob3B0aW9uKSk7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdzZWxlY3QnLCBmaW5hbFZhbHVlKG9wdGlvbiksIG9wdGlvbiwgJHRoaXMpO1xuICB9O1xuXG4gIGNvbnN0IGRlc2VsZWN0ID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9uID0gZ2V0T3B0aW9uKG9wdGlvbik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBjbGVhcigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgdXBkYXRlKEFycmF5LmlzQXJyYXkob3B0aW9uKVxuICAgICAgICAgID8gaXYudmFsdWUuZmlsdGVyKHYgPT4gb3B0aW9uLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZih2W3ZhbHVlUHJvcC52YWx1ZV0pID09PSAtMSlcbiAgICAgICAgICA6IGl2LnZhbHVlLmZpbHRlcih2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSAhPSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkpO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnZGVzZWxlY3QnLCBmaW5hbFZhbHVlKG9wdGlvbiksIG9wdGlvbiwgJHRoaXMpO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaW5hbFZhbHVlID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBvYmplY3QudmFsdWUgPyBvcHRpb24gOiBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZSA9IChvcHRpb24pID0+IHtcbiAgICBkZXNlbGVjdChvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9IChvcHRpb24sIGUpID0+IHtcbiAgICBpZiAoZS5idXR0b24gIT09IDApIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlbW92ZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIHVwZGF0ZShudWxsVmFsdWUudmFsdWUpO1xuICAgIGNvbnRleHQuZW1pdCgnY2xlYXInLCAkdGhpcyk7XG4gIH07XG5cbiAgY29uc3QgaXNTZWxlY3RlZCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uLmdyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGZhbHNlIDogYXJlQWxsU2VsZWN0ZWQob3B0aW9uW2dyb3VwT3B0aW9ucy52YWx1ZV0pICYmIG9wdGlvbltncm91cE9wdGlvbnMudmFsdWVdLmxlbmd0aFxuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgcmV0dXJuICFpc051bGxpc2goaXYudmFsdWUpICYmIGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gPT0gb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV1cblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pICE9PSAtMVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpc0Rpc2FibGVkID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBvcHRpb25bZGlzYWJsZWRQcm9wLnZhbHVlXSA9PT0gdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGlzTWF4ID0gKCkgPT4ge1xuICAgIGlmIChtYXggPT09IHVuZGVmaW5lZCB8fCBtYXgudmFsdWUgPT09IC0xIHx8ICghaGFzU2VsZWN0ZWQudmFsdWUgJiYgbWF4LnZhbHVlID4gMCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gaXYudmFsdWUubGVuZ3RoID49IG1heC52YWx1ZVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvbkNsaWNrID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChvbkNyZWF0ZS52YWx1ZSAmJiAhaXNTZWxlY3RlZChvcHRpb24pICYmIG9wdGlvbi5fX0NSRUFURV9fKSB7XG4gICAgICBvcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgZGVsZXRlIG9wdGlvbi5fX0NSRUFURV9fO1xuXG4gICAgICBvcHRpb24gPSBvbkNyZWF0ZS52YWx1ZShvcHRpb24sICR0aGlzKTtcbiAgICAgIFxuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgb3B0aW9uLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIGhhbmRsZU9wdGlvblNlbGVjdChyZXN1bHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm5cbiAgICAgIH0gXG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3B0aW9uU2VsZWN0ID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24uX19DUkVBVEVfXykge1xuICAgICAgb3B0aW9uID0geyAuLi5vcHRpb24gfTtcbiAgICAgIGRlbGV0ZSBvcHRpb24uX19DUkVBVEVfXztcbiAgICB9XG4gICAgXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBpZiAob3B0aW9uICYmIGlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIGlmIChjYW5EZXNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xvc2VPbkRlc2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBkZXNlbGVjdChvcHRpb24pO1xuXG4gICAgICAgICAgaWYgKGNsb3NlT25EZXNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01heCgpKSB7XG4gICAgICAgICAgY29udGV4dC5lbWl0KCdtYXgnLCAkdGhpcyk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlT3B0aW9uQXBwZW5kKG9wdGlvbik7XG4gICAgICAgICAgc2VsZWN0KG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xlYXJPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGlkZVNlbGVjdGVkLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcblxuICAgICAgICAgIGlmIChjbG9zZU9uRGVzZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNYXgoKSkge1xuICAgICAgICAgIGNvbnRleHQuZW1pdCgnbWF4JywgJHRoaXMpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKCFjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICBmb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVHcm91cENsaWNrID0gKGdyb3VwKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQoZ3JvdXApIHx8IG1vZGUudmFsdWUgPT09ICdzaW5nbGUnIHx8ICFncm91cFNlbGVjdC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgaWYgKGFyZUFsbEVuYWJsZWRTZWxlY3RlZChncm91cFtncm91cE9wdGlvbnMudmFsdWVdKSkge1xuICAgICAgICAgIGRlc2VsZWN0KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdChncm91cFtncm91cE9wdGlvbnMudmFsdWVdXG4gICAgICAgICAgICAuZmlsdGVyKG8gPT4gaXYudmFsdWUubWFwKHYgPT4gdlt2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKG9bdmFsdWVQcm9wLnZhbHVlXSkgPT09IC0xKVxuICAgICAgICAgICAgLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXG4gICAgICAgICAgICAuZmlsdGVyKChvLCBrKSA9PiBpdi52YWx1ZS5sZW5ndGggKyAxICsgayA8PSBtYXgudmFsdWUgfHwgbWF4LnZhbHVlID09PSAtMSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSAmJiBwb2ludGVyLnZhbHVlKSB7XG4gICAgICAgICAgLy8gUmVmcmVzaCBwb2ludGVyIGJlY2F1c2UgcG9pbnRlci5fX1ZJU0lCTEVfXyBhcmUgbm90IHJlYWN0aXZlICMzNTRcbiAgICAgICAgICBzZXRQb2ludGVyKGZnLnZhbHVlLmZpbHRlcihnID0+ICFnW2Rpc2FibGVkUHJvcC52YWx1ZV0pW3BvaW50ZXIudmFsdWUuaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICBkZWFjdGl2YXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvbkFwcGVuZCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAoZ2V0T3B0aW9uKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSA9PT0gdW5kZWZpbmVkICYmIGNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgY29udGV4dC5lbWl0KCd0YWcnLCBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSwgJHRoaXMpO1xuICAgICAgY29udGV4dC5lbWl0KCdvcHRpb24nLCBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSwgJHRoaXMpO1xuICAgICAgY29udGV4dC5lbWl0KCdjcmVhdGUnLCBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSwgJHRoaXMpO1xuXG4gICAgICBpZiAoYXBwZW5kTmV3T3B0aW9uLnZhbHVlKSB7XG4gICAgICAgIGFwcGVuZE9wdGlvbihvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjbGVhclNlYXJjaCgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZWxlY3QoZm8udmFsdWUuZmlsdGVyKG8gPT4gIW8uZGlzYWJsZWQgJiYgIWlzU2VsZWN0ZWQobykpKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYXJlQWxsRW5hYmxlZFNlbGVjdGVkID0gKG9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKG8gPT4gIWlzU2VsZWN0ZWQobykgJiYgIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSkgPT09IHVuZGVmaW5lZFxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcmVBbGxTZWxlY3RlZCA9IChvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZmluZChvID0+ICFpc1NlbGVjdGVkKG8pKSA9PT0gdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3QgZ2V0T3B0aW9uID0gKHZhbCkgPT4ge1xuICAgIHJldHVybiBlby52YWx1ZVtlby52YWx1ZS5tYXAobyA9PiBTdHJpbmcob1t2YWx1ZVByb3AudmFsdWVdKSkuaW5kZXhPZihTdHJpbmcodmFsKSldXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGdldE9wdGlvbkJ5VHJhY2tCeSA9ICh2YWwpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWUuZmluZEluZGV4KChvKSA9PiB7XG4gICAgICByZXR1cm4gdHJhY2tCeS52YWx1ZS5zb21lKCh0cmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gKHBhcnNlSW50KG9bdHJhY2tdKSA9PSBvW3RyYWNrXSA/IHBhcnNlSW50KG9bdHJhY2tdKSA6IG9bdHJhY2tdKSA9PT0gKHBhcnNlSW50KHZhbCkgPT0gdmFsID8gcGFyc2VJbnQodmFsKSA6IHZhbClcbiAgICAgIH0pXG4gICAgfSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgc2hvdWxkSGlkZU9wdGlvbiA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gWyd0YWdzJywgJ211bHRpcGxlJ10uaW5kZXhPZihtb2RlLnZhbHVlKSAhPT0gLTEgJiYgaGlkZVNlbGVjdGVkLnZhbHVlICYmIGlzU2VsZWN0ZWQob3B0aW9uKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmRPcHRpb24gPSAob3B0aW9uKSA9PiB7XG4gICAgYXAudmFsdWUucHVzaChvcHRpb24pO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJHcm91cHMgPSAoZ3JvdXBzKSA9PiB7XG4gICAgLy8gSWYgdGhlIHNlYXJjaCBoYXMgdmFsdWUgd2UgbmVlZCB0byBmaWx0ZXIgYW1vbmcgXG4gICAgLy8gdGhlIG9uZXMgdGhhdCBhcmUgdmlzaWJsZSB0byB0aGUgdXNlciB0byBhdm9pZFxuICAgIC8vIGRpc3BsYXlpbmcgZ3JvdXBzIHdoaWNoIHRlY2huaWNhbGx5IGhhdmUgb3B0aW9uc1xuICAgIC8vIGJhc2VkIG9uIHNlYXJjaCBidXQgdGhhdCBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZC5cbiAgICByZXR1cm4gZ3JvdXBIaWRlRW1wdHkudmFsdWVcbiAgICAgID8gZ3JvdXBzLmZpbHRlcihnID0+IHNlYXJjaC52YWx1ZVxuICAgICAgICAgID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGhcbiAgICAgICAgICA6IGdbZ3JvdXBPcHRpb25zLnZhbHVlXS5sZW5ndGhcbiAgICAgICAgKVxuICAgICAgOiBncm91cHMuZmlsdGVyKGcgPT4gc2VhcmNoLnZhbHVlID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGggOiB0cnVlKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJPcHRpb25zID0gKG9wdGlvbnMsIGV4Y2x1ZGVIaWRlU2VsZWN0ZWQgPSB0cnVlKSA9PiB7XG4gICAgbGV0IGZvID0gb3B0aW9ucztcbiAgICBcbiAgICBpZiAoc2VhcmNoLnZhbHVlICYmIGZpbHRlclJlc3VsdHMudmFsdWUpIHtcbiAgICAgIGxldCBmaWx0ZXIgPSBzZWFyY2hGaWx0ZXIudmFsdWU7XG5cbiAgICAgIGlmICghZmlsdGVyKSB7XG4gICAgICAgIGZpbHRlciA9IChvcHRpb24sIHF1ZXJ5LCAkdGhpcykgPT4ge1xuICAgICAgICAgIHJldHVybiB0cmFja0J5LnZhbHVlLnNvbWUodHJhY2sgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IG5vcm1hbGl6ZShsb2NhbGl6ZShvcHRpb25bdHJhY2tdKSwgc3RyaWN0LnZhbHVlKTtcblxuICAgICAgICAgICAgcmV0dXJuIHNlYXJjaFN0YXJ0LnZhbHVlXG4gICAgICAgICAgICAgICAgPyB0YXJnZXQuc3RhcnRzV2l0aChub3JtYWxpemUocXVlcnksIHN0cmljdC52YWx1ZSkpXG4gICAgICAgICAgICAgICAgOiB0YXJnZXQuaW5kZXhPZihub3JtYWxpemUocXVlcnksIHN0cmljdC52YWx1ZSkpICE9PSAtMTtcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBmbyA9IGZvLmZpbHRlcigobykgPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVyKG8sIHNlYXJjaC52YWx1ZSwgJHRoaXMpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaGlkZVNlbGVjdGVkLnZhbHVlICYmIGV4Y2x1ZGVIaWRlU2VsZWN0ZWQpIHtcbiAgICAgIGZvID0gZm8uZmlsdGVyKChvcHRpb24pID0+ICFzaG91bGRIaWRlT3B0aW9uKG9wdGlvbikpO1xuICAgIH1cblxuICAgIHJldHVybiBmb1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBvcHRpb25zVG9BcnJheSA9IChvcHRpb25zKSA9PiB7XG4gICAgbGV0IHVvID0gb3B0aW9ucztcbiAgICBcbiAgICAvLyBUcmFuc2Zvcm1pbmcgYW4gb2JqZWN0IHRvIGFuIGFycmF5IG9mIG9iamVjdHNcbiAgICBpZiAoaXNPYmplY3QodW8pKSB7XG4gICAgICB1byA9IE9iamVjdC5rZXlzKHVvKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICBsZXQgdmFsID0gdW9ba2V5XTtcblxuICAgICAgICByZXR1cm4geyBbdmFsdWVQcm9wLnZhbHVlXToga2V5LCBbdHJhY2tCeS52YWx1ZVswXV06IHZhbCwgW2xhYmVsLnZhbHVlXTogdmFsfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVHJhbnNmb3JtaW5nIGFuIHBsYWluIGFycmF5cyB0byBhbiBhcnJheSBvZiBvYmplY3RzXG4gICAgdW8gPSB1by5tYXAoKHZhbCkgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnID8gdmFsIDogeyBbdmFsdWVQcm9wLnZhbHVlXTogdmFsLCBbdHJhY2tCeS52YWx1ZVswXV06IHZhbCwgW2xhYmVsLnZhbHVlXTogdmFsfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVvXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGluaXRJbnRlcm5hbFZhbHVlID0gKCkgPT4ge1xuICAgIGlmICghaXNOdWxsaXNoKGV2LnZhbHVlKSkge1xuICAgICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwoZXYudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZXNvbHZlT3B0aW9ucyA9IChjYWxsYmFjaykgPT4ge1xuICAgIHJlc29sdmluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgb3B0aW9ucy52YWx1ZShzZWFyY2gudmFsdWUsICR0aGlzKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByby52YWx1ZSA9IHJlc3BvbnNlIHx8IFtdO1xuXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcblxuICAgICAgICByby52YWx1ZSA9IFtdO1xuXG4gICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHJlZnJlc2hMYWJlbHMgPSAoKSA9PiB7XG4gICAgaWYgKCFoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBsZXQgb3B0aW9uID0gZ2V0T3B0aW9uKGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBuZXdMYWJlbCA9IG9wdGlvbltsYWJlbC52YWx1ZV07XG5cbiAgICAgICAgaXYudmFsdWVbbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG5cbiAgICAgICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgICAgIGV2LnZhbHVlW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl2LnZhbHVlLmZvckVhY2goKHZhbCwgaSkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9uID0gZ2V0T3B0aW9uKGl2LnZhbHVlW2ldW3ZhbHVlUHJvcC52YWx1ZV0pO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChvcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxldCBuZXdMYWJlbCA9IG9wdGlvbltsYWJlbC52YWx1ZV07XG5cbiAgICAgICAgICBpdi52YWx1ZVtpXVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcblxuICAgICAgICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGV2LnZhbHVlW2ldW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnJlc2hPcHRpb25zID0gKGNhbGxiYWNrKSA9PiB7XG4gICAgcmVzb2x2ZU9wdGlvbnMoY2FsbGJhY2spO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBtYWtlSW50ZXJuYWwgPSAodmFsKSA9PiB7XG4gICAgaWYgKGlzTnVsbGlzaCh2YWwpKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyB7fSA6IFtdXG4gICAgfVxuXG4gICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIC8vIElmIGV4dGVybmFsIHNob3VsZCBiZSBwbGFpbiB0cmFuc2Zvcm0gdmFsdWUgb2JqZWN0IHRvIHBsYWluIHZhbHVlc1xuICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGdldE9wdGlvbih2YWwpIHx8IChhbGxvd0Fic2VudC52YWx1ZSA/IHtcbiAgICAgIFtsYWJlbC52YWx1ZV06IHZhbCxcbiAgICAgIFt2YWx1ZVByb3AudmFsdWVdOiB2YWwsXG4gICAgICBbdHJhY2tCeS52YWx1ZVswXV06IHZhbCxcbiAgICB9IDoge30pIDogdmFsLmZpbHRlcih2ID0+ICEhZ2V0T3B0aW9uKHYpIHx8IGFsbG93QWJzZW50LnZhbHVlKS5tYXAodiA9PiBnZXRPcHRpb24odikgfHwge1xuICAgICAgW2xhYmVsLnZhbHVlXTogdixcbiAgICAgIFt2YWx1ZVByb3AudmFsdWVdOiB2LFxuICAgICAgW3RyYWNrQnkudmFsdWVbMF1dOiB2LFxuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGluaXRTZWFyY2hXYXRjaGVyID0gKCkgPT4ge1xuICAgIHNlYXJjaFdhdGNoZXIudmFsdWUgPSB3YXRjaChzZWFyY2gsIChxdWVyeSkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA8IG1pbkNoYXJzLnZhbHVlIHx8ICghcXVlcnkgJiYgbWluQ2hhcnMudmFsdWUgIT09IDApKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXNvbHZpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICBpZiAoY2xlYXJPblNlYXJjaC52YWx1ZSkge1xuICAgICAgICByby52YWx1ZSA9IFtdO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSAhPSBzZWFyY2gudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIG9wdGlvbnMudmFsdWUoc2VhcmNoLnZhbHVlLCAkdGhpcykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocXVlcnkgPT0gc2VhcmNoLnZhbHVlIHx8ICFzZWFyY2gudmFsdWUpIHtcbiAgICAgICAgICAgIHJvLnZhbHVlID0gcmVzcG9uc2U7XG4gICAgICAgICAgICBwb2ludGVyLnZhbHVlID0gZm8udmFsdWUuZmlsdGVyKG8gPT4gb1tkaXNhYmxlZFByb3AudmFsdWVdICE9PSB0cnVlKVswXSB8fCBudWxsO1xuICAgICAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCggLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGRlbGF5LnZhbHVlKTtcblxuICAgIH0sIHsgZmx1c2g6ICdzeW5jJyB9KTtcbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PT09IEhPT0tTID09PT09PT09PT09PT09PVxuXG4gIGlmIChtb2RlLnZhbHVlICE9PSAnc2luZ2xlJyAmJiAhaXNOdWxsaXNoKGV2LnZhbHVlKSAmJiAhQXJyYXkuaXNBcnJheShldi52YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHYtbW9kZWwgbXVzdCBiZSBhbiBhcnJheSB3aGVuIHVzaW5nIFwiJHttb2RlLnZhbHVlfVwiIG1vZGVgKVxuICB9XG5cbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMudmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChyZXNvbHZlT25Mb2FkLnZhbHVlKSB7XG4gICAgICByZXNvbHZlT3B0aW9ucyhpbml0SW50ZXJuYWxWYWx1ZSk7XG4gICAgfSBlbHNlIGlmIChvYmplY3QudmFsdWUgPT0gdHJ1ZSkge1xuICAgICAgaW5pdEludGVybmFsVmFsdWUoKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgcm8udmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuXG4gICAgaW5pdEludGVybmFsVmFsdWUoKTtcbiAgfVxuICBcbiAgLy8gPT09PT09PT09PT09PT0gV0FUQ0hFUlMgPT09PT09PT09PT09PT1cblxuICBpZiAoZGVsYXkudmFsdWUgPiAtMSkge1xuICAgIGluaXRTZWFyY2hXYXRjaGVyKCk7XG4gIH1cblxuICB3YXRjaChkZWxheSwgKHZhbHVlLCBvbGQpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChzZWFyY2hXYXRjaGVyLnZhbHVlKSB7XG4gICAgICBzZWFyY2hXYXRjaGVyLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID49IDApIHtcbiAgICAgIGluaXRTZWFyY2hXYXRjaGVyKCk7XG4gICAgfVxuICB9KTtcblxuICB3YXRjaChldiwgKG5ld1ZhbHVlKSA9PiB7XG4gICAgaWYgKGlzTnVsbGlzaChuZXdWYWx1ZSkpIHtcbiAgICAgIHVwZGF0ZShtYWtlSW50ZXJuYWwobmV3VmFsdWUpLCBmYWxzZSk7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIGlmIChvYmplY3QudmFsdWUgPyBuZXdWYWx1ZVt2YWx1ZVByb3AudmFsdWVdICE9IGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gOiBuZXdWYWx1ZSAhPSBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSB7XG4gICAgICAgICAgdXBkYXRlKG1ha2VJbnRlcm5hbChuZXdWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgaWYgKCFhcnJheXNFcXVhbChvYmplY3QudmFsdWUgPyBuZXdWYWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pIDogbmV3VmFsdWUsIGl2LnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkpKSB7XG4gICAgICAgICAgdXBkYXRlKG1ha2VJbnRlcm5hbChuZXdWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuXG4gIHdhdGNoKG9wdGlvbnMsIChuLCBvKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5vcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAocmVzb2x2ZU9uTG9hZC52YWx1ZSAmJiAoIW8gfHwgKG4gJiYgbi50b1N0cmluZygpICE9PSBvLnRvU3RyaW5nKCkpKSkge1xuICAgICAgICByZXNvbHZlT3B0aW9ucygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByby52YWx1ZSA9IHByb3BzLm9wdGlvbnM7XG5cbiAgICAgIGlmICghT2JqZWN0LmtleXMoaXYudmFsdWUpLmxlbmd0aCkge1xuICAgICAgICBpbml0SW50ZXJuYWxWYWx1ZSgpO1xuICAgICAgfVxuXG4gICAgICByZWZyZXNoTGFiZWxzKCk7XG4gICAgfVxuICB9KTtcblxuICB3YXRjaChsYWJlbCwgcmVmcmVzaExhYmVscyk7XG5cbiAgd2F0Y2gobGltaXQsIChuLG8pID0+IHtcbiAgICBvZmZzZXQudmFsdWUgPSBpbmZpbml0ZS52YWx1ZSAmJiBuID09PSAtMSA/IDEwIDogbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICByZXNvbHZlZE9wdGlvbnMsXG4gICAgcGZvLFxuICAgIGZvLFxuICAgIGZpbHRlcmVkT3B0aW9uczogZm8sXG4gICAgaGFzU2VsZWN0ZWQsXG4gICAgbXVsdGlwbGVMYWJlbFRleHQsXG4gICAgZW8sXG4gICAgZXh0ZW5kZWRPcHRpb25zOiBlbyxcbiAgICBlZyxcbiAgICBleHRlbmRlZEdyb3VwczogZWcsXG4gICAgZmcsXG4gICAgZmlsdGVyZWRHcm91cHM6IGZnLFxuICAgIG5vT3B0aW9ucyxcbiAgICBub1Jlc3VsdHMsXG4gICAgcmVzb2x2aW5nLFxuICAgIGJ1c3ksXG4gICAgb2Zmc2V0LFxuICAgIHNlbGVjdCxcbiAgICBkZXNlbGVjdCxcbiAgICByZW1vdmUsXG4gICAgc2VsZWN0QWxsLFxuICAgIGNsZWFyLFxuICAgIGlzU2VsZWN0ZWQsXG4gICAgaXNEaXNhYmxlZCxcbiAgICBpc01heCxcbiAgICBnZXRPcHRpb24sXG4gICAgaGFuZGxlT3B0aW9uQ2xpY2ssXG4gICAgaGFuZGxlR3JvdXBDbGljayxcbiAgICBoYW5kbGVUYWdSZW1vdmUsXG4gICAgcmVmcmVzaE9wdGlvbnMsXG4gICAgcmVzb2x2ZU9wdGlvbnMsXG4gICAgcmVmcmVzaExhYmVscyxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgdmFsdWVQcm9wLCBzaG93T3B0aW9ucywgc2VhcmNoYWJsZSwgZ3JvdXBMYWJlbCxcbiAgICBncm91cHM6IGdyb3VwcGVkLCBtb2RlLCBncm91cFNlbGVjdCwgZGlzYWJsZWRQcm9wLFxuICAgIGdyb3VwT3B0aW9ucyxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBmbyA9IGRlcC5mbztcbiAgY29uc3QgZmcgPSBkZXAuZmc7XG4gIGNvbnN0IGhhbmRsZU9wdGlvbkNsaWNrID0gZGVwLmhhbmRsZU9wdGlvbkNsaWNrO1xuICBjb25zdCBoYW5kbGVHcm91cENsaWNrID0gZGVwLmhhbmRsZUdyb3VwQ2xpY2s7XG4gIGNvbnN0IHNlYXJjaCA9IGRlcC5zZWFyY2g7XG4gIGNvbnN0IHBvaW50ZXIgPSBkZXAucG9pbnRlcjtcbiAgY29uc3Qgc2V0UG9pbnRlciA9IGRlcC5zZXRQb2ludGVyO1xuICBjb25zdCBjbGVhclBvaW50ZXIgPSBkZXAuY2xlYXJQb2ludGVyO1xuICBjb25zdCBtdWx0aXNlbGVjdCA9IGRlcC5tdWx0aXNlbGVjdDtcbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBvcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBmby52YWx1ZS5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCBncm91cHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGZnLnZhbHVlLmZpbHRlcihnID0+ICFnW2Rpc2FibGVkUHJvcC52YWx1ZV0pXG4gIH0pO1xuXG4gIGNvbnN0IGNhblBvaW50R3JvdXBzID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBtb2RlLnZhbHVlICE9PSAnc2luZ2xlJyAmJiBncm91cFNlbGVjdC52YWx1ZVxuICB9KTtcblxuICBjb25zdCBpc1BvaW50ZXJHcm91cCA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gcG9pbnRlci52YWx1ZSAmJiBwb2ludGVyLnZhbHVlLmdyb3VwXG4gIH0pO1xuXG4gIGNvbnN0IGN1cnJlbnRHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZ2V0UGFyZW50R3JvdXAocG9pbnRlci52YWx1ZSlcbiAgfSk7XG5cbiAgY29uc3QgcHJldkdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBwb2ludGVyLnZhbHVlIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gZ2V0UGFyZW50R3JvdXAocG9pbnRlci52YWx1ZSk7XG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IGdyb3Vwcy52YWx1ZS5tYXAoZyA9PiBnW2dyb3VwTGFiZWwudmFsdWVdKS5pbmRleE9mKGdyb3VwW2dyb3VwTGFiZWwudmFsdWVdKTtcbiAgICBsZXQgcHJldkdyb3VwID0gZ3JvdXBzLnZhbHVlW2dyb3VwSW5kZXggLSAxXTtcblxuICAgIGlmIChwcmV2R3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJldkdyb3VwID0gbGFzdEdyb3VwLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2R3JvdXBcbiAgfSk7XG4gIFxuICBjb25zdCBuZXh0R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IG5leHRJbmRleCA9IGdyb3Vwcy52YWx1ZS5tYXAoZyA9PiBnLmxhYmVsKS5pbmRleE9mKGlzUG9pbnRlckdyb3VwLnZhbHVlXG4gICAgICA/IHBvaW50ZXIudmFsdWVbZ3JvdXBMYWJlbC52YWx1ZV1cbiAgICAgIDogZ2V0UGFyZW50R3JvdXAocG9pbnRlci52YWx1ZSlbZ3JvdXBMYWJlbC52YWx1ZV0pICsgMTtcblxuICAgIGlmIChncm91cHMudmFsdWUubGVuZ3RoIDw9IG5leHRJbmRleCkge1xuICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXBzLnZhbHVlW25leHRJbmRleF1cbiAgfSk7XG5cbiAgY29uc3QgbGFzdEdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbLi4uZ3JvdXBzLnZhbHVlXS5zbGljZSgtMSlbMF1cbiAgfSk7XG4gIFxuICBjb25zdCBjdXJyZW50R3JvdXBGaXJzdEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50ZXIudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlbMF1cbiAgfSk7XG5cbiAgY29uc3QgY3VycmVudEdyb3VwUHJldkVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGN1cnJlbnRHcm91cC52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKTtcbiAgICByZXR1cm4gb3B0aW9uc1tvcHRpb25zLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pIC0gMV1cbiAgfSk7XG4gIFxuICBjb25zdCBjdXJyZW50R3JvdXBOZXh0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0UGFyZW50R3JvdXAocG9pbnRlci52YWx1ZSkuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSk7XG4gICAgcmV0dXJuIG9wdGlvbnNbb3B0aW9ucy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSArIDFdXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZHcm91cExhc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbLi4ucHJldkdyb3VwLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXS5zbGljZSgtMSlbMF1cbiAgfSk7XG5cbiAgY29uc3QgbGFzdEdyb3VwTGFzdEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIFsuLi5sYXN0R3JvdXAudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSldLnNsaWNlKC0xKVswXVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzUG9pbnRlZCA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gKCEhcG9pbnRlci52YWx1ZSAmJiAoXG4gICAgICAoIW9wdGlvbi5ncm91cCAmJiBwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gPT09IG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSB8fFxuICAgICAgKG9wdGlvbi5ncm91cCAhPT0gdW5kZWZpbmVkICYmIHBvaW50ZXIudmFsdWVbZ3JvdXBMYWJlbC52YWx1ZV0gPT09IG9wdGlvbltncm91cExhYmVsLnZhbHVlXSlcbiAgICApKSA/IHRydWUgOiB1bmRlZmluZWRcbiAgfTtcblxuICBjb25zdCBzZXRQb2ludGVyRmlyc3QgPSAoKSA9PiB7XG4gICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlWzBdIHx8IG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdFBvaW50ZXIgPSAoKSA9PiB7XG4gICAgaWYgKCFwb2ludGVyLnZhbHVlIHx8IHBvaW50ZXIudmFsdWVbZGlzYWJsZWRQcm9wLnZhbHVlXSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzUG9pbnRlckdyb3VwLnZhbHVlKSB7XG4gICAgICBoYW5kbGVHcm91cENsaWNrKHBvaW50ZXIudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVPcHRpb25DbGljayhwb2ludGVyLnZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZm9yd2FyZFBvaW50ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHBvaW50ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFBvaW50ZXIoKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlID8gKCFncm91cHMudmFsdWVbMF0uX19DUkVBVEVfXyA/IGdyb3Vwcy52YWx1ZVswXSA6IG9wdGlvbnMudmFsdWVbMF0pIDogb3B0aW9ucy52YWx1ZVswXSkgfHwgbnVsbCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICBsZXQgbmV4dFBvaW50ZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IGN1cnJlbnRHcm91cEZpcnN0RW5hYmxlZE9wdGlvbi52YWx1ZSA6IGN1cnJlbnRHcm91cE5leHRFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICBpZiAobmV4dFBvaW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXh0UG9pbnRlciA9IG5leHRHcm91cC52YWx1ZTtcblxuICAgICAgICBpZiAobmV4dFBvaW50ZXIuX19DUkVBVEVfXykge1xuICAgICAgICAgIG5leHRQb2ludGVyID0gbmV4dFBvaW50ZXJbZ3JvdXBPcHRpb25zLnZhbHVlXVswXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKG5leHRQb2ludGVyIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbmV4dCA9IG9wdGlvbnMudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgKyAxO1xuXG4gICAgICBpZiAob3B0aW9ucy52YWx1ZS5sZW5ndGggPD0gbmV4dCkge1xuICAgICAgICBuZXh0ID0gMDtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlW25leHRdIHx8IG51bGwpO1xuICAgIH1cblxuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIoKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBiYWNrd2FyZFBvaW50ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHBvaW50ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGxldCBwcmV2UG9pbnRlciA9IG9wdGlvbnMudmFsdWVbb3B0aW9ucy52YWx1ZS5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICAgIHByZXZQb2ludGVyID0gbGFzdEdyb3VwTGFzdEVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcmV2UG9pbnRlciA9IGxhc3RHcm91cC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKHByZXZQb2ludGVyICB8fCBudWxsKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZ3JvdXBwZWQudmFsdWUgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgIGxldCBwcmV2UG9pbnRlciA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcHJldkdyb3VwTGFzdEVuYWJsZWRPcHRpb24udmFsdWUgOiBjdXJyZW50R3JvdXBQcmV2RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJldlBvaW50ZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IHByZXZHcm91cC52YWx1ZSA6IGN1cnJlbnRHcm91cC52YWx1ZTtcblxuICAgICAgICBpZiAocHJldlBvaW50ZXIuX19DUkVBVEVfXykge1xuICAgICAgICAgIHByZXZQb2ludGVyID0gcHJldkdyb3VwTGFzdEVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgICAgICBpZiAocHJldlBvaW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcHJldlBvaW50ZXIgPSBwcmV2R3JvdXAudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIocHJldlBvaW50ZXIgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwcmV2SW5kZXggPSBvcHRpb25zLnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pIC0gMTtcblxuICAgICAgaWYgKHByZXZJbmRleCA8IDApIHtcbiAgICAgICAgcHJldkluZGV4ID0gb3B0aW9ucy52YWx1ZS5sZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKG9wdGlvbnMudmFsdWVbcHJldkluZGV4XSB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBhZGp1c3RXcmFwcGVyU2Nyb2xsVG9Qb2ludGVyKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UGFyZW50R3JvdXAgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIGdyb3Vwcy52YWx1ZS5maW5kKChncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIGdyb3VwLl9fVklTSUJMRV9fLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgIT09IC0xXG4gICAgfSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3QgYWRqdXN0V3JhcHBlclNjcm9sbFRvUG9pbnRlciA9ICgpID0+IHtcbiAgICBsZXQgcG9pbnRlZE9wdGlvbiA9IG11bHRpc2VsZWN0LnZhbHVlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXBvaW50ZWRdYCk7XG5cbiAgICBpZiAoIXBvaW50ZWRPcHRpb24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCB3cmFwcGVyID0gcG9pbnRlZE9wdGlvbi5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICBpZiAoZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHdyYXBwZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZVxuICAgICAgICA/IHBvaW50ZWRPcHRpb24ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnRcbiAgICAgICAgOiBwb2ludGVkT3B0aW9uLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wICsgcG9pbnRlZE9wdGlvbi5vZmZzZXRIZWlnaHQgPiB3cmFwcGVyLmNsaWVudEhlaWdodCArIHdyYXBwZXIuc2Nyb2xsVG9wKSB7XG4gICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wICsgcG9pbnRlZE9wdGlvbi5vZmZzZXRIZWlnaHQgLSB3cmFwcGVyLmNsaWVudEhlaWdodDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wIDwgd3JhcHBlci5zY3JvbGxUb3ApIHtcbiAgICAgIHdyYXBwZXIuc2Nyb2xsVG9wID0gcG9pbnRlZE9wdGlvbi5vZmZzZXRUb3A7XG4gICAgfVxuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgd2F0Y2goc2VhcmNoLCAodmFsKSA9PiB7XG4gICAgaWYgKHNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgIGlmICh2YWwubGVuZ3RoICYmIHNob3dPcHRpb25zLnZhbHVlKSB7XG4gICAgICAgIHNldFBvaW50ZXJGaXJzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB3YXRjaChpc09wZW4sICh2YWwpID0+IHtcbiAgICBpZiAodmFsICYmIG11bHRpc2VsZWN0Py52YWx1ZSkge1xuICAgICAgbGV0IGZpcnN0U2VsZWN0ZWQgPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1zZWxlY3RlZF1gKVswXTtcblxuICAgICAgaWYgKCFmaXJzdFNlbGVjdGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlciA9IGZpcnN0U2VsZWN0ZWQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgXG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIC8vIFJlbW92ZWQgYmVjYXVzZSBvZiAjNDA2XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8vIGlmICh3cmFwcGVyLnNjcm9sbFRvcCA+IDApIHtcbiAgICAgICAgLy8gICByZXR1cm5cbiAgICAgICAgLy8gfVxuXG4gICAgICAgIHdyYXBwZXIuc2Nyb2xsVG9wID0gZmlyc3RTZWxlY3RlZC5vZmZzZXRUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcG9pbnRlcixcbiAgICBjYW5Qb2ludEdyb3VwcyxcbiAgICBpc1BvaW50ZWQsXG4gICAgc2V0UG9pbnRlckZpcnN0LFxuICAgIHNlbGVjdFBvaW50ZXIsXG4gICAgZm9yd2FyZFBvaW50ZXIsXG4gICAgYmFja3dhcmRQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkhUTUxFbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICAvLyBJRSAxMSBoYXMgbm8gU2hhZG93Um9vdFxuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuU2hhZG93Um9vdDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290O1xufVxuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xuXG5mdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLmJyYW5kICsgXCIvXCIgKyBpdGVtLnZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuLy8gbWVhbnMgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zLlxuXG5mdW5jdGlvbiBnZXRMYXlvdXRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7IC8vIFVzZSB0aGUgY2xpZW50UmVjdCBzaXplcyBpZiBpdCdzIG5vdCBiZWVuIHRyYW5zZm9ybWVkLlxuICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEyMjNcblxuICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3Qud2lkdGggLSB3aWR0aCkgPD0gMSkge1xuICAgIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aDtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LmhlaWdodCAtIGhlaWdodCkgPD0gMSkge1xuICAgIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBlbGVtZW50Lm9mZnNldExlZnQsXG4gICAgeTogZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn1cblxuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59XG5cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlJDEob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn1cblxudmFyIHRvcCA9ICd0b3AnO1xudmFyIGJvdHRvbSA9ICdib3R0b20nO1xudmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbnZhciBsZWZ0ID0gJ2xlZnQnO1xudmFyIGF1dG8gPSAnYXV0byc7XG52YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbnZhciBzdGFydCA9ICdzdGFydCc7XG52YXIgZW5kID0gJ2VuZCc7XG52YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG52YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xudmFyIHBvcHBlciA9ICdwb3BwZXInO1xudmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xudmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbnZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbnZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xudmFyIHJlYWQgPSAncmVhZCc7XG52YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbnZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xudmFyIG1haW4gPSAnbWFpbic7XG52YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxudmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbnZhciB3cml0ZSA9ICd3cml0ZSc7XG52YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbnZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTtcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUJ5TmFtZShtb2RpZmllcnMpIHtcbiAgdmFyIG1lcmdlZCA9IG1vZGlmaWVycy5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgY3VycmVudCkge1xuICAgIHZhciBleGlzdGluZyA9IG1lcmdlZFtjdXJyZW50Lm5hbWVdO1xuICAgIG1lcmdlZFtjdXJyZW50Lm5hbWVdID0gZXhpc3RpbmcgPyBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZywgY3VycmVudCwge1xuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3Rpbmcub3B0aW9ucywgY3VycmVudC5vcHRpb25zKSxcbiAgICAgIGRhdGE6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLmRhdGEsIGN1cnJlbnQuZGF0YSlcbiAgICB9KSA6IGN1cnJlbnQ7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfSwge30pOyAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgT2JqZWN0LnZhbHVlc1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhtZXJnZWQpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIG1lcmdlZFtrZXldO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn1cblxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUkMShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICB2YXIgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSAmJiBjaGlsZC5nZXRSb290Tm9kZSgpOyAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG5cbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBlbHNlIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgICB2YXIgbmV4dCA9IGNoaWxkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuZXh0ICYmIHBhcmVudC5pc1NhbWVOb2RlKG5leHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddOiBuZWVkIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4uLlxuXG5cbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50Tm9kZSB8fCBuZXh0Lmhvc3Q7XG4gICAgICB9IHdoaWxlIChuZXh0KTtcbiAgICB9IC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcblxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGZhbHNlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5cbmZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuXG5mdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZU9mZnNldHMoX3JlZikge1xuICB2YXIgcmVmZXJlbmNlID0gX3JlZi5yZWZlcmVuY2UsXG4gICAgICBlbGVtZW50ID0gX3JlZi5lbGVtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50ID8gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIHZhcmlhdGlvbiA9IHBsYWNlbWVudCA/IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBlbGVtZW50LndpZHRoIC8gMjtcbiAgdmFyIGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZWxlbWVudC5oZWlnaHQgLyAyO1xuICB2YXIgb2Zmc2V0cztcblxuICBzd2l0Y2ggKGJhc2VQbGFjZW1lbnQpIHtcbiAgICBjYXNlIHRvcDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZWxlbWVudC5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgYm90dG9tOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIHJpZ2h0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgbGVmdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZWxlbWVudC53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuXG4gIHZhciBtYWluQXhpcyA9IGJhc2VQbGFjZW1lbnQgPyBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCkgOiBudWxsO1xuXG4gIGlmIChtYWluQXhpcyAhPSBudWxsKSB7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICBzd2l0Y2ggKHZhcmlhdGlvbikge1xuICAgICAgY2FzZSBzdGFydDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSAtIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgZW5kOlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdICsgKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0cztcbn1cblxuZnVuY3Rpb24gZ2V0RnJlc2hTaWRlT2JqZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufVxuXG5mdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zJHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gc3RhdGUucGxhY2VtZW50IDogX29wdGlvbnMkcGxhY2VtZW50LFxuICAgICAgX29wdGlvbnMkc3RyYXRlZ3kgPSBfb3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIHN0cmF0ZWd5ID0gX29wdGlvbnMkc3RyYXRlZ3kgPT09IHZvaWQgMCA/IHN0YXRlLnN0cmF0ZWd5IDogX29wdGlvbnMkc3RyYXRlZ3ksXG4gICAgICBfb3B0aW9ucyRib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucyRib3VuZGFyeSA9PT0gdm9pZCAwID8gY2xpcHBpbmdQYXJlbnRzIDogX29wdGlvbnMkYm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRyb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucyRyb290Qm91bmRhcnkgPT09IHZvaWQgMCA/IHZpZXdwb3J0IDogX29wdGlvbnMkcm9vdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZWxlbWVudENvbnRlID0gX29wdGlvbnMuZWxlbWVudENvbnRleHQsXG4gICAgICBlbGVtZW50Q29udGV4dCA9IF9vcHRpb25zJGVsZW1lbnRDb250ZSA9PT0gdm9pZCAwID8gcG9wcGVyIDogX29wdGlvbnMkZWxlbWVudENvbnRlLFxuICAgICAgX29wdGlvbnMkYWx0Qm91bmRhcnkgPSBfb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMkYWx0Qm91bmRhcnkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucyRwYWRkaW5nID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkcGFkZGluZztcbiAgdmFyIHBhZGRpbmdPYmplY3QgPSBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xuICB2YXIgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyByZWZlcmVuY2UgOiBwb3BwZXI7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpO1xuICB2YXIgcmVmZXJlbmNlQ2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2UpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufVxuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9wcGVyR2VuZXJhdG9yKGdlbmVyYXRvck9wdGlvbnMpIHtcbiAgaWYgKGdlbmVyYXRvck9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIGdlbmVyYXRvck9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfZ2VuZXJhdG9yT3B0aW9ucyA9IGdlbmVyYXRvck9wdGlvbnMsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0TW9kaWZpZXJzLFxuICAgICAgZGVmYXVsdE1vZGlmaWVycyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9PT0gdm9pZCAwID8gW10gOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICBkZWZhdWx0T3B0aW9ucyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPT09IHZvaWQgMCA/IERFRkFVTFRfT1BUSU9OUyA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZjI7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgdmFyIHN0YXRlID0ge1xuICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLFxuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBkZWZhdWx0T3B0aW9ucyksXG4gICAgICBtb2RpZmllcnNEYXRhOiB7fSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXI6IHBvcHBlclxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3R5bGVzOiB7fVxuICAgIH07XG4gICAgdmFyIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB2YXIgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgaW5zdGFuY2UgPSB7XG4gICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKHNldE9wdGlvbnNBY3Rpb24pIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2V0T3B0aW9uc0FjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHNldE9wdGlvbnNBY3Rpb24oc3RhdGUub3B0aW9ucykgOiBzZXRPcHRpb25zQWN0aW9uO1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgICBfcmVmJG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZiRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdCQxKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG52YXIgZXZlbnRMaXN0ZW5lcnMgPSB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QkMSxcbiAgZGF0YToge31cbn07XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIHBvcHBlck9mZnNldHMkMSA9IHtcbiAgbmFtZTogJ3BvcHBlck9mZnNldHMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3JlYWQnLFxuICBmbjogcG9wcGVyT2Zmc2V0cyxcbiAgZGF0YToge31cbn07XG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlJDEob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiAhPT0gJ3N0YXRpYycgJiYgcG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgICAgaGVpZ2h0UHJvcCA9ICdzY3JvbGxIZWlnaHQnO1xuICAgICAgICB3aWR0aFByb3AgPSAnc2Nyb2xsV2lkdGgnO1xuICAgICAgfVxuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FzdF06IGZvcmNlIHR5cGUgcmVmaW5lbWVudCwgd2UgY29tcGFyZSBvZmZzZXRQYXJlbnQgd2l0aCB3aW5kb3cgYWJvdmUsIGJ1dCBGbG93IGRvZXNuJ3QgZGV0ZWN0IGl0XG5cblxuICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09IHRvcCB8fCAocGxhY2VtZW50ID09PSBsZWZ0IHx8IHBsYWNlbWVudCA9PT0gcmlnaHQpICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWSA9IGJvdHRvbTtcbiAgICAgIHZhciBvZmZzZXRZID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF07XG4gICAgICB5IC09IG9mZnNldFkgLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQgfHwgKHBsYWNlbWVudCA9PT0gdG9wIHx8IHBsYWNlbWVudCA9PT0gYm90dG9tKSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVggPSByaWdodDtcbiAgICAgIHZhciBvZmZzZXRYID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQud2lkdGggOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFt3aWR0aFByb3BdO1xuICAgICAgeCAtPSBvZmZzZXRYIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgdmFyIF9yZWY0ID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9LCBnZXRXaW5kb3cocG9wcGVyKSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG52YXIgY29tcHV0ZVN0eWxlcyQxID0ge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07XG5cbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIGFwcGx5U3R5bGVzJDEgPSB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07XG5cbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzJDEsIGNvbXB1dGVTdHlsZXMkMSwgYXBwbHlTdHlsZXMkMV07XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuXG5mdW5jdGlvbiB3aXRoaW4obWluJDEsIHZhbHVlLCBtYXgkMSkge1xuICByZXR1cm4gbWF4KG1pbiQxLCBtaW4odmFsdWUsIG1heCQxKSk7XG59XG5mdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufVxuXG5mdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXIgPSBvcHRpb25zLnRldGhlcixcbiAgICAgIHRldGhlciA9IF9vcHRpb25zJHRldGhlciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHRldGhlcixcbiAgICAgIF9vcHRpb25zJHRldGhlck9mZnNldCA9IG9wdGlvbnMudGV0aGVyT2Zmc2V0LFxuICAgICAgdGV0aGVyT2Zmc2V0ID0gX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkdGV0aGVyT2Zmc2V0O1xuICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeVxuICB9KTtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9ICF2YXJpYXRpb247XG4gIHZhciBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGFsdEF4aXMgPSBnZXRBbHRBeGlzKG1haW5BeGlzKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IHRldGhlck9mZnNldChPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHRldGhlck9mZnNldDtcbiAgdmFyIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXRWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHRldGhlck9mZnNldFZhbHVlLFxuICAgIGFsdEF4aXM6IHRldGhlck9mZnNldFZhbHVlXG4gIH0gOiBPYmplY3QuYXNzaWduKHtcbiAgICBtYWluQXhpczogMCxcbiAgICBhbHRBeGlzOiAwXG4gIH0sIHRldGhlck9mZnNldFZhbHVlKTtcbiAgdmFyIG9mZnNldE1vZGlmaWVyU3RhdGUgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldCA/IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0W3N0YXRlLnBsYWNlbWVudF0gOiBudWxsO1xuICB2YXIgZGF0YSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQ7XG5cbiAgICB2YXIgbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgICB2YXIgYWx0U2lkZSA9IG1haW5BeGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICB2YXIgb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1ttYWluQXhpc107XG4gICAgdmFyIG1pbiQxID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXgkMSA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtaW4obWluJDEsIHRldGhlck1pbikgOiBtaW4kMSwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXgobWF4JDEsIHRldGhlck1heCkgOiBtYXgkMSk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxudmFyIHByZXZlbnRPdmVyZmxvdyQxID0ge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTtcblxudmFyIGhhc2gkMSA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoJDFbbWF0Y2hlZF07XG4gIH0pO1xufVxuXG52YXIgaGFzaCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gcGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyQxID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzJDEuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzJDE7XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgaWYgKGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGZsaXAoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgPSBvcHRpb25zLmZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9IG9wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGZsaXBWYXJpYXRpbyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IG9wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzO1xuICB2YXIgcHJlZmVycmVkUGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gYmFzZVBsYWNlbWVudCA9PT0gcHJlZmVycmVkUGxhY2VtZW50O1xuICB2YXIgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBWYXJpYXRpb25zID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocHJlZmVycmVkUGxhY2VtZW50KSk7XG4gIHZhciBwbGFjZW1lbnRzID0gW3ByZWZlcnJlZFBsYWNlbWVudF0uY29uY2F0KGZhbGxiYWNrUGxhY2VtZW50cykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0byA/IGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zOiBmbGlwVmFyaWF0aW9ucyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogYWxsb3dlZEF1dG9QbGFjZW1lbnRzXG4gICAgfSkgOiBwbGFjZW1lbnQpO1xuICB9LCBbXSk7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGNoZWNrc01hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIG1ha2VGYWxsYmFja0NoZWNrcyA9IHRydWU7XG4gIHZhciBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzWzBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGxhY2VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2ldO1xuXG4gICAgdmFyIF9iYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIGlzU3RhcnRWYXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gc3RhcnQ7XG4gICAgdmFyIGlzVmVydGljYWwgPSBbdG9wLCBib3R0b21dLmluZGV4T2YoX2Jhc2VQbGFjZW1lbnQpID49IDA7XG4gICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSk7XG4gICAgdmFyIG1haW5WYXJpYXRpb25TaWRlID0gaXNWZXJ0aWNhbCA/IGlzU3RhcnRWYXJpYXRpb24gPyByaWdodCA6IGxlZnQgOiBpc1N0YXJ0VmFyaWF0aW9uID8gYm90dG9tIDogdG9wO1xuXG4gICAgaWYgKHJlZmVyZW5jZVJlY3RbbGVuXSA+IHBvcHBlclJlY3RbbGVuXSkge1xuICAgICAgbWFpblZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgfVxuXG4gICAgdmFyIGFsdFZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgdmFyIGNoZWNrcyA9IFtdO1xuXG4gICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W19iYXNlUGxhY2VtZW50XSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1ttYWluVmFyaWF0aW9uU2lkZV0gPD0gMCwgb3ZlcmZsb3dbYWx0VmFyaWF0aW9uU2lkZV0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgIHJldHVybiBjaGVjaztcbiAgICB9KSkge1xuICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgbWFrZUZhbGxiYWNrQ2hlY2tzID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjaGVja3NNYXAuc2V0KHBsYWNlbWVudCwgY2hlY2tzKTtcbiAgfVxuXG4gIGlmIChtYWtlRmFsbGJhY2tDaGVja3MpIHtcbiAgICAvLyBgMmAgbWF5IGJlIGRlc2lyZWQgaW4gc29tZSBjYXNlcyDigJMgcmVzZWFyY2ggbGF0ZXJcbiAgICB2YXIgbnVtYmVyT2ZDaGVja3MgPSBmbGlwVmFyaWF0aW9ucyA/IDMgOiAxO1xuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgIHZhciBmaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50cy5maW5kKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICAgICAgdmFyIGNoZWNrcyA9IGNoZWNrc01hcC5nZXQocGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoY2hlY2tzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoZWNrcy5zbGljZSgwLCBfaSkuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZml0dGluZ1BsYWNlbWVudCkge1xuICAgICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBmaXR0aW5nUGxhY2VtZW50O1xuICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IG51bWJlck9mQ2hlY2tzOyBfaSA+IDA7IF9pLS0pIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUucGxhY2VtZW50ICE9PSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwID0gdHJ1ZTtcbiAgICBzdGF0ZS5wbGFjZW1lbnQgPSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgc3RhdGUucmVzZXQgPSB0cnVlO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG52YXIgZmxpcCQxID0ge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVzZURyb3Bkb3duIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IGRpc2FibGVkLCBhcHBlbmRUbywgYXBwZW5kVG9Cb2R5LCBvcGVuRGlyZWN0aW9uIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBtdWx0aXNlbGVjdCA9IGRlcC5tdWx0aXNlbGVjdDtcbiAgY29uc3QgZHJvcGRvd24gPSBkZXAuZHJvcGRvd247XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSByZWYoZmFsc2UpO1xuICBjb25zdCBwb3BwZXIgPSByZWYobnVsbCk7XG4gIGNvbnN0IGZvcmNlZFBsYWNlbWVudCA9IHJlZihudWxsKTtcbiAgXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYXBwZW5kZWQgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIGFwcGVuZFRvLnZhbHVlIHx8IGFwcGVuZFRvQm9keS52YWx1ZVxuICB9KTtcblxuICBjb25zdCBwbGFjZW1lbnQgPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIChvcGVuRGlyZWN0aW9uLnZhbHVlID09PSAndG9wJyAmJiBmb3JjZWRQbGFjZW1lbnQudmFsdWUgPT09ICdib3R0b20nKSB8fFxuICAgICAgICAgICAob3BlbkRpcmVjdGlvbi52YWx1ZSA9PT0gJ2JvdHRvbScgJiYgZm9yY2VkUGxhY2VtZW50LnZhbHVlICE9PSAndG9wJylcbiAgICAgICAgICAgID8gJ2JvdHRvbSdcbiAgICAgICAgICAgIDogJ3RvcCdcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBvcGVuID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUgfHwgZGlzYWJsZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IHRydWU7XG4gICAgY29udGV4dC5lbWl0KCdvcGVuJywgJHRoaXMpO1xuXG5cbiAgICBpZiAoYXBwZW5kZWQudmFsdWUpIHtcbiAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgdXBkYXRlUG9wcGVyKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4udmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIGNvbnRleHQuZW1pdCgnY2xvc2UnLCAkdGhpcyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlUG9wcGVyID0gKCkgPT4ge1xuICAgIGlmICghcG9wcGVyLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgYm9yZGVyVG9wV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkcm9wZG93bi52YWx1ZSkuYm9yZGVyVG9wV2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xuICAgIGxldCBib3JkZXJCb3R0b21XaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRyb3Bkb3duLnZhbHVlKS5ib3JkZXJCb3R0b21XaWR0aC5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgXG4gICAgcG9wcGVyLnZhbHVlLnNldE9wdGlvbnMoKG9wdGlvbnMpID0+ICh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgIC4uLm9wdGlvbnMubW9kaWZpZXJzLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgb2Zmc2V0OiBbMCwgKHBsYWNlbWVudC52YWx1ZSA9PT0gJ3RvcCcgPyBib3JkZXJUb3BXaWR0aCA6IGJvcmRlckJvdHRvbVdpZHRoKSAqIC0xXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH0pKTtcblxuICAgIHBvcHBlci52YWx1ZS51cGRhdGUoKTtcbiAgfTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogVUkgZmVhdHVyZSAqL1xuICBjb25zdCBoYXNGaXhlZFBhcmVudCA9IChlbGVtZW50KSA9PiB7XG4gICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2VcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmICghYXBwZW5kZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBwb3BwZXIgbW9jayAqL1xuICAgIHBvcHBlci52YWx1ZSA9IGNyZWF0ZVBvcHBlcihtdWx0aXNlbGVjdC52YWx1ZSwgZHJvcGRvd24udmFsdWUsIHtcbiAgICAgIHN0cmF0ZWd5OiBoYXNGaXhlZFBhcmVudChtdWx0aXNlbGVjdC52YWx1ZSkgPyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogVUkgZmVhdHVyZSAqLyAnZml4ZWQnIDogdW5kZWZpbmVkLFxuICAgICAgcGxhY2VtZW50OiBvcGVuRGlyZWN0aW9uLnZhbHVlLFxuICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgIHByZXZlbnRPdmVyZmxvdyQxLFxuICAgICAgICBmbGlwJDEsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc2FtZVdpZHRoJyxcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICAgICAgICAgIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXSxcbiAgICAgICAgICBmbjogKHsgc3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuc3R5bGVzLnBvcHBlci53aWR0aCA9IGAke3N0YXRlLnJlY3RzLnJlZmVyZW5jZS53aWR0aH1weGA7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlZmZlY3Q6ICh7IHN0YXRlIH0pID0+IHtcbiAgICAgICAgICAgIHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZS53aWR0aCA9IGAke1xuICAgICAgICAgICAgICBzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2Uub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgIH1weGA7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3RvZ2dsZUNsYXNzJyxcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHBoYXNlOiAnd3JpdGUnLFxuICAgICAgICAgIGZuKHsgc3RhdGUgfSkge1xuICAgICAgICAgICAgZm9yY2VkUGxhY2VtZW50LnZhbHVlID0gc3RhdGUucGxhY2VtZW50O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfSk7XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKCFhcHBlbmRlZC52YWx1ZSB8fCAhcG9wcGVyLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBwb3BwZXIudmFsdWUuZGVzdHJveSgpO1xuICAgIHBvcHBlci52YWx1ZSA9IG51bGw7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcG9wcGVyLFxuICAgIGlzT3BlbixcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICAgIHBsYWNlbWVudCxcbiAgICB1cGRhdGVQb3BwZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlTXVsdGlzZWxlY3QgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgc2VhcmNoYWJsZSwgZGlzYWJsZWQsIGNsZWFyT25CbHVyIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaW5wdXQgPSBkZXAuaW5wdXQ7XG4gIGNvbnN0IG9wZW4gPSBkZXAub3BlbjtcbiAgY29uc3QgY2xvc2UgPSBkZXAuY2xvc2U7XG4gIGNvbnN0IGNsZWFyU2VhcmNoID0gZGVwLmNsZWFyU2VhcmNoO1xuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCB3cmFwcGVyID0gZGVwLndyYXBwZXI7XG4gIGNvbnN0IHRhZ3MgPSBkZXAudGFncztcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzQWN0aXZlID0gcmVmKGZhbHNlKTtcblxuICBjb25zdCBtb3VzZUNsaWNrZWQgPSByZWYoZmFsc2UpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgdGFiaW5kZXggPSB0b1JlZigoKSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaGFibGUudmFsdWUgfHwgZGlzYWJsZWQudmFsdWUgPyAtMSA6IDBcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBibHVyID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZS5ibHVyKCk7XG4gICAgfVxuXG4gICAgd3JhcHBlci52YWx1ZS5ibHVyKCk7XG4gIH07XG5cbiAgY29uc3QgZm9jdXMgPSAoKSA9PiB7XG4gICAgaWYgKHNlYXJjaGFibGUudmFsdWUgJiYgIWRpc2FibGVkLnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhY3RpdmF0ZSA9IChzaG91bGRPcGVuID0gdHJ1ZSkgPT4ge1xuICAgIGlmIChkaXNhYmxlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuXG4gICAgaWYgKHNob3VsZE9wZW4pIHtcbiAgICAgIG9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQWN0aXZlLnZhbHVlKSB7XG4gICAgICAgIGNsb3NlKCk7XG5cbiAgICAgICAgaWYgKGNsZWFyT25CbHVyLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzSW4gPSAoZSkgPT4ge1xuICAgIGlmICgoZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdGFnc10nKSAmJiBlLnRhcmdldC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykgfHwgZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtY2xlYXJdJykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFjdGl2YXRlKG1vdXNlQ2xpY2tlZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgZGVhY3RpdmF0ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhcmV0Q2xpY2sgPSAoKSA9PiB7XG4gICAgZGVhY3RpdmF0ZSgpO1xuICAgIGJsdXIoKTtcbiAgfTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCBoYW5kbGVNb3VzZWRvd24gPSAoZSkgPT4ge1xuICAgIG1vdXNlQ2xpY2tlZC52YWx1ZSA9IHRydWU7XG5cbiAgICBpZiAoaXNPcGVuLnZhbHVlICYmIChlLnRhcmdldC5pc0VxdWFsTm9kZSh3cmFwcGVyLnZhbHVlKSB8fCBlLnRhcmdldC5pc0VxdWFsTm9kZSh0YWdzLnZhbHVlKSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkZWFjdGl2YXRlKCk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2UgaWYgKCFpc09wZW4udmFsdWUgXG4gICAgICAmJiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pc0VxdWFsTm9kZSh3cmFwcGVyLnZhbHVlKVxuICAgICAgICB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlzRXF1YWxOb2RlKGlucHV0LnZhbHVlKSkpIHtcbiAgICAgIGFjdGl2YXRlKCk7ICAgIFxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbW91c2VDbGlja2VkLnZhbHVlID0gZmFsc2U7XG4gICAgfSwgMCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJpbmRleCxcbiAgICBpc0FjdGl2ZSxcbiAgICBtb3VzZUNsaWNrZWQsXG4gICAgYmx1cixcbiAgICBmb2N1cyxcbiAgICBhY3RpdmF0ZSxcbiAgICBkZWFjdGl2YXRlLFxuICAgIGhhbmRsZUZvY3VzSW4sXG4gICAgaGFuZGxlRm9jdXNPdXQsXG4gICAgaGFuZGxlQ2FyZXRDbGljayxcbiAgICBoYW5kbGVNb3VzZWRvd24sXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlS2V5Ym9hcmQgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBtb2RlLCBhZGRUYWdPbiwgb3BlbkRpcmVjdGlvbiwgc2VhcmNoYWJsZSxcbiAgICBzaG93T3B0aW9ucywgdmFsdWVQcm9wLCBncm91cHM6IGdyb3VwcGVkLFxuICAgIGFkZE9wdGlvbk9uOiBhZGRPcHRpb25Pbl8sIGNyZWF0ZVRhZywgY3JlYXRlT3B0aW9uOiBjcmVhdGVPcHRpb25fLFxuICAgIHJldmVyc2UsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3QgZGVzZWxlY3QgPSBkZXAuZGVzZWxlY3Q7XG4gIGNvbnN0IHNlYXJjaCA9IGRlcC5zZWFyY2g7XG4gIGNvbnN0IHNldFBvaW50ZXIgPSBkZXAuc2V0UG9pbnRlcjtcbiAgY29uc3Qgc2VsZWN0UG9pbnRlciA9IGRlcC5zZWxlY3RQb2ludGVyO1xuICBjb25zdCBiYWNrd2FyZFBvaW50ZXIgPSBkZXAuYmFja3dhcmRQb2ludGVyO1xuICBjb25zdCBmb3J3YXJkUG9pbnRlciA9IGRlcC5mb3J3YXJkUG9pbnRlcjtcbiAgY29uc3QgbXVsdGlzZWxlY3QgPSBkZXAubXVsdGlzZWxlY3Q7XG4gIGNvbnN0IHdyYXBwZXIgPSBkZXAud3JhcHBlcjtcbiAgY29uc3QgdGFncyA9IGRlcC50YWdzO1xuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG4gIGNvbnN0IGJsdXIgPSBkZXAuYmx1cjtcbiAgY29uc3QgZm8gPSBkZXAuZm87XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgY3JlYXRlT3B0aW9uID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVUYWcudmFsdWUgfHwgY3JlYXRlT3B0aW9uXy52YWx1ZSB8fCBmYWxzZVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYWRkT3B0aW9uT24gPSB0b1JlZigoKSA9PiB7XG4gICAgaWYgKGFkZFRhZ09uLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhZGRUYWdPbi52YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChhZGRPcHRpb25Pbl8udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFkZE9wdGlvbk9uXy52YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBbJ2VudGVyJ11cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgcHJlcGFyZVBvaW50ZXIgPSAoKSA9PiB7XG4gICAgLy8gV2hlbiBvcHRpb25zIGFyZSBoaWRkZW4gYW5kIGNyZWF0aW5nIHRhZ3MgaXMgYWxsb3dlZFxuICAgIC8vIG5vIHBvaW50ZXIgd2lsbCBiZSBzZXQgKGJlY2F1c2Ugb3B0aW9ucyBhcmUgaGlkZGVuKS5cbiAgICAvLyBJbiBzdWNoIGNhc2Ugd2UgbmVlZCB0byBzZXQgdGhlIHBvaW50ZXIgbWFudWFsbHkgdG8gdGhlIFxuICAgIC8vIGZpcnN0IG9wdGlvbiwgd2hpY2ggZXF1YWxzIHRvIHRoZSBvcHRpb24gY3JlYXRlZCBmcm9tXG4gICAgLy8gdGhlIHNlYXJjaCB2YWx1ZS5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3RhZ3MnICYmICFzaG93T3B0aW9ucy52YWx1ZSAmJiBjcmVhdGVPcHRpb24udmFsdWUgJiYgc2VhcmNoYWJsZS52YWx1ZSAmJiAhZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHNldFBvaW50ZXIoZm8udmFsdWVbZm8udmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHNlYXJjaC52YWx1ZSldKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5ZG93biA9IChlKSA9PiB7XG4gICAgY29udGV4dC5lbWl0KCdrZXlkb3duJywgZSwgJHRoaXMpO1xuXG4gICAgbGV0IHRhZ0xpc3Q7XG4gICAgbGV0IGFjdGl2ZUluZGV4O1xuXG4gICAgaWYgKFsnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnLCAnRW50ZXInXS5pbmRleE9mKGUua2V5KSAhPT0gLTEgJiYgbW9kZS52YWx1ZSA9PT0gJ3RhZ3MnKSB7XG4gICAgICB0YWdMaXN0ID0gWy4uLihtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS10YWdzXSA+ICpgKSldLmZpbHRlcihlID0+IGUgIT09IHRhZ3MudmFsdWUpO1xuICAgICAgYWN0aXZlSW5kZXggPSB0YWdMaXN0LmZpbmRJbmRleChlID0+IGUgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNlYXJjaGFibGUudmFsdWUgJiYgW251bGwsICcnXS5pbmRleE9mKHNlYXJjaC52YWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXYudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzZWxlY3RhYmxlcyA9IGl2LnZhbHVlLmZpbHRlcih2PT4hdi5kaXNhYmxlZCAmJiB2LnJlbW92ZSAhPT0gZmFsc2UpO1xuXG4gICAgICAgIGlmIChkZXNlbGVjdGFibGVzLmxlbmd0aCkge1xuICAgICAgICAgIGRlc2VsZWN0KGRlc2VsZWN0YWJsZXNbZGVzZWxlY3RhYmxlcy5sZW5ndGggLSAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjI5KSB7XG4gICAgICAgICAgLy8gaWdub3JlIElNRSBjb25maXJtYXRpb25cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gLTEgJiYgYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwZGF0ZShbLi4uaXYudmFsdWVdLmZpbHRlcigodiwgaykgPT4gayAhPT0gYWN0aXZlSW5kZXgpKTtcblxuICAgICAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdGFnTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBpZiAodGFnTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIHRhZ0xpc3RbdGFnTGlzdC5sZW5ndGggLSAyXS5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHRhZ3MudmFsdWUucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd3JhcHBlci52YWx1ZS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdlbnRlcicpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgaWYgKCFjcmVhdGVPcHRpb24udmFsdWUgJiYgIXNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgXG4gICAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IFxuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdzcGFjZScpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgXG4gICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgIHNlbGVjdFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIFxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgIGNhc2UgJzsnOlxuICAgICAgY2FzZSAnLCc6XG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKGUua2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSB8fCAhY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBwcmVwYXJlUG9pbnRlcigpO1xuICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgYmx1cigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBiYWNrd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChzZWFyY2hhYmxlLnZhbHVlICYmIHRhZ3MudmFsdWUgJiYgdGFncy52YWx1ZS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnNlbGVjdGlvblN0YXJ0KVxuICAgICAgICAgIHx8IGUuc2hpZnRLZXkgfHwgbW9kZS52YWx1ZSAhPT0gJ3RhZ3MnIHx8ICFpdi52YWx1ZSB8fCAhaXYudmFsdWUubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICB0YWdMaXN0W3RhZ0xpc3QubGVuZ3RoLTFdLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICAgICAgdGFnTGlzdFthY3RpdmVJbmRleC0xXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IGUuc2hpZnRLZXkgfHwgbW9kZS52YWx1ZSAhPT0gJ3RhZ3MnIHx8ICFpdi52YWx1ZSB8fCAhaXYudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAodGFnTGlzdC5sZW5ndGggPiBhY3RpdmVJbmRleCArIDEpIHtcbiAgICAgICAgICB0YWdMaXN0W2FjdGl2ZUluZGV4KzFdLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHRhZ3MudmFsdWUucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgd3JhcHBlci52YWx1ZS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBicmVha1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXl1cCA9IChlKSA9PiB7XG4gICAgY29udGV4dC5lbWl0KCdrZXl1cCcsIGUsICR0aGlzKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGhhbmRsZUtleWRvd24sXG4gICAgaGFuZGxlS2V5dXAsXG4gICAgcHJlcGFyZVBvaW50ZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlQ2xhc3NlcyAocHJvcHMsIGNvbnRleHQsIGRlcGVuZGVuY2llcylcbntjb25zdCB7IFxuICAgIGNsYXNzZXM6IGNsYXNzZXNfLCBkaXNhYmxlZCwgc2hvd09wdGlvbnMsIGJyZWFrVGFnc1xuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzT3BlbiA9IGRlcGVuZGVuY2llcy5pc09wZW47XG4gIGNvbnN0IGlzUG9pbnRlZCA9IGRlcGVuZGVuY2llcy5pc1BvaW50ZWQ7XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSBkZXBlbmRlbmNpZXMuaXNTZWxlY3RlZDtcbiAgY29uc3QgaXNEaXNhYmxlZCA9IGRlcGVuZGVuY2llcy5pc0Rpc2FibGVkO1xuICBjb25zdCBpc0FjdGl2ZSA9IGRlcGVuZGVuY2llcy5pc0FjdGl2ZTtcbiAgY29uc3QgY2FuUG9pbnRHcm91cHMgPSBkZXBlbmRlbmNpZXMuY2FuUG9pbnRHcm91cHM7XG4gIGNvbnN0IHJlc29sdmluZyA9IGRlcGVuZGVuY2llcy5yZXNvbHZpbmc7XG4gIGNvbnN0IGZvID0gZGVwZW5kZW5jaWVzLmZvO1xuICBjb25zdCBwbGFjZW1lbnQgPSBkZXBlbmRlbmNpZXMucGxhY2VtZW50O1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgY2xhc3NlcyA9IHRvUmVmKCgpID0+ICh7XG4gICAgY29udGFpbmVyOiAnbXVsdGlzZWxlY3QnLFxuICAgIGNvbnRhaW5lckRpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIGNvbnRhaW5lck9wZW46ICdpcy1vcGVuJyxcbiAgICBjb250YWluZXJPcGVuVG9wOiAnaXMtb3Blbi10b3AnLFxuICAgIGNvbnRhaW5lckFjdGl2ZTogJ2lzLWFjdGl2ZScsXG4gICAgd3JhcHBlcjogJ211bHRpc2VsZWN0LXdyYXBwZXInLFxuICAgIHNpbmdsZUxhYmVsOiAnbXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsJyxcbiAgICBzaW5nbGVMYWJlbFRleHQ6ICdtdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dCcsXG4gICAgbXVsdGlwbGVMYWJlbDogJ211bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsJyxcbiAgICBzZWFyY2g6ICdtdWx0aXNlbGVjdC1zZWFyY2gnLFxuICAgIHRhZ3M6ICdtdWx0aXNlbGVjdC10YWdzJyxcbiAgICB0YWc6ICdtdWx0aXNlbGVjdC10YWcnLFxuICAgIHRhZ1dyYXBwZXI6ICdtdWx0aXNlbGVjdC10YWctd3JhcHBlcicsXG4gICAgdGFnV3JhcHBlckJyZWFrOiAnbXVsdGlzZWxlY3QtdGFnLXdyYXBwZXItYnJlYWsnLFxuICAgIHRhZ0Rpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIHRhZ1JlbW92ZTogJ211bHRpc2VsZWN0LXRhZy1yZW1vdmUnLFxuICAgIHRhZ1JlbW92ZUljb246ICdtdWx0aXNlbGVjdC10YWctcmVtb3ZlLWljb24nLFxuICAgIHRhZ3NTZWFyY2hXcmFwcGVyOiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtd3JhcHBlcicsXG4gICAgdGFnc1NlYXJjaDogJ211bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoJyxcbiAgICB0YWdzU2VhcmNoQ29weTogJ211bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHknLFxuICAgIHBsYWNlaG9sZGVyOiAnbXVsdGlzZWxlY3QtcGxhY2Vob2xkZXInLFxuICAgIGNhcmV0OiAnbXVsdGlzZWxlY3QtY2FyZXQnLFxuICAgIGNhcmV0T3BlbjogJ2lzLW9wZW4nLFxuICAgIGNsZWFyOiAnbXVsdGlzZWxlY3QtY2xlYXInLFxuICAgIGNsZWFySWNvbjogJ211bHRpc2VsZWN0LWNsZWFyLWljb24nLFxuICAgIHNwaW5uZXI6ICdtdWx0aXNlbGVjdC1zcGlubmVyJyxcbiAgICBpbmlmaW5pdGU6ICdtdWx0aXNlbGVjdC1pbmlmaXRlJyxcbiAgICBpbmlmaW5pdGVTcGlubmVyOiAnbXVsdGlzZWxlY3QtaW5pZml0ZS1zcGlubmVyJyxcbiAgICBkcm9wZG93bjogJ211bHRpc2VsZWN0LWRyb3Bkb3duJyxcbiAgICBkcm9wZG93blRvcDogJ2lzLXRvcCcsXG4gICAgZHJvcGRvd25IaWRkZW46ICdpcy1oaWRkZW4nLFxuICAgIG9wdGlvbnM6ICdtdWx0aXNlbGVjdC1vcHRpb25zJyxcbiAgICBvcHRpb25zVG9wOiAnaXMtdG9wJyxcbiAgICBncm91cDogJ211bHRpc2VsZWN0LWdyb3VwJyxcbiAgICBncm91cExhYmVsOiAnbXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwnLFxuICAgIGdyb3VwTGFiZWxQb2ludGFibGU6ICdpcy1wb2ludGFibGUnLFxuICAgIGdyb3VwTGFiZWxQb2ludGVkOiAnaXMtcG9pbnRlZCcsXG4gICAgZ3JvdXBMYWJlbFNlbGVjdGVkOiAnaXMtc2VsZWN0ZWQnLFxuICAgIGdyb3VwTGFiZWxEaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWRQb2ludGVkOiAnaXMtc2VsZWN0ZWQgaXMtcG9pbnRlZCcsXG4gICAgZ3JvdXBMYWJlbFNlbGVjdGVkRGlzYWJsZWQ6ICdpcy1zZWxlY3RlZCBpcy1kaXNhYmxlZCcsXG4gICAgZ3JvdXBPcHRpb25zOiAnbXVsdGlzZWxlY3QtZ3JvdXAtb3B0aW9ucycsXG4gICAgb3B0aW9uOiAnbXVsdGlzZWxlY3Qtb3B0aW9uJyxcbiAgICBvcHRpb25Qb2ludGVkOiAnaXMtcG9pbnRlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWQ6ICdpcy1zZWxlY3RlZCcsXG4gICAgb3B0aW9uRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWRQb2ludGVkOiAnaXMtc2VsZWN0ZWQgaXMtcG9pbnRlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWREaXNhYmxlZDogJ2lzLXNlbGVjdGVkIGlzLWRpc2FibGVkJyxcbiAgICBub09wdGlvbnM6ICdtdWx0aXNlbGVjdC1uby1vcHRpb25zJyxcbiAgICBub1Jlc3VsdHM6ICdtdWx0aXNlbGVjdC1uby1yZXN1bHRzJyxcbiAgICBmYWtlSW5wdXQ6ICdtdWx0aXNlbGVjdC1mYWtlLWlucHV0JyxcbiAgICBhc3Npc3Q6ICdtdWx0aXNlbGVjdC1hc3Npc3RpdmUtdGV4dCcsXG4gICAgc3BhY2VyOiAnbXVsdGlzZWxlY3Qtc3BhY2VyJyxcbiAgICAuLi5jbGFzc2VzXy52YWx1ZSxcbiAgfSkpO1xuXG4gIGNvbnN0IHNob3dEcm9wZG93biA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gISEoaXNPcGVuLnZhbHVlICYmIHNob3dPcHRpb25zLnZhbHVlICYmICghcmVzb2x2aW5nLnZhbHVlIHx8IChyZXNvbHZpbmcudmFsdWUgJiYgZm8udmFsdWUubGVuZ3RoKSkpXG4gIH0pO1xuXG4gIGNvbnN0IGNsYXNzTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjID0gY2xhc3Nlcy52YWx1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXI6IFtjLmNvbnRhaW5lcl1cbiAgICAgICAgLmNvbmNhdChkaXNhYmxlZC52YWx1ZSA/IGMuY29udGFpbmVyRGlzYWJsZWQgOiBbXSlcbiAgICAgICAgLmNvbmNhdChzaG93RHJvcGRvd24udmFsdWUgJiYgcGxhY2VtZW50LnZhbHVlID09PSAndG9wJyAgPyBjLmNvbnRhaW5lck9wZW5Ub3AgOiBbXSlcbiAgICAgICAgLmNvbmNhdChzaG93RHJvcGRvd24udmFsdWUgJiYgcGxhY2VtZW50LnZhbHVlICE9PSAndG9wJyA/IGMuY29udGFpbmVyT3BlbiA6IFtdKVxuICAgICAgICAuY29uY2F0KGlzQWN0aXZlLnZhbHVlID8gYy5jb250YWluZXJBY3RpdmUgOiBbXSksXG4gICAgICB3cmFwcGVyOiBjLndyYXBwZXIsXG4gICAgICBzcGFjZXI6IGMuc3BhY2VyLFxuICAgICAgc2luZ2xlTGFiZWw6IGMuc2luZ2xlTGFiZWwsXG4gICAgICBzaW5nbGVMYWJlbFRleHQ6IGMuc2luZ2xlTGFiZWxUZXh0LFxuICAgICAgbXVsdGlwbGVMYWJlbDogYy5tdWx0aXBsZUxhYmVsLFxuICAgICAgc2VhcmNoOiBjLnNlYXJjaCxcbiAgICAgIHRhZ3M6IGMudGFncyxcbiAgICAgIHRhZzogW2MudGFnXVxuICAgICAgICAuY29uY2F0KGRpc2FibGVkLnZhbHVlID8gYy50YWdEaXNhYmxlZCA6IFtdKSxcbiAgICAgIHRhZ1dyYXBwZXI6IFtjLnRhZ1dyYXBwZXIsIGJyZWFrVGFncy52YWx1ZSA/IGMudGFnV3JhcHBlckJyZWFrIDogbnVsbF0sXG4gICAgICB0YWdEaXNhYmxlZDogYy50YWdEaXNhYmxlZCxcbiAgICAgIHRhZ1JlbW92ZTogYy50YWdSZW1vdmUsXG4gICAgICB0YWdSZW1vdmVJY29uOiBjLnRhZ1JlbW92ZUljb24sXG4gICAgICB0YWdzU2VhcmNoV3JhcHBlcjogYy50YWdzU2VhcmNoV3JhcHBlcixcbiAgICAgIHRhZ3NTZWFyY2g6IGMudGFnc1NlYXJjaCxcbiAgICAgIHRhZ3NTZWFyY2hDb3B5OiBjLnRhZ3NTZWFyY2hDb3B5LFxuICAgICAgcGxhY2Vob2xkZXI6IGMucGxhY2Vob2xkZXIsXG4gICAgICBjYXJldDogW2MuY2FyZXRdXG4gICAgICAgIC5jb25jYXQoaXNPcGVuLnZhbHVlID8gYy5jYXJldE9wZW4gOiBbXSksXG4gICAgICBjbGVhcjogYy5jbGVhcixcbiAgICAgIGNsZWFySWNvbjogYy5jbGVhckljb24sXG4gICAgICBzcGlubmVyOiBjLnNwaW5uZXIsXG4gICAgICBpbmlmaW5pdGU6IGMuaW5pZmluaXRlLFxuICAgICAgaW5pZmluaXRlU3Bpbm5lcjogYy5pbmlmaW5pdGVTcGlubmVyLFxuICAgICAgZHJvcGRvd246IFtjLmRyb3Bkb3duXVxuICAgICAgICAuY29uY2F0KHBsYWNlbWVudC52YWx1ZSA9PT0gJ3RvcCcgPyBjLmRyb3Bkb3duVG9wIDogW10pXG4gICAgICAgIC5jb25jYXQoIWlzT3Blbi52YWx1ZSB8fCAhc2hvd09wdGlvbnMudmFsdWUgfHwgIXNob3dEcm9wZG93bi52YWx1ZSA/IGMuZHJvcGRvd25IaWRkZW4gOiBbXSksXG4gICAgICBvcHRpb25zOiBbYy5vcHRpb25zXVxuICAgICAgICAuY29uY2F0KHBsYWNlbWVudC52YWx1ZSA9PT0gJ3RvcCcgPyBjLm9wdGlvbnNUb3AgOiBbXSksXG4gICAgICBncm91cDogYy5ncm91cCxcbiAgICAgIGdyb3VwTGFiZWw6IChnKSA9PiB7XG4gICAgICAgIGxldCBncm91cExhYmVsID0gW2MuZ3JvdXBMYWJlbF07XG5cbiAgICAgICAgaWYgKGlzUG9pbnRlZChnKSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChpc1NlbGVjdGVkKGcpID8gYy5ncm91cExhYmVsU2VsZWN0ZWRQb2ludGVkIDogYy5ncm91cExhYmVsUG9pbnRlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTZWxlY3RlZChnKSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChpc0Rpc2FibGVkKGcpID8gYy5ncm91cExhYmVsU2VsZWN0ZWREaXNhYmxlZCA6IGMuZ3JvdXBMYWJlbFNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKGcpKSB7XG4gICAgICAgICAgZ3JvdXBMYWJlbC5wdXNoKGMuZ3JvdXBMYWJlbERpc2FibGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChjLmdyb3VwTGFiZWxQb2ludGFibGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwTGFiZWxcbiAgICAgIH0sXG4gICAgICBncm91cE9wdGlvbnM6IGMuZ3JvdXBPcHRpb25zLFxuICAgICAgb3B0aW9uOiAobywgZykgPT4ge1xuICAgICAgICBsZXQgb3B0aW9uID0gW2Mub3B0aW9uXTtcblxuICAgICAgICBpZiAoaXNQb2ludGVkKG8pKSB7XG4gICAgICAgICAgb3B0aW9uLnB1c2goaXNTZWxlY3RlZChvKSA/IGMub3B0aW9uU2VsZWN0ZWRQb2ludGVkIDogYy5vcHRpb25Qb2ludGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkKG8pKSB7XG4gICAgICAgICAgb3B0aW9uLnB1c2goaXNEaXNhYmxlZChvKSA/IGMub3B0aW9uU2VsZWN0ZWREaXNhYmxlZCA6IGMub3B0aW9uU2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGlzYWJsZWQobykgfHwgKGcgJiYgaXNEaXNhYmxlZChnKSkpIHtcbiAgICAgICAgICBvcHRpb24ucHVzaChjLm9wdGlvbkRpc2FibGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgIH0sXG4gICAgICBub09wdGlvbnM6IGMubm9PcHRpb25zLFxuICAgICAgbm9SZXN1bHRzOiBjLm5vUmVzdWx0cyxcbiAgICAgIGFzc2lzdDogYy5hc3Npc3QsXG4gICAgICBmYWtlSW5wdXQ6IGMuZmFrZUlucHV0LFxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc0xpc3QsXG4gICAgc2hvd0Ryb3Bkb3duLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVNjcm9sbCAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIGxpbWl0LCBpbmZpbml0ZSxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvZmZzZXQgPSBkZXAub2Zmc2V0O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBwZm8gPSBkZXAucGZvO1xuICBjb25zdCBlbyA9IGRlcC5lbztcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBvYnNlcnZlciA9IHJlZihudWxsKTtcblxuICBjb25zdCBpbmZpbml0ZUxvYWRlciA9IHNoYWxsb3dSZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCBoYXNNb3JlID0gdG9SZWYoKCkgPT4ge1xuICAgIHJldHVybiBvZmZzZXQudmFsdWUgPCBwZm8udmFsdWUubGVuZ3RoXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGhhbmRsZUludGVyc2VjdGlvbk9ic2VydmVyID0gKGVudHJpZXMpID0+IHtcbiAgICBjb25zdCB7IGlzSW50ZXJzZWN0aW5nLCB0YXJnZXQgfSA9IGVudHJpZXNbMF07XG5cbiAgICBpZiAoaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5vZmZzZXRQYXJlbnQ7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBwYXJlbnQuc2Nyb2xsVG9wO1xuXG4gICAgICBvZmZzZXQudmFsdWUgKz0gbGltaXQudmFsdWUgPT0gLTEgPyAxMCA6IGxpbWl0LnZhbHVlO1xuXG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHBhcmVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZSA9ICgpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc09wZW4udmFsdWUgJiYgb2Zmc2V0LnZhbHVlIDwgcGZvLnZhbHVlLmxlbmd0aCkge1xuICAgICAgb2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShpbmZpbml0ZUxvYWRlci52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICghaXNPcGVuLnZhbHVlICYmIG9ic2VydmVyLnZhbHVlKSB7XG4gICAgICBvYnNlcnZlci52YWx1ZS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2JzZXJ2ZSgpO1xuICB9KTtcblxuICB3YXRjaChzZWFyY2gsICgpID0+IHtcbiAgICBpZiAoIWluZmluaXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBvZmZzZXQudmFsdWUgPSBsaW1pdC52YWx1ZTtcblxuICAgIG9ic2VydmUoKTtcbiAgfSwgeyBmbHVzaDogJ3Bvc3QnIH0pO1xuXG4gIHdhdGNoKGVvLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2JzZXJ2ZSgpO1xuICB9LCB7IGltbWVkaWF0ZTogZmFsc2UsIGZsdXNoOiAncG9zdCcgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBIT09LUyA9PT09PT09PT09PT09PT1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHdpbmRvdyAmJiB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZUludGVyc2VjdGlvbk9ic2VydmVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaGFzTW9yZSxcbiAgICBpbmZpbml0ZUxvYWRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBMTF5IChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgcGxhY2Vob2xkZXIsIGlkLCB2YWx1ZVByb3AsIGxhYmVsOiBsYWJlbFByb3AsIG1vZGUsIGdyb3VwTGFiZWwsIGFyaWEsIHNlYXJjaGFibGUgLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IHBvaW50ZXIgPSBkZXAucG9pbnRlcjtcbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGhhc1NlbGVjdGVkID0gZGVwLmhhc1NlbGVjdGVkO1xuICBjb25zdCBtdWx0aXBsZUxhYmVsVGV4dCA9IGRlcC5tdWx0aXBsZUxhYmVsVGV4dDtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGxhYmVsID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYXJpYUFzc2lzdCA9IHRvUmVmKCgpID0+IChcbiAgICBgJHtpZC52YWx1ZSA/IGlkLnZhbHVlICsgJy0nIDogJyd9YXNzaXN0YFxuICApKTtcblxuICBjb25zdCBhcmlhQ29udHJvbHMgPSB0b1JlZigoKSA9PiAoXG4gICAgYCR7aWQudmFsdWUgPyBpZC52YWx1ZSArICctJyA6ICcnfW11bHRpc2VsZWN0LW9wdGlvbnNgXG4gICkpO1xuXG4gIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50ID0gdG9SZWYoKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlKSB7XG4gICAgICBsZXQgdGV4dHMgPSBpZC52YWx1ZVxuICAgICAgICA/IGAke2lkLnZhbHVlfS1gXG4gICAgICAgIDogJyc7XG5cbiAgICAgIHRleHRzICs9IGAke3BvaW50ZXIudmFsdWUuZ3JvdXAgPyAnbXVsdGlzZWxlY3QtZ3JvdXAnIDogJ211bHRpc2VsZWN0LW9wdGlvbid9LWA7XG5cbiAgICAgIHRleHRzICs9IHBvaW50ZXIudmFsdWUuZ3JvdXAgPyBwb2ludGVyLnZhbHVlLmluZGV4IDogcG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdO1xuXG4gICAgICByZXR1cm4gdGV4dHNcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFQbGFjZWhvbGRlciA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gcGxhY2Vob2xkZXIudmFsdWVcbiAgfSk7XG5cbiAgY29uc3QgYXJpYU11bHRpc2VsZWN0YWJsZSA9IHRvUmVmKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZSdcbiAgfSk7XG5cbiAgY29uc3QgYXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGl2LnZhbHVlW2xhYmVsUHJvcC52YWx1ZV1cbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ211bHRpcGxlJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG11bHRpcGxlTGFiZWxUZXh0LnZhbHVlXG4gICAgfVxuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICd0YWdzJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGl2LnZhbHVlLm1hcCh2ID0+IHZbbGFiZWxQcm9wLnZhbHVlXSkuam9pbignLCAnKVxuICAgIH1cblxuICAgIHJldHVybiAnJ1xuICB9KTtcblxuICBjb25zdCBhcmlhcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgYXJpYXMgPSB7IC4uLmFyaWEudmFsdWUgfTtcbiAgICBcbiAgICAvLyBOZWVkIHRvIGFkZCBtYW51YWxseSBiZWNhdXNlIGZvY3VzaW5nXG4gICAgLy8gdGhlIGlucHV0IHdvbid0IHJlYWQgdGhlIHNlbGVjdGVkIHZhbHVlXG4gICAgaWYgKHNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgIGFyaWFzWydhcmlhLWxhYmVsbGVkYnknXSA9IGFyaWFzWydhcmlhLWxhYmVsbGVkYnknXVxuICAgICAgICA/IGAke2FyaWFBc3Npc3QudmFsdWV9ICR7YXJpYXNbJ2FyaWEtbGFiZWxsZWRieSddfWBcbiAgICAgICAgOiBhcmlhQXNzaXN0LnZhbHVlO1xuICAgICAgXG4gICAgICBpZiAoYXJpYUxhYmVsLnZhbHVlICYmIGFyaWFzWydhcmlhLWxhYmVsJ10pIHtcbiAgICAgICAgYXJpYXNbJ2FyaWEtbGFiZWwnXSA9IGAke2FyaWFMYWJlbC52YWx1ZX0sICR7YXJpYXNbJ2FyaWEtbGFiZWwnXX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmlhc1xuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFyaWFPcHRpb25JZCA9IChvcHRpb24pID0+IChcbiAgICBgJHtpZC52YWx1ZSA/IGlkLnZhbHVlICsgJy0nIDogJyd9bXVsdGlzZWxlY3Qtb3B0aW9uLSR7b3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV19YFxuICApO1xuXG4gIGNvbnN0IGFyaWFHcm91cElkID0gKG9wdGlvbikgPT4gKFxuICAgIGAke2lkLnZhbHVlID8gaWQudmFsdWUgKyAnLScgOiAnJ31tdWx0aXNlbGVjdC1ncm91cC0ke29wdGlvbi5pbmRleH1gXG4gICk7XG5cbiAgY29uc3QgYXJpYU9wdGlvbkxhYmVsID0gKGxhYmVsKSA9PiBgJHtsYWJlbH1gO1xuXG4gIGNvbnN0IGFyaWFHcm91cExhYmVsID0gKGxhYmVsKSA9PiBgJHtsYWJlbH1gO1xuXG4gIGNvbnN0IGFyaWFUYWdMYWJlbCA9IChsYWJlbCkgPT4gYCR7bGFiZWx9IOKdjmA7XG5cbiAgLy8gPT09PT09PT09PT09PT09IEhPT0tTID09PT09PT09PT09PT09PT1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGlkLnZhbHVlICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIHtcbiAgICAgIGxldCBmb3JUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZm9yPVwiJHtpZC52YWx1ZX1cIl1gKTtcbiAgICAgIGxhYmVsLnZhbHVlID0gZm9yVGFnID8gZm9yVGFnLmlubmVyVGV4dCA6IG51bGw7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFyaWFzLFxuICAgIGFyaWFMYWJlbCxcbiAgICBhcmlhQXNzaXN0LFxuICAgIGFyaWFDb250cm9scyxcbiAgICBhcmlhUGxhY2Vob2xkZXIsXG4gICAgYXJpYU11bHRpc2VsZWN0YWJsZSxcbiAgICBhcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICBhcmlhT3B0aW9uSWQsXG4gICAgYXJpYU9wdGlvbkxhYmVsLFxuICAgIGFyaWFHcm91cElkLFxuICAgIGFyaWFHcm91cExhYmVsLFxuICAgIGFyaWFUYWdMYWJlbCxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VJMThuIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgbG9jYWxlLCBmYWxsYmFja0xvY2FsZSxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBsb2NhbGl6ZSA9ICh0YXJnZXQpID0+IHtcbiAgICBpZiAoIXRhcmdldCB8fCB0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRhcmdldFxuICAgIH1cblxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0W2xvY2FsZS52YWx1ZV0pIHtcbiAgICAgIHJldHVybiB0YXJnZXRbbG9jYWxlLnZhbHVlXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIGxvY2FsZS52YWx1ZSAmJiB0YXJnZXRbbG9jYWxlLnZhbHVlLnRvVXBwZXJDYXNlKCldKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W2xvY2FsZS52YWx1ZS50b1VwcGVyQ2FzZSgpXVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldFtmYWxsYmFja0xvY2FsZS52YWx1ZV0pIHtcbiAgICAgIHJldHVybiB0YXJnZXRbZmFsbGJhY2tMb2NhbGUudmFsdWVdXG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgZmFsbGJhY2tMb2NhbGUudmFsdWUgJiYgdGFyZ2V0W2ZhbGxiYWNrTG9jYWxlLnZhbHVlLnRvVXBwZXJDYXNlKCldKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W2ZhbGxiYWNrTG9jYWxlLnZhbHVlLnRvVXBwZXJDYXNlKCldXG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgT2JqZWN0LmtleXModGFyZ2V0KVswXSkge1xuICAgICAgcmV0dXJuIHRhcmdldFtPYmplY3Qua2V5cyh0YXJnZXQpWzBdXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBsb2NhbGl6ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VSZWZzIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IG11bHRpc2VsZWN0ID0gc2hhbGxvd1JlZihudWxsKTtcbiAgXG4gIGNvbnN0IHdyYXBwZXIgPSBzaGFsbG93UmVmKG51bGwpO1xuXG4gIGNvbnN0IHRhZ3MgPSBzaGFsbG93UmVmKG51bGwpO1xuXG4gIGNvbnN0IGlucHV0ID0gc2hhbGxvd1JlZihudWxsKTtcblxuICBjb25zdCBkcm9wZG93biA9IHNoYWxsb3dSZWYobnVsbCk7XG5cbiAgcmV0dXJuIHtcbiAgICBtdWx0aXNlbGVjdCxcbiAgICB3cmFwcGVyLFxuICAgIHRhZ3MsXG4gICAgaW5wdXQsXG4gICAgZHJvcGRvd24sXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlcHMgKHByb3BzLCBjb250ZXh0LCBmZWF0dXJlcywgZGVwcyA9IHt9KSB7XG4gIGZlYXR1cmVzLmZvckVhY2goKGNvbXBvc2FibGUpID0+IHtcbiAgICBkZXBzID0ge1xuICAgICAgLi4uZGVwcyxcbiAgICAgIC4uLmNvbXBvc2FibGUocHJvcHMsIGNvbnRleHQsIGRlcHMpXG4gICAgfTtcbiAgfSk7XG4gIFxuICByZXR1cm4gZGVwc1xufVxuXG52YXIgc2NyaXB0ID0ge1xuICAgIG5hbWU6ICdNdWx0aXNlbGVjdCcsXG4gICAgZW1pdHM6IFtcbiAgICAgICdwYXN0ZScsICdvcGVuJywgJ2Nsb3NlJywgJ3NlbGVjdCcsICdkZXNlbGVjdCcsIFxuICAgICAgJ2lucHV0JywgJ3NlYXJjaC1jaGFuZ2UnLCAndGFnJywgJ29wdGlvbicsICd1cGRhdGU6bW9kZWxWYWx1ZScsXG4gICAgICAnY2hhbmdlJywgJ2NsZWFyJywgJ2tleWRvd24nLCAna2V5dXAnLCAnbWF4JywgJ2NyZWF0ZScsXG4gICAgXSxcbiAgICBwcm9wczoge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG1vZGVsVmFsdWU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogW0FycmF5LCBPYmplY3QsIEZ1bmN0aW9uXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoW10pXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgbmFtZToge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdtdWx0aXNlbGVjdCcsXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBsYWJlbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2xhYmVsJyxcbiAgICAgIH0sXG4gICAgICB0cmFja0J5OiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgdmFsdWVQcm9wOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAndmFsdWUnLFxuICAgICAgfSxcbiAgICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIG1vZGU6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdzaW5nbGUnLCAvLyBzaW5nbGV8bXVsdGlwbGV8dGFnc1xuICAgICAgfSxcbiAgICAgIHNlYXJjaGFibGU6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBsaW1pdDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgaGlkZVNlbGVjdGVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjcmVhdGVUYWc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY3JlYXRlT3B0aW9uOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFwcGVuZE5ld1RhZzoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhcHBlbmROZXdPcHRpb246IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYWRkVGFnT246IHtcbiAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFkZE9wdGlvbk9uOiB7XG4gICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjYXJldDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgbG9hZGluZzoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5vT3B0aW9uc1RleHQ6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnVGhlIGxpc3QgaXMgZW1wdHknLFxuICAgICAgfSxcbiAgICAgIG5vUmVzdWx0c1RleHQ6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnTm8gcmVzdWx0cyBmb3VuZCcsXG4gICAgICB9LFxuICAgICAgbXVsdGlwbGVMYWJlbDoge1xuICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgb2JqZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZGVsYXk6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIG1pbkNoYXJzOiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmVPbkxvYWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGZpbHRlclJlc3VsdHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsZWFyT25TZWFyY2g6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjbGVhck9uU2VsZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjYW5EZXNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2FuQ2xlYXI6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1heDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgc2hvd09wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3BlbkRpcmVjdGlvbjoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgICAgbmF0aXZlU3VwcG9ydDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICAgIH0sXG4gICAgICBzdHJpY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25TZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25EZXNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGdyb3Vwczoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGdyb3VwTGFiZWw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgICAgZ3JvdXBPcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnb3B0aW9ucycsXG4gICAgICB9LFxuICAgICAgZ3JvdXBIaWRlRW1wdHk6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cFNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgaW5wdXRUeXBlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAndGV4dCcsXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSksXG4gICAgICB9LFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkUHJvcDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2Rpc2FibGVkJyxcbiAgICAgIH0sXG4gICAgICBzZWFyY2hTdGFydDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHJldmVyc2U6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICByZWdleDoge1xuICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIFJlZ0V4cF0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHJ0bDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluZmluaXRlOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXJpYToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KSxcbiAgICAgIH0sXG4gICAgICBjbGVhck9uQmx1cjoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgbG9jYWxlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIGZhbGxiYWNrTG9jYWxlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBkZWZhdWx0OiAnZW4nLFxuICAgICAgfSxcbiAgICAgIHNlYXJjaEZpbHRlcjoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIGFsbG93QWJzZW50OiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXBwZW5kVG9Cb2R5OiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgY2xvc2VPblNjcm9sbDoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGJyZWFrVGFnczoge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFwcGVuZFRvOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXAocHJvcHMsIGNvbnRleHQpXG4gICAgeyBcbiAgICAgIHJldHVybiByZXNvbHZlRGVwcyhwcm9wcywgY29udGV4dCwgW1xuICAgICAgICB1c2VSZWZzLFxuICAgICAgICB1c2VJMThuLFxuICAgICAgICB1c2VWYWx1ZSxcbiAgICAgICAgdXNlUG9pbnRlciQxLFxuICAgICAgICB1c2VEcm9wZG93bixcbiAgICAgICAgdXNlU2VhcmNoLFxuICAgICAgICB1c2VEYXRhLFxuICAgICAgICB1c2VNdWx0aXNlbGVjdCxcbiAgICAgICAgdXNlT3B0aW9ucyxcbiAgICAgICAgdXNlU2Nyb2xsLFxuICAgICAgICB1c2VQb2ludGVyLFxuICAgICAgICB1c2VLZXlib2FyZCxcbiAgICAgICAgdXNlQ2xhc3NlcyxcbiAgICAgICAgdXNlQTExeSxcbiAgICAgIF0pXG4gICAgfSxcbiAgICBiZWZvcmVNb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLiRyb290LmNvbnN0cnVjdG9yPy52ZXJzaW9uPy5tYXRjaCgvXjJcXC4vKSB8fCB0aGlzLnZ1ZVZlcnNpb25NcyA9PT0gMikge1xuICAgICAgICBpZiAoIXRoaXMuJG9wdGlvbnMuY29tcG9uZW50cy5UZWxlcG9ydCkge1xuICAgICAgICAgIHRoaXMuJG9wdGlvbnMuY29tcG9uZW50cy5UZWxlcG9ydCA9IHtcbiAgICAgICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHNsb3RzLmRlZmF1bHQgPyB0aGlzLiRzbG90cy5kZWZhdWx0WzBdIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmNvbnN0IF9ob2lzdGVkXzEgPSBbXCJpZFwiLCBcImRpclwiXTtcbmNvbnN0IF9ob2lzdGVkXzIgPSBbXCJ0YWJpbmRleFwiLCBcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsIFwicm9sZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzMgPSBbXCJ0eXBlXCIsIFwibW9kZWxWYWx1ZVwiLCBcInZhbHVlXCIsIFwiYXV0b2NvbXBsZXRlXCIsIFwiaWRcIiwgXCJhcmlhLWNvbnRyb2xzXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzQgPSBbXCJvbktleXVwXCIsIFwiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzUgPSBbXCJvbkNsaWNrXCJdO1xuY29uc3QgX2hvaXN0ZWRfNiA9IFtcInR5cGVcIiwgXCJtb2RlbFZhbHVlXCIsIFwidmFsdWVcIiwgXCJpZFwiLCBcImF1dG9jb21wbGV0ZVwiLCBcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCJdO1xuY29uc3QgX2hvaXN0ZWRfNyA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzggPSBbXCJpZFwiXTtcbmNvbnN0IF9ob2lzdGVkXzkgPSBbXCJpZFwiXTtcbmNvbnN0IF9ob2lzdGVkXzEwID0gW1wiaWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1zZWxlY3RlZFwiXTtcbmNvbnN0IF9ob2lzdGVkXzExID0gW1wiZGF0YS1wb2ludGVkXCIsIFwib25Nb3VzZWVudGVyXCIsIFwib25DbGlja1wiXTtcbmNvbnN0IF9ob2lzdGVkXzEyID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTMgPSBbXCJhcmlhLWxhYmVsXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTQgPSBbXCJkYXRhLXBvaW50ZWRcIiwgXCJkYXRhLXNlbGVjdGVkXCIsIFwib25Nb3VzZWVudGVyXCIsIFwib25DbGlja1wiLCBcImlkXCIsIFwiYXJpYS1zZWxlY3RlZFwiLCBcImFyaWEtbGFiZWxcIl07XG5jb25zdCBfaG9pc3RlZF8xNSA9IFtcImRhdGEtcG9pbnRlZFwiLCBcImRhdGEtc2VsZWN0ZWRcIiwgXCJvbk1vdXNlZW50ZXJcIiwgXCJvbkNsaWNrXCIsIFwiaWRcIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE2ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTcgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF8xOCA9IFtcInZhbHVlXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTkgPSBbXCJuYW1lXCIsIFwidmFsdWVcIl07XG5jb25zdCBfaG9pc3RlZF8yMCA9IFtcIm5hbWVcIiwgXCJ2YWx1ZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzIxID0gW1wiaWRcIl07XG5cbmZ1bmN0aW9uIHJlbmRlcihfY3R4LCBfY2FjaGUsICRwcm9wcywgJHNldHVwLCAkZGF0YSwgJG9wdGlvbnMpIHtcbiAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICByZWY6IFwibXVsdGlzZWxlY3RcIixcbiAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuY29udGFpbmVyKSxcbiAgICBpZDogJHByb3BzLnNlYXJjaGFibGUgPyB1bmRlZmluZWQgOiAkcHJvcHMuaWQsXG4gICAgZGlyOiAkcHJvcHMucnRsID8gJ3J0bCcgOiB1bmRlZmluZWQsXG4gICAgb25Gb2N1c2luOiBfY2FjaGVbMTJdIHx8IChfY2FjaGVbMTJdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUZvY3VzSW4gJiYgX2N0eC5oYW5kbGVGb2N1c0luKC4uLmFyZ3MpKSksXG4gICAgb25Gb2N1c291dDogX2NhY2hlWzEzXSB8fCAoX2NhY2hlWzEzXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVGb2N1c091dCAmJiBfY3R4LmhhbmRsZUZvY3VzT3V0KC4uLmFyZ3MpKSksXG4gICAgb25LZXl1cDogX2NhY2hlWzE0XSB8fCAoX2NhY2hlWzE0XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXl1cCAmJiBfY3R4LmhhbmRsZUtleXVwKC4uLmFyZ3MpKSksXG4gICAgb25LZXlkb3duOiBfY2FjaGVbMTVdIHx8IChfY2FjaGVbMTVdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleWRvd24gJiYgX2N0eC5oYW5kbGVLZXlkb3duKC4uLmFyZ3MpKSlcbiAgfSwgW1xuICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCBtZXJnZVByb3BzKHtcbiAgICAgIGNsYXNzOiBfY3R4LmNsYXNzTGlzdC53cmFwcGVyLFxuICAgICAgb25Nb3VzZWRvd246IF9jYWNoZVs5XSB8fCAoX2NhY2hlWzldID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZU1vdXNlZG93biAmJiBfY3R4LmhhbmRsZU1vdXNlZG93biguLi5hcmdzKSkpLFxuICAgICAgcmVmOiBcIndyYXBwZXJcIixcbiAgICAgIHRhYmluZGV4OiBfY3R4LnRhYmluZGV4LFxuICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6ICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguYXJpYUNvbnRyb2xzIDogdW5kZWZpbmVkLFxuICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6ICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguYXJpYVBsYWNlaG9sZGVyIDogdW5kZWZpbmVkLFxuICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6ICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguaXNPcGVuIDogdW5kZWZpbmVkLFxuICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5hcmlhQWN0aXZlRGVzY2VuZGFudCA6IHVuZGVmaW5lZCxcbiAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5hcmlhTXVsdGlzZWxlY3RhYmxlIDogdW5kZWZpbmVkLFxuICAgICAgcm9sZTogISRwcm9wcy5zZWFyY2hhYmxlID8gJ2NvbWJvYm94JyA6IHVuZGVmaW5lZFxuICAgIH0sICEkcHJvcHMuc2VhcmNoYWJsZSA/IF9jdHguYXJpYXMgOiB7fSksIFtcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTZWFyY2ggXCIpLFxuICAgICAgKCRwcm9wcy5tb2RlICE9PSAndGFncycgJiYgJHByb3BzLnNlYXJjaGFibGUgJiYgISRwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIsIG1lcmdlUHJvcHMoe1xuICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgdHlwZTogJHByb3BzLmlucHV0VHlwZSxcbiAgICAgICAgICAgIG1vZGVsVmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgICAgdmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgICAgY2xhc3M6IF9jdHguY2xhc3NMaXN0LnNlYXJjaCxcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogJHByb3BzLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGlkOiAkcHJvcHMuc2VhcmNoYWJsZSA/ICRwcm9wcy5pZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG9uSW5wdXQ6IF9jYWNoZVswXSB8fCAoX2NhY2hlWzBdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVNlYXJjaElucHV0ICYmIF9jdHguaGFuZGxlU2VhcmNoSW5wdXQoLi4uYXJncykpKSxcbiAgICAgICAgICAgIG9uS2V5cHJlc3M6IF9jYWNoZVsxXSB8fCAoX2NhY2hlWzFdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleXByZXNzICYmIF9jdHguaGFuZGxlS2V5cHJlc3MoLi4uYXJncykpKSxcbiAgICAgICAgICAgIG9uUGFzdGU6IF9jYWNoZVsyXSB8fCAoX2NhY2hlWzJdID0gd2l0aE1vZGlmaWVycygoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlUGFzdGUgJiYgX2N0eC5oYW5kbGVQYXN0ZSguLi5hcmdzKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IF9jdHguYXJpYUNvbnRyb2xzLFxuICAgICAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IF9jdHguYXJpYVBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgICAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogX2N0eC5hcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICAgICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogX2N0eC5hcmlhTXVsdGlzZWxlY3RhYmxlLFxuICAgICAgICAgICAgcm9sZTogXCJjb21ib2JveFwiXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgLi4uJHByb3BzLmF0dHJzLFxuICAgICAgICAgICAgLi4uX2N0eC5hcmlhcyxcbiAgICAgICAgICB9KSwgbnVsbCwgMTYgLyogRlVMTF9QUk9QUyAqLywgX2hvaXN0ZWRfMykpXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBUYWdzICh3aXRoIHNlYXJjaCkgXCIpLFxuICAgICAgKCRwcm9wcy5tb2RlID09ICd0YWdzJylcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAgICBrZXk6IDEsXG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFncyksXG4gICAgICAgICAgICBcImRhdGEtdGFnc1wiOiBcIlwiXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCBudWxsLCByZW5kZXJMaXN0KF9jdHguaXYsIChvcHRpb24sIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJ0YWdcIiwge1xuICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgIGhhbmRsZVRhZ1JlbW92ZTogX2N0eC5oYW5kbGVUYWdSZW1vdmUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICRwcm9wcy5kaXNhYmxlZFxuICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhbXG4gICAgICAgICAgICAgICAgX2N0eC5jbGFzc0xpc3QudGFnLFxuICAgICAgICAgICAgICAgIG9wdGlvbi5kaXNhYmxlZCA/IF9jdHguY2xhc3NMaXN0LnRhZ0Rpc2FibGVkIDogbnVsbCxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICAgICAgICAgICAgb25LZXl1cDogd2l0aEtleXMoJGV2ZW50ID0+IChfY3R4LmhhbmRsZVRhZ1JlbW92ZShvcHRpb24sICRldmVudCkpLCBbXCJlbnRlclwiXSksXG4gICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFUYWdMYWJlbChfY3R4LmxvY2FsaXplKG9wdGlvblskcHJvcHMubGFiZWxdKSlcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ1dyYXBwZXIpXG4gICAgICAgICAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLCAzIC8qIFRFWFQsIENMQVNTICovKSxcbiAgICAgICAgICAgICAgICAgICghJHByb3BzLmRpc2FibGVkICYmICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdSZW1vdmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogd2l0aE1vZGlmaWVycygkZXZlbnQgPT4gKF9jdHguaGFuZGxlVGFnUmVtb3ZlKG9wdGlvbiwgJGV2ZW50KSksIFtcInN0b3BcIl0pXG4gICAgICAgICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdSZW1vdmVJY29uKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgICAgICAgICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzUpKVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICAgICAgICBdLCA0MiAvKiBDTEFTUywgUFJPUFMsIE5FRURfSFlEUkFUSU9OICovLCBfaG9pc3RlZF80KSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpLFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ3NTZWFyY2hXcmFwcGVyKSxcbiAgICAgICAgICAgICAgcmVmOiBcInRhZ3NcIlxuICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgVXNlZCBmb3IgbWVhc3VyaW5nIHNlYXJjaCB3aWR0aCBcIiksXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoQ29weSlcbiAgICAgICAgICAgICAgfSwgdG9EaXNwbGF5U3RyaW5nKF9jdHguc2VhcmNoKSwgMyAvKiBURVhULCBDTEFTUyAqLyksXG4gICAgICAgICAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBBY3R1YWwgc2VhcmNoIGlucHV0IFwiKSxcbiAgICAgICAgICAgICAgKCRwcm9wcy5zZWFyY2hhYmxlICYmICEkcHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIsIG1lcmdlUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICRwcm9wcy5pbnB1dFR5cGUsXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsVmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBpZDogJHByb3BzLnNlYXJjaGFibGUgPyAkcHJvcHMuaWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogJHByb3BzLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgICAgb25JbnB1dDogX2NhY2hlWzNdIHx8IChfY2FjaGVbM10gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlU2VhcmNoSW5wdXQgJiYgX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCguLi5hcmdzKSkpLFxuICAgICAgICAgICAgICAgICAgICBvbktleXByZXNzOiBfY2FjaGVbNF0gfHwgKF9jYWNoZVs0XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXlwcmVzcyAmJiBfY3R4LmhhbmRsZUtleXByZXNzKC4uLmFyZ3MpKSksXG4gICAgICAgICAgICAgICAgICAgIG9uUGFzdGU6IF9jYWNoZVs1XSB8fCAoX2NhY2hlWzVdID0gd2l0aE1vZGlmaWVycygoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlUGFzdGUgJiYgX2N0eC5oYW5kbGVQYXN0ZSguLi5hcmdzKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBfY3R4LmFyaWFDb250cm9scyxcbiAgICAgICAgICAgICAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IF9jdHguYXJpYVBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogX2N0eC5pc09wZW4sXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogX2N0eC5hcmlhTXVsdGlzZWxlY3RhYmxlLFxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAuLi4kcHJvcHMuYXR0cnMsXG4gICAgICAgICAgICAgICAgLi4uX2N0eC5hcmlhcyxcbiAgICAgICAgICAgICAgfSksIG51bGwsIDE2IC8qIEZVTExfUFJPUFMgKi8sIF9ob2lzdGVkXzYpKVxuICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKVxuICAgICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICBdLCAyIC8qIENMQVNTICovKSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNpbmdsZSBsYWJlbCBcIiksXG4gICAgICAoJHByb3BzLm1vZGUgPT0gJ3NpbmdsZScgJiYgX2N0eC5oYXNTZWxlY3RlZCAmJiAhX2N0eC5zZWFyY2ggJiYgX2N0eC5pdilcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInNpbmdsZWxhYmVsXCIsIHtcbiAgICAgICAgICAgIGtleTogMixcbiAgICAgICAgICAgIHZhbHVlOiBfY3R4Lml2XG4gICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNpbmdsZUxhYmVsKVxuICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc2luZ2xlTGFiZWxUZXh0KVxuICAgICAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShfY3R4Lml2WyRwcm9wcy5sYWJlbF0pKSwgMyAvKiBURVhULCBDTEFTUyAqLylcbiAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIE11bHRpcGxlIGxhYmVsIFwiKSxcbiAgICAgICgkcHJvcHMubW9kZSA9PSAnbXVsdGlwbGUnICYmIF9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoKVxuICAgICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwibXVsdGlwbGVsYWJlbFwiLCB7XG4gICAgICAgICAgICBrZXk6IDMsXG4gICAgICAgICAgICB2YWx1ZXM6IF9jdHguaXZcbiAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QubXVsdGlwbGVMYWJlbCksXG4gICAgICAgICAgICAgIGlubmVySFRNTDogX2N0eC5tdWx0aXBsZUxhYmVsVGV4dFxuICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF83KVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBQbGFjZWhvbGRlciBcIiksXG4gICAgICAoJHByb3BzLnBsYWNlaG9sZGVyICYmICFfY3R4Lmhhc1NlbGVjdGVkICYmICFfY3R4LnNlYXJjaClcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInBsYWNlaG9sZGVyXCIsIHsga2V5OiA0IH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5wbGFjZWhvbGRlciksXG4gICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICAgICAgICAgIH0sIHRvRGlzcGxheVN0cmluZygkcHJvcHMucGxhY2Vob2xkZXIpLCAzIC8qIFRFWFQsIENMQVNTICovKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTcGlubmVyIFwiKSxcbiAgICAgICgkcHJvcHMubG9hZGluZyB8fCBfY3R4LnJlc29sdmluZylcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInNwaW5uZXJcIiwgeyBrZXk6IDUgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5zcGlubmVyKSxcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ2xlYXIgXCIpLFxuICAgICAgKF9jdHguaGFzU2VsZWN0ZWQgJiYgISRwcm9wcy5kaXNhYmxlZCAmJiAkcHJvcHMuY2FuQ2xlYXIgJiYgIV9jdHguYnVzeSlcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImNsZWFyXCIsIHtcbiAgICAgICAgICAgIGtleTogNixcbiAgICAgICAgICAgIGNsZWFyOiBfY3R4LmNsZWFyXG4gICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgIHRhYmluZGV4OiBcIjBcIixcbiAgICAgICAgICAgICAgcm9sZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgXCJkYXRhLWNsZWFyXCI6IFwiXCIsXG4gICAgICAgICAgICAgIFwiYXJpYS1yb2xlZGVzY3JpcHRpb25cIjogXCLinY5cIixcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNsZWFyKSxcbiAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzZdIHx8IChfY2FjaGVbNl0gPSAoLi4uYXJncykgPT4gKF9jdHguY2xlYXIgJiYgX2N0eC5jbGVhciguLi5hcmdzKSkpLFxuICAgICAgICAgICAgICBvbktleXVwOiBfY2FjaGVbN10gfHwgKF9jYWNoZVs3XSA9IHdpdGhLZXlzKCguLi5hcmdzKSA9PiAoX2N0eC5jbGVhciAmJiBfY3R4LmNsZWFyKC4uLmFyZ3MpKSwgW1wiZW50ZXJcIl0pKVxuICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuY2xlYXJJY29uKVxuICAgICAgICAgICAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICAgICAgICAgICAgXSwgMzQgLyogQ0xBU1MsIE5FRURfSFlEUkFUSU9OICovKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBDYXJldCBcIiksXG4gICAgICAoJHByb3BzLmNhcmV0ICYmICRwcm9wcy5zaG93T3B0aW9ucylcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImNhcmV0XCIsIHtcbiAgICAgICAgICAgIGtleTogNyxcbiAgICAgICAgICAgIGhhbmRsZUNhcmV0Q2xpY2s6IF9jdHguaGFuZGxlQ2FyZXRDbGljayxcbiAgICAgICAgICAgIGlzT3BlbjogX2N0eC5pc09wZW5cbiAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNhcmV0KSxcbiAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzhdIHx8IChfY2FjaGVbOF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlQ2FyZXRDbGljayAmJiBfY3R4LmhhbmRsZUNhcmV0Q2xpY2soLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICBdLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF8yKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgT3B0aW9ucyBcIiksXG4gICAgKG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhUZWxlcG9ydCwge1xuICAgICAgdG86ICRwcm9wcy5hcHBlbmRUbyB8fCAnYm9keScsXG4gICAgICBkaXNhYmxlZDogISRwcm9wcy5hcHBlbmRUb0JvZHkgJiYgISRwcm9wcy5hcHBlbmRUb1xuICAgIH0sIFtcbiAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgIGlkOiAkcHJvcHMuaWQgPyBgJHskcHJvcHMuaWR9LWRyb3Bkb3duYCA6IHVuZGVmaW5lZCxcbiAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmRyb3Bkb3duKSxcbiAgICAgICAgdGFiaW5kZXg6IFwiLTFcIixcbiAgICAgICAgcmVmOiBcImRyb3Bkb3duXCIsXG4gICAgICAgIG9uRm9jdXNpbjogX2NhY2hlWzEwXSB8fCAoX2NhY2hlWzEwXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVGb2N1c0luICYmIF9jdHguaGFuZGxlRm9jdXNJbiguLi5hcmdzKSkpLFxuICAgICAgICBvbkZvY3Vzb3V0OiBfY2FjaGVbMTFdIHx8IChfY2FjaGVbMTFdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUZvY3VzT3V0ICYmIF9jdHguaGFuZGxlRm9jdXNPdXQoLi4uYXJncykpKVxuICAgICAgfSwgW1xuICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImJlZm9yZWxpc3RcIiwgeyBvcHRpb25zOiBfY3R4LmZvIH0pLFxuICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJ1bFwiLCB7XG4gICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbnMpLFxuICAgICAgICAgIGlkOiBfY3R4LmFyaWFDb250cm9scyxcbiAgICAgICAgICByb2xlOiBcImxpc3Rib3hcIlxuICAgICAgICB9LCBbXG4gICAgICAgICAgKCRwcm9wcy5ncm91cHMpXG4gICAgICAgICAgICA/IChvcGVuQmxvY2sodHJ1ZSksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgeyBrZXk6IDAgfSwgcmVuZGVyTGlzdChfY3R4LmZnLCAoZ3JvdXAsIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ncm91cCksXG4gICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFHcm91cElkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFHcm91cExhYmVsKF9jdHgubG9jYWxpemUoZ3JvdXBbJHByb3BzLmdyb3VwTGFiZWxdKSksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAoIWdyb3VwLl9fQ1JFQVRFX18pXG4gICAgICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lmdyb3VwTGFiZWwoZ3JvdXApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VlbnRlcjogJGV2ZW50ID0+IChfY3R4LnNldFBvaW50ZXIoZ3JvdXAsIGkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVHcm91cENsaWNrKGdyb3VwKSlcbiAgICAgICAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImdyb3VwbGFiZWxcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubG9jYWxpemUoZ3JvdXBbJHByb3BzLmdyb3VwTGFiZWxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8xMilcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBORUVEX0hZRFJBVElPTiAqLywgX2hvaXN0ZWRfMTEpKVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJ1bFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ncm91cE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhR3JvdXBMYWJlbChfY3R4LmxvY2FsaXplKGdyb3VwWyRwcm9wcy5ncm91cExhYmVsXSkpLFxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCBudWxsLCByZW5kZXJMaXN0KGdyb3VwLl9fVklTSUJMRV9fLCAob3B0aW9uLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qub3B0aW9uKG9wdGlvbiwgZ3JvdXApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IF9jdHguYXJpYU9wdGlvbklkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhT3B0aW9uTGFiZWwoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBfY3R4LnNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIHRvRGlzcGxheVN0cmluZyhfY3R4LmxvY2FsaXplKG9wdGlvblskcHJvcHMubGFiZWxdKSksIDEgLyogVEVYVCAqLylcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBORUVEX0hZRFJBVElPTiAqLywgX2hvaXN0ZWRfMTQpKVxuICAgICAgICAgICAgICAgICAgICB9KSwgMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgICAgICAgIF0sIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTMpXG4gICAgICAgICAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xMCkpXG4gICAgICAgICAgICAgIH0pLCAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5mbywgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbihvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgaWQ6IF9jdHguYXJpYU9wdGlvbklkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhT3B0aW9uTGFiZWwoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLFxuICAgICAgICAgICAgICAgICAgcm9sZTogXCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZCxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBfY3R4LnNlYXJjaFxuICAgICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIHRvRGlzcGxheVN0cmluZyhfY3R4LmxvY2FsaXplKG9wdGlvblskcHJvcHMubGFiZWxdKSksIDEgLyogVEVYVCAqLylcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBORUVEX0hZRFJBVElPTiAqLywgX2hvaXN0ZWRfMTUpKVxuICAgICAgICAgICAgICB9KSwgMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF85KSxcbiAgICAgICAgKF9jdHgubm9PcHRpb25zKVxuICAgICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJub29wdGlvbnNcIiwgeyBrZXk6IDAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ub09wdGlvbnMpLFxuICAgICAgICAgICAgICAgIGlubmVySFRNTDogX2N0eC5sb2NhbGl6ZSgkcHJvcHMubm9PcHRpb25zVGV4dClcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xNilcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICAoX2N0eC5ub1Jlc3VsdHMpXG4gICAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm5vcmVzdWx0c1wiLCB7IGtleTogMSB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm5vUmVzdWx0cyksXG4gICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfY3R4LmxvY2FsaXplKCRwcm9wcy5ub1Jlc3VsdHNUZXh0KVxuICAgICAgICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzE3KVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAgICgkcHJvcHMuaW5maW5pdGUgJiYgX2N0eC5oYXNNb3JlKVxuICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgICAgICBrZXk6IDIsXG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5pbmlmaW5pdGUpLFxuICAgICAgICAgICAgICByZWY6IFwiaW5maW5pdGVMb2FkZXJcIlxuICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImluZmluaXRlXCIsIHt9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlU3Bpbm5lcilcbiAgICAgICAgICAgICAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImFmdGVybGlzdFwiLCB7IG9wdGlvbnM6IF9jdHguZm8gfSlcbiAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgTkVFRF9IWURSQVRJT04gKi8sIF9ob2lzdGVkXzgpXG4gICAgXSwgOCAvKiBQUk9QUyAqLywgW1widG9cIiwgXCJkaXNhYmxlZFwiXSkpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBIYWNreSBpbnB1dCBlbGVtZW50IHRvIHNob3cgSFRNTDUgcmVxdWlyZWQgd2FybmluZyBcIiksXG4gICAgKCRwcm9wcy5yZXF1aXJlZClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAga2V5OiAwLFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5mYWtlSW5wdXQpLFxuICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgdmFsdWU6IF9jdHgudGV4dFZhbHVlLFxuICAgICAgICAgIHJlcXVpcmVkOiBcIlwiXG4gICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTgpKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBOYXRpdmUgaW5wdXQgc3VwcG9ydCBcIiksXG4gICAgKCRwcm9wcy5uYXRpdmVTdXBwb3J0KVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgeyBrZXk6IDEgfSwgW1xuICAgICAgICAgICgkcHJvcHMubW9kZSA9PSAnc2luZ2xlJylcbiAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogJHByb3BzLm5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF9jdHgucGxhaW5WYWx1ZSAhPT0gdW5kZWZpbmVkID8gX2N0eC5wbGFpblZhbHVlIDogJydcbiAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTkpKVxuICAgICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5wbGFpblZhbHVlLCAodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHskcHJvcHMubmFtZX1bXWAsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgICAgIGtleTogaVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzIwKSlcbiAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgIF0sIDY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqLykpXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNjcmVlbiByZWFkZXIgYXNzaXN0aXZlIHRleHQgXCIpLFxuICAgICgkcHJvcHMuc2VhcmNoYWJsZSAmJiBfY3R4Lmhhc1NlbGVjdGVkKVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAga2V5OiAyLFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5hc3Npc3QpLFxuICAgICAgICAgIGlkOiBfY3R4LmFyaWFBc3Npc3QsXG4gICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5hcmlhTGFiZWwpLCAxMSAvKiBURVhULCBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzIxKSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ3JlYXRlIGhlaWdodCBmb3IgZW1wdHkgaW5wdXQgXCIpLFxuICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc3BhY2VyKVxuICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgTkVFRF9IWURSQVRJT04gKi8sIF9ob2lzdGVkXzEpKVxufVxuXG5zY3JpcHQucmVuZGVyID0gcmVuZGVyO1xuc2NyaXB0Ll9fZmlsZSA9IFwic3JjL011bHRpc2VsZWN0LnZ1ZVwiO1xuXG5leHBvcnQgeyBzY3JpcHQgYXMgZGVmYXVsdCB9O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcbmV4cG9ydHMudG9CeXRlQXJyYXkgPSB0b0J5dGVBcnJheVxuZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gZnJvbUJ5dGVBcnJheVxuXG52YXIgbG9va3VwID0gW11cbnZhciByZXZMb29rdXAgPSBbXVxudmFyIEFyciA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyA/IFVpbnQ4QXJyYXkgOiBBcnJheVxuXG52YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgbG9va3VwW2ldID0gY29kZVtpXVxuICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbn1cblxuLy8gU3VwcG9ydCBkZWNvZGluZyBVUkwtc2FmZSBiYXNlNjQgc3RyaW5ncywgYXMgTm9kZS5qcyBkb2VzLlxuLy8gU2VlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjQjVVJMX2FwcGxpY2F0aW9uc1xucmV2TG9va3VwWyctJy5jaGFyQ29kZUF0KDApXSA9IDYyXG5yZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcblxuZnVuY3Rpb24gZ2V0TGVucyAoYjY0KSB7XG4gIHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIFRyaW0gb2ZmIGV4dHJhIGJ5dGVzIGFmdGVyIHBsYWNlaG9sZGVyIGJ5dGVzIGFyZSBmb3VuZFxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZWF0Z2FtbWl0L2Jhc2U2NC1qcy9pc3N1ZXMvNDJcbiAgdmFyIHZhbGlkTGVuID0gYjY0LmluZGV4T2YoJz0nKVxuICBpZiAodmFsaWRMZW4gPT09IC0xKSB2YWxpZExlbiA9IGxlblxuXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSB2YWxpZExlbiA9PT0gbGVuXG4gICAgPyAwXG4gICAgOiA0IC0gKHZhbGlkTGVuICUgNClcblxuICByZXR1cm4gW3ZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW5dXG59XG5cbi8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoYjY0KSB7XG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIF9ieXRlTGVuZ3RoIChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pIHtcbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG5cbiAgdmFyIGFyciA9IG5ldyBBcnIoX2J5dGVMZW5ndGgoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSlcblxuICB2YXIgY3VyQnl0ZSA9IDBcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIHZhciBsZW4gPSBwbGFjZUhvbGRlcnNMZW4gPiAwXG4gICAgPyB2YWxpZExlbiAtIDRcbiAgICA6IHZhbGlkTGVuXG5cbiAgdmFyIGlcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8XG4gICAgICByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMikge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gNClcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDEpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPj4gMilcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG4gIHJldHVybiBsb29rdXBbbnVtID4+IDE4ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gJiAweDNGXVxufVxuXG5mdW5jdGlvbiBlbmNvZGVDaHVuayAodWludDgsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHRtcFxuICB2YXIgb3V0cHV0ID0gW11cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IDMpIHtcbiAgICB0bXAgPVxuICAgICAgKCh1aW50OFtpXSA8PCAxNikgJiAweEZGMDAwMCkgK1xuICAgICAgKCh1aW50OFtpICsgMV0gPDwgOCkgJiAweEZGMDApICtcbiAgICAgICh1aW50OFtpICsgMl0gJiAweEZGKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVuID0gdWludDgubGVuZ3RoXG4gIHZhciBleHRyYUJ5dGVzID0gbGVuICUgMyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuICB2YXIgcGFydHMgPSBbXVxuICB2YXIgbWF4Q2h1bmtMZW5ndGggPSAxNjM4MyAvLyBtdXN0IGJlIG11bHRpcGxlIG9mIDNcblxuICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4yID0gbGVuIC0gZXh0cmFCeXRlczsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aCkpKVxuICB9XG5cbiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlc1xuICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9IHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXSArXG4gICAgICAnPT0nXG4gICAgKVxuICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHtcbiAgICB0bXAgPSAodWludDhbbGVuIC0gMl0gPDwgOCkgKyB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDEwXSArXG4gICAgICBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0gK1xuICAgICAgJz0nXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHtfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH19XG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWBcbiAgICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGtNYXhMZW5ndGggKCkge1xuICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgICA/IDB4N2ZmZmZmZmZcbiAgICA6IDB4M2ZmZmZmZmZcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCcpXG4gIH1cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aClcbiAgICB9XG4gICAgdGhhdC5sZW5ndGggPSBsZW5ndGhcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iaikpIHtcbiAgICB2YXIgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbilcblxuICAgIGlmICh0aGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoYXRcbiAgICB9XG5cbiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIHRoYXRcbiAgfVxuXG4gIGlmIChvYmopIHtcbiAgICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgaXNuYW4ob2JqLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCAwKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqKVxuICAgIH1cblxuICAgIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iai5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwga01heExlbmd0aCgpYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCBhbmQgYGlzLWJ1ZmZlcmAgKGluIFNhZmFyaSA1LTcpIHRvIGRldGVjdFxuLy8gQnVmZmVyIGluc3RhbmNlcy5cbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQxNiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCAyKTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSAmICgweGZmIDw8ICg4ICogKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkpKSkgPj4+XG4gICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDhcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgNCk7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmXG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG4gIHZhciBpXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDAgfHwgIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gYXNjZW5kaW5nIGNvcHkgZnJvbSBzdGFydFxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsIGVuY29kaW5nKS50b1N0cmluZygpKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBpc25hbiAodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IHZhbCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuIiwiZnVuY3Rpb24gcihlKXt2YXIgbyx0LGY9XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpZis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciBuPWUubGVuZ3RoO2ZvcihvPTA7bzxuO28rKyllW29dJiYodD1yKGVbb10pKSYmKGYmJihmKz1cIiBcIiksZis9dCl9ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihmJiYoZis9XCIgXCIpLGYrPXQpO3JldHVybiBmfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGUsbyx0PTAsZj1cIlwiLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKShlPWFyZ3VtZW50c1t0XSkmJihvPXIoZSkpJiYoZiYmKGYrPVwiIFwiKSxmKz1vKTtyZXR1cm4gZn1tb2R1bGUuZXhwb3J0cz1lLG1vZHVsZS5leHBvcnRzLmNsc3g9ZTsiLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZHBfX2lucHV0X3dyYXB7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtib3gtc2l6aW5nOnVuc2V0fS5kcF9faW5wdXRfd3JhcDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyKTtvdXRsaW5lOm5vbmV9LmRwX19pbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTp2YXIoLS1kcC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tZHAtZm9udC1zaXplKSoxLjUpO3BhZGRpbmc6dmFyKC0tZHAtaW5wdXQtcGFkZGluZyk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9faW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eTouN30uZHBfX2lucHV0OjpwbGFjZWhvbGRlcntvcGFjaXR5Oi43fS5kcF9faW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWJvcmRlci1jb2xvci1ob3Zlcil9LmRwX19pbnB1dF9yZWd7Y2FyZXQtY29sb3I6cmdiYSgwLDAsMCwwKX0uZHBfX2lucHV0X2ZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1kcC1ib3JkZXItY29sb3ItaG92ZXIpfS5kcF9fZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcil9LmRwX19kaXNhYmxlZDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KX0uZHBfX2Rpc2FibGVkOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KX0uZHBfX2lucHV0X2ljb25ze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOnZhcigtLWRwLWZvbnQtc2l6ZSk7aGVpZ2h0OnZhcigtLWRwLWZvbnQtc2l6ZSk7c3Ryb2tlLXdpZHRoOjA7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1kcC1mb250LXNpemUpKjEuNSk7cGFkZGluZzo2cHggMTJweDtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5kcF9faW5wdXRfaWNvbntjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKX0uZHBfX2NsZWFyX2ljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpfS5kcF9faW5wdXRfaWNvbl9wYWR7cGFkZGluZy1sZWZ0OnZhcigtLWRwLWlucHV0LWljb24tcGFkZGluZyl9LmRwX19pbnB1dF92YWxpZHtib3gtc2hhZG93OjAgMCB2YXIoLS1kcC1ib3JkZXItcmFkaXVzKSB2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tZHAtc3VjY2Vzcy1jb2xvcil9LmRwX19pbnB1dF92YWxpZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtc3VjY2Vzcy1jb2xvcil9LmRwX19pbnB1dF9pbnZhbGlke2JveC1zaGFkb3c6MCAwIHZhcigtLWRwLWJvcmRlci1yYWRpdXMpIHZhcigtLWRwLWRhbmdlci1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWRhbmdlci1jb2xvcil9LmRwX19pbnB1dF9pbnZhbGlkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1kYW5nZXItY29sb3IpfS5kcF9fbWVudXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7bWluLXdpZHRoOnZhcigtLWRwLW1lbnUtbWluLXdpZHRoKTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6OmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19tZW51OmZvY3Vze2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO291dGxpbmU6bm9uZX0uZHBfX21lbnVfaW5uZXJ7cGFkZGluZzp2YXIoLS1kcC1tZW51LXBhZGRpbmcpfS5kcF9fbWVudV9pbmRleHt6LWluZGV4Ojk5OTk5fS5kcF9fbWVudV9yZWFkb25seSwuZHBfX21lbnVfZGlzYWJsZWR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjF9LmRwX19tZW51X2Rpc2FibGVke2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fbWVudV9yZWFkb25seXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y3Vyc29yOmRlZmF1bHR9LmRwX19hcnJvd190b3B7bGVmdDo1MCU7dG9wOi0xcHg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDQ1ZGVnKX0uZHBfX2Fycm93X2JvdHRvbXtsZWZ0OjUwJTtib3R0b206LTFweDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgNTAlKSByb3RhdGUoNDVkZWcpfS5kcF9fYWN0aW9uX2V4dHJhe3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MnB4IDB9LmRwX19wcmVzZXRfcmFuZ2Vze3BhZGRpbmc6NXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX3NpZGViYXJfbGVmdHtwYWRkaW5nOjVweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19zaWRlYmFyX3JpZ2h0e3BhZGRpbmc6NXB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fcHJlc2V0X3Jhbmdle3BhZGRpbmc6NXB4O2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7dHJhbnNpdGlvbjp2YXIoLS1kcC1jb21tb24tdHJhbnNpdGlvbil9LmRwX19wcmVzZXRfcmFuZ2U6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y3Vyc29yOnBvaW50ZXJ9LmRwX19tZW51X2NvbnRlbnRfd3JhcHBlcntkaXNwbGF5OmZsZXh9LmRwX19jYWxlbmRhcl9oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXdlaWdodDpib2xkfS5kcF9fY2FsZW5kYXJfaGVhZGVyX2l0ZW17dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1ncm93OjE7aGVpZ2h0OnZhcigtLWRwLWNlbGwtc2l6ZSk7cGFkZGluZzp2YXIoLS1kcC1jZWxsLXBhZGRpbmcpO3dpZHRoOnZhcigtLWRwLWNlbGwtc2l6ZSk7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fY2FsZW5kYXJfcm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46dmFyKC0tZHAtcm93LW1hcmluZyl9LmRwX19jYWxlbmRhcl9pdGVte3RleHQtYWxpZ246Y2VudGVyO2ZsZXgtZ3JvdzoxO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX2NhbGVuZGFye3Bvc2l0aW9uOnJlbGF0aXZlfS5kcF9fY2FsZW5kYXJfaGVhZGVyX2NlbGx7Ym9yZGVyLWJvdHRvbTp0aGluIHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7cGFkZGluZzp2YXIoLS1kcC1jYWxlbmRhci1oZWFkZXItY2VsbC1wYWRkaW5nKX0uZHBfX2NlbGxfaW5uZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtY2VsbC1ib3JkZXItcmFkaXVzKTtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKTtwYWRkaW5nOnZhcigtLWRwLWNlbGwtcGFkZGluZyk7d2lkdGg6dmFyKC0tZHAtY2VsbC1zaXplKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5kcF9fY2VsbF9pbm5lcjpob3Zlcnt0cmFuc2l0aW9uOmFsbCAuMnN9LmRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnQsLmRwX19kYXRlX2hvdmVyX3N0YXJ0OmhvdmVyLC5kcF9fcmFuZ2Vfc3RhcnR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZCwuZHBfX2RhdGVfaG92ZXJfZW5kOmhvdmVyLC5kcF9fcmFuZ2VfZW5ke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LmRwX19yYW5nZV9lbmQsLmRwX19yYW5nZV9zdGFydCwuZHBfX2FjdGl2ZV9kYXRle2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfYXV0b19yYW5nZV9lbmQsLmRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnR7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpO2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2RhdGVfaG92ZXJfZW5kOmhvdmVyLC5kcF9fZGF0ZV9ob3Zlcl9zdGFydDpob3ZlciwuZHBfX2RhdGVfaG92ZXI6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19jZWxsX29mZnNldHtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpfS5kcF9fY2VsbF9kaXNhYmxlZHtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX3JhbmdlX2JldHdlZW57YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Ym9yZGVyLXJhZGl1czowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtaG92ZXItY29sb3IpfS5kcF9fcmFuZ2VfYmV0d2Vlbl93ZWVre2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX190b2RheXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fd2Vla19udW17Y29sb3I6dmFyKC0tZHAtc2Vjb25kYXJ5LWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcn0uZHBfX2NlbGxfYXV0b19yYW5nZXtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpO2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydHtib3JkZXItbGVmdDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZHtib3JkZXItcmlnaHQ6MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2NhbGVuZGFyX2hlYWRlcl9zZXBhcmF0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX2NhbGVuZGFyX25leHR7bWFyZ2luLWxlZnQ6dmFyKC0tZHAtbXVsdGktY2FsZW5kYXJzLXNwYWNpbmcpfS5kcF9fbWFya2VyX2xpbmUsLmRwX19tYXJrZXJfZG90e2hlaWdodDo1cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1tYXJrZXItY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowfS5kcF9fbWFya2VyX2RvdHt3aWR0aDo1cHg7Ym9yZGVyLXJhZGl1czo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmRwX19tYXJrZXJfbGluZXt3aWR0aDoxMDAlO2xlZnQ6MH0uZHBfX21hcmtlcl90b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10b29sdGlwLWNvbG9yKTtwYWRkaW5nOjVweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7ei1pbmRleDo5OTk5OTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOmRlZmF1bHR9LmRwX190b29sdGlwX2NvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwfS5kcF9fdG9vbHRpcF90ZXh0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1mbG93OnJvdyBub3dyYXA7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX190b29sdGlwX21hcmt7aGVpZ2h0OjVweDt3aWR0aDo1cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTttYXJnaW4tcmlnaHQ6NXB4fS5kcF9fYXJyb3dfYm90dG9tX3Rwe2JvdHRvbTowO2hlaWdodDo4cHg7d2lkdGg6OHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtdG9vbHRpcC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCA1MCUpIHJvdGF0ZSg0NWRlZyl9LmRwX19pbnN0YW5jZV9jYWxlbmRhcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKHdpZHRoIDw9IDYwMHB4KXsuZHBfX2ZsZXhfZGlzcGxheXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59fS5kcF9fY2VsbF9oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1oaWdobGlnaHQtY29sb3IpfS5kcF9fbW9udGhfeWVhcl9yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbm5lcl9uYXZ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2N1cnNvcjpwb2ludGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctYnV0dG9uLXNpemUpO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlfS5kcF9faW5uZXJfbmF2IHN2Z3toZWlnaHQ6dmFyKC0tZHAtYnV0dG9uLWljb24taGVpZ2h0KTt3aWR0aDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpfS5kcF9faW5uZXJfbmF2OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLWljb24tY29sb3IpfS5kcF9faW5uZXJfbmF2X2Rpc2FibGVkOmhvdmVyLC5kcF9faW5uZXJfbmF2X2Rpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpO2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX21vbnRoX3llYXJfc2VsZWN0e3dpZHRoOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX19tb250aF95ZWFyX3NlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX21vbnRoX3llYXJfd3JhcHtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJX0uZHBfX3llYXJfZGlzYWJsZV9zZWxlY3R7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZHBfX292ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO3RvcDowO2xlZnQ6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMXMgZWFzZS1vdXQ7ei1pbmRleDo5OTk5OTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fb3ZlcmxheV9jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JveC1zaGFkb3c6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZCl9LmRwX19vdmVybGF5X2NvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6NXB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKX0uZHBfX292ZXJsYXlfY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNjcm9sbC1iYXItY29sb3IpO2JvcmRlci1yYWRpdXM6MTBweH0uZHBfX292ZXJsYXk6Zm9jdXN7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lfS5kcF9fY29udGFpbmVyX2ZsZXh7ZGlzcGxheTpmbGV4fS5kcF9fY29udGFpbmVyX2Jsb2Nre2Rpc3BsYXk6YmxvY2t9LmRwX19vdmVybGF5X2NvbnRhaW5lcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3cteTphdXRvfS5kcF9fdGltZV9waWNrZXJfb3ZlcmxheV9jb250YWluZXJ7aGVpZ2h0OjEwMCV9LmRwX19vdmVybGF5X3Jvd3twYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2ZsZXgtd3JhcDp3cmFwO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5kcF9fZmxleF9yb3d7ZmxleDoxfS5kcF9fb3ZlcmxheV9jb2x7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjMzJTtwYWRkaW5nOnZhcigtLWRwLW92ZXJsYXktY29sLXBhZGRpbmcpO3doaXRlLXNwYWNlOm5vd3JhcH0uZHBfX292ZXJsYXlfY2VsbF9wYWR7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZykgMH0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmV7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGx7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0ZXh0LWFsaWduOmNlbnRlcn0uZHBfX292ZXJsYXlfY2VsbDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfaW5fYmV0d2VlbntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX292ZXJfYWN0aW9uX3Njcm9sbHtyaWdodDo1cHg7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGxfYWN0aXZlX2Rpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmRwX19tb250aF9waWNrZXJfaGVhZGVye2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKX0uZHBfX3RpbWVfaW5wdXR7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX3RpbWVfY29sX3JlZ19ibG9ja3twYWRkaW5nOjAgMjBweH0uZHBfX3RpbWVfY29sX3JlZ19pbmxpbmV7cGFkZGluZzowIDEwcHh9LmRwX190aW1lX2NvbF9yZWdfd2l0aF9idXR0b257cGFkZGluZzowIDE1cHh9LmRwX190aW1lX2NvbF9zZWN7cGFkZGluZzowIDEwcHh9LmRwX190aW1lX2NvbF9zZWNfd2l0aF9idXR0b257cGFkZGluZzowIDVweH0uZHBfX3RpbWVfY29se3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRwX190aW1lX2NvbF9ibG9ja3tmb250LXNpemU6dmFyKC0tZHAtdGltZS1mb250LXNpemUpfS5kcF9fdGltZV9kaXNwbGF5e2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5kcF9fdGltZV9kaXNwbGF5OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fdGltZV9kaXNwbGF5X2Jsb2Nre3BhZGRpbmc6MCAzcHh9LmRwX190aW1lX2Rpc3BsYXlfaW5saW5le3BhZGRpbmc6NXB4fS5kcF9fdGltZV9waWNrZXJfaW5saW5lX2NvbnRhaW5lcntkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5kcF9faW5jX2RlY19idXR0b257cGFkZGluZzo1cHg7bWFyZ2luOjA7aGVpZ2h0OnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czo1MCU7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9faW5jX2RlY19idXR0b24gc3Zne2hlaWdodDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpO3dpZHRoOnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSl9LmRwX19pbmNfZGVjX2J1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2luY19kZWNfYnV0dG9uX2lubGluZXt3aWR0aDoxMDAlO3BhZGRpbmc6MDtoZWlnaHQ6OHB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZDpob3ZlciwuZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpO2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX3BtX2FtX2J1dHRvbntiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcik7Ym9yZGVyOm5vbmU7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtjdXJzb3I6cG9pbnRlcn0uZHBfX3RwX2lubGluZV9idG5fYmFye3dpZHRoOjEwMCU7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1kcC1jb21tb24tdHJhbnNpdGlvbik7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS5kcF9fdHBfaW5saW5lX2J0bl90b3A6aG92ZXIgLmRwX190cF9idG5faW5fcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXByaW1hcnktY29sb3IpO3RyYW5zZm9ybTpyb3RhdGUoMTJkZWcpIHNjYWxlKDEuMTUpIHRyYW5zbGF0ZVkoLTJweCl9LmRwX190cF9pbmxpbmVfYnRuX3RvcDpob3ZlciAuZHBfX3RwX2J0bl9pbl9se2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIHNjYWxlKDEuMTUpIHRyYW5zbGF0ZVkoLTJweCl9LmRwX190cF9pbmxpbmVfYnRuX2JvdHRvbTpob3ZlciAuZHBfX3RwX2J0bl9pbl9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIHNjYWxlKDEuMTUpIHRyYW5zbGF0ZVkoLTJweCl9LmRwX190cF9pbmxpbmVfYnRuX2JvdHRvbTpob3ZlciAuZHBfX3RwX2J0bl9pbl9se2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KX0uZHBfX2FjdGlvbl9yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tZHAtY29tbW9uLXBhZGRpbmcpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtmbGV4LWZsb3c6cm93IG5vd3JhcH0uZHBfX2FjdGlvbl9yb3cgc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOmF1dG99LmRwX19zZWxlY3Rpb25fcHJldmlld3tkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1kcC1wcmV2aWV3LWZvbnQtc2l6ZSk7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5kcF9fYWN0aW9uX2J1dHRvbnN7ZGlzcGxheTpmbGV4O2ZsZXg6MDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi1sZWZ0OmF1dG99LmRwX19hY3Rpb25fYnV0dG9ue2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7cGFkZGluZzp2YXIoLS1kcC1hY3Rpb24tYnV0dG9ucy1wYWRkaW5nKTtsaW5lLWhlaWdodDppbml0aWFsO21hcmdpbi1sZWZ0OjNweDtoZWlnaHQ6dmFyKC0tZHAtYWN0aW9uLWJ1dHRvbi1oZWlnaHQpO2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyl9LmRwX19hY3Rpb25fc2VsZWN0e2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX2FjdGlvbl9zZWxlY3Q6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2l0aW9uOnZhcigtLWRwLWFjdGlvbi1yb3ctdHJhbnN0aW9uKX0uZHBfX2FjdGlvbl9zZWxlY3Q6ZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19hY3Rpb25fY2FuY2Vse2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX2FjdGlvbl9jYW5jZWw6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLXByaW1hcnktY29sb3IpO3RyYW5zaXRpb246dmFyKC0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb24pfTpyb290ey0tZHAtY29tbW9uLXRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW47LS1kcC1tZW51LXBhZGRpbmc6IDZweCA4cHg7LS1kcC1hbmltYXRpb24tZHVyYXRpb246IDAuMXM7LS1kcC1tZW51LWFwcGVhci10cmFuc2l0aW9uLXRpbWluZzogY3ViaWMtYmV6aWVyKC40LCAwLCAxLCAxKTstLWRwLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlLW91dDstLWRwLWFjdGlvbi1yb3ctdHJhbnN0aW9uOiBhbGwgMC4ycyBlYXNlLWluOy0tZHAtZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIGJsaW5rbWFjc3lzdGVtZm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgcm9ib3RvLCBveHlnZW4sIHVidW50dSwgY2FudGFyZWxsLCBcXFwiT3BlbiBTYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjstLWRwLWJvcmRlci1yYWRpdXM6IDRweDstLWRwLWNlbGwtYm9yZGVyLXJhZGl1czogNHB4Oy0tZHAtdHJhbnNpdGlvbi1sZW5ndGg6IDIycHg7LS1kcC10cmFuc2l0aW9uLXRpbWluZy1nZW5lcmFsOiAwLjFzOy0tZHAtYnV0dG9uLWhlaWdodDogMzVweDstLWRwLW1vbnRoLXllYXItcm93LWhlaWdodDogMzVweDstLWRwLW1vbnRoLXllYXItcm93LWJ1dHRvbi1zaXplOiAyNXB4Oy0tZHAtYnV0dG9uLWljb24taGVpZ2h0OiAyMHB4Oy0tZHAtY2FsZW5kYXItd3JhcC1wYWRkaW5nOiAwIDVweDstLWRwLWNlbGwtc2l6ZTogMzVweDstLWRwLWNlbGwtcGFkZGluZzogNXB4Oy0tZHAtY29tbW9uLXBhZGRpbmc6IDEwcHg7LS1kcC1pbnB1dC1pY29uLXBhZGRpbmc6IDM1cHg7LS1kcC1pbnB1dC1wYWRkaW5nOiA2cHggMzBweCA2cHggMTJweDstLWRwLW1lbnUtbWluLXdpZHRoOiAyNjBweDstLWRwLWFjdGlvbi1idXR0b25zLXBhZGRpbmc6IDFweCA2cHg7LS1kcC1yb3ctbWFyaW5nOiA1cHggMDstLWRwLWNhbGVuZGFyLWhlYWRlci1jZWxsLXBhZGRpbmc6IDAuNXJlbTstLWRwLW11bHRpLWNhbGVuZGFycy1zcGFjaW5nOiAxMHB4Oy0tZHAtb3ZlcmxheS1jb2wtcGFkZGluZzogM3B4Oy0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplOiAzMnB4Oy0tZHAtZm9udC1zaXplOiAxcmVtOy0tZHAtcHJldmlldy1mb250LXNpemU6IDAuOHJlbTstLWRwLXRpbWUtZm9udC1zaXplOiAycmVtOy0tZHAtYWN0aW9uLWJ1dHRvbi1oZWlnaHQ6IDIycHh9LmRwX190aGVtZV9kYXJrey0tZHAtYmFja2dyb3VuZC1jb2xvcjogIzIxMjEyMTstLWRwLXRleHQtY29sb3I6ICNmZmY7LS1kcC1ob3Zlci1jb2xvcjogIzQ4NDg0ODstLWRwLWhvdmVyLXRleHQtY29sb3I6ICNmZmY7LS1kcC1ob3Zlci1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtcHJpbWFyeS1jb2xvcjogIzAwNWNiMjstLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3I6ICM2MWE4ZWE7LS1kcC1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7LS1kcC1zZWNvbmRhcnktY29sb3I6ICNhOWE5YTk7LS1kcC1ib3JkZXItY29sb3I6ICMyZDJkMmQ7LS1kcC1tZW51LWJvcmRlci1jb2xvcjogIzJkMmQyZDstLWRwLWJvcmRlci1jb2xvci1ob3ZlcjogI2FhYWViNzstLWRwLWRpc2FibGVkLWNvbG9yOiAjNzM3MzczOy0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dDogI2QwZDBkMDstLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZDogIzIxMjEyMTstLWRwLXNjcm9sbC1iYXItY29sb3I6ICM0ODQ4NDg7LS1kcC1zdWNjZXNzLWNvbG9yOiAjMDA3MDFhOy0tZHAtc3VjY2Vzcy1jb2xvci1kaXNhYmxlZDogIzQyOGY1OTstLWRwLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1kYW5nZXItY29sb3I6ICNlNTM5MzU7LS1kcC1tYXJrZXItY29sb3I6ICNlNTM5MzU7LS1kcC10b29sdGlwLWNvbG9yOiAjM2UzZTNlOy0tZHAtaGlnaGxpZ2h0LWNvbG9yOiByZ2IoMCA5MiAxNzggLyAyMCUpfS5kcF9fdGhlbWVfbGlnaHR7LS1kcC1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOy0tZHAtdGV4dC1jb2xvcjogIzIxMjEyMTstLWRwLWhvdmVyLWNvbG9yOiAjZjNmM2YzOy0tZHAtaG92ZXItdGV4dC1jb2xvcjogIzIxMjEyMTstLWRwLWhvdmVyLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1wcmltYXJ5LWNvbG9yOiAjMTk3NmQyOy0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjogIzZiYWNlYTstLWRwLXByaW1hcnktdGV4dC1jb2xvcjogI2Y4ZjVmNTstLWRwLXNlY29uZGFyeS1jb2xvcjogI2MwYzRjYzstLWRwLWJvcmRlci1jb2xvcjogI2RkZDstLWRwLW1lbnUtYm9yZGVyLWNvbG9yOiAjZGRkOy0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyOiAjYWFhZWI3Oy0tZHAtZGlzYWJsZWQtY29sb3I6ICNmNmY2ZjY7LS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQ6ICNmM2YzZjM7LS1kcC1zY3JvbGwtYmFyLWNvbG9yOiAjOTU5NTk1Oy0tZHAtc3VjY2Vzcy1jb2xvcjogIzc2ZDI3NTstLWRwLXN1Y2Nlc3MtY29sb3ItZGlzYWJsZWQ6ICNhM2Q5YjE7LS1kcC1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtZGFuZ2VyLWNvbG9yOiAjZmY2ZjYwOy0tZHAtbWFya2VyLWNvbG9yOiAjZmY2ZjYwOy0tZHAtdG9vbHRpcC1jb2xvcjogI2ZhZmFmYTstLWRwLWRpc2FibGVkLWNvbG9yLXRleHQ6ICM4ZThlOGU7LS1kcC1oaWdobGlnaHQtY29sb3I6IHJnYigyNSAxMTggMjEwIC8gMTAlKX0uZHBfX2ZsZXh7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZHBfX2J0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246dmFyKC0tZHAtY29tbW9uLXRyYW5zaXRpb24pO2xpbmUtaGVpZ2h0Om5vcm1hbH0uZHBfX21haW57Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uZHBfX3BvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmRwX19pY29ue3N0cm9rZTpjdXJyZW50Y29sb3I7ZmlsbDpjdXJyZW50Y29sb3J9LmRwX19idXR0b257d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDp2YXIoLS1kcC1idXR0b24taGVpZ2h0KX0uZHBfX2J1dHRvbi5kcF9fb3ZlcmxheV9hY3Rpb257cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjB9LmRwX19idXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItaWNvbi1jb2xvcil9LmRwX19idXR0b24gc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOmF1dG99LmRwX19idXR0b25fYm90dG9te2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyl9LmRwX19mbGV4X2Rpc3BsYXl7ZGlzcGxheTpmbGV4fS5kcF9fZmxleF9kaXNwbGF5X3dpdGhfaW5wdXR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmRwX19yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uY2FsZW5kYXItbmV4dC1lbnRlci1hY3RpdmUsLmNhbGVuZGFyLW5leHQtbGVhdmUtYWN0aXZlLC5jYWxlbmRhci1wcmV2LWVudGVyLWFjdGl2ZSwuY2FsZW5kYXItcHJldi1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgdmFyKC0tZHAtdHJhbnNpdGlvbi10aW1pbmctZ2VuZXJhbCkgZWFzZS1vdXR9LmNhbGVuZGFyLW5leHQtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uY2FsZW5kYXItbmV4dC1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5jYWxlbmRhci1wcmV2LWVudGVyLWZyb217b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGModmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpICogLTEpKX0uY2FsZW5kYXItcHJldi1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uZHAtc2xpZGUtdXAtZW50ZXItYWN0aXZlLC5kcC1zbGlkZS11cC1sZWF2ZS1hY3RpdmUsLmRwLXNsaWRlLWRvd24tZW50ZXItYWN0aXZlLC5kcC1zbGlkZS1kb3duLWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWRwLXRyYW5zaXRpb24tdGltaW5nKX0uZHAtc2xpZGUtZG93bi1sZWF2ZS10bywuZHAtc2xpZGUtdXAtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uZHAtc2xpZGUtZG93bi1lbnRlci1mcm9tLC5kcC1zbGlkZS11cC1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5kcF9fbWVudV90cmFuc2l0aW9uZWR7dHJhbnNpdGlvbjphbGwgdmFyKC0tZHAtYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1kcC1tZW51LWFwcGVhci10cmFuc2l0aW9uLXRpbWluZyl9LyojIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5jc3MubWFwICovXFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fRGF0ZXBpY2tlcklucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0RhdGVwaWNrZXJNZW51LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0NhbGVuZGFyLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX01vbnRoWWVhcklucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX1NlbGVjdGlvbkdyaWQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fVGltZUlucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0FjdGlvblJvdy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9tYWluLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQ0UsaUJBQUEsQ0FDQSxVQUFBLENBQ0EsZ0JBQUEsQ0FFQSxzQkFDRSx5Q0FBQSxDQUNBLFlBQUEsQ0FJSixXQUNFLDJDQUFBLENBQ0EscUNBQUEsQ0FDQSxpQ0FBQSxDQUNBLHVDQUFBLENBQ0EsWUFBQSxDQUNBLGdFQUFBLENBQ0EsVUFBQSxDQUNBLDZCQUFBLENBQ0EseUNBQUEsQ0FDQSwrQkFBQSxDQUNBLDBCQUFBLENBQ0EscUJBQUEsQ0FFQSw2QkFDRSxVQUFBLENBREYsd0JBQ0UsVUFBQSxDQUdGLGlCQUNFLHlDQUFBLENBSUosZUFDRSx5QkFBQSxDQUdGLGlCQUNFLHlDQUFBLENBR0YsY0FDRSxtQ0FBQSxDQUVBLGdDQUNFLG1DQUFBLENBREYsMkJBQ0UsbUNBQUEsQ0FJSixpQkFDRSxvQkFBQSxDQUNBLHlCQUFBLENBQ0EsMEJBQUEsQ0FDQSxjQUFBLENBQ0EsNkJBQUEsQ0FDQSx5Q0FBQSxDQUNBLGdCQUFBLENBQ0EsMEJBQUEsQ0FDQSxzQkFBQSxDQUdGLGdCQUNFLGNBQUEsQ0FDQSxpQkFBQSxDQUNBLE9BQUEsQ0FDQSxNQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUdGLGdCQUNFLGlCQUFBLENBQ0EsT0FBQSxDQUNBLE9BQUEsQ0FDQSwwQkFBQSxD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cUJBQUEsQ0FDQSxzQkFBQSxDQUdGLGNBQ0UsaUJBQUEsQ0FHRixnSEFJRSwyREFBQSxDQUdGLDBCQUNFLFNBQUEsQ0FDQSxpREFBQSxDQUdGLHdCQUNFLFNBQUEsQ0FDQSw0REFBQSxDQUdGLDBCQUNFLFNBQUEsQ0FDQSw0REFBQSxDQUdGLHdCQUNFLFNBQUEsQ0FDQSxpREFBQSxDQUdGLDRHQUlFLHVFQUFBLENBR0YsZ0RBRUUsU0FBQSxDQUNBLGlEQUFBLENBR0YsZ0RBRUUsU0FBQSxDQUNBLDREQUFBLENBR0YsdUJBQ0UsbUZBQUEsQ0FBQSxtQ0FBQVwiLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tdWx0aXNlbGVjdHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LmlzLW9wZW57Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KSAwIDB9Lm11bHRpc2VsZWN0LmlzLW9wZW4tdG9we2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpfS5tdWx0aXNlbGVjdC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2N1cnNvcjpkZWZhdWx0fS5tdWx0aXNlbGVjdC5pcy1hY3RpdmV7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aC1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvci1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpKTtib3gtc2hhZG93OjAgMCAwIHZhcigtLW1zLXJpbmctd2lkdGgsM3B4KSB2YXIoLS1tcy1yaW5nLWNvbG9yLHJnYmEoMTYsMTg1LDEyOSwuMTg4KSl9Lm11bHRpc2VsZWN0LXdyYXBwZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtsZWZ0OjA7bGluZS1oZWlnaHQ6dmFyKC0tbXMtbGluZS1oZWlnaHQsMS4zNzUpO21heC13aWR0aDoxMDAlO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwYWRkaW5nLXJpZ2h0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tcy1wbGFjZWhvbGRlci1jb2xvciwjOWNhM2FmKX0ubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHR7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoxMDAlO2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC10YWdze2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC13cmFwOndyYXA7bWFyZ2luOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pIDAgMDtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHksLjVyZW0pfS5tdWx0aXNlbGVjdC10YWcsLm11bHRpc2VsZWN0LXRhZ3N7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttaW4td2lkdGg6MH0ubXVsdGlzZWxlY3QtdGFne2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLCMxMGI5ODEpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJhZGl1cyw0cHgpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvciwjZmZmKTtmb250LXNpemU6dmFyKC0tbXMtdGFnLWZvbnQtc2l6ZSwuODc1cmVtKTtmb250LXdlaWdodDp2YXIoLS1tcy10YWctZm9udC13ZWlnaHQsNjAwKTtsaW5lLWhlaWdodDp2YXIoLS1tcy10YWctbGluZS1oZWlnaHQsMS4yNXJlbSk7bWFyZ2luLWJvdHRvbTp2YXIoLS1tcy10YWctbXksLjI1cmVtKTttYXJnaW4tcmlnaHQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMCB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKTt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZy1kaXNhYmxlZCwjOWNhM2FmKTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3ItZGlzYWJsZWQsI2ZmZik7cGFkZGluZy1yaWdodDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfS5tdWx0aXNlbGVjdC10YWctd3JhcHBlcntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy13cmFwcGVyLWJyZWFre3doaXRlLXNwYWNlOm5vcm1hbDt3b3JkLWJyZWFrOmJyZWFrLWFsbH0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmVtb3ZlLXJhZGl1cyw0cHgpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjp2YXIoLS1tcy10YWctcmVtb3ZlLW15LDApIHZhcigtLW1zLXRhZy1yZW1vdmUtbXgsLjEyNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcmVtb3ZlLXB5LC4yNXJlbSkgdmFyKC0tbXMtdGFnLXJlbW92ZS1weCwuMjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDYzKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29ue2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouNzVyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO29wYWNpdHk6Ljg7d2lkdGg6Ljc1cmVtfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgdmFyKC0tbXMtdGFnLW14LDRweCkgdmFyKC0tbXMtdGFnLW15LDRweCk7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjFweDt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtaW5pZml0ZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXIsLm11bHRpc2VsZWN0LXNwaW5uZXJ7YW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtc3Bpbm5lci1jb2xvciwjMTBiOTgxKTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxcmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6MXJlbTt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMH0ubXVsdGlzZWxlY3QtY2xlYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7b3BhY2l0eToxO3BhZGRpbmc6MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjouM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2xlYXI6aG92ZXIgLm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvci1ob3ZlciwjMDAwKX0ubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLCM5OTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7dHJhbnNpdGlvbjouM3N9Lm11bHRpc2VsZWN0LWNhcmV0LC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2hlaWdodDoxLjEyNXJlbTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOi42MjVyZW19Lm11bHRpc2VsZWN0LWNhcmV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2FyZXQtY29sb3IsIzk5OSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2FyZXQuaXMtb3Blbntwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ubXVsdGlzZWxlY3QtZHJvcGRvd257LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7YmFja2dyb3VuZDp2YXIoLS1tcy1kcm9wZG93bi1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWFyZ2luLXRvcDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWF4LWhlaWdodDp2YXIoLS1tcy1tYXgtaGVpZ2h0LDEwcmVtKTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTpzY3JvbGw7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3otaW5kZXg6MTAwfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy10b3B7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSAwIDA7Ym90dG9tOmF1dG87dG9wOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3Vwe21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmcsI2U1ZTdlYik7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLCMzNzQxNTEpO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6Ljg3NXJlbTtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHksLjNyZW0pIHZhcigtLW1zLWdyb3VwLWxhYmVsLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGFibGV7Y3Vyc29yOnBvaW50ZXJ9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1wb2ludGVkLCNkMWQ1ZGIpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXBvaW50ZWQsIzM3NDE1MSl9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQsIzA1OTY2OSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctZGlzYWJsZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtcG9pbnRlZCwjMGM5ZTcwKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM3NWNmYjEpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1ncm91cC1vcHRpb25ze21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3Qtb3B0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1vcHRpb24tZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLW9wdGlvbi1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctcG9pbnRlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItcG9pbnRlZCwjMWYyOTM3KX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLCMxMGI5ODEpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLWRpc2FibGVkLCNmZmYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzI2YzA4ZSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjODdkY2MwKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LW5vLW9wdGlvbnMsLm11bHRpc2VsZWN0LW5vLXJlc3VsdHN7Y29sb3I6dmFyKC0tbXMtZW1wdHktY29sb3IsIzRiNTU2Myk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym90dG9tOi0xcHg7Zm9udC1zaXplOjA7aGVpZ2h0OjFweDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6YWN0aXZlLC5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0ubXVsdGlzZWxlY3QtYXNzaXN0aXZlLXRleHR7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0ubXVsdGlzZWxlY3Qtc3BhY2Vye2Rpc3BsYXk6bm9uZX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLFtkaXI9cnRsXSAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7bGVmdDphdXRvO3BhZGRpbmctbGVmdDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKTtyaWdodDowfVtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2VhcmNoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWdze3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHksLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFne21hcmdpbi1sZWZ0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO21hcmdpbi1yaWdodDowO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSkgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jYXJldCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2xlYXJ7cGFkZGluZzowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1Aa2V5ZnJhbWVzIG11bHRpc2VsZWN0LXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxhQUFhLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLHNFQUFzRSxDQUFDLGtDQUFrQyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsa0NBQWtDLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLCtIQUErSCxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLDJEQUEyRCxDQUFDLHlCQUF5QiwyREFBMkQsQ0FBQyx5QkFBeUIsd0NBQXdDLENBQUMsY0FBYyxDQUFDLHVCQUF1QixrSUFBa0ksQ0FBQyxvRkFBb0YsQ0FBQyxxQkFBcUIsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsK0hBQStILENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQywrRUFBK0Usa0JBQWtCLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsdUNBQXVDLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxDQUFDLHFEQUFxRCxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyx5QkFBeUIseUNBQXlDLENBQUMsK0JBQStCLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLG9CQUFvQix1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQ0FBaUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFD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QXNCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsNkRBQTZELFlBQVksQ0FBQyw0QkFBNEIsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLG9CQUFvQixZQUFZLENBQUMsNkdBQTZHLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsOEJBQThCLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyw0QkFBNEIsY0FBYyxDQUFDLGdDQUFnQyxDQUFDLDJCQUEyQixtQ0FBbUMsQ0FBQyxjQUFjLENBQUMsa0ZBQWtGLENBQUMsdUNBQXVDLG1DQUFtQyxDQUFDLDREQUE0RCxpQ0FBaUMsQ0FBQyw2QkFBNkIsa0NBQWtDLENBQUMsNEJBQTRCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyx1QkFBdUIsQ0FBQ1wiLFwic291cmNlc0NvbnRlbnRcIjpbXCIubXVsdGlzZWxlY3R7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvciwjZDFkNWRiKTtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLWZvbnQtc2l6ZSwxcmVtKTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjAgYXV0bzttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC5pcy1vcGVue2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCkgMCAwfS5tdWx0aXNlbGVjdC5pcy1vcGVuLXRvcHtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KX0ubXVsdGlzZWxlY3QuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjdXJzb3I6ZGVmYXVsdH0ubXVsdGlzZWxlY3QuaXMtYWN0aXZle2JvcmRlcjp2YXIoLS1tcy1ib3JkZXItd2lkdGgtYWN0aXZlLHZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpKSBzb2xpZCB2YXIoLS1tcy1ib3JkZXItY29sb3ItYWN0aXZlLHZhcigtLW1zLWJvcmRlci1jb2xvciwjZDFkNWRiKSk7Ym94LXNoYWRvdzowIDAgMCB2YXIoLS1tcy1yaW5nLXdpZHRoLDNweCkgdmFyKC0tbXMtcmluZy1jb2xvcixyZ2JhKDE2LDE4NSwxMjksLjE4OCkpfS5tdWx0aXNlbGVjdC13cmFwcGVye2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciwubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7bGVmdDowO2xpbmUtaGVpZ2h0OnZhcigtLW1zLWxpbmUtaGVpZ2h0LDEuMzc1KTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cGFkZGluZy1yaWdodDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0ubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tbXMtcGxhY2Vob2xkZXItY29sb3IsIzljYTNhZil9Lm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0e2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6MTAwJTtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtdGFnc3tmbGV4LWdyb3c6MTtmbGV4LXNocmluazoxO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjp2YXIoLS1tcy10YWctbXksLjI1cmVtKSAwIDA7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB5LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFnLC5tdWx0aXNlbGVjdC10YWdze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7bWluLXdpZHRoOjB9Lm11bHRpc2VsZWN0LXRhZ3tiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZywjMTBiOTgxKTtib3JkZXItcmFkaXVzOnZhcigtLW1zLXRhZy1yYWRpdXMsNHB4KTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3IsI2ZmZik7Zm9udC1zaXplOnZhcigtLW1zLXRhZy1mb250LXNpemUsLjg3NXJlbSk7Zm9udC13ZWlnaHQ6dmFyKC0tbXMtdGFnLWZvbnQtd2VpZ2h0LDYwMCk7bGluZS1oZWlnaHQ6dmFyKC0tbXMtdGFnLWxpbmUtaGVpZ2h0LDEuMjVyZW0pO21hcmdpbi1ib3R0b206dmFyKC0tbXMtdGFnLW15LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDAgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSk7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmctZGlzYWJsZWQsIzljYTNhZik7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLWRpc2FibGVkLCNmZmYpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXdyYXBwZXJ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC10YWctd3JhcHBlci1icmVha3t3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay1hbGx9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmV7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJlbW92ZS1yYWRpdXMsNHB4KTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46dmFyKC0tbXMtdGFnLXJlbW92ZS1teSwwKSB2YXIoLS1tcy10YWctcmVtb3ZlLW14LC4xMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXJlbW92ZS1weSwuMjVyZW0pIHZhcigtLW1zLXRhZy1yZW1vdmUtcHgsLjI1cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA2Myl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmUtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6Ljc1cmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjtvcGFjaXR5Oi44O3dpZHRoOi43NXJlbX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtd3JhcHBlcntkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4LWdyb3c6MTtmbGV4LXNocmluazoxO2hlaWdodDoxMDAlO21hcmdpbjowIHZhcigtLW1zLXRhZy1teCw0cHgpIHZhcigtLW1zLXRhZy1teSw0cHgpO3Bvc2l0aW9uOnJlbGF0aXZlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC1jb3B5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxcHg7dmlzaWJpbGl0eTpoaWRkZW47d2hpdGUtc3BhY2U6cHJlLXdyYXA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm11bHRpc2VsZWN0LWluaWZpdGV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtaW5pZml0ZS1zcGlubmVyLC5tdWx0aXNlbGVjdC1zcGlubmVye2FuaW1hdGlvbjptdWx0aXNlbGVjdC1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLXNwaW5uZXItY29sb3IsIzEwYjk4MSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MXJlbTstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTQ1Ni40MzMgMzcxLjcyLTI3Ljc5LTE2LjA0NWMtNy4xOTItNC4xNTItMTAuMDUyLTEzLjEzNi02LjQ4Ny0yMC42MzYgMjUuODItNTQuMzI4IDIzLjU2Ni0xMTguNjAyLTYuNzY4LTE3MS4wMy0zMC4yNjUtNTIuNTI5LTg0LjgwMi04Ni42MjEtMTQ0Ljc2LTkxLjQyNEMyNjIuMzUgNzEuOTIyIDI1NiA2NC45NTMgMjU2IDU2LjY0OVYyNC41NmMwLTkuMzEgNy45MTYtMTYuNjA5IDE3LjIwNC0xNS45NiA4MS43OTUgNS43MTcgMTU2LjQxMiA1MS45MDIgMTk3LjYxMSAxMjMuNDA4IDQxLjMwMSA3MS4zODUgNDMuOTkgMTU5LjA5NiA4LjA0MiAyMzIuNzkyLTQuMDgyIDguMzY5LTE0LjM2MSAxMS41NzUtMjIuNDI0IDYuOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOjFyZW07ei1pbmRleDoxMH0ubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDB9Lm11bHRpc2VsZWN0LWNsZWFye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO29wYWNpdHk6MTtwYWRkaW5nOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246LjNzO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LWNsZWFyOmhvdmVyIC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2xlYXItY29sb3ItaG92ZXIsIzAwMCl9Lm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvciwjOTk5KTtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO3RyYW5zaXRpb246LjNzfS5tdWx0aXNlbGVjdC1jYXJldCwubXVsdGlzZWxlY3QtY2xlYXItaWNvbntoZWlnaHQ6MS4xMjVyZW07LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjt3aWR0aDouNjI1cmVtfS5tdWx0aXNlbGVjdC1jYXJldHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNhcmV0LWNvbG9yLCM5OTkpO2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7bWFyZ2luOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnonLyUzRSUzQy9zdmclM0VcXFwiKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LWNhcmV0LmlzLW9wZW57cG9pbnRlci1ldmVudHM6YXV0bzt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9Lm11bHRpc2VsZWN0LWRyb3Bkb3duey13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO2JhY2tncm91bmQ6dmFyKC0tbXMtZHJvcGRvd24tYmcsI2ZmZik7Ym9yZGVyOnZhcigtLW1zLWRyb3Bkb3duLWJvcmRlci13aWR0aCwxcHgpIHNvbGlkIHZhcigtLW1zLWRyb3Bkb3duLWJvcmRlci1jb2xvciwjZDFkNWRiKTtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KTtib3R0b206MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xlZnQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO21hcmdpbi10b3A6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO21heC1oZWlnaHQ6dmFyKC0tbXMtbWF4LWhlaWdodCwxMHJlbSk7b3V0bGluZTpub25lO292ZXJmbG93LXk6c2Nyb2xsO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTt6LWluZGV4OjEwMH0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtdG9we2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgMCAwO2JvdHRvbTphdXRvO3RvcDp2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLWhpZGRlbntkaXNwbGF5Om5vbmV9Lm11bHRpc2VsZWN0LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cHttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLCNlNWU3ZWIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvciwjMzc0MTUxKTtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NjAwO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLWdyb3VwLWxhYmVsLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLWdyb3VwLWxhYmVsLXB5LC4zcmVtKSB2YXIoLS1tcy1ncm91cC1sYWJlbC1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRhYmxle2N1cnNvcjpwb2ludGVyfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctcG9pbnRlZCwjZDFkNWRiKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1wb2ludGVkLCMzNzQxNTEpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLCMwNTk2NjkpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzBjOWU3MCk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWQuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjNzVjZmIxKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3QtZ3JvdXAtb3B0aW9uc3ttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LW9wdGlvbnthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtb3B0aW9uLWZvbnQtc2l6ZSwxcmVtKTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1vcHRpb24tbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtb3B0aW9uLXB5LC41cmVtKSB2YXIoLS1tcy1vcHRpb24tcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXBvaW50ZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXBvaW50ZWQsIzFmMjkzNyl9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZCwjMTBiOTgxKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1kaXNhYmxlZCwjZmZmKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1wb2ludGVkLCMyNmMwOGUpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzg3ZGNjMCk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1uby1vcHRpb25zLC5tdWx0aXNlbGVjdC1uby1yZXN1bHRze2NvbG9yOnZhcigtLW1zLWVtcHR5LWNvbG9yLCM0YjU1NjMpO3BhZGRpbmc6dmFyKC0tbXMtb3B0aW9uLXB5LC41cmVtKSB2YXIoLS1tcy1vcHRpb24tcHgsLjc1cmVtKX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvdHRvbTotMXB4O2ZvbnQtc2l6ZTowO2hlaWdodDoxcHg7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmFjdGl2ZSwubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm11bHRpc2VsZWN0LWFzc2lzdGl2ZS10ZXh0e2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9Lm11bHRpc2VsZWN0LXNwYWNlcntkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2xlZnQ6YXV0bztwYWRkaW5nLWxlZnQ6Y2FsYygxLjI1cmVtICsgdmFyKC0tbXMtcHgsIC44NzVyZW0pKjMpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cmlnaHQ6MH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNlYXJjaHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFnc3twYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB5LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3ttYXJnaW4tbGVmdDp2YXIoLS1tcy10YWctbXgsLjI1cmVtKTttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nOnZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSB2YXIoLS1tcy10YWctcHgsLjVyZW0pIHZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSAwfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFnLmlzLWRpc2FibGVke3BhZGRpbmctbGVmdDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2FyZXQsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNsZWFye3BhZGRpbmc6MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9QGtleWZyYW1lcyBtdWx0aXNlbGVjdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7IGlmIChfaSA9PSBudWxsKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX3MsIF9lOyB0cnkgeyBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKSB7XG4gIHZhciBfaXRlbSA9IF9zbGljZWRUb0FycmF5KGl0ZW0sIDQpLFxuICAgICAgY29udGVudCA9IF9pdGVtWzFdLFxuICAgICAgY3NzTWFwcGluZyA9IF9pdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkTGVhZGluZ1plcm9zKG51bWJlciwgdGFyZ2V0TGVuZ3RoKSB7XG4gIHZhciBzaWduID0gbnVtYmVyIDwgMCA/ICctJyA6ICcnO1xuICB2YXIgb3V0cHV0ID0gTWF0aC5hYnMobnVtYmVyKS50b1N0cmluZygpO1xuICB3aGlsZSAob3V0cHV0Lmxlbmd0aCA8IHRhcmdldExlbmd0aCkge1xuICAgIG91dHB1dCA9ICcwJyArIG91dHB1dDtcbiAgfVxuICByZXR1cm4gc2lnbiArIG91dHB1dDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBvYmplY3QpIHtcbiAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICB9XG4gIGZvciAodmFyIHByb3BlcnR5IGluIG9iamVjdCkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSkpIHtcbiAgICAgIDtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSBvYmplY3RbcHJvcGVydHldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL2Fzc2lnbi9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiBhc3NpZ24oe30sIG9iamVjdCk7XG59IiwiaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uLy4uL2xvY2FsZS9lbi1VUy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdExvY2FsZTsiLCJ2YXIgZGVmYXVsdE9wdGlvbnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufSIsImltcG9ydCBnZXRVVENEYXlPZlllYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDRGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2Vla1llYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENXZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vLi4vYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG5pbXBvcnQgbGlnaHRGb3JtYXR0ZXJzIGZyb20gXCIuLi9saWdodEZvcm1hdHRlcnMvaW5kZXguanNcIjtcbnZhciBkYXlQZXJpb2RFbnVtID0ge1xuICBhbTogJ2FtJyxcbiAgcG06ICdwbScsXG4gIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICBub29uOiAnbm9vbicsXG4gIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICBuaWdodDogJ25pZ2h0J1xufTtcbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8IE1pbGxpc2Vjb25kcyBpbiBkYXkgICAgICAgICAgICB8XG4gKiB8ICBiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICB8ICBCICB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICB8XG4gKiB8ICBjICB8IFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrICB8ICBDKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBlICB8IExvY2FsIGRheSBvZiB3ZWVrICAgICAgICAgICAgICB8ICBFICB8IERheSBvZiB3ZWVrICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBmICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBGKiB8IERheSBvZiB3ZWVrIGluIG1vbnRoICAgICAgICAgICB8XG4gKiB8ICBnKiB8IE1vZGlmaWVkIEp1bGlhbiBkYXkgICAgICAgICAgICB8ICBHICB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBpISB8IElTTyBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgICB8ICBJISB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICB8XG4gKiB8ICBqKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8ICBKKiB8IExvY2FsaXplZCBob3VyIHcvbyBkYXkgcGVyaW9kICB8XG4gKiB8ICBrICB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICB8ICBLICB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBsKiB8IChkZXByZWNhdGVkKSAgICAgICAgICAgICAgICAgICB8ICBMICB8IFN0YW5kLWFsb25lIG1vbnRoICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBOICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBvISB8IE9yZGluYWwgbnVtYmVyIG1vZGlmaWVyICAgICAgICB8ICBPICB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICB8XG4gKiB8ICBwISB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICB8ICBQISB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICB8XG4gKiB8ICBxICB8IFN0YW5kLWFsb25lIHF1YXJ0ZXIgICAgICAgICAgICB8ICBRICB8IFF1YXJ0ZXIgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICByKiB8IFJlbGF0ZWQgR3JlZ29yaWFuIHllYXIgICAgICAgICB8ICBSISB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB0ISB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICB8ICBUISB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICB8XG4gKiB8ICB1ICB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICB8ICBVKiB8IEN5Y2xpYyB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICB2KiB8IFRpbWV6b25lIChnZW5lcmljIG5vbi1sb2NhdC4pICB8ICBWKiB8IFRpbWV6b25lIChsb2NhdGlvbikgICAgICAgICAgICB8XG4gKiB8ICB3ICB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICB8ICBXKiB8IFdlZWsgb2YgbW9udGggICAgICAgICAgICAgICAgICB8XG4gKiB8ICB4ICB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICB8ICBYICB8IFRpbWV6b25lIChJU08tODYwMSkgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICB8XG4gKiB8ICB6ICB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSB8ICBaKiB8IFRpbWV6b25lIChhbGlhc2VzKSAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICEgYXJlIG5vbi1zdGFuZGFyZCwgYnV0IGltcGxlbWVudGVkIGJ5IGRhdGUtZm5zOlxuICogLSBgb2AgbW9kaWZpZXMgdGhlIHByZXZpb3VzIHRva2VuIHRvIHR1cm4gaXQgaW50byBhbiBvcmRpbmFsIChzZWUgYGZvcm1hdGAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKiAtIGBQYCBpcyBsb25nIGxvY2FsaXplZCBkYXRlIGZvcm1hdFxuICogLSBgcGAgaXMgbG9uZyBsb2NhbGl6ZWQgdGltZSBmb3JtYXRcbiAqL1xuXG52YXIgZm9ybWF0dGVycyA9IHtcbiAgLy8gRXJhXG4gIEc6IGZ1bmN0aW9uIEcoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGVyYSA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKSA+IDAgPyAxIDogMDtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBBRCwgQkNcbiAgICAgIGNhc2UgJ0cnOlxuICAgICAgY2FzZSAnR0cnOlxuICAgICAgY2FzZSAnR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEEsIEJcbiAgICAgIGNhc2UgJ0dHR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgfSk7XG4gICAgICAvLyBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdFxuICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIHkoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgLy8gT3JkaW5hbCBudW1iZXJcbiAgICBpZiAodG9rZW4gPT09ICd5bycpIHtcbiAgICAgIHZhciBzaWduZWRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcbiAgICAgIHZhciB5ZWFyID0gc2lnbmVkWWVhciA+IDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih5ZWFyLCB7XG4gICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMueShkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgWTogZnVuY3Rpb24gWShkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgc2lnbmVkV2Vla1llYXIgPSBnZXRVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcbiAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgIHZhciB3ZWVrWWVhciA9IHNpZ25lZFdlZWtZZWFyID4gMCA/IHNpZ25lZFdlZWtZZWFyIDogMSAtIHNpZ25lZFdlZWtZZWFyO1xuXG4gICAgLy8gVHdvIGRpZ2l0IHllYXJcbiAgICBpZiAodG9rZW4gPT09ICdZWScpIHtcbiAgICAgIHZhciB0d29EaWdpdFllYXIgPSB3ZWVrWWVhciAlIDEwMDtcbiAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModHdvRGlnaXRZZWFyLCAyKTtcbiAgICB9XG5cbiAgICAvLyBPcmRpbmFsIG51bWJlclxuICAgIGlmICh0b2tlbiA9PT0gJ1lvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIod2Vla1llYXIsIHtcbiAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh3ZWVrWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgUjogZnVuY3Rpb24gUihkYXRlLCB0b2tlbikge1xuICAgIHZhciBpc29XZWVrWWVhciA9IGdldFVUQ0lTT1dlZWtZZWFyKGRhdGUpO1xuXG4gICAgLy8gUGFkZGluZ1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvV2Vla1llYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEV4dGVuZGVkIHllYXIuIFRoaXMgaXMgYSBzaW5nbGUgbnVtYmVyIGRlc2lnbmF0aW5nIHRoZSB5ZWFyIG9mIHRoaXMgY2FsZW5kYXIgc3lzdGVtLlxuICAvLyBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgbG9jYWxpemVycyBhcmUgQi5DLiB5ZWFyczpcbiAgLy8gfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAgLy8gfC0tLS0tLXwtLS0tLXwtLS0tLXxcbiAgLy8gfCBBQyAxIHwgICAxIHwgICAxIHxcbiAgLy8gfCBCQyAxIHwgICAxIHwgICAwIHxcbiAgLy8gfCBCQyAyIHwgICAyIHwgIC0xIHxcbiAgLy8gQWxzbyBgeXlgIGFsd2F5cyByZXR1cm5zIHRoZSBsYXN0IHR3byBkaWdpdHMgb2YgYSB5ZWFyLFxuICAvLyB3aGlsZSBgdXVgIHBhZHMgc2luZ2xlIGRpZ2l0IHllYXJzIHRvIDIgY2hhcmFjdGVycyBhbmQgcmV0dXJucyBvdGhlciB5ZWFycyB1bmNoYW5nZWQuXG4gIHU6IGZ1bmN0aW9uIHUoZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIFF1YXJ0ZXJcbiAgUTogZnVuY3Rpb24gUShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgcXVhcnRlciA9IE1hdGguY2VpbCgoZGF0ZS5nZXRVVENNb250aCgpICsgMSkgLyAzKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICBjYXNlICdRJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhxdWFydGVyKTtcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICBjYXNlICdRUSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MocXVhcnRlciwgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgJ1FvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIocXVhcnRlciwge1xuICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICBjYXNlICdRUVEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgIGNhc2UgJ1FRUVEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgcXVhcnRlclxuICBxOiBmdW5jdGlvbiBxKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBxdWFydGVyID0gTWF0aC5jZWlsKChkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSAvIDMpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgJ3EnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHF1YXJ0ZXIpO1xuICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgIGNhc2UgJ3FxJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhxdWFydGVyLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSAncW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihxdWFydGVyLCB7XG4gICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgIH0pO1xuICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgIGNhc2UgJ3FxcSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgJ3FxcXFxJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgY2FzZSAncXFxcSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBNb250aFxuICBNOiBmdW5jdGlvbiBNKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdNJzpcbiAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5NKGRhdGUsIHRva2VuKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgJ01vJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobW9udGggKyAxLCB7XG4gICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgY2FzZSAnTU1NJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuICAgICAgY2FzZSAnTU1NTSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIG1vbnRoXG4gIEw6IGZ1bmN0aW9uIEwoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgJ0wnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKG1vbnRoICsgMSk7XG4gICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgJ0xMJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgY2FzZSAnTG8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHtcbiAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICBjYXNlICdMTEwnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICBjYXNlICdMTExMJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG4gIHc6IGZ1bmN0aW9uIHcoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHdlZWsgPSBnZXRVVENXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgIGlmICh0b2tlbiA9PT0gJ3dvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIod2Vlaywge1xuICAgICAgICB1bml0OiAnd2VlaydcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHdlZWssIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIElTTyB3ZWVrIG9mIHllYXJcbiAgSTogZnVuY3Rpb24gSShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaXNvV2VlayA9IGdldFVUQ0lTT1dlZWsoZGF0ZSk7XG4gICAgaWYgKHRva2VuID09PSAnSW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29XZWVrLCB7XG4gICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiBmdW5jdGlvbiBkKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ2RvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENEYXRlKCksIHtcbiAgICAgICAgdW5pdDogJ2RhdGUnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5kKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHllYXJcbiAgRDogZnVuY3Rpb24gRChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZZZWFyID0gZ2V0VVRDRGF5T2ZZZWFyKGRhdGUpO1xuICAgIGlmICh0b2tlbiA9PT0gJ0RvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF5T2ZZZWFyLCB7XG4gICAgICAgIHVuaXQ6ICdkYXlPZlllYXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXlPZlllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIERheSBvZiB3ZWVrXG4gIEU6IGZ1bmN0aW9uIEUoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlICdFJzpcbiAgICAgIGNhc2UgJ0VFJzpcbiAgICAgIGNhc2UgJ0VFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSAnRUVFRUUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnRUVFRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdFRUVFJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBMb2NhbCBkYXkgb2Ygd2Vla1xuICBlOiBmdW5jdGlvbiBlKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBsb2NhbERheU9mV2VlayA9IChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNyB8fCA3O1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIE51bWVyaWNhbCB2YWx1ZSAoTnRoIGRheSBvZiB3ZWVrIHdpdGggY3VycmVudCBsb2NhbGUgb3Igd2Vla1N0YXJ0c09uKVxuICAgICAgY2FzZSAnZSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobG9jYWxEYXlPZldlZWspO1xuICAgICAgLy8gUGFkZGVkIG51bWVyaWNhbCB2YWx1ZVxuICAgICAgY2FzZSAnZWUnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSAnZW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihsb2NhbERheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdlZWVlZSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdlZWVlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrXG4gIGM6IGZ1bmN0aW9uIGMoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGxvY2FsRGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgOCkgJSA3IHx8IDc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gTnVtZXJpY2FsIHZhbHVlIChzYW1lIGFzIGluIGBlYClcbiAgICAgIGNhc2UgJ2MnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRGF5T2ZXZWVrKTtcbiAgICAgIC8vIFBhZGRlZCBudW1lcmljYWwgdmFsdWVcbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSAnY28nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihsb2NhbERheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnY2NjJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdjY2NjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2NjY2MnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIElTTyBkYXkgb2Ygd2Vla1xuICBpOiBmdW5jdGlvbiBpKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBpc29EYXlPZldlZWsgPSBkYXlPZldlZWsgPT09IDAgPyA3IDogZGF5T2ZXZWVrO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDJcbiAgICAgIGNhc2UgJ2knOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGlzb0RheU9mV2Vlayk7XG4gICAgICAvLyAwMlxuICAgICAgY2FzZSAnaWknOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb0RheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDJuZFxuICAgICAgY2FzZSAnaW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29EYXlPZldlZWssIHtcbiAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZVxuICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdpaWlpaWknOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2lpaWknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEFNIG9yIFBNXG4gIGE6IGZ1bmN0aW9uIGEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWUgPSBob3VycyAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdhYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAnYWFhYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdhYWFhJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBBTSwgUE0sIG1pZG5pZ2h0LCBub29uXG4gIGI6IGZ1bmN0aW9uIGIoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgaWYgKGhvdXJzID09PSAxMikge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5ub29uO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPT09IDApIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubWlkbmlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGhvdXJzIC8gMTIgPj0gMSA/ICdwbScgOiAnYW0nO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdiJzpcbiAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAnYmJiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdiYmJiJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG4gIEI6IGZ1bmN0aW9uIEIoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgaWYgKGhvdXJzID49IDE3KSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmV2ZW5pbmc7XG4gICAgfSBlbHNlIGlmIChob3VycyA+PSAxMikge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5hZnRlcm5vb247XG4gICAgfSBlbHNlIGlmIChob3VycyA+PSA0KSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm1vcm5pbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubmlnaHQ7XG4gICAgfVxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ0InOlxuICAgICAgY2FzZSAnQkInOlxuICAgICAgY2FzZSAnQkJCJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdCQkJCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ0JCQkInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIGgoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnaG8nKSB7XG4gICAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcbiAgICAgIGlmIChob3VycyA9PT0gMCkgaG91cnMgPSAxMjtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuaChkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIEhvdXIgWzAtMjNdXG4gIEg6IGZ1bmN0aW9uIEgoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnSG8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ0hvdXJzKCksIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5IKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gSG91ciBbMC0xMV1cbiAgSzogZnVuY3Rpb24gSyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcbiAgICBpZiAodG9rZW4gPT09ICdLbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEhvdXIgWzEtMjRdXG4gIGs6IGZ1bmN0aW9uIGsoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIGlmIChob3VycyA9PT0gMCkgaG91cnMgPSAyNDtcbiAgICBpZiAodG9rZW4gPT09ICdrbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbnV0ZVxuICBtOiBmdW5jdGlvbiBtKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ21vJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENNaW51dGVzKCksIHtcbiAgICAgICAgdW5pdDogJ21pbnV0ZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLm0oZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBTZWNvbmRcbiAgczogZnVuY3Rpb24gcyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdzbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDU2Vjb25kcygpLCB7XG4gICAgICAgIHVuaXQ6ICdzZWNvbmQnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5zKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFM6IGZ1bmN0aW9uIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLlMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYWx3YXlzIGAnWidgKVxuICBYOiBmdW5jdGlvbiBYKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgaWYgKHRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1onO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSAnWCc6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXModGltZXpvbmVPZmZzZXQpO1xuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWGBcbiAgICAgIGNhc2UgJ1hYWFgnOlxuICAgICAgY2FzZSAnWFgnOlxuICAgICAgICAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgWFhYYFxuICAgICAgY2FzZSAnWFhYWFgnOlxuICAgICAgY2FzZSAnWFhYJzogLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYCcrMDA6MDAnYCBvciBlcXVpdmFsZW50KVxuICB4OiBmdW5jdGlvbiB4KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ3gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgeHhgXG4gICAgICBjYXNlICd4eHh4JzpcbiAgICAgIGNhc2UgJ3h4JzpcbiAgICAgICAgLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYHh4eGBcbiAgICAgIGNhc2UgJ3h4eHh4JzpcbiAgICAgIGNhc2UgJ3h4eCc6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gVGltZXpvbmUgKEdNVClcbiAgTzogZnVuY3Rpb24gTyhkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFNob3J0XG4gICAgICBjYXNlICdPJzpcbiAgICAgIGNhc2UgJ09PJzpcbiAgICAgIGNhc2UgJ09PTyc6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgICAvLyBMb25nXG4gICAgICBjYXNlICdPT09PJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdGlvbilcbiAgejogZnVuY3Rpb24geihkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFNob3J0XG4gICAgICBjYXNlICd6JzpcbiAgICAgIGNhc2UgJ3p6JzpcbiAgICAgIGNhc2UgJ3p6eic6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgICAvLyBMb25nXG4gICAgICBjYXNlICd6enp6JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gU2Vjb25kcyB0aW1lc3RhbXBcbiAgdDogZnVuY3Rpb24gdChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICBUOiBmdW5jdGlvbiBUKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWVzdGFtcCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0aW1lc3RhbXAsIHRva2VuLmxlbmd0aCk7XG4gIH1cbn07XG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZVNob3J0KG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpIHtcbiAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICB2YXIgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCk7XG4gIHZhciBtaW51dGVzID0gYWJzT2Zmc2V0ICUgNjA7XG4gIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpO1xuICB9XG4gIHZhciBkZWxpbWl0ZXIgPSBkaXJ0eURlbGltaXRlciB8fCAnJztcbiAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpICsgZGVsaW1pdGVyICsgYWRkTGVhZGluZ1plcm9zKG1pbnV0ZXMsIDIpO1xufVxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpIHtcbiAgaWYgKG9mZnNldCAlIDYwID09PSAwKSB7XG4gICAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICAgIHJldHVybiBzaWduICsgYWRkTGVhZGluZ1plcm9zKE1hdGguYWJzKG9mZnNldCkgLyA2MCwgMik7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpO1xufVxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmUob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICB2YXIgZGVsaW1pdGVyID0gZGlydHlEZWxpbWl0ZXIgfHwgJyc7XG4gIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgdmFyIGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIHZhciBob3VycyA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSwgMik7XG4gIHZhciBtaW51dGVzID0gYWRkTGVhZGluZ1plcm9zKGFic09mZnNldCAlIDYwLCAyKTtcbiAgcmV0dXJuIHNpZ24gKyBob3VycyArIGRlbGltaXRlciArIG1pbnV0ZXM7XG59XG5leHBvcnQgZGVmYXVsdCBmb3JtYXR0ZXJzOyIsImltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uLy4uL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKi9cbnZhciBmb3JtYXR0ZXJzID0ge1xuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIHkoZGF0ZSwgdG9rZW4pIHtcbiAgICAvLyBGcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtMzEvdHIzNS1kYXRlcy5odG1sI0RhdGVfRm9ybWF0X3Rva2Vuc1xuICAgIC8vIHwgWWVhciAgICAgfCAgICAgeSB8IHl5IHwgICB5eXkgfCAgeXl5eSB8IHl5eXl5IHxcbiAgICAvLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4gICAgLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuICAgIC8vIHwgQUQgMTIgICAgfCAgICAxMiB8IDEyIHwgICAwMTIgfCAgMDAxMiB8IDAwMDEyIHxcbiAgICAvLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4gICAgLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuICAgIC8vIHwgQUQgMTIzNDUgfCAxMjM0NSB8IDQ1IHwgMTIzNDUgfCAxMjM0NSB8IDEyMzQ1IHxcblxuICAgIHZhciBzaWduZWRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgdmFyIHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRva2VuID09PSAneXknID8geWVhciAlIDEwMCA6IHllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1vbnRoXG4gIE06IGZ1bmN0aW9uIE0oZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgcmV0dXJuIHRva2VuID09PSAnTScgPyBTdHJpbmcobW9udGggKyAxKSA6IGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICB9LFxuICAvLyBEYXkgb2YgdGhlIG1vbnRoXG4gIGQ6IGZ1bmN0aW9uIGQoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDRGF0ZSgpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBBTSBvciBQTVxuICBhOiBmdW5jdGlvbiBhKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRhdGUuZ2V0VVRDSG91cnMoKSAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZVswXTtcbiAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZSA9PT0gJ2FtJyA/ICdhLm0uJyA6ICdwLm0uJztcbiAgICB9XG4gIH0sXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIGgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyIHx8IDEyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiBIKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0hvdXJzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbnV0ZVxuICBtOiBmdW5jdGlvbiBtKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ01pbnV0ZXMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIHMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDU2Vjb25kcygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBGcmFjdGlvbiBvZiBzZWNvbmRcbiAgUzogZnVuY3Rpb24gUyhkYXRlLCB0b2tlbikge1xuICAgIHZhciBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCB0b2tlbi5sZW5ndGgpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0dGVyczsiLCJ2YXIgZGF0ZUxvbmdGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRlTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKSB7XG4gIHN3aXRjaCAocGF0dGVybikge1xuICAgIGNhc2UgJ1AnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICBjYXNlICdQUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICBjYXNlICdQUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgIGNhc2UgJ1BQUFAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gIH1cbn07XG52YXIgdGltZUxvbmdGb3JtYXR0ZXIgPSBmdW5jdGlvbiB0aW1lTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKSB7XG4gIHN3aXRjaCAocGF0dGVybikge1xuICAgIGNhc2UgJ3AnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICBjYXNlICdwcCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICBjYXNlICdwcHAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgIGNhc2UgJ3BwcHAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gIH1cbn07XG52YXIgZGF0ZVRpbWVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gZGF0ZVRpbWVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gcGF0dGVybi5tYXRjaCgvKFArKShwKyk/LykgfHwgW107XG4gIHZhciBkYXRlUGF0dGVybiA9IG1hdGNoUmVzdWx0WzFdO1xuICB2YXIgdGltZVBhdHRlcm4gPSBtYXRjaFJlc3VsdFsyXTtcbiAgaWYgKCF0aW1lUGF0dGVybikge1xuICAgIHJldHVybiBkYXRlTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKTtcbiAgfVxuICB2YXIgZGF0ZVRpbWVGb3JtYXQ7XG4gIHN3aXRjaCAoZGF0ZVBhdHRlcm4pIHtcbiAgICBjYXNlICdQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQUFAnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdsb25nJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQUFBQJzpcbiAgICBkZWZhdWx0OlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXQucmVwbGFjZSgne3tkYXRlfX0nLCBkYXRlTG9uZ0Zvcm1hdHRlcihkYXRlUGF0dGVybiwgZm9ybWF0TG9uZykpLnJlcGxhY2UoJ3t7dGltZX19JywgdGltZUxvbmdGb3JtYXR0ZXIodGltZVBhdHRlcm4sIGZvcm1hdExvbmcpKTtcbn07XG52YXIgbG9uZ0Zvcm1hdHRlcnMgPSB7XG4gIHA6IHRpbWVMb25nRm9ybWF0dGVyLFxuICBQOiBkYXRlVGltZUxvbmdGb3JtYXR0ZXJcbn07XG5leHBvcnQgZGVmYXVsdCBsb25nRm9ybWF0dGVyczsiLCIvKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkge1xuICB2YXIgdXRjRGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtcbiAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgLSB1dGNEYXRlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSA4NjQwMDAwMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ0RheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZZZWFyVGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBkaWZmZXJlbmNlID0gdGltZXN0YW1wIC0gc3RhcnRPZlllYXJUaW1lc3RhbXA7XG4gIHJldHVybiBNYXRoLmZsb29yKGRpZmZlcmVuY2UgLyBNSUxMSVNFQ09ORFNfSU5fREFZKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZlVUQ0lTT1dlZWsoZGF0ZSkuZ2V0VGltZSgpIC0gc3RhcnRPZlVUQ0lTT1dlZWtZZWFyKGRhdGUpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRVVENGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucykuZ2V0VGltZSgpIC0gc3RhcnRPZlVUQ1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmaXJzdFdlZWtDb250YWluc0RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDcgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWtPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwidmFyIHByb3RlY3RlZERheU9mWWVhclRva2VucyA9IFsnRCcsICdERCddO1xudmFyIHByb3RlY3RlZFdlZWtZZWFyVG9rZW5zID0gWydZWScsICdZWVlZJ107XG5leHBvcnQgZnVuY3Rpb24gaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbih0b2tlbikge1xuICByZXR1cm4gcHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW5zLmluZGV4T2YodG9rZW4pICE9PSAtMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHByb3RlY3RlZFdlZWtZZWFyVG9rZW5zLmluZGV4T2YodG9rZW4pICE9PSAtMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd1Byb3RlY3RlZEVycm9yKHRva2VuLCBmb3JtYXQsIGlucHV0KSB7XG4gIGlmICh0b2tlbiA9PT0gJ1lZWVknKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ1lZJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ0QnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYGRgIGluc3RlYWQgb2YgYERgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ0REJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcXVpcmVkQXJncyhyZXF1aXJlZCwgYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocmVxdWlyZWQgKyAnIGFyZ3VtZW50JyArIChyZXF1aXJlZCA+IDEgPyAncycgOiAnJykgKyAnIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJncy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxufSIsInZhciByb3VuZGluZ01hcCA9IHtcbiAgY2VpbDogTWF0aC5jZWlsLFxuICByb3VuZDogTWF0aC5yb3VuZCxcbiAgZmxvb3I6IE1hdGguZmxvb3IsXG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA8IDAgPyBNYXRoLmNlaWwodmFsdWUpIDogTWF0aC5mbG9vcih2YWx1ZSk7XG4gIH0gLy8gTWF0aC50cnVuYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFXG59O1xuXG52YXIgZGVmYXVsdFJvdW5kaW5nTWV0aG9kID0gJ3RydW5jJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3VuZGluZ01ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIG1ldGhvZCA/IHJvdW5kaW5nTWFwW21ldGhvZF0gOiByb3VuZGluZ01hcFtkZWZhdWx0Um91bmRpbmdNZXRob2RdO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENEYXkoZGlydHlEYXRlLCBkaXJ0eURheSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcbiAgdmFyIGN1cnJlbnREYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgcmVtYWluZGVyID0gZGF5ICUgNztcbiAgdmFyIGRheUluZGV4ID0gKHJlbWFpbmRlciArIDcpICUgNztcbiAgdmFyIGRpZmYgPSAoZGF5SW5kZXggPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSBjdXJyZW50RGF5O1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VVRDSVNPRGF5KGRpcnR5RGF0ZSwgZGlydHlEYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXkgPSB0b0ludGVnZXIoZGlydHlEYXkpO1xuICBpZiAoZGF5ICUgNyA9PT0gMCkge1xuICAgIGRheSA9IGRheSAtIDc7XG4gIH1cbiAgdmFyIHdlZWtTdGFydHNPbiA9IDE7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2VlayBmcm9tIFwiLi4vZ2V0VVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENJU09XZWVrKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaXNvV2VlayA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWspO1xuICB2YXIgZGlmZiA9IGdldFVUQ0lTT1dlZWsoZGF0ZSkgLSBpc29XZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2VlayBmcm9tIFwiLi4vZ2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENXZWVrKGRpcnR5RGF0ZSwgZGlydHlXZWVrLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2VlayA9IHRvSW50ZWdlcihkaXJ0eVdlZWspO1xuICB2YXIgZGlmZiA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSAxO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFVUQ0lTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldFVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZlVUQ0lTT1dlZWsoZm91cnRoT2ZKYW51YXJ5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG4gIHZhciB5ZWFyID0gZ2V0VVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKTtcbiAgdmFyIGZpcnN0V2VlayA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWsuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIHJldHVybiBkYXRlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvSW50ZWdlcihkaXJ0eU51bWJlcikge1xuICBpZiAoZGlydHlOdW1iZXIgPT09IG51bGwgfHwgZGlydHlOdW1iZXIgPT09IHRydWUgfHwgZGlydHlOdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG4gIHJldHVybiBudW1iZXIgPCAwID8gTWF0aC5jZWlsKG51bWJlcikgOiBNYXRoLmZsb29yKG51bWJlcik7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNb250aHMgZnJvbSBcIi4uL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgb2JqZWN0IHdpdGggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKlxuICogfCBLZXkgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCB5ZWFycyAgICAgICAgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtb250aHMgICAgICAgICB8IEFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQgICAgICAgfFxuICogfCB3ZWVrcyAgICAgICAgICB8IEFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBkYXlzICAgICAgICAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkICAgICAgICAgfFxuICogfCBob3VycyAgICAgICAgICB8IEFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtaW51dGVzICAgICAgICB8IEFtb3VudCBvZiBtaW51dGVzIHRvIGJlIGFkZGVkICAgICAgfFxuICogfCBzZWNvbmRzICAgICAgICB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkICAgICAgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCB0aGUgZm9sbG93aW5nIGR1cmF0aW9uIHRvIDEgU2VwdGVtYmVyIDIwMTQsIDEwOjE5OjUwXG4gKiBjb25zdCByZXN1bHQgPSBhZGQobmV3IERhdGUoMjAxNCwgOCwgMSwgMTAsIDE5LCA1MCksIHtcbiAqICAgeWVhcnM6IDIsXG4gKiAgIG1vbnRoczogOSxcbiAqICAgd2Vla3M6IDEsXG4gKiAgIGRheXM6IDcsXG4gKiAgIGhvdXJzOiA1LFxuICogICBtaW51dGVzOiA5LFxuICogICBzZWNvbmRzOiAzMCxcbiAqIH0pXG4gKiAvLz0+IFRodSBKdW4gMTUgMjAxNyAxNToyOToyMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGQoZGlydHlEYXRlLCBkdXJhdGlvbikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgaWYgKCFkdXJhdGlvbiB8fCBfdHlwZW9mKGR1cmF0aW9uKSAhPT0gJ29iamVjdCcpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgeWVhcnMgPSBkdXJhdGlvbi55ZWFycyA/IHRvSW50ZWdlcihkdXJhdGlvbi55ZWFycykgOiAwO1xuICB2YXIgbW9udGhzID0gZHVyYXRpb24ubW9udGhzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1vbnRocykgOiAwO1xuICB2YXIgd2Vla3MgPSBkdXJhdGlvbi53ZWVrcyA/IHRvSW50ZWdlcihkdXJhdGlvbi53ZWVrcykgOiAwO1xuICB2YXIgZGF5cyA9IGR1cmF0aW9uLmRheXMgPyB0b0ludGVnZXIoZHVyYXRpb24uZGF5cykgOiAwO1xuICB2YXIgaG91cnMgPSBkdXJhdGlvbi5ob3VycyA/IHRvSW50ZWdlcihkdXJhdGlvbi5ob3VycykgOiAwO1xuICB2YXIgbWludXRlcyA9IGR1cmF0aW9uLm1pbnV0ZXMgPyB0b0ludGVnZXIoZHVyYXRpb24ubWludXRlcykgOiAwO1xuICB2YXIgc2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMgPyB0b0ludGVnZXIoZHVyYXRpb24uc2Vjb25kcykgOiAwO1xuXG4gIC8vIEFkZCB5ZWFycyBhbmQgbW9udGhzXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlV2l0aE1vbnRocyA9IG1vbnRocyB8fCB5ZWFycyA/IGFkZE1vbnRocyhkYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKSA6IGRhdGU7XG5cbiAgLy8gQWRkIHdlZWtzIGFuZCBkYXlzXG4gIHZhciBkYXRlV2l0aERheXMgPSBkYXlzIHx8IHdlZWtzID8gYWRkRGF5cyhkYXRlV2l0aE1vbnRocywgZGF5cyArIHdlZWtzICogNykgOiBkYXRlV2l0aE1vbnRocztcblxuICAvLyBBZGQgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgdmFyIG1pbnV0ZXNUb0FkZCA9IG1pbnV0ZXMgKyBob3VycyAqIDYwO1xuICB2YXIgc2Vjb25kc1RvQWRkID0gc2Vjb25kcyArIG1pbnV0ZXNUb0FkZCAqIDYwO1xuICB2YXIgbXNUb0FkZCA9IHNlY29uZHNUb0FkZCAqIDEwMDA7XG4gIHZhciBmaW5hbERhdGUgPSBuZXcgRGF0ZShkYXRlV2l0aERheXMuZ2V0VGltZSgpICsgbXNUb0FkZCk7XG4gIHJldHVybiBmaW5hbERhdGU7XG59IiwiaW1wb3J0IGlzV2Vla2VuZCBmcm9tIFwiLi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU3VuZGF5IGZyb20gXCIuLi9pc1N1bmRheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU2F0dXJkYXkgZnJvbSBcIi4uL2lzU2F0dXJkYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUsIGlnbm9yaW5nIHdlZWtlbmRzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBidXNpbmVzcyBkYXlzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGJ1c2luZXNzIGRheXMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGJ1c2luZXNzIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEJ1c2luZXNzRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IE1vbiBTZXAgMTUgMjAxNCAwMDowMDowMCAoc2tpcHBlZCB3ZWVrZW5kIGRheXMpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZEJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgc3RhcnRlZE9uV2Vla2VuZCA9IGlzV2Vla2VuZChkYXRlKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICB2YXIgc2lnbiA9IGFtb3VudCA8IDAgPyAtMSA6IDE7XG4gIHZhciBmdWxsV2Vla3MgPSB0b0ludGVnZXIoYW1vdW50IC8gNSk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGZ1bGxXZWVrcyAqIDcpO1xuXG4gIC8vIEdldCByZW1haW5pbmcgZGF5cyBub3QgcGFydCBvZiBhIGZ1bGwgd2Vla1xuICB2YXIgcmVzdERheXMgPSBNYXRoLmFicyhhbW91bnQgJSA1KTtcblxuICAvLyBMb29wcyBvdmVyIHJlbWFpbmluZyBkYXlzXG4gIHdoaWxlIChyZXN0RGF5cyA+IDApIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzaWduKTtcbiAgICBpZiAoIWlzV2Vla2VuZChkYXRlKSkgcmVzdERheXMgLT0gMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBkYXRlIGlzIGEgd2Vla2VuZCBkYXkgYW5kIHdlIHJlZHVjZSBhIGRpdmlkYWJsZSBvZlxuICAvLyA1IGZyb20gaXQsIHdlIGxhbmQgb24gYSB3ZWVrZW5kIGRhdGUuXG4gIC8vIFRvIGNvdW50ZXIgdGhpcywgd2UgYWRkIGRheXMgYWNjb3JkaW5nbHkgdG8gbGFuZCBvbiB0aGUgbmV4dCBidXNpbmVzcyBkYXlcbiAgaWYgKHN0YXJ0ZWRPbldlZWtlbmQgJiYgaXNXZWVrZW5kKGRhdGUpICYmIGFtb3VudCAhPT0gMCkge1xuICAgIC8vIElmIHdlJ3JlIHJlZHVjaW5nIGRheXMsIHdlIHdhbnQgdG8gYWRkIGRheXMgdW50aWwgd2UgbGFuZCBvbiBhIHdlZWtkYXlcbiAgICAvLyBJZiB3ZSdyZSBhZGRpbmcgZGF5cyB3ZSB3YW50IHRvIHJlZHVjZSBkYXlzIHVudGlsIHdlIGxhbmQgb24gYSB3ZWVrZGF5XG4gICAgaWYgKGlzU2F0dXJkYXkoZGF0ZSkpIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIChzaWduIDwgMCA/IDIgOiAtMSkpO1xuICAgIGlmIChpc1N1bmRheShkYXRlKSkgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgKHNpZ24gPCAwID8gMSA6IC0yKSk7XG4gIH1cblxuICAvLyBSZXN0b3JlIGhvdXJzIHRvIGF2b2lkIERTVCBsYWdcbiAgZGF0ZS5zZXRIb3Vycyhob3Vycyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IC0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gLSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGREYXlzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0hPVVIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGFkZEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGhvdXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRIb3VycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGFtb3VudCAqIE1JTExJU0VDT05EU19JTl9IT1VSKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHNldElTT1dlZWtZZWFyIGZyb20gXCIuLi9zZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byAyIEp1bHkgMjAxMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZElTT1dlZWtZZWFycyhuZXcgRGF0ZSgyMDEwLCA2LCAyKSwgNSlcbiAqIC8vPT4gRnJpIEp1biAyNiAyMDE1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZElTT1dlZWtZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIHNldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSwgZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKSArIGFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHRpbWVzdGFtcCA9IHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXAgKyBhbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDYwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAzMCBtaW51dGVzIHRvIDEwIEp1bHkgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjozMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgYW1vdW50ICogTUlMTElTRUNPTkRTX0lOX01JTlVURSk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1vbnRocyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgbW9udGhzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz0+IFN1biBGZWIgMDEgMjAxNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNb250aHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIGlmIChpc05hTihhbW91bnQpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIG1vbnRocywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICB2YXIgZGF5T2ZNb250aCA9IGRhdGUuZ2V0RGF0ZSgpO1xuXG4gIC8vIFRoZSBKUyBEYXRlIG9iamVjdCBzdXBwb3J0cyBkYXRlIG1hdGggYnkgYWNjZXB0aW5nIG91dC1vZi1ib3VuZHMgdmFsdWVzIGZvclxuICAvLyBtb250aCwgZGF5LCBldGMuIEZvciBleGFtcGxlLCBuZXcgRGF0ZSgyMDIwLCAwLCAwKSByZXR1cm5zIDMxIERlYyAyMDE5IGFuZFxuICAvLyBuZXcgRGF0ZSgyMDIwLCAxMywgMSkgcmV0dXJucyAxIEZlYiAyMDIxLiAgVGhpcyBpcyAqYWxtb3N0KiB0aGUgYmVoYXZpb3Igd2VcbiAgLy8gd2FudCBleGNlcHQgdGhhdCBkYXRlcyB3aWxsIHdyYXAgYXJvdW5kIHRoZSBlbmQgb2YgYSBtb250aCwgbWVhbmluZyB0aGF0XG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAzMSkgd2lsbCByZXR1cm4gMyBNYXIgMjAyMSBub3QgMjggRmViIDIwMjEgYXMgZGVzaXJlZC4gU29cbiAgLy8gd2UnbGwgZGVmYXVsdCB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkIG1vbnRoIGJ5IGFkZGluZyAxIHRvIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoIGFuZCB1c2luZyBhIGRhdGUgb2YgMCB0byBiYWNrIHVwIG9uZSBkYXkgdG8gdGhlIGVuZCBvZiB0aGUgZGVzaXJlZFxuICAvLyBtb250aC5cbiAgdmFyIGVuZE9mRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICBlbmRPZkRlc2lyZWRNb250aC5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBhbW91bnQgKyAxLCAwKTtcbiAgdmFyIGRheXNJbk1vbnRoID0gZW5kT2ZEZXNpcmVkTW9udGguZ2V0RGF0ZSgpO1xuICBpZiAoZGF5T2ZNb250aCA+PSBkYXlzSW5Nb250aCkge1xuICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIHRoZW4gdGhpcyBpcyB0aGUgY29ycmVjdCBkYXRlXG4gICAgLy8gYW5kIHdlJ3JlIGRvbmUuXG4gICAgcmV0dXJuIGVuZE9mRGVzaXJlZE1vbnRoO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgd2Ugbm93IGtub3cgdGhhdCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBkYXktb2YtbW9udGggdmFsdWUgd29uJ3RcbiAgICAvLyBjYXVzZSBhbiBvdmVyZmxvdywgc28gc2V0IHRoZSBkZXNpcmVkIGRheS1vZi1tb250aC4gTm90ZSB0aGF0IHdlIGNhbid0XG4gICAgLy8ganVzdCBzZXQgdGhlIGRhdGUgb2YgYGVuZE9mRGVzaXJlZE1vbnRoYCBiZWNhdXNlIHRoYXQgb2JqZWN0IG1heSBoYXZlIGhhZFxuICAgIC8vIGl0cyB0aW1lIGNoYW5nZWQgaW4gdGhlIHVudXN1YWwgY2FzZSB3aGVyZSB3aGVyZSBhIERTVCB0cmFuc2l0aW9uIHdhcyBvblxuICAgIC8vIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGggYW5kIGl0cyBsb2NhbCB0aW1lIHdhcyBpbiB0aGUgaG91ciBza2lwcGVkIG9yXG4gICAgLy8gcmVwZWF0ZWQgbmV4dCB0byBhIERTVCB0cmFuc2l0aW9uLiAgU28gd2UgdXNlIGBkYXRlYCBpbnN0ZWFkIHdoaWNoIGlzXG4gICAgLy8gZ3VhcmFudGVlZCB0byBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCB0aW1lLlxuICAgIGRhdGUuc2V0RnVsbFllYXIoZW5kT2ZEZXNpcmVkTW9udGguZ2V0RnVsbFllYXIoKSwgZW5kT2ZEZXNpcmVkTW9udGguZ2V0TW9udGgoKSwgZGF5T2ZNb250aCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1vbnRocyBmcm9tIFwiLi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRRdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXIgcXVhcnRlcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhciBxdWFydGVycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgcXVhcnRlcnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgcXVhcnRlcnMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEgcXVhcnRlciB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkUXVhcnRlcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRRdWFydGVycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgdmFyIG1vbnRocyA9IGFtb3VudCAqIDM7XG4gIHJldHVybiBhZGRNb250aHMoZGlydHlEYXRlLCBtb250aHMpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAzMCBzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkU2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGFtb3VudCAqIDEwMDApO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB3ZWVrcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNCB3ZWVrcyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkV2Vla3MobmV3IERhdGUoMjAxNCwgOCwgMSksIDQpXG4gKiAvLz0+IE1vbiBTZXAgMjkgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRXZWVrcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgdmFyIGRheXMgPSBhbW91bnQgKiA3O1xuICByZXR1cm4gYWRkRGF5cyhkaXJ0eURhdGUsIGRheXMpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHllYXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IHllYXJzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gU3VuIFNlcCAwMSAyMDE5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFllYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTW9udGhzKGRpcnR5RGF0ZSwgYW1vdW50ICogMTIpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmdcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdGltZSBpbnRlcnZhbCBvdmVybGFwcGluZyB3aXRoIGFub3RoZXIgdGltZSBpbnRlcnZhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiB0aW1lIGludGVydmFsIG92ZXJsYXBwaW5nIHdpdGggYW5vdGhlciB0aW1lIGludGVydmFsPyBBZGphY2VudCBpbnRlcnZhbHMgZG8gbm90IGNvdW50IGFzIG92ZXJsYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsTGVmdCAtIHRoZSBmaXJzdCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxSaWdodCAtIHRoZSBzZWNvbmQgaW50ZXJ2YWwgdG8gY29tcGFyZS4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pbmNsdXNpdmU9ZmFsc2VdIC0gd2hldGhlciB0aGUgY29tcGFyaXNvbiBpcyBpbmNsdXNpdmUgb3Igbm90XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gd2hldGhlciB0aGUgdGltZSBpbnRlcnZhbHMgYXJlIG92ZXJsYXBwaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBvdmVybGFwcGluZyB0aW1lIGludGVydmFsczpcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDE3KSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSkgfVxuICogKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBub24tb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHM6XG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjIpIH1cbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFkamFjZW50IHRpbWUgaW50ZXJ2YWxzOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDMwKSB9XG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzaW5nIHRoZSBpbmNsdXNpdmUgb3B0aW9uOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDI0KSB9XG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjQpIH0sXG4gKiAgIHsgaW5jbHVzaXZlOiB0cnVlIH1cbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhpbnRlcnZhbExlZnQsIGludGVydmFsUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBsZWZ0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdCA9PT0gbnVsbCB8fCBpbnRlcnZhbExlZnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludGVydmFsTGVmdC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgbGVmdEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxMZWZ0ID09PSBudWxsIHx8IGludGVydmFsTGVmdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW50ZXJ2YWxMZWZ0LmVuZCkuZ2V0VGltZSgpO1xuICB2YXIgcmlnaHRTdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodCA9PT0gbnVsbCB8fCBpbnRlcnZhbFJpZ2h0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbFJpZ2h0LnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciByaWdodEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodCA9PT0gbnVsbCB8fCBpbnRlcnZhbFJpZ2h0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbFJpZ2h0LmVuZCkuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKGxlZnRTdGFydFRpbWUgPD0gbGVmdEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuaW5jbHVzaXZlKSB7XG4gICAgcmV0dXJuIGxlZnRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDw9IGxlZnRFbmRUaW1lO1xuICB9XG4gIHJldHVybiBsZWZ0U3RhcnRUaW1lIDwgcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDwgbGVmdEVuZFRpbWU7XG59IiwiaW1wb3J0IG1heCBmcm9tIFwiLi4vbWF4L2luZGV4LmpzXCI7XG5pbXBvcnQgbWluIGZyb20gXCIuLi9taW4vaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNsYW1wXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIGEgZGF0ZSBib3VuZGVkIGJ5IHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gaW50ZXJ2YWxcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENsYW1wcyBhIGRhdGUgdG8gdGhlIGxvd2VyIGJvdW5kIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHVwcGVyXG4gKiBib3VuZCB3aXRoIHRoZSBlbmQgb2YgdGhlIGludGVydmFsLlxuICpcbiAqIC0gV2hlbiB0aGUgZGF0ZSBpcyBsZXNzIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCwgdGhlIHN0YXJ0IGlzIHJldHVybmVkLlxuICogLSBXaGVuIHRoZSBkYXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbCwgdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAqIC0gT3RoZXJ3aXNlIHRoZSBkYXRlIGlzIHJldHVybmVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIE1hciwgMjEsIDIwMjEgYm91bmRlZCB0byBhbiBpbnRlcnZhbCBzdGFydGluZyBhdCBNYXIsIDIyLCAyMDIxIGFuZCBlbmRpbmcgYXQgQXByLCAwMSwgMjAyMVxuICogY29uc3QgcmVzdWx0ID0gY2xhbXAobmV3IERhdGUoMjAyMSwgMiwgMjEpLCB7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIxLCAyLCAyMiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAyMSwgMywgMSksXG4gKiB9KVxuICogLy89PiBNb24gTWFyIDIyIDIwMjEgMDA6MDA6MDBcbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBib3VuZGVkXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbCB0byBib3VuZCB0b1xuICogQHJldHVybnMge0RhdGV9IHRoZSBkYXRlIGJvdW5kZWQgYnkgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbGFtcChkYXRlLCBfcmVmKSB7XG4gIHZhciBzdGFydCA9IF9yZWYuc3RhcnQsXG4gICAgZW5kID0gX3JlZi5lbmQ7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbWluKFttYXgoW2RhdGUsIHN0YXJ0XSksIGVuZF0pO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY2xvc2VzdEluZGV4VG9cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIGFuIGluZGV4IG9mIHRoZSBjbG9zZXN0IGRhdGUgZnJvbSB0aGUgYXJyYXkgY29tcGFyaW5nIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIGFuIGluZGV4IG9mIHRoZSBjbG9zZXN0IGRhdGUgZnJvbSB0aGUgYXJyYXkgY29tcGFyaW5nIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtBcnJheTxEYXRlPiB8IEFycmF5PG51bWJlcj59IGRhdGVzQXJyYXkgLSB0aGUgYXJyYXkgdG8gc2VhcmNoXG4gKiBAcmV0dXJucyB7TnVtYmVyIHwgdW5kZWZpbmVkfSBhbiBpbmRleCBvZiB0aGUgZGF0ZSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZCB2YWx1ZSBpcyBnaXZlblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXRlIGlzIGNsb3NlciB0byA2IFNlcHRlbWJlciAyMDE1P1xuICogY29uc3QgZGF0ZVRvQ29tcGFyZSA9IG5ldyBEYXRlKDIwMTUsIDgsIDYpXG4gKiBjb25zdCBkYXRlc0FycmF5ID0gW1xuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTcsIDAsIDEpXG4gKiBdXG4gKiBjb25zdCByZXN1bHQgPSBjbG9zZXN0SW5kZXhUbyhkYXRlVG9Db21wYXJlLCBkYXRlc0FycmF5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsb3Nlc3RJbmRleFRvKGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICBpZiAoaXNOYU4oTnVtYmVyKGRhdGVUb0NvbXBhcmUpKSkgcmV0dXJuIE5hTjtcbiAgdmFyIHRpbWVUb0NvbXBhcmUgPSBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIHVuZGVmaW5lZCBvciBudWxsXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgPT0gbnVsbCkge1xuICAgIGRhdGVzQXJyYXkgPSBbXTtcblxuICAgIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG5cbiAgICAvLyBJZiBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheS1saWtlIE9iamVjdCwgY29udmVydCB0byBBcnJheS4gT3RoZXJ3aXNlLCBtYWtlIGl0IGVtcHR5IEFycmF5XG4gIH0gZWxzZSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgdmFyIG1pbkRpc3RhbmNlO1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSwgaW5kZXgpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IE5hTjtcbiAgICAgIG1pbkRpc3RhbmNlID0gTmFOO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLmFicyh0aW1lVG9Db21wYXJlIC0gY3VycmVudERhdGUuZ2V0VGltZSgpKTtcbiAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgZGlzdGFuY2UgPCBOdW1iZXIobWluRGlzdGFuY2UpKSB7XG4gICAgICByZXN1bHQgPSBpbmRleDtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNsb3Nlc3RUb1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gYSBkYXRlIGZyb20gdGhlIGFycmF5IGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gYSBkYXRlIGZyb20gdGhlIGFycmF5IGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgTnVtYmVyfSBkYXRlVG9Db21wYXJlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge0FycmF5PERhdGU+IHwgQXJyYXk8bnVtYmVyPn0gZGF0ZXNBcnJheSAtIHRoZSBhcnJheSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHtEYXRlIHwgdW5kZWZpbmVkfSB0aGUgZGF0ZSBmcm9tIHRoZSBhcnJheSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZCB2YWx1ZSBpcyBnaXZlblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXRlIGlzIGNsb3NlciB0byA2IFNlcHRlbWJlciAyMDE1OiAxIEphbnVhcnkgMjAwMCBvciAxIEphbnVhcnkgMjAzMD9cbiAqIGNvbnN0IGRhdGVUb0NvbXBhcmUgPSBuZXcgRGF0ZSgyMDE1LCA4LCA2KVxuICogY29uc3QgcmVzdWx0ID0gY2xvc2VzdFRvKGRhdGVUb0NvbXBhcmUsIFtcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMzAsIDAsIDEpXG4gKiBdKVxuICogLy89PiBUdWUgSmFuIDAxIDIwMzAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvc2VzdFRvKGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICBpZiAoaXNOYU4oTnVtYmVyKGRhdGVUb0NvbXBhcmUpKSkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciB0aW1lVG9Db21wYXJlID0gZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG4gIHZhciBkYXRlc0FycmF5O1xuICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyB1bmRlZmluZWQgb3IgbnVsbFxuICBpZiAoZGlydHlEYXRlc0FycmF5ID09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gW107XG5cbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheSwgU2V0IG9yIE1hcCwgb3Igb2JqZWN0IHdpdGggY3VzdG9tIGBmb3JFYWNoYCBtZXRob2RcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlydHlEYXRlc0FycmF5LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRlc0FycmF5ID0gZGlydHlEYXRlc0FycmF5O1xuXG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuIE90aGVyd2lzZSwgbWFrZSBpdCBlbXB0eSBBcnJheVxuICB9IGVsc2Uge1xuICAgIGRhdGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkaXJ0eURhdGVzQXJyYXkpO1xuICB9XG4gIHZhciByZXN1bHQ7XG4gIHZhciBtaW5EaXN0YW5jZTtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICBtaW5EaXN0YW5jZSA9IE5hTjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnModGltZVRvQ29tcGFyZSAtIGN1cnJlbnREYXRlLmdldFRpbWUoKSk7XG4gICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IGRpc3RhbmNlIDwgTnVtYmVyKG1pbkRpc3RhbmNlKSkge1xuICAgICAgcmVzdWx0ID0gY3VycmVudERhdGU7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjb21wYXJlQXNjXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIC0xLCAwIG9yIDEuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAxIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQsXG4gKiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBvciAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbXBhcmUgMTEgRmVicnVhcnkgMTk4NyBhbmQgMTAgSnVseSAxOTg5OlxuICogY29uc3QgcmVzdWx0ID0gY29tcGFyZUFzYyhuZXcgRGF0ZSgxOTg3LCAxLCAxMSksIG5ldyBEYXRlKDE5ODksIDYsIDEwKSlcbiAqIC8vPT4gLTFcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU29ydCB0aGUgYXJyYXkgb2YgZGF0ZXM6XG4gKiBjb25zdCByZXN1bHQgPSBbXG4gKiAgIG5ldyBEYXRlKDE5OTUsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgxOTg3LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKVxuICogXS5zb3J0KGNvbXBhcmVBc2MpXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wYXJlQXNjKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgZGlmZiA9IGRhdGVMZWZ0LmdldFRpbWUoKSAtIGRhdGVSaWdodC5nZXRUaW1lKCk7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xuICAgIHJldHVybiAxO1xuICAgIC8vIFJldHVybiAwIGlmIGRpZmYgaXMgMDsgcmV0dXJuIE5hTiBpZiBkaWZmIGlzIE5hTlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjb21wYXJlRGVzY1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb21wYXJlIHRoZSB0d28gZGF0ZXMgcmV2ZXJzZSBjaHJvbm9sb2dpY2FsbHkgYW5kIHJldHVybiAtMSwgMCBvciAxLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gLTEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAqIDEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQgb3IgMCBpZiBkYXRlcyBhcmUgZXF1YWwuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb21wYXJlIDExIEZlYnJ1YXJ5IDE5ODcgYW5kIDEwIEp1bHkgMTk4OSByZXZlcnNlIGNocm9ub2xvZ2ljYWxseTpcbiAqIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVEZXNjKG5ldyBEYXRlKDE5ODcsIDEsIDExKSwgbmV3IERhdGUoMTk4OSwgNiwgMTApKVxuICogLy89PiAxXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNvcnQgdGhlIGFycmF5IG9mIGRhdGVzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlcjpcbiAqIGNvbnN0IHJlc3VsdCA9IFtcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApXG4gKiBdLnNvcnQoY29tcGFyZURlc2MpXG4gKiAvLz0+IFtcbiAqIC8vICAgU3VuIEp1bCAwMiAxOTk1IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wYXJlRGVzYyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmYgPSBkYXRlTGVmdC5nZXRUaW1lKCkgLSBkYXRlUmlnaHQuZ2V0VGltZSgpO1xuICBpZiAoZGlmZiA+IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufSIsIi8qKlxuICogRGF5cyBpbiAxIHdlZWsuXG4gKlxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBEYXlzIGluIDEgeWVhclxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKlxuICogQG5hbWUgZGF5c0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWF4VGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWluVGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogTWludXRlcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBNb250aHMgaW4gMSBxdWFydGVyXG4gKlxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogTW9udGhzIGluIDEgeWVhclxuICpcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBRdWFydGVycyBpbiAxIHllYXJcbiAqXG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIGRheVxuICpcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIHdlZWtcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSB5ZWFyXG4gKlxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgbW9udGhcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgcXVhcnRlclxuICpcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMzsiLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGF5c0luV2VlayB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGF5c1RvV2Vla3NcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgZGF5cyB0byB3ZWVrcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgZGF5cyB0byBhIGZ1bGwgbnVtYmVyIG9mIHdlZWtzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYXlzIC0gbnVtYmVyIG9mIGRheXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIGNvbnZlcnRlZCBpbiB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMTQgZGF5cyB0byB3ZWVrczpcbiAqIGNvbnN0IHJlc3VsdCA9IGRheXNUb1dlZWtzKDE0KVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBkYXlzVG9XZWVrcygxMylcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXlzVG9XZWVrcyhkYXlzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgd2Vla3MgPSBkYXlzIC8gZGF5c0luV2VlaztcbiAgcmV0dXJuIE1hdGguZmxvb3Iod2Vla3MpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCBpc1NhbWVEYXkgZnJvbSBcIi4uL2lzU2FtZURheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBpc1dlZWtlbmQgZnJvbSBcIi4uL2lzV2Vla2VuZC9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBidXNpbmVzcyBkYXkgcGVyaW9kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqIEJ1c2luZXNzIGRheXMgYmVpbmcgZGF5cyB0aGF0IGFyZW50IGluIHRoZSB3ZWVrZW5kLlxuICogTGlrZSBgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzYCwgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRpbWVzIGZyb21cbiAqIHRoZSBkYXRlcyBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBidXNpbmVzcyBkYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEwIEphbnVhcnkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDAsIDEwKVxuICogKVxuICogLy89PiAxMzZcbiAqXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAzMCBOb3ZlbWJlciAyMDIxIGFuZCAxIE5vdmVtYmVyIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAzMCksXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKVxuICogKVxuICogLy89PiAyMVxuICpcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEgTm92ZW1iZXIgMjAyMSBhbmQgMSBEZWNlbWJlciAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDExLCAxKVxuICogKVxuICogLy89PiAtMjJcbiAqXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE5vdmVtYmVyIDIwMjEgYW5kIDEgTm92ZW1iZXIgMjAyMSA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDEpXG4gKiApXG4gKiAvLz0+IDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICBpZiAoIWlzVmFsaWQoZGF0ZUxlZnQpIHx8ICFpc1ZhbGlkKGRhdGVSaWdodCkpIHJldHVybiBOYU47XG4gIHZhciBjYWxlbmRhckRpZmZlcmVuY2UgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY2FsZW5kYXJEaWZmZXJlbmNlIDwgMCA/IC0xIDogMTtcbiAgdmFyIHdlZWtzID0gdG9JbnRlZ2VyKGNhbGVuZGFyRGlmZmVyZW5jZSAvIDcpO1xuICB2YXIgcmVzdWx0ID0gd2Vla3MgKiA1O1xuICBkYXRlUmlnaHQgPSBhZGREYXlzKGRhdGVSaWdodCwgd2Vla3MgKiA3KTtcblxuICAvLyB0aGUgbG9vcCBiZWxvdyB3aWxsIHJ1biBhdCBtb3N0IDYgdGltZXMgdG8gYWNjb3VudCBmb3IgdGhlIHJlbWFpbmluZyBkYXlzIHRoYXQgZG9uJ3QgbWFrZXVwIGEgZnVsbCB3ZWVrXG4gIHdoaWxlICghaXNTYW1lRGF5KGRhdGVMZWZ0LCBkYXRlUmlnaHQpKSB7XG4gICAgLy8gc2lnbiBpcyB1c2VkIHRvIGFjY291bnQgZm9yIGJvdGggbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGRpZmZlcmVuY2VzXG4gICAgcmVzdWx0ICs9IGlzV2Vla2VuZChkYXRlUmlnaHQpID8gMCA6IHNpZ247XG4gICAgZGF0ZVJpZ2h0ID0gYWRkRGF5cyhkYXRlUmlnaHQsIHNpZ24pO1xuICB9XG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mRGF5IGZyb20gXCIuLi9zdGFydE9mRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGltZXMgYXJlIHJlbW92ZWRcbiAqIGZyb20gdGhlIGRhdGVzIGFuZCB0aGVuIHRoZSBkaWZmZXJlbmNlIGluIGRheXMgaXMgY2FsY3VsYXRlZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz0+IDM2NlxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZEYXlMZWZ0ID0gc3RhcnRPZkRheShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIHN0YXJ0T2ZEYXlSaWdodCA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgdGltZXN0YW1wTGVmdCA9IHN0YXJ0T2ZEYXlMZWZ0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheUxlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mRGF5UmlnaHQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mRGF5UmlnaHQpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSBkYXkgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSBkYXkgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIE1JTExJU0VDT05EU19JTl9EQVkpO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIDEgSmFudWFyeSAyMDEwIGFuZCAxIEphbnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzKFxuICogICBuZXcgRGF0ZSgyMDEyLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMCwgMCwgMSlcbiAqIClcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZUxlZnQpIC0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlUmlnaHQpO1xufSIsImltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrc1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgSVNPIHdlZWtzIGFyZSBiZXR3ZWVuIDYgSnVseSAyMDE0IGFuZCAyMSBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDYpXG4gKiApXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZJU09XZWVrTGVmdCA9IHN0YXJ0T2ZJU09XZWVrKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgc3RhcnRPZklTT1dlZWtSaWdodCA9IHN0YXJ0T2ZJU09XZWVrKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHRpbWVzdGFtcExlZnQgPSBzdGFydE9mSVNPV2Vla0xlZnQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mSVNPV2Vla0xlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mSVNPV2Vla1JpZ2h0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZklTT1dlZWtSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE0LCAwLCAzMSlcbiAqIClcbiAqIC8vPT4gOFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHllYXJEaWZmID0gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGhEaWZmID0gZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpO1xuICByZXR1cm4geWVhckRpZmYgKiAxMiArIG1vbnRoRGlmZjtcbn0iLCJpbXBvcnQgZ2V0UXVhcnRlciBmcm9tIFwiLi4vZ2V0UXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHF1YXJ0ZXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgcXVhcnRlcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMjAxMywgMTEsIDMxKVxuICogKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciB5ZWFyRGlmZiA9IGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIHF1YXJ0ZXJEaWZmID0gZ2V0UXVhcnRlcihkYXRlTGVmdCkgLSBnZXRRdWFydGVyKGRhdGVSaWdodCk7XG4gIHJldHVybiB5ZWFyRGlmZiAqIDQgKyBxdWFydGVyRGlmZjtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGFyZSBiZXR3ZWVuIDUgSnVseSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDUpXG4gKiApXG4gKiAvLz0+IDNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSxcbiAqIC8vIGhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGFyZSBiZXR3ZWVuIDUgSnVseSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDUpLFxuICogICB7IHdlZWtTdGFydHNPbjogMSB9XG4gKiApXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZXZWVrTGVmdCA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZUxlZnQsIG9wdGlvbnMpO1xuICB2YXIgc3RhcnRPZldlZWtSaWdodCA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKTtcbiAgdmFyIHRpbWVzdGFtcExlZnQgPSBzdGFydE9mV2Vla0xlZnQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mV2Vla0xlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mV2Vla1JpZ2h0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZldlZWtSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgeWVhcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMTEgRmVicnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMjAxMywgMTEsIDMxKVxuICogKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7IC8vIExpa2UgYGNvbXBhcmVBc2NgIGJ1dCB1c2VzIGxvY2FsIHRpbWUgbm90IFVUQywgd2hpY2ggaXMgbmVlZGVkXG4vLyBmb3IgYWNjdXJhdGUgZXF1YWxpdHkgY29tcGFyaXNvbnMgb2YgVVRDIHRpbWVzdGFtcHMgdGhhdCBlbmQgdXBcbi8vIGhhdmluZyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBpbiBsb2NhbCB0aW1lLCBlLmcuIG9uZSBob3VyIGJlZm9yZVxuLy8gRFNUIGVuZHMgdnMuIHRoZSBpbnN0YW50IHRoYXQgRFNUIGVuZHMuXG5mdW5jdGlvbiBjb21wYXJlTG9jYWxBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICB2YXIgZGlmZiA9IGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKSB8fCBkYXRlTGVmdC5nZXRNb250aCgpIC0gZGF0ZVJpZ2h0LmdldE1vbnRoKCkgfHwgZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gZGF0ZVJpZ2h0LmdldERhdGUoKSB8fCBkYXRlTGVmdC5nZXRIb3VycygpIC0gZGF0ZVJpZ2h0LmdldEhvdXJzKCkgfHwgZGF0ZUxlZnQuZ2V0TWludXRlcygpIC0gZGF0ZVJpZ2h0LmdldE1pbnV0ZXMoKSB8fCBkYXRlTGVmdC5nZXRTZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0U2Vjb25kcygpIHx8IGRhdGVMZWZ0LmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZVJpZ2h0LmdldE1pbGxpc2Vjb25kcygpO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufVxuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXkgcGVyaW9kcyBiZXR3ZWVuIHR3byBkYXRlcy4gRnJhY3Rpb25hbCBkYXlzIGFyZVxuICogdHJ1bmNhdGVkIHRvd2FyZHMgemVyby5cbiAqXG4gKiBPbmUgXCJmdWxsIGRheVwiIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGEgbG9jYWwgdGltZSBpbiBvbmUgZGF5IHRvIHRoZSBzYW1lXG4gKiBsb2NhbCB0aW1lIG9uIHRoZSBuZXh0IG9yIHByZXZpb3VzIGRheS4gQSBmdWxsIGRheSBjYW4gc29tZXRpbWVzIGJlIGxlc3MgdGhhblxuICogb3IgbW9yZSB0aGFuIDI0IGhvdXJzIGlmIGEgZGF5bGlnaHQgc2F2aW5ncyBjaGFuZ2UgaGFwcGVucyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAqXG4gKiBUbyBpZ25vcmUgRFNUIGFuZCBvbmx5IG1lYXN1cmUgZXhhY3QgMjQtaG91ciBwZXJpb2RzLCB1c2UgdGhpcyBpbnN0ZWFkOlxuICogYE1hdGguZmxvb3IoZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkvMjQpfDBgLlxuICpcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPT4gMFxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE1hcmNoIDIwMjAgMDowMCBhbmQgMSBKdW5lIDIwMjAgMDowMCA/XG4gKiAvLyBOb3RlOiBiZWNhdXNlIGxvY2FsIHRpbWUgaXMgdXNlZCwgdGhlXG4gKiAvLyByZXN1bHQgd2lsbCBhbHdheXMgYmUgOTIgZGF5cywgZXZlbiBpblxuICogLy8gdGltZSB6b25lcyB3aGVyZSBEU1Qgc3RhcnRzIGFuZCB0aGVcbiAqIC8vIHBlcmlvZCBoYXMgb25seSA5MioyNC0xIGhvdXJzLlxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAyMCwgNSwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDIsIDEpXG4gKiApXG4vLz0+IDkyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkRheXMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSk7XG4gIGRhdGVMZWZ0LnNldERhdGUoZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCBkYXlzIC0gZGlmZiBpbiBjYWxlbmRhciBkYXlzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIGRheSBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgdmFyIGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAtc2lnbik7XG4gIHZhciByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3REYXlOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBob3VycyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAwNjo1MDowMCBhbmQgMiBKdWx5IDIwMTQgMTk6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Ib3VycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTksIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCA1MClcbiAqIClcbiAqIC8vPT4gMTJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBzdWJJU09XZWVrWWVhcnMgZnJvbSBcIi4uL3N1YklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgYmV0d2VlbiAxIEphbnVhcnkgMjAxMCBhbmQgMSBKYW51YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDEwLCAwLCAxKVxuICogKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbklTT1dlZWtZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcbiAgZGF0ZUxlZnQgPSBzdWJJU09XZWVrWWVhcnMoZGF0ZUxlZnQsIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgSVNPIHllYXJzIC0gZGlmZiBpbiBjYWxlbmRhciBJU08geWVhcnMpID09PSAxXG4gIC8vIGlmIGxhc3QgY2FsZW5kYXIgSVNPIHllYXIgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIHZhciBpc0xhc3RJU09XZWVrWWVhck5vdEZ1bGwgPSBOdW1iZXIoY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gLXNpZ24pO1xuICB2YXIgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gaXNMYXN0SVNPV2Vla1llYXJOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbGxpc2Vjb25kcyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTQgMTI6MzA6MjAuNjAwIGFuZCAyIEp1bHkgMjAxNCAxMjozMDoyMS43MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjEsIDcwMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDYwMClcbiAqIClcbiAqIC8vPT4gMTEwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkYXRlTGVmdCkuZ2V0VGltZSgpIC0gdG9EYXRlKGRhdGVSaWdodCkuZ2V0VGltZSgpO1xufSIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzaWduZWQgbnVtYmVyIG9mIGZ1bGwgKHJvdW5kZWQgdG93YXJkcyAwKSBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbnV0ZXMgYXJlIGJldHdlZW4gMiBKdWx5IDIwMTQgMTI6MDc6NTkgYW5kIDIgSnVseSAyMDE0IDEyOjIwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDIwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDcsIDU5KVxuICogKVxuICogLy89PiAxMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDEwOjAxOjU5IGFuZCAxMDowMDowMFxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMSwgNTkpXG4gKiApXG4gKiAvLz0+IC0xXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBpc0xhc3REYXlPZk1vbnRoIGZyb20gXCIuLi9pc0xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgdXNpbmcgdHJ1bmMgYXMgYSBkZWZhdWx0IHJvdW5kaW5nIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgbW9udGhzIGFyZSBiZXR3ZWVuIDMxIEphbnVhcnkgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1vbnRocyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgbmV3IERhdGUoMjAxNCwgMCwgMzEpKVxuICogLy89PiA3XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1vbnRocyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcbiAgdmFyIHJlc3VsdDtcblxuICAvLyBDaGVjayBmb3IgdGhlIGRpZmZlcmVuY2Ugb2YgbGVzcyB0aGFuIG1vbnRoXG4gIGlmIChkaWZmZXJlbmNlIDwgMSkge1xuICAgIHJlc3VsdCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRhdGVMZWZ0LmdldE1vbnRoKCkgPT09IDEgJiYgZGF0ZUxlZnQuZ2V0RGF0ZSgpID4gMjcpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCBjaGVjayBpZiB0aGUgZGF0ZSBpcyBlbmQgb2YgRmViIGFuZCBhc3NpZ24gYSBoaWdoZXIgZW5kIG9mIG1vbnRoIGRhdGVcbiAgICAgIC8vIHRvIGNvbXBhcmUgaXQgd2l0aCBKYW5cbiAgICAgIGRhdGVMZWZ0LnNldERhdGUoMzApO1xuICAgIH1cbiAgICBkYXRlTGVmdC5zZXRNb250aChkYXRlTGVmdC5nZXRNb250aCgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gICAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIG1vbnRocyAtIGRpZmYgaW4gY2FsZW5kYXIgbW9udGhzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIG1vbnRoIGlzIG5vdCBmdWxsXG4gICAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gICAgdmFyIGlzTGFzdE1vbnRoTm90RnVsbCA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGNhc2VzIG9mIG9uZSBmdWxsIGNhbGVuZGFyIG1vbnRoXG4gICAgaWYgKGlzTGFzdERheU9mTW9udGgodG9EYXRlKGRpcnR5RGF0ZUxlZnQpKSAmJiBkaWZmZXJlbmNlID09PSAxICYmIGNvbXBhcmVBc2MoZGlydHlEYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gMSkge1xuICAgICAgaXNMYXN0TW9udGhOb3RGdWxsID0gZmFsc2U7XG4gICAgfVxuICAgIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIE51bWJlcihpc0xhc3RNb250aE5vdEZ1bGwpKTtcbiAgfVxuXG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5RdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIHF1YXJ0ZXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluUXVhcnRlcnMobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTMsIDExLCAzMSkpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluUXVhcnRlcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5Nb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyAzO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IHNlY29uZHMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDE0IDEyOjMwOjA3Ljk5OSBhbmQgMiBKdWx5IDIwMTQgMTI6MzA6MjAuMDAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluU2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgNywgOTk5KVxuICogKVxuICogLy89PiAxMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gMTAwMDtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbkRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5XZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgd2Vla3MgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgd2Vla3MgYXJlXG4gKiB0cnVuY2F0ZWQgdG93YXJkcyB6ZXJvIGJ5IGRlZmF1bHQuXG4gKlxuICogT25lIFwiZnVsbCB3ZWVrXCIgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gYSBsb2NhbCB0aW1lIGluIG9uZSBkYXkgdG8gdGhlIHNhbWVcbiAqIGxvY2FsIHRpbWUgNyBkYXlzIGVhcmxpZXIgb3IgbGF0ZXIuIEEgZnVsbCB3ZWVrIGNhbiBzb21ldGltZXMgYmUgbGVzcyB0aGFuXG4gKiBvciBtb3JlIHRoYW4gNyoyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDcqMjQtaG91ciBwZXJpb2RzLCB1c2UgdGhpcyBpbnN0ZWFkOlxuICogYE1hdGguZmxvb3IoZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkvKDcqMjQpKXwwYC5cbiAqXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCB3ZWVrcyBhcmUgYmV0d2VlbiA1IEp1bHkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluV2Vla3MobmV3IERhdGUoMjAxNCwgNiwgMjApLCBuZXcgRGF0ZSgyMDE0LCA2LCA1KSlcbiAqIC8vPT4gMlxuICpcbiAqIC8vIEhvdyBtYW55IGZ1bGwgd2Vla3MgYXJlIGJldHdlZW5cbiAqIC8vIDEgTWFyY2ggMjAyMCAwOjAwIGFuZCA2IEp1bmUgMjAyMCAwOjAwID9cbiAqIC8vIE5vdGU6IGJlY2F1c2UgbG9jYWwgdGltZSBpcyB1c2VkLCB0aGVcbiAqIC8vIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSA4IHdlZWtzICg1NCBkYXlzKSxcbiAqIC8vIGV2ZW4gaWYgRFNUIHN0YXJ0cyBhbmQgdGhlIHBlcmlvZCBoYXNcbiAqIC8vIG9ubHkgNTQqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDIwLCA1LCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMCwgMiwgNilcbiAqIClcbiAqIC8vPT4gOFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5XZWVrcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyA3O1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIHllYXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDExIEZlYnJ1YXJ5IDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5ZZWFycyhuZXcgRGF0ZSgyMDE1LCAxLCAxMSksIG5ldyBEYXRlKDIwMTMsIDExLCAzMSkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcblxuICAvLyBTZXQgYm90aCBkYXRlcyB0byBhIHZhbGlkIGxlYXAgeWVhciBmb3IgYWNjdXJhdGUgY29tcGFyaXNvbiB3aGVuIGRlYWxpbmdcbiAgLy8gd2l0aCBsZWFwIGRheXNcbiAgZGF0ZUxlZnQuc2V0RnVsbFllYXIoMTU4NCk7XG4gIGRhdGVSaWdodC5zZXRGdWxsWWVhcigxNTg0KTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgeWVhcnMgLSBkaWZmIGluIGNhbGVuZGFyIHllYXJzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIHllYXIgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIHZhciBpc0xhc3RZZWFyTm90RnVsbCA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduO1xuICB2YXIgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gTnVtYmVyKGlzTGFzdFllYXJOb3RGdWxsKSk7XG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hEYXlPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3RlcD0xXSAtIHRoZSBzdGVwIHRvIGluY3JlbWVudCBieS4gVGhlIHZhbHVlIHNob3VsZCBiZSBtb3JlIHRoYW4gMS5cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBkYXlzIGZyb20gdGhlIGRheSBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIGRheSBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDFcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBkYXkgYmV0d2VlbiA2IE9jdG9iZXIgMjAxNCBhbmQgMTAgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaERheU9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgMTApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIE9jdCAwNyAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBXZWQgT2N0IDA4IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFRodSBPY3QgMDkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgRnJpIE9jdCAxMCAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hEYXlPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHN0ZXA7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgZGF0ZXMgPSBbXTtcbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyBzdGVwKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IGFkZEhvdXJzIGZyb20gXCIuLi9hZGRIb3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoSG91ck9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIGhvdXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIGhvdXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5zdGVwPTFdIC0gdGhlIHN0ZXAgdG8gaW5jcmVtZW50IGJ5LiBUaGUgdmFsdWUgc2hvdWxkIGJlIG1vcmUgdGhhbiAxLlxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIGhvdXJzIGZyb20gdGhlIGhvdXIgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBob3VyIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIGhvdXIgYmV0d2VlbiA2IE9jdG9iZXIgMjAxNCwgMTI6MDAgYW5kIDYgT2N0b2JlciAyMDE0LCAxNTowMFxuICogY29uc3QgcmVzdWx0ID0gZWFjaEhvdXJPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDYsIDEyKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA5LCA2LCAxNSlcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDEyOjAwOjAwLFxuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMTM6MDA6MDAsXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAxNDowMDowMCxcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDE1OjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hIb3VyT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRzdGVwO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBzdGFydFRpbWUgPSBzdGFydERhdGUuZ2V0VGltZSgpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0VGltZSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0TWludXRlcygwLCAwLCAwKTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUgPSBhZGRIb3VycyhjdXJyZW50RGF0ZSwgc3RlcCk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCBhZGRNaW51dGVzIGZyb20gXCIuLi9hZGRNaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTWludXRlIGZyb20gXCIuLi9zdGFydE9mTWludXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoTWludXRlT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgbWludXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgYXJyYXkgb2YgbWludXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3RlcD0xXSAtIHRoZSBzdGVwIHRvIGluY3JlbWVudCBieS4gVGhlIHN0ZXAgbXVzdCBiZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgbWludXRlcyBmcm9tIHRoZSBtaW51dGUgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBtaW51dGUgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIG1pbnV0ZSBiZXR3ZWVuIDE0IE9jdG9iZXIgMjAyMCwgMTM6MDAgYW5kIDE0IE9jdG9iZXIgMjAyMCwgMTM6MDNcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hNaW51dGVPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDE0LCAxMyksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgMTQsIDEzLCAzKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDA6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMTQgMjAxNCAxMzowMTowMCxcbiAqIC8vICAgV2VkIE9jdCAxNCAyMDE0IDEzOjAyOjAwLFxuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDM6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaE1pbnV0ZU9mSW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHN0ZXA7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnREYXRlID0gc3RhcnRPZk1pbnV0ZSh0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpKTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIHN0YXJ0VGltZSA9IHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG4gIGlmIChzdGFydFRpbWUgPj0gZW5kVGltZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUgPSBhZGRNaW51dGVzKGN1cnJlbnREYXRlLCBzdGVwKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoTW9udGhPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBtb250aHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgbW9udGhzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgbW9udGhzIGZyb20gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgbW9udGggb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggbW9udGggYmV0d2VlbiA2IEZlYnJ1YXJ5IDIwMTQgYW5kIDEwIEF1Z3VzdCAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaE1vbnRoT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAxLCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA3LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IEZlYiAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTYXQgTWFyIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBBcHIgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVGh1IE1heSAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSnVuIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBKdWwgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgRnJpIEF1ZyAwMSAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hNb250aE9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBkYXRlcyA9IFtdO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGN1cnJlbnREYXRlLnNldERhdGUoMSk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0TW9udGgoY3VycmVudERhdGUuZ2V0TW9udGgoKSArIDEpO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgYWRkUXVhcnRlcnMgZnJvbSBcIi4uL2FkZFF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlF1YXJ0ZXIgZnJvbSBcIi4uL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hRdWFydGVyT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgcXVhcnRlcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgcXVhcnRlcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBxdWFydGVycyBmcm9tIHRoZSBxdWFydGVyIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgcXVhcnRlciBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBxdWFydGVyIHdpdGhpbiBpbnRlcnZhbCA2IEZlYnJ1YXJ5IDIwMTQgLSAxMCBBdWd1c3QgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hRdWFydGVyT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAxLCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA3LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIEphbiAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgQXByIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBKdWwgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFF1YXJ0ZXJPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBzdGFydERhdGVRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoc3RhcnREYXRlKTtcbiAgdmFyIGVuZERhdGVRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoZW5kRGF0ZSk7XG4gIGVuZFRpbWUgPSBlbmREYXRlUXVhcnRlci5nZXRUaW1lKCk7XG4gIHZhciBxdWFydGVycyA9IFtdO1xuICB2YXIgY3VycmVudFF1YXJ0ZXIgPSBzdGFydERhdGVRdWFydGVyO1xuICB3aGlsZSAoY3VycmVudFF1YXJ0ZXIuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBxdWFydGVycy5wdXNoKHRvRGF0ZShjdXJyZW50UXVhcnRlcikpO1xuICAgIGN1cnJlbnRRdWFydGVyID0gYWRkUXVhcnRlcnMoY3VycmVudFF1YXJ0ZXIsIDEpO1xuICB9XG4gIHJldHVybiBxdWFydGVycztcbn0iLCJpbXBvcnQgYWRkV2Vla3MgZnJvbSBcIi4uL2FkZFdlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2Ygd2Vla3Mgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2Ygd2Vla3Mgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIHdlZWtzIGZyb20gdGhlIHdlZWsgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSB3ZWVrIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIDAsIDEsIC4uLiwgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHdlZWsgd2l0aGluIGludGVydmFsIDYgT2N0b2JlciAyMDE0IC0gMjMgTm92ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAxMCwgMjMpXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFN1biBPY3QgMDUgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAxMiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDE5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMjYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAwMiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDA5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMTYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAyMyAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hXZWVrT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgc3RhcnREYXRlV2VlayA9IHN0YXJ0T2ZXZWVrKHN0YXJ0RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBlbmREYXRlV2VlayA9IHN0YXJ0T2ZXZWVrKGVuZERhdGUsIG9wdGlvbnMpO1xuXG4gIC8vIFNvbWUgdGltZXpvbmVzIHN3aXRjaCBEU1QgYXQgbWlkbmlnaHQsIG1ha2luZyBzdGFydCBvZiBkYXkgdW5yZWxpYWJsZSBpbiB0aGVzZSB0aW1lem9uZXMsIDNwbSBpcyBhIHNhZmUgYmV0XG4gIHN0YXJ0RGF0ZVdlZWsuc2V0SG91cnMoMTUpO1xuICBlbmREYXRlV2Vlay5zZXRIb3VycygxNSk7XG4gIGVuZFRpbWUgPSBlbmREYXRlV2Vlay5nZXRUaW1lKCk7XG4gIHZhciB3ZWVrcyA9IFtdO1xuICB2YXIgY3VycmVudFdlZWsgPSBzdGFydERhdGVXZWVrO1xuICB3aGlsZSAoY3VycmVudFdlZWsuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBjdXJyZW50V2Vlay5zZXRIb3VycygwKTtcbiAgICB3ZWVrcy5wdXNoKHRvRGF0ZShjdXJyZW50V2VlaykpO1xuICAgIGN1cnJlbnRXZWVrID0gYWRkV2Vla3MoY3VycmVudFdlZWssIDEpO1xuICAgIGN1cnJlbnRXZWVrLnNldEhvdXJzKDE1KTtcbiAgfVxuICByZXR1cm4gd2Vla3M7XG59IiwiaW1wb3J0IGVhY2hEYXlPZkludGVydmFsIGZyb20gXCIuLi9lYWNoRGF5T2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU3VuZGF5IGZyb20gXCIuLi9pc1N1bmRheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzV2Vla2VuZCBmcm9tIFwiLi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla2VuZE9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBMaXN0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBkYXRlIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBkYXRlIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGdpdmVuIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge0RhdGVbXX0gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExpc3RzIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIGRhdGUgaW50ZXJ2YWxcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCA4LCAxNyksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxOCwgOCwgMzApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFNhdCBTZXAgMjIgMjAxOCAwMDowMDowMCxcbiAqIC8vICAgU3VuIFNlcCAyMyAyMDE4IDAwOjAwOjAwLFxuICogLy8gICBTYXQgU2VwIDI5IDIwMTggMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBTZXAgMzAgMjAxOCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwoaW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlSW50ZXJ2YWwgPSBlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCk7XG4gIHZhciB3ZWVrZW5kcyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBkYXRlSW50ZXJ2YWwubGVuZ3RoKSB7XG4gICAgdmFyIGRhdGUgPSBkYXRlSW50ZXJ2YWxbaW5kZXgrK107XG4gICAgaWYgKGlzV2Vla2VuZChkYXRlKSkge1xuICAgICAgd2Vla2VuZHMucHVzaChkYXRlKTtcbiAgICAgIGlmIChpc1N1bmRheShkYXRlKSkgaW5kZXggPSBpbmRleCArIDU7XG4gICAgfVxuICB9XG4gIHJldHVybiB3ZWVrZW5kcztcbn0iLCJpbXBvcnQgZWFjaFdlZWtlbmRPZkludGVydmFsIGZyb20gXCIuLi9lYWNoV2Vla2VuZE9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTW9udGggZnJvbSBcIi4uL3N0YXJ0T2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IGVuZE9mTW9udGggZnJvbSBcIi4uL2VuZE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrZW5kT2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IExpc3QgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIG1vbnRoLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBtb250aC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIG1vbnRoXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSBhbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBwYXNzZWQgZGF0ZSBpcyBpbnZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExpc3RzIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIG1vbnRoXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla2VuZE9mTW9udGgobmV3IERhdGUoMjAyMiwgMSwgMSkpXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IEZlYiAwNSAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDA2IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBGZWIgMTIgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEZlYiAxMyAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTYXQgRmViIDE5IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBGZWIgMjAgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU2F0IEZlYiAyNiAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDI3IDIwMjIgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFdlZWtlbmRPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHN0YXJ0T2ZNb250aChkaXJ0eURhdGUpO1xuICBpZiAoaXNOYU4oc3RhcnREYXRlLmdldFRpbWUoKSkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgcGFzc2VkIGRhdGUgaXMgaW52YWxpZCcpO1xuICB2YXIgZW5kRGF0ZSA9IGVuZE9mTW9udGgoZGlydHlEYXRlKTtcbiAgcmV0dXJuIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCh7XG4gICAgc3RhcnQ6IHN0YXJ0RGF0ZSxcbiAgICBlbmQ6IGVuZERhdGVcbiAgfSk7XG59IiwiaW1wb3J0IGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCBmcm9tIFwiLi4vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzXCI7XG5pbXBvcnQgZW5kT2ZZZWFyIGZyb20gXCIuLi9lbmRPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mWWVhciBmcm9tIFwiLi4vc3RhcnRPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrZW5kT2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBMaXN0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4geWVhclxuICogQHJldHVybnMge0RhdGVbXX0gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgcGFzc2VkIGRhdGUgaXMgaW52YWxpZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMaXN0cyBhbGwgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla2VuZE9mWWVhcihuZXcgRGF0ZSgyMDIwLCAxLCAxKSlcbiAqIC8vPT4gW1xuICogLy8gICBTYXQgSmFuIDAzIDIwMjAgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKYW4gMDQgMjAyMCAwMDowMDowMCxcbiAqIC8vICAgLi4uXG4gKiAvLyAgIFN1biBEZWMgMjcgMjAyMCAwMDowMDowMFxuICogLy8gXVxuICogXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla2VuZE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydERhdGUgPSBzdGFydE9mWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZW5kRGF0ZSA9IGVuZE9mWWVhcihkaXJ0eURhdGUpO1xuICByZXR1cm4gZWFjaFdlZWtlbmRPZkludGVydmFsKHtcbiAgICBzdGFydDogc3RhcnREYXRlLFxuICAgIGVuZDogZW5kRGF0ZVxuICB9KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hZZWFyT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgeWVhcmx5IHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgeWVhcmx5IHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiB5ZWFybHkgdGltZXN0YW1wcyBmcm9tIHRoZSBtb250aCBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHllYXIgYmV0d2VlbiA2IEZlYnJ1YXJ5IDIwMTQgYW5kIDEwIEF1Z3VzdCAyMDE3OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaFllYXJPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDEsIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTcsIDcsIDEwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgSmFuIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFRodSBKYW4gMDEgMjAxNSAwMDowMDowMCxcbiAqIC8vICAgRnJpIEphbiAwMSAyMDE2IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSmFuIDAxIDIwMTcgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFllYXJPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBkYXRlcyA9IFtdO1xuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjdXJyZW50RGF0ZS5zZXRNb250aCgwLCAxKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRGdWxsWWVhcihjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZEYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZEZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBkZWNhZGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHBhc3NlZCB0byBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgZGVjYWRlIGZvciAxMiBNYXkgMTk4NCAwMDowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mRGVjYWRlKG5ldyBEYXRlKDE5ODQsIDQsIDEyLCAwMCwgMDAsIDAwKSlcbiAqIC8vPT4gRGVjIDMxIDE5ODkgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mRGVjYWRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWNhZGUgPSA5ICsgTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGVjYWRlLCAxMSwgMzEpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZIb3VyXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhbiBob3VyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIGhvdXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGFuIGhvdXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZkhvdXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1KSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDExOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZkhvdXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldE1pbnV0ZXMoNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZW5kT2ZXZWVrIGZyb20gXCIuLi9lbmRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGVuZE9mV2VlayhkaXJ0eURhdGUsIHtcbiAgICB3ZWVrU3RhcnRzT246IDFcbiAgfSk7XG59IiwiaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDU6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZklTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gSmFuIDAxIDIwMDYgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIpO1xuICBkYXRlLnNldE1pbGxpc2Vjb25kcyhkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gMSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIG1pbnV0ZSBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mTWludXRlKG5ldyBEYXRlKDIwMTQsIDExLCAxLCAyMiwgMTUsIDQ1LCA0MDApKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMjI6MTU6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mTWludXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRTZWNvbmRzKDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoICsgMSwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgcXVhcnRlciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBtb250aCA9IGN1cnJlbnRNb250aCAtIGN1cnJlbnRNb250aCAlIDMgKyAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHNlY29uZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBzZWNvbmQgZm9yIDEgRGVjZW1iZXIgMjAxNCAyMjoxNTo0NS40MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlNlY29uZChuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjQ1Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlNlY29uZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBlbmRPZkRheSBmcm9tIFwiLi4vZW5kT2ZEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZUb2RheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiB0b2RheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiB0b2RheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgdG9kYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlRvZGF5KClcbiAqIC8vPT4gTW9uIE9jdCA2IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mVG9kYXkoKSB7XG4gIHJldHVybiBlbmRPZkRheShEYXRlLm5vdygpKTtcbn0iLCIvKipcbiAqIEBuYW1lIGVuZE9mVG9tb3Jyb3dcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgdG9tb3Jyb3cuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgdG9tb3Jyb3cuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIHRvbW9ycm93XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZUb21vcnJvdygpXG4gKiAvLz0+IFR1ZSBPY3QgNyAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlRvbW9ycm93KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgKyAxKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU2F0IFNlcCAwNiAyMDE0IDIzOjU5OjU5Ljk5OVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgZW5kIG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gLTcgOiAwKSArIDYgLSAoZGF5IC0gd2Vla1N0YXJ0c09uKTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMDApKVxuICogLy89PiBXZWQgRGVjIDMxIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCIvKipcbiAqIEBuYW1lIGVuZE9mWWVzdGVyZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIHllc3RlcmRheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiB5ZXN0ZXJkYXkuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIHllc3RlcmRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mWWVzdGVyZGF5KClcbiAqIC8vPT4gU3VuIE9jdCA1IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mWWVzdGVyZGF5KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgLSAxKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9uZ0Zvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLCBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sIHRocm93UHJvdGVjdGVkRXJyb3IgfSBmcm9tIFwiLi4vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSBbeVlRcU1Md0lkRGVjaWhIS2ttc11vIG1hdGNoZXMgYW55IGF2YWlsYWJsZSBvcmRpbmFsIG51bWJlciB0b2tlblxuLy8gICAob25lIG9mIHRoZSBjZXJ0YWluIGxldHRlcnMgZm9sbG93ZWQgYnkgYG9gKVxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG4vLyBUaGlzIFJlZ0V4cCBjYXRjaGVzIHN5bWJvbHMgZXNjYXBlZCBieSBxdW90ZXMsIGFuZCBhbHNvXG4vLyBzZXF1ZW5jZXMgb2Ygc3ltYm9scyBQLCBwLCBhbmQgdGhlIGNvbWJpbmF0aW9ucyBsaWtlIGBQUFBQUFBQcHBwcHBgXG52YXIgbG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcbnZhciBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG52YXIgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbnZhciB1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCA9IC9bYS16QS1aXS87XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIHRoZSBnaXZlbiBmb3JtYXQuIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKiAoc2VlIHRoZSBsYXN0IGV4YW1wbGUpXG4gKlxuICogRm9ybWF0IG9mIHRoZSBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDcgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDB0aCwgMTd0aCAgICAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgMjAxN3RoICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgUiAgICAgICB8IC00MywgMCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSICAgICAgfCAtNDMsIDAwLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAwLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAwLCAwMDAxLCAxOTAwLCAyMDE3ICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUsNyB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCB1ICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA5ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDkgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA3ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEuLmFhICAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWEgICAgIHwgYW0sIHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgfCBiLi5iYiAgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiICAgICB8IGFtLCBwbSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICAgfCBPLi4uT09PIHwgR01ULTgsIEdNVCs1OjMwLCBHTVQrMCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT09PTyAgICB8IEdNVC0wODowMCwgR01UKzA1OjMwLCBHTVQrMDA6MDAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pICB8IHouLi56enogfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCA2ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB6enp6ICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiw2ICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDcgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8IFAgICAgICAgfCAwNC8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUCAgICAgIHwgQXByIDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQICAgICB8IEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUFAgICAgfCBGcmlkYXksIEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcCAgICAgfCAxMjowMDowMCBBTSBHTVQrMiAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcHBwICAgIHwgMTI6MDA6MDAgQU0gR01UKzAyOjAwICAgICAgICAgICAgIHwgMiw3ICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgUHAgICAgICB8IDA0LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQcHAgICAgfCBBcHIgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBwcHAgIHwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUHBwcHB8IEZyaWRheSwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICB8IDIsNyAgIHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXI6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZSAoZS5nLiBgRUVFRUVFRUVFRUVgKVxuICogICAgdGhlIG91dHB1dCB3aWxsIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHQgcGF0dGVybiBmb3IgdGhpcyB1bml0LCB1c3VhbGx5XG4gKiAgICB0aGUgbG9uZ2VzdCBvbmUgKGluIGNhc2Ugb2YgSVNPIHdlZWtkYXlzLCBgRUVFRWApLiBEZWZhdWx0IHBhdHRlcm5zIGZvciB1bml0c1xuICogICAgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU0nKSAvLz0+ICdOb3YnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NJykgLy89PiAnTidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqIDMuIFNvbWUgcGF0dGVybnMgY291bGQgYmUgdW5saW1pdGVkIGxlbmd0aCAoc3VjaCBhcyBgeXl5eXl5eXlgKS5cbiAqICAgIFRoZSBvdXRwdXQgd2lsbCBiZSBwYWRkZWQgd2l0aCB6ZXJvcyB0byBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAneXl5eXl5eXknKSAvLz0+ICcwMDAwMjAxNydgXG4gKlxuICogNC4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNS4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAqICAgIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZDpcbiAqXG4gKiAgICB8IFllYXIgfCBgeXlgIHwgYHV1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tLXwtLS0tLS18XG4gKiAgICB8IDEgICAgfCAgIDAxIHwgICAwMSB8XG4gKiAgICB8IDE0ICAgfCAgIDE0IHwgICAxNCB8XG4gKiAgICB8IDM3NiAgfCAgIDc2IHwgIDM3NiB8XG4gKiAgICB8IDE0NTMgfCAgIDUzIHwgMTQ1MyB8XG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbZ2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW2dldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2dldFdlZWtZZWFyfSkuXG4gKlxuICogNi4gU3BlY2lmaWMgbm9uLWxvY2F0aW9uIHRpbWV6b25lcyBhcmUgY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIGBkYXRlLWZuc2AsXG4gKiAgICBzbyByaWdodCBub3cgdGhlc2UgdG9rZW5zIGZhbGwgYmFjayB0byBHTVQgdGltZXpvbmVzLlxuICpcbiAqIDcuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYHRgOiBzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgVGA6IG1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogOC4gYFlZYCBhbmQgYFlZWVlgIHRva2VucyByZXByZXNlbnQgd2Vlay1udW1iZXJpbmcgeWVhcnMgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggeWVhcnMuXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA5LiBgRGAgYW5kIGBERGAgdG9rZW5zIHJlcHJlc2VudCBkYXlzIG9mIHRoZSB5ZWFyIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRMb25nYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMSBGZWJydWFyeSAyMDE0IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ01NL2RkL3l5eXknKVxuICogLy89PiAnMDIvMTEvMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDIgSnVseSAyMDE0IGluIEVzcGVyYW50bzpcbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBcImRvICdkZScgTU1NTSB5eXl5XCIsIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzItYSBkZSBqdWxpbyAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgc3RyaW5nIGJ5IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIsIDE1KSwgXCJoICdvJydjbG9jaydcIilcbiAqIC8vPT4gXCIzIG8nY2xvY2tcIlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChkaXJ0eURhdGUsIGRpcnR5Rm9ybWF0U3RyLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIsIF9yZWY1LCBfcmVmNiwgX3JlZjcsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMywgX29wdGlvbnMkbG9jYWxlMyRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0O1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGZvcm1hdFN0ciA9IFN0cmluZyhkaXJ0eUZvcm1hdFN0cik7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiRvcHRpID0gX29wdGlvbnMkbG9jYWxlMi5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTIkb3B0aS5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogMSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWY1ID0gKF9yZWY2ID0gKF9yZWY3ID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyRvcHRpID0gX29wdGlvbnMkbG9jYWxlMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTMkb3B0aS53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY3ICE9PSB2b2lkIDAgPyBfcmVmNyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjYgIT09IHZvaWQgMCA/IF9yZWY2IDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0LndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjUgIT09IHZvaWQgMCA/IF9yZWY1IDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIGlmICghbG9jYWxlLmxvY2FsaXplKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5mb3JtYXRMb25nKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0TG9uZyBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cblxuICAvLyBDb252ZXJ0IHRoZSBkYXRlIGluIHN5c3RlbSB0aW1lem9uZSB0byB0aGUgc2FtZSBkYXRlIGluIFVUQyswMDowMCB0aW1lem9uZS5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBVVEMgZnVuY3Rpb25zIHdpbGwgYmUgaW1wbGVtZW50ZWQsIGxvY2FsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlbS5cbiAgLy8gU2VlIGFuIGlzc3VlIGFib3V0IFVUQyBmdW5jdGlvbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG4gIHZhciB0aW1lem9uZU9mZnNldCA9IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlKTtcbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlLCB0aW1lem9uZU9mZnNldCk7XG4gIHZhciBmb3JtYXR0ZXJPcHRpb25zID0ge1xuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogZmlyc3RXZWVrQ29udGFpbnNEYXRlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uLFxuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIF9vcmlnaW5hbERhdGU6IG9yaWdpbmFsRGF0ZVxuICB9O1xuICB2YXIgcmVzdWx0ID0gZm9ybWF0U3RyLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICdwJyB8fCBmaXJzdENoYXJhY3RlciA9PT0gJ1AnKSB7XG4gICAgICB2YXIgbG9uZ0Zvcm1hdHRlciA9IGxvbmdGb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIHJldHVybiBsb25nRm9ybWF0dGVyKHN1YnN0cmluZywgbG9jYWxlLmZvcm1hdExvbmcpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICBpZiAoc3Vic3RyaW5nID09PSBcIicnXCIpIHtcbiAgICAgIHJldHVybiBcIidcIjtcbiAgICB9XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gXCInXCIpIHtcbiAgICAgIHJldHVybiBjbGVhbkVzY2FwZWRTdHJpbmcoc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4oc3Vic3RyaW5nKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHN1YnN0cmluZywgZGlydHlGb3JtYXRTdHIsIFN0cmluZyhkaXJ0eURhdGUpKTtcbiAgICAgIH1cbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2VucykgJiYgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbihzdWJzdHJpbmcpKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3Ioc3Vic3RyaW5nLCBkaXJ0eUZvcm1hdFN0ciwgU3RyaW5nKGRpcnR5RGF0ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdHRlcih1dGNEYXRlLCBzdWJzdHJpbmcsIGxvY2FsZS5sb2NhbGl6ZSwgZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCcgKyBmaXJzdENoYXJhY3RlciArICdgJyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIHZhciBtYXRjaGVkID0gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cCk7XG4gIGlmICghbWF0Y2hlZCkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gbWF0Y2hlZFsxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwLCBcIidcIik7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Nb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGNsb25lT2JqZWN0IGZyb20gXCIuLi9fbGliL2Nsb25lT2JqZWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSU5VVEVTX0lOX0RBWSA9IDE0NDA7XG52YXIgTUlOVVRFU19JTl9BTE1PU1RfVFdPX0RBWVMgPSAyNTIwO1xudmFyIE1JTlVURVNfSU5fTU9OVEggPSA0MzIwMDtcbnZhciBNSU5VVEVTX0lOX1RXT19NT05USFMgPSA4NjQwMDtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3Jkcy5cbiAqXG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbGVzcyB0aGFuIGEgbWludXRlICB8XG4gKiB8IDMwIHNlY3MgLi4uIDEgbWluIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBtaW51dGUgICAgICAgICAgICB8XG4gKiB8IDEgbWluIDMwIHNlY3MgLi4uIDQ0IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjQ0XSBtaW51dGVzICAgICB8XG4gKiB8IDQ0IG1pbnMgLi4uIDMwIHNlY3MgLi4uIDg5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSBob3VyICAgICAgICB8XG4gKiB8IDg5IG1pbnMgMzAgc2VjcyAuLi4gMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgWzIuLjI0XSBob3VycyB8XG4gKiB8IDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgIHwgMSBkYXkgICAgICAgICAgICAgICB8XG4gKiB8IDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgIHwgWzIuLjMwXSBkYXlzICAgICAgICB8XG4gKiB8IDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMSBtb250aCAgICAgICB8XG4gKiB8IDQ0IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMiBtb250aHMgICAgICB8XG4gKiB8IDU5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMSB5ciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjEyXSBtb250aHMgICAgICB8XG4gKiB8IDEgeXIgLi4uIDEgeXIgMyBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSB5ZWFyICAgICAgICB8XG4gKiB8IDEgeXIgMyBtb250aHMgLi4uIDEgeXIgOSBtb250aCBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciAxIHllYXIgICAgICAgICB8XG4gKiB8IDEgeXIgOSBtb250aHMgLi4uIDIgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IDIgeWVhcnMgICAgICB8XG4gKiB8IE4geXJzIC4uLiBOIHlycyAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgTiB5ZWFycyAgICAgICB8XG4gKiB8IE4geXJzIDMgbW9udGhzIC4uLiBOIHlycyA5IG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciBOIHllYXJzICAgICAgICB8XG4gKiB8IE4geXJzIDkgbW9udGhzIC4uLiBOKzEgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IE4rMSB5ZWFycyAgICB8XG4gKlxuICogV2l0aCBgb3B0aW9ucy5pbmNsdWRlU2Vjb25kcyA9PSB0cnVlYDpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCBzZWNzIC4uLiA1IHNlY3MgICAgICB8IGxlc3MgdGhhbiA1IHNlY29uZHMgIHxcbiAqIHwgNSBzZWNzIC4uLiAxMCBzZWNzICAgICB8IGxlc3MgdGhhbiAxMCBzZWNvbmRzIHxcbiAqIHwgMTAgc2VjcyAuLi4gMjAgc2VjcyAgICB8IGxlc3MgdGhhbiAyMCBzZWNvbmRzIHxcbiAqIHwgMjAgc2VjcyAuLi4gNDAgc2VjcyAgICB8IGhhbGYgYSBtaW51dGUgICAgICAgIHxcbiAqIHwgNDAgc2VjcyAuLi4gNjAgc2VjcyAgICB8IGxlc3MgdGhhbiBhIG1pbnV0ZSAgIHxcbiAqIHwgNjAgc2VjcyAuLi4gOTAgc2VjcyAgICB8IDEgbWludXRlICAgICAgICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaW5jbHVkZVNlY29uZHM9ZmFsc2VdIC0gZGlzdGFuY2VzIGxlc3MgdGhhbiBhIG1pbnV0ZSBhcmUgbW9yZSBkZXRhaWxlZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hZGRTdWZmaXg9ZmFsc2VdIC0gcmVzdWx0IGluZGljYXRlcyBpZiB0aGUgc2Vjb25kIGRhdGUgaXMgZWFybGllciBvciBsYXRlciB0aGFuIHRoZSBmaXJzdFxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMiBKdWx5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2UobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTUsIDAsIDEpKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTVcbiAqIC8vIGFuZCAxIEphbnVhcnkgMjAxNSAwMDowMDowMCwgaW5jbHVkaW5nIHNlY29uZHM/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAwKSxcbiAqICAgeyBpbmNsdWRlU2Vjb25kczogdHJ1ZSB9XG4gKiApXG4gKiAvLz0+ICdsZXNzIHRoYW4gMjAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgZnJvbSAxIEphbnVhcnkgMjAxNlxuICogLy8gdG8gMSBKYW51YXJ5IDIwMTUsIHdpdGggYSBzdWZmaXg/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZSgyMDE1LCAwLCAxKSwgbmV3IERhdGUoMjAxNiwgMCwgMSksIHtcbiAqICAgYWRkU3VmZml4OiB0cnVlXG4gKiB9KVxuICogLy89PiAnYWJvdXQgMSB5ZWFyIGFnbydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAxIEF1Z3VzdCAyMDE2IGFuZCAxIEphbnVhcnkgMjAxNSBpbiBFc3BlcmFudG8/XG4gKiBpbXBvcnQgeyBlb0xvY2FsZSB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlKG5ldyBEYXRlKDIwMTYsIDcsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICBsb2NhbGU6IGVvTG9jYWxlXG4gKiB9KVxuICogLy89PiAncGxpIG9sIDEgamFybydcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZShkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZTtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIGlmICghbG9jYWxlLmZvcm1hdERpc3RhbmNlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0RGlzdGFuY2UgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBc2MoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlKTtcbiAgaWYgKGlzTmFOKGNvbXBhcmlzb24pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBsb2NhbGl6ZU9wdGlvbnMgPSBhc3NpZ24oY2xvbmVPYmplY3Qob3B0aW9ucyksIHtcbiAgICBhZGRTdWZmaXg6IEJvb2xlYW4ob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFkZFN1ZmZpeCksXG4gICAgY29tcGFyaXNvbjogY29tcGFyaXNvblxuICB9KTtcbiAgdmFyIGRhdGVMZWZ0O1xuICB2YXIgZGF0ZVJpZ2h0O1xuICBpZiAoY29tcGFyaXNvbiA+IDApIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgICBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgfVxuICB2YXIgc2Vjb25kcyA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZVJpZ2h0LCBkYXRlTGVmdCk7XG4gIHZhciBvZmZzZXRJblNlY29uZHMgPSAoZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlUmlnaHQpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCkpIC8gMTAwMDtcbiAgdmFyIG1pbnV0ZXMgPSBNYXRoLnJvdW5kKChzZWNvbmRzIC0gb2Zmc2V0SW5TZWNvbmRzKSAvIDYwKTtcbiAgdmFyIG1vbnRocztcblxuICAvLyAwIHVwIHRvIDIgbWluc1xuICBpZiAobWludXRlcyA8IDIpIHtcbiAgICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5pbmNsdWRlU2Vjb25kcykge1xuICAgICAgaWYgKHNlY29uZHMgPCA1KSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWFNlY29uZHMnLCA1LCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgMTApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YU2Vjb25kcycsIDEwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgMjApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YU2Vjb25kcycsIDIwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgNDApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnaGFsZkFNaW51dGUnLCAwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgNjApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YTWludXRlcycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWE1pbnV0ZXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1pbnV0ZXMnLCBtaW51dGVzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIgbWlucyB1cCB0byAwLjc1IGhyc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCA0NSkge1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNaW51dGVzJywgbWludXRlcywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDAuNzUgaHJzIHVwIHRvIDEuNSBocnNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgOTApIHtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhIb3VycycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxLjUgaHJzIHVwIHRvIDI0IGhyc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX0RBWSkge1xuICAgIHZhciBob3VycyA9IE1hdGgucm91bmQobWludXRlcyAvIDYwKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhIb3VycycsIGhvdXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSBkYXkgdXAgdG8gMS43NSBkYXlzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fQUxNT1NUX1RXT19EQVlTKSB7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneERheXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMS43NSBkYXlzIHVwIHRvIDMwIGRheXNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9NT05USCkge1xuICAgIHZhciBkYXlzID0gTWF0aC5yb3VuZChtaW51dGVzIC8gTUlOVVRFU19JTl9EQVkpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hEYXlzJywgZGF5cywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgbW9udGggdXAgdG8gMiBtb250aHNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9UV09fTU9OVEhTKSB7XG4gICAgbW9udGhzID0gTWF0aC5yb3VuZChtaW51dGVzIC8gTUlOVVRFU19JTl9NT05USCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWJvdXRYTW9udGhzJywgbW9udGhzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICB9XG4gIG1vbnRocyA9IGRpZmZlcmVuY2VJbk1vbnRocyhkYXRlUmlnaHQsIGRhdGVMZWZ0KTtcblxuICAvLyAyIG1vbnRocyB1cCB0byAxMiBtb250aHNcbiAgaWYgKG1vbnRocyA8IDEyKSB7XG4gICAgdmFyIG5lYXJlc3RNb250aCA9IE1hdGgucm91bmQobWludXRlcyAvIE1JTlVURVNfSU5fTU9OVEgpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNb250aHMnLCBuZWFyZXN0TW9udGgsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHllYXIgdXAgdG8gbWF4IERhdGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW9udGhzU2luY2VTdGFydE9mWWVhciA9IG1vbnRocyAlIDEyO1xuICAgIHZhciB5ZWFycyA9IE1hdGguZmxvb3IobW9udGhzIC8gMTIpO1xuXG4gICAgLy8gTiB5ZWFycyB1cCB0byAxIHllYXJzIDMgbW9udGhzXG4gICAgaWYgKG1vbnRoc1NpbmNlU3RhcnRPZlllYXIgPCAzKSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhZZWFycycsIHllYXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgICAvLyBOIHllYXJzIDMgbW9udGhzIHVwIHRvIE4geWVhcnMgOSBtb250aHNcbiAgICB9IGVsc2UgaWYgKG1vbnRoc1NpbmNlU3RhcnRPZlllYXIgPCA5KSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdvdmVyWFllYXJzJywgeWVhcnMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAgIC8vIE4geWVhcnMgOSBtb250aHMgdXAgdG8gTiB5ZWFyIDEyIG1vbnRoc1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhbG1vc3RYWWVhcnMnLCB5ZWFycyArIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgfVxuICB9XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGNsb25lT2JqZWN0IGZyb20gXCIuLi9fbGliL2Nsb25lT2JqZWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gMTAwMCAqIDYwO1xudmFyIE1JTlVURVNfSU5fREFZID0gNjAgKiAyNDtcbnZhciBNSU5VVEVTX0lOX01PTlRIID0gTUlOVVRFU19JTl9EQVkgKiAzMDtcbnZhciBNSU5VVEVTX0lOX1lFQVIgPSBNSU5VVEVTX0lOX0RBWSAqIDM2NTtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVN0cmljdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3JkcywgdXNpbmcgc3RyaWN0IHVuaXRzLlxuICogVGhpcyBpcyBsaWtlIGBmb3JtYXREaXN0YW5jZWAsIGJ1dCBkb2VzIG5vdCB1c2UgaGVscGVycyBsaWtlICdhbG1vc3QnLCAnb3ZlcicsXG4gKiAnbGVzcyB0aGFuJyBhbmQgdGhlIGxpa2UuXG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gNTkgc2VjcyAgICAgICAgICB8IFswLi41OV0gc2Vjb25kcyAgICAgfFxuICogfCAxIC4uLiA1OSBtaW5zICAgICAgICAgIHwgWzEuLjU5XSBtaW51dGVzICAgICB8XG4gKiB8IDEgLi4uIDIzIGhycyAgICAgICAgICAgfCBbMS4uMjNdIGhvdXJzICAgICAgIHxcbiAqIHwgMSAuLi4gMjkgZGF5cyAgICAgICAgICB8IFsxLi4yOV0gZGF5cyAgICAgICAgfFxuICogfCAxIC4uLiAxMSBtb250aHMgICAgICAgIHwgWzEuLjExXSBtb250aHMgICAgICB8XG4gKiB8IDEgLi4uIE4geWVhcnMgICAgICAgICAgfCBbMS4uTl0gIHllYXJzICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHNlY29uZCBkYXRlIGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgZmlyc3RcbiAqIEBwYXJhbSB7J3NlY29uZCd8J21pbnV0ZSd8J2hvdXInfCdkYXknfCdtb250aCd8J3llYXInfSBbb3B0aW9ucy51bml0XSAtIGlmIHNwZWNpZmllZCwgd2lsbCBmb3JjZSBhIHVuaXRcbiAqIEBwYXJhbSB7J2Zsb29yJ3wnY2VpbCd8J3JvdW5kJ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3JvdW5kJ10gLSB3aGljaCB3YXkgdG8gcm91bmQgcGFydGlhbCB1bml0c1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5yb3VuZGluZ01ldGhvZGAgbXVzdCBiZSAnZmxvb3InLCAnY2VpbCcgb3IgJ3JvdW5kJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMudW5pdGAgbXVzdCBiZSAnc2Vjb25kJywgJ21pbnV0ZScsICdob3VyJywgJ2RheScsICdtb250aCcgb3IgJ3llYXInXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMiBKdWx5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTUsIDAsIDIpKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTVcbiAqIC8vIGFuZCAxIEphbnVhcnkgMjAxNSAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDApXG4gKiApXG4gKiAvLz0+ICcxNSBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE2XG4gKiAvLyB0byAxIEphbnVhcnkgMjAxNSwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTUsIDAsIDEpLCBuZXcgRGF0ZSgyMDE2LCAwLCAxKSwge1xuICogICBhZGRTdWZmaXg6IHRydWVcbiAqIH0pXG4gKiAvLz0+ICcxIHllYXIgYWdvJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE2XG4gKiAvLyB0byAxIEphbnVhcnkgMjAxNSwgaW4gbWludXRlcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTYsIDAsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICB1bml0OiAnbWludXRlJ1xuICogfSlcbiAqIC8vPT4gJzUyNTYwMCBtaW51dGVzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE1XG4gKiAvLyB0byAyOCBKYW51YXJ5IDIwMTUsIGluIG1vbnRocywgcm91bmRlZCB1cD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTUsIDAsIDI4KSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgdW5pdDogJ21vbnRoJyxcbiAqICAgcm91bmRpbmdNZXRob2Q6ICdjZWlsJ1xuICogfSlcbiAqIC8vPT4gJzEgbW9udGgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBBdWd1c3QgMjAxNiBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gRXNwZXJhbnRvP1xuICogaW1wb3J0IHsgZW9Mb2NhbGUgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE2LCA3LCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzEgamFybydcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZVN0cmljdChkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkcm91bmRpbmdNZXRoO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgaWYgKCFsb2NhbGUuZm9ybWF0RGlzdGFuY2UpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBsb2NhbGl6ZS5mb3JtYXREaXN0YW5jZSBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBjb21wYXJpc29uID0gY29tcGFyZUFzYyhkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUpO1xuICBpZiAoaXNOYU4oY29tcGFyaXNvbikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGxvY2FsaXplT3B0aW9ucyA9IGFzc2lnbihjbG9uZU9iamVjdChvcHRpb25zKSwge1xuICAgIGFkZFN1ZmZpeDogQm9vbGVhbihvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWRkU3VmZml4KSxcbiAgICBjb21wYXJpc29uOiBjb21wYXJpc29uXG4gIH0pO1xuICB2YXIgZGF0ZUxlZnQ7XG4gIHZhciBkYXRlUmlnaHQ7XG4gIGlmIChjb21wYXJpc29uID4gMCkge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB9IGVsc2Uge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICB9XG4gIHZhciByb3VuZGluZ01ldGhvZCA9IFN0cmluZygoX29wdGlvbnMkcm91bmRpbmdNZXRoID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyb3VuZGluZ01ldGggIT09IHZvaWQgMCA/IF9vcHRpb25zJHJvdW5kaW5nTWV0aCA6ICdyb3VuZCcpO1xuICB2YXIgcm91bmRpbmdNZXRob2RGbjtcbiAgaWYgKHJvdW5kaW5nTWV0aG9kID09PSAnZmxvb3InKSB7XG4gICAgcm91bmRpbmdNZXRob2RGbiA9IE1hdGguZmxvb3I7XG4gIH0gZWxzZSBpZiAocm91bmRpbmdNZXRob2QgPT09ICdjZWlsJykge1xuICAgIHJvdW5kaW5nTWV0aG9kRm4gPSBNYXRoLmNlaWw7XG4gIH0gZWxzZSBpZiAocm91bmRpbmdNZXRob2QgPT09ICdyb3VuZCcpIHtcbiAgICByb3VuZGluZ01ldGhvZEZuID0gTWF0aC5yb3VuZDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJvdW5kaW5nTWV0aG9kIG11c3QgYmUgJ2Zsb29yJywgJ2NlaWwnIG9yICdyb3VuZCdcIik7XG4gIH1cbiAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGVSaWdodC5nZXRUaW1lKCkgLSBkYXRlTGVmdC5nZXRUaW1lKCk7XG4gIHZhciBtaW51dGVzID0gbWlsbGlzZWNvbmRzIC8gTUlMTElTRUNPTkRTX0lOX01JTlVURTtcbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlUmlnaHQpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCk7XG5cbiAgLy8gVXNlIERTVC1ub3JtYWxpemVkIGRpZmZlcmVuY2UgaW4gbWludXRlcyBmb3IgeWVhcnMsIG1vbnRocyBhbmQgZGF5cztcbiAgLy8gdXNlIHJlZ3VsYXIgZGlmZmVyZW5jZSBpbiBtaW51dGVzIGZvciBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAgdmFyIGRzdE5vcm1hbGl6ZWRNaW51dGVzID0gKG1pbGxpc2Vjb25kcyAtIHRpbWV6b25lT2Zmc2V0KSAvIE1JTExJU0VDT05EU19JTl9NSU5VVEU7XG4gIHZhciBkZWZhdWx0VW5pdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy51bml0O1xuICB2YXIgdW5pdDtcbiAgaWYgKCFkZWZhdWx0VW5pdCkge1xuICAgIGlmIChtaW51dGVzIDwgMSkge1xuICAgICAgdW5pdCA9ICdzZWNvbmQnO1xuICAgIH0gZWxzZSBpZiAobWludXRlcyA8IDYwKSB7XG4gICAgICB1bml0ID0gJ21pbnV0ZSc7XG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9EQVkpIHtcbiAgICAgIHVuaXQgPSAnaG91cic7XG4gICAgfSBlbHNlIGlmIChkc3ROb3JtYWxpemVkTWludXRlcyA8IE1JTlVURVNfSU5fTU9OVEgpIHtcbiAgICAgIHVuaXQgPSAnZGF5JztcbiAgICB9IGVsc2UgaWYgKGRzdE5vcm1hbGl6ZWRNaW51dGVzIDwgTUlOVVRFU19JTl9ZRUFSKSB7XG4gICAgICB1bml0ID0gJ21vbnRoJztcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdW5pdCA9IFN0cmluZyhkZWZhdWx0VW5pdCk7XG4gIH1cblxuICAvLyAwIHVwIHRvIDYwIHNlY29uZHNcbiAgaWYgKHVuaXQgPT09ICdzZWNvbmQnKSB7XG4gICAgdmFyIHNlY29uZHMgPSByb3VuZGluZ01ldGhvZEZuKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hTZWNvbmRzJywgc2Vjb25kcywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gNjAgbWluc1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtaW51dGUnKSB7XG4gICAgdmFyIHJvdW5kZWRNaW51dGVzID0gcm91bmRpbmdNZXRob2RGbihtaW51dGVzKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIHJvdW5kZWRNaW51dGVzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB1cCB0byAyNCBob3Vyc1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdob3VyJykge1xuICAgIHZhciBob3VycyA9IHJvdW5kaW5nTWV0aG9kRm4obWludXRlcyAvIDYwKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4SG91cnMnLCBob3VycywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gMzAgZGF5c1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdkYXknKSB7XG4gICAgdmFyIGRheXMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9EQVkpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hEYXlzJywgZGF5cywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gMTIgbW9udGhzXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ21vbnRoJykge1xuICAgIHZhciBtb250aHMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9NT05USCk7XG4gICAgcmV0dXJuIG1vbnRocyA9PT0gMTIgJiYgZGVmYXVsdFVuaXQgIT09ICdtb250aCcgPyBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hZZWFycycsIDEsIGxvY2FsaXplT3B0aW9ucykgOiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNb250aHMnLCBtb250aHMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHllYXIgdXAgdG8gbWF4IERhdGVcbiAgfSBlbHNlIGlmICh1bml0ID09PSAneWVhcicpIHtcbiAgICB2YXIgeWVhcnMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9ZRUFSKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4WWVhcnMnLCB5ZWFycywgbG9jYWxpemVPcHRpb25zKTtcbiAgfVxuICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInVuaXQgbXVzdCBiZSAnc2Vjb25kJywgJ21pbnV0ZScsICdob3VyJywgJ2RheScsICdtb250aCcgb3IgJ3llYXInXCIpO1xufSIsImltcG9ydCBkaXN0YW5jZUluV29yZHMgZnJvbSBcIi4uL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVRvTm93XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICpcbiAqIHwgRGlzdGFuY2UgdG8gbm93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZXNzIHRoYW4gYSBtaW51dGUgIHxcbiAqIHwgMzAgc2VjcyAuLi4gMSBtaW4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG1pbnV0ZSAgICAgICAgICAgIHxcbiAqIHwgMSBtaW4gMzAgc2VjcyAuLi4gNDQgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uNDRdIG1pbnV0ZXMgICAgIHxcbiAqIHwgNDQgbWlucyAuLi4gMzAgc2VjcyAuLi4gODkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIGhvdXIgICAgICAgIHxcbiAqIHwgODkgbWlucyAzMCBzZWNzIC4uLiAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBbMi4uMjRdIGhvdXJzIHxcbiAqIHwgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgfCAxIGRheSAgICAgICAgICAgICAgIHxcbiAqIHwgNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgfCBbMi4uMzBdIGRheXMgICAgICAgIHxcbiAqIHwgMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA0NCBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAxIG1vbnRoICAgICAgIHxcbiAqIHwgNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA1OSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAyIG1vbnRocyAgICAgIHxcbiAqIHwgNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiAxIHlyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uMTJdIG1vbnRocyAgICAgIHxcbiAqIHwgMSB5ciAuLi4gMSB5ciAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIHllYXIgICAgICAgIHxcbiAqIHwgMSB5ciAzIG1vbnRocyAuLi4gMSB5ciA5IG1vbnRoIHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIDEgeWVhciAgICAgICAgIHxcbiAqIHwgMSB5ciA5IG1vbnRocyAuLi4gMiB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgMiB5ZWFycyAgICAgIHxcbiAqIHwgTiB5cnMgLi4uIE4geXJzIDMgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBOIHllYXJzICAgICAgIHxcbiAqIHwgTiB5cnMgMyBtb250aHMgLi4uIE4geXJzIDkgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIE4geWVhcnMgICAgICAgIHxcbiAqIHwgTiB5cnMgOSBtb250aHMgLi4uIE4rMSB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgTisxIHllYXJzICAgIHxcbiAqXG4gKiBXaXRoIGBvcHRpb25zLmluY2x1ZGVTZWNvbmRzID09IHRydWVgOlxuICogfCBEaXN0YW5jZSB0byBub3cgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIHNlY3MgLi4uIDUgc2VjcyAgIHwgbGVzcyB0aGFuIDUgc2Vjb25kcyAgfFxuICogfCA1IHNlY3MgLi4uIDEwIHNlY3MgIHwgbGVzcyB0aGFuIDEwIHNlY29uZHMgfFxuICogfCAxMCBzZWNzIC4uLiAyMCBzZWNzIHwgbGVzcyB0aGFuIDIwIHNlY29uZHMgfFxuICogfCAyMCBzZWNzIC4uLiA0MCBzZWNzIHwgaGFsZiBhIG1pbnV0ZSAgICAgICAgfFxuICogfCA0MCBzZWNzIC4uLiA2MCBzZWNzIHwgbGVzcyB0aGFuIGEgbWludXRlICAgfFxuICogfCA2MCBzZWNzIC4uLiA5MCBzZWNzIHwgMSBtaW51dGUgICAgICAgICAgICAgfFxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pbmNsdWRlU2Vjb25kcz1mYWxzZV0gLSBkaXN0YW5jZXMgbGVzcyB0aGFuIGEgbWludXRlIGFyZSBtb3JlIGRldGFpbGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFkZFN1ZmZpeD1mYWxzZV0gLSByZXN1bHQgc3BlY2lmaWVzIGlmIG5vdyBpcyBlYXJsaWVyIG9yIGxhdGVyIHRoYW4gdGhlIHBhc3NlZCBkYXRlXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LCB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIpXG4gKiApXG4gKiAvLz0+ICc2IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDEgSmFudWFyeSAyMDE1IDAwOjAwOjAwLFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTUsIGluY2x1ZGluZyBzZWNvbmRzP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpLFxuICogICB7aW5jbHVkZVNlY29uZHM6IHRydWV9XG4gKiApXG4gKiAvLz0+ICdsZXNzIHRoYW4gMjAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNiwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICB7YWRkU3VmZml4OiB0cnVlfVxuICogKVxuICogLy89PiAnaW4gYWJvdXQgMSB5ZWFyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgQXVndXN0IDIwMTYgaW4gRXNwZXJhbnRvP1xuICogY29uc3QgZW9Mb2NhbGUgPSByZXF1aXJlKCdkYXRlLWZucy9sb2NhbGUvZW8nKVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNiwgNywgMSksXG4gKiAgIHtsb2NhbGU6IGVvTG9jYWxlfVxuICogKVxuICogLy89PiAncGxpIG9sIDEgamFybydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2VUb05vdyhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBkaXN0YW5jZUluV29yZHMoZGlydHlEYXRlLCBEYXRlLm5vdygpLCBvcHRpb25zKTtcbn0iLCJpbXBvcnQgZm9ybWF0RGlzdGFuY2VTdHJpY3QgZnJvbSBcIi4uL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMsIHVzaW5nIHN0cmljdCB1bml0cy5cbiAqIFRoaXMgaXMgbGlrZSBgZm9ybWF0RGlzdGFuY2VgLCBidXQgZG9lcyBub3QgdXNlIGhlbHBlcnMgbGlrZSAnYWxtb3N0JywgJ292ZXInLFxuICogJ2xlc3MgdGhhbicgYW5kIHRoZSBsaWtlLlxuICpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDU5IHNlY3MgICAgICAgICAgfCBbMC4uNTldIHNlY29uZHMgICAgIHxcbiAqIHwgMSAuLi4gNTkgbWlucyAgICAgICAgICB8IFsxLi41OV0gbWludXRlcyAgICAgfFxuICogfCAxIC4uLiAyMyBocnMgICAgICAgICAgIHwgWzEuLjIzXSBob3VycyAgICAgICB8XG4gKiB8IDEgLi4uIDI5IGRheXMgICAgICAgICAgfCBbMS4uMjldIGRheXMgICAgICAgIHxcbiAqIHwgMSAuLi4gMTEgbW9udGhzICAgICAgICB8IFsxLi4xMV0gbW9udGhzICAgICAgfFxuICogfCAxIC4uLiBOIHllYXJzICAgICAgICAgIHwgWzEuLk5dICB5ZWFycyAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHNlY29uZCBkYXRlIGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgZmlyc3RcbiAqIEBwYXJhbSB7J3NlY29uZCd8J21pbnV0ZSd8J2hvdXInfCdkYXknfCdtb250aCd8J3llYXInfSBbb3B0aW9ucy51bml0XSAtIGlmIHNwZWNpZmllZCwgd2lsbCBmb3JjZSBhIHVuaXRcbiAqIEBwYXJhbSB7J2Zsb29yJ3wnY2VpbCd8J3JvdW5kJ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3JvdW5kJ10gLSB3aGljaCB3YXkgdG8gcm91bmQgcGFydGlhbCB1bml0c1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdERpc3RhbmNlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSwgd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKVxuICogKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAxIEphbnVhcnkgMjAxNSAwMDowMDowMCxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE1IDAwOjAwOjE1LCBpbmNsdWRpbmcgc2Vjb25kcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDE1KVxuICogKVxuICogLy89PiAnMTUgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNiwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICB7YWRkU3VmZml4OiB0cnVlfVxuICogKVxuICogLy89PiAnaW4gMSB5ZWFyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyOCBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNSwgaW4gbW9udGhzLCByb3VuZGVkIHVwPz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QobmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgdW5pdDogJ21vbnRoJyxcbiAqICAgcm91bmRpbmdNZXRob2Q6ICdjZWlsJ1xuICogfSlcbiAqIC8vPT4gJzEgbW9udGgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTYgaW4gRXNwZXJhbnRvP1xuICogY29uc3QgZW9Mb2NhbGUgPSByZXF1aXJlKCdkYXRlLWZucy9sb2NhbGUvZW8nKVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIHtsb2NhbGU6IGVvTG9jYWxlfVxuICogKVxuICogLy89PiAnMSBqYXJvJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGZvcm1hdERpc3RhbmNlU3RyaWN0KGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSwgb3B0aW9ucyk7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xudmFyIGRlZmF1bHRGb3JtYXQgPSBbJ3llYXJzJywgJ21vbnRocycsICd3ZWVrcycsICdkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdER1cmF0aW9uXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdHMgYSBkdXJhdGlvbiBpbiBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiBodW1hbi1yZWFkYWJsZSBkdXJhdGlvbiBzdHJpbmcgaS5lLiBcIjkgbW9udGhzIDIgZGF5c1wiXG4gKlxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgZHVyYXRpb24gdG8gZm9ybWF0XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nW119IFtvcHRpb25zLmZvcm1hdD1bJ3llYXJzJywgJ21vbnRocycsICd3ZWVrcycsICdkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddXSAtIHRoZSBhcnJheSBvZiB1bml0cyB0byBmb3JtYXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuemVybz1mYWxzZV0gLSBzaG91bGQgemVyb3MgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dD9cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWxpbWl0ZXI9JyAnXSAtIGRlbGltaXRlciBzdHJpbmdcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvcm1hdCBmdWxsIGR1cmF0aW9uXG4gKiBmb3JtYXREdXJhdGlvbih7XG4gKiAgIHllYXJzOiAyLFxuICogICBtb250aHM6IDksXG4gKiAgIHdlZWtzOiAxLFxuICogICBkYXlzOiA3LFxuICogICBob3VyczogNSxcbiAqICAgbWludXRlczogOSxcbiAqICAgc2Vjb25kczogMzBcbiAqIH0pXG4gKiAvLz0+ICcyIHllYXJzIDkgbW9udGhzIDEgd2VlayA3IGRheXMgNSBob3VycyA5IG1pbnV0ZXMgMzAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9ybWF0IHBhcnRpYWwgZHVyYXRpb25cbiAqIGZvcm1hdER1cmF0aW9uKHsgbW9udGhzOiA5LCBkYXlzOiAyIH0pXG4gKiAvLz0+ICc5IG1vbnRocyAyIGRheXMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWl6ZSB0aGUgZm9ybWF0XG4gKiBmb3JtYXREdXJhdGlvbihcbiAqICAge1xuICogICAgIHllYXJzOiAyLFxuICogICAgIG1vbnRoczogOSxcbiAqICAgICB3ZWVrczogMSxcbiAqICAgICBkYXlzOiA3LFxuICogICAgIGhvdXJzOiA1LFxuICogICAgIG1pbnV0ZXM6IDksXG4gKiAgICAgc2Vjb25kczogMzBcbiAqICAgfSxcbiAqICAgeyBmb3JtYXQ6IFsnbW9udGhzJywgJ3dlZWtzJ10gfVxuICogKSA9PT0gJzkgbW9udGhzIDEgd2VlaydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9taXplIHRoZSB6ZXJvcyBwcmVzZW5jZVxuICogZm9ybWF0RHVyYXRpb24oeyB5ZWFyczogMCwgbW9udGhzOiA5IH0pXG4gKiAvLz0+ICc5IG1vbnRocydcbiAqIGZvcm1hdER1cmF0aW9uKHsgeWVhcnM6IDAsIG1vbnRoczogOSB9LCB7IHplcm86IHRydWUgfSlcbiAqIC8vPT4gJzAgeWVhcnMgOSBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWl6ZSB0aGUgZGVsaW1pdGVyXG4gKiBmb3JtYXREdXJhdGlvbih7IHllYXJzOiAyLCBtb250aHM6IDksIHdlZWtzOiAzIH0sIHsgZGVsaW1pdGVyOiAnLCAnIH0pXG4gKiAvLz0+ICcyIHllYXJzLCA5IG1vbnRocywgMyB3ZWVrcydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RHVyYXRpb24oZHVyYXRpb24sIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkZm9ybWF0LCBfb3B0aW9ucyR6ZXJvLCBfb3B0aW9ucyRkZWxpbWl0ZXI7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgdmFyIGZvcm1hdCA9IChfb3B0aW9ucyRmb3JtYXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZm9ybWF0KSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmb3JtYXQgIT09IHZvaWQgMCA/IF9vcHRpb25zJGZvcm1hdCA6IGRlZmF1bHRGb3JtYXQ7XG4gIHZhciB6ZXJvID0gKF9vcHRpb25zJHplcm8gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuemVybykgIT09IG51bGwgJiYgX29wdGlvbnMkemVybyAhPT0gdm9pZCAwID8gX29wdGlvbnMkemVybyA6IGZhbHNlO1xuICB2YXIgZGVsaW1pdGVyID0gKF9vcHRpb25zJGRlbGltaXRlciA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5kZWxpbWl0ZXIpICE9PSBudWxsICYmIF9vcHRpb25zJGRlbGltaXRlciAhPT0gdm9pZCAwID8gX29wdGlvbnMkZGVsaW1pdGVyIDogJyAnO1xuICBpZiAoIWxvY2FsZS5mb3JtYXREaXN0YW5jZSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gZm9ybWF0LnJlZHVjZShmdW5jdGlvbiAoYWNjLCB1bml0KSB7XG4gICAgdmFyIHRva2VuID0gXCJ4XCIuY29uY2F0KHVuaXQucmVwbGFjZSgvKF4uKS8sIGZ1bmN0aW9uIChtKSB7XG4gICAgICByZXR1cm4gbS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pKTtcbiAgICB2YXIgdmFsdWUgPSBkdXJhdGlvblt1bml0XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAoemVybyB8fCBkdXJhdGlvblt1bml0XSkpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KGxvY2FsZS5mb3JtYXREaXN0YW5jZSh0b2tlbiwgdmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pLmpvaW4oZGVsaW1pdGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU09cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlIGFjY29yZGluZyB0byB0aGUgSVNPIDg2MDEgc3RhbmRhcmQgKGh0dHBzOi8vc3VwcG9ydC5zYXMuY29tL2RvY3VtZW50YXRpb24vY2RsL2VuL2xyZGljdC82NDMxNi9IVE1ML2RlZmF1bHQvdmlld2VyLmh0bSNhMDAzMTY5ODE0Lmh0bSkuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQuIE9wdGlvbnMgbWF5IGJlIHBhc3NlZCB0byBjb250cm9sIHRoZSBwYXJ0cyBhbmQgbm90YXRpb25zIG9mIHRoZSBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0geydleHRlbmRlZCd8J2Jhc2ljJ30gW29wdGlvbnMuZm9ybWF0PSdleHRlbmRlZCddIC0gaWYgJ2Jhc2ljJywgaGlkZSBkZWxpbWl0ZXJzIGJldHdlZW4gZGF0ZSBhbmQgdGltZSB2YWx1ZXMuXG4gKiBAcGFyYW0geydjb21wbGV0ZSd8J2RhdGUnfCd0aW1lJ30gW29wdGlvbnMucmVwcmVzZW50YXRpb249J2NvbXBsZXRlJ10gLSBmb3JtYXQgZGF0ZSwgdGltZSB3aXRoIGxvY2FsIHRpbWUgem9uZSwgb3IgYm90aC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgKGluIGxvY2FsIHRpbWUgem9uZSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZm9ybWF0YCBtdXN0IGJlICdleHRlbmRlZCcgb3IgJ2Jhc2ljJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMucmVwcmVzZW50YXRpb25gIG11c3QgYmUgJ2RhdGUnLCAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0IChsb2NhbCB0aW1lIHpvbmUgaXMgVVRDKTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTJaJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEsIHNob3J0IGZvcm1hdCAobG9jYWwgdGltZSB6b25lIGlzIFVUQyk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgZm9ybWF0OiAnYmFzaWMnIH0pXG4gKiAvLz0+ICcyMDE5MDkxOFQxOTAwNTInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSBmb3JtYXQsIGRhdGUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ2RhdGUnIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0LCB0aW1lIG9ubHkgKGxvY2FsIHRpbWUgem9uZSBpcyBVVEMpOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAndGltZScgfSlcbiAqIC8vPT4gJzE5OjAwOjUyWidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0SVNPKGRhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGZvcm1hdCwgX29wdGlvbnMkcmVwcmVzZW50YXRpO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBmb3JtYXQgPSBTdHJpbmcoKF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mb3JtYXQpICE9PSBudWxsICYmIF9vcHRpb25zJGZvcm1hdCAhPT0gdm9pZCAwID8gX29wdGlvbnMkZm9ybWF0IDogJ2V4dGVuZGVkJyk7XG4gIHZhciByZXByZXNlbnRhdGlvbiA9IFN0cmluZygoX29wdGlvbnMkcmVwcmVzZW50YXRpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJlcHJlc2VudGF0aW9uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyZXByZXNlbnRhdGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJHJlcHJlc2VudGF0aSA6ICdjb21wbGV0ZScpO1xuICBpZiAoZm9ybWF0ICE9PSAnZXh0ZW5kZWQnICYmIGZvcm1hdCAhPT0gJ2Jhc2ljJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiZm9ybWF0IG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXCIpO1xuICB9XG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAndGltZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICdjb21wbGV0ZScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJlcHJlc2VudGF0aW9uIG11c3QgYmUgJ2RhdGUnLCAndGltZScsIG9yICdjb21wbGV0ZSdcIik7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgdHpPZmZzZXQgPSAnJztcbiAgdmFyIGRhdGVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnLScgOiAnJztcbiAgdmFyIHRpbWVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnOicgOiAnJztcblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ2RhdGUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAndGltZScpIHtcbiAgICB2YXIgZGF5ID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXREYXRlKCksIDIpO1xuICAgIHZhciBtb250aCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICAgIHZhciB5ZWFyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRGdWxsWWVhcigpLCA0KTtcblxuICAgIC8vIHl5eXlNTWRkIG9yIHl5eXktTU0tZGQuXG4gICAgcmVzdWx0ID0gXCJcIi5jb25jYXQoeWVhcikuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChtb250aCkuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChkYXkpO1xuICB9XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICd0aW1lJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnKSB7XG4gICAgLy8gQWRkIHRoZSB0aW1lem9uZS5cbiAgICB2YXIgb2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgaWYgKG9mZnNldCAhPT0gMCkge1xuICAgICAgdmFyIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgICAgIHZhciBob3VyT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKE1hdGguZmxvb3IoYWJzb2x1dGVPZmZzZXQgLyA2MCksIDIpO1xuICAgICAgdmFyIG1pbnV0ZU9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhhYnNvbHV0ZU9mZnNldCAlIDYwLCAyKTtcbiAgICAgIC8vIElmIGxlc3MgdGhhbiAwLCB0aGUgc2lnbiBpcyArLCBiZWNhdXNlIGl0IGlzIGFoZWFkIG9mIHRpbWUuXG4gICAgICB2YXIgc2lnbiA9IG9mZnNldCA8IDAgPyAnKycgOiAnLSc7XG4gICAgICB0ek9mZnNldCA9IFwiXCIuY29uY2F0KHNpZ24pLmNvbmNhdChob3VyT2Zmc2V0LCBcIjpcIikuY29uY2F0KG1pbnV0ZU9mZnNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR6T2Zmc2V0ID0gJ1onO1xuICAgIH1cbiAgICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhbHNvIGRhdGUsIHNlcGFyYXRlIGl0IHdpdGggdGltZSB3aXRoICdUJ1xuICAgIHZhciBzZXBhcmF0b3IgPSByZXN1bHQgPT09ICcnID8gJycgOiAnVCc7XG5cbiAgICAvLyBDcmVhdGVzIGEgdGltZSBzdHJpbmcgY29uc2lzdGluZyBvZiBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQsIHNlcGFyYXRlZCBieSBkZWxpbWl0ZXJzLCBpZiBkZWZpbmVkLlxuICAgIHZhciB0aW1lID0gW2hvdXIsIG1pbnV0ZSwgc2Vjb25kXS5qb2luKHRpbWVEZWxpbWl0ZXIpO1xuXG4gICAgLy8gSEhtbXNzIG9yIEhIOm1tOnNzLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHJlc3VsdCkuY29uY2F0KHNlcGFyYXRvcikuY29uY2F0KHRpbWUpLmNvbmNhdCh0ek9mZnNldCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU085MDc1XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIElTTyA5MDc1IHN0YW5kYXJkIChodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi81LjcvZW4vZGF0ZS1hbmQtdGltZS1mdW5jdGlvbnMuaHRtbCNmdW5jdGlvbl9nZXQtZm9ybWF0KS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIElTTyA5MDc1IGZvcm1hdC4gT3B0aW9ucyBtYXkgYmUgcGFzc2VkIHRvIGNvbnRyb2wgdGhlIHBhcnRzIGFuZCBub3RhdGlvbnMgb2YgdGhlIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7J2V4dGVuZGVkJ3wnYmFzaWMnfSBbb3B0aW9ucy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBpZiAnYmFzaWMnLCBoaWRlIGRlbGltaXRlcnMgYmV0d2VlbiBkYXRlIGFuZCB0aW1lIHZhbHVlcy5cbiAqIEBwYXJhbSB7J2NvbXBsZXRlJ3wnZGF0ZSd8J3RpbWUnfSBbb3B0aW9ucy5yZXByZXNlbnRhdGlvbj0nY29tcGxldGUnXSAtIGZvcm1hdCBkYXRlLCB0aW1lLCBvciBib3RoLlxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5mb3JtYXRgIG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5yZXByZXNlbnRhdGlvbmAgbXVzdCBiZSAnZGF0ZScsICd0aW1lJyBvciAnY29tcGxldGUnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpKVxuICogLy89PiAnMjAxOS0wOS0xOCAxOTowMDo1MidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA5MDc1LCBzaG9ydCBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IGZvcm1hdDogJ2Jhc2ljJyB9KVxuICogLy89PiAnMjAxOTA5MTggMTkwMDUyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDkwNzUgZm9ybWF0LCBkYXRlIG9ubHk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAnZGF0ZScgfSlcbiAqIC8vPT4gJzIwMTktMDktMTgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSBmb3JtYXQsIHRpbWUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTzkwNzUobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgcmVwcmVzZW50YXRpb246ICd0aW1lJyB9KVxuICogLy89PiAnMTk6MDA6NTInXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdElTTzkwNzUoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRmb3JtYXQsIF9vcHRpb25zJHJlcHJlc2VudGF0aTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoLCBcIiBwcmVzZW50XCIpKTtcbiAgfVxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBmb3JtYXQgPSBTdHJpbmcoKF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mb3JtYXQpICE9PSBudWxsICYmIF9vcHRpb25zJGZvcm1hdCAhPT0gdm9pZCAwID8gX29wdGlvbnMkZm9ybWF0IDogJ2V4dGVuZGVkJyk7XG4gIHZhciByZXByZXNlbnRhdGlvbiA9IFN0cmluZygoX29wdGlvbnMkcmVwcmVzZW50YXRpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJlcHJlc2VudGF0aW9uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyZXByZXNlbnRhdGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJHJlcHJlc2VudGF0aSA6ICdjb21wbGV0ZScpO1xuICBpZiAoZm9ybWF0ICE9PSAnZXh0ZW5kZWQnICYmIGZvcm1hdCAhPT0gJ2Jhc2ljJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiZm9ybWF0IG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXCIpO1xuICB9XG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAndGltZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICdjb21wbGV0ZScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJlcHJlc2VudGF0aW9uIG11c3QgYmUgJ2RhdGUnLCAndGltZScsIG9yICdjb21wbGV0ZSdcIik7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgZGF0ZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICctJyA6ICcnO1xuICB2YXIgdGltZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICc6JyA6ICcnO1xuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAnZGF0ZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICd0aW1lJykge1xuICAgIHZhciBkYXkgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldERhdGUoKSwgMik7XG4gICAgdmFyIG1vbnRoID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gICAgdmFyIHllYXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEZ1bGxZZWFyKCksIDQpO1xuXG4gICAgLy8geXl5eU1NZGQgb3IgeXl5eS1NTS1kZC5cbiAgICByZXN1bHQgPSBcIlwiLmNvbmNhdCh5ZWFyKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KG1vbnRoKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KGRheSk7XG4gIH1cblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ3RpbWUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAnZGF0ZScpIHtcbiAgICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhbHNvIGRhdGUsIHNlcGFyYXRlIGl0IHdpdGggdGltZSB3aXRoIGEgc3BhY2VcbiAgICB2YXIgc2VwYXJhdG9yID0gcmVzdWx0ID09PSAnJyA/ICcnIDogJyAnO1xuXG4gICAgLy8gSEhtbXNzIG9yIEhIOm1tOnNzLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHJlc3VsdCkuY29uY2F0KHNlcGFyYXRvcikuY29uY2F0KGhvdXIpLmNvbmNhdCh0aW1lRGVsaW1pdGVyKS5jb25jYXQobWludXRlKS5jb25jYXQodGltZURlbGltaXRlcikuY29uY2F0KHNlY29uZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU09EdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgYSBkdXJhdGlvbiBvYmplY3QgYWNjb3JkaW5nIGFzIElTTyA4NjAxIGR1cmF0aW9uIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRm9ybWF0IGEgZHVyYXRpb24gb2JqZWN0IGFjY29yZGluZyB0byB0aGUgSVNPIDg2MDEgZHVyYXRpb24gc3RhbmRhcmQgKGh0dHBzOi8vd3d3LmRpZ2kuY29tL3Jlc291cmNlcy9kb2N1bWVudGF0aW9uL2RpZ2lkb2NzLzkwMDAxNDM3LTEzL3JlZmVyZW5jZS9yX2lzb184NjAxX2R1cmF0aW9uX2Zvcm1hdC5odG0pXG4gKlxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgZHVyYXRpb24gdG8gZm9ybWF0XG4gKlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIElTTyA4NjAxIGR1cmF0aW9uIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSBSZXF1aXJlcyAxIGFyZ3VtZW50XG4gKiBAdGhyb3dzIHtFcnJvcn0gQXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9ybWF0IHRoZSBnaXZlbiBkdXJhdGlvbiBhcyBJU08gODYwMSBzdHJpbmdcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTT0R1cmF0aW9uKHtcbiAqICAgeWVhcnM6IDM5LFxuICogICBtb250aHM6IDIsXG4gKiAgIGRheXM6IDIwLFxuICogICBob3VyczogNyxcbiAqICAgbWludXRlczogNSxcbiAqICAgc2Vjb25kczogMFxuICogfSlcbiAqIC8vPT4gJ1AzOVkyTTIwRFQwSDBNMFMnXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdElTT0R1cmF0aW9uKGR1cmF0aW9uKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAoX3R5cGVvZihkdXJhdGlvbikgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0R1cmF0aW9uIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIHZhciBfZHVyYXRpb24keWVhcnMgPSBkdXJhdGlvbi55ZWFycyxcbiAgICB5ZWFycyA9IF9kdXJhdGlvbiR5ZWFycyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiR5ZWFycyxcbiAgICBfZHVyYXRpb24kbW9udGhzID0gZHVyYXRpb24ubW9udGhzLFxuICAgIG1vbnRocyA9IF9kdXJhdGlvbiRtb250aHMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kbW9udGhzLFxuICAgIF9kdXJhdGlvbiRkYXlzID0gZHVyYXRpb24uZGF5cyxcbiAgICBkYXlzID0gX2R1cmF0aW9uJGRheXMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kZGF5cyxcbiAgICBfZHVyYXRpb24kaG91cnMgPSBkdXJhdGlvbi5ob3VycyxcbiAgICBob3VycyA9IF9kdXJhdGlvbiRob3VycyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRob3VycyxcbiAgICBfZHVyYXRpb24kbWludXRlcyA9IGR1cmF0aW9uLm1pbnV0ZXMsXG4gICAgbWludXRlcyA9IF9kdXJhdGlvbiRtaW51dGVzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJG1pbnV0ZXMsXG4gICAgX2R1cmF0aW9uJHNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzLFxuICAgIHNlY29uZHMgPSBfZHVyYXRpb24kc2Vjb25kcyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRzZWNvbmRzO1xuICByZXR1cm4gXCJQXCIuY29uY2F0KHllYXJzLCBcIllcIikuY29uY2F0KG1vbnRocywgXCJNXCIpLmNvbmNhdChkYXlzLCBcIkRUXCIpLmNvbmNhdChob3VycywgXCJIXCIpLmNvbmNhdChtaW51dGVzLCBcIk1cIikuY29uY2F0KHNlY29uZHMsIFwiU1wiKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0UkZDMzMzOVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBSRkMgMzMzOSBzdGFuZGFyZCAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjYpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gUkZDIDMzMzkgZm9ybWF0LiBPcHRpb25zIG1heSBiZSBwYXNzZWQgdG8gY29udHJvbCB0aGUgcGFydHMgYW5kIG5vdGF0aW9ucyBvZiB0aGUgZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8MnwzfSBbb3B0aW9ucy5mcmFjdGlvbkRpZ2l0cz0wXSAtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgYWZ0ZXIgc2Vjb25kc1xuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5mcmFjdGlvbkRpZ2l0c2AgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzMzMzkobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyWidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdCwgMiBkaWdpdHMgb2Ygc2Vjb25kIGZyYWN0aW9uOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UkZDMzMzOShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyLCAyMzQpLCB7IGZyYWN0aW9uRGlnaXRzOiAyIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyLjIzWidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdCwgMyBkaWdpdHMgb2Ygc2Vjb25kIGZyYWN0aW9uXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSRkMzMzM5KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIsIDIzNCksIHsgZnJhY3Rpb25EaWdpdHM6IDMgfSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTIuMjM0WidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UkZDMzMzOShkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGZyYWN0aW9uRGlnaTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZnJhY3Rpb25EaWdpdHMgPSBOdW1iZXIoKF9vcHRpb25zJGZyYWN0aW9uRGlnaSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mcmFjdGlvbkRpZ2l0cykgIT09IG51bGwgJiYgX29wdGlvbnMkZnJhY3Rpb25EaWdpICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmcmFjdGlvbkRpZ2kgOiAwKTtcblxuICAvLyBUZXN0IGlmIGZyYWN0aW9uRGlnaXRzIGlzIGJldHdlZW4gMCBhbmQgMyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZyYWN0aW9uRGlnaXRzID49IDAgJiYgZnJhY3Rpb25EaWdpdHMgPD0gMykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZnJhY3Rpb25EaWdpdHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDMgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF5ID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXREYXRlKCksIDIpO1xuICB2YXIgbW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1vbnRoKCkgKyAxLCAyKTtcbiAgdmFyIHllYXIgPSBvcmlnaW5hbERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGhvdXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEhvdXJzKCksIDIpO1xuICB2YXIgbWludXRlID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuICB2YXIgZnJhY3Rpb25hbFNlY29uZCA9ICcnO1xuICBpZiAoZnJhY3Rpb25EaWdpdHMgPiAwKSB7XG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG9yaWdpbmFsRGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBmcmFjdGlvbkRpZ2l0cyAtIDMpKTtcbiAgICBmcmFjdGlvbmFsU2Vjb25kID0gJy4nICsgYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCBmcmFjdGlvbkRpZ2l0cyk7XG4gIH1cbiAgdmFyIG9mZnNldCA9ICcnO1xuICB2YXIgdHpPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgaWYgKHR6T2Zmc2V0ICE9PSAwKSB7XG4gICAgdmFyIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnModHpPZmZzZXQpO1xuICAgIHZhciBob3VyT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKHRvSW50ZWdlcihhYnNvbHV0ZU9mZnNldCAvIDYwKSwgMik7XG4gICAgdmFyIG1pbnV0ZU9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhhYnNvbHV0ZU9mZnNldCAlIDYwLCAyKTtcbiAgICAvLyBJZiBsZXNzIHRoYW4gMCwgdGhlIHNpZ24gaXMgKywgYmVjYXVzZSBpdCBpcyBhaGVhZCBvZiB0aW1lLlxuICAgIHZhciBzaWduID0gdHpPZmZzZXQgPCAwID8gJysnIDogJy0nO1xuICAgIG9mZnNldCA9IFwiXCIuY29uY2F0KHNpZ24pLmNvbmNhdChob3VyT2Zmc2V0LCBcIjpcIikuY29uY2F0KG1pbnV0ZU9mZnNldCk7XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0ID0gJ1onO1xuICB9XG4gIHJldHVybiBcIlwiLmNvbmNhdCh5ZWFyLCBcIi1cIikuY29uY2F0KG1vbnRoLCBcIi1cIikuY29uY2F0KGRheSwgXCJUXCIpLmNvbmNhdChob3VyLCBcIjpcIikuY29uY2F0KG1pbnV0ZSwgXCI6XCIpLmNvbmNhdChzZWNvbmQpLmNvbmNhdChmcmFjdGlvbmFsU2Vjb25kKS5jb25jYXQob2Zmc2V0KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xudmFyIGRheXMgPSBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddO1xudmFyIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXRSRkM3MjMxXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIFJGQyA3MjMxIHN0YW5kYXJkIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTcuMS4xLjEpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gUkZDIDcyMzEgZm9ybWF0LlxuICogVGhlIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSBpbiBVVEMgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyA3MjMxIGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzcyMzEobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICdXZWQsIDE4IFNlcCAyMDE5IDE5OjAwOjUyIEdNVCdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UkZDNzIzMShkaXJ0eURhdGUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZGF5TmFtZSA9IGRheXNbb3JpZ2luYWxEYXRlLmdldFVUQ0RheSgpXTtcbiAgdmFyIGRheU9mTW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ0RhdGUoKSwgMik7XG4gIHZhciBtb250aE5hbWUgPSBtb250aHNbb3JpZ2luYWxEYXRlLmdldFVUQ01vbnRoKCldO1xuICB2YXIgeWVhciA9IG9yaWdpbmFsRGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0VVRDSG91cnMoKSwgMik7XG4gIHZhciBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ01pbnV0ZXMoKSwgMik7XG4gIHZhciBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ1NlY29uZHMoKSwgMik7XG5cbiAgLy8gUmVzdWx0IHZhcmlhYmxlcy5cbiAgcmV0dXJuIFwiXCIuY29uY2F0KGRheU5hbWUsIFwiLCBcIikuY29uY2F0KGRheU9mTW9udGgsIFwiIFwiKS5jb25jYXQobW9udGhOYW1lLCBcIiBcIikuY29uY2F0KHllYXIsIFwiIFwiKS5jb25jYXQoaG91ciwgXCI6XCIpLmNvbmNhdChtaW51dGUsIFwiOlwiKS5jb25jYXQoc2Vjb25kLCBcIiBHTVRcIik7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0IGZyb20gXCIuLi9mb3JtYXQvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0UmVsYXRpdmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmVwcmVzZW50IHRoZSBkYXRlIGluIHdvcmRzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBiYXNlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXByZXNlbnQgdGhlIGRhdGUgaW4gd29yZHMgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGJhc2UgZGF0ZS5cbiAqXG4gKiB8IERpc3RhbmNlIHRvIHRoZSBiYXNlIGRhdGUgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCBQcmV2aW91cyA2IGRheXMgICAgICAgICAgIHwgbGFzdCBTdW5kYXkgYXQgMDQ6MzAgQU0gICB8XG4gKiB8IExhc3QgZGF5ICAgICAgICAgICAgICAgICAgfCB5ZXN0ZXJkYXkgYXQgMDQ6MzAgQU0gICAgIHxcbiAqIHwgU2FtZSBkYXkgICAgICAgICAgICAgICAgICB8IHRvZGF5IGF0IDA0OjMwIEFNICAgICAgICAgfFxuICogfCBOZXh0IGRheSAgICAgICAgICAgICAgICAgIHwgdG9tb3Jyb3cgYXQgMDQ6MzAgQU0gICAgICB8XG4gKiB8IE5leHQgNiBkYXlzICAgICAgICAgICAgICAgfCBTdW5kYXkgYXQgMDQ6MzAgQU0gICAgICAgIHxcbiAqIHwgT3RoZXIgICAgICAgICAgICAgICAgICAgICB8IDEyLzMxLzIwMTcgICAgICAgICAgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBmb3JtYXRcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkYXRlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGxvY2FsaXplYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdExvbmdgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0UmVsYXRpdmVgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCB0aGUgZGF0ZSBvZiA2IGRheXMgYWdvIGluIHdvcmRzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBiYXNlIGRhdGUuIEluIHRoaXMgZXhhbXBsZSwgdG9kYXkgaXMgV2VkbmVzZGF5XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSZWxhdGl2ZShhZGREYXlzKG5ldyBEYXRlKCksIC02KSwgbmV3IERhdGUoKSlcbiAqIC8vPT4gXCJsYXN0IFRodXJzZGF5IGF0IDEyOjQ1IEFNXCJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmUoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgYmFzZURhdGUgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiRvcHRpID0gX29wdGlvbnMkbG9jYWxlMi5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTIkb3B0aS53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogMCk7XG4gIGlmICghbG9jYWxlLmxvY2FsaXplKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5mb3JtYXRMb25nKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0TG9uZyBwcm9wZXJ0eScpO1xuICB9XG4gIGlmICghbG9jYWxlLmZvcm1hdFJlbGF0aXZlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0UmVsYXRpdmUgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBiYXNlRGF0ZSk7XG4gIGlmIChpc05hTihkaWZmKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgdG9rZW47XG4gIGlmIChkaWZmIDwgLTYpIHtcbiAgICB0b2tlbiA9ICdvdGhlcic7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IC0xKSB7XG4gICAgdG9rZW4gPSAnbGFzdFdlZWsnO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7XG4gICAgdG9rZW4gPSAneWVzdGVyZGF5JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMSkge1xuICAgIHRva2VuID0gJ3RvZGF5JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMikge1xuICAgIHRva2VuID0gJ3RvbW9ycm93JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgNykge1xuICAgIHRva2VuID0gJ25leHRXZWVrJztcbiAgfSBlbHNlIHtcbiAgICB0b2tlbiA9ICdvdGhlcic7XG4gIH1cbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMoZGF0ZSwgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSk7XG4gIHZhciB1dGNCYXNlRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhiYXNlRGF0ZSwgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhiYXNlRGF0ZSkpO1xuICB2YXIgZm9ybWF0U3RyID0gbG9jYWxlLmZvcm1hdFJlbGF0aXZlKHRva2VuLCB1dGNEYXRlLCB1dGNCYXNlRGF0ZSwge1xuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uXG4gIH0pO1xuICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0ciwge1xuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uXG4gIH0pO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZyb21Vbml4VGltZVxuICogQGNhdGVnb3J5IFRpbWVzdGFtcCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDcmVhdGUgYSBkYXRlIGZyb20gYSBVbml4IHRpbWVzdGFtcC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENyZWF0ZSBhIGRhdGUgZnJvbSBhIFVuaXggdGltZXN0YW1wIChpbiBzZWNvbmRzKS4gRGVjaW1hbCB2YWx1ZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHVuaXhUaW1lIC0gdGhlIGdpdmVuIFVuaXggdGltZXN0YW1wIChpbiBzZWNvbmRzKVxuICogQHJldHVybnMge0RhdGV9IHRoZSBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIHRoZSBkYXRlIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDU6XG4gKiBjb25zdCByZXN1bHQgPSBmcm9tVW5peFRpbWUoMTMzMDUxNTkwNSlcbiAqIC8vPT4gV2VkIEZlYiAyOSAyMDEyIDExOjQ1OjA1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZyb21Vbml4VGltZShkaXJ0eVVuaXhUaW1lKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgdW5peFRpbWUgPSB0b0ludGVnZXIoZGlydHlVbml4VGltZSk7XG4gIHJldHVybiB0b0RhdGUodW5peFRpbWUgKiAxMDAwKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERhdGVcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGRheSBvZiBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERhdGUobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89PiAyOVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTtcbiAgcmV0dXJuIGRheU9mTW9udGg7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7MHwxfDJ8M3w0fDV8Nn0gdGhlIGRheSBvZiB3ZWVrLCAwIHJlcHJlc2VudHMgU3VuZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXkobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICByZXR1cm4gZGF5O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZZZWFyIGZyb20gXCIuLi9zdGFydE9mWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlPZlllYXJcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBkYXkgb2YgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgeWVhciBpcyAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheU9mWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gMTgzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIHN0YXJ0T2ZZZWFyKGRhdGUpKTtcbiAgdmFyIGRheU9mWWVhciA9IGRpZmYgKyAxO1xuICByZXR1cm4gZGF5T2ZZZWFyO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF5c0luTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGRheXMgYXJlIGluIEZlYnJ1YXJ5IDIwMDA/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXlzSW5Nb250aChuZXcgRGF0ZSgyMDAwLCAxKSlcbiAqIC8vPT4gMjlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF5c0luTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoSW5kZXggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKDApO1xuICBsYXN0RGF5T2ZNb250aC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aEluZGV4ICsgMSwgMCk7XG4gIGxhc3REYXlPZk1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gbGFzdERheU9mTW9udGguZ2V0RGF0ZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzTGVhcFllYXIgZnJvbSBcIi4uL2lzTGVhcFllYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERheXNJblllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZGF5cyBhcmUgaW4gMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheXNJblllYXIobmV3IERhdGUoMjAxMiwgMCwgMSkpXG4gKiAvLz0+IDM2NlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXlzSW5ZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKFN0cmluZyhuZXcgRGF0ZShkYXRlKSkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICByZXR1cm4gaXNMZWFwWWVhcihkYXRlKSA/IDM2NiA6IDM2NTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRlY2FkZSBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGVjYWRlIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHllYXIgb2YgZGVjYWRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGVjYWRlIGJlbG9uZ3MgMjcgTm92ZW1iZXIgMTk0Mj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERlY2FkZShuZXcgRGF0ZSgxOTQyLCAxMCwgMjcpKVxuICogLy89PiAxOTQwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIHJldHVybiBkZWNhZGU7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgYXMgZ2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREZWZhdWx0T3B0aW9uc1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgZGVmYXVsdCBvcHRpb25zLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgZGVmYXVsdHMgZm9yXG4gKiBgb3B0aW9ucy5sb2NhbGVgLCBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgXG4gKiBhcmd1bWVudHMgZm9yIGFsbCBmdW5jdGlvbnMuXG4gKlxuICogWW91IGNhbiBjaGFuZ2UgdGhlc2Ugd2l0aCBbc2V0RGVmYXVsdE9wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0RGVmYXVsdE9wdGlvbnN9LlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IGRlZmF1bHQgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSBnZXREZWZhdWx0T3B0aW9ucygpXG4gKiAvLz0+IHt9XG4gKlxuICogQGV4YW1wbGVcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJzT246IDEsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogY29uc3QgcmVzdWx0ID0gZ2V0RGVmYXVsdE9wdGlvbnMoKVxuICogLy89PiB7IHdlZWtTdGFyc09uOiAxLCBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGFzc2lnbih7fSwgZ2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucygpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGhvdXJzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBob3VycyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgaG91cnMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldEhvdXJzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUpKVxuICogLy89PiAxMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIb3VycyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgcmV0dXJuIGhvdXJzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0SVNPRGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBpcyA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSBldGMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGRheSBvZiBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgSVNPIHdlZWsgaXMgMjYgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT0RheShuZXcgRGF0ZSgyMDEyLCAxLCAyNikpXG4gKiAvLz0+IDdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPRGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIGlmIChkYXkgPT09IDApIHtcbiAgICBkYXkgPSA3O1xuICB9XG4gIHJldHVybiBkYXk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZ2V0SVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIElTTy13ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPV2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gNTNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZklTT1dlZWsoZGF0ZSkuZ2V0VGltZSgpIC0gc3RhcnRPZklTT1dlZWtZZWFyKGRhdGUpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBJU08td2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiAyMDA0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhcik7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsImltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFdlZWtzIGZyb20gXCIuLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRJU09XZWVrc0luWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBJU08gd2Vla3MgaW4gYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgd2Vla3MgYXJlIGluIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRJU09XZWVrc0luWWVhcihuZXcgRGF0ZSgyMDE1LCAxLCAxMSkpXG4gKiAvLz0+IDUzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHRoaXNZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBuZXh0WWVhciA9IHN0YXJ0T2ZJU09XZWVrWWVhcihhZGRXZWVrcyh0aGlzWWVhciwgNjApKTtcbiAgdmFyIGRpZmYgPSBuZXh0WWVhci52YWx1ZU9mKCkgLSB0aGlzWWVhci52YWx1ZU9mKCk7XG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0TWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtaWxsaXNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbGxpc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIG1pbGxpc2Vjb25kcyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1LjEyMzpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1LCAxMjMpKVxuICogLy89PiAxMjNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gIHJldHVybiBtaWxsaXNlY29uZHM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBtaW51dGVzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDU6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNaW51dGVzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUpKVxuICogLy89PiA0NVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNaW51dGVzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgcmV0dXJuIG1pbnV0ZXM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1vbnRoKG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgcmV0dXJuIG1vbnRoO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fREFZID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFsc1xuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgdGhhdCBvdmVybGFwIGluIHR3byB0aW1lIGludGVydmFsc1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IG92ZXJsYXAgaW4gdHdvIHRpbWUgaW50ZXJ2YWxzXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxMZWZ0IC0gdGhlIGZpcnN0IGludGVydmFsIHRvIGNvbXBhcmUuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGRvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbFJpZ2h0IC0gdGhlIHNlY29uZCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBkb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIHRoYXQgb3ZlcmxhcCBpbiB0d28gdGltZSBpbnRlcnZhbHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIG92ZXJsYXBwaW5nIHRpbWUgaW50ZXJ2YWxzIGFkZHMgMSBmb3IgZWFjaCBzdGFydGVkIG92ZXJsYXBwaW5nIGRheTpcbiAqIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDE3KSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSkgfVxuICogKVxuICogLy89PiAzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBub24tb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHMgcmV0dXJucyAwOlxuICogZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjEpLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIyKSB9XG4gKiApXG4gKiAvLz0+IDBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyhkaXJ0eUludGVydmFsTGVmdCwgZGlydHlJbnRlcnZhbFJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWxMZWZ0ID0gZGlydHlJbnRlcnZhbExlZnQgfHwge307XG4gIHZhciBpbnRlcnZhbFJpZ2h0ID0gZGlydHlJbnRlcnZhbFJpZ2h0IHx8IHt9O1xuICB2YXIgbGVmdFN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbExlZnQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIGxlZnRFbmRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdC5lbmQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsUmlnaHQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0RW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbFJpZ2h0LmVuZCkuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKGxlZnRTdGFydFRpbWUgPD0gbGVmdEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGlzT3ZlcmxhcHBpbmcgPSBsZWZ0U3RhcnRUaW1lIDwgcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDwgbGVmdEVuZFRpbWU7XG4gIGlmICghaXNPdmVybGFwcGluZykge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBvdmVybGFwU3RhcnREYXRlID0gcmlnaHRTdGFydFRpbWUgPCBsZWZ0U3RhcnRUaW1lID8gbGVmdFN0YXJ0VGltZSA6IHJpZ2h0U3RhcnRUaW1lO1xuICB2YXIgb3ZlcmxhcEVuZERhdGUgPSByaWdodEVuZFRpbWUgPiBsZWZ0RW5kVGltZSA/IGxlZnRFbmRUaW1lIDogcmlnaHRFbmRUaW1lO1xuICB2YXIgZGlmZmVyZW5jZUluTXMgPSBvdmVybGFwRW5kRGF0ZSAtIG92ZXJsYXBTdGFydERhdGU7XG4gIHJldHVybiBNYXRoLmNlaWwoZGlmZmVyZW5jZUluTXMgLyBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgeWVhciBxdWFydGVyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSB5ZWFyIHF1YXJ0ZXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHF1YXJ0ZXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgcXVhcnRlciA9IE1hdGguZmxvb3IoZGF0ZS5nZXRNb250aCgpIC8gMykgKyAxO1xuICByZXR1cm4gcXVhcnRlcjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIHNlY29uZHMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNS4xMjM6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRTZWNvbmRzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUsIDEyMykpXG4gKiAvLz0+IDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2Vjb25kcyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gIHJldHVybiBzZWNvbmRzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0VGltZVxuICogQGNhdGVnb3J5IFRpbWVzdGFtcCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgdGltZXN0YW1wXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSB0aW1lc3RhbXAgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNS4xMjM6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRUaW1lKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUsIDEyMykpXG4gKiAvLz0+IDEzMzA1MTU5MDUxMjNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGltZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgcmV0dXJuIHRpbWVzdGFtcDtcbn0iLCJpbXBvcnQgZ2V0VGltZSBmcm9tIFwiLi4vZ2V0VGltZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0VW5peFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lc3RhbXAgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBzZWNvbmRzIHRpbWVzdGFtcCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgdGltZXN0YW1wXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSB0aW1lc3RhbXAgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNSBDRVQ6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRVbml4VGltZShuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1KSlcbiAqIC8vPT4gMTMzMDUxMjMwNVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVbml4VGltZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGdldFRpbWUoZGlydHlEYXRlKSAvIDEwMDApO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiAyXG4gKlxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbG9jYWwgd2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiA1M1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKSAtIHN0YXJ0T2ZXZWVrWWVhcihkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERhdGUgZnJvbSBcIi4uL2dldERhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXkgZnJvbSBcIi4uL2dldERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZNb250aCBmcm9tIFwiLi4vc3RhcnRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0V2Vla09mTW9udGhcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgd2VlayBvZiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHdlZWsgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgd2VlayBvZiBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIG1vbnRoIGlzIDkgTm92ZW1iZXIgMjAxNz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtPZk1vbnRoKG5ldyBEYXRlKDIwMTcsIDEwLCA5KSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrT2ZNb250aChkYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgY3VycmVudERheU9mTW9udGggPSBnZXREYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oY3VycmVudERheU9mTW9udGgpKSByZXR1cm4gTmFOO1xuICB2YXIgc3RhcnRXZWVrRGF5ID0gZ2V0RGF5KHN0YXJ0T2ZNb250aChkYXRlKSk7XG4gIHZhciBsYXN0RGF5T2ZGaXJzdFdlZWsgPSB3ZWVrU3RhcnRzT24gLSBzdGFydFdlZWtEYXk7XG4gIGlmIChsYXN0RGF5T2ZGaXJzdFdlZWsgPD0gMCkgbGFzdERheU9mRmlyc3RXZWVrICs9IDc7XG4gIHZhciByZW1haW5pbmdEYXlzQWZ0ZXJGaXJzdFdlZWsgPSBjdXJyZW50RGF5T2ZNb250aCAtIGxhc3REYXlPZkZpcnN0V2VlaztcbiAgcmV0dXJuIE1hdGguY2VpbChyZW1haW5pbmdEYXlzQWZ0ZXJGaXJzdFdlZWsgLyA3KSArIDE7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0V2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSlcbiAqIC8vPT4gMjAwNVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgd2VlayBzdGFydHMgb24gU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IHdlZWtTdGFydHNPbjogNiB9KVxuICogLy89PiAyMDA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB0aGUgZmlyc3Qgd2VlayBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogLy89PiAyMDA0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGZpcnN0V2Vla09mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mTmV4dFllYXIsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsImltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgbGFzdERheU9mTW9udGggZnJvbSBcIi4uL2xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZk1vbnRoIGZyb20gXCIuLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFdlZWtzSW5Nb250aFxuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgYSBtb250aCBzcGFucy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIHRoZSBtb250aCBpbiB0aGUgZ2l2ZW4gZGF0ZSBzcGFucy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciB3ZWVrcyBkb2VzIEZlYnJ1YXJ5IDIwMTUgc3Bhbj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtzSW5Nb250aChuZXcgRGF0ZSgyMDE1LCAxLCA4KSlcbiAqIC8vPT4gNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LFxuICogLy8gaG93IG1hbnkgY2FsZW5kYXIgd2Vla3MgZG9lcyBKdWx5IDIwMTcgc3Bhbj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtzSW5Nb250aChuZXcgRGF0ZSgyMDE3LCA2LCA1KSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gNlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrc0luTW9udGgoZGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MobGFzdERheU9mTW9udGgoZGF0ZSksIHN0YXJ0T2ZNb250aChkYXRlKSwgb3B0aW9ucykgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0WWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB5ZWFyIGlzIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0WWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gMjAxNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaG91cnNUb01pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5ICBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgaG91cnMgdG8gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBob3VycyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaG91cnMgLSBudW1iZXIgb2YgaG91cnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBob3VycyBjb252ZXJ0ZWQgdG8gbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIGhvdXJzIHRvIG1pbGxpc2Vjb25kczpcbiAqIGNvbnN0IHJlc3VsdCA9IGhvdXJzVG9NaWxsaXNlY29uZHMoMilcbiAqIC8vPT4gNzIwMDAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBob3Vyc1RvTWlsbGlzZWNvbmRzKGhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3VycyAqIG1pbGxpc2Vjb25kc0luSG91cik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbnV0ZXNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGhvdXJzVG9NaW51dGVzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGhvdXJzIHRvIG1pbnV0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIGhvdXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaG91cnMgLSBudW1iZXIgb2YgaG91cnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBob3VycyBjb252ZXJ0ZWQgaW4gbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBob3VycyB0byBtaW51dGVzOlxuICogY29uc3QgcmVzdWx0ID0gaG91cnNUb01pbnV0ZXMoMilcbiAqIC8vPT4gMTIwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhvdXJzVG9NaW51dGVzKGhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3VycyAqIG1pbnV0ZXNJbkhvdXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBob3Vyc1RvU2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBob3VycyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBob3VycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGhvdXJzIC0gbnVtYmVyIG9mIGhvdXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgaG91cnMgY29udmVydGVkIGluIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgaG91cnMgdG8gc2Vjb25kczpcbiAqIGNvbnN0IHJlc3VsdCA9IGhvdXJzVG9TZWNvbmRzKDIpXG4gKiAvLz0+IDcyMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaG91cnNUb1NlY29uZHMoaG91cnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzICogc2Vjb25kc0luSG91cik7XG59IiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGBzY3JpcHRzL2J1aWxkL2luZGljZXMudHNgLiBQbGVhc2UsIGRvbid0IGNoYW5nZSBpdC5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkIH0gZnJvbSBcIi4vYWRkL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZEJ1c2luZXNzRGF5cyB9IGZyb20gXCIuL2FkZEJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRIb3VycyB9IGZyb20gXCIuL2FkZEhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZElTT1dlZWtZZWFycyB9IGZyb20gXCIuL2FkZElTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkTWludXRlcyB9IGZyb20gXCIuL2FkZE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkTW9udGhzIH0gZnJvbSBcIi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZFF1YXJ0ZXJzIH0gZnJvbSBcIi4vYWRkUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkU2Vjb25kcyB9IGZyb20gXCIuL2FkZFNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkV2Vla3MgfSBmcm9tIFwiLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRZZWFycyB9IGZyb20gXCIuL2FkZFllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFyZUludGVydmFsc092ZXJsYXBwaW5nIH0gZnJvbSBcIi4vYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xhbXAgfSBmcm9tIFwiLi9jbGFtcC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9zZXN0SW5kZXhUbyB9IGZyb20gXCIuL2Nsb3Nlc3RJbmRleFRvL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb3Nlc3RUbyB9IGZyb20gXCIuL2Nsb3Nlc3RUby9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wYXJlQXNjIH0gZnJvbSBcIi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wYXJlRGVzYyB9IGZyb20gXCIuL2NvbXBhcmVEZXNjL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRheXNUb1dlZWtzIH0gZnJvbSBcIi4vZGF5c1RvV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluSG91cnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbk1pbnV0ZXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbk1vbnRocyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5RdWFydGVycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJblNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbldlZWtzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoRGF5T2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hEYXlPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hIb3VyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hIb3VyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoTWludXRlT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hNaW51dGVPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hNb250aE9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoTW9udGhPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hRdWFydGVyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hRdWFydGVyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla09mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoV2Vla09mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFdlZWtlbmRPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hXZWVrZW5kT2ZNb250aCB9IGZyb20gXCIuL2VhY2hXZWVrZW5kT2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla2VuZE9mWWVhciB9IGZyb20gXCIuL2VhY2hXZWVrZW5kT2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hZZWFyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hZZWFyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZkRheSB9IGZyb20gXCIuL2VuZE9mRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mRGVjYWRlIH0gZnJvbSBcIi4vZW5kT2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZIb3VyIH0gZnJvbSBcIi4vZW5kT2ZIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mSVNPV2VlayB9IGZyb20gXCIuL2VuZE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZklTT1dlZWtZZWFyIH0gZnJvbSBcIi4vZW5kT2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZk1pbnV0ZSB9IGZyb20gXCIuL2VuZE9mTWludXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mTW9udGggfSBmcm9tIFwiLi9lbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mUXVhcnRlciB9IGZyb20gXCIuL2VuZE9mUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlNlY29uZCB9IGZyb20gXCIuL2VuZE9mU2Vjb25kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mVG9kYXkgfSBmcm9tIFwiLi9lbmRPZlRvZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mVG9tb3Jyb3cgfSBmcm9tIFwiLi9lbmRPZlRvbW9ycm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mV2VlayB9IGZyb20gXCIuL2VuZE9mV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlllYXIgfSBmcm9tIFwiLi9lbmRPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZZZXN0ZXJkYXkgfSBmcm9tIFwiLi9lbmRPZlllc3RlcmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXQgfSBmcm9tIFwiLi9mb3JtYXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RGlzdGFuY2UgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREaXN0YW5jZVN0cmljdCB9IGZyb20gXCIuL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlVG9Ob3cgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZVRvTm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdER1cmF0aW9uIH0gZnJvbSBcIi4vZm9ybWF0RHVyYXRpb24vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0SVNPIH0gZnJvbSBcIi4vZm9ybWF0SVNPL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdElTTzkwNzUgfSBmcm9tIFwiLi9mb3JtYXRJU085MDc1L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdElTT0R1cmF0aW9uIH0gZnJvbSBcIi4vZm9ybWF0SVNPRHVyYXRpb24vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UkZDMzMzOSB9IGZyb20gXCIuL2Zvcm1hdFJGQzMzMzkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UkZDNzIzMSB9IGZyb20gXCIuL2Zvcm1hdFJGQzcyMzEvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UmVsYXRpdmUgfSBmcm9tIFwiLi9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmcm9tVW5peFRpbWUgfSBmcm9tIFwiLi9mcm9tVW5peFRpbWUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF0ZSB9IGZyb20gXCIuL2dldERhdGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF5IH0gZnJvbSBcIi4vZ2V0RGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheU9mWWVhciB9IGZyb20gXCIuL2dldERheU9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXlzSW5Nb250aCB9IGZyb20gXCIuL2dldERheXNJbk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheXNJblllYXIgfSBmcm9tIFwiLi9nZXREYXlzSW5ZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERlY2FkZSB9IGZyb20gXCIuL2dldERlY2FkZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL2dldERlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEhvdXJzIH0gZnJvbSBcIi4vZ2V0SG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPRGF5IH0gZnJvbSBcIi4vZ2V0SVNPRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT1dlZWsgfSBmcm9tIFwiLi9nZXRJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT1dlZWtZZWFyIH0gZnJvbSBcIi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPV2Vla3NJblllYXIgfSBmcm9tIFwiLi9nZXRJU09XZWVrc0luWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9nZXRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0TWludXRlcyB9IGZyb20gXCIuL2dldE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0TW9udGggfSBmcm9tIFwiLi9nZXRNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyB9IGZyb20gXCIuL2dldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFF1YXJ0ZXIgfSBmcm9tIFwiLi9nZXRRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFNlY29uZHMgfSBmcm9tIFwiLi9nZXRTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFRpbWUgfSBmcm9tIFwiLi9nZXRUaW1lL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFVuaXhUaW1lIH0gZnJvbSBcIi4vZ2V0VW5peFRpbWUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2VlayB9IGZyb20gXCIuL2dldFdlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2Vla09mTW9udGggfSBmcm9tIFwiLi9nZXRXZWVrT2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXZWVrWWVhciB9IGZyb20gXCIuL2dldFdlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdlZWtzSW5Nb250aCB9IGZyb20gXCIuL2dldFdlZWtzSW5Nb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRZZWFyIH0gZnJvbSBcIi4vZ2V0WWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBob3Vyc1RvTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vaG91cnNUb01pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBob3Vyc1RvTWludXRlcyB9IGZyb20gXCIuL2hvdXJzVG9NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhvdXJzVG9TZWNvbmRzIH0gZnJvbSBcIi4vaG91cnNUb1NlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW50ZXJ2YWxUb0R1cmF0aW9uIH0gZnJvbSBcIi4vaW50ZXJ2YWxUb0R1cmF0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGxGb3JtYXQgfSBmcm9tIFwiLi9pbnRsRm9ybWF0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGxGb3JtYXREaXN0YW5jZSB9IGZyb20gXCIuL2ludGxGb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FmdGVyIH0gZnJvbSBcIi4vaXNBZnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0JlZm9yZSB9IGZyb20gXCIuL2lzQmVmb3JlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRGF0ZSB9IGZyb20gXCIuL2lzRGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VxdWFsIH0gZnJvbSBcIi4vaXNFcXVhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0V4aXN0cyB9IGZyb20gXCIuL2lzRXhpc3RzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRmlyc3REYXlPZk1vbnRoIH0gZnJvbSBcIi4vaXNGaXJzdERheU9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGcmlkYXkgfSBmcm9tIFwiLi9pc0ZyaWRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0Z1dHVyZSB9IGZyb20gXCIuL2lzRnV0dXJlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTGFzdERheU9mTW9udGggfSBmcm9tIFwiLi9pc0xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTGVhcFllYXIgfSBmcm9tIFwiLi9pc0xlYXBZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTWF0Y2ggfSBmcm9tIFwiLi9pc01hdGNoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTW9uZGF5IH0gZnJvbSBcIi4vaXNNb25kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNQYXN0IH0gZnJvbSBcIi4vaXNQYXN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZURheSB9IGZyb20gXCIuL2lzU2FtZURheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVIb3VyIH0gZnJvbSBcIi4vaXNTYW1lSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVJU09XZWVrIH0gZnJvbSBcIi4vaXNTYW1lSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVJU09XZWVrWWVhciB9IGZyb20gXCIuL2lzU2FtZUlTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZU1pbnV0ZSB9IGZyb20gXCIuL2lzU2FtZU1pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVNb250aCB9IGZyb20gXCIuL2lzU2FtZU1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVF1YXJ0ZXIgfSBmcm9tIFwiLi9pc1NhbWVRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVNlY29uZCB9IGZyb20gXCIuL2lzU2FtZVNlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVXZWVrIH0gZnJvbSBcIi4vaXNTYW1lV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVZZWFyIH0gZnJvbSBcIi4vaXNTYW1lWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhdHVyZGF5IH0gZnJvbSBcIi4vaXNTYXR1cmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1N1bmRheSB9IGZyb20gXCIuL2lzU3VuZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc0hvdXIgfSBmcm9tIFwiLi9pc1RoaXNIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc0lTT1dlZWsgfSBmcm9tIFwiLi9pc1RoaXNJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc01pbnV0ZSB9IGZyb20gXCIuL2lzVGhpc01pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNNb250aCB9IGZyb20gXCIuL2lzVGhpc01vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1F1YXJ0ZXIgfSBmcm9tIFwiLi9pc1RoaXNRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1NlY29uZCB9IGZyb20gXCIuL2lzVGhpc1NlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNXZWVrIH0gZnJvbSBcIi4vaXNUaGlzV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNZZWFyIH0gZnJvbSBcIi4vaXNUaGlzWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RodXJzZGF5IH0gZnJvbSBcIi4vaXNUaHVyc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RvZGF5IH0gZnJvbSBcIi4vaXNUb2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RvbW9ycm93IH0gZnJvbSBcIi4vaXNUb21vcnJvdy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1R1ZXNkYXkgfSBmcm9tIFwiLi9pc1R1ZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNWYWxpZCB9IGZyb20gXCIuL2lzVmFsaWQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXZWRuZXNkYXkgfSBmcm9tIFwiLi9pc1dlZG5lc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1dlZWtlbmQgfSBmcm9tIFwiLi9pc1dlZWtlbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXaXRoaW5JbnRlcnZhbCB9IGZyb20gXCIuL2lzV2l0aGluSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNZZXN0ZXJkYXkgfSBmcm9tIFwiLi9pc1llc3RlcmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZEZWNhZGUgfSBmcm9tIFwiLi9sYXN0RGF5T2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mSVNPV2VlayB9IGZyb20gXCIuL2xhc3REYXlPZklTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZNb250aCB9IGZyb20gXCIuL2xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZlF1YXJ0ZXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZldlZWsgfSBmcm9tIFwiLi9sYXN0RGF5T2ZXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZlllYXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4vbGlnaHRGb3JtYXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWF4IH0gZnJvbSBcIi4vbWF4L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL21pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHNUb0hvdXJzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzVG9Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHNUb01pbnV0ZXMgfSBmcm9tIFwiLi9taWxsaXNlY29uZHNUb01pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWlsbGlzZWNvbmRzVG9TZWNvbmRzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzVG9TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbiB9IGZyb20gXCIuL21pbi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW51dGVzVG9Ib3VycyB9IGZyb20gXCIuL21pbnV0ZXNUb0hvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbnV0ZXNUb01pbGxpc2Vjb25kcyB9IGZyb20gXCIuL21pbnV0ZXNUb01pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW51dGVzVG9TZWNvbmRzIH0gZnJvbSBcIi4vbWludXRlc1RvU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb250aHNUb1F1YXJ0ZXJzIH0gZnJvbSBcIi4vbW9udGhzVG9RdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb250aHNUb1llYXJzIH0gZnJvbSBcIi4vbW9udGhzVG9ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0RGF5IH0gZnJvbSBcIi4vbmV4dERheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0RnJpZGF5IH0gZnJvbSBcIi4vbmV4dEZyaWRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0TW9uZGF5IH0gZnJvbSBcIi4vbmV4dE1vbmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0U2F0dXJkYXkgfSBmcm9tIFwiLi9uZXh0U2F0dXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFN1bmRheSB9IGZyb20gXCIuL25leHRTdW5kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFRodXJzZGF5IH0gZnJvbSBcIi4vbmV4dFRodXJzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRUdWVzZGF5IH0gZnJvbSBcIi4vbmV4dFR1ZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFdlZG5lc2RheSB9IGZyb20gXCIuL25leHRXZWRuZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2UgfSBmcm9tIFwiLi9wYXJzZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUlTTyB9IGZyb20gXCIuL3BhcnNlSVNPL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlSlNPTiB9IGZyb20gXCIuL3BhcnNlSlNPTi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c0RheSB9IGZyb20gXCIuL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzRnJpZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNGcmlkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNNb25kYXkgfSBmcm9tIFwiLi9wcmV2aW91c01vbmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1NhdHVyZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNTYXR1cmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1N1bmRheSB9IGZyb20gXCIuL3ByZXZpb3VzU3VuZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzVGh1cnNkYXkgfSBmcm9tIFwiLi9wcmV2aW91c1RodXJzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzVHVlc2RheSB9IGZyb20gXCIuL3ByZXZpb3VzVHVlc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1dlZG5lc2RheSB9IGZyb20gXCIuL3ByZXZpb3VzV2VkbmVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHF1YXJ0ZXJzVG9Nb250aHMgfSBmcm9tIFwiLi9xdWFydGVyc1RvTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHF1YXJ0ZXJzVG9ZZWFycyB9IGZyb20gXCIuL3F1YXJ0ZXJzVG9ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByb3VuZFRvTmVhcmVzdE1pbnV0ZXMgfSBmcm9tIFwiLi9yb3VuZFRvTmVhcmVzdE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2Vjb25kc1RvSG91cnMgfSBmcm9tIFwiLi9zZWNvbmRzVG9Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZWNvbmRzVG9NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9zZWNvbmRzVG9NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2Vjb25kc1RvTWludXRlcyB9IGZyb20gXCIuL3NlY29uZHNUb01pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0IH0gZnJvbSBcIi4vc2V0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERhdGUgfSBmcm9tIFwiLi9zZXREYXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERheSB9IGZyb20gXCIuL3NldERheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXREYXlPZlllYXIgfSBmcm9tIFwiLi9zZXREYXlPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9zZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRIb3VycyB9IGZyb20gXCIuL3NldEhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldElTT0RheSB9IGZyb20gXCIuL3NldElTT0RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRJU09XZWVrIH0gZnJvbSBcIi4vc2V0SVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRJU09XZWVrWWVhciB9IGZyb20gXCIuL3NldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL3NldE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRNaW51dGVzIH0gZnJvbSBcIi4vc2V0TWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRNb250aCB9IGZyb20gXCIuL3NldE1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFF1YXJ0ZXIgfSBmcm9tIFwiLi9zZXRRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFNlY29uZHMgfSBmcm9tIFwiLi9zZXRTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFdlZWsgfSBmcm9tIFwiLi9zZXRXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFdlZWtZZWFyIH0gZnJvbSBcIi4vc2V0V2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0WWVhciB9IGZyb20gXCIuL3NldFllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkRheSB9IGZyb20gXCIuL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkRlY2FkZSB9IGZyb20gXCIuL3N0YXJ0T2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkhvdXIgfSBmcm9tIFwiLi9zdGFydE9mSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mSVNPV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZJU09XZWVrWWVhciB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mTWludXRlIH0gZnJvbSBcIi4vc3RhcnRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mTW9udGggfSBmcm9tIFwiLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlF1YXJ0ZXIgfSBmcm9tIFwiLi9zdGFydE9mUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mU2Vjb25kIH0gZnJvbSBcIi4vc3RhcnRPZlNlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mVG9kYXkgfSBmcm9tIFwiLi9zdGFydE9mVG9kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlRvbW9ycm93IH0gZnJvbSBcIi4vc3RhcnRPZlRvbW9ycm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZldlZWtZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlllc3RlcmRheSB9IGZyb20gXCIuL3N0YXJ0T2ZZZXN0ZXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViIH0gZnJvbSBcIi4vc3ViL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YkJ1c2luZXNzRGF5cyB9IGZyb20gXCIuL3N1YkJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJEYXlzIH0gZnJvbSBcIi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJIb3VycyB9IGZyb20gXCIuL3N1YkhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YklTT1dlZWtZZWFycyB9IGZyb20gXCIuL3N1YklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViTWludXRlcyB9IGZyb20gXCIuL3N1Yk1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViTW9udGhzIH0gZnJvbSBcIi4vc3ViTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YlF1YXJ0ZXJzIH0gZnJvbSBcIi4vc3ViUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViU2Vjb25kcyB9IGZyb20gXCIuL3N1YlNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViV2Vla3MgfSBmcm9tIFwiLi9zdWJXZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJZZWFycyB9IGZyb20gXCIuL3N1YlllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB3ZWVrc1RvRGF5cyB9IGZyb20gXCIuL3dlZWtzVG9EYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHllYXJzVG9Nb250aHMgfSBmcm9tIFwiLi95ZWFyc1RvTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHllYXJzVG9RdWFydGVycyB9IGZyb20gXCIuL3llYXJzVG9RdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBhZGQgZnJvbSBcIi4uL2FkZC9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Ib3VycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluSG91cnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaW51dGVzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5TZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluWWVhcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGludGVydmFsVG9EdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGludGVydmFsIHRvIGR1cmF0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgaW50ZXJ2YWwgb2JqZWN0IHRvIGEgZHVyYXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsIHRvIGNvbnZlcnQgdG8gZHVyYXRpb25cbiAqXG4gKiBAcmV0dXJucyB7RHVyYXRpb259IFRoZSBkdXJhdGlvbiBPYmplY3RcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gUmVxdWlyZXMgMiBhcmd1bWVudHNcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBzdGFydGAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZW5kYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBkdXJhdGlvbiBiZXR3ZWVuIEphbnVhcnkgMTUsIDE5MjkgYW5kIEFwcmlsIDQsIDE5NjguXG4gKiBpbnRlcnZhbFRvRHVyYXRpb24oe1xuICogICBzdGFydDogbmV3IERhdGUoMTkyOSwgMCwgMTUsIDEyLCAwLCAwKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgxOTY4LCAzLCA0LCAxOSwgNSwgMClcbiAqIH0pXG4gKiAvLyA9PiB7IHllYXJzOiAzOSwgbW9udGhzOiAyLCBkYXlzOiAyMCwgaG91cnM6IDcsIG1pbnV0ZXM6IDUsIHNlY29uZHM6IDAgfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbnRlcnZhbFRvRHVyYXRpb24oaW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydCA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmQgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdTdGFydCBEYXRlIGlzIGludmFsaWQnKTtcbiAgaWYgKGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRW5kIERhdGUgaXMgaW52YWxpZCcpO1xuICB2YXIgZHVyYXRpb24gPSB7fTtcbiAgZHVyYXRpb24ueWVhcnMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5ZZWFycyhlbmQsIHN0YXJ0KSk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhlbmQsIHN0YXJ0KTtcbiAgdmFyIHJlbWFpbmluZ01vbnRocyA9IGFkZChzdGFydCwge1xuICAgIHllYXJzOiBzaWduICogZHVyYXRpb24ueWVhcnNcbiAgfSk7XG4gIGR1cmF0aW9uLm1vbnRocyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbk1vbnRocyhlbmQsIHJlbWFpbmluZ01vbnRocykpO1xuICB2YXIgcmVtYWluaW5nRGF5cyA9IGFkZChyZW1haW5pbmdNb250aHMsIHtcbiAgICBtb250aHM6IHNpZ24gKiBkdXJhdGlvbi5tb250aHNcbiAgfSk7XG4gIGR1cmF0aW9uLmRheXMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5EYXlzKGVuZCwgcmVtYWluaW5nRGF5cykpO1xuICB2YXIgcmVtYWluaW5nSG91cnMgPSBhZGQocmVtYWluaW5nRGF5cywge1xuICAgIGRheXM6IHNpZ24gKiBkdXJhdGlvbi5kYXlzXG4gIH0pO1xuICBkdXJhdGlvbi5ob3VycyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkhvdXJzKGVuZCwgcmVtYWluaW5nSG91cnMpKTtcbiAgdmFyIHJlbWFpbmluZ01pbnV0ZXMgPSBhZGQocmVtYWluaW5nSG91cnMsIHtcbiAgICBob3Vyczogc2lnbiAqIGR1cmF0aW9uLmhvdXJzXG4gIH0pO1xuICBkdXJhdGlvbi5taW51dGVzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluTWludXRlcyhlbmQsIHJlbWFpbmluZ01pbnV0ZXMpKTtcbiAgdmFyIHJlbWFpbmluZ1NlY29uZHMgPSBhZGQocmVtYWluaW5nTWludXRlcywge1xuICAgIG1pbnV0ZXM6IHNpZ24gKiBkdXJhdGlvbi5taW51dGVzXG4gIH0pO1xuICBkdXJhdGlvbi5zZWNvbmRzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluU2Vjb25kcyhlbmQsIHJlbWFpbmluZ1NlY29uZHMpKTtcbiAgcmV0dXJuIGR1cmF0aW9uO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGludGxGb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgIEZvcm1hdCB0aGUgZGF0ZSB3aXRoIEludGwuRGF0ZVRpbWVGb3JtYXQgKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC5cbiAqIFRoZSBtZXRob2QgdXNlcyBbYEludGwuRGF0ZVRpbWVGb3JtYXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL0RhdGVUaW1lRm9ybWF0KSBpbnNpZGUuXG4gKiBmb3JtYXRPcHRpb25zIGFyZSB0aGUgc2FtZSBhcyBbYEludGwuRGF0ZVRpbWVGb3JtYXRgIG9wdGlvbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQjdXNpbmdfb3B0aW9ucylcbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IGJlZm9yZSBOb2RlIHZlcnNpb24gMTMuMC4wLCBvbmx5IHRoZSBsb2NhbGUgZGF0YSBmb3IgZW4tVVMgaXMgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgb3JpZ2luYWwgZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZm9ybWF0T3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHsnbG9va3VwJ3wnYmVzdCBmaXQnfSBbZm9ybWF0T3B0aW9ucy5sb2NhbGVNYXRjaGVyPSdiZXN0IGZpdCddIC0gbG9jYWxlIHNlbGVjdGlvbiBhbGdvcml0aG0uXG4gKiBAcGFyYW0geyduYXJyb3cnfCdzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy53ZWVrZGF5XSAtIHJlcHJlc2VudGF0aW9uIHRoZSBkYXlzIG9mIHRoZSB3ZWVrLlxuICogQHBhcmFtIHsnbmFycm93J3wnc2hvcnQnfCdsb25nJ30gW2Zvcm1hdE9wdGlvbnMuZXJhXSAtIHJlcHJlc2VudGF0aW9uIG9mIGVyYXMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLnllYXJdIC0gcmVwcmVzZW50YXRpb24gb2YgeWVhcnMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd8J25hcnJvdyd8J3Nob3J0J3wnbG9uZyd9IFtmb3JtYXRPcHRpb25zLm1vbnRoPSdudW1lcmljJ10gLSByZXByZXNlbnRhdGlvbiBvZiBtb250aC5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMuZGF5PSdudW1lcmljJ10gLSByZXByZXNlbnRhdGlvbiBvZiBkYXkuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLmhvdXI9J251bWVyaWMnXSAtIHJlcHJlc2VudGF0aW9uIG9mIGhvdXJzLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy5taW51dGVdIC0gcmVwcmVzZW50YXRpb24gb2YgbWludXRlcy5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMuc2Vjb25kXSAtIHJlcHJlc2VudGF0aW9uIG9mIHNlY29uZHMuXG4gKiBAcGFyYW0geydzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy50aW1lWm9uZU5hbWVdIC0gcmVwcmVzZW50YXRpb24gb2YgbmFtZXMgb2YgdGltZSB6b25lcy5cbiAqIEBwYXJhbSB7J2Jhc2ljJ3wnYmVzdCBmaXQnfSBbZm9ybWF0T3B0aW9ucy5mb3JtYXRNYXRjaGVyPSdiZXN0IGZpdCddIC0gZm9ybWF0IHNlbGVjdGlvbiBhbGdvcml0aG0uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JtYXRPcHRpb25zLmhvdXIxMl0gLSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIDEyLWhvdXIgdGltZSBmb3JtYXQuXG4gKiBAcGFyYW0ge1N0cmluZ30gW2Zvcm1hdE9wdGlvbnMudGltZVpvbmVdIC0gdGhlIHRpbWUgem9uZSB0byB1c2UuXG4gKiBAcGFyYW0ge09iamVjdH0gW2xvY2FsZU9wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggbG9jYWxlLlxuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IFtsb2NhbGVPcHRpb25zLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWQuXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkgaW4gR2VybWFuLlxuICogLy8gQ29udmVydCB0aGUgZGF0ZSB3aXRoIGZvcm1hdCdzIG9wdGlvbnMgYW5kIGxvY2FsZSdzIG9wdGlvbnMuXG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NiksIHtcbiAqICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICogICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gKiAgICAgIG1vbnRoOiAnbG9uZycsXG4gKiAgICAgIGRheTogJ251bWVyaWMnLFxuICogICAgfSwge1xuICogICAgICBsb2NhbGU6ICdkZS1ERScsXG4gKiAgfSlcbiAqIC8vPT4gRnJlaXRhZywgNC4gT2t0b2JlciAyMDE5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkuXG4gKiAvLyBDb252ZXJ0IHRoZSBkYXRlIHdpdGggZm9ybWF0J3Mgb3B0aW9ucy5cbiAqIGNvbnN0IHJlc3VsdCA9IGludGxGb3JtYXQuZGVmYXVsdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpLCB7XG4gKiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAqICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAqICAgICAgZGF5OiAnbnVtZXJpYycsXG4gKiAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAqICB9KVxuICogLy89PiAxMC80LzIwMTksIDEyIFBNXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkgaW4gS29yZWFuLlxuICogLy8gQ29udmVydCB0aGUgZGF0ZSB3aXRoIGxvY2FsZSdzIG9wdGlvbnMuXG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NiksIHtcbiAqICAgICAgbG9jYWxlOiAna28tS1InLFxuICogIH0pXG4gKiAvLz0+IDIwMTkuIDEwLiA0LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTAgT2N0b2JlciAyMDE5IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gaW50bEZvcm1hdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpKVxuICogLy89PiAxMC80LzIwMTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW50bEZvcm1hdChkYXRlLCBmb3JtYXRPckxvY2FsZSwgbG9jYWxlT3B0aW9ucykge1xuICB2YXIgX2xvY2FsZU9wdGlvbnM7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZm9ybWF0T3B0aW9ucztcbiAgaWYgKGlzRm9ybWF0T3B0aW9ucyhmb3JtYXRPckxvY2FsZSkpIHtcbiAgICBmb3JtYXRPcHRpb25zID0gZm9ybWF0T3JMb2NhbGU7XG4gIH0gZWxzZSB7XG4gICAgbG9jYWxlT3B0aW9ucyA9IGZvcm1hdE9yTG9jYWxlO1xuICB9XG4gIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgoX2xvY2FsZU9wdGlvbnMgPSBsb2NhbGVPcHRpb25zKSA9PT0gbnVsbCB8fCBfbG9jYWxlT3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xvY2FsZU9wdGlvbnMubG9jYWxlLCBmb3JtYXRPcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG59XG5mdW5jdGlvbiBpc0Zvcm1hdE9wdGlvbnMob3B0cykge1xuICByZXR1cm4gb3B0cyAhPT0gdW5kZWZpbmVkICYmICEoJ2xvY2FsZScgaW4gb3B0cyk7XG59IiwiaW1wb3J0IHsgc2Vjb25kc0luRGF5LCBzZWNvbmRzSW5Ib3VyLCBzZWNvbmRzSW5NaW51dGUsIHNlY29uZHNJbk1vbnRoLCBzZWNvbmRzSW5RdWFydGVyLCBzZWNvbmRzSW5XZWVrLCBzZWNvbmRzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluSG91cnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTWludXRlcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaW50bEZvcm1hdERpc3RhbmNlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdHMgZGlzdGFuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgYW5kIGZvcm1hdHMgaXQgYXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuXG4gKlxuICogVGhlIGZ1bmN0aW9uIHdpbGwgcGljayB0aGUgbW9zdCBhcHByb3ByaWF0ZSB1bml0IGRlcGVuZGluZyBvbiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBkYXRlcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBkaXN0YW5jZSBpcyBhIGZldyBob3VycywgaXQgbWlnaHQgcmV0dXJuIGB4IGhvdXJzYC4gSWYgdGhlIGRpc3RhbmNlIGlzIGEgZmV3IG1vbnRocywgaXQgbWlnaHQgcmV0dXJuIGB4IG1vbnRoc2AuXG4gKlxuICogWW91IGNhbiBhbHNvIHNwZWNpZnkgYSB1bml0IHRvIGZvcmNlIHVzaW5nIGl0IHJlZ2FyZGxlc3Mgb2YgdGhlIGRpc3RhbmNlIHRvIGdldCBhIHJlc3VsdCBsaWtlIGAxMjM0NTYgaG91cnNgLlxuICpcbiAqIFNlZSB0aGUgdGFibGUgYmVsb3cgZm9yIHRoZSB1bml0IHBpY2tpbmcgbG9naWM6XG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0IChwYXN0KSAgfCBSZXN1bHQgKGZ1dHVyZSkgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfFxuICogfCAwIHNlY29uZHMgICAgICAgICAgICAgIHwgbm93ICAgICAgICAgICAgfCBub3cgICAgICAgICAgICAgfFxuICogfCAxLTU5IHNlY29uZHMgICAgICAgICAgIHwgWCBzZWNvbmRzIGFnbyAgfCBpbiBYIHNlY29uZHMgICAgfFxuICogfCAxLTU5IG1pbnV0ZXMgICAgICAgICAgIHwgWCBtaW51dGVzIGFnbyAgfCBpbiBYIG1pbnV0ZXMgICAgfFxuICogfCAxLTIzIGhvdXJzICAgICAgICAgICAgIHwgWCBob3VycyBhZ28gICAgfCBpbiBYIGhvdXJzICAgICAgfFxuICogfCAxIGRheSAgICAgICAgICAgICAgICAgIHwgeWVzdGVyZGF5ICAgICAgfCB0b21vcnJvdyAgICAgICAgfFxuICogfCAyLTYgZGF5cyAgICAgICAgICAgICAgIHwgWCBkYXlzIGFnbyAgICAgfCBpbiBYIGRheXMgICAgICAgfFxuICogfCA3IGRheXMgICAgICAgICAgICAgICAgIHwgbGFzdCB3ZWVrICAgICAgfCBuZXh0IHdlZWsgICAgICAgfFxuICogfCA4IGRheXMtMSBtb250aCAgICAgICAgIHwgWCB3ZWVrcyBhZ28gICAgfCBpbiBYIHdlZWtzICAgICAgfFxuICogfCAxIG1vbnRoICAgICAgICAgICAgICAgIHwgbGFzdCBtb250aCAgICAgfCBuZXh0IG1vbnRoICAgICAgfFxuICogfCAyLTMgbW9udGhzICAgICAgICAgICAgIHwgWCBtb250aHMgYWdvICAgfCBpbiBYIG1vbnRocyAgICAgfFxuICogfCAxIHF1YXJ0ZXIgICAgICAgICAgICAgIHwgbGFzdCBxdWFydGVyICAgfCBuZXh0IHF1YXJ0ZXIgICAgfFxuICogfCAyLTMgcXVhcnRlcnMgICAgICAgICAgIHwgWCBxdWFydGVycyBhZ28gfCBpbiBYIHF1YXJ0ZXJzICAgfFxuICogfCAxIHllYXIgICAgICAgICAgICAgICAgIHwgbGFzdCB5ZWFyICAgICAgfCBuZXh0IHllYXIgICAgICAgfFxuICogfCAyKyB5ZWFycyAgICAgICAgICAgICAgIHwgWCB5ZWFycyBhZ28gICAgfCBpbiBYIHllYXJzICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYmFzZURhdGUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGguXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy51bml0XSAtIGZvcm1hdHMgdGhlIGRpc3RhbmNlIHdpdGggdGhlIGdpdmVuIHVuaXQgKCd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJykuXG4gKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gW29wdGlvbnMubG9jYWxlXSAtIHRoZSBsb2NhbGUgdG8gdXNlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmxvY2FsZU1hdGNoZXI9J2Jlc3QgZml0J10gLSB0aGUgbG9jYWxlIG1hdGNoaW5nIGFsZ29yaXRobSB0byB1c2UuIE90aGVyIHZhbHVlOiAnbG9va3VwJy5cbiAqIFNlZSBNRE4gZm9yIGRldGFpbHMgW0xvY2FsZSBpZGVudGlmaWNhdGlvbiBhbmQgbmVnb3RpYXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwjbG9jYWxlX2lkZW50aWZpY2F0aW9uX2FuZF9uZWdvdGlhdGlvbilcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5udW1lcmljPSdhdXRvJ10gLSB0aGUgb3V0cHV0IG1lc3NhZ2UgZm9ybWF0LiBUaGUgdmFsdWVzIGFyZSAnYXV0bycgKGUuZy4gYHllc3RlcmRheWApLCAnYWx3YXlzJyhlLmcuIGAxIGRheSBhZ29gKS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5zdHlsZT0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0LiBUaGUgdmFsdWVzIGFyZTogJ2xvbmcnIChlLmcuIGAxIG1vbnRoYCksICdzaG9ydCcgKGUuZy4gJ2luIDEgbW8uJyksICduYXJyb3cnIChlLmcuICdpbiAxIG1vLicpLlxuICogVGhlIG5hcnJvdyBvbmUgY291bGQgYmUgc2ltaWxhciB0byB0aGUgc2hvcnQgb25lIGZvciBzb21lIGxvY2FsZXMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHMgYWNjb3JkaW5nIHRvIGxhbmd1YWdlLXNlbnNpdGl2ZSByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMudW5pdGAgbXVzdCBub3QgYmUgaW52YWxpZCBVbml0XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3Qgbm90IGJlIGludmFsaWQgbG9jYWxlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVNYXRjaGVyYCBtdXN0IG5vdCBiZSBpbnZhbGlkIGxvY2FsZU1hdGNoZXJcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLm51bWVyaWNgIG11c3Qgbm90IGJlIGludmFsaWQgbnVtZXJpY1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3R5bGVgIG11c3Qgbm90IGJlIGludmFsaWQgc3R5bGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZGF0ZXMgd2hlbiB0aGUgZmlzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQ/XG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMClcbiAqIClcbiAqIC8vPT4gJ2luIDEgaG91cidcbiAqXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBkYXRlcyB3aGVuIHRoZSBmaXN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQ/XG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMClcbiAqIClcbiAqIC8vPT4gJzEgaG91ciBhZ28nXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgdW5pdCBvcHRpb24gdG8gZm9yY2UgdGhlIGZ1bmN0aW9uIHRvIG91dHB1dCB0aGUgcmVzdWx0IGluIHF1YXJ0ZXJzLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcIm5leHQgeWVhclwiXG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDYsIDQsIDEwLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMCksXG4gKiAgIHsgdW5pdDogJ3F1YXJ0ZXInIH1cbiAqIClcbiAqIC8vPT4gJ2luIDUgcXVhcnRlcnMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgbG9jYWxlIG9wdGlvbiB0byBnZXQgdGhlIHJlc3VsdCBpbiBTcGFuaXNoLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcImluIDEgaG91clwiLlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMCwgMzAsIDApLFxuICogICB7IGxvY2FsZTogJ2VzJyB9XG4gKiApXG4gKiAvLz0+ICdkZW50cm8gZGUgMSBob3JhJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2UgdGhlIG51bWVyaWMgb3B0aW9uIHRvIGZvcmNlIHRoZSBmdW5jdGlvbiB0byB1c2UgbnVtZXJpYyB2YWx1ZXMuIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwidG9tb3Jyb3dcIi5cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNSwgMTEsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgeyBudW1lcmljOiAnYWx3YXlzJyB9XG4gKiApXG4gKiAvLz0+ICdpbiAxIGRheSdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNlIHRoZSBzdHlsZSBvcHRpb24gdG8gZm9yY2UgdGhlIGZ1bmN0aW9uIHRvIHVzZSBzaG9ydCB2YWx1ZXMuIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwiaW4gMiB5ZWFyc1wiLlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg4LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICB7IHN0eWxlOiAnc2hvcnQnIH1cbiAqIClcbiAqIC8vPT4gJ2luIDIgeXInXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGxGb3JtYXREaXN0YW5jZShkYXRlLCBiYXNlRGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHZhbHVlID0gMDtcbiAgdmFyIHVuaXQ7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkYXRlKTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShiYXNlRGF0ZSk7XG4gIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudW5pdCkpIHtcbiAgICAvLyBHZXQgdGhlIHVuaXQgYmFzZWQgb24gZGlmZkluU2Vjb25kcyBjYWxjdWxhdGlvbnMgaWYgbm8gdW5pdCBpcyBzcGVjaWZpZWRcbiAgICB2YXIgZGlmZkluU2Vjb25kcyA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7IC8vIFRoZSBzbWFsbGVzdCB1bml0XG5cbiAgICBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5NaW51dGUpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luSG91cikge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICdtaW51dGUnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5EYXkgJiYgTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKSA8IDEpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ2hvdXInO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5XZWVrICYmICh2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSkgJiYgTWF0aC5hYnModmFsdWUpIDwgNykge1xuICAgICAgdW5pdCA9ICdkYXknO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5Nb250aCkge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICd3ZWVrJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luUXVhcnRlcikge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5ZZWFyKSB7XG4gICAgICBpZiAoZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA8IDQpIHtcbiAgICAgICAgLy8gVG8gZmlsdGVyIG91dCBjYXNlcyB0aGF0IGFyZSBsZXNzIHRoYW4gYSB5ZWFyIGJ1dCBtYXRjaCA0IHF1YXJ0ZXJzXG4gICAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgICAgdW5pdCA9ICdxdWFydGVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSB2YWx1ZSBpZiB1bml0IGlzIHNwZWNpZmllZFxuICAgIHVuaXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudW5pdDtcbiAgICBpZiAodW5pdCA9PT0gJ3NlY29uZCcpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtaW51dGUnKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnaG91cicpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnZGF5Jykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnd2VlaycpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtb250aCcpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAncXVhcnRlcicpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICd5ZWFyJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH1cbiAgfVxuICB2YXIgcnRmID0gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUsIHtcbiAgICBsb2NhbGVNYXRjaGVyOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlTWF0Y2hlcixcbiAgICBudW1lcmljOiAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm51bWVyaWMpIHx8ICdhdXRvJyxcbiAgICBzdHlsZTogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0eWxlXG4gIH0pO1xuICByZXR1cm4gcnRmLmZvcm1hdCh2YWx1ZSwgdW5pdCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0FmdGVyXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRoYXQgc2hvdWxkIGJlIGFmdGVyIHRoZSBvdGhlciBvbmUgdG8gcmV0dXJuIHRydWVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZmlyc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMTAgSnVseSAxOTg5IGFmdGVyIDExIEZlYnJ1YXJ5IDE5ODc/XG4gKiBjb25zdCByZXN1bHQgPSBpc0FmdGVyKG5ldyBEYXRlKDE5ODksIDYsIDEwKSwgbmV3IERhdGUoMTk4NywgMSwgMTEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQWZ0ZXIoZGlydHlEYXRlLCBkaXJ0eURhdGVUb0NvbXBhcmUpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA+IGRhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNCZWZvcmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGZpcnN0IGRhdGUgYmVmb3JlIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYmVmb3JlIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBiZWZvcmUgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMTAgSnVseSAxOTg5IGJlZm9yZSAxMSBGZWJydWFyeSAxOTg3P1xuICogY29uc3QgcmVzdWx0ID0gaXNCZWZvcmUobmV3IERhdGUoMTk4OSwgNiwgMTApLCBuZXcgRGF0ZSgxOTg3LCAxLCAxMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQmVmb3JlKGRpcnR5RGF0ZSwgZGlydHlEYXRlVG9Db21wYXJlKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPCBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIHZhbHVlIGEgZGF0ZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZS4gVGhlIGZ1bmN0aW9uIHdvcmtzIGZvciBkYXRlcyB0cmFuc2ZlcnJlZCBhY3Jvc3MgaWZyYW1lcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKE5hTikpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHNvbWUgdmFsdWU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoJzIwMTQtMDItMzEnKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gb2JqZWN0OlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKHt9KVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0RhdGUodmFsdWUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGVdJztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRXF1YWxcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBlcXVhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgZXF1YWw/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgZXF1YWxcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDIgSnVseSAyMDE0IDA2OjMwOjQ1LjAwMCBhbmQgMiBKdWx5IDIwMTQgMDY6MzA6NDUuNTAwIGVxdWFsP1xuICogY29uc3QgcmVzdWx0ID0gaXNFcXVhbChcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgMzAsIDQ1LCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgMzAsIDQ1LCA1MDApXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRXF1YWwoZGlydHlMZWZ0RGF0ZSwgZGlydHlSaWdodERhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eUxlZnREYXRlKTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eVJpZ2h0RGF0ZSk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRUaW1lKCkgPT09IGRhdGVSaWdodC5nZXRUaW1lKCk7XG59IiwiLyoqXG4gKiBAbmFtZSBpc0V4aXN0c1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBleGlzdHM/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBjb252ZXJ0IHRvIGFuIGV4aXN0aW5nIGRhdGUuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHllYXIgb2YgdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7TnVtYmVyfSBtb250aCBvZiB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtOdW1iZXJ9IGRheSBvZiB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGV4aXN0c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAzIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0V4aXN0cygyMDE4LCAwLCAzMSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRXhpc3RzKDIwMTgsIDEsIDMxKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0V4aXN0cyh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzMgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0ZpcnN0RGF5T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0aGUgZmlyc3QgZGF5IG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxIFNlcHRlbWJlciAyMDE0IHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRmlyc3REYXlPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRmlyc3REYXlPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERhdGUoKSA9PT0gMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRnJpZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBGcmlkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBGcmlkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgRnJpZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjYgU2VwdGVtYmVyIDIwMTQgRnJpZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNGcmlkYXkobmV3IERhdGUoMjAxNCwgOCwgMjYpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRnJpZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSA1O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNGdXR1cmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGZ1dHVyZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgZnV0dXJlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGUgZnV0dXJlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDMxIERlY2VtYmVyIDIwMTQgaW4gdGhlIGZ1dHVyZT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRnV0dXJlKG5ldyBEYXRlKDIwMTQsIDExLCAzMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGdXR1cmUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0VGltZSgpID4gRGF0ZS5ub3coKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZkRheSBmcm9tIFwiLi4vZW5kT2ZEYXkvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZk1vbnRoIGZyb20gXCIuLi9lbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0xhc3REYXlPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0aGUgbGFzdCBkYXkgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI4IEZlYnJ1YXJ5IDIwMTQgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc0xhc3REYXlPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDEsIDI4KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xhc3REYXlPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgcmV0dXJuIGVuZE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gZW5kT2ZNb250aChkYXRlKS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0xlYXBZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgbGVhcCB5ZWFyP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGxlYXAgeWVhcj9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGUgbGVhcCB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMSBTZXB0ZW1iZXIgMjAxMiBpbiB0aGUgbGVhcCB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNMZWFwWWVhcihuZXcgRGF0ZSgyMDEyLCA4LCAxKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xlYXBZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDA7XG59IiwiaW1wb3J0IHBhcnNlIGZyb20gXCIuLi9wYXJzZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzTWF0Y2hcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgdmFsaWRhdGVzIHRoZSBkYXRlIHN0cmluZyBhZ2FpbnN0IGdpdmVuIGZvcm1hdHNcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgdHJ1ZSBpZiBnaXZlbiBkYXRlIGlzIHN0cmluZyBjb3JyZWN0IGFnYWluc3QgdGhlIGdpdmVuIGZvcm1hdCBlbHNlXG4gKiB3aWxsIHJldHVybiBmYWxzZS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgZm9ybWF0IHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNSBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIE5vdCBhbGwgdG9rZW5zIGFyZSBjb21wYXRpYmxlLiBDb21iaW5hdGlvbnMgdGhhdCBkb24ndCBtYWtlIHNlbnNlIG9yIGNvdWxkIGxlYWQgdG8gYnVncyBhcmUgcHJvaGliaXRlZFxuICogYW5kIHdpbGwgdGhyb3cgYFJhbmdlRXJyb3JgLiBGb3IgZXhhbXBsZSB1c2FnZSBvZiAyNC1ob3VyIGZvcm1hdCB0b2tlbiB3aXRoIEFNL1BNIHRva2VuIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGlzTWF0Y2goJzIzIEFNJywgJ0hIIGEnKVxuICogLy89PiBSYW5nZUVycm9yOiBUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYEhIYCBhbmQgYGFgIGF0IHRoZSBzYW1lIHRpbWVcbiAqIGBgYFxuICpcbiAqIFNlZSB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlFPUFUzeFVocGxsbDZkeW9NbVZVWEhLbF84Q1JEczZfdWVMbWV4M1NvcXdodW9sa3VOM08wNWw0cnF4NWgxZEtYOGViNDZVbC1DQ1NycS9wdWJodG1sP2dpZD0wJnNpbmdsZT10cnVlXG4gKlxuICogQWNjZXB0ZWQgZm9ybWF0IHN0cmluZyBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UHJpb3J8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQwIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5OTk5ICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgMTMwIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5MDAwICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgMTMwIHwgUiAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OTkgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSICAgICAgfCAtNDMsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQsNSB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB1ICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDk5LCAtOTkgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IDEyMCB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IDEyMCB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IDExMCB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IDExMCB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IDEwMCB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IDEwMCB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgIDkwIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8ICA5MCB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA1ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCAgOTAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgIDkwIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8ICA4MCB8IGIuLmJiYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8ICA4MCB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS0sgICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MCB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MCB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgICB8ICA0MCB8IHQgICAgICAgfCA1MTI5Njk1MjAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB0dCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgIDMwIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8ICAyMCB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgIDEwIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCAgMTAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8ICBOQSB8IFAgICAgICAgfCAwNS8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUCAgICAgIHwgTWF5IDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQICAgICB8IE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFAgICAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgfCAyLDUsOCB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCAgTkEgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ29tYmluYXRpb24gb2YgZGF0ZSBhbmQgdGltZSAgICB8ICBOQSB8IFBwICAgICAgfCAwNS8yOS8xNDUzLCAxMjowMCBBTSAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUHBwICAgIHwgTWF5IDI5LCAxNDUzLCAxMjowMDowMCBBTSAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQcHAgICB8IE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFBwcCAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgfCAyLDUsOCB8XG4gKiBOb3RlczpcbiAqIDEuIFwiRm9ybWF0dGluZ1wiIHVuaXRzIChlLmcuIGZvcm1hdHRpbmcgcXVhcnRlcikgaW4gdGhlIGRlZmF1bHQgZW4tVVMgbG9jYWxlXG4gKiAgICBhcmUgdGhlIHNhbWUgYXMgXCJzdGFuZC1hbG9uZVwiIHVuaXRzLCBidXQgYXJlIGRpZmZlcmVudCBpbiBzb21lIGxhbmd1YWdlcy5cbiAqICAgIFwiRm9ybWF0dGluZ1wiIHVuaXRzIGFyZSBkZWNsaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBsYW5ndWFnZVxuICogICAgaW4gdGhlIGNvbnRleHQgb2YgYSBkYXRlLiBcIlN0YW5kLWFsb25lXCIgdW5pdHMgYXJlIGFsd2F5cyBub21pbmF0aXZlIHNpbmd1bGFyLlxuICogICAgSW4gYGZvcm1hdGAgZnVuY3Rpb24sIHRoZXkgd2lsbCBwcm9kdWNlIGRpZmZlcmVudCByZXN1bHQ6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqICAgIGBpc01hdGNoYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdhYmx5LlxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZTpcbiAqICAgIC0gZm9yIG51bWVyaWNhbCB1bml0cyAoYHl5eXl5eXl5YCkgYGlzTWF0Y2hgIHdpbGwgdHJ5IHRvIG1hdGNoIGEgbnVtYmVyXG4gKiAgICAgIGFzIHdpZGUgYXMgdGhlIHNlcXVlbmNlXG4gKiAgICAtIGZvciB0ZXh0IHVuaXRzIChgTU1NTU1NTU1gKSBgaXNNYXRjaGAgd2lsbCB0cnkgdG8gbWF0Y2ggdGhlIHdpZGVzdCB2YXJpYXRpb24gb2YgdGhlIHVuaXQuXG4gKiAgICAgIFRoZXNlIHZhcmlhdGlvbnMgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogMy4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCB3aWxsIHRyeSB0byBndWVzcyB0aGUgY2VudHVyeSBvZiB0d28gZGlnaXQgeWVhciBieSBwcm94aW1pdHkgd2l0aCBgcmVmZXJlbmNlRGF0ZWA6XG4gKlxuICogICAgYGlzTWF0Y2goJzUwJywgJ3l5JykgLy89PiB0cnVlYFxuICpcbiAqICAgIGBpc01hdGNoKCc3NScsICd5eScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICB3aGlsZSBgdXVgIHdpbGwgdXNlIHRoZSB5ZWFyIGFzIGlzOlxuICpcbiAqICAgIGBpc01hdGNoKCc1MCcsICd1dScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICBgaXNNYXRjaCgnNzUnLCAndXUnKSAvLz0+IHRydWVgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyfSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA2LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDcuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGhlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDguIGBQK2AgdG9rZW5zIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCBwcmlvcml0eSBzaW5jZSB0aGV5IGFyZSBtZXJlbHkgYWxpYXNlcyB0byBvdGhlciB0b2tlbnMgYmFzZWRcbiAqICAgIG9uIHRoZSBnaXZlbiBsb2NhbGUuXG4gKlxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBQYCA9PiBgTU0vZGQveXl5eWBcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgcGAgPT4gYGhoOm1tIGFgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYFBgID0+IGBkZC9NTS95eXl5YFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBwYCA9PiBgSEg6bW1gXG4gKlxuICogVmFsdWVzIHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUgZGVzY2VuZGluZyBvcmRlciBvZiBpdHMgdW5pdCdzIHByaW9yaXR5LlxuICogVW5pdHMgb2YgYW4gZXF1YWwgcHJpb3JpdHkgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXG4gKlxuICogSWYgbm8gdmFsdWVzIG9mIGhpZ2hlciBwcmlvcml0eSBhcmUgbWF0Y2hlZCAoZS5nLiB3aGVuIG1hdGNoaW5nIHN0cmluZyAnSmFudWFyeSAxc3QnIHdpdGhvdXQgYSB5ZWFyKSxcbiAqIHRoZSB2YWx1ZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHRvZGF5J3MgdXNpbmcgYG5ldyBEYXRlKClgIGRhdGUgd2hpY2ggd29ya3MgYXMgYSBjb250ZXh0IG9mIHBhcnNpbmcuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgcmVmZXJlbmNlRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlU3RyaW5nIC0gdGhlIGRhdGUgc3RyaW5nIHRvIHZlcmlmeVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgYFlZYCBhbmQgYFlZWVlgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIGRheSBvZiB5ZWFyIHRva2VucyBgRGAgYW5kIGBERGA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbWF0Y2hgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCBmb3IgZm9ybWF0dGluZyB5ZWFyczsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRgIGluc3RlYWQgb2YgYERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTWF0Y2ggMTEgRmVicnVhcnkgMjAxNCBmcm9tIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gaXNNYXRjaCgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JylcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNYXRjaCAyOHRoIG9mIEZlYnJ1YXJ5IGluIEVzcGVyYW50byBsb2NhbGUgaW4gdGhlIGNvbnRleHQgb2YgMjAxMCB5ZWFyOlxuICogaW1wb3J0IGVvIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGlzTWF0Y2goJzI4LWEgZGUgZmVicnVhcm8nLCBcImRvICdkZScgTU1NTVwiLCB7XG4gKiAgIGxvY2FsZTogZW9cbiAqIH0pXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNYXRjaChkYXRlU3RyaW5nLCBmb3JtYXRTdHJpbmcsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1ZhbGlkKHBhcnNlKGRhdGVTdHJpbmcsIGZvcm1hdFN0cmluZywgbmV3IERhdGUoKSwgb3B0aW9ucykpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNNb25kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIE1vbmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIE1vbmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBNb25kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMiBTZXB0ZW1iZXIgMjAxNCBNb25kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc01vbmRheShuZXcgRGF0ZSgyMDE0LCA4LCAyMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNb25kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkYXRlKS5nZXREYXkoKSA9PT0gMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzUGFzdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgcGFzdD9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgcGFzdD9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhlIHBhc3RcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgMiBKdWx5IDIwMTQgaW4gdGhlIHBhc3Q/XG4gKiBjb25zdCByZXN1bHQgPSBpc1Bhc3QobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQYXN0KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKSA8IERhdGUubm93KCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZEYXkgZnJvbSBcIi4uL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZURheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAwNjowMDowMCBhbmQgNCBTZXB0ZW1iZXIgMTg6MDA6MDAgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDApLCBuZXcgRGF0ZSgyMDE0LCA4LCA0LCAxOCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIGFuZCA0IE9jdG9iZXIgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQpLCBuZXcgRGF0ZSgyMDE0LCA5LCA0KSlcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyLCAyMDE0IGFuZCA0IFNlcHRlbWJlciwgMjAxNSBpbiB0aGUgc2FtZSBkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVEYXkobmV3IERhdGUoMjAxNCwgOCwgNCksIG5ldyBEYXRlKDIwMTUsIDgsIDQpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVEYXkoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZEYXkgPSBzdGFydE9mRGF5KGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZkRheSA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mRGF5LmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZkRheS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZIb3VyIGZyb20gXCIuLi9zdGFydE9mSG91ci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lSG91clxuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBob3VyIChhbmQgc2FtZSBkYXkpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBob3VyIChhbmQgc2FtZSBkYXkpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgaG91ciAoYW5kIHNhbWUgZGF5KVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDowMCBhbmQgNCBTZXB0ZW1iZXIgMDY6MzA6MDAgaW4gdGhlIHNhbWUgaG91cj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUhvdXIobmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCksIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDowMCBhbmQgNSBTZXB0ZW1iZXIgMDY6MDA6MDAgaW4gdGhlIHNhbWUgaG91cj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUhvdXIobmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCksIG5ldyBEYXRlKDIwMTQsIDgsIDUsIDYsIDApKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVIb3VyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mSG91ciA9IHN0YXJ0T2ZIb3VyKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZkhvdXIgPSBzdGFydE9mSG91cihkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZIb3VyLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZkhvdXIuZ2V0VGltZSgpO1xufSIsImltcG9ydCBpc1NhbWVXZWVrIGZyb20gXCIuLi9pc1NhbWVXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2VlayAoYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2VlayAoYW5kIHllYXIpP1xuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIElTTyB3ZWVrIChhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgU2VwdGVtYmVyIDIwMTQgYW5kIDcgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgSVNPIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCBuZXcgRGF0ZSgyMDE0LCA4LCA3KSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBTZXB0ZW1iZXIgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxNSBpbiB0aGUgc2FtZSBJU08gd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUlTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMSksIG5ldyBEYXRlKDIwMTUsIDgsIDEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVJU09XZWVrKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lV2VlayhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCwge1xuICAgIHdlZWtTdGFydHNPbjogMVxuICB9KTtcbn0iLCJpbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZUlTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcj9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXI/XG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDI5IERlY2VtYmVyIDIwMDMgYW5kIDIgSmFudWFyeSAyMDA1IGluIHRoZSBzYW1lIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSVNPV2Vla1llYXIobmV3IERhdGUoMjAwMywgMTEsIDI5KSwgbmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lSVNPV2Vla1llYXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZlllYXIgPSBzdGFydE9mSVNPV2Vla1llYXIoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mWWVhci5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZZZWFyLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZk1pbnV0ZSBmcm9tIFwiLi4vc3RhcnRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lTWludXRlXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbWludXRlIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbWludXRlIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIG1pbnV0ZSAoYW5kIGhvdXIgYW5kIGRheSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MDAgYW5kIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MTUgaW4gdGhlIHNhbWUgbWludXRlP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lTWludXRlKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwLCAxNSlcbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMDowMCBhbmQgNSBTZXB0ZW1iZXIgMjAxNCAwNjozMDowMCBpbiB0aGUgc2FtZSBtaW51dGU/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNaW51dGUoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNSwgNiwgMzApXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZU1pbnV0ZShkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZk1pbnV0ZSA9IHN0YXJ0T2ZNaW51dGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mTWludXRlID0gc3RhcnRPZk1pbnV0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZNaW51dGUuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mTWludXRlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZU1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtb250aCAoYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtb250aCAoYW5kIHllYXIpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgbW9udGggKGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBTZXB0ZW1iZXIgMjAxNCBhbmQgMjUgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgbmV3IERhdGUoMjAxNCwgOCwgMjUpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyIFNlcHRlbWJlciAyMDE0IGFuZCAyNSBTZXB0ZW1iZXIgMjAxNSBpbiB0aGUgc2FtZSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZU1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIpLCBuZXcgRGF0ZSgyMDE1LCA4LCAyNSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZU1vbnRoKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCkgJiYgZGF0ZUxlZnQuZ2V0TW9udGgoKSA9PT0gZGF0ZVJpZ2h0LmdldE1vbnRoKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZRdWFydGVyIGZyb20gXCIuLi9zdGFydE9mUXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBxdWFydGVyIChhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHF1YXJ0ZXIgKGFuZCB5ZWFyKT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHF1YXJ0ZXIgKGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBKYW51YXJ5IDIwMTQgYW5kIDggTWFyY2ggMjAxNCBpbiB0aGUgc2FtZSBxdWFydGVyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCAwLCAxKSwgbmV3IERhdGUoMjAxNCwgMiwgOCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgSmFudWFyeSAyMDE0IGFuZCAxIEphbnVhcnkgMjAxNSBpbiB0aGUgc2FtZSBxdWFydGVyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCAwLCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVF1YXJ0ZXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZlF1YXJ0ZXIuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mUXVhcnRlci5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZTZWNvbmQgZnJvbSBcIi4uL3N0YXJ0T2ZTZWNvbmQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZVNlY29uZFxuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHNlY29uZCAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHNlY29uZCAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBzZWNvbmQgKGFuZCBob3VyIGFuZCBkYXkpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjMwOjE1LjAwMCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMC4xNS41MDAgaW4gdGhlIHNhbWUgc2Vjb25kP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lU2Vjb25kKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCwgMTUsIDUwMClcbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDoxNS4wMDAgYW5kIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDEuMTUuMDAwIGluIHRoZSBzYW1lIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVNlY29uZChcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAxLCAxNSlcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDA6MTUuMDAwIGFuZCA1IFNlcHRlbWJlciAyMDE0IDA2OjAwLjE1LjAwMCBpbiB0aGUgc2FtZSBzZWNvbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVTZWNvbmQoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNSwgNiwgMCwgMTUpXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVNlY29uZChkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZlNlY29uZCA9IHN0YXJ0T2ZTZWNvbmQoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mU2Vjb25kID0gc3RhcnRPZlNlY29uZChkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZTZWNvbmQuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mU2Vjb25kLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcik/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDMxIEF1Z3VzdCAyMDE0IGFuZCA0IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVXZWVrKG5ldyBEYXRlKDIwMTQsIDcsIDMxKSwgbmV3IERhdGUoMjAxNCwgOCwgNCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgd2VlayBzdGFydHMgd2l0aCBNb25kYXksXG4gKiAvLyBhcmUgMzEgQXVndXN0IDIwMTQgYW5kIDQgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVdlZWsobmV3IERhdGUoMjAxNCwgNywgMzEpLCBuZXcgRGF0ZSgyMDE0LCA4LCA0KSwge1xuICogICB3ZWVrU3RhcnRzT246IDFcbiAqIH0pXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIEphbnVhcnkgMjAxNCBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gdGhlIHNhbWUgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVdlZWsobmV3IERhdGUoMjAxNCwgMCwgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVXZWVrKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mV2VlayA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZUxlZnQsIG9wdGlvbnMpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZldlZWsgPSBzdGFydE9mV2VlayhkaXJ0eURhdGVSaWdodCwgb3B0aW9ucyk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZXZWVrLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZldlZWsuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB5ZWFyP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB5ZWFyP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBTZXB0ZW1iZXIgMjAxNCBhbmQgMjUgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgeWVhcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVllYXIobmV3IERhdGUoMjAxNCwgOCwgMiksIG5ldyBEYXRlKDIwMTQsIDgsIDI1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVZZWFyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhdHVyZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBTYXR1cmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFNhdHVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjcgU2VwdGVtYmVyIDIwMTQgU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhdHVyZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDI3KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhdHVyZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSA2O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTdW5kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFN1bmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFN1bmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMSBTZXB0ZW1iZXIgMjAxNCBTdW5kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1N1bmRheShuZXcgRGF0ZSgyMDE0LCA4LCAyMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTdW5kYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDA7XG59IiwiaW1wb3J0IGlzU2FtZUhvdXIgZnJvbSBcIi4uL2lzU2FtZUhvdXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc0hvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIGhvdXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBob3VyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgaG91clxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDoxNS41MDAsXG4gKiAvLyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODowMDowMCBpbiB0aGlzIGhvdXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDI1LCAxOCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzSG91cihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVIb3VyKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZUlTT1dlZWsgZnJvbSBcIi4uL2lzU2FtZUlTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc0lTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBJU08gd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIElTTyB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIyIFNlcHRlbWJlciAyMDE0IGluIHRoaXMgSVNPIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZUlTT1dlZWsoZGlydHlEYXRlLCBEYXRlLm5vdygpKTtcbn0iLCJpbXBvcnQgaXNTYW1lTWludXRlIGZyb20gXCIuLi9pc1NhbWVNaW51dGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc01pbnV0ZVxuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtaW51dGUgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtaW51dGUgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MTUuNTAwLFxuICogLy8gaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MDAgaW4gdGhpcyBtaW51dGU/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNNaW51dGUobmV3IERhdGUoMjAxNCwgOCwgMjUsIDE4LCAzMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzTWludXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZU1pbnV0ZShEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVNb250aCBmcm9tIFwiLi4vaXNTYW1lTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc01vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgbW9udGggYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtb250aCBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDE1IFNlcHRlbWJlciAyMDE0IGluIHRoaXMgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAxNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lTW9udGgoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lUXVhcnRlciBmcm9tIFwiLi4vaXNTYW1lUXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgcXVhcnRlciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHF1YXJ0ZXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIgSnVseSAyMDE0IGluIHRoaXMgcXVhcnRlcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1F1YXJ0ZXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVRdWFydGVyKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZVNlY29uZCBmcm9tIFwiLi4vaXNTYW1lU2Vjb25kL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNTZWNvbmRcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgc2Vjb25kIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgc2Vjb25kIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgc2Vjb25kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjUwMCxcbiAqIC8vIGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjAwMCBpbiB0aGlzIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1NlY29uZChuZXcgRGF0ZSgyMDE0LCA4LCAyNSwgMTgsIDMwLCAxNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzU2Vjb25kKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVNlY29uZChEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVXZWVrIGZyb20gXCIuLi9pc1NhbWVXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAyMSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGlzIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIxKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCBhbmQgd2VlayBzdGFydHMgd2l0aCBNb25kYXlcbiAqIC8vIGlzIDIxIFNlcHRlbWJlciAyMDE0IGluIHRoaXMgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMjEpLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBmYWxzZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lV2VlayhkaXJ0eURhdGUsIERhdGUubm93KCksIG9wdGlvbnMpO1xufSIsImltcG9ydCBpc1NhbWVZZWFyIGZyb20gXCIuLi9pc1NhbWVZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB5ZWFyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgeWVhciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMiBKdWx5IDIwMTQgaW4gdGhpcyB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVllYXIoZGlydHlEYXRlLCBEYXRlLm5vdygpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGh1cnNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFRodXJzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgVGh1cnNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyNSBTZXB0ZW1iZXIgMjAxNCBUaHVyc2RheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGh1cnNkYXkobmV3IERhdGUoMjAxNCwgOCwgMjUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGh1cnNkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDQ7XG59IiwiaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RvZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRvZGF5P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRvZGF5P1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0b2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyA2IE9jdG9iZXIgMTQ6MDA6MDAgdG9kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RvZGF5KG5ldyBEYXRlKDIwMTQsIDksIDYsIDE0LCAwKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RvZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZURheShkaXJ0eURhdGUsIERhdGUubm93KCkpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTYW1lRGF5IGZyb20gXCIuLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVG9tb3Jyb3dcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdG9tb3Jyb3c/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdG9tb3Jyb3c/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHRvbW9ycm93XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDcgT2N0b2JlciAxNDowMDowMCB0b21vcnJvdz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVG9tb3Jyb3cobmV3IERhdGUoMjAxNCwgOSwgNywgMTQsIDApKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVG9tb3Jyb3coZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lRGF5KGRpcnR5RGF0ZSwgYWRkRGF5cyhEYXRlLm5vdygpLCAxKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1R1ZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFR1ZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBUdWVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMyBTZXB0ZW1iZXIgMjAxNCBUdWVzZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNUdWVzZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIzKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1R1ZXNkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDI7XG59IiwiaW1wb3J0IGlzRGF0ZSBmcm9tIFwiLi4vaXNEYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVmFsaWRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGZhbHNlIGlmIGFyZ3VtZW50IGlzIEludmFsaWQgRGF0ZSBhbmQgdHJ1ZSBvdGhlcndpc2UuXG4gKiBBcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gRGF0ZSB1c2luZyBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogSW52YWxpZCBEYXRlIGlzIGEgRGF0ZSwgd2hvc2UgdGltZSB2YWx1ZSBpcyBOYU4uXG4gKlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHBhcmFtIHsqfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB2YWxpZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoMjAxNCwgMSwgMzEpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsdWUsIGNvbnZlcnRhYmxlIGludG8gYSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZCgxMzkzODA0ODAwMDAwKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgnJykpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVmFsaWQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAoIWlzRGF0ZShkaXJ0eURhdGUpICYmIHR5cGVvZiBkaXJ0eURhdGUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHJldHVybiAhaXNOYU4oTnVtYmVyKGRhdGUpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzV2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBXZWRuZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBXZWRuZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgV2VkbmVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjQgU2VwdGVtYmVyIDIwMTQgV2VkbmVzZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNXZWRuZXNkYXkobmV3IERhdGUoMjAxNCwgOCwgMjQpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzV2VkbmVzZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSAzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNXZWVrZW5kXG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBEb2VzIHRoZSBnaXZlbiBkYXRlIGZhbGwgb24gYSB3ZWVrZW5kP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRG9lcyB0aGUgZ2l2ZW4gZGF0ZSBmYWxsIG9uIGEgd2Vla2VuZD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBmYWxscyBvbiBhIHdlZWtlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBEb2VzIDUgT2N0b2JlciAyMDE0IGZhbGwgb24gYSB3ZWVrZW5kP1xuICogY29uc3QgcmVzdWx0ID0gaXNXZWVrZW5kKG5ldyBEYXRlKDIwMTQsIDksIDUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzV2Vla2VuZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICByZXR1cm4gZGF5ID09PSAwIHx8IGRheSA9PT0gNjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzV2l0aGluSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB3aXRoaW4gdGhlIGludGVydmFsP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgd2l0aGluIHRoZSBpbnRlcnZhbD8gKEluY2x1ZGluZyBzdGFydCBhbmQgZW5kLilcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgd2l0aGluIHRoZSBpbnRlcnZhbFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGRhdGUgd2l0aGluIHRoZSBpbnRlcnZhbDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwobmV3IERhdGUoMjAxNCwgMCwgMyksIHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDcpXG4gKiB9KVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgZGF0ZSBvdXRzaWRlIG9mIHRoZSBpbnRlcnZhbDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwobmV3IERhdGUoMjAxNCwgMCwgMTApLCB7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCA3KVxuICogfSlcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGRhdGUgZXF1YWwgdG8gaW50ZXJ2YWwgc3RhcnQ6XG4gKiBpc1dpdGhpbkludGVydmFsKGRhdGUsIHsgc3RhcnQsIGVuZDogZGF0ZSB9KSAvLyA9PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBkYXRlIGVxdWFsIHRvIGludGVydmFsIGVuZDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwoZGF0ZSwgeyBzdGFydDogZGF0ZSwgZW5kIH0pIC8vID0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNXaXRoaW5JbnRlcnZhbChkaXJ0eURhdGUsIGludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgdGltZSA9IHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKTtcbiAgdmFyIHN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgZW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydFRpbWUgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHJldHVybiB0aW1lID49IHN0YXJ0VGltZSAmJiB0aW1lIDw9IGVuZFRpbWU7XG59IiwiaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViRGF5cyBmcm9tIFwiLi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNZZXN0ZXJkYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgeWVzdGVyZGF5P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHllc3RlcmRheT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgeWVzdGVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDUgT2N0b2JlciAxNDowMDowMCB5ZXN0ZXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1llc3RlcmRheShuZXcgRGF0ZSgyMDE0LCA5LCA1LCAxNCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNZZXN0ZXJkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lRGF5KGRpcnR5RGF0ZSwgc3ViRGF5cyhEYXRlLm5vdygpLCAxKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZEZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSBkZWNhZGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSBkZWNhZGUgZm9yIDIxIERlY2VtYmVyIDIwMTIgMjE6MTI6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZEZWNhZGUobmV3IERhdGUoMjAxMiwgMTEsIDIxLCAyMSwgMTIsIDAwKSlcbiAqIC8vPT4gV2VkIERlYyAzMSAyMDE5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZkRlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gOSArIE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRlY2FkZSArIDEsIDAsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgbGFzdERheU9mV2VlayBmcm9tIFwiLi4vbGFzdERheU9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGxhc3REYXlPZldlZWsoZGlydHlEYXRlLCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZklTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNTpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZklTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gSmFuIDAxIDIwMDYgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIDEpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCArIDEsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZlF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSBxdWFydGVyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBtb250aCA9IGN1cnJlbnRNb250aCAtIGN1cnJlbnRNb250aCAlIDMgKyAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTYXQgU2VwIDA2IDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIGxhc3QgZGF5IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IC03IDogMCkgKyA2IC0gKGRheSAtIHdlZWtTdGFydHNPbik7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIHllYXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMDApKVxuICogLy89PiBXZWQgRGVjIDMxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gLyhcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcbnZhciBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG52YXIgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbnZhciB1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCA9IC9bYS16QS1aXS87XG5cbi8qKlxuICogQG5hbWUgbGlnaHRGb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC4gVW5saWtlIGBmb3JtYXRgLFxuICogYGxpZ2h0Rm9ybWF0YCBkb2Vzbid0IHVzZSBsb2NhbGVzIGFuZCBvdXRwdXRzIGRhdGUgdXNpbmcgdGhlIG1vc3QgcG9wdWxhciB0b2tlbnMuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGxpZ2h0Rm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhLi5hYWEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAwMDAsIDAxNyAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVzdWx0ID0gbGlnaHRGb3JtYXQobmV3IERhdGUoMjAxNCwgMSwgMTEpLCAneXl5eS1NTS1kZCcpXG4gKiAvLz0+ICcyMDE0LTAyLTExJ1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpZ2h0Rm9ybWF0KGRpcnR5RGF0ZSwgZm9ybWF0U3RyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG5cbiAgLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gVVRDIGZ1bmN0aW9ucyB3aWxsIGJlIGltcGxlbWVudGVkLCBsb2NhbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZW0uXG4gIC8vIFNlZSBhbiBpc3N1ZSBhYm91dCBVVEMgZnVuY3Rpb25zOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuICB2YXIgdGltZXpvbmVPZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSk7XG4gIHZhciB1dGNEYXRlID0gc3ViTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSwgdGltZXpvbmVPZmZzZXQpO1xuICB2YXIgdG9rZW5zID0gZm9ybWF0U3RyLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApO1xuXG4gIC8vIFRoZSBvbmx5IGNhc2Ugd2hlbiBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwIGRvZXNuJ3QgbWF0Y2ggdGhlIHN0cmluZyBpcyB3aGVuIGl0J3MgZW1wdHlcbiAgaWYgKCF0b2tlbnMpIHJldHVybiAnJztcbiAgdmFyIHJlc3VsdCA9IHRva2Vucy5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICBpZiAoc3Vic3RyaW5nID09PSBcIicnXCIpIHtcbiAgICAgIHJldHVybiBcIidcIjtcbiAgICB9XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gXCInXCIpIHtcbiAgICAgIHJldHVybiBjbGVhbkVzY2FwZWRTdHJpbmcoc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIodXRjRGF0ZSwgc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YnN0cmluZztcbiAgfSkuam9pbignJyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgdmFyIG1hdGNoZXMgPSBpbnB1dC5tYXRjaChlc2NhcGVkU3RyaW5nUmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG4gIHJldHVybiBtYXRjaGVzWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEZvcm1hdExvbmdGbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIC8vIFRPRE86IFJlbW92ZSBTdHJpbmcoKVxuICAgIHZhciB3aWR0aCA9IG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICB2YXIgZm9ybWF0ID0gYXJncy5mb3JtYXRzW3dpZHRoXSB8fCBhcmdzLmZvcm1hdHNbYXJncy5kZWZhdWx0V2lkdGhdO1xuICAgIHJldHVybiBmb3JtYXQ7XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRMb2NhbGl6ZUZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkaXJ0eUluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnRleHQgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmNvbnRleHQgPyBTdHJpbmcob3B0aW9ucy5jb250ZXh0KSA6ICdzdGFuZGFsb25lJztcbiAgICB2YXIgdmFsdWVzQXJyYXk7XG4gICAgaWYgKGNvbnRleHQgPT09ICdmb3JtYXR0aW5nJyAmJiBhcmdzLmZvcm1hdHRpbmdWYWx1ZXMpIHtcbiAgICAgIHZhciBkZWZhdWx0V2lkdGggPSBhcmdzLmRlZmF1bHRGb3JtYXR0aW5nV2lkdGggfHwgYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgICB2YXIgd2lkdGggPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogZGVmYXVsdFdpZHRoO1xuICAgICAgdmFsdWVzQXJyYXkgPSBhcmdzLmZvcm1hdHRpbmdWYWx1ZXNbd2lkdGhdIHx8IGFyZ3MuZm9ybWF0dGluZ1ZhbHVlc1tkZWZhdWx0V2lkdGhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2RlZmF1bHRXaWR0aCA9IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgICAgdmFyIF93aWR0aCA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy52YWx1ZXNbX3dpZHRoXSB8fCBhcmdzLnZhbHVlc1tfZGVmYXVsdFdpZHRoXTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gYXJncy5hcmd1bWVudENhbGxiYWNrID8gYXJncy5hcmd1bWVudENhbGxiYWNrKGRpcnR5SW5kZXgpIDogZGlydHlJbmRleDtcbiAgICAvLyBAdHMtaWdub3JlOiBGb3Igc29tZSByZWFzb24gVHlwZVNjcmlwdCBqdXN0IGRvbid0IHdhbnQgdG8gbWF0Y2ggaXQsIG5vIG1hdHRlciBob3cgaGFyZCB3ZSB0cnkuIEkgY2hhbGxlbmdlIHlvdSB0byB0cnkgdG8gcmVtb3ZlIGl0IVxuICAgIHJldHVybiB2YWx1ZXNBcnJheVtpbmRleF07XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRNYXRjaEZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICB2YXIgbWF0Y2hQYXR0ZXJuID0gd2lkdGggJiYgYXJncy5tYXRjaFBhdHRlcm5zW3dpZHRoXSB8fCBhcmdzLm1hdGNoUGF0dGVybnNbYXJncy5kZWZhdWx0TWF0Y2hXaWR0aF07XG4gICAgdmFyIG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKG1hdGNoUGF0dGVybik7XG4gICAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBtYXRjaGVkU3RyaW5nID0gbWF0Y2hSZXN1bHRbMF07XG4gICAgdmFyIHBhcnNlUGF0dGVybnMgPSB3aWR0aCAmJiBhcmdzLnBhcnNlUGF0dGVybnNbd2lkdGhdIHx8IGFyZ3MucGFyc2VQYXR0ZXJuc1thcmdzLmRlZmF1bHRQYXJzZVdpZHRoXTtcbiAgICB2YXIga2V5ID0gQXJyYXkuaXNBcnJheShwYXJzZVBhdHRlcm5zKSA/IGZpbmRJbmRleChwYXJzZVBhdHRlcm5zLCBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChtYXRjaGVkU3RyaW5nKTtcbiAgICB9KSA6IGZpbmRLZXkocGFyc2VQYXR0ZXJucywgZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobWF0Y2hlZFN0cmluZyk7XG4gICAgfSk7XG4gICAgdmFyIHZhbHVlO1xuICAgIHZhbHVlID0gYXJncy52YWx1ZUNhbGxiYWNrID8gYXJncy52YWx1ZUNhbGxiYWNrKGtleSkgOiBrZXk7XG4gICAgdmFsdWUgPSBvcHRpb25zLnZhbHVlQ2FsbGJhY2sgPyBvcHRpb25zLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG4gICAgdmFyIHJlc3QgPSBzdHJpbmcuc2xpY2UobWF0Y2hlZFN0cmluZy5sZW5ndGgpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICByZXN0OiByZXN0XG4gICAgfTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBwcmVkaWNhdGUob2JqZWN0W2tleV0pKSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgZm9yICh2YXIga2V5ID0gMDsga2V5IDwgYXJyYXkubGVuZ3RoOyBrZXkrKykge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlba2V5XSkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRNYXRjaFBhdHRlcm5GbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgIHZhciBtYXRjaFJlc3VsdCA9IHN0cmluZy5tYXRjaChhcmdzLm1hdGNoUGF0dGVybik7XG4gICAgaWYgKCFtYXRjaFJlc3VsdCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIG1hdGNoZWRTdHJpbmcgPSBtYXRjaFJlc3VsdFswXTtcbiAgICB2YXIgcGFyc2VSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5wYXJzZVBhdHRlcm4pO1xuICAgIGlmICghcGFyc2VSZXN1bHQpIHJldHVybiBudWxsO1xuICAgIHZhciB2YWx1ZSA9IGFyZ3MudmFsdWVDYWxsYmFjayA/IGFyZ3MudmFsdWVDYWxsYmFjayhwYXJzZVJlc3VsdFswXSkgOiBwYXJzZVJlc3VsdFswXTtcbiAgICB2YWx1ZSA9IG9wdGlvbnMudmFsdWVDYWxsYmFjayA/IG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB2YXIgcmVzdCA9IHN0cmluZy5zbGljZShtYXRjaGVkU3RyaW5nLmxlbmd0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHJlc3Q6IHJlc3RcbiAgICB9O1xuICB9O1xufSIsInZhciBmb3JtYXREaXN0YW5jZUxvY2FsZSA9IHtcbiAgbGVzc1RoYW5YU2Vjb25kczoge1xuICAgIG9uZTogJ2xlc3MgdGhhbiBhIHNlY29uZCcsXG4gICAgb3RoZXI6ICdsZXNzIHRoYW4ge3tjb3VudH19IHNlY29uZHMnXG4gIH0sXG4gIHhTZWNvbmRzOiB7XG4gICAgb25lOiAnMSBzZWNvbmQnLFxuICAgIG90aGVyOiAne3tjb3VudH19IHNlY29uZHMnXG4gIH0sXG4gIGhhbGZBTWludXRlOiAnaGFsZiBhIG1pbnV0ZScsXG4gIGxlc3NUaGFuWE1pbnV0ZXM6IHtcbiAgICBvbmU6ICdsZXNzIHRoYW4gYSBtaW51dGUnLFxuICAgIG90aGVyOiAnbGVzcyB0aGFuIHt7Y291bnR9fSBtaW51dGVzJ1xuICB9LFxuICB4TWludXRlczoge1xuICAgIG9uZTogJzEgbWludXRlJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtaW51dGVzJ1xuICB9LFxuICBhYm91dFhIb3Vyczoge1xuICAgIG9uZTogJ2Fib3V0IDEgaG91cicsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gaG91cnMnXG4gIH0sXG4gIHhIb3Vyczoge1xuICAgIG9uZTogJzEgaG91cicsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gaG91cnMnXG4gIH0sXG4gIHhEYXlzOiB7XG4gICAgb25lOiAnMSBkYXknLFxuICAgIG90aGVyOiAne3tjb3VudH19IGRheXMnXG4gIH0sXG4gIGFib3V0WFdlZWtzOiB7XG4gICAgb25lOiAnYWJvdXQgMSB3ZWVrJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSB3ZWVrcydcbiAgfSxcbiAgeFdlZWtzOiB7XG4gICAgb25lOiAnMSB3ZWVrJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSB3ZWVrcydcbiAgfSxcbiAgYWJvdXRYTW9udGhzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBtb250aCcsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gbW9udGhzJ1xuICB9LFxuICB4TW9udGhzOiB7XG4gICAgb25lOiAnMSBtb250aCcsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gbW9udGhzJ1xuICB9LFxuICBhYm91dFhZZWFyczoge1xuICAgIG9uZTogJ2Fib3V0IDEgeWVhcicsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0geWVhcnMnXG4gIH0sXG4gIHhZZWFyczoge1xuICAgIG9uZTogJzEgeWVhcicsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0geWVhcnMnXG4gIH0sXG4gIG92ZXJYWWVhcnM6IHtcbiAgICBvbmU6ICdvdmVyIDEgeWVhcicsXG4gICAgb3RoZXI6ICdvdmVyIHt7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgYWxtb3N0WFllYXJzOiB7XG4gICAgb25lOiAnYWxtb3N0IDEgeWVhcicsXG4gICAgb3RoZXI6ICdhbG1vc3Qge3tjb3VudH19IHllYXJzJ1xuICB9XG59O1xudmFyIGZvcm1hdERpc3RhbmNlID0gZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2UodG9rZW4sIGNvdW50LCBvcHRpb25zKSB7XG4gIHZhciByZXN1bHQ7XG4gIHZhciB0b2tlblZhbHVlID0gZm9ybWF0RGlzdGFuY2VMb2NhbGVbdG9rZW5dO1xuICBpZiAodHlwZW9mIHRva2VuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZTtcbiAgfSBlbHNlIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub25lO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub3RoZXIucmVwbGFjZSgne3tjb3VudH19JywgY291bnQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuYWRkU3VmZml4KSB7XG4gICAgaWYgKG9wdGlvbnMuY29tcGFyaXNvbiAmJiBvcHRpb25zLmNvbXBhcmlzb24gPiAwKSB7XG4gICAgICByZXR1cm4gJ2luICcgKyByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAnIGFnbyc7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0RGlzdGFuY2U7IiwiaW1wb3J0IGJ1aWxkRm9ybWF0TG9uZ0ZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuL2luZGV4LmpzXCI7XG52YXIgZGF0ZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdFRUVFLCBNTU1NIGRvLCB5JyxcbiAgbG9uZzogJ01NTU0gZG8sIHknLFxuICBtZWRpdW06ICdNTU0gZCwgeScsXG4gIHNob3J0OiAnTU0vZGQveXl5eSdcbn07XG52YXIgdGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdoOm1tOnNzIGEgenp6eicsXG4gIGxvbmc6ICdoOm1tOnNzIGEgeicsXG4gIG1lZGl1bTogJ2g6bW06c3MgYScsXG4gIHNob3J0OiAnaDptbSBhJ1xufTtcbnZhciBkYXRlVGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBsb25nOiBcInt7ZGF0ZX19ICdhdCcge3t0aW1lfX1cIixcbiAgbWVkaXVtOiAne3tkYXRlfX0sIHt7dGltZX19JyxcbiAgc2hvcnQ6ICd7e2RhdGV9fSwge3t0aW1lfX0nXG59O1xudmFyIGZvcm1hdExvbmcgPSB7XG4gIGRhdGU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KSxcbiAgdGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IHRpbWVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pLFxuICBkYXRlVGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVUaW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KVxufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdExvbmc7IiwidmFyIGZvcm1hdFJlbGF0aXZlTG9jYWxlID0ge1xuICBsYXN0V2VlazogXCInbGFzdCcgZWVlZSAnYXQnIHBcIixcbiAgeWVzdGVyZGF5OiBcIid5ZXN0ZXJkYXkgYXQnIHBcIixcbiAgdG9kYXk6IFwiJ3RvZGF5IGF0JyBwXCIsXG4gIHRvbW9ycm93OiBcIid0b21vcnJvdyBhdCcgcFwiLFxuICBuZXh0V2VlazogXCJlZWVlICdhdCcgcFwiLFxuICBvdGhlcjogJ1AnXG59O1xudmFyIGZvcm1hdFJlbGF0aXZlID0gZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmUodG9rZW4sIF9kYXRlLCBfYmFzZURhdGUsIF9vcHRpb25zKSB7XG4gIHJldHVybiBmb3JtYXRSZWxhdGl2ZUxvY2FsZVt0b2tlbl07XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0UmVsYXRpdmU7IiwiaW1wb3J0IGJ1aWxkTG9jYWxpemVGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZExvY2FsaXplRm4vaW5kZXguanNcIjtcbnZhciBlcmFWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydCJywgJ0EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnQkMnLCAnQUQnXSxcbiAgd2lkZTogWydCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJ11cbn07XG52YXIgcXVhcnRlclZhbHVlcyA9IHtcbiAgbmFycm93OiBbJzEnLCAnMicsICczJywgJzQnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnUTEnLCAnUTInLCAnUTMnLCAnUTQnXSxcbiAgd2lkZTogWycxc3QgcXVhcnRlcicsICcybmQgcXVhcnRlcicsICczcmQgcXVhcnRlcicsICc0dGggcXVhcnRlciddXG59O1xuXG4vLyBOb3RlOiBpbiBFbmdsaXNoLCB0aGUgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2VlayBhbmQgbW9udGhzIGFyZSBjYXBpdGFsaXplZC5cbi8vIElmIHlvdSBhcmUgbWFraW5nIGEgbmV3IGxvY2FsZSBiYXNlZCBvbiB0aGlzIG9uZSwgY2hlY2sgaWYgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGxhbmd1YWdlIHlvdSdyZSB3b3JraW5nIG9uLlxuLy8gR2VuZXJhbGx5LCBmb3JtYXR0ZWQgZGF0ZXMgc2hvdWxkIGxvb2sgbGlrZSB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2VudGVuY2UsXG4vLyBlLmcuIGluIFNwYW5pc2ggbGFuZ3VhZ2UgdGhlIHdlZWtkYXlzIGFuZCBtb250aHMgc2hvdWxkIGJlIGluIHRoZSBsb3dlcmNhc2UuXG52YXIgbW9udGhWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydKJywgJ0YnLCAnTScsICdBJywgJ00nLCAnSicsICdKJywgJ0EnLCAnUycsICdPJywgJ04nLCAnRCddLFxuICBhYmJyZXZpYXRlZDogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICB3aWRlOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXVxufTtcbnZhciBkYXlWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ10sXG4gIHNob3J0OiBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ10sXG4gIGFiYnJldmlhdGVkOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICB3aWRlOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J11cbn07XG52YXIgZGF5UGVyaW9kVmFsdWVzID0ge1xuICBuYXJyb3c6IHtcbiAgICBhbTogJ2EnLFxuICAgIHBtOiAncCcsXG4gICAgbWlkbmlnaHQ6ICdtaScsXG4gICAgbm9vbjogJ24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfSxcbiAgd2lkZToge1xuICAgIGFtOiAnYS5tLicsXG4gICAgcG06ICdwLm0uJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH1cbn07XG52YXIgZm9ybWF0dGluZ0RheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06ICdhJyxcbiAgICBwbTogJ3AnLFxuICAgIG1pZG5pZ2h0OiAnbWknLFxuICAgIG5vb246ICduJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfSxcbiAgYWJicmV2aWF0ZWQ6IHtcbiAgICBhbTogJ0FNJyxcbiAgICBwbTogJ1BNJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH0sXG4gIHdpZGU6IHtcbiAgICBhbTogJ2EubS4nLFxuICAgIHBtOiAncC5tLicsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9XG59O1xudmFyIG9yZGluYWxOdW1iZXIgPSBmdW5jdGlvbiBvcmRpbmFsTnVtYmVyKGRpcnR5TnVtYmVyLCBfb3B0aW9ucykge1xuICB2YXIgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcblxuICAvLyBJZiBvcmRpbmFsIG51bWJlcnMgZGVwZW5kIG9uIGNvbnRleHQsIGZvciBleGFtcGxlLFxuICAvLyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBncmFtbWF0aWNhbCBnZW5kZXJzLFxuICAvLyB1c2UgYG9wdGlvbnMudW5pdGAuXG4gIC8vXG4gIC8vIGB1bml0YCBjYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RhdGUnLCAnZGF5T2ZZZWFyJyxcbiAgLy8gJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLlxuXG4gIHZhciByZW0xMDAgPSBudW1iZXIgJSAxMDA7XG4gIGlmIChyZW0xMDAgPiAyMCB8fCByZW0xMDAgPCAxMCkge1xuICAgIHN3aXRjaCAocmVtMTAwICUgMTApIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIG51bWJlciArICdzdCc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnbmQnO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ3JkJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bWJlciArICd0aCc7XG59O1xudmFyIGxvY2FsaXplID0ge1xuICBvcmRpbmFsTnVtYmVyOiBvcmRpbmFsTnVtYmVyLFxuICBlcmE6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBlcmFWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIHF1YXJ0ZXI6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBxdWFydGVyVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGFyZ3VtZW50Q2FsbGJhY2s6IGZ1bmN0aW9uIGFyZ3VtZW50Q2FsbGJhY2socXVhcnRlcikge1xuICAgICAgcmV0dXJuIHF1YXJ0ZXIgLSAxO1xuICAgIH1cbiAgfSksXG4gIG1vbnRoOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogbW9udGhWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIGRheTogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGRheVZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcbiAgZGF5UGVyaW9kOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGZvcm1hdHRpbmdWYWx1ZXM6IGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMsXG4gICAgZGVmYXVsdEZvcm1hdHRpbmdXaWR0aDogJ3dpZGUnXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgbG9jYWxpemU7IiwiaW1wb3J0IGJ1aWxkTWF0Y2hGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZE1hdGNoRm4vaW5kZXguanNcIjtcbmltcG9ydCBidWlsZE1hdGNoUGF0dGVybkZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4vaW5kZXguanNcIjtcbnZhciBtYXRjaE9yZGluYWxOdW1iZXJQYXR0ZXJuID0gL14oXFxkKykodGh8c3R8bmR8cmQpPy9pO1xudmFyIHBhcnNlT3JkaW5hbE51bWJlclBhdHRlcm4gPSAvXFxkKy9pO1xudmFyIG1hdGNoRXJhUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYnxhKS9pLFxuICBhYmJyZXZpYXRlZDogL14oYlxcLj9cXHM/Y1xcLj98YlxcLj9cXHM/Y1xcLj9cXHM/ZVxcLj98YVxcLj9cXHM/ZFxcLj98Y1xcLj9cXHM/ZVxcLj8pL2ksXG4gIHdpZGU6IC9eKGJlZm9yZSBjaHJpc3R8YmVmb3JlIGNvbW1vbiBlcmF8YW5ubyBkb21pbml8Y29tbW9uIGVyYSkvaVxufTtcbnZhciBwYXJzZUVyYVBhdHRlcm5zID0ge1xuICBhbnk6IFsvXmIvaSwgL14oYXxjKS9pXVxufTtcbnZhciBtYXRjaFF1YXJ0ZXJQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXlsxMjM0XS9pLFxuICBhYmJyZXZpYXRlZDogL15xWzEyMzRdL2ksXG4gIHdpZGU6IC9eWzEyMzRdKHRofHN0fG5kfHJkKT8gcXVhcnRlci9pXG59O1xudmFyIHBhcnNlUXVhcnRlclBhdHRlcm5zID0ge1xuICBhbnk6IFsvMS9pLCAvMi9pLCAvMy9pLCAvNC9pXVxufTtcbnZhciBtYXRjaE1vbnRoUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bamZtYXNvbmRdL2ksXG4gIGFiYnJldmlhdGVkOiAvXihqYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYykvaSxcbiAgd2lkZTogL14oamFudWFyeXxmZWJydWFyeXxtYXJjaHxhcHJpbHxtYXl8anVuZXxqdWx5fGF1Z3VzdHxzZXB0ZW1iZXJ8b2N0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaVxufTtcbnZhciBwYXJzZU1vbnRoUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogWy9eai9pLCAvXmYvaSwgL15tL2ksIC9eYS9pLCAvXm0vaSwgL15qL2ksIC9eai9pLCAvXmEvaSwgL15zL2ksIC9eby9pLCAvXm4vaSwgL15kL2ldLFxuICBhbnk6IFsvXmphL2ksIC9eZi9pLCAvXm1hci9pLCAvXmFwL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYXUvaSwgL15zL2ksIC9eby9pLCAvXm4vaSwgL15kL2ldXG59O1xudmFyIG1hdGNoRGF5UGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bc210d2ZdL2ksXG4gIHNob3J0OiAvXihzdXxtb3x0dXx3ZXx0aHxmcnxzYSkvaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKHN1bnxtb258dHVlfHdlZHx0aHV8ZnJpfHNhdCkvaSxcbiAgd2lkZTogL14oc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpL2lcbn07XG52YXIgcGFyc2VEYXlQYXR0ZXJucyA9IHtcbiAgbmFycm93OiBbL15zL2ksIC9ebS9pLCAvXnQvaSwgL153L2ksIC9edC9pLCAvXmYvaSwgL15zL2ldLFxuICBhbnk6IFsvXnN1L2ksIC9ebS9pLCAvXnR1L2ksIC9edy9pLCAvXnRoL2ksIC9eZi9pLCAvXnNhL2ldXG59O1xudmFyIG1hdGNoRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYXxwfG1pfG58KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pLFxuICBhbnk6IC9eKFthcF1cXC4/XFxzP21cXC4/fG1pZG5pZ2h0fG5vb258KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pXG59O1xudmFyIHBhcnNlRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIGFueToge1xuICAgIGFtOiAvXmEvaSxcbiAgICBwbTogL15wL2ksXG4gICAgbWlkbmlnaHQ6IC9ebWkvaSxcbiAgICBub29uOiAvXm5vL2ksXG4gICAgbW9ybmluZzogL21vcm5pbmcvaSxcbiAgICBhZnRlcm5vb246IC9hZnRlcm5vb24vaSxcbiAgICBldmVuaW5nOiAvZXZlbmluZy9pLFxuICAgIG5pZ2h0OiAvbmlnaHQvaVxuICB9XG59O1xudmFyIG1hdGNoID0ge1xuICBvcmRpbmFsTnVtYmVyOiBidWlsZE1hdGNoUGF0dGVybkZuKHtcbiAgICBtYXRjaFBhdHRlcm46IG1hdGNoT3JkaW5hbE51bWJlclBhdHRlcm4sXG4gICAgcGFyc2VQYXR0ZXJuOiBwYXJzZU9yZGluYWxOdW1iZXJQYXR0ZXJuLFxuICAgIHZhbHVlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgfSksXG4gIGVyYTogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaEVyYVBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSksXG4gIHF1YXJ0ZXI6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZVF1YXJ0ZXJQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueScsXG4gICAgdmFsdWVDYWxsYmFjazogZnVuY3Rpb24gdmFsdWVDYWxsYmFjayhpbmRleCkge1xuICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gIH0pLFxuICBtb250aDogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaE1vbnRoUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZU1vbnRoUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBkYXk6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRGF5UGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBkYXlQZXJpb2Q6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQZXJpb2RQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ2FueScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VEYXlQZXJpb2RQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSlcbn07XG5leHBvcnQgZGVmYXVsdCBtYXRjaDsiLCJpbXBvcnQgZm9ybWF0RGlzdGFuY2UgZnJvbSBcIi4vX2xpYi9mb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdExvbmcgZnJvbSBcIi4vX2xpYi9mb3JtYXRMb25nL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0UmVsYXRpdmUgZnJvbSBcIi4vX2xpYi9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGxvY2FsaXplIGZyb20gXCIuL19saWIvbG9jYWxpemUvaW5kZXguanNcIjtcbmltcG9ydCBtYXRjaCBmcm9tIFwiLi9fbGliL21hdGNoL2luZGV4LmpzXCI7XG4vKipcbiAqIEB0eXBlIHtMb2NhbGV9XG4gKiBAY2F0ZWdvcnkgTG9jYWxlc1xuICogQHN1bW1hcnkgRW5nbGlzaCBsb2NhbGUgKFVuaXRlZCBTdGF0ZXMpLlxuICogQGxhbmd1YWdlIEVuZ2xpc2hcbiAqIEBpc28tNjM5LTIgZW5nXG4gKiBAYXV0aG9yIFNhc2hhIEtvc3MgW0Brb3Nzbm9jb3JwXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20va29zc25vY29ycH1cbiAqIEBhdXRob3IgTGVzaGEgS29zcyBbQGxlc2hha29zc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xlc2hha29zc31cbiAqL1xudmFyIGxvY2FsZSA9IHtcbiAgY29kZTogJ2VuLVVTJyxcbiAgZm9ybWF0RGlzdGFuY2U6IGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXRMb25nOiBmb3JtYXRMb25nLFxuICBmb3JtYXRSZWxhdGl2ZTogZm9ybWF0UmVsYXRpdmUsXG4gIGxvY2FsaXplOiBsb2NhbGl6ZSxcbiAgbWF0Y2g6IG1hdGNoLFxuICBvcHRpb25zOiB7XG4gICAgd2Vla1N0YXJ0c09uOiAwIC8qIFN1bmRheSAqLyxcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDFcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1heFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhdGVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhdGVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlW118TnVtYmVyW119IGRhdGVzQXJyYXkgLSB0aGUgZGF0ZXMgdG8gY29tcGFyZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXRlc3Qgb2YgdGhlIGRhdGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggb2YgdGhlc2UgZGF0ZXMgaXMgdGhlIGxhdGVzdD9cbiAqIGNvbnN0IHJlc3VsdCA9IG1heChbXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk5MCwgMCwgMSlcbiAqIF0pXG4gKiAvLz0+IFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXgoZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZXNBcnJheTtcbiAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXksIFNldCBvciBNYXAsIG9yIG9iamVjdCB3aXRoIGN1c3RvbSBgZm9yRWFjaGAgbWV0aG9kXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgJiYgdHlwZW9mIGRpcnR5RGF0ZXNBcnJheS5mb3JFYWNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0ZXNBcnJheSA9IGRpcnR5RGF0ZXNBcnJheTtcblxuICAgIC8vIElmIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LWxpa2UgT2JqZWN0LCBjb252ZXJ0IHRvIEFycmF5LlxuICB9IGVsc2UgaWYgKF90eXBlb2YoZGlydHlEYXRlc0FycmF5KSA9PT0gJ29iamVjdCcgJiYgZGlydHlEYXRlc0FycmF5ICE9PSBudWxsKSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgbm9uLWl0ZXJhYmxlLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0IDwgY3VycmVudERhdGUgfHwgaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IGN1cnJlbnREYXRlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQgfHwgbmV3IERhdGUoTmFOKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLy8gTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbi8vIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG52YXIgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5XG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIHRoZSBzcGVjaWZpZWQsIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gdGhlIHNwZWNpZmllZCwgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogPiBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogPiAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICpcbiAqIE9uZSBtb250aCBpcyBhIHllYXIgZGl2aWRlZCBieSAxMi5cbiAqXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyAxIHllYXIgaW4gbWlsbGlzZWNvbmRzXG4gKiBtaWxsaXNlY29uZHMoeyB5ZWFyczogMSB9KVxuICogLy89PiAzMTU1Njk1MjAwMFxuICpcbiAqIC8vIDMgbW9udGhzIGluIG1pbGxpc2Vjb25kc1xuICogbWlsbGlzZWNvbmRzKHsgbW9udGhzOiAzIH0pXG4gKiAvLz0+IDc4ODkyMzgwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzKF9yZWYpIHtcbiAgdmFyIHllYXJzID0gX3JlZi55ZWFycyxcbiAgICBtb250aHMgPSBfcmVmLm1vbnRocyxcbiAgICB3ZWVrcyA9IF9yZWYud2Vla3MsXG4gICAgZGF5cyA9IF9yZWYuZGF5cyxcbiAgICBob3VycyA9IF9yZWYuaG91cnMsXG4gICAgbWludXRlcyA9IF9yZWYubWludXRlcyxcbiAgICBzZWNvbmRzID0gX3JlZi5zZWNvbmRzO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHRvdGFsRGF5cyA9IDA7XG4gIGlmICh5ZWFycykgdG90YWxEYXlzICs9IHllYXJzICogZGF5c0luWWVhcjtcbiAgaWYgKG1vbnRocykgdG90YWxEYXlzICs9IG1vbnRocyAqIChkYXlzSW5ZZWFyIC8gMTIpO1xuICBpZiAod2Vla3MpIHRvdGFsRGF5cyArPSB3ZWVrcyAqIDc7XG4gIGlmIChkYXlzKSB0b3RhbERheXMgKz0gZGF5cztcbiAgdmFyIHRvdGFsU2Vjb25kcyA9IHRvdGFsRGF5cyAqIDI0ICogNjAgKiA2MDtcbiAgaWYgKGhvdXJzKSB0b3RhbFNlY29uZHMgKz0gaG91cnMgKiA2MCAqIDYwO1xuICBpZiAobWludXRlcykgdG90YWxTZWNvbmRzICs9IG1pbnV0ZXMgKiA2MDtcbiAgaWYgKHNlY29uZHMpIHRvdGFsU2Vjb25kcyArPSBzZWNvbmRzO1xuICByZXR1cm4gTWF0aC5yb3VuZCh0b3RhbFNlY29uZHMgKiAxMDAwKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNUb0hvdXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBob3Vycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgaG91cnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgY29udmVydGVkIGluIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA3MjAwMDAwIG1pbGxpc2Vjb25kcyB0byBob3VyczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvSG91cnMoNzIwMDAwMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9Ib3Vycyg3MTk5OTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kc1RvSG91cnMobWlsbGlzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaG91cnMgPSBtaWxsaXNlY29uZHMgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1RvTWludXRlc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaWxsaXNlY29uZHMgdG8gbWludXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWQuXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgY29udmVydGVkIGluIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDYwMDAwIG1pbGxpc2Vjb25kcyB0byBtaW51dGVzOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9NaW51dGVzKDYwMDAwKVxuICogLy89PiAxXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb01pbnV0ZXMoMTE5OTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kc1RvTWludXRlcyhtaWxsaXNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBtaW51dGVzID0gbWlsbGlzZWNvbmRzIC8gbWlsbGlzZWNvbmRzSW5NaW51dGU7XG4gIHJldHVybiBNYXRoLmZsb29yKG1pbnV0ZXMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzVG9TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGNvbnZlcnRlZCBpbiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxMDAwIG1pbGlzZWNvbmRzIHRvIHNlY29uZHM6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb1NlY29uZHMoMTAwMClcbiAqIC8vPT4gMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9TZWNvbmRzKDE5OTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzVG9TZWNvbmRzKG1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHNlY29uZHMgPSBtaWxsaXNlY29uZHMgLyBtaWxsaXNlY29uZHNJblNlY29uZDtcbiAgcmV0dXJuIE1hdGguZmxvb3Ioc2Vjb25kcyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaW5cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJucyB0aGUgZWFybGllc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgZWFybGllc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZVtdfE51bWJlcltdfSBkYXRlc0FycmF5IC0gdGhlIGRhdGVzIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBlYXJsaWVzdCBvZiB0aGUgZGF0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBvZiB0aGVzZSBkYXRlcyBpcyB0aGUgZWFybGllc3Q/XG4gKiBjb25zdCByZXN1bHQgPSBtaW4oW1xuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMCksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5OTAsIDAsIDEpXG4gKiBdKVxuICogLy89PiBXZWQgRmViIDExIDE5ODcgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWluKGRpcnR5RGF0ZXNBcnJheSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICBpZiAoZGlydHlEYXRlc0FycmF5ICYmIHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuXG4gIH0gZWxzZSBpZiAoX3R5cGVvZihkaXJ0eURhdGVzQXJyYXkpID09PSAnb2JqZWN0JyAmJiBkaXJ0eURhdGVzQXJyYXkgIT09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGlydHlEYXRlc0FycmF5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBub24taXRlcmFibGUsIHJldHVybiBJbnZhbGlkIERhdGVcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgcmVzdWx0O1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSkge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPiBjdXJyZW50RGF0ZSB8fCBpc05hTihjdXJyZW50RGF0ZS5nZXREYXRlKCkpKSB7XG4gICAgICByZXN1bHQgPSBjdXJyZW50RGF0ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0IHx8IG5ldyBEYXRlKE5hTik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbnV0ZXNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb0hvdXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbnV0ZXMgdG8gaG91cnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYSBmdWxsIG51bWJlciBvZiBob3Vycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWludXRlcyAtIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlcyBjb252ZXJ0ZWQgaW4gaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDE0MCBtaW51dGVzIHRvIGhvdXJzOlxuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvSG91cnMoMTIwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9Ib3VycygxNzkpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWludXRlc1RvSG91cnMobWludXRlcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGhvdXJzID0gbWludXRlcyAvIG1pbnV0ZXNJbkhvdXI7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb01pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaW51dGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWludXRlcyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWludXRlcyAtIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlcyBjb252ZXJ0ZWQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzXG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9NaWxsaXNlY29uZHMoMilcbiAqIC8vPT4gMTIwMDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbnV0ZXNUb01pbGxpc2Vjb25kcyhtaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb1NlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWludXRlcyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaW51dGVzIHRvIGEgZnVsbCBudW1iZXIgb2Ygc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0geyBudW1iZXIgfSBtaW51dGVzIC0gbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzIGNvbnZlcnRlZCBpbiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIG1pbnV0ZXMgdG8gc2Vjb25kc1xuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvU2Vjb25kcygyKVxuICogLy89PiAxMjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWludXRlc1RvU2Vjb25kcyhtaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzICogc2Vjb25kc0luTWludXRlKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbW9udGhzSW5RdWFydGVyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtb250aHNUb1F1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG51bWJlciBvZiBtb250aHMgdG8gcXVhcnRlcnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1vbnRocyB0byBhIGZ1bGwgbnVtYmVyIG9mIHF1YXJ0ZXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aHMgLSBudW1iZXIgb2YgbW9udGhzIHRvIGJlIGNvbnZlcnRlZC5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1vbnRocyBjb252ZXJ0ZWQgaW4gcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDYgbW9udGhzIHRvIHF1YXJ0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gbW9udGhzVG9RdWFydGVycyg2KVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1F1YXJ0ZXJzKDcpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9udGhzVG9RdWFydGVycyhtb250aHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBxdWFydGVycyA9IG1vbnRocyAvIG1vbnRoc0luUXVhcnRlcjtcbiAgcmV0dXJuIE1hdGguZmxvb3IocXVhcnRlcnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1vbnRoc1RvWWVhcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIG1vbnRocyB0byB5ZWFycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbW9udGhzIHRvIGEgZnVsbCBudW1iZXIgb2YgeWVhcnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRocyAtIG51bWJlciBvZiBtb250aHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtb250aHMgY29udmVydGVkIGluIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAzNiBtb250aHMgdG8geWVhcnM6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1llYXJzKDM2KVxuICogLy89PiAzXG4gKlxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1vbnRoc1RvWWVhcnMoNDApXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9udGhzVG9ZZWFycyhtb250aHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFycyA9IG1vbnRocyAvIG1vbnRoc0luWWVhcjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF5IGZyb20gXCIuLi9nZXREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgZGF5IG9mIHRoZSB3ZWVrP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBkYXkgb2YgdGhlIHdlZWs/IDAtNiB0aGUgZGF5IG9mIHRoZSB3ZWVrLCAwIHJlcHJlc2VudHMgU3VuZGF5LlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RheX0gZGF5IC0gZGF5IG9mIHRoZSB3ZWVrXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSB0aGUgZGF0ZSBpcyB0aGUgbmV4dCBkYXkgb2Ygd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAtIDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5IGFmdGVyIE1hciwgMjAsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0RGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIwKSwgMSlcbiAqIC8vPT4gTW9uIE1hciAyMyAyMDIwIDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgVHVlc2RheSBhZnRlciBNYXIsIDIxLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dERheShuZXcgRGF0ZSgyMDIwLCAyLCAyMSksIDIpXG4gKiAvLz0+IFR1ZSBNYXIgMjQgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0RGF5KGRhdGUsIGRheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlbHRhID0gZGF5IC0gZ2V0RGF5KGRhdGUpO1xuICBpZiAoZGVsdGEgPD0gMCkgZGVsdGEgKz0gNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGVsdGEpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0RnJpZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IEZyaWRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgRnJpZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBGcmlkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IEZyaWRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dEZyaWRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IEZyaSBNYXIgMjcgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0RnJpZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDUpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0TW9uZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBNb25kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dE1vbmRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IE1vbiBNYXIgMjMgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0TW9uZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDEpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0U2F0dXJkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgU2F0dXJkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBTYXR1cmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgU2F0dXJkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRTYXR1cmRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFNhdCBNYXIgMjggMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0U2F0dXJkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgNik7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRTdW5kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgU3VuZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBTdW5kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFN1bmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgU3VuZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0U3VuZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gU3VuIE1hciAyOSAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRTdW5kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgMCk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRUaHVyc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBUaHVyc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFRodXJzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBUaHVyc2RheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFRodXJzZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gVGh1ciBNYXIgMjYgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0VGh1cnNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgNCk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRUdWVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRUdWVzZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gVHVlIE1hciAyNCAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRUdWVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDIpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0V2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFdlZG5lc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgV2VkbmVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBXZWRuZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFdlZG5lc2RheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFdlZG5lc2RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFdlZCBNYXIgMjUgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0V2VkbmVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDMpO1xufSIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFZhbHVlU2V0dGVyIH0gZnJvbSBcIi4vU2V0dGVyLmpzXCI7XG5leHBvcnQgdmFyIFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGFyc2VyKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgdm9pZCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJwcmlvcml0eVwiLCB2b2lkIDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInN1YlByaW9yaXR5XCIsIHZvaWQgMCk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFBhcnNlciwgW3tcbiAgICBrZXk6IFwicnVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bihkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucyk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNldHRlcjogbmV3IFZhbHVlU2V0dGVyKHJlc3VsdC52YWx1ZSwgdGhpcy52YWxpZGF0ZSwgdGhpcy5zZXQsIHRoaXMucHJpb3JpdHksIHRoaXMuc3ViUHJpb3JpdHkpLFxuICAgICAgICByZXN0OiByZXN1bHQucmVzdFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX3V0Y0RhdGUsIF92YWx1ZSwgX29wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUGFyc2VyO1xufSgpOyIsImltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xudmFyIFRJTUVaT05FX1VOSVRfUFJJT1JJVFkgPSAxMDtcbmV4cG9ydCB2YXIgU2V0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2V0dGVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZXR0ZXIpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInByaW9yaXR5XCIsIHZvaWQgMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwic3ViUHJpb3JpdHlcIiwgMCk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFNldHRlciwgW3tcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX3V0Y0RhdGUsIF9vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNldHRlcjtcbn0oKTtcbmV4cG9ydCB2YXIgVmFsdWVTZXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9TZXR0ZXIpIHtcbiAgX2luaGVyaXRzKFZhbHVlU2V0dGVyLCBfU2V0dGVyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihWYWx1ZVNldHRlcik7XG4gIGZ1bmN0aW9uIFZhbHVlU2V0dGVyKHZhbHVlLCB2YWxpZGF0ZVZhbHVlLCBzZXRWYWx1ZSwgcHJpb3JpdHksIHN1YlByaW9yaXR5KSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWYWx1ZVNldHRlcik7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKTtcbiAgICBfdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIF90aGlzLnZhbGlkYXRlVmFsdWUgPSB2YWxpZGF0ZVZhbHVlO1xuICAgIF90aGlzLnNldFZhbHVlID0gc2V0VmFsdWU7XG4gICAgX3RoaXMucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgICBpZiAoc3ViUHJpb3JpdHkpIHtcbiAgICAgIF90aGlzLnN1YlByaW9yaXR5ID0gc3ViUHJpb3JpdHk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoVmFsdWVTZXR0ZXIsIFt7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKHV0Y0RhdGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVmFsdWUodXRjRGF0ZSwgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQodXRjRGF0ZSwgZmxhZ3MsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFZhbHVlKHV0Y0RhdGUsIGZsYWdzLCB0aGlzLnZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFZhbHVlU2V0dGVyO1xufShTZXR0ZXIpO1xuZXhwb3J0IHZhciBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NldHRlcjIpIHtcbiAgX2luaGVyaXRzKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyLCBfU2V0dGVyMik7XG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKTtcbiAgZnVuY3Rpb24gRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIoKSB7XG4gICAgdmFyIF90aGlzMjtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMyID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicHJpb3JpdHlcIiwgVElNRVpPTkVfVU5JVF9QUklPUklUWSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdWJQcmlvcml0eVwiLCAtMSk7XG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIsIFt7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHZhciBjb252ZXJ0ZWREYXRlID0gbmV3IERhdGUoMCk7XG4gICAgICBjb252ZXJ0ZWREYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICBjb252ZXJ0ZWREYXRlLnNldEhvdXJzKGRhdGUuZ2V0VVRDSG91cnMoKSwgZGF0ZS5nZXRVVENNaW51dGVzKCksIGRhdGUuZ2V0VVRDU2Vjb25kcygpLCBkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpKTtcbiAgICAgIHJldHVybiBjb252ZXJ0ZWREYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXI7XG59KFNldHRlcik7IiwiZXhwb3J0IHZhciBudW1lcmljUGF0dGVybnMgPSB7XG4gIG1vbnRoOiAvXigxWzAtMl18MD9cXGQpLyxcbiAgLy8gMCB0byAxMlxuICBkYXRlOiAvXigzWzAtMV18WzAtMl0/XFxkKS8sXG4gIC8vIDAgdG8gMzFcbiAgZGF5T2ZZZWFyOiAvXigzNlswLTZdfDNbMC01XVxcZHxbMC0yXT9cXGQ/XFxkKS8sXG4gIC8vIDAgdG8gMzY2XG4gIHdlZWs6IC9eKDVbMC0zXXxbMC00XT9cXGQpLyxcbiAgLy8gMCB0byA1M1xuICBob3VyMjNoOiAvXigyWzAtM118WzAtMV0/XFxkKS8sXG4gIC8vIDAgdG8gMjNcbiAgaG91cjI0aDogL14oMlswLTRdfFswLTFdP1xcZCkvLFxuICAvLyAwIHRvIDI0XG4gIGhvdXIxMWg6IC9eKDFbMC0xXXwwP1xcZCkvLFxuICAvLyAwIHRvIDExXG4gIGhvdXIxMmg6IC9eKDFbMC0yXXwwP1xcZCkvLFxuICAvLyAwIHRvIDEyXG4gIG1pbnV0ZTogL15bMC01XT9cXGQvLFxuICAvLyAwIHRvIDU5XG4gIHNlY29uZDogL15bMC01XT9cXGQvLFxuICAvLyAwIHRvIDU5XG5cbiAgc2luZ2xlRGlnaXQ6IC9eXFxkLyxcbiAgLy8gMCB0byA5XG4gIHR3b0RpZ2l0czogL15cXGR7MSwyfS8sXG4gIC8vIDAgdG8gOTlcbiAgdGhyZWVEaWdpdHM6IC9eXFxkezEsM30vLFxuICAvLyAwIHRvIDk5OVxuICBmb3VyRGlnaXRzOiAvXlxcZHsxLDR9LyxcbiAgLy8gMCB0byA5OTk5XG5cbiAgYW55RGlnaXRzU2lnbmVkOiAvXi0/XFxkKy8sXG4gIHNpbmdsZURpZ2l0U2lnbmVkOiAvXi0/XFxkLyxcbiAgLy8gMCB0byA5LCAtMCB0byAtOVxuICB0d29EaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSwyfS8sXG4gIC8vIDAgdG8gOTksIC0wIHRvIC05OVxuICB0aHJlZURpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDN9LyxcbiAgLy8gMCB0byA5OTksIC0wIHRvIC05OTlcbiAgZm91ckRpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDR9LyAvLyAwIHRvIDk5OTksIC0wIHRvIC05OTk5XG59O1xuXG5leHBvcnQgdmFyIHRpbWV6b25lUGF0dGVybnMgPSB7XG4gIGJhc2ljT3B0aW9uYWxNaW51dGVzOiAvXihbKy1dKShcXGR7Mn0pKFxcZHsyfSk/fFovLFxuICBiYXNpYzogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pfFovLFxuICBiYXNpY09wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pKChcXGR7Mn0pKT98Wi8sXG4gIGV4dGVuZGVkOiAvXihbKy1dKShcXGR7Mn0pOihcXGR7Mn0pfFovLFxuICBleHRlbmRlZE9wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KSg6KFxcZHsyfSkpP3xaL1xufTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEFNUE1NaWRuaWdodFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoQU1QTU1pZG5pZ2h0UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihBTVBNTWlkbmlnaHRQYXJzZXIpO1xuICBmdW5jdGlvbiBBTVBNTWlkbmlnaHRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBTVBNTWlkbmlnaHRQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnQicsICdIJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoQU1QTU1pZG5pZ2h0UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnYic6XG4gICAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgY2FzZSAnYmJiJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdiYmJiYic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnYmJiYic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQU1QTU1pZG5pZ2h0UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgZGF5UGVyaW9kRW51bVRvSG91cnMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgQU1QTVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoQU1QTVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQU1QTVBhcnNlcik7XG4gIGZ1bmN0aW9uIEFNUE1QYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBTVBNUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgODApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydiJywgJ0InLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEFNUE1QYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdhJzpcbiAgICAgICAgY2FzZSAnYWEnOlxuICAgICAgICBjYXNlICdhYWEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdhYWFhJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBBTVBNUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgaXNMZWFwWWVhckluZGV4LCBwYXJzZU5EaWdpdHMsIHBhcnNlTnVtZXJpY1BhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbnZhciBEQVlTX0lOX01PTlRIID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xudmFyIERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG4vLyBEYXkgb2YgdGhlIG1vbnRoXG5leHBvcnQgdmFyIERhdGVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERhdGVQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERhdGVQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXRlUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3ViUHJpb3JpdHlcIiwgMSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAndycsICdJJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF0ZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5kYXRlLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnZG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgoeWVhcik7XG4gICAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICBpZiAoaXNMZWFwWWVhcikge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUlttb250aF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIW21vbnRoXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0RhdGUodmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF0ZVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cywgaXNMZWFwWWVhckluZGV4IH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIERheU9mWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5T2ZZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlPZlllYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXlPZlllYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlPZlllYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN1YnByaW9yaXR5XCIsIDEpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ0knLCAnZCcsICdFJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERheU9mWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRheU9mWWVhciwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF0ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKGRhdGUsIHZhbHVlKSB7XG4gICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpO1xuICAgICAgaWYgKGlzTGVhcFllYXIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY1O1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF5T2ZZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gRGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhEYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERheVBhcnNlcik7XG4gIGZ1bmN0aW9uIERheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGNhc2UgJ0VFJzpcbiAgICAgICAgY2FzZSAnRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUXG4gICAgICAgIGNhc2UgJ0VFRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdVxuICAgICAgICBjYXNlICdFRUVFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnRUVFRSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDY7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXlQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiOyAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG5leHBvcnQgdmFyIERheVBlcmlvZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5UGVyaW9kUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlQZXJpb2RQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXlQZXJpb2RQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlQZXJpb2RQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnYicsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXlQZXJpb2RQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgY2FzZSAnQkInOlxuICAgICAgICBjYXNlICdCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ0JCQkJCJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdCQkJCJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXlQZXJpb2RQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5leHBvcnQgdmFyIEVyYVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRXJhUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihFcmFQYXJzZXIpO1xuICBmdW5jdGlvbiBFcmFQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFcmFQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxNDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydSJywgJ3UnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRXJhUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gQUQsIEJDXG4gICAgICAgIGNhc2UgJ0cnOlxuICAgICAgICBjYXNlICdHRyc6XG4gICAgICAgIGNhc2UgJ0dHRyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gQSwgQlxuICAgICAgICBjYXNlICdHR0dHRyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3RcbiAgICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgZmxhZ3MuZXJhID0gdmFsdWU7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEVyYVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBFeHRlbmRlZFllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEV4dGVuZGVkWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRXh0ZW5kZWRZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gRXh0ZW5kZWRZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXh0ZW5kZWRZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRycsICd5JywgJ1knLCAnUicsICd3JywgJ0knLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRXh0ZW5kZWRZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgaWYgKHRva2VuID09PSAndScpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEV4dGVuZGVkWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgRnJhY3Rpb25PZlNlY29uZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRnJhY3Rpb25PZlNlY29uZFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRnJhY3Rpb25PZlNlY29uZFBhcnNlcik7XG4gIGZ1bmN0aW9uIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhGcmFjdGlvbk9mU2Vjb25kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogTWF0aC5wb3coMTAsIC10b2tlbi5sZW5ndGggKyAzKSk7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01pbGxpc2Vjb25kcyh2YWx1ZSk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjBUbzExUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMFRvMTFQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIwVG8xMVBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIwVG8xMVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIwVG8xMVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnaCcsICdIJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjBUbzExUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIxMWgsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdLbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBpc1BNID0gZGF0ZS5nZXRVVENIb3VycygpID49IDEyO1xuICAgICAgaWYgKGlzUE0gJiYgdmFsdWUgPCAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSwgMCwgMCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhvdXIwVG8xMVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMHRvMjNQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIwdG8yM1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjB0bzIzUGFyc2VyKTtcbiAgZnVuY3Rpb24gSG91cjB0bzIzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjB0bzIzUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydhJywgJ2InLCAnaCcsICdLJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjB0bzIzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIyM2gsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdIbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMHRvMjNQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjFUbzI0UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMVRvMjRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIxVG8yNFBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIxVG8yNFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIxVG8yNFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ2gnLCAnSCcsICdLJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEhvdXIxVG8yNFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2snOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMjRoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAna28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAyNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaG91cnMgPSB2YWx1ZSA8PSAyNCA/IHZhbHVlICUgMjQgOiB2YWx1ZTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoaG91cnMsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMVRvMjRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjF0bzEyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMXRvMTJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIxdG8xMlBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIxdG8xMlBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIxdG8xMlBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnSCcsICdLJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjF0bzEyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIxMmgsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdobyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDEyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBpc1BNID0gZGF0ZS5nZXRVVENIb3VycygpID49IDEyO1xuICAgICAgaWYgKGlzUE0gJiYgdmFsdWUgPCAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIGlmICghaXNQTSAmJiB2YWx1ZSA9PT0gMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMXRvMTJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDSVNPRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0lTT0RheS9pbmRleC5qc1wiOyAvLyBJU08gZGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgSVNPRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09EYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT0RheVBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT0RheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT0RheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdZJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ2QnLCAnRCcsICdFJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09EYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDJcbiAgICAgICAgY2FzZSAnaSc6XG4gICAgICAgIGNhc2UgJ2lpJzpcbiAgICAgICAgICAvLyAwMlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMm5kXG4gICAgICAgIGNhc2UgJ2lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnaWlpaSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA3O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENJU09EYXkoZGF0ZSwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMSlcbmV4cG9ydCB2YXIgSVNPVGltZXpvbmVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1RpbWV6b25lUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09UaW1lem9uZVBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1RpbWV6b25lUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPVGltZXpvbmVQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCcsICdYJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPVGltZXpvbmVQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWRPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eHgnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHZhbHVlKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1RpbWV6b25lUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMS4gKzAwOjAwIGlzIGAnWidgKVxuZXhwb3J0IHZhciBJU09UaW1lem9uZVdpdGhaUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09UaW1lem9uZVdpdGhaUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09UaW1lem9uZVdpdGhaUGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1RpbWV6b25lV2l0aFpQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCcsICd4J10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPVGltZXpvbmVXaXRoWlBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbE1pbnV0ZXMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYWCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWQsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgaWYgKGZsYWdzLnRpbWVzdGFtcElzU2V0KSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPVGltZXpvbmVXaXRoWlBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0lTT1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7IC8vIElTTyB3ZWVrIG9mIHllYXJcbmV4cG9ydCB2YXIgSVNPV2Vla1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPV2Vla1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPV2Vla1BhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1dlZWtQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09XZWVrUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdZJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ2QnLCAnRCcsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPV2Vla1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnSW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1MztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ0lTT1dlZWsoc2V0VVRDSVNPV2VlayhkYXRlLCB2YWx1ZSkpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPV2Vla1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7IC8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG5leHBvcnQgdmFyIElTT1dlZWtZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09XZWVrWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPV2Vla1llYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09XZWVrWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1dlZWtZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRycsICd5JywgJ1knLCAndScsICdRJywgJ3EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09XZWVrWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIGlmICh0b2tlbiA9PT0gJ1InKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VORGlnaXRzU2lnbmVkKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBmaXJzdFdlZWtPZlllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgICAgIGZpcnN0V2Vla09mWWVhci5zZXRVVENGdWxsWWVhcih2YWx1ZSwgMCwgNCk7XG4gICAgICBmaXJzdFdlZWtPZlllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ0lTT1dlZWsoZmlyc3RXZWVrT2ZZZWFyKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1dlZWtZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gTG9jYWwgZGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgTG9jYWxEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKExvY2FsRGF5UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbERheVBhcnNlcik7XG4gIGZ1bmN0aW9uIExvY2FsRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxEYXlQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnRScsICdpJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTG9jYWxEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHZhciB3aG9sZVdlZWtEYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLSAxKSAvIDcpICogNztcbiAgICAgICAgcmV0dXJuICh2YWx1ZSArIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgNikgJSA3ICsgd2hvbGVXZWVrRGF5cztcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDNcbiAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgIGNhc2UgJ2VlJzpcbiAgICAgICAgICAvLyAwM1xuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDNyZFxuICAgICAgICBjYXNlICdlbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdlZWUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcbiAgICAgICAgY2FzZSAnZWVlZWUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2VlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlc2RheVxuICAgICAgICBjYXNlICdlZWVlJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvY2FsRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjsgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG5leHBvcnQgdmFyIExvY2FsV2Vla1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxXZWVrUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbFdlZWtQYXJzZXIpO1xuICBmdW5jdGlvbiBMb2NhbFdlZWtQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbFdlZWtQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ2knLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTG9jYWxXZWVrUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLndlZWssIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd3byc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDUzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhzZXRVVENXZWVrKGRhdGUsIHZhbHVlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbFdlZWtQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMsIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhciwgbWFwVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBnZXRVVENXZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG4vLyBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG5leHBvcnQgdmFyIExvY2FsV2Vla1llYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKExvY2FsV2Vla1llYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsV2Vla1llYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBMb2NhbFdlZWtZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxXZWVrWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ1EnLCAncScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnaScsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhMb2NhbFdlZWtZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh5ZWFyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICBpc1R3b0RpZ2l0WWVhcjogdG9rZW4gPT09ICdZWSdcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoNCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBjYXNlICdZbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmlzVHdvRGlnaXRZZWFyIHx8IHZhbHVlLnllYXIgPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgdmFyIGN1cnJlbnRZZWFyID0gZ2V0VVRDV2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gICAgICBpZiAodmFsdWUuaXNUd29EaWdpdFllYXIpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRUd29EaWdpdFllYXIgPSBub3JtYWxpemVUd29EaWdpdFllYXIodmFsdWUueWVhciwgY3VycmVudFllYXIpO1xuICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKG5vcm1hbGl6ZWRUd29EaWdpdFllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgdmFyIHllYXIgPSAhKCdlcmEnIGluIGZsYWdzKSB8fCBmbGFncy5lcmEgPT09IDEgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbFdlZWtZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIE1pbnV0ZVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTWludXRlUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNaW51dGVQYXJzZXIpO1xuICBmdW5jdGlvbiBNaW51dGVQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNaW51dGVQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA2MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKE1pbnV0ZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5taW51dGUsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdtbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21pbnV0ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNaW51dGVzKHZhbHVlLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTWludXRlUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IHZhciBNb250aFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTW9udGhQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1vbnRoUGFyc2VyKTtcbiAgZnVuY3Rpb24gTW9udGhQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNb250aFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAnTCcsICd3JywgJ0knLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDExMCk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhNb250aFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgICAgY2FzZSAnTW8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgICBjYXNlICdNTU0nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgICAgY2FzZSAnTU1NTU0nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgICAgY2FzZSAnTU1NTSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTW9udGhQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgUXVhcnRlclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUXVhcnRlclBhcnNlcik7XG4gIGZ1bmN0aW9uIFF1YXJ0ZXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBRdWFydGVyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoUXVhcnRlclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgIGNhc2UgJ1FRJzpcbiAgICAgICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICAgIGNhc2UgJ1FvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgICAgY2FzZSAnUVFRJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICAgIGNhc2UgJ1FRUVEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFF1YXJ0ZXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgU2Vjb25kUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTZWNvbmRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlY29uZFBhcnNlcik7XG4gIGZ1bmN0aW9uIFNlY29uZFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlY29uZFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDUwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2Vjb25kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnNlY29uZCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3NvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnc2Vjb25kJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA1OTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ1NlY29uZHModmFsdWUsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZWNvbmRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0RheS9pbmRleC5qc1wiOyAvLyBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2Vla1xuZXhwb3J0IHZhciBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKTtcbiAgZnVuY3Rpb24gU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ0UnLCAnaScsICdlJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgdmFyIHdob2xlV2Vla0RheXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAtIDEpIC8gNykgKiA3O1xuICAgICAgICByZXR1cm4gKHZhbHVlICsgb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA2KSAlIDcgKyB3aG9sZVdlZWtEYXlzO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgY2FzZSAnY2MnOlxuICAgICAgICAgIC8vIDAzXG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gM3JkXG4gICAgICAgIGNhc2UgJ2NvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVHVlXG4gICAgICAgIGNhc2UgJ2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcbiAgICAgICAgY2FzZSAnY2NjY2NjJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2NjY2MnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENEYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzLCBtYXBWYWx1ZSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTdGFuZEFsb25lTW9udGhQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZU1vbnRoUGFyc2VyKTtcbiAgZnVuY3Rpb24gU3RhbmRBbG9uZU1vbnRoUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZU1vbnRoUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTEwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICdNJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgICAgY2FzZSAnTG8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgICBjYXNlICdMTEwnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgICAgY2FzZSAnTExMTEwnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgICAgY2FzZSAnTExMTCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RhbmRBbG9uZU1vbnRoUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIpO1xuICBmdW5jdGlvbiBTdGFuZEFsb25lUXVhcnRlclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICBjYXNlICdxcSc6XG4gICAgICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgICBjYXNlICdxbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICAgIGNhc2UgJ3FxcSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgICAgY2FzZSAncXFxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgICBjYXNlICdxcXFxJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKCh2YWx1ZSAtIDEpICogMywgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdGFuZEFsb25lUXVhcnRlclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIpO1xuICBmdW5jdGlvbiBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAyMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCAnKicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUodmFsdWUpLCB7XG4gICAgICAgIHRpbWVzdGFtcElzU2V0OiB0cnVlXG4gICAgICB9XTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIpO1xuICBmdW5jdGlvbiBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGltZXN0YW1wU2Vjb25kc1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDQwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsICcqJyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhUaW1lc3RhbXBTZWNvbmRzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUodmFsdWUgKiAxMDAwKSwge1xuICAgICAgICB0aW1lc3RhbXBJc1NldDogdHJ1ZVxuICAgICAgfV07XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhciwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG4vLyBGcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtMzEvdHIzNS1kYXRlcy5odG1sI0RhdGVfRm9ybWF0X1BhdHRlcm5zXG4vLyB8IFllYXIgICAgIHwgICAgIHkgfCB5eSB8ICAgeXl5IHwgIHl5eXkgfCB5eXl5eSB8XG4vLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4vLyB8IEFEIDEgICAgIHwgICAgIDEgfCAwMSB8ICAgMDAxIHwgIDAwMDEgfCAwMDAwMSB8XG4vLyB8IEFEIDEyICAgIHwgICAgMTIgfCAxMiB8ICAgMDEyIHwgIDAwMTIgfCAwMDAxMiB8XG4vLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4vLyB8IEFEIDEyMzQgIHwgIDEyMzQgfCAzNCB8ICAxMjM0IHwgIDEyMzQgfCAwMTIzNCB8XG4vLyB8IEFEIDEyMzQ1IHwgMTIzNDUgfCA0NSB8IDEyMzQ1IHwgMTIzNDUgfCAxMjM0NSB8XG5leHBvcnQgdmFyIFllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFllYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFllYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICd1JywgJ3cnLCAnSScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh5ZWFyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICBpc1R3b0RpZ2l0WWVhcjogdG9rZW4gPT09ICd5eSdcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoNCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBjYXNlICd5byc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmlzVHdvRGlnaXRZZWFyIHx8IHZhbHVlLnllYXIgPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGN1cnJlbnRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCAxKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgICB2YXIgeWVhciA9ICEoJ2VyYScgaW4gZmxhZ3MpIHx8IGZsYWdzLmVyYSA9PT0gMSA/IHZhbHVlLnllYXIgOiAxIC0gdmFsdWUueWVhcjtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCB7IEVyYVBhcnNlciB9IGZyb20gXCIuL0VyYVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgWWVhclBhcnNlciB9IGZyb20gXCIuL1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1llYXJQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09XZWVrWWVhclBhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZFllYXJQYXJzZXIgfSBmcm9tIFwiLi9FeHRlbmRlZFllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFF1YXJ0ZXJQYXJzZXIgfSBmcm9tIFwiLi9RdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lUXVhcnRlclBhcnNlciB9IGZyb20gXCIuL1N0YW5kQWxvbmVRdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNb250aFBhcnNlciB9IGZyb20gXCIuL01vbnRoUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9TdGFuZEFsb25lTW9udGhQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1BhcnNlciB9IGZyb20gXCIuL0xvY2FsV2Vla1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPV2Vla1BhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IERhdGVQYXJzZXIgfSBmcm9tIFwiLi9EYXRlUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlPZlllYXJQYXJzZXIgfSBmcm9tIFwiLi9EYXlPZlllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBhcnNlciB9IGZyb20gXCIuL0RheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbERheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyIH0gZnJvbSBcIi4vU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09EYXlQYXJzZXIgfSBmcm9tIFwiLi9JU09EYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1QYXJzZXIgfSBmcm9tIFwiLi9BTVBNUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBBTVBNTWlkbmlnaHRQYXJzZXIgfSBmcm9tIFwiLi9BTVBNTWlkbmlnaHRQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBlcmlvZFBhcnNlciB9IGZyb20gXCIuL0RheVBlcmlvZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjF0bzEyUGFyc2VyIH0gZnJvbSBcIi4vSG91cjF0bzEyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMHRvMjNQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMHRvMjNQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIwVG8xMVBhcnNlciB9IGZyb20gXCIuL0hvdXIwVG8xMVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjFUbzI0UGFyc2VyIH0gZnJvbSBcIi4vSG91cjFUbzI0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNaW51dGVQYXJzZXIgfSBmcm9tIFwiLi9NaW51dGVQYXJzZXIuanNcIjtcbmltcG9ydCB7IFNlY29uZFBhcnNlciB9IGZyb20gXCIuL1NlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRnJhY3Rpb25PZlNlY29uZFBhcnNlciB9IGZyb20gXCIuL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1RpbWV6b25lV2l0aFpQYXJzZXIgfSBmcm9tIFwiLi9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09UaW1lem9uZVBhcnNlciB9IGZyb20gXCIuL0lTT1RpbWV6b25lUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wU2Vjb25kc1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzXCI7XG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyogfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBwYXJzZWAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VycyA9IHtcbiAgRzogbmV3IEVyYVBhcnNlcigpLFxuICB5OiBuZXcgWWVhclBhcnNlcigpLFxuICBZOiBuZXcgTG9jYWxXZWVrWWVhclBhcnNlcigpLFxuICBSOiBuZXcgSVNPV2Vla1llYXJQYXJzZXIoKSxcbiAgdTogbmV3IEV4dGVuZGVkWWVhclBhcnNlcigpLFxuICBROiBuZXcgUXVhcnRlclBhcnNlcigpLFxuICBxOiBuZXcgU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIoKSxcbiAgTTogbmV3IE1vbnRoUGFyc2VyKCksXG4gIEw6IG5ldyBTdGFuZEFsb25lTW9udGhQYXJzZXIoKSxcbiAgdzogbmV3IExvY2FsV2Vla1BhcnNlcigpLFxuICBJOiBuZXcgSVNPV2Vla1BhcnNlcigpLFxuICBkOiBuZXcgRGF0ZVBhcnNlcigpLFxuICBEOiBuZXcgRGF5T2ZZZWFyUGFyc2VyKCksXG4gIEU6IG5ldyBEYXlQYXJzZXIoKSxcbiAgZTogbmV3IExvY2FsRGF5UGFyc2VyKCksXG4gIGM6IG5ldyBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIoKSxcbiAgaTogbmV3IElTT0RheVBhcnNlcigpLFxuICBhOiBuZXcgQU1QTVBhcnNlcigpLFxuICBiOiBuZXcgQU1QTU1pZG5pZ2h0UGFyc2VyKCksXG4gIEI6IG5ldyBEYXlQZXJpb2RQYXJzZXIoKSxcbiAgaDogbmV3IEhvdXIxdG8xMlBhcnNlcigpLFxuICBIOiBuZXcgSG91cjB0bzIzUGFyc2VyKCksXG4gIEs6IG5ldyBIb3VyMFRvMTFQYXJzZXIoKSxcbiAgazogbmV3IEhvdXIxVG8yNFBhcnNlcigpLFxuICBtOiBuZXcgTWludXRlUGFyc2VyKCksXG4gIHM6IG5ldyBTZWNvbmRQYXJzZXIoKSxcbiAgUzogbmV3IEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIoKSxcbiAgWDogbmV3IElTT1RpbWV6b25lV2l0aFpQYXJzZXIoKSxcbiAgeDogbmV3IElTT1RpbWV6b25lUGFyc2VyKCksXG4gIHQ6IG5ldyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKCksXG4gIFQ6IG5ldyBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIoKVxufTsiLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIsIG1pbGxpc2Vjb25kc0luTWludXRlLCBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFZhbHVlKHBhcnNlRm5SZXN1bHQsIG1hcEZuKSB7XG4gIGlmICghcGFyc2VGblJlc3VsdCkge1xuICAgIHJldHVybiBwYXJzZUZuUmVzdWx0O1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IG1hcEZuKHBhcnNlRm5SZXN1bHQudmFsdWUpLFxuICAgIHJlc3Q6IHBhcnNlRm5SZXN1bHQucmVzdFxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtZXJpY1BhdHRlcm4ocGF0dGVybiwgZGF0ZVN0cmluZykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBkYXRlU3RyaW5nLm1hdGNoKHBhdHRlcm4pO1xuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogcGFyc2VJbnQobWF0Y2hSZXN1bHRbMF0sIDEwKSxcbiAgICByZXN0OiBkYXRlU3RyaW5nLnNsaWNlKG1hdGNoUmVzdWx0WzBdLmxlbmd0aClcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRpbWV6b25lUGF0dGVybihwYXR0ZXJuLCBkYXRlU3RyaW5nKSB7XG4gIHZhciBtYXRjaFJlc3VsdCA9IGRhdGVTdHJpbmcubWF0Y2gocGF0dGVybik7XG4gIGlmICghbWF0Y2hSZXN1bHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIElucHV0IGlzICdaJ1xuICBpZiAobWF0Y2hSZXN1bHRbMF0gPT09ICdaJykge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UoMSlcbiAgICB9O1xuICB9XG4gIHZhciBzaWduID0gbWF0Y2hSZXN1bHRbMV0gPT09ICcrJyA/IDEgOiAtMTtcbiAgdmFyIGhvdXJzID0gbWF0Y2hSZXN1bHRbMl0gPyBwYXJzZUludChtYXRjaFJlc3VsdFsyXSwgMTApIDogMDtcbiAgdmFyIG1pbnV0ZXMgPSBtYXRjaFJlc3VsdFszXSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzNdLCAxMCkgOiAwO1xuICB2YXIgc2Vjb25kcyA9IG1hdGNoUmVzdWx0WzVdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbNV0sIDEwKSA6IDA7XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHNpZ24gKiAoaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogbWlsbGlzZWNvbmRzSW5TZWNvbmQpLFxuICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UobWF0Y2hSZXN1bHRbMF0ubGVuZ3RoKVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpIHtcbiAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmFueURpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VORGlnaXRzKG4sIGRhdGVTdHJpbmcpIHtcbiAgc3dpdGNoIChuKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnNpbmdsZURpZ2l0LCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudHdvRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHMsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5mb3VyRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obmV3IFJlZ0V4cCgnXlxcXFxkezEsJyArIG4gKyAnfScpLCBkYXRlU3RyaW5nKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTkRpZ2l0c1NpZ25lZChuLCBkYXRlU3RyaW5nKSB7XG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zaW5nbGVEaWdpdFNpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnRocmVlRGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZm91ckRpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoJ14tP1xcXFxkezEsJyArIG4gKyAnfScpLCBkYXRlU3RyaW5nKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRheVBlcmlvZEVudW1Ub0hvdXJzKGRheVBlcmlvZCkge1xuICBzd2l0Y2ggKGRheVBlcmlvZCkge1xuICAgIGNhc2UgJ21vcm5pbmcnOlxuICAgICAgcmV0dXJuIDQ7XG4gICAgY2FzZSAnZXZlbmluZyc6XG4gICAgICByZXR1cm4gMTc7XG4gICAgY2FzZSAncG0nOlxuICAgIGNhc2UgJ25vb24nOlxuICAgIGNhc2UgJ2FmdGVybm9vbic6XG4gICAgICByZXR1cm4gMTI7XG4gICAgY2FzZSAnYW0nOlxuICAgIGNhc2UgJ21pZG5pZ2h0JzpcbiAgICBjYXNlICduaWdodCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHR3b0RpZ2l0WWVhciwgY3VycmVudFllYXIpIHtcbiAgdmFyIGlzQ29tbW9uRXJhID0gY3VycmVudFllYXIgPiAwO1xuICAvLyBBYnNvbHV0ZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhcjpcbiAgLy8gMSAtPiAxIEFDXG4gIC8vIDAgLT4gMSBCQ1xuICAvLyAtMSAtPiAyIEJDXG4gIHZhciBhYnNDdXJyZW50WWVhciA9IGlzQ29tbW9uRXJhID8gY3VycmVudFllYXIgOiAxIC0gY3VycmVudFllYXI7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChhYnNDdXJyZW50WWVhciA8PSA1MCkge1xuICAgIHJlc3VsdCA9IHR3b0RpZ2l0WWVhciB8fCAxMDA7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHJhbmdlRW5kID0gYWJzQ3VycmVudFllYXIgKyA1MDtcbiAgICB2YXIgcmFuZ2VFbmRDZW50dXJ5ID0gTWF0aC5mbG9vcihyYW5nZUVuZCAvIDEwMCkgKiAxMDA7XG4gICAgdmFyIGlzUHJldmlvdXNDZW50dXJ5ID0gdHdvRGlnaXRZZWFyID49IHJhbmdlRW5kICUgMTAwO1xuICAgIHJlc3VsdCA9IHR3b0RpZ2l0WWVhciArIHJhbmdlRW5kQ2VudHVyeSAtIChpc1ByZXZpb3VzQ2VudHVyeSA/IDEwMCA6IDApO1xuICB9XG4gIHJldHVybiBpc0NvbW1vbkVyYSA/IHJlc3VsdCA6IDEgLSByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMDtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGxvbmdGb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9sb25nRm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbiwgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuLCB0aHJvd1Byb3RlY3RlZEVycm9yIH0gZnJvbSBcIi4uL19saWIvcHJvdGVjdGVkVG9rZW5zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyIH0gZnJvbSBcIi4vX2xpYi9TZXR0ZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlcnMgfSBmcm9tIFwiLi9fbGliL3BhcnNlcnMvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjsgLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gW3lZUXFNTHdJZERlY2loSEtrbXNdbyBtYXRjaGVzIGFueSBhdmFpbGFibGUgb3JkaW5hbCBudW1iZXIgdG9rZW5cbi8vICAgKG9uZSBvZiB0aGUgY2VydGFpbiBsZXR0ZXJzIGZvbGxvd2VkIGJ5IGBvYClcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG52YXIgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9beVlRcU1Md0lkRGVjaWhIS2ttc11vfChcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuLy8gVGhpcyBSZWdFeHAgY2F0Y2hlcyBzeW1ib2xzIGVzY2FwZWQgYnkgcXVvdGVzLCBhbmQgYWxzb1xuLy8gc2VxdWVuY2VzIG9mIHN5bWJvbHMgUCwgcCwgYW5kIHRoZSBjb21iaW5hdGlvbnMgbGlrZSBgUFBQUFBQUHBwcHBwYFxudmFyIGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG52YXIgbm90V2hpdGVzcGFjZVJlZ0V4cCA9IC9cXFMvO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAbmFtZSBwYXJzZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGF0ZSBwYXJzZWQgZnJvbSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDUgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBOb3QgYWxsIHRva2VucyBhcmUgY29tcGF0aWJsZS4gQ29tYmluYXRpb25zIHRoYXQgZG9uJ3QgbWFrZSBzZW5zZSBvciBjb3VsZCBsZWFkIHRvIGJ1Z3MgYXJlIHByb2hpYml0ZWRcbiAqIGFuZCB3aWxsIHRocm93IGBSYW5nZUVycm9yYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgMjQtaG91ciBmb3JtYXQgdG9rZW4gd2l0aCBBTS9QTSB0b2tlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbjpcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBwYXJzZSgnMjMgQU0nLCAnSEggYScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFJhbmdlRXJyb3I6IFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgSEhgIGFuZCBgYWAgYXQgdGhlIHNhbWUgdGltZVxuICogYGBgXG4gKlxuICogU2VlIHRoZSBjb21wYXRpYmlsaXR5IHRhYmxlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UU9QVTN4VWhwbGxsNmR5b01tVlVYSEtsXzhDUkRzNl91ZUxtZXgzU29xd2h1b2xrdU4zTzA1bDRycXg1aDFkS1g4ZWI0NlVsLUNDU3JxL3B1Ymh0bWw/Z2lkPTAmc2luZ2xlPXRydWVcbiAqXG4gKiBBY2NlcHRlZCBmb3JtYXQgc3RyaW5nIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxQcmlvcnwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDk5OTkgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCAxMzAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDkwMDAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCAxMzAgfCBSICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5OSAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlIgICAgICB8IC00MywgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCw1IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHUgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgOTksIC05OSAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgMTIwIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgMTIwIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgMTEwIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgMTEwIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgMTAwIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgMTAwIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCAgOTAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgIDkwIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDUgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8ICA5MCB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCAgOTAgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgwIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgIDgwIHwgYi4uYmJiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgIDgwIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYwIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUwIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgIDQwIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCAgMzAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgIHwgIDIwIHwgVCAgICAgICB8IDUxMjk2OTUyMDkwMCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFRUICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCAgMTAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8ICAxMCB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgIE5BIHwgUCAgICAgICB8IDA1LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQICAgICAgfCBNYXkgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFAgICAgIHwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUCAgICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICB8IDIsNSw4IHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8ICBOQSB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgIE5BIHwgUHAgICAgICB8IDA1LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQcHAgICAgfCBNYXkgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBwcCAgIHwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUHBwICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICB8IDIsNSw4IHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXIuXG4gKiAgICBJbiBgZm9ybWF0YCBmdW5jdGlvbiwgdGhleSB3aWxsIHByb2R1Y2UgZGlmZmVyZW50IHJlc3VsdDpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogICAgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdhYmx5LlxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZTpcbiAqICAgIC0gZm9yIG51bWVyaWNhbCB1bml0cyAoYHl5eXl5eXl5YCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBhIG51bWJlclxuICogICAgICBhcyB3aWRlIGFzIHRoZSBzZXF1ZW5jZVxuICogICAgLSBmb3IgdGV4dCB1bml0cyAoYE1NTU1NTU1NYCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCB0aGUgd2lkZXN0IHZhcmlhdGlvbiBvZiB0aGUgdW5pdC5cbiAqICAgICAgVGhlc2UgdmFyaWF0aW9ucyBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAzLiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA0LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIHdpbGwgdHJ5IHRvIGd1ZXNzIHRoZSBjZW50dXJ5IG9mIHR3byBkaWdpdCB5ZWFyIGJ5IHByb3hpbWl0eSB3aXRoIGByZWZlcmVuY2VEYXRlYDpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAyMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAneXknLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBXZWQgSmFuIDAxIDE5NzUgMDA6MDA6MDBgXG4gKlxuICogICAgd2hpbGUgYHV1YCB3aWxsIGp1c3QgYXNzaWduIHRoZSB5ZWFyIGFzIGlzOlxuICpcbiAqICAgIGBwYXJzZSgnNTAnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBTYXQgSmFuIDAxIDAwNTAgMDA6MDA6MDBgXG4gKlxuICogICAgYHBhcnNlKCc3NScsICd1dScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFR1ZSBKYW4gMDEgMDA3NSAwMDowMDowMGBcbiAqXG4gKiAgICBUaGUgc2FtZSBkaWZmZXJlbmNlIGlzIHRydWUgZm9yIGxvY2FsIGFuZCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgKGBZYCBhbmQgYFJgKSxcbiAqICAgIGV4Y2VwdCBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgZGVwZW5kZW50IG9uIGBvcHRpb25zLndlZWtTdGFydHNPbmBcbiAqICAgIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIChjb21wYXJlIFtzZXRJU09XZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXRJU09XZWVrWWVhcn1cbiAqICAgIGFuZCBbc2V0V2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0V2Vla1llYXJ9KS5cbiAqXG4gKiA1LiBUaGVzZSBwYXR0ZXJucyBhcmUgbm90IGluIHRoZSBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiAgICAtIGBpYDogSVNPIGRheSBvZiB3ZWVrXG4gKiAgICAtIGBJYDogSVNPIHdlZWsgb2YgeWVhclxuICogICAgLSBgUmA6IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiAgICAtIGBvYDogb3JkaW5hbCBudW1iZXIgbW9kaWZpZXJcbiAqICAgIC0gYFBgOiBsb25nIGxvY2FsaXplZCBkYXRlXG4gKiAgICAtIGBwYDogbG9uZyBsb2NhbGl6ZWQgdGltZVxuICpcbiAqIDYuIGBZWWAgYW5kIGBZWVlZYCB0b2tlbnMgcmVwcmVzZW50IHdlZWstbnVtYmVyaW5nIHllYXJzIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIHllYXJzLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogNy4gYERgIGFuZCBgRERgIHRva2VucyByZXByZXNlbnQgZGF5cyBvZiB0aGUgeWVhciBidXQgdGhleSBhcmUgb2Z0aGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogOC4gYFArYCB0b2tlbnMgZG8gbm90IGhhdmUgYSBkZWZpbmVkIHByaW9yaXR5IHNpbmNlIHRoZXkgYXJlIG1lcmVseSBhbGlhc2VzIHRvIG90aGVyIHRva2VucyBiYXNlZFxuICogICAgb24gdGhlIGdpdmVuIGxvY2FsZS5cbiAqXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYFBgID0+IGBNTS9kZC95eXl5YFxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBwYCA9PiBgaGg6bW0gYWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgUGAgPT4gYGRkL01NL3l5eXlgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYHBgID0+IGBISDptbWBcbiAqXG4gKiBWYWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZGF0ZSBpbiB0aGUgZGVzY2VuZGluZyBvcmRlciBvZiBpdHMgdW5pdCdzIHByaW9yaXR5LlxuICogVW5pdHMgb2YgYW4gZXF1YWwgcHJpb3JpdHkgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXG4gKlxuICogSWYgbm8gdmFsdWVzIG9mIGhpZ2hlciBwcmlvcml0eSBhcmUgcGFyc2VkIChlLmcuIHdoZW4gcGFyc2luZyBzdHJpbmcgJ0phbnVhcnkgMXN0JyB3aXRob3V0IGEgeWVhciksXG4gKiB0aGUgdmFsdWVzIHdpbGwgYmUgdGFrZW4gZnJvbSAzcmQgYXJndW1lbnQgYHJlZmVyZW5jZURhdGVgIHdoaWNoIHdvcmtzIGFzIGEgY29udGV4dCBvZiBwYXJzaW5nLlxuICpcbiAqIGByZWZlcmVuY2VEYXRlYCBtdXN0IGJlIHBhc3NlZCBmb3IgY29ycmVjdCB3b3JrIG9mIHRoZSBmdW5jdGlvbi5cbiAqIElmIHlvdSdyZSBub3Qgc3VyZSB3aGljaCBgcmVmZXJlbmNlRGF0ZWAgdG8gc3VwcGx5LCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgRGF0ZTpcbiAqIGBwYXJzZSgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JywgbmV3IERhdGUoKSlgXG4gKiBJbiB0aGlzIGNhc2UgcGFyc2luZyB3aWxsIGJlIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgZGF0ZS5cbiAqIElmIGByZWZlcmVuY2VEYXRlYCBpcyBgSW52YWxpZCBEYXRlYCBvciBhIHZhbHVlIG5vdCBjb252ZXJ0aWJsZSB0byB2YWxpZCBgRGF0ZWAsXG4gKiB0aGVuIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgcmVmZXJlbmNlRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBJZiBwYXJzaW5nIGZhaWxlZCwgYEludmFsaWQgRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGRhdGVTdHJpbmcgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0U3RyaW5nIC0gdGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IHJlZmVyZW5jZURhdGUgLSBkZWZpbmVzIHZhbHVlcyBtaXNzaW5nIGZyb20gdGhlIHBhcnNlZCBkYXRlU3RyaW5nXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgYFlZYCBhbmQgYFlZWVlgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIGRheSBvZiB5ZWFyIHRva2VucyBgRGAgYW5kIGBERGA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAzIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYG1hdGNoYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDExIEZlYnJ1YXJ5IDIwMTQgZnJvbSBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIHZhciByZXN1bHQgPSBwYXJzZSgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JywgbmV3IERhdGUoKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDI4dGggb2YgRmVicnVhcnkgaW4gRXNwZXJhbnRvIGxvY2FsZSBpbiB0aGUgY29udGV4dCBvZiAyMDEwIHllYXI6XG4gKiBpbXBvcnQgZW8gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogdmFyIHJlc3VsdCA9IHBhcnNlKCcyOC1hIGRlIGZlYnJ1YXJvJywgXCJkbyAnZGUnIE1NTU1cIiwgbmV3IERhdGUoMjAxMCwgMCwgMSksIHtcbiAqICAgbG9jYWxlOiBlb1xuICogfSlcbiAqIC8vPT4gU3VuIEZlYiAyOCAyMDEwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlKGRpcnR5RGF0ZVN0cmluZywgZGlydHlGb3JtYXRTdHJpbmcsIGRpcnR5UmVmZXJlbmNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZTIsIF9vcHRpb25zJGxvY2FsZTIkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLCBfcmVmNSwgX3JlZjYsIF9yZWY3LCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZTMsIF9vcHRpb25zJGxvY2FsZTMkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMywgX2RlZmF1bHRPcHRpb25zJGxvY2FsNDtcbiAgcmVxdWlyZWRBcmdzKDMsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlU3RyaW5nID0gU3RyaW5nKGRpcnR5RGF0ZVN0cmluZyk7XG4gIHZhciBmb3JtYXRTdHJpbmcgPSBTdHJpbmcoZGlydHlGb3JtYXRTdHJpbmcpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICBpZiAoIWxvY2FsZS5tYXRjaCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIG1hdGNoIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZjUgPSAoX3JlZjYgPSAoX3JlZjcgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUzLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMyRvcHRpLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjcgIT09IHZvaWQgMCA/IF9yZWY3IDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNiAhPT0gdm9pZCAwID8gX3JlZjYgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNSAhPT0gdm9pZCAwID8gX3JlZjUgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgaWYgKGZvcm1hdFN0cmluZyA9PT0gJycpIHtcbiAgICBpZiAoZGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHJldHVybiB0b0RhdGUoZGlydHlSZWZlcmVuY2VEYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG4gIHZhciBzdWJGbk9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGVcbiAgfTtcblxuICAvLyBJZiB0aW1lem9uZSBpc24ndCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgc2V0IHRvIHRoZSBzeXN0ZW0gdGltZXpvbmVcbiAgdmFyIHNldHRlcnMgPSBbbmV3IERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKCldO1xuICB2YXIgdG9rZW5zID0gZm9ybWF0U3RyaW5nLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgaW4gbG9uZ0Zvcm1hdHRlcnMpIHtcbiAgICAgIHZhciBsb25nRm9ybWF0dGVyID0gbG9uZ0Zvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgcmV0dXJuIGxvbmdGb3JtYXR0ZXIoc3Vic3RyaW5nLCBsb2NhbGUuZm9ybWF0TG9uZyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApO1xuICB2YXIgdXNlZFRva2VucyA9IFtdO1xuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodG9rZW5zKSxcbiAgICBfc3RlcDtcbiAgdHJ5IHtcbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHtcbiAgICAgIHZhciB0b2tlbiA9IF9zdGVwLnZhbHVlO1xuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbih0b2tlbikpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyaW5nLCBkaXJ0eURhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuKHRva2VuKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHRva2VuLCBmb3JtYXRTdHJpbmcsIGRpcnR5RGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSB0b2tlblswXTtcbiAgICAgIHZhciBwYXJzZXIgPSBwYXJzZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgdmFyIGluY29tcGF0aWJsZVRva2VucyA9IHBhcnNlci5pbmNvbXBhdGlibGVUb2tlbnM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGluY29tcGF0aWJsZVRva2VucykpIHtcbiAgICAgICAgICB2YXIgaW5jb21wYXRpYmxlVG9rZW4gPSB1c2VkVG9rZW5zLmZpbmQoZnVuY3Rpb24gKHVzZWRUb2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZVRva2Vucy5pbmNsdWRlcyh1c2VkVG9rZW4udG9rZW4pIHx8IHVzZWRUb2tlbi50b2tlbiA9PT0gZmlyc3RDaGFyYWN0ZXI7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGluY29tcGF0aWJsZVRva2VuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgXCIuY29uY2F0KGluY29tcGF0aWJsZVRva2VuLmZ1bGxUb2tlbiwgXCJgIGFuZCBgXCIpLmNvbmNhdCh0b2tlbiwgXCJgIGF0IHRoZSBzYW1lIHRpbWVcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwYXJzZXIuaW5jb21wYXRpYmxlVG9rZW5zID09PSAnKicgJiYgdXNlZFRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYFwiLmNvbmNhdCh0b2tlbiwgXCJgIGFuZCBhbnkgb3RoZXIgdG9rZW4gYXQgdGhlIHNhbWUgdGltZVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdXNlZFRva2Vucy5wdXNoKHtcbiAgICAgICAgICB0b2tlbjogZmlyc3RDaGFyYWN0ZXIsXG4gICAgICAgICAgZnVsbFRva2VuOiB0b2tlblxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnJ1bihkYXRlU3RyaW5nLCB0b2tlbiwgbG9jYWxlLm1hdGNoLCBzdWJGbk9wdGlvbnMpO1xuICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHY6IG5ldyBEYXRlKE5hTilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHNldHRlcnMucHVzaChwYXJzZVJlc3VsdC5zZXR0ZXIpO1xuICAgICAgICBkYXRlU3RyaW5nID0gcGFyc2VSZXN1bHQucmVzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGAnICsgZmlyc3RDaGFyYWN0ZXIgKyAnYCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgICAgICBpZiAodG9rZW4gPT09IFwiJydcIikge1xuICAgICAgICAgIHRva2VuID0gXCInXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgICAgdG9rZW4gPSBjbGVhbkVzY2FwZWRTdHJpbmcodG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3V0IHRva2VuIGZyb20gc3RyaW5nLCBvciwgaWYgc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHRva2VuLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgICAgIGlmIChkYXRlU3RyaW5nLmluZGV4T2YodG9rZW4pID09PSAwKSB7XG4gICAgICAgICAgZGF0ZVN0cmluZyA9IGRhdGVTdHJpbmcuc2xpY2UodG9rZW4ubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdjogbmV3IERhdGUoTmFOKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKCk7XG4gICAgICBpZiAoX3R5cGVvZihfcmV0KSA9PT0gXCJvYmplY3RcIikgcmV0dXJuIF9yZXQudjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcmVtYWluaW5nIGlucHV0IGNvbnRhaW5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHdoaXRlc3BhY2VcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBfaXRlcmF0b3IuZigpO1xuICB9XG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA+IDAgJiYgbm90V2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGRhdGVTdHJpbmcpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHVuaXF1ZVByaW9yaXR5U2V0dGVycyA9IHNldHRlcnMubWFwKGZ1bmN0aW9uIChzZXR0ZXIpIHtcbiAgICByZXR1cm4gc2V0dGVyLnByaW9yaXR5O1xuICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKHByaW9yaXR5LCBpbmRleCwgYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXkuaW5kZXhPZihwcmlvcml0eSkgPT09IGluZGV4O1xuICB9KS5tYXAoZnVuY3Rpb24gKHByaW9yaXR5KSB7XG4gICAgcmV0dXJuIHNldHRlcnMuZmlsdGVyKGZ1bmN0aW9uIChzZXR0ZXIpIHtcbiAgICAgIHJldHVybiBzZXR0ZXIucHJpb3JpdHkgPT09IHByaW9yaXR5O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiLnN1YlByaW9yaXR5IC0gYS5zdWJQcmlvcml0eTtcbiAgICB9KTtcbiAgfSkubWFwKGZ1bmN0aW9uIChzZXR0ZXJBcnJheSkge1xuICAgIHJldHVybiBzZXR0ZXJBcnJheVswXTtcbiAgfSk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5UmVmZXJlbmNlRGF0ZSk7XG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhkYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpKTtcbiAgdmFyIGZsYWdzID0ge307XG4gIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodW5pcXVlUHJpb3JpdHlTZXR0ZXJzKSxcbiAgICBfc3RlcDI7XG4gIHRyeSB7XG4gICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgIHZhciBzZXR0ZXIgPSBfc3RlcDIudmFsdWU7XG4gICAgICBpZiAoIXNldHRlci52YWxpZGF0ZSh1dGNEYXRlLCBzdWJGbk9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHNldHRlci5zZXQodXRjRGF0ZSwgZmxhZ3MsIHN1YkZuT3B0aW9ucyk7XG4gICAgICAvLyBSZXN1bHQgaXMgdHVwbGUgKGRhdGUsIGZsYWdzKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICB1dGNEYXRlID0gcmVzdWx0WzBdO1xuICAgICAgICBhc3NpZ24oZmxhZ3MsIHJlc3VsdFsxXSk7XG4gICAgICAgIC8vIFJlc3VsdCBpcyBkYXRlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGNEYXRlID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yMi5mKCk7XG4gIH1cbiAgcmV0dXJuIHV0Y0RhdGU7XG59XG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIsIG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHBhcnNlSVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIElTTyBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFBhcnNlIHRoZSBnaXZlbiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0IGFuZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBGdW5jdGlvbiBhY2NlcHRzIGNvbXBsZXRlIElTTyA4NjAxIGZvcm1hdHMgYXMgd2VsbCBhcyBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucy5cbiAqIElTTyA4NjAxOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzbid0IGEgc3RyaW5nLCB0aGUgZnVuY3Rpb24gY2Fubm90IHBhcnNlIHRoZSBzdHJpbmcgb3JcbiAqIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhcmd1bWVudCAtIHRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcyMDE0LTAyLTExVDExOjMwOjMwJyB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJzIwMTQtMDItMTFUMTE6MzA6MzAnKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCBzdHJpbmcgJyswMjAxNDEwMScgdG8gZGF0ZSxcbiAqIC8vIGlmIHRoZSBhZGRpdGlvbmFsIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0IGlzIDE6XG4gKiBjb25zdCByZXN1bHQgPSBwYXJzZUlTTygnKzAyMDE0MTAxJywgeyBhZGRpdGlvbmFsRGlnaXRzOiAxIH0pXG4gKiAvLz0+IEZyaSBBcHIgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUlTTyhhcmd1bWVudCwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkYWRkaXRpb25hbERpO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGFkZGl0aW9uYWxEaWdpdHMgPSB0b0ludGVnZXIoKF9vcHRpb25zJGFkZGl0aW9uYWxEaSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRhZGRpdGlvbmFsRGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJGFkZGl0aW9uYWxEaSA6IDIpO1xuICBpZiAoYWRkaXRpb25hbERpZ2l0cyAhPT0gMiAmJiBhZGRpdGlvbmFsRGlnaXRzICE9PSAxICYmIGFkZGl0aW9uYWxEaWdpdHMgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMicpO1xuICB9XG4gIGlmICghKHR5cGVvZiBhcmd1bWVudCA9PT0gJ3N0cmluZycgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIGRhdGVTdHJpbmdzID0gc3BsaXREYXRlU3RyaW5nKGFyZ3VtZW50KTtcbiAgdmFyIGRhdGU7XG4gIGlmIChkYXRlU3RyaW5ncy5kYXRlKSB7XG4gICAgdmFyIHBhcnNlWWVhclJlc3VsdCA9IHBhcnNlWWVhcihkYXRlU3RyaW5ncy5kYXRlLCBhZGRpdGlvbmFsRGlnaXRzKTtcbiAgICBkYXRlID0gcGFyc2VEYXRlKHBhcnNlWWVhclJlc3VsdC5yZXN0RGF0ZVN0cmluZywgcGFyc2VZZWFyUmVzdWx0LnllYXIpO1xuICB9XG4gIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIHZhciB0aW1lID0gMDtcbiAgdmFyIG9mZnNldDtcbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICB0aW1lID0gcGFyc2VUaW1lKGRhdGVTdHJpbmdzLnRpbWUpO1xuICAgIGlmIChpc05hTih0aW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG4gIGlmIChkYXRlU3RyaW5ncy50aW1lem9uZSkge1xuICAgIG9mZnNldCA9IHBhcnNlVGltZXpvbmUoZGF0ZVN0cmluZ3MudGltZXpvbmUpO1xuICAgIGlmIChpc05hTihvZmZzZXQpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGRpcnR5RGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUpO1xuICAgIC8vIGpzIHBhcnNlZCBzdHJpbmcgYXNzdW1pbmcgaXQncyBpbiBVVEMgdGltZXpvbmVcbiAgICAvLyBidXQgd2UgbmVlZCBpdCB0byBiZSBwYXJzZWQgaW4gb3VyIHRpbWV6b25lXG4gICAgLy8gc28gd2UgdXNlIHV0YyB2YWx1ZXMgdG8gYnVpbGQgZGF0ZSBpbiBvdXIgdGltZXpvbmUuXG4gICAgLy8gWWVhciB2YWx1ZXMgZnJvbSAwIHRvIDk5IG1hcCB0byB0aGUgeWVhcnMgMTkwMCB0byAxOTk5XG4gICAgLy8gc28gc2V0IHllYXIgZXhwbGljaXRseSB3aXRoIHNldEZ1bGxZZWFyLlxuICAgIHZhciByZXN1bHQgPSBuZXcgRGF0ZSgwKTtcbiAgICByZXN1bHQuc2V0RnVsbFllYXIoZGlydHlEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRpcnR5RGF0ZS5nZXRVVENNb250aCgpLCBkaXJ0eURhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICByZXN1bHQuc2V0SG91cnMoZGlydHlEYXRlLmdldFVUQ0hvdXJzKCksIGRpcnR5RGF0ZS5nZXRVVENNaW51dGVzKCksIGRpcnR5RGF0ZS5nZXRVVENTZWNvbmRzKCksIGRpcnR5RGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldCk7XG59XG52YXIgcGF0dGVybnMgPSB7XG4gIGRhdGVUaW1lRGVsaW1pdGVyOiAvW1QgXS8sXG4gIHRpbWVab25lRGVsaW1pdGVyOiAvW1ogXS9pLFxuICB0aW1lem9uZTogLyhbWistXS4qKSQvXG59O1xudmFyIGRhdGVSZWdleCA9IC9eLT8oPzooXFxkezN9KXwoXFxkezJ9KSg/Oi0/KFxcZHsyfSkpP3xXKFxcZHsyfSkoPzotPyhcXGR7MX0pKT98KSQvO1xudmFyIHRpbWVSZWdleCA9IC9eKFxcZHsyfSg/OlsuLF1cXGQqKT8pKD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyg/Ojo/KFxcZHsyfSg/OlsuLF1cXGQqKT8pKT8kLztcbnZhciB0aW1lem9uZVJlZ2V4ID0gL14oWystXSkoXFxkezJ9KSg/Ojo/KFxcZHsyfSkpPyQvO1xuZnVuY3Rpb24gc3BsaXREYXRlU3RyaW5nKGRhdGVTdHJpbmcpIHtcbiAgdmFyIGRhdGVTdHJpbmdzID0ge307XG4gIHZhciBhcnJheSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMuZGF0ZVRpbWVEZWxpbWl0ZXIpO1xuICB2YXIgdGltZVN0cmluZztcblxuICAvLyBUaGUgcmVnZXggbWF0Y2ggc2hvdWxkIG9ubHkgcmV0dXJuIGF0IG1heGltdW0gdHdvIGFycmF5IGVsZW1lbnRzLlxuICAvLyBbZGF0ZV0sIFt0aW1lXSwgb3IgW2RhdGUsIHRpbWVdLlxuICBpZiAoYXJyYXkubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBkYXRlU3RyaW5ncztcbiAgfVxuICBpZiAoLzovLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdO1xuICB9IGVsc2Uge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBhcnJheVswXTtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMV07XG4gICAgaWYgKHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyLnRlc3QoZGF0ZVN0cmluZ3MuZGF0ZSkpIHtcbiAgICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyKVswXTtcbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihkYXRlU3RyaW5ncy5kYXRlLmxlbmd0aCwgZGF0ZVN0cmluZy5sZW5ndGgpO1xuICAgIH1cbiAgfVxuICBpZiAodGltZVN0cmluZykge1xuICAgIHZhciB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lLmV4ZWModGltZVN0cmluZyk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJyk7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lem9uZSA9IHRva2VuWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdzO1xufVxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXig/OihcXFxcZHs0fXxbKy1dXFxcXGR7JyArICg0ICsgYWRkaXRpb25hbERpZ2l0cykgKyAnfSl8KFxcXFxkezJ9fFsrLV1cXFxcZHsnICsgKDIgKyBhZGRpdGlvbmFsRGlnaXRzKSArICd9KSQpJyk7XG4gIHZhciBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2gocmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4ge1xuICAgIHllYXI6IE5hTixcbiAgICByZXN0RGF0ZVN0cmluZzogJydcbiAgfTtcbiAgdmFyIHllYXIgPSBjYXB0dXJlc1sxXSA/IHBhcnNlSW50KGNhcHR1cmVzWzFdKSA6IG51bGw7XG4gIHZhciBjZW50dXJ5ID0gY2FwdHVyZXNbMl0gPyBwYXJzZUludChjYXB0dXJlc1syXSkgOiBudWxsO1xuXG4gIC8vIGVpdGhlciB5ZWFyIG9yIGNlbnR1cnkgaXMgbnVsbCwgbm90IGJvdGhcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBjZW50dXJ5ID09PSBudWxsID8geWVhciA6IGNlbnR1cnkgKiAxMDAsXG4gICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoKGNhcHR1cmVzWzFdIHx8IGNhcHR1cmVzWzJdKS5sZW5ndGgpXG4gIH07XG59XG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZywgeWVhcikge1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoeWVhciA9PT0gbnVsbCkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2goZGF0ZVJlZ2V4KTtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHN0cmluZ1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIGlzV2Vla0RhdGUgPSAhIWNhcHR1cmVzWzRdO1xuICB2YXIgZGF5T2ZZZWFyID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1sxXSk7XG4gIHZhciBtb250aCA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMl0pIC0gMTtcbiAgdmFyIGRheSA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbM10pO1xuICB2YXIgd2VlayA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbNF0pO1xuICB2YXIgZGF5T2ZXZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s1XSkgLSAxO1xuICBpZiAoaXNXZWVrRGF0ZSkge1xuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrLCBkYXlPZldlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICAgIGlmICghdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpIHx8ICF2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIE1hdGgubWF4KGRheU9mWWVhciwgZGF5KSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn1cbmZ1bmN0aW9uIHBhcnNlRGF0ZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gcGFyc2VJbnQodmFsdWUpIDogMTtcbn1cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nKSB7XG4gIHZhciBjYXB0dXJlcyA9IHRpbWVTdHJpbmcubWF0Y2godGltZVJlZ2V4KTtcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIE5hTjsgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHRpbWVcblxuICB2YXIgaG91cnMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzFdKTtcbiAgdmFyIG1pbnV0ZXMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzJdKTtcbiAgdmFyIHNlY29uZHMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzNdKTtcbiAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICByZXR1cm4gaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogMTAwMDtcbn1cbmZ1bmN0aW9uIHBhcnNlVGltZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgnLCcsICcuJykpIHx8IDA7XG59XG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nKSB7XG4gIGlmICh0aW1lem9uZVN0cmluZyA9PT0gJ1onKSByZXR1cm4gMDtcbiAgdmFyIGNhcHR1cmVzID0gdGltZXpvbmVTdHJpbmcubWF0Y2godGltZXpvbmVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiAwO1xuICB2YXIgc2lnbiA9IGNhcHR1cmVzWzFdID09PSAnKycgPyAtMSA6IDE7XG4gIHZhciBob3VycyA9IHBhcnNlSW50KGNhcHR1cmVzWzJdKTtcbiAgdmFyIG1pbnV0ZXMgPSBjYXB0dXJlc1szXSAmJiBwYXJzZUludChjYXB0dXJlc1szXSkgfHwgMDtcbiAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIHNpZ24gKiAoaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufVxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3O1xuICB2YXIgZGlmZiA9ICh3ZWVrIC0gMSkgKiA3ICsgZGF5ICsgMSAtIGZvdXJ0aE9mSmFudWFyeURheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuXG4vLyBGZWJydWFyeSBpcyBudWxsIHRvIGhhbmRsZSB0aGUgbGVhcCB5ZWFyICh1c2luZyB8fClcbnZhciBkYXlzSW5Nb250aHMgPSBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbmZ1bmN0aW9uIGlzTGVhcFllYXJJbmRleCh5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDA7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUpIHtcbiAgcmV0dXJuIG1vbnRoID49IDAgJiYgbW9udGggPD0gMTEgJiYgZGF0ZSA+PSAxICYmIGRhdGUgPD0gKGRheXNJbk1vbnRoc1ttb250aF0gfHwgKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDI5IDogMjgpKTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpIHtcbiAgcmV0dXJuIGRheU9mWWVhciA+PSAxICYmIGRheU9mWWVhciA8PSAoaXNMZWFwWWVhckluZGV4KHllYXIpID8gMzY2IDogMzY1KTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoX3llYXIsIHdlZWssIGRheSkge1xuICByZXR1cm4gd2VlayA+PSAxICYmIHdlZWsgPD0gNTMgJiYgZGF5ID49IDAgJiYgZGF5IDw9IDY7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgaWYgKGhvdXJzID09PSAyNCkge1xuICAgIHJldHVybiBtaW51dGVzID09PSAwICYmIHNlY29uZHMgPT09IDA7XG4gIH1cbiAgcmV0dXJuIHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDwgNjAgJiYgbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPCA2MCAmJiBob3VycyA+PSAwICYmIGhvdXJzIDwgMjU7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWV6b25lKF9ob3VycywgbWludXRlcykge1xuICByZXR1cm4gbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPD0gNTk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwYXJzZUpTT05cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgYSBKU09OIGRhdGUgc3RyaW5nXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0cyBhIGNvbXBsZXRlIElTTyBkYXRlIHN0cmluZyBpbiBVVEMgdGltZSwgdGhlIHR5cGljYWwgZm9ybWF0IGZvciB0cmFuc21pdHRpbmdcbiAqIGEgZGF0ZSBpbiBKU09OLCB0byBhIEphdmFTY3JpcHQgYERhdGVgIGluc3RhbmNlLlxuICpcbiAqIFRoaXMgaXMgYSBtaW5pbWFsIGltcGxlbWVudGF0aW9uIGZvciBjb252ZXJ0aW5nIGRhdGVzIHJldHJpZXZlZCBmcm9tIGEgSlNPTiBBUEkgdG9cbiAqIGEgYERhdGVgIGluc3RhbmNlIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBgZGF0ZS1mbnNgIGxpYnJhcnkuXG4gKiBUaGUgZm9sbG93aW5nIGZvcm1hdHMgYXJlIHN1cHBvcnRlZDpcbiAqXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwLjEyM1pgOiBUaGUgb3V0cHV0IG9mIGAudG9JU09TdHJpbmcoKWAgYW5kIGBKU09OLnN0cmluZ2lmeShuZXcgRGF0ZSgpKWBcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTBaYDogV2l0aG91dCBtaWxsaXNlY29uZHNcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTArMDA6MDBgOiBXaXRoIGEgemVybyBvZmZzZXQsIHRoZSBkZWZhdWx0IEpTT04gZW5jb2RlZCBmb3JtYXQgaW4gc29tZSBvdGhlciBsYW5ndWFnZXNcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTArMDU6NDVgOiBXaXRoIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgb2Zmc2V0LCB0aGUgZGVmYXVsdCBKU09OIGVuY29kZWQgZm9ybWF0IGluIHNvbWUgb3RoZXIgbGFuZ3VhZ2VzXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwKzAwMDBgOiBXaXRoIGEgemVybyBvZmZzZXQgd2l0aG91dCBhIGNvbG9uXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwYDogV2l0aG91dCBhIHRyYWlsaW5nICdaJyBzeW1ib2xcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTAuMTIzNDU2N2A6IFVwIHRvIDcgZGlnaXRzIGluIG1pbGxpc2Vjb25kcyBmaWVsZC4gT25seSBmaXJzdCAzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgc2luY2UgSlMgZG9lcyBub3QgYWxsb3cgZnJhY3Rpb25hbCBtaWxsaXNlY29uZHNcbiAqIC0gYDIwMDAtMDMtMTUgMDU6MjA6MTBgOiBXaXRoIGEgc3BhY2UgaW5zdGVhZCBvZiBhICdUJyBzZXBhcmF0b3IgZm9yIEFQSXMgcmV0dXJuaW5nIGEgU1FMIGRhdGUgd2l0aG91dCByZWZvcm1hdHRpbmdcbiAqXG4gKiBGb3IgY29udmVuaWVuY2UgYW5kIGVhc2Ugb2YgdXNlIHRoZXNlIG90aGVyIGlucHV0IHR5cGVzIGFyZSBhbHNvIHN1cHBvcnRlZFxuICogdmlhIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfTpcbiAqXG4gKiAtIEEgYERhdGVgIGluc3RhbmNlIHdpbGwgYmUgY2xvbmVkXG4gKiAtIEEgYG51bWJlcmAgd2lsbCBiZSB0cmVhdGVkIGFzIGEgdGltZXN0YW1wXG4gKlxuICogQW55IG90aGVyIGlucHV0IHR5cGUgb3IgaW52YWxpZCBkYXRlIHN0cmluZ3Mgd2lsbCByZXR1cm4gYW4gYEludmFsaWQgRGF0ZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfERhdGV9IGFyZ3VtZW50IEEgZnVsbHkgZm9ybWVkIElTTzg2MDEgZGF0ZSBzdHJpbmcgdG8gY29udmVydFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VKU09OKGFyZ3VtZW50KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJykge1xuICAgIHZhciBwYXJ0cyA9IGFyZ3VtZW50Lm1hdGNoKC8oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVtUIF0oXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLihcXGR7MCw3fSkpPyg/Olp8KC4pKFxcZHsyfSk6PyhcXGR7Mn0pPyk/Lyk7XG4gICAgaWYgKHBhcnRzKSB7XG4gICAgICAvLyBHcm91cCA4IG1hdGNoZXMgdGhlIHNpZ25cbiAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrcGFydHNbMV0sICtwYXJ0c1syXSAtIDEsICtwYXJ0c1szXSwgK3BhcnRzWzRdIC0gKCtwYXJ0c1s5XSB8fCAwKSAqIChwYXJ0c1s4XSA9PSAnLScgPyAtMSA6IDEpLCArcGFydHNbNV0gLSAoK3BhcnRzWzEwXSB8fCAwKSAqIChwYXJ0c1s4XSA9PSAnLScgPyAtMSA6IDEpLCArcGFydHNbNl0sICsoKHBhcnRzWzddIHx8ICcwJykgKyAnMDAnKS5zdWJzdHJpbmcoMCwgMykpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgcmV0dXJuIHRvRGF0ZShhcmd1bWVudCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXkgZnJvbSBcIi4uL2dldERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1YkRheXMgZnJvbSBcIi4uL3N1YkRheXMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNEYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIGRheSBvZiB0aGUgd2Vlaz9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIGRheSBvZiB0aGUgd2Vlaz8gMC02IHRoZSBkYXkgb2YgdGhlIHdlZWssIDAgcmVwcmVzZW50cyBTdW5kYXkuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYXkgLSBkYXkgb2YgdGhlIHdlZWtcbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBkYXRlIGlzIHRoZSBwcmV2aW91cyBkYXkgb2Ygd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAtIDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIE1vbmRheSBiZWZvcmUgTWFyLCAyMCwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzRGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIwKSwgMSlcbiAqIC8vPT4gTW9uIE1hciAxNiAyMDIwIDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFR1ZXNkYXkgYmVmb3JlIE1hciwgMjEsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c0RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMSksIDIpXG4gKiAvLz0+IFR1ZSBNYXIgMTcgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c0RheShkYXRlLCBkYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWx0YSA9IGdldERheShkYXRlKSAtIGRheTtcbiAgaWYgKGRlbHRhIDw9IDApIGRlbHRhICs9IDc7XG4gIHJldHVybiBzdWJEYXlzKGRhdGUsIGRlbHRhKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c0ZyaWRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgRnJpZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5IGJlZm9yZSBKdW4sIDE5LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNGcmlkYXkobmV3IERhdGUoMjAyMSwgNSwgMTkpKVxuICogLy89PiBGcmkgSnVuZSAxOCAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzRnJpZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCA1KTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c01vbmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgTW9uZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNNb25kYXkobmV3IERhdGUoMjAyMSwgNSwgMTgpKVxuICogLy89PiBNb24gSnVuZSAxNCAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzTW9uZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCAxKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1NhdHVyZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBTYXR1cmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgU2F0dXJkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBTYXR1cmRheSBiZWZvcmUgSnVuLCAyMCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzU2F0dXJkYXkobmV3IERhdGUoMjAyMSwgNSwgMjApKVxuICogLy89PiBTYXQgSnVuZSAxOSAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzU2F0dXJkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDYpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzU3VuZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXkgYmVmb3JlIEp1biwgMjEsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1N1bmRheShuZXcgRGF0ZSgyMDIxLCA1LCAyMSkpXG4gKiAvLz0+IFN1biBKdW5lIDIwIDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNTdW5kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDApO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzVGh1cnNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFRodXJzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBUaHVyc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFRodXJzZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNUaHVyc2RheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IFRodSBKdW5lIDE3IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNUaHVyc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgNCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNUdWVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgVHVlc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNUdWVzZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE4KSlcbiAqIC8vPT4gVHVlIEp1bmUgMTUgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1R1ZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzV2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBXZWRuZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXkgYmVmb3JlIEp1biwgMTgsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1dlZG5lc2RheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IFdlZCBKdW5lIDE2IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNXZWRuZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblF1YXJ0ZXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHF1YXJ0ZXJzVG9Nb250aHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIG1vbnRocy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgcXVhcnRlcnMgdG8gYSBmdWxsIG51bWJlciBvZiBtb250aHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHF1YXJ0ZXJzIC0gbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgY29udmVydGVkIGluIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBxdWFydGVycyB0byBtb250aHNcbiAqIGNvbnN0IHJlc3VsdCA9IHF1YXJ0ZXJzVG9Nb250aHMoMilcbiAqIC8vPT4gNlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFydGVyc1RvTW9udGhzKHF1YXJ0ZXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihxdWFydGVycyAqIG1vbnRoc0luUXVhcnRlcik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHF1YXJ0ZXJzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBxdWFydGVyc1RvWWVhcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIHllYXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBxdWFydGVycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHllYXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBxdWFydGVycyAtIG51bWJlciBvZiBxdWFydGVycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHF1YXJ0ZXJzIGNvbnZlcnRlZCBpbiB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgOCBxdWFydGVycyB0byB5ZWFyc1xuICogY29uc3QgcmVzdWx0ID0gcXVhcnRlcnNUb1llYXJzKDgpXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IHF1YXJ0ZXJzVG9ZZWFycygxMSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFydGVyc1RvWWVhcnMocXVhcnRlcnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFycyA9IHF1YXJ0ZXJzIC8gcXVhcnRlcnNJblllYXI7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXJzKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSByb3VuZFRvTmVhcmVzdE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUm91bmRzIHRoZSBnaXZlbiBkYXRlIHRvIHRoZSBuZWFyZXN0IG1pbnV0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUm91bmRzIHRoZSBnaXZlbiBkYXRlIHRvIHRoZSBuZWFyZXN0IG1pbnV0ZSAob3IgbnVtYmVyIG9mIG1pbnV0ZXMpLlxuICogUm91bmRzIHVwIHdoZW4gdGhlIGdpdmVuIGRhdGUgaXMgZXhhY3RseSBiZXR3ZWVuIHRoZSBuZWFyZXN0IHJvdW5kIG1pbnV0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHJvdW5kXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5uZWFyZXN0VG89MV0gLSBuZWFyZXN0IG51bWJlciBvZiBtaW51dGVzIHRvIHJvdW5kIHRvLiBFLmcuIGAxNWAgdG8gcm91bmQgdG8gcXVhcnRlciBob3Vycy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgcm91bmRlZCB0byB0aGUgY2xvc2VzdCBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubmVhcmVzdFRvYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUm91bmQgMTAgSnVseSAyMDE0IDEyOjEyOjM0IHRvIG5lYXJlc3QgbWludXRlOlxuICogY29uc3QgcmVzdWx0ID0gcm91bmRUb05lYXJlc3RNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMTIsIDM0KSlcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjEzOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJvdW5kIDEwIEp1bHkgMjAxNCAxMjowNzozMCB0byBuZWFyZXN0IHF1YXJ0ZXIgaG91cjpcbiAqIGNvbnN0IHJlc3VsdCA9IHJvdW5kVG9OZWFyZXN0TWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDEyLCAzNCksIHsgbmVhcmVzdFRvOiAxNSB9KVxuICogLy8gcm91bmRzIHVwIGJlY2F1c2UgZ2l2ZW4gZGF0ZSBpcyBleGFjdGx5IGJldHdlZW4gMTI6MDA6MDAgYW5kIDEyOjE1OjAwXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjoxNTowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByb3VuZFRvTmVhcmVzdE1pbnV0ZXMoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRuZWFyZXN0VG87XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IG5vbmUgcHJvdmlkZWQgcHJlc2VudCcpO1xuICB9XG4gIHZhciBuZWFyZXN0VG8gPSB0b0ludGVnZXIoKF9vcHRpb25zJG5lYXJlc3RUbyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5uZWFyZXN0VG8pICE9PSBudWxsICYmIF9vcHRpb25zJG5lYXJlc3RUbyAhPT0gdm9pZCAwID8gX29wdGlvbnMkbmVhcmVzdFRvIDogMSk7XG4gIGlmIChuZWFyZXN0VG8gPCAxIHx8IG5lYXJlc3RUbyA+IDMwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BvcHRpb25zLm5lYXJlc3RUb2AgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDMwJyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKTsgLy8gcmVsZXZhbnQgaWYgbmVhcmVzdFRvIGlzIDEsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGNhc2VcbiAgdmFyIG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKSArIHNlY29uZHMgLyA2MDtcbiAgdmFyIHJvdW5kaW5nTWV0aG9kID0gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKTtcbiAgdmFyIHJvdW5kZWRNaW51dGVzID0gcm91bmRpbmdNZXRob2QobWludXRlcyAvIG5lYXJlc3RUbykgKiBuZWFyZXN0VG87XG4gIHZhciByZW1haW5kZXJNaW51dGVzID0gbWludXRlcyAlIG5lYXJlc3RUbztcbiAgdmFyIGFkZGVkTWludXRlcyA9IE1hdGgucm91bmQocmVtYWluZGVyTWludXRlcyAvIG5lYXJlc3RUbykgKiBuZWFyZXN0VG87XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGRhdGUuZ2V0SG91cnMoKSwgcm91bmRlZE1pbnV0ZXMgKyBhZGRlZE1pbnV0ZXMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZWNvbmRzVG9Ib3Vyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBzZWNvbmRzIHRvIGhvdXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgaG91cnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHNlY29uZHMgLSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgY29udmVydGVkIGluIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA3MjAwIHNlY29uZHMgaW50byBob3Vyc1xuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvSG91cnMoNzIwMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvSG91cnMoNzE5OSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWNvbmRzVG9Ib3VycyhzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaG91cnMgPSBzZWNvbmRzIC8gc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2Vjb25kc1RvTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHNlY29uZHMgdG8gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGNvbnZlcnRlZCBpbiBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgc2Vjb25kcyBpbnRvIG1pbGxpc2Vjb25kc1xuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvTWlsbGlzZWNvbmRzKDIpXG4gKiAvLz0+IDIwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2Vjb25kc1RvTWlsbGlzZWNvbmRzKHNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBzZWNvbmRzICogbWlsbGlzZWNvbmRzSW5TZWNvbmQ7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2Vjb25kc1RvTWludXRlc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBzZWNvbmRzIHRvIG1pbnV0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGNvbnZlcnRlZCBpbiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxMjAgc2Vjb25kcyBpbnRvIG1pbnV0ZXNcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb01pbnV0ZXMoMTIwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9NaW51dGVzKDExOSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWNvbmRzVG9NaW51dGVzKHNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBtaW51dGVzID0gc2Vjb25kcyAvIHNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIE1hdGguZmxvb3IobWludXRlcyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc2V0TW9udGggZnJvbSBcIi4uL3NldE1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCBkYXRlIHZhbHVlcyB0byBhIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgZGF0ZSB2YWx1ZXMgdG8gYSBnaXZlbiBkYXRlLlxuICpcbiAqIFNldHMgdGltZSB2YWx1ZXMgdG8gZGF0ZSBmcm9tIG9iamVjdCBgdmFsdWVzYC5cbiAqIEEgdmFsdWUgaXMgbm90IHNldCBpZiBpdCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciBkb2Vzbid0IGV4aXN0IGluIGB2YWx1ZXNgLlxuICpcbiAqIE5vdGUgYWJvdXQgYnVuZGxlIHNpemU6IGBzZXRgIGRvZXMgbm90IGludGVybmFsbHkgdXNlIGBzZXRYYCBmdW5jdGlvbnMgZnJvbSBkYXRlLWZucyBidXQgaW5zdGVhZCBvcHRzXG4gKiB0byB1c2UgbmF0aXZlIGBEYXRlI3NldFhgIG1ldGhvZHMuIElmIHlvdSB1c2UgdGhpcyBmdW5jdGlvbiwgeW91IG1heSBub3Qgd2FudCB0byBpbmNsdWRlIHRoZVxuICogb3RoZXIgYHNldFhgIGZ1bmN0aW9ucyB0aGF0IGRhdGUtZm5zIHByb3ZpZGVzIGlmIHlvdSBhcmUgY29uY2VybmVkIGFib3V0IHRoZSBidW5kbGUgc2l6ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLnllYXJdIC0gdGhlIG51bWJlciBvZiB5ZWFycyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLm1vbnRoXSAtIHRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMuZGF0ZV0gLSB0aGUgbnVtYmVyIG9mIGRheXMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5ob3Vyc10gLSB0aGUgbnVtYmVyIG9mIGhvdXJzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMubWludXRlc10gLSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5zZWNvbmRzXSAtIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLm1pbGxpc2Vjb25kc10gLSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzZXRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCBvcHRpb25zIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYHZhbHVlc2AgbXVzdCBiZSBhbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVHJhbnNmb3JtIDEgU2VwdGVtYmVyIDIwMTQgaW50byAyMCBPY3RvYmVyIDIwMTUgaW4gYSBzaW5nbGUgbGluZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldChuZXcgRGF0ZSgyMDE0LCA4LCAyMCksIHsgeWVhcjogMjAxNSwgbW9udGg6IDksIGRhdGU6IDIwIH0pXG4gKiAvLz0+IFR1ZSBPY3QgMjAgMjAxNSAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgMTIgUE0gdG8gMSBTZXB0ZW1iZXIgMjAxNCAwMToyMzo0NSB0byAxIFNlcHRlbWJlciAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0KG5ldyBEYXRlKDIwMTQsIDgsIDEsIDEsIDIzLCA0NSksIHsgaG91cnM6IDEyIH0pXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMjoyMzo0NVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXQoZGlydHlEYXRlLCB2YWx1ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIGlmIChfdHlwZW9mKHZhbHVlcykgIT09ICdvYmplY3QnIHx8IHZhbHVlcyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZXMgcGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcblxuICAvLyBDaGVjayBpZiBkYXRlIGlzIEludmFsaWQgRGF0ZSBiZWNhdXNlIERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyIGlnbm9yZXMgdGhlIHZhbHVlIG9mIEludmFsaWQgRGF0ZVxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgaWYgKHZhbHVlcy55ZWFyICE9IG51bGwpIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHZhbHVlcy55ZWFyKTtcbiAgfVxuICBpZiAodmFsdWVzLm1vbnRoICE9IG51bGwpIHtcbiAgICBkYXRlID0gc2V0TW9udGgoZGF0ZSwgdmFsdWVzLm1vbnRoKTtcbiAgfVxuICBpZiAodmFsdWVzLmRhdGUgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0RGF0ZSh0b0ludGVnZXIodmFsdWVzLmRhdGUpKTtcbiAgfVxuICBpZiAodmFsdWVzLmhvdXJzICE9IG51bGwpIHtcbiAgICBkYXRlLnNldEhvdXJzKHRvSW50ZWdlcih2YWx1ZXMuaG91cnMpKTtcbiAgfVxuICBpZiAodmFsdWVzLm1pbnV0ZXMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0TWludXRlcyh0b0ludGVnZXIodmFsdWVzLm1pbnV0ZXMpKTtcbiAgfVxuICBpZiAodmFsdWVzLnNlY29uZHMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0U2Vjb25kcyh0b0ludGVnZXIodmFsdWVzLnNlY29uZHMpKTtcbiAgfVxuICBpZiAodmFsdWVzLm1pbGxpc2Vjb25kcyAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHModG9JbnRlZ2VyKHZhbHVlcy5taWxsaXNlY29uZHMpKTtcbiAgfVxuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXREYXRlXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheU9mTW9udGggLSB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5IG9mIHRoZSBtb250aCBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAzMHRoIGRheSBvZiB0aGUgbW9udGggdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERhdGUobmV3IERhdGUoMjAxNCwgOCwgMSksIDMwKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGF0ZShkaXJ0eURhdGUsIGRpcnR5RGF5T2ZNb250aCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheU9mTW9udGggPSB0b0ludGVnZXIoZGlydHlEYXlPZk1vbnRoKTtcbiAgZGF0ZS5zZXREYXRlKGRheU9mTW9udGgpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGRheSBvZiB0aGUgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5IC0gdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB3ZWVrIGRheSB0byBTdW5kYXksIHdpdGggdGhlIGRlZmF1bHQgd2Vla1N0YXJ0c09uIG9mIFN1bmRheTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERheShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMClcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB3ZWVrIGRheSB0byBTdW5kYXksIHdpdGggYSB3ZWVrU3RhcnRzT24gb2YgTW9uZGF5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF5KG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAwLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGF5KGRpcnR5RGF0ZSwgZGlydHlEYXksIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkZWx0YSA9IDcgLSB3ZWVrU3RhcnRzT247XG4gIHZhciBkaWZmID0gZGF5IDwgMCB8fCBkYXkgPiA2ID8gZGF5IC0gKGN1cnJlbnREYXkgKyBkZWx0YSkgJSA3IDogKGRheUluZGV4ICsgZGVsdGEpICUgNyAtIChjdXJyZW50RGF5ICsgZGVsdGEpICUgNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGlmZik7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGF5T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXlPZlllYXIgLSB0aGUgZGF5IG9mIHRoZSB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMm5kIGRheSBvZiB0aGUgeWVhciB0byAyIEp1bHkgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERheU9mWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgMilcbiAqIC8vPT4gVGh1IEphbiAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldERheU9mWWVhcihkaXJ0eURhdGUsIGRpcnR5RGF5T2ZZZWFyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5T2ZZZWFyID0gdG9JbnRlZ2VyKGRpcnR5RGF5T2ZZZWFyKTtcbiAgZGF0ZS5zZXRNb250aCgwKTtcbiAgZGF0ZS5zZXREYXRlKGRheU9mWWVhcik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zLCBzZXREZWZhdWx0T3B0aW9ucyBhcyBzZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldERlZmF1bHRPcHRpb25zXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCBkZWZhdWx0IG9wdGlvbnMgaW5jbHVkaW5nIGxvY2FsZS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXRzIHRoZSBkZWZhdWx0cyBmb3JcbiAqIGBvcHRpb25zLmxvY2FsZWAsIGBvcHRpb25zLndlZWtTdGFydHNPbmAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWBcbiAqIGFyZ3VtZW50cyBmb3IgYWxsIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbmV3T3B0aW9ucyAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW25ld09wdGlvbnMubG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtuZXdPcHRpb25zLndlZWtTdGFydHNPbl0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW25ld09wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IGdsb2JhbCBsb2NhbGU6XG4gKiBpbXBvcnQgeyBlcyB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZSdcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgbG9jYWxlOiBlcyB9KVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDgsIDIpLCAnUFBQUCcpXG4gKiAvLz0+ICdtYXJ0ZXMsIDIgZGUgc2VwdGllbWJyZSBkZSAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQsXG4gKiAvLyB3aGVuIHdlIHNldCB0aGF0IHdlZWsgc3RhcnRzIG9uIE1vbmRheSBieSBkZWZhdWx0OlxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTWFudWFsbHkgc2V0IG9wdGlvbnMgdGFrZSBwcmlvcml0eSBvdmVyIGRlZmF1bHQgb3B0aW9uczpcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgeyB3ZWVrU3RhcnRzT246IDAgfSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlbW92ZSB0aGUgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gYHVuZGVmaW5lZGA6XG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFydHNPbjogMSB9KVxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IHVuZGVmaW5lZCB9KVxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMikpXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGZvciAodmFyIHByb3BlcnR5IGluIGRlZmF1bHRPcHRpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZWZhdWx0T3B0aW9ucywgcHJvcGVydHkpKSB7XG4gICAgICA7XG4gICAgICByZXN1bHRbcHJvcGVydHldID0gZGVmYXVsdE9wdGlvbnNbcHJvcGVydHldO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBfcHJvcGVydHkgaW4gbmV3T3B0aW9ucykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV3T3B0aW9ucywgX3Byb3BlcnR5KSkge1xuICAgICAgaWYgKG5ld09wdGlvbnNbX3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlbGV0ZSByZXN1bHRbX3Byb3BlcnR5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDtcbiAgICAgICAgcmVzdWx0W19wcm9wZXJ0eV0gPSBuZXdPcHRpb25zW19wcm9wZXJ0eV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNldEludGVybmFsRGVmYXVsdE9wdGlvbnMocmVzdWx0KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBob3VycyAtIHRoZSBob3VycyBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCA0IGhvdXJzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRIb3VycyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzApLCA0KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDQ6MzA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0SG91cnMoZGlydHlEYXRlLCBkaXJ0eUhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaG91cnMgPSB0b0ludGVnZXIoZGlydHlIb3Vycyk7XG4gIGRhdGUuc2V0SG91cnMoaG91cnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldElTT0RheSBmcm9tIFwiLi4vZ2V0SVNPRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09EYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIElTTyB3ZWVrIHN0YXJ0cyB3aXRoIE1vbmRheS5cbiAqIDcgaXMgdGhlIGluZGV4IG9mIFN1bmRheSwgMSBpcyB0aGUgaW5kZXggb2YgTW9uZGF5IGV0Yy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheSAtIHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgU3VuZGF5IHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRJU09EYXkobmV3IERhdGUoMjAxNCwgOCwgMSksIDcpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09EYXkoZGlydHlEYXRlLCBkaXJ0eURheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZ2V0SVNPRGF5KGRhdGUpO1xuICB2YXIgZGlmZiA9IGRheSAtIGN1cnJlbnREYXk7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRpZmYpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRJU09XZWVrIGZyb20gXCIuLi9nZXRJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUsIHNhdmluZyB0aGUgd2Vla2RheSBudW1iZXIuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gaXNvV2VlayAtIHRoZSBJU08gd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgNTNyZCBJU08gd2VlayB0byA3IEF1Z3VzdCAyMDA0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0SVNPV2VlayhuZXcgRGF0ZSgyMDA0LCA3LCA3KSwgNTMpXG4gKiAvLz0+IFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09XZWVrKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaXNvV2VlayA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWspO1xuICB2YXIgZGlmZiA9IGdldElTT1dlZWsoZGF0ZSkgLSBpc29XZWVrO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLFxuICogc2F2aW5nIHRoZSB3ZWVrIG51bWJlciBhbmQgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGlzb1dlZWtZZWFyIC0gdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMDcgdG8gMjkgRGVjZW1iZXIgMjAwODpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldElTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDgsIDExLCAyOSksIDIwMDcpXG4gKiAvLz0+IE1vbiBKYW4gMDEgMjAwNyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09XZWVrWWVhcihkaXJ0eURhdGUsIGRpcnR5SVNPV2Vla1llYXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBpc29XZWVrWWVhciA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWtZZWFyKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZSwgc3RhcnRPZklTT1dlZWtZZWFyKGRhdGUpKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGRhdGUgPSBzdGFydE9mSVNPV2Vla1llYXIoZm91cnRoT2ZKYW51YXJ5KTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBtaWxsaXNlY29uZHMgLSB0aGUgbWlsbGlzZWNvbmRzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCAzMDAgbWlsbGlzZWNvbmRzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6NDAuNTAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0TWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCwgNDAsIDUwMCksIDMwMClcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDExOjMwOjQwLjMwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eU1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbGxpc2Vjb25kcyA9IHRvSW50ZWdlcihkaXJ0eU1pbGxpc2Vjb25kcyk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gbWludXRlcyAtIHRoZSBtaW51dGVzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgNDUgbWludXRlcyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjQwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0TWludXRlcyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzAsIDQwKSwgNDUpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMTo0NTo0MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlNaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbWludXRlcyA9IHRvSW50ZWdlcihkaXJ0eU1pbnV0ZXMpO1xuICBkYXRlLnNldE1pbnV0ZXMobWludXRlcyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXlzSW5Nb250aCBmcm9tIFwiLi4vZ2V0RGF5c0luTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBtb250aCAtIHRoZSBtb250aCBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGggc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBGZWJydWFyeSB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0TW9udGgobmV3IERhdGUoMjAxNCwgOCwgMSksIDEpXG4gKiAvLz0+IFNhdCBGZWIgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNb250aChkaXJ0eURhdGUsIGRpcnR5TW9udGgpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IHRvSW50ZWdlcihkaXJ0eU1vbnRoKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgdmFyIGRhdGVXaXRoRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoMCk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCAxNSk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aChkYXRlV2l0aERlc2lyZWRNb250aCk7XG4gIC8vIFNldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAvLyBpZiB0aGUgb3JpZ2luYWwgZGF0ZSB3YXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBsb25nZXIgbW9udGhcbiAgZGF0ZS5zZXRNb250aChtb250aCwgTWF0aC5taW4oZGF5LCBkYXlzSW5Nb250aCkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc2V0TW9udGggZnJvbSBcIi4uL3NldE1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHllYXIgcXVhcnRlciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgeWVhciBxdWFydGVyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gcXVhcnRlciAtIHRoZSBxdWFydGVyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBxdWFydGVyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDJuZCBxdWFydGVyIHRvIDIgSnVseSAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0UXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgMilcbiAqIC8vPT4gV2VkIEFwciAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFF1YXJ0ZXIoZGlydHlEYXRlLCBkaXJ0eVF1YXJ0ZXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBxdWFydGVyID0gdG9JbnRlZ2VyKGRpcnR5UXVhcnRlcik7XG4gIHZhciBvbGRRdWFydGVyID0gTWF0aC5mbG9vcihkYXRlLmdldE1vbnRoKCkgLyAzKSArIDE7XG4gIHZhciBkaWZmID0gcXVhcnRlciAtIG9sZFF1YXJ0ZXI7XG4gIHJldHVybiBzZXRNb250aChkYXRlLCBkYXRlLmdldE1vbnRoKCkgKyBkaWZmICogMyk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0U2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzZWNvbmRzIC0gdGhlIHNlY29uZHMgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCA0NSBzZWNvbmRzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6NDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRTZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCwgNDApLCA0NSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDExOjMwOjQ1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eVNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzZWNvbmRzID0gdG9JbnRlZ2VyKGRpcnR5U2Vjb25kcyk7XG4gIGRhdGUuc2V0U2Vjb25kcyhzZWNvbmRzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFdlZWsgZnJvbSBcIi4uL2dldFdlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZSwgc2F2aW5nIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gd2VlayAtIHRoZSB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxKVxuICogLy89PiBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAxc3Qgd2VlayB0byAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBTdW4gSmFuIDQgMjAwNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRXZWVrKGRpcnR5RGF0ZSwgZGlydHlXZWVrLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2VlayA9IHRvSW50ZWdlcihkaXJ0eVdlZWspO1xuICB2YXIgZGlmZiA9IGdldFdlZWsoZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZXZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLFxuICogc2F2aW5nIHRoZSB3ZWVrIG51bWJlciBhbmQgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3ZWVrWWVhciAtIHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAyMDA0IHRvIDIgSmFudWFyeSAyMDEwIHdpdGggZGVmYXVsdCBvcHRpb25zOlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2Vla1llYXIobmV3IERhdGUoMjAxMCwgMCwgMiksIDIwMDQpXG4gKiAvLz0+IFNhdCBKYW4gMDMgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgMjAwNCB0byAyIEphbnVhcnkgMjAxMCxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAqIC8vIGFuZCA0IEphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyOlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2Vla1llYXIobmV3IERhdGUoMjAxMCwgMCwgMiksIDIwMDQsIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRXZWVrWWVhcihkaXJ0eURhdGUsIGRpcnR5V2Vla1llYXIsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHdlZWtZZWFyID0gdG9JbnRlZ2VyKGRpcnR5V2Vla1llYXIpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBzdGFydE9mV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRGdWxsWWVhcih3ZWVrWWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBkYXRlID0gc3RhcnRPZldlZWtZZWFyKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5ZWFyIC0gdGhlIHllYXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB5ZWFyIDIwMTMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFllYXIobmV3IERhdGUoMjAxNCwgOCwgMSksIDIwMTMpXG4gKiAvLz0+IFN1biBTZXAgMDEgMjAxMyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRZZWFyKGRpcnR5RGF0ZSwgZGlydHlZZWFyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IHRvSW50ZWdlcihkaXJ0eVllYXIpO1xuXG4gIC8vIENoZWNrIGlmIGRhdGUgaXMgSW52YWxpZCBEYXRlIGJlY2F1c2UgRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIgaWdub3JlcyB0aGUgdmFsdWUgb2YgSW52YWxpZCBEYXRlXG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZkRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZkRlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIGRlY2FkZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRlY2FkZSBmb3IgMjEgT2N0b2JlciAyMDE1IDAwOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRlY2FkZShuZXcgRGF0ZSgyMDE1LCA5LCAyMSwgMDAsIDAwLCAwMCkpXG4gKiAvLz0+IEphbiAwMSAyMDEwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZEZWNhZGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlY2FkZSA9IE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRlY2FkZSwgMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZkhvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gaG91ciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYW4gaG91clxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBob3VyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkhvdXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1KSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDExOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZIb3VyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRNaW51dGVzKDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZklTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gc3RhcnRPZldlZWsoZGlydHlEYXRlLCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcixcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNTpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gTW9uIEphbiAwMyAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFyID0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1pbnV0ZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbWludXRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgbWludXRlIGZvciAxIERlY2VtYmVyIDIwMTQgMjI6MTU6NDUuNDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZk1pbnV0ZShuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZNaW51dGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldFNlY29uZHMoMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0RGF0ZSgxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHF1YXJ0ZXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgSnVsIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgY3VycmVudE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICB2YXIgbW9udGggPSBjdXJyZW50TW9udGggLSBjdXJyZW50TW9udGggJSAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBzZWNvbmQgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHNlY29uZCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHNlY29uZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHNlY29uZCBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZTZWNvbmQobmV3IERhdGUoMjAxNCwgMTEsIDEsIDIyLCAxNSwgNDUsIDQwMCkpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAyMjoxNTo0NS4wMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlNlY29uZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgc3RhcnRPZkRheSBmcm9tIFwiLi4vc3RhcnRPZkRheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mVG9kYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiB0b2RheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvZGF5LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIHRvZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlRvZGF5KClcbiAqIC8vPT4gTW9uIE9jdCA2IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlRvZGF5KCkge1xuICByZXR1cm4gc3RhcnRPZkRheShEYXRlLm5vdygpKTtcbn0iLCIvKipcbiAqIEBuYW1lIHN0YXJ0T2ZUb21vcnJvd1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvbW9ycm93LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgdG9tb3Jyb3cuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgdG9tb3Jyb3dcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mVG9tb3Jyb3coKVxuICogLy89PiBUdWUgT2N0IDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVG9tb3Jyb3coKSB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICB2YXIgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBub3cuZ2V0TW9udGgoKTtcbiAgdmFyIGRheSA9IG5vdy5nZXREYXRlKCk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRheSArIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBzdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBnZXRXZWVrWWVhciBmcm9tIFwiLi4vZ2V0V2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDUgd2l0aCBkZWZhdWx0IHNldHRpbmdzOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDVcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAqIC8vIGFuZCA0IEphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBNb24gSmFuIDAzIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZldlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuICB2YXIgeWVhciA9IGdldFdlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWsgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vlay5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mV2VlayhmaXJzdFdlZWssIG9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlllYXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwMCkpXG4gKiAvLz0+IFdlZCBKYW4gMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBjbGVhbkRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcihjbGVhbkRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsIi8qKlxuICogQG5hbWUgc3RhcnRPZlllc3RlcmRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIHllc3RlcmRheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHllc3RlcmRheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBuZXcgRGF0ZSgpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiB5ZXN0ZXJkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mWWVzdGVyZGF5KClcbiAqIC8vPT4gU3VuIE9jdCA1IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlllc3RlcmRheSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gIHZhciB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IG5vdy5nZXRNb250aCgpO1xuICB2YXIgZGF5ID0gbm93LmdldERhdGUoKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5IC0gMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBzdWJEYXlzIGZyb20gXCIuLi9zdWJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTW9udGhzIGZyb20gXCIuLi9zdWJNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIG9iamVjdCB3aXRoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkXG4gKlxuICogfCBLZXkgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgeWVhcnMgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkICAgfFxuICogfCBtb250aHMgIHwgQW1vdW50IG9mIG1vbnRocyB0byBiZSBzdWJ0cmFjdGVkICB8XG4gKiB8IHdlZWtzICAgfCBBbW91bnQgb2Ygd2Vla3MgdG8gYmUgc3VidHJhY3RlZCAgIHxcbiAqIHwgZGF5cyAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQgICAgfFxuICogfCBob3VycyAgIHwgQW1vdW50IG9mIGhvdXJzIHRvIGJlIHN1YnRyYWN0ZWQgICB8XG4gKiB8IG1pbnV0ZXMgfCBBbW91bnQgb2YgbWludXRlcyB0byBiZSBzdWJ0cmFjdGVkIHxcbiAqIHwgc2Vjb25kcyB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWQgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgdGhlIGZvbGxvd2luZyBkdXJhdGlvbiBmcm9tIDE1IEp1bmUgMjAxNyAxNToyOToyMFxuICogY29uc3QgcmVzdWx0ID0gc3ViKG5ldyBEYXRlKDIwMTcsIDUsIDE1LCAxNSwgMjksIDIwKSwge1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwXG4gKiB9KVxuICogLy89PiBNb24gU2VwIDEgMjAxNCAxMDoxOTo1MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWIoZGF0ZSwgZHVyYXRpb24pIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIGlmICghZHVyYXRpb24gfHwgX3R5cGVvZihkdXJhdGlvbikgIT09ICdvYmplY3QnKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIHllYXJzID0gZHVyYXRpb24ueWVhcnMgPyB0b0ludGVnZXIoZHVyYXRpb24ueWVhcnMpIDogMDtcbiAgdmFyIG1vbnRocyA9IGR1cmF0aW9uLm1vbnRocyA/IHRvSW50ZWdlcihkdXJhdGlvbi5tb250aHMpIDogMDtcbiAgdmFyIHdlZWtzID0gZHVyYXRpb24ud2Vla3MgPyB0b0ludGVnZXIoZHVyYXRpb24ud2Vla3MpIDogMDtcbiAgdmFyIGRheXMgPSBkdXJhdGlvbi5kYXlzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLmRheXMpIDogMDtcbiAgdmFyIGhvdXJzID0gZHVyYXRpb24uaG91cnMgPyB0b0ludGVnZXIoZHVyYXRpb24uaG91cnMpIDogMDtcbiAgdmFyIG1pbnV0ZXMgPSBkdXJhdGlvbi5taW51dGVzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1pbnV0ZXMpIDogMDtcbiAgdmFyIHNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLnNlY29uZHMpIDogMDtcblxuICAvLyBTdWJ0cmFjdCB5ZWFycyBhbmQgbW9udGhzXG4gIHZhciBkYXRlV2l0aG91dE1vbnRocyA9IHN1Yk1vbnRocyhkYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKTtcblxuICAvLyBTdWJ0cmFjdCB3ZWVrcyBhbmQgZGF5c1xuICB2YXIgZGF0ZVdpdGhvdXREYXlzID0gc3ViRGF5cyhkYXRlV2l0aG91dE1vbnRocywgZGF5cyArIHdlZWtzICogNyk7XG5cbiAgLy8gU3VidHJhY3QgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgdmFyIG1pbnV0ZXN0b1N1YiA9IG1pbnV0ZXMgKyBob3VycyAqIDYwO1xuICB2YXIgc2Vjb25kc3RvU3ViID0gc2Vjb25kcyArIG1pbnV0ZXN0b1N1YiAqIDYwO1xuICB2YXIgbXN0b1N1YiA9IHNlY29uZHN0b1N1YiAqIDEwMDA7XG4gIHZhciBmaW5hbERhdGUgPSBuZXcgRGF0ZShkYXRlV2l0aG91dERheXMuZ2V0VGltZSgpIC0gbXN0b1N1Yik7XG4gIHJldHVybiBmaW5hbERhdGU7XG59IiwiaW1wb3J0IGFkZEJ1c2luZXNzRGF5cyBmcm9tIFwiLi4vYWRkQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnN0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3Vic3RyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUsIGlnbm9yaW5nIHdlZWtlbmRzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBidXNpbmVzcyBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgYnVzaW5lc3MgZGF5cyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnN0cmFjdCAxMCBidXNpbmVzcyBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkJ1c2luZXNzRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IE1vbiBBdWcgMTggMjAxNCAwMDowMDowMCAoc2tpcHBlZCB3ZWVrZW5kIGRheXMpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YkJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZEJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGRheXMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMTAgZGF5cyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJEYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gRnJpIEF1ZyAyMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YkRheXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGREYXlzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZEhvdXJzIGZyb20gXCIuLi9hZGRIb3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YkhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBob3VycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDIgaG91cnMgZnJvbSAxMSBKdWx5IDIwMTQgMDE6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJIb3VycyhuZXcgRGF0ZSgyMDE0LCA2LCAxMSwgMSwgMCksIDIpXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAyMzowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJIb3VycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZEhvdXJzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZElTT1dlZWtZZWFycyBmcm9tIFwiLi4vYWRkSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YklTT1dlZWtZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gTW9uIEF1ZyAzMSAyMDA5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YklTT1dlZWtZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZElTT1dlZWtZZWFycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDc1MCBtaWxsaXNlY29uZHMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MjkuMjUwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1Yk1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRNaW51dGVzIGZyb20gXCIuLi9hZGRNaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMzAgbWludXRlcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1Yk1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMTozMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWludXRlcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1vbnRocyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRocyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDUgbW9udGhzIGZyb20gMSBGZWJydWFyeSAyMDE1OlxuICogY29uc3QgcmVzdWx0ID0gc3ViTW9udGhzKG5ldyBEYXRlKDIwMTUsIDEsIDEpLCA1KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTW9udGhzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTW9udGhzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRRdWFydGVycyBmcm9tIFwiLi4vYWRkUXVhcnRlcnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YlF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHF1YXJ0ZXJzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgcXVhcnRlcnMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAzIHF1YXJ0ZXJzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YlF1YXJ0ZXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAzKVxuICogLy89PiBTdW4gRGVjIDAxIDIwMTMgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViUXVhcnRlcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRRdWFydGVycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkU2Vjb25kcyBmcm9tIFwiLi4vYWRkU2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViU2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHNlY29uZHMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMzAgc2Vjb25kcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YlNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDQ6MzBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViU2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZFNlY29uZHMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFdlZWtzIGZyb20gXCIuLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNCB3ZWVrcyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPT4gTW9uIEF1ZyAwNCAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YldlZWtzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkV2Vla3MoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFllYXJzIGZyb20gXCIuLi9hZGRZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXJzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNSB5ZWFycyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gVHVlIFNlcCAwMSAyMDA5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YlllYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkWWVhcnMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgdmFsdWUgdG8gY29udmVydFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fCBfdHlwZW9mKGFyZ3VtZW50KSA9PT0gJ29iamVjdCcgJiYgYXJnU3RyID09PSAnW29iamVjdCBEYXRlXScpIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQuZ2V0VGltZSgpKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYXJndW1lbnQgPT09ICdudW1iZXInIHx8IGFyZ1N0ciA9PT0gJ1tvYmplY3QgTnVtYmVyXScpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIGlmICgodHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJyB8fCBhcmdTdHIgPT09ICdbb2JqZWN0IFN0cmluZ10nKSAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXCJTdGFydGluZyB3aXRoIHYyLjAuMC1iZXRhLjEgZGF0ZS1mbnMgZG9lc24ndCBhY2NlcHQgc3RyaW5ncyBhcyBkYXRlIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI3N0cmluZy1hcmd1bWVudHNcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKG5ldyBFcnJvcigpLnN0YWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGF5c0luV2VlayB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgd2Vla3NUb0RheXNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgd2Vla3MgdG8gZGF5cy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2Ygd2Vla3MgdG8gYSBmdWxsIG51bWJlciBvZiBkYXlzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB3ZWVrcyAtIG51bWJlciBvZiB3ZWVrcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHdlZWtzIGNvbnZlcnRlZCBpbiBkYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHdlZWtzIGludG8gZGF5c1xuICogY29uc3QgcmVzdWx0ID0gd2Vla3NUb0RheXMoMilcbiAqIC8vPT4gMTRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2Vla3NUb0RheXMod2Vla3MpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKHdlZWtzICogZGF5c0luV2Vlayk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1vbnRoc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgeWVhcnNUb01vbnRoc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB5ZWFycyB0byBtb250aHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHllYXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbW9udGhzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFycyAtIG51bWJlciBvZiB5ZWFycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHllYXJzIGNvbnZlcnRlZCBpbiBtb250aHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgeWVhcnMgaW50byBtb250aHNcbiAqIGNvbnN0IHJlc3VsdCA9IHllYXJzVG9Nb250aHMoMilcbiAqIC8vPT4gMjRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24geWVhcnNUb01vbnRocyh5ZWFycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMgKiBtb250aHNJblllYXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBxdWFydGVyc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgeWVhcnNUb1F1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHllYXJzIHRvIHF1YXJ0ZXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiB5ZWFycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHF1YXJ0ZXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFycyAtIG51bWJlciBvZiB5ZWFycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHllYXJzIGNvbnZlcnRlZCBpbiBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiB5ZWFycyB0byBxdWFydGVyc1xuICogY29uc3QgcmVzdWx0ID0geWVhcnNUb1F1YXJ0ZXJzKDIpXG4gKiAvLz0+IDhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24geWVhcnNUb1F1YXJ0ZXJzKHllYXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFycyAqIHF1YXJ0ZXJzSW5ZZWFyKTtcbn0iLCIvKiEgaWVlZTc1NC4gQlNELTMtQ2xhdXNlIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xuZXhwb3J0cy5yZWFkID0gZnVuY3Rpb24gKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSAoZSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSAobSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnRzLndyaXRlID0gZnVuY3Rpb24gKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICgodmFsdWUgKiBjKSAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuNi4xXG4gKiBodHRwczovL2pxdWVyeS5jb20vXG4gKlxuICogSW5jbHVkZXMgU2l6emxlLmpzXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMjItMDgtMjZUMTc6NTJaXG4gKi9cbiggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0IHRyYWMtMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5cbnZhciBmbGF0ID0gYXJyLmZsYXQgPyBmdW5jdGlvbiggYXJyYXkgKSB7XG5cdHJldHVybiBhcnIuZmxhdC5jYWxsKCBhcnJheSApO1xufSA6IGZ1bmN0aW9uKCBhcnJheSApIHtcblx0cmV0dXJuIGFyci5jb25jYXQuYXBwbHkoIFtdLCBhcnJheSApO1xufTtcblxuXG52YXIgcHVzaCA9IGFyci5wdXNoO1xuXG52YXIgaW5kZXhPZiA9IGFyci5pbmRleE9mO1xuXG52YXIgY2xhc3MydHlwZSA9IHt9O1xuXG52YXIgdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nO1xuXG52YXIgaGFzT3duID0gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGZuVG9TdHJpbmcgPSBoYXNPd24udG9TdHJpbmc7XG5cbnZhciBPYmplY3RGdW5jdGlvblN0cmluZyA9IGZuVG9TdHJpbmcuY2FsbCggT2JqZWN0ICk7XG5cbnZhciBzdXBwb3J0ID0ge307XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbiggb2JqICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NTcsIEZpcmVmb3ggPD01MlxuXHRcdC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuXHRcdC8vIChpLmUuLCBgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib2JqZWN0XCIgKSA9PT0gXCJmdW5jdGlvblwiYCkuXG5cdFx0Ly8gV2UgZG9uJ3Qgd2FudCB0byBjbGFzc2lmeSAqYW55KiBET00gbm9kZSBhcyBhIGZ1bmN0aW9uLlxuXHRcdC8vIFN1cHBvcnQ6IFF0V2ViIDw9My44LjUsIFdlYktpdCA8PTUzNC4zNCwgd2todG1sdG9wZGYgdG9vbCA8PTAuMTIuNVxuXHRcdC8vIFBsdXMgZm9yIG9sZCBXZWJLaXQsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCBjb2xsZWN0aW9uc1xuXHRcdC8vIChlLmcuLCBgdHlwZW9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGl2XCIpID09PSBcImZ1bmN0aW9uXCJgKS4gKGdoLTQ3NTYpXG5cdFx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9PSBcIm51bWJlclwiICYmXG5cdFx0XHR0eXBlb2Ygb2JqLml0ZW0gIT09IFwiZnVuY3Rpb25cIjtcblx0fTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG5cblxuXHR2YXIgcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyA9IHtcblx0XHR0eXBlOiB0cnVlLFxuXHRcdHNyYzogdHJ1ZSxcblx0XHRub25jZTogdHJ1ZSxcblx0XHRub01vZHVsZTogdHJ1ZVxuXHR9O1xuXG5cdGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIG5vZGUsIGRvYyApIHtcblx0XHRkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7XG5cblx0XHR2YXIgaSwgdmFsLFxuXHRcdFx0c2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoIFwic2NyaXB0XCIgKTtcblxuXHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRpZiAoIG5vZGUgKSB7XG5cdFx0XHRmb3IgKCBpIGluIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA2NCssIEVkZ2UgMTgrXG5cdFx0XHRcdC8vIFNvbWUgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgXCJub25jZVwiIHByb3BlcnR5IG9uIHNjcmlwdHMuXG5cdFx0XHRcdC8vIE9uIHRoZSBvdGhlciBoYW5kLCBqdXN0IHVzaW5nIGBnZXRBdHRyaWJ1dGVgIGlzIG5vdCBlbm91Z2ggYXNcblx0XHRcdFx0Ly8gdGhlIGBub25jZWAgYXR0cmlidXRlIGlzIHJlc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB3aGVuZXZlciBpdFxuXHRcdFx0XHQvLyBiZWNvbWVzIGJyb3dzaW5nLWNvbnRleHQgY29ubmVjdGVkLlxuXHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy8yMzY5XG5cdFx0XHRcdC8vIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNub25jZS1hdHRyaWJ1dGVzXG5cdFx0XHRcdC8vIFRoZSBgbm9kZS5nZXRBdHRyaWJ1dGVgIGNoZWNrIHdhcyBhZGRlZCBmb3IgdGhlIHNha2Ugb2Zcblx0XHRcdFx0Ly8gYGpRdWVyeS5nbG9iYWxFdmFsYCBzbyB0aGF0IGl0IGNhbiBmYWtlIGEgbm9uY2UtY29udGFpbmluZyBub2RlXG5cdFx0XHRcdC8vIHZpYSBhbiBvYmplY3QuXG5cdFx0XHRcdHZhbCA9IG5vZGVbIGkgXSB8fCBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZSggaSApO1xuXHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKCBpLCB2YWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdH1cblxuXG5mdW5jdGlvbiB0b1R5cGUoIG9iaiApIHtcblx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKVxuXHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0dHlwZW9mIG9iajtcbn1cbi8qIGdsb2JhbCBTeW1ib2wgKi9cbi8vIERlZmluaW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBvZiB1c2luZyB0aGUgZ2xvYmFsXG4vLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2VlbXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZVxuXG5cblxudmFyXG5cdHZlcnNpb24gPSBcIjMuNi4xXCIsXG5cblx0Ly8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnlcblx0alF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9O1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRldmVuOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5ncmVwKCB0aGlzLCBmdW5jdGlvbiggX2VsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gKCBpICsgMSApICUgMjtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRvZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5LmdyZXAoIHRoaXMsIGZ1bmN0aW9uKCBfZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiBpICUgMjtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgT2JqZWN0LnByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0Ly8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcFxuXHRcdFx0XHRpZiAoIG5hbWUgPT09IFwiX19wcm90b19fXCIgfHwgdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXHRcdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXG5cdFx0XHRcdFx0Ly8gRW5zdXJlIHByb3BlciB0eXBlIGZvciB0aGUgc291cmNlIHZhbHVlXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSAmJiAhQXJyYXkuaXNBcnJheSggc3JjICkgKSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IFtdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoICFjb3B5SXNBcnJheSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApICkge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSB7fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cblx0XHRcdFx0XHQvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW1cblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBjb3B5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBVbmlxdWUgZm9yIGVhY2ggY29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2Vcblx0ZXhwYW5kbzogXCJqUXVlcnlcIiArICggdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXFxEL2csIFwiXCIgKSxcblxuXHQvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZVxuXHRpc1JlYWR5OiB0cnVlLFxuXG5cdGVycm9yOiBmdW5jdGlvbiggbXNnICkge1xuXHRcdHRocm93IG5ldyBFcnJvciggbXNnICk7XG5cdH0sXG5cblx0bm9vcDogZnVuY3Rpb24oKSB7fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBwcm90bywgQ3RvcjtcblxuXHRcdC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlc1xuXHRcdC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0c1xuXHRcdGlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBvYmogKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRwcm90byA9IGdldFByb3RvKCBvYmogKTtcblxuXHRcdC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxhaW5cblx0XHRpZiAoICFwcm90byApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uXG5cdFx0Q3RvciA9IGhhc093bi5jYWxsKCBwcm90bywgXCJjb25zdHJ1Y3RvclwiICkgJiYgcHJvdG8uY29uc3RydWN0b3I7XG5cdFx0cmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgcHJvdmlkZWQgY29udGV4dDsgZmFsbHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZVxuXHQvLyBpZiBub3Qgc3BlY2lmaWVkLlxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSwgb3B0aW9ucywgZG9jICkge1xuXHRcdERPTUV2YWwoIGNvZGUsIHsgbm9uY2U6IG9wdGlvbnMgJiYgb3B0aW9ucy5ub25jZSB9LCBkb2MgKTtcblx0fSxcblxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHtcblx0XHR2YXIgbGVuZ3RoLCBpID0gMDtcblxuXHRcdGlmICggaXNBcnJheUxpa2UoIG9iaiApICkge1xuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkge1xuXHRcdHZhciByZXQgPSByZXN1bHRzIHx8IFtdO1xuXG5cdFx0aWYgKCBhcnIgIT0gbnVsbCApIHtcblx0XHRcdGlmICggaXNBcnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIGxlbmd0aCwgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdHJldCA9IFtdO1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXNcblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkge1xuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBmbGF0KCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSApO1xuXG5pZiAoIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0alF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07XG59XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcblx0ZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXHRcdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHR9ICk7XG5cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7XG5cblx0Ly8gU3VwcG9ydDogcmVhbCBpT1MgOC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKVxuXHQvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpXG5cdC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlc1xuXHQvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFXG5cdHZhciBsZW5ndGggPSAhIW9iaiAmJiBcImxlbmd0aFwiIGluIG9iaiAmJiBvYmoubGVuZ3RoLFxuXHRcdHR5cGUgPSB0b1R5cGUoIG9iaiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggb2JqICkgfHwgaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjZcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcy5mb3VuZGF0aW9uL1xuICpcbiAqIERhdGU6IDIwMjEtMDItMTZcbiAqL1xuKCBmdW5jdGlvbiggd2luZG93ICkge1xudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEluc3RhbmNlIG1ldGhvZHNcblx0aGFzT3duID0gKCB7fSApLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaE5hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXG5cdC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZVxuXHQvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFsgaSBdID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58XCIgK1xuXHRcdFwiaXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3ludGF4LTMvI2lkZW50LXRva2VuLWRpYWdyYW1cblx0aWRlbnRpZmllciA9IFwiKD86XFxcXFxcXFxbXFxcXGRhLWZBLUZdezEsNn1cIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiP3xcXFxcXFxcXFteXFxcXHJcXFxcblxcXFxmXXxbXFxcXHctXXxbXlxcMC1cXFxceDdmXSkrXCIsXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgaWRlbnRpZmllciArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cblx0XHQvLyBPcGVyYXRvciAoY2FwdHVyZSAyKVxuXHRcdFwiKihbKl4kfCF+XT89KVwiICsgd2hpdGVzcGFjZSArXG5cblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV1cblx0XHQvLyBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArXG5cdFx0d2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcXFxcKChcIiArXG5cblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXG5cdFx0Ly8gMy4gYW55dGhpbmcgZWxzZSAoY2FwdHVyZSAyKVxuXHRcdFwiLipcIiArXG5cdFx0XCIpXFxcXCl8KVwiLFxuXG5cdC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXJcblx0cndoaXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCIrXCIsIFwiZ1wiICksXG5cdHJ0cmltID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiICtcblx0XHR3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcIiApLFxuXHRyZGVzY2VuZCA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcInw+XCIgKSxcblxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxuXHRyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoIFwiXlwiICsgaWRlbnRpZmllciArIFwiJFwiICksXG5cblx0bWF0Y2hFeHByID0ge1xuXHRcdFwiSURcIjogbmV3IFJlZ0V4cCggXCJeIyhcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBpZGVudGlmaWVyICsgXCJ8WypdKVwiICksXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxuXHRcdFwiUFNFVURPXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgcHNldWRvcyApLFxuXHRcdFwiQ0hJTERcIjogbmV3IFJlZ0V4cCggXCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiICsgd2hpdGVzcGFjZSArIFwiKig/OihbKy1dfClcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKFxcXFxkKyl8KSlcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpXCIsIFwiaVwiICksXG5cdFx0XCJib29sXCI6IG5ldyBSZWdFeHAoIFwiXig/OlwiICsgYm9vbGVhbnMgKyBcIikkXCIsIFwiaVwiICksXG5cblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfCkoPz1bXi1dfCQpXCIsIFwiaVwiIClcblx0fSxcblxuXHRyaHRtbCA9IC9IVE1MJC9pLFxuXHRyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmhlYWRlciA9IC9eaFxcZCQvaSxcblxuXHRybmF0aXZlID0gL15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxcblxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcblx0cnF1aWNrRXhwciA9IC9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLFxuXG5cdHJzaWJsaW5nID0gL1srfl0vLFxuXG5cdC8vIENTUyBlc2NhcGVzXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnNcblx0cnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggXCJcXFxcXFxcXFtcXFxcZGEtZkEtRl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3xcXFxcXFxcXChbXlxcXFxyXFxcXG5cXFxcZl0pXCIsIFwiZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBlc2NhcGUsIG5vbkhleCApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZS5zbGljZSggMSApIC0gMHgxMDAwMDtcblxuXHRcdHJldHVybiBub25IZXggP1xuXG5cdFx0XHQvLyBTdHJpcCB0aGUgYmFja3NsYXNoIHByZWZpeCBmcm9tIGEgbm9uLWhleCBlc2NhcGUgc2VxdWVuY2Vcblx0XHRcdG5vbkhleCA6XG5cblx0XHRcdC8vIFJlcGxhY2UgYSBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2Ugd2l0aCB0aGUgZW5jb2RlZCBVbmljb2RlIGNvZGUgcG9pbnRcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTErXG5cdFx0XHQvLyBGb3IgdmFsdWVzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSwgbWFudWFsbHkgY29uc3RydWN0IGFcblx0XHRcdC8vIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRoaWdoIDwgMCA/XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTtcblx0fSxcblxuXHQvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvblxuXHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXNcblx0cmNzc2VzY2FwZSA9IC8oW1xcMC1cXHgxZlxceDdmXXxeLT9cXGQpfF4tJHxbXlxcMC1cXHgxZlxceDdmLVxcdUZGRkZcXHctXS9nLFxuXHRmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHtcblx0XHRpZiAoIGFzQ29kZVBvaW50ICkge1xuXG5cdFx0XHQvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJcblx0XHRcdGlmICggY2ggPT09IFwiXFwwXCIgKSB7XG5cdFx0XHRcdHJldHVybiBcIlxcdUZGRkRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHNcblx0XHRcdHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArIFwiXFxcXFwiICtcblx0XHRcdFx0Y2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgXCIgXCI7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZFxuXHRcdHJldHVybiBcIlxcXFxcIiArIGNoO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9LFxuXG5cdGluRGlzYWJsZWRGaWVsZHNldCA9IGFkZENvbWJpbmF0b3IoXG5cdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZmllbGRzZXRcIjtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdCggYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSApLFxuXHRcdHByZWZlcnJlZERvYy5jaGlsZE5vZGVzXG5cdCk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoTmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoIGVscyApICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAoIHRhcmdldFsgaisrIF0gPSBlbHNbIGkrKyBdICkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0XHRpZiAoIGRvY3VtZW50SXNIVE1MICkge1xuXG5cdFx0XHQvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgXCJnZXQqQnkqXCIgRE9NIG1ldGhvZFxuXHRcdFx0Ly8gKGV4Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KVxuXHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKCBtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSApICkge1xuXG5cdFx0XHRcdC8vIElEIHNlbGVjdG9yXG5cdFx0XHRcdGlmICggKCBtID0gbWF0Y2hbIDEgXSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9jdW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSApICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEVsZW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBuZXdDb250ZXh0ICYmICggZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSApICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbIDIgXSApIHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdFx0Ly8gQ2xhc3Mgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggKCBtID0gbWF0Y2hbIDMgXSApICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhbm9ubmF0aXZlU2VsZWN0b3JDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCggIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkgKSAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDggb25seVxuXHRcdFx0XHQvLyBFeGNsdWRlIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0XHQoIG5vZGVUeXBlICE9PSAxIHx8IGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJvYmplY3RcIiApICkge1xuXG5cdFx0XHRcdG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7XG5cdFx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXG5cdFx0XHRcdC8vIHFTQSBjb25zaWRlcnMgZWxlbWVudHMgb3V0c2lkZSBhIHNjb3Bpbmcgcm9vdCB3aGVuIGV2YWx1YXRpbmcgY2hpbGQgb3Jcblx0XHRcdFx0Ly8gZGVzY2VuZGFudCBjb21iaW5hdG9ycywgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudC5cblx0XHRcdFx0Ly8gSW4gc3VjaCBjYXNlcywgd2Ugd29yayBhcm91bmQgdGhlIGJlaGF2aW9yIGJ5IHByZWZpeGluZyBldmVyeSBzZWxlY3RvciBpbiB0aGVcblx0XHRcdFx0Ly8gbGlzdCB3aXRoIGFuIElEIHNlbGVjdG9yIHJlZmVyZW5jaW5nIHRoZSBzY29wZSBjb250ZXh0LlxuXHRcdFx0XHQvLyBUaGUgdGVjaG5pcXVlIGhhcyB0byBiZSB1c2VkIGFzIHdlbGwgd2hlbiBhIGxlYWRpbmcgY29tYmluYXRvciBpcyB1c2VkXG5cdFx0XHRcdC8vIGFzIHN1Y2ggc2VsZWN0b3JzIGFyZSBub3QgcmVjb2duaXplZCBieSBxdWVyeVNlbGVjdG9yQWxsLlxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB0ZWNobmlxdWUuXG5cdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHQoIHJkZXNjZW5kLnRlc3QoIHNlbGVjdG9yICkgfHwgcmNvbWJpbmF0b3JzLnRlc3QoIHNlbGVjdG9yICkgKSApIHtcblxuXHRcdFx0XHRcdC8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9yc1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dDtcblxuXHRcdFx0XHRcdC8vIFdlIGNhbiB1c2UgOnNjb3BlIGluc3RlYWQgb2YgdGhlIElEIGhhY2sgaWYgdGhlIGJyb3dzZXJcblx0XHRcdFx0XHQvLyBzdXBwb3J0cyBpdCAmIGlmIHdlJ3JlIG5vdCBjaGFuZ2luZyB0aGUgY29udGV4dC5cblx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgIT09IGNvbnRleHQgfHwgIXN1cHBvcnQuc2NvcGUgKSB7XG5cblx0XHRcdFx0XHRcdC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0XHRpZiAoICggbmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoIFwiaWRcIiApICkgKSB7XG5cdFx0XHRcdFx0XHRcdG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnNldEF0dHJpYnV0ZSggXCJpZFwiLCAoIG5pZCA9IGV4cGFuZG8gKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdFxuXHRcdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdFx0XHRcdGkgPSBncm91cHMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0Z3JvdXBzWyBpIF0gPSAoIG5pZCA/IFwiI1wiICsgbmlkIDogXCI6c2NvcGVcIiApICsgXCIgXCIgK1xuXHRcdFx0XHRcdFx0XHR0b1NlbGVjdG9yKCBncm91cHNbIGkgXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCBcIixcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fSBjYXRjaCAoIHFzYUVycm9yICkge1xuXHRcdFx0XHRcdG5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGUoIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7XG5cdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblxuXHRcdFx0Ly8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzXG5cdFx0XHRkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdO1xuXHRcdH1cblx0XHRyZXR1cm4gKCBjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlICk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZmllbGRzZXRcIiApO1xuXG5cdHRyeSB7XG5cdFx0cmV0dXJuICEhZm4oIGVsICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblxuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRlbCA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KCBcInxcIiApLFxuXHRcdGkgPSBhcnIubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdEV4cHIuYXR0ckhhbmRsZVsgYXJyWyBpIF0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKCBjdXIgPSBjdXIubmV4dFNpYmxpbmcgKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAoIG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiICkgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgOmVuYWJsZWQvOmRpc2FibGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGRpc2FibGVkIHRydWUgZm9yIDpkaXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHtcblxuXHQvLyBLbm93biA6ZGlzYWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6bnRoLW9mLXR5cGUobisyKSA6Y2FuLWRpc2FibGVcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6ZGlzYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWRcblx0XHRpZiAoIFwiZm9ybVwiIGluIGVsZW0gKSB7XG5cblx0XHRcdC8vIENoZWNrIGZvciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50czpcblx0XHRcdC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVkIGZpZWxkc2V0XG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1mZS1kaXNhYmxlZFxuXHRcdFx0Ly8gKiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkXG5cdFx0XHQvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgXCJmb3JtXCIgcHJvcGVydHkuXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHQvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0Z3JvdXAgaWYgcHJlc2VudFxuXHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDExXG5cdFx0XHRcdC8vIFVzZSB0aGUgaXNEaXNhYmxlZCBzaG9ydGN1dCBwcm9wZXJ0eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0b3JzXG5cdFx0XHRcdHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRpc2FibGVkIHx8XG5cblx0XHRcdFx0XHQvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVkLCBjaGVjayBtYW51YWxseVxuXHRcdFx0XHRcdC8qIGpzaGludCAtVzAxOCAqL1xuXHRcdFx0XHRcdGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmXG5cdFx0XHRcdFx0aW5EaXNhYmxlZEZpZWxkc2V0KCBlbGVtICkgPT09IGRpc2FibGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cblx0XHQvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2FibGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuXG5cdFx0Ly8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0XG5cdFx0Ly8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuXG5cdFx0fSBlbHNlIGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWRcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoIGogPSBtYXRjaEluZGV4ZXNbIGkgXSApIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFsgaiBdID0gISggbWF0Y2hlc1sgaiBdID0gc2VlZFsgaiBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0gKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBuYW1lc3BhY2UgPSBlbGVtICYmIGVsZW0ubmFtZXNwYWNlVVJJLFxuXHRcdGRvY0VsZW0gPSBlbGVtICYmICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD04XG5cdC8vIEFzc3VtZSBIVE1MIHdoZW4gZG9jdW1lbnRFbGVtZW50IGRvZXNuJ3QgeWV0IGV4aXN0LCBzdWNoIGFzIGluc2lkZSBsb2FkaW5nIGlmcmFtZXNcblx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzQ4MzNcblx0cmV0dXJuICFyaHRtbC50ZXN0KCBuYW1lc3BhY2UgfHwgZG9jRWxlbSAmJiBkb2NFbGVtLm5vZGVOYW1lIHx8IFwiSFRNTFwiICk7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdyxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWRcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCBkb2MgPT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTErLCBFZGdlIDEyIC0gMTgrXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCBwcmVmZXJyZWREb2MgIT0gZG9jdW1lbnQgJiZcblx0XHQoIHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3ICkgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgMTEsIEVkZ2Vcblx0XHRpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0c3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTAgb25seVxuXHRcdH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0XHRcdHN1YldpbmRvdy5hdHRhY2hFdmVudCggXCJvbnVubG9hZFwiLCB1bmxvYWRIYW5kbGVyICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDExKywgRWRnZSAxMiAtIDE4KywgQ2hyb21lIDw9MTYgLSAyNSBvbmx5LCBGaXJlZm94IDw9My42IC0gMzEgb25seSxcblx0Ly8gU2FmYXJpIDQgLSA1IG9ubHksIE9wZXJhIDw9MTEuNiAtIDEyLnggb25seVxuXHQvLyBJRS9FZGdlICYgb2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgOnNjb3BlIHBzZXVkby1jbGFzcy5cblx0Ly8gU3VwcG9ydDogU2FmYXJpIDYuMCBvbmx5XG5cdC8vIFNhZmFyaSA2LjAgc3VwcG9ydHMgOnNjb3BlIGJ1dCBpdCdzIGFuIGFsaWFzIG9mIDpyb290IHRoZXJlLlxuXHRzdXBwb3J0LnNjb3BlID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cdFx0cmV0dXJuIHR5cGVvZiBlbC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHQhZWwucXVlcnlTZWxlY3RvckFsbCggXCI6c2NvcGUgZmllbGRzZXQgZGl2XCIgKS5sZW5ndGg7XG5cdH0gKTtcblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NOYW1lXCIgKTtcblx0fSApO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCBcIlwiICkgKTtcblx0XHRyZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcIipcIiApLmxlbmd0aDtcblx0fSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDlcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1tYXRpY2FsbHktc2V0IG5hbWVzLFxuXHQvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3Rcblx0c3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7XG5cdH0gKTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbIFwiSURcIiBdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggXCJpZFwiICkgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0XHRFeHByLmZpbmRbIFwiSURcIiBdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlclsgXCJJRFwiIF0gPSAgZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggXCJpZFwiICk7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDYgLSA3IG9ubHlcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0RXhwci5maW5kWyBcIklEXCIgXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWVcblx0XHRcdFx0XHRlbGVtcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIGlkICk7XG5cdFx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kWyBcIlRBR1wiIF0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKCBlbGVtID0gcmVzdWx0c1sgaSsrIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFsgXCJDTEFTU1wiIF0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKCBzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApICkgKSB7XG5cblx0XHQvLyBCdWlsZCBRU0EgcmVnZXhcblx0XHQvLyBSZWdleCBzdHJhdGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pXG5cdFx0YXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cblx0XHRcdHZhciBpbnB1dDtcblxuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiWypeJF09XCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kIFwidmFsdWVcIiBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5XG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltzZWxlY3RlZF1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJ+PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNSAtIDE4K1xuXHRcdFx0Ly8gSUUgMTEvRWRnZSBkb24ndCBmaW5kIGVsZW1lbnRzIG9uIGEgYFtuYW1lPScnXWAgcXVlcnkgaW4gc29tZSBjYXNlcy5cblx0XHRcdC8vIEFkZGluZyBhIHRlbXBvcmFyeSBhdHRyaWJ1dGUgdG8gdGhlIGRvY3VtZW50IGJlZm9yZSB0aGUgc2VsZWN0aW9uIHdvcmtzXG5cdFx0XHQvLyBhcm91bmQgdGhlIGlzc3VlLlxuXHRcdFx0Ly8gSW50ZXJlc3RpbmdseSwgSUUgMTAgJiBvbGRlciBkb24ndCBzZWVtIHRvIGhhdmUgdGhlIGlzc3VlLlxuXHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbbmFtZT0nJ11cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIipuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqPVwiICtcblx0XHRcdFx0XHR3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCI6Y2hlY2tlZFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6Y2hlY2tlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCIuIy4rWyt+XVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD0zLjYgLSA1IG9ubHlcblx0XHRcdC8vIE9sZCBGaXJlZm94IGRvZXNuJ3QgdGhyb3cgb24gYSBiYWRseS1lc2NhcGVkIGlkZW50aWZpZXIuXG5cdFx0XHRlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIlxcXFxcXGZcIiApO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiW1xcXFxyXFxcXG5cXFxcZl1cIiApO1xuXHRcdH0gKTtcblxuXHRcdGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwiaGlkZGVuXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW25hbWU9ZF1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbCggXCI6ZW5hYmxlZFwiICkubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIElFJ3MgOmRpc2FibGVkIHNlbGVjdG9yIGRvZXMgbm90IHBpY2sgdXAgdGhlIGNoaWxkcmVuIG9mIGRpc2FibGVkIGZpZWxkc2V0c1xuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiOmRpc2FibGVkXCIgKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogT3BlcmEgMTAgLSAxMSBvbmx5XG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbCggXCIqLDp4XCIgKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKCBcIiwuKjpcIiApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKCBtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IgKSApICkgKSB7XG5cblx0XHRhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbiggXCJ8XCIgKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKCBcInxcIiApICk7XG5cblx0LyogQ29udGFpbnNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7XG5cblx0Ly8gRWxlbWVudCBjb250YWlucyBhbm90aGVyXG5cdC8vIFB1cnBvc2VmdWxseSBzZWxmLWV4Y2x1c2l2ZVxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpICk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKCBiID0gYi5wYXJlbnROb2RlICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCAhc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlICkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdGlmICggYSA9PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT0gcHJlZmVycmVkRG9jICYmXG5cdFx0XHRcdGNvbnRhaW5zKCBwcmVmZXJyZWREb2MsIGEgKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdFx0aWYgKCBiID09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PSBwcmVmZXJyZWREb2MgJiZcblx0XHRcdFx0Y29udGFpbnMoIHByZWZlcnJlZERvYywgYiApICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGF1cCA9IGEucGFyZW50Tm9kZSxcblx0XHRcdGJ1cCA9IGIucGFyZW50Tm9kZSxcblx0XHRcdGFwID0gWyBhIF0sXG5cdFx0XHRicCA9IFsgYiBdO1xuXG5cdFx0Ly8gUGFyZW50bGVzcyBub2RlcyBhcmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWRcblx0XHRpZiAoICFhdXAgfHwgIWJ1cCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuXHRcdFx0cmV0dXJuIGEgPT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT0gZG9jdW1lbnQgPyAxIDpcblx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBlcWVxZXEgKi9cblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGN1ci5wYXJlbnROb2RlICkgKSB7XG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cdFx0Y3VyID0gYjtcblx0XHR3aGlsZSAoICggY3VyID0gY3VyLnBhcmVudE5vZGUgKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFsgaSBdID09PSBicFsgaSBdICkge1xuXHRcdFx0aSsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBpID9cblxuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwWyBpIF0sIGJwWyBpIF0gKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdFxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuXHRcdFx0YXBbIGkgXSA9PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFsgaSBdID09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0LyogZXNsaW50LWVuYWJsZSBlcWVxZXEgKi9cblx0XHRcdDA7XG5cdH07XG5cblx0cmV0dXJuIGRvY3VtZW50O1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdHNldERvY3VtZW50KCBlbGVtICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCFub25uYXRpdmVTZWxlY3RvckNhY2hlWyBleHByICsgXCIgXCIgXSAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cblx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0Ly8gZnJhZ21lbnQgaW4gSUUgOVxuXHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSggZXhwciwgdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7XG59O1xuXG5TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHtcblxuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCggdmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkgKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkge1xuXHRyZXR1cm4gKCBzZWwgKyBcIlwiICkucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKCBlbGVtID0gcmVzdWx0c1sgaSsrIF0gKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblxuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAoIG5vZGUgPSBlbGVtWyBpKysgXSApICkge1xuXG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblxuXHRcdC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHNcblx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKVxuXHRcdGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsgMSBdID0gbWF0Y2hbIDEgXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbIDMgXSA9ICggbWF0Y2hbIDMgXSB8fCBtYXRjaFsgNCBdIHx8XG5cdFx0XHRcdG1hdGNoWyA1IF0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbIDIgXSA9PT0gXCJ+PVwiICkge1xuXHRcdFx0XHRtYXRjaFsgMyBdID0gXCIgXCIgKyBtYXRjaFsgMyBdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblxuXHRcdFx0LyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwcltcIkNISUxEXCJdXG5cdFx0XHRcdDEgdHlwZSAob25seXxudGh8Li4uKVxuXHRcdFx0XHQyIHdoYXQgKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdDMgYXJndW1lbnQgKGV2ZW58b2RkfFxcZCp8XFxkKm4oWystXVxcZCspP3wuLi4pXG5cdFx0XHRcdDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxuXHRcdFx0XHQ1IHNpZ24gb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDYgeCBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NyBzaWduIG9mIHktY29tcG9uZW50XG5cdFx0XHRcdDggeSBvZiB5LWNvbXBvbmVudFxuXHRcdFx0Ki9cblx0XHRcdG1hdGNoWyAxIF0gPSBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbIDEgXS5zbGljZSggMCwgMyApID09PSBcIm50aFwiICkge1xuXG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFsgMCBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcblx0XHRcdFx0Ly8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMVxuXHRcdFx0XHRtYXRjaFsgNCBdID0gKyggbWF0Y2hbIDQgXSA/XG5cdFx0XHRcdFx0bWF0Y2hbIDUgXSArICggbWF0Y2hbIDYgXSB8fCAxICkgOlxuXHRcdFx0XHRcdDIgKiAoIG1hdGNoWyAzIF0gPT09IFwiZXZlblwiIHx8IG1hdGNoWyAzIF0gPT09IFwib2RkXCIgKSApO1xuXHRcdFx0XHRtYXRjaFsgNSBdID0gKyggKCBtYXRjaFsgNyBdICsgbWF0Y2hbIDggXSApIHx8IG1hdGNoWyAzIF0gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWyA2IF0gJiYgbWF0Y2hbIDIgXTtcblxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbIFwiQ0hJTERcIiBdLnRlc3QoIG1hdGNoWyAwIF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdG1hdGNoWyAyIF0gPSBtYXRjaFsgNCBdIHx8IG1hdGNoWyA1IF0gfHwgXCJcIjtcblxuXHRcdFx0Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJlxuXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdCggZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkgKSAmJlxuXG5cdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xuXHRcdFx0XHQoIGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCApICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWyAwIF0gPSBtYXRjaFsgMCBdLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdFx0bWF0Y2hbIDIgXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdCggcGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFx0XHRcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSApICYmIGNsYXNzQ2FjaGUoXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtLmNsYXNzTmFtZSB8fFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8XG5cdFx0XHRcdFx0XHRcdFx0XCJcIlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9ICk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCI9XCIgPyByZXN1bHQgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIhPVwiID8gcmVzdWx0ICE9PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiXj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIqPVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiJD1cIiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifj1cIiA/ICggXCIgXCIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsIFwiIFwiICkgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifD1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgXCItXCIgOlxuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgX2FyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIF9jb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCxcblx0XHRcdFx0XHRcdGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/IFwibmV4dFNpYmxpbmdcIiA6IFwicHJldmlvdXNTaWJsaW5nXCIsXG5cdFx0XHRcdFx0XHRwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdFx0XHRcdHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLFxuXHRcdFx0XHRcdFx0ZGlmZiA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0XHRcdGlmICggc2ltcGxlICkge1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIGRpciApIHtcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbm9kZSA9IG5vZGVbIGRpciBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKVxuXHRcdFx0XHRcdFx0XHRcdHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gXCJvbmx5XCIgJiYgIXN0YXJ0ICYmIFwibmV4dFNpYmxpbmdcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTtcblxuXHRcdFx0XHRcdFx0Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGBcblx0XHRcdFx0XHRcdGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBwYXJlbnQ7XG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKCBub2RlWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHQoIGRpZmYgPSBub2RlSW5kZXggPSAwICkgfHwgc3RhcnQucG9wKCkgKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8ICggbm9kZVsgZXhwYW5kbyBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKCBub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KCBkaWZmID0gbm9kZUluZGV4ID0gMCApIHx8IHN0YXJ0LnBvcCgpICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoIG5vZGVbIGV4cGFuZG8gXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblxuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbIGkgXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFsgaSBdICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBfY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSB1bm1hdGNoZWRbIGkgXSApICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpIF0gPSAhKCBtYXRjaGVzWyBpIF0gPSBlbGVtICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgX2NvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFsgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WyAwIF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KCBsYW5nIHx8IFwiXCIgKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoICggZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIFwieG1sOmxhbmdcIiApIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCBcImxhbmdcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoIGVsZW0gPSBlbGVtLnBhcmVudE5vZGUgKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSApLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcblx0XHRcdFx0KCAhZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSApICYmXG5cdFx0XHRcdCEhKCBlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4ICk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQgKSB8fFxuXHRcdFx0XHQoIG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCApO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zWyBcImVtcHR5XCIgXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoICggYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCBcInR5cGVcIiApICkgPT0gbnVsbCB8fFxuXHRcdFx0XHRcdGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSApLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBfbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSApLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggX21hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9ICksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0gKSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9ICksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/XG5cdFx0XHRcdGFyZ3VtZW50ICsgbGVuZ3RoIDpcblx0XHRcdFx0YXJndW1lbnQgPiBsZW5ndGggP1xuXHRcdFx0XHRcdGxlbmd0aCA6XG5cdFx0XHRcdFx0YXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSApLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9IClcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zWyBcIm50aFwiIF0gPSBFeHByLnBzZXVkb3NbIFwiZXFcIiBdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAoIG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkgKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbIDAgXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAoIHRva2VucyA9IFtdICkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKCBtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApICkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKCB7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFsgMCBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9ICk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAoIG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSApICYmICggIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQoIG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApICkgKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKCB7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zWyBpIF0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0c2tpcCA9IGNvbWJpbmF0b3IubmV4dCxcblx0XHRrZXkgPSBza2lwIHx8IGRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblxuXHRcdC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKCBlbGVtWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0aWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0ZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAoIG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdICkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCBuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoICggbmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbIGkgXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1sgMCBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzWyBpIF0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoICggZWxlbSA9IHVubWF0Y2hlZFsgaSBdICkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKFxuXHRcdFx0XHRzZWxlY3RvciB8fCBcIipcIixcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCxcblx0XHRcdFx0W11cblx0XHRcdCksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKCBlbGVtID0gdGVtcFsgaSBdICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFsgaSBdIF0gPSAhKCBtYXRjaGVySW5bIHBvc3RNYXBbIGkgXSBdID0gZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKCBlbGVtID0gbWF0Y2hlck91dFsgaSBdICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAoIG1hdGNoZXJJblsgaSBdID0gZWxlbSApICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsICggbWF0Y2hlck91dCA9IFtdICksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoICggZWxlbSA9IG1hdGNoZXJPdXRbIGkgXSApICYmXG5cdFx0XHRcdFx0XHQoIHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwWyBpIF0gKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkWyB0ZW1wIF0gPSAhKCByZXN1bHRzWyB0ZW1wIF0gPSBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWyAwIF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsgXCIgXCIgXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KCBjaGVja0NvbnRleHQgPSBjb250ZXh0ICkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblxuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoIG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIGkgXS50eXBlIF0gKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKCBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlciApIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zWyBpIF0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbIGkgXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblxuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIGogXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3RvcihcblxuXHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0dG9rZW5zXG5cdFx0XHRcdFx0XHQuc2xpY2UoIDAsIGkgLSAxIClcblx0XHRcdFx0XHRcdC5jb25jYXQoIHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9IClcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICggdG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkgKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbIFwiVEFHXCIgXSggXCIqXCIsIG91dGVybW9zdCApLFxuXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoIGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xICksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT0gZG9jdW1lbnQgfHwgY29udGV4dCB8fCBvdXRlcm1vc3Q7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRzXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoICggbWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9yIHNldCBmaWx0ZXJzXG5cdFx0XHRcdGlmICggYnlTZXQgKSB7XG5cblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtICkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoZXIgPSBzZXRNYXRjaGVyc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEoIHVubWF0Y2hlZFsgaSBdIHx8IHNldE1hdGNoZWRbIGkgXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbIGkgXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBEaXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBnZXQgb25seSBhY3R1YWwgbWF0Y2hlc1xuXHRcdFx0XHRcdHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0c1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7XG5cblx0XHRcdFx0Ly8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0aXBsZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nXG5cdFx0XHRcdGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdCggbWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkge1xuXG5cdFx0XHRcdFx0U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdmVycmlkZSBtYW5pcHVsYXRpb24gb2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnNcblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB1bm1hdGNoZWQ7XG5cdFx0fTtcblxuXHRyZXR1cm4gYnlTZXQgP1xuXHRcdG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOlxuXHRcdHN1cGVyTWF0Y2hlcjtcbn1cblxuY29tcGlsZSA9IFNpenpsZS5jb21waWxlID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBtYXRjaCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0dmFyIGksXG5cdFx0c2V0TWF0Y2hlcnMgPSBbXSxcblx0XHRlbGVtZW50TWF0Y2hlcnMgPSBbXSxcblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCAhY2FjaGVkICkge1xuXG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoWyBpIF0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoXG5cdFx0XHRzZWxlY3Rvcixcblx0XHRcdG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApXG5cdFx0KTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKCBzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yICkgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFsgMCBdID0gbWF0Y2hbIDAgXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKCB0b2tlbiA9IHRva2Vuc1sgMCBdICkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sgMSBdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kWyBcIklEXCIgXSggdG9rZW4ubWF0Y2hlc1sgMCBdXG5cdFx0XHRcdC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLCBjb250ZXh0ICkgfHwgW10gKVsgMCBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwclsgXCJuZWVkc0NvbnRleHRcIiBdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zWyBpIF07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKCB0eXBlID0gdG9rZW4udHlwZSApIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoIGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSApICkge1xuXG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoICggc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1sgMCBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWyAwIF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dFxuXHRcdFx0XHQpICkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoIFwiXCIgKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKCBcIlwiICkgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJmaWVsZHNldFwiICkgKSAmIDE7XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2NDI5JTI4VlMuODUlMjkuYXNweFxuaWYgKCAhYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwiaHJlZlwiICkgPT09IFwiI1wiO1xufSApICkge1xuXHRhZGRIYW5kbGUoIFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0eXBlXCIgPyAxIDogMiApO1xuXHRcdH1cblx0fSApO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0gKSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBfbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9ICk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRyZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCBcImRpc2FibGVkXCIgKSA9PSBudWxsO1xufSApICkge1xuXHRhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHZhbDtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHQoIHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApICkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSApO1xufVxuXG5yZXR1cm4gU2l6emxlO1xuXG59ICkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5cbi8vIERlcHJlY2F0ZWRcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcbmpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7XG5cblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cblxuXG5mdW5jdGlvbiBub2RlTmFtZSggZWxlbSwgbmFtZSApIHtcblxuXHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblxufVxudmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXFwvXFwwPjpcXHgyMFxcdFxcclxcblxcZl0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFwvPz4oPzo8XFwvXFwxPnwpJC9pICk7XG5cblxuXG4vLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdFxuZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7XG5cdGlmICggaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gISFxdWFsaWZpZXIuY2FsbCggZWxlbSwgaSwgZWxlbSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gU2luZ2xlIGVsZW1lbnRcblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KVxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEZpbHRlcmVkIGRpcmVjdGx5IGZvciBib3RoIHNpbXBsZSBhbmQgY29tcGxleCBzZWxlY3RvcnNcblx0cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApO1xufVxuXG5qUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7XG5cdHZhciBlbGVtID0gZWxlbXNbIDAgXTtcblxuXHRpZiAoIG5vdCApIHtcblx0XHRleHByID0gXCI6bm90KFwiICsgZXhwciArIFwiKVwiO1xuXHR9XG5cblx0aWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksIHJldCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTtcblxuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxlbiA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0gKTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKHRyYWMtOTUyMSlcblx0Ly8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKHRyYWMtMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgX2ksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIF9pLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIF9pLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRpZiAoIGVsZW0uY29udGVudERvY3VtZW50ICE9IG51bGwgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErXG5cdFx0XHQvLyA8b2JqZWN0PiBlbGVtZW50cyB3aXRoIG5vIGBkYXRhYCBhdHRyaWJ1dGUgaGFzIGFuIG9iamVjdFxuXHRcdFx0Ly8gYGNvbnRlbnREb2N1bWVudGAgd2l0aCBhIGBudWxsYCBwcm90b3R5cGUuXG5cdFx0XHRnZXRQcm90byggZWxlbS5jb250ZW50RG9jdW1lbnQgKSApIHtcblxuXHRcdFx0cmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5LCBpT1MgNyBvbmx5LCBBbmRyb2lkIEJyb3dzZXIgPD00LjMgb25seVxuXHRcdC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuXHRcdC8vIGRvbid0IHN1cHBvcnQgaXQuXG5cdFx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0ZW1wbGF0ZVwiICkgKSB7XG5cdFx0XHRlbGVtID0gZWxlbS5jb250ZW50IHx8IGVsZW07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApO1xuXHR9XG59LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApO1xuXG5cdFx0aWYgKCBuYW1lLnNsaWNlKCAtNSApICE9PSBcIlVudGlsXCIgKSB7XG5cdFx0XHRzZWxlY3RvciA9IHVudGlsO1xuXHRcdH1cblxuXHRcdGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0bWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLmxlbmd0aCA+IDEgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzXG5cdFx0XHRpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7XG5cdFx0XHRcdG1hdGNoZWQucmV2ZXJzZSgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZCApO1xuXHR9O1xufSApO1xudmFyIHJub3RodG1sd2hpdGUgPSAoIC9bXlxceDIwXFx0XFxyXFxuXFxmXSsvZyApO1xuXG5cblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXNcbmZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSB7XG5cdHZhciBvYmplY3QgPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9ICk7XG5cdHJldHVybiBvYmplY3Q7XG59XG5cbi8qXG4gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcbiAqXG4gKlx0b3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvd1xuICpcdFx0XHR0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0XG4gKlxuICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmVcbiAqIFwiZmlyZWRcIiBtdWx0aXBsZSB0aW1lcy5cbiAqXG4gKiBQb3NzaWJsZSBvcHRpb25zOlxuICpcbiAqXHRvbmNlOlx0XHRcdHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0bWVtb3J5Olx0XHRcdHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWRcbiAqXHRcdFx0XHRcdGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0IFwibWVtb3JpemVkXCJcbiAqXHRcdFx0XHRcdHZhbHVlcyAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHR1bmlxdWU6XHRcdFx0d2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpXG4gKlxuICpcdHN0b3BPbkZhbHNlOlx0aW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlXG4gKlxuICovXG5qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0Ly8gQ29udmVydCBvcHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRlZFxuXHQvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpXG5cdG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0Y3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXG5cdFx0Ly8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHNcblx0XHRtZW1vcnksXG5cblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZFxuXHRcdGZpcmVkLFxuXG5cdFx0Ly8gRmxhZyB0byBwcmV2ZW50IGZpcmluZ1xuXHRcdGxvY2tlZCxcblxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXG5cdFx0Ly8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRxdWV1ZSA9IFtdLFxuXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3JlbW92ZSBhcyBuZWVkZWQpXG5cdFx0ZmlyaW5nSW5kZXggPSAtMSxcblxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmdcblx0XHRcdGxvY2tlZCA9IGxvY2tlZCB8fCBvcHRpb25zLm9uY2U7XG5cblx0XHRcdC8vIEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLFxuXHRcdFx0Ly8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlc1xuXHRcdFx0ZmlyZWQgPSBmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRcdHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb25cblx0XHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJlxuXHRcdFx0XHRcdFx0b3B0aW9ucy5zdG9wT25GYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZVxuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0XG5cdFx0XHRpZiAoICFvcHRpb25zLm1lbW9yeSApIHtcblx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXG5cdFx0XHQvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZFxuXHRcdFx0aWYgKCBsb2NrZWQgKSB7XG5cblx0XHRcdFx0Ly8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxsc1xuXHRcdFx0XHRpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxpc3QgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XG5cdFx0c2VsZiA9IHtcblxuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmdcblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQoIGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdG9UeXBlKCBhcmcgKSAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fSApKCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gP1xuXHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOlxuXHRcdFx0XHRcdGxpc3QubGVuZ3RoID4gMDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3Rcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGRcblx0XHRcdC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0Ly8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZVxuXHRcdFx0Ly8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdClcblx0XHRcdC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRsb2NrZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFsb2NrZWQ7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggIWxvY2tlZCApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGFyZ3MgKTtcblx0XHRcdFx0XHRpZiAoICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2Vcblx0XHRcdGZpcmVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhZmlyZWQ7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRyZXR1cm4gc2VsZjtcbn07XG5cblxuZnVuY3Rpb24gSWRlbnRpdHkoIHYgKSB7XG5cdHJldHVybiB2O1xufVxuZnVuY3Rpb24gVGhyb3dlciggZXggKSB7XG5cdHRocm93IGV4O1xufVxuXG5mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0LCBub1ZhbHVlICkge1xuXHR2YXIgbWV0aG9kO1xuXG5cdHRyeSB7XG5cblx0XHQvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yXG5cdFx0aWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgdGhlbmFibGVzXG5cdFx0fSBlbHNlIGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciBub24tdGhlbmFibGVzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkjc2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOlxuXHRcdFx0Ly8gKiBmYWxzZTogWyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKVxuXHRcdFx0Ly8gKiB0cnVlOiBbIHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKClcblx0XHRcdHJlc29sdmUuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTtcblx0XHR9XG5cblx0Ly8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zXG5cdC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW5cblx0Ly8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi5cblx0fSBjYXRjaCAoIHZhbHVlICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seVxuXHRcdC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHRcblx0XHRyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsXG5cdFx0XHRcdC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV1cblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksIDIgXSxcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAwLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDEsIFwicmVqZWN0ZWRcIiBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiY2F0Y2hcIjogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7XG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBfaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIHByaW1hcnkgRGVmZXJyZWRcblx0XHRcdHByaW1hcnkgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeVxuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7XG5cdFx0XHRcdFx0aWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0cHJpbWFyeS5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgcHJpbWFyeS5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBwcmltYXJ5LnJlamVjdCxcblx0XHRcdFx0IXJlbWFpbmluZyApO1xuXG5cdFx0XHQvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApXG5cdFx0XHRpZiAoIHByaW1hcnkuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHByaW1hcnkudGhlbigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgcHJpbWFyeS5yZWplY3QgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcHJpbWFyeS5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgdHJhYy02NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LnJlYWR5LnRoZW4gPSByZWFkeUxpc3QudGhlbjtcblxuLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xuXHRqUXVlcnkucmVhZHkoKTtcbn1cblxuLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWRcbi8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seVxuLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5pZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiB8fFxuXHQoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHtcblxuXHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG59IGVsc2Uge1xuXG5cdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXG5cdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG59XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggdG9UeXBlKCBrZXkgKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXHRcdGZvciAoIGkgaW4ga2V5ICkge1xuXHRcdFx0YWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVsgaSBdLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBfa2V5LCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gYnVsay5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGZuKFxuXHRcdFx0XHRcdGVsZW1zWyBpIF0sIGtleSwgcmF3ID9cblx0XHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBfYWxsLCBsZXR0ZXIgKSB7XG5cdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuLy8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKHRyYWMtOTU3MilcbmZ1bmN0aW9uIGNhbWVsQ2FzZSggc3RyaW5nICkge1xuXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgXCJtcy1cIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTtcbn1cbnZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdC8vIEFjY2VwdHMgb25seTpcblx0Ly8gIC0gTm9kZVxuXHQvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFXG5cdC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFXG5cdC8vICAtIE9iamVjdFxuXHQvLyAgICAtIEFueVxuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZVxuXHRcdHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdC8vIElmIG5vdCwgY3JlYXRlIG9uZVxuXHRcdGlmICggIXZhbHVlICkge1xuXHRcdFx0dmFsdWUgPSB7fTtcblxuXHRcdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlIHRyYWMtODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKHRyYWMtMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0gY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGFcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIGRhdGEuLi5cblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleVxuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0Ly8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cFxuXHRcdFx0aWYgKCBkYXRhICkge1xuXHRcdFx0XHRpZiAoICFxdWV1ZSB8fCBBcnJheS5pc0FycmF5KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGRhdGEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHF1ZXVlIHx8IFtdO1xuXHRcdH1cblx0fSxcblxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSxcblx0XHRcdHN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLFxuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpLFxuXHRcdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSxcblx0XHRcdG5leHQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTtcblx0XHRcdH07XG5cblx0XHQvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsXG5cdFx0aWYgKCBmbiA9PT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRzdGFydExlbmd0aC0tO1xuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cblx0XHRcdC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmdcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWRcblx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICkge1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KCBcImlucHJvZ3Jlc3NcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uXG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciByZXR1cm4gdGhlIGN1cnJlbnQgb25lXG5cdF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR2YXIga2V5ID0gdHlwZSArIFwicXVldWVIb29rc1wiO1xuXHRcdHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICkuYWRkKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyBcInF1ZXVlXCIsIGtleSBdICk7XG5cdFx0XHR9IClcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzIDpcblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWyAwIF0gIT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0gKTtcblx0fSxcblx0Y2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHR9LFxuXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59ICk7XG52YXIgcG51bSA9ICggL1srLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KS8gKS5zb3VyY2U7XG5cbnZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggXCJeKD86KFsrLV0pPXwpKFwiICsgcG51bSArIFwiKShbYS16JV0qKSRcIiwgXCJpXCIgKTtcblxuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG5cdHZhciBpc0F0dGFjaGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblx0XHR9LFxuXHRcdGNvbXBvc2VkID0geyBjb21wb3NlZDogdHJ1ZSB9O1xuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTIgLSAxOCssIGlPUyAxMC4wIC0gMTAuMiBvbmx5XG5cdC8vIENoZWNrIGF0dGFjaG1lbnQgYWNyb3NzIHNoYWRvdyBET00gYm91bmRhcmllcyB3aGVuIHBvc3NpYmxlIChnaC0zNTA0KVxuXHQvLyBTdXBwb3J0OiBpT1MgMTAuMC0xMC4yIG9ubHlcblx0Ly8gRWFybHkgaU9TIDEwIHZlcnNpb25zIHN1cHBvcnQgYGF0dGFjaFNoYWRvd2AgYnV0IG5vdCBgZ2V0Um9vdE5vZGVgLFxuXHQvLyBsZWFkaW5nIHRvIGVycm9ycy4gV2UgbmVlZCB0byBjaGVjayBmb3IgYGdldFJvb3ROb2RlYC5cblx0aWYgKCBkb2N1bWVudEVsZW1lbnQuZ2V0Um9vdE5vZGUgKSB7XG5cdFx0aXNBdHRhY2hlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRSb290Tm9kZSggY29tcG9zZWQgKSA9PT0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdH07XG5cdH1cbnZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwgKSB7XG5cblx0XHQvLyBpc0hpZGRlbldpdGhpblRyZWUgbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjtcblx0XHQvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnRcblx0XHRlbGVtID0gZWwgfHwgZWxlbTtcblxuXHRcdC8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsXG5cdFx0cmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHxcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJlxuXG5cdFx0XHQvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NVxuXHRcdFx0Ly8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzXG5cdFx0XHQvLyBpbiB0aGUgZG9jdW1lbnQuXG5cdFx0XHRpc0F0dGFjaGVkKCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cblxuXG5mdW5jdGlvbiBhZGp1c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkge1xuXHR2YXIgYWRqdXN0ZWQsIHNjYWxlLFxuXHRcdG1heEl0ZXJhdGlvbnMgPSAyMCxcblx0XHRjdXJyZW50VmFsdWUgPSB0d2VlbiA/XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmN1cigpO1xuXHRcdFx0fSA6XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsIFwiXCIgKTtcblx0XHRcdH0sXG5cdFx0aW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLFxuXHRcdHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdC8vIFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5pdCBtaXNtYXRjaGVzXG5cdFx0aW5pdGlhbEluVW5pdCA9IGVsZW0ubm9kZVR5cGUgJiZcblx0XHRcdCggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiAraW5pdGlhbCApICYmXG5cdFx0XHRyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AgKSApO1xuXG5cdGlmICggaW5pdGlhbEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0XHQvLyBIYWx2ZSB0aGUgaXRlcmF0aW9uIHRhcmdldCB2YWx1ZSB0byBwcmV2ZW50IGludGVyZmVyZW5jZSBmcm9tIENTUyB1cHBlciBib3VuZHMgKGdoLTIxNDQpXG5cdFx0aW5pdGlhbCA9IGluaXRpYWwgLyAyO1xuXG5cdFx0Ly8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzc1xuXHRcdHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTtcblxuXHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8IDE7XG5cblx0XHR3aGlsZSAoIG1heEl0ZXJhdGlvbnMtLSApIHtcblxuXHRcdFx0Ly8gRXZhbHVhdGUgYW5kIHVwZGF0ZSBvdXIgYmVzdCBndWVzcyAoZG91YmxpbmcgZ3Vlc3NlcyB0aGF0IHplcm8gb3V0KS5cblx0XHRcdC8vIEZpbmlzaCBpZiB0aGUgc2NhbGUgZXF1YWxzIG9yIGNyb3NzZXMgMSAobWFraW5nIHRoZSBvbGQqbmV3IHByb2R1Y3Qgbm9uLXBvc2l0aXZlKS5cblx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblx0XHRcdGlmICggKCAxIC0gc2NhbGUgKSAqICggMSAtICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgfHwgMC41ICkgKSA8PSAwICkge1xuXHRcdFx0XHRtYXhJdGVyYXRpb25zID0gMDtcblx0XHRcdH1cblx0XHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7XG5cblx0XHR9XG5cblx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAqIDI7XG5cdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdO1xuXHR9XG5cblx0aWYgKCB2YWx1ZVBhcnRzICkge1xuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwO1xuXG5cdFx0Ly8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkXG5cdFx0YWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gP1xuXHRcdFx0aW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDpcblx0XHRcdCt2YWx1ZVBhcnRzWyAyIF07XG5cdFx0aWYgKCB0d2VlbiApIHtcblx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0dHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0O1xuXHRcdFx0dHdlZW4uZW5kID0gYWRqdXN0ZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZGp1c3RlZDtcbn1cblxuXG52YXIgZGVmYXVsdERpc3BsYXlNYXAgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKSB7XG5cdHZhciB0ZW1wLFxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudCxcblx0XHRub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsXG5cdFx0ZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdO1xuXG5cdGlmICggZGlzcGxheSApIHtcblx0XHRyZXR1cm4gZGlzcGxheTtcblx0fVxuXG5cdHRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTtcblx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsIFwiZGlzcGxheVwiICk7XG5cblx0dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7XG5cblx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRkaXNwbGF5ID0gXCJibG9ja1wiO1xuXHR9XG5cdGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTtcblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSxcblx0XHR2YWx1ZXMgPSBbXSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG5cdC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZVxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cblx0XHRcdC8vIFNpbmNlIHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChhbmQgc2xvdylcblx0XHRcdC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlclxuXHRcdFx0Ly8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKVxuXHRcdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApIHx8IG51bGw7XG5cdFx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSApIHtcblx0XHRcdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gXCJub25lXCI7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZ1xuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiZGlzcGxheVwiLCBkaXNwbGF5ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvd1xuXHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7XG5cdFx0XHRlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKS9pICk7XG5cbnZhciByc2NyaXB0VHlwZSA9ICggL14kfF5tb2R1bGUkfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSApO1xuXG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKHRyYWMtMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICh0cmFjLTE0OTAxKVxuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcInJhZGlvXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcImNoZWNrZWRcIiwgXCJjaGVja2VkXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJ0XCIgKTtcblxuXHRkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBvbmx5XG5cdC8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3RhdGUgY29ycmVjdGx5IGluIGZyYWdtZW50c1xuXHRzdXBwb3J0LmNoZWNrQ2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkXG5cdGRpdi5pbm5lckhUTUwgPSBcIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT5cIjtcblx0c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0Ly8gSUUgPD05IHJlcGxhY2VzIDxvcHRpb24+IHRhZ3Mgd2l0aCB0aGVpciBjb250ZW50cyB3aGVuIGluc2VydGVkIG91dHNpZGUgb2Zcblx0Ly8gdGhlIHNlbGVjdCBlbGVtZW50LlxuXHRkaXYuaW5uZXJIVE1MID0gXCI8b3B0aW9uPjwvb3B0aW9uPlwiO1xuXHRzdXBwb3J0Lm9wdGlvbiA9ICEhZGl2Lmxhc3RDaGlsZDtcbn0gKSgpO1xuXG5cbi8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICh0cmFjLTEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5pZiAoICFzdXBwb3J0Lm9wdGlvbiApIHtcblx0d3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uID0gWyAxLCBcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIiwgXCI8L3NlbGVjdD5cIiBdO1xufVxuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAodHJhYy0xNTE1MSlcblx0dmFyIHJldDtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2Uge1xuXHRcdHJldCA9IFtdO1xuXHR9XG5cblx0aWYgKCB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgbm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkge1xuXHRcdHJldHVybiBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59XG5cblxuLy8gTWFyayBzY3JpcHRzIGFzIGhhdmluZyBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkXG5mdW5jdGlvbiBzZXRHbG9iYWxFdmFsKCBlbGVtcywgcmVmRWxlbWVudHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRkYXRhUHJpdi5zZXQoXG5cdFx0XHRlbGVtc1sgaSBdLFxuXHRcdFx0XCJnbG9iYWxFdmFsXCIsXG5cdFx0XHQhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCBcImdsb2JhbEV2YWxcIiApXG5cdFx0KTtcblx0fVxufVxuXG5cbnZhciByaHRtbCA9IC88fCYjP1xcdys7LztcblxuZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiwgaWdub3JlZCApIHtcblx0dmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFwLCBhdHRhY2hlZCwgaixcblx0XHRmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdG5vZGVzID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1zWyBpIF07XG5cblx0XHRpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHtcblxuXHRcdFx0Ly8gQWRkIG5vZGVzIGRpcmVjdGx5XG5cdFx0XHRpZiAoIHRvVHlwZSggZWxlbSApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHR9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkge1xuXHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0d3JhcCA9IHdyYXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7XG5cdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRqID0gd3JhcFsgMCBdO1xuXHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lclxuXHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKHRyYWMtMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGF0dGFjaGVkID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0aWYgKCBhdHRhY2hlZCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdH1cblxuXHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkge1xuXHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZnJhZ21lbnQ7XG59XG5cblxudmFyIHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExK1xuLy8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXMsIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIG5vLW9wLlxuLy8gU28gZXhwZWN0IGZvY3VzIHRvIGJlIHN5bmNocm9ub3VzIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBhY3RpdmUsXG4vLyBhbmQgYmx1ciB0byBiZSBzeW5jaHJvbm91cyB3aGVuIHRoZSBlbGVtZW50IGlzIG5vdCBhbHJlYWR5IGFjdGl2ZS5cbi8vIChmb2N1cyBhbmQgYmx1ciBhcmUgYWx3YXlzIHN5bmNocm9ub3VzIGluIG90aGVyIHN1cHBvcnRlZCBicm93c2Vycyxcbi8vIHRoaXMganVzdCBkZWZpbmVzIHdoZW4gd2UgY2FuIGNvdW50IG9uIGl0KS5cbmZ1bmN0aW9uIGV4cGVjdFN5bmMoIGVsZW0sIHR5cGUgKSB7XG5cdHJldHVybiAoIGVsZW0gPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgKSA9PT0gKCB0eXBlID09PSBcImZvY3VzXCIgKTtcbn1cblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIEFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGNhbiB0aHJvdyB1bmV4cGVjdGVkbHlcbi8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM5M1xuZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cdH0gY2F0Y2ggKCBlcnIgKSB7IH1cbn1cblxuZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHtcblx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHQvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnNcblx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRkYXRhID0gZGF0YSB8fCBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0b24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkge1xuXG5cdFx0Ly8gKCB0eXBlcywgZm4gKVxuXHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkge1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0fSBlbHNlIGlmICggIWZuICkge1xuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBvbmUgPT09IDEgKSB7XG5cdFx0b3JpZ0ZuID0gZm47XG5cdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xuXHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fTtcblxuXHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0Zm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7XG5cdH1cblx0cmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApO1xuXHR9ICk7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHQvLyBPbmx5IGF0dGFjaCBldmVudHMgdG8gb2JqZWN0cyB0aGF0IGFjY2VwdCBkYXRhXG5cdFx0aWYgKCAhYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxuXHRcdGlmICggaGFuZGxlci5oYW5kbGVyICkge1xuXHRcdFx0aGFuZGxlT2JqSW4gPSBoYW5kbGVyO1xuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XG5cdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWVcblx0XHQvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudClcblx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IE9iamVjdC5jcmVhdGUoIG51bGwgKTtcblx0XHR9XG5cdFx0aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblxuXHRcdFx0XHQvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZFxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdG9yaWdUeXBlOiBvcmlnVHlwZSxcblx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0aGFuZGxlcjogaGFuZGxlcixcblx0XHRcdFx0Z3VpZDogaGFuZGxlci5ndWlkLFxuXHRcdFx0XHRzZWxlY3Rvcjogc2VsZWN0b3IsXG5cdFx0XHRcdG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksXG5cdFx0XHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHxcblx0XHRcdFx0XHRzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbIDIgXSAmJlxuXHRcdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKTtcblxuXHRcdFx0Ly8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50c1xuXHRcdFx0b3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdO1xuXG5cdFx0XHRcdGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiZcblx0XHRcdFx0XHQoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJlxuXHRcdFx0XHRcdCggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiZcblx0XHRcdFx0XHQoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8XG5cdFx0XHRcdFx0XHRzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiaGFuZGxlIGV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7XG5cblx0XHR2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSxcblx0XHRcdGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSxcblxuXHRcdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0XHRldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICksXG5cblx0XHRcdGhhbmRsZXJzID0gKFxuXHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCBPYmplY3QuY3JlYXRlKCBudWxsIClcblx0XHRcdClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZSBldmVudCBpcyBuYW1lc3BhY2VkLCB0aGVuIGVhY2ggaGFuZGxlciBpcyBvbmx5IGludm9rZWQgaWYgaXQgaXNcblx0XHRcdFx0Ly8gc3BlY2lhbGx5IHVuaXZlcnNhbCBvciBpdHMgbmFtZXNwYWNlcyBhcmUgYSBzdXBlcnNldCBvZiB0aGUgZXZlbnQncy5cblx0XHRcdFx0aWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBoYW5kbGVPYmoubmFtZXNwYWNlID09PSBmYWxzZSB8fFxuXHRcdFx0XHRcdGV2ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHxcblx0XHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGVcblx0XHRpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkge1xuXHRcdFx0c3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkge1xuXHRcdHZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hlZEhhbmRsZXJzLCBtYXRjaGVkU2VsZWN0b3JzLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcblx0XHRcdGN1ciA9IGV2ZW50LnRhcmdldDtcblxuXHRcdC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnNcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05XG5cdFx0XHQvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MClcblx0XHRcdGN1ci5ub2RlVHlwZSAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDJcblx0XHRcdC8vIFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSlcblx0XHRcdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2tcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdC8vIC4uLmJ1dCBub3QgYXJyb3cga2V5IFwiY2xpY2tzXCIgb2YgcmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAtMSAoZ2gtMjM0Mylcblx0XHRcdCEoIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIiAmJiBldmVudC5idXR0b24gPj0gMSApICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKHRyYWMtMTMyMDgpXG5cdFx0XHRcdC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICh0cmFjLTY5MTEsIHRyYWMtODE2NSwgdHJhYy0xMTM4MiwgdHJhYy0xMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICh0cmFjLTEzMjAzKVxuXHRcdFx0XHRcdFx0c2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgXCIgXCI7XG5cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID9cblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+IC0xIDpcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxlcnMgfSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnNcblx0XHRjdXIgPSB0aGlzO1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYW5kbGVyUXVldWU7XG5cdH0sXG5cblx0YWRkUHJvcDogZnVuY3Rpb24oIG5hbWUsIGhvb2sgKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXG5cdFx0XHRnZXQ6IGlzRnVuY3Rpb24oIGhvb2sgKSA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGhvb2soIHRoaXMub3JpZ2luYWxFdmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGNsaWNrOiB7XG5cblx0XHRcdC8vIFV0aWxpemUgbmF0aXZlIGV2ZW50IHRvIGVuc3VyZSBjb3JyZWN0IHN0YXRlIGZvciBjaGVja2FibGUgaW5wdXRzXG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oIGRhdGEgKSB7XG5cblx0XHRcdFx0Ly8gRm9yIG11dHVhbCBjb21wcmVzc2liaWxpdHkgd2l0aCBfZGVmYXVsdCwgcmVwbGFjZSBgdGhpc2AgYWNjZXNzIHdpdGggYSBsb2NhbCB2YXIuXG5cdFx0XHRcdC8vIGB8fCBkYXRhYCBpcyBkZWFkIGNvZGUgbWVhbnQgb25seSB0byBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUgdGhyb3VnaCBtaW5pZmljYXRpb24uXG5cdFx0XHRcdHZhciBlbCA9IHRoaXMgfHwgZGF0YTtcblxuXHRcdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0XHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsLnR5cGUgKSAmJlxuXHRcdFx0XHRcdGVsLmNsaWNrICYmIG5vZGVOYW1lKCBlbCwgXCJpbnB1dFwiICkgKSB7XG5cblx0XHRcdFx0XHQvLyBkYXRhUHJpdi5zZXQoIGVsLCBcImNsaWNrXCIsIC4uLiApXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIsIHJldHVyblRydWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBmYWxzZSB0byBhbGxvdyBub3JtYWwgcHJvY2Vzc2luZyBpbiB0aGUgY2FsbGVyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbiggZGF0YSApIHtcblxuXHRcdFx0XHQvLyBGb3IgbXV0dWFsIGNvbXByZXNzaWJpbGl0eSB3aXRoIF9kZWZhdWx0LCByZXBsYWNlIGB0aGlzYCBhY2Nlc3Mgd2l0aCBhIGxvY2FsIHZhci5cblx0XHRcdFx0Ly8gYHx8IGRhdGFgIGlzIGRlYWQgY29kZSBtZWFudCBvbmx5IHRvIHByZXNlcnZlIHRoZSB2YXJpYWJsZSB0aHJvdWdoIG1pbmlmaWNhdGlvbi5cblx0XHRcdFx0dmFyIGVsID0gdGhpcyB8fCBkYXRhO1xuXG5cdFx0XHRcdC8vIEZvcmNlIHNldHVwIGJlZm9yZSB0cmlnZ2VyaW5nIGEgY2xpY2tcblx0XHRcdFx0aWYgKCByY2hlY2thYmxlVHlwZS50ZXN0KCBlbC50eXBlICkgJiZcblx0XHRcdFx0XHRlbC5jbGljayAmJiBub2RlTmFtZSggZWwsIFwiaW5wdXRcIiApICkge1xuXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBub24tZmFsc2UgdG8gYWxsb3cgbm9ybWFsIGV2ZW50LXBhdGggcHJvcGFnYXRpb25cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgc3VwcHJlc3MgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHQvLyBBbHNvIHByZXZlbnQgaXQgaWYgd2UncmUgY3VycmVudGx5IGluc2lkZSBhIGxldmVyYWdlZCBuYXRpdmUtZXZlbnQgc3RhY2tcblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cdFx0XHRcdHJldHVybiByY2hlY2thYmxlVHlwZS50ZXN0KCB0YXJnZXQudHlwZSApICYmXG5cdFx0XHRcdFx0dGFyZ2V0LmNsaWNrICYmIG5vZGVOYW1lKCB0YXJnZXQsIFwiaW5wdXRcIiApICYmXG5cdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0YXJnZXQsIFwiY2xpY2tcIiApIHx8XG5cdFx0XHRcdFx0bm9kZU5hbWUoIHRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBFbnN1cmUgdGhlIHByZXNlbmNlIG9mIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBtYW51YWxseS10cmlnZ2VyZWRcbi8vIHN5bnRoZXRpYyBldmVudHMgYnkgaW50ZXJydXB0aW5nIHByb2dyZXNzIHVudGlsIHJlaW52b2tlZCBpbiByZXNwb25zZSB0b1xuLy8gKm5hdGl2ZSogZXZlbnRzIHRoYXQgaXQgZmlyZXMgZGlyZWN0bHksIGVuc3VyaW5nIHRoYXQgc3RhdGUgY2hhbmdlcyBoYXZlXG4vLyBhbHJlYWR5IG9jY3VycmVkIGJlZm9yZSBvdGhlciBsaXN0ZW5lcnMgYXJlIGludm9rZWQuXG5mdW5jdGlvbiBsZXZlcmFnZU5hdGl2ZSggZWwsIHR5cGUsIGV4cGVjdFN5bmMgKSB7XG5cblx0Ly8gTWlzc2luZyBleHBlY3RTeW5jIGluZGljYXRlcyBhIHRyaWdnZXIgY2FsbCwgd2hpY2ggbXVzdCBmb3JjZSBzZXR1cCB0aHJvdWdoIGpRdWVyeS5ldmVudC5hZGRcblx0aWYgKCAhZXhwZWN0U3luYyApIHtcblx0XHRpZiAoIGRhdGFQcml2LmdldCggZWwsIHR5cGUgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZWwsIHR5cGUsIHJldHVyblRydWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgYXMgYSBzcGVjaWFsIHVuaXZlcnNhbCBoYW5kbGVyIGZvciBhbGwgZXZlbnQgbmFtZXNwYWNlc1xuXHRkYXRhUHJpdi5zZXQoIGVsLCB0eXBlLCBmYWxzZSApO1xuXHRqUXVlcnkuZXZlbnQuYWRkKCBlbCwgdHlwZSwge1xuXHRcdG5hbWVzcGFjZTogZmFsc2UsXG5cdFx0aGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIG5vdEFzeW5jLCByZXN1bHQsXG5cdFx0XHRcdHNhdmVkID0gZGF0YVByaXYuZ2V0KCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdGlmICggKCBldmVudC5pc1RyaWdnZXIgJiAxICkgJiYgdGhpc1sgdHlwZSBdICkge1xuXG5cdFx0XHRcdC8vIEludGVycnVwdCBwcm9jZXNzaW5nIG9mIHRoZSBvdXRlciBzeW50aGV0aWMgLnRyaWdnZXIoKWVkIGV2ZW50XG5cdFx0XHRcdC8vIFNhdmVkIGRhdGEgc2hvdWxkIGJlIGZhbHNlIGluIHN1Y2ggY2FzZXMsIGJ1dCBtaWdodCBiZSBhIGxlZnRvdmVyIGNhcHR1cmUgb2JqZWN0XG5cdFx0XHRcdC8vIGZyb20gYW4gYXN5bmMgbmF0aXZlIGhhbmRsZXIgKGdoLTQzNTApXG5cdFx0XHRcdGlmICggIXNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGFyZ3VtZW50cyBmb3IgdXNlIHdoZW4gaGFuZGxpbmcgdGhlIGlubmVyIG5hdGl2ZSBldmVudFxuXHRcdFx0XHRcdC8vIFRoZXJlIHdpbGwgYWx3YXlzIGJlIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAoYW4gZXZlbnQgb2JqZWN0KSwgc28gdGhpcyBhcnJheVxuXHRcdFx0XHRcdC8vIHdpbGwgbm90IGJlIGNvbmZ1c2VkIHdpdGggYSBsZWZ0b3ZlciBjYXB0dXJlIG9iamVjdC5cblx0XHRcdFx0XHRzYXZlZCA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwgc2F2ZWQgKTtcblxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgdGhlIG5hdGl2ZSBldmVudCBhbmQgY2FwdHVyZSBpdHMgcmVzdWx0XG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0Ly8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXNcblx0XHRcdFx0XHRub3RBc3luYyA9IGV4cGVjdFN5bmMoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHR0aGlzWyB0eXBlIF0oKTtcblx0XHRcdFx0XHRyZXN1bHQgPSBkYXRhUHJpdi5nZXQoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgfHwgbm90QXN5bmMgKSB7XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIHR5cGUsIGZhbHNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIENhbmNlbCB0aGUgb3V0ZXIgc3ludGhldGljIGV2ZW50XG5cdFx0XHRcdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA4Nitcblx0XHRcdFx0XHRcdC8vIEluIENocm9tZSwgaWYgYW4gZWxlbWVudCBoYXZpbmcgYSBmb2N1c291dCBoYW5kbGVyIGlzIGJsdXJyZWQgYnlcblx0XHRcdFx0XHRcdC8vIGNsaWNraW5nIG91dHNpZGUgb2YgaXQsIGl0IGludm9rZXMgdGhlIGhhbmRsZXIgc3luY2hyb25vdXNseS4gSWZcblx0XHRcdFx0XHRcdC8vIHRoYXQgaGFuZGxlciBjYWxscyBgLnJlbW92ZSgpYCBvbiB0aGUgZWxlbWVudCwgdGhlIGRhdGEgaXMgY2xlYXJlZCxcblx0XHRcdFx0XHRcdC8vIGxlYXZpbmcgYHJlc3VsdGAgdW5kZWZpbmVkLiBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgdGhpcy5cblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHQgJiYgcmVzdWx0LnZhbHVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGlzIGlzIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCBmb3IgYW4gZXZlbnQgd2l0aCBhIGJ1YmJsaW5nIHN1cnJvZ2F0ZVxuXHRcdFx0XHQvLyAoZm9jdXMgb3IgYmx1ciksIGFzc3VtZSB0aGF0IHRoZSBzdXJyb2dhdGUgYWxyZWFkeSBwcm9wYWdhdGVkIGZyb20gdHJpZ2dlcmluZyB0aGVcblx0XHRcdFx0Ly8gbmF0aXZlIGV2ZW50IGFuZCBwcmV2ZW50IHRoYXQgZnJvbSBoYXBwZW5pbmcgYWdhaW4gaGVyZS5cblx0XHRcdFx0Ly8gVGhpcyB0ZWNobmljYWxseSBnZXRzIHRoZSBvcmRlcmluZyB3cm9uZyB3LnIudC4gdG8gYC50cmlnZ2VyKClgIChpbiB3aGljaCB0aGVcblx0XHRcdFx0Ly8gYnViYmxpbmcgc3Vycm9nYXRlIHByb3BhZ2F0ZXMgKmFmdGVyKiB0aGUgbm9uLWJ1YmJsaW5nIGJhc2UpLCBidXQgdGhhdCBzZWVtc1xuXHRcdFx0XHQvLyBsZXNzIGJhZCB0aGFuIGR1cGxpY2F0aW9uLlxuXHRcdFx0XHR9IGVsc2UgaWYgKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge30gKS5kZWxlZ2F0ZVR5cGUgKSB7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIG5hdGl2ZSBldmVudCB0cmlnZ2VyZWQgYWJvdmUsIGV2ZXJ5dGhpbmcgaXMgbm93IGluIG9yZGVyXG5cdFx0XHQvLyBGaXJlIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCB3aXRoIHRoZSBvcmlnaW5hbCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHQvLyAuLi5hbmQgY2FwdHVyZSB0aGUgcmVzdWx0XG5cdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwge1xuXHRcdFx0XHRcdHZhbHVlOiBqUXVlcnkuZXZlbnQudHJpZ2dlcihcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0XHQvLyBFeHRlbmQgd2l0aCB0aGUgcHJvdG90eXBlIHRvIHJlc2V0IHRoZSBhYm92ZSBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmV4dGVuZCggc2F2ZWRbIDAgXSwgalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSApLFxuXHRcdFx0XHRcdFx0c2F2ZWQuc2xpY2UoIDEgKSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0gKTtcblxuXHRcdFx0XHQvLyBBYm9ydCBoYW5kbGluZyBvZiB0aGUgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG5qUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkge1xuXG5cdC8vIFRoaXMgXCJpZlwiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0c1xuXHRpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHtcblx0XHRlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblxuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7XG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIEV2ZW50IG9iamVjdFxuXHRpZiAoIHNyYyAmJiBzcmMudHlwZSApIHtcblx0XHR0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7XG5cdFx0dGhpcy50eXBlID0gc3JjLnR5cGU7XG5cblx0XHQvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZFxuXHRcdC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLlxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHxcblx0XHRcdFx0c3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seVxuXHRcdFx0XHRzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlID9cblx0XHRcdHJldHVyblRydWUgOlxuXHRcdFx0cmV0dXJuRmFsc2U7XG5cblx0XHQvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKHRyYWMtNTA0LCB0cmFjLTEzMTQzKVxuXHRcdHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/XG5cdFx0XHRzcmMudGFyZ2V0LnBhcmVudE5vZGUgOlxuXHRcdFx0c3JjLnRhcmdldDtcblxuXHRcdHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0O1xuXHRcdHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0O1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxualF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCxcblx0aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcblx0aXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzU2ltdWxhdGVkOiBmYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH1cblx0fSxcblx0c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9XG59O1xuXG4vLyBJbmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VFdmVudCBzcGVjaWZpYyBwcm9wc1xualF1ZXJ5LmVhY2goIHtcblx0YWx0S2V5OiB0cnVlLFxuXHRidWJibGVzOiB0cnVlLFxuXHRjYW5jZWxhYmxlOiB0cnVlLFxuXHRjaGFuZ2VkVG91Y2hlczogdHJ1ZSxcblx0Y3RybEtleTogdHJ1ZSxcblx0ZGV0YWlsOiB0cnVlLFxuXHRldmVudFBoYXNlOiB0cnVlLFxuXHRtZXRhS2V5OiB0cnVlLFxuXHRwYWdlWDogdHJ1ZSxcblx0cGFnZVk6IHRydWUsXG5cdHNoaWZ0S2V5OiB0cnVlLFxuXHR2aWV3OiB0cnVlLFxuXHRcImNoYXJcIjogdHJ1ZSxcblx0Y29kZTogdHJ1ZSxcblx0Y2hhckNvZGU6IHRydWUsXG5cdGtleTogdHJ1ZSxcblx0a2V5Q29kZTogdHJ1ZSxcblx0YnV0dG9uOiB0cnVlLFxuXHRidXR0b25zOiB0cnVlLFxuXHRjbGllbnRYOiB0cnVlLFxuXHRjbGllbnRZOiB0cnVlLFxuXHRvZmZzZXRYOiB0cnVlLFxuXHRvZmZzZXRZOiB0cnVlLFxuXHRwb2ludGVySWQ6IHRydWUsXG5cdHBvaW50ZXJUeXBlOiB0cnVlLFxuXHRzY3JlZW5YOiB0cnVlLFxuXHRzY3JlZW5ZOiB0cnVlLFxuXHR0YXJnZXRUb3VjaGVzOiB0cnVlLFxuXHR0b0VsZW1lbnQ6IHRydWUsXG5cdHRvdWNoZXM6IHRydWUsXG5cdHdoaWNoOiB0cnVlXG59LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApO1xuXG5qUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggdHlwZSwgZGVsZWdhdGVUeXBlICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdID0ge1xuXG5cdFx0Ly8gVXRpbGl6ZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0Ly8gZGF0YVByaXYuc2V0KCB0aGlzLCBcImZvY3VzXCIsIC4uLiApXG5cdFx0XHQvLyBkYXRhUHJpdi5zZXQoIHRoaXMsIFwiYmx1clwiLCAuLi4gKVxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUsIGV4cGVjdFN5bmMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBwcm9jZXNzaW5nIGluIHRoZSBjYWxsZXJcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBGb3JjZSBzZXR1cCBiZWZvcmUgdHJpZ2dlclxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIG5vbi1mYWxzZSB0byBhbGxvdyBub3JtYWwgZXZlbnQtcGF0aCBwcm9wYWdhdGlvblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIFN1cHByZXNzIG5hdGl2ZSBmb2N1cyBvciBibHVyIGlmIHdlJ3JlIGN1cnJlbnRseSBpbnNpZGVcblx0XHQvLyBhIGxldmVyYWdlZCBuYXRpdmUtZXZlbnQgc3RhY2tcblx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZXZlbnQudGFyZ2V0LCB0eXBlICk7XG5cdFx0fSxcblxuXHRcdGRlbGVnYXRlVHlwZTogZGVsZWdhdGVUeXBlXG5cdH07XG59ICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXG5cdHJjbGVhblNjcmlwdCA9IC9eXFxzKjwhXFxbQ0RBVEFcXFt8XFxdXFxdPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7XG5cblx0aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuXG5cdGlmICggZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0cGRhdGFPbGQgPSBkYXRhUHJpdi5nZXQoIHNyYyApO1xuXHRcdGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50cztcblxuXHRcdGlmICggZXZlbnRzICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBkZXN0LCBcImhhbmRsZSBldmVudHNcIiApO1xuXG5cdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gMi4gQ29weSB1c2VyIGRhdGFcblx0aWYgKCBkYXRhVXNlci5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHR1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7XG5cdFx0dWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTtcblxuXHRcdGRhdGFVc2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTtcblx0fVxufVxuXG4vLyBGaXggSUUgYnVncywgc2VlIHN1cHBvcnQgdGVzdHNcbmZ1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuXHQvLyBGYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi5cblx0aWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmIHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7XG5cdFx0ZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7XG5cblx0Ly8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGRlZmF1bHQgc2VsZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnNcblx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiB8fCBub2RlTmFtZSA9PT0gXCJ0ZXh0YXJlYVwiICkge1xuXHRcdGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTtcblx0fVxufVxuXG5mdW5jdGlvbiBkb21NYW5pcCggY29sbGVjdGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7XG5cblx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRhcmdzID0gZmxhdCggYXJncyApO1xuXG5cdHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYyxcblx0XHRpID0gMCxcblx0XHRsID0gY29sbGVjdGlvbi5sZW5ndGgsXG5cdFx0aU5vQ2xvbmUgPSBsIC0gMSxcblx0XHR2YWx1ZSA9IGFyZ3NbIDAgXSxcblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRpZiAoIHZhbHVlSXNGdW5jdGlvbiB8fFxuXHRcdFx0KCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkge1xuXHRcdFx0dmFyIHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApO1xuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApO1xuXHRcdFx0fVxuXHRcdFx0ZG9tTWFuaXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7XG5cdFx0fSApO1xuXHR9XG5cblx0aWYgKCBsICkge1xuXHRcdGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywgY29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVkICk7XG5cdFx0Zmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdGZyYWdtZW50ID0gZmlyc3Q7XG5cdFx0fVxuXG5cdFx0Ly8gUmVxdWlyZSBlaXRoZXIgbmV3IGNvbnRlbnQgb3IgYW4gaW50ZXJlc3QgaW4gaWdub3JlZCBlbGVtZW50cyB0byBpbnZva2UgdGhlIGNhbGxiYWNrXG5cdFx0aWYgKCBmaXJzdCB8fCBpZ25vcmVkICkge1xuXHRcdFx0c2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsIFwic2NyaXB0XCIgKSwgZGlzYWJsZVNjcmlwdCApO1xuXHRcdFx0aGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoO1xuXG5cdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtXG5cdFx0XHQvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXBcblx0XHRcdC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1YXRpb25zICh0cmFjLTgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICYmICFub2RlLm5vTW9kdWxlICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMsIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5vbmNlOiBub2RlLm5vbmNlIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCBcIm5vbmNlXCIgKVxuXHRcdFx0XHRcdFx0XHRcdH0sIGRvYyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFVud3JhcCBhIENEQVRBIHNlY3Rpb24gY29udGFpbmluZyBzY3JpcHQgY29udGVudHMuIFRoaXMgc2hvdWxkbid0IGJlXG5cdFx0XHRcdFx0XHRcdC8vIG5lZWRlZCBhcyBpbiBYTUwgZG9jdW1lbnRzIHRoZXkncmUgYWxyZWFkeSBub3QgdmlzaWJsZSB3aGVuXG5cdFx0XHRcdFx0XHRcdC8vIGluc3BlY3RpbmcgZWxlbWVudCBjb250ZW50cyBhbmQgaW4gSFRNTCBkb2N1bWVudHMgdGhleSBoYXZlIG5vXG5cdFx0XHRcdFx0XHRcdC8vIG1lYW5pbmcgYnV0IHdlJ3JlIHByZXNlcnZpbmcgdGhhdCBsb2dpYyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgd2lsbCBiZSByZW1vdmVkIGNvbXBsZXRlbHkgaW4gNC4wLiBTZWUgZ2gtNDkwNC5cblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgbm9kZSwgZG9jICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBpc0F0dGFjaGVkKCBub2RlICkgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHR9XG5cdFx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRodG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRyZXR1cm4gaHRtbDtcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0XHRpZiAoICggZGF0YSA9IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdICkge1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7XG5cdH0sXG5cblx0dGV4dDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnRleHQoIHRoaXMgKSA6XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGJlZm9yZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gUHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXNcblx0XHRcdFx0ZWxlbS50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzO1xuXHRcdGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50cztcblxuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7XG5cdFx0XHR9XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGlnbm9yZWQgPSBbXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7XG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cdFx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRcdHBhcmVudC5yZXBsYWNlQ2hpbGQoIGVsZW0sIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvblxuXHRcdH0sIGlnbm9yZWQgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCgge1xuXHRhcHBlbmRUbzogXCJhcHBlbmRcIixcblx0cHJlcGVuZFRvOiBcInByZXBlbmRcIixcblx0aW5zZXJ0QmVmb3JlOiBcImJlZm9yZVwiLFxuXHRpbnNlcnRBZnRlcjogXCJhZnRlclwiLFxuXHRyZXBsYWNlQWxsOiBcInJlcGxhY2VXaXRoXCJcbn0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGVsZW1zLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksXG5cdFx0XHRsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgaSA8PSBsYXN0OyBpKysgKSB7XG5cdFx0XHRlbGVtcyA9IGkgPT09IGxhc3QgPyB0aGlzIDogdGhpcy5jbG9uZSggdHJ1ZSApO1xuXHRcdFx0alF1ZXJ5KCBpbnNlcnRbIGkgXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSApO1xudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgcmN1c3RvbVByb3AgPSAvXi0tLztcblxuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAodHJhYy0xNTA5OCwgdHJhYy0xNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suY2FsbCggZWxlbSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG52YXIgcmJveFN0eWxlID0gbmV3IFJlZ0V4cCggY3NzRXhwYW5kLmpvaW4oIFwifFwiICksIFwiaVwiICk7XG5cbnZhciB3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiO1xuXG5cbnZhciBydHJpbUNTUyA9IG5ldyBSZWdFeHAoXG5cdFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsXG5cdFwiZ1wiXG4pO1xuXG5cblxuXG4oIGZ1bmN0aW9uKCkge1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHtcblxuXHRcdC8vIFRoaXMgaXMgYSBzaW5nbGV0b24sIHdlIG5lZWQgdG8gZXhlY3V0ZSBpdCBvbmx5IG9uY2Vcblx0XHRpZiAoICFkaXYgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDtcIiArXG5cdFx0XHRcIm1hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MFwiO1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFwicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO1wiICtcblx0XHRcdFwibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDtcIiArXG5cdFx0XHRcIndpZHRoOjYwJTt0b3A6MSVcIjtcblx0XHRkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApLmFwcGVuZENoaWxkKCBkaXYgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0XG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5tYXJnaW5MZWZ0ICkgPT09IDEyO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgU2FmYXJpIDw9OS4xIC0gMTAuMSwgaU9TIDw9Ny4wIC0gOS4zXG5cdFx0Ly8gU29tZSBzdHlsZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkbid0XG5cdFx0ZGl2LnN0eWxlLnJpZ2h0ID0gXCI2MCVcIjtcblx0XHRwaXhlbEJveFN0eWxlc1ZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUucmlnaHQgKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHRcdC8vIERldGVjdCBtaXNyZXBvcnRpbmcgb2YgY29udGVudCBkaW1lbnNpb25zIGZvciBib3gtc2l6aW5nOmJvcmRlci1ib3ggZWxlbWVudHNcblx0XHRib3hTaXppbmdSZWxpYWJsZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUud2lkdGggKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHQvLyBEZXRlY3Qgb3ZlcmZsb3c6c2Nyb2xsIHNjcmV3aW5lc3MgKGdoLTM2OTkpXG5cdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NjRcblx0XHQvLyBEb24ndCBnZXQgdHJpY2tlZCB3aGVuIHpvb20gYWZmZWN0cyBvZmZzZXRXaWR0aCAoZ2gtNDAyOSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2Lm9mZnNldFdpZHRoIC8gMyApID09PSAxMjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHQvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kXG5cdFx0Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZFxuXHRcdGRpdiA9IG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiByb3VuZFBpeGVsTWVhc3VyZXMoIG1lYXN1cmUgKSB7XG5cdFx0cmV0dXJuIE1hdGgucm91bmQoIHBhcnNlRmxvYXQoIG1lYXN1cmUgKSApO1xuXHR9XG5cblx0dmFyIHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBzY3JvbGxib3hTaXplVmFsLCBwaXhlbEJveFN0eWxlc1ZhbCxcblx0XHRyZWxpYWJsZVRyRGltZW5zaW9uc1ZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0VmFsLFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0Ly8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHNcblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKHRyYWMtODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fSxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTUgLSAxOCtcblx0XHQvLyBJRS9FZGdlIG1pc3JlcG9ydCBgZ2V0Q29tcHV0ZWRTdHlsZWAgb2YgdGFibGUgcm93cyB3aXRoIHdpZHRoL2hlaWdodFxuXHRcdC8vIHNldCBpbiBDU1Mgd2hpbGUgYG9mZnNldCpgIHByb3BlcnRpZXMgcmVwb3J0IGNvcnJlY3QgdmFsdWVzLlxuXHRcdC8vIEJlaGF2aW9yIGluIElFIDkgaXMgbW9yZSBzdWJ0bGUgdGhhbiBpbiBuZXdlciB2ZXJzaW9ucyAmIGl0IHBhc3Nlc1xuXHRcdC8vIHNvbWUgdmVyc2lvbnMgb2YgdGhpcyB0ZXN0OyBtYWtlIHN1cmUgbm90IHRvIG1ha2UgaXQgcGFzcyB0aGVyZSFcblx0XHQvL1xuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNzArXG5cdFx0Ly8gT25seSBGaXJlZm94IGluY2x1ZGVzIGJvcmRlciB3aWR0aHNcblx0XHQvLyBpbiBjb21wdXRlZCBkaW1lbnNpb25zLiAoZ2gtNDUyOSlcblx0XHRyZWxpYWJsZVRyRGltZW5zaW9uczogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdGFibGUsIHRyLCB0ckNoaWxkLCB0clN0eWxlO1xuXHRcdFx0aWYgKCByZWxpYWJsZVRyRGltZW5zaW9uc1ZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwidGFibGVcIiApO1xuXHRcdFx0XHR0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwidHJcIiApO1xuXHRcdFx0XHR0ckNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdFx0XHRcdHRhYmxlLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlXCI7XG5cdFx0XHRcdHRyLnN0eWxlLmNzc1RleHQgPSBcImJvcmRlcjoxcHggc29saWRcIjtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgODYrXG5cdFx0XHRcdC8vIEhlaWdodCBzZXQgdGhyb3VnaCBjc3NUZXh0IGRvZXMgbm90IGdldCBhcHBsaWVkLlxuXHRcdFx0XHQvLyBDb21wdXRlZCBoZWlnaHQgdGhlbiBjb21lcyBiYWNrIGFzIDAuXG5cdFx0XHRcdHRyLnN0eWxlLmhlaWdodCA9IFwiMXB4XCI7XG5cdFx0XHRcdHRyQ2hpbGQuc3R5bGUuaGVpZ2h0ID0gXCI5cHhcIjtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDggQ2hyb21lIDg2K1xuXHRcdFx0XHQvLyBJbiBvdXIgYm9keUJhY2tncm91bmQuaHRtbCBpZnJhbWUsXG5cdFx0XHRcdC8vIGRpc3BsYXkgZm9yIGFsbCBkaXYgZWxlbWVudHMgaXMgc2V0IHRvIFwiaW5saW5lXCIsXG5cdFx0XHRcdC8vIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gb25seSBpbiBBbmRyb2lkIDggQ2hyb21lIDg2LlxuXHRcdFx0XHQvLyBFbnN1cmluZyB0aGUgZGl2IGlzIGRpc3BsYXk6IGJsb2NrXG5cdFx0XHRcdC8vIGdldHMgYXJvdW5kIHRoaXMgaXNzdWUuXG5cdFx0XHRcdHRyQ2hpbGQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcblxuXHRcdFx0XHRkb2N1bWVudEVsZW1lbnRcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRhYmxlIClcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRyIClcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRyQ2hpbGQgKTtcblxuXHRcdFx0XHR0clN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIHRyICk7XG5cdFx0XHRcdHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsID0gKCBwYXJzZUludCggdHJTdHlsZS5oZWlnaHQsIDEwICkgK1xuXHRcdFx0XHRcdHBhcnNlSW50KCB0clN0eWxlLmJvcmRlclRvcFdpZHRoLCAxMCApICtcblx0XHRcdFx0XHRwYXJzZUludCggdHJTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCwgMTAgKSApID09PSB0ci5vZmZzZXRIZWlnaHQ7XG5cblx0XHRcdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCB0YWJsZSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsO1xuXHRcdH1cblx0fSApO1xufSApKCk7XG5cblxuZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHtcblx0dmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCxcblx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICksXG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDUxK1xuXHRcdC8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3dcblx0XHQvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdldHRpbmcgd3JvbmcgdmFsdWVzXG5cdFx0Ly8gb24gZGV0YWNoZWQgZWxlbWVudHNcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0Y29tcHV0ZWQgPSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTtcblxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6XG5cdC8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgdHJhYy0xMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoZ2gtMzE0NClcblx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRyZXQgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTtcblxuXHRcdC8vIHRyaW0gd2hpdGVzcGFjZSBmb3IgY3VzdG9tIHByb3BlcnR5IChpc3N1ZSBnaC00OTI2KVxuXHRcdGlmICggaXNDdXN0b21Qcm9wICkge1xuXG5cdFx0XHQvLyBydHJpbSB0cmVhdHMgVSswMDBEIENBUlJJQUdFIFJFVFVSTiBhbmQgVSswMDBDIEZPUk0gRkVFRFxuXHRcdFx0Ly8gYXMgd2hpdGVzcGFjZSB3aGlsZSBDU1MgZG9lcyBub3QsIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW1cblx0XHRcdC8vIGJlY2F1c2UgQ1NTIHByZXByb2Nlc3NpbmcgcmVwbGFjZXMgdGhlbSB3aXRoIFUrMDAwQSBMSU5FIEZFRURcblx0XHRcdC8vICh3aGljaCAqaXMqIENTUyB3aGl0ZXNwYWNlKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zeW50YXgtMy8jaW5wdXQtcHJlcHJvY2Vzc2luZ1xuXHRcdFx0cmV0ID0gcmV0LnJlcGxhY2UoIHJ0cmltQ1NTLCBcIiQxXCIgKTtcblx0XHR9XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhaXNBdHRhY2hlZCggZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLFxuXHRcdC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuXG5cdFx0Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOlxuXHRcdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5waXhlbEJveFN0eWxlcygpICYmIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiByYm94U3R5bGUudGVzdCggbmFtZSApICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzXG5cdFx0XHR3aWR0aCA9IHN0eWxlLndpZHRoO1xuXHRcdFx0bWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDtcblx0XHRcdG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7XG5cblx0XHRcdC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXRcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDtcblx0XHRcdHJldCA9IGNvbXB1dGVkLndpZHRoO1xuXG5cdFx0XHQvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXG5cdFx0XHRzdHlsZS53aWR0aCA9IHdpZHRoO1xuXHRcdFx0c3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDtcblx0XHRcdHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID9cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cblx0Ly8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC5cblx0cmV0dXJuIHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBjb25kaXRpb25GbigpICkge1xuXG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG52YXIgY3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlLFxuXHR2ZW5kb3JQcm9wcyA9IHt9O1xuXG4vLyBSZXR1cm4gYSB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgb3IgdW5kZWZpbmVkXG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cbn1cblxuLy8gUmV0dXJuIGEgcG90ZW50aWFsbHktbWFwcGVkIGpRdWVyeS5jc3NQcm9wcyBvciB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIGZpbmFsUHJvcE5hbWUoIG5hbWUgKSB7XG5cdHZhciBmaW5hbCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdIHx8IHZlbmRvclByb3BzWyBuYW1lIF07XG5cblx0aWYgKCBmaW5hbCApIHtcblx0XHRyZXR1cm4gZmluYWw7XG5cdH1cblx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblx0cmV0dXJuIHZlbmRvclByb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH07XG5cbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBfZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXG5cdC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW5cblx0Ly8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50XG5cdHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgYm94LCBpc0JvcmRlckJveCwgc3R5bGVzLCBjb21wdXRlZFZhbCApIHtcblx0dmFyIGkgPSBkaW1lbnNpb24gPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXHRcdGV4dHJhID0gMCxcblx0XHRkZWx0YSA9IDA7XG5cblx0Ly8gQWRqdXN0bWVudCBtYXkgbm90IGJlIG5lY2Vzc2FyeVxuXHRpZiAoIGJveCA9PT0gKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApICkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luXG5cdFx0aWYgKCBib3ggPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBib3ggKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGNvbnRlbnQtYm94LCB3ZSdyZSBzZWVraW5nIFwicGFkZGluZ1wiIG9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIlxuXHRcdGlmICggIWlzQm9yZGVyQm94ICkge1xuXG5cdFx0XHQvLyBBZGQgcGFkZGluZ1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEZvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCIsIGFkZCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQnV0IHN0aWxsIGtlZXAgdHJhY2sgb2YgaXQgb3RoZXJ3aXNlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHRyYSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGJvcmRlci1ib3ggKGNvbnRlbnQgKyBwYWRkaW5nICsgYm9yZGVyKSwgd2UncmUgc2Vla2luZyBcImNvbnRlbnRcIiBvclxuXHRcdC8vIFwicGFkZGluZ1wiIG9yIFwibWFyZ2luXCJcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIsIHN1YnRyYWN0IHBhZGRpbmdcblx0XHRcdGlmICggYm94ID09PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiBvciBcInBhZGRpbmdcIiwgc3VidHJhY3QgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBY2NvdW50IGZvciBwb3NpdGl2ZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyIHdoZW4gcmVxdWVzdGVkIGJ5IHByb3ZpZGluZyBjb21wdXRlZFZhbFxuXHRpZiAoICFpc0JvcmRlckJveCAmJiBjb21wdXRlZFZhbCA+PSAwICkge1xuXG5cdFx0Ly8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIGEgcm91bmRlZCBzdW0gb2YgY29udGVudCwgcGFkZGluZywgc2Nyb2xsIGd1dHRlciwgYW5kIGJvcmRlclxuXHRcdC8vIEFzc3VtaW5nIGludGVnZXIgc2Nyb2xsIGd1dHRlciwgc3VidHJhY3QgdGhlIHJlc3QgYW5kIHJvdW5kIGRvd25cblx0XHRkZWx0YSArPSBNYXRoLm1heCggMCwgTWF0aC5jZWlsKFxuXHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdGNvbXB1dGVkVmFsIC1cblx0XHRcdGRlbHRhIC1cblx0XHRcdGV4dHJhIC1cblx0XHRcdDAuNVxuXG5cdFx0Ly8gSWYgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIHVua25vd24sIHRoZW4gd2UgY2FuJ3QgZGV0ZXJtaW5lIGNvbnRlbnQtYm94IHNjcm9sbCBndXR0ZXJcblx0XHQvLyBVc2UgYW4gZXhwbGljaXQgemVybyB0byBhdm9pZCBOYU4gKGdoLTM5NjQpXG5cdFx0KSApIHx8IDA7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cblx0XHQvLyBUbyBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LCBvbmx5IGZldGNoIGJveFNpemluZyBpZiB3ZSBuZWVkIGl0IChnaC00MzIyKS5cblx0XHQvLyBGYWtlIGNvbnRlbnQtYm94IHVudGlsIHdlIGtub3cgaXQncyBuZWVkZWQgdG8ga25vdyB0aGUgdHJ1ZSB2YWx1ZS5cblx0XHRib3hTaXppbmdOZWVkZWQgPSAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IGV4dHJhLFxuXHRcdGlzQm9yZGVyQm94ID0gYm94U2l6aW5nTmVlZGVkICYmXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCxcblxuXHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgZGltZW5zaW9uLCBzdHlsZXMgKSxcblx0XHRvZmZzZXRQcm9wID0gXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKTtcblxuXHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0Ly8gUmV0dXJuIGEgY29uZm91bmRpbmcgbm9uLXBpeGVsIHZhbHVlIG9yIGZlaWduIGlnbm9yYW5jZSwgYXMgYXBwcm9wcmlhdGUuXG5cdGlmICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkge1xuXHRcdGlmICggIWV4dHJhICkge1xuXHRcdFx0cmV0dXJuIHZhbDtcblx0XHR9XG5cdFx0dmFsID0gXCJhdXRvXCI7XG5cdH1cblxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIFVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgZm9yIHdoZW4gYm94IHNpemluZyBpcyB1bnJlbGlhYmxlLlxuXHQvLyBJbiB0aG9zZSBjYXNlcywgdGhlIGNvbXB1dGVkIHZhbHVlIGNhbiBiZSB0cnVzdGVkIHRvIGJlIGJvcmRlci1ib3guXG5cdGlmICggKCAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpICYmIGlzQm9yZGVyQm94IHx8XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMCAtIDExKywgRWRnZSAxNSAtIDE4K1xuXHRcdC8vIElFL0VkZ2UgbWlzcmVwb3J0IGBnZXRDb21wdXRlZFN0eWxlYCBvZiB0YWJsZSByb3dzIHdpdGggd2lkdGgvaGVpZ2h0XG5cdFx0Ly8gc2V0IGluIENTUyB3aGlsZSBgb2Zmc2V0KmAgcHJvcGVydGllcyByZXBvcnQgY29ycmVjdCB2YWx1ZXMuXG5cdFx0Ly8gSW50ZXJlc3RpbmdseSwgaW4gc29tZSBjYXNlcyBJRSA5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBpc3N1ZS5cblx0XHQhc3VwcG9ydC5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIG5vZGVOYW1lKCBlbGVtLCBcInRyXCIgKSB8fFxuXG5cdFx0Ly8gRmFsbCBiYWNrIHRvIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCB3aGVuIHZhbHVlIGlzIFwiYXV0b1wiXG5cdFx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHRcdHZhbCA9PT0gXCJhdXRvXCIgfHxcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgLSA0LjMgb25seVxuXHRcdC8vIEFsc28gdXNlIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBmb3IgbWlzcmVwb3J0ZWQgaW5saW5lIGRpbWVuc2lvbnMgKGdoLTM2MDIpXG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSAmJlxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHZpc2libGUgJiBjb25uZWN0ZWRcblx0XHRlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiO1xuXG5cdFx0Ly8gV2hlcmUgYXZhaWxhYmxlLCBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgYXBwcm94aW1hdGUgYm9yZGVyIGJveCBkaW1lbnNpb25zLlxuXHRcdC8vIFdoZXJlIG5vdCBhdmFpbGFibGUgKGUuZy4sIFNWRyksIGFzc3VtZSB1bnJlbGlhYmxlIGJveC1zaXppbmcgYW5kIGludGVycHJldCB0aGVcblx0XHQvLyByZXRyaWV2ZWQgdmFsdWUgYXMgYSBjb250ZW50IGJveCBkaW1lbnNpb24uXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IG9mZnNldFByb3AgaW4gZWxlbTtcblx0XHRpZiAoIHZhbHVlSXNCb3JkZXJCb3ggKSB7XG5cdFx0XHR2YWwgPSBlbGVtWyBvZmZzZXRQcm9wIF07XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImdyaWRBcmVhXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uRW5kXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uU3RhcnRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dFbmRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dTdGFydFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHt9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLFxuXHRcdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gcXVlcnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKHRyYWMtNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnIHRyYWMtOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICh0cmFjLTcxMTYpXG5cdFx0XHRpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0Ly8gVGhlIGlzQ3VzdG9tUHJvcCBjaGVjayBjYW4gYmUgcmVtb3ZlZCBpbiBqUXVlcnkgNC4wIHdoZW4gd2Ugb25seSBhdXRvLWFwcGVuZFxuXHRcdFx0Ly8gXCJweFwiIHRvIGEgZmV3IGhhcmRjb2RlZCB2YWx1ZXMuXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggX2ksIGRpbWVuc2lvbiApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBkaW1lbnNpb24gXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbVxuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrXG5cdFx0XHRcdFx0Ly8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAmIHplcm9cblx0XHRcdFx0XHQvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdFx0XHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGVcblx0XHRcdFx0XHQvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuXG5cdFx0XHRcdFx0KCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCApID9cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBtYXRjaGVzLFxuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblxuXHRcdFx0XHQvLyBPbmx5IHJlYWQgc3R5bGVzLnBvc2l0aW9uIGlmIHRoZSB0ZXN0IGhhcyBhIGNoYW5jZSB0byBmYWlsXG5cdFx0XHRcdC8vIHRvIGF2b2lkIGZvcmNpbmcgYSByZWZsb3cuXG5cdFx0XHRcdHNjcm9sbGJveFNpemVCdWdneSA9ICFzdXBwb3J0LnNjcm9sbGJveFNpemUoKSAmJlxuXHRcdFx0XHRcdHN0eWxlcy5wb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiLFxuXG5cdFx0XHRcdC8vIFRvIGF2b2lkIGZvcmNpbmcgYSByZWZsb3csIG9ubHkgZmV0Y2ggYm94U2l6aW5nIGlmIHdlIG5lZWQgaXQgKGdoLTM5OTEpXG5cdFx0XHRcdGJveFNpemluZ05lZWRlZCA9IHNjcm9sbGJveFNpemVCdWdneSB8fCBleHRyYSxcblx0XHRcdFx0aXNCb3JkZXJCb3ggPSBib3hTaXppbmdOZWVkZWQgJiZcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdFx0XHRzdWJ0cmFjdCA9IGV4dHJhID9cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdFx0ZGltZW5zaW9uLFxuXHRcdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0XHRpc0JvcmRlckJveCxcblx0XHRcdFx0XHRcdHN0eWxlc1xuXHRcdFx0XHRcdCkgOlxuXHRcdFx0XHRcdDA7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc2Nyb2xsYm94U2l6ZUJ1Z2d5ICkge1xuXHRcdFx0XHRzdWJ0cmFjdCAtPSBNYXRoLmNlaWwoXG5cdFx0XHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdFx0XHRwYXJzZUZsb2F0KCBzdHlsZXNbIGRpbWVuc2lvbiBdICkgLVxuXHRcdFx0XHRcdGJveE1vZGVsQWRqdXN0bWVudCggZWxlbSwgZGltZW5zaW9uLCBcImJvcmRlclwiLCBmYWxzZSwgc3R5bGVzICkgLVxuXHRcdFx0XHRcdDAuNVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5lZWRlZFxuXHRcdFx0aWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJlxuXHRcdFx0XHQoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSAhPT0gXCJweFwiICkge1xuXG5cdFx0XHRcdGVsZW0uc3R5bGVbIGRpbWVuc2lvbiBdID0gdmFsdWU7XG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5LmNzcyggZWxlbSwgZGltZW5zaW9uICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiApICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXHRcdFx0XHRcdH0gKVxuXHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gfHxcblx0XHRcdFx0XHR0d2Vlbi5lbGVtLnN0eWxlWyBmaW5hbFByb3BOYW1lKCB0d2Vlbi5wcm9wICkgXSAhPSBudWxsICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCBpblByb2dyZXNzLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbmZ1bmN0aW9uIHNjaGVkdWxlKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0aWYgKCBkb2N1bWVudC5oaWRkZW4gPT09IGZhbHNlICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XG5cdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBzY2hlZHVsZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHRcdH1cblxuXHRcdGpRdWVyeS5meC50aWNrKCk7XG5cdH1cbn1cblxuLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseVxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSApO1xuXHRyZXR1cm4gKCBmeE5vdyA9IERhdGUubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkge1xuXHRcdHdoaWNoID0gY3NzRXhwYW5kWyBpIF07XG5cdFx0YXR0cnNbIFwibWFyZ2luXCIgKyB3aGljaCBdID0gYXR0cnNbIFwicGFkZGluZ1wiICsgd2hpY2ggXSA9IHR5cGU7XG5cdH1cblxuXHRpZiAoIGluY2x1ZGVXaWR0aCApIHtcblx0XHRhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlO1xuXHR9XG5cblx0cmV0dXJuIGF0dHJzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHtcblx0dmFyIHR3ZWVuLFxuXHRcdGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJvcFR3ZWVuLCByZXN0b3JlRGlzcGxheSwgZGlzcGxheSxcblx0XHRpc0JveCA9IFwid2lkdGhcIiBpbiBwcm9wcyB8fCBcImhlaWdodFwiIGluIHByb3BzLFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBmeCBob29rc1xuXHRpZiAoICFvcHRzLnF1ZXVlICkge1xuXHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCBcImZ4XCIgKTtcblx0XHRpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7XG5cdFx0XHRob29rcy51bnF1ZXVlZCA9IDA7XG5cdFx0XHRvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7XG5cdFx0XHRcdFx0b2xkZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRob29rcy51bnF1ZXVlZCsrO1xuXG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbnN1cmUgdGhlIGNvbXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJlZm9yZSB0aGlzIGNvbXBsZXRlc1xuXHRcdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgXCJzaG93XCIgYW5kXG5cdFx0XHRcdC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXG5cdFx0XHRcdC8vIElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRhdGFcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhpZGUoKVxuXHRwcm9wVHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7XG5cdGlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFJlc3RyaWN0IFwib3ZlcmZsb3dcIiBhbmQgXCJkaXNwbGF5XCIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0aW9uc1xuXHRpZiAoIGlzQm94ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kXG5cdFx0Ly8gZnJvbSBpZGVudGljYWxseS12YWx1ZWQgb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgYW5kIEVkZ2UganVzdCBtaXJyb3JzXG5cdFx0Ly8gdGhlIG92ZXJmbG93WCB2YWx1ZSB0aGVyZS5cblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZVxuXHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNob3cuZGlzcGxheTtcblx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHR9XG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgKSB7XG5cdFx0XHRcdGRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eVxuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxvY2tcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwiaW5saW5lXCIgfHwgZGlzcGxheSA9PT0gXCJpbmxpbmUtYmxvY2tcIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cblx0XHRcdFx0Ly8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0XHRcdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xuXHRcdFx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/IFwiXCIgOiBkaXNwbGF5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRwcm9wVHdlZW4gPSBmYWxzZTtcblx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXG5cdFx0Ly8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMgZWxlbWVudCBhbmltYXRpb25cblx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRpZiAoIGRhdGFTaG93ICkge1xuXHRcdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgXCJmeHNob3dcIiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgIFwicmV2ZXJzZXNcIlxuXHRcdFx0aWYgKCB0b2dnbGUgKSB7XG5cdFx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtXG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAodHJhYy0xMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyB3YXMgYW4gZW1wdHkgYW5pbWF0aW9uLCBzeW50aGVzaXplIGEgZmluYWwgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uXG5cdFx0XHRpZiAoICFsZW5ndGggKSB7XG5cdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNsdXNpb25cblx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zLnB1c2goIHR3ZWVuICk7XG5cdFx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHRcdH0sXG5cdFx0XHRzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHtcblx0XHRcdFx0dmFyIGluZGV4ID0gMCxcblxuXHRcdFx0XHRcdC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVuc1xuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxuXHRcdFx0XHRcdGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0XHRzdG9wcGVkID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3Rcblx0XHRcdFx0aWYgKCBnb3RvRW5kICkge1xuXHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9ICksXG5cdFx0cHJvcHMgPSBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdHJlc3VsdCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XG5cdFx0aWYgKCByZXN1bHQgKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9XG5cdFx0XHRcdFx0cmVzdWx0LnN0b3AuYmluZCggcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0Ly8gQXR0YWNoIGNhbGxiYWNrcyBmcm9tIG9wdGlvbnNcblx0YW5pbWF0aW9uXG5cdFx0LnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9IClcblx0KTtcblxuXHRyZXR1cm4gYW5pbWF0aW9uO1xufVxuXG5qUXVlcnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7XG5cblx0dHdlZW5lcnM6IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApO1xuXHRcdFx0YWRqdXN0Q1NTKCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVuICk7XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH0sXG5cblx0dHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIHByb3BzICkgKSB7XG5cdFx0XHRjYWxsYmFjayA9IHByb3BzO1xuXHRcdFx0cHJvcHMgPSBbIFwiKlwiIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BzID0gcHJvcHMubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblx0XHR9XG5cblx0XHR2YXIgcHJvcCxcblx0XHRcdGluZGV4ID0gMCxcblx0XHRcdGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSA9IEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH0sXG5cblx0cHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVyIF0sXG5cblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XG5cdFx0aWYgKCBwcmVwZW5kICkge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkge1xuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XG5cdFx0Y29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHxcblx0XHRcdGlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nXG5cdH07XG5cblx0Ly8gR28gdG8gdGhlIGVuZCBzdGF0ZSBpZiBmeCBhcmUgb2ZmXG5cdGlmICggalF1ZXJ5LmZ4Lm9mZiApIHtcblx0XHRvcHQuZHVyYXRpb24gPSAwO1xuXG5cdH0gZWxzZSB7XG5cdFx0aWYgKCB0eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0aWYgKCBvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyApIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7XG5cdFx0XHRvcHQub2xkLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdC5xdWV1ZSApIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTtcblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIG9wdDtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUgKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoIHsgb3BhY2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fSxcblx0YW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksXG5cdFx0XHRvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksXG5cdFx0XHRkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmXG5cdFx0XHRcdFx0KCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgKSB7XG5cblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5kZXgsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbmpRdWVyeS5mbi5kZWxheSA9IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkge1xuXHR0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lO1xuXHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyApIHtcblx0XHR2YXIgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7XG5cdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dCApO1xuXHRcdH07XG5cdH0gKTtcbn07XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICksXG5cdFx0c2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzZWxlY3RcIiApLFxuXHRcdG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvcHRpb25cIiApICk7XG5cblx0aW5wdXQudHlwZSA9IFwiY2hlY2tib3hcIjtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHlcblx0Ly8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgXCJvblwiXG5cdHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSBcIlwiO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdFxuXHRzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpb1xuXHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRpbnB1dC52YWx1ZSA9IFwidFwiO1xuXHRpbnB1dC50eXBlID0gXCJyYWRpb1wiO1xuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XG59ICkoKTtcblxuXG52YXIgYm9vbEhvb2ssXG5cdGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZhbGxiYWNrIHRvIHByb3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgPT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXR0cmlidXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvblxuXHRcdC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWRcblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblx0XHRcdGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0KCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyBcIlwiICk7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0Ly8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWRcblx0XHRyZXR1cm4gcmV0ID09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7XG5cdH0sXG5cblx0YXR0ckhvb2tzOiB7XG5cdFx0dHlwZToge1xuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmXG5cdFx0XHRcdFx0bm9kZU5hbWUoIGVsZW0sIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHZhciB2YWwgPSBlbGVtLnZhbHVlO1xuXHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgdmFsdWUgKTtcblx0XHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRcdGVsZW0udmFsdWUgPSB2YWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0dmFyIG5hbWUsXG5cdFx0XHRpID0gMCxcblxuXHRcdFx0Ly8gQXR0cmlidXRlIG5hbWVzIGNhbiBjb250YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXG5cdFx0aWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdHdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysgXSApICkge1xuXHRcdFx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2Vcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7XG5cdFx0fVxuXHRcdHJldHVybiBuYW1lO1xuXHR9XG59O1xuXG5qUXVlcnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cXHcrL2cgKSwgZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCAodHJhYy0xMjA3Milcblx0XHRcdFx0dmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ0YWJpbmRleFwiICk7XG5cblx0XHRcdFx0aWYgKCB0YWJpbmRleCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VJbnQoIHRhYmluZGV4LCAxMCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8XG5cdFx0XHRcdFx0cmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiZcblx0XHRcdFx0XHRlbGVtLmhyZWZcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fVxufSApO1xuXG4vLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcbi8vIEFjY2Vzc2luZyB0aGUgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eVxuLy8gZm9yY2VzIHRoZSBicm93c2VyIHRvIHJlc3BlY3Qgc2V0dGluZyBzZWxlY3RlZFxuLy8gb24gdGhlIG9wdGlvblxuLy8gVGhlIGdldHRlciBlbnN1cmVzIGEgZGVmYXVsdCBvcHRpb24gaXMgc2VsZWN0ZWRcbi8vIHdoZW4gaW4gYW4gb3B0Z3JvdXBcbi8vIGVzbGludCBydWxlIFwibm8tdW51c2VkLWV4cHJlc3Npb25zXCIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZVxuLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0cGFyZW50LnNlbGVjdGVkSW5kZXg7XG5cblx0XHRcdFx0aWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaCggW1xuXHRcInRhYkluZGV4XCIsXG5cdFwicmVhZE9ubHlcIixcblx0XCJtYXhMZW5ndGhcIixcblx0XCJjZWxsU3BhY2luZ1wiLFxuXHRcImNlbGxQYWRkaW5nXCIsXG5cdFwicm93U3BhblwiLFxuXHRcImNvbFNwYW5cIixcblx0XCJ1c2VNYXBcIixcblx0XCJmcmFtZUJvcmRlclwiLFxuXHRcImNvbnRlbnRFZGl0YWJsZVwiXG5dLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpcztcbn0gKTtcblxuXG5cblxuXHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBhY2NvcmRpbmcgdG8gSFRNTCBzcGVjXG5cdC8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2UtYXNjaWktd2hpdGVzcGFjZVxuXHRmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHtcblx0XHR2YXIgdG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0XHRyZXR1cm4gdG9rZW5zLmpvaW4oIFwiIFwiICk7XG5cdH1cblxuXG5mdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHtcblx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VzVG9BcnJheSggdmFsdWUgKSB7XG5cdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGN1ciwgY3VyVmFsdWUsIGNsYXNzTmFtZSwgaSwgZmluYWxWYWx1ZTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc05hbWVzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGN1ciA9IHRoaXMubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkgXTtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIgKSA8IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciArPSBjbGFzc05hbWUgKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGN1ciwgY3VyVmFsdWUsIGNsYXNzTmFtZSwgaSwgZmluYWxWYWx1ZTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmF0dHIoIFwiY2xhc3NcIiwgXCJcIiApO1xuXHRcdH1cblxuXHRcdGNsYXNzTmFtZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3NOYW1lcy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXG5cdFx0XHRcdC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpXG5cdFx0XHRcdGN1ciA9IHRoaXMubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkgXTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIiApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXNzTmFtZSArIFwiIFwiLCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApO1xuXHRcdFx0XHRcdGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLCBmaW5hbFZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0dG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGNsYXNzTmFtZSwgaSwgc2VsZixcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWUsXG5cdFx0XHRpc1ZhbGlkVmFsdWUgPSB0eXBlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoXG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSxcblx0XHRcdFx0XHRzdGF0ZVZhbFxuXHRcdFx0XHQpO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiBpc1ZhbGlkVmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTtcblx0XHR9XG5cblx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNWYWxpZFZhbHVlICkge1xuXG5cdFx0XHRcdC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzXG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblxuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSBdO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRcdGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGlmICggY2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgY2xhc3NOYW1lIGlmIHNldFxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIGNsYXNzTmFtZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCxcblx0XHRcdFx0Ly8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0KS5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSxcblx0XHRcdFx0Ly8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLlxuXHRcdFx0XHRpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkge1xuXHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID9cblx0XHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRcdGRhdGFQcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUsIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIjtcblx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0KCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSArIFwiIFwiICkuaW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKHRyYWMtMTQ2ODYsIHRyYWMtMTQ4NTgpXG5cdFx0XHRcdFx0Ly8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2Vcblx0XHRcdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZVxuXHRcdFx0XHRcdHN0cmlwQW5kQ29sbGFwc2UoIGpRdWVyeS50ZXh0KCBlbGVtICkgKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNlbGVjdDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHZhbHVlLCBvcHRpb24sIGksXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHRpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCxcblx0XHRcdFx0XHRvbmUgPSBlbGVtLnR5cGUgPT09IFwic2VsZWN0LW9uZVwiLFxuXHRcdFx0XHRcdHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSxcblx0XHRcdFx0XHRtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHRpZiAoIGluZGV4IDwgMCApIHtcblx0XHRcdFx0XHRpID0gbWF4O1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aSA9IG9uZSA/IGluZGV4IDogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcblx0XHRcdFx0Zm9yICggOyBpIDwgbWF4OyBpKysgKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHQvLyBJRTgtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICh0cmFjLTI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAodHJhYy05OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAodHJhYy05NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGxhc3RFbGVtZW50ID0gY3VyO1xuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsIFwiZXZlbnRzXCIgKSB8fCBPYmplY3QuY3JlYXRlKCBudWxsICkgKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICh0cmFjLTYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZFxuXHRcdFx0XHRcdHRtcCA9IGVsZW1bIG9udHlwZSBdO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmVcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lXG5cdC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7XG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XG5cdH1cblxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0gKTtcblx0fSxcblx0dHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBlbGVtID0gdGhpc1sgMCBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00NFxuLy8gRmlyZWZveCBkb2Vzbid0IGhhdmUgZm9jdXMoaW4gfCBvdXQpIGV2ZW50c1xuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3ODdcbi8vXG4vLyBTdXBwb3J0OiBDaHJvbWUgPD00OCAtIDQ5LCBTYWZhcmkgPD05LjAgLSA5LjFcbi8vIGZvY3VzKGluIHwgb3V0KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLFxuLy8gd2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0OTg1N1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luICkge1xuXHRqUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkgKTtcblx0XHR9O1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0ge1xuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIEhhbmRsZTogcmVndWxhciBub2RlcyAodmlhIGB0aGlzLm93bmVyRG9jdW1lbnRgKSwgd2luZG93XG5cdFx0XHRcdC8vICh2aWEgYHRoaXMuZG9jdW1lbnRgKSAmIGRvY3VtZW50ICh2aWEgYHRoaXNgKS5cblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLmRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IHsgZ3VpZDogRGF0ZS5ub3coKSB9O1xuXG52YXIgcnF1ZXJ5ID0gKCAvXFw/LyApO1xuXG5cblxuLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZ1xualF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHZhciB4bWwsIHBhcnNlckVycm9yRWxlbTtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge31cblxuXHRwYXJzZXJFcnJvckVsZW0gPSB4bWwgJiYgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKVsgMCBdO1xuXHRpZiAoICF4bWwgfHwgcGFyc2VyRXJyb3JFbGVtICkge1xuXHRcdGpRdWVyeS5lcnJvciggXCJJbnZhbGlkIFhNTDogXCIgKyAoXG5cdFx0XHRwYXJzZXJFcnJvckVsZW0gP1xuXHRcdFx0XHRqUXVlcnkubWFwKCBwYXJzZXJFcnJvckVsZW0uY2hpbGROb2RlcywgZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0XHRcdHJldHVybiBlbC50ZXh0Q29udGVudDtcblx0XHRcdFx0fSApLmpvaW4oIFwiXFxuXCIgKSA6XG5cdFx0XHRcdGRhdGFcblx0XHQpICk7XG5cdH1cblx0cmV0dXJuIHhtbDtcbn07XG5cblxudmFyXG5cdHJicmFja2V0ID0gL1xcW1xcXSQvLFxuXHRyQ1JMRiA9IC9cXHI/XFxuL2csXG5cdHJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxcblx0cnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO1xuXG5mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7XG5cdHZhciBuYW1lO1xuXG5cdGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cblx0XHRcdFx0Ly8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLlxuXHRcdFx0XHRhZGQoIHByZWZpeCwgdiApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyhcblx0XHRcdFx0XHRwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsID8gaSA6IFwiXCIgKSArIFwiXVwiLFxuXHRcdFx0XHRcdHYsXG5cdFx0XHRcdFx0dHJhZGl0aW9uYWwsXG5cdFx0XHRcdFx0YWRkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiB0b1R5cGUoIG9iaiApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIG9iamVjdCBpdGVtLlxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCArIFwiW1wiICsgbmFtZSArIFwiXVwiLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxuXHRcdGFkZCggcHJlZml4LCBvYmogKTtcblx0fVxufVxuXG4vLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxuLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XG5cdHZhciBwcmVmaXgsXG5cdFx0cyA9IFtdLFxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHtcblxuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZVxuXHRcdFx0dmFyIHZhbHVlID0gaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9uICkgP1xuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb24oKSA6XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbjtcblxuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArXG5cdFx0XHRcdGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdH07XG5cblx0aWYgKCBhID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHQvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLlxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0gKTtcblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApO1xuXHR9LFxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuXHRcdFx0dmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsIFwiZWxlbWVudHNcIiApO1xuXHRcdFx0cmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7XG5cdFx0fSApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdHlwZSA9IHRoaXMudHlwZTtcblxuXHRcdFx0Ly8gVXNlIC5pcyggXCI6ZGlzYWJsZWRcIiApIHNvIHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzXG5cdFx0XHRyZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggXCI6ZGlzYWJsZWRcIiApICYmXG5cdFx0XHRcdHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiZcblx0XHRcdFx0KCB0aGlzLmNoZWNrZWQgfHwgIXJjaGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApO1xuXHRcdH0gKS5tYXAoIGZ1bmN0aW9uKCBfaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdH0gKS5nZXQoKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyMjAgPSAvJTIwL2csXG5cdHJoYXNoID0gLyMuKiQvLFxuXHRyYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gdHJhYy03NjUzLCB0cmFjLTgxMjUsIHRyYWMtODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAodHJhYy0xMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cbm9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyB0cmFjLTk4ODdcbmZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkge1xuXHR2YXIga2V5LCBkZWVwLFxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcblxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xuXHRcdGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0KCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTtcblx0XHR9XG5cdH1cblx0aWYgKCBkZWVwICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xuXHR9XG5cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OlxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcbiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuICovXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xuXG5cdHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSxcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7XG5cblx0Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3Ncblx0d2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gXCIqXCIgKSB7XG5cdFx0ZGF0YVR5cGVzLnNoaWZ0KCk7XG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVudC10eXBlXG5cdGlmICggY3QgKSB7XG5cdFx0Zm9yICggdHlwZSBpbiBjb250ZW50cyApIHtcblx0XHRcdGlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7XG5cdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBlICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZVxuXHRpZiAoIGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHtcblx0XHRmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07XG5cdH0gZWxzZSB7XG5cblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXG5cdFx0Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7XG5cdFx0XHRpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyBcIiBcIiArIGRhdGFUeXBlc1sgMCBdIF0gKSB7XG5cdFx0XHRcdGZpbmFsRGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggIWZpcnN0RGF0YVR5cGUgKSB7XG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZVxuXHRcdGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7XG5cdH1cblxuXHQvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlXG5cdC8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkXG5cdC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2Vcblx0aWYgKCBmaW5hbERhdGFUeXBlICkge1xuXHRcdGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7XG5cdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07XG5cdH1cbn1cblxuLyogQ2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNwb25zZVxuICogQWxzbyBzZXRzIHRoZSByZXNwb25zZVhYWCBmaWVsZHMgb24gdGhlIGpxWEhSIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApIHtcblx0dmFyIGNvbnYyLCBjdXJyZW50LCBjb252LCB0bXAsIHByZXYsXG5cdFx0Y29udmVydGVycyA9IHt9LFxuXG5cdFx0Ly8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvblxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7XG5cblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXG5cdGlmICggZGF0YVR5cGVzWyAxIF0gKSB7XG5cdFx0Zm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7XG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xuXHRcdH1cblx0fVxuXG5cdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHQvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZVxuXHR3aGlsZSAoIGN1cnJlbnQgKSB7XG5cblx0XHRpZiAoIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSApIHtcblx0XHRcdGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkXG5cdFx0aWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3MgJiYgcy5kYXRhRmlsdGVyICkge1xuXHRcdFx0cmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7XG5cdFx0fVxuXG5cdFx0cHJldiA9IGN1cnJlbnQ7XG5cdFx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdFx0aWYgKCBjdXJyZW50ICkge1xuXG5cdFx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXG5cdFx0XHRpZiAoIGN1cnJlbnQgPT09IFwiKlwiICkge1xuXG5cdFx0XHRcdGN1cnJlbnQgPSBwcmV2O1xuXG5cdFx0XHQvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50XG5cdFx0XHR9IGVsc2UgaWYgKCBwcmV2ICE9PSBcIipcIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXG5cdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgXCIqIFwiICsgY3VycmVudCBdO1xuXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXG5cdFx0XHRcdGlmICggIWNvbnYgKSB7XG5cdFx0XHRcdFx0Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50XG5cdFx0XHRcdFx0XHR0bXAgPSBjb252Mi5zcGxpdCggXCIgXCIgKTtcblx0XHRcdFx0XHRcdGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0XG5cdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyB0bXBbIDAgXSBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjb252ICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ29uZGVuc2UgZXF1aXZhbGVuY2UgY29udmVydGVyc1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY29udiA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50ID0gdG1wWyAwIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdG1wWyAxIF0gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVpdmFsZW5jZSlcblx0XHRcdFx0aWYgKCBjb252ICE9PSB0cnVlICkge1xuXG5cdFx0XHRcdFx0Ly8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNoIGFuZCByZXR1cm4gdGhlbVxuXHRcdFx0XHRcdGlmICggY29udiAmJiBzLnRocm93cyApIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGU6IFwicGFyc2VyZXJyb3JcIixcblx0XHRcdFx0XHRcdFx0XHRlcnJvcjogY29udiA/IGUgOiBcIk5vIGNvbnZlcnNpb24gZnJvbSBcIiArIHByZXYgKyBcIiB0byBcIiArIGN1cnJlbnRcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyBzdGF0ZTogXCJzdWNjZXNzXCIsIGRhdGE6IHJlc3BvbnNlIH07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcblx0YWN0aXZlOiAwLFxuXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3Rcblx0bGFzdE1vZGlmaWVkOiB7fSxcblx0ZXRhZzoge30sXG5cblx0YWpheFNldHRpbmdzOiB7XG5cdFx0dXJsOiBsb2NhdGlvbi5ocmVmLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0aXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSxcblx0XHRnbG9iYWw6IHRydWUsXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXG5cdFx0YXN5bmM6IHRydWUsXG5cdFx0Y29udGVudFR5cGU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG5cblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhVHlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL1xcYnhtbFxcYi8sXG5cdFx0XHRodG1sOiAvXFxiaHRtbC8sXG5cdFx0XHRqc29uOiAvXFxianNvblxcYi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogSlNPTi5wYXJzZSxcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXG5cdFx0XHQvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtXG5cdFx0XHRjYWNoZVVSTCxcblxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXG5cdFx0XHQvLyBVcmwgY2xlYW51cCB2YXJcblx0XHRcdHVybEFuY2hvcixcblxuXHRcdFx0Ly8gUmVxdWVzdCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRydWUgdXBvbiBjb21wbGV0aW9uKVxuXHRcdFx0Y29tcGxldGVkLFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcblx0XHRcdGZpcmVHbG9iYWxzLFxuXG5cdFx0XHQvLyBMb29wIHZhcmlhYmxlXG5cdFx0XHRpLFxuXG5cdFx0XHQvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmxcblx0XHRcdHVuY2FjaGVkLFxuXG5cdFx0XHQvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0XG5cdFx0XHRzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSxcblxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcblx0XHRcdGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLFxuXG5cdFx0XHQvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uXG5cdFx0XHRnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiZcblx0XHRcdFx0KCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID9cblx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdID1cblx0XHRcdFx0XHRcdFx0XHRcdCggcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdIHx8IFtdIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCggbWF0Y2hbIDIgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaC5qb2luKCBcIiwgXCIgKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICh0cmFjLTEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXG5cdFx0cy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArIFwiXCIgKVxuXHRcdFx0LnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKTtcblxuXHRcdC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0IHRyYWMtMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBlIHx8IFwiKlwiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmlnaW4gZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHR1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0XHQvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLFxuXHRcdFx0Ly8gZS5nLiBodHRwOi8vZXhhbXBsZS5jb206ODB4L1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSBzLnVybDtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSBvbmx5XG5cdFx0XHRcdC8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlXG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7XG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT1cblx0XHRcdFx0XHR1cmxBbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyB1cmxBbmNob3IuaG9zdDtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLFxuXHRcdFx0XHQvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkXG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZ1xuXHRcdGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcHJlZmlsdGVyc1xuXHRcdGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmVcblx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICh0cmFjLTE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gdHJhYy05NjgyOiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnlcblx0XHRcdFx0ZGVsZXRlIHMuZGF0YTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZFxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCBcIiQxXCIgKTtcblx0XHRcdFx0dW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgKCBub25jZS5ndWlkKysgKSArXG5cdFx0XHRcdFx0dW5jYWNoZWQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCAoZ2gtMTczMilcblx0XHRcdHMudXJsID0gY2FjaGVVUkwgKyB1bmNhY2hlZDtcblxuXHRcdC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KVxuXHRcdH0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmXG5cdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCApIHtcblx0XHRcdHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU5vbmUtTWF0Y2hcIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcblx0XHRpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIsIHMuY29udGVudFR5cGUgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlXG5cdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlcihcblx0XHRcdFwiQWNjZXB0XCIsXG5cdFx0XHRzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gK1xuXHRcdFx0XHRcdCggcy5kYXRhVHlwZXNbIDAgXSAhPT0gXCIqXCIgPyBcIiwgXCIgKyBhbGxUeXBlcyArIFwiOyBxPTAuMDFcIiA6IFwiXCIgKSA6XG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxuXHRcdCk7XG5cblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cblx0XHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydFxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmXG5cdFx0XHQoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCApICkge1xuXG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Y29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTtcblx0XHRqcVhIUi5kb25lKCBzLnN1Y2Nlc3MgKTtcblx0XHRqcVhIUi5mYWlsKCBzLmVycm9yICk7XG5cblx0XHQvLyBHZXQgdHJhbnNwb3J0XG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnRcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XG5cdFx0XHRkb25lKCAtMSwgXCJObyBUcmFuc3BvcnRcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcblxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhTZW5kXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZVxuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybiBqcVhIUjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGltZW91dFxuXHRcdFx0aWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7XG5cdFx0XHRcdHRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydCggXCJ0aW1lb3V0XCIgKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbXBsZXRlZCA9IGZhbHNlO1xuXHRcdFx0XHR0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0c1xuXHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnNcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbXBsZXRlZCA9IHRydWU7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFVzZSBhIG5vb3AgY29udmVydGVyIGZvciBtaXNzaW5nIHNjcmlwdCBidXQgbm90IGlmIGpzb25wXG5cdFx0XHRpZiAoICFpc1N1Y2Nlc3MgJiZcblx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIFwic2NyaXB0XCIsIHMuZGF0YVR5cGVzICkgPiAtMSAmJlxuXHRcdFx0XHRqUXVlcnkuaW5BcnJheSggXCJqc29uXCIsIHMuZGF0YVR5cGVzICkgPCAwICkge1xuXHRcdFx0XHRzLmNvbnZlcnRlcnNbIFwidGV4dCBzY3JpcHRcIiBdID0gZnVuY3Rpb24oKSB7fTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiTGFzdC1Nb2RpZmllZFwiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJldGFnXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbnRcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlclxuXHRcdFx0XHRpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdG9wXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImdldFwiLCBcInBvc3RcIiBdLCBmdW5jdGlvbiggX2ksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXG5cdFx0Ly8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybClcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdHVybDogdXJsLFxuXHRcdFx0dHlwZTogbWV0aG9kLFxuXHRcdFx0ZGF0YVR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogY2FsbGJhY2tcblx0XHR9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkge1xuXHR2YXIgaTtcblx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0aWYgKCBpLnRvTG93ZXJDYXNlKCkgPT09IFwiY29udGVudC10eXBlXCIgKSB7XG5cdFx0XHRzLmNvbnRlbnRUeXBlID0gcy5oZWFkZXJzWyBpIF0gfHwgXCJcIjtcblx0XHR9XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsLCBvcHRpb25zLCBkb2MgKSB7XG5cdHJldHVybiBqUXVlcnkuYWpheCgge1xuXHRcdHVybDogdXJsLFxuXG5cdFx0Ly8gTWFrZSB0aGlzIGV4cGxpY2l0LCBzaW5jZSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIHRocm91Z2ggYWpheFNldHVwICh0cmFjLTExMjY0KVxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0Y2FjaGU6IHRydWUsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cblx0XHQvLyBPbmx5IGV2YWx1YXRlIHRoZSByZXNwb25zZSBpZiBpdCBpcyBzdWNjZXNzZnVsIChnaC00MTI2KVxuXHRcdC8vIGRhdGFGaWx0ZXIgaXMgbm90IGludm9rZWQgZm9yIGZhaWx1cmUgcmVzcG9uc2VzLCBzbyB1c2luZyBpdCBpbnN0ZWFkXG5cdFx0Ly8gb2YgdGhlIGRlZmF1bHQgY29udmVydGVyIGlzIGtsdWRneSBidXQgaXQgd29ya3MuXG5cdFx0Y29udmVydGVyczoge1xuXHRcdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbigpIHt9XG5cdFx0fSxcblx0XHRkYXRhRmlsdGVyOiBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggcmVzcG9uc2UsIG9wdGlvbnMsIGRvYyApO1xuXHRcdH1cblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyB0cmFjLTE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdHZhciBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaztcblxuXHQvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0XG5cdGlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkge1xuXHRcdFx0XHR2YXIgaSxcblx0XHRcdFx0XHR4aHIgPSBvcHRpb25zLnhocigpO1xuXG5cdFx0XHRcdHhoci5vcGVuKFxuXHRcdFx0XHRcdG9wdGlvbnMudHlwZSxcblx0XHRcdFx0XHRvcHRpb25zLnVybCxcblx0XHRcdFx0XHRvcHRpb25zLmFzeW5jLFxuXHRcdFx0XHRcdG9wdGlvbnMudXNlcm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9ucy5wYXNzd29yZFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdFx0eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkge1xuXHRcdFx0XHRcdHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlclxuXHRcdFx0XHQvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlXG5cdFx0XHRcdC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuXG5cdFx0XHRcdC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKVxuXHRcdFx0XHQvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC5cblx0XHRcdFx0aWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0eGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnRpbWVvdXQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggMCwgXCJlcnJvclwiICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSB0cmFjLTg2MDUsIHRyYWMtMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vIHRyYWMtMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldFxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4cGxpY2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpXG5qUXVlcnkuYWpheFByZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlO1xuXHR9XG59ICk7XG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBcIiArXG5cdFx0XHRcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbnRzOiB7XG5cdFx0c2NyaXB0OiAvXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydFxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gb3IgZm9yY2VkLWJ5LWF0dHJzIHJlcXVlc3RzXG5cdGlmICggcy5jcm9zc0RvbWFpbiB8fCBzLnNjcmlwdEF0dHJzICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeSggXCI8c2NyaXB0PlwiIClcblx0XHRcdFx0XHQuYXR0ciggcy5zY3JpcHRBdHRycyB8fCB7fSApXG5cdFx0XHRcdFx0LnByb3AoIHsgY2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LCBzcmM6IHMudXJsIH0gKVxuXHRcdFx0XHRcdC5vbiggXCJsb2FkIGVycm9yXCIsIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZS5ndWlkKysgKSApO1xuXHRcdHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlO1xuXHRcdHJldHVybiBjYWxsYmFjaztcblx0fVxufSApO1xuXG4vLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHNcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xuXG5cdHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lcixcblx0XHRqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgP1xuXHRcdFx0XCJ1cmxcIiA6XG5cdFx0XHR0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiIClcblx0XHRcdFx0XHQuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICYmXG5cdFx0XHRcdHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiBcImRhdGFcIlxuXHRcdCk7XG5cblx0Ly8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzIFwianNvbnBcIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldFxuXHRpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09IFwianNvbnBcIiApIHtcblxuXHRcdC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXRcblx0XHRjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBpc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbIFwic2NyaXB0IGpzb25cIiBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHtcblx0XHRcdFx0alF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyBcIiB3YXMgbm90IGNhbGxlZFwiICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VDb250YWluZXJbIDAgXTtcblx0XHR9O1xuXG5cdFx0Ly8gRm9yY2UganNvbiBkYXRhVHlwZVxuXHRcdHMuZGF0YVR5cGVzWyAwIF0gPSBcImpzb25cIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tcblx0XHRvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07XG5cdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7XG5cdFx0fTtcblxuXHRcdC8vIENsZWFuLXVwIGZ1bmN0aW9uIChmaXJlcyBhZnRlciBjb252ZXJ0ZXJzKVxuXHRcdGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdFxuXHRcdFx0aWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRqUXVlcnkoIHdpbmRvdyApLnJlbW92ZVByb3AoIGNhbGxiYWNrTmFtZSApO1xuXG5cdFx0XHQvLyBPdGhlcndpc2UgcmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIFNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSApIHtcblx0XHRcdFx0b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDtcblx0XHR9ICk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSApO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5XG4vLyBJbiBTYWZhcmkgOCBkb2N1bWVudHMgY3JlYXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50XG4vLyBjb2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IG9uZS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC5cbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzdcbnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHtcblx0dmFyIGJvZHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKS5ib2R5O1xuXHRib2R5LmlubmVySFRNTCA9IFwiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT5cIjtcblx0cmV0dXJuIGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggPT09IDI7XG59ICkoKTtcblxuXG4vLyBBcmd1bWVudCBcImRhdGFcIiBzaG91bGQgYmUgc3RyaW5nIG9mIGh0bWxcbi8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCxcbi8vIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoIHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cblx0dmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0cztcblxuXHRpZiAoICFjb250ZXh0ICkge1xuXG5cdFx0Ly8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGltbWVkaWF0ZWx5XG5cdFx0Ly8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb25cblx0XHRpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ICkge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApO1xuXG5cdFx0XHQvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnRcblx0XHRcdC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzXG5cdFx0XHQvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1KVxuXHRcdFx0YmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJiYXNlXCIgKTtcblx0XHRcdGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XG5cdFx0XHRjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50O1xuXHRcdH1cblx0fVxuXG5cdHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApO1xuXHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApO1xuXG5cdGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApO1xufTtcblxuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxuXHRcdHNlbGYgPSB0aGlzLFxuXHRcdG9mZiA9IHVybC5pbmRleE9mKCBcIiBcIiApO1xuXG5cdGlmICggb2ZmID4gLTEgKSB7XG5cdFx0c2VsZWN0b3IgPSBzdHJpcEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGlzRnVuY3Rpb24oIHBhcmFtcyApICkge1xuXG5cdFx0Ly8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2tcblx0XHRjYWxsYmFjayA9IHBhcmFtcztcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQ7XG5cblx0Ly8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFtIHN0cmluZ1xuXHR9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHR0eXBlID0gXCJQT1NUXCI7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdFxuXHRpZiAoIHNlbGYubGVuZ3RoID4gMCApIHtcblx0XHRqUXVlcnkuYWpheCgge1xuXHRcdFx0dXJsOiB1cmwsXG5cblx0XHRcdC8vIElmIFwidHlwZVwiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiBcIkdFVFwiIG1ldGhvZCB3aWxsIGJlIHVzZWQuXG5cdFx0XHQvLyBNYWtlIHZhbHVlIG9mIHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2Vcblx0XHRcdC8vIHVzZXIgY2FuIG92ZXJyaWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZFxuXHRcdFx0dHlwZTogdHlwZSB8fCBcIkdFVFwiLFxuXHRcdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxuXHRcdFx0ZGF0YTogcGFyYW1zXG5cdFx0fSApLmRvbmUoIGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7XG5cblx0XHRcdC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFja1xuXHRcdFx0cmVzcG9uc2UgPSBhcmd1bWVudHM7XG5cblx0XHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xuXG5cdFx0XHRcdC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdlxuXHRcdFx0XHQvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnNcblx0XHRcdFx0alF1ZXJ5KCBcIjxkaXY+XCIgKS5hcHBlbmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHRcblx0XHRcdFx0cmVzcG9uc2VUZXh0ICk7XG5cblx0XHQvLyBJZiB0aGUgcmVxdWVzdCBzdWNjZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzIFwiZGF0YVwiLCBcInN0YXR1c1wiLCBcImpxWEhSXCJcblx0XHQvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNlIHJlc3BvbnNlIHdhcyBzZXQgYWJvdmUuXG5cdFx0Ly8gSWYgaXQgZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImpxWEhSXCIsIFwic3RhdHVzXCIsIFwiZXJyb3JcIlxuXHRcdH0gKS5hbHdheXMoIGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXHRcdFx0c2VsZi5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y2FsbGJhY2suYXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHRyZXR1cm4gdGhpcztcbn07XG5cblxuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5ncmVwKCBqUXVlcnkudGltZXJzLCBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW0gPT09IGZuLmVsZW07XG5cdH0gKS5sZW5ndGg7XG59O1xuXG5cblxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgPSB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoIFwiYXV0b1wiICkgPiAtMTtcblxuXHRcdC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyXG5cdFx0Ly8gdG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkXG5cdFx0aWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHtcblx0XHRcdGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpO1xuXHRcdFx0Y3VyVG9wID0gY3VyUG9zaXRpb24udG9wO1xuXHRcdFx0Y3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDtcblx0XHRcdGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDtcblx0XHR9XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcblxuXHRcdFx0Ly8gVXNlIGpRdWVyeS5leHRlbmQgaGVyZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgpXG5cdFx0XHRvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdGlvbnMudG9wICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wO1xuXHRcdH1cblx0XHRpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7XG5cdFx0fVxuXG5cdFx0aWYgKCBcInVzaW5nXCIgaW4gb3B0aW9ucyApIHtcblx0XHRcdG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJvcHMgKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJFbGVtLmNzcyggcHJvcHMgKTtcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHQvLyBvZmZzZXQoKSByZWxhdGVzIGFuIGVsZW1lbnQncyBib3JkZXIgYm94IHRvIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHRcdC8vIFByZXNlcnZlIGNoYWluaW5nIGZvciBzZXR0ZXJcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0dGhpcyA6XG5cdFx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcblx0XHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHZhciByZWN0LCB3aW4sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBhbmQgaGlkZGVuIChkaXNwbGF5OiBub25lKSBlbGVtZW50cyAoZ2gtMjMxMClcblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0XHQvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhXG5cdFx0Ly8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUgdGhyb3dzIGFuIGVycm9yXG5cdFx0aWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9O1xuXHRcdH1cblxuXHRcdC8vIEdldCBkb2N1bWVudC1yZWxhdGl2ZSBwb3NpdGlvbiBieSBhZGRpbmcgdmlld3BvcnQgc2Nyb2xsIHRvIHZpZXdwb3J0LXJlbGF0aXZlIGdCQ1Jcblx0XHRyZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHR3aW4gPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQsXG5cdFx0XHRsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXRcblx0XHR9O1xuXHR9LFxuXG5cdC8vIHBvc2l0aW9uKCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgbWFyZ2luIGJveCB0byBpdHMgb2Zmc2V0IHBhcmVudCdzIHBhZGRpbmcgYm94XG5cdC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGJlaGF2aW9yIG9mIENTUyBhYnNvbHV0ZSBwb3NpdGlvbmluZ1xuXHRwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAhdGhpc1sgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwgZG9jLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gdGhlIHZpZXdwb3J0LCB3aGljaCBpdHNlbGYgYWx3YXlzIGhhcyB6ZXJvIG9mZnNldFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblxuXHRcdFx0Ly8gQXNzdW1lIHBvc2l0aW9uOmZpeGVkIGltcGxpZXMgYXZhaWxhYmlsaXR5IG9mIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB0aGUgKnJlYWwqIG9mZnNldCBwYXJlbnQsIHdoaWNoIGNhbiBiZSB0aGUgZG9jdW1lbnQgb3IgaXRzIHJvb3QgZWxlbWVudFxuXHRcdFx0Ly8gd2hlbiBhIHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVtZW50IGlzIGlkZW50aWZpZWRcblx0XHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHRcdG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50IHx8IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJlxuXHRcdFx0XHQoIG9mZnNldFBhcmVudCA9PT0gZG9jLmJvZHkgfHwgb2Zmc2V0UGFyZW50ID09PSBkb2MuZG9jdW1lbnRFbGVtZW50ICkgJiZcblx0XHRcdFx0alF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblxuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGlmICggb2Zmc2V0UGFyZW50ICYmIG9mZnNldFBhcmVudCAhPT0gZWxlbSAmJiBvZmZzZXRQYXJlbnQubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgYm9yZGVycyBpbnRvIGl0cyBvZmZzZXQsIHNpbmNlIHRoZXkgYXJlIG91dHNpZGUgaXRzIGNvbnRlbnQgb3JpZ2luXG5cdFx0XHRcdHBhcmVudE9mZnNldCA9IGpRdWVyeSggb2Zmc2V0UGFyZW50ICkub2Zmc2V0KCk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC50b3AgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlclRvcFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LmxlZnQgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlckxlZnRXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2luc1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5Ub3BcIiwgdHJ1ZSApLFxuXHRcdFx0bGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luTGVmdFwiLCB0cnVlIClcblx0XHR9O1xuXHR9LFxuXG5cdC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3VtZW50RWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuXHQvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuXG5cdC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdpbmRvd1xuXHQvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50XG5cdC8vIDMpIEZvciBib2R5IG9yIGh0bWwgZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJldHVybiBpdHNlbGZcblx0Ly9cblx0Ly8gYnV0IHRob3NlIGV4Y2VwdGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzXG5cdC8vIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGFzIG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLlxuXHQvL1xuXHQvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBhbmQgY2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZVxuXHRvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7XG5cblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50O1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG4vLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IHNjcm9sbExlZnQ6IFwicGFnZVhPZmZzZXRcIiwgc2Nyb2xsVG9wOiBcInBhZ2VZT2Zmc2V0XCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHtcblx0dmFyIHRvcCA9IFwicGFnZVlPZmZzZXRcIiA9PT0gcHJvcDtcblxuXHRqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9kLCB2YWwgKSB7XG5cblx0XHRcdC8vIENvYWxlc2NlIGRvY3VtZW50cyBhbmQgd2luZG93c1xuXHRcdFx0dmFyIHdpbjtcblx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0d2luID0gZWxlbTtcblx0XHRcdH0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW0uZGVmYXVsdFZpZXc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiB3aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHdpbiApIHtcblx0XHRcdFx0d2luLnNjcm9sbFRvKFxuXHRcdFx0XHRcdCF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsXG5cdFx0XHRcdFx0dG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1bIG1ldGhvZCBdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH07XG59ICk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDlcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3XG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBfaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCgge1xuXHRcdHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsXG5cdFx0Y29udGVudDogdHlwZSxcblx0XHRcIlwiOiBcIm91dGVyXCIgKyBuYW1lXG5cdH0sIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyAkKCB3aW5kb3cgKS5vdXRlcldpZHRoL0hlaWdodCByZXR1cm4gdy9oIGluY2x1ZGluZyBzY3JvbGxiYXJzIChnaC0xNzI5KVxuXHRcdFx0XHRcdHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCBcIm91dGVyXCIgKSA9PT0gMCA/XG5cdFx0XHRcdFx0XHRlbGVtWyBcImlubmVyXCIgKyBuYW1lIF0gOlxuXHRcdFx0XHRcdFx0ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIFwiY2xpZW50XCIgKyBuYW1lIF07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdFx0XHRcdC8vIEVpdGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGllbnRbV2lkdGgvSGVpZ2h0XSxcblx0XHRcdFx0XHQvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3Rcblx0XHRcdFx0XHRyZXR1cm4gTWF0aC5tYXgoXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwic2Nyb2xsXCIgKyBuYW1lIF0sIGRvY1sgXCJzY3JvbGxcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJvZmZzZXRcIiArIG5hbWUgXSwgZG9jWyBcIm9mZnNldFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZG9jWyBcImNsaWVudFwiICsgbmFtZSBdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblxuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTtcblx0XHR9O1xuXHR9ICk7XG59ICk7XG5cblxualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIF9pLCB0eXBlICkge1xuXHRqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTtcblx0fTtcbn0gKTtcblxuXG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgP1xuXHRcdFx0dGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6XG5cdFx0XHR0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8IFwiKipcIiwgZm4gKTtcblx0fSxcblxuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goXG5cdCggXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cblx0XHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRcdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID9cblx0XHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHRcdH07XG5cdH1cbik7XG5cblxuXG5cbi8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG4vLyBSZXF1aXJlIHRoYXQgdGhlIFwid2hpdGVzcGFjZSBydW5cIiBzdGFydHMgZnJvbSBhIG5vbi13aGl0ZXNwYWNlXG4vLyB0byBhdm9pZCBPKE5eMikgYmVoYXZpb3Igd2hlbiB0aGUgZW5naW5lIHdvdWxkIHRyeSBtYXRjaGluZyBcIlxccyskXCIgYXQgZWFjaCBzcGFjZSBwb3NpdGlvbi5cbnZhciBydHJpbSA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfChbXlxcc1xcdUZFRkZcXHhBMF0pW1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG4vLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcbi8vIGFyZ3VtZW50cy5cbi8vIGpRdWVyeS5wcm94eSBpcyBkZXByZWNhdGVkIHRvIHByb21vdGUgc3RhbmRhcmRzIChzcGVjaWZpY2FsbHkgRnVuY3Rpb24jYmluZClcbi8vIEhvd2V2ZXIsIGl0IGlzIG5vdCBzbGF0ZWQgZm9yIHJlbW92YWwgYW55IHRpbWUgc29vblxualF1ZXJ5LnByb3h5ID0gZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0Y29udGV4dCA9IGZuO1xuXHRcdGZuID0gdG1wO1xuXHR9XG5cblx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0Ly8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC5cblx0aWYgKCAhaXNGdW5jdGlvbiggZm4gKSApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGVkIGJpbmRcblx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApO1xuXHR9O1xuXG5cdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKztcblxuXHRyZXR1cm4gcHJveHk7XG59O1xuXG5qUXVlcnkuaG9sZFJlYWR5ID0gZnVuY3Rpb24oIGhvbGQgKSB7XG5cdGlmICggaG9sZCApIHtcblx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdH1cbn07XG5qUXVlcnkuaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5qUXVlcnkucGFyc2VKU09OID0gSlNPTi5wYXJzZTtcbmpRdWVyeS5ub2RlTmFtZSA9IG5vZGVOYW1lO1xualF1ZXJ5LmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xualF1ZXJ5LmlzV2luZG93ID0gaXNXaW5kb3c7XG5qUXVlcnkuY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xualF1ZXJ5LnR5cGUgPSB0b1R5cGU7XG5cbmpRdWVyeS5ub3cgPSBEYXRlLm5vdztcblxualF1ZXJ5LmlzTnVtZXJpYyA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0Ly8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmljIGlzIGxpbWl0ZWQgdG9cblx0Ly8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZlcyBvciBvYmplY3RzKVxuXHQvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYyKVxuXHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblx0cmV0dXJuICggdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcInN0cmluZ1wiICkgJiZcblxuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7XG59O1xuXG5qUXVlcnkudHJpbSA9IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcIlwiIDpcblx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApO1xufTtcblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAodHJhYy03MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAodHJhYy0xMzU2NilcbmlmICggdHlwZW9mIG5vR2xvYmFsID09PSBcInVuZGVmaW5lZFwiICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cblxuXG5cbnJldHVybiBqUXVlcnk7XG59ICk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiIsIi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVB1c2g7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5zcGxpdCgnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlUb0FycmF5O1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbkluO1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgPD0gdXBwZXIgPyBudW1iZXIgOiB1cHBlcjtcbiAgICB9XG4gICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG51bWJlciA9IG51bWJlciA+PSBsb3dlciA/IG51bWJlciA6IGxvd2VyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtYmVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbGFtcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiAhbGVuZ3RoO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNvbmZvcm1zVG87XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGU7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJyYXlCdWZmZXI7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0RhdGU7XG4iLCJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWFwO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNSZWdFeHA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCJ2YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5cztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5c0luID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5c0luJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXNJbjtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUx0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVmFsdWVzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FjaGVIYXM7XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gIGlmIChpc0RlZXApIHtcbiAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICovXG5mdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGF0YVZpZXc7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9sc0luO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgaWYgKCEodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnICYmIHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykpIHtcbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb247XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xudmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzVW5pY29kZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUFycmF5O1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiIsInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBzdHViRmFsc2UgPSByZXF1aXJlKCcuL3N0dWJGYWxzZScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG52YXIgaXNNYXNrYWJsZSA9IGNvcmVKc0RhdGEgPyBpc0Z1bmN0aW9uIDogc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2FibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiIsIi8qKlxuICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICB2YXIgZGF0YSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdG9yVG9BcnJheTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0NsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrR2V0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0hhcztcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICB9XG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuIiwidmFyIGFzY2lpVG9BcnJheSA9IHJlcXVpcmUoJy4vX2FzY2lpVG9BcnJheScpLFxuICAgIGhhc1VuaWNvZGUgPSByZXF1aXJlKCcuL19oYXNVbmljb2RlJyksXG4gICAgdW5pY29kZVRvQXJyYXkgPSByZXF1aXJlKCcuL191bmljb2RlVG9BcnJheScpO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb0FycmF5O1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG52YXIgcmVXaGl0ZXNwYWNlID0gL1xccy87XG5cbi8qKlxuICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZVxuICogY2hhcmFjdGVyIG9mIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gdHJpbW1lZEVuZEluZGV4KHN0cmluZykge1xuICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tICYmIHJlV2hpdGVzcGFjZS50ZXN0KHN0cmluZy5jaGFyQXQoaW5kZXgpKSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1tZWRFbmRJbmRleDtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaWNvZGVUb0FycmF5O1xuIiwidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuNC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5jYXN0QXJyYXkoMSk7XG4gKiAvLyA9PiBbMV1cbiAqXG4gKiBfLmNhc3RBcnJheSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IFt7ICdhJzogMSB9XVxuICpcbiAqIF8uY2FzdEFycmF5KCdhYmMnKTtcbiAqIC8vID0+IFsnYWJjJ11cbiAqXG4gKiBfLmNhc3RBcnJheShudWxsKTtcbiAqIC8vID0+IFtudWxsXVxuICpcbiAqIF8uY2FzdEFycmF5KHVuZGVmaW5lZCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkXVxuICpcbiAqIF8uY2FzdEFycmF5KCk7XG4gKiAvLyA9PiBbXVxuICpcbiAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0QXJyYXk7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZURlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmU7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lV2l0aFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKHRydWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAqIC8vID0+IGZhbHNlXG4gKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gKiAvLyA9PiAnQk9EWSdcbiAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAqIC8vID0+IDIwXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcFdpdGg7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAqIHVwIHRvIGZvdXIgYXJndW1lbnRzOyAodmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIHN0YWNrXSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVEZWVwV2l0aFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBlbCA9IF8uY2xvbmVXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAqIC8vID0+IGZhbHNlXG4gKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gKiAvLyA9PiAnQk9EWSdcbiAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gY2xvbmVXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVdpdGg7XG4iLCJ2YXIgYmFzZUNvbmZvcm1zVG8gPSByZXF1aXJlKCcuL19iYXNlQ29uZm9ybXNUbycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICogcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICogcGFydGlhbGx5IGFwcGxpZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjE0LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqXG4gKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uZm9ybXNUbztcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGJhc2VHdCA9IHJlcXVpcmUoJy4vX2Jhc2VHdCcpLFxuICAgIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmx0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZ3QoMywgMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndCgzLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5ndCgxLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBndCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBndDtcbiIsInZhciBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy45LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAqIEBzZWUgXy5sdGVcbiAqIEBleGFtcGxlXG4gKlxuICogXy5ndGUoMywgMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndGUoMywgMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndGUoMSwgMyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ3RlO1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBiYXNlSXNBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FycmF5QnVmZmVyJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc0FycmF5QnVmZmVyID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcjtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheUJ1ZmZlcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUJ1ZmZlcjtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCb29sZWFuO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwidmFyIGJhc2VJc0RhdGUgPSByZXF1aXJlKCcuL19iYXNlSXNEYXRlJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc0RhdGUgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0RhdGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBEYXRlYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNEYXRlO1xuIiwidmFyIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgRE9NIGVsZW1lbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VsZW1lbnQoZG9jdW1lbnQuYm9keSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VsZW1lbnQoJzxib2R5PicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VsZW1lbnQ7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gKlxuICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gKiBwcm9wZXJ0aWVzLlxuICpcbiAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VtcHR5KG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSh0cnVlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cbiAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5O1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBvYmplY3QgPT09IG90aGVyO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbDtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbFdpdGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Vycm9yO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0Zpbml0ZSA9IHJvb3QuaXNGaW5pdGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Zpbml0ZSgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRmluaXRlKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Zpbml0ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzSW50ZWdlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzSW50ZWdlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT0gdG9JbnRlZ2VyKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ludGVnZXI7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gKiBkZXRlcm1pbmUgaWYgYG9iamVjdGAgY29udGFpbnMgZXF1aXZhbGVudCBwcm9wZXJ0eSB2YWx1ZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICogcGFydGlhbGx5IGFwcGxpZWQuXG4gKlxuICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqXG4gKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXRjaDtcbiIsInZhciBiYXNlSXNNYXRjaCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hdGNoJyksXG4gICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWF0Y2hEYXRhJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc01hdGNoYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAqIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwgaW5kZXh8a2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICpcbiAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSksIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWF0Y2hXaXRoO1xuIiwidmFyIGlzTnVtYmVyID0gcmVxdWlyZSgnLi9pc051bWJlcicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBOYU5gLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNOYU5gXShodHRwczovL21kbi5pby9OdW1iZXIvaXNOYU4pIGFuZCBpcyBub3QgdGhlIHNhbWUgYXNcbiAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOYU4oTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmFOKG5ldyBOdW1iZXIoTmFOKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOYU4odW5kZWZpbmVkKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmFOKHVuZGVmaW5lZCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgLy8gQWN0aXZlWCBvYmplY3RzIGluIElFLlxuICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05hTjtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBpc01hc2thYmxlID0gcmVxdWlyZSgnLi9faXNNYXNrYWJsZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLic7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcmlzdGluZSBuYXRpdmUgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICogb2YgdGhlIGNvcmUtanMgcGFja2FnZSBiZWNhdXNlIGNvcmUtanMgY2lyY3VtdmVudHMgdGhpcyBraW5kIG9mIGRldGVjdGlvbi5cbiAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gKiB3aXRoIGxpdHRsZSBjaG9pY2UgYnV0IHRvIHRocm93IGFuIGVycm9yLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGFsc28gYWZmZWN0c1xuICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmF0aXZlKF8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKENPUkVfRVJST1JfVEVYVCk7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOYXRpdmU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOaWwobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwoTmFOKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmlsO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOdWxsKG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVsbDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE51bWJlcmAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAqIGNsYXNzaWZpZWQgYXMgbnVtYmVycywgdXNlIHRoZSBgXy5pc0Zpbml0ZWAgbWV0aG9kLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOdW1iZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gbnVtYmVyVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc051bWJlcjtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUlzUmVnRXhwID0gcmVxdWlyZSgnLi9fYmFzZUlzUmVnRXhwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1JlZ0V4cCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzUmVnRXhwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1JlZ0V4cCgvYWJjLyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1JlZ0V4cCgnL2FiYy8nKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1JlZ0V4cCA9IG5vZGVJc1JlZ0V4cCA/IGJhc2VVbmFyeShub2RlSXNSZWdFeHApIDogYmFzZUlzUmVnRXhwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUmVnRXhwO1xuIiwidmFyIGlzSW50ZWdlciA9IHJlcXVpcmUoJy4vaXNJbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICogZG91YmxlIHByZWNpc2lvbiBudW1iZXIgd2hpY2ggaXNuJ3QgdGhlIHJlc3VsdCBvZiBhIHJvdW5kZWQgdW5zYWZlIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYE51bWJlci5pc1NhZmVJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzU2FmZUludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2FmZUludGVnZXI7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzV2Vha01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1dlYWtNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzV2Vha01hcDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHdlYWtTZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNXZWFrU2V0O1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICdjYXN0QXJyYXknOiByZXF1aXJlKCcuL2Nhc3RBcnJheScpLFxuICAnY2xvbmUnOiByZXF1aXJlKCcuL2Nsb25lJyksXG4gICdjbG9uZURlZXAnOiByZXF1aXJlKCcuL2Nsb25lRGVlcCcpLFxuICAnY2xvbmVEZWVwV2l0aCc6IHJlcXVpcmUoJy4vY2xvbmVEZWVwV2l0aCcpLFxuICAnY2xvbmVXaXRoJzogcmVxdWlyZSgnLi9jbG9uZVdpdGgnKSxcbiAgJ2NvbmZvcm1zVG8nOiByZXF1aXJlKCcuL2NvbmZvcm1zVG8nKSxcbiAgJ2VxJzogcmVxdWlyZSgnLi9lcScpLFxuICAnZ3QnOiByZXF1aXJlKCcuL2d0JyksXG4gICdndGUnOiByZXF1aXJlKCcuL2d0ZScpLFxuICAnaXNBcmd1bWVudHMnOiByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICdpc0FycmF5JzogcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICdpc0FycmF5QnVmZmVyJzogcmVxdWlyZSgnLi9pc0FycmF5QnVmZmVyJyksXG4gICdpc0FycmF5TGlrZSc6IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgJ2lzQXJyYXlMaWtlT2JqZWN0JzogcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAnaXNCb29sZWFuJzogcmVxdWlyZSgnLi9pc0Jvb2xlYW4nKSxcbiAgJ2lzQnVmZmVyJzogcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAnaXNEYXRlJzogcmVxdWlyZSgnLi9pc0RhdGUnKSxcbiAgJ2lzRWxlbWVudCc6IHJlcXVpcmUoJy4vaXNFbGVtZW50JyksXG4gICdpc0VtcHR5JzogcmVxdWlyZSgnLi9pc0VtcHR5JyksXG4gICdpc0VxdWFsJzogcmVxdWlyZSgnLi9pc0VxdWFsJyksXG4gICdpc0VxdWFsV2l0aCc6IHJlcXVpcmUoJy4vaXNFcXVhbFdpdGgnKSxcbiAgJ2lzRXJyb3InOiByZXF1aXJlKCcuL2lzRXJyb3InKSxcbiAgJ2lzRmluaXRlJzogcmVxdWlyZSgnLi9pc0Zpbml0ZScpLFxuICAnaXNGdW5jdGlvbic6IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAnaXNJbnRlZ2VyJzogcmVxdWlyZSgnLi9pc0ludGVnZXInKSxcbiAgJ2lzTGVuZ3RoJzogcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAnaXNNYXAnOiByZXF1aXJlKCcuL2lzTWFwJyksXG4gICdpc01hdGNoJzogcmVxdWlyZSgnLi9pc01hdGNoJyksXG4gICdpc01hdGNoV2l0aCc6IHJlcXVpcmUoJy4vaXNNYXRjaFdpdGgnKSxcbiAgJ2lzTmFOJzogcmVxdWlyZSgnLi9pc05hTicpLFxuICAnaXNOYXRpdmUnOiByZXF1aXJlKCcuL2lzTmF0aXZlJyksXG4gICdpc05pbCc6IHJlcXVpcmUoJy4vaXNOaWwnKSxcbiAgJ2lzTnVsbCc6IHJlcXVpcmUoJy4vaXNOdWxsJyksXG4gICdpc051bWJlcic6IHJlcXVpcmUoJy4vaXNOdW1iZXInKSxcbiAgJ2lzT2JqZWN0JzogcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAnaXNPYmplY3RMaWtlJzogcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKSxcbiAgJ2lzUGxhaW5PYmplY3QnOiByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKSxcbiAgJ2lzUmVnRXhwJzogcmVxdWlyZSgnLi9pc1JlZ0V4cCcpLFxuICAnaXNTYWZlSW50ZWdlcic6IHJlcXVpcmUoJy4vaXNTYWZlSW50ZWdlcicpLFxuICAnaXNTZXQnOiByZXF1aXJlKCcuL2lzU2V0JyksXG4gICdpc1N0cmluZyc6IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgJ2lzU3ltYm9sJzogcmVxdWlyZSgnLi9pc1N5bWJvbCcpLFxuICAnaXNUeXBlZEFycmF5JzogcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgJ2lzVW5kZWZpbmVkJzogcmVxdWlyZSgnLi9pc1VuZGVmaW5lZCcpLFxuICAnaXNXZWFrTWFwJzogcmVxdWlyZSgnLi9pc1dlYWtNYXAnKSxcbiAgJ2lzV2Vha1NldCc6IHJlcXVpcmUoJy4vaXNXZWFrU2V0JyksXG4gICdsdCc6IHJlcXVpcmUoJy4vbHQnKSxcbiAgJ2x0ZSc6IHJlcXVpcmUoJy4vbHRlJyksXG4gICd0b0FycmF5JzogcmVxdWlyZSgnLi90b0FycmF5JyksXG4gICd0b0Zpbml0ZSc6IHJlcXVpcmUoJy4vdG9GaW5pdGUnKSxcbiAgJ3RvSW50ZWdlcic6IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyksXG4gICd0b0xlbmd0aCc6IHJlcXVpcmUoJy4vdG9MZW5ndGgnKSxcbiAgJ3RvTnVtYmVyJzogcmVxdWlyZSgnLi90b051bWJlcicpLFxuICAndG9QbGFpbk9iamVjdCc6IHJlcXVpcmUoJy4vdG9QbGFpbk9iamVjdCcpLFxuICAndG9TYWZlSW50ZWdlcic6IHJlcXVpcmUoJy4vdG9TYWZlSW50ZWdlcicpLFxuICAndG9TdHJpbmcnOiByZXF1aXJlKCcuL3RvU3RyaW5nJylcbn07XG4iLCJ2YXIgYmFzZUx0ID0gcmVxdWlyZSgnLi9fYmFzZUx0JyksXG4gICAgY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuOS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAc2VlIF8uZ3RcbiAqIEBleGFtcGxlXG4gKlxuICogXy5sdCgxLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0KDMsIDMpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmx0KDMsIDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGx0O1xuIiwidmFyIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmd0ZVxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmx0ZSgxLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0ZSgzLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0ZSgzLCAxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBsdGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBsdGU7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNTdHJpbmcgPSByZXF1aXJlKCcuL2lzU3RyaW5nJyksXG4gICAgaXRlcmF0b3JUb0FycmF5ID0gcmVxdWlyZSgnLi9faXRlcmF0b3JUb0FycmF5JyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpLFxuICAgIHN0cmluZ1RvQXJyYXkgPSByZXF1aXJlKCcuL19zdHJpbmdUb0FycmF5JyksXG4gICAgdmFsdWVzID0gcmVxdWlyZSgnLi92YWx1ZXMnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1JdGVyYXRvciA9IFN5bWJvbCA/IFN5bWJvbC5pdGVyYXRvciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogXy50b0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICpcbiAqIF8udG9BcnJheSgxKTtcbiAqIC8vID0+IFtdXG4gKlxuICogXy50b0FycmF5KG51bGwpO1xuICogLy8gPT4gW11cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICB9XG4gIGlmIChzeW1JdGVyYXRvciAmJiB2YWx1ZVtzeW1JdGVyYXRvcl0pIHtcbiAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgcmV0dXJuIGZ1bmModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvQXJyYXk7XG4iLCJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTIuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvRmluaXRlKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9GaW5pdGUoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gIH1cbiAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgfVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRmluaXRlO1xuIiwidmFyIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0ludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgcmV0dXJuIHJlc3VsdCA9PT0gcmVzdWx0ID8gKHJlbWFpbmRlciA/IHJlc3VsdCAtIHJlbWFpbmRlciA6IHJlc3VsdCkgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSW50ZWdlcjtcbiIsInZhciBiYXNlQ2xhbXAgPSByZXF1aXJlKCcuL19iYXNlQ2xhbXAnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xudmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlciBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSBsZW5ndGggb2YgYW5cbiAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTGVuZ3RoKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IDQyOTQ5NjcyOTVcbiAqXG4gKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIDAsIE1BWF9BUlJBWV9MRU5HVEgpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0xlbmd0aDtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUNsYW1wID0gcmVxdWlyZSgnLi9fYmFzZUNsYW1wJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICogcmVwcmVzZW50ZWQgY29ycmVjdGx5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICpcbiAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpXG4gICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU2FmZUludGVnZXI7XG4iLCJ2YXIgYmFzZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVRvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1N0cmluZztcbiIsInZhciBiYXNlVmFsdWVzID0gcmVxdWlyZSgnLi9fYmFzZVZhbHVlcycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8udmFsdWVzKCdoaScpO1xuICogLy8gPT4gWydoJywgJ2knXVxuICovXG5mdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWVzO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFmcmlrYWFucyBbYWZdXG4vLyEgYXV0aG9yIDogV2VybmVyIE1vbGxlbnR6ZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZXJuZXJtXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYWYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhZicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaWVfRmVicnVhcmllX01hYXJ0X0FwcmlsX01laV9KdW5pZV9KdWxpZV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWcnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTb25fTWFhX0Rpbl9Xb2VfRG9uX1ZyeV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTWFfRGlfV29fRG9fVnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC92bXxubS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXm5tJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3ZtJyA6ICdWTSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ25tJyA6ICdOTSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVmFuZGFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW03DtHJlIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0dpc3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFhc10gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb29yICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBnZWxlZGUnLFxuICAgICAgICAgICAgczogXCInbiBwYWFyIHNla29uZGVzXCIsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGVzJyxcbiAgICAgICAgICAgIG06IFwiJ24gbWludXV0XCIsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZScsXG4gICAgICAgICAgICBoOiBcIiduIHV1clwiLFxuICAgICAgICAgICAgaGg6ICclZCB1cmUnLFxuICAgICAgICAgICAgZDogXCInbiBkYWdcIixcbiAgICAgICAgICAgIGRkOiAnJWQgZGFlJyxcbiAgICAgICAgICAgIE06IFwiJ24gbWFhbmRcIixcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlJyxcbiAgICAgICAgICAgIHk6IFwiJ24gamFhclwiLFxuICAgICAgICAgICAgeXk6ICclZCBqYWFyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwID8gJ3N0ZScgOiAnZGUnKVxuICAgICAgICAgICAgKTsgLy8gVGhhbmtzIHRvIEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vamp1cGl0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNYWFuZGFnIGlzIGRpZSBlZXJzdGUgZGFnIHZhbiBkaWUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gRGllIHdlZWsgd2F0IGRpZSA0ZGUgSmFudWFyaWUgYmV2YXQgaXMgZGllIGVlcnN0ZSB3ZWVrIHZhbiBkaWUgamFhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhZjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKEFsZ2VyaWEpIFthci1kel1cbi8vISBhdXRob3IgOiBBbWluZSBSb3VraDogaHR0cHM6Ly9naXRodWIuY29tL0FtaW5lMjdcbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuLy8hIGF1dGhvciA6IE5vdXJlZGRpbmUgTE9VQUhFREogOiBodHRwczovL2dpdGh1Yi5jb20vbm91cmVkZGluZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2KzYp9mG2YHZiicsXG4gICAgICAgICAgICAn2YHZitmB2LHZiicsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2YHYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZiicsXG4gICAgICAgICAgICAn2KzZiNin2YYnLFxuICAgICAgICAgICAgJ9is2YjZitmE2YrYqScsXG4gICAgICAgICAgICAn2KPZiNiqJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyRHogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1keicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJEejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKEt1d2FpdCkgW2FyLWt3XVxuLy8hIGF1dGhvciA6IE51c3JldCBQYXJsYWs6IGh0dHBzOi8vZ2l0aHViLmNvbS9udXNyZXRwYXJsYWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhckt3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXIta3cnLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdiq2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJLdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKExpYnlhKSBbYXItbHldXG4vLyEgYXV0aG9yIDogQWxpIEhtZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9raWtvYW5pc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICcxJyxcbiAgICAgICAgICAgIDI6ICcyJyxcbiAgICAgICAgICAgIDM6ICczJyxcbiAgICAgICAgICAgIDQ6ICc0JyxcbiAgICAgICAgICAgIDU6ICc1JyxcbiAgICAgICAgICAgIDY6ICc2JyxcbiAgICAgICAgICAgIDc6ICc3JyxcbiAgICAgICAgICAgIDg6ICc4JyxcbiAgICAgICAgICAgIDk6ICc5JyxcbiAgICAgICAgICAgIDA6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogbiA9PT0gMVxuICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICA6IG4gPT09IDJcbiAgICAgICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTBcbiAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgICAgICAgICAgOiA1O1xuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxzID0ge1xuICAgICAgICAgICAgczogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINir2YjYp9mGJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICfYs9in2LnYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGQ6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2YrZiNmFJyxcbiAgICAgICAgICAgICAgICAn2YrZiNmFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIE06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAn2LTZh9ixINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsdinJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ixJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB5OiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi52KfZhScsXG4gICAgICAgICAgICAgICAgJ9i52KfZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYudmI2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyTHkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1seScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJMeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKE1vcm9jY28pIFthci1tYV1cbi8vISBhdXRob3IgOiBFbEZhZGlsaSBZYXNzaW5lIDogaHR0cHM6Ly9naXRodWIuY29tL0VsRmFkaWxpWVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQgOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYXJNYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLW1hJywge1xuICAgICAgICBtb250aHM6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KfYrdivX9in2KvZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzczogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbTogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGg6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE06ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU06ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5OiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPZhtmI2KfYqicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhck1hO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoUGFsZXN0aW5lKSBbYXItcHNdXG4vLyEgYXV0aG9yIDogTWFqZCBBbC1TaGloYWJpIDogaHR0cHM6Ly9naXRodWIuY29tL21hamRhbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBhclBzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItcHMnLCB7XG4gICAgICAgIG1vbnRoczogJ9mD2KfZhtmI2YYg2KfZhNir2KfZhtmKX9i02KjYp9i3X9ii2LDYp9ixX9mG2YrYs9in2YZf2KPZitmR2KfYsV/Yrdiy2YrYsdin2YZf2KrZhdmR2YjYsl/YotioX9ij2YrZhNmI2YRf2KrYtNix2Yog2KfZhNij2YjZkdmEX9iq2LTYsdmK2YYg2KfZhNir2KfZhtmKX9mD2KfZhtmI2YYg2KfZhNij2YjZkdmEJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfZg9miX9i02KjYp9i3X9ii2LDYp9ixX9mG2YrYs9in2YZf2KPZitmR2KfYsV/Yrdiy2YrYsdin2YZf2KrZhdmR2YjYsl/YotioX9ij2YrZhNmI2YRf2KrZoV/YqtmiX9mD2aEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnJykgLy8gcmV2ZXJzZWQgc2luY2UgbmVnYXRpdmUgbG9va2JlaGluZCBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmVcbiAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLmpvaW4oJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vZodmiXSg/IVtcXHUwNjJhXFx1MDY0M10pL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLmpvaW4oJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJQcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKFNhdWRpIEFyYWJpYSkgW2FyLXNhXVxuLy8hIGF1dGhvciA6IFN1aGFpbCBBbGtvd2FpbGVldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS94c29oXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9mhJyxcbiAgICAgICAgICAgIDI6ICfZoicsXG4gICAgICAgICAgICAzOiAn2aMnLFxuICAgICAgICAgICAgNDogJ9mkJyxcbiAgICAgICAgICAgIDU6ICfZpScsXG4gICAgICAgICAgICA2OiAn2aYnLFxuICAgICAgICAgICAgNzogJ9mnJyxcbiAgICAgICAgICAgIDg6ICfZqCcsXG4gICAgICAgICAgICA5OiAn2aknLFxuICAgICAgICAgICAgMDogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGFyU2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1zYScsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhclNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSAgOiAgQXJhYmljIChUdW5pc2lhKSBbYXItdG5dXG4vLyEgYXV0aG9yIDogTmFkZXIgVG91a2FicmkgOiBodHRwczovL2dpdGh1Yi5jb20vbmFkZXJpb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyVG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci10bicsIHtcbiAgICAgICAgbW9udGhzOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyVG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIFthcl1cbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogbiA9PT0gMVxuICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICA6IG4gPT09IDJcbiAgICAgICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTBcbiAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgICAgICAgICAgOiA1O1xuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxzID0ge1xuICAgICAgICAgICAgczogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINir2YjYp9mGJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICfYs9in2LnYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGQ6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2YrZiNmFJyxcbiAgICAgICAgICAgICAgICAn2YrZiNmFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIE06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAn2LTZh9ixINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsdinJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ixJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB5OiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi52KfZhScsXG4gICAgICAgICAgICAgICAgJ9i52KfZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYudmI2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXInLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgbW06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgTU06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEF6ZXJiYWlqYW5pIFthel1cbi8vISBhdXRob3IgOiB0b3BjaGl5ZXYgOiBodHRwczovL2dpdGh1Yi5jb20vdG9wY2hpeWV2XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6ICctaW5jaScsXG4gICAgICAgIDU6ICctaW5jaScsXG4gICAgICAgIDg6ICctaW5jaScsXG4gICAgICAgIDcwOiAnLWluY2knLFxuICAgICAgICA4MDogJy1pbmNpJyxcbiAgICAgICAgMjogJy1uY2knLFxuICAgICAgICA3OiAnLW5jaScsXG4gICAgICAgIDIwOiAnLW5jaScsXG4gICAgICAgIDUwOiAnLW5jaScsXG4gICAgICAgIDM6ICctw7xuY8O8JyxcbiAgICAgICAgNDogJy3DvG5jw7wnLFxuICAgICAgICAxMDA6ICctw7xuY8O8JyxcbiAgICAgICAgNjogJy1uY8SxJyxcbiAgICAgICAgOTogJy11bmN1JyxcbiAgICAgICAgMTA6ICctdW5jdScsXG4gICAgICAgIDMwOiAnLXVuY3UnLFxuICAgICAgICA2MDogJy3EsW5jxLEnLFxuICAgICAgICA5MDogJy3EsW5jxLEnLFxuICAgIH07XG5cbiAgICB2YXIgYXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdheicsIHtcbiAgICAgICAgbW9udGhzOiAneWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2Ficicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICd5YW5fZmV2X21hcl9hcHJfbWF5X2l5bl9peWxfYXZxX3Nlbl9va3Rfbm95X2Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnQmF6YXJfQmF6YXIgZXJ0yZlzaV/Dh8mZcsWfyZluYsmZIGF4xZ9hbcSxX8OHyZlyxZ/JmW5iyZlfQ8O8bcmZIGF4xZ9hbcSxX0PDvG3JmV/FnsmZbmLJmScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQmF6X0J6RV/Dh0F4X8OHyZlyX0NBeF9Dw7xtX8WeyZluJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0J6X0JFX8OHQV/Dh8mZX0NBX0PDvF/FnsmZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc2FiYWggc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbZ8mZbMmZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvG7JmW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2tlw6fJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0OiAnJXMgyZl2dsmZbCcsXG4gICAgICAgICAgICBzOiAnYmlyIG5lw6fJmSBzYW5pecmZJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FuaXnJmScsXG4gICAgICAgICAgICBtOiAnYmlyIGTJmXFpccmZJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZMmZcWlxyZknLFxuICAgICAgICAgICAgaDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQ6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE06ICdiaXIgYXknLFxuICAgICAgICAgICAgTU06ICclZCBheScsXG4gICAgICAgICAgICB5OiAnYmlyIGlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaWwnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXihnw7xuZMO8enxheMWfYW0pJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2dlY8mZJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzyZloyZlyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnw7xuZMO8eic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYXjFn2FtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjEsW5jxLF8aW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctxLFuY8SxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJlbGFydXNpYW4gW2JlXVxuLy8hIGF1dGhvciA6IERtaXRyeSBEZW1pZG92IDogaHR0cHM6Ly9naXRodWIuY29tL2RlbWlkb3Y5MVxuLy8hIGF1dGhvcjogUHJhbGVza2E6IGh0dHA6Ly9wcmFsZXNrYS5wcm8vXG4vLyEgQXV0aG9yIDogTWVuZWxpb24gRWxlbnPDumxlIDogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMVxuICAgICAgICAgICAgPyBmb3Jtc1swXVxuICAgICAgICAgICAgOiBudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgICA6IGZvcm1zWzJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzczogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtbTogd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsF/RhdCy0ZbQu9GW0L3Ri1/RhdCy0ZbQu9GW0L0nIDogJ9GF0LLRltC70ZbQvdGDX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScsXG4gICAgICAgICAgICBoaDogd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsF/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW0L0nIDogJ9Cz0LDQtNC30ZbQvdGDX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScsXG4gICAgICAgICAgICBkZDogJ9C00LfQtdC90Yxf0LTQvdGWX9C00LfRkdC9JyxcbiAgICAgICAgICAgIE1NOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0Ytf0LzQtdGB0Y/RhtCw0Z4nLFxuICAgICAgICAgICAgeXk6ICfQs9C+0LRf0LPQsNC00Ytf0LPQsNC00L7RnicsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LAnIDogJ9GF0LLRltC70ZbQvdGDJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LAnIDogJ9Cz0LDQtNC30ZbQvdGDJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmUnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0YHRgtGD0LTQt9C10L3Rj1/Qu9GO0YLQsNCz0LBf0YHQsNC60LDQstGW0LrQsF/QutGA0LDRgdCw0LLRltC60LBf0YLRgNCw0Z7QvdGPX9GH0Y3RgNCy0LXQvdGPX9C70ZbQv9C10L3Rj1/QttC90ZbRntC90Y9f0LLQtdGA0LDRgdC90Y9f0LrQsNGB0YLRgNGL0YfQvdGW0LrQsF/Qu9GW0YHRgtCw0L/QsNC00LBf0YHQvdC10LbQvdGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRgdGC0YPQtNC30LXQvdGMX9C70Y7RgtGLX9GB0LDQutCw0LLRltC6X9C60YDQsNGB0LDQstGW0Lpf0YLRgNCw0LLQtdC90Yxf0YfRjdGA0LLQtdC90Yxf0LvRltC/0LXQvdGMX9C20L3RltCy0LXQvdGMX9Cy0LXRgNCw0YHQtdC90Yxf0LrQsNGB0YLRgNGL0YfQvdGW0Lpf0LvRltGB0YLQsNC/0LDQtF/RgdC90LXQttCw0L3RjCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9GB0YLRg9C0X9C70Y7Rgl/RgdCw0Lpf0LrRgNCw0YFf0YLRgNCw0LJf0YfRjdGA0LJf0LvRltC/X9C20L3RltCyX9Cy0LXRgF/QutCw0YHRgl/Qu9GW0YHRgl/RgdC90LXQticuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9C90Y/QtNC30LXQu9GOX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTRg1/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0YNf0YHRg9Cx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfQvdGP0LTQt9C10LvRj1/Qv9Cw0L3Rj9C00LfQtdC70LDQul/QsNGe0YLQvtGA0LDQul/RgdC10YDQsNC00LBf0YfQsNGG0LLQtdGAX9C/0Y/RgtC90ZbRhtCwX9GB0YPQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9Cj0YPRnl0gPyg/OtC80ZbQvdGD0LvRg9GOfNC90LDRgdGC0YPQv9C90YPRjik/ID9cXF0gP2RkZGQvLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDQsy4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0KHRkdC90L3RjyDRnl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQl9Cw0Z7RgtGA0LAg0Z5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0KPRh9C+0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vQo10gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQoyDQvNGW0L3Rg9C70YPRjl0gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRi10gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQv9GA0LDQtyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0YLQsNC80YMnLFxuICAgICAgICAgICAgczogJ9C90LXQutCw0LvRjNC60ZYg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICfQtNC30LXQvdGMJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Yt80YDQsNC90ZbRhtGLfNC00L3Rj3zQstC10YfQsNGA0LAvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LDRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfRiyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDQsNC90ZbRhtGLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9Cw0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0ZZ80Yt80LPQsCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChudW1iZXIgJSAxMCA9PT0gMiB8fCBudW1iZXIgJSAxMCA9PT0gMykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciAlIDEwMCAhPT0gMTIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciAlIDEwMCAhPT0gMTNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVtYmVyICsgJy3RlidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVtYmVyICsgJy3Riyc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0LAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBiZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCdWxnYXJpYW4gW2JnXVxuLy8hIGF1dGhvciA6IEtyYXNlbiBCb3Jpc292IDogaHR0cHM6Ly9naXRodWIuY29tL2tyYXpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBiZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JnJywge1xuICAgICAgICBtb250aHM6ICfRj9C90YPQsNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GP0L3Rg1/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10LvRj1/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0Y/QtNCwX9GH0LXRgtCy0YrRgNGC0YrQul/Qv9C10YLRitC6X9GB0YrQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDRj1/Rh9C10YJf0L/QtdGCX9GB0YrQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQlNC90LXRgSDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQo9GC0YDQtSDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwINCyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JzQuNC90LDQu9Cw0YLQsF0gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0YHQu9C10LQgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9C/0YDQtdC00LggJXMnLFxuICAgICAgICAgICAgczogJ9C90Y/QutC+0LvQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgbTogJ9C80LjQvdGD0YLQsCcsXG4gICAgICAgICAgICBtbTogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YfQsNGB0LAnLFxuICAgICAgICAgICAgZDogJ9C00LXQvScsXG4gICAgICAgICAgICBkZDogJyVkINC00LXQvdCwJyxcbiAgICAgICAgICAgIHc6ICfRgdC10LTQvNC40YbQsCcsXG4gICAgICAgICAgICB3dzogJyVkINGB0LXQtNC80LjRhtC4JyxcbiAgICAgICAgICAgIE06ICfQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LzQtdGB0LXRhtCwJyxcbiAgICAgICAgICAgIHk6ICfQs9C+0LTQuNC90LAnLFxuICAgICAgICAgICAgeXk6ICclZCDQs9C+0LTQuNC90LgnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBsYXN0MkRpZ2l0cyA9IG51bWJlciAlIDEwMDtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdCyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdC9JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPiAxMCAmJiBsYXN0MkRpZ2l0cyA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCy0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgNC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSA3IHx8IGxhc3REaWdpdCA9PT0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC80LgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJhbWJhcmEgW2JtXVxuLy8hIGF1dGhvciA6IEVzdGVsbGUgQ29tbWVudCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9lc3RlbGxlY29tbWVudFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGJtID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm0nLCB7XG4gICAgICAgIG1vbnRoczogJ1phbnd1eWVrYWxvX0Zld3VydXlla2Fsb19NYXJpc2lrYWxvX0F3aXJpbGlrYWxvX03Jm2thbG9fWnV3yZtua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU8mbdGFuYnVydWthbG9fyZRrdXTJlGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2Fsbycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdaYW5fRmV3X01hcl9Bd2lfTcmbX1p1d19adWxfVXRpX1PJm3RfyZRrdV9Ob3dfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0thcmlfTnTJm27Jm25fVGFyYXRhX0FyYWJhX0FsYW1pc2FfSnVtYV9TaWJpcmknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdLYXJfTnTJm19UYXJfQXJhX0FsYV9KdW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0thX050X1RhX0FyX0FsX0p1X1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsyZtyyZtdIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQmkgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1NpbmkgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2RvbiBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS3VudSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbdMmbbcmbbmVuIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBryZRuyZQnLFxuICAgICAgICAgICAgcGFzdDogJ2EgYsmbICVzIGLJlCcsXG4gICAgICAgICAgICBzOiAnc2FuZ2EgZGFtYSBkYW1hJyxcbiAgICAgICAgICAgIHNzOiAnc2Vrb25kaSAlZCcsXG4gICAgICAgICAgICBtOiAnbWluaXRpIGtlbGVuJyxcbiAgICAgICAgICAgIG1tOiAnbWluaXRpICVkJyxcbiAgICAgICAgICAgIGg6ICdsyZtyyZsga2VsZW4nLFxuICAgICAgICAgICAgaGg6ICdsyZtyyZsgJWQnLFxuICAgICAgICAgICAgZDogJ3RpbGUga2VsZW4nLFxuICAgICAgICAgICAgZGQ6ICd0aWxlICVkJyxcbiAgICAgICAgICAgIE06ICdrYWxvIGtlbGVuJyxcbiAgICAgICAgICAgIE1NOiAna2FsbyAlZCcsXG4gICAgICAgICAgICB5OiAnc2FuIGtlbGVuJyxcbiAgICAgICAgICAgIHl5OiAnc2FuICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJtO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJlbmdhbGkgKEJhbmdsYWRlc2gpIFtibi1iZF1cbi8vISBhdXRob3IgOiBBc3JhZiBIb3NzYWluIFBhdG9hcnkgOiBodHRwczovL2dpdGh1Yi5jb20vYXNod29vbGZvcmRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KenJyxcbiAgICAgICAgICAgIDI6ICfgp6gnLFxuICAgICAgICAgICAgMzogJ+CnqScsXG4gICAgICAgICAgICA0OiAn4KeqJyxcbiAgICAgICAgICAgIDU6ICfgp6snLFxuICAgICAgICAgICAgNjogJ+CnrCcsXG4gICAgICAgICAgICA3OiAn4KetJyxcbiAgICAgICAgICAgIDg6ICfgp64nLFxuICAgICAgICAgICAgOTogJ+CnrycsXG4gICAgICAgICAgICAwOiAn4KemJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cnpyc6ICcxJyxcbiAgICAgICAgICAgICfgp6gnOiAnMicsXG4gICAgICAgICAgICAn4KepJzogJzMnLFxuICAgICAgICAgICAgJ+Cnqic6ICc0JyxcbiAgICAgICAgICAgICfgp6snOiAnNScsXG4gICAgICAgICAgICAn4KesJzogJzYnLFxuICAgICAgICAgICAgJ+CnrSc6ICc3JyxcbiAgICAgICAgICAgICfgp64nOiAnOCcsXG4gICAgICAgICAgICAn4KevJzogJzknLFxuICAgICAgICAgICAgJ+Cnpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBibkJkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm4tYmQnLCB7XG4gICAgICAgIG1vbnRoczogJ+CmnOCmvuCmqOCngeCnn+CmvuCmsOCmv1/gpqvgp4fgpqzgp43gprDgp4Hgp5/gpr7gprDgpr9f4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4Kaf4KeH4Kau4KeN4Kas4KawX+CmheCmleCnjeCmn+Cni+CmrOCmsF/gpqjgpq3gp4fgpq7gp43gpqzgprBf4Kah4Ka/4Ka44KeH4Kau4KeN4Kas4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgppzgpr7gpqjgp4Ff4Kar4KeH4Kas4KeN4Kaw4KeBX+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn1/gpoXgppXgp43gpp/gp4tf4Kao4Kat4KeHX+CmoeCmv+CmuOCnhycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+CmsOCmrOCmv+CmrOCmvuCmsF/gprjgp4vgpq7gpqzgpr7gprBf4Kau4KaZ4KeN4KaX4Kay4Kas4Ka+4KawX+CmrOCngeCmp+CmrOCmvuCmsF/gpqzgp4Pgprngprjgp43gpqrgpqTgpr/gpqzgpr7gprBf4Ka24KeB4KaV4KeN4Kaw4Kas4Ka+4KawX+CmtuCmqOCmv+CmrOCmvuCmsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprngprjgp43gpqrgpqTgpr9f4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka5X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CmhuCmnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpobgppfgpr7gpq7gp4DgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgppfgpqTgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Cml+CmpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgpqrgprDgp4cnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCmhuCml+CnhycsXG4gICAgICAgICAgICBzOiAn4KaV4Kef4KeH4KaVIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBzczogJyVkIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBtOiAn4KaP4KaVIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBtbTogJyVkIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBoOiAn4KaP4KaVIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBoaDogJyVkIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBkOiAn4KaP4KaVIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBNOiAn4KaP4KaVIOCmruCmvuCmuCcsXG4gICAgICAgICAgICBNTTogJyVkIOCmruCmvuCmuCcsXG4gICAgICAgICAgICB5OiAn4KaP4KaVIOCmrOCmm+CmsCcsXG4gICAgICAgICAgICB5eTogJyVkIOCmrOCmm+CmsCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgp6fgp6jgp6ngp6rgp6vgp6zgp63gp67gp6/gp6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CmsOCmvuCmpHzgpq3gp4vgprB84Ka44KaV4Ka+4KayfOCmpuCngeCmquCngeCmsHzgpqzgpr/gppXgpr7gprJ84Ka44Kao4KeN4Kan4KeN4Kav4Ka+fOCmsOCmvuCmpC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CmsOCmvuCmpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmreCni+CmsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgprjgppXgpr7gprInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kam4KeB4Kaq4KeB4KawJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDMgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmrOCmv+CmleCmvuCmsicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmuOCmqOCnjeCmp+CnjeCmr+CmvicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpq3gp4vgprAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kam4KeB4Kaq4KeB4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqzgpr/gppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmqOCnjeCmp+CnjeCmr+Cmvic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJuQmQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVuZ2FsaSBbYm5dXG4vLyEgYXV0aG9yIDogS2F1c2hpayBHYW5kaGkgOiBodHRwczovL2dpdGh1Yi5jb20va2F1c2hpa2dhbmRoaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgp6cnLFxuICAgICAgICAgICAgMjogJ+CnqCcsXG4gICAgICAgICAgICAzOiAn4KepJyxcbiAgICAgICAgICAgIDQ6ICfgp6onLFxuICAgICAgICAgICAgNTogJ+CnqycsXG4gICAgICAgICAgICA2OiAn4KesJyxcbiAgICAgICAgICAgIDc6ICfgp60nLFxuICAgICAgICAgICAgODogJ+CnricsXG4gICAgICAgICAgICA5OiAn4KevJyxcbiAgICAgICAgICAgIDA6ICfgp6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KenJzogJzEnLFxuICAgICAgICAgICAgJ+CnqCc6ICcyJyxcbiAgICAgICAgICAgICfgp6knOiAnMycsXG4gICAgICAgICAgICAn4KeqJzogJzQnLFxuICAgICAgICAgICAgJ+Cnqyc6ICc1JyxcbiAgICAgICAgICAgICfgp6wnOiAnNicsXG4gICAgICAgICAgICAn4KetJzogJzcnLFxuICAgICAgICAgICAgJ+Cnric6ICc4JyxcbiAgICAgICAgICAgICfgp68nOiAnOScsXG4gICAgICAgICAgICAn4KemJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGJuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm4nLCB7XG4gICAgICAgIG1vbnRoczogJ+CmnOCmvuCmqOCngeCnn+CmvuCmsOCmv1/gpqvgp4fgpqzgp43gprDgp4Hgp5/gpr7gprDgpr9f4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4Kaf4KeH4Kau4KeN4Kas4KawX+CmheCmleCnjeCmn+Cni+CmrOCmsF/gpqjgpq3gp4fgpq7gp43gpqzgprBf4Kah4Ka/4Ka44KeH4Kau4KeN4Kas4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgppzgpr7gpqjgp4Ff4Kar4KeH4Kas4KeN4Kaw4KeBX+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn1/gpoXgppXgp43gpp/gp4tf4Kao4Kat4KeHX+CmoeCmv+CmuOCnhycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+CmsOCmrOCmv+CmrOCmvuCmsF/gprjgp4vgpq7gpqzgpr7gprBf4Kau4KaZ4KeN4KaX4Kay4Kas4Ka+4KawX+CmrOCngeCmp+CmrOCmvuCmsF/gpqzgp4Pgprngprjgp43gpqrgpqTgpr/gpqzgpr7gprBf4Ka24KeB4KaV4KeN4Kaw4Kas4Ka+4KawX+CmtuCmqOCmv+CmrOCmvuCmsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprngprjgp43gpqrgpqTgpr9f4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka5X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CmhuCmnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpobgppfgpr7gpq7gp4DgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgppfgpqTgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Cml+CmpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgpqrgprDgp4cnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCmhuCml+CnhycsXG4gICAgICAgICAgICBzOiAn4KaV4Kef4KeH4KaVIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBzczogJyVkIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBtOiAn4KaP4KaVIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBtbTogJyVkIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBoOiAn4KaP4KaVIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBoaDogJyVkIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBkOiAn4KaP4KaVIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBNOiAn4KaP4KaVIOCmruCmvuCmuCcsXG4gICAgICAgICAgICBNTTogJyVkIOCmruCmvuCmuCcsXG4gICAgICAgICAgICB5OiAn4KaP4KaVIOCmrOCmm+CmsCcsXG4gICAgICAgICAgICB5eTogJyVkIOCmrOCmm+CmsCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgp6fgp6jgp6ngp6rgp6vgp6zgp63gp67gp6/gp6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gprDgpr7gpqR84Ka44KaV4Ka+4KayfOCmpuCngeCmquCngeCmsHzgpqzgpr/gppXgpr7gprJ84Kaw4Ka+4KakLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+CmsOCmvuCmpCcgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+CmpuCngeCmquCngeCmsCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpqzgpr/gppXgpr7gprInXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprjgppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmpuCngeCmquCngeCmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kas4Ka/4KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGliZXRhbiBbYm9dXG4vLyEgYXV0aG9yIDogVGh1cHRlbiBOLiBDaGFrcmlzaGFyIDogaHR0cHM6Ly9naXRodWIuY29tL3ZhanJhZG9nXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+C8oScsXG4gICAgICAgICAgICAyOiAn4LyiJyxcbiAgICAgICAgICAgIDM6ICfgvKMnLFxuICAgICAgICAgICAgNDogJ+C8pCcsXG4gICAgICAgICAgICA1OiAn4LylJyxcbiAgICAgICAgICAgIDY6ICfgvKYnLFxuICAgICAgICAgICAgNzogJ+C8pycsXG4gICAgICAgICAgICA4OiAn4LyoJyxcbiAgICAgICAgICAgIDk6ICfgvKknLFxuICAgICAgICAgICAgMDogJ+C8oCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgvKEnOiAnMScsXG4gICAgICAgICAgICAn4LyiJzogJzInLFxuICAgICAgICAgICAgJ+C8oyc6ICczJyxcbiAgICAgICAgICAgICfgvKQnOiAnNCcsXG4gICAgICAgICAgICAn4LylJzogJzUnLFxuICAgICAgICAgICAgJ+C8pic6ICc2JyxcbiAgICAgICAgICAgICfgvKcnOiAnNycsXG4gICAgICAgICAgICAn4LyoJzogJzgnLFxuICAgICAgICAgICAgJ+C8qSc6ICc5JyxcbiAgICAgICAgICAgICfgvKAnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibycsIHtcbiAgICAgICAgbW9udGhzOiAn4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9n+C+s+C8i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvYLgvabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R4L204L2T4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYngvbLgvabgvIvgvZQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C9n+C+s+C8izFf4L2f4L6z4LyLMl/gvZ/gvrPgvIszX+C9n+C+s+C8izRf4L2f4L6z4LyLNV/gvZ/gvrPgvIs2X+C9n+C+s+C8izdf4L2f4L6z4LyLOF/gvZ/gvrPgvIs5X+C9n+C+s+C8izEwX+C9n+C+s+C8izExX+C9n+C+s+C8izEyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC9eKOC9n+C+s+C8i1xcZHsxLDJ9KS8sXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ+C9guC9n+C9oOC8i+C9ieC9suC8i+C9mOC8i1/gvYLgvZ/gvaDgvIvgvZ/gvrPgvIvgvZbgvItf4L2C4L2f4L2g4LyL4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9guC9n+C9oOC8i+C9o+C+t+C9guC8i+C9lOC8i1/gvYLgvZ/gvaDgvIvgvZXgvbTgvaLgvIvgvZbgvbRf4L2C4L2f4L2g4LyL4L2U4LyL4L2m4L2E4L2m4LyLX+C9guC9n+C9oOC8i+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4L2J4L2y4LyL4L2Y4LyLX+C9n+C+s+C8i+C9luC8i1/gvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2j4L634L2C4LyL4L2U4LyLX+C9leC9tOC9ouC8i+C9luC9tF/gvZTgvIvgvabgvYTgvabgvItf4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C9ieC9sl/gvZ/gvrNf4L2Y4L2y4L2CX+C9o+C+t+C9gl/gvZXgvbTgvaJf4L2m4L2E4L2mX+C9puC+pOC9uuC9kycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgvZHgvbLgvIvgvaLgvbLgvYRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4L2m4L2E4LyL4L2J4L2y4L2TXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgvZbgvZHgvbTgvZPgvIvgvZXgvrLgvYLgvIvgvaLgvpfgvbrgvabgvIvgvZhdLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C9geC8i+C9puC9hF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2Y4L2Q4L2g4LyL4L2YXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOC9o+C8iycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4L2m4L6U4L2T4LyL4L2jJyxcbiAgICAgICAgICAgIHM6ICfgvaPgvZjgvIvgvabgvYQnLFxuICAgICAgICAgICAgc3M6ICclZCDgvabgvpDgvaLgvIvgvYbgvI0nLFxuICAgICAgICAgICAgbTogJ+C9puC+kOC9ouC8i+C9mOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBtbTogJyVkIOC9puC+kOC9ouC8i+C9mCcsXG4gICAgICAgICAgICBoOiAn4L2G4L204LyL4L2a4L284L2R4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4L2G4L204LyL4L2a4L284L2RJyxcbiAgICAgICAgICAgIGQ6ICfgvYngvbLgvZPgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgZGQ6ICclZCDgvYngvbLgvZPgvIsnLFxuICAgICAgICAgICAgTTogJ+C9n+C+s+C8i+C9luC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBNTTogJyVkIOC9n+C+s+C8i+C9licsXG4gICAgICAgICAgICB5OiAn4L2j4L284LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4L2j4L28JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+C8oeC8ouC8o+C8pOC8peC8puC8p+C8qOC8qeC8oF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C9mOC9muC9k+C8i+C9mOC9vHzgvZ7gvbzgvYLgvabgvIvgvYDgvaZ84L2J4L2y4L2T4LyL4L2C4L204L2EfOC9keC9guC9vOC9hOC8i+C9keC9gnzgvZjgvZrgvZPgvIvgvZjgvbwvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4L2Y4L2a4L2T4LyL4L2Y4L28JyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4L2J4L2y4L2T4LyL4L2C4L204L2EJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C9keC9guC9vOC9hOC8i+C9keC9gidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9nuC9vOC9guC9puC8i+C9gOC9pic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2J4L2y4L2T4LyL4L2C4L204L2EJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZHgvYLgvbzgvYTgvIvgvZHgvYInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9mOC9muC9k+C8i+C9mOC9vCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCcmV0b24gW2JyXVxuLy8hIGF1dGhvciA6IEplYW4tQmFwdGlzdGUgTGUgRHVpZ291IDogaHR0cHM6Ly9naXRodWIuY29tL2pibGVkdWlnb3VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbW06ICdtdW51dGVubicsXG4gICAgICAgICAgICBNTTogJ21peicsXG4gICAgICAgICAgICBkZDogJ2RldmV6aCcsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBtdXRhdGlvbihmb3JtYXRba2V5XSwgbnVtYmVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbE11dGF0aW9uRm9yWWVhcnMobnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAobGFzdE51bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgYmxvYXonO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyB2bG9heic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbGFzdE51bWJlcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0TnVtYmVyKG51bWJlciAlIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtdXRhdGlvbih0ZXh0LCBudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIHNvZnRNdXRhdGlvbih0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc29mdE11dGF0aW9uKHRleHQpIHtcbiAgICAgICAgdmFyIG11dGF0aW9uVGFibGUgPSB7XG4gICAgICAgICAgICBtOiAndicsXG4gICAgICAgICAgICBiOiAndicsXG4gICAgICAgICAgICBkOiAneicsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gKyB0ZXh0LnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmdlbi9pLFxuICAgICAgICAgICAgL15jW8q8XFwnXWh3ZS9pLFxuICAgICAgICAgICAgL15tZXUvaSxcbiAgICAgICAgICAgIC9eZWJyL2ksXG4gICAgICAgICAgICAvXm1hZS9pLFxuICAgICAgICAgICAgL14obWV6fGV2ZSkvaSxcbiAgICAgICAgICAgIC9eZ291L2ksXG4gICAgICAgICAgICAvXmVvcy9pLFxuICAgICAgICAgICAgL15nd2UvaSxcbiAgICAgICAgICAgIC9eaGVyL2ksXG4gICAgICAgICAgICAvXmR1L2ksXG4gICAgICAgICAgICAvXmtlci9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihnZW52ZXJ8Y1vKvFxcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dXxnZW58Y1vKvFxcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4ID1cbiAgICAgICAgICAgIC9eKGdlbnZlcnxjW8q8XFwnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1KS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4ID1cbiAgICAgICAgICAgIC9eKGdlbnxjW8q8XFwnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSxcbiAgICAgICAgZnVsbFdlZWtkYXlzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXnN1bC9pLFxuICAgICAgICAgICAgL15sdW4vaSxcbiAgICAgICAgICAgIC9ebWV1cnpoL2ksXG4gICAgICAgICAgICAvXm1lcmNbyrxcXCddaGVyL2ksXG4gICAgICAgICAgICAvXnlhb3UvaSxcbiAgICAgICAgICAgIC9eZ3dlbmVyL2ksXG4gICAgICAgICAgICAvXnNhZG9ybi9pLFxuICAgICAgICBdLFxuICAgICAgICBzaG9ydFdlZWtkYXlzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXlN1bC9pLFxuICAgICAgICAgICAgL15MdW4vaSxcbiAgICAgICAgICAgIC9eTWV1L2ksXG4gICAgICAgICAgICAvXk1lci9pLFxuICAgICAgICAgICAgL15ZYW8vaSxcbiAgICAgICAgICAgIC9eR3dlL2ksXG4gICAgICAgICAgICAvXlNhZC9pLFxuICAgICAgICBdLFxuICAgICAgICBtaW5XZWVrZGF5c1BhcnNlID0gW1xuICAgICAgICAgICAgL15TdS9pLFxuICAgICAgICAgICAgL15MdS9pLFxuICAgICAgICAgICAgL15NZShbXnJdfCQpL2ksXG4gICAgICAgICAgICAvXk1lci9pLFxuICAgICAgICAgICAgL15ZYS9pLFxuICAgICAgICAgICAgL15Hdy9pLFxuICAgICAgICAgICAgL15TYS9pLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYnInLCB7XG4gICAgICAgIG1vbnRoczogJ0dlbnZlcl9Dyrxod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6aGV2ZW5fR291ZXJlX0Vvc3RfR3dlbmdvbG9fSGVyZV9EdV9LZXJ6dScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdHZW5fQ8q8aHdlX01ldV9FYnJfTWFlX0V2ZV9Hb3VfRW9zX0d3ZV9IZXJfRHVfS2VyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bF9MdW5fTWV1cnpoX01lcmPKvGhlcl9ZYW91X0d3ZW5lcl9TYWRvcm4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdWxfTHVuX01ldV9NZXJfWWFvX0d3ZV9TYWQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTHVfTWVfTWVyX1lhX0d3X1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlOiBtaW5XZWVrZGF5c1BhcnNlLFxuICAgICAgICBmdWxsV2Vla2RheXNQYXJzZTogZnVsbFdlZWtkYXlzUGFyc2UsXG4gICAgICAgIHNob3J0V2Vla2RheXNQYXJzZTogc2hvcnRXZWVrZGF5c1BhcnNlLFxuICAgICAgICBtaW5XZWVrZGF5c1BhcnNlOiBtaW5XZWVrZGF5c1BhcnNlLFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiBtb250aHNTdHJpY3RSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogbW9udGhzU2hvcnRTdHJpY3RSZWdleCxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcblxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2Egdml6XSBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbYSB2aXpdIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbYSB2aXpdIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hpeml2IGRhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1dhcmPKvGhvYXpoIGRhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2RhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0RlY8q8aCBkYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtwYXNldCBkYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdhLWJlbm4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMq8em8nLFxuICAgICAgICAgICAgczogJ3VuIG5lYmV1ZCBzZWdvbmRlbm5vw7knLFxuICAgICAgICAgICAgc3M6ICclZCBlaWxlbm4nLFxuICAgICAgICAgICAgbTogJ3VyIHZ1bnV0ZW5uJyxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICBoOiAndW4gZXVyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgZXVyJyxcbiAgICAgICAgICAgIGQ6ICd1biBkZXZlemgnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIE06ICd1ciBtaXonLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIHk6ICd1ciBibG9heicsXG4gICAgICAgICAgICB5eTogc3BlY2lhbE11dGF0aW9uRm9yWWVhcnMsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShhw7F8dmV0KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnYcOxJyA6ICd2ZXQnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvYS5tLnxnLm0uLywgLy8gZ291ZGUgbWVyZW5uIHwgYS1yYW9rIG1lcmVublxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ2cubS4nO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAxMiA/ICdhLm0uJyA6ICdnLm0uJztcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBicjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCb3NuaWFuIFtic11cbi8vISBhdXRob3IgOiBOZWRpbSBDaG9saWNoIDogaHR0cHM6Ly9naXRodWIuY29tL2Zyb250eWFyZFxuLy8hIGF1dGhvciA6IFJhc2lkIFJlZHppYyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXNpZHJlXG4vLyEgYmFzZWQgb24gKGhyKSB0cmFuc2xhdGlvbiBieSBCb2phbiBNYXJrb3ZpxIdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICA/ICdqZWRuYSBtaW51dGEnXG4gICAgICAgICAgICAgICAgICAgIDogaXNGdXR1cmVcbiAgICAgICAgICAgICAgICAgICAgICA/ICdqZWRudSBtaW51dHUnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZGFuIHNhdCc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYnMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicycsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGldIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJpamUgJXMnLFxuICAgICAgICAgICAgczogJ3BhciBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2F0YWxhbiBbY2FdXG4vLyEgYXV0aG9yIDogSnVhbiBHLiBIdXJ0YWRvIDogaHR0cHM6Ly9naXRodWIuY29tL2p1YW5naHVydGFkb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY2EnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6IFwiZGUgZ2VuZXJfZGUgZmVicmVyX2RlIG1hcsOnX2QnYWJyaWxfZGUgbWFpZ19kZSBqdW55X2RlIGp1bGlvbF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0dWJyZV9kZSBub3ZlbWJyZV9kZSBkZXNlbWJyZVwiLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxccykrTU1NTS8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2dlbi5fZmVici5fbWFyw6dfYWJyLl9tYWlnX2p1bnlfanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RnX2RsX2R0X2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thdnVpIGEgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tkZW3DoCBhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2FoaXIgYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNzYXQgYSAnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBcImQnYXF1w60gJXNcIixcbiAgICAgICAgICAgIHBhc3Q6ICdmYSAlcycsXG4gICAgICAgICAgICBzOiAndW5zIHNlZ29ucycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ29ucycsXG4gICAgICAgICAgICBtOiAndW4gbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHMnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpZXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc29zJyxcbiAgICAgICAgICAgIHk6ICd1biBhbnknLFxuICAgICAgICAgICAgeXk6ICclZCBhbnlzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHJ8bnx0fMOofGEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncidcbiAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICA/ICduJ1xuICAgICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnw6gnO1xuICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ3cnIHx8IHBlcmlvZCA9PT0gJ1cnKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEN6ZWNoIFtjc11cbi8vISBhdXRob3IgOiBwZXRyYmVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRyYmVsYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ2xlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAnbGVkbmFfw7pub3JhX2LFmWV6bmFfZHVibmFfa3bEm3RuYV/EjWVydm5hX8SNZXJ2ZW5jZV9zcnBuYV96w6HFmcOtX8WZw61qbmFfbGlzdG9wYWR1X3Byb3NpbmNlJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0REP1tvLl0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NLyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnbGVkX8O6bm9fYsWZZV9kdWJfa3bEm1/EjXZuX8SNdmNfc3JwX3rDocWZX8WZw61qX2xpc19wcm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15sZWQvaSxcbiAgICAgICAgICAgIC9ew7puby9pLFxuICAgICAgICAgICAgL15ixZllL2ksXG4gICAgICAgICAgICAvXmR1Yi9pLFxuICAgICAgICAgICAgL15rdsSbL2ksXG4gICAgICAgICAgICAvXijEjXZufMSNZXJ2ZW4kfMSNZXJ2bmEpL2ksXG4gICAgICAgICAgICAvXijEjXZjfMSNZXJ2ZW5lY3zEjWVydmVuY2UpL2ksXG4gICAgICAgICAgICAvXnNycC9pLFxuICAgICAgICAgICAgL156w6HFmS9pLFxuICAgICAgICAgICAgL17FmcOtai9pLFxuICAgICAgICAgICAgL15saXMvaSxcbiAgICAgICAgICAgIC9ecHJvL2ksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIE5PVEU6ICfEjWVydmVuJyBpcyBzdWJzdHJpbmcgb2YgJ8SNZXJ2ZW5lYyc7IHRoZXJlZm9yZSAnxI1lcnZlbmVjJyBtdXN0IHByZWNlZGUgJ8SNZXJ2ZW4nIGluIHRoZSByZWdleCB0byBiZSBmdWxseSBtYXRjaGVkLlxuICAgICAgICAvLyBPdGhlcndpc2UgcGFyc2VyIG1hdGNoZXMgJzEuIMSNZXJ2ZW5lYycgYXMgJzEuIMSNZXJ2ZW4nICsgJ2VjJy5cbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14obGVkZW58w7pub3J8YsWZZXplbnxkdWJlbnxrdsSbdGVufMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHrDocWZw618xZnDrWplbnxsaXN0b3BhZHxwcm9zaW5lY3xsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaTtcblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiBuID4gMSAmJiBuIDwgNSAmJiB+fihuIC8gMTApICE9PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3DDoXIgc2VrdW5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtJzogLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiBpc0Z1dHVyZSA/ICdtaW51dHUnIDogJ21pbnV0b3UnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaCc6IC8vIGFuIGhvdXIgLyBpbiBhbiBob3VyIC8gYW4gaG91ciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdob2RpbmEnIDogaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2RpbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2QnOiAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGVuJyA6ICdkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG55JyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkbnknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ00nOiAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbcSbc8OtYycgOiAnbcSbc8OtY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbcSbc8OtY2UnIDogJ23Em3PDrWPFrycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcSbc8OtY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3knOiAvLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHllYXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncm9rJyA6ICdyb2tlbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ2xldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbGV0eSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3MnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIC8vIE5PVEU6ICfEjWVydmVuJyBpcyBzdWJzdHJpbmcgb2YgJ8SNZXJ2ZW5lYyc7IHRoZXJlZm9yZSAnxI1lcnZlbmVjJyBtdXN0IHByZWNlZGUgJ8SNZXJ2ZW4nIGluIHRoZSByZWdleCB0byBiZSBmdWxseSBtYXRjaGVkLlxuICAgICAgICAvLyBPdGhlcndpc2UgcGFyc2VyIG1hdGNoZXMgJzEuIMSNZXJ2ZW5lYycgYXMgJzEuIMSNZXJ2ZW4nICsgJ2VjJy5cbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihsZWRlbnxsZWRuYXzDum5vcmF8w7pub3J8YsWZZXplbnxixZllem5hfGR1YmVufGR1Ym5hfGt2xJt0ZW58a3bEm3RuYXzEjWVydmVuZWN8xI1lcnZlbmNlfMSNZXJ2ZW58xI1lcnZuYXxzcnBlbnxzcnBuYXx6w6HFmcOtfMWZw61qZW58xZnDrWpuYXxsaXN0b3BhZHV8bGlzdG9wYWR8cHJvc2luZWN8cHJvc2luY2UpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWTEm2xlX3BvbmTEm2zDrV/DunRlcsO9X3N0xZllZGFfxI10dnJ0ZWtfcMOhdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lX3BvX8O6dF9zdF/EjXRfcMOhX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX8O6dF9zdF/EjXRfcMOhX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgbDogJ0QuIE0uIFlZWVknLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkbmVzIHZdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbesOtdHJhIHZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgbmVkxJtsaSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdmUgxI10dnJ0ZWsgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHDDoXRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmEgdl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMOpXSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc3TFmWVkdSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IHNvYm90dSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3DFmWVkICVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaHV2YXNoIFtjdl1cbi8vISBhdXRob3IgOiBBbmF0b2x5IE1pcm9ub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbWlyb250b2xpXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgY3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjdicsIHtcbiAgICAgICAgbW9udGhzOiAn0LrTkdGA0LvQsNGHX9C90LDRgNOR0YFf0L/Rg9GIX9Cw0LrQsF/QvNCw0Llf0qvTl9GA0YLQvNC1X9GD0YLTkV/Sq9GD0YDQu9CwX9Cw0LLTkdC9X9GO0L/QsF/Rh9Oz0Lpf0YDQsNGI0YLQsNCyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9C605HRgF/QvdCw0YBf0L/Rg9GIX9Cw0LrQsF/QvNCw0Llf0qvTl9GAX9GD0YLTkV/Sq9GD0YBf0LDQstC9X9GO0L/QsF/Rh9Oz0Lpf0YDQsNGIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfQstGL0YDRgdCw0YDQvdC40LrRg9C9X9GC0YPQvdGC0LjQutGD0L1f0YvRgtC70LDRgNC40LrRg9C9X9GO0L3QutGD0L1f0LrTl9Kr0L3QtdGA0L3QuNC60YPQvV/RjdGA0L3QtdC60YPQvV/RiNOR0LzQsNGC0LrRg9C9Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQstGL0YBf0YLRg9C9X9GL0YLQu1/RjtC9X9C605fSq1/RjdGA0L1f0YjTkdC8Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Cy0YBf0YLQvV/Ri9GCX9GO0L1f0LrSq1/RjdGAX9GI0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10nLFxuICAgICAgICAgICAgTExMOiAnWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQn9Cw0Y/QvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cr0YDQsNC9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb05bQvdC10YBdIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0qrQuNGC0LXRgV0gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9CY0YDRgtC905ddIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKG91dHB1dCkge1xuICAgICAgICAgICAgICAgIHZhciBhZmZpeCA9IC/RgdC10YXQtdGCJC9pLmV4ZWMob3V0cHV0KVxuICAgICAgICAgICAgICAgICAgICA/ICfRgNC10L0nXG4gICAgICAgICAgICAgICAgICAgIDogL9Kr0YPQuyQvaS5leGVjKG91dHB1dClcbiAgICAgICAgICAgICAgICAgICAgICA/ICfRgtCw0L0nXG4gICAgICAgICAgICAgICAgICAgICAgOiAn0YDQsNC9JztcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgYWZmaXg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJyVzINC60LDRj9C70LvQsCcsXG4gICAgICAgICAgICBzOiAn0L/Tl9GALdC40Log0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgc3M6ICclZCDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBtOiAn0L/Tl9GAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGg6ICfQv9OX0YAg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LXRhdC10YInLFxuICAgICAgICAgICAgZDogJ9C/05fRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTTogJ9C/05fRgCDRg9C505HRhScsXG4gICAgICAgICAgICBNTTogJyVkINGD0LnTkdGFJyxcbiAgICAgICAgICAgIHk6ICfQv9OX0YAg0qvRg9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0qvRg9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LdC805fRiC8sXG4gICAgICAgIG9yZGluYWw6ICclZC3QvNOX0YgnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogV2Vsc2ggW2N5XVxuLy8hIGF1dGhvciA6IFJvYmVydCBBbGxlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JnYWxsZW5cbi8vISBhdXRob3IgOiBodHRwczovL2dpdGh1Yi5jb20vcnlhbmdyZWF2ZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N5Jywge1xuICAgICAgICBtb250aHM6ICdJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5cicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdJb25fQ2h3ZV9NYXdfRWJyX01haV9NZWhfR29yX0F3c19NZWRfSHlkX1RhY2hfUmhhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnRHlkZCBTdWxfRHlkZCBMbHVuX0R5ZGQgTWF3cnRoX0R5ZGQgTWVyY2hlcl9EeWRkIElhdV9EeWRkIEd3ZW5lcl9EeWRkIFNhZHdybicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MbF9NYV9NZV9JYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICAvLyB0aW1lIGZvcm1hdHMgYXJlIHRoZSBzYW1lIGFzIGVuLWdiXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGVkZGl3IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1lmb3J5IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0Rkb2UgYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGl3ZXRoYWYgYW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbWV3biAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeW4gw7RsJyxcbiAgICAgICAgICAgIHM6ICd5Y2h5ZGlnIGVpbGlhZGF1JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsaWFkJyxcbiAgICAgICAgICAgIG06ICdtdW51ZCcsXG4gICAgICAgICAgICBtbTogJyVkIG11bnVkJyxcbiAgICAgICAgICAgIGg6ICdhd3InLFxuICAgICAgICAgICAgaGg6ICclZCBhd3InLFxuICAgICAgICAgICAgZDogJ2Rpd3Jub2QnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaXdybm9kJyxcbiAgICAgICAgICAgIE06ICdtaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtaXMnLFxuICAgICAgICAgICAgeTogJ2Jsd3lkZHluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgZmx5bmVkZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLFxuICAgICAgICAvLyB0cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBjb21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2hcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsXG4gICAgICAgICAgICAgICAgbG9va3VwID0gW1xuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FmJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lsJyxcbiAgICAgICAgICAgICAgICAgICAgJ3lkZCcsXG4gICAgICAgICAgICAgICAgICAgICd5ZGQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLCAvLyAxYWYgdG8gMTBmZWRcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsIC8vIDExZWcgdG8gMjBmZWRcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGIgPiAyMCkge1xuICAgICAgICAgICAgICAgIGlmIChiID09PSA0MCB8fCBiID09PSA1MCB8fCBiID09PSA2MCB8fCBiID09PSA4MCB8fCBiID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2ZlZCc7IC8vIG5vdCAzMGFpbiwgNzBhaW4gb3IgOTBhaW5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYWluJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIgPiAwKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbG9va3VwW2JdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IERhbmlzaCBbZGFdXG4vLyEgYXV0aG9yIDogVWxyaWsgTmllbHNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmJhc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBkYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RhJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdww6UgZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2ldIGRkZGRbcyBrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHM6ICdmw6Ugc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZXQgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQ6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlJyxcbiAgICAgICAgICAgIE06ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5OiAnZXQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gKEF1c3RyaWEpIFtkZS1hdF1cbi8vISBhdXRob3IgOiBsbHVjaHMgOiBodHRwczovL2dpdGh1Yi5jb20vbGx1Y2hzXG4vLyEgYXV0aG9yOiBNZW5lbGlvbiBFbGVuc8O6bGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogTWFydGluIEdyb2xsZXIgOiBodHRwczovL2dpdGh1Yi5jb20vTWFkTUdcbi8vISBhdXRob3IgOiBNaWtvbGFqIERhZGVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWswMWFqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUF0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtYXQnLCB7XG4gICAgICAgIG1vbnRoczogJ0rDpG5uZXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSsOkbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVBdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gKFN3aXR6ZXJsYW5kKSBbZGUtY2hdXG4vLyEgYXV0aG9yIDogc3NjaHVlbGxlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zc2NodWVsbGVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUNoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtY2gnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gW2RlXVxuLy8hIGF1dGhvciA6IGxsdWNocyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHVjaHNcbi8vISBhdXRob3I6IE1lbmVsaW9uIEVsZW5zw7psZTogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBNaWtvbGFqIERhZGVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWswMWFqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWt1bmRlbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgdzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHd3OiAnJWQgV29jaGVuJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxkaXZpYW4gW2R2XVxuLy8hIGF1dGhvciA6IEphd2lzaCBIYW1lZWQgOiBodHRwczovL2dpdGh1Yi5jb20vamF3aXNoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ96W3qzegt6q3ofept6D3qknLFxuICAgICAgICAgICAgJ96K3qzehN6w3oPeqt6H3qbeg96pJyxcbiAgICAgICAgICAgICfeid6n3oPeqN6X3qonLFxuICAgICAgICAgICAgJ96H3q3eld6w3oPeqd6N3qonLFxuICAgICAgICAgICAgJ96J3q0nLFxuICAgICAgICAgICAgJ96W3qvegt6wJyxcbiAgICAgICAgICAgICfelt6q3o3ept6H3qgnLFxuICAgICAgICAgICAgJ96H3q/ejt6m3pDesN6T3qonLFxuICAgICAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDehN6m3oPeqicsXG4gICAgICAgICAgICAn3ofert6G3rDek96v3oTept6D3qonLFxuICAgICAgICAgICAgJ96C3q7eiN6s3onesN6E3qbeg96qJyxcbiAgICAgICAgICAgICfekd6o3pDerN6J3rDehN6m3oPeqicsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ96H3qfei96o3ofesN6M3qYnLFxuICAgICAgICAgICAgJ96A3q/eid6mJyxcbiAgICAgICAgICAgICfeh96m3oLesN6O3qfeg96mJyxcbiAgICAgICAgICAgICfehN6q3ovepicsXG4gICAgICAgICAgICAn3oTeqt6D3qfekN6w3orept6M3qgnLFxuICAgICAgICAgICAgJ96A3qreht6q3oPeqicsXG4gICAgICAgICAgICAn3oDert6C3qjegN6o3oPeqicsXG4gICAgICAgIF07XG5cbiAgICB2YXIgZHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkdicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiAn3ofep96L3qhf3oDer96J3qZf3ofept6C3rBf3oTeqt6L3qZf3oTeqt6D3qdf3oDeqt6G3qpf3oDert6C3qgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL96J3oZ83oneii8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfeid6KJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6GJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6KJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb3oneqN6H3qbei96qXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW96J3qfei96m3onep10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb3ofeqN6H3rDelN6sXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1veit6n3ofeqN6M3qreiN6oXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn3ozerN6D3q3ejt6m3ofeqCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn3obeqt6D3qjegt6wICVzJyxcbiAgICAgICAgICAgIHM6ICfekN6o3obeqt6C3rDejN6q3obert6F3qzeh96wJyxcbiAgICAgICAgICAgIHNzOiAnZCUg3pDeqN6G3qregt6w3ozeqicsXG4gICAgICAgICAgICBtOiAn3oneqN6C3qjek96s3ofesCcsXG4gICAgICAgICAgICBtbTogJ96J3qjegt6o3pPeqiAlZCcsXG4gICAgICAgICAgICBoOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLFxuICAgICAgICAgICAgaGg6ICfejt6m3pHeqN6H3qjeg96qICVkJyxcbiAgICAgICAgICAgIGQ6ICfei96q3ojept6A3qzeh96wJyxcbiAgICAgICAgICAgIGRkOiAn3oveqt6I3qbekN6wICVkJyxcbiAgICAgICAgICAgIE06ICfeid6m3oDerN6H3rAnLFxuICAgICAgICAgICAgTU06ICfeid6m3pDesCAlZCcsXG4gICAgICAgICAgICB5OiAn3ofept6A3qbeg96s3ofesCcsXG4gICAgICAgICAgICB5eTogJ96H3qbegN6m3oPeqiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA3LCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR3JlZWsgW2VsXVxuLy8hIGF1dGhvciA6IEFnZ2Vsb3MgS2FyYWxpYXMgOiBodHRwczovL2dpdGh1Yi5jb20vbWVoaWVsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodHlwZW9mIEZ1bmN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBpbnB1dCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBlbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VsJywge1xuICAgICAgICBtb250aHNOb21pbmF0aXZlRWw6XG4gICAgICAgICAgICAnzpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/Pgicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNHZW5pdGl2ZUVsOlxuICAgICAgICAgICAgJ86ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgL0QvLnRlc3QoZm9ybWF0LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgZGF5IG51bWJlciBiZWZvcmUgJ01NTU0nXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc0dlbml0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnzpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ86az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ86az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ868zrwnIDogJ86czpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfPgM68JyA6ICfOoM6cJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bzqDOnF1cXC4/zpw/XFwuPy9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhckVsOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW86jzq7OvM61z4HOsSB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vOkc+Nz4HOuc6/IHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3t9XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW86nzrjOtc+CIHt9XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM63zr0gz4DPgc6/zrfOs86/z43OvM61zr3Ot10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IGZ1bmN0aW9uIChrZXksIG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyRWxba2V5XSxcbiAgICAgICAgICAgICAgICBob3VycyA9IG1vbSAmJiBtb20uaG91cnMoKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuYXBwbHkobW9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgne30nLCBob3VycyAlIDEyID09PSAxID8gJ8+Dz4TOtycgOiAnz4PPhM65z4InKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfPg861ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDPgM+BzrnOvScsXG4gICAgICAgICAgICBzOiAnzrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIHNzOiAnJWQgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIG06ICfOrc69zrEgzrvOtc+Az4TPjCcsXG4gICAgICAgICAgICBtbTogJyVkIM67zrXPgM+EzqwnLFxuICAgICAgICAgICAgaDogJ868zq/OsSDPjs+BzrEnLFxuICAgICAgICAgICAgaGg6ICclZCDPjs+BzrXPgicsXG4gICAgICAgICAgICBkOiAnzrzOr86xIM68zq3Pgc6xJyxcbiAgICAgICAgICAgIGRkOiAnJWQgzrzOrc+BzrXPgicsXG4gICAgICAgICAgICBNOiAnzq3Ovc6xz4IgzrzOrs69zrHPgicsXG4gICAgICAgICAgICBNTTogJyVkIM68zq7Ovc61z4InLFxuICAgICAgICAgICAgeTogJ86tzr3Osc+CIM+Hz4HPjM69zr/PgicsXG4gICAgICAgICAgICB5eTogJyVkIM+Hz4HPjM69zrnOsScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfc63LyxcbiAgICAgICAgb3JkaW5hbDogJyVkzrcnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0c3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoQXVzdHJhbGlhKSBbZW4tYXVdXG4vLyEgYXV0aG9yIDogSmFyZWQgTW9yc2UgOiBodHRwczovL2dpdGh1Yi5jb20vamFyY29hbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuQXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1hdScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5BdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChDYW5hZGEpIFtlbi1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSBbZW4tZ2JdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5HYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWdiJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuR2I7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXJlbGFuZCkgW2VuLWllXVxuLy8hIGF1dGhvciA6IENocmlzIENhcnRsaWRnZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2NhcnRsaWRnZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuSWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pZScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXNyYWVsKSBbZW4taWxdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5JbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWlsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbklsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKEluZGlhKSBbZW4taW5dXG4vLyEgYXV0aG9yIDogSmF0aW4gQWdyYXdhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXRpbmFnMjJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkluID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taW4nLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoTmV3IFplYWxhbmQpIFtlbi1uel1cbi8vISBhdXRob3IgOiBMdWtlIE1jR3JlZ29yIDogaHR0cHM6Ly9naXRodWIuY29tL2x1a2VtY2dyZWdvclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuTnogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1ueicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5OejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChTaW5nYXBvcmUpIFtlbi1zZ11cbi8vISBhdXRob3IgOiBNYXR0aGV3IENhc3RyaWxsb24tTWFkcmlnYWwgOiBodHRwczovL2dpdGh1Yi5jb20vdGVjaGRpbWVuc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuU2cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1zZycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlblNnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVzcGVyYW50byBbZW9dXG4vLyEgYXV0aG9yIDogQ29saW4gRGVhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmRlYW5cbi8vISBhdXRob3IgOiBNaWEgTm9yZGVudG9mdCBJbXBlcmF0b3JpIDogaHR0cHM6Ly9naXRodWIuY29tL21pZXN0YXNtaWFcbi8vISBjb21tZW50IDogbWllc3Rhc21pYSBjb3JyZWN0ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IGNvbGluZGVhblxuLy8hIGNvbW1lbnQgOiBWaXZha3ZvIGNvcnJlY3RlZCB0aGUgdHJhbnNsYXRpb24gYnkgY29saW5kZWFuIGFuZCBtaWVzdGFzbWlhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbycsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyb19mZWJydWFyb19tYXJ0b19hcHJpbG9fbWFqb19qdW5pb19qdWxpb19hxa1ndXN0b19zZXB0ZW1icm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcnRfYXByX21hal9qdW5fanVsX2HFrWdfc2VwdF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbsSJb19sdW5kb19tYXJkb19tZXJrcmVkb1/EtWHFrWRvX3ZlbmRyZWRvX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbV9sdW5fbWFyZF9tZXJrX8S1YcWtX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfxLVhX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1tsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZFtuXSwgW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBbbGFdIERbLWFuIGRlXSBNTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvW2FwXVxcLnRcXC5tL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpID09PSAncCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncC50Lm0uJyA6ICdQLlQuTS4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhLnQubS4nIDogJ0EuVC5NLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvZGlhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTW9yZ2HFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkW24gamVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllcmHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbcGFzaW50YW5dIGRkZGRbbiBqZV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwb3N0ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdhbnRhxa0gJXMnLFxuICAgICAgICAgICAgczogJ2tlbGthaiBzZWt1bmRvaicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZG9qJyxcbiAgICAgICAgICAgIG06ICd1bnUgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvaicsXG4gICAgICAgICAgICBoOiAndW51IGhvcm8nLFxuICAgICAgICAgICAgaGg6ICclZCBob3JvaicsXG4gICAgICAgICAgICBkOiAndW51IHRhZ28nLCAvL25lICdkaXVybm8nLCDEiWFyIGVzdGFzIHV6aXRhIHBvciBwcm9rc2ltdW1vXG4gICAgICAgICAgICBkZDogJyVkIHRhZ29qJyxcbiAgICAgICAgICAgIE06ICd1bnUgbW9uYXRvJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9uYXRvaicsXG4gICAgICAgICAgICB5OiAndW51IGphcm8nLFxuICAgICAgICAgICAgeXk6ICclZCBqYXJvaicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfWEvLFxuICAgICAgICBvcmRpbmFsOiAnJWRhJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKERvbWluaWNhbiBSZXB1YmxpYykgW2VzLWRvXVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNEbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLWRvJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc0RvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKE1leGljbykgW2VzLW14XVxuLy8hIGF1dGhvciA6IEpDIEZyYW5jbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qY2ZyYW5jb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNNeCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLW14Jywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgczogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWREYXRlOiAnRmVjaGEgaW52w6FsaWRhJyxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc014O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKFVuaXRlZCBTdGF0ZXMpIFtlcy11c11cbi8vISBhdXRob3IgOiBidXN0dGEgOiBodHRwczovL2dpdGh1Yi5jb20vYnVzdHRhXG4vLyEgYXV0aG9yIDogY2hyaXNyb2R6IDogaHR0cHM6Ly9naXRodWIuY29tL2Nocmlzcm9kelxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNVcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLXVzJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc1VzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggW2VzXVxuLy8hIGF1dGhvciA6IEp1bGlvIE5hcHVyw60gOiBodHRwczovL2dpdGh1Yi5jb20vanVsaW9uY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcycsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICB3OiAndW5hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkRGF0ZTogJ0ZlY2hhIGludsOhbGlkYScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRXN0b25pYW4gW2V0XVxuLy8hIGF1dGhvciA6IEhlbnJ5IEtlaGxtYW5uIDogaHR0cHM6Ly9naXRodWIuY29tL21hZGhlbnJ5XG4vLyEgaW1wcm92ZW1lbnRzIDogSWxsaW1hciBUYW1iZWsgOiBodHRwczovL2dpdGh1Yi5jb20vcmFndWxrYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsnbcO1bmUgc2VrdW5kaScsICdtw7VuaSBzZWt1bmQnLCAncGFhciBzZWt1bmRpdCddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnc2VrdW5kaScsIG51bWJlciArICdzZWt1bmRpdCddLFxuICAgICAgICAgICAgbTogWyfDvGhlIG1pbnV0aScsICfDvGtzIG1pbnV0J10sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcgbWludXRpJywgbnVtYmVyICsgJyBtaW51dGl0J10sXG4gICAgICAgICAgICBoOiBbJ8O8aGUgdHVubmknLCAndHVuZCBhZWdhJywgJ8O8a3MgdHVuZCddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIHR1bm5pJywgbnVtYmVyICsgJyB0dW5kaSddLFxuICAgICAgICAgICAgZDogWyfDvGhlIHDDpGV2YScsICfDvGtzIHDDpGV2J10sXG4gICAgICAgICAgICBNOiBbJ2t1dSBhamEnLCAna3V1IGFlZ2EnLCAnw7xrcyBrdXUnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBrdXUnLCBudW1iZXIgKyAnIGt1dWQnXSxcbiAgICAgICAgICAgIHk6IFsnw7xoZSBhYXN0YScsICdhYXN0YScsICfDvGtzIGFhc3RhJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgYWFzdGEnLCBudW1iZXIgKyAnIGFhc3RhdCddLFxuICAgICAgICB9O1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFtrZXldWzJdID8gZm9ybWF0W2tleV1bMl0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2V0Jywge1xuICAgICAgICBtb250aHM6ICdqYWFudWFyX3ZlZWJydWFyX23DpHJ0c19hcHJpbGxfbWFpX2p1dW5pX2p1dWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b29iZXJfbm92ZW1iZXJfZGV0c2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYWFuX3ZlZWJyX23DpHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAncMO8aGFww6Rldl9lc21hc3DDpGV2X3RlaXNpcMOkZXZfa29sbWFww6Rldl9uZWxqYXDDpGV2X3JlZWRlX2xhdXDDpGV2Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1BfRV9UX0tfTl9SX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUw6RuYSxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSG9tbWUsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tKw6RyZ21pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tFaWxlLF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRWVsbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHDDpHJhc3QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHRhZ2FzaScsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6ICclZCBww6RldmEnLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJhc3F1ZSBbZXVdXG4vLyEgYXV0aG9yIDogRW5la28gSWxsYXJyYW1lbmRpIDogaHR0cHM6Ly9naXRodWIuY29tL2VpbGxhcnJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldScsIHtcbiAgICAgICAgbW9udGhzOiAndXJ0YXJyaWxhX290c2FpbGFfbWFydHhvYV9hcGlyaWxhX21haWF0emFfZWthaW5hX3V6dGFpbGFfYWJ1enR1YV9pcmFpbGFfdXJyaWFfYXphcm9hX2FiZW5kdWEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3VydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5fYWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ2lnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2lnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdpZ19hbF9hcl9hel9vZ19vbF9scicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS1NLUQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZW2tvXSBNTU0gRFthXScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZW2tvXSBNTU0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2dhdXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYmloYXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2F0em9dIExUW2V0YW5dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2F1cnJla29dIGRkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBiYXJydScsXG4gICAgICAgICAgICBwYXN0OiAnZHVlbGEgJXMnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZG8gYmF0enVrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnbWludXR1IGJhdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dScsXG4gICAgICAgICAgICBoOiAnb3JkdSBiYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmR1JyxcbiAgICAgICAgICAgIGQ6ICdlZ3VuIGJhdCcsXG4gICAgICAgICAgICBkZDogJyVkIGVndW4nLFxuICAgICAgICAgICAgTTogJ2hpbGFiZXRlIGJhdCcsXG4gICAgICAgICAgICBNTTogJyVkIGhpbGFiZXRlJyxcbiAgICAgICAgICAgIHk6ICd1cnRlIGJhdCcsXG4gICAgICAgICAgICB5eTogJyVkIHVydGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBlcnNpYW4gW2ZhXVxuLy8hIGF1dGhvciA6IEVicmFoaW0gQnlhZ293aSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9lYnJhbWluaW9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn27EnLFxuICAgICAgICAgICAgMjogJ9uyJyxcbiAgICAgICAgICAgIDM6ICfbsycsXG4gICAgICAgICAgICA0OiAn27QnLFxuICAgICAgICAgICAgNTogJ9u1JyxcbiAgICAgICAgICAgIDY6ICfbticsXG4gICAgICAgICAgICA3OiAn27cnLFxuICAgICAgICAgICAgODogJ9u4JyxcbiAgICAgICAgICAgIDk6ICfbuScsXG4gICAgICAgICAgICAwOiAn27AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn27EnOiAnMScsXG4gICAgICAgICAgICAn27InOiAnMicsXG4gICAgICAgICAgICAn27MnOiAnMycsXG4gICAgICAgICAgICAn27QnOiAnNCcsXG4gICAgICAgICAgICAn27UnOiAnNScsXG4gICAgICAgICAgICAn27YnOiAnNicsXG4gICAgICAgICAgICAn27cnOiAnNycsXG4gICAgICAgICAgICAn27gnOiAnOCcsXG4gICAgICAgICAgICAn27knOiAnOScsXG4gICAgICAgICAgICAn27AnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgZmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmYScsIHtcbiAgICAgICAgbW9udGhzOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6XG4gICAgICAgICAgICAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9uMX9ivX9izX9qGX9m+X9isX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mC2KjZhCDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjYudivINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhdix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vZgdix2K/YpyDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYr9uM2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9iv2LEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINm+24zYtCcsXG4gICAgICAgICAgICBzOiAn2obZhtivINir2KfZhtuM2YcnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbbjNmHJyxcbiAgICAgICAgICAgIG06ICfbjNqpINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIGg6ICfbjNqpINiz2KfYudiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KonLFxuICAgICAgICAgICAgZDogJ9uM2qkg2LHZiNiyJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2LHZiNiyJyxcbiAgICAgICAgICAgIE06ICfbjNqpINmF2KfZhycsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfZhycsXG4gICAgICAgICAgICB5OiAn24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b27At27ldL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ92YUvLFxuICAgICAgICBvcmRpbmFsOiAnJWTZhScsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlubmlzaCBbZmldXG4vLyEgYXV0aG9yIDogVGFybW8gQWlkYW50YXVzdGEgOiBodHRwczovL2dpdGh1Yi5jb20vYmxlYWRvZlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG51bWJlcnNQYXN0ID1cbiAgICAgICAgICAgICdub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICcgJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbnVtYmVyc0Z1dHVyZSA9IFtcbiAgICAgICAgICAgICdub2xsYScsXG4gICAgICAgICAgICAneWhkZW4nLFxuICAgICAgICAgICAgJ2thaGRlbicsXG4gICAgICAgICAgICAna29sbWVuJyxcbiAgICAgICAgICAgICduZWxqw6RuJyxcbiAgICAgICAgICAgICd2aWlkZW4nLFxuICAgICAgICAgICAgJ2t1dWRlbicsXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs3XSxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzhdLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbOV0sXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbXV1dGFtYW4gc2VrdW5uaW4nIDogJ211dXRhbWEgc2VrdW50aSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAnc2VrdW5uaW4nIDogJ3Nla3VudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6TDpCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgPCAxMFxuICAgICAgICAgICAgPyBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgID8gbnVtYmVyc0Z1dHVyZVtudW1iZXJdXG4gICAgICAgICAgICAgICAgOiBudW1iZXJzUGFzdFtudW1iZXJdXG4gICAgICAgICAgICA6IG51bWJlcjtcbiAgICB9XG5cbiAgICB2YXIgZmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmaScsIHtcbiAgICAgICAgbW9udGhzOiAndGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAndGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdW5udW50YWlfbWFhbmFudGFpX3RpaXN0YWlfa2Vza2l2aWlra29fdG9yc3RhaV9wZXJqYW50YWlfbGF1YW50YWknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU1bdGFdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGw6ICdELk0uWVlZWScsXG4gICAgICAgICAgICBsbDogJ0RvIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbDogJ0RvIE1NTSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t0w6Ruw6TDpG5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaHVvbWVubmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2VpbGVuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBww6TDpHN0w6QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpdHRlbicsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlsaXBpbm8gW2ZpbF1cbi8vISBhdXRob3IgOiBEYW4gSGFnbWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2hhZ21hbmRhblxuLy8hIGF1dGhvciA6IE1hdHRoZXcgQ28gOiBodHRwczovL2dpdGh1Yi5jb20vbWF0dGhld2RlZWNvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZmlsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmlsJywge1xuICAgICAgICBtb250aHM6ICdFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0xpX0x1X01hX01pX0h1X0JpX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdzYSBsb29iIG5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhbmcgbmFrYWxpcGFzJyxcbiAgICAgICAgICAgIHM6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnaXNhbmcgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGg6ICdpc2FuZyBvcmFzJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZDogJyVkIGFyYXcnLFxuICAgICAgICAgICAgTTogJ2lzYW5nIGJ1d2FuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeTogJ2lzYW5nIHRhb24nLFxuICAgICAgICAgICAgeXk6ICclZCB0YW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGYXJvZXNlIFtmb11cbi8vISBhdXRob3IgOiBSYWduYXIgSm9oYW5uZXNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWduYXIxMjNcbi8vISBhdXRob3IgOiBLcmlzdGlhbiBTYWthcmlzc29uIDogaHR0cHM6Ly9naXRodWIuY29tL3Nha2FyaXNzb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZvJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcsOtbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3VubnVkYWd1cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9taWt1ZGFndXJfaMOzc2RhZ3VyX2Zyw61nZ2phZGFndXJfbGV5Z2FyZGFndXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1bl9tw6FuX3TDvXNfbWlrX2jDs3NfZnLDrV9sZXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc3VfbcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8ONIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbw40gbW9yZ2luIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw40gZ2rDoXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAndW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHPDrcOwYW5pJyxcbiAgICAgICAgICAgIHM6ICdmw6Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kaXInLFxuICAgICAgICAgICAgbTogJ2VpbiBtaW51dHR1cicsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dGlyJyxcbiAgICAgICAgICAgIGg6ICdlaW4gdMOtbWknLFxuICAgICAgICAgICAgaGg6ICclZCB0w61tYXInLFxuICAgICAgICAgICAgZDogJ2VpbiBkYWd1cicsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOhbmHDsHVyJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOhbmHDsGlyJyxcbiAgICAgICAgICAgIHk6ICdlaXR0IMOhcicsXG4gICAgICAgICAgICB5eTogJyVkIMOhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIChDYW5hZGEpIFtmci1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmckNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHM6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG06ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmVuY2ggKFN3aXR6ZXJsYW5kKSBbZnItY2hdXG4vLyEgYXV0aG9yIDogR2FzcGFyZCBCdWNoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vZ2FzcGFyZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZyQ2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jaCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgczogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbTogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGg6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIFtmcl1cbi8vISBhdXRob3IgOiBKb2huIEZpc2NoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vamZyb2ZmaWNlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oamFudmllcnxmw6l2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW/Du3R8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZMOpY2VtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4ID1cbiAgICAgICAgICAgIC8oamFudlxcLj98ZsOpdnJcXC4/fG1hcnN8YXZyXFwuP3xtYWl8anVpbnxqdWlsXFwuP3xhb8O7dHxzZXB0XFwuP3xvY3RcXC4/fG5vdlxcLj98ZMOpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC8oamFudlxcLj98ZsOpdnJcXC4/fG1hcnN8YXZyXFwuP3xtYWl8anVpbnxqdWlsXFwuP3xhb8O7dHxzZXB0XFwuP3xvY3RcXC4/fG5vdlxcLj98ZMOpY1xcLj98amFudmllcnxmw6l2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW/Du3R8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZMOpY2VtYnJlKS9pLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eamFudi9pLFxuICAgICAgICAgICAgL15mw6l2ci9pLFxuICAgICAgICAgICAgL15tYXJzL2ksXG4gICAgICAgICAgICAvXmF2ci9pLFxuICAgICAgICAgICAgL15tYWkvaSxcbiAgICAgICAgICAgIC9eanVpbi9pLFxuICAgICAgICAgICAgL15qdWlsL2ksXG4gICAgICAgICAgICAvXmFvw7t0L2ksXG4gICAgICAgICAgICAvXnNlcHQvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kw6ljL2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgZnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmcicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogbW9udGhzU3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IG1vbnRoc1Nob3J0U3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkOiAndW4gam91cicsXG4gICAgICAgICAgICBkZDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIHc6ICd1bmUgc2VtYWluZScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFpbmVzJyxcbiAgICAgICAgICAgIE06ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXR1cm4gJ2UnIHdoZW4gZGF5IG9mIG1vbnRoID4gMS4gTW92ZSB0aGlzIGNhc2UgaW5zaWRlXG4gICAgICAgICAgICAgICAgLy8gYmxvY2sgZm9yIG1hc2N1bGluZSB3b3JkcyBiZWxvdy5cbiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzMzNzVcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJycpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJpc2lhbiBbZnldXG4vLyEgYXV0aG9yIDogUm9iaW4gdmFuIGRlciBWbGlldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JpbjB2YW4wZGVyMHZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBmeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2Z5Jywge1xuICAgICAgICBtb250aHM6ICdqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3NpLl9tby5fdGkuX3dvLl90by5fZnIuX3NvLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTaV9Nb19UaV9Xb19Ub19Gcl9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGpvZWQgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9hcm4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanVzdGVyIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vDtGZyw7tuZV0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb2VyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBseW4nLFxuICAgICAgICAgICAgczogJ2luIHBlYXIgc2Vrb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRlbicsXG4gICAgICAgICAgICBtOiAnaWVuIG1pbsO6dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogJ2llbiBvZXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb2VyZW4nLFxuICAgICAgICAgICAgZDogJ2llbiBkZWknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNOiAnaWVuIG1vYW5uZScsXG4gICAgICAgICAgICBNTTogJyVkIG1vYW5uZW4nLFxuICAgICAgICAgICAgeTogJ2llbiBqaWVyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamllcnJlbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJcmlzaCBvciBJcmlzaCBHYWVsaWMgW2dhXVxuLy8hIGF1dGhvciA6IEFuZHLDqSBTaWx2YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc2twdFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICdFYW7DoWlyJyxcbiAgICAgICAgICAgICdGZWFiaHJhJyxcbiAgICAgICAgICAgICdNw6FydGEnLFxuICAgICAgICAgICAgJ0FpYnJlw6FuJyxcbiAgICAgICAgICAgICdCZWFsdGFpbmUnLFxuICAgICAgICAgICAgJ01laXRoZWFtaCcsXG4gICAgICAgICAgICAnScO6aWwnLFxuICAgICAgICAgICAgJ0zDum5hc2EnLFxuICAgICAgICAgICAgJ01lw6FuIEbDs21oYWlyJyxcbiAgICAgICAgICAgICdEZWlyZWFkaCBGw7NtaGFpcicsXG4gICAgICAgICAgICAnU2FtaGFpbicsXG4gICAgICAgICAgICAnTm9sbGFpZycsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gW1xuICAgICAgICAgICAgJ0VhbicsXG4gICAgICAgICAgICAnRmVhYmgnLFxuICAgICAgICAgICAgJ03DoXJ0JyxcbiAgICAgICAgICAgICdBaWInLFxuICAgICAgICAgICAgJ0JlYWwnLFxuICAgICAgICAgICAgJ01laXRoJyxcbiAgICAgICAgICAgICdJw7ppbCcsXG4gICAgICAgICAgICAnTMO6bicsXG4gICAgICAgICAgICAnTS5GLicsXG4gICAgICAgICAgICAnRC5GLicsXG4gICAgICAgICAgICAnU2FtaCcsXG4gICAgICAgICAgICAnTm9sbCcsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ0TDqSBEb21obmFpZ2gnLFxuICAgICAgICAgICAgJ0TDqSBMdWFpbicsXG4gICAgICAgICAgICAnRMOpIE3DoWlydCcsXG4gICAgICAgICAgICAnRMOpIEPDqWFkYW9pbicsXG4gICAgICAgICAgICAnRMOpYXJkYW9pbicsXG4gICAgICAgICAgICAnRMOpIGhBb2luZScsXG4gICAgICAgICAgICAnRMOpIFNhdGhhaXJuJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA9IFsnRG9taCcsICdMdWFuJywgJ03DoWlydCcsICdDw6lhZCcsICdEw6lhcicsICdBb2luZScsICdTYXRoJ10sXG4gICAgICAgIHdlZWtkYXlzTWluID0gWydEbycsICdMdScsICdNw6EnLCAnQ8OpJywgJ0TDqScsICdBJywgJ1NhJ107XG5cbiAgICB2YXIgZ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnYScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiB3ZWVrZGF5c1Nob3J0LFxuICAgICAgICB3ZWVrZGF5c01pbjogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSW5uaXUgYWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW3DoXJhY2ggYWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSW5uw6kgYWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VvIGNhaXRlXSBbYWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7Mgc2hpbicsXG4gICAgICAgICAgICBzOiAnY8O6cGxhIHNvaWNpbmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzb2ljaW5kJyxcbiAgICAgICAgICAgIG06ICduw7NpbcOpYWQnLFxuICAgICAgICAgICAgbW06ICclZCBuw7NpbcOpYWQnLFxuICAgICAgICAgICAgaDogJ3VhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdWFpciBhbiBjaGxvaWcnLFxuICAgICAgICAgICAgZDogJ2zDoScsXG4gICAgICAgICAgICBkZDogJyVkIGzDoScsXG4gICAgICAgICAgICBNOiAnbcOtJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOtb25uYScsXG4gICAgICAgICAgICB5OiAnYmxpYWluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYmxpYWluJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2NvdHRpc2ggR2FlbGljIFtnZF1cbi8vISBhdXRob3IgOiBKb24gQXNoZG93biA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2hkb3duXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ0FtIEZhb2lsbGVhY2gnLFxuICAgICAgICAgICAgJ0FuIEdlYXJyYW4nLFxuICAgICAgICAgICAgJ0FtIE3DoHJ0JyxcbiAgICAgICAgICAgICdBbiBHaWJsZWFuJyxcbiAgICAgICAgICAgICdBbiBDw6hpdGVhbicsXG4gICAgICAgICAgICAnQW4gdC3DkmdtaGlvcycsXG4gICAgICAgICAgICAnQW4gdC1JdWNoYXInLFxuICAgICAgICAgICAgJ0FuIEzDuW5hc3RhbCcsXG4gICAgICAgICAgICAnQW4gdC1TdWx0YWluJyxcbiAgICAgICAgICAgICdBbiBEw6BtaGFpcicsXG4gICAgICAgICAgICAnQW4gdC1TYW1oYWluJyxcbiAgICAgICAgICAgICdBbiBEw7liaGxhY2hkJyxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSBbXG4gICAgICAgICAgICAnRmFvaScsXG4gICAgICAgICAgICAnR2VhcicsXG4gICAgICAgICAgICAnTcOgcnQnLFxuICAgICAgICAgICAgJ0dpYmwnLFxuICAgICAgICAgICAgJ0PDqGl0JyxcbiAgICAgICAgICAgICfDkmdtaCcsXG4gICAgICAgICAgICAnSXVjaCcsXG4gICAgICAgICAgICAnTMO5bicsXG4gICAgICAgICAgICAnU3VsdCcsXG4gICAgICAgICAgICAnRMOgbWgnLFxuICAgICAgICAgICAgJ1NhbWgnLFxuICAgICAgICAgICAgJ0TDuWJoJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXMgPSBbXG4gICAgICAgICAgICAnRGlkw7JtaG5haWNoJyxcbiAgICAgICAgICAgICdEaWx1YWluJyxcbiAgICAgICAgICAgICdEaW3DoGlydCcsXG4gICAgICAgICAgICAnRGljaWFkYWluJyxcbiAgICAgICAgICAgICdEaWFyZGFvaW4nLFxuICAgICAgICAgICAgJ0RpaGFvaW5lJyxcbiAgICAgICAgICAgICdEaXNhdGhhaXJuZScsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgPSBbJ0RpZCcsICdEaWwnLCAnRGltJywgJ0RpYycsICdEaWEnLCAnRGloJywgJ0RpcyddLFxuICAgICAgICB3ZWVrZGF5c01pbiA9IFsnRMOyJywgJ0x1JywgJ03DoCcsICdDaScsICdBcicsICdIYScsICdTYSddO1xuXG4gICAgdmFyIGdkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2QnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW46IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0FuLWRpdWdoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBLW3DoGlyZWFjaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0FuLWTDqCBhaWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdhbm4gYW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2JobyBjaGlvbm4gJXMnLFxuICAgICAgICAgICAgczogJ2JlYWdhbiBkaW9nYW4nLFxuICAgICAgICAgICAgc3M6ICclZCBkaW9nYW4nLFxuICAgICAgICAgICAgbTogJ21pb25haWQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW9uYWlkZWFuJyxcbiAgICAgICAgICAgIGg6ICd1YWlyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdWFpcmVhbicsXG4gICAgICAgICAgICBkOiAnbGF0aGEnLFxuICAgICAgICAgICAgZGQ6ICclZCBsYXRoYScsXG4gICAgICAgICAgICBNOiAnbcOsb3MnLFxuICAgICAgICAgICAgTU06ICclZCBtw6xvc2FuJyxcbiAgICAgICAgICAgIHk6ICdibGlhZGhuYScsXG4gICAgICAgICAgICB5eTogJyVkIGJsaWFkaG5hJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2FsaWNpYW4gW2dsXVxuLy8hIGF1dGhvciA6IEp1YW4gRy4gSHVydGFkbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qdWFuZ2h1cnRhZG9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBnbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dsJywge1xuICAgICAgICBtb250aHM6ICd4YW5laXJvX2ZlYnJlaXJvX21hcnpvX2FicmlsX21haW9feHXDsW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3hhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dcOxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuc19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbcOpci5feG92Ll92ZW4uX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX23DqV94b192ZV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG94ZSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7HDoSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgWycgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhcycgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvbnRlICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW29dIGRkZGQgW3Bhc2FkbyAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ2EnKSArICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyLmluZGV4T2YoJ3VuJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICduJyArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbiAnICsgc3RyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWkgJXMnLFxuICAgICAgICAgICAgczogJ3VucyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmhhIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYW5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5vcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2w7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS29ua2FuaSBEZXZhbmFnYXJpIHNjcmlwdCBbZ29tLWRldmFdXG4vLyEgYXV0aG9yIDogVGhlIERpc2NvdmVyZXIgOiBodHRwczovL2dpdGh1Yi5jb20vV2lraURpc2NvdmVyZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ+CkpeCli+CkoeCkr+CkviDgpLjgpYXgpJXgpILgpKHgpL7gpILgpKjgpYAnLCAn4KSl4KWL4KSh4KWHIOCkuOClheCkleCkguCkoSddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnIOCkuOClheCkleCkguCkoeCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS44KWF4KSV4KSC4KShJ10sXG4gICAgICAgICAgICBtOiBbJ+Ckj+CkleCkviDgpK7gpL/gpKPgpJ/gpL7gpKgnLCAn4KSP4KSVIOCkruCkv+CkqOClguCknyddLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIOCkruCkv+Cko+Ckn+CkvuCkguCkqOClgCcsIG51bWJlciArICcg4KSu4KS/4KSj4KSf4KS+4KSCJ10sXG4gICAgICAgICAgICBoOiBbJ+Ckj+CkleCkviDgpLXgpLDgpL7gpKgnLCAn4KSP4KSVIOCkteCksCddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIOCkteCksOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS14KSw4KS+4KSCJ10sXG4gICAgICAgICAgICBkOiBbJ+Ckj+CkleCkviDgpKbgpL/gpLjgpL7gpKgnLCAn4KSP4KSVIOCkpuClgOCkuCddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIOCkpuCkv+CkuOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KSm4KWA4KS4J10sXG4gICAgICAgICAgICBNOiBbJ+Ckj+CkleCkviDgpK7gpY3gpLngpK/gpKjgpY3gpK/gpL7gpKgnLCAn4KSP4KSVIOCkruCljeCkueCkr+CkqOCliyddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIOCkruCljeCkueCkr+CkqOCljeCkr+CkvuCkqOClgCcsIG51bWJlciArICcg4KSu4KWN4KS54KSv4KSo4KWHJ10sXG4gICAgICAgICAgICB5OiBbJ+Ckj+CkleCkviDgpLXgpLDgpY3gpLjgpL7gpKgnLCAn4KSP4KSVIOCkteCksOCljeCkuCddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIOCkteCksOCljeCkuOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS14KSw4KWN4KS44KS+4KSCJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGdvbURldmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnb20tZGV2YScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpYDgpLJf4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLLgpK9f4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+CkguCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYDgpJrgpY3gpK/gpL5f4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWA4KSa4KWN4KSv4KS+X+CkruCkvuCksOCljeCkmuCkvuCkmuCljeCkr+Ckvl/gpI/gpKrgpY3gpLDgpYDgpLLgpL7gpJrgpY3gpK/gpL5f4KSu4KWH4KSv4KS+4KSa4KWN4KSv4KS+X+CknOClguCkqOCkvuCkmuCljeCkr+Ckvl/gpJzgpYHgpLLgpK/gpL7gpJrgpY3gpK/gpL5f4KSR4KSX4KS44KWN4KSf4KS+4KSa4KWN4KSv4KS+X+CkuOCkquCljeCkn+Clh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvl/gpJHgpJXgpY3gpJ/gpYvgpKzgpLDgpL7gpJrgpY3gpK/gpL5f4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSw4KS+4KSa4KWN4KSv4KS+X+CkoeCkv+CkuOClh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9NTU1NKFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpYAuX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpJHgpJcuX+CkuOCkquCljeCkn+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfgpIIuX+CkoeCkv+CkuOClh+Ckgi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpIbgpK/gpKTgpL7gpLBf4KS44KWL4KSu4KS+4KSwX+CkruCkguCkl+Cks+CkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSs4KS/4KSw4KWH4KS44KWN4KSk4KS+4KSwX+CkuOClgeCkleCljeCksOCkvuCksF/gpLbgpYfgpKjgpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpIbgpK/gpKQuX+CkuOCli+Ckri5f4KSu4KSC4KSX4KSzLl/gpKzgpYHgpKcuX+CkrOCljeCksOClh+CkuOCljeCkpC5f4KS44KWB4KSV4KWN4KSwLl/gpLbgpYfgpKguJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+Ckhl/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpKzgpY3gpLDgpYdf4KS44KWBX+CktuClhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KSv4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+Ckq+CkvuCksuCljeCkr+CkvuCkgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KSr4KWB4KSh4KSy4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKvgpL7gpJ/gpLLgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KSG4KSm4KWA4KSCJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCkteClh+CksCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ+CkteClh+CksCcgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgpLXgpYfgpLAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuICAgICAgICAgICAgZG95OiAzLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgKDcgKyAwIC0gNClcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOClgHzgpLjgpJXgpL7gpLPgpYDgpIJ84KSm4KSo4KSq4KS+4KSw4KS+4KSCfOCkuOCkvuCkguCknOClhy8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkleCkvuCks+ClgOCkgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpKjgpKrgpL7gpLDgpL7gpIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPiAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSC4KSc4KWHJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWA4KSCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpKjgpKrgpL7gpLDgpL7gpIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkguCknOClhyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnb21EZXZhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvbmthbmkgTGF0aW4gc2NyaXB0IFtnb20tbGF0bl1cbi8vISBhdXRob3IgOiBUaGUgRGlzY292ZXJlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9XaWtpRGlzY292ZXJlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsndGhvZGRlYSBzZWtvbmRhbW5pJywgJ3Rob2RkZSBzZWtvbmQnXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJyBzZWtvbmRhbW5pJywgbnVtYmVyICsgJyBzZWtvbmQnXSxcbiAgICAgICAgICAgIG06IFsnZWthIG1pbnRhbicsICdlayBtaW51dCddLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG1pbnRhbW5pJywgbnVtYmVyICsgJyBtaW50YW0nXSxcbiAgICAgICAgICAgIGg6IFsnZWthIHZvcmFuJywgJ2VrIHZvciddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIHZvcmFtbmknLCBudW1iZXIgKyAnIHZvcmFtJ10sXG4gICAgICAgICAgICBkOiBbJ2VrYSBkaXNhbicsICdlayBkaXMnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBkaXNhbW5pJywgbnVtYmVyICsgJyBkaXMnXSxcbiAgICAgICAgICAgIE06IFsnZWthIG1ob2luZWFuJywgJ2VrIG1ob2lubyddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIG1ob2luZWFtbmknLCBudW1iZXIgKyAnIG1ob2luZSddLFxuICAgICAgICAgICAgeTogWydla2Egdm9yc2FuJywgJ2VrIHZvcm9zJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgdm9yc2FtbmknLCBudW1iZXIgKyAnIHZvcnNhbSddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnSmFuZXJfRmVicmVyX01hcnNfQWJyaWxfTWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1icicuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICdKYW5lcmFjaGVhX0ZlYnJlcmFjaGVhX01hcnNhY2hlYV9BYnJpbGFjaGVhX01haWFjaGVhX0p1bmFjaGVhX0p1bGFpYWNoZWFfQWdvc3RhY2hlYV9TZXRlbWJyYWNoZWFfT3R1YnJhY2hlYV9Ob3ZlbWJyYWNoZWFfRGV6ZW1icmFjaGVhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL01NTU0oXFxzKStEW29EXT8vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiBcIkFpdGFyX1NvbWFyX01vbmdsbGFyX0J1ZGh2YXJfQmlyZXN0YXJfU3VrcmFyX1Nvbid2YXJcIi5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQWl0Ll9Tb20uX01vbi5fQnVkLl9CcmUuX1N1ay5fU29uLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBaV9TbV9Nb19CdV9Ccl9TdV9Tbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MgW3ZhenRhXScsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0Fpel0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tGYWxlYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW0Z1ZGRsb10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRmF0dGxvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFkaW0nLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXIpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmRpbmFsICdlcicgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICdlcic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG4gICAgICAgICAgICBkb3k6IDMsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciAoNyArIDAgLSA0KVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcmF0aXxzb2thbGxpbXxkb25wYXJhbXxzYW5qZS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3JhdGknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb2thbGxpbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdkb25wYXJhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzYW5qZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb2thbGxpbSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9ucGFyYW0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NhbmplJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnb21MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEd1amFyYXRpIFtndV1cbi8vISBhdXRob3IgOiBLYXVzaGlrIFRoYW5raSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9LYXVzaGlrMTk4N1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgq6cnLFxuICAgICAgICAgICAgMjogJ+CrqCcsXG4gICAgICAgICAgICAzOiAn4KupJyxcbiAgICAgICAgICAgIDQ6ICfgq6onLFxuICAgICAgICAgICAgNTogJ+CrqycsXG4gICAgICAgICAgICA2OiAn4KusJyxcbiAgICAgICAgICAgIDc6ICfgq60nLFxuICAgICAgICAgICAgODogJ+CrricsXG4gICAgICAgICAgICA5OiAn4KuvJyxcbiAgICAgICAgICAgIDA6ICfgq6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KunJzogJzEnLFxuICAgICAgICAgICAgJ+CrqCc6ICcyJyxcbiAgICAgICAgICAgICfgq6knOiAnMycsXG4gICAgICAgICAgICAn4KuqJzogJzQnLFxuICAgICAgICAgICAgJ+Crqyc6ICc1JyxcbiAgICAgICAgICAgICfgq6wnOiAnNicsXG4gICAgICAgICAgICAn4KutJzogJzcnLFxuICAgICAgICAgICAgJ+Crric6ICc4JyxcbiAgICAgICAgICAgICfgq68nOiAnOScsXG4gICAgICAgICAgICAn4KumJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGd1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ3UnLCB7XG4gICAgICAgIG1vbnRoczogJ+CqnOCqvuCqqOCrjeCqr+CrgeCqhuCqsOCrgF/gqqvgq4fgqqzgq43gqrDgq4HgqobgqrDgq4Bf4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqv+Cqsl/gqq7gq4df4Kqc4KuC4KqoX+CqnOCrgeCqsuCqvuCqiF/gqpHgqpfgqrjgq43gqp9f4Kq44Kqq4KuN4Kqf4KuH4Kqu4KuN4Kqs4KqwX+CqkeCqleCrjeCqn+CrjeCqrOCqsF/gqqjgqrXgq4fgqq7gq43gqqzgqrBf4Kqh4Kq/4Kq44KuH4Kqu4KuN4Kqs4KqwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgqpzgqr7gqqjgq43gqq/gq4EuX+Cqq+Crh+CqrOCrjeCqsOCrgS5f4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqvy5f4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr4uX+CqkeCqly5f4Kq44Kqq4KuN4Kqf4KuHLl/gqpHgqpXgq43gqp/gq40uX+CqqOCqteCrhy5f4Kqh4Kq/4Kq44KuHLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CqsOCqteCqv+CqteCqvuCqsF/gqrjgq4vgqq7gqrXgqr7gqrBf4Kqu4KqC4KqX4Kqz4Kq14Kq+4KqwX+CqrOCrgeCqp+CrjeCqteCqvuCqsF/gqpfgq4HgqrDgq4HgqrXgqr7gqrBf4Kq24KuB4KqV4KuN4Kqw4Kq14Kq+4KqwX+CqtuCqqOCqv+CqteCqvuCqsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CqsOCqteCqv1/gqrjgq4vgqq5f4Kqu4KqC4KqX4KqzX+CqrOCrgeCqp+CrjV/gqpfgq4HgqrDgq4Ff4Kq24KuB4KqV4KuN4KqwX+CqtuCqqOCqvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgqrBf4Kq44KuLX+CqruCqgl/gqqzgq4Ff4KqX4KuBX+CqtuCrgV/gqrYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CqhuCqnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgqpfgqofgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CqquCqvuCqm+CqsuCqvl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgqq7gqr4nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCqquCqueCrh+CqsuCqvicsXG4gICAgICAgICAgICBzOiAn4KqF4Kqu4KuB4KqVIOCqquCqs+CriycsXG4gICAgICAgICAgICBzczogJyVkIOCquOCrh+CqleCqguCqoScsXG4gICAgICAgICAgICBtOiAn4KqP4KqVIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBtbTogJyVkIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBoOiAn4KqP4KqVIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBoaDogJyVkIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBkOiAn4KqP4KqVIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBkZDogJyVkIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBNOiAn4KqP4KqVIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICBNTTogJyVkIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICB5OiAn4KqP4KqVIOCqteCqsOCrjeCqtycsXG4gICAgICAgICAgICB5eTogJyVkIOCqteCqsOCrjeCqtycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgq6fgq6jgq6ngq6rgq6vgq6zgq63gq67gq6/gq6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEd1amFyYXRpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIEd1amFyYXRpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kqw4Kq+4KqkfOCqrOCqquCri+CqsHzgqrjgqrXgqr7gqrB84Kq44Kq+4KqC4KqcLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kqw4Kq+4KqkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq14Kq+4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CqrOCqquCri+CqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq+4KqC4KqcJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq14Kq+4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqqzgqqrgq4vgqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqvuCqguCqnCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGd1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEhlYnJldyBbaGVdXG4vLyEgYXV0aG9yIDogVG9tZXIgQ29oZW4gOiBodHRwczovL2dpdGh1Yi5jb20vdG9tZXJcbi8vISBhdXRob3IgOiBNb3NoZSBTaW1hbnRvdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9EZXZlbG9wbWVudElMXG4vLyEgYXV0aG9yIDogVGFsIEF0ZXIgOiBodHRwczovL2dpdGh1Yi5jb20vVGFsQXRlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGhlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGUnLCB7XG4gICAgICAgIG1vbnRoczogJ9eZ16DXldeQ16hf16TXkdeo15XXkNeoX9ee16jXpV/XkNek16jXmdecX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXldeh15hf16HXpNeY157XkdeoX9eQ15XXp9eY15XXkdeoX9eg15XXkdee15HXqF/Xk9em157XkdeoJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfXmdeg15XXs1/XpNeR16jXs1/Xnteo16Vf15DXpNeo17Nf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXktezX9eh16TXmNezX9eQ15XXp9ezX9eg15XXkdezX9eT16bXntezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9eo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9eQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn15Bf15Ff15Jf15Nf15Rf15Vf16knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBb15FdTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb15TXmdeV150g15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9ee15fXqCDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb15DXqtee15XXnCDXkda+XUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9eR15nXldedXSBkZGRkIFvXlNeQ15fXqNeV158g15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn15HXoteV15MgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9ec16TXoNeZICVzJyxcbiAgICAgICAgICAgIHM6ICfXnteh16TXqCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBtOiAn15PXp9eUJyxcbiAgICAgICAgICAgIG1tOiAnJWQg15PXp9eV16onLFxuICAgICAgICAgICAgaDogJ9ep16LXlCcsXG4gICAgICAgICAgICBoaDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdei16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdei15XXqic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZDogJ9eZ15XXnScsXG4gICAgICAgICAgICBkZDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXmdeV157XmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXmdee15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTTogJ9eX15XXk9epJyxcbiAgICAgICAgICAgIE1NOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eX15XXk9ep15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15fXldeT16nXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5OiAn16nXoNeUJyxcbiAgICAgICAgICAgIHl5OiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16DXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgJSAxMCA9PT0gMCAmJiBudW1iZXIgIT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXlCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6XG4gICAgICAgICAgICAv15DXl9eUXCLXpnzXnNek16DXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzXkdeR15XXp9eofNeR16LXqNeRL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNeQ15fXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9ec16TXoNeV16og15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXnNek16DXlFwi16YnIDogJ9ec16TXoNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15DXl9eUXCLXpicgOiAn15DXl9eo15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR16LXqNeRJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBoZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBIaW5kaSBbaGldXG4vLyEgYXV0aG9yIDogTWF5YW5rIFNpbmdoYWwgOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YW5rc2luZ2hhbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgpacnLFxuICAgICAgICAgICAgMjogJ+ClqCcsXG4gICAgICAgICAgICAzOiAn4KWpJyxcbiAgICAgICAgICAgIDQ6ICfgpaonLFxuICAgICAgICAgICAgNTogJ+ClqycsXG4gICAgICAgICAgICA2OiAn4KWsJyxcbiAgICAgICAgICAgIDc6ICfgpa0nLFxuICAgICAgICAgICAgODogJ+ClricsXG4gICAgICAgICAgICA5OiAn4KWvJyxcbiAgICAgICAgICAgIDA6ICfgpaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICAgICAn4KWmJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9e4KSc4KSoL2ksXG4gICAgICAgICAgICAvXuCkq+CkvOCksHzgpKvgpLAvaSxcbiAgICAgICAgICAgIC9e4KSu4KS+4KSw4KWN4KSaL2ksXG4gICAgICAgICAgICAvXuCkheCkquCljeCksOCliC9pLFxuICAgICAgICAgICAgL17gpK7gpIgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWC4KSoL2ksXG4gICAgICAgICAgICAvXuCknOClgeCksi9pLFxuICAgICAgICAgICAgL17gpIXgpJcvaSxcbiAgICAgICAgICAgIC9e4KS44KS/4KSk4KSCfOCkuOCkv+CkpC9pLFxuICAgICAgICAgICAgL17gpIXgpJXgpY3gpJ/gpYIvaSxcbiAgICAgICAgICAgIC9e4KSo4KS1fOCkqOCkteCkgi9pLFxuICAgICAgICAgICAgL17gpKbgpL/gpLjgpIJ84KSm4KS/4KS4L2ksXG4gICAgICAgIF0sXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXuCknOCkqC9pLFxuICAgICAgICAgICAgL17gpKvgpLzgpLAvaSxcbiAgICAgICAgICAgIC9e4KSu4KS+4KSw4KWN4KSaL2ksXG4gICAgICAgICAgICAvXuCkheCkquCljeCksOCliC9pLFxuICAgICAgICAgICAgL17gpK7gpIgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWC4KSoL2ksXG4gICAgICAgICAgICAvXuCknOClgeCksi9pLFxuICAgICAgICAgICAgL17gpIXgpJcvaSxcbiAgICAgICAgICAgIC9e4KS44KS/4KSkL2ksXG4gICAgICAgICAgICAvXuCkheCkleCljeCkn+Clgi9pLFxuICAgICAgICAgICAgL17gpKjgpLUvaSxcbiAgICAgICAgICAgIC9e4KSm4KS/4KS4L2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgaGkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoaScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn4KSc4KSo4KS14KSw4KWAX+Ckq+CksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpILgpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkguCkrOCksF/gpKbgpL/gpLjgpILgpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgpJzgpKguX+Ckq+CkvOCksC5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliC5f4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLIuX+CkheCkly5f4KS44KS/4KSkLl/gpIXgpJXgpY3gpJ/gpYIuX+CkqOCktS5f4KSm4KS/4KS4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogc2hvcnRNb250aHNQYXJzZSxcblxuICAgICAgICBtb250aHNSZWdleDpcbiAgICAgICAgICAgIC9eKOCknOCkqOCkteCksOClgHzgpJzgpKhcXC4/fOCkq+CkvOCksOCkteCksOClgHzgpKvgpLDgpLXgpLDgpYB84KSr4KS84KSwXFwuP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliOCksnzgpIXgpKrgpY3gpLDgpYhcXC4/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLLgpL7gpIh84KSc4KWB4KSyXFwuP3zgpIXgpJfgpLjgpY3gpKR84KSF4KSXXFwuP3zgpLjgpL/gpKTgpK7gpY3gpKzgpLB84KS44KS/4KSk4KSC4KSs4KSwfOCkuOCkv+CkpFxcLj984KSF4KSV4KWN4KSf4KWC4KSs4KSwfOCkheCkleCljeCkn+ClglxcLj984KSo4KS14KSu4KWN4KSs4KSwfOCkqOCkteCkguCkrOCksHzgpKjgpLVcXC4/fOCkpuCkv+CkuOCkruCljeCkrOCksHzgpKbgpL/gpLjgpILgpKzgpLB84KSm4KS/4KS4XFwuPykvaSxcblxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSo4KS14KSw4KWAfOCknOCkqFxcLj984KSr4KS84KSw4KS14KSw4KWAfOCkq+CksOCkteCksOClgHzgpKvgpLzgpLBcXC4/fOCkruCkvuCksOCljeCkmj984KSF4KSq4KWN4KSw4KWI4KSyfOCkheCkquCljeCksOCliFxcLj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCksuCkvuCkiHzgpJzgpYHgpLJcXC4/fOCkheCkl+CkuOCljeCkpHzgpIXgpJdcXC4/fOCkuOCkv+CkpOCkruCljeCkrOCksHzgpLjgpL/gpKTgpILgpKzgpLB84KS44KS/4KSkXFwuP3zgpIXgpJXgpY3gpJ/gpYLgpKzgpLB84KSF4KSV4KWN4KSf4KWCXFwuP3zgpKjgpLXgpK7gpY3gpKzgpLB84KSo4KS14KSC4KSs4KSwfOCkqOCktVxcLj984KSm4KS/4KS44KSu4KWN4KSs4KSwfOCkpuCkv+CkuOCkguCkrOCksHzgpKbgpL/gpLhcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSo4KS14KSw4KWAP3zgpKvgpLzgpLDgpLXgpLDgpYB84KSr4KSw4KS14KSw4KWAP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliOCksj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCksuCkvuCkiD984KSF4KSX4KS44KWN4KSkP3zgpLjgpL/gpKTgpK7gpY3gpKzgpLB84KS44KS/4KSk4KSC4KSs4KSwfOCkuOCkv+CkpD9cXC4/fOCkheCkleCljeCkn+ClguCkrOCksHzgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCkteCkruCljeCkrOCksHzgpKjgpLXgpILgpKzgpLA/fOCkpuCkv+CkuOCkruCljeCkrOCksHzgpKbgpL/gpLjgpILgpKzgpLA/KS9pLFxuXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijgpJzgpKhcXC4/fOCkq+CkvOCksFxcLj984KSu4KS+4KSw4KWN4KSaP3zgpIXgpKrgpY3gpLDgpYhcXC4/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLJcXC4/fOCkheCkl1xcLj984KS44KS/4KSkXFwuP3zgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCktVxcLj984KSm4KS/4KS4XFwuPykvaSxcblxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4KSu4KWH4KSCJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpKrgpLngpLLgpYcnLFxuICAgICAgICAgICAgczogJ+CkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4KS44KWH4KSV4KSC4KShJyxcbiAgICAgICAgICAgIG06ICfgpI/gpJUg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIGg6ICfgpI/gpJUg4KSY4KSC4KSf4KS+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KSY4KSC4KSf4KWHJyxcbiAgICAgICAgICAgIGQ6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE06ICfgpI/gpJUg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIHk6ICfgpI/gpJUg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGluZGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpYHgpKzgpLknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KWL4KSq4KS54KSwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLbgpL7gpK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpYHgpKzgpLknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCli+CkquCkueCksCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS24KS+4KSuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ3JvYXRpYW4gW2hyXVxuLy8hIGF1dGhvciA6IEJvamFuIE1hcmtvdmnEhyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibWFya292aWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBociA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hyJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3NpamXEjW5qYV92ZWxqYcSNZV9vxb51amthX3RyYXZuamFfc3ZpYm5qYV9saXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2FfcHJvc2luY2EnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ3NpamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3Npai5fdmVsai5fb8W+dS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEbyBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRG8gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21qZXNlYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ2dvZGludScsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEh1bmdhcmlhbiBbaHVdXG4vLyEgYXV0aG9yIDogQWRhbSBCcnVubmVyIDogaHR0cHM6Ly9naXRodWIuY29tL2FkYW1icnVubmVyXG4vLyEgYXV0aG9yIDogUGV0ZXIgVmlzenQgIDogaHR0cHM6Ly9naXRodWIuY29tL3Bhc3NhdGd0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgd2Vla0VuZGluZ3MgPVxuICAgICAgICAndmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbicuc3BsaXQoJyAnKTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW0gPSBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICA/ICduw6low6FueSBtw6Fzb2RwZXJjJ1xuICAgICAgICAgICAgICAgICAgICA6ICduw6low6FueSBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4KVxuICAgICAgICAgICAgICAgICAgICA/ICcgbcOhc29kcGVyYydcbiAgICAgICAgICAgICAgICAgICAgOiAnIG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWsoaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpc0Z1dHVyZSA/ICcnIDogJ1ttw7psdF0gJykgK1xuICAgICAgICAgICAgJ1snICtcbiAgICAgICAgICAgIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICtcbiAgICAgICAgICAgICddIExUWy1rb3JdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBodSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h1Jywge1xuICAgICAgICBtb250aHM6ICdqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tw6FyYy5fw6Fwci5fbcOhai5fasO6bi5fasO6bC5fYXVnLl9zemVwdC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAndmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAndl9oX2tfc3plX2NzX3Bfc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS4gTU1NTSBELicsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLiBNTU1NIEQuIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kZXxkdS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKSA9PT0gJ3UnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2RlJyA6ICdERSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2R1JyA6ICdEVSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW21hXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2hvbG5hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdGVnbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgbcO6bHZhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJtZW5pYW4gW2h5LWFtXVxuLy8hIGF1dGhvciA6IEFybWVuZGFyYWJ5YW4gOiBodHRwczovL2dpdGh1Yi5jb20vYXJtZW5kYXJhYnlhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGh5QW0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoeS1hbScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfVsNW41oLVttW+1aHWgNWrX9aD1aXVv9aA1b7VodaA1atf1bTVodaA1b/Vq1/VodW61oDVq9Ws1atf1bTVodW11avVvdWrX9Ww1bjWgtW21avVvdWrX9Ww1bjWgtWs1avVvdWrX9aF1aPVuNW91b/VuNW91atf1b3VpdW61b/VpdW01aLVpdaA1atf1bDVuNWv1b/VpdW01aLVpdaA1atf1bbVuNW11aXVtNWi1aXWgNWrX9Wk1aXVr9W/1aXVtNWi1aXWgNWrJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfVsNW41oLVttW+1aHWgF/Wg9Wl1b/WgNW+1aHWgF/VtNWh1oDVv1/VodW61oDVq9WsX9W01aHVtdWr1b1f1bDVuNaC1bbVq9W9X9Ww1bjWgtWs1avVvV/WhdWj1bjVvdW/1bjVvV/VvdWl1brVv9Wl1bTVotWl1oBf1bDVuNWv1b/VpdW01aLVpdaAX9W21bjVtdWl1bTVotWl1oBf1aTVpdWv1b/VpdW01aLVpdaAJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfVsNW21b5f1oPVv9aAX9W01oDVv1/VodW61oBf1bTVtdW9X9Ww1bbVvV/VsNWs1b1f1oXVo9W9X9W91brVv1/VsNWv1b9f1bbVtNWiX9Wk1a/Vvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn1a/Vq9aA1aHVr9WrX9Wl1oDVr9W41oLVt9Wh1aLVqdWrX9Wl1oDVpdaE1bfVodWi1anVq1/VudW41oDVpdaE1bfVodWi1anVq1/VsNWr1bbVo9W31aHVotWp1atf1bjWgtaA1aLVodWpX9W31aHVotWh1aknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINWpLicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb1aHVtdW91oXWgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vVvtWh1bLVqF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vVpdaA1aXVr10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdb1aHVttaB1aHVrl0gZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDVsNWl1b/VuCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg1aHVvNWh1bsnLFxuICAgICAgICAgICAgczogJ9W01asg1oTVodW21asg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBzczogJyVkINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgbTogJ9aA1bjVutWlJyxcbiAgICAgICAgICAgIG1tOiAnJWQg1oDVuNW61aUnLFxuICAgICAgICAgICAgaDogJ9Wq1aHVtCcsXG4gICAgICAgICAgICBoaDogJyVkINWq1aHVtCcsXG4gICAgICAgICAgICBkOiAn1oXWgCcsXG4gICAgICAgICAgICBkZDogJyVkINaF1oAnLFxuICAgICAgICAgICAgTTogJ9Wh1bTVq9W9JyxcbiAgICAgICAgICAgIE1NOiAnJWQg1aHVtNWr1b0nLFxuICAgICAgICAgICAgeTogJ9W/1aHWgNWrJyxcbiAgICAgICAgICAgIHl5OiAnJWQg1b/VodaA1asnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv1aPVq9W31aXWgNW+1aF81aHVvNWh1b7VuNW/1b7VoXzWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2LyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o1oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVtikkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wj1avVt9Wl1oDVvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVodW81aHVvtW41b/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfWgdWl1oDVpdWv1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aXWgNWl1a/VuNW11aHVtic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfXxcXGR7MSwyfS0o1avVtnzWgNWkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERG8nOlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Vq9W2JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3WgNWkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHlBbTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJbmRvbmVzaWFuIFtpZF1cbi8vISBhdXRob3IgOiBNb2hhbW1hZCBTYXRyaW8gVXRvbW8gOiBodHRwczovL2dpdGh1Yi5jb20vdHlva1xuLy8hIHJlZmVyZW5jZTogaHR0cDovL2lkLndpa2lzb3VyY2Uub3JnL3dpa2kvUGVkb21hbl9VbXVtX0VqYWFuX0JhaGFzYV9JbmRvbmVzaWFfeWFuZ19EaXNlbXB1cm5ha2FuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaWQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpZCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0FndF9TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTWluZ2d1X1NlbmluX1NlbGFzYV9SYWJ1X0thbWlzX0p1bWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ01nX1NuX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29yZScgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpYW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29yZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCZXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZW1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xhbHUgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGFsdScsXG4gICAgICAgICAgICBzOiAnYmViZXJhcGEgZGV0aWsnLFxuICAgICAgICAgICAgc3M6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtOiAnc2VtZW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGg6ICdzZWphbScsXG4gICAgICAgICAgICBoaDogJyVkIGphbScsXG4gICAgICAgICAgICBkOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFodW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSWNlbGFuZGljIFtpc11cbi8vISBhdXRob3IgOiBIaW5yaWsgw5ZybiBTaWd1csOwc3NvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oaW5yaWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIGlmIChuICUgMTAwID09PSAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobiAlIDEwID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgICAgID8gJ25va2tyYXIgc2Vrw7puZHVyJ1xuICAgICAgICAgICAgICAgICAgICA6ICdub2trcnVtIHNla8O6bmR1bSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2Vrw7puZHVyJyA6ICdzZWvDum5kdW0nKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla8O6bmRhJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ23DrW7DunRhJyA6ICdtw61uw7p0dSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtw61uw7p0dXInIDogJ23DrW7DunR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2tsdWtrdXN0dW5kaXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAna2x1a2t1c3R1bmR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAna2x1a2t1c3R1bmQnO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWdhcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWdhJyA6ICdkw7ZndW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7Bpcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwaScgOiAnbcOhbnXDsHVtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FydW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGlzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXMnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbsO6YXJfZmVicsO6YXJfbWFyc19hcHLDrWxfbWHDrV9qw7puw61fasO6bMOtX8OhZ8O6c3Rfc2VwdGVtYmVyX29rdMOzYmVyX27Ds3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1cicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc3VuX23DoW5fw75yaV9tacOwX2ZpbV9mw7ZzX2xhdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8OtIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbw6EgbW9yZ3VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw60gZ8OmciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VmdGlyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdmeXJpciAlcyBzw63DsGFuJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogJ2tsdWtrdXN0dW5kJyxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSXRhbGlhbiAoU3dpdHplcmxhbmQpIFtpdC1jaF1cbi8vISBhdXRob3IgOiB4ZmggOiBodHRwczovL2dpdGh1Yi5jb20veGZoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaXRDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0LWNoJywge1xuICAgICAgICBtb250aHM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgvXlswLTldLiskLy50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJyVzIGZhJyxcbiAgICAgICAgICAgIHM6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiBcInVuJ29yYVwiLFxuICAgICAgICAgICAgaGg6ICclZCBvcmUnLFxuICAgICAgICAgICAgZDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2knLFxuICAgICAgICAgICAgeTogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm5pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpdENoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEl0YWxpYW4gW2l0XVxuLy8hIGF1dGhvciA6IExvcmVuem8gOiBodHRwczovL2dpdGh1Yi5jb20vYWxpZW1cbi8vISBhdXRob3I6IE1hdHRpYSBMYXJlbnRpczogaHR0cHM6Ly9naXRodWIuY29tL25vc3RhbGdpYXpcbi8vISBhdXRob3I6IE1hcmNvIDogaHR0cHM6Ly9naXRodWIuY29tL01hbmZyZTk4XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdCcsIHtcbiAgICAgICAgbW9udGhzOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2dlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWVfZ2lfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbT2dnaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbRG9tYW5pIGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDEgPyAnbGxlICcgOiB0aGlzLmhvdXJzKCkgPT09IDAgPyAnICcgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdkZGRkIFthJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbSWVyaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW0xhIHNjb3JzYV0gZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2xsZSAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5ob3VycygpID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tMbyBzY29yc29dIGRkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdsbGUgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnMoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAndHJhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBmYScsXG4gICAgICAgICAgICBzOiAnYWxjdW5pIHNlY29uZGknLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRpJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGknLFxuICAgICAgICAgICAgaDogXCJ1bidvcmFcIixcbiAgICAgICAgICAgIGhoOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQ6ICd1biBnaW9ybm8nLFxuICAgICAgICAgICAgZGQ6ICclZCBnaW9ybmknLFxuICAgICAgICAgICAgdzogJ3VuYSBzZXR0aW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZXR0aW1hbmUnLFxuICAgICAgICAgICAgTTogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNpJyxcbiAgICAgICAgICAgIHk6ICd1biBhbm5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5uaScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSmFwYW5lc2UgW2phXVxuLy8hIGF1dGhvciA6IExJIExvbmcgOiBodHRwczovL2dpdGh1Yi5jb20vYmFyeW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgamEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqYScsIHtcbiAgICAgICAgZXJhczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMjAxOS0wNS0wMScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfku6TlkownLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+OLvycsXG4gICAgICAgICAgICAgICAgYWJicjogJ1InLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5ODktMDEtMDgnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMjAxOS0wNC0zMCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICflubPmiJAnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONuycsXG4gICAgICAgICAgICAgICAgYWJicjogJ0gnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5MjYtMTItMjUnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTk4OS0wMS0wNycsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfmmK3lkownLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvCcsXG4gICAgICAgICAgICAgICAgYWJicjogJ1MnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE5MTItMDctMzAnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTkyNi0xMi0yNCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICflpKfmraMnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvScsXG4gICAgICAgICAgICAgICAgYWJicjogJ1QnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzE4NzMtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTkxMi0wNy0yOScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiA2LFxuICAgICAgICAgICAgICAgIG5hbWU6ICfmmI7msrsnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ+ONvicsXG4gICAgICAgICAgICAgICAgYWJicjogJ00nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDEtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAnMTg3My0xMi0zMScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfopb/mmqYnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0FEJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDAtMTItMzEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfntIDlhYPliY0nLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0JDJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQkMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXJhWWVhck9yZGluYWxSZWdleDogLyjlhYN8XFxkKynlubQvLFxuICAgICAgICBlcmFZZWFyT3JkaW5hbFBhcnNlOiBmdW5jdGlvbiAoaW5wdXQsIG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hbMV0gPT09ICflhYMnID8gMSA6IHBhcnNlSW50KG1hdGNoWzFdIHx8IGlucHV0LCAxMCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoczogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelIGRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6UoZGRkKSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ljYjliY185Y2I5b6ML2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn5Y2I5b6MJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOWJjSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5b6MJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuaXpV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5p2l6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5pelXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlZWsoKSAhPT0gbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vlhYjpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ95pelLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gJ+WFg+W5tCcgOiBudW1iZXIgKyAn5bm0JztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0OiAnJXPliY0nLFxuICAgICAgICAgICAgczogJ+aVsOenkicsXG4gICAgICAgICAgICBzczogJyVk56eSJyxcbiAgICAgICAgICAgIG06ICcx5YiGJyxcbiAgICAgICAgICAgIG1tOiAnJWTliIYnLFxuICAgICAgICAgICAgaDogJzHmmYLplpMnLFxuICAgICAgICAgICAgaGg6ICclZOaZgumWkycsXG4gICAgICAgICAgICBkOiAnMeaXpScsXG4gICAgICAgICAgICBkZDogJyVk5pelJyxcbiAgICAgICAgICAgIE06ICcx44O25pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWTjg7bmnIgnLFxuICAgICAgICAgICAgeTogJzHlubQnLFxuICAgICAgICAgICAgeXk6ICclZOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gamE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSmF2YW5lc2UgW2p2XVxuLy8hIGF1dGhvciA6IFJvbnkgTGFudGlwIDogaHR0cHM6Ly9naXRodWIuY29tL2xhbnRpcFxuLy8hIHJlZmVyZW5jZTogaHR0cDovL2p2Lndpa2lwZWRpYS5vcmcvd2lraS9CYXNhX0phd2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBqdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2p2Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdNaW5nZ3VfU2VuZW5fU2Vsb3NvX1JlYnVfS2VtaXNfSmVtdXdhaF9TZXB0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ01pbl9TZW5fU2VsX1JlYl9LZW1fSmVtX1NlcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdNZ19Tbl9TbF9SYl9LbV9KbV9TcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZW5qaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpeWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29udGVuJyB8fCBtZXJpZGllbSA9PT0gJ25kYWx1Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbmppbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaXlhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb250ZW4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ25kYWx1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGludGVuIHB1bmlrbyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNYmVuamFuZyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLYWxhIHdpbmdpIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2tlcGVuZ2tlciBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd3b250ZW4gaW5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpbmdrYW5nIGtlcGVuZ2tlcicsXG4gICAgICAgICAgICBzOiAnc2F3ZXRhd2lzIGRldGlrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgZGV0aWsnLFxuICAgICAgICAgICAgbTogJ3NldHVuZ2dhbCBtZW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGg6ICdzZXR1bmdnYWwgamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWRpbnRlbicsXG4gICAgICAgICAgICBkZDogJyVkIGRpbnRlbicsXG4gICAgICAgICAgICBNOiAnc2V3dWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIHd1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhdW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YXVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGp2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdlb3JnaWFuIFtrYV1cbi8vISBhdXRob3IgOiBJcmFrbGkgSmFuaWFzaHZpbGkgOiBodHRwczovL2dpdGh1Yi5jb20vSXJha2xpSmFuaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGthID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2EnLCB7XG4gICAgICAgIG1vbnRoczogJ+GDmOGDkOGDnOGDleGDkOGDoOGDmF/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg5hf4YOb4YOQ4YOg4YOi4YOYX+GDkOGDnuGDoOGDmOGDmuGDmF/hg5vhg5Dhg5jhg6Hhg5hf4YOY4YOV4YOc4YOY4YOh4YOYX+GDmOGDleGDmuGDmOGDoeGDmF/hg5Dhg5Lhg5Xhg5jhg6Hhg6Lhg51f4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOYX+GDneGDpeGDouGDneGDm+GDkeGDlOGDoOGDmF/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dhg5hf4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOYJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GDmOGDkOGDnF/hg5fhg5Thg5Ff4YOb4YOQ4YOgX+GDkOGDnuGDoF/hg5vhg5Dhg5hf4YOY4YOV4YOcX+GDmOGDleGDml/hg5Dhg5Lhg5Vf4YOh4YOU4YOlX+GDneGDpeGDol/hg5zhg53hg5Rf4YOT4YOU4YOZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn4YOZ4YOV4YOY4YOg4YOQX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDmF/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDmF/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg5hf4YOo4YOQ4YOR4YOQ4YOX4YOYJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ+GDmeGDleGDmOGDoOGDkOGDoV/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDoV/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOhX+GDqOGDkOGDkeGDkOGDl+GDoScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC8o4YOs4YOY4YOc4YOQfOGDqOGDlOGDm+GDk+GDlOGDkikvLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4YOZ4YOV4YOYX+GDneGDoOGDqF/hg6Hhg5Dhg5tf4YOd4YOX4YOuX+GDruGDo+GDl1/hg57hg5Dhg6Bf4YOo4YOQ4YORJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GDmeGDlV/hg53hg6Bf4YOh4YOQX+GDneGDl1/hg67hg6Nf4YOe4YOQX+GDqOGDkCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vhg5Phg6bhg5Thg6FdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4YOu4YOV4YOQ4YOaXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GDkuGDo+GDqOGDmOGDnF0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4YOo4YOU4YOb4YOT4YOU4YOSXSBkZGRkIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+GDrOGDmOGDnOGDkF0gZGRkZCBMVC3hg5bhg5QnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgLyjhg6zhg5Dhg5t84YOs4YOj4YOXfOGDoeGDkOGDkOGDl3zhg6zhg5Thg5p84YOT4YOmfOGDl+GDlSko4YOYfOGDlCkvLFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJDAsICQxLCAkMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQyID09PSAn4YOYJyA/ICQxICsgJ+GDqOGDmCcgOiAkMSArICQyICsgJ+GDqOGDmCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgaWYgKC8o4YOs4YOQ4YOb4YOYfOGDrOGDo+GDl+GDmHzhg6Hhg5Dhg5Dhg5fhg5h84YOT4YOm4YOUfOGDl+GDleGDlCkvLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvKOGDmHzhg5QpJC8sICfhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgv4YOs4YOU4YOa4YOYLy50ZXN0KHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL+GDrOGDlOGDmuGDmCQvLCAn4YOs4YOa4YOY4YOhIOGDrOGDmOGDnCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzOiAn4YOg4YOQ4YOb4YOT4YOU4YOc4YOY4YOb4YOUIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBzczogJyVkIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBtOiAn4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIGg6ICfhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgaGg6ICclZCDhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgZDogJ+GDk+GDpuGDlCcsXG4gICAgICAgICAgICBkZDogJyVkIOGDk+GDpuGDlCcsXG4gICAgICAgICAgICBNOiAn4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIHk6ICfhg6zhg5Thg5rhg5gnLFxuICAgICAgICAgICAgeXk6ICclZCDhg6zhg5Thg5rhg5gnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvMHwxLeGDmuGDmHzhg5vhg5QtXFxkezEsMn18XFxkezEsMn0t4YOULyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOa4YOYJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBudW1iZXIgPCAyMCB8fFxuICAgICAgICAgICAgICAgIChudW1iZXIgPD0gMTAwICYmIG51bWJlciAlIDIwID09PSAwKSB8fFxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwMCA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhg5vhg5QtJyArIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDlCc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSxcbiAgICAgICAgICAgIGRveTogNyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLYXpha2ggW2trXVxuLy8hIGF1dGhvcnMgOiBOdXJsYW4gUmFraGltemhhbm92IDogaHR0cHM6Ly9naXRodWIuY29tL251cmxhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGI0ZYnLFxuICAgICAgICAxOiAnLdGI0ZYnLFxuICAgICAgICAyOiAnLdGI0ZYnLFxuICAgICAgICAzOiAnLdGI0ZYnLFxuICAgICAgICA0OiAnLdGI0ZYnLFxuICAgICAgICA1OiAnLdGI0ZYnLFxuICAgICAgICA2OiAnLdGI0YsnLFxuICAgICAgICA3OiAnLdGI0ZYnLFxuICAgICAgICA4OiAnLdGI0ZYnLFxuICAgICAgICA5OiAnLdGI0YsnLFxuICAgICAgICAxMDogJy3RiNGLJyxcbiAgICAgICAgMjA6ICct0YjRiycsXG4gICAgICAgIDMwOiAnLdGI0YsnLFxuICAgICAgICA0MDogJy3RiNGLJyxcbiAgICAgICAgNTA6ICct0YjRlicsXG4gICAgICAgIDYwOiAnLdGI0YsnLFxuICAgICAgICA3MDogJy3RiNGWJyxcbiAgICAgICAgODA6ICct0YjRlicsXG4gICAgICAgIDkwOiAnLdGI0YsnLFxuICAgICAgICAxMDA6ICct0YjRlicsXG4gICAgfTtcblxuICAgIHZhciBrayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2trJywge1xuICAgICAgICBtb250aHM6ICfSm9Cw0qPRgtCw0YBf0LDSm9C/0LDQvV/QvdCw0YPRgNGL0Ldf0YHTmdGD0ZbRgF/QvNCw0LzRi9GAX9C80LDRg9GB0YvQvF/RiNGW0LvQtNC1X9GC0LDQvNGL0Ldf0pvRi9GA0LrSr9C50LXQul/Sm9Cw0LfQsNC9X9Kb0LDRgNCw0YjQsF/QttC10LvRgtC+0pvRgdCw0L0nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0pvQsNKjX9Cw0pvQv1/QvdCw0YNf0YHTmdGDX9C80LDQvF/QvNCw0YNf0YjRltC7X9GC0LDQvF/Sm9GL0YBf0pvQsNC3X9Kb0LDRgF/QttC10LsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0LbQtdC60YHQtdC90LHRll/QtNKv0LnRgdC10L3QsdGWX9GB0LXQudGB0LXQvdCx0ZZf0YHTmdGA0YHQtdC90LHRll/QsdC10LnRgdC10L3QsdGWX9C20rHQvNCwX9GB0LXQvdCx0ZYnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQttC10Lpf0LTSr9C5X9GB0LXQuV/RgdOZ0YBf0LHQtdC5X9C20rHQvF/RgdC10L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0LbQul/QtNC5X9GB0Llf0YHRgF/QsdC5X9C20Lxf0YHQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdKv0LPRltC9INGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JXRgNGC0LXSoyDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9GB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JrQtdGI0LUg0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jRgtC60LXQvSDQsNC/0YLQsNC90YvSo10gZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDRltGI0ZbQvdC00LUnLFxuICAgICAgICAgICAgcGFzdDogJyVzINCx0rHRgNGL0L0nLFxuICAgICAgICAgICAgczogJ9Cx0ZbRgNC90LXRiNC1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtOiAn0LHRltGAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGg6ICfQsdGW0YAg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgZDogJ9Cx0ZbRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTTogJ9Cx0ZbRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5OiAn0LHRltGAINC20YvQuycsXG4gICAgICAgICAgICB5eTogJyVkINC20YvQuycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YjRlnzRiNGLKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENhbWJvZGlhbiBba21dXG4vLyEgYXV0aG9yIDogS3J1eSBWYW5uYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rcnV5dmFubmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4Z+hJyxcbiAgICAgICAgICAgIDI6ICfhn6InLFxuICAgICAgICAgICAgMzogJ+GfoycsXG4gICAgICAgICAgICA0OiAn4Z+kJyxcbiAgICAgICAgICAgIDU6ICfhn6UnLFxuICAgICAgICAgICAgNjogJ+GfpicsXG4gICAgICAgICAgICA3OiAn4Z+nJyxcbiAgICAgICAgICAgIDg6ICfhn6gnLFxuICAgICAgICAgICAgOTogJ+GfqScsXG4gICAgICAgICAgICAwOiAn4Z+gJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+GfoSc6ICcxJyxcbiAgICAgICAgICAgICfhn6InOiAnMicsXG4gICAgICAgICAgICAn4Z+jJzogJzMnLFxuICAgICAgICAgICAgJ+GfpCc6ICc0JyxcbiAgICAgICAgICAgICfhn6UnOiAnNScsXG4gICAgICAgICAgICAn4Z+mJzogJzYnLFxuICAgICAgICAgICAgJ+Gfpyc6ICc3JyxcbiAgICAgICAgICAgICfhn6gnOiAnOCcsXG4gICAgICAgICAgICAn4Z+pJzogJzknLFxuICAgICAgICAgICAgJ+GfoCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBrbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ttJywge1xuICAgICAgICBtb250aHM6ICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjhnpPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvhnpPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonhn5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGetl/hnpLhn5LhnpPhnrwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfhnqLhnrbhnpHhnrfhno/hn5Lhnplf4Z6F4Z+Q4Z6T4Z+S4Z6RX+GeouGehOGfkuGeguGetuGeml/hnpbhnrvhnpJf4Z6W4Z+S4Z6a4Z6g4Z6f4Z+S4Z6U4Z6P4Z634Z+NX+Gen+Geu+GegOGfkuGeml/hnp/hn4Xhnprhn40nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Z6i4Z62X+GehV/hnqJf4Z6WX+GeluGfkuGeml/hnp/hnrtf4Z6fJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+GeluGfkuGemuGeueGegHzhnpvhn5LhnoThnrbhnoUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+Gem+GfkuGehOGetuGehSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhnpbhn5LhnprhnrnhnoAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+Gem+GfkuGehOGetuGehSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GekOGfkuGehOGfg+Gek+GfgeGfhyDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4Z6f4Z+S4Z6i4Z+C4Z6AIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4Z6Y4Z+S4Z6f4Z634Z6b4Z6Y4Z634Z6JIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvhnp/hnpThn5Lhno/hnrbhnqDhn43hnpjhnrvhnpNdIFvhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPhnpHhn4Dhno8nLFxuICAgICAgICAgICAgcGFzdDogJyVz4Z6Y4Z674Z6TJyxcbiAgICAgICAgICAgIHM6ICfhnpThn4nhnrvhnpPhn5LhnpjhnrbhnpPhnpzhnrfhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgc3M6ICclZCDhnpzhnrfhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgbTogJ+GemOGeveGemeGek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtbTogJyVkIOGek+GetuGekeGeuCcsXG4gICAgICAgICAgICBoOiAn4Z6Y4Z694Z6Z4Z6Y4Z+J4Z+E4Z6EJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4Z6Y4Z+J4Z+E4Z6EJyxcbiAgICAgICAgICAgIGQ6ICfhnpjhnr3hnpnhnpDhn5LhnoThn4MnLFxuICAgICAgICAgICAgZGQ6ICclZCDhnpDhn5LhnoThn4MnLFxuICAgICAgICAgICAgTTogJ+GemOGeveGemeGegeGfgicsXG4gICAgICAgICAgICBNTTogJyVkIOGegeGfgicsXG4gICAgICAgICAgICB5OiAn4Z6Y4Z694Z6Z4Z6G4Z+S4Z6T4Z624Z+GJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Z6G4Z+S4Z6T4Z624Z+GJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL+GekeGeuFxcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJ+GekeGeuCVkJyxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GfoeGfouGfo+GfpOGfpeGfpuGfp+GfqOGfqeGfoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGttO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEthbm5hZGEgW2tuXVxuLy8hIGF1dGhvciA6IFJhamVldiBOYWlrIDogaHR0cHM6Ly9naXRodWIuY29tL3JhamVldm5haWt0ZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgs6cnLFxuICAgICAgICAgICAgMjogJ+CzqCcsXG4gICAgICAgICAgICAzOiAn4LOpJyxcbiAgICAgICAgICAgIDQ6ICfgs6onLFxuICAgICAgICAgICAgNTogJ+CzqycsXG4gICAgICAgICAgICA2OiAn4LOsJyxcbiAgICAgICAgICAgIDc6ICfgs60nLFxuICAgICAgICAgICAgODogJ+CzricsXG4gICAgICAgICAgICA5OiAn4LOvJyxcbiAgICAgICAgICAgIDA6ICfgs6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4LOnJzogJzEnLFxuICAgICAgICAgICAgJ+CzqCc6ICcyJyxcbiAgICAgICAgICAgICfgs6knOiAnMycsXG4gICAgICAgICAgICAn4LOqJzogJzQnLFxuICAgICAgICAgICAgJ+Czqyc6ICc1JyxcbiAgICAgICAgICAgICfgs6wnOiAnNicsXG4gICAgICAgICAgICAn4LOtJzogJzcnLFxuICAgICAgICAgICAgJ+Czric6ICc4JyxcbiAgICAgICAgICAgICfgs68nOiAnOScsXG4gICAgICAgICAgICAn4LOmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGtuID0gbW9tZW50LmRlZmluZUxvY2FsZSgna24nLCB7XG4gICAgICAgIG1vbnRoczogJ+CynOCyqOCyteCysOCyv1/gsqvgs4bgsqzgs43gsrDgsrXgsrDgsr9f4LKu4LK+4LKw4LON4LKa4LONX+Cyj+CyquCzjeCysOCyv+CysuCzjV/gsq7gs4bgs5Vf4LKc4LOC4LKo4LONX+CynOCzgeCysuCzhuCzll/gsobgspfgsrjgs43gsp/gs41f4LK44LOG4LKq4LON4LKf4LOG4LKC4LKs4LKw4LONX+CyheCyleCzjeCyn+CzhuCzguCzleCyrOCysOCzjV/gsqjgsrXgs4bgsoLgsqzgsrDgs41f4LKh4LK/4LK44LOG4LKC4LKs4LKw4LONJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgspzgsqhf4LKr4LOG4LKs4LON4LKwX+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCygl/gsoXgspXgs43gsp/gs4bgs4Lgs5Vf4LKo4LK14LOG4LKCX+CyoeCyv+CyuOCzhuCygicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CyreCyvuCyqOCzgeCyteCyvuCysF/gsrjgs4bgs4Lgs5Xgsq7gsrXgsr7gsrBf4LKu4LKC4LKX4LKz4LK14LK+4LKwX+CyrOCzgeCyp+CyteCyvuCysF/gspfgs4HgsrDgs4HgsrXgsr7gsrBf4LK24LOB4LKV4LON4LKw4LK14LK+4LKwX+CytuCyqOCyv+CyteCyvuCysCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CyreCyvuCyqOCzgV/gsrjgs4bgs4Lgs5Xgsq5f4LKu4LKC4LKX4LKzX+CyrOCzgeCyp1/gspfgs4HgsrDgs4Ff4LK24LOB4LKV4LON4LKwX+CytuCyqOCyvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgsq3gsr5f4LK44LOG4LOC4LOVX+CyruCygl/gsqzgs4Ff4LKX4LOBX+CytuCzgV/gsrYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4LKH4LKC4LKm4LOBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CyqOCyvuCys+Czhl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CyqOCyv+CyqOCzjeCyqOCzhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4LKV4LOG4LOC4LKo4LOG4LKvXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCyqOCyguCypOCysCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4LK54LK/4LKC4LKm4LOGJyxcbiAgICAgICAgICAgIHM6ICfgspXgs4bgsrLgsrXgs4Eg4LKV4LON4LK34LKj4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4LK44LOG4LKV4LOG4LKC4LKh4LOB4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIG06ICfgspLgsoLgsqbgs4Eg4LKo4LK/4LKu4LK/4LK3JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LKo4LK/4LKu4LK/4LK3JyxcbiAgICAgICAgICAgIGg6ICfgspLgsoLgsqbgs4Eg4LKX4LKC4LKf4LOGJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LKX4LKC4LKf4LOGJyxcbiAgICAgICAgICAgIGQ6ICfgspLgsoLgsqbgs4Eg4LKm4LK/4LKoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4LKm4LK/4LKoJyxcbiAgICAgICAgICAgIE06ICfgspLgsoLgsqbgs4Eg4LKk4LK/4LKC4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LKk4LK/4LKC4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHk6ICfgspLgsoLgsqbgs4Eg4LK14LKw4LON4LK3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4LK14LKw4LON4LK3JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Czp+CzqOCzqeCzquCzq+CzrOCzreCzruCzr+Czpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CysOCyvuCypOCzjeCysOCyv3zgsqzgs4bgsrPgsr/gspfgs43gspfgs4Z84LKu4LKn4LON4LKv4LK+4LK54LON4LKofOCyuOCyguCynOCzhi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CysOCyvuCypOCzjeCysOCyvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyrOCzhuCys+Cyv+Cyl+CzjeCyl+CzhicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsq7gsqfgs43gsq/gsr7gsrngs43gsqgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyuOCyguCynOCzhicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrjgsoLgspzgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjgsqjgs4bgs5UpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgsqjgs4bgs5UnO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS29yZWFuIFtrb11cbi8vISBhdXRob3IgOiBLeXVuZ3dvb2ssIFBhcmsgOiBodHRwczovL2dpdGh1Yi5jb20va3l1bmd3MDBrXG4vLyEgYXV0aG9yIDogSmVlZXl1bCBMZWUgPGplZWV5dWxAZ21haWwuY29tPlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGtvID0gbW9tZW50LmRlZmluZUxvY2FsZSgna28nLCB7XG4gICAgICAgIG1vbnRoczogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+ydvOyalOydvF/sm5TsmpTsnbxf7ZmU7JqU7J28X+yImOyalOydvF/rqqnsmpTsnbxf6riI7JqU7J28X+2GoOyalOydvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgbGw6ICdZWVlZ64WEIE1NTU0gROydvCcsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICfsmKTripggTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ+uCtOydvCBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ+yWtOygnCBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ+yngOuCnOyjvCBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg7ZuEJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDsoIQnLFxuICAgICAgICAgICAgczogJ+uqhyDstIgnLFxuICAgICAgICAgICAgc3M6ICclZOy0iCcsXG4gICAgICAgICAgICBtOiAnMeu2hCcsXG4gICAgICAgICAgICBtbTogJyVk67aEJyxcbiAgICAgICAgICAgIGg6ICftlZwg7Iuc6rCEJyxcbiAgICAgICAgICAgIGhoOiAnJWTsi5zqsIQnLFxuICAgICAgICAgICAgZDogJ+2VmOujqCcsXG4gICAgICAgICAgICBkZDogJyVk7J28JyxcbiAgICAgICAgICAgIE06ICftlZwg64usJyxcbiAgICAgICAgICAgIE1NOiAnJWTri6wnLFxuICAgICAgICAgICAgeTogJ+ydvCDrhYQnLFxuICAgICAgICAgICAgeXk6ICclZOuFhCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjsnbx87JuUfOyjvCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsnbwnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yblCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7KO8JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv7Jik7KCEfOyYpO2bhC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuID09PSAn7Jik7ZuEJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzVXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIDwgMTIgPyAn7Jik7KCEJyA6ICfsmKTtm4QnO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5vcnRoZXJuIEt1cmRpc2ggW2t1LWttcl1cbi8vISBhdXRob3JzIDogTWF6bHVtIMOWemRvZ2FuIDogaHR0cHM6Ly9naXRodWIuY29tL21lcmdlaGV6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bSwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyfDp2VuZCBzYW7DrnllJywgJ8OnZW5kIHNhbsOueWV5YW4nXSxcbiAgICAgICAgICAgIHNzOiBbbnVtICsgJyBzYW7DrnllJywgbnVtICsgJyBzYW7DrnlleWFuJ10sXG4gICAgICAgICAgICBtOiBbJ2RlccOucWV5ZWsnLCAnZGVxw65xZXlla8OqJ10sXG4gICAgICAgICAgICBtbTogW251bSArICcgZGVxw65xZScsIG51bSArICcgZGVxw65xZXlhbiddLFxuICAgICAgICAgICAgaDogWydzYWV0ZWsnLCAnc2FldGVrw6onXSxcbiAgICAgICAgICAgIGhoOiBbbnVtICsgJyBzYWV0JywgbnVtICsgJyBzYWV0YW4nXSxcbiAgICAgICAgICAgIGQ6IFsncm9qZWsnLCAncm9qZWvDqiddLFxuICAgICAgICAgICAgZGQ6IFtudW0gKyAnIHJvaicsIG51bSArICcgcm9qYW4nXSxcbiAgICAgICAgICAgIHc6IFsnaGVmdGV5ZWsnLCAnaGVmdGV5ZWvDqiddLFxuICAgICAgICAgICAgd3c6IFtudW0gKyAnIGhlZnRlJywgbnVtICsgJyBoZWZ0ZXlhbiddLFxuICAgICAgICAgICAgTTogWydtZWhlaycsICdtZWhla8OqJ10sXG4gICAgICAgICAgICBNTTogW251bSArICcgbWVoJywgbnVtICsgJyBtZWhhbiddLFxuICAgICAgICAgICAgeTogWydzYWxlaycsICdzYWxla8OqJ10sXG4gICAgICAgICAgICB5eTogW251bSArICcgc2FsJywgbnVtICsgJyBzYWxhbiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuICAgIC8vIGZ1bmN0aW9uIG9ibGlxdWVOdW1TdWZmaXgobnVtKSB7XG4gICAgLy8gICAgIGlmKG51bS5pbmNsdWRlcygnOicpKVxuICAgIC8vICAgICAgICAgbnVtID0gcGFyc2VJbnQobnVtLnNwbGl0KCc6JylbMF0pO1xuICAgIC8vICAgICBlbHNlXG4gICAgLy8gICAgICAgICBudW0gPSBwYXJzZUludChudW0pO1xuICAgIC8vICAgICByZXR1cm4gbnVtID09IDAgfHwgbnVtICUgMTAgPT0gMSA/ICfDqidcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICA6IChudW0gPiAxMCAmJiBudW0gJSAxMCA9PSAwID8gJ8OuJyA6ICdhbicpO1xuICAgIC8vIH1cbiAgICBmdW5jdGlvbiBlemFmZU51bVN1ZmZpeChudW0pIHtcbiAgICAgICAgbnVtID0gJycgKyBudW07XG4gICAgICAgIHZhciBsID0gbnVtLnN1YnN0cmluZyhudW0ubGVuZ3RoIC0gMSksXG4gICAgICAgICAgICBsbCA9IG51bS5sZW5ndGggPiAxID8gbnVtLnN1YnN0cmluZyhudW0ubGVuZ3RoIC0gMikgOiAnJztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShsbCA9PSAxMiB8fCBsbCA9PSAxMykgJiZcbiAgICAgICAgICAgIChsID09ICcyJyB8fCBsID09ICczJyB8fCBsbCA9PSAnNTAnIHx8IGwgPT0gJzcwJyB8fCBsID09ICc4MCcpXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiAnecOqJztcbiAgICAgICAgcmV0dXJuICfDqic7XG4gICAgfVxuXG4gICAgdmFyIGt1S21yID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3Uta21yJywge1xuICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWxsaW5nIHJ1bGVzIGRlZmluZWQgYnkgdGhlIHdvcmsgZ3JvdXAgb2YgV2VxZmEgTWV6b3BvdGFteWF5w6ogKE1lc29wb3RhbWlhIEZvdW5kYXRpb24pXG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlOiAnS2Fuw7tuYSBQYcWfw65uX1NpYmF0X0FkYXJfTsOuc2FuX0d1bGFuX0hlesOucmFuX1TDrnJtZWhfVGViYXhfw45sb25fw4dpcsOueWEgUMOqxZ/Drm5fw4dpcsOueWEgUGHFn8Oubl9LYW7Du25hIFDDqsWfw65uJ1xuICAgICAgICAvLyBCdXQgdGhlIG5hbWVzIGJlbG93IGFyZSBtb3JlIHdlbGwga25vd24gYW5kIGhhbmR5XG4gICAgICAgIG1vbnRoczogJ1LDqmJlbmRhbl9TaWJhdF9BZGFyX07DrnNhbl9HdWxhbl9IZXrDrnJhbl9Uw65ybWVoX1RlYmF4X8OObG9uX0NvdG1laF9NaWpkYXJfQmVyZmFuYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1LDqmJfU2liX0FkYV9Ow65zX0d1bF9IZXpfVMOucl9UZWJfw45sb19Db3RfTWlqX0Jlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdZZWvFn2VtX0R1xZ9lbV9Tw6rFn2VtX8OHYXLFn2VtX1DDqm5jxZ9lbV/Djm5fxZ5lbcOuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnWWVrX0R1X1PDql/Dh2FyX1DDqm5fw45uX8WeZW0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnWWVfRHVfU8OqX8OHYV9Qw6pfw45uX8WeZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdibicgOiAnQk4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbicgOiAnUE4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvYm58Qk58cG58UE4vLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU1bYV0gWVlZWVthbl0nLFxuICAgICAgICAgICAgTExMOiAnRG8gTU1NTVthXSBZWVlZW2FuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRG8gTU1NTVthXSBZWVlZW2FuXSBISDptbScsXG4gICAgICAgICAgICBsbDogJ0RvIE1NTVsuXSBZWVlZW2FuXScsXG4gICAgICAgICAgICBsbGw6ICdEbyBNTU1bLl0gWVlZWVthbl0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZFsuXSwgRG8gTU1NWy5dIFlZWVlbYW5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbw45ybyBkaSBzYWV0XSBMVCBbZGVdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbU2liw6ogZGkgc2FldF0gTFQgW2RlXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2RpIHNhZXRdIExUIFtkZV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEdWggZGkgc2FldF0gTFQgW2RlXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGRbYSBib3LDriBkaSBzYWV0XSBMVCBbZGVdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGkgJXMgZGUnLFxuICAgICAgICAgICAgcGFzdDogJ2JlcsOuICVzJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KD86ecOqfMOqfFxcLikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBwID0gcGVyaW9kLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAocC5pbmNsdWRlcygndycpIHx8IHAuaW5jbHVkZXMoJ20nKSkgcmV0dXJuIG51bSArICcuJztcblxuICAgICAgICAgICAgcmV0dXJuIG51bSArIGV6YWZlTnVtU3VmZml4KG51bSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrdUttcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLdXJkaXNoIFtrdV1cbi8vISBhdXRob3IgOiBTaGFocmFtIE1lYmFzaGFyIDogaHR0cHM6Ly9naXRodWIuY29tL1NoYWhyYW1NZWJhc2hhclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9qp2KfZhtmI2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgICAgICfYtNmI2KjYp9iqJyxcbiAgICAgICAgICAgICfYptin2LLYp9ixJyxcbiAgICAgICAgICAgICfZhtuM2LPYp9mGJyxcbiAgICAgICAgICAgICfYptin24zYp9ixJyxcbiAgICAgICAgICAgICfYrdmI2LLblduM2LHYp9mGJyxcbiAgICAgICAgICAgICfYqtuV2YXZhdmI2LInLFxuICAgICAgICAgICAgJ9im2KfYqCcsXG4gICAgICAgICAgICAn2KbblduM2YTZiNmI2YQnLFxuICAgICAgICAgICAgJ9iq2LTYsduM2YbbjCDbjNuV2YPbldmFJyxcbiAgICAgICAgICAgICfYqti02LHbjNmG24wg2K/ZiNmI25XZhScsXG4gICAgICAgICAgICAn2YPYp9mG2YjZhtuMINuM25XaqduV2YUnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGt1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3UnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfbjNmH4oCM2YPYtNmH4oCM2YXZhdmH4oCMX9iv2YjZiNi02YfigIzZhdmF2YfigIxf2LPbjti02YfigIzZhdmF2YfigIxf2obZiNin2LHYtNmH4oCM2YXZhdmH4oCMX9m+247Zhtis2LTZh+KAjNmF2YXZh+KAjF/Zh9mH4oCM24zZhtuMX9i02YfigIzZhdmF2YfigIwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDpcbiAgICAgICAgICAgICfbjNmH4oCM2YPYtNmH4oCM2YVf2K/ZiNmI2LTZh+KAjNmFX9iz247YtNmH4oCM2YVf2obZiNin2LHYtNmH4oCM2YVf2b7bjtmG2KzYtNmH4oCM2YVf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9uMX9ivX9izX9qGX9m+X9mHX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9im247ZiNin2LHZh+KAjHzYqNmH4oCM24zYp9mG24wvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KbbjtmI2KfYsdmH4oCMLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2YfigIzbjNin2YbbjCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KbbjtmI2KfYsdmH4oCMJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KbZh+KAjNmF2LHbhiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYqNmH4oCM24zYp9mG24wg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2K/ZiNuO2YbbjiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZhNmH4oCMICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcycsXG4gICAgICAgICAgICBzOiAn2obZh+KAjNmG2K8g2obYsdmD2YfigIzbjNmH4oCM2YMnLFxuICAgICAgICAgICAgc3M6ICfahtix2YPZh+KAjCAlZCcsXG4gICAgICAgICAgICBtOiAn24zZh+KAjNmDINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgbW06ICclZCDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIGg6ICfbjNmH4oCM2YMg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgaGg6ICclZCDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBkOiAn24zZh+KAjNmDINqV24bamCcsXG4gICAgICAgICAgICBkZDogJyVkINqV24bamCcsXG4gICAgICAgICAgICBNOiAn24zZh+KAjNmDINmF2KfZhtqvJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXYp9mG2q8nLFxuICAgICAgICAgICAgeTogJ9uM2YfigIzZgyDYs9in2rUnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2rUnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLeXJneXogW2t5XVxuLy8hIGF1dGhvciA6IENoeW5neXogQXJ5c3RhbiB1dWx1IDogaHR0cHM6Ly9naXRodWIuY29tL2NoeW5neXpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rh9KvJyxcbiAgICAgICAgMTogJy3Rh9C4JyxcbiAgICAgICAgMjogJy3Rh9C4JyxcbiAgICAgICAgMzogJy3Rh9KvJyxcbiAgICAgICAgNDogJy3Rh9KvJyxcbiAgICAgICAgNTogJy3Rh9C4JyxcbiAgICAgICAgNjogJy3Rh9GLJyxcbiAgICAgICAgNzogJy3Rh9C4JyxcbiAgICAgICAgODogJy3Rh9C4JyxcbiAgICAgICAgOTogJy3Rh9GDJyxcbiAgICAgICAgMTA6ICct0YfRgycsXG4gICAgICAgIDIwOiAnLdGH0YsnLFxuICAgICAgICAzMDogJy3Rh9GDJyxcbiAgICAgICAgNDA6ICct0YfRiycsXG4gICAgICAgIDUwOiAnLdGH0q8nLFxuICAgICAgICA2MDogJy3Rh9GLJyxcbiAgICAgICAgNzA6ICct0YfQuCcsXG4gICAgICAgIDgwOiAnLdGH0LgnLFxuICAgICAgICA5MDogJy3Rh9GDJyxcbiAgICAgICAgMTAwOiAnLdGH0q8nLFxuICAgIH07XG5cbiAgICB2YXIga3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdreScsIHtcbiAgICAgICAgbW9udGhzOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GAX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9CW0LXQutGI0LXQvNCx0Lhf0JTSr9C50YjTqdC80LHSr1/QqNC10LnRiNC10LzQsdC4X9Co0LDRgNGI0LXQvNCx0Lhf0JHQtdC50YjQtdC80LHQuF/QltGD0LzQsF/QmNGI0LXQvNCx0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQltC10Lpf0JTSr9C5X9Co0LXQuV/QqNCw0YBf0JHQtdC5X9CW0YPQvF/QmNGI0LUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0JbQul/QlNC5X9Co0Llf0KjRgF/QkdC5X9CW0Lxf0JjRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdKv0LPSr9C9INGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Ct0YDRgtC10qMg0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JrQtdGH0Y3RjSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jRgtC606nQvSDQsNC/0YLQsNC90YvQvV0gZGRkZCBb0LrSr9C90q9dIFvRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDQuNGH0LjQvdC00LUnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC80YPRgNGD0L0nLFxuICAgICAgICAgICAgczogJ9Cx0LjRgNC90LXRh9C1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtOiAn0LHQuNGAINC80q/QvdOp0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIGg6ICfQsdC40YAg0YHQsNCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdCw0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHQuNGAINC60q/QvScsXG4gICAgICAgICAgICBkZDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNOiAn0LHQuNGAINCw0LknLFxuICAgICAgICAgICAgTU06ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHk6ICfQsdC40YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LbRi9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRh9C4fNGH0Yt80YfSr3zRh9GDKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEx1eGVtYm91cmdpc2ggW2xiXVxuLy8hIGF1dGhvciA6IG13ZWltZXJza2lyY2ggOiBodHRwczovL2dpdGh1Yi5jb20vbXdlaW1lcnNraXJjaFxuLy8hIGF1dGhvciA6IERhdmlkIFJhaXNvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rd2lzYXR6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlbmcgTWludXR0JywgJ2VuZ2VyIE1pbnV0dCddLFxuICAgICAgICAgICAgaDogWydlbmcgU3Rvbm4nLCAnZW5nZXIgU3Rvbm4nXSxcbiAgICAgICAgICAgIGQ6IFsnZWVuIERhZycsICdlbmdlbSBEYWcnXSxcbiAgICAgICAgICAgIE06IFsnZWUgTW91bnQnLCAnZW5nZW0gTW91bnQnXSxcbiAgICAgICAgICAgIHk6IFsnZWUgSm9lcicsICdlbmdlbSBKb2VyJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0Z1dHVyZVRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc1Bhc3RUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZpcnUgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3ZpcnVuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29yZCBiZWZvcmUgdGhlIGdpdmVuIG51bWJlciBsb3NlcyB0aGUgJy1uJyBlbmRpbmcuXG4gICAgICogZS5nLiAnYW4gMTAgRGVlZycgYnV0ICdhIDUgRGVlZydcbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1iZXIge2ludGVnZXJ9XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikge1xuICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgLy8gTmVnYXRpdmUgTnVtYmVyIC0tPiBhbHdheXMgdHJ1ZVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTApIHtcbiAgICAgICAgICAgIC8vIE9ubHkgMSBkaWdpdFxuICAgICAgICAgICAgaWYgKDQgPD0gbnVtYmVyICYmIG51bWJlciA8PSA3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwKSB7XG4gICAgICAgICAgICAvLyAyIGRpZ2l0c1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGZpcnN0RGlnaXQgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIGlmIChsYXN0RGlnaXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKGZpcnN0RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihsYXN0RGlnaXQpO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMDAwKSB7XG4gICAgICAgICAgICAvLyAzIG9yIDQgZGlnaXRzIC0tPiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBkaWdpdFxuICAgICAgICAgICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQW55dGhpbmcgbGFyZ2VyIHRoYW4gNCBkaWdpdHM6IHJlY3Vyc2l2ZWx5IGNoZWNrIGZpcnN0IG4tMyBkaWdpdHNcbiAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsYicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkZXJ6X0FicsOrbGxfTWVlX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0phbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25uZGVnX03DqWluZGVnX0TDq25zY2hkZWdfTcOrdHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTcOpLl9Ew6suX03Dqy5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTcOpX0TDq19Nw6tfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcyBbQXVlcl0nLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXV0IHVtXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNdWVyIHVtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0fDq3NjaHRlciB1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgZGF0ZSBzdHJpbmcgZm9yICdEw6tuc2NoZGVnJyAoVHVlc2RheSkgYW5kICdEb25uZXNjaGRlZycgKFRodXJzZGF5KSBkdWUgdG8gcGhvbm9sb2dpY2FsIHJ1bGVcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlbl0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVdIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IHByb2Nlc3NGdXR1cmVUaW1lLFxuICAgICAgICAgICAgcGFzdDogcHJvY2Vzc1Bhc3RUaW1lLFxuICAgICAgICAgICAgczogJ2UgcHVlciBTZWtvbm5lbicsXG4gICAgICAgICAgICBzczogJyVkIFNla29ubmVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0b25uZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiAnJWQgRGVlZycsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06ICclZCBNw6lpbnQnLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiAnJWQgSm9lcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTGFvIFtsb11cbi8vISBhdXRob3IgOiBSeWFuIEhhcnQgOiBodHRwczovL2dpdGh1Yi5jb20vcnlhbmhhcnQyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsbycsIHtcbiAgICAgICAgbW9udGhzOiAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Lqt4Lqy4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C6l1/guohf4Lqt4LqEX+C6nl/gup7guqtf4Lqq4LqBX+C6qicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICfguqfgurHguplkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C6leC6reC6meC7gOC6iuC6u+C7ieC6snzgupXguq3gupngu4HguqXguocvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4Dguorgurvgu4ngurInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C6oeC6t+C7ieC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vguqHgurfgu4nguq3gurfgu4jgupngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+C6p+C6seC6mV1kZGRkW+C7nOC7ieC6suC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vguqHgurfgu4nguqfgurLgupngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C6p+C6seC6mV1kZGRkW+C7geC6peC7ieC6p+C6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfguq3gurXguoEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVz4Lqc4LuI4Lqy4LqZ4Lqh4LqyJyxcbiAgICAgICAgICAgIHM6ICfguprgu43gu4jgu4Dgupfgurvgu4jgurLgu4PgupTguqfgurTgupngurLgupfgurUnLFxuICAgICAgICAgICAgc3M6ICclZCDguqfgurTgupngurLgupfgurUnLFxuICAgICAgICAgICAgbTogJzEg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIGg6ICcxIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBoaDogJyVkIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBkOiAnMSDguqHgurfgu4knLFxuICAgICAgICAgICAgZGQ6ICclZCDguqHgurfgu4knLFxuICAgICAgICAgICAgTTogJzEg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIHk6ICcxIOC6m+C6tScsXG4gICAgICAgICAgICB5eTogJyVkIOC6m+C6tScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8o4LqX4Lq14LuIKVxcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuICfgupfgurXgu4gnICsgbnVtYmVyO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IExpdGh1YW5pYW4gW2x0XVxuLy8hIGF1dGhvciA6IE1pbmRhdWdhcyBNb3rFq3JhcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tbW96dXJhc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHVuaXRzID0ge1xuICAgICAgICBzczogJ3Nla3VuZMSXX3Nla3VuZMW+acWzX3Nla3VuZGVzJyxcbiAgICAgICAgbTogJ21pbnV0xJdfbWludXTEl3NfbWludXTEmScsXG4gICAgICAgIG1tOiAnbWludXTEl3NfbWludcSNacWzX21pbnV0ZXMnLFxuICAgICAgICBoOiAndmFsYW5kYV92YWxhbmRvc192YWxhbmTEhScsXG4gICAgICAgIGhoOiAndmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMnLFxuICAgICAgICBkOiAnZGllbmFfZGllbm9zX2RpZW7EhScsXG4gICAgICAgIGRkOiAnZGllbm9zX2RpZW7Fs19kaWVuYXMnLFxuICAgICAgICBNOiAnbcSXbnVvX23El25lc2lvX23El25lc8SvJyxcbiAgICAgICAgTU06ICdtxJduZXNpYWlfbcSXbmVzacWzX23El25lc2l1cycsXG4gICAgICAgIHk6ICdtZXRhaV9tZXTFs19tZXR1cycsXG4gICAgICAgIHl5OiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgIH07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiAna2VsaW9zIHNla3VuZMSXcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna2VsacWzIHNla3VuZMW+acWzJyA6ICdrZWxpYXMgc2VrdW5kZXMnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgPyBmb3JtcyhrZXkpWzBdXG4gICAgICAgICAgICA6IGlzRnV0dXJlXG4gICAgICAgICAgICAgID8gZm9ybXMoa2V5KVsxXVxuICAgICAgICAgICAgICA6IGZvcm1zKGtleSlbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWwobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMCB8fCAobnVtYmVyID4gMTAgJiYgbnVtYmVyIDwgMjApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmb3JtcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHVuaXRzW2tleV0uc3BsaXQoJ18nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJlc3VsdCArIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5WzBdLCBpc0Z1dHVyZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgZm9ybXMoa2V5KVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGx0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHQnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnc2F1c2lzX3Zhc2FyaXNfa292YXNfYmFsYW5kaXNfZ2VndcW+xJdfYmlyxb5lbGlzX2xpZXBhX3J1Z3Bqxat0aXNfcnVnc8SXamlzX3NwYWxpc19sYXBrcml0aXNfZ3J1b2Rpcycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT98TU1NTT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK0Rbb0RdPy8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnc2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzZWttYWRpZW7Er19waXJtYWRpZW7Er19hbnRyYWRpZW7Er190cmXEjWlhZGllbsSvX2tldHZpcnRhZGllbsSvX3Blbmt0YWRpZW7Er1/FoWXFoXRhZGllbsSvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvZGRkZCBISDptbS8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl/FoGXFoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTX1BfQV9UX0tfUG5fxaAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgTExMOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbxaBpYW5kaWVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1J5dG9qXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tWYWthcl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbUHJhxJdqdXPEr10gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3BvICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmllxaEgJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS1vamkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy1vamknO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTGF0dmlhbiBbbHZdXG4vLyEgYXV0aG9yIDogS3Jpc3RhcHMgS2FybHNvbnMgOiBodHRwczovL2dpdGh1Yi5jb20vc2tha3JpXG4vLyEgYXV0aG9yIDogSsSBbmlzIEVsbWVyaXMgOiBodHRwczovL2dpdGh1Yi5jb20vSmFuaXNFXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgIHNzOiAnc2VrdW5kZXNfc2VrdW5kxJNtX3Nla3VuZGVfc2VrdW5kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIG06ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW06ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgaDogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGhoOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgZDogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgZGQ6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIE06ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpJy5zcGxpdCgnXycpLFxuICAgICAgICBNTTogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgIHk6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHl5OiAnZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpJy5zcGxpdCgnXycpLFxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpdGhvdXRTdWZmaXggYm9vbGVhbiB0cnVlID0gYSBsZW5ndGggb2YgdGltZTsgZmFsc2UgPSBiZWZvcmUvYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JtYXQoZm9ybXMsIG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVcIiwgXCIzIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzJdIDogZm9ybXNbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZXNcIiBhcyBpbiBcInDEk2MgMjEgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIC8vIEUuZy4gXCIzIG1pbsWrdMSTbVwiIGFzIGluIFwicMSTYyAzIG1pbsWrdMSTbVwiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IGZvcm1zWzFdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2Rhxb5hcyBzZWt1bmRlcycgOiAnZGHFvsSBbSBzZWt1bmTEk20nO1xuICAgIH1cblxuICAgIHZhciBsdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x2Jywge1xuICAgICAgICBtb250aHM6ICdqYW52xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpzX2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBkZGRkLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8Wgb2RpZW4gcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbUsSrdCBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tWYWthciBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3DEk2MgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3Bpcm1zICVzJyxcbiAgICAgICAgICAgIHM6IHJlbGF0aXZlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNb250ZW5lZ3JpbiBbbWVdXG4vLyEgYXV0aG9yIDogTWlvZHJhZyBOaWthxI0gPG1pb2RyYWdAcmVzdGFydGl0Lm1lPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taW9kcmFnbmlrYWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZCcsICdzZWt1bmRhJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE1NOiBbJ21qZXNlYycsICdtamVzZWNhJywgJ21qZXNlY2knXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGluYScsICdnb2RpbmUnLCAnZ29kaW5hJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICA/IHdvcmRLZXlbMF1cbiAgICAgICAgICAgICAgICA6IG51bWJlciA+PSAyICYmIG51bWJlciA8PSA0XG4gICAgICAgICAgICAgICAgICA/IHdvcmRLZXlbMV1cbiAgICAgICAgICAgICAgICAgIDogd29yZEtleVsyXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBtZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21lJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzanV0cmEgdV0gTFQnLFxuXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtuZWRqZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkamVsamthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzcmlqZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJpamUgJXMnLFxuICAgICAgICAgICAgczogJ25la29saWtvIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICdkYW4nLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21qZXNlYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYW9yaSBbbWldXG4vLyEgYXV0aG9yIDogSm9obiBDb3JyaWdhbiA8cm9iYmllY2xvc2V0QGdtYWlsLmNvbT4gOiBodHRwczovL2dpdGh1Yi5jb20vam9obmlkZWFsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbWkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaScsIHtcbiAgICAgICAgbW9udGhzOiAnS29oaS10xIF0ZV9IdWktdGFuZ3VydV9Qb3V0xastdGUtcmFuZ2lfUGFlbmdhLXdoxIF3aMSBX0hhcmF0dWFfUGlwaXJpX0jFjW5nb2luZ29pX0hlcmUtdHVyaS1rxY1rxIFfTWFodXJ1X1doaXJpbmdhLcSBLW51a3VfV2hpcmluZ2EtxIEtcmFuZ2lfSGFraWhlYScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnS29oaV9IdWlfUG91X1BhZV9IYXJhX1BpcGlfSMWNbmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1JlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDJ9L2ksXG4gICAgICAgIHdlZWtkYXlzOiAnUsSBdGFwdV9NYW5lX1TFq3JlaV9XZW5lcmVpX1TEgWl0ZV9QYXJhaXJlX0jEgXRhcmVpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbaV0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtpXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2kgdGVpZSBtYWhhbmEsIGldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXBvcG8gaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtpXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2luYW5haGkgaV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt3aGFrYW11dHVuZ2EgaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpIHJvdG8gaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgaSBtdWEnLFxuICAgICAgICAgICAgczogJ3RlIGjEk2tvbmEgcnVhcnVhJyxcbiAgICAgICAgICAgIHNzOiAnJWQgaMSTa29uYScsXG4gICAgICAgICAgICBtOiAnaGUgbWVuZXRpJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuZXRpJyxcbiAgICAgICAgICAgIGg6ICd0ZSBoYW9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhhb3JhJyxcbiAgICAgICAgICAgIGQ6ICdoZSByYScsXG4gICAgICAgICAgICBkZDogJyVkIHJhJyxcbiAgICAgICAgICAgIE06ICdoZSBtYXJhbWEnLFxuICAgICAgICAgICAgTU06ICclZCBtYXJhbWEnLFxuICAgICAgICAgICAgeTogJ2hlIHRhdScsXG4gICAgICAgICAgICB5eTogJyVkIHRhdScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFjZWRvbmlhbiBbbWtdXG4vLyEgYXV0aG9yIDogQm9yaXNsYXYgTWlja292IDogaHR0cHM6Ly9naXRodWIuY29tL0IwazBcbi8vISBhdXRob3IgOiBTYXNoa28gVG9kb3JvdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ia3ljZWhcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21rJywge1xuICAgICAgICBtb250aHM6ICfRmNCw0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGYX9GY0YPQvdC4X9GY0YPQu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GY0LDQvV/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10LvQsF/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtC+0Lpf0L/QtdGC0L7Qul/RgdCw0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0LVf0YfQtdGCX9C/0LXRgl/RgdCw0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L1lX9C/b1/QstGCX9GB0YBf0YfQtV/Qv9C1X9GBYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JTQtdC90LXRgSDQstC+XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cj0YLRgNC1INCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9CS0L5dIGRkZGQgW9Cy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JLRh9C10YDQsCDQstC+XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQsNGC0LBdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQuNC+0YJdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQv9GA0LXQtCAlcycsXG4gICAgICAgICAgICBzOiAn0L3QtdC60L7Qu9C60YMg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtOiAn0LXQtNC90LAg0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGg6ICfQtdC00LXQvSDRh9Cw0YEnLFxuICAgICAgICAgICAgaGg6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkOiAn0LXQtNC10L0g0LTQtdC9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LTQtdC90LAnLFxuICAgICAgICAgICAgTTogJ9C10LTQtdC9INC80LXRgdC10YYnLFxuICAgICAgICAgICAgTU06ICclZCDQvNC10YHQtdGG0LgnLFxuICAgICAgICAgICAgeTogJ9C10LTQvdCwINCz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eTogJyVkINCz0L7QtNC40L3QuCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFsYXlhbGFtIFttbF1cbi8vISBhdXRob3IgOiBGbG95ZCBQaW5rIDogaHR0cHM6Ly9naXRodWIuY29tL2Zsb3lkcGlua1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWwnLCB7XG4gICAgICAgIG1vbnRoczogJ+C0nOC0qOC1geC0teC0sOC0v1/gtKvgtYbgtKzgtY3gtLDgtYHgtLXgtLDgtL9f4LSu4LS+4LW84LSa4LWN4LSa4LWNX+C0j+C0quC1jeC0sOC0v+C1vV/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iF/gtJPgtJfgtLjgtY3gtLHgtY3gtLHgtY1f4LS44LWG4LSq4LWN4LSx4LWN4LSx4LSC4LSs4LW8X+C0kuC0leC1jeC0n+C1i+C0rOC1vF/gtKjgtLXgtILgtKzgtbxf4LSh4LS/4LS44LSC4LSs4LW8Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgtJzgtKjgtYEuX+C0q+C1huC0rOC1jeC0sOC1gS5f4LSu4LS+4LW8Ll/gtI/gtKrgtY3gtLDgtL8uX+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWILl/gtJPgtJcuX+C0uOC1huC0quC1jeC0seC1jeC0sS5f4LSS4LSV4LWN4LSf4LWLLl/gtKjgtLXgtIIuX+C0oeC0v+C0uOC0gi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4LSe4LS+4LSv4LSx4LS+4LS04LWN4LSaX+C0pOC0v+C0meC1jeC0leC0s+C0vuC0tOC1jeC0ml/gtJrgtYrgtLXgtY3gtLXgtL7gtLTgtY3gtJpf4LSs4LWB4LSn4LSo4LS+4LS04LWN4LSaX+C0teC1jeC0r+C0vuC0tOC0vuC0tOC1jeC0ml/gtLXgtYbgtLPgtY3gtLPgtL/gtK/gtL7gtLTgtY3gtJpf4LS24LSo4LS/4LSv4LS+4LS04LWN4LSaJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgtJ7gtL7gtK/gtbxf4LSk4LS/4LSZ4LWN4LSV4LW+X+C0muC1iuC0teC1jeC0tV/gtKzgtYHgtKfgtbtf4LS14LWN4LSv4LS+4LS04LSCX+C0teC1huC0s+C1jeC0s+C0v1/gtLbgtKjgtL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LSe4LS+X+C0pOC0v1/gtJrgtYpf4LSs4LWBX+C0teC1jeC0r+C0vl/gtLXgtYZf4LS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gLeC0qOC1gScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MgLeC0qOC1gScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0gLeC0qOC1gScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4LSH4LSo4LWN4LSo4LWNXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C0qOC0vuC0s+C1hl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C0h+C0qOC1jeC0qOC0suC1hl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4LSV4LS04LS/4LSe4LWN4LSeXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOC0leC0tOC0v+C0nuC1jeC0nuC1jScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4LSu4LWB4LW74LSq4LWNJyxcbiAgICAgICAgICAgIHM6ICfgtIXgtb3gtKog4LSo4LS/4LSu4LS/4LS34LSZ4LWN4LSZ4LW+JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4LS44LWG4LSV4LWN4LSV4LW74LSh4LWNJyxcbiAgICAgICAgICAgIG06ICfgtJLgtLDgtYEg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNJyxcbiAgICAgICAgICAgIGg6ICfgtJLgtLDgtYEg4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8JyxcbiAgICAgICAgICAgIGQ6ICfgtJLgtLDgtYEg4LSm4LS/4LS14LS44LSCJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4LSm4LS/4LS14LS44LSCJyxcbiAgICAgICAgICAgIE06ICfgtJLgtLDgtYEg4LSu4LS+4LS44LSCJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LSu4LS+4LS44LSCJyxcbiAgICAgICAgICAgIHk6ICfgtJLgtLDgtYEg4LS14LW84LS34LSCJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4LS14LW84LS34LSCJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C0sOC0vuC0pOC1jeC0sOC0v3zgtLDgtL7gtLXgtL/gtLLgtYZ84LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jXzgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIJ84LSw4LS+4LSk4LWN4LSw4LS/L2ksXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgtLDgtL7gtKTgtY3gtLDgtL8nICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIInXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtLXgtL/gtLLgtYYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNb25nb2xpYW4gW21uXVxuLy8hIGF1dGhvciA6IEphdmtobGFudHVncyBOeWFtZG9yaiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXZraGFhbmo3XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC0JyA6ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC00YvQvSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdC10LrRg9C90LQnIDogJyDRgdC10LrRg9C90LTRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC80LjQvdGD0YInIDogJyDQvNC40L3Rg9GC0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRhtCw0LMnIDogJyDRhtCw0LPQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg06nQtNOp0YAnIDogJyDTqdC00YDQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YHQsNGAJyA6ICcg0YHQsNGA0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDQttC40LsnIDogJyDQttC40LvQuNC50L0nKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21uJywge1xuICAgICAgICBtb250aHM6ICfQndGN0LPQtNKv0LPRjdGN0YAg0YHQsNGAX9Cl0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgF/Qk9GD0YDQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/QlNOp0YDTqdCy0LTSr9Cz0Y3RjdGAINGB0LDRgF/QotCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CX0YPRgNCz0LDQtNGD0LPQsNCw0YAg0YHQsNGAX9CU0L7Qu9C00YPQs9Cw0LDRgCDRgdCw0YBf0J3QsNC50LzQtNGD0LPQsNCw0YAg0YHQsNGAX9CV0YHQtNKv0LPRjdGN0YAg0YHQsNGAX9CQ0YDQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/QkNGA0LLQsNC9INC90Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCy0LDQvSDRhdC+0ZHRgNC00YPQs9Cw0LDRgCDRgdCw0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJzEg0YHQsNGAXzIg0YHQsNGAXzMg0YHQsNGAXzQg0YHQsNGAXzUg0YHQsNGAXzYg0YHQsNGAXzcg0YHQsNGAXzgg0YHQsNGAXzkg0YHQsNGAXzEwINGB0LDRgF8xMSDRgdCw0YBfMTIg0YHQsNGAJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn0J3Rj9C8X9CU0LDQstCw0LBf0JzRj9Cz0LzQsNGAX9Cb0YXQsNCz0LLQsF/Qn9Kv0YDRjdCyX9CR0LDQsNGB0LDQvV/QkdGP0LzQsdCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0J3Rj9C8X9CU0LDQsl/QnNGP0LNf0JvRhdCwX9Cf0q/RgF/QkdCw0LBf0JHRj9C8Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Cd0Y9f0JTQsF/QnNGPX9Cb0YVf0J/Sr1/QkdCwX9CR0Y8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIFlZWVkg0L7QvdGLIE1NTU3Ri9C9IEQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0q7TqHzSrtClL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn0q7QpSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtOoJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtClJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb06jQvdOp06nQtNOp0YBdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JzQsNGA0LPQsNCw0YhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9CY0YDRjdGFXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb06jRh9C40LPQtNOp0YBdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Oo0L3Qs9Op0YDRgdOp0L1dIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDQtNCw0YDQsNCwJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDTqdC80L3TqScsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDTqdC006nRgC8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDTqdC006nRgCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYXJhdGhpIFttcl1cbi8vISBhdXRob3IgOiBIYXJzaGFkIEthbGUgOiBodHRwczovL2dpdGh1Yi5jb20va2FsZWh2XG4vLyEgYXV0aG9yIDogVml2ZWsgQXRoYWx5ZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS92bmF0aGFseWVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KWnJyxcbiAgICAgICAgICAgIDI6ICfgpagnLFxuICAgICAgICAgICAgMzogJ+ClqScsXG4gICAgICAgICAgICA0OiAn4KWqJyxcbiAgICAgICAgICAgIDU6ICfgpasnLFxuICAgICAgICAgICAgNjogJ+ClrCcsXG4gICAgICAgICAgICA3OiAn4KWtJyxcbiAgICAgICAgICAgIDg6ICfgpa4nLFxuICAgICAgICAgICAgOTogJ+ClrycsXG4gICAgICAgICAgICAwOiAn4KWmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAgICAgJ+Clpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZU1yKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gJyc7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOClh+CkleCkguCkpic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkuOClh+CkleCkguCkpic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSVIOCkruCkv+CkqOCkv+Cknyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+Clhyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSVIOCkpOCkvuCkuCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpOCkvuCkuCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSVIOCkpuCkv+CkteCkuCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSVIOCkruCkueCkv+CkqOCkvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOClhyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSVIOCkteCksOCljeCktyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkteCksOCljeCkt+Clhyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKbgpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKbgpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CkleCkviDgpK7gpL/gpKjgpL/gpJ/gpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CkleCkviDgpKTgpL7gpLjgpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKTgpL7gpLjgpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CkleCkviDgpKbgpL/gpLXgpLjgpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLjgpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CkleCkviDgpK7gpLngpL/gpKjgpY3gpK/gpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpY3gpK/gpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CkleCkviDgpLXgpLDgpY3gpLfgpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpL7gpIInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIG1yID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXInLCB7XG4gICAgICAgIG1vbnRoczogJ+CknOCkvuCkqOClh+CkteCkvuCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7gpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOCkv+Cksl/gpK7gpYdf4KSc4KWC4KSoX+CknOClgeCksuCliF/gpJHgpJfgpLjgpY3gpJ9f4KS44KSq4KWN4KSf4KWH4KSC4KSs4KSwX+CkkeCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLBf4KSh4KS/4KS44KWH4KSC4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgpJzgpL7gpKjgpYcuX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaLl/gpI/gpKrgpY3gpLDgpL8uX+CkruClhy5f4KSc4KWC4KSoLl/gpJzgpYHgpLLgpYguX+CkkeCkly5f4KS44KSq4KWN4KSf4KWH4KSCLl/gpJHgpJXgpY3gpJ/gpYsuX+CkqOCli+CkteCljeCkueClh+Ckgi5f4KSh4KS/4KS44KWH4KSCLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSz4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSzX+CkrOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCkvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpIngpKbgpY3gpK/gpL5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpJXgpL7gpLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CkruCkvuCkl+ClgOCksl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+CkruCkp+CljeCkr+ClhycsXG4gICAgICAgICAgICBwYXN0OiAnJXPgpKrgpYLgpLDgpY3gpLXgpYAnLFxuICAgICAgICAgICAgczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHk6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSq4KS54KS+4KSf4KWHfOCkuOCkleCkvuCks+ClgHzgpKbgpYHgpKrgpL7gpLDgpYB84KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAfOCksOCkvuCkpOCljeCksOClgC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CkquCkueCkvuCkn+ClhycgfHwgbWVyaWRpZW0gPT09ICfgpLjgpJXgpL7gpLPgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4KSm4KWB4KSq4KS+4KSw4KWAJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KWN4KSw4KWAJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPj0gMCAmJiBob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSq4KS54KS+4KSf4KWHJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpJXgpL7gpLPgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuClgeCkquCkvuCksOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpY3gpLDgpYAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFsYXkgW21zLW15XVxuLy8hIG5vdGUgOiBERVBSRUNBVEVELCB0aGUgY29ycmVjdCBvbmUgaXMgW21zXVxuLy8hIGF1dGhvciA6IFdlbGRhbiBKYW1pbGkgOiBodHRwczovL2dpdGh1Yi5jb20vd2VsZGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbXNNeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zLW15Jywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0FoX0lzX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXx0ZW5nYWhhcml8cGV0YW5nfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICd0ZW5nYWhhcmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3BldGFuZycgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlbG1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbGFtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHM6ICdiZWJlcmFwYSBzYWF0JyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBtOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbml0JyxcbiAgICAgICAgICAgIGg6ICdzZWphbScsXG4gICAgICAgICAgICBoaDogJyVkIGphbScsXG4gICAgICAgICAgICBkOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFodW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXNNeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheSBbbXNdXG4vLyEgYXV0aG9yIDogV2VsZGFuIEphbWlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWxkYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0FoX0lzX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXx0ZW5nYWhhcml8cGV0YW5nfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICd0ZW5nYWhhcmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3BldGFuZycgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0tlbG1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbGFtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHM6ICdiZWJlcmFwYSBzYWF0JyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBtOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbml0JyxcbiAgICAgICAgICAgIGg6ICdzZWphbScsXG4gICAgICAgICAgICBoaDogJyVkIGphbScsXG4gICAgICAgICAgICBkOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFodW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFsdGVzZSAoTWFsdGEpIFttdF1cbi8vISBhdXRob3IgOiBBbGVzc2FuZHJvIE1hcnVjY2lhIDogaHR0cHM6Ly9naXRodWIuY29tL2FsZXNtYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG10ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXQnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X8SgdW5qdV9MdWxqdV9Bd3dpc3N1X1NldHRlbWJydV9PdHR1YnJ1X05vdmVtYnJ1X0RpxItlbWJydScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRnJhX01hcl9BcHJfTWVqX8SgdW5fTHVsX0F3d19TZXRfT3R0X05vdl9EacSLJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdJbC3EpmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnxKdhX0lsLcSmYW1pc19JbC3EoGltZ8SnYV9Jcy1TaWJ0Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfEpmFkX1RuZV9UbGlfRXJiX8SmYW1fxKBpbV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnxKZhX1RuX1RsX0VyX8SmYV/EoGlfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSWxsdW0gZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0fEp2FkYSBmaWwtXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZmlsLV1MVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lsLWJpZXJhxKcgZmlsLV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xpIGfEp2FkZGFdIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZuKAmSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgaWx1JyxcbiAgICAgICAgICAgIHM6ICdmdGl0IHNla29uZGknLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRpJyxcbiAgICAgICAgICAgIG06ICdtaW51dGEnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGknLFxuICAgICAgICAgICAgaDogJ3NpZWfEp2EnLFxuICAgICAgICAgICAgaGg6ICclZCBzaWVnxKdhdCcsXG4gICAgICAgICAgICBkOiAnxKF1cm5hdGEnLFxuICAgICAgICAgICAgZGQ6ICclZCDEoXJhbmV0JyxcbiAgICAgICAgICAgIE06ICd4YWhhcicsXG4gICAgICAgICAgICBNTTogJyVkIHhodXInLFxuICAgICAgICAgICAgeTogJ3NlbmEnLFxuICAgICAgICAgICAgeXk6ICclZCBzbmknLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG10O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJ1cm1lc2UgW215XVxuLy8hIGF1dGhvciA6IFNxdWFyIHRlYW0sIG15c3F1YXIuY29tXG4vLyEgYXV0aG9yIDogRGF2aWQgUm9zc2VsbGF0IDogaHR0cHM6Ly9naXRodWIuY29tL2dob2xhZHJcbi8vISBhdXRob3IgOiBUaW4gQXVuZyBMaW4gOiBodHRwczovL2dpdGh1Yi5jb20vdGhhbnlhd3ppbm1pblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfhgYEnLFxuICAgICAgICAgICAgMjogJ+GBgicsXG4gICAgICAgICAgICAzOiAn4YGDJyxcbiAgICAgICAgICAgIDQ6ICfhgYQnLFxuICAgICAgICAgICAgNTogJ+GBhScsXG4gICAgICAgICAgICA2OiAn4YGGJyxcbiAgICAgICAgICAgIDc6ICfhgYcnLFxuICAgICAgICAgICAgODogJ+GBiCcsXG4gICAgICAgICAgICA5OiAn4YGJJyxcbiAgICAgICAgICAgIDA6ICfhgYAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4YGBJzogJzEnLFxuICAgICAgICAgICAgJ+GBgic6ICcyJyxcbiAgICAgICAgICAgICfhgYMnOiAnMycsXG4gICAgICAgICAgICAn4YGEJzogJzQnLFxuICAgICAgICAgICAgJ+GBhSc6ICc1JyxcbiAgICAgICAgICAgICfhgYYnOiAnNicsXG4gICAgICAgICAgICAn4YGHJzogJzcnLFxuICAgICAgICAgICAgJ+GBiCc6ICc4JyxcbiAgICAgICAgICAgICfhgYknOiAnOScsXG4gICAgICAgICAgICAn4YGAJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIG15ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXknLCB7XG4gICAgICAgIG1vbnRoczogJ+GAh+GAlOGAuuGAlOGAneGAq+GAm+GArl/hgJbhgLHhgJbhgLHhgKzhgLrhgJ3hgKvhgJvhgK5f4YCZ4YCQ4YC6X+GAp+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAh+GAsOGAnOGAreGAr+GAhOGAul/hgJ7hgLzhgILhgK/hgJDhgLpf4YCF4YCA4YC64YCQ4YCE4YC64YCY4YCsX+GAoeGAseGArOGAgOGAuuGAkOGAreGAr+GAmOGArF/hgJThgK3hgK/hgJ3hgIThgLrhgJjhgKxf4YCS4YCu4YCH4YCE4YC64YCY4YCsJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GAh+GAlOGAul/hgJbhgLFf4YCZ4YCQ4YC6X+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAnOGAreGAr+GAhOGAul/hgJ7hgLxf4YCF4YCA4YC6X+GAoeGAseGArOGAgOGAul/hgJThgK3hgK9f4YCS4YCuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ+GAkOGAlOGAhOGAuuGAueGAguGAlOGAveGAsV/hgJDhgJThgIThgLrhgLnhgJzhgKxf4YCh4YCE4YC64YC54YCC4YCrX+GAl+GAr+GAkuGAueGAk+GAn+GAsOGAuF/hgIDhgLzhgKzhgJ7hgJXhgJDhgLHhgLhf4YCe4YCx4YCs4YCA4YC84YCsX+GAheGAlOGAsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG5cbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GAmuGAlOGAsS5dIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4YCZ4YCU4YCA4YC64YCW4YC84YCU4YC6XSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhgJnhgJThgLEu4YCAXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vhgJXhgLzhgK7hgLjhgIHhgLLhgLfhgJ7hgLHhgKxdIGRkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfhgJzhgKzhgJnhgIrhgLrhgLcgJXMg4YCZ4YC+4YCsJyxcbiAgICAgICAgICAgIHBhc3Q6ICfhgJzhgL3hgJThgLrhgIHhgLLhgLfhgJ7hgLHhgKwgJXMg4YCAJyxcbiAgICAgICAgICAgIHM6ICfhgIXhgIDhgLnhgIDhgJThgLou4YCh4YCU4YCK4YC64YC44YCE4YCa4YC6JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4YCF4YCA4YC54YCA4YCU4YC34YC6JyxcbiAgICAgICAgICAgIG06ICfhgJDhgIXhgLrhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgbW06ICclZCDhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgaDogJ+GAkOGAheGAuuGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBoaDogJyVkIOGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBkOiAn4YCQ4YCF4YC64YCb4YCA4YC6JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YCb4YCA4YC6JyxcbiAgICAgICAgICAgIE06ICfhgJDhgIXhgLrhgJwnLFxuICAgICAgICAgICAgTU06ICclZCDhgJwnLFxuICAgICAgICAgICAgeTogJ+GAkOGAheGAuuGAlOGAvuGAheGAuicsXG4gICAgICAgICAgICB5eTogJyVkIOGAlOGAvuGAheGAuicsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vhgYHhgYLhgYPhgYThgYXhgYbhgYfhgYjhgYnhgYBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBteTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOb3J3ZWdpYW4gQm9rbcOlbCBbbmJdXG4vLyEgYXV0aG9ycyA6IEVzcGVuIEhvdmxhbmRzZGFsIDogaHR0cHM6Ly9naXRodWIuY29tL3JleHhhcnNcbi8vISAgICAgICAgICAgU2lndXJkIEdhcnRtYW5uIDogaHR0cHM6Ly9naXRodWIuY29tL3NpZ3VyZGdhXG4vLyEgICAgICAgICAgIFN0ZXBoZW4gUmFtdGh1biA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwaGVucmFtdGh1blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG5iID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3PDuC5fbWEuX3RpLl9vbi5fdG8uX2ZyLl9sw7guJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3PDuF9tYV90aV9vbl90b19mcl9sw7gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2kgZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tpIG1vcmdlbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc2lkZW4nLFxuICAgICAgICAgICAgczogJ25vZW4gc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZXR0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dGVyJyxcbiAgICAgICAgICAgIGg6ICfDqW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQ6ICfDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZXInLFxuICAgICAgICAgICAgdzogJ8OpbiB1a2UnLFxuICAgICAgICAgICAgd3c6ICclZCB1a2VyJyxcbiAgICAgICAgICAgIE06ICfDqW4gbcOlbmVkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeTogJ2V0dCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5iO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5lcGFsZXNlIFtuZV1cbi8vISBhdXRob3IgOiBzdXZhc2ggOiBodHRwczovL2dpdGh1Yi5jb20vc3V2YXNoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+ClpycsXG4gICAgICAgICAgICAyOiAn4KWoJyxcbiAgICAgICAgICAgIDM6ICfgpaknLFxuICAgICAgICAgICAgNDogJ+ClqicsXG4gICAgICAgICAgICA1OiAn4KWrJyxcbiAgICAgICAgICAgIDY6ICfgpawnLFxuICAgICAgICAgICAgNzogJ+ClrScsXG4gICAgICAgICAgICA4OiAn4KWuJyxcbiAgICAgICAgICAgIDk6ICfgpa8nLFxuICAgICAgICAgICAgMDogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgbmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduZScsIHtcbiAgICAgICAgbW9udGhzOiAn4KSc4KSo4KS14KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/4KSyX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+Ckt+CljeCkn1/gpLjgpYfgpKrgpY3gpJ/gpYfgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkreClh+CkruCljeCkrOCksF/gpKHgpL/gpLjgpYfgpK7gpY3gpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkqC5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/Ll/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiC5f4KSF4KSXLl/gpLjgpYfgpKrgpY3gpJ8uX+CkheCkleCljeCkn+Cliy5f4KSo4KWL4KSt4KWHLl/gpKHgpL/gpLjgpYcuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSG4KSH4KSk4KSs4KS+4KSwX+CkuOCli+CkruCkrOCkvuCksF/gpK7gpJngpY3gpJfgpLLgpKzgpL7gpLBf4KSs4KWB4KSn4KSs4KS+4KSwX+CkrOCkv+CkueCkv+CkrOCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpKzgpL7gpLBf4KS24KSo4KS/4KSs4KS+4KSwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpIYuX+CkuOCliy5f4KSu4KSCLl/gpKzgpYEuX+CkrOCkvy5f4KS24KWBLl/gpLYuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0HgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTOiAnQeCkleCliyBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpL984KSs4KS/4KS54KS+4KSofOCkpuCkv+CkieCkgeCkuOCli3zgpLjgpL7gpIHgpJ0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKzgpL/gpLngpL7gpKgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KS/4KSJ4KSB4KS44KWLJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpIHgpJ0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKzgpL/gpLngpL7gpKgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkv+CkieCkgeCkuOCliyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSB4KSdJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSt4KWL4KSy4KS/XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgpIbgpIngpIHgpKbgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpLngpL/gpJzgpYtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Ckl+Ckj+CkleCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KS+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpIXgpJfgpL7gpKHgpL8nLFxuICAgICAgICAgICAgczogJ+CkleClh+CkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3M6ICclZCDgpLjgpYfgpJXgpYfgpKPgpY3gpKEnLFxuICAgICAgICAgICAgbTogJ+Ckj+CklSDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgaDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgZDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTTogJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgTU06ICclZCDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgeTogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXk6ICclZCDgpKzgpLDgpY3gpLcnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRHV0Y2ggKEJlbGdpdW0pIFtubC1iZV1cbi8vISBhdXRob3IgOiBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pvcmlzcm9saW5nXG4vLyEgYXV0aG9yIDogSmFjb2IgTWlkZGFnIDogaHR0cHM6Ly9naXRodWIuY29tL21pZGRhZ2pcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9eKG1hYXJ0fG1ydFxcLj8pJC9pLFxuICAgICAgICAgICAgL15hcHIvaSxcbiAgICAgICAgICAgIC9ebWVpJC9pLFxuICAgICAgICAgICAgL15qdW5baS5dPyQvaSxcbiAgICAgICAgICAgIC9eanVsW2kuXT8kL2ksXG4gICAgICAgICAgICAvXmF1Zy9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2t0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kZWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sQmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubC1iZScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3pvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGdlbGVkZW4nLFxuICAgICAgICAgICAgczogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbTogJ8Opw6luIG1pbnV1dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaDogJyVkIHV1cicsXG4gICAgICAgICAgICBkOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTTogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5OiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eTogJyVkIGphYXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmxCZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBEdXRjaCBbbmxdXG4vLyEgYXV0aG9yIDogSm9yaXMgUsO2bGluZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3Jpc3JvbGluZ1xuLy8hIGF1dGhvciA6IEphY29iIE1pZGRhZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWRkYWdqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9XG4gICAgICAgICAgICAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9XG4gICAgICAgICAgICAnamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15qYW4vaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXihtYWFydHxtcnRcXC4/KSQvaSxcbiAgICAgICAgICAgIC9eYXByL2ksXG4gICAgICAgICAgICAvXm1laSQvaSxcbiAgICAgICAgICAgIC9eanVuW2kuXT8kL2ksXG4gICAgICAgICAgICAvXmp1bFtpLl0/JC9pLFxuICAgICAgICAgICAgL15hdWcvaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9rdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGVjL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaTtcblxuICAgIHZhciBubCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQ6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICB3OiAnw6nDqW4gd2VlaycsXG4gICAgICAgICAgICB3dzogJyVkIHdla2VuJyxcbiAgICAgICAgICAgIE06ICfDqcOpbiBtYWFuZCcsXG4gICAgICAgICAgICBNTTogJyVkIG1hYW5kZW4nLFxuICAgICAgICAgICAgeTogJ8Opw6luIGphYXInLFxuICAgICAgICAgICAgeXk6ICclZCBqYWFyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwID8gJ3N0ZScgOiAnZGUnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5sO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE55bm9yc2sgW25uXVxuLy8hIGF1dGhvcnMgOiBodHRwczovL2dpdGh1Yi5jb20vbWVjaHV3aW5kXG4vLyEgICAgICAgICAgIFN0ZXBoZW4gUmFtdGh1biA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwaGVucmFtdGh1blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG5uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbm4nLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnc3VuZGFnX23DpW5kYWdfdHlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sYXVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc3UuX23DpS5fdHkuX29uLl90by5fZnIuX2xhdS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc3VfbcOlX3R5X29uX3RvX2ZyX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0kgZGFnIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJIG1vcmdvbiBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0kgZ8OlciBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0bDuHJlZ8OlYW5kZV0gZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaWRhbicsXG4gICAgICAgICAgICBzOiAnbm9rcmUgc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kJyxcbiAgICAgICAgICAgIG06ICdlaXQgbWludXR0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0JyxcbiAgICAgICAgICAgIGg6ICdlaW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWFyJyxcbiAgICAgICAgICAgIGQ6ICdlaW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgdzogJ2VpIHZla2UnLFxuICAgICAgICAgICAgd3c6ICclZCB2ZWtlcicsXG4gICAgICAgICAgICBNOiAnZWluIG3DpW5hZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHk6ICdlaXQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBubjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBPY2NpdGFuLCBsZW5nYWRvY2lhbiBkaWFsZWN0ZSBbb2MtbG5jXVxuLy8hIGF1dGhvciA6IFF1ZW50aW4gUEFHw4hTIDogaHR0cHM6Ly9naXRodWIuY29tL1F1ZW50eTMxXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgb2NMbmMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdvYy1sbmMnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnZ2VuacOocl9mZWJyacOocl9tYXLDp19hYnJpbF9tYWlfanVuaF9qdWxoZXRfYWdvc3Rfc2V0ZW1icmVfb2N0w7JicmVfbm92ZW1icmVfZGVjZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiBcImRlIGdlbmnDqHJfZGUgZmVicmnDqHJfZGUgbWFyw6dfZCdhYnJpbF9kZSBtYWlfZGUganVuaF9kZSBqdWxoZXRfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29jdMOyYnJlX2RlIG5vdmVtYnJlX2RlIGRlY2VtYnJlXCIuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxzKStNTU1NLyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnZ2VuLl9mZWJyLl9tYXLDp19hYnIuX21haV9qdW5oX2p1bGguX2Fnby5fc2V0Ll9vY3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWVuZ2VfZGlsdW5zX2RpbWFyc19kaW3DqGNyZXNfZGlqw7J1c19kaXZlbmRyZXNfZGlzc2FidGUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkZy5fZGwuX2RtLl9kYy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGdfZGxfZG1fZGNfZGpfZHZfZHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbScsXG4gICAgICAgICAgICBsbGw6ICdEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2FdIEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdcOoaSBhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2RlbWFuIGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpw6hyIGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbcGFzc2F0IGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBcImQnYXF1w60gJXNcIixcbiAgICAgICAgICAgIHBhc3Q6ICdmYSAlcycsXG4gICAgICAgICAgICBzOiAndW5hcyBzZWdvbmRhcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ29uZGFzJyxcbiAgICAgICAgICAgIG06ICd1bmEgbWludXRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRhcycsXG4gICAgICAgICAgICBoOiAndW5hIG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvcm4nLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3JucycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHJ8bnx0fMOofGEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncidcbiAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICA/ICduJ1xuICAgICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnw6gnO1xuICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ3cnIHx8IHBlcmlvZCA9PT0gJ1cnKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvY0xuYztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQdW5qYWJpIChJbmRpYSkgW3BhLWluXVxuLy8hIGF1dGhvciA6IEhhcnByZWV0IFNpbmdoIDogaHR0cHM6Ly9naXRodWIuY29tL2hhcnByZWV0a2hhbHNhZ3RiaXRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KmnJyxcbiAgICAgICAgICAgIDI6ICfgqagnLFxuICAgICAgICAgICAgMzogJ+CpqScsXG4gICAgICAgICAgICA0OiAn4KmqJyxcbiAgICAgICAgICAgIDU6ICfgqasnLFxuICAgICAgICAgICAgNjogJ+CprCcsXG4gICAgICAgICAgICA3OiAn4KmtJyxcbiAgICAgICAgICAgIDg6ICfgqa4nLFxuICAgICAgICAgICAgOTogJ+CprycsXG4gICAgICAgICAgICAwOiAn4KmmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cppyc6ICcxJyxcbiAgICAgICAgICAgICfgqagnOiAnMicsXG4gICAgICAgICAgICAn4KmpJzogJzMnLFxuICAgICAgICAgICAgJ+Cpqic6ICc0JyxcbiAgICAgICAgICAgICfgqasnOiAnNScsXG4gICAgICAgICAgICAn4KmsJzogJzYnLFxuICAgICAgICAgICAgJ+CprSc6ICc3JyxcbiAgICAgICAgICAgICfgqa4nOiAnOCcsXG4gICAgICAgICAgICAn4KmvJzogJzknLFxuICAgICAgICAgICAgJ+Cppic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBwYUluID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGEtaW4nLCB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSBtb250aHMgbmFtZSBhcyBwZXIgTmFuYWtzaGFoaSBDYWxlbmRhciBidXQgdGhleSBhcmUgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS5cbiAgICAgICAgbW9udGhzOiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw4Kis4KiwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4KiQ4Kik4Ki14Ki+4KiwX+CouOCpi+CoruCoteCovuCosF/gqK7gqbDgqJfgqLLgqLXgqL7gqLBf4Kis4KmB4Kin4Ki14Ki+4KiwX+CoteCpgOCosOCoteCovuCosF/gqLjgqLzgqYHgqbHgqJXgqLDgqLXgqL7gqLBf4Ki44Ki84Kio4KmA4Kia4Kiw4Ki14Ki+4KiwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CokOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDgqLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KiF4KicXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KiF4KiX4Kiy4Ki+XSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Kiq4Ki/4Kib4Kiy4KmHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCoteCov+CpseComicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4Kiq4Ki/4Kib4Kiy4KmHJyxcbiAgICAgICAgICAgIHM6ICfgqJXgqYHgqJ0g4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG06ICfgqIfgqJUg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIGg6ICfgqIfgqbHgqJUg4KiY4Kmw4Kif4Ki+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KiY4Kmw4Kif4KmHJyxcbiAgICAgICAgICAgIGQ6ICfgqIfgqbHgqJUg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIE06ICfgqIfgqbHgqJUg4Kiu4Ki54KmA4Kio4Ki+JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kiu4Ki54KmA4Kio4KmHJyxcbiAgICAgICAgICAgIHk6ICfgqIfgqbHgqJUg4Ki44Ki+4KiyJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Ki44Ki+4KiyJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCpruCpr+Cppl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHVuamFiaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kiw4Ki+4KikfOCouOCoteCph+CosHzgqKbgqYHgqKrgqLngqL/gqLB84Ki44Ki84Ki+4KiuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kiw4Ki+4KikJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki14KmH4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CopuCpgeCoquCoueCov+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki84Ki+4KiuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CosOCovuCopCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki14KmH4KiwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqKbgqYHgqKrgqLngqL/gqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CouOCovOCovuCoric7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9saXNoIFtwbF1cbi8vISBhdXRob3IgOiBSYWZhbCBIaXJzeiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ldm9MXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzTm9taW5hdGl2ZSA9XG4gICAgICAgICAgICAnc3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1N1YmplY3RpdmUgPVxuICAgICAgICAgICAgJ3N0eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBuaWFfd3J6ZcWbbmlhX3Bhxbpkemllcm5pa2FfbGlzdG9wYWRhX2dydWRuaWEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXnN0eS9pLFxuICAgICAgICAgICAgL15sdXQvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmt3aS9pLFxuICAgICAgICAgICAgL15tYWovaSxcbiAgICAgICAgICAgIC9eY3plL2ksXG4gICAgICAgICAgICAvXmxpcC9pLFxuICAgICAgICAgICAgL15zaWUvaSxcbiAgICAgICAgICAgIC9ed3J6L2ksXG4gICAgICAgICAgICAvXnBhxbovaSxcbiAgICAgICAgICAgIC9ebGlzL2ksXG4gICAgICAgICAgICAvXmdydS9pLFxuICAgICAgICBdO1xuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiBuICUgMTAgPCA1ICYmIG4gJSAxMCA+IDEgJiYgfn4obiAvIDEwKSAlIDEwICE9PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6ICdtaW51dMSZJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2dvZHppbmEnIDogJ2dvZHppbsSZJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2dvZHppbnknIDogJ2dvZHppbicpO1xuICAgICAgICAgICAgY2FzZSAnd3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAndHlnb2RuaWUnIDogJ3R5Z29kbmknKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pZXNpxIVjZScgOiAnbWllc2nEmWN5Jyk7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdsYXRhJyA6ICdsYXQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3BsJywge1xuICAgICAgICBtb250aHM6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC9EIE1NTU0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTdWJqZWN0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ25pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZHpfcG9uX3d0X8Wbcl9jendfcHRfc29iJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEemnFmyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0p1dHJvIG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgbmllZHppZWzEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV2Ugd3RvcmVrIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIMWbcm9kxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgc29ib3TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1ddIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tXY3pvcmFqIG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgc29ib3TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgnldIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgdGVtdScsXG4gICAgICAgICAgICBzOiAna2lsa2Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICcxIGR6aWXFhCcsXG4gICAgICAgICAgICBkZDogJyVkIGRuaScsXG4gICAgICAgICAgICB3OiAndHlkemllxYQnLFxuICAgICAgICAgICAgd3c6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICdtaWVzacSFYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ3JvaycsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBvcnR1Z3Vlc2UgKEJyYXppbCkgW3B0LWJyXVxuLy8hIGF1dGhvciA6IENhaW8gUmliZWlybyBQZXJlaXJhIDogaHR0cHM6Ly9naXRodWIuY29tL2NhaW8tcmliZWlyby1wZXJlaXJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgcHRCciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3B0LWJyJywge1xuICAgICAgICBtb250aHM6ICdqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmV2X21hcl9hYnJfbWFpX2p1bl9qdWxfYWdvX3NldF9vdXRfbm92X2Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnZG9taW5nb19zZWd1bmRhLWZlaXJhX3RlcsOnYS1mZWlyYV9xdWFydGEtZmVpcmFfcXVpbnRhLWZlaXJhX3NleHRhLWZlaXJhX3PDoWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3PDoWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fMsKqXzPCql80wqpfNcKqXzbCql9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIb2plIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBbWFuaMOjIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbT250ZW0gw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDZcbiAgICAgICAgICAgICAgICAgICAgPyAnW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQnIC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgIDogJ1vDmmx0aW1hXSBkZGRkIFvDoHNdIExUJzsgLy8gTW9uZGF5IC0gRnJpZGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaMOhICVzJyxcbiAgICAgICAgICAgIHM6ICdwb3Vjb3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW0gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW1hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGlhcycsXG4gICAgICAgICAgICBNOiAndW0gbcOqcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1bSBhbm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIGludmFsaWREYXRlOiAnRGF0YSBpbnbDoWxpZGEnLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHB0QnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9ydHVndWVzZSBbcHRdXG4vLyEgYXV0aG9yIDogSmVmZmVyc29uIDogaHR0cHM6Ly9naXRodWIuY29tL2phbGV4NzlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3B0Jywge1xuICAgICAgICBtb250aHM6ICdqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmV2X21hcl9hYnJfbWFpX2p1bl9qdWxfYWdvX3NldF9vdXRfbm92X2Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1PDoWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIb2plIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBbWFuaMOjIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbT250ZW0gw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDZcbiAgICAgICAgICAgICAgICAgICAgPyAnW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQnIC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgIDogJ1vDmmx0aW1hXSBkZGRkIFvDoHNdIExUJzsgLy8gTW9uZGF5IC0gRnJpZGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaMOhICVzJyxcbiAgICAgICAgICAgIHM6ICdzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIHc6ICd1bWEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW0gbcOqcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1bSBhbm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBwdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBSb21hbmlhbiBbcm9dXG4vLyEgYXV0aG9yIDogVmxhZCBHdXJkaWdhIDogaHR0cHM6Ly9naXRodWIuY29tL2d1cmRpZ2Fcbi8vISBhdXRob3IgOiBWYWxlbnRpbiBBZ2FjaGkgOiBodHRwczovL2dpdGh1Yi5jb20vYXZhbHlcbi8vISBhdXRob3IgOiBFbWFudWVsIENlcG9pIDogaHR0cHM6Ly9naXRodWIuY29tL2NlcGVtXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAgICAgc3M6ICdzZWN1bmRlJyxcbiAgICAgICAgICAgICAgICBtbTogJ21pbnV0ZScsXG4gICAgICAgICAgICAgICAgaGg6ICdvcmUnLFxuICAgICAgICAgICAgICAgIGRkOiAnemlsZScsXG4gICAgICAgICAgICAgICAgd3c6ICdzxINwdMSDbcOibmknLFxuICAgICAgICAgICAgICAgIE1NOiAnbHVuaScsXG4gICAgICAgICAgICAgICAgeXk6ICdhbmknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlcGFyYXRvciA9ICcgJztcbiAgICAgICAgaWYgKG51bWJlciAlIDEwMCA+PSAyMCB8fCAobnVtYmVyID49IDEwMCAmJiBudW1iZXIgJSAxMDAgPT09IDApKSB7XG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnIGRlICc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlciArIHNlcGFyYXRvciArIGZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBybyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3JvJywge1xuICAgICAgICBtb250aHM6ICdpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVfbWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmllX29jdG9tYnJpZV9ub2llbWJyaWVfZGVjZW1icmllJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdpYW4uX2ZlYi5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkdW1pbmljxINfbHVuaV9tYXLIm2lfbWllcmN1cmlfam9pX3ZpbmVyaV9zw6JtYsSDdMSDJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU8OibScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEdV9MdV9NYV9NaV9Kb19WaV9Tw6InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1themkgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbcOiaW5lIGxhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2llcmkgbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2Zvc3RhXSBkZGRkIFtsYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwZXN0ZSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw65uIHVybcSDJyxcbiAgICAgICAgICAgIHM6ICdjw6J0ZXZhIHNlY3VuZGUnLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiAndW4gbWludXQnLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiAnbyBvcsSDJyxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ28gemknLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB3OiAnbyBzxINwdMSDbcOibsSDJyxcbiAgICAgICAgICAgIHd3OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ28gbHVuxIMnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBybztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBSdXNzaWFuIFtydV1cbi8vISBhdXRob3IgOiBWaWt0b3JtaW5hdG9yIDogaHR0cHM6Ly9naXRodWIuY29tL1Zpa3Rvcm1pbmF0b3Jcbi8vISBhdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuLy8hIGF1dGhvciA6INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQuiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zb2NrZXRwYWlyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTFcbiAgICAgICAgICAgID8gZm9ybXNbMF1cbiAgICAgICAgICAgIDogbnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApXG4gICAgICAgICAgICAgID8gZm9ybXNbMV1cbiAgICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyA6ICfQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInLFxuICAgICAgICAgICAgaGg6ICfRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsicsXG4gICAgICAgICAgICBkZDogJ9C00LXQvdGMX9C00L3Rj1/QtNC90LXQuScsXG4gICAgICAgICAgICB3dzogJ9C90LXQtNC10LvRj1/QvdC10LTQtdC70Lhf0L3QtdC00LXQu9GMJyxcbiAgICAgICAgICAgIE1NOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LInLFxuICAgICAgICAgICAgeXk6ICfQs9C+0LRf0LPQvtC00LBf0LvQtdGCJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LAnIDogJ9C80LjQvdGD0YLRgyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgIC9e0Y/QvdCyL2ksXG4gICAgICAgIC9e0YTQtdCyL2ksXG4gICAgICAgIC9e0LzQsNGAL2ksXG4gICAgICAgIC9e0LDQv9GAL2ksXG4gICAgICAgIC9e0LzQsFvQudGPXS9pLFxuICAgICAgICAvXtC40Y7QvS9pLFxuICAgICAgICAvXtC40Y7Quy9pLFxuICAgICAgICAvXtCw0LLQsy9pLFxuICAgICAgICAvXtGB0LXQvS9pLFxuICAgICAgICAvXtC+0LrRgi9pLFxuICAgICAgICAvXtC90L7Rjy9pLFxuICAgICAgICAvXtC00LXQui9pLFxuICAgIF07XG5cbiAgICAvLyBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9ydWxlcy8xMzktcHJvcCA6IMKnIDEwM1xuICAgIC8vINCh0L7QutGA0LDRidC10L3QuNGPINC80LXRgdGP0YbQtdCyOiBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9idXJvL3NlYXJjaC1hbnN3ZXI/cz0yNDI2MzdcbiAgICAvLyBDTERSIGRhdGE6ICAgICAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY2xkci9jaGFydHMvMjgvc3VtbWFyeS9ydS5odG1sIzE3NTNcbiAgICB2YXIgcnUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdydScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Y9f0YTQtdCy0YDQsNC70Y9f0LzQsNGA0YLQsF/QsNC/0YDQtdC70Y9f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs9GD0YHRgtCwX9GB0LXQvdGC0Y/QsdGA0Y9f0L7QutGC0Y/QsdGA0Y9f0L3QvtGP0LHRgNGPX9C00LXQutCw0LHRgNGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDoge1xuICAgICAgICAgICAgLy8g0L/QviBDTERSINC40LzQtdC90L3QviBcItC40Y7Quy5cIiDQuCBcItC40Y7QvS5cIiwg0L3QviDQutCw0LrQvtC5INGB0LzRi9GB0Lsg0LzQtdC90Y/RgtGMINCx0YPQutCy0YMg0L3QsCDRgtC+0YfQutGDP1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGALl/QsNC/0YAuX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP10gP2RkZGQvLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LhcbiAgICAgICAgbW9udGhzUmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQutC+0L/QuNGPINC/0YDQtdC00YvQtNGD0YnQtdCz0L5cbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDpcbiAgICAgICAgICAgIC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LhcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLFxuXG4gICAgICAgIC8vINCS0YvRgNCw0LbQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0YHQvtC+0YLQstC10YLRgdGC0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7QutGA0LDRidGR0L3QvdGL0Lwg0YTQvtGA0LzQsNC8XG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LJcXC580YTQtdCy0YA/XFwufNC80LDRgFvRgi5dfNCw0L/RgFxcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcXC580YHQtdC90YI/XFwufNC+0LrRglxcLnzQvdC+0Y/QsT9cXC580LTQtdC6XFwuKS9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWSDQsy4nLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg0LMuLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodC10LPQvtC00L3Rjywg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JfQsNCy0YLRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQtdC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC40LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRi9C5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfRh9C10YDQtdC3ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQvdCw0LfQsNC0JyxcbiAgICAgICAgICAgIHM6ICfQvdC10YHQutC+0LvRjNC60L4g0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICfQtNC10L3RjCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHc6ICfQvdC10LTQtdC70Y8nLFxuICAgICAgICAgICAgd3c6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQtdGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9C4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRg9GC0YDQsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQtdGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L580Y8pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGPJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcnU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2luZGhpIFtzZF1cbi8vISBhdXRob3IgOiBOYXJhaW4gU2FnYXIgOiBodHRwczovL2dpdGh1Yi5jb20vbmFyYWluc2FnYXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAn2KzZhtmI2LHZiicsXG4gICAgICAgICAgICAn2YHZitio2LHZiNix2YonLFxuICAgICAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgICAgICfYp9m+2LHZitmEJyxcbiAgICAgICAgICAgICfZhdim2YonLFxuICAgICAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICAgICAn2KzZiNmE2KfYodmQJyxcbiAgICAgICAgICAgICfYotqv2LPZvScsXG4gICAgICAgICAgICAn2LPZitm+2b3Zhdio2LEnLFxuICAgICAgICAgICAgJ9ii2qrZvdmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICAgICAn2orYs9mF2KjYsScsXG4gICAgICAgIF0sXG4gICAgICAgIGRheXMgPSBbJ9ii2obYsScsICfYs9mI2YXYsScsICfYp9qx2KfYsdmIJywgJ9in2LHYqNi5JywgJ9iu2YXZitizJywgJ9is2YXYuScsICfah9mG2ofYsSddO1xuXG4gICAgdmFyIHNkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2QnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRheXMsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Ytdio2K182LTYp9mFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfahF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYs9qA2Kfau9mKXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9in2rPZitmGINmH2YHYqtmKINiq2YpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2qrYp9mE2YfZh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2q/Ystix2YrZhCDZh9mB2KrZil0gZGRkZCBb2KrZil0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZvtmI2KEnLFxuICAgICAgICAgICAgcGFzdDogJyVzINin2rMnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYs9mK2qrZhtqKJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPZitqq2YbaiicsXG4gICAgICAgICAgICBtOiAn2YfaqiDZhdmG2b0nLFxuICAgICAgICAgICAgbW06ICclZCDZhdmG2b0nLFxuICAgICAgICAgICAgaDogJ9mH2qog2qrZhNin2qonLFxuICAgICAgICAgICAgaGg6ICclZCDaqtmE2KfaqicsXG4gICAgICAgICAgICBkOiAn2YfaqiDaj9mK2YbZh9mGJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBNOiAn2YfaqiDZhdmH2YrZhtmIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXZh9mK2YbYpycsXG4gICAgICAgICAgICB5OiAn2YfaqiDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOb3J0aGVybiBTYW1pIFtzZV1cbi8vISBhdXRob3JzIDogQsOlcmQgUm9sc3RhZCBIZW5yaWtzZW4gOiBodHRwczovL2dpdGh1Yi5jb20va2FyYW1lbGxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NlJywge1xuICAgICAgICBtb250aHM6ICdvxJHEkWFqYWdlbcOhbm51X2d1b3Z2YW3DoW5udV9uanVrxI1hbcOhbm51X2N1b8WLb23DoW5udV9taWVzc2Vtw6FubnVfZ2Vhc3NlbcOhbm51X3N1b2lkbmVtw6FubnVfYm9yZ2Vtw6FubnVfxI1ha8SNYW3DoW5udV9nb2xnZ290bcOhbm51X3Nrw6FibWFtw6FubnVfanVvdmxhbcOhbm51Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdvxJHEkWpfZ3Vvdl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvEjV9nb2xnX3Nrw6FiX2p1b3YnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3NvdG5hYmVhaXZpX3Z1b3Nzw6FyZ2FfbWHFi8WLZWLDoXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2zDoXZ2YXJkYXQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3NvdG5fdnVvc19tYcWLX2dhc2tfZHVvcl9iZWFyX2zDoXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc192X21fZ19kX2JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQuIFtiLl0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tvdG5lIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2lodHRpbiB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpa3RlIHRpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tvdmRkaXRdIGRkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGdlYcW+ZXMnLFxuICAgICAgICAgICAgcGFzdDogJ21hxYtpdCAlcycsXG4gICAgICAgICAgICBzOiAnbW9hZGRlIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBtOiAnb2t0YSBtaW51aHRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludWh0YXQnLFxuICAgICAgICAgICAgaDogJ29rdGEgZGlpbW11JyxcbiAgICAgICAgICAgIGhoOiAnJWQgZGlpbW11dCcsXG4gICAgICAgICAgICBkOiAnb2t0YSBiZWFpdmknLFxuICAgICAgICAgICAgZGQ6ICclZCBiZWFpdnZpdCcsXG4gICAgICAgICAgICBNOiAnb2t0YSBtw6FubnUnLFxuICAgICAgICAgICAgTU06ICclZCBtw6FudXQnLFxuICAgICAgICAgICAgeTogJ29rdGEgamFoa2knLFxuICAgICAgICAgICAgeXk6ICclZCBqYWdpdCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2luaGFsZXNlIFtzaV1cbi8vISBhdXRob3IgOiBTYW1wYXRoIFNpdGluYW1hbHV3YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1wYXRoc3Jpc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgLypqc2hpbnQgLVcxMDAqL1xuICAgIHZhciBzaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NpJywge1xuICAgICAgICBtb250aHM6ICfgtqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgtqLgtrFf4La04LeZ4La2X+C2uOC3j+C2u+C3il/gtoXgtrTgt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4LedX+C3g+C3kOC2tOC3il/gtpTgtprgt4pf4Lax4Lec4LeA4LeQX+C2r+C3meC3g+C3kCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4LaJ4La74LeS4Lav4LePX+C3g+C2s+C3lOC2r+C3j1/gtoXgtp/gt4Tgtrvgt5Tgt4Dgt4/gtq/gt49f4La24Lav4LeP4Lav4LePX+C2tuC3iuKAjeC2u+C3hOC3g+C3iuC2tOC2reC3kuC2seC3iuC2r+C3j1/gt4Pgt5Lgtprgt5Tgtrvgt4/gtq/gt49f4LeD4LeZ4Lax4LeD4LeU4La74LeP4Lav4LePJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LaJX+C3g1/gtoVf4La2X+C2tuC3iuKAjeC2u1/gt4Pgt5Jf4LeD4LeZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdhIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZIE1NTU0gRCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIE1NTU0gRCwgYSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax4LeSXSBkZGRkLCBhIGg6bW06c3MnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtoXgtq9dIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgt4Tgt5ngtqddIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgtorgtrrgt5pdIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4La04LeD4LeU4Lac4LeS4La6XSBkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+C2muC3kuC2seC3iicsXG4gICAgICAgICAgICBwYXN0OiAnJXPgtprgtqcg4La04LeZ4La7JyxcbiAgICAgICAgICAgIHM6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JyxcbiAgICAgICAgICAgIHNzOiAn4Lat4Lat4LeK4La04La7ICVkJyxcbiAgICAgICAgICAgIG06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5Tgt4AnLFxuICAgICAgICAgICAgbW06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5QgJWQnLFxuICAgICAgICAgICAgaDogJ+C2tOC3kOC2uicsXG4gICAgICAgICAgICBoaDogJ+C2tOC3kOC2uiAlZCcsXG4gICAgICAgICAgICBkOiAn4Lav4LeS4Lax4La6JyxcbiAgICAgICAgICAgIGRkOiAn4Lav4LeS4LaxICVkJyxcbiAgICAgICAgICAgIE06ICfgtrjgt4/gt4PgtronLFxuICAgICAgICAgICAgTU06ICfgtrjgt4/gt4MgJWQnLFxuICAgICAgICAgICAgeTogJ+C3gOC3g+C2uycsXG4gICAgICAgICAgICB5eTogJ+C3gOC3g+C2uyAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDgt4Dgt5DgtrHgt5IvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDgt4Dgt5DgtrHgt5InO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3mS7gt4B84La0LuC3gC4vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C2tC7gt4AuJyB8fCBpbnB1dCA9PT0gJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tC7gt4AuJyA6ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La04LeZLuC3gC4nIDogJ+C2tOC3meC2uyDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNsb3ZhayBbc2tdXG4vLyEgYXV0aG9yIDogTWFydGluIE1pbmthIDogaHR0cHM6Ly9naXRodWIuY29tL2syc1xuLy8hIGJhc2VkIG9uIHdvcmsgb2YgcGV0cmJlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vcGV0cmJlbGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPVxuICAgICAgICAgICAgJ2phbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPiAxICYmIG4gPCA1O1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3DDoXIgc2Vrw7puZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWvDum5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ20nOiAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWluw7p0YScgOiBpc0Z1dHVyZSA/ICdtaW7DunR1JyA6ICdtaW7DunRvdSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbsO6dHknIDogJ21pbsO6dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWluw7p0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdoJzogLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiBpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZMOtbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2QnOiAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGXFiCcgOiAnZMWIb20nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbmknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2TFiGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTSc6IC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNpYWMnIDogJ21lc2lhY29tJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWVzaWFjZScgOiAnbWVzaWFjb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21lc2lhY21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd5JzogLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3JvaycgOiAncm9rb20nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdyb2tvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAncm9rbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NrJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICB3ZWVrZGF5czogJ25lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3phanRyYSBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2byDFoXR2cnRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcGlhdG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTbG92ZW5pYW4gW3NsXVxuLy8hIGF1dGhvciA6IFJvYmVydCBTZWRvdsWhZWsgOiBodHRwczovL2dpdGh1Yi5jb20vc2Vkb3ZzZWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICA/ICduZWthaiBzZWt1bmQnXG4gICAgICAgICAgICAgICAgICAgIDogJ25la2FqIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdzZWt1bmRvJyA6ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRpJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGUnIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgbWludXRhJyA6ICdlbm8gbWludXRvJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGknIDogJ21pbnV0YW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRlJyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXQnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSB1cmEnIDogJ2VubyB1cm8nO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAndXJhJyA6ICd1cm8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyaScgOiAndXJhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmUnIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cicgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gZGFuJyA6ICdlbmltIGRuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGFuJyA6ICdkbmVtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldmknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gbWVzZWMnIDogJ2VuaW0gbWVzZWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlYycgOiAnbWVzZWNlbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNhJyA6ICdtZXNlY2VtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZScgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2V2JyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW5vIGxldG8nIDogJ2VuaW0gbGV0b20nO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0bycgOiAnbGV0b20nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGknIDogJ2xldG9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGEnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldCcgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzbCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1ldHJ0ZWtfcGV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3Rvci5fc3JlLl/EjWV0Ll9wZXQuX3NvYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdG9fc3JfxI1lX3BlX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuIE1NLiBZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmVzIG9iXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2p1dHJpIG9iXSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhaiBvYl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmppXSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8SNZXogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFsYmFuaWFuIFtzcV1cbi8vISBhdXRob3IgOiBGbGFrw6tyaW0gSXNtYW5pIDogaHR0cHM6Ly9naXRodWIuY29tL2ZsYWtlcmltaVxuLy8hIGF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogT2VyZCBDdWthbGxhIDogaHR0cHM6Ly9naXRodWIuY29tL29lcmRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NxJywge1xuICAgICAgICBtb250aHM6ICdKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9Ow6tudG9yX0RoamV0b3InLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X07Dq25fRGhqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0UgRGllbF9FIEjDq27Dq19FIE1hcnTDq19FIE3Dq3JrdXLDq19FIEVuanRlX0UgUHJlbXRlX0UgU2h0dW7Dqycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RpZV9Iw6tuX01hcl9Nw6tyX0Vual9QcmVfU2h0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RfSF9NYV9Nw6tfRV9QX1NoJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9QRHxNRC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKSA9PT0gJ00nO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgPCAxMiA/ICdQRCcgOiAnTUQnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1NvdCBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTmVzw6tyIG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGplIG7Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtlIGthbHVhciBuw6tdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbsOrICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBtw6sgcGFyw6snLFxuICAgICAgICAgICAgczogJ2Rpc2Egc2Vrb25kYScsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGEnLFxuICAgICAgICAgICAgbTogJ25qw6sgbWludXTDqycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0YScsXG4gICAgICAgICAgICBoOiAnbmrDqyBvcsOrJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3LDqycsXG4gICAgICAgICAgICBkOiAnbmrDqyBkaXTDqycsXG4gICAgICAgICAgICBkZDogJyVkIGRpdMOrJyxcbiAgICAgICAgICAgIE06ICduasOrIG11YWonLFxuICAgICAgICAgICAgTU06ICclZCBtdWFqJyxcbiAgICAgICAgICAgIHk6ICduasOrIHZpdCcsXG4gICAgICAgICAgICB5eTogJyVkIHZpdGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNxO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNlcmJpYW4gQ3lyaWxsaWMgW3NyLWN5cmxdXG4vLyEgYXV0aG9yIDogTWlsYW4gSmFuYcSNa292acSHPG1pbGFuamFuYWNrb3ZpY0BnbWFpbC5jb20+IDogaHR0cHM6Ly9naXRodWIuY29tL21pbGFuLWpcbi8vISBhdXRob3IgOiBTdGVmYW4gQ3JuamFrb3ZpxIcgPHN0ZWZhbkBob3RtYWlsLnJzPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jcm5qYWtvdmljXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWyfRgdC10LrRg9C90LTQsCcsICfRgdC10LrRg9C90LTQtScsICfRgdC10LrRg9C90LTQuCddLFxuICAgICAgICAgICAgbTogWyfRmNC10LTQsNC9INC80LjQvdGD0YInLCAn0ZjQtdC00L3QvtCzINC80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgbW06IFsn0LzQuNC90YPRgicsICfQvNC40L3Rg9GC0LAnLCAn0LzQuNC90YPRgtCwJ10sXG4gICAgICAgICAgICBoOiBbJ9GY0LXQtNCw0L0g0YHQsNGCJywgJ9GY0LXQtNC90L7QsyDRgdCw0YLQsCddLFxuICAgICAgICAgICAgaGg6IFsn0YHQsNGCJywgJ9GB0LDRgtCwJywgJ9GB0LDRgtC4J10sXG4gICAgICAgICAgICBkOiBbJ9GY0LXQtNCw0L0g0LTQsNC9JywgJ9GY0LXQtNC90L7QsyDQtNCw0L3QsCddLFxuICAgICAgICAgICAgZGQ6IFsn0LTQsNC9JywgJ9C00LDQvdCwJywgJ9C00LDQvdCwJ10sXG4gICAgICAgICAgICBNOiBbJ9GY0LXQtNCw0L0g0LzQtdGB0LXRhicsICfRmNC10LTQvdC+0LMg0LzQtdGB0LXRhtCwJ10sXG4gICAgICAgICAgICBNTTogWyfQvNC10YHQtdGGJywgJ9C80LXRgdC10YbQsCcsICfQvNC10YHQtdGG0LgnXSxcbiAgICAgICAgICAgIHk6IFsn0ZjQtdC00L3RgyDQs9C+0LTQuNC90YMnLCAn0ZjQtdC00L3QtSDQs9C+0LTQuNC90LUnXSxcbiAgICAgICAgICAgIHl5OiBbJ9Cz0L7QtNC40L3RgycsICfQs9C+0LTQuNC90LUnLCAn0LPQvtC00LjQvdCwJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA+PSAxICYmXG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAgPD0gNCAmJlxuICAgICAgICAgICAgICAgIChudW1iZXIgJSAxMDAgPCAxMCB8fCBudW1iZXIgJSAxMDAgPj0gMjApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldLFxuICAgICAgICAgICAgICAgIHdvcmQ7XG5cbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gTm9taW5hdGl2XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3knICYmIHdpdGhvdXRTdWZmaXgpIHJldHVybiAn0ZjQtdC00L3QsCDQs9C+0LTQuNC90LAnO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3l5JyAmJiB3aXRob3V0U3VmZml4ICYmIHdvcmQgPT09ICfQs9C+0LTQuNC90YMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg0LPQvtC00LjQvdCwJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHdvcmQ7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBzckN5cmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzci1jeXJsJywge1xuICAgICAgICBtb250aHM6ICfRmNCw0L3Rg9Cw0YBf0YTQtdCx0YDRg9Cw0YBf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LHQsNGAX9C+0LrRgtC+0LHQsNGAX9C90L7QstC10LzQsdCw0YBf0LTQtdGG0LXQvNCx0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn0ZjQsNC9Ll/RhNC10LEuX9C80LDRgC5f0LDQv9GALl/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LMuX9GB0LXQvy5f0L7QutGCLl/QvdC+0LIuX9C00LXRhi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXRmdCwX9C/0L7QvdC10LTQtdGZ0LDQul/Rg9GC0L7RgNCw0Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQsNC6X9C/0LXRgtCw0Lpf0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0Ll/Qv9C+0L0uX9GD0YLQvi5f0YHRgNC1Ll/Rh9C10YIuX9C/0LXRgi5f0YHRg9CxLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC1X9C/0L5f0YPRgl/RgdGAX9GH0LVf0L/QtV/RgdGDJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC4gTS4gWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVkuJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0LTQsNC90LDRgSDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vRgdGD0YLRgNCwINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9C90LXQtNC10ZnRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRgNC10LTRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIGRkZGQgW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0ZjRg9GH0LUg0YNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvQvdC10LTQtdGZ0LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GD0YLQvtGA0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRgNC10LTQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0LXRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YPQsdC+0YLQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC1ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3JDeXJsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNlcmJpYW4gW3NyXVxuLy8hIGF1dGhvciA6IE1pbGFuIEphbmHEjWtvdmnEhzxtaWxhbmphbmFja292aWNAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxhbi1qXG4vLyEgYXV0aG9yIDogU3RlZmFuIENybmpha292acSHIDxzdGVmYW5AaG90bWFpbC5ycz4gOiBodHRwczovL2dpdGh1Yi5jb20vY3JuamFrb3ZpY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kYScsICdzZWt1bmRlJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGQ6IFsnamVkYW4gZGFuJywgJ2plZG5vZyBkYW5hJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNOiBbJ2plZGFuIG1lc2VjJywgJ2plZG5vZyBtZXNlY2EnXSxcbiAgICAgICAgICAgIE1NOiBbJ21lc2VjJywgJ21lc2VjYScsICdtZXNlY2knXSxcbiAgICAgICAgICAgIHk6IFsnamVkbnUgZ29kaW51JywgJ2plZG5lIGdvZGluZSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW51JywgJ2dvZGluZScsICdnb2RpbmEnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwID49IDEgJiZcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA8PSA0ICYmXG4gICAgICAgICAgICAgICAgKG51bWJlciAlIDEwMCA8IDEwIHx8IG51bWJlciAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdvcmRLZXlbMl07XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV0sXG4gICAgICAgICAgICAgICAgd29yZDtcblxuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBOb21pbmF0aXZcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAneScgJiYgd2l0aG91dFN1ZmZpeCkgcmV0dXJuICdqZWRuYSBnb2RpbmEnO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3l5JyAmJiB3aXRob3V0U3VmZml4ICYmIHdvcmQgPT09ICdnb2RpbnUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgZ29kaW5hJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHdvcmQ7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBzciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JlLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC4gTS4gWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVkuJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmUgJXMnLFxuICAgICAgICAgICAgczogJ25la29saWtvIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBzaVN3YXRpIFtzc11cbi8vISBhdXRob3IgOiBOaWNvbGFpIERhdmllczxtYWlsQG5pY29sYWkuaW8+IDogaHR0cHM6Ly9naXRodWIuY29tL25pY29sYWlkYXZpZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NzJywge1xuICAgICAgICBtb250aHM6IFwiQmhpbWJpZHZ3YW5lX0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaVwiLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0xpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0xpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdMaV9Vc19MYl9MdF9Mc19MaF9VZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tOYW11aGxhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tLdXNhc2EgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW25nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJdG9sbyBuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbmdhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd3ZW50ZWthIG5nYSAlcycsXG4gICAgICAgICAgICBzOiAnZW1penV6d2FuYSBsb21jYW5lJyxcbiAgICAgICAgICAgIHNzOiAnJWQgbXp1endhbmEnLFxuICAgICAgICAgICAgbTogJ3VtenV6dScsXG4gICAgICAgICAgICBtbTogJyVkIGVtaXp1enUnLFxuICAgICAgICAgICAgaDogJ2xpaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGVtYWhvcmEnLFxuICAgICAgICAgICAgZDogJ2xpbGFuZ2EnLFxuICAgICAgICAgICAgZGQ6ICclZCBlbWFsYW5nYScsXG4gICAgICAgICAgICBNOiAnaW55YW5nYScsXG4gICAgICAgICAgICBNTTogJyVkIHRpbnlhbmdhJyxcbiAgICAgICAgICAgIHk6ICd1bW55YWthJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaW1pbnlha2EnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWt1c2VuaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VtaW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW50c2FtYmFtYSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWJ1c3VrdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VrdXNlbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW1pbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VudHNhbWJhbWEnIHx8IG1lcmlkaWVtID09PSAnZWJ1c3VrdScpIHtcbiAgICAgICAgICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJyVkJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFN3ZWRpc2ggW3N2XVxuLy8hIGF1dGhvciA6IEplbnMgQWxtIDogaHR0cHM6Ly9naXRodWIuY29tL3VsbXVzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSWRhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJbW9yZ29uXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lnw6VyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tQw6VdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbSV0gZGRkZFtzXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdmw7ZyICVzIHNlZGFuJyxcbiAgICAgICAgICAgIHM6ICduw6VncmEgc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZW4gbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVyJyxcbiAgICAgICAgICAgIGg6ICdlbiB0aW1tZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbW1hcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5hZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHk6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KFxcOmV8XFw6YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc6YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnOmEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzplJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTd2FoaWxpIFtzd11cbi8vISBhdXRob3IgOiBGYWhhZCBLYXNzaW0gOiBodHRwczovL2dpdGh1Yi5jb20vZmFkc2VsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3ZlbWJhX0Rlc2VtYmEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX0Fnb19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0p1bWFwaWxpX0p1bWF0YXR1X0p1bWFubmVfSnVtYXRhbm9fQWxoYW1pc2lfSWp1bWFhX0p1bWFtb3NpJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0oyX0ozX0o0X0o1X0FsX0lqX0oxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2hoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tsZW8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2tlc2hvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tqYW5hXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBiYWFkYXllJyxcbiAgICAgICAgICAgIHBhc3Q6ICd0b2tlYSAlcycsXG4gICAgICAgICAgICBzOiAnaGl2aSBwdW5kZScsXG4gICAgICAgICAgICBzczogJ3Nla3VuZGUgJWQnLFxuICAgICAgICAgICAgbTogJ2Rha2lrYSBtb2phJyxcbiAgICAgICAgICAgIG1tOiAnZGFraWthICVkJyxcbiAgICAgICAgICAgIGg6ICdzYWEgbGltb2phJyxcbiAgICAgICAgICAgIGhoOiAnbWFzYWEgJWQnLFxuICAgICAgICAgICAgZDogJ3Npa3UgbW9qYScsXG4gICAgICAgICAgICBkZDogJ3Npa3UgJWQnLFxuICAgICAgICAgICAgTTogJ213ZXppIG1tb2phJyxcbiAgICAgICAgICAgIE1NOiAnbWllemkgJWQnLFxuICAgICAgICAgICAgeTogJ213YWthIG1tb2phJyxcbiAgICAgICAgICAgIHl5OiAnbWlha2EgJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFtaWwgW3RhXVxuLy8hIGF1dGhvciA6IEFyanVua3VtYXIgS3Jpc2huYW1vb3J0aHkgOiBodHRwczovL2dpdGh1Yi5jb20vdGsxMjA0MDRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4K+nJyxcbiAgICAgICAgICAgIDI6ICfgr6gnLFxuICAgICAgICAgICAgMzogJ+CvqScsXG4gICAgICAgICAgICA0OiAn4K+qJyxcbiAgICAgICAgICAgIDU6ICfgr6snLFxuICAgICAgICAgICAgNjogJ+CvrCcsXG4gICAgICAgICAgICA3OiAn4K+tJyxcbiAgICAgICAgICAgIDg6ICfgr64nLFxuICAgICAgICAgICAgOTogJ+CvrycsXG4gICAgICAgICAgICAwOiAn4K+mJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cvpyc6ICcxJyxcbiAgICAgICAgICAgICfgr6gnOiAnMicsXG4gICAgICAgICAgICAn4K+pJzogJzMnLFxuICAgICAgICAgICAgJ+Cvqic6ICc0JyxcbiAgICAgICAgICAgICfgr6snOiAnNScsXG4gICAgICAgICAgICAn4K+sJzogJzYnLFxuICAgICAgICAgICAgJ+CvrSc6ICc3JyxcbiAgICAgICAgICAgICfgr64nOiAnOCcsXG4gICAgICAgICAgICAn4K+vJzogJzknLFxuICAgICAgICAgICAgJ+Cvpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciB0YSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RhJywge1xuICAgICAgICBtb250aHM6ICfgrpzgrqngrrXgrrDgrr9f4K6q4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/grqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLgr4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCvjeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K614K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4K6e4K6+4K6v4K6/4K6x4K+N4K6x4K+B4K6V4K+N4K6V4K6/4K604K6u4K+IX+CupOCuv+CumeCvjeCuleCun+CvjeCuleCuv+CutOCuruCviF/grprgr4bgrrXgr43grrXgrr7grq/gr43grpXgrr/grrTgrq7gr4hf4K6q4K+B4K6k4K6p4K+N4K6V4K6/4K604K6u4K+IX+CuteCuv+Cur+CuvuCutOCuleCvjeCuleCuv+CutOCuruCviF/grrXgr4bgrrPgr43grrPgrr/grpXgr43grpXgrr/grrTgrq7gr4hf4K6a4K6p4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgrp7grr7grq/grr/grrHgr4Ff4K6k4K6/4K6Z4K+N4K6V4K6z4K+NX+CumuCvhuCuteCvjeCuteCuvuCur+CvjV/grqrgr4HgrqTgrqngr41f4K614K6/4K6v4K6+4K604K6p4K+NX+CuteCvhuCus+CvjeCus+Cuv1/grprgrqngrr8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4K6e4K6+X+CupOCuv1/grprgr4Zf4K6q4K+BX+CuteCuv1/grrXgr4Zf4K6aJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4K6H4K6p4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CuqOCuvuCus+CviF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CuqOCvh+CuseCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4K6V4K6f4K6o4K+N4K6kIOCuteCuvuCusOCuruCvjV0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgrofgrrLgr40nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCuruCvgeCuqeCvjScsXG4gICAgICAgICAgICBzOiAn4K6S4K6w4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgc3M6ICclZCDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgbTogJ+CukuCusOCvgSDgrqjgrr/grq7grr/grp/grq7gr40nLFxuICAgICAgICAgICAgbW06ICclZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgaDogJ+CukuCusOCvgSDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBkOiAn4K6S4K6w4K+BIOCuqOCuvuCus+CvjScsXG4gICAgICAgICAgICBkZDogJyVkIOCuqOCuvuCun+CvjeCuleCus+CvjScsXG4gICAgICAgICAgICBNOiAn4K6S4K6w4K+BIOCuruCuvuCupOCuruCvjScsXG4gICAgICAgICAgICBNTTogJyVkIOCuruCuvuCupOCumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICB5OiAn4K6S4K6w4K+BIOCuteCusOCvgeCun+CuruCvjScsXG4gICAgICAgICAgICB5eTogJyVkIOCuhuCuo+CvjeCun+CvgeCuleCus+CvjScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeCuteCupOCvgS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4K614K6k4K+BJztcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cvp+CvqOCvqeCvquCvq+CvrOCvreCvruCvr+Cvpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gcmVmZXIgaHR0cDovL3RhLndpa2lwZWRpYS5vcmcvcy8xZXIxXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/grq/grr7grq7grq7gr4184K614K+I4K6V4K6x4K+IfOCuleCuvuCusuCviHzgrqjgrqPgr43grqrgrpXgrrLgr4184K6O4K6x4K+N4K6q4K6+4K6f4K+BfOCuruCuvuCusuCviC8sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuteCviOCuleCuseCviCc7IC8vIOCuteCviOCuleCuseCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrpXgrr7grrLgr4gnOyAvLyDgrpXgrr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6o4K6j4K+N4K6q4K6V4K6y4K+NJzsgLy8g4K6o4K6j4K+N4K6q4K6V4K6y4K+NXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCujuCuseCvjeCuquCuvuCun+CvgSc7IC8vIOCujuCuseCvjeCuquCuvuCun+CvgVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq7grr7grrLgr4gnOyAvLyDgrq7grr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6v4K6+4K6u4K6u4K+NJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4K6v4K6+4K6u4K6u4K+NJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K614K+I4K6V4K6x4K+IJyB8fCBtZXJpZGllbSA9PT0gJ+CuleCuvuCusuCviCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrqjgrqPgr43grqrgrpXgrrLgr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGVsdWd1IFt0ZV1cbi8vISBhdXRob3IgOiBLcmlzaG5hIENoYWl0YW55YSBUaG90YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rY3Rob3RhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZScsIHtcbiAgICAgICAgbW9udGhzOiAn4LCc4LCo4LC14LCw4LC/X+Cwq+Cwv+CwrOCxjeCwsOCwteCwsOCwv1/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/4LCy4LGNX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGB4LCy4LGIX+CwhuCwl+CwuOCxjeCwn+CxgV/gsLjgsYbgsKrgsY3gsJ/gsYbgsILgsKzgsLDgsY1f4LCF4LCV4LGN4LCf4LGL4LCs4LCw4LGNX+CwqOCwteCwguCwrOCwsOCxjV/gsKHgsL/gsLjgsYbgsILgsKzgsLDgsY0nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CwnOCwqC5f4LCr4LC/4LCs4LGN4LCwLl/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/Ll/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJcuX+CwuOCxhuCwquCxjS5f4LCF4LCV4LGN4LCf4LGLLl/gsKjgsLUuX+CwoeCwv+CwuOCxhi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4LCG4LCm4LC/4LC14LC+4LCw4LCCX+CwuOCxi+CwruCwteCwvuCwsOCwgl/gsK7gsILgsJfgsLPgsLXgsL7gsLDgsIJf4LCs4LGB4LCn4LC14LC+4LCw4LCCX+Cwl+CxgeCwsOCxgeCwteCwvuCwsOCwgl/gsLbgsYHgsJXgsY3gsLDgsLXgsL7gsLDgsIJf4LC24LCo4LC/4LC14LC+4LCw4LCCJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgsIbgsKbgsL9f4LC44LGL4LCuX+CwruCwguCwl+Cws1/gsKzgsYHgsKdf4LCX4LGB4LCw4LGBX+CwtuCxgeCwleCxjeCwsF/gsLbgsKjgsL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LCGX+CwuOCxi1/gsK7gsIJf4LCs4LGBX+Cwl+CxgV/gsLbgsYFf4LC2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CwqOCxh+CwoeCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgsLDgsYfgsKrgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgsKjgsL/gsKjgsY3gsKhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Cwl+CwpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgsLLgsYsnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCwleCxjeCwsOCwv+CwpOCwgicsXG4gICAgICAgICAgICBzOiAn4LCV4LGK4LCo4LGN4LCo4LC/IOCwleCxjeCwt+Cwo+CwvuCwsuCxgScsXG4gICAgICAgICAgICBzczogJyVkIOCwuOCxhuCwleCwqOCxjeCwsuCxgScsXG4gICAgICAgICAgICBtOiAn4LCS4LCVIOCwqOCwv+CwruCwv+Cwt+CwgicsXG4gICAgICAgICAgICBtbTogJyVkIOCwqOCwv+CwruCwv+Cwt+CwvuCwsuCxgScsXG4gICAgICAgICAgICBoOiAn4LCS4LCVIOCwl+CwguCwnycsXG4gICAgICAgICAgICBoaDogJyVkIOCwl+CwguCwn+CwsuCxgScsXG4gICAgICAgICAgICBkOiAn4LCS4LCVIOCwsOCxi+CwnOCxgScsXG4gICAgICAgICAgICBkZDogJyVkIOCwsOCxi+CwnOCxgeCwsuCxgScsXG4gICAgICAgICAgICBNOiAn4LCS4LCVIOCwqOCxhuCwsicsXG4gICAgICAgICAgICBNTTogJyVkIOCwqOCxhuCwsuCwsuCxgScsXG4gICAgICAgICAgICB5OiAn4LCS4LCVIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwgicsXG4gICAgICAgICAgICB5eTogJyVkIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwvuCwsuCxgScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeCwtS8sXG4gICAgICAgIG9yZGluYWw6ICclZOCwtScsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsLDgsL7gsKTgsY3gsLDgsL984LCJ4LCm4LCv4LCCfOCwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgnzgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIIvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsLDgsL7gsKTgsY3gsLDgsL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsIngsKbgsK/gsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsIngsKbgsK/gsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGV0dW4gRGlsaSAoRWFzdCBUaW1vcikgW3RldF1cbi8vISBhdXRob3IgOiBKb3NodWEgQnJvb2tzIDogaHR0cHM6Ly9naXRodWIuY29tL2pvc2hicm9va3Ncbi8vISBhdXRob3IgOiBPbm9yaW8gRGUgSi4gQWZvbnNvIDogaHR0cHM6Ly9naXRodWIuY29tL21hcm9ib1xuLy8hIGF1dGhvciA6IFNvbmlhIFNpbW9lcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zb25pYXNpbW9lc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RldCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFuZWlydV9GZXZlcmVpcnVfTWFyc3VfQWJyaWxfTWFpdV9KdcOxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdEb21pbmd1X1NlZ3VuZGFfVGVyc2FfS3VhcnRhX0tpbnRhX1Nlc3RhX1NhYmFkdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RvbV9TZWdfVGVyc19LdWFfS2ludF9TZXN0X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEb19TZWdfVGVfS3VfS2lfU2VzX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09oaW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FiYW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2loYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIb3Jpc2VpayBpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VtYW5hIGtvdHVrXSBbaWhhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2loYSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgbGl1YmEnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZHUgYmFsdW4nLFxuICAgICAgICAgICAgc3M6ICdzZWd1bmR1ICVkJyxcbiAgICAgICAgICAgIG06ICdtaW51dHUgaWRhJyxcbiAgICAgICAgICAgIG1tOiAnbWludXR1ICVkJyxcbiAgICAgICAgICAgIGg6ICdvcmFzIGlkYScsXG4gICAgICAgICAgICBoaDogJ29yYXMgJWQnLFxuICAgICAgICAgICAgZDogJ2xvcm9uIGlkYScsXG4gICAgICAgICAgICBkZDogJ2xvcm9uICVkJyxcbiAgICAgICAgICAgIE06ICdmdWxhbiBpZGEnLFxuICAgICAgICAgICAgTU06ICdmdWxhbiAlZCcsXG4gICAgICAgICAgICB5OiAndGluYW4gaWRhJyxcbiAgICAgICAgICAgIHl5OiAndGluYW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhamlrIFt0Z11cbi8vISBhdXRob3IgOiBPcmlmIE4uIEpyLiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmlmLWpyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YPQvCcsXG4gICAgICAgIDE6ICct0YPQvCcsXG4gICAgICAgIDI6ICct0Y7QvCcsXG4gICAgICAgIDM6ICct0Y7QvCcsXG4gICAgICAgIDQ6ICct0YPQvCcsXG4gICAgICAgIDU6ICct0YPQvCcsXG4gICAgICAgIDY6ICct0YPQvCcsXG4gICAgICAgIDc6ICct0YPQvCcsXG4gICAgICAgIDg6ICct0YPQvCcsXG4gICAgICAgIDk6ICct0YPQvCcsXG4gICAgICAgIDEwOiAnLdGD0LwnLFxuICAgICAgICAxMjogJy3Rg9C8JyxcbiAgICAgICAgMTM6ICct0YPQvCcsXG4gICAgICAgIDIwOiAnLdGD0LwnLFxuICAgICAgICAzMDogJy3RjtC8JyxcbiAgICAgICAgNDA6ICct0YPQvCcsXG4gICAgICAgIDUwOiAnLdGD0LwnLFxuICAgICAgICA2MDogJy3Rg9C8JyxcbiAgICAgICAgNzA6ICct0YPQvCcsXG4gICAgICAgIDgwOiAnLdGD0LwnLFxuICAgICAgICA5MDogJy3Rg9C8JyxcbiAgICAgICAgMTAwOiAnLdGD0LwnLFxuICAgIH07XG5cbiAgICB2YXIgdGcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Lhf0YTQtdCy0YDQsNC70Lhf0LzQsNGA0YLQuF/QsNC/0YDQtdC70Lhf0LzQsNC50Lhf0LjRjtC90Lhf0LjRjtC70Lhf0LDQstCz0YPRgdGC0Lhf0YHQtdC90YLRj9Cx0YDQuF/QvtC60YLRj9Cx0YDQuF/QvdC+0Y/QsdGA0Lhf0LTQtdC60LDQsdGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0Y/QutGI0LDQvdCx0LVf0LTRg9GI0LDQvdCx0LVf0YHQtdGI0LDQvdCx0LVf0YfQvtGA0YjQsNC90LHQtV/Qv9Cw0L3St9GI0LDQvdCx0LVf0rfRg9C80YrQsF/RiNCw0L3QsdC1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0Y/RiNCxX9C00YjQsV/RgdGI0LFf0YfRiNCxX9C/0YjQsV/St9GD0Lxf0YjQvdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9GP0Yhf0LTRiF/RgdGIX9GH0Yhf0L/RiF/St9C8X9GI0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JjQvNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Ck0LDRgNC00L4g0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQlNC40YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQvtGP0L3QtNCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQs9GD0LfQsNGI0YLQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9Cx0LDRitC00LggJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC/0LXRiCcsXG4gICAgICAgICAgICBzOiAn0Y/QutGH0LDQvdC0INGB0L7QvdC40Y8nLFxuICAgICAgICAgICAgbTogJ9GP0Log0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIGg6ICfRj9C6INGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZDogJ9GP0Log0YDTr9C3JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0YDTr9C3JyxcbiAgICAgICAgICAgIE06ICfRj9C6INC80L7SsycsXG4gICAgICAgICAgICBNTTogJyVkINC80L7SsycsXG4gICAgICAgICAgICB5OiAn0Y/QuiDRgdC+0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDRgdC+0LsnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0YjQsNCxfNGB0YPQsdKzfNGA06/Qt3zQsdC10LPQvtKzLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn0YjQsNCxJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YHRg9Cx0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YDTr9C3Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfQsdC10LPQvtKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YHRg9Cx0rMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA06/Qtyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LHQtdCz0L7Ssyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRg9C8fNGO0LwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxdGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGhhaSBbdGhdXG4vLyEgYXV0aG9yIDogS3JpZHNhZGEgVGhhbmFidWxwb25nIDogaHR0cHM6Ly9naXRodWIuY29tL3Npcm5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0aCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RoJywge1xuICAgICAgICBtb250aHM6ICfguKHguIHguKPguLLguITguKFf4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4LihX+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITguKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4LihLuC4hC5f4LiBLuC4ni5f4Lih4Li1LuC4hC5f4LmA4LihLuC4oi5f4LieLuC4hC5f4Lih4Li0LuC4oi5f4LiBLuC4hC5f4LiqLuC4hC5f4LiBLuC4oi5f4LiVLuC4hC5f4LieLuC4oi5f4LiYLuC4hC4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4LiqX+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksIC8vIHllcywgdGhyZWUgY2hhcmFjdGVycyBkaWZmZXJlbmNlXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgICAgICBMTExMOiAn4Lin4Lix4LiZZGRkZOC4l+C4teC5iCBEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4Lit4Li14LiBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C4l+C4teC5iOC5geC4peC5ieC4pycsXG4gICAgICAgICAgICBzOiAn4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG06ICcxIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtbTogJyVkIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBoOiAnMSDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgaGg6ICclZCDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgZDogJzEg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIHc6ICcxIOC4quC4seC4m+C4lOC4suC4q+C5jCcsXG4gICAgICAgICAgICB3dzogJyVkIOC4quC4seC4m+C4lOC4suC4q+C5jCcsXG4gICAgICAgICAgICBNOiAnMSDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgTU06ICclZCDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgeTogJzEg4Lib4Li1JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Lib4Li1JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUdXJrbWVuIFt0a11cbi8vISBhdXRob3IgOiBBdGFteXJhdCBBYmR5cmFobWFub3YgOiBodHRwczovL2dpdGh1Yi5jb20vYXRhbXlyYXRhYmR5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6IFwiJ2luamlcIixcbiAgICAgICAgNTogXCInaW5qaVwiLFxuICAgICAgICA4OiBcIidpbmppXCIsXG4gICAgICAgIDcwOiBcIidpbmppXCIsXG4gICAgICAgIDgwOiBcIidpbmppXCIsXG4gICAgICAgIDI6IFwiJ25qaVwiLFxuICAgICAgICA3OiBcIiduamlcIixcbiAgICAgICAgMjA6IFwiJ25qaVwiLFxuICAgICAgICA1MDogXCInbmppXCIsXG4gICAgICAgIDM6IFwiJ8O8bmppXCIsXG4gICAgICAgIDQ6IFwiJ8O8bmppXCIsXG4gICAgICAgIDEwMDogXCInw7xuamlcIixcbiAgICAgICAgNjogXCInbmp5XCIsXG4gICAgICAgIDk6IFwiJ3VuanlcIixcbiAgICAgICAgMTA6IFwiJ3VuanlcIixcbiAgICAgICAgMzA6IFwiJ3VuanlcIixcbiAgICAgICAgNjA6IFwiJ3luanlcIixcbiAgICAgICAgOTA6IFwiJ3luanlcIixcbiAgICB9O1xuXG4gICAgdmFyIHRrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGsnLCB7XG4gICAgICAgIG1vbnRoczogJ8OdYW53YXJfRmV3cmFsX01hcnRfQXByZWxfTWHDvV9Jw711bl9Jw711bF9Bd2d1c3RfU2VudMO9YWJyX09rdMO9YWJyX05vw71hYnJfRGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ8OdYW5fRmV3X01hcl9BcHJfTWHDvV9Jw71uX0nDvWxfQXdnX1Nlbl9Pa3RfTm/DvV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnw51la8WfZW5iZV9EdcWfZW5iZV9TacWfZW5iZV/Dh2FyxZ9lbmJlX1BlbsWfZW5iZV9Bbm5hX8WeZW5iZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ8OdZWtfRHXFn19TacWfX8OHYXJfUGVuX0Fubl/FnmVuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ8Oda19ExZ9fU8WfX8OHcl9Qbl9Bbl/Fnm4nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2VydGlyIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvMO9bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZ2XDp2VuXSBkZGRkIFtzYWdhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb8WIJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDtsWIJyxcbiAgICAgICAgICAgIHM6ICdiaXJuw6TDp2Ugc2VrdW50JyxcbiAgICAgICAgICAgIG06ICdiaXIgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dCcsXG4gICAgICAgICAgICBoOiAnYmlyIHNhZ2F0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FnYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICBNOiAnYmlyIGHDvScsXG4gICAgICAgICAgICBNTTogJyVkIGHDvScsXG4gICAgICAgICAgICB5OiAnYmlyIMO9eWwnLFxuICAgICAgICAgICAgeXk6ICclZCDDvXlsJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgXCIndW5qeVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhZ2Fsb2cgKFBoaWxpcHBpbmVzKSBbdGwtcGhdXG4vLyEgYXV0aG9yIDogRGFuIEhhZ21hbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWdtYW5kYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0bFBoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGwtcGgnLCB7XG4gICAgICAgIG1vbnRoczogJ0VuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnTU0vRC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnTFQgW25nYXlvbmcgYXJhd10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCdWthcyBuZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnTFQgW2thaGFwb25dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3NhIGxvb2IgbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgczogJ2lsYW5nIHNlZ3VuZG8nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG06ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG8nLFxuICAgICAgICAgICAgaDogJ2lzYW5nIG9yYXMnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICdpc2FuZyBhcmF3JyxcbiAgICAgICAgICAgIGRkOiAnJWQgYXJhdycsXG4gICAgICAgICAgICBNOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU06ICclZCBidXdhbicsXG4gICAgICAgICAgICB5OiAnaXNhbmcgdGFvbicsXG4gICAgICAgICAgICB5eTogJyVkIHRhb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxQaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLbGluZ29uIFt0bGhdXG4vLyEgYXV0aG9yIDogRG9taW5pa2EgS3J1ayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWFyYW50aHJvc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBudW1iZXJzTm91bnMgPSAncGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQnLnNwbGl0KCdfJyk7XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVGdXR1cmUob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ2xlUydcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnd2FRJ1xuICAgICAgICAgICAgICAgICAgOiBvdXRwdXQuaW5kZXhPZignRElTJykgIT09IC0xXG4gICAgICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnbmVtJ1xuICAgICAgICAgICAgICAgICAgICA6IHRpbWUgKyAnIHBJcSc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVBhc3Qob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ0h14oCZJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMVxuICAgICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICd3ZW4nXG4gICAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICdiZW4nXG4gICAgICAgICAgICAgICAgICAgIDogdGltZSArICcgcmV0JztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtYmVyTm91biA9IG51bWJlckFzTm91bihudW1iZXIpO1xuICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBsdXAnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyB0dXAnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyByZXAnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYWonO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYXInO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBESVMnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnVtYmVyQXNOb3VuKG51bWJlcikge1xuICAgICAgICB2YXIgaHVuZHJlZCA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMDApIC8gMTAwKSxcbiAgICAgICAgICAgIHRlbiA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMCkgLyAxMCksXG4gICAgICAgICAgICBvbmUgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgIHdvcmQgPSAnJztcbiAgICAgICAgaWYgKGh1bmRyZWQgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9IG51bWJlcnNOb3Vuc1todW5kcmVkXSArICd2YXRsaCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbiA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKHdvcmQgIT09ICcnID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW3Rlbl0gKyAnbWFIJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob25lID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAod29yZCAhPT0gJycgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbb25lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd29yZCA9PT0gJycgPyAncGFnaCcgOiB3b3JkO1xuICAgIH1cblxuICAgIHZhciB0bGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bGgnLCB7XG4gICAgICAgIG1vbnRoczogJ3RlcmHigJkgamFyIHdh4oCZX3RlcmHigJkgamFyIGNoYeKAmV90ZXJh4oCZIGphciB3ZWpfdGVyYeKAmSBqYXIgbG9TX3RlcmHigJkgamFyIHZhZ2hfdGVyYeKAmSBqYXIgamF2X3RlcmHigJkgamFyIFNvY2hfdGVyYeKAmSBqYXIgY2hvcmdoX3RlcmHigJkgamFyIEh1dF90ZXJh4oCZIGphciB3YeKAmW1hSF90ZXJh4oCZIGphciB3YeKAmW1hSCB3YeKAmV90ZXJh4oCZIGphciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phciB3YeKAmV9qYXIgY2hh4oCZX2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2HigJltYUhfamFyIHdh4oCZbWFIIHdh4oCZX2phciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDpcbiAgICAgICAgICAgICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46XG4gICAgICAgICAgICAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGFIamFqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3dh4oCZbGVTXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3dh4oCZSHXigJldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiB0cmFuc2xhdGVGdXR1cmUsXG4gICAgICAgICAgICBwYXN0OiB0cmFuc2xhdGVQYXN0LFxuICAgICAgICAgICAgczogJ3B1UyBsdXAnLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06ICd3YeKAmSB0dXAnLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6ICd3YeKAmSByZXAnLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICd3YeKAmSBqYWonLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICd3YeKAmSBqYXInLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICd3YeKAmSBESVMnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0bGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVHVya2lzaCBbdHJdXG4vLyEgYXV0aG9ycyA6IEVyaGFuIEd1bmRvZ2FuIDogaHR0cHM6Ly9naXRodWIuY29tL2VyaGFuZ3VuZG9nYW4sXG4vLyEgICAgICAgICAgIEJ1cmFrIFlpxJ9pdCBLYXlhOiBodHRwczovL2dpdGh1Yi5jb20vQllLXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6IFwiJ2luY2lcIixcbiAgICAgICAgNTogXCInaW5jaVwiLFxuICAgICAgICA4OiBcIidpbmNpXCIsXG4gICAgICAgIDcwOiBcIidpbmNpXCIsXG4gICAgICAgIDgwOiBcIidpbmNpXCIsXG4gICAgICAgIDI6IFwiJ25jaVwiLFxuICAgICAgICA3OiBcIiduY2lcIixcbiAgICAgICAgMjA6IFwiJ25jaVwiLFxuICAgICAgICA1MDogXCInbmNpXCIsXG4gICAgICAgIDM6IFwiJ8O8bmPDvFwiLFxuICAgICAgICA0OiBcIifDvG5jw7xcIixcbiAgICAgICAgMTAwOiBcIifDvG5jw7xcIixcbiAgICAgICAgNjogXCInbmPEsVwiLFxuICAgICAgICA5OiBcIid1bmN1XCIsXG4gICAgICAgIDEwOiBcIid1bmN1XCIsXG4gICAgICAgIDMwOiBcIid1bmN1XCIsXG4gICAgICAgIDYwOiBcIifEsW5jxLFcIixcbiAgICAgICAgOTA6IFwiJ8SxbmPEsVwiLFxuICAgIH07XG5cbiAgICB2YXIgdHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0cicsIHtcbiAgICAgICAgbW9udGhzOiAnT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnT2NhX8WedWJfTWFyX05pc19NYXlfSGF6X1RlbV9BxJ91X0V5bF9Fa2lfS2FzX0FyYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2knLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdQYXpfUHp0X1NhbF/Dh2FyX1Blcl9DdW1fQ210Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1B6X1B0X1NhX8OHYV9QZV9DdV9DdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfDtsO2JyA6ICfDlsOWJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnw7ZzJyA6ICfDllMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvw7bDtnzDlsOWfMO2c3zDllMvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ8O2cycgfHwgaW5wdXQgPT09ICfDllMnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3lhcsSxbiBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tnZWxlY2VrXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvG5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2dlw6dlbl0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7ZuY2UnLFxuICAgICAgICAgICAgczogJ2Jpcmthw6cgc2FuaXllJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FuaXllJyxcbiAgICAgICAgICAgIG06ICdiaXIgZGFraWthJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZGFraWthJyxcbiAgICAgICAgICAgIGg6ICdiaXIgc2FhdCcsXG4gICAgICAgICAgICBoaDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICB3OiAnYmlyIGhhZnRhJyxcbiAgICAgICAgICAgIHd3OiAnJWQgaGFmdGEnLFxuICAgICAgICAgICAgTTogJ2JpciBheScsXG4gICAgICAgICAgICBNTTogJyVkIGF5JyxcbiAgICAgICAgICAgIHk6ICdiaXIgecSxbCcsXG4gICAgICAgICAgICB5eTogJyVkIHnEsWwnLFxuICAgICAgICB9LFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBcIifEsW5jxLFcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYWxvc3NhbiBbdHpsXVxuLy8hIGF1dGhvciA6IFJvYmluIHZhbiBkZXIgVmxpZXQgOiBodHRwczovL2dpdGh1Yi5jb20vcm9iaW4wdmFuMGRlcjB2XG4vLyEgYXV0aG9yIDogSXVzdMOsIENhbnVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICAvLyBBZnRlciB0aGUgeWVhciB0aGVyZSBzaG91bGQgYmUgYSBzbGFzaCBhbmQgdGhlIGFtb3VudCBvZiB5ZWFycyBzaW5jZSBEZWNlbWJlciAyNiwgMTk3OSBpbiBSb21hbiBudW1lcmFscy5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB0b28gZGlmZmljdWx0IChtYXliZSBldmVuIGltcG9zc2libGUpIHRvIGFkZC5cbiAgICB2YXIgdHpsID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHpsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmV2cmFnbGhfTWFyw6dfQXZyw691X01haV9Hw7xuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3DDpHRzX05vZW12YXJfWmVjZW12YXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0Zldl9NYXJfQXZyX01haV9Hw7xuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1PDumxhZGlfTMO6bmXDp2lfTWFpdHppX03DoXJjdXJpX1how7phZGlfVmnDqW5lcsOnaV9Tw6F0dXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU8O6bF9Mw7puX01haV9Nw6FyX1how7pfVmnDqV9Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1PDul9Mw7pfTWFfTcOhX1hoX1ZpX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kXFwnb3xkXFwnYS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBcImQnb1wiID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ29cIiA6IFwiRCdPXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ2FcIiA6IFwiRCdBXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW294aGkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZGVtw6Agw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVpcmkgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvc3ByZWkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2phJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsndmllbnNhcyBzZWN1bmRzJywgXCInaWVuc2FzIHNlY3VuZHNcIl0sXG4gICAgICAgICAgICBzczogW251bWJlciArICcgc2VjdW5kcycsICcnICsgbnVtYmVyICsgJyBzZWN1bmRzJ10sXG4gICAgICAgICAgICBtOiBbXCInbiBtw611dFwiLCBcIidpZW5zIG3DrXV0XCJdLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG3DrXV0cycsICcnICsgbnVtYmVyICsgJyBtw611dHMnXSxcbiAgICAgICAgICAgIGg6IFtcIiduIMO+b3JhXCIsIFwiJ2llbnNhIMO+b3JhXCJdLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIMO+b3JhcycsICcnICsgbnVtYmVyICsgJyDDvm9yYXMnXSxcbiAgICAgICAgICAgIGQ6IFtcIiduIHppdWFcIiwgXCInaWVuc2Egeml1YVwiXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsgJyB6aXVhcyddLFxuICAgICAgICAgICAgTTogW1wiJ24gbWVzXCIsIFwiJ2llbnMgbWVzXCJdLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIG1lc2VuJywgJycgKyBudW1iZXIgKyAnIG1lc2VuJ10sXG4gICAgICAgICAgICB5OiBbXCInbiBhclwiLCBcIidpZW5zIGFyXCJdLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIGFycycsICcnICsgbnVtYmVyICsgJyBhcnMnXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlXG4gICAgICAgICAgICA/IGZvcm1hdFtrZXldWzBdXG4gICAgICAgICAgICA6IHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgICAgPyBmb3JtYXRba2V5XVswXVxuICAgICAgICAgICAgICA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHJldHVybiB0emw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2VudHJhbCBBdGxhcyBUYW1hemlnaHQgTGF0aW4gW3R6bS1sYXRuXVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQgOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHptTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bS1sYXRuJywge1xuICAgICAgICBtb250aHM6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2nhuI15YXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2FzZGtoIGddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXNrYSBnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbYXNzYW50IGddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWRraCBzIHlhbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAneWFuICVzJyxcbiAgICAgICAgICAgIHM6ICdpbWlrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgaW1paycsXG4gICAgICAgICAgICBtOiAnbWludeG4jScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnXhuI0nLFxuICAgICAgICAgICAgaDogJ3NhyZthJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGFzc2HJm2luJyxcbiAgICAgICAgICAgIGQ6ICdhc3MnLFxuICAgICAgICAgICAgZGQ6ICclZCBvc3NhbicsXG4gICAgICAgICAgICBNOiAnYXlvd3InLFxuICAgICAgICAgICAgTU06ICclZCBpeXlpcm4nLFxuICAgICAgICAgICAgeTogJ2FzZ2FzJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaXNnYXNuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0em1MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENlbnRyYWwgQXRsYXMgVGFtYXppZ2h0IFt0em1dXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0em0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0em0nLCB7XG4gICAgICAgIG1vbnRoczogJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vitLDitZnitLfitYUg4rS0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+K0sOK1meK0veK0sCDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+K0sOK1muK0sOK1j+K1nCDitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+K0t+K0sOK0t+K1hSDitZkg4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgczogJ+K1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBzczogJyVkIOK1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBtOiAn4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIGg6ICfitZnitLDitYTitLAnLFxuICAgICAgICAgICAgaGg6ICclZCDitZzitLDitZnitZnitLDitYTitYnitY8nLFxuICAgICAgICAgICAgZDogJ+K0sOK1meK1mScsXG4gICAgICAgICAgICBkZDogJyVkIG/itZnitZnitLDitY8nLFxuICAgICAgICAgICAgTTogJ+K0sOK1om/itZPitZQnLFxuICAgICAgICAgICAgTU06ICclZCDitYnitaLitaLitYnitZTitY8nLFxuICAgICAgICAgICAgeTogJ+K0sOK1meK0s+K0sOK1mScsXG4gICAgICAgICAgICB5eTogJyVkIOK1ieK1meK0s+K0sOK1meK1jycsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHptO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFV5Z2h1ciAoQ2hpbmEpIFt1Zy1jbl1cbi8vISBhdXRob3I6IGJveWFxIDogaHR0cHM6Ly9naXRodWIuY29tL2JveWFxXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdWdDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VnLWNuJywge1xuICAgICAgICBtb250aHM6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrYp9mG24vYp9ixX9mB25Dbi9ix2KfZhF/Zhdin2LHYql/Yptin2b7YsduQ2YRf2YXYp9mKX9im2YnZituH2YZf2KbZidmK24fZhF/Yptin24vYutuH2LPYql/Ys9uQ2YbYqtuV2KjZidixX9im24bZg9iq25XYqNmJ2LFf2YbZiNmK2KfYqNmJ2LFf2K/bkNmD2KfYqNmJ2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfZituV2YPYtNuV2YbYqNuVX9iv24jYtNuV2YbYqNuVX9iz25XZiti025XZhtio25Vf2obYp9ix2LTbldmG2KjblV/ZvtuV2YrYtNuV2YbYqNuVX9is24jZhduVX9i025XZhtio25UnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfZituVX9iv24hf2LPblV/ahtinX9m+25Vf2KzbiF/YtNuVJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZiScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YrbkNix2YnZhSDZg9uQ2obblXzYs9uV2r7bldixfNqG24jYtNiq2YnZhiDYqNuH2LHbh9mGfNqG24jYtHzahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhnzZg9uV2oYvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfZituQ2LHZidmFINmD25DahtuVJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2LPbldq+25XYsScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINmD25DZitmJ2YYnIHx8IG1lcmlkaWVtID09PSAn2YPbldqGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mK25DYsdmJ2YUg2YPbkNqG25UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LPbldq+25XYsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINio24fYsduH2YYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINmD25DZitmJ2YYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mD25Xahic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9io24jar9uI2YYg2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYptuV2KrblSDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vZg9uQ2YTbldix2YPZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYqtuG2YbbiNqv24jZhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2KbYp9mE2K/ZidmG2YLZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZg9uQ2YrZidmGJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYqNuH2LHbh9mGJyxcbiAgICAgICAgICAgIHM6ICfZhtuV2obahtuVINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBzczogJyVkINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBtOiAn2KjZidixINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgbW06ICclZCDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIGg6ICfYqNmJ2LEg2LPYp9im25XYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYptuV2KonLFxuICAgICAgICAgICAgZDogJ9io2YnYsSDZg9uI2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDZg9uI2YYnLFxuICAgICAgICAgICAgTTogJ9io2YnYsSDYptin2YonLFxuICAgICAgICAgICAgTU06ICclZCDYptin2YonLFxuICAgICAgICAgICAgeTogJ9io2YnYsSDZitmJ2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDZitmJ2YQnLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSgt2YPbiNmG2Yl8Ldim2KfZinwt2r7bldm+2KrblSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct2YPbiNmG2YknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3avtuV2b7YqtuVJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1Z0NuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFVrcmFpbmlhbiBbdWtdXG4vLyEgYXV0aG9yIDogemVtbGFuaW4gOiBodHRwczovL2dpdGh1Yi5jb20vemVtbGFuaW5cbi8vISBBdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgICA/IGZvcm1zWzFdXG4gICAgICAgICAgICAgIDogZm9ybXNbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHNzOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNC4X9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG1tOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvScgOiAn0YXQstC40LvQuNC90YNf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyxcbiAgICAgICAgICAgIGhoOiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvScgOiAn0LPQvtC00LjQvdGDX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyxcbiAgICAgICAgICAgIGRkOiAn0LTQtdC90Yxf0LTQvdGWX9C00L3RltCyJyxcbiAgICAgICAgICAgIE1NOiAn0LzRltGB0Y/RhtGMX9C80ZbRgdGP0YbRll/QvNGW0YHRj9GG0ZbQsicsXG4gICAgICAgICAgICB5eTogJ9GA0ZbQul/RgNC+0LrQuF/RgNC+0LrRltCyJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0LjQu9C40L3QsCcgOiAn0YXQstC40LvQuNC90YMnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9C+0LTQuNC90LAnIDogJ9Cz0L7QtNC40L3Rgyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c0Nhc2VSZXBsYWNlKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSB7XG4gICAgICAgICAgICAgICAgbm9taW5hdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgJ9C90LXQtNGW0LvRj1/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00LBf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGPX9GB0YPQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhY2N1c2F0aXZlOlxuICAgICAgICAgICAgICAgICAgICAn0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGdlbml0aXZlOlxuICAgICAgICAgICAgICAgICAgICAn0L3QtdC00ZbQu9GWX9C/0L7QvdC10LTRltC70LrQsF/QstGW0LLRgtC+0YDQutCwX9GB0LXRgNC10LTQuF/Rh9C10YLQstC10YDQs9CwX9C/4oCZ0Y/RgtC90LjRhtGWX9GB0YPQsdC+0YLQuCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBub3VuQ2FzZTtcblxuICAgICAgICBpZiAobSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ11cbiAgICAgICAgICAgICAgICAuc2xpY2UoMSwgNylcbiAgICAgICAgICAgICAgICAuY29uY2F0KHdlZWtkYXlzWydub21pbmF0aXZlJ10uc2xpY2UoMCwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ107XG4gICAgICAgIH1cblxuICAgICAgICBub3VuQ2FzZSA9IC8oXFxbW9CS0LLQo9GDXVxcXSkgP2RkZGQvLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgPyAnYWNjdXNhdGl2ZSdcbiAgICAgICAgICAgIDogL1xcWz8oPzrQvNC40L3Rg9C70L7Rl3zQvdCw0YHRgtGD0L/QvdC+0ZcpPyA/XFxdID9kZGRkLy50ZXN0KGZvcm1hdClcbiAgICAgICAgICAgICAgPyAnZ2VuaXRpdmUnXG4gICAgICAgICAgICAgIDogJ25vbWluYXRpdmUnO1xuICAgICAgICByZXR1cm4gd2Vla2RheXNbbm91bkNhc2VdW20uZGF5KCldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzSG91cnNGdW5jdGlvbihzdHIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIgKyAn0L4nICsgKHRoaXMuaG91cnMoKSA9PT0gMTEgPyAn0LEnIDogJycpICsgJ10gTFQnO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB1ayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VrJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLRltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C40YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9GB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINGALicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSxcbiAgICAgICAgICAgIG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCwICcpLFxuICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQktGH0L7RgNCwICcpLFxuICAgICAgICAgICAgbmV4dFdlZWs6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINGC0L7QvNGDJyxcbiAgICAgICAgICAgIHM6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzRltGB0Y/RhtGMJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ9GA0ZbQuicsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTS4gRS46IHRob3NlIHR3byBhcmUgdmlydHVhbGx5IHVudXNlZCBidXQgYSB1c2VyIG1pZ2h0IHdhbnQgdG8gaW1wbGVtZW50IHRoZW0gZm9yIGhpcy9oZXIgd2Vic2l0ZSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GWfNGA0LDQvdC60YN80LTQvdGPfNCy0LXRh9C+0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GWJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3QutGDJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C+0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXJkdSBbdXJdXG4vLyEgYXV0aG9yIDogU2F3b29kIEFsYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaWJuZXNheWVlZFxuLy8hIGF1dGhvciA6IFphY2sgOiBodHRwczovL2dpdGh1Yi5jb20vWmFja1Zpc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNmG2YjYsduMJyxcbiAgICAgICAgICAgICfZgdix2YjYsduMJyxcbiAgICAgICAgICAgICfZhdin2LHahicsXG4gICAgICAgICAgICAn2KfZvtix24zZhCcsXG4gICAgICAgICAgICAn2YXYptuMJyxcbiAgICAgICAgICAgICfYrNmI2YYnLFxuICAgICAgICAgICAgJ9is2YjZhNin2KbbjCcsXG4gICAgICAgICAgICAn2Kfar9iz2KonLFxuICAgICAgICAgICAgJ9iz2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9in2qnYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICAgICAn2K/Ys9mF2KjYsScsXG4gICAgICAgIF0sXG4gICAgICAgIGRheXMgPSBbJ9in2KrZiNin2LEnLCAn2b7bjNixJywgJ9mF2Ybar9mEJywgJ9io2K/avicsICfYrNmF2LnYsdin2KonLCAn2KzZhdi524EnLCAn24HZgdiq24EnXTtcblxuICAgIHZhciB1ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VyJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9ii2Kwg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2qnZhCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1var9iw2LTYqtuBINix2YjYsiDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2q/YsNi02KrbgV0gZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2KjYudivJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDZgtio2YQnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBtOiAn2KfbjNqpINmF2YbZuScsXG4gICAgICAgICAgICBtbTogJyVkINmF2YbZuScsXG4gICAgICAgICAgICBoOiAn2KfbjNqpINqv2r7Zhtm524EnLFxuICAgICAgICAgICAgaGg6ICclZCDar9q+2YbZuduSJyxcbiAgICAgICAgICAgIGQ6ICfYp9uM2qkg2K/ZhicsXG4gICAgICAgICAgICBkZDogJyVkINiv2YYnLFxuICAgICAgICAgICAgTTogJ9in24zaqSDZhdin24EnLFxuICAgICAgICAgICAgTU06ICclZCDZhdin24EnLFxuICAgICAgICAgICAgeTogJ9in24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVemJlayBMYXRpbiBbdXotbGF0bl1cbi8vISBhdXRob3IgOiBSYXN1bGJlayBNaXJ6YXlldiA6IGdpdGh1Yi5jb20vUmFzdWxiZWVla1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHV6TGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6LWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ1lhbnZhcl9GZXZyYWxfTWFydF9BcHJlbF9NYXlfSXl1bl9JeXVsX0F2Z3VzdF9TZW50YWJyX09rdGFicl9Ob3lhYnJfRGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1lhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2Z19TZW5fT2t0X05veV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1lha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnWWFrX0R1c2hfU2VzaF9DaG9yX1BheV9KdW1fU2hhbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdZYV9EdV9TZV9DaG9fUGFfSnVfU2hhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdEIE1NTU0gWVlZWSwgZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0J1Z3VuIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tFcnRhZ2FdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZWNoYSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBcIltPJ3RnYW5dIGRkZGQgW2t1bmkgc29hdF0gTFQgW2RhXVwiLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdZYXFpbiAlcyBpY2hpZGEnLFxuICAgICAgICAgICAgcGFzdDogJ0JpciBuZWNoYSAlcyBvbGRpbicsXG4gICAgICAgICAgICBzOiAnc29uaXlhJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29uaXlhJyxcbiAgICAgICAgICAgIG06ICdiaXIgZGFxaXFhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZGFxaXFhJyxcbiAgICAgICAgICAgIGg6ICdiaXIgc29hdCcsXG4gICAgICAgICAgICBoaDogJyVkIHNvYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBrdW4nLFxuICAgICAgICAgICAgZGQ6ICclZCBrdW4nLFxuICAgICAgICAgICAgTTogJ2JpciBveScsXG4gICAgICAgICAgICBNTTogJyVkIG95JyxcbiAgICAgICAgICAgIHk6ICdiaXIgeWlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWlsJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6TGF0bjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVemJlayBbdXpdXG4vLyEgYXV0aG9yIDogU2FyZG9yIE11bWlub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbXVtaW5vZmZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1eiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6Jywge1xuICAgICAgICBtb250aHM6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0K/QutGI0LDQvdCx0LBf0JTRg9GI0LDQvdCx0LBf0KHQtdGI0LDQvdCx0LBf0KfQvtGA0YjQsNC90LHQsF/Qn9Cw0LnRiNCw0L3QsdCwX9CW0YPQvNCwX9Co0LDQvdCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQr9C60Yhf0JTRg9GIX9Ch0LXRiF/Qp9C+0YBf0J/QsNC5X9CW0YPQvF/QqNCw0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0K/Qul/QlNGDX9Ch0LVf0KfQvl/Qn9CwX9CW0YNf0KjQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdGD0LPRg9C9INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQrdGA0YLQsNCz0LBdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YfQsCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Cj0YLQs9Cw0L1dIGRkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQr9C60LjQvSAlcyDQuNGH0LjQtNCwJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQkdC40YAg0L3QtdGH0LAgJXMg0L7Qu9C00LjQvScsXG4gICAgICAgICAgICBzOiAn0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIG06ICfQsdC40YAg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIGg6ICfQsdC40YAg0YHQvtCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHQuNGAINC60YPQvScsXG4gICAgICAgICAgICBkZDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNOiAn0LHQuNGAINC+0LknLFxuICAgICAgICAgICAgTU06ICclZCDQvtC5JyxcbiAgICAgICAgICAgIHk6ICfQsdC40YAg0LnQuNC7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LnQuNC7JyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFZpZXRuYW1lc2UgW3ZpXVxuLy8hIGF1dGhvciA6IEJhbmcgTmd1eWVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jhbmdua1xuLy8hIGF1dGhvciA6IENoaWVuIEtpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2hpZW5raXJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd2aScsIHtcbiAgICAgICAgbW9udGhzOiAndGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ1RoZyAwMV9UaGcgMDJfVGhnIDAzX1RoZyAwNF9UaGcgMDVfVGhnIDA2X1RoZyAwN19UaGcgMDhfVGhnIDA5X1RoZyAxMF9UaGcgMTFfVGhnIDEyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3NhfGNoL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eY2gkL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnc2EnIDogJ1NBJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnY2gnIDogJ0NIJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW27Eg21dIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ0REL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSMO0bSBuYXkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tOZ8OgeSBtYWkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIw7RtIHF1YSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3R14bqnbiB0csaw4bubYyBsw7pjXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHThu5tpJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0csaw4bubYycsXG4gICAgICAgICAgICBzOiAndsOgaSBnacOieScsXG4gICAgICAgICAgICBzczogJyVkIGdpw6J5JyxcbiAgICAgICAgICAgIG06ICdt4buZdCBwaMO6dCcsXG4gICAgICAgICAgICBtbTogJyVkIHBow7p0JyxcbiAgICAgICAgICAgIGg6ICdt4buZdCBnaeG7nScsXG4gICAgICAgICAgICBoaDogJyVkIGdp4budJyxcbiAgICAgICAgICAgIGQ6ICdt4buZdCBuZ8OgeScsXG4gICAgICAgICAgICBkZDogJyVkIG5nw6B5JyxcbiAgICAgICAgICAgIHc6ICdt4buZdCB0deG6p24nLFxuICAgICAgICAgICAgd3c6ICclZCB0deG6p24nLFxuICAgICAgICAgICAgTTogJ23hu5l0IHRow6FuZycsXG4gICAgICAgICAgICBNTTogJyVkIHRow6FuZycsXG4gICAgICAgICAgICB5OiAnbeG7mXQgbsSDbScsXG4gICAgICAgICAgICB5eTogJyVkIG7Eg20nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUHNldWRvIFt4LXBzZXVkb11cbi8vISBhdXRob3IgOiBBbmRyZXcgSG9vZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXdob29kMTI1XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgeFBzZXVkbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3gtcHNldWRvJywge1xuICAgICAgICBtb250aHM6ICdKfsOhw7HDusOhfnLDvV9GfsOpYnLDun7DoXLDvV9+TcOhcmN+aF/DgXB+csOtbF9+TcOhw71ffkrDusOxw6l+X0rDumx+w71fw4HDun5nw7pzdH5fU8OpcH50w6ltYn7DqXJfw5N+Y3TDs2J+w6lyX8ORfsOzdsOpbX5iw6lyX35Ew6ljw6l+bWLDqXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0p+w6HDsV9+RsOpYl9+TcOhcl9+w4Fwcl9+TcOhw71ffkrDusOxX35Kw7psX37DgcO6Z19+U8OpcF9+w5NjdF9+w5HDs3ZffkTDqWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU37DusOxX35Nw7PDsV9+VMO6w6lfflfDqWRfflRow7pffkZyw61fflPDoXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU37Dul9Nw7N+X1TDul9+V8OpX1R+aF9Gcn5fU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVH7Ds2TDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVH7Ds23Ds35ycsOzfncgw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vDnX7DqXN0fsOpcmTDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0x+w6FzdF0gZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8OtfsOxICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDoX5nw7MnLFxuICAgICAgICAgICAgczogJ8OhIH5mw6l3IH5zw6ljw7N+w7FkcycsXG4gICAgICAgICAgICBzczogJyVkIHN+w6ljw7PDsX5kcycsXG4gICAgICAgICAgICBtOiAnw6Egfm3DrcOxfsO6dMOpJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbX7DrcOxw7p+dMOpcycsXG4gICAgICAgICAgICBoOiAnw6F+w7EgaMOzfsO6cicsXG4gICAgICAgICAgICBoaDogJyVkIGh+w7PDunJzJyxcbiAgICAgICAgICAgIGQ6ICfDoSB+ZMOhw70nLFxuICAgICAgICAgICAgZGQ6ICclZCBkfsOhw71zJyxcbiAgICAgICAgICAgIE06ICfDoSB+bcOzw7F+dGgnLFxuICAgICAgICAgICAgTU06ICclZCBtfsOzw7F0fmhzJyxcbiAgICAgICAgICAgIHk6ICfDoSB+w73DqcOhcicsXG4gICAgICAgICAgICB5eTogJyVkIMO9fsOpw6FycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB4UHNldWRvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFlvcnViYSBOaWdlcmlhIFt5b11cbi8vISBhdXRob3IgOiBBdG9sYWdiZSBBYmlzb3llIDogaHR0cHM6Ly9naXRodWIuY29tL2FuZGVsYS1iYXRvbGFnYmVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB5byA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3lvJywge1xuICAgICAgICBtb250aHM6ICdT4bq5zIFy4bq5zIFfRcyAcmXMgGxlzIBf4bq4cuG6ucyAbmHMgF9JzIBnYmXMgV9FzIBiaWJpX0/MgGt1zIBkdV9BZ+G6uW1vX0/MgGd1zIFuX093ZXdlX+G7jMyAd2HMgHJhzIBfQmXMgWx1zIFf4buMzIBw4bq5zIDMgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdT4bq5zIFyX0XMgHJsX+G6uHJuX0nMgGdiX0XMgGJpX0/MgGt1zIBfQWfhurlfT8yAZ3XMgV9Pd2Vf4buMzIB3YcyAX0JlzIFsX+G7jMyAcOG6ucyAzIAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnQcyAacyAa3XMgV9BamXMgV9JzIBz4bq5zIFndW5f4buMauG7jcyBcnXMgV/hu4xq4buNzIFi4buNX+G6uHRpzIBfQcyAYmHMgW3hurnMgXRhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQcyAacyAa19BamXMgV9JzIBz4bq5zIFf4buManJf4buMamJf4bq4dGnMgF9BzIBiYcyBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0HMgGnMgF9Bal9JzIBzX+G7jHJf4buMYl/hurh0X0HMgGInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0/MgG5pzIAgbmldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4buMzIBsYSBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IFwiZGRkZCBb4buMc+G6ucyAIHRvzIFuJ2Lhu41dIFtuaV0gTFRcIixcbiAgICAgICAgICAgIGxhc3REYXk6ICdbQcyAbmEgbmldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFs4buNzIFdIFtuaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICduacyBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBr4buNamHMgScsXG4gICAgICAgICAgICBzOiAnacyAc+G6uWp1zIEgYWF5YcyBIGRpZScsXG4gICAgICAgICAgICBzczogJ2FheWHMgSAlZCcsXG4gICAgICAgICAgICBtOiAnacyAc+G6uWp1zIEga2FuJyxcbiAgICAgICAgICAgIG1tOiAnacyAc+G6uWp1zIEgJWQnLFxuICAgICAgICAgICAgaDogJ3dhzIFrYXRpIGthbicsXG4gICAgICAgICAgICBoaDogJ3dhzIFrYXRpICVkJyxcbiAgICAgICAgICAgIGQ6ICfhu41q4buNzIEga2FuJyxcbiAgICAgICAgICAgIGRkOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgICAgIE06ICdvc3XMgCBrYW4nLFxuICAgICAgICAgICAgTU06ICdvc3XMgCAlZCcsXG4gICAgICAgICAgICB5OiAn4buNZHXMgW4ga2FuJyxcbiAgICAgICAgICAgIHl5OiAn4buNZHXMgW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAv4buNauG7jcyBXFxzXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHlvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENoaW5lc2UgKENoaW5hKSBbemgtY25dXG4vLyEgYXV0aG9yIDogc3V1cGljIDogaHR0cHM6Ly9naXRodWIuY29tL3N1dXBpY1xuLy8hIGF1dGhvciA6IFplbm8gWmVuZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS96ZW5vemVuZ1xuLy8hIGF1dGhvciA6IHV1MTA5IDogaHR0cHM6Ly9naXRodWIuY29tL3V1MTA5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgemhDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWNuJywge1xuICAgICAgICBtb250aHM6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICflkajml6Vf5ZGo5LiAX+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6VBaOeCuW1t5YiGJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6VkZGRkQWjngrltbeWIhicsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAn5Lit5Y2IJ1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vkuItdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+acrF1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpICE9PSBub3cud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+S4il1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5pysXWRkZExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh85ZGoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICflkagnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlkI4nLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflh6Dnp5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZKfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZKfJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aXticsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aXticsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgdzogJzEg5ZGoJyxcbiAgICAgICAgICAgIHd3OiAnJWQg5ZGoJyxcbiAgICAgICAgICAgIE06ICcxIOS4quaciCcsXG4gICAgICAgICAgICBNTTogJyVkIOS4quaciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfml6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J5pWIXG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhDbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChIb25nIEtvbmcpIFt6aC1oa11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcbi8vISBhdXRob3IgOiBLb25zdGFudGluIDogaHR0cHM6Ly9naXRodWIuY29tL3NrZmRcbi8vISBhdXRob3IgOiBBbnRob255IDogaHR0cHM6Ly9naXRodWIuY29tL2FudGhvbnlsYXVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aEhrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtaGsnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA9PT0gMTIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+S4il1kZGRkTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhIaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChNYWNhdSkgW3poLW1vXVxuLy8hIGF1dGhvciA6IEJlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW4tbGluXG4vLyEgYXV0aG9yIDogQ2hyaXMgTGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2hlaGFjaHJpc1xuLy8hIGF1dGhvciA6IFRhbiBZdWFuaG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZTB0YW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aE1vID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtbW8nLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlhacnLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhNbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChUYWl3YW4pIFt6aC10d11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aFR3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtdHcnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhUdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanNcbi8vISB2ZXJzaW9uIDogMi4zMC4xXG4vLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBtb21lbnRqcy5jb21cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgZ2xvYmFsLm1vbWVudCA9IGZhY3RvcnkoKVxufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgaG9va0NhbGxiYWNrO1xuXG4gICAgZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayhjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlucHV0ICE9IG51bGwgJiZcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBOdW1iZXJdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgYXJyTGVuID0gYXJyLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyckxlbjsgKytpKSB7XG4gICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gYikge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoYiwgaSkpIHtcbiAgICAgICAgICAgICAgICBhW2ldID0gYltpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd0b1N0cmluZycpKSB7XG4gICAgICAgICAgICBhLnRvU3RyaW5nID0gYi50b1N0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd2YWx1ZU9mJykpIHtcbiAgICAgICAgICAgIGEudmFsdWVPZiA9IGIudmFsdWVPZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHk6IGZhbHNlLFxuICAgICAgICAgICAgdW51c2VkVG9rZW5zOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0OiBbXSxcbiAgICAgICAgICAgIG92ZXJmbG93OiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXI6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgaW52YWxpZEVyYTogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRNb250aDogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRGb3JtYXQ6IGZhbHNlLFxuICAgICAgICAgICAgdXNlckludmFsaWRhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbzogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHM6IFtdLFxuICAgICAgICAgICAgZXJhOiBudWxsLFxuICAgICAgICAgICAgbWVyaWRpZW06IG51bGwsXG4gICAgICAgICAgICByZmMyODIyOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKSxcbiAgICAgICAgICAgICAgICBsZW4gPSB0Lmxlbmd0aCA+Pj4gMCxcbiAgICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICB2YXIgZmxhZ3MgPSBudWxsLFxuICAgICAgICAgICAgcGFyc2VkUGFydHMgPSBmYWxzZSxcbiAgICAgICAgICAgIGlzTm93VmFsaWQgPSBtLl9kICYmICFpc05hTihtLl9kLmdldFRpbWUoKSk7XG4gICAgICAgIGlmIChpc05vd1ZhbGlkKSB7XG4gICAgICAgICAgICBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHBhcnNlZFBhcnRzID0gc29tZS5jYWxsKGZsYWdzLnBhcnNlZERhdGVQYXJ0cywgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpc05vd1ZhbGlkID1cbiAgICAgICAgICAgICAgICBmbGFncy5vdmVyZmxvdyA8IDAgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuZW1wdHkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZEVyYSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkTW9udGggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3Mud2Vla2RheU1pc21hdGNoICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1dCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJlxuICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1lcmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7XG4gICAgICAgICAgICBpZiAobS5fc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgaXNOb3dWYWxpZCA9XG4gICAgICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuY2hhcnNMZWZ0T3ZlciA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy51bnVzZWRUb2tlbnMubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmJpZ0hvdXIgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwgfHwgIU9iamVjdC5pc0Zyb3plbihtKSkge1xuICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkKGZsYWdzKSB7XG4gICAgICAgIHZhciBtID0gY3JlYXRlVVRDKE5hTik7XG4gICAgICAgIGlmIChmbGFncyAhPSBudWxsKSB7XG4gICAgICAgICAgICBleHRlbmQoZ2V0UGFyc2luZ0ZsYWdzKG0pLCBmbGFncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkudXNlckludmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBsdWdpbnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtleSBoZXJlIChudWxsIHZhbHVlKSxcbiAgICAvLyBzbyB3ZSBjYW4gcHJvcGVybHkgY2xvbmUgb3Vyc2VsdmVzLlxuICAgIHZhciBtb21lbnRQcm9wZXJ0aWVzID0gKGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXSksXG4gICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBwcm9wLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgbW9tZW50UHJvcGVydGllc0xlbiA9IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoO1xuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNBTW9tZW50T2JqZWN0KSkge1xuICAgICAgICAgICAgdG8uX2lzQU1vbWVudE9iamVjdCA9IGZyb20uX2lzQU1vbWVudE9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2kpKSB7XG4gICAgICAgICAgICB0by5faSA9IGZyb20uX2k7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9mKSkge1xuICAgICAgICAgICAgdG8uX2YgPSBmcm9tLl9mO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbCkpIHtcbiAgICAgICAgICAgIHRvLl9sID0gZnJvbS5fbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3N0cmljdCkpIHtcbiAgICAgICAgICAgIHRvLl9zdHJpY3QgPSBmcm9tLl9zdHJpY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl90em0pKSB7XG4gICAgICAgICAgICB0by5fdHptID0gZnJvbS5fdHptO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNVVEMpKSB7XG4gICAgICAgICAgICB0by5faXNVVEMgPSBmcm9tLl9pc1VUQztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX29mZnNldCkpIHtcbiAgICAgICAgICAgIHRvLl9vZmZzZXQgPSBmcm9tLl9vZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9wZikpIHtcbiAgICAgICAgICAgIHRvLl9wZiA9IGdldFBhcnNpbmdGbGFncyhmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2xvY2FsZSkpIHtcbiAgICAgICAgICAgIHRvLl9sb2NhbGUgPSBmcm9tLl9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9tZW50UHJvcGVydGllc0xlbiA+IDApIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb21lbnRQcm9wZXJ0aWVzTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgLy8gTW9tZW50IHByb3RvdHlwZSBvYmplY3RcbiAgICBmdW5jdGlvbiBNb21lbnQoY29uZmlnKSB7XG4gICAgICAgIGNvcHlDb25maWcodGhpcywgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKGNvbmZpZy5fZCAhPSBudWxsID8gY29uZmlnLl9kLmdldFRpbWUoKSA6IE5hTik7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCBpbiBjYXNlIHVwZGF0ZU9mZnNldCBjcmVhdGVzIG5ldyBtb21lbnRcbiAgICAgICAgLy8gb2JqZWN0cy5cbiAgICAgICAgaWYgKHVwZGF0ZUluUHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTW9tZW50KG9iaikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBvYmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGhvb2tzLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgY29uc29sZS53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXJnLFxuICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGFyZ0xlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ0xlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFyZ3VtZW50c1swXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGFyZ3VtZW50c1swXSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgICAgIG1zZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuQXJndW1lbnRzOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0eXBlb2YgRnVuY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0KGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY29uZmlnLCBpKSkge1xuICAgICAgICAgICAgICAgIHByb3AgPSBjb25maWdbaV07XG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgK1xuICAgICAgICAgICAgICAgIC9cXGR7MSwyfS8uc291cmNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY2hpbGRDb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IGV4dGVuZCh7fSwgcGFyZW50Q29uZmlnKSxcbiAgICAgICAgICAgIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAhaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChpIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKG9iaiwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdENhbGVuZGFyID0ge1xuICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhcihrZXksIG1vbSwgbm93KSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhcltrZXldIHx8IHRoaXMuX2NhbGVuZGFyWydzYW1lRWxzZSddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvdXRwdXQpID8gb3V0cHV0LmNhbGwobW9tLCBub3cpIDogb3V0cHV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgK1xuICAgICAgICAgICAgYWJzTnVtYmVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPVxuICAgICAgICAgICAgLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xOezEsNX18WVlZWVlZfFlZWVlZfFlZWVl8WVl8eXsyLDR9fHlvP3xnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyxcbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZyxcbiAgICAgICAgZm9ybWF0RnVuY3Rpb25zID0ge30sXG4gICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zID0ge307XG5cbiAgICAvLyB0b2tlbjogICAgJ00nXG4gICAgLy8gcGFkZGVkOiAgIFsnTU0nLCAyXVxuICAgIC8vIG9yZGluYWw6ICAnTW8nXG4gICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9XG4gICAgZnVuY3Rpb24gYWRkRm9ybWF0VG9rZW4odG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKFxuICAgICAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgICAgICAgICAgICAgIHRva2VuXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxbW1xcc1xcU10vKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gZm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJyxcbiAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGlzRnVuY3Rpb24oYXJyYXlbaV0pXG4gICAgICAgICAgICAgICAgICAgID8gYXJyYXlbaV0uY2FsbChtb20sIGZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgOiBhcnJheVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZm9ybWF0IGRhdGUgdXNpbmcgbmF0aXZlIGRhdGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gZm9ybWF0TW9tZW50KG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbS5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGV4cGFuZEZvcm1hdChmb3JtYXQsIG0ubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gPVxuICAgICAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2VucyxcbiAgICAgICAgICAgICAgICByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHtcbiAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICBMOiAnTU0vREQvWVlZWScsXG4gICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9uZ0RhdGVGb3JtYXQoa2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldLFxuICAgICAgICAgICAgZm9ybWF0VXBwZXIgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGZvcm1hdCB8fCAhZm9ybWF0VXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gZm9ybWF0VXBwZXJcbiAgICAgICAgICAgIC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodG9rKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdNTU1NJyB8fFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdNTScgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rID09PSAnREQnIHx8XG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ2RkZGQnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2suc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b2s7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJztcblxuICAgIGZ1bmN0aW9uIGludmFsaWREYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJyxcbiAgICAgICAgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgnJWQnLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0UmVsYXRpdmVUaW1lID0ge1xuICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgIHc6ICdhIHdlZWsnLFxuICAgICAgICB3dzogJyVkIHdlZWtzJyxcbiAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dClcbiAgICAgICAgICAgID8gb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSlcbiAgICAgICAgICAgIDogb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFzdEZ1dHVyZShkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7XG4gICAgICAgIEQ6ICdkYXRlJyxcbiAgICAgICAgZGF0ZXM6ICdkYXRlJyxcbiAgICAgICAgZGF0ZTogJ2RhdGUnLFxuICAgICAgICBkOiAnZGF5JyxcbiAgICAgICAgZGF5czogJ2RheScsXG4gICAgICAgIGRheTogJ2RheScsXG4gICAgICAgIGU6ICd3ZWVrZGF5JyxcbiAgICAgICAgd2Vla2RheXM6ICd3ZWVrZGF5JyxcbiAgICAgICAgd2Vla2RheTogJ3dlZWtkYXknLFxuICAgICAgICBFOiAnaXNvV2Vla2RheScsXG4gICAgICAgIGlzb3dlZWtkYXlzOiAnaXNvV2Vla2RheScsXG4gICAgICAgIGlzb3dlZWtkYXk6ICdpc29XZWVrZGF5JyxcbiAgICAgICAgREREOiAnZGF5T2ZZZWFyJyxcbiAgICAgICAgZGF5b2Z5ZWFyczogJ2RheU9mWWVhcicsXG4gICAgICAgIGRheW9meWVhcjogJ2RheU9mWWVhcicsXG4gICAgICAgIGg6ICdob3VyJyxcbiAgICAgICAgaG91cnM6ICdob3VyJyxcbiAgICAgICAgaG91cjogJ2hvdXInLFxuICAgICAgICBtczogJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgbWlsbGlzZWNvbmRzOiAnbWlsbGlzZWNvbmQnLFxuICAgICAgICBtaWxsaXNlY29uZDogJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgbTogJ21pbnV0ZScsXG4gICAgICAgIG1pbnV0ZXM6ICdtaW51dGUnLFxuICAgICAgICBtaW51dGU6ICdtaW51dGUnLFxuICAgICAgICBNOiAnbW9udGgnLFxuICAgICAgICBtb250aHM6ICdtb250aCcsXG4gICAgICAgIG1vbnRoOiAnbW9udGgnLFxuICAgICAgICBROiAncXVhcnRlcicsXG4gICAgICAgIHF1YXJ0ZXJzOiAncXVhcnRlcicsXG4gICAgICAgIHF1YXJ0ZXI6ICdxdWFydGVyJyxcbiAgICAgICAgczogJ3NlY29uZCcsXG4gICAgICAgIHNlY29uZHM6ICdzZWNvbmQnLFxuICAgICAgICBzZWNvbmQ6ICdzZWNvbmQnLFxuICAgICAgICBnZzogJ3dlZWtZZWFyJyxcbiAgICAgICAgd2Vla3llYXJzOiAnd2Vla1llYXInLFxuICAgICAgICB3ZWVreWVhcjogJ3dlZWtZZWFyJyxcbiAgICAgICAgR0c6ICdpc29XZWVrWWVhcicsXG4gICAgICAgIGlzb3dlZWt5ZWFyczogJ2lzb1dlZWtZZWFyJyxcbiAgICAgICAgaXNvd2Vla3llYXI6ICdpc29XZWVrWWVhcicsXG4gICAgICAgIHc6ICd3ZWVrJyxcbiAgICAgICAgd2Vla3M6ICd3ZWVrJyxcbiAgICAgICAgd2VlazogJ3dlZWsnLFxuICAgICAgICBXOiAnaXNvV2VlaycsXG4gICAgICAgIGlzb3dlZWtzOiAnaXNvV2VlaycsXG4gICAgICAgIGlzb3dlZWs6ICdpc29XZWVrJyxcbiAgICAgICAgeTogJ3llYXInLFxuICAgICAgICB5ZWFyczogJ3llYXInLFxuICAgICAgICB5ZWFyOiAneWVhcicsXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IGFsaWFzZXNbdW5pdHNdIHx8IGFsaWFzZXNbdW5pdHMudG9Mb3dlckNhc2UoKV1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge1xuICAgICAgICBkYXRlOiA5LFxuICAgICAgICBkYXk6IDExLFxuICAgICAgICB3ZWVrZGF5OiAxMSxcbiAgICAgICAgaXNvV2Vla2RheTogMTEsXG4gICAgICAgIGRheU9mWWVhcjogNCxcbiAgICAgICAgaG91cjogMTMsXG4gICAgICAgIG1pbGxpc2Vjb25kOiAxNixcbiAgICAgICAgbWludXRlOiAxNCxcbiAgICAgICAgbW9udGg6IDgsXG4gICAgICAgIHF1YXJ0ZXI6IDcsXG4gICAgICAgIHNlY29uZDogMTUsXG4gICAgICAgIHdlZWtZZWFyOiAxLFxuICAgICAgICBpc29XZWVrWWVhcjogMSxcbiAgICAgICAgd2VlazogNSxcbiAgICAgICAgaXNvV2VlazogNSxcbiAgICAgICAgeWVhcjogMSxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0c09iaikge1xuICAgICAgICB2YXIgdW5pdHMgPSBbXSxcbiAgICAgICAgICAgIHU7XG4gICAgICAgIGZvciAodSBpbiB1bml0c09iaikge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AodW5pdHNPYmosIHUpKSB7XG4gICAgICAgICAgICAgICAgdW5pdHMucHVzaCh7IHVuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVuaXRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bml0cztcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxID0gL1xcZC8sIC8vICAgICAgIDAgLSA5XG4gICAgICAgIG1hdGNoMiA9IC9cXGRcXGQvLCAvLyAgICAgIDAwIC0gOTlcbiAgICAgICAgbWF0Y2gzID0gL1xcZHszfS8sIC8vICAgICAwMDAgLSA5OTlcbiAgICAgICAgbWF0Y2g0ID0gL1xcZHs0fS8sIC8vICAgIDAwMDAgLSA5OTk5XG4gICAgICAgIG1hdGNoNiA9IC9bKy1dP1xcZHs2fS8sIC8vIC05OTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2gxdG8yID0gL1xcZFxcZD8vLCAvLyAgICAgICAwIC0gOTlcbiAgICAgICAgbWF0Y2gzdG80ID0gL1xcZFxcZFxcZFxcZD8vLCAvLyAgICAgOTk5IC0gOTk5OVxuICAgICAgICBtYXRjaDV0bzYgPSAvXFxkXFxkXFxkXFxkXFxkXFxkPy8sIC8vICAgOTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2gxdG8zID0gL1xcZHsxLDN9LywgLy8gICAgICAgMCAtIDk5OVxuICAgICAgICBtYXRjaDF0bzQgPSAvXFxkezEsNH0vLCAvLyAgICAgICAwIC0gOTk5OVxuICAgICAgICBtYXRjaDF0bzYgPSAvWystXT9cXGR7MSw2fS8sIC8vIC05OTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2hVbnNpZ25lZCA9IC9cXGQrLywgLy8gICAgICAgMCAtIGluZlxuICAgICAgICBtYXRjaFNpZ25lZCA9IC9bKy1dP1xcZCsvLCAvLyAgICAtaW5mIC0gaW5mXG4gICAgICAgIG1hdGNoT2Zmc2V0ID0gL1p8WystXVxcZFxcZDo/XFxkXFxkL2dpLCAvLyArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcbiAgICAgICAgbWF0Y2hTaG9ydE9mZnNldCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/L2dpLCAvLyArMDAgLTAwICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgICAgICBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy8sIC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG4gICAgICAgIC8vIGFueSB3b3JkIChvciB0d28pIGNoYXJhY3RlcnMgb3IgbnVtYmVycyBpbmNsdWRpbmcgdHdvL3RocmVlIHdvcmQgbW9udGggaW4gYXJhYmljLlxuICAgICAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgICAgIG1hdGNoV29yZCA9XG4gICAgICAgICAgICAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaSxcbiAgICAgICAgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyA9IC9eWzEtOV1cXGQ/LywgLy8gICAgICAgICAxLTk5XG4gICAgICAgIG1hdGNoMXRvMkhhc1plcm8gPSAvXihbMS05XVxcZHxcXGQpLywgLy8gICAgICAgICAgIDAtOTlcbiAgICAgICAgcmVnZXhlcztcblxuICAgIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4odG9rZW4sIHJlZ2V4LCBzdHJpY3RSZWdleCkge1xuICAgICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpXG4gICAgICAgICAgICA/IHJlZ2V4XG4gICAgICAgICAgICA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4ID8gc3RyaWN0UmVnZXggOiByZWdleDtcbiAgICAgICAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKFxuICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdcXFxcJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlZ2V4RXNjYXBlKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzRmxvb3IobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyAtMCAtPiAwXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0ludChhcmd1bWVudEZvckNvZXJjaW9uKSB7XG4gICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkUGFyc2VUb2tlbih0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBmdW5jID0gY2FsbGJhY2ssXG4gICAgICAgICAgICB0b2tlbkxlbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5MZW4gPSB0b2tlbi5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbkxlbjsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gICAgfVxuXG4gICAgdmFyIFlFQVIgPSAwLFxuICAgICAgICBNT05USCA9IDEsXG4gICAgICAgIERBVEUgPSAyLFxuICAgICAgICBIT1VSID0gMyxcbiAgICAgICAgTUlOVVRFID0gNCxcbiAgICAgICAgU0VDT05EID0gNSxcbiAgICAgICAgTUlMTElTRUNPTkQgPSA2LFxuICAgICAgICBXRUVLID0gNyxcbiAgICAgICAgV0VFS0RBWSA9IDg7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnllYXIoKTtcbiAgICAgICAgcmV0dXJuIHkgPD0gOTk5OSA/IHplcm9GaWxsKHksIDQpIDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCA0XSwgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZJywgNV0sIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVknLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID1cbiAgICAgICAgICAgIGlucHV0Lmxlbmd0aCA9PT0gMiA/IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KSA6IHRvSW50KGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyKCkge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldFNldCh1bml0LCBrZWVwVGltZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldCQxKHRoaXMsIHVuaXQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldChtb20sIHVuaXQpIHtcbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGQgPSBtb20uX2QsXG4gICAgICAgICAgICBpc1VUQyA9IG1vbS5faXNVVEM7XG5cbiAgICAgICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgICAgICBjYXNlICdNaWxsaXNlY29uZHMnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc1VUQyA/IGQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgOiBkLmdldE1pbGxpc2Vjb25kcygpO1xuICAgICAgICAgICAgY2FzZSAnU2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENTZWNvbmRzKCkgOiBkLmdldFNlY29uZHMoKTtcbiAgICAgICAgICAgIGNhc2UgJ01pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc1VUQyA/IGQuZ2V0VVRDTWludXRlcygpIDogZC5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICBjYXNlICdIb3Vycyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENIb3VycygpIDogZC5nZXRIb3VycygpO1xuICAgICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENEYXRlKCkgOiBkLmdldERhdGUoKTtcbiAgICAgICAgICAgIGNhc2UgJ0RheSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENEYXkoKSA6IGQuZ2V0RGF5KCk7XG4gICAgICAgICAgICBjYXNlICdNb250aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVVRDID8gZC5nZXRVVENNb250aCgpIDogZC5nZXRNb250aCgpO1xuICAgICAgICAgICAgY2FzZSAnRnVsbFllYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc1VUQyA/IGQuZ2V0VVRDRnVsbFllYXIoKSA6IGQuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsgLy8gSnVzdCBpbiBjYXNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQkMShtb20sIHVuaXQsIHZhbHVlKSB7XG4gICAgICAgIHZhciBkLCBpc1VUQywgeWVhciwgbW9udGgsIGRhdGU7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpIHx8IGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZCA9IG1vbS5fZDtcbiAgICAgICAgaXNVVEMgPSBtb20uX2lzVVRDO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgY2FzZSAnTWlsbGlzZWNvbmRzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAoaXNVVENcbiAgICAgICAgICAgICAgICAgICAgPyBkLnNldFVUQ01pbGxpc2Vjb25kcyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBkLnNldE1pbGxpc2Vjb25kcyh2YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSAnU2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgKGlzVVRDID8gZC5zZXRVVENTZWNvbmRzKHZhbHVlKSA6IGQuc2V0U2Vjb25kcyh2YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSAnTWludXRlcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgKGlzVVRDID8gZC5zZXRVVENNaW51dGVzKHZhbHVlKSA6IGQuc2V0TWludXRlcyh2YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSAnSG91cnMnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIChpc1VUQyA/IGQuc2V0VVRDSG91cnModmFsdWUpIDogZC5zZXRIb3Vycyh2YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgKGlzVVRDID8gZC5zZXRVVENEYXRlKHZhbHVlKSA6IGQuc2V0RGF0ZSh2YWx1ZSkpO1xuICAgICAgICAgICAgLy8gY2FzZSAnRGF5JzogLy8gTm90IHJlYWxcbiAgICAgICAgICAgIC8vICAgIHJldHVybiB2b2lkIChpc1VUQyA/IGQuc2V0VVRDRGF5KHZhbHVlKSA6IGQuc2V0RGF5KHZhbHVlKSk7XG4gICAgICAgICAgICAvLyBjYXNlICdNb250aCc6IC8vIE5vdCB1c2VkIGJlY2F1c2Ugd2UgbmVlZCB0byBwYXNzIHR3byB2YXJpYWJsZXNcbiAgICAgICAgICAgIC8vICAgICByZXR1cm4gdm9pZCAoaXNVVEMgPyBkLnNldFVUQ01vbnRoKHZhbHVlKSA6IGQuc2V0TW9udGgodmFsdWUpKTtcbiAgICAgICAgICAgIGNhc2UgJ0Z1bGxZZWFyJzpcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gU2VlIGJlbG93IC4uLlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIEp1c3QgaW4gY2FzZVxuICAgICAgICB9XG5cbiAgICAgICAgeWVhciA9IHZhbHVlO1xuICAgICAgICBtb250aCA9IG1vbS5tb250aCgpO1xuICAgICAgICBkYXRlID0gbW9tLmRhdGUoKTtcbiAgICAgICAgZGF0ZSA9IGRhdGUgPT09IDI5ICYmIG1vbnRoID09PSAxICYmICFpc0xlYXBZZWFyKHllYXIpID8gMjggOiBkYXRlO1xuICAgICAgICB2b2lkIChpc1VUQ1xuICAgICAgICAgICAgPyBkLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXRlKVxuICAgICAgICAgICAgOiBkLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXRlKSk7XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc3RyaW5nR2V0KHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0cmluZ1NldCh1bml0cywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1bml0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpO1xuICAgICAgICAgICAgdmFyIHByaW9yaXRpemVkID0gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0cyksXG4gICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICBwcmlvcml0aXplZExlbiA9IHByaW9yaXRpemVkLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmlvcml0aXplZExlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9kKG4sIHgpIHtcbiAgICAgICAgcmV0dXJuICgobiAlIHgpICsgeCkgJSB4O1xuICAgIH1cblxuICAgIHZhciBpbmRleE9mO1xuXG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICAgIGluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIC8vIEkga25vd1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICAgICAgICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICAgICAgICB5ZWFyICs9IChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuICAgICAgICByZXR1cm4gbW9kTW9udGggPT09IDFcbiAgICAgICAgICAgID8gaXNMZWFwWWVhcih5ZWFyKVxuICAgICAgICAgICAgICAgID8gMjlcbiAgICAgICAgICAgICAgICA6IDI4XG4gICAgICAgICAgICA6IDMxIC0gKChtb2RNb250aCAlIDcpICUgMik7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMl0sICdNbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdNJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJOb0xlYWRpbmdaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gdG9JbnQoaW5wdXQpIC0gMTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNTU0nLCAnTU1NTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtb250aCA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC5cbiAgICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIGFycmF5W01PTlRIXSA9IG1vbnRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZE1vbnRoID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID1cbiAgICAgICAgICAgICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCA9XG4gICAgICAgICAgICAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy8sXG4gICAgICAgIGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKVxuICAgICAgICAgICAgICAgID8gdGhpcy5fbW9udGhzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpXG4gICAgICAgICAgICA/IHRoaXMuX21vbnRoc1ttLm1vbnRoKCldXG4gICAgICAgICAgICA6IHRoaXMuX21vbnRoc1tcbiAgICAgICAgICAgICAgICAgICh0aGlzLl9tb250aHMuaXNGb3JtYXQgfHwgTU9OVEhTX0lOX0ZPUk1BVCkudGVzdChmb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZm9ybWF0J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgICAgIF1bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNTaG9ydChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydClcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1Nob3J0XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFsnc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KVxuICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldXG4gICAgICAgICAgICA6IHRoaXMuX21vbnRoc1Nob3J0W1xuICAgICAgICAgICAgICAgICAgTU9OVEhTX0lOX0ZPUk1BVC50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGlpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQoXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzUGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RyaWN0ICYmICF0aGlzLl9tb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID1cbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykgKyAnfF4nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnTU1NTScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnTU1NJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl9tb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHNldE1vbnRoKG1vbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoL15cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtb20ubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlP1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1vbnRoID0gdmFsdWUsXG4gICAgICAgICAgICBkYXRlID0gbW9tLmRhdGUoKTtcblxuICAgICAgICBkYXRlID0gZGF0ZSA8IDI5ID8gZGF0ZSA6IE1hdGgubWluKGRhdGUsIGRheXNJbk1vbnRoKG1vbS55ZWFyKCksIG1vbnRoKSk7XG4gICAgICAgIHZvaWQgKG1vbS5faXNVVENcbiAgICAgICAgICAgID8gbW9tLl9kLnNldFVUQ01vbnRoKG1vbnRoLCBkYXRlKVxuICAgICAgICAgICAgOiBtb20uX2Quc2V0TW9udGgobW9udGgsIGRhdGUpKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2V0TW9udGgodGhpcywgdmFsdWUpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsICdNb250aCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF5c0luTW9udGgoKSB7XG4gICAgICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1JlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNSZWdleCA9IGRlZmF1bHRNb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXhcbiAgICAgICAgICAgICAgICA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2hvcnRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGxvbmdQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgc2hvcnRQLFxuICAgICAgICAgICAgbG9uZ1A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQID0gcmVnZXhFc2NhcGUodGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgICAgICBsb25nUCA9IHJlZ2V4RXNjYXBlKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRQKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25nUCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGxvbmdQKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goc2hvcnRQKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKSB7XG4gICAgICAgIC8vIGNhbid0IGp1c3QgYXBwbHkoKSB0byBjcmVhdGUgYSBkYXRlOlxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMTgxMzQ4XG4gICAgICAgIHZhciBkYXRlO1xuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHkgKyA0MDAsIG0sIGQsIGgsIE0sIHMsIG1zKTtcbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShkYXRlLmdldEZ1bGxZZWFyKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVENEYXRlKHkpIHtcbiAgICAgICAgdmFyIGRhdGUsIGFyZ3M7XG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBhcmdzWzBdID0geSArIDQwMDtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmdzKSk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhclxuICAgIGZ1bmN0aW9uIGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LFxuICAgICAgICAgICAgLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAtLSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZFxuICAgICAgICAgICAgZndkbHcgPSAoNyArIGNyZWF0ZVVUQ0RhdGUoeWVhciwgMCwgZndkKS5nZXRVVENEYXkoKSAtIGRvdykgJSA3O1xuXG4gICAgICAgIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5XG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtzKHllYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBsb2NhbFdlZWtkYXkgPSAoNyArIHdlZWtkYXkgLSBkb3cpICUgNyxcbiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldCxcbiAgICAgICAgICAgIHJlc1llYXIsXG4gICAgICAgICAgICByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla09mWWVhcihtb20sIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KG1vbS55ZWFyKCksIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWsgPSBNYXRoLmZsb29yKChtb20uZGF5T2ZZZWFyKCkgLSB3ZWVrT2Zmc2V0IC0gMSkgLyA3KSArIDEsXG4gICAgICAgICAgICByZXNXZWVrLFxuICAgICAgICAgICAgcmVzWWVhcjtcblxuICAgICAgICBpZiAod2VlayA8IDEpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrICsgd2Vla3NJblllYXIocmVzWWVhciwgZG93LCBkb3kpO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWsgPiB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3ZWVrOiByZXNXZWVrLFxuICAgICAgICAgICAgeWVhcjogcmVzWWVhcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3cnLCBtYXRjaDF0bzIsIG1hdGNoMXRvMk5vTGVhZGluZ1plcm8pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCBtYXRjaDF0bzIsIG1hdGNoMXRvMk5vTGVhZGluZ1plcm8pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oXG4gICAgICAgIFsndycsICd3dycsICdXJywgJ1dXJ10sXG4gICAgICAgIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIoMCwgMSldID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWsobW9tKSB7XG4gICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKG1vbSwgdGhpcy5fd2Vlay5kb3csIHRoaXMuX3dlZWsuZG95KS53ZWVrO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2VlayA9IHtcbiAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZXZWVrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZlllYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWsoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB3ZWVrT2ZZZWFyKHRoaXMsIDEsIDQpLndlZWs7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignZCcsIDAsICdkbycsICdkYXknKTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2UnLCAwLCAwLCAnd2Vla2RheScpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdFJywgMCwgMCwgJ2lzb1dlZWtkYXknKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGQnLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkZCcsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcbiAgICBmdW5jdGlvbiBzaGlmdFdlZWtkYXlzKHdzLCBuKSB7XG4gICAgICAgIHJldHVybiB3cy5zbGljZShuLCA3KS5jb25jYXQod3Muc2xpY2UoMCwgbikpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPVxuICAgICAgICAgICAgJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgZGVmYXVsdFdlZWtkYXlzUmVnZXggPSBtYXRjaFdvcmQsXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQsXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IGlzQXJyYXkodGhpcy5fd2Vla2RheXMpXG4gICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzXG4gICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzW1xuICAgICAgICAgICAgICAgICAgbSAmJiBtICE9PSB0cnVlICYmIHRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2Zvcm1hdCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdO1xuICAgICAgICByZXR1cm4gbSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyBzaGlmdFdlZWtkYXlzKHdlZWtkYXlzLCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogbVxuICAgICAgICAgICAgICA/IHdlZWtkYXlzW20uZGF5KCldXG4gICAgICAgICAgICAgIDogd2Vla2RheXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydChtKSB7XG4gICAgICAgIHJldHVybiBtID09PSB0cnVlXG4gICAgICAgICAgICA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNTaG9ydCwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1Nob3J0W20uZGF5KCldXG4gICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNTaG9ydDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c01pbihtKSB7XG4gICAgICAgIHJldHVybiBtID09PSB0cnVlXG4gICAgICAgICAgICA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNNaW4sIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiBtXG4gICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5bbS5kYXkoKV1cbiAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c01pbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTdHJpY3RQYXJzZSQxKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGlpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgbGxjID0gd2Vla2RheU5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c01pbihcbiAgICAgICAgICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQoXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2Uod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID1cbiAgICAgICAgICAgICAgICAgICAgJ14nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArXG4gICAgICAgICAgICAgICAgICAgICd8XicgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnfF4nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdkZGRkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnZGRkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ2RkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayhpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF5ID0gZ2V0KHRoaXMsICdEYXknKTtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlucHV0ID0gcGFyc2VXZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoaW5wdXQgLSBkYXksICdkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGJlaGF2ZXMgdGhlIHNhbWUgYXMgbW9tZW50I2RheSBleGNlcHRcbiAgICAgICAgLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNilcbiAgICAgICAgLy8gYXMgYSBzZXR0ZXIsIHN1bmRheSBzaG91bGQgYmVsb25nIHRvIHRoZSBwcmV2aW91cyB3ZWVrLlxuXG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgd2Vla2RheSA9IHBhcnNlSXNvV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KHRoaXMuZGF5KCkgJSA3ID8gd2Vla2RheSA6IHdlZWtkYXkgLSA3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSgpIHx8IDc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3RcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla2RheXNNaW5SZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNNaW5SZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggJiYgaXNTdHJpY3RcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXhcbiAgICAgICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlV2Vla2RheXNQYXJzZSgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgc2hvcnRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGxvbmdQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgbWlucCxcbiAgICAgICAgICAgIHNob3J0cCxcbiAgICAgICAgICAgIGxvbmdwO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIG1pbnAgPSByZWdleEVzY2FwZSh0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpKTtcbiAgICAgICAgICAgIHNob3J0cCA9IHJlZ2V4RXNjYXBlKHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKSk7XG4gICAgICAgICAgICBsb25ncCA9IHJlZ2V4RXNjYXBlKHRoaXMud2Vla2RheXMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWluUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBsb25nUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgd2Vla2RheSAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIG1pblBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcblxuICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcblxuICAgICAgICB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgZnVuY3Rpb24gaEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSAlIDEyIHx8IDEyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgfHwgMjQ7XG4gICAgfVxuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0gnLCBbJ0hIJywgMl0sIDAsICdob3VyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2gnLCBbJ2hoJywgMl0sIDAsIGhGb3JtYXQpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdrJywgWydraycsIDJdLCAwLCBrRm9ybWF0KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIGhGb3JtYXQuYXBwbHkodGhpcykgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAnJyArXG4gICAgICAgICAgICBoRm9ybWF0LmFwcGx5KHRoaXMpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMilcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICcnICtcbiAgICAgICAgICAgIHRoaXMuaG91cnMoKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5zZWNvbmRzKCksIDIpXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbSh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0oXG4gICAgICAgICAgICAgICAgdGhpcy5ob3VycygpLFxuICAgICAgICAgICAgICAgIHRoaXMubWludXRlcygpLFxuICAgICAgICAgICAgICAgIGxvd2VyY2FzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0oaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLl9tZXJpZGllbVBhcnNlO1xuICAgIH1cblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2EnLCBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdBJywgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsIG1hdGNoMXRvMiwgbWF0Y2gxdG8ySGFzWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignaCcsIG1hdGNoMXRvMiwgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignaycsIG1hdGNoMXRvMiwgbWF0Y2gxdG8yTm9MZWFkaW5nWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQsXG4gICAgICAgICAgICBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0LFxuICAgICAgICAgICAgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTShpbnB1dCkge1xuICAgICAgICAvLyBJRTggUXVpcmtzIE1vZGUgJiBJRTcgU3RhbmRhcmRzIE1vZGUgZG8gbm90IGFsbG93IGFjY2Vzc2luZyBzdHJpbmdzIGxpa2UgYXJyYXlzXG4gICAgICAgIC8vIFVzaW5nIGNoYXJBdCBzaG91bGQgYmUgbW9yZSBjb21wYXRpYmxlLlxuICAgICAgICByZXR1cm4gKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApID09PSAncCc7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2ksXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseVxuICAgICAgICAvLyBzcGVjaWZpZWQgd2hpY2ggaG91ciB0aGV5IHdhbnQuIFNvIHRyeWluZyB0byBtYWludGFpbiB0aGUgc2FtZSBob3VyIChpblxuICAgICAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAgICAgLy8gdGhpcyBydWxlLlxuICAgICAgICBnZXRTZXRIb3VyID0gbWFrZUdldFNldCgnSG91cnMnLCB0cnVlKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1lcmlkaWVtKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBiYXNlQ29uZmlnID0ge1xuICAgICAgICBjYWxlbmRhcjogZGVmYXVsdENhbGVuZGFyLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDogZGVmYXVsdExvbmdEYXRlRm9ybWF0LFxuICAgICAgICBpbnZhbGlkRGF0ZTogZGVmYXVsdEludmFsaWREYXRlLFxuICAgICAgICBvcmRpbmFsOiBkZWZhdWx0T3JkaW5hbCxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UsXG4gICAgICAgIHJlbGF0aXZlVGltZTogZGVmYXVsdFJlbGF0aXZlVGltZSxcblxuICAgICAgICBtb250aHM6IGRlZmF1bHRMb2NhbGVNb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQsXG5cbiAgICAgICAgd2VlazogZGVmYXVsdExvY2FsZVdlZWssXG5cbiAgICAgICAgd2Vla2RheXM6IGRlZmF1bHRMb2NhbGVXZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbixcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQsXG5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UsXG4gICAgfTtcblxuICAgIC8vIGludGVybmFsIHN0b3JhZ2UgZm9yIGxvY2FsZSBjb25maWcgZmlsZXNcbiAgICB2YXIgbG9jYWxlcyA9IHt9LFxuICAgICAgICBsb2NhbGVGYW1pbGllcyA9IHt9LFxuICAgICAgICBnbG9iYWxMb2NhbGU7XG5cbiAgICBmdW5jdGlvbiBjb21tb25QcmVmaXgoYXJyMSwgYXJyMikge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIG1pbmwgPSBNYXRoLm1pbihhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWlubDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW5sO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnLScpIDoga2V5O1xuICAgIH1cblxuICAgIC8vIHBpY2sgdGhlIGxvY2FsZSBmcm9tIHRoZSBhcnJheVxuICAgIC8vIHRyeSBbJ2VuLWF1JywgJ2VuLWdiJ10gYXMgJ2VuLWF1JywgJ2VuLWdiJywgJ2VuJywgYXMgaW4gbW92ZSB0aHJvdWdoIHRoZSBsaXN0IHRyeWluZyBlYWNoXG4gICAgLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdFxuICAgIGZ1bmN0aW9uIGNob29zZUxvY2FsZShuYW1lcykge1xuICAgICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgICBqLFxuICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHNwbGl0O1xuXG4gICAgICAgIHdoaWxlIChpIDwgbmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzcGxpdCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpXSkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGogPSBzcGxpdC5sZW5ndGg7XG4gICAgICAgICAgICBuZXh0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2kgKyAxXSk7XG4gICAgICAgICAgICBuZXh0ID0gbmV4dCA/IG5leHQuc3BsaXQoJy0nKSA6IG51bGw7XG4gICAgICAgICAgICB3aGlsZSAoaiA+IDApIHtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKHNwbGl0LnNsaWNlKDAsIGopLmpvaW4oJy0nKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG5leHQgJiZcbiAgICAgICAgICAgICAgICAgICAgbmV4dC5sZW5ndGggPj0gaiAmJlxuICAgICAgICAgICAgICAgICAgICBjb21tb25QcmVmaXgoc3BsaXQsIG5leHQpID49IGogLSAxXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhlIG5leHQgYXJyYXkgaXRlbSBpcyBiZXR0ZXIgdGhhbiBhIHNoYWxsb3dlciBzdWJzdHJpbmcgb2YgdGhpcyBvbmVcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGotLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTG9jYWxlTmFtZVNhbmUobmFtZSkge1xuICAgICAgICAvLyBQcmV2ZW50IG5hbWVzIHRoYXQgbG9vayBsaWtlIGZpbGVzeXN0ZW0gcGF0aHMsIGkuZSBjb250YWluICcvJyBvciAnXFwnXG4gICAgICAgIC8vIEVuc3VyZSBuYW1lIGlzIGF2YWlsYWJsZSBhbmQgZnVuY3Rpb24gcmV0dXJucyBib29sZWFuXG4gICAgICAgIHJldHVybiAhIShuYW1lICYmIG5hbWUubWF0Y2goJ15bXi9cXFxcXFxcXF0qJCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGwsXG4gICAgICAgICAgICBhbGlhc2VkUmVxdWlyZTtcbiAgICAgICAgLy8gVE9ETzogRmluZCBhIGJldHRlciB3YXkgdG8gcmVnaXN0ZXIgYW5kIGxvYWQgYWxsIHRoZSBsb2NhbGVzIGluIE5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgbW9kdWxlICYmXG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyAmJlxuICAgICAgICAgICAgaXNMb2NhbGVOYW1lU2FuZShuYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb2xkTG9jYWxlID0gZ2xvYmFsTG9jYWxlLl9hYmJyO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSgnLi9sb2NhbGUvJyArIG5hbWUpO1xuICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgbm90IGZvdW5kIHRvIGF2b2lkIHJlcGVhdGluZyBleHBlbnNpdmUgZmlsZSByZXF1aXJlIGNhbGwgY2F1c2luZyBoaWdoIENQVVxuICAgICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIGZpbmQgZW4tVVMsIGVuX1VTLCBlbi11cyBmb3IgZXZlcnkgZm9ybWF0IGNhbGxcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbnVsbDsgLy8gbnVsbCBtZWFucyBub3QgZm91bmRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgbG9hZCBsb2NhbGUgYW5kIHRoZW4gc2V0IHRoZSBnbG9iYWwgbG9jYWxlLiAgSWZcbiAgICAvLyBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiwgaXQgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIC8vIGxvY2FsZSBrZXkuXG4gICAgZnVuY3Rpb24gZ2V0U2V0R2xvYmFsTG9jYWxlKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGRlZmluZUxvY2FsZShrZXksIHZhbHVlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gbW9tZW50LmR1cmF0aW9uLl9sb2NhbGUgPSBtb21lbnQuX2xvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgZ2xvYmFsTG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy93YXJuIHVzZXIgaWYgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnV0IHRoZSBsb2NhbGUgY291bGQgbm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAnTG9jYWxlICcgKyBrZXkgKyAnIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8nXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUsXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoXG4gICAgICAgICAgICAgICAgICAgICdkZWZpbmVMb2NhbGVPdmVycmlkZScsXG4gICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW25hbWVdLl9jb25maWc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoY29uZmlnLnBhcmVudExvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG5ldyBMb2NhbGUobWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKSk7XG5cbiAgICAgICAgICAgIGlmIChsb2NhbGVGYW1pbGllc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHgubmFtZSwgeC5jb25maWcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGxvY2FsZSBBRlRFUiBhbGwgY2hpbGQgbG9jYWxlcyBoYXZlIGJlZW5cbiAgICAgICAgICAgIC8vIGNyZWF0ZWQsIHNvIHdlIHdvbid0IGVuZCB1cCB3aXRoIHRoZSBjaGlsZCBsb2NhbGUgc2V0LlxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLFxuICAgICAgICAgICAgICAgIHRtcExvY2FsZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsICYmIGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgY2hpbGQgbG9jYWxlIGluLXBsYWNlIHRvIGF2b2lkIG1lbW9yeS1sZWFrc1xuICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0uc2V0KG1lcmdlQ29uZmlncyhsb2NhbGVzW25hbWVdLl9jb25maWcsIGNvbmZpZykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgICAgIHRtcExvY2FsZSA9IGxvYWRMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRtcExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25maWcgPSBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpO1xuICAgICAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVMb2NhbGUgaXMgY2FsbGVkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGFiYnIgc28gaXQgd2lsbCBoYXZlIGEgbmFtZSAoZ2V0dGVycyByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWZpbmVkIG90aGVyd2lzZSkuXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbmV3IExvY2FsZShjb25maWcpO1xuICAgICAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHNcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSBnZXRTZXRHbG9iYWxMb2NhbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGFcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93KG0pIHtcbiAgICAgICAgdmFyIG92ZXJmbG93LFxuICAgICAgICAgICAgYSA9IG0uX2E7XG5cbiAgICAgICAgaWYgKGEgJiYgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID09PSAtMikge1xuICAgICAgICAgICAgb3ZlcmZsb3cgPVxuICAgICAgICAgICAgICAgIGFbTU9OVEhdIDwgMCB8fCBhW01PTlRIXSA+IDExXG4gICAgICAgICAgICAgICAgICAgID8gTU9OVEhcbiAgICAgICAgICAgICAgICAgICAgOiBhW0RBVEVdIDwgMSB8fCBhW0RBVEVdID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pXG4gICAgICAgICAgICAgICAgICAgICAgPyBEQVRFXG4gICAgICAgICAgICAgICAgICAgICAgOiBhW0hPVVJdIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhW0hPVVJdID4gMjQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYVtNSU5VVEVdICE9PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtTRUNPTkRdICE9PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gIT09IDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBIT1VSXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGFbTUlOVVRFXSA8IDAgfHwgYVtNSU5VVEVdID4gNTlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBNSU5VVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhW1NFQ09ORF0gPCAwIHx8IGFbU0VDT05EXSA+IDU5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTRUNPTkRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFbTUlMTElTRUNPTkRdIDwgMCB8fCBhW01JTExJU0VDT05EXSA+IDk5OVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBNSUxMSVNFQ09ORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dEYXlPZlllYXIgJiZcbiAgICAgICAgICAgICAgICAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gREFURTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla3MgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrZGF5ICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFS0RBWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID1cbiAgICAgICAgICAgIC9eXFxzKigoPzpbKy1dXFxkezZ9fFxcZHs0fSktKD86XFxkXFxkLVxcZFxcZHxXXFxkXFxkLVxcZHxXXFxkXFxkfFxcZFxcZFxcZHxcXGRcXGQpKSg/OihUfCApKFxcZFxcZCg/OjpcXGRcXGQoPzo6XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvLFxuICAgICAgICBiYXNpY0lzb1JlZ2V4ID1cbiAgICAgICAgICAgIC9eXFxzKigoPzpbKy1dXFxkezZ9fFxcZHs0fSkoPzpcXGRcXGRcXGRcXGR8V1xcZFxcZFxcZHxXXFxkXFxkfFxcZFxcZFxcZHxcXGRcXGR8KSkoPzooVHwgKShcXGRcXGQoPzpcXGRcXGQoPzpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoWystXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC8sXG4gICAgICAgIHR6UmVnZXggPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy8sXG4gICAgICAgIGlzb0RhdGVzID0gW1xuICAgICAgICAgICAgWydZWVlZWVktTU0tREQnLCAvWystXVxcZHs2fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgICAgICBbJ1lZWVktTU0tREQnLCAvXFxkezR9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICAgICAgWydHR0dHLVtXXVdXJywgL1xcZHs0fS1XXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZLURERCcsIC9cXGR7NH0tXFxkezN9L10sXG4gICAgICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgICAgIFsnWVlZWVlZTU1ERCcsIC9bKy1dXFxkezEwfS9dLFxuICAgICAgICAgICAgWydZWVlZTU1ERCcsIC9cXGR7OH0vXSxcbiAgICAgICAgICAgIFsnR0dHR1tXXVdXRScsIC9cXGR7NH1XXFxkezN9L10sXG4gICAgICAgICAgICBbJ0dHR0dbV11XVycsIC9cXGR7NH1XXFxkezJ9LywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dLFxuICAgICAgICAgICAgWydZWVlZTU0nLCAvXFxkezZ9LywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZJywgL1xcZHs0fS8sIGZhbHNlXSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gaXNvIHRpbWUgZm9ybWF0cyBhbmQgcmVnZXhlc1xuICAgICAgICBpc29UaW1lcyA9IFtcbiAgICAgICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgICAgIFsnSEg6bW06c3MsU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZCxcXGQrL10sXG4gICAgICAgICAgICBbJ0hIOm1tOnNzJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEhtbXNzLlNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICAgICAgWydISG1tc3MsU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGQsXFxkKy9dLFxuICAgICAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIbW0nLCAvXFxkXFxkXFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIJywgL1xcZFxcZC9dLFxuICAgICAgICBdLFxuICAgICAgICBhc3BOZXRKc29uUmVnZXggPSAvXlxcLz9EYXRlXFwoKC0/XFxkKykvaSxcbiAgICAgICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgICAgICByZmMyODIyID1cbiAgICAgICAgICAgIC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksP1xccyk/KFxcZHsxLDJ9KVxccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXHMoXFxkezIsNH0pXFxzKFxcZFxcZCk6KFxcZFxcZCkoPzo6KFxcZFxcZCkpP1xccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxcZHs0fSkpJC8sXG4gICAgICAgIG9ic09mZnNldHMgPSB7XG4gICAgICAgICAgICBVVDogMCxcbiAgICAgICAgICAgIEdNVDogMCxcbiAgICAgICAgICAgIEVEVDogLTQgKiA2MCxcbiAgICAgICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgICAgIENEVDogLTUgKiA2MCxcbiAgICAgICAgICAgIENTVDogLTYgKiA2MCxcbiAgICAgICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgICAgIE1TVDogLTcgKiA2MCxcbiAgICAgICAgICAgIFBEVDogLTcgKiA2MCxcbiAgICAgICAgICAgIFBTVDogLTggKiA2MCxcbiAgICAgICAgfTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgc3RyaW5nID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgbWF0Y2ggPSBleHRlbmRlZElzb1JlZ2V4LmV4ZWMoc3RyaW5nKSB8fCBiYXNpY0lzb1JlZ2V4LmV4ZWMoc3RyaW5nKSxcbiAgICAgICAgICAgIGFsbG93VGltZSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQsXG4gICAgICAgICAgICB0aW1lRm9ybWF0LFxuICAgICAgICAgICAgdHpGb3JtYXQsXG4gICAgICAgICAgICBpc29EYXRlc0xlbiA9IGlzb0RhdGVzLmxlbmd0aCxcbiAgICAgICAgICAgIGlzb1RpbWVzTGVuID0gaXNvVGltZXMubGVuZ3RoO1xuXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaXNvID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlc0xlbjsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpc29EYXRlc1tpXVsxXS5leGVjKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ID0gaXNvRGF0ZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgIGFsbG93VGltZSA9IGlzb0RhdGVzW2ldWzJdICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFszXSkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29UaW1lc0xlbjsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNvVGltZXNbaV1bMV0uZXhlYyhtYXRjaFszXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoWzJdIHNob3VsZCBiZSAnVCcgb3Igc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgPSAobWF0Y2hbMl0gfHwgJyAnKSArIGlzb1RpbWVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRpbWVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYWxsb3dUaW1lICYmIHRpbWVGb3JtYXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFs0XSkge1xuICAgICAgICAgICAgICAgIGlmICh0elJlZ2V4LmV4ZWMobWF0Y2hbNF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHR6Rm9ybWF0ID0gJ1onO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnLl9mID0gZGF0ZUZvcm1hdCArICh0aW1lRm9ybWF0IHx8ICcnKSArICh0ekZvcm1hdCB8fCAnJyk7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoXG4gICAgICAgIHllYXJTdHIsXG4gICAgICAgIG1vbnRoU3RyLFxuICAgICAgICBkYXlTdHIsXG4gICAgICAgIGhvdXJTdHIsXG4gICAgICAgIG1pbnV0ZVN0cixcbiAgICAgICAgc2Vjb25kU3RyXG4gICAgKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXG4gICAgICAgICAgICB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydC5pbmRleE9mKG1vbnRoU3RyKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGRheVN0ciwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQoaG91clN0ciwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQobWludXRlU3RyLCAxMCksXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHNlY29uZFN0cikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VJbnQoc2Vjb25kU3RyLCAxMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSB7XG4gICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoeWVhclN0ciwgMTApO1xuICAgICAgICBpZiAoeWVhciA8PSA0OSkge1xuICAgICAgICAgICAgcmV0dXJuIDIwMDAgKyB5ZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKHllYXIgPD0gOTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTkwMCArIHllYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHllYXI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAgICAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgLnJlcGxhY2UoL1xcKFteKCldKlxcKXxbXFxuXFx0XS9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFxcc1xccyspL2csICcgJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcc1xccyokLywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrV2Vla2RheSh3ZWVrZGF5U3RyLCBwYXJzZWRJbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmICh3ZWVrZGF5U3RyKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZXBsYWNlIHRoZSB2YW5pbGxhIEpTIERhdGUgb2JqZWN0IHdpdGggYW4gaW5kZXBlbmRlbnQgZGF5LW9mLXdlZWsgY2hlY2suXG4gICAgICAgICAgICB2YXIgd2Vla2RheVByb3ZpZGVkID0gZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSxcbiAgICAgICAgICAgICAgICB3ZWVrZGF5QWN0dWFsID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZElucHV0WzBdLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbnB1dFsxXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW5wdXRbMl1cbiAgICAgICAgICAgICAgICApLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChvYnNPZmZzZXQsIG1pbGl0YXJ5T2Zmc2V0LCBudW1PZmZzZXQpIHtcbiAgICAgICAgaWYgKG9ic09mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgICAgICAgfSBlbHNlIGlmIChtaWxpdGFyeU9mZnNldCkge1xuICAgICAgICAgICAgLy8gdGhlIG9ubHkgYWxsb3dlZCBtaWxpdGFyeSB0eiBpcyBaXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBobSA9IHBhcnNlSW50KG51bU9mZnNldCwgMTApLFxuICAgICAgICAgICAgICAgIG0gPSBobSAlIDEwMCxcbiAgICAgICAgICAgICAgICBoID0gKGhtIC0gbSkgLyAxMDA7XG4gICAgICAgICAgICByZXR1cm4gaCAqIDYwICsgbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgYW5kIHRpbWUgZnJvbSByZWYgMjgyMiBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tUkZDMjgyMihjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoID0gcmZjMjgyMi5leGVjKHByZXByb2Nlc3NSRkMyODIyKGNvbmZpZy5faSkpLFxuICAgICAgICAgICAgcGFyc2VkQXJyYXk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgcGFyc2VkQXJyYXkgPSBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKFxuICAgICAgICAgICAgICAgIG1hdGNoWzRdLFxuICAgICAgICAgICAgICAgIG1hdGNoWzNdLFxuICAgICAgICAgICAgICAgIG1hdGNoWzJdLFxuICAgICAgICAgICAgICAgIG1hdGNoWzVdLFxuICAgICAgICAgICAgICAgIG1hdGNoWzZdLFxuICAgICAgICAgICAgICAgIG1hdGNoWzddXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFjaGVja1dlZWtkYXkobWF0Y2hbMV0sIHBhcnNlZEFycmF5LCBjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25maWcuX2EgPSBwYXJzZWRBcnJheTtcbiAgICAgICAgICAgIGNvbmZpZy5fdHptID0gY2FsY3VsYXRlT2Zmc2V0KG1hdGNoWzhdLCBtYXRjaFs5XSwgbWF0Y2hbMTBdKTtcblxuICAgICAgICAgICAgY29uZmlnLl9kID0gY3JlYXRlVVRDRGF0ZS5hcHBseShudWxsLCBjb25maWcuX2EpO1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucmZjMjgyMiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSAxKSBBU1AuTkVULCAyKSBJU08sIDMpIFJGQyAyODIyIGZvcm1hdHMsIG9yIDQpIG9wdGlvbmFsIGZhbGxiYWNrIGlmIHBhcnNpbmcgaXNuJ3Qgc3RyaWN0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZyhjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcuX2kpO1xuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fc3RyaWN0KSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpbmFsIGF0dGVtcHQsIHVzZSBJbnB1dCBGYWxsYmFja1xuICAgICAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrID0gZGVwcmVjYXRlKFxuICAgICAgICAndmFsdWUgcHJvdmlkZWQgaXMgbm90IGluIGEgcmVjb2duaXplZCBSRkMyODIyIG9yIElTTyBmb3JtYXQuIG1vbWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksICcgK1xuICAgICAgICAgICAgJ3doaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9ybWF0cyBhcmUgJyArXG4gICAgICAgICAgICAnZGlzY291cmFnZWQuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIHRoZSBmaXJzdCBkZWZpbmVkIG9mIHR3byBvciB0aHJlZSBhcmd1bWVudHMuXG4gICAgZnVuY3Rpb24gZGVmYXVsdHMoYSwgYiwgYykge1xuICAgICAgICBpZiAoYSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZykge1xuICAgICAgICAvLyBob29rcyBpcyBhY3R1YWxseSB0aGUgZXhwb3J0ZWQgbW9tZW50IG9iamVjdFxuICAgICAgICB2YXIgbm93VmFsdWUgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIGlmIChjb25maWcuX3VzZVVUQykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBub3dWYWx1ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgICAgICAgICAgICAgIG5vd1ZhbHVlLmdldFVUQ01vbnRoKCksXG4gICAgICAgICAgICAgICAgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGlucHV0ID0gW10sXG4gICAgICAgICAgICBjdXJyZW50RGF0ZSxcbiAgICAgICAgICAgIGV4cGVjdGVkV2Vla2RheSxcbiAgICAgICAgICAgIHllYXJUb1VzZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKTtcblxuICAgICAgICAvL2NvbXB1dGUgZGF5IG9mIHRoZSB5ZWFyIGZyb20gd2Vla3MgYW5kIHdlZWtkYXlzXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgY29uZmlnLl9hW0RBVEVdID09IG51bGwgJiYgY29uZmlnLl9hW01PTlRIXSA9PSBudWxsKSB7XG4gICAgICAgICAgICBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgdGhlIGRheSBvZiB0aGUgeWVhciBpcyBzZXQsIGZpZ3VyZSBvdXQgd2hhdCBpdCBpc1xuICAgICAgICBpZiAoY29uZmlnLl9kYXlPZlllYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgeWVhclRvVXNlID0gZGVmYXVsdHMoY29uZmlnLl9hW1lFQVJdLCBjdXJyZW50RGF0ZVtZRUFSXSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSB8fFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dEYXlPZlllYXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZSh5ZWFyVG9Vc2UsIDAsIGNvbmZpZy5fZGF5T2ZZZWFyKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNT05USF0gPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgICAgICBjb25maWcuX2FbREFURV0gPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCBkYXRlLlxuICAgICAgICAvLyAqIGlmIG5vIHllYXIsIG1vbnRoLCBkYXkgb2YgbW9udGggYXJlIGdpdmVuLCBkZWZhdWx0IHRvIHRvZGF5XG4gICAgICAgIC8vICogaWYgZGF5IG9mIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG1vbnRoIGFuZCB5ZWFyXG4gICAgICAgIC8vICogaWYgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgb25seSB5ZWFyXG4gICAgICAgIC8vICogaWYgeWVhciBpcyBnaXZlbiwgZG9uJ3QgZGVmYXVsdCBhbnl0aGluZ1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMyAmJiBjb25maWcuX2FbaV0gPT0gbnVsbDsgKytpKSB7XG4gICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9IGN1cnJlbnREYXRlW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gWmVybyBvdXQgd2hhdGV2ZXIgd2FzIG5vdCBkZWZhdWx0ZWQsIGluY2x1ZGluZyB0aW1lXG4gICAgICAgIGZvciAoOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9XG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW2ldID09IG51bGwgPyAoaSA9PT0gMiA/IDEgOiAwKSA6IGNvbmZpZy5fYVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZvciAyNDowMDowMC4wMDBcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtTRUNPTkRdID09PSAwICYmXG4gICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uZmlnLl9uZXh0RGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWcuX2QgPSAoY29uZmlnLl91c2VVVEMgPyBjcmVhdGVVVENEYXRlIDogY3JlYXRlRGF0ZSkuYXBwbHkoXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgaW5wdXRcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVENcbiAgICAgICAgICAgID8gY29uZmlnLl9kLmdldFVUQ0RheSgpXG4gICAgICAgICAgICA6IGNvbmZpZy5fZC5nZXREYXkoKTtcblxuICAgICAgICAvLyBBcHBseSB0aW1lem9uZSBvZmZzZXQgZnJvbSBpbnB1dC4gVGhlIGFjdHVhbCB1dGNPZmZzZXQgY2FuIGJlIGNoYW5nZWRcbiAgICAgICAgLy8gd2l0aCBwYXJzZVpvbmUuXG4gICAgICAgIGlmIChjb25maWcuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2Quc2V0VVRDTWludXRlcyhjb25maWcuX2QuZ2V0VVRDTWludXRlcygpIC0gY29uZmlnLl90em0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fbmV4dERheSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMjQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVjayBmb3IgbWlzbWF0Y2hpbmcgZGF5IG9mIHdlZWtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlnLl93ICYmXG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLl93LmQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5XG4gICAgICAgICkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpIHtcbiAgICAgICAgdmFyIHcsIHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2RheU92ZXJmbG93LCBjdXJXZWVrO1xuXG4gICAgICAgIHcgPSBjb25maWcuX3c7XG4gICAgICAgIGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRvdyA9IDE7XG4gICAgICAgICAgICBkb3kgPSA0O1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHRha2UgdGhlIGN1cnJlbnQgaXNvV2Vla1llYXIsIGJ1dCB0aGF0IGRlcGVuZHMgb25cbiAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGVcbiAgICAgICAgICAgIC8vIGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwvdXRjL29mZnNldCBmbGFncywgYW5kXG4gICAgICAgICAgICAvLyBjcmVhdGUgbm93KS5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMoXG4gICAgICAgICAgICAgICAgdy5HRyxcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbWUVBUl0sXG4gICAgICAgICAgICAgICAgd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCAxLCA0KS55ZWFyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcuVywgMSk7XG4gICAgICAgICAgICB3ZWVrZGF5ID0gZGVmYXVsdHMody5FLCAxKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMSB8fCB3ZWVrZGF5ID4gNykge1xuICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb3cgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3c7XG4gICAgICAgICAgICBkb3kgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3k7XG5cbiAgICAgICAgICAgIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmUgKyBkb3c7XG4gICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSBkb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlZWsgPCAxIHx8IHdlZWsgPiB3ZWVrc0luWWVhcih3ZWVrWWVhciwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAod2Vla2RheU92ZXJmbG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtkYXkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVtcCA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gdGVtcC55ZWFyO1xuICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0ZW1wLmRheU9mWWVhcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBJU08gc3RhbmRhcmRcbiAgICBob29rcy5JU09fODYwMSA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIFJGQyAyODIyIGZvcm1cbiAgICBob29rcy5SRkNfMjgyMiA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZ1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKSB7XG4gICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJldmVudCBjaXJjdWxhciBkZXBzXG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLklTT184NjAxKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuUkZDXzI4MjIpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnLl9hID0gW107XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVpdGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYFxuICAgICAgICB2YXIgc3RyaW5nID0gJycgKyBjb25maWcuX2ksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcGFyc2VkSW5wdXQsXG4gICAgICAgICAgICB0b2tlbnMsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDAsXG4gICAgICAgICAgICBlcmEsXG4gICAgICAgICAgICB0b2tlbkxlbjtcblxuICAgICAgICB0b2tlbnMgPVxuICAgICAgICAgICAgZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuICAgICAgICB0b2tlbkxlbiA9IHRva2Vucy5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbkxlbjsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgICAgIHBhcnNlZElucHV0ID0gKHN0cmluZy5tYXRjaChnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpIHx8XG4gICAgICAgICAgICAgICAgW10pWzBdO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpICsgcGFyc2VkSW5wdXQubGVuZ3RoXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoICs9IHBhcnNlZElucHV0Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlIGlmIGl0J3Mgbm90IGEga25vd24gdG9rZW5cbiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0pIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBwYXJzZWRJbnB1dCwgY29uZmlnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLl9zdHJpY3QgJiYgIXBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWRkIHJlbWFpbmluZyB1bnBhcnNlZCBpbnB1dCBsZW5ndGggdG8gdGhlIHN0cmluZ1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5jaGFyc0xlZnRPdmVyID1cbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCAtIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGg7XG4gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMgPD0gMTJcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdIDw9IDEyICYmXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID09PSB0cnVlICYmXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnBhcnNlZERhdGVQYXJ0cyA9IGNvbmZpZy5fYS5zbGljZSgwKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykubWVyaWRpZW0gPSBjb25maWcuX21lcmlkaWVtO1xuICAgICAgICAvLyBoYW5kbGUgbWVyaWRpZW1cbiAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gbWVyaWRpZW1GaXhXcmFwKFxuICAgICAgICAgICAgY29uZmlnLl9sb2NhbGUsXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0sXG4gICAgICAgICAgICBjb25maWcuX21lcmlkaWVtXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gaGFuZGxlIGVyYVxuICAgICAgICBlcmEgPSBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lcmE7XG4gICAgICAgIGlmIChlcmEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IGNvbmZpZy5fbG9jYWxlLmVyYXNDb252ZXJ0WWVhcihlcmEsIGNvbmZpZy5fYVtZRUFSXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtRml4V3JhcChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuICAgICAgICAgICAgc2NvcmVUb0JlYXQsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgY3VycmVudFNjb3JlLFxuICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZCxcbiAgICAgICAgICAgIGJlc3RGb3JtYXRJc1ZhbGlkID0gZmFsc2UsXG4gICAgICAgICAgICBjb25maWdmTGVuID0gY29uZmlnLl9mLmxlbmd0aDtcblxuICAgICAgICBpZiAoY29uZmlnZkxlbiA9PT0gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZ2ZMZW47IGkrKykge1xuICAgICAgICAgICAgY3VycmVudFNjb3JlID0gMDtcbiAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBjb25maWcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBjb25maWcuX3VzZVVUQztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZCh0ZW1wQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgdGhhdCB3YXMgbm90IHBhcnNlZCBhZGQgYSBwZW5hbHR5IGZvciB0aGF0IGZvcm1hdFxuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5jaGFyc0xlZnRPdmVyO1xuXG4gICAgICAgICAgICAvL29yIHRva2Vuc1xuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS51bnVzZWRUb2tlbnMubGVuZ3RoICogMTA7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5zY29yZSA9IGN1cnJlbnRTY29yZTtcblxuICAgICAgICAgICAgaWYgKCFiZXN0Rm9ybWF0SXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCB8fFxuICAgICAgICAgICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkRm9ybWF0Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RGb3JtYXRJc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoY29uZmlnLl9pKSxcbiAgICAgICAgICAgIGRheU9yRGF0ZSA9IGkuZGF5ID09PSB1bmRlZmluZWQgPyBpLmRhdGUgOiBpLmRheTtcbiAgICAgICAgY29uZmlnLl9hID0gbWFwKFxuICAgICAgICAgICAgW2kueWVhciwgaS5tb250aCwgZGF5T3JEYXRlLCBpLmhvdXIsIGkubWludXRlLCBpLnNlY29uZCwgaS5taWxsaXNlY29uZF0sXG4gICAgICAgICAgICBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnKGNvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gbmV3IE1vbWVudChjaGVja092ZXJmbG93KHByZXBhcmVDb25maWcoY29uZmlnKSkpO1xuICAgICAgICBpZiAocmVzLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICAvLyBBZGRpbmcgaXMgc21hcnQgZW5vdWdoIGFyb3VuZCBEU1RcbiAgICAgICAgICAgIHJlcy5hZGQoMSwgJ2QnKTtcbiAgICAgICAgICAgIHJlcy5fbmV4dERheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGFyZUNvbmZpZyhjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7IG51bGxJbnB1dDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBpbnB1dDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlucHV0KGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzVmFsaWQoY29uZmlnKSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlucHV0KGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2k7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dC52YWx1ZU9mKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9hID0gbWFwKGlucHV0LnNsaWNlKDApLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAoZm9ybWF0ID09PSB0cnVlIHx8IGZvcm1hdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUgPT09IHRydWUgfHwgbG9jYWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGlzT2JqZWN0KGlucHV0KSAmJiBpc09iamVjdEVtcHR5KGlucHV0KSkgfHxcbiAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiBtdXN0IGJlIGRvbmUgdGhpcyB3YXkuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNDIzXG4gICAgICAgIGMuX2lzQU1vbWVudE9iamVjdCA9IHRydWU7XG4gICAgICAgIGMuX3VzZVVUQyA9IGMuX2lzVVRDID0gaXNVVEM7XG4gICAgICAgIGMuX2wgPSBsb2NhbGU7XG4gICAgICAgIGMuX2kgPSBpbnB1dDtcbiAgICAgICAgYy5fZiA9IGZvcm1hdDtcbiAgICAgICAgYy5fc3RyaWN0ID0gc3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVGcm9tQ29uZmlnKGMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgICAgICdtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIHByb3RvdHlwZU1heCA9IGRlcHJlY2F0ZShcbiAgICAgICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA+IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNCZWZvcmUnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXgoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQWZ0ZXInLCBhcmdzKTtcbiAgICB9XG5cbiAgICB2YXIgbm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3cgPyBEYXRlLm5vdygpIDogK25ldyBEYXRlKCk7XG4gICAgfTtcblxuICAgIHZhciBvcmRlcmluZyA9IFtcbiAgICAgICAgJ3llYXInLFxuICAgICAgICAncXVhcnRlcicsXG4gICAgICAgICdtb250aCcsXG4gICAgICAgICd3ZWVrJyxcbiAgICAgICAgJ2RheScsXG4gICAgICAgICdob3VyJyxcbiAgICAgICAgJ21pbnV0ZScsXG4gICAgICAgICdzZWNvbmQnLFxuICAgICAgICAnbWlsbGlzZWNvbmQnLFxuICAgIF07XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uVmFsaWQobSkge1xuICAgICAgICB2YXIga2V5LFxuICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSBmYWxzZSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBvcmRlckxlbiA9IG9yZGVyaW5nLmxlbmd0aDtcbiAgICAgICAgZm9yIChrZXkgaW4gbSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGhhc093blByb3AobSwga2V5KSAmJlxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgIGluZGV4T2YuY2FsbChvcmRlcmluZywga2V5KSAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgKG1ba2V5XSA9PSBudWxsIHx8ICFpc05hTihtW2tleV0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvcmRlckxlbjsgKytpKSB7XG4gICAgICAgICAgICBpZiAobVtvcmRlcmluZ1tpXV0pIHtcbiAgICAgICAgICAgICAgICBpZiAodW5pdEhhc0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBvbmx5IGFsbG93IG5vbi1pbnRlZ2VycyBmb3Igc21hbGxlc3QgdW5pdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGFyc2VGbG9hdChtW29yZGVyaW5nW2ldXSkgIT09IHRvSW50KG1bb3JkZXJpbmdbaV1dKSkge1xuICAgICAgICAgICAgICAgICAgICB1bml0SGFzRGVjaW1hbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbihOYU4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIER1cmF0aW9uKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgbm9ybWFsaXplZElucHV0Lmlzb1dlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPVxuICAgICAgICAgICAgK21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICBzZWNvbmRzICogMWUzICsgLy8gMTAwMFxuICAgICAgICAgICAgbWludXRlcyAqIDZlNCArIC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgaG91cnMgKiAxMDAwICogNjAgKiA2MDsgLy91c2luZyAxMDAwICogNjAgKiA2MCBpbnN0ZWFkIG9mIDM2ZTUgdG8gYXZvaWQgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yOTc4XG4gICAgICAgIC8vIEJlY2F1c2Ugb2YgZGF0ZUFkZFJlbW92ZSB0cmVhdHMgMjQgaG91cnMgYXMgZGlmZmVyZW50IGZyb20gYVxuICAgICAgICAvLyBkYXkgd2hlbiB3b3JraW5nIGFyb3VuZCBEU1QsIHdlIG5lZWQgdG8gc3RvcmUgdGhlbSBzZXBhcmF0ZWx5XG4gICAgICAgIHRoaXMuX2RheXMgPSArZGF5cyArIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArIHF1YXJ0ZXJzICogMyArIHllYXJzICogMTI7XG5cbiAgICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuXG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGdldExvY2FsZSgpO1xuXG4gICAgICAgIHRoaXMuX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb24ob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKC0xICogbnVtYmVyKSAqIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNvbXBhcmUgdHdvIGFycmF5cywgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGlmZmVyZW5jZXNcbiAgICBmdW5jdGlvbiBjb21wYXJlQXJyYXlzKGFycmF5MSwgYXJyYXkyLCBkb250Q29udmVydCkge1xuICAgICAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJyYXkxLmxlbmd0aCwgYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBsZW5ndGhEaWZmID0gTWF0aC5hYnMoYXJyYXkxLmxlbmd0aCAtIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgZGlmZnMgPSAwLFxuICAgICAgICAgICAgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGRvbnRDb252ZXJ0ICYmIGFycmF5MVtpXSAhPT0gYXJyYXkyW2ldKSB8fFxuICAgICAgICAgICAgICAgICghZG9udENvbnZlcnQgJiYgdG9JbnQoYXJyYXkxW2ldKSAhPT0gdG9JbnQoYXJyYXkyW2ldKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGRpZmZzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQodG9rZW4sIHNlcGFyYXRvcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCksXG4gICAgICAgICAgICAgICAgc2lnbiA9ICcrJztcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDtcbiAgICAgICAgICAgICAgICBzaWduID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBzaWduICtcbiAgICAgICAgICAgICAgICB6ZXJvRmlsbCh+fihvZmZzZXQgLyA2MCksIDIpICtcbiAgICAgICAgICAgICAgICBzZXBhcmF0b3IgK1xuICAgICAgICAgICAgICAgIHplcm9GaWxsKH5+b2Zmc2V0ICUgNjAsIDIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvZmZzZXQoJ1onLCAnOicpO1xuICAgIG9mZnNldCgnWlonLCAnJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdaJywgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlciksXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIHBhcnRzLFxuICAgICAgICAgICAgbWludXRlcztcblxuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjaHVuayA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXSB8fCBbXTtcbiAgICAgICAgcGFydHMgPSAoY2h1bmsgKyAnJykubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsIDAsIDBdO1xuICAgICAgICBtaW51dGVzID0gKyhwYXJ0c1sxXSAqIDYwKSArIHRvSW50KHBhcnRzWzJdKTtcblxuICAgICAgICByZXR1cm4gbWludXRlcyA9PT0gMCA/IDAgOiBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9XG4gICAgICAgICAgICAgICAgKGlzTW9tZW50KGlucHV0KSB8fCBpc0RhdGUoaW5wdXQpXG4gICAgICAgICAgICAgICAgICAgID8gaW5wdXQudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlTG9jYWwoaW5wdXQpLnZhbHVlT2YoKSkgLSByZXMudmFsdWVPZigpO1xuICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLlxuICAgICAgICAgICAgcmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHJlcywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCkubG9jYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERhdGVPZmZzZXQobSkge1xuICAgICAgICAvLyBPbiBGaXJlZm94LjI0IERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyBhIGZsb2F0aW5nIHBvaW50LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9wdWxsLzE4NzFcbiAgICAgICAgcmV0dXJuIC1NYXRoLnJvdW5kKG0uX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSwga2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX29mZnNldCB8fCAwLFxuICAgICAgICAgICAgbG9jYWxBZGp1c3Q7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGlucHV0KSA8IDE2ICYmICFrZWVwTWludXRlcykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgKiA2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIGxvY2FsQWRqdXN0ID0gZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29mZnNldCA9IGlucHV0O1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGxvY2FsQWRqdXN0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZChsb2NhbEFkanVzdCwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkU3VidHJhY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gb2Zmc2V0IDogZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFpvbmUoaW5wdXQsIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSAtaW5wdXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gLXRoaXMudXRjT2Zmc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1VUQyhrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChnZXREYXRlT2Zmc2V0KHRoaXMpLCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0KCkge1xuICAgICAgICBpZiAodGhpcy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSwgZmFsc2UsIHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFyIHRab25lID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaE9mZnNldCwgdGhpcy5faSk7XG4gICAgICAgICAgICBpZiAodFpvbmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KHRab25lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0ID0gaW5wdXQgPyBjcmVhdGVMb2NhbChpbnB1dCkudXRjT2Zmc2V0KCkgOiAwO1xuXG4gICAgICAgIHJldHVybiAodGhpcy51dGNPZmZzZXQoKSAtIGlucHV0KSAlIDYwID09PSAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoKSA+IHRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKSB8fFxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoKSA+IHRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fSxcbiAgICAgICAgICAgIG90aGVyO1xuXG4gICAgICAgIGNvcHlDb25maWcoYywgdGhpcyk7XG4gICAgICAgIGMgPSBwcmVwYXJlQ29uZmlnKGMpO1xuXG4gICAgICAgIGlmIChjLl9hKSB7XG4gICAgICAgICAgICBvdGhlciA9IGMuX2lzVVRDID8gY3JlYXRlVVRDKGMuX2EpIDogY3JlYXRlTG9jYWwoYy5fYSk7XG4gICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0ZWQgPVxuICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZCgpICYmIGNvbXBhcmVBcnJheXMoYy5fYSwgb3RoZXIudG9BcnJheSgpKSA+IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMb2NhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDICYmIHRoaXMuX29mZnNldCA9PT0gMCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEFTUC5ORVQganNvbiBkYXRlIGZvcm1hdCByZWdleFxuICAgIHZhciBhc3BOZXRSZWdleCA9IC9eKC18XFwrKT8oPzooXFxkKilbLiBdKT8oXFxkKyk6KFxcZCspKD86OihcXGQrKShcXC5cXGQqKT8pPyQvLFxuICAgICAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgICAgICAvLyBzb21ld2hhdCBtb3JlIGluIGxpbmUgd2l0aCA0LjQuMy4yIDIwMDQgc3BlYywgYnV0IGFsbG93cyBkZWNpbWFsIGFueXdoZXJlXG4gICAgICAgIC8vIGFuZCBmdXJ0aGVyIG1vZGlmaWVkIHRvIGFsbG93IGZvciBzdHJpbmdzIGNvbnRhaW5pbmcgYm90aCB3ZWVrIGFuZCBkYXlcbiAgICAgICAgaXNvUmVnZXggPVxuICAgICAgICAgICAgL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uKGlucHV0LCBrZXkpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gaW5wdXQsXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBhZ2FpbnN0IHJlZ2V4cCBpcyBleHBlbnNpdmUsIGRvIGl0IG9uIGRlbWFuZFxuICAgICAgICAgICAgbWF0Y2ggPSBudWxsLFxuICAgICAgICAgICAgc2lnbixcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGRpZmZSZXM7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBtczogaW5wdXQuX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgICAgICBkOiBpbnB1dC5fZGF5cyxcbiAgICAgICAgICAgICAgICBNOiBpbnB1dC5fbW9udGhzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkgfHwgIWlzTmFOKCtpbnB1dCkpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb25ba2V5XSA9ICtpbnB1dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlzZWNvbmRzID0gK2lucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKChtYXRjaCA9IGFzcE5ldFJlZ2V4LmV4ZWMoaW5wdXQpKSkge1xuICAgICAgICAgICAgc2lnbiA9IG1hdGNoWzFdID09PSAnLScgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgIGQ6IHRvSW50KG1hdGNoW0RBVEVdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgaDogdG9JbnQobWF0Y2hbSE9VUl0pICogc2lnbixcbiAgICAgICAgICAgICAgICBtOiB0b0ludChtYXRjaFtNSU5VVEVdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgczogdG9JbnQobWF0Y2hbU0VDT05EXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIG1zOiB0b0ludChhYnNSb3VuZChtYXRjaFtNSUxMSVNFQ09ORF0gKiAxMDAwKSkgKiBzaWduLCAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2hcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gbWF0Y2hbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHk6IHBhcnNlSXNvKG1hdGNoWzJdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBNOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgdzogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGQ6IHBhcnNlSXNvKG1hdGNoWzVdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBoOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgbTogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHM6IHBhcnNlSXNvKG1hdGNoWzhdLCBzaWduKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICgnZnJvbScgaW4gZHVyYXRpb24gfHwgJ3RvJyBpbiBkdXJhdGlvbilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UoXG4gICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwoZHVyYXRpb24uZnJvbSksXG4gICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwoZHVyYXRpb24udG8pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgZHVyYXRpb24ubXMgPSBkaWZmUmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIGR1cmF0aW9uLk0gPSBkaWZmUmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldCA9IG5ldyBEdXJhdGlvbihkdXJhdGlvbik7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfbG9jYWxlJykpIHtcbiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2lzVmFsaWQnKSkge1xuICAgICAgICAgICAgcmV0Ll9pc1ZhbGlkID0gaW5wdXQuX2lzVmFsaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNyZWF0ZUR1cmF0aW9uLmZuID0gRHVyYXRpb24ucHJvdG90eXBlO1xuICAgIGNyZWF0ZUR1cmF0aW9uLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkJDE7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzbyhpbnAsIHNpZ24pIHtcbiAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc29cbiAgICAgICAgLy8gY29udmVydHMgZmxvYXRzIHRvIGludHMuXG4gICAgICAgIC8vIGlucCBtYXkgYmUgdW5kZWZpbmVkLCBzbyBjYXJlZnVsIGNhbGxpbmcgcmVwbGFjZSBvbiBpdC5cbiAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7XG4gICAgICAgIC8vIGFwcGx5IHNpZ24gd2hpbGUgd2UncmUgYXQgaXRcbiAgICAgICAgcmV0dXJuIChpc05hTihyZXMpID8gMCA6IHJlcykgKiBzaWduO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcyA9IHt9O1xuXG4gICAgICAgIHJlcy5tb250aHMgPVxuICAgICAgICAgICAgb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArIChvdGhlci55ZWFyKCkgLSBiYXNlLnllYXIoKSkgKiAxMjtcbiAgICAgICAgaWYgKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKS5pc0FmdGVyKG90aGVyKSkge1xuICAgICAgICAgICAgLS1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICtiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4geyBtaWxsaXNlY29uZHM6IDAsIG1vbnRoczogMCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3RoZXIgPSBjbG9uZVdpdGhPZmZzZXQob3RoZXIsIGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZShvdGhlcikpIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShvdGhlciwgYmFzZSk7XG4gICAgICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gLXJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICByZXMubW9udGhzID0gLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWRcbiAgICBmdW5jdGlvbiBjcmVhdGVBZGRlcihkaXJlY3Rpb24sIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWwsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIGR1ciwgdG1wO1xuICAgICAgICAgICAgLy9pbnZlcnQgdGhlIGFyZ3VtZW50cywgYnV0IGNvbXBsYWluIGFib3V0IGl0XG4gICAgICAgICAgICBpZiAocGVyaW9kICE9PSBudWxsICYmICFpc05hTigrcGVyaW9kKSkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgJ21vbWVudCgpLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRtcCA9IHZhbDtcbiAgICAgICAgICAgICAgICB2YWwgPSBwZXJpb2Q7XG4gICAgICAgICAgICAgICAgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdChtb20sIGR1cmF0aW9uLCBpc0FkZGluZywgdXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IGFic1JvdW5kKGR1cmF0aW9uLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFic1JvdW5kKGR1cmF0aW9uLl9tb250aHMpO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDtcblxuICAgICAgICBpZiAobW9udGhzKSB7XG4gICAgICAgICAgICBzZXRNb250aChtb20sIGdldChtb20sICdNb250aCcpICsgbW9udGhzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXlzKSB7XG4gICAgICAgICAgICBzZXQkMShtb20sICdEYXRlJywgZ2V0KG1vbSwgJ0RhdGUnKSArIGRheXMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICAgICAgbW9tLl9kLnNldFRpbWUobW9tLl9kLnZhbHVlT2YoKSArIG1pbGxpc2Vjb25kcyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQobW9tLCBkYXlzIHx8IG1vbnRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYWRkID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpLFxuICAgICAgICBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnIHx8IGlucHV0IGluc3RhbmNlb2YgU3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHR5cGUgTW9tZW50SW5wdXQgPSBNb21lbnQgfCBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgKG51bWJlciB8IHN0cmluZylbXSB8IE1vbWVudElucHV0T2JqZWN0IHwgdm9pZDsgLy8gbnVsbCB8IHVuZGVmaW5lZFxuICAgIGZ1bmN0aW9uIGlzTW9tZW50SW5wdXQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzTW9tZW50KGlucHV0KSB8fFxuICAgICAgICAgICAgaXNEYXRlKGlucHV0KSB8fFxuICAgICAgICAgICAgaXNTdHJpbmcoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc051bWJlcihpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzTnVtYmVyT3JTdHJpbmdBcnJheShpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzTW9tZW50SW5wdXRPYmplY3QoaW5wdXQpIHx8XG4gICAgICAgICAgICBpbnB1dCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgaW5wdXQgPT09IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTW9tZW50SW5wdXRPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgdmFyIG9iamVjdFRlc3QgPSBpc09iamVjdChpbnB1dCkgJiYgIWlzT2JqZWN0RW1wdHkoaW5wdXQpLFxuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgICAgICAgICd5ZWFycycsXG4gICAgICAgICAgICAgICAgJ3llYXInLFxuICAgICAgICAgICAgICAgICd5JyxcbiAgICAgICAgICAgICAgICAnbW9udGhzJyxcbiAgICAgICAgICAgICAgICAnbW9udGgnLFxuICAgICAgICAgICAgICAgICdNJyxcbiAgICAgICAgICAgICAgICAnZGF5cycsXG4gICAgICAgICAgICAgICAgJ2RheScsXG4gICAgICAgICAgICAgICAgJ2QnLFxuICAgICAgICAgICAgICAgICdkYXRlcycsXG4gICAgICAgICAgICAgICAgJ2RhdGUnLFxuICAgICAgICAgICAgICAgICdEJyxcbiAgICAgICAgICAgICAgICAnaG91cnMnLFxuICAgICAgICAgICAgICAgICdob3VyJyxcbiAgICAgICAgICAgICAgICAnaCcsXG4gICAgICAgICAgICAgICAgJ21pbnV0ZXMnLFxuICAgICAgICAgICAgICAgICdtaW51dGUnLFxuICAgICAgICAgICAgICAgICdtJyxcbiAgICAgICAgICAgICAgICAnc2Vjb25kcycsXG4gICAgICAgICAgICAgICAgJ3NlY29uZCcsXG4gICAgICAgICAgICAgICAgJ3MnLFxuICAgICAgICAgICAgICAgICdtaWxsaXNlY29uZHMnLFxuICAgICAgICAgICAgICAgICdtaWxsaXNlY29uZCcsXG4gICAgICAgICAgICAgICAgJ21zJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICBwcm9wZXJ0eUxlbiA9IHByb3BlcnRpZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wZXJ0eUxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBwcm9wZXJ0eVRlc3QgfHwgaGFzT3duUHJvcChpbnB1dCwgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iamVjdFRlc3QgJiYgcHJvcGVydHlUZXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyT3JTdHJpbmdBcnJheShpbnB1dCkge1xuICAgICAgICB2YXIgYXJyYXlUZXN0ID0gaXNBcnJheShpbnB1dCksXG4gICAgICAgICAgICBkYXRhVHlwZVRlc3QgPSBmYWxzZTtcbiAgICAgICAgaWYgKGFycmF5VGVzdCkge1xuICAgICAgICAgICAgZGF0YVR5cGVUZXN0ID1cbiAgICAgICAgICAgICAgICBpbnB1dC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc051bWJlcihpdGVtKSAmJiBpc1N0cmluZyhpbnB1dCk7XG4gICAgICAgICAgICAgICAgfSkubGVuZ3RoID09PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheVRlc3QgJiYgZGF0YVR5cGVUZXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FsZW5kYXJTcGVjKGlucHV0KSB7XG4gICAgICAgIHZhciBvYmplY3RUZXN0ID0gaXNPYmplY3QoaW5wdXQpICYmICFpc09iamVjdEVtcHR5KGlucHV0KSxcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICAgICAgICAnc2FtZURheScsXG4gICAgICAgICAgICAgICAgJ25leHREYXknLFxuICAgICAgICAgICAgICAgICdsYXN0RGF5JyxcbiAgICAgICAgICAgICAgICAnbmV4dFdlZWsnLFxuICAgICAgICAgICAgICAgICdsYXN0V2VlaycsXG4gICAgICAgICAgICAgICAgJ3NhbWVFbHNlJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcHJvcGVydHk7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IHByb3BlcnR5VGVzdCB8fCBoYXNPd25Qcm9wKGlucHV0LCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0VGVzdCAmJiBwcm9wZXJ0eVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJGb3JtYXQobXlNb21lbnQsIG5vdykge1xuICAgICAgICB2YXIgZGlmZiA9IG15TW9tZW50LmRpZmYobm93LCAnZGF5cycsIHRydWUpO1xuICAgICAgICByZXR1cm4gZGlmZiA8IC02XG4gICAgICAgICAgICA/ICdzYW1lRWxzZSdcbiAgICAgICAgICAgIDogZGlmZiA8IC0xXG4gICAgICAgICAgICAgID8gJ2xhc3RXZWVrJ1xuICAgICAgICAgICAgICA6IGRpZmYgPCAwXG4gICAgICAgICAgICAgICAgPyAnbGFzdERheSdcbiAgICAgICAgICAgICAgICA6IGRpZmYgPCAxXG4gICAgICAgICAgICAgICAgICA/ICdzYW1lRGF5J1xuICAgICAgICAgICAgICAgICAgOiBkaWZmIDwgMlxuICAgICAgICAgICAgICAgICAgICA/ICduZXh0RGF5J1xuICAgICAgICAgICAgICAgICAgICA6IGRpZmYgPCA3XG4gICAgICAgICAgICAgICAgICAgICAgPyAnbmV4dFdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnc2FtZUVsc2UnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyJDEodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBTdXBwb3J0IGZvciBzaW5nbGUgcGFyYW1ldGVyLCBmb3JtYXRzIG9ubHkgb3ZlcmxvYWQgdG8gdGhlIGNhbGVuZGFyIGZ1bmN0aW9uXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBpZiAoIWFyZ3VtZW50c1swXSkge1xuICAgICAgICAgICAgICAgIHRpbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNNb21lbnRJbnB1dChhcmd1bWVudHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgdGltZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NhbGVuZGFyU3BlYyhhcmd1bWVudHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0cyA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICB0aW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuXG4gICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LlxuICAgICAgICB2YXIgbm93ID0gdGltZSB8fCBjcmVhdGVMb2NhbCgpLFxuICAgICAgICAgICAgc29kID0gY2xvbmVXaXRoT2Zmc2V0KG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksXG4gICAgICAgICAgICBmb3JtYXQgPSBob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxzZScsXG4gICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIGZvcm1hdHMgJiZcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbihmb3JtYXRzW2Zvcm1hdF0pXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0c1tmb3JtYXRdLmNhbGwodGhpcywgbm93KVxuICAgICAgICAgICAgICAgICAgICA6IGZvcm1hdHNbZm9ybWF0XSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KFxuICAgICAgICAgICAgb3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlcihpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbElucHV0LnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JlZm9yZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZXR3ZWVuKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgdmFyIGxvY2FsRnJvbSA9IGlzTW9tZW50KGZyb20pID8gZnJvbSA6IGNyZWF0ZUxvY2FsKGZyb20pLFxuICAgICAgICAgICAgbG9jYWxUbyA9IGlzTW9tZW50KHRvKSA/IHRvIDogY3JlYXRlTG9jYWwodG8pO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbEZyb20uaXNWYWxpZCgpICYmIGxvY2FsVG8uaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVswXSA9PT0gJygnXG4gICAgICAgICAgICAgICAgPyB0aGlzLmlzQWZ0ZXIobG9jYWxGcm9tLCB1bml0cylcbiAgICAgICAgICAgICAgICA6ICF0aGlzLmlzQmVmb3JlKGxvY2FsRnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKSdcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNCZWZvcmUobG9jYWxUbywgdW5pdHMpXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5pc0FmdGVyKGxvY2FsVG8sIHVuaXRzKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWUoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCkgPD0gaW5wdXRNcyAmJlxuICAgICAgICAgICAgICAgIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0JlZm9yZShpbnB1dCwgdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYoaW5wdXQsIHVuaXRzLCBhc0Zsb2F0KSB7XG4gICAgICAgIHZhciB0aGF0LCB6b25lRGVsdGEsIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMTI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDFlMztcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMFxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAzNmU1O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gODY0ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMgLSB0aGF0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzRmxvYXQgPyBvdXRwdXQgOiBhYnNGbG9vcihvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoRGlmZihhLCBiKSB7XG4gICAgICAgIGlmIChhLmRhdGUoKSA8IGIuZGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBlbmQtb2YtbW9udGggY2FsY3VsYXRpb25zIHdvcmsgY29ycmVjdCB3aGVuIHRoZSBzdGFydCBtb250aCBoYXMgbW9yZVxuICAgICAgICAgICAgLy8gZGF5cyB0aGFuIHRoZSBlbmQgbW9udGguXG4gICAgICAgICAgICByZXR1cm4gLW1vbnRoRGlmZihiLCBhKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRoc1xuICAgICAgICB2YXIgd2hvbGVNb250aERpZmYgPSAoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMiArIChiLm1vbnRoKCkgLSBhLm1vbnRoKCkpLFxuICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aClcbiAgICAgICAgICAgIGFuY2hvciA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYsICdtb250aHMnKSxcbiAgICAgICAgICAgIGFuY2hvcjIsXG4gICAgICAgICAgICBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nKGtlZXBPZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHV0YyA9IGtlZXBPZmZzZXQgIT09IHRydWUsXG4gICAgICAgICAgICBtID0gdXRjID8gdGhpcy5jbG9uZSgpLnV0YygpIDogdGhpcztcbiAgICAgICAgaWYgKG0ueWVhcigpIDwgMCB8fCBtLnllYXIoKSA+IDk5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQoXG4gICAgICAgICAgICAgICAgbSxcbiAgICAgICAgICAgICAgICB1dGNcbiAgICAgICAgICAgICAgICAgICAgPyAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJ1xuICAgICAgICAgICAgICAgICAgICA6ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMClcbiAgICAgICAgICAgICAgICAgICAgLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJ1onLCBmb3JtYXRNb21lbnQobSwgJ1onKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChcbiAgICAgICAgICAgIG0sXG4gICAgICAgICAgICB1dGMgPyAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbW9tZW50LmludmFsaWQoLyogJyArIHRoaXMuX2kgKyAnICovKSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZ1bmMgPSAnbW9tZW50JyxcbiAgICAgICAgICAgIHpvbmUgPSAnJyxcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIHllYXIsXG4gICAgICAgICAgICBkYXRldGltZSxcbiAgICAgICAgICAgIHN1ZmZpeDtcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9jYWwoKSkge1xuICAgICAgICAgICAgZnVuYyA9IHRoaXMudXRjT2Zmc2V0KCkgPT09IDAgPyAnbW9tZW50LnV0YycgOiAnbW9tZW50LnBhcnNlWm9uZSc7XG4gICAgICAgICAgICB6b25lID0gJ1onO1xuICAgICAgICB9XG4gICAgICAgIHByZWZpeCA9ICdbJyArIGZ1bmMgKyAnKFwiXSc7XG4gICAgICAgIHllYXIgPSAwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkgPyAnWVlZWScgOiAnWVlZWVlZJztcbiAgICAgICAgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgc3VmZml4ID0gem9uZSArICdbXCIpXSc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KHByZWZpeCArIHllYXIgKyBkYXRldGltZSArIHN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9ybWF0KGlucHV0U3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nID0gdGhpcy5pc1V0YygpXG4gICAgICAgICAgICAgICAgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjXG4gICAgICAgICAgICAgICAgOiBob29rcy5kZWZhdWx0Rm9ybWF0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb20odGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHwgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7IHRvOiB0aGlzLCBmcm9tOiB0aW1lIH0pXG4gICAgICAgICAgICAgICAgLmxvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgICAgICAgICAgIC5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb21Ob3cod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8IGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oeyBmcm9tOiB0aGlzLCB0bzogdGltZSB9KVxuICAgICAgICAgICAgICAgIC5sb2NhbGUodGhpcy5sb2NhbGUoKSlcbiAgICAgICAgICAgICAgICAuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vdyh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZShrZXkpIHtcbiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TG9jYWxlRGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLFxuICAgICAgICBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgdmFyIE1TX1BFUl9TRUNPTkQgPSAxMDAwLFxuICAgICAgICBNU19QRVJfTUlOVVRFID0gNjAgKiBNU19QRVJfU0VDT05ELFxuICAgICAgICBNU19QRVJfSE9VUiA9IDYwICogTVNfUEVSX01JTlVURSxcbiAgICAgICAgTVNfUEVSXzQwMF9ZRUFSUyA9ICgzNjUgKiA0MDAgKyA5NykgKiAyNCAqIE1TX1BFUl9IT1VSO1xuXG4gICAgLy8gYWN0dWFsIG1vZHVsbyAtIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyAoZm9yIGRhdGVzIGJlZm9yZSAxOTcwKTpcbiAgICBmdW5jdGlvbiBtb2QkMShkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgICByZXR1cm4gKChkaXZpZGVuZCAlIGRpdmlzb3IpICsgZGl2aXNvcikgJSBkaXZpc29yO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsU3RhcnRPZkRhdGUoeSwgbSwgZCkge1xuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHkgKyA0MDAsIG0sIGQpIC0gTVNfUEVSXzQwMF9ZRUFSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5LCBtLCBkKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1dGNTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIERhdGUuVVRDIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIERhdGUuVVRDKHksIG0sIGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhcnRPZih1bml0cykge1xuICAgICAgICB2YXIgdGltZSwgc3RhcnRPZkRhdGU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpIC0gKHRoaXMubW9udGgoKSAlIDMpLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEoXG4gICAgICAgICAgICAgICAgICAgIHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLFxuICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRPZih1bml0cykge1xuICAgICAgICB2YXIgdGltZSwgc3RhcnRPZkRhdGU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCkgKyAxLCAwLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSAtICh0aGlzLm1vbnRoKCkgJSAzKSArIDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpICsgMSwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtIHRoaXMud2Vla2RheSgpICsgN1xuICAgICAgICAgICAgICAgICAgICApIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSArIDdcbiAgICAgICAgICAgICAgICAgICAgKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpICsgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz1cbiAgICAgICAgICAgICAgICAgICAgTVNfUEVSX0hPVVIgLVxuICAgICAgICAgICAgICAgICAgICBtb2QkMShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTVNfUEVSX0hPVVJcbiAgICAgICAgICAgICAgICAgICAgKSAtXG4gICAgICAgICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9NSU5VVEUgLSBtb2QkMSh0aW1lLCBNU19QRVJfTUlOVVRFKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9TRUNPTkQgLSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kLnNldFRpbWUodGltZSk7XG4gICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsdWVPZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2QudmFsdWVPZigpIC0gKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaXgoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpIC8gMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9EYXRlKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG0ueWVhcigpLFxuICAgICAgICAgICAgbS5tb250aCgpLFxuICAgICAgICAgICAgbS5kYXRlKCksXG4gICAgICAgICAgICBtLmhvdXIoKSxcbiAgICAgICAgICAgIG0ubWludXRlKCksXG4gICAgICAgICAgICBtLnNlY29uZCgpLFxuICAgICAgICAgICAgbS5taWxsaXNlY29uZCgpLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0KCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksXG4gICAgICAgICAgICBtb250aHM6IG0ubW9udGgoKSxcbiAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLFxuICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWludXRlcygpLFxuICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksXG4gICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OKCkge1xuICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQyKCkge1xuICAgICAgICByZXR1cm4gaXNWYWxpZCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzaW5nRmxhZ3MoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0KCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpLm92ZXJmbG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0aW9uRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLFxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9mLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsXG4gICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsXG4gICAgICAgICAgICBzdHJpY3Q6IHRoaXMuX3N0cmljdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTicsIDAsIDAsICdlcmFBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OTicsIDAsIDAsICdlcmFOYW1lJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OTk5OJywgMCwgMCwgJ2VyYU5hcnJvdycpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3knLCAxXSwgJ3lvJywgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXknLCAyXSwgMCwgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXl5JywgM10sIDAsICdlcmFZZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3l5eXknLCA0XSwgMCwgJ2VyYVllYXInKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ04nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OJywgbWF0Y2hFcmFBYmJyKTtcbiAgICBhZGRSZWdleFRva2VuKCdOTk4nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTk4nLCBtYXRjaEVyYU5hbWUpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTk5OJywgbWF0Y2hFcmFOYXJyb3cpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihcbiAgICAgICAgWydOJywgJ05OJywgJ05OTicsICdOTk5OJywgJ05OTk5OJ10sXG4gICAgICAgIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgICAgIHZhciBlcmEgPSBjb25maWcuX2xvY2FsZS5lcmFzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgICAgICBpZiAoZXJhKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZXJhID0gZXJhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkRXJhID0gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgYWRkUmVnZXhUb2tlbigneScsIG1hdGNoVW5zaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3l5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneXl5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneXl5eScsIG1hdGNoVW5zaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3lvJywgbWF0Y2hFcmFZZWFyT3JkaW5hbCk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsneScsICd5eScsICd5eXknLCAneXl5eSddLCBZRUFSKTtcbiAgICBhZGRQYXJzZVRva2VuKFsneW8nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgbWF0Y2g7XG4gICAgICAgIGlmIChjb25maWcuX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCkge1xuICAgICAgICAgICAgbWF0Y2ggPSBpbnB1dC5tYXRjaChjb25maWcuX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9sb2NhbGUuZXJhWWVhck9yZGluYWxQYXJzZSkge1xuICAgICAgICAgICAgYXJyYXlbWUVBUl0gPSBjb25maWcuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKGlucHV0LCBtYXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUVyYXMobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5fZXJhcyB8fCBnZXRMb2NhbGUoJ2VuJykuX2VyYXM7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGhvb2tzKGVyYXNbaV0uc2luY2UpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLnNpbmNlID0gZGF0ZS52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICAgICAgZXJhc1tpXS51bnRpbCA9ICtJbmZpbml0eTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gaG9va3MoZXJhc1tpXS51bnRpbCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLnVudGlsID0gZGF0ZS52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcmFzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUVyYXNQYXJzZShlcmFOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5lcmFzKCksXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYWJicixcbiAgICAgICAgICAgIG5hcnJvdztcbiAgICAgICAgZXJhTmFtZSA9IGVyYU5hbWUudG9VcHBlckNhc2UoKTtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIG5hbWUgPSBlcmFzW2ldLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGFiYnIgPSBlcmFzW2ldLmFiYnIudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIG5hcnJvdyA9IGVyYXNbaV0ubmFycm93LnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdOJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk4nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTk4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFiYnIgPT09IGVyYU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OTk4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09IGVyYU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OTk5OJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYXJyb3cgPT09IGVyYU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoW25hbWUsIGFiYnIsIG5hcnJvd10uaW5kZXhPZihlcmFOYW1lKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVFcmFzQ29udmVydFllYXIoZXJhLCB5ZWFyKSB7XG4gICAgICAgIHZhciBkaXIgPSBlcmEuc2luY2UgPD0gZXJhLnVudGlsID8gKzEgOiAtMTtcbiAgICAgICAgaWYgKHllYXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGhvb2tzKGVyYS5zaW5jZSkueWVhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGhvb2tzKGVyYS5zaW5jZSkueWVhcigpICsgKHllYXIgLSBlcmEub2Zmc2V0KSAqIGRpcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVyYU5hbWUoKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhTmFycm93KCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG5cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnNpbmNlIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS51bnRpbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLm5hcnJvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLm5hcnJvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFcmFBYmJyKCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG5cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnNpbmNlIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS51bnRpbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLmFiYnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5hYmJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVyYVllYXIoKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGRpcixcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgZGlyID0gZXJhc1tpXS5zaW5jZSA8PSBlcmFzW2ldLnVudGlsID8gKzEgOiAtMTtcblxuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChlcmFzW2ldLnNpbmNlIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS51bnRpbCkgfHxcbiAgICAgICAgICAgICAgICAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAodGhpcy55ZWFyKCkgLSBob29rcyhlcmFzW2ldLnNpbmNlKS55ZWFyKCkpICogZGlyICtcbiAgICAgICAgICAgICAgICAgICAgZXJhc1tpXS5vZmZzZXRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMueWVhcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVyYXNOYW1lUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc05hbWVSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc05hbWVSZWdleCA6IHRoaXMuX2VyYXNSZWdleDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcmFzQWJiclJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX2VyYXNBYmJyUmVnZXgnKSkge1xuICAgICAgICAgICAgY29tcHV0ZUVyYXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/IHRoaXMuX2VyYXNBYmJyUmVnZXggOiB0aGlzLl9lcmFzUmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJhc05hcnJvd1JlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX2VyYXNOYXJyb3dSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc05hcnJvd1JlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhQWJicihpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZXJhc0FiYnJSZWdleChpc1N0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFOYW1lKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzTmFtZVJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYU5hcnJvdyhpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZXJhc05hcnJvd1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYVllYXJPcmRpbmFsKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCB8fCBtYXRjaFVuc2lnbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVFcmFzUGFyc2UoKSB7XG4gICAgICAgIHZhciBhYmJyUGllY2VzID0gW10sXG4gICAgICAgICAgICBuYW1lUGllY2VzID0gW10sXG4gICAgICAgICAgICBuYXJyb3dQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGVyYXNOYW1lLFxuICAgICAgICAgICAgZXJhc0FiYnIsXG4gICAgICAgICAgICBlcmFzTmFycm93LFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMuZXJhcygpO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgZXJhc05hbWUgPSByZWdleEVzY2FwZShlcmFzW2ldLm5hbWUpO1xuICAgICAgICAgICAgZXJhc0FiYnIgPSByZWdleEVzY2FwZShlcmFzW2ldLmFiYnIpO1xuICAgICAgICAgICAgZXJhc05hcnJvdyA9IHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFycm93KTtcblxuICAgICAgICAgICAgbmFtZVBpZWNlcy5wdXNoKGVyYXNOYW1lKTtcbiAgICAgICAgICAgIGFiYnJQaWVjZXMucHVzaChlcmFzQWJicik7XG4gICAgICAgICAgICBuYXJyb3dQaWVjZXMucHVzaChlcmFzTmFycm93KTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goZXJhc05hbWUpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChlcmFzQWJicik7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGVyYXNOYXJyb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZXJhc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9lcmFzTmFtZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbmFtZVBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX2VyYXNBYmJyUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBhYmJyUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fZXJhc05hcnJvd1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBuYXJyb3dQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydnZycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ0dHJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4odG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHRycsICdpc29XZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0dHJywgJ2lzb1dlZWtZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdHJywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHRycsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0dHJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oXG4gICAgICAgIFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sXG4gICAgICAgIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIoMCwgMildID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2cnLCAnR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICB0aGlzLndlZWsoKSxcbiAgICAgICAgICAgIHRoaXMud2Vla2RheSgpICsgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LFxuICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LFxuICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2Vla1llYXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICB0aGlzLmlzb1dlZWsoKSxcbiAgICAgICAgICAgIHRoaXMuaXNvV2Vla2RheSgpLFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIDRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJU09XZWVrc0luWWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJU09XZWVrc0luSVNPV2Vla1llYXIoKSB7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLmlzb1dlZWtZZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5ZZWFyKCkge1xuICAgICAgICB2YXIgd2Vla0luZm8gPSB0aGlzLmxvY2FsZURhdGEoKS5fd2VlaztcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2Vla3NJbldlZWtZZWFyKCkge1xuICAgICAgICB2YXIgd2Vla0luZm8gPSB0aGlzLmxvY2FsZURhdGEoKS5fd2VlaztcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMud2Vla1llYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFySGVscGVyKGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla3NUYXJnZXQ7XG4gICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla09mWWVhcih0aGlzLCBkb3csIGRveSkueWVhcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdlZWtzVGFyZ2V0ID0gd2Vla3NJblllYXIoaW5wdXQsIGRvdywgZG95KTtcbiAgICAgICAgICAgIGlmICh3ZWVrID4gd2Vla3NUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB3ZWVrID0gd2Vla3NUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0V2Vla0FsbC5jYWxsKHRoaXMsIGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRXZWVrQWxsKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyRGF0YSA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoZGF5T2ZZZWFyRGF0YS55ZWFyLCAwLCBkYXlPZlllYXJEYXRhLmRheU9mWWVhcik7XG5cbiAgICAgICAgdGhpcy55ZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgICAgIHRoaXMubW9udGgoZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICAgICAgdGhpcy5kYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1EnLCAwLCAnUW8nLCAncXVhcnRlcicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUScsIG1hdGNoMSk7XG4gICAgYWRkUGFyc2VUb2tlbignUScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gKHRvSW50KGlucHV0KSAtIDEpICogMztcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFF1YXJ0ZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGxcbiAgICAgICAgICAgID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpXG4gICAgICAgICAgICA6IHRoaXMubW9udGgoKGlucHV0IC0gMSkgKiAzICsgKHRoaXMubW9udGgoKSAlIDMpKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignRCcsIFsnREQnLCAyXSwgJ0RvJywgJ2RhdGUnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0QnLCBtYXRjaDF0bzIsIG1hdGNoMXRvMk5vTGVhZGluZ1plcm8pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0REJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICByZXR1cm4gaXNTdHJpY3RcbiAgICAgICAgICAgID8gbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIHx8IGxvY2FsZS5fb3JkaW5hbFBhcnNlXG4gICAgICAgICAgICA6IGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0RERCcsIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhcihpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID1cbiAgICAgICAgICAgIE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTVcbiAgICAgICAgICAgICkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKGlucHV0IC0gZGF5T2ZZZWFyLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgbWF0Y2gxdG8yLCBtYXRjaDF0bzJIYXNaZXJvKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsIG1hdGNoMXRvMiwgbWF0Y2gxdG8ySGFzWmVybyk7XG4gICAgYWRkUmVnZXhUb2tlbignc3MnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ3MnLCAnc3MnXSwgU0VDT05EKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRTZWNvbmQgPSBtYWtlR2V0U2V0KCdTZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMDApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTUycsIDNdLCAwLCAnbWlsbGlzZWNvbmQnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1MnLCA0XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTUycsIDVdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1MnLCA2XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1MnLCA3XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTUycsIDhdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTU1MnLCA5XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwMDtcbiAgICB9KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCBtYXRjaDF0bzMsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignU1NTJywgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuLCBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBmb3IgKHRva2VuID0gJ1NTU1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFJlZ2V4VG9rZW4odG9rZW4sIG1hdGNoVW5zaWduZWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTXMoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01JTExJU0VDT05EXSA9IHRvSW50KCgnMC4nICsgaW5wdXQpICogMTAwMCk7XG4gICAgfVxuXG4gICAgZm9yICh0b2tlbiA9ICdTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBwYXJzZU1zKTtcbiAgICB9XG5cbiAgICBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd6JywgMCwgMCwgJ3pvbmVBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3p6JywgMCwgMCwgJ3pvbmVOYW1lJyk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRab25lQWJicigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE1vbWVudC5wcm90b3R5cGU7XG5cbiAgICBwcm90by5hZGQgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiA9IGRpZmY7XG4gICAgcHJvdG8uZW5kT2YgPSBlbmRPZjtcbiAgICBwcm90by5mb3JtYXQgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSA9IGZyb207XG4gICAgcHJvdG8uZnJvbU5vdyA9IGZyb21Ob3c7XG4gICAgcHJvdG8udG8gPSB0bztcbiAgICBwcm90by50b05vdyA9IHRvTm93O1xuICAgIHByb3RvLmdldCA9IHN0cmluZ0dldDtcbiAgICBwcm90by5pbnZhbGlkQXQgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciA9IGlzQWZ0ZXI7XG4gICAgcHJvdG8uaXNCZWZvcmUgPSBpc0JlZm9yZTtcbiAgICBwcm90by5pc0JldHdlZW4gPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lID0gaXNTYW1lO1xuICAgIHByb3RvLmlzU2FtZU9yQWZ0ZXIgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCA9IGlzVmFsaWQkMjtcbiAgICBwcm90by5sYW5nID0gbGFuZztcbiAgICBwcm90by5sb2NhbGUgPSBsb2NhbGU7XG4gICAgcHJvdG8ubG9jYWxlRGF0YSA9IGxvY2FsZURhdGE7XG4gICAgcHJvdG8ubWF4ID0gcHJvdG90eXBlTWF4O1xuICAgIHByb3RvLm1pbiA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgPSBwYXJzaW5nRmxhZ3M7XG4gICAgcHJvdG8uc2V0ID0gc3RyaW5nU2V0O1xuICAgIHByb3RvLnN0YXJ0T2YgPSBzdGFydE9mO1xuICAgIHByb3RvLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgcHJvdG8udG9BcnJheSA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgPSB0b0RhdGU7XG4gICAgcHJvdG8udG9JU09TdHJpbmcgPSB0b0lTT1N0cmluZztcbiAgICBwcm90by5pbnNwZWN0ID0gaW5zcGVjdDtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLmZvciAhPSBudWxsKSB7XG4gICAgICAgIHByb3RvW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICdNb21lbnQ8JyArIHRoaXMuZm9ybWF0KCkgKyAnPic7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHByb3RvLnRvSlNPTiA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggPSB1bml4O1xuICAgIHByb3RvLnZhbHVlT2YgPSB2YWx1ZU9mO1xuICAgIHByb3RvLmNyZWF0aW9uRGF0YSA9IGNyZWF0aW9uRGF0YTtcbiAgICBwcm90by5lcmFOYW1lID0gZ2V0RXJhTmFtZTtcbiAgICBwcm90by5lcmFOYXJyb3cgPSBnZXRFcmFOYXJyb3c7XG4gICAgcHJvdG8uZXJhQWJiciA9IGdldEVyYUFiYnI7XG4gICAgcHJvdG8uZXJhWWVhciA9IGdldEVyYVllYXI7XG4gICAgcHJvdG8ueWVhciA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgPSBwcm90by53ZWVrcyA9IGdldFNldFdlZWs7XG4gICAgcHJvdG8uaXNvV2VlayA9IHByb3RvLmlzb1dlZWtzID0gZ2V0U2V0SVNPV2VlaztcbiAgICBwcm90by53ZWVrc0luWWVhciA9IGdldFdlZWtzSW5ZZWFyO1xuICAgIHByb3RvLndlZWtzSW5XZWVrWWVhciA9IGdldFdlZWtzSW5XZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5JU09XZWVrWWVhciA9IGdldElTT1dlZWtzSW5JU09XZWVrWWVhcjtcbiAgICBwcm90by5kYXRlID0gZ2V0U2V0RGF5T2ZNb250aDtcbiAgICBwcm90by5kYXkgPSBwcm90by5kYXlzID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgPSBnZXRTZXREYXlPZlllYXI7XG4gICAgcHJvdG8uaG91ciA9IHByb3RvLmhvdXJzID0gZ2V0U2V0SG91cjtcbiAgICBwcm90by5taW51dGUgPSBwcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlO1xuICAgIHByb3RvLnNlY29uZCA9IHByb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7XG4gICAgcHJvdG8ubWlsbGlzZWNvbmQgPSBwcm90by5taWxsaXNlY29uZHMgPSBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBwcm90by51dGNPZmZzZXQgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjID0gc2V0T2Zmc2V0VG9VVEM7XG4gICAgcHJvdG8ubG9jYWwgPSBzZXRPZmZzZXRUb0xvY2FsO1xuICAgIHByb3RvLnBhcnNlWm9uZSA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0O1xuICAgIHByb3RvLmhhc0FsaWduZWRIb3VyT2Zmc2V0ID0gaGFzQWxpZ25lZEhvdXJPZmZzZXQ7XG4gICAgcHJvdG8uaXNEU1QgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTtcbiAgICBwcm90by5pc0xvY2FsID0gaXNMb2NhbDtcbiAgICBwcm90by5pc1V0Y09mZnNldCA9IGlzVXRjT2Zmc2V0O1xuICAgIHByb3RvLmlzVXRjID0gaXNVdGM7XG4gICAgcHJvdG8uaXNVVEMgPSBpc1V0YztcbiAgICBwcm90by56b25lQWJiciA9IGdldFpvbmVBYmJyO1xuICAgIHByb3RvLnpvbmVOYW1lID0gZ2V0Wm9uZU5hbWU7XG4gICAgcHJvdG8uZGF0ZXMgPSBkZXByZWNhdGUoXG4gICAgICAgICdkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLicsXG4gICAgICAgIGdldFNldERheU9mTW9udGhcbiAgICApO1xuICAgIHByb3RvLm1vbnRocyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsXG4gICAgICAgIGdldFNldE1vbnRoXG4gICAgKTtcbiAgICBwcm90by55ZWFycyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLFxuICAgICAgICBnZXRTZXRZZWFyXG4gICAgKTtcbiAgICBwcm90by56b25lID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8nLFxuICAgICAgICBnZXRTZXRab25lXG4gICAgKTtcbiAgICBwcm90by5pc0RTVFNoaWZ0ZWQgPSBkZXByZWNhdGUoXG4gICAgICAgICdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJyxcbiAgICAgICAgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkXG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVuaXgoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0ICogMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5ab25lKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDEgPSBMb2NhbGUucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMS5jYWxlbmRhciA9IGNhbGVuZGFyO1xuICAgIHByb3RvJDEubG9uZ0RhdGVGb3JtYXQgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlID0gaW52YWxpZERhdGU7XG4gICAgcHJvdG8kMS5vcmRpbmFsID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucG9zdGZvcm1hdCA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgPSBwYXN0RnV0dXJlO1xuICAgIHByb3RvJDEuc2V0ID0gc2V0O1xuICAgIHByb3RvJDEuZXJhcyA9IGxvY2FsZUVyYXM7XG4gICAgcHJvdG8kMS5lcmFzUGFyc2UgPSBsb2NhbGVFcmFzUGFyc2U7XG4gICAgcHJvdG8kMS5lcmFzQ29udmVydFllYXIgPSBsb2NhbGVFcmFzQ29udmVydFllYXI7XG4gICAgcHJvdG8kMS5lcmFzQWJiclJlZ2V4ID0gZXJhc0FiYnJSZWdleDtcbiAgICBwcm90byQxLmVyYXNOYW1lUmVnZXggPSBlcmFzTmFtZVJlZ2V4O1xuICAgIHByb3RvJDEuZXJhc05hcnJvd1JlZ2V4ID0gZXJhc05hcnJvd1JlZ2V4O1xuXG4gICAgcHJvdG8kMS5tb250aHMgPSBsb2NhbGVNb250aHM7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydCA9IGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgPSBsb2NhbGVNb250aHNQYXJzZTtcbiAgICBwcm90byQxLm1vbnRoc1JlZ2V4ID0gbW9udGhzUmVnZXg7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydFJlZ2V4ID0gbW9udGhzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWsgPSBsb2NhbGVXZWVrO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZlllYXIgPSBsb2NhbGVGaXJzdERheU9mWWVhcjtcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZXZWVrID0gbG9jYWxlRmlyc3REYXlPZldlZWs7XG5cbiAgICBwcm90byQxLndlZWtkYXlzID0gbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiA9IGxvY2FsZVdlZWtkYXlzTWluO1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydCA9IGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlID0gbG9jYWxlV2Vla2RheXNQYXJzZTtcblxuICAgIHByb3RvJDEud2Vla2RheXNSZWdleCA9IHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggPSB3ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pblJlZ2V4ID0gd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEoZm9ybWF0LCBpbmRleCwgZmllbGQsIHNldHRlcikge1xuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICB1dGMgPSBjcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBsb2NhbGVbZmllbGRdKHV0YywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCBmaWVsZCkge1xuICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIG91dCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCBpLCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICAvLyAoKVxuICAgIC8vICg1KVxuICAgIC8vIChmbXQsIDUpXG4gICAgLy8gKGZtdClcbiAgICAvLyAodHJ1ZSlcbiAgICAvLyAodHJ1ZSwgNSlcbiAgICAvLyAodHJ1ZSwgZm10LCA1KVxuICAgIC8vICh0cnVlLCBmbXQpXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBvdXQgPSBbXTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyhmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc1Nob3J0KGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5cyhsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c01pbihsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNNaW4nKTtcbiAgICB9XG5cbiAgICBnZXRTZXRHbG9iYWxMb2NhbGUoJ2VuJywge1xuICAgICAgICBlcmFzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcwMDAxLTAxLTAxJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogK0luZmluaXR5LFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQW5ubyBEb21pbmknLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0FEJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDAtMTItMzEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdCZWZvcmUgQ2hyaXN0JyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICdCQycsXG4gICAgICAgICAgICAgICAgYWJicjogJ0JDJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIHRvSW50KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICBob29rcy5sYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLFxuICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGVcbiAgICApO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLicsXG4gICAgICAgIGdldExvY2FsZVxuICAgICk7XG5cbiAgICB2YXIgbWF0aEFicyA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gYWJzKCkge1xuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gbWF0aEFicyh0aGlzLl9taWxsaXNlY29uZHMpO1xuICAgICAgICB0aGlzLl9kYXlzID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyA9IG1hdGhBYnMoZGF0YS5zZWNvbmRzKTtcbiAgICAgICAgZGF0YS5taW51dGVzID0gbWF0aEFicyhkYXRhLm1pbnV0ZXMpO1xuICAgICAgICBkYXRhLmhvdXJzID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgPSBtYXRoQWJzKGRhdGEubW9udGhzKTtcbiAgICAgICAgZGF0YS55ZWFycyA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMShkdXJhdGlvbiwgaW5wdXQsIHZhbHVlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTtcblxuICAgICAgICBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9taWxsaXNlY29uZHM7XG4gICAgICAgIGR1cmF0aW9uLl9kYXlzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgMSk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdCQxKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIC0xKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNDZWlsKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSgpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzLFxuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzLFxuICAgICAgICAgICAgZGF0YSA9IHRoaXMuX2RhdGEsXG4gICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgeWVhcnMsXG4gICAgICAgICAgICBtb250aHNGcm9tRGF5cztcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgbWl4IG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1YmJsZSBkb3duIGZpcnN0XG4gICAgICAgIC8vIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjE2NlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIChtaWxsaXNlY29uZHMgPj0gMCAmJiBkYXlzID49IDAgJiYgbW9udGhzID49IDApIHx8XG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA8PSAwICYmIGRheXMgPD0gMCAmJiBtb250aHMgPD0gMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgKz0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzKSArIGRheXMpICogODY0ZTU7XG4gICAgICAgICAgICBkYXlzID0gMDtcbiAgICAgICAgICAgIG1vbnRocyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYnViYmxlcyB1cCB2YWx1ZXMsIHNlZSB0aGUgdGVzdHMgZm9yXG4gICAgICAgIC8vIGV4YW1wbGVzIG9mIHdoYXQgdGhhdCBtZWFucy5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHMgJSAxMDAwO1xuXG4gICAgICAgIHNlY29uZHMgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzID0gc2Vjb25kcyAlIDYwO1xuXG4gICAgICAgIG1pbnV0ZXMgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgPSBtaW51dGVzICUgNjA7XG5cbiAgICAgICAgaG91cnMgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBkYXRhLmhvdXJzID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzID0gZGF5cztcbiAgICAgICAgZGF0YS5tb250aHMgPSBtb250aHM7XG4gICAgICAgIGRhdGEueWVhcnMgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMoZGF5cykge1xuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpXG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDEyIG1vbnRocyA9PT0gNDgwMFxuICAgICAgICByZXR1cm4gKGRheXMgKiA0ODAwKSAvIDE0NjA5NztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aHNUb0RheXMobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gKG1vbnRocyAqIDE0NjA5NykgLyA0ODAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzKHVuaXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRheXMsXG4gICAgICAgICAgICBtb250aHMsXG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAncXVhcnRlcicgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgIG1vbnRocyA9IHRoaXMuX21vbnRocyArIGRheXNUb01vbnRocyhkYXlzKTtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHM7XG4gICAgICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgLyAzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzIC8gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpXG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAvIDcgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiAyNCArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiAxNDQwICsgbWlsbGlzZWNvbmRzIC8gNmU0O1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpLFxuICAgICAgICBhc1NlY29uZHMgPSBtYWtlQXMoJ3MnKSxcbiAgICAgICAgYXNNaW51dGVzID0gbWFrZUFzKCdtJyksXG4gICAgICAgIGFzSG91cnMgPSBtYWtlQXMoJ2gnKSxcbiAgICAgICAgYXNEYXlzID0gbWFrZUFzKCdkJyksXG4gICAgICAgIGFzV2Vla3MgPSBtYWtlQXMoJ3cnKSxcbiAgICAgICAgYXNNb250aHMgPSBtYWtlQXMoJ00nKSxcbiAgICAgICAgYXNRdWFydGVycyA9IG1ha2VBcygnUScpLFxuICAgICAgICBhc1llYXJzID0gbWFrZUFzKCd5JyksXG4gICAgICAgIHZhbHVlT2YkMSA9IGFzTWlsbGlzZWNvbmRzO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCQyKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzW3VuaXRzICsgJ3MnXSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5fZGF0YVtuYW1lXSA6IE5hTjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyksXG4gICAgICAgIHNlY29uZHMgPSBtYWtlR2V0dGVyKCdzZWNvbmRzJyksXG4gICAgICAgIG1pbnV0ZXMgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyksXG4gICAgICAgIGhvdXJzID0gbWFrZUdldHRlcignaG91cnMnKSxcbiAgICAgICAgZGF5cyA9IG1ha2VHZXR0ZXIoJ2RheXMnKSxcbiAgICAgICAgbW9udGhzID0gbWFrZUdldHRlcignbW9udGhzJyksXG4gICAgICAgIHllYXJzID0gbWFrZUdldHRlcigneWVhcnMnKTtcblxuICAgIGZ1bmN0aW9uIHdlZWtzKCkge1xuICAgICAgICByZXR1cm4gYWJzRmxvb3IodGhpcy5kYXlzKCkgLyA3KTtcbiAgICB9XG5cbiAgICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kLFxuICAgICAgICB0aHJlc2hvbGRzID0ge1xuICAgICAgICAgICAgc3M6IDQ0LCAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgICAgIHM6IDQ1LCAvLyBzZWNvbmRzIHRvIG1pbnV0ZVxuICAgICAgICAgICAgbTogNDUsIC8vIG1pbnV0ZXMgdG8gaG91clxuICAgICAgICAgICAgaDogMjIsIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICAgICAgZDogMjYsIC8vIGRheXMgdG8gbW9udGgvd2Vla1xuICAgICAgICAgICAgdzogbnVsbCwgLy8gd2Vla3MgdG8gbW9udGhcbiAgICAgICAgICAgIE06IDExLCAvLyBtb250aHMgdG8geWVhclxuICAgICAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMShwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgdGhyZXNob2xkcywgbG9jYWxlKSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uKHBvc05lZ0R1cmF0aW9uKS5hYnMoKSxcbiAgICAgICAgICAgIHNlY29uZHMgPSByb3VuZChkdXJhdGlvbi5hcygncycpKSxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKSxcbiAgICAgICAgICAgIGhvdXJzID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSksXG4gICAgICAgICAgICBkYXlzID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSksXG4gICAgICAgICAgICBtb250aHMgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKSxcbiAgICAgICAgICAgIHdlZWtzID0gcm91bmQoZHVyYXRpb24uYXMoJ3cnKSksXG4gICAgICAgICAgICB5ZWFycyA9IHJvdW5kKGR1cmF0aW9uLmFzKCd5JykpLFxuICAgICAgICAgICAgYSA9XG4gICAgICAgICAgICAgICAgKHNlY29uZHMgPD0gdGhyZXNob2xkcy5zcyAmJiBbJ3MnLCBzZWNvbmRzXSkgfHxcbiAgICAgICAgICAgICAgICAoc2Vjb25kcyA8IHRocmVzaG9sZHMucyAmJiBbJ3NzJywgc2Vjb25kc10pIHx8XG4gICAgICAgICAgICAgICAgKG1pbnV0ZXMgPD0gMSAmJiBbJ20nXSkgfHxcbiAgICAgICAgICAgICAgICAobWludXRlcyA8IHRocmVzaG9sZHMubSAmJiBbJ21tJywgbWludXRlc10pIHx8XG4gICAgICAgICAgICAgICAgKGhvdXJzIDw9IDEgJiYgWydoJ10pIHx8XG4gICAgICAgICAgICAgICAgKGhvdXJzIDwgdGhyZXNob2xkcy5oICYmIFsnaGgnLCBob3Vyc10pIHx8XG4gICAgICAgICAgICAgICAgKGRheXMgPD0gMSAmJiBbJ2QnXSkgfHxcbiAgICAgICAgICAgICAgICAoZGF5cyA8IHRocmVzaG9sZHMuZCAmJiBbJ2RkJywgZGF5c10pO1xuXG4gICAgICAgIGlmICh0aHJlc2hvbGRzLncgIT0gbnVsbCkge1xuICAgICAgICAgICAgYSA9XG4gICAgICAgICAgICAgICAgYSB8fFxuICAgICAgICAgICAgICAgICh3ZWVrcyA8PSAxICYmIFsndyddKSB8fFxuICAgICAgICAgICAgICAgICh3ZWVrcyA8IHRocmVzaG9sZHMudyAmJiBbJ3d3Jywgd2Vla3NdKTtcbiAgICAgICAgfVxuICAgICAgICBhID0gYSB8fFxuICAgICAgICAgICAgKG1vbnRocyA8PSAxICYmIFsnTSddKSB8fFxuICAgICAgICAgICAgKG1vbnRocyA8IHRocmVzaG9sZHMuTSAmJiBbJ01NJywgbW9udGhzXSkgfHxcbiAgICAgICAgICAgICh5ZWFycyA8PSAxICYmIFsneSddKSB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyhyb3VuZGluZ0Z1bmN0aW9uKSB7XG4gICAgICAgIGlmIChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJvdW5kaW5nRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdW5kID0gcm91bmRpbmdGdW5jdGlvbjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplKGFyZ1dpdGhTdWZmaXgsIGFyZ1RocmVzaG9sZHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgd2l0aFN1ZmZpeCA9IGZhbHNlLFxuICAgICAgICAgICAgdGggPSB0aHJlc2hvbGRzLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgb3V0cHV0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgYXJnV2l0aFN1ZmZpeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGFyZ1RocmVzaG9sZHMgPSBhcmdXaXRoU3VmZml4O1xuICAgICAgICAgICAgYXJnV2l0aFN1ZmZpeCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYXJnV2l0aFN1ZmZpeCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB3aXRoU3VmZml4ID0gYXJnV2l0aFN1ZmZpeDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFyZ1RocmVzaG9sZHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB0aCA9IE9iamVjdC5hc3NpZ24oe30sIHRocmVzaG9sZHMsIGFyZ1RocmVzaG9sZHMpO1xuICAgICAgICAgICAgaWYgKGFyZ1RocmVzaG9sZHMucyAhPSBudWxsICYmIGFyZ1RocmVzaG9sZHMuc3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoLnNzID0gYXJnVGhyZXNob2xkcy5zIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICBvdXRwdXQgPSByZWxhdGl2ZVRpbWUkMSh0aGlzLCAhd2l0aFN1ZmZpeCwgdGgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICh4ID4gMCkgLSAoeCA8IDApIHx8ICt4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nJDEoKSB7XG4gICAgICAgIC8vIGZvciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxpbmcgcnVsZXM6XG4gICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnNcbiAgICAgICAgLy8gICogZGF5cyBkbyBub3QgYnViYmxlIGF0IGFsbFxuICAgICAgICAvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIHllYXJzXG4gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzXG4gICAgICAgIC8vICh0aGluayBvZiBjbG9jayBjaGFuZ2VzKVxuICAgICAgICAvLyBhbmQgYWxzbyBub3QgYmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRoKVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWNvbmRzID0gYWJzJDEodGhpcy5fbWlsbGlzZWNvbmRzKSAvIDEwMDAsXG4gICAgICAgICAgICBkYXlzID0gYWJzJDEodGhpcy5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnMkMSh0aGlzLl9tb250aHMpLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgeWVhcnMsXG4gICAgICAgICAgICBzLFxuICAgICAgICAgICAgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpLFxuICAgICAgICAgICAgdG90YWxTaWduLFxuICAgICAgICAgICAgeW1TaWduLFxuICAgICAgICAgICAgZGF5c1NpZ24sXG4gICAgICAgICAgICBobXNTaWduO1xuXG4gICAgICAgIGlmICghdG90YWwpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi5cbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgb3RoZXIgSlMgKGdvb2cuZGF0ZSlcbiAgICAgICAgICAgIHJldHVybiAnUDBEJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91clxuICAgICAgICBtaW51dGVzID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgaG91cnMgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBzZWNvbmRzICU9IDYwO1xuICAgICAgICBtaW51dGVzICU9IDYwO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qc1xuICAgICAgICBzID0gc2Vjb25kcyA/IHNlY29uZHMudG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpIDogJyc7XG5cbiAgICAgICAgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHltU2lnbiA9IHNpZ24odGhpcy5fbW9udGhzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgZGF5c1NpZ24gPSBzaWduKHRoaXMuX2RheXMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0b3RhbFNpZ24gK1xuICAgICAgICAgICAgJ1AnICtcbiAgICAgICAgICAgICh5ZWFycyA/IHltU2lnbiArIHllYXJzICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChtb250aHMgPyB5bVNpZ24gKyBtb250aHMgKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKGRheXMgPyBkYXlzU2lnbiArIGRheXMgKyAnRCcgOiAnJykgK1xuICAgICAgICAgICAgKGhvdXJzIHx8IG1pbnV0ZXMgfHwgc2Vjb25kcyA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaG91cnMgPyBobXNTaWduICsgaG91cnMgKyAnSCcgOiAnJykgK1xuICAgICAgICAgICAgKG1pbnV0ZXMgPyBobXNTaWduICsgbWludXRlcyArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoc2Vjb25kcyA/IGhtc1NpZ24gKyBzICsgJ1MnIDogJycpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDIgPSBEdXJhdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcm90byQyLmlzVmFsaWQgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgPSBhYnM7XG4gICAgcHJvdG8kMi5hZGQgPSBhZGQkMTtcbiAgICBwcm90byQyLnN1YnRyYWN0ID0gc3VidHJhY3QkMTtcbiAgICBwcm90byQyLmFzID0gYXM7XG4gICAgcHJvdG8kMi5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuYXNTZWNvbmRzID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzID0gYXNNaW51dGVzO1xuICAgIHByb3RvJDIuYXNIb3VycyA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgPSBhc0RheXM7XG4gICAgcHJvdG8kMi5hc1dlZWtzID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1F1YXJ0ZXJzID0gYXNRdWFydGVycztcbiAgICBwcm90byQyLmFzWWVhcnMgPSBhc1llYXJzO1xuICAgIHByb3RvJDIudmFsdWVPZiA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgPSBidWJibGU7XG4gICAgcHJvdG8kMi5jbG9uZSA9IGNsb25lJDE7XG4gICAgcHJvdG8kMi5nZXQgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLnNlY29uZHMgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyA9IG1pbnV0ZXM7XG4gICAgcHJvdG8kMi5ob3VycyA9IGhvdXJzO1xuICAgIHByb3RvJDIuZGF5cyA9IGRheXM7XG4gICAgcHJvdG8kMi53ZWVrcyA9IHdlZWtzO1xuICAgIHByb3RvJDIubW9udGhzID0gbW9udGhzO1xuICAgIHByb3RvJDIueWVhcnMgPSB5ZWFycztcbiAgICBwcm90byQyLmh1bWFuaXplID0gaHVtYW5pemU7XG4gICAgcHJvdG8kMi50b0lTT1N0cmluZyA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b1N0cmluZyA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b0pTT04gPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlID0gbG9jYWxlO1xuICAgIHByb3RvJDIubG9jYWxlRGF0YSA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLFxuICAgICAgICB0b0lTT1N0cmluZyQxXG4gICAgKTtcbiAgICBwcm90byQyLmxhbmcgPSBsYW5nO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd4JywgMCwgMCwgJ3ZhbHVlT2YnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3gnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTtcbiAgICBhZGRQYXJzZVRva2VuKCdYJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQpICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8hIG1vbWVudC5qc1xuXG4gICAgaG9va3MudmVyc2lvbiA9ICcyLjMwLjEnO1xuXG4gICAgc2V0SG9va0NhbGxiYWNrKGNyZWF0ZUxvY2FsKTtcblxuICAgIGhvb2tzLmZuID0gcHJvdG87XG4gICAgaG9va3MubWluID0gbWluO1xuICAgIGhvb2tzLm1heCA9IG1heDtcbiAgICBob29rcy5ub3cgPSBub3c7XG4gICAgaG9va3MudXRjID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggPSBjcmVhdGVVbml4O1xuICAgIGhvb2tzLm1vbnRocyA9IGxpc3RNb250aHM7XG4gICAgaG9va3MuaXNEYXRlID0gaXNEYXRlO1xuICAgIGhvb2tzLmxvY2FsZSA9IGdldFNldEdsb2JhbExvY2FsZTtcbiAgICBob29rcy5pbnZhbGlkID0gY3JlYXRlSW52YWxpZDtcbiAgICBob29rcy5kdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uO1xuICAgIGhvb2tzLmlzTW9tZW50ID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgPSBsaXN0V2Vla2RheXM7XG4gICAgaG9va3MucGFyc2Vab25lID0gY3JlYXRlSW5ab25lO1xuICAgIGhvb2tzLmxvY2FsZURhdGEgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247XG4gICAgaG9va3MubW9udGhzU2hvcnQgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gPSBsaXN0V2Vla2RheXNNaW47XG4gICAgaG9va3MuZGVmaW5lTG9jYWxlID0gZGVmaW5lTG9jYWxlO1xuICAgIGhvb2tzLnVwZGF0ZUxvY2FsZSA9IHVwZGF0ZUxvY2FsZTtcbiAgICBob29rcy5sb2NhbGVzID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCA9IGxpc3RXZWVrZGF5c1Nob3J0O1xuICAgIGhvb2tzLm5vcm1hbGl6ZVVuaXRzID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgPSBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQ7XG4gICAgaG9va3MuY2FsZW5kYXJGb3JtYXQgPSBnZXRDYWxlbmRhckZvcm1hdDtcbiAgICBob29rcy5wcm90b3R5cGUgPSBwcm90bztcblxuICAgIC8vIGN1cnJlbnRseSBIVE1MNSBpbnB1dCB0eXBlIG9ubHkgc3VwcG9ydHMgMjQtaG91ciBmb3JtYXRzXG4gICAgaG9va3MuSFRNTDVfRk1UID0ge1xuICAgICAgICBEQVRFVElNRV9MT0NBTDogJ1lZWVktTU0tRERUSEg6bW0nLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfU0VDT05EUzogJ1lZWVktTU0tRERUSEg6bW06c3MnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIERBVEU6ICdZWVlZLU1NLUREJywgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIFRJTUVfTVM6ICdISDptbTpzcy5TU1MnLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnR0dHRy1bV11XVycsIC8vIDxpbnB1dCB0eXBlPVwid2Vla1wiIC8+XG4gICAgICAgIE1PTlRIOiAnWVlZWS1NTScsIC8vIDxpbnB1dCB0eXBlPVwibW9udGhcIiAvPlxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3M7XG5cbn0pKSk7XG4iLCIvKiFcbiAqIFNlbGVjdDIgNC4xLjAtcmMuMFxuICogaHR0cHM6Ly9zZWxlY3QyLmdpdGh1Yi5pb1xuICpcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9ibG9iL21hc3Rlci9MSUNFTlNFLm1kXG4gKi9cbjsoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAvLyBOb2RlL0NvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgalF1ZXJ5KSB7XG4gICAgICBpZiAoalF1ZXJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gcmVxdWlyZSgnalF1ZXJ5JykgcmV0dXJucyBhIGZhY3RvcnkgdGhhdCByZXF1aXJlcyB3aW5kb3cgdG9cbiAgICAgICAgLy8gYnVpbGQgYSBqUXVlcnkgaW5zdGFuY2UsIHdlIG5vcm1hbGl6ZSBob3cgd2UgdXNlIG1vZHVsZXNcbiAgICAgICAgLy8gdGhhdCByZXF1aXJlIHRoaXMgcGF0dGVybiBidXQgdGhlIHdpbmRvdyBwcm92aWRlZCBpcyBhIG5vb3BcbiAgICAgICAgLy8gaWYgaXQncyBkZWZpbmVkIChob3cganF1ZXJ5IHdvcmtzKVxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKShyb290KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmFjdG9yeShqUXVlcnkpO1xuICAgICAgcmV0dXJuIGpRdWVyeTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIEJyb3dzZXIgZ2xvYmFsc1xuICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgfVxufSAoZnVuY3Rpb24gKGpRdWVyeSkge1xuICAvLyBUaGlzIGlzIG5lZWRlZCBzbyB3ZSBjYW4gY2F0Y2ggdGhlIEFNRCBsb2FkZXIgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0XG4gIC8vIFRoZSBpbm5lciBmaWxlIHNob3VsZCBiZSB3cmFwcGVkIChieSBgYmFubmVyLnN0YXJ0LmpzYCkgaW4gYSBmdW5jdGlvbiB0aGF0XG4gIC8vIHJldHVybnMgdGhlIEFNRCBsb2FkZXIgcmVmZXJlbmNlcy5cbiAgdmFyIFMyID0oZnVuY3Rpb24gKCkge1xuICAvLyBSZXN0b3JlIHRoZSBTZWxlY3QyIEFNRCBsb2FkZXIgc28gaXQgY2FuIGJlIHVzZWRcbiAgLy8gTmVlZGVkIG1vc3RseSBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMsIHdoZXJlIHRoZSBsb2FkZXIgaXMgbm90IGluc2VydGVkXG4gIGlmIChqUXVlcnkgJiYgalF1ZXJ5LmZuICYmIGpRdWVyeS5mbi5zZWxlY3QyICYmIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCkge1xuICAgIHZhciBTMiA9IGpRdWVyeS5mbi5zZWxlY3QyLmFtZDtcbiAgfVxudmFyIFMyOyhmdW5jdGlvbiAoKSB7IGlmICghUzIgfHwgIVMyLnJlcXVpcmVqcykge1xuaWYgKCFTMikgeyBTMiA9IHt9OyB9IGVsc2UgeyByZXF1aXJlID0gUzI7IH1cbi8qKlxuICogQGxpY2Vuc2UgYWxtb25kIDAuMy4zIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHA6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9hbG1vbmQvTElDRU5TRVxuICovXG4vL0dvaW5nIHNsb3BweSB0byBhdm9pZCAndXNlIHN0cmljdCcgc3RyaW5nIGNvc3QsIGJ1dCBzdHJpY3QgcHJhY3RpY2VzIHNob3VsZFxuLy9iZSBmb2xsb3dlZC5cbi8qZ2xvYmFsIHNldFRpbWVvdXQ6IGZhbHNlICovXG5cbnZhciByZXF1aXJlanMsIHJlcXVpcmUsIGRlZmluZTtcbihmdW5jdGlvbiAodW5kZWYpIHtcbiAgICB2YXIgbWFpbiwgcmVxLCBtYWtlTWFwLCBoYW5kbGVycyxcbiAgICAgICAgZGVmaW5lZCA9IHt9LFxuICAgICAgICB3YWl0aW5nID0ge30sXG4gICAgICAgIGNvbmZpZyA9IHt9LFxuICAgICAgICBkZWZpbmluZyA9IHt9LFxuICAgICAgICBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICAgICAgICBhcHMgPSBbXS5zbGljZSxcbiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXFwuanMkLztcblxuICAgIGZ1bmN0aW9uIGhhc1Byb3Aob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0b1xuICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmVcbiAgICAgKiB0by5cbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemUobmFtZSwgYmFzZU5hbWUpIHtcbiAgICAgICAgdmFyIG5hbWVQYXJ0cywgbmFtZVNlZ21lbnQsIG1hcFZhbHVlLCBmb3VuZE1hcCwgbGFzdEluZGV4LFxuICAgICAgICAgICAgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBpLCBqLCBwYXJ0LCBub3JtYWxpemVkQmFzZVBhcnRzLFxuICAgICAgICAgICAgYmFzZVBhcnRzID0gYmFzZU5hbWUgJiYgYmFzZU5hbWUuc3BsaXQoXCIvXCIpLFxuICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCxcbiAgICAgICAgICAgIHN0YXJNYXAgPSAobWFwICYmIG1hcFsnKiddKSB8fCB7fTtcblxuICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuXG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAvLyBJZiB3YW50aW5nIG5vZGUgSUQgY29tcGF0aWJpbGl0eSwgc3RyaXAgLmpzIGZyb20gZW5kXG4gICAgICAgICAgICAvLyBvZiBJRHMuIEhhdmUgdG8gZG8gdGhpcyBoZXJlLCBhbmQgbm90IGluIG5hbWVUb1VybFxuICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9yIG5vbiAuanMgdG8gbWFwXG4gICAgICAgICAgICAvLyB0byBzYW1lIGZpbGUuXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFydHMgd2l0aCBhICcuJyBzbyBuZWVkIHRoZSBiYXNlTmFtZVxuICAgICAgICAgICAgaWYgKG5hbWVbMF0uY2hhckF0KDApID09PSAnLicgJiYgYmFzZVBhcnRzKSB7XG4gICAgICAgICAgICAgICAgLy9Db252ZXJ0IGJhc2VOYW1lIHRvIGFycmF5LCBhbmQgbG9wIG9mZiB0aGUgbGFzdCBwYXJ0LFxuICAgICAgICAgICAgICAgIC8vc28gdGhhdCAuIG1hdGNoZXMgdGhhdCAnZGlyZWN0b3J5JyBhbmQgbm90IG5hbWUgb2YgdGhlIGJhc2VOYW1lJ3NcbiAgICAgICAgICAgICAgICAvL21vZHVsZS4gRm9yIGluc3RhbmNlLCBiYXNlTmFtZSBvZiAnb25lL3R3by90aHJlZScsIG1hcHMgdG9cbiAgICAgICAgICAgICAgICAvLydvbmUvdHdvL3RocmVlLmpzJywgYnV0IHdlIHdhbnQgdGhlIGRpcmVjdG9yeSwgJ29uZS90d28nIGZvclxuICAgICAgICAgICAgICAgIC8vdGhpcyBub3JtYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRCYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemVkQmFzZVBhcnRzLmNvbmNhdChuYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9zdGFydCB0cmltRG90c1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYXJ0ID0gbmFtZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGF0IHRoZSBzdGFydCwgb3IgcHJldmlvdXMgdmFsdWUgaXMgc3RpbGwgLi4sXG4gICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXlcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29yayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGFuIElEIGl0IGlzIGxlc3MgdGhhbiBpZGVhbC4gSW4gbGFyZ2VyIHBvaW50XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09PSAxICYmIG5hbWVbMl0gPT09ICcuLicpIHx8IG5hbWVbaSAtIDFdID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zcGxpY2UoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9lbmQgdHJpbURvdHNcblxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9BcHBseSBtYXAgY29uZmlnIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKChiYXNlUGFydHMgfHwgc3Rhck1hcCkgJiYgbWFwKSB7XG4gICAgICAgICAgICBuYW1lUGFydHMgPSBuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IG5hbWVQYXJ0cy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgICAgICBuYW1lU2VnbWVudCA9IG5hbWVQYXJ0cy5zbGljZSgwLCBpKS5qb2luKFwiL1wiKTtcblxuICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9GaW5kIHRoZSBsb25nZXN0IGJhc2VOYW1lIHNlZ21lbnQgbWF0Y2ggaW4gdGhlIGNvbmZpZy5cbiAgICAgICAgICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gbWFwW2Jhc2VQYXJ0cy5zbGljZSgwLCBqKS5qb2luKCcvJyldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzICBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBWYWx1ZVtuYW1lU2VnbWVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWF0Y2gsIHVwZGF0ZSBuYW1lIHRvIHRoZSBuZXcgdmFsdWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LFxuICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZ1xuICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC5cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIHN0YXJNYXBbbmFtZVNlZ21lbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kU3Rhck1hcCA9IHN0YXJNYXBbbmFtZVNlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICBzdGFySSA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkge1xuICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwO1xuICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZm91bmRNYXApIHtcbiAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHMuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVJlcXVpcmUocmVsTmFtZSwgZm9yY2VTeW5jKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL0EgdmVyc2lvbiBvZiBhIHJlcXVpcmUgZnVuY3Rpb24gdGhhdCBwYXNzZXMgYSBtb2R1bGVOYW1lXG4gICAgICAgICAgICAvL3ZhbHVlIGZvciBpdGVtcyB0aGF0IG1heSBuZWVkIHRvXG4gICAgICAgICAgICAvL2xvb2sgdXAgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZU5hbWVcbiAgICAgICAgICAgIHZhciBhcmdzID0gYXBzLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICAgICAgLy9JZiBmaXJzdCBhcmcgaXMgbm90IHJlcXVpcmUoJ3N0cmluZycpLCBhbmQgdGhlcmUgaXMgb25seVxuICAgICAgICAgICAgLy9vbmUgYXJnLCBpdCBpcyB0aGUgYXJyYXkgZm9ybSB3aXRob3V0IGEgY2FsbGJhY2suIEluc2VydFxuICAgICAgICAgICAgLy9hIG51bGwgc28gdGhhdCB0aGUgZm9sbG93aW5nIGNvbmNhdCBpcyBjb3JyZWN0LlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJyAmJiBhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXEuYXBwbHkodW5kZWYsIGFyZ3MuY29uY2F0KFtyZWxOYW1lLCBmb3JjZVN5bmNdKSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZU5vcm1hbGl6ZShyZWxOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCByZWxOYW1lKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlTG9hZChkZXBOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGRlZmluZWRbZGVwTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxsRGVwKG5hbWUpIHtcbiAgICAgICAgaWYgKGhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gd2FpdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIGRlbGV0ZSB3YWl0aW5nW25hbWVdO1xuICAgICAgICAgICAgZGVmaW5pbmdbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgbWFpbi5hcHBseSh1bmRlZiwgYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgbmFtZSkgJiYgIWhhc1Byb3AoZGVmaW5pbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vICcgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmaW5lZFtuYW1lXTtcbiAgICB9XG5cbiAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXVxuICAgIC8vd2l0aCB0aGUgcGx1Z2luIGJlaW5nIHVuZGVmaW5lZCBpZiB0aGUgbmFtZVxuICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC5cbiAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7XG4gICAgICAgIHZhciBwcmVmaXgsXG4gICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTtcbiAgICB9XG5cbiAgICAvL0NyZWF0ZXMgYSBwYXJ0cyBhcnJheSBmb3IgYSByZWxOYW1lIHdoZXJlIGZpcnN0IHBhcnQgaXMgcGx1Z2luIElELFxuICAgIC8vc2Vjb25kIHBhcnQgaXMgcmVzb3VyY2UgSUQuIEFzc3VtZXMgcmVsTmFtZSBoYXMgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuXG4gICAgZnVuY3Rpb24gbWFrZVJlbFBhcnRzKHJlbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHJlbE5hbWUgPyBzcGxpdFByZWZpeChyZWxOYW1lKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgbmFtZSBtYXAsIG5vcm1hbGl6aW5nIHRoZSBuYW1lLCBhbmQgdXNpbmcgYSBwbHVnaW5cbiAgICAgKiBmb3Igbm9ybWFsaXphdGlvbiBpZiBuZWNlc3NhcnkuIEdyYWJzIGEgcmVmIHRvIHBsdWdpblxuICAgICAqIHRvbywgYXMgYW4gb3B0aW1pemF0aW9uLlxuICAgICAqL1xuICAgIG1ha2VNYXAgPSBmdW5jdGlvbiAobmFtZSwgcmVsUGFydHMpIHtcbiAgICAgICAgdmFyIHBsdWdpbixcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSksXG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXSxcbiAgICAgICAgICAgIHJlbFJlc291cmNlTmFtZSA9IHJlbFBhcnRzWzFdO1xuXG4gICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcblxuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCByZWxSZXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgcGx1Z2luID0gY2FsbERlcChwcmVmaXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9Ob3JtYWxpemUgYWNjb3JkaW5nXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIGlmIChwbHVnaW4gJiYgcGx1Z2luLm5vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIG1ha2VOb3JtYWxpemUocmVsUmVzb3VyY2VOYW1lKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7XG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTtcbiAgICAgICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1VzaW5nIHJpZGljdWxvdXMgcHJvcGVydHkgbmFtZXMgZm9yIHNwYWNlIHJlYXNvbnNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lXG4gICAgICAgICAgICBuOiBuYW1lLFxuICAgICAgICAgICAgcHI6IHByZWZpeCxcbiAgICAgICAgICAgIHA6IHBsdWdpblxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlQ29uZmlnKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaGFuZGxlcnMgPSB7XG4gICAgICAgIHJlcXVpcmU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydHM6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFtuYW1lXSA9IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICAgICAgICB1cmk6ICcnLFxuICAgICAgICAgICAgICAgIGV4cG9ydHM6IGRlZmluZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1haW4gPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpIHtcbiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksIHJlbFBhcnRzLFxuICAgICAgICAgICAgYXJncyA9IFtdLFxuICAgICAgICAgICAgY2FsbGJhY2tUeXBlID0gdHlwZW9mIGNhbGxiYWNrLFxuICAgICAgICAgICAgdXNpbmdFeHBvcnRzO1xuXG4gICAgICAgIC8vVXNlIG5hbWUgaWYgbm8gcmVsTmFtZVxuICAgICAgICByZWxOYW1lID0gcmVsTmFtZSB8fCBuYW1lO1xuICAgICAgICByZWxQYXJ0cyA9IG1ha2VSZWxQYXJ0cyhyZWxOYW1lKTtcblxuICAgICAgICAvL0NhbGwgdGhlIGNhbGxiYWNrIHRvIGRlZmluZSB0aGUgbW9kdWxlLCBpZiBuZWNlc3NhcnkuXG4gICAgICAgIGlmIChjYWxsYmFja1R5cGUgPT09ICd1bmRlZmluZWQnIHx8IGNhbGxiYWNrVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgZGVmaW5lZCBkZXBlbmRlbmNpZXMgYW5kIHBhc3MgdGhlIG9yZGVyZWRcbiAgICAgICAgICAgIC8vdmFsdWVzIHRvIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIC8vRGVmYXVsdCB0byBbcmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlXSBpZiBubyBkZXBzXG4gICAgICAgICAgICBkZXBzID0gIWRlcHMubGVuZ3RoICYmIGNhbGxiYWNrLmxlbmd0aCA/IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddIDogZGVwcztcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbWFrZU1hcChkZXBzW2ldLCByZWxQYXJ0cyk7XG4gICAgICAgICAgICAgICAgZGVwTmFtZSA9IG1hcC5mO1xuXG4gICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuICAgICAgICAgICAgICAgIGlmIChkZXBOYW1lID09PSBcInJlcXVpcmVcIikge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gaGFuZGxlcnMucmVxdWlyZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09IFwiZXhwb3J0c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQ29tbW9uSlMgbW9kdWxlIHNwZWMgMS4xXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1c2luZ0V4cG9ydHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVwTmFtZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMVxuICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzUHJvcChkZWZpbmVkLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcCh3YWl0aW5nLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGNhbGxEZXAoZGVwTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXAucCkge1xuICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGRlZmluZWRbZGVwTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgPyBjYWxsYmFjay5hcHBseShkZWZpbmVkW25hbWVdLCBhcmdzKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAvL0lmIHNldHRpbmcgZXhwb3J0cyB2aWEgXCJtb2R1bGVcIiBpcyBpbiBwbGF5LFxuICAgICAgICAgICAgICAgIC8vZmF2b3IgdGhhdCBvdmVyIHJldHVybiB2YWx1ZSBhbmQgZXhwb3J0cy4gQWZ0ZXIgdGhhdCxcbiAgICAgICAgICAgICAgICAvL2Zhdm9yIGEgbm9uLXVuZGVmaW5lZCByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzIHVzZS5cbiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlLmV4cG9ydHMgIT09IGRlZmluZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNqc01vZHVsZS5leHBvcnRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHlcbiAgICAgICAgICAgIC8vd29ycnkgYWJvdXQgZGVmaW5pbmcgaWYgaGF2ZSBhIG1vZHVsZSBuYW1lLlxuICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXJzW2RlcHNdKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpbiB0aGlzIGNhc2UgaXMgcmVhbGx5IHJlbE5hbWVcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9KdXN0IHJldHVybiB0aGUgbW9kdWxlIHdhbnRlZC4gSW4gdGhpcyBzY2VuYXJpbywgdGhlXG4gICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZClcbiAgICAgICAgICAgIC8vaXMganVzdCB0aGUgcmVsTmFtZS5cbiAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uXG4gICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIG1ha2VSZWxQYXJ0cyhjYWxsYmFjaykpLmYpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkZXBzLnNwbGljZSkge1xuICAgICAgICAgICAgLy9kZXBzIGlzIGEgY29uZmlnIG9iamVjdCwgbm90IGFuIGFycmF5LlxuICAgICAgICAgICAgY29uZmlnID0gZGVwcztcbiAgICAgICAgICAgIGlmIChjb25maWcuZGVwcykge1xuICAgICAgICAgICAgICAgIHJlcShjb25maWcuZGVwcywgY29uZmlnLmNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjay5zcGxpY2UpIHtcbiAgICAgICAgICAgICAgICAvL2NhbGxiYWNrIGlzIGFuIGFycmF5LCB3aGljaCBtZWFucyBpdCBpcyBhIGRlcGVuZGVuY3kgbGlzdC5cbiAgICAgICAgICAgICAgICAvL0FkanVzdCBhcmdzIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSByZWxOYW1lO1xuICAgICAgICAgICAgICAgIHJlbE5hbWUgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZXBzID0gdW5kZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1N1cHBvcnQgcmVxdWlyZShbJ2EnXSlcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICAgICAgICAvL0lmIHJlbE5hbWUgaXMgYSBmdW5jdGlvbiwgaXQgaXMgYW4gZXJyYmFjayBoYW5kbGVyLFxuICAgICAgICAvL3NvIHJlbW92ZSBpdC5cbiAgICAgICAgaWYgKHR5cGVvZiByZWxOYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZWxOYW1lID0gZm9yY2VTeW5jO1xuICAgICAgICAgICAgZm9yY2VTeW5jID0gYWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy9TaW11bGF0ZSBhc3luYyBjYWxsYmFjaztcbiAgICAgICAgaWYgKGZvcmNlU3luYykge1xuICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9Vc2luZyBhIG5vbi16ZXJvIHZhbHVlIGJlY2F1c2Ugb2YgY29uY2VybiBmb3Igd2hhdCBvbGQgYnJvd3NlcnNcbiAgICAgICAgICAgIC8vZG8sIGFuZCBsYXRlc3QgYnJvd3NlcnMgXCJ1cGdyYWRlXCIgdG8gNCBpZiBsb3dlciB2YWx1ZSBpcyB1c2VkOlxuICAgICAgICAgICAgLy9odHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aW1lcnMuaHRtbCNkb20td2luZG93dGltZXJzLXNldHRpbWVvdXQ6XG4gICAgICAgICAgICAvL0lmIHdhbnQgYSB2YWx1ZSBpbW1lZGlhdGVseSwgdXNlIHJlcXVpcmUoJ2lkJykgaW5zdGVhZCAtLSBzb21ldGhpbmdcbiAgICAgICAgICAgIC8vdGhhdCB3b3JrcyBpbiBhbG1vbmQgb24gdGhlIGdsb2JhbCBsZXZlbCwgYnV0IG5vdCBndWFyYW50ZWVkIGFuZFxuICAgICAgICAgICAgLy91bmxpa2VseSB0byB3b3JrIGluIG90aGVyIEFNRCBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBtYWluKHVuZGVmLCBkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSk7XG4gICAgICAgICAgICB9LCA0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEp1c3QgZHJvcHMgdGhlIGNvbmZpZyBvbiB0aGUgZmxvb3IsIGJ1dCByZXR1cm5zIHJlcSBpbiBjYXNlXG4gICAgICogdGhlIGNvbmZpZyByZXR1cm4gdmFsdWUgaXMgdXNlZC5cbiAgICAgKi9cbiAgICByZXEuY29uZmlnID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICByZXR1cm4gcmVxKGNmZyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEV4cG9zZSBtb2R1bGUgcmVnaXN0cnkgZm9yIGRlYnVnZ2luZyBhbmQgdG9vbGluZ1xuICAgICAqL1xuICAgIHJlcXVpcmVqcy5fZGVmaW5lZCA9IGRlZmluZWQ7XG5cbiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWUgYWxtb25kIFJFQURNRTogaW5jb3JyZWN0IG1vZHVsZSBidWlsZCwgbm8gbW9kdWxlIG5hbWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llc1xuICAgICAgICBpZiAoIWRlcHMuc3BsaWNlKSB7XG4gICAgICAgICAgICAvL2RlcHMgaXMgbm90IGFuIGFycmF5LCBzbyBwcm9iYWJseSBtZWFuc1xuICAgICAgICAgICAgLy9hbiBvYmplY3QgbGl0ZXJhbCBvciBmYWN0b3J5IGZ1bmN0aW9uIGZvclxuICAgICAgICAgICAgLy90aGUgdmFsdWUuIEFkanVzdCBhcmdzLlxuICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzO1xuICAgICAgICAgICAgZGVwcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIG5hbWUpICYmICFoYXNQcm9wKHdhaXRpbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB3YWl0aW5nW25hbWVdID0gW25hbWUsIGRlcHMsIGNhbGxiYWNrXTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZWZpbmUuYW1kID0ge1xuICAgICAgICBqUXVlcnk6IHRydWVcbiAgICB9O1xufSgpKTtcblxuUzIucmVxdWlyZWpzID0gcmVxdWlyZWpzO1MyLnJlcXVpcmUgPSByZXF1aXJlO1MyLmRlZmluZSA9IGRlZmluZTtcbn1cbn0oKSk7XG5TMi5kZWZpbmUoXCJhbG1vbmRcIiwgZnVuY3Rpb24oKXt9KTtcblxuLyogZ2xvYmFsIGpRdWVyeTpmYWxzZSwgJDpmYWxzZSAqL1xuUzIuZGVmaW5lKCdqcXVlcnknLFtdLGZ1bmN0aW9uICgpIHtcbiAgdmFyIF8kID0galF1ZXJ5IHx8ICQ7XG5cbiAgaWYgKF8kID09IG51bGwgJiYgY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdTZWxlY3QyOiBBbiBpbnN0YW5jZSBvZiBqUXVlcnkgb3IgYSBqUXVlcnktY29tcGF0aWJsZSBsaWJyYXJ5IHdhcyBub3QgJyArXG4gICAgICAnZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyICcgK1xuICAgICAgJ3dlYiBwYWdlLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIF8kO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi91dGlscycsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgdmFyIFV0aWxzID0ge307XG5cbiAgVXRpbHMuRXh0ZW5kID0gZnVuY3Rpb24gKENoaWxkQ2xhc3MsIFN1cGVyQ2xhc3MpIHtcbiAgICB2YXIgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHk7XG5cbiAgICBmdW5jdGlvbiBCYXNlQ29uc3RydWN0b3IgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IENoaWxkQ2xhc3M7XG4gICAgfVxuXG4gICAgZm9yICh2YXIga2V5IGluIFN1cGVyQ2xhc3MpIHtcbiAgICAgIGlmIChfX2hhc1Byb3AuY2FsbChTdXBlckNsYXNzLCBrZXkpKSB7XG4gICAgICAgIENoaWxkQ2xhc3Nba2V5XSA9IFN1cGVyQ2xhc3Nba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBCYXNlQ29uc3RydWN0b3IucHJvdG90eXBlID0gU3VwZXJDbGFzcy5wcm90b3R5cGU7XG4gICAgQ2hpbGRDbGFzcy5wcm90b3R5cGUgPSBuZXcgQmFzZUNvbnN0cnVjdG9yKCk7XG4gICAgQ2hpbGRDbGFzcy5fX3N1cGVyX18gPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcblxuICAgIHJldHVybiBDaGlsZENsYXNzO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGdldE1ldGhvZHMgKHRoZUNsYXNzKSB7XG4gICAgdmFyIHByb3RvID0gdGhlQ2xhc3MucHJvdG90eXBlO1xuXG4gICAgdmFyIG1ldGhvZHMgPSBbXTtcblxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gcHJvdG8pIHtcbiAgICAgIHZhciBtID0gcHJvdG9bbWV0aG9kTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1ldGhvZHMucHVzaChtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0aG9kcztcbiAgfVxuXG4gIFV0aWxzLkRlY29yYXRlID0gZnVuY3Rpb24gKFN1cGVyQ2xhc3MsIERlY29yYXRvckNsYXNzKSB7XG4gICAgdmFyIGRlY29yYXRlZE1ldGhvZHMgPSBnZXRNZXRob2RzKERlY29yYXRvckNsYXNzKTtcbiAgICB2YXIgc3VwZXJNZXRob2RzID0gZ2V0TWV0aG9kcyhTdXBlckNsYXNzKTtcblxuICAgIGZ1bmN0aW9uIERlY29yYXRlZENsYXNzICgpIHtcbiAgICAgIHZhciB1bnNoaWZ0ID0gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQ7XG5cbiAgICAgIHZhciBhcmdDb3VudCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGg7XG5cbiAgICAgIHZhciBjYWxsZWRDb25zdHJ1Y3RvciA9IFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuXG4gICAgICBpZiAoYXJnQ291bnQgPiAwKSB7XG4gICAgICAgIHVuc2hpZnQuY2FsbChhcmd1bWVudHMsIFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtcblxuICAgICAgICBjYWxsZWRDb25zdHJ1Y3RvciA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcbiAgICAgIH1cblxuICAgICAgY2FsbGVkQ29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBEZWNvcmF0b3JDbGFzcy5kaXNwbGF5TmFtZSA9IFN1cGVyQ2xhc3MuZGlzcGxheU5hbWU7XG5cbiAgICBmdW5jdGlvbiBjdHIgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IERlY29yYXRlZENsYXNzO1xuICAgIH1cblxuICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSA9IG5ldyBjdHIoKTtcblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgc3VwZXJNZXRob2RzLmxlbmd0aDsgbSsrKSB7XG4gICAgICB2YXIgc3VwZXJNZXRob2QgPSBzdXBlck1ldGhvZHNbbV07XG5cbiAgICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF0gPVxuICAgICAgICBTdXBlckNsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF07XG4gICAgfVxuXG4gICAgdmFyIGNhbGxlZE1ldGhvZCA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAvLyBTdHViIG91dCB0aGUgb3JpZ2luYWwgbWV0aG9kIGlmIGl0J3Mgbm90IGRlY29yYXRpbmcgYW4gYWN0dWFsIG1ldGhvZFxuICAgICAgdmFyIG9yaWdpbmFsTWV0aG9kID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAgIGlmIChtZXRob2ROYW1lIGluIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSkge1xuICAgICAgICBvcmlnaW5hbE1ldGhvZCA9IERlY29yYXRlZENsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlY29yYXRlZE1ldGhvZCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVuc2hpZnQgPSBBcnJheS5wcm90b3R5cGUudW5zaGlmdDtcblxuICAgICAgICB1bnNoaWZ0LmNhbGwoYXJndW1lbnRzLCBvcmlnaW5hbE1ldGhvZCk7XG5cbiAgICAgICAgcmV0dXJuIGRlY29yYXRlZE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkZWNvcmF0ZWRNZXRob2RzLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgZGVjb3JhdGVkTWV0aG9kID0gZGVjb3JhdGVkTWV0aG9kc1tkXTtcblxuICAgICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW2RlY29yYXRlZE1ldGhvZF0gPSBjYWxsZWRNZXRob2QoZGVjb3JhdGVkTWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGVjb3JhdGVkQ2xhc3M7XG4gIH07XG5cbiAgdmFyIE9ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTtcbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzIHx8IHt9O1xuXG4gICAgaWYgKGV2ZW50IGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1tldmVudF0ucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50XSA9IFtjYWxsYmFja107XG4gICAgfVxuICB9O1xuXG4gIE9ic2VydmFibGUucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG4gICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge307XG5cbiAgICAvLyBQYXJhbXMgc2hvdWxkIGFsd2F5cyBjb21lIGluIGFzIGFuIGFycmF5XG4gICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIHRvIHRoZSBldmVudCwgdXNlIGEgdGVtcG9yYXJ5IG9iamVjdFxuICAgIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBwYXJhbXMucHVzaCh7fSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBgX3R5cGVgIG9mIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIGV2ZW50XG4gICAgcGFyYW1zWzBdLl90eXBlID0gZXZlbnQ7XG5cbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuaW52b2tlKHRoaXMubGlzdGVuZXJzW2V2ZW50XSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9XG5cbiAgICBpZiAoJyonIGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1snKiddLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAobGlzdGVuZXJzLCBwYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgcGFyYW1zKTtcbiAgICB9XG4gIH07XG5cbiAgVXRpbHMuT2JzZXJ2YWJsZSA9IE9ic2VydmFibGU7XG5cbiAgVXRpbHMuZ2VuZXJhdGVDaGFycyA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcbiAgICB2YXIgY2hhcnMgPSAnJztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5kb21DaGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYpO1xuICAgICAgY2hhcnMgKz0gcmFuZG9tQ2hhci50b1N0cmluZygzNik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzO1xuICB9O1xuXG4gIFV0aWxzLmJpbmQgPSBmdW5jdGlvbiAoZnVuYywgY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICBVdGlscy5fY29udmVydERhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGZvciAodmFyIG9yaWdpbmFsS2V5IGluIGRhdGEpIHtcbiAgICAgIHZhciBrZXlzID0gb3JpZ2luYWxLZXkuc3BsaXQoJy0nKTtcblxuICAgICAgdmFyIGRhdGFMZXZlbCA9IGRhdGE7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBrZXlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2tdO1xuXG4gICAgICAgIC8vIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGRhc2gtc2VwYXJhdGVkIGJlY29tZXMgY2FtZWxDYXNlXG4gICAgICAgIGtleSA9IGtleS5zdWJzdHJpbmcoMCwgMSkudG9Mb3dlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgaWYgKCEoa2V5IGluIGRhdGFMZXZlbCkpIHtcbiAgICAgICAgICBkYXRhTGV2ZWxba2V5XSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGsgPT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgZGF0YUxldmVsW2tleV0gPSBkYXRhW29yaWdpbmFsS2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFMZXZlbCA9IGRhdGFMZXZlbFtrZXldO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZGF0YVtvcmlnaW5hbEtleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgVXRpbHMuaGFzU2Nyb2xsID0gZnVuY3Rpb24gKGluZGV4LCBlbCkge1xuICAgIC8vIEFkYXB0ZWQgZnJvbSB0aGUgZnVuY3Rpb24gY3JlYXRlZCBieSBAU2hhZG93U2NyaXB0ZXJcbiAgICAvLyBhbmQgYWRhcHRlZCBieSBAQmlsbEJhcnJ5IG9uIHRoZSBTdGFjayBFeGNoYW5nZSBDb2RlIFJldmlldyB3ZWJzaXRlLlxuICAgIC8vIFRoZSBvcmlnaW5hbCBjb2RlIGNhbiBiZSBmb3VuZCBhdFxuICAgIC8vIGh0dHA6Ly9jb2RlcmV2aWV3LnN0YWNrZXhjaGFuZ2UuY29tL3EvMTMzMzhcbiAgICAvLyBhbmQgd2FzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGUgU2l6emxlIHNlbGVjdG9yIGVuZ2luZS5cblxuICAgIHZhciAkZWwgPSAkKGVsKTtcbiAgICB2YXIgb3ZlcmZsb3dYID0gZWwuc3R5bGUub3ZlcmZsb3dYO1xuICAgIHZhciBvdmVyZmxvd1kgPSBlbC5zdHlsZS5vdmVyZmxvd1k7XG5cbiAgICAvL0NoZWNrIGJvdGggeCBhbmQgeSBkZWNsYXJhdGlvbnNcbiAgICBpZiAob3ZlcmZsb3dYID09PSBvdmVyZmxvd1kgJiZcbiAgICAgICAgKG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgb3ZlcmZsb3dZID09PSAndmlzaWJsZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJmbG93WCA9PT0gJ3Njcm9sbCcgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICgkZWwuaW5uZXJIZWlnaHQoKSA8IGVsLnNjcm9sbEhlaWdodCB8fFxuICAgICAgJGVsLmlubmVyV2lkdGgoKSA8IGVsLnNjcm9sbFdpZHRoKTtcbiAgfTtcblxuICBVdGlscy5lc2NhcGVNYXJrdXAgPSBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgdmFyIHJlcGxhY2VNYXAgPSB7XG4gICAgICAnXFxcXCc6ICcmIzkyOycsXG4gICAgICAnJic6ICcmYW1wOycsXG4gICAgICAnPCc6ICcmbHQ7JyxcbiAgICAgICc+JzogJyZndDsnLFxuICAgICAgJ1wiJzogJyZxdW90OycsXG4gICAgICAnXFwnJzogJyYjMzk7JyxcbiAgICAgICcvJzogJyYjNDc7J1xuICAgIH07XG5cbiAgICAvLyBEbyBub3QgdHJ5IHRvIGVzY2FwZSB0aGUgbWFya3VwIGlmIGl0J3Mgbm90IGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcobWFya3VwKS5yZXBsYWNlKC9bJjw+XCInXFwvXFxcXF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICByZXR1cm4gcmVwbGFjZU1hcFttYXRjaF07XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQ2FjaGUgb2JqZWN0cyBpbiBVdGlscy5fX2NhY2hlIGluc3RlYWQgb2YgJC5kYXRhIChzZWUgIzQzNDYpXG4gIFV0aWxzLl9fY2FjaGUgPSB7fTtcblxuICB2YXIgaWQgPSAwO1xuICBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIEdldCBhIHVuaXF1ZSBlbGVtZW50IElkLiBJZiBlbGVtZW50IGhhcyBubyBpZCxcbiAgICAvLyBjcmVhdGVzIGEgbmV3IHVuaXF1ZSBudW1iZXIsIHN0b3JlcyBpdCBpbiB0aGUgaWRcbiAgICAvLyBhdHRyaWJ1dGUgYW5kIHJldHVybnMgdGhlIG5ldyBpZCB3aXRoIGEgcHJlZml4LlxuICAgIC8vIElmIGFuIGlkIGFscmVhZHkgZXhpc3RzLCBpdCBzaW1wbHkgcmV0dXJucyBpdCB3aXRoIGEgcHJlZml4LlxuXG4gICAgdmFyIHNlbGVjdDJJZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItaWQnKTtcblxuICAgIGlmIChzZWxlY3QySWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdDJJZDtcbiAgICB9XG5cbiAgICAvLyBJZiBlbGVtZW50IGhhcyBpZCwgdXNlIGl0LlxuICAgIGlmIChlbGVtZW50LmlkKSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyBlbGVtZW50LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyAoKytpZCkudG9TdHJpbmcoKSArXG4gICAgICAgICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi1pZCcsIHNlbGVjdDJJZCk7XG5cbiAgICByZXR1cm4gc2VsZWN0MklkO1xuICB9O1xuXG4gIFV0aWxzLlN0b3JlRGF0YSA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgIC8vIFN0b3JlcyBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBuYW1lIGlzIHRoZSBjYWNoZSBrZXkuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmICghVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgIFV0aWxzLl9fY2FjaGVbaWRdID0ge307XG4gICAgfVxuXG4gICAgVXRpbHMuX19jYWNoZVtpZF1bbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBVdGlscy5HZXREYXRhID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAvLyBSZXRyaWV2ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSBieSBpdHMga2V5IChuYW1lKVxuICAgIC8vIG5hbWUgaXMgb3B0aW9uYWwuIElmIG5vIG5hbWUgc3BlY2lmaWVkLCByZXR1cm5cbiAgICAvLyBhbGwgY2FjaGUgaXRlbXMgZm9yIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBhbmQgZm9yIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBpZiAoVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF1bbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgICAgfVxuICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF07XG4gICAgfVxuICB9O1xuXG4gIFV0aWxzLlJlbW92ZURhdGEgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIFJlbW92ZXMgYWxsIGNhY2hlZCBpdGVtcyBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICB2YXIgaWQgPSBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQoZWxlbWVudCk7XG4gICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdICE9IG51bGwpIHtcbiAgICAgIGRlbGV0ZSBVdGlscy5fX2NhY2hlW2lkXTtcbiAgICB9XG5cbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLWlkJyk7XG4gIH07XG5cbiAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3NlcyA9IGZ1bmN0aW9uIChkZXN0LCBzcmMpIHtcbiAgICB2YXIgY2xhc3NlcztcblxuICAgIHZhciBkZXN0aW5hdGlvbkNsYXNzZXMgPSBkZXN0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKS50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIGRlc3RpbmF0aW9uQ2xhc3NlcyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNsYXp6KSB7XG4gICAgICAvLyBTYXZlIGFsbCBTZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpID09PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHNvdXJjZUNsYXNzZXMgPSBzcmMuZ2V0QXR0cmlidXRlKCdjbGFzcycpLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgc291cmNlQ2xhc3NlcyA9IHNvdXJjZUNsYXNzZXMuZmlsdGVyKGZ1bmN0aW9uIChjbGF6eikge1xuICAgICAgLy8gT25seSBjb3B5IG5vbi1TZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpICE9PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHJlcGxhY2VtZW50cyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5jb25jYXQoc291cmNlQ2xhc3Nlcyk7XG5cbiAgICBkZXN0LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCByZXBsYWNlbWVudHMuam9pbignICcpKTtcbiAgfTtcblxuICByZXR1cm4gVXRpbHM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3Jlc3VsdHMnLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFJlc3VsdHMgKCRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLmRhdGEgPSBkYXRhQWRhcHRlcjtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgUmVzdWx0cy5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChSZXN1bHRzLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZXN1bHRzID0gJChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnNcIiByb2xlPVwibGlzdGJveFwiPjwvdWw+J1xuICAgICk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnbXVsdGlwbGUnKSkge1xuICAgICAgJHJlc3VsdHMuYXR0cignYXJpYS1tdWx0aXNlbGVjdGFibGUnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMgPSAkcmVzdWx0cztcblxuICAgIHJldHVybiAkcmVzdWx0cztcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGlzcGxheU1lc3NhZ2UgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkbWVzc2FnZSA9ICQoXG4gICAgICAnPGxpIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiJyArXG4gICAgICAnIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25cIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQocGFyYW1zLm1lc3NhZ2UpO1xuXG4gICAgJG1lc3NhZ2UuYXBwZW5kKFxuICAgICAgZXNjYXBlTWFya3VwKFxuICAgICAgICBtZXNzYWdlKHBhcmFtcy5hcmdzKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAkbWVzc2FnZVswXS5jbGFzc05hbWUgKz0gJyBzZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG1lc3NhZ2UpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVNZXNzYWdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkb3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKGRhdGEucmVzdWx0cyA9PSBudWxsIHx8IGRhdGEucmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLiRyZXN1bHRzLmNoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdub1Jlc3VsdHMnXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5yZXN1bHRzID0gdGhpcy5zb3J0KGRhdGEucmVzdWx0cyk7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEucmVzdWx0cy5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSBkYXRhLnJlc3VsdHNbZF07XG5cbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRyZXN1bHRzLCAkZHJvcGRvd24pIHtcbiAgICB2YXIgJHJlc3VsdHNDb250YWluZXIgPSAkZHJvcGRvd24uZmluZCgnLnNlbGVjdDItcmVzdWx0cycpO1xuICAgICRyZXN1bHRzQ29udGFpbmVyLmFwcGVuZCgkcmVzdWx0cyk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNvcnRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ3NvcnRlcicpO1xuXG4gICAgcmV0dXJuIHNvcnRlcihkYXRhKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kcmVzdWx0c1xuICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyICRzZWxlY3RlZCA9ICRvcHRpb25zLmZpbHRlcignLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZWxlY3RlZCBvcHRpb25zXG4gICAgaWYgKCRzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdFxuICAgICAgJHNlbGVjdGVkLmZpcnN0KCkudHJpZ2dlcignbW91c2VlbnRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdCBvcHRpb25cbiAgICAgIC8vIGluIHRoZSBkcm9wZG93blxuICAgICAgJG9wdGlvbnMuZmlyc3QoKS50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc2V0Q2xhc3NlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRhdGEuY3VycmVudChmdW5jdGlvbiAoc2VsZWN0ZWQpIHtcbiAgICAgIHZhciBzZWxlY3RlZElkcyA9IHNlbGVjdGVkLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gcy5pZC50b1N0cmluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHNcbiAgICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICAgIHZhciBpdGVtID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICAgIC8vIGlkIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aGVuIGNvbXBhcmluZ1xuICAgICAgICB2YXIgaWQgPSAnJyArIGl0ZW0uaWQ7XG5cbiAgICAgICAgaWYgKChpdGVtLmVsZW1lbnQgIT0gbnVsbCAmJiBpdGVtLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XG4gICAgICAgICAgICAoaXRlbS5lbGVtZW50ID09IG51bGwgJiYgc2VsZWN0ZWRJZHMuaW5kZXhPZihpZCkgPiAtMSkpIHtcbiAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuICAgICAgICAgICRvcHRpb24uYXR0cignYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAkb3B0aW9uLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5zaG93TG9hZGluZyA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG5cbiAgICB2YXIgbG9hZGluZ01vcmUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaGluZycpO1xuXG4gICAgdmFyIGxvYWRpbmcgPSB7XG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICB0ZXh0OiBsb2FkaW5nTW9yZShwYXJhbXMpXG4gICAgfTtcbiAgICB2YXIgJGxvYWRpbmcgPSB0aGlzLm9wdGlvbihsb2FkaW5nKTtcbiAgICAkbG9hZGluZy5jbGFzc05hbWUgKz0gJyBsb2FkaW5nLXJlc3VsdHMnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5wcmVwZW5kKCRsb2FkaW5nKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWRlTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5sb2FkaW5nLXJlc3VsdHMnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbicpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgJ3JvbGUnOiAnb3B0aW9uJ1xuICAgIH07XG5cbiAgICB2YXIgbWF0Y2hlcyA9IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8XG4gICAgICB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3IgfHxcbiAgICAgIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBpZiAoKGRhdGEuZWxlbWVudCAhPSBudWxsICYmIG1hdGNoZXMuY2FsbChkYXRhLmVsZW1lbnQsICc6ZGlzYWJsZWQnKSkgfHxcbiAgICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuZGlzYWJsZWQpKSB7XG4gICAgICBhdHRyc1snYXJpYS1kaXNhYmxlZCddID0gJ3RydWUnO1xuXG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5pZCA9PSBudWxsKSB7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5fcmVzdWx0SWQgIT0gbnVsbCkge1xuICAgICAgb3B0aW9uLmlkID0gZGF0YS5fcmVzdWx0SWQ7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudGl0bGUpIHtcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIGF0dHJzLnJvbGUgPSAnZ3JvdXAnO1xuICAgICAgYXR0cnNbJ2FyaWEtbGFiZWwnXSA9IGRhdGEudGV4dDtcblxuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWdyb3VwJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYXR0ciBpbiBhdHRycykge1xuICAgICAgdmFyIHZhbCA9IGF0dHJzW2F0dHJdO1xuXG4gICAgICBvcHRpb24uc2V0QXR0cmlidXRlKGF0dHIsIHZhbCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIHZhciAkb3B0aW9uID0gJChvcHRpb24pO1xuXG4gICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcbiAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdzZWxlY3QyLXJlc3VsdHNfX2dyb3VwJztcblxuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBsYWJlbCk7XG5cbiAgICAgIHZhciAkY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBkYXRhLmNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgdmFyICRjaGlsZCA9IHRoaXMub3B0aW9uKGNoaWxkKTtcblxuICAgICAgICAkY2hpbGRyZW4ucHVzaCgkY2hpbGQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgJGNoaWxkcmVuQ29udGFpbmVyID0gJCgnPHVsPjwvdWw+Jywge1xuICAgICAgICAnY2xhc3MnOiAnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHNlbGVjdDItcmVzdWx0c19fb3B0aW9ucy0tbmVzdGVkJyxcbiAgICAgICAgJ3JvbGUnOiAnbm9uZSdcbiAgICAgIH0pO1xuXG4gICAgICAkY2hpbGRyZW5Db250YWluZXIuYXBwZW5kKCRjaGlsZHJlbik7XG5cbiAgICAgICRvcHRpb24uYXBwZW5kKGxhYmVsKTtcbiAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbkNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGUoZGF0YSwgb3B0aW9uKTtcbiAgICB9XG5cbiAgICBVdGlscy5TdG9yZURhdGEob3B0aW9uLCAnZGF0YScsIGRhdGEpO1xuXG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG5cbiAgICB0aGlzLiRyZXN1bHRzLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuY2xlYXIoKTtcbiAgICAgIHNlbGYuYXBwZW5kKHBhcmFtcy5kYXRhKTtcblxuICAgICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLnNldENsYXNzZXMoKTtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphcHBlbmQnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmFwcGVuZChwYXJhbXMuZGF0YSk7XG5cbiAgICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5oaWRlTWVzc2FnZXMoKTtcbiAgICAgIHNlbGYuc2hvd0xvYWRpbmcocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnNldENsYXNzZXMoKTtcblxuICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ3Njcm9sbEFmdGVyU2VsZWN0JykpIHtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuXG4gICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnc2Nyb2xsQWZ0ZXJTZWxlY3QnKSkge1xuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgYXJpYS1leHBlbmRlZD1cInRydWVcIlxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICBzZWxmLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwZW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgc2VsZi4kcmVzdWx0cy5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czp0b2dnbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkaGlnaGxpZ2h0ZWQudHJpZ2dlcignbW91c2V1cCcpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkaGlnaGxpZ2h0ZWRbMF0sICdkYXRhJyk7XG5cbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnLCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnByZXZpb3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgdG9wLCBkb24ndCBtb3ZlIGZ1cnRoZXJcbiAgICAgIC8vIElmIG5vIG9wdGlvbnMsIGN1cnJlbnRJbmRleCB3aWxsIGJlIC0xXG4gICAgICBpZiAoY3VycmVudEluZGV4IDw9IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgICAgLy8gSWYgbm9uZSBhcmUgaGlnaGxpZ2h0ZWQsIGhpZ2hsaWdodCB0aGUgZmlyc3RcbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcDtcbiAgICAgIHZhciBuZXh0VG9wID0gJG5leHQub2Zmc2V0KCkudG9wO1xuICAgICAgdmFyIG5leHRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgKG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKG5leHRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOm5leHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgdmFyICRvcHRpb25zID0gc2VsZi4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9ICRvcHRpb25zLmluZGV4KCRoaWdobGlnaHRlZCk7XG5cbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYXQgdGhlIGxhc3Qgb3B0aW9uLCBzdGF5IHRoZXJlXG4gICAgICBpZiAobmV4dEluZGV4ID49ICRvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArXG4gICAgICAgIHNlbGYuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgICAgdmFyIG5leHRCb3R0b20gPSAkbmV4dC5vZmZzZXQoKS50b3AgKyAkbmV4dC5vdXRlckhlaWdodChmYWxzZSk7XG4gICAgICB2YXIgbmV4dE9mZnNldCA9IHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyBuZXh0Qm90dG9tIC0gY3VycmVudE9mZnNldDtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dEJvdHRvbSA+IGN1cnJlbnRPZmZzZXQpIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZWxlbWVudFswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcbiAgICAgIHBhcmFtcy5lbGVtZW50WzBdLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bWVzc2FnZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuZGlzcGxheU1lc3NhZ2UocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGlmICgkLmZuLm1vdXNld2hlZWwpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgdG9wID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKTtcblxuICAgICAgICB2YXIgYm90dG9tID0gc2VsZi4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0IC0gdG9wICsgZS5kZWx0YVk7XG5cbiAgICAgICAgdmFyIGlzQXRUb3AgPSBlLmRlbHRhWSA+IDAgJiYgdG9wIC0gZS5kZWx0YVkgPD0gMDtcbiAgICAgICAgdmFyIGlzQXRCb3R0b20gPSBlLmRlbHRhWSA8IDAgJiYgYm90dG9tIDw9IHNlbGYuJHJlc3VsdHMuaGVpZ2h0KCk7XG5cbiAgICAgICAgaWYgKGlzQXRUb3ApIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcblxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChcbiAgICAgICAgICAgIHNlbGYuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodCAtIHNlbGYuJHJlc3VsdHMuaGVpZ2h0KClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNldXAnLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdtdWx0aXBsZScpKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ2Nsb3NlJywge30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNlZW50ZXInLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKVxuICAgICAgICAgIC5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpmb2N1cycsIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgZWxlbWVudDogJCh0aGlzKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLiRyZXN1bHRzXG4gICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcblxuICAgIHJldHVybiAkaGlnaGxpZ2h0ZWQ7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLnJlbW92ZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmVuc3VyZUhpZ2hsaWdodFZpc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRoaWdobGlnaHRlZCA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcblxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3A7XG4gICAgdmFyIG5leHRUb3AgPSAkaGlnaGxpZ2h0ZWQub2Zmc2V0KCkudG9wO1xuICAgIHZhciBuZXh0T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCk7XG5cbiAgICB2YXIgb2Zmc2V0RGVsdGEgPSBuZXh0VG9wIC0gY3VycmVudE9mZnNldDtcbiAgICBuZXh0T2Zmc2V0IC09ICRoaWdobGlnaHRlZC5vdXRlckhlaWdodChmYWxzZSkgKiAyO1xuXG4gICAgaWYgKGN1cnJlbnRJbmRleCA8PSAyKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICB9IGVsc2UgaWYgKG9mZnNldERlbHRhID4gdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCgpIHx8IG9mZnNldERlbHRhIDwgMCkge1xuICAgICAgdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgfVxuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnRlbXBsYXRlID0gZnVuY3Rpb24gKHJlc3VsdCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVSZXN1bHQnKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICB2YXIgY29udGVudCA9IHRlbXBsYXRlKHJlc3VsdCwgY29udGFpbmVyKTtcblxuICAgIGlmIChjb250ZW50ID09IG51bGwpIHtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gZXNjYXBlTWFya3VwKGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKGNvbnRhaW5lcikuYXBwZW5kKGNvbnRlbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gUmVzdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIva2V5cycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBLRVlTID0ge1xuICAgIEJBQ0tTUEFDRTogOCxcbiAgICBUQUI6IDksXG4gICAgRU5URVI6IDEzLFxuICAgIFNISUZUOiAxNixcbiAgICBDVFJMOiAxNyxcbiAgICBBTFQ6IDE4LFxuICAgIEVTQzogMjcsXG4gICAgU1BBQ0U6IDMyLFxuICAgIFBBR0VfVVA6IDMzLFxuICAgIFBBR0VfRE9XTjogMzQsXG4gICAgRU5EOiAzNSxcbiAgICBIT01FOiAzNixcbiAgICBMRUZUOiAzNyxcbiAgICBVUDogMzgsXG4gICAgUklHSFQ6IDM5LFxuICAgIERPV046IDQwLFxuICAgIERFTEVURTogNDZcbiAgfTtcblxuICByZXR1cm4gS0VZUztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2Jhc2UnLFtcbiAgJ2pxdWVyeScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIEJhc2VTZWxlY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBCYXNlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEJhc2VTZWxlY3Rpb24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvblwiIHJvbGU9XCJjb21ib2JveFwiICcgK1xuICAgICAgJyBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnKSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpO1xuICAgIH1cblxuICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aGlzLiRlbGVtZW50LmF0dHIoJ3RpdGxlJykpO1xuICAgICRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCB0aGlzLl90YWJpbmRleCk7XG4gICAgJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24gPSAkc2VsZWN0aW9uO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0c0lkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdibHVyJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlQmx1cihldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIGlmIChldnQud2hpY2ggPT09IEtFWVMuU1BBQ0UpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0aW9uOnVwZGF0ZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYudXBkYXRlKHBhcmFtcy5kYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4sIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLW93bnMnLCByZXN1bHRzSWQpO1xuXG4gICAgICBzZWxmLl9hdHRhY2hDbG9zZUhhbmRsZXIoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtb3ducycpO1xuXG4gICAgICBzZWxmLiRzZWxlY3Rpb24udHJpZ2dlcignZm9jdXMnKTtcblxuICAgICAgc2VsZi5fZGV0YWNoQ2xvc2VIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsIHNlbGYuX3RhYmluZGV4KTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICB9KTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlQmx1ciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRlbGF5ZWQgYXMgdGhlIGFjdGl2ZSBlbGVtZW50IGlzIHRoZSBib2R5IHdoZW4gdGhlIHRhYlxuICAgIC8vIGtleSBpcyBwcmVzc2VkLCBwb3NzaWJseSBhbG9uZyB3aXRoIG90aGVycy5cbiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIGBibHVyYCBpZiB0aGUgZm9jdXMgaXMgc3RpbGwgaW4gdGhlIHNlbGVjdGlvblxuICAgICAgaWYgKFxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBzZWxmLiRzZWxlY3Rpb25bMF0pIHx8XG4gICAgICAgICgkLmNvbnRhaW5zKHNlbGYuJHNlbGVjdGlvblswXSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ2JsdXInLCBldnQpO1xuICAgIH0sIDEpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9hdHRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG5cbiAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdtb3VzZWRvd24uc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyICR0YXJnZXQgPSAkKGUudGFyZ2V0KTtcblxuICAgICAgdmFyICRzZWxlY3QgPSAkdGFyZ2V0LmNsb3Nlc3QoJy5zZWxlY3QyJyk7XG5cbiAgICAgIHZhciAkYWxsID0gJCgnLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICAgJGFsbC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgPT0gJHNlbGVjdFswXSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciAkZWxlbWVudCA9IFV0aWxzLkdldERhdGEodGhpcywgJ2VsZW1lbnQnKTtcblxuICAgICAgICAkZWxlbWVudC5zZWxlY3QyKCdjbG9zZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2RldGFjaENsb3NlSGFuZGxlciA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAkKGRvY3VtZW50LmJvZHkpLm9mZignbW91c2Vkb3duLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZCk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJHNlbGVjdGlvbiwgJGNvbnRhaW5lcikge1xuICAgIHZhciAkc2VsZWN0aW9uQ29udGFpbmVyID0gJGNvbnRhaW5lci5maW5kKCcuc2VsZWN0aW9uJyk7XG4gICAgJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQoJHNlbGVjdGlvbik7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9kZXRhY2hDbG9zZUhhbmRsZXIodGhpcy5jb250YWluZXIpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHVwZGF0ZWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImVuYWJsZWRcIiAobm90IFwiZGlzYWJsZWRcIikgc3RhdGUgb2YgdGhpc1xuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBpbnN0YW5jZSBpcyBub3QgZGlzYWJsZWQuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgaW5zdGFuY2UgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5pc0VuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJkaXNhYmxlZFwiIHN0YXRlIG9mIHRoaXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIHRydWUuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIGZhbHNlLlxuICAgKi9cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgnZGlzYWJsZWQnKTtcbiAgfTtcblxuICByZXR1cm4gQmFzZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NpbmdsZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIFNpbmdsZVNlbGVjdGlvbiAoKSB7XG4gICAgU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNpbmdsZVNlbGVjdGlvbiwgQmFzZVNlbGVjdGlvbik7XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlJyk7XG5cbiAgICAkc2VsZWN0aW9uLmh0bWwoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3NwYW4+JyArXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3dcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+JyArXG4gICAgICAgICc8YiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9iPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJylcbiAgICAgIC5hdHRyKCdpZCcsIGlkKVxuICAgICAgLmF0dHIoJ3JvbGUnLCAndGV4dGJveCcpXG4gICAgICAuYXR0cignYXJpYS1yZWFkb25seScsICd0cnVlJyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtbGFiZWxsZWRieScsIGlkKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24uYXR0cignYXJpYS1jb250cm9scycsIGlkKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gT25seSByZXNwb25kIHRvIGxlZnQgY2xpY2tzXG4gICAgICBpZiAoZXZ0LndoaWNoICE9PSAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKCd0b2dnbGUnLCB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gVXNlciBmb2N1c2VzIG9uIHRoZSBjb250YWluZXJcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignYmx1cicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVzZXIgZXhpdHMgdGhlIGNvbnRhaW5lclxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlbGVjdGlvbi50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgJHJlbmRlcmVkLmVtcHR5KCk7XG4gICAgJHJlbmRlcmVkLnJlbW92ZUF0dHIoJ3RpdGxlJyk7IC8vIGNsZWFyIHRvb2x0aXAgb24gZW1wdHlcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbiAoZGF0YSwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVTZWxlY3Rpb24nKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICByZXR1cm4gZXNjYXBlTWFya3VwKHRlbXBsYXRlKGRhdGEsIGNvbnRhaW5lcikpO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAkKCc8c3Bhbj48L3NwYW4+Jyk7XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxlY3Rpb24gPSBkYXRhWzBdO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRyZW5kZXJlZCk7XG5cbiAgICAkcmVuZGVyZWQuZW1wdHkoKS5hcHBlbmQoZm9ybWF0dGVkKTtcblxuICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgIGlmICh0aXRsZSkge1xuICAgICAgJHJlbmRlcmVkLmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkcmVuZGVyZWQucmVtb3ZlQXR0cigndGl0bGUnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFNpbmdsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlJyxbXG4gICdqcXVlcnknLFxuICAnLi9iYXNlJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIE11bHRpcGxlU2VsZWN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKE11bHRpcGxlU2VsZWN0aW9uLCBCYXNlU2VsZWN0aW9uKTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUnKTtcblxuICAgICRzZWxlY3Rpb24uaHRtbChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3VsPidcbiAgICApO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigndG9nZ2xlJywge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxuICAgICAgICBpZiAoc2VsZi5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJHJlbW92ZSA9ICQodGhpcyk7XG4gICAgICAgIHZhciAkc2VsZWN0aW9uID0gJHJlbW92ZS5wYXJlbnQoKTtcblxuICAgICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJHNlbGVjdGlvblswXSwgJ2RhdGEnKTtcblxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAna2V5ZG93bicsXG4gICAgICAnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHNlbGYuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuICAgICRyZW5kZXJlZC5lbXB0eSgpO1xuICAgICRyZW5kZXJlZC5yZW1vdmVBdHRyKCd0aXRsZScpO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5kaXNwbGF5ID0gZnVuY3Rpb24gKGRhdGEsIGNvbnRhaW5lcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlU2VsZWN0aW9uJyk7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgcmV0dXJuIGVzY2FwZU1hcmt1cCh0ZW1wbGF0ZShkYXRhLCBjb250YWluZXIpKTtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJChcbiAgICAgICc8bGkgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlXCI+JyArXG4gICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZVwiICcgK1xuICAgICAgICAndGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAgICc8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPicgK1xuICAgICAgICAnPC9idXR0b24+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX2Rpc3BsYXlcIj48L3NwYW4+JyArXG4gICAgICAnPC9saT4nXG4gICAgKTtcblxuICAgIHJldHVybiAkY29udGFpbmVyO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuY2xlYXIoKTtcblxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkc2VsZWN0aW9ucyA9IFtdO1xuXG4gICAgdmFyIHNlbGVjdGlvbklkUHJlZml4ID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJykgKyAnLWNob2ljZS0nO1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVtkXTtcblxuICAgICAgdmFyICRzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO1xuICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRzZWxlY3Rpb24pO1xuXG4gICAgICB2YXIgc2VsZWN0aW9uSWQgPSBzZWxlY3Rpb25JZFByZWZpeCArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCkgKyAnLSc7XG5cbiAgICAgIGlmIChzZWxlY3Rpb24uaWQpIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gc2VsZWN0aW9uLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICAgIH1cblxuICAgICAgJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fZGlzcGxheScpXG4gICAgICAgIC5hcHBlbmQoZm9ybWF0dGVkKVxuICAgICAgICAuYXR0cignaWQnLCBzZWxlY3Rpb25JZCk7XG5cbiAgICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aXRsZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZW1vdmVJdGVtID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVJdGVtJyk7XG5cbiAgICAgIHZhciAkcmVtb3ZlID0gJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyk7XG5cbiAgICAgICRyZW1vdmUuYXR0cigndGl0bGUnLCByZW1vdmVJdGVtKCkpO1xuICAgICAgJHJlbW92ZS5hdHRyKCdhcmlhLWxhYmVsJywgcmVtb3ZlSXRlbSgpKTtcbiAgICAgICRyZW1vdmUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHNlbGVjdGlvbklkKTtcblxuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRzZWxlY3Rpb25bMF0sICdkYXRhJywgc2VsZWN0aW9uKTtcblxuICAgICAgJHNlbGVjdGlvbnMucHVzaCgkc2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcblxuICAgICRyZW5kZXJlZC5hcHBlbmQoJHNlbGVjdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBNdWx0aXBsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3BsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihvcHRpb25zLmdldCgncGxhY2Vob2xkZXInKSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcbiAgICBpZiAodHlwZW9mIHBsYWNlaG9sZGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcGxhY2Vob2xkZXIgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdGV4dDogcGxhY2Vob2xkZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCk7XG5cbiAgICAkcGxhY2Vob2xkZXIuaHRtbCh0aGlzLmRpc3BsYXkocGxhY2Vob2xkZXIpKTtcbiAgICAkcGxhY2Vob2xkZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyJyk7XG4gICAgJHBsYWNlaG9sZGVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKTtcblxuICAgIHZhciBwbGFjZWhvbGRlclRpdGxlID0gcGxhY2Vob2xkZXIudGl0bGUgfHxcbiAgICAgIHBsYWNlaG9sZGVyLnRleHQgfHxcbiAgICAgICRwbGFjZWhvbGRlci50ZXh0KCk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoXG4gICAgICAndGl0bGUnLFxuICAgICAgcGxhY2Vob2xkZXJUaXRsZVxuICAgICk7XG5cbiAgICByZXR1cm4gJHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNpbmdsZVBsYWNlaG9sZGVyID0gKFxuICAgICAgZGF0YS5sZW5ndGggPT0gMSAmJiBkYXRhWzBdLmlkICE9IHRoaXMucGxhY2Vob2xkZXIuaWRcbiAgICApO1xuICAgIHZhciBtdWx0aXBsZVNlbGVjdGlvbnMgPSBkYXRhLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAobXVsdGlwbGVTZWxlY3Rpb25zIHx8IHNpbmdsZVBsYWNlaG9sZGVyKSB7XG4gICAgICByZXR1cm4gZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIodGhpcy5wbGFjZWhvbGRlcik7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmFwcGVuZCgkcGxhY2Vob2xkZXIpO1xuICB9O1xuXG4gIHJldHVybiBQbGFjZWhvbGRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2FsbG93Q2xlYXInLFtcbiAgJ2pxdWVyeScsXG4gICcuLi9rZXlzJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEtFWVMsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEFsbG93Q2xlYXIgKCkgeyB9XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ1NlbGVjdDI6IFRoZSBgYWxsb3dDbGVhcmAgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uICcgK1xuICAgICAgICAgICd3aXRoIHRoZSBgcGxhY2Vob2xkZXJgIG9wdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdtb3VzZWRvd24nLCAnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHNlbGYuX2hhbmRsZUNsZWFyKGV2dCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlS2V5Ym9hcmRDbGVhcihldnQsIGNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH07XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuX2hhbmRsZUNsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCkge1xuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgJGNsZWFyID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInKTtcblxuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgbm90aGluZyBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGlmICgkY2xlYXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRjbGVhclswXSwgJ2RhdGEnKTtcblxuICAgIHZhciBwcmV2aW91c1ZhbCA9IHRoaXMuJGVsZW1lbnQudmFsKCk7XG4gICAgdGhpcy4kZWxlbWVudC52YWwodGhpcy5wbGFjZWhvbGRlci5pZCk7XG5cbiAgICB2YXIgdW5zZWxlY3REYXRhID0ge1xuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgdGhpcy50cmlnZ2VyKCdjbGVhcicsIHVuc2VsZWN0RGF0YSk7XG4gICAgaWYgKHVuc2VsZWN0RGF0YS5wcmV2ZW50ZWQpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHVuc2VsZWN0RGF0YSA9IHtcbiAgICAgICAgZGF0YTogZGF0YVtkXVxuICAgICAgfTtcblxuICAgICAgLy8gVHJpZ2dlciB0aGUgYHVuc2VsZWN0YCBldmVudCwgc28gcGVvcGxlIGNhbiBwcmV2ZW50IGl0IGZyb20gYmVpbmdcbiAgICAgIC8vIGNsZWFyZWQuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3Vuc2VsZWN0JywgdW5zZWxlY3REYXRhKTtcblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IHdhcyBwcmV2ZW50ZWQsIGRvbid0IGNsZWFyIGl0IG91dC5cbiAgICAgIGlmICh1bnNlbGVjdERhdGEucHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblxuICAgIHRoaXMudHJpZ2dlcigndG9nZ2xlJywge30pO1xuICB9O1xuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLl9oYW5kbGVLZXlib2FyZENsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCwgY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldnQud2hpY2ggPT0gS0VZUy5ERUxFVEUgfHwgZXZ0LndoaWNoID09IEtFWVMuQkFDS1NQQUNFKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbGVhcihldnQpO1xuICAgIH1cbiAgfTtcblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicpLnJlbW92ZSgpO1xuICAgIHRoaXMuJHNlbGVjdGlvblswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXNlbGVjdGlvbi0tY2xlYXJhYmxlJyk7XG5cbiAgICBpZiAodGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXInKS5sZW5ndGggPiAwIHx8XG4gICAgICAgIGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGlvbklkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJyk7XG5cbiAgICB2YXIgcmVtb3ZlQWxsID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVBbGxJdGVtcycpO1xuXG4gICAgdmFyICRyZW1vdmUgPSAkKFxuICAgICAgJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIgdGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAnPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj4nICtcbiAgICAgICc8L2J1dHRvbj4nXG4gICAgKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ3RpdGxlJywgcmVtb3ZlQWxsKCkpO1xuICAgICRyZW1vdmUuYXR0cignYXJpYS1sYWJlbCcsIHJlbW92ZUFsbCgpKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzZWxlY3Rpb25JZCk7XG4gICAgVXRpbHMuU3RvcmVEYXRhKCRyZW1vdmVbMF0sICdkYXRhJywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ucHJlcGVuZCgkcmVtb3ZlKTtcbiAgICB0aGlzLiRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb24tLWNsZWFyYWJsZScpO1xuICB9O1xuXG4gIHJldHVybiBBbGxvd0NsZWFyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2VhcmNoJyxbXG4gICdqcXVlcnknLFxuICAnLi4vdXRpbHMnLFxuICAnLi4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscywgS0VZUykge1xuICBmdW5jdGlvbiBTZWFyY2ggKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBTZWFyY2gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuICAgIHZhciAkc2VhcmNoID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIj4nICtcbiAgICAgICAgJzx0ZXh0YXJlYSBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiJytcbiAgICAgICAgJyB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiA+JyArXG4gICAgICAgICc8L3RleHRhcmVhPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCd0ZXh0YXJlYScpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpO1xuICAgICRyZW5kZXJlZC5hcHBlbmQodGhpcy4kc2VhcmNoQ29udGFpbmVyKTtcblxuICAgIHJldHVybiAkcmVuZGVyZWQ7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG4gICAgdmFyIHNlbGVjdGlvbklkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jywgc2VsZWN0aW9uSWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtY29udHJvbHMnLCByZXN1bHRzSWQpO1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLnJlc2l6ZVNlYXJjaCgpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2gucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG5cbiAgICAgIHNlbGYuX3RyYW5zZmVyVGFiSW5kZXgoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5kYXRhLl9yZXN1bHRJZCkge1xuICAgICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXNpbicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1c291dCcsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX2hhbmRsZUJsdXIoZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbigna2V5ZG93bicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIHNlbGYuX2tleVVwUHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xuXG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoa2V5ID09PSBLRVlTLkJBQ0tTUEFDRSAmJiBzZWxmLiRzZWFyY2gudmFsKCkgPT09ICcnKSB7XG4gICAgICAgIHZhciAkcHJldmlvdXNDaG9pY2UgPSBzZWxmLiRzZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKS5sYXN0KCk7XG5cbiAgICAgICAgaWYgKCRwcmV2aW91c0Nob2ljZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBVdGlscy5HZXREYXRhKCRwcmV2aW91c0Nob2ljZVswXSwgJ2RhdGEnKTtcblxuICAgICAgICAgIHNlbGYuc2VhcmNoUmVtb3ZlQ2hvaWNlKGl0ZW0pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignY2xpY2snLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoc2VsZi4kc2VhcmNoLnZhbCgpKSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRyeSB0byBkZXRlY3QgdGhlIElFIHZlcnNpb24gc2hvdWxkIHRoZSBgZG9jdW1lbnRNb2RlYCBwcm9wZXJ0eSB0aGF0XG4gICAgLy8gaXMgc3RvcmVkIG9uIHRoZSBkb2N1bWVudC4gVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGluIElFIGFuZCBpc1xuICAgIC8vIHNsaWdodGx5IGNsZWFuZXIgdGhhbiBkb2luZyBhIHVzZXIgYWdlbnQgY2hlY2suXG4gICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlIGluIEVkZ2UsIGJ1dCBFZGdlIGFsc28gZG9lc24ndCBoYXZlXG4gICAgLy8gdGhpcyBidWcuXG4gICAgdmFyIG1zaWUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG4gICAgdmFyIGRpc2FibGVJbnB1dEV2ZW50cyA9IG1zaWUgJiYgbXNpZSA8PSAxMTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2lucHV0LnNlYXJjaGNoZWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElFIHdpbGwgdHJpZ2dlciB0aGUgYGlucHV0YCBldmVudCB3aGVuIGEgcGxhY2Vob2xkZXIgaXMgdXNlZCBvbiBhXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXG4gICAgICAgIC8vIGBpbnB1dGAgZXZlbnRzIGluIElFIGFuZCBrZWVwIHVzaW5nIGBrZXl1cGAuXG4gICAgICAgIGlmIChkaXNhYmxlSW5wdXRFdmVudHMpIHtcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmJpbmQgdGhlIGR1cGxpY2F0ZWQgYGtleXVwYCBldmVudFxuICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdrZXl1cC5zZWFyY2gnKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2tleXVwLnNlYXJjaCBpbnB1dC5zZWFyY2gnLFxuICAgICAgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSUUgd2lsbCB0cmlnZ2VyIHRoZSBgaW5wdXRgIGV2ZW50IHdoZW4gYSBwbGFjZWhvbGRlciBpcyB1c2VkIG9uIGFcbiAgICAgICAgLy8gc2VhcmNoIGJveC4gVG8gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBhcmUgZm9yY2VkIHRvIGlnbm9yZSBhbGxcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cbiAgICAgICAgaWYgKGRpc2FibGVJbnB1dEV2ZW50cyAmJiBldnQudHlwZSA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgIHNlbGYuJHNlbGVjdGlvbi5vZmYoJ2lucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjaycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XG5cbiAgICAgICAgLy8gV2UgY2FuIGZyZWVseSBpZ25vcmUgZXZlbnRzIGZyb20gbW9kaWZpZXIga2V5c1xuICAgICAgICBpZiAoa2V5ID09IEtFWVMuU0hJRlQgfHwga2V5ID09IEtFWVMuQ1RSTCB8fCBrZXkgPT0gS0VZUy5BTFQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWJiaW5nIHdpbGwgYmUgaGFuZGxlZCBkdXJpbmcgdGhlIGBrZXlkb3duYCBwaGFzZVxuICAgICAgICBpZiAoa2V5ID09IEtFWVMuVEFCKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5oYW5kbGVTZWFyY2goZXZ0KTtcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyYW5zZmVyIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgZnJvbSB0aGUgcmVuZGVyZWRcbiAgICogc2VsZWN0aW9uIHRvIHRoZSBzZWFyY2ggYm94LiBUaGlzIGFsbG93cyBmb3IgdGhlIHNlYXJjaCBib3ggdG8gYmUgdXNlZCBhc1xuICAgKiB0aGUgcHJpbWFyeSBmb2N1cyBpbnN0ZWFkIG9mIHRoZSBzZWxlY3Rpb24gY29udGFpbmVyLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgU2VhcmNoLnByb3RvdHlwZS5fdHJhbnNmZXJUYWJJbmRleCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB0aGlzLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCB0aGlzLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnKSk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXIudGV4dCk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNlYXJjaEhhZEZvY3VzID0gdGhpcy4kc2VhcmNoWzBdID09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInLCAnJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcblxuICAgIHRoaXMucmVzaXplU2VhcmNoKCk7XG4gICAgaWYgKHNlYXJjaEhhZEZvY3VzKSB7XG4gICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZXNpemVTZWFyY2goKTtcblxuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHNlYXJjaC52YWwoKTtcblxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcbiAgICAgICAgdGVybTogaW5wdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2UgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBpdGVtKSB7XG4gICAgdGhpcy50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgIGRhdGE6IGl0ZW1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC52YWwoaXRlbS50ZXh0KTtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVzaXplU2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgJzI1cHgnKTtcblxuICAgIHZhciB3aWR0aCA9ICcxMDAlJztcblxuICAgIGlmICh0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInKSA9PT0gJycpIHtcbiAgICAgIHZhciBtaW5pbXVtV2lkdGggPSB0aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoICsgMTtcblxuICAgICAgd2lkdGggPSAobWluaW11bVdpZHRoICogMC43NSkgKyAnZW0nO1xuICAgIH1cblxuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgd2lkdGgpO1xuICB9O1xuXG4gIHJldHVybiBTZWFyY2g7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdGlvbkNTUyAoKSB7IH1cblxuICBTZWxlY3Rpb25DU1MucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIHNlbGVjdGlvbkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQ3NzQ2xhc3MnKSB8fCAnJztcblxuICAgIGlmIChzZWxlY3Rpb25Dc3NDbGFzcy5pbmRleE9mKCc6YWxsOicpICE9PSAtMSkge1xuICAgICAgc2VsZWN0aW9uQ3NzQ2xhc3MgPSBzZWxlY3Rpb25Dc3NDbGFzcy5yZXBsYWNlKCc6YWxsOicsICcnKTtcblxuICAgICAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3Nlcygkc2VsZWN0aW9uWzBdLCB0aGlzLiRlbGVtZW50WzBdKTtcbiAgICB9XG5cbiAgICAkc2VsZWN0aW9uLmFkZENsYXNzKHNlbGVjdGlvbkNzc0NsYXNzKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3Rpb25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5JyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBFdmVudFJlbGF5ICgpIHsgfVxuXG4gIEV2ZW50UmVsYXkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJlbGF5RXZlbnRzID0gW1xuICAgICAgJ29wZW4nLCAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnLCAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JywgJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnLCAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJywgJ2NsZWFyaW5nJ1xuICAgIF07XG5cbiAgICB2YXIgcHJldmVudGFibGVFdmVudHMgPSBbXG4gICAgICAnb3BlbmluZycsICdjbG9zaW5nJywgJ3NlbGVjdGluZycsICd1bnNlbGVjdGluZycsICdjbGVhcmluZydcbiAgICBdO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIC8vIElnbm9yZSBldmVudHMgdGhhdCBzaG91bGQgbm90IGJlIHJlbGF5ZWRcbiAgICAgIGlmIChyZWxheUV2ZW50cy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIHNob3VsZCBhbHdheXMgYmUgYW4gb2JqZWN0XG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIC8vIEdlbmVyYXRlIHRoZSBqUXVlcnkgZXZlbnQgZm9yIHRoZSBTZWxlY3QyIGV2ZW50XG4gICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnc2VsZWN0MjonICsgbmFtZSwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcihldnQpO1xuXG4gICAgICAvLyBPbmx5IGhhbmRsZSBwcmV2ZW50YWJsZSBldmVudHMgaWYgaXQgd2FzIG9uZVxuICAgICAgaWYgKHByZXZlbnRhYmxlRXZlbnRzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gRXZlbnRSZWxheTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvdHJhbnNsYXRpb24nLFtcbiAgJ2pxdWVyeScsXG4gICdyZXF1aXJlJ1xuXSwgZnVuY3Rpb24gKCQsIHJlcXVpcmUpIHtcbiAgZnVuY3Rpb24gVHJhbnNsYXRpb24gKGRpY3QpIHtcbiAgICB0aGlzLmRpY3QgPSBkaWN0IHx8IHt9O1xuICB9XG5cbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5kaWN0O1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuZGljdFtrZXldO1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiAodHJhbnNsYXRpb24pIHtcbiAgICB0aGlzLmRpY3QgPSAkLmV4dGVuZCh7fSwgdHJhbnNsYXRpb24uYWxsKCksIHRoaXMuZGljdCk7XG4gIH07XG5cbiAgLy8gU3RhdGljIGZ1bmN0aW9uc1xuXG4gIFRyYW5zbGF0aW9uLl9jYWNoZSA9IHt9O1xuXG4gIFRyYW5zbGF0aW9uLmxvYWRQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgICBpZiAoIShwYXRoIGluIFRyYW5zbGF0aW9uLl9jYWNoZSkpIHtcbiAgICAgIHZhciB0cmFuc2xhdGlvbnMgPSByZXF1aXJlKHBhdGgpO1xuXG4gICAgICBUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0gPSB0cmFuc2xhdGlvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUcmFuc2xhdGlvbihUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0pO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2xhdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGlhY3JpdGljcycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBkaWFjcml0aWNzID0ge1xuICAgICdcXHUyNEI2JzogJ0EnLFxuICAgICdcXHVGRjIxJzogJ0EnLFxuICAgICdcXHUwMEMwJzogJ0EnLFxuICAgICdcXHUwMEMxJzogJ0EnLFxuICAgICdcXHUwMEMyJzogJ0EnLFxuICAgICdcXHUxRUE2JzogJ0EnLFxuICAgICdcXHUxRUE0JzogJ0EnLFxuICAgICdcXHUxRUFBJzogJ0EnLFxuICAgICdcXHUxRUE4JzogJ0EnLFxuICAgICdcXHUwMEMzJzogJ0EnLFxuICAgICdcXHUwMTAwJzogJ0EnLFxuICAgICdcXHUwMTAyJzogJ0EnLFxuICAgICdcXHUxRUIwJzogJ0EnLFxuICAgICdcXHUxRUFFJzogJ0EnLFxuICAgICdcXHUxRUI0JzogJ0EnLFxuICAgICdcXHUxRUIyJzogJ0EnLFxuICAgICdcXHUwMjI2JzogJ0EnLFxuICAgICdcXHUwMUUwJzogJ0EnLFxuICAgICdcXHUwMEM0JzogJ0EnLFxuICAgICdcXHUwMURFJzogJ0EnLFxuICAgICdcXHUxRUEyJzogJ0EnLFxuICAgICdcXHUwMEM1JzogJ0EnLFxuICAgICdcXHUwMUZBJzogJ0EnLFxuICAgICdcXHUwMUNEJzogJ0EnLFxuICAgICdcXHUwMjAwJzogJ0EnLFxuICAgICdcXHUwMjAyJzogJ0EnLFxuICAgICdcXHUxRUEwJzogJ0EnLFxuICAgICdcXHUxRUFDJzogJ0EnLFxuICAgICdcXHUxRUI2JzogJ0EnLFxuICAgICdcXHUxRTAwJzogJ0EnLFxuICAgICdcXHUwMTA0JzogJ0EnLFxuICAgICdcXHUwMjNBJzogJ0EnLFxuICAgICdcXHUyQzZGJzogJ0EnLFxuICAgICdcXHVBNzMyJzogJ0FBJyxcbiAgICAnXFx1MDBDNic6ICdBRScsXG4gICAgJ1xcdTAxRkMnOiAnQUUnLFxuICAgICdcXHUwMUUyJzogJ0FFJyxcbiAgICAnXFx1QTczNCc6ICdBTycsXG4gICAgJ1xcdUE3MzYnOiAnQVUnLFxuICAgICdcXHVBNzM4JzogJ0FWJyxcbiAgICAnXFx1QTczQSc6ICdBVicsXG4gICAgJ1xcdUE3M0MnOiAnQVknLFxuICAgICdcXHUyNEI3JzogJ0InLFxuICAgICdcXHVGRjIyJzogJ0InLFxuICAgICdcXHUxRTAyJzogJ0InLFxuICAgICdcXHUxRTA0JzogJ0InLFxuICAgICdcXHUxRTA2JzogJ0InLFxuICAgICdcXHUwMjQzJzogJ0InLFxuICAgICdcXHUwMTgyJzogJ0InLFxuICAgICdcXHUwMTgxJzogJ0InLFxuICAgICdcXHUyNEI4JzogJ0MnLFxuICAgICdcXHVGRjIzJzogJ0MnLFxuICAgICdcXHUwMTA2JzogJ0MnLFxuICAgICdcXHUwMTA4JzogJ0MnLFxuICAgICdcXHUwMTBBJzogJ0MnLFxuICAgICdcXHUwMTBDJzogJ0MnLFxuICAgICdcXHUwMEM3JzogJ0MnLFxuICAgICdcXHUxRTA4JzogJ0MnLFxuICAgICdcXHUwMTg3JzogJ0MnLFxuICAgICdcXHUwMjNCJzogJ0MnLFxuICAgICdcXHVBNzNFJzogJ0MnLFxuICAgICdcXHUyNEI5JzogJ0QnLFxuICAgICdcXHVGRjI0JzogJ0QnLFxuICAgICdcXHUxRTBBJzogJ0QnLFxuICAgICdcXHUwMTBFJzogJ0QnLFxuICAgICdcXHUxRTBDJzogJ0QnLFxuICAgICdcXHUxRTEwJzogJ0QnLFxuICAgICdcXHUxRTEyJzogJ0QnLFxuICAgICdcXHUxRTBFJzogJ0QnLFxuICAgICdcXHUwMTEwJzogJ0QnLFxuICAgICdcXHUwMThCJzogJ0QnLFxuICAgICdcXHUwMThBJzogJ0QnLFxuICAgICdcXHUwMTg5JzogJ0QnLFxuICAgICdcXHVBNzc5JzogJ0QnLFxuICAgICdcXHUwMUYxJzogJ0RaJyxcbiAgICAnXFx1MDFDNCc6ICdEWicsXG4gICAgJ1xcdTAxRjInOiAnRHonLFxuICAgICdcXHUwMUM1JzogJ0R6JyxcbiAgICAnXFx1MjRCQSc6ICdFJyxcbiAgICAnXFx1RkYyNSc6ICdFJyxcbiAgICAnXFx1MDBDOCc6ICdFJyxcbiAgICAnXFx1MDBDOSc6ICdFJyxcbiAgICAnXFx1MDBDQSc6ICdFJyxcbiAgICAnXFx1MUVDMCc6ICdFJyxcbiAgICAnXFx1MUVCRSc6ICdFJyxcbiAgICAnXFx1MUVDNCc6ICdFJyxcbiAgICAnXFx1MUVDMic6ICdFJyxcbiAgICAnXFx1MUVCQyc6ICdFJyxcbiAgICAnXFx1MDExMic6ICdFJyxcbiAgICAnXFx1MUUxNCc6ICdFJyxcbiAgICAnXFx1MUUxNic6ICdFJyxcbiAgICAnXFx1MDExNCc6ICdFJyxcbiAgICAnXFx1MDExNic6ICdFJyxcbiAgICAnXFx1MDBDQic6ICdFJyxcbiAgICAnXFx1MUVCQSc6ICdFJyxcbiAgICAnXFx1MDExQSc6ICdFJyxcbiAgICAnXFx1MDIwNCc6ICdFJyxcbiAgICAnXFx1MDIwNic6ICdFJyxcbiAgICAnXFx1MUVCOCc6ICdFJyxcbiAgICAnXFx1MUVDNic6ICdFJyxcbiAgICAnXFx1MDIyOCc6ICdFJyxcbiAgICAnXFx1MUUxQyc6ICdFJyxcbiAgICAnXFx1MDExOCc6ICdFJyxcbiAgICAnXFx1MUUxOCc6ICdFJyxcbiAgICAnXFx1MUUxQSc6ICdFJyxcbiAgICAnXFx1MDE5MCc6ICdFJyxcbiAgICAnXFx1MDE4RSc6ICdFJyxcbiAgICAnXFx1MjRCQic6ICdGJyxcbiAgICAnXFx1RkYyNic6ICdGJyxcbiAgICAnXFx1MUUxRSc6ICdGJyxcbiAgICAnXFx1MDE5MSc6ICdGJyxcbiAgICAnXFx1QTc3Qic6ICdGJyxcbiAgICAnXFx1MjRCQyc6ICdHJyxcbiAgICAnXFx1RkYyNyc6ICdHJyxcbiAgICAnXFx1MDFGNCc6ICdHJyxcbiAgICAnXFx1MDExQyc6ICdHJyxcbiAgICAnXFx1MUUyMCc6ICdHJyxcbiAgICAnXFx1MDExRSc6ICdHJyxcbiAgICAnXFx1MDEyMCc6ICdHJyxcbiAgICAnXFx1MDFFNic6ICdHJyxcbiAgICAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDFFNCc6ICdHJyxcbiAgICAnXFx1MDE5Myc6ICdHJyxcbiAgICAnXFx1QTdBMCc6ICdHJyxcbiAgICAnXFx1QTc3RCc6ICdHJyxcbiAgICAnXFx1QTc3RSc6ICdHJyxcbiAgICAnXFx1MjRCRCc6ICdIJyxcbiAgICAnXFx1RkYyOCc6ICdIJyxcbiAgICAnXFx1MDEyNCc6ICdIJyxcbiAgICAnXFx1MUUyMic6ICdIJyxcbiAgICAnXFx1MUUyNic6ICdIJyxcbiAgICAnXFx1MDIxRSc6ICdIJyxcbiAgICAnXFx1MUUyNCc6ICdIJyxcbiAgICAnXFx1MUUyOCc6ICdIJyxcbiAgICAnXFx1MUUyQSc6ICdIJyxcbiAgICAnXFx1MDEyNic6ICdIJyxcbiAgICAnXFx1MkM2Nyc6ICdIJyxcbiAgICAnXFx1MkM3NSc6ICdIJyxcbiAgICAnXFx1QTc4RCc6ICdIJyxcbiAgICAnXFx1MjRCRSc6ICdJJyxcbiAgICAnXFx1RkYyOSc6ICdJJyxcbiAgICAnXFx1MDBDQyc6ICdJJyxcbiAgICAnXFx1MDBDRCc6ICdJJyxcbiAgICAnXFx1MDBDRSc6ICdJJyxcbiAgICAnXFx1MDEyOCc6ICdJJyxcbiAgICAnXFx1MDEyQSc6ICdJJyxcbiAgICAnXFx1MDEyQyc6ICdJJyxcbiAgICAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDBDRic6ICdJJyxcbiAgICAnXFx1MUUyRSc6ICdJJyxcbiAgICAnXFx1MUVDOCc6ICdJJyxcbiAgICAnXFx1MDFDRic6ICdJJyxcbiAgICAnXFx1MDIwOCc6ICdJJyxcbiAgICAnXFx1MDIwQSc6ICdJJyxcbiAgICAnXFx1MUVDQSc6ICdJJyxcbiAgICAnXFx1MDEyRSc6ICdJJyxcbiAgICAnXFx1MUUyQyc6ICdJJyxcbiAgICAnXFx1MDE5Nyc6ICdJJyxcbiAgICAnXFx1MjRCRic6ICdKJyxcbiAgICAnXFx1RkYyQSc6ICdKJyxcbiAgICAnXFx1MDEzNCc6ICdKJyxcbiAgICAnXFx1MDI0OCc6ICdKJyxcbiAgICAnXFx1MjRDMCc6ICdLJyxcbiAgICAnXFx1RkYyQic6ICdLJyxcbiAgICAnXFx1MUUzMCc6ICdLJyxcbiAgICAnXFx1MDFFOCc6ICdLJyxcbiAgICAnXFx1MUUzMic6ICdLJyxcbiAgICAnXFx1MDEzNic6ICdLJyxcbiAgICAnXFx1MUUzNCc6ICdLJyxcbiAgICAnXFx1MDE5OCc6ICdLJyxcbiAgICAnXFx1MkM2OSc6ICdLJyxcbiAgICAnXFx1QTc0MCc6ICdLJyxcbiAgICAnXFx1QTc0Mic6ICdLJyxcbiAgICAnXFx1QTc0NCc6ICdLJyxcbiAgICAnXFx1QTdBMic6ICdLJyxcbiAgICAnXFx1MjRDMSc6ICdMJyxcbiAgICAnXFx1RkYyQyc6ICdMJyxcbiAgICAnXFx1MDEzRic6ICdMJyxcbiAgICAnXFx1MDEzOSc6ICdMJyxcbiAgICAnXFx1MDEzRCc6ICdMJyxcbiAgICAnXFx1MUUzNic6ICdMJyxcbiAgICAnXFx1MUUzOCc6ICdMJyxcbiAgICAnXFx1MDEzQic6ICdMJyxcbiAgICAnXFx1MUUzQyc6ICdMJyxcbiAgICAnXFx1MUUzQSc6ICdMJyxcbiAgICAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDIzRCc6ICdMJyxcbiAgICAnXFx1MkM2Mic6ICdMJyxcbiAgICAnXFx1MkM2MCc6ICdMJyxcbiAgICAnXFx1QTc0OCc6ICdMJyxcbiAgICAnXFx1QTc0Nic6ICdMJyxcbiAgICAnXFx1QTc4MCc6ICdMJyxcbiAgICAnXFx1MDFDNyc6ICdMSicsXG4gICAgJ1xcdTAxQzgnOiAnTGonLFxuICAgICdcXHUyNEMyJzogJ00nLFxuICAgICdcXHVGRjJEJzogJ00nLFxuICAgICdcXHUxRTNFJzogJ00nLFxuICAgICdcXHUxRTQwJzogJ00nLFxuICAgICdcXHUxRTQyJzogJ00nLFxuICAgICdcXHUyQzZFJzogJ00nLFxuICAgICdcXHUwMTlDJzogJ00nLFxuICAgICdcXHUyNEMzJzogJ04nLFxuICAgICdcXHVGRjJFJzogJ04nLFxuICAgICdcXHUwMUY4JzogJ04nLFxuICAgICdcXHUwMTQzJzogJ04nLFxuICAgICdcXHUwMEQxJzogJ04nLFxuICAgICdcXHUxRTQ0JzogJ04nLFxuICAgICdcXHUwMTQ3JzogJ04nLFxuICAgICdcXHUxRTQ2JzogJ04nLFxuICAgICdcXHUwMTQ1JzogJ04nLFxuICAgICdcXHUxRTRBJzogJ04nLFxuICAgICdcXHUxRTQ4JzogJ04nLFxuICAgICdcXHUwMjIwJzogJ04nLFxuICAgICdcXHUwMTlEJzogJ04nLFxuICAgICdcXHVBNzkwJzogJ04nLFxuICAgICdcXHVBN0E0JzogJ04nLFxuICAgICdcXHUwMUNBJzogJ05KJyxcbiAgICAnXFx1MDFDQic6ICdOaicsXG4gICAgJ1xcdTI0QzQnOiAnTycsXG4gICAgJ1xcdUZGMkYnOiAnTycsXG4gICAgJ1xcdTAwRDInOiAnTycsXG4gICAgJ1xcdTAwRDMnOiAnTycsXG4gICAgJ1xcdTAwRDQnOiAnTycsXG4gICAgJ1xcdTFFRDInOiAnTycsXG4gICAgJ1xcdTFFRDAnOiAnTycsXG4gICAgJ1xcdTFFRDYnOiAnTycsXG4gICAgJ1xcdTFFRDQnOiAnTycsXG4gICAgJ1xcdTAwRDUnOiAnTycsXG4gICAgJ1xcdTFFNEMnOiAnTycsXG4gICAgJ1xcdTAyMkMnOiAnTycsXG4gICAgJ1xcdTFFNEUnOiAnTycsXG4gICAgJ1xcdTAxNEMnOiAnTycsXG4gICAgJ1xcdTFFNTAnOiAnTycsXG4gICAgJ1xcdTFFNTInOiAnTycsXG4gICAgJ1xcdTAxNEUnOiAnTycsXG4gICAgJ1xcdTAyMkUnOiAnTycsXG4gICAgJ1xcdTAyMzAnOiAnTycsXG4gICAgJ1xcdTAwRDYnOiAnTycsXG4gICAgJ1xcdTAyMkEnOiAnTycsXG4gICAgJ1xcdTFFQ0UnOiAnTycsXG4gICAgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxRDEnOiAnTycsXG4gICAgJ1xcdTAyMEMnOiAnTycsXG4gICAgJ1xcdTAyMEUnOiAnTycsXG4gICAgJ1xcdTAxQTAnOiAnTycsXG4gICAgJ1xcdTFFREMnOiAnTycsXG4gICAgJ1xcdTFFREEnOiAnTycsXG4gICAgJ1xcdTFFRTAnOiAnTycsXG4gICAgJ1xcdTFFREUnOiAnTycsXG4gICAgJ1xcdTFFRTInOiAnTycsXG4gICAgJ1xcdTFFQ0MnOiAnTycsXG4gICAgJ1xcdTFFRDgnOiAnTycsXG4gICAgJ1xcdTAxRUEnOiAnTycsXG4gICAgJ1xcdTAxRUMnOiAnTycsXG4gICAgJ1xcdTAwRDgnOiAnTycsXG4gICAgJ1xcdTAxRkUnOiAnTycsXG4gICAgJ1xcdTAxODYnOiAnTycsXG4gICAgJ1xcdTAxOUYnOiAnTycsXG4gICAgJ1xcdUE3NEEnOiAnTycsXG4gICAgJ1xcdUE3NEMnOiAnTycsXG4gICAgJ1xcdTAxNTInOiAnT0UnLFxuICAgICdcXHUwMUEyJzogJ09JJyxcbiAgICAnXFx1QTc0RSc6ICdPTycsXG4gICAgJ1xcdTAyMjInOiAnT1UnLFxuICAgICdcXHUyNEM1JzogJ1AnLFxuICAgICdcXHVGRjMwJzogJ1AnLFxuICAgICdcXHUxRTU0JzogJ1AnLFxuICAgICdcXHUxRTU2JzogJ1AnLFxuICAgICdcXHUwMUE0JzogJ1AnLFxuICAgICdcXHUyQzYzJzogJ1AnLFxuICAgICdcXHVBNzUwJzogJ1AnLFxuICAgICdcXHVBNzUyJzogJ1AnLFxuICAgICdcXHVBNzU0JzogJ1AnLFxuICAgICdcXHUyNEM2JzogJ1EnLFxuICAgICdcXHVGRjMxJzogJ1EnLFxuICAgICdcXHVBNzU2JzogJ1EnLFxuICAgICdcXHVBNzU4JzogJ1EnLFxuICAgICdcXHUwMjRBJzogJ1EnLFxuICAgICdcXHUyNEM3JzogJ1InLFxuICAgICdcXHVGRjMyJzogJ1InLFxuICAgICdcXHUwMTU0JzogJ1InLFxuICAgICdcXHUxRTU4JzogJ1InLFxuICAgICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMjEwJzogJ1InLFxuICAgICdcXHUwMjEyJzogJ1InLFxuICAgICdcXHUxRTVBJzogJ1InLFxuICAgICdcXHUxRTVDJzogJ1InLFxuICAgICdcXHUwMTU2JzogJ1InLFxuICAgICdcXHUxRTVFJzogJ1InLFxuICAgICdcXHUwMjRDJzogJ1InLFxuICAgICdcXHUyQzY0JzogJ1InLFxuICAgICdcXHVBNzVBJzogJ1InLFxuICAgICdcXHVBN0E2JzogJ1InLFxuICAgICdcXHVBNzgyJzogJ1InLFxuICAgICdcXHUyNEM4JzogJ1MnLFxuICAgICdcXHVGRjMzJzogJ1MnLFxuICAgICdcXHUxRTlFJzogJ1MnLFxuICAgICdcXHUwMTVBJzogJ1MnLFxuICAgICdcXHUxRTY0JzogJ1MnLFxuICAgICdcXHUwMTVDJzogJ1MnLFxuICAgICdcXHUxRTYwJzogJ1MnLFxuICAgICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUxRTY2JzogJ1MnLFxuICAgICdcXHUxRTYyJzogJ1MnLFxuICAgICdcXHUxRTY4JzogJ1MnLFxuICAgICdcXHUwMjE4JzogJ1MnLFxuICAgICdcXHUwMTVFJzogJ1MnLFxuICAgICdcXHUyQzdFJzogJ1MnLFxuICAgICdcXHVBN0E4JzogJ1MnLFxuICAgICdcXHVBNzg0JzogJ1MnLFxuICAgICdcXHUyNEM5JzogJ1QnLFxuICAgICdcXHVGRjM0JzogJ1QnLFxuICAgICdcXHUxRTZBJzogJ1QnLFxuICAgICdcXHUwMTY0JzogJ1QnLFxuICAgICdcXHUxRTZDJzogJ1QnLFxuICAgICdcXHUwMjFBJzogJ1QnLFxuICAgICdcXHUwMTYyJzogJ1QnLFxuICAgICdcXHUxRTcwJzogJ1QnLFxuICAgICdcXHUxRTZFJzogJ1QnLFxuICAgICdcXHUwMTY2JzogJ1QnLFxuICAgICdcXHUwMUFDJzogJ1QnLFxuICAgICdcXHUwMUFFJzogJ1QnLFxuICAgICdcXHUwMjNFJzogJ1QnLFxuICAgICdcXHVBNzg2JzogJ1QnLFxuICAgICdcXHVBNzI4JzogJ1RaJyxcbiAgICAnXFx1MjRDQSc6ICdVJyxcbiAgICAnXFx1RkYzNSc6ICdVJyxcbiAgICAnXFx1MDBEOSc6ICdVJyxcbiAgICAnXFx1MDBEQSc6ICdVJyxcbiAgICAnXFx1MDBEQic6ICdVJyxcbiAgICAnXFx1MDE2OCc6ICdVJyxcbiAgICAnXFx1MUU3OCc6ICdVJyxcbiAgICAnXFx1MDE2QSc6ICdVJyxcbiAgICAnXFx1MUU3QSc6ICdVJyxcbiAgICAnXFx1MDE2Qyc6ICdVJyxcbiAgICAnXFx1MDBEQyc6ICdVJyxcbiAgICAnXFx1MDFEQic6ICdVJyxcbiAgICAnXFx1MDFENyc6ICdVJyxcbiAgICAnXFx1MDFENSc6ICdVJyxcbiAgICAnXFx1MDFEOSc6ICdVJyxcbiAgICAnXFx1MUVFNic6ICdVJyxcbiAgICAnXFx1MDE2RSc6ICdVJyxcbiAgICAnXFx1MDE3MCc6ICdVJyxcbiAgICAnXFx1MDFEMyc6ICdVJyxcbiAgICAnXFx1MDIxNCc6ICdVJyxcbiAgICAnXFx1MDIxNic6ICdVJyxcbiAgICAnXFx1MDFBRic6ICdVJyxcbiAgICAnXFx1MUVFQSc6ICdVJyxcbiAgICAnXFx1MUVFOCc6ICdVJyxcbiAgICAnXFx1MUVFRSc6ICdVJyxcbiAgICAnXFx1MUVFQyc6ICdVJyxcbiAgICAnXFx1MUVGMCc6ICdVJyxcbiAgICAnXFx1MUVFNCc6ICdVJyxcbiAgICAnXFx1MUU3Mic6ICdVJyxcbiAgICAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MUU3Nic6ICdVJyxcbiAgICAnXFx1MUU3NCc6ICdVJyxcbiAgICAnXFx1MDI0NCc6ICdVJyxcbiAgICAnXFx1MjRDQic6ICdWJyxcbiAgICAnXFx1RkYzNic6ICdWJyxcbiAgICAnXFx1MUU3Qyc6ICdWJyxcbiAgICAnXFx1MUU3RSc6ICdWJyxcbiAgICAnXFx1MDFCMic6ICdWJyxcbiAgICAnXFx1QTc1RSc6ICdWJyxcbiAgICAnXFx1MDI0NSc6ICdWJyxcbiAgICAnXFx1QTc2MCc6ICdWWScsXG4gICAgJ1xcdTI0Q0MnOiAnVycsXG4gICAgJ1xcdUZGMzcnOiAnVycsXG4gICAgJ1xcdTFFODAnOiAnVycsXG4gICAgJ1xcdTFFODInOiAnVycsXG4gICAgJ1xcdTAxNzQnOiAnVycsXG4gICAgJ1xcdTFFODYnOiAnVycsXG4gICAgJ1xcdTFFODQnOiAnVycsXG4gICAgJ1xcdTFFODgnOiAnVycsXG4gICAgJ1xcdTJDNzInOiAnVycsXG4gICAgJ1xcdTI0Q0QnOiAnWCcsXG4gICAgJ1xcdUZGMzgnOiAnWCcsXG4gICAgJ1xcdTFFOEEnOiAnWCcsXG4gICAgJ1xcdTFFOEMnOiAnWCcsXG4gICAgJ1xcdTI0Q0UnOiAnWScsXG4gICAgJ1xcdUZGMzknOiAnWScsXG4gICAgJ1xcdTFFRjInOiAnWScsXG4gICAgJ1xcdTAwREQnOiAnWScsXG4gICAgJ1xcdTAxNzYnOiAnWScsXG4gICAgJ1xcdTFFRjgnOiAnWScsXG4gICAgJ1xcdTAyMzInOiAnWScsXG4gICAgJ1xcdTFFOEUnOiAnWScsXG4gICAgJ1xcdTAxNzgnOiAnWScsXG4gICAgJ1xcdTFFRjYnOiAnWScsXG4gICAgJ1xcdTFFRjQnOiAnWScsXG4gICAgJ1xcdTAxQjMnOiAnWScsXG4gICAgJ1xcdTAyNEUnOiAnWScsXG4gICAgJ1xcdTFFRkUnOiAnWScsXG4gICAgJ1xcdTI0Q0YnOiAnWicsXG4gICAgJ1xcdUZGM0EnOiAnWicsXG4gICAgJ1xcdTAxNzknOiAnWicsXG4gICAgJ1xcdTFFOTAnOiAnWicsXG4gICAgJ1xcdTAxN0InOiAnWicsXG4gICAgJ1xcdTAxN0QnOiAnWicsXG4gICAgJ1xcdTFFOTInOiAnWicsXG4gICAgJ1xcdTFFOTQnOiAnWicsXG4gICAgJ1xcdTAxQjUnOiAnWicsXG4gICAgJ1xcdTAyMjQnOiAnWicsXG4gICAgJ1xcdTJDN0YnOiAnWicsXG4gICAgJ1xcdTJDNkInOiAnWicsXG4gICAgJ1xcdUE3NjInOiAnWicsXG4gICAgJ1xcdTI0RDAnOiAnYScsXG4gICAgJ1xcdUZGNDEnOiAnYScsXG4gICAgJ1xcdTFFOUEnOiAnYScsXG4gICAgJ1xcdTAwRTAnOiAnYScsXG4gICAgJ1xcdTAwRTEnOiAnYScsXG4gICAgJ1xcdTAwRTInOiAnYScsXG4gICAgJ1xcdTFFQTcnOiAnYScsXG4gICAgJ1xcdTFFQTUnOiAnYScsXG4gICAgJ1xcdTFFQUInOiAnYScsXG4gICAgJ1xcdTFFQTknOiAnYScsXG4gICAgJ1xcdTAwRTMnOiAnYScsXG4gICAgJ1xcdTAxMDEnOiAnYScsXG4gICAgJ1xcdTAxMDMnOiAnYScsXG4gICAgJ1xcdTFFQjEnOiAnYScsXG4gICAgJ1xcdTFFQUYnOiAnYScsXG4gICAgJ1xcdTFFQjUnOiAnYScsXG4gICAgJ1xcdTFFQjMnOiAnYScsXG4gICAgJ1xcdTAyMjcnOiAnYScsXG4gICAgJ1xcdTAxRTEnOiAnYScsXG4gICAgJ1xcdTAwRTQnOiAnYScsXG4gICAgJ1xcdTAxREYnOiAnYScsXG4gICAgJ1xcdTFFQTMnOiAnYScsXG4gICAgJ1xcdTAwRTUnOiAnYScsXG4gICAgJ1xcdTAxRkInOiAnYScsXG4gICAgJ1xcdTAxQ0UnOiAnYScsXG4gICAgJ1xcdTAyMDEnOiAnYScsXG4gICAgJ1xcdTAyMDMnOiAnYScsXG4gICAgJ1xcdTFFQTEnOiAnYScsXG4gICAgJ1xcdTFFQUQnOiAnYScsXG4gICAgJ1xcdTFFQjcnOiAnYScsXG4gICAgJ1xcdTFFMDEnOiAnYScsXG4gICAgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTJDNjUnOiAnYScsXG4gICAgJ1xcdTAyNTAnOiAnYScsXG4gICAgJ1xcdUE3MzMnOiAnYWEnLFxuICAgICdcXHUwMEU2JzogJ2FlJyxcbiAgICAnXFx1MDFGRCc6ICdhZScsXG4gICAgJ1xcdTAxRTMnOiAnYWUnLFxuICAgICdcXHVBNzM1JzogJ2FvJyxcbiAgICAnXFx1QTczNyc6ICdhdScsXG4gICAgJ1xcdUE3MzknOiAnYXYnLFxuICAgICdcXHVBNzNCJzogJ2F2JyxcbiAgICAnXFx1QTczRCc6ICdheScsXG4gICAgJ1xcdTI0RDEnOiAnYicsXG4gICAgJ1xcdUZGNDInOiAnYicsXG4gICAgJ1xcdTFFMDMnOiAnYicsXG4gICAgJ1xcdTFFMDUnOiAnYicsXG4gICAgJ1xcdTFFMDcnOiAnYicsXG4gICAgJ1xcdTAxODAnOiAnYicsXG4gICAgJ1xcdTAxODMnOiAnYicsXG4gICAgJ1xcdTAyNTMnOiAnYicsXG4gICAgJ1xcdTI0RDInOiAnYycsXG4gICAgJ1xcdUZGNDMnOiAnYycsXG4gICAgJ1xcdTAxMDcnOiAnYycsXG4gICAgJ1xcdTAxMDknOiAnYycsXG4gICAgJ1xcdTAxMEInOiAnYycsXG4gICAgJ1xcdTAxMEQnOiAnYycsXG4gICAgJ1xcdTAwRTcnOiAnYycsXG4gICAgJ1xcdTFFMDknOiAnYycsXG4gICAgJ1xcdTAxODgnOiAnYycsXG4gICAgJ1xcdTAyM0MnOiAnYycsXG4gICAgJ1xcdUE3M0YnOiAnYycsXG4gICAgJ1xcdTIxODQnOiAnYycsXG4gICAgJ1xcdTI0RDMnOiAnZCcsXG4gICAgJ1xcdUZGNDQnOiAnZCcsXG4gICAgJ1xcdTFFMEInOiAnZCcsXG4gICAgJ1xcdTAxMEYnOiAnZCcsXG4gICAgJ1xcdTFFMEQnOiAnZCcsXG4gICAgJ1xcdTFFMTEnOiAnZCcsXG4gICAgJ1xcdTFFMTMnOiAnZCcsXG4gICAgJ1xcdTFFMEYnOiAnZCcsXG4gICAgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxOEMnOiAnZCcsXG4gICAgJ1xcdTAyNTYnOiAnZCcsXG4gICAgJ1xcdTAyNTcnOiAnZCcsXG4gICAgJ1xcdUE3N0EnOiAnZCcsXG4gICAgJ1xcdTAxRjMnOiAnZHonLFxuICAgICdcXHUwMUM2JzogJ2R6JyxcbiAgICAnXFx1MjRENCc6ICdlJyxcbiAgICAnXFx1RkY0NSc6ICdlJyxcbiAgICAnXFx1MDBFOCc6ICdlJyxcbiAgICAnXFx1MDBFOSc6ICdlJyxcbiAgICAnXFx1MDBFQSc6ICdlJyxcbiAgICAnXFx1MUVDMSc6ICdlJyxcbiAgICAnXFx1MUVCRic6ICdlJyxcbiAgICAnXFx1MUVDNSc6ICdlJyxcbiAgICAnXFx1MUVDMyc6ICdlJyxcbiAgICAnXFx1MUVCRCc6ICdlJyxcbiAgICAnXFx1MDExMyc6ICdlJyxcbiAgICAnXFx1MUUxNSc6ICdlJyxcbiAgICAnXFx1MUUxNyc6ICdlJyxcbiAgICAnXFx1MDExNSc6ICdlJyxcbiAgICAnXFx1MDExNyc6ICdlJyxcbiAgICAnXFx1MDBFQic6ICdlJyxcbiAgICAnXFx1MUVCQic6ICdlJyxcbiAgICAnXFx1MDExQic6ICdlJyxcbiAgICAnXFx1MDIwNSc6ICdlJyxcbiAgICAnXFx1MDIwNyc6ICdlJyxcbiAgICAnXFx1MUVCOSc6ICdlJyxcbiAgICAnXFx1MUVDNyc6ICdlJyxcbiAgICAnXFx1MDIyOSc6ICdlJyxcbiAgICAnXFx1MUUxRCc6ICdlJyxcbiAgICAnXFx1MDExOSc6ICdlJyxcbiAgICAnXFx1MUUxOSc6ICdlJyxcbiAgICAnXFx1MUUxQic6ICdlJyxcbiAgICAnXFx1MDI0Nyc6ICdlJyxcbiAgICAnXFx1MDI1Qic6ICdlJyxcbiAgICAnXFx1MDFERCc6ICdlJyxcbiAgICAnXFx1MjRENSc6ICdmJyxcbiAgICAnXFx1RkY0Nic6ICdmJyxcbiAgICAnXFx1MUUxRic6ICdmJyxcbiAgICAnXFx1MDE5Mic6ICdmJyxcbiAgICAnXFx1QTc3Qyc6ICdmJyxcbiAgICAnXFx1MjRENic6ICdnJyxcbiAgICAnXFx1RkY0Nyc6ICdnJyxcbiAgICAnXFx1MDFGNSc6ICdnJyxcbiAgICAnXFx1MDExRCc6ICdnJyxcbiAgICAnXFx1MUUyMSc6ICdnJyxcbiAgICAnXFx1MDExRic6ICdnJyxcbiAgICAnXFx1MDEyMSc6ICdnJyxcbiAgICAnXFx1MDFFNyc6ICdnJyxcbiAgICAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDFFNSc6ICdnJyxcbiAgICAnXFx1MDI2MCc6ICdnJyxcbiAgICAnXFx1QTdBMSc6ICdnJyxcbiAgICAnXFx1MUQ3OSc6ICdnJyxcbiAgICAnXFx1QTc3Ric6ICdnJyxcbiAgICAnXFx1MjRENyc6ICdoJyxcbiAgICAnXFx1RkY0OCc6ICdoJyxcbiAgICAnXFx1MDEyNSc6ICdoJyxcbiAgICAnXFx1MUUyMyc6ICdoJyxcbiAgICAnXFx1MUUyNyc6ICdoJyxcbiAgICAnXFx1MDIxRic6ICdoJyxcbiAgICAnXFx1MUUyNSc6ICdoJyxcbiAgICAnXFx1MUUyOSc6ICdoJyxcbiAgICAnXFx1MUUyQic6ICdoJyxcbiAgICAnXFx1MUU5Nic6ICdoJyxcbiAgICAnXFx1MDEyNyc6ICdoJyxcbiAgICAnXFx1MkM2OCc6ICdoJyxcbiAgICAnXFx1MkM3Nic6ICdoJyxcbiAgICAnXFx1MDI2NSc6ICdoJyxcbiAgICAnXFx1MDE5NSc6ICdodicsXG4gICAgJ1xcdTI0RDgnOiAnaScsXG4gICAgJ1xcdUZGNDknOiAnaScsXG4gICAgJ1xcdTAwRUMnOiAnaScsXG4gICAgJ1xcdTAwRUQnOiAnaScsXG4gICAgJ1xcdTAwRUUnOiAnaScsXG4gICAgJ1xcdTAxMjknOiAnaScsXG4gICAgJ1xcdTAxMkInOiAnaScsXG4gICAgJ1xcdTAxMkQnOiAnaScsXG4gICAgJ1xcdTAwRUYnOiAnaScsXG4gICAgJ1xcdTFFMkYnOiAnaScsXG4gICAgJ1xcdTFFQzknOiAnaScsXG4gICAgJ1xcdTAxRDAnOiAnaScsXG4gICAgJ1xcdTAyMDknOiAnaScsXG4gICAgJ1xcdTAyMEInOiAnaScsXG4gICAgJ1xcdTFFQ0InOiAnaScsXG4gICAgJ1xcdTAxMkYnOiAnaScsXG4gICAgJ1xcdTFFMkQnOiAnaScsXG4gICAgJ1xcdTAyNjgnOiAnaScsXG4gICAgJ1xcdTAxMzEnOiAnaScsXG4gICAgJ1xcdTI0RDknOiAnaicsXG4gICAgJ1xcdUZGNEEnOiAnaicsXG4gICAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxRjAnOiAnaicsXG4gICAgJ1xcdTAyNDknOiAnaicsXG4gICAgJ1xcdTI0REEnOiAnaycsXG4gICAgJ1xcdUZGNEInOiAnaycsXG4gICAgJ1xcdTFFMzEnOiAnaycsXG4gICAgJ1xcdTAxRTknOiAnaycsXG4gICAgJ1xcdTFFMzMnOiAnaycsXG4gICAgJ1xcdTAxMzcnOiAnaycsXG4gICAgJ1xcdTFFMzUnOiAnaycsXG4gICAgJ1xcdTAxOTknOiAnaycsXG4gICAgJ1xcdTJDNkEnOiAnaycsXG4gICAgJ1xcdUE3NDEnOiAnaycsXG4gICAgJ1xcdUE3NDMnOiAnaycsXG4gICAgJ1xcdUE3NDUnOiAnaycsXG4gICAgJ1xcdUE3QTMnOiAnaycsXG4gICAgJ1xcdTI0REInOiAnbCcsXG4gICAgJ1xcdUZGNEMnOiAnbCcsXG4gICAgJ1xcdTAxNDAnOiAnbCcsXG4gICAgJ1xcdTAxM0EnOiAnbCcsXG4gICAgJ1xcdTAxM0UnOiAnbCcsXG4gICAgJ1xcdTFFMzcnOiAnbCcsXG4gICAgJ1xcdTFFMzknOiAnbCcsXG4gICAgJ1xcdTAxM0MnOiAnbCcsXG4gICAgJ1xcdTFFM0QnOiAnbCcsXG4gICAgJ1xcdTFFM0InOiAnbCcsXG4gICAgJ1xcdTAxN0YnOiAnbCcsXG4gICAgJ1xcdTAxNDInOiAnbCcsXG4gICAgJ1xcdTAxOUEnOiAnbCcsXG4gICAgJ1xcdTAyNkInOiAnbCcsXG4gICAgJ1xcdTJDNjEnOiAnbCcsXG4gICAgJ1xcdUE3NDknOiAnbCcsXG4gICAgJ1xcdUE3ODEnOiAnbCcsXG4gICAgJ1xcdUE3NDcnOiAnbCcsXG4gICAgJ1xcdTAxQzknOiAnbGonLFxuICAgICdcXHUyNERDJzogJ20nLFxuICAgICdcXHVGRjREJzogJ20nLFxuICAgICdcXHUxRTNGJzogJ20nLFxuICAgICdcXHUxRTQxJzogJ20nLFxuICAgICdcXHUxRTQzJzogJ20nLFxuICAgICdcXHUwMjcxJzogJ20nLFxuICAgICdcXHUwMjZGJzogJ20nLFxuICAgICdcXHUyNEREJzogJ24nLFxuICAgICdcXHVGRjRFJzogJ24nLFxuICAgICdcXHUwMUY5JzogJ24nLFxuICAgICdcXHUwMTQ0JzogJ24nLFxuICAgICdcXHUwMEYxJzogJ24nLFxuICAgICdcXHUxRTQ1JzogJ24nLFxuICAgICdcXHUwMTQ4JzogJ24nLFxuICAgICdcXHUxRTQ3JzogJ24nLFxuICAgICdcXHUwMTQ2JzogJ24nLFxuICAgICdcXHUxRTRCJzogJ24nLFxuICAgICdcXHUxRTQ5JzogJ24nLFxuICAgICdcXHUwMTlFJzogJ24nLFxuICAgICdcXHUwMjcyJzogJ24nLFxuICAgICdcXHUwMTQ5JzogJ24nLFxuICAgICdcXHVBNzkxJzogJ24nLFxuICAgICdcXHVBN0E1JzogJ24nLFxuICAgICdcXHUwMUNDJzogJ25qJyxcbiAgICAnXFx1MjRERSc6ICdvJyxcbiAgICAnXFx1RkY0Ric6ICdvJyxcbiAgICAnXFx1MDBGMic6ICdvJyxcbiAgICAnXFx1MDBGMyc6ICdvJyxcbiAgICAnXFx1MDBGNCc6ICdvJyxcbiAgICAnXFx1MUVEMyc6ICdvJyxcbiAgICAnXFx1MUVEMSc6ICdvJyxcbiAgICAnXFx1MUVENyc6ICdvJyxcbiAgICAnXFx1MUVENSc6ICdvJyxcbiAgICAnXFx1MDBGNSc6ICdvJyxcbiAgICAnXFx1MUU0RCc6ICdvJyxcbiAgICAnXFx1MDIyRCc6ICdvJyxcbiAgICAnXFx1MUU0Ric6ICdvJyxcbiAgICAnXFx1MDE0RCc6ICdvJyxcbiAgICAnXFx1MUU1MSc6ICdvJyxcbiAgICAnXFx1MUU1Myc6ICdvJyxcbiAgICAnXFx1MDE0Ric6ICdvJyxcbiAgICAnXFx1MDIyRic6ICdvJyxcbiAgICAnXFx1MDIzMSc6ICdvJyxcbiAgICAnXFx1MDBGNic6ICdvJyxcbiAgICAnXFx1MDIyQic6ICdvJyxcbiAgICAnXFx1MUVDRic6ICdvJyxcbiAgICAnXFx1MDE1MSc6ICdvJyxcbiAgICAnXFx1MDFEMic6ICdvJyxcbiAgICAnXFx1MDIwRCc6ICdvJyxcbiAgICAnXFx1MDIwRic6ICdvJyxcbiAgICAnXFx1MDFBMSc6ICdvJyxcbiAgICAnXFx1MUVERCc6ICdvJyxcbiAgICAnXFx1MUVEQic6ICdvJyxcbiAgICAnXFx1MUVFMSc6ICdvJyxcbiAgICAnXFx1MUVERic6ICdvJyxcbiAgICAnXFx1MUVFMyc6ICdvJyxcbiAgICAnXFx1MUVDRCc6ICdvJyxcbiAgICAnXFx1MUVEOSc6ICdvJyxcbiAgICAnXFx1MDFFQic6ICdvJyxcbiAgICAnXFx1MDFFRCc6ICdvJyxcbiAgICAnXFx1MDBGOCc6ICdvJyxcbiAgICAnXFx1MDFGRic6ICdvJyxcbiAgICAnXFx1MDI1NCc6ICdvJyxcbiAgICAnXFx1QTc0Qic6ICdvJyxcbiAgICAnXFx1QTc0RCc6ICdvJyxcbiAgICAnXFx1MDI3NSc6ICdvJyxcbiAgICAnXFx1MDE1Myc6ICdvZScsXG4gICAgJ1xcdTAxQTMnOiAnb2knLFxuICAgICdcXHUwMjIzJzogJ291JyxcbiAgICAnXFx1QTc0Ric6ICdvbycsXG4gICAgJ1xcdTI0REYnOiAncCcsXG4gICAgJ1xcdUZGNTAnOiAncCcsXG4gICAgJ1xcdTFFNTUnOiAncCcsXG4gICAgJ1xcdTFFNTcnOiAncCcsXG4gICAgJ1xcdTAxQTUnOiAncCcsXG4gICAgJ1xcdTFEN0QnOiAncCcsXG4gICAgJ1xcdUE3NTEnOiAncCcsXG4gICAgJ1xcdUE3NTMnOiAncCcsXG4gICAgJ1xcdUE3NTUnOiAncCcsXG4gICAgJ1xcdTI0RTAnOiAncScsXG4gICAgJ1xcdUZGNTEnOiAncScsXG4gICAgJ1xcdTAyNEInOiAncScsXG4gICAgJ1xcdUE3NTcnOiAncScsXG4gICAgJ1xcdUE3NTknOiAncScsXG4gICAgJ1xcdTI0RTEnOiAncicsXG4gICAgJ1xcdUZGNTInOiAncicsXG4gICAgJ1xcdTAxNTUnOiAncicsXG4gICAgJ1xcdTFFNTknOiAncicsXG4gICAgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAyMTEnOiAncicsXG4gICAgJ1xcdTAyMTMnOiAncicsXG4gICAgJ1xcdTFFNUInOiAncicsXG4gICAgJ1xcdTFFNUQnOiAncicsXG4gICAgJ1xcdTAxNTcnOiAncicsXG4gICAgJ1xcdTFFNUYnOiAncicsXG4gICAgJ1xcdTAyNEQnOiAncicsXG4gICAgJ1xcdTAyN0QnOiAncicsXG4gICAgJ1xcdUE3NUInOiAncicsXG4gICAgJ1xcdUE3QTcnOiAncicsXG4gICAgJ1xcdUE3ODMnOiAncicsXG4gICAgJ1xcdTI0RTInOiAncycsXG4gICAgJ1xcdUZGNTMnOiAncycsXG4gICAgJ1xcdTAwREYnOiAncycsXG4gICAgJ1xcdTAxNUInOiAncycsXG4gICAgJ1xcdTFFNjUnOiAncycsXG4gICAgJ1xcdTAxNUQnOiAncycsXG4gICAgJ1xcdTFFNjEnOiAncycsXG4gICAgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTFFNjcnOiAncycsXG4gICAgJ1xcdTFFNjMnOiAncycsXG4gICAgJ1xcdTFFNjknOiAncycsXG4gICAgJ1xcdTAyMTknOiAncycsXG4gICAgJ1xcdTAxNUYnOiAncycsXG4gICAgJ1xcdTAyM0YnOiAncycsXG4gICAgJ1xcdUE3QTknOiAncycsXG4gICAgJ1xcdUE3ODUnOiAncycsXG4gICAgJ1xcdTFFOUInOiAncycsXG4gICAgJ1xcdTI0RTMnOiAndCcsXG4gICAgJ1xcdUZGNTQnOiAndCcsXG4gICAgJ1xcdTFFNkInOiAndCcsXG4gICAgJ1xcdTFFOTcnOiAndCcsXG4gICAgJ1xcdTAxNjUnOiAndCcsXG4gICAgJ1xcdTFFNkQnOiAndCcsXG4gICAgJ1xcdTAyMUInOiAndCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsXG4gICAgJ1xcdTFFNzEnOiAndCcsXG4gICAgJ1xcdTFFNkYnOiAndCcsXG4gICAgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxQUQnOiAndCcsXG4gICAgJ1xcdTAyODgnOiAndCcsXG4gICAgJ1xcdTJDNjYnOiAndCcsXG4gICAgJ1xcdUE3ODcnOiAndCcsXG4gICAgJ1xcdUE3MjknOiAndHonLFxuICAgICdcXHUyNEU0JzogJ3UnLFxuICAgICdcXHVGRjU1JzogJ3UnLFxuICAgICdcXHUwMEY5JzogJ3UnLFxuICAgICdcXHUwMEZBJzogJ3UnLFxuICAgICdcXHUwMEZCJzogJ3UnLFxuICAgICdcXHUwMTY5JzogJ3UnLFxuICAgICdcXHUxRTc5JzogJ3UnLFxuICAgICdcXHUwMTZCJzogJ3UnLFxuICAgICdcXHUxRTdCJzogJ3UnLFxuICAgICdcXHUwMTZEJzogJ3UnLFxuICAgICdcXHUwMEZDJzogJ3UnLFxuICAgICdcXHUwMURDJzogJ3UnLFxuICAgICdcXHUwMUQ4JzogJ3UnLFxuICAgICdcXHUwMUQ2JzogJ3UnLFxuICAgICdcXHUwMURBJzogJ3UnLFxuICAgICdcXHUxRUU3JzogJ3UnLFxuICAgICdcXHUwMTZGJzogJ3UnLFxuICAgICdcXHUwMTcxJzogJ3UnLFxuICAgICdcXHUwMUQ0JzogJ3UnLFxuICAgICdcXHUwMjE1JzogJ3UnLFxuICAgICdcXHUwMjE3JzogJ3UnLFxuICAgICdcXHUwMUIwJzogJ3UnLFxuICAgICdcXHUxRUVCJzogJ3UnLFxuICAgICdcXHUxRUU5JzogJ3UnLFxuICAgICdcXHUxRUVGJzogJ3UnLFxuICAgICdcXHUxRUVEJzogJ3UnLFxuICAgICdcXHUxRUYxJzogJ3UnLFxuICAgICdcXHUxRUU1JzogJ3UnLFxuICAgICdcXHUxRTczJzogJ3UnLFxuICAgICdcXHUwMTczJzogJ3UnLFxuICAgICdcXHUxRTc3JzogJ3UnLFxuICAgICdcXHUxRTc1JzogJ3UnLFxuICAgICdcXHUwMjg5JzogJ3UnLFxuICAgICdcXHUyNEU1JzogJ3YnLFxuICAgICdcXHVGRjU2JzogJ3YnLFxuICAgICdcXHUxRTdEJzogJ3YnLFxuICAgICdcXHUxRTdGJzogJ3YnLFxuICAgICdcXHUwMjhCJzogJ3YnLFxuICAgICdcXHVBNzVGJzogJ3YnLFxuICAgICdcXHUwMjhDJzogJ3YnLFxuICAgICdcXHVBNzYxJzogJ3Z5JyxcbiAgICAnXFx1MjRFNic6ICd3JyxcbiAgICAnXFx1RkY1Nyc6ICd3JyxcbiAgICAnXFx1MUU4MSc6ICd3JyxcbiAgICAnXFx1MUU4Myc6ICd3JyxcbiAgICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MUU4Nyc6ICd3JyxcbiAgICAnXFx1MUU4NSc6ICd3JyxcbiAgICAnXFx1MUU5OCc6ICd3JyxcbiAgICAnXFx1MUU4OSc6ICd3JyxcbiAgICAnXFx1MkM3Myc6ICd3JyxcbiAgICAnXFx1MjRFNyc6ICd4JyxcbiAgICAnXFx1RkY1OCc6ICd4JyxcbiAgICAnXFx1MUU4Qic6ICd4JyxcbiAgICAnXFx1MUU4RCc6ICd4JyxcbiAgICAnXFx1MjRFOCc6ICd5JyxcbiAgICAnXFx1RkY1OSc6ICd5JyxcbiAgICAnXFx1MUVGMyc6ICd5JyxcbiAgICAnXFx1MDBGRCc6ICd5JyxcbiAgICAnXFx1MDE3Nyc6ICd5JyxcbiAgICAnXFx1MUVGOSc6ICd5JyxcbiAgICAnXFx1MDIzMyc6ICd5JyxcbiAgICAnXFx1MUU4Ric6ICd5JyxcbiAgICAnXFx1MDBGRic6ICd5JyxcbiAgICAnXFx1MUVGNyc6ICd5JyxcbiAgICAnXFx1MUU5OSc6ICd5JyxcbiAgICAnXFx1MUVGNSc6ICd5JyxcbiAgICAnXFx1MDFCNCc6ICd5JyxcbiAgICAnXFx1MDI0Ric6ICd5JyxcbiAgICAnXFx1MUVGRic6ICd5JyxcbiAgICAnXFx1MjRFOSc6ICd6JyxcbiAgICAnXFx1RkY1QSc6ICd6JyxcbiAgICAnXFx1MDE3QSc6ICd6JyxcbiAgICAnXFx1MUU5MSc6ICd6JyxcbiAgICAnXFx1MDE3Qyc6ICd6JyxcbiAgICAnXFx1MDE3RSc6ICd6JyxcbiAgICAnXFx1MUU5Myc6ICd6JyxcbiAgICAnXFx1MUU5NSc6ICd6JyxcbiAgICAnXFx1MDFCNic6ICd6JyxcbiAgICAnXFx1MDIyNSc6ICd6JyxcbiAgICAnXFx1MDI0MCc6ICd6JyxcbiAgICAnXFx1MkM2Qyc6ICd6JyxcbiAgICAnXFx1QTc2Myc6ICd6JyxcbiAgICAnXFx1MDM4Nic6ICdcXHUwMzkxJyxcbiAgICAnXFx1MDM4OCc6ICdcXHUwMzk1JyxcbiAgICAnXFx1MDM4OSc6ICdcXHUwMzk3JyxcbiAgICAnXFx1MDM4QSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDNBQSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDM4Qyc6ICdcXHUwMzlGJyxcbiAgICAnXFx1MDM4RSc6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDNBQic6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDM4Ric6ICdcXHUwM0E5JyxcbiAgICAnXFx1MDNBQyc6ICdcXHUwM0IxJyxcbiAgICAnXFx1MDNBRCc6ICdcXHUwM0I1JyxcbiAgICAnXFx1MDNBRSc6ICdcXHUwM0I3JyxcbiAgICAnXFx1MDNBRic6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQSc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDM5MCc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQyc6ICdcXHUwM0JGJyxcbiAgICAnXFx1MDNDRCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDQic6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNCMCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDRSc6ICdcXHUwM0M5JyxcbiAgICAnXFx1MDNDMic6ICdcXHUwM0MzJyxcbiAgICAnXFx1MjAxOSc6ICdcXCcnXG4gIH07XG5cbiAgcmV0dXJuIGRpYWNyaXRpY3M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYmFzZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gQmFzZUFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgQmFzZUFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQmFzZUFkYXB0ZXIsIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGN1cnJlbnRgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBxdWVyeWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIC8vIENhbiBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ2FuIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuZ2VuZXJhdGVSZXN1bHRJZCA9IGZ1bmN0aW9uIChjb250YWluZXIsIGRhdGEpIHtcbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdC0nO1xuXG4gICAgaWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcblxuICAgIGlmIChkYXRhLmlkICE9IG51bGwpIHtcbiAgICAgIGlkICs9ICctJyArIGRhdGEuaWQudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIHJldHVybiBCYXNlQWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9zZWxlY3QnLFtcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQmFzZUFkYXB0ZXIsIFV0aWxzLCAkKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdEFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBTZWxlY3RBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNlbGVjdEFkYXB0ZXIsIEJhc2VBZGFwdGVyKTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGRhdGEgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoXG4gICAgICB0aGlzLiRlbGVtZW50WzBdLnF1ZXJ5U2VsZWN0b3JBbGwoJzpjaGVja2VkJyksXG4gICAgICBmdW5jdGlvbiAoc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBzZWxmLml0ZW0oJChzZWxlY3RlZEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY2FsbGJhY2soZGF0YSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgIC8vIElmIGRhdGEuZWxlbWVudCBpcyBhIERPTSBub2RlLCB1c2UgaXQgaW5zdGVhZFxuICAgIGlmIChcbiAgICAgIGRhdGEuZWxlbWVudCAhPSBudWxsICYmIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICAgIHZhciB2YWwgPSBbXTtcblxuICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICBkYXRhLnB1c2guYXBwbHkoZGF0YSwgY3VycmVudERhdGEpO1xuXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgICAgIHZhciBpZCA9IGRhdGFbZF0uaWQ7XG5cbiAgICAgICAgICBpZiAodmFsLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG4gICAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdmFsID0gZGF0YS5pZDtcblxuICAgICAgdGhpcy4kZWxlbWVudC52YWwodmFsKTtcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghdGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgZGF0YS5lbGVtZW50ICE9IG51bGwgJiZcbiAgICAgIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgdmFyIHZhbCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGN1cnJlbnREYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgIHZhciBpZCA9IGN1cnJlbnREYXRhW2RdLmlkO1xuXG4gICAgICAgIGlmIChpZCAhPT0gZGF0YS5pZCAmJiB2YWwuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi51bnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZW1vdmUgYW55dGhpbmcgYWRkZWQgdG8gY2hpbGQgZWxlbWVudHNcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJyonKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFJlbW92ZSBhbnkgY3VzdG9tIGRhdGEgc2V0IGJ5IFNlbGVjdDJcbiAgICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBkYXRhID0gW107XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpO1xuXG4gICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb3B0aW9uJyAmJlxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29wdGdyb3VwJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pO1xuXG4gICAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hlcyhwYXJhbXMsIG9wdGlvbik7XG5cbiAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsKSB7XG4gICAgICAgIGRhdGEucHVzaChtYXRjaGVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNhbGxiYWNrKHtcbiAgICAgIHJlc3VsdHM6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24gKCRvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm9wdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIG9wdGlvbjtcblxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRncm91cCcpO1xuICAgICAgb3B0aW9uLmxhYmVsID0gZGF0YS50ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblxuICAgICAgaWYgKG9wdGlvbi50ZXh0Q29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IGRhdGEudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSBkYXRhLnRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9uLnZhbHVlID0gZGF0YS5pZDtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kaXNhYmxlZCkge1xuICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xuICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgb3B0aW9uLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICB9XG5cbiAgICB2YXIgbm9ybWFsaXplZERhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIG5vcm1hbGl6ZWREYXRhLmVsZW1lbnQgPSBvcHRpb247XG5cbiAgICAvLyBPdmVycmlkZSB0aGUgb3B0aW9uJ3MgZGF0YSB3aXRoIHRoZSBjb21iaW5lZCBkYXRhXG4gICAgVXRpbHMuU3RvcmVEYXRhKG9wdGlvbiwgJ2RhdGEnLCBub3JtYWxpemVkRGF0YSk7XG5cbiAgICByZXR1cm4gJChvcHRpb24pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLml0ZW0gPSBmdW5jdGlvbiAoJG9wdGlvbikge1xuICAgIHZhciBkYXRhID0ge307XG5cbiAgICBkYXRhID0gVXRpbHMuR2V0RGF0YSgkb3B0aW9uWzBdLCAnZGF0YScpO1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbiA9ICRvcHRpb25bMF07XG5cbiAgICBpZiAob3B0aW9uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbicpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIGlkOiAkb3B0aW9uLnZhbCgpLFxuICAgICAgICB0ZXh0OiAkb3B0aW9uLnRleHQoKSxcbiAgICAgICAgZGlzYWJsZWQ6ICRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSxcbiAgICAgICAgc2VsZWN0ZWQ6ICRvcHRpb24ucHJvcCgnc2VsZWN0ZWQnKSxcbiAgICAgICAgdGl0bGU6ICRvcHRpb24ucHJvcCgndGl0bGUnKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbi50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRncm91cCcpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIHRleHQ6ICRvcHRpb24ucHJvcCgnbGFiZWwnKSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB0aXRsZTogJG9wdGlvbi5wcm9wKCd0aXRsZScpXG4gICAgICB9O1xuXG4gICAgICB2YXIgJGNoaWxkcmVuID0gJG9wdGlvbi5jaGlsZHJlbignb3B0aW9uJyk7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgdmFyICRjaGlsZCA9ICQoJGNoaWxkcmVuW2NdKTtcblxuICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLml0ZW0oJGNoaWxkKTtcblxuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgZGF0YS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGRhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIGRhdGEuZWxlbWVudCA9ICRvcHRpb25bMF07XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJG9wdGlvblswXSwgJ2RhdGEnLCBkYXRhKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLl9ub3JtYWxpemVJdGVtID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAhPT0gT2JqZWN0KGl0ZW0pKSB7XG4gICAgICBpdGVtID0ge1xuICAgICAgICBpZDogaXRlbSxcbiAgICAgICAgdGV4dDogaXRlbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpdGVtID0gJC5leHRlbmQoe30sIHtcbiAgICAgIHRleHQ6ICcnXG4gICAgfSwgaXRlbSk7XG5cbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKGl0ZW0uaWQgIT0gbnVsbCkge1xuICAgICAgaXRlbS5pZCA9IGl0ZW0uaWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS50ZXh0ICE9IG51bGwpIHtcbiAgICAgIGl0ZW0udGV4dCA9IGl0ZW0udGV4dC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChpdGVtLl9yZXN1bHRJZCA9PSBudWxsICYmIGl0ZW0uaWQgJiYgdGhpcy5jb250YWluZXIgIT0gbnVsbCkge1xuICAgICAgaXRlbS5fcmVzdWx0SWQgPSB0aGlzLmdlbmVyYXRlUmVzdWx0SWQodGhpcy5jb250YWluZXIsIGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIGl0ZW0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm1hdGNoZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBkYXRhKSB7XG4gICAgdmFyIG1hdGNoZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdtYXRjaGVyJyk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3RBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2FycmF5JyxbXG4gICcuL3NlbGVjdCcsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoU2VsZWN0QWRhcHRlciwgVXRpbHMsICQpIHtcbiAgZnVuY3Rpb24gQXJyYXlBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuX2RhdGFUb0NvbnZlcnQgPSBvcHRpb25zLmdldCgnZGF0YScpIHx8IFtdO1xuXG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBcnJheUFkYXB0ZXIsIFNlbGVjdEFkYXB0ZXIpO1xuXG4gIEFycmF5QWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICBBcnJheUFkYXB0ZXIuX19zdXBlcl9fLmJpbmQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgdGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyh0aGlzLl9kYXRhVG9Db252ZXJ0KSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciAkb3B0aW9uID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgcmV0dXJuIGVsbS52YWx1ZSA9PSBkYXRhLmlkLnRvU3RyaW5nKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoJG9wdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICRvcHRpb24gPSB0aGlzLm9wdGlvbihkYXRhKTtcblxuICAgICAgdGhpcy5hZGRPcHRpb25zKCRvcHRpb24pO1xuICAgIH1cblxuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcywgZGF0YSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5jb252ZXJ0VG9PcHRpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgJGV4aXN0aW5nID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKTtcbiAgICB2YXIgZXhpc3RpbmdJZHMgPSAkZXhpc3RpbmcubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzZWxmLml0ZW0oJCh0aGlzKSkuaWQ7XG4gICAgfSkuZ2V0KCk7XG5cbiAgICB2YXIgJG9wdGlvbnMgPSBbXTtcblxuICAgIC8vIEZpbHRlciBvdXQgYWxsIGl0ZW1zIGV4Y2VwdCBmb3IgdGhlIG9uZSBwYXNzZWQgaW4gdGhlIGFyZ3VtZW50XG4gICAgZnVuY3Rpb24gb25seUl0ZW0gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgpID09IGl0ZW0uaWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGFbZF0pO1xuXG4gICAgICAvLyBTa2lwIGl0ZW1zIHdoaWNoIHdlcmUgcHJlLWxvYWRlZCwgb25seSBtZXJnZSB0aGUgZGF0YVxuICAgICAgaWYgKGV4aXN0aW5nSWRzLmluZGV4T2YoaXRlbS5pZCkgPj0gMCkge1xuICAgICAgICB2YXIgJGV4aXN0aW5nT3B0aW9uID0gJGV4aXN0aW5nLmZpbHRlcihvbmx5SXRlbShpdGVtKSk7XG5cbiAgICAgICAgdmFyIGV4aXN0aW5nRGF0YSA9IHRoaXMuaXRlbSgkZXhpc3RpbmdPcHRpb24pO1xuICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHRydWUsIHt9LCBpdGVtLCBleGlzdGluZ0RhdGEpO1xuXG4gICAgICAgIHZhciAkbmV3T3B0aW9uID0gdGhpcy5vcHRpb24obmV3RGF0YSk7XG5cbiAgICAgICAgJGV4aXN0aW5nT3B0aW9uLnJlcGxhY2VXaXRoKCRuZXdPcHRpb24pO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICB2YXIgJGNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9PcHRpb25zKGl0ZW0uY2hpbGRyZW4pO1xuXG4gICAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuICRvcHRpb25zO1xuICB9O1xuXG4gIHJldHVybiBBcnJheUFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYWpheCcsW1xuICAnLi9hcnJheScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQXJyYXlBZGFwdGVyLCBVdGlscywgJCkge1xuICBmdW5jdGlvbiBBamF4QWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmFqYXhPcHRpb25zID0gdGhpcy5fYXBwbHlEZWZhdWx0cyhvcHRpb25zLmdldCgnYWpheCcpKTtcblxuICAgIGlmICh0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzICE9IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzO1xuICAgIH1cblxuICAgIEFqYXhBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBamF4QWRhcHRlciwgQXJyYXlBZGFwdGVyKTtcblxuICBBamF4QWRhcHRlci5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgIGRhdGE6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBwYXJhbXMsIHtcbiAgICAgICAgICBxOiBwYXJhbXMudGVybVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uIChwYXJhbXMsIHN1Y2Nlc3MsIGZhaWx1cmUpIHtcbiAgICAgICAgdmFyICRyZXF1ZXN0ID0gJC5hamF4KHBhcmFtcyk7XG5cbiAgICAgICAgJHJlcXVlc3QudGhlbihzdWNjZXNzKTtcbiAgICAgICAgJHJlcXVlc3QuZmFpbChmYWlsdXJlKTtcblxuICAgICAgICByZXR1cm4gJHJlcXVlc3Q7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cyA9IGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgbWF0Y2hlcyA9IFtdO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICh0aGlzLl9yZXF1ZXN0ICE9IG51bGwpIHtcbiAgICAgIC8vIEpTT05QIHJlcXVlc3RzIGNhbm5vdCBhbHdheXMgYmUgYWJvcnRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXF1ZXN0LmFib3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3QuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7XG4gICAgICB0eXBlOiAnR0VUJ1xuICAgIH0sIHRoaXMuYWpheE9wdGlvbnMpO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybC5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9IG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVxdWVzdCAoKSB7XG4gICAgICB2YXIgJHJlcXVlc3QgPSBvcHRpb25zLnRyYW5zcG9ydChvcHRpb25zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHNlbGYucHJvY2Vzc1Jlc3VsdHMoZGF0YSwgcGFyYW1zKTtcblxuICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlc3BvbnNlIGluY2x1ZGVkIGEgYHJlc3VsdHNgIGtleS5cbiAgICAgICAgICBpZiAoIXJlc3VsdHMgfHwgIXJlc3VsdHMucmVzdWx0cyB8fCAhQXJyYXkuaXNBcnJheShyZXN1bHRzLnJlc3VsdHMpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnU2VsZWN0MjogVGhlIEFKQVggcmVzdWx0cyBkaWQgbm90IHJldHVybiBhbiBhcnJheSBpbiB0aGUgJyArXG4gICAgICAgICAgICAgICdgcmVzdWx0c2Aga2V5IG9mIHRoZSByZXNwb25zZS4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpO1xuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGRldGVjdCBpZiBhIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICAgICAgLy8gT25seSB3b3JrcyBpZiB0aGUgdHJhbnNwb3J0IGV4cG9zZXMgYSBzdGF0dXMgcHJvcGVydHlcbiAgICAgICAgaWYgKCdzdGF0dXMnIGluICRyZXF1ZXN0ICYmXG4gICAgICAgICAgICAoJHJlcXVlc3Quc3RhdHVzID09PSAwIHx8ICRyZXF1ZXN0LnN0YXR1cyA9PT0gJzAnKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdlcnJvckxvYWRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuX3JlcXVlc3QgPSAkcmVxdWVzdDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5kZWxheSAmJiBwYXJhbXMudGVybSAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5fcXVlcnlUaW1lb3V0KSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fcXVlcnlUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcXVlcnlUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQocmVxdWVzdCwgdGhpcy5hamF4T3B0aW9ucy5kZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEFqYXhBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3RhZ3MnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIFRhZ3MgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGFncyA9IG9wdGlvbnMuZ2V0KCd0YWdzJyk7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gb3B0aW9ucy5nZXQoJ2NyZWF0ZVRhZycpO1xuXG4gICAgaWYgKGNyZWF0ZVRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNyZWF0ZVRhZyA9IGNyZWF0ZVRhZztcbiAgICB9XG5cbiAgICB2YXIgaW5zZXJ0VGFnID0gb3B0aW9ucy5nZXQoJ2luc2VydFRhZycpO1xuXG4gICAgaWYgKGluc2VydFRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0VGFnID0gaW5zZXJ0VGFnO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRhZ3MpKSB7XG4gICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRhZ3MubGVuZ3RoOyB0KyspIHtcbiAgICAgICAgdmFyIHRhZyA9IHRhZ3NbdF07XG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5fbm9ybWFsaXplSXRlbSh0YWcpO1xuXG4gICAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgVGFncy5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5fcmVtb3ZlT2xkVGFncygpO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwgfHwgcGFyYW1zLnBhZ2UgIT0gbnVsbCkge1xuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcHBlciAob2JqLCBjaGlsZCkge1xuICAgICAgdmFyIGRhdGEgPSBvYmoucmVzdWx0cztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBvcHRpb24gPSBkYXRhW2ldO1xuXG4gICAgICAgIHZhciBjaGVja0NoaWxkcmVuID0gKFxuICAgICAgICAgIG9wdGlvbi5jaGlsZHJlbiAhPSBudWxsICYmXG4gICAgICAgICAgIXdyYXBwZXIoe1xuICAgICAgICAgICAgcmVzdWx0czogb3B0aW9uLmNoaWxkcmVuXG4gICAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB2YXIgb3B0aW9uVGV4dCA9IChvcHRpb24udGV4dCB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHBhcmFtc1Rlcm0gPSAocGFyYW1zLnRlcm0gfHwgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgdmFyIGNoZWNrVGV4dCA9IG9wdGlvblRleHQgPT09IHBhcmFtc1Rlcm07XG5cbiAgICAgICAgaWYgKGNoZWNrVGV4dCB8fCBjaGVja0NoaWxkcmVuKSB7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JqLmRhdGEgPSBkYXRhO1xuICAgICAgICAgIGNhbGxiYWNrKG9iaik7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGFnID0gc2VsZi5jcmVhdGVUYWcocGFyYW1zKTtcblxuICAgICAgaWYgKHRhZyAhPSBudWxsKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24odGFnKTtcbiAgICAgICAgJG9wdGlvbi5hdHRyKCdkYXRhLXNlbGVjdDItdGFnJywgJ3RydWUnKTtcblxuICAgICAgICBzZWxmLmFkZE9wdGlvbnMoWyRvcHRpb25dKTtcblxuICAgICAgICBzZWxmLmluc2VydFRhZyhkYXRhLCB0YWcpO1xuICAgICAgfVxuXG4gICAgICBvYmoucmVzdWx0cyA9IGRhdGE7XG5cbiAgICAgIGNhbGxiYWNrKG9iaik7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCB3cmFwcGVyKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5jcmVhdGVUYWcgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybS50cmltKCk7XG5cbiAgICBpZiAodGVybSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGVybSxcbiAgICAgIHRleHQ6IHRlcm1cbiAgICB9O1xuICB9O1xuXG4gIFRhZ3MucHJvdG90eXBlLmluc2VydFRhZyA9IGZ1bmN0aW9uIChfLCBkYXRhLCB0YWcpIHtcbiAgICBkYXRhLnVuc2hpZnQodGFnKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5fcmVtb3ZlT2xkVGFncyA9IGZ1bmN0aW9uIChfKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ10nKTtcblxuICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkKHRoaXMpLnJlbW92ZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBUYWdzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3Rva2VuaXplcicsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gVG9rZW5pemVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdmFyIHRva2VuaXplciA9IG9wdGlvbnMuZ2V0KCd0b2tlbml6ZXInKTtcblxuICAgIGlmICh0b2tlbml6ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXI7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgVG9rZW5pemVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaCA9ICBjb250YWluZXIuZHJvcGRvd24uJHNlYXJjaCB8fCBjb250YWluZXIuc2VsZWN0aW9uLiRzZWFyY2ggfHxcbiAgICAgICRjb250YWluZXIuZmluZCgnLnNlbGVjdDItc2VhcmNoX19maWVsZCcpO1xuICB9O1xuXG4gIFRva2VuaXplci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlQW5kU2VsZWN0IChkYXRhKSB7XG4gICAgICAvLyBOb3JtYWxpemUgdGhlIGRhdGEgb2JqZWN0IHNvIHdlIGNhbiB1c2UgaXQgZm9yIGNoZWNrc1xuICAgICAgdmFyIGl0ZW0gPSBzZWxmLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBvYmplY3QgYWxyZWFkeSBleGlzdHMgYXMgYSB0YWdcbiAgICAgIC8vIFNlbGVjdCBpdCBpZiBpdCBkb2Vzbid0XG4gICAgICB2YXIgJGV4aXN0aW5nT3B0aW9ucyA9IHNlbGYuJGVsZW1lbnQuZmluZCgnb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT09IGl0ZW0uaWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgYW4gZXhpc3Rpbmcgb3B0aW9uIHdhc24ndCBmb3VuZCBmb3IgaXQsIGNyZWF0ZSB0aGUgb3B0aW9uXG4gICAgICBpZiAoISRleGlzdGluZ09wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24oaXRlbSk7XG4gICAgICAgICRvcHRpb24uYXR0cignZGF0YS1zZWxlY3QyLXRhZycsIHRydWUpO1xuXG4gICAgICAgIHNlbGYuX3JlbW92ZU9sZFRhZ3MoKTtcbiAgICAgICAgc2VsZi5hZGRPcHRpb25zKFskb3B0aW9uXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlbGVjdCB0aGUgaXRlbSwgbm93IHRoYXQgd2Uga25vdyB0aGVyZSBpcyBhbiBvcHRpb24gZm9yIGl0XG4gICAgICBzZWxlY3QoaXRlbSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VsZWN0IChkYXRhKSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIHZhciB0b2tlbkRhdGEgPSB0aGlzLnRva2VuaXplcihwYXJhbXMsIHRoaXMub3B0aW9ucywgY3JlYXRlQW5kU2VsZWN0KTtcblxuICAgIGlmICh0b2tlbkRhdGEudGVybSAhPT0gcGFyYW1zLnRlcm0pIHtcbiAgICAgIC8vIFJlcGxhY2UgdGhlIHNlYXJjaCB0ZXJtIGlmIHdlIGhhdmUgdGhlIHNlYXJjaCBib3hcbiAgICAgIGlmICh0aGlzLiRzZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuJHNlYXJjaC52YWwodG9rZW5EYXRhLnRlcm0pO1xuICAgICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnRlcm0gPSB0b2tlbkRhdGEudGVybTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfTtcblxuICBUb2tlbml6ZXIucHJvdG90eXBlLnRva2VuaXplciA9IGZ1bmN0aW9uIChfLCBwYXJhbXMsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlcGFyYXRvcnMgPSBvcHRpb25zLmdldCgndG9rZW5TZXBhcmF0b3JzJykgfHwgW107XG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybTtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gdGhpcy5jcmVhdGVUYWcgfHwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICB0ZXh0OiBwYXJhbXMudGVybVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgd2hpbGUgKGkgPCB0ZXJtLmxlbmd0aCkge1xuICAgICAgdmFyIHRlcm1DaGFyID0gdGVybVtpXTtcblxuICAgICAgaWYgKHNlcGFyYXRvcnMuaW5kZXhPZih0ZXJtQ2hhcikgPT09IC0xKSB7XG4gICAgICAgIGkrKztcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcnQgPSB0ZXJtLnN1YnN0cigwLCBpKTtcbiAgICAgIHZhciBwYXJ0UGFyYW1zID0gJC5leHRlbmQoe30sIHBhcmFtcywge1xuICAgICAgICB0ZXJtOiBwYXJ0XG4gICAgICB9KTtcblxuICAgICAgdmFyIGRhdGEgPSBjcmVhdGVUYWcocGFydFBhcmFtcyk7XG5cbiAgICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZGF0YSk7XG5cbiAgICAgIC8vIFJlc2V0IHRoZSB0ZXJtIHRvIG5vdCBpbmNsdWRlIHRoZSB0b2tlbml6ZWQgcG9ydGlvblxuICAgICAgdGVybSA9IHRlcm0uc3Vic3RyKGkgKyAxKSB8fCAnJztcbiAgICAgIGkgPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0ZXJtOiB0ZXJtXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gVG9rZW5pemVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbmltdW1JbnB1dExlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWluaW11bUlucHV0TGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1JbnB1dExlbmd0aCcpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgTWluaW11bUlucHV0TGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtLmxlbmd0aCA8IHRoaXMubWluaW11bUlucHV0TGVuZ3RoKSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgbWVzc2FnZTogJ2lucHV0VG9vU2hvcnQnLFxuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgbWluaW11bTogdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsXG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIE1pbmltdW1JbnB1dExlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXhpbXVtSW5wdXRMZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm1heGltdW1JbnB1dExlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtSW5wdXRMZW5ndGgnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIE1heGltdW1JbnB1dExlbmd0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIGlmICh0aGlzLm1heGltdW1JbnB1dExlbmd0aCA+IDAgJiZcbiAgICAgICAgcGFyYW1zLnRlcm0ubGVuZ3RoID4gdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgpIHtcbiAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICBtZXNzYWdlOiAnaW5wdXRUb29Mb25nJyxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIG1heGltdW06IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoLFxuICAgICAgICAgIGlucHV0OiBwYXJhbXMudGVybSxcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9O1xuXG4gIHJldHVybiBNYXhpbXVtSW5wdXRMZW5ndGg7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gTWF4aW11bVNlbGVjdGlvbkxlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XG4gIH1cblxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5iaW5kID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgICBkZWNvcmF0ZWQuY2FsbChzZWxmLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkID1cbiAgICBmdW5jdGlvbiAoXywgc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gY3VycmVudERhdGEgIT0gbnVsbCA/IGN1cnJlbnREYXRhLmxlbmd0aCA6IDA7XG4gICAgICAgIGlmIChzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwICYmXG4gICAgICAgICAgY291bnQgPj0gc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnbWF4aW11bVNlbGVjdGVkJyxcbiAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgbWF4aW11bTogc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gTWF4aW11bVNlbGVjdGlvbkxlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24nLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIERyb3Bkb3duICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgRHJvcGRvd24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoRHJvcGRvd24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRkcm9wZG93biA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItcmVzdWx0c1wiPjwvc3Bhbj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICAkZHJvcGRvd24uYXR0cignZGlyJywgdGhpcy5vcHRpb25zLmdldCgnZGlyJykpO1xuXG4gICAgdGhpcy4kZHJvcGRvd24gPSAkZHJvcGRvd247XG5cbiAgICByZXR1cm4gJGRyb3Bkb3duO1xuICB9O1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUmVtb3ZlIHRoZSBkcm9wZG93biBmcm9tIHRoZSBET01cbiAgICB0aGlzLiRkcm9wZG93bi5yZW1vdmUoKTtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3NlYXJjaCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gU2VhcmNoICgpIHsgfVxuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuXG4gICAgdmFyICRzZWFyY2ggPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8aW5wdXQgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIiB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiAvPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCdpbnB1dCcpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgJHJlbmRlcmVkLnByZXBlbmQoJHNlYXJjaCk7XG5cbiAgICByZXR1cm4gJHJlbmRlcmVkO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzSWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigna2V5cHJlc3MnLCBldnQpO1xuXG4gICAgICBzZWxmLl9rZXlVcFByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdpbnB1dCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVuYmluZCB0aGUgZHVwbGljYXRlZCBga2V5dXBgIGV2ZW50XG4gICAgICAkKHRoaXMpLm9mZigna2V5dXAnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5dXAgaW5wdXQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLmhhbmRsZVNlYXJjaChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgMCk7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1jb250cm9scycsIHJlc3VsdHNJZCk7XG5cbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuXG4gICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgLTEpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcblxuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignYmx1cicpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMucXVlcnkudGVybSA9PSBudWxsIHx8IHBhcmFtcy5xdWVyeS50ZXJtID09PSAnJykge1xuICAgICAgICB2YXIgc2hvd1NlYXJjaCA9IHNlbGYuc2hvd1NlYXJjaChwYXJhbXMpO1xuXG4gICAgICAgIGlmIChzaG93U2VhcmNoKSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuZGF0YS5fcmVzdWx0SWQpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLl9rZXlVcFByZXZlbnRlZCkge1xuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge1xuICAgICAgICB0ZXJtOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fa2V5VXBQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlkZVBsYWNlaG9sZGVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG9wdGlvbnMuZ2V0KCdwbGFjZWhvbGRlcicpKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XG4gIH1cblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICBkYXRhLnJlc3VsdHMgPSB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKGRhdGEucmVzdWx0cyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIHBsYWNlaG9sZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBwbGFjZWhvbGRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xuICAgICAgICBpZDogJycsXG4gICAgICAgIHRleHQ6IHBsYWNlaG9sZGVyXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLnJlbW92ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcbiAgICB2YXIgbW9kaWZpZWREYXRhID0gZGF0YS5zbGljZSgwKTtcblxuICAgIGZvciAodmFyIGQgPSBkYXRhLmxlbmd0aCAtIDE7IGQgPj0gMDsgZC0tKSB7XG4gICAgICB2YXIgaXRlbSA9IGRhdGFbZF07XG5cbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyLmlkID09PSBpdGVtLmlkKSB7XG4gICAgICAgIG1vZGlmaWVkRGF0YS5zcGxpY2UoZCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkRGF0YTtcbiAgfTtcblxuICByZXR1cm4gSGlkZVBsYWNlaG9sZGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gSW5maW5pdGVTY3JvbGwgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy5sYXN0UGFyYW1zID0ge307XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuXG4gICAgdGhpcy4kbG9hZGluZ01vcmUgPSB0aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIHRoaXMuJGxvYWRpbmdNb3JlLnJlbW92ZSgpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICBpZiAodGhpcy5zaG93TG9hZGluZ01vcmUoZGF0YSkpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKHRoaXMuJGxvYWRpbmdNb3JlKTtcbiAgICAgIHRoaXMubG9hZE1vcmVJZk5lZWRlZCgpO1xuICAgIH1cbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ3Njcm9sbCcsIHRoaXMubG9hZE1vcmVJZk5lZWRlZC5iaW5kKHRoaXMpKTtcbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUubG9hZE1vcmVJZk5lZWRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXNMb2FkTW9yZVZpc2libGUgPSAkLmNvbnRhaW5zKFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgdGhpcy4kbG9hZGluZ01vcmVbMF1cbiAgICApO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCAhaXNMb2FkTW9yZVZpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wICtcbiAgICAgIHRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgIHZhciBsb2FkaW5nTW9yZU9mZnNldCA9IHRoaXMuJGxvYWRpbmdNb3JlLm9mZnNldCgpLnRvcCArXG4gICAgICB0aGlzLiRsb2FkaW5nTW9yZS5vdXRlckhlaWdodChmYWxzZSk7XG5cbiAgICBpZiAoY3VycmVudE9mZnNldCArIDUwID49IGxvYWRpbmdNb3JlT2Zmc2V0KSB7XG4gICAgICB0aGlzLmxvYWRNb3JlKCk7XG4gICAgfVxuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5sb2FkTW9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdmFyIHBhcmFtcyA9ICQuZXh0ZW5kKHt9LCB7cGFnZTogMX0sIHRoaXMubGFzdFBhcmFtcyk7XG5cbiAgICBwYXJhbXMucGFnZSsrO1xuXG4gICAgdGhpcy50cmlnZ2VyKCdxdWVyeTphcHBlbmQnLCBwYXJhbXMpO1xuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5zaG93TG9hZGluZ01vcmUgPSBmdW5jdGlvbiAoXywgZGF0YSkge1xuICAgIHJldHVybiBkYXRhLnBhZ2luYXRpb24gJiYgZGF0YS5wYWdpbmF0aW9uLm1vcmU7XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkb3B0aW9uID0gJChcbiAgICAgICc8bGkgJyArXG4gICAgICAnY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlXCInICtcbiAgICAgICdyb2xlPVwib3B0aW9uXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ2xvYWRpbmdNb3JlJyk7XG5cbiAgICAkb3B0aW9uLmh0bWwobWVzc2FnZSh0aGlzLmxhc3RQYXJhbXMpKTtcblxuICAgIHJldHVybiAkb3B0aW9uO1xuICB9O1xuXG4gIHJldHVybiBJbmZpbml0ZVNjcm9sbDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vYXR0YWNoQm9keScsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEF0dGFjaEJvZHkgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRkcm9wZG93blBhcmVudCA9ICQob3B0aW9ucy5nZXQoJ2Ryb3Bkb3duUGFyZW50JykgfHwgZG9jdW1lbnQuYm9keSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Nob3dEcm9wZG93bigpO1xuICAgICAgc2VsZi5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIE11c3QgYmluZCBhZnRlciB0aGUgcmVzdWx0cyBoYW5kbGVycyB0byBlbnN1cmUgY29ycmVjdCBzaXppbmdcbiAgICAgIHNlbGYuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyhjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX2hpZGVEcm9wZG93bigpO1xuICAgICAgc2VsZi5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsICRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIENsb25lIGFsbCBvZiB0aGUgY29udGFpbmVyIGNsYXNzZXNcbiAgICAkZHJvcGRvd24uYXR0cignY2xhc3MnLCAkY29udGFpbmVyLmF0dHIoJ2NsYXNzJykpO1xuXG4gICAgJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDInKTtcbiAgICAkZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICRkcm9wZG93bi5jc3Moe1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6IC05OTk5OTlcbiAgICB9KTtcblxuICAgIHRoaXMuJGNvbnRhaW5lciA9ICRjb250YWluZXI7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJCgnPHNwYW4+PC9zcGFuPicpO1xuXG4gICAgdmFyICRkcm9wZG93biA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuICAgICRjb250YWluZXIuYXBwZW5kKCRkcm9wZG93bik7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lciA9ICRjb250YWluZXI7XG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5faGlkZURyb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9iaW5kQ29udGFpbmVyUmVzdWx0SGFuZGxlcnMgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgb25seSBiZSBib3VuZCBvbmNlXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czptZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQgPSB0cnVlO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9hdHRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKHRoaXMsICdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicsIHtcbiAgICAgICAgeDogJCh0aGlzKS5zY3JvbGxMZWZ0KCksXG4gICAgICAgIHk6ICQodGhpcykuc2Nyb2xsVG9wKClcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgJHdhdGNoZXJzLm9uKHNjcm9sbEV2ZW50LCBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IFV0aWxzLkdldERhdGEodGhpcywgJ3NlbGVjdDItc2Nyb2xsLXBvc2l0aW9uJyk7XG4gICAgICAkKHRoaXMpLnNjcm9sbFRvcChwb3NpdGlvbi55KTtcbiAgICB9KTtcblxuICAgICQod2luZG93KS5vbihzY3JvbGxFdmVudCArICcgJyArIHJlc2l6ZUV2ZW50ICsgJyAnICsgb3JpZW50YXRpb25FdmVudCxcbiAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLm9mZihzY3JvbGxFdmVudCk7XG5cbiAgICAkKHdpbmRvdykub2ZmKHNjcm9sbEV2ZW50ICsgJyAnICsgcmVzaXplRXZlbnQgKyAnICcgKyBvcmllbnRhdGlvbkV2ZW50KTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHdpbmRvdyA9ICQod2luZG93KTtcblxuICAgIHZhciBpc0N1cnJlbnRseUFib3ZlID0gdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0XG4gICAgICAuY29udGFpbnMoJ3NlbGVjdDItZHJvcGRvd24tLWFib3ZlJyk7XG4gICAgdmFyIGlzQ3VycmVudGx5QmVsb3cgPSB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3RcbiAgICAgIC5jb250YWlucygnc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cnKTtcblxuICAgIHZhciBuZXdEaXJlY3Rpb24gPSBudWxsO1xuXG4gICAgdmFyIG9mZnNldCA9IHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtcblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgdGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKTtcblxuICAgIHZhciBjb250YWluZXIgPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgY29udGFpbmVyLnRvcCA9IG9mZnNldC50b3A7XG4gICAgY29udGFpbmVyLmJvdHRvbSA9IG9mZnNldC50b3AgKyBjb250YWluZXIuaGVpZ2h0O1xuXG4gICAgdmFyIGRyb3Bkb3duID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLiRkcm9wZG93bi5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgdmFyIHZpZXdwb3J0ID0ge1xuICAgICAgdG9wOiAkd2luZG93LnNjcm9sbFRvcCgpLFxuICAgICAgYm90dG9tOiAkd2luZG93LnNjcm9sbFRvcCgpICsgJHdpbmRvdy5oZWlnaHQoKVxuICAgIH07XG5cbiAgICB2YXIgZW5vdWdoUm9vbUFib3ZlID0gdmlld3BvcnQudG9wIDwgKG9mZnNldC50b3AgLSBkcm9wZG93bi5oZWlnaHQpO1xuICAgIHZhciBlbm91Z2hSb29tQmVsb3cgPSB2aWV3cG9ydC5ib3R0b20gPiAob2Zmc2V0LmJvdHRvbSArIGRyb3Bkb3duLmhlaWdodCk7XG5cbiAgICB2YXIgY3NzID0ge1xuICAgICAgbGVmdDogb2Zmc2V0LmxlZnQsXG4gICAgICB0b3A6IGNvbnRhaW5lci5ib3R0b21cbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIHBhcmVudCBlbGVtZW50IGlzIHRvIHVzZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG9mZnNldFxuICAgIHZhciAkb2Zmc2V0UGFyZW50ID0gdGhpcy4kZHJvcGRvd25QYXJlbnQ7XG5cbiAgICAvLyBGb3Igc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzLCB3ZSBuZWVkIHRvIGdldCB0aGUgZWxlbWVudFxuICAgIC8vIHRoYXQgaXMgZGV0ZXJtaW5pbmcgdGhlIG9mZnNldFxuICAgIGlmICgkb2Zmc2V0UGFyZW50LmNzcygncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICRvZmZzZXRQYXJlbnQgPSAkb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudCgpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRPZmZzZXQgPSB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgICQuY29udGFpbnMoZG9jdW1lbnQuYm9keSwgJG9mZnNldFBhcmVudFswXSkgfHxcbiAgICAgICRvZmZzZXRQYXJlbnRbMF0uaXNDb25uZWN0ZWRcbiAgICAgICkge1xuICAgICAgcGFyZW50T2Zmc2V0ID0gJG9mZnNldFBhcmVudC5vZmZzZXQoKTtcbiAgICB9XG5cbiAgICBjc3MudG9wIC09IHBhcmVudE9mZnNldC50b3A7XG4gICAgY3NzLmxlZnQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XG5cbiAgICBpZiAoIWlzQ3VycmVudGx5QWJvdmUgJiYgIWlzQ3VycmVudGx5QmVsb3cpIHtcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYgZW5vdWdoUm9vbUFib3ZlICYmICFpc0N1cnJlbnRseUFib3ZlKSB7XG4gICAgICBuZXdEaXJlY3Rpb24gPSAnYWJvdmUnO1xuICAgIH0gZWxzZSBpZiAoIWVub3VnaFJvb21BYm92ZSAmJiBlbm91Z2hSb29tQmVsb3cgJiYgaXNDdXJyZW50bHlBYm92ZSkge1xuICAgICAgbmV3RGlyZWN0aW9uID0gJ2JlbG93JztcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uID09ICdhYm92ZScgfHxcbiAgICAgIChpc0N1cnJlbnRseUFib3ZlICYmIG5ld0RpcmVjdGlvbiAhPT0gJ2JlbG93JykpIHtcbiAgICAgIGNzcy50b3AgPSBjb250YWluZXIudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGRyb3Bkb3duLmhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItZHJvcGRvd24tLWJlbG93Jyk7XG4gICAgICB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZScpO1xuICAgICAgdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1kcm9wZG93bi0tJyArIG5ld0RpcmVjdGlvbik7XG5cbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tJyArIG5ld0RpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGNzcyk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX3Jlc2l6ZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjc3MgPSB7XG4gICAgICB3aWR0aDogdGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoZmFsc2UpICsgJ3B4J1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BdXRvV2lkdGgnKSkge1xuICAgICAgY3NzLm1pbldpZHRoID0gY3NzLndpZHRoO1xuICAgICAgY3NzLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIGNzcy53aWR0aCA9ICdhdXRvJztcbiAgICB9XG5cbiAgICB0aGlzLiRkcm9wZG93bi5jc3MoY3NzKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fc2hvd0Ryb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmFwcGVuZFRvKHRoaXMuJGRyb3Bkb3duUGFyZW50KTtcblxuICAgIHRoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICB0aGlzLl9yZXNpemVEcm9wZG93bigpO1xuICB9O1xuXG4gIHJldHVybiBBdHRhY2hCb2R5O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNvdW50UmVzdWx0cyAoZGF0YSkge1xuICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBpdGVtID0gZGF0YVtkXTtcblxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY291bnQgKz0gY291bnRSZXN1bHRzKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBmdW5jdGlvbiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyk7XG5cbiAgICBpZiAodGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA8IDApIHtcbiAgICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBJbmZpbml0eTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuICB9XG5cbiAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAoY291bnRSZXN1bHRzKHBhcmFtcy5kYXRhLnJlc3VsdHMpIDwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICB9O1xuXG4gIHJldHVybiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gU2VsZWN0T25DbG9zZSAoKSB7IH1cblxuICBTZWxlY3RPbkNsb3NlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLl9oYW5kbGVTZWxlY3RPbkNsb3NlKHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0T25DbG9zZS5wcm90b3R5cGUuX2hhbmRsZVNlbGVjdE9uQ2xvc2UgPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQgIT0gbnVsbCkge1xuICAgICAgdmFyIGV2ZW50ID0gcGFyYW1zLm9yaWdpbmFsU2VsZWN0MkV2ZW50O1xuXG4gICAgICAvLyBEb24ndCBzZWxlY3QgYW4gaXRlbSBpZiB0aGUgY2xvc2UgZXZlbnQgd2FzIHRyaWdnZXJlZCBmcm9tIGEgc2VsZWN0IG9yXG4gICAgICAvLyB1bnNlbGVjdCBldmVudFxuICAgICAgaWYgKGV2ZW50Ll90eXBlID09PSAnc2VsZWN0JyB8fCBldmVudC5fdHlwZSA9PT0gJ3Vuc2VsZWN0Jykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyICRoaWdobGlnaHRlZFJlc3VsdHMgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgLy8gT25seSBzZWxlY3QgaGlnaGxpZ2h0ZWQgcmVzdWx0c1xuICAgIGlmICgkaGlnaGxpZ2h0ZWRSZXN1bHRzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGhpZ2hsaWdodGVkUmVzdWx0c1swXSwgJ2RhdGEnKTtcblxuICAgIC8vIERvbid0IHJlLXNlbGVjdCBhbHJlYWR5IHNlbGVjdGVkIHJlc3VsdGVcbiAgICBpZiAoXG4gICAgICAoZGF0YS5lbGVtZW50ICE9IG51bGwgJiYgZGF0YS5lbGVtZW50LnNlbGVjdGVkKSB8fFxuICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuc2VsZWN0ZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0T25DbG9zZTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vY2xvc2VPblNlbGVjdCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENsb3NlT25TZWxlY3QgKCkgeyB9XG5cbiAgQ2xvc2VPblNlbGVjdC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIENsb3NlT25TZWxlY3QucHJvdG90eXBlLl9zZWxlY3RUcmlnZ2VyZWQgPSBmdW5jdGlvbiAoXywgZXZ0KSB7XG4gICAgdmFyIG9yaWdpbmFsRXZlbnQgPSBldnQub3JpZ2luYWxFdmVudDtcblxuICAgIC8vIERvbid0IGNsb3NlIGlmIHRoZSBjb250cm9sIGtleSBpcyBiZWluZyBoZWxkXG4gICAgaWYgKG9yaWdpbmFsRXZlbnQgJiYgKG9yaWdpbmFsRXZlbnQuY3RybEtleSB8fCBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdjbG9zZScsIHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnQsXG4gICAgICBvcmlnaW5hbFNlbGVjdDJFdmVudDogZXZ0XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIENsb3NlT25TZWxlY3Q7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2Ryb3Bkb3duQ3NzJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBEcm9wZG93bkNTUyAoKSB7IH1cblxuICBEcm9wZG93bkNTUy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkZHJvcGRvd24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHZhciBkcm9wZG93bkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25Dc3NDbGFzcycpIHx8ICcnO1xuXG4gICAgaWYgKGRyb3Bkb3duQ3NzQ2xhc3MuaW5kZXhPZignOmFsbDonKSAhPT0gLTEpIHtcbiAgICAgIGRyb3Bkb3duQ3NzQ2xhc3MgPSBkcm9wZG93bkNzc0NsYXNzLnJlcGxhY2UoJzphbGw6JywgJycpO1xuXG4gICAgICBVdGlscy5jb3B5Tm9uSW50ZXJuYWxDc3NDbGFzc2VzKCRkcm9wZG93blswXSwgdGhpcy4kZWxlbWVudFswXSk7XG4gICAgfVxuXG4gICAgJGRyb3Bkb3duLmFkZENsYXNzKGRyb3Bkb3duQ3NzQ2xhc3MpO1xuXG4gICAgcmV0dXJuICRkcm9wZG93bjtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3RhZ3NTZWFyY2hIaWdobGlnaHQnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFRhZ3NTZWFyY2hIaWdobGlnaHQgKCkgeyB9XG5cbiAgVGFnc1NlYXJjaEhpZ2hsaWdodC5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHNcbiAgICAuZmluZChcbiAgICAgICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnICtcbiAgICAgICc6bm90KC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQpJ1xuICAgICk7XG5cbiAgICBpZiAoJG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyICRmaXJzdE9wdGlvbiA9ICRvcHRpb25zLmZpcnN0KCk7XG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGZpcnN0T3B0aW9uWzBdLCAnZGF0YScpO1xuICAgICAgdmFyIGZpcnN0RWxlbWVudCA9IGRhdGEuZWxlbWVudDtcblxuICAgICAgaWYgKGZpcnN0RWxlbWVudCAmJiBmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7XG4gICAgICAgIGlmIChmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItdGFnJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICRmaXJzdE9wdGlvbi50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICByZXR1cm4gVGFnc1NlYXJjaEhpZ2hsaWdodDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvaTE4bi9lbicsW10sZnVuY3Rpb24gKCkge1xuICAvLyBFbmdsaXNoXG4gIHJldHVybiB7XG4gICAgZXJyb3JMb2FkaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1RoZSByZXN1bHRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuJztcbiAgICB9LFxuICAgIGlucHV0VG9vTG9uZzogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBvdmVyQ2hhcnMgPSBhcmdzLmlucHV0Lmxlbmd0aCAtIGFyZ3MubWF4aW11bTtcblxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGRlbGV0ZSAnICsgb3ZlckNoYXJzICsgJyBjaGFyYWN0ZXInO1xuXG4gICAgICBpZiAob3ZlckNoYXJzICE9IDEpIHtcbiAgICAgICAgbWVzc2FnZSArPSAncyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0sXG4gICAgaW5wdXRUb29TaG9ydDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciByZW1haW5pbmdDaGFycyA9IGFyZ3MubWluaW11bSAtIGFyZ3MuaW5wdXQubGVuZ3RoO1xuXG4gICAgICB2YXIgbWVzc2FnZSA9ICdQbGVhc2UgZW50ZXIgJyArIHJlbWFpbmluZ0NoYXJzICsgJyBvciBtb3JlIGNoYXJhY3RlcnMnO1xuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuICAgIGxvYWRpbmdNb3JlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ0xvYWRpbmcgbW9yZSByZXN1bHRz4oCmJztcbiAgICB9LFxuICAgIG1heGltdW1TZWxlY3RlZDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBtZXNzYWdlID0gJ1lvdSBjYW4gb25seSBzZWxlY3QgJyArIGFyZ3MubWF4aW11bSArICcgaXRlbSc7XG5cbiAgICAgIGlmIChhcmdzLm1heGltdW0gIT0gMSkge1xuICAgICAgICBtZXNzYWdlICs9ICdzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSxcbiAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gICAgfSxcbiAgICBzZWFyY2hpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnU2VhcmNoaW5n4oCmJztcbiAgICB9LFxuICAgIHJlbW92ZUFsbEl0ZW1zOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1JlbW92ZSBhbGwgaXRlbXMnO1xuICAgIH0sXG4gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdSZW1vdmUgaXRlbSc7XG4gICAgfSxcbiAgICBzZWFyY2g6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICdTZWFyY2gnO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGVmYXVsdHMnLFtcbiAgJ2pxdWVyeScsXG5cbiAgJy4vcmVzdWx0cycsXG5cbiAgJy4vc2VsZWN0aW9uL3NpbmdsZScsXG4gICcuL3NlbGVjdGlvbi9tdWx0aXBsZScsXG4gICcuL3NlbGVjdGlvbi9wbGFjZWhvbGRlcicsXG4gICcuL3NlbGVjdGlvbi9hbGxvd0NsZWFyJyxcbiAgJy4vc2VsZWN0aW9uL3NlYXJjaCcsXG4gICcuL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFxuICAnLi9zZWxlY3Rpb24vZXZlbnRSZWxheScsXG5cbiAgJy4vdXRpbHMnLFxuICAnLi90cmFuc2xhdGlvbicsXG4gICcuL2RpYWNyaXRpY3MnLFxuXG4gICcuL2RhdGEvc2VsZWN0JyxcbiAgJy4vZGF0YS9hcnJheScsXG4gICcuL2RhdGEvYWpheCcsXG4gICcuL2RhdGEvdGFncycsXG4gICcuL2RhdGEvdG9rZW5pemVyJyxcbiAgJy4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgnLFxuICAnLi9kYXRhL21heGltdW1JbnB1dExlbmd0aCcsXG4gICcuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsXG5cbiAgJy4vZHJvcGRvd24nLFxuICAnLi9kcm9wZG93bi9zZWFyY2gnLFxuICAnLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXInLFxuICAnLi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsXG4gICcuL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFxuICAnLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsXG4gICcuL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UnLFxuICAnLi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0JyxcbiAgJy4vZHJvcGRvd24vZHJvcGRvd25Dc3MnLFxuICAnLi9kcm9wZG93bi90YWdzU2VhcmNoSGlnaGxpZ2h0JyxcblxuICAnLi9pMThuL2VuJ1xuXSwgZnVuY3Rpb24gKCQsXG5cbiAgICAgICAgICAgICBSZXN1bHRzTGlzdCxcblxuICAgICAgICAgICAgIFNpbmdsZVNlbGVjdGlvbiwgTXVsdGlwbGVTZWxlY3Rpb24sIFBsYWNlaG9sZGVyLCBBbGxvd0NsZWFyLFxuICAgICAgICAgICAgIFNlbGVjdGlvblNlYXJjaCwgU2VsZWN0aW9uQ1NTLCBFdmVudFJlbGF5LFxuXG4gICAgICAgICAgICAgVXRpbHMsIFRyYW5zbGF0aW9uLCBESUFDUklUSUNTLFxuXG4gICAgICAgICAgICAgU2VsZWN0RGF0YSwgQXJyYXlEYXRhLCBBamF4RGF0YSwgVGFncywgVG9rZW5pemVyLFxuICAgICAgICAgICAgIE1pbmltdW1JbnB1dExlbmd0aCwgTWF4aW11bUlucHV0TGVuZ3RoLCBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLFxuXG4gICAgICAgICAgICAgRHJvcGRvd24sIERyb3Bkb3duU2VhcmNoLCBIaWRlUGxhY2Vob2xkZXIsIEluZmluaXRlU2Nyb2xsLFxuICAgICAgICAgICAgIEF0dGFjaEJvZHksIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLCBTZWxlY3RPbkNsb3NlLCBDbG9zZU9uU2VsZWN0LFxuICAgICAgICAgICAgIERyb3Bkb3duQ1NTLCBUYWdzU2VhcmNoSGlnaGxpZ2h0LFxuXG4gICAgICAgICAgICAgRW5nbGlzaFRyYW5zbGF0aW9uKSB7XG4gIGZ1bmN0aW9uIERlZmF1bHRzICgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5kZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFqYXhEYXRhO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gQXJyYXlEYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFNlbGVjdERhdGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWF4aW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIE1heGltdW1TZWxlY3Rpb25MZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudGFncykge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUob3B0aW9ucy5kYXRhQWRhcHRlciwgVGFncyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRva2VuU2VwYXJhdG9ycyAhPSBudWxsIHx8IG9wdGlvbnMudG9rZW5pemVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgVG9rZW5pemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFJlc3VsdHNMaXN0O1xuXG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgSW5maW5pdGVTY3JvbGxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMucGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBIaWRlUGxhY2Vob2xkZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0T25DbG9zZSkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3RPbkNsb3NlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRhZ3MpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgVGFnc1NlYXJjaEhpZ2hsaWdodFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IERyb3Bkb3duO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIFNlYXJjaGFibGVEcm9wZG93biA9IFV0aWxzLkRlY29yYXRlKERyb3Bkb3duLCBEcm9wZG93blNlYXJjaCk7XG5cbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBTZWFyY2hhYmxlRHJvcGRvd247XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoICE9PSAwKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2hcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICAgIENsb3NlT25TZWxlY3RcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuZHJvcGRvd25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgRHJvcGRvd25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgIEF0dGFjaEJvZHlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBNdWx0aXBsZVNlbGVjdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFNpbmdsZVNlbGVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHRoZSBwbGFjZWhvbGRlciBtaXhpbiBpZiBhIHBsYWNlaG9sZGVyIHdhcyBzcGVjaWZpZWRcbiAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFBsYWNlaG9sZGVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmFsbG93Q2xlYXIpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIEFsbG93Q2xlYXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFNlbGVjdGlvblNlYXJjaFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zZWxlY3Rpb25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3Rpb25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgRXZlbnRSZWxheVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGVmYXVsdHMgd2VyZSBub3QgcHJldmlvdXNseSBhcHBsaWVkIGZyb20gYW4gZWxlbWVudCwgaXQgaXNcbiAgICAvLyBwb3NzaWJsZSBmb3IgdGhlIGxhbmd1YWdlIG9wdGlvbiB0byBoYXZlIG5vdCBiZWVuIHJlc29sdmVkXG4gICAgb3B0aW9ucy5sYW5ndWFnZSA9IHRoaXMuX3Jlc29sdmVMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlKTtcblxuICAgIC8vIEFsd2F5cyBmYWxsIGJhY2sgdG8gRW5nbGlzaCBzaW5jZSBpdCB3aWxsIGFsd2F5cyBiZSBjb21wbGV0ZVxuICAgIG9wdGlvbnMubGFuZ3VhZ2UucHVzaCgnZW4nKTtcblxuICAgIHZhciB1bmlxdWVMYW5ndWFnZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgb3B0aW9ucy5sYW5ndWFnZS5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlID0gb3B0aW9ucy5sYW5ndWFnZVtsXTtcblxuICAgICAgaWYgKHVuaXF1ZUxhbmd1YWdlcy5pbmRleE9mKGxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICAgICAgdW5pcXVlTGFuZ3VhZ2VzLnB1c2gobGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSB1bmlxdWVMYW5ndWFnZXM7XG5cbiAgICBvcHRpb25zLnRyYW5zbGF0aW9ucyA9IHRoaXMuX3Byb2Nlc3NUcmFuc2xhdGlvbnMoXG4gICAgICBvcHRpb25zLmxhbmd1YWdlLFxuICAgICAgb3B0aW9ucy5kZWJ1Z1xuICAgICk7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzICh0ZXh0KSB7XG4gICAgICAvLyBVc2VkICd1bmkgcmFuZ2UgKyBuYW1lZCBmdW5jdGlvbicgZnJvbSBodHRwOi8vanNwZXJmLmNvbS9kaWFjcml0aWNzLzE4XG4gICAgICBmdW5jdGlvbiBtYXRjaChhKSB7XG4gICAgICAgIHJldHVybiBESUFDUklUSUNTW2FdIHx8IGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLCBtYXRjaCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hlciAocGFyYW1zLCBkYXRhKSB7XG4gICAgICAvLyBBbHdheXMgcmV0dXJuIHRoZSBvYmplY3QgaWYgdGhlcmUgaXMgbm90aGluZyB0byBjb21wYXJlXG4gICAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMudGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBEbyBhIHJlY3Vyc2l2ZSBjaGVjayBmb3Igb3B0aW9ucyB3aXRoIGNoaWxkcmVuXG4gICAgICBpZiAoZGF0YS5jaGlsZHJlbiAmJiBkYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIGRhdGEgb2JqZWN0IGlmIHRoZXJlIGFyZSBjaGlsZHJlblxuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGFzIHdlIG1vZGlmeSB0aGUgb2JqZWN0IHRvIHJlbW92ZSBhbnkgbm9uLW1hdGNoZXNcbiAgICAgICAgdmFyIG1hdGNoID0gJC5leHRlbmQodHJ1ZSwge30sIGRhdGEpO1xuXG4gICAgICAgIC8vIENoZWNrIGVhY2ggY2hpbGQgb2YgdGhlIG9wdGlvblxuICAgICAgICBmb3IgKHZhciBjID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBjID49IDA7IGMtLSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IG1hdGNoZXIocGFyYW1zLCBjaGlsZCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSB3YXNuJ3QgYSBtYXRjaCwgcmVtb3ZlIHRoZSBvYmplY3QgaW4gdGhlIGFycmF5XG4gICAgICAgICAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgbWF0Y2guY2hpbGRyZW4uc3BsaWNlKGMsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGFueSBjaGlsZHJlbiBtYXRjaGVkLCByZXR1cm4gdGhlIG5ldyBvYmplY3RcbiAgICAgICAgaWYgKG1hdGNoLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGNoaWxkcmVuLCBjaGVjayBqdXN0IHRoZSBwbGFpbiBvYmplY3RcbiAgICAgICAgcmV0dXJuIG1hdGNoZXIocGFyYW1zLCBtYXRjaCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvcmlnaW5hbCA9IHN0cmlwRGlhY3JpdGljcyhkYXRhLnRleHQpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB2YXIgdGVybSA9IHN0cmlwRGlhY3JpdGljcyhwYXJhbXMudGVybSkudG9VcHBlckNhc2UoKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHRleHQgY29udGFpbnMgdGhlIHRlcm1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKHRlcm0pID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGl0IGRvZXNuJ3QgY29udGFpbiB0aGUgdGVybSwgZG9uJ3QgcmV0dXJuIGFueXRoaW5nXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgYW1kTGFuZ3VhZ2VCYXNlOiAnLi9pMThuLycsXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiBmYWxzZSxcbiAgICAgIGVzY2FwZU1hcmt1cDogVXRpbHMuZXNjYXBlTWFya3VwLFxuICAgICAgbGFuZ3VhZ2U6IHt9LFxuICAgICAgbWF0Y2hlcjogbWF0Y2hlcixcbiAgICAgIG1pbmltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDAsXG4gICAgICBtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDogMCxcbiAgICAgIHNlbGVjdE9uQ2xvc2U6IGZhbHNlLFxuICAgICAgc2Nyb2xsQWZ0ZXJTZWxlY3Q6IGZhbHNlLFxuICAgICAgc29ydGVyOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZVJlc3VsdDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRleHQ7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi50ZXh0O1xuICAgICAgfSxcbiAgICAgIHRoZW1lOiAnZGVmYXVsdCcsXG4gICAgICB3aWR0aDogJ3Jlc29sdmUnXG4gICAgfTtcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHlGcm9tRWxlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zLCAkZWxlbWVudCkge1xuICAgIHZhciBvcHRpb25MYW5ndWFnZSA9IG9wdGlvbnMubGFuZ3VhZ2U7XG4gICAgdmFyIGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMuZGVmYXVsdHMubGFuZ3VhZ2U7XG4gICAgdmFyIGVsZW1lbnRMYW5ndWFnZSA9ICRlbGVtZW50LnByb3AoJ2xhbmcnKTtcbiAgICB2YXIgcGFyZW50TGFuZ3VhZ2UgPSAkZWxlbWVudC5jbG9zZXN0KCdbbGFuZ10nKS5wcm9wKCdsYW5nJyk7XG5cbiAgICB2YXIgbGFuZ3VhZ2VzID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGVsZW1lbnRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2Uob3B0aW9uTGFuZ3VhZ2UpLFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGRlZmF1bHRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UocGFyZW50TGFuZ3VhZ2UpXG4gICAgKTtcblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSBsYW5ndWFnZXM7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuX3Jlc29sdmVMYW5ndWFnZSA9IGZ1bmN0aW9uIChsYW5ndWFnZSkge1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoJC5pc0VtcHR5T2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICgkLmlzUGxhaW5PYmplY3QobGFuZ3VhZ2UpKSB7XG4gICAgICByZXR1cm4gW2xhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB2YXIgbGFuZ3VhZ2VzO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxhbmd1YWdlKSkge1xuICAgICAgbGFuZ3VhZ2VzID0gW2xhbmd1YWdlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFuZ3VhZ2VzID0gbGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmVkTGFuZ3VhZ2VzID0gW107XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgcmVzb2x2ZWRMYW5ndWFnZXMucHVzaChsYW5ndWFnZXNbbF0pO1xuXG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlc1tsXSA9PT0gJ3N0cmluZycgJiYgbGFuZ3VhZ2VzW2xdLmluZGV4T2YoJy0nKSA+IDApIHtcbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgcmVnaW9uIGluZm9ybWF0aW9uIGlmIGl0IGlzIGluY2x1ZGVkXG4gICAgICAgIHZhciBsYW5ndWFnZVBhcnRzID0gbGFuZ3VhZ2VzW2xdLnNwbGl0KCctJyk7XG4gICAgICAgIHZhciBiYXNlTGFuZ3VhZ2UgPSBsYW5ndWFnZVBhcnRzWzBdO1xuXG4gICAgICAgIHJlc29sdmVkTGFuZ3VhZ2VzLnB1c2goYmFzZUxhbmd1YWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRMYW5ndWFnZXM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLl9wcm9jZXNzVHJhbnNsYXRpb25zID0gZnVuY3Rpb24gKGxhbmd1YWdlcywgZGVidWcpIHtcbiAgICB2YXIgdHJhbnNsYXRpb25zID0gbmV3IFRyYW5zbGF0aW9uKCk7XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlRGF0YSA9IG5ldyBUcmFuc2xhdGlvbigpO1xuXG4gICAgICB2YXIgbGFuZ3VhZ2UgPSBsYW5ndWFnZXNbbF07XG5cbiAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIGxvYWQgaXQgd2l0aCB0aGUgb3JpZ2luYWwgbmFtZVxuICAgICAgICAgIGxhbmd1YWdlRGF0YSA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKGxhbmd1YWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBsb2FkIGl0LCBjaGVjayBpZiBpdCB3YXNuJ3QgdGhlIGZ1bGwgcGF0aFxuICAgICAgICAgICAgbGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIGxhbmd1YWdlO1xuICAgICAgICAgICAgbGFuZ3VhZ2VEYXRhID0gVHJhbnNsYXRpb24ubG9hZFBhdGgobGFuZ3VhZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICAvLyBUaGUgdHJhbnNsYXRpb24gY291bGQgbm90IGJlIGxvYWRlZCBhdCBhbGwuIFNvbWV0aW1lcyB0aGlzIGlzXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG9mIGEgY29uZmlndXJhdGlvbiBwcm9ibGVtLCBvdGhlciB0aW1lcyB0aGlzIGNhbiBiZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiBob3cgU2VsZWN0MiBoZWxwcyBsb2FkIGFsbCBwb3NzaWJsZSB0cmFuc2xhdGlvbiBmaWxlc1xuICAgICAgICAgICAgaWYgKGRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NlbGVjdDI6IFRoZSBsYW5ndWFnZSBmaWxlIGZvciBcIicgKyBsYW5ndWFnZSArICdcIiBjb3VsZCAnICtcbiAgICAgICAgICAgICAgICAnbm90IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBBIGZhbGxiYWNrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgICBsYW5ndWFnZURhdGEgPSBuZXcgVHJhbnNsYXRpb24obGFuZ3VhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFuZ3VhZ2VEYXRhID0gbGFuZ3VhZ2U7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zbGF0aW9ucy5leHRlbmQobGFuZ3VhZ2VEYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNsYXRpb25zO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBjYW1lbEtleSA9ICQuY2FtZWxDYXNlKGtleSk7XG5cbiAgICB2YXIgZGF0YSA9IHt9O1xuICAgIGRhdGFbY2FtZWxLZXldID0gdmFsdWU7XG5cbiAgICB2YXIgY29udmVydGVkRGF0YSA9IFV0aWxzLl9jb252ZXJ0RGF0YShkYXRhKTtcblxuICAgICQuZXh0ZW5kKHRydWUsIHRoaXMuZGVmYXVsdHMsIGNvbnZlcnRlZERhdGEpO1xuICB9O1xuXG4gIHZhciBkZWZhdWx0cyA9IG5ldyBEZWZhdWx0cygpO1xuXG4gIHJldHVybiBkZWZhdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvb3B0aW9ucycsW1xuICAnanF1ZXJ5JyxcbiAgJy4vZGVmYXVsdHMnLFxuICAnLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBEZWZhdWx0cywgVXRpbHMpIHtcbiAgZnVuY3Rpb24gT3B0aW9ucyAob3B0aW9ucywgJGVsZW1lbnQpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgaWYgKCRlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZnJvbUVsZW1lbnQoJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICgkZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBEZWZhdWx0cy5hcHBseUZyb21FbGVtZW50KHRoaXMub3B0aW9ucywgJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IERlZmF1bHRzLmFwcGx5KHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBPcHRpb25zLnByb3RvdHlwZS5mcm9tRWxlbWVudCA9IGZ1bmN0aW9uICgkZSkge1xuICAgIHZhciBleGNsdWRlZERhdGEgPSBbJ3NlbGVjdDInXTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vcHRpb25zLm11bHRpcGxlID0gJGUucHJvcCgnbXVsdGlwbGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkID09IG51bGwpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9ICRlLnByb3AoJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUgPT0gbnVsbCAmJiAkZS5wcm9wKCdhdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZSA9ICRlLnByb3AoJ2F1dG9jb21wbGV0ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyID09IG51bGwpIHtcbiAgICAgIGlmICgkZS5wcm9wKCdkaXInKSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJGUucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2UgaWYgKCRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJykpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpciA9ICRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJ2x0cic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGUucHJvcCgnZGlzYWJsZWQnLCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpO1xuICAgICRlLnByb3AoJ211bHRpcGxlJywgdGhpcy5vcHRpb25zLm11bHRpcGxlKTtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAndXNlIHRoZSBgZGF0YS1kYXRhYCBhbmQgYGRhdGEtdGFncz1cInRydWVcImAgYXR0cmlidXRlcyBhbmQgd2lsbCBiZSAnICtcbiAgICAgICAgICAncmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkZVswXSwgJ2RhdGEnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSk7XG4gICAgICBVdGlscy5TdG9yZURhdGEoJGVbMF0sICd0YWdzJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAnYGRhdGEtYWpheC0tdXJsYCBhbmQgc3VwcG9ydCBmb3IgdGhlIG9sZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkJyArXG4gICAgICAgICAgJyBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgICRlLmF0dHIoJ2FqYXgtLXVybCcsIFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpO1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRlWzBdLCAnYWpheC1VcmwnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnYWpheFVybCcpKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YXNldCA9IHt9O1xuXG4gICAgZnVuY3Rpb24gdXBwZXJDYXNlTGV0dGVyKF8sIGxldHRlcikge1xuICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIFByZS1sb2FkIGFsbCBvZiB0aGUgYXR0cmlidXRlcyB3aGljaCBhcmUgcHJlZml4ZWQgd2l0aCBgZGF0YS1gXG4gICAgZm9yICh2YXIgYXR0ciA9IDA7IGF0dHIgPCAkZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDsgYXR0cisrKSB7XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9ICRlWzBdLmF0dHJpYnV0ZXNbYXR0cl0ubmFtZTtcbiAgICAgIHZhciBwcmVmaXggPSAnZGF0YS0nO1xuXG4gICAgICBpZiAoYXR0cmlidXRlTmFtZS5zdWJzdHIoMCwgcHJlZml4Lmxlbmd0aCkgPT0gcHJlZml4KSB7XG4gICAgICAgIC8vIEdldCB0aGUgY29udGVudHMgb2YgdGhlIGF0dHJpYnV0ZSBhZnRlciBgZGF0YS1gXG4gICAgICAgIHZhciBkYXRhTmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZGF0YSBjb250ZW50cyBmcm9tIHRoZSBjb25zaXN0ZW50IHNvdXJjZVxuICAgICAgICAvLyBUaGlzIGlzIG1vcmUgdGhhbiBsaWtlbHkgdGhlIGpRdWVyeSBkYXRhIGhlbHBlclxuICAgICAgICB2YXIgZGF0YVZhbHVlID0gVXRpbHMuR2V0RGF0YSgkZVswXSwgZGF0YU5hbWUpO1xuXG4gICAgICAgIC8vIGNhbWVsQ2FzZSB0aGUgYXR0cmlidXRlIG5hbWUgdG8gbWF0Y2ggdGhlIHNwZWNcbiAgICAgICAgdmFyIGNhbWVsRGF0YU5hbWUgPSBkYXRhTmFtZS5yZXBsYWNlKC8tKFthLXpdKS9nLCB1cHBlckNhc2VMZXR0ZXIpO1xuXG4gICAgICAgIC8vIFN0b3JlIHRoZSBkYXRhIGF0dHJpYnV0ZSBjb250ZW50cyBpbnRvIHRoZSBkYXRhc2V0IHNpbmNlXG4gICAgICAgIGRhdGFzZXRbY2FtZWxEYXRhTmFtZV0gPSBkYXRhVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIHRoZSBlbGVtZW50J3MgYGRhdGFzZXRgIGF0dHJpYnV0ZSBpZiBpdCBleGlzdHNcbiAgICAvLyBqUXVlcnkgMS54IGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgZGF0YSBhdHRyaWJ1dGVzIHdpdGggbXVsdGlwbGUgZGFzaGVzXG4gICAgaWYgKCQuZm4uanF1ZXJ5ICYmICQuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSA9PSAnMS4nICYmICRlWzBdLmRhdGFzZXQpIHtcbiAgICAgIGRhdGFzZXQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgJGVbMF0uZGF0YXNldCwgZGF0YXNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIG91ciBpbnRlcm5hbCBkYXRhIGNhY2hlIGlmIGl0IGV4aXN0c1xuICAgIHZhciBkYXRhID0gJC5leHRlbmQodHJ1ZSwge30sIFV0aWxzLkdldERhdGEoJGVbMF0pLCBkYXRhc2V0KTtcblxuICAgIGRhdGEgPSBVdGlscy5fY29udmVydERhdGEoZGF0YSk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKGV4Y2x1ZGVkRGF0YS5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgJC5leHRlbmQodGhpcy5vcHRpb25zW2tleV0sIGRhdGFba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNba2V5XSA9IGRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBPcHRpb25zLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1trZXldO1xuICB9O1xuXG4gIE9wdGlvbnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsO1xuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9jb3JlJyxbXG4gICdqcXVlcnknLFxuICAnLi9vcHRpb25zJyxcbiAgJy4vdXRpbHMnLFxuICAnLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIE9wdGlvbnMsIFV0aWxzLCBLRVlTKSB7XG4gIHZhciBTZWxlY3QyID0gZnVuY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJykgIT0gbnVsbCkge1xuICAgICAgVXRpbHMuR2V0RGF0YSgkZWxlbWVudFswXSwgJ3NlbGVjdDInKS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuXG4gICAgdGhpcy5pZCA9IHRoaXMuX2dlbmVyYXRlSWQoJGVsZW1lbnQpO1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgT3B0aW9ucyhvcHRpb25zLCAkZWxlbWVudCk7XG5cbiAgICBTZWxlY3QyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuXG4gICAgLy8gU2V0IHVwIHRoZSB0YWJpbmRleFxuXG4gICAgdmFyIHRhYmluZGV4ID0gJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSB8fCAwO1xuICAgIFV0aWxzLlN0b3JlRGF0YSgkZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICAkZWxlbWVudC5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuXG4gICAgLy8gU2V0IHVwIGNvbnRhaW5lcnMgYW5kIGFkYXB0ZXJzXG5cbiAgICB2YXIgRGF0YUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkYXRhQWRhcHRlcicpO1xuICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgRGF0YUFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG5cbiAgICB2YXIgJGNvbnRhaW5lciA9IHRoaXMucmVuZGVyKCk7XG5cbiAgICB0aGlzLl9wbGFjZUNvbnRhaW5lcigkY29udGFpbmVyKTtcblxuICAgIHZhciBTZWxlY3Rpb25BZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQWRhcHRlcicpO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbkFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24ucmVuZGVyKCk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5wb3NpdGlvbih0aGlzLiRzZWxlY3Rpb24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIERyb3Bkb3duQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ2Ryb3Bkb3duQWRhcHRlcicpO1xuICAgIHRoaXMuZHJvcGRvd24gPSBuZXcgRHJvcGRvd25BZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuJGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5yZW5kZXIoKTtcblxuICAgIHRoaXMuZHJvcGRvd24ucG9zaXRpb24odGhpcy4kZHJvcGRvd24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIFJlc3VsdHNBZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgncmVzdWx0c0FkYXB0ZXInKTtcbiAgICB0aGlzLnJlc3VsdHMgPSBuZXcgUmVzdWx0c0FkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucywgdGhpcy5kYXRhQWRhcHRlcik7XG4gICAgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKTtcblxuICAgIHRoaXMucmVzdWx0cy5wb3NpdGlvbih0aGlzLiRyZXN1bHRzLCB0aGlzLiRkcm9wZG93bik7XG5cbiAgICAvLyBCaW5kIGV2ZW50c1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQmluZCB0aGUgY29udGFpbmVyIHRvIGFsbCBvZiB0aGUgYWRhcHRlcnNcbiAgICB0aGlzLl9iaW5kQWRhcHRlcnMoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGFueSBET00gZXZlbnQgaGFuZGxlcnNcbiAgICB0aGlzLl9yZWdpc3RlckRvbUV2ZW50cygpO1xuXG4gICAgLy8gUmVnaXN0ZXIgYW55IGludGVybmFsIGV2ZW50IGhhbmRsZXJzXG4gICAgdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJFdmVudHMoKTtcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoaW5pdGlhbERhdGEpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcbiAgICAgICAgZGF0YTogaW5pdGlhbERhdGFcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gSGlkZSB0aGUgb3JpZ2luYWwgc2VsZWN0XG4gICAgJGVsZW1lbnRbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgICRlbGVtZW50LmF0dHIoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcblxuICAgIC8vIFN5bmNocm9uaXplIGFueSBtb25pdG9yZWQgYXR0cmlidXRlc1xuICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKCk7XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJywgdGhpcyk7XG5cbiAgICAvLyBFbnN1cmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCAkZWxlbWVudC5kYXRhKCdzZWxlY3QyJykuXG4gICAgJGVsZW1lbnQuZGF0YSgnc2VsZWN0MicsIHRoaXMpO1xuICB9O1xuXG4gIFV0aWxzLkV4dGVuZChTZWxlY3QyLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fZ2VuZXJhdGVJZCA9IGZ1bmN0aW9uICgkZWxlbWVudCkge1xuICAgIHZhciBpZCA9ICcnO1xuXG4gICAgaWYgKCRlbGVtZW50LmF0dHIoJ2lkJykgIT0gbnVsbCkge1xuICAgICAgaWQgPSAkZWxlbWVudC5hdHRyKCdpZCcpO1xuICAgIH0gZWxzZSBpZiAoJGVsZW1lbnQuYXR0cignbmFtZScpICE9IG51bGwpIHtcbiAgICAgIGlkID0gJGVsZW1lbnQuYXR0cignbmFtZScpICsgJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycygyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgIH1cblxuICAgIGlkID0gaWQucmVwbGFjZSgvKDp8XFwufFxcW3xcXF18LCkvZywgJycpO1xuICAgIGlkID0gJ3NlbGVjdDItJyArIGlkO1xuXG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9wbGFjZUNvbnRhaW5lciA9IGZ1bmN0aW9uICgkY29udGFpbmVyKSB7XG4gICAgJGNvbnRhaW5lci5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTtcblxuICAgIHZhciB3aWR0aCA9IHRoaXMuX3Jlc29sdmVXaWR0aCh0aGlzLiRlbGVtZW50LCB0aGlzLm9wdGlvbnMuZ2V0KCd3aWR0aCcpKTtcblxuICAgIGlmICh3aWR0aCAhPSBudWxsKSB7XG4gICAgICAkY29udGFpbmVyLmNzcygnd2lkdGgnLCB3aWR0aCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZXNvbHZlV2lkdGggPSBmdW5jdGlvbiAoJGVsZW1lbnQsIG1ldGhvZCkge1xuICAgIHZhciBXSURUSCA9IC9ed2lkdGg6KChbLStdPyhbMC05XSpcXC4pP1swLTldKykocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykpL2k7XG5cbiAgICBpZiAobWV0aG9kID09ICdyZXNvbHZlJykge1xuICAgICAgdmFyIHN0eWxlV2lkdGggPSB0aGlzLl9yZXNvbHZlV2lkdGgoJGVsZW1lbnQsICdzdHlsZScpO1xuXG4gICAgICBpZiAoc3R5bGVXaWR0aCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHlsZVdpZHRoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVdpZHRoKCRlbGVtZW50LCAnZWxlbWVudCcpO1xuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT0gJ2VsZW1lbnQnKSB7XG4gICAgICB2YXIgZWxlbWVudFdpZHRoID0gJGVsZW1lbnQub3V0ZXJXaWR0aChmYWxzZSk7XG5cbiAgICAgIGlmIChlbGVtZW50V2lkdGggPD0gMCkge1xuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFdpZHRoICsgJ3B4JztcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdzdHlsZScpIHtcbiAgICAgIHZhciBzdHlsZSA9ICRlbGVtZW50LmF0dHIoJ3N0eWxlJyk7XG5cbiAgICAgIGlmICh0eXBlb2Yoc3R5bGUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGF0dHJzID0gc3R5bGUuc3BsaXQoJzsnKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpID0gaSArIDEpIHtcbiAgICAgICAgdmFyIGF0dHIgPSBhdHRyc1tpXS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGF0dHIubWF0Y2goV0lEVEgpO1xuXG4gICAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsICYmIG1hdGNoZXMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2hlc1sxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdjb21wdXRlZHN0eWxlJykge1xuICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSgkZWxlbWVudFswXSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZFN0eWxlLndpZHRoO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRob2Q7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2JpbmRBZGFwdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnJlc3VsdHMuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckRvbUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdjaGFuZ2Uuc2VsZWN0MicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kZWxlbWVudC5vbignZm9jdXMuc2VsZWN0MicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3luY0EgPSBVdGlscy5iaW5kKHRoaXMuX3N5bmNBdHRyaWJ1dGVzLCB0aGlzKTtcbiAgICB0aGlzLl9zeW5jUyA9IFV0aWxzLmJpbmQodGhpcy5fc3luY1N1YnRyZWUsIHRoaXMpO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgICAgc2VsZi5fc3luY0EoKTtcbiAgICAgIHNlbGYuX3N5bmNTKG11dGF0aW9ucyk7XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogZmFsc2VcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub25SZWxheUV2ZW50cyA9IFsndG9nZ2xlJywgJ2ZvY3VzJ107XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5vbigndG9nZ2xlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi50b2dnbGVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5mb2N1cyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBpZiAobm9uUmVsYXlFdmVudHMuaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnJlc3VsdHMub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAoIXNlbGYuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdvcGVuJywge30pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHBhcmFtcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmFsbCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ3F1ZXJ5OmFwcGVuZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHRoaXMuZGF0YUFkYXB0ZXIucXVlcnkocGFyYW1zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6YXBwZW5kJywge1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoc2VsZi5pc09wZW4oKSkge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVTQyB8fCAoa2V5ID09PSBLRVlTLlVQICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5jbG9zZShldnQpO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5UQUIpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6c2VsZWN0Jywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PT0gS0VZUy5TUEFDRSAmJiBldnQuY3RybEtleSkpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6dG9nZ2xlJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLlVQKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnByZXZpb3VzJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkRPV04pIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bmV4dCcsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5TUEFDRSB8fFxuICAgICAgICAgICAgKGtleSA9PT0gS0VZUy5ET1dOICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5vcGVuKCk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm9wdGlvbnMuc2V0KCdkaXNhYmxlZCcsIHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnKSk7XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmlnZ2VyKCdkaXNhYmxlJywge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ2VuYWJsZScsIHt9KTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2lzQ2hhbmdlTXV0YXRpb24gPSBmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKG11dGF0aW9ucy5hZGRlZE5vZGVzICYmIG11dGF0aW9ucy5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbXV0YXRpb25zLmFkZGVkTm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBtdXRhdGlvbnMuYWRkZWROb2Rlc1tuXTtcblxuICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtdXRhdGlvbnMucmVtb3ZlZE5vZGVzICYmIG11dGF0aW9ucy5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG11dGF0aW9ucykpIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbnMuc29tZShmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jU3VidHJlZSA9IGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICB2YXIgY2hhbmdlZCA9IHRoaXMuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb25zKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBPbmx5IHJlLXB1bGwgdGhlIGRhdGEgaWYgd2UgdGhpbmsgdGhlcmUgaXMgYSBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogY3VycmVudERhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSB0cmlnZ2VyIG1ldGhvZCB0byBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgcHJlLWV2ZW50cyB3aGVuXG4gICAqIHRoZXJlIGFyZSBldmVudHMgdGhhdCBjYW4gYmUgcHJldmVudGVkLlxuICAgKi9cbiAgU2VsZWN0Mi5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChuYW1lLCBhcmdzKSB7XG4gICAgdmFyIGFjdHVhbFRyaWdnZXIgPSBTZWxlY3QyLl9fc3VwZXJfXy50cmlnZ2VyO1xuICAgIHZhciBwcmVUcmlnZ2VyTWFwID0ge1xuICAgICAgJ29wZW4nOiAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnOiAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JzogJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnOiAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJzogJ2NsZWFyaW5nJ1xuICAgIH07XG5cbiAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzID0ge307XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgaW4gcHJlVHJpZ2dlck1hcCkge1xuICAgICAgdmFyIHByZVRyaWdnZXJOYW1lID0gcHJlVHJpZ2dlck1hcFtuYW1lXTtcbiAgICAgIHZhciBwcmVUcmlnZ2VyQXJncyA9IHtcbiAgICAgICAgcHJldmVudGVkOiBmYWxzZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXJnczogYXJnc1xuICAgICAgfTtcblxuICAgICAgYWN0dWFsVHJpZ2dlci5jYWxsKHRoaXMsIHByZVRyaWdnZXJOYW1lLCBwcmVUcmlnZ2VyQXJncyk7XG5cbiAgICAgIGlmIChwcmVUcmlnZ2VyQXJncy5wcmV2ZW50ZWQpIHtcbiAgICAgICAgYXJncy5wcmV2ZW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3R1YWxUcmlnZ2VyLmNhbGwodGhpcywgbmFtZSwgYXJncyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge30pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7IG9yaWdpbmFsRXZlbnQgOiBldnQgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZW5hYmxlZFwiIChub3QgXCJkaXNhYmxlZFwiKSBzdGF0ZSBvZiB0aGlzXG4gICAqIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBpbnN0YW5jZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImRpc2FibGVkXCIgc3RhdGUgb2YgdGhpcyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgZmFsc2UuXG4gICAqL1xuICBTZWxlY3QyLnByb3RvdHlwZS5pc0Rpc2FibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzT3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5oYXNGb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIC8vIE5vIG5lZWQgdG8gcmUtdHJpZ2dlciBmb2N1cyBldmVudHMgaWYgd2UgYXJlIGFscmVhZHkgZm9jdXNlZFxuICAgIGlmICh0aGlzLmhhc0ZvY3VzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gICAgdGhpcy50cmlnZ2VyKCdmb2N1cycsIHt9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwiZW5hYmxlXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCcgK1xuICAgICAgICAnIGJlIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnByb3AoXCJkaXNhYmxlZFwiKScgK1xuICAgICAgICAnIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncyA9PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBhcmdzID0gW3RydWVdO1xuICAgIH1cblxuICAgIHZhciBkaXNhYmxlZCA9ICFhcmdzWzBdO1xuXG4gICAgdGhpcy4kZWxlbWVudC5wcm9wKCdkaXNhYmxlZCcsIGRpc2FibGVkKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmXG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MihcImRhdGFcIilgLiBZb3UgJyArXG4gICAgICAgICdzaG91bGQgY29uc2lkZXIgc2V0dGluZyB0aGUgdmFsdWUgaW5zdGVhZCB1c2luZyBgJGVsZW1lbnQudmFsKClgLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgIGRhdGEgPSBjdXJyZW50RGF0YTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLnZhbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoXCJ2YWxcIilgIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlJyArXG4gICAgICAgICcgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzID09IG51bGwgfHwgYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LnZhbCgpO1xuICAgIH1cblxuICAgIHZhciBuZXdWYWwgPSBhcmdzWzBdO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgbmV3VmFsID0gbmV3VmFsLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmoudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudmFsKG5ld1ZhbCkudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcy4kY29udGFpbmVyWzBdKTtcbiAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fc3luY0EgPSBudWxsO1xuICAgIHRoaXMuX3N5bmNTID0gbnVsbDtcblxuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuc2VsZWN0MicpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnLFxuICAgIFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICBVdGlscy5SZW1vdmVEYXRhKHRoaXMuJGVsZW1lbnRbMF0pO1xuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlRGF0YSgnc2VsZWN0MicpO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpO1xuICAgIHRoaXMuZHJvcGRvd24uZGVzdHJveSgpO1xuICAgIHRoaXMucmVzdWx0cy5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5kcm9wZG93biA9IG51bGw7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRjb250YWluZXIgPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0MiBzZWxlY3QyLWNvbnRhaW5lclwiPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3Rpb25cIj48L3NwYW4+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgJGNvbnRhaW5lci5hdHRyKCdkaXInLCB0aGlzLm9wdGlvbnMuZ2V0KCdkaXInKSk7XG5cbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xuXG4gICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdFxuICAgICAgLmFkZCgnc2VsZWN0Mi1jb250YWluZXItLScgKyB0aGlzLm9wdGlvbnMuZ2V0KCd0aGVtZScpKTtcblxuICAgIFV0aWxzLlN0b3JlRGF0YSgkY29udGFpbmVyWzBdLCAnZWxlbWVudCcsIHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICRjb250YWluZXI7XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdDI7XG59KTtcblxuUzIuZGVmaW5lKCdqcXVlcnktbW91c2V3aGVlbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgLy8gVXNlZCB0byBzaGltIGpRdWVyeS5tb3VzZXdoZWVsIGZvciBub24tZnVsbCBidWlsZHMuXG4gIHJldHVybiAkO1xufSk7XG5cblMyLmRlZmluZSgnanF1ZXJ5LnNlbGVjdDInLFtcbiAgJ2pxdWVyeScsXG4gICdqcXVlcnktbW91c2V3aGVlbCcsXG5cbiAgJy4vc2VsZWN0Mi9jb3JlJyxcbiAgJy4vc2VsZWN0Mi9kZWZhdWx0cycsXG4gICcuL3NlbGVjdDIvdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgXywgU2VsZWN0MiwgRGVmYXVsdHMsIFV0aWxzKSB7XG4gIGlmICgkLmZuLnNlbGVjdDIgPT0gbnVsbCkge1xuICAgIC8vIEFsbCBtZXRob2RzIHRoYXQgc2hvdWxkIHJldHVybiB0aGUgZWxlbWVudFxuICAgIHZhciB0aGlzTWV0aG9kcyA9IFsnb3BlbicsICdjbG9zZScsICdkZXN0cm95J107XG5cbiAgICAkLmZuLnNlbGVjdDIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2VPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFNlbGVjdDIoJCh0aGlzKSwgaW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgcmV0O1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVdGlscy5HZXREYXRhKHRoaXMsICdzZWxlY3QyJyk7XG5cbiAgICAgICAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVGhlIHNlbGVjdDIoXFwnJyArIG9wdGlvbnMgKyAnXFwnKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiAnICtcbiAgICAgICAgICAgICAgJ2VsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgU2VsZWN0Mi4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldCA9IGluc3RhbmNlW29wdGlvbnNdLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGJlIHJldHVybmluZyBgdGhpc2BcbiAgICAgICAgaWYgKHRoaXNNZXRob2RzLmluZGV4T2Yob3B0aW9ucykgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMgZm9yIFNlbGVjdDI6ICcgKyBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKCQuZm4uc2VsZWN0Mi5kZWZhdWx0cyA9PSBudWxsKSB7XG4gICAgJC5mbi5zZWxlY3QyLmRlZmF1bHRzID0gRGVmYXVsdHM7XG4gIH1cblxuICByZXR1cm4gU2VsZWN0Mjtcbn0pO1xuXG4gIC8vIFJldHVybiB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgdGhpcyBmaWxlXG4gIHJldHVybiB7XG4gICAgZGVmaW5lOiBTMi5kZWZpbmUsXG4gICAgcmVxdWlyZTogUzIucmVxdWlyZVxuICB9O1xufSgpKTtcblxuICAvLyBBdXRvbG9hZCB0aGUgalF1ZXJ5IGJpbmRpbmdzXG4gIC8vIFdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIG1vZHVsZXMgZXhpc3QgYWJvdmUgdGhpcywgc28gd2UncmUgc2FmZVxuICB2YXIgc2VsZWN0MiA9IFMyLnJlcXVpcmUoJ2pxdWVyeS5zZWxlY3QyJyk7XG5cbiAgLy8gSG9sZCB0aGUgQU1EIG1vZHVsZSByZWZlcmVuY2VzIG9uIHRoZSBqUXVlcnkgZnVuY3Rpb24gdGhhdCB3YXMganVzdCBsb2FkZWRcbiAgLy8gVGhpcyBhbGxvd3MgU2VsZWN0MiB0byB1c2UgdGhlIGludGVybmFsIGxvYWRlciBvdXRzaWRlIG9mIHRoaXMgZmlsZSwgc3VjaFxuICAvLyBhcyBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMuXG4gIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCA9IFMyO1xuXG4gIC8vIFJldHVybiB0aGUgU2VsZWN0MiBpbnN0YW5jZSBmb3IgYW55b25lIHdobyBpcyBpbXBvcnRpbmcgaXQuXG4gIHJldHVybiBzZWxlY3QyO1xufSkpO1xuIiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9tYWluLmNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJpbXBvcnQgeyBjb21wdXRlZCwgb3BlbkJsb2NrLCBjcmVhdGVCbG9jaywgbWVyZ2VQcm9wcyB9IGZyb20gJ3Z1ZSc7XG5cbnZhciBzY3JpcHQgPSB7XG4gIG5hbWU6ICdTdmdWdWUnLFxuICBwcm9wczoge1xuICAgIGljb246IFN0cmluZ1xuICB9LFxuXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgaWNvblBhdGggPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5pY29uLnJlcGxhY2UobmV3IFJlZ0V4cCgnLicucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCAnXFxcXCQxJyksICdnJyksICcvJykgKyAnLnN2ZycpO1xuICAgIGNvbnN0IHN2Z1N0cmluZyA9IGNvbXB1dGVkKCgpID0+IHJlcXVpcmUoYHN2Zy1maWxlcy1wYXRoLyR7aWNvblBhdGgudmFsdWV9YCkuZGVmYXVsdCk7XG4gICAgY29uc3Qgc3ZnQXR0cmlidXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICghc3ZnU3RyaW5nKSByZXR1cm4ge307XG4gICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgd3JhcHBlci5pbm5lckhUTUwgPSBzdmdTdHJpbmcudmFsdWU7XG4gICAgICBsZXQgYXR0cmlidXRlc0xpc3QgPSB3cmFwcGVyLmZpcnN0RWxlbWVudENoaWxkLmF0dHJpYnV0ZXM7XG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlc0xpc3QpLm1hcChpID0+IGF0dHJpYnV0ZXNbYXR0cmlidXRlc0xpc3RbaV0ubmFtZV0gPSBhdHRyaWJ1dGVzTGlzdFtpXS52YWx1ZSk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9KTtcbiAgICBjb25zdCBzdmdDb250ZW50ID0gY29tcHV0ZWQoKCkgPT4gc3ZnU3RyaW5nID8gc3ZnU3RyaW5nLnZhbHVlLnJlcGxhY2UoL148c3ZnW14+XSo+fDxcXC9zdmc+JC9nLCAnJykgOiBudWxsKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3ZnQXR0cmlidXRlcyxcbiAgICAgIHN2Z0NvbnRlbnRcbiAgICB9O1xuICB9XG5cbn07XG5cbmZ1bmN0aW9uIHJlbmRlcihfY3R4LCBfY2FjaGUsICRwcm9wcywgJHNldHVwLCAkZGF0YSwgJG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhcInN2Z1wiLCBtZXJnZVByb3BzKCRzZXR1cC5zdmdBdHRyaWJ1dGVzLCB7XG4gICAgaW5uZXJIVE1MOiAkc2V0dXAuc3ZnQ29udGVudFxuICB9KSwgbnVsbCwgMTYsIFtcImlubmVySFRNTFwiXSk7XG59XG5cbnNjcmlwdC5yZW5kZXIgPSByZW5kZXI7XG5cbi8vIEltcG9ydCB2dWUgY29tcG9uZW50XG4vLyBJSUZFIGluamVjdHMgaW5zdGFsbCBmdW5jdGlvbiBpbnRvIGNvbXBvbmVudCwgYWxsb3dpbmcgY29tcG9uZW50XG4vLyB0byBiZSByZWdpc3RlcmVkIHZpYSBWdWUudXNlKCkgYXMgd2VsbCBhcyBWdWUuY29tcG9uZW50KCksXG5cbnZhciBlbnRyeV9lc20gPSAvKiNfX1BVUkVfXyovKCgpID0+IHtcbiAgLy8gR2V0IGNvbXBvbmVudCBpbnN0YW5jZVxuICBjb25zdCBpbnN0YWxsYWJsZSA9IHNjcmlwdDsgLy8gQXR0YWNoIGluc3RhbGwgZnVuY3Rpb24gZXhlY3V0ZWQgYnkgVnVlLnVzZSgpXG5cbiAgaW5zdGFsbGFibGUuaW5zdGFsbCA9IGFwcCA9PiB7XG4gICAgYXBwLmNvbXBvbmVudCgnU3ZnVnVlJywgaW5zdGFsbGFibGUpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YWxsYWJsZTtcbn0pKCk7IC8vIEl0J3MgcG9zc2libGUgdG8gZXhwb3NlIG5hbWVkIGV4cG9ydHMgd2hlbiB3cml0aW5nIGNvbXBvbmVudHMgdGhhdCBjYW5cbi8vIGFsc28gYmUgdXNlZCBhcyBkaXJlY3RpdmVzLCBldGMuIC0gZWcuIGltcG9ydCB7IFJvbGx1cERlbW9EaXJlY3RpdmUgfSBmcm9tICdyb2xsdXAtZGVtbyc7XG4vLyBleHBvcnQgY29uc3QgUm9sbHVwRGVtb0RpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuZXhwb3J0IGRlZmF1bHQgZW50cnlfZXNtO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG4gIHZhbHVlOiAnTW9kdWxlJ1xufSk7XG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJztcbmNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IGNvbmZpZyA9PiB7XG4gIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKTtcbiAgY29uc3Qge1xuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IGNsYXNzTmFtZSA9PiB7XG4gICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpO1xuICB9O1xuICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpID0+IHtcbiAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW107XG4gICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZsaWN0cztcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH07XG59O1xuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoY2xhc3NQYXJ0cywgY2xhc3NQYXJ0T2JqZWN0KSA9PiB7XG4gIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdO1xuICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KTtcbiAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdCA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpIDogdW5kZWZpbmVkO1xuICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydDtcbiAgfVxuICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpO1xuICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoe1xuICAgIHZhbGlkYXRvclxuICB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZDtcbn07XG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC87XG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSBjbGFzc05hbWUgPT4ge1xuICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpWzFdO1xuICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZygwLCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JykpO1xuICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5O1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5jb25zdCBjcmVhdGVDbGFzc01hcCA9IGNvbmZpZyA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZSxcbiAgICBwcmVmaXhcbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9O1xuICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLCBwcmVmaXgpO1xuICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gIH0pO1xuICByZXR1cm4gY2xhc3NNYXA7XG59O1xuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChjbGFzc0dyb3VwLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpID0+IHtcbiAgY2xhc3NHcm91cC5mb3JFYWNoKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPSBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbik7XG4gICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzRGVmaW5pdGlvbih0aGVtZSksIGNsYXNzUGFydE9iamVjdCwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgY2xhc3NHcm91cElkXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgfSk7XG4gIH0pO1xufTtcbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0LCBwYXRoKSA9PiB7XG4gIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0O1xuICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKHBhdGhQYXJ0ID0+IHtcbiAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgdmFsaWRhdG9yczogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpO1xuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Q7XG59O1xuY29uc3QgaXNUaGVtZUdldHRlciA9IGZ1bmMgPT4gZnVuYy5pc1RoZW1lR2V0dGVyO1xuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChjbGFzc0dyb3VwRW50cmllcywgcHJlZml4KSA9PiB7XG4gIGlmICghcHJlZml4KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzO1xuICB9XG4gIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoY2xhc3NEZWZpbml0aW9uID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uO1xuICAgIH0pO1xuICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdO1xuICB9KTtcbn07XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmNvbnN0IGNyZWF0ZUxydUNhY2hlID0gbWF4Q2FjaGVTaXplID0+IHtcbiAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBzZXQ6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuICBsZXQgY2FjaGVTaXplID0gMDtcbiAgbGV0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgdXBkYXRlID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgY2FjaGVTaXplKys7XG4gICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgY2FjaGVTaXplID0gMDtcbiAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZTtcbiAgICAgIGNhY2hlID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBnZXQoa2V5KSB7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJztcbmNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gY29uZmlnID0+IHtcbiAgY29uc3Qge1xuICAgIHNlcGFyYXRvcixcbiAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZVxuICB9ID0gY29uZmlnO1xuICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDE7XG4gIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdO1xuICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoO1xuICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSBjbGFzc05hbWUgPT4ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdO1xuICAgIGxldCBicmFja2V0RGVwdGggPSAwO1xuICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMDtcbiAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb247XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XTtcbiAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fCBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKSkge1xuICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpO1xuICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICBicmFja2V0RGVwdGgrKztcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgIGJyYWNrZXREZXB0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID0gbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydCk7XG4gICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPSBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKTtcbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXIgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKSA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXI7XG4gICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydCA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydCA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kaWZpZXJzLFxuICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvblxuICAgIH07XG4gIH07XG4gIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgIHJldHVybiBjbGFzc05hbWUgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoe1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgcGFyc2VDbGFzc05hbWVcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcGFyc2VDbGFzc05hbWU7XG59O1xuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuY29uc3Qgc29ydE1vZGlmaWVycyA9IG1vZGlmaWVycyA9PiB7XG4gIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm4gbW9kaWZpZXJzO1xuICB9XG4gIGNvbnN0IHNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBsZXQgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2gobW9kaWZpZXIgPT4ge1xuICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWyc7XG4gICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcik7XG4gICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpO1xuICByZXR1cm4gc29ydGVkTW9kaWZpZXJzO1xufTtcbmNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gY29uZmlnID0+ICh7XG4gIGNhY2hlOiBjcmVhdGVMcnVDYWNoZShjb25maWcuY2FjaGVTaXplKSxcbiAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpXG59KTtcbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy87XG5jb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwYXJzZUNsYXNzTmFtZSxcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH0gPSBjb25maWdVdGlscztcbiAgLyoqXG4gICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgKi9cbiAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0ID0gW107XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpO1xuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XTtcbiAgICBjb25zdCB7XG4gICAgICBtb2RpZmllcnMsXG4gICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uXG4gICAgfSA9IHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKTtcbiAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKTtcbiAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGhhc1Bvc3RmaXhNb2RpZmllciA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pIDogYmFzZUNsYXNzTmFtZSk7XG4gICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSk7XG4gICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6Jyk7XG4gICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSIDogdmFyaWFudE1vZGlmaWVyO1xuICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkO1xuICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZCk7XG4gICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV07XG4gICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApO1xuICAgIH1cbiAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuZnVuY3Rpb24gdHdKb2luKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgYXJndW1lbnQ7XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5jb25zdCB0b1ZhbHVlID0gbWl4ID0+IHtcbiAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG1peDtcbiAgfVxuICBsZXQgcmVzb2x2ZWRWYWx1ZTtcbiAgbGV0IHN0cmluZyA9ICcnO1xuICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgIGlmIChtaXhba10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10pKSB7XG4gICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJyk7XG4gICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nO1xufTtcbmZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoY3JlYXRlQ29uZmlnRmlyc3QsIC4uLmNyZWF0ZUNvbmZpZ1Jlc3QpIHtcbiAgbGV0IGNvbmZpZ1V0aWxzO1xuICBsZXQgY2FjaGVHZXQ7XG4gIGxldCBjYWNoZVNldDtcbiAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2U7XG4gIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkpO1xuICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKTtcbiAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldDtcbiAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldDtcbiAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2U7XG4gICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KTtcbiAgfVxuICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdCk7XG4gICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscyk7XG4gICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gIH07XG59XG5jb25zdCBmcm9tVGhlbWUgPSBrZXkgPT4ge1xuICBjb25zdCB0aGVtZUdldHRlciA9IHRoZW1lID0+IHRoZW1lW2tleV0gfHwgW107XG4gIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlO1xuICByZXR1cm4gdGhlbWVHZXR0ZXI7XG59O1xuY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaTtcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC87XG5jb25zdCBzdHJpbmdMZW5ndGhzID0gLyojX19QVVJFX18qL25ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKTtcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC87XG5jb25zdCBsZW5ndGhVbml0UmVnZXggPSAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvO1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC87XG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvO1xuY29uc3QgaW1hZ2VSZWdleCA9IC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkLztcbmNvbnN0IGlzTGVuZ3RoID0gdmFsdWUgPT4gaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3QgaXNBcmJpdHJhcnlMZW5ndGggPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KTtcbmNvbnN0IGlzTnVtYmVyID0gdmFsdWUgPT4gQm9vbGVhbih2YWx1ZSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKTtcbmNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKTtcbmNvbnN0IGlzSW50ZWdlciA9IHZhbHVlID0+IEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSk7XG5jb25zdCBpc1BlcmNlbnQgPSB2YWx1ZSA9PiB2YWx1ZS5lbmRzV2l0aCgnJScpICYmIGlzTnVtYmVyKHZhbHVlLnNsaWNlKDAsIC0xKSk7XG5jb25zdCBpc0FyYml0cmFyeVZhbHVlID0gdmFsdWUgPT4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IGlzVHNoaXJ0U2l6ZSA9IHZhbHVlID0+IHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IHNpemVMYWJlbHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSk7XG5jb25zdCBpc0FyYml0cmFyeVNpemUgPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBzaXplTGFiZWxzLCBpc05ldmVyKTtcbmNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKTtcbmNvbnN0IGltYWdlTGFiZWxzID0gLyojX19QVVJFX18qL25ldyBTZXQoWydpbWFnZScsICd1cmwnXSk7XG5jb25zdCBpc0FyYml0cmFyeUltYWdlID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpO1xuY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSB2YWx1ZSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpO1xuY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlO1xuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZSwgbGFiZWwsIHRlc3RWYWx1ZSkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBhcmJpdHJhcnlWYWx1ZVJlZ2V4LmV4ZWModmFsdWUpO1xuICBpZiAocmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSk7XG4gICAgfVxuICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuY29uc3QgaXNMZW5ndGhPbmx5ID0gdmFsdWUgPT5cbi8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbi8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbi8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG5sZW5ndGhVbml0UmVnZXgudGVzdCh2YWx1ZSkgJiYgIWNvbG9yRnVuY3Rpb25SZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZTtcbmNvbnN0IGlzU2hhZG93ID0gdmFsdWUgPT4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCBpc0ltYWdlID0gdmFsdWUgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IHZhbGlkYXRvcnMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBpc0FueSxcbiAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgaXNBcmJpdHJhcnlTaXplLFxuICBpc0FyYml0cmFyeVZhbHVlLFxuICBpc0ludGVnZXIsXG4gIGlzTGVuZ3RoLFxuICBpc051bWJlcixcbiAgaXNQZXJjZW50LFxuICBpc1RzaGlydFNpemVcbn0sIFN5bWJvbC50b1N0cmluZ1RhZywge1xuICB2YWx1ZTogJ01vZHVsZSdcbn0pO1xuY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKTtcbiAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpO1xuICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJyk7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKTtcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJyk7XG4gIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJyk7XG4gIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKTtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJyk7XG4gIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpO1xuICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpO1xuICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpO1xuICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpO1xuICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKTtcbiAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0Jyk7XG4gIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJyk7XG4gIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKTtcbiAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpO1xuICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKTtcbiAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJyk7XG4gIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpO1xuICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3Jyk7XG4gIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpO1xuICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpO1xuICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddO1xuICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ107XG4gIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXTtcbiAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+IFsnYm90dG9tJywgJ2NlbnRlcicsICdsZWZ0JywgJ2xlZnQtYm90dG9tJywgJ2xlZnQtdG9wJywgJ3JpZ2h0JywgJ3JpZ2h0LWJvdHRvbScsICdyaWdodC10b3AnLCAndG9wJ107XG4gIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXTtcbiAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+IFsnbm9ybWFsJywgJ211bHRpcGx5JywgJ3NjcmVlbicsICdvdmVybGF5JywgJ2RhcmtlbicsICdsaWdodGVuJywgJ2NvbG9yLWRvZGdlJywgJ2NvbG9yLWJ1cm4nLCAnaGFyZC1saWdodCcsICdzb2Z0LWxpZ2h0JywgJ2RpZmZlcmVuY2UnLCAnZXhjbHVzaW9uJywgJ2h1ZScsICdzYXR1cmF0aW9uJywgJ2NvbG9yJywgJ2x1bWlub3NpdHknXTtcbiAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXTtcbiAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PiBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddO1xuICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICByZXR1cm4ge1xuICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgIHNlcGFyYXRvcjogJzonLFxuICAgIHRoZW1lOiB7XG4gICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgIH0sXG4gICAgY2xhc3NHcm91cHM6IHtcbiAgICAgIC8vIExheW91dFxuICAgICAgLyoqXG4gICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAqL1xuICAgICAgYXNwZWN0OiBbe1xuICAgICAgICBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENvbnRhaW5lclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICovXG4gICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAvKipcbiAgICAgICAqIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgKi9cbiAgICAgIGNvbHVtbnM6IFt7XG4gICAgICAgIGNvbHVtbnM6IFtpc1RzaGlydFNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICovXG4gICAgICAnYnJlYWstYWZ0ZXInOiBbe1xuICAgICAgICAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICovXG4gICAgICAnYnJlYWstYmVmb3JlJzogW3tcbiAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgKi9cbiAgICAgICdicmVhay1pbnNpZGUnOiBbe1xuICAgICAgICAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgKi9cbiAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7XG4gICAgICAgICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgKi9cbiAgICAgIGJveDogW3tcbiAgICAgICAgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXNwbGF5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICovXG4gICAgICBkaXNwbGF5OiBbJ2Jsb2NrJywgJ2lubGluZS1ibG9jaycsICdpbmxpbmUnLCAnZmxleCcsICdpbmxpbmUtZmxleCcsICd0YWJsZScsICdpbmxpbmUtdGFibGUnLCAndGFibGUtY2FwdGlvbicsICd0YWJsZS1jZWxsJywgJ3RhYmxlLWNvbHVtbicsICd0YWJsZS1jb2x1bW4tZ3JvdXAnLCAndGFibGUtZm9vdGVyLWdyb3VwJywgJ3RhYmxlLWhlYWRlci1ncm91cCcsICd0YWJsZS1yb3ctZ3JvdXAnLCAndGFibGUtcm93JywgJ2Zsb3ctcm9vdCcsICdncmlkJywgJ2lubGluZS1ncmlkJywgJ2NvbnRlbnRzJywgJ2xpc3QtaXRlbScsICdoaWRkZW4nXSxcbiAgICAgIC8qKlxuICAgICAgICogRmxvYXRzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAqL1xuICAgICAgZmxvYXQ6IFt7XG4gICAgICAgIGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENsZWFyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAqL1xuICAgICAgY2xlYXI6IFt7XG4gICAgICAgIGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgKi9cbiAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAvKipcbiAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgKi9cbiAgICAgICdvYmplY3QtZml0JzogW3tcbiAgICAgICAgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3tcbiAgICAgICAgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICovXG4gICAgICBvdmVyZmxvdzogW3tcbiAgICAgICAgb3ZlcmZsb3c6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ292ZXJmbG93LXgnOiBbe1xuICAgICAgICAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ292ZXJmbG93LXknOiBbe1xuICAgICAgICAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICBvdmVyc2Nyb2xsOiBbe1xuICAgICAgICBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdvdmVyc2Nyb2xsLXgnOiBbe1xuICAgICAgICAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC15JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgaW5zZXQ6IFt7XG4gICAgICAgIGluc2V0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgICdpbnNldC14JzogW3tcbiAgICAgICAgJ2luc2V0LXgnOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgICdpbnNldC15JzogW3tcbiAgICAgICAgJ2luc2V0LXknOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgc3RhcnQ6IFt7XG4gICAgICAgIHN0YXJ0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGVuZDogW3tcbiAgICAgICAgZW5kOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHRvcDogW3tcbiAgICAgICAgdG9wOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgcmlnaHQ6IFt7XG4gICAgICAgIHJpZ2h0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGJvdHRvbTogW3tcbiAgICAgICAgYm90dG9tOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBsZWZ0OiBbe1xuICAgICAgICBsZWZ0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAqL1xuICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBaLUluZGV4XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICovXG4gICAgICB6OiBbe1xuICAgICAgICB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAqL1xuICAgICAgYmFzaXM6IFt7XG4gICAgICAgIGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3tcbiAgICAgICAgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAqL1xuICAgICAgJ2ZsZXgtd3JhcCc6IFt7XG4gICAgICAgIGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICovXG4gICAgICBmbGV4OiBbe1xuICAgICAgICBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICovXG4gICAgICBncm93OiBbe1xuICAgICAgICBncm93OiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAqL1xuICAgICAgc2hyaW5rOiBbe1xuICAgICAgICBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3JkZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICovXG4gICAgICBvcmRlcjogW3tcbiAgICAgICAgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICovXG4gICAgICAnZ3JpZC1jb2xzJzogW3tcbiAgICAgICAgJ2dyaWQtY29scyc6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQtZW5kJzogW3tcbiAgICAgICAgY29sOiBbJ2F1dG8nLCB7XG4gICAgICAgICAgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAqL1xuICAgICAgJ2NvbC1zdGFydCc6IFt7XG4gICAgICAgICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAqL1xuICAgICAgJ2NvbC1lbmQnOiBbe1xuICAgICAgICAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtcm93cyc6IFt7XG4gICAgICAgICdncmlkLXJvd3MnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIHJvdzogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICAgIH0sIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LXN0YXJ0JzogW3tcbiAgICAgICAgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LWVuZCc6IFt7XG4gICAgICAgICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtZmxvdyc6IFt7XG4gICAgICAgICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICovXG4gICAgICAnYXV0by1jb2xzJzogW3tcbiAgICAgICAgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgKi9cbiAgICAgICdhdXRvLXJvd3MnOiBbe1xuICAgICAgICAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICBnYXA6IFt7XG4gICAgICAgIGdhcDogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXgnOiBbe1xuICAgICAgICAnZ2FwLXgnOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdhcCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgKi9cbiAgICAgICdnYXAteSc6IFt7XG4gICAgICAgICdnYXAteSc6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbe1xuICAgICAgICBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbe1xuICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAqL1xuICAgICAgJ2p1c3RpZnktc2VsZic6IFt7XG4gICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICovXG4gICAgICAnYWxpZ24tY29udGVudCc6IFt7XG4gICAgICAgIGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1pdGVtcyc6IFt7XG4gICAgICAgIGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLXNlbGYnOiBbe1xuICAgICAgICBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICovXG4gICAgICAncGxhY2UtY29udGVudCc6IFt7XG4gICAgICAgICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICovXG4gICAgICAncGxhY2UtaXRlbXMnOiBbe1xuICAgICAgICAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLXNlbGYnOiBbe1xuICAgICAgICAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvLyBTcGFjaW5nXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHA6IFt7XG4gICAgICAgIHA6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHg6IFt7XG4gICAgICAgIHB4OiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB5OiBbe1xuICAgICAgICBweTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHM6IFt7XG4gICAgICAgIHBzOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGU6IFt7XG4gICAgICAgIHBlOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHQ6IFt7XG4gICAgICAgIHB0OiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwcjogW3tcbiAgICAgICAgcHI6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwYjogW3tcbiAgICAgICAgcGI6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGw6IFt7XG4gICAgICAgIHBsOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbTogW3tcbiAgICAgICAgbTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBteDogW3tcbiAgICAgICAgbXg6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXk6IFt7XG4gICAgICAgIG15OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtczogW3tcbiAgICAgICAgbXM6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtZTogW3tcbiAgICAgICAgbWU6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtdDogW3tcbiAgICAgICAgbXQ6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1yOiBbe1xuICAgICAgICBtcjogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1iOiBbe1xuICAgICAgICBtYjogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtbDogW3tcbiAgICAgICAgbWw6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXgnOiBbe1xuICAgICAgICAnc3BhY2UteCc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteSc6IFt7XG4gICAgICAgICdzcGFjZS15JzogW3NwYWNlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAvLyBTaXppbmdcbiAgICAgIC8qKlxuICAgICAgICogV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICovXG4gICAgICB3OiBbe1xuICAgICAgICB3OiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3Z3JywgJ2x2dycsICdkdncnLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICovXG4gICAgICAnbWluLXcnOiBbe1xuICAgICAgICAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21heC13JzogW3tcbiAgICAgICAgJ21heC13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdub25lJywgJ2Z1bGwnLCAnbWluJywgJ21heCcsICdmaXQnLCAncHJvc2UnLCB7XG4gICAgICAgICAgc2NyZWVuOiBbaXNUc2hpcnRTaXplXVxuICAgICAgICB9LCBpc1RzaGlydFNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgIGg6IFt7XG4gICAgICAgIGg6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWluLUhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgJ21pbi1oJzogW3tcbiAgICAgICAgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgJ21heC1oJzogW3tcbiAgICAgICAgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAqL1xuICAgICAgc2l6ZTogW3tcbiAgICAgICAgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J11cbiAgICAgIH1dLFxuICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFt7XG4gICAgICAgIHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICovXG4gICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgKi9cbiAgICAgICdmb250LXdlaWdodCc6IFt7XG4gICAgICAgIGZvbnQ6IFsndGhpbicsICdleHRyYWxpZ2h0JywgJ2xpZ2h0JywgJ25vcm1hbCcsICdtZWRpdW0nLCAnc2VtaWJvbGQnLCAnYm9sZCcsICdleHRyYWJvbGQnLCAnYmxhY2snLCBpc0FyYml0cmFyeU51bWJlcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgKi9cbiAgICAgICdmb250LWZhbWlseSc6IFt7XG4gICAgICAgIGZvbnQ6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgIC8qKlxuICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICB0cmFja2luZzogW3tcbiAgICAgICAgdHJhY2tpbmc6IFsndGlnaHRlcicsICd0aWdodCcsICdub3JtYWwnLCAnd2lkZScsICd3aWRlcicsICd3aWRlc3QnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgKi9cbiAgICAgICdsaW5lLWNsYW1wJzogW3tcbiAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICovXG4gICAgICBsZWFkaW5nOiBbe1xuICAgICAgICBsZWFkaW5nOiBbJ25vbmUnLCAndGlnaHQnLCAnc251ZycsICdub3JtYWwnLCAncmVsYXhlZCcsICdsb29zZScsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgKi9cbiAgICAgICdsaXN0LWltYWdlJzogW3tcbiAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICovXG4gICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3tcbiAgICAgICAgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbe1xuICAgICAgICBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7XG4gICAgICAgIHBsYWNlaG9sZGVyOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAqL1xuICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3tcbiAgICAgICAgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3RleHQtY29sb3InOiBbe1xuICAgICAgICB0ZXh0OiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAndGV4dC1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgKi9cbiAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICovXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICovXG4gICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LXdyYXAnOiBbe1xuICAgICAgICB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgKi9cbiAgICAgIGluZGVudDogW3tcbiAgICAgICAgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAqL1xuICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW3tcbiAgICAgICAgYWxpZ246IFsnYmFzZWxpbmUnLCAndG9wJywgJ21pZGRsZScsICdib3R0b20nLCAndGV4dC10b3AnLCAndGV4dC1ib3R0b20nLCAnc3ViJywgJ3N1cGVyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICovXG4gICAgICB3aGl0ZXNwYWNlOiBbe1xuICAgICAgICB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV29yZCBCcmVha1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAqL1xuICAgICAgYnJlYWs6IFt7XG4gICAgICAgIGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSHlwaGVuc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAqL1xuICAgICAgaHlwaGVuczogW3tcbiAgICAgICAgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICovXG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAqL1xuICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbe1xuICAgICAgICBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICovXG4gICAgICAnYmctY2xpcCc6IFt7XG4gICAgICAgICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdiZy1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICovXG4gICAgICAnYmctb3JpZ2luJzogW3tcbiAgICAgICAgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ2JnLXBvc2l0aW9uJzogW3tcbiAgICAgICAgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgKi9cbiAgICAgICdiZy1yZXBlYXQnOiBbe1xuICAgICAgICBiZzogWyduby1yZXBlYXQnLCB7XG4gICAgICAgICAgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXVxuICAgICAgICB9XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICovXG4gICAgICAnYmctc2l6ZSc6IFt7XG4gICAgICAgIGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICovXG4gICAgICAnYmctaW1hZ2UnOiBbe1xuICAgICAgICBiZzogWydub25lJywge1xuICAgICAgICAgICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddXG4gICAgICAgIH0sIGlzQXJiaXRyYXJ5SW1hZ2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JnLWNvbG9yJzogW3tcbiAgICAgICAgYmc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7XG4gICAgICAgIGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7XG4gICAgICAgIHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7XG4gICAgICAgIHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC1mcm9tJzogW3tcbiAgICAgICAgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdmlhJzogW3tcbiAgICAgICAgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXRvJzogW3tcbiAgICAgICAgdG86IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8vIEJvcmRlcnNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgcm91bmRlZDogW3tcbiAgICAgICAgcm91bmRlZDogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWUnOiBbe1xuICAgICAgICAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdCc6IFt7XG4gICAgICAgICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXInOiBbe1xuICAgICAgICAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYic6IFt7XG4gICAgICAgICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtbCc6IFt7XG4gICAgICAgICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXNzJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWVlJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10bCc6IFt7XG4gICAgICAgICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdHInOiBbe1xuICAgICAgICAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWJyJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWJsJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcnOiBbe1xuICAgICAgICBib3JkZXI6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcteCc6IFt7XG4gICAgICAgICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcteSc6IFt7XG4gICAgICAgICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXMnOiBbe1xuICAgICAgICAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctZSc6IFt7XG4gICAgICAgICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy10JzogW3tcbiAgICAgICAgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1iJzogW3tcbiAgICAgICAgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1sJzogW3tcbiAgICAgICAgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3R5bGUnOiBbe1xuICAgICAgICBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteCc6IFt7XG4gICAgICAgICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteSc6IFt7XG4gICAgICAgICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtc3R5bGUnOiBbe1xuICAgICAgICBkaXZpZGU6IGdldExpbmVTdHlsZXMoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yJzogW3tcbiAgICAgICAgYm9yZGVyOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci14JzogW3tcbiAgICAgICAgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3IteSc6IFt7XG4gICAgICAgICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItdCc6IFt7XG4gICAgICAgICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3tcbiAgICAgICAgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3tcbiAgICAgICAgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItbCc6IFt7XG4gICAgICAgICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7XG4gICAgICAgIGRpdmlkZTogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXN0eWxlJzogW3tcbiAgICAgICAgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1vZmZzZXQnOiBbe1xuICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtdyc6IFt7XG4gICAgICAgIG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtY29sb3InOiBbe1xuICAgICAgICBvdXRsaW5lOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLXcnOiBbe1xuICAgICAgICByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3JpbmctY29sb3InOiBbe1xuICAgICAgICByaW5nOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICovXG4gICAgICAncmluZy1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbe1xuICAgICAgICAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLy8gRWZmZWN0c1xuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICovXG4gICAgICBzaGFkb3c6IFt7XG4gICAgICAgIHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7XG4gICAgICAgIHNoYWRvdzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgIG9wYWNpdHk6IFt7XG4gICAgICAgIG9wYWNpdHk6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAqL1xuICAgICAgJ21peC1ibGVuZCc6IFt7XG4gICAgICAgICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAqL1xuICAgICAgJ2JnLWJsZW5kJzogW3tcbiAgICAgICAgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpXG4gICAgICB9XSxcbiAgICAgIC8vIEZpbHRlcnNcbiAgICAgIC8qKlxuICAgICAgICogRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgKi9cbiAgICAgIGZpbHRlcjogW3tcbiAgICAgICAgZmlsdGVyOiBbJycsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCbHVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICovXG4gICAgICBibHVyOiBbe1xuICAgICAgICBibHVyOiBbYmx1cl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICovXG4gICAgICBicmlnaHRuZXNzOiBbe1xuICAgICAgICBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgIGNvbnRyYXN0OiBbe1xuICAgICAgICBjb250cmFzdDogW2NvbnRyYXN0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgJ2Ryb3Atc2hhZG93JzogW3tcbiAgICAgICAgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgZ3JheXNjYWxlOiBbe1xuICAgICAgICBncmF5c2NhbGU6IFtncmF5c2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAqL1xuICAgICAgJ2h1ZS1yb3RhdGUnOiBbe1xuICAgICAgICAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSW52ZXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgKi9cbiAgICAgIGludmVydDogW3tcbiAgICAgICAgaW52ZXJ0OiBbaW52ZXJ0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgc2F0dXJhdGU6IFt7XG4gICAgICAgIHNhdHVyYXRlOiBbc2F0dXJhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2VwaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICovXG4gICAgICBzZXBpYTogW3tcbiAgICAgICAgc2VwaWE6IFtzZXBpYV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7XG4gICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtYmx1cic6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbe1xuICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbe1xuICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8vIFRhYmxlc1xuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7XG4gICAgICAgIGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7XG4gICAgICAgICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgKi9cbiAgICAgICd0YWJsZS1sYXlvdXQnOiBbe1xuICAgICAgICB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAqL1xuICAgICAgY2FwdGlvbjogW3tcbiAgICAgICAgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ11cbiAgICAgIH1dLFxuICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAqL1xuICAgICAgdHJhbnNpdGlvbjogW3tcbiAgICAgICAgdHJhbnNpdGlvbjogWydub25lJywgJ2FsbCcsICcnLCAnY29sb3JzJywgJ29wYWNpdHknLCAnc2hhZG93JywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAqL1xuICAgICAgZHVyYXRpb246IFt7XG4gICAgICAgIGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAqL1xuICAgICAgZWFzZTogW3tcbiAgICAgICAgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAqL1xuICAgICAgZGVsYXk6IFt7XG4gICAgICAgIGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICovXG4gICAgICBhbmltYXRlOiBbe1xuICAgICAgICBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgKi9cbiAgICAgIHRyYW5zZm9ybTogW3tcbiAgICAgICAgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICovXG4gICAgICBzY2FsZTogW3tcbiAgICAgICAgc2NhbGU6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY2FsZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgJ3NjYWxlLXgnOiBbe1xuICAgICAgICAnc2NhbGUteCc6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY2FsZSBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgJ3NjYWxlLXknOiBbe1xuICAgICAgICAnc2NhbGUteSc6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAqL1xuICAgICAgcm90YXRlOiBbe1xuICAgICAgICByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS14JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICovXG4gICAgICAndHJhbnNsYXRlLXknOiBbe1xuICAgICAgICAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNrZXcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAqL1xuICAgICAgJ3NrZXcteCc6IFt7XG4gICAgICAgICdza2V3LXgnOiBbc2tld11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXknOiBbe1xuICAgICAgICAnc2tldy15JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAqL1xuICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbe1xuICAgICAgICBvcmlnaW46IFsnY2VudGVyJywgJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgLyoqXG4gICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAqL1xuICAgICAgYWNjZW50OiBbe1xuICAgICAgICBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICovXG4gICAgICBhcHBlYXJhbmNlOiBbe1xuICAgICAgICBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ3Vyc29yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgKi9cbiAgICAgIGN1cnNvcjogW3tcbiAgICAgICAgY3Vyc29yOiBbJ2F1dG8nLCAnZGVmYXVsdCcsICdwb2ludGVyJywgJ3dhaXQnLCAndGV4dCcsICdtb3ZlJywgJ2hlbHAnLCAnbm90LWFsbG93ZWQnLCAnbm9uZScsICdjb250ZXh0LW1lbnUnLCAncHJvZ3Jlc3MnLCAnY2VsbCcsICdjcm9zc2hhaXInLCAndmVydGljYWwtdGV4dCcsICdhbGlhcycsICdjb3B5JywgJ25vLWRyb3AnLCAnZ3JhYicsICdncmFiYmluZycsICdhbGwtc2Nyb2xsJywgJ2NvbC1yZXNpemUnLCAncm93LXJlc2l6ZScsICduLXJlc2l6ZScsICdlLXJlc2l6ZScsICdzLXJlc2l6ZScsICd3LXJlc2l6ZScsICduZS1yZXNpemUnLCAnbnctcmVzaXplJywgJ3NlLXJlc2l6ZScsICdzdy1yZXNpemUnLCAnZXctcmVzaXplJywgJ25zLXJlc2l6ZScsICduZXN3LXJlc2l6ZScsICdud3NlLXJlc2l6ZScsICd6b29tLWluJywgJ3pvb20tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICovXG4gICAgICAnY2FyZXQtY29sb3InOiBbe1xuICAgICAgICBjYXJldDogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgKi9cbiAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7XG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSZXNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAqL1xuICAgICAgcmVzaXplOiBbe1xuICAgICAgICByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7XG4gICAgICAgIHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teCc6IFt7XG4gICAgICAgICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW15JzogW3tcbiAgICAgICAgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1zJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tZSc6IFt7XG4gICAgICAgICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXQnOiBbe1xuICAgICAgICAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXInOiBbe1xuICAgICAgICAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1iJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWwnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXB4JzogW3tcbiAgICAgICAgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weSc6IFt7XG4gICAgICAgICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBzJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBlJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXB0JzogW3tcbiAgICAgICAgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHInOiBbe1xuICAgICAgICAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcGInOiBbe1xuICAgICAgICAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBsJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgKi9cbiAgICAgICdzbmFwLWFsaWduJzogW3tcbiAgICAgICAgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0b3AnOiBbe1xuICAgICAgICBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXR5cGUnOiBbe1xuICAgICAgICBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7XG4gICAgICAgIHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgIHRvdWNoOiBbe1xuICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gteCc6IFt7XG4gICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXknOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgLyoqXG4gICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgKi9cbiAgICAgIHNlbGVjdDogW3tcbiAgICAgICAgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICovXG4gICAgICAnd2lsbC1jaGFuZ2UnOiBbe1xuICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIFNWR1xuICAgICAgLyoqXG4gICAgICAgKiBGaWxsXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICovXG4gICAgICBmaWxsOiBbe1xuICAgICAgICBmaWxsOiBbY29sb3JzLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdzdHJva2Utdyc6IFt7XG4gICAgICAgIHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3Ryb2tlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgKi9cbiAgICAgIHN0cm9rZTogW3tcbiAgICAgICAgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgIC8qKlxuICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICovXG4gICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAvKipcbiAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgKi9cbiAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3tcbiAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddXG4gICAgICB9XVxuICAgIH0sXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnZnZuLW9yZGluYWwnLCAnZnZuLXNsYXNoZWQtemVybycsICdmdm4tZmlndXJlJywgJ2Z2bi1zcGFjaW5nJywgJ2Z2bi1mcmFjdGlvbiddLFxuICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgIHJvdW5kZWQ6IFsncm91bmRlZC1zJywgJ3JvdW5kZWQtZScsICdyb3VuZGVkLXQnLCAncm91bmRlZC1yJywgJ3JvdW5kZWQtYicsICdyb3VuZGVkLWwnLCAncm91bmRlZC1zcycsICdyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnLCAncm91bmRlZC1lcycsICdyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInLCAncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgJ2JvcmRlci13JzogWydib3JkZXItdy1zJywgJ2JvcmRlci13LWUnLCAnYm9yZGVyLXctdCcsICdib3JkZXItdy1yJywgJ2JvcmRlci13LWInLCAnYm9yZGVyLXctbCddLFxuICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgJ2JvcmRlci1jb2xvcic6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICdzY3JvbGwtbSc6IFsnc2Nyb2xsLW14JywgJ3Njcm9sbC1teScsICdzY3JvbGwtbXMnLCAnc2Nyb2xsLW1lJywgJ3Njcm9sbC1tdCcsICdzY3JvbGwtbXInLCAnc2Nyb2xsLW1iJywgJ3Njcm9sbC1tbCddLFxuICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgJ3Njcm9sbC1wJzogWydzY3JvbGwtcHgnLCAnc2Nyb2xsLXB5JywgJ3Njcm9sbC1wcycsICdzY3JvbGwtcGUnLCAnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wcicsICdzY3JvbGwtcGInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ11cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5jb25zdCBtZXJnZUNvbmZpZ3MgPSAoYmFzZUNvbmZpZywge1xuICBjYWNoZVNpemUsXG4gIHByZWZpeCxcbiAgc2VwYXJhdG9yLFxuICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgZXh0ZW5kID0ge30sXG4gIG92ZXJyaWRlID0ge31cbn0pID0+IHtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSk7XG4gIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdbY29uZmlnS2V5XSwgb3ZlcnJpZGVbY29uZmlnS2V5XSk7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdba2V5XSwgZXh0ZW5kW2tleV0pO1xuICB9XG4gIHJldHVybiBiYXNlQ29uZmlnO1xufTtcbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSAoYmFzZU9iamVjdCwgb3ZlcnJpZGVLZXksIG92ZXJyaWRlVmFsdWUpID0+IHtcbiAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGJhc2VPYmplY3Rbb3ZlcnJpZGVLZXldID0gb3ZlcnJpZGVWYWx1ZTtcbiAgfVxufTtcbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChiYXNlT2JqZWN0LCBvdmVycmlkZU9iamVjdCkgPT4ge1xuICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChiYXNlT2JqZWN0LCBtZXJnZU9iamVjdCkgPT4ge1xuICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV07XG4gICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5jb25zdCBleHRlbmRUYWlsd2luZE1lcmdlID0gKGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKSA9PiB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZykgOiBjcmVhdGVUYWlsd2luZE1lcmdlKCgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksIC4uLmNyZWF0ZUNvbmZpZyk7XG5jb25zdCB0d01lcmdlID0gLyojX19QVVJFX18qL2NyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZyk7XG5leHBvcnRzLmNyZWF0ZVRhaWx3aW5kTWVyZ2UgPSBjcmVhdGVUYWlsd2luZE1lcmdlO1xuZXhwb3J0cy5leHRlbmRUYWlsd2luZE1lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZTtcbmV4cG9ydHMuZnJvbVRoZW1lID0gZnJvbVRoZW1lO1xuZXhwb3J0cy5nZXREZWZhdWx0Q29uZmlnID0gZ2V0RGVmYXVsdENvbmZpZztcbmV4cG9ydHMubWVyZ2VDb25maWdzID0gbWVyZ2VDb25maWdzO1xuZXhwb3J0cy50d0pvaW4gPSB0d0pvaW47XG5leHBvcnRzLnR3TWVyZ2UgPSB0d01lcmdlO1xuZXhwb3J0cy52YWxpZGF0b3JzID0gdmFsaWRhdG9ycztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS1janMuanMubWFwXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHJ1bnRpbWUgaGVscGVyIGZvciBzZXR0aW5nIHByb3BlcnRpZXMgb24gY29tcG9uZW50c1xuLy8gaW4gYSB0cmVlLXNoYWthYmxlIHdheVxuZXhwb3J0cy5kZWZhdWx0ID0gKHNmYywgcHJvcHMpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzZmMuX192Y2NPcHRzIHx8IHNmYztcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgcHJvcHMpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59O1xuIiwiaW1wb3J0ICogYXMgcnVudGltZURvbSBmcm9tICdAdnVlL3J1bnRpbWUtZG9tJztcbmltcG9ydCB7IGluaXRDdXN0b21Gb3JtYXR0ZXIsIHdhcm4sIHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyIH0gZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5leHBvcnQgKiBmcm9tICdAdnVlL3J1bnRpbWUtZG9tJztcbmltcG9ydCB7IGNvbXBpbGUgfSBmcm9tICdAdnVlL2NvbXBpbGVyLWRvbSc7XG5pbXBvcnQgeyBpc1N0cmluZywgTk9PUCwgZXh0ZW5kLCBnZW5lcmF0ZUNvZGVGcmFtZSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuZnVuY3Rpb24gaW5pdERldigpIHtcclxuICAgIHtcclxuICAgICAgICBpbml0Q3VzdG9tRm9ybWF0dGVyKCk7XHJcbiAgICB9XHJcbn1cblxuLy8gVGhpcyBlbnRyeSBpcyB0aGUgXCJmdWxsLWJ1aWxkXCIgdGhhdCBpbmNsdWRlcyBib3RoIHRoZSBydW50aW1lXHJcbmlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgIGluaXREZXYoKTtcclxufVxyXG5jb25zdCBjb21waWxlQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG5mdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbih0ZW1wbGF0ZSwgb3B0aW9ucykge1xyXG4gICAgaWYgKCFpc1N0cmluZyh0ZW1wbGF0ZSkpIHtcclxuICAgICAgICBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcclxuICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgaW52YWxpZCB0ZW1wbGF0ZSBvcHRpb246IGAsIHRlbXBsYXRlKTtcclxuICAgICAgICAgICAgcmV0dXJuIE5PT1A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5ID0gdGVtcGxhdGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjb21waWxlQ2FjaGVba2V5XTtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHRlbXBsYXRlWzBdID09PSAnIycpIHtcclxuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGVtcGxhdGUpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWVsKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiAke3RlbXBsYXRlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAgICAgLy8gUmVhc29uOiBwb3RlbnRpYWwgZXhlY3V0aW9uIG9mIEpTIGV4cHJlc3Npb25zIGluIGluLURPTSB0ZW1wbGF0ZS5cclxuICAgICAgICAvLyBUaGUgdXNlciBtdXN0IG1ha2Ugc3VyZSB0aGUgaW4tRE9NIHRlbXBsYXRlIGlzIHRydXN0ZWQuIElmIGl0J3MgcmVuZGVyZWRcclxuICAgICAgICAvLyBieSB0aGUgc2VydmVyLCB0aGUgdGVtcGxhdGUgc2hvdWxkIG5vdCBjb250YWluIGFueSB1c2VyIGRhdGEuXHJcbiAgICAgICAgdGVtcGxhdGUgPSBlbCA/IGVsLmlubmVySFRNTCA6IGBgO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0cyA9IGV4dGVuZCh7XHJcbiAgICAgICAgaG9pc3RTdGF0aWM6IHRydWUsXHJcbiAgICAgICAgb25FcnJvcjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gb25FcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgICBvbldhcm46IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGUgPT4gb25FcnJvcihlLCB0cnVlKSA6IE5PT1BcclxuICAgIH0sIG9wdGlvbnMpO1xyXG4gICAgaWYgKCFvcHRzLmlzQ3VzdG9tRWxlbWVudCAmJiB0eXBlb2YgY3VzdG9tRWxlbWVudHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgb3B0cy5pc0N1c3RvbUVsZW1lbnQgPSB0YWcgPT4gISFjdXN0b21FbGVtZW50cy5nZXQodGFnKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgY29kZSB9ID0gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0cyk7XHJcbiAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgYXNXYXJuaW5nID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYXNXYXJuaW5nXHJcbiAgICAgICAgICAgID8gZXJyLm1lc3NhZ2VcclxuICAgICAgICAgICAgOiBgVGVtcGxhdGUgY29tcGlsYXRpb24gZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YDtcclxuICAgICAgICBjb25zdCBjb2RlRnJhbWUgPSBlcnIubG9jICYmXHJcbiAgICAgICAgICAgIGdlbmVyYXRlQ29kZUZyYW1lKHRlbXBsYXRlLCBlcnIubG9jLnN0YXJ0Lm9mZnNldCwgZXJyLmxvYy5lbmQub2Zmc2V0KTtcclxuICAgICAgICB3YXJuKGNvZGVGcmFtZSA/IGAke21lc3NhZ2V9XFxuJHtjb2RlRnJhbWV9YCA6IG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgLy8gVGhlIHdpbGRjYXJkIGltcG9ydCByZXN1bHRzIGluIGEgaHVnZSBvYmplY3Qgd2l0aCBldmVyeSBleHBvcnRcclxuICAgIC8vIHdpdGgga2V5cyB0aGF0IGNhbm5vdCBiZSBtYW5nbGVkLCBhbmQgY2FuIGJlIHF1aXRlIGhlYXZ5IHNpemUtd2lzZS5cclxuICAgIC8vIEluIHRoZSBnbG9iYWwgYnVpbGQgd2Uga25vdyBgVnVlYCBpcyBhdmFpbGFibGUgZ2xvYmFsbHkgc28gd2UgY2FuIGF2b2lkXHJcbiAgICAvLyB0aGUgd2lsZGNhcmQgb2JqZWN0LlxyXG4gICAgY29uc3QgcmVuZGVyID0gKG5ldyBGdW5jdGlvbignVnVlJywgY29kZSkocnVudGltZURvbSkpO1xyXG4gICAgcmVuZGVyLl9yYyA9IHRydWU7XHJcbiAgICByZXR1cm4gKGNvbXBpbGVDYWNoZVtrZXldID0gcmVuZGVyKTtcclxufVxyXG5yZWdpc3RlclJ1bnRpbWVDb21waWxlcihjb21waWxlVG9GdW5jdGlvbik7XG5cbmV4cG9ydCB7IGNvbXBpbGVUb0Z1bmN0aW9uIGFzIGNvbXBpbGUgfTtcbiIsImltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVhY3RpdmUsIHJlZiwgY29tcHV0ZWQsIHdhdGNoLCBvcGVuQmxvY2ssIGNyZWF0ZUVsZW1lbnRCbG9jaywgbm9ybWFsaXplU3R5bGUsIGNyZWF0ZUVsZW1lbnRWTm9kZSwgcmVuZGVyU2xvdCB9IGZyb20gJ3Z1ZSc7XG5cbmZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyKTtcbn1cblxudmFyIHNjcmlwdCA9IGRlZmluZUNvbXBvbmVudCh7XG4gIHByb3BzOiB7XG4gICAgLy8gU2V0cyB3aWR0aC9kaWFtZXRlciBvZiB0aGUgaW5uZXIgc3Ryb2tlLlxuICAgIGRpYW1ldGVyOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAyMDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHRvdGFsIHN0ZXBzL3Byb2dyZXNzIHRvIHRoZSBlbmQuXG4gICAgdG90YWxTdGVwczoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBkZWZhdWx0OiAxMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW5uZXIgc3Ryb2tlLlxuICAgIGNvbXBsZXRlZFN0ZXBzOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHN0YXJ0IGNvbG9yIG9mIHRoZSBpbm5lciBzdHJva2UgKGdyYWRpZW50KS5cbiAgICBzdGFydENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcIiMwMEM1OEVcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgZW5kIGNvbG9yIG9mIHRoZSBpbm5lciBzdHJva2UgKGdyYWRpZW50KS5cbiAgICBzdG9wQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwiIzAwRTBBMVwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBjb2xvciBvZiB0aGUgaW5uZXIgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIGlubmVyU3Ryb2tlQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwiIzJGNDk1RVwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIC8vIFJlYWQgbW9yZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zdHJva2Utd2lkdGhcbiAgICBzdHJva2VXaWR0aDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlICB3aWR0aCBvZiB0aGUgaW5uZXIgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIGlubmVyU3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBzaGFwZSB0byBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc3Ryb2tlZC5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc3Ryb2tlLWxpbmVjYXBcbiAgICBzdHJva2VMaW5lY2FwOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcInJvdW5kXCJcbiAgICB9LFxuICAgIC8vIFNldHMgaG93IGxvbmcgdGhlIGFuaW1hdGlvbiBzaG91bGQgdGFrZSB0byBjb21wbGV0ZSBvbmUgY3ljbGUuXG4gICAgLy8gUmVhZCBtb3JlOiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2Nzc3JlZi9jc3MzX3ByX2FuaW1hdGlvbi1kdXJhdGlvbi5hc3BcbiAgICBhbmltYXRlU3BlZWQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEwMDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGZyYW1lcyBwZXIgc2Vjb25kcyB0byB1cGRhdGUgaW5uZXIgc3Ryb2tlIGFuaW1hdGlvbi5cbiAgICBmcHM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDYwXG4gICAgfSxcbiAgICAvLyBTZXRzIGhvdyB0aGUgYW5pbWF0aW9uIHByb2dyZXNzZXMgdGhyb3VnaCB0aGUgZHVyYXRpb24gb2YgZWFjaCBjeWNsZS5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgdGltaW5nRnVuYzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCJsaW5lYXJcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgaW5uZXIgc3Ryb2tlIGRpcmVjdGlvbi5cbiAgICBpc0Nsb2Nrd2lzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9XG4gIH0sXG5cbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBncmFkaWVudCA9IHJlYWN0aXZlKHtcbiAgICAgIGZ4OiAwLjk5LFxuICAgICAgZnk6IDAuNSxcbiAgICAgIGN4OiAwLjUsXG4gICAgICBjeTogMC41LFxuICAgICAgcjogMC42NVxuICAgIH0pO1xuICAgIGNvbnN0IHJhZGlhbEdyYWRpZW50SWQgPSBgcmctJHtyYW5kb21TdHJpbmcoKX1gO1xuICAgIGNvbnN0IHN0cm9rZURhc2hvZmZzZXQgPSByZWYoMCk7XG4gICAgY29uc3QgY3VycmVudEFuZ2xlID0gcmVmKDApO1xuICAgIGNvbnN0IGdyYWRpZW50QW5pbWF0aW9uID0gcmVmKG51bGwpO1xuICAgIGNvbnN0IHJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRpYW1ldGVyIC8gMik7XG4gICAgY29uc3QgaW5uZXJDaXJjbGVEaWFtZXRlciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRpYW1ldGVyIC0gcHJvcHMuaW5uZXJTdHJva2VXaWR0aCAqIDIpO1xuICAgIGNvbnN0IGNpcmN1bWZlcmVuY2UgPSBjb21wdXRlZCgoKSA9PiBNYXRoLlBJICogaW5uZXJDaXJjbGVEaWFtZXRlci52YWx1ZSk7XG4gICAgY29uc3Qgc3RlcFNpemUgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50b3RhbFN0ZXBzID09PSAwID8gMCA6IDEwMCAvIHByb3BzLnRvdGFsU3RlcHMpO1xuICAgIGNvbnN0IGZpbmlzaGVkUGVyY2VudGFnZSA9IGNvbXB1dGVkKCgpID0+IHN0ZXBTaXplLnZhbHVlICogcHJvcHMuY29tcGxldGVkU3RlcHMpO1xuICAgIGNvbnN0IGNpcmNsZVNsaWNlID0gY29tcHV0ZWQoKCkgPT4gMiAqIE1hdGguUEkgLyBwcm9wcy50b3RhbFN0ZXBzKTtcbiAgICBjb25zdCBhbmltYXRpb25JbmNyZW1lbnRzID0gY29tcHV0ZWQoKCkgPT4gMTAwIC8gcHJvcHMuZnBzKTtcbiAgICBjb25zdCB0b3RhbFBvaW50cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmFuaW1hdGVTcGVlZCAvIGFuaW1hdGlvbkluY3JlbWVudHMudmFsdWUpO1xuICAgIGNvbnN0IGFuaW1hdGVTbGljZSA9IGNvbXB1dGVkKCgpID0+IGNpcmNsZVNsaWNlLnZhbHVlIC8gdG90YWxQb2ludHMudmFsdWUpO1xuICAgIGNvbnN0IGlubmVyQ2lyY2xlUmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gaW5uZXJDaXJjbGVEaWFtZXRlci52YWx1ZSAvIDIpO1xuICAgIGNvbnN0IGNvbnRhaW5lclN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YFxuICAgIH0pKTtcbiAgICBjb25zdCBwcm9ncmVzc1N0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHN0cm9rZVdpZHRoOiBgJHtwcm9wcy5zdHJva2VXaWR0aH1weGAsXG4gICAgICBzdHJva2VEYXNob2Zmc2V0OiBzdHJva2VEYXNob2Zmc2V0LnZhbHVlLFxuICAgICAgdHJhbnNpdGlvbjogYHN0cm9rZS1kYXNob2Zmc2V0ICR7cHJvcHMuYW5pbWF0ZVNwZWVkfW1zICR7cHJvcHMudGltaW5nRnVuY31gXG4gICAgfSkpO1xuICAgIGNvbnN0IHN0cm9rZVN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHN0cm9rZVdpZHRoOiBgJHtwcm9wcy5pbm5lclN0cm9rZVdpZHRofXB4YFxuICAgIH0pKTtcbiAgICBjb25zdCBpbm5lckNpcmNsZVN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIHdpZHRoOiBgJHtpbm5lckNpcmNsZURpYW1ldGVyLnZhbHVlfXB4YFxuICAgIH0pKTtcbiAgICB3YXRjaCgoKSA9PiBbcHJvcHMuZGlhbWV0ZXIsIHByb3BzLnRvdGFsU3RlcHMsIHByb3BzLmNvbXBsZXRlZFN0ZXBzLCBwcm9wcy5zdHJva2VXaWR0aF0sIGNoYW5nZVByb2dyZXNzLCB7XG4gICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldFBvaW50T2ZDaXJjbGUoYW5nbGUpIHtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IDAuNTtcbiAgICAgIGNvbnN0IHggPSByYWRpdXMgKyByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICBjb25zdCB5ID0gcmFkaXVzICsgcmFkaXVzICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnb3RvUG9pbnQoKSB7XG4gICAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T2ZDaXJjbGUoY3VycmVudEFuZ2xlLnZhbHVlKTtcblxuICAgICAgaWYgKHBvaW50LnggJiYgcG9pbnQueSkge1xuICAgICAgICBncmFkaWVudC5meCA9IHBvaW50Lng7XG4gICAgICAgIGdyYWRpZW50LmZ5ID0gcG9pbnQueTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXJlY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcHJvcHMuaXNDbG9ja3dpc2UgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hhbmdlUHJvZ3Jlc3MoKSB7XG4gICAgICBzdHJva2VEYXNob2Zmc2V0LnZhbHVlID0gKDEwMCAtIGZpbmlzaGVkUGVyY2VudGFnZS52YWx1ZSkgLyAxMDAgKiBjaXJjdW1mZXJlbmNlLnZhbHVlICogZGlyZWN0aW9uKCk7XG5cbiAgICAgIGlmIChncmFkaWVudEFuaW1hdGlvbi52YWx1ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYW5nbGVPZmZzZXQgPSAocHJvcHMuY29tcGxldGVkU3RlcHMgLSAxKSAqIGNpcmNsZVNsaWNlLnZhbHVlO1xuICAgICAgbGV0IGkgPSAoY3VycmVudEFuZ2xlLnZhbHVlIC0gYW5nbGVPZmZzZXQpIC8gYW5pbWF0ZVNsaWNlLnZhbHVlO1xuICAgICAgY29uc3QgaW5jcmVtZW50ZXIgPSBNYXRoLmFicyhpIC0gdG90YWxQb2ludHMudmFsdWUpIC8gdG90YWxQb2ludHMudmFsdWU7XG4gICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaSA8IHRvdGFsUG9pbnRzLnZhbHVlO1xuICAgICAgZ3JhZGllbnRBbmltYXRpb24udmFsdWUgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdmVGb3J3YXJkICYmIGkgPj0gdG90YWxQb2ludHMudmFsdWUgfHwgIWlzTW92ZUZvcndhcmQgJiYgaSA8IHRvdGFsUG9pbnRzLnZhbHVlKSB7XG4gICAgICAgICAgZ3JhZGllbnRBbmltYXRpb24udmFsdWUgJiYgY2xlYXJJbnRlcnZhbChncmFkaWVudEFuaW1hdGlvbi52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudEFuZ2xlLnZhbHVlID0gYW5nbGVPZmZzZXQgKyBhbmltYXRlU2xpY2UudmFsdWUgKiBpO1xuICAgICAgICBnb3RvUG9pbnQoKTtcbiAgICAgICAgaSArPSBpc01vdmVGb3J3YXJkID8gaW5jcmVtZW50ZXIgOiAtaW5jcmVtZW50ZXI7XG4gICAgICB9LCBhbmltYXRpb25JbmNyZW1lbnRzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3JhZGllbnRBbmltYXRpb24sXG4gICAgICBpbm5lckNpcmNsZVJhZGl1cyxcbiAgICAgIHJhZGlhbEdyYWRpZW50SWQsXG4gICAgICBzdHJva2VEYXNob2Zmc2V0LFxuICAgICAgaW5uZXJDaXJjbGVTdHlsZSxcbiAgICAgIGNvbnRhaW5lclN0eWxlLFxuICAgICAgY2lyY3VtZmVyZW5jZSxcbiAgICAgIHByb2dyZXNzU3R5bGUsXG4gICAgICBjdXJyZW50QW5nbGUsXG4gICAgICBzdHJva2VTdHlsZSxcbiAgICAgIGdyYWRpZW50LFxuICAgICAgcmFkaXVzXG4gICAgfTtcbiAgfVxuXG59KTtcblxuY29uc3QgX2hvaXN0ZWRfMSA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCJdO1xuY29uc3QgX2hvaXN0ZWRfMiA9IFtcImlkXCIsIFwiZnhcIiwgXCJmeVwiLCBcImN4XCIsIFwiY3lcIiwgXCJyXCJdO1xuY29uc3QgX2hvaXN0ZWRfMyA9IFtcInN0b3AtY29sb3JcIl07XG5jb25zdCBfaG9pc3RlZF80ID0gW1wic3RvcC1jb2xvclwiXTtcbmNvbnN0IF9ob2lzdGVkXzUgPSBbXCJyXCIsIFwiY3hcIiwgXCJjeVwiLCBcInN0cm9rZVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCJzdHJva2UtbGluZWNhcFwiXTtcbmNvbnN0IF9ob2lzdGVkXzYgPSBbXCJ0cmFuc2Zvcm1cIiwgXCJyXCIsIFwiY3hcIiwgXCJjeVwiLCBcInN0cm9rZVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCJzdHJva2UtZGFzaG9mZnNldFwiLCBcInN0cm9rZS1saW5lY2FwXCJdO1xuZnVuY3Rpb24gcmVuZGVyKF9jdHgsIF9jYWNoZSwgJHByb3BzLCAkc2V0dXAsICRkYXRhLCAkb3B0aW9ucykge1xuICByZXR1cm4gb3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgY2xhc3M6IFwidnJwX193cmFwcGVyXCIsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHguY29udGFpbmVyU3R5bGUpXG4gIH0sIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgIGNsYXNzOiBcInZycF9faW5uZXJcIixcbiAgICBzdHlsZTogbm9ybWFsaXplU3R5bGUoX2N0eC5pbm5lckNpcmNsZVN0eWxlKVxuICB9LCBbcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJkZWZhdWx0XCIpXSwgNCksIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIsIHtcbiAgICB3aWR0aDogX2N0eC5kaWFtZXRlcixcbiAgICBoZWlnaHQ6IF9jdHguZGlhbWV0ZXIsXG4gICAgdmVyc2lvbjogXCIxLjFcIixcbiAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gIH0sIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJkZWZzXCIsIG51bGwsIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJyYWRpYWxHcmFkaWVudFwiLCB7XG4gICAgaWQ6IF9jdHgucmFkaWFsR3JhZGllbnRJZCxcbiAgICBmeDogX2N0eC5ncmFkaWVudC5meCxcbiAgICBmeTogX2N0eC5ncmFkaWVudC5meSxcbiAgICBjeDogX2N0eC5ncmFkaWVudC5jeCxcbiAgICBjeTogX2N0eC5ncmFkaWVudC5jeSxcbiAgICByOiBfY3R4LmdyYWRpZW50LnJcbiAgfSwgW2NyZWF0ZUVsZW1lbnRWTm9kZShcInN0b3BcIiwge1xuICAgIG9mZnNldDogXCIzMCVcIixcbiAgICBcInN0b3AtY29sb3JcIjogX2N0eC5zdGFydENvbG9yXG4gIH0sIG51bGwsIDgsIF9ob2lzdGVkXzMpLCBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzdG9wXCIsIHtcbiAgICBvZmZzZXQ6IFwiMTAwJVwiLFxuICAgIFwic3RvcC1jb2xvclwiOiBfY3R4LnN0b3BDb2xvclxuICB9LCBudWxsLCA4LCBfaG9pc3RlZF80KV0sIDgsIF9ob2lzdGVkXzIpXSksIGNyZWF0ZUVsZW1lbnRWTm9kZShcImNpcmNsZVwiLCB7XG4gICAgcjogX2N0eC5pbm5lckNpcmNsZVJhZGl1cyxcbiAgICBjeDogX2N0eC5yYWRpdXMsXG4gICAgY3k6IF9jdHgucmFkaXVzLFxuICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdHJva2U6IF9jdHguaW5uZXJTdHJva2VDb2xvcixcbiAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogXCIwXCIsXG4gICAgXCJzdHJva2UtbGluZWNhcFwiOiBfY3R4LnN0cm9rZUxpbmVjYXAsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHguc3Ryb2tlU3R5bGUpXG4gIH0sIG51bGwsIDEyLCBfaG9pc3RlZF81KSwgY3JlYXRlRWxlbWVudFZOb2RlKFwiY2lyY2xlXCIsIHtcbiAgICB0cmFuc2Zvcm06ICdyb3RhdGUoMjcwLCAnICsgX2N0eC5yYWRpdXMgKyAnLCcgKyBfY3R4LnJhZGl1cyArICcpJyxcbiAgICByOiBfY3R4LmlubmVyQ2lyY2xlUmFkaXVzLFxuICAgIGN4OiBfY3R4LnJhZGl1cyxcbiAgICBjeTogX2N0eC5yYWRpdXMsXG4gICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIHN0cm9rZTogYHVybCgnIyR7X2N0eC5yYWRpYWxHcmFkaWVudElkfScpYCxcbiAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogX2N0eC5zdHJva2VMaW5lY2FwLFxuICAgIHN0eWxlOiBub3JtYWxpemVTdHlsZShfY3R4LnByb2dyZXNzU3R5bGUpXG4gIH0sIG51bGwsIDEyLCBfaG9pc3RlZF82KV0sIDgsIF9ob2lzdGVkXzEpKV0sIDQpO1xufVxuXG5mdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBjc3NfMjQ4eiA9IFwiXFxuLnZycF9fd3JhcHBlcltkYXRhLXYtNmEwY2YxZjZdIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnZycF9faW5uZXJbZGF0YS12LTZhMGNmMWY2XSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB0b3A6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICBtYXJnaW46IDAgYXV0bztcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXHJcXG5cIjtcbnN0eWxlSW5qZWN0KGNzc18yNDh6KTtcblxuc2NyaXB0LnJlbmRlciA9IHJlbmRlcjtcbnNjcmlwdC5fX3Njb3BlSWQgPSBcImRhdGEtdi02YTBjZjFmNlwiO1xuXG4vLyBJSUZFIGluamVjdHMgaW5zdGFsbCBmdW5jdGlvbiBpbnRvIGNvbXBvbmVudCwgYWxsb3dpbmcgY29tcG9uZW50XG4vLyB0byBiZSByZWdpc3RlcmVkIHZpYSBWdWUudXNlKCkgYXMgd2VsbCBhcyBWdWUuY29tcG9uZW50KCksXG5cbnZhciBlbnRyeV9lc20gPSAvKiNfX1BVUkVfXyovKCgpID0+IHtcbiAgLy8gQXNzaWduIEluc3RhbGxhYmxlQ29tcG9uZW50IHR5cGVcbiAgY29uc3QgaW5zdGFsbGFibGUgPSBzY3JpcHQ7IC8vIEF0dGFjaCBpbnN0YWxsIGZ1bmN0aW9uIGV4ZWN1dGVkIGJ5IFZ1ZS51c2UoKVxuXG4gIGluc3RhbGxhYmxlLmluc3RhbGwgPSBhcHAgPT4ge1xuICAgIGFwcC5jb21wb25lbnQoXCJSYWRpYWxQcm9ncmVzc0JhclwiLCBpbnN0YWxsYWJsZSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbGxhYmxlO1xufSkoKTsgLy8gSXQncyBwb3NzaWJsZSB0byBleHBvc2UgbmFtZWQgZXhwb3J0cyB3aGVuIHdyaXRpbmcgY29tcG9uZW50cyB0aGF0IGNhblxuLy8gYWxzbyBiZSB1c2VkIGFzIGRpcmVjdGl2ZXMsIGV0Yy4gLSBlZy4gaW1wb3J0IHsgUm9sbHVwRGVtb0RpcmVjdGl2ZSB9IGZyb20gJ3JvbGx1cC1kZW1vJztcbi8vIGV4cG9ydCBjb25zdCBSb2xsdXBEZW1vRGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG5leHBvcnQgeyBlbnRyeV9lc20gYXMgZGVmYXVsdCB9O1xuIiwiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5WdWVTbW9vdGhTY3JvbGw9dCgpOmUuVnVlU21vb3RoU2Nyb2xsPXQoKX0odGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihvKXtpZih0W29dKXJldHVybiB0W29dLmV4cG9ydHM7dmFyIHI9dFtvXT17aTpvLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbb10uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsbiksci5sPSEwLHIuZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxvKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6b30pfSxuLnI9ZnVuY3Rpb24oZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciBvPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBlKWZvcih2YXIgciBpbiBlKW4uZChvLHIsZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxyKSk7cmV0dXJuIG99LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsXCJhXCIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9XCJcIixuKG4ucz0wKX0oW2Z1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiByKGUpe3JldHVybihyPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX12YXIgaTtuLnIodCk7dmFyIHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8LjU/NCplKmUqZTooZS0xKSooMiplLTIpKigyKmUtMikrMX0sYz1mdW5jdGlvbigpe3JldHVybntkdXJhdGlvbjo1MDAsb2Zmc2V0OjAsY29udGFpbmVyOndpbmRvdyx1cGRhdGVIaXN0b3J5OiEwLGVhc2luZ0Z1bmN0aW9uOm51bGx9fSxsPVN5bWJvbChcInNtb290aFNjcm9sbEN0eFwiKSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2Nyb2xsVG8sbj1lLm9mZnNldCxvPWUuZHVyYXRpb24scj1lLmNvbnRhaW5lcixjPWUudXBkYXRlSGlzdG9yeSxsPWUuaGFzaCxmPWUuZWFzaW5nRnVuY3Rpb247aXx8KGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGUsMTYpfSksYyYmd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlJiZsb2NhdGlvbi5oYXNoIT09bCYmd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKFwiXCIsXCJcIixsKTt2YXIgYSxzLGQ9XCJudW1iZXJcIj09dHlwZW9mIHQscD1yLnNjcm9sbFRvcHx8d2luZG93LnBhZ2VZT2Zmc2V0LHk9KGQ/dDoocz1wLFwiSFRNTFwiPT09KGE9dCkubm9kZU5hbWU/LXM6YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArcykpK24sYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBmP2Y6dSxtPURhdGUubm93KCk7IWZ1bmN0aW9uIGUoKXt2YXIgbj1EYXRlLm5vdygpLW0sdT1uPG8sbD11P3ArKHktcCkqYihuL28pOnk7dT9pKGUpOmMmJiFkJiZsb2NhdGlvbi5yZXBsYWNlKFwiI1wiK3QuaWQpLHI9PT13aW5kb3c/ci5zY3JvbGxUbygwLGwpOnIuc2Nyb2xsVG9wPWx9KCl9LGE9e2luc3RhbGw6ZnVuY3Rpb24oZSx0KXt2YXIgbixpPSFlLnZlcnNpb24uc3RhcnRzV2l0aChcIjNcIiksdT1mdW5jdGlvbigpe3JldHVybiB0P09iamVjdC5hc3NpZ24oYygpLHQpOmMoKX07ZS5kaXJlY3RpdmUoXCJzbW9vdGgtc2Nyb2xsXCIsKG8obj17fSxpP1wiaW5zZXJ0ZWRcIjpcIm1vdW50ZWRcIiwoZnVuY3Rpb24oZSx0LG4pe2lmKFwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz9cInVuZGVmaW5lZFwiOnIod2luZG93KSkmJnZvaWQgMCE9PXdpbmRvdy5wYWdlWU9mZnNldCl7dmFyIG89T2JqZWN0LmFzc2lnbih1KCksdC52YWx1ZSk7XCJzdHJpbmdcIj09dHlwZW9mIG8uY29udGFpbmVyJiYoby5jb250YWluZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvLmNvbnRhaW5lcikpO3ZhciBjPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1pP24uZGF0YS5hdHRycy5ocmVmOm4ucHJvcHMuaHJlZixyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQuc3Vic3RyaW5nKDEpKTtyJiZmKE9iamVjdC5hc3NpZ24obyx7c2Nyb2xsVG86cixoYXNoOnR9KSl9O2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsYyksZVtsXT17Y2xpY2tIYW5kbGVyOmN9fX0pKSxvKG4saT9cInVuYmluZFwiOlwidW5tb3VudGVkXCIsKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZVtsXS5jbGlja0hhbmRsZXIpLGVbbF09bnVsbH0pKSxuKSk7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih1KCksZSk7cmV0dXJuIGYodCl9OyhpP2UucHJvdG90eXBlOmUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpLiRzbW9vdGhTY3JvbGw9YSxpfHxlLnByb3ZpZGUoXCJzbW9vdGhTY3JvbGxcIixhKX19O3QuZGVmYXVsdD1hfV0pLmRlZmF1bHR9KSk7IiwiLyohXG4gKiB2dWV4IHY0LjEuMFxuICogKGMpIDIwMjIgRXZhbiBZb3VcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5pbXBvcnQgeyBpbmplY3QsIGVmZmVjdFNjb3BlLCByZWFjdGl2ZSwgd2F0Y2gsIGNvbXB1dGVkIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHNldHVwRGV2dG9vbHNQbHVnaW4gfSBmcm9tICdAdnVlL2RldnRvb2xzLWFwaSc7XG5cbnZhciBzdG9yZUtleSA9ICdzdG9yZSc7XG5cbmZ1bmN0aW9uIHVzZVN0b3JlIChrZXkpIHtcbiAgaWYgKCBrZXkgPT09IHZvaWQgMCApIGtleSA9IG51bGw7XG5cbiAgcmV0dXJuIGluamVjdChrZXkgIT09IG51bGwgPyBrZXkgOiBzdG9yZUtleSlcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZpcnN0IGl0ZW0gdGhhdCBwYXNzIHRoZSB0ZXN0XG4gKiBieSBzZWNvbmQgYXJndW1lbnQgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBsaXN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBmaW5kIChsaXN0LCBmKSB7XG4gIHJldHVybiBsaXN0LmZpbHRlcihmKVswXVxufVxuXG4vKipcbiAqIERlZXAgY29weSB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnNpZGVyaW5nIGNpcmN1bGFyIHN0cnVjdHVyZS5cbiAqIFRoaXMgZnVuY3Rpb24gY2FjaGVzIGFsbCBuZXN0ZWQgb2JqZWN0cyBhbmQgaXRzIGNvcGllcy5cbiAqIElmIGl0IGRldGVjdHMgY2lyY3VsYXIgc3RydWN0dXJlLCB1c2UgY2FjaGVkIGNvcHkgdG8gYXZvaWQgaW5maW5pdGUgbG9vcC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBjYWNoZVxuICogQHJldHVybiB7Kn1cbiAqL1xuZnVuY3Rpb24gZGVlcENvcHkgKG9iaiwgY2FjaGUpIHtcbiAgaWYgKCBjYWNoZSA9PT0gdm9pZCAwICkgY2FjaGUgPSBbXTtcblxuICAvLyBqdXN0IHJldHVybiBpZiBvYmogaXMgaW1tdXRhYmxlIHZhbHVlXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqXG4gIH1cblxuICAvLyBpZiBvYmogaXMgaGl0LCBpdCBpcyBpbiBjaXJjdWxhciBzdHJ1Y3R1cmVcbiAgdmFyIGhpdCA9IGZpbmQoY2FjaGUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLm9yaWdpbmFsID09PSBvYmo7IH0pO1xuICBpZiAoaGl0KSB7XG4gICAgcmV0dXJuIGhpdC5jb3B5XG4gIH1cblxuICB2YXIgY29weSA9IEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XG4gIC8vIHB1dCB0aGUgY29weSBpbnRvIGNhY2hlIGF0IGZpcnN0XG4gIC8vIGJlY2F1c2Ugd2Ugd2FudCB0byByZWZlciBpdCBpbiByZWN1cnNpdmUgZGVlcENvcHlcbiAgY2FjaGUucHVzaCh7XG4gICAgb3JpZ2luYWw6IG9iaixcbiAgICBjb3B5OiBjb3B5XG4gIH0pO1xuXG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgY29weVtrZXldID0gZGVlcENvcHkob2JqW2tleV0sIGNhY2hlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvcHlcbn1cblxuLyoqXG4gKiBmb3JFYWNoIGZvciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZm9yRWFjaFZhbHVlIChvYmosIGZuKSB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBmbihvYmpba2V5XSwga2V5KTsgfSk7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBpc1Byb21pc2UgKHZhbCkge1xuICByZXR1cm4gdmFsICYmIHR5cGVvZiB2YWwudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBhc3NlcnQgKGNvbmRpdGlvbiwgbXNnKSB7XG4gIGlmICghY29uZGl0aW9uKSB7IHRocm93IG5ldyBFcnJvcigoXCJbdnVleF0gXCIgKyBtc2cpKSB9XG59XG5cbmZ1bmN0aW9uIHBhcnRpYWwgKGZuLCBhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4oYXJnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyaWNTdWJzY3JpYmUgKGZuLCBzdWJzLCBvcHRpb25zKSB7XG4gIGlmIChzdWJzLmluZGV4T2YoZm4pIDwgMCkge1xuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5wcmVwZW5kXG4gICAgICA/IHN1YnMudW5zaGlmdChmbilcbiAgICAgIDogc3Vicy5wdXNoKGZuKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpID0gc3Vicy5pbmRleE9mKGZuKTtcbiAgICBpZiAoaSA+IC0xKSB7XG4gICAgICBzdWJzLnNwbGljZShpLCAxKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZSAoc3RvcmUsIGhvdCkge1xuICBzdG9yZS5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tdXRhdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fd3JhcHBlZEdldHRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBzdGF0ZSA9IHN0b3JlLnN0YXRlO1xuICAvLyBpbml0IGFsbCBtb2R1bGVzXG4gIGluc3RhbGxNb2R1bGUoc3RvcmUsIHN0YXRlLCBbXSwgc3RvcmUuX21vZHVsZXMucm9vdCwgdHJ1ZSk7XG4gIC8vIHJlc2V0IHN0YXRlXG4gIHJlc2V0U3RvcmVTdGF0ZShzdG9yZSwgc3RhdGUsIGhvdCk7XG59XG5cbmZ1bmN0aW9uIHJlc2V0U3RvcmVTdGF0ZSAoc3RvcmUsIHN0YXRlLCBob3QpIHtcbiAgdmFyIG9sZFN0YXRlID0gc3RvcmUuX3N0YXRlO1xuICB2YXIgb2xkU2NvcGUgPSBzdG9yZS5fc2NvcGU7XG5cbiAgLy8gYmluZCBzdG9yZSBwdWJsaWMgZ2V0dGVyc1xuICBzdG9yZS5nZXR0ZXJzID0ge307XG4gIC8vIHJlc2V0IGxvY2FsIGdldHRlcnMgY2FjaGVcbiAgc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciB3cmFwcGVkR2V0dGVycyA9IHN0b3JlLl93cmFwcGVkR2V0dGVycztcbiAgdmFyIGNvbXB1dGVkT2JqID0ge307XG4gIHZhciBjb21wdXRlZENhY2hlID0ge307XG5cbiAgLy8gY3JlYXRlIGEgbmV3IGVmZmVjdCBzY29wZSBhbmQgY3JlYXRlIGNvbXB1dGVkIG9iamVjdCBpbnNpZGUgaXQgdG8gYXZvaWRcbiAgLy8gZ2V0dGVycyAoY29tcHV0ZWQpIGdldHRpbmcgZGVzdHJveWVkIG9uIGNvbXBvbmVudCB1bm1vdW50LlxuICB2YXIgc2NvcGUgPSBlZmZlY3RTY29wZSh0cnVlKTtcblxuICBzY29wZS5ydW4oZnVuY3Rpb24gKCkge1xuICAgIGZvckVhY2hWYWx1ZSh3cmFwcGVkR2V0dGVycywgZnVuY3Rpb24gKGZuLCBrZXkpIHtcbiAgICAgIC8vIHVzZSBjb21wdXRlZCB0byBsZXZlcmFnZSBpdHMgbGF6eS1jYWNoaW5nIG1lY2hhbmlzbVxuICAgICAgLy8gZGlyZWN0IGlubGluZSBmdW5jdGlvbiB1c2Ugd2lsbCBsZWFkIHRvIGNsb3N1cmUgcHJlc2VydmluZyBvbGRTdGF0ZS5cbiAgICAgIC8vIHVzaW5nIHBhcnRpYWwgdG8gcmV0dXJuIGZ1bmN0aW9uIHdpdGggb25seSBhcmd1bWVudHMgcHJlc2VydmVkIGluIGNsb3N1cmUgZW52aXJvbm1lbnQuXG4gICAgICBjb21wdXRlZE9ialtrZXldID0gcGFydGlhbChmbiwgc3RvcmUpO1xuICAgICAgY29tcHV0ZWRDYWNoZVtrZXldID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY29tcHV0ZWRPYmpba2V5XSgpOyB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZS5nZXR0ZXJzLCBrZXksIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb21wdXRlZENhY2hlW2tleV0udmFsdWU7IH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUgLy8gZm9yIGxvY2FsIGdldHRlcnNcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBzdG9yZS5fc3RhdGUgPSByZWFjdGl2ZSh7XG4gICAgZGF0YTogc3RhdGVcbiAgfSk7XG5cbiAgLy8gcmVnaXN0ZXIgdGhlIG5ld2x5IGNyZWF0ZWQgZWZmZWN0IHNjb3BlIHRvIHRoZSBzdG9yZSBzbyB0aGF0IHdlIGNhblxuICAvLyBkaXNwb3NlIHRoZSBlZmZlY3RzIHdoZW4gdGhpcyBtZXRob2QgcnVucyBhZ2FpbiBpbiB0aGUgZnV0dXJlLlxuICBzdG9yZS5fc2NvcGUgPSBzY29wZTtcblxuICAvLyBlbmFibGUgc3RyaWN0IG1vZGUgZm9yIG5ldyBzdGF0ZVxuICBpZiAoc3RvcmUuc3RyaWN0KSB7XG4gICAgZW5hYmxlU3RyaWN0TW9kZShzdG9yZSk7XG4gIH1cblxuICBpZiAob2xkU3RhdGUpIHtcbiAgICBpZiAoaG90KSB7XG4gICAgICAvLyBkaXNwYXRjaCBjaGFuZ2VzIGluIGFsbCBzdWJzY3JpYmVkIHdhdGNoZXJzXG4gICAgICAvLyB0byBmb3JjZSBnZXR0ZXIgcmUtZXZhbHVhdGlvbiBmb3IgaG90IHJlbG9hZGluZy5cbiAgICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb2xkU3RhdGUuZGF0YSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBkaXNwb3NlIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBlZmZlY3Qgc2NvcGUgaWYgdGhlcmUgaXMgb25lLlxuICBpZiAob2xkU2NvcGUpIHtcbiAgICBvbGRTY29wZS5zdG9wKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbE1vZHVsZSAoc3RvcmUsIHJvb3RTdGF0ZSwgcGF0aCwgbW9kdWxlLCBob3QpIHtcbiAgdmFyIGlzUm9vdCA9ICFwYXRoLmxlbmd0aDtcbiAgdmFyIG5hbWVzcGFjZSA9IHN0b3JlLl9tb2R1bGVzLmdldE5hbWVzcGFjZShwYXRoKTtcblxuICAvLyByZWdpc3RlciBpbiBuYW1lc3BhY2UgbWFwXG4gIGlmIChtb2R1bGUubmFtZXNwYWNlZCkge1xuICAgIGlmIChzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gZHVwbGljYXRlIG5hbWVzcGFjZSBcIiArIG5hbWVzcGFjZSArIFwiIGZvciB0aGUgbmFtZXNwYWNlZCBtb2R1bGUgXCIgKyAocGF0aC5qb2luKCcvJykpKSk7XG4gICAgfVxuICAgIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV0gPSBtb2R1bGU7XG4gIH1cblxuICAvLyBzZXQgc3RhdGVcbiAgaWYgKCFpc1Jvb3QgJiYgIWhvdCkge1xuICAgIHZhciBwYXJlbnRTdGF0ZSA9IGdldE5lc3RlZFN0YXRlKHJvb3RTdGF0ZSwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIHZhciBtb2R1bGVOYW1lID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgaWYgKG1vZHVsZU5hbWUgaW4gcGFyZW50U3RhdGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAoXCJbdnVleF0gc3RhdGUgZmllbGQgXFxcIlwiICsgbW9kdWxlTmFtZSArIFwiXFxcIiB3YXMgb3ZlcnJpZGRlbiBieSBhIG1vZHVsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXQgXFxcIlwiICsgKHBhdGguam9pbignLicpKSArIFwiXFxcIlwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudFN0YXRlW21vZHVsZU5hbWVdID0gbW9kdWxlLnN0YXRlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGxvY2FsID0gbW9kdWxlLmNvbnRleHQgPSBtYWtlTG9jYWxDb250ZXh0KHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpO1xuXG4gIG1vZHVsZS5mb3JFYWNoTXV0YXRpb24oZnVuY3Rpb24gKG11dGF0aW9uLCBrZXkpIHtcbiAgICB2YXIgbmFtZXNwYWNlZFR5cGUgPSBuYW1lc3BhY2UgKyBrZXk7XG4gICAgcmVnaXN0ZXJNdXRhdGlvbihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIG11dGF0aW9uLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQWN0aW9uKGZ1bmN0aW9uIChhY3Rpb24sIGtleSkge1xuICAgIHZhciB0eXBlID0gYWN0aW9uLnJvb3QgPyBrZXkgOiBuYW1lc3BhY2UgKyBrZXk7XG4gICAgdmFyIGhhbmRsZXIgPSBhY3Rpb24uaGFuZGxlciB8fCBhY3Rpb247XG4gICAgcmVnaXN0ZXJBY3Rpb24oc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hHZXR0ZXIoZnVuY3Rpb24gKGdldHRlciwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyR2V0dGVyKHN0b3JlLCBuYW1lc3BhY2VkVHlwZSwgZ2V0dGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gKGNoaWxkLCBrZXkpIHtcbiAgICBpbnN0YWxsTW9kdWxlKHN0b3JlLCByb290U3RhdGUsIHBhdGguY29uY2F0KGtleSksIGNoaWxkLCBob3QpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBtYWtlIGxvY2FsaXplZCBkaXNwYXRjaCwgY29tbWl0LCBnZXR0ZXJzIGFuZCBzdGF0ZVxuICogaWYgdGhlcmUgaXMgbm8gbmFtZXNwYWNlLCBqdXN0IHVzZSByb290IG9uZXNcbiAqL1xuZnVuY3Rpb24gbWFrZUxvY2FsQ29udGV4dCAoc3RvcmUsIG5hbWVzcGFjZSwgcGF0aCkge1xuICB2YXIgbm9OYW1lc3BhY2UgPSBuYW1lc3BhY2UgPT09ICcnO1xuXG4gIHZhciBsb2NhbCA9IHtcbiAgICBkaXNwYXRjaDogbm9OYW1lc3BhY2UgPyBzdG9yZS5kaXNwYXRjaCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbG9jYWwgYWN0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdG9yZS5kaXNwYXRjaCh0eXBlLCBwYXlsb2FkKVxuICAgIH0sXG5cbiAgICBjb21taXQ6IG5vTmFtZXNwYWNlID8gc3RvcmUuY29tbWl0IDogZnVuY3Rpb24gKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICAgIHZhciBwYXlsb2FkID0gYXJncy5wYXlsb2FkO1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzLm9wdGlvbnM7XG4gICAgICB2YXIgdHlwZSA9IGFyZ3MudHlwZTtcblxuICAgICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnJvb3QpIHtcbiAgICAgICAgdHlwZSA9IG5hbWVzcGFjZSArIHR5cGU7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXN0b3JlLl9tdXRhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIG11dGF0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLmNvbW1pdCh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gZ2V0dGVycyBhbmQgc3RhdGUgb2JqZWN0IG11c3QgYmUgZ290dGVuIGxhemlseVxuICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBiZSBjaGFuZ2VkIGJ5IHN0YXRlIHVwZGF0ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsb2NhbCwge1xuICAgIGdldHRlcnM6IHtcbiAgICAgIGdldDogbm9OYW1lc3BhY2VcbiAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbmFtZXNwYWNlKTsgfVxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0TmVzdGVkU3RhdGUoc3RvcmUuc3RhdGUsIHBhdGgpOyB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbG9jYWxcbn1cblxuZnVuY3Rpb24gbWFrZUxvY2FsR2V0dGVycyAoc3RvcmUsIG5hbWVzcGFjZSkge1xuICBpZiAoIXN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSkge1xuICAgIHZhciBnZXR0ZXJzUHJveHkgPSB7fTtcbiAgICB2YXIgc3BsaXRQb3MgPSBuYW1lc3BhY2UubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKHN0b3JlLmdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIC8vIHNraXAgaWYgdGhlIHRhcmdldCBnZXR0ZXIgaXMgbm90IG1hdGNoIHRoaXMgbmFtZXNwYWNlXG4gICAgICBpZiAodHlwZS5zbGljZSgwLCBzcGxpdFBvcykgIT09IG5hbWVzcGFjZSkgeyByZXR1cm4gfVxuXG4gICAgICAvLyBleHRyYWN0IGxvY2FsIGdldHRlciB0eXBlXG4gICAgICB2YXIgbG9jYWxUeXBlID0gdHlwZS5zbGljZShzcGxpdFBvcyk7XG5cbiAgICAgIC8vIEFkZCBhIHBvcnQgdG8gdGhlIGdldHRlcnMgcHJveHkuXG4gICAgICAvLyBEZWZpbmUgYXMgZ2V0dGVyIHByb3BlcnR5IGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIGV2YWx1YXRlIHRoZSBnZXR0ZXJzIGluIHRoaXMgdGltZS5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnZXR0ZXJzUHJveHksIGxvY2FsVHlwZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLmdldHRlcnNbdHlwZV07IH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSA9IGdldHRlcnNQcm94eTtcbiAgfVxuXG4gIHJldHVybiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV1cbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJNdXRhdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZE11dGF0aW9uSGFuZGxlciAocGF5bG9hZCkge1xuICAgIGhhbmRsZXIuY2FsbChzdG9yZSwgbG9jYWwuc3RhdGUsIHBheWxvYWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fYWN0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX2FjdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZEFjdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5jYWxsKHN0b3JlLCB7XG4gICAgICBkaXNwYXRjaDogbG9jYWwuZGlzcGF0Y2gsXG4gICAgICBjb21taXQ6IGxvY2FsLmNvbW1pdCxcbiAgICAgIGdldHRlcnM6IGxvY2FsLmdldHRlcnMsXG4gICAgICBzdGF0ZTogbG9jYWwuc3RhdGUsXG4gICAgICByb290R2V0dGVyczogc3RvcmUuZ2V0dGVycyxcbiAgICAgIHJvb3RTdGF0ZTogc3RvcmUuc3RhdGVcbiAgICB9LCBwYXlsb2FkKTtcbiAgICBpZiAoIWlzUHJvbWlzZShyZXMpKSB7XG4gICAgICByZXMgPSBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9XG4gICAgaWYgKHN0b3JlLl9kZXZ0b29sSG9vaykge1xuICAgICAgcmV0dXJuIHJlcy5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHN0b3JlLl9kZXZ0b29sSG9vay5lbWl0KCd2dWV4OmVycm9yJywgZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJHZXR0ZXIgKHN0b3JlLCB0eXBlLCByYXdHZXR0ZXIsIGxvY2FsKSB7XG4gIGlmIChzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0pIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgZ2V0dGVyIGtleTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVyc1t0eXBlXSA9IGZ1bmN0aW9uIHdyYXBwZWRHZXR0ZXIgKHN0b3JlKSB7XG4gICAgcmV0dXJuIHJhd0dldHRlcihcbiAgICAgIGxvY2FsLnN0YXRlLCAvLyBsb2NhbCBzdGF0ZVxuICAgICAgbG9jYWwuZ2V0dGVycywgLy8gbG9jYWwgZ2V0dGVyc1xuICAgICAgc3RvcmUuc3RhdGUsIC8vIHJvb3Qgc3RhdGVcbiAgICAgIHN0b3JlLmdldHRlcnMgLy8gcm9vdCBnZXR0ZXJzXG4gICAgKVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmFibGVTdHJpY3RNb2RlIChzdG9yZSkge1xuICB3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5fc3RhdGUuZGF0YTsgfSwgZnVuY3Rpb24gKCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGFzc2VydChzdG9yZS5fY29tbWl0dGluZywgXCJkbyBub3QgbXV0YXRlIHZ1ZXggc3RvcmUgc3RhdGUgb3V0c2lkZSBtdXRhdGlvbiBoYW5kbGVycy5cIik7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUsIGZsdXNoOiAnc3luYycgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZFN0YXRlIChzdGF0ZSwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxufVxuXG5mdW5jdGlvbiB1bmlmeU9iamVjdFN0eWxlICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdCh0eXBlKSAmJiB0eXBlLnR5cGUpIHtcbiAgICBvcHRpb25zID0gcGF5bG9hZDtcbiAgICBwYXlsb2FkID0gdHlwZTtcbiAgICB0eXBlID0gdHlwZS50eXBlO1xuICB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsIChcImV4cGVjdHMgc3RyaW5nIGFzIHRoZSB0eXBlLCBidXQgZm91bmQgXCIgKyAodHlwZW9mIHR5cGUpICsgXCIuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQsIG9wdGlvbnM6IG9wdGlvbnMgfVxufVxuXG52YXIgTEFCRUxfVlVFWF9CSU5ESU5HUyA9ICd2dWV4IGJpbmRpbmdzJztcbnZhciBNVVRBVElPTlNfTEFZRVJfSUQgPSAndnVleDptdXRhdGlvbnMnO1xudmFyIEFDVElPTlNfTEFZRVJfSUQgPSAndnVleDphY3Rpb25zJztcbnZhciBJTlNQRUNUT1JfSUQgPSAndnVleCc7XG5cbnZhciBhY3Rpb25JZCA9IDA7XG5cbmZ1bmN0aW9uIGFkZERldnRvb2xzIChhcHAsIHN0b3JlKSB7XG4gIHNldHVwRGV2dG9vbHNQbHVnaW4oXG4gICAge1xuICAgICAgaWQ6ICdvcmcudnVlanMudnVleCcsXG4gICAgICBhcHA6IGFwcCxcbiAgICAgIGxhYmVsOiAnVnVleCcsXG4gICAgICBob21lcGFnZTogJ2h0dHBzOi8vbmV4dC52dWV4LnZ1ZWpzLm9yZy8nLFxuICAgICAgbG9nbzogJ2h0dHBzOi8vdnVlanMub3JnL2ltYWdlcy9pY29ucy9mYXZpY29uLTk2eDk2LnBuZycsXG4gICAgICBwYWNrYWdlTmFtZTogJ3Z1ZXgnLFxuICAgICAgY29tcG9uZW50U3RhdGVUeXBlczogW0xBQkVMX1ZVRVhfQklORElOR1NdXG4gICAgfSxcbiAgICBmdW5jdGlvbiAoYXBpKSB7XG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgIGxhYmVsOiAnVnVleCBNdXRhdGlvbnMnLFxuICAgICAgICBjb2xvcjogQ09MT1JfTElNRV81MDBcbiAgICAgIH0pO1xuXG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBBQ1RJT05TX0xBWUVSX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXggQWN0aW9ucycsXG4gICAgICAgIGNvbG9yOiBDT0xPUl9MSU1FXzUwMFxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5hZGRJbnNwZWN0b3Ioe1xuICAgICAgICBpZDogSU5TUEVDVE9SX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXgnLFxuICAgICAgICBpY29uOiAnc3RvcmFnZScsXG4gICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ0ZpbHRlciBzdG9yZXMuLi4nXG4gICAgICB9KTtcblxuICAgICAgYXBpLm9uLmdldEluc3BlY3RvclRyZWUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgaWYgKHBheWxvYWQuZmlsdGVyKSB7XG4gICAgICAgICAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICAgICAgICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUobm9kZXMsIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHBheWxvYWQuZmlsdGVyLCAnJyk7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IG5vZGVzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IFtcbiAgICAgICAgICAgICAgZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlKHN0b3JlLl9tb2R1bGVzLnJvb3QsICcnKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZ2V0SW5zcGVjdG9yU3RhdGUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgdmFyIG1vZHVsZVBhdGggPSBwYXlsb2FkLm5vZGVJZDtcbiAgICAgICAgICBtYWtlTG9jYWxHZXR0ZXJzKHN0b3JlLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgICBwYXlsb2FkLnN0YXRlID0gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZShcbiAgICAgICAgICAgIGdldFN0b3JlTW9kdWxlKHN0b3JlLl9tb2R1bGVzLCBtb2R1bGVQYXRoKSxcbiAgICAgICAgICAgIG1vZHVsZVBhdGggPT09ICdyb290JyA/IHN0b3JlLmdldHRlcnMgOiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlLFxuICAgICAgICAgICAgbW9kdWxlUGF0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZWRpdEluc3BlY3RvclN0YXRlKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IElOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgIHZhciBtb2R1bGVQYXRoID0gcGF5bG9hZC5ub2RlSWQ7XG4gICAgICAgICAgdmFyIHBhdGggPSBwYXlsb2FkLnBhdGg7XG4gICAgICAgICAgaWYgKG1vZHVsZVBhdGggIT09ICdyb290Jykge1xuICAgICAgICAgICAgcGF0aCA9IG1vZHVsZVBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuY29uY2F0KCBwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcGF5bG9hZC5zZXQoc3RvcmUuX3N0YXRlLmRhdGEsIHBhdGgsIHBheWxvYWQuc3RhdGUudmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB7fTtcblxuICAgICAgICBpZiAobXV0YXRpb24ucGF5bG9hZCkge1xuICAgICAgICAgIGRhdGEucGF5bG9hZCA9IG11dGF0aW9uLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnN0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgYXBpLm5vdGlmeUNvbXBvbmVudFVwZGF0ZSgpO1xuICAgICAgICBhcGkuc2VuZEluc3BlY3RvclRyZWUoSU5TUEVDVE9SX0lEKTtcbiAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JTdGF0ZShJTlNQRUNUT1JfSUQpO1xuXG4gICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICBsYXllcklkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICB0aXRsZTogbXV0YXRpb24udHlwZSxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbih7XG4gICAgICAgIGJlZm9yZTogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbi5faWQgPSBhY3Rpb25JZCsrO1xuICAgICAgICAgIGFjdGlvbi5fdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IGFjdGlvbi5fdGltZSxcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICBncm91cElkOiBhY3Rpb24uX2lkLFxuICAgICAgICAgICAgICBzdWJ0aXRsZTogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlcjogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBhY3Rpb24uX3RpbWU7XG4gICAgICAgICAgZGF0YS5kdXJhdGlvbiA9IHtcbiAgICAgICAgICAgIF9jdXN0b206IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2R1cmF0aW9uJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogKGR1cmF0aW9uICsgXCJtc1wiKSxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ0FjdGlvbiBkdXJhdGlvbicsXG4gICAgICAgICAgICAgIHZhbHVlOiBkdXJhdGlvblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICBkYXRhLnBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgIHRpdGxlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICAgICAgZ3JvdXBJZDogYWN0aW9uLl9pZCxcbiAgICAgICAgICAgICAgc3VidGl0bGU6ICdlbmQnLFxuICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn1cblxuLy8gZXh0cmFjdGVkIGZyb20gdGFpbHdpbmQgcGFsZXR0ZVxudmFyIENPTE9SX0xJTUVfNTAwID0gMHg4NGNjMTY7XG52YXIgQ09MT1JfREFSSyA9IDB4NjY2NjY2O1xudmFyIENPTE9SX1dISVRFID0gMHhmZmZmZmY7XG5cbnZhciBUQUdfTkFNRVNQQUNFRCA9IHtcbiAgbGFiZWw6ICduYW1lc3BhY2VkJyxcbiAgdGV4dENvbG9yOiBDT0xPUl9XSElURSxcbiAgYmFja2dyb3VuZENvbG9yOiBDT0xPUl9EQVJLXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3ROYW1lRnJvbVBhdGggKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGggJiYgcGF0aCAhPT0gJ3Jvb3QnID8gcGF0aC5zcGxpdCgnLycpLnNsaWNlKC0yLCAtMSlbMF0gOiAnUm9vdCdcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IG1vZHVsZVxuICogQHJldHVybiB7aW1wb3J0KCdAdnVlL2RldnRvb2xzLWFwaScpLkN1c3RvbUluc3BlY3Rvck5vZGV9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZSAobW9kdWxlLCBwYXRoKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHBhdGggfHwgJ3Jvb3QnLFxuICAgIC8vIGFsbCBtb2R1bGVzIGVuZCB3aXRoIGEgYC9gLCB3ZSB3YW50IHRoZSBsYXN0IHNlZ21lbnQgb25seVxuICAgIC8vIGNhcnQvIC0+IGNhcnRcbiAgICAvLyBuZXN0ZWQvY2FydC8gLT4gY2FydFxuICAgIGxhYmVsOiBleHRyYWN0TmFtZUZyb21QYXRoKHBhdGgpLFxuICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdLFxuICAgIGNoaWxkcmVuOiBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHsgcmV0dXJuIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShcbiAgICAgICAgbW9kdWxlLl9jaGlsZHJlblttb2R1bGVOYW1lXSxcbiAgICAgICAgcGF0aCArIG1vZHVsZU5hbWUgKyAnLydcbiAgICAgICk7IH1cbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JOb2RlW119IHJlc3VsdFxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWx0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUgKHJlc3VsdCwgbW9kdWxlLCBmaWx0ZXIsIHBhdGgpIHtcbiAgaWYgKHBhdGguaW5jbHVkZXMoZmlsdGVyKSkge1xuICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgIGlkOiBwYXRoIHx8ICdyb290JyxcbiAgICAgIGxhYmVsOiBwYXRoLmVuZHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoIC0gMSkgOiBwYXRoIHx8ICdSb290JyxcbiAgICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdXG4gICAgfSk7XG4gIH1cbiAgT2JqZWN0LmtleXMobW9kdWxlLl9jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAobW9kdWxlTmFtZSkge1xuICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUocmVzdWx0LCBtb2R1bGUuX2NoaWxkcmVuW21vZHVsZU5hbWVdLCBmaWx0ZXIsIHBhdGggKyBtb2R1bGVOYW1lICsgJy8nKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEByZXR1cm4ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JTdGF0ZX1cbiAqL1xuZnVuY3Rpb24gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZSAobW9kdWxlLCBnZXR0ZXJzLCBwYXRoKSB7XG4gIGdldHRlcnMgPSBwYXRoID09PSAncm9vdCcgPyBnZXR0ZXJzIDogZ2V0dGVyc1twYXRoXTtcbiAgdmFyIGdldHRlcnNLZXlzID0gT2JqZWN0LmtleXMoZ2V0dGVycyk7XG4gIHZhciBzdG9yZVN0YXRlID0ge1xuICAgIHN0YXRlOiBPYmplY3Qua2V5cyhtb2R1bGUuc3RhdGUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBtb2R1bGUuc3RhdGVba2V5XVxuICAgIH0pOyB9KVxuICB9O1xuXG4gIGlmIChnZXR0ZXJzS2V5cy5sZW5ndGgpIHtcbiAgICB2YXIgdHJlZSA9IHRyYW5zZm9ybVBhdGhzVG9PYmplY3RUcmVlKGdldHRlcnMpO1xuICAgIHN0b3JlU3RhdGUuZ2V0dGVycyA9IE9iamVjdC5rZXlzKHRyZWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXkuZW5kc1dpdGgoJy8nKSA/IGV4dHJhY3ROYW1lRnJvbVBhdGgoa2V5KSA6IGtleSxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiB0cmVlW2tleV07IH0pXG4gICAgfSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0b3JlU3RhdGVcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUGF0aHNUb09iamVjdFRyZWUgKGdldHRlcnMpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBPYmplY3Qua2V5cyhnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcGF0aCA9IGtleS5zcGxpdCgnLycpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciB0YXJnZXQgPSByZXN1bHQ7XG4gICAgICB2YXIgbGVhZktleSA9IHBhdGgucG9wKCk7XG4gICAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKCF0YXJnZXRbcF0pIHtcbiAgICAgICAgICB0YXJnZXRbcF0gPSB7XG4gICAgICAgICAgICBfY3VzdG9tOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICAgICAgZGlzcGxheTogcCxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ01vZHVsZScsXG4gICAgICAgICAgICAgIGFic3RyYWN0OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcF0uX2N1c3RvbS52YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdGFyZ2V0W2xlYWZLZXldID0gY2FuVGhyb3coZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyc1trZXldOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXJzW2tleV07IH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gZ2V0U3RvcmVNb2R1bGUgKG1vZHVsZU1hcCwgcGF0aCkge1xuICB2YXIgbmFtZXMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9KTtcbiAgcmV0dXJuIG5hbWVzLnJlZHVjZShcbiAgICBmdW5jdGlvbiAobW9kdWxlLCBtb2R1bGVOYW1lLCBpKSB7XG4gICAgICB2YXIgY2hpbGQgPSBtb2R1bGVbbW9kdWxlTmFtZV07XG4gICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigoXCJNaXNzaW5nIG1vZHVsZSBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIGZvciBwYXRoIFxcXCJcIiArIHBhdGggKyBcIlxcXCIuXCIpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGkgPT09IG5hbWVzLmxlbmd0aCAtIDEgPyBjaGlsZCA6IGNoaWxkLl9jaGlsZHJlblxuICAgIH0sXG4gICAgcGF0aCA9PT0gJ3Jvb3QnID8gbW9kdWxlTWFwIDogbW9kdWxlTWFwLnJvb3QuX2NoaWxkcmVuXG4gIClcbn1cblxuZnVuY3Rpb24gY2FuVGhyb3cgKGNiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNiKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlXG4gIH1cbn1cblxuLy8gQmFzZSBkYXRhIHN0cnVjdCBmb3Igc3RvcmUncyBtb2R1bGUsIHBhY2thZ2Ugd2l0aCBzb21lIGF0dHJpYnV0ZSBhbmQgbWV0aG9kXG52YXIgTW9kdWxlID0gZnVuY3Rpb24gTW9kdWxlIChyYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgLy8gU3RvcmUgc29tZSBjaGlsZHJlbiBpdGVtXG4gIHRoaXMuX2NoaWxkcmVuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUgb2JqZWN0IHdoaWNoIHBhc3NlZCBieSBwcm9ncmFtbWVyXG4gIHRoaXMuX3Jhd01vZHVsZSA9IHJhd01vZHVsZTtcbiAgdmFyIHJhd1N0YXRlID0gcmF3TW9kdWxlLnN0YXRlO1xuXG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlJ3Mgc3RhdGVcbiAgdGhpcy5zdGF0ZSA9ICh0eXBlb2YgcmF3U3RhdGUgPT09ICdmdW5jdGlvbicgPyByYXdTdGF0ZSgpIDogcmF3U3RhdGUpIHx8IHt9O1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyBuYW1lc3BhY2VkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLm5hbWVzcGFjZWQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISF0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZFxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uIGFkZENoaWxkIChrZXksIG1vZHVsZSkge1xuICB0aGlzLl9jaGlsZHJlbltrZXldID0gbW9kdWxlO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIHJlbW92ZUNoaWxkIChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW2tleV07XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gZ2V0Q2hpbGQgKGtleSkge1xuICByZXR1cm4gdGhpcy5fY2hpbGRyZW5ba2V5XVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5oYXNDaGlsZCA9IGZ1bmN0aW9uIGhhc0NoaWxkIChrZXkpIHtcbiAgcmV0dXJuIGtleSBpbiB0aGlzLl9jaGlsZHJlblxufTtcblxuTW9kdWxlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKHJhd01vZHVsZSkge1xuICB0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZCA9IHJhd01vZHVsZS5uYW1lc3BhY2VkO1xuICBpZiAocmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucyA9IHJhd01vZHVsZS5hY3Rpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucyA9IHJhd01vZHVsZS5tdXRhdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmdldHRlcnMgPSByYXdNb2R1bGUuZ2V0dGVycztcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQ2hpbGQgPSBmdW5jdGlvbiBmb3JFYWNoQ2hpbGQgKGZuKSB7XG4gIGZvckVhY2hWYWx1ZSh0aGlzLl9jaGlsZHJlbiwgZm4pO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoR2V0dGVyID0gZnVuY3Rpb24gZm9yRWFjaEdldHRlciAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEFjdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hBY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hNdXRhdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hNdXRhdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucywgZm4pO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggTW9kdWxlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzJDEgKTtcblxudmFyIE1vZHVsZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiBNb2R1bGVDb2xsZWN0aW9uIChyYXdSb290TW9kdWxlKSB7XG4gIC8vIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIChWdWV4LlN0b3JlIG9wdGlvbnMpXG4gIHRoaXMucmVnaXN0ZXIoW10sIHJhd1Jvb3RNb2R1bGUsIGZhbHNlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAocGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG1vZHVsZSwga2V5KSB7XG4gICAgcmV0dXJuIG1vZHVsZS5nZXRDaGlsZChrZXkpXG4gIH0sIHRoaXMucm9vdClcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldE5hbWVzcGFjZSA9IGZ1bmN0aW9uIGdldE5hbWVzcGFjZSAocGF0aCkge1xuICB2YXIgbW9kdWxlID0gdGhpcy5yb290O1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwga2V5KSB7XG4gICAgbW9kdWxlID0gbW9kdWxlLmdldENoaWxkKGtleSk7XG4gICAgcmV0dXJuIG5hbWVzcGFjZSArIChtb2R1bGUubmFtZXNwYWNlZCA/IGtleSArICcvJyA6ICcnKVxuICB9LCAnJylcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSQxIChyYXdSb290TW9kdWxlKSB7XG4gIHVwZGF0ZShbXSwgdGhpcy5yb290LCByYXdSb290TW9kdWxlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIgKHBhdGgsIHJhd01vZHVsZSwgcnVudGltZSkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gICAgaWYgKCBydW50aW1lID09PSB2b2lkIDAgKSBydW50aW1lID0gdHJ1ZTtcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIHJhd01vZHVsZSk7XG4gIH1cblxuICB2YXIgbmV3TW9kdWxlID0gbmV3IE1vZHVsZShyYXdNb2R1bGUsIHJ1bnRpbWUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLnJvb3QgPSBuZXdNb2R1bGU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBwYXJlbnQuYWRkQ2hpbGQocGF0aFtwYXRoLmxlbmd0aCAtIDFdLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKHJhd01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZS5tb2R1bGVzLCBmdW5jdGlvbiAocmF3Q2hpbGRNb2R1bGUsIGtleSkge1xuICAgICAgdGhpcyQxJDEucmVnaXN0ZXIocGF0aC5jb25jYXQoa2V5KSwgcmF3Q2hpbGRNb2R1bGUsIHJ1bnRpbWUpO1xuICAgIH0pO1xuICB9XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyID0gZnVuY3Rpb24gdW5yZWdpc3RlciAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICB2YXIgY2hpbGQgPSBwYXJlbnQuZ2V0Q2hpbGQoa2V5KTtcblxuICBpZiAoIWNoaWxkKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gdW5yZWdpc3RlciBtb2R1bGUgJ1wiICsga2V5ICsgXCInLCB3aGljaCBpcyBcIiArXG4gICAgICAgIFwibm90IHJlZ2lzdGVyZWRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWNoaWxkLnJ1bnRpbWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBhcmVudC5yZW1vdmVDaGlsZChrZXkpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuaXNSZWdpc3RlcmVkID0gZnVuY3Rpb24gaXNSZWdpc3RlcmVkIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHBhcmVudCkge1xuICAgIHJldHVybiBwYXJlbnQuaGFzQ2hpbGQoa2V5KVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59O1xuXG5mdW5jdGlvbiB1cGRhdGUgKHBhdGgsIHRhcmdldE1vZHVsZSwgbmV3TW9kdWxlKSB7XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSB0YXJnZXQgbW9kdWxlXG4gIHRhcmdldE1vZHVsZS51cGRhdGUobmV3TW9kdWxlKTtcblxuICAvLyB1cGRhdGUgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgICBpZiAoIXRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gYWRkIGEgbmV3IG1vZHVsZSAnXCIgKyBrZXkgKyBcIicgb24gaG90IHJlbG9hZGluZywgXCIgK1xuICAgICAgICAgICAgJ21hbnVhbCByZWxvYWQgaXMgbmVlZGVkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUoXG4gICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgIHRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpLFxuICAgICAgICBuZXdNb2R1bGUubW9kdWxlc1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgZnVuY3Rpb25Bc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24nXG59O1xuXG52YXIgb2JqZWN0QXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLmhhbmRsZXIgPT09ICdmdW5jdGlvbicpOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uIG9yIG9iamVjdCB3aXRoIFwiaGFuZGxlclwiIGZ1bmN0aW9uJ1xufTtcblxudmFyIGFzc2VydFR5cGVzID0ge1xuICBnZXR0ZXJzOiBmdW5jdGlvbkFzc2VydCxcbiAgbXV0YXRpb25zOiBmdW5jdGlvbkFzc2VydCxcbiAgYWN0aW9uczogb2JqZWN0QXNzZXJ0XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRSYXdNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSkge1xuICBPYmplY3Qua2V5cyhhc3NlcnRUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFyYXdNb2R1bGVba2V5XSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGFzc2VydE9wdGlvbnMgPSBhc3NlcnRUeXBlc1trZXldO1xuXG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZVtrZXldLCBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYXNzZXJ0T3B0aW9ucy5hc3NlcnQodmFsdWUpLFxuICAgICAgICBtYWtlQXNzZXJ0aW9uTWVzc2FnZShwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBhc3NlcnRPcHRpb25zLmV4cGVjdGVkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBc3NlcnRpb25NZXNzYWdlIChwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBleHBlY3RlZCkge1xuICB2YXIgYnVmID0ga2V5ICsgXCIgc2hvdWxkIGJlIFwiICsgZXhwZWN0ZWQgKyBcIiBidXQgXFxcIlwiICsga2V5ICsgXCIuXCIgKyB0eXBlICsgXCJcXFwiXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBidWYgKz0gXCIgaW4gbW9kdWxlIFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIjtcbiAgfVxuICBidWYgKz0gXCIgaXMgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSArIFwiLlwiO1xuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlIChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgU3RvcmUob3B0aW9ucylcbn1cblxudmFyIFN0b3JlID0gZnVuY3Rpb24gU3RvcmUgKG9wdGlvbnMpIHtcbiAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcsIFwidnVleCByZXF1aXJlcyBhIFByb21pc2UgcG9seWZpbGwgaW4gdGhpcyBicm93c2VyLlwiKTtcbiAgICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIFN0b3JlLCBcInN0b3JlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvci5cIik7XG4gIH1cblxuICB2YXIgcGx1Z2lucyA9IG9wdGlvbnMucGx1Z2luczsgaWYgKCBwbHVnaW5zID09PSB2b2lkIDAgKSBwbHVnaW5zID0gW107XG4gIHZhciBzdHJpY3QgPSBvcHRpb25zLnN0cmljdDsgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IGZhbHNlO1xuICB2YXIgZGV2dG9vbHMgPSBvcHRpb25zLmRldnRvb2xzO1xuXG4gIC8vIHN0b3JlIGludGVybmFsIHN0YXRlXG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBmYWxzZTtcbiAgdGhpcy5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fbW9kdWxlcyA9IG5ldyBNb2R1bGVDb2xsZWN0aW9uKG9wdGlvbnMpO1xuICB0aGlzLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAvLyBFZmZlY3RTY29wZSBpbnN0YW5jZS4gd2hlbiByZWdpc3RlcmluZyBuZXcgZ2V0dGVycywgd2Ugd3JhcCB0aGVtIGluc2lkZVxuICAvLyBFZmZlY3RTY29wZSBzbyB0aGF0IGdldHRlcnMgKGNvbXB1dGVkKSB3b3VsZCBub3QgYmUgZGVzdHJveWVkIG9uXG4gIC8vIGNvbXBvbmVudCB1bm1vdW50LlxuICB0aGlzLl9zY29wZSA9IG51bGw7XG5cbiAgdGhpcy5fZGV2dG9vbHMgPSBkZXZ0b29scztcblxuICAvLyBiaW5kIGNvbW1pdCBhbmQgZGlzcGF0Y2ggdG8gc2VsZlxuICB2YXIgc3RvcmUgPSB0aGlzO1xuICB2YXIgcmVmID0gdGhpcztcbiAgdmFyIGRpc3BhdGNoID0gcmVmLmRpc3BhdGNoO1xuICB2YXIgY29tbWl0ID0gcmVmLmNvbW1pdDtcbiAgdGhpcy5kaXNwYXRjaCA9IGZ1bmN0aW9uIGJvdW5kRGlzcGF0Y2ggKHR5cGUsIHBheWxvYWQpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2guY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZClcbiAgfTtcbiAgdGhpcy5jb21taXQgPSBmdW5jdGlvbiBib3VuZENvbW1pdCAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBjb21taXQuY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgb3B0aW9ucylcbiAgfTtcblxuICAvLyBzdHJpY3QgbW9kZVxuICB0aGlzLnN0cmljdCA9IHN0cmljdDtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9tb2R1bGVzLnJvb3Quc3RhdGU7XG5cbiAgLy8gaW5pdCByb290IG1vZHVsZS5cbiAgLy8gdGhpcyBhbHNvIHJlY3Vyc2l2ZWx5IHJlZ2lzdGVycyBhbGwgc3ViLW1vZHVsZXNcbiAgLy8gYW5kIGNvbGxlY3RzIGFsbCBtb2R1bGUgZ2V0dGVycyBpbnNpZGUgdGhpcy5fd3JhcHBlZEdldHRlcnNcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCBzdGF0ZSwgW10sIHRoaXMuX21vZHVsZXMucm9vdCk7XG5cbiAgLy8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgc3RhdGUsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcmVhY3Rpdml0eVxuICAvLyAoYWxzbyByZWdpc3RlcnMgX3dyYXBwZWRHZXR0ZXJzIGFzIGNvbXB1dGVkIHByb3BlcnRpZXMpXG4gIHJlc2V0U3RvcmVTdGF0ZSh0aGlzLCBzdGF0ZSk7XG5cbiAgLy8gYXBwbHkgcGx1Z2luc1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikgeyByZXR1cm4gcGx1Z2luKHRoaXMkMSQxKTsgfSk7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBzdGF0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5TdG9yZS5wcm90b3R5cGUuaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwgKGFwcCwgaW5qZWN0S2V5KSB7XG4gIGFwcC5wcm92aWRlKGluamVjdEtleSB8fCBzdG9yZUtleSwgdGhpcyk7XG4gIGFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kc3RvcmUgPSB0aGlzO1xuXG4gIHZhciB1c2VEZXZ0b29scyA9IHRoaXMuX2RldnRvb2xzICE9PSB1bmRlZmluZWRcbiAgICA/IHRoaXMuX2RldnRvb2xzXG4gICAgOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fO1xuXG4gIGlmICh1c2VEZXZ0b29scykge1xuICAgIGFkZERldnRvb2xzKGFwcCwgdGhpcyk7XG4gIH1cbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5zdGF0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9zdGF0ZS5kYXRhXG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuc3RhdGUuc2V0ID0gZnVuY3Rpb24gKHYpIHtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChmYWxzZSwgXCJ1c2Ugc3RvcmUucmVwbGFjZVN0YXRlKCkgdG8gZXhwbGljaXQgcmVwbGFjZSBzdG9yZSBzdGF0ZS5cIik7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5jb21taXQgPSBmdW5jdGlvbiBjb21taXQgKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBjb21taXRcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuICAgIHZhciBvcHRpb25zID0gcmVmLm9wdGlvbnM7XG5cbiAgdmFyIG11dGF0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX211dGF0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIGVudHJ5LmZvckVhY2goZnVuY3Rpb24gY29tbWl0SXRlcmF0b3IgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIocGF5bG9hZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoaXMuX3N1YnNjcmliZXJzXG4gICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1YihtdXRhdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcblxuICBpZiAoXG4gICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnNpbGVudFxuICApIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt2dWV4XSBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUgKyBcIi4gU2lsZW50IG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkLiBcIiArXG4gICAgICAnVXNlIHRoZSBmaWx0ZXIgZnVuY3Rpb25hbGl0eSBpbiB0aGUgdnVlLWRldnRvb2xzJ1xuICAgICk7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoIChfdHlwZSwgX3BheWxvYWQpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBkaXNwYXRjaFxuICB2YXIgcmVmID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcblxuICB2YXIgYWN0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX2FjdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGFjdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAuc2xpY2UoKSAvLyBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBpdGVyYXRvciBpbnZhbGlkYXRpb24gaWYgc3Vic2NyaWJlciBzeW5jaHJvbm91c2x5IGNhbGxzIHVuc3Vic2NyaWJlXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmU7IH0pXG4gICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlKGFjdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBiZWZvcmUgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZXN1bHQgPSBlbnRyeS5sZW5ndGggPiAxXG4gICAgPyBQcm9taXNlLmFsbChlbnRyeS5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGhhbmRsZXIocGF5bG9hZCk7IH0pKVxuICAgIDogZW50cnlbMF0ocGF5bG9hZCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZXN1bHQudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5hZnRlcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXIoYWN0aW9uLCB0aGlzJDEkMS5zdGF0ZSk7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGFmdGVyIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc29sdmUocmVzKTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMkMSQxLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmVycm9yOyB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcihhY3Rpb24sIHRoaXMkMSQxLnN0YXRlLCBlcnJvcik7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGVycm9yIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH0pXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlIChmbiwgb3B0aW9ucykge1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShmbiwgdGhpcy5fc3Vic2NyaWJlcnMsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlQWN0aW9uID0gZnVuY3Rpb24gc3Vic2NyaWJlQWN0aW9uIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3VicyA9IHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IHsgYmVmb3JlOiBmbiB9IDogZm47XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKHN1YnMsIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLndhdGNoID0gZnVuY3Rpb24gd2F0Y2gkMSAoZ2V0dGVyLCBjYiwgb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgZ2V0dGVyID09PSAnZnVuY3Rpb24nLCBcInN0b3JlLndhdGNoIG9ubHkgYWNjZXB0cyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuICByZXR1cm4gd2F0Y2goZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyKHRoaXMkMSQxLnN0YXRlLCB0aGlzJDEkMS5nZXR0ZXJzKTsgfSwgY2IsIE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIHJlcGxhY2VTdGF0ZSAoc3RhdGUpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMSQxLl9zdGF0ZS5kYXRhID0gc3RhdGU7XG4gIH0pO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSwgb3B0aW9ucykge1xuICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgICBhc3NlcnQocGF0aC5sZW5ndGggPiAwLCAnY2Fubm90IHJlZ2lzdGVyIHRoZSByb290IG1vZHVsZSBieSB1c2luZyByZWdpc3Rlck1vZHVsZS4nKTtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZXMucmVnaXN0ZXIocGF0aCwgcmF3TW9kdWxlKTtcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCB0aGlzLnN0YXRlLCBwYXRoLCB0aGlzLl9tb2R1bGVzLmdldChwYXRoKSwgb3B0aW9ucy5wcmVzZXJ2ZVN0YXRlKTtcbiAgLy8gcmVzZXQgc3RvcmUgdG8gdXBkYXRlIGdldHRlcnMuLi5cbiAgcmVzZXRTdG9yZVN0YXRlKHRoaXMsIHRoaXMuc3RhdGUpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnVucmVnaXN0ZXJNb2R1bGUgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyTW9kdWxlIChwYXRoKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnVucmVnaXN0ZXIocGF0aCk7XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnRTdGF0ZSA9IGdldE5lc3RlZFN0YXRlKHRoaXMkMSQxLnN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgZGVsZXRlIHBhcmVudFN0YXRlW3BhdGhbcGF0aC5sZW5ndGggLSAxXV07XG4gIH0pO1xuICByZXNldFN0b3JlKHRoaXMpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLmhhc01vZHVsZSA9IGZ1bmN0aW9uIGhhc01vZHVsZSAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fbW9kdWxlcy5pc1JlZ2lzdGVyZWQocGF0aClcbn07XG5cblN0b3JlLnByb3RvdHlwZS5ob3RVcGRhdGUgPSBmdW5jdGlvbiBob3RVcGRhdGUgKG5ld09wdGlvbnMpIHtcbiAgdGhpcy5fbW9kdWxlcy51cGRhdGUobmV3T3B0aW9ucyk7XG4gIHJlc2V0U3RvcmUodGhpcywgdHJ1ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuX3dpdGhDb21taXQgPSBmdW5jdGlvbiBfd2l0aENvbW1pdCAoZm4pIHtcbiAgdmFyIGNvbW1pdHRpbmcgPSB0aGlzLl9jb21taXR0aW5nO1xuICB0aGlzLl9jb21taXR0aW5nID0gdHJ1ZTtcbiAgZm4oKTtcbiAgdGhpcy5fY29tbWl0dGluZyA9IGNvbW1pdHRpbmc7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU3RvcmUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGdldHRpbmcgdGhlIHN0YXRlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gc3RhdGVzICMgT2JqZWN0J3MgaXRlbSBjYW4gYmUgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHQgc3RhdGUgYW5kIGdldHRlcnMgZm9yIHBhcmFtLCB5b3UgY2FuIGRvIHNvbWV0aGluZyBmb3Igc3RhdGUgYW5kIGdldHRlcnMgaW4gaXQuXG4gKiBAcGFyYW0ge09iamVjdH1cbiAqL1xudmFyIG1hcFN0YXRlID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIHN0YXRlcykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoc3RhdGVzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBTdGF0ZTogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoc3RhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkU3RhdGUgKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhpcy4kc3RvcmUuc3RhdGU7XG4gICAgICB2YXIgZ2V0dGVycyA9IHRoaXMuJHN0b3JlLmdldHRlcnM7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcFN0YXRlJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IG1vZHVsZS5jb250ZXh0LnN0YXRlO1xuICAgICAgICBnZXR0ZXJzID0gbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmNhbGwodGhpcywgc3RhdGUsIGdldHRlcnMpXG4gICAgICAgIDogc3RhdGVbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgY29tbWl0dGluZyB0aGUgbXV0YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG11dGF0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBjb21taXRgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbm90aGVyIHBhcmFtcy4gWW91IGNhbiBjb21taXQgbXV0YXRpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwTXV0YXRpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIG11dGF0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAobXV0YXRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBNdXRhdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKG11dGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZE11dGF0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBHZXQgdGhlIGNvbW1pdCBtZXRob2QgZnJvbSBzdG9yZVxuICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuJHN0b3JlLmNvbW1pdDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwTXV0YXRpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb21taXQgPSBtb2R1bGUuY29udGV4dC5jb21taXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbY29tbWl0XS5jb25jYXQoYXJncykpXG4gICAgICAgIDogY29tbWl0LmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgZ2V0dGVyc1xuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZ2V0dGVyc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwR2V0dGVycyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBnZXR0ZXJzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChnZXR0ZXJzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBHZXR0ZXJzOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIC8vIFRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gbXV0YXRlZCBieSBub3JtYWxpemVOYW1lc3BhY2VcbiAgICB2YWwgPSBuYW1lc3BhY2UgKyB2YWw7XG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRHZXR0ZXIgKCkge1xuICAgICAgaWYgKG5hbWVzcGFjZSAmJiAhZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBHZXR0ZXJzJywgbmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoYWN0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwQWN0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoYWN0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEFjdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gZ2V0IGRpc3BhdGNoIGZ1bmN0aW9uIGZyb20gc3RvcmVcbiAgICAgIHZhciBkaXNwYXRjaCA9IHRoaXMuJHN0b3JlLmRpc3BhdGNoO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBBY3Rpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaCA9IG1vZHVsZS5jb250ZXh0LmRpc3BhdGNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2Rpc3BhdGNoXS5jb25jYXQoYXJncykpXG4gICAgICAgIDogZGlzcGF0Y2guYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmViaW5kaW5nIG5hbWVzcGFjZSBwYXJhbSBmb3IgbWFwWFhYIGZ1bmN0aW9uIGluIHNwZWNpYWwgc2NvcGVkLCBhbmQgcmV0dXJuIHRoZW0gYnkgc2ltcGxlIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMgPSBmdW5jdGlvbiAobmFtZXNwYWNlKSB7IHJldHVybiAoe1xuICBtYXBTdGF0ZTogbWFwU3RhdGUuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKVxufSk7IH07XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBtYXBcbiAqIG5vcm1hbGl6ZU1hcChbMSwgMiwgM10pID0+IFsgeyBrZXk6IDEsIHZhbDogMSB9LCB7IGtleTogMiwgdmFsOiAyIH0sIHsga2V5OiAzLCB2YWw6IDMgfSBdXG4gKiBub3JtYWxpemVNYXAoe2E6IDEsIGI6IDIsIGM6IDN9KSA9PiBbIHsga2V5OiAnYScsIHZhbDogMSB9LCB7IGtleTogJ2InLCB2YWw6IDIgfSwgeyBrZXk6ICdjJywgdmFsOiAzIH0gXVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG1hcFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVNYXAgKG1hcCkge1xuICBpZiAoIWlzVmFsaWRNYXAobWFwKSkge1xuICAgIHJldHVybiBbXVxuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcClcbiAgICA/IG1hcC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDoga2V5IH0pOyB9KVxuICAgIDogT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDogbWFwW2tleV0gfSk7IH0pXG59XG5cbi8qKlxuICogVmFsaWRhdGUgd2hldGhlciBnaXZlbiBtYXAgaXMgdmFsaWQgb3Igbm90XG4gKiBAcGFyYW0geyp9IG1hcFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE1hcCAobWFwKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcCkgfHwgaXNPYmplY3QobWFwKVxufVxuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIGV4cGVjdCB0d28gcGFyYW0gY29udGFpbnMgbmFtZXNwYWNlIGFuZCBtYXAuIGl0IHdpbGwgbm9ybWFsaXplIHRoZSBuYW1lc3BhY2UgYW5kIHRoZW4gdGhlIHBhcmFtJ3MgZnVuY3Rpb24gd2lsbCBoYW5kbGUgdGhlIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBtYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWVzcGFjZSAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlICE9PSAnc3RyaW5nJykge1xuICAgICAgbWFwID0gbmFtZXNwYWNlO1xuICAgICAgbmFtZXNwYWNlID0gJyc7XG4gICAgfSBlbHNlIGlmIChuYW1lc3BhY2UuY2hhckF0KG5hbWVzcGFjZS5sZW5ndGggLSAxKSAhPT0gJy8nKSB7XG4gICAgICBuYW1lc3BhY2UgKz0gJy8nO1xuICAgIH1cbiAgICByZXR1cm4gZm4obmFtZXNwYWNlLCBtYXApXG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggYSBzcGVjaWFsIG1vZHVsZSBmcm9tIHN0b3JlIGJ5IG5hbWVzcGFjZS4gaWYgbW9kdWxlIG5vdCBleGlzdCwgcHJpbnQgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yZVxuICogQHBhcmFtIHtTdHJpbmd9IGhlbHBlclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVCeU5hbWVzcGFjZSAoc3RvcmUsIGhlbHBlciwgbmFtZXNwYWNlKSB7XG4gIHZhciBtb2R1bGUgPSBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdO1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFtb2R1bGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBtb2R1bGUgbmFtZXNwYWNlIG5vdCBmb3VuZCBpbiBcIiArIGhlbHBlciArIFwiKCk6IFwiICsgbmFtZXNwYWNlKSk7XG4gIH1cbiAgcmV0dXJuIG1vZHVsZVxufVxuXG4vLyBDcmVkaXRzOiBib3Jyb3dlZCBjb2RlIGZyb20gZmNvbWIvcmVkdXgtbG9nZ2VyXG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlciAocmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGNvbGxhcHNlZCA9IHJlZi5jb2xsYXBzZWQ7IGlmICggY29sbGFwc2VkID09PSB2b2lkIDAgKSBjb2xsYXBzZWQgPSB0cnVlO1xuICB2YXIgZmlsdGVyID0gcmVmLmZpbHRlcjsgaWYgKCBmaWx0ZXIgPT09IHZvaWQgMCApIGZpbHRlciA9IGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGVCZWZvcmUsIHN0YXRlQWZ0ZXIpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciB0cmFuc2Zvcm1lciA9IHJlZi50cmFuc2Zvcm1lcjsgaWYgKCB0cmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgdHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoc3RhdGUpIHsgcmV0dXJuIHN0YXRlOyB9O1xuICB2YXIgbXV0YXRpb25UcmFuc2Zvcm1lciA9IHJlZi5tdXRhdGlvblRyYW5zZm9ybWVyOyBpZiAoIG11dGF0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIG11dGF0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAobXV0KSB7IHJldHVybiBtdXQ7IH07XG4gIHZhciBhY3Rpb25GaWx0ZXIgPSByZWYuYWN0aW9uRmlsdGVyOyBpZiAoIGFjdGlvbkZpbHRlciA9PT0gdm9pZCAwICkgYWN0aW9uRmlsdGVyID0gZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBhY3Rpb25UcmFuc2Zvcm1lciA9IHJlZi5hY3Rpb25UcmFuc2Zvcm1lcjsgaWYgKCBhY3Rpb25UcmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgYWN0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoYWN0KSB7IHJldHVybiBhY3Q7IH07XG4gIHZhciBsb2dNdXRhdGlvbnMgPSByZWYubG9nTXV0YXRpb25zOyBpZiAoIGxvZ011dGF0aW9ucyA9PT0gdm9pZCAwICkgbG9nTXV0YXRpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ0FjdGlvbnMgPSByZWYubG9nQWN0aW9uczsgaWYgKCBsb2dBY3Rpb25zID09PSB2b2lkIDAgKSBsb2dBY3Rpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ2dlciA9IHJlZi5sb2dnZXI7IGlmICggbG9nZ2VyID09PSB2b2lkIDAgKSBsb2dnZXIgPSBjb25zb2xlO1xuXG4gIHJldHVybiBmdW5jdGlvbiAoc3RvcmUpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gZGVlcENvcHkoc3RvcmUuc3RhdGUpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobG9nTXV0YXRpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0gZGVlcENvcHkoc3RhdGUpO1xuXG4gICAgICAgIGlmIChmaWx0ZXIobXV0YXRpb24sIHByZXZTdGF0ZSwgbmV4dFN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRNdXRhdGlvbiA9IG11dGF0aW9uVHJhbnNmb3JtZXIobXV0YXRpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJtdXRhdGlvbiBcIiArIChtdXRhdGlvbi50eXBlKSArIGZvcm1hdHRlZFRpbWU7XG5cbiAgICAgICAgICBzdGFydE1lc3NhZ2UobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIHByZXYgc3RhdGUnLCAnY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIocHJldlN0YXRlKSk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgbXV0YXRpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkTXV0YXRpb24pO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG5leHQgc3RhdGUnLCAnY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIobmV4dFN0YXRlKSk7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ0FjdGlvbnMpIHtcbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICBpZiAoYWN0aW9uRmlsdGVyKGFjdGlvbiwgc3RhdGUpKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZFRpbWUgPSBnZXRGb3JtYXR0ZWRUaW1lKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZEFjdGlvbiA9IGFjdGlvblRyYW5zZm9ybWVyKGFjdGlvbik7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcImFjdGlvbiBcIiArIChhY3Rpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBhY3Rpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkQWN0aW9uKTtcbiAgICAgICAgICBlbmRNZXNzYWdlKGxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydE1lc3NhZ2UgKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKSB7XG4gIHZhciBzdGFydE1lc3NhZ2UgPSBjb2xsYXBzZWRcbiAgICA/IGxvZ2dlci5ncm91cENvbGxhcHNlZFxuICAgIDogbG9nZ2VyLmdyb3VwO1xuXG4gIC8vIHJlbmRlclxuICB0cnkge1xuICAgIHN0YXJ0TWVzc2FnZS5jYWxsKGxvZ2dlciwgbWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIubG9nKG1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZE1lc3NhZ2UgKGxvZ2dlcikge1xuICB0cnkge1xuICAgIGxvZ2dlci5ncm91cEVuZCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZygn4oCU4oCUIGxvZyBlbmQg4oCU4oCUJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVGltZSAoKSB7XG4gIHZhciB0aW1lID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChcIiBAIFwiICsgKHBhZCh0aW1lLmdldEhvdXJzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldE1pbnV0ZXMoKSwgMikpICsgXCI6XCIgKyAocGFkKHRpbWUuZ2V0U2Vjb25kcygpLCAyKSkgKyBcIi5cIiArIChwYWQodGltZS5nZXRNaWxsaXNlY29uZHMoKSwgMykpKVxufVxuXG5mdW5jdGlvbiByZXBlYXQgKHN0ciwgdGltZXMpIHtcbiAgcmV0dXJuIChuZXcgQXJyYXkodGltZXMgKyAxKSkuam9pbihzdHIpXG59XG5cbmZ1bmN0aW9uIHBhZCAobnVtLCBtYXhMZW5ndGgpIHtcbiAgcmV0dXJuIHJlcGVhdCgnMCcsIG1heExlbmd0aCAtIG51bS50b1N0cmluZygpLmxlbmd0aCkgKyBudW1cbn1cblxudmFyIGluZGV4ID0ge1xuICB2ZXJzaW9uOiAnNC4xLjAnLFxuICBTdG9yZTogU3RvcmUsXG4gIHN0b3JlS2V5OiBzdG9yZUtleSxcbiAgY3JlYXRlU3RvcmU6IGNyZWF0ZVN0b3JlLFxuICB1c2VTdG9yZTogdXNlU3RvcmUsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMsXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMsXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMsXG4gIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzOiBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyxcbiAgY3JlYXRlTG9nZ2VyOiBjcmVhdGVMb2dnZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuZXhwb3J0IHsgU3RvcmUsIGNyZWF0ZUxvZ2dlciwgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsIGNyZWF0ZVN0b3JlLCBtYXBBY3Rpb25zLCBtYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnMsIG1hcFN0YXRlLCBzdG9yZUtleSwgdXNlU3RvcmUgfTtcbiIsInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgX19nZXRPd25Qcm9wTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xudmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHtcbiAgaWYgKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGZyb20gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9Db21tb25KUyA9IChtb2QpID0+IF9fY29weVByb3BzKF9fZGVmUHJvcCh7fSwgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIHNyY19leHBvcnRzID0ge307XG5fX2V4cG9ydChzcmNfZXhwb3J0cywge1xuICBDb21ib2JveDogKCkgPT4gQ29tYm9ib3gsXG4gIENvbWJvYm94QnV0dG9uOiAoKSA9PiBDb21ib2JveEJ1dHRvbixcbiAgQ29tYm9ib3hJbnB1dDogKCkgPT4gQ29tYm9ib3hJbnB1dCxcbiAgQ29tYm9ib3hMYWJlbDogKCkgPT4gQ29tYm9ib3hMYWJlbCxcbiAgQ29tYm9ib3hPcHRpb246ICgpID0+IENvbWJvYm94T3B0aW9uLFxuICBDb21ib2JveE9wdGlvbnM6ICgpID0+IENvbWJvYm94T3B0aW9ucyxcbiAgRGlhbG9nOiAoKSA9PiBEaWFsb2csXG4gIERpYWxvZ0JhY2tkcm9wOiAoKSA9PiBEaWFsb2dCYWNrZHJvcCxcbiAgRGlhbG9nRGVzY3JpcHRpb246ICgpID0+IERpYWxvZ0Rlc2NyaXB0aW9uLFxuICBEaWFsb2dPdmVybGF5OiAoKSA9PiBEaWFsb2dPdmVybGF5LFxuICBEaWFsb2dQYW5lbDogKCkgPT4gRGlhbG9nUGFuZWwsXG4gIERpYWxvZ1RpdGxlOiAoKSA9PiBEaWFsb2dUaXRsZSxcbiAgRGlzY2xvc3VyZTogKCkgPT4gRGlzY2xvc3VyZSxcbiAgRGlzY2xvc3VyZUJ1dHRvbjogKCkgPT4gRGlzY2xvc3VyZUJ1dHRvbixcbiAgRGlzY2xvc3VyZVBhbmVsOiAoKSA9PiBEaXNjbG9zdXJlUGFuZWwsXG4gIEZvY3VzVHJhcDogKCkgPT4gRm9jdXNUcmFwLFxuICBMaXN0Ym94OiAoKSA9PiBMaXN0Ym94LFxuICBMaXN0Ym94QnV0dG9uOiAoKSA9PiBMaXN0Ym94QnV0dG9uLFxuICBMaXN0Ym94TGFiZWw6ICgpID0+IExpc3Rib3hMYWJlbCxcbiAgTGlzdGJveE9wdGlvbjogKCkgPT4gTGlzdGJveE9wdGlvbixcbiAgTGlzdGJveE9wdGlvbnM6ICgpID0+IExpc3Rib3hPcHRpb25zLFxuICBNZW51OiAoKSA9PiBNZW51LFxuICBNZW51QnV0dG9uOiAoKSA9PiBNZW51QnV0dG9uLFxuICBNZW51SXRlbTogKCkgPT4gTWVudUl0ZW0sXG4gIE1lbnVJdGVtczogKCkgPT4gTWVudUl0ZW1zLFxuICBQb3BvdmVyOiAoKSA9PiBQb3BvdmVyLFxuICBQb3BvdmVyQnV0dG9uOiAoKSA9PiBQb3BvdmVyQnV0dG9uLFxuICBQb3BvdmVyR3JvdXA6ICgpID0+IFBvcG92ZXJHcm91cCxcbiAgUG9wb3Zlck92ZXJsYXk6ICgpID0+IFBvcG92ZXJPdmVybGF5LFxuICBQb3BvdmVyUGFuZWw6ICgpID0+IFBvcG92ZXJQYW5lbCxcbiAgUG9ydGFsOiAoKSA9PiBQb3J0YWwsXG4gIFBvcnRhbEdyb3VwOiAoKSA9PiBQb3J0YWxHcm91cCxcbiAgUmFkaW9Hcm91cDogKCkgPT4gUmFkaW9Hcm91cCxcbiAgUmFkaW9Hcm91cERlc2NyaXB0aW9uOiAoKSA9PiBSYWRpb0dyb3VwRGVzY3JpcHRpb24sXG4gIFJhZGlvR3JvdXBMYWJlbDogKCkgPT4gUmFkaW9Hcm91cExhYmVsLFxuICBSYWRpb0dyb3VwT3B0aW9uOiAoKSA9PiBSYWRpb0dyb3VwT3B0aW9uLFxuICBTd2l0Y2g6ICgpID0+IFN3aXRjaCxcbiAgU3dpdGNoRGVzY3JpcHRpb246ICgpID0+IFN3aXRjaERlc2NyaXB0aW9uLFxuICBTd2l0Y2hHcm91cDogKCkgPT4gU3dpdGNoR3JvdXAsXG4gIFN3aXRjaExhYmVsOiAoKSA9PiBTd2l0Y2hMYWJlbCxcbiAgVGFiOiAoKSA9PiBUYWIsXG4gIFRhYkdyb3VwOiAoKSA9PiBUYWJHcm91cCxcbiAgVGFiTGlzdDogKCkgPT4gVGFiTGlzdCxcbiAgVGFiUGFuZWw6ICgpID0+IFRhYlBhbmVsLFxuICBUYWJQYW5lbHM6ICgpID0+IFRhYlBhbmVscyxcbiAgVHJhbnNpdGlvbkNoaWxkOiAoKSA9PiBUcmFuc2l0aW9uQ2hpbGQsXG4gIFRyYW5zaXRpb25Sb290OiAoKSA9PiBUcmFuc2l0aW9uUm9vdFxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LnRzXG52YXIgaW1wb3J0X3Z1ZTggPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvcmVuZGVyLnRzXG52YXIgaW1wb3J0X3Z1ZSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9tYXRjaC50c1xuZnVuY3Rpb24gbWF0Y2godmFsdWUsIGxvb2t1cCwgLi4uYXJncykge1xuICBpZiAodmFsdWUgaW4gbG9va3VwKSB7XG4gICAgbGV0IHJldHVyblZhbHVlID0gbG9va3VwW3ZhbHVlXTtcbiAgICByZXR1cm4gdHlwZW9mIHJldHVyblZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyByZXR1cm5WYWx1ZSguLi5hcmdzKSA6IHJldHVyblZhbHVlO1xuICB9XG4gIGxldCBlcnJvciA9IG5ldyBFcnJvcihgVHJpZWQgdG8gaGFuZGxlIFwiJHt2YWx1ZX1cIiBidXQgdGhlcmUgaXMgbm8gaGFuZGxlciBkZWZpbmVkLiBPbmx5IGRlZmluZWQgaGFuZGxlcnMgYXJlOiAke09iamVjdC5rZXlzKGxvb2t1cCkubWFwKChrZXkpID0+IGBcIiR7a2V5fVwiYCkuam9pbihcIiwgXCIpfS5gKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yLCBtYXRjaCk7XG4gIHRocm93IGVycm9yO1xufVxuXG4vLyBzcmMvdXRpbHMvcmVuZGVyLnRzXG5mdW5jdGlvbiByZW5kZXIoe1xuICB2aXNpYmxlID0gdHJ1ZSxcbiAgZmVhdHVyZXMgPSAwIC8qIE5vbmUgKi8sXG4gIG91clByb3BzLFxuICB0aGVpclByb3BzLFxuICAuLi5tYWluXG59KSB7XG4gIHZhciBfYTtcbiAgbGV0IHByb3BzID0gbWVyZ2VQcm9wcyh0aGVpclByb3BzLCBvdXJQcm9wcyk7XG4gIGxldCBtYWluV2l0aFByb3BzID0gT2JqZWN0LmFzc2lnbihtYWluLCB7IHByb3BzIH0pO1xuICBpZiAodmlzaWJsZSlcbiAgICByZXR1cm4gX3JlbmRlcihtYWluV2l0aFByb3BzKTtcbiAgaWYgKGZlYXR1cmVzICYgMiAvKiBTdGF0aWMgKi8pIHtcbiAgICBpZiAocHJvcHMuc3RhdGljKVxuICAgICAgcmV0dXJuIF9yZW5kZXIobWFpbldpdGhQcm9wcyk7XG4gIH1cbiAgaWYgKGZlYXR1cmVzICYgMSAvKiBSZW5kZXJTdHJhdGVneSAqLykge1xuICAgIGxldCBzdHJhdGVneSA9ICgoX2EgPSBwcm9wcy51bm1vdW50KSAhPSBudWxsID8gX2EgOiB0cnVlKSA/IDAgLyogVW5tb3VudCAqLyA6IDEgLyogSGlkZGVuICovO1xuICAgIHJldHVybiBtYXRjaChzdHJhdGVneSwge1xuICAgICAgWzAgLyogVW5tb3VudCAqL10oKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSxcbiAgICAgIFsxIC8qIEhpZGRlbiAqL10oKSB7XG4gICAgICAgIHJldHVybiBfcmVuZGVyKHtcbiAgICAgICAgICAuLi5tYWluLFxuICAgICAgICAgIHByb3BzOiB7IC4uLnByb3BzLCBoaWRkZW46IHRydWUsIHN0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0gfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gX3JlbmRlcihtYWluV2l0aFByb3BzKTtcbn1cbmZ1bmN0aW9uIF9yZW5kZXIoe1xuICBwcm9wcyxcbiAgYXR0cnMsXG4gIHNsb3RzLFxuICBzbG90LFxuICBuYW1lXG59KSB7XG4gIHZhciBfYTtcbiAgbGV0IHsgYXMsIC4uLmluY29taW5nUHJvcHMgfSA9IG9taXQocHJvcHMsIFtcInVubW91bnRcIiwgXCJzdGF0aWNcIl0pO1xuICBsZXQgY2hpbGRyZW4gPSAoX2EgPSBzbG90cy5kZWZhdWx0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChzbG90cywgc2xvdCk7XG4gIGxldCBkYXRhQXR0cmlidXRlcyA9IHt9O1xuICBpZiAoYXMgPT09IFwidGVtcGxhdGVcIikge1xuICAgIGNoaWxkcmVuID0gZmxhdHRlbkZyYWdtZW50cyhjaGlsZHJlbik7XG4gICAgaWYgKE9iamVjdC5rZXlzKGluY29taW5nUHJvcHMpLmxlbmd0aCA+IDAgfHwgT2JqZWN0LmtleXMoYXR0cnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBbZmlyc3RDaGlsZCwgLi4ub3RoZXJdID0gY2hpbGRyZW4gIT0gbnVsbCA/IGNoaWxkcmVuIDogW107XG4gICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KGZpcnN0Q2hpbGQpIHx8IG90aGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgICAnUGFzc2luZyBwcm9wcyBvbiBcInRlbXBsYXRlXCIhJyxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICAgIGBUaGUgY3VycmVudCBjb21wb25lbnQgPCR7bmFtZX0gLz4gaXMgcmVuZGVyaW5nIGEgXCJ0ZW1wbGF0ZVwiLmAsXG4gICAgICAgICAgYEhvd2V2ZXIgd2UgbmVlZCB0byBwYXNzdGhyb3VnaCB0aGUgZm9sbG93aW5nIHByb3BzOmAsXG4gICAgICAgICAgT2JqZWN0LmtleXMoaW5jb21pbmdQcm9wcykuY29uY2F0KE9iamVjdC5rZXlzKGF0dHJzKSkuc29ydCgoYSwgeikgPT4gYS5sb2NhbGVDb21wYXJlKHopKS5tYXAoKGxpbmUpID0+IGAgIC0gJHtsaW5lfWApLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBcIllvdSBjYW4gYXBwbHkgYSBmZXcgc29sdXRpb25zOlwiLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgICdBZGQgYW4gYGFzPVwiLi4uXCJgIHByb3AsIHRvIGVuc3VyZSB0aGF0IHdlIHJlbmRlciBhbiBhY3R1YWwgZWxlbWVudCBpbnN0ZWFkIG9mIGEgXCJ0ZW1wbGF0ZVwiLicsXG4gICAgICAgICAgICBcIlJlbmRlciBhIHNpbmdsZSBlbGVtZW50IGFzIHRoZSBjaGlsZCBzbyB0aGF0IHdlIGNhbiBmb3J3YXJkIHRoZSBwcm9wcyBvbnRvIHRoYXQgZWxlbWVudC5cIlxuICAgICAgICAgIF0ubWFwKChsaW5lKSA9PiBgICAtICR7bGluZX1gKS5qb2luKFwiXFxuXCIpXG4gICAgICAgIF0uam9pbihcIlxcblwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUuY2xvbmVWTm9kZSkoZmlyc3RDaGlsZCwgT2JqZWN0LmFzc2lnbih7fSwgaW5jb21pbmdQcm9wcywgZGF0YUF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlLmgpKGFzLCBPYmplY3QuYXNzaWduKHt9LCBpbmNvbWluZ1Byb3BzLCBkYXRhQXR0cmlidXRlcyksIGNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5GcmFnbWVudHMoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGNoaWxkKSA9PiB7XG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IGltcG9ydF92dWUuRnJhZ21lbnQpIHtcbiAgICAgIHJldHVybiBmbGF0dGVuRnJhZ21lbnRzKGNoaWxkLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgcmV0dXJuIFtjaGlsZF07XG4gIH0pO1xufVxuZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5saXN0T2ZQcm9wcykge1xuICB2YXIgX2E7XG4gIGlmIChsaXN0T2ZQcm9wcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIHt9O1xuICBpZiAobGlzdE9mUHJvcHMubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiBsaXN0T2ZQcm9wc1swXTtcbiAgbGV0IHRhcmdldCA9IHt9O1xuICBsZXQgZXZlbnRIYW5kbGVycyA9IHt9O1xuICBmb3IgKGxldCBwcm9wcyBvZiBsaXN0T2ZQcm9wcykge1xuICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpIHtcbiAgICAgIGlmIChwcm9wLnN0YXJ0c1dpdGgoXCJvblwiKSAmJiB0eXBlb2YgcHJvcHNbcHJvcF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAoX2EgPSBldmVudEhhbmRsZXJzW3Byb3BdKSAhPSBudWxsID8gX2EgOiBldmVudEhhbmRsZXJzW3Byb3BdID0gW107XG4gICAgICAgIGV2ZW50SGFuZGxlcnNbcHJvcF0ucHVzaChwcm9wc1twcm9wXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHRhcmdldC5kaXNhYmxlZCB8fCB0YXJnZXRbXCJhcmlhLWRpc2FibGVkXCJdKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoZXZlbnRIYW5kbGVycykubWFwKChldmVudE5hbWUpID0+IFtldmVudE5hbWUsIHZvaWQgMF0pKSk7XG4gIH1cbiAgZm9yIChsZXQgZXZlbnROYW1lIGluIGV2ZW50SGFuZGxlcnMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRhcmdldCwge1xuICAgICAgW2V2ZW50TmFtZV0oZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVyc1tldmVudE5hbWVdO1xuICAgICAgICBmb3IgKGxldCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG4gICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGhhbmRsZXIoZXZlbnQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIGNvbXBhY3Qob2JqZWN0KSB7XG4gIGxldCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIG9iamVjdCk7XG4gIGZvciAobGV0IGtleSBpbiBjbG9uZSkge1xuICAgIGlmIChjbG9uZVtrZXldID09PSB2b2lkIDApXG4gICAgICBkZWxldGUgY2xvbmVba2V5XTtcbiAgfVxuICByZXR1cm4gY2xvbmU7XG59XG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5c1RvT21pdCA9IFtdKSB7XG4gIGxldCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIG9iamVjdCk7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzVG9PbWl0KSB7XG4gICAgaWYgKGtleSBpbiBjbG9uZSlcbiAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xuICB9XG4gIHJldHVybiBjbG9uZTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGlucHV0KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBpbnB1dC50eXBlID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIGlucHV0LnR5cGUgPT09IFwib2JqZWN0XCIpXG4gICAgcmV0dXJuIHRydWU7XG4gIGlmICh0eXBlb2YgaW5wdXQudHlwZSA9PT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtaWQudHNcbnZhciBpZCA9IDA7XG5mdW5jdGlvbiBnZW5lcmF0ZUlkKCkge1xuICByZXR1cm4gKytpZDtcbn1cbmZ1bmN0aW9uIHVzZUlkKCkge1xuICByZXR1cm4gZ2VuZXJhdGVJZCgpO1xufVxuXG4vLyBzcmMvdXRpbHMvY2FsY3VsYXRlLWFjdGl2ZS1pbmRleC50c1xuZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoeCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG9iamVjdDogXCIgKyB4KTtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGFjdGlvbiwgcmVzb2x2ZXJzKSB7XG4gIGxldCBpdGVtcyA9IHJlc29sdmVycy5yZXNvbHZlSXRlbXMoKTtcbiAgaWYgKGl0ZW1zLmxlbmd0aCA8PSAwKVxuICAgIHJldHVybiBudWxsO1xuICBsZXQgY3VycmVudEFjdGl2ZUluZGV4ID0gcmVzb2x2ZXJzLnJlc29sdmVBY3RpdmVJbmRleCgpO1xuICBsZXQgYWN0aXZlSW5kZXggPSBjdXJyZW50QWN0aXZlSW5kZXggIT0gbnVsbCA/IGN1cnJlbnRBY3RpdmVJbmRleCA6IC0xO1xuICBsZXQgbmV4dEFjdGl2ZUluZGV4ID0gKCgpID0+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi5mb2N1cykge1xuICAgICAgY2FzZSAwIC8qIEZpcnN0ICovOlxuICAgICAgICByZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiAhcmVzb2x2ZXJzLnJlc29sdmVEaXNhYmxlZChpdGVtKSk7XG4gICAgICBjYXNlIDEgLyogUHJldmlvdXMgKi86IHtcbiAgICAgICAgbGV0IGlkeCA9IGl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmRJbmRleCgoaXRlbSwgaWR4MiwgYWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGFjdGl2ZUluZGV4ICE9PSAtMSAmJiBhbGwubGVuZ3RoIC0gaWR4MiAtIDEgPj0gYWN0aXZlSW5kZXgpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuICFyZXNvbHZlcnMucmVzb2x2ZURpc2FibGVkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIGlkeDtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCAtIDEgLSBpZHg7XG4gICAgICB9XG4gICAgICBjYXNlIDIgLyogTmV4dCAqLzpcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgaWYgKGlkeCA8PSBhY3RpdmVJbmRleClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAzIC8qIExhc3QgKi86IHtcbiAgICAgICAgbGV0IGlkeCA9IGl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmRJbmRleCgoaXRlbSkgPT4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSkpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gaWR4O1xuICAgICAgICByZXR1cm4gaXRlbXMubGVuZ3RoIC0gMSAtIGlkeDtcbiAgICAgIH1cbiAgICAgIGNhc2UgNCAvKiBTcGVjaWZpYyAqLzpcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gcmVzb2x2ZXJzLnJlc29sdmVJZChpdGVtKSA9PT0gYWN0aW9uLmlkKTtcbiAgICAgIGNhc2UgNSAvKiBOb3RoaW5nICovOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydE5ldmVyKGFjdGlvbik7XG4gICAgfVxuICB9KSgpO1xuICByZXR1cm4gbmV4dEFjdGl2ZUluZGV4ID09PSAtMSA/IGN1cnJlbnRBY3RpdmVJbmRleCA6IG5leHRBY3RpdmVJbmRleDtcbn1cblxuLy8gc3JjL3V0aWxzL2RvbS50c1xuZnVuY3Rpb24gZG9tKHJlZjE5KSB7XG4gIHZhciBfYTtcbiAgaWYgKHJlZjE5ID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmIChyZWYxOS52YWx1ZSA9PSBudWxsKVxuICAgIHJldHVybiBudWxsO1xuICByZXR1cm4gKF9hID0gcmVmMTkudmFsdWUuJGVsKSAhPSBudWxsID8gX2EgOiByZWYxOS52YWx1ZTtcbn1cblxuLy8gc3JjL2ludGVybmFsL29wZW4tY2xvc2VkLnRzXG52YXIgaW1wb3J0X3Z1ZTIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENvbnRleHQgPSBTeW1ib2woXCJDb250ZXh0XCIpO1xuZnVuY3Rpb24gaGFzT3BlbkNsb3NlZCgpIHtcbiAgcmV0dXJuIHVzZU9wZW5DbG9zZWQoKSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZU9wZW5DbG9zZWQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIuaW5qZWN0KShDb250ZXh0LCBudWxsKTtcbn1cbmZ1bmN0aW9uIHVzZU9wZW5DbG9zZWRQcm92aWRlcih2YWx1ZSkge1xuICAoMCwgaW1wb3J0X3Z1ZTIucHJvdmlkZSkoQ29udGV4dCwgdmFsdWUpO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXJlc29sdmUtYnV0dG9uLXR5cGUudHNcbnZhciBpbXBvcnRfdnVlMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiByZXNvbHZlVHlwZSh0eXBlLCBhcykge1xuICBpZiAodHlwZSlcbiAgICByZXR1cm4gdHlwZTtcbiAgbGV0IHRhZyA9IGFzICE9IG51bGwgPyBhcyA6IFwiYnV0dG9uXCI7XG4gIGlmICh0eXBlb2YgdGFnID09PSBcInN0cmluZ1wiICYmIHRhZy50b0xvd2VyQ2FzZSgpID09PSBcImJ1dHRvblwiKVxuICAgIHJldHVybiBcImJ1dHRvblwiO1xuICByZXR1cm4gdm9pZCAwO1xufVxuZnVuY3Rpb24gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoZGF0YSwgcmVmRWxlbWVudCkge1xuICBsZXQgdHlwZSA9ICgwLCBpbXBvcnRfdnVlMy5yZWYpKHJlc29sdmVUeXBlKGRhdGEudmFsdWUudHlwZSwgZGF0YS52YWx1ZS5hcykpO1xuICAoMCwgaW1wb3J0X3Z1ZTMub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgdHlwZS52YWx1ZSA9IHJlc29sdmVUeXBlKGRhdGEudmFsdWUudHlwZSwgZGF0YS52YWx1ZS5hcyk7XG4gIH0pO1xuICAoMCwgaW1wb3J0X3Z1ZTMud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGUudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFkb20ocmVmRWxlbWVudCkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGRvbShyZWZFbGVtZW50KSBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50ICYmICEoKF9hID0gZG9tKHJlZkVsZW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkpIHtcbiAgICAgIHR5cGUudmFsdWUgPSBcImJ1dHRvblwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0eXBlO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXRyZWUtd2Fsa2VyLnRzXG52YXIgaW1wb3J0X3Z1ZTQgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvb3duZXIudHNcbmZ1bmN0aW9uIGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlKVxuICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIGlmIChlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50Lmhhc093blByb3BlcnR5KFwidmFsdWVcIikpIHtcbiAgICBsZXQgZG9tRWxlbWVudCA9IGRvbShlbGVtZW50KTtcbiAgICBpZiAoZG9tRWxlbWVudClcbiAgICAgIHJldHVybiBkb21FbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50O1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXRyZWUtd2Fsa2VyLnRzXG5mdW5jdGlvbiB1c2VUcmVlV2Fsa2VyKHtcbiAgY29udGFpbmVyLFxuICBhY2NlcHQsXG4gIHdhbGssXG4gIGVuYWJsZWRcbn0pIHtcbiAgKDAsIGltcG9ydF92dWU0LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgbGV0IHJvb3QgPSBjb250YWluZXIudmFsdWU7XG4gICAgaWYgKCFyb290KVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChlbmFibGVkICE9PSB2b2lkIDAgJiYgIWVuYWJsZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSBnZXRPd25lckRvY3VtZW50KGNvbnRhaW5lcik7XG4gICAgaWYgKCFvd25lckRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBhY2NlcHROb2RlID0gT2JqZWN0LmFzc2lnbigobm9kZSkgPT4gYWNjZXB0KG5vZGUpLCB7IGFjY2VwdE5vZGU6IGFjY2VwdCB9KTtcbiAgICBsZXQgd2Fsa2VyID0gb3duZXJEb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBhY2NlcHROb2RlLCBmYWxzZSk7XG4gICAgd2hpbGUgKHdhbGtlci5uZXh0Tm9kZSgpKVxuICAgICAgd2Fsayh3YWxrZXIuY3VycmVudE5vZGUpO1xuICB9KTtcbn1cblxuLy8gc3JjL3V0aWxzL2ZvY3VzLW1hbmFnZW1lbnQudHNcbnZhciBmb2N1c2FibGVTZWxlY3RvciA9IFtcbiAgXCJbY29udGVudEVkaXRhYmxlPXRydWVdXCIsXG4gIFwiW3RhYmluZGV4XVwiLFxuICBcImFbaHJlZl1cIixcbiAgXCJhcmVhW2hyZWZdXCIsXG4gIFwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKVwiLFxuICBcImlmcmFtZVwiLFxuICBcImlucHV0Om5vdChbZGlzYWJsZWRdKVwiLFxuICBcInNlbGVjdDpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIlxuXS5tYXAoZmFsc2UgPyAoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4PSctMSddKTpub3QoW3N0eWxlKj0nZGlzcGxheTogbm9uZSddKWAgOiAoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4PSctMSddKWApLmpvaW4oXCIsXCIpO1xuZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoY29udGFpbmVyID0gZG9jdW1lbnQuYm9keSkge1xuICBpZiAoY29udGFpbmVyID09IG51bGwpXG4gICAgcmV0dXJuIFtdO1xuICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChmb2N1c2FibGVTZWxlY3RvcikpO1xufVxuZnVuY3Rpb24gaXNGb2N1c2FibGVFbGVtZW50KGVsZW1lbnQsIG1vZGUgPSAwIC8qIFN0cmljdCAqLykge1xuICB2YXIgX2E7XG4gIGlmIChlbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChlbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmJvZHkpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIG1hdGNoKG1vZGUsIHtcbiAgICBbMCAvKiBTdHJpY3QgKi9dKCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhmb2N1c2FibGVTZWxlY3Rvcik7XG4gICAgfSxcbiAgICBbMSAvKiBMb29zZSAqL10oKSB7XG4gICAgICBsZXQgbmV4dCA9IGVsZW1lbnQ7XG4gICAgICB3aGlsZSAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAobmV4dC5tYXRjaGVzKGZvY3VzYWJsZVNlbGVjdG9yKSlcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50RWxlbWVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gZm9jdXNFbGVtZW50KGVsZW1lbnQpIHtcbiAgZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG59XG52YXIgc2VsZWN0YWJsZVNlbGVjdG9yID0gW1widGV4dGFyZWFcIiwgXCJpbnB1dFwiXS5qb2luKFwiLFwiKTtcbmZ1bmN0aW9uIGlzU2VsZWN0YWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICB2YXIgX2EsIF9iO1xuICByZXR1cm4gKF9iID0gKF9hID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5tYXRjaGVzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChlbGVtZW50LCBzZWxlY3RhYmxlU2VsZWN0b3IpKSAhPSBudWxsID8gX2IgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNvcnRCeURvbU5vZGUobm9kZXMsIHJlc29sdmVLZXkgPSAoaSkgPT4gaSkge1xuICByZXR1cm4gbm9kZXMuc2xpY2UoKS5zb3J0KChhSXRlbSwgekl0ZW0pID0+IHtcbiAgICBsZXQgYSA9IHJlc29sdmVLZXkoYUl0ZW0pO1xuICAgIGxldCB6ID0gcmVzb2x2ZUtleSh6SXRlbSk7XG4gICAgaWYgKGEgPT09IG51bGwgfHwgeiA9PT0gbnVsbClcbiAgICAgIHJldHVybiAwO1xuICAgIGxldCBwb3NpdGlvbiA9IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oeik7XG4gICAgaWYgKHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpXG4gICAgICByZXR1cm4gLTE7XG4gICAgaWYgKHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpXG4gICAgICByZXR1cm4gMTtcbiAgICByZXR1cm4gMDtcbiAgfSk7XG59XG5mdW5jdGlvbiBmb2N1c0luKGNvbnRhaW5lciwgZm9jdXMsIHNvcnRlZCA9IHRydWUpIHtcbiAgdmFyIF9hO1xuICBsZXQgb3duZXJEb2N1bWVudCA9IChfYSA9IEFycmF5LmlzQXJyYXkoY29udGFpbmVyKSA/IGNvbnRhaW5lci5sZW5ndGggPiAwID8gY29udGFpbmVyWzBdLm93bmVyRG9jdW1lbnQgOiBkb2N1bWVudCA6IGNvbnRhaW5lciA9PSBudWxsID8gdm9pZCAwIDogY29udGFpbmVyLm93bmVyRG9jdW1lbnQpICE9IG51bGwgPyBfYSA6IGRvY3VtZW50O1xuICBsZXQgZWxlbWVudHMgPSBBcnJheS5pc0FycmF5KGNvbnRhaW5lcikgPyBzb3J0ZWQgPyBzb3J0QnlEb21Ob2RlKGNvbnRhaW5lcikgOiBjb250YWluZXIgOiBnZXRGb2N1c2FibGVFbGVtZW50cyhjb250YWluZXIpO1xuICBsZXQgYWN0aXZlID0gb3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICBsZXQgZGlyZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoZm9jdXMgJiAoMSAvKiBGaXJzdCAqLyB8IDQgLyogTmV4dCAqLykpXG4gICAgICByZXR1cm4gMSAvKiBOZXh0ICovO1xuICAgIGlmIChmb2N1cyAmICgyIC8qIFByZXZpb3VzICovIHwgOCAvKiBMYXN0ICovKSlcbiAgICAgIHJldHVybiAtMSAvKiBQcmV2aW91cyAqLztcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIEZvY3VzLkZpcnN0LCBGb2N1cy5QcmV2aW91cywgRm9jdXMuTmV4dCBvciBGb2N1cy5MYXN0XCIpO1xuICB9KSgpO1xuICBsZXQgc3RhcnRJbmRleCA9ICgoKSA9PiB7XG4gICAgaWYgKGZvY3VzICYgMSAvKiBGaXJzdCAqLylcbiAgICAgIHJldHVybiAwO1xuICAgIGlmIChmb2N1cyAmIDIgLyogUHJldmlvdXMgKi8pXG4gICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZWxlbWVudHMuaW5kZXhPZihhY3RpdmUpKSAtIDE7XG4gICAgaWYgKGZvY3VzICYgNCAvKiBOZXh0ICovKVxuICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGVsZW1lbnRzLmluZGV4T2YoYWN0aXZlKSkgKyAxO1xuICAgIGlmIChmb2N1cyAmIDggLyogTGFzdCAqLylcbiAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGggLSAxO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgRm9jdXMuRmlyc3QsIEZvY3VzLlByZXZpb3VzLCBGb2N1cy5OZXh0IG9yIEZvY3VzLkxhc3RcIik7XG4gIH0pKCk7XG4gIGxldCBmb2N1c09wdGlvbnMgPSBmb2N1cyAmIDMyIC8qIE5vU2Nyb2xsICovID8geyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0gOiB7fTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCB0b3RhbCA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgbGV0IG5leHQgPSB2b2lkIDA7XG4gIGRvIHtcbiAgICBpZiAob2Zmc2V0ID49IHRvdGFsIHx8IG9mZnNldCArIHRvdGFsIDw9IDApXG4gICAgICByZXR1cm4gMCAvKiBFcnJvciAqLztcbiAgICBsZXQgbmV4dElkeCA9IHN0YXJ0SW5kZXggKyBvZmZzZXQ7XG4gICAgaWYgKGZvY3VzICYgMTYgLyogV3JhcEFyb3VuZCAqLykge1xuICAgICAgbmV4dElkeCA9IChuZXh0SWR4ICsgdG90YWwpICUgdG90YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXh0SWR4IDwgMClcbiAgICAgICAgcmV0dXJuIDMgLyogVW5kZXJmbG93ICovO1xuICAgICAgaWYgKG5leHRJZHggPj0gdG90YWwpXG4gICAgICAgIHJldHVybiAxIC8qIE92ZXJmbG93ICovO1xuICAgIH1cbiAgICBuZXh0ID0gZWxlbWVudHNbbmV4dElkeF07XG4gICAgbmV4dCA9PSBudWxsID8gdm9pZCAwIDogbmV4dC5mb2N1cyhmb2N1c09wdGlvbnMpO1xuICAgIG9mZnNldCArPSBkaXJlY3Rpb247XG4gIH0gd2hpbGUgKG5leHQgIT09IG93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gIGlmICghbmV4dC5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSlcbiAgICBuZXh0LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgaWYgKGZvY3VzICYgKDQgLyogTmV4dCAqLyB8IDIgLyogUHJldmlvdXMgKi8pICYmIGlzU2VsZWN0YWJsZUVsZW1lbnQobmV4dCkpIHtcbiAgICBuZXh0LnNlbGVjdCgpO1xuICB9XG4gIHJldHVybiAyIC8qIFN1Y2Nlc3MgKi87XG59XG5cbi8vIHNyYy9ob29rcy91c2Utd2luZG93LWV2ZW50LnRzXG52YXIgaW1wb3J0X3Z1ZTUgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlV2luZG93RXZlbnQodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuO1xuICAoMCwgaW1wb3J0X3Z1ZTUud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgb25JbnZhbGlkYXRlKCgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLW91dHNpZGUtY2xpY2sudHNcbnZhciBpbXBvcnRfdnVlNiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiB1c2VPdXRzaWRlQ2xpY2soY29udGFpbmVycywgY2IsIGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTYuY29tcHV0ZWQpKCgpID0+IHRydWUpKSB7XG4gIGZ1bmN0aW9uIGhhbmRsZU91dHNpZGVDbGljayhldmVudCwgcmVzb2x2ZVRhcmdldCkge1xuICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgdGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0YXJnZXQpKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBfY29udGFpbmVycyA9IGZ1bmN0aW9uIHJlc29sdmUoY29udGFpbmVyczIpIHtcbiAgICAgIGlmICh0eXBlb2YgY29udGFpbmVyczIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShjb250YWluZXJzMigpKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRhaW5lcnMyKSkge1xuICAgICAgICByZXR1cm4gY29udGFpbmVyczI7XG4gICAgICB9XG4gICAgICBpZiAoY29udGFpbmVyczIgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcnMyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtjb250YWluZXJzMl07XG4gICAgfShjb250YWluZXJzKTtcbiAgICBmb3IgKGxldCBjb250YWluZXIgb2YgX2NvbnRhaW5lcnMpIHtcbiAgICAgIGlmIChjb250YWluZXIgPT09IG51bGwpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgbGV0IGRvbU5vZGUgPSBjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGNvbnRhaW5lciA6IGRvbShjb250YWluZXIpO1xuICAgICAgaWYgKGRvbU5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IGRvbU5vZGUuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykgJiYgdGFyZ2V0LnRhYkluZGV4ICE9PSAtMSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNiKGV2ZW50LCB0YXJnZXQpO1xuICB9XG4gIHVzZVdpbmRvd0V2ZW50KFwiY2xpY2tcIiwgKGV2ZW50KSA9PiBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQsIChldmVudDIpID0+IGV2ZW50Mi50YXJnZXQpLCB0cnVlKTtcbiAgdXNlV2luZG93RXZlbnQoXCJibHVyXCIsIChldmVudCkgPT4gaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50LCAoKSA9PiB3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVtZW50ID8gd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgOiBudWxsKSwgdHJ1ZSk7XG59XG5cbi8vIHNyYy9pbnRlcm5hbC9oaWRkZW4udHNcbnZhciBpbXBvcnRfdnVlNyA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSGlkZGVuID0gKDAsIGltcG9ydF92dWU3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkhpZGRlblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBmZWF0dXJlczogeyB0eXBlOiBOdW1iZXIsIGRlZmF1bHQ6IDEgLyogTm9uZSAqLyB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGZlYXR1cmVzLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiAoZmVhdHVyZXMgJiAyIC8qIEZvY3VzYWJsZSAqLykgPT09IDIgLyogRm9jdXNhYmxlICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgY2xpcDogXCJyZWN0KDAsIDAsIDAsIDApXCIsXG4gICAgICAgICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICAgICAgICBib3JkZXJXaWR0aDogXCIwXCIsXG4gICAgICAgICAgLi4uKGZlYXR1cmVzICYgNCAvKiBIaWRkZW4gKi8pID09PSA0IC8qIEhpZGRlbiAqLyAmJiAhKChmZWF0dXJlcyAmIDIgLyogRm9jdXNhYmxlICovKSA9PT0gMiAvKiBGb2N1c2FibGUgKi8pICYmIHsgZGlzcGxheTogXCJub25lXCIgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkhpZGRlblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL3V0aWxzL2Zvcm0udHNcbmZ1bmN0aW9uIG9iamVjdFRvRm9ybUVudHJpZXMoc291cmNlID0ge30sIHBhcmVudEtleSA9IG51bGwsIGVudHJpZXMgPSBbXSkge1xuICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xuICAgIGFwcGVuZChlbnRyaWVzLCBjb21wb3NlS2V5KHBhcmVudEtleSwga2V5KSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBlbnRyaWVzO1xufVxuZnVuY3Rpb24gY29tcG9zZUtleShwYXJlbnQsIGtleSkge1xuICByZXR1cm4gcGFyZW50ID8gcGFyZW50ICsgXCJbXCIgKyBrZXkgKyBcIl1cIiA6IGtleTtcbn1cbmZ1bmN0aW9uIGFwcGVuZChlbnRyaWVzLCBrZXksIHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGZvciAobGV0IFtzdWJrZXksIHN1YnZhbHVlXSBvZiB2YWx1ZS5lbnRyaWVzKCkpIHtcbiAgICAgIGFwcGVuZChlbnRyaWVzLCBjb21wb3NlS2V5KGtleSwgc3Via2V5LnRvU3RyaW5nKCkpLCBzdWJ2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGVudHJpZXMucHVzaChba2V5LCB2YWx1ZS50b0lTT1N0cmluZygpXSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgIGVudHJpZXMucHVzaChba2V5LCB2YWx1ZSA/IFwiMVwiIDogXCIwXCJdKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgYCR7dmFsdWV9YF0pO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgXCJcIl0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFRvRm9ybUVudHJpZXModmFsdWUsIGtleSwgZW50cmllcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIGF0dGVtcHRTdWJtaXQoZWxlbWVudCkge1xuICB2YXIgX2E7XG4gIGxldCBmb3JtID0gKF9hID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5mb3JtKSAhPSBudWxsID8gX2EgOiBlbGVtZW50LmNsb3Nlc3QoXCJmb3JtXCIpO1xuICBpZiAoIWZvcm0pXG4gICAgcmV0dXJuO1xuICBmb3IgKGxldCBlbGVtZW50MiBvZiBmb3JtLmVsZW1lbnRzKSB7XG4gICAgaWYgKGVsZW1lbnQyLnRhZ05hbWUgPT09IFwiSU5QVVRcIiAmJiBlbGVtZW50Mi50eXBlID09PSBcInN1Ym1pdFwiIHx8IGVsZW1lbnQyLnRhZ05hbWUgPT09IFwiQlVUVE9OXCIgJiYgZWxlbWVudDIudHlwZSA9PT0gXCJzdWJtaXRcIiB8fCBlbGVtZW50Mi5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiICYmIGVsZW1lbnQyLnR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgZWxlbWVudDIuY2xpY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvY29tYm9ib3gvY29tYm9ib3gudHNcbnZhciBDb21ib2JveENvbnRleHQgPSBTeW1ib2woXCJDb21ib2JveENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VDb21ib2JveENvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWU4LmluamVjdCkoQ29tYm9ib3hDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPENvbWJvYm94IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZUNvbWJvYm94Q29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIENvbWJvYm94ID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94XCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgbnVsbGFibGU6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtdWx0aXBsZTogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBlbWl0IH0pIHtcbiAgICBsZXQgY29tYm9ib3hTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgbGFiZWxSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgaW5wdXRSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9uc1Byb3BzUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikoe1xuICAgICAgc3RhdGljOiBmYWxzZSxcbiAgICAgIGhvbGQ6IGZhbHNlXG4gICAgfSk7XG4gICAgbGV0IG9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShbXSk7XG4gICAgbGV0IGFjdGl2ZU9wdGlvbkluZGV4ID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IGFjdGl2YXRpb25UcmlnZ2VyID0gKDAsIGltcG9ydF92dWU4LnJlZikoMSAvKiBPdGhlciAqLyk7XG4gICAgbGV0IGRlZmF1bHRUb0ZpcnN0T3B0aW9uID0gKDAsIGltcG9ydF92dWU4LnJlZikoZmFsc2UpO1xuICAgIGZ1bmN0aW9uIGFkanVzdE9yZGVyZWRTdGF0ZShhZGp1c3RtZW50ID0gKGkpID0+IGkpIHtcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBvcHRpb25zLnZhbHVlW2FjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkT3B0aW9ucyA9IHNvcnRCeURvbU5vZGUoYWRqdXN0bWVudChvcHRpb25zLnZhbHVlLnNsaWNlKCkpLCAob3B0aW9uKSA9PiBkb20ob3B0aW9uLmRhdGFSZWYuZG9tUmVmKSk7XG4gICAgICBsZXQgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IGN1cnJlbnRBY3RpdmVPcHRpb24gPyBzb3J0ZWRPcHRpb25zLmluZGV4T2YoY3VycmVudEFjdGl2ZU9wdGlvbikgOiBudWxsO1xuICAgICAgaWYgKGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW9uczogc29ydGVkT3B0aW9ucyxcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXhcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgbGV0IG1vZGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLm11bHRpcGxlID8gMSAvKiBNdWx0aSAqLyA6IDAgLyogU2luZ2xlICovKTtcbiAgICBsZXQgbnVsbGFibGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLm51bGxhYmxlKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgY29tYm9ib3hTdGF0ZSxcbiAgICAgIHZhbHVlLFxuICAgICAgbW9kZSxcbiAgICAgIGNvbXBhcmUoYSwgeikge1xuICAgICAgICByZXR1cm4gYSA9PT0gejtcbiAgICAgIH0sXG4gICAgICBudWxsYWJsZSxcbiAgICAgIGlucHV0UmVmLFxuICAgICAgbGFiZWxSZWYsXG4gICAgICBidXR0b25SZWYsXG4gICAgICBvcHRpb25zUmVmLFxuICAgICAgZGlzYWJsZWQ6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGNoYW5nZSh2YWx1ZTIpIHtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlMik7XG4gICAgICB9LFxuICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgICBpZiAoZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgJiYgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgJiYgb3B0aW9ucy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggPSBvcHRpb25zLnZhbHVlLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICAgIGlmIChsb2NhbEFjdGl2ZU9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsQWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3RpdmVPcHRpb25JbmRleC52YWx1ZTtcbiAgICAgIH0pLFxuICAgICAgYWN0aXZhdGlvblRyaWdnZXIsXG4gICAgICBpbnB1dFByb3BzUmVmOiAoMCwgaW1wb3J0X3Z1ZTgucmVmKSh7IGRpc3BsYXlWYWx1ZTogdm9pZCAwIH0pLFxuICAgICAgb3B0aW9uc1Byb3BzUmVmLFxuICAgICAgY2xvc2VDb21ib2JveCgpIHtcbiAgICAgICAgZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29tYm9ib3hTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG51bGw7XG4gICAgICB9LFxuICAgICAgb3BlbkNvbWJvYm94KCkge1xuICAgICAgICBkZWZhdWx0VG9GaXJzdE9wdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgb3B0aW9uSWR4ID0gb3B0aW9ucy52YWx1ZS5maW5kSW5kZXgoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBvcHRpb25WYWx1ZSA9ICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uLmRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgIGxldCBzZWxlY3RlZCA9IG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb25WYWx1ZSkpLFxuICAgICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUyKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHZhbHVlMiksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9uSWR4ICE9PSAtMSkge1xuICAgICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gb3B0aW9uSWR4O1xuICAgICAgICB9XG4gICAgICAgIGNvbWJvYm94U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi87XG4gICAgICB9LFxuICAgICAgZ29Ub09wdGlvbihmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGRlZmF1bHRUb0ZpcnN0T3B0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChvcHRpb25zUmVmLnZhbHVlICYmICFvcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljICYmIGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKCk7XG4gICAgICAgIGlmIChhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGF0YVJlZi5kaXNhYmxlZCk7XG4gICAgICAgICAgaWYgKGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID0gbG9jYWxBY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHRBY3RpdmVPcHRpb25JbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGZvY3VzID09PSA0IC8qIFNwZWNpZmljICovID8geyBmb2N1czogNCAvKiBTcGVjaWZpYyAqLywgaWQ6IGlkMiB9IDogeyBmb2N1cyB9LCB7XG4gICAgICAgICAgcmVzb2x2ZUl0ZW1zOiAoKSA9PiBhZGp1c3RlZFN0YXRlLm9wdGlvbnMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4LFxuICAgICAgICAgIHJlc29sdmVJZDogKG9wdGlvbikgPT4gb3B0aW9uLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKG9wdGlvbikgPT4gb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbmV4dEFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IHRyaWdnZXIgIT0gbnVsbCA/IHRyaWdnZXIgOiAxIC8qIE90aGVyICovO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgfSxcbiAgICAgIHN5bmNJbnB1dFZhbHVlKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCB2YWx1ZTIgPSBhcGkudmFsdWUudmFsdWU7XG4gICAgICAgIGlmICghZG9tKGFwaS5pbnB1dFJlZikpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgZGlzcGxheVZhbHVlID0gYXBpLmlucHV0UHJvcHNSZWYudmFsdWUuZGlzcGxheVZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgYXBpLmlucHV0UmVmLnZhbHVlLnZhbHVlID0gKF9hID0gZGlzcGxheVZhbHVlKHZhbHVlMikpICE9IG51bGwgPyBfYSA6IFwiXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlMiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGFwaS5pbnB1dFJlZi52YWx1ZS52YWx1ZSA9IHZhbHVlMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcGkuaW5wdXRSZWYudmFsdWUudmFsdWUgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2VsZWN0T3B0aW9uKGlkMikge1xuICAgICAgICBsZXQgb3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZDIpO1xuICAgICAgICBpZiAoIW9wdGlvbilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB7IGRhdGFSZWYgfSA9IG9wdGlvbjtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBkYXRhUmVmLnZhbHVlLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByYXcgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGNvcHkuaW5kZXhPZihyYXcpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29weS5wdXNoKHJhdyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIGFwaS5zeW5jSW5wdXRWYWx1ZSgpO1xuICAgICAgfSxcbiAgICAgIHNlbGVjdEFjdGl2ZU9wdGlvbigpIHtcbiAgICAgICAgaWYgKGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB7IGRhdGFSZWYsIGlkOiBpZDIgfSA9IG9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXTtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBkYXRhUmVmLnZhbHVlLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByYXcgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGNvcHkuaW5kZXhPZihyYXcpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29weS5wdXNoKHJhdyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIGFwaS5zeW5jSW5wdXRWYWx1ZSgpO1xuICAgICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyT3B0aW9uKGlkMiwgZGF0YVJlZikge1xuICAgICAgICBsZXQgb3B0aW9uID0geyBpZDogaWQyLCBkYXRhUmVmIH07XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4gWy4uLm9wdGlvbnMyLCBvcHRpb25dKTtcbiAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gZGF0YVJlZi52YWx1ZS52YWx1ZTtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSxcbiAgICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNvbWUoKHZhbHVlMikgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KSh2YWx1ZTIpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvblZhbHVlKSkpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zLmluZGV4T2Yob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlck9wdGlvbihpZDIpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiB7XG4gICAgICAgICAgbGV0IGlkeCA9IG9wdGlvbnMyLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gaWQyKTtcbiAgICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICAgIG9wdGlvbnMyLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zMjtcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtpbnB1dFJlZiwgYnV0dG9uUmVmLCBvcHRpb25zUmVmXSwgKCkgPT4gYXBpLmNsb3NlQ29tYm9ib3goKSwgKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2gpKFthcGkudmFsdWUsIGFwaS5pbnB1dFJlZl0sICgpID0+IGFwaS5zeW5jSW5wdXRWYWx1ZSgpLCB7XG4gICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2gpKGFwaS5jb21ib2JveFN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgYXBpLnN5bmNJbnB1dFZhbHVlKCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LnByb3ZpZGUpKENvbWJvYm94Q29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChjb21ib2JveFN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIGxldCBhY3RpdmVPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IG51bGwgOiBvcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0uZGF0YVJlZi52YWx1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIG1vZGVsVmFsdWUsIGRpc2FibGVkLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBhY3RpdmVJbmRleDogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlLFxuICAgICAgICBhY3RpdmVPcHRpb246IGFjdGl2ZU9wdGlvbi52YWx1ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTguaCkoaW1wb3J0X3Z1ZTguRnJhZ21lbnQsIFtcbiAgICAgICAgLi4ubmFtZSAhPSBudWxsICYmIG1vZGVsVmFsdWUgIT0gbnVsbCA/IG9iamVjdFRvRm9ybUVudHJpZXMoeyBbbmFtZV06IG1vZGVsVmFsdWUgfSkubWFwKChbbmFtZTIsIHZhbHVlMl0pID0+ICgwLCBpbXBvcnRfdnVlOC5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgdGhlaXJQcm9wczoge1xuICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAuLi5vbWl0KHRoZWlyUHJvcHMsIFtcIm51bGxhYmxlXCIsIFwibXVsdGlwbGVcIiwgXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiYnlcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBuYW1lOiBcIkNvbWJvYm94XCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94TGFiZWwgPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hMYWJlbFwiLFxuICBwcm9wczogeyBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxhYmVsXCIgfSB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveExhYmVsXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIChfYSA9IGRvbShhcGkuaW5wdXRSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBpZDIsIHJlZjogYXBpLmxhYmVsUmVmLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94TGFiZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveEJ1dHRvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuYnV0dG9uUmVmLCAkZWw6IGFwaS5idXR0b25SZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChhcGkuZGlzYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSB7XG4gICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICB9XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5pbnB1dFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gYXBpLmlucHV0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLykge1xuICAgICAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IGFwaS5pbnB1dFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoYXBpLm9wdGlvbnNSZWYudmFsdWUgJiYgIWFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBhcGkuaW5wdXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgYXBpLmJ1dHRvblJlZik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkuYnV0dG9uUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFwaS5sYWJlbFJlZi52YWx1ZSA/IFsoX2IgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLCBpZDJdLmpvaW4oXCIgXCIpIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlkb3duLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveEJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveElucHV0ID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94SW5wdXRcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImlucHV0XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBkaXNwbGF5VmFsdWU6IHsgdHlwZTogRnVuY3Rpb24gfVxuICB9LFxuICBlbWl0czoge1xuICAgIGNoYW5nZTogKF92YWx1ZSkgPT4gdHJ1ZVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94SW5wdXRcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LWlucHV0LSR7dXNlSWQoKX1gO1xuICAgIGFwaS5pbnB1dFByb3BzUmVmID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcyk7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5pbnB1dFJlZiwgJGVsOiBhcGkuaW5wdXRSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkJhY2tzcGFjZVwiIC8qIEJhY2tzcGFjZSAqLzpcbiAgICAgICAgY2FzZSBcIkRlbGV0ZVwiIC8qIERlbGV0ZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLm1vZGUudmFsdWUgIT09IDAgLyogU2luZ2xlICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGlmICghYXBpLm51bGxhYmxlLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGxldCBpbnB1dCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICBhcGkuY2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGRvbShhcGkub3B0aW9uc1JlZik7XG4gICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLnNlbGVjdEFjdGl2ZU9wdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBPcGVuICovXTogKCkgPT4gYXBpLmdvVG9PcHRpb24oMiAvKiBOZXh0ICovKSxcbiAgICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106ICgpID0+IGFwaS5vcGVuQ29tYm9ib3goKVxuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2goYXBpLmNvbWJvYm94U3RhdGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAoKSA9PiBhcGkuZ29Ub09wdGlvbigxIC8qIFByZXZpb3VzICovKSxcbiAgICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106ICgpID0+IHtcbiAgICAgICAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWFwaS52YWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoYXBpLm9wdGlvbnNSZWYudmFsdWUgJiYgIWFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRhYlwiIC8qIFRhYiAqLzpcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBhcGkuc2VsZWN0QWN0aXZlT3B0aW9uKCk7XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICBlbWl0KFwiY2hhbmdlXCIsIGV2ZW50KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpIHtcbiAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgIGVtaXQoXCJjaGFuZ2VcIiwgZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gYXBpLm9wdGlvbnNSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYiA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBhcGkubW9kZS52YWx1ZSA9PT0gMSAvKiBNdWx0aSAqLyA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfZSA9IChfYyA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQpICE9IG51bGwgPyBfZSA6IChfZCA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmlkLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsXG4gICAgICAgIG9uSW5wdXQ6IGhhbmRsZUlucHV0LFxuICAgICAgICByb2xlOiBcImNvbWJvYm94XCIsXG4gICAgICAgIHR5cGU6IChfZiA9IGF0dHJzLnR5cGUpICE9IG51bGwgPyBfZiA6IFwidGV4dFwiLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcmVmOiBhcGkuaW5wdXRSZWZcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG9taXQocHJvcHMsIFtcImRpc3BsYXlWYWx1ZVwiXSk7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveElucHV0XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94T3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveE9wdGlvbnNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInVsXCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBob2xkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94T3B0aW9uc1wiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtb3B0aW9ucy0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLm9wdGlvbnNSZWYsICRlbDogYXBpLm9wdGlvbnNSZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLnN0YXRpYyA9IHByb3BzLnN0YXRpYztcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuaG9sZCA9IHByb3BzLmhvbGQ7XG4gICAgfSk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICB1c2VUcmVlV2Fsa2VyKHtcbiAgICAgIGNvbnRhaW5lcjogKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBkb20oYXBpLm9wdGlvbnNSZWYpKSxcbiAgICAgIGVuYWJsZWQ6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyksXG4gICAgICBhY2NlcHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcIm9wdGlvblwiKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9LFxuICAgICAgd2Fsayhub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYSA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9kID0gKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCkgIT0gbnVsbCA/IF9kIDogKF9jID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogYXBpLm9wdGlvbnNSZWYsXG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXCJob2xkXCJdKTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uc1wiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveE9wdGlvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGlcIiB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveE9wdGlvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtb3B0aW9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbE9wdGlvblJlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbE9wdGlvblJlZiwgJGVsOiBpbnRlcm5hbE9wdGlvblJlZiB9KTtcbiAgICBsZXQgYWN0aXZlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXS5pZCA9PT0gaWQyIDogZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHByb3BzLnZhbHVlKSksXG4gICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zb21lKCh2YWx1ZSkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KSh2YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1JhdykocHJvcHMudmFsdWUpKSlcbiAgICB9KSk7XG4gICAgbGV0IGRhdGFSZWYgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+ICh7XG4gICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gICAgICB2YWx1ZTogcHJvcHMudmFsdWUsXG4gICAgICBkb21SZWY6IGludGVybmFsT3B0aW9uUmVmXG4gICAgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlOC5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyT3B0aW9uKGlkMikpO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID09PSAwIC8qIFBvaW50ZXIgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gZG9tKGludGVybmFsT3B0aW9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEludG9WaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGFwaS5zZWxlY3RPcHRpb24oaWQyKTtcbiAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgKF9hID0gZG9tKGFwaS5pbnB1dFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMiwgMCAvKiBQb2ludGVyICovKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5ob2xkKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUsIGRpc2FibGVkIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxPcHRpb25SZWYsXG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHZvaWQgMCA6IC0xLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUgPT09IHRydWUgPyBzZWxlY3RlZC52YWx1ZSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnRzXG52YXIgaW1wb3J0X3Z1ZTE3ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2NvbXBvbmVudHMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLnRzXG52YXIgaW1wb3J0X3Z1ZTExID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2hvb2tzL3VzZS10YWItZGlyZWN0aW9uLnRzXG52YXIgaW1wb3J0X3Z1ZTkgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlVGFiRGlyZWN0aW9uKCkge1xuICBsZXQgZGlyZWN0aW9uID0gKDAsIGltcG9ydF92dWU5LnJlZikoMCAvKiBGb3J3YXJkcyAqLyk7XG4gIHVzZVdpbmRvd0V2ZW50KFwia2V5ZG93blwiLCAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG4gICAgICBkaXJlY3Rpb24udmFsdWUgPSBldmVudC5zaGlmdEtleSA/IDEgLyogQmFja3dhcmRzICovIDogMCAvKiBGb3J3YXJkcyAqLztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGlyZWN0aW9uO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLWV2ZW50LWxpc3RlbmVyLnRzXG52YXIgaW1wb3J0X3Z1ZTEwID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgdHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuO1xuICAoMCwgaW1wb3J0X3Z1ZTEwLndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQgOiB3aW5kb3c7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvbkludmFsaWRhdGUoKCkgPT4gZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHNcbnZhciBGZWF0dXJlczMgPSAvKiBAX19QVVJFX18gKi8gKChGZWF0dXJlczQpID0+IHtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIk5vbmVcIl0gPSAxXSA9IFwiTm9uZVwiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiSW5pdGlhbEZvY3VzXCJdID0gMl0gPSBcIkluaXRpYWxGb2N1c1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiVGFiTG9ja1wiXSA9IDRdID0gXCJUYWJMb2NrXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJGb2N1c0xvY2tcIl0gPSA4XSA9IFwiRm9jdXNMb2NrXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJSZXN0b3JlRm9jdXNcIl0gPSAxNl0gPSBcIlJlc3RvcmVGb2N1c1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiQWxsXCJdID0gMzBdID0gXCJBbGxcIjtcbiAgcmV0dXJuIEZlYXR1cmVzNDtcbn0pKEZlYXR1cmVzMyB8fCB7fSk7XG52YXIgRm9jdXNUcmFwID0gT2JqZWN0LmFzc2lnbigoMCwgaW1wb3J0X3Z1ZTExLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkZvY3VzVHJhcFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBpbml0aWFsRm9jdXM6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiBudWxsIH0sXG4gICAgZmVhdHVyZXM6IHsgdHlwZTogTnVtYmVyLCBkZWZhdWx0OiAzMCAvKiBBbGwgKi8gfSxcbiAgICBjb250YWluZXJzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoMCwgaW1wb3J0X3Z1ZTExLnJlZikoLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSlcbiAgICB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgY29udGFpbmVyID0gKDAsIGltcG9ydF92dWUxMS5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBjb250YWluZXIsICRlbDogY29udGFpbmVyIH0pO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChjb250YWluZXIpKTtcbiAgICB1c2VSZXN0b3JlRm9jdXMoeyBvd25lckRvY3VtZW50IH0sICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IEJvb2xlYW4ocHJvcHMuZmVhdHVyZXMgJiAxNiAvKiBSZXN0b3JlRm9jdXMgKi8pKSk7XG4gICAgbGV0IHByZXZpb3VzQWN0aXZlRWxlbWVudCA9IHVzZUluaXRpYWxGb2N1cyh7IG93bmVyRG9jdW1lbnQsIGNvbnRhaW5lciwgaW5pdGlhbEZvY3VzOiAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5pbml0aWFsRm9jdXMpIH0sICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IEJvb2xlYW4ocHJvcHMuZmVhdHVyZXMgJiAyIC8qIEluaXRpYWxGb2N1cyAqLykpKTtcbiAgICB1c2VGb2N1c0xvY2soe1xuICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRhaW5lcnM6IHByb3BzLmNvbnRhaW5lcnMsXG4gICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnRcbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBCb29sZWFuKHByb3BzLmZlYXR1cmVzICYgOCAvKiBGb2N1c0xvY2sgKi8pKSk7XG4gICAgbGV0IGRpcmVjdGlvbiA9IHVzZVRhYkRpcmVjdGlvbigpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgbGV0IGVsID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMSAvKiBGaXJzdCAqLyksXG4gICAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCA4IC8qIExhc3QgKi8pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCAxIC8qIEZpcnN0ICovKSxcbiAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCA4IC8qIExhc3QgKi8pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7fTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgcmVmOiBjb250YWluZXIgfTtcbiAgICAgIGxldCB7IGZlYXR1cmVzLCBpbml0aWFsRm9jdXMsIGNvbnRhaW5lcnM6IF9jb250YWluZXJzLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTExLmgpKGltcG9ydF92dWUxMS5GcmFnbWVudCwgW1xuICAgICAgICBCb29sZWFuKGZlYXR1cmVzICYgNCAvKiBUYWJMb2NrICovKSAmJiAoMCwgaW1wb3J0X3Z1ZTExLmgpKEhpZGRlbiwge1xuICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovXG4gICAgICAgIH0pLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnRoZWlyUHJvcHMgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiRm9jdXNUcmFwXCJcbiAgICAgICAgfSksXG4gICAgICAgIEJvb2xlYW4oZmVhdHVyZXMgJiA0IC8qIFRhYkxvY2sgKi8pICYmICgwLCBpbXBvcnRfdnVlMTEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi9cbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pLCB7IGZlYXR1cmVzOiBGZWF0dXJlczMgfSk7XG5mdW5jdGlvbiB1c2VSZXN0b3JlRm9jdXMoeyBvd25lckRvY3VtZW50IH0sIGVuYWJsZWQpIHtcbiAgbGV0IHJlc3RvcmVFbGVtZW50ID0gKDAsIGltcG9ydF92dWUxMS5yZWYpKG51bGwpO1xuICBsZXQgbW91bnRlZCA9IHsgdmFsdWU6IGZhbHNlIH07XG4gICgwLCBpbXBvcnRfdnVlMTEub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgKDAsIGltcG9ydF92dWUxMS53YXRjaCkoZW5hYmxlZCwgKG5ld1ZhbHVlLCBwcmV2VmFsdWUpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJldlZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1vdW50ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKCFyZXN0b3JlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICByZXN0b3JlRWxlbWVudC52YWx1ZSA9IChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50O1xuICAgICAgfVxuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTEud2F0Y2gpKGVuYWJsZWQsIChuZXdWYWx1ZSwgcHJldlZhbHVlLCBvbkludmFsaWRhdGUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJldlZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICAgIGlmIChtb3VudGVkLnZhbHVlID09PSBmYWxzZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1vdW50ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9jdXNFbGVtZW50KHJlc3RvcmVFbGVtZW50LnZhbHVlKTtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlSW5pdGlhbEZvY3VzKHtcbiAgb3duZXJEb2N1bWVudCxcbiAgY29udGFpbmVyLFxuICBpbml0aWFsRm9jdXNcbn0sIGVuYWJsZWQpIHtcbiAgbGV0IHByZXZpb3VzQWN0aXZlRWxlbWVudCA9ICgwLCBpbXBvcnRfdnVlMTEucmVmKShudWxsKTtcbiAgKDAsIGltcG9ydF92dWUxMS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAoMCwgaW1wb3J0X3Z1ZTExLndhdGNoKShbY29udGFpbmVyLCBpbml0aWFsRm9jdXMsIGVuYWJsZWRdLCAobmV3VmFsdWVzLCBwcmV2VmFsdWVzKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWVzLmV2ZXJ5KCh2YWx1ZSwgaWR4KSA9PiAocHJldlZhbHVlcyA9PSBudWxsID8gdm9pZCAwIDogcHJldlZhbHVlc1tpZHhdKSA9PT0gdmFsdWUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBjb250YWluZXJFbGVtZW50ID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGxldCBpbml0aWFsRm9jdXNFbGVtZW50ID0gZG9tKGluaXRpYWxGb2N1cyk7XG4gICAgICAgIGxldCBhY3RpdmVFbGVtZW50ID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbml0aWFsRm9jdXNFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKGluaXRpYWxGb2N1c0VsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lckVsZW1lbnQuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUgPSBhY3RpdmVFbGVtZW50O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdGlhbEZvY3VzRWxlbWVudCkge1xuICAgICAgICAgIGZvY3VzRWxlbWVudChpbml0aWFsRm9jdXNFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9jdXNJbihjb250YWluZXJFbGVtZW50LCAxIC8qIEZpcnN0ICovIHwgMzIgLyogTm9TY3JvbGwgKi8pID09PSAwIC8qIEVycm9yICovKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGVyZSBhcmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZSB0aGUgPEZvY3VzVHJhcCAvPlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gKF9iID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9KTtcbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pO1xuICB9KTtcbiAgcmV0dXJuIHByZXZpb3VzQWN0aXZlRWxlbWVudDtcbn1cbmZ1bmN0aW9uIHVzZUZvY3VzTG9jayh7XG4gIG93bmVyRG9jdW1lbnQsXG4gIGNvbnRhaW5lcixcbiAgY29udGFpbmVycyxcbiAgcHJldmlvdXNBY3RpdmVFbGVtZW50XG59LCBlbmFibGVkKSB7XG4gIHZhciBfYTtcbiAgdXNlRXZlbnRMaXN0ZW5lcigoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFZpZXcsIFwiZm9jdXNcIiwgKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBhbGxDb250YWluZXJzID0gbmV3IFNldChjb250YWluZXJzID09IG51bGwgPyB2b2lkIDAgOiBjb250YWluZXJzLnZhbHVlKTtcbiAgICBhbGxDb250YWluZXJzLmFkZChjb250YWluZXIpO1xuICAgIGxldCBwcmV2aW91cyA9IHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZTtcbiAgICBpZiAoIXByZXZpb3VzKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCB0b0VsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKHRvRWxlbWVudCAmJiB0b0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaWYgKCFjb250YWlucyhhbGxDb250YWluZXJzLCB0b0VsZW1lbnQpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBmb2N1c0VsZW1lbnQocHJldmlvdXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gdG9FbGVtZW50O1xuICAgICAgICBmb2N1c0VsZW1lbnQodG9FbGVtZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNFbGVtZW50KHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRhaW5lcnMsIGVsZW1lbnQpIHtcbiAgdmFyIF9hO1xuICBmb3IgKGxldCBjb250YWluZXIgb2YgY29udGFpbmVycykge1xuICAgIGlmICgoX2EgPSBjb250YWluZXIudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhlbGVtZW50KSlcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1pbmVydC1vdGhlcnMudHNcbnZhciBpbXBvcnRfdnVlMTIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENISUxEUkVOX1NFTEVDVE9SID0gZmFsc2UgPyAnW2RhdGEtdi1hcHA9XCJcIl0gPiAqJyA6IFwiYm9keSA+ICpcIjtcbnZhciBpbnRlcmFjdGFibGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbnZhciBvcmlnaW5hbHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuZnVuY3Rpb24gaW5lcnQoZWxlbWVudCkge1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgZWxlbWVudC5pbmVydCA9IHRydWU7XG59XG5mdW5jdGlvbiByZXN0b3JlKGVsZW1lbnQpIHtcbiAgbGV0IG9yaWdpbmFsID0gb3JpZ2luYWxzLmdldChlbGVtZW50KTtcbiAgaWYgKCFvcmlnaW5hbClcbiAgICByZXR1cm47XG4gIGlmIChvcmlnaW5hbFtcImFyaWEtaGlkZGVuXCJdID09PSBudWxsKVxuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIik7XG4gIGVsc2VcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIG9yaWdpbmFsW1wiYXJpYS1oaWRkZW5cIl0pO1xuICBlbGVtZW50LmluZXJ0ID0gb3JpZ2luYWwuaW5lcnQ7XG59XG5mdW5jdGlvbiB1c2VJbmVydE90aGVycyhjb250YWluZXIsIGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTEyLnJlZikodHJ1ZSkpIHtcbiAgKDAsIGltcG9ydF92dWUxMi53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIWNvbnRhaW5lci52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgZWxlbWVudCA9IGNvbnRhaW5lci52YWx1ZTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9IGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCk7XG4gICAgaWYgKCFvd25lckRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGludGVyYWN0YWJsZXMuYWRkKGVsZW1lbnQpO1xuICAgIGZvciAobGV0IG9yaWdpbmFsIG9mIG9yaWdpbmFscy5rZXlzKCkpIHtcbiAgICAgIGlmIChvcmlnaW5hbC5jb250YWlucyhlbGVtZW50KSkge1xuICAgICAgICByZXN0b3JlKG9yaWdpbmFsKTtcbiAgICAgICAgb3JpZ2luYWxzLmRlbGV0ZShvcmlnaW5hbCk7XG4gICAgICB9XG4gICAgfVxuICAgIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChDSElMRFJFTl9TRUxFQ1RPUikuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBmb3IgKGxldCBpbnRlcmFjdGFibGUgb2YgaW50ZXJhY3RhYmxlcykge1xuICAgICAgICBpZiAoY2hpbGQuY29udGFpbnMoaW50ZXJhY3RhYmxlKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW50ZXJhY3RhYmxlcy5zaXplID09PSAxKSB7XG4gICAgICAgIG9yaWdpbmFscy5zZXQoY2hpbGQsIHtcbiAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IGNoaWxkLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLFxuICAgICAgICAgIGluZXJ0OiBjaGlsZC5pbmVydFxuICAgICAgICB9KTtcbiAgICAgICAgaW5lcnQoY2hpbGQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICBpbnRlcmFjdGFibGVzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIGlmIChpbnRlcmFjdGFibGVzLnNpemUgPiAwKSB7XG4gICAgICAgIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChDSElMRFJFTl9TRUxFQ1RPUikuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBpZiAoIShjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAob3JpZ2luYWxzLmhhcyhjaGlsZCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZm9yIChsZXQgaW50ZXJhY3RhYmxlIG9mIGludGVyYWN0YWJsZXMpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5jb250YWlucyhpbnRlcmFjdGFibGUpKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG9yaWdpbmFscy5zZXQoY2hpbGQsIHtcbiAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogY2hpbGQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiksXG4gICAgICAgICAgICBpbmVydDogY2hpbGQuaW5lcnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmVydChjaGlsZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudDIgb2Ygb3JpZ2luYWxzLmtleXMoKSkge1xuICAgICAgICAgIHJlc3RvcmUoZWxlbWVudDIpO1xuICAgICAgICAgIG9yaWdpbmFscy5kZWxldGUoZWxlbWVudDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy9wb3J0YWwvcG9ydGFsLnRzXG52YXIgaW1wb3J0X3Z1ZTE0ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2ludGVybmFsL3BvcnRhbC1mb3JjZS1yb290LnRzXG52YXIgaW1wb3J0X3Z1ZTEzID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBGb3JjZVBvcnRhbFJvb3RDb250ZXh0ID0gU3ltYm9sKFwiRm9yY2VQb3J0YWxSb290Q29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVBvcnRhbFJvb3QoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTEzLmluamVjdCkoRm9yY2VQb3J0YWxSb290Q29udGV4dCwgZmFsc2UpO1xufVxudmFyIEZvcmNlUG9ydGFsUm9vdCA9ICgwLCBpbXBvcnRfdnVlMTMuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRm9yY2VQb3J0YWxSb290XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZm9yY2U6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgICgwLCBpbXBvcnRfdnVlMTMucHJvdmlkZSkoRm9yY2VQb3J0YWxSb290Q29udGV4dCwgcHJvcHMuZm9yY2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBmb3JjZSwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBuYW1lOiBcIkZvcmNlUG9ydGFsUm9vdFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvcG9ydGFsL3BvcnRhbC50c1xuZnVuY3Rpb24gZ2V0UG9ydGFsUm9vdChjb250ZXh0RWxlbWVudCkge1xuICBsZXQgb3duZXJEb2N1bWVudCA9IGdldE93bmVyRG9jdW1lbnQoY29udGV4dEVsZW1lbnQpO1xuICBpZiAoIW93bmVyRG9jdW1lbnQpIHtcbiAgICBpZiAoY29udGV4dEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtIZWFkbGVzcyBVSV06IENhbm5vdCBmaW5kIG93bmVyRG9jdW1lbnQgZm9yIGNvbnRleHRFbGVtZW50OiAke2NvbnRleHRFbGVtZW50fWApO1xuICB9XG4gIGxldCBleGlzdGluZ1Jvb3QgPSBvd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaGVhZGxlc3N1aS1wb3J0YWwtcm9vdFwiKTtcbiAgaWYgKGV4aXN0aW5nUm9vdClcbiAgICByZXR1cm4gZXhpc3RpbmdSb290O1xuICBsZXQgcm9vdCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgcm9vdC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBcImhlYWRsZXNzdWktcG9ydGFsLXJvb3RcIik7XG4gIHJldHVybiBvd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdCk7XG59XG52YXIgUG9ydGFsID0gKDAsIGltcG9ydF92dWUxNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3J0YWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgZWxlbWVudCA9ICgwLCBpbXBvcnRfdnVlMTQucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMTQuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCkpO1xuICAgIGxldCBmb3JjZVBvcnRhbFJvb3QgPSB1c2VQb3J0YWxSb290KCk7XG4gICAgbGV0IGdyb3VwQ29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTQuaW5qZWN0KShQb3J0YWxHcm91cENvbnRleHQsIG51bGwpO1xuICAgIGxldCBteVRhcmdldCA9ICgwLCBpbXBvcnRfdnVlMTQucmVmKShmb3JjZVBvcnRhbFJvb3QgPT09IHRydWUgPyBnZXRQb3J0YWxSb290KGVsZW1lbnQudmFsdWUpIDogZ3JvdXBDb250ZXh0ID09IG51bGwgPyBnZXRQb3J0YWxSb290KGVsZW1lbnQudmFsdWUpIDogZ3JvdXBDb250ZXh0LnJlc29sdmVUYXJnZXQoKSk7XG4gICAgKDAsIGltcG9ydF92dWUxNC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGZvcmNlUG9ydGFsUm9vdClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGdyb3VwQ29udGV4dCA9PSBudWxsKVxuICAgICAgICByZXR1cm47XG4gICAgICBteVRhcmdldC52YWx1ZSA9IGdyb3VwQ29udGV4dC5yZXNvbHZlVGFyZ2V0KCk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNC5vblVubW91bnRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCByb290ID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmdldEVsZW1lbnRCeUlkKFwiaGVhZGxlc3N1aS1wb3J0YWwtcm9vdFwiKTtcbiAgICAgIGlmICghcm9vdClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKG15VGFyZ2V0LnZhbHVlICE9PSByb290KVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAobXlUYXJnZXQudmFsdWUuY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgKF9iID0gbXlUYXJnZXQudmFsdWUucGFyZW50RWxlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnJlbW92ZUNoaWxkKG15VGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG15VGFyZ2V0LnZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBlbGVtZW50LFxuICAgICAgICBcImRhdGEtaGVhZGxlc3N1aS1wb3J0YWxcIjogXCJcIlxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE0LmgpKGltcG9ydF92dWUxNC5UZWxlcG9ydCwgeyB0bzogbXlUYXJnZXQudmFsdWUgfSwgcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlBvcnRhbFwiXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9ydGFsR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiUG9ydGFsR3JvdXBDb250ZXh0XCIpO1xudmFyIFBvcnRhbEdyb3VwID0gKDAsIGltcG9ydF92dWUxNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3J0YWxHcm91cFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIHRhcmdldDogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IG51bGwgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSAoMCwgaW1wb3J0X3Z1ZTE0LnJlYWN0aXZlKSh7XG4gICAgICByZXNvbHZlVGFyZ2V0KCkge1xuICAgICAgICByZXR1cm4gcHJvcHMudGFyZ2V0O1xuICAgICAgfVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTQucHJvdmlkZSkoUG9ydGFsR3JvdXBDb250ZXh0LCBhcGkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyB0YXJnZXQ6IF8sIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJQb3J0YWxHcm91cFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2ludGVybmFsL3N0YWNrLWNvbnRleHQudHNcbnZhciBpbXBvcnRfdnVlMTUgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFN0YWNrQ29udGV4dCA9IFN5bWJvbChcIlN0YWNrQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVN0YWNrQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTUuaW5qZWN0KShTdGFja0NvbnRleHQsICgpID0+IHtcbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VTdGFja1Byb3ZpZGVyKHtcbiAgdHlwZSxcbiAgZWxlbWVudCxcbiAgb25VcGRhdGVcbn0pIHtcbiAgbGV0IHBhcmVudFVwZGF0ZSA9IHVzZVN0YWNrQ29udGV4dCgpO1xuICBmdW5jdGlvbiBub3RpZnkoLi4uYXJncykge1xuICAgIG9uVXBkYXRlID09IG51bGwgPyB2b2lkIDAgOiBvblVwZGF0ZSguLi5hcmdzKTtcbiAgICBwYXJlbnRVcGRhdGUoLi4uYXJncyk7XG4gIH1cbiAgKDAsIGltcG9ydF92dWUxNS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICBub3RpZnkoMCAvKiBBZGQgKi8sIHR5cGUsIGVsZW1lbnQpO1xuICAgICgwLCBpbXBvcnRfdnVlMTUub25Vbm1vdW50ZWQpKCgpID0+IHtcbiAgICAgIG5vdGlmeSgxIC8qIFJlbW92ZSAqLywgdHlwZSwgZWxlbWVudCk7XG4gICAgfSk7XG4gIH0pO1xuICAoMCwgaW1wb3J0X3Z1ZTE1LnByb3ZpZGUpKFN0YWNrQ29udGV4dCwgbm90aWZ5KTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvZGVzY3JpcHRpb24vZGVzY3JpcHRpb24udHNcbnZhciBpbXBvcnRfdnVlMTYgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERlc2NyaXB0aW9uQ29udGV4dCA9IFN5bWJvbChcIkRlc2NyaXB0aW9uQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURlc2NyaXB0aW9uQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE2LmluamVjdCkoRGVzY3JpcHRpb25Db250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHBhcmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZURlc2NyaXB0aW9ucyh7XG4gIHNsb3QgPSAoMCwgaW1wb3J0X3Z1ZTE2LnJlZikoe30pLFxuICBuYW1lID0gXCJEZXNjcmlwdGlvblwiLFxuICBwcm9wcyA9IHt9XG59ID0ge30pIHtcbiAgbGV0IGRlc2NyaXB0aW9uSWRzID0gKDAsIGltcG9ydF92dWUxNi5yZWYpKFtdKTtcbiAgZnVuY3Rpb24gcmVnaXN0ZXIodmFsdWUpIHtcbiAgICBkZXNjcmlwdGlvbklkcy52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IGlkeCA9IGRlc2NyaXB0aW9uSWRzLnZhbHVlLmluZGV4T2YodmFsdWUpO1xuICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlc2NyaXB0aW9uSWRzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgIH07XG4gIH1cbiAgKDAsIGltcG9ydF92dWUxNi5wcm92aWRlKShEZXNjcmlwdGlvbkNvbnRleHQsIHsgcmVnaXN0ZXIsIHNsb3QsIG5hbWUsIHByb3BzIH0pO1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUxNi5jb21wdXRlZCkoKCkgPT4gZGVzY3JpcHRpb25JZHMudmFsdWUubGVuZ3RoID4gMCA/IGRlc2NyaXB0aW9uSWRzLnZhbHVlLmpvaW4oXCIgXCIpIDogdm9pZCAwKTtcbn1cbnZhciBEZXNjcmlwdGlvbiA9ICgwLCBpbXBvcnRfdnVlMTYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGVzY3JpcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInBcIiB9XG4gIH0sXG4gIHNldHVwKG15UHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgY29udGV4dCA9IHVzZURlc2NyaXB0aW9uQ29udGV4dCgpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kZXNjcmlwdGlvbi0ke3VzZUlkKCl9YDtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE2Lm9uTW91bnRlZCkoKCkgPT4gKDAsIGltcG9ydF92dWUxNi5vblVubW91bnRlZCkoY29udGV4dC5yZWdpc3RlcihpZDIpKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUgPSBcIkRlc2NyaXB0aW9uXCIsIHNsb3QgPSAoMCwgaW1wb3J0X3Z1ZTE2LnJlZikoe30pLCBwcm9wcyA9IHt9IH0gPSBjb250ZXh0O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBteVByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICAuLi5PYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06ICgwLCBpbXBvcnRfdnVlMTYudW5yZWYpKHZhbHVlKSB9KSwge30pLFxuICAgICAgICBpZDogaWQyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiBzbG90LnZhbHVlLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnRzXG52YXIgRGlhbG9nQ29udGV4dCA9IFN5bWJvbChcIkRpYWxvZ0NvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VEaWFsb2dDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTcuaW5qZWN0KShEaWFsb2dDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPERpYWxvZyAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VEaWFsb2dDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTWlzc2luZyA9IFwiREM4Rjg5MkQtMkVCRC00NDdDLUE0QzgtQTAzMDU4NDM2RkY0XCI7XG52YXIgRGlhbG9nID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dcIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgb3BlbjogeyB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSwgZGVmYXVsdDogTWlzc2luZyB9LFxuICAgIGluaXRpYWxGb2N1czogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IG51bGwgfVxuICB9LFxuICBlbWl0czogeyBjbG9zZTogKF9jbG9zZSkgPT4gdHJ1ZSB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCByZWFkeSA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShmYWxzZSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIHJlYWR5LnZhbHVlID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBsZXQgbmVzdGVkRGlhbG9nQ291bnQgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikoMCk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IG9wZW4gPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMub3BlbiA9PT0gTWlzc2luZyAmJiB1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBtYXRjaCh1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IHRydWUsXG4gICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMub3BlbjtcbiAgICB9KTtcbiAgICBsZXQgY29udGFpbmVycyA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKSgvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpKTtcbiAgICBsZXQgaW50ZXJuYWxEaWFsb2dSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgbGV0IG1haW5UcmVlTm9kZSA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoaW50ZXJuYWxEaWFsb2dSZWYpKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxEaWFsb2dSZWYsICRlbDogaW50ZXJuYWxEaWFsb2dSZWYgfSk7XG4gICAgbGV0IGhhc09wZW4gPSBwcm9wcy5vcGVuICE9PSBNaXNzaW5nIHx8IHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGw7XG4gICAgaWYgKCFoYXNPcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBmb3Jnb3QgdG8gcHJvdmlkZSBhbiBcXGBvcGVuXFxgIHByb3AgdG8gdGhlIFxcYERpYWxvZ1xcYC5gKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcGVuLnZhbHVlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgcHJvdmlkZWQgYW4gXFxgb3BlblxcYCBwcm9wIHRvIHRoZSBcXGBEaWFsb2dcXGAsIGJ1dCB0aGUgdmFsdWUgaXMgbm90IGEgYm9vbGVhbi4gUmVjZWl2ZWQ6ICR7b3Blbi52YWx1ZSA9PT0gTWlzc2luZyA/IHZvaWQgMCA6IHByb3BzLm9wZW59YCk7XG4gICAgfVxuICAgIGxldCBkaWFsb2dTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+ICFyZWFkeS52YWx1ZSA/IDEgLyogQ2xvc2VkICovIDogb3Blbi52YWx1ZSA/IDAgLyogT3BlbiAqLyA6IDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pO1xuICAgIGxldCBoYXNOZXN0ZWREaWFsb2dzID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gbmVzdGVkRGlhbG9nQ291bnQudmFsdWUgPiAxKTtcbiAgICBsZXQgaGFzUGFyZW50RGlhbG9nID0gKDAsIGltcG9ydF92dWUxNy5pbmplY3QpKERpYWxvZ0NvbnRleHQsIG51bGwpICE9PSBudWxsO1xuICAgIGxldCBwb3NpdGlvbiA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+ICFoYXNOZXN0ZWREaWFsb2dzLnZhbHVlID8gXCJsZWFmXCIgOiBcInBhcmVudFwiKTtcbiAgICB1c2VJbmVydE90aGVycyhpbnRlcm5hbERpYWxvZ1JlZiwgKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSA/IGVuYWJsZWQudmFsdWUgOiBmYWxzZSkpO1xuICAgIHVzZVN0YWNrUHJvdmlkZXIoe1xuICAgICAgdHlwZTogXCJEaWFsb2dcIixcbiAgICAgIGVsZW1lbnQ6IGludGVybmFsRGlhbG9nUmVmLFxuICAgICAgb25VcGRhdGU6IChtZXNzYWdlLCB0eXBlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmICh0eXBlICE9PSBcIkRpYWxvZ1wiKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmV0dXJuIG1hdGNoKG1lc3NhZ2UsIHtcbiAgICAgICAgICBbMCAvKiBBZGQgKi9dKCkge1xuICAgICAgICAgICAgY29udGFpbmVycy52YWx1ZS5hZGQoZWxlbWVudCk7XG4gICAgICAgICAgICBuZXN0ZWREaWFsb2dDb3VudC52YWx1ZSArPSAxO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzEgLyogUmVtb3ZlICovXSgpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lcnMudmFsdWUuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgbmVzdGVkRGlhbG9nQ291bnQudmFsdWUgLT0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBkZXNjcmliZWRieSA9IHVzZURlc2NyaXB0aW9ucyh7XG4gICAgICBuYW1lOiBcIkRpYWxvZ0Rlc2NyaXB0aW9uXCIsXG4gICAgICBzbG90OiAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiAoeyBvcGVuOiBvcGVuLnZhbHVlIH0pKVxuICAgIH0pO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctJHt1c2VJZCgpfWA7XG4gICAgbGV0IHRpdGxlSWQgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIHRpdGxlSWQsXG4gICAgICBwYW5lbFJlZjogKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpLFxuICAgICAgZGlhbG9nU3RhdGUsXG4gICAgICBzZXRUaXRsZUlkKGlkMykge1xuICAgICAgICBpZiAodGl0bGVJZC52YWx1ZSA9PT0gaWQzKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGl0bGVJZC52YWx1ZSA9IGlkMztcbiAgICAgIH0sXG4gICAgICBjbG9zZSgpIHtcbiAgICAgICAgZW1pdChcImNsb3NlXCIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMTcucHJvdmlkZSkoRGlhbG9nQ29udGV4dCwgYXBpKTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soKCkgPT4ge1xuICAgICAgdmFyIF9hMiwgX2IsIF9jO1xuICAgICAgbGV0IHJvb3RDb250YWluZXJzID0gQXJyYXkuZnJvbSgoX2IgPSAoX2EyID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICosIFtkYXRhLWhlYWRsZXNzdWktcG9ydGFsXVwiKSkgIT0gbnVsbCA/IF9iIDogW10pLmZpbHRlcigoY29udGFpbmVyKSA9PiB7XG4gICAgICAgIGlmICghKGNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChjb250YWluZXIuY29udGFpbnMoZG9tKG1haW5UcmVlTm9kZSkpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGFwaS5wYW5lbFJlZi52YWx1ZSAmJiBjb250YWluZXIuY29udGFpbnMoYXBpLnBhbmVsUmVmLnZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gWy4uLnJvb3RDb250YWluZXJzLCAoX2MgPSBhcGkucGFuZWxSZWYudmFsdWUpICE9IG51bGwgPyBfYyA6IGludGVybmFsRGlhbG9nUmVmLnZhbHVlXTtcbiAgICB9LCAoX2V2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIGFwaS5jbG9zZSgpO1xuICAgICAgKDAsIGltcG9ydF92dWUxNy5uZXh0VGljaykoKCkgPT4gdGFyZ2V0ID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQuZm9jdXMoKSk7XG4gICAgfSwgKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyAmJiAhaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSkpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRWaWV3LCBcImtleWRvd25cIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChkaWFsb2dTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYXBpLmNsb3NlKCk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIGlmIChkaWFsb2dTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaGFzUGFyZW50RGlhbG9nKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgb3duZXIgPSBvd25lckRvY3VtZW50LnZhbHVlO1xuICAgICAgaWYgKCFvd25lcilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGRvY3VtZW50RWxlbWVudCA9IG93bmVyID09IG51bGwgPyB2b2lkIDAgOiBvd25lci5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBsZXQgb3duZXJXaW5kb3cgPSAoX2EyID0gb3duZXIuZGVmYXVsdFZpZXcpICE9IG51bGwgPyBfYTIgOiB3aW5kb3c7XG4gICAgICBsZXQgb3ZlcmZsb3cgPSBkb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c7XG4gICAgICBsZXQgcGFkZGluZ1JpZ2h0ID0gZG9jdW1lbnRFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodDtcbiAgICAgIGxldCBzY3JvbGxiYXJXaWR0aEJlZm9yZSA9IG93bmVyV2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgaWYgKHNjcm9sbGJhcldpZHRoQmVmb3JlID4gMCkge1xuICAgICAgICBsZXQgc2Nyb2xsYmFyV2lkdGhBZnRlciA9IGRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIGRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgbGV0IHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsYmFyV2lkdGhCZWZvcmUgLSBzY3JvbGxiYXJXaWR0aEFmdGVyO1xuICAgICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgICAgfVxuICAgICAgb25JbnZhbGlkYXRlKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIGRvY3VtZW50RWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBwYWRkaW5nUmlnaHQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3LndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICBpZiAoZGlhbG9nU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGNvbnRhaW5lciA9IGRvbShpbnRlcm5hbERpYWxvZ1JlZik7XG4gICAgICBpZiAoIWNvbnRhaW5lcilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnggPT09IDAgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnkgPT09IDAgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoID09PSAwICYmIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcik7XG4gICAgICBvbkludmFsaWRhdGUoKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgcmVmOiBpbnRlcm5hbERpYWxvZ1JlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgXCJhcmlhLW1vZGFsXCI6IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0aXRsZUlkLnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogZGVzY3JpYmVkYnkudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgeyBvcGVuOiBfLCBpbml0aWFsRm9jdXMsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEZvcmNlUG9ydGFsUm9vdCwgeyBmb3JjZTogdHJ1ZSB9LCAoKSA9PiBbXG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTcuaCkoUG9ydGFsLCAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKFBvcnRhbEdyb3VwLCB7IHRhcmdldDogaW50ZXJuYWxEaWFsb2dSZWYudmFsdWUgfSwgKCkgPT4gKDAsIGltcG9ydF92dWUxNy5oKShGb3JjZVBvcnRhbFJvb3QsIHsgZm9yY2U6IGZhbHNlIH0sICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9jdXNUcmFwLCB7XG4gICAgICAgICAgaW5pdGlhbEZvY3VzLFxuICAgICAgICAgIGNvbnRhaW5lcnMsXG4gICAgICAgICAgZmVhdHVyZXM6IGVuYWJsZWQudmFsdWUgPyBtYXRjaChwb3NpdGlvbi52YWx1ZSwge1xuICAgICAgICAgICAgcGFyZW50OiBGb2N1c1RyYXAuZmVhdHVyZXMuUmVzdG9yZUZvY3VzLFxuICAgICAgICAgICAgbGVhZjogRm9jdXNUcmFwLmZlYXR1cmVzLkFsbCAmIH5Gb2N1c1RyYXAuZmVhdHVyZXMuRm9jdXNMb2NrXG4gICAgICAgICAgfSkgOiBGb2N1c1RyYXAuZmVhdHVyZXMuTm9uZVxuICAgICAgICB9LCAoKSA9PiByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICB2aXNpYmxlOiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgICAgbmFtZTogXCJEaWFsb2dcIlxuICAgICAgICB9KSkpKSksXG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTcuaCkoSGlkZGVuLCB7IGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLywgcmVmOiBtYWluVHJlZU5vZGUgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ092ZXJsYXkgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ092ZXJsYXlcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ092ZXJsYXlcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy1vdmVybGF5LSR7dXNlSWQoKX1gO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KVxuICAgICAgICByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBhcGkuY2xvc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHsgb3BlbjogYXBpLmRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpYWxvZ092ZXJsYXlcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nQmFja2Ryb3AgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ0JhY2tkcm9wXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ0JhY2tkcm9wXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctYmFja2Ryb3AtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsQmFja2Ryb3BSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsQmFja2Ryb3BSZWYsICRlbDogaW50ZXJuYWxCYWNrZHJvcFJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5wYW5lbFJlZi52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgPERpYWxvZ0JhY2tkcm9wIC8+IGNvbXBvbmVudCBpcyBiZWluZyB1c2VkLCBidXQgYSA8RGlhbG9nUGFuZWwgLz4gY29tcG9uZW50IGlzIG1pc3NpbmcuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxCYWNrZHJvcFJlZixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9yY2VQb3J0YWxSb290LCB7IGZvcmNlOiB0cnVlIH0sICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoUG9ydGFsLCAoKSA9PiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICBzbG90OiB7IG9wZW46IGFwaS5kaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaWFsb2dCYWNrZHJvcFwiXG4gICAgICB9KSkpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ1BhbmVsID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpYWxvZ0NvbnRleHQoXCJEaWFsb2dQYW5lbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkucGFuZWxSZWYsICRlbDogYXBpLnBhbmVsUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBhcGkucGFuZWxSZWYsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nVGl0bGUgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ1RpdGxlXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJoMlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ1RpdGxlXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctdGl0bGUtJHt1c2VJZCgpfWA7XG4gICAgKDAsIGltcG9ydF92dWUxNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIGFwaS5zZXRUaXRsZUlkKGlkMik7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkuc2V0VGl0bGVJZChudWxsKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgaWQ6IGlkMiB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nVGl0bGVcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbjtcblxuLy8gc3JjL2NvbXBvbmVudHMvZGlzY2xvc3VyZS9kaXNjbG9zdXJlLnRzXG52YXIgaW1wb3J0X3Z1ZTE4ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEaXNjbG9zdXJlQ29udGV4dCA9IFN5bWJvbChcIkRpc2Nsb3N1cmVDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlRGlzY2xvc3VyZUNvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUxOC5pbmplY3QpKERpc2Nsb3N1cmVDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPERpc2Nsb3N1cmUgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlRGlzY2xvc3VyZUNvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBEaXNjbG9zdXJlUGFuZWxDb250ZXh0ID0gU3ltYm9sKFwiRGlzY2xvc3VyZVBhbmVsQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURpc2Nsb3N1cmVQYW5lbENvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE4LmluamVjdCkoRGlzY2xvc3VyZVBhbmVsQ29udGV4dCwgbnVsbCk7XG59XG52YXIgRGlzY2xvc3VyZSA9ICgwLCBpbXBvcnRfdnVlMTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlzY2xvc3VyZVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRlZmF1bHRPcGVuOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBidXR0b25JZCA9IGBoZWFkbGVzc3VpLWRpc2Nsb3N1cmUtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBwYW5lbElkID0gYGhlYWRsZXNzdWktZGlzY2xvc3VyZS1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgZGlzY2xvc3VyZVN0YXRlID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKHByb3BzLmRlZmF1bHRPcGVuID8gMCAvKiBPcGVuICovIDogMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBwYW5lbFJlZiA9ICgwLCBpbXBvcnRfdnVlMTgucmVmKShudWxsKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKG51bGwpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBidXR0b25JZCxcbiAgICAgIHBhbmVsSWQsXG4gICAgICBkaXNjbG9zdXJlU3RhdGUsXG4gICAgICBwYW5lbDogcGFuZWxSZWYsXG4gICAgICBidXR0b246IGJ1dHRvblJlZixcbiAgICAgIHRvZ2dsZURpc2Nsb3N1cmUoKSB7XG4gICAgICAgIGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9IG1hdGNoKGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAxIC8qIENsb3NlZCAqLyxcbiAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAwIC8qIE9wZW4gKi9cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgY2xvc2VEaXNjbG9zdXJlKCkge1xuICAgICAgICBpZiAoZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgfSxcbiAgICAgIGNsb3NlKGZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgYXBpLmNsb3NlRGlzY2xvc3VyZSgpO1xuICAgICAgICBsZXQgcmVzdG9yZUVsZW1lbnQgPSAoKCkgPT4ge1xuICAgICAgICAgIGlmICghZm9jdXNhYmxlRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBmb2N1c2FibGVFbGVtZW50O1xuICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50LnZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZG9tKGZvY3VzYWJsZUVsZW1lbnQpO1xuICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJlc3RvcmVFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiByZXN0b3JlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUxOC5wcm92aWRlKShEaXNjbG9zdXJlQ29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUxOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1hdGNoKGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSwge1xuICAgICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgICAgfSk7XG4gICAgfSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBkZWZhdWx0T3BlbjogXywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGNsb3NlOiBhcGkuY2xvc2UgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3QsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgbmFtZTogXCJEaXNjbG9zdXJlXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpc2Nsb3N1cmVCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTE4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpc2Nsb3N1cmVCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlzY2xvc3VyZUNvbnRleHQoXCJEaXNjbG9zdXJlQnV0dG9uXCIpO1xuICAgIGxldCBwYW5lbENvbnRleHQgPSB1c2VEaXNjbG9zdXJlUGFuZWxDb250ZXh0KCk7XG4gICAgbGV0IGlzV2l0aGluUGFuZWwgPSBwYW5lbENvbnRleHQgPT09IG51bGwgPyBmYWxzZSA6IHBhbmVsQ29udGV4dCA9PT0gYXBpLnBhbmVsSWQ7XG4gICAgbGV0IGludGVybmFsQnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbEJ1dHRvblJlZiwgJGVsOiBpbnRlcm5hbEJ1dHRvblJlZiB9KTtcbiAgICBpZiAoIWlzV2l0aGluUGFuZWwpIHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgYXBpLmJ1dHRvbi52YWx1ZSA9IGludGVybmFsQnV0dG9uUmVmLnZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUxOC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgaW50ZXJuYWxCdXR0b25SZWYpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXBpLnRvZ2dsZURpc2Nsb3N1cmUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IGlzV2l0aGluUGFuZWwgPyB7XG4gICAgICAgIHJlZjogaW50ZXJuYWxCdXR0b25SZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd25cbiAgICAgIH0gOiB7XG4gICAgICAgIGlkOiBhcGkuYnV0dG9uSWQsXG4gICAgICAgIHJlZjogaW50ZXJuYWxCdXR0b25SZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBwcm9wcy5kaXNhYmxlZCA/IHZvaWQgMCA6IGFwaS5kaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGRvbShhcGkucGFuZWwpID8gYXBpLnBhbmVsSWQgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpc2Nsb3N1cmVCdXR0b25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlzY2xvc3VyZVBhbmVsID0gKDAsIGltcG9ydF92dWUxOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaXNjbG9zdXJlUGFuZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaXNjbG9zdXJlQ29udGV4dChcIkRpc2Nsb3N1cmVQYW5lbFwiKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLnBhbmVsLCAkZWw6IGFwaS5wYW5lbCB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE4LnByb3ZpZGUpKERpc2Nsb3N1cmVQYW5lbENvbnRleHQsIGFwaS5wYW5lbElkKTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLCBjbG9zZTogYXBpLmNsb3NlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBhcGkucGFuZWxJZCwgcmVmOiBhcGkucGFuZWwgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJEaXNjbG9zdXJlUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50c1xudmFyIGltcG9ydF92dWUxOSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiBuZXh0RnJhbWUoY2IpIHtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYikpO1xufVxudmFyIExpc3Rib3hDb250ZXh0ID0gU3ltYm9sKFwiTGlzdGJveENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VMaXN0Ym94Q29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE5LmluamVjdCkoTGlzdGJveENvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8TGlzdGJveCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VMaXN0Ym94Q29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIExpc3Rib3ggPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hcIixcbiAgZW1pdHM6IHsgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiOiAoX3ZhbHVlKSA9PiB0cnVlIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGhvcml6b250YWw6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgbXVsdGlwbGU6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZW1pdCB9KSB7XG4gICAgbGV0IGxpc3Rib3hTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGxhYmVsUmVmID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGxldCBidXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikoW10pO1xuICAgIGxldCBzZWFyY2hRdWVyeSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShcIlwiKTtcbiAgICBsZXQgYWN0aXZlT3B0aW9uSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IGFjdGl2YXRpb25UcmlnZ2VyID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKDEgLyogT3RoZXIgKi8pO1xuICAgIGZ1bmN0aW9uIGFkanVzdE9yZGVyZWRTdGF0ZShhZGp1c3RtZW50ID0gKGkpID0+IGkpIHtcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBvcHRpb25zLnZhbHVlW2FjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkT3B0aW9ucyA9IHNvcnRCeURvbU5vZGUoYWRqdXN0bWVudChvcHRpb25zLnZhbHVlLnNsaWNlKCkpLCAob3B0aW9uKSA9PiBkb20ob3B0aW9uLmRhdGFSZWYuZG9tUmVmKSk7XG4gICAgICBsZXQgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IGN1cnJlbnRBY3RpdmVPcHRpb24gPyBzb3J0ZWRPcHRpb25zLmluZGV4T2YoY3VycmVudEFjdGl2ZU9wdGlvbikgOiBudWxsO1xuICAgICAgaWYgKGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW9uczogc29ydGVkT3B0aW9ucyxcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXhcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIGxldCBtb2RlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMubXVsdGlwbGUgPyAxIC8qIE11bHRpICovIDogMCAvKiBTaW5nbGUgKi8pO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBsaXN0Ym94U3RhdGUsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1vZGUsXG4gICAgICBjb21wYXJlKGEsIHopIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IHo7XG4gICAgICB9LFxuICAgICAgb3JpZW50YXRpb246ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLmhvcml6b250YWwgPyBcImhvcml6b250YWxcIiA6IFwidmVydGljYWxcIiksXG4gICAgICBsYWJlbFJlZixcbiAgICAgIGJ1dHRvblJlZixcbiAgICAgIG9wdGlvbnNSZWYsXG4gICAgICBkaXNhYmxlZDogKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNlYXJjaFF1ZXJ5LFxuICAgICAgYWN0aXZlT3B0aW9uSW5kZXgsXG4gICAgICBhY3RpdmF0aW9uVHJpZ2dlcixcbiAgICAgIGNsb3NlTGlzdGJveCgpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0Ym94U3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIG9wZW5MaXN0Ym94KCkge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0Ym94U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi87XG4gICAgICB9LFxuICAgICAgZ29Ub09wdGlvbihmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKTtcbiAgICAgICAgbGV0IG5leHRBY3RpdmVPcHRpb25JbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGZvY3VzID09PSA0IC8qIFNwZWNpZmljICovID8geyBmb2N1czogNCAvKiBTcGVjaWZpYyAqLywgaWQ6IGlkMiB9IDogeyBmb2N1cyB9LCB7XG4gICAgICAgICAgcmVzb2x2ZUl0ZW1zOiAoKSA9PiBhZGp1c3RlZFN0YXRlLm9wdGlvbnMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4LFxuICAgICAgICAgIHJlc29sdmVJZDogKG9wdGlvbikgPT4gb3B0aW9uLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKG9wdGlvbikgPT4gb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBuZXh0QWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gdHJpZ2dlciAhPSBudWxsID8gdHJpZ2dlciA6IDEgLyogT3RoZXIgKi87XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICB9LFxuICAgICAgc2VhcmNoKHZhbHVlMikge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3YXNBbHJlYWR5U2VhcmNoaW5nID0gc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCI7XG4gICAgICAgIGxldCBvZmZzZXQgPSB3YXNBbHJlYWR5U2VhcmNoaW5nID8gMCA6IDE7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlICs9IHZhbHVlMi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgcmVPcmRlcmVkT3B0aW9ucyA9IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gb3B0aW9ucy52YWx1ZS5zbGljZShhY3RpdmVPcHRpb25JbmRleC52YWx1ZSArIG9mZnNldCkuY29uY2F0KG9wdGlvbnMudmFsdWUuc2xpY2UoMCwgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgKyBvZmZzZXQpKSA6IG9wdGlvbnMudmFsdWU7XG4gICAgICAgIGxldCBtYXRjaGluZ09wdGlvbiA9IHJlT3JkZXJlZE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uZGF0YVJlZi50ZXh0VmFsdWUuc3RhcnRzV2l0aChzZWFyY2hRdWVyeS52YWx1ZSkgJiYgIW9wdGlvbi5kYXRhUmVmLmRpc2FibGVkKTtcbiAgICAgICAgbGV0IG1hdGNoSWR4ID0gbWF0Y2hpbmdPcHRpb24gPyBvcHRpb25zLnZhbHVlLmluZGV4T2YobWF0Y2hpbmdPcHRpb24pIDogLTE7XG4gICAgICAgIGlmIChtYXRjaElkeCA9PT0gLTEgfHwgbWF0Y2hJZHggPT09IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBtYXRjaElkeDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU2VhcmNoKCkge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChzZWFyY2hRdWVyeS52YWx1ZSA9PT0gXCJcIilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5vcHRpb25zMiwgeyBpZDogaWQyLCBkYXRhUmVmIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJPcHRpb24oaWQyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4ge1xuICAgICAgICAgIGxldCBpZHggPSBvcHRpb25zMi5maW5kSW5kZXgoKGEpID0+IGEuaWQgPT09IGlkMik7XG4gICAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgICBvcHRpb25zMi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uczI7XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICBzZWxlY3QodmFsdWUyKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gdmFsdWUyLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNsaWNlKCk7XG4gICAgICAgICAgICBsZXQgcmF3ID0gKDAsIGltcG9ydF92dWUxOS50b1JhdykodmFsdWUyKTtcbiAgICAgICAgICAgIGxldCBpZHggPSBjb3B5LmZpbmRJbmRleCgodmFsdWUzKSA9PiBhcGkuY29tcGFyZShyYXcsICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlMykpKTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvcHkucHVzaChyYXcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29weS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtidXR0b25SZWYsIG9wdGlvbnNSZWZdLCAoZXZlbnQsIHRhcmdldCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoX2EgPSBkb20oYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gbGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5LnByb3ZpZGUpKExpc3Rib3hDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChsaXN0Ym94U3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIG1vZGVsVmFsdWUsIGRpc2FibGVkLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBsaXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLywgZGlzYWJsZWQgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE5LmgpKGltcG9ydF92dWUxOS5GcmFnbWVudCwgW1xuICAgICAgICAuLi5uYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gb2JqZWN0VG9Gb3JtRW50cmllcyh7IFtuYW1lXTogbW9kZWxWYWx1ZSB9KS5tYXAoKFtuYW1lMiwgdmFsdWUyXSkgPT4gKDAsIGltcG9ydF92dWUxOS5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgLi4ub21pdCh0aGVpclByb3BzLCBbXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiaG9yaXpvbnRhbFwiLCBcIm11bHRpcGxlXCIsIFwiYnlcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIG5hbWU6IFwiTGlzdGJveFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94TGFiZWwgPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hMYWJlbFwiLFxuICBwcm9wczogeyBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxhYmVsXCIgfSB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VMaXN0Ym94Q29udGV4dChcIkxpc3Rib3hMYWJlbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBpZDIsIHJlZjogYXBpLmxhYmVsUmVmLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hMYWJlbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94QnV0dG9uID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94QnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94QnV0dG9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvblJlZiwgJGVsOiBhcGkuYnV0dG9uUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYXBpLm9wZW5MaXN0Ym94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYXBpLm9wZW5MaXN0Ym94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKGFwaS5kaXNhYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykge1xuICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcGkub3Blbkxpc3Rib3goKTtcbiAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGFwaS5idXR0b25SZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkuYnV0dG9uUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXBpLmxhYmVsUmVmLnZhbHVlID8gWyhfYiA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsIGlkMl0uam9pbihcIiBcIikgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWUgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJMaXN0Ym94QnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hPcHRpb25zID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94T3B0aW9uc1wiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidWxcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94T3B0aW9uc1wiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1vcHRpb25zLSR7dXNlSWQoKX1gO1xuICAgIGxldCBzZWFyY2hEZWJvdW5jZSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLm9wdGlvbnNSZWYsICRlbDogYXBpLm9wdGlvbnNSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgaWYgKHNlYXJjaERlYm91bmNlLnZhbHVlKVxuICAgICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRGVib3VuY2UudmFsdWUpO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLnNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXTtcbiAgICAgICAgICAgIGFwaS5zZWxlY3QoYWN0aXZlT3B0aW9uLmRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXBpLm1vZGUudmFsdWUgPT09IDAgLyogU2luZ2xlICovKSB7XG4gICAgICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBtYXRjaChhcGkub3JpZW50YXRpb24udmFsdWUsIHtcbiAgICAgICAgICB2ZXJ0aWNhbDogXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi8sXG4gICAgICAgICAgaG9yaXpvbnRhbDogXCJBcnJvd1JpZ2h0XCIgLyogQXJyb3dSaWdodCAqL1xuICAgICAgICB9KTpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigyIC8qIE5leHQgKi8pO1xuICAgICAgICBjYXNlIG1hdGNoKGFwaS5vcmllbnRhdGlvbi52YWx1ZSwgeyB2ZXJ0aWNhbDogXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLywgaG9yaXpvbnRhbDogXCJBcnJvd0xlZnRcIiAvKiBBcnJvd0xlZnQgKi8gfSk6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMSAvKiBQcmV2aW91cyAqLyk7XG4gICAgICAgIGNhc2UgXCJIb21lXCIgLyogSG9tZSAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VVcFwiIC8qIFBhZ2VVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVuZFwiIC8qIEVuZCAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VEb3duXCIgLyogUGFnZURvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVGFiXCIgLyogVGFiICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIHNlYXJjaERlYm91bmNlLnZhbHVlID0gc2V0VGltZW91dCgoKSA9PiBhcGkuY2xlYXJTZWFyY2goKSwgMzUwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsID8gdm9pZCAwIDogKF9hID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IGFwaS5tb2RlLnZhbHVlID09PSAxIC8qIE11bHRpICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9kID0gKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCkgIT0gbnVsbCA/IF9kIDogKF9jID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBhcGkub3JpZW50YXRpb24udmFsdWUsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICByZWY6IGFwaS5vcHRpb25zUmVmXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hPcHRpb25zXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hPcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxpXCIgfSxcbiAgICB2YWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94T3B0aW9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LW9wdGlvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxPcHRpb25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsT3B0aW9uUmVmLCAkZWw6IGludGVybmFsT3B0aW9uUmVmIH0pO1xuICAgIGxldCBhY3RpdmUgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXS5pZCA9PT0gaWQyIDogZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gbWF0Y2goYXBpLm1vZGUudmFsdWUsIHtcbiAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHByb3BzLnZhbHVlKSksXG4gICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlKSwgKDAsIGltcG9ydF92dWUxOS50b1JhdykocHJvcHMudmFsdWUpKSlcbiAgICB9KSk7XG4gICAgbGV0IGlzRmlyc3RTZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZXMgPSAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpO1xuICAgICAgICAgIHJldHVybiAoKF9hID0gYXBpLm9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiBjdXJyZW50VmFsdWVzLnNvbWUoKHZhbHVlKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KSh2YWx1ZSksICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKG9wdGlvbi5kYXRhUmVmLnZhbHVlKSkpKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkKSA9PT0gaWQyO1xuICAgICAgICB9LFxuICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBzZWxlY3RlZC52YWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgbGV0IGRhdGFSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiAoe1xuICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgdmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgdGV4dFZhbHVlOiBcIlwiLFxuICAgICAgZG9tUmVmOiBpbnRlcm5hbE9wdGlvblJlZlxuICAgIH0pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCB0ZXh0VmFsdWUgPSAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxPcHRpb25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dENvbnRlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgIGlmICh0ZXh0VmFsdWUgIT09IHZvaWQgMClcbiAgICAgICAgZGF0YVJlZi52YWx1ZS50ZXh0VmFsdWUgPSB0ZXh0VmFsdWU7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3Rlck9wdGlvbihpZDIpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUxOS53YXRjaCkoW2FwaS5saXN0Ym94U3RhdGUsIHNlbGVjdGVkXSwgKCkgPT4ge1xuICAgICAgICBpZiAoYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFzZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1hdGNoKGFwaS5tb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNGaXJzdFNlbGVjdGVkLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4ge1xuICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5saXN0Ym94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPT09IDAgLyogUG9pbnRlciAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gZG9tKGludGVybmFsT3B0aW9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEludG9WaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGFwaS5zZWxlY3QocHJvcHMudmFsdWUpO1xuICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlID09PSAwIC8qIFNpbmdsZSAqLykge1xuICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMiwgMCAvKiBQb2ludGVyICovKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUsIGRpc2FibGVkIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxPcHRpb25SZWYsXG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHZvaWQgMCA6IC0xLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUgPT09IHRydWUgPyBzZWxlY3RlZC52YWx1ZSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBvbWl0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImRpc2FibGVkXCJdKSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hPcHRpb25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL21lbnUvbWVudS50c1xudmFyIGltcG9ydF92dWUyMCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiBuZXh0RnJhbWUyKGNiKSB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpKTtcbn1cbnZhciBNZW51Q29udGV4dCA9IFN5bWJvbChcIk1lbnVDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlTWVudUNvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMC5pbmplY3QpKE1lbnVDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPE1lbnUgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlTWVudUNvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBNZW51ID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51XCIsXG4gIHByb3BzOiB7IGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9IH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IG1lbnVTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBsZXQgaXRlbXNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgbGV0IGl0ZW1zID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKFtdKTtcbiAgICBsZXQgc2VhcmNoUXVlcnkgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoXCJcIik7XG4gICAgbGV0IGFjdGl2ZUl0ZW1JbmRleCA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBsZXQgYWN0aXZhdGlvblRyaWdnZXIgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoMSAvKiBPdGhlciAqLyk7XG4gICAgZnVuY3Rpb24gYWRqdXN0T3JkZXJlZFN0YXRlKGFkanVzdG1lbnQgPSAoaSkgPT4gaSkge1xuICAgICAgbGV0IGN1cnJlbnRBY3RpdmVJdGVtID0gYWN0aXZlSXRlbUluZGV4LnZhbHVlICE9PSBudWxsID8gaXRlbXMudmFsdWVbYWN0aXZlSXRlbUluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkSXRlbXMgPSBzb3J0QnlEb21Ob2RlKGFkanVzdG1lbnQoaXRlbXMudmFsdWUuc2xpY2UoKSksIChpdGVtKSA9PiBkb20oaXRlbS5kYXRhUmVmLmRvbVJlZikpO1xuICAgICAgbGV0IGFkanVzdGVkQWN0aXZlSXRlbUluZGV4ID0gY3VycmVudEFjdGl2ZUl0ZW0gPyBzb3J0ZWRJdGVtcy5pbmRleE9mKGN1cnJlbnRBY3RpdmVJdGVtKSA6IG51bGw7XG4gICAgICBpZiAoYWRqdXN0ZWRBY3RpdmVJdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlSXRlbUluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiBzb3J0ZWRJdGVtcyxcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4OiBhZGp1c3RlZEFjdGl2ZUl0ZW1JbmRleFxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIG1lbnVTdGF0ZSxcbiAgICAgIGJ1dHRvblJlZixcbiAgICAgIGl0ZW1zUmVmLFxuICAgICAgaXRlbXMsXG4gICAgICBzZWFyY2hRdWVyeSxcbiAgICAgIGFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLFxuICAgICAgY2xvc2VNZW51OiAoKSA9PiB7XG4gICAgICAgIG1lbnVTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIG9wZW5NZW51OiAoKSA9PiBtZW51U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi8sXG4gICAgICBnb1RvSXRlbShmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKCk7XG4gICAgICAgIGxldCBuZXh0QWN0aXZlSXRlbUluZGV4ID0gY2FsY3VsYXRlQWN0aXZlSW5kZXgoZm9jdXMgPT09IDQgLyogU3BlY2lmaWMgKi8gPyB7IGZvY3VzOiA0IC8qIFNwZWNpZmljICovLCBpZDogaWQyIH0gOiB7IGZvY3VzIH0sIHtcbiAgICAgICAgICByZXNvbHZlSXRlbXM6ICgpID0+IGFkanVzdGVkU3RhdGUuaXRlbXMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgICAgICByZXNvbHZlSWQ6IChpdGVtKSA9PiBpdGVtLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKGl0ZW0pID0+IGl0ZW0uZGF0YVJlZi5kaXNhYmxlZFxuICAgICAgICB9KTtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBuZXh0QWN0aXZlSXRlbUluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IHRyaWdnZXIgIT0gbnVsbCA/IHRyaWdnZXIgOiAxIC8qIE90aGVyICovO1xuICAgICAgICBpdGVtcy52YWx1ZSA9IGFkanVzdGVkU3RhdGUuaXRlbXM7XG4gICAgICB9LFxuICAgICAgc2VhcmNoKHZhbHVlKSB7XG4gICAgICAgIGxldCB3YXNBbHJlYWR5U2VhcmNoaW5nID0gc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCI7XG4gICAgICAgIGxldCBvZmZzZXQgPSB3YXNBbHJlYWR5U2VhcmNoaW5nID8gMCA6IDE7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlICs9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCByZU9yZGVyZWRJdGVtcyA9IGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGl0ZW1zLnZhbHVlLnNsaWNlKGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSArIG9mZnNldCkuY29uY2F0KGl0ZW1zLnZhbHVlLnNsaWNlKDAsIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSArIG9mZnNldCkpIDogaXRlbXMudmFsdWU7XG4gICAgICAgIGxldCBtYXRjaGluZ0l0ZW0gPSByZU9yZGVyZWRJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGFSZWYudGV4dFZhbHVlLnN0YXJ0c1dpdGgoc2VhcmNoUXVlcnkudmFsdWUpICYmICFpdGVtLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICBsZXQgbWF0Y2hJZHggPSBtYXRjaGluZ0l0ZW0gPyBpdGVtcy52YWx1ZS5pbmRleE9mKG1hdGNoaW5nSXRlbSkgOiAtMTtcbiAgICAgICAgaWYgKG1hdGNoSWR4ID09PSAtMSB8fCBtYXRjaElkeCA9PT0gYWN0aXZlSXRlbUluZGV4LnZhbHVlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gbWF0Y2hJZHg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICBjbGVhclNlYXJjaCgpIHtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVySXRlbShpZDIsIGRhdGFSZWYpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKGl0ZW1zMikgPT4ge1xuICAgICAgICAgIHJldHVybiBbLi4uaXRlbXMyLCB7IGlkOiBpZDIsIGRhdGFSZWYgfV07XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtcy52YWx1ZSA9IGFkanVzdGVkU3RhdGUuaXRlbXM7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlckl0ZW0oaWQyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChpdGVtczIpID0+IHtcbiAgICAgICAgICBsZXQgaWR4ID0gaXRlbXMyLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gaWQyKTtcbiAgICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICAgIGl0ZW1zMi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICByZXR1cm4gaXRlbXMyO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbXMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLml0ZW1zO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtidXR0b25SZWYsIGl0ZW1zUmVmXSwgKGV2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKF9hID0gZG9tKGJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IG1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5wcm92aWRlKShNZW51Q29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gbWF0Y2gobWVudVN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogbWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIHJldHVybiByZW5kZXIoeyBvdXJQcm9wczoge30sIHRoZWlyUHJvcHM6IHByb3BzLCBzbG90LCBzbG90cywgYXR0cnMsIG5hbWU6IFwiTWVudVwiIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTIwLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIk1lbnVCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZU1lbnVDb250ZXh0KFwiTWVudUJ1dHRvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbWVudS1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5idXR0b25SZWYsICRlbDogYXBpLmJ1dHRvblJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5vcGVuTWVudSgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgYXBpLmdvVG9JdGVtKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkub3Blbk1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLml0ZW1zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGFwaS5nb1RvSXRlbSgzIC8qIExhc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSB7XG4gICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFwaS5vcGVuTWVudSgpO1xuICAgICAgICBuZXh0RnJhbWUyKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBhcGkuYnV0dG9uUmVmKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGFwaS5idXR0b25SZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiB0cnVlLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gZG9tKGFwaS5pdGVtc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLmRpc2FibGVkID8gdm9pZCAwIDogYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJNZW51QnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVJdGVtcyA9ICgwLCBpbXBvcnRfdnVlMjAuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTWVudUl0ZW1zXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTWVudUNvbnRleHQoXCJNZW51SXRlbXNcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLW1lbnUtaXRlbXMtJHt1c2VJZCgpfWA7XG4gICAgbGV0IHNlYXJjaERlYm91bmNlID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuaXRlbXNSZWYsICRlbDogYXBpLml0ZW1zUmVmIH0pO1xuICAgIHVzZVRyZWVXYWxrZXIoe1xuICAgICAgY29udGFpbmVyOiAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBkb20oYXBpLml0ZW1zUmVmKSksXG4gICAgICBlbmFibGVkOiAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pLFxuICAgICAgYWNjZXB0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJtZW51aXRlbVwiKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9LFxuICAgICAgd2Fsayhub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHNlYXJjaERlYm91bmNlLnZhbHVlKVxuICAgICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRGVib3VuY2UudmFsdWUpO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLnNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGFjdGl2ZUl0ZW0gPSBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV07XG4gICAgICAgICAgICBsZXQgX2FjdGl2ZUl0ZW0gPSBhY3RpdmVJdGVtO1xuICAgICAgICAgICAgKF9hID0gZG9tKF9hY3RpdmVJdGVtLmRhdGFSZWYuZG9tUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNsaWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyO1xuICAgICAgICAgICAgcmV0dXJuIChfYTIgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSgyIC8qIE5leHQgKi8pO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDEgLyogUHJldmlvdXMgKi8pO1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRW5kXCIgLyogRW5kICovOlxuICAgICAgICBjYXNlIFwiUGFnZURvd25cIiAvKiBQYWdlRG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyO1xuICAgICAgICAgICAgcmV0dXJuIChfYTIgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVGFiXCIgLyogVGFiICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIHNlYXJjaERlYm91bmNlLnZhbHVlID0gc2V0VGltZW91dCgoKSA9PiBhcGkuY2xlYXJTZWFyY2goKSwgMzUwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiAoX2EgPSBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9iID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcmVmOiBhcGkuaXRlbXNSZWZcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiTWVudUl0ZW1zXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVJdGVtID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51SXRlbVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VNZW51Q29udGV4dChcIk1lbnVJdGVtXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1tZW51LWl0ZW0tJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsSXRlbVJlZiA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxJdGVtUmVmLCAkZWw6IGludGVybmFsSXRlbVJlZiB9KTtcbiAgICBsZXQgYWN0aXZlID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWUgIT09IG51bGwgPyBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV0uaWQgPT09IGlkMiA6IGZhbHNlO1xuICAgIH0pO1xuICAgIGxldCBkYXRhUmVmID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gKHtcbiAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHRleHRWYWx1ZTogXCJcIixcbiAgICAgIGRvbVJlZjogaW50ZXJuYWxJdGVtUmVmXG4gICAgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHRleHRWYWx1ZSA9IChfYiA9IChfYSA9IGRvbShpbnRlcm5hbEl0ZW1SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dENvbnRlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgIGlmICh0ZXh0VmFsdWUgIT09IHZvaWQgMClcbiAgICAgICAgZGF0YVJlZi52YWx1ZS50ZXh0VmFsdWUgPSB0ZXh0VmFsdWU7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlckl0ZW0oaWQyLCBkYXRhUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJJdGVtKGlkMikpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChhcGkubWVudVN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID09PSAwIC8qIFBvaW50ZXIgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IGRvbShpbnRlcm5hbEl0ZW1SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2Nyb2xsSW50b1ZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB7IGJsb2NrOiBcIm5lYXJlc3RcIiB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvSXRlbSg0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub0l0ZW0oNCAvKiBTcGVjaWZpYyAqLywgaWQyLCAwIC8qIFBvaW50ZXIgKi8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvSXRlbSg1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBkaXNhYmxlZCB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGludGVybmFsSXRlbVJlZixcbiAgICAgICAgcm9sZTogXCJtZW51aXRlbVwiLFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPT09IHRydWUgPyB2b2lkIDAgOiAtMSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIk1lbnVJdGVtXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIudHNcbnZhciBpbXBvcnRfdnVlMjEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFBvcG92ZXJDb250ZXh0ID0gU3ltYm9sKFwiUG9wb3ZlckNvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3BvdmVyQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmluamVjdCkoUG9wb3ZlckNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8JHtQb3BvdmVyLm5hbWV9IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZVBvcG92ZXJDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgUG9wb3Zlckdyb3VwQ29udGV4dCA9IFN5bWJvbChcIlBvcG92ZXJHcm91cENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyMS5pbmplY3QpKFBvcG92ZXJHcm91cENvbnRleHQsIG51bGwpO1xufVxudmFyIFBvcG92ZXJQYW5lbENvbnRleHQgPSBTeW1ib2woXCJQb3BvdmVyUGFuZWxDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUG9wb3ZlclBhbmVsQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjEuaW5qZWN0KShQb3BvdmVyUGFuZWxDb250ZXh0LCBudWxsKTtcbn1cbnZhciBQb3BvdmVyID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICB2YXIgX2E7XG4gICAgbGV0IGJ1dHRvbklkID0gYGhlYWRsZXNzdWktcG9wb3Zlci1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IHBhbmVsSWQgPSBgaGVhZGxlc3N1aS1wb3BvdmVyLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbFBvcG92ZXJSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsUG9wb3ZlclJlZiwgJGVsOiBpbnRlcm5hbFBvcG92ZXJSZWYgfSk7XG4gICAgbGV0IHBvcG92ZXJTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgYmVmb3JlUGFuZWxTZW50aW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgYWZ0ZXJQYW5lbFNlbnRpbmVsID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBwYW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoaW50ZXJuYWxQb3BvdmVyUmVmKSk7XG4gICAgbGV0IGlzUG9ydGFsbGVkID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKCFkb20oYnV0dG9uKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCFkb20ocGFuZWwpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGxldCByb290IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJib2R5ID4gKlwiKSkge1xuICAgICAgICBpZiAoTnVtYmVyKHJvb3QgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3QuY29udGFpbnMoZG9tKGJ1dHRvbikpKSBeIE51bWJlcihyb290ID09IG51bGwgPyB2b2lkIDAgOiByb290LmNvbnRhaW5zKGRvbShwYW5lbCkpKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIHBvcG92ZXJTdGF0ZSxcbiAgICAgIGJ1dHRvbklkLFxuICAgICAgcGFuZWxJZCxcbiAgICAgIHBhbmVsLFxuICAgICAgYnV0dG9uLFxuICAgICAgaXNQb3J0YWxsZWQsXG4gICAgICBiZWZvcmVQYW5lbFNlbnRpbmVsLFxuICAgICAgYWZ0ZXJQYW5lbFNlbnRpbmVsLFxuICAgICAgdG9nZ2xlUG9wb3ZlcigpIHtcbiAgICAgICAgcG9wb3ZlclN0YXRlLnZhbHVlID0gbWF0Y2gocG9wb3ZlclN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IDEgLyogQ2xvc2VkICovLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IDAgLyogT3BlbiAqL1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBjbG9zZVBvcG92ZXIoKSB7XG4gICAgICAgIGlmIChwb3BvdmVyU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcG9wb3ZlclN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICB9LFxuICAgICAgY2xvc2UoZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIGxldCByZXN0b3JlRWxlbWVudCA9ICgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFmb2N1c2FibGVFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQudmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oZm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc3RvcmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLnByb3ZpZGUpKFBvcG92ZXJDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBtYXRjaChwb3BvdmVyU3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgbGV0IHJlZ2lzdGVyQmFnID0ge1xuICAgICAgYnV0dG9uSWQsXG4gICAgICBwYW5lbElkLFxuICAgICAgY2xvc2UoKSB7XG4gICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBncm91cENvbnRleHQgPSB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCk7XG4gICAgbGV0IHJlZ2lzdGVyUG9wb3ZlciA9IGdyb3VwQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZ3JvdXBDb250ZXh0LnJlZ2lzdGVyUG9wb3ZlcjtcbiAgICBmdW5jdGlvbiBpc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkge1xuICAgICAgdmFyIF9hMiwgX2IsIF9jLCBfZDtcbiAgICAgIHJldHVybiAoX2QgPSBncm91cENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGdyb3VwQ29udGV4dC5pc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkpICE9IG51bGwgPyBfZCA6ICgoX2EyID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5hY3RpdmVFbGVtZW50KSAmJiAoKChfYiA9IGRvbShidXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkgfHwgKChfYyA9IGRvbShwYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYy5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSk7XG4gICAgfVxuICAgICgwLCBpbXBvcnRfdnVlMjEud2F0Y2hFZmZlY3QpKCgpID0+IHJlZ2lzdGVyUG9wb3ZlciA9PSBudWxsID8gdm9pZCAwIDogcmVnaXN0ZXJQb3BvdmVyKHJlZ2lzdGVyQmFnKSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcigoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFZpZXcsIFwiZm9jdXNcIiwgKGV2ZW50KSA9PiB7XG4gICAgICB2YXIgX2EyLCBfYjtcbiAgICAgIGlmIChwb3BvdmVyU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAoKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFidXR0b24pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghcGFuZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICgoX2EyID0gZG9tKGFwaS5iZWZvcmVQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoKF9iID0gZG9tKGFwaS5hZnRlclBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgIH0sIHRydWUpO1xuICAgIHVzZU91dHNpZGVDbGljayhbYnV0dG9uLCBwYW5lbF0sIChldmVudCwgdGFyZ2V0KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoX2EyID0gZG9tKGJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBwb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogcG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGNsb3NlOiBhcGkuY2xvc2UgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHsgcmVmOiBpbnRlcm5hbFBvcG92ZXJSZWYgfSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBuYW1lOiBcIlBvcG92ZXJcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3ZlckJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3ZlckJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VQb3BvdmVyQ29udGV4dChcIlBvcG92ZXJCdXR0b25cIik7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGFwaS5idXR0b24pKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvbiwgJGVsOiBhcGkuYnV0dG9uIH0pO1xuICAgIGxldCBncm91cENvbnRleHQgPSB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCk7XG4gICAgbGV0IGNsb3NlT3RoZXJzID0gZ3JvdXBDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBncm91cENvbnRleHQuY2xvc2VPdGhlcnM7XG4gICAgbGV0IHBhbmVsQ29udGV4dCA9IHVzZVBvcG92ZXJQYW5lbENvbnRleHQoKTtcbiAgICBsZXQgaXNXaXRoaW5QYW5lbCA9IHBhbmVsQ29udGV4dCA9PT0gbnVsbCA/IGZhbHNlIDogcGFuZWxDb250ZXh0ID09PSBhcGkucGFuZWxJZDtcbiAgICBsZXQgZWxlbWVudFJlZiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgc2VudGluZWxJZCA9IGBoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLSR7dXNlSWQoKX1gO1xuICAgIGlmICghaXNXaXRoaW5QYW5lbCkge1xuICAgICAgKDAsIGltcG9ydF92dWUyMS53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgICBhcGkuYnV0dG9uLnZhbHVlID0gZWxlbWVudFJlZi52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGVsZW1lbnRSZWYpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgKF9iID0gKF9hID0gZXZlbnQudGFyZ2V0KS5jbGljaykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgICAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgKF9jID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2MuZm9jdXMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgICAgIGNsb3NlT3RoZXJzID09IG51bGwgPyB2b2lkIDAgOiBjbG9zZU90aGVycyhhcGkuYnV0dG9uSWQpO1xuICAgICAgICAgICAgYXBpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgICByZXR1cm4gY2xvc2VPdGhlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGNsb3NlT3RoZXJzKGFwaS5idXR0b25JZCk7XG4gICAgICAgICAgICBpZiAoIWRvbShhcGkuYnV0dG9uKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCgoX2QgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2QuYWN0aXZlRWxlbWVudCkgJiYgISgoX2UgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfZS5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIiBcIiAvKiBTcGFjZSAqLykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpIHtcbiAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICBjbG9zZU90aGVycyA9PSBudWxsID8gdm9pZCAwIDogY2xvc2VPdGhlcnMoYXBpLmJ1dHRvbklkKTtcbiAgICAgICAgYXBpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICAgICAgKF9iID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgdmlzaWJsZSA9IGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiB2aXNpYmxlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSBpc1dpdGhpblBhbmVsID8ge1xuICAgICAgICByZWY6IGVsZW1lbnRSZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH0gOiB7XG4gICAgICAgIHJlZjogZWxlbWVudFJlZixcbiAgICAgICAgaWQ6IGFwaS5idXR0b25JZCxcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLmRpc2FibGVkID8gdm9pZCAwIDogYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogZG9tKGFwaS5wYW5lbCkgPyBhcGkucGFuZWxJZCA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uTW91c2Vkb3duOiBoYW5kbGVNb3VzZURvd25cbiAgICAgIH07XG4gICAgICBsZXQgZGlyZWN0aW9uID0gdXNlVGFiRGlyZWN0aW9uKCk7XG4gICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgICAgbGV0IGVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICAgIGlmICghZWwpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDEgLyogRmlyc3QgKi8pLFxuICAgICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgOCAvKiBMYXN0ICovKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIG1pY3JvVGFzayhydW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyMS5oKShpbXBvcnRfdnVlMjEuRnJhZ21lbnQsIFtcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi5wcm9wcyB9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgbmFtZTogXCJQb3BvdmVyQnV0dG9uXCJcbiAgICAgICAgfSksXG4gICAgICAgIHZpc2libGUgJiYgIWlzV2l0aGluUGFuZWwgJiYgYXBpLmlzUG9ydGFsbGVkLnZhbHVlICYmICgwLCBpbXBvcnRfdnVlMjEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgaWQ6IHNlbnRpbmVsSWQsXG4gICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXNcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcG92ZXJPdmVybGF5ID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyT3ZlcmxheVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VQb3BvdmVyQ29udGV4dChcIlBvcG92ZXJPdmVybGF5XCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1wb3BvdmVyLW92ZXJsYXktJHt1c2VJZCgpfWA7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyT3ZlcmxheVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3BvdmVyUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBmb2N1czogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgeyBmb2N1cyB9ID0gcHJvcHM7XG4gICAgbGV0IGFwaSA9IHVzZVBvcG92ZXJDb250ZXh0KFwiUG9wb3ZlclBhbmVsXCIpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChhcGkucGFuZWwpKTtcbiAgICBsZXQgYmVmb3JlUGFuZWxTZW50aW5lbElkID0gYGhlYWRsZXNzdWktZm9jdXMtc2VudGluZWwtYmVmb3JlLSR7dXNlSWQoKX1gO1xuICAgIGxldCBhZnRlclBhbmVsU2VudGluZWxJZCA9IGBoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLWFmdGVyLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkucGFuZWwsICRlbDogYXBpLnBhbmVsIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjEucHJvdmlkZSkoUG9wb3ZlclBhbmVsQ29udGV4dCwgYXBpLnBhbmVsSWQpO1xuICAgICgwLCBpbXBvcnRfdnVlMjEud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIWZvY3VzKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFwaS5wYW5lbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGFjdGl2ZUVsZW1lbnQgPSAoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudDtcbiAgICAgIGlmICgoX2IgPSBkb20oYXBpLnBhbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBmb2N1c0luKGRvbShhcGkucGFuZWwpLCAxIC8qIEZpcnN0ICovKTtcbiAgICB9KTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKCFkb20oYXBpLnBhbmVsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAob3duZXJEb2N1bWVudC52YWx1ZSAmJiAhKChfYSA9IGRvbShhcGkucGFuZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgKF9iID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgIGxldCBlbCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWRvbShhcGkucGFuZWwpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoKF9hID0gZG9tKGFwaS5wYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhlbCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgIGlmICgoKF9jID0gKF9iID0gZG9tKGFwaS5iZWZvcmVQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKSA9PSBudWxsID8gdm9pZCAwIDogX2MuY2FsbChfYiwgZWwpKSB8fCAoKF9lID0gKF9kID0gZG9tKGFwaS5hZnRlclBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2QuY29udGFpbnMpID09IG51bGwgPyB2b2lkIDAgOiBfZS5jYWxsKF9kLCBlbCkpKSB7XG4gICAgICAgIGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGRpcmVjdGlvbiA9IHVzZVRhYkRpcmVjdGlvbigpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUJlZm9yZUZvY3VzKCkge1xuICAgICAgbGV0IGVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4ge1xuICAgICAgICAgICAgZm9jdXNJbihlbCwgNCAvKiBOZXh0ICovKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1pY3JvVGFzayhydW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUFmdGVyRm9jdXMoKSB7XG4gICAgICBsZXQgZWwgPSBkb20oYXBpLnBhbmVsKTtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgICAgIGxldCBwYW5lbCA9IGRvbShhcGkucGFuZWwpO1xuICAgICAgICAgICAgaWYgKCFidXR0b24pXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBlbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICBsZXQgaWR4ID0gZWxlbWVudHMuaW5kZXhPZihidXR0b24pO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGVsZW1lbnRzLnNsaWNlKDAsIGlkeCArIDEpO1xuICAgICAgICAgICAgbGV0IGFmdGVyID0gZWxlbWVudHMuc2xpY2UoaWR4ICsgMSk7XG4gICAgICAgICAgICBsZXQgY29tYmluZWQgPSBbLi4uYWZ0ZXIsIC4uLmJlZm9yZV07XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGNvbWJpbmVkLnNsaWNlKCkpIHtcbiAgICAgICAgICAgICAgaWYgKCgoX2IgPSAoX2EgPSBlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50LmlkKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RhcnRzV2l0aCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIFwiaGVhZGxlc3N1aS1mb2N1cy1zZW50aW5lbC1cIikpIHx8IChwYW5lbCA9PSBudWxsID8gdm9pZCAwIDogcGFuZWwuY29udGFpbnMoZWxlbWVudCkpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkeDIgPSBjb21iaW5lZC5pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpZHgyICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgIGNvbWJpbmVkLnNwbGljZShpZHgyLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9jdXNJbihjb21iaW5lZCwgMSAvKiBGaXJzdCAqLywgZmFsc2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMiAvKiBQcmV2aW91cyAqLylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWljcm9UYXNrKHJ1bik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBydW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGNsb3NlOiBhcGkuY2xvc2VcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogYXBpLnBhbmVsLFxuICAgICAgICBpZDogYXBpLnBhbmVsSWQsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25Gb2N1c291dDogZm9jdXMgJiYgYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovID8gaGFuZGxlQmx1ciA6IHZvaWQgMCxcbiAgICAgICAgdGFiSW5kZXg6IC0xXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi5wcm9wcyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgc2xvdHM6IHtcbiAgICAgICAgICAuLi5zbG90cyxcbiAgICAgICAgICBkZWZhdWx0OiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgKDAsIGltcG9ydF92dWUyMS5oKShpbXBvcnRfdnVlMjEuRnJhZ21lbnQsIFtcbiAgICAgICAgICAgICAgICB2aXNpYmxlLnZhbHVlICYmIGFwaS5pc1BvcnRhbGxlZC52YWx1ZSAmJiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKEhpZGRlbiwge1xuICAgICAgICAgICAgICAgICAgaWQ6IGJlZm9yZVBhbmVsU2VudGluZWxJZCxcbiAgICAgICAgICAgICAgICAgIHJlZjogYXBpLmJlZm9yZVBhbmVsU2VudGluZWwsXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi8sXG4gICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVCZWZvcmVGb2N1c1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIChfYSA9IHNsb3RzLmRlZmF1bHQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKHNsb3RzLCAuLi5hcmdzKSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlLnZhbHVlICYmIGFwaS5pc1BvcnRhbGxlZC52YWx1ZSAmJiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKEhpZGRlbiwge1xuICAgICAgICAgICAgICAgICAgaWQ6IGFmdGVyUGFuZWxTZW50aW5lbElkLFxuICAgICAgICAgICAgICAgICAgcmVmOiBhcGkuYWZ0ZXJQYW5lbFNlbnRpbmVsLFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgb25Gb2N1czogaGFuZGxlQWZ0ZXJGb2N1c1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3Zlckdyb3VwID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyR3JvdXBcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBncm91cFJlZiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgcG9wb3ZlcnMgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikoW10pO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChncm91cFJlZikpO1xuICAgIGV4cG9zZSh7IGVsOiBncm91cFJlZiwgJGVsOiBncm91cFJlZiB9KTtcbiAgICBmdW5jdGlvbiB1bnJlZ2lzdGVyUG9wb3ZlcihyZWdpc3RlckJhZykge1xuICAgICAgbGV0IGlkeCA9IHBvcG92ZXJzLnZhbHVlLmluZGV4T2YocmVnaXN0ZXJCYWcpO1xuICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgIHBvcG92ZXJzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpIHtcbiAgICAgIHBvcG92ZXJzLnZhbHVlLnB1c2gocmVnaXN0ZXJCYWcpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdW5yZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpO1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCgpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGxldCBvd25lciA9IG93bmVyRG9jdW1lbnQudmFsdWU7XG4gICAgICBpZiAoIW93bmVyKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgZWxlbWVudCA9IG93bmVyLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoKF9hID0gZG9tKGdyb3VwUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKGVsZW1lbnQpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIHJldHVybiBwb3BvdmVycy52YWx1ZS5zb21lKChiYWcpID0+IHtcbiAgICAgICAgdmFyIF9hMiwgX2I7XG4gICAgICAgIHJldHVybiAoKF9hMiA9IG93bmVyLmdldEVsZW1lbnRCeUlkKGJhZy5idXR0b25JZCkpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY29udGFpbnMoZWxlbWVudCkpIHx8ICgoX2IgPSBvd25lci5nZXRFbGVtZW50QnlJZChiYWcucGFuZWxJZCkpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyhlbGVtZW50KSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xvc2VPdGhlcnMoYnV0dG9uSWQpIHtcbiAgICAgIGZvciAobGV0IHBvcG92ZXIgb2YgcG9wb3ZlcnMudmFsdWUpIHtcbiAgICAgICAgaWYgKHBvcG92ZXIuYnV0dG9uSWQgIT09IGJ1dHRvbklkKVxuICAgICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKDAsIGltcG9ydF92dWUyMS5wcm92aWRlKShQb3BvdmVyR3JvdXBDb250ZXh0LCB7XG4gICAgICByZWdpc3RlclBvcG92ZXIsXG4gICAgICB1bnJlZ2lzdGVyUG9wb3ZlcixcbiAgICAgIGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAsXG4gICAgICBjbG9zZU90aGVyc1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IHJlZjogZ3JvdXBSZWYgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUG9wb3Zlckdyb3VwXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC50c1xudmFyIGltcG9ydF92dWUyMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9jb21wb25lbnRzL2xhYmVsL2xhYmVsLnRzXG52YXIgaW1wb3J0X3Z1ZTIyID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMYWJlbENvbnRleHQgPSBTeW1ib2woXCJMYWJlbENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VMYWJlbENvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMi5pbmplY3QpKExhYmVsQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihcIllvdSB1c2VkIGEgPExhYmVsIC8+IGNvbXBvbmVudCwgYnV0IGl0IGlzIG5vdCBpbnNpZGUgYSBwYXJlbnQuXCIpO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlTGFiZWxDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VMYWJlbHMoe1xuICBzbG90ID0ge30sXG4gIG5hbWUgPSBcIkxhYmVsXCIsXG4gIHByb3BzID0ge31cbn0gPSB7fSkge1xuICBsZXQgbGFiZWxJZHMgPSAoMCwgaW1wb3J0X3Z1ZTIyLnJlZikoW10pO1xuICBmdW5jdGlvbiByZWdpc3Rlcih2YWx1ZSkge1xuICAgIGxhYmVsSWRzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgaWR4ID0gbGFiZWxJZHMudmFsdWUuaW5kZXhPZih2YWx1ZSk7XG4gICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGFiZWxJZHMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgfTtcbiAgfVxuICAoMCwgaW1wb3J0X3Z1ZTIyLnByb3ZpZGUpKExhYmVsQ29udGV4dCwgeyByZWdpc3Rlciwgc2xvdCwgbmFtZSwgcHJvcHMgfSk7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIyLmNvbXB1dGVkKSgoKSA9PiBsYWJlbElkcy52YWx1ZS5sZW5ndGggPiAwID8gbGFiZWxJZHMudmFsdWUuam9pbihcIiBcIikgOiB2b2lkIDApO1xufVxudmFyIExhYmVsID0gKDAsIGltcG9ydF92dWUyMi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMYWJlbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGFiZWxcIiB9LFxuICAgIHBhc3NpdmU6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKG15UHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgY29udGV4dCA9IHVzZUxhYmVsQ29udGV4dCgpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIyLm9uTW91bnRlZCkoKCkgPT4gKDAsIGltcG9ydF92dWUyMi5vblVubW91bnRlZCkoY29udGV4dC5yZWdpc3RlcihpZDIpKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUgPSBcIkxhYmVsXCIsIHNsb3QgPSB7fSwgcHJvcHMgPSB7fSB9ID0gY29udGV4dDtcbiAgICAgIGxldCB7IHBhc3NpdmUsIC4uLnRoZWlyUHJvcHMgfSA9IG15UHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogKDAsIGltcG9ydF92dWUyMi51bnJlZikodmFsdWUpIH0pLCB7fSksXG4gICAgICAgIGlkOiBpZDJcbiAgICAgIH07XG4gICAgICBpZiAocGFzc2l2ZSkge1xuICAgICAgICBkZWxldGUgb3VyUHJvcHNbXCJvbkNsaWNrXCJdO1xuICAgICAgICBkZWxldGUgdGhlaXJQcm9wc1tcIm9uQ2xpY2tcIl07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLnRzXG52YXIgUmFkaW9Hcm91cENvbnRleHQgPSBTeW1ib2woXCJSYWRpb0dyb3VwQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVJhZGlvR3JvdXBDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjMuaW5qZWN0KShSYWRpb0dyb3VwQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxSYWRpb0dyb3VwIC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZVJhZGlvR3JvdXBDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgUmFkaW9Hcm91cCA9ICgwLCBpbXBvcnRfdnVlMjMuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUmFkaW9Hcm91cFwiLFxuICBlbWl0czogeyBcInVwZGF0ZTptb2RlbFZhbHVlXCI6IChfdmFsdWUpID0+IHRydWUgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCByYWRpb0dyb3VwUmVmID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKFtdKTtcbiAgICBsZXQgbGFiZWxsZWRieSA9IHVzZUxhYmVscyh7IG5hbWU6IFwiUmFkaW9Hcm91cExhYmVsXCIgfSk7XG4gICAgbGV0IGRlc2NyaWJlZGJ5ID0gdXNlRGVzY3JpcHRpb25zKHsgbmFtZTogXCJSYWRpb0dyb3VwRGVzY3JpcHRpb25cIiB9KTtcbiAgICBleHBvc2UoeyBlbDogcmFkaW9Hcm91cFJlZiwgJGVsOiByYWRpb0dyb3VwUmVmIH0pO1xuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBvcHRpb25zLFxuICAgICAgdmFsdWUsXG4gICAgICBkaXNhYmxlZDogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgZmlyc3RPcHRpb246ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb24ucHJvcHNSZWYuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKSxcbiAgICAgIGNvbnRhaW5zQ2hlY2tlZE9wdGlvbjogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gb3B0aW9ucy52YWx1ZS5zb21lKChvcHRpb24pID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG9wdGlvbi5wcm9wc1JlZi52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKHByb3BzLm1vZGVsVmFsdWUpKSkpLFxuICAgICAgY29tcGFyZShhLCB6KSB7XG4gICAgICAgIHJldHVybiBhID09PSB6O1xuICAgICAgfSxcbiAgICAgIGNoYW5nZShuZXh0VmFsdWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUyMy50b1JhdykodmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShuZXh0VmFsdWUpKSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuZXh0T3B0aW9uID0gKF9hID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG9wdGlvbi5wcm9wc1JlZi52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG5leHRWYWx1ZSkpKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnByb3BzUmVmO1xuICAgICAgICBpZiAobmV4dE9wdGlvbiA9PSBudWxsID8gdm9pZCAwIDogbmV4dE9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXh0VmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlck9wdGlvbihhY3Rpb24pIHtcbiAgICAgICAgb3B0aW9ucy52YWx1ZS5wdXNoKGFjdGlvbik7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBzb3J0QnlEb21Ob2RlKG9wdGlvbnMudmFsdWUsIChvcHRpb24pID0+IG9wdGlvbi5lbGVtZW50KTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyT3B0aW9uKGlkMykge1xuICAgICAgICBsZXQgaWR4ID0gb3B0aW9ucy52YWx1ZS5maW5kSW5kZXgoKHJhZGlvKSA9PiByYWRpby5pZCA9PT0gaWQzKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBvcHRpb25zLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyMy5wcm92aWRlKShSYWRpb0dyb3VwQ29udGV4dCwgYXBpKTtcbiAgICB1c2VUcmVlV2Fsa2VyKHtcbiAgICAgIGNvbnRhaW5lcjogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gZG9tKHJhZGlvR3JvdXBSZWYpKSxcbiAgICAgIGFjY2VwdChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcInJvbGVcIikgPT09IFwicmFkaW9cIilcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgICAgICBpZiAobm9kZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgfSxcbiAgICAgIHdhbGsobm9kZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIGlmICghcmFkaW9Hcm91cFJlZi52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFyYWRpb0dyb3VwUmVmLnZhbHVlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBhbGwgPSBvcHRpb25zLnZhbHVlLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ucHJvcHNSZWYuZGlzYWJsZWQgPT09IGZhbHNlKS5tYXAoKHJhZGlvKSA9PiByYWRpby5lbGVtZW50KTtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGF0dGVtcHRTdWJtaXQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd0xlZnRcIiAvKiBBcnJvd0xlZnQgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gZm9jdXNJbihhbGwsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IDIgLyogU3VjY2VzcyAqLykge1xuICAgICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5lbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChyYWRpb0dyb3VwUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbilcbiAgICAgICAgICAgICAgICBhcGkuY2hhbmdlKGFjdGl2ZU9wdGlvbi5wcm9wc1JlZi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dSaWdodFwiIC8qIEFycm93UmlnaHQgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGZvY3VzSW4oYWxsLCA0IC8qIE5leHQgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IDIgLyogU3VjY2VzcyAqLykge1xuICAgICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5lbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChvcHRpb24uZWxlbWVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVPcHRpb24pXG4gICAgICAgICAgICAgICAgYXBpLmNoYW5nZShhY3RpdmVPcHRpb24ucHJvcHNSZWYudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmVsZW1lbnQgPT09ICgoX2EgPSBnZXRPd25lckRvY3VtZW50KG9wdGlvbi5lbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKVxuICAgICAgICAgICAgICBhcGkuY2hhbmdlKGFjdGl2ZU9wdGlvbi5wcm9wc1JlZi52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktcmFkaW9ncm91cC0ke3VzZUlkKCl9YDtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbW9kZWxWYWx1ZSwgZGlzYWJsZWQsIG5hbWUsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IHJhZGlvR3JvdXBSZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJvbGU6IFwicmFkaW9ncm91cFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBsYWJlbGxlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogZGVzY3JpYmVkYnkudmFsdWUsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93blxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIzLmgpKGltcG9ydF92dWUyMy5GcmFnbWVudCwgW1xuICAgICAgICAuLi5uYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gb2JqZWN0VG9Gb3JtRW50cmllcyh7IFtuYW1lXTogbW9kZWxWYWx1ZSB9KS5tYXAoKFtuYW1lMiwgdmFsdWUyXSkgPT4gKDAsIGltcG9ydF92dWUyMy5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiUmFkaW9Hcm91cFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBSYWRpb0dyb3VwT3B0aW9uID0gKDAsIGltcG9ydF92dWUyMy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJSYWRpb0dyb3VwT3B0aW9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VSYWRpb0dyb3VwQ29udGV4dChcIlJhZGlvR3JvdXBPcHRpb25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXJhZGlvZ3JvdXAtb3B0aW9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBsYWJlbGxlZGJ5ID0gdXNlTGFiZWxzKHsgbmFtZTogXCJSYWRpb0dyb3VwTGFiZWxcIiB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoeyBuYW1lOiBcIlJhZGlvR3JvdXBEZXNjcmlwdGlvblwiIH0pO1xuICAgIGxldCBvcHRpb25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTIzLnJlZikobnVsbCk7XG4gICAgbGV0IHByb3BzUmVmID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gKHsgdmFsdWU6IHByb3BzLnZhbHVlLCBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgfSkpO1xuICAgIGxldCBzdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjMucmVmKSgxIC8qIEVtcHR5ICovKTtcbiAgICBleHBvc2UoeyBlbDogb3B0aW9uUmVmLCAkZWw6IG9wdGlvblJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIzLm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyT3B0aW9uKHsgaWQ6IGlkMiwgZWxlbWVudDogb3B0aW9uUmVmLCBwcm9wc1JlZiB9KSk7XG4gICAgKDAsIGltcG9ydF92dWUyMy5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJPcHRpb24oaWQyKSk7XG4gICAgbGV0IGlzRmlyc3RPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4gKChfYSA9IGFwaS5maXJzdE9wdGlvbi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkKSA9PT0gaWQyO1xuICAgIH0pO1xuICAgIGxldCBkaXNhYmxlZCA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IGFwaS5kaXNhYmxlZC52YWx1ZSB8fCBwcm9wcy5kaXNhYmxlZCk7XG4gICAgbGV0IGNoZWNrZWQgPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShwcm9wcy52YWx1ZSkpKTtcbiAgICBsZXQgdGFiSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmIChjaGVja2VkLnZhbHVlKVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIGlmICghYXBpLmNvbnRhaW5zQ2hlY2tlZE9wdGlvbi52YWx1ZSAmJiBpc0ZpcnN0T3B0aW9uLnZhbHVlKVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmICghYXBpLmNoYW5nZShwcm9wcy52YWx1ZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHN0YXRlLnZhbHVlIHw9IDIgLyogQWN0aXZlICovO1xuICAgICAgKF9hID0gb3B0aW9uUmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBzdGF0ZS52YWx1ZSB8PSAyIC8qIEFjdGl2ZSAqLztcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQmx1cigpIHtcbiAgICAgIHN0YXRlLnZhbHVlICY9IH4yIC8qIEFjdGl2ZSAqLztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB0aGVpclByb3BzID0gb21pdChwcm9wcywgW1widmFsdWVcIiwgXCJkaXNhYmxlZFwiXSk7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZC52YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLnZhbHVlLFxuICAgICAgICBhY3RpdmU6IEJvb2xlYW4oc3RhdGUudmFsdWUgJiAyIC8qIEFjdGl2ZSAqLylcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogb3B0aW9uUmVmLFxuICAgICAgICByb2xlOiBcInJhZGlvXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQudmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogbGFiZWxsZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGRlc2NyaWJlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQudmFsdWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgudmFsdWUsXG4gICAgICAgIG9uQ2xpY2s6IGRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogaGFuZGxlRm9jdXMsXG4gICAgICAgIG9uQmx1cjogZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBoYW5kbGVCbHVyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUmFkaW9Hcm91cE9wdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBSYWRpb0dyb3VwTGFiZWwgPSBMYWJlbDtcbnZhciBSYWRpb0dyb3VwRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbjtcblxuLy8gc3JjL2NvbXBvbmVudHMvc3dpdGNoL3N3aXRjaC50c1xudmFyIGltcG9ydF92dWUyNCA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiR3JvdXBDb250ZXh0XCIpO1xudmFyIFN3aXRjaEdyb3VwID0gKDAsIGltcG9ydF92dWUyNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJTd2l0Y2hHcm91cFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IHN3aXRjaFJlZiA9ICgwLCBpbXBvcnRfdnVlMjQucmVmKShudWxsKTtcbiAgICBsZXQgbGFiZWxsZWRieSA9IHVzZUxhYmVscyh7XG4gICAgICBuYW1lOiBcIlN3aXRjaExhYmVsXCIsXG4gICAgICBwcm9wczoge1xuICAgICAgICBvbkNsaWNrKCkge1xuICAgICAgICAgIGlmICghc3dpdGNoUmVmLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIHN3aXRjaFJlZi52YWx1ZS5jbGljaygpO1xuICAgICAgICAgIHN3aXRjaFJlZi52YWx1ZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoeyBuYW1lOiBcIlN3aXRjaERlc2NyaXB0aW9uXCIgfSk7XG4gICAgbGV0IGFwaSA9IHsgc3dpdGNoUmVmLCBsYWJlbGxlZGJ5LCBkZXNjcmliZWRieSB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjQucHJvdmlkZSkoR3JvdXBDb250ZXh0LCBhcGkpO1xuICAgIHJldHVybiAoKSA9PiByZW5kZXIoeyB0aGVpclByb3BzOiBwcm9wcywgb3VyUHJvcHM6IHt9LCBzbG90OiB7fSwgc2xvdHMsIGF0dHJzLCBuYW1lOiBcIlN3aXRjaEdyb3VwXCIgfSk7XG4gIH1cbn0pO1xudmFyIFN3aXRjaCA9ICgwLCBpbXBvcnRfdnVlMjQuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiU3dpdGNoXCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgdmFsdWU6IHsgdHlwZTogU3RyaW5nLCBvcHRpb25hbDogdHJ1ZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gKDAsIGltcG9ydF92dWUyNC5pbmplY3QpKEdyb3VwQ29udGV4dCwgbnVsbCk7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXN3aXRjaC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgIXByb3BzLm1vZGVsVmFsdWUpO1xuICAgIH1cbiAgICBsZXQgaW50ZXJuYWxTd2l0Y2hSZWYgPSAoMCwgaW1wb3J0X3Z1ZTI0LnJlZikobnVsbCk7XG4gICAgbGV0IHN3aXRjaFJlZiA9IGFwaSA9PT0gbnVsbCA/IGludGVybmFsU3dpdGNoUmVmIDogYXBpLnN3aXRjaFJlZjtcbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjQuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIHN3aXRjaFJlZik7XG4gICAgZXhwb3NlKHsgZWw6IHN3aXRjaFJlZiwgJGVsOiBzd2l0Y2hSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0b2dnbGUoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiIC8qIFNwYWNlICovKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIiAvKiBFbnRlciAqLykge1xuICAgICAgICBhdHRlbXB0U3VibWl0KGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlQcmVzcyhldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIHZhbHVlLCBtb2RlbFZhbHVlLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBjaGVja2VkOiBtb2RlbFZhbHVlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogc3dpdGNoUmVmLFxuICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogbW9kZWxWYWx1ZSxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXBpID09IG51bGwgPyB2b2lkIDAgOiBhcGkubGFiZWxsZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFwaSA9PSBudWxsID8gdm9pZCAwIDogYXBpLmRlc2NyaWJlZGJ5LnZhbHVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIG9uS2V5cHJlc3M6IGhhbmRsZUtleVByZXNzXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjQuaCkoaW1wb3J0X3Z1ZTI0LkZyYWdtZW50LCBbXG4gICAgICAgIG5hbWUgIT0gbnVsbCAmJiBtb2RlbFZhbHVlICE9IG51bGwgPyAoMCwgaW1wb3J0X3Z1ZTI0LmgpKEhpZGRlbiwgY29tcGFjdCh7XG4gICAgICAgICAgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBjaGVja2VkOiBtb2RlbFZhbHVlLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSkpIDogbnVsbCxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi50aGVpclByb3BzIH0sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBuYW1lOiBcIlN3aXRjaFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBTd2l0Y2hMYWJlbCA9IExhYmVsO1xudmFyIFN3aXRjaERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb247XG5cbi8vIHNyYy9jb21wb25lbnRzL3RhYnMvdGFicy50c1xudmFyIGltcG9ydF92dWUyNiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9pbnRlcm5hbC9mb2N1cy1zZW50aW5lbC50c1xudmFyIGltcG9ydF92dWUyNSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRm9jdXNTZW50aW5lbCA9ICgwLCBpbXBvcnRfdnVlMjUuZGVmaW5lQ29tcG9uZW50KSh7XG4gIHByb3BzOiB7XG4gICAgb25Gb2N1czoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICBsZXQgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlMjUucmVmKSh0cnVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI1LmgpKEhpZGRlbiwge1xuICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICBvbkZvY3VzKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBsZXQgZnJhbWU7XG4gICAgICAgICAgbGV0IHRyaWVzID0gNTA7XG4gICAgICAgICAgZnVuY3Rpb24gZm9yd2FyZEZvY3VzKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKHRyaWVzLS0gPD0gMCkge1xuICAgICAgICAgICAgICBpZiAoZnJhbWUpXG4gICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKF9hID0gcHJvcHMub25Gb2N1cykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwocHJvcHMpKSB7XG4gICAgICAgICAgICAgIGVuYWJsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmb3J3YXJkRm9jdXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmb3J3YXJkRm9jdXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvdGFicy90YWJzLnRzXG52YXIgVGFic0NvbnRleHQgPSBTeW1ib2woXCJUYWJzQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVRhYnNDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjYuaW5qZWN0KShUYWJzQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxUYWJHcm91cCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VUYWJzQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIFRhYkdyb3VwID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJHcm91cFwiLFxuICBlbWl0czoge1xuICAgIGNoYW5nZTogKF9pbmRleCkgPT4gdHJ1ZVxuICB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIHNlbGVjdGVkSW5kZXg6IHsgdHlwZTogW051bWJlcl0sIGRlZmF1bHQ6IG51bGwgfSxcbiAgICBkZWZhdWx0SW5kZXg6IHsgdHlwZTogW051bWJlcl0sIGRlZmF1bHQ6IDAgfSxcbiAgICB2ZXJ0aWNhbDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbWFudWFsOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGVtaXQgfSkge1xuICAgIGxldCBzZWxlY3RlZEluZGV4ID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKG51bGwpO1xuICAgIGxldCB0YWJzID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKFtdKTtcbiAgICBsZXQgcGFuZWxzID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKFtdKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgIG9yaWVudGF0aW9uOiAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy52ZXJ0aWNhbCA/IFwidmVydGljYWxcIiA6IFwiaG9yaXpvbnRhbFwiKSxcbiAgICAgIGFjdGl2YXRpb246ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1hbnVhbCA/IFwibWFudWFsXCIgOiBcImF1dG9cIiksXG4gICAgICB0YWJzLFxuICAgICAgcGFuZWxzLFxuICAgICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCkge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleC52YWx1ZSA9PT0gaW5kZXgpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZWxlY3RlZEluZGV4LnZhbHVlID0gaW5kZXg7XG4gICAgICAgIGVtaXQoXCJjaGFuZ2VcIiwgaW5kZXgpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgICBpZiAoIXRhYnMudmFsdWUuaW5jbHVkZXModGFiKSlcbiAgICAgICAgICB0YWJzLnZhbHVlLnB1c2godGFiKTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgICBsZXQgaWR4ID0gdGFicy52YWx1ZS5pbmRleE9mKHRhYik7XG4gICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgIHRhYnMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJQYW5lbChwYW5lbCkge1xuICAgICAgICBpZiAoIXBhbmVscy52YWx1ZS5pbmNsdWRlcyhwYW5lbCkpXG4gICAgICAgICAgcGFuZWxzLnZhbHVlLnB1c2gocGFuZWwpO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJQYW5lbChwYW5lbCkge1xuICAgICAgICBsZXQgaWR4ID0gcGFuZWxzLnZhbHVlLmluZGV4T2YocGFuZWwpO1xuICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICBwYW5lbHMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2LnByb3ZpZGUpKFRhYnNDb250ZXh0LCBhcGkpO1xuICAgICgwLCBpbXBvcnRfdnVlMjYud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChhcGkudGFicy52YWx1ZS5sZW5ndGggPD0gMClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgJiYgc2VsZWN0ZWRJbmRleC52YWx1ZSAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IHRhYnMyID0gYXBpLnRhYnMudmFsdWUubWFwKCh0YWIpID0+IGRvbSh0YWIpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBsZXQgZm9jdXNhYmxlVGFicyA9IHRhYnMyLmZpbHRlcigodGFiKSA9PiAhdGFiLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKTtcbiAgICAgIGxldCBpbmRleFRvU2V0ID0gKF9hID0gcHJvcHMuc2VsZWN0ZWRJbmRleCkgIT0gbnVsbCA/IF9hIDogcHJvcHMuZGVmYXVsdEluZGV4O1xuICAgICAgaWYgKGluZGV4VG9TZXQgPCAwKSB7XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKGZvY3VzYWJsZVRhYnNbMF0pO1xuICAgICAgfSBlbHNlIGlmIChpbmRleFRvU2V0ID4gYXBpLnRhYnMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKGZvY3VzYWJsZVRhYnNbZm9jdXNhYmxlVGFicy5sZW5ndGggLSAxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgYmVmb3JlID0gdGFiczIuc2xpY2UoMCwgaW5kZXhUb1NldCk7XG4gICAgICAgIGxldCBhZnRlciA9IHRhYnMyLnNsaWNlKGluZGV4VG9TZXQpO1xuICAgICAgICBsZXQgbmV4dCA9IFsuLi5hZnRlciwgLi4uYmVmb3JlXS5maW5kKCh0YWIpID0+IGZvY3VzYWJsZVRhYnMuaW5jbHVkZXModGFiKSk7XG4gICAgICAgIGlmICghbmV4dClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKG5leHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWRJbmRleDogc2VsZWN0ZWRJbmRleC52YWx1ZSB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjYuaCkoaW1wb3J0X3Z1ZTI2LkZyYWdtZW50LCBbXG4gICAgICAgIHRhYnMudmFsdWUubGVuZ3RoIDw9IDAgJiYgKDAsIGltcG9ydF92dWUyNi5oKShGb2N1c1NlbnRpbmVsLCB7XG4gICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgdGFiIG9mIHRhYnMudmFsdWUpIHtcbiAgICAgICAgICAgICAgbGV0IGVsID0gZG9tKHRhYik7XG4gICAgICAgICAgICAgIGlmICgoZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLnRhYkluZGV4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIHRoZWlyUHJvcHM6IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgLi4ub21pdChwcm9wcywgW1wic2VsZWN0ZWRJbmRleFwiLCBcImRlZmF1bHRJbmRleFwiLCBcIm1hbnVhbFwiLCBcInZlcnRpY2FsXCIsIFwib25DaGFuZ2VcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBuYW1lOiBcIlRhYkdyb3VwXCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFRhYkxpc3QgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYkxpc3RcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJMaXN0XCIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWRJbmRleDogYXBpLnNlbGVjdGVkSW5kZXgudmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBhcGkub3JpZW50YXRpb24udmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiVGFiTGlzdFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBUYWIgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYlwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VUYWJzQ29udGV4dChcIlRhYlwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktdGFicy10YWItJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsVGFiUmVmID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbFRhYlJlZiwgJGVsOiBpbnRlcm5hbFRhYlJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2Lm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyVGFiKGludGVybmFsVGFiUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJUYWIoaW50ZXJuYWxUYWJSZWYpKTtcbiAgICBsZXQgbXlJbmRleCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IGFwaS50YWJzLnZhbHVlLmluZGV4T2YoaW50ZXJuYWxUYWJSZWYpKTtcbiAgICBsZXQgc2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBteUluZGV4LnZhbHVlID09PSBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgbGV0IGxpc3QgPSBhcGkudGFicy52YWx1ZS5tYXAoKHRhYikgPT4gZG9tKHRhYikpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiIC8qIFNwYWNlICovIHx8IGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIC8qIEVudGVyICovKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBhcGkuc2V0U2VsZWN0ZWRJbmRleChteUluZGV4LnZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkhvbWVcIiAvKiBIb21lICovOlxuICAgICAgICBjYXNlIFwiUGFnZVVwXCIgLyogUGFnZVVwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgMSAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgOCAvKiBMYXN0ICovKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaChhcGkub3JpZW50YXRpb24udmFsdWUsIHtcbiAgICAgICAgdmVydGljYWwoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDQgLyogTmV4dCAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSxcbiAgICAgICAgaG9yaXpvbnRhbCgpIHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiIC8qIEFycm93TGVmdCAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIiAvKiBBcnJvd1JpZ2h0ICovKVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgNCAvKiBOZXh0ICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICAoX2EgPSBkb20oaW50ZXJuYWxUYWJSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU2VsZWN0aW9uKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICAoX2EgPSBkb20oaW50ZXJuYWxUYWJSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIGFwaS5zZXRTZWxlY3RlZEluZGV4KG15SW5kZXgudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgaW50ZXJuYWxUYWJSZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZC52YWx1ZSB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGludGVybmFsVGFiUmVmLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uRm9jdXM6IGFwaS5hY3RpdmF0aW9uLnZhbHVlID09PSBcIm1hbnVhbFwiID8gaGFuZGxlRm9jdXMgOiBoYW5kbGVTZWxlY3Rpb24sXG4gICAgICAgIG9uTW91c2Vkb3duOiBoYW5kbGVNb3VzZURvd24sXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZVNlbGVjdGlvbixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYiA9IChfYSA9IGFwaS5wYW5lbHMudmFsdWVbbXlJbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUsXG4gICAgICAgIHRhYkluZGV4OiBzZWxlY3RlZC52YWx1ZSA/IDAgOiAtMSxcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkID8gdHJ1ZSA6IHZvaWQgMFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJUYWJcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiUGFuZWxzID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJQYW5lbHNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJQYW5lbHNcIik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZEluZGV4OiBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJUYWJQYW5lbHNcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYlBhbmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJQYW5lbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktdGFicy1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxQYW5lbFJlZiA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxQYW5lbFJlZiwgJGVsOiBpbnRlcm5hbFBhbmVsUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjYub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJQYW5lbChpbnRlcm5hbFBhbmVsUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJQYW5lbChpbnRlcm5hbFBhbmVsUmVmKSk7XG4gICAgbGV0IG15SW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBhcGkucGFuZWxzLnZhbHVlLmluZGV4T2YoaW50ZXJuYWxQYW5lbFJlZikpO1xuICAgIGxldCBzZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IG15SW5kZXgudmFsdWUgPT09IGFwaS5zZWxlY3RlZEluZGV4LnZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBpbnRlcm5hbFBhbmVsUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfYiA9IChfYSA9IGFwaS50YWJzLnZhbHVlW215SW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgdGFiSW5kZXg6IHNlbGVjdGVkLnZhbHVlID8gMCA6IC0xXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMiAvKiBTdGF0aWMgKi8gfCAxIC8qIFJlbmRlclN0cmF0ZWd5ICovLFxuICAgICAgICB2aXNpYmxlOiBzZWxlY3RlZC52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJUYWJQYW5lbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi50c1xudmFyIGltcG9ydF92dWUyNyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9vbmNlLnRzXG5mdW5jdGlvbiBvbmNlKGNiKSB7XG4gIGxldCBzdGF0ZSA9IHsgY2FsbGVkOiBmYWxzZSB9O1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoc3RhdGUuY2FsbGVkKVxuICAgICAgcmV0dXJuO1xuICAgIHN0YXRlLmNhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIGNiKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vLyBzcmMvdXRpbHMvZGlzcG9zYWJsZXMudHNcbmZ1bmN0aW9uIGRpc3Bvc2FibGVzKCkge1xuICBsZXQgZGlzcG9zYWJsZXMyID0gW107XG4gIGxldCBxdWV1ZSA9IFtdO1xuICBsZXQgYXBpID0ge1xuICAgIGVucXVldWUoZm4pIHtcbiAgICAgIHF1ZXVlLnB1c2goZm4pO1xuICAgIH0sXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKC4uLmFyZ3MpIHtcbiAgICAgIGxldCByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoLi4uYXJncyk7XG4gICAgICBhcGkuYWRkKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZikpO1xuICAgIH0sXG4gICAgbmV4dEZyYW1lKC4uLmFyZ3MpIHtcbiAgICAgIGFwaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBhcGkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXRUaW1lb3V0KC4uLmFyZ3MpIHtcbiAgICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoLi4uYXJncyk7XG4gICAgICBhcGkuYWRkKCgpID0+IGNsZWFyVGltZW91dCh0aW1lcikpO1xuICAgIH0sXG4gICAgYWRkKGNiKSB7XG4gICAgICBkaXNwb3NhYmxlczIucHVzaChjYik7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgZm9yIChsZXQgZGlzcG9zZSBvZiBkaXNwb3NhYmxlczIuc3BsaWNlKDApKSB7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHdvcmtRdWV1ZSgpIHtcbiAgICAgIGZvciAobGV0IGhhbmRsZSBvZiBxdWV1ZS5zcGxpY2UoMCkpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICByZXR1cm4gYXBpO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy90cmFuc2l0aW9ucy91dGlscy90cmFuc2l0aW9uLnRzXG5mdW5jdGlvbiBhZGRDbGFzc2VzKG5vZGUsIC4uLmNsYXNzZXMpIHtcbiAgbm9kZSAmJiBjbGFzc2VzLmxlbmd0aCA+IDAgJiYgbm9kZS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi5jbGFzc2VzKSB7XG4gIG5vZGUgJiYgY2xhc3Nlcy5sZW5ndGggPiAwICYmIG5vZGUuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzKTtcbn1cbmZ1bmN0aW9uIHdhaXRGb3JUcmFuc2l0aW9uKG5vZGUsIGRvbmUpIHtcbiAgbGV0IGQgPSBkaXNwb3NhYmxlcygpO1xuICBpZiAoIW5vZGUpXG4gICAgcmV0dXJuIGQuZGlzcG9zZTtcbiAgbGV0IHsgdHJhbnNpdGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9uRGVsYXkgfSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gIGxldCBbZHVyYXRpb25NcywgZGVsYXlzTXNdID0gW3RyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5XS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgbGV0IFtyZXNvbHZlZFZhbHVlID0gMF0gPSB2YWx1ZS5zcGxpdChcIixcIikuZmlsdGVyKEJvb2xlYW4pLm1hcCgodikgPT4gdi5pbmNsdWRlcyhcIm1zXCIpID8gcGFyc2VGbG9hdCh2KSA6IHBhcnNlRmxvYXQodikgKiAxZTMpLnNvcnQoKGEsIHopID0+IHogLSBhKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRWYWx1ZTtcbiAgfSk7XG4gIGlmIChkdXJhdGlvbk1zICE9PSAwKSB7XG4gICAgZC5zZXRUaW1lb3V0KCgpID0+IGRvbmUoXCJmaW5pc2hlZFwiIC8qIEZpbmlzaGVkICovKSwgZHVyYXRpb25NcyArIGRlbGF5c01zKTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLyk7XG4gIH1cbiAgZC5hZGQoKCkgPT4gZG9uZShcImNhbmNlbGxlZFwiIC8qIENhbmNlbGxlZCAqLykpO1xuICByZXR1cm4gZC5kaXNwb3NlO1xufVxuZnVuY3Rpb24gdHJhbnNpdGlvbihub2RlLCBiYXNlLCBmcm9tLCB0bywgZW50ZXJlZCwgZG9uZSkge1xuICBsZXQgZCA9IGRpc3Bvc2FibGVzKCk7XG4gIGxldCBfZG9uZSA9IGRvbmUgIT09IHZvaWQgMCA/IG9uY2UoZG9uZSkgOiAoKSA9PiB7XG4gIH07XG4gIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uZW50ZXJlZCk7XG4gIGFkZENsYXNzZXMobm9kZSwgLi4uYmFzZSwgLi4uZnJvbSk7XG4gIGQubmV4dEZyYW1lKCgpID0+IHtcbiAgICByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLmZyb20pO1xuICAgIGFkZENsYXNzZXMobm9kZSwgLi4udG8pO1xuICAgIGQuYWRkKHdhaXRGb3JUcmFuc2l0aW9uKG5vZGUsIChyZWFzb24pID0+IHtcbiAgICAgIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4udG8sIC4uLmJhc2UpO1xuICAgICAgYWRkQ2xhc3Nlcyhub2RlLCAuLi5lbnRlcmVkKTtcbiAgICAgIHJldHVybiBfZG9uZShyZWFzb24pO1xuICAgIH0pKTtcbiAgfSk7XG4gIGQuYWRkKCgpID0+IHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uYmFzZSwgLi4uZnJvbSwgLi4udG8sIC4uLmVudGVyZWQpKTtcbiAgZC5hZGQoKCkgPT4gX2RvbmUoXCJjYW5jZWxsZWRcIiAvKiBDYW5jZWxsZWQgKi8pKTtcbiAgcmV0dXJuIGQuZGlzcG9zZTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi50c1xuZnVuY3Rpb24gc3BsaXRDbGFzc2VzKGNsYXNzZXMgPSBcIlwiKSB7XG4gIHJldHVybiBjbGFzc2VzLnNwbGl0KFwiIFwiKS5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gY2xhc3NOYW1lLnRyaW0oKS5sZW5ndGggPiAxKTtcbn1cbnZhciBUcmFuc2l0aW9uQ29udGV4dCA9IFN5bWJvbChcIlRyYW5zaXRpb25Db250ZXh0XCIpO1xuZnVuY3Rpb24gaGFzVHJhbnNpdGlvbkNvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI3LmluamVjdCkoVHJhbnNpdGlvbkNvbnRleHQsIG51bGwpICE9PSBudWxsO1xufVxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvbkNvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyNy5pbmplY3QpKFRyYW5zaXRpb25Db250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIDxUcmFuc2l0aW9uQ2hpbGQgLz4gaXMgdXNlZCBidXQgaXQgaXMgbWlzc2luZyBhIHBhcmVudCA8VHJhbnNpdGlvblJvb3QgLz4uXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlUGFyZW50TmVzdGluZygpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTI3LmluamVjdCkoTmVzdGluZ0NvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgPFRyYW5zaXRpb25DaGlsZCAvPiBpcyB1c2VkIGJ1dCBpdCBpcyBtaXNzaW5nIGEgcGFyZW50IDxUcmFuc2l0aW9uUm9vdCAvPi5cIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTmVzdGluZ0NvbnRleHQgPSBTeW1ib2woXCJOZXN0aW5nQ29udGV4dFwiKTtcbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKGJhZykge1xuICBpZiAoXCJjaGlsZHJlblwiIGluIGJhZylcbiAgICByZXR1cm4gaGFzQ2hpbGRyZW4oYmFnLmNoaWxkcmVuKTtcbiAgcmV0dXJuIGJhZy52YWx1ZS5maWx0ZXIoKHsgc3RhdGUgfSkgPT4gc3RhdGUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pLmxlbmd0aCA+IDA7XG59XG5mdW5jdGlvbiB1c2VOZXN0aW5nKGRvbmUpIHtcbiAgbGV0IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4gPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikoW10pO1xuICBsZXQgbW91bnRlZCA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShmYWxzZSk7XG4gICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiBtb3VudGVkLnZhbHVlID0gdHJ1ZSk7XG4gICgwLCBpbXBvcnRfdnVlMjcub25Vbm1vdW50ZWQpKCgpID0+IG1vdW50ZWQudmFsdWUgPSBmYWxzZSk7XG4gIGZ1bmN0aW9uIHVucmVnaXN0ZXIoY2hpbGRJZCwgc3RyYXRlZ3kgPSAxIC8qIEhpZGRlbiAqLykge1xuICAgIGxldCBpZHggPSB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLmZpbmRJbmRleCgoeyBpZDogaWQyIH0pID0+IGlkMiA9PT0gY2hpbGRJZCk7XG4gICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICByZXR1cm47XG4gICAgbWF0Y2goc3RyYXRlZ3ksIHtcbiAgICAgIFswIC8qIFVubW91bnQgKi9dKCkge1xuICAgICAgICB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfSxcbiAgICAgIFsxIC8qIEhpZGRlbiAqL10oKSB7XG4gICAgICAgIHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWVbaWR4XS5zdGF0ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghaGFzQ2hpbGRyZW4odHJhbnNpdGlvbmFibGVDaGlsZHJlbikgJiYgbW91bnRlZC52YWx1ZSkge1xuICAgICAgZG9uZSA9PSBudWxsID8gdm9pZCAwIDogZG9uZSgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZWdpc3RlcihjaGlsZElkKSB7XG4gICAgbGV0IGNoaWxkID0gdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZS5maW5kKCh7IGlkOiBpZDIgfSkgPT4gaWQyID09PSBjaGlsZElkKTtcbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLnB1c2goeyBpZDogY2hpbGRJZCwgc3RhdGU6IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8gfSk7XG4gICAgfSBlbHNlIGlmIChjaGlsZC5zdGF0ZSAhPT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykge1xuICAgICAgY2hpbGQuc3RhdGUgPSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4gdW5yZWdpc3RlcihjaGlsZElkLCAwIC8qIFVubW91bnQgKi8pO1xuICB9XG4gIHJldHVybiB7XG4gICAgY2hpbGRyZW46IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdW5yZWdpc3RlclxuICB9O1xufVxudmFyIFRyYW5zaXRpb25DaGlsZFJlbmRlckZlYXR1cmVzID0gMSAvKiBSZW5kZXJTdHJhdGVneSAqLztcbnZhciBUcmFuc2l0aW9uQ2hpbGQgPSAoMCwgaW1wb3J0X3Z1ZTI3LmRlZmluZUNvbXBvbmVudCkoe1xuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzaG93OiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogbnVsbCB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgYXBwZWFyOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBlbnRlcjogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlcmVkOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmU6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZUZyb206IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZVRvOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH1cbiAgfSxcbiAgZW1pdHM6IHtcbiAgICBiZWZvcmVFbnRlcjogKCkgPT4gdHJ1ZSxcbiAgICBhZnRlckVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGJlZm9yZUxlYXZlOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyTGVhdmU6ICgpID0+IHRydWVcbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGlmICghaGFzVHJhbnNpdGlvbkNvbnRleHQoKSAmJiBoYXNPcGVuQ2xvc2VkKCkpIHtcbiAgICAgIHJldHVybiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTI3LmgpKFRyYW5zaXRpb25Sb290LCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBvbkJlZm9yZUVudGVyOiAoKSA9PiBlbWl0KFwiYmVmb3JlRW50ZXJcIiksXG4gICAgICAgIG9uQWZ0ZXJFbnRlcjogKCkgPT4gZW1pdChcImFmdGVyRW50ZXJcIiksXG4gICAgICAgIG9uQmVmb3JlTGVhdmU6ICgpID0+IGVtaXQoXCJiZWZvcmVMZWF2ZVwiKSxcbiAgICAgICAgb25BZnRlckxlYXZlOiAoKSA9PiBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKVxuICAgICAgfSwgc2xvdHMpO1xuICAgIH1cbiAgICBsZXQgY29udGFpbmVyID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKG51bGwpO1xuICAgIGxldCBzdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShcInZpc2libGVcIiAvKiBWaXNpYmxlICovKTtcbiAgICBsZXQgc3RyYXRlZ3kgPSAoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy51bm1vdW50ID8gMCAvKiBVbm1vdW50ICovIDogMSAvKiBIaWRkZW4gKi8pO1xuICAgIGV4cG9zZSh7IGVsOiBjb250YWluZXIsICRlbDogY29udGFpbmVyIH0pO1xuICAgIGxldCB7IHNob3csIGFwcGVhciB9ID0gdXNlVHJhbnNpdGlvbkNvbnRleHQoKTtcbiAgICBsZXQgeyByZWdpc3RlciwgdW5yZWdpc3RlciB9ID0gdXNlUGFyZW50TmVzdGluZygpO1xuICAgIGxldCBpbml0aWFsID0geyB2YWx1ZTogdHJ1ZSB9O1xuICAgIGxldCBpZDIgPSB1c2VJZCgpO1xuICAgIGxldCBpc1RyYW5zaXRpb25pbmcgPSB7IHZhbHVlOiBmYWxzZSB9O1xuICAgIGxldCBuZXN0aW5nID0gdXNlTmVzdGluZygoKSA9PiB7XG4gICAgICBpZiAoIWlzVHJhbnNpdGlvbmluZy52YWx1ZSkge1xuICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICB1bnJlZ2lzdGVyKGlkMik7XG4gICAgICAgIGVtaXQoXCJhZnRlckxlYXZlXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICBsZXQgdW5yZWdpc3RlcjIgPSByZWdpc3RlcihpZDIpO1xuICAgICAgKDAsIGltcG9ydF92dWUyNy5vblVubW91bnRlZCkodW5yZWdpc3RlcjIpO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChzdHJhdGVneS52YWx1ZSAhPT0gMSAvKiBIaWRkZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghaWQyKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoc2hvdyAmJiBzdGF0ZS52YWx1ZSAhPT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykge1xuICAgICAgICBzdGF0ZS52YWx1ZSA9IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi87XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG1hdGNoKHN0YXRlLnZhbHVlLCB7XG4gICAgICAgIFtcImhpZGRlblwiIC8qIEhpZGRlbiAqL106ICgpID0+IHVucmVnaXN0ZXIoaWQyKSxcbiAgICAgICAgW1widmlzaWJsZVwiIC8qIFZpc2libGUgKi9dOiAoKSA9PiByZWdpc3RlcihpZDIpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBsZXQgZW50ZXJDbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmVudGVyKTtcbiAgICBsZXQgZW50ZXJGcm9tQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlckZyb20pO1xuICAgIGxldCBlbnRlclRvQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlclRvKTtcbiAgICBsZXQgZW50ZXJlZENsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMuZW50ZXJlZCk7XG4gICAgbGV0IGxlYXZlQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5sZWF2ZSk7XG4gICAgbGV0IGxlYXZlRnJvbUNsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMubGVhdmVGcm9tKTtcbiAgICBsZXQgbGVhdmVUb0NsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMubGVhdmVUbyk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnZhbHVlID09PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovKSB7XG4gICAgICAgICAgbGV0IGRvbUVsZW1lbnQgPSBkb20oY29udGFpbmVyKTtcbiAgICAgICAgICBsZXQgaXNFbXB0eURPTU5vZGUgPSBkb21FbGVtZW50IGluc3RhbmNlb2YgQ29tbWVudCAmJiBkb21FbGVtZW50LmRhdGEgPT09IFwiXCI7XG4gICAgICAgICAgaWYgKGlzRW1wdHlET01Ob2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEaWQgeW91IGZvcmdldCB0byBwYXNzdGhyb3VnaCB0aGUgYHJlZmAgdG8gdGhlIGFjdHVhbCBET00gbm9kZT9cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBleGVjdXRlVHJhbnNpdGlvbihvbkludmFsaWRhdGUpIHtcbiAgICAgIGxldCBza2lwID0gaW5pdGlhbC52YWx1ZSAmJiAhYXBwZWFyLnZhbHVlO1xuICAgICAgbGV0IG5vZGUgPSBkb20oY29udGFpbmVyKTtcbiAgICAgIGlmICghbm9kZSB8fCAhKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChza2lwKVxuICAgICAgICByZXR1cm47XG4gICAgICBpc1RyYW5zaXRpb25pbmcudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKHNob3cudmFsdWUpXG4gICAgICAgIGVtaXQoXCJiZWZvcmVFbnRlclwiKTtcbiAgICAgIGlmICghc2hvdy52YWx1ZSlcbiAgICAgICAgZW1pdChcImJlZm9yZUxlYXZlXCIpO1xuICAgICAgb25JbnZhbGlkYXRlKHNob3cudmFsdWUgPyB0cmFuc2l0aW9uKG5vZGUsIGVudGVyQ2xhc3NlcywgZW50ZXJGcm9tQ2xhc3NlcywgZW50ZXJUb0NsYXNzZXMsIGVudGVyZWRDbGFzc2VzLCAocmVhc29uKSA9PiB7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocmVhc29uID09PSBcImZpbmlzaGVkXCIgLyogRmluaXNoZWQgKi8pXG4gICAgICAgICAgZW1pdChcImFmdGVyRW50ZXJcIik7XG4gICAgICB9KSA6IHRyYW5zaXRpb24obm9kZSwgbGVhdmVDbGFzc2VzLCBsZWF2ZUZyb21DbGFzc2VzLCBsZWF2ZVRvQ2xhc3NlcywgZW50ZXJlZENsYXNzZXMsIChyZWFzb24pID0+IHtcbiAgICAgICAgaXNUcmFuc2l0aW9uaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChyZWFzb24gIT09IFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghaGFzQ2hpbGRyZW4obmVzdGluZykpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICAgIHVucmVnaXN0ZXIoaWQyKTtcbiAgICAgICAgICBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH1cbiAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUyNy53YXRjaCkoW3Nob3ddLCAoX29sZFZhbHVlcywgX25ld1ZhbHVlcywgb25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICAgIGV4ZWN1dGVUcmFuc2l0aW9uKG9uSW52YWxpZGF0ZSk7XG4gICAgICAgIGluaXRpYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcucHJvdmlkZSkoTmVzdGluZ0NvbnRleHQsIG5lc3RpbmcpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChzdGF0ZS52YWx1ZSwge1xuICAgICAgW1widmlzaWJsZVwiIC8qIFZpc2libGUgKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7XG4gICAgICAgIGFwcGVhcjogYXBwZWFyMixcbiAgICAgICAgc2hvdzogc2hvdzIsXG4gICAgICAgIGVudGVyLFxuICAgICAgICBlbnRlckZyb20sXG4gICAgICAgIGVudGVyVG8sXG4gICAgICAgIGVudGVyZWQsXG4gICAgICAgIGxlYXZlLFxuICAgICAgICBsZWF2ZUZyb20sXG4gICAgICAgIGxlYXZlVG8sXG4gICAgICAgIC4uLnJlc3RcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgcmVmOiBjb250YWluZXIgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcmVzdDtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgZmVhdHVyZXM6IFRyYW5zaXRpb25DaGlsZFJlbmRlckZlYXR1cmVzLFxuICAgICAgICB2aXNpYmxlOiBzdGF0ZS52YWx1ZSA9PT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyxcbiAgICAgICAgbmFtZTogXCJUcmFuc2l0aW9uQ2hpbGRcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgX1RyYW5zaXRpb25DaGlsZCA9IFRyYW5zaXRpb25DaGlsZDtcbnZhciBUcmFuc2l0aW9uUm9vdCA9ICgwLCBpbXBvcnRfdnVlMjcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHNob3c6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBudWxsIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBhcHBlYXI6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGVudGVyOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJGcm9tOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJUbzogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyZWQ6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfVxuICB9LFxuICBlbWl0czoge1xuICAgIGJlZm9yZUVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyRW50ZXI6ICgpID0+IHRydWUsXG4gICAgYmVmb3JlTGVhdmU6ICgpID0+IHRydWUsXG4gICAgYWZ0ZXJMZWF2ZTogKCkgPT4gdHJ1ZVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCBzaG93ID0gKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLnNob3cgPT09IG51bGwgJiYgdXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbWF0Y2godXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiB0cnVlLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLnNob3c7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKCFbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKHNob3cudmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQSA8VHJhbnNpdGlvbiAvPiBpcyB1c2VkIGJ1dCBpdCBpcyBtaXNzaW5nIGEgYDpzaG93PVwidHJ1ZSB8IGZhbHNlXCJgIHByb3AuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKHNob3cudmFsdWUgPyBcInZpc2libGVcIiAvKiBWaXNpYmxlICovIDogXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi8pO1xuICAgIGxldCBuZXN0aW5nQmFnID0gdXNlTmVzdGluZygoKSA9PiB7XG4gICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgIH0pO1xuICAgIGxldCBpbml0aWFsID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKHRydWUpO1xuICAgIGxldCB0cmFuc2l0aW9uQmFnID0ge1xuICAgICAgc2hvdyxcbiAgICAgIGFwcGVhcjogKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4gcHJvcHMuYXBwZWFyIHx8ICFpbml0aWFsLnZhbHVlKVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgaW5pdGlhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoc2hvdy52YWx1ZSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLztcbiAgICAgICAgfSBlbHNlIGlmICghaGFzQ2hpbGRyZW4obmVzdGluZ0JhZykpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LnByb3ZpZGUpKE5lc3RpbmdDb250ZXh0LCBuZXN0aW5nQmFnKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LnByb3ZpZGUpKFRyYW5zaXRpb25Db250ZXh0LCB0cmFuc2l0aW9uQmFnKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXG4gICAgICAgIFwic2hvd1wiLFxuICAgICAgICBcImFwcGVhclwiLFxuICAgICAgICBcInVubW91bnRcIixcbiAgICAgICAgXCJvbkJlZm9yZUVudGVyXCIsXG4gICAgICAgIFwib25CZWZvcmVMZWF2ZVwiLFxuICAgICAgICBcIm9uQWZ0ZXJFbnRlclwiLFxuICAgICAgICBcIm9uQWZ0ZXJMZWF2ZVwiXG4gICAgICBdKTtcbiAgICAgIGxldCBzaGFyZWRQcm9wcyA9IHsgdW5tb3VudDogcHJvcHMudW5tb3VudCB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzOiB7XG4gICAgICAgICAgLi4uc2hhcmVkUHJvcHMsXG4gICAgICAgICAgYXM6IFwidGVtcGxhdGVcIlxuICAgICAgICB9LFxuICAgICAgICB0aGVpclByb3BzOiB7fSxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc2xvdHMsXG4gICAgICAgICAgZGVmYXVsdDogKCkgPT4gW1xuICAgICAgICAgICAgKDAsIGltcG9ydF92dWUyNy5oKShfVHJhbnNpdGlvbkNoaWxkLCB7XG4gICAgICAgICAgICAgIG9uQmVmb3JlRW50ZXI6ICgpID0+IGVtaXQoXCJiZWZvcmVFbnRlclwiKSxcbiAgICAgICAgICAgICAgb25BZnRlckVudGVyOiAoKSA9PiBlbWl0KFwiYWZ0ZXJFbnRlclwiKSxcbiAgICAgICAgICAgICAgb25CZWZvcmVMZWF2ZTogKCkgPT4gZW1pdChcImJlZm9yZUxlYXZlXCIpLFxuICAgICAgICAgICAgICBvbkFmdGVyTGVhdmU6ICgpID0+IGVtaXQoXCJhZnRlckxlYXZlXCIpLFxuICAgICAgICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgICAgICAgLi4uc2hhcmVkUHJvcHMsXG4gICAgICAgICAgICAgIC4uLnRoZWlyUHJvcHNcbiAgICAgICAgICAgIH0sIHNsb3RzLmRlZmF1bHQpXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBhdHRyczoge30sXG4gICAgICAgIGZlYXR1cmVzOiBUcmFuc2l0aW9uQ2hpbGRSZW5kZXJGZWF0dXJlcyxcbiAgICAgICAgdmlzaWJsZTogc3RhdGUudmFsdWUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8sXG4gICAgICAgIG5hbWU6IFwiVHJhbnNpdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaGVhZGxlc3N1aS5wcm9kLmNqcycpXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaGVhZGxlc3N1aS5kZXYuY2pzJylcbn1cbiIsIihmdW5jdGlvbihlLGQpe3R5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPFwidVwiP21vZHVsZS5leHBvcnRzPWQocmVxdWlyZShcInZ1ZVwiKSxyZXF1aXJlKFwiZGF0ZS1mbnNcIikpOnR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZD9kZWZpbmUoW1widnVlXCIsXCJkYXRlLWZuc1wiXSxkKTooZT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOmV8fHNlbGYsZS5WdWVEYXRlUGlja2VyPWQoZS5WdWUsZS5kYXRlRm5zKSl9KSh0aGlzLGZ1bmN0aW9uKGUsZCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gR2UoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjkuMzMzIDhjMC0yLjIwOC0xLjc5Mi00LTQtNGgtMTguNjY3Yy0yLjIwOCAwLTQgMS43OTItNCA0djE4LjY2N2MwIDIuMjA4IDEuNzkyIDQgNCA0aDE4LjY2N2MyLjIwOCAwIDQtMS43OTIgNC00di0xOC42Njd6TTI2LjY2NyA4djE4LjY2N2MwIDAuNzM2LTAuNTk3IDEuMzMzLTEuMzMzIDEuMzMzIDAgMC0xOC42NjcgMC0xOC42NjcgMC0wLjczNiAwLTEuMzMzLTAuNTk3LTEuMzMzLTEuMzMzIDAgMCAwLTE4LjY2NyAwLTE4LjY2NyAwLTAuNzM2IDAuNTk3LTEuMzMzIDEuMzMzLTEuMzMzIDAgMCAxOC42NjcgMCAxOC42NjcgMCAwLjczNiAwIDEuMzMzIDAuNTk3IDEuMzMzIDEuMzMzelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjAgMi42Njd2NS4zMzNjMCAwLjczNiAwLjU5NyAxLjMzMyAxLjMzMyAxLjMzM3MxLjMzMy0wLjU5NyAxLjMzMy0xLjMzM3YtNS4zMzNjMC0wLjczNi0wLjU5Ny0xLjMzMy0xLjMzMy0xLjMzM3MtMS4zMzMgMC41OTctMS4zMzMgMS4zMzN6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk05LjMzMyAyLjY2N3Y1LjMzM2MwIDAuNzM2IDAuNTk3IDEuMzMzIDEuMzMzIDEuMzMzczEuMzMzLTAuNTk3IDEuMzMzLTEuMzMzdi01LjMzM2MwLTAuNzM2LTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzcy0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3pcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTQgMTQuNjY3aDI0YzAuNzM2IDAgMS4zMzMtMC41OTcgMS4zMzMtMS4zMzNzLTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzaC0yNGMtMC43MzYgMC0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3MwLjU5NyAxLjMzMyAxLjMzMyAxLjMzM3pcIn0pXSl9ZnVuY3Rpb24gbm4oKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjMuMDU3IDcuMDU3bC0xNiAxNmMtMC41MiAwLjUyLTAuNTIgMS4zNjUgMCAxLjg4NXMxLjM2NSAwLjUyIDEuODg1IDBsMTYtMTZjMC41Mi0wLjUyIDAuNTItMS4zNjUgMC0xLjg4NXMtMS4zNjUtMC41Mi0xLjg4NSAwelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNNy4wNTcgOC45NDNsMTYgMTZjMC41MiAwLjUyIDEuMzY1IDAuNTIgMS44ODUgMHMwLjUyLTEuMzY1IDAtMS44ODVsLTE2LTE2Yy0wLjUyLTAuNTItMS4zNjUtMC41Mi0xLjg4NSAwcy0wLjUyIDEuMzY1IDAgMS44ODV6XCJ9KV0pfWZ1bmN0aW9uIHZ0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTIwLjk0MyAyMy4wNTdsLTcuMDU3LTcuMDU3YzAgMCA3LjA1Ny03LjA1NyA3LjA1Ny03LjA1NyAwLjUyLTAuNTIgMC41Mi0xLjM2NSAwLTEuODg1cy0xLjM2NS0wLjUyLTEuODg1IDBsLTggOGMtMC41MjEgMC41MjEtMC41MjEgMS4zNjUgMCAxLjg4NWw4IDhjMC41MiAwLjUyIDEuMzY1IDAuNTIgMS44ODUgMHMwLjUyLTEuMzY1IDAtMS44ODV6XCJ9KV0pfWZ1bmN0aW9uIFB0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTEyLjk0MyAyNC45NDNsOC04YzAuNTIxLTAuNTIxIDAuNTIxLTEuMzY1IDAtMS44ODVsLTgtOGMtMC41Mi0wLjUyLTEuMzY1LTAuNTItMS44ODUgMHMtMC41MiAxLjM2NSAwIDEuODg1bDcuMDU3IDcuMDU3YzAgMC03LjA1NyA3LjA1Ny03LjA1NyA3LjA1Ny0wLjUyIDAuNTItMC41MiAxLjM2NSAwIDEuODg1czEuMzY1IDAuNTIgMS44ODUgMHpcIn0pXSl9ZnVuY3Rpb24gVHQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMTYgMS4zMzNjLTguMDk1IDAtMTQuNjY3IDYuNTcyLTE0LjY2NyAxNC42NjdzNi41NzIgMTQuNjY3IDE0LjY2NyAxNC42NjdjOC4wOTUgMCAxNC42NjctNi41NzIgMTQuNjY3LTE0LjY2N3MtNi41NzItMTQuNjY3LTE0LjY2Ny0xNC42Njd6TTE2IDRjNi42MjMgMCAxMiA1LjM3NyAxMiAxMnMtNS4zNzcgMTItMTIgMTJjLTYuNjIzIDAtMTItNS4zNzctMTItMTJzNS4zNzctMTIgMTItMTJ6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0xNC42NjcgOHY4YzAgMC41MDUgMC4yODUgMC45NjcgMC43MzcgMS4xOTNsNS4zMzMgMi42NjdjMC42NTggMC4zMjkgMS40NiAwLjA2MiAxLjc4OS0wLjU5NnMwLjA2Mi0xLjQ2LTAuNTk2LTEuNzg5bC00LjU5Ni0yLjI5OGMwIDAgMC03LjE3NiAwLTcuMTc2IDAtMC43MzYtMC41OTctMS4zMzMtMS4zMzMtMS4zMzNzLTEuMzMzIDAuNTk3LTEuMzMzIDEuMzMzelwifSldKX1mdW5jdGlvbiBBdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yNC45NDMgMTkuMDU3bC04LThjLTAuNTIxLTAuNTIxLTEuMzY1LTAuNTIxLTEuODg1IDBsLTggOGMtMC41MiAwLjUyLTAuNTIgMS4zNjUgMCAxLjg4NXMxLjM2NSAwLjUyIDEuODg1IDBsNy4wNTctNy4wNTdjMCAwIDcuMDU3IDcuMDU3IDcuMDU3IDcuMDU3IDAuNTIgMC41MiAxLjM2NSAwLjUyIDEuODg1IDBzMC41Mi0xLjM2NSAwLTEuODg1elwifSldKX1mdW5jdGlvbiBWdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk03LjA1NyAxMi45NDNsOCA4YzAuNTIxIDAuNTIxIDEuMzY1IDAuNTIxIDEuODg1IDBsOC04YzAuNTItMC41MiAwLjUyLTEuMzY1IDAtMS44ODVzLTEuMzY1LTAuNTItMS44ODUgMGwtNy4wNTcgNy4wNTdjMCAwLTcuMDU3LTcuMDU3LTcuMDU3LTcuMDU3LTAuNTItMC41Mi0xLjM2NS0wLjUyLTEuODg1IDBzLTAuNTIgMS4zNjUgMCAxLjg4NXpcIn0pXSl9Y29uc3QgX3Q9KHQsYSxyLG4sdSk9Pntjb25zdCBwPWQucGFyc2UodCxhLnNsaWNlKDAsdC5sZW5ndGgpLG5ldyBEYXRlKTtyZXR1cm4gZC5pc1ZhbGlkKHApJiZkLmlzRGF0ZShwKT9ufHx1P3A6ZC5zZXQocCx7aG91cnM6K3IuaG91cnMsbWludXRlczorKHI9PW51bGw/dm9pZCAwOnIubWludXRlcyksc2Vjb25kczorKHI9PW51bGw/dm9pZCAwOnIuc2Vjb25kcyksbWlsbGlzZWNvbmRzOjB9KTpudWxsfSxhbj0odCxhLHIsbix1KT0+e2NvbnN0IHA9QXJyYXkuaXNBcnJheShyKT9yWzBdOnI7aWYodHlwZW9mIGE9PVwic3RyaW5nXCIpcmV0dXJuIF90KHQsYSxwLG4sdSk7aWYoQXJyYXkuaXNBcnJheShhKSl7bGV0IGc9bnVsbDtmb3IoY29uc3QgQiBvZiBhKWlmKGc9X3QodCxCLHAsbix1KSxnKWJyZWFrO3JldHVybiBnfXJldHVybiB0eXBlb2YgYT09XCJmdW5jdGlvblwiP2EodCk6bnVsbH0sJD10PT50P25ldyBEYXRlKHQpOm5ldyBEYXRlLHJuPSh0LGEscik9PntpZihhKXtjb25zdCB1PSh0LmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxwPXQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksZz10LmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxCPXQuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksRT1yP3QuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIik6XCIwMFwiO3JldHVybmAke3QuZ2V0RnVsbFllYXIoKX0tJHt1fS0ke3B9VCR7Z306JHtCfToke0V9LjAwMFpgfWNvbnN0IG49RGF0ZS5VVEModC5nZXRVVENGdWxsWWVhcigpLHQuZ2V0VVRDTW9udGgoKSx0LmdldFVUQ0RhdGUoKSx0LmdldFVUQ0hvdXJzKCksdC5nZXRVVENNaW51dGVzKCksdC5nZXRVVENTZWNvbmRzKCkpO3JldHVybiBuZXcgRGF0ZShuKS50b0lTT1N0cmluZygpfSxTZT10PT57bGV0IGE9JChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKSk7cmV0dXJuIGE9ZC5zZXRIb3VycyhhLDApLGE9ZC5zZXRNaW51dGVzKGEsMCksYT1kLnNldFNlY29uZHMoYSwwKSxhPWQuc2V0TWlsbGlzZWNvbmRzKGEsMCksYX0sQmU9KHQsYSxyLG4pPT57bGV0IHU9dD8kKHQpOiQoKTtyZXR1cm4oYXx8YT09PTApJiYodT1kLnNldEhvdXJzKHUsK2EpKSwocnx8cj09PTApJiYodT1kLnNldE1pbnV0ZXModSwrcikpLChufHxuPT09MCkmJih1PWQuc2V0U2Vjb25kcyh1LCtuKSksZC5zZXRNaWxsaXNlY29uZHModSwwKX0sd2U9KHQsYSk9PiF0fHwhYT8hMTpkLmlzQmVmb3JlKFNlKHQpLFNlKGEpKSxzZT0odCxhKT0+IXR8fCFhPyExOmQuaXNFcXVhbChTZSh0KSxTZShhKSksYmU9KHQsYSk9PiF0fHwhYT8hMTpkLmlzQWZ0ZXIoU2UodCksU2UoYSkpLEV0PSh0LGEscik9PnQmJnRbMF0mJnRbMV0/YmUocix0WzBdKSYmd2Uocix0WzFdKTp0JiZ0WzBdJiZhP2JlKHIsdFswXSkmJndlKHIsYSl8fHdlKHIsdFswXSkmJmJlKHIsYSk6ITEsS2U9dD0+e2NvbnN0IGE9ZC5zZXQobmV3IERhdGUodCkse2RhdGU6MX0pO3JldHVybiBTZShhKX0sbnQ9KHQsYSxyKT0+YSYmKHJ8fHI9PT0wKT9PYmplY3QuZnJvbUVudHJpZXMoW1wiaG91cnNcIixcIm1pbnV0ZXNcIixcInNlY29uZHNcIl0ubWFwKG49Pm49PT1hP1tuLHJdOltuLGlzTmFOKCt0W25dKT92b2lkIDA6K3Rbbl1dKSk6e2hvdXJzOmlzTmFOKCt0LmhvdXJzKT92b2lkIDA6K3QuaG91cnMsbWludXRlczppc05hTigrdC5taW51dGVzKT92b2lkIDA6K3QubWludXRlcyxzZWNvbmRzOmlzTmFOKCt0LnNlY29uZHMpP3ZvaWQgMDordC5zZWNvbmRzfSxxZT10PT4oe2hvdXJzOmQuZ2V0SG91cnModCksbWludXRlczpkLmdldE1pbnV0ZXModCksc2Vjb25kczpkLmdldFNlY29uZHModCl9KSxVZT1lLnJlYWN0aXZlKHttZW51Rm9jdXNlZDohMSxzaGlmdEtleUluTWVudTohMX0pLFJ0PSgpPT57Y29uc3QgdD1uPT57VWUubWVudUZvY3VzZWQ9bn0sYT1uPT57VWUuc2hpZnRLZXlJbk1lbnUhPT1uJiYoVWUuc2hpZnRLZXlJbk1lbnU9bil9O3JldHVybntjb250cm9sOmUuY29tcHV0ZWQoKCk9Pih7c2hpZnRLZXlJbk1lbnU6VWUuc2hpZnRLZXlJbk1lbnUsbWVudUZvY3VzZWQ6VWUubWVudUZvY3VzZWR9KSksc2V0TWVudUZvY3VzZWQ6dCxzZXRTaGlmdEtleTphfX07ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJkZWZhdWx0XCIpP3QuZGVmYXVsdDp0fXZhciBJdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGEocil7cmV0dXJuIHImJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fXQuZXhwb3J0cz1hLHQuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLHQuZXhwb3J0cy5kZWZhdWx0PXQuZXhwb3J0c30pKEl0KTt2YXIgbG49SXQuZXhwb3J0cyxydD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PXI7ZnVuY3Rpb24gcihuKXtpZihuPT09bnVsbHx8bj09PSEwfHxuPT09ITEpcmV0dXJuIE5hTjt2YXIgdT1OdW1iZXIobik7cmV0dXJuIGlzTmFOKHUpP3U6dTwwP01hdGguY2VpbCh1KTpNYXRoLmZsb29yKHUpfXQuZXhwb3J0cz1hLmRlZmF1bHR9KShydCxydC5leHBvcnRzKTt2YXIgb249cnQuZXhwb3J0cztjb25zdCBzbj1hdChvbik7dmFyIGx0PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24odCxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9cjtmdW5jdGlvbiByKG4pe3ZhciB1PW5ldyBEYXRlKERhdGUuVVRDKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksbi5nZXREYXRlKCksbi5nZXRIb3VycygpLG4uZ2V0TWludXRlcygpLG4uZ2V0U2Vjb25kcygpLG4uZ2V0TWlsbGlzZWNvbmRzKCkpKTtyZXR1cm4gdS5zZXRVVENGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkpLG4uZ2V0VGltZSgpLXUuZ2V0VGltZSgpfXQuZXhwb3J0cz1hLmRlZmF1bHR9KShsdCxsdC5leHBvcnRzKTt2YXIgdW49bHQuZXhwb3J0cztjb25zdCBPdD1hdCh1bik7ZnVuY3Rpb24gY24odCxhKXt2YXIgcj15bihhKTtyZXR1cm4gci5mb3JtYXRUb1BhcnRzP2ZuKHIsdCk6bW4ocix0KX12YXIgZG49e3llYXI6MCxtb250aDoxLGRheToyLGhvdXI6MyxtaW51dGU6NCxzZWNvbmQ6NX07ZnVuY3Rpb24gZm4odCxhKXt0cnl7Zm9yKHZhciByPXQuZm9ybWF0VG9QYXJ0cyhhKSxuPVtdLHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIHA9ZG5bclt1XS50eXBlXTtwPj0wJiYobltwXT1wYXJzZUludChyW3VdLnZhbHVlLDEwKSl9cmV0dXJuIG59Y2F0Y2goZyl7aWYoZyBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpcmV0dXJuW05hTl07dGhyb3cgZ319ZnVuY3Rpb24gbW4odCxhKXt2YXIgcj10LmZvcm1hdChhKS5yZXBsYWNlKC9cXHUyMDBFL2csXCJcIiksbj0vKFxcZCspXFwvKFxcZCspXFwvKFxcZCspLD8gKFxcZCspOihcXGQrKTooXFxkKykvLmV4ZWMocik7cmV0dXJuW25bM10sblsxXSxuWzJdLG5bNF0sbls1XSxuWzZdXX12YXIgb3Q9e307ZnVuY3Rpb24geW4odCl7aWYoIW90W3RdKXt2YXIgYT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIse2hvdXIxMjohMSx0aW1lWm9uZTpcIkFtZXJpY2EvTmV3X1lvcmtcIix5ZWFyOlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLGRheTpcIjItZGlnaXRcIixob3VyOlwiMi1kaWdpdFwiLG1pbnV0ZTpcIjItZGlnaXRcIixzZWNvbmQ6XCIyLWRpZ2l0XCJ9KS5mb3JtYXQobmV3IERhdGUoXCIyMDE0LTA2LTI1VDA0OjAwOjAwLjEyM1pcIikpLHI9YT09PVwiMDYvMjUvMjAxNCwgMDA6MDA6MDBcInx8YT09PVwi4oCOMDbigI4v4oCOMjXigI4v4oCOMjAxNOKAjiDigI4wMOKAjjrigI4wMOKAjjrigI4wMFwiO290W3RdPXI/bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLHtob3VyMTI6ITEsdGltZVpvbmU6dCx5ZWFyOlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLGRheTpcIjItZGlnaXRcIixob3VyOlwiMi1kaWdpdFwiLG1pbnV0ZTpcIjItZGlnaXRcIixzZWNvbmQ6XCIyLWRpZ2l0XCJ9KTpuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIse2hvdXJDeWNsZTpcImgyM1wiLHRpbWVab25lOnQseWVhcjpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIixkYXk6XCIyLWRpZ2l0XCIsaG91cjpcIjItZGlnaXRcIixtaW51dGU6XCIyLWRpZ2l0XCIsc2Vjb25kOlwiMi1kaWdpdFwifSl9cmV0dXJuIG90W3RdfWZ1bmN0aW9uIHN0KHQsYSxyLG4sdSxwLGcpe3ZhciBCPW5ldyBEYXRlKDApO3JldHVybiBCLnNldFVUQ0Z1bGxZZWFyKHQsYSxyKSxCLnNldFVUQ0hvdXJzKG4sdSxwLGcpLEJ9dmFyIFl0PTM2ZTUscG49NmU0LGl0PXt0aW1lem9uZTovKFtaKy1dLiopJC8sdGltZXpvbmVaOi9eKFopJC8sdGltZXpvbmVISDovXihbKy1dXFxkezJ9KSQvLHRpbWV6b25lSEhNTTovXihbKy1dXFxkezJ9KTo/KFxcZHsyfSkkL307ZnVuY3Rpb24gdXQodCxhLHIpe3ZhciBuLHU7aWYoIXR8fChuPWl0LnRpbWV6b25lWi5leGVjKHQpLG4pKXJldHVybiAwO3ZhciBwO2lmKG49aXQudGltZXpvbmVISC5leGVjKHQpLG4pcmV0dXJuIHA9cGFyc2VJbnQoblsxXSwxMCkseHQocCk/LShwKll0KTpOYU47aWYobj1pdC50aW1lem9uZUhITU0uZXhlYyh0KSxuKXtwPXBhcnNlSW50KG5bMV0sMTApO3ZhciBnPXBhcnNlSW50KG5bMl0sMTApO3JldHVybiB4dChwLGcpPyh1PU1hdGguYWJzKHApKll0K2cqcG4scD4wPy11OnUpOk5hTn1pZihrbih0KSl7YT1uZXcgRGF0ZShhfHxEYXRlLm5vdygpKTt2YXIgQj1yP2E6Z24oYSksRT1jdChCLHQpLHY9cj9FOmhuKGEsRSx0KTtyZXR1cm4tdn1yZXR1cm4gTmFOfWZ1bmN0aW9uIGduKHQpe3JldHVybiBzdCh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpLHQuZ2V0SG91cnMoKSx0LmdldE1pbnV0ZXMoKSx0LmdldFNlY29uZHMoKSx0LmdldE1pbGxpc2Vjb25kcygpKX1mdW5jdGlvbiBjdCh0LGEpe3ZhciByPWNuKHQsYSksbj1zdChyWzBdLHJbMV0tMSxyWzJdLHJbM10lMjQscls0XSxyWzVdLDApLmdldFRpbWUoKSx1PXQuZ2V0VGltZSgpLHA9dSUxZTM7cmV0dXJuIHUtPXA+PTA/cDoxZTMrcCxuLXV9ZnVuY3Rpb24gaG4odCxhLHIpe3ZhciBuPXQuZ2V0VGltZSgpLHU9bi1hLHA9Y3QobmV3IERhdGUodSkscik7aWYoYT09PXApcmV0dXJuIGE7dS09cC1hO3ZhciBnPWN0KG5ldyBEYXRlKHUpLHIpO3JldHVybiBwPT09Zz9wOk1hdGgubWF4KHAsZyl9ZnVuY3Rpb24geHQodCxhKXtyZXR1cm4tMjM8PXQmJnQ8PTIzJiYoYT09bnVsbHx8MDw9YSYmYTw9NTkpfXZhciBMdD17fTtmdW5jdGlvbiBrbih0KXtpZihMdFt0XSlyZXR1cm4hMDt0cnl7cmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHZvaWQgMCx7dGltZVpvbmU6dH0pLEx0W3RdPSEwLCEwfWNhdGNoe3JldHVybiExfX12YXIgd249LyhafFsrLV1cXGR7Mn0oPzo6P1xcZHsyfSk/fCBVVEN8IFthLXpBLVpdK1xcL1thLXpBLVpfXSsoPzpcXC9bYS16QS1aX10rKT8pJC87Y29uc3QgenQ9d247dmFyIGR0PTM2ZTUsS3Q9NmU0LGJuPTIsRGU9e2RhdGVUaW1lUGF0dGVybjovXihbMC05VystXSspKFR8ICkoLiopLyxkYXRlUGF0dGVybjovXihbMC05VystXSspKC4qKS8scGxhaW5UaW1lOi86LyxZWTovXihcXGR7Mn0pJC8sWVlZOlsvXihbKy1dXFxkezJ9KSQvLC9eKFsrLV1cXGR7M30pJC8sL14oWystXVxcZHs0fSkkL10sWVlZWTovXihcXGR7NH0pLyxZWVlZWTpbL14oWystXVxcZHs0fSkvLC9eKFsrLV1cXGR7NX0pLywvXihbKy1dXFxkezZ9KS9dLE1NOi9eLShcXGR7Mn0pJC8sREREOi9eLT8oXFxkezN9KSQvLE1NREQ6L14tPyhcXGR7Mn0pLT8oXFxkezJ9KSQvLFd3dzovXi0/VyhcXGR7Mn0pJC8sV3d3RDovXi0/VyhcXGR7Mn0pLT8oXFxkezF9KSQvLEhIOi9eKFxcZHsyfShbLixdXFxkKik/KSQvLEhITU06L14oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLEhITU1TUzovXihcXGR7Mn0pOj8oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLHRpbWVab25lOnp0fTtmdW5jdGlvbiBmdCh0LGEpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgXCIrYXJndW1lbnRzLmxlbmd0aCtcIiBwcmVzZW50XCIpO2lmKHQ9PT1udWxsKXJldHVybiBuZXcgRGF0ZShOYU4pO3ZhciByPWF8fHt9LG49ci5hZGRpdGlvbmFsRGlnaXRzPT1udWxsP2JuOnNuKHIuYWRkaXRpb25hbERpZ2l0cyk7aWYobiE9PTImJm4hPT0xJiZuIT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImFkZGl0aW9uYWxEaWdpdHMgbXVzdCBiZSAwLCAxIG9yIDJcIik7aWYodCBpbnN0YW5jZW9mIERhdGV8fHR5cGVvZiB0PT1cIm9iamVjdFwiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgRGF0ZV1cIilyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpO2lmKHR5cGVvZiB0PT1cIm51bWJlclwifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgTnVtYmVyXVwiKXJldHVybiBuZXcgRGF0ZSh0KTtpZighKHR5cGVvZiB0PT1cInN0cmluZ1wifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgU3RyaW5nXVwiKSlyZXR1cm4gbmV3IERhdGUoTmFOKTt2YXIgdT1Ebih0KSxwPU1uKHUuZGF0ZSxuKSxnPXAueWVhcixCPXAucmVzdERhdGVTdHJpbmcsRT1DbihCLGcpO2lmKGlzTmFOKEUpKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKEUpe3ZhciB2PUUuZ2V0VGltZSgpLHg9MCxQO2lmKHUudGltZSYmKHg9JG4odS50aW1lKSxpc05hTih4KSkpcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYodS50aW1lWm9uZXx8ci50aW1lWm9uZSl7aWYoUD11dCh1LnRpbWVab25lfHxyLnRpbWVab25lLG5ldyBEYXRlKHYreCkpLGlzTmFOKFApKXJldHVybiBuZXcgRGF0ZShOYU4pfWVsc2UgUD1PdChuZXcgRGF0ZSh2K3gpKSxQPU90KG5ldyBEYXRlKHYreCtQKSk7cmV0dXJuIG5ldyBEYXRlKHYreCtQKX1lbHNlIHJldHVybiBuZXcgRGF0ZShOYU4pfWZ1bmN0aW9uIERuKHQpe3ZhciBhPXt9LHI9RGUuZGF0ZVRpbWVQYXR0ZXJuLmV4ZWModCksbjtpZihyPyhhLmRhdGU9clsxXSxuPXJbM10pOihyPURlLmRhdGVQYXR0ZXJuLmV4ZWModCkscj8oYS5kYXRlPXJbMV0sbj1yWzJdKTooYS5kYXRlPW51bGwsbj10KSksbil7dmFyIHU9RGUudGltZVpvbmUuZXhlYyhuKTt1PyhhLnRpbWU9bi5yZXBsYWNlKHVbMV0sXCJcIiksYS50aW1lWm9uZT11WzFdLnRyaW0oKSk6YS50aW1lPW59cmV0dXJuIGF9ZnVuY3Rpb24gTW4odCxhKXt2YXIgcj1EZS5ZWVlbYV0sbj1EZS5ZWVlZWVthXSx1O2lmKHU9RGUuWVlZWS5leGVjKHQpfHxuLmV4ZWModCksdSl7dmFyIHA9dVsxXTtyZXR1cm57eWVhcjpwYXJzZUludChwLDEwKSxyZXN0RGF0ZVN0cmluZzp0LnNsaWNlKHAubGVuZ3RoKX19aWYodT1EZS5ZWS5leGVjKHQpfHxyLmV4ZWModCksdSl7dmFyIGc9dVsxXTtyZXR1cm57eWVhcjpwYXJzZUludChnLDEwKSoxMDAscmVzdERhdGVTdHJpbmc6dC5zbGljZShnLmxlbmd0aCl9fXJldHVybnt5ZWFyOm51bGx9fWZ1bmN0aW9uIENuKHQsYSl7aWYoYT09PW51bGwpcmV0dXJuIG51bGw7dmFyIHIsbix1LHA7aWYodC5sZW5ndGg9PT0wKXJldHVybiBuPW5ldyBEYXRlKDApLG4uc2V0VVRDRnVsbFllYXIoYSksbjtpZihyPURlLk1NLmV4ZWModCkscilyZXR1cm4gbj1uZXcgRGF0ZSgwKSx1PXBhcnNlSW50KHJbMV0sMTApLTEsSHQoYSx1KT8obi5zZXRVVENGdWxsWWVhcihhLHUpLG4pOm5ldyBEYXRlKE5hTik7aWYocj1EZS5EREQuZXhlYyh0KSxyKXtuPW5ldyBEYXRlKDApO3ZhciBnPXBhcnNlSW50KHJbMV0sMTApO3JldHVybiBObihhLGcpPyhuLnNldFVUQ0Z1bGxZZWFyKGEsMCxnKSxuKTpuZXcgRGF0ZShOYU4pfWlmKHI9RGUuTU1ERC5leGVjKHQpLHIpe249bmV3IERhdGUoMCksdT1wYXJzZUludChyWzFdLDEwKS0xO3ZhciBCPXBhcnNlSW50KHJbMl0sMTApO3JldHVybiBIdChhLHUsQik/KG4uc2V0VVRDRnVsbFllYXIoYSx1LEIpLG4pOm5ldyBEYXRlKE5hTil9aWYocj1EZS5Xd3cuZXhlYyh0KSxyKXJldHVybiBwPXBhcnNlSW50KHJbMV0sMTApLTEsanQoYSxwKT9VdChhLHApOm5ldyBEYXRlKE5hTik7aWYocj1EZS5Xd3dELmV4ZWModCkscil7cD1wYXJzZUludChyWzFdLDEwKS0xO3ZhciBFPXBhcnNlSW50KHJbMl0sMTApLTE7cmV0dXJuIGp0KGEscCxFKT9VdChhLHAsRSk6bmV3IERhdGUoTmFOKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiAkbih0KXt2YXIgYSxyLG47aWYoYT1EZS5ISC5leGVjKHQpLGEpcmV0dXJuIHI9cGFyc2VGbG9hdChhWzFdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKSxtdChyKT9yJTI0KmR0Ok5hTjtpZihhPURlLkhITU0uZXhlYyh0KSxhKXJldHVybiByPXBhcnNlSW50KGFbMV0sMTApLG49cGFyc2VGbG9hdChhWzJdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKSxtdChyLG4pP3IlMjQqZHQrbipLdDpOYU47aWYoYT1EZS5ISE1NU1MuZXhlYyh0KSxhKXtyPXBhcnNlSW50KGFbMV0sMTApLG49cGFyc2VJbnQoYVsyXSwxMCk7dmFyIHU9cGFyc2VGbG9hdChhWzNdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKTtyZXR1cm4gbXQocixuLHUpP3IlMjQqZHQrbipLdCt1KjFlMzpOYU59cmV0dXJuIG51bGx9ZnVuY3Rpb24gVXQodCxhLHIpe2E9YXx8MCxyPXJ8fDA7dmFyIG49bmV3IERhdGUoMCk7bi5zZXRVVENGdWxsWWVhcih0LDAsNCk7dmFyIHU9bi5nZXRVVENEYXkoKXx8NyxwPWEqNytyKzEtdTtyZXR1cm4gbi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK3ApLG59dmFyIFNuPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sQm49WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiBXdCh0KXtyZXR1cm4gdCU0MDA9PT0wfHx0JTQ9PT0wJiZ0JTEwMCE9PTB9ZnVuY3Rpb24gSHQodCxhLHIpe2lmKGE8MHx8YT4xMSlyZXR1cm4hMTtpZihyIT1udWxsKXtpZihyPDEpcmV0dXJuITE7dmFyIG49V3QodCk7aWYobiYmcj5CblthXXx8IW4mJnI+U25bYV0pcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gTm4odCxhKXtpZihhPDEpcmV0dXJuITE7dmFyIHI9V3QodCk7cmV0dXJuIShyJiZhPjM2Nnx8IXImJmE+MzY1KX1mdW5jdGlvbiBqdCh0LGEscil7cmV0dXJuIShhPDB8fGE+NTJ8fHIhPW51bGwmJihyPDB8fHI+NikpfWZ1bmN0aW9uIG10KHQsYSxyKXtyZXR1cm4hKHQhPW51bGwmJih0PDB8fHQ+PTI1KXx8YSE9bnVsbCYmKGE8MHx8YT49NjApfHxyIT1udWxsJiYocjwwfHxyPj02MCkpfXZhciB5dD17ZXhwb3J0czp7fX0scHQ9e2V4cG9ydHM6e319OyhmdW5jdGlvbih0LGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1yO2Z1bmN0aW9uIHIobix1KXtpZihuPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO2Zvcih2YXIgcCBpbiB1KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LHApJiYobltwXT11W3BdKTtyZXR1cm4gbn10LmV4cG9ydHM9YS5kZWZhdWx0fSkocHQscHQuZXhwb3J0cyk7dmFyIHZuPXB0LmV4cG9ydHM7KGZ1bmN0aW9uKHQsYSl7dmFyIHI9bG4uZGVmYXVsdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9dTt2YXIgbj1yKHZuKTtmdW5jdGlvbiB1KHApe3JldHVybigwLG4uZGVmYXVsdCkoe30scCl9dC5leHBvcnRzPWEuZGVmYXVsdH0pKHl0LHl0LmV4cG9ydHMpO3ZhciBQbj15dC5leHBvcnRzO2NvbnN0IFRuPWF0KFBuKTtmdW5jdGlvbiBBbih0LGEscil7dmFyIG49ZnQodCxyKSx1PXV0KGEsbiwhMCkscD1uZXcgRGF0ZShuLmdldFRpbWUoKS11KSxnPW5ldyBEYXRlKDApO3JldHVybiBnLnNldEZ1bGxZZWFyKHAuZ2V0VVRDRnVsbFllYXIoKSxwLmdldFVUQ01vbnRoKCkscC5nZXRVVENEYXRlKCkpLGcuc2V0SG91cnMocC5nZXRVVENIb3VycygpLHAuZ2V0VVRDTWludXRlcygpLHAuZ2V0VVRDU2Vjb25kcygpLHAuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpLGd9ZnVuY3Rpb24gVm4odCxhLHIpe2lmKHR5cGVvZiB0PT1cInN0cmluZ1wiJiYhdC5tYXRjaCh6dCkpe3ZhciBuPVRuKHIpO3JldHVybiBuLnRpbWVab25lPWEsZnQodCxuKX12YXIgdT1mdCh0LHIpLHA9c3QodS5nZXRGdWxsWWVhcigpLHUuZ2V0TW9udGgoKSx1LmdldERhdGUoKSx1LmdldEhvdXJzKCksdS5nZXRNaW51dGVzKCksdS5nZXRTZWNvbmRzKCksdS5nZXRNaWxsaXNlY29uZHMoKSkuZ2V0VGltZSgpLGc9dXQoYSxuZXcgRGF0ZShwKSk7cmV0dXJuIG5ldyBEYXRlKHArZyl9Y29uc3QgX249KHQsYT0zKT0+e2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz1hKXIucHVzaChbdFtuXSx0W24rMV0sdFtuKzJdXSk7cmV0dXJuIHJ9O2Z1bmN0aW9uIEd0KHQpe3JldHVybiBhPT5uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0LHt3ZWVrZGF5Olwic2hvcnRcIix0aW1lWm9uZTpcIlVUQ1wifSkuZm9ybWF0KG5ldyBEYXRlKGAyMDE3LTAxLTAke2F9VDAwOjAwOjAwKzAwOjAwYCkpLnNsaWNlKDAsMil9ZnVuY3Rpb24gRW4odCl7cmV0dXJuIGE9PmQuZm9ybWF0KG5ldyBEYXRlKGAyMDE3LTAxLTAke2F9VDAwOjAwOjAwKzAwOjAwYCksXCJFRUVFRUVcIix7bG9jYWxlOnR9KX1jb25zdCBSbj0odCxhLHIpPT57Y29uc3Qgbj1bMSwyLDMsNCw1LDYsN107bGV0IHU7aWYodCE9PW51bGwpdHJ5e3U9bi5tYXAoRW4odCkpfWNhdGNoe3U9bi5tYXAoR3QoYSkpfWVsc2UgdT1uLm1hcChHdChhKSk7Y29uc3QgcD11LnNsaWNlKDAsciksZz11LnNsaWNlKHIrMSx1Lmxlbmd0aCk7cmV0dXJuW3Vbcl1dLmNvbmNhdCguLi5nKS5jb25jYXQoLi4ucCl9LEluPSh0LGEpPT57Y29uc3Qgcj1bXTtmb3IobGV0IG49K3RbMF07bjw9K3RbMV07bisrKXIucHVzaCh7dmFsdWU6K24sdGV4dDpgJHtufWB9KTtyZXR1cm4gYT9yLnJldmVyc2UoKTpyfSxPbj0odCxhLHIpPT57Y29uc3Qgbj1bMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdLm1hcChwPT57Y29uc3QgZz1wPDEwP2AwJHtwfWA6cDtyZXR1cm4gbmV3IERhdGUoYDIwMTctJHtnfS0wMVQwMDowMDowMCswMDowMGApfSk7aWYodCE9PW51bGwpdHJ5e2NvbnN0IHA9cj09PVwibG9uZ1wiP1wiTU1NTVwiOlwiTU1NXCI7cmV0dXJuIG4ubWFwKChnLEIpPT57Y29uc3QgRT1kLmZvcm1hdChnLHAse2xvY2FsZTp0fSk7cmV0dXJue3RleHQ6RS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStFLnN1YnN0cmluZygxKSx2YWx1ZTpCfX0pfWNhdGNoe31jb25zdCB1PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGEse21vbnRoOnIsdGltZVpvbmU6XCJVVENcIn0pO3JldHVybiBuLm1hcCgocCxnKT0+e2NvbnN0IEI9dS5mb3JtYXQocCk7cmV0dXJue3RleHQ6Qi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStCLnN1YnN0cmluZygxKSx2YWx1ZTpnfX0pfSxZbj10PT5bMTIsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdW3RdLGNlPXQ9Pntjb25zdCBhPWUudW5yZWYodCk7cmV0dXJuIGEhPW51bGwmJmEuJGVsP2E9PW51bGw/dm9pZCAwOmEuJGVsOmF9LHhuPXQ9Pk9iamVjdC5hc3NpZ24oe3R5cGU6XCJkb3RcIn0sdCkscXQ9dD0+QXJyYXkuaXNBcnJheSh0KT8hIXRbMF0mJiEhdFsxXTohMSxaZT17cHJvcDp0PT5gXCIke3R9XCIgcHJvcCBtdXN0IGJlIGVuYWJsZWQhYCxkYXRlQXJyOnQ9PmBZb3UgbmVlZCB0byB1c2UgYXJyYXkgYXMgXCJtb2RlbC12YWx1ZVwiIGJpbmRpbmcgaW4gb3JkZXIgdG8gc3VwcG9ydCBcIiR7dH1cImB9LGdlPXQ9PnQsWnQ9dD0+dD09PTA/dDohdHx8aXNOYU4oK3QpP251bGw6K3QsTG49dD0+dD09PTA/ITA6ISF0LFh0PXQ9PnQ9PT1udWxsLHpuPXQ9PntpZih0KXJldHVyblsuLi50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dCwgYnV0dG9uLCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdXCIpXVswXX0sSnQ9dD0+T2JqZWN0LmFzc2lnbih7bWVudUFwcGVhcjpcIlwiLG9wZW46XCJkcC1zbGlkZS1kb3duXCIsY2xvc2U6XCJkcC1zbGlkZS11cFwiLG5leHQ6XCJjYWxlbmRhci1uZXh0XCIscHJldmlvdXM6XCJjYWxlbmRhci1wcmV2XCIsdk5leHQ6XCJkcC1zbGlkZS11cFwiLHZQcmV2aW91czpcImRwLXNsaWRlLWRvd25cIn0sdCksS249dD0+T2JqZWN0LmFzc2lnbih7dG9nZ2xlT3ZlcmxheTpcIlRvZ2dsZSBvdmVybGF5XCIsbWVudTpcIkRhdGVwaWNrZXIgbWVudVwiLGlucHV0OlwiRGF0ZXBpY2tlciBpbnB1dFwiLGNhbGVuZGFyV3JhcDpcIkNhbGVuZGFyIHdyYXBwZXJcIixjYWxlbmRhckRheXM6XCJDYWxlbmRhciBkYXlzXCIsb3BlblRpbWVQaWNrZXI6XCJPcGVuIHRpbWUgcGlja2VyXCIsY2xvc2VUaW1lUGlja2VyOlwiQ2xvc2UgdGltZSBQaWNrZXJcIixpbmNyZW1lbnRWYWx1ZTphPT5gSW5jcmVtZW50ICR7YX1gLGRlY3JlbWVudFZhbHVlOmE9PmBEZWNyZW1lbnQgJHthfWAsb3BlblRwT3ZlcmxheTphPT5gT3BlbiAke2F9IG92ZXJsYXlgLGFtUG1CdXR0b246XCJTd2l0Y2ggQU0vUE0gbW9kZVwiLG9wZW5ZZWFyc092ZXJsYXk6XCJPcGVuIHllYXJzIG92ZXJsYXlcIixvcGVuTW9udGhzT3ZlcmxheTpcIk9wZW4gbW9udGhzIG92ZXJsYXlcIixuZXh0TW9udGg6XCJOZXh0IG1vbnRoXCIscHJldk1vbnRoOlwiUHJldmlvdXMgbW9udGhcIixkYXk6KCk9PlwiXCJ9LHQpLFVuPXQ9PnQ9PT1udWxsPzA6dHlwZW9mIHQ9PVwiYm9vbGVhblwiP3Q/MjowOit0Pj0yPyt0OjIsV249KHQsYSxyKT0+dHx8KHR5cGVvZiByPT1cInN0cmluZ1wiP3I6YSksSG49dD0+dHlwZW9mIHQ9PVwiYm9vbGVhblwiP3Q/SnQoe30pOiExOkp0KHQpLGpuPSgpPT4oe2VudGVyU3VibWl0OiEwLHRhYlN1Ym1pdDohMCxvcGVuTWVudTohMCxyYW5nZVNlcGFyYXRvcjpcIiAtIFwifSksR249dD0+T2JqZWN0LmFzc2lnbih7bW9udGhzOltdLHllYXJzOltdLHRpbWVzOntob3VyczpbXSxtaW51dGVzOltdLHNlY29uZHM6W119fSx0KSxxbj10PT5PYmplY3QuYXNzaWduKHtzaG93U2VsZWN0OiEwLHNob3dDYW5jZWw6ITAsc2hvd05vdzohMSxzaG93UHJldmlldzohMH0sdCksJGU9dD0+e2NvbnN0IGE9KCk9PntpZih0LnBhcnRpYWxSYW5nZSlyZXR1cm4gbnVsbDt0aHJvdyBuZXcgRXJyb3IoWmUucHJvcChcInBhcnRpYWwtcmFuZ2VcIikpfSxyPWUuY29tcHV0ZWQoKCk9Pih7YXJpYUxhYmVsczpLbih0LmFyaWFMYWJlbHMpLHRleHRJbnB1dE9wdGlvbnM6T2JqZWN0LmFzc2lnbihqbigpLHQudGV4dElucHV0T3B0aW9ucyksbXVsdGlDYWxlbmRhcnM6VW4odC5tdWx0aUNhbGVuZGFycykscHJldmlld0Zvcm1hdDpXbih0LnByZXZpZXdGb3JtYXQsdC5mb3JtYXQscCgpKSxmaWx0ZXJzOkduKHQuZmlsdGVycyksdHJhbnNpdGlvbnM6SG4odC50cmFuc2l0aW9ucyksc3RhcnRUaW1lOmsoKSxhY3Rpb25Sb3c6cW4odC5hY3Rpb25Sb3cpfSkpLG49bz0+e2lmKHQucmFuZ2UpcmV0dXJuIG8oKTt0aHJvdyBuZXcgRXJyb3IoWmUucHJvcChcInJhbmdlXCIpKX0sdT0oKT0+e2NvbnN0IG89dC5lbmFibGVTZWNvbmRzP1wiOnNzXCI6XCJcIjtyZXR1cm4gdC5pczI0P2BISDptbSR7b31gOmBoaDptbSR7b30gYWFgfSxwPSgpPT50LmZvcm1hdD90LmZvcm1hdDp0Lm1vbnRoUGlja2VyP1wiTU0veXl5eVwiOnQudGltZVBpY2tlcj91KCk6dC53ZWVrUGlja2VyP1wiTU0vZGQveXl5eVwiOnQueWVhclBpY2tlcj9cInl5eXlcIjp0LmVuYWJsZVRpbWVQaWNrZXI/YE1NL2RkL3l5eXksICR7dSgpfWA6XCJNTS9kZC95eXl5XCIsZz0obyxzKT0+e2lmKHR5cGVvZiB0LmZvcm1hdD09XCJmdW5jdGlvblwiKXJldHVybiB0LmZvcm1hdChvKTtjb25zdCBsPXN8fHAoKSxTPXQuZm9ybWF0TG9jYWxlP3tsb2NhbGU6dC5mb3JtYXRMb2NhbGV9OnZvaWQgMDtyZXR1cm4gQXJyYXkuaXNBcnJheShvKT9gJHtkLmZvcm1hdChvWzBdLGwsUyl9JHt0Lm1vZGVsQXV0byYmIW9bMV0/XCJcIjpyLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMucmFuZ2VTZXBhcmF0b3J8fFwiLVwifSR7b1sxXT9kLmZvcm1hdChvWzFdLGwsUyk6XCJcIn1gOmQuZm9ybWF0KG8sbCxTKX0sQj1vPT50LnRpbWV6b25lP0FuKG8sdC50aW1lem9uZSk6byxFPW89PnQudGltZXpvbmU/Vm4obyx0LnRpbWV6b25lKTpvLHY9ZS5jb21wdXRlZCgoKT0+bz0+e3ZhciBzO3JldHVybihzPXQuaGlkZU5hdmlnYXRpb24pPT1udWxsP3ZvaWQgMDpzLmluY2x1ZGVzKG8pfSkseD1vPT57dmFyIHMsbCxTLEY7cmV0dXJuIEFycmF5LmlzQXJyYXkodC5hbGxvd2VkRGF0ZXMpJiYhKChzPXQuYWxsb3dlZERhdGVzKSE9bnVsbCYmcy5sZW5ndGgpPyEwOihsPXQuYXJyTWFwVmFsdWVzKSE9bnVsbCYmbC5hbGxvd2VkRGF0ZXM/IU8obyx0LmFyck1hcFZhbHVlcy5hbGxvd2VkRGF0ZXMpOihTPXQuYWxsb3dlZERhdGVzKSE9bnVsbCYmUy5sZW5ndGg/ISgoRj10LmFsbG93ZWREYXRlcykhPW51bGwmJkYuc29tZSh0ZT0+c2UoQigkKHRlKSksQihvKSkpKTohMX0sUD1vPT57dmFyIGtlO2NvbnN0IHM9dC5tYXhEYXRlP2JlKEIobyksQigkKHQubWF4RGF0ZSkpKTohMSxsPXQubWluRGF0ZT93ZShCKG8pLEIoJCh0Lm1pbkRhdGUpKSk6ITEsUz1PKG8sKGtlPXQuYXJyTWFwVmFsdWVzKSE9bnVsbCYma2UuZGlzYWJsZWREYXRlcz90LmFyck1hcFZhbHVlcy5kaXNhYmxlZERhdGVzOnQuZGlzYWJsZWREYXRlcyksdGU9ci52YWx1ZS5maWx0ZXJzLm1vbnRocy5tYXAobWU9PittZSkuaW5jbHVkZXMoZC5nZXRNb250aChvKSkscGU9dC5kaXNhYmxlZFdlZWtEYXlzLmxlbmd0aD90LmRpc2FibGVkV2Vla0RheXMuc29tZShtZT0+K21lPT09ZC5nZXREYXkobykpOiExLHllPXgobyksWj1kLmdldFllYXIobyksQ2U9WjwrdC55ZWFyUmFuZ2VbMF18fFo+K3QueWVhclJhbmdlWzFdO3JldHVybiEoc3x8bHx8U3x8dGV8fENlfHxwZXx8eWUpfSxtPW89Pntjb25zdCBzPXtob3VyczpkLmdldEhvdXJzKCQoKSksbWludXRlczpkLmdldE1pbnV0ZXMoJCgpKSxzZWNvbmRzOnQuZW5hYmxlU2Vjb25kcz9kLmdldFNlY29uZHMoJCgpKTowfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihzLG8pfSxrPSgpPT50LnJhbmdlP3Quc3RhcnRUaW1lJiZBcnJheS5pc0FycmF5KHQuc3RhcnRUaW1lKT9bbSh0LnN0YXJ0VGltZVswXSksbSh0LnN0YXJ0VGltZVsxXSldOm51bGw6dC5zdGFydFRpbWUmJiFBcnJheS5pc0FycmF5KHQuc3RhcnRUaW1lKT9tKHQuc3RhcnRUaW1lKTpudWxsLHE9bz0+IVAobyksWT1vPT5BcnJheS5pc0FycmF5KG8pP2QuaXNWYWxpZChvWzBdKSYmKG9bMV0/ZC5pc1ZhbGlkKG9bMV0pOiEwKTpvP2QuaXNWYWxpZChvKTohMSxMPW89Pm8gaW5zdGFuY2VvZiBEYXRlP286ZC5wYXJzZUlTTyhvKSxSPW89Pntjb25zdCBzPWQuc3RhcnRPZldlZWsoQihvKSx7d2Vla1N0YXJ0c09uOit0LndlZWtTdGFydH0pLGw9ZC5lbmRPZldlZWsoQihvKSx7d2Vla1N0YXJ0c09uOit0LndlZWtTdGFydH0pO3JldHVybltzLGxdfSxPPShvLHMpPT5vP3MgaW5zdGFuY2VvZiBNYXA/ISFzLmdldChjKG8pKTpBcnJheS5pc0FycmF5KHMpP3Muc29tZShsPT5zZShCKCQobCkpLEIobykpKTpzKCQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSkpKTohMCxRPShvLHMsbCk9PntsZXQgUz1vPyQobyk6JCgpO3JldHVybihzfHxzPT09MCkmJihTPWQuc2V0TW9udGgoUyxzKSksbCYmKFM9ZC5zZXRZZWFyKFMsbCkpLFN9LGVlPW89PmQuc2V0KCQoKSxxZShvKSksXz1vPT5kLnNldCgkKCkse2hvdXJzOitvLmhvdXJzfHwwLG1pbnV0ZXM6K28ubWludXRlc3x8MCxzZWNvbmRzOitvLnNlY29uZHN8fDB9KSxVPShvLHMsbCxTKT0+e2lmKCFvKXJldHVybiEwO2lmKFMpe2NvbnN0IEY9bD09PVwibWF4XCI/ZC5pc0JlZm9yZShvLHMpOmQuaXNBZnRlcihvLHMpLHRlPXtzZWNvbmRzOjAsbWlsbGlzZWNvbmRzOjB9O3JldHVybiBGfHxkLmlzRXF1YWwoZC5zZXQobyx0ZSksZC5zZXQocyx0ZSkpfXJldHVybiBsPT09XCJtYXhcIj9vLmdldFRpbWUoKTw9cy5nZXRUaW1lKCk6by5nZXRUaW1lKCk+PXMuZ2V0VGltZSgpfSxHPSgpPT4hdC5lbmFibGVUaW1lUGlja2VyfHx0Lm1vbnRoUGlja2VyfHx0LnllYXJQaWNrZXJ8fHQuaWdub3JlVGltZVZhbGlkYXRpb24sSj1vPT5BcnJheS5pc0FycmF5KG8pP1tvWzBdP2VlKG9bMF0pOm51bGwsb1sxXT9lZShvWzFdKTpudWxsXTplZShvKSxyZT1vPT57Y29uc3Qgcz10Lm1heFRpbWU/Xyh0Lm1heFRpbWUpOiQodC5tYXhEYXRlKTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKT9VKG9bMF0scyxcIm1heFwiLCEhdC5tYXhEYXRlKSYmVShvWzFdLHMsXCJtYXhcIiwhIXQubWF4RGF0ZSk6VShvLHMsXCJtYXhcIiwhIXQubWF4RGF0ZSl9LG9lPShvLHMpPT57Y29uc3QgbD10Lm1pblRpbWU/Xyh0Lm1pblRpbWUpOiQodC5taW5EYXRlKTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKT9VKG9bMF0sbCxcIm1pblwiLCEhdC5taW5EYXRlKSYmVShvWzFdLGwsXCJtaW5cIiwhIXQubWluRGF0ZSkmJnM6VShvLGwsXCJtaW5cIiwhIXQubWluRGF0ZSkmJnN9LFY9bz0+e2xldCBzPSEwO2lmKCFvfHxHKCkpcmV0dXJuITA7Y29uc3QgbD0hdC5taW5EYXRlJiYhdC5tYXhEYXRlP0oobyk6bztpZigodC5tYXhUaW1lfHx0Lm1heERhdGUpJiYocz1yZShnZShsKSkpLCh0Lm1pblRpbWV8fHQubWluRGF0ZSkmJihzPW9lKGdlKGwpLHMpKSx0LmRpc2FibGVkVGltZXMpe2NvbnN0IFM9QXJyYXkuaXNBcnJheShvKT9bcWUob1swXSksb1sxXT9xZShvWzFdKTp2b2lkIDBdOnFlKG8pO3M9IXQuZGlzYWJsZWRUaW1lcyhTKX1yZXR1cm4gc30sRD0obyxzKT0+e2NvbnN0IGw9JChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKSksUz1bXTtmb3IobGV0IEY9MDtGPDc7RisrKXtjb25zdCB0ZT1kLmFkZERheXMobCxGKSxwZT1kLmdldE1vbnRoKHRlKSE9PXM7Uy5wdXNoKHt0ZXh0OnQuaGlkZU9mZnNldERhdGVzJiZwZT9cIlwiOnRlLmdldERhdGUoKSx2YWx1ZTp0ZSxjdXJyZW50OiFwZSxjbGFzc0RhdGE6e319KX1yZXR1cm4gU30seT0obyxzKT0+e3N3aXRjaCh0LnNpeFdlZWtzPT09ITA/XCJhcHBlbmRcIjp0LnNpeFdlZWtzKXtjYXNlXCJwcmVwZW5kXCI6cmV0dXJuWyEwLCExXTtjYXNlXCJjZW50ZXJcIjpyZXR1cm5bbz09MCwhMF07Y2FzZVwiZmFpclwiOnJldHVybltvPT0wfHxzPm8sITBdO2Nhc2VcImFwcGVuZFwiOnJldHVyblshMSwhMV07ZGVmYXVsdDpyZXR1cm5bITEsITFdfX0sVD0obyxzKT0+e2NvbnN0IGw9W10sUz0kKEIobmV3IERhdGUocyxvKSkpLEY9JChCKG5ldyBEYXRlKHMsbysxLDApKSksdGU9dC53ZWVrU3RhcnQscGU9ZC5zdGFydE9mV2VlayhTLHt3ZWVrU3RhcnRzT246dGV9KSx5ZT1aPT57Y29uc3QgQ2U9RChaLG8pO2lmKGwucHVzaCh7ZGF5czpDZX0pLCFsW2wubGVuZ3RoLTFdLmRheXMuc29tZShrZT0+c2UoU2Uoa2UudmFsdWUpLFNlKEYpKSkpe2NvbnN0IGtlPWQuYWRkRGF5cyhaLDcpO3llKGtlKX19O2lmKHllKHBlKSx0LnNpeFdlZWtzJiZsLmxlbmd0aDw2KXtjb25zdCBaPTYtbC5sZW5ndGgsQ2U9KFMuZ2V0RGF5KCkrNy10ZSklNyxtZT02LShGLmdldERheSgpKzctdGUpJTcsW3ZlLE9lXT15KENlLG1lKTtmb3IobGV0IFRlPTE7VGU8PVo7VGUrKylpZihPZT8hIShUZSUyKT09dmU6dmUpe2NvbnN0IE5lPWxbMF0uZGF5c1swXSxLPUQoZC5hZGREYXlzKE5lLnZhbHVlLC03KSxkLmdldE1vbnRoKFMpKTtsLnVuc2hpZnQoe2RheXM6S30pfWVsc2V7Y29uc3QgTmU9bFtsLmxlbmd0aC0xXSxLPU5lLmRheXNbTmUuZGF5cy5sZW5ndGgtMV0sWD1EKGQuYWRkRGF5cyhLLnZhbHVlLDEpLGQuZ2V0TW9udGgoUykpO2wucHVzaCh7ZGF5czpYfSl9fXJldHVybiBsfSxBPShvLHMsbCk9PltkLnNldCgkKG8pLHtkYXRlOjF9KSxkLnNldCgkKCkse21vbnRoOnMseWVhcjpsLGRhdGU6MX0pXSxJPShvLHMpPT53ZSguLi5BKHQubWluRGF0ZSxvLHMpKXx8c2UoLi4uQSh0Lm1pbkRhdGUsbyxzKSksQz0obyxzKT0+YmUoLi4uQSh0Lm1heERhdGUsbyxzKSl8fHNlKC4uLkEodC5tYXhEYXRlLG8scykpLGg9KG8scyxsKT0+e2xldCBTPSExO3JldHVybiB0Lm1heERhdGUmJmwmJkMobyxzKSYmKFM9ITApLHQubWluRGF0ZSYmIWwmJkkobyxzKSYmKFM9ITApLFN9LGY9KG8scyxsLFMpPT57bGV0IEY9ITE7cmV0dXJuIFM/dC5taW5EYXRlJiZ0Lm1heERhdGU/Rj1oKG8scyxsKToodC5taW5EYXRlJiZJKG8scyl8fHQubWF4RGF0ZSYmQyhvLHMpKSYmKEY9ITApOkY9ITAsRn0sYz1vPT57Y29uc3Qgcz1TZShCKCQobykpKS50b0lTT1N0cmluZygpLFtsXT1zLnNwbGl0KFwiVFwiKTtyZXR1cm4gbH0sTj1vPT5uZXcgTWFwKG8ubWFwKHM9PltjKHMpLCEwXSkpLE09bz0+QXJyYXkuaXNBcnJheShvKSYmby5sZW5ndGg+MDtyZXR1cm57Y2hlY2tQYXJ0aWFsUmFuZ2VWYWx1ZTphLGNoZWNrUmFuZ2VFbmFibGVkOm4sZ2V0Wm9uZWREYXRlOkIsZ2V0Wm9uZWRUb1V0YzpFLGZvcm1hdERhdGU6ZyxnZXREZWZhdWx0UGF0dGVybjpwLHZhbGlkYXRlRGF0ZTpQLGdldERlZmF1bHRTdGFydFRpbWU6ayxpc0Rpc2FibGVkOnEsaXNWYWxpZERhdGU6WSxzYW5pdGl6ZURhdGU6TCxnZXRXZWVrRnJvbURhdGU6UixtYXRjaERhdGU6TyxzZXREYXRlTW9udGhPclllYXI6USxpc1ZhbGlkVGltZTpWLGdldENhbGVuZGFyRGF5czpULHZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTpmLHZhbGlkYXRlTWF4RGF0ZTpDLHZhbGlkYXRlTWluRGF0ZTpJLGFzc2lnbkRlZmF1bHRUaW1lOm0sbWFwRGF0ZXNBcnJUb01hcDpvPT57TSh0LmFsbG93ZWREYXRlcykmJihvLmFsbG93ZWREYXRlcz1OKHQuYWxsb3dlZERhdGVzKSksTSh0LmhpZ2hsaWdodCkmJihvLmhpZ2hsaWdodGVkRGF0ZXM9Tih0LmhpZ2hsaWdodCkpLE0odC5kaXNhYmxlZERhdGVzKSYmKG8uZGlzYWJsZWREYXRlcz1OKHQuZGlzYWJsZWREYXRlcykpfSxkZWZhdWx0czpyLGhpZGVOYXZpZ2F0aW9uQnV0dG9uczp2fX0sdWU9ZS5yZWFjdGl2ZSh7bW9udGhZZWFyOltdLGNhbGVuZGFyOltdLHRpbWU6W10sYWN0aW9uUm93OltdLHNlbGVjdGlvbkdyaWQ6W10sdGltZVBpY2tlcjp7MDpbXSwxOltdfSxtb250aFBpY2tlcjpbXX0pLGd0PWUucmVmKG51bGwpLFhlPWUucmVmKCExKSxodD1lLnJlZighMSksa3Q9ZS5yZWYoITEpLHd0PWUucmVmKCExKSxNZT1lLnJlZigwKSxoZT1lLnJlZigwKSxfZT0oKT0+e2NvbnN0IHQ9ZS5jb21wdXRlZCgoKT0+WGUudmFsdWU/Wy4uLnVlLnNlbGVjdGlvbkdyaWQsdWUuYWN0aW9uUm93XS5maWx0ZXIoUj0+Ui5sZW5ndGgpOmh0LnZhbHVlP1suLi51ZS50aW1lUGlja2VyWzBdLC4uLnVlLnRpbWVQaWNrZXJbMV0sd3QudmFsdWU/W106W2d0LnZhbHVlXSx1ZS5hY3Rpb25Sb3ddLmZpbHRlcihSPT5SLmxlbmd0aCk6a3QudmFsdWU/Wy4uLnVlLm1vbnRoUGlja2VyLHVlLmFjdGlvblJvd106W3VlLm1vbnRoWWVhciwuLi51ZS5jYWxlbmRhcix1ZS50aW1lLHVlLmFjdGlvblJvd10uZmlsdGVyKFI9PlIubGVuZ3RoKSksYT1SPT57TWUudmFsdWU9Uj9NZS52YWx1ZSsxOk1lLnZhbHVlLTE7bGV0IE89bnVsbDt0LnZhbHVlW2hlLnZhbHVlXSYmKE89dC52YWx1ZVtoZS52YWx1ZV1bTWUudmFsdWVdKSxPfHwoTWUudmFsdWU9Uj9NZS52YWx1ZS0xOk1lLnZhbHVlKzEpfSxyPVI9PntpZihoZS52YWx1ZT09PTAmJiFSfHxoZS52YWx1ZT09PXQudmFsdWUubGVuZ3RoJiZSKXJldHVybjtoZS52YWx1ZT1SP2hlLnZhbHVlKzE6aGUudmFsdWUtMSx0LnZhbHVlW2hlLnZhbHVlXT90LnZhbHVlW2hlLnZhbHVlXSYmIXQudmFsdWVbaGUudmFsdWVdW01lLnZhbHVlXSYmTWUudmFsdWUhPT0wJiYoTWUudmFsdWU9dC52YWx1ZVtoZS52YWx1ZV0ubGVuZ3RoLTEpOmhlLnZhbHVlPVI/aGUudmFsdWUtMTpoZS52YWx1ZSsxfSxuPVI9PntsZXQgTz1udWxsO3QudmFsdWVbaGUudmFsdWVdJiYoTz10LnZhbHVlW2hlLnZhbHVlXVtNZS52YWx1ZV0pLE8/Ty5mb2N1cyh7cHJldmVudFNjcm9sbDohWGUudmFsdWV9KTpNZS52YWx1ZT1SP01lLnZhbHVlLTE6TWUudmFsdWUrMX0sdT0oKT0+e2EoITApLG4oITApfSxwPSgpPT57YSghMSksbighMSl9LGc9KCk9PntyKCExKSxuKCEwKX0sQj0oKT0+e3IoITApLG4oITApfSxFPShSLE8pPT57dWVbT109Un0sdj0oUixPKT0+e3VlW09dPVJ9LHg9KCk9PntNZS52YWx1ZT0wLGhlLnZhbHVlPTB9O3JldHVybntidWlsZE1hdHJpeDpFLGJ1aWxkTXVsdGlMZXZlbE1hdHJpeDp2LHNldFRpbWVQaWNrZXJCYWNrUmVmOlI9PntndC52YWx1ZT1SfSxzZXRTZWxlY3Rpb25HcmlkOlI9PntYZS52YWx1ZT1SLHgoKSxSfHwodWUuc2VsZWN0aW9uR3JpZD1bXSl9LHNldFRpbWVQaWNrZXI6KFIsTz0hMSk9PntodC52YWx1ZT1SLHd0LnZhbHVlPU8seCgpLFJ8fCh1ZS50aW1lUGlja2VyWzBdPVtdLHVlLnRpbWVQaWNrZXJbMV09W10pfSxzZXRUaW1lUGlja2VyRWxlbWVudHM6KFIsTz0wKT0+e3VlLnRpbWVQaWNrZXJbT109Un0sYXJyb3dSaWdodDp1LGFycm93TGVmdDpwLGFycm93VXA6ZyxhcnJvd0Rvd246QixjbGVhckFycm93TmF2OigpPT57dWUubW9udGhZZWFyPVtdLHVlLmNhbGVuZGFyPVtdLHVlLnRpbWU9W10sdWUuYWN0aW9uUm93PVtdLHVlLnNlbGVjdGlvbkdyaWQ9W10sdWUudGltZVBpY2tlclswXT1bXSx1ZS50aW1lUGlja2VyWzFdPVtdLFhlLnZhbHVlPSExLGh0LnZhbHVlPSExLHd0LnZhbHVlPSExLGt0LnZhbHVlPSExLHgoKSxndC52YWx1ZT1udWxsfSxzZXRNb250aFBpY2tlcjpSPT57a3QudmFsdWU9Uix4KCl9LHJlZlNldHM6dWV9fSxRdD10PT5BcnJheS5pc0FycmF5KHQpLFJlPXQ9PkFycmF5LmlzQXJyYXkodCksRnQ9dD0+QXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg9PT0yLFpuPSh0LGEscixuLHUpPT57Y29uc3R7Z2V0RGVmYXVsdFN0YXJ0VGltZTpwLGlzRGlzYWJsZWQ6ZyxzYW5pdGl6ZURhdGU6QixnZXRXZWVrRnJvbURhdGU6RSxzZXREYXRlTW9udGhPclllYXI6dix2YWxpZGF0ZU1vbnRoWWVhckluUmFuZ2U6eCxkZWZhdWx0czpQfT0kZSh0KSxtPWUuY29tcHV0ZWQoe2dldDooKT0+dC5pbnRlcm5hbE1vZGVsVmFsdWUsc2V0Omk9PnshdC5yZWFkb25seSYmIXQuZGlzYWJsZWQmJmEoXCJ1cGRhdGU6aW50ZXJuYWwtbW9kZWwtdmFsdWVcIixpKX19KSxrPWUucmVmKFtdKTtlLndhdGNoKG0sKGksYik9Pnt0LnJhbmdlP0coKTpkLmlzRXF1YWwoaSxiKXx8RygpfSk7Y29uc3QgcT1lLnRvUmVmKHQsXCJtdWx0aUNhbGVuZGFyc1wiKTtlLndhdGNoKHEsKCk9PntLKDApfSk7Y29uc3QgWT1lLnJlZihbe21vbnRoOmQuZ2V0TW9udGgoJCgpKSx5ZWFyOmQuZ2V0WWVhcigkKCkpfV0pO2Uud2F0Y2goWSwoKT0+e1kudmFsdWUuZm9yRWFjaCgoaSxiKT0+e2EoXCJ1cGRhdGUtbW9udGgteWVhclwiLHtpbnN0YW5jZTpiLG1vbnRoOmkubW9udGgseWVhcjppLnllYXJ9KX0pfSx7ZGVlcDohMH0pO2NvbnN0IEw9ZS5yZWFjdGl2ZSh7aG91cnM6dC5yYW5nZT9bZC5nZXRIb3VycygkKCkpLGQuZ2V0SG91cnMoJCgpKV06ZC5nZXRIb3VycygkKCkpLG1pbnV0ZXM6dC5yYW5nZT9bZC5nZXRNaW51dGVzKCQoKSksZC5nZXRNaW51dGVzKCQoKSldOmQuZ2V0TWludXRlcygkKCkpLHNlY29uZHM6dC5yYW5nZT9bMCwwXTowfSksUj1lLmNvbXB1dGVkKCgpPT5pPT5ZLnZhbHVlW2ldP1kudmFsdWVbaV0ubW9udGg6MCksTz1lLmNvbXB1dGVkKCgpPT5pPT5ZLnZhbHVlW2ldP1kudmFsdWVbaV0ueWVhcjowKSxRPWUuY29tcHV0ZWQoKCk9Pnt2YXIgaTtyZXR1cm4oaT10LmZsb3cpIT1udWxsJiZpLmxlbmd0aCYmIXQucGFydGlhbEZsb3c/dS52YWx1ZT09PXQuZmxvdy5sZW5ndGg6ITB9KSxlZT0oaSxiLGopPT57dmFyIG5lLGRlO1kudmFsdWVbaV18fChZLnZhbHVlW2ldPXttb250aDowLHllYXI6MH0pLFkudmFsdWVbaV0ubW9udGg9WHQoYik/KG5lPVkudmFsdWVbaV0pPT1udWxsP3ZvaWQgMDpuZS5tb250aDpiLFkudmFsdWVbaV0ueWVhcj1YdChqKT8oZGU9WS52YWx1ZVtpXSk9PW51bGw/dm9pZCAwOmRlLnllYXI6an0sXz0oaSxiKT0+e0xbaV09Yn0sVT0oKT0+e3Quc3RhcnREYXRlJiYoZWUoMCxkLmdldE1vbnRoKCQodC5zdGFydERhdGUpKSxkLmdldFllYXIoJCh0LnN0YXJ0RGF0ZSkpKSxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzJiZLKDApKX07ZS5vbk1vdW50ZWQoKCk9PnttLnZhbHVlfHwoVSgpLFAudmFsdWUuc3RhcnRUaW1lJiZDKCkpLEcoITApLHQuZm9jdXNTdGFydERhdGUmJnQuc3RhcnREYXRlJiZVKCl9KTtjb25zdCBHPShpPSExKT0+e2lmKG0udmFsdWUpcmV0dXJuIEFycmF5LmlzQXJyYXkobS52YWx1ZSk/KGsudmFsdWU9bS52YWx1ZSxEKGkpKTpyZShtLnZhbHVlLGkpO2lmKHQudGltZVBpY2tlcilyZXR1cm4geSgpO2lmKHQubW9udGhQaWNrZXImJiF0LnJhbmdlKXJldHVybiBUKCk7aWYodC55ZWFyUGlja2VyJiYhdC5yYW5nZSlyZXR1cm4gQSgpO2lmKFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJmkmJiF0LnN0YXJ0RGF0ZSlyZXR1cm4gSigkKCksaSl9LEo9KGksYj0hMSk9PntpZigoIVAudmFsdWUubXVsdGlDYWxlbmRhcnN8fCF0Lm11bHRpU3RhdGljfHxiKSYmZWUoMCxkLmdldE1vbnRoKGkpLGQuZ2V0WWVhcihpKSksUC52YWx1ZS5tdWx0aUNhbGVuZGFycylmb3IobGV0IGo9MTtqPFAudmFsdWUubXVsdGlDYWxlbmRhcnM7aisrKXtjb25zdCBuZT1kLnNldCgkKCkse21vbnRoOlIudmFsdWUoai0xKSx5ZWFyOk8udmFsdWUoai0xKX0pLGRlPWQuYWRkKG5lLHttb250aHM6MX0pO1kudmFsdWVbal09e21vbnRoOmQuZ2V0TW9udGgoZGUpLHllYXI6ZC5nZXRZZWFyKGRlKX19fSxyZT0oaSxiKT0+e0ooaSksXyhcImhvdXJzXCIsZC5nZXRIb3VycyhpKSksXyhcIm1pbnV0ZXNcIixkLmdldE1pbnV0ZXMoaSkpLF8oXCJzZWNvbmRzXCIsZC5nZXRTZWNvbmRzKGkpKSxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzJiZiJiZmKCl9LG9lPShpLGIpPT57aVsxXSYmdC5zaG93TGFzdEluUmFuZ2U/SihpWzFdLGIpOkooaVswXSxiKTtjb25zdCBqPShuZSxkZSk9PltuZShpWzBdKSxpWzFdP25lKGlbMV0pOkxbZGVdWzFdXTtfKFwiaG91cnNcIixqKGQuZ2V0SG91cnMsXCJob3Vyc1wiKSksXyhcIm1pbnV0ZXNcIixqKGQuZ2V0TWludXRlcyxcIm1pbnV0ZXNcIikpLF8oXCJzZWNvbmRzXCIsaihkLmdldFNlY29uZHMsXCJzZWNvbmRzXCIpKX0sVj0oaSxiKT0+e2lmKCh0LnJhbmdlfHx0LndlZWtQaWNrZXIpJiYhdC5tdWx0aURhdGVzKXJldHVybiBvZShpLGIpO2lmKHQubXVsdGlEYXRlcyl7Y29uc3Qgaj1pW2kubGVuZ3RoLTFdO3JldHVybiByZShqLGIpfX0sRD1pPT57Y29uc3QgYj1tLnZhbHVlO1YoYixpKSxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzJiZ0Lm11bHRpQ2FsZW5kYXJzU29sbyYmZigpfSx5PSgpPT57aWYoQygpLCF0LnJhbmdlKW0udmFsdWU9QmUoJCgpLEwuaG91cnMsTC5taW51dGVzLEkoKSk7ZWxzZXtjb25zdCBpPUwuaG91cnMsYj1MLm1pbnV0ZXM7bS52YWx1ZT1bQmUoJCgpLGlbMF0sYlswXSxJKCkpLEJlKCQoKSxpWzFdLGJbMV0sSSghMSkpXX19LFQ9KCk9Pnt0Lm11bHRpRGF0ZXM/bS52YWx1ZT1bdigkKCksUi52YWx1ZSgwKSxPLnZhbHVlKDApKV06bS52YWx1ZT12KCQoKSxSLnZhbHVlKDApLE8udmFsdWUoMCkpfSxBPSgpPT57bS52YWx1ZT0kKCl9LEk9KGk9ITApPT50LmVuYWJsZVNlY29uZHM/QXJyYXkuaXNBcnJheShMLnNlY29uZHMpP2k/TC5zZWNvbmRzWzBdOkwuc2Vjb25kc1sxXTpMLnNlY29uZHM6MCxDPSgpPT57Y29uc3QgaT1wKCk7aWYoaSl7Y29uc3QgYj1BcnJheS5pc0FycmF5KGkpLGo9Yj9bK2lbMF0uaG91cnMsK2lbMV0uaG91cnNdOitpLmhvdXJzLG5lPWI/WytpWzBdLm1pbnV0ZXMsK2lbMV0ubWludXRlc106K2kubWludXRlcyxkZT1iP1sraVswXS5zZWNvbmRzLCtpWzFdLnNlY29uZHNdOitpLnNlY29uZHM7XyhcImhvdXJzXCIsaiksXyhcIm1pbnV0ZXNcIixuZSksdC5lbmFibGVTZWNvbmRzJiZfKFwic2Vjb25kc1wiLGRlKX19LGg9KCk9PkFycmF5LmlzQXJyYXkobS52YWx1ZSkmJm0udmFsdWUubGVuZ3RoP20udmFsdWVbbS52YWx1ZS5sZW5ndGgtMV06bnVsbCxmPSgpPT57aWYoQXJyYXkuaXNBcnJheShtLnZhbHVlKSYmbS52YWx1ZS5sZW5ndGg9PT0yKXtjb25zdCBpPSQoJChtLnZhbHVlWzFdP20udmFsdWVbMV06ZC5hZGRNb250aHMobS52YWx1ZVswXSwxKSkpLFtiLGpdPVtkLmdldE1vbnRoKG0udmFsdWVbMF0pLGQuZ2V0WWVhcihtLnZhbHVlWzBdKV0sW25lLGRlXT1bZC5nZXRNb250aChtLnZhbHVlWzFdKSxkLmdldFllYXIobS52YWx1ZVsxXSldOyhiIT09bmV8fGI9PT1uZSYmaiE9PWRlKSYmdC5tdWx0aUNhbGVuZGFyc1NvbG8mJmVlKDEsZC5nZXRNb250aChpKSxkLmdldFllYXIoaSkpfWVsc2UgbS52YWx1ZSYmIUFycmF5LmlzQXJyYXkobS52YWx1ZSkmJmVlKDAsZC5nZXRNb250aChtLnZhbHVlKSxkLmdldFllYXIobS52YWx1ZSkpfSxjPWk9Pntjb25zdCBiPWQuYWRkTW9udGhzKGksMSk7cmV0dXJue21vbnRoOmQuZ2V0TW9udGgoYikseWVhcjpkLmdldFllYXIoYil9fSxOPWk9Pntjb25zdCBiPWQuZ2V0TW9udGgoJChpKSksaj1kLmdldFllYXIoJChpKSk7aWYoZWUoMCxiLGopLFAudmFsdWUubXVsdGlDYWxlbmRhcnM+MClmb3IobGV0IG5lPTE7bmU8UC52YWx1ZS5tdWx0aUNhbGVuZGFycztuZSsrKXtjb25zdCBkZT1jKGQuc2V0KCQoaSkse3llYXI6Ui52YWx1ZShuZS0xKSxtb250aDpPLnZhbHVlKG5lLTEpfSkpO2VlKG5lLGRlLm1vbnRoLGRlLnllYXIpfX0sTT1pPT57aWYobS52YWx1ZSYmQXJyYXkuaXNBcnJheShtLnZhbHVlKSlpZihtLnZhbHVlLnNvbWUoYj0+c2UoaSxiKSkpe2NvbnN0IGI9bS52YWx1ZS5maWx0ZXIoaj0+IXNlKGosaSkpO20udmFsdWU9Yi5sZW5ndGg/YjpudWxsfWVsc2UodC5tdWx0aURhdGVzTGltaXQmJit0Lm11bHRpRGF0ZXNMaW1pdD5tLnZhbHVlLmxlbmd0aHx8IXQubXVsdGlEYXRlc0xpbWl0KSYmbS52YWx1ZS5wdXNoKGkpO2Vsc2UgbS52YWx1ZT1baV19LFc9KGksYik9Pntjb25zdCBqPWJlKGksYik/YjppLG5lPWJlKGIsaSk/YjppO3JldHVybiBkLmVhY2hEYXlPZkludGVydmFsKHtzdGFydDpqLGVuZDpuZX0pfSxvPShpLGI9MCk9PntpZihBcnJheS5pc0FycmF5KG0udmFsdWUpJiZtLnZhbHVlW2JdKXtjb25zdCBqPWQuZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGksbS52YWx1ZVtiXSksbmU9VyhtLnZhbHVlW2JdLGkpLGRlPW5lLmxlbmd0aD09PTE/MDpuZS5maWx0ZXIodz0+Zyh3KSkubGVuZ3RoLEFlPU1hdGguYWJzKGopLWRlO2lmKHQubWluUmFuZ2UmJnQubWF4UmFuZ2UpcmV0dXJuIEFlPj0rdC5taW5SYW5nZSYmQWU8PSt0Lm1heFJhbmdlO2lmKHQubWluUmFuZ2UpcmV0dXJuIEFlPj0rdC5taW5SYW5nZTtpZih0Lm1heFJhbmdlKXJldHVybiBBZTw9K3QubWF4UmFuZ2V9cmV0dXJuITB9LHM9aT0+QXJyYXkuaXNBcnJheShtLnZhbHVlKSYmbS52YWx1ZS5sZW5ndGg9PT0yP3QuZml4ZWRTdGFydCYmKGJlKGksbS52YWx1ZVswXSl8fHNlKGksbS52YWx1ZVswXSkpP1ttLnZhbHVlWzBdLGldOnQuZml4ZWRFbmQmJih3ZShpLG0udmFsdWVbMV0pfHxzZShpLG0udmFsdWVbMV0pKT9baSxtLnZhbHVlWzFdXTooYShcImludmFsaWQtZml4ZWQtcmFuZ2VcIixpKSxtLnZhbHVlKTpbXSxsPSgpPT57dC5hdXRvQXBwbHkmJlEudmFsdWUmJmEoXCJhdXRvLWFwcGx5XCIsdC5wYXJ0aWFsRmxvdyl9LFM9KCk9Pnt0LmF1dG9BcHBseSYmYShcInNlbGVjdC1kYXRlXCIpfSxGPWk9PiFkLmVhY2hEYXlPZkludGVydmFsKHtzdGFydDppWzBdLGVuZDppWzFdfSkuc29tZShqPT5nKGopKSx0ZT1pPT4obS52YWx1ZT1FKCQoaS52YWx1ZSkpLGwoKSkscGU9aT0+e2NvbnN0IGI9QmUoJChpLnZhbHVlKSxMLmhvdXJzLEwubWludXRlcyxJKCkpO3QubXVsdGlEYXRlcz9NKGIpOm0udmFsdWU9YixyKCksbCgpfSx5ZT0oKT0+e2sudmFsdWU9bS52YWx1ZT9tLnZhbHVlLnNsaWNlKCk6W10say52YWx1ZS5sZW5ndGg9PT0yJiYhKHQuZml4ZWRTdGFydHx8dC5maXhlZEVuZCkmJihrLnZhbHVlPVtdKX0sWj0oaSxiKT0+e2NvbnN0IGo9WyQoaS52YWx1ZSksZC5hZGREYXlzKCQoaS52YWx1ZSksK3QuYXV0b1JhbmdlKV07RihqKSYmKGImJk4oaS52YWx1ZSksay52YWx1ZT1qKX0sQ2U9aT0+e2tlKGkudmFsdWUpfHwhbyhpLnZhbHVlLHQuZml4ZWRTdGFydD8wOjEpfHwoay52YWx1ZT1zKCQoaS52YWx1ZSkpKX0sa2U9aT0+dC5ub0Rpc2FibGVkUmFuZ2U/VyhrLnZhbHVlWzBdLGkpLnNvbWUoaj0+ZyhqKSk6ITEsbWU9KGksYik9PntpZih5ZSgpLHQuYXV0b1JhbmdlKXJldHVybiBaKGksYik7aWYodC5maXhlZFN0YXJ0fHx0LmZpeGVkRW5kKXJldHVybiBDZShpKTtrLnZhbHVlWzBdP28oJChpLnZhbHVlKSkmJiFrZShpLnZhbHVlKSYmKHdlKCQoaS52YWx1ZSksJChrLnZhbHVlWzBdKSk/KGsudmFsdWUudW5zaGlmdCgkKGkudmFsdWUpKSxhKFwicmFuZ2UtZW5kXCIsay52YWx1ZVswXSkpOihrLnZhbHVlWzFdPSQoaS52YWx1ZSksYShcInJhbmdlLWVuZFwiLGsudmFsdWVbMV0pKSk6KGsudmFsdWVbMF09JChpLnZhbHVlKSxhKFwicmFuZ2Utc3RhcnRcIixrLnZhbHVlWzBdKSl9LHZlPWk9PntrLnZhbHVlW2ldPUJlKGsudmFsdWVbaV0sTC5ob3Vyc1tpXSxMLm1pbnV0ZXNbaV0sSShpIT09MSkpfSxPZT0oKT0+e3ZhciBpLGI7ay52YWx1ZVswXSYmay52YWx1ZVsxXSYmKygoaT1rLnZhbHVlKT09bnVsbD92b2lkIDA6aVswXSk+KygoYj1rLnZhbHVlKT09bnVsbD92b2lkIDA6YlsxXSkmJihrLnZhbHVlLnJldmVyc2UoKSxhKFwicmFuZ2Utc3RhcnRcIixrLnZhbHVlWzBdKSxhKFwicmFuZ2UtZW5kXCIsay52YWx1ZVsxXSkpfSxUZT0oKT0+e2sudmFsdWUubGVuZ3RoJiYoay52YWx1ZVswXSYmIWsudmFsdWVbMV0/dmUoMCk6KHZlKDApLHZlKDEpLHIoKSksT2UoKSxtLnZhbHVlPWsudmFsdWUuc2xpY2UoKSxrLnZhbHVlWzBdJiZrLnZhbHVlWzFdJiZ0LmF1dG9BcHBseSYmYShcImF1dG8tYXBwbHlcIiksay52YWx1ZVswXSYmIWsudmFsdWVbMV0mJnQubW9kZWxBdXRvJiZ0LmF1dG9BcHBseSYmYShcImF1dG8tYXBwbHlcIikpfSxMZT0oaSxiPSExKT0+e2lmKCEoZyhpLnZhbHVlKXx8IWkuY3VycmVudCYmdC5oaWRlT2Zmc2V0RGF0ZXMpKXtpZih0LndlZWtQaWNrZXIpcmV0dXJuIHRlKGkpO2lmKCF0LnJhbmdlKXJldHVybiBwZShpKTtSZShMLmhvdXJzKSYmUmUoTC5taW51dGVzKSYmIXQubXVsdGlEYXRlcyYmKG1lKGksYiksVGUoKSl9fSxOZT1pPT57Y29uc3QgYj1pWzBdO3JldHVybiB0LndlZWtOdW1iZXJzPT09XCJsb2NhbFwiP2QuZ2V0V2VlayhiLnZhbHVlLHt3ZWVrU3RhcnRzT246K3Qud2Vla1N0YXJ0fSk6dC53ZWVrTnVtYmVycz09PVwiaXNvXCI/ZC5nZXRJU09XZWVrKGIudmFsdWUpOnR5cGVvZiB0LndlZWtOdW1iZXJzPT1cImZ1bmN0aW9uXCI/dC53ZWVrTnVtYmVycyhiLnZhbHVlKTpcIlwifSxLPWk9Pntmb3IobGV0IGI9aS0xO2I+PTA7Yi0tKXtjb25zdCBqPWQuc3ViTW9udGhzKGQuc2V0KCQoKSx7bW9udGg6Ui52YWx1ZShiKzEpLHllYXI6Ty52YWx1ZShiKzEpfSksMSk7ZWUoYixkLmdldE1vbnRoKGopLGQuZ2V0WWVhcihqKSl9Zm9yKGxldCBiPWkrMTtiPD1QLnZhbHVlLm11bHRpQ2FsZW5kYXJzLTE7YisrKXtjb25zdCBqPWQuYWRkTW9udGhzKGQuc2V0KCQoKSx7bW9udGg6Ui52YWx1ZShiLTEpLHllYXI6Ty52YWx1ZShiLTEpfSksMSk7ZWUoYixkLmdldE1vbnRoKGopLGQuZ2V0WWVhcihqKSl9fSxYPWk9PnYoJCgpLFIudmFsdWUoaSksTy52YWx1ZShpKSksYWU9aT0+QmUoaSxMLmhvdXJzLEwubWludXRlcyxJKCkpLEhlPWk9PntNKFgoaSkpfSxZZT0oaSxiKT0+e2NvbnN0IGo9dC5tb250aFBpY2tlcj9SLnZhbHVlKGkpIT09Yi5tb250aHx8IWIuZnJvbU5hdjpPLnZhbHVlKGkpIT09Yi55ZWFyfHwhYi5mcm9tTmF2O2lmKGVlKGksYi5tb250aCxiLnllYXIpLFAudmFsdWUubXVsdGlDYWxlbmRhcnMmJiF0Lm11bHRpQ2FsZW5kYXJzU29sbyYmSyhpKSx0Lm1vbnRoUGlja2VyfHx0LnllYXJQaWNrZXIpaWYodC5tdWx0aURhdGVzKWomJkhlKGkpO2Vsc2UgaWYodC5yYW5nZSl7aWYoaiYmbyhYKGkpKSl7bGV0IG5lPW0udmFsdWU/bS52YWx1ZS5zbGljZSgpOltdO25lLmxlbmd0aD09PTImJm5lWzFdIT09bnVsbCYmKG5lPVtdKSxuZS5sZW5ndGg/d2UoWChpKSxuZVswXSk/bmUudW5zaGlmdChYKGkpKTpuZVsxXT1YKGkpOm5lPVtYKGkpXSxtLnZhbHVlPW5lfX1lbHNlKHQuYXV0b0FwcGx5TW9udGh8fGopJiYobS52YWx1ZT1YKGkpKTtuKHQubXVsdGlDYWxlbmRhcnNTb2xvP2k6dm9pZCAwKX0sQ3Q9YXN5bmMoaT0hMSk9PntpZih0LmF1dG9BcHBseSYmKHQubW9udGhQaWNrZXJ8fHQueWVhclBpY2tlcikpe2F3YWl0IGUubmV4dFRpY2soKTtjb25zdCBiPXQubW9udGhQaWNrZXI/aTohMTt0LnJhbmdlP2EoXCJhdXRvLWFwcGx5XCIsYnx8IW0udmFsdWV8fG0udmFsdWUubGVuZ3RoPT09MSk6YShcImF1dG8tYXBwbHlcIixiKX1yKCl9LEZlPShpLGIpPT57Y29uc3Qgaj1kLnNldCgkKCkse21vbnRoOlIudmFsdWUoYikseWVhcjpPLnZhbHVlKGIpfSksbmU9aTwwP2QuYWRkTW9udGhzKGosMSk6ZC5zdWJNb250aHMoaiwxKTt4KGQuZ2V0TW9udGgobmUpLGQuZ2V0WWVhcihuZSksaTwwLHQucHJldmVudE1pbk1heE5hdmlnYXRpb24pJiYoZWUoYixkLmdldE1vbnRoKG5lKSxkLmdldFllYXIobmUpKSxQLnZhbHVlLm11bHRpQ2FsZW5kYXJzJiYhdC5tdWx0aUNhbGVuZGFyc1NvbG8mJksoYiksbigpKX0samU9aT0+e1F0KGkpJiZRdChtLnZhbHVlKSYmUmUoTC5ob3VycykmJlJlKEwubWludXRlcyk/KGlbMF0mJm0udmFsdWVbMF0mJihtLnZhbHVlWzBdPUJlKGlbMF0sTC5ob3Vyc1swXSxMLm1pbnV0ZXNbMF0sSSgpKSksaVsxXSYmbS52YWx1ZVsxXSYmKG0udmFsdWVbMV09QmUoaVsxXSxMLmhvdXJzWzFdLEwubWludXRlc1sxXSxJKCExKSkpKTp0Lm11bHRpRGF0ZXMmJkFycmF5LmlzQXJyYXkobS52YWx1ZSk/bS52YWx1ZVttLnZhbHVlLmxlbmd0aC0xXT1hZShpKTohdC5yYW5nZSYmIUZ0KGkpJiYobS52YWx1ZT1hZShpKSksYShcInRpbWUtdXBkYXRlXCIpfSwkdD0oaSxiPSEwLGo9ITEpPT57Y29uc3QgbmU9Yj9pOkwuaG91cnMsZGU9IWImJiFqP2k6TC5taW51dGVzLEFlPWo/aTpMLnNlY29uZHM7aWYodC5yYW5nZSYmRnQobS52YWx1ZSkmJlJlKG5lKSYmUmUoZGUpJiZSZShBZSkmJiF0LmRpc2FibGVUaW1lUmFuZ2VWYWxpZGF0aW9uKXtjb25zdCB3PWllPT5CZShtLnZhbHVlW2llXSxuZVtpZV0sZGVbaWVdLEFlW2llXSksej1pZT0+ZC5zZXRNaWxsaXNlY29uZHMobS52YWx1ZVtpZV0sMCk7aWYoc2UobS52YWx1ZVswXSxtLnZhbHVlWzFdKSYmKGQuaXNBZnRlcih3KDApLHooMSkpfHxkLmlzQmVmb3JlKHcoMSkseigwKSkpKXJldHVybn1pZihfKFwiaG91cnNcIixuZSksXyhcIm1pbnV0ZXNcIixkZSksXyhcInNlY29uZHNcIixBZSksbS52YWx1ZSlpZih0Lm11bHRpRGF0ZXMpe2NvbnN0IHc9aCgpO3cmJmplKHcpfWVsc2UgamUobS52YWx1ZSk7ZWxzZSB0LnRpbWVQaWNrZXImJmplKHQucmFuZ2U/WyQoKSwkKCldOiQoKSk7cigpfSxTdD0oaSxiKT0+e3QubW9udGhDaGFuZ2VPblNjcm9sbCYmRmUodC5tb250aENoYW5nZU9uU2Nyb2xsIT09XCJpbnZlcnNlXCI/LWkuZGVsdGFZOmkuZGVsdGFZLGIpfSxCdD0oaSxiLGo9ITEpPT57dC5tb250aENoYW5nZU9uQXJyb3dzJiZ0LnZlcnRpY2FsPT09aiYmZXQoaSxiKX0sZXQ9KGksYik9PntGZShpPT09XCJyaWdodFwiPy0xOjEsYil9O3JldHVybnt0aW1lOkwsbW9udGg6Uix5ZWFyOk8sbW9kZWxWYWx1ZTptLGNhbGVuZGFyczpZLG1vbnRoWWVhclNlbGVjdDpDdCxpc0Rpc2FibGVkOmcsdXBkYXRlVGltZTokdCxnZXRXZWVrTnVtOk5lLHNlbGVjdERhdGU6TGUsdXBkYXRlTW9udGhZZWFyOlllLGhhbmRsZVNjcm9sbDpTdCxnZXRNYXJrZXI6aT0+dC5tYXJrZXJzLmZpbmQoYj0+c2UoQihpLnZhbHVlKSxCKGIuZGF0ZSkpKSxoYW5kbGVBcnJvdzpCdCxoYW5kbGVTd2lwZTpldCxzZWxlY3RDdXJyZW50RGF0ZTooKT0+e3QucmFuZ2U/bS52YWx1ZSYmQXJyYXkuaXNBcnJheShtLnZhbHVlKSYmbS52YWx1ZVswXT9tLnZhbHVlPXdlKCQoKSxtLnZhbHVlWzBdKT9bJCgpLG0udmFsdWVbMF1dOlttLnZhbHVlWzBdLCQoKV06bS52YWx1ZT1bJCgpXTptLnZhbHVlPSQoKSxTKCl9LHByZXNldERhdGVSYW5nZTooaSxiKT0+e2J8fGkubGVuZ3RoJiZpLmxlbmd0aDw9MiYmdC5yYW5nZSYmKG0udmFsdWU9aS5tYXAoaj0+JChqKSksUygpLHQubXVsdGlDYWxlbmRhcnMmJmUubmV4dFRpY2soKS50aGVuKCgpPT5HKCEwKSkpfX19LFhuPSh0LGEscik9Pntjb25zdCBuPWUucmVmKCkse2dldFpvbmVkVG9VdGM6dSxnZXRab25lZERhdGU6cCxmb3JtYXREYXRlOmcsZ2V0RGVmYXVsdFBhdHRlcm46QixjaGVja1JhbmdlRW5hYmxlZDpFLGNoZWNrUGFydGlhbFJhbmdlVmFsdWU6dixpc1ZhbGlkRGF0ZTp4LHNldERhdGVNb250aE9yWWVhcjpQLGRlZmF1bHRzOm19PSRlKGEpLGs9ZS5yZWYoXCJcIikscT1lLnRvUmVmKGEsXCJmb3JtYXRcIik7ZS53YXRjaChuLCgpPT57dChcImludGVybmFsLW1vZGVsLWNoYW5nZVwiLG4udmFsdWUpfSksZS53YXRjaChxLCgpPT57aCgpfSk7Y29uc3QgWT1sPT57Y29uc3QgUz1sfHwkKCk7cmV0dXJuIGEubW9kZWxUeXBlP2MoUyk6e2hvdXJzOmQuZ2V0SG91cnMoUyksbWludXRlczpkLmdldE1pbnV0ZXMoUyksc2Vjb25kczphLmVuYWJsZVNlY29uZHM/ZC5nZXRTZWNvbmRzKFMpOjB9fSxMPWw9PmEubW9kZWxUeXBlP2MobCk6e21vbnRoOmQuZ2V0TW9udGgobCkseWVhcjpkLmdldFllYXIobCl9LFI9bD0+QXJyYXkuaXNBcnJheShsKT9FKCgpPT5bZC5zZXRZZWFyKCQoKSxsWzBdKSxsWzFdP2Quc2V0WWVhcigkKCksbFsxXSk6digpXSk6ZC5zZXRZZWFyKCQoKSwrbCksTz0obCxTKT0+KHR5cGVvZiBsPT1cInN0cmluZ1wifHx0eXBlb2YgbD09XCJudW1iZXJcIikmJmEubW9kZWxUeXBlP2YobCk6UyxRPWw9PkFycmF5LmlzQXJyYXkobCk/W08obFswXSxCZShudWxsLCtsWzBdLmhvdXJzLCtsWzBdLm1pbnV0ZXMsbFswXS5zZWNvbmRzKSksTyhsWzFdLEJlKG51bGwsK2xbMV0uaG91cnMsK2xbMV0ubWludXRlcyxsWzFdLnNlY29uZHMpKV06TyhsLEJlKG51bGwsbC5ob3VycyxsLm1pbnV0ZXMsbC5zZWNvbmRzKSksZWU9bD0+QXJyYXkuaXNBcnJheShsKT9hLm11bHRpRGF0ZXM/bC5tYXAoUz0+TyhTLFAobnVsbCwrUy5tb250aCwrUy55ZWFyKSkpOkUoKCk9PltPKGxbMF0sUChudWxsLCtsWzBdLm1vbnRoLCtsWzBdLnllYXIpKSxPKGxbMV0sbFsxXT9QKG51bGwsK2xbMV0ubW9udGgsK2xbMV0ueWVhcik6digpKV0pOk8obCxQKG51bGwsK2wubW9udGgsK2wueWVhcikpLF89bD0+e2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGwubWFwKFM9PmYoUykpO3Rocm93IG5ldyBFcnJvcihaZS5kYXRlQXJyKFwibXVsdGktZGF0ZXNcIikpfSxVPWw9PntpZihBcnJheS5pc0FycmF5KGwpKXJldHVyblskKGxbMF0pLCQobFsxXSldO3Rocm93IG5ldyBFcnJvcihaZS5kYXRlQXJyKFwid2Vlay1waWNrZXJcIikpfSxHPWw9PmEubW9kZWxBdXRvP0FycmF5LmlzQXJyYXkobCk/W2YobFswXSksZihsWzFdKV06YS5hdXRvQXBwbHk/W2YobCldOltmKGwpLG51bGxdOkFycmF5LmlzQXJyYXkobCk/RSgoKT0+W2YobFswXSksbFsxXT9mKGxbMV0pOnYoKV0pOmYobCksSj0oKT0+e0FycmF5LmlzQXJyYXkobi52YWx1ZSkmJmEucmFuZ2UmJm4udmFsdWUubGVuZ3RoPT09MSYmbi52YWx1ZS5wdXNoKHYoKSl9LHJlPSgpPT57Y29uc3QgbD1uLnZhbHVlO3JldHVybltjKGxbMF0pLGxbMV0/YyhsWzFdKTp2KCldfSxvZT0oKT0+bi52YWx1ZVsxXT9yZSgpOmMoZ2Uobi52YWx1ZVswXSkpLFY9KCk9PihuLnZhbHVlfHxbXSkubWFwKGw9PmMobCkpLEQ9KCk9PihKKCksYS5tb2RlbEF1dG8/b2UoKTphLm11bHRpRGF0ZXM/VigpOkFycmF5LmlzQXJyYXkobi52YWx1ZSk/RSgoKT0+cmUoKSk6YyhnZShuLnZhbHVlKSkpLHk9bD0+bD9hLnRpbWVQaWNrZXI/UShnZShsKSk6YS5tb250aFBpY2tlcj9lZShnZShsKSk6YS55ZWFyUGlja2VyP1IoZ2UobCkpOmEubXVsdGlEYXRlcz9fKGdlKGwpKTphLndlZWtQaWNrZXI/VShnZShsKSk6RyhnZShsKSk6bnVsbCxUPWw9Pntjb25zdCBTPXkobCk7eChnZShTKSk/KG4udmFsdWU9Z2UoUyksaCgpKToobi52YWx1ZT1udWxsLGsudmFsdWU9XCJcIil9LEE9KCk9Pnt2YXIgUztjb25zdCBsPUY9Pnt2YXIgdGU7cmV0dXJuIGQuZm9ybWF0KEYsKHRlPW0udmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOnRlLmZvcm1hdCl9O3JldHVybmAke2wobi52YWx1ZVswXSl9ICR7KFM9bS52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKT09bnVsbD92b2lkIDA6Uy5yYW5nZVNlcGFyYXRvcn0gJHtuLnZhbHVlWzFdP2wobi52YWx1ZVsxXSk6XCJcIn1gfSxJPSgpPT57dmFyIGw7cmV0dXJuIHIudmFsdWUmJm4udmFsdWU/QXJyYXkuaXNBcnJheShuLnZhbHVlKT9BKCk6ZC5mb3JtYXQobi52YWx1ZSwobD1tLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpsLmZvcm1hdCk6ZyhuLnZhbHVlKX0sQz0oKT0+e3ZhciBsO3JldHVybiBuLnZhbHVlP2EubXVsdGlEYXRlcz9uLnZhbHVlLm1hcChTPT5nKFMpKS5qb2luKFwiOyBcIik6YS50ZXh0SW5wdXQmJnR5cGVvZigobD1tLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpsLmZvcm1hdCk9PVwic3RyaW5nXCI/SSgpOmcobi52YWx1ZSk6XCJcIn0saD0oKT0+eyFhLmZvcm1hdHx8dHlwZW9mIGEuZm9ybWF0PT1cInN0cmluZ1wifHxhLnRleHRJbnB1dCYmdHlwZW9mIGEudGV4dElucHV0T3B0aW9ucy5mb3JtYXQ9PVwic3RyaW5nXCI/ay52YWx1ZT1DKCk6ay52YWx1ZT1hLmZvcm1hdChuLnZhbHVlKX0sZj1sPT57aWYoYS51dGMpe2NvbnN0IFM9bmV3IERhdGUobCk7cmV0dXJuIGEudXRjPT09XCJwcmVzZXJ2ZVwiP25ldyBEYXRlKFMuZ2V0VGltZSgpK1MuZ2V0VGltZXpvbmVPZmZzZXQoKSo2ZTQpOlN9cmV0dXJuIGEubW9kZWxUeXBlP2EubW9kZWxUeXBlPT09XCJkYXRlXCJ8fGEubW9kZWxUeXBlPT09XCJ0aW1lc3RhbXBcIj9wKG5ldyBEYXRlKGwpKTphLm1vZGVsVHlwZT09PVwiZm9ybWF0XCImJih0eXBlb2YgYS5mb3JtYXQ9PVwic3RyaW5nXCJ8fCFhLmZvcm1hdCk/ZC5wYXJzZShsLEIoKSxuZXcgRGF0ZSk6cChkLnBhcnNlKGwsYS5tb2RlbFR5cGUsbmV3IERhdGUpKTpwKG5ldyBEYXRlKGwpKX0sYz1sPT5sP2EudXRjP3JuKGwsYS51dGM9PT1cInByZXNlcnZlXCIsYS5lbmFibGVTZWNvbmRzKTphLm1vZGVsVHlwZT9hLm1vZGVsVHlwZT09PVwidGltZXN0YW1wXCI/K3UobCk6YS5tb2RlbFR5cGU9PT1cImZvcm1hdFwiJiYodHlwZW9mIGEuZm9ybWF0PT1cInN0cmluZ1wifHwhYS5mb3JtYXQpP2codShsKSk6Zyh1KGwpLGEubW9kZWxUeXBlKTp1KGwpOlwiXCIsTj1sPT57dChcInVwZGF0ZTptb2RlbC12YWx1ZVwiLGwpfSxNPWw9PkFycmF5LmlzQXJyYXkobi52YWx1ZSk/YS5tdWx0aURhdGVzP24udmFsdWUubWFwKFM9PmwoUykpOltsKG4udmFsdWVbMF0pLG4udmFsdWVbMV0/bChuLnZhbHVlWzFdKTp2KCldOmwoZ2Uobi52YWx1ZSkpLFc9bD0+TihnZShNKGwpKSk7cmV0dXJue2lucHV0VmFsdWU6ayxpbnRlcm5hbE1vZGVsVmFsdWU6bixjaGVja0JlZm9yZUVtaXQ6KCk9Pm4udmFsdWU/YS5yYW5nZT9hLnBhcnRpYWxSYW5nZT9uLnZhbHVlLmxlbmd0aD49MTpuLnZhbHVlLmxlbmd0aD09PTI6ISFuLnZhbHVlOiExLHBhcnNlRXh0ZXJuYWxNb2RlbFZhbHVlOlQsZm9ybWF0SW5wdXRWYWx1ZTpoLGVtaXRNb2RlbFZhbHVlOigpPT4oaCgpLGEubW9udGhQaWNrZXI/VyhMKTphLnRpbWVQaWNrZXI/VyhZKTphLnllYXJQaWNrZXI/VyhkLmdldFllYXIpOmEud2Vla1BpY2tlcj9OKG4udmFsdWUpOk4oRCgpKSl9fSxKbj0odCxhKT0+e2NvbnN0e3ZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTpyLHZhbGlkYXRlTWF4RGF0ZTpuLHZhbGlkYXRlTWluRGF0ZTp1LGRlZmF1bHRzOnB9PSRlKHQpLGc9KFAsbSk9PntsZXQgaz1QO3JldHVybiBwLnZhbHVlLmZpbHRlcnMubW9udGhzLmluY2x1ZGVzKGQuZ2V0TW9udGgoaykpPyhrPW0/ZC5hZGRNb250aHMoUCwxKTpkLnN1Yk1vbnRocyhQLDEpLGcoayxtKSk6a30sQj0oUCxtKT0+e2xldCBrPVA7cmV0dXJuIHAudmFsdWUuZmlsdGVycy55ZWFycy5pbmNsdWRlcyhkLmdldFllYXIoaykpPyhrPW0/ZC5hZGRZZWFycyhQLDEpOmQuc3ViWWVhcnMoUCwxKSxCKGssbSkpOmt9LEU9UD0+e2NvbnN0IG09ZC5zZXQobmV3IERhdGUse21vbnRoOnQubW9udGgseWVhcjp0LnllYXJ9KTtsZXQgaz1QP2QuYWRkTW9udGhzKG0sMSk6ZC5zdWJNb250aHMobSwxKTt0LmRpc2FibGVZZWFyU2VsZWN0JiYoaz1kLnNldFllYXIoayx0LnllYXIpKTtsZXQgcT1kLmdldE1vbnRoKGspLFk9ZC5nZXRZZWFyKGspO3AudmFsdWUuZmlsdGVycy5tb250aHMuaW5jbHVkZXMocSkmJihrPWcoayxQKSxxPWQuZ2V0TW9udGgoayksWT1kLmdldFllYXIoaykpLHAudmFsdWUuZmlsdGVycy55ZWFycy5pbmNsdWRlcyhZKSYmKGs9QihrLFApLFk9ZC5nZXRZZWFyKGspKSxyKHEsWSxQLHQucHJldmVudE1pbk1heE5hdmlnYXRpb24pJiZ2KHEsWSl9LHY9KFAsbSk9PnthKFwidXBkYXRlLW1vbnRoLXllYXJcIix7bW9udGg6UCx5ZWFyOm19KX0seD1lLmNvbXB1dGVkKCgpPT5QPT57aWYoIXQucHJldmVudE1pbk1heE5hdmlnYXRpb258fFAmJiF0Lm1heERhdGV8fCFQJiYhdC5taW5EYXRlKXJldHVybiExO2NvbnN0IG09ZC5zZXQobmV3IERhdGUse21vbnRoOnQubW9udGgseWVhcjp0LnllYXJ9KSxrPVA/ZC5hZGRNb250aHMobSwxKTpkLnN1Yk1vbnRocyhtLDEpLHE9W2QuZ2V0TW9udGgoayksZC5nZXRZZWFyKGspXTtyZXR1cm4gUD8hbiguLi5xKTohdSguLi5xKX0pO3JldHVybntoYW5kbGVNb250aFllYXJDaGFuZ2U6RSxpc0Rpc2FibGVkOngsdXBkYXRlTW9udGhZZWFyOnZ9fTt2YXIgSmU9KHQ9Pih0LmNlbnRlcj1cImNlbnRlclwiLHQubGVmdD1cImxlZnRcIix0LnJpZ2h0PVwicmlnaHRcIix0KSkoSmV8fHt9KTtjb25zdCBRbj0odCxhLHIsbik9Pntjb25zdCB1PWUucmVmKHt0b3A6XCIwXCIsbGVmdDpcIjBcIix0cmFuc2Zvcm06XCJub25lXCIsb3BhY2l0eTpcIjBcIn0pLHA9ZS5yZWYoITEpLGc9ZS50b1JlZihuLFwidGVsZXBvcnRDZW50ZXJcIiksQj1lLmNvbXB1dGVkKCgpPT5wLnZhbHVlP1wiLTEwMCVcIjpcIjBcIiksRT0oKT0+e3YoKSx1LnZhbHVlLm9wYWNpdHk9XCIwXCJ9O2Uud2F0Y2goZywoKT0+e08oKX0pLGUub25Nb3VudGVkKCgpPT57digpfSk7Y29uc3Qgdj0oKT0+e2NvbnN0IEQ9Y2UoYSk7aWYoRCl7Y29uc3R7dG9wOnksbGVmdDpULHdpZHRoOkEsaGVpZ2h0Okl9PXEoRCk7dS52YWx1ZS50b3A9YCR7eStJLzJ9cHhgLGsoVCxBLDUwKX19LHg9RD0+e2lmKG4udGVsZXBvcnQpe2NvbnN0IHk9RC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57bGVmdDp5LmxlZnQrd2luZG93LnNjcm9sbFgsdG9wOnkudG9wK3dpbmRvdy5zY3JvbGxZfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sUD0oRCx5KT0+e3UudmFsdWUubGVmdD1gJHtEK3l9cHhgLHUudmFsdWUudHJhbnNmb3JtPWB0cmFuc2xhdGUoLTEwMCUsICR7Qi52YWx1ZX0pYH0sbT1EPT57dS52YWx1ZS5sZWZ0PWAke0R9cHhgLHUudmFsdWUudHJhbnNmb3JtPWB0cmFuc2xhdGUoMCwgJHtCLnZhbHVlfSlgfSxrPShELHksVCk9PntuLnBvc2l0aW9uPT09SmUubGVmdCYmbShEKSxuLnBvc2l0aW9uPT09SmUucmlnaHQmJlAoRCx5KSxuLnBvc2l0aW9uPT09SmUuY2VudGVyJiYodS52YWx1ZS5sZWZ0PWAke0QreS8yfXB4YCx1LnZhbHVlLnRyYW5zZm9ybT1UP2B0cmFuc2xhdGUoLTUwJSwgLSR7VH0lKWA6YHRyYW5zbGF0ZSgtNTAlLCAke0IudmFsdWV9KWApfSxxPUQ9Pntjb25zdHt3aWR0aDp5LGhlaWdodDpUfT1ELmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt0b3A6QSxsZWZ0Okl9PW4uYWx0UG9zaXRpb24/bi5hbHRQb3NpdGlvbihEKTp4KEQpO3JldHVybnt0b3A6K0EsbGVmdDorSSx3aWR0aDp5LGhlaWdodDpUfX0sWT0oKT0+e2NvbnN0IEQ9Y2UoYSk7aWYoRCl7Y29uc3R7dG9wOnksbGVmdDpULHdpZHRoOkEsaGVpZ2h0Okl9PXEoRCksQz1HKCk7dS52YWx1ZS50b3A9YCR7eStJLzJ9cHhgLGsoVCxBLEM9PT1cInRvcFwiPzEwMDowKX19LEw9KCk9Pnt1LnZhbHVlLmxlZnQ9XCI1MCVcIix1LnZhbHVlLnRvcD1cIjUwJVwiLHUudmFsdWUudHJhbnNmb3JtPVwidHJhbnNsYXRlKC01MCUsIC01MCUpXCIsdS52YWx1ZS5wb3NpdGlvbj1cImZpeGVkXCIsZGVsZXRlIHUudmFsdWUub3BhY2l0eX0sUj0oKT0+e2NvbnN0IEQ9Y2UoYSkse3RvcDp5LGxlZnQ6VCx0cmFuc2Zvcm06QX09bi5hbHRQb3NpdGlvbihEKTt1LnZhbHVlPXt0b3A6YCR7eX1weGAsbGVmdDpgJHtUfXB4YCx0cmFuc2Zvcm06QXx8XCJcIn19LE89KEQ9ITApPT57aWYoIW4uaW5saW5lKXJldHVybiBnLnZhbHVlP0woKTpuLmFsdFBvc2l0aW9uIT09bnVsbD9SKCk6KEQmJnIoXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiKSxyZSgpKX0sUT0oe2lucHV0RWw6RCxtZW51RWw6eSxsZWZ0OlQsd2lkdGg6QX0pPT57d2luZG93LnNjcmVlbi53aWR0aD43NjgmJmsoVCxBKSxVKEQseSl9LGVlPShELHkpPT57Y29uc3R7dG9wOlQsbGVmdDpBLGhlaWdodDpJLHdpZHRoOkN9PXEoRCk7dS52YWx1ZS50b3A9YCR7SStUKyArbi5vZmZzZXR9cHhgLHAudmFsdWU9ITEsUSh7aW5wdXRFbDpELG1lbnVFbDp5LGxlZnQ6QSx3aWR0aDpDfSl9LF89KEQseSk9Pntjb25zdHt0b3A6VCxsZWZ0OkEsd2lkdGg6SX09cShEKTt1LnZhbHVlLnRvcD1gJHtULStuLm9mZnNldH1weGAscC52YWx1ZT0hMCxRKHtpbnB1dEVsOkQsbWVudUVsOnksbGVmdDpBLHdpZHRoOkl9KX0sVT0oRCx5KT0+e2lmKG4uYXV0b1Bvc2l0aW9uKXtjb25zdHtsZWZ0OlQsd2lkdGg6QX09cShEKSx7bGVmdDpJLHJpZ2h0OkN9PXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIEk8PTA/bShUKTpDPj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg/UChULEEpOmsoVCxBKX19LEc9KCk9Pntjb25zdCBEPWNlKHQpLHk9Y2UoYSk7aWYoRCYmeSl7Y29uc3R7aGVpZ2h0OlR9PUQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3RvcDpBLGhlaWdodDpJfT15LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9d2luZG93LmlubmVySGVpZ2h0LUEtSSxmPUE7cmV0dXJuIFQ8PWg/XCJib3R0b21cIjpUPmgmJlQ8PWY/XCJ0b3BcIjpoPj1mP1wiYm90dG9tXCI6XCJ0b3BcIn1yZXR1cm5cImJvdHRvbVwifSxKPShELHkpPT5HKCk9PT1cImJvdHRvbVwiP2VlKEQseSk6XyhELHkpLHJlPSgpPT57Y29uc3QgRD1jZShhKSx5PWNlKHQpO2lmKEQmJnkpcmV0dXJuIG4uYXV0b1Bvc2l0aW9uP0ooRCx5KTplZShELHkpfSxvZT1mdW5jdGlvbihEKXtpZihEKXtjb25zdCB5PUQuc2Nyb2xsSGVpZ2h0PkQuY2xpZW50SGVpZ2h0LEE9d2luZG93LmdldENvbXB1dGVkU3R5bGUoRCkub3ZlcmZsb3dZLmluZGV4T2YoXCJoaWRkZW5cIikhPT0tMTtyZXR1cm4geSYmIUF9cmV0dXJuITB9LFY9ZnVuY3Rpb24oRCl7cmV0dXJuIUR8fEQ9PT1kb2N1bWVudC5ib2R5fHxELm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP3dpbmRvdzpvZShEKT9EOlYoRC5wYXJlbnROb2RlKX07cmV0dXJue29wZW5PblRvcDpwLG1lbnVTdHlsZTp1LHJlc2V0UG9zaXRpb246RSxzZXRNZW51UG9zaXRpb246TyxzZXRJbml0aWFsUG9zaXRpb246WSxnZXRTY3JvbGxhYmxlUGFyZW50OlZ9fSx4ZT1be25hbWU6XCJjbG9jay1pY29uXCIsdXNlOltcInRpbWVcIixcImNhbGVuZGFyXCJdfSx7bmFtZTpcImFycm93LWxlZnRcIix1c2U6W1wibW9udGgteWVhclwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctcmlnaHRcIix1c2U6W1wibW9udGgteWVhclwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctdXBcIix1c2U6W1widGltZVwiLFwiY2FsZW5kYXJcIixcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwiYXJyb3ctZG93blwiLHVzZTpbXCJ0aW1lXCIsXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJjYWxlbmRhci1pY29uXCIsdXNlOltcIm1vbnRoLXllYXJcIixcInRpbWVcIixcImNhbGVuZGFyXCJdfSx7bmFtZTpcImRheVwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyLW92ZXJsYXlcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5XCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwibW9udGgtb3ZlcmxheS1oZWFkZXJcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyLW92ZXJsYXktaGVhZGVyXCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwiaG91cnMtb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJtaW51dGVzLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwic2Vjb25kcy1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImhvdXJzXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcIm1pbnV0ZXNcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwibW9udGhcIix1c2U6W1wiY2FsZW5kYXJcIixcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwieWVhclwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJhY3Rpb24tYnV0dG9uc1wiLHVzZTpbXCJhY3Rpb25cIl19LHtuYW1lOlwiYWN0aW9uLXByZXZpZXdcIix1c2U6W1wiYWN0aW9uXCJdfSx7bmFtZTpcImNhbGVuZGFyLWhlYWRlclwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJtYXJrZXItdG9vbHRpcFwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJhY3Rpb24tZXh0cmFcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJ0aW1lLXBpY2tlci1vdmVybGF5XCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImFtLXBtLWJ1dHRvblwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJsZWZ0LXNpZGViYXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJyaWdodC1zaWRlYmFyXCIsdXNlOltcIm1lbnVcIl19LHtuYW1lOlwibW9udGgteWVhclwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInRpbWUtcGlja2VyXCIsdXNlOltcIm1lbnVcIl19LHtuYW1lOlwiYWN0aW9uLXJvd1wiLHVzZTpbXCJhY3Rpb25cIl19LHtuYW1lOlwibWFya2VyXCIsdXNlOltcImNhbGVuZGFyXCJdfV0sRm49W3tuYW1lOlwidHJpZ2dlclwifSx7bmFtZTpcImlucHV0LWljb25cIn0se25hbWU6XCJjbGVhci1pY29uXCJ9LHtuYW1lOlwiZHAtaW5wdXRcIn1dLGVhPXthbGw6KCk9PnhlLG1vbnRoWWVhcjooKT0+eGUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwibW9udGgteWVhclwiKSksaW5wdXQ6KCk9PkZuLHRpbWVQaWNrZXI6KCk9PnhlLmZpbHRlcih0PT50LnVzZS5pbmNsdWRlcyhcInRpbWVcIikpLGFjdGlvbjooKT0+eGUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwiYWN0aW9uXCIpKSxjYWxlbmRhcjooKT0+eGUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwiY2FsZW5kYXJcIikpLG1lbnU6KCk9PnhlLmZpbHRlcih0PT50LnVzZS5pbmNsdWRlcyhcIm1lbnVcIikpfSxJZT0odCxhLHIpPT57Y29uc3Qgbj1bXTtyZXR1cm4gZWFbYV0oKS5mb3JFYWNoKHU9Pnt0W3UubmFtZV0mJm4ucHVzaCh1Lm5hbWUpfSksciYmci5sZW5ndGgmJnIuZm9yRWFjaCh1PT57dS5zbG90JiZuLnB1c2godS5zbG90KX0pLG59LFFlPXQ9Pih7dHJhbnNpdGlvbk5hbWU6ZS5jb21wdXRlZCgoKT0+cj0+dCYmdHlwZW9mIHQhPVwiYm9vbGVhblwiP3I/dC5vcGVuOnQuY2xvc2U6XCJcIiksc2hvd1RyYW5zaXRpb246ISF0fSksRWU9e211bHRpQ2FsZW5kYXJzOnt0eXBlOltCb29sZWFuLE51bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbW9kZWxWYWx1ZTp7dHlwZTpbU3RyaW5nLERhdGUsQXJyYXksT2JqZWN0LE51bWJlcl0sZGVmYXVsdDpudWxsfSxtb2RlbFR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0scG9zaXRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJjZW50ZXJcIn0sZGFyazp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGZvcm1hdDp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxkZWZhdWx0OigpPT5udWxsfSxjbG9zZU9uU2Nyb2xsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b1Bvc2l0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sY2xvc2VPbkF1dG9BcHBseTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGFsdFBvc2l0aW9uOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6bnVsbH0sdHJhbnNpdGlvbnM6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OiEwfSxmb3JtYXRMb2NhbGU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sdXRjOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sYXJpYUxhYmVsczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sb2Zmc2V0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjEwfSxoaWRlTmF2aWdhdGlvbjp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sdGltZXpvbmU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sdmVydGljYWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlTW9udGhZZWFyU2VsZWN0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZVllYXJTZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtZW51Q2xhc3NOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGRheUNsYXNzOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6bnVsbH0seWVhclJhbmdlOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PlsxOTAwLDIxMDBdfSxtdWx0aUNhbGVuZGFyc1NvbG86e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjYWxlbmRhckNlbGxDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sZW5hYmxlVGltZVBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGF1dG9BcHBseTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVkRGF0ZXM6e3R5cGU6W0FycmF5LEZ1bmN0aW9uXSxkZWZhdWx0OigpPT5bXX0sbW9udGhOYW1lRm9ybWF0Ont0eXBlOlN0cmluZyxkZWZhdWx0Olwic2hvcnRcIn0sc3RhcnREYXRlOnt0eXBlOltEYXRlLFN0cmluZ10sZGVmYXVsdDpudWxsfSxzdGFydFRpbWU6e3R5cGU6W09iamVjdCxBcnJheV0sZGVmYXVsdDpudWxsfSxoaWRlT2Zmc2V0RGF0ZXM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvUmFuZ2U6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbm9Ub2RheTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVkV2Vla0RheXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGFsbG93ZWREYXRlczp7dHlwZTpBcnJheSxkZWZhdWx0Om51bGx9LHNob3dOb3dCdXR0b246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxub3dCdXR0b25MYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIk5vd1wifSxtYXJrZXJzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtb2RlSGVpZ2h0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjI1NX0sZXNjQ2xvc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxzcGFjZUNvbmZpcm06e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxtb250aENoYW5nZU9uQXJyb3dzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0scHJlc2V0UmFuZ2VzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxmbG93Ont0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxwYXJ0aWFsRmxvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHByZXZlbnRNaW5NYXhOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbWluUmFuZ2U6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4UmFuZ2U6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbXVsdGlEYXRlc0xpbWl0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHJldmVyc2VZZWFyczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGtlZXBBY3Rpb25Sb3c6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx3ZWVrUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmlsdGVyczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbXVsdGlTdGF0aWM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxkaXNhYmxlVGltZVJhbmdlVmFsaWRhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpbQXJyYXksRnVuY3Rpb25dLGRlZmF1bHQ6bnVsbH0saGlnaGxpZ2h0V2Vla0RheXM6e3R5cGU6QXJyYXksZGVmYXVsdDpudWxsfSxoaWdobGlnaHREaXNhYmxlZERheXM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZWxlcG9ydDp7dHlwZTpbU3RyaW5nLEJvb2xlYW5dLGRlZmF1bHQ6bnVsbH0sdGVsZXBvcnRDZW50ZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxsb2NhbGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJlbi1Vc1wifSx3ZWVrTnVtTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIldcIn0sd2Vla1N0YXJ0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LHdlZWtOdW1iZXJzOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLGRlZmF1bHQ6bnVsbH0sY2FsZW5kYXJDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sbm9Td2lwZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vbnRoQ2hhbmdlT25TY3JvbGw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiEwfSxkYXlOYW1lczp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLGRlZmF1bHQ6bnVsbH0sbW9udGhQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjdXN0b21Qcm9wczp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSx5ZWFyUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbW9kZWxBdXRvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc2VsZWN0VGV4dDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlNlbGVjdFwifSxjYW5jZWxUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OlwiQ2FuY2VsXCJ9LHByZXZpZXdGb3JtYXQ6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0sZGVmYXVsdDooKT0+XCJcIn0sbXVsdGlEYXRlczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHBhcnRpYWxSYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGlnbm9yZVRpbWVWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbWluRGF0ZTp7dHlwZTpbRGF0ZSxTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4RGF0ZTp7dHlwZTpbRGF0ZSxTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWluVGltZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxtYXhUaW1lOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LG5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0saGlkZUlucHV0SWNvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNsZWFyYWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHN0YXRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDpudWxsfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIm9mZlwifSxpbnB1dENsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxpbmxpbmVXaXRoSW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXRPcHRpb25zOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT5udWxsfSxmaXhlZFN0YXJ0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZml4ZWRFbmQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0aW1lUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZW5hYmxlU2Vjb25kczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlzMjQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxub0hvdXJzT3ZlcmxheTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vTWludXRlc092ZXJsYXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxub1NlY29uZHNPdmVybGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saG91cnNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjF9LG1pbnV0ZXNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjV9LHNlY29uZHNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjV9LGhvdXJzSW5jcmVtZW50Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LG1pbnV0ZXNJbmNyZW1lbnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0sc2Vjb25kc0luY3JlbWVudDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSxyYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHVpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHJlYWRvbmx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW5saW5lOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sb25DbGlja091dHNpZGU6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxub0Rpc2FibGVkUmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaXhXZWVrczp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGFjdGlvblJvdzp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYWxsb3dQcmV2ZW50RGVmYXVsdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNsb3NlT25DbGVhclZhbHVlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZm9jdXNTdGFydERhdGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlZFRpbWVzOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6dm9pZCAwfSxzaG93TGFzdEluUmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSx0aW1lUGlja2VySW5saW5lOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FsZW5kYXI6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxhdXRvQXBwbHlNb250aDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9fSx0YT17a2V5OjEsY2xhc3M6XCJkcF9faW5wdXRfd3JhcFwifSxuYT1bXCJpZFwiLFwibmFtZVwiLFwiaW5wdXRtb2RlXCIsXCJwbGFjZWhvbGRlclwiLFwiZGlzYWJsZWRcIixcInJlYWRvbmx5XCIsXCJyZXF1aXJlZFwiLFwidmFsdWVcIixcImF1dG9jb21wbGV0ZVwiLFwiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCJdLGFhPXtrZXk6MixjbGFzczpcImRwX19jbGVhcl9pY29uXCJ9LHJhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJEYXRlcGlja2VySW5wdXRcIixwcm9wczp7aXNNZW51T3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlucHV0VmFsdWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sLi4uRWV9LGVtaXRzOltcImNsZWFyXCIsXCJvcGVuXCIsXCJ1cGRhdGU6aW5wdXQtdmFsdWVcIixcInNldC1pbnB1dC1kYXRlXCIsXCJjbG9zZVwiLFwic2VsZWN0LWRhdGVcIixcInNldC1lbXB0eS1kYXRlXCIsXCJ0b2dnbGVcIixcImZvY3VzLXByZXZcIixcImZvY3VzXCIsXCJibHVyXCIsXCJyZWFsLWJsdXJcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtnZXREZWZhdWx0UGF0dGVybjp1LGlzVmFsaWREYXRlOnAsZGVmYXVsdHM6ZyxnZXREZWZhdWx0U3RhcnRUaW1lOkIsYXNzaWduRGVmYXVsdFRpbWU6RX09JGUobiksdj1lLnJlZigpLHg9ZS5yZWYobnVsbCksUD1lLnJlZighMSksbT1lLnJlZighMSksaz1lLmNvbXB1dGVkKCgpPT4oe2RwX19wb2ludGVyOiFuLmRpc2FibGVkJiYhbi5yZWFkb25seSYmIW4udGV4dElucHV0LGRwX19kaXNhYmxlZDpuLmRpc2FibGVkLGRwX19pbnB1dF9yZWFkb25seTohbi50ZXh0SW5wdXQsZHBfX2lucHV0OiEwLGRwX19pbnB1dF9pY29uX3BhZDohbi5oaWRlSW5wdXRJY29uLGRwX19pbnB1dF92YWxpZDpuLnN0YXRlLGRwX19pbnB1dF9pbnZhbGlkOm4uc3RhdGU9PT0hMSxkcF9faW5wdXRfZm9jdXM6UC52YWx1ZXx8bi5pc01lbnVPcGVuLGRwX19pbnB1dF9yZWc6IW4udGV4dElucHV0LFtuLmlucHV0Q2xhc3NOYW1lXTohIW4uaW5wdXRDbGFzc05hbWV9KSkscT0oKT0+e3IoXCJzZXQtaW5wdXQtZGF0ZVwiLG51bGwpLG4uYXV0b0FwcGx5JiYocihcInNldC1lbXB0eS1kYXRlXCIpLHYudmFsdWU9bnVsbCl9LFk9eT0+e3ZhciBBO2NvbnN0IFQ9QigpO3JldHVybiBhbih5LCgoQT1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpBLmZvcm1hdCl8fHUoKSxUfHxFKHt9KSxuLmlucHV0VmFsdWUsbS52YWx1ZSl9LEw9eT0+e2NvbnN0e3JhbmdlU2VwYXJhdG9yOlR9PWcudmFsdWUudGV4dElucHV0T3B0aW9ucyxbQSxJXT15LnNwbGl0KGAke1R9YCk7aWYoQSl7Y29uc3QgQz1ZKEEudHJpbSgpKSxoPUk/WShJLnRyaW0oKSk6bnVsbCxmPUMmJmg/W0MsaF06W0NdO3YudmFsdWU9Qz9mOm51bGx9fSxSPSgpPT57bS52YWx1ZT0hMH0sTz15PT57aWYobi5yYW5nZSlMKHkpO2Vsc2UgaWYobi5tdWx0aURhdGVzKXtjb25zdCBUPXkuc3BsaXQoXCI7XCIpO3YudmFsdWU9VC5tYXAoQT0+WShBLnRyaW0oKSkpLmZpbHRlcihBPT5BKX1lbHNlIHYudmFsdWU9WSh5KX0sUT15PT57dmFyIEEsSTtjb25zdCBUPXR5cGVvZiB5PT1cInN0cmluZ1wiP3k6KEE9eS50YXJnZXQpPT1udWxsP3ZvaWQgMDpBLnZhbHVlO1QhPT1cIlwiPygoST1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZJLm9wZW5NZW51JiYhbi5pc01lbnVPcGVuJiZyKFwib3BlblwiKSxPKFQpLHIoXCJzZXQtaW5wdXQtZGF0ZVwiLHYudmFsdWUpKTpxKCksbS52YWx1ZT0hMSxyKFwidXBkYXRlOmlucHV0LXZhbHVlXCIsVCl9LGVlPXk9Pnt2YXIgVCxBO24udGV4dElucHV0PyhPKHkudGFyZ2V0LnZhbHVlKSwoVD1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZULmVudGVyU3VibWl0JiZwKHYudmFsdWUpJiZuLmlucHV0VmFsdWUhPT1cIlwiPyhyKFwic2V0LWlucHV0LWRhdGVcIix2LnZhbHVlLCEwKSx2LnZhbHVlPW51bGwpOihBPWcudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkEuZW50ZXJTdWJtaXQmJm4uaW5wdXRWYWx1ZT09PVwiXCImJih2LnZhbHVlPW51bGwscihcImNsZWFyXCIpKSk6Ryh5KX0sXz15PT57dmFyIFQsQSxJO24udGV4dElucHV0JiYoKFQ9Zy52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmVC50YWJTdWJtaXQpJiZPKHkudGFyZ2V0LnZhbHVlKSwoQT1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZBLnRhYlN1Ym1pdCYmcCh2LnZhbHVlKSYmbi5pbnB1dFZhbHVlIT09XCJcIj8ocihcInNldC1pbnB1dC1kYXRlXCIsdi52YWx1ZSwhMCksdi52YWx1ZT1udWxsKTooST1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZJLnRhYlN1Ym1pdCYmbi5pbnB1dFZhbHVlPT09XCJcIiYmKHYudmFsdWU9bnVsbCxyKFwiY2xlYXJcIikpfSxVPSgpPT57UC52YWx1ZT0hMCxyKFwiZm9jdXNcIil9LEc9eT0+e3ZhciBUO3kucHJldmVudERlZmF1bHQoKSx5LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHkuc3RvcFByb3BhZ2F0aW9uKCksbi50ZXh0SW5wdXQmJigoVD1nLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZULm9wZW5NZW51KSYmIW4uaW5saW5lV2l0aElucHV0PyhyKFwidG9nZ2xlXCIpLGcudmFsdWUudGV4dElucHV0T3B0aW9ucy5lbnRlclN1Ym1pdCYmcihcInNlbGVjdC1kYXRlXCIpKTpuLnRleHRJbnB1dHx8cihcInRvZ2dsZVwiKX0sSj0oKT0+e3IoXCJyZWFsLWJsdXJcIiksUC52YWx1ZT0hMSwoIW4uaXNNZW51T3Blbnx8bi5pbmxpbmUmJm4uaW5saW5lV2l0aElucHV0KSYmcihcImJsdXJcIiksbi5hdXRvQXBwbHkmJm4udGV4dElucHV0JiZ2LnZhbHVlJiYhbi5pc01lbnVPcGVuJiYocihcInNldC1pbnB1dC1kYXRlXCIsdi52YWx1ZSkscihcInNlbGVjdC1kYXRlXCIpLHYudmFsdWU9bnVsbCl9LHJlPSgpPT57cihcImNsZWFyXCIpfSxvZT15PT57aWYoIW4udGV4dElucHV0KXtpZih5LmNvZGU9PT1cIlRhYlwiKXJldHVybjt5LnByZXZlbnREZWZhdWx0KCl9fTtyZXR1cm4gYSh7Zm9jdXNJbnB1dDooKT0+e3ZhciB5Oyh5PXgudmFsdWUpPT1udWxsfHx5LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LHNldFBhcnNlZERhdGU6eT0+e3YudmFsdWU9eX19KSwoeSxUKT0+e3ZhciBBO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse29uQ2xpY2s6R30sW3kuJHNsb3RzLnRyaWdnZXImJiF5LiRzbG90c1tcImRwLWlucHV0XCJdJiYheS5pbmxpbmU/ZS5yZW5kZXJTbG90KHkuJHNsb3RzLFwidHJpZ2dlclwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLCF5LiRzbG90cy50cmlnZ2VyJiYoIXkuaW5saW5lfHx5LmlubGluZVdpdGhJbnB1dCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix0YSxbeS4kc2xvdHNbXCJkcC1pbnB1dFwiXSYmIXkuJHNsb3RzLnRyaWdnZXImJiF5LmlubGluZT9lLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJkcC1pbnB1dFwiLHtrZXk6MCx2YWx1ZTp0LmlucHV0VmFsdWUsaXNNZW51T3Blbjp0LmlzTWVudU9wZW4sb25JbnB1dDpRLG9uRW50ZXI6ZWUsb25UYWI6XyxvbkNsZWFyOnJlLG9uQmx1cjpKLG9uS2V5cHJlc3M6b2Usb25QYXN0ZTpSfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkseS4kc2xvdHNbXCJkcC1pbnB1dFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIse2tleToxLHJlZl9rZXk6XCJpbnB1dFJlZlwiLHJlZjp4LGlkOnkudWlkP2BkcC1pbnB1dC0ke3kudWlkfWA6dm9pZCAwLG5hbWU6eS5uYW1lLGNsYXNzOmUubm9ybWFsaXplQ2xhc3Moay52YWx1ZSksaW5wdXRtb2RlOnkudGV4dElucHV0P1widGV4dFwiOlwibm9uZVwiLHBsYWNlaG9sZGVyOnkucGxhY2Vob2xkZXIsZGlzYWJsZWQ6eS5kaXNhYmxlZCxyZWFkb25seTp5LnJlYWRvbmx5LHJlcXVpcmVkOnkucmVxdWlyZWQsdmFsdWU6dC5pbnB1dFZhbHVlLGF1dG9jb21wbGV0ZTp5LmF1dG9jb21wbGV0ZSxcImFyaWEtbGFiZWxcIjooQT1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpBLmlucHV0LG9uSW5wdXQ6USxvbktleWRvd246W2Uud2l0aEtleXMoZWUsW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoXyxbXCJ0YWJcIl0pLG9lXSxvbkJsdXI6SixvbkZvY3VzOlUsb25LZXlwcmVzczpvZSxvblBhc3RlOlJ9LG51bGwsNDIsbmEpKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtvbkNsaWNrOlRbMl18fChUWzJdPUk9PnIoXCJ0b2dnbGVcIikpfSxbeS4kc2xvdHNbXCJpbnB1dC1pY29uXCJdJiYheS5oaWRlSW5wdXRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLHtrZXk6MCxjbGFzczpcImRwX19pbnB1dF9pY29uXCIsb25DbGljazpUWzBdfHwoVFswXT1JPT5yKFwidG9nZ2xlXCIpKX0sW2UucmVuZGVyU2xvdCh5LiRzbG90cyxcImlucHV0LWljb25cIildKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksIXkuJHNsb3RzW1wiaW5wdXQtaWNvblwiXSYmIXkuaGlkZUlucHV0SWNvbiYmIXkuJHNsb3RzW1wiZHAtaW5wdXRcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEdlKSx7a2V5OjEsb25DbGljazpUWzFdfHwoVFsxXT1JPT5yKFwidG9nZ2xlXCIpKSxjbGFzczpcImRwX19pbnB1dF9pY29uIGRwX19pbnB1dF9pY29uc1wifSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSkseS4kc2xvdHNbXCJjbGVhci1pY29uXCJdJiZ0LmlucHV0VmFsdWUmJnkuY2xlYXJhYmxlJiYheS5kaXNhYmxlZCYmIXkucmVhZG9ubHk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsYWEsW2UucmVuZGVyU2xvdCh5LiRzbG90cyxcImNsZWFyLWljb25cIix7Y2xlYXI6cmV9KV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSx5LmNsZWFyYWJsZSYmIXkuJHNsb3RzW1wiY2xlYXItaWNvblwiXSYmdC5pbnB1dFZhbHVlJiYheS5kaXNhYmxlZCYmIXkucmVhZG9ubHk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG5uKSx7a2V5OjMsY2xhc3M6XCJkcF9fY2xlYXJfaWNvbiBkcF9faW5wdXRfaWNvbnNcIixvbkNsaWNrOmUud2l0aE1vZGlmaWVycyhyZSxbXCJzdG9wXCIsXCJwcmV2ZW50XCJdKX0sbnVsbCw4LFtcIm9uQ2xpY2tcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pfX19KSxsYT1bXCJ0aXRsZVwiXSxvYT17Y2xhc3M6XCJkcF9fYWN0aW9uX2J1dHRvbnNcIn0sc2E9W1wib25LZXlkb3duXCIsXCJkaXNhYmxlZFwiXSxpYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiQWN0aW9uUm93XCIscHJvcHM6e21lbnVNb3VudDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGludGVybmFsTW9kZWxWYWx1ZTp7dHlwZTpbRGF0ZSxBcnJheV0sZGVmYXVsdDpudWxsfSxjYWxlbmRhcldpZHRoOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LC4uLkVlfSxlbWl0czpbXCJjbG9zZS1waWNrZXJcIixcInNlbGVjdC1kYXRlXCIsXCJzZWxlY3Qtbm93XCIsXCJpbnZhbGlkLXNlbGVjdFwiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCByPXQse2Zvcm1hdERhdGU6bixpc1ZhbGlkVGltZTp1LGRlZmF1bHRzOnB9PSRlKHIpLHtidWlsZE1hdHJpeDpnfT1fZSgpLEI9ZS5yZWYobnVsbCksRT1lLnJlZihudWxsKTtlLm9uTW91bnRlZCgoKT0+e3IuYXJyb3dOYXZpZ2F0aW9uJiZnKFtjZShCKSxjZShFKV0sXCJhY3Rpb25Sb3dcIil9KTtjb25zdCB2PWUuY29tcHV0ZWQoKCk9PnIucmFuZ2UmJiFyLnBhcnRpYWxSYW5nZSYmci5pbnRlcm5hbE1vZGVsVmFsdWU/ci5pbnRlcm5hbE1vZGVsVmFsdWUubGVuZ3RoPT09MjohMCkseD1lLmNvbXB1dGVkKCgpPT4hUC52YWx1ZXx8IW0udmFsdWV8fCF2LnZhbHVlKSxQPWUuY29tcHV0ZWQoKCk9PiFyLmVuYWJsZVRpbWVQaWNrZXJ8fHIuaWdub3JlVGltZVZhbGlkYXRpb24/ITA6dShyLmludGVybmFsTW9kZWxWYWx1ZSkpLG09ZS5jb21wdXRlZCgoKT0+ci5tb250aFBpY2tlcj9yLnJhbmdlJiZBcnJheS5pc0FycmF5KHIuaW50ZXJuYWxNb2RlbFZhbHVlKT8hci5pbnRlcm5hbE1vZGVsVmFsdWUuZmlsdGVyKFU9PiFRKFUpKS5sZW5ndGg6UShyLmludGVybmFsTW9kZWxWYWx1ZSk6ITApLGs9KCk9Pntjb25zdCBfPXAudmFsdWUucHJldmlld0Zvcm1hdDtyZXR1cm4gci50aW1lUGlja2VyfHxyLm1vbnRoUGlja2VyLF8oZ2Uoci5pbnRlcm5hbE1vZGVsVmFsdWUpKX0scT0oKT0+e2NvbnN0IF89ci5pbnRlcm5hbE1vZGVsVmFsdWU7cmV0dXJuIHAudmFsdWUubXVsdGlDYWxlbmRhcnM+MD9gJHtZKF9bMF0pfSAtICR7WShfWzFdKX1gOltZKF9bMF0pLFkoX1sxXSldfSxZPV89Pm4oXyxwLnZhbHVlLnByZXZpZXdGb3JtYXQpLEw9ZS5jb21wdXRlZCgoKT0+IXIuaW50ZXJuYWxNb2RlbFZhbHVlfHwhci5tZW51TW91bnQ/XCJcIjp0eXBlb2YgcC52YWx1ZS5wcmV2aWV3Rm9ybWF0PT1cInN0cmluZ1wiP0FycmF5LmlzQXJyYXkoci5pbnRlcm5hbE1vZGVsVmFsdWUpP3IuaW50ZXJuYWxNb2RlbFZhbHVlLmxlbmd0aD09PTImJnIuaW50ZXJuYWxNb2RlbFZhbHVlWzFdP3EoKTpyLm11bHRpRGF0ZXM/ci5pbnRlcm5hbE1vZGVsVmFsdWUubWFwKF89PmAke1koXyl9YCk6ci5tb2RlbEF1dG8/YCR7WShyLmludGVybmFsTW9kZWxWYWx1ZVswXSl9YDpgJHtZKHIuaW50ZXJuYWxNb2RlbFZhbHVlWzBdKX0gLWA6WShyLmludGVybmFsTW9kZWxWYWx1ZSk6aygpKSxSPSgpPT5yLm11bHRpRGF0ZXM/XCI7IFwiOlwiIC0gXCIsTz1lLmNvbXB1dGVkKCgpPT5BcnJheS5pc0FycmF5KEwudmFsdWUpP0wudmFsdWUuam9pbihSKCkpOkwudmFsdWUpLFE9Xz0+e2lmKCFyLm1vbnRoUGlja2VyKXJldHVybiEwO2xldCBVPSEwO2NvbnN0IEc9JChLZShfKSk7aWYoci5taW5EYXRlJiZyLm1heERhdGUpe2NvbnN0IEo9JChLZShyLm1pbkRhdGUpKSxyZT0kKEtlKHIubWF4RGF0ZSkpO3JldHVybiBiZShHLEopJiZ3ZShHLHJlKXx8c2UoRyxKKXx8c2UoRyxyZSl9aWYoci5taW5EYXRlKXtjb25zdCBKPSQoS2Uoci5taW5EYXRlKSk7VT1iZShHLEopfHxzZShHLEopfWlmKHIubWF4RGF0ZSl7Y29uc3QgSj0kKEtlKHIubWF4RGF0ZSkpO1U9d2UoRyxKKXx8c2UoRyxKKX1yZXR1cm4gVX0sZWU9KCk9PntQLnZhbHVlJiZtLnZhbHVlJiZ2LnZhbHVlP2EoXCJzZWxlY3QtZGF0ZVwiKTphKFwiaW52YWxpZC1zZWxlY3RcIil9O3JldHVybihfLFUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczpcImRwX19hY3Rpb25fcm93XCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh0LmNhbGVuZGFyV2lkdGg/e3dpZHRoOmAke3QuY2FsZW5kYXJXaWR0aH1weGB9Ont9KX0sW18uJHNsb3RzW1wiYWN0aW9uLXJvd1wiXT9lLnJlbmRlclNsb3QoXy4kc2xvdHMsXCJhY3Rpb24tcm93XCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSx7aW50ZXJuYWxNb2RlbFZhbHVlOnQuaW50ZXJuYWxNb2RlbFZhbHVlLGRpc2FibGVkOngudmFsdWUsc2VsZWN0RGF0ZTooKT0+Xy4kZW1pdChcInNlbGVjdC1kYXRlXCIpLGNsb3NlUGlja2VyOigpPT5fLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UudW5yZWYocCkuYWN0aW9uUm93LnNob3dQcmV2aWV3PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX3NlbGVjdGlvbl9wcmV2aWV3XCIsdGl0bGU6Ty52YWx1ZX0sW18uJHNsb3RzW1wiYWN0aW9uLXByZXZpZXdcIl0/ZS5yZW5kZXJTbG90KF8uJHNsb3RzLFwiYWN0aW9uLXByZXZpZXdcIix7a2V5OjAsdmFsdWU6dC5pbnRlcm5hbE1vZGVsVmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxfLiRzbG90c1tcImFjdGlvbi1wcmV2aWV3XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoTy52YWx1ZSksMSldLDY0KSldLDgsbGEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG9hLFtfLiRzbG90c1tcImFjdGlvbi1idXR0b25zXCJdP2UucmVuZGVyU2xvdChfLiRzbG90cyxcImFjdGlvbi1idXR0b25zXCIse2tleTowLHZhbHVlOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksXy4kc2xvdHNbXCJhY3Rpb24tYnV0dG9uc1wiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sWyFfLmlubGluZSYmZS51bnJlZihwKS5hY3Rpb25Sb3cuc2hvd0NhbmNlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MCx0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNhbmNlbEJ1dHRvblJlZlwiLHJlZjpCLGNsYXNzOlwiZHBfX2FjdGlvbl9idXR0b24gZHBfX2FjdGlvbl9jYW5jZWxcIixvbkNsaWNrOlVbMF18fChVWzBdPUc9Pl8uJGVtaXQoXCJjbG9zZS1waWNrZXJcIikpLG9uS2V5ZG93bjpbVVsxXXx8KFVbMV09ZS53aXRoS2V5cyhHPT5fLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpLFtcImVudGVyXCJdKSksVVsyXXx8KFVbMl09ZS53aXRoS2V5cyhHPT5fLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpLFtcInNwYWNlXCJdKSldfSxlLnRvRGlzcGxheVN0cmluZyhfLmNhbmNlbFRleHQpLDU0NSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLF8uc2hvd05vd0J1dHRvbnx8ZS51bnJlZihwKS5hY3Rpb25Sb3cuc2hvd05vdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MSx0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNhbmNlbEJ1dHRvblJlZlwiLHJlZjpCLGNsYXNzOlwiZHBfX2FjdGlvbl9idXR0b24gZHBfX2FjdGlvbl9jYW5jZWxcIixvbkNsaWNrOlVbM118fChVWzNdPUc9Pl8uJGVtaXQoXCJzZWxlY3Qtbm93XCIpKSxvbktleWRvd246W1VbNF18fChVWzRdPWUud2l0aEtleXMoRz0+Xy4kZW1pdChcInNlbGVjdC1ub3dcIiksW1wiZW50ZXJcIl0pKSxVWzVdfHwoVVs1XT1lLndpdGhLZXlzKEc9Pl8uJGVtaXQoXCJzZWxlY3Qtbm93XCIpLFtcInNwYWNlXCJdKSldfSxlLnRvRGlzcGxheVN0cmluZyhfLm5vd0J1dHRvbkxhYmVsKSw1NDUpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLnVucmVmKHApLmFjdGlvblJvdy5zaG93U2VsZWN0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleToyLHR5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uIGRwX19hY3Rpb25fc2VsZWN0XCIsb25LZXlkb3duOltlLndpdGhLZXlzKGVlLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKGVlLFtcInNwYWNlXCJdKV0sb25DbGljazplZSxkaXNhYmxlZDp4LnZhbHVlLHJlZl9rZXk6XCJzZWxlY3RCdXR0b25SZWZcIixyZWY6RX0sZS50b0Rpc3BsYXlTdHJpbmcoXy5zZWxlY3RUZXh0KSw0MSxzYSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSldLDY0KSldLDQpKX19KSx1YT1bXCJhcmlhLWxhYmVsXCJdLGNhPXtjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJcIixyb2xlOlwicm93XCJ9LGRhPXtrZXk6MCxjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbVwiLHJvbGU6XCJncmlkY2VsbFwifSxmYT1lLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJfc2VwYXJhdG9yXCJ9LG51bGwsLTEpLG1hPVtcImFyaWEtbGFiZWxcIl0seWE9e2tleTowLHJvbGU6XCJncmlkY2VsbFwiLGNsYXNzOlwiZHBfX2NhbGVuZGFyX2l0ZW0gZHBfX3dlZWtfbnVtXCJ9LHBhPXtjbGFzczpcImRwX19jZWxsX2lubmVyXCJ9LGdhPVtcImFyaWEtc2VsZWN0ZWRcIixcImFyaWEtZGlzYWJsZWRcIixcImFyaWEtbGFiZWxcIixcIm9uQ2xpY2tcIixcIm9uS2V5ZG93blwiLFwib25Nb3VzZWVudGVyXCIsXCJvbk1vdXNlbGVhdmVcIl0saGE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkNhbGVuZGFyXCIscHJvcHM6e21hcHBlZERhdGVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxnZXRXZWVrTnVtOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6KCk9PlwiXCJ9LHNwZWNpZmljTW9kZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGluc3RhbmNlOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LG1vbnRoOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LHllYXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uRWV9LGVtaXRzOltcInNlbGVjdC1kYXRlXCIsXCJzZXQtaG92ZXItZGF0ZVwiLFwiaGFuZGxlLXNjcm9sbFwiLFwibW91bnRcIixcImhhbmRsZS1zd2lwZVwiLFwiaGFuZGxlLXNwYWNlXCIsXCJ0b29sdGlwLW9wZW5cIixcInRvb2x0aXAtY2xvc2VcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtidWlsZE11bHRpTGV2ZWxNYXRyaXg6dX09X2UoKSx7c2V0RGF0ZU1vbnRoT3JZZWFyOnAsZGVmYXVsdHM6Z309JGUobiksQj1lLnJlZihudWxsKSxFPWUucmVmKHtib3R0b206XCJcIixsZWZ0OlwiXCIsdHJhbnNmb3JtOlwiXCJ9KSx2PWUucmVmKFtdKSx4PWUucmVmKG51bGwpLFA9ZS5yZWYoITApLG09ZS5yZWYoXCJcIiksaz1lLnJlZih7c3RhcnRYOjAsZW5kWDowLHN0YXJ0WTowLGVuZFk6MH0pLHE9ZS5yZWYoW10pLFk9ZS5yZWYoe2xlZnQ6XCI1MCVcIn0pLEw9ZS5jb21wdXRlZCgoKT0+bi5jYWxlbmRhcj9uLmNhbGVuZGFyKG4ubWFwcGVkRGF0ZXMpOm4ubWFwcGVkRGF0ZXMpLFI9ZS5jb21wdXRlZCgoKT0+bi5kYXlOYW1lcz9BcnJheS5pc0FycmF5KG4uZGF5TmFtZXMpP24uZGF5TmFtZXM6bi5kYXlOYW1lcyhuLmxvY2FsZSwrbi53ZWVrU3RhcnQpOlJuKG4uZm9ybWF0TG9jYWxlLG4ubG9jYWxlLCtuLndlZWtTdGFydCkpO2Uub25Nb3VudGVkKCgpPT57cihcIm1vdW50XCIse2NtcDpcImNhbGVuZGFyXCIscmVmczp2fSksbi5ub1N3aXBlfHx4LnZhbHVlJiYoeC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLEQse3Bhc3NpdmU6ITF9KSx4LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHkse3Bhc3NpdmU6ITF9KSx4LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIixULHtwYXNzaXZlOiExfSkpLG4ubW9udGhDaGFuZ2VPblNjcm9sbCYmeC52YWx1ZSYmeC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIixDLHtwYXNzaXZlOiExfSl9KTtjb25zdCBPPWg9Pmg/bi52ZXJ0aWNhbD9cInZOZXh0XCI6XCJuZXh0XCI6bi52ZXJ0aWNhbD9cInZQcmV2aW91c1wiOlwicHJldmlvdXNcIixRPShoLGYpPT57aWYobi50cmFuc2l0aW9ucyl7Y29uc3QgYz1TZShwKCQoKSxuLm1vbnRoLG4ueWVhcikpO20udmFsdWU9YmUoU2UocCgkKCksaCxmKSksYyk/Zy52YWx1ZS50cmFuc2l0aW9uc1tPKCEwKV06Zy52YWx1ZS50cmFuc2l0aW9uc1tPKCExKV0sUC52YWx1ZT0hMSxlLm5leHRUaWNrKCgpPT57UC52YWx1ZT0hMH0pfX0sZWU9ZS5jb21wdXRlZCgoKT0+KHtbbi5jYWxlbmRhckNsYXNzTmFtZV06ISFuLmNhbGVuZGFyQ2xhc3NOYW1lfSkpLF89ZS5jb21wdXRlZCgoKT0+aD0+e2NvbnN0IGY9eG4oaCk7cmV0dXJue2RwX19tYXJrZXJfZG90OmYudHlwZT09PVwiZG90XCIsZHBfX21hcmtlcl9saW5lOmYudHlwZT09PVwibGluZVwifX0pLFU9ZS5jb21wdXRlZCgoKT0+aD0+c2UoaCxCLnZhbHVlKSksRz1lLmNvbXB1dGVkKCgpPT4oe2RwX19jYWxlbmRhcjohMCxkcF9fY2FsZW5kYXJfbmV4dDpnLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjAmJm4uaW5zdGFuY2UhPT0wfSkpLEo9ZS5jb21wdXRlZCgoKT0+aD0+bi5oaWRlT2Zmc2V0RGF0ZXM/aC5jdXJyZW50OiEwKSxyZT1lLmNvbXB1dGVkKCgpPT5uLnNwZWNpZmljTW9kZT97aGVpZ2h0OmAke24ubW9kZUhlaWdodH1weGB9OnZvaWQgMCksb2U9YXN5bmMoaCxmLGMpPT57dmFyIE4sTTtpZihyKFwic2V0LWhvdmVyLWRhdGVcIixoKSwoTT0oTj1oLm1hcmtlcik9PW51bGw/dm9pZCAwOk4udG9vbHRpcCkhPW51bGwmJk0ubGVuZ3RoKXtjb25zdCBXPWNlKHYudmFsdWVbZl1bY10pO2lmKFcpe2NvbnN0e3dpZHRoOm8saGVpZ2h0OnN9PVcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Qi52YWx1ZT1oLnZhbHVlO2xldCBsPXtsZWZ0OmAke28vMn1weGB9LFM9LTUwO2lmKGF3YWl0IGUubmV4dFRpY2soKSxxLnZhbHVlWzBdKXtjb25zdHtsZWZ0OkYsd2lkdGg6dGV9PXEudmFsdWVbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7RjwwJiYobD17bGVmdDpcIjBcIn0sUz0wLFkudmFsdWUubGVmdD1gJHtvLzJ9cHhgKSx3aW5kb3cuaW5uZXJXaWR0aDxGK3RlJiYobD17cmlnaHQ6XCIwXCJ9LFM9MCxZLnZhbHVlLmxlZnQ9YCR7dGUtby8yfXB4YCl9RS52YWx1ZT17Ym90dG9tOmAke3N9cHhgLC4uLmwsdHJhbnNmb3JtOmB0cmFuc2xhdGVYKCR7U30lKWB9LHIoXCJ0b29sdGlwLW9wZW5cIixoLm1hcmtlcil9fX0sVj1oPT57Qi52YWx1ZSYmKEIudmFsdWU9bnVsbCxFLnZhbHVlPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe2JvdHRvbTpcIlwiLGxlZnQ6XCJcIix0cmFuc2Zvcm06XCJcIn0pKSxyKFwidG9vbHRpcC1jbG9zZVwiLGgubWFya2VyKSl9LEQ9aD0+e2sudmFsdWUuc3RhcnRYPWguY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWCxrLnZhbHVlLnN0YXJ0WT1oLmNoYW5nZWRUb3VjaGVzWzBdLnNjcmVlbll9LHk9aD0+e2sudmFsdWUuZW5kWD1oLmNoYW5nZWRUb3VjaGVzWzBdLnNjcmVlblgsay52YWx1ZS5lbmRZPWguY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWSxBKCl9LFQ9aD0+e24udmVydGljYWwmJiFuLmlubGluZSYmaC5wcmV2ZW50RGVmYXVsdCgpfSxBPSgpPT57Y29uc3QgaD1uLnZlcnRpY2FsP1wiWVwiOlwiWFwiO01hdGguYWJzKGsudmFsdWVbYHN0YXJ0JHtofWBdLWsudmFsdWVbYGVuZCR7aH1gXSk+MTAmJnIoXCJoYW5kbGUtc3dpcGVcIixrLnZhbHVlW2BzdGFydCR7aH1gXT5rLnZhbHVlW2BlbmQke2h9YF0/XCJyaWdodFwiOlwibGVmdFwiKX0sST0oaCxmLGMpPT57aCYmKEFycmF5LmlzQXJyYXkodi52YWx1ZVtmXSk/di52YWx1ZVtmXVtjXT1oOnYudmFsdWVbZl09W2hdKSxuLmFycm93TmF2aWdhdGlvbiYmdSh2LnZhbHVlLFwiY2FsZW5kYXJcIil9LEM9aD0+e24ubW9udGhDaGFuZ2VPblNjcm9sbCYmKGgucHJldmVudERlZmF1bHQoKSxyKFwiaGFuZGxlLXNjcm9sbFwiLGgpKX07cmV0dXJuIGEoe3RyaWdnZXJUcmFuc2l0aW9uOlF9KSwoaCxmKT0+e3ZhciBjO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoRy52YWx1ZSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHJlLnZhbHVlKSxyZWZfa2V5OlwiY2FsZW5kYXJXcmFwUmVmXCIscmVmOngscm9sZTpcImdyaWRcIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKGVlLnZhbHVlKSxcImFyaWEtbGFiZWxcIjooYz1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpjLmNhbGVuZGFyV3JhcH0sW3Quc3BlY2lmaWNNb2RlP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixjYSxbaC53ZWVrTnVtYmVycz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLGRhLGUudG9EaXNwbGF5U3RyaW5nKGgud2Vla051bU5hbWUpLDEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoUi52YWx1ZSwoTixNKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6XCJkcF9fY2FsZW5kYXJfaGVhZGVyX2l0ZW1cIixyb2xlOlwiZ3JpZGNlbGxcIixrZXk6TX0sW2guJHNsb3RzW1wiY2FsZW5kYXItaGVhZGVyXCJdP2UucmVuZGVyU2xvdChoLiRzbG90cyxcImNhbGVuZGFyLWhlYWRlclwiLHtrZXk6MCxkYXk6TixpbmRleDpNfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksaC4kc2xvdHNbXCJjYWxlbmRhci1oZWFkZXJcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhOKSwxKV0sNjQpKV0pKSksMTI4KSldKSxmYSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTptLnZhbHVlLGNzczohIWgudHJhbnNpdGlvbnN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+e3ZhciBOO3JldHVybltQLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX2NhbGVuZGFyXCIscm9sZTpcImdyaWRcIixcImFyaWEtbGFiZWxcIjooTj1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpOLmNhbGVuZGFyRGF5c30sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChMLnZhbHVlLChNLFcpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczpcImRwX19jYWxlbmRhcl9yb3dcIixyb2xlOlwicm93XCIsa2V5Old9LFtoLndlZWtOdW1iZXJzPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIseWEsW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIscGEsZS50b0Rpc3BsYXlTdHJpbmcodC5nZXRXZWVrTnVtKE0uZGF5cykpLDEpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChNLmRheXMsKG8scyk9Pnt2YXIgbCxTLEY7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7cm9sZTpcImdyaWRjZWxsXCIsY2xhc3M6XCJkcF9fY2FsZW5kYXJfaXRlbVwiLHJlZl9mb3I6ITAscmVmOnRlPT5JKHRlLFcscyksa2V5OnMrVyxcImFyaWEtc2VsZWN0ZWRcIjpvLmNsYXNzRGF0YS5kcF9fYWN0aXZlX2RhdGV8fG8uY2xhc3NEYXRhLmRwX19yYW5nZV9zdGFydHx8by5jbGFzc0RhdGEuZHBfX3JhbmdlX3N0YXJ0LFwiYXJpYS1kaXNhYmxlZFwiOm8uY2xhc3NEYXRhLmRwX19jZWxsX2Rpc2FibGVkLFwiYXJpYS1sYWJlbFwiOihTPShsPWUudW5yZWYoZykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOmwuZGF5KT09bnVsbD92b2lkIDA6Uy5jYWxsKGwsbyksdGFiaW5kZXg6XCIwXCIsb25DbGljazplLndpdGhNb2RpZmllcnModGU9PmguJGVtaXQoXCJzZWxlY3QtZGF0ZVwiLG8pLFtcInN0b3BcIixcInByZXZlbnRcIl0pLG9uS2V5ZG93bjpbZS53aXRoS2V5cyh0ZT0+aC4kZW1pdChcInNlbGVjdC1kYXRlXCIsbyksW1wiZW50ZXJcIl0pLGUud2l0aEtleXModGU9PmguJGVtaXQoXCJoYW5kbGUtc3BhY2VcIixvKSxbXCJzcGFjZVwiXSldLG9uTW91c2VlbnRlcjp0ZT0+b2UobyxXLHMpLG9uTW91c2VsZWF2ZTp0ZT0+VihvKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX2NlbGxfaW5uZXJcIixvLmNsYXNzRGF0YV0pfSxbaC4kc2xvdHMuZGF5JiZKLnZhbHVlKG8pP2UucmVuZGVyU2xvdChoLiRzbG90cyxcImRheVwiLHtrZXk6MCxkYXk6K28udGV4dCxkYXRlOm8udmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxoLiRzbG90cy5kYXk/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhvLnRleHQpLDEpXSw2NCkpLG8ubWFya2VyJiZKLnZhbHVlKG8pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToyfSxbaC4kc2xvdHMubWFya2VyP2UucmVuZGVyU2xvdChoLiRzbG90cyxcIm1hcmtlclwiLHtrZXk6MCxtYXJrZXI6by5tYXJrZXIsZGF5OitvLnRleHQsZGF0ZTpvLnZhbHVlfSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjEsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhfLnZhbHVlKG8ubWFya2VyKSksc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShvLm1hcmtlci5jb2xvcj97YmFja2dyb3VuZENvbG9yOm8ubWFya2VyLmNvbG9yfTp7fSl9LG51bGwsNikpXSw2NCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFUudmFsdWUoby52YWx1ZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjMsY2xhc3M6XCJkcF9fbWFya2VyX3Rvb2x0aXBcIixyZWZfZm9yOiEwLHJlZl9rZXk6XCJhY3RpdmVUb29sdGlwXCIscmVmOnEsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShFLnZhbHVlKX0sWyhGPW8ubWFya2VyKSE9bnVsbCYmRi50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX3Rvb2x0aXBfY29udGVudFwiLG9uQ2xpY2s6ZlswXXx8KGZbMF09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbXCJzdG9wXCJdKSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qoby5tYXJrZXIudG9vbHRpcCwodGUscGUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6cGUsY2xhc3M6XCJkcF9fdG9vbHRpcF90ZXh0XCJ9LFtoLiRzbG90c1tcIm1hcmtlci10b29sdGlwXCJdP2UucmVuZGVyU2xvdChoLiRzbG90cyxcIm1hcmtlci10b29sdGlwXCIse2tleTowLHRvb2x0aXA6dGUsZGF5Om8udmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxoLiRzbG90c1tcIm1hcmtlci10b29sdGlwXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fdG9vbHRpcF9tYXJrXCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh0ZS5jb2xvcj97YmFja2dyb3VuZENvbG9yOnRlLmNvbG9yfTp7fSl9LG51bGwsNCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixudWxsLGUudG9EaXNwbGF5U3RyaW5nKHRlLnRleHQpLDEpXSw2NCkpXSkpKSwxMjgpKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19hcnJvd19ib3R0b21fdHBcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKFkudmFsdWUpfSxudWxsLDQpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDIpXSw0MCxnYSl9KSwxMjgpKV0pKSksMTI4KSldLDgsbWEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV19KSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKV0sNjQpKV0sMTQsdWEpXSwyKX19fSksa2E9W1wiYXJpYS1sYWJlbFwiLFwiYXJpYS1kaXNhYmxlZFwiXSxidD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiQWN0aW9uSWNvblwiLHByb3BzOnthcmlhTGFiZWw6e30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOltcImFjdGl2YXRlXCIsXCJzZXQtcmVmXCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IHI9ZS5yZWYobnVsbCk7cmV0dXJuIGUub25Nb3VudGVkKCgpPT5hKFwic2V0LXJlZlwiLHIpKSwobix1KT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLGNsYXNzOlwiZHBfX2J0biBkcF9fbW9udGhfeWVhcl9jb2xfbmF2XCIsb25DbGljazp1WzBdfHwodVswXT1wPT5uLiRlbWl0KFwiYWN0aXZhdGVcIikpLG9uS2V5ZG93bjpbdVsxXXx8KHVbMV09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMocD0+bi4kZW1pdChcImFjdGl2YXRlXCIpLFtcInByZXZlbnRcIl0pLFtcImVudGVyXCJdKSksdVsyXXx8KHVbMl09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMocD0+bi4kZW1pdChcImFjdGl2YXRlXCIpLFtcInByZXZlbnRcIl0pLFtcInNwYWNlXCJdKSldLHRhYmluZGV4OlwiMFwiLFwiYXJpYS1sYWJlbFwiOm4uYXJpYUxhYmVsLFwiYXJpYS1kaXNhYmxlZFwiOm4uZGlzYWJsZWQscmVmX2tleTpcImVsUmVmXCIscmVmOnJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9faW5uZXJfbmF2XCIse2RwX19pbm5lcl9uYXZfZGlzYWJsZWQ6bi5kaXNhYmxlZH1dKX0sW2UucmVuZGVyU2xvdChuLiRzbG90cyxcImRlZmF1bHRcIildLDIpXSw0MCxrYSkpfX0pLHdhPVtcIm9uS2V5ZG93blwiXSxiYT17Y2xhc3M6XCJkcF9fc2VsZWN0aW9uX2dyaWRfaGVhZGVyXCJ9LERhPVtcImFyaWEtc2VsZWN0ZWRcIixcImFyaWEtZGlzYWJsZWRcIixcIm9uQ2xpY2tcIixcIm9uS2V5ZG93blwiLFwib25Nb3VzZW92ZXJcIl0sTWE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCJdLFdlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJTZWxlY3Rpb25HcmlkXCIscHJvcHM6e2l0ZW1zOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtb2RlbFZhbHVlOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0Om51bGx9LG11bHRpTW9kZWxWYWx1ZTp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZGlzYWJsZWRWYWx1ZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1pblZhbHVlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1heFZhbHVlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHllYXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sc2tpcEFjdGl2ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhlYWRlclJlZnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LHNraXBCdXR0b25SZWY6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb250aFBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHllYXJQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxlc2NDbG9zZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXJpYUxhYmVsczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0saGlkZU5hdmlnYXRpb246e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGludGVybmFsTW9kZWxWYWx1ZTp7dHlwZTpbRGF0ZSxBcnJheV0sZGVmYXVsdDpudWxsfSxhdXRvQXBwbHlNb250aDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxlbWl0czpbXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixcInNlbGVjdGVkXCIsXCJ0b2dnbGVcIixcInJlc2V0LWZsb3dcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtzZXRTZWxlY3Rpb25HcmlkOnUsYnVpbGRNdWx0aUxldmVsTWF0cml4OnAsc2V0TW9udGhQaWNrZXI6Z309X2UoKSx7aGlkZU5hdmlnYXRpb25CdXR0b25zOkJ9PSRlKG4pLEU9ZS5yZWYoITEpLHY9ZS5yZWYobnVsbCkseD1lLnJlZihudWxsKSxQPWUucmVmKFtdKSxtPWUucmVmKCksaz1lLnJlZihudWxsKSxxPWUucmVmKDApLFk9ZS5yZWYobnVsbCk7ZS5vbkJlZm9yZVVwZGF0ZSgoKT0+e3YudmFsdWU9bnVsbH0pLGUub25Nb3VudGVkKCgpPT57dmFyIEM7ZS5uZXh0VGljaygpLnRoZW4oKCk9PnJlKCkpLFIoKSxMKCEwKSwoQz12LnZhbHVlKT09bnVsbHx8Qy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSksZS5vblVubW91bnRlZCgoKT0+TCghMSkpO2NvbnN0IEw9Qz0+e3ZhciBoO24uYXJyb3dOYXZpZ2F0aW9uJiYoKGg9bi5oZWFkZXJSZWZzKSE9bnVsbCYmaC5sZW5ndGg/ZyhDKTp1KEMpKX0sUj0oKT0+e2NvbnN0IEM9Y2UoeCk7QyYmKG4udGV4dElucHV0fHxDLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksRS52YWx1ZT1DLmNsaWVudEhlaWdodDxDLnNjcm9sbEhlaWdodCl9LE89ZS5jb21wdXRlZCgoKT0+KHtkcF9fb3ZlcmxheTohMH0pKSxRPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX292ZXJsYXlfY29sOiEwfSkpLGVlPUM9Pm4ubW9udGhQaWNrZXImJiFuLmF1dG9BcHBseU1vbnRoP3NlKG4uaW50ZXJuYWxNb2RlbFZhbHVlLGQuc2V0WWVhcihkLnNldE1vbnRoKG5ldyBEYXRlLEMudmFsdWUpLG4ueWVhcikpOm4uc2tpcEFjdGl2ZT8hMTpDLnZhbHVlPT09bi5tb2RlbFZhbHVlLF89ZS5jb21wdXRlZCgoKT0+bi5pdGVtcy5tYXAoQz0+Qy5maWx0ZXIoaD0+aCkubWFwKGg9Pnt2YXIgTixNLFc7Y29uc3QgZj1uLmRpc2FibGVkVmFsdWVzLnNvbWUobz0+bz09PWgudmFsdWUpfHxKKGgudmFsdWUpLGM9KE49bi5tdWx0aU1vZGVsVmFsdWUpIT1udWxsJiZOLmxlbmd0aD8oTT1uLm11bHRpTW9kZWxWYWx1ZSk9PW51bGw/dm9pZCAwOk0uc29tZShvPT5zZShvLGQuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Quc2V0TW9udGgobmV3IERhdGUsaC52YWx1ZSk6bmV3IERhdGUsbi5tb250aFBpY2tlcj9uLnllYXI6aC52YWx1ZSkpKTplZShoKTtyZXR1cm57Li4uaCxjbGFzc05hbWU6e2RwX19vdmVybGF5X2NlbGxfYWN0aXZlOmMsZHBfX292ZXJsYXlfY2VsbDohYyxkcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVkOmYsZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWQ6ZiYmYyxkcF9fb3ZlcmxheV9jZWxsX3BhZDohMCxkcF9fY2VsbF9pbl9iZXR3ZWVuOihXPW4ubXVsdGlNb2RlbFZhbHVlKSE9bnVsbCYmVy5sZW5ndGgmJm4uc2tpcEFjdGl2ZT9WKGgudmFsdWUpOiExfX19KSkpLFU9ZS5jb21wdXRlZCgoKT0+KHtkcF9fYnV0dG9uOiEwLGRwX19vdmVybGF5X2FjdGlvbjohMCxkcF9fb3Zlcl9hY3Rpb25fc2Nyb2xsOkUudmFsdWUsZHBfX2J1dHRvbl9ib3R0b206bi5hdXRvQXBwbHl9KSksRz1lLmNvbXB1dGVkKCgpPT57dmFyIEMsaDtyZXR1cm57ZHBfX292ZXJsYXlfY29udGFpbmVyOiEwLGRwX19jb250YWluZXJfZmxleDooKEM9bi5pdGVtcyk9PW51bGw/dm9pZCAwOkMubGVuZ3RoKTw9NixkcF9fY29udGFpbmVyX2Jsb2NrOigoaD1uLml0ZW1zKT09bnVsbD92b2lkIDA6aC5sZW5ndGgpPjZ9fSksSj1DPT57Y29uc3QgaD1uLm1heFZhbHVlfHxuLm1heFZhbHVlPT09MCxmPW4ubWluVmFsdWV8fG4ubWluVmFsdWU9PT0wO3JldHVybiFoJiYhZj8hMTpoJiZmPytDPituLm1heFZhbHVlfHwrQzwrbi5taW5WYWx1ZTpoPytDPituLm1heFZhbHVlOmY/K0M8K24ubWluVmFsdWU6ITF9LHJlPSgpPT57Y29uc3QgQz1jZSh2KSxoPWNlKHgpLGY9Y2UoayksYz1jZShZKSxOPWY/Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ6MDtoJiYocS52YWx1ZT1oLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodC1OKSxDJiZjJiYoYy5zY3JvbGxUb3A9Qy5vZmZzZXRUb3AtYy5vZmZzZXRUb3AtKHEudmFsdWUvMi1DLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCktTil9LG9lPUM9Pnshbi5kaXNhYmxlZFZhbHVlcy5zb21lKGg9Pmg9PT1DKSYmIUooQykmJihyKFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsQykscihcInNlbGVjdGVkXCIpKX0sVj1DPT57Y29uc3QgaD1uLm1vbnRoUGlja2VyP24ueWVhcjpDO3JldHVybiBFdChuLm11bHRpTW9kZWxWYWx1ZSxkLnNldFllYXIobi5tb250aFBpY2tlcj9kLnNldE1vbnRoKG5ldyBEYXRlLG0udmFsdWV8fDApOm5ldyBEYXRlLG4ubW9udGhQaWNrZXI/aDptLnZhbHVlfHxoKSxkLnNldFllYXIobi5tb250aFBpY2tlcj9kLnNldE1vbnRoKG5ldyBEYXRlLEMpOm5ldyBEYXRlLGgpKX0sRD0oKT0+e3IoXCJ0b2dnbGVcIikscihcInJlc2V0LWZsb3dcIil9LHk9KCk9PntuLmVzY0Nsb3NlJiZEKCl9LFQ9KEMsaCxmLGMpPT57QyYmKGgudmFsdWU9PT0rbi5tb2RlbFZhbHVlJiYhbi5kaXNhYmxlZFZhbHVlcy5pbmNsdWRlcyhoLnZhbHVlKSYmKHYudmFsdWU9Qyksbi5hcnJvd05hdmlnYXRpb24mJihBcnJheS5pc0FycmF5KFAudmFsdWVbZl0pP1AudmFsdWVbZl1bY109QzpQLnZhbHVlW2ZdPVtDXSxBKCkpKX0sQT0oKT0+e3ZhciBoLGY7Y29uc3QgQz0oaD1uLmhlYWRlclJlZnMpIT1udWxsJiZoLmxlbmd0aD9bbi5oZWFkZXJSZWZzXS5jb25jYXQoUC52YWx1ZSk6UC52YWx1ZS5jb25jYXQoW24uc2tpcEJ1dHRvblJlZj9bXTpbay52YWx1ZV1dKTtwKGdlKEMpLChmPW4uaGVhZGVyUmVmcykhPW51bGwmJmYubGVuZ3RoP1wibW9udGhQaWNrZXJcIjpcInNlbGVjdGlvbkdyaWRcIil9LEk9Qz0+e24uYXJyb3dOYXZpZ2F0aW9ufHxDLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfTtyZXR1cm4gYSh7Zm9jdXNHcmlkOlJ9KSwoQyxoKT0+e3ZhciBmO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse3JlZl9rZXk6XCJncmlkV3JhcFJlZlwiLHJlZjp4LGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoTy52YWx1ZSkscm9sZTpcImRpYWxvZ1wiLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyh5LFtcImVzY1wiXSksaFswXXx8KGhbMF09ZS53aXRoS2V5cyhjPT5JKGMpLFtcImxlZnRcIl0pKSxoWzFdfHwoaFsxXT1lLndpdGhLZXlzKGM9PkkoYyksW1widXBcIl0pKSxoWzJdfHwoaFsyXT1lLndpdGhLZXlzKGM9PkkoYyksW1wiZG93blwiXSkpLGhbM118fChoWzNdPWUud2l0aEtleXMoYz0+SShjKSxbXCJyaWdodFwiXSkpXX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoRy52YWx1ZSkscmVmX2tleTpcImNvbnRhaW5lclJlZlwiLHJlZjpZLHJvbGU6XCJncmlkXCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7aGVpZ2h0OmAke3EudmFsdWV9cHhgfSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLGJhLFtlLnJlbmRlclNsb3QoQy4kc2xvdHMsXCJoZWFkZXJcIildKSxDLiRzbG90cy5vdmVybGF5P2UucmVuZGVyU2xvdChDLiRzbG90cyxcIm92ZXJsYXlcIix7a2V5OjB9KTooZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QoXy52YWx1ZSwoYyxOKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9fb3ZlcmxheV9yb3dcIix7ZHBfX2ZsZXhfcm93Ol8udmFsdWUubGVuZ3RoPj0zfV0pLGtleTpOLHJvbGU6XCJyb3dcIn0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChjLChNLFcpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtyb2xlOlwiZ3JpZGNlbGxcIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFEudmFsdWUpLGtleTpNLnZhbHVlLFwiYXJpYS1zZWxlY3RlZFwiOk0udmFsdWU9PT10Lm1vZGVsVmFsdWUmJiF0LmRpc2FibGVkVmFsdWVzLmluY2x1ZGVzKE0udmFsdWUpLFwiYXJpYS1kaXNhYmxlZFwiOk0uY2xhc3NOYW1lLmRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWQscmVmX2ZvcjohMCxyZWY6bz0+VChvLE0sTixXKSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOm89Pm9lKE0udmFsdWUpLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhvPT5vZShNLnZhbHVlKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhvPT5vZShNLnZhbHVlKSxbXCJzcGFjZVwiXSldLG9uTW91c2VvdmVyOm89Pm0udmFsdWU9TS52YWx1ZX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoTS5jbGFzc05hbWUpfSxbQy4kc2xvdHMuaXRlbT9lLnJlbmRlclNsb3QoQy4kc2xvdHMsXCJpdGVtXCIse2tleTowLGl0ZW06TX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLEMuJHNsb3RzLml0ZW0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhNLnRleHQpLDEpXSw2NCkpXSwyKV0sNDIsRGEpKSksMTI4KSldLDIpKSksMTI4KSldLDYpLEMuJHNsb3RzW1wiYnV0dG9uLWljb25cIl0/ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KGY9dC5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Zi50b2dnbGVPdmVybGF5LGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVS52YWx1ZSksdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcInRvZ2dsZUJ1dHRvblwiLHJlZjprLG9uQ2xpY2s6RCxvbktleWRvd246W2Uud2l0aEtleXMoRCxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhELFtcInRhYlwiXSldfSxbZS5yZW5kZXJTbG90KEMuJHNsb3RzLFwiYnV0dG9uLWljb25cIildLDQyLE1hKSksW1tlLnZTaG93LCFlLnVucmVmKEIpKHQudHlwZSldXSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDQyLHdhKX19fSksQ2E9W1wiYXJpYS1sYWJlbFwiXSxlbj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiUmVndWxhclBpY2tlclwiLHByb3BzOnthcmlhTGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sc2hvd1NlbGVjdGlvbkdyaWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb2RlbFZhbHVlOnt0eXBlOk51bWJlcixkZWZhdWx0Om51bGx9LGl0ZW1zOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxkaXNhYmxlZFZhbHVlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbWluVmFsdWU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6bnVsbH0sbWF4VmFsdWU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6bnVsbH0sc2xvdE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sb3ZlcmxheVNsb3Q6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0saGVhZGVyUmVmczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZXNjQ2xvc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSx0eXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LHRyYW5zaXRpb25zOnt0eXBlOltPYmplY3QsQm9vbGVhbl0sZGVmYXVsdDohMX0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXJpYUxhYmVsczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0saGlkZU5hdmlnYXRpb246e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119fSxlbWl0czpbXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixcInRvZ2dsZVwiLFwic2V0LXJlZlwiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCByPXQse3RyYW5zaXRpb25OYW1lOm4sc2hvd1RyYW5zaXRpb246dX09UWUoci50cmFuc2l0aW9ucykscD1lLnJlZihudWxsKTtyZXR1cm4gZS5vbk1vdW50ZWQoKCk9PmEoXCJzZXQtcmVmXCIscCkpLChnLEIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19idG4gZHBfX21vbnRoX3llYXJfc2VsZWN0XCIsb25DbGljazpCWzBdfHwoQlswXT1FPT5nLiRlbWl0KFwidG9nZ2xlXCIpKSxvbktleWRvd246W0JbMV18fChCWzFdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEU9PmcuJGVtaXQoXCJ0b2dnbGVcIiksW1wicHJldmVudFwiXSksW1wiZW50ZXJcIl0pKSxCWzJdfHwoQlsyXT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhFPT5nLiRlbWl0KFwidG9nZ2xlXCIpLFtcInByZXZlbnRcIl0pLFtcInNwYWNlXCJdKSldLFwiYXJpYS1sYWJlbFwiOnQuYXJpYUxhYmVsLHRhYmluZGV4OlwiMFwiLHJlZl9rZXk6XCJlbFJlZlwiLHJlZjpwfSxbZS5yZW5kZXJTbG90KGcuJHNsb3RzLFwiZGVmYXVsdFwiKV0sNDAsQ2EpLGUuY3JlYXRlVk5vZGUoZS5UcmFuc2l0aW9uLHtuYW1lOmUudW5yZWYobikodC5zaG93U2VsZWN0aW9uR3JpZCksY3NzOmUudW5yZWYodSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3Quc2hvd1NlbGVjdGlvbkdyaWQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhXZSxlLm1lcmdlUHJvcHMoe2tleTowfSx7bW9kZWxWYWx1ZTp0Lm1vZGVsVmFsdWUsaXRlbXM6dC5pdGVtcyxkaXNhYmxlZFZhbHVlczp0LmRpc2FibGVkVmFsdWVzLG1pblZhbHVlOnQubWluVmFsdWUsbWF4VmFsdWU6dC5tYXhWYWx1ZSxlc2NDbG9zZTp0LmVzY0Nsb3NlLHR5cGU6dC50eXBlLGFycm93TmF2aWdhdGlvbjp0LmFycm93TmF2aWdhdGlvbix0ZXh0SW5wdXQ6dC50ZXh0SW5wdXQsYXV0b0FwcGx5OnQuYXV0b0FwcGx5LGFyaWFMYWJlbHM6dC5hcmlhTGFiZWxzLGhpZGVOYXZpZ2F0aW9uOnQuaGlkZU5hdmlnYXRpb259LHtcImhlYWRlci1yZWZzXCI6W10sXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6QlszXXx8KEJbM109RT0+Zy4kZW1pdChcInVwZGF0ZTptb2RlbC12YWx1ZVwiLEUpKSxvblRvZ2dsZTpCWzRdfHwoQls0XT1FPT5nLiRlbWl0KFwidG9nZ2xlXCIpKX0pLGUuY3JlYXRlU2xvdHMoe1wiYnV0dG9uLWljb25cIjplLndpdGhDdHgoKCk9PltnLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5yZW5kZXJTbG90KGcuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGcuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoR2UpLHtrZXk6MX0pKV0pLF86Mn0sW2cuJHNsb3RzW3Quc2xvdE5hbWVdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06RX0pPT5bZS5yZW5kZXJTbG90KGcuJHNsb3RzLHQuc2xvdE5hbWUse2l0ZW06RX0pXSksa2V5OlwiMFwifTp2b2lkIDAsZy4kc2xvdHNbdC5vdmVybGF5U2xvdF0/e25hbWU6XCJvdmVybGF5XCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGcuJHNsb3RzLHQub3ZlcmxheVNsb3QpXSksa2V5OlwiMVwifTp2b2lkIDAsZy4kc2xvdHNbYCR7dC5vdmVybGF5U2xvdH0taGVhZGVyYF0/e25hbWU6XCJoZWFkZXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QoZy4kc2xvdHMsYCR7dC5vdmVybGF5U2xvdH0taGVhZGVyYCldKSxrZXk6XCIyXCJ9OnZvaWQgMF0pLDEwNDApKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pXSw2NCkpfX0pLCRhPXtjbGFzczpcImRwX19tb250aF95ZWFyX3Jvd1wifSxTYT17Y2xhc3M6XCJkcF9fbW9udGhfcGlja2VyX2hlYWRlclwifSxCYT1bXCJhcmlhLWxhYmVsXCJdLE5hPVtcImFyaWEtbGFiZWxcIl0sdmE9W1wiYXJpYS1sYWJlbFwiXSxQYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiTW9udGhZZWFyUGlja2VyXCIscHJvcHM6e21vbnRoOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LHllYXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0saW5zdGFuY2U6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0seWVhcnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1vbnRoczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LC4uLkVlfSxlbWl0czpbXCJ1cGRhdGUtbW9udGgteWVhclwiLFwibW9udGgteWVhci1zZWxlY3RcIixcIm1vdW50XCIsXCJyZXNldC1mbG93XCIsXCJvdmVybGF5LWNsb3NlZFwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2RlZmF1bHRzOnV9PSRlKG4pLHt0cmFuc2l0aW9uTmFtZTpwLHNob3dUcmFuc2l0aW9uOmd9PVFlKHUudmFsdWUudHJhbnNpdGlvbnMpLHtidWlsZE1hdHJpeDpCfT1fZSgpLHtoYW5kbGVNb250aFllYXJDaGFuZ2U6RSxpc0Rpc2FibGVkOnYsdXBkYXRlTW9udGhZZWFyOnh9PUpuKG4sciksUD1lLnJlZighMSksbT1lLnJlZighMSksaz1lLnJlZihbbnVsbCxudWxsLG51bGwsbnVsbF0pLHE9ZS5yZWYobnVsbCksWT1lLnJlZihudWxsKSxMPWUucmVmKG51bGwpO2Uub25Nb3VudGVkKCgpPT57cihcIm1vdW50XCIpfSk7Y29uc3QgUj1zPT4oe2dldDooKT0+bltzXSxzZXQ6bD0+e2NvbnN0IFM9cz09PVwibW9udGhcIj9cInllYXJcIjpcIm1vbnRoXCI7cihcInVwZGF0ZS1tb250aC15ZWFyXCIse1tzXTpsLFtTXTpuW1NdfSkscihcIm1vbnRoLXllYXItc2VsZWN0XCIscz09PVwieWVhclwiKSxzPT09XCJtb250aFwiP2MoITApOk4oITApfX0pLE89ZS5jb21wdXRlZChSKFwibW9udGhcIikpLFE9ZS5jb21wdXRlZChSKFwieWVhclwiKSksZWU9cz0+e2NvbnN0IGw9ZC5nZXRZZWFyKCQocykpO3JldHVybiBuLnllYXI9PT1sfSxfPWUuY29tcHV0ZWQoKCk9Pm4ubW9udGhQaWNrZXI/QXJyYXkuaXNBcnJheShuLmRpc2FibGVkRGF0ZXMpP24uZGlzYWJsZWREYXRlcy5tYXAocz0+JChzKSkuZmlsdGVyKHM9PmVlKHMpKS5tYXAocz0+ZC5nZXRNb250aChzKSk6W106W10pLFU9ZS5jb21wdXRlZCgoKT0+cz0+e2NvbnN0IGw9cz09PVwibW9udGhcIjtyZXR1cm57c2hvd1NlbGVjdGlvbkdyaWQ6KGw/UDptKS52YWx1ZSxpdGVtczoobD9BOkkpLnZhbHVlLGRpc2FibGVkVmFsdWVzOnUudmFsdWUuZmlsdGVyc1tsP1wibW9udGhzXCI6XCJ5ZWFyc1wiXS5jb25jYXQoXy52YWx1ZSksbWluVmFsdWU6KGw/b2U6SikudmFsdWUsbWF4VmFsdWU6KGw/VjpyZSkudmFsdWUsaGVhZGVyUmVmczpsJiZuLm1vbnRoUGlja2VyP1txLnZhbHVlLFkudmFsdWUsTC52YWx1ZV06W10sZXNjQ2xvc2U6bi5lc2NDbG9zZSx0cmFuc2l0aW9uczp1LnZhbHVlLnRyYW5zaXRpb25zLGFyaWFMYWJlbHM6dS52YWx1ZS5hcmlhTGFiZWxzLHRleHRJbnB1dDpuLnRleHRJbnB1dCxhdXRvQXBwbHk6bi5hdXRvQXBwbHksYXJyb3dOYXZpZ2F0aW9uOm4uYXJyb3dOYXZpZ2F0aW9uLGhpZGVOYXZpZ2F0aW9uOm4uaGlkZU5hdmlnYXRpb259fSksRz1lLmNvbXB1dGVkKCgpPT5zPT4oe21vbnRoOm4ubW9udGgseWVhcjpuLnllYXIsaXRlbXM6cz09PVwibW9udGhcIj9uLm1vbnRoczpuLnllYXJzLGluc3RhbmNlOm4uaW5zdGFuY2UsdXBkYXRlTW9udGhZZWFyOngsdG9nZ2xlOnM9PT1cIm1vbnRoXCI/YzpOfSkpLEo9ZS5jb21wdXRlZCgoKT0+bi5taW5EYXRlP2QuZ2V0WWVhcigkKG4ubWluRGF0ZSkpOm51bGwpLHJlPWUuY29tcHV0ZWQoKCk9Pm4ubWF4RGF0ZT9kLmdldFllYXIoJChuLm1heERhdGUpKTpudWxsKSxvZT1lLmNvbXB1dGVkKCgpPT57aWYobi5taW5EYXRlJiZKLnZhbHVlKXtpZihKLnZhbHVlPm4ueWVhcilyZXR1cm4gMTI7aWYoSi52YWx1ZT09PW4ueWVhcilyZXR1cm4gZC5nZXRNb250aCgkKG4ubWluRGF0ZSkpfXJldHVybiBudWxsfSksVj1lLmNvbXB1dGVkKCgpPT5uLm1heERhdGUmJnJlLnZhbHVlP3JlLnZhbHVlPG4ueWVhcj8tMTpyZS52YWx1ZT09PW4ueWVhcj9kLmdldE1vbnRoKCQobi5tYXhEYXRlKSk6bnVsbDpudWxsKSxEPWUuY29tcHV0ZWQoKCk9PihuLnJhbmdlfHxuLm11bHRpRGF0ZXMpJiZuLmludGVybmFsTW9kZWxWYWx1ZSYmKG4ubW9udGhQaWNrZXJ8fG4ueWVhclBpY2tlcik/bi5pbnRlcm5hbE1vZGVsVmFsdWU6W10pLHk9cz0+e2NvbnN0IGw9W10sUz1GPT5GO2ZvcihsZXQgRj0wO0Y8cy5sZW5ndGg7Ris9Myl7Y29uc3QgdGU9W3NbRl0sc1tGKzFdLHNbRisyXV07bC5wdXNoKFModGUpKX1yZXR1cm4gbH0sVD1lLmNvbXB1dGVkKCgpPT57Y29uc3Qgcz1uLm1vbnRocy5maW5kKGw9PmwudmFsdWU9PT1uLm1vbnRoKTtyZXR1cm4gc3x8e3RleHQ6XCJcIix2YWx1ZTowfX0pLEE9ZS5jb21wdXRlZCgoKT0+eShuLm1vbnRocykpLEk9ZS5jb21wdXRlZCgoKT0+eShuLnllYXJzKSksQz1lLmNvbXB1dGVkKCgpPT51LnZhbHVlLm11bHRpQ2FsZW5kYXJzP24ubXVsdGlDYWxlbmRhcnNTb2xvPyEwOm4uaW5zdGFuY2U9PT0wOiEwKSxoPWUuY29tcHV0ZWQoKCk9PnUudmFsdWUubXVsdGlDYWxlbmRhcnM/bi5tdWx0aUNhbGVuZGFyc1NvbG8/ITA6bi5pbnN0YW5jZT09PXUudmFsdWUubXVsdGlDYWxlbmRhcnMtMTohMCksZj0ocyxsKT0+e2whPT12b2lkIDA/cy52YWx1ZT1sOnMudmFsdWU9IXMudmFsdWV9LGM9KHM9ITEsbCk9PntNKHMpLGYoUCxsKSxQLnZhbHVlfHxyKFwib3ZlcmxheS1jbG9zZWRcIil9LE49KHM9ITEsbCk9PntNKHMpLGYobSxsKSxtLnZhbHVlfHxyKFwib3ZlcmxheS1jbG9zZWRcIil9LE09cz0+e3N8fHIoXCJyZXNldC1mbG93XCIpfSxXPShzPSExKT0+e3YudmFsdWUocyl8fHIoXCJ1cGRhdGUtbW9udGgteWVhclwiLHt5ZWFyOnM/bi55ZWFyKzE6bi55ZWFyLTEsbW9udGg6bi5tb250aCxmcm9tTmF2OiEwfSl9LG89KHMsbCk9PntuLmFycm93TmF2aWdhdGlvbiYmKGsudmFsdWVbbF09Y2UocyksQihrLnZhbHVlLFwibW9udGhZZWFyXCIpKX07cmV0dXJuIGEoe3RvZ2dsZU1vbnRoUGlja2VyOmMsdG9nZ2xlWWVhclBpY2tlcjpOLGhhbmRsZU1vbnRoWWVhckNoYW5nZTpFfSksKHMsbCk9Pnt2YXIgUyxGLHRlLHBlLHllO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsJGEsW3MuJHNsb3RzW1wibW9udGgteWVhclwiXT9lLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aC15ZWFyXCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSx7bW9udGg6dC5tb250aCx5ZWFyOnQueWVhcixtb250aHM6dC5tb250aHMseWVhcnM6dC55ZWFycyx1cGRhdGVNb250aFllYXI6ZS51bnJlZih4KSxoYW5kbGVNb250aFllYXJDaGFuZ2U6ZS51bnJlZihFKSxpbnN0YW5jZTp0Lmluc3RhbmNlfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sWyFzLm1vbnRoUGlja2VyJiYhcy55ZWFyUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbQy52YWx1ZSYmIXMudmVydGljYWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhidCx7a2V5OjAsXCJhcmlhLWxhYmVsXCI6KFM9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Uy5wcmV2TW9udGgsZGlzYWJsZWQ6ZS51bnJlZih2KSghMSksb25BY3RpdmF0ZTpsWzBdfHwobFswXT1aPT5lLnVucmVmKEUpKCExKSksb25TZXRSZWY6bFsxXXx8KGxbMV09Wj0+byhaLDApKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcy4kc2xvdHNbXCJhcnJvdy1sZWZ0XCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcImFycm93LWxlZnRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZ0KSx7a2V5OjF9KSldKSxfOjN9LDgsW1wiYXJpYS1sYWJlbFwiLFwiZGlzYWJsZWRcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19tb250aF95ZWFyX3dyYXBcIix7ZHBfX3llYXJfZGlzYWJsZV9zZWxlY3Q6bi5kaXNhYmxlWWVhclNlbGVjdH1dKX0sW2UuY3JlYXRlVk5vZGUoZW4sZS5tZXJnZVByb3BzKHt0eXBlOlwibW9udGhcIixcInNsb3QtbmFtZVwiOlwibW9udGgtb3ZlcmxheS12YWxcIixcIm92ZXJsYXktc2xvdFwiOlwib3ZlcmxheS1tb250aFwiLFwiYXJpYS1sYWJlbFwiOihGPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkYub3Blbk1vbnRoc092ZXJsYXksbW9kZWxWYWx1ZTpPLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOmxbMl18fChsWzJdPVo9Pk8udmFsdWU9Wil9LFUudmFsdWUoXCJtb250aFwiKSx7b25Ub2dnbGU6YyxvblNldFJlZjpsWzNdfHwobFszXT1aPT5vKFosMSkpfSksZS5jcmVhdGVTbG90cyh7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltzLiRzbG90cy5tb250aD9lLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aFwiLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0sVC52YWx1ZSkpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90cy5tb250aD9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKFQudmFsdWUudGV4dCksMSldLDY0KSldKSxfOjJ9LFtzLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/e25hbWU6XCJjYWxlbmRhci1pY29uXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiKV0pLGtleTpcIjBcIn06dm9pZCAwLHMuJHNsb3RzW1wibW9udGgtb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcIm1vbnRoLW92ZXJsYXktdmFsXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpafSk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aC1vdmVybGF5LXZhbHVlXCIse3RleHQ6Wi50ZXh0LHZhbHVlOloudmFsdWV9KV0pLGtleTpcIjFcIn06dm9pZCAwLHMuJHNsb3RzW1wibW9udGgtb3ZlcmxheVwiXT97bmFtZTpcIm92ZXJsYXktbW9udGhcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aC1vdmVybGF5XCIsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhHLnZhbHVlKFwibW9udGhcIikpKSldKSxrZXk6XCIyXCJ9OnZvaWQgMCxzLiRzbG90c1tcIm1vbnRoLW92ZXJsYXktaGVhZGVyXCJdP3tuYW1lOlwib3ZlcmxheS1tb250aC1oZWFkZXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJtb250aC1vdmVybGF5LWhlYWRlclwiLHt0b2dnbGU6Y30pXSksa2V5OlwiM1wifTp2b2lkIDBdKSwxMDQwLFtcImFyaWEtbGFiZWxcIixcIm1vZGVsVmFsdWVcIl0pLG4uZGlzYWJsZVllYXJTZWxlY3Q/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlbixlLm1lcmdlUHJvcHMoe2tleTowLHR5cGU6XCJ5ZWFyXCIsXCJzbG90LW5hbWVcIjpcInllYXItb3ZlcmxheS12YWxcIixcIm92ZXJsYXktc2xvdFwiOlwib3ZlcmxheS15ZWFyXCIsXCJhcmlhLWxhYmVsXCI6KHRlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnRlLm9wZW5ZZWFyc092ZXJsYXksbW9kZWxWYWx1ZTpRLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOmxbNF18fChsWzRdPVo9PlEudmFsdWU9Wil9LFUudmFsdWUoXCJ5ZWFyXCIpLHtvblRvZ2dsZTpOLG9uU2V0UmVmOmxbNV18fChsWzVdPVo9Pm8oWiwyKSl9KSxlLmNyZWF0ZVNsb3RzKHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3MuJHNsb3RzLnllYXI/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwieWVhclwiLHtrZXk6MCx5ZWFyOnQueWVhcn0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzLnllYXI/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnllYXIpLDEpXSw2NCkpXSksXzoyfSxbcy4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP3tuYW1lOlwiY2FsZW5kYXItaWNvblwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcImNhbGVuZGFyLWljb25cIildKSxrZXk6XCIwXCJ9OnZvaWQgMCxzLiRzbG90c1tcInllYXItb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcInllYXItb3ZlcmxheS12YWxcIixmbjplLndpdGhDdHgoKHtpdGVtOlp9KT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcInllYXItb3ZlcmxheS12YWx1ZVwiLHt0ZXh0OloudGV4dCx2YWx1ZTpaLnZhbHVlfSldKSxrZXk6XCIxXCJ9OnZvaWQgMCxzLiRzbG90c1tcInllYXItb3ZlcmxheVwiXT97bmFtZTpcIm92ZXJsYXkteWVhclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChzLiRzbG90cyxcInllYXItb3ZlcmxheVwiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoRy52YWx1ZShcInllYXJcIikpKSldKSxrZXk6XCIyXCJ9OnZvaWQgMCxzLiRzbG90c1tcInllYXItb3ZlcmxheS1oZWFkZXJcIl0/e25hbWU6XCJvdmVybGF5LXllYXItaGVhZGVyXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwieWVhci1vdmVybGF5LWhlYWRlclwiLHt0b2dnbGU6Tn0pXSksa2V5OlwiM1wifTp2b2lkIDBdKSwxMDQwLFtcImFyaWEtbGFiZWxcIixcIm1vZGVsVmFsdWVcIl0pKV0sMiksQy52YWx1ZSYmcy52ZXJ0aWNhbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGJ0LHtrZXk6MSxcImFyaWEtbGFiZWxcIjoocGU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6cGUucHJldk1vbnRoLGRpc2FibGVkOmUudW5yZWYodikoITEpLG9uQWN0aXZhdGU6bFs2XXx8KGxbNl09Wj0+ZS51bnJlZihFKSghMSkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltzLiRzbG90c1tcImFycm93LXVwXCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcImFycm93LXVwXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHNbXCJhcnJvdy11cFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQXQpLHtrZXk6MX0pKV0pLF86M30sOCxbXCJhcmlhLWxhYmVsXCIsXCJkaXNhYmxlZFwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGgudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhidCx7a2V5OjIscmVmOlwicmlnaHRJY29uXCIsZGlzYWJsZWQ6ZS51bnJlZih2KSghMCksXCJhcmlhLWxhYmVsXCI6KHllPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnllLm5leHRNb250aCxvbkFjdGl2YXRlOmxbN118fChsWzddPVo9PmUudW5yZWYoRSkoITApKSxvblNldFJlZjpsWzhdfHwobFs4XT1aPT5vKFosMykpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltzLiRzbG90c1tzLnZlcnRpY2FsP1wiYXJyb3ctZG93blwiOlwiYXJyb3ctcmlnaHRcIl0/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLHMudmVydGljYWw/XCJhcnJvdy1kb3duXCI6XCJhcnJvdy1yaWdodFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzW3MudmVydGljYWw/XCJhcnJvdy1kb3duXCI6XCJhcnJvdy1yaWdodFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQocy52ZXJ0aWNhbD9lLnVucmVmKFZ0KTplLnVucmVmKFB0KSkse2tleToxfSkpXSksXzozfSw4LFtcImRpc2FibGVkXCIsXCJhcmlhLWxhYmVsXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy5tb250aFBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFdlLGUubWVyZ2VQcm9wcyh7a2V5OjF9LFUudmFsdWUoXCJtb250aFwiKSx7XCJza2lwLWFjdGl2ZVwiOnMucmFuZ2UsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlLHllYXI6dC55ZWFyLFwiYXV0by1hcHBseS1tb250aFwiOnMuYXV0b0FwcGx5TW9udGgsXCJtdWx0aS1tb2RlbC12YWx1ZVwiOkQudmFsdWUsXCJtb250aC1waWNrZXJcIjpcIlwiLG1vZGVsVmFsdWU6Ty52YWx1ZSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpsWzE3XXx8KGxbMTddPVo9Pk8udmFsdWU9Wiksb25Ub2dnbGU6YyxvblNlbGVjdGVkOmxbMThdfHwobFsxOF09Wj0+cy4kZW1pdChcIm92ZXJsYXktY2xvc2VkXCIpKX0pLGUuY3JlYXRlU2xvdHMoe2hlYWRlcjplLndpdGhDdHgoKCk9Pnt2YXIgWixDZSxrZTtyZXR1cm5bZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixTYSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fbW9udGhfeWVhcl9jb2xfbmF2XCIsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcIm1wUHJldkljb25SZWZcIixyZWY6cSxvbkNsaWNrOmxbOV18fChsWzldPW1lPT5XKCExKSksb25LZXlkb3duOmxbMTBdfHwobFsxMF09ZS53aXRoS2V5cyhtZT0+VyghMSksW1wiZW50ZXJcIl0pKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX2lubmVyX25hdlwiLHtkcF9faW5uZXJfbmF2X2Rpc2FibGVkOmUudW5yZWYodikoITEpfV0pLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooWj1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpaLnByZXZNb250aH0sW3MuJHNsb3RzW1wiYXJyb3ctbGVmdFwiXT9lLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJhcnJvdy1sZWZ0XCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHNbXCJhcnJvdy1sZWZ0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2dCkse2tleToxfSkpXSwxMCxCYSldLDU0NCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fcG9pbnRlclwiLHJvbGU6XCJidXR0b25cIixyZWZfa2V5OlwibXBZZWFyQnV0dG9uUmVmXCIscmVmOlksXCJhcmlhLWxhYmVsXCI6KENlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkNlLm9wZW5ZZWFyc092ZXJsYXksdGFiaW5kZXg6XCIwXCIsb25DbGljazpsWzExXXx8KGxbMTFdPSgpPT5OKCExKSksb25LZXlkb3duOmxbMTJdfHwobFsxMl09ZS53aXRoS2V5cygoKT0+TighMSksW1wiZW50ZXJcIl0pKX0sW3MuJHNsb3RzLnllYXI/ZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwieWVhclwiLHtrZXk6MCx5ZWFyOnQueWVhcn0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMuJHNsb3RzLnllYXI/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnllYXIpLDEpXSw2NCkpXSw0MCxOYSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fbW9udGhfeWVhcl9jb2xfbmF2XCIsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcIm1wTmV4dEljb25SZWZcIixyZWY6TCxvbkNsaWNrOmxbMTNdfHwobFsxM109bWU9PlcoITApKSxvbktleWRvd246bFsxNF18fChsWzE0XT1lLndpdGhLZXlzKG1lPT5XKCEwKSxbXCJlbnRlclwiXSkpfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9faW5uZXJfbmF2XCIse2RwX19pbm5lcl9uYXZfZGlzYWJsZWQ6ZS51bnJlZih2KSghMCl9XSkscm9sZTpcImJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOihrZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDprZS5uZXh0TW9udGh9LFtzLiRzbG90c1tcImFycm93LXJpZ2h0XCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcImFycm93LXJpZ2h0XCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscy4kc2xvdHNbXCJhcnJvdy1yaWdodFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUHQpLHtrZXk6MX0pKV0sMTAsdmEpXSw1NDQpXSksZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6ZS51bnJlZihwKShtLnZhbHVlKSxjc3M6ZS51bnJlZihnKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bbS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFdlLGUubWVyZ2VQcm9wcyh7a2V5OjB9LFUudmFsdWUoXCJ5ZWFyXCIpLHttb2RlbFZhbHVlOlEudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6bFsxNV18fChsWzE1XT1tZT0+US52YWx1ZT1tZSksb25Ub2dnbGU6TixvblNlbGVjdGVkOmxbMTZdfHwobFsxNl09bWU9PnMuJGVtaXQoXCJvdmVybGF5LWNsb3NlZFwiKSl9KSxlLmNyZWF0ZVNsb3RzKHtcImJ1dHRvbi1pY29uXCI6ZS53aXRoQ3R4KCgpPT5bcy4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UucmVuZGVyU2xvdChzLiRzbG90cyxcImNhbGVuZGFyLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxzLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEdlKSx7a2V5OjF9KSldKSxfOjJ9LFtzLiRzbG90c1tcInllYXItb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOm1lfSk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIix7dGV4dDptZS50ZXh0LHZhbHVlOm1lLnZhbHVlfSldKSxrZXk6XCIwXCJ9OnZvaWQgMF0pLDEwNDAsW1wibW9kZWxWYWx1ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldfSksXzoyfSxbcy4kc2xvdHNbXCJtb250aC1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06Wn0pPT5bZS5yZW5kZXJTbG90KHMuJHNsb3RzLFwibW9udGgtb3ZlcmxheS12YWx1ZVwiLHt0ZXh0OloudGV4dCx2YWx1ZTpaLnZhbHVlfSldKSxrZXk6XCIwXCJ9OnZvaWQgMF0pLDEwNDAsW1wic2tpcC1hY3RpdmVcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJ5ZWFyXCIsXCJhdXRvLWFwcGx5LW1vbnRoXCIsXCJtdWx0aS1tb2RlbC12YWx1ZVwiLFwibW9kZWxWYWx1ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHMueWVhclBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFdlLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LFUudmFsdWUoXCJ5ZWFyXCIpLHttb2RlbFZhbHVlOlEudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6bFsxOV18fChsWzE5XT1aPT5RLnZhbHVlPVopLFwibXVsdGktbW9kZWwtdmFsdWVcIjpELnZhbHVlLFwic2tpcC1hY3RpdmVcIjpzLnJhbmdlLFwic2tpcC1idXR0b24tcmVmXCI6XCJcIixcInllYXItcGlja2VyXCI6XCJcIixvblRvZ2dsZTpOLG9uU2VsZWN0ZWQ6bFsyMF18fChsWzIwXT1aPT5zLiRlbWl0KFwib3ZlcmxheS1jbG9zZWRcIikpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbcy4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpafSk9PltlLnJlbmRlclNsb3Qocy4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIix7dGV4dDpaLnRleHQsdmFsdWU6Wi52YWx1ZX0pXSksa2V5OlwiMFwifTp2b2lkIDBdKSwxMDQwLFtcIm1vZGVsVmFsdWVcIixcIm11bHRpLW1vZGVsLXZhbHVlXCIsXCJza2lwLWFjdGl2ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSl9fX0pLFRhPXtrZXk6MCxjbGFzczpcImRwX190aW1lX2lucHV0XCJ9LEFhPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiLFwib25DbGlja1wiXSxWYT1lLmNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIix7Y2xhc3M6XCJkcF9fdHBfaW5saW5lX2J0bl9iYXIgZHBfX3RwX2J0bl9pbl9sXCJ9LG51bGwsLTEpLF9hPWUuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczpcImRwX190cF9pbmxpbmVfYnRuX2JhciBkcF9fdHBfYnRuX2luX3JcIn0sbnVsbCwtMSksRWE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCIsXCJvbkNsaWNrXCJdLFJhPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiLFwib25DbGlja1wiXSxJYT1lLmNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIix7Y2xhc3M6XCJkcF9fdHBfaW5saW5lX2J0bl9iYXIgZHBfX3RwX2J0bl9pbl9sXCJ9LG51bGwsLTEpLE9hPWUuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczpcImRwX190cF9pbmxpbmVfYnRuX2JhciBkcF9fdHBfYnRuX2luX3JcIn0sbnVsbCwtMSksWWE9e2tleTowfSx4YT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIl0sTGE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlRpbWVJbnB1dFwiLHByb3BzOntob3Vyczp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxtaW51dGVzOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LHNlY29uZHM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sY2xvc2VUaW1lUGlja2VyQnRuOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LG9yZGVyOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LC4uLkVlfSxlbWl0czpbXCJzZXQtaG91cnNcIixcInNldC1taW51dGVzXCIsXCJ1cGRhdGU6aG91cnNcIixcInVwZGF0ZTptaW51dGVzXCIsXCJ1cGRhdGU6c2Vjb25kc1wiLFwicmVzZXQtZmxvd1wiLFwibW91bnRlZFwiLFwib3ZlcmxheS1jbG9zZWRcIixcImFtLXBtLWNoYW5nZVwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse3NldFRpbWVQaWNrZXJFbGVtZW50czp1LHNldFRpbWVQaWNrZXJCYWNrUmVmOnB9PV9lKCkse2RlZmF1bHRzOmd9PSRlKG4pLHt0cmFuc2l0aW9uTmFtZTpCLHNob3dUcmFuc2l0aW9uOkV9PVFlKGcudmFsdWUudHJhbnNpdGlvbnMpLHY9ZS5yZWFjdGl2ZSh7aG91cnM6ITEsbWludXRlczohMSxzZWNvbmRzOiExfSkseD1lLnJlZihcIkFNXCIpLFA9ZS5yZWYobnVsbCksbT1lLnJlZihbXSk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRlZFwiKX0pO2NvbnN0IGs9Zj0+ZC5zZXQobmV3IERhdGUse2hvdXJzOmYuaG91cnMsbWludXRlczpmLm1pbnV0ZXMsc2Vjb25kczpuLmVuYWJsZVNlY29uZHM/Zi5zZWNvbmRzOjAsbWlsbGlzZWNvbmRzOjB9KSxxPWUuY29tcHV0ZWQoKCk9Pih7aG91cnM6bi5ob3VycyxtaW51dGVzOm4ubWludXRlcyxzZWNvbmRzOm4uc2Vjb25kc30pKSxZPWUuY29tcHV0ZWQoKCk9PmY9PiFKKCtuW2ZdKyArbltgJHtmfUluY3JlbWVudGBdLGYpKSxMPWUuY29tcHV0ZWQoKCk9PmY9PiFKKCtuW2ZdLStuW2Ake2Z9SW5jcmVtZW50YF0sZikpLFI9KGYsYyk9PmQuYWRkKGQuc2V0KCQoKSxmKSxjKSxPPShmLGMpPT5kLnN1YihkLnNldCgkKCksZiksYyksUT1lLmNvbXB1dGVkKCgpPT4oe2RwX190aW1lX2NvbDohMCxkcF9fdGltZV9jb2xfYmxvY2s6IW4udGltZVBpY2tlcklubGluZSxkcF9fdGltZV9jb2xfcmVnX2Jsb2NrOiFuLmVuYWJsZVNlY29uZHMmJm4uaXMyNCYmIW4udGltZVBpY2tlcklubGluZSxkcF9fdGltZV9jb2xfcmVnX2lubGluZTohbi5lbmFibGVTZWNvbmRzJiZuLmlzMjQmJm4udGltZVBpY2tlcklubGluZSxkcF9fdGltZV9jb2xfcmVnX3dpdGhfYnV0dG9uOiFuLmVuYWJsZVNlY29uZHMmJiFuLmlzMjQsZHBfX3RpbWVfY29sX3NlYzpuLmVuYWJsZVNlY29uZHMmJm4uaXMyNCxkcF9fdGltZV9jb2xfc2VjX3dpdGhfYnV0dG9uOm4uZW5hYmxlU2Vjb25kcyYmIW4uaXMyNH0pKSxlZT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZj1be3R5cGU6XCJob3Vyc1wifSx7dHlwZTpcIlwiLHNlcGFyYXRvcjohMH0se3R5cGU6XCJtaW51dGVzXCJ9XTtyZXR1cm4gbi5lbmFibGVTZWNvbmRzP2YuY29uY2F0KFt7dHlwZTpcIlwiLHNlcGFyYXRvcjohMH0se3R5cGU6XCJzZWNvbmRzXCJ9XSk6Zn0pLF89ZS5jb21wdXRlZCgoKT0+ZWUudmFsdWUuZmlsdGVyKGY9PiFmLnNlcGFyYXRvcikpLFU9ZS5jb21wdXRlZCgoKT0+Zj0+e2lmKGY9PT1cImhvdXJzXCIpe2NvbnN0IGM9VCgrbi5ob3Vycyk7cmV0dXJue3RleHQ6YzwxMD9gMCR7Y31gOmAke2N9YCx2YWx1ZTpjfX1yZXR1cm57dGV4dDpuW2ZdPDEwP2AwJHtuW2ZdfWA6YCR7bltmXX1gLHZhbHVlOm5bZl19fSksRz1mPT57Y29uc3QgYz1uLmlzMjQ/MjQ6MTIsTj1mPT09XCJob3Vyc1wiP2M6NjAsTT0rbltgJHtmfUdyaWRJbmNyZW1lbnRgXSxXPWY9PT1cImhvdXJzXCImJiFuLmlzMjQ/TTowLG89W107Zm9yKGxldCBzPVc7czxOO3MrPU0pby5wdXNoKHt2YWx1ZTpzLHRleHQ6czwxMD9gMCR7c31gOmAke3N9YH0pO3JldHVybiBmPT09XCJob3Vyc1wiJiYhbi5pczI0JiZvLnB1c2goe3ZhbHVlOjAsdGV4dDpcIjEyXCJ9KSxfbihvKX0sSj0oZixjKT0+e2NvbnN0IE49bi5taW5UaW1lP2sobnQobi5taW5UaW1lKSk6bnVsbCxNPW4ubWF4VGltZT9rKG50KG4ubWF4VGltZSkpOm51bGwsVz1rKG50KHEudmFsdWUsYyxmKSk7cmV0dXJuIE4mJk0/KGQuaXNCZWZvcmUoVyxNKXx8ZC5pc0VxdWFsKFcsTSkpJiYoZC5pc0FmdGVyKFcsTil8fGQuaXNFcXVhbChXLE4pKTpOP2QuaXNBZnRlcihXLE4pfHxkLmlzRXF1YWwoVyxOKTpNP2QuaXNCZWZvcmUoVyxNKXx8ZC5pc0VxdWFsKFcsTSk6ITB9LHJlPWUuY29tcHV0ZWQoKCk9PmY9PkcoZikuZmxhdCgpLmZpbHRlcihOPT5MbihOLnZhbHVlKSkubWFwKE49Pk4udmFsdWUpLmZpbHRlcihOPT4hSihOLGYpKSksb2U9Zj0+bltgbm8ke2ZbMF0udG9VcHBlckNhc2UoKStmLnNsaWNlKDEpfU92ZXJsYXlgXSxWPWY9PntvZShmKXx8KHZbZl09IXZbZl0sdltmXXx8cihcIm92ZXJsYXktY2xvc2VkXCIpKX0sRD1mPT5mPT09XCJob3Vyc1wiP2QuZ2V0SG91cnM6Zj09PVwibWludXRlc1wiP2QuZ2V0TWludXRlczpkLmdldFNlY29uZHMseT0oZixjPSEwKT0+e2NvbnN0IE49Yz9SOk8sTT1jPytuW2Ake2Z9SW5jcmVtZW50YF06LStuW2Ake2Z9SW5jcmVtZW50YF07SigrbltmXStNLGYpJiZyKGB1cGRhdGU6JHtmfWAsRChmKShOKHtbZl06K25bZl19LHtbZl06K25bYCR7Zn1JbmNyZW1lbnRgXX0pKSl9LFQ9Zj0+bi5pczI0P2Y6KGY+PTEyP3gudmFsdWU9XCJQTVwiOngudmFsdWU9XCJBTVwiLFluKGYpKSxBPSgpPT57eC52YWx1ZT09PVwiUE1cIj8oeC52YWx1ZT1cIkFNXCIscihcInVwZGF0ZTpob3Vyc1wiLG4uaG91cnMtMTIpKTooeC52YWx1ZT1cIlBNXCIscihcInVwZGF0ZTpob3Vyc1wiLG4uaG91cnMrMTIpKSxyKFwiYW0tcG0tY2hhbmdlXCIseC52YWx1ZSl9LEk9Zj0+e3ZbZl09ITB9LEM9KGYsYyxOKT0+e2lmKGYmJm4uYXJyb3dOYXZpZ2F0aW9uKXtBcnJheS5pc0FycmF5KG0udmFsdWVbY10pP20udmFsdWVbY11bTl09ZjptLnZhbHVlW2NdPVtmXTtjb25zdCBNPW0udmFsdWUucmVkdWNlKChXLG8pPT5vLm1hcCgocyxsKT0+Wy4uLldbbF18fFtdLG9bbF1dKSxbXSk7cChuLmNsb3NlVGltZVBpY2tlckJ0biksUC52YWx1ZSYmKE1bMV09TVsxXS5jb25jYXQoUC52YWx1ZSkpLHUoTSxuLm9yZGVyKX19LGg9KGYsYyk9PmY9PT1cImhvdXJzXCImJiFuLmlzMjQ/cihgdXBkYXRlOiR7Zn1gLHgudmFsdWU9PT1cIlBNXCI/YysxMjpjKTpyKGB1cGRhdGU6JHtmfWAsYyk7cmV0dXJuIGEoe29wZW5DaGlsZENtcDpJfSksKGYsYyk9Pnt2YXIgTjtyZXR1cm4gZi5kaXNhYmxlZD9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFRhLFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZWUudmFsdWUsKE0sVyk9Pnt2YXIgbyxzLGw7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OlcsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhRLnZhbHVlKX0sW00uc2VwYXJhdG9yPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZS5jcmVhdGVUZXh0Vk5vZGUoXCIgOiBcIildLDY0KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh7ZHBfX2J0bjohMCxkcF9faW5jX2RlY19idXR0b246IW4udGltZVBpY2tlcklubGluZSxkcF9faW5jX2RlY19idXR0b25faW5saW5lOm4udGltZVBpY2tlcklubGluZSxkcF9fdHBfaW5saW5lX2J0bl90b3A6bi50aW1lUGlja2VySW5saW5lLGRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZDpZLnZhbHVlKE0udHlwZSl9KSxcImFyaWEtbGFiZWxcIjoobz1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpvLmluY3JlbWVudFZhbHVlKE0udHlwZSksdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOltlLndpdGhLZXlzKFM9PnkoTS50eXBlKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhTPT55KE0udHlwZSksW1wic3BhY2VcIl0pXSxvbkNsaWNrOlM9PnkoTS50eXBlKSxyZWZfZm9yOiEwLHJlZjpTPT5DKFMsVywwKX0sW24udGltZVBpY2tlcklubGluZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW1ZhLF9hXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZi4kc2xvdHNbXCJhcnJvdy11cFwiXT9lLnJlbmRlclNsb3QoZi4kc2xvdHMsXCJhcnJvdy11cFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGYuJHNsb3RzW1wiYXJyb3ctdXBcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEF0KSx7a2V5OjF9KSldLDY0KSldLDQyLEFhKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KHM9ZS51bnJlZihnKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6cy5vcGVuVHBPdmVybGF5KE0udHlwZSksY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9fYnRuXCIsb2UoTS50eXBlKT92b2lkIDA6e2RwX190aW1lX2Rpc3BsYXk6ITAsZHBfX3RpbWVfZGlzcGxheV9ibG9jazohbi50aW1lUGlja2VySW5saW5lLGRwX190aW1lX2Rpc3BsYXlfaW5saW5lOm4udGltZVBpY2tlcklubGluZX1dKSx0YWJpbmRleDpcIjBcIixvbktleWRvd246W2Uud2l0aEtleXMoUz0+VihNLnR5cGUpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKFM9PlYoTS50eXBlKSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6Uz0+VihNLnR5cGUpLHJlZl9mb3I6ITAscmVmOlM9PkMoUyxXLDEpfSxbZi4kc2xvdHNbTS50eXBlXT9lLnJlbmRlclNsb3QoZi4kc2xvdHMsTS50eXBlLHtrZXk6MCx0ZXh0OlUudmFsdWUoTS50eXBlKS50ZXh0LHZhbHVlOlUudmFsdWUoTS50eXBlKS52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGYuJHNsb3RzW00udHlwZV0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhVLnZhbHVlKE0udHlwZSkudGV4dCksMSldLDY0KSldLDQyLEVhKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh7ZHBfX2J0bjohMCxkcF9faW5jX2RlY19idXR0b246IW4udGltZVBpY2tlcklubGluZSxkcF9faW5jX2RlY19idXR0b25faW5saW5lOm4udGltZVBpY2tlcklubGluZSxkcF9fdHBfaW5saW5lX2J0bl9ib3R0b206bi50aW1lUGlja2VySW5saW5lLGRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZDpMLnZhbHVlKE0udHlwZSl9KSxcImFyaWEtbGFiZWxcIjoobD1lLnVucmVmKGcpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpsLmRlY3JlbWVudFZhbHVlKE0udHlwZSksdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOltlLndpdGhLZXlzKFM9PnkoTS50eXBlLCExKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhTPT55KE0udHlwZSwhMSksW1wic3BhY2VcIl0pXSxvbkNsaWNrOlM9PnkoTS50eXBlLCExKSxyZWZfZm9yOiEwLHJlZjpTPT5DKFMsVywyKX0sW24udGltZVBpY2tlcklubGluZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW0lhLE9hXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZi4kc2xvdHNbXCJhcnJvdy1kb3duXCJdP2UucmVuZGVyU2xvdChmLiRzbG90cyxcImFycm93LWRvd25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxmLiRzbG90c1tcImFycm93LWRvd25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFZ0KSx7a2V5OjF9KSldLDY0KSldLDQyLFJhKV0sNjQpKV0sMil9KSwxMjgpKSxmLmlzMjQ/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixZYSxbZi4kc2xvdHNbXCJhbS1wbS1idXR0b25cIl0/ZS5yZW5kZXJTbG90KGYuJHNsb3RzLFwiYW0tcG0tYnV0dG9uXCIse2tleTowLHRvZ2dsZTpBLHZhbHVlOngudmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxmLiRzbG90c1tcImFtLXBtLWJ1dHRvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MSxyZWZfa2V5OlwiYW1QbUJ1dHRvblwiLHJlZjpQLHR5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19wbV9hbV9idXR0b25cIixyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KE49ZS51bnJlZihnKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Ti5hbVBtQnV0dG9uLHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6QSxvbktleWRvd246W2Uud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEEsW1wicHJldmVudFwiXSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEEsW1wicHJldmVudFwiXSksW1wic3BhY2VcIl0pXX0sZS50b0Rpc3BsYXlTdHJpbmcoeC52YWx1ZSksNDEseGEpKV0pKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoXy52YWx1ZSwoTSxXKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLlRyYW5zaXRpb24se2tleTpXLG5hbWU6ZS51bnJlZihCKSh2W00udHlwZV0pLGNzczplLnVucmVmKEUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt2W00udHlwZV0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhXZSx7a2V5OjAsaXRlbXM6RyhNLnR5cGUpLFwiZGlzYWJsZWQtdmFsdWVzXCI6ZS51bnJlZihnKS5maWx0ZXJzLnRpbWVzW00udHlwZV0uY29uY2F0KHJlLnZhbHVlKE0udHlwZSkpLFwiZXNjLWNsb3NlXCI6Zi5lc2NDbG9zZSxcImFyaWEtbGFiZWxzXCI6ZS51bnJlZihnKS5hcmlhTGFiZWxzLFwiaGlkZS1uYXZpZ2F0aW9uXCI6Zi5oaWRlTmF2aWdhdGlvbixcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpvPT5oKE0udHlwZSxvKSxvblNlbGVjdGVkOm89PlYoTS50eXBlKSxvblRvZ2dsZTpvPT5WKE0udHlwZSksb25SZXNldEZsb3c6Y1swXXx8KGNbMF09bz0+Zi4kZW1pdChcInJlc2V0LWZsb3dcIikpLHR5cGU6TS50eXBlfSxlLmNyZWF0ZVNsb3RzKHtcImJ1dHRvbi1pY29uXCI6ZS53aXRoQ3R4KCgpPT5bZi4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UucmVuZGVyU2xvdChmLiRzbG90cyxcImNsb2NrLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxmLiRzbG90c1tcImNsb2NrLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFR0KSx7a2V5OjF9KSldKSxfOjJ9LFtmLiRzbG90c1tgJHtNLnR5cGV9LW92ZXJsYXktdmFsdWVgXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOm99KT0+W2UucmVuZGVyU2xvdChmLiRzbG90cyxgJHtNLnR5cGV9LW92ZXJsYXktdmFsdWVgLHt0ZXh0Om8udGV4dCx2YWx1ZTpvLnZhbHVlfSldKSxrZXk6XCIwXCJ9OnZvaWQgMF0pLDEwMzIsW1wiaXRlbXNcIixcImRpc2FibGVkLXZhbHVlc1wiLFwiZXNjLWNsb3NlXCIsXCJhcmlhLWxhYmVsc1wiLFwiaGlkZS1uYXZpZ2F0aW9uXCIsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsXCJvblNlbGVjdGVkXCIsXCJvblRvZ2dsZVwiLFwidHlwZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzoyfSwxMDMyLFtcIm5hbWVcIixcImNzc1wiXSkpKSwxMjgpKV0pKX19fSksemE9W1wiYXJpYS1sYWJlbFwiXSxLYT1bXCJ0YWJpbmRleFwiXSxVYT1bXCJhcmlhLWxhYmVsXCJdLFdhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJUaW1lUGlja2VyXCIscHJvcHM6e2hvdXJzOnt0eXBlOltOdW1iZXIsQXJyYXldLGRlZmF1bHQ6MH0sbWludXRlczp7dHlwZTpbTnVtYmVyLEFycmF5XSxkZWZhdWx0OjB9LHNlY29uZHM6e3R5cGU6W051bWJlcixBcnJheV0sZGVmYXVsdDowfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sLi4uRWV9LGVtaXRzOltcInVwZGF0ZTpob3Vyc1wiLFwidXBkYXRlOm1pbnV0ZXNcIixcInVwZGF0ZTpzZWNvbmRzXCIsXCJtb3VudFwiLFwicmVzZXQtZmxvd1wiLFwib3ZlcmxheS1vcGVuZWRcIixcIm92ZXJsYXktY2xvc2VkXCIsXCJhbS1wbS1jaGFuZ2VcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtidWlsZE1hdHJpeDp1LHNldFRpbWVQaWNrZXI6cH09X2UoKSxnPWUudXNlU2xvdHMoKSx7aGlkZU5hdmlnYXRpb25CdXR0b25zOkIsZGVmYXVsdHM6RX09JGUobikse3RyYW5zaXRpb25OYW1lOnYsc2hvd1RyYW5zaXRpb246eH09UWUoRS52YWx1ZS50cmFuc2l0aW9ucyksUD1lLnJlZihudWxsKSxtPWUucmVmKG51bGwpLGs9ZS5yZWYoW10pLHE9ZS5yZWYobnVsbCk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRcIiksIW4udGltZVBpY2tlciYmbi5hcnJvd05hdmlnYXRpb24/dShbY2UoUC52YWx1ZSldLFwidGltZVwiKTpwKCEwLG4udGltZVBpY2tlcil9KTtjb25zdCBZPWUuY29tcHV0ZWQoKCk9Pm4ucmFuZ2UmJm4ubW9kZWxBdXRvP3F0KG4uaW50ZXJuYWxNb2RlbFZhbHVlKTohMCksTD1lLnJlZighMSksUj1WPT4oe2hvdXJzOkFycmF5LmlzQXJyYXkobi5ob3Vycyk/bi5ob3Vyc1tWXTpuLmhvdXJzLG1pbnV0ZXM6QXJyYXkuaXNBcnJheShuLm1pbnV0ZXMpP24ubWludXRlc1tWXTpuLm1pbnV0ZXMsc2Vjb25kczpBcnJheS5pc0FycmF5KG4uc2Vjb25kcyk/bi5zZWNvbmRzW1ZdOm4uc2Vjb25kc30pLE89ZS5jb21wdXRlZCgoKT0+e2NvbnN0IFY9W107aWYobi5yYW5nZSlmb3IobGV0IEQ9MDtEPDI7RCsrKVYucHVzaChSKEQpKTtlbHNlIFYucHVzaChSKDApKTtyZXR1cm4gVn0pLFE9KFYsRD0hMSx5PVwiXCIpPT57RHx8cihcInJlc2V0LWZsb3dcIiksTC52YWx1ZT1WLHIoVj9cIm92ZXJsYXktb3BlbmVkXCI6XCJvdmVybGF5LWNsb3NlZFwiKSxuLmFycm93TmF2aWdhdGlvbiYmcChWKSxlLm5leHRUaWNrKCgpPT57eSE9PVwiXCImJmsudmFsdWVbMF0mJmsudmFsdWVbMF0ub3BlbkNoaWxkQ21wKHkpfSl9LGVlPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX2J0bjohMCxkcF9fYnV0dG9uOiEwLGRwX19idXR0b25fYm90dG9tOm4uYXV0b0FwcGx5JiYhbi5rZWVwQWN0aW9uUm93fSkpLF89SWUoZyxcInRpbWVQaWNrZXJcIiksVT0oVixELHkpPT5uLnJhbmdlP0Q9PT0wP1tWLE8udmFsdWVbMV1beV1dOltPLnZhbHVlWzBdW3ldLFZdOlYsRz1WPT57cihcInVwZGF0ZTpob3Vyc1wiLFYpfSxKPVY9PntyKFwidXBkYXRlOm1pbnV0ZXNcIixWKX0scmU9Vj0+e3IoXCJ1cGRhdGU6c2Vjb25kc1wiLFYpfSxvZT0oKT0+e2lmKHEudmFsdWUpe2NvbnN0IFY9em4ocS52YWx1ZSk7ViYmVi5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfX07cmV0dXJuIGEoe3RvZ2dsZVRpbWVQaWNrZXI6UX0pLChWLEQpPT57dmFyIHk7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixudWxsLFshVi50aW1lUGlja2VyJiYhVi50aW1lUGlja2VySW5saW5lP2Uud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjAsdHlwZTpcImJ1dHRvblwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoZWUudmFsdWUpLFwiYXJpYS1sYWJlbFwiOih5PWUudW5yZWYoRSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnkub3BlblRpbWVQaWNrZXIsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcIm9wZW5UaW1lUGlja2VyQnRuXCIscmVmOlAsb25LZXlkb3duOltEWzBdfHwoRFswXT1lLndpdGhLZXlzKFQ9PlEoITApLFtcImVudGVyXCJdKSksRFsxXXx8KERbMV09ZS53aXRoS2V5cyhUPT5RKCEwKSxbXCJzcGFjZVwiXSkpXSxvbkNsaWNrOkRbMl18fChEWzJdPVQ9PlEoITApKX0sW1YuJHNsb3RzW1wiY2xvY2staWNvblwiXT9lLnJlbmRlclNsb3QoVi4kc2xvdHMsXCJjbG9jay1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksVi4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUdCkse2tleToxfSkpXSw0Mix6YSkpLFtbZS52U2hvdywhZS51bnJlZihCKShcInRpbWVcIildXSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6ZS51bnJlZih2KShMLnZhbHVlKSxjc3M6ZS51bnJlZih4KSYmIVYudGltZVBpY2tlcklubGluZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT57dmFyIFQ7cmV0dXJuW0wudmFsdWV8fFYudGltZVBpY2tlcnx8Vi50aW1lUGlja2VySW5saW5lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOmUubm9ybWFsaXplQ2xhc3Moe2RwX19vdmVybGF5OiFWLnRpbWVQaWNrZXJJbmxpbmV9KSxyZWZfa2V5Olwib3ZlcmxheVJlZlwiLHJlZjpxLHRhYmluZGV4OlYudGltZVBpY2tlcklubGluZT92b2lkIDA6MH0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoVi50aW1lUGlja2VySW5saW5lP1wiZHBfX3RpbWVfcGlja2VyX2lubGluZV9jb250YWluZXJcIjpcImRwX19vdmVybGF5X2NvbnRhaW5lciBkcF9fY29udGFpbmVyX2ZsZXggZHBfX3RpbWVfcGlja2VyX292ZXJsYXlfY29udGFpbmVyXCIpLHN0eWxlOntkaXNwbGF5OlwiZmxleFwifX0sW1YuJHNsb3RzW1widGltZS1waWNrZXItb3ZlcmxheVwiXT9lLnJlbmRlclNsb3QoVi4kc2xvdHMsXCJ0aW1lLXBpY2tlci1vdmVybGF5XCIse2tleTowLGhvdXJzOnQuaG91cnMsbWludXRlczp0Lm1pbnV0ZXMsc2Vjb25kczp0LnNlY29uZHMsc2V0SG91cnM6RyxzZXRNaW51dGVzOkosc2V0U2Vjb25kczpyZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFYuJHNsb3RzW1widGltZS1waWNrZXItb3ZlcmxheVwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFYudGltZVBpY2tlcklubGluZT9cImRwX19mbGV4XCI6XCJkcF9fb3ZlcmxheV9yb3cgZHBfX2ZsZXhfcm93XCIpfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KE8udmFsdWUsKEEsSSk9PmUud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhMYSxlLm1lcmdlUHJvcHMoe2tleTpJfSx7Li4uVi4kcHJvcHMsb3JkZXI6SSxob3VyczpBLmhvdXJzLG1pbnV0ZXM6QS5taW51dGVzLHNlY29uZHM6QS5zZWNvbmRzLGNsb3NlVGltZVBpY2tlckJ0bjptLnZhbHVlLGRpc2FibGVkOkk9PT0wP1YuZml4ZWRTdGFydDpWLmZpeGVkRW5kfSx7cmVmX2ZvcjohMCxyZWZfa2V5OlwidGltZUlucHV0UmVmc1wiLHJlZjprLFwib25VcGRhdGU6aG91cnNcIjpDPT5HKFUoQyxJLFwiaG91cnNcIikpLFwib25VcGRhdGU6bWludXRlc1wiOkM9PkooVShDLEksXCJtaW51dGVzXCIpKSxcIm9uVXBkYXRlOnNlY29uZHNcIjpDPT5yZShVKEMsSSxcInNlY29uZHNcIikpLG9uTW91bnRlZDpvZSxvbk92ZXJsYXlDbG9zZWQ6b2Usb25BbVBtQ2hhbmdlOkRbM118fChEWzNdPUM9PlYuJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixDKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihfKSwoQyxoKT0+KHtuYW1lOkMsZm46ZS53aXRoQ3R4KGY9PltlLnJlbmRlclNsb3QoVi4kc2xvdHMsQyxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKGYpKSldKX0pKV0pLDEwNDAsW1wib25VcGRhdGU6aG91cnNcIixcIm9uVXBkYXRlOm1pbnV0ZXNcIixcIm9uVXBkYXRlOnNlY29uZHNcIl0pKSxbW2UudlNob3csST09PTA/ITA6WS52YWx1ZV1dKSksMTI4KSldLDIpKSwhVi50aW1lUGlja2VyJiYhVi50aW1lUGlja2VySW5saW5lP2Uud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjIsdHlwZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJjbG9zZVRpbWVQaWNrZXJCdG5cIixyZWY6bSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKGVlLnZhbHVlKSxcImFyaWEtbGFiZWxcIjooVD1lLnVucmVmKEUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpULmNsb3NlVGltZVBpY2tlcix0YWJpbmRleDpcIjBcIixvbktleWRvd246W0RbNF18fChEWzRdPWUud2l0aEtleXMoQT0+USghMSksW1wiZW50ZXJcIl0pKSxEWzVdfHwoRFs1XT1lLndpdGhLZXlzKEE9PlEoITEpLFtcInNwYWNlXCJdKSldLG9uQ2xpY2s6RFs2XXx8KERbNl09QT0+USghMSkpfSxbVi4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UucmVuZGVyU2xvdChWLiRzbG90cyxcImNhbGVuZGFyLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxWLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEdlKSx7a2V5OjF9KSldLDQyLFVhKSksW1tlLnZTaG93LCFlLnVucmVmKEIpKFwidGltZVwiKV1dKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMildLDEwLEthKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldfSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldKX19fSksSGE9KHQsYSk9Pntjb25zdHtpc0Rpc2FibGVkOnIsbWF0Y2hEYXRlOm4sZ2V0V2Vla0Zyb21EYXRlOnUsZGVmYXVsdHM6cH09JGUoYSksZz1lLnJlZihudWxsKSxCPWUucmVmKCQoKSksRT1jPT57IWMuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXN8fChnLnZhbHVlPWMudmFsdWUpfSx2PSgpPT57Zy52YWx1ZT1udWxsfSx4PWM9PkFycmF5LmlzQXJyYXkodC52YWx1ZSkmJmEucmFuZ2UmJnQudmFsdWVbMF0mJmcudmFsdWU/Yz9iZShnLnZhbHVlLHQudmFsdWVbMF0pOndlKGcudmFsdWUsdC52YWx1ZVswXSk6ITAsUD0oYyxOKT0+e2NvbnN0IE09KCk9PnQudmFsdWU/Tj90LnZhbHVlWzBdfHxudWxsOnQudmFsdWVbMV06bnVsbCxXPXQudmFsdWUmJkFycmF5LmlzQXJyYXkodC52YWx1ZSk/TSgpOm51bGw7cmV0dXJuIHNlKCQoYy52YWx1ZSksVyl9LG09Yz0+e2NvbnN0IE49QXJyYXkuaXNBcnJheSh0LnZhbHVlKT90LnZhbHVlWzBdOm51bGw7cmV0dXJuIGM/IXdlKGcudmFsdWV8fG51bGwsTik6ITB9LGs9KGMsTj0hMCk9PihhLnJhbmdlfHxhLndlZWtQaWNrZXIpJiZBcnJheS5pc0FycmF5KHQudmFsdWUpJiZ0LnZhbHVlLmxlbmd0aD09PTI/YS5oaWRlT2Zmc2V0RGF0ZXMmJiFjLmN1cnJlbnQ/ITE6c2UoJChjLnZhbHVlKSx0LnZhbHVlW04/MDoxXSk6YS5yYW5nZT9QKGMsTikmJm0oTil8fHNlKGMudmFsdWUsQXJyYXkuaXNBcnJheSh0LnZhbHVlKT90LnZhbHVlWzBdOm51bGwpJiZ4KE4pOiExLHE9KGMsTixNKT0+QXJyYXkuaXNBcnJheSh0LnZhbHVlKSYmdC52YWx1ZVswXSYmdC52YWx1ZS5sZW5ndGg9PT0xP2M/ITE6TT9iZSh0LnZhbHVlWzBdLE4udmFsdWUpOndlKHQudmFsdWVbMF0sTi52YWx1ZSk6ITEsWT1jPT4hdC52YWx1ZXx8YS5oaWRlT2Zmc2V0RGF0ZXMmJiFjLmN1cnJlbnQ/ITE6YS5yYW5nZT9hLm1vZGVsQXV0byYmQXJyYXkuaXNBcnJheSh0LnZhbHVlKT9zZShjLnZhbHVlLHQudmFsdWVbMF0/dC52YWx1ZVswXTpCLnZhbHVlKTohMTphLm11bHRpRGF0ZXMmJkFycmF5LmlzQXJyYXkodC52YWx1ZSk/dC52YWx1ZS5zb21lKE49PnNlKE4sYy52YWx1ZSkpOnNlKGMudmFsdWUsdC52YWx1ZT90LnZhbHVlOkIudmFsdWUpLEw9Yz0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGcudmFsdWUpe2lmKGEuaGlkZU9mZnNldERhdGVzJiYhYy5jdXJyZW50KXJldHVybiExO2NvbnN0IE49ZC5hZGREYXlzKGcudmFsdWUsK2EuYXV0b1JhbmdlKSxNPXUoJChnLnZhbHVlKSk7cmV0dXJuIGEud2Vla1BpY2tlcj9zZShNWzFdLCQoYy52YWx1ZSkpOnNlKE4sJChjLnZhbHVlKSl9cmV0dXJuITF9cmV0dXJuITF9LFI9Yz0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGcudmFsdWUpe2NvbnN0IE49ZC5hZGREYXlzKGcudmFsdWUsK2EuYXV0b1JhbmdlKTtpZihhLmhpZGVPZmZzZXREYXRlcyYmIWMuY3VycmVudClyZXR1cm4hMTtjb25zdCBNPXUoJChnLnZhbHVlKSk7cmV0dXJuIGEud2Vla1BpY2tlcj9iZShjLnZhbHVlLE1bMF0pJiZ3ZShjLnZhbHVlLE1bMV0pOmJlKGMudmFsdWUsZy52YWx1ZSkmJndlKGMudmFsdWUsTil9cmV0dXJuITF9cmV0dXJuITF9LE89Yz0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGcudmFsdWUpe2lmKGEuaGlkZU9mZnNldERhdGVzJiYhYy5jdXJyZW50KXJldHVybiExO2NvbnN0IE49dSgkKGcudmFsdWUpKTtyZXR1cm4gYS53ZWVrUGlja2VyP3NlKE5bMF0sYy52YWx1ZSk6c2UoZy52YWx1ZSxjLnZhbHVlKX1yZXR1cm4hMX1yZXR1cm4hMX0sUT1jPT5FdCh0LnZhbHVlLGcudmFsdWUsYy52YWx1ZSksZWU9KCk9PmEubW9kZWxBdXRvJiZBcnJheS5pc0FycmF5KGEuaW50ZXJuYWxNb2RlbFZhbHVlKT8hIWEuaW50ZXJuYWxNb2RlbFZhbHVlWzBdOiExLF89KCk9PmEubW9kZWxBdXRvP3F0KGEuaW50ZXJuYWxNb2RlbFZhbHVlKTohMCxVPWM9PntpZihBcnJheS5pc0FycmF5KHQudmFsdWUpJiZ0LnZhbHVlLmxlbmd0aHx8YS53ZWVrUGlja2VyKXJldHVybiExO2NvbnN0IE49YS5yYW5nZT8hayhjKSYmIWsoYywhMSk6ITA7cmV0dXJuIXIoYy52YWx1ZSkmJiFZKGMpJiYhKCFjLmN1cnJlbnQmJmEuaGlkZU9mZnNldERhdGVzKSYmTn0sRz1jPT5hLnJhbmdlP2EubW9kZWxBdXRvP2VlKCkmJlkoYyk6ITE6WShjKSxKPWM9Pnt2YXIgTjtyZXR1cm4gYS5oaWdobGlnaHQ/bihjLnZhbHVlLChOPWEuYXJyTWFwVmFsdWVzKSE9bnVsbCYmTi5oaWdobGlnaHRlZERhdGVzP2EuYXJyTWFwVmFsdWVzLmhpZ2hsaWdodGVkRGF0ZXM6YS5oaWdobGlnaHQpOiExfSxyZT1jPT5yKGMudmFsdWUpJiZhLmhpZ2hsaWdodERpc2FibGVkRGF5cz09PSExLG9lPWM9PmEuaGlnaGxpZ2h0V2Vla0RheXMmJmEuaGlnaGxpZ2h0V2Vla0RheXMuaW5jbHVkZXMoYy52YWx1ZS5nZXREYXkoKSksVj1jPT4oYS5yYW5nZXx8YS53ZWVrUGlja2VyKSYmKCEocC52YWx1ZS5tdWx0aUNhbGVuZGFycz4wKXx8Yy5jdXJyZW50KSYmXygpJiYhKCFjLmN1cnJlbnQmJmEuaGlkZU9mZnNldERhdGVzKSYmIVkoYyk/UShjKTohMSxEPWM9Pntjb25zdHtpc1JhbmdlU3RhcnQ6Tixpc1JhbmdlRW5kOk19PUEoYyksVz1hLnJhbmdlP058fE06ITE7cmV0dXJue2RwX19jZWxsX29mZnNldDohYy5jdXJyZW50LGRwX19wb2ludGVyOiFhLmRpc2FibGVkJiYhKCFjLmN1cnJlbnQmJmEuaGlkZU9mZnNldERhdGVzKSYmIXIoYy52YWx1ZSksZHBfX2NlbGxfZGlzYWJsZWQ6cihjLnZhbHVlKSxkcF9fY2VsbF9oaWdobGlnaHQ6IXJlKGMpJiYoSihjKXx8b2UoYykpJiYhRyhjKSYmIVcsZHBfX2NlbGxfaGlnaGxpZ2h0X2FjdGl2ZTohcmUoYykmJihKKGMpfHxvZShjKSkmJkcoYyksZHBfX3RvZGF5OiFhLm5vVG9kYXkmJnNlKGMudmFsdWUsQi52YWx1ZSkmJmMuY3VycmVudH19LHk9Yz0+KHtkcF9fYWN0aXZlX2RhdGU6RyhjKSxkcF9fZGF0ZV9ob3ZlcjpVKGMpfSksVD1jPT4oey4uLkkoYyksLi4uQyhjKSxkcF9fcmFuZ2VfYmV0d2Vlbl93ZWVrOlYoYykmJmEud2Vla1BpY2tlcn0pLEE9Yz0+e2NvbnN0IE49cC52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP2MuY3VycmVudCYmayhjKSYmXygpOmsoYykmJl8oKSxNPXAudmFsdWUubXVsdGlDYWxlbmRhcnM+MD9jLmN1cnJlbnQmJmsoYywhMSkmJl8oKTprKGMsITEpJiZfKCk7cmV0dXJue2lzUmFuZ2VTdGFydDpOLGlzUmFuZ2VFbmQ6TX19LEk9Yz0+e2NvbnN0e2lzUmFuZ2VTdGFydDpOLGlzUmFuZ2VFbmQ6TX09QShjKTtyZXR1cm57ZHBfX3JhbmdlX3N0YXJ0Ok4sZHBfX3JhbmdlX2VuZDpNLGRwX19yYW5nZV9iZXR3ZWVuOlYoYykmJiFhLndlZWtQaWNrZXIsZHBfX2RhdGVfaG92ZXJfc3RhcnQ6cShVKGMpLGMsITApLGRwX19kYXRlX2hvdmVyX2VuZDpxKFUoYyksYywhMSl9fSxDPWM9Pih7Li4uSShjKSxkcF9fY2VsbF9hdXRvX3JhbmdlOlIoYyksZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydDpPKGMpLGRwX19jZWxsX2F1dG9fcmFuZ2VfZW5kOkwoYyl9KSxoPWM9PmEucmFuZ2U/YS5hdXRvUmFuZ2U/QyhjKTphLm1vZGVsQXV0bz97Li4ueShjKSwuLi5JKGMpfTpJKGMpOmEud2Vla1BpY2tlcj9UKGMpOnkoYyk7cmV0dXJue3NldEhvdmVyRGF0ZTpFLGNsZWFySG92ZXJEYXRlOnYsZ2V0RGF5Q2xhc3NEYXRhOmM9PmEuaGlkZU9mZnNldERhdGVzJiYhYy5jdXJyZW50P3t9OnsuLi5EKGMpLC4uLmgoYyksW2EuZGF5Q2xhc3M/YS5kYXlDbGFzcyhjLnZhbHVlKTpcIlwiXTohMCxbYS5jYWxlbmRhckNlbGxDbGFzc05hbWVdOiEhYS5jYWxlbmRhckNlbGxDbGFzc05hbWV9fX0samE9W1wiaWRcIixcIm9uS2V5ZG93blwiXSxHYT17a2V5OjAsY2xhc3M6XCJkcF9fc2lkZWJhcl9sZWZ0XCJ9LHFhPXtrZXk6MSxjbGFzczpcImRwX19wcmVzZXRfcmFuZ2VzXCJ9LFphPVtcIm9uQ2xpY2tcIl0sWGE9e2tleToyLGNsYXNzOlwiZHBfX3NpZGViYXJfcmlnaHRcIn0sSmE9e2tleTozLGNsYXNzOlwiZHBfX2FjdGlvbl9leHRyYVwifSxRYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiRGF0ZXBpY2tlck1lbnVcIixwcm9wczp7b3Blbk9uVG9wOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LGFyck1hcFZhbHVlczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sLi4uRWV9LGVtaXRzOltcImNsb3NlLXBpY2tlclwiLFwic2VsZWN0LWRhdGVcIixcImF1dG8tYXBwbHlcIixcInRpbWUtdXBkYXRlXCIsXCJmbG93LXN0ZXBcIixcInVwZGF0ZS1tb250aC15ZWFyXCIsXCJpbnZhbGlkLXNlbGVjdFwiLFwidXBkYXRlOmludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiLFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLFwidG9vbHRpcC1vcGVuXCIsXCJ0b29sdGlwLWNsb3NlXCIsXCJ0aW1lLXBpY2tlci1vcGVuXCIsXCJ0aW1lLXBpY2tlci1jbG9zZVwiLFwiYW0tcG0tY2hhbmdlXCIsXCJyYW5nZS1zdGFydFwiLFwicmFuZ2UtZW5kXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx1PWUuY29tcHV0ZWQoKCk9Pntjb25zdHtvcGVuT25Ub3A6dyxpbnRlcm5hbE1vZGVsVmFsdWU6eixhcnJNYXBWYWx1ZXM6aWUsLi4uZmV9PW47cmV0dXJuIGZlfSkse3NldE1lbnVGb2N1c2VkOnAsc2V0U2hpZnRLZXk6Zyxjb250cm9sOkJ9PVJ0KCkse2dldENhbGVuZGFyRGF5czpFLGRlZmF1bHRzOnZ9PSRlKG4pLHg9ZS51c2VTbG90cygpLFA9ZS5yZWYobnVsbCksbT1lLnJlYWN0aXZlKHt0aW1lUGlja2VyOiEhKCFuLmVuYWJsZVRpbWVQaWNrZXJ8fG4udGltZVBpY2tlcnx8bi5tb250aFBpY2tlciksbW9udGhZZWFySW5wdXQ6ISFuLnRpbWVQaWNrZXIsY2FsZW5kYXI6ITF9KSxrPWUucmVmKFtdKSxxPWUucmVmKFtdKSxZPWUucmVmKG51bGwpLEw9ZS5yZWYobnVsbCksUj1lLnJlZigwKSxPPWUucmVmKCExKSxRPWUucmVmKDApO2Uub25Nb3VudGVkKCgpPT57dmFyIHo7Ty52YWx1ZT0hMCwhKCh6PW4ucHJlc2V0UmFuZ2VzKSE9bnVsbCYmei5sZW5ndGgpJiYheFtcImxlZnQtc2lkZWJhclwiXSYmIXhbXCJyaWdodC1zaWRlYmFyXCJdJiYoTmUoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLE5lKSk7Y29uc3Qgdz1jZShMKTtpZih3JiYhbi50ZXh0SW5wdXQmJiFuLmlubGluZSYmKHAoITApLHJlKCkpLHcpe2NvbnN0IGllPWZlPT57bi5hbGxvd1ByZXZlbnREZWZhdWx0JiZmZS5wcmV2ZW50RGVmYXVsdCgpLGZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGZlLnN0b3BQcm9wYWdhdGlvbigpfTt3LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLGllKSx3LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpZSl9fSksZS5vblVubW91bnRlZCgoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsTmUpfSk7Y29uc3R7YXJyb3dSaWdodDplZSxhcnJvd0xlZnQ6XyxhcnJvd0Rvd246VSxhcnJvd1VwOkd9PV9lKCksSj13PT57d3x8dz09PTA/cS52YWx1ZVt3XS50cmlnZ2VyVHJhbnNpdGlvbihULnZhbHVlKHcpLEEudmFsdWUodykpOnEudmFsdWUuZm9yRWFjaCgoeixpZSk9PnoudHJpZ2dlclRyYW5zaXRpb24oVC52YWx1ZShpZSksQS52YWx1ZShpZSkpKX0scmU9KCk9Pntjb25zdCB3PWNlKEwpO3cmJncuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sb2U9KCk9Pnt2YXIgdzsodz1uLmZsb3cpIT1udWxsJiZ3Lmxlbmd0aCYmUS52YWx1ZSE9PS0xJiYoUS52YWx1ZSs9MSxyKFwiZmxvdy1zdGVwXCIsUS52YWx1ZSksaSgpKX0sVj0oKT0+e1EudmFsdWU9LTF9LHtjYWxlbmRhcnM6RCxtb2RlbFZhbHVlOnksbW9udGg6VCx5ZWFyOkEsdGltZTpJLHVwZGF0ZVRpbWU6Qyx1cGRhdGVNb250aFllYXI6aCxzZWxlY3REYXRlOmYsZ2V0V2Vla051bTpjLG1vbnRoWWVhclNlbGVjdDpOLGhhbmRsZVNjcm9sbDpNLGhhbmRsZUFycm93OlcsaGFuZGxlU3dpcGU6byxnZXRNYXJrZXI6cyxzZWxlY3RDdXJyZW50RGF0ZTpsLHByZXNldERhdGVSYW5nZTpTfT1abihuLHIsb2UsSixRKSx7c2V0SG92ZXJEYXRlOkYsY2xlYXJIb3ZlckRhdGU6dGUsZ2V0RGF5Q2xhc3NEYXRhOnBlfT1IYSh5LG4pLFo9e21vZGVsVmFsdWU6eSxtb250aDpULHllYXI6QSx0aW1lOkksdXBkYXRlVGltZTpDLHVwZGF0ZU1vbnRoWWVhcjpoLHNlbGVjdERhdGU6ZixwcmVzZXREYXRlUmFuZ2U6UyxoYW5kbGVNb250aFllYXJDaGFuZ2U6dz0+e2sudmFsdWVbMF0mJmsudmFsdWVbMF0uaGFuZGxlTW9udGhZZWFyQ2hhbmdlKHcpfX07ZS53YXRjaChELCgpPT57bi5vcGVuT25Ub3AmJnNldFRpbWVvdXQoKCk9PntyKFwicmVjYWxjdWxhdGUtcG9zaXRpb25cIil9LDApfSx7ZGVlcDohMH0pO2NvbnN0IENlPUllKHgsXCJjYWxlbmRhclwiKSxrZT1JZSh4LFwiYWN0aW9uXCIpLG1lPUllKHgsXCJ0aW1lUGlja2VyXCIpLHZlPUllKHgsXCJtb250aFllYXJcIiksT2U9ZS5jb21wdXRlZCgoKT0+bi5vcGVuT25Ub3A/XCJkcF9fYXJyb3dfYm90dG9tXCI6XCJkcF9fYXJyb3dfdG9wXCIpLFRlPWUuY29tcHV0ZWQoKCk9PkluKG4ueWVhclJhbmdlLG4ucmV2ZXJzZVllYXJzKSksTGU9ZS5jb21wdXRlZCgoKT0+T24obi5mb3JtYXRMb2NhbGUsbi5sb2NhbGUsbi5tb250aE5hbWVGb3JtYXQpKSxOZT0oKT0+e2NvbnN0IHc9Y2UoUCk7dyYmKFIudmFsdWU9dy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCl9LEs9ZS5jb21wdXRlZCgoKT0+dz0+RShULnZhbHVlKHcpLEEudmFsdWUodykpKSxYPWUuY29tcHV0ZWQoKCk9PnYudmFsdWUubXVsdGlDYWxlbmRhcnM+MD9bLi4uQXJyYXkodi52YWx1ZS5tdWx0aUNhbGVuZGFycykua2V5cygpXTpbMF0pLGFlPWUuY29tcHV0ZWQoKCk9Pnc9Pnc9PT0xKSxIZT1lLmNvbXB1dGVkKCgpPT5uLm1vbnRoUGlja2VyfHxuLnRpbWVQaWNrZXJ8fG4ueWVhclBpY2tlciksWWU9ZS5jb21wdXRlZCgoKT0+KHtkcF9fbWVudV9pbm5lcjohMCxkcF9fZmxleF9kaXNwbGF5OnYudmFsdWUubXVsdGlDYWxlbmRhcnM+MH0pKSxDdD1lLmNvbXB1dGVkKCgpPT4oe2RwX19pbnN0YW5jZV9jYWxlbmRhcjp2LnZhbHVlLm11bHRpQ2FsZW5kYXJzPjB9KSksRmU9ZS5jb21wdXRlZCgoKT0+KHtkcF9fbWVudV9kaXNhYmxlZDpuLmRpc2FibGVkLGRwX19tZW51X3JlYWRvbmx5Om4ucmVhZG9ubHl9KSksamU9ZS5jb21wdXRlZCgoKT0+dz0+U3QoSyx3KSksJHQ9ZS5jb21wdXRlZCgoKT0+KHtkcF9fbWVudTohMCxkcF9fbWVudV9pbmRleDohbi5pbmxpbmUsZHBfX3JlbGF0aXZlOm4uaW5saW5lLFtuLm1lbnVDbGFzc05hbWVdOiEhbi5tZW51Q2xhc3NOYW1lfSkpLFN0PSh3LHopPT53LnZhbHVlKHopLm1hcChpZT0+KHsuLi5pZSxkYXlzOmllLmRheXMubWFwKGZlPT4oZmUubWFya2VyPXMoZmUpLGZlLmNsYXNzRGF0YT1wZShmZSksZmUpKX0pKSxCdD13PT57dy5zdG9wUHJvcGFnYXRpb24oKSx3LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfSxldD0oKT0+e24uZXNjQ2xvc2UmJnIoXCJjbG9zZS1waWNrZXJcIil9LHRuPSh3LHo9ITEpPT57Zih3LHopLG4uc3BhY2VDb25maXJtJiZyKFwic2VsZWN0LWRhdGVcIil9LHR0PXc9Pnt2YXIgejsoej1uLmZsb3cpIT1udWxsJiZ6Lmxlbmd0aCYmKG1bd109ITAsT2JqZWN0LmtleXMobSkuZmlsdGVyKGllPT4hbVtpZV0pLmxlbmd0aHx8aSgpKX0semU9KHcseixpZSxmZSwuLi5QZSk9PntpZihuLmZsb3dbUS52YWx1ZV09PT13KXtjb25zdCBIPWZlP3oudmFsdWVbMF06ei52YWx1ZTtIJiZIW2llXSguLi5QZSl9fSxpPSgpPT57emUoXCJtb250aFwiLGssXCJ0b2dnbGVNb250aFBpY2tlclwiLCEwLCEwKSx6ZShcInllYXJcIixrLFwidG9nZ2xlWWVhclBpY2tlclwiLCEwLCEwKSx6ZShcImNhbGVuZGFyXCIsWSxcInRvZ2dsZVRpbWVQaWNrZXJcIiwhMSwhMSwhMCksemUoXCJ0aW1lXCIsWSxcInRvZ2dsZVRpbWVQaWNrZXJcIiwhMSwhMCwhMCk7Y29uc3Qgdz1uLmZsb3dbUS52YWx1ZV07KHc9PT1cImhvdXJzXCJ8fHc9PT1cIm1pbnV0ZXNcInx8dz09PVwic2Vjb25kc1wiKSYmemUodyxZLFwidG9nZ2xlVGltZVBpY2tlclwiLCExLCEwLCEwLHcpfSxiPXc9PntpZihuLmFycm93TmF2aWdhdGlvbil7aWYodz09PVwidXBcIilyZXR1cm4gRygpO2lmKHc9PT1cImRvd25cIilyZXR1cm4gVSgpO2lmKHc9PT1cImxlZnRcIilyZXR1cm4gXygpO2lmKHc9PT1cInJpZ2h0XCIpcmV0dXJuIGVlKCl9ZWxzZSB3PT09XCJsZWZ0XCJ8fHc9PT1cInVwXCI/VyhcImxlZnRcIiwwLHc9PT1cInVwXCIpOlcoXCJyaWdodFwiLDAsdz09PVwiZG93blwiKX0saj13PT57Zyh3LnNoaWZ0S2V5KSwhbi5kaXNhYmxlTW9udGhZZWFyU2VsZWN0JiZ3LmNvZGU9PT1cIlRhYlwiJiZ3LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcF9fbWVudVwiKSYmQi52YWx1ZS5zaGlmdEtleUluTWVudSYmKHcucHJldmVudERlZmF1bHQoKSx3LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHIoXCJjbG9zZS1waWNrZXJcIikpfSxuZT0oKT0+e3JlKCkscihcInRpbWUtcGlja2VyLWNsb3NlXCIpfSxkZT13PT57dmFyIHosaWUsZmUsUGUsSDsoej1ZLnZhbHVlKT09bnVsbHx8ei50b2dnbGVUaW1lUGlja2VyKCExLCExKSwoZmU9KGllPWsudmFsdWUpPT1udWxsP3ZvaWQgMDppZVt3XSk9PW51bGx8fGZlLnRvZ2dsZU1vbnRoUGlja2VyKCExLCExKSwoSD0oUGU9ay52YWx1ZSk9PW51bGw/dm9pZCAwOlBlW3ddKT09bnVsbHx8SC50b2dnbGVZZWFyUGlja2VyKCExLCExKX07cmV0dXJuIGEoe3VwZGF0ZU1vbnRoWWVhcjpoLHN3aXRjaFZpZXc6KHcsej0wKT0+e3ZhciBpZSxmZSxQZSxILFZlO3JldHVybiB3PT09XCJtb250aFwiPyhmZT0oaWU9ay52YWx1ZSk9PW51bGw/dm9pZCAwOmllW3pdKT09bnVsbD92b2lkIDA6ZmUudG9nZ2xlTW9udGhQaWNrZXIoITEsITApOnc9PT1cInllYXJcIj8oSD0oUGU9ay52YWx1ZSk9PW51bGw/dm9pZCAwOlBlW3pdKT09bnVsbD92b2lkIDA6SC50b2dnbGVZZWFyUGlja2VyKCExLCEwKTp3PT09XCJ0aW1lXCI/KFZlPVkudmFsdWUpPT1udWxsP3ZvaWQgMDpWZS50b2dnbGVUaW1lUGlja2VyKCEwLCExKTpkZSh6KX19KSwodyx6KT0+e3ZhciBpZTtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuVHJhbnNpdGlvbix7YXBwZWFyOlwiXCIsbmFtZTooaWU9ZS51bnJlZih2KS50cmFuc2l0aW9ucyk9PW51bGw/dm9pZCAwOmllLm1lbnVBcHBlYXIsY3NzOiEhdy50cmFuc2l0aW9uc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT57dmFyIGZlLFBlO3JldHVybltlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtpZDp3LnVpZD9gZHAtbWVudS0ke3cudWlkfWA6dm9pZCAwLHRhYmluZGV4OlwiMFwiLHJlZl9rZXk6XCJkcE1lbnVSZWZcIixyZWY6TCxyb2xlOlwiZGlhbG9nXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcygkdC52YWx1ZSksb25Nb3VzZWxlYXZlOnpbMTRdfHwoelsxNF09KC4uLkgpPT5lLnVucmVmKHRlKSYmZS51bnJlZih0ZSkoLi4uSCkpLG9uQ2xpY2s6QnQsb25LZXlkb3duOltlLndpdGhLZXlzKGV0LFtcImVzY1wiXSkselsxNV18fCh6WzE1XT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhIPT5iKFwibGVmdFwiKSxbXCJwcmV2ZW50XCJdKSxbXCJsZWZ0XCJdKSkselsxNl18fCh6WzE2XT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhIPT5iKFwidXBcIiksW1wicHJldmVudFwiXSksW1widXBcIl0pKSx6WzE3XXx8KHpbMTddPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PmIoXCJkb3duXCIpLFtcInByZXZlbnRcIl0pLFtcImRvd25cIl0pKSx6WzE4XXx8KHpbMThdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PmIoXCJyaWdodFwiKSxbXCJwcmV2ZW50XCJdKSxbXCJyaWdodFwiXSkpLGpdfSxbKHcuZGlzYWJsZWR8fHcucmVhZG9ubHkpJiZ3LmlubGluZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEZlLnZhbHVlKX0sbnVsbCwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksIXcuaW5saW5lJiYhdy50ZWxlcG9ydENlbnRlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKE9lLnZhbHVlKX0sbnVsbCwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh7ZHBfX21lbnVfY29udGVudF93cmFwcGVyOigoZmU9dy5wcmVzZXRSYW5nZXMpPT1udWxsP3ZvaWQgMDpmZS5sZW5ndGgpfHwhIXcuJHNsb3RzW1wibGVmdC1zaWRlYmFyXCJdfHwhIXcuJHNsb3RzW1wicmlnaHQtc2lkZWJhclwiXX0pfSxbdy4kc2xvdHNbXCJsZWZ0LXNpZGViYXJcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixHYSxbZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwibGVmdC1zaWRlYmFyXCIsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhaKSkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLChQZT13LnByZXNldFJhbmdlcykhPW51bGwmJlBlLmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHFhLFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qody5wcmVzZXRSYW5nZXMsKEgsVmUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6VmUsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShILnN0eWxlfHx7fSksY2xhc3M6XCJkcF9fcHJlc2V0X3JhbmdlXCIsb25DbGljazpsZT0+ZS51bnJlZihTKShILnJhbmdlLCEhSC5zbG90KX0sW0guc2xvdD9lLnJlbmRlclNsb3Qody4kc2xvdHMsSC5zbG90LHtrZXk6MCxwcmVzZXREYXRlUmFuZ2U6ZS51bnJlZihTKSxsYWJlbDpILmxhYmVsLHJhbmdlOkgucmFuZ2V9KTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKEgubGFiZWwpLDEpXSw2NCkpXSwxMixaYSkpKSwxMjgpKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19pbnN0YW5jZV9jYWxlbmRhclwiLHJlZl9rZXk6XCJjYWxlbmRhcldyYXBwZXJSZWZcIixyZWY6UCxyb2xlOlwiZG9jdW1lbnRcIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoWWUudmFsdWUpfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFgudmFsdWUsKEgsVmUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6SCxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEN0LnZhbHVlKX0sWyF3LmRpc2FibGVNb250aFllYXJTZWxlY3QmJiF3LnRpbWVQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhQYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9mb3I6ITAscmVmOmxlPT57bGUmJihrLnZhbHVlW1ZlXT1sZSl9LG1vbnRoczpMZS52YWx1ZSx5ZWFyczpUZS52YWx1ZSxtb250aDplLnVucmVmKFQpKEgpLHllYXI6ZS51bnJlZihBKShIKSxpbnN0YW5jZTpILFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIjp0LmludGVybmFsTW9kZWxWYWx1ZX0sdS52YWx1ZSx7b25Nb3VudDp6WzBdfHwoelswXT1sZT0+dHQoXCJtb250aFllYXJJbnB1dFwiKSksb25SZXNldEZsb3c6VixvblVwZGF0ZU1vbnRoWWVhcjpsZT0+ZS51bnJlZihoKShILGxlKSxvbk1vbnRoWWVhclNlbGVjdDplLnVucmVmKE4pLG9uT3ZlcmxheUNsb3NlZDpyZX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKHZlKSwobGUscnIpPT4oe25hbWU6bGUsZm46ZS53aXRoQ3R4KE50PT5bZS5yZW5kZXJTbG90KHcuJHNsb3RzLGxlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoTnQpKSldKX0pKV0pLDEwNDAsW1wibW9udGhzXCIsXCJ5ZWFyc1wiLFwibW9udGhcIixcInllYXJcIixcImluc3RhbmNlXCIsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiLFwib25VcGRhdGVNb250aFllYXJcIixcIm9uTW9udGhZZWFyU2VsZWN0XCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS5jcmVhdGVWTm9kZShoYSxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITAscmVmOmxlPT57bGUmJihxLnZhbHVlW1ZlXT1sZSl9LFwic3BlY2lmaWMtbW9kZVwiOkhlLnZhbHVlLFwiZ2V0LXdlZWstbnVtXCI6ZS51bnJlZihjKSxpbnN0YW5jZTpILFwibWFwcGVkLWRhdGVzXCI6amUudmFsdWUoSCksbW9udGg6ZS51bnJlZihUKShIKSx5ZWFyOmUudW5yZWYoQSkoSCl9LHUudmFsdWUse29uU2VsZWN0RGF0ZTpsZT0+ZS51bnJlZihmKShsZSwhYWUudmFsdWUoSCkpLG9uSGFuZGxlU3BhY2U6bGU9PnRuKGxlLCFhZS52YWx1ZShIKSksb25TZXRIb3ZlckRhdGU6elsxXXx8KHpbMV09bGU9PmUudW5yZWYoRikobGUpKSxvbkhhbmRsZVNjcm9sbDpsZT0+ZS51bnJlZihNKShsZSxIKSxvbkhhbmRsZVN3aXBlOmxlPT5lLnVucmVmKG8pKGxlLEgpLG9uTW91bnQ6elsyXXx8KHpbMl09bGU9PnR0KFwiY2FsZW5kYXJcIikpLG9uUmVzZXRGbG93OlYsb25Ub29sdGlwT3Blbjp6WzNdfHwoelszXT1sZT0+dy4kZW1pdChcInRvb2x0aXAtb3BlblwiLGxlKSksb25Ub29sdGlwQ2xvc2U6els0XXx8KHpbNF09bGU9PncuJGVtaXQoXCJ0b29sdGlwLWNsb3NlXCIsbGUpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKENlKSwobGUscnIpPT4oe25hbWU6bGUsZm46ZS53aXRoQ3R4KE50PT5bZS5yZW5kZXJTbG90KHcuJHNsb3RzLGxlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLk50fSkpKV0pfSkpXSksMTA0MCxbXCJzcGVjaWZpYy1tb2RlXCIsXCJnZXQtd2Vlay1udW1cIixcImluc3RhbmNlXCIsXCJtYXBwZWQtZGF0ZXNcIixcIm1vbnRoXCIsXCJ5ZWFyXCIsXCJvblNlbGVjdERhdGVcIixcIm9uSGFuZGxlU3BhY2VcIixcIm9uSGFuZGxlU2Nyb2xsXCIsXCJvbkhhbmRsZVN3aXBlXCJdKV0sMikpKSwxMjgpKV0sMiksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixudWxsLFt3LiRzbG90c1tcInRpbWUtcGlja2VyXCJdP2UucmVuZGVyU2xvdCh3LiRzbG90cyxcInRpbWUtcGlja2VyXCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSx7dGltZTplLnVucmVmKEkpLHVwZGF0ZVRpbWU6ZS51bnJlZihDKX0pKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFt3LmVuYWJsZVRpbWVQaWNrZXImJiF3Lm1vbnRoUGlja2VyJiYhdy53ZWVrUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soV2EsZS5tZXJnZVByb3BzKHtrZXk6MCxyZWZfa2V5OlwidGltZVBpY2tlclJlZlwiLHJlZjpZLGhvdXJzOmUudW5yZWYoSSkuaG91cnMsbWludXRlczplLnVucmVmKEkpLm1pbnV0ZXMsc2Vjb25kczplLnVucmVmKEkpLnNlY29uZHMsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSx1LnZhbHVlLHtvbk1vdW50OnpbNV18fCh6WzVdPUg9PnR0KFwidGltZVBpY2tlclwiKSksXCJvblVwZGF0ZTpob3Vyc1wiOnpbNl18fCh6WzZdPUg9PmUudW5yZWYoQykoSCkpLFwib25VcGRhdGU6bWludXRlc1wiOnpbN118fCh6WzddPUg9PmUudW5yZWYoQykoSCwhMSkpLFwib25VcGRhdGU6c2Vjb25kc1wiOnpbOF18fCh6WzhdPUg9PmUudW5yZWYoQykoSCwhMSwhMCkpLG9uUmVzZXRGbG93OlYsb25PdmVybGF5Q2xvc2VkOm5lLG9uT3ZlcmxheU9wZW5lZDp6WzldfHwoels5XT1IPT53LiRlbWl0KFwidGltZS1waWNrZXItb3BlblwiLEgpKSxvbkFtUG1DaGFuZ2U6elsxMF18fCh6WzEwXT1IPT53LiRlbWl0KFwiYW0tcG0tY2hhbmdlXCIsSCkpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYobWUpLChILFZlKT0+KHtuYW1lOkgsZm46ZS53aXRoQ3R4KGxlPT5bZS5yZW5kZXJTbG90KHcuJHNsb3RzLEgsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhsZSkpKV0pfSkpXSksMTA0MCxbXCJob3Vyc1wiLFwibWludXRlc1wiLFwic2Vjb25kc1wiLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNjQpKV0pXSw1MTIpLHcuJHNsb3RzW1wicmlnaHQtc2lkZWJhclwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFhhLFtlLnJlbmRlclNsb3Qody4kc2xvdHMsXCJyaWdodC1zaWRlYmFyXCIsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhaKSkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHcuJHNsb3RzW1wiYWN0aW9uLWV4dHJhXCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsSmEsW3cuJHNsb3RzW1wiYWN0aW9uLWV4dHJhXCJdP2UucmVuZGVyU2xvdCh3LiRzbG90cyxcImFjdGlvbi1leHRyYVwiLHtrZXk6MCxzZWxlY3RDdXJyZW50RGF0ZTplLnVucmVmKGwpfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDIpLCF3LmF1dG9BcHBseXx8dy5rZWVwQWN0aW9uUm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soaWEsZS5tZXJnZVByb3BzKHtrZXk6MixcIm1lbnUtbW91bnRcIjpPLnZhbHVlLFwiY2FsZW5kYXItd2lkdGhcIjpSLnZhbHVlLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIjp0LmludGVybmFsTW9kZWxWYWx1ZX0sdS52YWx1ZSx7b25DbG9zZVBpY2tlcjp6WzExXXx8KHpbMTFdPUg9PncuJGVtaXQoXCJjbG9zZS1waWNrZXJcIikpLG9uU2VsZWN0RGF0ZTp6WzEyXXx8KHpbMTJdPUg9PncuJGVtaXQoXCJzZWxlY3QtZGF0ZVwiKSksb25JbnZhbGlkU2VsZWN0OnpbMTNdfHwoelsxM109SD0+dy4kZW1pdChcImludmFsaWQtc2VsZWN0XCIpKSxvblNlbGVjdE5vdzplLnVucmVmKGwpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYoa2UpLChILFZlKT0+KHtuYW1lOkgsZm46ZS53aXRoQ3R4KGxlPT5bZS5yZW5kZXJTbG90KHcuJHNsb3RzLEgsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyh7Li4ubGV9KSkpXSl9KSldKSwxMDQwLFtcIm1lbnUtbW91bnRcIixcImNhbGVuZGFyLXdpZHRoXCIsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiLFwib25TZWxlY3ROb3dcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNDIsamEpXX0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pfX19KSxGYT10eXBlb2Ygd2luZG93PFwidVwiP3dpbmRvdzp2b2lkIDAsRHQ9KCk9Pnt9LGVyPXQ9PmUuZ2V0Q3VycmVudFNjb3BlKCk/KGUub25TY29wZURpc3Bvc2UodCksITApOiExLHRyPSh0LGEscixuKT0+e2lmKCF0KXJldHVybiBEdDtsZXQgdT1EdDtjb25zdCBwPWUud2F0Y2goKCk9PmUudW5yZWYodCksQj0+e3UoKSxCJiYoQi5hZGRFdmVudExpc3RlbmVyKGEscixuKSx1PSgpPT57Qi5yZW1vdmVFdmVudExpc3RlbmVyKGEscixuKSx1PUR0fSl9LHtpbW1lZGlhdGU6ITAsZmx1c2g6XCJwb3N0XCJ9KSxnPSgpPT57cCgpLHUoKX07cmV0dXJuIGVyKGcpLGd9LG5yPSh0LGEscixuPXt9KT0+e2NvbnN0e3dpbmRvdzp1PUZhLGV2ZW50OnA9XCJwb2ludGVyZG93blwifT1uO3JldHVybiB1P3RyKHUscCxCPT57Y29uc3QgRT1jZSh0KSx2PWNlKGEpOyFFfHwhdnx8RT09PUIudGFyZ2V0fHxCLmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKEUpfHxCLmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKHYpfHxyKEIpfSx7cGFzc2l2ZTohMH0pOnZvaWQgMH0sYXI9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlZ1ZURhdGVQaWNrZXJcIixwcm9wczp7Li4uRWV9LGVtaXRzOltcInVwZGF0ZTptb2RlbC12YWx1ZVwiLFwidGV4dC1zdWJtaXRcIixcImNsb3NlZFwiLFwiY2xlYXJlZFwiLFwib3BlblwiLFwiZm9jdXNcIixcImJsdXJcIixcImludGVybmFsLW1vZGVsLWNoYW5nZVwiLFwicmVjYWxjdWxhdGUtcG9zaXRpb25cIixcImZsb3ctc3RlcFwiLFwidXBkYXRlLW1vbnRoLXllYXJcIixcImludmFsaWQtc2VsZWN0XCIsXCJpbnZhbGlkLWZpeGVkLXJhbmdlXCIsXCJ0b29sdGlwLW9wZW5cIixcInRvb2x0aXAtY2xvc2VcIixcInRpbWUtcGlja2VyLW9wZW5cIixcInRpbWUtcGlja2VyLWNsb3NlXCIsXCJhbS1wbS1jaGFuZ2VcIixcInJhbmdlLXN0YXJ0XCIsXCJyYW5nZS1lbmRcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHU9ZS51c2VTbG90cygpLHA9ZS5yZWYoITEpLGc9ZS50b1JlZihuLFwibW9kZWxWYWx1ZVwiKSxCPWUudG9SZWYobixcInRpbWV6b25lXCIpLEU9ZS5yZWYobnVsbCksdj1lLnJlZihudWxsKSx4PWUucmVmKCExKSxQPWUucmVmKG51bGwpLG09ZS5yZWFjdGl2ZSh7ZGlzYWJsZWREYXRlczpudWxsLGFsbG93ZWREYXRlczpudWxsLGhpZ2hsaWdodGVkRGF0ZXM6bnVsbH0pLHtzZXRNZW51Rm9jdXNlZDprLHNldFNoaWZ0S2V5OnF9PVJ0KCkse2NsZWFyQXJyb3dOYXY6WX09X2UoKSx7dmFsaWRhdGVEYXRlOkwsaXNWYWxpZFRpbWU6UixkZWZhdWx0czpPLG1hcERhdGVzQXJyVG9NYXA6UX09JGUobik7ZS5vbk1vdW50ZWQoKCk9PntUKG4ubW9kZWxWYWx1ZSksbi5pbmxpbmV8fChWKFAudmFsdWUpLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixOKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLE0pKSxuLmlubGluZSYmKHAudmFsdWU9ITApLFEobSl9KSxlLm9uVW5tb3VudGVkKCgpPT57aWYoIW4uaW5saW5lKXtjb25zdCBLPVYoUC52YWx1ZSk7SyYmSy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsTiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixNKX19KTtjb25zdCBlZT1JZSh1LFwiYWxsXCIsbi5wcmVzZXRSYW5nZXMpLF89SWUodSxcImlucHV0XCIpO2Uud2F0Y2goW2csQl0sKCk9PntUKGcudmFsdWUpfSx7ZGVlcDohMH0pO2NvbnN0e29wZW5PblRvcDpVLG1lbnVTdHlsZTpHLHJlc2V0UG9zaXRpb246SixzZXRNZW51UG9zaXRpb246cmUsc2V0SW5pdGlhbFBvc2l0aW9uOm9lLGdldFNjcm9sbGFibGVQYXJlbnQ6Vn09UW4oRSx2LHIsbikse2lucHV0VmFsdWU6RCxpbnRlcm5hbE1vZGVsVmFsdWU6eSxwYXJzZUV4dGVybmFsTW9kZWxWYWx1ZTpULGVtaXRNb2RlbFZhbHVlOkEsZm9ybWF0SW5wdXRWYWx1ZTpJLGNoZWNrQmVmb3JlRW1pdDpDfT1YbihyLG4seCksaD1lLmNvbXB1dGVkKCgpPT4oe2RwX19tYWluOiEwLGRwX190aGVtZV9kYXJrOm4uZGFyayxkcF9fdGhlbWVfbGlnaHQ6IW4uZGFyayxkcF9fZmxleF9kaXNwbGF5Om4uaW5saW5lLGRwX19mbGV4X2Rpc3BsYXlfd2l0aF9pbnB1dDpuLmlubGluZVdpdGhJbnB1dH0pKSxmPWUuY29tcHV0ZWQoKCk9Pm4uZGFyaz9cImRwX190aGVtZV9kYXJrXCI6XCJkcF9fdGhlbWVfbGlnaHRcIiksYz1lLmNvbXB1dGVkKCgpPT5uLnRlbGVwb3J0P3t0bzp0eXBlb2Ygbi50ZWxlcG9ydD09XCJib29sZWFuXCI/XCJib2R5XCI6bi50ZWxlcG9ydCxkaXNhYmxlZDpuLmlubGluZX06e2NsYXNzOlwiZHBfX291dGVyX21lbnVfd3JhcFwifSksTj0oKT0+e3AudmFsdWUmJihuLmNsb3NlT25TY3JvbGw/eWUoKTpyZSgpKX0sTT0oKT0+e3AudmFsdWUmJnJlKCl9LFc9YXN5bmMoKT0+e3ZhciBLLFgsYWU7IW4uZGlzYWJsZWQmJiFuLnJlYWRvbmx5JiYoSigpLGF3YWl0IGUubmV4dFRpY2soKSxwLnZhbHVlPSEwLGF3YWl0IGUubmV4dFRpY2soKSxvZSgpLGF3YWl0IGUubmV4dFRpY2soKSxyZSgpLGRlbGV0ZSBHLnZhbHVlLm9wYWNpdHksISgoSz1PLnZhbHVlLnRyYW5zaXRpb25zKSE9bnVsbCYmSy5tZW51QXBwZWFyKSYmbi50cmFuc2l0aW9ucyYmKChhZT0oWD1FLnZhbHVlKT09bnVsbD92b2lkIDA6WC4kZWwpPT1udWxsfHxhZS5jbGFzc0xpc3QuYWRkKFwiZHBfX21lbnVfdHJhbnNpdGlvbmVkXCIpKSxwLnZhbHVlJiZyKFwib3BlblwiKSxwLnZhbHVlfHxwZSgpLFQobi5tb2RlbFZhbHVlKSl9LG89KCk9PntELnZhbHVlPVwiXCIscGUoKSxyKFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsbnVsbCkscihcImNsZWFyZWRcIiksbi5jbG9zZU9uQ2xlYXJWYWx1ZSYmeWUoKX0scz0oKT0+e2NvbnN0IEs9eS52YWx1ZTtyZXR1cm4hS3x8IUFycmF5LmlzQXJyYXkoSykmJkwoSyk/ITA6QXJyYXkuaXNBcnJheShLKT9LLmxlbmd0aD09PTImJkwoS1swXSkmJkwoS1sxXSk/ITA6TChLWzBdKTohMX0sbD0oKT0+e0MoKSYmcygpPyhBKCkseWUoKSk6cihcImludmFsaWQtc2VsZWN0XCIseS52YWx1ZSl9LFM9Sz0+e0YoKSxBKCksbi5jbG9zZU9uQXV0b0FwcGx5JiYhSyYmeWUoKX0sRj0oKT0+e3YudmFsdWUmJm4udGV4dElucHV0JiZ2LnZhbHVlLnNldFBhcnNlZERhdGUoeS52YWx1ZSl9LHRlPShLPSExKT0+e24uYXV0b0FwcGx5JiZSKHkudmFsdWUpJiZzKCkmJihuLnJhbmdlJiZBcnJheS5pc0FycmF5KHkudmFsdWUpPyhuLnBhcnRpYWxSYW5nZXx8eS52YWx1ZS5sZW5ndGg9PT0yKSYmUyhLKTpTKEspKX0scGU9KCk9PntuLnRleHRJbnB1dHx8KHkudmFsdWU9bnVsbCl9LHllPSgpPT57bi5pbmxpbmV8fChwLnZhbHVlJiYocC52YWx1ZT0hMSxrKCExKSxxKCExKSxZKCkscihcImNsb3NlZFwiKSxvZSgpLEQudmFsdWUmJlQoZy52YWx1ZSkpLHBlKCkpfSxaPShLLFgpPT57aWYoIUspe3kudmFsdWU9bnVsbDtyZXR1cm59eS52YWx1ZT1LLFgmJihsKCkscihcInRleHQtc3VibWl0XCIpKX0sQ2U9KCk9PntuLmF1dG9BcHBseSYmUih5LnZhbHVlKSYmQSgpLEYoKX0sa2U9KCk9PnAudmFsdWU/eWUoKTpXKCksbWU9Sz0+e3kudmFsdWU9S30sdmU9KCk9PntuLnRleHRJbnB1dCYmKHgudmFsdWU9ITAsSSgpKSxyKFwiZm9jdXNcIil9LE9lPSgpPT57bi50ZXh0SW5wdXQmJih4LnZhbHVlPSExLFQobi5tb2RlbFZhbHVlKSkscihcImJsdXJcIil9LFRlPUs9PntFLnZhbHVlJiZFLnZhbHVlLnVwZGF0ZU1vbnRoWWVhcigwLHttb250aDpadChLLm1vbnRoKSx5ZWFyOlp0KEsueWVhcil9KX0sTGU9Sz0+e1QoS3x8bi5tb2RlbFZhbHVlKX0sTmU9KEssWCk9Pnt2YXIgYWU7KGFlPUUudmFsdWUpPT1udWxsfHxhZS5zd2l0Y2hWaWV3KEssWCl9O3JldHVybiBucihFLHYsbi5vbkNsaWNrT3V0c2lkZT8oKT0+bi5vbkNsaWNrT3V0c2lkZShzKTp5ZSksYSh7Y2xvc2VNZW51OnllLHNlbGVjdERhdGU6bCxjbGVhclZhbHVlOm8sb3Blbk1lbnU6VyxvblNjcm9sbDpOLGZvcm1hdElucHV0VmFsdWU6SSx1cGRhdGVJbnRlcm5hbE1vZGVsVmFsdWU6bWUsc2V0TW9udGhZZWFyOlRlLHBhcnNlTW9kZWw6TGUsc3dpdGNoVmlldzpOZX0pLChLLFgpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKGgudmFsdWUpLHJlZl9rZXk6XCJwaWNrZXJXcmFwcGVyUmVmXCIscmVmOlB9LFtlLmNyZWF0ZVZOb2RlKHJhLGUubWVyZ2VQcm9wcyh7cmVmX2tleTpcImlucHV0UmVmXCIscmVmOnYsXCJpcy1tZW51LW9wZW5cIjpwLnZhbHVlLFwiaW5wdXQtdmFsdWVcIjplLnVucmVmKEQpLFwib25VcGRhdGU6aW5wdXRWYWx1ZVwiOlhbMF18fChYWzBdPWFlPT5lLmlzUmVmKEQpP0QudmFsdWU9YWU6bnVsbCl9LEsuJHByb3BzLHtvbkNsZWFyOm8sb25PcGVuOlcsb25TZXRJbnB1dERhdGU6WixvblNldEVtcHR5RGF0ZTplLnVucmVmKEEpLG9uU2VsZWN0RGF0ZTpsLG9uVG9nZ2xlOmtlLG9uQ2xvc2U6eWUsb25Gb2N1czp2ZSxvbkJsdXI6T2Usb25SZWFsQmx1cjpYWzFdfHwoWFsxXT1hZT0+eC52YWx1ZT0hMSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihfKSwoYWUsSGUpPT4oe25hbWU6YWUsZm46ZS53aXRoQ3R4KFllPT5bZS5yZW5kZXJTbG90KEsuJHNsb3RzLGFlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoWWUpKSldKX0pKV0pLDEwNDAsW1wiaXMtbWVudS1vcGVuXCIsXCJpbnB1dC12YWx1ZVwiLFwib25TZXRFbXB0eURhdGVcIl0pLHAudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KEsudGVsZXBvcnQ/ZS5UZWxlcG9ydDpcImRpdlwiKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGMudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soUWEsZS5tZXJnZVByb3BzKHtrZXk6MCxyZWZfa2V5OlwiZHBNZW51UmVmXCIscmVmOkUsY2xhc3M6Zi52YWx1ZSxzdHlsZTpLLmlubGluZT92b2lkIDA6ZS51bnJlZihHKSxcIm9wZW4tb24tdG9wXCI6ZS51bnJlZihVKSxcImFyci1tYXAtdmFsdWVzXCI6bX0sSy4kcHJvcHMse1wiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIjplLnVucmVmKHkpLFwib25VcGRhdGU6aW50ZXJuYWxNb2RlbFZhbHVlXCI6WFsyXXx8KFhbMl09YWU9PmUuaXNSZWYoeSk/eS52YWx1ZT1hZTpudWxsKSxvbkNsb3NlUGlja2VyOnllLG9uU2VsZWN0RGF0ZTpsLG9uQXV0b0FwcGx5OnRlLG9uVGltZVVwZGF0ZTpDZSxvbkZsb3dTdGVwOlhbM118fChYWzNdPWFlPT5LLiRlbWl0KFwiZmxvdy1zdGVwXCIsYWUpKSxvblVwZGF0ZU1vbnRoWWVhcjpYWzRdfHwoWFs0XT1hZT0+Sy4kZW1pdChcInVwZGF0ZS1tb250aC15ZWFyXCIsYWUpKSxvbkludmFsaWRTZWxlY3Q6WFs1XXx8KFhbNV09YWU9PksuJGVtaXQoXCJpbnZhbGlkLXNlbGVjdFwiLGUudW5yZWYoeSkpKSxvbkludmFsaWRGaXhlZFJhbmdlOlhbNl18fChYWzZdPWFlPT5LLiRlbWl0KFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLGFlKSksb25SZWNhbGN1bGF0ZVBvc2l0aW9uOmUudW5yZWYocmUpLG9uVG9vbHRpcE9wZW46WFs3XXx8KFhbN109YWU9PksuJGVtaXQoXCJ0b29sdGlwLW9wZW5cIixhZSkpLG9uVG9vbHRpcENsb3NlOlhbOF18fChYWzhdPWFlPT5LLiRlbWl0KFwidG9vbHRpcC1jbG9zZVwiLGFlKSksb25UaW1lUGlja2VyT3BlbjpYWzldfHwoWFs5XT1hZT0+Sy4kZW1pdChcInRpbWUtcGlja2VyLW9wZW5cIixhZSkpLG9uVGltZVBpY2tlckNsb3NlOlhbMTBdfHwoWFsxMF09YWU9PksuJGVtaXQoXCJ0aW1lLXBpY2tlci1jbG9zZVwiLGFlKSksb25BbVBtQ2hhbmdlOlhbMTFdfHwoWFsxMV09YWU9PksuJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixhZSkpLG9uUmFuZ2VTdGFydDpYWzEyXXx8KFhbMTJdPWFlPT5LLiRlbWl0KFwicmFuZ2Utc3RhcnRcIixhZSkpLG9uUmFuZ2VFbmQ6WFsxM118fChYWzEzXT1hZT0+Sy4kZW1pdChcInJhbmdlLWVuZFwiLGFlKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihlZSksKGFlLEhlKT0+KHtuYW1lOmFlLGZuOmUud2l0aEN0eChZZT0+W2UucmVuZGVyU2xvdChLLiRzbG90cyxhZSxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHsuLi5ZZX0pKSldKX0pKV0pLDEwNDAsW1wiY2xhc3NcIixcInN0eWxlXCIsXCJvcGVuLW9uLXRvcFwiLFwiYXJyLW1hcC12YWx1ZXNcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblJlY2FsY3VsYXRlUG9zaXRpb25cIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMikpfX0pLE10PSgoKT0+e2NvbnN0IHQ9YXI7cmV0dXJuIHQuaW5zdGFsbD1hPT57YS5jb21wb25lbnQoXCJWdWUzRGF0ZVBpY2tlclwiLHQpfSx0fSkoKTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6TXR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pKSkuZm9yRWFjaCgoW3QsYV0pPT57dCE9PVwiZGVmYXVsdFwiJiYoTXRbdF09YSl9KSxNdH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc2hhcmVkID0gcmVxdWlyZSgnQHZ1ZXVzZS9zaGFyZWQnKTtcbnZhciB2dWVEZW1pID0gcmVxdWlyZSgndnVlLWRlbWknKTtcblxuZnVuY3Rpb24gY29tcHV0ZWRBc3luYyhldmFsdWF0aW9uQ2FsbGJhY2ssIGluaXRpYWxTdGF0ZSwgb3B0aW9uc09yUmVmKSB7XG4gIGxldCBvcHRpb25zO1xuICBpZiAodnVlRGVtaS5pc1JlZihvcHRpb25zT3JSZWYpKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIGV2YWx1YXRpbmc6IG9wdGlvbnNPclJlZlxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnNPclJlZiB8fCB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgbGF6eSA9IGZhbHNlLFxuICAgIGV2YWx1YXRpbmcgPSB2b2lkIDAsXG4gICAgc2hhbGxvdyA9IHRydWUsXG4gICAgb25FcnJvciA9IHNoYXJlZC5ub29wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGFydGVkID0gdnVlRGVtaS5yZWYoIWxhenkpO1xuICBjb25zdCBjdXJyZW50ID0gc2hhbGxvdyA/IHZ1ZURlbWkuc2hhbGxvd1JlZihpbml0aWFsU3RhdGUpIDogdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KGFzeW5jIChvbkludmFsaWRhdGUpID0+IHtcbiAgICBpZiAoIXN0YXJ0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY291bnRlcisrO1xuICAgIGNvbnN0IGNvdW50ZXJBdEJlZ2lubmluZyA9IGNvdW50ZXI7XG4gICAgbGV0IGhhc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgaWYgKGV2YWx1YXRpbmcpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBldmFsdWF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdGlvbkNhbGxiYWNrKChjYW5jZWxDYWxsYmFjaykgPT4ge1xuICAgICAgICBvbkludmFsaWRhdGUoKCkgPT4ge1xuICAgICAgICAgIGlmIChldmFsdWF0aW5nKVxuICAgICAgICAgICAgZXZhbHVhdGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIGlmICghaGFzRmluaXNoZWQpXG4gICAgICAgICAgICBjYW5jZWxDYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNvdW50ZXJBdEJlZ2lubmluZyA9PT0gY291bnRlcilcbiAgICAgICAgY3VycmVudC52YWx1ZSA9IHJlc3VsdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZXZhbHVhdGluZyAmJiBjb3VudGVyQXRCZWdpbm5pbmcgPT09IGNvdW50ZXIpXG4gICAgICAgIGV2YWx1YXRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIGhhc0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBpZiAobGF6eSkge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHN0YXJ0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgcmV0dXJuIGN1cnJlbnQudmFsdWU7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Qoa2V5LCBvcHRpb25zLCBkZWZhdWx0U291cmNlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkpIHtcbiAgbGV0IHNvdXJjZSA9IHZ1ZURlbWkuaW5qZWN0KGtleSk7XG4gIGlmIChkZWZhdWx0U291cmNlKVxuICAgIHNvdXJjZSA9IHZ1ZURlbWkuaW5qZWN0KGtleSwgZGVmYXVsdFNvdXJjZSk7XG4gIGlmICh0cmVhdERlZmF1bHRBc0ZhY3RvcnkpXG4gICAgc291cmNlID0gdnVlRGVtaS5pbmplY3Qoa2V5LCBkZWZhdWx0U291cmNlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkpO1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKChjdHgpID0+IG9wdGlvbnMoc291cmNlLCBjdHgpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgICBnZXQ6IChjdHgpID0+IG9wdGlvbnMuZ2V0KHNvdXJjZSwgY3R4KSxcbiAgICAgIHNldDogb3B0aW9ucy5zZXRcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXVzYWJsZVRlbXBsYXRlKG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXZ1ZURlbWkuaXNWdWUzICYmICF2dWVEZW1pLnZlcnNpb24uc3RhcnRzV2l0aChcIjIuNy5cIikpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW1Z1ZVVzZV0gY3JlYXRlUmV1c2FibGVUZW1wbGF0ZSBvbmx5IHdvcmtzIGluIFZ1ZSAyLjcgb3IgYWJvdmUuXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB7XG4gICAgaW5oZXJpdEF0dHJzID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVuZGVyID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGNvbnN0IGRlZmluZSA9IC8qICNfX1BVUkVfXyAqLyB2dWVEZW1pLmRlZmluZUNvbXBvbmVudCh7XG4gICAgc2V0dXAoXywgeyBzbG90cyB9KSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZW5kZXIudmFsdWUgPSBzbG90cy5kZWZhdWx0O1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCByZXVzZSA9IC8qICNfX1BVUkVfXyAqLyB2dWVEZW1pLmRlZmluZUNvbXBvbmVudCh7XG4gICAgaW5oZXJpdEF0dHJzLFxuICAgIHNldHVwKF8sIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFyZW5kZXIudmFsdWUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIltWdWVVc2VdIEZhaWxlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIHJldXNhYmxlIHRlbXBsYXRlXCIpO1xuICAgICAgICBjb25zdCB2bm9kZSA9IChfYSA9IHJlbmRlci52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwocmVuZGVyLCB7IC4uLmtleXNUb0NhbWVsS2ViYWJDYXNlKGF0dHJzKSwgJHNsb3RzOiBzbG90cyB9KTtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRBdHRycyAmJiAodm5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IHZub2RlLmxlbmd0aCkgPT09IDEgPyB2bm9kZVswXSA6IHZub2RlO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2hhcmVkLm1ha2VEZXN0cnVjdHVyYWJsZShcbiAgICB7IGRlZmluZSwgcmV1c2UgfSxcbiAgICBbZGVmaW5lLCByZXVzZV1cbiAgKTtcbn1cbmZ1bmN0aW9uIGtleXNUb0NhbWVsS2ViYWJDYXNlKG9iaikge1xuICBjb25zdCBuZXdPYmogPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqKVxuICAgIG5ld09ialtzaGFyZWQuY2FtZWxpemUoa2V5KV0gPSBvYmpba2V5XTtcbiAgcmV0dXJuIG5ld09iajtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGVtcGxhdGVQcm9taXNlKG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXZ1ZURlbWkuaXNWdWUzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltWdWVVc2VdIGNyZWF0ZVRlbXBsYXRlUHJvbWlzZSBvbmx5IHdvcmtzIGluIFZ1ZSAzIG9yIGFib3ZlLlwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGluZGV4ID0gMDtcbiAgY29uc3QgaW5zdGFuY2VzID0gdnVlRGVtaS5yZWYoW10pO1xuICBmdW5jdGlvbiBjcmVhdGUoLi4uYXJncykge1xuICAgIGNvbnN0IHByb3BzID0gdnVlRGVtaS5zaGFsbG93UmVhY3RpdmUoe1xuICAgICAga2V5OiBpbmRleCsrLFxuICAgICAgYXJncyxcbiAgICAgIHByb21pc2U6IHZvaWQgMCxcbiAgICAgIHJlc29sdmU6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICByZWplY3Q6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBpc1Jlc29sdmluZzogZmFsc2UsXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gICAgaW5zdGFuY2VzLnZhbHVlLnB1c2gocHJvcHMpO1xuICAgIHByb3BzLnByb21pc2UgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIHByb3BzLnJlc29sdmUgPSAodikgPT4ge1xuICAgICAgICBwcm9wcy5pc1Jlc29sdmluZyA9IHRydWU7XG4gICAgICAgIHJldHVybiBfcmVzb2x2ZSh2KTtcbiAgICAgIH07XG4gICAgICBwcm9wcy5yZWplY3QgPSBfcmVqZWN0O1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgcHJvcHMucHJvbWlzZSA9IHZvaWQgMDtcbiAgICAgIGNvbnN0IGluZGV4MiA9IGluc3RhbmNlcy52YWx1ZS5pbmRleE9mKHByb3BzKTtcbiAgICAgIGlmIChpbmRleDIgIT09IC0xKVxuICAgICAgICBpbnN0YW5jZXMudmFsdWUuc3BsaWNlKGluZGV4MiwgMSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3BzLnByb21pc2U7XG4gIH1cbiAgZnVuY3Rpb24gc3RhcnQoLi4uYXJncykge1xuICAgIGlmIChvcHRpb25zLnNpbmdsZXRvbiAmJiBpbnN0YW5jZXMudmFsdWUubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBpbnN0YW5jZXMudmFsdWVbMF0ucHJvbWlzZTtcbiAgICByZXR1cm4gY3JlYXRlKC4uLmFyZ3MpO1xuICB9XG4gIGNvbnN0IGNvbXBvbmVudCA9IC8qICNfX1BVUkVfXyAqLyB2dWVEZW1pLmRlZmluZUNvbXBvbmVudCgoXywgeyBzbG90cyB9KSA9PiB7XG4gICAgY29uc3QgcmVuZGVyTGlzdCA9ICgpID0+IGluc3RhbmNlcy52YWx1ZS5tYXAoKHByb3BzKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4gdnVlRGVtaS5oKHZ1ZURlbWkuRnJhZ21lbnQsIHsga2V5OiBwcm9wcy5rZXkgfSwgKF9hID0gc2xvdHMuZGVmYXVsdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoc2xvdHMsIHByb3BzKSk7XG4gICAgfSk7XG4gICAgaWYgKG9wdGlvbnMudHJhbnNpdGlvbilcbiAgICAgIHJldHVybiAoKSA9PiB2dWVEZW1pLmgodnVlRGVtaS5UcmFuc2l0aW9uR3JvdXAsIG9wdGlvbnMudHJhbnNpdGlvbiwgcmVuZGVyTGlzdCk7XG4gICAgcmV0dXJuIHJlbmRlckxpc3Q7XG4gIH0pO1xuICBjb21wb25lbnQuc3RhcnQgPSBzdGFydDtcbiAgcmV0dXJuIGNvbXBvbmVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVW5yZWZGbihmbikge1xuICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmdzLm1hcCgoaSkgPT4gc2hhcmVkLnRvVmFsdWUoaSkpKTtcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFdpbmRvdyA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdyA6IHZvaWQgMDtcbmNvbnN0IGRlZmF1bHREb2N1bWVudCA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdy5kb2N1bWVudCA6IHZvaWQgMDtcbmNvbnN0IGRlZmF1bHROYXZpZ2F0b3IgPSBzaGFyZWQuaXNDbGllbnQgPyB3aW5kb3cubmF2aWdhdG9yIDogdm9pZCAwO1xuY29uc3QgZGVmYXVsdExvY2F0aW9uID0gc2hhcmVkLmlzQ2xpZW50ID8gd2luZG93LmxvY2F0aW9uIDogdm9pZCAwO1xuXG5mdW5jdGlvbiB1bnJlZkVsZW1lbnQoZWxSZWYpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBwbGFpbiA9IHNoYXJlZC50b1ZhbHVlKGVsUmVmKTtcbiAgcmV0dXJuIChfYSA9IHBsYWluID09IG51bGwgPyB2b2lkIDAgOiBwbGFpbi4kZWwpICE9IG51bGwgPyBfYSA6IHBsYWluO1xufVxuXG5mdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKC4uLmFyZ3MpIHtcbiAgbGV0IHRhcmdldDtcbiAgbGV0IGV2ZW50cztcbiAgbGV0IGxpc3RlbmVycztcbiAgbGV0IG9wdGlvbnM7XG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG4gICAgW2V2ZW50cywgbGlzdGVuZXJzLCBvcHRpb25zXSA9IGFyZ3M7XG4gICAgdGFyZ2V0ID0gZGVmYXVsdFdpbmRvdztcbiAgfSBlbHNlIHtcbiAgICBbdGFyZ2V0LCBldmVudHMsIGxpc3RlbmVycywgb3B0aW9uc10gPSBhcmdzO1xuICB9XG4gIGlmICghdGFyZ2V0KVxuICAgIHJldHVybiBzaGFyZWQubm9vcDtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGV2ZW50cykpXG4gICAgZXZlbnRzID0gW2V2ZW50c107XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0ZW5lcnMpKVxuICAgIGxpc3RlbmVycyA9IFtsaXN0ZW5lcnNdO1xuICBjb25zdCBjbGVhbnVwcyA9IFtdO1xuICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgIGNsZWFudXBzLmZvckVhY2goKGZuKSA9PiBmbigpKTtcbiAgICBjbGVhbnVwcy5sZW5ndGggPSAwO1xuICB9O1xuICBjb25zdCByZWdpc3RlciA9IChlbCwgZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zMikgPT4ge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zMik7XG4gICAgcmV0dXJuICgpID0+IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zMik7XG4gIH07XG4gIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goXG4gICAgKCkgPT4gW3VucmVmRWxlbWVudCh0YXJnZXQpLCBzaGFyZWQudG9WYWx1ZShvcHRpb25zKV0sXG4gICAgKFtlbCwgb3B0aW9uczJdKSA9PiB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBvcHRpb25zQ2xvbmUgPSBzaGFyZWQuaXNPYmplY3Qob3B0aW9uczIpID8geyAuLi5vcHRpb25zMiB9IDogb3B0aW9uczI7XG4gICAgICBjbGVhbnVwcy5wdXNoKFxuICAgICAgICAuLi5ldmVudHMuZmxhdE1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXJzLm1hcCgobGlzdGVuZXIpID0+IHJlZ2lzdGVyKGVsLCBldmVudCwgbGlzdGVuZXIsIG9wdGlvbnNDbG9uZSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfVxuICApO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIHN0b3BXYXRjaCgpO1xuICAgIGNsZWFudXAoKTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4gc3RvcDtcbn1cblxubGV0IF9pT1NXb3JrYXJvdW5kID0gZmFsc2U7XG5mdW5jdGlvbiBvbkNsaWNrT3V0c2lkZSh0YXJnZXQsIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIGlnbm9yZSA9IFtdLCBjYXB0dXJlID0gdHJ1ZSwgZGV0ZWN0SWZyYW1lID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghd2luZG93KVxuICAgIHJldHVybiBzaGFyZWQubm9vcDtcbiAgaWYgKHNoYXJlZC5pc0lPUyAmJiAhX2lPU1dvcmthcm91bmQpIHtcbiAgICBfaU9TV29ya2Fyb3VuZCA9IHRydWU7XG4gICAgQXJyYXkuZnJvbSh3aW5kb3cuZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaCgoZWwpID0+IGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBzaGFyZWQubm9vcCkpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHNoYXJlZC5ub29wKTtcbiAgfVxuICBsZXQgc2hvdWxkTGlzdGVuID0gdHJ1ZTtcbiAgY29uc3Qgc2hvdWxkSWdub3JlID0gKGV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIHNoYXJlZC50b1ZhbHVlKGlnbm9yZSkuc29tZSgodGFyZ2V0MikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0YXJnZXQyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRhcmdldDIpKS5zb21lKChlbCkgPT4gZWwgPT09IGV2ZW50LnRhcmdldCB8fCBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhlbCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0Mik7XG4gICAgICAgIHJldHVybiBlbCAmJiAoZXZlbnQudGFyZ2V0ID09PSBlbCB8fCBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhlbCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBjb25zdCBsaXN0ZW5lciA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgaWYgKCFlbCB8fCBlbCA9PT0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKGVsKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAwKVxuICAgICAgc2hvdWxkTGlzdGVuID0gIXNob3VsZElnbm9yZShldmVudCk7XG4gICAgaWYgKCFzaG91bGRMaXN0ZW4pIHtcbiAgICAgIHNob3VsZExpc3RlbiA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGhhbmRsZXIoZXZlbnQpO1xuICB9O1xuICBsZXQgaXNQcm9jZXNzaW5nQ2xpY2sgPSBmYWxzZTtcbiAgY29uc3QgY2xlYW51cCA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJjbGlja1wiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNQcm9jZXNzaW5nQ2xpY2spIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nQ2xpY2sgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpc1Byb2Nlc3NpbmdDbGljayA9IGZhbHNlO1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgbGlzdGVuZXIoZXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZSB9KSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb2ludGVyZG93blwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICAgIHNob3VsZExpc3RlbiA9ICFzaG91bGRJZ25vcmUoZSkgJiYgISEoZWwgJiYgIWUuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoZWwpKTtcbiAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSksXG4gICAgZGV0ZWN0SWZyYW1lICYmIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJsdXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgICAgICBpZiAoKChfYSA9IHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2EudGFnTmFtZSkgPT09IFwiSUZSQU1FXCIgJiYgIShlbCA9PSBudWxsID8gdm9pZCAwIDogZWwuY29udGFpbnMod2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkge1xuICAgICAgICAgIGhhbmRsZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9LCAwKTtcbiAgICB9KVxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IGNsZWFudXAuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICByZXR1cm4gc3RvcDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5UHJlZGljYXRlKGtleUZpbHRlcikge1xuICBpZiAodHlwZW9mIGtleUZpbHRlciA9PT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiBrZXlGaWx0ZXI7XG4gIGVsc2UgaWYgKHR5cGVvZiBrZXlGaWx0ZXIgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIChldmVudCkgPT4gZXZlbnQua2V5ID09PSBrZXlGaWx0ZXI7XG4gIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5RmlsdGVyKSlcbiAgICByZXR1cm4gKGV2ZW50KSA9PiBrZXlGaWx0ZXIuaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgcmV0dXJuICgpID0+IHRydWU7XG59XG5mdW5jdGlvbiBvbktleVN0cm9rZSguLi5hcmdzKSB7XG4gIGxldCBrZXk7XG4gIGxldCBoYW5kbGVyO1xuICBsZXQgb3B0aW9ucyA9IHt9O1xuICBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICBrZXkgPSBhcmdzWzBdO1xuICAgIGhhbmRsZXIgPSBhcmdzWzFdO1xuICAgIG9wdGlvbnMgPSBhcmdzWzJdO1xuICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHR5cGVvZiBhcmdzWzFdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBrZXkgPSB0cnVlO1xuICAgICAgaGFuZGxlciA9IGFyZ3NbMF07XG4gICAgICBvcHRpb25zID0gYXJnc1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ID0gYXJnc1swXTtcbiAgICAgIGhhbmRsZXIgPSBhcmdzWzFdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBrZXkgPSB0cnVlO1xuICAgIGhhbmRsZXIgPSBhcmdzWzBdO1xuICB9XG4gIGNvbnN0IHtcbiAgICB0YXJnZXQgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50TmFtZSA9IFwia2V5ZG93blwiLFxuICAgIHBhc3NpdmUgPSBmYWxzZSxcbiAgICBkZWR1cGUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJlZGljYXRlID0gY3JlYXRlS2V5UHJlZGljYXRlKGtleSk7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGUpID0+IHtcbiAgICBpZiAoZS5yZXBlYXQgJiYgc2hhcmVkLnRvVmFsdWUoZGVkdXBlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAocHJlZGljYXRlKGUpKVxuICAgICAgaGFuZGxlcihlKTtcbiAgfTtcbiAgcmV0dXJuIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBldmVudE5hbWUsIGxpc3RlbmVyLCBwYXNzaXZlKTtcbn1cbmZ1bmN0aW9uIG9uS2V5RG93bihrZXksIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gb25LZXlTdHJva2Uoa2V5LCBoYW5kbGVyLCB7IC4uLm9wdGlvbnMsIGV2ZW50TmFtZTogXCJrZXlkb3duXCIgfSk7XG59XG5mdW5jdGlvbiBvbktleVByZXNzZWQoa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgeyAuLi5vcHRpb25zLCBldmVudE5hbWU6IFwia2V5cHJlc3NcIiB9KTtcbn1cbmZ1bmN0aW9uIG9uS2V5VXAoa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgeyAuLi5vcHRpb25zLCBldmVudE5hbWU6IFwia2V5dXBcIiB9KTtcbn1cblxuY29uc3QgREVGQVVMVF9ERUxBWSA9IDUwMDtcbmNvbnN0IERFRkFVTFRfVEhSRVNIT0xEID0gMTA7XG5mdW5jdGlvbiBvbkxvbmdQcmVzcyh0YXJnZXQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICBsZXQgdGltZW91dDtcbiAgbGV0IHBvc1N0YXJ0O1xuICBsZXQgc3RhcnRUaW1lc3RhbXA7XG4gIGxldCBoYXNMb25nUHJlc3NlZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IHZvaWQgMDtcbiAgICB9XG4gICAgcG9zU3RhcnQgPSB2b2lkIDA7XG4gICAgc3RhcnRUaW1lc3RhbXAgPSB2b2lkIDA7XG4gICAgaGFzTG9uZ1ByZXNzZWQgPSBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBvblJlbGVhc2UoZXYpIHtcbiAgICB2YXIgX2EyLCBfYjIsIF9jO1xuICAgIGNvbnN0IFtfc3RhcnRUaW1lc3RhbXAsIF9wb3NTdGFydCwgX2hhc0xvbmdQcmVzc2VkXSA9IFtzdGFydFRpbWVzdGFtcCwgcG9zU3RhcnQsIGhhc0xvbmdQcmVzc2VkXTtcbiAgICBjbGVhcigpO1xuICAgIGlmICghKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMub25Nb3VzZVVwKSB8fCAhX3Bvc1N0YXJ0IHx8ICFfc3RhcnRUaW1lc3RhbXApXG4gICAgICByZXR1cm47XG4gICAgaWYgKCgoX2EyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuc2VsZikgJiYgZXYudGFyZ2V0ICE9PSBlbGVtZW50UmVmLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICgoX2IyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYjIucHJldmVudClcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKChfYyA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2Muc3RvcClcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGR4ID0gZXYueCAtIF9wb3NTdGFydC54O1xuICAgIGNvbnN0IGR5ID0gZXYueSAtIF9wb3NTdGFydC55O1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICBvcHRpb25zLm9uTW91c2VVcChldi50aW1lU3RhbXAgLSBfc3RhcnRUaW1lc3RhbXAsIGRpc3RhbmNlLCBfaGFzTG9uZ1ByZXNzZWQpO1xuICB9XG4gIGZ1bmN0aW9uIG9uRG93bihldikge1xuICAgIHZhciBfYTIsIF9iMiwgX2MsIF9kO1xuICAgIGlmICgoKF9hMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnNlbGYpICYmIGV2LnRhcmdldCAhPT0gZWxlbWVudFJlZi52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBjbGVhcigpO1xuICAgIGlmICgoX2IyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYjIucHJldmVudClcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKChfYyA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2Muc3RvcClcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHBvc1N0YXJ0ID0ge1xuICAgICAgeDogZXYueCxcbiAgICAgIHk6IGV2LnlcbiAgICB9O1xuICAgIHN0YXJ0VGltZXN0YW1wID0gZXYudGltZVN0YW1wO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBoYXNMb25nUHJlc3NlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXIoZXYpO1xuICAgICAgfSxcbiAgICAgIChfZCA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZGVsYXkpICE9IG51bGwgPyBfZCA6IERFRkFVTFRfREVMQVlcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIG9uTW92ZShldikge1xuICAgIHZhciBfYTIsIF9iMiwgX2MsIF9kO1xuICAgIGlmICgoKF9hMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnNlbGYpICYmIGV2LnRhcmdldCAhPT0gZWxlbWVudFJlZi52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXBvc1N0YXJ0IHx8IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmRpc3RhbmNlVGhyZXNob2xkKSA9PT0gZmFsc2UpXG4gICAgICByZXR1cm47XG4gICAgaWYgKChfYjIgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iMi5wcmV2ZW50KVxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoKF9jID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYy5zdG9wKVxuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZHggPSBldi54IC0gcG9zU3RhcnQueDtcbiAgICBjb25zdCBkeSA9IGV2LnkgLSBwb3NTdGFydC55O1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICBpZiAoZGlzdGFuY2UgPj0gKChfZCA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZGlzdGFuY2VUaHJlc2hvbGQpICE9IG51bGwgPyBfZCA6IERFRkFVTFRfVEhSRVNIT0xEKSlcbiAgICAgIGNsZWFyKCk7XG4gIH1cbiAgY29uc3QgbGlzdGVuZXJPcHRpb25zID0ge1xuICAgIGNhcHR1cmU6IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FwdHVyZSxcbiAgICBvbmNlOiAoX2IgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm9uY2VcbiAgfTtcbiAgY29uc3QgY2xlYW51cCA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnRSZWYsIFwicG9pbnRlcmRvd25cIiwgb25Eb3duLCBsaXN0ZW5lck9wdGlvbnMpLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudFJlZiwgXCJwb2ludGVybW92ZVwiLCBvbk1vdmUsIGxpc3RlbmVyT3B0aW9ucyksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50UmVmLCBbXCJwb2ludGVydXBcIiwgXCJwb2ludGVybGVhdmVcIl0sIG9uUmVsZWFzZSwgbGlzdGVuZXJPcHRpb25zKVxuICBdO1xuICBjb25zdCBzdG9wID0gKCkgPT4gY2xlYW51cC5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gIHJldHVybiBzdG9wO1xufVxuXG5mdW5jdGlvbiBpc0ZvY3VzZWRFbGVtZW50RWRpdGFibGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlRWxlbWVudCwgYm9keSB9ID0gZG9jdW1lbnQ7XG4gIGlmICghYWN0aXZlRWxlbWVudClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChhY3RpdmVFbGVtZW50ID09PSBib2R5KVxuICAgIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChhY3RpdmVFbGVtZW50LnRhZ05hbWUpIHtcbiAgICBjYXNlIFwiSU5QVVRcIjpcbiAgICBjYXNlIFwiVEVYVEFSRUFcIjpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKTtcbn1cbmZ1bmN0aW9uIGlzVHlwZWRDaGFyVmFsaWQoe1xuICBrZXlDb2RlLFxuICBtZXRhS2V5LFxuICBjdHJsS2V5LFxuICBhbHRLZXlcbn0pIHtcbiAgaWYgKG1ldGFLZXkgfHwgY3RybEtleSB8fCBhbHRLZXkpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoa2V5Q29kZSA+PSA0OCAmJiBrZXlDb2RlIDw9IDU3KVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAoa2V5Q29kZSA+PSA2NSAmJiBrZXlDb2RlIDw9IDkwKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAoa2V5Q29kZSA+PSA5NyAmJiBrZXlDb2RlIDw9IDEyMilcbiAgICByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gb25TdGFydFR5cGluZyhjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgZG9jdW1lbnQ6IGRvY3VtZW50MiA9IGRlZmF1bHREb2N1bWVudCB9ID0gb3B0aW9ucztcbiAgY29uc3Qga2V5ZG93biA9IChldmVudCkgPT4ge1xuICAgIGlmICghaXNGb2N1c2VkRWxlbWVudEVkaXRhYmxlKCkgJiYgaXNUeXBlZENoYXJWYWxpZChldmVudCkpIHtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGlmIChkb2N1bWVudDIpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudDIsIFwia2V5ZG93blwiLCBrZXlkb3duLCB7IHBhc3NpdmU6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlUmVmKGtleSwgaW5pdGlhbFZhbHVlID0gbnVsbCkge1xuICBjb25zdCBpbnN0YW5jZSA9IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGxldCBfdHJpZ2dlciA9ICgpID0+IHtcbiAgfTtcbiAgY29uc3QgZWxlbWVudCA9IHZ1ZURlbWkuY3VzdG9tUmVmKCh0cmFjaywgdHJpZ2dlcikgPT4ge1xuICAgIF90cmlnZ2VyID0gdHJpZ2dlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB0cmFjaygpO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gaW5zdGFuY2UgPT0gbnVsbCA/IHZvaWQgMCA6IGluc3RhbmNlLnByb3h5KSA9PSBudWxsID8gdm9pZCAwIDogX2EuJHJlZnNba2V5XSkgIT0gbnVsbCA/IF9iIDogaW5pdGlhbFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldCgpIHtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZChfdHJpZ2dlcik7XG4gIHZ1ZURlbWkub25VcGRhdGVkKF90cmlnZ2VyKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHVzZU1vdW50ZWQoKSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaW5zdGFuY2UgPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBpZiAoaW5zdGFuY2UpIHtcbiAgICB2dWVEZW1pLm9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBpc01vdW50ZWQudmFsdWUgPSB0cnVlO1xuICAgIH0sIHZ1ZURlbWkuaXNWdWUyID8gdm9pZCAwIDogaW5zdGFuY2UpO1xuICB9XG4gIHJldHVybiBpc01vdW50ZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZVN1cHBvcnRlZChjYWxsYmFjaykge1xuICBjb25zdCBpc01vdW50ZWQgPSB1c2VNb3VudGVkKCk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpc01vdW50ZWQudmFsdWU7XG4gICAgcmV0dXJuIEJvb2xlYW4oY2FsbGJhY2soKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VNdXRhdGlvbk9ic2VydmVyKHRhcmdldCwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIC4uLm11dGF0aW9uT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgbGV0IG9ic2VydmVyO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB3aW5kb3cgJiYgXCJNdXRhdGlvbk9ic2VydmVyXCIgaW4gd2luZG93KTtcbiAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIG9ic2VydmVyID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdGFyZ2V0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KTtcbiAgICBjb25zdCBpdGVtcyA9IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkubWFwKHVucmVmRWxlbWVudCkuZmlsdGVyKHNoYXJlZC5ub3ROdWxsaXNoKTtcbiAgICByZXR1cm4gbmV3IFNldChpdGVtcyk7XG4gIH0pO1xuICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKFxuICAgICgpID0+IHRhcmdldHMudmFsdWUsXG4gICAgKHRhcmdldHMyKSA9PiB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUgJiYgdGFyZ2V0czIuc2l6ZSkge1xuICAgICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgICAgdGFyZ2V0czIuZm9yRWFjaCgoZWwpID0+IG9ic2VydmVyLm9ic2VydmUoZWwsIG11dGF0aW9uT3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9XG4gICk7XG4gIGNvbnN0IHRha2VSZWNvcmRzID0gKCkgPT4ge1xuICAgIHJldHVybiBvYnNlcnZlciA9PSBudWxsID8gdm9pZCAwIDogb2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBzdG9wV2F0Y2goKTtcbiAgICBjbGVhbnVwKCk7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdG9wLFxuICAgIHRha2VSZWNvcmRzXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUFjdGl2ZUVsZW1lbnQob3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYTtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZGVlcCA9IHRydWUsXG4gICAgdHJpZ2dlck9uUmVtb3ZhbCA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkb2N1bWVudCA9IChfYSA9IG9wdGlvbnMuZG9jdW1lbnQpICE9IG51bGwgPyBfYSA6IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50O1xuICBjb25zdCBnZXREZWVwQWN0aXZlRWxlbWVudCA9ICgpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGRlZXApIHtcbiAgICAgIHdoaWxlIChlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50LnNoYWRvd1Jvb3QpXG4gICAgICAgIGVsZW1lbnQgPSAoX2EyID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5zaGFkb3dSb290KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9O1xuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgdHJpZ2dlciA9ICgpID0+IHtcbiAgICBhY3RpdmVFbGVtZW50LnZhbHVlID0gZ2V0RGVlcEFjdGl2ZUVsZW1lbnQoKTtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJsdXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdHJpZ2dlcigpO1xuICAgIH0sIHRydWUpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImZvY3VzXCIsIHRyaWdnZXIsIHRydWUpO1xuICB9XG4gIGlmICh0cmlnZ2VyT25SZW1vdmFsKSB7XG4gICAgdXNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudCwgKG11dGF0aW9ucykgPT4ge1xuICAgICAgbXV0YXRpb25zLmZpbHRlcigobSkgPT4gbS5yZW1vdmVkTm9kZXMubGVuZ3RoKS5tYXAoKG4pID0+IEFycmF5LmZyb20obi5yZW1vdmVkTm9kZXMpKS5mbGF0KCkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBpZiAobm9kZSA9PT0gYWN0aXZlRWxlbWVudC52YWx1ZSlcbiAgICAgICAgICB0cmlnZ2VyKCk7XG4gICAgICB9KTtcbiAgICB9LCB7XG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlXG4gICAgfSk7XG4gIH1cbiAgdHJpZ2dlcigpO1xuICByZXR1cm4gYWN0aXZlRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdXNlUmFmRm4oZm4sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBmcHNMaW1pdCA9IHZvaWQgMCxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaW50ZXJ2YWxMaW1pdCA9IGZwc0xpbWl0ID8gMWUzIC8gZnBzTGltaXQgOiBudWxsO1xuICBsZXQgcHJldmlvdXNGcmFtZVRpbWVzdGFtcCA9IDA7XG4gIGxldCByYWZJZCA9IG51bGw7XG4gIGZ1bmN0aW9uIGxvb3AodGltZXN0YW1wKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSB8fCAhd2luZG93KVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghcHJldmlvdXNGcmFtZVRpbWVzdGFtcClcbiAgICAgIHByZXZpb3VzRnJhbWVUaW1lc3RhbXAgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZGVsdGEgPSB0aW1lc3RhbXAgLSBwcmV2aW91c0ZyYW1lVGltZXN0YW1wO1xuICAgIGlmIChpbnRlcnZhbExpbWl0ICYmIGRlbHRhIDwgaW50ZXJ2YWxMaW1pdCkge1xuICAgICAgcmFmSWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcmV2aW91c0ZyYW1lVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIGZuKHsgZGVsdGEsIHRpbWVzdGFtcCB9KTtcbiAgICByYWZJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUgJiYgd2luZG93KSB7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gICAgICBwcmV2aW91c0ZyYW1lVGltZXN0YW1wID0gMDtcbiAgICAgIHJhZklkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocmFmSWQgIT0gbnVsbCAmJiB3aW5kb3cpIHtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gICAgICByYWZJZCA9IG51bGw7XG4gICAgfVxuICB9XG4gIGlmIChpbW1lZGlhdGUpXG4gICAgcmVzdW1lKCk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShwYXVzZSk7XG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmU6IHZ1ZURlbWkucmVhZG9ubHkoaXNBY3RpdmUpLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VBbmltYXRlKHRhcmdldCwga2V5ZnJhbWVzLCBvcHRpb25zKSB7XG4gIGxldCBjb25maWc7XG4gIGxldCBhbmltYXRlT3B0aW9ucztcbiAgaWYgKHNoYXJlZC5pc09iamVjdChvcHRpb25zKSkge1xuICAgIGNvbmZpZyA9IG9wdGlvbnM7XG4gICAgYW5pbWF0ZU9wdGlvbnMgPSBzaGFyZWQub2JqZWN0T21pdChvcHRpb25zLCBbXCJ3aW5kb3dcIiwgXCJpbW1lZGlhdGVcIiwgXCJjb21taXRTdHlsZXNcIiwgXCJwZXJzaXN0XCIsIFwib25SZWFkeVwiLCBcIm9uRXJyb3JcIl0pO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZyA9IHsgZHVyYXRpb246IG9wdGlvbnMgfTtcbiAgICBhbmltYXRlT3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBjb21taXRTdHlsZXMsXG4gICAgcGVyc2lzdCxcbiAgICBwbGF5YmFja1JhdGU6IF9wbGF5YmFja1JhdGUgPSAxLFxuICAgIG9uUmVhZHksXG4gICAgb25FcnJvciA9IChlKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gd2luZG93ICYmIEhUTUxFbGVtZW50ICYmIFwiYW5pbWF0ZVwiIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZSk7XG4gIGNvbnN0IGFuaW1hdGUgPSB2dWVEZW1pLnNoYWxsb3dSZWYodm9pZCAwKTtcbiAgY29uc3Qgc3RvcmUgPSB2dWVEZW1pLnNoYWxsb3dSZWFjdGl2ZSh7XG4gICAgc3RhcnRUaW1lOiBudWxsLFxuICAgIGN1cnJlbnRUaW1lOiBudWxsLFxuICAgIHRpbWVsaW5lOiBudWxsLFxuICAgIHBsYXliYWNrUmF0ZTogX3BsYXliYWNrUmF0ZSxcbiAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICBwbGF5U3RhdGU6IGltbWVkaWF0ZSA/IFwiaWRsZVwiIDogXCJwYXVzZWRcIixcbiAgICByZXBsYWNlU3RhdGU6IFwiYWN0aXZlXCJcbiAgfSk7XG4gIGNvbnN0IHBlbmRpbmcgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN0b3JlLnBlbmRpbmcpO1xuICBjb25zdCBwbGF5U3RhdGUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN0b3JlLnBsYXlTdGF0ZSk7XG4gIGNvbnN0IHJlcGxhY2VTdGF0ZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc3RvcmUucmVwbGFjZVN0YXRlKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHN0b3JlLnN0YXJ0VGltZTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgc3RvcmUuc3RhcnRUaW1lID0gdmFsdWU7XG4gICAgICBpZiAoYW5pbWF0ZS52YWx1ZSlcbiAgICAgICAgYW5pbWF0ZS52YWx1ZS5zdGFydFRpbWUgPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjdXJyZW50VGltZSA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBzdG9yZS5jdXJyZW50VGltZTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgc3RvcmUuY3VycmVudFRpbWUgPSB2YWx1ZTtcbiAgICAgIGlmIChhbmltYXRlLnZhbHVlKSB7XG4gICAgICAgIGFuaW1hdGUudmFsdWUuY3VycmVudFRpbWUgPSB2YWx1ZTtcbiAgICAgICAgc3luY1Jlc3VtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHRpbWVsaW5lID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHN0b3JlLnRpbWVsaW5lO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICBzdG9yZS50aW1lbGluZSA9IHZhbHVlO1xuICAgICAgaWYgKGFuaW1hdGUudmFsdWUpXG4gICAgICAgIGFuaW1hdGUudmFsdWUudGltZWxpbmUgPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBwbGF5YmFja1JhdGUgPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gc3RvcmUucGxheWJhY2tSYXRlO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICBzdG9yZS5wbGF5YmFja1JhdGUgPSB2YWx1ZTtcbiAgICAgIGlmIChhbmltYXRlLnZhbHVlKVxuICAgICAgICBhbmltYXRlLnZhbHVlLnBsYXliYWNrUmF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHBsYXkgPSAoKSA9PiB7XG4gICAgaWYgKGFuaW1hdGUudmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFuaW1hdGUudmFsdWUucGxheSgpO1xuICAgICAgICBzeW5jUmVzdW1lKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN5bmNQYXVzZSgpO1xuICAgICAgICBvbkVycm9yKGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHBhdXNlID0gKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICB0cnkge1xuICAgICAgKF9hID0gYW5pbWF0ZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnBhdXNlKCk7XG4gICAgICBzeW5jUGF1c2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmV2ZXJzZSA9ICgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCFhbmltYXRlLnZhbHVlKVxuICAgICAgdXBkYXRlKCk7XG4gICAgdHJ5IHtcbiAgICAgIChfYSA9IGFuaW1hdGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5yZXZlcnNlKCk7XG4gICAgICBzeW5jUmVzdW1lKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc3luY1BhdXNlKCk7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICB0cnkge1xuICAgICAgKF9hID0gYW5pbWF0ZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZpbmlzaCgpO1xuICAgICAgc3luY1BhdXNlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgdHJ5IHtcbiAgICAgIChfYSA9IGFuaW1hdGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYW5jZWwoKTtcbiAgICAgIHN5bmNQYXVzZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfVxuICB9O1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWwpID0+IHtcbiAgICBpZiAoZWwpXG4gICAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4ga2V5ZnJhbWVzLCAodmFsdWUpID0+IHtcbiAgICBpZiAoYW5pbWF0ZS52YWx1ZSlcbiAgICAgIHVwZGF0ZSgpO1xuICAgIGlmICghdW5yZWZFbGVtZW50KHRhcmdldCkgJiYgYW5pbWF0ZS52YWx1ZSkge1xuICAgICAgYW5pbWF0ZS52YWx1ZS5lZmZlY3QgPSBuZXcgS2V5ZnJhbWVFZmZlY3QoXG4gICAgICAgIHVucmVmRWxlbWVudCh0YXJnZXQpLFxuICAgICAgICBzaGFyZWQudG9WYWx1ZSh2YWx1ZSksXG4gICAgICAgIGFuaW1hdGVPcHRpb25zXG4gICAgICApO1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHVwZGF0ZSh0cnVlKSwgZmFsc2UpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoY2FuY2VsKTtcbiAgZnVuY3Rpb24gdXBkYXRlKGluaXQpIHtcbiAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUgfHwgIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghYW5pbWF0ZS52YWx1ZSlcbiAgICAgIGFuaW1hdGUudmFsdWUgPSBlbC5hbmltYXRlKHNoYXJlZC50b1ZhbHVlKGtleWZyYW1lcyksIGFuaW1hdGVPcHRpb25zKTtcbiAgICBpZiAocGVyc2lzdClcbiAgICAgIGFuaW1hdGUudmFsdWUucGVyc2lzdCgpO1xuICAgIGlmIChfcGxheWJhY2tSYXRlICE9PSAxKVxuICAgICAgYW5pbWF0ZS52YWx1ZS5wbGF5YmFja1JhdGUgPSBfcGxheWJhY2tSYXRlO1xuICAgIGlmIChpbml0ICYmICFpbW1lZGlhdGUpXG4gICAgICBhbmltYXRlLnZhbHVlLnBhdXNlKCk7XG4gICAgZWxzZVxuICAgICAgc3luY1Jlc3VtZSgpO1xuICAgIG9uUmVhZHkgPT0gbnVsbCA/IHZvaWQgMCA6IG9uUmVhZHkoYW5pbWF0ZS52YWx1ZSk7XG4gIH1cbiAgdXNlRXZlbnRMaXN0ZW5lcihhbmltYXRlLCBbXCJjYW5jZWxcIiwgXCJmaW5pc2hcIiwgXCJyZW1vdmVcIl0sIHN5bmNQYXVzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoYW5pbWF0ZSwgXCJmaW5pc2hcIiwgKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29tbWl0U3R5bGVzKVxuICAgICAgKF9hID0gYW5pbWF0ZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbW1pdFN0eWxlcygpO1xuICB9KTtcbiAgY29uc3QgeyByZXN1bWU6IHJlc3VtZVJlZiwgcGF1c2U6IHBhdXNlUmVmIH0gPSB1c2VSYWZGbigoKSA9PiB7XG4gICAgaWYgKCFhbmltYXRlLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHN0b3JlLnBlbmRpbmcgPSBhbmltYXRlLnZhbHVlLnBlbmRpbmc7XG4gICAgc3RvcmUucGxheVN0YXRlID0gYW5pbWF0ZS52YWx1ZS5wbGF5U3RhdGU7XG4gICAgc3RvcmUucmVwbGFjZVN0YXRlID0gYW5pbWF0ZS52YWx1ZS5yZXBsYWNlU3RhdGU7XG4gICAgc3RvcmUuc3RhcnRUaW1lID0gYW5pbWF0ZS52YWx1ZS5zdGFydFRpbWU7XG4gICAgc3RvcmUuY3VycmVudFRpbWUgPSBhbmltYXRlLnZhbHVlLmN1cnJlbnRUaW1lO1xuICAgIHN0b3JlLnRpbWVsaW5lID0gYW5pbWF0ZS52YWx1ZS50aW1lbGluZTtcbiAgICBzdG9yZS5wbGF5YmFja1JhdGUgPSBhbmltYXRlLnZhbHVlLnBsYXliYWNrUmF0ZTtcbiAgfSwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICBmdW5jdGlvbiBzeW5jUmVzdW1lKCkge1xuICAgIGlmIChpc1N1cHBvcnRlZC52YWx1ZSlcbiAgICAgIHJlc3VtZVJlZigpO1xuICB9XG4gIGZ1bmN0aW9uIHN5bmNQYXVzZSgpIHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUgJiYgd2luZG93KVxuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShwYXVzZVJlZik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBhbmltYXRlLFxuICAgIC8vIGFjdGlvbnNcbiAgICBwbGF5LFxuICAgIHBhdXNlLFxuICAgIHJldmVyc2UsXG4gICAgZmluaXNoLFxuICAgIGNhbmNlbCxcbiAgICAvLyBzdGF0ZVxuICAgIHBlbmRpbmcsXG4gICAgcGxheVN0YXRlLFxuICAgIHJlcGxhY2VTdGF0ZSxcbiAgICBzdGFydFRpbWUsXG4gICAgY3VycmVudFRpbWUsXG4gICAgdGltZWxpbmUsXG4gICAgcGxheWJhY2tSYXRlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUFzeW5jUXVldWUodGFza3MsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIGludGVycnVwdCA9IHRydWUsXG4gICAgb25FcnJvciA9IHNoYXJlZC5ub29wLFxuICAgIG9uRmluaXNoZWQgPSBzaGFyZWQubm9vcCxcbiAgICBzaWduYWxcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByb21pc2VTdGF0ZSA9IHtcbiAgICBhYm9ydGVkOiBcImFib3J0ZWRcIixcbiAgICBmdWxmaWxsZWQ6IFwiZnVsZmlsbGVkXCIsXG4gICAgcGVuZGluZzogXCJwZW5kaW5nXCIsXG4gICAgcmVqZWN0ZWQ6IFwicmVqZWN0ZWRcIlxuICB9O1xuICBjb25zdCBpbml0aWFsUmVzdWx0ID0gQXJyYXkuZnJvbShBcnJheS5mcm9tKHsgbGVuZ3RoOiB0YXNrcy5sZW5ndGggfSksICgpID0+ICh7IHN0YXRlOiBwcm9taXNlU3RhdGUucGVuZGluZywgZGF0YTogbnVsbCB9KSk7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkucmVhY3RpdmUoaW5pdGlhbFJlc3VsdCk7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gdnVlRGVtaS5yZWYoLTEpO1xuICBpZiAoIXRhc2tzIHx8IHRhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uRmluaXNoZWQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICByZXN1bHRcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVJlc3VsdChzdGF0ZSwgcmVzKSB7XG4gICAgYWN0aXZlSW5kZXgudmFsdWUrKztcbiAgICByZXN1bHRbYWN0aXZlSW5kZXgudmFsdWVdLmRhdGEgPSByZXM7XG4gICAgcmVzdWx0W2FjdGl2ZUluZGV4LnZhbHVlXS5zdGF0ZSA9IHN0YXRlO1xuICB9XG4gIHRhc2tzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgIHJldHVybiBwcmV2LnRoZW4oKHByZXZSZXMpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChzaWduYWwgPT0gbnVsbCA/IHZvaWQgMCA6IHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHVwZGF0ZVJlc3VsdChwcm9taXNlU3RhdGUuYWJvcnRlZCwgbmV3IEVycm9yKFwiYWJvcnRlZFwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgoKF9hID0gcmVzdWx0W2FjdGl2ZUluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0YXRlKSA9PT0gcHJvbWlzZVN0YXRlLnJlamVjdGVkICYmIGludGVycnVwdCkge1xuICAgICAgICBvbkZpbmlzaGVkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvbmUgPSBjdXJyKHByZXZSZXMpLnRoZW4oKGN1cnJlbnRSZXMpID0+IHtcbiAgICAgICAgdXBkYXRlUmVzdWx0KHByb21pc2VTdGF0ZS5mdWxmaWxsZWQsIGN1cnJlbnRSZXMpO1xuICAgICAgICBpZiAoYWN0aXZlSW5kZXgudmFsdWUgPT09IHRhc2tzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgb25GaW5pc2hlZCgpO1xuICAgICAgICByZXR1cm4gY3VycmVudFJlcztcbiAgICAgIH0pO1xuICAgICAgaWYgKCFzaWduYWwpXG4gICAgICAgIHJldHVybiBkb25lO1xuICAgICAgcmV0dXJuIFByb21pc2UucmFjZShbZG9uZSwgd2hlbkFib3J0ZWQoc2lnbmFsKV0pO1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICBpZiAoc2lnbmFsID09IG51bGwgPyB2b2lkIDAgOiBzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICB1cGRhdGVSZXN1bHQocHJvbWlzZVN0YXRlLmFib3J0ZWQsIGUpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZVJlc3VsdChwcm9taXNlU3RhdGUucmVqZWN0ZWQsIGUpO1xuICAgICAgb25FcnJvcigpO1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG4gIH0sIFByb21pc2UucmVzb2x2ZSgpKTtcbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICByZXN1bHRcbiAgfTtcbn1cbmZ1bmN0aW9uIHdoZW5BYm9ydGVkKHNpZ25hbCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiYWJvcnRlZFwiKTtcbiAgICBpZiAoc2lnbmFsLmFib3J0ZWQpXG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIGVsc2VcbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKCkgPT4gcmVqZWN0KGVycm9yKSwgeyBvbmNlOiB0cnVlIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQXN5bmNTdGF0ZShwcm9taXNlLCBpbml0aWFsU3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgZGVsYXkgPSAwLFxuICAgIG9uRXJyb3IgPSBzaGFyZWQubm9vcCxcbiAgICBvblN1Y2Nlc3MgPSBzaGFyZWQubm9vcCxcbiAgICByZXNldE9uRXhlY3V0ZSA9IHRydWUsXG4gICAgc2hhbGxvdyA9IHRydWUsXG4gICAgdGhyb3dFcnJvclxuICB9ID0gb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHt9O1xuICBjb25zdCBzdGF0ZSA9IHNoYWxsb3cgPyB2dWVEZW1pLnNoYWxsb3dSZWYoaW5pdGlhbFN0YXRlKSA6IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGNvbnN0IGlzUmVhZHkgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTG9hZGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnNoYWxsb3dSZWYodm9pZCAwKTtcbiAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZShkZWxheTIgPSAwLCAuLi5hcmdzKSB7XG4gICAgaWYgKHJlc2V0T25FeGVjdXRlKVxuICAgICAgc3RhdGUudmFsdWUgPSBpbml0aWFsU3RhdGU7XG4gICAgZXJyb3IudmFsdWUgPSB2b2lkIDA7XG4gICAgaXNSZWFkeS52YWx1ZSA9IGZhbHNlO1xuICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGRlbGF5MiA+IDApXG4gICAgICBhd2FpdCBzaGFyZWQucHJvbWlzZVRpbWVvdXQoZGVsYXkyKTtcbiAgICBjb25zdCBfcHJvbWlzZSA9IHR5cGVvZiBwcm9taXNlID09PSBcImZ1bmN0aW9uXCIgPyBwcm9taXNlKC4uLmFyZ3MpIDogcHJvbWlzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IF9wcm9taXNlO1xuICAgICAgc3RhdGUudmFsdWUgPSBkYXRhO1xuICAgICAgaXNSZWFkeS52YWx1ZSA9IHRydWU7XG4gICAgICBvblN1Y2Nlc3MoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3IudmFsdWUgPSBlO1xuICAgICAgb25FcnJvcihlKTtcbiAgICAgIGlmICh0aHJvd0Vycm9yKVxuICAgICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLnZhbHVlO1xuICB9XG4gIGlmIChpbW1lZGlhdGUpXG4gICAgZXhlY3V0ZShkZWxheSk7XG4gIGNvbnN0IHNoZWxsID0ge1xuICAgIHN0YXRlLFxuICAgIGlzUmVhZHksXG4gICAgaXNMb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGV4ZWN1dGVcbiAgfTtcbiAgZnVuY3Rpb24gd2FpdFVudGlsSXNMb2FkZWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNoYXJlZC51bnRpbChpc0xvYWRpbmcpLnRvQmUoZmFsc2UpLnRoZW4oKCkgPT4gcmVzb2x2ZShzaGVsbCkpLmNhdGNoKHJlamVjdCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zaGVsbCxcbiAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gd2FpdFVudGlsSXNMb2FkZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICBhcnJheTogKHYpID0+IEpTT04uc3RyaW5naWZ5KHYpLFxuICBvYmplY3Q6ICh2KSA9PiBKU09OLnN0cmluZ2lmeSh2KSxcbiAgc2V0OiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2KSksXG4gIG1hcDogKHYpID0+IEpTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh2KSksXG4gIG51bGw6ICgpID0+IFwiXCJcbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0U2VyaWFsaXphdGlvbih0YXJnZXQpIHtcbiAgaWYgKCF0YXJnZXQpXG4gICAgcmV0dXJuIGRlZmF1bHRzLm51bGw7XG4gIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBNYXApXG4gICAgcmV0dXJuIGRlZmF1bHRzLm1hcDtcbiAgZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgU2V0KVxuICAgIHJldHVybiBkZWZhdWx0cy5zZXQ7XG4gIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSlcbiAgICByZXR1cm4gZGVmYXVsdHMuYXJyYXk7XG4gIGVsc2VcbiAgICByZXR1cm4gZGVmYXVsdHMub2JqZWN0O1xufVxuXG5mdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGJhc2U2NCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBwcm9taXNlID0gdnVlRGVtaS5yZWYoKTtcbiAgZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICBpZiAoIXNoYXJlZC5pc0NsaWVudClcbiAgICAgIHJldHVybjtcbiAgICBwcm9taXNlLnZhbHVlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgX3RhcmdldCA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgICAgIGlmIChfdGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICByZXNvbHZlKFwiXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGFyZ2V0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmVzb2x2ZShibG9iVG9CYXNlNjQobmV3IEJsb2IoW190YXJnZXRdLCB7IHR5cGU6IFwidGV4dC9wbGFpblwiIH0pKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICByZXNvbHZlKGJsb2JUb0Jhc2U2NChfdGFyZ2V0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLm5ldyBVaW50OEFycmF5KF90YXJnZXQpKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKF90YXJnZXQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgICAgICAgIHJlc29sdmUoX3RhcmdldC50b0RhdGFVUkwob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy50eXBlLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnF1YWxpdHkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChfdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGltZyA9IF90YXJnZXQuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSBcIkFub255bW91c1wiO1xuICAgICAgICAgIGltZ0xvYWRlZChpbWcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodDtcbiAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgICAgcmVzb2x2ZShjYW52YXMudG9EYXRhVVJMKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMudHlwZSwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5xdWFsaXR5KSk7XG4gICAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgX3RhcmdldCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIGNvbnN0IF9zZXJpYWxpemVGbiA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnNlcmlhbGl6ZXIpIHx8IGdldERlZmF1bHRTZXJpYWxpemF0aW9uKF90YXJnZXQpO1xuICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBfc2VyaWFsaXplRm4oX3RhcmdldCk7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoYmxvYlRvQmFzZTY0KG5ldyBCbG9iKFtzZXJpYWxpemVkXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJ0YXJnZXQgaXMgdW5zdXBwb3J0ZWQgdHlwZXNcIikpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHByb21pc2UudmFsdWUudGhlbigocmVzKSA9PiBiYXNlNjQudmFsdWUgPSByZXMpO1xuICAgIHJldHVybiBwcm9taXNlLnZhbHVlO1xuICB9XG4gIGlmICh2dWVEZW1pLmlzUmVmKHRhcmdldCkgfHwgdHlwZW9mIHRhcmdldCA9PT0gXCJmdW5jdGlvblwiKVxuICAgIHZ1ZURlbWkud2F0Y2godGFyZ2V0LCBleGVjdXRlLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgZWxzZVxuICAgIGV4ZWN1dGUoKTtcbiAgcmV0dXJuIHtcbiAgICBiYXNlNjQsXG4gICAgcHJvbWlzZSxcbiAgICBleGVjdXRlXG4gIH07XG59XG5mdW5jdGlvbiBpbWdMb2FkZWQoaW1nKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCFpbWcuY29tcGxldGUpIHtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBmci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpO1xuICAgIH07XG4gICAgZnIub25lcnJvciA9IHJlamVjdDtcbiAgICBmci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQmF0dGVyeShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSBvcHRpb25zO1xuICBjb25zdCBldmVudHMgPSBbXCJjaGFyZ2luZ2NoYW5nZVwiLCBcImNoYXJnaW5ndGltZWNoYW5nZVwiLCBcImRpc2NoYXJnaW5ndGltZWNoYW5nZVwiLCBcImxldmVsY2hhbmdlXCJdO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBuYXZpZ2F0b3IgJiYgXCJnZXRCYXR0ZXJ5XCIgaW4gbmF2aWdhdG9yICYmIHR5cGVvZiBuYXZpZ2F0b3IuZ2V0QmF0dGVyeSA9PT0gXCJmdW5jdGlvblwiKTtcbiAgY29uc3QgY2hhcmdpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGNoYXJnaW5nVGltZSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBkaXNjaGFyZ2luZ1RpbWUgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgbGV2ZWwgPSB2dWVEZW1pLnJlZigxKTtcbiAgbGV0IGJhdHRlcnk7XG4gIGZ1bmN0aW9uIHVwZGF0ZUJhdHRlcnlJbmZvKCkge1xuICAgIGNoYXJnaW5nLnZhbHVlID0gdGhpcy5jaGFyZ2luZztcbiAgICBjaGFyZ2luZ1RpbWUudmFsdWUgPSB0aGlzLmNoYXJnaW5nVGltZSB8fCAwO1xuICAgIGRpc2NoYXJnaW5nVGltZS52YWx1ZSA9IHRoaXMuZGlzY2hhcmdpbmdUaW1lIHx8IDA7XG4gICAgbGV2ZWwudmFsdWUgPSB0aGlzLmxldmVsO1xuICB9XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgIG5hdmlnYXRvci5nZXRCYXR0ZXJ5KCkudGhlbigoX2JhdHRlcnkpID0+IHtcbiAgICAgIGJhdHRlcnkgPSBfYmF0dGVyeTtcbiAgICAgIHVwZGF0ZUJhdHRlcnlJbmZvLmNhbGwoYmF0dGVyeSk7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKGJhdHRlcnksIGV2ZW50cywgdXBkYXRlQmF0dGVyeUluZm8sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNoYXJnaW5nLFxuICAgIGNoYXJnaW5nVGltZSxcbiAgICBkaXNjaGFyZ2luZ1RpbWUsXG4gICAgbGV2ZWxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlQmx1ZXRvb3RoKG9wdGlvbnMpIHtcbiAgbGV0IHtcbiAgICBhY2NlcHRBbGxEZXZpY2VzID0gZmFsc2VcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXJzID0gdm9pZCAwLFxuICAgIG9wdGlvbmFsU2VydmljZXMgPSB2b2lkIDAsXG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gbmF2aWdhdG9yICYmIFwiYmx1ZXRvb3RoXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgZGV2aWNlID0gdnVlRGVtaS5zaGFsbG93UmVmKHZvaWQgMCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICB2dWVEZW1pLndhdGNoKGRldmljZSwgKCkgPT4ge1xuICAgIGNvbm5lY3RUb0JsdWV0b290aEdBVFRTZXJ2ZXIoKTtcbiAgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3REZXZpY2UoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPiAwKVxuICAgICAgYWNjZXB0QWxsRGV2aWNlcyA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBkZXZpY2UudmFsdWUgPSBhd2FpdCAobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IuYmx1ZXRvb3RoLnJlcXVlc3REZXZpY2Uoe1xuICAgICAgICBhY2NlcHRBbGxEZXZpY2VzLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBvcHRpb25hbFNlcnZpY2VzXG4gICAgICB9KSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGVycjtcbiAgICB9XG4gIH1cbiAgY29uc3Qgc2VydmVyID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgaXNDb25uZWN0ZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuICgoX2EgPSBzZXJ2ZXIudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb25uZWN0ZWQpIHx8IGZhbHNlO1xuICB9KTtcbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdFRvQmx1ZXRvb3RoR0FUVFNlcnZlcigpIHtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgaWYgKGRldmljZS52YWx1ZSAmJiBkZXZpY2UudmFsdWUuZ2F0dCkge1xuICAgICAgZGV2aWNlLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJnYXR0c2VydmVyZGlzY29ubmVjdGVkXCIsICgpID0+IHtcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VydmVyLnZhbHVlID0gYXdhaXQgZGV2aWNlLnZhbHVlLmdhdHQuY29ubmVjdCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGRldmljZS52YWx1ZSlcbiAgICAgIChfYSA9IGRldmljZS52YWx1ZS5nYXR0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29ubmVjdCgpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGRldmljZS52YWx1ZSlcbiAgICAgIChfYSA9IGRldmljZS52YWx1ZS5nYXR0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGlzY29ubmVjdCgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0Nvbm5lY3RlZCxcbiAgICAvLyBEZXZpY2U6XG4gICAgZGV2aWNlLFxuICAgIHJlcXVlc3REZXZpY2UsXG4gICAgLy8gU2VydmVyOlxuICAgIHNlcnZlcixcbiAgICAvLyBFcnJvcnM6XG4gICAgZXJyb3JcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gd2luZG93ICYmIFwibWF0Y2hNZWRpYVwiIGluIHdpbmRvdyAmJiB0eXBlb2Ygd2luZG93Lm1hdGNoTWVkaWEgPT09IFwiZnVuY3Rpb25cIik7XG4gIGxldCBtZWRpYVF1ZXJ5O1xuICBjb25zdCBtYXRjaGVzID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgbWF0Y2hlcy52YWx1ZSA9IGV2ZW50Lm1hdGNoZXM7XG4gIH07XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgaWYgKCFtZWRpYVF1ZXJ5KVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiBpbiBtZWRpYVF1ZXJ5KVxuICAgICAgbWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGhhbmRsZXIpO1xuICAgIGVsc2VcbiAgICAgIG1lZGlhUXVlcnkucmVtb3ZlTGlzdGVuZXIoaGFuZGxlcik7XG4gIH07XG4gIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY2xlYW51cCgpO1xuICAgIG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShzaGFyZWQudG9WYWx1ZShxdWVyeSkpO1xuICAgIGlmIChcImFkZEV2ZW50TGlzdGVuZXJcIiBpbiBtZWRpYVF1ZXJ5KVxuICAgICAgbWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGhhbmRsZXIpO1xuICAgIGVsc2VcbiAgICAgIG1lZGlhUXVlcnkuYWRkTGlzdGVuZXIoaGFuZGxlcik7XG4gICAgbWF0Y2hlcy52YWx1ZSA9IG1lZGlhUXVlcnkubWF0Y2hlcztcbiAgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgc3RvcFdhdGNoKCk7XG4gICAgY2xlYW51cCgpO1xuICAgIG1lZGlhUXVlcnkgPSB2b2lkIDA7XG4gIH0pO1xuICByZXR1cm4gbWF0Y2hlcztcbn1cblxuY29uc3QgYnJlYWtwb2ludHNUYWlsd2luZCA9IHtcbiAgXCJzbVwiOiA2NDAsXG4gIFwibWRcIjogNzY4LFxuICBcImxnXCI6IDEwMjQsXG4gIFwieGxcIjogMTI4MCxcbiAgXCIyeGxcIjogMTUzNlxufTtcbmNvbnN0IGJyZWFrcG9pbnRzQm9vdHN0cmFwVjUgPSB7XG4gIHhzOiAwLFxuICBzbTogNTc2LFxuICBtZDogNzY4LFxuICBsZzogOTkyLFxuICB4bDogMTIwMCxcbiAgeHhsOiAxNDAwXG59O1xuY29uc3QgYnJlYWtwb2ludHNWdWV0aWZ5VjIgPSB7XG4gIHhzOiAwLFxuICBzbTogNjAwLFxuICBtZDogOTYwLFxuICBsZzogMTI2NCxcbiAgeGw6IDE5MDRcbn07XG5jb25zdCBicmVha3BvaW50c1Z1ZXRpZnlWMyA9IHtcbiAgeHM6IDAsXG4gIHNtOiA2MDAsXG4gIG1kOiA5NjAsXG4gIGxnOiAxMjgwLFxuICB4bDogMTkyMCxcbiAgeHhsOiAyNTYwXG59O1xuY29uc3QgYnJlYWtwb2ludHNWdWV0aWZ5ID0gYnJlYWtwb2ludHNWdWV0aWZ5VjI7XG5jb25zdCBicmVha3BvaW50c0FudERlc2lnbiA9IHtcbiAgeHM6IDQ4MCxcbiAgc206IDU3NixcbiAgbWQ6IDc2OCxcbiAgbGc6IDk5MixcbiAgeGw6IDEyMDAsXG4gIHh4bDogMTYwMFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzUXVhc2FyID0ge1xuICB4czogMCxcbiAgc206IDYwMCxcbiAgbWQ6IDEwMjQsXG4gIGxnOiAxNDQwLFxuICB4bDogMTkyMFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzU2VtYXRpYyA9IHtcbiAgbW9iaWxlUzogMzIwLFxuICBtb2JpbGVNOiAzNzUsXG4gIG1vYmlsZUw6IDQyNSxcbiAgdGFibGV0OiA3NjgsXG4gIGxhcHRvcDogMTAyNCxcbiAgbGFwdG9wTDogMTQ0MCxcbiAgZGVza3RvcDRLOiAyNTYwXG59O1xuY29uc3QgYnJlYWtwb2ludHNNYXN0ZXJDc3MgPSB7XG4gIFwiM3hzXCI6IDM2MCxcbiAgXCIyeHNcIjogNDgwLFxuICBcInhzXCI6IDYwMCxcbiAgXCJzbVwiOiA3NjgsXG4gIFwibWRcIjogMTAyNCxcbiAgXCJsZ1wiOiAxMjgwLFxuICBcInhsXCI6IDE0NDAsXG4gIFwiMnhsXCI6IDE2MDAsXG4gIFwiM3hsXCI6IDE5MjAsXG4gIFwiNHhsXCI6IDI1NjBcbn07XG5jb25zdCBicmVha3BvaW50c1ByaW1lRmxleCA9IHtcbiAgc206IDU3NixcbiAgbWQ6IDc2OCxcbiAgbGc6IDk5MixcbiAgeGw6IDEyMDBcbn07XG5cbmZ1bmN0aW9uIHVzZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzLCBvcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gZ2V0VmFsdWUoaywgZGVsdGEpIHtcbiAgICBsZXQgdiA9IHNoYXJlZC50b1ZhbHVlKGJyZWFrcG9pbnRzW3NoYXJlZC50b1ZhbHVlKGspXSk7XG4gICAgaWYgKGRlbHRhICE9IG51bGwpXG4gICAgICB2ID0gc2hhcmVkLmluY3JlYXNlV2l0aFVuaXQodiwgZGVsdGEpO1xuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIilcbiAgICAgIHYgPSBgJHt2fXB4YDtcbiAgICByZXR1cm4gdjtcbiAgfVxuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIHN0cmF0ZWd5ID0gXCJtaW4td2lkdGhcIiB9ID0gb3B0aW9ucztcbiAgZnVuY3Rpb24gbWF0Y2gocXVlcnkpIHtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG4gIH1cbiAgY29uc3QgZ3JlYXRlck9yRXF1YWwgPSAoaykgPT4ge1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KCgpID0+IGAobWluLXdpZHRoOiAke2dldFZhbHVlKGspfSlgLCBvcHRpb25zKTtcbiAgfTtcbiAgY29uc3Qgc21hbGxlck9yRXF1YWwgPSAoaykgPT4ge1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KCgpID0+IGAobWF4LXdpZHRoOiAke2dldFZhbHVlKGspfSlgLCBvcHRpb25zKTtcbiAgfTtcbiAgY29uc3Qgc2hvcnRjdXRNZXRob2RzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludHMpLnJlZHVjZSgoc2hvcnRjdXRzLCBrKSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNob3J0Y3V0cywgaywge1xuICAgICAgZ2V0OiAoKSA9PiBzdHJhdGVneSA9PT0gXCJtaW4td2lkdGhcIiA/IGdyZWF0ZXJPckVxdWFsKGspIDogc21hbGxlck9yRXF1YWwoayksXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHNob3J0Y3V0cztcbiAgfSwge30pO1xuICBmdW5jdGlvbiBjdXJyZW50KCkge1xuICAgIGNvbnN0IHBvaW50cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKS5tYXAoKGkpID0+IFtpLCBncmVhdGVyT3JFcXVhbChpKV0pO1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHBvaW50cy5maWx0ZXIoKFssIHZdKSA9PiB2LnZhbHVlKS5tYXAoKFtrXSkgPT4gaykpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHNob3J0Y3V0TWV0aG9kcywge1xuICAgIGdyZWF0ZXJPckVxdWFsLFxuICAgIHNtYWxsZXJPckVxdWFsLFxuICAgIGdyZWF0ZXIoaykge1xuICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoKCkgPT4gYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoaywgMC4xKX0pYCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBzbWFsbGVyKGspIHtcbiAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KCgpID0+IGAobWF4LXdpZHRoOiAke2dldFZhbHVlKGssIC0wLjEpfSlgLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGJldHdlZW4oYSwgYikge1xuICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoKCkgPT4gYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoYSl9KSBhbmQgKG1heC13aWR0aDogJHtnZXRWYWx1ZShiLCAtMC4xKX0pYCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBpc0dyZWF0ZXIoaykge1xuICAgICAgcmV0dXJuIG1hdGNoKGAobWluLXdpZHRoOiAke2dldFZhbHVlKGssIDAuMSl9KWApO1xuICAgIH0sXG4gICAgaXNHcmVhdGVyT3JFcXVhbChrKSB7XG4gICAgICByZXR1cm4gbWF0Y2goYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoayl9KWApO1xuICAgIH0sXG4gICAgaXNTbWFsbGVyKGspIHtcbiAgICAgIHJldHVybiBtYXRjaChgKG1heC13aWR0aDogJHtnZXRWYWx1ZShrLCAtMC4xKX0pYCk7XG4gICAgfSxcbiAgICBpc1NtYWxsZXJPckVxdWFsKGspIHtcbiAgICAgIHJldHVybiBtYXRjaChgKG1heC13aWR0aDogJHtnZXRWYWx1ZShrKX0pYCk7XG4gICAgfSxcbiAgICBpc0luQmV0d2VlbihhLCBiKSB7XG4gICAgICByZXR1cm4gbWF0Y2goYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoYSl9KSBhbmQgKG1heC13aWR0aDogJHtnZXRWYWx1ZShiLCAtMC4xKX0pYCk7XG4gICAgfSxcbiAgICBjdXJyZW50LFxuICAgIGFjdGl2ZSgpIHtcbiAgICAgIGNvbnN0IGJwcyA9IGN1cnJlbnQoKTtcbiAgICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGJwcy52YWx1ZS5sZW5ndGggPT09IDAgPyBcIlwiIDogYnBzLnZhbHVlLmF0KC0xKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQnJvYWRjYXN0Q2hhbm5lbChvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IHdpbmRvdyAmJiBcIkJyb2FkY2FzdENoYW5uZWxcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBpc0Nsb3NlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgY2hhbm5lbCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgY29uc3QgcG9zdCA9IChkYXRhMikgPT4ge1xuICAgIGlmIChjaGFubmVsLnZhbHVlKVxuICAgICAgY2hhbm5lbC52YWx1ZS5wb3N0TWVzc2FnZShkYXRhMik7XG4gIH07XG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChjaGFubmVsLnZhbHVlKVxuICAgICAgY2hhbm5lbC52YWx1ZS5jbG9zZSgpO1xuICAgIGlzQ2xvc2VkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcbiAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgICBjaGFubmVsLnZhbHVlID0gbmV3IEJyb2FkY2FzdENoYW5uZWwobmFtZSk7XG4gICAgICBjaGFubmVsLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChlKSA9PiB7XG4gICAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBjaGFubmVsLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlZXJyb3JcIiwgKGUpID0+IHtcbiAgICAgICAgZXJyb3IudmFsdWUgPSBlO1xuICAgICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgY2hhbm5lbC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgICBpc0Nsb3NlZC52YWx1ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNoYW5uZWwsXG4gICAgZGF0YSxcbiAgICBwb3N0LFxuICAgIGNsb3NlLFxuICAgIGVycm9yLFxuICAgIGlzQ2xvc2VkXG4gIH07XG59XG5cbmNvbnN0IFdSSVRBQkxFX1BST1BFUlRJRVMgPSBbXG4gIFwiaGFzaFwiLFxuICBcImhvc3RcIixcbiAgXCJob3N0bmFtZVwiLFxuICBcImhyZWZcIixcbiAgXCJwYXRobmFtZVwiLFxuICBcInBvcnRcIixcbiAgXCJwcm90b2NvbFwiLFxuICBcInNlYXJjaFwiXG5dO1xuZnVuY3Rpb24gdXNlQnJvd3NlckxvY2F0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgV1JJVEFCTEVfUFJPUEVSVElFUy5tYXAoKGtleSkgPT4gW2tleSwgdnVlRGVtaS5yZWYoKV0pXG4gICk7XG4gIGZvciAoY29uc3QgW2tleSwgcmVmMl0gb2Ygc2hhcmVkLm9iamVjdEVudHJpZXMocmVmcykpIHtcbiAgICB2dWVEZW1pLndhdGNoKHJlZjIsICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEod2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubG9jYXRpb24pIHx8IHdpbmRvdy5sb2NhdGlvbltrZXldID09PSB2YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgd2luZG93LmxvY2F0aW9uW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBidWlsZFN0YXRlID0gKHRyaWdnZXIpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBzdGF0ZTogc3RhdGUyLCBsZW5ndGggfSA9ICh3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5oaXN0b3J5KSB8fCB7fTtcbiAgICBjb25zdCB7IG9yaWdpbiB9ID0gKHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmxvY2F0aW9uKSB8fCB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBXUklUQUJMRV9QUk9QRVJUSUVTKVxuICAgICAgcmVmc1trZXldLnZhbHVlID0gKF9hID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubG9jYXRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfYVtrZXldO1xuICAgIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKHtcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgbGVuZ3RoLFxuICAgICAgb3JpZ2luLFxuICAgICAgLi4ucmVmc1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKGJ1aWxkU3RhdGUoXCJsb2FkXCIpKTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInBvcHN0YXRlXCIsICgpID0+IHN0YXRlLnZhbHVlID0gYnVpbGRTdGF0ZShcInBvcHN0YXRlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiaGFzaGNoYW5nZVwiLCAoKSA9PiBzdGF0ZS52YWx1ZSA9IGJ1aWxkU3RhdGUoXCJoYXNoY2hhbmdlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiB1c2VDYWNoZWQocmVmVmFsdWUsIGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gYSA9PT0gYiwgd2F0Y2hPcHRpb25zKSB7XG4gIGNvbnN0IGNhY2hlZFZhbHVlID0gdnVlRGVtaS5yZWYocmVmVmFsdWUudmFsdWUpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHJlZlZhbHVlLnZhbHVlLCAodmFsdWUpID0+IHtcbiAgICBpZiAoIWNvbXBhcmF0b3IodmFsdWUsIGNhY2hlZFZhbHVlLnZhbHVlKSlcbiAgICAgIGNhY2hlZFZhbHVlLnZhbHVlID0gdmFsdWU7XG4gIH0sIHdhdGNoT3B0aW9ucyk7XG4gIHJldHVybiBjYWNoZWRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gdXNlUGVybWlzc2lvbihwZXJtaXNzaW9uRGVzYywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9scyA9IGZhbHNlLFxuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IG5hdmlnYXRvciAmJiBcInBlcm1pc3Npb25zXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgcGVybWlzc2lvblN0YXR1cyA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICBjb25zdCBkZXNjID0gdHlwZW9mIHBlcm1pc3Npb25EZXNjID09PSBcInN0cmluZ1wiID8geyBuYW1lOiBwZXJtaXNzaW9uRGVzYyB9IDogcGVybWlzc2lvbkRlc2M7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHN0YXRlLnZhbHVlID0gKF9iID0gKF9hID0gcGVybWlzc2lvblN0YXR1cy52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0YXRlKSAhPSBudWxsID8gX2IgOiBcInByb21wdFwiO1xuICB9O1xuICB1c2VFdmVudExpc3RlbmVyKHBlcm1pc3Npb25TdGF0dXMsIFwiY2hhbmdlXCIsIHVwZGF0ZSk7XG4gIGNvbnN0IHF1ZXJ5ID0gc2hhcmVkLmNyZWF0ZVNpbmdsZXRvblByb21pc2UoYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFwZXJtaXNzaW9uU3RhdHVzLnZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwZXJtaXNzaW9uU3RhdHVzLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KGRlc2MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwZXJtaXNzaW9uU3RhdHVzLnZhbHVlID0gdm9pZCAwO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb250cm9scylcbiAgICAgIHJldHVybiB2dWVEZW1pLnRvUmF3KHBlcm1pc3Npb25TdGF0dXMudmFsdWUpO1xuICB9KTtcbiAgcXVlcnkoKTtcbiAgaWYgKGNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlLFxuICAgICAgaXNTdXBwb3J0ZWQsXG4gICAgICBxdWVyeVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNsaXBib2FyZChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgcmVhZCA9IGZhbHNlLFxuICAgIHNvdXJjZSxcbiAgICBjb3BpZWREdXJpbmcgPSAxNTAwLFxuICAgIGxlZ2FjeSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0NsaXBib2FyZEFwaVN1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBuYXZpZ2F0b3IgJiYgXCJjbGlwYm9hcmRcIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCBwZXJtaXNzaW9uUmVhZCA9IHVzZVBlcm1pc3Npb24oXCJjbGlwYm9hcmQtcmVhZFwiKTtcbiAgY29uc3QgcGVybWlzc2lvbldyaXRlID0gdXNlUGVybWlzc2lvbihcImNsaXBib2FyZC13cml0ZVwiKTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGlzQ2xpcGJvYXJkQXBpU3VwcG9ydGVkLnZhbHVlIHx8IGxlZ2FjeSk7XG4gIGNvbnN0IHRleHQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgY29waWVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB0aW1lb3V0ID0gc2hhcmVkLnVzZVRpbWVvdXRGbigoKSA9PiBjb3BpZWQudmFsdWUgPSBmYWxzZSwgY29waWVkRHVyaW5nKTtcbiAgZnVuY3Rpb24gdXBkYXRlVGV4dCgpIHtcbiAgICBpZiAoaXNDbGlwYm9hcmRBcGlTdXBwb3J0ZWQudmFsdWUgJiYgaXNBbGxvd2VkKHBlcm1pc3Npb25SZWFkLnZhbHVlKSkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgIHRleHQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0LnZhbHVlID0gbGVnYWN5UmVhZCgpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUgJiYgcmVhZClcbiAgICB1c2VFdmVudExpc3RlbmVyKFtcImNvcHlcIiwgXCJjdXRcIl0sIHVwZGF0ZVRleHQpO1xuICBhc3luYyBmdW5jdGlvbiBjb3B5KHZhbHVlID0gc2hhcmVkLnRvVmFsdWUoc291cmNlKSkge1xuICAgIGlmIChpc1N1cHBvcnRlZC52YWx1ZSAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNDbGlwYm9hcmRBcGlTdXBwb3J0ZWQudmFsdWUgJiYgaXNBbGxvd2VkKHBlcm1pc3Npb25Xcml0ZS52YWx1ZSkpXG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbGVnYWN5Q29weSh2YWx1ZSk7XG4gICAgICB0ZXh0LnZhbHVlID0gdmFsdWU7XG4gICAgICBjb3BpZWQudmFsdWUgPSB0cnVlO1xuICAgICAgdGltZW91dC5zdGFydCgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBsZWdhY3lDb3B5KHZhbHVlKSB7XG4gICAgY29uc3QgdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XG4gICAgdGEudmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBcIlwiO1xuICAgIHRhLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgIHRhLnN0eWxlLm9wYWNpdHkgPSBcIjBcIjtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhKTtcbiAgICB0YS5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XG4gICAgdGEucmVtb3ZlKCk7XG4gIH1cbiAgZnVuY3Rpb24gbGVnYWN5UmVhZCgpIHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICByZXR1cm4gKF9jID0gKF9iID0gKF9hID0gZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LmdldFNlbGVjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoZG9jdW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2IudG9TdHJpbmcoKSkgIT0gbnVsbCA/IF9jIDogXCJcIjtcbiAgfVxuICBmdW5jdGlvbiBpc0FsbG93ZWQoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA9PT0gXCJncmFudGVkXCIgfHwgc3RhdHVzID09PSBcInByb21wdFwiO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgdGV4dCxcbiAgICBjb3BpZWQsXG4gICAgY29weVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VDbGlwYm9hcmRJdGVtcyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgcmVhZCA9IGZhbHNlLFxuICAgIHNvdXJjZSxcbiAgICBjb3BpZWREdXJpbmcgPSAxNTAwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBuYXZpZ2F0b3IgJiYgXCJjbGlwYm9hcmRcIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCBjb250ZW50ID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBjb3BpZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHRpbWVvdXQgPSBzaGFyZWQudXNlVGltZW91dEZuKCgpID0+IGNvcGllZC52YWx1ZSA9IGZhbHNlLCBjb3BpZWREdXJpbmcpO1xuICBmdW5jdGlvbiB1cGRhdGVDb250ZW50KCkge1xuICAgIGlmIChpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCkudGhlbigoaXRlbXMpID0+IHtcbiAgICAgICAgY29udGVudC52YWx1ZSA9IGl0ZW1zO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSAmJiByZWFkKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoW1wiY29weVwiLCBcImN1dFwiXSwgdXBkYXRlQ29udGVudCk7XG4gIGFzeW5jIGZ1bmN0aW9uIGNvcHkodmFsdWUgPSBzaGFyZWQudG9WYWx1ZShzb3VyY2UpKSB7XG4gICAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGUodmFsdWUpO1xuICAgICAgY29udGVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgY29waWVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRpbWVvdXQuc3RhcnQoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBjb250ZW50LFxuICAgIGNvcGllZCxcbiAgICBjb3B5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsb25lRm5KU09OKHNvdXJjZSkge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzb3VyY2UpKTtcbn1cbmZ1bmN0aW9uIHVzZUNsb25lZChzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBjbG9uZWQgPSB2dWVEZW1pLnJlZih7fSk7XG4gIGNvbnN0IHtcbiAgICBtYW51YWwsXG4gICAgY2xvbmUgPSBjbG9uZUZuSlNPTixcbiAgICAvLyB3YXRjaCBvcHRpb25zXG4gICAgZGVlcCA9IHRydWUsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgZnVuY3Rpb24gc3luYygpIHtcbiAgICBjbG9uZWQudmFsdWUgPSBjbG9uZShzaGFyZWQudG9WYWx1ZShzb3VyY2UpKTtcbiAgfVxuICBpZiAoIW1hbnVhbCAmJiAodnVlRGVtaS5pc1JlZihzb3VyY2UpIHx8IHR5cGVvZiBzb3VyY2UgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICB2dWVEZW1pLndhdGNoKHNvdXJjZSwgc3luYywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGRlZXAsXG4gICAgICBpbW1lZGlhdGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBzeW5jKCk7XG4gIH1cbiAgcmV0dXJuIHsgY2xvbmVkLCBzeW5jIH07XG59XG5cbmNvbnN0IF9nbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHt9O1xuY29uc3QgZ2xvYmFsS2V5ID0gXCJfX3Z1ZXVzZV9zc3JfaGFuZGxlcnNfX1wiO1xuY29uc3QgaGFuZGxlcnMgPSAvKiBAX19QVVJFX18gKi8gZ2V0SGFuZGxlcnMoKTtcbmZ1bmN0aW9uIGdldEhhbmRsZXJzKCkge1xuICBpZiAoIShnbG9iYWxLZXkgaW4gX2dsb2JhbCkpXG4gICAgX2dsb2JhbFtnbG9iYWxLZXldID0gX2dsb2JhbFtnbG9iYWxLZXldIHx8IHt9O1xuICByZXR1cm4gX2dsb2JhbFtnbG9iYWxLZXldO1xufVxuZnVuY3Rpb24gZ2V0U1NSSGFuZGxlcihrZXksIGZhbGxiYWNrKSB7XG4gIHJldHVybiBoYW5kbGVyc1trZXldIHx8IGZhbGxiYWNrO1xufVxuZnVuY3Rpb24gc2V0U1NSSGFuZGxlcihrZXksIGZuKSB7XG4gIGhhbmRsZXJzW2tleV0gPSBmbjtcbn1cblxuZnVuY3Rpb24gdXNlUHJlZmVycmVkRGFyayhvcHRpb25zKSB7XG4gIHJldHVybiB1c2VNZWRpYVF1ZXJ5KFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gZ3Vlc3NTZXJpYWxpemVyVHlwZShyYXdJbml0KSB7XG4gIHJldHVybiByYXdJbml0ID09IG51bGwgPyBcImFueVwiIDogcmF3SW5pdCBpbnN0YW5jZW9mIFNldCA/IFwic2V0XCIgOiByYXdJbml0IGluc3RhbmNlb2YgTWFwID8gXCJtYXBcIiA6IHJhd0luaXQgaW5zdGFuY2VvZiBEYXRlID8gXCJkYXRlXCIgOiB0eXBlb2YgcmF3SW5pdCA9PT0gXCJib29sZWFuXCIgPyBcImJvb2xlYW5cIiA6IHR5cGVvZiByYXdJbml0ID09PSBcInN0cmluZ1wiID8gXCJzdHJpbmdcIiA6IHR5cGVvZiByYXdJbml0ID09PSBcIm9iamVjdFwiID8gXCJvYmplY3RcIiA6ICFOdW1iZXIuaXNOYU4ocmF3SW5pdCkgPyBcIm51bWJlclwiIDogXCJhbnlcIjtcbn1cblxuY29uc3QgU3RvcmFnZVNlcmlhbGl6ZXJzID0ge1xuICBib29sZWFuOiB7XG4gICAgcmVhZDogKHYpID0+IHYgPT09IFwidHJ1ZVwiLFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIG9iamVjdDoge1xuICAgIHJlYWQ6ICh2KSA9PiBKU09OLnBhcnNlKHYpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkodilcbiAgfSxcbiAgbnVtYmVyOiB7XG4gICAgcmVhZDogKHYpID0+IE51bWJlci5wYXJzZUZsb2F0KHYpLFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIGFueToge1xuICAgIHJlYWQ6ICh2KSA9PiB2LFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIHN0cmluZzoge1xuICAgIHJlYWQ6ICh2KSA9PiB2LFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIG1hcDoge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgTWFwKEpTT04ucGFyc2UodikpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2LmVudHJpZXMoKSkpXG4gIH0sXG4gIHNldDoge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgU2V0KEpTT04ucGFyc2UodikpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2KSlcbiAgfSxcbiAgZGF0ZToge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgRGF0ZSh2KSxcbiAgICB3cml0ZTogKHYpID0+IHYudG9JU09TdHJpbmcoKVxuICB9XG59O1xuY29uc3QgY3VzdG9tU3RvcmFnZUV2ZW50TmFtZSA9IFwidnVldXNlLXN0b3JhZ2VcIjtcbmZ1bmN0aW9uIHVzZVN0b3JhZ2Uoa2V5LCBkZWZhdWx0cywgc3RvcmFnZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYTtcbiAgY29uc3Qge1xuICAgIGZsdXNoID0gXCJwcmVcIixcbiAgICBkZWVwID0gdHJ1ZSxcbiAgICBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzID0gdHJ1ZSxcbiAgICB3cml0ZURlZmF1bHRzID0gdHJ1ZSxcbiAgICBtZXJnZURlZmF1bHRzID0gZmFsc2UsXG4gICAgc2hhbGxvdyxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyLFxuICAgIG9uRXJyb3IgPSAoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9LFxuICAgIGluaXRPbk1vdW50ZWRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRhdGEgPSAoc2hhbGxvdyA/IHZ1ZURlbWkuc2hhbGxvd1JlZiA6IHZ1ZURlbWkucmVmKSh0eXBlb2YgZGVmYXVsdHMgPT09IFwiZnVuY3Rpb25cIiA/IGRlZmF1bHRzKCkgOiBkZWZhdWx0cyk7XG4gIGlmICghc3RvcmFnZSkge1xuICAgIHRyeSB7XG4gICAgICBzdG9yYWdlID0gZ2V0U1NSSGFuZGxlcihcImdldERlZmF1bHRTdG9yYWdlXCIsICgpID0+IHtcbiAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgcmV0dXJuIChfYTIgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmxvY2FsU3RvcmFnZTtcbiAgICAgIH0pKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFzdG9yYWdlKVxuICAgIHJldHVybiBkYXRhO1xuICBjb25zdCByYXdJbml0ID0gc2hhcmVkLnRvVmFsdWUoZGVmYXVsdHMpO1xuICBjb25zdCB0eXBlID0gZ3Vlc3NTZXJpYWxpemVyVHlwZShyYXdJbml0KTtcbiAgY29uc3Qgc2VyaWFsaXplciA9IChfYSA9IG9wdGlvbnMuc2VyaWFsaXplcikgIT0gbnVsbCA/IF9hIDogU3RvcmFnZVNlcmlhbGl6ZXJzW3R5cGVdO1xuICBjb25zdCB7IHBhdXNlOiBwYXVzZVdhdGNoLCByZXN1bWU6IHJlc3VtZVdhdGNoIH0gPSBzaGFyZWQucGF1c2FibGVXYXRjaChcbiAgICBkYXRhLFxuICAgICgpID0+IHdyaXRlKGRhdGEudmFsdWUpLFxuICAgIHsgZmx1c2gsIGRlZXAsIGV2ZW50RmlsdGVyIH1cbiAgKTtcbiAgaWYgKHdpbmRvdyAmJiBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzKSB7XG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBpZiAoc3RvcmFnZSBpbnN0YW5jZW9mIFN0b3JhZ2UpXG4gICAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInN0b3JhZ2VcIiwgdXBkYXRlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIGN1c3RvbVN0b3JhZ2VFdmVudE5hbWUsIHVwZGF0ZUZyb21DdXN0b21FdmVudCk7XG4gICAgICBpZiAoaW5pdE9uTW91bnRlZClcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpbml0T25Nb3VudGVkKVxuICAgIHVwZGF0ZSgpO1xuICBmdW5jdGlvbiBkaXNwYXRjaFdyaXRlRXZlbnQob2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAga2V5LFxuICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgIHN0b3JhZ2VBcmVhOiBzdG9yYWdlXG4gICAgICB9O1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoc3RvcmFnZSBpbnN0YW5jZW9mIFN0b3JhZ2UgPyBuZXcgU3RvcmFnZUV2ZW50KFwic3RvcmFnZVwiLCBwYXlsb2FkKSA6IG5ldyBDdXN0b21FdmVudChjdXN0b21TdG9yYWdlRXZlbnROYW1lLCB7XG4gICAgICAgIGRldGFpbDogcGF5bG9hZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB3cml0ZSh2KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAodiA9PSBudWxsKSB7XG4gICAgICAgIGRpc3BhdGNoV3JpdGVFdmVudChvbGRWYWx1ZSwgbnVsbCk7XG4gICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIud3JpdGUodik7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gc2VyaWFsaXplZCkge1xuICAgICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIHNlcmlhbGl6ZWQpO1xuICAgICAgICAgIGRpc3BhdGNoV3JpdGVFdmVudChvbGRWYWx1ZSwgc2VyaWFsaXplZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZWFkKGV2ZW50KSB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBldmVudCA/IGV2ZW50Lm5ld1ZhbHVlIDogc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgaWYgKHJhd1ZhbHVlID09IG51bGwpIHtcbiAgICAgIGlmICh3cml0ZURlZmF1bHRzICYmIHJhd0luaXQgIT0gbnVsbClcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplci53cml0ZShyYXdJbml0KSk7XG4gICAgICByZXR1cm4gcmF3SW5pdDtcbiAgICB9IGVsc2UgaWYgKCFldmVudCAmJiBtZXJnZURlZmF1bHRzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHNlcmlhbGl6ZXIucmVhZChyYXdWYWx1ZSk7XG4gICAgICBpZiAodHlwZW9mIG1lcmdlRGVmYXVsdHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgcmV0dXJuIG1lcmdlRGVmYXVsdHModmFsdWUsIHJhd0luaXQpO1xuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IC4uLnJhd0luaXQsIC4uLnZhbHVlIH07XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmF3VmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiByYXdWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIucmVhZChyYXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZShldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC5zdG9yYWdlQXJlYSAhPT0gc3RvcmFnZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQua2V5ID09IG51bGwpIHtcbiAgICAgIGRhdGEudmFsdWUgPSByYXdJbml0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQua2V5ICE9PSBrZXkpXG4gICAgICByZXR1cm47XG4gICAgcGF1c2VXYXRjaCgpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC5uZXdWYWx1ZSkgIT09IHNlcmlhbGl6ZXIud3JpdGUoZGF0YS52YWx1ZSkpXG4gICAgICAgIGRhdGEudmFsdWUgPSByZWFkKGV2ZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZXZlbnQpXG4gICAgICAgIHZ1ZURlbWkubmV4dFRpY2socmVzdW1lV2F0Y2gpO1xuICAgICAgZWxzZVxuICAgICAgICByZXN1bWVXYXRjaCgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVGcm9tQ3VzdG9tRXZlbnQoZXZlbnQpIHtcbiAgICB1cGRhdGUoZXZlbnQuZGV0YWlsKTtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuY29uc3QgQ1NTX0RJU0FCTEVfVFJBTlMgPSBcIiosKjo6YmVmb3JlLCo6OmFmdGVyey13ZWJraXQtdHJhbnNpdGlvbjpub25lIWltcG9ydGFudDstbW96LXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW8tdHJhbnNpdGlvbjpub25lIWltcG9ydGFudDstbXMtdHJhbnNpdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fVwiO1xuZnVuY3Rpb24gdXNlQ29sb3JNb2RlKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgc2VsZWN0b3IgPSBcImh0bWxcIixcbiAgICBhdHRyaWJ1dGUgPSBcImNsYXNzXCIsXG4gICAgaW5pdGlhbFZhbHVlID0gXCJhdXRvXCIsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBzdG9yYWdlLFxuICAgIHN0b3JhZ2VLZXkgPSBcInZ1ZXVzZS1jb2xvci1zY2hlbWVcIixcbiAgICBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzID0gdHJ1ZSxcbiAgICBzdG9yYWdlUmVmLFxuICAgIGVtaXRBdXRvLFxuICAgIGRpc2FibGVUcmFuc2l0aW9uID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbW9kZXMgPSB7XG4gICAgYXV0bzogXCJcIixcbiAgICBsaWdodDogXCJsaWdodFwiLFxuICAgIGRhcms6IFwiZGFya1wiLFxuICAgIC4uLm9wdGlvbnMubW9kZXMgfHwge31cbiAgfTtcbiAgY29uc3QgcHJlZmVycmVkRGFyayA9IHVzZVByZWZlcnJlZERhcmsoeyB3aW5kb3cgfSk7XG4gIGNvbnN0IHN5c3RlbSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcHJlZmVycmVkRGFyay52YWx1ZSA/IFwiZGFya1wiIDogXCJsaWdodFwiKTtcbiAgY29uc3Qgc3RvcmUgPSBzdG9yYWdlUmVmIHx8IChzdG9yYWdlS2V5ID09IG51bGwgPyBzaGFyZWQudG9SZWYoaW5pdGlhbFZhbHVlKSA6IHVzZVN0b3JhZ2Uoc3RvcmFnZUtleSwgaW5pdGlhbFZhbHVlLCBzdG9yYWdlLCB7IHdpbmRvdywgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyB9KSk7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdG9yZS52YWx1ZSA9PT0gXCJhdXRvXCIgPyBzeXN0ZW0udmFsdWUgOiBzdG9yZS52YWx1ZSk7XG4gIGNvbnN0IHVwZGF0ZUhUTUxBdHRycyA9IGdldFNTUkhhbmRsZXIoXG4gICAgXCJ1cGRhdGVIVE1MQXR0cnNcIixcbiAgICAoc2VsZWN0b3IyLCBhdHRyaWJ1dGUyLCB2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB0eXBlb2Ygc2VsZWN0b3IyID09PSBcInN0cmluZ1wiID8gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcjIpIDogdW5yZWZFbGVtZW50KHNlbGVjdG9yMik7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBjbGFzc2VzVG9BZGQgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgY29uc3QgY2xhc3Nlc1RvUmVtb3ZlID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIGxldCBhdHRyaWJ1dGVUb0NoYW5nZSA9IG51bGw7XG4gICAgICBpZiAoYXR0cmlidXRlMiA9PT0gXCJjbGFzc1wiKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB2YWx1ZS5zcGxpdCgvXFxzL2cpO1xuICAgICAgICBPYmplY3QudmFsdWVzKG1vZGVzKS5mbGF0TWFwKChpKSA9PiAoaSB8fCBcIlwiKS5zcGxpdCgvXFxzL2cpKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50LmluY2x1ZGVzKHYpKVxuICAgICAgICAgICAgY2xhc3Nlc1RvQWRkLmFkZCh2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjbGFzc2VzVG9SZW1vdmUuYWRkKHYpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF0dHJpYnV0ZVRvQ2hhbmdlID0geyBrZXk6IGF0dHJpYnV0ZTIsIHZhbHVlIH07XG4gICAgICB9XG4gICAgICBpZiAoY2xhc3Nlc1RvQWRkLnNpemUgPT09IDAgJiYgY2xhc3Nlc1RvUmVtb3ZlLnNpemUgPT09IDAgJiYgYXR0cmlidXRlVG9DaGFuZ2UgPT09IG51bGwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBzdHlsZTtcbiAgICAgIGlmIChkaXNhYmxlVHJhbnNpdGlvbikge1xuICAgICAgICBzdHlsZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKENTU19ESVNBQkxFX1RSQU5TKSk7XG4gICAgICAgIHdpbmRvdy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgYyBvZiBjbGFzc2VzVG9BZGQpIHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChjKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgYyBvZiBjbGFzc2VzVG9SZW1vdmUpIHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICAgIH1cbiAgICAgIGlmIChhdHRyaWJ1dGVUb0NoYW5nZSkge1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlVG9DaGFuZ2Uua2V5LCBhdHRyaWJ1dGVUb0NoYW5nZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZGlzYWJsZVRyYW5zaXRpb24pIHtcbiAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoc3R5bGUpLm9wYWNpdHk7XG4gICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoc3R5bGUpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgZnVuY3Rpb24gZGVmYXVsdE9uQ2hhbmdlZChtb2RlKSB7XG4gICAgdmFyIF9hO1xuICAgIHVwZGF0ZUhUTUxBdHRycyhzZWxlY3RvciwgYXR0cmlidXRlLCAoX2EgPSBtb2Rlc1ttb2RlXSkgIT0gbnVsbCA/IF9hIDogbW9kZSk7XG4gIH1cbiAgZnVuY3Rpb24gb25DaGFuZ2VkKG1vZGUpIHtcbiAgICBpZiAob3B0aW9ucy5vbkNoYW5nZWQpXG4gICAgICBvcHRpb25zLm9uQ2hhbmdlZChtb2RlLCBkZWZhdWx0T25DaGFuZ2VkKTtcbiAgICBlbHNlXG4gICAgICBkZWZhdWx0T25DaGFuZ2VkKG1vZGUpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goc3RhdGUsIG9uQ2hhbmdlZCwgeyBmbHVzaDogXCJwb3N0XCIsIGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiBvbkNoYW5nZWQoc3RhdGUudmFsdWUpKTtcbiAgY29uc3QgYXV0byA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBlbWl0QXV0byA/IHN0b3JlLnZhbHVlIDogc3RhdGUudmFsdWU7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgc3RvcmUudmFsdWUgPSB2O1xuICAgIH1cbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0bywgeyBzdG9yZSwgc3lzdGVtLCBzdGF0ZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBhdXRvO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpcm1EaWFsb2cocmV2ZWFsZWQgPSB2dWVEZW1pLnJlZihmYWxzZSkpIHtcbiAgY29uc3QgY29uZmlybUhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGNhbmNlbEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IHJldmVhbEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGxldCBfcmVzb2x2ZSA9IHNoYXJlZC5ub29wO1xuICBjb25zdCByZXZlYWwgPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbEhvb2sudHJpZ2dlcihkYXRhKTtcbiAgICByZXZlYWxlZC52YWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGNvbmZpcm0gPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgY29uZmlybUhvb2sudHJpZ2dlcihkYXRhKTtcbiAgICBfcmVzb2x2ZSh7IGRhdGEsIGlzQ2FuY2VsZWQ6IGZhbHNlIH0pO1xuICB9O1xuICBjb25zdCBjYW5jZWwgPSAoZGF0YSkgPT4ge1xuICAgIHJldmVhbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgY2FuY2VsSG9vay50cmlnZ2VyKGRhdGEpO1xuICAgIF9yZXNvbHZlKHsgZGF0YSwgaXNDYW5jZWxlZDogdHJ1ZSB9KTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc1JldmVhbGVkOiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHJldmVhbGVkLnZhbHVlKSxcbiAgICByZXZlYWwsXG4gICAgY29uZmlybSxcbiAgICBjYW5jZWwsXG4gICAgb25SZXZlYWw6IHJldmVhbEhvb2sub24sXG4gICAgb25Db25maXJtOiBjb25maXJtSG9vay5vbixcbiAgICBvbkNhbmNlbDogY2FuY2VsSG9vay5vblxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VDc3NWYXIocHJvcCwgdGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93LCBpbml0aWFsVmFsdWUsIG9ic2VydmUgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgdmFyaWFibGUgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBlbFJlZiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gdW5yZWZFbGVtZW50KHRhcmdldCkgfHwgKChfYSA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZG9jdW1lbnRFbGVtZW50KTtcbiAgfSk7XG4gIGZ1bmN0aW9uIHVwZGF0ZUNzc1ZhcigpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qga2V5ID0gc2hhcmVkLnRvVmFsdWUocHJvcCk7XG4gICAgY29uc3QgZWwgPSBzaGFyZWQudG9WYWx1ZShlbFJlZik7XG4gICAgaWYgKGVsICYmIHdpbmRvdyAmJiBrZXkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKF9hID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmdldFByb3BlcnR5VmFsdWUoa2V5KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRyaW0oKTtcbiAgICAgIHZhcmlhYmxlLnZhbHVlID0gdmFsdWUgfHwgaW5pdGlhbFZhbHVlO1xuICAgIH1cbiAgfVxuICBpZiAob2JzZXJ2ZSkge1xuICAgIHVzZU11dGF0aW9uT2JzZXJ2ZXIoZWxSZWYsIHVwZGF0ZUNzc1Zhciwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbXCJzdHlsZVwiLCBcImNsYXNzXCJdLFxuICAgICAgd2luZG93XG4gICAgfSk7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChcbiAgICBbZWxSZWYsICgpID0+IHNoYXJlZC50b1ZhbHVlKHByb3ApXSxcbiAgICAoXywgb2xkKSA9PiB7XG4gICAgICBpZiAob2xkWzBdICYmIG9sZFsxXSlcbiAgICAgICAgb2xkWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KG9sZFsxXSk7XG4gICAgICB1cGRhdGVDc3NWYXIoKTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbiAgdnVlRGVtaS53YXRjaChcbiAgICB2YXJpYWJsZSxcbiAgICAodmFsKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCByYXdfcHJvcCA9IHNoYXJlZC50b1ZhbHVlKHByb3ApO1xuICAgICAgaWYgKCgoX2EgPSBlbFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0eWxlKSAmJiByYXdfcHJvcCkge1xuICAgICAgICBpZiAodmFsID09IG51bGwpXG4gICAgICAgICAgZWxSZWYudmFsdWUuc3R5bGUucmVtb3ZlUHJvcGVydHkocmF3X3Byb3ApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZWxSZWYudmFsdWUuc3R5bGUuc2V0UHJvcGVydHkocmF3X3Byb3AsIHZhbCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVzZUN1cnJlbnRFbGVtZW50KHJvb3RDb21wb25lbnQpIHtcbiAgY29uc3Qgdm0gPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBjb25zdCBjdXJyZW50RWxlbWVudCA9IHNoYXJlZC5jb21wdXRlZFdpdGhDb250cm9sKFxuICAgICgpID0+IG51bGwsXG4gICAgKCkgPT4gcm9vdENvbXBvbmVudCA/IHVucmVmRWxlbWVudChyb290Q29tcG9uZW50KSA6IHZtLnByb3h5LiRlbFxuICApO1xuICB2dWVEZW1pLm9uVXBkYXRlZChjdXJyZW50RWxlbWVudC50cmlnZ2VyKTtcbiAgdnVlRGVtaS5vbk1vdW50ZWQoY3VycmVudEVsZW1lbnQudHJpZ2dlcik7XG4gIHJldHVybiBjdXJyZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdXNlQ3ljbGVMaXN0KGxpc3QsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnNoYWxsb3dSZWYoZ2V0SW5pdGlhbFZhbHVlKCkpO1xuICBjb25zdCBsaXN0UmVmID0gc2hhcmVkLnRvUmVmKGxpc3QpO1xuICBjb25zdCBpbmRleCA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IHRhcmdldExpc3QgPSBsaXN0UmVmLnZhbHVlO1xuICAgICAgbGV0IGluZGV4MiA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmdldEluZGV4T2YpID8gb3B0aW9ucy5nZXRJbmRleE9mKHN0YXRlLnZhbHVlLCB0YXJnZXRMaXN0KSA6IHRhcmdldExpc3QuaW5kZXhPZihzdGF0ZS52YWx1ZSk7XG4gICAgICBpZiAoaW5kZXgyIDwgMClcbiAgICAgICAgaW5kZXgyID0gKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5mYWxsYmFja0luZGV4KSAhPSBudWxsID8gX2EgOiAwO1xuICAgICAgcmV0dXJuIGluZGV4MjtcbiAgICB9LFxuICAgIHNldCh2KSB7XG4gICAgICBzZXQodik7XG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gc2V0KGkpIHtcbiAgICBjb25zdCB0YXJnZXRMaXN0ID0gbGlzdFJlZi52YWx1ZTtcbiAgICBjb25zdCBsZW5ndGggPSB0YXJnZXRMaXN0Lmxlbmd0aDtcbiAgICBjb25zdCBpbmRleDIgPSAoaSAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGg7XG4gICAgY29uc3QgdmFsdWUgPSB0YXJnZXRMaXN0W2luZGV4Ml07XG4gICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnQoZGVsdGEgPSAxKSB7XG4gICAgcmV0dXJuIHNldChpbmRleC52YWx1ZSArIGRlbHRhKTtcbiAgfVxuICBmdW5jdGlvbiBuZXh0KG4gPSAxKSB7XG4gICAgcmV0dXJuIHNoaWZ0KG4pO1xuICB9XG4gIGZ1bmN0aW9uIHByZXYobiA9IDEpIHtcbiAgICByZXR1cm4gc2hpZnQoLW4pO1xuICB9XG4gIGZ1bmN0aW9uIGdldEluaXRpYWxWYWx1ZSgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSBzaGFyZWQudG9WYWx1ZSgoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmluaXRpYWxWYWx1ZSkgIT0gbnVsbCA/IF9hIDogc2hhcmVkLnRvVmFsdWUobGlzdClbMF0pKSAhPSBudWxsID8gX2IgOiB2b2lkIDA7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChsaXN0UmVmLCAoKSA9PiBzZXQoaW5kZXgudmFsdWUpKTtcbiAgcmV0dXJuIHtcbiAgICBzdGF0ZSxcbiAgICBpbmRleCxcbiAgICBuZXh0LFxuICAgIHByZXYsXG4gICAgZ286IHNldFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VEYXJrKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdmFsdWVEYXJrID0gXCJkYXJrXCIsXG4gICAgdmFsdWVMaWdodCA9IFwiXCIsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbW9kZSA9IHVzZUNvbG9yTW9kZSh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBvbkNoYW5nZWQ6IChtb2RlMiwgZGVmYXVsdEhhbmRsZXIpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChvcHRpb25zLm9uQ2hhbmdlZClcbiAgICAgICAgKF9hID0gb3B0aW9ucy5vbkNoYW5nZWQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIG1vZGUyID09PSBcImRhcmtcIiwgZGVmYXVsdEhhbmRsZXIsIG1vZGUyKTtcbiAgICAgIGVsc2VcbiAgICAgICAgZGVmYXVsdEhhbmRsZXIobW9kZTIpO1xuICAgIH0sXG4gICAgbW9kZXM6IHtcbiAgICAgIGRhcms6IHZhbHVlRGFyayxcbiAgICAgIGxpZ2h0OiB2YWx1ZUxpZ2h0XG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3lzdGVtID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKG1vZGUuc3lzdGVtKSB7XG4gICAgICByZXR1cm4gbW9kZS5zeXN0ZW0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZWZlcnJlZERhcmsgPSB1c2VQcmVmZXJyZWREYXJrKHsgd2luZG93IH0pO1xuICAgICAgcmV0dXJuIHByZWZlcnJlZERhcmsudmFsdWUgPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBpc0RhcmsgPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gXCJkYXJrXCI7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgY29uc3QgbW9kZVZhbCA9IHYgPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcbiAgICAgIGlmIChzeXN0ZW0udmFsdWUgPT09IG1vZGVWYWwpXG4gICAgICAgIG1vZGUudmFsdWUgPSBcImF1dG9cIjtcbiAgICAgIGVsc2VcbiAgICAgICAgbW9kZS52YWx1ZSA9IG1vZGVWYWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGlzRGFyaztcbn1cblxuZnVuY3Rpb24gZm5CeXBhc3Modikge1xuICByZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIGZuU2V0U291cmNlKHNvdXJjZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHNvdXJjZS52YWx1ZSA9IHZhbHVlO1xufVxuZnVuY3Rpb24gZGVmYXVsdER1bXAoY2xvbmUpIHtcbiAgcmV0dXJuIGNsb25lID8gdHlwZW9mIGNsb25lID09PSBcImZ1bmN0aW9uXCIgPyBjbG9uZSA6IGNsb25lRm5KU09OIDogZm5CeXBhc3M7XG59XG5mdW5jdGlvbiBkZWZhdWx0UGFyc2UoY2xvbmUpIHtcbiAgcmV0dXJuIGNsb25lID8gdHlwZW9mIGNsb25lID09PSBcImZ1bmN0aW9uXCIgPyBjbG9uZSA6IGNsb25lRm5KU09OIDogZm5CeXBhc3M7XG59XG5mdW5jdGlvbiB1c2VNYW51YWxSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjbG9uZSA9IGZhbHNlLFxuICAgIGR1bXAgPSBkZWZhdWx0RHVtcChjbG9uZSksXG4gICAgcGFyc2UgPSBkZWZhdWx0UGFyc2UoY2xvbmUpLFxuICAgIHNldFNvdXJjZSA9IGZuU2V0U291cmNlXG4gIH0gPSBvcHRpb25zO1xuICBmdW5jdGlvbiBfY3JlYXRlSGlzdG9yeVJlY29yZCgpIHtcbiAgICByZXR1cm4gdnVlRGVtaS5tYXJrUmF3KHtcbiAgICAgIHNuYXBzaG90OiBkdW1wKHNvdXJjZS52YWx1ZSksXG4gICAgICB0aW1lc3RhbXA6IHNoYXJlZC50aW1lc3RhbXAoKVxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGxhc3QgPSB2dWVEZW1pLnJlZihfY3JlYXRlSGlzdG9yeVJlY29yZCgpKTtcbiAgY29uc3QgdW5kb1N0YWNrID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCByZWRvU3RhY2sgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IF9zZXRTb3VyY2UgPSAocmVjb3JkKSA9PiB7XG4gICAgc2V0U291cmNlKHNvdXJjZSwgcGFyc2UocmVjb3JkLnNuYXBzaG90KSk7XG4gICAgbGFzdC52YWx1ZSA9IHJlY29yZDtcbiAgfTtcbiAgY29uc3QgY29tbWl0ID0gKCkgPT4ge1xuICAgIHVuZG9TdGFjay52YWx1ZS51bnNoaWZ0KGxhc3QudmFsdWUpO1xuICAgIGxhc3QudmFsdWUgPSBfY3JlYXRlSGlzdG9yeVJlY29yZCgpO1xuICAgIGlmIChvcHRpb25zLmNhcGFjaXR5ICYmIHVuZG9TdGFjay52YWx1ZS5sZW5ndGggPiBvcHRpb25zLmNhcGFjaXR5KVxuICAgICAgdW5kb1N0YWNrLnZhbHVlLnNwbGljZShvcHRpb25zLmNhcGFjaXR5LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgIGlmIChyZWRvU3RhY2sudmFsdWUubGVuZ3RoKVxuICAgICAgcmVkb1N0YWNrLnZhbHVlLnNwbGljZSgwLCByZWRvU3RhY2sudmFsdWUubGVuZ3RoKTtcbiAgfTtcbiAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgdW5kb1N0YWNrLnZhbHVlLnNwbGljZSgwLCB1bmRvU3RhY2sudmFsdWUubGVuZ3RoKTtcbiAgICByZWRvU3RhY2sudmFsdWUuc3BsaWNlKDAsIHJlZG9TdGFjay52YWx1ZS5sZW5ndGgpO1xuICB9O1xuICBjb25zdCB1bmRvID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdW5kb1N0YWNrLnZhbHVlLnNoaWZ0KCk7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICByZWRvU3RhY2sudmFsdWUudW5zaGlmdChsYXN0LnZhbHVlKTtcbiAgICAgIF9zZXRTb3VyY2Uoc3RhdGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVkbyA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlZG9TdGFjay52YWx1ZS5zaGlmdCgpO1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdW5kb1N0YWNrLnZhbHVlLnVuc2hpZnQobGFzdC52YWx1ZSk7XG4gICAgICBfc2V0U291cmNlKHN0YXRlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIF9zZXRTb3VyY2UobGFzdC52YWx1ZSk7XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IFtsYXN0LnZhbHVlLCAuLi51bmRvU3RhY2sudmFsdWVdKTtcbiAgY29uc3QgY2FuVW5kbyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5kb1N0YWNrLnZhbHVlLmxlbmd0aCA+IDApO1xuICBjb25zdCBjYW5SZWRvID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiByZWRvU3RhY2sudmFsdWUubGVuZ3RoID4gMCk7XG4gIHJldHVybiB7XG4gICAgc291cmNlLFxuICAgIHVuZG9TdGFjayxcbiAgICByZWRvU3RhY2ssXG4gICAgbGFzdCxcbiAgICBoaXN0b3J5LFxuICAgIGNhblVuZG8sXG4gICAgY2FuUmVkbyxcbiAgICBjbGVhcixcbiAgICBjb21taXQsXG4gICAgcmVzZXQsXG4gICAgdW5kbyxcbiAgICByZWRvXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVJlZkhpc3Rvcnkoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBmbHVzaCA9IFwicHJlXCIsXG4gICAgZXZlbnRGaWx0ZXJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHtcbiAgICBldmVudEZpbHRlcjogY29tcG9zZWRGaWx0ZXIsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lOiByZXN1bWVUcmFja2luZyxcbiAgICBpc0FjdGl2ZTogaXNUcmFja2luZ1xuICB9ID0gc2hhcmVkLnBhdXNhYmxlRmlsdGVyKGV2ZW50RmlsdGVyKTtcbiAgY29uc3Qge1xuICAgIGlnbm9yZVVwZGF0ZXMsXG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcyxcbiAgICBzdG9wXG4gIH0gPSBzaGFyZWQud2F0Y2hJZ25vcmFibGUoXG4gICAgc291cmNlLFxuICAgIGNvbW1pdCxcbiAgICB7IGRlZXAsIGZsdXNoLCBldmVudEZpbHRlcjogY29tcG9zZWRGaWx0ZXIgfVxuICApO1xuICBmdW5jdGlvbiBzZXRTb3VyY2Uoc291cmNlMiwgdmFsdWUpIHtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzKCk7XG4gICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgICBzb3VyY2UyLnZhbHVlID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWFudWFsSGlzdG9yeSA9IHVzZU1hbnVhbFJlZkhpc3Rvcnkoc291cmNlLCB7IC4uLm9wdGlvbnMsIGNsb25lOiBvcHRpb25zLmNsb25lIHx8IGRlZXAsIHNldFNvdXJjZSB9KTtcbiAgY29uc3QgeyBjbGVhciwgY29tbWl0OiBtYW51YWxDb21taXQgfSA9IG1hbnVhbEhpc3Rvcnk7XG4gIGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzKCk7XG4gICAgbWFudWFsQ29tbWl0KCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKGNvbW1pdE5vdykge1xuICAgIHJlc3VtZVRyYWNraW5nKCk7XG4gICAgaWYgKGNvbW1pdE5vdylcbiAgICAgIGNvbW1pdCgpO1xuICB9XG4gIGZ1bmN0aW9uIGJhdGNoKGZuKSB7XG4gICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7XG4gICAgY29uc3QgY2FuY2VsID0gKCkgPT4gY2FuY2VsZWQgPSB0cnVlO1xuICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xuICAgICAgZm4oY2FuY2VsKTtcbiAgICB9KTtcbiAgICBpZiAoIWNhbmNlbGVkKVxuICAgICAgY29tbWl0KCk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBzdG9wKCk7XG4gICAgY2xlYXIoKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLm1hbnVhbEhpc3RvcnksXG4gICAgaXNUcmFja2luZyxcbiAgICBwYXVzZSxcbiAgICByZXN1bWUsXG4gICAgY29tbWl0LFxuICAgIGJhdGNoLFxuICAgIGRpc3Bvc2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRGVib3VuY2VkUmVmSGlzdG9yeShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBmaWx0ZXIgPSBvcHRpb25zLmRlYm91bmNlID8gc2hhcmVkLmRlYm91bmNlRmlsdGVyKG9wdGlvbnMuZGVib3VuY2UpIDogdm9pZCAwO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlUmVmSGlzdG9yeShzb3VyY2UsIHsgLi4ub3B0aW9ucywgZXZlbnRGaWx0ZXI6IGZpbHRlciB9KTtcbiAgcmV0dXJuIHtcbiAgICAuLi5oaXN0b3J5XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURldmljZU1vdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIgPSBzaGFyZWQuYnlwYXNzRmlsdGVyXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBhY2NlbGVyYXRpb24gPSB2dWVEZW1pLnJlZih7IHg6IG51bGwsIHk6IG51bGwsIHo6IG51bGwgfSk7XG4gIGNvbnN0IHJvdGF0aW9uUmF0ZSA9IHZ1ZURlbWkucmVmKHsgYWxwaGE6IG51bGwsIGJldGE6IG51bGwsIGdhbW1hOiBudWxsIH0pO1xuICBjb25zdCBpbnRlcnZhbCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5ID0gdnVlRGVtaS5yZWYoe1xuICAgIHg6IG51bGwsXG4gICAgeTogbnVsbCxcbiAgICB6OiBudWxsXG4gIH0pO1xuICBpZiAod2luZG93KSB7XG4gICAgY29uc3Qgb25EZXZpY2VNb3Rpb24gPSBzaGFyZWQuY3JlYXRlRmlsdGVyV3JhcHBlcihcbiAgICAgIGV2ZW50RmlsdGVyLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGFjY2VsZXJhdGlvbi52YWx1ZSA9IGV2ZW50LmFjY2VsZXJhdGlvbjtcbiAgICAgICAgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eS52YWx1ZSA9IGV2ZW50LmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk7XG4gICAgICAgIHJvdGF0aW9uUmF0ZS52YWx1ZSA9IGV2ZW50LnJvdGF0aW9uUmF0ZTtcbiAgICAgICAgaW50ZXJ2YWwudmFsdWUgPSBldmVudC5pbnRlcnZhbDtcbiAgICAgIH1cbiAgICApO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRldmljZW1vdGlvblwiLCBvbkRldmljZU1vdGlvbik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBhY2NlbGVyYXRpb24sXG4gICAgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSxcbiAgICByb3RhdGlvblJhdGUsXG4gICAgaW50ZXJ2YWxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRGV2aWNlT3JpZW50YXRpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gd2luZG93ICYmIFwiRGV2aWNlT3JpZW50YXRpb25FdmVudFwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IGlzQWJzb2x1dGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGFscGhhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGJldGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZ2FtbWEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgaWYgKHdpbmRvdyAmJiBpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRldmljZW9yaWVudGF0aW9uXCIsIChldmVudCkgPT4ge1xuICAgICAgaXNBYnNvbHV0ZS52YWx1ZSA9IGV2ZW50LmFic29sdXRlO1xuICAgICAgYWxwaGEudmFsdWUgPSBldmVudC5hbHBoYTtcbiAgICAgIGJldGEudmFsdWUgPSBldmVudC5iZXRhO1xuICAgICAgZ2FtbWEudmFsdWUgPSBldmVudC5nYW1tYTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzQWJzb2x1dGUsXG4gICAgYWxwaGEsXG4gICAgYmV0YSxcbiAgICBnYW1tYVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VEZXZpY2VQaXhlbFJhdGlvKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcGl4ZWxSYXRpbyA9IHZ1ZURlbWkucmVmKDEpO1xuICBpZiAod2luZG93KSB7XG4gICAgbGV0IG9ic2VydmUyID0gZnVuY3Rpb24oKSB7XG4gICAgICBwaXhlbFJhdGlvLnZhbHVlID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICBjbGVhbnVwMigpO1xuICAgICAgbWVkaWEgPSB3aW5kb3cubWF0Y2hNZWRpYShgKHJlc29sdXRpb246ICR7cGl4ZWxSYXRpby52YWx1ZX1kcHB4KWApO1xuICAgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBvYnNlcnZlMiwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH0sIGNsZWFudXAyID0gZnVuY3Rpb24oKSB7XG4gICAgICBtZWRpYSA9PSBudWxsID8gdm9pZCAwIDogbWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBvYnNlcnZlMik7XG4gICAgfTtcbiAgICBsZXQgbWVkaWE7XG4gICAgb2JzZXJ2ZTIoKTtcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoY2xlYW51cDIpO1xuICB9XG4gIHJldHVybiB7IHBpeGVsUmF0aW8gfTtcbn1cblxuZnVuY3Rpb24gdXNlRGV2aWNlc0xpc3Qob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yLFxuICAgIHJlcXVlc3RQZXJtaXNzaW9ucyA9IGZhbHNlLFxuICAgIGNvbnN0cmFpbnRzID0geyBhdWRpbzogdHJ1ZSwgdmlkZW86IHRydWUgfSxcbiAgICBvblVwZGF0ZWRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRldmljZXMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHZpZGVvSW5wdXRzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBkZXZpY2VzLnZhbHVlLmZpbHRlcigoaSkgPT4gaS5raW5kID09PSBcInZpZGVvaW5wdXRcIikpO1xuICBjb25zdCBhdWRpb0lucHV0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZGV2aWNlcy52YWx1ZS5maWx0ZXIoKGkpID0+IGkua2luZCA9PT0gXCJhdWRpb2lucHV0XCIpKTtcbiAgY29uc3QgYXVkaW9PdXRwdXRzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBkZXZpY2VzLnZhbHVlLmZpbHRlcigoaSkgPT4gaS5raW5kID09PSBcImF1ZGlvb3V0cHV0XCIpKTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci5tZWRpYURldmljZXMgJiYgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKTtcbiAgY29uc3QgcGVybWlzc2lvbkdyYW50ZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCBzdHJlYW07XG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGRldmljZXMudmFsdWUgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTtcbiAgICBvblVwZGF0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVXBkYXRlZChkZXZpY2VzLnZhbHVlKTtcbiAgICBpZiAoc3RyZWFtKSB7XG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgICAgc3RyZWFtID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAocGVybWlzc2lvbkdyYW50ZWQudmFsdWUpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCB7IHN0YXRlLCBxdWVyeSB9ID0gdXNlUGVybWlzc2lvbihcImNhbWVyYVwiLCB7IGNvbnRyb2xzOiB0cnVlIH0pO1xuICAgIGF3YWl0IHF1ZXJ5KCk7XG4gICAgaWYgKHN0YXRlLnZhbHVlICE9PSBcImdyYW50ZWRcIikge1xuICAgICAgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgICBwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlcm1pc3Npb25HcmFudGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb25HcmFudGVkLnZhbHVlO1xuICB9XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgIGlmIChyZXF1ZXN0UGVybWlzc2lvbnMpXG4gICAgICBlbnN1cmVQZXJtaXNzaW9ucygpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIobmF2aWdhdG9yLm1lZGlhRGV2aWNlcywgXCJkZXZpY2VjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICB1cGRhdGUoKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRldmljZXMsXG4gICAgZW5zdXJlUGVybWlzc2lvbnMsXG4gICAgcGVybWlzc2lvbkdyYW50ZWQsXG4gICAgdmlkZW9JbnB1dHMsXG4gICAgYXVkaW9JbnB1dHMsXG4gICAgYXVkaW9PdXRwdXRzLFxuICAgIGlzU3VwcG9ydGVkXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURpc3BsYXlNZWRpYShvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hO1xuICBjb25zdCBlbmFibGVkID0gdnVlRGVtaS5yZWYoKF9hID0gb3B0aW9ucy5lbmFibGVkKSAhPSBudWxsID8gX2EgOiBmYWxzZSk7XG4gIGNvbnN0IHZpZGVvID0gb3B0aW9ucy52aWRlbztcbiAgY29uc3QgYXVkaW8gPSBvcHRpb25zLmF1ZGlvO1xuICBjb25zdCB7IG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIHJldHVybiAoX2EyID0gbmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmdldERpc3BsYXlNZWRpYTtcbiAgfSk7XG4gIGNvbnN0IGNvbnN0cmFpbnQgPSB7IGF1ZGlvLCB2aWRlbyB9O1xuICBjb25zdCBzdHJlYW0gPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgYXN5bmMgZnVuY3Rpb24gX3N0YXJ0KCkge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSB8fCBzdHJlYW0udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RyZWFtLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoY29uc3RyYWludCk7XG4gICAgKF9hMiA9IHN0cmVhbS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJlbmRlZFwiLCBzdG9wKSk7XG4gICAgcmV0dXJuIHN0cmVhbS52YWx1ZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBfc3RvcCgpIHtcbiAgICB2YXIgX2EyO1xuICAgIChfYTIgPSBzdHJlYW0udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgIHN0cmVhbS52YWx1ZSA9IHZvaWQgMDtcbiAgfVxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIF9zdG9wKCk7XG4gICAgZW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkge1xuICAgIGF3YWl0IF9zdGFydCgpO1xuICAgIGlmIChzdHJlYW0udmFsdWUpXG4gICAgICBlbmFibGVkLnZhbHVlID0gdHJ1ZTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goXG4gICAgZW5hYmxlZCxcbiAgICAodikgPT4ge1xuICAgICAgaWYgKHYpXG4gICAgICAgIF9zdGFydCgpO1xuICAgICAgZWxzZVxuICAgICAgICBfc3RvcCgpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0cmVhbSxcbiAgICBzdGFydCxcbiAgICBzdG9wLFxuICAgIGVuYWJsZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRG9jdW1lbnRWaXNpYmlsaXR5KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50IH0gPSBvcHRpb25zO1xuICBpZiAoIWRvY3VtZW50KVxuICAgIHJldHVybiB2dWVEZW1pLnJlZihcInZpc2libGVcIik7XG4gIGNvbnN0IHZpc2liaWxpdHkgPSB2dWVEZW1pLnJlZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUpO1xuICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgKCkgPT4ge1xuICAgIHZpc2liaWxpdHkudmFsdWUgPSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU7XG4gIH0pO1xuICByZXR1cm4gdmlzaWJpbGl0eTtcbn1cblxuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IHtcbiAgICBwb2ludGVyVHlwZXMsXG4gICAgcHJldmVudERlZmF1bHQsXG4gICAgc3RvcFByb3BhZ2F0aW9uLFxuICAgIGV4YWN0LFxuICAgIG9uTW92ZSxcbiAgICBvbkVuZCxcbiAgICBvblN0YXJ0LFxuICAgIGluaXRpYWxWYWx1ZSxcbiAgICBheGlzID0gXCJib3RoXCIsXG4gICAgZHJhZ2dpbmdFbGVtZW50ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBjb250YWluZXJFbGVtZW50LFxuICAgIGhhbmRsZTogZHJhZ2dpbmdIYW5kbGUgPSB0YXJnZXQsXG4gICAgYnV0dG9ucyA9IFswXVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcG9zaXRpb24gPSB2dWVEZW1pLnJlZihcbiAgICAoX2EgPSBzaGFyZWQudG9WYWx1ZShpbml0aWFsVmFsdWUpKSAhPSBudWxsID8gX2EgOiB7IHg6IDAsIHk6IDAgfVxuICApO1xuICBjb25zdCBwcmVzc2VkRGVsdGEgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBmaWx0ZXJFdmVudCA9IChlKSA9PiB7XG4gICAgaWYgKHBvaW50ZXJUeXBlcylcbiAgICAgIHJldHVybiBwb2ludGVyVHlwZXMuaW5jbHVkZXMoZS5wb2ludGVyVHlwZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUV2ZW50ID0gKGUpID0+IHtcbiAgICBpZiAoc2hhcmVkLnRvVmFsdWUocHJldmVudERlZmF1bHQpKVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChzaGFyZWQudG9WYWx1ZShzdG9wUHJvcGFnYXRpb24pKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfTtcbiAgY29uc3Qgc3RhcnQgPSAoZSkgPT4ge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCFzaGFyZWQudG9WYWx1ZShidXR0b25zKS5pbmNsdWRlcyhlLmJ1dHRvbikpXG4gICAgICByZXR1cm47XG4gICAgaWYgKHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpIHx8ICFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoc2hhcmVkLnRvVmFsdWUoZXhhY3QpICYmIGUudGFyZ2V0ICE9PSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHNoYXJlZC50b1ZhbHVlKGNvbnRhaW5lckVsZW1lbnQpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSAoX2EyID0gY29udGFpbmVyID09IG51bGwgPyB2b2lkIDAgOiBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNhbGwoY29udGFpbmVyKTtcbiAgICBjb25zdCB0YXJnZXRSZWN0ID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwb3MgPSB7XG4gICAgICB4OiBlLmNsaWVudFggLSAoY29udGFpbmVyID8gdGFyZ2V0UmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0ICsgY29udGFpbmVyLnNjcm9sbExlZnQgOiB0YXJnZXRSZWN0LmxlZnQpLFxuICAgICAgeTogZS5jbGllbnRZIC0gKGNvbnRhaW5lciA/IHRhcmdldFJlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIDogdGFyZ2V0UmVjdC50b3ApXG4gICAgfTtcbiAgICBpZiAoKG9uU3RhcnQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3RhcnQocG9zLCBlKSkgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuO1xuICAgIHByZXNzZWREZWx0YS52YWx1ZSA9IHBvcztcbiAgICBoYW5kbGVFdmVudChlKTtcbiAgfTtcbiAgY29uc3QgbW92ZSA9IChlKSA9PiB7XG4gICAgaWYgKHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpIHx8ICFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXByZXNzZWREZWx0YS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjb250YWluZXIgPSBzaGFyZWQudG9WYWx1ZShjb250YWluZXJFbGVtZW50KTtcbiAgICBjb25zdCB0YXJnZXRSZWN0ID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgeyB4LCB5IH0gPSBwb3NpdGlvbi52YWx1ZTtcbiAgICBpZiAoYXhpcyA9PT0gXCJ4XCIgfHwgYXhpcyA9PT0gXCJib3RoXCIpIHtcbiAgICAgIHggPSBlLmNsaWVudFggLSBwcmVzc2VkRGVsdGEudmFsdWUueDtcbiAgICAgIGlmIChjb250YWluZXIpXG4gICAgICAgIHggPSBNYXRoLm1pbihNYXRoLm1heCgwLCB4KSwgY29udGFpbmVyLnNjcm9sbFdpZHRoIC0gdGFyZ2V0UmVjdC53aWR0aCk7XG4gICAgfVxuICAgIGlmIChheGlzID09PSBcInlcIiB8fCBheGlzID09PSBcImJvdGhcIikge1xuICAgICAgeSA9IGUuY2xpZW50WSAtIHByZXNzZWREZWx0YS52YWx1ZS55O1xuICAgICAgaWYgKGNvbnRhaW5lcilcbiAgICAgICAgeSA9IE1hdGgubWluKE1hdGgubWF4KDAsIHkpLCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gdGFyZ2V0UmVjdC5oZWlnaHQpO1xuICAgIH1cbiAgICBwb3NpdGlvbi52YWx1ZSA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBvbk1vdmUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uTW92ZShwb3NpdGlvbi52YWx1ZSwgZSk7XG4gICAgaGFuZGxlRXZlbnQoZSk7XG4gIH07XG4gIGNvbnN0IGVuZCA9IChlKSA9PiB7XG4gICAgaWYgKHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpIHx8ICFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXByZXNzZWREZWx0YS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBwcmVzc2VkRGVsdGEudmFsdWUgPSB2b2lkIDA7XG4gICAgb25FbmQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRW5kKHBvc2l0aW9uLnZhbHVlLCBlKTtcbiAgICBoYW5kbGVFdmVudChlKTtcbiAgfTtcbiAgaWYgKHNoYXJlZC5pc0NsaWVudCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgY2FwdHVyZTogKF9iID0gb3B0aW9ucy5jYXB0dXJlKSAhPSBudWxsID8gX2IgOiB0cnVlIH07XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkcmFnZ2luZ0hhbmRsZSwgXCJwb2ludGVyZG93blwiLCBzdGFydCwgY29uZmlnKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRyYWdnaW5nRWxlbWVudCwgXCJwb2ludGVybW92ZVwiLCBtb3ZlLCBjb25maWcpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZHJhZ2dpbmdFbGVtZW50LCBcInBvaW50ZXJ1cFwiLCBlbmQsIGNvbmZpZyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zaGFyZWQudG9SZWZzKHBvc2l0aW9uKSxcbiAgICBwb3NpdGlvbixcbiAgICBpc0RyYWdnaW5nOiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+ICEhcHJlc3NlZERlbHRhLnZhbHVlKSxcbiAgICBzdHlsZTogdnVlRGVtaS5jb21wdXRlZChcbiAgICAgICgpID0+IGBsZWZ0OiR7cG9zaXRpb24udmFsdWUueH1weDt0b3A6JHtwb3NpdGlvbi52YWx1ZS55fXB4O2BcbiAgICApXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURyb3Bab25lKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGlzT3ZlckRyb3Bab25lID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBmaWxlcyA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gIGlmIChzaGFyZWQuaXNDbGllbnQpIHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcImZ1bmN0aW9uXCIgPyB7IG9uRHJvcDogb3B0aW9ucyB9IDogb3B0aW9ucztcbiAgICBjb25zdCBtdWx0aXBsZSA9IChfYSA9IF9vcHRpb25zLm11bHRpcGxlKSAhPSBudWxsID8gX2EgOiB0cnVlO1xuICAgIGNvbnN0IHByZXZlbnREZWZhdWx0Rm9yVW5oYW5kbGVkID0gKF9iID0gX29wdGlvbnMucHJldmVudERlZmF1bHRGb3JVbmhhbmRsZWQpICE9IG51bGwgPyBfYiA6IGZhbHNlO1xuICAgIGNvbnN0IGdldEZpbGVzID0gKGV2ZW50KSA9PiB7XG4gICAgICB2YXIgX2EyLCBfYjI7XG4gICAgICBjb25zdCBsaXN0ID0gQXJyYXkuZnJvbSgoX2IyID0gKF9hMiA9IGV2ZW50LmRhdGFUcmFuc2ZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5maWxlcykgIT0gbnVsbCA/IF9iMiA6IFtdKTtcbiAgICAgIHJldHVybiBsaXN0Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiBtdWx0aXBsZSA/IGxpc3QgOiBbbGlzdFswXV07XG4gICAgfTtcbiAgICBjb25zdCBjaGVja0RhdGFUeXBlcyA9ICh0eXBlcykgPT4ge1xuICAgICAgaWYgKF9vcHRpb25zLmRhdGFUeXBlcykge1xuICAgICAgICBjb25zdCBkYXRhVHlwZXMgPSB2dWVEZW1pLnVucmVmKF9vcHRpb25zLmRhdGFUeXBlcyk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGF0YVR5cGVzID09PSBcImZ1bmN0aW9uXCIgPyBkYXRhVHlwZXModHlwZXMpIDogZGF0YVR5cGVzID8gZGF0YVR5cGVzLnNvbWUoKGl0ZW0pID0+IHR5cGVzLmluY2x1ZGVzKGl0ZW0pKSA6IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGNoZWNrVmFsaWRpdHkgPSAoZXZlbnQpID0+IHtcbiAgICAgIHZhciBfYTIsIF9iMjtcbiAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbSgoX2IyID0gKF9hMiA9IGV2ZW50LmRhdGFUcmFuc2ZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5pdGVtcykgIT0gbnVsbCA/IF9iMiA6IFtdKTtcbiAgICAgIGNvbnN0IHR5cGVzID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmtpbmQgPT09IFwiZmlsZVwiKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHlwZSk7XG4gICAgICBjb25zdCBkYXRhVHlwZXNWYWxpZCA9IGNoZWNrRGF0YVR5cGVzKHR5cGVzKTtcbiAgICAgIGNvbnN0IG11bHRpcGxlRmlsZXNWYWxpZCA9IG11bHRpcGxlIHx8IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5raW5kID09PSBcImZpbGVcIikubGVuZ3RoIDw9IDE7XG4gICAgICByZXR1cm4gZGF0YVR5cGVzVmFsaWQgJiYgbXVsdGlwbGVGaWxlc1ZhbGlkO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlRHJhZ0V2ZW50ID0gKGV2ZW50LCBldmVudFR5cGUpID0+IHtcbiAgICAgIHZhciBfYTIsIF9iMiwgX2MsIF9kO1xuICAgICAgaXNWYWxpZCA9IGNoZWNrVmFsaWRpdHkoZXZlbnQpO1xuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdEZvclVuaGFuZGxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gXCJub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcImNvcHlcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRGaWxlcyA9IGdldEZpbGVzKGV2ZW50KTtcbiAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJlbnRlclwiOlxuICAgICAgICAgIGNvdW50ZXIgKz0gMTtcbiAgICAgICAgICBpc092ZXJEcm9wWm9uZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgKF9hMiA9IF9vcHRpb25zLm9uRW50ZXIpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChfb3B0aW9ucywgbnVsbCwgZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwib3ZlclwiOlxuICAgICAgICAgIChfYjIgPSBfb3B0aW9ucy5vbk92ZXIpID09IG51bGwgPyB2b2lkIDAgOiBfYjIuY2FsbChfb3B0aW9ucywgbnVsbCwgZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibGVhdmVcIjpcbiAgICAgICAgICBjb3VudGVyIC09IDE7XG4gICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDApXG4gICAgICAgICAgICBpc092ZXJEcm9wWm9uZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIChfYyA9IF9vcHRpb25zLm9uTGVhdmUpID09IG51bGwgPyB2b2lkIDAgOiBfYy5jYWxsKF9vcHRpb25zLCBudWxsLCBldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkcm9wXCI6XG4gICAgICAgICAgY291bnRlciA9IDA7XG4gICAgICAgICAgaXNPdmVyRHJvcFpvbmUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgZmlsZXMudmFsdWUgPSBjdXJyZW50RmlsZXM7XG4gICAgICAgICAgICAoX2QgPSBfb3B0aW9ucy5vbkRyb3ApID09IG51bGwgPyB2b2lkIDAgOiBfZC5jYWxsKF9vcHRpb25zLCBjdXJyZW50RmlsZXMsIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcmFnZW50ZXJcIiwgKGV2ZW50KSA9PiBoYW5kbGVEcmFnRXZlbnQoZXZlbnQsIFwiZW50ZXJcIikpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdvdmVyXCIsIChldmVudCkgPT4gaGFuZGxlRHJhZ0V2ZW50KGV2ZW50LCBcIm92ZXJcIikpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdsZWF2ZVwiLCAoZXZlbnQpID0+IGhhbmRsZURyYWdFdmVudChldmVudCwgXCJsZWF2ZVwiKSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJvcFwiLCAoZXZlbnQpID0+IGhhbmRsZURyYWdFdmVudChldmVudCwgXCJkcm9wXCIpKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGZpbGVzLFxuICAgIGlzT3ZlckRyb3Bab25lXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldCwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIC4uLm9ic2VydmVyT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgbGV0IG9ic2VydmVyO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB3aW5kb3cgJiYgXCJSZXNpemVPYnNlcnZlclwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICBvYnNlcnZlciA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRhcmdldHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBfdGFyZ2V0cyA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoX3RhcmdldHMpID8gX3RhcmdldHMubWFwKChlbCkgPT4gdW5yZWZFbGVtZW50KGVsKSkgOiBbdW5yZWZFbGVtZW50KF90YXJnZXRzKV07XG4gIH0pO1xuICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKFxuICAgIHRhcmdldHMsXG4gICAgKGVscykgPT4ge1xuICAgICAgY2xlYW51cCgpO1xuICAgICAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlICYmIHdpbmRvdykge1xuICAgICAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICAgIGZvciAoY29uc3QgX2VsIG9mIGVscykge1xuICAgICAgICAgIGlmIChfZWwpXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKF9lbCwgb2JzZXJ2ZXJPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9XG4gICk7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIHN0b3BXYXRjaCgpO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50Qm91bmRpbmcodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJlc2V0ID0gdHJ1ZSxcbiAgICB3aW5kb3dSZXNpemUgPSB0cnVlLFxuICAgIHdpbmRvd1Njcm9sbCA9IHRydWUsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICB1cGRhdGVUaW1pbmcgPSBcInN5bmNcIlxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaGVpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGJvdHRvbSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBsZWZ0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHJpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHRvcCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB3aWR0aCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHkgPSB2dWVEZW1pLnJlZigwKTtcbiAgZnVuY3Rpb24gcmVjYWxjdWxhdGUoKSB7XG4gICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICBpZiAocmVzZXQpIHtcbiAgICAgICAgaGVpZ2h0LnZhbHVlID0gMDtcbiAgICAgICAgYm90dG9tLnZhbHVlID0gMDtcbiAgICAgICAgbGVmdC52YWx1ZSA9IDA7XG4gICAgICAgIHJpZ2h0LnZhbHVlID0gMDtcbiAgICAgICAgdG9wLnZhbHVlID0gMDtcbiAgICAgICAgd2lkdGgudmFsdWUgPSAwO1xuICAgICAgICB4LnZhbHVlID0gMDtcbiAgICAgICAgeS52YWx1ZSA9IDA7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBoZWlnaHQudmFsdWUgPSByZWN0LmhlaWdodDtcbiAgICBib3R0b20udmFsdWUgPSByZWN0LmJvdHRvbTtcbiAgICBsZWZ0LnZhbHVlID0gcmVjdC5sZWZ0O1xuICAgIHJpZ2h0LnZhbHVlID0gcmVjdC5yaWdodDtcbiAgICB0b3AudmFsdWUgPSByZWN0LnRvcDtcbiAgICB3aWR0aC52YWx1ZSA9IHJlY3Qud2lkdGg7XG4gICAgeC52YWx1ZSA9IHJlY3QueDtcbiAgICB5LnZhbHVlID0gcmVjdC55O1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAodXBkYXRlVGltaW5nID09PSBcInN5bmNcIilcbiAgICAgIHJlY2FsY3VsYXRlKCk7XG4gICAgZWxzZSBpZiAodXBkYXRlVGltaW5nID09PSBcIm5leHQtZnJhbWVcIilcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZWNhbGN1bGF0ZSgpKTtcbiAgfVxuICB1c2VSZXNpemVPYnNlcnZlcih0YXJnZXQsIHVwZGF0ZSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbGUpID0+ICFlbGUgJiYgdXBkYXRlKCkpO1xuICB1c2VNdXRhdGlvbk9ic2VydmVyKHRhcmdldCwgdXBkYXRlLCB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbXCJzdHlsZVwiLCBcImNsYXNzXCJdXG4gIH0pO1xuICBpZiAod2luZG93U2Nyb2xsKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IHRydWUgfSk7XG4gIGlmICh3aW5kb3dSZXNpemUpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGltbWVkaWF0ZSlcbiAgICAgIHVwZGF0ZSgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBoZWlnaHQsXG4gICAgYm90dG9tLFxuICAgIGxlZnQsXG4gICAgcmlnaHQsXG4gICAgdG9wLFxuICAgIHdpZHRoLFxuICAgIHgsXG4gICAgeSxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRWxlbWVudEJ5UG9pbnQob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIG11bHRpcGxlLFxuICAgIGludGVydmFsID0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIixcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB7XG4gICAgaWYgKHNoYXJlZC50b1ZhbHVlKG11bHRpcGxlKSlcbiAgICAgIHJldHVybiBkb2N1bWVudCAmJiBcImVsZW1lbnRzRnJvbVBvaW50XCIgaW4gZG9jdW1lbnQ7XG4gICAgcmV0dXJuIGRvY3VtZW50ICYmIFwiZWxlbWVudEZyb21Qb2ludFwiIGluIGRvY3VtZW50O1xuICB9KTtcbiAgY29uc3QgZWxlbWVudCA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBjYiA9ICgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGVsZW1lbnQudmFsdWUgPSBzaGFyZWQudG9WYWx1ZShtdWx0aXBsZSkgPyAoX2EgPSBkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoc2hhcmVkLnRvVmFsdWUoeCksIHNoYXJlZC50b1ZhbHVlKHkpKSkgIT0gbnVsbCA/IF9hIDogW10gOiAoX2IgPSBkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChzaGFyZWQudG9WYWx1ZSh4KSwgc2hhcmVkLnRvVmFsdWUoeSkpKSAhPSBudWxsID8gX2IgOiBudWxsO1xuICB9O1xuICBjb25zdCBjb250cm9scyA9IGludGVydmFsID09PSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiID8gdXNlUmFmRm4oY2IsIHsgaW1tZWRpYXRlIH0pIDogc2hhcmVkLnVzZUludGVydmFsRm4oY2IsIGludGVydmFsLCB7IGltbWVkaWF0ZSB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBlbGVtZW50LFxuICAgIC4uLmNvbnRyb2xzXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUVsZW1lbnRIb3ZlcihlbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkZWxheUVudGVyID0gMCxcbiAgICBkZWxheUxlYXZlID0gMCxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0hvdmVyZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCB0aW1lcjtcbiAgY29uc3QgdG9nZ2xlID0gKGVudGVyaW5nKSA9PiB7XG4gICAgY29uc3QgZGVsYXkgPSBlbnRlcmluZyA/IGRlbGF5RW50ZXIgOiBkZWxheUxlYXZlO1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdm9pZCAwO1xuICAgIH1cbiAgICBpZiAoZGVsYXkpXG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gaXNIb3ZlcmVkLnZhbHVlID0gZW50ZXJpbmcsIGRlbGF5KTtcbiAgICBlbHNlXG4gICAgICBpc0hvdmVyZWQudmFsdWUgPSBlbnRlcmluZztcbiAgfTtcbiAgaWYgKCF3aW5kb3cpXG4gICAgcmV0dXJuIGlzSG92ZXJlZDtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbCwgXCJtb3VzZWVudGVyXCIsICgpID0+IHRvZ2dsZSh0cnVlKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKGVsLCBcIm1vdXNlbGVhdmVcIiwgKCkgPT4gdG9nZ2xlKGZhbHNlKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICByZXR1cm4gaXNIb3ZlcmVkO1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50U2l6ZSh0YXJnZXQsIGluaXRpYWxTaXplID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIGJveCA9IFwiY29udGVudC1ib3hcIiB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTVkcgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLm5hbWVzcGFjZVVSSSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmluY2x1ZGVzKFwic3ZnXCIpO1xuICB9KTtcbiAgY29uc3Qgd2lkdGggPSB2dWVEZW1pLnJlZihpbml0aWFsU2l6ZS53aWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTaXplLmhlaWdodCk7XG4gIGNvbnN0IHsgc3RvcDogc3RvcDEgfSA9IHVzZVJlc2l6ZU9ic2VydmVyKFxuICAgIHRhcmdldCxcbiAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgY29uc3QgYm94U2l6ZSA9IGJveCA9PT0gXCJib3JkZXItYm94XCIgPyBlbnRyeS5ib3JkZXJCb3hTaXplIDogYm94ID09PSBcImNvbnRlbnQtYm94XCIgPyBlbnRyeS5jb250ZW50Qm94U2l6ZSA6IGVudHJ5LmRldmljZVBpeGVsQ29udGVudEJveFNpemU7XG4gICAgICBpZiAod2luZG93ICYmIGlzU1ZHLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0ICRlbGVtID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgICAgIGlmICgkZWxlbSkge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSAkZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICB3aWR0aC52YWx1ZSA9IHJlY3Qud2lkdGg7XG4gICAgICAgICAgaGVpZ2h0LnZhbHVlID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChib3hTaXplKSB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0Qm94U2l6ZSA9IEFycmF5LmlzQXJyYXkoYm94U2l6ZSkgPyBib3hTaXplIDogW2JveFNpemVdO1xuICAgICAgICAgIHdpZHRoLnZhbHVlID0gZm9ybWF0Qm94U2l6ZS5yZWR1Y2UoKGFjYywgeyBpbmxpbmVTaXplIH0pID0+IGFjYyArIGlubGluZVNpemUsIDApO1xuICAgICAgICAgIGhlaWdodC52YWx1ZSA9IGZvcm1hdEJveFNpemUucmVkdWNlKChhY2MsIHsgYmxvY2tTaXplIH0pID0+IGFjYyArIGJsb2NrU2l6ZSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2lkdGgudmFsdWUgPSBlbnRyeS5jb250ZW50UmVjdC53aWR0aDtcbiAgICAgICAgICBoZWlnaHQudmFsdWUgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWxlID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgaWYgKGVsZSkge1xuICAgICAgd2lkdGgudmFsdWUgPSBcIm9mZnNldFdpZHRoXCIgaW4gZWxlID8gZWxlLm9mZnNldFdpZHRoIDogaW5pdGlhbFNpemUud2lkdGg7XG4gICAgICBoZWlnaHQudmFsdWUgPSBcIm9mZnNldEhlaWdodFwiIGluIGVsZSA/IGVsZS5vZmZzZXRIZWlnaHQgOiBpbml0aWFsU2l6ZS5oZWlnaHQ7XG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RvcDIgPSB2dWVEZW1pLndhdGNoKFxuICAgICgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLFxuICAgIChlbGUpID0+IHtcbiAgICAgIHdpZHRoLnZhbHVlID0gZWxlID8gaW5pdGlhbFNpemUud2lkdGggOiAwO1xuICAgICAgaGVpZ2h0LnZhbHVlID0gZWxlID8gaW5pdGlhbFNpemUuaGVpZ2h0IDogMDtcbiAgICB9XG4gICk7XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgc3RvcDEoKTtcbiAgICBzdG9wMigpO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGFyZ2V0LCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByb290LFxuICAgIHJvb3RNYXJnaW4gPSBcIjBweFwiLFxuICAgIHRocmVzaG9sZCA9IDAsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB3aW5kb3cgJiYgXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IHRhcmdldHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBfdGFyZ2V0ID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KTtcbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoX3RhcmdldCkgPyBfdGFyZ2V0IDogW190YXJnZXRdKS5tYXAodW5yZWZFbGVtZW50KS5maWx0ZXIoc2hhcmVkLm5vdE51bGxpc2gpO1xuICB9KTtcbiAgbGV0IGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihpbW1lZGlhdGUpO1xuICBjb25zdCBzdG9wV2F0Y2ggPSBpc1N1cHBvcnRlZC52YWx1ZSA/IHZ1ZURlbWkud2F0Y2goXG4gICAgKCkgPT4gW3RhcmdldHMudmFsdWUsIHVucmVmRWxlbWVudChyb290KSwgaXNBY3RpdmUudmFsdWVdLFxuICAgIChbdGFyZ2V0czIsIHJvb3QyXSkgPT4ge1xuICAgICAgY2xlYW51cCgpO1xuICAgICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCF0YXJnZXRzMi5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICBjYWxsYmFjayxcbiAgICAgICAge1xuICAgICAgICAgIHJvb3Q6IHVucmVmRWxlbWVudChyb290MiksXG4gICAgICAgICAgcm9vdE1hcmdpbixcbiAgICAgICAgICB0aHJlc2hvbGRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRhcmdldHMyLmZvckVhY2goKGVsKSA9PiBlbCAmJiBvYnNlcnZlci5vYnNlcnZlKGVsKSk7XG4gICAgICBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgICAgIH07XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZSwgZmx1c2g6IFwicG9zdFwiIH1cbiAgKSA6IHNoYXJlZC5ub29wO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBzdG9wV2F0Y2goKTtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNBY3RpdmUsXG4gICAgcGF1c2UoKSB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICAgIH0sXG4gICAgcmVzdW1lKCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50VmlzaWJpbGl0eShlbGVtZW50LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93LCBzY3JvbGxUYXJnZXQsIHRocmVzaG9sZCA9IDAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGVsZW1lbnRJc1Zpc2libGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIHVzZUludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgIGVsZW1lbnQsXG4gICAgKGludGVyc2VjdGlvbk9ic2VydmVyRW50cmllcykgPT4ge1xuICAgICAgbGV0IGlzSW50ZXJzZWN0aW5nID0gZWxlbWVudElzVmlzaWJsZS52YWx1ZTtcbiAgICAgIGxldCBsYXRlc3RUaW1lID0gMDtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyaWVzKSB7XG4gICAgICAgIGlmIChlbnRyeS50aW1lID49IGxhdGVzdFRpbWUpIHtcbiAgICAgICAgICBsYXRlc3RUaW1lID0gZW50cnkudGltZTtcbiAgICAgICAgICBpc0ludGVyc2VjdGluZyA9IGVudHJ5LmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbGVtZW50SXNWaXNpYmxlLnZhbHVlID0gaXNJbnRlcnNlY3Rpbmc7XG4gICAgfSxcbiAgICB7XG4gICAgICByb290OiBzY3JvbGxUYXJnZXQsXG4gICAgICB3aW5kb3csXG4gICAgICB0aHJlc2hvbGRcbiAgICB9XG4gICk7XG4gIHJldHVybiBlbGVtZW50SXNWaXNpYmxlO1xufVxuXG5jb25zdCBldmVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiB1c2VFdmVudEJ1cyhrZXkpIHtcbiAgY29uc3Qgc2NvcGUgPSB2dWVEZW1pLmdldEN1cnJlbnRTY29wZSgpO1xuICBmdW5jdGlvbiBvbihsaXN0ZW5lcikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBldmVudHMuZ2V0KGtleSkgfHwgLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICBldmVudHMuc2V0KGtleSwgbGlzdGVuZXJzKTtcbiAgICBjb25zdCBfb2ZmID0gKCkgPT4gb2ZmKGxpc3RlbmVyKTtcbiAgICAoX2EgPSBzY29wZSA9PSBudWxsID8gdm9pZCAwIDogc2NvcGUuY2xlYW51cHMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5wdXNoKF9vZmYpO1xuICAgIHJldHVybiBfb2ZmO1xuICB9XG4gIGZ1bmN0aW9uIG9uY2UobGlzdGVuZXIpIHtcbiAgICBmdW5jdGlvbiBfbGlzdGVuZXIoLi4uYXJncykge1xuICAgICAgb2ZmKF9saXN0ZW5lcik7XG4gICAgICBsaXN0ZW5lciguLi5hcmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIG9uKF9saXN0ZW5lcik7XG4gIH1cbiAgZnVuY3Rpb24gb2ZmKGxpc3RlbmVyKSB7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gZXZlbnRzLmdldChrZXkpO1xuICAgIGlmICghbGlzdGVuZXJzKVxuICAgICAgcmV0dXJuO1xuICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgIGlmICghbGlzdGVuZXJzLnNpemUpXG4gICAgICByZXNldCgpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGV2ZW50cy5kZWxldGUoa2V5KTtcbiAgfVxuICBmdW5jdGlvbiBlbWl0KGV2ZW50LCBwYXlsb2FkKSB7XG4gICAgdmFyIF9hO1xuICAgIChfYSA9IGV2ZW50cy5nZXQoa2V5KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHYpID0+IHYoZXZlbnQsIHBheWxvYWQpKTtcbiAgfVxuICByZXR1cm4geyBvbiwgb25jZSwgb2ZmLCBlbWl0LCByZXNldCB9O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTmVzdGVkT3B0aW9ucyQxKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHRydWUpXG4gICAgcmV0dXJuIHt9O1xuICByZXR1cm4gb3B0aW9ucztcbn1cbmZ1bmN0aW9uIHVzZUV2ZW50U291cmNlKHVybCwgZXZlbnRzID0gW10sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBldmVudCA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiQ09OTkVDVElOR1wiKTtcbiAgY29uc3QgZXZlbnRTb3VyY2UgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnNoYWxsb3dSZWYobnVsbCk7XG4gIGNvbnN0IHVybFJlZiA9IHNoYXJlZC50b1JlZih1cmwpO1xuICBjb25zdCBsYXN0RXZlbnRJZCA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgbGV0IGV4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgbGV0IHJldHJpZWQgPSAwO1xuICBjb25zdCB7XG4gICAgd2l0aENyZWRlbnRpYWxzID0gZmFsc2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKHNoYXJlZC5pc0NsaWVudCAmJiBldmVudFNvdXJjZS52YWx1ZSkge1xuICAgICAgZXZlbnRTb3VyY2UudmFsdWUuY2xvc2UoKTtcbiAgICAgIGV2ZW50U291cmNlLnZhbHVlID0gbnVsbDtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiQ0xPU0VEXCI7XG4gICAgICBleHBsaWNpdGx5Q2xvc2VkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IF9pbml0ID0gKCkgPT4ge1xuICAgIGlmIChleHBsaWNpdGx5Q2xvc2VkIHx8IHR5cGVvZiB1cmxSZWYudmFsdWUgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZXMgPSBuZXcgRXZlbnRTb3VyY2UodXJsUmVmLnZhbHVlLCB7IHdpdGhDcmVkZW50aWFscyB9KTtcbiAgICBzdGF0dXMudmFsdWUgPSBcIkNPTk5FQ1RJTkdcIjtcbiAgICBldmVudFNvdXJjZS52YWx1ZSA9IGVzO1xuICAgIGVzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiT1BFTlwiO1xuICAgICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICAgIH07XG4gICAgZXMub25lcnJvciA9IChlKSA9PiB7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcIkNMT1NFRFwiO1xuICAgICAgZXJyb3IudmFsdWUgPSBlO1xuICAgICAgaWYgKGVzLnJlYWR5U3RhdGUgPT09IDIgJiYgIWV4cGxpY2l0bHlDbG9zZWQgJiYgb3B0aW9ucy5hdXRvUmVjb25uZWN0KSB7XG4gICAgICAgIGVzLmNsb3NlKCk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICByZXRyaWVzID0gLTEsXG4gICAgICAgICAgZGVsYXkgPSAxZTMsXG4gICAgICAgICAgb25GYWlsZWRcbiAgICAgICAgfSA9IHJlc29sdmVOZXN0ZWRPcHRpb25zJDEob3B0aW9ucy5hdXRvUmVjb25uZWN0KTtcbiAgICAgICAgcmV0cmllZCArPSAxO1xuICAgICAgICBpZiAodHlwZW9mIHJldHJpZXMgPT09IFwibnVtYmVyXCIgJiYgKHJldHJpZXMgPCAwIHx8IHJldHJpZWQgPCByZXRyaWVzKSlcbiAgICAgICAgICBzZXRUaW1lb3V0KF9pbml0LCBkZWxheSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiByZXRyaWVzID09PSBcImZ1bmN0aW9uXCIgJiYgcmV0cmllcygpKVxuICAgICAgICAgIHNldFRpbWVvdXQoX2luaXQsIGRlbGF5KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG9uRmFpbGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkZhaWxlZCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXMub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICAgIGV2ZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgICBsYXN0RXZlbnRJZC52YWx1ZSA9IGUubGFzdEV2ZW50SWQ7XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGV2ZW50X25hbWUgb2YgZXZlbnRzKSB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKGVzLCBldmVudF9uYW1lLCAoZSkgPT4ge1xuICAgICAgICBldmVudC52YWx1ZSA9IGV2ZW50X25hbWU7XG4gICAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGEgfHwgbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICBpZiAoIXNoYXJlZC5pc0NsaWVudClcbiAgICAgIHJldHVybjtcbiAgICBjbG9zZSgpO1xuICAgIGV4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgICByZXRyaWVkID0gMDtcbiAgICBfaW5pdCgpO1xuICB9O1xuICBpZiAoaW1tZWRpYXRlKVxuICAgIHZ1ZURlbWkud2F0Y2godXJsUmVmLCBvcGVuLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKGNsb3NlKTtcbiAgcmV0dXJuIHtcbiAgICBldmVudFNvdXJjZSxcbiAgICBldmVudCxcbiAgICBkYXRhLFxuICAgIHN0YXR1cyxcbiAgICBlcnJvcixcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICAgIGxhc3RFdmVudElkXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUV5ZURyb3BwZXIob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlID0gXCJcIiB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBcIkV5ZURyb3BwZXJcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBzUkdCSGV4ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgYXN5bmMgZnVuY3Rpb24gb3BlbihvcGVuT3B0aW9ucykge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZXllRHJvcHBlciA9IG5ldyB3aW5kb3cuRXllRHJvcHBlcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV5ZURyb3BwZXIub3BlbihvcGVuT3B0aW9ucyk7XG4gICAgc1JHQkhleC52YWx1ZSA9IHJlc3VsdC5zUkdCSGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHsgaXNTdXBwb3J0ZWQsIHNSR0JIZXgsIG9wZW4gfTtcbn1cblxuZnVuY3Rpb24gdXNlRmF2aWNvbihuZXdJY29uID0gbnVsbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBiYXNlVXJsID0gXCJcIixcbiAgICByZWwgPSBcImljb25cIixcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmF2aWNvbiA9IHNoYXJlZC50b1JlZihuZXdJY29uKTtcbiAgY29uc3QgYXBwbHlJY29uID0gKGljb24pID0+IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoYGxpbmtbcmVsKj1cIiR7cmVsfVwiXWApO1xuICAgIGlmICghZWxlbWVudHMgfHwgZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuICAgICAgaWYgKGxpbmspIHtcbiAgICAgICAgbGluay5yZWwgPSByZWw7XG4gICAgICAgIGxpbmsuaHJlZiA9IGAke2Jhc2VVcmx9JHtpY29ufWA7XG4gICAgICAgIGxpbmsudHlwZSA9IGBpbWFnZS8ke2ljb24uc3BsaXQoXCIuXCIpLnBvcCgpfWA7XG4gICAgICAgIGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC5oZWFkLmFwcGVuZChsaW5rKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxlbWVudHMgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiBlbC5ocmVmID0gYCR7YmFzZVVybH0ke2ljb259YCk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goXG4gICAgZmF2aWNvbixcbiAgICAoaSwgbykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpID09PSBcInN0cmluZ1wiICYmIGkgIT09IG8pXG4gICAgICAgIGFwcGx5SWNvbihpKTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbiAgcmV0dXJuIGZhdmljb247XG59XG5cbmNvbnN0IHBheWxvYWRNYXBwaW5nID0ge1xuICBqc29uOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgdGV4dDogXCJ0ZXh0L3BsYWluXCJcbn07XG5mdW5jdGlvbiBpc0ZldGNoT3B0aW9ucyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBzaGFyZWQuY29udGFpbnNQcm9wKG9iaiwgXCJpbW1lZGlhdGVcIiwgXCJyZWZldGNoXCIsIFwiaW5pdGlhbERhdGFcIiwgXCJ0aW1lb3V0XCIsIFwiYmVmb3JlRmV0Y2hcIiwgXCJhZnRlckZldGNoXCIsIFwib25GZXRjaEVycm9yXCIsIFwiZmV0Y2hcIiwgXCJ1cGRhdGVEYXRhT25FcnJvclwiKTtcbn1cbmNvbnN0IHJlQWJzb2x1dGUgPSAvXig/OlthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaTtcbmZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIHJldHVybiByZUFic29sdXRlLnRlc3QodXJsKTtcbn1cbmZ1bmN0aW9uIGhlYWRlcnNUb09iamVjdChoZWFkZXJzKSB7XG4gIGlmICh0eXBlb2YgSGVhZGVycyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGhlYWRlcnMuZW50cmllcygpKTtcbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5mdW5jdGlvbiBjb21iaW5lQ2FsbGJhY2tzKGNvbWJpbmF0aW9uLCAuLi5jYWxsYmFja3MpIHtcbiAgaWYgKGNvbWJpbmF0aW9uID09PSBcIm92ZXJ3cml0ZVwiKSB7XG4gICAgcmV0dXJuIGFzeW5jIChjdHgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tzW2NhbGxiYWNrcy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChjYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIHsgLi4uY3R4LCAuLi5hd2FpdCBjYWxsYmFjayhjdHgpIH07XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFzeW5jIChjdHgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgICAgIGlmIChjYWxsYmFjaylcbiAgICAgICAgICBjdHggPSB7IC4uLmN0eCwgLi4uYXdhaXQgY2FsbGJhY2soY3R4KSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eDtcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVGZXRjaChjb25maWcgPSB7fSkge1xuICBjb25zdCBfY29tYmluYXRpb24gPSBjb25maWcuY29tYmluYXRpb24gfHwgXCJjaGFpblwiO1xuICBjb25zdCBfb3B0aW9ucyA9IGNvbmZpZy5vcHRpb25zIHx8IHt9O1xuICBjb25zdCBfZmV0Y2hPcHRpb25zID0gY29uZmlnLmZldGNoT3B0aW9ucyB8fCB7fTtcbiAgZnVuY3Rpb24gdXNlRmFjdG9yeUZldGNoKHVybCwgLi4uYXJncykge1xuICAgIGNvbnN0IGNvbXB1dGVkVXJsID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBiYXNlVXJsID0gc2hhcmVkLnRvVmFsdWUoY29uZmlnLmJhc2VVcmwpO1xuICAgICAgY29uc3QgdGFyZ2V0VXJsID0gc2hhcmVkLnRvVmFsdWUodXJsKTtcbiAgICAgIHJldHVybiBiYXNlVXJsICYmICFpc0Fic29sdXRlVVJMKHRhcmdldFVybCkgPyBqb2luUGF0aHMoYmFzZVVybCwgdGFyZ2V0VXJsKSA6IHRhcmdldFVybDtcbiAgICB9KTtcbiAgICBsZXQgb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgIGxldCBmZXRjaE9wdGlvbnMgPSBfZmV0Y2hPcHRpb25zO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChpc0ZldGNoT3B0aW9ucyhhcmdzWzBdKSkge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgLi4uYXJnc1swXSxcbiAgICAgICAgICBiZWZvcmVGZXRjaDogY29tYmluZUNhbGxiYWNrcyhfY29tYmluYXRpb24sIF9vcHRpb25zLmJlZm9yZUZldGNoLCBhcmdzWzBdLmJlZm9yZUZldGNoKSxcbiAgICAgICAgICBhZnRlckZldGNoOiBjb21iaW5lQ2FsbGJhY2tzKF9jb21iaW5hdGlvbiwgX29wdGlvbnMuYWZ0ZXJGZXRjaCwgYXJnc1swXS5hZnRlckZldGNoKSxcbiAgICAgICAgICBvbkZldGNoRXJyb3I6IGNvbWJpbmVDYWxsYmFja3MoX2NvbWJpbmF0aW9uLCBfb3B0aW9ucy5vbkZldGNoRXJyb3IsIGFyZ3NbMF0ub25GZXRjaEVycm9yKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmV0Y2hPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmZldGNoT3B0aW9ucyxcbiAgICAgICAgICAuLi5hcmdzWzBdLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnNUb09iamVjdChmZXRjaE9wdGlvbnMuaGVhZGVycykgfHwge30sXG4gICAgICAgICAgICAuLi5oZWFkZXJzVG9PYmplY3QoYXJnc1swXS5oZWFkZXJzKSB8fCB7fVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSAmJiBpc0ZldGNoT3B0aW9ucyhhcmdzWzFdKSkge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4uYXJnc1sxXSxcbiAgICAgICAgYmVmb3JlRmV0Y2g6IGNvbWJpbmVDYWxsYmFja3MoX2NvbWJpbmF0aW9uLCBfb3B0aW9ucy5iZWZvcmVGZXRjaCwgYXJnc1sxXS5iZWZvcmVGZXRjaCksXG4gICAgICAgIGFmdGVyRmV0Y2g6IGNvbWJpbmVDYWxsYmFja3MoX2NvbWJpbmF0aW9uLCBfb3B0aW9ucy5hZnRlckZldGNoLCBhcmdzWzFdLmFmdGVyRmV0Y2gpLFxuICAgICAgICBvbkZldGNoRXJyb3I6IGNvbWJpbmVDYWxsYmFja3MoX2NvbWJpbmF0aW9uLCBfb3B0aW9ucy5vbkZldGNoRXJyb3IsIGFyZ3NbMV0ub25GZXRjaEVycm9yKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVzZUZldGNoKGNvbXB1dGVkVXJsLCBmZXRjaE9wdGlvbnMsIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB1c2VGYWN0b3J5RmV0Y2g7XG59XG5mdW5jdGlvbiB1c2VGZXRjaCh1cmwsIC4uLmFyZ3MpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBzdXBwb3J0c0Fib3J0ID0gdHlwZW9mIEFib3J0Q29udHJvbGxlciA9PT0gXCJmdW5jdGlvblwiO1xuICBsZXQgZmV0Y2hPcHRpb25zID0ge307XG4gIGxldCBvcHRpb25zID0ge1xuICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICByZWZldGNoOiBmYWxzZSxcbiAgICB0aW1lb3V0OiAwLFxuICAgIHVwZGF0ZURhdGFPbkVycm9yOiBmYWxzZVxuICB9O1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHR5cGU6IFwidGV4dFwiLFxuICAgIHBheWxvYWQ6IHZvaWQgMFxuICB9O1xuICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGlzRmV0Y2hPcHRpb25zKGFyZ3NbMF0pKVxuICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uYXJnc1swXSB9O1xuICAgIGVsc2VcbiAgICAgIGZldGNoT3B0aW9ucyA9IGFyZ3NbMF07XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgIGlmIChpc0ZldGNoT3B0aW9ucyhhcmdzWzFdKSlcbiAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLmFyZ3NbMV0gfTtcbiAgfVxuICBjb25zdCB7XG4gICAgZmV0Y2ggPSAoX2EgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZmV0Y2gsXG4gICAgaW5pdGlhbERhdGEsXG4gICAgdGltZW91dFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVzcG9uc2VFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgZXJyb3JFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgZmluYWxseUV2ZW50ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBpc0ZpbmlzaGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBpc0ZldGNoaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBhYm9ydGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdGF0dXNDb2RlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkuc2hhbGxvd1JlZihpbml0aWFsRGF0YSB8fCBudWxsKTtcbiAgY29uc3QgY2FuQWJvcnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN1cHBvcnRzQWJvcnQgJiYgaXNGZXRjaGluZy52YWx1ZSk7XG4gIGxldCBjb250cm9sbGVyO1xuICBsZXQgdGltZXI7XG4gIGNvbnN0IGFib3J0ID0gKCkgPT4ge1xuICAgIGlmIChzdXBwb3J0c0Fib3J0KSB7XG4gICAgICBjb250cm9sbGVyID09IG51bGwgPyB2b2lkIDAgOiBjb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgY29udHJvbGxlci5zaWduYWwub25hYm9ydCA9ICgpID0+IGFib3J0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgZmV0Y2hPcHRpb25zID0ge1xuICAgICAgICAuLi5mZXRjaE9wdGlvbnMsXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICBjb25zdCBsb2FkaW5nID0gKGlzTG9hZGluZykgPT4ge1xuICAgIGlzRmV0Y2hpbmcudmFsdWUgPSBpc0xvYWRpbmc7XG4gICAgaXNGaW5pc2hlZC52YWx1ZSA9ICFpc0xvYWRpbmc7XG4gIH07XG4gIGlmICh0aW1lb3V0KVxuICAgIHRpbWVyID0gc2hhcmVkLnVzZVRpbWVvdXRGbihhYm9ydCwgdGltZW91dCwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICBsZXQgZXhlY3V0ZUNvdW50ZXIgPSAwO1xuICBjb25zdCBleGVjdXRlID0gYXN5bmMgKHRocm93T25GYWlsZWQgPSBmYWxzZSkgPT4ge1xuICAgIHZhciBfYTIsIF9iO1xuICAgIGFib3J0KCk7XG4gICAgbG9hZGluZyh0cnVlKTtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgc3RhdHVzQ29kZS52YWx1ZSA9IG51bGw7XG4gICAgYWJvcnRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIGV4ZWN1dGVDb3VudGVyICs9IDE7XG4gICAgY29uc3QgY3VycmVudEV4ZWN1dGVDb3VudGVyID0gZXhlY3V0ZUNvdW50ZXI7XG4gICAgY29uc3QgZGVmYXVsdEZldGNoT3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHt9XG4gICAgfTtcbiAgICBpZiAoY29uZmlnLnBheWxvYWQpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBoZWFkZXJzVG9PYmplY3QoZGVmYXVsdEZldGNoT3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBzaGFyZWQudG9WYWx1ZShjb25maWcucGF5bG9hZCk7XG4gICAgICBpZiAoIWNvbmZpZy5wYXlsb2FkVHlwZSAmJiBwYXlsb2FkICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwYXlsb2FkKSA9PT0gT2JqZWN0LnByb3RvdHlwZSAmJiAhKHBheWxvYWQgaW5zdGFuY2VvZiBGb3JtRGF0YSkpXG4gICAgICAgIGNvbmZpZy5wYXlsb2FkVHlwZSA9IFwianNvblwiO1xuICAgICAgaWYgKGNvbmZpZy5wYXlsb2FkVHlwZSlcbiAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IChfYTIgPSBwYXlsb2FkTWFwcGluZ1tjb25maWcucGF5bG9hZFR5cGVdKSAhPSBudWxsID8gX2EyIDogY29uZmlnLnBheWxvYWRUeXBlO1xuICAgICAgZGVmYXVsdEZldGNoT3B0aW9ucy5ib2R5ID0gY29uZmlnLnBheWxvYWRUeXBlID09PSBcImpzb25cIiA/IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpIDogcGF5bG9hZDtcbiAgICB9XG4gICAgbGV0IGlzQ2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgdXJsOiBzaGFyZWQudG9WYWx1ZSh1cmwpLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICAuLi5kZWZhdWx0RmV0Y2hPcHRpb25zLFxuICAgICAgICAuLi5mZXRjaE9wdGlvbnNcbiAgICAgIH0sXG4gICAgICBjYW5jZWw6ICgpID0+IHtcbiAgICAgICAgaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAob3B0aW9ucy5iZWZvcmVGZXRjaClcbiAgICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwgYXdhaXQgb3B0aW9ucy5iZWZvcmVGZXRjaChjb250ZXh0KSk7XG4gICAgaWYgKGlzQ2FuY2VsZWQgfHwgIWZldGNoKSB7XG4gICAgICBsb2FkaW5nKGZhbHNlKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuICAgIGxldCByZXNwb25zZURhdGEgPSBudWxsO1xuICAgIGlmICh0aW1lcilcbiAgICAgIHRpbWVyLnN0YXJ0KCk7XG4gICAgcmV0dXJuIGZldGNoKFxuICAgICAgY29udGV4dC51cmwsXG4gICAgICB7XG4gICAgICAgIC4uLmRlZmF1bHRGZXRjaE9wdGlvbnMsXG4gICAgICAgIC4uLmNvbnRleHQub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLmhlYWRlcnNUb09iamVjdChkZWZhdWx0RmV0Y2hPcHRpb25zLmhlYWRlcnMpLFxuICAgICAgICAgIC4uLmhlYWRlcnNUb09iamVjdCgoX2IgPSBjb250ZXh0Lm9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYi5oZWFkZXJzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKS50aGVuKGFzeW5jIChmZXRjaFJlc3BvbnNlKSA9PiB7XG4gICAgICByZXNwb25zZS52YWx1ZSA9IGZldGNoUmVzcG9uc2U7XG4gICAgICBzdGF0dXNDb2RlLnZhbHVlID0gZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgICByZXNwb25zZURhdGEgPSBhd2FpdCBmZXRjaFJlc3BvbnNlLmNsb25lKClbY29uZmlnLnR5cGVdKCk7XG4gICAgICBpZiAoIWZldGNoUmVzcG9uc2Uub2spIHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IGluaXRpYWxEYXRhIHx8IG51bGw7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihmZXRjaFJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXJGZXRjaCkge1xuICAgICAgICAoeyBkYXRhOiByZXNwb25zZURhdGEgfSA9IGF3YWl0IG9wdGlvbnMuYWZ0ZXJGZXRjaCh7XG4gICAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICAgIHJlc3BvbnNlOiBmZXRjaFJlc3BvbnNlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIGRhdGEudmFsdWUgPSByZXNwb25zZURhdGE7XG4gICAgICByZXNwb25zZUV2ZW50LnRyaWdnZXIoZmV0Y2hSZXNwb25zZSk7XG4gICAgICByZXR1cm4gZmV0Y2hSZXNwb25zZTtcbiAgICB9KS5jYXRjaChhc3luYyAoZmV0Y2hFcnJvcikgPT4ge1xuICAgICAgbGV0IGVycm9yRGF0YSA9IGZldGNoRXJyb3IubWVzc2FnZSB8fCBmZXRjaEVycm9yLm5hbWU7XG4gICAgICBpZiAob3B0aW9ucy5vbkZldGNoRXJyb3IpIHtcbiAgICAgICAgKHsgZXJyb3I6IGVycm9yRGF0YSwgZGF0YTogcmVzcG9uc2VEYXRhIH0gPSBhd2FpdCBvcHRpb25zLm9uRmV0Y2hFcnJvcih7XG4gICAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICAgIGVycm9yOiBmZXRjaEVycm9yLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZS52YWx1ZVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBlcnJvci52YWx1ZSA9IGVycm9yRGF0YTtcbiAgICAgIGlmIChvcHRpb25zLnVwZGF0ZURhdGFPbkVycm9yKVxuICAgICAgICBkYXRhLnZhbHVlID0gcmVzcG9uc2VEYXRhO1xuICAgICAgZXJyb3JFdmVudC50cmlnZ2VyKGZldGNoRXJyb3IpO1xuICAgICAgaWYgKHRocm93T25GYWlsZWQpXG4gICAgICAgIHRocm93IGZldGNoRXJyb3I7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGlmIChjdXJyZW50RXhlY3V0ZUNvdW50ZXIgPT09IGV4ZWN1dGVDb3VudGVyKVxuICAgICAgICBsb2FkaW5nKGZhbHNlKTtcbiAgICAgIGlmICh0aW1lcilcbiAgICAgICAgdGltZXIuc3RvcCgpO1xuICAgICAgZmluYWxseUV2ZW50LnRyaWdnZXIobnVsbCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHJlZmV0Y2ggPSBzaGFyZWQudG9SZWYob3B0aW9ucy5yZWZldGNoKTtcbiAgdnVlRGVtaS53YXRjaChcbiAgICBbXG4gICAgICByZWZldGNoLFxuICAgICAgc2hhcmVkLnRvUmVmKHVybClcbiAgICBdLFxuICAgIChbcmVmZXRjaDJdKSA9PiByZWZldGNoMiAmJiBleGVjdXRlKCksXG4gICAgeyBkZWVwOiB0cnVlIH1cbiAgKTtcbiAgY29uc3Qgc2hlbGwgPSB7XG4gICAgaXNGaW5pc2hlZDogdnVlRGVtaS5yZWFkb25seShpc0ZpbmlzaGVkKSxcbiAgICBpc0ZldGNoaW5nOiB2dWVEZW1pLnJlYWRvbmx5KGlzRmV0Y2hpbmcpLFxuICAgIHN0YXR1c0NvZGUsXG4gICAgcmVzcG9uc2UsXG4gICAgZXJyb3IsXG4gICAgZGF0YSxcbiAgICBjYW5BYm9ydCxcbiAgICBhYm9ydGVkLFxuICAgIGFib3J0LFxuICAgIGV4ZWN1dGUsXG4gICAgb25GZXRjaFJlc3BvbnNlOiByZXNwb25zZUV2ZW50Lm9uLFxuICAgIG9uRmV0Y2hFcnJvcjogZXJyb3JFdmVudC5vbixcbiAgICBvbkZldGNoRmluYWxseTogZmluYWxseUV2ZW50Lm9uLFxuICAgIC8vIG1ldGhvZFxuICAgIGdldDogc2V0TWV0aG9kKFwiR0VUXCIpLFxuICAgIHB1dDogc2V0TWV0aG9kKFwiUFVUXCIpLFxuICAgIHBvc3Q6IHNldE1ldGhvZChcIlBPU1RcIiksXG4gICAgZGVsZXRlOiBzZXRNZXRob2QoXCJERUxFVEVcIiksXG4gICAgcGF0Y2g6IHNldE1ldGhvZChcIlBBVENIXCIpLFxuICAgIGhlYWQ6IHNldE1ldGhvZChcIkhFQURcIiksXG4gICAgb3B0aW9uczogc2V0TWV0aG9kKFwiT1BUSU9OU1wiKSxcbiAgICAvLyB0eXBlXG4gICAganNvbjogc2V0VHlwZShcImpzb25cIiksXG4gICAgdGV4dDogc2V0VHlwZShcInRleHRcIiksXG4gICAgYmxvYjogc2V0VHlwZShcImJsb2JcIiksXG4gICAgYXJyYXlCdWZmZXI6IHNldFR5cGUoXCJhcnJheUJ1ZmZlclwiKSxcbiAgICBmb3JtRGF0YTogc2V0VHlwZShcImZvcm1EYXRhXCIpXG4gIH07XG4gIGZ1bmN0aW9uIHNldE1ldGhvZChtZXRob2QpIHtcbiAgICByZXR1cm4gKHBheWxvYWQsIHBheWxvYWRUeXBlKSA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hpbmcudmFsdWUpIHtcbiAgICAgICAgY29uZmlnLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgY29uZmlnLnBheWxvYWQgPSBwYXlsb2FkO1xuICAgICAgICBjb25maWcucGF5bG9hZFR5cGUgPSBwYXlsb2FkVHlwZTtcbiAgICAgICAgaWYgKHZ1ZURlbWkuaXNSZWYoY29uZmlnLnBheWxvYWQpKSB7XG4gICAgICAgICAgdnVlRGVtaS53YXRjaChcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgcmVmZXRjaCxcbiAgICAgICAgICAgICAgc2hhcmVkLnRvUmVmKGNvbmZpZy5wYXlsb2FkKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIChbcmVmZXRjaDJdKSA9PiByZWZldGNoMiAmJiBleGVjdXRlKCksXG4gICAgICAgICAgICB7IGRlZXA6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zaGVsbCxcbiAgICAgICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd2FpdFVudGlsRmluaXNoZWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNoYXJlZC51bnRpbChpc0ZpbmlzaGVkKS50b0JlKHRydWUpLnRoZW4oKCkgPT4gcmVzb2x2ZShzaGVsbCkpLmNhdGNoKChlcnJvcjIpID0+IHJlamVjdChlcnJvcjIpKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBzZXRUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFpc0ZldGNoaW5nLnZhbHVlKSB7XG4gICAgICAgIGNvbmZpZy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zaGVsbCxcbiAgICAgICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH07XG4gIH1cbiAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKVxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gZXhlY3V0ZSgpKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zaGVsbCxcbiAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBqb2luUGF0aHMoc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0LmVuZHNXaXRoKFwiL1wiKSAmJiAhZW5kLnN0YXJ0c1dpdGgoXCIvXCIpKVxuICAgIHJldHVybiBgJHtzdGFydH0vJHtlbmR9YDtcbiAgcmV0dXJuIGAke3N0YXJ0fSR7ZW5kfWA7XG59XG5cbmNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgbXVsdGlwbGU6IHRydWUsXG4gIGFjY2VwdDogXCIqXCIsXG4gIHJlc2V0OiBmYWxzZSxcbiAgZGlyZWN0b3J5OiBmYWxzZVxufTtcbmZ1bmN0aW9uIHVzZUZpbGVEaWFsb2cob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmlsZXMgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgeyBvbjogb25DaGFuZ2UsIHRyaWdnZXI6IGNoYW5nZVRyaWdnZXIgfSA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgeyBvbjogb25DYW5jZWwsIHRyaWdnZXI6IGNhbmNlbFRyaWdnZXIgfSA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgbGV0IGlucHV0O1xuICBpZiAoZG9jdW1lbnQpIHtcbiAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBpbnB1dC50eXBlID0gXCJmaWxlXCI7XG4gICAgaW5wdXQub25jaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGV2ZW50LnRhcmdldDtcbiAgICAgIGZpbGVzLnZhbHVlID0gcmVzdWx0LmZpbGVzO1xuICAgICAgY2hhbmdlVHJpZ2dlcihmaWxlcy52YWx1ZSk7XG4gICAgfTtcbiAgICBpbnB1dC5vbmNhbmNlbCA9ICgpID0+IHtcbiAgICAgIGNhbmNlbFRyaWdnZXIoKTtcbiAgICB9O1xuICB9XG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZpbGVzLnZhbHVlID0gbnVsbDtcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQudmFsdWUpIHtcbiAgICAgIGlucHV0LnZhbHVlID0gXCJcIjtcbiAgICAgIGNoYW5nZVRyaWdnZXIobnVsbCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvcGVuID0gKGxvY2FsT3B0aW9ucykgPT4ge1xuICAgIGlmICghaW5wdXQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgX29wdGlvbnMgPSB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4ubG9jYWxPcHRpb25zXG4gICAgfTtcbiAgICBpbnB1dC5tdWx0aXBsZSA9IF9vcHRpb25zLm11bHRpcGxlO1xuICAgIGlucHV0LmFjY2VwdCA9IF9vcHRpb25zLmFjY2VwdDtcbiAgICBpbnB1dC53ZWJraXRkaXJlY3RvcnkgPSBfb3B0aW9ucy5kaXJlY3Rvcnk7XG4gICAgaWYgKHNoYXJlZC5oYXNPd24oX29wdGlvbnMsIFwiY2FwdHVyZVwiKSlcbiAgICAgIGlucHV0LmNhcHR1cmUgPSBfb3B0aW9ucy5jYXB0dXJlO1xuICAgIGlmIChfb3B0aW9ucy5yZXNldClcbiAgICAgIHJlc2V0KCk7XG4gICAgaW5wdXQuY2xpY2soKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmaWxlczogdnVlRGVtaS5yZWFkb25seShmaWxlcyksXG4gICAgb3BlbixcbiAgICByZXNldCxcbiAgICBvbkNhbmNlbCxcbiAgICBvbkNoYW5nZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VGaWxlU3lzdGVtQWNjZXNzKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93OiBfd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBkYXRhVHlwZSA9IFwiVGV4dFwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB3aW5kb3cgPSBfd2luZG93O1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB3aW5kb3cgJiYgXCJzaG93U2F2ZUZpbGVQaWNrZXJcIiBpbiB3aW5kb3cgJiYgXCJzaG93T3BlbkZpbGVQaWNrZXJcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBmaWxlSGFuZGxlID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGZpbGUgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBmaWxlTmFtZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lKSAhPSBudWxsID8gX2IgOiBcIlwiO1xuICB9KTtcbiAgY29uc3QgZmlsZU1JTUUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudHlwZSkgIT0gbnVsbCA/IF9iIDogXCJcIjtcbiAgfSk7XG4gIGNvbnN0IGZpbGVTaXplID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNpemUpICE9IG51bGwgPyBfYiA6IDA7XG4gIH0pO1xuICBjb25zdCBmaWxlTGFzdE1vZGlmaWVkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmxhc3RNb2RpZmllZCkgIT0gbnVsbCA/IF9iIDogMDtcbiAgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW4oX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgW2hhbmRsZV0gPSBhd2FpdCB3aW5kb3cuc2hvd09wZW5GaWxlUGlja2VyKHsgLi4uc2hhcmVkLnRvVmFsdWUob3B0aW9ucyksIC4uLl9vcHRpb25zIH0pO1xuICAgIGZpbGVIYW5kbGUudmFsdWUgPSBoYW5kbGU7XG4gICAgYXdhaXQgdXBkYXRlRGF0YSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZShfb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBmaWxlSGFuZGxlLnZhbHVlID0gYXdhaXQgd2luZG93LnNob3dTYXZlRmlsZVBpY2tlcih7IC4uLm9wdGlvbnMsIC4uLl9vcHRpb25zIH0pO1xuICAgIGRhdGEudmFsdWUgPSB2b2lkIDA7XG4gICAgYXdhaXQgdXBkYXRlRGF0YSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHNhdmUoX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFmaWxlSGFuZGxlLnZhbHVlKVxuICAgICAgcmV0dXJuIHNhdmVBcyhfb3B0aW9ucyk7XG4gICAgaWYgKGRhdGEudmFsdWUpIHtcbiAgICAgIGNvbnN0IHdyaXRhYmxlU3RyZWFtID0gYXdhaXQgZmlsZUhhbmRsZS52YWx1ZS5jcmVhdGVXcml0YWJsZSgpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0ud3JpdGUoZGF0YS52YWx1ZSk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS5jbG9zZSgpO1xuICAgIH1cbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc2F2ZUFzKF9vcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGZpbGVIYW5kbGUudmFsdWUgPSBhd2FpdCB3aW5kb3cuc2hvd1NhdmVGaWxlUGlja2VyKHsgLi4ub3B0aW9ucywgLi4uX29wdGlvbnMgfSk7XG4gICAgaWYgKGRhdGEudmFsdWUpIHtcbiAgICAgIGNvbnN0IHdyaXRhYmxlU3RyZWFtID0gYXdhaXQgZmlsZUhhbmRsZS52YWx1ZS5jcmVhdGVXcml0YWJsZSgpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0ud3JpdGUoZGF0YS52YWx1ZSk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS5jbG9zZSgpO1xuICAgIH1cbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRmlsZSgpIHtcbiAgICB2YXIgX2E7XG4gICAgZmlsZS52YWx1ZSA9IGF3YWl0ICgoX2EgPSBmaWxlSGFuZGxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZ2V0RmlsZSgpKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVEYXRhKCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgYXdhaXQgdXBkYXRlRmlsZSgpO1xuICAgIGNvbnN0IHR5cGUgPSBzaGFyZWQudG9WYWx1ZShkYXRhVHlwZSk7XG4gICAgaWYgKHR5cGUgPT09IFwiVGV4dFwiKVxuICAgICAgZGF0YS52YWx1ZSA9IGF3YWl0ICgoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dCgpKTtcbiAgICBlbHNlIGlmICh0eXBlID09PSBcIkFycmF5QnVmZmVyXCIpXG4gICAgICBkYXRhLnZhbHVlID0gYXdhaXQgKChfYiA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5hcnJheUJ1ZmZlcigpKTtcbiAgICBlbHNlIGlmICh0eXBlID09PSBcIkJsb2JcIilcbiAgICAgIGRhdGEudmFsdWUgPSBmaWxlLnZhbHVlO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gc2hhcmVkLnRvVmFsdWUoZGF0YVR5cGUpLCB1cGRhdGVEYXRhKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBkYXRhLFxuICAgIGZpbGUsXG4gICAgZmlsZU5hbWUsXG4gICAgZmlsZU1JTUUsXG4gICAgZmlsZVNpemUsXG4gICAgZmlsZUxhc3RNb2RpZmllZCxcbiAgICBvcGVuLFxuICAgIGNyZWF0ZSxcbiAgICBzYXZlLFxuICAgIHNhdmVBcyxcbiAgICB1cGRhdGVEYXRhXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZvY3VzKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlID0gZmFsc2UsIGZvY3VzVmlzaWJsZSA9IGZhbHNlLCBwcmV2ZW50U2Nyb2xsID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlubmVyRm9jdXNlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldEVsZW1lbnQsIFwiZm9jdXNcIiwgKGV2ZW50KSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIWZvY3VzVmlzaWJsZSB8fCAoKF9iID0gKF9hID0gZXZlbnQudGFyZ2V0KS5tYXRjaGVzKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgXCI6Zm9jdXMtdmlzaWJsZVwiKSkpXG4gICAgICBpbm5lckZvY3VzZWQudmFsdWUgPSB0cnVlO1xuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXRFbGVtZW50LCBcImJsdXJcIiwgKCkgPT4gaW5uZXJGb2N1c2VkLnZhbHVlID0gZmFsc2UpO1xuICBjb25zdCBmb2N1c2VkID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0OiAoKSA9PiBpbm5lckZvY3VzZWQudmFsdWUsXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKCF2YWx1ZSAmJiBpbm5lckZvY3VzZWQudmFsdWUpXG4gICAgICAgIChfYSA9IHRhcmdldEVsZW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5ibHVyKCk7XG4gICAgICBlbHNlIGlmICh2YWx1ZSAmJiAhaW5uZXJGb2N1c2VkLnZhbHVlKVxuICAgICAgICAoX2IgPSB0YXJnZXRFbGVtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsIH0pO1xuICAgIH1cbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2goXG4gICAgdGFyZ2V0RWxlbWVudCxcbiAgICAoKSA9PiB7XG4gICAgICBmb2N1c2VkLnZhbHVlID0gaW5pdGlhbFZhbHVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9XG4gICk7XG4gIHJldHVybiB7IGZvY3VzZWQgfTtcbn1cblxuY29uc3QgRVZFTlRfRk9DVVNfSU4gPSBcImZvY3VzaW5cIjtcbmNvbnN0IEVWRU5UX0ZPQ1VTX09VVCA9IFwiZm9jdXNvdXRcIjtcbmZ1bmN0aW9uIHVzZUZvY3VzV2l0aGluKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICBjb25zdCBfZm9jdXNlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZm9jdXNlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gX2ZvY3VzZWQudmFsdWUpO1xuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdXNlQWN0aXZlRWxlbWVudChvcHRpb25zKTtcbiAgaWYgKCF3aW5kb3cgfHwgIWFjdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICByZXR1cm4geyBmb2N1c2VkIH07XG4gIH1cbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXRFbGVtZW50LCBFVkVOVF9GT0NVU19JTiwgKCkgPT4gX2ZvY3VzZWQudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXRFbGVtZW50LCBFVkVOVF9GT0NVU19PVVQsICgpID0+IF9mb2N1c2VkLnZhbHVlID0gZmFsc2UpO1xuICByZXR1cm4geyBmb2N1c2VkIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZwcyhvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgZnBzID0gdnVlRGVtaS5yZWYoMCk7XG4gIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuIGZwcztcbiAgY29uc3QgZXZlcnkgPSAoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmV2ZXJ5KSAhPSBudWxsID8gX2EgOiAxMDtcbiAgbGV0IGxhc3QgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgbGV0IHRpY2tzID0gMDtcbiAgdXNlUmFmRm4oKCkgPT4ge1xuICAgIHRpY2tzICs9IDE7XG4gICAgaWYgKHRpY2tzID49IGV2ZXJ5KSB7XG4gICAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgIGNvbnN0IGRpZmYgPSBub3cgLSBsYXN0O1xuICAgICAgZnBzLnZhbHVlID0gTWF0aC5yb3VuZCgxZTMgLyAoZGlmZiAvIHRpY2tzKSk7XG4gICAgICBsYXN0ID0gbm93O1xuICAgICAgdGlja3MgPSAwO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmcHM7XG59XG5cbmNvbnN0IGV2ZW50SGFuZGxlcnMgPSBbXG4gIFwiZnVsbHNjcmVlbmNoYW5nZVwiLFxuICBcIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIixcbiAgXCJ3ZWJraXRlbmRmdWxsc2NyZWVuXCIsXG4gIFwibW96ZnVsbHNjcmVlbmNoYW5nZVwiLFxuICBcIk1TRnVsbHNjcmVlbkNoYW5nZVwiXG5dO1xuZnVuY3Rpb24gdXNlRnVsbHNjcmVlbih0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgYXV0b0V4aXQgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgdGFyZ2V0UmVmID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KSkgIT0gbnVsbCA/IF9hIDogZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJodG1sXCIpO1xuICB9KTtcbiAgY29uc3QgaXNGdWxsc2NyZWVuID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCByZXF1ZXN0TWV0aG9kID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwicmVxdWVzdEZ1bGxzY3JlZW5cIixcbiAgICAgIFwid2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5cIixcbiAgICAgIFwid2Via2l0RW50ZXJGdWxsc2NyZWVuXCIsXG4gICAgICBcIndlYmtpdEVudGVyRnVsbFNjcmVlblwiLFxuICAgICAgXCJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlblwiLFxuICAgICAgXCJtb3pSZXF1ZXN0RnVsbFNjcmVlblwiLFxuICAgICAgXCJtc1JlcXVlc3RGdWxsc2NyZWVuXCJcbiAgICBdLmZpbmQoKG0pID0+IGRvY3VtZW50ICYmIG0gaW4gZG9jdW1lbnQgfHwgdGFyZ2V0UmVmLnZhbHVlICYmIG0gaW4gdGFyZ2V0UmVmLnZhbHVlKTtcbiAgfSk7XG4gIGNvbnN0IGV4aXRNZXRob2QgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgXCJleGl0RnVsbHNjcmVlblwiLFxuICAgICAgXCJ3ZWJraXRFeGl0RnVsbHNjcmVlblwiLFxuICAgICAgXCJ3ZWJraXRFeGl0RnVsbFNjcmVlblwiLFxuICAgICAgXCJ3ZWJraXRDYW5jZWxGdWxsU2NyZWVuXCIsXG4gICAgICBcIm1vekNhbmNlbEZ1bGxTY3JlZW5cIixcbiAgICAgIFwibXNFeGl0RnVsbHNjcmVlblwiXG4gICAgXS5maW5kKChtKSA9PiBkb2N1bWVudCAmJiBtIGluIGRvY3VtZW50IHx8IHRhcmdldFJlZi52YWx1ZSAmJiBtIGluIHRhcmdldFJlZi52YWx1ZSk7XG4gIH0pO1xuICBjb25zdCBmdWxsc2NyZWVuRW5hYmxlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICBcImZ1bGxTY3JlZW5cIixcbiAgICAgIFwid2Via2l0SXNGdWxsU2NyZWVuXCIsXG4gICAgICBcIndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuXCIsXG4gICAgICBcIm1vekZ1bGxTY3JlZW5cIixcbiAgICAgIFwibXNGdWxsc2NyZWVuRWxlbWVudFwiXG4gICAgXS5maW5kKChtKSA9PiBkb2N1bWVudCAmJiBtIGluIGRvY3VtZW50IHx8IHRhcmdldFJlZi52YWx1ZSAmJiBtIGluIHRhcmdldFJlZi52YWx1ZSk7XG4gIH0pO1xuICBjb25zdCBmdWxsc2NyZWVuRWxlbWVudE1ldGhvZCA9IFtcbiAgICBcImZ1bGxzY3JlZW5FbGVtZW50XCIsXG4gICAgXCJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudFwiLFxuICAgIFwibW96RnVsbFNjcmVlbkVsZW1lbnRcIixcbiAgICBcIm1zRnVsbHNjcmVlbkVsZW1lbnRcIlxuICBdLmZpbmQoKG0pID0+IGRvY3VtZW50ICYmIG0gaW4gZG9jdW1lbnQpO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB0YXJnZXRSZWYudmFsdWUgJiYgZG9jdW1lbnQgJiYgcmVxdWVzdE1ldGhvZC52YWx1ZSAhPT0gdm9pZCAwICYmIGV4aXRNZXRob2QudmFsdWUgIT09IHZvaWQgMCAmJiBmdWxsc2NyZWVuRW5hYmxlZC52YWx1ZSAhPT0gdm9pZCAwKTtcbiAgY29uc3QgaXNDdXJyZW50RWxlbWVudEZ1bGxTY3JlZW4gPSAoKSA9PiB7XG4gICAgaWYgKGZ1bGxzY3JlZW5FbGVtZW50TWV0aG9kKVxuICAgICAgcmV0dXJuIChkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnRbZnVsbHNjcmVlbkVsZW1lbnRNZXRob2RdKSA9PT0gdGFyZ2V0UmVmLnZhbHVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgY29uc3QgaXNFbGVtZW50RnVsbFNjcmVlbiA9ICgpID0+IHtcbiAgICBpZiAoZnVsbHNjcmVlbkVuYWJsZWQudmFsdWUpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudFtmdWxsc2NyZWVuRW5hYmxlZC52YWx1ZV0gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnRbZnVsbHNjcmVlbkVuYWJsZWQudmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0MiA9IHRhcmdldFJlZi52YWx1ZTtcbiAgICAgICAgaWYgKCh0YXJnZXQyID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQyW2Z1bGxzY3JlZW5FbmFibGVkLnZhbHVlXSkgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBCb29sZWFuKHRhcmdldDJbZnVsbHNjcmVlbkVuYWJsZWQudmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIGFzeW5jIGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSB8fCAhaXNGdWxsc2NyZWVuLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChleGl0TWV0aG9kLnZhbHVlKSB7XG4gICAgICBpZiAoKGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudFtleGl0TWV0aG9kLnZhbHVlXSkgIT0gbnVsbCkge1xuICAgICAgICBhd2FpdCBkb2N1bWVudFtleGl0TWV0aG9kLnZhbHVlXSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0MiA9IHRhcmdldFJlZi52YWx1ZTtcbiAgICAgICAgaWYgKCh0YXJnZXQyID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQyW2V4aXRNZXRob2QudmFsdWVdKSAhPSBudWxsKVxuICAgICAgICAgIGF3YWl0IHRhcmdldDJbZXhpdE1ldGhvZC52YWx1ZV0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaXNGdWxsc2NyZWVuLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZW50ZXIoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSB8fCBpc0Z1bGxzY3JlZW4udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGlzRWxlbWVudEZ1bGxTY3JlZW4oKSlcbiAgICAgIGF3YWl0IGV4aXQoKTtcbiAgICBjb25zdCB0YXJnZXQyID0gdGFyZ2V0UmVmLnZhbHVlO1xuICAgIGlmIChyZXF1ZXN0TWV0aG9kLnZhbHVlICYmICh0YXJnZXQyID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQyW3JlcXVlc3RNZXRob2QudmFsdWVdKSAhPSBudWxsKSB7XG4gICAgICBhd2FpdCB0YXJnZXQyW3JlcXVlc3RNZXRob2QudmFsdWVdKCk7XG4gICAgICBpc0Z1bGxzY3JlZW4udmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgYXdhaXQgKGlzRnVsbHNjcmVlbi52YWx1ZSA/IGV4aXQoKSA6IGVudGVyKCkpO1xuICB9XG4gIGNvbnN0IGhhbmRsZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICBjb25zdCBpc0VsZW1lbnRGdWxsU2NyZWVuVmFsdWUgPSBpc0VsZW1lbnRGdWxsU2NyZWVuKCk7XG4gICAgaWYgKCFpc0VsZW1lbnRGdWxsU2NyZWVuVmFsdWUgfHwgaXNFbGVtZW50RnVsbFNjcmVlblZhbHVlICYmIGlzQ3VycmVudEVsZW1lbnRGdWxsU2NyZWVuKCkpXG4gICAgICBpc0Z1bGxzY3JlZW4udmFsdWUgPSBpc0VsZW1lbnRGdWxsU2NyZWVuVmFsdWU7XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIGV2ZW50SGFuZGxlcnMsIGhhbmRsZXJDYWxsYmFjaywgZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXRSZWYpLCBldmVudEhhbmRsZXJzLCBoYW5kbGVyQ2FsbGJhY2ssIGZhbHNlKTtcbiAgaWYgKGF1dG9FeGl0KVxuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShleGl0KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0Z1bGxzY3JlZW4sXG4gICAgZW50ZXIsXG4gICAgZXhpdCxcbiAgICB0b2dnbGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwR2FtZXBhZFRvWGJveDM2MENvbnRyb2xsZXIoZ2FtZXBhZCkge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGdhbWVwYWQudmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1dHRvbnM6IHtcbiAgICAgICAgICBhOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMF0sXG4gICAgICAgICAgYjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzFdLFxuICAgICAgICAgIHg6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1syXSxcbiAgICAgICAgICB5OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbM11cbiAgICAgICAgfSxcbiAgICAgICAgYnVtcGVyOiB7XG4gICAgICAgICAgbGVmdDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzRdLFxuICAgICAgICAgIHJpZ2h0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbNV1cbiAgICAgICAgfSxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICBsZWZ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbNl0sXG4gICAgICAgICAgcmlnaHQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s3XVxuICAgICAgICB9LFxuICAgICAgICBzdGljazoge1xuICAgICAgICAgIGxlZnQ6IHtcbiAgICAgICAgICAgIGhvcml6b250YWw6IGdhbWVwYWQudmFsdWUuYXhlc1swXSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbMV0sXG4gICAgICAgICAgICBidXR0b246IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxMF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJpZ2h0OiB7XG4gICAgICAgICAgICBob3Jpem9udGFsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbMl0sXG4gICAgICAgICAgICB2ZXJ0aWNhbDogZ2FtZXBhZC52YWx1ZS5heGVzWzNdLFxuICAgICAgICAgICAgYnV0dG9uOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTFdXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkcGFkOiB7XG4gICAgICAgICAgdXA6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxMl0sXG4gICAgICAgICAgZG93bjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzEzXSxcbiAgICAgICAgICBsZWZ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTRdLFxuICAgICAgICAgIHJpZ2h0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTVdXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2s6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s4XSxcbiAgICAgICAgc3RhcnQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s5XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlR2FtZXBhZChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IG5hdmlnYXRvciAmJiBcImdldEdhbWVwYWRzXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgZ2FtZXBhZHMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IG9uQ29ubmVjdGVkSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgb25EaXNjb25uZWN0ZWRIb29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBzdGF0ZUZyb21HYW1lcGFkID0gKGdhbWVwYWQpID0+IHtcbiAgICBjb25zdCBoYXB0aWNBY3R1YXRvcnMgPSBbXTtcbiAgICBjb25zdCB2aWJyYXRpb25BY3R1YXRvciA9IFwidmlicmF0aW9uQWN0dWF0b3JcIiBpbiBnYW1lcGFkID8gZ2FtZXBhZC52aWJyYXRpb25BY3R1YXRvciA6IG51bGw7XG4gICAgaWYgKHZpYnJhdGlvbkFjdHVhdG9yKVxuICAgICAgaGFwdGljQWN0dWF0b3JzLnB1c2godmlicmF0aW9uQWN0dWF0b3IpO1xuICAgIGlmIChnYW1lcGFkLmhhcHRpY0FjdHVhdG9ycylcbiAgICAgIGhhcHRpY0FjdHVhdG9ycy5wdXNoKC4uLmdhbWVwYWQuaGFwdGljQWN0dWF0b3JzKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGdhbWVwYWQuaWQsXG4gICAgICBpbmRleDogZ2FtZXBhZC5pbmRleCxcbiAgICAgIGNvbm5lY3RlZDogZ2FtZXBhZC5jb25uZWN0ZWQsXG4gICAgICBtYXBwaW5nOiBnYW1lcGFkLm1hcHBpbmcsXG4gICAgICB0aW1lc3RhbXA6IGdhbWVwYWQudGltZXN0YW1wLFxuICAgICAgdmlicmF0aW9uQWN0dWF0b3I6IGdhbWVwYWQudmlicmF0aW9uQWN0dWF0b3IsXG4gICAgICBoYXB0aWNBY3R1YXRvcnMsXG4gICAgICBheGVzOiBnYW1lcGFkLmF4ZXMubWFwKChheGVzKSA9PiBheGVzKSxcbiAgICAgIGJ1dHRvbnM6IGdhbWVwYWQuYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4gKHsgcHJlc3NlZDogYnV0dG9uLnByZXNzZWQsIHRvdWNoZWQ6IGJ1dHRvbi50b3VjaGVkLCB2YWx1ZTogYnV0dG9uLnZhbHVlIH0pKVxuICAgIH07XG4gIH07XG4gIGNvbnN0IHVwZGF0ZUdhbWVwYWRTdGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBfZ2FtZXBhZHMgPSAobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IuZ2V0R2FtZXBhZHMoKSkgfHwgW107XG4gICAgZm9yIChjb25zdCBnYW1lcGFkIG9mIF9nYW1lcGFkcykge1xuICAgICAgaWYgKGdhbWVwYWQgJiYgZ2FtZXBhZHMudmFsdWVbZ2FtZXBhZC5pbmRleF0pXG4gICAgICAgIGdhbWVwYWRzLnZhbHVlW2dhbWVwYWQuaW5kZXhdID0gc3RhdGVGcm9tR2FtZXBhZChnYW1lcGFkKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHsgaXNBY3RpdmUsIHBhdXNlLCByZXN1bWUgfSA9IHVzZVJhZkZuKHVwZGF0ZUdhbWVwYWRTdGF0ZSk7XG4gIGNvbnN0IG9uR2FtZXBhZENvbm5lY3RlZCA9IChnYW1lcGFkKSA9PiB7XG4gICAgaWYgKCFnYW1lcGFkcy52YWx1ZS5zb21lKCh7IGluZGV4IH0pID0+IGluZGV4ID09PSBnYW1lcGFkLmluZGV4KSkge1xuICAgICAgZ2FtZXBhZHMudmFsdWUucHVzaChzdGF0ZUZyb21HYW1lcGFkKGdhbWVwYWQpKTtcbiAgICAgIG9uQ29ubmVjdGVkSG9vay50cmlnZ2VyKGdhbWVwYWQuaW5kZXgpO1xuICAgIH1cbiAgICByZXN1bWUoKTtcbiAgfTtcbiAgY29uc3Qgb25HYW1lcGFkRGlzY29ubmVjdGVkID0gKGdhbWVwYWQpID0+IHtcbiAgICBnYW1lcGFkcy52YWx1ZSA9IGdhbWVwYWRzLnZhbHVlLmZpbHRlcigoeCkgPT4geC5pbmRleCAhPT0gZ2FtZXBhZC5pbmRleCk7XG4gICAgb25EaXNjb25uZWN0ZWRIb29rLnRyaWdnZXIoZ2FtZXBhZC5pbmRleCk7XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJnYW1lcGFkY29ubmVjdGVkXCIsIChlKSA9PiBvbkdhbWVwYWRDb25uZWN0ZWQoZS5nYW1lcGFkKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJnYW1lcGFkZGlzY29ubmVjdGVkXCIsIChlKSA9PiBvbkdhbWVwYWREaXNjb25uZWN0ZWQoZS5nYW1lcGFkKSk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvbnN0IF9nYW1lcGFkcyA9IChuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5nZXRHYW1lcGFkcygpKSB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IGdhbWVwYWQgb2YgX2dhbWVwYWRzKSB7XG4gICAgICBpZiAoZ2FtZXBhZCAmJiBnYW1lcGFkcy52YWx1ZVtnYW1lcGFkLmluZGV4XSlcbiAgICAgICAgb25HYW1lcGFkQ29ubmVjdGVkKGdhbWVwYWQpO1xuICAgIH1cbiAgfSk7XG4gIHBhdXNlKCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgb25Db25uZWN0ZWQ6IG9uQ29ubmVjdGVkSG9vay5vbixcbiAgICBvbkRpc2Nvbm5lY3RlZDogb25EaXNjb25uZWN0ZWRIb29rLm9uLFxuICAgIGdhbWVwYWRzLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZSxcbiAgICBpc0FjdGl2ZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VHZW9sb2NhdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVuYWJsZUhpZ2hBY2N1cmFjeSA9IHRydWUsXG4gICAgbWF4aW11bUFnZSA9IDNlNCxcbiAgICB0aW1lb3V0ID0gMjdlMyxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yLFxuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IG5hdmlnYXRvciAmJiBcImdlb2xvY2F0aW9uXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgbG9jYXRlZEF0ID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICBjb25zdCBjb29yZHMgPSB2dWVEZW1pLnJlZih7XG4gICAgYWNjdXJhY3k6IDAsXG4gICAgbGF0aXR1ZGU6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBsb25naXR1ZGU6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBhbHRpdHVkZTogbnVsbCxcbiAgICBhbHRpdHVkZUFjY3VyYWN5OiBudWxsLFxuICAgIGhlYWRpbmc6IG51bGwsXG4gICAgc3BlZWQ6IG51bGxcbiAgfSk7XG4gIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgbG9jYXRlZEF0LnZhbHVlID0gcG9zaXRpb24udGltZXN0YW1wO1xuICAgIGNvb3Jkcy52YWx1ZSA9IHBvc2l0aW9uLmNvb3JkcztcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gIH1cbiAgbGV0IHdhdGNoZXI7XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUpIHtcbiAgICAgIHdhdGNoZXIgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihcbiAgICAgICAgdXBkYXRlUG9zaXRpb24sXG4gICAgICAgIChlcnIpID0+IGVycm9yLnZhbHVlID0gZXJyLFxuICAgICAgICB7XG4gICAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5LFxuICAgICAgICAgIG1heGltdW1BZ2UsXG4gICAgICAgICAgdGltZW91dFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAoaW1tZWRpYXRlKVxuICAgIHJlc3VtZSgpO1xuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpZiAod2F0Y2hlciAmJiBuYXZpZ2F0b3IpXG4gICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh3YXRjaGVyKTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIHBhdXNlKCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNvb3JkcyxcbiAgICBsb2NhdGVkQXQsXG4gICAgZXJyb3IsXG4gICAgcmVzdW1lLFxuICAgIHBhdXNlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRFdmVudHMkMSA9IFtcIm1vdXNlbW92ZVwiLCBcIm1vdXNlZG93blwiLCBcInJlc2l6ZVwiLCBcImtleWRvd25cIiwgXCJ0b3VjaHN0YXJ0XCIsIFwid2hlZWxcIl07XG5jb25zdCBvbmVNaW51dGUgPSA2ZTQ7XG5mdW5jdGlvbiB1c2VJZGxlKHRpbWVvdXQgPSBvbmVNaW51dGUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW5pdGlhbFN0YXRlID0gZmFsc2UsXG4gICAgbGlzdGVuRm9yVmlzaWJpbGl0eUNoYW5nZSA9IHRydWUsXG4gICAgZXZlbnRzID0gZGVmYXVsdEV2ZW50cyQxLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIgPSBzaGFyZWQudGhyb3R0bGVGaWx0ZXIoNTApXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZGxlID0gdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgY29uc3QgbGFzdEFjdGl2ZSA9IHZ1ZURlbWkucmVmKHNoYXJlZC50aW1lc3RhbXAoKSk7XG4gIGxldCB0aW1lcjtcbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgaWRsZS52YWx1ZSA9IGZhbHNlO1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGlkbGUudmFsdWUgPSB0cnVlLCB0aW1lb3V0KTtcbiAgfTtcbiAgY29uc3Qgb25FdmVudCA9IHNoYXJlZC5jcmVhdGVGaWx0ZXJXcmFwcGVyKFxuICAgIGV2ZW50RmlsdGVyLFxuICAgICgpID0+IHtcbiAgICAgIGxhc3RBY3RpdmUudmFsdWUgPSBzaGFyZWQudGltZXN0YW1wKCk7XG4gICAgICByZXNldCgpO1xuICAgIH1cbiAgKTtcbiAgaWYgKHdpbmRvdykge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKVxuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIGV2ZW50LCBvbkV2ZW50LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgaWYgKGxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIGlmICghZG9jdW1lbnQuaGlkZGVuKVxuICAgICAgICAgIG9uRXZlbnQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXNldCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaWRsZSxcbiAgICBsYXN0QWN0aXZlLFxuICAgIHJlc2V0XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFnZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgY29uc3QgeyBzcmMsIHNyY3NldCwgc2l6ZXMsIGNsYXNzOiBjbGF6eiwgbG9hZGluZywgY3Jvc3NvcmlnaW4sIHJlZmVycmVyUG9saWN5IH0gPSBvcHRpb25zO1xuICAgIGltZy5zcmMgPSBzcmM7XG4gICAgaWYgKHNyY3NldClcbiAgICAgIGltZy5zcmNzZXQgPSBzcmNzZXQ7XG4gICAgaWYgKHNpemVzKVxuICAgICAgaW1nLnNpemVzID0gc2l6ZXM7XG4gICAgaWYgKGNsYXp6KVxuICAgICAgaW1nLmNsYXNzTmFtZSA9IGNsYXp6O1xuICAgIGlmIChsb2FkaW5nKVxuICAgICAgaW1nLmxvYWRpbmcgPSBsb2FkaW5nO1xuICAgIGlmIChjcm9zc29yaWdpbilcbiAgICAgIGltZy5jcm9zc09yaWdpbiA9IGNyb3Nzb3JpZ2luO1xuICAgIGlmIChyZWZlcnJlclBvbGljeSlcbiAgICAgIGltZy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5O1xuICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKGltZyk7XG4gICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlSW1hZ2Uob3B0aW9ucywgYXN5bmNTdGF0ZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBzdGF0ZSA9IHVzZUFzeW5jU3RhdGUoXG4gICAgKCkgPT4gbG9hZEltYWdlKHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMpKSxcbiAgICB2b2lkIDAsXG4gICAge1xuICAgICAgcmVzZXRPbkV4ZWN1dGU6IHRydWUsXG4gICAgICAuLi5hc3luY1N0YXRlT3B0aW9uc1xuICAgIH1cbiAgKTtcbiAgdnVlRGVtaS53YXRjaChcbiAgICAoKSA9PiBzaGFyZWQudG9WYWx1ZShvcHRpb25zKSxcbiAgICAoKSA9PiBzdGF0ZS5leGVjdXRlKGFzeW5jU3RhdGVPcHRpb25zLmRlbGF5KSxcbiAgICB7IGRlZXA6IHRydWUgfVxuICApO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVFbGVtZW50KGVsKSB7XG4gIGlmICh0eXBlb2YgV2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIGVsIGluc3RhbmNlb2YgV2luZG93KVxuICAgIHJldHVybiBlbC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGlmICh0eXBlb2YgRG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgZWwgaW5zdGFuY2VvZiBEb2N1bWVudClcbiAgICByZXR1cm4gZWwuZG9jdW1lbnRFbGVtZW50O1xuICByZXR1cm4gZWw7XG59XG5cbmNvbnN0IEFSUklWRURfU1RBVEVfVEhSRVNIT0xEX1BJWEVMUyA9IDE7XG5mdW5jdGlvbiB1c2VTY3JvbGwoZWxlbWVudCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aHJvdHRsZSA9IDAsXG4gICAgaWRsZSA9IDIwMCxcbiAgICBvblN0b3AgPSBzaGFyZWQubm9vcCxcbiAgICBvblNjcm9sbCA9IHNoYXJlZC5ub29wLFxuICAgIG9mZnNldCA9IHtcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMFxuICAgIH0sXG4gICAgZXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9LFxuICAgIGJlaGF2aW9yID0gXCJhdXRvXCIsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBvbkVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaW50ZXJuYWxYID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGludGVybmFsWSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB4ID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIGludGVybmFsWC52YWx1ZTtcbiAgICB9LFxuICAgIHNldCh4Mikge1xuICAgICAgc2Nyb2xsVG8oeDIsIHZvaWQgMCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBpbnRlcm5hbFkudmFsdWU7XG4gICAgfSxcbiAgICBzZXQoeTIpIHtcbiAgICAgIHNjcm9sbFRvKHZvaWQgMCwgeTIpO1xuICAgIH1cbiAgfSk7XG4gIGZ1bmN0aW9uIHNjcm9sbFRvKF94LCBfeSkge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBfZWxlbWVudCA9IHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpO1xuICAgIGlmICghX2VsZW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgKF9jID0gX2VsZW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudCA/IHdpbmRvdy5kb2N1bWVudC5ib2R5IDogX2VsZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYy5zY3JvbGxUbyh7XG4gICAgICB0b3A6IChfYSA9IHNoYXJlZC50b1ZhbHVlKF95KSkgIT0gbnVsbCA/IF9hIDogeS52YWx1ZSxcbiAgICAgIGxlZnQ6IChfYiA9IHNoYXJlZC50b1ZhbHVlKF94KSkgIT0gbnVsbCA/IF9iIDogeC52YWx1ZSxcbiAgICAgIGJlaGF2aW9yOiBzaGFyZWQudG9WYWx1ZShiZWhhdmlvcilcbiAgICB9KTtcbiAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSAoKF9kID0gX2VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2QuZG9jdW1lbnRFbGVtZW50KSB8fCAoX2VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50LmRvY3VtZW50RWxlbWVudCkgfHwgX2VsZW1lbnQ7XG4gICAgaWYgKHggIT0gbnVsbClcbiAgICAgIGludGVybmFsWC52YWx1ZSA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgIGlmICh5ICE9IG51bGwpXG4gICAgICBpbnRlcm5hbFkudmFsdWUgPSBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuICB9XG4gIGNvbnN0IGlzU2Nyb2xsaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBhcnJpdmVkU3RhdGUgPSB2dWVEZW1pLnJlYWN0aXZlKHtcbiAgICBsZWZ0OiB0cnVlLFxuICAgIHJpZ2h0OiBmYWxzZSxcbiAgICB0b3A6IHRydWUsXG4gICAgYm90dG9tOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgZGlyZWN0aW9ucyA9IHZ1ZURlbWkucmVhY3RpdmUoe1xuICAgIGxlZnQ6IGZhbHNlLFxuICAgIHJpZ2h0OiBmYWxzZSxcbiAgICB0b3A6IGZhbHNlLFxuICAgIGJvdHRvbTogZmFsc2VcbiAgfSk7XG4gIGNvbnN0IG9uU2Nyb2xsRW5kID0gKGUpID0+IHtcbiAgICBpZiAoIWlzU2Nyb2xsaW5nLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlzU2Nyb2xsaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgZGlyZWN0aW9ucy5sZWZ0ID0gZmFsc2U7XG4gICAgZGlyZWN0aW9ucy5yaWdodCA9IGZhbHNlO1xuICAgIGRpcmVjdGlvbnMudG9wID0gZmFsc2U7XG4gICAgZGlyZWN0aW9ucy5ib3R0b20gPSBmYWxzZTtcbiAgICBvblN0b3AoZSk7XG4gIH07XG4gIGNvbnN0IG9uU2Nyb2xsRW5kRGVib3VuY2VkID0gc2hhcmVkLnVzZURlYm91bmNlRm4ob25TY3JvbGxFbmQsIHRocm90dGxlICsgaWRsZSk7XG4gIGNvbnN0IHNldEFycml2ZWRTdGF0ZSA9ICh0YXJnZXQpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCF3aW5kb3cpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZWwgPSAoKF9hID0gdGFyZ2V0ID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kb2N1bWVudEVsZW1lbnQpIHx8ICh0YXJnZXQgPT0gbnVsbCA/IHZvaWQgMCA6IHRhcmdldC5kb2N1bWVudEVsZW1lbnQpIHx8IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgIGNvbnN0IHsgZGlzcGxheSwgZmxleERpcmVjdGlvbiB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGVsLnNjcm9sbExlZnQ7XG4gICAgZGlyZWN0aW9ucy5sZWZ0ID0gc2Nyb2xsTGVmdCA8IGludGVybmFsWC52YWx1ZTtcbiAgICBkaXJlY3Rpb25zLnJpZ2h0ID0gc2Nyb2xsTGVmdCA+IGludGVybmFsWC52YWx1ZTtcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5hYnMoc2Nyb2xsTGVmdCkgPD0gKG9mZnNldC5sZWZ0IHx8IDApO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMoc2Nyb2xsTGVmdCkgKyBlbC5jbGllbnRXaWR0aCA+PSBlbC5zY3JvbGxXaWR0aCAtIChvZmZzZXQucmlnaHQgfHwgMCkgLSBBUlJJVkVEX1NUQVRFX1RIUkVTSE9MRF9QSVhFTFM7XG4gICAgaWYgKGRpc3BsYXkgPT09IFwiZmxleFwiICYmIGZsZXhEaXJlY3Rpb24gPT09IFwicm93LXJldmVyc2VcIikge1xuICAgICAgYXJyaXZlZFN0YXRlLmxlZnQgPSByaWdodDtcbiAgICAgIGFycml2ZWRTdGF0ZS5yaWdodCA9IGxlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycml2ZWRTdGF0ZS5sZWZ0ID0gbGVmdDtcbiAgICAgIGFycml2ZWRTdGF0ZS5yaWdodCA9IHJpZ2h0O1xuICAgIH1cbiAgICBpbnRlcm5hbFgudmFsdWUgPSBzY3JvbGxMZWZ0O1xuICAgIGxldCBzY3JvbGxUb3AgPSBlbC5zY3JvbGxUb3A7XG4gICAgaWYgKHRhcmdldCA9PT0gd2luZG93LmRvY3VtZW50ICYmICFzY3JvbGxUb3ApXG4gICAgICBzY3JvbGxUb3AgPSB3aW5kb3cuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7XG4gICAgZGlyZWN0aW9ucy50b3AgPSBzY3JvbGxUb3AgPCBpbnRlcm5hbFkudmFsdWU7XG4gICAgZGlyZWN0aW9ucy5ib3R0b20gPSBzY3JvbGxUb3AgPiBpbnRlcm5hbFkudmFsdWU7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMoc2Nyb2xsVG9wKSA8PSAob2Zmc2V0LnRvcCB8fCAwKTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhzY3JvbGxUb3ApICsgZWwuY2xpZW50SGVpZ2h0ID49IGVsLnNjcm9sbEhlaWdodCAtIChvZmZzZXQuYm90dG9tIHx8IDApIC0gQVJSSVZFRF9TVEFURV9USFJFU0hPTERfUElYRUxTO1xuICAgIGlmIChkaXNwbGF5ID09PSBcImZsZXhcIiAmJiBmbGV4RGlyZWN0aW9uID09PSBcImNvbHVtbi1yZXZlcnNlXCIpIHtcbiAgICAgIGFycml2ZWRTdGF0ZS50b3AgPSBib3R0b207XG4gICAgICBhcnJpdmVkU3RhdGUuYm90dG9tID0gdG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnJpdmVkU3RhdGUudG9wID0gdG9wO1xuICAgICAgYXJyaXZlZFN0YXRlLmJvdHRvbSA9IGJvdHRvbTtcbiAgICB9XG4gICAgaW50ZXJuYWxZLnZhbHVlID0gc2Nyb2xsVG9wO1xuICB9O1xuICBjb25zdCBvblNjcm9sbEhhbmRsZXIgPSAoZSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IChfYSA9IGUudGFyZ2V0LmRvY3VtZW50RWxlbWVudCkgIT0gbnVsbCA/IF9hIDogZS50YXJnZXQ7XG4gICAgc2V0QXJyaXZlZFN0YXRlKGV2ZW50VGFyZ2V0KTtcbiAgICBpc1Njcm9sbGluZy52YWx1ZSA9IHRydWU7XG4gICAgb25TY3JvbGxFbmREZWJvdW5jZWQoZSk7XG4gICAgb25TY3JvbGwoZSk7XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIoXG4gICAgZWxlbWVudCxcbiAgICBcInNjcm9sbFwiLFxuICAgIHRocm90dGxlID8gc2hhcmVkLnVzZVRocm90dGxlRm4ob25TY3JvbGxIYW5kbGVyLCB0aHJvdHRsZSwgdHJ1ZSwgZmFsc2UpIDogb25TY3JvbGxIYW5kbGVyLFxuICAgIGV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfZWxlbWVudCA9IHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpO1xuICAgICAgaWYgKCFfZWxlbWVudClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgc2V0QXJyaXZlZFN0YXRlKF9lbGVtZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXG4gICAgZWxlbWVudCxcbiAgICBcInNjcm9sbGVuZFwiLFxuICAgIG9uU2Nyb2xsRW5kLFxuICAgIGV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIGlzU2Nyb2xsaW5nLFxuICAgIGFycml2ZWRTdGF0ZSxcbiAgICBkaXJlY3Rpb25zLFxuICAgIG1lYXN1cmUoKSB7XG4gICAgICBjb25zdCBfZWxlbWVudCA9IHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpO1xuICAgICAgaWYgKHdpbmRvdyAmJiBfZWxlbWVudClcbiAgICAgICAgc2V0QXJyaXZlZFN0YXRlKF9lbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUluZmluaXRlU2Nyb2xsKGVsZW1lbnQsIG9uTG9hZE1vcmUsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb24gPSBcImJvdHRvbVwiLFxuICAgIGludGVydmFsID0gMTAwLFxuICAgIGNhbkxvYWRNb3JlID0gKCkgPT4gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlYWN0aXZlKHVzZVNjcm9sbChcbiAgICBlbGVtZW50LFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBvZmZzZXQ6IHtcbiAgICAgICAgW2RpcmVjdGlvbl06IChfYSA9IG9wdGlvbnMuZGlzdGFuY2UpICE9IG51bGwgPyBfYSA6IDAsXG4gICAgICAgIC4uLm9wdGlvbnMub2Zmc2V0XG4gICAgICB9XG4gICAgfVxuICApKTtcbiAgY29uc3QgcHJvbWlzZSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGlzTG9hZGluZyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gISFwcm9taXNlLnZhbHVlKTtcbiAgY29uc3Qgb2JzZXJ2ZWRFbGVtZW50ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHJlc29sdmVFbGVtZW50KHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpKTtcbiAgfSk7XG4gIGNvbnN0IGlzRWxlbWVudFZpc2libGUgPSB1c2VFbGVtZW50VmlzaWJpbGl0eShvYnNlcnZlZEVsZW1lbnQpO1xuICBmdW5jdGlvbiBjaGVja0FuZExvYWQoKSB7XG4gICAgc3RhdGUubWVhc3VyZSgpO1xuICAgIGlmICghb2JzZXJ2ZWRFbGVtZW50LnZhbHVlIHx8ICFpc0VsZW1lbnRWaXNpYmxlLnZhbHVlIHx8ICFjYW5Mb2FkTW9yZShvYnNlcnZlZEVsZW1lbnQudmFsdWUpKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCB9ID0gb2JzZXJ2ZWRFbGVtZW50LnZhbHVlO1xuICAgIGNvbnN0IGlzTmFycm93ZXIgPSBkaXJlY3Rpb24gPT09IFwiYm90dG9tXCIgfHwgZGlyZWN0aW9uID09PSBcInRvcFwiID8gc2Nyb2xsSGVpZ2h0IDw9IGNsaWVudEhlaWdodCA6IHNjcm9sbFdpZHRoIDw9IGNsaWVudFdpZHRoO1xuICAgIGlmIChzdGF0ZS5hcnJpdmVkU3RhdGVbZGlyZWN0aW9uXSB8fCBpc05hcnJvd2VyKSB7XG4gICAgICBpZiAoIXByb21pc2UudmFsdWUpIHtcbiAgICAgICAgcHJvbWlzZS52YWx1ZSA9IFByb21pc2UuYWxsKFtcbiAgICAgICAgICBvbkxvYWRNb3JlKHN0YXRlKSxcbiAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBpbnRlcnZhbCkpXG4gICAgICAgIF0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHByb21pc2UudmFsdWUgPSBudWxsO1xuICAgICAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gY2hlY2tBbmRMb2FkKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3Qgc3RvcCA9IHZ1ZURlbWkud2F0Y2goXG4gICAgKCkgPT4gW3N0YXRlLmFycml2ZWRTdGF0ZVtkaXJlY3Rpb25dLCBpc0VsZW1lbnRWaXNpYmxlLnZhbHVlXSxcbiAgICBjaGVja0FuZExvYWQsXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuICBzaGFyZWQudHJ5T25Vbm1vdW50ZWQoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNMb2FkaW5nLFxuICAgIHJlc2V0KCkge1xuICAgICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiBjaGVja0FuZExvYWQoKSk7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0RXZlbnRzID0gW1wibW91c2Vkb3duXCIsIFwibW91c2V1cFwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiXTtcbmZ1bmN0aW9uIHVzZUtleU1vZGlmaWVyKG1vZGlmaWVyLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGV2ZW50cyA9IGRlZmF1bHRFdmVudHMsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgaW5pdGlhbCA9IG51bGxcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYoaW5pdGlhbCk7XG4gIGlmIChkb2N1bWVudCkge1xuICAgIGV2ZW50cy5mb3JFYWNoKChsaXN0ZW5lckV2ZW50KSA9PiB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBsaXN0ZW5lckV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZXZ0LmdldE1vZGlmaWVyU3RhdGUgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IGV2dC5nZXRNb2RpZmllclN0YXRlKG1vZGlmaWVyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlTG9jYWxTdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICByZXR1cm4gdXNlU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubG9jYWxTdG9yYWdlLCBvcHRpb25zKTtcbn1cblxuY29uc3QgRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwID0ge1xuICBjdHJsOiBcImNvbnRyb2xcIixcbiAgY29tbWFuZDogXCJtZXRhXCIsXG4gIGNtZDogXCJtZXRhXCIsXG4gIG9wdGlvbjogXCJhbHRcIixcbiAgdXA6IFwiYXJyb3d1cFwiLFxuICBkb3duOiBcImFycm93ZG93blwiLFxuICBsZWZ0OiBcImFycm93bGVmdFwiLFxuICByaWdodDogXCJhcnJvd3JpZ2h0XCJcbn07XG5cbmZ1bmN0aW9uIHVzZU1hZ2ljS2V5cyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJlYWN0aXZlOiB1c2VSZWFjdGl2ZSA9IGZhbHNlLFxuICAgIHRhcmdldCA9IGRlZmF1bHRXaW5kb3csXG4gICAgYWxpYXNNYXAgPSBEZWZhdWx0TWFnaWNLZXlzQWxpYXNNYXAsXG4gICAgcGFzc2l2ZSA9IHRydWUsXG4gICAgb25FdmVudEZpcmVkID0gc2hhcmVkLm5vb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLnJlYWN0aXZlKC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpO1xuICBjb25zdCBvYmogPSB7XG4gICAgdG9KU09OKCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgY3VycmVudFxuICB9O1xuICBjb25zdCByZWZzID0gdXNlUmVhY3RpdmUgPyB2dWVEZW1pLnJlYWN0aXZlKG9iaikgOiBvYmo7XG4gIGNvbnN0IG1ldGFEZXBzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3QgdXNlZEtleXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBmdW5jdGlvbiBzZXRSZWZzKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJlZnMpIHtcbiAgICAgIGlmICh1c2VSZWFjdGl2ZSlcbiAgICAgICAgcmVmc1trZXldID0gdmFsdWU7XG4gICAgICBlbHNlXG4gICAgICAgIHJlZnNba2V5XS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBjdXJyZW50LmNsZWFyKCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdXNlZEtleXMpXG4gICAgICBzZXRSZWZzKGtleSwgZmFsc2UpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVJlZnMoZSwgdmFsdWUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGtleSA9IChfYSA9IGUua2V5KSA9PSBudWxsID8gdm9pZCAwIDogX2EudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb2RlID0gKF9iID0gZS5jb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX2IudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBbY29kZSwga2V5XS5maWx0ZXIoQm9vbGVhbik7XG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHZhbHVlKVxuICAgICAgICBjdXJyZW50LmFkZChrZXkpO1xuICAgICAgZWxzZVxuICAgICAgICBjdXJyZW50LmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleTIgb2YgdmFsdWVzKSB7XG4gICAgICB1c2VkS2V5cy5hZGQoa2V5Mik7XG4gICAgICBzZXRSZWZzKGtleTIsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gXCJtZXRhXCIgJiYgIXZhbHVlKSB7XG4gICAgICBtZXRhRGVwcy5mb3JFYWNoKChrZXkyKSA9PiB7XG4gICAgICAgIGN1cnJlbnQuZGVsZXRlKGtleTIpO1xuICAgICAgICBzZXRSZWZzKGtleTIsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgbWV0YURlcHMuY2xlYXIoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlLmdldE1vZGlmaWVyU3RhdGUgPT09IFwiZnVuY3Rpb25cIiAmJiBlLmdldE1vZGlmaWVyU3RhdGUoXCJNZXRhXCIpICYmIHZhbHVlKSB7XG4gICAgICBbLi4uY3VycmVudCwgLi4udmFsdWVzXS5mb3JFYWNoKChrZXkyKSA9PiBtZXRhRGVwcy5hZGQoa2V5MikpO1xuICAgIH1cbiAgfVxuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJrZXlkb3duXCIsIChlKSA9PiB7XG4gICAgdXBkYXRlUmVmcyhlLCB0cnVlKTtcbiAgICByZXR1cm4gb25FdmVudEZpcmVkKGUpO1xuICB9LCB7IHBhc3NpdmUgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImtleXVwXCIsIChlKSA9PiB7XG4gICAgdXBkYXRlUmVmcyhlLCBmYWxzZSk7XG4gICAgcmV0dXJuIG9uRXZlbnRGaXJlZChlKTtcbiAgfSwgeyBwYXNzaXZlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKFwiYmx1clwiLCByZXNldCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgcmVzZXQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoXG4gICAgcmVmcyxcbiAgICB7XG4gICAgICBnZXQodGFyZ2V0MiwgcHJvcCwgcmVjKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0MiwgcHJvcCwgcmVjKTtcbiAgICAgICAgcHJvcCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHByb3AgaW4gYWxpYXNNYXApXG4gICAgICAgICAgcHJvcCA9IGFsaWFzTWFwW3Byb3BdO1xuICAgICAgICBpZiAoIShwcm9wIGluIHJlZnMpKSB7XG4gICAgICAgICAgaWYgKC9bK18tXS8udGVzdChwcm9wKSkge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IHByb3Auc3BsaXQoL1srXy1dL2cpLm1hcCgoaSkgPT4gaS50cmltKCkpO1xuICAgICAgICAgICAgcmVmc1twcm9wXSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ga2V5cy5ldmVyeSgoa2V5KSA9PiBzaGFyZWQudG9WYWx1ZShwcm94eVtrZXldKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWZzW3Byb3BdID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gUmVmbGVjdC5nZXQodGFyZ2V0MiwgcHJvcCwgcmVjKTtcbiAgICAgICAgcmV0dXJuIHVzZVJlYWN0aXZlID8gc2hhcmVkLnRvVmFsdWUocikgOiByO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHByb3h5O1xufVxuXG5mdW5jdGlvbiB1c2luZ0VsUmVmKHNvdXJjZSwgY2IpIHtcbiAgaWYgKHNoYXJlZC50b1ZhbHVlKHNvdXJjZSkpXG4gICAgY2Ioc2hhcmVkLnRvVmFsdWUoc291cmNlKSk7XG59XG5mdW5jdGlvbiB0aW1lUmFuZ2VUb0FycmF5KHRpbWVSYW5nZXMpIHtcbiAgbGV0IHJhbmdlcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoOyArK2kpXG4gICAgcmFuZ2VzID0gWy4uLnJhbmdlcywgW3RpbWVSYW5nZXMuc3RhcnQoaSksIHRpbWVSYW5nZXMuZW5kKGkpXV07XG4gIHJldHVybiByYW5nZXM7XG59XG5mdW5jdGlvbiB0cmFja3NUb0FycmF5KHRyYWNrcykge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0cmFja3MpLm1hcCgoeyBsYWJlbCwga2luZCwgbGFuZ3VhZ2UsIG1vZGUsIGFjdGl2ZUN1ZXMsIGN1ZXMsIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUgfSwgaWQpID0+ICh7IGlkLCBsYWJlbCwga2luZCwgbGFuZ3VhZ2UsIG1vZGUsIGFjdGl2ZUN1ZXMsIGN1ZXMsIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUgfSkpO1xufVxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHNyYzogXCJcIixcbiAgdHJhY2tzOiBbXVxufTtcbmZ1bmN0aW9uIHVzZU1lZGlhQ29udHJvbHModGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgdGFyZ2V0ID0gc2hhcmVkLnRvUmVmKHRhcmdldCk7XG4gIG9wdGlvbnMgPSB7XG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGR1cmF0aW9uID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHNlZWtpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHZvbHVtZSA9IHZ1ZURlbWkucmVmKDEpO1xuICBjb25zdCB3YWl0aW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBlbmRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgcGxheWluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgcmF0ZSA9IHZ1ZURlbWkucmVmKDEpO1xuICBjb25zdCBzdGFsbGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBidWZmZXJlZCA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3QgdHJhY2tzID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBzZWxlY3RlZFRyYWNrID0gdnVlRGVtaS5yZWYoLTEpO1xuICBjb25zdCBpc1BpY3R1cmVJblBpY3R1cmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IG11dGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUgPSBkb2N1bWVudCAmJiBcInBpY3R1cmVJblBpY3R1cmVFbmFibGVkXCIgaW4gZG9jdW1lbnQ7XG4gIGNvbnN0IHNvdXJjZUVycm9yRXZlbnQgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGRpc2FibGVUcmFjayA9ICh0cmFjaykgPT4ge1xuICAgIHVzaW5nRWxSZWYodGFyZ2V0LCAoZWwpID0+IHtcbiAgICAgIGlmICh0cmFjaykge1xuICAgICAgICBjb25zdCBpZCA9IHR5cGVvZiB0cmFjayA9PT0gXCJudW1iZXJcIiA/IHRyYWNrIDogdHJhY2suaWQ7XG4gICAgICAgIGVsLnRleHRUcmFja3NbaWRdLm1vZGUgPSBcImRpc2FibGVkXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsLnRleHRUcmFja3MubGVuZ3RoOyArK2kpXG4gICAgICAgICAgZWwudGV4dFRyYWNrc1tpXS5tb2RlID0gXCJkaXNhYmxlZFwiO1xuICAgICAgfVxuICAgICAgc2VsZWN0ZWRUcmFjay52YWx1ZSA9IC0xO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBlbmFibGVUcmFjayA9ICh0cmFjaywgZGlzYWJsZVRyYWNrcyA9IHRydWUpID0+IHtcbiAgICB1c2luZ0VsUmVmKHRhcmdldCwgKGVsKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHR5cGVvZiB0cmFjayA9PT0gXCJudW1iZXJcIiA/IHRyYWNrIDogdHJhY2suaWQ7XG4gICAgICBpZiAoZGlzYWJsZVRyYWNrcylcbiAgICAgICAgZGlzYWJsZVRyYWNrKCk7XG4gICAgICBlbC50ZXh0VHJhY2tzW2lkXS5tb2RlID0gXCJzaG93aW5nXCI7XG4gICAgICBzZWxlY3RlZFRyYWNrLnZhbHVlID0gaWQ7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZVBpY3R1cmVJblBpY3R1cmUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHVzaW5nRWxSZWYodGFyZ2V0LCBhc3luYyAoZWwpID0+IHtcbiAgICAgICAgaWYgKHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSkge1xuICAgICAgICAgIGlmICghaXNQaWN0dXJlSW5QaWN0dXJlLnZhbHVlKSB7XG4gICAgICAgICAgICBlbC5yZXF1ZXN0UGljdHVyZUluUGljdHVyZSgpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuZXhpdFBpY3R1cmVJblBpY3R1cmUoKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBzcmMgPSBzaGFyZWQudG9WYWx1ZShvcHRpb25zLnNyYyk7XG4gICAgbGV0IHNvdXJjZXMgPSBbXTtcbiAgICBpZiAoIXNyYylcbiAgICAgIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHNyYyA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHNvdXJjZXMgPSBbeyBzcmMgfV07XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzcmMpKVxuICAgICAgc291cmNlcyA9IHNyYztcbiAgICBlbHNlIGlmIChzaGFyZWQuaXNPYmplY3Qoc3JjKSlcbiAgICAgIHNvdXJjZXMgPSBbc3JjXTtcbiAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKFwic291cmNlXCIpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHNvdXJjZUVycm9yRXZlbnQudHJpZ2dlcik7XG4gICAgICBlLnJlbW92ZSgpO1xuICAgIH0pO1xuICAgIHNvdXJjZXMuZm9yRWFjaCgoeyBzcmM6IHNyYzIsIHR5cGUgfSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiKTtcbiAgICAgIHNvdXJjZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgc3JjMik7XG4gICAgICBzb3VyY2Uuc2V0QXR0cmlidXRlKFwidHlwZVwiLCB0eXBlIHx8IFwiXCIpO1xuICAgICAgc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBzb3VyY2VFcnJvckV2ZW50LnRyaWdnZXIpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQoc291cmNlKTtcbiAgICB9KTtcbiAgICBlbC5sb2FkKCk7XG4gIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzb3VyY2VcIikuZm9yRWFjaCgoZSkgPT4gZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgc291cmNlRXJyb3JFdmVudC50cmlnZ2VyKSk7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKFt0YXJnZXQsIHZvbHVtZV0sICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC52b2x1bWUgPSB2b2x1bWUudmFsdWU7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKFt0YXJnZXQsIG11dGVkXSwgKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLm11dGVkID0gbXV0ZWQudmFsdWU7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKFt0YXJnZXQsIHJhdGVdLCAoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwucGxheWJhY2tSYXRlID0gcmF0ZS52YWx1ZTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgdGV4dFRyYWNrcyA9IHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMudHJhY2tzKTtcbiAgICBjb25zdCBlbCA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgaWYgKCF0ZXh0VHJhY2tzIHx8ICF0ZXh0VHJhY2tzLmxlbmd0aCB8fCAhZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwucXVlcnlTZWxlY3RvckFsbChcInRyYWNrXCIpLmZvckVhY2goKGUpID0+IGUucmVtb3ZlKCkpO1xuICAgIHRleHRUcmFja3MuZm9yRWFjaCgoeyBkZWZhdWx0OiBpc0RlZmF1bHQsIGtpbmQsIGxhYmVsLCBzcmMsIHNyY0xhbmcgfSwgaSkgPT4ge1xuICAgICAgY29uc3QgdHJhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidHJhY2tcIik7XG4gICAgICB0cmFjay5kZWZhdWx0ID0gaXNEZWZhdWx0IHx8IGZhbHNlO1xuICAgICAgdHJhY2sua2luZCA9IGtpbmQ7XG4gICAgICB0cmFjay5sYWJlbCA9IGxhYmVsO1xuICAgICAgdHJhY2suc3JjID0gc3JjO1xuICAgICAgdHJhY2suc3JjbGFuZyA9IHNyY0xhbmc7XG4gICAgICBpZiAodHJhY2suZGVmYXVsdClcbiAgICAgICAgc2VsZWN0ZWRUcmFjay52YWx1ZSA9IGk7XG4gICAgICBlbC5hcHBlbmRDaGlsZCh0cmFjayk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCB7IGlnbm9yZVVwZGF0ZXM6IGlnbm9yZUN1cnJlbnRUaW1lVXBkYXRlcyB9ID0gc2hhcmVkLndhdGNoSWdub3JhYmxlKGN1cnJlbnRUaW1lLCAodGltZSkgPT4ge1xuICAgIGNvbnN0IGVsID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLmN1cnJlbnRUaW1lID0gdGltZTtcbiAgfSk7XG4gIGNvbnN0IHsgaWdub3JlVXBkYXRlczogaWdub3JlUGxheWluZ1VwZGF0ZXMgfSA9IHNoYXJlZC53YXRjaElnbm9yYWJsZShwbGF5aW5nLCAoaXNQbGF5aW5nKSA9PiB7XG4gICAgY29uc3QgZWwgPSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGlzUGxheWluZylcbiAgICAgIGVsLnBsYXkoKTtcbiAgICBlbHNlXG4gICAgICBlbC5wYXVzZSgpO1xuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidGltZXVwZGF0ZVwiLCAoKSA9PiBpZ25vcmVDdXJyZW50VGltZVVwZGF0ZXMoKCkgPT4gY3VycmVudFRpbWUudmFsdWUgPSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpLmN1cnJlbnRUaW1lKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImR1cmF0aW9uY2hhbmdlXCIsICgpID0+IGR1cmF0aW9uLnZhbHVlID0gc2hhcmVkLnRvVmFsdWUodGFyZ2V0KS5kdXJhdGlvbik7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInByb2dyZXNzXCIsICgpID0+IGJ1ZmZlcmVkLnZhbHVlID0gdGltZVJhbmdlVG9BcnJheShzaGFyZWQudG9WYWx1ZSh0YXJnZXQpLmJ1ZmZlcmVkKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInNlZWtpbmdcIiwgKCkgPT4gc2Vla2luZy52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJzZWVrZWRcIiwgKCkgPT4gc2Vla2luZy52YWx1ZSA9IGZhbHNlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFtcIndhaXRpbmdcIiwgXCJsb2Fkc3RhcnRcIl0sICgpID0+IHtcbiAgICB3YWl0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gZmFsc2UpO1xuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwibG9hZGVkZGF0YVwiLCAoKSA9PiB3YWl0aW5nLnZhbHVlID0gZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwbGF5aW5nXCIsICgpID0+IHtcbiAgICB3YWl0aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgZW5kZWQudmFsdWUgPSBmYWxzZTtcbiAgICBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gdHJ1ZSk7XG4gIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJyYXRlY2hhbmdlXCIsICgpID0+IHJhdGUudmFsdWUgPSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpLnBsYXliYWNrUmF0ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInN0YWxsZWRcIiwgKCkgPT4gc3RhbGxlZC52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJlbmRlZFwiLCAoKSA9PiBlbmRlZC52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwYXVzZVwiLCAoKSA9PiBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gZmFsc2UpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicGxheVwiLCAoKSA9PiBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gdHJ1ZSkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJlbnRlcnBpY3R1cmVpbnBpY3R1cmVcIiwgKCkgPT4gaXNQaWN0dXJlSW5QaWN0dXJlLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImxlYXZlcGljdHVyZWlucGljdHVyZVwiLCAoKSA9PiBpc1BpY3R1cmVJblBpY3R1cmUudmFsdWUgPSBmYWxzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInZvbHVtZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBzaGFyZWQudG9WYWx1ZSh0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgdm9sdW1lLnZhbHVlID0gZWwudm9sdW1lO1xuICAgIG11dGVkLnZhbHVlID0gZWwubXV0ZWQ7XG4gIH0pO1xuICBjb25zdCBsaXN0ZW5lcnMgPSBbXTtcbiAgY29uc3Qgc3RvcCA9IHZ1ZURlbWkud2F0Y2goW3RhcmdldF0sICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHNoYXJlZC50b1ZhbHVlKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBzdG9wKCk7XG4gICAgbGlzdGVuZXJzWzBdID0gdXNlRXZlbnRMaXN0ZW5lcihlbC50ZXh0VHJhY2tzLCBcImFkZHRyYWNrXCIsICgpID0+IHRyYWNrcy52YWx1ZSA9IHRyYWNrc1RvQXJyYXkoZWwudGV4dFRyYWNrcykpO1xuICAgIGxpc3RlbmVyc1sxXSA9IHVzZUV2ZW50TGlzdGVuZXIoZWwudGV4dFRyYWNrcywgXCJyZW1vdmV0cmFja1wiLCAoKSA9PiB0cmFja3MudmFsdWUgPSB0cmFja3NUb0FycmF5KGVsLnRleHRUcmFja3MpKTtcbiAgICBsaXN0ZW5lcnNbMl0gPSB1c2VFdmVudExpc3RlbmVyKGVsLnRleHRUcmFja3MsIFwiY2hhbmdlXCIsICgpID0+IHRyYWNrcy52YWx1ZSA9IHRyYWNrc1RvQXJyYXkoZWwudGV4dFRyYWNrcykpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSkpO1xuICByZXR1cm4ge1xuICAgIGN1cnJlbnRUaW1lLFxuICAgIGR1cmF0aW9uLFxuICAgIHdhaXRpbmcsXG4gICAgc2Vla2luZyxcbiAgICBlbmRlZCxcbiAgICBzdGFsbGVkLFxuICAgIGJ1ZmZlcmVkLFxuICAgIHBsYXlpbmcsXG4gICAgcmF0ZSxcbiAgICAvLyBWb2x1bWVcbiAgICB2b2x1bWUsXG4gICAgbXV0ZWQsXG4gICAgLy8gVHJhY2tzXG4gICAgdHJhY2tzLFxuICAgIHNlbGVjdGVkVHJhY2ssXG4gICAgZW5hYmxlVHJhY2ssXG4gICAgZGlzYWJsZVRyYWNrLFxuICAgIC8vIFBpY3R1cmUgaW4gUGljdHVyZVxuICAgIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSxcbiAgICB0b2dnbGVQaWN0dXJlSW5QaWN0dXJlLFxuICAgIGlzUGljdHVyZUluUGljdHVyZSxcbiAgICAvLyBFdmVudHNcbiAgICBvblNvdXJjZUVycm9yOiBzb3VyY2VFcnJvckV2ZW50Lm9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldE1hcFZ1ZTJDb21wYXQoKSB7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnNoYWxsb3dSZWFjdGl2ZSh7fSk7XG4gIHJldHVybiB7XG4gICAgZ2V0OiAoa2V5KSA9PiBkYXRhW2tleV0sXG4gICAgc2V0OiAoa2V5LCB2YWx1ZSkgPT4gdnVlRGVtaS5zZXQoZGF0YSwga2V5LCB2YWx1ZSksXG4gICAgaGFzOiAoa2V5KSA9PiBzaGFyZWQuaGFzT3duKGRhdGEsIGtleSksXG4gICAgZGVsZXRlOiAoa2V5KSA9PiB2dWVEZW1pLmRlbChkYXRhLCBrZXkpLFxuICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdnVlRGVtaS5kZWwoZGF0YSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZU1lbW9pemUocmVzb2x2ZXIsIG9wdGlvbnMpIHtcbiAgY29uc3QgaW5pdENhY2hlID0gKCkgPT4ge1xuICAgIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmNhY2hlKVxuICAgICAgcmV0dXJuIHZ1ZURlbWkuc2hhbGxvd1JlYWN0aXZlKG9wdGlvbnMuY2FjaGUpO1xuICAgIGlmICh2dWVEZW1pLmlzVnVlMilcbiAgICAgIHJldHVybiBnZXRNYXBWdWUyQ29tcGF0KCk7XG4gICAgcmV0dXJuIHZ1ZURlbWkuc2hhbGxvd1JlYWN0aXZlKC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpO1xuICB9O1xuICBjb25zdCBjYWNoZSA9IGluaXRDYWNoZSgpO1xuICBjb25zdCBnZW5lcmF0ZUtleSA9ICguLi5hcmdzKSA9PiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5nZXRLZXkpID8gb3B0aW9ucy5nZXRLZXkoLi4uYXJncykgOiBKU09OLnN0cmluZ2lmeShhcmdzKTtcbiAgY29uc3QgX2xvYWREYXRhID0gKGtleSwgLi4uYXJncykgPT4ge1xuICAgIGNhY2hlLnNldChrZXksIHJlc29sdmVyKC4uLmFyZ3MpKTtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gIH07XG4gIGNvbnN0IGxvYWREYXRhID0gKC4uLmFyZ3MpID0+IF9sb2FkRGF0YShnZW5lcmF0ZUtleSguLi5hcmdzKSwgLi4uYXJncyk7XG4gIGNvbnN0IGRlbGV0ZURhdGEgPSAoLi4uYXJncykgPT4ge1xuICAgIGNhY2hlLmRlbGV0ZShnZW5lcmF0ZUtleSguLi5hcmdzKSk7XG4gIH07XG4gIGNvbnN0IGNsZWFyRGF0YSA9ICgpID0+IHtcbiAgICBjYWNoZS5jbGVhcigpO1xuICB9O1xuICBjb25zdCBtZW1vaXplZCA9ICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gZ2VuZXJhdGVLZXkoLi4uYXJncyk7XG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIHJldHVybiBfbG9hZERhdGEoa2V5LCAuLi5hcmdzKTtcbiAgfTtcbiAgbWVtb2l6ZWQubG9hZCA9IGxvYWREYXRhO1xuICBtZW1vaXplZC5kZWxldGUgPSBkZWxldGVEYXRhO1xuICBtZW1vaXplZC5jbGVhciA9IGNsZWFyRGF0YTtcbiAgbWVtb2l6ZWQuZ2VuZXJhdGVLZXkgPSBnZW5lcmF0ZUtleTtcbiAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5mdW5jdGlvbiB1c2VNZW1vcnkob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG1lbW9yeSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBcIm1lbW9yeVwiIGluIHBlcmZvcm1hbmNlKTtcbiAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgY29uc3QgeyBpbnRlcnZhbCA9IDFlMyB9ID0gb3B0aW9ucztcbiAgICBzaGFyZWQudXNlSW50ZXJ2YWxGbigoKSA9PiB7XG4gICAgICBtZW1vcnkudmFsdWUgPSBwZXJmb3JtYW5jZS5tZW1vcnk7XG4gICAgfSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiBvcHRpb25zLmltbWVkaWF0ZSwgaW1tZWRpYXRlQ2FsbGJhY2s6IG9wdGlvbnMuaW1tZWRpYXRlQ2FsbGJhY2sgfSk7XG4gIH1cbiAgcmV0dXJuIHsgaXNTdXBwb3J0ZWQsIG1lbW9yeSB9O1xufVxuXG5jb25zdCBVc2VNb3VzZUJ1aWx0aW5FeHRyYWN0b3JzID0ge1xuICBwYWdlOiAoZXZlbnQpID0+IFtldmVudC5wYWdlWCwgZXZlbnQucGFnZVldLFxuICBjbGllbnQ6IChldmVudCkgPT4gW2V2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFldLFxuICBzY3JlZW46IChldmVudCkgPT4gW2V2ZW50LnNjcmVlblgsIGV2ZW50LnNjcmVlblldLFxuICBtb3ZlbWVudDogKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIFRvdWNoID8gbnVsbCA6IFtldmVudC5tb3ZlbWVudFgsIGV2ZW50Lm1vdmVtZW50WV1cbn07XG5mdW5jdGlvbiB1c2VNb3VzZShvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBcInBhZ2VcIixcbiAgICB0b3VjaCA9IHRydWUsXG4gICAgcmVzZXRPblRvdWNoRW5kcyA9IGZhbHNlLFxuICAgIGluaXRpYWxWYWx1ZSA9IHsgeDogMCwgeTogMCB9LFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgdGFyZ2V0ID0gd2luZG93LFxuICAgIHNjcm9sbCA9IHRydWUsXG4gICAgZXZlbnRGaWx0ZXJcbiAgfSA9IG9wdGlvbnM7XG4gIGxldCBfcHJldk1vdXNlRXZlbnQgPSBudWxsO1xuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlLngpO1xuICBjb25zdCB5ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlLnkpO1xuICBjb25zdCBzb3VyY2VUeXBlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGV4dHJhY3RvciA9IHR5cGVvZiB0eXBlID09PSBcImZ1bmN0aW9uXCIgPyB0eXBlIDogVXNlTW91c2VCdWlsdGluRXh0cmFjdG9yc1t0eXBlXTtcbiAgY29uc3QgbW91c2VIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdG9yKGV2ZW50KTtcbiAgICBfcHJldk1vdXNlRXZlbnQgPSBldmVudDtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBbeC52YWx1ZSwgeS52YWx1ZV0gPSByZXN1bHQ7XG4gICAgICBzb3VyY2VUeXBlLnZhbHVlID0gXCJtb3VzZVwiO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdG91Y2hIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdG9yKGV2ZW50LnRvdWNoZXNbMF0pO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBbeC52YWx1ZSwgeS52YWx1ZV0gPSByZXN1bHQ7XG4gICAgICAgIHNvdXJjZVR5cGUudmFsdWUgPSBcInRvdWNoXCI7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBzY3JvbGxIYW5kbGVyID0gKCkgPT4ge1xuICAgIGlmICghX3ByZXZNb3VzZUV2ZW50IHx8ICF3aW5kb3cpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgcG9zID0gZXh0cmFjdG9yKF9wcmV2TW91c2VFdmVudCk7XG4gICAgaWYgKF9wcmV2TW91c2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgJiYgcG9zKSB7XG4gICAgICB4LnZhbHVlID0gcG9zWzBdICsgd2luZG93LnNjcm9sbFg7XG4gICAgICB5LnZhbHVlID0gcG9zWzFdICsgd2luZG93LnNjcm9sbFk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICB4LnZhbHVlID0gaW5pdGlhbFZhbHVlLng7XG4gICAgeS52YWx1ZSA9IGluaXRpYWxWYWx1ZS55O1xuICB9O1xuICBjb25zdCBtb3VzZUhhbmRsZXJXcmFwcGVyID0gZXZlbnRGaWx0ZXIgPyAoZXZlbnQpID0+IGV2ZW50RmlsdGVyKCgpID0+IG1vdXNlSGFuZGxlcihldmVudCksIHt9KSA6IChldmVudCkgPT4gbW91c2VIYW5kbGVyKGV2ZW50KTtcbiAgY29uc3QgdG91Y2hIYW5kbGVyV3JhcHBlciA9IGV2ZW50RmlsdGVyID8gKGV2ZW50KSA9PiBldmVudEZpbHRlcigoKSA9PiB0b3VjaEhhbmRsZXIoZXZlbnQpLCB7fSkgOiAoZXZlbnQpID0+IHRvdWNoSGFuZGxlcihldmVudCk7XG4gIGNvbnN0IHNjcm9sbEhhbmRsZXJXcmFwcGVyID0gZXZlbnRGaWx0ZXIgPyAoKSA9PiBldmVudEZpbHRlcigoKSA9PiBzY3JvbGxIYW5kbGVyKCksIHt9KSA6ICgpID0+IHNjcm9sbEhhbmRsZXIoKTtcbiAgaWYgKHRhcmdldCkge1xuICAgIGNvbnN0IGxpc3RlbmVyT3B0aW9ucyA9IHsgcGFzc2l2ZTogdHJ1ZSB9O1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBbXCJtb3VzZW1vdmVcIiwgXCJkcmFnb3ZlclwiXSwgbW91c2VIYW5kbGVyV3JhcHBlciwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICBpZiAodG91Y2ggJiYgdHlwZSAhPT0gXCJtb3ZlbWVudFwiKSB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgW1widG91Y2hzdGFydFwiLCBcInRvdWNobW92ZVwiXSwgdG91Y2hIYW5kbGVyV3JhcHBlciwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmIChyZXNldE9uVG91Y2hFbmRzKVxuICAgICAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaGVuZFwiLCByZXNldCwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHNjcm9sbCAmJiB0eXBlID09PSBcInBhZ2VcIilcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInNjcm9sbFwiLCBzY3JvbGxIYW5kbGVyV3JhcHBlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHNvdXJjZVR5cGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTW91c2VJbkVsZW1lbnQodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGhhbmRsZU91dHNpZGUgPSB0cnVlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHR5cGUgPSBvcHRpb25zLnR5cGUgfHwgXCJwYWdlXCI7XG4gIGNvbnN0IHsgeCwgeSwgc291cmNlVHlwZSB9ID0gdXNlTW91c2Uob3B0aW9ucyk7XG4gIGNvbnN0IHRhcmdldFJlZiA9IHZ1ZURlbWkucmVmKHRhcmdldCAhPSBudWxsID8gdGFyZ2V0IDogd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQuYm9keSk7XG4gIGNvbnN0IGVsZW1lbnRYID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRZID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRQb3NpdGlvblggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudFBvc2l0aW9uWSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBpc091dHNpZGUgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgbGV0IHN0b3AgPSAoKSA9PiB7XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICBzdG9wID0gdnVlRGVtaS53YXRjaChcbiAgICAgIFt0YXJnZXRSZWYsIHgsIHldLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXRSZWYpO1xuICAgICAgICBpZiAoIWVsIHx8ICEoZWwgaW5zdGFuY2VvZiBFbGVtZW50KSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBsZWZ0LFxuICAgICAgICAgIHRvcCxcbiAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICBoZWlnaHRcbiAgICAgICAgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBlbGVtZW50UG9zaXRpb25YLnZhbHVlID0gbGVmdCArICh0eXBlID09PSBcInBhZ2VcIiA/IHdpbmRvdy5wYWdlWE9mZnNldCA6IDApO1xuICAgICAgICBlbGVtZW50UG9zaXRpb25ZLnZhbHVlID0gdG9wICsgKHR5cGUgPT09IFwicGFnZVwiID8gd2luZG93LnBhZ2VZT2Zmc2V0IDogMCk7XG4gICAgICAgIGVsZW1lbnRIZWlnaHQudmFsdWUgPSBoZWlnaHQ7XG4gICAgICAgIGVsZW1lbnRXaWR0aC52YWx1ZSA9IHdpZHRoO1xuICAgICAgICBjb25zdCBlbFggPSB4LnZhbHVlIC0gZWxlbWVudFBvc2l0aW9uWC52YWx1ZTtcbiAgICAgICAgY29uc3QgZWxZID0geS52YWx1ZSAtIGVsZW1lbnRQb3NpdGlvblkudmFsdWU7XG4gICAgICAgIGlzT3V0c2lkZS52YWx1ZSA9IHdpZHRoID09PSAwIHx8IGhlaWdodCA9PT0gMCB8fCBlbFggPCAwIHx8IGVsWSA8IDAgfHwgZWxYID4gd2lkdGggfHwgZWxZID4gaGVpZ2h0O1xuICAgICAgICBpZiAoaGFuZGxlT3V0c2lkZSB8fCAhaXNPdXRzaWRlLnZhbHVlKSB7XG4gICAgICAgICAgZWxlbWVudFgudmFsdWUgPSBlbFg7XG4gICAgICAgICAgZWxlbWVudFkudmFsdWUgPSBlbFk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICAgKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcIm1vdXNlbGVhdmVcIiwgKCkgPT4ge1xuICAgICAgaXNPdXRzaWRlLnZhbHVlID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBzb3VyY2VUeXBlLFxuICAgIGVsZW1lbnRYLFxuICAgIGVsZW1lbnRZLFxuICAgIGVsZW1lbnRQb3NpdGlvblgsXG4gICAgZWxlbWVudFBvc2l0aW9uWSxcbiAgICBlbGVtZW50SGVpZ2h0LFxuICAgIGVsZW1lbnRXaWR0aCxcbiAgICBpc091dHNpZGUsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VNb3VzZVByZXNzZWQob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0b3VjaCA9IHRydWUsXG4gICAgZHJhZyA9IHRydWUsXG4gICAgY2FwdHVyZSA9IGZhbHNlLFxuICAgIGluaXRpYWxWYWx1ZSA9IGZhbHNlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByZXNzZWQgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBzb3VyY2VUeXBlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGlmICghd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXNzZWQsXG4gICAgICBzb3VyY2VUeXBlXG4gICAgfTtcbiAgfVxuICBjb25zdCBvblByZXNzZWQgPSAoc3JjVHlwZSkgPT4gKCkgPT4ge1xuICAgIHByZXNzZWQudmFsdWUgPSB0cnVlO1xuICAgIHNvdXJjZVR5cGUudmFsdWUgPSBzcmNUeXBlO1xuICB9O1xuICBjb25zdCBvblJlbGVhc2VkID0gKCkgPT4ge1xuICAgIHByZXNzZWQudmFsdWUgPSBmYWxzZTtcbiAgICBzb3VyY2VUeXBlLnZhbHVlID0gbnVsbDtcbiAgfTtcbiAgY29uc3QgdGFyZ2V0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bnJlZkVsZW1lbnQob3B0aW9ucy50YXJnZXQpIHx8IHdpbmRvdyk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcIm1vdXNlZG93blwiLCBvblByZXNzZWQoXCJtb3VzZVwiKSwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZWxlYXZlXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZSB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibW91c2V1cFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSk7XG4gIGlmIChkcmFnKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJhZ3N0YXJ0XCIsIG9uUHJlc3NlZChcIm1vdXNlXCIpLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZHJvcFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZHJhZ2VuZFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSk7XG4gIH1cbiAgaWYgKHRvdWNoKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2hzdGFydFwiLCBvblByZXNzZWQoXCJ0b3VjaFwiKSwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNoZW5kXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaGNhbmNlbFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcmVzc2VkLFxuICAgIHNvdXJjZVR5cGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTmF2aWdhdG9yTGFuZ3VhZ2Uob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgbmF2aWdhdG9yID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBuYXZpZ2F0b3IgJiYgXCJsYW5ndWFnZVwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IGxhbmd1YWdlID0gdnVlRGVtaS5yZWYobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IubGFuZ3VhZ2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJsYW5ndWFnZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgaWYgKG5hdmlnYXRvcilcbiAgICAgIGxhbmd1YWdlLnZhbHVlID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBsYW5ndWFnZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VOZXR3b3JrKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG5hdmlnYXRvciA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lm5hdmlnYXRvcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gbmF2aWdhdG9yICYmIFwiY29ubmVjdGlvblwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IGlzT25saW5lID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGNvbnN0IHNhdmVEYXRhID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBvZmZsaW5lQXQgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBvbmxpbmVBdCA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IGRvd25saW5rID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgZG93bmxpbmtNYXggPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBydHQgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBlZmZlY3RpdmVUeXBlID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgdHlwZSA9IHZ1ZURlbWkucmVmKFwidW5rbm93blwiKTtcbiAgY29uc3QgY29ubmVjdGlvbiA9IGlzU3VwcG9ydGVkLnZhbHVlICYmIG5hdmlnYXRvci5jb25uZWN0aW9uO1xuICBmdW5jdGlvbiB1cGRhdGVOZXR3b3JrSW5mb3JtYXRpb24oKSB7XG4gICAgaWYgKCFuYXZpZ2F0b3IpXG4gICAgICByZXR1cm47XG4gICAgaXNPbmxpbmUudmFsdWUgPSBuYXZpZ2F0b3Iub25MaW5lO1xuICAgIG9mZmxpbmVBdC52YWx1ZSA9IGlzT25saW5lLnZhbHVlID8gdm9pZCAwIDogRGF0ZS5ub3coKTtcbiAgICBvbmxpbmVBdC52YWx1ZSA9IGlzT25saW5lLnZhbHVlID8gRGF0ZS5ub3coKSA6IHZvaWQgMDtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgZG93bmxpbmsudmFsdWUgPSBjb25uZWN0aW9uLmRvd25saW5rO1xuICAgICAgZG93bmxpbmtNYXgudmFsdWUgPSBjb25uZWN0aW9uLmRvd25saW5rTWF4O1xuICAgICAgZWZmZWN0aXZlVHlwZS52YWx1ZSA9IGNvbm5lY3Rpb24uZWZmZWN0aXZlVHlwZTtcbiAgICAgIHJ0dC52YWx1ZSA9IGNvbm5lY3Rpb24ucnR0O1xuICAgICAgc2F2ZURhdGEudmFsdWUgPSBjb25uZWN0aW9uLnNhdmVEYXRhO1xuICAgICAgdHlwZS52YWx1ZSA9IGNvbm5lY3Rpb24udHlwZTtcbiAgICB9XG4gIH1cbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm9mZmxpbmVcIiwgKCkgPT4ge1xuICAgICAgaXNPbmxpbmUudmFsdWUgPSBmYWxzZTtcbiAgICAgIG9mZmxpbmVBdC52YWx1ZSA9IERhdGUubm93KCk7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwib25saW5lXCIsICgpID0+IHtcbiAgICAgIGlzT25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgIG9ubGluZUF0LnZhbHVlID0gRGF0ZS5ub3coKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoY29ubmVjdGlvbilcbiAgICB1c2VFdmVudExpc3RlbmVyKGNvbm5lY3Rpb24sIFwiY2hhbmdlXCIsIHVwZGF0ZU5ldHdvcmtJbmZvcm1hdGlvbiwgZmFsc2UpO1xuICB1cGRhdGVOZXR3b3JrSW5mb3JtYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZDogdnVlRGVtaS5yZWFkb25seShpc1N1cHBvcnRlZCksXG4gICAgaXNPbmxpbmU6IHZ1ZURlbWkucmVhZG9ubHkoaXNPbmxpbmUpLFxuICAgIHNhdmVEYXRhOiB2dWVEZW1pLnJlYWRvbmx5KHNhdmVEYXRhKSxcbiAgICBvZmZsaW5lQXQ6IHZ1ZURlbWkucmVhZG9ubHkob2ZmbGluZUF0KSxcbiAgICBvbmxpbmVBdDogdnVlRGVtaS5yZWFkb25seShvbmxpbmVBdCksXG4gICAgZG93bmxpbms6IHZ1ZURlbWkucmVhZG9ubHkoZG93bmxpbmspLFxuICAgIGRvd25saW5rTWF4OiB2dWVEZW1pLnJlYWRvbmx5KGRvd25saW5rTWF4KSxcbiAgICBlZmZlY3RpdmVUeXBlOiB2dWVEZW1pLnJlYWRvbmx5KGVmZmVjdGl2ZVR5cGUpLFxuICAgIHJ0dDogdnVlRGVtaS5yZWFkb25seShydHQpLFxuICAgIHR5cGU6IHZ1ZURlbWkucmVhZG9ubHkodHlwZSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTm93KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgaW50ZXJ2YWwgPSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBub3cgPSB2dWVEZW1pLnJlZigvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IG5vdy52YWx1ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICBjb25zdCBjb250cm9scyA9IGludGVydmFsID09PSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiID8gdXNlUmFmRm4odXBkYXRlLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KSA6IHNoYXJlZC51c2VJbnRlcnZhbEZuKHVwZGF0ZSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbm93LFxuICAgICAgLi4uY29udHJvbHNcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBub3c7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlT2JqZWN0VXJsKG9iamVjdCkge1xuICBjb25zdCB1cmwgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCByZWxlYXNlID0gKCkgPT4ge1xuICAgIGlmICh1cmwudmFsdWUpXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybC52YWx1ZSk7XG4gICAgdXJsLnZhbHVlID0gdm9pZCAwO1xuICB9O1xuICB2dWVEZW1pLndhdGNoKFxuICAgICgpID0+IHNoYXJlZC50b1ZhbHVlKG9iamVjdCksXG4gICAgKG5ld09iamVjdCkgPT4ge1xuICAgICAgcmVsZWFzZSgpO1xuICAgICAgaWYgKG5ld09iamVjdClcbiAgICAgICAgdXJsLnZhbHVlID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXdPYmplY3QpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UocmVsZWFzZSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWRvbmx5KHVybCk7XG59XG5cbmZ1bmN0aW9uIHVzZUNsYW1wKHZhbHVlLCBtaW4sIG1heCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgfHwgdnVlRGVtaS5pc1JlYWRvbmx5KHZhbHVlKSlcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzaGFyZWQuY2xhbXAoc2hhcmVkLnRvVmFsdWUodmFsdWUpLCBzaGFyZWQudG9WYWx1ZShtaW4pLCBzaGFyZWQudG9WYWx1ZShtYXgpKSk7XG4gIGNvbnN0IF92YWx1ZSA9IHZ1ZURlbWkucmVmKHZhbHVlKTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBfdmFsdWUudmFsdWUgPSBzaGFyZWQuY2xhbXAoX3ZhbHVlLnZhbHVlLCBzaGFyZWQudG9WYWx1ZShtaW4pLCBzaGFyZWQudG9WYWx1ZShtYXgpKTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZTIpIHtcbiAgICAgIF92YWx1ZS52YWx1ZSA9IHNoYXJlZC5jbGFtcCh2YWx1ZTIsIHNoYXJlZC50b1ZhbHVlKG1pbiksIHNoYXJlZC50b1ZhbHVlKG1heCkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZU9mZnNldFBhZ2luYXRpb24ob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgdG90YWwgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgcGFnZVNpemUgPSAxMCxcbiAgICBwYWdlID0gMSxcbiAgICBvblBhZ2VDaGFuZ2UgPSBzaGFyZWQubm9vcCxcbiAgICBvblBhZ2VTaXplQ2hhbmdlID0gc2hhcmVkLm5vb3AsXG4gICAgb25QYWdlQ291bnRDaGFuZ2UgPSBzaGFyZWQubm9vcFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudFBhZ2VTaXplID0gdXNlQ2xhbXAocGFnZVNpemUsIDEsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gTWF0aC5tYXgoXG4gICAgMSxcbiAgICBNYXRoLmNlaWwoc2hhcmVkLnRvVmFsdWUodG90YWwpIC8gc2hhcmVkLnRvVmFsdWUoY3VycmVudFBhZ2VTaXplKSlcbiAgKSk7XG4gIGNvbnN0IGN1cnJlbnRQYWdlID0gdXNlQ2xhbXAocGFnZSwgMSwgcGFnZUNvdW50KTtcbiAgY29uc3QgaXNGaXJzdFBhZ2UgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGN1cnJlbnRQYWdlLnZhbHVlID09PSAxKTtcbiAgY29uc3QgaXNMYXN0UGFnZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2UudmFsdWUgPT09IHBhZ2VDb3VudC52YWx1ZSk7XG4gIGlmICh2dWVEZW1pLmlzUmVmKHBhZ2UpKSB7XG4gICAgc2hhcmVkLnN5bmNSZWYocGFnZSwgY3VycmVudFBhZ2UsIHtcbiAgICAgIGRpcmVjdGlvbjogdnVlRGVtaS5pc1JlYWRvbmx5KHBhZ2UpID8gXCJsdHJcIiA6IFwiYm90aFwiXG4gICAgfSk7XG4gIH1cbiAgaWYgKHZ1ZURlbWkuaXNSZWYocGFnZVNpemUpKSB7XG4gICAgc2hhcmVkLnN5bmNSZWYocGFnZVNpemUsIGN1cnJlbnRQYWdlU2l6ZSwge1xuICAgICAgZGlyZWN0aW9uOiB2dWVEZW1pLmlzUmVhZG9ubHkocGFnZVNpemUpID8gXCJsdHJcIiA6IFwiYm90aFwiXG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcHJldigpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZS0tO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgY3VycmVudFBhZ2UudmFsdWUrKztcbiAgfVxuICBjb25zdCByZXR1cm5WYWx1ZSA9IHtcbiAgICBjdXJyZW50UGFnZSxcbiAgICBjdXJyZW50UGFnZVNpemUsXG4gICAgcGFnZUNvdW50LFxuICAgIGlzRmlyc3RQYWdlLFxuICAgIGlzTGFzdFBhZ2UsXG4gICAgcHJldixcbiAgICBuZXh0XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goY3VycmVudFBhZ2UsICgpID0+IHtcbiAgICBvblBhZ2VDaGFuZ2UodnVlRGVtaS5yZWFjdGl2ZShyZXR1cm5WYWx1ZSkpO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChjdXJyZW50UGFnZVNpemUsICgpID0+IHtcbiAgICBvblBhZ2VTaXplQ2hhbmdlKHZ1ZURlbWkucmVhY3RpdmUocmV0dXJuVmFsdWUpKTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2gocGFnZUNvdW50LCAoKSA9PiB7XG4gICAgb25QYWdlQ291bnRDaGFuZ2UodnVlRGVtaS5yZWFjdGl2ZShyZXR1cm5WYWx1ZSkpO1xuICB9KTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5mdW5jdGlvbiB1c2VPbmxpbmUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaXNPbmxpbmUgfSA9IHVzZU5ldHdvcmsob3B0aW9ucyk7XG4gIHJldHVybiBpc09ubGluZTtcbn1cblxuZnVuY3Rpb24gdXNlUGFnZUxlYXZlKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzTGVmdCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGlmICghd2luZG93KVxuICAgICAgcmV0dXJuO1xuICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50O1xuICAgIGNvbnN0IGZyb20gPSBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGV2ZW50LnRvRWxlbWVudDtcbiAgICBpc0xlZnQudmFsdWUgPSAhZnJvbTtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNlb3V0XCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdy5kb2N1bWVudCwgXCJtb3VzZWxlYXZlXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdy5kb2N1bWVudCwgXCJtb3VzZWVudGVyXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gaXNMZWZ0O1xufVxuXG5mdW5jdGlvbiB1c2VTY3JlZW5PcmllbnRhdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IHdpbmRvdyAmJiBcInNjcmVlblwiIGluIHdpbmRvdyAmJiBcIm9yaWVudGF0aW9uXCIgaW4gd2luZG93LnNjcmVlbik7XG4gIGNvbnN0IHNjcmVlbk9yaWVudGF0aW9uID0gaXNTdXBwb3J0ZWQudmFsdWUgPyB3aW5kb3cuc2NyZWVuLm9yaWVudGF0aW9uIDoge307XG4gIGNvbnN0IG9yaWVudGF0aW9uID0gdnVlRGVtaS5yZWYoc2NyZWVuT3JpZW50YXRpb24udHlwZSk7XG4gIGNvbnN0IGFuZ2xlID0gdnVlRGVtaS5yZWYoc2NyZWVuT3JpZW50YXRpb24uYW5nbGUgfHwgMCk7XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm9yaWVudGF0aW9uY2hhbmdlXCIsICgpID0+IHtcbiAgICAgIG9yaWVudGF0aW9uLnZhbHVlID0gc2NyZWVuT3JpZW50YXRpb24udHlwZTtcbiAgICAgIGFuZ2xlLnZhbHVlID0gc2NyZWVuT3JpZW50YXRpb24uYW5nbGU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbG9ja09yaWVudGF0aW9uID0gKHR5cGUpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUgJiYgdHlwZW9mIHNjcmVlbk9yaWVudGF0aW9uLmxvY2sgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIHJldHVybiBzY3JlZW5PcmllbnRhdGlvbi5sb2NrKHR5cGUpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkXCIpKTtcbiAgfTtcbiAgY29uc3QgdW5sb2NrT3JpZW50YXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlICYmIHR5cGVvZiBzY3JlZW5PcmllbnRhdGlvbi51bmxvY2sgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIHNjcmVlbk9yaWVudGF0aW9uLnVubG9jaygpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIG9yaWVudGF0aW9uLFxuICAgIGFuZ2xlLFxuICAgIGxvY2tPcmllbnRhdGlvbixcbiAgICB1bmxvY2tPcmllbnRhdGlvblxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VQYXJhbGxheCh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZGV2aWNlT3JpZW50YXRpb25UaWx0QWRqdXN0ID0gKGkpID0+IGksXG4gICAgZGV2aWNlT3JpZW50YXRpb25Sb2xsQWRqdXN0ID0gKGkpID0+IGksXG4gICAgbW91c2VUaWx0QWRqdXN0ID0gKGkpID0+IGksXG4gICAgbW91c2VSb2xsQWRqdXN0ID0gKGkpID0+IGksXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgb3JpZW50YXRpb24gPSB2dWVEZW1pLnJlYWN0aXZlKHVzZURldmljZU9yaWVudGF0aW9uKHsgd2luZG93IH0pKTtcbiAgY29uc3Qgc2NyZWVuT3JpZW50YXRpb24gPSB2dWVEZW1pLnJlYWN0aXZlKHVzZVNjcmVlbk9yaWVudGF0aW9uKHsgd2luZG93IH0pKTtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRYOiB4LFxuICAgIGVsZW1lbnRZOiB5LFxuICAgIGVsZW1lbnRXaWR0aDogd2lkdGgsXG4gICAgZWxlbWVudEhlaWdodDogaGVpZ2h0XG4gIH0gPSB1c2VNb3VzZUluRWxlbWVudCh0YXJnZXQsIHsgaGFuZGxlT3V0c2lkZTogZmFsc2UsIHdpbmRvdyB9KTtcbiAgY29uc3Qgc291cmNlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKG9yaWVudGF0aW9uLmlzU3VwcG9ydGVkICYmIChvcmllbnRhdGlvbi5hbHBoYSAhPSBudWxsICYmIG9yaWVudGF0aW9uLmFscGhhICE9PSAwIHx8IG9yaWVudGF0aW9uLmdhbW1hICE9IG51bGwgJiYgb3JpZW50YXRpb24uZ2FtbWEgIT09IDApKSB7XG4gICAgICByZXR1cm4gXCJkZXZpY2VPcmllbnRhdGlvblwiO1xuICAgIH1cbiAgICByZXR1cm4gXCJtb3VzZVwiO1xuICB9KTtcbiAgY29uc3Qgcm9sbCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChzb3VyY2UudmFsdWUgPT09IFwiZGV2aWNlT3JpZW50YXRpb25cIikge1xuICAgICAgbGV0IHZhbHVlO1xuICAgICAgc3dpdGNoIChzY3JlZW5PcmllbnRhdGlvbi5vcmllbnRhdGlvbikge1xuICAgICAgICBjYXNlIFwibGFuZHNjYXBlLXByaW1hcnlcIjpcbiAgICAgICAgICB2YWx1ZSA9IG9yaWVudGF0aW9uLmdhbW1hIC8gOTA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJsYW5kc2NhcGUtc2Vjb25kYXJ5XCI6XG4gICAgICAgICAgdmFsdWUgPSAtb3JpZW50YXRpb24uZ2FtbWEgLyA5MDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInBvcnRyYWl0LXByaW1hcnlcIjpcbiAgICAgICAgICB2YWx1ZSA9IC1vcmllbnRhdGlvbi5iZXRhIC8gOTA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJwb3J0cmFpdC1zZWNvbmRhcnlcIjpcbiAgICAgICAgICB2YWx1ZSA9IG9yaWVudGF0aW9uLmJldGEgLyA5MDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB2YWx1ZSA9IC1vcmllbnRhdGlvbi5iZXRhIC8gOTA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb25Sb2xsQWRqdXN0KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWUgPSAtKHkudmFsdWUgLSBoZWlnaHQudmFsdWUgLyAyKSAvIGhlaWdodC52YWx1ZTtcbiAgICAgIHJldHVybiBtb3VzZVJvbGxBZGp1c3QodmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHRpbHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoc291cmNlLnZhbHVlID09PSBcImRldmljZU9yaWVudGF0aW9uXCIpIHtcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIHN3aXRjaCAoc2NyZWVuT3JpZW50YXRpb24ub3JpZW50YXRpb24pIHtcbiAgICAgICAgY2FzZSBcImxhbmRzY2FwZS1wcmltYXJ5XCI6XG4gICAgICAgICAgdmFsdWUgPSBvcmllbnRhdGlvbi5iZXRhIC8gOTA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJsYW5kc2NhcGUtc2Vjb25kYXJ5XCI6XG4gICAgICAgICAgdmFsdWUgPSAtb3JpZW50YXRpb24uYmV0YSAvIDkwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicG9ydHJhaXQtcHJpbWFyeVwiOlxuICAgICAgICAgIHZhbHVlID0gb3JpZW50YXRpb24uZ2FtbWEgLyA5MDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInBvcnRyYWl0LXNlY29uZGFyeVwiOlxuICAgICAgICAgIHZhbHVlID0gLW9yaWVudGF0aW9uLmdhbW1hIC8gOTA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdmFsdWUgPSBvcmllbnRhdGlvbi5nYW1tYSAvIDkwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uVGlsdEFkanVzdCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKHgudmFsdWUgLSB3aWR0aC52YWx1ZSAvIDIpIC8gd2lkdGgudmFsdWU7XG4gICAgICByZXR1cm4gbW91c2VUaWx0QWRqdXN0KHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4geyByb2xsLCB0aWx0LCBzb3VyY2UgfTtcbn1cblxuZnVuY3Rpb24gdXNlUGFyZW50RWxlbWVudChlbGVtZW50ID0gdXNlQ3VycmVudEVsZW1lbnQoKSkge1xuICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudChlbGVtZW50KTtcbiAgICBpZiAoZWwpXG4gICAgICBwYXJlbnRFbGVtZW50LnZhbHVlID0gZWwucGFyZW50RWxlbWVudDtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCh1cGRhdGUpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpLCB1cGRhdGUpO1xuICByZXR1cm4gcGFyZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdXNlUGVyZm9ybWFuY2VPYnNlcnZlcihvcHRpb25zLCBjYWxsYmFjaykge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIC4uLnBlcmZvcm1hbmNlT3B0aW9uc1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gd2luZG93ICYmIFwiUGVyZm9ybWFuY2VPYnNlcnZlclwiIGluIHdpbmRvdyk7XG4gIGxldCBvYnNlcnZlcjtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBvYnNlcnZlciA9PSBudWxsID8gdm9pZCAwIDogb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9O1xuICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUpIHtcbiAgICAgIHN0b3AoKTtcbiAgICAgIG9ic2VydmVyID0gbmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShwZXJmb3JtYW5jZU9wdGlvbnMpO1xuICAgIH1cbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICBpZiAoaW1tZWRpYXRlKVxuICAgIHN0YXJ0KCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RhcnQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHBvaW50ZXJJZDogMCxcbiAgcHJlc3N1cmU6IDAsXG4gIHRpbHRYOiAwLFxuICB0aWx0WTogMCxcbiAgd2lkdGg6IDAsXG4gIGhlaWdodDogMCxcbiAgdHdpc3Q6IDAsXG4gIHBvaW50ZXJUeXBlOiBudWxsXG59O1xuY29uc3Qga2V5cyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3Qua2V5cyhkZWZhdWx0U3RhdGUpO1xuZnVuY3Rpb24gdXNlUG9pbnRlcihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRhcmdldCA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzSW5zaWRlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKG9wdGlvbnMuaW5pdGlhbFZhbHVlIHx8IHt9KTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS52YWx1ZSwgZGVmYXVsdFN0YXRlLCBzdGF0ZS52YWx1ZSk7XG4gIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBpc0luc2lkZS52YWx1ZSA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnMucG9pbnRlclR5cGVzICYmICFvcHRpb25zLnBvaW50ZXJUeXBlcy5pbmNsdWRlcyhldmVudC5wb2ludGVyVHlwZSkpXG4gICAgICByZXR1cm47XG4gICAgc3RhdGUudmFsdWUgPSBzaGFyZWQub2JqZWN0UGljayhldmVudCwga2V5cywgZmFsc2UpO1xuICB9O1xuICBpZiAodGFyZ2V0KSB7XG4gICAgY29uc3QgbGlzdGVuZXJPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlIH07XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFtcInBvaW50ZXJkb3duXCIsIFwicG9pbnRlcm1vdmVcIiwgXCJwb2ludGVydXBcIl0sIGhhbmRsZXIsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmxlYXZlXCIsICgpID0+IGlzSW5zaWRlLnZhbHVlID0gZmFsc2UsIGxpc3RlbmVyT3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zaGFyZWQudG9SZWZzKHN0YXRlKSxcbiAgICBpc0luc2lkZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyTG9jayh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50IH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBkb2N1bWVudCAmJiBcInBvaW50ZXJMb2NrRWxlbWVudFwiIGluIGRvY3VtZW50KTtcbiAgY29uc3QgZWxlbWVudCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gdnVlRGVtaS5yZWYoKTtcbiAgbGV0IHRhcmdldEVsZW1lbnQ7XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwicG9pbnRlcmxvY2tjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSAoX2EgPSBkb2N1bWVudC5wb2ludGVyTG9ja0VsZW1lbnQpICE9IG51bGwgPyBfYSA6IGVsZW1lbnQudmFsdWU7XG4gICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudCA9PT0gdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LnZhbHVlID0gZG9jdW1lbnQucG9pbnRlckxvY2tFbGVtZW50O1xuICAgICAgICBpZiAoIWVsZW1lbnQudmFsdWUpXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IHRyaWdnZXJFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInBvaW50ZXJsb2NrZXJyb3JcIiwgKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSAoX2EgPSBkb2N1bWVudC5wb2ludGVyTG9ja0VsZW1lbnQpICE9IG51bGwgPyBfYSA6IGVsZW1lbnQudmFsdWU7XG4gICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudCA9PT0gdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBkb2N1bWVudC5wb2ludGVyTG9ja0VsZW1lbnQgPyBcInJlbGVhc2VcIiA6IFwiYWNxdWlyZVwiO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byAke2FjdGlvbn0gcG9pbnRlciBsb2NrLmApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGxvY2soZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoIWlzU3VwcG9ydGVkLnZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9pbnRlciBMb2NrIEFQSSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci5cIik7XG4gICAgdHJpZ2dlckVsZW1lbnQudmFsdWUgPSBlIGluc3RhbmNlb2YgRXZlbnQgPyBlLmN1cnJlbnRUYXJnZXQgOiBudWxsO1xuICAgIHRhcmdldEVsZW1lbnQgPSBlIGluc3RhbmNlb2YgRXZlbnQgPyAoX2EgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KSkgIT0gbnVsbCA/IF9hIDogdHJpZ2dlckVsZW1lbnQudmFsdWUgOiB1bnJlZkVsZW1lbnQoZSk7XG4gICAgaWYgKCF0YXJnZXRFbGVtZW50KVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFyZ2V0IGVsZW1lbnQgdW5kZWZpbmVkLlwiKTtcbiAgICB0YXJnZXRFbGVtZW50LnJlcXVlc3RQb2ludGVyTG9jaygpO1xuICAgIHJldHVybiBhd2FpdCBzaGFyZWQudW50aWwoZWxlbWVudCkudG9CZSh0YXJnZXRFbGVtZW50KTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiB1bmxvY2soKSB7XG4gICAgaWYgKCFlbGVtZW50LnZhbHVlKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGRvY3VtZW50LmV4aXRQb2ludGVyTG9jaygpO1xuICAgIGF3YWl0IHNoYXJlZC51bnRpbChlbGVtZW50KS50b0JlTnVsbCgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgZWxlbWVudCxcbiAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICBsb2NrLFxuICAgIHVubG9ja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyU3dpcGUodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgdGFyZ2V0UmVmID0gc2hhcmVkLnRvUmVmKHRhcmdldCk7XG4gIGNvbnN0IHtcbiAgICB0aHJlc2hvbGQgPSA1MCxcbiAgICBvblN3aXBlLFxuICAgIG9uU3dpcGVFbmQsXG4gICAgb25Td2lwZVN0YXJ0LFxuICAgIGRpc2FibGVUZXh0U2VsZWN0ID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHBvc1N0YXJ0ID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IHVwZGF0ZVBvc1N0YXJ0ID0gKHgsIHkpID0+IHtcbiAgICBwb3NTdGFydC54ID0geDtcbiAgICBwb3NTdGFydC55ID0geTtcbiAgfTtcbiAgY29uc3QgcG9zRW5kID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IHVwZGF0ZVBvc0VuZCA9ICh4LCB5KSA9PiB7XG4gICAgcG9zRW5kLnggPSB4O1xuICAgIHBvc0VuZC55ID0geTtcbiAgfTtcbiAgY29uc3QgZGlzdGFuY2VYID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBwb3NTdGFydC54IC0gcG9zRW5kLngpO1xuICBjb25zdCBkaXN0YW5jZVkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHBvc1N0YXJ0LnkgLSBwb3NFbmQueSk7XG4gIGNvbnN0IHsgbWF4LCBhYnMgfSA9IE1hdGg7XG4gIGNvbnN0IGlzVGhyZXNob2xkRXhjZWVkZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IG1heChhYnMoZGlzdGFuY2VYLnZhbHVlKSwgYWJzKGRpc3RhbmNlWS52YWx1ZSkpID49IHRocmVzaG9sZCk7XG4gIGNvbnN0IGlzU3dpcGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaXNQb2ludGVyRG93biA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZGlyZWN0aW9uID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuIFwibm9uZVwiO1xuICAgIGlmIChhYnMoZGlzdGFuY2VYLnZhbHVlKSA+IGFicyhkaXN0YW5jZVkudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGlzdGFuY2VYLnZhbHVlID4gMCA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGlzdGFuY2VZLnZhbHVlID4gMCA/IFwidXBcIiA6IFwiZG93blwiO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGV2ZW50SXNBbGxvd2VkID0gKGUpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCBpc1JlbGVhc2luZ0J1dHRvbiA9IGUuYnV0dG9ucyA9PT0gMDtcbiAgICBjb25zdCBpc1ByaW1hcnlCdXR0b24gPSBlLmJ1dHRvbnMgPT09IDE7XG4gICAgcmV0dXJuIChfYyA9IChfYiA9IChfYSA9IG9wdGlvbnMucG9pbnRlclR5cGVzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaW5jbHVkZXMoZS5wb2ludGVyVHlwZSkpICE9IG51bGwgPyBfYiA6IGlzUmVsZWFzaW5nQnV0dG9uIHx8IGlzUHJpbWFyeUJ1dHRvbikgIT0gbnVsbCA/IF9jIDogdHJ1ZTtcbiAgfTtcbiAgY29uc3Qgc3RvcHMgPSBbXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmRvd25cIiwgKGUpID0+IHtcbiAgICAgIGlmICghZXZlbnRJc0FsbG93ZWQoZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlzUG9pbnRlckRvd24udmFsdWUgPSB0cnVlO1xuICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBlLnRhcmdldDtcbiAgICAgIGV2ZW50VGFyZ2V0ID09IG51bGwgPyB2b2lkIDAgOiBldmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICBjb25zdCB7IGNsaWVudFg6IHgsIGNsaWVudFk6IHkgfSA9IGU7XG4gICAgICB1cGRhdGVQb3NTdGFydCh4LCB5KTtcbiAgICAgIHVwZGF0ZVBvc0VuZCh4LCB5KTtcbiAgICAgIG9uU3dpcGVTdGFydCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZVN0YXJ0KGUpO1xuICAgIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJtb3ZlXCIsIChlKSA9PiB7XG4gICAgICBpZiAoIWV2ZW50SXNBbGxvd2VkKGUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWlzUG9pbnRlckRvd24udmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IHsgY2xpZW50WDogeCwgY2xpZW50WTogeSB9ID0gZTtcbiAgICAgIHVwZGF0ZVBvc0VuZCh4LCB5KTtcbiAgICAgIGlmICghaXNTd2lwaW5nLnZhbHVlICYmIGlzVGhyZXNob2xkRXhjZWVkZWQudmFsdWUpXG4gICAgICAgIGlzU3dpcGluZy52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgICBvblN3aXBlID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlKGUpO1xuICAgIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJ1cFwiLCAoZSkgPT4ge1xuICAgICAgaWYgKCFldmVudElzQWxsb3dlZChlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzU3dpcGluZy52YWx1ZSlcbiAgICAgICAgb25Td2lwZUVuZCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZUVuZChlLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgICAgaXNQb2ludGVyRG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgaXNTd2lwaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgfSlcbiAgXTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaDtcbiAgICAoX2IgPSAoX2EgPSB0YXJnZXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdHlsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnNldFByb3BlcnR5KFwidG91Y2gtYWN0aW9uXCIsIFwibm9uZVwiKTtcbiAgICBpZiAoZGlzYWJsZVRleHRTZWxlY3QpIHtcbiAgICAgIChfZCA9IChfYyA9IHRhcmdldFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLnN0eWxlKSA9PSBudWxsID8gdm9pZCAwIDogX2Quc2V0UHJvcGVydHkoXCItd2Via2l0LXVzZXItc2VsZWN0XCIsIFwibm9uZVwiKTtcbiAgICAgIChfZiA9IChfZSA9IHRhcmdldFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLnN0eWxlKSA9PSBudWxsID8gdm9pZCAwIDogX2Yuc2V0UHJvcGVydHkoXCItbXMtdXNlci1zZWxlY3RcIiwgXCJub25lXCIpO1xuICAgICAgKF9oID0gKF9nID0gdGFyZ2V0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2cuc3R5bGUpID09IG51bGwgPyB2b2lkIDAgOiBfaC5zZXRQcm9wZXJ0eShcInVzZXItc2VsZWN0XCIsIFwibm9uZVwiKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdG9wID0gKCkgPT4gc3RvcHMuZm9yRWFjaCgocykgPT4gcygpKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N3aXBpbmc6IHZ1ZURlbWkucmVhZG9ubHkoaXNTd2lwaW5nKSxcbiAgICBkaXJlY3Rpb246IHZ1ZURlbWkucmVhZG9ubHkoZGlyZWN0aW9uKSxcbiAgICBwb3NTdGFydDogdnVlRGVtaS5yZWFkb25seShwb3NTdGFydCksXG4gICAgcG9zRW5kOiB2dWVEZW1pLnJlYWRvbmx5KHBvc0VuZCksXG4gICAgZGlzdGFuY2VYLFxuICAgIGRpc3RhbmNlWSxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVByZWZlcnJlZENvbG9yU2NoZW1lKG9wdGlvbnMpIHtcbiAgY29uc3QgaXNMaWdodCA9IHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KVwiLCBvcHRpb25zKTtcbiAgY29uc3QgaXNEYXJrID0gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIiwgb3B0aW9ucyk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaXNEYXJrLnZhbHVlKVxuICAgICAgcmV0dXJuIFwiZGFya1wiO1xuICAgIGlmIChpc0xpZ2h0LnZhbHVlKVxuICAgICAgcmV0dXJuIFwibGlnaHRcIjtcbiAgICByZXR1cm4gXCJuby1wcmVmZXJlbmNlXCI7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VQcmVmZXJyZWRDb250cmFzdChvcHRpb25zKSB7XG4gIGNvbnN0IGlzTW9yZSA9IHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb250cmFzdDogbW9yZSlcIiwgb3B0aW9ucyk7XG4gIGNvbnN0IGlzTGVzcyA9IHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb250cmFzdDogbGVzcylcIiwgb3B0aW9ucyk7XG4gIGNvbnN0IGlzQ3VzdG9tID0gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLWNvbnRyYXN0OiBjdXN0b20pXCIsIG9wdGlvbnMpO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGlzTW9yZS52YWx1ZSlcbiAgICAgIHJldHVybiBcIm1vcmVcIjtcbiAgICBpZiAoaXNMZXNzLnZhbHVlKVxuICAgICAgcmV0dXJuIFwibGVzc1wiO1xuICAgIGlmIChpc0N1c3RvbS52YWx1ZSlcbiAgICAgIHJldHVybiBcImN1c3RvbVwiO1xuICAgIHJldHVybiBcIm5vLXByZWZlcmVuY2VcIjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVByZWZlcnJlZExhbmd1YWdlcyhvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWYoW1wiZW5cIl0pO1xuICBjb25zdCBuYXZpZ2F0b3IgPSB3aW5kb3cubmF2aWdhdG9yO1xuICBjb25zdCB2YWx1ZSA9IHZ1ZURlbWkucmVmKG5hdmlnYXRvci5sYW5ndWFnZXMpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJsYW5ndWFnZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzO1xuICB9KTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiB1c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uKG9wdGlvbnMpIHtcbiAgY29uc3QgaXNSZWR1Y2VkID0gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpXCIsIG9wdGlvbnMpO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGlzUmVkdWNlZC52YWx1ZSlcbiAgICAgIHJldHVybiBcInJlZHVjZVwiO1xuICAgIHJldHVybiBcIm5vLXByZWZlcmVuY2VcIjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVByZXZpb3VzKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgY29uc3QgcHJldmlvdXMgPSB2dWVEZW1pLnNoYWxsb3dSZWYoaW5pdGlhbFZhbHVlKTtcbiAgdnVlRGVtaS53YXRjaChcbiAgICBzaGFyZWQudG9SZWYodmFsdWUpLFxuICAgIChfLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgcHJldmlvdXMudmFsdWUgPSBvbGRWYWx1ZTtcbiAgICB9LFxuICAgIHsgZmx1c2g6IFwic3luY1wiIH1cbiAgKTtcbiAgcmV0dXJuIHZ1ZURlbWkucmVhZG9ubHkocHJldmlvdXMpO1xufVxuXG5jb25zdCB0b3BWYXJOYW1lID0gXCItLXZ1ZXVzZS1zYWZlLWFyZWEtdG9wXCI7XG5jb25zdCByaWdodFZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS1yaWdodFwiO1xuY29uc3QgYm90dG9tVmFyTmFtZSA9IFwiLS12dWV1c2Utc2FmZS1hcmVhLWJvdHRvbVwiO1xuY29uc3QgbGVmdFZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS1sZWZ0XCI7XG5mdW5jdGlvbiB1c2VTY3JlZW5TYWZlQXJlYSgpIHtcbiAgY29uc3QgdG9wID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IHJpZ2h0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IGJvdHRvbSA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBsZWZ0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGlmIChzaGFyZWQuaXNDbGllbnQpIHtcbiAgICBjb25zdCB0b3BDc3NWYXIgPSB1c2VDc3NWYXIodG9wVmFyTmFtZSk7XG4gICAgY29uc3QgcmlnaHRDc3NWYXIgPSB1c2VDc3NWYXIocmlnaHRWYXJOYW1lKTtcbiAgICBjb25zdCBib3R0b21Dc3NWYXIgPSB1c2VDc3NWYXIoYm90dG9tVmFyTmFtZSk7XG4gICAgY29uc3QgbGVmdENzc1ZhciA9IHVzZUNzc1ZhcihsZWZ0VmFyTmFtZSk7XG4gICAgdG9wQ3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KVwiO1xuICAgIHJpZ2h0Q3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LCAwcHgpXCI7XG4gICAgYm90dG9tQ3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KVwiO1xuICAgIGxlZnRDc3NWYXIudmFsdWUgPSBcImVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwgMHB4KVwiO1xuICAgIHVwZGF0ZSgpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgc2hhcmVkLnVzZURlYm91bmNlRm4odXBkYXRlKSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHRvcC52YWx1ZSA9IGdldFZhbHVlKHRvcFZhck5hbWUpO1xuICAgIHJpZ2h0LnZhbHVlID0gZ2V0VmFsdWUocmlnaHRWYXJOYW1lKTtcbiAgICBib3R0b20udmFsdWUgPSBnZXRWYWx1ZShib3R0b21WYXJOYW1lKTtcbiAgICBsZWZ0LnZhbHVlID0gZ2V0VmFsdWUobGVmdFZhck5hbWUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdG9wLFxuICAgIHJpZ2h0LFxuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHVwZGF0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0VmFsdWUocG9zaXRpb24pIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHBvc2l0aW9uKTtcbn1cblxuZnVuY3Rpb24gdXNlU2NyaXB0VGFnKHNyYywgb25Mb2FkZWQgPSBzaGFyZWQubm9vcCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIG1hbnVhbCA9IGZhbHNlLFxuICAgIHR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiLFxuICAgIGFzeW5jID0gdHJ1ZSxcbiAgICBjcm9zc09yaWdpbixcbiAgICByZWZlcnJlclBvbGljeSxcbiAgICBub01vZHVsZSxcbiAgICBkZWZlcixcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBhdHRycyA9IHt9XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzY3JpcHRUYWcgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgbGV0IF9wcm9taXNlID0gbnVsbDtcbiAgY29uc3QgbG9hZFNjcmlwdCA9ICh3YWl0Rm9yU2NyaXB0TG9hZCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVXaXRoRWxlbWVudCA9IChlbDIpID0+IHtcbiAgICAgIHNjcmlwdFRhZy52YWx1ZSA9IGVsMjtcbiAgICAgIHJlc29sdmUoZWwyKTtcbiAgICAgIHJldHVybiBlbDI7XG4gICAgfTtcbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHNob3VsZEFwcGVuZCA9IGZhbHNlO1xuICAgIGxldCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3NoYXJlZC50b1ZhbHVlKHNyYyl9XCJdYCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgZWwudHlwZSA9IHR5cGU7XG4gICAgICBlbC5hc3luYyA9IGFzeW5jO1xuICAgICAgZWwuc3JjID0gc2hhcmVkLnRvVmFsdWUoc3JjKTtcbiAgICAgIGlmIChkZWZlcilcbiAgICAgICAgZWwuZGVmZXIgPSBkZWZlcjtcbiAgICAgIGlmIChjcm9zc09yaWdpbilcbiAgICAgICAgZWwuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICAgIGlmIChub01vZHVsZSlcbiAgICAgICAgZWwubm9Nb2R1bGUgPSBub01vZHVsZTtcbiAgICAgIGlmIChyZWZlcnJlclBvbGljeSlcbiAgICAgICAgZWwucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJzKS5mb3JFYWNoKChbbmFtZSwgdmFsdWVdKSA9PiBlbCA9PSBudWxsID8gdm9pZCAwIDogZWwuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7XG4gICAgICBzaG91bGRBcHBlbmQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZWwuaGFzQXR0cmlidXRlKFwiZGF0YS1sb2FkZWRcIikpIHtcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gICAgfVxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXZlbnQpID0+IHJlamVjdChldmVudCkpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoZXZlbnQpID0+IHJlamVjdChldmVudCkpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShcImRhdGEtbG9hZGVkXCIsIFwidHJ1ZVwiKTtcbiAgICAgIG9uTG9hZGVkKGVsKTtcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gICAgfSk7XG4gICAgaWYgKHNob3VsZEFwcGVuZClcbiAgICAgIGVsID0gZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbCk7XG4gICAgaWYgKCF3YWl0Rm9yU2NyaXB0TG9hZClcbiAgICAgIHJlc29sdmVXaXRoRWxlbWVudChlbCk7XG4gIH0pO1xuICBjb25zdCBsb2FkID0gKHdhaXRGb3JTY3JpcHRMb2FkID0gdHJ1ZSkgPT4ge1xuICAgIGlmICghX3Byb21pc2UpXG4gICAgICBfcHJvbWlzZSA9IGxvYWRTY3JpcHQod2FpdEZvclNjcmlwdExvYWQpO1xuICAgIHJldHVybiBfcHJvbWlzZTtcbiAgfTtcbiAgY29uc3QgdW5sb2FkID0gKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgX3Byb21pc2UgPSBudWxsO1xuICAgIGlmIChzY3JpcHRUYWcudmFsdWUpXG4gICAgICBzY3JpcHRUYWcudmFsdWUgPSBudWxsO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7c2hhcmVkLnRvVmFsdWUoc3JjKX1cIl1gKTtcbiAgICBpZiAoZWwpXG4gICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGVsKTtcbiAgfTtcbiAgaWYgKGltbWVkaWF0ZSAmJiAhbWFudWFsKVxuICAgIHNoYXJlZC50cnlPbk1vdW50ZWQobG9hZCk7XG4gIGlmICghbWFudWFsKVxuICAgIHNoYXJlZC50cnlPblVubW91bnRlZCh1bmxvYWQpO1xuICByZXR1cm4geyBzY3JpcHRUYWcsIGxvYWQsIHVubG9hZCB9O1xufVxuXG5mdW5jdGlvbiBjaGVja092ZXJmbG93U2Nyb2xsKGVsZSkge1xuICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZSk7XG4gIGlmIChzdHlsZS5vdmVyZmxvd1ggPT09IFwic2Nyb2xsXCIgfHwgc3R5bGUub3ZlcmZsb3dZID09PSBcInNjcm9sbFwiIHx8IHN0eWxlLm92ZXJmbG93WCA9PT0gXCJhdXRvXCIgJiYgZWxlLmNsaWVudFdpZHRoIDwgZWxlLnNjcm9sbFdpZHRoIHx8IHN0eWxlLm92ZXJmbG93WSA9PT0gXCJhdXRvXCIgJiYgZWxlLmNsaWVudEhlaWdodCA8IGVsZS5zY3JvbGxIZWlnaHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGUucGFyZW50Tm9kZTtcbiAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQudGFnTmFtZSA9PT0gXCJCT0RZXCIpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGNoZWNrT3ZlcmZsb3dTY3JvbGwocGFyZW50KTtcbiAgfVxufVxuZnVuY3Rpb24gcHJldmVudERlZmF1bHQocmF3RXZlbnQpIHtcbiAgY29uc3QgZSA9IHJhd0V2ZW50IHx8IHdpbmRvdy5ldmVudDtcbiAgY29uc3QgX3RhcmdldCA9IGUudGFyZ2V0O1xuICBpZiAoY2hlY2tPdmVyZmxvd1Njcm9sbChfdGFyZ2V0KSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKGUucHJldmVudERlZmF1bHQpXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICByZXR1cm4gZmFsc2U7XG59XG5jb25zdCBlbEluaXRpYWxPdmVyZmxvdyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhlbGVtZW50LCBpbml0aWFsU3RhdGUgPSBmYWxzZSkge1xuICBjb25zdCBpc0xvY2tlZCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGxldCBzdG9wVG91Y2hNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICBsZXQgaW5pdGlhbE92ZXJmbG93ID0gXCJcIjtcbiAgdnVlRGVtaS53YXRjaChzaGFyZWQudG9SZWYoZWxlbWVudCksIChlbCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHJlc29sdmVFbGVtZW50KHNoYXJlZC50b1ZhbHVlKGVsKSk7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgY29uc3QgZWxlID0gdGFyZ2V0O1xuICAgICAgaWYgKCFlbEluaXRpYWxPdmVyZmxvdy5nZXQoZWxlKSlcbiAgICAgICAgZWxJbml0aWFsT3ZlcmZsb3cuc2V0KGVsZSwgZWxlLnN0eWxlLm92ZXJmbG93KTtcbiAgICAgIGlmIChlbGUuc3R5bGUub3ZlcmZsb3cgIT09IFwiaGlkZGVuXCIpXG4gICAgICAgIGluaXRpYWxPdmVyZmxvdyA9IGVsZS5zdHlsZS5vdmVyZmxvdztcbiAgICAgIGlmIChlbGUuc3R5bGUub3ZlcmZsb3cgPT09IFwiaGlkZGVuXCIpXG4gICAgICAgIHJldHVybiBpc0xvY2tlZC52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoaXNMb2NrZWQudmFsdWUpXG4gICAgICAgIHJldHVybiBlbGUuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgIH1cbiAgfSwge1xuICAgIGltbWVkaWF0ZTogdHJ1ZVxuICB9KTtcbiAgY29uc3QgbG9jayA9ICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHJlc29sdmVFbGVtZW50KHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpKTtcbiAgICBpZiAoIWVsIHx8IGlzTG9ja2VkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChzaGFyZWQuaXNJT1MpIHtcbiAgICAgIHN0b3BUb3VjaE1vdmVMaXN0ZW5lciA9IHVzZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIGVsLFxuICAgICAgICBcInRvdWNobW92ZVwiLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIHByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgICB9LFxuICAgICAgICB7IHBhc3NpdmU6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGVsLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBpc0xvY2tlZC52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHVubG9jayA9ICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHJlc29sdmVFbGVtZW50KHNoYXJlZC50b1ZhbHVlKGVsZW1lbnQpKTtcbiAgICBpZiAoIWVsIHx8ICFpc0xvY2tlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoc2hhcmVkLmlzSU9TKVxuICAgICAgc3RvcFRvdWNoTW92ZUxpc3RlbmVyID09IG51bGwgPyB2b2lkIDAgOiBzdG9wVG91Y2hNb3ZlTGlzdGVuZXIoKTtcbiAgICBlbC5zdHlsZS5vdmVyZmxvdyA9IGluaXRpYWxPdmVyZmxvdztcbiAgICBlbEluaXRpYWxPdmVyZmxvdy5kZWxldGUoZWwpO1xuICAgIGlzTG9ja2VkLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSh1bmxvY2spO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIGlzTG9ja2VkLnZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIGlmICh2KVxuICAgICAgICBsb2NrKCk7XG4gICAgICBlbHNlIHVubG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVNlc3Npb25TdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICByZXR1cm4gdXNlU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiB1c2VTaGFyZShzaGFyZU9wdGlvbnMgPSB7fSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvciB9ID0gb3B0aW9ucztcbiAgY29uc3QgX25hdmlnYXRvciA9IG5hdmlnYXRvcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gX25hdmlnYXRvciAmJiBcImNhblNoYXJlXCIgaW4gX25hdmlnYXRvcik7XG4gIGNvbnN0IHNoYXJlID0gYXN5bmMgKG92ZXJyaWRlT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAuLi5zaGFyZWQudG9WYWx1ZShzaGFyZU9wdGlvbnMpLFxuICAgICAgICAuLi5zaGFyZWQudG9WYWx1ZShvdmVycmlkZU9wdGlvbnMpXG4gICAgICB9O1xuICAgICAgbGV0IGdyYW50ZWQgPSB0cnVlO1xuICAgICAgaWYgKGRhdGEuZmlsZXMgJiYgX25hdmlnYXRvci5jYW5TaGFyZSlcbiAgICAgICAgZ3JhbnRlZCA9IF9uYXZpZ2F0b3IuY2FuU2hhcmUoeyBmaWxlczogZGF0YS5maWxlcyB9KTtcbiAgICAgIGlmIChncmFudGVkKVxuICAgICAgICByZXR1cm4gX25hdmlnYXRvci5zaGFyZShkYXRhKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc2hhcmVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFNvcnRGbiA9IChzb3VyY2UsIGNvbXBhcmVGbikgPT4gc291cmNlLnNvcnQoY29tcGFyZUZuKTtcbmNvbnN0IGRlZmF1bHRDb21wYXJlID0gKGEsIGIpID0+IGEgLSBiO1xuZnVuY3Rpb24gdXNlU29ydGVkKC4uLmFyZ3MpIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICBjb25zdCBbc291cmNlXSA9IGFyZ3M7XG4gIGxldCBjb21wYXJlRm4gPSBkZWZhdWx0Q29tcGFyZTtcbiAgbGV0IG9wdGlvbnMgPSB7fTtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHR5cGVvZiBhcmdzWzFdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBvcHRpb25zID0gYXJnc1sxXTtcbiAgICAgIGNvbXBhcmVGbiA9IChfYSA9IG9wdGlvbnMuY29tcGFyZUZuKSAhPSBudWxsID8gX2EgOiBkZWZhdWx0Q29tcGFyZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGFyZUZuID0gKF9iID0gYXJnc1sxXSkgIT0gbnVsbCA/IF9iIDogZGVmYXVsdENvbXBhcmU7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID4gMikge1xuICAgIGNvbXBhcmVGbiA9IChfYyA9IGFyZ3NbMV0pICE9IG51bGwgPyBfYyA6IGRlZmF1bHRDb21wYXJlO1xuICAgIG9wdGlvbnMgPSAoX2QgPSBhcmdzWzJdKSAhPSBudWxsID8gX2QgOiB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgZGlydHkgPSBmYWxzZSxcbiAgICBzb3J0Rm4gPSBkZWZhdWx0U29ydEZuXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIWRpcnR5KVxuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHNvcnRGbihbLi4uc2hhcmVkLnRvVmFsdWUoc291cmNlKV0sIGNvbXBhcmVGbikpO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBzb3J0Rm4oc2hhcmVkLnRvVmFsdWUoc291cmNlKSwgY29tcGFyZUZuKTtcbiAgICBpZiAodnVlRGVtaS5pc1JlZihzb3VyY2UpKVxuICAgICAgc291cmNlLnZhbHVlID0gcmVzdWx0O1xuICAgIGVsc2VcbiAgICAgIHNvdXJjZS5zcGxpY2UoMCwgc291cmNlLmxlbmd0aCwgLi4ucmVzdWx0KTtcbiAgfSk7XG4gIHJldHVybiBzb3VyY2U7XG59XG5cbmZ1bmN0aW9uIHVzZVNwZWVjaFJlY29nbml0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZXJpbVJlc3VsdHMgPSB0cnVlLFxuICAgIGNvbnRpbnVvdXMgPSB0cnVlLFxuICAgIG1heEFsdGVybmF0aXZlcyA9IDEsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbGFuZyA9IHNoYXJlZC50b1JlZihvcHRpb25zLmxhbmcgfHwgXCJlbi1VU1wiKTtcbiAgY29uc3QgaXNMaXN0ZW5pbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzRmluYWwgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZih2b2lkIDApO1xuICBjb25zdCB0b2dnbGUgPSAodmFsdWUgPSAhaXNMaXN0ZW5pbmcudmFsdWUpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IHZhbHVlO1xuICB9O1xuICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgaXNMaXN0ZW5pbmcudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgY29uc3QgU3BlZWNoUmVjb2duaXRpb24gPSB3aW5kb3cgJiYgKHdpbmRvdy5TcGVlY2hSZWNvZ25pdGlvbiB8fCB3aW5kb3cud2Via2l0U3BlZWNoUmVjb2duaXRpb24pO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBTcGVlY2hSZWNvZ25pdGlvbik7XG4gIGxldCByZWNvZ25pdGlvbjtcbiAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTtcbiAgICByZWNvZ25pdGlvbi5jb250aW51b3VzID0gY29udGludW91cztcbiAgICByZWNvZ25pdGlvbi5pbnRlcmltUmVzdWx0cyA9IGludGVyaW1SZXN1bHRzO1xuICAgIHJlY29nbml0aW9uLmxhbmcgPSBzaGFyZWQudG9WYWx1ZShsYW5nKTtcbiAgICByZWNvZ25pdGlvbi5tYXhBbHRlcm5hdGl2ZXMgPSBtYXhBbHRlcm5hdGl2ZXM7XG4gICAgcmVjb2duaXRpb24ub25zdGFydCA9ICgpID0+IHtcbiAgICAgIGlzRmluYWwudmFsdWUgPSBmYWxzZTtcbiAgICB9O1xuICAgIHZ1ZURlbWkud2F0Y2gobGFuZywgKGxhbmcyKSA9PiB7XG4gICAgICBpZiAocmVjb2duaXRpb24gJiYgIWlzTGlzdGVuaW5nLnZhbHVlKVxuICAgICAgICByZWNvZ25pdGlvbi5sYW5nID0gbGFuZzI7XG4gICAgfSk7XG4gICAgcmVjb2duaXRpb24ub25yZXN1bHQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRSZXN1bHQgPSBldmVudC5yZXN1bHRzW2V2ZW50LnJlc3VsdEluZGV4XTtcbiAgICAgIGNvbnN0IHsgdHJhbnNjcmlwdCB9ID0gY3VycmVudFJlc3VsdFswXTtcbiAgICAgIGlzRmluYWwudmFsdWUgPSBjdXJyZW50UmVzdWx0LmlzRmluYWw7XG4gICAgICByZXN1bHQudmFsdWUgPSB0cmFuc2NyaXB0O1xuICAgICAgZXJyb3IudmFsdWUgPSB2b2lkIDA7XG4gICAgfTtcbiAgICByZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IGV2ZW50O1xuICAgIH07XG4gICAgcmVjb2duaXRpb24ub25lbmQgPSAoKSA9PiB7XG4gICAgICBpc0xpc3RlbmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgcmVjb2duaXRpb24ubGFuZyA9IHNoYXJlZC50b1ZhbHVlKGxhbmcpO1xuICAgIH07XG4gICAgdnVlRGVtaS53YXRjaChpc0xpc3RlbmluZywgKCkgPT4ge1xuICAgICAgaWYgKGlzTGlzdGVuaW5nLnZhbHVlKVxuICAgICAgICByZWNvZ25pdGlvbi5zdGFydCgpO1xuICAgICAgZWxzZVxuICAgICAgICByZWNvZ25pdGlvbi5zdG9wKCk7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IGZhbHNlO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0xpc3RlbmluZyxcbiAgICBpc0ZpbmFsLFxuICAgIHJlY29nbml0aW9uLFxuICAgIHJlc3VsdCxcbiAgICBlcnJvcixcbiAgICB0b2dnbGUsXG4gICAgc3RhcnQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTcGVlY2hTeW50aGVzaXModGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwaXRjaCA9IDEsXG4gICAgcmF0ZSA9IDEsXG4gICAgdm9sdW1lID0gMSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzeW50aCA9IHdpbmRvdyAmJiB3aW5kb3cuc3BlZWNoU3ludGhlc2lzO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiBzeW50aCk7XG4gIGNvbnN0IGlzUGxheWluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgc3RhdHVzID0gdnVlRGVtaS5yZWYoXCJpbml0XCIpO1xuICBjb25zdCBzcG9rZW5UZXh0ID0gc2hhcmVkLnRvUmVmKHRleHQgfHwgXCJcIik7XG4gIGNvbnN0IGxhbmcgPSBzaGFyZWQudG9SZWYob3B0aW9ucy5sYW5nIHx8IFwiZW4tVVNcIik7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKHZvaWQgMCk7XG4gIGNvbnN0IHRvZ2dsZSA9ICh2YWx1ZSA9ICFpc1BsYXlpbmcudmFsdWUpID0+IHtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSB2YWx1ZTtcbiAgfTtcbiAgY29uc3QgYmluZEV2ZW50c0ZvclV0dGVyYW5jZSA9ICh1dHRlcmFuY2UyKSA9PiB7XG4gICAgdXR0ZXJhbmNlMi5sYW5nID0gc2hhcmVkLnRvVmFsdWUobGFuZyk7XG4gICAgdXR0ZXJhbmNlMi52b2ljZSA9IHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMudm9pY2UpIHx8IG51bGw7XG4gICAgdXR0ZXJhbmNlMi5waXRjaCA9IHNoYXJlZC50b1ZhbHVlKHBpdGNoKTtcbiAgICB1dHRlcmFuY2UyLnJhdGUgPSBzaGFyZWQudG9WYWx1ZShyYXRlKTtcbiAgICB1dHRlcmFuY2UyLnZvbHVtZSA9IHZvbHVtZTtcbiAgICB1dHRlcmFuY2UyLm9uc3RhcnQgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJwbGF5XCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9ucGF1c2UgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwicGF1c2VcIjtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25yZXN1bWUgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJwbGF5XCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9uZW5kID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcImVuZFwiO1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IGV2ZW50O1xuICAgIH07XG4gIH07XG4gIGNvbnN0IHV0dGVyYW5jZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiaW5pdFwiO1xuICAgIGNvbnN0IG5ld1V0dGVyYW5jZSA9IG5ldyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uoc3Bva2VuVGV4dC52YWx1ZSk7XG4gICAgYmluZEV2ZW50c0ZvclV0dGVyYW5jZShuZXdVdHRlcmFuY2UpO1xuICAgIHJldHVybiBuZXdVdHRlcmFuY2U7XG4gIH0pO1xuICBjb25zdCBzcGVhayA9ICgpID0+IHtcbiAgICBzeW50aC5jYW5jZWwoKTtcbiAgICBpZiAodXR0ZXJhbmNlKVxuICAgICAgc3ludGguc3BlYWsodXR0ZXJhbmNlLnZhbHVlKTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBzeW50aC5jYW5jZWwoKTtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgYmluZEV2ZW50c0ZvclV0dGVyYW5jZSh1dHRlcmFuY2UudmFsdWUpO1xuICAgIHZ1ZURlbWkud2F0Y2gobGFuZywgKGxhbmcyKSA9PiB7XG4gICAgICBpZiAodXR0ZXJhbmNlLnZhbHVlICYmICFpc1BsYXlpbmcudmFsdWUpXG4gICAgICAgIHV0dGVyYW5jZS52YWx1ZS5sYW5nID0gbGFuZzI7XG4gICAgfSk7XG4gICAgaWYgKG9wdGlvbnMudm9pY2UpIHtcbiAgICAgIHZ1ZURlbWkud2F0Y2gob3B0aW9ucy52b2ljZSwgKCkgPT4ge1xuICAgICAgICBzeW50aC5jYW5jZWwoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2dWVEZW1pLndhdGNoKGlzUGxheWluZywgKCkgPT4ge1xuICAgICAgaWYgKGlzUGxheWluZy52YWx1ZSlcbiAgICAgICAgc3ludGgucmVzdW1lKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHN5bnRoLnBhdXNlKCk7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNQbGF5aW5nLFxuICAgIHN0YXR1cyxcbiAgICB1dHRlcmFuY2UsXG4gICAgZXJyb3IsXG4gICAgc3RvcCxcbiAgICB0b2dnbGUsXG4gICAgc3BlYWtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RlcHBlcihzdGVwcywgaW5pdGlhbFN0ZXApIHtcbiAgY29uc3Qgc3RlcHNSZWYgPSB2dWVEZW1pLnJlZihzdGVwcyk7XG4gIGNvbnN0IHN0ZXBOYW1lcyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gQXJyYXkuaXNBcnJheShzdGVwc1JlZi52YWx1ZSkgPyBzdGVwc1JlZi52YWx1ZSA6IE9iamVjdC5rZXlzKHN0ZXBzUmVmLnZhbHVlKSk7XG4gIGNvbnN0IGluZGV4ID0gdnVlRGVtaS5yZWYoc3RlcE5hbWVzLnZhbHVlLmluZGV4T2YoaW5pdGlhbFN0ZXAgIT0gbnVsbCA/IGluaXRpYWxTdGVwIDogc3RlcE5hbWVzLnZhbHVlWzBdKSk7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGF0KGluZGV4LnZhbHVlKSk7XG4gIGNvbnN0IGlzRmlyc3QgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGluZGV4LnZhbHVlID09PSAwKTtcbiAgY29uc3QgaXNMYXN0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBpbmRleC52YWx1ZSA9PT0gc3RlcE5hbWVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuICBjb25zdCBuZXh0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdGVwTmFtZXMudmFsdWVbaW5kZXgudmFsdWUgKyAxXSk7XG4gIGNvbnN0IHByZXZpb3VzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdGVwTmFtZXMudmFsdWVbaW5kZXgudmFsdWUgLSAxXSk7XG4gIGZ1bmN0aW9uIGF0KGluZGV4Mikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0ZXBzUmVmLnZhbHVlKSlcbiAgICAgIHJldHVybiBzdGVwc1JlZi52YWx1ZVtpbmRleDJdO1xuICAgIHJldHVybiBzdGVwc1JlZi52YWx1ZVtzdGVwTmFtZXMudmFsdWVbaW5kZXgyXV07XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KHN0ZXApIHtcbiAgICBpZiAoIXN0ZXBOYW1lcy52YWx1ZS5pbmNsdWRlcyhzdGVwKSlcbiAgICAgIHJldHVybjtcbiAgICByZXR1cm4gYXQoc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkpO1xuICB9XG4gIGZ1bmN0aW9uIGdvVG8oc3RlcCkge1xuICAgIGlmIChzdGVwTmFtZXMudmFsdWUuaW5jbHVkZXMoc3RlcCkpXG4gICAgICBpbmRleC52YWx1ZSA9IHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApO1xuICB9XG4gIGZ1bmN0aW9uIGdvVG9OZXh0KCkge1xuICAgIGlmIChpc0xhc3QudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaW5kZXgudmFsdWUrKztcbiAgfVxuICBmdW5jdGlvbiBnb1RvUHJldmlvdXMoKSB7XG4gICAgaWYgKGlzRmlyc3QudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaW5kZXgudmFsdWUtLTtcbiAgfVxuICBmdW5jdGlvbiBnb0JhY2tUbyhzdGVwKSB7XG4gICAgaWYgKGlzQWZ0ZXIoc3RlcCkpXG4gICAgICBnb1RvKHN0ZXApO1xuICB9XG4gIGZ1bmN0aW9uIGlzTmV4dChzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApID09PSBpbmRleC52YWx1ZSArIDE7XG4gIH1cbiAgZnVuY3Rpb24gaXNQcmV2aW91cyhzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApID09PSBpbmRleC52YWx1ZSAtIDE7XG4gIH1cbiAgZnVuY3Rpb24gaXNDdXJyZW50KHN0ZXApIHtcbiAgICByZXR1cm4gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkgPT09IGluZGV4LnZhbHVlO1xuICB9XG4gIGZ1bmN0aW9uIGlzQmVmb3JlKHN0ZXApIHtcbiAgICByZXR1cm4gaW5kZXgudmFsdWUgPCBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKTtcbiAgfVxuICBmdW5jdGlvbiBpc0FmdGVyKHN0ZXApIHtcbiAgICByZXR1cm4gaW5kZXgudmFsdWUgPiBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXBzOiBzdGVwc1JlZixcbiAgICBzdGVwTmFtZXMsXG4gICAgaW5kZXgsXG4gICAgY3VycmVudCxcbiAgICBuZXh0LFxuICAgIHByZXZpb3VzLFxuICAgIGlzRmlyc3QsXG4gICAgaXNMYXN0LFxuICAgIGF0LFxuICAgIGdldCxcbiAgICBnb1RvLFxuICAgIGdvVG9OZXh0LFxuICAgIGdvVG9QcmV2aW91cyxcbiAgICBnb0JhY2tUbyxcbiAgICBpc05leHQsXG4gICAgaXNQcmV2aW91cyxcbiAgICBpc0N1cnJlbnQsXG4gICAgaXNCZWZvcmUsXG4gICAgaXNBZnRlclxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmMoa2V5LCBpbml0aWFsVmFsdWUsIHN0b3JhZ2UsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwicHJlXCIsXG4gICAgZGVlcCA9IHRydWUsXG4gICAgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyA9IHRydWUsXG4gICAgd3JpdGVEZWZhdWx0cyA9IHRydWUsXG4gICAgbWVyZ2VEZWZhdWx0cyA9IGZhbHNlLFxuICAgIHNoYWxsb3csXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlcixcbiAgICBvbkVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmF3SW5pdCA9IHNoYXJlZC50b1ZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHR5cGUgPSBndWVzc1NlcmlhbGl6ZXJUeXBlKHJhd0luaXQpO1xuICBjb25zdCBkYXRhID0gKHNoYWxsb3cgPyB2dWVEZW1pLnNoYWxsb3dSZWYgOiB2dWVEZW1pLnJlZikoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qgc2VyaWFsaXplciA9IChfYSA9IG9wdGlvbnMuc2VyaWFsaXplcikgIT0gbnVsbCA/IF9hIDogU3RvcmFnZVNlcmlhbGl6ZXJzW3R5cGVdO1xuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgc3RvcmFnZSA9IGdldFNTUkhhbmRsZXIoXCJnZXREZWZhdWx0U3RvcmFnZUFzeW5jXCIsICgpID0+IHtcbiAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgcmV0dXJuIChfYTIgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmxvY2FsU3RvcmFnZTtcbiAgICAgIH0pKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcmVhZChldmVudCkge1xuICAgIGlmICghc3RvcmFnZSB8fCBldmVudCAmJiBldmVudC5rZXkgIT09IGtleSlcbiAgICAgIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3VmFsdWUgPSBldmVudCA/IGV2ZW50Lm5ld1ZhbHVlIDogYXdhaXQgc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAocmF3VmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBkYXRhLnZhbHVlID0gcmF3SW5pdDtcbiAgICAgICAgaWYgKHdyaXRlRGVmYXVsdHMgJiYgcmF3SW5pdCAhPT0gbnVsbClcbiAgICAgICAgICBhd2FpdCBzdG9yYWdlLnNldEl0ZW0oa2V5LCBhd2FpdCBzZXJpYWxpemVyLndyaXRlKHJhd0luaXQpKTtcbiAgICAgIH0gZWxzZSBpZiAobWVyZ2VEZWZhdWx0cykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHNlcmlhbGl6ZXIucmVhZChyYXdWYWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgbWVyZ2VEZWZhdWx0cyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIGRhdGEudmFsdWUgPSBtZXJnZURlZmF1bHRzKHZhbHVlLCByYXdJbml0KTtcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgZGF0YS52YWx1ZSA9IHsgLi4ucmF3SW5pdCwgLi4udmFsdWUgfTtcbiAgICAgICAgZWxzZSBkYXRhLnZhbHVlID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLnZhbHVlID0gYXdhaXQgc2VyaWFsaXplci5yZWFkKHJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICByZWFkKCk7XG4gIGlmICh3aW5kb3cgJiYgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcylcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJzdG9yYWdlXCIsIChlKSA9PiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHJlYWQoZSkpKTtcbiAgaWYgKHN0b3JhZ2UpIHtcbiAgICBzaGFyZWQud2F0Y2hXaXRoRmlsdGVyKFxuICAgICAgZGF0YSxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoZGF0YS52YWx1ZSA9PSBudWxsKVxuICAgICAgICAgICAgYXdhaXQgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgc3RvcmFnZS5zZXRJdGVtKGtleSwgYXdhaXQgc2VyaWFsaXplci53cml0ZShkYXRhLnZhbHVlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvbkVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmbHVzaCxcbiAgICAgICAgZGVlcCxcbiAgICAgICAgZXZlbnRGaWx0ZXJcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5sZXQgX2lkID0gMDtcbmZ1bmN0aW9uIHVzZVN0eWxlVGFnKGNzcywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGlzTG9hZGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBtYW51YWwgPSBmYWxzZSxcbiAgICBpZCA9IGB2dWV1c2Vfc3R5bGV0YWdfJHsrK19pZH1gXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjc3NSZWYgPSB2dWVEZW1pLnJlZihjc3MpO1xuICBsZXQgc3RvcCA9ICgpID0+IHtcbiAgfTtcbiAgY29uc3QgbG9hZCA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICBpZiAoIWVsLmlzQ29ubmVjdGVkKSB7XG4gICAgICBlbC5pZCA9IGlkO1xuICAgICAgaWYgKG9wdGlvbnMubWVkaWEpXG4gICAgICAgIGVsLm1lZGlhID0gb3B0aW9ucy5tZWRpYTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWwpO1xuICAgIH1cbiAgICBpZiAoaXNMb2FkZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goXG4gICAgICBjc3NSZWYsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICAgKTtcbiAgICBpc0xvYWRlZC52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHVubG9hZCA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50IHx8ICFpc0xvYWRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzdG9wKCk7XG4gICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpO1xuICAgIGlzTG9hZGVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIGlmIChpbW1lZGlhdGUgJiYgIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25Nb3VudGVkKGxvYWQpO1xuICBpZiAoIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UodW5sb2FkKTtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBjc3M6IGNzc1JlZixcbiAgICB1bmxvYWQsXG4gICAgbG9hZCxcbiAgICBpc0xvYWRlZDogdnVlRGVtaS5yZWFkb25seShpc0xvYWRlZClcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3dpcGUodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRocmVzaG9sZCA9IDUwLFxuICAgIG9uU3dpcGUsXG4gICAgb25Td2lwZUVuZCxcbiAgICBvblN3aXBlU3RhcnQsXG4gICAgcGFzc2l2ZSA9IHRydWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29vcmRzU3RhcnQgPSB2dWVEZW1pLnJlYWN0aXZlKHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgY29vcmRzRW5kID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IGRpZmZYID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjb29yZHNTdGFydC54IC0gY29vcmRzRW5kLngpO1xuICBjb25zdCBkaWZmWSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY29vcmRzU3RhcnQueSAtIGNvb3Jkc0VuZC55KTtcbiAgY29uc3QgeyBtYXgsIGFicyB9ID0gTWF0aDtcbiAgY29uc3QgaXNUaHJlc2hvbGRFeGNlZWRlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gbWF4KGFicyhkaWZmWC52YWx1ZSksIGFicyhkaWZmWS52YWx1ZSkpID49IHRocmVzaG9sZCk7XG4gIGNvbnN0IGlzU3dpcGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZGlyZWN0aW9uID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuIFwibm9uZVwiO1xuICAgIGlmIChhYnMoZGlmZlgudmFsdWUpID4gYWJzKGRpZmZZLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIGRpZmZYLnZhbHVlID4gMCA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGlmZlkudmFsdWUgPiAwID8gXCJ1cFwiIDogXCJkb3duXCI7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZ2V0VG91Y2hFdmVudENvb3JkcyA9IChlKSA9PiBbZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZXTtcbiAgY29uc3QgdXBkYXRlQ29vcmRzU3RhcnQgPSAoeCwgeSkgPT4ge1xuICAgIGNvb3Jkc1N0YXJ0LnggPSB4O1xuICAgIGNvb3Jkc1N0YXJ0LnkgPSB5O1xuICB9O1xuICBjb25zdCB1cGRhdGVDb29yZHNFbmQgPSAoeCwgeSkgPT4ge1xuICAgIGNvb3Jkc0VuZC54ID0geDtcbiAgICBjb29yZHNFbmQueSA9IHk7XG4gIH07XG4gIGxldCBsaXN0ZW5lck9wdGlvbnM7XG4gIGNvbnN0IGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkID0gY2hlY2tQYXNzaXZlRXZlbnRTdXBwb3J0KHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KTtcbiAgaWYgKCFwYXNzaXZlKVxuICAgIGxpc3RlbmVyT3B0aW9ucyA9IGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkID8geyBwYXNzaXZlOiBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9IDogeyBjYXB0dXJlOiB0cnVlIH07XG4gIGVsc2VcbiAgICBsaXN0ZW5lck9wdGlvbnMgPSBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCA/IHsgcGFzc2l2ZTogdHJ1ZSB9IDogeyBjYXB0dXJlOiBmYWxzZSB9O1xuICBjb25zdCBvblRvdWNoRW5kID0gKGUpID0+IHtcbiAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgb25Td2lwZUVuZCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZUVuZChlLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgIGlzU3dpcGluZy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBjb25zdCBzdG9wcyA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaHN0YXJ0XCIsIChlKSA9PiB7XG4gICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCAhPT0gMSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGxpc3RlbmVyT3B0aW9ucy5jYXB0dXJlICYmICFsaXN0ZW5lck9wdGlvbnMucGFzc2l2ZSlcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgW3gsIHldID0gZ2V0VG91Y2hFdmVudENvb3JkcyhlKTtcbiAgICAgIHVwZGF0ZUNvb3Jkc1N0YXJ0KHgsIHkpO1xuICAgICAgdXBkYXRlQ29vcmRzRW5kKHgsIHkpO1xuICAgICAgb25Td2lwZVN0YXJ0ID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlU3RhcnQoZSk7XG4gICAgfSwgbGlzdGVuZXJPcHRpb25zKSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaG1vdmVcIiwgKGUpID0+IHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoICE9PSAxKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBbeCwgeV0gPSBnZXRUb3VjaEV2ZW50Q29vcmRzKGUpO1xuICAgICAgdXBkYXRlQ29vcmRzRW5kKHgsIHkpO1xuICAgICAgaWYgKCFpc1N3aXBpbmcudmFsdWUgJiYgaXNUaHJlc2hvbGRFeGNlZWRlZC52YWx1ZSlcbiAgICAgICAgaXNTd2lwaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGlmIChpc1N3aXBpbmcudmFsdWUpXG4gICAgICAgIG9uU3dpcGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGUoZSk7XG4gICAgfSwgbGlzdGVuZXJPcHRpb25zKSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgW1widG91Y2hlbmRcIiwgXCJ0b3VjaGNhbmNlbFwiXSwgb25Ub3VjaEVuZCwgbGlzdGVuZXJPcHRpb25zKVxuICBdO1xuICBjb25zdCBzdG9wID0gKCkgPT4gc3RvcHMuZm9yRWFjaCgocykgPT4gcygpKTtcbiAgcmV0dXJuIHtcbiAgICBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCxcbiAgICBpc1N3aXBpbmcsXG4gICAgZGlyZWN0aW9uLFxuICAgIGNvb3Jkc1N0YXJ0LFxuICAgIGNvb3Jkc0VuZCxcbiAgICBsZW5ndGhYOiBkaWZmWCxcbiAgICBsZW5ndGhZOiBkaWZmWSxcbiAgICBzdG9wXG4gIH07XG59XG5mdW5jdGlvbiBjaGVja1Bhc3NpdmVFdmVudFN1cHBvcnQoZG9jdW1lbnQpIHtcbiAgaWYgKCFkb2N1bWVudClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGxldCBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbiAgY29uc3Qgb3B0aW9uc0Jsb2NrID0ge1xuICAgIGdldCBwYXNzaXZlKCkge1xuICAgICAgc3VwcG9ydHNQYXNzaXZlID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ4XCIsIHNoYXJlZC5ub29wLCBvcHRpb25zQmxvY2spO1xuICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwieFwiLCBzaGFyZWQubm9vcCk7XG4gIHJldHVybiBzdXBwb3J0c1Bhc3NpdmU7XG59XG5cbmZ1bmN0aW9uIHVzZVRlbXBsYXRlUmVmc0xpc3QoKSB7XG4gIGNvbnN0IHJlZnMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIHJlZnMudmFsdWUuc2V0ID0gKGVsKSA9PiB7XG4gICAgaWYgKGVsKVxuICAgICAgcmVmcy52YWx1ZS5wdXNoKGVsKTtcbiAgfTtcbiAgdnVlRGVtaS5vbkJlZm9yZVVwZGF0ZSgoKSA9PiB7XG4gICAgcmVmcy52YWx1ZS5sZW5ndGggPSAwO1xuICB9KTtcbiAgcmV0dXJuIHJlZnM7XG59XG5cbmZ1bmN0aW9uIHVzZVRleHREaXJlY3Rpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBzZWxlY3RvciA9IFwiaHRtbFwiLFxuICAgIG9ic2VydmUgPSBmYWxzZSxcbiAgICBpbml0aWFsVmFsdWUgPSBcImx0clwiXG4gIH0gPSBvcHRpb25zO1xuICBmdW5jdGlvbiBnZXRWYWx1ZSgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5nZXRBdHRyaWJ1dGUoXCJkaXJcIikpICE9IG51bGwgPyBfYiA6IGluaXRpYWxWYWx1ZTtcbiAgfVxuICBjb25zdCBkaXIgPSB2dWVEZW1pLnJlZihnZXRWYWx1ZSgpKTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiBkaXIudmFsdWUgPSBnZXRWYWx1ZSgpKTtcbiAgaWYgKG9ic2VydmUgJiYgZG9jdW1lbnQpIHtcbiAgICB1c2VNdXRhdGlvbk9ic2VydmVyKFxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvciksXG4gICAgICAoKSA9PiBkaXIudmFsdWUgPSBnZXRWYWx1ZSgpLFxuICAgICAgeyBhdHRyaWJ1dGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gZGlyLnZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBkaXIudmFsdWUgPSB2O1xuICAgICAgaWYgKCFkb2N1bWVudClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGRpci52YWx1ZSlcbiAgICAgICAgKF9hID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zZXRBdHRyaWJ1dGUoXCJkaXJcIiwgZGlyLnZhbHVlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgKF9iID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5yZW1vdmVBdHRyaWJ1dGUoXCJkaXJcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UmFuZ2VzRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgdmFyIF9hO1xuICBjb25zdCByYW5nZUNvdW50ID0gKF9hID0gc2VsZWN0aW9uLnJhbmdlQ291bnQpICE9IG51bGwgPyBfYSA6IDA7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiByYW5nZUNvdW50IH0sIChfLCBpKSA9PiBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKSk7XG59XG5mdW5jdGlvbiB1c2VUZXh0U2VsZWN0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2VsZWN0aW9uID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHRleHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3Rpb24udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpKSAhPSBudWxsID8gX2IgOiBcIlwiO1xuICB9KTtcbiAgY29uc3QgcmFuZ2VzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzZWxlY3Rpb24udmFsdWUgPyBnZXRSYW5nZXNGcm9tU2VsZWN0aW9uKHNlbGVjdGlvbi52YWx1ZSkgOiBbXSk7XG4gIGNvbnN0IHJlY3RzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiByYW5nZXMudmFsdWUubWFwKChyYW5nZSkgPT4gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtcbiAgZnVuY3Rpb24gb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgc2VsZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBpZiAod2luZG93KVxuICAgICAgc2VsZWN0aW9uLnZhbHVlID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICB9XG4gIGlmICh3aW5kb3cpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3cuZG9jdW1lbnQsIFwic2VsZWN0aW9uY2hhbmdlXCIsIG9uU2VsZWN0aW9uQ2hhbmdlKTtcbiAgcmV0dXJuIHtcbiAgICB0ZXh0LFxuICAgIHJlY3RzLFxuICAgIHJhbmdlcyxcbiAgICBzZWxlY3Rpb25cbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVGV4dGFyZWFBdXRvc2l6ZShvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgdGV4dGFyZWEgPSB2dWVEZW1pLnJlZihvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmVsZW1lbnQpO1xuICBjb25zdCBpbnB1dCA9IHZ1ZURlbWkucmVmKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW5wdXQpO1xuICBjb25zdCBzdHlsZVByb3AgPSAoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnN0eWxlUHJvcCkgIT0gbnVsbCA/IF9hIDogXCJoZWlnaHRcIjtcbiAgY29uc3QgdGV4dGFyZWFTY3JvbGxIZWlnaHQgPSB2dWVEZW1pLnJlZigxKTtcbiAgY29uc3QgdGV4dGFyZWFPbGRXaWR0aCA9IHZ1ZURlbWkucmVmKDApO1xuICBmdW5jdGlvbiB0cmlnZ2VyUmVzaXplKCkge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCF0ZXh0YXJlYS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgaGVpZ2h0ID0gXCJcIjtcbiAgICB0ZXh0YXJlYS52YWx1ZS5zdHlsZVtzdHlsZVByb3BdID0gXCIxcHhcIjtcbiAgICB0ZXh0YXJlYVNjcm9sbEhlaWdodC52YWx1ZSA9IChfYTIgPSB0ZXh0YXJlYS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgX3N0eWxlVGFyZ2V0ID0gc2hhcmVkLnRvVmFsdWUob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5zdHlsZVRhcmdldCk7XG4gICAgaWYgKF9zdHlsZVRhcmdldClcbiAgICAgIF9zdHlsZVRhcmdldC5zdHlsZVtzdHlsZVByb3BdID0gYCR7dGV4dGFyZWFTY3JvbGxIZWlnaHQudmFsdWV9cHhgO1xuICAgIGVsc2VcbiAgICAgIGhlaWdodCA9IGAke3RleHRhcmVhU2Nyb2xsSGVpZ2h0LnZhbHVlfXB4YDtcbiAgICB0ZXh0YXJlYS52YWx1ZS5zdHlsZVtzdHlsZVByb3BdID0gaGVpZ2h0O1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goW2lucHV0LCB0ZXh0YXJlYV0sICgpID0+IHZ1ZURlbWkubmV4dFRpY2sodHJpZ2dlclJlc2l6ZSksIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICB2dWVEZW1pLndhdGNoKHRleHRhcmVhU2Nyb2xsSGVpZ2h0LCAoKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICByZXR1cm4gKF9hMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMub25SZXNpemUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChvcHRpb25zKTtcbiAgfSk7XG4gIHVzZVJlc2l6ZU9ic2VydmVyKHRleHRhcmVhLCAoW3sgY29udGVudFJlY3QgfV0pID0+IHtcbiAgICBpZiAodGV4dGFyZWFPbGRXaWR0aC52YWx1ZSA9PT0gY29udGVudFJlY3Qud2lkdGgpXG4gICAgICByZXR1cm47XG4gICAgdGV4dGFyZWFPbGRXaWR0aC52YWx1ZSA9IGNvbnRlbnRSZWN0LndpZHRoO1xuICAgIHRyaWdnZXJSZXNpemUoKTtcbiAgfSk7XG4gIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLndhdGNoKVxuICAgIHZ1ZURlbWkud2F0Y2gob3B0aW9ucy53YXRjaCwgdHJpZ2dlclJlc2l6ZSwgeyBpbW1lZGlhdGU6IHRydWUsIGRlZXA6IHRydWUgfSk7XG4gIHJldHVybiB7XG4gICAgdGV4dGFyZWEsXG4gICAgaW5wdXQsXG4gICAgdHJpZ2dlclJlc2l6ZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgdGhyb3R0bGUgPSAyMDAsIHRyYWlsaW5nID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmlsdGVyID0gc2hhcmVkLnRocm90dGxlRmlsdGVyKHRocm90dGxlLCB0cmFpbGluZyk7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VSZWZIaXN0b3J5KHNvdXJjZSwgeyAuLi5vcHRpb25zLCBldmVudEZpbHRlcjogZmlsdGVyIH0pO1xuICByZXR1cm4ge1xuICAgIC4uLmhpc3RvcnlcbiAgfTtcbn1cblxuY29uc3QgREVGQVVMVF9VTklUUyA9IFtcbiAgeyBtYXg6IDZlNCwgdmFsdWU6IDFlMywgbmFtZTogXCJzZWNvbmRcIiB9LFxuICB7IG1heDogMjc2ZTQsIHZhbHVlOiA2ZTQsIG5hbWU6IFwibWludXRlXCIgfSxcbiAgeyBtYXg6IDcyZTYsIHZhbHVlOiAzNmU1LCBuYW1lOiBcImhvdXJcIiB9LFxuICB7IG1heDogNTE4NGU1LCB2YWx1ZTogODY0ZTUsIG5hbWU6IFwiZGF5XCIgfSxcbiAgeyBtYXg6IDI0MTkyZTUsIHZhbHVlOiA2MDQ4ZTUsIG5hbWU6IFwid2Vla1wiIH0sXG4gIHsgbWF4OiAyODUxMmU2LCB2YWx1ZTogMjU5MmU2LCBuYW1lOiBcIm1vbnRoXCIgfSxcbiAgeyBtYXg6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgdmFsdWU6IDMxNTM2ZTYsIG5hbWU6IFwieWVhclwiIH1cbl07XG5jb25zdCBERUZBVUxUX01FU1NBR0VTID0ge1xuICBqdXN0Tm93OiBcImp1c3Qgbm93XCIsXG4gIHBhc3Q6IChuKSA9PiBuLm1hdGNoKC9cXGQvKSA/IGAke259IGFnb2AgOiBuLFxuICBmdXR1cmU6IChuKSA9PiBuLm1hdGNoKC9cXGQvKSA/IGBpbiAke259YCA6IG4sXG4gIG1vbnRoOiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcImxhc3QgbW9udGhcIiA6IFwibmV4dCBtb250aFwiIDogYCR7bn0gbW9udGgke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIHllYXI6IChuLCBwYXN0KSA9PiBuID09PSAxID8gcGFzdCA/IFwibGFzdCB5ZWFyXCIgOiBcIm5leHQgeWVhclwiIDogYCR7bn0geWVhciR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgZGF5OiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcInllc3RlcmRheVwiIDogXCJ0b21vcnJvd1wiIDogYCR7bn0gZGF5JHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICB3ZWVrOiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcImxhc3Qgd2Vla1wiIDogXCJuZXh0IHdlZWtcIiA6IGAke259IHdlZWske24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIGhvdXI6IChuKSA9PiBgJHtufSBob3VyJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICBtaW51dGU6IChuKSA9PiBgJHtufSBtaW51dGUke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIHNlY29uZDogKG4pID0+IGAke259IHNlY29uZCR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgaW52YWxpZDogXCJcIlxufTtcbmZ1bmN0aW9uIERFRkFVTFRfRk9STUFUVEVSKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCk7XG59XG5mdW5jdGlvbiB1c2VUaW1lQWdvKHRpbWUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgdXBkYXRlSW50ZXJ2YWwgPSAzZTRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgbm93LCAuLi5jb250cm9scyB9ID0gdXNlTm93KHsgaW50ZXJ2YWw6IHVwZGF0ZUludGVydmFsLCBjb250cm9sczogdHJ1ZSB9KTtcbiAgY29uc3QgdGltZUFnbyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZm9ybWF0VGltZUFnbyhuZXcgRGF0ZShzaGFyZWQudG9WYWx1ZSh0aW1lKSksIG9wdGlvbnMsIHNoYXJlZC50b1ZhbHVlKG5vdykpKTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVBZ28sXG4gICAgICAuLi5jb250cm9sc1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRpbWVBZ287XG4gIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdFRpbWVBZ28oZnJvbSwgb3B0aW9ucyA9IHt9LCBub3cgPSBEYXRlLm5vdygpKSB7XG4gIHZhciBfYTtcbiAgY29uc3Qge1xuICAgIG1heCxcbiAgICBtZXNzYWdlcyA9IERFRkFVTFRfTUVTU0FHRVMsXG4gICAgZnVsbERhdGVGb3JtYXR0ZXIgPSBERUZBVUxUX0ZPUk1BVFRFUixcbiAgICB1bml0cyA9IERFRkFVTFRfVU5JVFMsXG4gICAgc2hvd1NlY29uZCA9IGZhbHNlLFxuICAgIHJvdW5kaW5nID0gXCJyb3VuZFwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByb3VuZEZuID0gdHlwZW9mIHJvdW5kaW5nID09PSBcIm51bWJlclwiID8gKG4pID0+ICtuLnRvRml4ZWQocm91bmRpbmcpIDogTWF0aFtyb3VuZGluZ107XG4gIGNvbnN0IGRpZmYgPSArbm93IC0gK2Zyb207XG4gIGNvbnN0IGFic0RpZmYgPSBNYXRoLmFicyhkaWZmKTtcbiAgZnVuY3Rpb24gZ2V0VmFsdWUoZGlmZjIsIHVuaXQpIHtcbiAgICByZXR1cm4gcm91bmRGbihNYXRoLmFicyhkaWZmMikgLyB1bml0LnZhbHVlKTtcbiAgfVxuICBmdW5jdGlvbiBmb3JtYXQoZGlmZjIsIHVuaXQpIHtcbiAgICBjb25zdCB2YWwgPSBnZXRWYWx1ZShkaWZmMiwgdW5pdCk7XG4gICAgY29uc3QgcGFzdCA9IGRpZmYyID4gMDtcbiAgICBjb25zdCBzdHIgPSBhcHBseUZvcm1hdCh1bml0Lm5hbWUsIHZhbCwgcGFzdCk7XG4gICAgcmV0dXJuIGFwcGx5Rm9ybWF0KHBhc3QgPyBcInBhc3RcIiA6IFwiZnV0dXJlXCIsIHN0ciwgcGFzdCk7XG4gIH1cbiAgZnVuY3Rpb24gYXBwbHlGb3JtYXQobmFtZSwgdmFsLCBpc1Bhc3QpIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBtZXNzYWdlc1tuYW1lXTtcbiAgICBpZiAodHlwZW9mIGZvcm1hdHRlciA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgcmV0dXJuIGZvcm1hdHRlcih2YWwsIGlzUGFzdCk7XG4gICAgcmV0dXJuIGZvcm1hdHRlci5yZXBsYWNlKFwiezB9XCIsIHZhbC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoYWJzRGlmZiA8IDZlNCAmJiAhc2hvd1NlY29uZClcbiAgICByZXR1cm4gbWVzc2FnZXMuanVzdE5vdztcbiAgaWYgKHR5cGVvZiBtYXggPT09IFwibnVtYmVyXCIgJiYgYWJzRGlmZiA+IG1heClcbiAgICByZXR1cm4gZnVsbERhdGVGb3JtYXR0ZXIobmV3IERhdGUoZnJvbSkpO1xuICBpZiAodHlwZW9mIG1heCA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHVuaXRNYXggPSAoX2EgPSB1bml0cy5maW5kKChpKSA9PiBpLm5hbWUgPT09IG1heCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5tYXg7XG4gICAgaWYgKHVuaXRNYXggJiYgYWJzRGlmZiA+IHVuaXRNYXgpXG4gICAgICByZXR1cm4gZnVsbERhdGVGb3JtYXR0ZXIobmV3IERhdGUoZnJvbSkpO1xuICB9XG4gIGZvciAoY29uc3QgW2lkeCwgdW5pdF0gb2YgdW5pdHMuZW50cmllcygpKSB7XG4gICAgY29uc3QgdmFsID0gZ2V0VmFsdWUoZGlmZiwgdW5pdCk7XG4gICAgaWYgKHZhbCA8PSAwICYmIHVuaXRzW2lkeCAtIDFdKVxuICAgICAgcmV0dXJuIGZvcm1hdChkaWZmLCB1bml0c1tpZHggLSAxXSk7XG4gICAgaWYgKGFic0RpZmYgPCB1bml0Lm1heClcbiAgICAgIHJldHVybiBmb3JtYXQoZGlmZiwgdW5pdCk7XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2VzLmludmFsaWQ7XG59XG5cbmZ1bmN0aW9uIHVzZVRpbWVvdXRQb2xsKGZuLCBpbnRlcnZhbCwgdGltZW91dFBvbGxPcHRpb25zKSB7XG4gIGNvbnN0IHsgc3RhcnQgfSA9IHNoYXJlZC51c2VUaW1lb3V0Rm4obG9vcCwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiBmYWxzZSB9KTtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGFzeW5jIGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCBmbigpO1xuICAgIHN0YXJ0KCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGxvb3AoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgfVxuICBpZiAodGltZW91dFBvbGxPcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiB0aW1lb3V0UG9sbE9wdGlvbnMuaW1tZWRpYXRlKVxuICAgIHJlc3VtZSgpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UocGF1c2UpO1xuICByZXR1cm4ge1xuICAgIGlzQWN0aXZlLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUaW1lc3RhbXAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZSxcbiAgICBvZmZzZXQgPSAwLFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgaW50ZXJ2YWwgPSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLFxuICAgIGNhbGxiYWNrXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB0cyA9IHZ1ZURlbWkucmVmKHNoYXJlZC50aW1lc3RhbXAoKSArIG9mZnNldCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHRzLnZhbHVlID0gc2hhcmVkLnRpbWVzdGFtcCgpICsgb2Zmc2V0O1xuICBjb25zdCBjYiA9IGNhbGxiYWNrID8gKCkgPT4ge1xuICAgIHVwZGF0ZSgpO1xuICAgIGNhbGxiYWNrKHRzLnZhbHVlKTtcbiAgfSA6IHVwZGF0ZTtcbiAgY29uc3QgY29udHJvbHMgPSBpbnRlcnZhbCA9PT0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIiA/IHVzZVJhZkZuKGNiLCB7IGltbWVkaWF0ZSB9KSA6IHNoYXJlZC51c2VJbnRlcnZhbEZuKGNiLCBpbnRlcnZhbCwgeyBpbW1lZGlhdGUgfSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IHRzLFxuICAgICAgLi4uY29udHJvbHNcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0cztcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VUaXRsZShuZXdUaXRsZSA9IG51bGwsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iLCBfYztcbiAgY29uc3Qge1xuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIHJlc3RvcmVPblVubW91bnQgPSAodCkgPT4gdFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgb3JpZ2luYWxUaXRsZSA9IChfYSA9IGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC50aXRsZSkgIT0gbnVsbCA/IF9hIDogXCJcIjtcbiAgY29uc3QgdGl0bGUgPSBzaGFyZWQudG9SZWYoKF9iID0gbmV3VGl0bGUgIT0gbnVsbCA/IG5ld1RpdGxlIDogZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LnRpdGxlKSAhPSBudWxsID8gX2IgOiBudWxsKTtcbiAgY29uc3QgaXNSZWFkb25seSA9IG5ld1RpdGxlICYmIHR5cGVvZiBuZXdUaXRsZSA9PT0gXCJmdW5jdGlvblwiO1xuICBmdW5jdGlvbiBmb3JtYXQodCkge1xuICAgIGlmICghKFwidGl0bGVUZW1wbGF0ZVwiIGluIG9wdGlvbnMpKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBvcHRpb25zLnRpdGxlVGVtcGxhdGUgfHwgXCIlc1wiO1xuICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHRlbXBsYXRlKHQpIDogc2hhcmVkLnRvVmFsdWUodGVtcGxhdGUpLnJlcGxhY2UoLyVzL2csIHQpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goXG4gICAgdGl0bGUsXG4gICAgKHQsIG8pID0+IHtcbiAgICAgIGlmICh0ICE9PSBvICYmIGRvY3VtZW50KVxuICAgICAgICBkb2N1bWVudC50aXRsZSA9IGZvcm1hdCh0eXBlb2YgdCA9PT0gXCJzdHJpbmdcIiA/IHQgOiBcIlwiKTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbiAgaWYgKG9wdGlvbnMub2JzZXJ2ZSAmJiAhb3B0aW9ucy50aXRsZVRlbXBsYXRlICYmIGRvY3VtZW50ICYmICFpc1JlYWRvbmx5KSB7XG4gICAgdXNlTXV0YXRpb25PYnNlcnZlcihcbiAgICAgIChfYyA9IGRvY3VtZW50LmhlYWQpID09IG51bGwgPyB2b2lkIDAgOiBfYy5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIiksXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC50aXRsZSAhPT0gdGl0bGUudmFsdWUpXG4gICAgICAgICAgdGl0bGUudmFsdWUgPSBmb3JtYXQoZG9jdW1lbnQudGl0bGUpO1xuICAgICAgfSxcbiAgICAgIHsgY2hpbGRMaXN0OiB0cnVlIH1cbiAgICApO1xuICB9XG4gIHNoYXJlZC50cnlPbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlT25Vbm1vdW50KSB7XG4gICAgICBjb25zdCByZXN0b3JlZFRpdGxlID0gcmVzdG9yZU9uVW5tb3VudChvcmlnaW5hbFRpdGxlLCB0aXRsZS52YWx1ZSB8fCBcIlwiKTtcbiAgICAgIGlmIChyZXN0b3JlZFRpdGxlICE9IG51bGwgJiYgZG9jdW1lbnQpXG4gICAgICAgIGRvY3VtZW50LnRpdGxlID0gcmVzdG9yZWRUaXRsZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGl0bGU7XG59XG5cbmNvbnN0IF9UcmFuc2l0aW9uUHJlc2V0cyA9IHtcbiAgZWFzZUluU2luZTogWzAuMTIsIDAsIDAuMzksIDBdLFxuICBlYXNlT3V0U2luZTogWzAuNjEsIDEsIDAuODgsIDFdLFxuICBlYXNlSW5PdXRTaW5lOiBbMC4zNywgMCwgMC42MywgMV0sXG4gIGVhc2VJblF1YWQ6IFswLjExLCAwLCAwLjUsIDBdLFxuICBlYXNlT3V0UXVhZDogWzAuNSwgMSwgMC44OSwgMV0sXG4gIGVhc2VJbk91dFF1YWQ6IFswLjQ1LCAwLCAwLjU1LCAxXSxcbiAgZWFzZUluQ3ViaWM6IFswLjMyLCAwLCAwLjY3LCAwXSxcbiAgZWFzZU91dEN1YmljOiBbMC4zMywgMSwgMC42OCwgMV0sXG4gIGVhc2VJbk91dEN1YmljOiBbMC42NSwgMCwgMC4zNSwgMV0sXG4gIGVhc2VJblF1YXJ0OiBbMC41LCAwLCAwLjc1LCAwXSxcbiAgZWFzZU91dFF1YXJ0OiBbMC4yNSwgMSwgMC41LCAxXSxcbiAgZWFzZUluT3V0UXVhcnQ6IFswLjc2LCAwLCAwLjI0LCAxXSxcbiAgZWFzZUluUXVpbnQ6IFswLjY0LCAwLCAwLjc4LCAwXSxcbiAgZWFzZU91dFF1aW50OiBbMC4yMiwgMSwgMC4zNiwgMV0sXG4gIGVhc2VJbk91dFF1aW50OiBbMC44MywgMCwgMC4xNywgMV0sXG4gIGVhc2VJbkV4cG86IFswLjcsIDAsIDAuODQsIDBdLFxuICBlYXNlT3V0RXhwbzogWzAuMTYsIDEsIDAuMywgMV0sXG4gIGVhc2VJbk91dEV4cG86IFswLjg3LCAwLCAwLjEzLCAxXSxcbiAgZWFzZUluQ2lyYzogWzAuNTUsIDAsIDEsIDAuNDVdLFxuICBlYXNlT3V0Q2lyYzogWzAsIDAuNTUsIDAuNDUsIDFdLFxuICBlYXNlSW5PdXRDaXJjOiBbMC44NSwgMCwgMC4xNSwgMV0sXG4gIGVhc2VJbkJhY2s6IFswLjM2LCAwLCAwLjY2LCAtMC41Nl0sXG4gIGVhc2VPdXRCYWNrOiBbMC4zNCwgMS41NiwgMC42NCwgMV0sXG4gIGVhc2VJbk91dEJhY2s6IFswLjY4LCAtMC42LCAwLjMyLCAxLjZdXG59O1xuY29uc3QgVHJhbnNpdGlvblByZXNldHMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmFzc2lnbih7fSwgeyBsaW5lYXI6IHNoYXJlZC5pZGVudGl0eSB9LCBfVHJhbnNpdGlvblByZXNldHMpO1xuZnVuY3Rpb24gY3JlYXRlRWFzaW5nRnVuY3Rpb24oW3AwLCBwMSwgcDIsIHAzXSkge1xuICBjb25zdCBhID0gKGExLCBhMikgPT4gMSAtIDMgKiBhMiArIDMgKiBhMTtcbiAgY29uc3QgYiA9IChhMSwgYTIpID0+IDMgKiBhMiAtIDYgKiBhMTtcbiAgY29uc3QgYyA9IChhMSkgPT4gMyAqIGExO1xuICBjb25zdCBjYWxjQmV6aWVyID0gKHQsIGExLCBhMikgPT4gKChhKGExLCBhMikgKiB0ICsgYihhMSwgYTIpKSAqIHQgKyBjKGExKSkgKiB0O1xuICBjb25zdCBnZXRTbG9wZSA9ICh0LCBhMSwgYTIpID0+IDMgKiBhKGExLCBhMikgKiB0ICogdCArIDIgKiBiKGExLCBhMikgKiB0ICsgYyhhMSk7XG4gIGNvbnN0IGdldFRmb3JYID0gKHgpID0+IHtcbiAgICBsZXQgYUd1ZXNzVCA9IHg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTbG9wZSA9IGdldFNsb3BlKGFHdWVzc1QsIHAwLCBwMik7XG4gICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwKVxuICAgICAgICByZXR1cm4gYUd1ZXNzVDtcbiAgICAgIGNvbnN0IGN1cnJlbnRYID0gY2FsY0JlemllcihhR3Vlc3NULCBwMCwgcDIpIC0geDtcbiAgICAgIGFHdWVzc1QgLT0gY3VycmVudFggLyBjdXJyZW50U2xvcGU7XG4gICAgfVxuICAgIHJldHVybiBhR3Vlc3NUO1xuICB9O1xuICByZXR1cm4gKHgpID0+IHAwID09PSBwMSAmJiBwMiA9PT0gcDMgPyB4IDogY2FsY0JlemllcihnZXRUZm9yWCh4KSwgcDEsIHAzKTtcbn1cbmZ1bmN0aW9uIGxlcnAoYSwgYiwgYWxwaGEpIHtcbiAgcmV0dXJuIGEgKyBhbHBoYSAqIChiIC0gYSk7XG59XG5mdW5jdGlvbiB0b1ZlYyh0KSB7XG4gIHJldHVybiAodHlwZW9mIHQgPT09IFwibnVtYmVyXCIgPyBbdF0gOiB0KSB8fCBbXTtcbn1cbmZ1bmN0aW9uIGV4ZWN1dGVUcmFuc2l0aW9uKHNvdXJjZSwgZnJvbSwgdG8sIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBmcm9tVmFsID0gc2hhcmVkLnRvVmFsdWUoZnJvbSk7XG4gIGNvbnN0IHRvVmFsID0gc2hhcmVkLnRvVmFsdWUodG8pO1xuICBjb25zdCB2MSA9IHRvVmVjKGZyb21WYWwpO1xuICBjb25zdCB2MiA9IHRvVmVjKHRvVmFsKTtcbiAgY29uc3QgZHVyYXRpb24gPSAoX2EgPSBzaGFyZWQudG9WYWx1ZShvcHRpb25zLmR1cmF0aW9uKSkgIT0gbnVsbCA/IF9hIDogMWUzO1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICBjb25zdCBlbmRBdCA9IERhdGUubm93KCkgKyBkdXJhdGlvbjtcbiAgY29uc3QgdHJhbnMgPSB0eXBlb2Ygb3B0aW9ucy50cmFuc2l0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBvcHRpb25zLnRyYW5zaXRpb24gOiAoX2IgPSBzaGFyZWQudG9WYWx1ZShvcHRpb25zLnRyYW5zaXRpb24pKSAhPSBudWxsID8gX2IgOiBzaGFyZWQuaWRlbnRpdHk7XG4gIGNvbnN0IGVhc2UgPSB0eXBlb2YgdHJhbnMgPT09IFwiZnVuY3Rpb25cIiA/IHRyYW5zIDogY3JlYXRlRWFzaW5nRnVuY3Rpb24odHJhbnMpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzb3VyY2UudmFsdWUgPSBmcm9tVmFsO1xuICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgaWYgKChfYTIgPSBvcHRpb25zLmFib3J0KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNhbGwob3B0aW9ucykpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgYWxwaGEgPSBlYXNlKChub3cgLSBzdGFydGVkQXQpIC8gZHVyYXRpb24pO1xuICAgICAgY29uc3QgYXJyID0gdG9WZWMoc291cmNlLnZhbHVlKS5tYXAoKG4sIGkpID0+IGxlcnAodjFbaV0sIHYyW2ldLCBhbHBoYSkpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKSlcbiAgICAgICAgc291cmNlLnZhbHVlID0gYXJyLm1hcCgobiwgaSkgPT4ge1xuICAgICAgICAgIHZhciBfYTMsIF9iMjtcbiAgICAgICAgICByZXR1cm4gbGVycCgoX2EzID0gdjFbaV0pICE9IG51bGwgPyBfYTMgOiAwLCAoX2IyID0gdjJbaV0pICE9IG51bGwgPyBfYjIgOiAwLCBhbHBoYSk7XG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgc291cmNlLnZhbHVlID0gYXJyWzBdO1xuICAgICAgaWYgKG5vdyA8IGVuZEF0KSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZS52YWx1ZSA9IHRvVmFsO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aWNrKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvbihzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgY3VycmVudElkID0gMDtcbiAgY29uc3Qgc291cmNlVmFsID0gKCkgPT4ge1xuICAgIGNvbnN0IHYgPSBzaGFyZWQudG9WYWx1ZShzb3VyY2UpO1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiA/IHYgOiB2Lm1hcChzaGFyZWQudG9WYWx1ZSk7XG4gIH07XG4gIGNvbnN0IG91dHB1dFJlZiA9IHZ1ZURlbWkucmVmKHNvdXJjZVZhbCgpKTtcbiAgdnVlRGVtaS53YXRjaChzb3VyY2VWYWwsIGFzeW5jICh0bykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGlkID0gKytjdXJyZW50SWQ7XG4gICAgaWYgKG9wdGlvbnMuZGVsYXkpXG4gICAgICBhd2FpdCBzaGFyZWQucHJvbWlzZVRpbWVvdXQoc2hhcmVkLnRvVmFsdWUob3B0aW9ucy5kZWxheSkpO1xuICAgIGlmIChpZCAhPT0gY3VycmVudElkKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHRvVmFsID0gQXJyYXkuaXNBcnJheSh0bykgPyB0by5tYXAoc2hhcmVkLnRvVmFsdWUpIDogc2hhcmVkLnRvVmFsdWUodG8pO1xuICAgIChfYSA9IG9wdGlvbnMub25TdGFydGVkKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChvcHRpb25zKTtcbiAgICBhd2FpdCBleGVjdXRlVHJhbnNpdGlvbihvdXRwdXRSZWYsIG91dHB1dFJlZi52YWx1ZSwgdG9WYWwsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhYm9ydDogKCkgPT4ge1xuICAgICAgICB2YXIgX2EyO1xuICAgICAgICByZXR1cm4gaWQgIT09IGN1cnJlbnRJZCB8fCAoKF9hMiA9IG9wdGlvbnMuYWJvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChvcHRpb25zKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgKF9iID0gb3B0aW9ucy5vbkZpbmlzaGVkKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChvcHRpb25zKTtcbiAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpLCAoZGlzYWJsZWQpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGN1cnJlbnRJZCsrO1xuICAgICAgb3V0cHV0UmVmLnZhbHVlID0gc291cmNlVmFsKCk7XG4gICAgfVxuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBjdXJyZW50SWQrKztcbiAgfSk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHNoYXJlZC50b1ZhbHVlKG9wdGlvbnMuZGlzYWJsZWQpID8gc291cmNlVmFsKCkgOiBvdXRwdXRSZWYudmFsdWUpO1xufVxuXG5mdW5jdGlvbiB1c2VVcmxTZWFyY2hQYXJhbXMobW9kZSA9IFwiaGlzdG9yeVwiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxWYWx1ZSA9IHt9LFxuICAgIHJlbW92ZU51bGxpc2hWYWx1ZXMgPSB0cnVlLFxuICAgIHJlbW92ZUZhbHN5VmFsdWVzID0gZmFsc2UsXG4gICAgd3JpdGU6IGVuYWJsZVdyaXRlID0gdHJ1ZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVhY3RpdmUoe30pO1xuICBmdW5jdGlvbiBnZXRSYXdQYXJhbXMoKSB7XG4gICAgaWYgKG1vZGUgPT09IFwiaGlzdG9yeVwiKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnNlYXJjaCB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gXCJoYXNoXCIpIHtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaCB8fCBcIlwiO1xuICAgICAgY29uc3QgaW5kZXggPSBoYXNoLmluZGV4T2YoXCI/XCIpO1xuICAgICAgcmV0dXJuIGluZGV4ID4gMCA/IGhhc2guc2xpY2UoaW5kZXgpIDogXCJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICh3aW5kb3cubG9jYXRpb24uaGFzaCB8fCBcIlwiKS5yZXBsYWNlKC9eIy8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjb25zdHJ1Y3RRdWVyeShwYXJhbXMpIHtcbiAgICBjb25zdCBzdHJpbmdpZmllZCA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIGlmIChtb2RlID09PSBcImhpc3RvcnlcIilcbiAgICAgIHJldHVybiBgJHtzdHJpbmdpZmllZCA/IGA/JHtzdHJpbmdpZmllZH1gIDogXCJcIn0ke3dpbmRvdy5sb2NhdGlvbi5oYXNoIHx8IFwiXCJ9YDtcbiAgICBpZiAobW9kZSA9PT0gXCJoYXNoLXBhcmFtc1wiKVxuICAgICAgcmV0dXJuIGAke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2ggfHwgXCJcIn0ke3N0cmluZ2lmaWVkID8gYCMke3N0cmluZ2lmaWVkfWAgOiBcIlwifWA7XG4gICAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8IFwiI1wiO1xuICAgIGNvbnN0IGluZGV4ID0gaGFzaC5pbmRleE9mKFwiP1wiKTtcbiAgICBpZiAoaW5kZXggPiAwKVxuICAgICAgcmV0dXJuIGAke2hhc2guc2xpY2UoMCwgaW5kZXgpfSR7c3RyaW5naWZpZWQgPyBgPyR7c3RyaW5naWZpZWR9YCA6IFwiXCJ9YDtcbiAgICByZXR1cm4gYCR7aGFzaH0ke3N0cmluZ2lmaWVkID8gYD8ke3N0cmluZ2lmaWVkfWAgOiBcIlwifWA7XG4gIH1cbiAgZnVuY3Rpb24gcmVhZCgpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhnZXRSYXdQYXJhbXMoKSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlU3RhdGUocGFyYW1zKSB7XG4gICAgY29uc3QgdW51c2VkS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoc3RhdGUpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBwYXJhbXMua2V5cygpKSB7XG4gICAgICBjb25zdCBwYXJhbXNGb3JLZXkgPSBwYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICBzdGF0ZVtrZXldID0gcGFyYW1zRm9yS2V5Lmxlbmd0aCA+IDEgPyBwYXJhbXNGb3JLZXkgOiBwYXJhbXMuZ2V0KGtleSkgfHwgXCJcIjtcbiAgICAgIHVudXNlZEtleXMuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIEFycmF5LmZyb20odW51c2VkS2V5cykuZm9yRWFjaCgoa2V5KSA9PiBkZWxldGUgc3RhdGVba2V5XSk7XG4gIH1cbiAgY29uc3QgeyBwYXVzZSwgcmVzdW1lIH0gPSBzaGFyZWQucGF1c2FibGVXYXRjaChcbiAgICBzdGF0ZSxcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKFwiXCIpO1xuICAgICAgT2JqZWN0LmtleXMoc3RhdGUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBtYXBFbnRyeSA9IHN0YXRlW2tleV07XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hcEVudHJ5KSlcbiAgICAgICAgICBtYXBFbnRyeS5mb3JFYWNoKCh2YWx1ZSkgPT4gcGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKSk7XG4gICAgICAgIGVsc2UgaWYgKHJlbW92ZU51bGxpc2hWYWx1ZXMgJiYgbWFwRW50cnkgPT0gbnVsbClcbiAgICAgICAgICBwYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGVsc2UgaWYgKHJlbW92ZUZhbHN5VmFsdWVzICYmICFtYXBFbnRyeSlcbiAgICAgICAgICBwYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwYXJhbXMuc2V0KGtleSwgbWFwRW50cnkpO1xuICAgICAgfSk7XG4gICAgICB3cml0ZShwYXJhbXMpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlIH1cbiAgKTtcbiAgZnVuY3Rpb24gd3JpdGUocGFyYW1zLCBzaG91bGRVcGRhdGUpIHtcbiAgICBwYXVzZSgpO1xuICAgIGlmIChzaG91bGRVcGRhdGUpXG4gICAgICB1cGRhdGVTdGF0ZShwYXJhbXMpO1xuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnN0YXRlLFxuICAgICAgd2luZG93LmRvY3VtZW50LnRpdGxlLFxuICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgY29uc3RydWN0UXVlcnkocGFyYW1zKVxuICAgICk7XG4gICAgcmVzdW1lKCk7XG4gIH1cbiAgZnVuY3Rpb24gb25DaGFuZ2VkKCkge1xuICAgIGlmICghZW5hYmxlV3JpdGUpXG4gICAgICByZXR1cm47XG4gICAgd3JpdGUocmVhZCgpLCB0cnVlKTtcbiAgfVxuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb3BzdGF0ZVwiLCBvbkNoYW5nZWQsIGZhbHNlKTtcbiAgaWYgKG1vZGUgIT09IFwiaGlzdG9yeVwiKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImhhc2hjaGFuZ2VcIiwgb25DaGFuZ2VkLCBmYWxzZSk7XG4gIGNvbnN0IGluaXRpYWwgPSByZWFkKCk7XG4gIGlmIChpbml0aWFsLmtleXMoKS5uZXh0KCkudmFsdWUpXG4gICAgdXBkYXRlU3RhdGUoaW5pdGlhbCk7XG4gIGVsc2VcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBpbml0aWFsVmFsdWUpO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZVVzZXJNZWRpYShvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZW5hYmxlZCA9IHZ1ZURlbWkucmVmKChfYSA9IG9wdGlvbnMuZW5hYmxlZCkgIT0gbnVsbCA/IF9hIDogZmFsc2UpO1xuICBjb25zdCBhdXRvU3dpdGNoID0gdnVlRGVtaS5yZWYoKF9iID0gb3B0aW9ucy5hdXRvU3dpdGNoKSAhPSBudWxsID8gX2IgOiB0cnVlKTtcbiAgY29uc3QgY29uc3RyYWludHMgPSB2dWVEZW1pLnJlZihvcHRpb25zLmNvbnN0cmFpbnRzKTtcbiAgY29uc3QgeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICByZXR1cm4gKF9hMiA9IG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLm1lZGlhRGV2aWNlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5nZXRVc2VyTWVkaWE7XG4gIH0pO1xuICBjb25zdCBzdHJlYW0gPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgZnVuY3Rpb24gZ2V0RGV2aWNlT3B0aW9ucyh0eXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwidmlkZW9cIjoge1xuICAgICAgICBpZiAoY29uc3RyYWludHMudmFsdWUpXG4gICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRzLnZhbHVlLnZpZGVvIHx8IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJhdWRpb1wiOiB7XG4gICAgICAgIGlmIChjb25zdHJhaW50cy52YWx1ZSlcbiAgICAgICAgICByZXR1cm4gY29uc3RyYWludHMudmFsdWUuYXVkaW8gfHwgZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBfc3RhcnQoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZC52YWx1ZSB8fCBzdHJlYW0udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RyZWFtLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgdmlkZW86IGdldERldmljZU9wdGlvbnMoXCJ2aWRlb1wiKSxcbiAgICAgIGF1ZGlvOiBnZXREZXZpY2VPcHRpb25zKFwiYXVkaW9cIilcbiAgICB9KTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIGZ1bmN0aW9uIF9zdG9wKCkge1xuICAgIHZhciBfYTI7XG4gICAgKF9hMiA9IHN0cmVhbS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XG4gICAgc3RyZWFtLnZhbHVlID0gdm9pZCAwO1xuICB9XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgX3N0b3AoKTtcbiAgICBlbmFibGVkLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgYXdhaXQgX3N0YXJ0KCk7XG4gICAgaWYgKHN0cmVhbS52YWx1ZSlcbiAgICAgIGVuYWJsZWQudmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiBzdHJlYW0udmFsdWU7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdGFydCgpIHtcbiAgICBfc3RvcCgpO1xuICAgIHJldHVybiBhd2FpdCBzdGFydCgpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goXG4gICAgZW5hYmxlZCxcbiAgICAodikgPT4ge1xuICAgICAgaWYgKHYpXG4gICAgICAgIF9zdGFydCgpO1xuICAgICAgZWxzZSBfc3RvcCgpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuICB2dWVEZW1pLndhdGNoKFxuICAgIGNvbnN0cmFpbnRzLFxuICAgICgpID0+IHtcbiAgICAgIGlmIChhdXRvU3dpdGNoLnZhbHVlICYmIHN0cmVhbS52YWx1ZSlcbiAgICAgICAgcmVzdGFydCgpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIHN0b3AoKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RyZWFtLFxuICAgIHN0YXJ0LFxuICAgIHN0b3AsXG4gICAgcmVzdGFydCxcbiAgICBjb25zdHJhaW50cyxcbiAgICBlbmFibGVkLFxuICAgIGF1dG9Td2l0Y2hcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVk1vZGVsKHByb3BzLCBrZXksIGVtaXQsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICBjb25zdCB7XG4gICAgY2xvbmUgPSBmYWxzZSxcbiAgICBwYXNzaXZlID0gZmFsc2UsXG4gICAgZXZlbnROYW1lLFxuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgc2hvdWxkRW1pdFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgdm0gPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBjb25zdCBfZW1pdCA9IGVtaXQgfHwgKHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5lbWl0KSB8fCAoKF9hID0gdm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLiRlbWl0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuYmluZCh2bSkpIHx8ICgoX2MgPSAoX2IgPSB2bSA9PSBudWxsID8gdm9pZCAwIDogdm0ucHJveHkpID09IG51bGwgPyB2b2lkIDAgOiBfYi4kZW1pdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmJpbmQodm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLnByb3h5KSk7XG4gIGxldCBldmVudCA9IGV2ZW50TmFtZTtcbiAgaWYgKCFrZXkpIHtcbiAgICBpZiAodnVlRGVtaS5pc1Z1ZTIpIHtcbiAgICAgIGNvbnN0IG1vZGVsT3B0aW9ucyA9IChfZSA9IChfZCA9IHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5wcm94eSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLiRvcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2UubW9kZWw7XG4gICAgICBrZXkgPSAobW9kZWxPcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBtb2RlbE9wdGlvbnMudmFsdWUpIHx8IFwidmFsdWVcIjtcbiAgICAgIGlmICghZXZlbnROYW1lKVxuICAgICAgICBldmVudCA9IChtb2RlbE9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG1vZGVsT3B0aW9ucy5ldmVudCkgfHwgXCJpbnB1dFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXkgPSBcIm1vZGVsVmFsdWVcIjtcbiAgICB9XG4gIH1cbiAgZXZlbnQgPSBldmVudCB8fCBgdXBkYXRlOiR7a2V5LnRvU3RyaW5nKCl9YDtcbiAgY29uc3QgY2xvbmVGbiA9ICh2YWwpID0+ICFjbG9uZSA/IHZhbCA6IHR5cGVvZiBjbG9uZSA9PT0gXCJmdW5jdGlvblwiID8gY2xvbmUodmFsKSA6IGNsb25lRm5KU09OKHZhbCk7XG4gIGNvbnN0IGdldFZhbHVlID0gKCkgPT4gc2hhcmVkLmlzRGVmKHByb3BzW2tleV0pID8gY2xvbmVGbihwcm9wc1trZXldKSA6IGRlZmF1bHRWYWx1ZTtcbiAgY29uc3QgdHJpZ2dlckVtaXQgPSAodmFsdWUpID0+IHtcbiAgICBpZiAoc2hvdWxkRW1pdCkge1xuICAgICAgaWYgKHNob3VsZEVtaXQodmFsdWUpKVxuICAgICAgICBfZW1pdChldmVudCwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfZW1pdChldmVudCwgdmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgaWYgKHBhc3NpdmUpIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHByb3h5ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgICBsZXQgaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgIHZ1ZURlbWkud2F0Y2goXG4gICAgICAoKSA9PiBwcm9wc1trZXldLFxuICAgICAgKHYpID0+IHtcbiAgICAgICAgaWYgKCFpc1VwZGF0aW5nKSB7XG4gICAgICAgICAgaXNVcGRhdGluZyA9IHRydWU7XG4gICAgICAgICAgcHJveHkudmFsdWUgPSBjbG9uZUZuKHYpO1xuICAgICAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gaXNVcGRhdGluZyA9IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdnVlRGVtaS53YXRjaChcbiAgICAgIHByb3h5LFxuICAgICAgKHYpID0+IHtcbiAgICAgICAgaWYgKCFpc1VwZGF0aW5nICYmICh2ICE9PSBwcm9wc1trZXldIHx8IGRlZXApKVxuICAgICAgICAgIHRyaWdnZXJFbWl0KHYpO1xuICAgICAgfSxcbiAgICAgIHsgZGVlcCB9XG4gICAgKTtcbiAgICByZXR1cm4gcHJveHk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gZ2V0VmFsdWUoKTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlckVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVZNb2RlbHMocHJvcHMsIGVtaXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZXQgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICByZXRba2V5XSA9IHVzZVZNb2RlbChcbiAgICAgIHByb3BzLFxuICAgICAga2V5LFxuICAgICAgZW1pdCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHVzZVZpYnJhdGUob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGF0dGVybiA9IFtdLFxuICAgIGludGVydmFsID0gMCxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZCgoKSA9PiB0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIFwidmlicmF0ZVwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IHBhdHRlcm5SZWYgPSBzaGFyZWQudG9SZWYocGF0dGVybik7XG4gIGxldCBpbnRlcnZhbENvbnRyb2xzO1xuICBjb25zdCB2aWJyYXRlID0gKHBhdHRlcm4yID0gcGF0dGVyblJlZi52YWx1ZSkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZC52YWx1ZSlcbiAgICAgIG5hdmlnYXRvci52aWJyYXRlKHBhdHRlcm4yKTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICBuYXZpZ2F0b3IudmlicmF0ZSgwKTtcbiAgICBpbnRlcnZhbENvbnRyb2xzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcnZhbENvbnRyb2xzLnBhdXNlKCk7XG4gIH07XG4gIGlmIChpbnRlcnZhbCA+IDApIHtcbiAgICBpbnRlcnZhbENvbnRyb2xzID0gc2hhcmVkLnVzZUludGVydmFsRm4oXG4gICAgICB2aWJyYXRlLFxuICAgICAgaW50ZXJ2YWwsXG4gICAgICB7XG4gICAgICAgIGltbWVkaWF0ZTogZmFsc2UsXG4gICAgICAgIGltbWVkaWF0ZUNhbGxiYWNrOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBwYXR0ZXJuLFxuICAgIGludGVydmFsQ29udHJvbHMsXG4gICAgdmlicmF0ZSxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVZpcnR1YWxMaXN0KGxpc3QsIG9wdGlvbnMpIHtcbiAgY29uc3QgeyBjb250YWluZXJTdHlsZSwgd3JhcHBlclByb3BzLCBzY3JvbGxUbywgY2FsY3VsYXRlUmFuZ2UsIGN1cnJlbnRMaXN0LCBjb250YWluZXJSZWYgfSA9IFwiaXRlbUhlaWdodFwiIGluIG9wdGlvbnMgPyB1c2VWZXJ0aWNhbFZpcnR1YWxMaXN0KG9wdGlvbnMsIGxpc3QpIDogdXNlSG9yaXpvbnRhbFZpcnR1YWxMaXN0KG9wdGlvbnMsIGxpc3QpO1xuICByZXR1cm4ge1xuICAgIGxpc3Q6IGN1cnJlbnRMaXN0LFxuICAgIHNjcm9sbFRvLFxuICAgIGNvbnRhaW5lclByb3BzOiB7XG4gICAgICByZWY6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uU2Nyb2xsOiAoKSA9PiB7XG4gICAgICAgIGNhbGN1bGF0ZVJhbmdlKCk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IGNvbnRhaW5lclN0eWxlXG4gICAgfSxcbiAgICB3cmFwcGVyUHJvcHNcbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZVZpcnR1YWxMaXN0UmVzb3VyY2VzKGxpc3QpIHtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHNpemUgPSB1c2VFbGVtZW50U2l6ZShjb250YWluZXJSZWYpO1xuICBjb25zdCBjdXJyZW50TGlzdCA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3Qgc291cmNlID0gdnVlRGVtaS5zaGFsbG93UmVmKGxpc3QpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKHsgc3RhcnQ6IDAsIGVuZDogMTAgfSk7XG4gIHJldHVybiB7IHN0YXRlLCBzb3VyY2UsIGN1cnJlbnRMaXN0LCBzaXplLCBjb250YWluZXJSZWYgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUdldFZpZXdDYXBhY2l0eShzdGF0ZSwgc291cmNlLCBpdGVtU2l6ZSkge1xuICByZXR1cm4gKGNvbnRhaW5lclNpemUpID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1TaXplID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE1hdGguY2VpbChjb250YWluZXJTaXplIC8gaXRlbVNpemUpO1xuICAgIGNvbnN0IHsgc3RhcnQgPSAwIH0gPSBzdGF0ZS52YWx1ZTtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgY2FwYWNpdHkgPSAwO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IHNvdXJjZS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2l6ZSA9IGl0ZW1TaXplKGkpO1xuICAgICAgc3VtICs9IHNpemU7XG4gICAgICBjYXBhY2l0eSA9IGk7XG4gICAgICBpZiAoc3VtID4gY29udGFpbmVyU2l6ZSlcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBjYXBhY2l0eSAtIHN0YXJ0O1xuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlR2V0T2Zmc2V0KHNvdXJjZSwgaXRlbVNpemUpIHtcbiAgcmV0dXJuIChzY3JvbGxEaXJlY3Rpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1TaXplID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE1hdGguZmxvb3Ioc2Nyb2xsRGlyZWN0aW9uIC8gaXRlbVNpemUpICsgMTtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2l6ZSA9IGl0ZW1TaXplKGkpO1xuICAgICAgc3VtICs9IHNpemU7XG4gICAgICBpZiAoc3VtID49IHNjcm9sbERpcmVjdGlvbikge1xuICAgICAgICBvZmZzZXQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mZnNldCArIDE7XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVDYWxjdWxhdGVSYW5nZSh0eXBlLCBvdmVyc2NhbiwgZ2V0T2Zmc2V0LCBnZXRWaWV3Q2FwYWNpdHksIHsgY29udGFpbmVyUmVmLCBzdGF0ZSwgY3VycmVudExpc3QsIHNvdXJjZSB9KSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGNvbnRhaW5lclJlZi52YWx1ZTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0KHR5cGUgPT09IFwidmVydGljYWxcIiA/IGVsZW1lbnQuc2Nyb2xsVG9wIDogZWxlbWVudC5zY3JvbGxMZWZ0KTtcbiAgICAgIGNvbnN0IHZpZXdDYXBhY2l0eSA9IGdldFZpZXdDYXBhY2l0eSh0eXBlID09PSBcInZlcnRpY2FsXCIgPyBlbGVtZW50LmNsaWVudEhlaWdodCA6IGVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgICAgY29uc3QgZnJvbSA9IG9mZnNldCAtIG92ZXJzY2FuO1xuICAgICAgY29uc3QgdG8gPSBvZmZzZXQgKyB2aWV3Q2FwYWNpdHkgKyBvdmVyc2NhbjtcbiAgICAgIHN0YXRlLnZhbHVlID0ge1xuICAgICAgICBzdGFydDogZnJvbSA8IDAgPyAwIDogZnJvbSxcbiAgICAgICAgZW5kOiB0byA+IHNvdXJjZS52YWx1ZS5sZW5ndGggPyBzb3VyY2UudmFsdWUubGVuZ3RoIDogdG9cbiAgICAgIH07XG4gICAgICBjdXJyZW50TGlzdC52YWx1ZSA9IHNvdXJjZS52YWx1ZS5zbGljZShzdGF0ZS52YWx1ZS5zdGFydCwgc3RhdGUudmFsdWUuZW5kKS5tYXAoKGVsZSwgaW5kZXgpID0+ICh7XG4gICAgICAgIGRhdGE6IGVsZSxcbiAgICAgICAgaW5kZXg6IGluZGV4ICsgc3RhdGUudmFsdWUuc3RhcnRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVHZXREaXN0YW5jZShpdGVtU2l6ZSwgc291cmNlKSB7XG4gIHJldHVybiAoaW5kZXgpID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1TaXplID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zdCBzaXplMiA9IGluZGV4ICogaXRlbVNpemU7XG4gICAgICByZXR1cm4gc2l6ZTI7XG4gICAgfVxuICAgIGNvbnN0IHNpemUgPSBzb3VyY2UudmFsdWUuc2xpY2UoMCwgaW5kZXgpLnJlZHVjZSgoc3VtLCBfLCBpKSA9PiBzdW0gKyBpdGVtU2l6ZShpKSwgMCk7XG4gICAgcmV0dXJuIHNpemU7XG4gIH07XG59XG5mdW5jdGlvbiB1c2VXYXRjaEZvclNpemVzKHNpemUsIGxpc3QsIGNvbnRhaW5lclJlZiwgY2FsY3VsYXRlUmFuZ2UpIHtcbiAgdnVlRGVtaS53YXRjaChbc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIGxpc3QsIGNvbnRhaW5lclJlZl0sICgpID0+IHtcbiAgICBjYWxjdWxhdGVSYW5nZSgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkVG90YWxTaXplKGl0ZW1TaXplLCBzb3VyY2UpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbVNpemUgPT09IFwibnVtYmVyXCIpXG4gICAgICByZXR1cm4gc291cmNlLnZhbHVlLmxlbmd0aCAqIGl0ZW1TaXplO1xuICAgIHJldHVybiBzb3VyY2UudmFsdWUucmVkdWNlKChzdW0sIF8sIGluZGV4KSA9PiBzdW0gKyBpdGVtU2l6ZShpbmRleCksIDApO1xuICB9KTtcbn1cbmNvbnN0IHNjcm9sbFRvRGljdGlvbmFyeUZvckVsZW1lbnRTY3JvbGxLZXkgPSB7XG4gIGhvcml6b250YWw6IFwic2Nyb2xsTGVmdFwiLFxuICB2ZXJ0aWNhbDogXCJzY3JvbGxUb3BcIlxufTtcbmZ1bmN0aW9uIGNyZWF0ZVNjcm9sbFRvKHR5cGUsIGNhbGN1bGF0ZVJhbmdlLCBnZXREaXN0YW5jZSwgY29udGFpbmVyUmVmKSB7XG4gIHJldHVybiAoaW5kZXgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSB7XG4gICAgICBjb250YWluZXJSZWYudmFsdWVbc2Nyb2xsVG9EaWN0aW9uYXJ5Rm9yRWxlbWVudFNjcm9sbEtleVt0eXBlXV0gPSBnZXREaXN0YW5jZShpbmRleCk7XG4gICAgICBjYWxjdWxhdGVSYW5nZSgpO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZUhvcml6b250YWxWaXJ0dWFsTGlzdChvcHRpb25zLCBsaXN0KSB7XG4gIGNvbnN0IHJlc291cmNlcyA9IHVzZVZpcnR1YWxMaXN0UmVzb3VyY2VzKGxpc3QpO1xuICBjb25zdCB7IHN0YXRlLCBzb3VyY2UsIGN1cnJlbnRMaXN0LCBzaXplLCBjb250YWluZXJSZWYgfSA9IHJlc291cmNlcztcbiAgY29uc3QgY29udGFpbmVyU3R5bGUgPSB7IG92ZXJmbG93WDogXCJhdXRvXCIgfTtcbiAgY29uc3QgeyBpdGVtV2lkdGgsIG92ZXJzY2FuID0gNSB9ID0gb3B0aW9ucztcbiAgY29uc3QgZ2V0Vmlld0NhcGFjaXR5ID0gY3JlYXRlR2V0Vmlld0NhcGFjaXR5KHN0YXRlLCBzb3VyY2UsIGl0ZW1XaWR0aCk7XG4gIGNvbnN0IGdldE9mZnNldCA9IGNyZWF0ZUdldE9mZnNldChzb3VyY2UsIGl0ZW1XaWR0aCk7XG4gIGNvbnN0IGNhbGN1bGF0ZVJhbmdlID0gY3JlYXRlQ2FsY3VsYXRlUmFuZ2UoXCJob3Jpem9udGFsXCIsIG92ZXJzY2FuLCBnZXRPZmZzZXQsIGdldFZpZXdDYXBhY2l0eSwgcmVzb3VyY2VzKTtcbiAgY29uc3QgZ2V0RGlzdGFuY2VMZWZ0ID0gY3JlYXRlR2V0RGlzdGFuY2UoaXRlbVdpZHRoLCBzb3VyY2UpO1xuICBjb25zdCBvZmZzZXRMZWZ0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBnZXREaXN0YW5jZUxlZnQoc3RhdGUudmFsdWUuc3RhcnQpKTtcbiAgY29uc3QgdG90YWxXaWR0aCA9IGNyZWF0ZUNvbXB1dGVkVG90YWxTaXplKGl0ZW1XaWR0aCwgc291cmNlKTtcbiAgdXNlV2F0Y2hGb3JTaXplcyhzaXplLCBsaXN0LCBjb250YWluZXJSZWYsIGNhbGN1bGF0ZVJhbmdlKTtcbiAgY29uc3Qgc2Nyb2xsVG8gPSBjcmVhdGVTY3JvbGxUbyhcImhvcml6b250YWxcIiwgY2FsY3VsYXRlUmFuZ2UsIGdldERpc3RhbmNlTGVmdCwgY29udGFpbmVyUmVmKTtcbiAgY29uc3Qgd3JhcHBlclByb3BzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgIHdpZHRoOiBgJHt0b3RhbFdpZHRoLnZhbHVlIC0gb2Zmc2V0TGVmdC52YWx1ZX1weGAsXG4gICAgICAgIG1hcmdpbkxlZnQ6IGAke29mZnNldExlZnQudmFsdWV9cHhgLFxuICAgICAgICBkaXNwbGF5OiBcImZsZXhcIlxuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHNjcm9sbFRvLFxuICAgIGNhbGN1bGF0ZVJhbmdlLFxuICAgIHdyYXBwZXJQcm9wcyxcbiAgICBjb250YWluZXJTdHlsZSxcbiAgICBjdXJyZW50TGlzdCxcbiAgICBjb250YWluZXJSZWZcbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZVZlcnRpY2FsVmlydHVhbExpc3Qob3B0aW9ucywgbGlzdCkge1xuICBjb25zdCByZXNvdXJjZXMgPSB1c2VWaXJ0dWFsTGlzdFJlc291cmNlcyhsaXN0KTtcbiAgY29uc3QgeyBzdGF0ZSwgc291cmNlLCBjdXJyZW50TGlzdCwgc2l6ZSwgY29udGFpbmVyUmVmIH0gPSByZXNvdXJjZXM7XG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlID0geyBvdmVyZmxvd1k6IFwiYXV0b1wiIH07XG4gIGNvbnN0IHsgaXRlbUhlaWdodCwgb3ZlcnNjYW4gPSA1IH0gPSBvcHRpb25zO1xuICBjb25zdCBnZXRWaWV3Q2FwYWNpdHkgPSBjcmVhdGVHZXRWaWV3Q2FwYWNpdHkoc3RhdGUsIHNvdXJjZSwgaXRlbUhlaWdodCk7XG4gIGNvbnN0IGdldE9mZnNldCA9IGNyZWF0ZUdldE9mZnNldChzb3VyY2UsIGl0ZW1IZWlnaHQpO1xuICBjb25zdCBjYWxjdWxhdGVSYW5nZSA9IGNyZWF0ZUNhbGN1bGF0ZVJhbmdlKFwidmVydGljYWxcIiwgb3ZlcnNjYW4sIGdldE9mZnNldCwgZ2V0Vmlld0NhcGFjaXR5LCByZXNvdXJjZXMpO1xuICBjb25zdCBnZXREaXN0YW5jZVRvcCA9IGNyZWF0ZUdldERpc3RhbmNlKGl0ZW1IZWlnaHQsIHNvdXJjZSk7XG4gIGNvbnN0IG9mZnNldFRvcCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZ2V0RGlzdGFuY2VUb3Aoc3RhdGUudmFsdWUuc3RhcnQpKTtcbiAgY29uc3QgdG90YWxIZWlnaHQgPSBjcmVhdGVDb21wdXRlZFRvdGFsU2l6ZShpdGVtSGVpZ2h0LCBzb3VyY2UpO1xuICB1c2VXYXRjaEZvclNpemVzKHNpemUsIGxpc3QsIGNvbnRhaW5lclJlZiwgY2FsY3VsYXRlUmFuZ2UpO1xuICBjb25zdCBzY3JvbGxUbyA9IGNyZWF0ZVNjcm9sbFRvKFwidmVydGljYWxcIiwgY2FsY3VsYXRlUmFuZ2UsIGdldERpc3RhbmNlVG9wLCBjb250YWluZXJSZWYpO1xuICBjb25zdCB3cmFwcGVyUHJvcHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICBoZWlnaHQ6IGAke3RvdGFsSGVpZ2h0LnZhbHVlIC0gb2Zmc2V0VG9wLnZhbHVlfXB4YCxcbiAgICAgICAgbWFyZ2luVG9wOiBgJHtvZmZzZXRUb3AudmFsdWV9cHhgXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2FsY3VsYXRlUmFuZ2UsXG4gICAgc2Nyb2xsVG8sXG4gICAgY29udGFpbmVyU3R5bGUsXG4gICAgd3JhcHBlclByb3BzLFxuICAgIGN1cnJlbnRMaXN0LFxuICAgIGNvbnRhaW5lclJlZlxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VXYWtlTG9jayhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlcXVlc3RlZFR5cGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHNlbnRpbmVsID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudFZpc2liaWxpdHkgPSB1c2VEb2N1bWVudFZpc2liaWxpdHkoeyBkb2N1bWVudCB9KTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB1c2VTdXBwb3J0ZWQoKCkgPT4gbmF2aWdhdG9yICYmIFwid2FrZUxvY2tcIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gISFzZW50aW5lbC52YWx1ZSAmJiBkb2N1bWVudFZpc2liaWxpdHkudmFsdWUgPT09IFwidmlzaWJsZVwiKTtcbiAgaWYgKGlzU3VwcG9ydGVkLnZhbHVlKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihzZW50aW5lbCwgXCJyZWxlYXNlXCIsICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICByZXF1ZXN0ZWRUeXBlLnZhbHVlID0gKF9iID0gKF9hID0gc2VudGluZWwudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50eXBlKSAhPSBudWxsID8gX2IgOiBmYWxzZTtcbiAgICB9KTtcbiAgICBzaGFyZWQud2hlbmV2ZXIoXG4gICAgICAoKSA9PiBkb2N1bWVudFZpc2liaWxpdHkudmFsdWUgPT09IFwidmlzaWJsZVwiICYmIChkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKSA9PT0gXCJ2aXNpYmxlXCIgJiYgcmVxdWVzdGVkVHlwZS52YWx1ZSxcbiAgICAgICh0eXBlKSA9PiB7XG4gICAgICAgIHJlcXVlc3RlZFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yY2VSZXF1ZXN0KHR5cGUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZm9yY2VSZXF1ZXN0KHR5cGUpIHtcbiAgICB2YXIgX2E7XG4gICAgYXdhaXQgKChfYSA9IHNlbnRpbmVsLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EucmVsZWFzZSgpKTtcbiAgICBzZW50aW5lbC52YWx1ZSA9IGlzU3VwcG9ydGVkLnZhbHVlID8gYXdhaXQgbmF2aWdhdG9yLndha2VMb2NrLnJlcXVlc3QodHlwZSkgOiBudWxsO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3QodHlwZSkge1xuICAgIGlmIChkb2N1bWVudFZpc2liaWxpdHkudmFsdWUgPT09IFwidmlzaWJsZVwiKVxuICAgICAgYXdhaXQgZm9yY2VSZXF1ZXN0KHR5cGUpO1xuICAgIGVsc2VcbiAgICAgIHJlcXVlc3RlZFR5cGUudmFsdWUgPSB0eXBlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHJlbGVhc2UoKSB7XG4gICAgcmVxdWVzdGVkVHlwZS52YWx1ZSA9IGZhbHNlO1xuICAgIGNvbnN0IHMgPSBzZW50aW5lbC52YWx1ZTtcbiAgICBzZW50aW5lbC52YWx1ZSA9IG51bGw7XG4gICAgYXdhaXQgKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMucmVsZWFzZSgpKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNlbnRpbmVsLFxuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzQWN0aXZlLFxuICAgIHJlcXVlc3QsXG4gICAgZm9yY2VSZXF1ZXN0LFxuICAgIHJlbGVhc2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlV2ViTm90aWZpY2F0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICByZXF1ZXN0UGVybWlzc2lvbnM6IF9yZXF1ZXN0Rm9yUGVybWlzc2lvbnMgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkZWZhdWx0V2ViTm90aWZpY2F0aW9uT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdXNlU3VwcG9ydGVkKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdyB8fCAhKFwiTm90aWZpY2F0aW9uXCIgaW4gd2luZG93KSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgbmV3IE5vdGlmaWNhdGlvbihcIlwiKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcGVybWlzc2lvbkdyYW50ZWQgPSB2dWVEZW1pLnJlZihpc1N1cHBvcnRlZC52YWx1ZSAmJiBcInBlcm1pc3Npb25cIiBpbiBOb3RpZmljYXRpb24gJiYgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT09IFwiZ3JhbnRlZFwiKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGVuc3VyZVBlcm1pc3Npb25zID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSAmJiBOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gXCJkZW5pZWRcIikge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBcImdyYW50ZWRcIilcbiAgICAgICAgcGVybWlzc2lvbkdyYW50ZWQudmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcGVybWlzc2lvbkdyYW50ZWQudmFsdWU7XG4gIH07XG4gIGNvbnN0IHsgb246IG9uQ2xpY2ssIHRyaWdnZXI6IGNsaWNrVHJpZ2dlciB9ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCB7IG9uOiBvblNob3csIHRyaWdnZXI6IHNob3dUcmlnZ2VyIH0gPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IHsgb246IG9uRXJyb3IsIHRyaWdnZXI6IGVycm9yVHJpZ2dlciB9ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCB7IG9uOiBvbkNsb3NlLCB0cmlnZ2VyOiBjbG9zZVRyaWdnZXIgfSA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgc2hvdyA9IGFzeW5jIChvdmVycmlkZXMpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkLnZhbHVlIHx8ICFwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBvcHRpb25zMiA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRXZWJOb3RpZmljYXRpb25PcHRpb25zLCBvdmVycmlkZXMpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZSA9IG5ldyBOb3RpZmljYXRpb24ob3B0aW9uczIudGl0bGUgfHwgXCJcIiwgb3B0aW9uczIpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbmNsaWNrID0gY2xpY2tUcmlnZ2VyO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbnNob3cgPSBzaG93VHJpZ2dlcjtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25lcnJvciA9IGVycm9yVHJpZ2dlcjtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25jbG9zZSA9IGNsb3NlVHJpZ2dlcjtcbiAgICByZXR1cm4gbm90aWZpY2F0aW9uLnZhbHVlO1xuICB9O1xuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAobm90aWZpY2F0aW9uLnZhbHVlKVxuICAgICAgbm90aWZpY2F0aW9uLnZhbHVlLmNsb3NlKCk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlID0gbnVsbDtcbiAgfTtcbiAgaWYgKF9yZXF1ZXN0Rm9yUGVybWlzc2lvbnMpXG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZChlbnN1cmVQZXJtaXNzaW9ucyk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShjbG9zZSk7XG4gIGlmIChpc1N1cHBvcnRlZC52YWx1ZSAmJiB3aW5kb3cpIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwidmlzaWJsZVwiKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBub3RpZmljYXRpb24sXG4gICAgZW5zdXJlUGVybWlzc2lvbnMsXG4gICAgcGVybWlzc2lvbkdyYW50ZWQsXG4gICAgc2hvdyxcbiAgICBjbG9zZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uU2hvdyxcbiAgICBvbkVycm9yLFxuICAgIG9uQ2xvc2VcbiAgfTtcbn1cblxuY29uc3QgREVGQVVMVF9QSU5HX01FU1NBR0UgPSBcInBpbmdcIjtcbmZ1bmN0aW9uIHJlc29sdmVOZXN0ZWRPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHRydWUpXG4gICAgcmV0dXJuIHt9O1xuICByZXR1cm4gb3B0aW9ucztcbn1cbmZ1bmN0aW9uIHVzZVdlYlNvY2tldCh1cmwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgb25Db25uZWN0ZWQsXG4gICAgb25EaXNjb25uZWN0ZWQsXG4gICAgb25FcnJvcixcbiAgICBvbk1lc3NhZ2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBhdXRvQ2xvc2UgPSB0cnVlLFxuICAgIHByb3RvY29scyA9IFtdXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiQ0xPU0VEXCIpO1xuICBjb25zdCB3c1JlZiA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHVybFJlZiA9IHNoYXJlZC50b1JlZih1cmwpO1xuICBsZXQgaGVhcnRiZWF0UGF1c2U7XG4gIGxldCBoZWFydGJlYXRSZXN1bWU7XG4gIGxldCBleHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7XG4gIGxldCByZXRyaWVkID0gMDtcbiAgbGV0IGJ1ZmZlcmVkRGF0YSA9IFtdO1xuICBsZXQgcG9uZ1RpbWVvdXRXYWl0O1xuICBjb25zdCBfc2VuZEJ1ZmZlciA9ICgpID0+IHtcbiAgICBpZiAoYnVmZmVyZWREYXRhLmxlbmd0aCAmJiB3c1JlZi52YWx1ZSAmJiBzdGF0dXMudmFsdWUgPT09IFwiT1BFTlwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJlZERhdGEpXG4gICAgICAgIHdzUmVmLnZhbHVlLnNlbmQoYnVmZmVyKTtcbiAgICAgIGJ1ZmZlcmVkRGF0YSA9IFtdO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRIZWFydGJlYXQgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHBvbmdUaW1lb3V0V2FpdCk7XG4gICAgcG9uZ1RpbWVvdXRXYWl0ID0gdm9pZCAwO1xuICB9O1xuICBjb25zdCBjbG9zZSA9IChjb2RlID0gMWUzLCByZWFzb24pID0+IHtcbiAgICBpZiAoIXNoYXJlZC5pc0NsaWVudCB8fCAhd3NSZWYudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgZXhwbGljaXRseUNsb3NlZCA9IHRydWU7XG4gICAgcmVzZXRIZWFydGJlYXQoKTtcbiAgICBoZWFydGJlYXRQYXVzZSA9PSBudWxsID8gdm9pZCAwIDogaGVhcnRiZWF0UGF1c2UoKTtcbiAgICB3c1JlZi52YWx1ZS5jbG9zZShjb2RlLCByZWFzb24pO1xuICAgIHdzUmVmLnZhbHVlID0gdm9pZCAwO1xuICB9O1xuICBjb25zdCBzZW5kID0gKGRhdGEyLCB1c2VCdWZmZXIgPSB0cnVlKSA9PiB7XG4gICAgaWYgKCF3c1JlZi52YWx1ZSB8fCBzdGF0dXMudmFsdWUgIT09IFwiT1BFTlwiKSB7XG4gICAgICBpZiAodXNlQnVmZmVyKVxuICAgICAgICBidWZmZXJlZERhdGEucHVzaChkYXRhMik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIF9zZW5kQnVmZmVyKCk7XG4gICAgd3NSZWYudmFsdWUuc2VuZChkYXRhMik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IF9pbml0ID0gKCkgPT4ge1xuICAgIGlmIChleHBsaWNpdGx5Q2xvc2VkIHx8IHR5cGVvZiB1cmxSZWYudmFsdWUgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICByZXR1cm47XG4gICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KHVybFJlZi52YWx1ZSwgcHJvdG9jb2xzKTtcbiAgICB3c1JlZi52YWx1ZSA9IHdzO1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiQ09OTkVDVElOR1wiO1xuICAgIHdzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiT1BFTlwiO1xuICAgICAgcmV0cmllZCA9IDA7XG4gICAgICBvbkNvbm5lY3RlZCA9PSBudWxsID8gdm9pZCAwIDogb25Db25uZWN0ZWQod3MpO1xuICAgICAgaGVhcnRiZWF0UmVzdW1lID09IG51bGwgPyB2b2lkIDAgOiBoZWFydGJlYXRSZXN1bWUoKTtcbiAgICAgIF9zZW5kQnVmZmVyKCk7XG4gICAgfTtcbiAgICB3cy5vbmNsb3NlID0gKGV2KSA9PiB7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcIkNMT1NFRFwiO1xuICAgICAgb25EaXNjb25uZWN0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRGlzY29ubmVjdGVkKHdzLCBldik7XG4gICAgICBpZiAoIWV4cGxpY2l0bHlDbG9zZWQgJiYgb3B0aW9ucy5hdXRvUmVjb25uZWN0ICYmIHdzID09PSB3c1JlZi52YWx1ZSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcmV0cmllcyA9IC0xLFxuICAgICAgICAgIGRlbGF5ID0gMWUzLFxuICAgICAgICAgIG9uRmFpbGVkXG4gICAgICAgIH0gPSByZXNvbHZlTmVzdGVkT3B0aW9ucyhvcHRpb25zLmF1dG9SZWNvbm5lY3QpO1xuICAgICAgICBpZiAodHlwZW9mIHJldHJpZXMgPT09IFwibnVtYmVyXCIgJiYgKHJldHJpZXMgPCAwIHx8IHJldHJpZWQgPCByZXRyaWVzKSkge1xuICAgICAgICAgIHJldHJpZWQgKz0gMTtcbiAgICAgICAgICBzZXRUaW1lb3V0KF9pbml0LCBkZWxheSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJldHJpZXMgPT09IFwiZnVuY3Rpb25cIiAmJiByZXRyaWVzKCkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KF9pbml0LCBkZWxheSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25GYWlsZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRmFpbGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdzLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgb25FcnJvciA9PSBudWxsID8gdm9pZCAwIDogb25FcnJvcih3cywgZSk7XG4gICAgfTtcbiAgICB3cy5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnMuaGVhcnRiZWF0KSB7XG4gICAgICAgIHJlc2V0SGVhcnRiZWF0KCk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBtZXNzYWdlID0gREVGQVVMVF9QSU5HX01FU1NBR0UsXG4gICAgICAgICAgcmVzcG9uc2VNZXNzYWdlID0gbWVzc2FnZVxuICAgICAgICB9ID0gcmVzb2x2ZU5lc3RlZE9wdGlvbnMob3B0aW9ucy5oZWFydGJlYXQpO1xuICAgICAgICBpZiAoZS5kYXRhID09PSByZXNwb25zZU1lc3NhZ2UpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YS52YWx1ZSA9IGUuZGF0YTtcbiAgICAgIG9uTWVzc2FnZSA9PSBudWxsID8gdm9pZCAwIDogb25NZXNzYWdlKHdzLCBlKTtcbiAgICB9O1xuICB9O1xuICBpZiAob3B0aW9ucy5oZWFydGJlYXQpIHtcbiAgICBjb25zdCB7XG4gICAgICBtZXNzYWdlID0gREVGQVVMVF9QSU5HX01FU1NBR0UsXG4gICAgICBpbnRlcnZhbCA9IDFlMyxcbiAgICAgIHBvbmdUaW1lb3V0ID0gMWUzXG4gICAgfSA9IHJlc29sdmVOZXN0ZWRPcHRpb25zKG9wdGlvbnMuaGVhcnRiZWF0KTtcbiAgICBjb25zdCB7IHBhdXNlLCByZXN1bWUgfSA9IHNoYXJlZC51c2VJbnRlcnZhbEZuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBzZW5kKG1lc3NhZ2UsIGZhbHNlKTtcbiAgICAgICAgaWYgKHBvbmdUaW1lb3V0V2FpdCAhPSBudWxsKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcG9uZ1RpbWVvdXRXYWl0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICBleHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7XG4gICAgICAgIH0sIHBvbmdUaW1lb3V0KTtcbiAgICAgIH0sXG4gICAgICBpbnRlcnZhbCxcbiAgICAgIHsgaW1tZWRpYXRlOiBmYWxzZSB9XG4gICAgKTtcbiAgICBoZWFydGJlYXRQYXVzZSA9IHBhdXNlO1xuICAgIGhlYXJ0YmVhdFJlc3VtZSA9IHJlc3VtZTtcbiAgfVxuICBpZiAoYXV0b0Nsb3NlKSB7XG4gICAgaWYgKHNoYXJlZC5pc0NsaWVudClcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgKCkgPT4gY2xvc2UoKSk7XG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKGNsb3NlKTtcbiAgfVxuICBjb25zdCBvcGVuID0gKCkgPT4ge1xuICAgIGlmICghc2hhcmVkLmlzQ2xpZW50ICYmICFzaGFyZWQuaXNXb3JrZXIpXG4gICAgICByZXR1cm47XG4gICAgY2xvc2UoKTtcbiAgICBleHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7XG4gICAgcmV0cmllZCA9IDA7XG4gICAgX2luaXQoKTtcbiAgfTtcbiAgaWYgKGltbWVkaWF0ZSlcbiAgICBvcGVuKCk7XG4gIHZ1ZURlbWkud2F0Y2godXJsUmVmLCBvcGVuKTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIHN0YXR1cyxcbiAgICBjbG9zZSxcbiAgICBzZW5kLFxuICAgIG9wZW4sXG4gICAgd3M6IHdzUmVmXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVdlYldvcmtlcihhcmcwLCB3b3JrZXJPcHRpb25zLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDoge307XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3Qgd29ya2VyID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGNvbnN0IHBvc3QgPSAoLi4uYXJncykgPT4ge1xuICAgIGlmICghd29ya2VyLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHdvcmtlci52YWx1ZS5wb3N0TWVzc2FnZSguLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgdGVybWluYXRlID0gZnVuY3Rpb24gdGVybWluYXRlMigpIHtcbiAgICBpZiAoIXdvcmtlci52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICB3b3JrZXIudmFsdWUudGVybWluYXRlKCk7XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICBpZiAodHlwZW9mIGFyZzAgPT09IFwic3RyaW5nXCIpXG4gICAgICB3b3JrZXIudmFsdWUgPSBuZXcgV29ya2VyKGFyZzAsIHdvcmtlck9wdGlvbnMpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBhcmcwID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICB3b3JrZXIudmFsdWUgPSBhcmcwKCk7XG4gICAgZWxzZVxuICAgICAgd29ya2VyLnZhbHVlID0gYXJnMDtcbiAgICB3b3JrZXIudmFsdWUub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgfTtcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgICAgaWYgKHdvcmtlci52YWx1ZSlcbiAgICAgICAgd29ya2VyLnZhbHVlLnRlcm1pbmF0ZSgpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBwb3N0LFxuICAgIHRlcm1pbmF0ZSxcbiAgICB3b3JrZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVwc1BhcnNlcihkZXBzLCBsb2NhbERlcHMpIHtcbiAgaWYgKGRlcHMubGVuZ3RoID09PSAwICYmIGxvY2FsRGVwcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFwiXCI7XG4gIGNvbnN0IGRlcHNTdHJpbmcgPSBkZXBzLm1hcCgoZGVwKSA9PiBgJyR7ZGVwfSdgKS50b1N0cmluZygpO1xuICBjb25zdCBkZXBzRnVuY3Rpb25TdHJpbmcgPSBsb2NhbERlcHMuZmlsdGVyKChkZXApID0+IHR5cGVvZiBkZXAgPT09IFwiZnVuY3Rpb25cIikubWFwKChmbikgPT4ge1xuICAgIGNvbnN0IHN0ciA9IGZuLnRvU3RyaW5nKCk7XG4gICAgaWYgKHN0ci50cmltKCkuc3RhcnRzV2l0aChcImZ1bmN0aW9uXCIpKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuYW1lID0gZm4ubmFtZTtcbiAgICAgIHJldHVybiBgY29uc3QgJHtuYW1lfSA9ICR7c3RyfWA7XG4gICAgfVxuICB9KS5qb2luKFwiO1wiKTtcbiAgY29uc3QgaW1wb3J0U3RyaW5nID0gYGltcG9ydFNjcmlwdHMoJHtkZXBzU3RyaW5nfSk7YDtcbiAgcmV0dXJuIGAke2RlcHNTdHJpbmcudHJpbSgpID09PSBcIlwiID8gXCJcIiA6IGltcG9ydFN0cmluZ30gJHtkZXBzRnVuY3Rpb25TdHJpbmd9YDtcbn1cblxuZnVuY3Rpb24gam9iUnVubmVyKHVzZXJGdW5jKSB7XG4gIHJldHVybiAoZSkgPT4ge1xuICAgIGNvbnN0IHVzZXJGdW5jQXJncyA9IGUuZGF0YVswXTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVzZXJGdW5jLmFwcGx5KHZvaWQgMCwgdXNlckZ1bmNBcmdzKSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICBwb3N0TWVzc2FnZShbXCJTVUNDRVNTXCIsIHJlc3VsdF0pO1xuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgcG9zdE1lc3NhZ2UoW1wiRVJST1JcIiwgZXJyb3JdKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlV29ya2VyQmxvYlVybChmbiwgZGVwcywgbG9jYWxEZXBzKSB7XG4gIGNvbnN0IGJsb2JDb2RlID0gYCR7ZGVwc1BhcnNlcihkZXBzLCBsb2NhbERlcHMpfTsgb25tZXNzYWdlPSgke2pvYlJ1bm5lcn0pKCR7Zm59KWA7XG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYmxvYkNvZGVdLCB7IHR5cGU6IFwidGV4dC9qYXZhc2NyaXB0XCIgfSk7XG4gIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gIHJldHVybiB1cmw7XG59XG5cbmZ1bmN0aW9uIHVzZVdlYldvcmtlckZuKGZuLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRlcGVuZGVuY2llcyA9IFtdLFxuICAgIGxvY2FsRGVwZW5kZW5jaWVzID0gW10sXG4gICAgdGltZW91dCxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB3b3JrZXIgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCB3b3JrZXJTdGF0dXMgPSB2dWVEZW1pLnJlZihcIlBFTkRJTkdcIik7XG4gIGNvbnN0IHByb21pc2UgPSB2dWVEZW1pLnJlZih7fSk7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHdvcmtlclRlcm1pbmF0ZSA9IChzdGF0dXMgPSBcIlBFTkRJTkdcIikgPT4ge1xuICAgIGlmICh3b3JrZXIudmFsdWUgJiYgd29ya2VyLnZhbHVlLl91cmwgJiYgd2luZG93KSB7XG4gICAgICB3b3JrZXIudmFsdWUudGVybWluYXRlKCk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHdvcmtlci52YWx1ZS5fdXJsKTtcbiAgICAgIHByb21pc2UudmFsdWUgPSB7fTtcbiAgICAgIHdvcmtlci52YWx1ZSA9IHZvaWQgMDtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkLnZhbHVlKTtcbiAgICAgIHdvcmtlclN0YXR1cy52YWx1ZSA9IHN0YXR1cztcbiAgICB9XG4gIH07XG4gIHdvcmtlclRlcm1pbmF0ZSgpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uod29ya2VyVGVybWluYXRlKTtcbiAgY29uc3QgZ2VuZXJhdGVXb3JrZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYmxvYlVybCA9IGNyZWF0ZVdvcmtlckJsb2JVcmwoZm4sIGRlcGVuZGVuY2llcywgbG9jYWxEZXBlbmRlbmNpZXMpO1xuICAgIGNvbnN0IG5ld1dvcmtlciA9IG5ldyBXb3JrZXIoYmxvYlVybCk7XG4gICAgbmV3V29ya2VyLl91cmwgPSBibG9iVXJsO1xuICAgIG5ld1dvcmtlci5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgY29uc3QgeyByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgfSwgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgfSB9ID0gcHJvbWlzZS52YWx1ZTtcbiAgICAgIGNvbnN0IFtzdGF0dXMsIHJlc3VsdF0gPSBlLmRhdGE7XG4gICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICBjYXNlIFwiU1VDQ0VTU1wiOlxuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB3b3JrZXJUZXJtaW5hdGUoc3RhdHVzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWplY3QocmVzdWx0KTtcbiAgICAgICAgICB3b3JrZXJUZXJtaW5hdGUoXCJFUlJPUlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuICAgIG5ld1dvcmtlci5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgfSB9ID0gcHJvbWlzZS52YWx1ZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJlamVjdChlKTtcbiAgICAgIHdvcmtlclRlcm1pbmF0ZShcIkVSUk9SXCIpO1xuICAgIH07XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHdvcmtlclRlcm1pbmF0ZShcIlRJTUVPVVRfRVhQSVJFRFwiKSxcbiAgICAgICAgdGltZW91dFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1dvcmtlcjtcbiAgfTtcbiAgY29uc3QgY2FsbFdvcmtlciA9ICguLi5mbkFyZ3MpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgcHJvbWlzZS52YWx1ZSA9IHtcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3RcbiAgICB9O1xuICAgIChfYSA9IHdvcmtlci52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnBvc3RNZXNzYWdlKFtbLi4uZm5BcmdzXV0pO1xuICAgIHdvcmtlclN0YXR1cy52YWx1ZSA9IFwiUlVOTklOR1wiO1xuICB9KTtcbiAgY29uc3Qgd29ya2VyRm4gPSAoLi4uZm5BcmdzKSA9PiB7XG4gICAgaWYgKHdvcmtlclN0YXR1cy52YWx1ZSA9PT0gXCJSVU5OSU5HXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiW3VzZVdlYldvcmtlckZuXSBZb3UgY2FuIG9ubHkgcnVuIG9uZSBpbnN0YW5jZSBvZiB0aGUgd29ya2VyIGF0IGEgdGltZS5cIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIH1cbiAgICB3b3JrZXIudmFsdWUgPSBnZW5lcmF0ZVdvcmtlcigpO1xuICAgIHJldHVybiBjYWxsV29ya2VyKC4uLmZuQXJncyk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgd29ya2VyRm4sXG4gICAgd29ya2VyU3RhdHVzLFxuICAgIHdvcmtlclRlcm1pbmF0ZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VXaW5kb3dGb2N1cyhvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBmb2N1c2VkID0gdnVlRGVtaS5yZWYod2luZG93LmRvY3VtZW50Lmhhc0ZvY3VzKCkpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJibHVyXCIsICgpID0+IHtcbiAgICBmb2N1c2VkLnZhbHVlID0gZmFsc2U7XG4gIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJmb2N1c1wiLCAoKSA9PiB7XG4gICAgZm9jdXNlZC52YWx1ZSA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gZm9jdXNlZDtcbn1cblxuZnVuY3Rpb24gdXNlV2luZG93U2Nyb2xsKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIGJlaGF2aW9yID0gXCJhdXRvXCIgfSA9IG9wdGlvbnM7XG4gIGlmICghd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHZ1ZURlbWkucmVmKDApLFxuICAgICAgeTogdnVlRGVtaS5yZWYoMClcbiAgICB9O1xuICB9XG4gIGNvbnN0IGludGVybmFsWCA9IHZ1ZURlbWkucmVmKHdpbmRvdy5zY3JvbGxYKTtcbiAgY29uc3QgaW50ZXJuYWxZID0gdnVlRGVtaS5yZWYod2luZG93LnNjcm9sbFkpO1xuICBjb25zdCB4ID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIGludGVybmFsWC52YWx1ZTtcbiAgICB9LFxuICAgIHNldCh4Mikge1xuICAgICAgc2Nyb2xsVG8oeyBsZWZ0OiB4MiwgYmVoYXZpb3IgfSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBpbnRlcm5hbFkudmFsdWU7XG4gICAgfSxcbiAgICBzZXQoeTIpIHtcbiAgICAgIHNjcm9sbFRvKHsgdG9wOiB5MiwgYmVoYXZpb3IgfSk7XG4gICAgfVxuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihcbiAgICB3aW5kb3csXG4gICAgXCJzY3JvbGxcIixcbiAgICAoKSA9PiB7XG4gICAgICBpbnRlcm5hbFgudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWDtcbiAgICAgIGludGVybmFsWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgIH0sXG4gICAge1xuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfVxuICApO1xuICByZXR1cm4geyB4LCB5IH07XG59XG5cbmZ1bmN0aW9uIHVzZVdpbmRvd1NpemUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGluaXRpYWxXaWR0aCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBpbml0aWFsSGVpZ2h0ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIGxpc3Rlbk9yaWVudGF0aW9uID0gdHJ1ZSxcbiAgICBpbmNsdWRlU2Nyb2xsYmFyID0gdHJ1ZSxcbiAgICB0eXBlID0gXCJpbm5lclwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB3aWR0aCA9IHZ1ZURlbWkucmVmKGluaXRpYWxXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IHZ1ZURlbWkucmVmKGluaXRpYWxIZWlnaHQpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgaWYgKHR5cGUgPT09IFwib3V0ZXJcIikge1xuICAgICAgICB3aWR0aC52YWx1ZSA9IHdpbmRvdy5vdXRlcldpZHRoO1xuICAgICAgICBoZWlnaHQudmFsdWUgPSB3aW5kb3cub3V0ZXJIZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKGluY2x1ZGVTY3JvbGxiYXIpIHtcbiAgICAgICAgd2lkdGgudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaGVpZ2h0LnZhbHVlID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGgudmFsdWUgPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBoZWlnaHQudmFsdWUgPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVwZGF0ZSgpO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKHVwZGF0ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIGlmIChsaXN0ZW5PcmllbnRhdGlvbikge1xuICAgIGNvbnN0IG1hdGNoZXMgPSB1c2VNZWRpYVF1ZXJ5KFwiKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcIik7XG4gICAgdnVlRGVtaS53YXRjaChtYXRjaGVzLCAoKSA9PiB1cGRhdGUoKSk7XG4gIH1cbiAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xufVxuXG5leHBvcnRzLkRlZmF1bHRNYWdpY0tleXNBbGlhc01hcCA9IERlZmF1bHRNYWdpY0tleXNBbGlhc01hcDtcbmV4cG9ydHMuU3RvcmFnZVNlcmlhbGl6ZXJzID0gU3RvcmFnZVNlcmlhbGl6ZXJzO1xuZXhwb3J0cy5UcmFuc2l0aW9uUHJlc2V0cyA9IFRyYW5zaXRpb25QcmVzZXRzO1xuZXhwb3J0cy5hc3luY0NvbXB1dGVkID0gY29tcHV0ZWRBc3luYztcbmV4cG9ydHMuYnJlYWtwb2ludHNBbnREZXNpZ24gPSBicmVha3BvaW50c0FudERlc2lnbjtcbmV4cG9ydHMuYnJlYWtwb2ludHNCb290c3RyYXBWNSA9IGJyZWFrcG9pbnRzQm9vdHN0cmFwVjU7XG5leHBvcnRzLmJyZWFrcG9pbnRzTWFzdGVyQ3NzID0gYnJlYWtwb2ludHNNYXN0ZXJDc3M7XG5leHBvcnRzLmJyZWFrcG9pbnRzUHJpbWVGbGV4ID0gYnJlYWtwb2ludHNQcmltZUZsZXg7XG5leHBvcnRzLmJyZWFrcG9pbnRzUXVhc2FyID0gYnJlYWtwb2ludHNRdWFzYXI7XG5leHBvcnRzLmJyZWFrcG9pbnRzU2VtYXRpYyA9IGJyZWFrcG9pbnRzU2VtYXRpYztcbmV4cG9ydHMuYnJlYWtwb2ludHNUYWlsd2luZCA9IGJyZWFrcG9pbnRzVGFpbHdpbmQ7XG5leHBvcnRzLmJyZWFrcG9pbnRzVnVldGlmeSA9IGJyZWFrcG9pbnRzVnVldGlmeTtcbmV4cG9ydHMuYnJlYWtwb2ludHNWdWV0aWZ5VjIgPSBicmVha3BvaW50c1Z1ZXRpZnlWMjtcbmV4cG9ydHMuYnJlYWtwb2ludHNWdWV0aWZ5VjMgPSBicmVha3BvaW50c1Z1ZXRpZnlWMztcbmV4cG9ydHMuY2xvbmVGbkpTT04gPSBjbG9uZUZuSlNPTjtcbmV4cG9ydHMuY29tcHV0ZWRBc3luYyA9IGNvbXB1dGVkQXN5bmM7XG5leHBvcnRzLmNvbXB1dGVkSW5qZWN0ID0gY29tcHV0ZWRJbmplY3Q7XG5leHBvcnRzLmNyZWF0ZUZldGNoID0gY3JlYXRlRmV0Y2g7XG5leHBvcnRzLmNyZWF0ZVJldXNhYmxlVGVtcGxhdGUgPSBjcmVhdGVSZXVzYWJsZVRlbXBsYXRlO1xuZXhwb3J0cy5jcmVhdGVUZW1wbGF0ZVByb21pc2UgPSBjcmVhdGVUZW1wbGF0ZVByb21pc2U7XG5leHBvcnRzLmNyZWF0ZVVucmVmRm4gPSBjcmVhdGVVbnJlZkZuO1xuZXhwb3J0cy5jdXN0b21TdG9yYWdlRXZlbnROYW1lID0gY3VzdG9tU3RvcmFnZUV2ZW50TmFtZTtcbmV4cG9ydHMuZGVmYXVsdERvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50O1xuZXhwb3J0cy5kZWZhdWx0TG9jYXRpb24gPSBkZWZhdWx0TG9jYXRpb247XG5leHBvcnRzLmRlZmF1bHROYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yO1xuZXhwb3J0cy5kZWZhdWx0V2luZG93ID0gZGVmYXVsdFdpbmRvdztcbmV4cG9ydHMuZXhlY3V0ZVRyYW5zaXRpb24gPSBleGVjdXRlVHJhbnNpdGlvbjtcbmV4cG9ydHMuZm9ybWF0VGltZUFnbyA9IGZvcm1hdFRpbWVBZ287XG5leHBvcnRzLmdldFNTUkhhbmRsZXIgPSBnZXRTU1JIYW5kbGVyO1xuZXhwb3J0cy5tYXBHYW1lcGFkVG9YYm94MzYwQ29udHJvbGxlciA9IG1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyO1xuZXhwb3J0cy5vbkNsaWNrT3V0c2lkZSA9IG9uQ2xpY2tPdXRzaWRlO1xuZXhwb3J0cy5vbktleURvd24gPSBvbktleURvd247XG5leHBvcnRzLm9uS2V5UHJlc3NlZCA9IG9uS2V5UHJlc3NlZDtcbmV4cG9ydHMub25LZXlTdHJva2UgPSBvbktleVN0cm9rZTtcbmV4cG9ydHMub25LZXlVcCA9IG9uS2V5VXA7XG5leHBvcnRzLm9uTG9uZ1ByZXNzID0gb25Mb25nUHJlc3M7XG5leHBvcnRzLm9uU3RhcnRUeXBpbmcgPSBvblN0YXJ0VHlwaW5nO1xuZXhwb3J0cy5zZXRTU1JIYW5kbGVyID0gc2V0U1NSSGFuZGxlcjtcbmV4cG9ydHMudGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbmV4cG9ydHMudW5yZWZFbGVtZW50ID0gdW5yZWZFbGVtZW50O1xuZXhwb3J0cy51c2VBY3RpdmVFbGVtZW50ID0gdXNlQWN0aXZlRWxlbWVudDtcbmV4cG9ydHMudXNlQW5pbWF0ZSA9IHVzZUFuaW1hdGU7XG5leHBvcnRzLnVzZUFzeW5jUXVldWUgPSB1c2VBc3luY1F1ZXVlO1xuZXhwb3J0cy51c2VBc3luY1N0YXRlID0gdXNlQXN5bmNTdGF0ZTtcbmV4cG9ydHMudXNlQmFzZTY0ID0gdXNlQmFzZTY0O1xuZXhwb3J0cy51c2VCYXR0ZXJ5ID0gdXNlQmF0dGVyeTtcbmV4cG9ydHMudXNlQmx1ZXRvb3RoID0gdXNlQmx1ZXRvb3RoO1xuZXhwb3J0cy51c2VCcmVha3BvaW50cyA9IHVzZUJyZWFrcG9pbnRzO1xuZXhwb3J0cy51c2VCcm9hZGNhc3RDaGFubmVsID0gdXNlQnJvYWRjYXN0Q2hhbm5lbDtcbmV4cG9ydHMudXNlQnJvd3NlckxvY2F0aW9uID0gdXNlQnJvd3NlckxvY2F0aW9uO1xuZXhwb3J0cy51c2VDYWNoZWQgPSB1c2VDYWNoZWQ7XG5leHBvcnRzLnVzZUNsaXBib2FyZCA9IHVzZUNsaXBib2FyZDtcbmV4cG9ydHMudXNlQ2xpcGJvYXJkSXRlbXMgPSB1c2VDbGlwYm9hcmRJdGVtcztcbmV4cG9ydHMudXNlQ2xvbmVkID0gdXNlQ2xvbmVkO1xuZXhwb3J0cy51c2VDb2xvck1vZGUgPSB1c2VDb2xvck1vZGU7XG5leHBvcnRzLnVzZUNvbmZpcm1EaWFsb2cgPSB1c2VDb25maXJtRGlhbG9nO1xuZXhwb3J0cy51c2VDc3NWYXIgPSB1c2VDc3NWYXI7XG5leHBvcnRzLnVzZUN1cnJlbnRFbGVtZW50ID0gdXNlQ3VycmVudEVsZW1lbnQ7XG5leHBvcnRzLnVzZUN5Y2xlTGlzdCA9IHVzZUN5Y2xlTGlzdDtcbmV4cG9ydHMudXNlRGFyayA9IHVzZURhcms7XG5leHBvcnRzLnVzZURlYm91bmNlZFJlZkhpc3RvcnkgPSB1c2VEZWJvdW5jZWRSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VEZXZpY2VNb3Rpb24gPSB1c2VEZXZpY2VNb3Rpb247XG5leHBvcnRzLnVzZURldmljZU9yaWVudGF0aW9uID0gdXNlRGV2aWNlT3JpZW50YXRpb247XG5leHBvcnRzLnVzZURldmljZVBpeGVsUmF0aW8gPSB1c2VEZXZpY2VQaXhlbFJhdGlvO1xuZXhwb3J0cy51c2VEZXZpY2VzTGlzdCA9IHVzZURldmljZXNMaXN0O1xuZXhwb3J0cy51c2VEaXNwbGF5TWVkaWEgPSB1c2VEaXNwbGF5TWVkaWE7XG5leHBvcnRzLnVzZURvY3VtZW50VmlzaWJpbGl0eSA9IHVzZURvY3VtZW50VmlzaWJpbGl0eTtcbmV4cG9ydHMudXNlRHJhZ2dhYmxlID0gdXNlRHJhZ2dhYmxlO1xuZXhwb3J0cy51c2VEcm9wWm9uZSA9IHVzZURyb3Bab25lO1xuZXhwb3J0cy51c2VFbGVtZW50Qm91bmRpbmcgPSB1c2VFbGVtZW50Qm91bmRpbmc7XG5leHBvcnRzLnVzZUVsZW1lbnRCeVBvaW50ID0gdXNlRWxlbWVudEJ5UG9pbnQ7XG5leHBvcnRzLnVzZUVsZW1lbnRIb3ZlciA9IHVzZUVsZW1lbnRIb3ZlcjtcbmV4cG9ydHMudXNlRWxlbWVudFNpemUgPSB1c2VFbGVtZW50U2l6ZTtcbmV4cG9ydHMudXNlRWxlbWVudFZpc2liaWxpdHkgPSB1c2VFbGVtZW50VmlzaWJpbGl0eTtcbmV4cG9ydHMudXNlRXZlbnRCdXMgPSB1c2VFdmVudEJ1cztcbmV4cG9ydHMudXNlRXZlbnRMaXN0ZW5lciA9IHVzZUV2ZW50TGlzdGVuZXI7XG5leHBvcnRzLnVzZUV2ZW50U291cmNlID0gdXNlRXZlbnRTb3VyY2U7XG5leHBvcnRzLnVzZUV5ZURyb3BwZXIgPSB1c2VFeWVEcm9wcGVyO1xuZXhwb3J0cy51c2VGYXZpY29uID0gdXNlRmF2aWNvbjtcbmV4cG9ydHMudXNlRmV0Y2ggPSB1c2VGZXRjaDtcbmV4cG9ydHMudXNlRmlsZURpYWxvZyA9IHVzZUZpbGVEaWFsb2c7XG5leHBvcnRzLnVzZUZpbGVTeXN0ZW1BY2Nlc3MgPSB1c2VGaWxlU3lzdGVtQWNjZXNzO1xuZXhwb3J0cy51c2VGb2N1cyA9IHVzZUZvY3VzO1xuZXhwb3J0cy51c2VGb2N1c1dpdGhpbiA9IHVzZUZvY3VzV2l0aGluO1xuZXhwb3J0cy51c2VGcHMgPSB1c2VGcHM7XG5leHBvcnRzLnVzZUZ1bGxzY3JlZW4gPSB1c2VGdWxsc2NyZWVuO1xuZXhwb3J0cy51c2VHYW1lcGFkID0gdXNlR2FtZXBhZDtcbmV4cG9ydHMudXNlR2VvbG9jYXRpb24gPSB1c2VHZW9sb2NhdGlvbjtcbmV4cG9ydHMudXNlSWRsZSA9IHVzZUlkbGU7XG5leHBvcnRzLnVzZUltYWdlID0gdXNlSW1hZ2U7XG5leHBvcnRzLnVzZUluZmluaXRlU2Nyb2xsID0gdXNlSW5maW5pdGVTY3JvbGw7XG5leHBvcnRzLnVzZUludGVyc2VjdGlvbk9ic2VydmVyID0gdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG5leHBvcnRzLnVzZUtleU1vZGlmaWVyID0gdXNlS2V5TW9kaWZpZXI7XG5leHBvcnRzLnVzZUxvY2FsU3RvcmFnZSA9IHVzZUxvY2FsU3RvcmFnZTtcbmV4cG9ydHMudXNlTWFnaWNLZXlzID0gdXNlTWFnaWNLZXlzO1xuZXhwb3J0cy51c2VNYW51YWxSZWZIaXN0b3J5ID0gdXNlTWFudWFsUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlTWVkaWFDb250cm9scyA9IHVzZU1lZGlhQ29udHJvbHM7XG5leHBvcnRzLnVzZU1lZGlhUXVlcnkgPSB1c2VNZWRpYVF1ZXJ5O1xuZXhwb3J0cy51c2VNZW1vaXplID0gdXNlTWVtb2l6ZTtcbmV4cG9ydHMudXNlTWVtb3J5ID0gdXNlTWVtb3J5O1xuZXhwb3J0cy51c2VNb3VudGVkID0gdXNlTW91bnRlZDtcbmV4cG9ydHMudXNlTW91c2UgPSB1c2VNb3VzZTtcbmV4cG9ydHMudXNlTW91c2VJbkVsZW1lbnQgPSB1c2VNb3VzZUluRWxlbWVudDtcbmV4cG9ydHMudXNlTW91c2VQcmVzc2VkID0gdXNlTW91c2VQcmVzc2VkO1xuZXhwb3J0cy51c2VNdXRhdGlvbk9ic2VydmVyID0gdXNlTXV0YXRpb25PYnNlcnZlcjtcbmV4cG9ydHMudXNlTmF2aWdhdG9yTGFuZ3VhZ2UgPSB1c2VOYXZpZ2F0b3JMYW5ndWFnZTtcbmV4cG9ydHMudXNlTmV0d29yayA9IHVzZU5ldHdvcms7XG5leHBvcnRzLnVzZU5vdyA9IHVzZU5vdztcbmV4cG9ydHMudXNlT2JqZWN0VXJsID0gdXNlT2JqZWN0VXJsO1xuZXhwb3J0cy51c2VPZmZzZXRQYWdpbmF0aW9uID0gdXNlT2Zmc2V0UGFnaW5hdGlvbjtcbmV4cG9ydHMudXNlT25saW5lID0gdXNlT25saW5lO1xuZXhwb3J0cy51c2VQYWdlTGVhdmUgPSB1c2VQYWdlTGVhdmU7XG5leHBvcnRzLnVzZVBhcmFsbGF4ID0gdXNlUGFyYWxsYXg7XG5leHBvcnRzLnVzZVBhcmVudEVsZW1lbnQgPSB1c2VQYXJlbnRFbGVtZW50O1xuZXhwb3J0cy51c2VQZXJmb3JtYW5jZU9ic2VydmVyID0gdXNlUGVyZm9ybWFuY2VPYnNlcnZlcjtcbmV4cG9ydHMudXNlUGVybWlzc2lvbiA9IHVzZVBlcm1pc3Npb247XG5leHBvcnRzLnVzZVBvaW50ZXIgPSB1c2VQb2ludGVyO1xuZXhwb3J0cy51c2VQb2ludGVyTG9jayA9IHVzZVBvaW50ZXJMb2NrO1xuZXhwb3J0cy51c2VQb2ludGVyU3dpcGUgPSB1c2VQb2ludGVyU3dpcGU7XG5leHBvcnRzLnVzZVByZWZlcnJlZENvbG9yU2NoZW1lID0gdXNlUHJlZmVycmVkQ29sb3JTY2hlbWU7XG5leHBvcnRzLnVzZVByZWZlcnJlZENvbnRyYXN0ID0gdXNlUHJlZmVycmVkQ29udHJhc3Q7XG5leHBvcnRzLnVzZVByZWZlcnJlZERhcmsgPSB1c2VQcmVmZXJyZWREYXJrO1xuZXhwb3J0cy51c2VQcmVmZXJyZWRMYW5ndWFnZXMgPSB1c2VQcmVmZXJyZWRMYW5ndWFnZXM7XG5leHBvcnRzLnVzZVByZWZlcnJlZFJlZHVjZWRNb3Rpb24gPSB1c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uO1xuZXhwb3J0cy51c2VQcmV2aW91cyA9IHVzZVByZXZpb3VzO1xuZXhwb3J0cy51c2VSYWZGbiA9IHVzZVJhZkZuO1xuZXhwb3J0cy51c2VSZWZIaXN0b3J5ID0gdXNlUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlUmVzaXplT2JzZXJ2ZXIgPSB1c2VSZXNpemVPYnNlcnZlcjtcbmV4cG9ydHMudXNlU2NyZWVuT3JpZW50YXRpb24gPSB1c2VTY3JlZW5PcmllbnRhdGlvbjtcbmV4cG9ydHMudXNlU2NyZWVuU2FmZUFyZWEgPSB1c2VTY3JlZW5TYWZlQXJlYTtcbmV4cG9ydHMudXNlU2NyaXB0VGFnID0gdXNlU2NyaXB0VGFnO1xuZXhwb3J0cy51c2VTY3JvbGwgPSB1c2VTY3JvbGw7XG5leHBvcnRzLnVzZVNjcm9sbExvY2sgPSB1c2VTY3JvbGxMb2NrO1xuZXhwb3J0cy51c2VTZXNzaW9uU3RvcmFnZSA9IHVzZVNlc3Npb25TdG9yYWdlO1xuZXhwb3J0cy51c2VTaGFyZSA9IHVzZVNoYXJlO1xuZXhwb3J0cy51c2VTb3J0ZWQgPSB1c2VTb3J0ZWQ7XG5leHBvcnRzLnVzZVNwZWVjaFJlY29nbml0aW9uID0gdXNlU3BlZWNoUmVjb2duaXRpb247XG5leHBvcnRzLnVzZVNwZWVjaFN5bnRoZXNpcyA9IHVzZVNwZWVjaFN5bnRoZXNpcztcbmV4cG9ydHMudXNlU3RlcHBlciA9IHVzZVN0ZXBwZXI7XG5leHBvcnRzLnVzZVN0b3JhZ2UgPSB1c2VTdG9yYWdlO1xuZXhwb3J0cy51c2VTdG9yYWdlQXN5bmMgPSB1c2VTdG9yYWdlQXN5bmM7XG5leHBvcnRzLnVzZVN0eWxlVGFnID0gdXNlU3R5bGVUYWc7XG5leHBvcnRzLnVzZVN1cHBvcnRlZCA9IHVzZVN1cHBvcnRlZDtcbmV4cG9ydHMudXNlU3dpcGUgPSB1c2VTd2lwZTtcbmV4cG9ydHMudXNlVGVtcGxhdGVSZWZzTGlzdCA9IHVzZVRlbXBsYXRlUmVmc0xpc3Q7XG5leHBvcnRzLnVzZVRleHREaXJlY3Rpb24gPSB1c2VUZXh0RGlyZWN0aW9uO1xuZXhwb3J0cy51c2VUZXh0U2VsZWN0aW9uID0gdXNlVGV4dFNlbGVjdGlvbjtcbmV4cG9ydHMudXNlVGV4dGFyZWFBdXRvc2l6ZSA9IHVzZVRleHRhcmVhQXV0b3NpemU7XG5leHBvcnRzLnVzZVRocm90dGxlZFJlZkhpc3RvcnkgPSB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VUaW1lQWdvID0gdXNlVGltZUFnbztcbmV4cG9ydHMudXNlVGltZW91dFBvbGwgPSB1c2VUaW1lb3V0UG9sbDtcbmV4cG9ydHMudXNlVGltZXN0YW1wID0gdXNlVGltZXN0YW1wO1xuZXhwb3J0cy51c2VUaXRsZSA9IHVzZVRpdGxlO1xuZXhwb3J0cy51c2VUcmFuc2l0aW9uID0gdXNlVHJhbnNpdGlvbjtcbmV4cG9ydHMudXNlVXJsU2VhcmNoUGFyYW1zID0gdXNlVXJsU2VhcmNoUGFyYW1zO1xuZXhwb3J0cy51c2VVc2VyTWVkaWEgPSB1c2VVc2VyTWVkaWE7XG5leHBvcnRzLnVzZVZNb2RlbCA9IHVzZVZNb2RlbDtcbmV4cG9ydHMudXNlVk1vZGVscyA9IHVzZVZNb2RlbHM7XG5leHBvcnRzLnVzZVZpYnJhdGUgPSB1c2VWaWJyYXRlO1xuZXhwb3J0cy51c2VWaXJ0dWFsTGlzdCA9IHVzZVZpcnR1YWxMaXN0O1xuZXhwb3J0cy51c2VXYWtlTG9jayA9IHVzZVdha2VMb2NrO1xuZXhwb3J0cy51c2VXZWJOb3RpZmljYXRpb24gPSB1c2VXZWJOb3RpZmljYXRpb247XG5leHBvcnRzLnVzZVdlYlNvY2tldCA9IHVzZVdlYlNvY2tldDtcbmV4cG9ydHMudXNlV2ViV29ya2VyID0gdXNlV2ViV29ya2VyO1xuZXhwb3J0cy51c2VXZWJXb3JrZXJGbiA9IHVzZVdlYldvcmtlckZuO1xuZXhwb3J0cy51c2VXaW5kb3dGb2N1cyA9IHVzZVdpbmRvd0ZvY3VzO1xuZXhwb3J0cy51c2VXaW5kb3dTY3JvbGwgPSB1c2VXaW5kb3dTY3JvbGw7XG5leHBvcnRzLnVzZVdpbmRvd1NpemUgPSB1c2VXaW5kb3dTaXplO1xuT2JqZWN0LmtleXMoc2hhcmVkKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gIGlmIChrICE9PSAnZGVmYXVsdCcgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBrKSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGssIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hhcmVkW2tdOyB9XG4gIH0pO1xufSk7XG4iLCJ2YXIgVnVlID0gcmVxdWlyZSgndnVlJylcblxuT2JqZWN0LmtleXMoVnVlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBWdWVba2V5XVxufSlcblxuZXhwb3J0cy5zZXQgPSBmdW5jdGlvbih0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0Lmxlbmd0aCwga2V5KVxuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpXG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHRhcmdldFtrZXldID0gdmFsXG4gIHJldHVybiB2YWxcbn1cblxuZXhwb3J0cy5kZWwgPSBmdW5jdGlvbih0YXJnZXQsIGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpXG4gICAgcmV0dXJuXG4gIH1cbiAgZGVsZXRlIHRhcmdldFtrZXldXG59XG5cbmV4cG9ydHMuVnVlID0gVnVlXG5leHBvcnRzLlZ1ZTIgPSB1bmRlZmluZWRcbmV4cG9ydHMuaXNWdWUyID0gZmFsc2VcbmV4cG9ydHMuaXNWdWUzID0gdHJ1ZVxuZXhwb3J0cy5pbnN0YWxsID0gZnVuY3Rpb24oKXt9XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB2dWVEZW1pID0gcmVxdWlyZSgndnVlLWRlbWknKTtcblxuZnVuY3Rpb24gY29tcHV0ZWRFYWdlcihmbiwgb3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KCgpID0+IHtcbiAgICByZXN1bHQudmFsdWUgPSBmbigpO1xuICB9LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBmbHVzaDogKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5mbHVzaCkgIT0gbnVsbCA/IF9hIDogXCJzeW5jXCJcbiAgfSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWRvbmx5KHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVkV2l0aENvbnRyb2woc291cmNlLCBmbikge1xuICBsZXQgdiA9IHZvaWQgMDtcbiAgbGV0IHRyYWNrO1xuICBsZXQgdHJpZ2dlcjtcbiAgY29uc3QgZGlydHkgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGRpcnR5LnZhbHVlID0gdHJ1ZTtcbiAgICB0cmlnZ2VyKCk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goc291cmNlLCB1cGRhdGUsIHsgZmx1c2g6IFwic3luY1wiIH0pO1xuICBjb25zdCBnZXQgPSB0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIiA/IGZuIDogZm4uZ2V0O1xuICBjb25zdCBzZXQgPSB0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIiA/IHZvaWQgMCA6IGZuLnNldDtcbiAgY29uc3QgcmVzdWx0ID0gdnVlRGVtaS5jdXN0b21SZWYoKF90cmFjaywgX3RyaWdnZXIpID0+IHtcbiAgICB0cmFjayA9IF90cmFjaztcbiAgICB0cmlnZ2VyID0gX3RyaWdnZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgaWYgKGRpcnR5LnZhbHVlKSB7XG4gICAgICAgICAgdiA9IGdldCh2KTtcbiAgICAgICAgICBkaXJ0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSxcbiAgICAgIHNldCh2Mikge1xuICAgICAgICBzZXQgPT0gbnVsbCA/IHZvaWQgMCA6IHNldCh2Mik7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIGlmIChPYmplY3QuaXNFeHRlbnNpYmxlKHJlc3VsdCkpXG4gICAgcmVzdWx0LnRyaWdnZXIgPSB1cGRhdGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHRyeU9uU2NvcGVEaXNwb3NlKGZuKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgdnVlRGVtaS5vblNjb3BlRGlzcG9zZShmbik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFdmVudEhvb2soKSB7XG4gIGNvbnN0IGZucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IG9mZiA9IChmbikgPT4ge1xuICAgIGZucy5kZWxldGUoZm4pO1xuICB9O1xuICBjb25zdCBvbiA9IChmbikgPT4ge1xuICAgIGZucy5hZGQoZm4pO1xuICAgIGNvbnN0IG9mZkZuID0gKCkgPT4gb2ZmKGZuKTtcbiAgICB0cnlPblNjb3BlRGlzcG9zZShvZmZGbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZjogb2ZmRm5cbiAgICB9O1xuICB9O1xuICBjb25zdCB0cmlnZ2VyID0gKC4uLmFyZ3MpID0+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShmbnMpLm1hcCgoZm4pID0+IGZuKC4uLmFyZ3MpKSk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgb24sXG4gICAgb2ZmLFxuICAgIHRyaWdnZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsU3RhdGUoc3RhdGVGYWN0b3J5KSB7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgc3RhdGU7XG4gIGNvbnN0IHNjb3BlID0gdnVlRGVtaS5lZmZlY3RTY29wZSh0cnVlKTtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgc3RhdGUgPSBzY29wZS5ydW4oKCkgPT4gc3RhdGVGYWN0b3J5KC4uLmFyZ3MpKTtcbiAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xufVxuXG5jb25zdCBsb2NhbFByb3ZpZGVkU3RhdGVNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcblxuY29uc3QgaW5qZWN0TG9jYWwgPSAoLi4uYXJncykgPT4ge1xuICB2YXIgX2E7XG4gIGNvbnN0IGtleSA9IGFyZ3NbMF07XG4gIGNvbnN0IGluc3RhbmNlID0gKF9hID0gdnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnByb3h5O1xuICBpZiAoaW5zdGFuY2UgPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbmplY3RMb2NhbCBtdXN0IGJlIGNhbGxlZCBpbiBzZXR1cFwiKTtcbiAgaWYgKGxvY2FsUHJvdmlkZWRTdGF0ZU1hcC5oYXMoaW5zdGFuY2UpICYmIGtleSBpbiBsb2NhbFByb3ZpZGVkU3RhdGVNYXAuZ2V0KGluc3RhbmNlKSlcbiAgICByZXR1cm4gbG9jYWxQcm92aWRlZFN0YXRlTWFwLmdldChpbnN0YW5jZSlba2V5XTtcbiAgcmV0dXJuIHZ1ZURlbWkuaW5qZWN0KC4uLmFyZ3MpO1xufTtcblxuY29uc3QgcHJvdmlkZUxvY2FsID0gKGtleSwgdmFsdWUpID0+IHtcbiAgdmFyIF9hO1xuICBjb25zdCBpbnN0YW5jZSA9IChfYSA9IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5wcm94eTtcbiAgaWYgKGluc3RhbmNlID09IG51bGwpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwicHJvdmlkZUxvY2FsIG11c3QgYmUgY2FsbGVkIGluIHNldHVwXCIpO1xuICBpZiAoIWxvY2FsUHJvdmlkZWRTdGF0ZU1hcC5oYXMoaW5zdGFuY2UpKVxuICAgIGxvY2FsUHJvdmlkZWRTdGF0ZU1hcC5zZXQoaW5zdGFuY2UsIC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgY29uc3QgbG9jYWxQcm92aWRlZFN0YXRlID0gbG9jYWxQcm92aWRlZFN0YXRlTWFwLmdldChpbnN0YW5jZSk7XG4gIGxvY2FsUHJvdmlkZWRTdGF0ZVtrZXldID0gdmFsdWU7XG4gIHZ1ZURlbWkucHJvdmlkZShrZXksIHZhbHVlKTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUluamVjdGlvblN0YXRlKGNvbXBvc2FibGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qga2V5ID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW5qZWN0aW9uS2V5KSB8fCBTeW1ib2woY29tcG9zYWJsZS5uYW1lIHx8IFwiSW5qZWN0aW9uU3RhdGVcIik7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZGVmYXVsdFZhbHVlO1xuICBjb25zdCB1c2VQcm92aWRpbmdTdGF0ZSA9ICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBjb21wb3NhYmxlKC4uLmFyZ3MpO1xuICAgIHByb3ZpZGVMb2NhbChrZXksIHN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG4gIGNvbnN0IHVzZUluamVjdGVkU3RhdGUgPSAoKSA9PiBpbmplY3RMb2NhbChrZXksIGRlZmF1bHRWYWx1ZSk7XG4gIHJldHVybiBbdXNlUHJvdmlkaW5nU3RhdGUsIHVzZUluamVjdGVkU3RhdGVdO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGFyZWRDb21wb3NhYmxlKGNvbXBvc2FibGUpIHtcbiAgbGV0IHN1YnNjcmliZXJzID0gMDtcbiAgbGV0IHN0YXRlO1xuICBsZXQgc2NvcGU7XG4gIGNvbnN0IGRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgc3Vic2NyaWJlcnMgLT0gMTtcbiAgICBpZiAoc2NvcGUgJiYgc3Vic2NyaWJlcnMgPD0gMCkge1xuICAgICAgc2NvcGUuc3RvcCgpO1xuICAgICAgc3RhdGUgPSB2b2lkIDA7XG4gICAgICBzY29wZSA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHN1YnNjcmliZXJzICs9IDE7XG4gICAgaWYgKCFzY29wZSkge1xuICAgICAgc2NvcGUgPSB2dWVEZW1pLmVmZmVjdFNjb3BlKHRydWUpO1xuICAgICAgc3RhdGUgPSBzY29wZS5ydW4oKCkgPT4gY29tcG9zYWJsZSguLi5hcmdzKSk7XG4gICAgfVxuICAgIHRyeU9uU2NvcGVEaXNwb3NlKGRpc3Bvc2UpO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXh0ZW5kUmVmKHJlZiwgZXh0ZW5kLCB7IGVudW1lcmFibGUgPSBmYWxzZSwgdW53cmFwID0gdHJ1ZSB9ID0ge30pIHtcbiAgaWYgKCF2dWVEZW1pLmlzVnVlMyAmJiAhdnVlRGVtaS52ZXJzaW9uLnN0YXJ0c1dpdGgoXCIyLjcuXCIpKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltWdWVVc2VdIGV4dGVuZFJlZiBvbmx5IHdvcmtzIGluIFZ1ZSAyLjcgb3IgYWJvdmUuXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHRlbmQpKSB7XG4gICAgaWYgKGtleSA9PT0gXCJ2YWx1ZVwiKVxuICAgICAgY29udGludWU7XG4gICAgaWYgKHZ1ZURlbWkuaXNSZWYodmFsdWUpICYmIHVud3JhcCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCh2KSB7XG4gICAgICAgICAgdmFsdWUudmFsdWUgPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwga2V5LCB7IHZhbHVlLCBlbnVtZXJhYmxlIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVmO1xufVxuXG5mdW5jdGlvbiBnZXQob2JqLCBrZXkpIHtcbiAgaWYgKGtleSA9PSBudWxsKVxuICAgIHJldHVybiB2dWVEZW1pLnVucmVmKG9iaik7XG4gIHJldHVybiB2dWVEZW1pLnVucmVmKG9iailba2V5XTtcbn1cblxuZnVuY3Rpb24gaXNEZWZpbmVkKHYpIHtcbiAgcmV0dXJuIHZ1ZURlbWkudW5yZWYodikgIT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gbWFrZURlc3RydWN0dXJhYmxlKG9iaiwgYXJyKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY29uc3QgY2xvbmUgPSB7IC4uLm9iaiB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZSwgU3ltYm9sLml0ZXJhdG9yLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlKCkge1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5leHQ6ICgpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogYXJyW2luZGV4KytdLFxuICAgICAgICAgICAgZG9uZTogaW5kZXggPiBhcnIubGVuZ3RoXG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oWy4uLmFycl0sIG9iaik7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PT0gXCJmdW5jdGlvblwiID8gcigpIDogdnVlRGVtaS51bnJlZihyKTtcbn1cbmNvbnN0IHJlc29sdmVVbnJlZiA9IHRvVmFsdWU7XG5cbmZ1bmN0aW9uIHJlYWN0aWZ5KGZuLCBvcHRpb25zKSB7XG4gIGNvbnN0IHVucmVmRm4gPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5jb21wdXRlZEdldHRlcikgPT09IGZhbHNlID8gdnVlRGVtaS51bnJlZiA6IHRvVmFsdWU7XG4gIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZm4uYXBwbHkodGhpcywgYXJncy5tYXAoKGkpID0+IHVucmVmRm4oaSkpKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWN0aWZ5T2JqZWN0KG9iaiwgb3B0aW9uc09yS2V5cyA9IHt9KSB7XG4gIGxldCBrZXlzID0gW107XG4gIGxldCBvcHRpb25zO1xuICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zT3JLZXlzKSkge1xuICAgIGtleXMgPSBvcHRpb25zT3JLZXlzO1xuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zT3JLZXlzO1xuICAgIGNvbnN0IHsgaW5jbHVkZU93blByb3BlcnRpZXMgPSB0cnVlIH0gPSBvcHRpb25zT3JLZXlzO1xuICAgIGtleXMucHVzaCguLi5PYmplY3Qua2V5cyhvYmopKTtcbiAgICBpZiAoaW5jbHVkZU93blByb3BlcnRpZXMpXG4gICAgICBrZXlzLnB1c2goLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAga2V5LFxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHJlYWN0aWZ5KHZhbHVlLmJpbmQob2JqKSwgb3B0aW9ucykgOiB2YWx1ZVxuICAgICAgXTtcbiAgICB9KVxuICApO1xufVxuXG5mdW5jdGlvbiB0b1JlYWN0aXZlKG9iamVjdFJlZikge1xuICBpZiAoIXZ1ZURlbWkuaXNSZWYob2JqZWN0UmVmKSlcbiAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShvYmplY3RSZWYpO1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh7fSwge1xuICAgIGdldChfLCBwLCByZWNlaXZlcikge1xuICAgICAgcmV0dXJuIHZ1ZURlbWkudW5yZWYoUmVmbGVjdC5nZXQob2JqZWN0UmVmLnZhbHVlLCBwLCByZWNlaXZlcikpO1xuICAgIH0sXG4gICAgc2V0KF8sIHAsIHZhbHVlKSB7XG4gICAgICBpZiAodnVlRGVtaS5pc1JlZihvYmplY3RSZWYudmFsdWVbcF0pICYmICF2dWVEZW1pLmlzUmVmKHZhbHVlKSlcbiAgICAgICAgb2JqZWN0UmVmLnZhbHVlW3BdLnZhbHVlID0gdmFsdWU7XG4gICAgICBlbHNlXG4gICAgICAgIG9iamVjdFJlZi52YWx1ZVtwXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBkZWxldGVQcm9wZXJ0eShfLCBwKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShvYmplY3RSZWYudmFsdWUsIHApO1xuICAgIH0sXG4gICAgaGFzKF8sIHApIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmhhcyhvYmplY3RSZWYudmFsdWUsIHApO1xuICAgIH0sXG4gICAgb3duS2V5cygpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3RSZWYudmFsdWUpO1xuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKHByb3h5KTtcbn1cblxuZnVuY3Rpb24gcmVhY3RpdmVDb21wdXRlZChmbikge1xuICByZXR1cm4gdG9SZWFjdGl2ZSh2dWVEZW1pLmNvbXB1dGVkKGZuKSk7XG59XG5cbmZ1bmN0aW9uIHJlYWN0aXZlT21pdChvYmosIC4uLmtleXMpIHtcbiAgY29uc3QgZmxhdEtleXMgPSBrZXlzLmZsYXQoKTtcbiAgY29uc3QgcHJlZGljYXRlID0gZmxhdEtleXNbMF07XG4gIHJldHVybiByZWFjdGl2ZUNvbXB1dGVkKCgpID0+IHR5cGVvZiBwcmVkaWNhdGUgPT09IFwiZnVuY3Rpb25cIiA/IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2dWVEZW1pLnRvUmVmcyhvYmopKS5maWx0ZXIoKFtrLCB2XSkgPT4gIXByZWRpY2F0ZSh0b1ZhbHVlKHYpLCBrKSkpIDogT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZ1ZURlbWkudG9SZWZzKG9iaikpLmZpbHRlcigoZSkgPT4gIWZsYXRLZXlzLmluY2x1ZGVzKGVbMF0pKSkpO1xufVxuXG5jb25zdCBkaXJlY3RpdmVIb29rcyA9IHtcbiAgbW91bnRlZDogdnVlRGVtaS5pc1Z1ZTMgPyBcIm1vdW50ZWRcIiA6IFwiaW5zZXJ0ZWRcIixcbiAgdXBkYXRlZDogdnVlRGVtaS5pc1Z1ZTMgPyBcInVwZGF0ZWRcIiA6IFwiY29tcG9uZW50VXBkYXRlZFwiLFxuICB1bm1vdW50ZWQ6IHZ1ZURlbWkuaXNWdWUzID8gXCJ1bm1vdW50ZWRcIiA6IFwidW5iaW5kXCJcbn07XG5cbmNvbnN0IGlzQ2xpZW50ID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG5jb25zdCBpc1dvcmtlciA9IHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWxUaGlzIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7XG5jb25zdCBpc0RlZiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgIT09IFwidW5kZWZpbmVkXCI7XG5jb25zdCBub3ROdWxsaXNoID0gKHZhbCkgPT4gdmFsICE9IG51bGw7XG5jb25zdCBhc3NlcnQgPSAoY29uZGl0aW9uLCAuLi5pbmZvcykgPT4ge1xuICBpZiAoIWNvbmRpdGlvbilcbiAgICBjb25zb2xlLndhcm4oLi4uaW5mb3MpO1xufTtcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xuY29uc3Qgbm93ID0gKCkgPT4gRGF0ZS5ub3coKTtcbmNvbnN0IHRpbWVzdGFtcCA9ICgpID0+ICtEYXRlLm5vdygpO1xuY29uc3QgY2xhbXAgPSAobiwgbWluLCBtYXgpID0+IE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCBuKSk7XG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcbmNvbnN0IHJhbmQgPSAobWluLCBtYXgpID0+IHtcbiAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59O1xuY29uc3QgaGFzT3duID0gKHZhbCwga2V5KSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpO1xuY29uc3QgaXNJT1MgPSAvKiBAX19QVVJFX18gKi8gZ2V0SXNJT1MoKTtcbmZ1bmN0aW9uIGdldElzSU9TKCkge1xuICB2YXIgX2EsIF9iO1xuICByZXR1cm4gaXNDbGllbnQgJiYgKChfYSA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lm5hdmlnYXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgJiYgKC9pUCg/OmFkfGhvbmV8b2QpLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSB8fCAoKF9iID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yKSA9PSBudWxsID8gdm9pZCAwIDogX2IubWF4VG91Y2hQb2ludHMpID4gMiAmJiAvaVBhZHxNYWNpbnRvc2gvLnRlc3Qod2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGZpbHRlciwgZm4pIHtcbiAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIFByb21pc2UucmVzb2x2ZShmaWx0ZXIoKCkgPT4gZm4uYXBwbHkodGhpcywgYXJncyksIHsgZm4sIHRoaXNBcmc6IHRoaXMsIGFyZ3MgfSkpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cbmNvbnN0IGJ5cGFzc0ZpbHRlciA9IChpbnZva2UpID0+IHtcbiAgcmV0dXJuIGludm9rZSgpO1xufTtcbmZ1bmN0aW9uIGRlYm91bmNlRmlsdGVyKG1zLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHRpbWVyO1xuICBsZXQgbWF4VGltZXI7XG4gIGxldCBsYXN0UmVqZWN0b3IgPSBub29wO1xuICBjb25zdCBfY2xlYXJUaW1lb3V0ID0gKHRpbWVyMikgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcjIpO1xuICAgIGxhc3RSZWplY3RvcigpO1xuICAgIGxhc3RSZWplY3RvciA9IG5vb3A7XG4gIH07XG4gIGNvbnN0IGZpbHRlciA9IChpbnZva2UpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRvVmFsdWUobXMpO1xuICAgIGNvbnN0IG1heER1cmF0aW9uID0gdG9WYWx1ZShvcHRpb25zLm1heFdhaXQpO1xuICAgIGlmICh0aW1lcilcbiAgICAgIF9jbGVhclRpbWVvdXQodGltZXIpO1xuICAgIGlmIChkdXJhdGlvbiA8PSAwIHx8IG1heER1cmF0aW9uICE9PSB2b2lkIDAgJiYgbWF4RHVyYXRpb24gPD0gMCkge1xuICAgICAgaWYgKG1heFRpbWVyKSB7XG4gICAgICAgIF9jbGVhclRpbWVvdXQobWF4VGltZXIpO1xuICAgICAgICBtYXhUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGludm9rZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxhc3RSZWplY3RvciA9IG9wdGlvbnMucmVqZWN0T25DYW5jZWwgPyByZWplY3QgOiByZXNvbHZlO1xuICAgICAgaWYgKG1heER1cmF0aW9uICYmICFtYXhUaW1lcikge1xuICAgICAgICBtYXhUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lcilcbiAgICAgICAgICAgIF9jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgIG1heFRpbWVyID0gbnVsbDtcbiAgICAgICAgICByZXNvbHZlKGludm9rZSgpKTtcbiAgICAgICAgfSwgbWF4RHVyYXRpb24pO1xuICAgICAgfVxuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG1heFRpbWVyKVxuICAgICAgICAgIF9jbGVhclRpbWVvdXQobWF4VGltZXIpO1xuICAgICAgICBtYXhUaW1lciA9IG51bGw7XG4gICAgICAgIHJlc29sdmUoaW52b2tlKCkpO1xuICAgICAgfSwgZHVyYXRpb24pO1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4gZmlsdGVyO1xufVxuZnVuY3Rpb24gdGhyb3R0bGVGaWx0ZXIoLi4uYXJncykge1xuICBsZXQgbGFzdEV4ZWMgPSAwO1xuICBsZXQgdGltZXI7XG4gIGxldCBpc0xlYWRpbmcgPSB0cnVlO1xuICBsZXQgbGFzdFJlamVjdG9yID0gbm9vcDtcbiAgbGV0IGxhc3RWYWx1ZTtcbiAgbGV0IG1zO1xuICBsZXQgdHJhaWxpbmc7XG4gIGxldCBsZWFkaW5nO1xuICBsZXQgcmVqZWN0T25DYW5jZWw7XG4gIGlmICghdnVlRGVtaS5pc1JlZihhcmdzWzBdKSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gXCJvYmplY3RcIilcbiAgICAoeyBkZWxheTogbXMsIHRyYWlsaW5nID0gdHJ1ZSwgbGVhZGluZyA9IHRydWUsIHJlamVjdE9uQ2FuY2VsID0gZmFsc2UgfSA9IGFyZ3NbMF0pO1xuICBlbHNlXG4gICAgW21zLCB0cmFpbGluZyA9IHRydWUsIGxlYWRpbmcgPSB0cnVlLCByZWplY3RPbkNhbmNlbCA9IGZhbHNlXSA9IGFyZ3M7XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdm9pZCAwO1xuICAgICAgbGFzdFJlamVjdG9yKCk7XG4gICAgICBsYXN0UmVqZWN0b3IgPSBub29wO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZmlsdGVyID0gKF9pbnZva2UpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRvVmFsdWUobXMpO1xuICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gbGFzdEV4ZWM7XG4gICAgY29uc3QgaW52b2tlID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIGxhc3RWYWx1ZSA9IF9pbnZva2UoKTtcbiAgICB9O1xuICAgIGNsZWFyKCk7XG4gICAgaWYgKGR1cmF0aW9uIDw9IDApIHtcbiAgICAgIGxhc3RFeGVjID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBpbnZva2UoKTtcbiAgICB9XG4gICAgaWYgKGVsYXBzZWQgPiBkdXJhdGlvbiAmJiAobGVhZGluZyB8fCAhaXNMZWFkaW5nKSkge1xuICAgICAgbGFzdEV4ZWMgPSBEYXRlLm5vdygpO1xuICAgICAgaW52b2tlKCk7XG4gICAgfSBlbHNlIGlmICh0cmFpbGluZykge1xuICAgICAgbGFzdFZhbHVlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsYXN0UmVqZWN0b3IgPSByZWplY3RPbkNhbmNlbCA/IHJlamVjdCA6IHJlc29sdmU7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgbGFzdEV4ZWMgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGlzTGVhZGluZyA9IHRydWU7XG4gICAgICAgICAgcmVzb2x2ZShpbnZva2UoKSk7XG4gICAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgfSwgTWF0aC5tYXgoMCwgZHVyYXRpb24gLSBlbGFwc2VkKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFsZWFkaW5nICYmICF0aW1lcilcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBpc0xlYWRpbmcgPSB0cnVlLCBkdXJhdGlvbik7XG4gICAgaXNMZWFkaW5nID0gZmFsc2U7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZTtcbiAgfTtcbiAgcmV0dXJuIGZpbHRlcjtcbn1cbmZ1bmN0aW9uIHBhdXNhYmxlRmlsdGVyKGV4dGVuZEZpbHRlciA9IGJ5cGFzc0ZpbHRlcikge1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gIH1cbiAgY29uc3QgZXZlbnRGaWx0ZXIgPSAoLi4uYXJncykgPT4ge1xuICAgIGlmIChpc0FjdGl2ZS52YWx1ZSlcbiAgICAgIGV4dGVuZEZpbHRlciguLi5hcmdzKTtcbiAgfTtcbiAgcmV0dXJuIHsgaXNBY3RpdmU6IHZ1ZURlbWkucmVhZG9ubHkoaXNBY3RpdmUpLCBwYXVzZSwgcmVzdW1lLCBldmVudEZpbHRlciB9O1xufVxuXG5mdW5jdGlvbiBjYWNoZVN0cmluZ0Z1bmN0aW9uKGZuKSB7XG4gIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAoc3RyKSA9PiB7XG4gICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XG4gIH07XG59XG5jb25zdCBoeXBoZW5hdGVSRSA9IC9cXEIoW0EtWl0pL2c7XG5jb25zdCBoeXBoZW5hdGUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJFLCBcIi0kMVwiKS50b0xvd2VyQ2FzZSgpKTtcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IGMgPyBjLnRvVXBwZXJDYXNlKCkgOiBcIlwiKTtcbn0pO1xuXG5mdW5jdGlvbiBwcm9taXNlVGltZW91dChtcywgdGhyb3dPblRpbWVvdXQgPSBmYWxzZSwgcmVhc29uID0gXCJUaW1lb3V0XCIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAodGhyb3dPblRpbWVvdXQpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChyZWFzb24pLCBtcyk7XG4gICAgZWxzZVxuICAgICAgc2V0VGltZW91dChyZXNvbHZlLCBtcyk7XG4gIH0pO1xufVxuZnVuY3Rpb24gaWRlbnRpdHkoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59XG5mdW5jdGlvbiBjcmVhdGVTaW5nbGV0b25Qcm9taXNlKGZuKSB7XG4gIGxldCBfcHJvbWlzZTtcbiAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICBpZiAoIV9wcm9taXNlKVxuICAgICAgX3Byb21pc2UgPSBmbigpO1xuICAgIHJldHVybiBfcHJvbWlzZTtcbiAgfVxuICB3cmFwcGVyLnJlc2V0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IF9wcmV2ID0gX3Byb21pc2U7XG4gICAgX3Byb21pc2UgPSB2b2lkIDA7XG4gICAgaWYgKF9wcmV2KVxuICAgICAgYXdhaXQgX3ByZXY7XG4gIH07XG4gIHJldHVybiB3cmFwcGVyO1xufVxuZnVuY3Rpb24gaW52b2tlKGZuKSB7XG4gIHJldHVybiBmbigpO1xufVxuZnVuY3Rpb24gY29udGFpbnNQcm9wKG9iaiwgLi4ucHJvcHMpIHtcbiAgcmV0dXJuIHByb3BzLnNvbWUoKGspID0+IGsgaW4gb2JqKTtcbn1cbmZ1bmN0aW9uIGluY3JlYXNlV2l0aFVuaXQodGFyZ2V0LCBkZWx0YSkge1xuICB2YXIgX2E7XG4gIGlmICh0eXBlb2YgdGFyZ2V0ID09PSBcIm51bWJlclwiKVxuICAgIHJldHVybiB0YXJnZXQgKyBkZWx0YTtcbiAgY29uc3QgdmFsdWUgPSAoKF9hID0gdGFyZ2V0Lm1hdGNoKC9eLT9cXGQrXFwuP1xcZCovKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSB8fCBcIlwiO1xuICBjb25zdCB1bml0ID0gdGFyZ2V0LnNsaWNlKHZhbHVlLmxlbmd0aCk7XG4gIGNvbnN0IHJlc3VsdCA9IE51bWJlci5wYXJzZUZsb2F0KHZhbHVlKSArIGRlbHRhO1xuICBpZiAoTnVtYmVyLmlzTmFOKHJlc3VsdCkpXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgcmV0dXJuIHJlc3VsdCArIHVuaXQ7XG59XG5mdW5jdGlvbiBvYmplY3RQaWNrKG9iaiwga2V5cywgb21pdFVuZGVmaW5lZCA9IGZhbHNlKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgobiwgaykgPT4ge1xuICAgIGlmIChrIGluIG9iaikge1xuICAgICAgaWYgKCFvbWl0VW5kZWZpbmVkIHx8IG9ialtrXSAhPT0gdm9pZCAwKVxuICAgICAgICBuW2tdID0gb2JqW2tdO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwge30pO1xufVxuZnVuY3Rpb24gb2JqZWN0T21pdChvYmosIGtleXMsIG9taXRVbmRlZmluZWQgPSBmYWxzZSkge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG9iaikuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICByZXR1cm4gKCFvbWl0VW5kZWZpbmVkIHx8IHZhbHVlICE9PSB2b2lkIDApICYmICFrZXlzLmluY2x1ZGVzKGtleSk7XG4gIH0pKTtcbn1cbmZ1bmN0aW9uIG9iamVjdEVudHJpZXMob2JqKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopO1xufVxuZnVuY3Rpb24gZ2V0TGlmZUN5Y2xlVGFyZ2V0KHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0IHx8IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCk7XG59XG5cbmZ1bmN0aW9uIHRvUmVmKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAxKVxuICAgIHJldHVybiB2dWVEZW1pLnRvUmVmKC4uLmFyZ3MpO1xuICBjb25zdCByID0gYXJnc1swXTtcbiAgcmV0dXJuIHR5cGVvZiByID09PSBcImZ1bmN0aW9uXCIgPyB2dWVEZW1pLnJlYWRvbmx5KHZ1ZURlbWkuY3VzdG9tUmVmKCgpID0+ICh7IGdldDogciwgc2V0OiBub29wIH0pKSkgOiB2dWVEZW1pLnJlZihyKTtcbn1cbmNvbnN0IHJlc29sdmVSZWYgPSB0b1JlZjtcblxuZnVuY3Rpb24gcmVhY3RpdmVQaWNrKG9iaiwgLi4ua2V5cykge1xuICBjb25zdCBmbGF0S2V5cyA9IGtleXMuZmxhdCgpO1xuICBjb25zdCBwcmVkaWNhdGUgPSBmbGF0S2V5c1swXTtcbiAgcmV0dXJuIHJlYWN0aXZlQ29tcHV0ZWQoKCkgPT4gdHlwZW9mIHByZWRpY2F0ZSA9PT0gXCJmdW5jdGlvblwiID8gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZ1ZURlbWkudG9SZWZzKG9iaikpLmZpbHRlcigoW2ssIHZdKSA9PiBwcmVkaWNhdGUodG9WYWx1ZSh2KSwgaykpKSA6IE9iamVjdC5mcm9tRW50cmllcyhmbGF0S2V5cy5tYXAoKGspID0+IFtrLCB0b1JlZihvYmosIGspXSkpKTtcbn1cblxuZnVuY3Rpb24gcmVmQXV0b1Jlc2V0KGRlZmF1bHRWYWx1ZSwgYWZ0ZXJNcyA9IDFlNCkge1xuICByZXR1cm4gdnVlRGVtaS5jdXN0b21SZWYoKHRyYWNrLCB0cmlnZ2VyKSA9PiB7XG4gICAgbGV0IHZhbHVlID0gdG9WYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgIGxldCB0aW1lcjtcbiAgICBjb25zdCByZXNldEFmdGVyID0gKCkgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB2YWx1ZSA9IHRvVmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICAgIHRyaWdnZXIoKTtcbiAgICB9LCB0b1ZhbHVlKGFmdGVyTXMpKTtcbiAgICB0cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgdHJpZ2dlcigpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB0aW1lciA9IHJlc2V0QWZ0ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlRGVib3VuY2VGbihmbiwgbXMgPSAyMDAsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gY3JlYXRlRmlsdGVyV3JhcHBlcihcbiAgICBkZWJvdW5jZUZpbHRlcihtcywgb3B0aW9ucyksXG4gICAgZm5cbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVmRGVib3VuY2VkKHZhbHVlLCBtcyA9IDIwMCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGRlYm91bmNlZCA9IHZ1ZURlbWkucmVmKHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgdXBkYXRlciA9IHVzZURlYm91bmNlRm4oKCkgPT4ge1xuICAgIGRlYm91bmNlZC52YWx1ZSA9IHZhbHVlLnZhbHVlO1xuICB9LCBtcywgb3B0aW9ucyk7XG4gIHZ1ZURlbWkud2F0Y2godmFsdWUsICgpID0+IHVwZGF0ZXIoKSk7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbmZ1bmN0aW9uIHJlZkRlZmF1bHQoc291cmNlLCBkZWZhdWx0VmFsdWUpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiAoX2EgPSBzb3VyY2UudmFsdWUpICE9IG51bGwgPyBfYSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgc291cmNlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlVGhyb3R0bGVGbihmbiwgbXMgPSAyMDAsIHRyYWlsaW5nID0gZmFsc2UsIGxlYWRpbmcgPSB0cnVlLCByZWplY3RPbkNhbmNlbCA9IGZhbHNlKSB7XG4gIHJldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKFxuICAgIHRocm90dGxlRmlsdGVyKG1zLCB0cmFpbGluZywgbGVhZGluZywgcmVqZWN0T25DYW5jZWwpLFxuICAgIGZuXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlZlRocm90dGxlZCh2YWx1ZSwgZGVsYXkgPSAyMDAsIHRyYWlsaW5nID0gdHJ1ZSwgbGVhZGluZyA9IHRydWUpIHtcbiAgaWYgKGRlbGF5IDw9IDApXG4gICAgcmV0dXJuIHZhbHVlO1xuICBjb25zdCB0aHJvdHRsZWQgPSB2dWVEZW1pLnJlZih2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IHVwZGF0ZXIgPSB1c2VUaHJvdHRsZUZuKCgpID0+IHtcbiAgICB0aHJvdHRsZWQudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgfSwgZGVsYXksIHRyYWlsaW5nLCBsZWFkaW5nKTtcbiAgdnVlRGVtaS53YXRjaCh2YWx1ZSwgKCkgPT4gdXBkYXRlcigpKTtcbiAgcmV0dXJuIHRocm90dGxlZDtcbn1cblxuZnVuY3Rpb24gcmVmV2l0aENvbnRyb2woaW5pdGlhbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBzb3VyY2UgPSBpbml0aWFsO1xuICBsZXQgdHJhY2s7XG4gIGxldCB0cmlnZ2VyO1xuICBjb25zdCByZWYgPSB2dWVEZW1pLmN1c3RvbVJlZigoX3RyYWNrLCBfdHJpZ2dlcikgPT4ge1xuICAgIHRyYWNrID0gX3RyYWNrO1xuICAgIHRyaWdnZXIgPSBfdHJpZ2dlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gZ2V0KCk7XG4gICAgICB9LFxuICAgICAgc2V0KHYpIHtcbiAgICAgICAgc2V0KHYpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICBmdW5jdGlvbiBnZXQodHJhY2tpbmcgPSB0cnVlKSB7XG4gICAgaWYgKHRyYWNraW5nKVxuICAgICAgdHJhY2soKTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGZ1bmN0aW9uIHNldCh2YWx1ZSwgdHJpZ2dlcmluZyA9IHRydWUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICh2YWx1ZSA9PT0gc291cmNlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG9sZCA9IHNvdXJjZTtcbiAgICBpZiAoKChfYSA9IG9wdGlvbnMub25CZWZvcmVDaGFuZ2UpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIHZhbHVlLCBvbGQpKSA9PT0gZmFsc2UpXG4gICAgICByZXR1cm47XG4gICAgc291cmNlID0gdmFsdWU7XG4gICAgKF9iID0gb3B0aW9ucy5vbkNoYW5nZWQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIHZhbHVlLCBvbGQpO1xuICAgIGlmICh0cmlnZ2VyaW5nKVxuICAgICAgdHJpZ2dlcigpO1xuICB9XG4gIGNvbnN0IHVudHJhY2tlZEdldCA9ICgpID0+IGdldChmYWxzZSk7XG4gIGNvbnN0IHNpbGVudFNldCA9ICh2KSA9PiBzZXQodiwgZmFsc2UpO1xuICBjb25zdCBwZWVrID0gKCkgPT4gZ2V0KGZhbHNlKTtcbiAgY29uc3QgbGF5ID0gKHYpID0+IHNldCh2LCBmYWxzZSk7XG4gIHJldHVybiBleHRlbmRSZWYoXG4gICAgcmVmLFxuICAgIHtcbiAgICAgIGdldCxcbiAgICAgIHNldCxcbiAgICAgIHVudHJhY2tlZEdldCxcbiAgICAgIHNpbGVudFNldCxcbiAgICAgIHBlZWssXG4gICAgICBsYXlcbiAgICB9LFxuICAgIHsgZW51bWVyYWJsZTogdHJ1ZSB9XG4gICk7XG59XG5jb25zdCBjb250cm9sbGVkUmVmID0gcmVmV2l0aENvbnRyb2w7XG5cbmZ1bmN0aW9uIHNldCguLi5hcmdzKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIGNvbnN0IFtyZWYsIHZhbHVlXSA9IGFyZ3M7XG4gICAgcmVmLnZhbHVlID0gdmFsdWU7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAzKSB7XG4gICAgaWYgKHZ1ZURlbWkuaXNWdWUyKSB7XG4gICAgICB2dWVEZW1pLnNldCguLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgW3RhcmdldCwga2V5LCB2YWx1ZV0gPSBhcmdzO1xuICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZXZlbnRGaWx0ZXIgPSBieXBhc3NGaWx0ZXIsXG4gICAgLi4ud2F0Y2hPcHRpb25zXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChcbiAgICBzb3VyY2UsXG4gICAgY3JlYXRlRmlsdGVyV3JhcHBlcihcbiAgICAgIGV2ZW50RmlsdGVyLFxuICAgICAgY2JcbiAgICApLFxuICAgIHdhdGNoT3B0aW9uc1xuICApO1xufVxuXG5mdW5jdGlvbiB3YXRjaFBhdXNhYmxlKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZXZlbnRGaWx0ZXI6IGZpbHRlcixcbiAgICAuLi53YXRjaE9wdGlvbnNcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgZXZlbnRGaWx0ZXIsIHBhdXNlLCByZXN1bWUsIGlzQWN0aXZlIH0gPSBwYXVzYWJsZUZpbHRlcihmaWx0ZXIpO1xuICBjb25zdCBzdG9wID0gd2F0Y2hXaXRoRmlsdGVyKFxuICAgIHNvdXJjZSxcbiAgICBjYixcbiAgICB7XG4gICAgICAuLi53YXRjaE9wdGlvbnMsXG4gICAgICBldmVudEZpbHRlclxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHsgc3RvcCwgcGF1c2UsIHJlc3VtZSwgaXNBY3RpdmUgfTtcbn1cblxuZnVuY3Rpb24gc3luY1JlZihsZWZ0LCByaWdodCwgLi4uW29wdGlvbnNdKSB7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwic3luY1wiLFxuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGRpcmVjdGlvbiA9IFwiYm90aFwiLFxuICAgIHRyYW5zZm9ybSA9IHt9XG4gIH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCB3YXRjaGVycyA9IFtdO1xuICBjb25zdCB0cmFuc2Zvcm1MVFIgPSBcImx0clwiIGluIHRyYW5zZm9ybSAmJiB0cmFuc2Zvcm0ubHRyIHx8ICgodikgPT4gdik7XG4gIGNvbnN0IHRyYW5zZm9ybVJUTCA9IFwicnRsXCIgaW4gdHJhbnNmb3JtICYmIHRyYW5zZm9ybS5ydGwgfHwgKCh2KSA9PiB2KTtcbiAgaWYgKGRpcmVjdGlvbiA9PT0gXCJib3RoXCIgfHwgZGlyZWN0aW9uID09PSBcImx0clwiKSB7XG4gICAgd2F0Y2hlcnMucHVzaCh3YXRjaFBhdXNhYmxlKFxuICAgICAgbGVmdCxcbiAgICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICB3YXRjaGVycy5mb3JFYWNoKCh3KSA9PiB3LnBhdXNlKCkpO1xuICAgICAgICByaWdodC52YWx1ZSA9IHRyYW5zZm9ybUxUUihuZXdWYWx1ZSk7XG4gICAgICAgIHdhdGNoZXJzLmZvckVhY2goKHcpID0+IHcucmVzdW1lKCkpO1xuICAgICAgfSxcbiAgICAgIHsgZmx1c2gsIGRlZXAsIGltbWVkaWF0ZSB9XG4gICAgKSk7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gXCJib3RoXCIgfHwgZGlyZWN0aW9uID09PSBcInJ0bFwiKSB7XG4gICAgd2F0Y2hlcnMucHVzaCh3YXRjaFBhdXNhYmxlKFxuICAgICAgcmlnaHQsXG4gICAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgd2F0Y2hlcnMuZm9yRWFjaCgodykgPT4gdy5wYXVzZSgpKTtcbiAgICAgICAgbGVmdC52YWx1ZSA9IHRyYW5zZm9ybVJUTChuZXdWYWx1ZSk7XG4gICAgICAgIHdhdGNoZXJzLmZvckVhY2goKHcpID0+IHcucmVzdW1lKCkpO1xuICAgICAgfSxcbiAgICAgIHsgZmx1c2gsIGRlZXAsIGltbWVkaWF0ZSB9XG4gICAgKSk7XG4gIH1cbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICB3YXRjaGVycy5mb3JFYWNoKCh3KSA9PiB3LnN0b3AoKSk7XG4gIH07XG4gIHJldHVybiBzdG9wO1xufVxuXG5mdW5jdGlvbiBzeW5jUmVmcyhzb3VyY2UsIHRhcmdldHMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZmx1c2ggPSBcInN5bmNcIixcbiAgICBkZWVwID0gZmFsc2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldHMpKVxuICAgIHRhcmdldHMgPSBbdGFyZ2V0c107XG4gIHJldHVybiB2dWVEZW1pLndhdGNoKFxuICAgIHNvdXJjZSxcbiAgICAobmV3VmFsdWUpID0+IHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiB0YXJnZXQudmFsdWUgPSBuZXdWYWx1ZSksXG4gICAgeyBmbHVzaCwgZGVlcCwgaW1tZWRpYXRlIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9SZWZzKG9iamVjdFJlZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICghdnVlRGVtaS5pc1JlZihvYmplY3RSZWYpKVxuICAgIHJldHVybiB2dWVEZW1pLnRvUmVmcyhvYmplY3RSZWYpO1xuICBjb25zdCByZXN1bHQgPSBBcnJheS5pc0FycmF5KG9iamVjdFJlZi52YWx1ZSkgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBvYmplY3RSZWYudmFsdWUubGVuZ3RoIH0pIDoge307XG4gIGZvciAoY29uc3Qga2V5IGluIG9iamVjdFJlZi52YWx1ZSkge1xuICAgIHJlc3VsdFtrZXldID0gdnVlRGVtaS5jdXN0b21SZWYoKCkgPT4gKHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdFJlZi52YWx1ZVtrZXldO1xuICAgICAgfSxcbiAgICAgIHNldCh2KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgcmVwbGFjZVJlZiA9IChfYSA9IHRvVmFsdWUob3B0aW9ucy5yZXBsYWNlUmVmKSkgIT0gbnVsbCA/IF9hIDogdHJ1ZTtcbiAgICAgICAgaWYgKHJlcGxhY2VSZWYpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3RSZWYudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBjb3B5ID0gWy4uLm9iamVjdFJlZi52YWx1ZV07XG4gICAgICAgICAgICBjb3B5W2tleV0gPSB2O1xuICAgICAgICAgICAgb2JqZWN0UmVmLnZhbHVlID0gY29weTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3T2JqZWN0ID0geyAuLi5vYmplY3RSZWYudmFsdWUsIFtrZXldOiB2IH07XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YobmV3T2JqZWN0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0UmVmLnZhbHVlKSk7XG4gICAgICAgICAgICBvYmplY3RSZWYudmFsdWUgPSBuZXdPYmplY3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9iamVjdFJlZi52YWx1ZVtrZXldID0gdjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB0cnlPbkJlZm9yZU1vdW50KGZuLCBzeW5jID0gdHJ1ZSwgdGFyZ2V0KSB7XG4gIGNvbnN0IGluc3RhbmNlID0gZ2V0TGlmZUN5Y2xlVGFyZ2V0KHRhcmdldCk7XG4gIGlmIChpbnN0YW5jZSlcbiAgICB2dWVEZW1pLm9uQmVmb3JlTW91bnQoZm4sIHRhcmdldCk7XG4gIGVsc2UgaWYgKHN5bmMpXG4gICAgZm4oKTtcbiAgZWxzZVxuICAgIHZ1ZURlbWkubmV4dFRpY2soZm4pO1xufVxuXG5mdW5jdGlvbiB0cnlPbkJlZm9yZVVubW91bnQoZm4sIHRhcmdldCkge1xuICBjb25zdCBpbnN0YW5jZSA9IGdldExpZmVDeWNsZVRhcmdldCh0YXJnZXQpO1xuICBpZiAoaW5zdGFuY2UpXG4gICAgdnVlRGVtaS5vbkJlZm9yZVVubW91bnQoZm4sIHRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIHRyeU9uTW91bnRlZChmbiwgc3luYyA9IHRydWUsIHRhcmdldCkge1xuICBjb25zdCBpbnN0YW5jZSA9IGdldExpZmVDeWNsZVRhcmdldCgpO1xuICBpZiAoaW5zdGFuY2UpXG4gICAgdnVlRGVtaS5vbk1vdW50ZWQoZm4sIHRhcmdldCk7XG4gIGVsc2UgaWYgKHN5bmMpXG4gICAgZm4oKTtcbiAgZWxzZVxuICAgIHZ1ZURlbWkubmV4dFRpY2soZm4pO1xufVxuXG5mdW5jdGlvbiB0cnlPblVubW91bnRlZChmbiwgdGFyZ2V0KSB7XG4gIGNvbnN0IGluc3RhbmNlID0gZ2V0TGlmZUN5Y2xlVGFyZ2V0KHRhcmdldCk7XG4gIGlmIChpbnN0YW5jZSlcbiAgICB2dWVEZW1pLm9uVW5tb3VudGVkKGZuLCB0YXJnZXQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVVbnRpbChyLCBpc05vdCA9IGZhbHNlKSB7XG4gIGZ1bmN0aW9uIHRvTWF0Y2goY29uZGl0aW9uLCB7IGZsdXNoID0gXCJzeW5jXCIsIGRlZXAgPSBmYWxzZSwgdGltZW91dCwgdGhyb3dPblRpbWVvdXQgfSA9IHt9KSB7XG4gICAgbGV0IHN0b3AgPSBudWxsO1xuICAgIGNvbnN0IHdhdGNoZXIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goXG4gICAgICAgIHIsXG4gICAgICAgICh2KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmRpdGlvbih2KSAhPT0gaXNOb3QpIHtcbiAgICAgICAgICAgIGlmIChzdG9wKVxuICAgICAgICAgICAgICBzdG9wKCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gc3RvcCA9PSBudWxsID8gdm9pZCAwIDogc3RvcCgpKTtcbiAgICAgICAgICAgIHJlc29sdmUodik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmx1c2gsXG4gICAgICAgICAgZGVlcCxcbiAgICAgICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFt3YXRjaGVyXTtcbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICBwcm9taXNlVGltZW91dCh0aW1lb3V0LCB0aHJvd09uVGltZW91dCkudGhlbigoKSA9PiB0b1ZhbHVlKHIpKS5maW5hbGx5KCgpID0+IHN0b3AgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AoKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmUodmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIXZ1ZURlbWkuaXNSZWYodmFsdWUpKVxuICAgICAgcmV0dXJuIHRvTWF0Y2goKHYpID0+IHYgPT09IHZhbHVlLCBvcHRpb25zKTtcbiAgICBjb25zdCB7IGZsdXNoID0gXCJzeW5jXCIsIGRlZXAgPSBmYWxzZSwgdGltZW91dCwgdGhyb3dPblRpbWVvdXQgfSA9IG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fTtcbiAgICBsZXQgc3RvcCA9IG51bGw7XG4gICAgY29uc3Qgd2F0Y2hlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzdG9wID0gdnVlRGVtaS53YXRjaChcbiAgICAgICAgW3IsIHZhbHVlXSxcbiAgICAgICAgKFt2MSwgdjJdKSA9PiB7XG4gICAgICAgICAgaWYgKGlzTm90ICE9PSAodjEgPT09IHYyKSkge1xuICAgICAgICAgICAgaWYgKHN0b3ApXG4gICAgICAgICAgICAgIHN0b3AoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh2MSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmx1c2gsXG4gICAgICAgICAgZGVlcCxcbiAgICAgICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFt3YXRjaGVyXTtcbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICBwcm9taXNlVGltZW91dCh0aW1lb3V0LCB0aHJvd09uVGltZW91dCkudGhlbigoKSA9PiB0b1ZhbHVlKHIpKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCk7XG4gICAgICAgICAgcmV0dXJuIHRvVmFsdWUocik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlVHJ1dGh5KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9NYXRjaCgodikgPT4gQm9vbGVhbih2KSwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZU51bGwob3B0aW9ucykge1xuICAgIHJldHVybiB0b0JlKG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmVVbmRlZmluZWQob3B0aW9ucykge1xuICAgIHJldHVybiB0b0JlKHZvaWQgMCwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZU5hTihvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvTWF0Y2goTnVtYmVyLmlzTmFOLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiB0b0NvbnRhaW5zKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvTWF0Y2goKHYpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuZnJvbSh2KTtcbiAgICAgIHJldHVybiBhcnJheS5pbmNsdWRlcyh2YWx1ZSkgfHwgYXJyYXkuaW5jbHVkZXModG9WYWx1ZSh2YWx1ZSkpO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIGNoYW5nZWQob3B0aW9ucykge1xuICAgIHJldHVybiBjaGFuZ2VkVGltZXMoMSwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gY2hhbmdlZFRpbWVzKG4gPSAxLCBvcHRpb25zKSB7XG4gICAgbGV0IGNvdW50ID0gLTE7XG4gICAgcmV0dXJuIHRvTWF0Y2goKCkgPT4ge1xuICAgICAgY291bnQgKz0gMTtcbiAgICAgIHJldHVybiBjb3VudCA+PSBuO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHRvVmFsdWUocikpKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XG4gICAgICB0b01hdGNoLFxuICAgICAgdG9Db250YWlucyxcbiAgICAgIGNoYW5nZWQsXG4gICAgICBjaGFuZ2VkVGltZXMsXG4gICAgICBnZXQgbm90KCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlVW50aWwociwgIWlzTm90KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHtcbiAgICAgIHRvTWF0Y2gsXG4gICAgICB0b0JlLFxuICAgICAgdG9CZVRydXRoeSxcbiAgICAgIHRvQmVOdWxsLFxuICAgICAgdG9CZU5hTixcbiAgICAgIHRvQmVVbmRlZmluZWQsXG4gICAgICBjaGFuZ2VkLFxuICAgICAgY2hhbmdlZFRpbWVzLFxuICAgICAgZ2V0IG5vdCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVudGlsKHIsICFpc05vdCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbn1cbmZ1bmN0aW9uIHVudGlsKHIpIHtcbiAgcmV0dXJuIGNyZWF0ZVVudGlsKHIpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcih2YWx1ZSwgb3RoVmFsKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoVmFsO1xufVxuZnVuY3Rpb24gdXNlQXJyYXlEaWZmZXJlbmNlKC4uLmFyZ3MpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBsaXN0ID0gYXJnc1swXTtcbiAgY29uc3QgdmFsdWVzID0gYXJnc1sxXTtcbiAgbGV0IGNvbXBhcmVGbiA9IChfYSA9IGFyZ3NbMl0pICE9IG51bGwgPyBfYSA6IGRlZmF1bHRDb21wYXJhdG9yO1xuICBpZiAodHlwZW9mIGNvbXBhcmVGbiA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IGtleSA9IGNvbXBhcmVGbjtcbiAgICBjb21wYXJlRm4gPSAodmFsdWUsIG90aFZhbCkgPT4gdmFsdWVba2V5XSA9PT0gb3RoVmFsW2tleV07XG4gIH1cbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShsaXN0KS5maWx0ZXIoKHgpID0+IHRvVmFsdWUodmFsdWVzKS5maW5kSW5kZXgoKHkpID0+IGNvbXBhcmVGbih4LCB5KSkgPT09IC0xKSk7XG59XG5cbmZ1bmN0aW9uIHVzZUFycmF5RXZlcnkobGlzdCwgZm4pIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShsaXN0KS5ldmVyeSgoZWxlbWVudCwgaW5kZXgsIGFycmF5KSA9PiBmbih0b1ZhbHVlKGVsZW1lbnQpLCBpbmRleCwgYXJyYXkpKSk7XG59XG5cbmZ1bmN0aW9uIHVzZUFycmF5RmlsdGVyKGxpc3QsIGZuKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHRvVmFsdWUobGlzdCkubWFwKChpKSA9PiB0b1ZhbHVlKGkpKS5maWx0ZXIoZm4pKTtcbn1cblxuZnVuY3Rpb24gdXNlQXJyYXlGaW5kKGxpc3QsIGZuKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHRvVmFsdWUoXG4gICAgdG9WYWx1ZShsaXN0KS5maW5kKChlbGVtZW50LCBpbmRleCwgYXJyYXkpID0+IGZuKHRvVmFsdWUoZWxlbWVudCksIGluZGV4LCBhcnJheSkpXG4gICkpO1xufVxuXG5mdW5jdGlvbiB1c2VBcnJheUZpbmRJbmRleChsaXN0LCBmbikge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB0b1ZhbHVlKGxpc3QpLmZpbmRJbmRleCgoZWxlbWVudCwgaW5kZXgsIGFycmF5KSA9PiBmbih0b1ZhbHVlKGVsZW1lbnQpLCBpbmRleCwgYXJyYXkpKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRMYXN0KGFyciwgY2IpIHtcbiAgbGV0IGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgd2hpbGUgKGluZGV4LS0gPiAwKSB7XG4gICAgaWYgKGNiKGFycltpbmRleF0sIGluZGV4LCBhcnIpKVxuICAgICAgcmV0dXJuIGFycltpbmRleF07XG4gIH1cbiAgcmV0dXJuIHZvaWQgMDtcbn1cbmZ1bmN0aW9uIHVzZUFycmF5RmluZExhc3QobGlzdCwgZm4pIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShcbiAgICAhQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0ID8gZmluZExhc3QodG9WYWx1ZShsaXN0KSwgKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgPT4gZm4odG9WYWx1ZShlbGVtZW50KSwgaW5kZXgsIGFycmF5KSkgOiB0b1ZhbHVlKGxpc3QpLmZpbmRMYXN0KChlbGVtZW50LCBpbmRleCwgYXJyYXkpID0+IGZuKHRvVmFsdWUoZWxlbWVudCksIGluZGV4LCBhcnJheSkpXG4gICkpO1xufVxuXG5mdW5jdGlvbiBpc0FycmF5SW5jbHVkZXNPcHRpb25zKG9iaikge1xuICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBjb250YWluc1Byb3Aob2JqLCBcImZvcm1JbmRleFwiLCBcImNvbXBhcmF0b3JcIik7XG59XG5mdW5jdGlvbiB1c2VBcnJheUluY2x1ZGVzKC4uLmFyZ3MpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBsaXN0ID0gYXJnc1swXTtcbiAgY29uc3QgdmFsdWUgPSBhcmdzWzFdO1xuICBsZXQgY29tcGFyYXRvciA9IGFyZ3NbMl07XG4gIGxldCBmb3JtSW5kZXggPSAwO1xuICBpZiAoaXNBcnJheUluY2x1ZGVzT3B0aW9ucyhjb21wYXJhdG9yKSkge1xuICAgIGZvcm1JbmRleCA9IChfYSA9IGNvbXBhcmF0b3IuZnJvbUluZGV4KSAhPSBudWxsID8gX2EgOiAwO1xuICAgIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yLmNvbXBhcmF0b3I7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb21wYXJhdG9yID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3Qga2V5ID0gY29tcGFyYXRvcjtcbiAgICBjb21wYXJhdG9yID0gKGVsZW1lbnQsIHZhbHVlMikgPT4gZWxlbWVudFtrZXldID09PSB0b1ZhbHVlKHZhbHVlMik7XG4gIH1cbiAgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgIT0gbnVsbCA/IGNvbXBhcmF0b3IgOiAoZWxlbWVudCwgdmFsdWUyKSA9PiBlbGVtZW50ID09PSB0b1ZhbHVlKHZhbHVlMik7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHRvVmFsdWUobGlzdCkuc2xpY2UoZm9ybUluZGV4KS5zb21lKChlbGVtZW50LCBpbmRleCwgYXJyYXkpID0+IGNvbXBhcmF0b3IoXG4gICAgdG9WYWx1ZShlbGVtZW50KSxcbiAgICB0b1ZhbHVlKHZhbHVlKSxcbiAgICBpbmRleCxcbiAgICB0b1ZhbHVlKGFycmF5KVxuICApKSk7XG59XG5cbmZ1bmN0aW9uIHVzZUFycmF5Sm9pbihsaXN0LCBzZXBhcmF0b3IpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShsaXN0KS5tYXAoKGkpID0+IHRvVmFsdWUoaSkpLmpvaW4odG9WYWx1ZShzZXBhcmF0b3IpKSk7XG59XG5cbmZ1bmN0aW9uIHVzZUFycmF5TWFwKGxpc3QsIGZuKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHRvVmFsdWUobGlzdCkubWFwKChpKSA9PiB0b1ZhbHVlKGkpKS5tYXAoZm4pKTtcbn1cblxuZnVuY3Rpb24gdXNlQXJyYXlSZWR1Y2UobGlzdCwgcmVkdWNlciwgLi4uYXJncykge1xuICBjb25zdCByZWR1Y2VDYWxsYmFjayA9IChzdW0sIHZhbHVlLCBpbmRleCkgPT4gcmVkdWNlcih0b1ZhbHVlKHN1bSksIHRvVmFsdWUodmFsdWUpLCBpbmRleCk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHRvVmFsdWUobGlzdCk7XG4gICAgcmV0dXJuIGFyZ3MubGVuZ3RoID8gcmVzb2x2ZWQucmVkdWNlKHJlZHVjZUNhbGxiYWNrLCB0b1ZhbHVlKGFyZ3NbMF0pKSA6IHJlc29sdmVkLnJlZHVjZShyZWR1Y2VDYWxsYmFjayk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VBcnJheVNvbWUobGlzdCwgZm4pIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShsaXN0KS5zb21lKChlbGVtZW50LCBpbmRleCwgYXJyYXkpID0+IGZuKHRvVmFsdWUoZWxlbWVudCksIGluZGV4LCBhcnJheSkpKTtcbn1cblxuZnVuY3Rpb24gdW5pcShhcnJheSkge1xuICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGFycmF5KSk7XG59XG5mdW5jdGlvbiB1bmlxdWVFbGVtZW50c0J5KGFycmF5LCBmbikge1xuICByZXR1cm4gYXJyYXkucmVkdWNlKChhY2MsIHYpID0+IHtcbiAgICBpZiAoIWFjYy5zb21lKCh4KSA9PiBmbih2LCB4LCBhcnJheSkpKVxuICAgICAgYWNjLnB1c2godik7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gdXNlQXJyYXlVbmlxdWUobGlzdCwgY29tcGFyZUZuKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZExpc3QgPSB0b1ZhbHVlKGxpc3QpLm1hcCgoZWxlbWVudCkgPT4gdG9WYWx1ZShlbGVtZW50KSk7XG4gICAgcmV0dXJuIGNvbXBhcmVGbiA/IHVuaXF1ZUVsZW1lbnRzQnkocmVzb2x2ZWRMaXN0LCBjb21wYXJlRm4pIDogdW5pcShyZXNvbHZlZExpc3QpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQ291bnRlcihpbml0aWFsVmFsdWUgPSAwLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IF9pbml0aWFsVmFsdWUgPSB2dWVEZW1pLnVucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IGNvdW50ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qge1xuICAgIG1heCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBtaW4gPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGluYyA9IChkZWx0YSA9IDEpID0+IGNvdW50LnZhbHVlID0gTWF0aC5tYXgoTWF0aC5taW4obWF4LCBjb3VudC52YWx1ZSArIGRlbHRhKSwgbWluKTtcbiAgY29uc3QgZGVjID0gKGRlbHRhID0gMSkgPT4gY291bnQudmFsdWUgPSBNYXRoLm1pbihNYXRoLm1heChtaW4sIGNvdW50LnZhbHVlIC0gZGVsdGEpLCBtYXgpO1xuICBjb25zdCBnZXQgPSAoKSA9PiBjb3VudC52YWx1ZTtcbiAgY29uc3Qgc2V0ID0gKHZhbCkgPT4gY291bnQudmFsdWUgPSBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgdmFsKSk7XG4gIGNvbnN0IHJlc2V0ID0gKHZhbCA9IF9pbml0aWFsVmFsdWUpID0+IHtcbiAgICBfaW5pdGlhbFZhbHVlID0gdmFsO1xuICAgIHJldHVybiBzZXQodmFsKTtcbiAgfTtcbiAgcmV0dXJuIHsgY291bnQsIGluYywgZGVjLCBnZXQsIHNldCwgcmVzZXQgfTtcbn1cblxuY29uc3QgUkVHRVhfUEFSU0UgPSAvXihcXGR7NH0pWy0vXT8oXFxkezEsMn0pP1stL10/KFxcZHswLDJ9KVtUXFxzXSooXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Wy46XT8oXFxkKyk/JC9pO1xuY29uc3QgUkVHRVhfRk9STUFUID0gL1tZTURIaG1zXW98XFxbKFteXFxdXSspXFxdfFl7MSw0fXxNezEsNH18RHsxLDJ9fGR7MSw0fXxIezEsMn18aHsxLDJ9fGF7MSwyfXxBezEsMn18bXsxLDJ9fHN7MSwyfXxaezEsMn18U1NTL2c7XG5mdW5jdGlvbiBkZWZhdWx0TWVyaWRpZW0oaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXJjYXNlLCBoYXNQZXJpb2QpIHtcbiAgbGV0IG0gPSBob3VycyA8IDEyID8gXCJBTVwiIDogXCJQTVwiO1xuICBpZiAoaGFzUGVyaW9kKVxuICAgIG0gPSBtLnNwbGl0KFwiXCIpLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKz0gYCR7Y3Vycn0uYCwgXCJcIik7XG4gIHJldHVybiBpc0xvd2VyY2FzZSA/IG0udG9Mb3dlckNhc2UoKSA6IG07XG59XG5mdW5jdGlvbiBmb3JtYXRPcmRpbmFsKG51bSkge1xuICBjb25zdCBzdWZmaXhlcyA9IFtcInRoXCIsIFwic3RcIiwgXCJuZFwiLCBcInJkXCJdO1xuICBjb25zdCB2ID0gbnVtICUgMTAwO1xuICByZXR1cm4gbnVtICsgKHN1ZmZpeGVzWyh2IC0gMjApICUgMTBdIHx8IHN1ZmZpeGVzW3ZdIHx8IHN1ZmZpeGVzWzBdKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSwgZm9ybWF0U3RyLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hO1xuICBjb25zdCB5ZWFycyA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IGRheXMgPSBkYXRlLmdldERhdGUoKTtcbiAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuICBjb25zdCBtaWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICBjb25zdCBkYXkgPSBkYXRlLmdldERheSgpO1xuICBjb25zdCBtZXJpZGllbSA9IChfYSA9IG9wdGlvbnMuY3VzdG9tTWVyaWRpZW0pICE9IG51bGwgPyBfYSA6IGRlZmF1bHRNZXJpZGllbTtcbiAgY29uc3QgbWF0Y2hlcyA9IHtcbiAgICBZbzogKCkgPT4gZm9ybWF0T3JkaW5hbCh5ZWFycyksXG4gICAgWVk6ICgpID0+IFN0cmluZyh5ZWFycykuc2xpY2UoLTIpLFxuICAgIFlZWVk6ICgpID0+IHllYXJzLFxuICAgIE06ICgpID0+IG1vbnRoICsgMSxcbiAgICBNbzogKCkgPT4gZm9ybWF0T3JkaW5hbChtb250aCArIDEpLFxuICAgIE1NOiAoKSA9PiBgJHttb250aCArIDF9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgTU1NOiAoKSA9PiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0b1ZhbHVlKG9wdGlvbnMubG9jYWxlcyksIHsgbW9udGg6IFwic2hvcnRcIiB9KSxcbiAgICBNTU1NOiAoKSA9PiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0b1ZhbHVlKG9wdGlvbnMubG9jYWxlcyksIHsgbW9udGg6IFwibG9uZ1wiIH0pLFxuICAgIEQ6ICgpID0+IFN0cmluZyhkYXlzKSxcbiAgICBEbzogKCkgPT4gZm9ybWF0T3JkaW5hbChkYXlzKSxcbiAgICBERDogKCkgPT4gYCR7ZGF5c31gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBIOiAoKSA9PiBTdHJpbmcoaG91cnMpLFxuICAgIEhvOiAoKSA9PiBmb3JtYXRPcmRpbmFsKGhvdXJzKSxcbiAgICBISDogKCkgPT4gYCR7aG91cnN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgaDogKCkgPT4gYCR7aG91cnMgJSAxMiB8fCAxMn1gLnBhZFN0YXJ0KDEsIFwiMFwiKSxcbiAgICBobzogKCkgPT4gZm9ybWF0T3JkaW5hbChob3VycyAlIDEyIHx8IDEyKSxcbiAgICBoaDogKCkgPT4gYCR7aG91cnMgJSAxMiB8fCAxMn1gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBtOiAoKSA9PiBTdHJpbmcobWludXRlcyksXG4gICAgbW86ICgpID0+IGZvcm1hdE9yZGluYWwobWludXRlcyksXG4gICAgbW06ICgpID0+IGAke21pbnV0ZXN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgczogKCkgPT4gU3RyaW5nKHNlY29uZHMpLFxuICAgIHNvOiAoKSA9PiBmb3JtYXRPcmRpbmFsKHNlY29uZHMpLFxuICAgIHNzOiAoKSA9PiBgJHtzZWNvbmRzfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIFNTUzogKCkgPT4gYCR7bWlsbGlzZWNvbmRzfWAucGFkU3RhcnQoMywgXCIwXCIpLFxuICAgIGQ6ICgpID0+IGRheSxcbiAgICBkZDogKCkgPT4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodG9WYWx1ZShvcHRpb25zLmxvY2FsZXMpLCB7IHdlZWtkYXk6IFwibmFycm93XCIgfSksXG4gICAgZGRkOiAoKSA9PiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0b1ZhbHVlKG9wdGlvbnMubG9jYWxlcyksIHsgd2Vla2RheTogXCJzaG9ydFwiIH0pLFxuICAgIGRkZGQ6ICgpID0+IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRvVmFsdWUob3B0aW9ucy5sb2NhbGVzKSwgeyB3ZWVrZGF5OiBcImxvbmdcIiB9KSxcbiAgICBBOiAoKSA9PiBtZXJpZGllbShob3VycywgbWludXRlcyksXG4gICAgQUE6ICgpID0+IG1lcmlkaWVtKGhvdXJzLCBtaW51dGVzLCBmYWxzZSwgdHJ1ZSksXG4gICAgYTogKCkgPT4gbWVyaWRpZW0oaG91cnMsIG1pbnV0ZXMsIHRydWUpLFxuICAgIGFhOiAoKSA9PiBtZXJpZGllbShob3VycywgbWludXRlcywgdHJ1ZSwgdHJ1ZSlcbiAgfTtcbiAgcmV0dXJuIGZvcm1hdFN0ci5yZXBsYWNlKFJFR0VYX0ZPUk1BVCwgKG1hdGNoLCAkMSkgPT4ge1xuICAgIHZhciBfYTIsIF9iO1xuICAgIHJldHVybiAoX2IgPSAkMSAhPSBudWxsID8gJDEgOiAoX2EyID0gbWF0Y2hlc1ttYXRjaF0pID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChtYXRjaGVzKSkgIT0gbnVsbCA/IF9iIDogbWF0Y2g7XG4gIH0pO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplRGF0ZShkYXRlKSB7XG4gIGlmIChkYXRlID09PSBudWxsKVxuICAgIHJldHVybiBuZXcgRGF0ZShOdW1iZXIuTmFOKTtcbiAgaWYgKGRhdGUgPT09IHZvaWQgMClcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIiAmJiAhL1okL2kudGVzdChkYXRlKSkge1xuICAgIGNvbnN0IGQgPSBkYXRlLm1hdGNoKFJFR0VYX1BBUlNFKTtcbiAgICBpZiAoZCkge1xuICAgICAgY29uc3QgbSA9IGRbMl0gLSAxIHx8IDA7XG4gICAgICBjb25zdCBtcyA9IChkWzddIHx8IFwiMFwiKS5zdWJzdHJpbmcoMCwgMyk7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZFsxXSwgbSwgZFszXSB8fCAxLCBkWzRdIHx8IDAsIGRbNV0gfHwgMCwgZFs2XSB8fCAwLCBtcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlKTtcbn1cbmZ1bmN0aW9uIHVzZURhdGVGb3JtYXQoZGF0ZSwgZm9ybWF0U3RyID0gXCJISDptbTpzc1wiLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZm9ybWF0RGF0ZShub3JtYWxpemVEYXRlKHRvVmFsdWUoZGF0ZSkpLCB0b1ZhbHVlKGZvcm1hdFN0ciksIG9wdGlvbnMpKTtcbn1cblxuZnVuY3Rpb24gdXNlSW50ZXJ2YWxGbihjYiwgaW50ZXJ2YWwgPSAxZTMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBpbW1lZGlhdGVDYWxsYmFjayA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBsZXQgdGltZXIgPSBudWxsO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgZnVuY3Rpb24gY2xlYW4oKSB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgICBjbGVhbigpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBjb25zdCBpbnRlcnZhbFZhbHVlID0gdG9WYWx1ZShpbnRlcnZhbCk7XG4gICAgaWYgKGludGVydmFsVmFsdWUgPD0gMClcbiAgICAgIHJldHVybjtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGltbWVkaWF0ZUNhbGxiYWNrKVxuICAgICAgY2IoKTtcbiAgICBjbGVhbigpO1xuICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoY2IsIGludGVydmFsVmFsdWUpO1xuICB9XG4gIGlmIChpbW1lZGlhdGUgJiYgaXNDbGllbnQpXG4gICAgcmVzdW1lKCk7XG4gIGlmICh2dWVEZW1pLmlzUmVmKGludGVydmFsKSB8fCB0eXBlb2YgaW50ZXJ2YWwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgIGlmIChpc0FjdGl2ZS52YWx1ZSAmJiBpc0NsaWVudClcbiAgICAgICAgcmVzdW1lKCk7XG4gICAgfSk7XG4gICAgdHJ5T25TY29wZURpc3Bvc2Uoc3RvcFdhdGNoKTtcbiAgfVxuICB0cnlPblNjb3BlRGlzcG9zZShwYXVzZSk7XG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmUsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUludGVydmFsKGludGVydmFsID0gMWUzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlLFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgY2FsbGJhY2tcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4gY291bnRlci52YWx1ZSArPSAxO1xuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBjb3VudGVyLnZhbHVlID0gMDtcbiAgfTtcbiAgY29uc3QgY29udHJvbHMgPSB1c2VJbnRlcnZhbEZuKFxuICAgIGNhbGxiYWNrID8gKCkgPT4ge1xuICAgICAgdXBkYXRlKCk7XG4gICAgICBjYWxsYmFjayhjb3VudGVyLnZhbHVlKTtcbiAgICB9IDogdXBkYXRlLFxuICAgIGludGVydmFsLFxuICAgIHsgaW1tZWRpYXRlIH1cbiAgKTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvdW50ZXIsXG4gICAgICByZXNldCxcbiAgICAgIC4uLmNvbnRyb2xzXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VMYXN0Q2hhbmdlZChzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IG1zID0gdnVlRGVtaS5yZWYoKF9hID0gb3B0aW9ucy5pbml0aWFsVmFsdWUpICE9IG51bGwgPyBfYSA6IG51bGwpO1xuICB2dWVEZW1pLndhdGNoKFxuICAgIHNvdXJjZSxcbiAgICAoKSA9PiBtcy52YWx1ZSA9IHRpbWVzdGFtcCgpLFxuICAgIG9wdGlvbnNcbiAgKTtcbiAgcmV0dXJuIG1zO1xufVxuXG5mdW5jdGlvbiB1c2VUaW1lb3V0Rm4oY2IsIGludGVydmFsLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgbGV0IHRpbWVyID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIGlzUGVuZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIGNsZWFyKCk7XG4gIH1cbiAgZnVuY3Rpb24gc3RhcnQoLi4uYXJncykge1xuICAgIGNsZWFyKCk7XG4gICAgaXNQZW5kaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaXNQZW5kaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgICBjYiguLi5hcmdzKTtcbiAgICB9LCB0b1ZhbHVlKGludGVydmFsKSk7XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSkge1xuICAgIGlzUGVuZGluZy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGlzQ2xpZW50KVxuICAgICAgc3RhcnQoKTtcbiAgfVxuICB0cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1BlbmRpbmc6IHZ1ZURlbWkucmVhZG9ubHkoaXNQZW5kaW5nKSxcbiAgICBzdGFydCxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVRpbWVvdXQoaW50ZXJ2YWwgPSAxZTMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgY2FsbGJhY2tcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvbnRyb2xzID0gdXNlVGltZW91dEZuKFxuICAgIGNhbGxiYWNrICE9IG51bGwgPyBjYWxsYmFjayA6IG5vb3AsXG4gICAgaW50ZXJ2YWwsXG4gICAgb3B0aW9uc1xuICApO1xuICBjb25zdCByZWFkeSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gIWNvbnRyb2xzLmlzUGVuZGluZy52YWx1ZSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiB7XG4gICAgICByZWFkeSxcbiAgICAgIC4uLmNvbnRyb2xzXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVhZHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlVG9OdW1iZXIodmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbWV0aG9kID0gXCJwYXJzZUZsb2F0XCIsXG4gICAgcmFkaXgsXG4gICAgbmFuVG9aZXJvXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHJlc29sdmVkID0gdG9WYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiByZXNvbHZlZCA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHJlc29sdmVkID0gTnVtYmVyW21ldGhvZF0ocmVzb2x2ZWQsIHJhZGl4KTtcbiAgICBpZiAobmFuVG9aZXJvICYmIE51bWJlci5pc05hTihyZXNvbHZlZCkpXG4gICAgICByZXNvbHZlZCA9IDA7XG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gYCR7dG9WYWx1ZSh2YWx1ZSl9YCk7XG59XG5cbmZ1bmN0aW9uIHVzZVRvZ2dsZShpbml0aWFsVmFsdWUgPSBmYWxzZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0cnV0aHlWYWx1ZSA9IHRydWUsXG4gICAgZmFsc3lWYWx1ZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB2YWx1ZUlzUmVmID0gdnVlRGVtaS5pc1JlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBfdmFsdWUgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBmdW5jdGlvbiB0b2dnbGUodmFsdWUpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgX3ZhbHVlLnZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gX3ZhbHVlLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cnV0aHkgPSB0b1ZhbHVlKHRydXRoeVZhbHVlKTtcbiAgICAgIF92YWx1ZS52YWx1ZSA9IF92YWx1ZS52YWx1ZSA9PT0gdHJ1dGh5ID8gdG9WYWx1ZShmYWxzeVZhbHVlKSA6IHRydXRoeTtcbiAgICAgIHJldHVybiBfdmFsdWUudmFsdWU7XG4gICAgfVxuICB9XG4gIGlmICh2YWx1ZUlzUmVmKVxuICAgIHJldHVybiB0b2dnbGU7XG4gIGVsc2VcbiAgICByZXR1cm4gW192YWx1ZSwgdG9nZ2xlXTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hBcnJheShzb3VyY2UsIGNiLCBvcHRpb25zKSB7XG4gIGxldCBvbGRMaXN0ID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW1tZWRpYXRlKSA/IFtdIDogWy4uLnNvdXJjZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gc291cmNlKCkgOiBBcnJheS5pc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UgOiB0b1ZhbHVlKHNvdXJjZSldO1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChzb3VyY2UsIChuZXdMaXN0LCBfLCBvbkNsZWFudXApID0+IHtcbiAgICBjb25zdCBvbGRMaXN0UmVtYWlucyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IG9sZExpc3QubGVuZ3RoIH0pO1xuICAgIGNvbnN0IGFkZGVkID0gW107XG4gICAgZm9yIChjb25zdCBvYmogb2YgbmV3TGlzdCkge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9sZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFvbGRMaXN0UmVtYWluc1tpXSAmJiBvYmogPT09IG9sZExpc3RbaV0pIHtcbiAgICAgICAgICBvbGRMaXN0UmVtYWluc1tpXSA9IHRydWU7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kKVxuICAgICAgICBhZGRlZC5wdXNoKG9iaik7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZWQgPSBvbGRMaXN0LmZpbHRlcigoXzIsIGkpID0+ICFvbGRMaXN0UmVtYWluc1tpXSk7XG4gICAgY2IobmV3TGlzdCwgb2xkTGlzdCwgYWRkZWQsIHJlbW92ZWQsIG9uQ2xlYW51cCk7XG4gICAgb2xkTGlzdCA9IFsuLi5uZXdMaXN0XTtcbiAgfSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHdhdGNoQXRNb3N0KHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIGNvdW50LFxuICAgIC4uLndhdGNoT3B0aW9uc1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBzdG9wID0gd2F0Y2hXaXRoRmlsdGVyKFxuICAgIHNvdXJjZSxcbiAgICAoLi4uYXJncykgPT4ge1xuICAgICAgY3VycmVudC52YWx1ZSArPSAxO1xuICAgICAgaWYgKGN1cnJlbnQudmFsdWUgPj0gdG9WYWx1ZShjb3VudCkpXG4gICAgICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gc3RvcCgpKTtcbiAgICAgIGNiKC4uLmFyZ3MpO1xuICAgIH0sXG4gICAgd2F0Y2hPcHRpb25zXG4gICk7XG4gIHJldHVybiB7IGNvdW50OiBjdXJyZW50LCBzdG9wIH07XG59XG5cbmZ1bmN0aW9uIHdhdGNoRGVib3VuY2VkKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZGVib3VuY2UgPSAwLFxuICAgIG1heFdhaXQgPSB2b2lkIDAsXG4gICAgLi4ud2F0Y2hPcHRpb25zXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gd2F0Y2hXaXRoRmlsdGVyKFxuICAgIHNvdXJjZSxcbiAgICBjYixcbiAgICB7XG4gICAgICAuLi53YXRjaE9wdGlvbnMsXG4gICAgICBldmVudEZpbHRlcjogZGVib3VuY2VGaWx0ZXIoZGVib3VuY2UsIHsgbWF4V2FpdCB9KVxuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hEZWVwKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHZ1ZURlbWkud2F0Y2goXG4gICAgc291cmNlLFxuICAgIGNiLFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZWVwOiB0cnVlXG4gICAgfVxuICApO1xufVxuXG5mdW5jdGlvbiB3YXRjaElnbm9yYWJsZShzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGV2ZW50RmlsdGVyID0gYnlwYXNzRmlsdGVyLFxuICAgIC4uLndhdGNoT3B0aW9uc1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmlsdGVyZWRDYiA9IGNyZWF0ZUZpbHRlcldyYXBwZXIoXG4gICAgZXZlbnRGaWx0ZXIsXG4gICAgY2JcbiAgKTtcbiAgbGV0IGlnbm9yZVVwZGF0ZXM7XG4gIGxldCBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzO1xuICBsZXQgc3RvcDtcbiAgaWYgKHdhdGNoT3B0aW9ucy5mbHVzaCA9PT0gXCJzeW5jXCIpIHtcbiAgICBjb25zdCBpZ25vcmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcyA9ICgpID0+IHtcbiAgICB9O1xuICAgIGlnbm9yZVVwZGF0ZXMgPSAodXBkYXRlcikgPT4ge1xuICAgICAgaWdub3JlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZXIoKTtcbiAgICAgIGlnbm9yZS52YWx1ZSA9IGZhbHNlO1xuICAgIH07XG4gICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goXG4gICAgICBzb3VyY2UsXG4gICAgICAoLi4uYXJncykgPT4ge1xuICAgICAgICBpZiAoIWlnbm9yZS52YWx1ZSlcbiAgICAgICAgICBmaWx0ZXJlZENiKC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIHdhdGNoT3B0aW9uc1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXMgPSBbXTtcbiAgICBjb25zdCBpZ25vcmVDb3VudGVyID0gdnVlRGVtaS5yZWYoMCk7XG4gICAgY29uc3Qgc3luY0NvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzID0gKCkgPT4ge1xuICAgICAgaWdub3JlQ291bnRlci52YWx1ZSA9IHN5bmNDb3VudGVyLnZhbHVlO1xuICAgIH07XG4gICAgZGlzcG9zYWJsZXMucHVzaChcbiAgICAgIHZ1ZURlbWkud2F0Y2goXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHN5bmNDb3VudGVyLnZhbHVlKys7XG4gICAgICAgIH0sXG4gICAgICAgIHsgLi4ud2F0Y2hPcHRpb25zLCBmbHVzaDogXCJzeW5jXCIgfVxuICAgICAgKVxuICAgICk7XG4gICAgaWdub3JlVXBkYXRlcyA9ICh1cGRhdGVyKSA9PiB7XG4gICAgICBjb25zdCBzeW5jQ291bnRlclByZXYgPSBzeW5jQ291bnRlci52YWx1ZTtcbiAgICAgIHVwZGF0ZXIoKTtcbiAgICAgIGlnbm9yZUNvdW50ZXIudmFsdWUgKz0gc3luY0NvdW50ZXIudmFsdWUgLSBzeW5jQ291bnRlclByZXY7XG4gICAgfTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKFxuICAgICAgdnVlRGVtaS53YXRjaChcbiAgICAgICAgc291cmNlLFxuICAgICAgICAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZSA9IGlnbm9yZUNvdW50ZXIudmFsdWUgPiAwICYmIGlnbm9yZUNvdW50ZXIudmFsdWUgPT09IHN5bmNDb3VudGVyLnZhbHVlO1xuICAgICAgICAgIGlnbm9yZUNvdW50ZXIudmFsdWUgPSAwO1xuICAgICAgICAgIHN5bmNDb3VudGVyLnZhbHVlID0gMDtcbiAgICAgICAgICBpZiAoaWdub3JlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGZpbHRlcmVkQ2IoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoT3B0aW9uc1xuICAgICAgKVxuICAgICk7XG4gICAgc3RvcCA9ICgpID0+IHtcbiAgICAgIGRpc3Bvc2FibGVzLmZvckVhY2goKGZuKSA9PiBmbigpKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IHN0b3AsIGlnbm9yZVVwZGF0ZXMsIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMgfTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hJbW1lZGlhdGUoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChcbiAgICBzb3VyY2UsXG4gICAgY2IsXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hPbmNlKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RvcCA9IHZ1ZURlbWkud2F0Y2goc291cmNlLCAoLi4uYXJncykgPT4ge1xuICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gc3RvcCgpKTtcbiAgICByZXR1cm4gY2IoLi4uYXJncyk7XG4gIH0sIG9wdGlvbnMpO1xuICByZXR1cm4gc3RvcDtcbn1cblxuZnVuY3Rpb24gd2F0Y2hUaHJvdHRsZWQoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aHJvdHRsZSA9IDAsXG4gICAgdHJhaWxpbmcgPSB0cnVlLFxuICAgIGxlYWRpbmcgPSB0cnVlLFxuICAgIC4uLndhdGNoT3B0aW9uc1xuICB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIHdhdGNoV2l0aEZpbHRlcihcbiAgICBzb3VyY2UsXG4gICAgY2IsXG4gICAge1xuICAgICAgLi4ud2F0Y2hPcHRpb25zLFxuICAgICAgZXZlbnRGaWx0ZXI6IHRocm90dGxlRmlsdGVyKHRocm90dGxlLCB0cmFpbGluZywgbGVhZGluZylcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHdhdGNoVHJpZ2dlcmFibGUoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjbGVhbnVwRm47XG4gIGZ1bmN0aW9uIG9uRWZmZWN0KCkge1xuICAgIGlmICghY2xlYW51cEZuKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGZuID0gY2xlYW51cEZuO1xuICAgIGNsZWFudXBGbiA9IHZvaWQgMDtcbiAgICBmbigpO1xuICB9XG4gIGZ1bmN0aW9uIG9uQ2xlYW51cChjYWxsYmFjaykge1xuICAgIGNsZWFudXBGbiA9IGNhbGxiYWNrO1xuICB9XG4gIGNvbnN0IF9jYiA9ICh2YWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBvbkVmZmVjdCgpO1xuICAgIHJldHVybiBjYih2YWx1ZSwgb2xkVmFsdWUsIG9uQ2xlYW51cCk7XG4gIH07XG4gIGNvbnN0IHJlcyA9IHdhdGNoSWdub3JhYmxlKHNvdXJjZSwgX2NiLCBvcHRpb25zKTtcbiAgY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSByZXM7XG4gIGNvbnN0IHRyaWdnZXIgPSAoKSA9PiB7XG4gICAgbGV0IHJlczI7XG4gICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgICByZXMyID0gX2NiKGdldFdhdGNoU291cmNlcyhzb3VyY2UpLCBnZXRPbGRWYWx1ZShzb3VyY2UpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzMjtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZXMsXG4gICAgdHJpZ2dlclxuICB9O1xufVxuZnVuY3Rpb24gZ2V0V2F0Y2hTb3VyY2VzKHNvdXJjZXMpIHtcbiAgaWYgKHZ1ZURlbWkuaXNSZWFjdGl2ZShzb3VyY2VzKSlcbiAgICByZXR1cm4gc291cmNlcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlcykpXG4gICAgcmV0dXJuIHNvdXJjZXMubWFwKChpdGVtKSA9PiB0b1ZhbHVlKGl0ZW0pKTtcbiAgcmV0dXJuIHRvVmFsdWUoc291cmNlcyk7XG59XG5mdW5jdGlvbiBnZXRPbGRWYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc291cmNlKSA/IHNvdXJjZS5tYXAoKCkgPT4gdm9pZCAwKSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gd2hlbmV2ZXIoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICBjb25zdCBzdG9wID0gdnVlRGVtaS53YXRjaChcbiAgICBzb3VyY2UsXG4gICAgKHYsIG92LCBvbkludmFsaWRhdGUpID0+IHtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm9uY2UpXG4gICAgICAgICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiBzdG9wKCkpO1xuICAgICAgICBjYih2LCBvdiwgb25JbnZhbGlkYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBvbmNlOiBmYWxzZVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHN0b3A7XG59XG5cbmV4cG9ydHMuYXNzZXJ0ID0gYXNzZXJ0O1xuZXhwb3J0cy5hdXRvUmVzZXRSZWYgPSByZWZBdXRvUmVzZXQ7XG5leHBvcnRzLmJ5cGFzc0ZpbHRlciA9IGJ5cGFzc0ZpbHRlcjtcbmV4cG9ydHMuY2FtZWxpemUgPSBjYW1lbGl6ZTtcbmV4cG9ydHMuY2xhbXAgPSBjbGFtcDtcbmV4cG9ydHMuY29tcHV0ZWRFYWdlciA9IGNvbXB1dGVkRWFnZXI7XG5leHBvcnRzLmNvbXB1dGVkV2l0aENvbnRyb2wgPSBjb21wdXRlZFdpdGhDb250cm9sO1xuZXhwb3J0cy5jb250YWluc1Byb3AgPSBjb250YWluc1Byb3A7XG5leHBvcnRzLmNvbnRyb2xsZWRDb21wdXRlZCA9IGNvbXB1dGVkV2l0aENvbnRyb2w7XG5leHBvcnRzLmNvbnRyb2xsZWRSZWYgPSBjb250cm9sbGVkUmVmO1xuZXhwb3J0cy5jcmVhdGVFdmVudEhvb2sgPSBjcmVhdGVFdmVudEhvb2s7XG5leHBvcnRzLmNyZWF0ZUZpbHRlcldyYXBwZXIgPSBjcmVhdGVGaWx0ZXJXcmFwcGVyO1xuZXhwb3J0cy5jcmVhdGVHbG9iYWxTdGF0ZSA9IGNyZWF0ZUdsb2JhbFN0YXRlO1xuZXhwb3J0cy5jcmVhdGVJbmplY3Rpb25TdGF0ZSA9IGNyZWF0ZUluamVjdGlvblN0YXRlO1xuZXhwb3J0cy5jcmVhdGVSZWFjdGl2ZUZuID0gcmVhY3RpZnk7XG5leHBvcnRzLmNyZWF0ZVNoYXJlZENvbXBvc2FibGUgPSBjcmVhdGVTaGFyZWRDb21wb3NhYmxlO1xuZXhwb3J0cy5jcmVhdGVTaW5nbGV0b25Qcm9taXNlID0gY3JlYXRlU2luZ2xldG9uUHJvbWlzZTtcbmV4cG9ydHMuZGVib3VuY2VGaWx0ZXIgPSBkZWJvdW5jZUZpbHRlcjtcbmV4cG9ydHMuZGVib3VuY2VkUmVmID0gcmVmRGVib3VuY2VkO1xuZXhwb3J0cy5kZWJvdW5jZWRXYXRjaCA9IHdhdGNoRGVib3VuY2VkO1xuZXhwb3J0cy5kaXJlY3RpdmVIb29rcyA9IGRpcmVjdGl2ZUhvb2tzO1xuZXhwb3J0cy5lYWdlckNvbXB1dGVkID0gY29tcHV0ZWRFYWdlcjtcbmV4cG9ydHMuZXh0ZW5kUmVmID0gZXh0ZW5kUmVmO1xuZXhwb3J0cy5mb3JtYXREYXRlID0gZm9ybWF0RGF0ZTtcbmV4cG9ydHMuZ2V0ID0gZ2V0O1xuZXhwb3J0cy5nZXRMaWZlQ3ljbGVUYXJnZXQgPSBnZXRMaWZlQ3ljbGVUYXJnZXQ7XG5leHBvcnRzLmhhc093biA9IGhhc093bjtcbmV4cG9ydHMuaHlwaGVuYXRlID0gaHlwaGVuYXRlO1xuZXhwb3J0cy5pZGVudGl0eSA9IGlkZW50aXR5O1xuZXhwb3J0cy5pZ25vcmFibGVXYXRjaCA9IHdhdGNoSWdub3JhYmxlO1xuZXhwb3J0cy5pbmNyZWFzZVdpdGhVbml0ID0gaW5jcmVhc2VXaXRoVW5pdDtcbmV4cG9ydHMuaW5qZWN0TG9jYWwgPSBpbmplY3RMb2NhbDtcbmV4cG9ydHMuaW52b2tlID0gaW52b2tlO1xuZXhwb3J0cy5pc0NsaWVudCA9IGlzQ2xpZW50O1xuZXhwb3J0cy5pc0RlZiA9IGlzRGVmO1xuZXhwb3J0cy5pc0RlZmluZWQgPSBpc0RlZmluZWQ7XG5leHBvcnRzLmlzSU9TID0gaXNJT1M7XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5leHBvcnRzLmlzV29ya2VyID0gaXNXb3JrZXI7XG5leHBvcnRzLm1ha2VEZXN0cnVjdHVyYWJsZSA9IG1ha2VEZXN0cnVjdHVyYWJsZTtcbmV4cG9ydHMubm9vcCA9IG5vb3A7XG5leHBvcnRzLm5vcm1hbGl6ZURhdGUgPSBub3JtYWxpemVEYXRlO1xuZXhwb3J0cy5ub3ROdWxsaXNoID0gbm90TnVsbGlzaDtcbmV4cG9ydHMubm93ID0gbm93O1xuZXhwb3J0cy5vYmplY3RFbnRyaWVzID0gb2JqZWN0RW50cmllcztcbmV4cG9ydHMub2JqZWN0T21pdCA9IG9iamVjdE9taXQ7XG5leHBvcnRzLm9iamVjdFBpY2sgPSBvYmplY3RQaWNrO1xuZXhwb3J0cy5wYXVzYWJsZUZpbHRlciA9IHBhdXNhYmxlRmlsdGVyO1xuZXhwb3J0cy5wYXVzYWJsZVdhdGNoID0gd2F0Y2hQYXVzYWJsZTtcbmV4cG9ydHMucHJvbWlzZVRpbWVvdXQgPSBwcm9taXNlVGltZW91dDtcbmV4cG9ydHMucHJvdmlkZUxvY2FsID0gcHJvdmlkZUxvY2FsO1xuZXhwb3J0cy5yYW5kID0gcmFuZDtcbmV4cG9ydHMucmVhY3RpZnkgPSByZWFjdGlmeTtcbmV4cG9ydHMucmVhY3RpZnlPYmplY3QgPSByZWFjdGlmeU9iamVjdDtcbmV4cG9ydHMucmVhY3RpdmVDb21wdXRlZCA9IHJlYWN0aXZlQ29tcHV0ZWQ7XG5leHBvcnRzLnJlYWN0aXZlT21pdCA9IHJlYWN0aXZlT21pdDtcbmV4cG9ydHMucmVhY3RpdmVQaWNrID0gcmVhY3RpdmVQaWNrO1xuZXhwb3J0cy5yZWZBdXRvUmVzZXQgPSByZWZBdXRvUmVzZXQ7XG5leHBvcnRzLnJlZkRlYm91bmNlZCA9IHJlZkRlYm91bmNlZDtcbmV4cG9ydHMucmVmRGVmYXVsdCA9IHJlZkRlZmF1bHQ7XG5leHBvcnRzLnJlZlRocm90dGxlZCA9IHJlZlRocm90dGxlZDtcbmV4cG9ydHMucmVmV2l0aENvbnRyb2wgPSByZWZXaXRoQ29udHJvbDtcbmV4cG9ydHMucmVzb2x2ZVJlZiA9IHJlc29sdmVSZWY7XG5leHBvcnRzLnJlc29sdmVVbnJlZiA9IHJlc29sdmVVbnJlZjtcbmV4cG9ydHMuc2V0ID0gc2V0O1xuZXhwb3J0cy5zeW5jUmVmID0gc3luY1JlZjtcbmV4cG9ydHMuc3luY1JlZnMgPSBzeW5jUmVmcztcbmV4cG9ydHMudGhyb3R0bGVGaWx0ZXIgPSB0aHJvdHRsZUZpbHRlcjtcbmV4cG9ydHMudGhyb3R0bGVkUmVmID0gcmVmVGhyb3R0bGVkO1xuZXhwb3J0cy50aHJvdHRsZWRXYXRjaCA9IHdhdGNoVGhyb3R0bGVkO1xuZXhwb3J0cy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XG5leHBvcnRzLnRvUmVhY3RpdmUgPSB0b1JlYWN0aXZlO1xuZXhwb3J0cy50b1JlZiA9IHRvUmVmO1xuZXhwb3J0cy50b1JlZnMgPSB0b1JlZnM7XG5leHBvcnRzLnRvVmFsdWUgPSB0b1ZhbHVlO1xuZXhwb3J0cy50cnlPbkJlZm9yZU1vdW50ID0gdHJ5T25CZWZvcmVNb3VudDtcbmV4cG9ydHMudHJ5T25CZWZvcmVVbm1vdW50ID0gdHJ5T25CZWZvcmVVbm1vdW50O1xuZXhwb3J0cy50cnlPbk1vdW50ZWQgPSB0cnlPbk1vdW50ZWQ7XG5leHBvcnRzLnRyeU9uU2NvcGVEaXNwb3NlID0gdHJ5T25TY29wZURpc3Bvc2U7XG5leHBvcnRzLnRyeU9uVW5tb3VudGVkID0gdHJ5T25Vbm1vdW50ZWQ7XG5leHBvcnRzLnVudGlsID0gdW50aWw7XG5leHBvcnRzLnVzZUFycmF5RGlmZmVyZW5jZSA9IHVzZUFycmF5RGlmZmVyZW5jZTtcbmV4cG9ydHMudXNlQXJyYXlFdmVyeSA9IHVzZUFycmF5RXZlcnk7XG5leHBvcnRzLnVzZUFycmF5RmlsdGVyID0gdXNlQXJyYXlGaWx0ZXI7XG5leHBvcnRzLnVzZUFycmF5RmluZCA9IHVzZUFycmF5RmluZDtcbmV4cG9ydHMudXNlQXJyYXlGaW5kSW5kZXggPSB1c2VBcnJheUZpbmRJbmRleDtcbmV4cG9ydHMudXNlQXJyYXlGaW5kTGFzdCA9IHVzZUFycmF5RmluZExhc3Q7XG5leHBvcnRzLnVzZUFycmF5SW5jbHVkZXMgPSB1c2VBcnJheUluY2x1ZGVzO1xuZXhwb3J0cy51c2VBcnJheUpvaW4gPSB1c2VBcnJheUpvaW47XG5leHBvcnRzLnVzZUFycmF5TWFwID0gdXNlQXJyYXlNYXA7XG5leHBvcnRzLnVzZUFycmF5UmVkdWNlID0gdXNlQXJyYXlSZWR1Y2U7XG5leHBvcnRzLnVzZUFycmF5U29tZSA9IHVzZUFycmF5U29tZTtcbmV4cG9ydHMudXNlQXJyYXlVbmlxdWUgPSB1c2VBcnJheVVuaXF1ZTtcbmV4cG9ydHMudXNlQ291bnRlciA9IHVzZUNvdW50ZXI7XG5leHBvcnRzLnVzZURhdGVGb3JtYXQgPSB1c2VEYXRlRm9ybWF0O1xuZXhwb3J0cy51c2VEZWJvdW5jZSA9IHJlZkRlYm91bmNlZDtcbmV4cG9ydHMudXNlRGVib3VuY2VGbiA9IHVzZURlYm91bmNlRm47XG5leHBvcnRzLnVzZUludGVydmFsID0gdXNlSW50ZXJ2YWw7XG5leHBvcnRzLnVzZUludGVydmFsRm4gPSB1c2VJbnRlcnZhbEZuO1xuZXhwb3J0cy51c2VMYXN0Q2hhbmdlZCA9IHVzZUxhc3RDaGFuZ2VkO1xuZXhwb3J0cy51c2VUaHJvdHRsZSA9IHJlZlRocm90dGxlZDtcbmV4cG9ydHMudXNlVGhyb3R0bGVGbiA9IHVzZVRocm90dGxlRm47XG5leHBvcnRzLnVzZVRpbWVvdXQgPSB1c2VUaW1lb3V0O1xuZXhwb3J0cy51c2VUaW1lb3V0Rm4gPSB1c2VUaW1lb3V0Rm47XG5leHBvcnRzLnVzZVRvTnVtYmVyID0gdXNlVG9OdW1iZXI7XG5leHBvcnRzLnVzZVRvU3RyaW5nID0gdXNlVG9TdHJpbmc7XG5leHBvcnRzLnVzZVRvZ2dsZSA9IHVzZVRvZ2dsZTtcbmV4cG9ydHMud2F0Y2hBcnJheSA9IHdhdGNoQXJyYXk7XG5leHBvcnRzLndhdGNoQXRNb3N0ID0gd2F0Y2hBdE1vc3Q7XG5leHBvcnRzLndhdGNoRGVib3VuY2VkID0gd2F0Y2hEZWJvdW5jZWQ7XG5leHBvcnRzLndhdGNoRGVlcCA9IHdhdGNoRGVlcDtcbmV4cG9ydHMud2F0Y2hJZ25vcmFibGUgPSB3YXRjaElnbm9yYWJsZTtcbmV4cG9ydHMud2F0Y2hJbW1lZGlhdGUgPSB3YXRjaEltbWVkaWF0ZTtcbmV4cG9ydHMud2F0Y2hPbmNlID0gd2F0Y2hPbmNlO1xuZXhwb3J0cy53YXRjaFBhdXNhYmxlID0gd2F0Y2hQYXVzYWJsZTtcbmV4cG9ydHMud2F0Y2hUaHJvdHRsZWQgPSB3YXRjaFRocm90dGxlZDtcbmV4cG9ydHMud2F0Y2hUcmlnZ2VyYWJsZSA9IHdhdGNoVHJpZ2dlcmFibGU7XG5leHBvcnRzLndhdGNoV2l0aEZpbHRlciA9IHdhdGNoV2l0aEZpbHRlcjtcbmV4cG9ydHMud2hlbmV2ZXIgPSB3aGVuZXZlcjtcbiIsInZhciBWdWUgPSByZXF1aXJlKCd2dWUnKVxuXG5PYmplY3Qua2V5cyhWdWUpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IFZ1ZVtrZXldXG59KVxuXG5leHBvcnRzLnNldCA9IGZ1bmN0aW9uKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpXG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbClcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgdGFyZ2V0W2tleV0gPSB2YWxcbiAgcmV0dXJuIHZhbFxufVxuXG5leHBvcnRzLmRlbCA9IGZ1bmN0aW9uKHRhcmdldCwga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSlcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV1cbn1cblxuZXhwb3J0cy5WdWUgPSBWdWVcbmV4cG9ydHMuVnVlMiA9IHVuZGVmaW5lZFxuZXhwb3J0cy5pc1Z1ZTIgPSBmYWxzZVxuZXhwb3J0cy5pc1Z1ZTMgPSB0cnVlXG5leHBvcnRzLmluc3RhbGwgPSBmdW5jdGlvbigpe31cbiIsIi8vIEF4aW9zIHYxLjYuMCBDb3B5cmlnaHQgKGMpIDIwMjMgTWF0dCBaYWJyaXNraWUgYW5kIGNvbnRyaWJ1dG9yc1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG5jb25zdCB7dG9TdHJpbmd9ID0gT2JqZWN0LnByb3RvdHlwZTtcbmNvbnN0IHtnZXRQcm90b3R5cGVPZn0gPSBPYmplY3Q7XG5cbmNvbnN0IGtpbmRPZiA9IChjYWNoZSA9PiB0aGluZyA9PiB7XG4gICAgY29uc3Qgc3RyID0gdG9TdHJpbmcuY2FsbCh0aGluZyk7XG4gICAgcmV0dXJuIGNhY2hlW3N0cl0gfHwgKGNhY2hlW3N0cl0gPSBzdHIuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkpO1xufSkoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cbmNvbnN0IGtpbmRPZlRlc3QgPSAodHlwZSkgPT4ge1xuICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKHRoaW5nKSA9PiBraW5kT2YodGhpbmcpID09PSB0eXBlXG59O1xuXG5jb25zdCB0eXBlT2ZUZXN0ID0gdHlwZSA9PiB0aGluZyA9PiB0eXBlb2YgdGhpbmcgPT09IHR5cGU7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCB7aXNBcnJheX0gPSBBcnJheTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1VuZGVmaW5lZCA9IHR5cGVPZlRlc3QoJ3VuZGVmaW5lZCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIGlzRnVuY3Rpb24odmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0FycmF5QnVmZmVyID0ga2luZE9mVGVzdCgnQXJyYXlCdWZmZXInKTtcblxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIGxldCByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJpbmcgPSB0eXBlT2ZUZXN0KCdzdHJpbmcnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Z1bmN0aW9uID0gdHlwZU9mVGVzdCgnZnVuY3Rpb24nKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc051bWJlciA9IHR5cGVPZlRlc3QoJ251bWJlcicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc09iamVjdCA9ICh0aGluZykgPT4gdGhpbmcgIT09IG51bGwgJiYgdHlwZW9mIHRoaW5nID09PSAnb2JqZWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJvb2xlYW5cbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJvb2xlYW4sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jvb2xlYW4gPSB0aGluZyA9PiB0aGluZyA9PT0gdHJ1ZSB8fCB0aGluZyA9PT0gZmFsc2U7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiAocHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiYgIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsKSAmJiAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWwpO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRGF0ZSA9IGtpbmRPZlRlc3QoJ0RhdGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRmlsZSA9IGtpbmRPZlRlc3QoJ0ZpbGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQmxvYiA9IGtpbmRPZlRlc3QoJ0Jsb2InKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVMaXN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGVMaXN0ID0ga2luZE9mVGVzdCgnRmlsZUxpc3QnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1N0cmVhbSA9ICh2YWwpID0+IGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwucGlwZSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRm9ybURhdGEgPSAodGhpbmcpID0+IHtcbiAgbGV0IGtpbmQ7XG4gIHJldHVybiB0aGluZyAmJiAoXG4gICAgKHR5cGVvZiBGb3JtRGF0YSA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB8fCAoXG4gICAgICBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiYgKFxuICAgICAgICAoa2luZCA9IGtpbmRPZih0aGluZykpID09PSAnZm9ybWRhdGEnIHx8XG4gICAgICAgIC8vIGRldGVjdCBmb3JtLWRhdGEgaW5zdGFuY2VcbiAgICAgICAgKGtpbmQgPT09ICdvYmplY3QnICYmIGlzRnVuY3Rpb24odGhpbmcudG9TdHJpbmcpICYmIHRoaW5nLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IEZvcm1EYXRhXScpXG4gICAgICApXG4gICAgKVxuICApXG59O1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNVUkxTZWFyY2hQYXJhbXMgPSBraW5kT2ZUZXN0KCdVUkxTZWFyY2hQYXJhbXMnKTtcblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuY29uc3QgdHJpbSA9IChzdHIpID0+IHN0ci50cmltID9cbiAgc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywgJycpO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5cyA9IGZhbHNlXVxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuLCB7YWxsT3duS2V5cyA9IGZhbHNlfSA9IHt9KSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGk7XG4gIGxldCBsO1xuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yIChpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBjb25zdCBrZXlzID0gYWxsT3duS2V5cyA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikgOiBPYmplY3Qua2V5cyhvYmopO1xuICAgIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRLZXkob2JqLCBrZXkpIHtcbiAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICBsZXQgX2tleTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBfa2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoa2V5ID09PSBfa2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiBfa2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuY29uc3QgX2dsb2JhbCA9ICgoKSA9PiB7XG4gIC8qZXNsaW50IG5vLXVuZGVmOjAqL1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBnbG9iYWxUaGlzO1xuICByZXR1cm4gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogZ2xvYmFsKVxufSkoKTtcblxuY29uc3QgaXNDb250ZXh0RGVmaW5lZCA9IChjb250ZXh0KSA9PiAhaXNVbmRlZmluZWQoY29udGV4dCkgJiYgY29udGV4dCAhPT0gX2dsb2JhbDtcblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKlxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICBjb25zdCB7Y2FzZWxlc3N9ID0gaXNDb250ZXh0RGVmaW5lZCh0aGlzKSAmJiB0aGlzIHx8IHt9O1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsLCBrZXkpID0+IHtcbiAgICBjb25zdCB0YXJnZXRLZXkgPSBjYXNlbGVzcyAmJiBmaW5kS2V5KHJlc3VsdCwga2V5KSB8fCBrZXk7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W3RhcmdldEtleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZShyZXN1bHRbdGFyZ2V0S2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGFyZ3VtZW50c1tpXSAmJiBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFthbGxPd25LZXlzXVxuICogQHJldHVybnMge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5jb25zdCBleHRlbmQgPSAoYSwgYiwgdGhpc0FyZywge2FsbE93bktleXN9PSB7fSkgPT4ge1xuICBmb3JFYWNoKGIsICh2YWwsIGtleSkgPT4ge1xuICAgIGlmICh0aGlzQXJnICYmIGlzRnVuY3Rpb24odmFsKSkge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9LCB7YWxsT3duS2V5c30pO1xuICByZXR1cm4gYTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmNvbnN0IHN0cmlwQk9NID0gKGNvbnRlbnQpID0+IHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59O1xuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge29iamVjdH0gW2Rlc2NyaXB0b3JzXVxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBpbmhlcml0cyA9IChjb25zdHJ1Y3Rvciwgc3VwZXJDb25zdHJ1Y3RvciwgcHJvcHMsIGRlc2NyaXB0b3JzKSA9PiB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIGRlc2NyaXB0b3JzKTtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3RvciwgJ3N1cGVyJywge1xuICAgIHZhbHVlOiBzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICB9KTtcbiAgcHJvcHMgJiYgT2JqZWN0LmFzc2lnbihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3BzKTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZSBvYmplY3Qgd2l0aCBkZWVwIHByb3RvdHlwZSBjaGFpbiB0byBhIGZsYXQgb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlT2JqIHNvdXJjZSBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBbZGVzdE9ial1cbiAqIEBwYXJhbSB7RnVuY3Rpb258Qm9vbGVhbn0gW2ZpbHRlcl1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcm9wRmlsdGVyXVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmNvbnN0IHRvRmxhdE9iamVjdCA9IChzb3VyY2VPYmosIGRlc3RPYmosIGZpbHRlciwgcHJvcEZpbHRlcikgPT4ge1xuICBsZXQgcHJvcHM7XG4gIGxldCBpO1xuICBsZXQgcHJvcDtcbiAgY29uc3QgbWVyZ2VkID0ge307XG5cbiAgZGVzdE9iaiA9IGRlc3RPYmogfHwge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBpZiAoc291cmNlT2JqID09IG51bGwpIHJldHVybiBkZXN0T2JqO1xuXG4gIGRvIHtcbiAgICBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZU9iaik7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgaWYgKCghcHJvcEZpbHRlciB8fCBwcm9wRmlsdGVyKHByb3AsIHNvdXJjZU9iaiwgZGVzdE9iaikpICYmICFtZXJnZWRbcHJvcF0pIHtcbiAgICAgICAgZGVzdE9ialtwcm9wXSA9IHNvdXJjZU9ialtwcm9wXTtcbiAgICAgICAgbWVyZ2VkW3Byb3BdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlT2JqID0gZmlsdGVyICE9PSBmYWxzZSAmJiBnZXRQcm90b3R5cGVPZihzb3VyY2VPYmopO1xuICB9IHdoaWxlIChzb3VyY2VPYmogJiYgKCFmaWx0ZXIgfHwgZmlsdGVyKHNvdXJjZU9iaiwgZGVzdE9iaikpICYmIHNvdXJjZU9iaiAhPT0gT2JqZWN0LnByb3RvdHlwZSk7XG5cbiAgcmV0dXJuIGRlc3RPYmo7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtTdHJpbmd9IHNlYXJjaFN0cmluZ1xuICogQHBhcmFtIHtOdW1iZXJ9IFtwb3NpdGlvbj0gMF1cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgZW5kc1dpdGggPSAoc3RyLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKSA9PiB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiA+IHN0ci5sZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHN0ci5sZW5ndGg7XG4gIH1cbiAgcG9zaXRpb24gLT0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgbGFzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBwb3NpdGlvbik7XG4gIHJldHVybiBsYXN0SW5kZXggIT09IC0xICYmIGxhc3RJbmRleCA9PT0gcG9zaXRpb247XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyBuZXcgYXJyYXkgZnJvbSBhcnJheSBsaWtlIG9iamVjdCBvciBudWxsIGlmIGZhaWxlZFxuICpcbiAqIEBwYXJhbSB7Kn0gW3RoaW5nXVxuICpcbiAqIEByZXR1cm5zIHs/QXJyYXl9XG4gKi9cbmNvbnN0IHRvQXJyYXkgPSAodGhpbmcpID0+IHtcbiAgaWYgKCF0aGluZykgcmV0dXJuIG51bGw7XG4gIGlmIChpc0FycmF5KHRoaW5nKSkgcmV0dXJuIHRoaW5nO1xuICBsZXQgaSA9IHRoaW5nLmxlbmd0aDtcbiAgaWYgKCFpc051bWJlcihpKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGFyciA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBhcnJbaV0gPSB0aGluZ1tpXTtcbiAgfVxuICByZXR1cm4gYXJyO1xufTtcblxuLyoqXG4gKiBDaGVja2luZyBpZiB0aGUgVWludDhBcnJheSBleGlzdHMgYW5kIGlmIGl0IGRvZXMsIGl0IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGVcbiAqIHRoaW5nIHBhc3NlZCBpbiBpcyBhbiBpbnN0YW5jZSBvZiBVaW50OEFycmF5XG4gKlxuICogQHBhcmFtIHtUeXBlZEFycmF5fVxuICpcbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbmNvbnN0IGlzVHlwZWRBcnJheSA9IChUeXBlZEFycmF5ID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIHRoaW5nID0+IHtcbiAgICByZXR1cm4gVHlwZWRBcnJheSAmJiB0aGluZyBpbnN0YW5jZW9mIFR5cGVkQXJyYXk7XG4gIH07XG59KSh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2V0UHJvdG90eXBlT2YoVWludDhBcnJheSkpO1xuXG4vKipcbiAqIEZvciBlYWNoIGVudHJ5IGluIHRoZSBvYmplY3QsIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGtleSBhbmQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3Q8YW55LCBhbnk+fSBvYmogLSBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggZW50cnkuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmNvbnN0IGZvckVhY2hFbnRyeSA9IChvYmosIGZuKSA9PiB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IG9iaiAmJiBvYmpbU3ltYm9sLml0ZXJhdG9yXTtcblxuICBjb25zdCBpdGVyYXRvciA9IGdlbmVyYXRvci5jYWxsKG9iaik7XG5cbiAgbGV0IHJlc3VsdDtcblxuICB3aGlsZSAoKHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKSkgJiYgIXJlc3VsdC5kb25lKSB7XG4gICAgY29uc3QgcGFpciA9IHJlc3VsdC52YWx1ZTtcbiAgICBmbi5jYWxsKG9iaiwgcGFpclswXSwgcGFpclsxXSk7XG4gIH1cbn07XG5cbi8qKlxuICogSXQgdGFrZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGEgc3RyaW5nLCBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnRXhwIC0gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBhZ2FpbnN0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gc2VhcmNoLlxuICpcbiAqIEByZXR1cm5zIHtBcnJheTxib29sZWFuPn1cbiAqL1xuY29uc3QgbWF0Y2hBbGwgPSAocmVnRXhwLCBzdHIpID0+IHtcbiAgbGV0IG1hdGNoZXM7XG4gIGNvbnN0IGFyciA9IFtdO1xuXG4gIHdoaWxlICgobWF0Y2hlcyA9IHJlZ0V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XG4gICAgYXJyLnB1c2gobWF0Y2hlcyk7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufTtcblxuLyogQ2hlY2tpbmcgaWYgdGhlIGtpbmRPZlRlc3QgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGFuIEhUTUxGb3JtRWxlbWVudC4gKi9cbmNvbnN0IGlzSFRNTEZvcm0gPSBraW5kT2ZUZXN0KCdIVE1MRm9ybUVsZW1lbnQnKTtcblxuY29uc3QgdG9DYW1lbENhc2UgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxcbiAgICBmdW5jdGlvbiByZXBsYWNlcihtLCBwMSwgcDIpIHtcbiAgICAgIHJldHVybiBwMS50b1VwcGVyQ2FzZSgpICsgcDI7XG4gICAgfVxuICApO1xufTtcblxuLyogQ3JlYXRpbmcgYSBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2sgaWYgYW4gb2JqZWN0IGhhcyBhIHByb3BlcnR5LiAqL1xuY29uc3QgaGFzT3duUHJvcGVydHkgPSAoKHtoYXNPd25Qcm9wZXJ0eX0pID0+IChvYmosIHByb3ApID0+IGhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkoT2JqZWN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1JlZ0V4cCA9IGtpbmRPZlRlc3QoJ1JlZ0V4cCcpO1xuXG5jb25zdCByZWR1Y2VEZXNjcmlwdG9ycyA9IChvYmosIHJlZHVjZXIpID0+IHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopO1xuICBjb25zdCByZWR1Y2VkRGVzY3JpcHRvcnMgPSB7fTtcblxuICBmb3JFYWNoKGRlc2NyaXB0b3JzLCAoZGVzY3JpcHRvciwgbmFtZSkgPT4ge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKChyZXQgPSByZWR1Y2VyKGRlc2NyaXB0b3IsIG5hbWUsIG9iaikpICE9PSBmYWxzZSkge1xuICAgICAgcmVkdWNlZERlc2NyaXB0b3JzW25hbWVdID0gcmV0IHx8IGRlc2NyaXB0b3I7XG4gICAgfVxuICB9KTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvYmosIHJlZHVjZWREZXNjcmlwdG9ycyk7XG59O1xuXG4vKipcbiAqIE1ha2VzIGFsbCBtZXRob2RzIHJlYWQtb25seVxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICovXG5cbmNvbnN0IGZyZWV6ZU1ldGhvZHMgPSAob2JqKSA9PiB7XG4gIHJlZHVjZURlc2NyaXB0b3JzKG9iaiwgKGRlc2NyaXB0b3IsIG5hbWUpID0+IHtcbiAgICAvLyBza2lwIHJlc3RyaWN0ZWQgcHJvcHMgaW4gc3RyaWN0IG1vZGVcbiAgICBpZiAoaXNGdW5jdGlvbihvYmopICYmIFsnYXJndW1lbnRzJywgJ2NhbGxlcicsICdjYWxsZWUnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gb2JqW25hbWVdO1xuXG4gICAgaWYgKCFpc0Z1bmN0aW9uKHZhbHVlKSkgcmV0dXJuO1xuXG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoJ3dyaXRhYmxlJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjcmlwdG9yLnNldCkge1xuICAgICAgZGVzY3JpcHRvci5zZXQgPSAoKSA9PiB7XG4gICAgICAgIHRocm93IEVycm9yKCdDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCBcXCcnICsgbmFtZSArICdcXCcnKTtcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHRvT2JqZWN0U2V0ID0gKGFycmF5T3JTdHJpbmcsIGRlbGltaXRlcikgPT4ge1xuICBjb25zdCBvYmogPSB7fTtcblxuICBjb25zdCBkZWZpbmUgPSAoYXJyKSA9PiB7XG4gICAgYXJyLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgb2JqW3ZhbHVlXSA9IHRydWU7XG4gICAgfSk7XG4gIH07XG5cbiAgaXNBcnJheShhcnJheU9yU3RyaW5nKSA/IGRlZmluZShhcnJheU9yU3RyaW5nKSA6IGRlZmluZShTdHJpbmcoYXJyYXlPclN0cmluZykuc3BsaXQoZGVsaW1pdGVyKSk7XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuY29uc3QgdG9GaW5pdGVOdW1iZXIgPSAodmFsdWUsIGRlZmF1bHRWYWx1ZSkgPT4ge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IEFMUEhBID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcblxuY29uc3QgRElHSVQgPSAnMDEyMzQ1Njc4OSc7XG5cbmNvbnN0IEFMUEhBQkVUID0ge1xuICBESUdJVCxcbiAgQUxQSEEsXG4gIEFMUEhBX0RJR0lUOiBBTFBIQSArIEFMUEhBLnRvVXBwZXJDYXNlKCkgKyBESUdJVFxufTtcblxuY29uc3QgZ2VuZXJhdGVTdHJpbmcgPSAoc2l6ZSA9IDE2LCBhbHBoYWJldCA9IEFMUEhBQkVULkFMUEhBX0RJR0lUKSA9PiB7XG4gIGxldCBzdHIgPSAnJztcbiAgY29uc3Qge2xlbmd0aH0gPSBhbHBoYWJldDtcbiAgd2hpbGUgKHNpemUtLSkge1xuICAgIHN0ciArPSBhbHBoYWJldFtNYXRoLnJhbmRvbSgpICogbGVuZ3RofDBdO1xuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn07XG5cbi8qKlxuICogSWYgdGhlIHRoaW5nIGlzIGEgRm9ybURhdGEgb2JqZWN0LCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaW5nIC0gVGhlIHRoaW5nIHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NwZWNDb21wbGlhbnRGb3JtKHRoaW5nKSB7XG4gIHJldHVybiAhISh0aGluZyAmJiBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiYgdGhpbmdbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0Zvcm1EYXRhJyAmJiB0aGluZ1tTeW1ib2wuaXRlcmF0b3JdKTtcbn1cblxuY29uc3QgdG9KU09OT2JqZWN0ID0gKG9iaikgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBBcnJheSgxMCk7XG5cbiAgY29uc3QgdmlzaXQgPSAoc291cmNlLCBpKSA9PiB7XG5cbiAgICBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgaWYgKHN0YWNrLmluZGV4T2Yoc291cmNlKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYoISgndG9KU09OJyBpbiBzb3VyY2UpKSB7XG4gICAgICAgIHN0YWNrW2ldID0gc291cmNlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBpc0FycmF5KHNvdXJjZSkgPyBbXSA6IHt9O1xuXG4gICAgICAgIGZvckVhY2goc291cmNlLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlZHVjZWRWYWx1ZSA9IHZpc2l0KHZhbHVlLCBpICsgMSk7XG4gICAgICAgICAgIWlzVW5kZWZpbmVkKHJlZHVjZWRWYWx1ZSkgJiYgKHRhcmdldFtrZXldID0gcmVkdWNlZFZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhY2tbaV0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlO1xuICB9O1xuXG4gIHJldHVybiB2aXNpdChvYmosIDApO1xufTtcblxuY29uc3QgaXNBc3luY0ZuID0ga2luZE9mVGVzdCgnQXN5bmNGdW5jdGlvbicpO1xuXG5jb25zdCBpc1RoZW5hYmxlID0gKHRoaW5nKSA9PlxuICB0aGluZyAmJiAoaXNPYmplY3QodGhpbmcpIHx8IGlzRnVuY3Rpb24odGhpbmcpKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRoZW4pICYmIGlzRnVuY3Rpb24odGhpbmcuY2F0Y2gpO1xuXG52YXIgdXRpbHMgPSB7XG4gIGlzQXJyYXksXG4gIGlzQXJyYXlCdWZmZXIsXG4gIGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmcsXG4gIGlzTnVtYmVyLFxuICBpc0Jvb2xlYW4sXG4gIGlzT2JqZWN0LFxuICBpc1BsYWluT2JqZWN0LFxuICBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlLFxuICBpc0ZpbGUsXG4gIGlzQmxvYixcbiAgaXNSZWdFeHAsXG4gIGlzRnVuY3Rpb24sXG4gIGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNUeXBlZEFycmF5LFxuICBpc0ZpbGVMaXN0LFxuICBmb3JFYWNoLFxuICBtZXJnZSxcbiAgZXh0ZW5kLFxuICB0cmltLFxuICBzdHJpcEJPTSxcbiAgaW5oZXJpdHMsXG4gIHRvRmxhdE9iamVjdCxcbiAga2luZE9mLFxuICBraW5kT2ZUZXN0LFxuICBlbmRzV2l0aCxcbiAgdG9BcnJheSxcbiAgZm9yRWFjaEVudHJ5LFxuICBtYXRjaEFsbCxcbiAgaXNIVE1MRm9ybSxcbiAgaGFzT3duUHJvcGVydHksXG4gIGhhc093blByb3A6IGhhc093blByb3BlcnR5LCAvLyBhbiBhbGlhcyB0byBhdm9pZCBFU0xpbnQgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIGRldGVjdGlvblxuICByZWR1Y2VEZXNjcmlwdG9ycyxcbiAgZnJlZXplTWV0aG9kcyxcbiAgdG9PYmplY3RTZXQsXG4gIHRvQ2FtZWxDYXNlLFxuICBub29wLFxuICB0b0Zpbml0ZU51bWJlcixcbiAgZmluZEtleSxcbiAgZ2xvYmFsOiBfZ2xvYmFsLFxuICBpc0NvbnRleHREZWZpbmVkLFxuICBBTFBIQUJFVCxcbiAgZ2VuZXJhdGVTdHJpbmcsXG4gIGlzU3BlY0NvbXBsaWFudEZvcm0sXG4gIHRvSlNPTk9iamVjdCxcbiAgaXNBc3luY0ZuLFxuICBpc1RoZW5hYmxlXG59O1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW2NvbmZpZ10gVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gQXhpb3NFcnJvcihtZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIEVycm9yLmNhbGwodGhpcyk7XG5cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2s7XG4gIH1cblxuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLm5hbWUgPSAnQXhpb3NFcnJvcic7XG4gIGNvZGUgJiYgKHRoaXMuY29kZSA9IGNvZGUpO1xuICBjb25maWcgJiYgKHRoaXMuY29uZmlnID0gY29uZmlnKTtcbiAgcmVxdWVzdCAmJiAodGhpcy5yZXF1ZXN0ID0gcmVxdWVzdCk7XG4gIHJlc3BvbnNlICYmICh0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2UpO1xufVxuXG51dGlscy5pbmhlcml0cyhBeGlvc0Vycm9yLCBFcnJvciwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB1dGlscy50b0pTT05PYmplY3QodGhpcy5jb25maWcpLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXG4gICAgfTtcbiAgfVxufSk7XG5cbmNvbnN0IHByb3RvdHlwZSQxID0gQXhpb3NFcnJvci5wcm90b3R5cGU7XG5jb25zdCBkZXNjcmlwdG9ycyA9IHt9O1xuXG5bXG4gICdFUlJfQkFEX09QVElPTl9WQUxVRScsXG4gICdFUlJfQkFEX09QVElPTicsXG4gICdFQ09OTkFCT1JURUQnLFxuICAnRVRJTUVET1VUJyxcbiAgJ0VSUl9ORVRXT1JLJyxcbiAgJ0VSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMnLFxuICAnRVJSX0RFUFJFQ0FURUQnLFxuICAnRVJSX0JBRF9SRVNQT05TRScsXG4gICdFUlJfQkFEX1JFUVVFU1QnLFxuICAnRVJSX0NBTkNFTEVEJyxcbiAgJ0VSUl9OT1RfU1VQUE9SVCcsXG4gICdFUlJfSU5WQUxJRF9VUkwnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXS5mb3JFYWNoKGNvZGUgPT4ge1xuICBkZXNjcmlwdG9yc1tjb2RlXSA9IHt2YWx1ZTogY29kZX07XG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQXhpb3NFcnJvciwgZGVzY3JpcHRvcnMpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSQxLCAnaXNBeGlvc0Vycm9yJywge3ZhbHVlOiB0cnVlfSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5BeGlvc0Vycm9yLmZyb20gPSAoZXJyb3IsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UsIGN1c3RvbVByb3BzKSA9PiB7XG4gIGNvbnN0IGF4aW9zRXJyb3IgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSQxKTtcblxuICB1dGlscy50b0ZsYXRPYmplY3QoZXJyb3IsIGF4aW9zRXJyb3IsIGZ1bmN0aW9uIGZpbHRlcihvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBFcnJvci5wcm90b3R5cGU7XG4gIH0sIHByb3AgPT4ge1xuICAgIHJldHVybiBwcm9wICE9PSAnaXNBeGlvc0Vycm9yJztcbiAgfSk7XG5cbiAgQXhpb3NFcnJvci5jYWxsKGF4aW9zRXJyb3IsIGVycm9yLm1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpO1xuXG4gIGF4aW9zRXJyb3IuY2F1c2UgPSBlcnJvcjtcblxuICBheGlvc0Vycm9yLm5hbWUgPSBlcnJvci5uYW1lO1xuXG4gIGN1c3RvbVByb3BzICYmIE9iamVjdC5hc3NpZ24oYXhpb3NFcnJvciwgY3VzdG9tUHJvcHMpO1xuXG4gIHJldHVybiBheGlvc0Vycm9yO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHN0cmljdFxudmFyIGh0dHBBZGFwdGVyID0gbnVsbDtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB0aGluZyBpcyBhIGFycmF5IG9yIGpzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhpbmcgLSBUaGUgb2JqZWN0IG9yIGFycmF5IHRvIGJlIHZpc2l0ZWQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmlzaXRhYmxlKHRoaW5nKSB7XG4gIHJldHVybiB1dGlscy5pc1BsYWluT2JqZWN0KHRoaW5nKSB8fCB1dGlscy5pc0FycmF5KHRoaW5nKTtcbn1cblxuLyoqXG4gKiBJdCByZW1vdmVzIHRoZSBicmFja2V0cyBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgcGFyYW1ldGVyLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBrZXkgd2l0aG91dCB0aGUgYnJhY2tldHMuXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUJyYWNrZXRzKGtleSkge1xuICByZXR1cm4gdXRpbHMuZW5kc1dpdGgoa2V5LCAnW10nKSA/IGtleS5zbGljZSgwLCAtMikgOiBrZXk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXRoLCBhIGtleSwgYW5kIGEgYm9vbGVhbiwgYW5kIHJldHVybnMgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBjdXJyZW50IG9iamVjdCBiZWluZyBpdGVyYXRlZCBvdmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGRvdHMgLSBJZiB0cnVlLCB0aGUga2V5IHdpbGwgYmUgcmVuZGVyZWQgd2l0aCBkb3RzIGluc3RlYWQgb2YgYnJhY2tldHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHBhdGggdG8gdGhlIGN1cnJlbnQga2V5LlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXkocGF0aCwga2V5LCBkb3RzKSB7XG4gIGlmICghcGF0aCkgcmV0dXJuIGtleTtcbiAgcmV0dXJuIHBhdGguY29uY2F0KGtleSkubWFwKGZ1bmN0aW9uIGVhY2godG9rZW4sIGkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB0b2tlbiA9IHJlbW92ZUJyYWNrZXRzKHRva2VuKTtcbiAgICByZXR1cm4gIWRvdHMgJiYgaSA/ICdbJyArIHRva2VuICsgJ10nIDogdG9rZW47XG4gIH0pLmpvaW4oZG90cyA/ICcuJyA6ICcnKTtcbn1cblxuLyoqXG4gKiBJZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgYW5kIG5vbmUgb2YgaXRzIGVsZW1lbnRzIGFyZSB2aXNpdGFibGUsIHRoZW4gaXQncyBhIGZsYXQgYXJyYXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNGbGF0QXJyYXkoYXJyKSB7XG4gIHJldHVybiB1dGlscy5pc0FycmF5KGFycikgJiYgIWFyci5zb21lKGlzVmlzaXRhYmxlKTtcbn1cblxuY29uc3QgcHJlZGljYXRlcyA9IHV0aWxzLnRvRmxhdE9iamVjdCh1dGlscywge30sIG51bGwsIGZ1bmN0aW9uIGZpbHRlcihwcm9wKSB7XG4gIHJldHVybiAvXmlzW0EtWl0vLnRlc3QocHJvcCk7XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgZGF0YSBvYmplY3QgdG8gRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0gez9PYmplY3R9IFtmb3JtRGF0YV1cbiAqIEBwYXJhbSB7P09iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy52aXNpdG9yXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5tZXRhVG9rZW5zID0gdHJ1ZV1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuZG90cyA9IGZhbHNlXVxuICogQHBhcmFtIHs/Qm9vbGVhbn0gW29wdGlvbnMuaW5kZXhlcyA9IGZhbHNlXVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKiovXG5cbi8qKlxuICogSXQgY29udmVydHMgYW4gb2JqZWN0IGludG8gYSBGb3JtRGF0YSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gY29udmVydCB0byBmb3JtIGRhdGEuXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgLSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGFwcGVuZCB0by5cbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIHRvRm9ybURhdGEob2JqLCBmb3JtRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBmb3JtRGF0YSA9IGZvcm1EYXRhIHx8IG5ldyAoRm9ybURhdGEpKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9wdGlvbnMgPSB1dGlscy50b0ZsYXRPYmplY3Qob3B0aW9ucywge1xuICAgIG1ldGFUb2tlbnM6IHRydWUsXG4gICAgZG90czogZmFsc2UsXG4gICAgaW5kZXhlczogZmFsc2VcbiAgfSwgZmFsc2UsIGZ1bmN0aW9uIGRlZmluZWQob3B0aW9uLCBzb3VyY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgICByZXR1cm4gIXV0aWxzLmlzVW5kZWZpbmVkKHNvdXJjZVtvcHRpb25dKTtcbiAgfSk7XG5cbiAgY29uc3QgbWV0YVRva2VucyA9IG9wdGlvbnMubWV0YVRva2VucztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIGNvbnN0IHZpc2l0b3IgPSBvcHRpb25zLnZpc2l0b3IgfHwgZGVmYXVsdFZpc2l0b3I7XG4gIGNvbnN0IGRvdHMgPSBvcHRpb25zLmRvdHM7XG4gIGNvbnN0IGluZGV4ZXMgPSBvcHRpb25zLmluZGV4ZXM7XG4gIGNvbnN0IF9CbG9iID0gb3B0aW9ucy5CbG9iIHx8IHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyAmJiBCbG9iO1xuICBjb25zdCB1c2VCbG9iID0gX0Jsb2IgJiYgdXRpbHMuaXNTcGVjQ29tcGxpYW50Rm9ybShmb3JtRGF0YSk7XG5cbiAgaWYgKCF1dGlscy5pc0Z1bmN0aW9uKHZpc2l0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICcnO1xuXG4gICAgaWYgKHV0aWxzLmlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICghdXNlQmxvYiAmJiB1dGlscy5pc0Jsb2IodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHwgdXRpbHMuaXNUeXBlZEFycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHVzZUJsb2IgJiYgdHlwZW9mIEJsb2IgPT09ICdmdW5jdGlvbicgPyBuZXcgQmxvYihbdmFsdWVdKSA6IEJ1ZmZlci5mcm9tKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCB2aXNpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0ga2V5XG4gICAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAgICogQHRoaXMge0Zvcm1EYXRhfVxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgdG8gdmlzaXQgdGhlIGVhY2ggcHJvcCBvZiB0aGUgdmFsdWUgcmVjdXJzaXZlbHlcbiAgICovXG4gIGZ1bmN0aW9uIGRlZmF1bHRWaXNpdG9yKHZhbHVlLCBrZXksIHBhdGgpIHtcbiAgICBsZXQgYXJyID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUgJiYgIXBhdGggJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ3t9JykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IG1ldGFUb2tlbnMgPyBrZXkgOiBrZXkuc2xpY2UoMCwgLTIpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgaXNGbGF0QXJyYXkodmFsdWUpKSB8fFxuICAgICAgICAoKHV0aWxzLmlzRmlsZUxpc3QodmFsdWUpIHx8IHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykpICYmIChhcnIgPSB1dGlscy50b0FycmF5KHZhbHVlKSlcbiAgICAgICAgKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAga2V5ID0gcmVtb3ZlQnJhY2tldHMoa2V5KTtcblxuICAgICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiBlYWNoKGVsLCBpbmRleCkge1xuICAgICAgICAgICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgICAgIGluZGV4ZXMgPT09IHRydWUgPyByZW5kZXJLZXkoW2tleV0sIGluZGV4LCBkb3RzKSA6IChpbmRleGVzID09PSBudWxsID8ga2V5IDoga2V5ICsgJ1tdJyksXG4gICAgICAgICAgICBjb252ZXJ0VmFsdWUoZWwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNWaXNpdGFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQocmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cyksIGNvbnZlcnRWYWx1ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3RhY2sgPSBbXTtcblxuICBjb25zdCBleHBvc2VkSGVscGVycyA9IE9iamVjdC5hc3NpZ24ocHJlZGljYXRlcywge1xuICAgIGRlZmF1bHRWaXNpdG9yLFxuICAgIGNvbnZlcnRWYWx1ZSxcbiAgICBpc1Zpc2l0YWJsZVxuICB9KTtcblxuICBmdW5jdGlvbiBidWlsZCh2YWx1ZSwgcGF0aCkge1xuICAgIGlmICh1dGlscy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybjtcblxuICAgIGlmIChzdGFjay5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IEVycm9yKCdDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gJyArIHBhdGguam9pbignLicpKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcblxuICAgIHV0aWxzLmZvckVhY2godmFsdWUsIGZ1bmN0aW9uIGVhY2goZWwsIGtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gISh1dGlscy5pc1VuZGVmaW5lZChlbCkgfHwgZWwgPT09IG51bGwpICYmIHZpc2l0b3IuY2FsbChcbiAgICAgICAgZm9ybURhdGEsIGVsLCB1dGlscy5pc1N0cmluZyhrZXkpID8ga2V5LnRyaW0oKSA6IGtleSwgcGF0aCwgZXhwb3NlZEhlbHBlcnNcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgYnVpbGQoZWwsIHBhdGggPyBwYXRoLmNvbmNhdChrZXkpIDogW2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhY2sucG9wKCk7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRhIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICBidWlsZChvYmopO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuLyoqXG4gKiBJdCBlbmNvZGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBhbGwgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgaW4gdGhlIHVucmVzZXJ2ZWQgc2V0IHdpdGhcbiAqIHRoZWlyIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIGVuY29kZS5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZSQxKHN0cikge1xuICBjb25zdCBjaGFyTWFwID0ge1xuICAgICchJzogJyUyMScsXG4gICAgXCInXCI6ICclMjcnLFxuICAgICcoJzogJyUyOCcsXG4gICAgJyknOiAnJTI5JyxcbiAgICAnfic6ICclN0UnLFxuICAgICclMjAnOiAnKycsXG4gICAgJyUwMCc6ICdcXHgwMCdcbiAgfTtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLCBmdW5jdGlvbiByZXBsYWNlcihtYXRjaCkge1xuICAgIHJldHVybiBjaGFyTWFwW21hdGNoXTtcbiAgfSk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXJhbXMgb2JqZWN0IGFuZCBjb252ZXJ0cyBpdCB0byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gYmUgY29udmVydGVkIHRvIGEgRm9ybURhdGEgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byB0aGUgQXhpb3MgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykge1xuICB0aGlzLl9wYWlycyA9IFtdO1xuXG4gIHBhcmFtcyAmJiB0b0Zvcm1EYXRhKHBhcmFtcywgdGhpcywgb3B0aW9ucyk7XG59XG5cbmNvbnN0IHByb3RvdHlwZSA9IEF4aW9zVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcblxucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICB0aGlzLl9wYWlycy5wdXNoKFtuYW1lLCB2YWx1ZV0pO1xufTtcblxucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoZW5jb2Rlcikge1xuICBjb25zdCBfZW5jb2RlID0gZW5jb2RlciA/IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGVuY29kZXIuY2FsbCh0aGlzLCB2YWx1ZSwgZW5jb2RlJDEpO1xuICB9IDogZW5jb2RlJDE7XG5cbiAgcmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbiBlYWNoKHBhaXIpIHtcbiAgICByZXR1cm4gX2VuY29kZShwYWlyWzBdKSArICc9JyArIF9lbmNvZGUocGFpclsxXSk7XG4gIH0sICcnKS5qb2luKCcmJyk7XG59O1xuXG4vKipcbiAqIEl0IHJlcGxhY2VzIGFsbCBpbnN0YW5jZXMgb2YgdGhlIGNoYXJhY3RlcnMgYDpgLCBgJGAsIGAsYCwgYCtgLCBgW2AsIGFuZCBgXWAgd2l0aCB0aGVpclxuICogVVJJIGVuY29kZWQgY291bnRlcnBhcnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCBUaGUgdmFsdWUgdG8gYmUgZW5jb2RlZC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEBwYXJhbSB7P29iamVjdH0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBvcHRpb25zKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICBpZiAoIXBhcmFtcykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cbiAgXG4gIGNvbnN0IF9lbmNvZGUgPSBvcHRpb25zICYmIG9wdGlvbnMuZW5jb2RlIHx8IGVuY29kZTtcblxuICBjb25zdCBzZXJpYWxpemVGbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJpYWxpemU7XG5cbiAgbGV0IHNlcmlhbGl6ZWRQYXJhbXM7XG5cbiAgaWYgKHNlcmlhbGl6ZUZuKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHNlcmlhbGl6ZUZuKHBhcmFtcywgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykgP1xuICAgICAgcGFyYW1zLnRvU3RyaW5nKCkgOlxuICAgICAgbmV3IEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykudG9TdHJpbmcoX2VuY29kZSk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIGNvbnN0IGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZihcIiNcIik7XG5cbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn1cblxuY2xhc3MgSW50ZXJjZXB0b3JNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICAgKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gICAqL1xuICB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICAgIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgICBmdWxmaWxsZWQsXG4gICAgICByZWplY3RlZCxcbiAgICAgIHN5bmNocm9ub3VzOiBvcHRpb25zID8gb3B0aW9ucy5zeW5jaHJvbm91cyA6IGZhbHNlLFxuICAgICAgcnVuV2hlbjogb3B0aW9ucyA/IG9wdGlvbnMucnVuV2hlbiA6IG51bGxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gICAqXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIGludGVyY2VwdG9yIHdhcyByZW1vdmVkLCBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgZWplY3QoaWQpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGludGVyY2VwdG9ycyBmcm9tIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gICAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZvckVhY2goZm4pIHtcbiAgICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICAgIGZuKGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbnZhciBJbnRlcmNlcHRvck1hbmFnZXIkMSA9IEludGVyY2VwdG9yTWFuYWdlcjtcblxudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0ge1xuICBzaWxlbnRKU09OUGFyc2luZzogdHJ1ZSxcbiAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zJDEgPSB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSAndW5kZWZpbmVkJyA/IFVSTFNlYXJjaFBhcmFtcyA6IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuXG52YXIgRm9ybURhdGEkMSA9IHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgPyBGb3JtRGF0YSA6IG51bGw7XG5cbnZhciBCbG9iJDEgPSB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgPyBCbG9iIDogbnVsbDtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGlzU3RhbmRhcmRCcm93c2VyRW52ID0gKCgpID0+IHtcbiAgbGV0IHByb2R1Y3Q7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgKHByb2R1Y3QgPSBuYXZpZ2F0b3IucHJvZHVjdCkgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICBwcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgIHByb2R1Y3QgPT09ICdOUycpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xufSkoKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgd2ViV29ya2VyIGVudmlyb25tZW50XG4gKlxuICogQWx0aG91Z2ggdGhlIGBpc1N0YW5kYXJkQnJvd3NlckVudmAgbWV0aG9kIGluZGljYXRlcyB0aGF0XG4gKiBgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXJgLCB0aGUgV2ViV29ya2VyIHdpbGwgc3RpbGwgYmVcbiAqIGZpbHRlcmVkIG91dCBkdWUgdG8gaXRzIGp1ZGdtZW50IHN0YW5kYXJkXG4gKiBgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ2AuXG4gKiBUaGlzIGxlYWRzIHRvIGEgcHJvYmxlbSB3aGVuIGF4aW9zIHBvc3QgYEZvcm1EYXRhYCBpbiB3ZWJXb3JrZXJcbiAqL1xuIGNvbnN0IGlzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52ID0gKCgpID0+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlICYmXG4gICAgdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cyA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufSkoKTtcblxuXG52YXIgcGxhdGZvcm0gPSB7XG4gIGlzQnJvd3NlcjogdHJ1ZSxcbiAgY2xhc3Nlczoge1xuICAgIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zJDEsXG4gICAgRm9ybURhdGE6IEZvcm1EYXRhJDEsXG4gICAgQmxvYjogQmxvYiQxXG4gIH0sXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBpc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudixcbiAgcHJvdG9jb2xzOiBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZScsICdibG9iJywgJ3VybCcsICdkYXRhJ11cbn07XG5cbmZ1bmN0aW9uIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gdG9Gb3JtRGF0YShkYXRhLCBuZXcgcGxhdGZvcm0uY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMoKSwgT2JqZWN0LmFzc2lnbih7XG4gICAgdmlzaXRvcjogZnVuY3Rpb24odmFsdWUsIGtleSwgcGF0aCwgaGVscGVycykge1xuICAgICAgaWYgKHBsYXRmb3JtLmlzTm9kZSAmJiB1dGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoZWxwZXJzLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9LCBvcHRpb25zKSk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBzdHJpbmcgbGlrZSBgZm9vW3hdW3ldW3pdYCBhbmQgcmV0dXJucyBhbiBhcnJheSBsaWtlIGBbJ2ZvbycsICd4JywgJ3knLCAneiddXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUHJvcFBhdGgobmFtZSkge1xuICAvLyBmb29beF1beV1bel1cbiAgLy8gZm9vLngueS56XG4gIC8vIGZvby14LXktelxuICAvLyBmb28geCB5IHpcbiAgcmV0dXJuIHV0aWxzLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZywgbmFtZSkubWFwKG1hdGNoID0+IHtcbiAgICByZXR1cm4gbWF0Y2hbMF0gPT09ICdbXScgPyAnJyA6IG1hdGNoWzFdIHx8IG1hdGNoWzBdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFycmF5IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IGFyciAtIFRoZSBhcnJheSB0byBjb252ZXJ0IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFuZCB2YWx1ZXMgYXMgdGhlIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheVRvT2JqZWN0KGFycikge1xuICBjb25zdCBvYmogPSB7fTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFycik7XG4gIGxldCBpO1xuICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgbGV0IGtleTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICBvYmpba2V5XSA9IGFycltrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBGb3JtRGF0YSBvYmplY3QgYW5kIHJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtRGF0YSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGNvbnZlcnQgdG8gSlNPTi5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0PHN0cmluZywgYW55PiB8IG51bGx9IFRoZSBjb252ZXJ0ZWQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBmb3JtRGF0YVRvSlNPTihmb3JtRGF0YSkge1xuICBmdW5jdGlvbiBidWlsZFBhdGgocGF0aCwgdmFsdWUsIHRhcmdldCwgaW5kZXgpIHtcbiAgICBsZXQgbmFtZSA9IHBhdGhbaW5kZXgrK107XG4gICAgY29uc3QgaXNOdW1lcmljS2V5ID0gTnVtYmVyLmlzRmluaXRlKCtuYW1lKTtcbiAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA+PSBwYXRoLmxlbmd0aDtcbiAgICBuYW1lID0gIW5hbWUgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXQpID8gdGFyZ2V0Lmxlbmd0aCA6IG5hbWU7XG5cbiAgICBpZiAoaXNMYXN0KSB7XG4gICAgICBpZiAodXRpbHMuaGFzT3duUHJvcCh0YXJnZXQsIG5hbWUpKSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IFt0YXJnZXRbbmFtZV0sIHZhbHVlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzTnVtZXJpY0tleTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldFtuYW1lXSB8fCAhdXRpbHMuaXNPYmplY3QodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXRbbmFtZV0sIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICB0YXJnZXRbbmFtZV0gPSBhcnJheVRvT2JqZWN0KHRhcmdldFtuYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gIH1cblxuICBpZiAodXRpbHMuaXNGb3JtRGF0YShmb3JtRGF0YSkgJiYgdXRpbHMuaXNGdW5jdGlvbihmb3JtRGF0YS5lbnRyaWVzKSkge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaEVudHJ5KGZvcm1EYXRhLCAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgIGJ1aWxkUGF0aChwYXJzZVByb3BQYXRoKG5hbWUpLCB2YWx1ZSwgb2JqLCAwKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHN0cmluZywgdHJpZXMgdG8gcGFyc2UgaXQsIGFuZCBpZiBpdCBmYWlscywgaXQgcmV0dXJucyB0aGUgc3RyaW5naWZpZWQgdmVyc2lvblxuICogb2YgdGhlIGlucHV0XG4gKlxuICogQHBhcmFtIHthbnl9IHJhd1ZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHN0cmluZ2lmaWVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyc2VyIC0gQSBmdW5jdGlvbiB0aGF0IHBhcnNlcyBhIHN0cmluZyBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbmNvZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmdpZmllZCB2ZXJzaW9uIG9mIHRoZSByYXdWYWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5U2FmZWx5KHJhd1ZhbHVlLCBwYXJzZXIsIGVuY29kZXIpIHtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICAocGFyc2VyIHx8IEpTT04ucGFyc2UpKHJhd1ZhbHVlKTtcbiAgICAgIHJldHVybiB1dGlscy50cmltKHJhd1ZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lICE9PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChlbmNvZGVyIHx8IEpTT04uc3RyaW5naWZ5KShyYXdWYWx1ZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXG5cbiAgYWRhcHRlcjogWyd4aHInLCAnaHR0cCddLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0Q29udGVudFR5cGUoKSB8fCAnJztcbiAgICBjb25zdCBoYXNKU09OQ29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgPiAtMTtcbiAgICBjb25zdCBpc09iamVjdFBheWxvYWQgPSB1dGlscy5pc09iamVjdChkYXRhKTtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQgJiYgdXRpbHMuaXNIVE1MRm9ybShkYXRhKSkge1xuICAgICAgZGF0YSA9IG5ldyBGb3JtRGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0Zvcm1EYXRhID0gdXRpbHMuaXNGb3JtRGF0YShkYXRhKTtcblxuICAgIGlmIChpc0Zvcm1EYXRhKSB7XG4gICAgICBpZiAoIWhhc0pTT05Db250ZW50VHlwZSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNKU09OQ29udGVudFR5cGUgPyBKU09OLnN0cmluZ2lmeShmb3JtRGF0YVRvSlNPTihkYXRhKSkgOiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnLCBmYWxzZSk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCBpc0ZpbGVMaXN0O1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgICAgaWYgKGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0ZpbGVMaXN0ID0gdXRpbHMuaXNGaWxlTGlzdChkYXRhKSkgfHwgY29udGVudFR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID4gLTEpIHtcbiAgICAgICAgY29uc3QgX0Zvcm1EYXRhID0gdGhpcy5lbnYgJiYgdGhpcy5lbnYuRm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIHRvRm9ybURhdGEoXG4gICAgICAgICAgaXNGaWxlTGlzdCA/IHsnZmlsZXNbXSc6IGRhdGF9IDogZGF0YSxcbiAgICAgICAgICBfRm9ybURhdGEgJiYgbmV3IF9Gb3JtRGF0YSgpLFxuICAgICAgICAgIHRoaXMuZm9ybVNlcmlhbGl6ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGhhc0pTT05Db250ZW50VHlwZSApIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL2pzb24nLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgY29uc3QgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIGNvbnN0IEpTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKGRhdGEgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgKChmb3JjZWRKU09OUGFyc2luZyAmJiAhdGhpcy5yZXNwb25zZVR5cGUpIHx8IEpTT05SZXF1ZXN0ZWQpKSB7XG4gICAgICBjb25zdCBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgICBjb25zdCBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiBKU09OUmVxdWVzdGVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgQXhpb3NFcnJvci5mcm9tKGUsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRSwgdGhpcywgbnVsbCwgdGhpcy5yZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxuXG4gIGVudjoge1xuICAgIEZvcm1EYXRhOiBwbGF0Zm9ybS5jbGFzc2VzLkZvcm1EYXRhLFxuICAgIEJsb2I6IHBsYXRmb3JtLmNsYXNzZXMuQmxvYlxuICB9LFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCddLCAobWV0aG9kKSA9PiB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnZhciBkZWZhdWx0cyQxID0gZGVmYXVsdHM7XG5cbi8vIFJhd0F4aW9zSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbmNvbnN0IGlnbm9yZUR1cGxpY2F0ZU9mID0gdXRpbHMudG9PYmplY3RTZXQoW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl0pO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcmF3SGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKlxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xudmFyIHBhcnNlSGVhZGVycyA9IHJhd0hlYWRlcnMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSB7fTtcbiAgbGV0IGtleTtcbiAgbGV0IHZhbDtcbiAgbGV0IGk7XG5cbiAgcmF3SGVhZGVycyAmJiByYXdIZWFkZXJzLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IGxpbmUuc3Vic3RyaW5nKGkgKyAxKS50cmltKCk7XG5cbiAgICBpZiAoIWtleSB8fCAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2Zba2V5XSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSkge1xuICAgICAgICBwYXJzZWRba2V5XS5wdXNoKHZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IFt2YWxdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbmNvbnN0ICRpbnRlcm5hbHMgPSBTeW1ib2woJ2ludGVybmFscycpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVIZWFkZXIoaGVhZGVyKSB7XG4gIHJldHVybiBoZWFkZXIgJiYgU3RyaW5nKGhlYWRlcikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gZmFsc2UgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB1dGlscy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChub3JtYWxpemVWYWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRva2VucyhzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3QgdG9rZW5zUkUgPSAvKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nO1xuICBsZXQgbWF0Y2g7XG5cbiAgd2hpbGUgKChtYXRjaCA9IHRva2Vuc1JFLmV4ZWMoc3RyKSkpIHtcbiAgICB0b2tlbnNbbWF0Y2hbMV1dID0gbWF0Y2hbMl07XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5jb25zdCBpc1ZhbGlkSGVhZGVyTmFtZSA9IChzdHIpID0+IC9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3Qoc3RyLnRyaW0oKSk7XG5cbmZ1bmN0aW9uIG1hdGNoSGVhZGVyVmFsdWUoY29udGV4dCwgdmFsdWUsIGhlYWRlciwgZmlsdGVyLCBpc0hlYWRlck5hbWVGaWx0ZXIpIHtcbiAgaWYgKHV0aWxzLmlzRnVuY3Rpb24oZmlsdGVyKSkge1xuICAgIHJldHVybiBmaWx0ZXIuY2FsbCh0aGlzLCB2YWx1ZSwgaGVhZGVyKTtcbiAgfVxuXG4gIGlmIChpc0hlYWRlck5hbWVGaWx0ZXIpIHtcbiAgICB2YWx1ZSA9IGhlYWRlcjtcbiAgfVxuXG4gIGlmICghdXRpbHMuaXNTdHJpbmcodmFsdWUpKSByZXR1cm47XG5cbiAgaWYgKHV0aWxzLmlzU3RyaW5nKGZpbHRlcikpIHtcbiAgICByZXR1cm4gdmFsdWUuaW5kZXhPZihmaWx0ZXIpICE9PSAtMTtcbiAgfVxuXG4gIGlmICh1dGlscy5pc1JlZ0V4cChmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIGZpbHRlci50ZXN0KHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRIZWFkZXIoaGVhZGVyKSB7XG4gIHJldHVybiBoZWFkZXIudHJpbSgpXG4gICAgLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLCAodywgY2hhciwgc3RyKSA9PiB7XG4gICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpICsgc3RyO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBidWlsZEFjY2Vzc29ycyhvYmosIGhlYWRlcikge1xuICBjb25zdCBhY2Nlc3Nvck5hbWUgPSB1dGlscy50b0NhbWVsQ2FzZSgnICcgKyBoZWFkZXIpO1xuXG4gIFsnZ2V0JywgJ3NldCcsICdoYXMnXS5mb3JFYWNoKG1ldGhvZE5hbWUgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG1ldGhvZE5hbWUgKyBhY2Nlc3Nvck5hbWUsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICAgIHJldHVybiB0aGlzW21ldGhvZE5hbWVdLmNhbGwodGhpcywgaGVhZGVyLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfSk7XG59XG5cbmNsYXNzIEF4aW9zSGVhZGVycyB7XG4gIGNvbnN0cnVjdG9yKGhlYWRlcnMpIHtcbiAgICBoZWFkZXJzICYmIHRoaXMuc2V0KGhlYWRlcnMpO1xuICB9XG5cbiAgc2V0KGhlYWRlciwgdmFsdWVPclJld3JpdGUsIHJld3JpdGUpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIHNldEhlYWRlcihfdmFsdWUsIF9oZWFkZXIsIF9yZXdyaXRlKSB7XG4gICAgICBjb25zdCBsSGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoIWxIZWFkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIGxIZWFkZXIpO1xuXG4gICAgICBpZigha2V5IHx8IHNlbGZba2V5XSA9PT0gdW5kZWZpbmVkIHx8IF9yZXdyaXRlID09PSB0cnVlIHx8IChfcmV3cml0ZSA9PT0gdW5kZWZpbmVkICYmIHNlbGZba2V5XSAhPT0gZmFsc2UpKSB7XG4gICAgICAgIHNlbGZba2V5IHx8IF9oZWFkZXJdID0gbm9ybWFsaXplVmFsdWUoX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXRIZWFkZXJzID0gKGhlYWRlcnMsIF9yZXdyaXRlKSA9PlxuICAgICAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCAoX3ZhbHVlLCBfaGVhZGVyKSA9PiBzZXRIZWFkZXIoX3ZhbHVlLCBfaGVhZGVyLCBfcmV3cml0ZSkpO1xuXG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QoaGVhZGVyKSB8fCBoZWFkZXIgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKSB7XG4gICAgICBzZXRIZWFkZXJzKGhlYWRlciwgdmFsdWVPclJld3JpdGUpO1xuICAgIH0gZWxzZSBpZih1dGlscy5pc1N0cmluZyhoZWFkZXIpICYmIChoZWFkZXIgPSBoZWFkZXIudHJpbSgpKSAmJiAhaXNWYWxpZEhlYWRlck5hbWUoaGVhZGVyKSkge1xuICAgICAgc2V0SGVhZGVycyhwYXJzZUhlYWRlcnMoaGVhZGVyKSwgdmFsdWVPclJld3JpdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXIgIT0gbnVsbCAmJiBzZXRIZWFkZXIodmFsdWVPclJld3JpdGUsIGhlYWRlciwgcmV3cml0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQoaGVhZGVyLCBwYXJzZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXNba2V5XTtcblxuICAgICAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZXIgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VUb2tlbnModmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuY2FsbCh0aGlzLCB2YWx1ZSwga2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc1JlZ0V4cChwYXJzZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5leGVjKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzKGhlYWRlciwgbWF0Y2hlcikge1xuICAgIGhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpO1xuXG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleSh0aGlzLCBoZWFkZXIpO1xuXG4gICAgICByZXR1cm4gISEoa2V5ICYmIHRoaXNba2V5XSAhPT0gdW5kZWZpbmVkICYmICghbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZShoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gZGVsZXRlSGVhZGVyKF9oZWFkZXIpIHtcbiAgICAgIF9oZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmIChfaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgX2hlYWRlcik7XG5cbiAgICAgICAgaWYgKGtleSAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZShzZWxmLCBzZWxmW2tleV0sIGtleSwgbWF0Y2hlcikpKSB7XG4gICAgICAgICAgZGVsZXRlIHNlbGZba2V5XTtcblxuICAgICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXkoaGVhZGVyKSkge1xuICAgICAgaGVhZGVyLmZvckVhY2goZGVsZXRlSGVhZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlSGVhZGVyKGhlYWRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBjbGVhcihtYXRjaGVyKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuICAgIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZighbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyLCB0cnVlKSkge1xuICAgICAgICBkZWxldGUgdGhpc1trZXldO1xuICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIG5vcm1hbGl6ZShmb3JtYXQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBoZWFkZXJzID0ge307XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KGhlYWRlcnMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgc2VsZltrZXldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmb3JtYXQgPyBmb3JtYXRIZWFkZXIoaGVhZGVyKSA6IFN0cmluZyhoZWFkZXIpLnRyaW0oKTtcblxuICAgICAgaWYgKG5vcm1hbGl6ZWQgIT09IGhlYWRlcikge1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgfVxuXG4gICAgICBzZWxmW25vcm1hbGl6ZWRdID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuXG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWRdID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29uY2F0KC4uLnRhcmdldHMpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywgLi4udGFyZ2V0cyk7XG4gIH1cblxuICB0b0pTT04oYXNTdHJpbmdzKSB7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHV0aWxzLmZvckVhY2godGhpcywgKHZhbHVlLCBoZWFkZXIpID0+IHtcbiAgICAgIHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09IGZhbHNlICYmIChvYmpbaGVhZGVyXSA9IGFzU3RyaW5ncyAmJiB1dGlscy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJywgJykgOiB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtoZWFkZXIsIHZhbHVlXSkgPT4gaGVhZGVyICsgJzogJyArIHZhbHVlKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0F4aW9zSGVhZGVycyc7XG4gIH1cblxuICBzdGF0aWMgZnJvbSh0aGluZykge1xuICAgIHJldHVybiB0aGluZyBpbnN0YW5jZW9mIHRoaXMgPyB0aGluZyA6IG5ldyB0aGlzKHRoaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25jYXQoZmlyc3QsIC4uLnRhcmdldHMpIHtcbiAgICBjb25zdCBjb21wdXRlZCA9IG5ldyB0aGlzKGZpcnN0KTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiBjb21wdXRlZC5zZXQodGFyZ2V0KSk7XG5cbiAgICByZXR1cm4gY29tcHV0ZWQ7XG4gIH1cblxuICBzdGF0aWMgYWNjZXNzb3IoaGVhZGVyKSB7XG4gICAgY29uc3QgaW50ZXJuYWxzID0gdGhpc1skaW50ZXJuYWxzXSA9ICh0aGlzWyRpbnRlcm5hbHNdID0ge1xuICAgICAgYWNjZXNzb3JzOiB7fVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWNjZXNzb3JzID0gaW50ZXJuYWxzLmFjY2Vzc29ycztcbiAgICBjb25zdCBwcm90b3R5cGUgPSB0aGlzLnByb3RvdHlwZTtcblxuICAgIGZ1bmN0aW9uIGRlZmluZUFjY2Vzc29yKF9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghYWNjZXNzb3JzW2xIZWFkZXJdKSB7XG4gICAgICAgIGJ1aWxkQWNjZXNzb3JzKHByb3RvdHlwZSwgX2hlYWRlcik7XG4gICAgICAgIGFjY2Vzc29yc1tsSGVhZGVyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXRpbHMuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyLmZvckVhY2goZGVmaW5lQWNjZXNzb3IpIDogZGVmaW5lQWNjZXNzb3IoaGVhZGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbkF4aW9zSGVhZGVycy5hY2Nlc3NvcihbJ0NvbnRlbnQtVHlwZScsICdDb250ZW50LUxlbmd0aCcsICdBY2NlcHQnLCAnQWNjZXB0LUVuY29kaW5nJywgJ1VzZXItQWdlbnQnLCAnQXV0aG9yaXphdGlvbiddKTtcblxuLy8gcmVzZXJ2ZWQgbmFtZXMgaG90Zml4XG51dGlscy5yZWR1Y2VEZXNjcmlwdG9ycyhBeGlvc0hlYWRlcnMucHJvdG90eXBlLCAoe3ZhbHVlfSwga2V5KSA9PiB7XG4gIGxldCBtYXBwZWQgPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTsgLy8gbWFwIGBzZXRgID0+IGBTZXRgXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICBzZXQoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHRoaXNbbWFwcGVkXSA9IGhlYWRlclZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnV0aWxzLmZyZWV6ZU1ldGhvZHMoQXhpb3NIZWFkZXJzKTtcblxudmFyIEF4aW9zSGVhZGVycyQxID0gQXhpb3NIZWFkZXJzO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcGFyYW0gez9PYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZm5zLCByZXNwb25zZSkge1xuICBjb25zdCBjb25maWcgPSB0aGlzIHx8IGRlZmF1bHRzJDE7XG4gIGNvbnN0IGNvbnRleHQgPSByZXNwb25zZSB8fCBjb25maWc7XG4gIGNvbnN0IGhlYWRlcnMgPSBBeGlvc0hlYWRlcnMkMS5mcm9tKGNvbnRleHQuaGVhZGVycyk7XG4gIGxldCBkYXRhID0gY29udGV4dC5kYXRhO1xuXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb25maWcsIGRhdGEsIGhlYWRlcnMubm9ybWFsaXplKCksIHJlc3BvbnNlID8gcmVzcG9uc2Uuc3RhdHVzIDogdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaGVhZGVycy5ub3JtYWxpemUoKTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufVxuXG4vKipcbiAqIEEgYENhbmNlbGVkRXJyb3JgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdD19IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtPYmplY3Q9fSByZXF1ZXN0IFRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtDYW5jZWxlZEVycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsZWRFcnJvcihtZXNzYWdlLCBjb25maWcsIHJlcXVlc3QpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIEF4aW9zRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlID09IG51bGwgPyAnY2FuY2VsZWQnIDogbWVzc2FnZSwgQXhpb3NFcnJvci5FUlJfQ0FOQ0VMRUQsIGNvbmZpZywgcmVxdWVzdCk7XG4gIHRoaXMubmFtZSA9ICdDYW5jZWxlZEVycm9yJztcbn1cblxudXRpbHMuaW5oZXJpdHMoQ2FuY2VsZWRFcnJvciwgQXhpb3NFcnJvciwge1xuICBfX0NBTkNFTF9fOiB0cnVlXG59KTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgcmVzcG9uc2UuXG4gKi9cbmZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufVxuXG52YXIgY29va2llcyA9IHBsYXRmb3JtLmlzU3RhbmRhcmRCcm93c2VyRW52ID9cblxuLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgICAgY29uc3QgY29va2llID0gW107XG4gICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICB9LFxuXG4gICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgfSxcblxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgfVxuICAgIH07XG4gIH0pKCkgOlxuXG4vLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxuICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfSkoKTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIFVSTFxuICovXG5mdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufVxuXG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcGxhdGZvcm0uaXNTdGFuZGFyZEJyb3dzZXJFbnYgP1xuXG4vLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3Rcbi8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIGNvbnN0IG1zaWUgPSAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIGNvbnN0IHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxldCBvcmlnaW5VUkw7XG5cbiAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xuICAgICAgbGV0IGhyZWYgPSB1cmw7XG5cbiAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgfVxuXG4gICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcblxuICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcbiAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxuICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXG4gICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcbiAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgIH07XG4gIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH0pKCk7XG5cbmZ1bmN0aW9uIHBhcnNlUHJvdG9jb2wodXJsKSB7XG4gIGNvbnN0IG1hdGNoID0gL14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWModXJsKTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBkYXRhIG1heFJhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2FtcGxlc0NvdW50PSAxMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbWluPSAxMDAwXVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcGVlZG9tZXRlcihzYW1wbGVzQ291bnQsIG1pbikge1xuICBzYW1wbGVzQ291bnQgPSBzYW1wbGVzQ291bnQgfHwgMTA7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGNvbnN0IHRpbWVzdGFtcHMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgbGV0IGhlYWQgPSAwO1xuICBsZXQgdGFpbCA9IDA7XG4gIGxldCBmaXJzdFNhbXBsZVRTO1xuXG4gIG1pbiA9IG1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogMTAwMDtcblxuICByZXR1cm4gZnVuY3Rpb24gcHVzaChjaHVua0xlbmd0aCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSB0aW1lc3RhbXBzW3RhaWxdO1xuXG4gICAgaWYgKCFmaXJzdFNhbXBsZVRTKSB7XG4gICAgICBmaXJzdFNhbXBsZVRTID0gbm93O1xuICAgIH1cblxuICAgIGJ5dGVzW2hlYWRdID0gY2h1bmtMZW5ndGg7XG4gICAgdGltZXN0YW1wc1toZWFkXSA9IG5vdztcblxuICAgIGxldCBpID0gdGFpbDtcbiAgICBsZXQgYnl0ZXNDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoaSAhPT0gaGVhZCkge1xuICAgICAgYnl0ZXNDb3VudCArPSBieXRlc1tpKytdO1xuICAgICAgaSA9IGkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaGVhZCA9IChoZWFkICsgMSkgJSBzYW1wbGVzQ291bnQ7XG5cbiAgICBpZiAoaGVhZCA9PT0gdGFpbCkge1xuICAgICAgdGFpbCA9ICh0YWlsICsgMSkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaWYgKG5vdyAtIGZpcnN0U2FtcGxlVFMgPCBtaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzZWQgPSBzdGFydGVkQXQgJiYgbm93IC0gc3RhcnRlZEF0O1xuXG4gICAgcmV0dXJuIHBhc3NlZCA/IE1hdGgucm91bmQoYnl0ZXNDb3VudCAqIDEwMDAgLyBwYXNzZWQpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcm9ncmVzc0V2ZW50UmVkdWNlcihsaXN0ZW5lciwgaXNEb3dubG9hZFN0cmVhbSkge1xuICBsZXQgYnl0ZXNOb3RpZmllZCA9IDA7XG4gIGNvbnN0IF9zcGVlZG9tZXRlciA9IHNwZWVkb21ldGVyKDUwLCAyNTApO1xuXG4gIHJldHVybiBlID0+IHtcbiAgICBjb25zdCBsb2FkZWQgPSBlLmxvYWRlZDtcbiAgICBjb25zdCB0b3RhbCA9IGUubGVuZ3RoQ29tcHV0YWJsZSA/IGUudG90YWwgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvZ3Jlc3NCeXRlcyA9IGxvYWRlZCAtIGJ5dGVzTm90aWZpZWQ7XG4gICAgY29uc3QgcmF0ZSA9IF9zcGVlZG9tZXRlcihwcm9ncmVzc0J5dGVzKTtcbiAgICBjb25zdCBpblJhbmdlID0gbG9hZGVkIDw9IHRvdGFsO1xuXG4gICAgYnl0ZXNOb3RpZmllZCA9IGxvYWRlZDtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsb2FkZWQsXG4gICAgICB0b3RhbCxcbiAgICAgIHByb2dyZXNzOiB0b3RhbCA/IChsb2FkZWQgLyB0b3RhbCkgOiB1bmRlZmluZWQsXG4gICAgICBieXRlczogcHJvZ3Jlc3NCeXRlcyxcbiAgICAgIHJhdGU6IHJhdGUgPyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXN0aW1hdGVkOiByYXRlICYmIHRvdGFsICYmIGluUmFuZ2UgPyAodG90YWwgLSBsb2FkZWQpIC8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50OiBlXG4gICAgfTtcblxuICAgIGRhdGFbaXNEb3dubG9hZFN0cmVhbSA/ICdkb3dubG9hZCcgOiAndXBsb2FkJ10gPSB0cnVlO1xuXG4gICAgbGlzdGVuZXIoZGF0YSk7XG4gIH07XG59XG5cbmNvbnN0IGlzWEhSQWRhcHRlclN1cHBvcnRlZCA9IHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCc7XG5cbnZhciB4aHJBZGFwdGVyID0gaXNYSFJBZGFwdGVyU3VwcG9ydGVkICYmIGZ1bmN0aW9uIChjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBsZXQgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IEF4aW9zSGVhZGVycyQxLmZyb20oY29uZmlnLmhlYWRlcnMpLm5vcm1hbGl6ZSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgbGV0IG9uQ2FuY2VsZWQ7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnRUeXBlO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBpZiAocGxhdGZvcm0uaXNTdGFuZGFyZEJyb3dzZXJFbnYgfHwgcGxhdGZvcm0uaXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUoZmFsc2UpOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgICB9IGVsc2UgaWYoIXJlcXVlc3RIZWFkZXJzLmdldENvbnRlbnRUeXBlKC9eXFxzKm11bHRpcGFydFxcL2Zvcm0tZGF0YS8pKXtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ211bHRpcGFydC9mb3JtLWRhdGEnKTsgLy8gbW9iaWxlL2Rlc2t0b3AgYXBwIGZyYW1ld29ya3NcbiAgICAgIH0gZWxzZSBpZih1dGlscy5pc1N0cmluZyhjb250ZW50VHlwZSA9IHJlcXVlc3RIZWFkZXJzLmdldENvbnRlbnRUeXBlKCkpKXtcbiAgICAgICAgLy8gZml4IHNlbWljb2xvbiBkdXBsaWNhdGlvbiBpc3N1ZSBmb3IgUmVhY3ROYXRpdmUgRm9ybURhdGEgaW1wbGVtZW50YXRpb25cbiAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUoY29udGVudFR5cGUucmVwbGFjZSgvXlxccyoobXVsdGlwYXJ0XFwvZm9ybS1kYXRhKTsrLywgJyQxJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICBjb25zdCB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb25maWcuYXV0aC5wYXNzd29yZCkpIDogJyc7XG4gICAgICByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG5cbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IEF4aW9zSGVhZGVycyQxLmZyb20oXG4gICAgICAgICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgJiYgcmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgbGV0IHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dCA/ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcgOiAndGltZW91dCBleGNlZWRlZCc7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsIHx8IHRyYW5zaXRpb25hbERlZmF1bHRzO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgdHJhbnNpdGlvbmFsLmNsYXJpZnlUaW1lb3V0RXJyb3IgPyBBeGlvc0Vycm9yLkVUSU1FRE9VVCA6IEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHBsYXRmb3JtLmlzU3RhbmRhcmRCcm93c2VyRW52KSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIC8vIHJlZ2FyZGluZyBDVkUtMjAyMy00NTg1NyBjb25maWcud2l0aENyZWRlbnRpYWxzIGNvbmRpdGlvbiB3YXMgcmVtb3ZlZCB0ZW1wb3JhcmlseVxuICAgICAgY29uc3QgeHNyZlZhbHVlID0gaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgJiYgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSk7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KGNvbmZpZy54c3JmSGVhZGVyTmFtZSwgeHNyZlZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgcmVxdWVzdERhdGEgPT09IHVuZGVmaW5lZCAmJiByZXF1ZXN0SGVhZGVycy5zZXRDb250ZW50VHlwZShudWxsKTtcblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLnRvSlNPTigpLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcywgdHJ1ZSkpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBwcm9ncmVzc0V2ZW50UmVkdWNlcihjb25maWcub25VcGxvYWRQcm9ncmVzcykpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4gfHwgY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBjYW5jZWwgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgY2FuY2VsLnR5cGUgPyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcsIHJlcXVlc3QpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbiAmJiBjb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5hYm9ydGVkID8gb25DYW5jZWxlZCgpIDogY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gcGFyc2VQcm90b2NvbChmdWxsUGF0aCk7XG5cbiAgICBpZiAocHJvdG9jb2wgJiYgcGxhdGZvcm0ucHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdVbnN1cHBvcnRlZCBwcm90b2NvbCAnICsgcHJvdG9jb2wgKyAnOicsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBjb25maWcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEgfHwgbnVsbCk7XG4gIH0pO1xufTtcblxuY29uc3Qga25vd25BZGFwdGVycyA9IHtcbiAgaHR0cDogaHR0cEFkYXB0ZXIsXG4gIHhocjogeGhyQWRhcHRlclxufTtcblxudXRpbHMuZm9yRWFjaChrbm93bkFkYXB0ZXJzLCAoZm4sIHZhbHVlKSA9PiB7XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICduYW1lJywge3ZhbHVlfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ2FkYXB0ZXJOYW1lJywge3ZhbHVlfSk7XG4gIH1cbn0pO1xuXG5jb25zdCByZW5kZXJSZWFzb24gPSAocmVhc29uKSA9PiBgLSAke3JlYXNvbn1gO1xuXG5jb25zdCBpc1Jlc29sdmVkSGFuZGxlID0gKGFkYXB0ZXIpID0+IHV0aWxzLmlzRnVuY3Rpb24oYWRhcHRlcikgfHwgYWRhcHRlciA9PT0gbnVsbCB8fCBhZGFwdGVyID09PSBmYWxzZTtcblxudmFyIGFkYXB0ZXJzID0ge1xuICBnZXRBZGFwdGVyOiAoYWRhcHRlcnMpID0+IHtcbiAgICBhZGFwdGVycyA9IHV0aWxzLmlzQXJyYXkoYWRhcHRlcnMpID8gYWRhcHRlcnMgOiBbYWRhcHRlcnNdO1xuXG4gICAgY29uc3Qge2xlbmd0aH0gPSBhZGFwdGVycztcbiAgICBsZXQgbmFtZU9yQWRhcHRlcjtcbiAgICBsZXQgYWRhcHRlcjtcblxuICAgIGNvbnN0IHJlamVjdGVkUmVhc29ucyA9IHt9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbmFtZU9yQWRhcHRlciA9IGFkYXB0ZXJzW2ldO1xuICAgICAgbGV0IGlkO1xuXG4gICAgICBhZGFwdGVyID0gbmFtZU9yQWRhcHRlcjtcblxuICAgICAgaWYgKCFpc1Jlc29sdmVkSGFuZGxlKG5hbWVPckFkYXB0ZXIpKSB7XG4gICAgICAgIGFkYXB0ZXIgPSBrbm93bkFkYXB0ZXJzWyhpZCA9IFN0cmluZyhuYW1lT3JBZGFwdGVyKSkudG9Mb3dlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGFkYXB0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKGBVbmtub3duIGFkYXB0ZXIgJyR7aWR9J2ApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGFwdGVyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZWplY3RlZFJlYXNvbnNbaWQgfHwgJyMnICsgaV0gPSBhZGFwdGVyO1xuICAgIH1cblxuICAgIGlmICghYWRhcHRlcikge1xuXG4gICAgICBjb25zdCByZWFzb25zID0gT2JqZWN0LmVudHJpZXMocmVqZWN0ZWRSZWFzb25zKVxuICAgICAgICAubWFwKChbaWQsIHN0YXRlXSkgPT4gYGFkYXB0ZXIgJHtpZH0gYCArXG4gICAgICAgICAgKHN0YXRlID09PSBmYWxzZSA/ICdpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCcgOiAnaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQnKVxuICAgICAgICApO1xuXG4gICAgICBsZXQgcyA9IGxlbmd0aCA/XG4gICAgICAgIChyZWFzb25zLmxlbmd0aCA+IDEgPyAnc2luY2UgOlxcbicgKyByZWFzb25zLm1hcChyZW5kZXJSZWFzb24pLmpvaW4oJ1xcbicpIDogJyAnICsgcmVuZGVyUmVhc29uKHJlYXNvbnNbMF0pKSA6XG4gICAgICAgICdhcyBubyBhZGFwdGVyIHNwZWNpZmllZCc7XG5cbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBgVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCBgICsgcyxcbiAgICAgICAgJ0VSUl9OT1RfU1VQUE9SVCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkYXB0ZXI7XG4gIH0sXG4gIGFkYXB0ZXJzOiBrbm93bkFkYXB0ZXJzXG59O1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbmZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIGNvbmZpZy5oZWFkZXJzID0gQXhpb3NIZWFkZXJzJDEuZnJvbShjb25maWcuaGVhZGVycyk7XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLmluZGV4T2YoY29uZmlnLm1ldGhvZCkgIT09IC0xKSB7XG4gICAgY29uZmlnLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyKGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzJDEuYWRhcHRlcik7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2UsXG4gICAgICByZXNwb25zZVxuICAgICk7XG5cbiAgICByZXNwb25zZS5oZWFkZXJzID0gQXhpb3NIZWFkZXJzJDEuZnJvbShyZXNwb25zZS5oZWFkZXJzKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMkMS5mcm9tKHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG5cbmNvbnN0IGhlYWRlcnNUb09iamVjdCA9ICh0aGluZykgPT4gdGhpbmcgaW5zdGFuY2VvZiBBeGlvc0hlYWRlcnMkMSA/IHRoaW5nLnRvSlNPTigpIDogdGhpbmc7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xuZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIGNvbnN0IGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlLCBjYXNlbGVzcykge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UuY2FsbCh7Y2FzZWxlc3N9LCB0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMoYSwgYiwgY2FzZWxlc3MpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoYSwgYiwgY2FzZWxlc3MpO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGEpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhLCBjYXNlbGVzcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIoYSwgYikge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhhLCBiLCBwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIpO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXJnZU1hcCA9IHtcbiAgICB1cmw6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgbWV0aG9kOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGRhdGE6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgYmFzZVVSTDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zZm9ybVJlc3BvbnNlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHBhcmFtc1NlcmlhbGl6ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0aW1lb3V0TWVzc2FnZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYWRhcHRlcjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZVR5cGU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkNvb2tpZU5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkhlYWRlck5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgb25VcGxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgZGVjb21wcmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBtYXhDb250ZW50TGVuZ3RoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heEJvZHlMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYmVmb3JlUmVkaXJlY3Q6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNwb3J0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBBZ2VudDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBodHRwc0FnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGNhbmNlbFRva2VuOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHNvY2tldFBhdGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcmVzcG9uc2VFbmNvZGluZzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB2YWxpZGF0ZVN0YXR1czogbWVyZ2VEaXJlY3RLZXlzLFxuICAgIGhlYWRlcnM6IChhLCBiKSA9PiBtZXJnZURlZXBQcm9wZXJ0aWVzKGhlYWRlcnNUb09iamVjdChhKSwgaGVhZGVyc1RvT2JqZWN0KGIpLCB0cnVlKVxuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnMSwgY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgIGNvbnN0IG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IG1lcmdlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0sIHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuY29uc3QgVkVSU0lPTiA9IFwiMS42LjBcIjtcblxuY29uc3QgdmFsaWRhdG9ycyQxID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaCgodHlwZSwgaSkgPT4ge1xuICB2YWxpZGF0b3JzJDFbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG5jb25zdCBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvciAtIHNldCB0byBmYWxzZSBpZiB0aGUgdHJhbnNpdGlvbmFsIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xuICpcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAqL1xudmFsaWRhdG9ycyQxLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuICh2YWx1ZSwgb3B0LCBvcHRzKSA9PiB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSksXG4gICAgICAgIEF4aW9zRXJyb3IuRVJSX0RFUFJFQ0FURURcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbi8qKlxuICogQXNzZXJ0IG9iamVjdCdzIHByb3BlcnRpZXMgdHlwZVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5cbmZ1bmN0aW9uIGFzc2VydE9wdGlvbnMob3B0aW9ucywgc2NoZW1hLCBhbGxvd1Vua25vd24pIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0JywgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTl9WQUxVRSk7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGNvbnN0IG9wdCA9IGtleXNbaV07XG4gICAgY29uc3QgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zW29wdF07XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHZhbGlkYXRvciA9IHtcbiAgYXNzZXJ0T3B0aW9ucyxcbiAgdmFsaWRhdG9yczogdmFsaWRhdG9ycyQxXG59O1xuXG5jb25zdCB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKlxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmNsYXNzIEF4aW9zIHtcbiAgY29uc3RydWN0b3IoaW5zdGFuY2VDb25maWcpIHtcbiAgICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyJDEoKSxcbiAgICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyJDEoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gY29uZmlnT3JVcmwgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICAgKiBAcGFyYW0gez9PYmplY3R9IGNvbmZpZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gICAqL1xuICByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gICAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XG4gICAgfVxuXG4gICAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAgIGNvbnN0IHt0cmFuc2l0aW9uYWwsIHBhcmFtc1NlcmlhbGl6ZXIsIGhlYWRlcnN9ID0gY29uZmlnO1xuXG4gICAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIgIT0gbnVsbCkge1xuICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyYW1zU2VyaWFsaXplcikpIHtcbiAgICAgICAgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIgPSB7XG4gICAgICAgICAgc2VyaWFsaXplOiBwYXJhbXNTZXJpYWxpemVyXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyhwYXJhbXNTZXJpYWxpemVyLCB7XG4gICAgICAgICAgZW5jb2RlOiB2YWxpZGF0b3JzLmZ1bmN0aW9uLFxuICAgICAgICAgIHNlcmlhbGl6ZTogdmFsaWRhdG9ycy5mdW5jdGlvblxuICAgICAgICB9LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICAgIGNvbmZpZy5tZXRob2QgPSAoY29uZmlnLm1ldGhvZCB8fCB0aGlzLmRlZmF1bHRzLm1ldGhvZCB8fCAnZ2V0JykudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICAgIGxldCBjb250ZXh0SGVhZGVycyA9IGhlYWRlcnMgJiYgdXRpbHMubWVyZ2UoXG4gICAgICBoZWFkZXJzLmNvbW1vbixcbiAgICAgIGhlYWRlcnNbY29uZmlnLm1ldGhvZF1cbiAgICApO1xuXG4gICAgaGVhZGVycyAmJiB1dGlscy5mb3JFYWNoKFxuICAgICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgICAobWV0aG9kKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzW21ldGhvZF07XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbmZpZy5oZWFkZXJzID0gQXhpb3NIZWFkZXJzJDEuY29uY2F0KGNvbnRleHRIZWFkZXJzLCBoZWFkZXJzKTtcblxuICAgIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgICBjb25zdCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICAgIGxldCBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJvbWlzZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGxlbjtcblxuICAgIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QuYmluZCh0aGlzKSwgdW5kZWZpbmVkXTtcbiAgICAgIGNoYWluLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGNoYWluLnB1c2guYXBwbHkoY2hhaW4sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBsZW4gPSBjaGFpbi5sZW5ndGg7XG5cbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICAgICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbltpKytdLCBjaGFpbltpKytdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgbGVuID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgbGV0IG5ld0NvbmZpZyA9IGNvbmZpZztcblxuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGNvbnN0IG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIGNvbnN0IG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uUmVqZWN0ZWQuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0LmNhbGwodGhpcywgbmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpID0gMDtcbiAgICBsZW4gPSByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIGdldFVyaShjb25maWcpIHtcbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmV0dXJuIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG4gIH1cbn1cblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVIVFRQTWV0aG9kKGlzRm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBodHRwTWV0aG9kKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGlzRm9ybSA/IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICAgIH0gOiB7fSxcbiAgICAgICAgdXJsLFxuICAgICAgICBkYXRhXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZ2VuZXJhdGVIVFRQTWV0aG9kKCk7XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZCArICdGb3JtJ10gPSBnZW5lcmF0ZUhUVFBNZXRob2QodHJ1ZSk7XG59KTtcblxudmFyIEF4aW9zJDEgPSBBeGlvcztcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7Q2FuY2VsVG9rZW59XG4gKi9cbmNsYXNzIENhbmNlbFRva2VuIHtcbiAgY29uc3RydWN0b3IoZXhlY3V0b3IpIHtcbiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVQcm9taXNlO1xuXG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRva2VuID0gdGhpcztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdGhpcy5wcm9taXNlLnRoZW4oY2FuY2VsID0+IHtcbiAgICAgIGlmICghdG9rZW4uX2xpc3RlbmVycykgcmV0dXJuO1xuXG4gICAgICBsZXQgaSA9IHRva2VuLl9saXN0ZW5lcnMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgICB9XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzID0gbnVsbDtcbiAgICB9KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdGhpcy5wcm9taXNlLnRoZW4gPSBvbmZ1bGZpbGxlZCA9PiB7XG4gICAgICBsZXQgX3Jlc29sdmU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIH0pLnRoZW4ob25mdWxmaWxsZWQpO1xuXG4gICAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgICAgdG9rZW4udW5zdWJzY3JpYmUoX3Jlc29sdmUpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlLCBjb25maWcsIHJlcXVlc3QpIHtcbiAgICAgIGlmICh0b2tlbi5yZWFzb24pIHtcbiAgICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbGVkRXJyb3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KTtcbiAgICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gICAqL1xuICB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICAgIGlmICh0aGlzLnJlYXNvbikge1xuICAgICAgdGhyb3cgdGhpcy5yZWFzb247XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgY2FuY2VsIHNpZ25hbFxuICAgKi9cblxuICBzdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgdW5zdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICAgKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICAgKi9cbiAgc3RhdGljIHNvdXJjZSgpIHtcbiAgICBsZXQgY2FuY2VsO1xuICAgIGNvbnN0IHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICAgIGNhbmNlbCA9IGM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgY2FuY2VsXG4gICAgfTtcbiAgfVxufVxuXG52YXIgQ2FuY2VsVG9rZW4kMSA9IENhbmNlbFRva2VuO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuIHV0aWxzLmlzT2JqZWN0KHBheWxvYWQpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59XG5cbmNvbnN0IEh0dHBTdGF0dXNDb2RlID0ge1xuICBDb250aW51ZTogMTAwLFxuICBTd2l0Y2hpbmdQcm90b2NvbHM6IDEwMSxcbiAgUHJvY2Vzc2luZzogMTAyLFxuICBFYXJseUhpbnRzOiAxMDMsXG4gIE9rOiAyMDAsXG4gIENyZWF0ZWQ6IDIwMSxcbiAgQWNjZXB0ZWQ6IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOiAyMDMsXG4gIE5vQ29udGVudDogMjA0LFxuICBSZXNldENvbnRlbnQ6IDIwNSxcbiAgUGFydGlhbENvbnRlbnQ6IDIwNixcbiAgTXVsdGlTdGF0dXM6IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkOiAyMDgsXG4gIEltVXNlZDogMjI2LFxuICBNdWx0aXBsZUNob2ljZXM6IDMwMCxcbiAgTW92ZWRQZXJtYW5lbnRseTogMzAxLFxuICBGb3VuZDogMzAyLFxuICBTZWVPdGhlcjogMzAzLFxuICBOb3RNb2RpZmllZDogMzA0LFxuICBVc2VQcm94eTogMzA1LFxuICBVbnVzZWQ6IDMwNixcbiAgVGVtcG9yYXJ5UmVkaXJlY3Q6IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3Q6IDMwOCxcbiAgQmFkUmVxdWVzdDogNDAwLFxuICBVbmF1dGhvcml6ZWQ6IDQwMSxcbiAgUGF5bWVudFJlcXVpcmVkOiA0MDIsXG4gIEZvcmJpZGRlbjogNDAzLFxuICBOb3RGb3VuZDogNDA0LFxuICBNZXRob2ROb3RBbGxvd2VkOiA0MDUsXG4gIE5vdEFjY2VwdGFibGU6IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA0MDcsXG4gIFJlcXVlc3RUaW1lb3V0OiA0MDgsXG4gIENvbmZsaWN0OiA0MDksXG4gIEdvbmU6IDQxMCxcbiAgTGVuZ3RoUmVxdWlyZWQ6IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkOiA0MTIsXG4gIFBheWxvYWRUb29MYXJnZTogNDEzLFxuICBVcmlUb29Mb25nOiA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlOiA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGU6IDQxNixcbiAgRXhwZWN0YXRpb25GYWlsZWQ6IDQxNyxcbiAgSW1BVGVhcG90OiA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdDogNDIxLFxuICBVbnByb2Nlc3NhYmxlRW50aXR5OiA0MjIsXG4gIExvY2tlZDogNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5OiA0MjQsXG4gIFRvb0Vhcmx5OiA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZDogNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZDogNDI4LFxuICBUb29NYW55UmVxdWVzdHM6IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOiA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOiA0NTEsXG4gIEludGVybmFsU2VydmVyRXJyb3I6IDUwMCxcbiAgTm90SW1wbGVtZW50ZWQ6IDUwMSxcbiAgQmFkR2F0ZXdheTogNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGU6IDUwMyxcbiAgR2F0ZXdheVRpbWVvdXQ6IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzOiA1MDYsXG4gIEluc3VmZmljaWVudFN0b3JhZ2U6IDUwNyxcbiAgTG9vcERldGVjdGVkOiA1MDgsXG4gIE5vdEV4dGVuZGVkOiA1MTAsXG4gIE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA1MTEsXG59O1xuXG5PYmplY3QuZW50cmllcyhIdHRwU3RhdHVzQ29kZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gIEh0dHBTdGF0dXNDb2RlW3ZhbHVlXSA9IGtleTtcbn0pO1xuXG52YXIgSHR0cFN0YXR1c0NvZGUkMSA9IEh0dHBTdGF0dXNDb2RlO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKlxuICogQHJldHVybnMge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQXhpb3MkMShkZWZhdWx0Q29uZmlnKTtcbiAgY29uc3QgaW5zdGFuY2UgPSBiaW5kKEF4aW9zJDEucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MkMS5wcm90b3R5cGUsIGNvbnRleHQsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCwgbnVsbCwge2FsbE93bktleXM6IHRydWV9KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG5jb25zdCBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzJDEpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3MkMTtcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWxlZEVycm9yID0gQ2FuY2VsZWRFcnJvcjtcbmF4aW9zLkNhbmNlbFRva2VuID0gQ2FuY2VsVG9rZW4kMTtcbmF4aW9zLmlzQ2FuY2VsID0gaXNDYW5jZWw7XG5heGlvcy5WRVJTSU9OID0gVkVSU0lPTjtcbmF4aW9zLnRvRm9ybURhdGEgPSB0b0Zvcm1EYXRhO1xuXG4vLyBFeHBvc2UgQXhpb3NFcnJvciBjbGFzc1xuYXhpb3MuQXhpb3NFcnJvciA9IEF4aW9zRXJyb3I7XG5cbi8vIGFsaWFzIGZvciBDYW5jZWxlZEVycm9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5heGlvcy5DYW5jZWwgPSBheGlvcy5DYW5jZWxlZEVycm9yO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5heGlvcy5zcHJlYWQgPSBzcHJlYWQ7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IGlzQXhpb3NFcnJvcjtcblxuLy8gRXhwb3NlIG1lcmdlQ29uZmlnXG5heGlvcy5tZXJnZUNvbmZpZyA9IG1lcmdlQ29uZmlnO1xuXG5heGlvcy5BeGlvc0hlYWRlcnMgPSBBeGlvc0hlYWRlcnMkMTtcblxuYXhpb3MuZm9ybVRvSlNPTiA9IHRoaW5nID0+IGZvcm1EYXRhVG9KU09OKHV0aWxzLmlzSFRNTEZvcm0odGhpbmcpID8gbmV3IEZvcm1EYXRhKHRoaW5nKSA6IHRoaW5nKTtcblxuYXhpb3MuZ2V0QWRhcHRlciA9IGFkYXB0ZXJzLmdldEFkYXB0ZXI7XG5cbmF4aW9zLkh0dHBTdGF0dXNDb2RlID0gSHR0cFN0YXR1c0NvZGUkMTtcblxuYXhpb3MuZGVmYXVsdCA9IGF4aW9zO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXhpb3MuY2pzLm1hcFxuIiwiKGZ1bmN0aW9uKFosU2Upe3R5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPFwidVwiP21vZHVsZS5leHBvcnRzPVNlKHJlcXVpcmUoXCJ2dWVcIikpOnR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZD9kZWZpbmUoW1widnVlXCJdLFNlKTooWj10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOlp8fHNlbGYsWi5WdWVBcGV4Q2hhcnRzPVNlKFouVnVlKSl9KSh0aGlzLGZ1bmN0aW9uKFope1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIFNlKF8pe3JldHVybiBfJiZfLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfLFwiZGVmYXVsdFwiKT9fLmRlZmF1bHQ6X312YXIgSGU9e2V4cG9ydHM6e319Oy8qIVxuICogQXBleENoYXJ0cyB2My40NS4yXG4gKiAoYykgMjAxOC0yMDI0IEFwZXhDaGFydHNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqLyhmdW5jdGlvbihfLERlKXtmdW5jdGlvbiBDZSh5LGUpe3ZhciB0PU9iamVjdC5rZXlzKHkpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoeSk7ZSYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxhKS5lbnVtZXJhYmxlfSkpLHQucHVzaC5hcHBseSh0LGkpfXJldHVybiB0fWZ1bmN0aW9uIFgoeSl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHQ9YXJndW1lbnRzW2VdIT1udWxsP2FyZ3VtZW50c1tlXTp7fTtlJTI/Q2UoT2JqZWN0KHQpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3RlKHksaSx0W2ldKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOkNlKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoeSxpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKSl9KX1yZXR1cm4geX1mdW5jdGlvbiBVKHkpe3JldHVybiBVPXR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LFUoeSl9ZnVuY3Rpb24gRih5LGUpe2lmKCEoeSBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gZGUoeSxlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIGk9ZVt0XTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksaS5rZXksaSl9fWZ1bmN0aW9uIFkoeSxlLHQpe3JldHVybiBlJiZkZSh5LnByb3RvdHlwZSxlKSx0JiZkZSh5LHQpLHl9ZnVuY3Rpb24gdGUoeSxlLHQpe3JldHVybiBlIGluIHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHksZSx7dmFsdWU6dCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnlbZV09dCx5fWZ1bmN0aW9uIHVlKHksZSl7aWYodHlwZW9mIGUhPVwiZnVuY3Rpb25cIiYmZSE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO3kucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp5LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiZMZSh5LGUpfWZ1bmN0aW9uIHZlKHkpe3JldHVybiB2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSx2ZSh5KX1mdW5jdGlvbiBMZSh5LGUpe3JldHVybiBMZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQuX19wcm90b19fPWksdH0sTGUoeSxlKX1mdW5jdGlvbiBYZSh5KXtpZih5PT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4geX1mdW5jdGlvbiBwZSh5KXt2YXIgZT1mdW5jdGlvbigpe2lmKHR5cGVvZiBSZWZsZWN0PlwidVwifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT1cImZ1bmN0aW9uXCIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT12ZSh5KTtpZihlKXt2YXIgYT12ZSh0aGlzKS5jb25zdHJ1Y3Rvcjt0PVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLGEpfWVsc2UgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24ocyxyKXtpZihyJiYodHlwZW9mIHI9PVwib2JqZWN0XCJ8fHR5cGVvZiByPT1cImZ1bmN0aW9uXCIpKXJldHVybiByO2lmKHIhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBYZShzKX0odGhpcyx0KX19ZnVuY3Rpb24gRWUoeSxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0oeSl8fGZ1bmN0aW9uKHQsaSl7dmFyIGE9dD09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8XCJ1XCImJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFtcIkBAaXRlcmF0b3JcIl07aWYoYSE9bnVsbCl7dmFyIHMscixuPVtdLG89ITAsaD0hMTt0cnl7Zm9yKGE9YS5jYWxsKHQpOyEobz0ocz1hLm5leHQoKSkuZG9uZSkmJihuLnB1c2gocy52YWx1ZSksIWl8fG4ubGVuZ3RoIT09aSk7bz0hMCk7fWNhdGNoKGMpe2g9ITAscj1jfWZpbmFsbHl7dHJ5e298fGEucmV0dXJuPT1udWxsfHxhLnJldHVybigpfWZpbmFsbHl7aWYoaCl0aHJvdyByfX1yZXR1cm4gbn19KHksZSl8fFllKHksZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX0oKX1mdW5jdGlvbiBRKHkpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBQZShlKX0oeSl8fGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBTeW1ib2w8XCJ1XCImJmVbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8ZVtcIkBAaXRlcmF0b3JcIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9KHkpfHxZZSh5KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX0oKX1mdW5jdGlvbiBZZSh5LGUpe2lmKHkpe2lmKHR5cGVvZiB5PT1cInN0cmluZ1wiKXJldHVybiBQZSh5LGUpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KS5zbGljZSg4LC0xKTtyZXR1cm4gdD09PVwiT2JqZWN0XCImJnkuY29uc3RydWN0b3ImJih0PXkuY29uc3RydWN0b3IubmFtZSksdD09PVwiTWFwXCJ8fHQ9PT1cIlNldFwiP0FycmF5LmZyb20oeSk6dD09PVwiQXJndW1lbnRzXCJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpP1BlKHksZSk6dm9pZCAwfX1mdW5jdGlvbiBQZSh5LGUpeyhlPT1udWxsfHxlPnkubGVuZ3RoKSYmKGU9eS5sZW5ndGgpO2Zvcih2YXIgdD0wLGk9bmV3IEFycmF5KGUpO3Q8ZTt0KyspaVt0XT15W3RdO3JldHVybiBpfXZhciBQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe0YodGhpcyx5KX1yZXR1cm4gWSh5LFt7a2V5Olwic2hhZGVSR0JDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dC5zcGxpdChcIixcIiksYT1lPDA/MDoyNTUscz1lPDA/LTEqZTplLHI9cGFyc2VJbnQoaVswXS5zbGljZSg0KSwxMCksbj1wYXJzZUludChpWzFdLDEwKSxvPXBhcnNlSW50KGlbMl0sMTApO3JldHVyblwicmdiKFwiKyhNYXRoLnJvdW5kKChhLXIpKnMpK3IpK1wiLFwiKyhNYXRoLnJvdW5kKChhLW4pKnMpK24pK1wiLFwiKyhNYXRoLnJvdW5kKChhLW8pKnMpK28pK1wiKVwifX0se2tleTpcInNoYWRlSGV4Q29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXBhcnNlSW50KHQuc2xpY2UoMSksMTYpLGE9ZTwwPzA6MjU1LHM9ZTwwPy0xKmU6ZSxyPWk+PjE2LG49aT4+OCYyNTUsbz0yNTUmaTtyZXR1cm5cIiNcIisoMTY3NzcyMTYrNjU1MzYqKE1hdGgucm91bmQoKGEtcikqcykrcikrMjU2KihNYXRoLnJvdW5kKChhLW4pKnMpK24pKyhNYXRoLnJvdW5kKChhLW8pKnMpK28pKS50b1N0cmluZygxNikuc2xpY2UoMSl9fSx7a2V5Olwic2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHkuaXNDb2xvckhleCh0KT90aGlzLnNoYWRlSGV4Q29sb3IoZSx0KTp0aGlzLnNoYWRlUkdCQ29sb3IoZSx0KX19XSxbe2tleTpcImJpbmRcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSx7a2V5OlwiaXNPYmplY3RcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmVShlKT09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KGUpJiZlIT1udWxsfX0se2tleTpcImlzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09XCJbb2JqZWN0IFwiK2UrXCJdXCJ9fSx7a2V5OlwibGlzdFRvQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPVtdO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaVt0XT1lW3RdO3JldHVybiBpfX0se2tleTpcImV4dGVuZFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpczt0eXBlb2YgT2JqZWN0LmFzc2lnbiE9XCJmdW5jdGlvblwiJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbihzKXtpZihzPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3RcIik7Zm9yKHZhciByPU9iamVjdChzKSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIG89YXJndW1lbnRzW25dO2lmKG8hPW51bGwpZm9yKHZhciBoIGluIG8pby5oYXNPd25Qcm9wZXJ0eShoKSYmKHJbaF09b1toXSl9cmV0dXJuIHJ9KTt2YXIgYT1PYmplY3QuYXNzaWduKHt9LGUpO3JldHVybiB0aGlzLmlzT2JqZWN0KGUpJiZ0aGlzLmlzT2JqZWN0KHQpJiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHMpe2kuaXNPYmplY3QodFtzXSkmJnMgaW4gZT9hW3NdPWkuZXh0ZW5kKGVbc10sdFtzXSk6T2JqZWN0LmFzc2lnbihhLHRlKHt9LHMsdFtzXSkpfSksYX19LHtrZXk6XCJleHRlbmRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9W107cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGEpe2kucHVzaCh5LmV4dGVuZCh0LGEpKX0pLGU9aX19LHtrZXk6XCJtb250aE1vZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlJTEyfX0se2tleTpcImNsb25lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoeS5pcyhcIkFycmF5XCIsZSkpe2Zvcih2YXIgdD1bXSxpPTA7aTxlLmxlbmd0aDtpKyspdFtpXT10aGlzLmNsb25lKGVbaV0pO3JldHVybiB0fWlmKHkuaXMoXCJOdWxsXCIsZSkpcmV0dXJuIG51bGw7aWYoeS5pcyhcIkRhdGVcIixlKSlyZXR1cm4gZTtpZihVKGUpPT09XCJvYmplY3RcIil7dmFyIGE9e307Zm9yKHZhciBzIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShzKSYmKGFbc109dGhpcy5jbG9uZShlW3NdKSk7cmV0dXJuIGF9cmV0dXJuIGV9fSx7a2V5OlwibG9nMTBcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5MTjEwfX0se2tleTpcInJvdW5kVG9CYXNlMTBcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZzEwKGUpKSl9fSx7a2V5Olwicm91bmRUb0Jhc2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnBvdyh0LE1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5sb2codCkpKX19LHtrZXk6XCJwYXJzZU51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09bnVsbD9lOnBhcnNlRmxvYXQoZSl9fSx7a2V5Olwic3RyaXBOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06MjtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT9lOnBhcnNlRmxvYXQoZS50b1ByZWNpc2lvbih0KSl9fSx7a2V5OlwicmFuZG9tSWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybihNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCl9fSx7a2V5Olwibm9FeHBvbmVudHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1TdHJpbmcoZSkuc3BsaXQoL1tlRV0vKTtpZih0Lmxlbmd0aD09PTEpcmV0dXJuIHRbMF07dmFyIGk9XCJcIixhPWU8MD9cIi1cIjpcIlwiLHM9dFswXS5yZXBsYWNlKFwiLlwiLFwiXCIpLHI9TnVtYmVyKHRbMV0pKzE7aWYocjwwKXtmb3IoaT1hK1wiMC5cIjtyKys7KWkrPVwiMFwiO3JldHVybiBpK3MucmVwbGFjZSgvXi0vLFwiXCIpfWZvcihyLT1zLmxlbmd0aDtyLS07KWkrPVwiMFwiO3JldHVybiBzK2l9fSx7a2V5OlwiZ2V0RGltZW5zaW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWdldENvbXB1dGVkU3R5bGUoZSxudWxsKSxpPWUuY2xpZW50SGVpZ2h0LGE9ZS5jbGllbnRXaWR0aDtyZXR1cm4gaS09cGFyc2VGbG9hdCh0LnBhZGRpbmdUb3ApK3BhcnNlRmxvYXQodC5wYWRkaW5nQm90dG9tKSxbYS09cGFyc2VGbG9hdCh0LnBhZGRpbmdMZWZ0KStwYXJzZUZsb2F0KHQucGFkZGluZ1JpZ2h0KSxpXX19LHtrZXk6XCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt0b3A6dC50b3AscmlnaHQ6dC5yaWdodCxib3R0b206dC5ib3R0b20sbGVmdDp0LmxlZnQsd2lkdGg6ZS5jbGllbnRXaWR0aCxoZWlnaHQ6ZS5jbGllbnRIZWlnaHQseDp0LmxlZnQseTp0LnRvcH19fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnJcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gQXJyYXkuaXNBcnJheShpKSYmKGk9aS5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYS5sZW5ndGg+cy5sZW5ndGg/YTpzfSkpLHQubGVuZ3RoPmkubGVuZ3RoP3Q6aX0sMCl9fSx7a2V5OlwiaGV4VG9SZ2JhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06XCIjOTk5OTk5XCIsdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06LjY7ZS5zdWJzdHJpbmcoMCwxKSE9PVwiI1wiJiYoZT1cIiM5OTk5OTlcIik7dmFyIGk9ZS5yZXBsYWNlKFwiI1wiLFwiXCIpO2k9aS5tYXRjaChuZXcgUmVnRXhwKFwiKC57XCIraS5sZW5ndGgvMytcIn0pXCIsXCJnXCIpKTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdPXBhcnNlSW50KGlbYV0ubGVuZ3RoPT09MT9pW2FdK2lbYV06aVthXSwxNik7cmV0dXJuIHQhPT12b2lkIDAmJmkucHVzaCh0KSxcInJnYmEoXCIraS5qb2luKFwiLFwiKStcIilcIn19LHtrZXk6XCJnZXRPcGFjaXR5RnJvbVJHQkFcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VGbG9hdChlLnJlcGxhY2UoL14uKiwoLispXFwpLyxcIiQxXCIpKX19LHtrZXk6XCJyZ2IyaGV4XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9ZS5tYXRjaCgvXnJnYmE/W1xccytdP1xcKFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/L2kpKSYmZS5sZW5ndGg9PT00P1wiI1wiKyhcIjBcIitwYXJzZUludChlWzFdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQoZVsyXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KGVbM10sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpOlwiXCJ9fSx7a2V5OlwiaXNDb2xvckhleFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCl8KF4jWzAtOUEtRl17OH0kKS9pLnRlc3QoZSl9fSx7a2V5OlwiZ2V0UG9seWdvblBvc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPVtdLGE9MipNYXRoLlBJL3Qscz0wO3M8dDtzKyspe3ZhciByPXt9O3IueD1lKk1hdGguc2luKHMqYSksci55PS1lKk1hdGguY29zKHMqYSksaS5wdXNoKHIpfXJldHVybiBpfX0se2tleTpcInBvbGFyVG9DYXJ0ZXNpYW5cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz0oYS05MCkqTWF0aC5QSS8xODA7cmV0dXJue3g6ZStpKk1hdGguY29zKHMpLHk6dCtpKk1hdGguc2luKHMpfX19LHtrZXk6XCJlc2NhcGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06XCJ4XCIsaT1lLnRvU3RyaW5nKCkuc2xpY2UoKTtyZXR1cm4gaT1pLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpfCtcXD0/OzonXCIsLjw+e31bXFxdXFxcXC9dL2dpLHQpfX0se2tleTpcIm5lZ1RvWmVyb1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlPDA/MDplfX0se2tleTpcIm1vdmVJbmRleEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7aWYoaT49ZS5sZW5ndGgpZm9yKHZhciBhPWktZS5sZW5ndGgrMTthLS07KWUucHVzaCh2b2lkIDApO3JldHVybiBlLnNwbGljZShpLDAsZS5zcGxpY2UodCwxKVswXSksZX19LHtrZXk6XCJleHRyYWN0TnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlRmxvYXQoZS5yZXBsYWNlKC9bXlxcZC5dKi9nLFwiXCIpKX19LHtrZXk6XCJmaW5kQW5jZXN0b3JcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcig7KGU9ZS5wYXJlbnRFbGVtZW50KSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKHQpOyk7cmV0dXJuIGV9fSx7a2V5Olwic2V0RUxzdHlsZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihlLnN0eWxlLmtleT10W2ldKX19LHtrZXk6XCJpc051bWJlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiFpc05hTihlKSYmcGFyc2VGbG9hdChOdW1iZXIoZSkpPT09ZSYmIWlzTmFOKHBhcnNlSW50KGUsMTApKX19LHtrZXk6XCJpc0Zsb2F0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlcihlKT09PWUmJmUlMSE9MH19LHtrZXk6XCJpc1NhZmFyaVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX19LHtrZXk6XCJpc0ZpcmVmb3hcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImZpcmVmb3hcIik+LTF9fSx7a2V5OlwiaXNJRTExXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKSE9PS0xfHx3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIlRyaWRlbnQvXCIpPi0xKXJldHVybiEwfX0se2tleTpcImlzSUVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LHQ9ZS5pbmRleE9mKFwiTVNJRSBcIik7aWYodD4wKXJldHVybiBwYXJzZUludChlLnN1YnN0cmluZyh0KzUsZS5pbmRleE9mKFwiLlwiLHQpKSwxMCk7aWYoZS5pbmRleE9mKFwiVHJpZGVudC9cIik+MCl7dmFyIGk9ZS5pbmRleE9mKFwicnY6XCIpO3JldHVybiBwYXJzZUludChlLnN1YnN0cmluZyhpKzMsZS5pbmRleE9mKFwiLlwiLGkpKSwxMCl9dmFyIGE9ZS5pbmRleE9mKFwiRWRnZS9cIik7cmV0dXJuIGE+MCYmcGFyc2VJbnQoZS5zdWJzdHJpbmcoYSs1LGUuaW5kZXhPZihcIi5cIixhKSksMTApfX1dKSx5fSgpLGdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc2V0RWFzaW5nRnVuY3Rpb25zKCl9cmV0dXJuIFkoeSxbe2tleTpcInNldEVhc2luZ0Z1bmN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXRoaXMudy5nbG9iYWxzLmVhc2luZyl7c3dpdGNoKHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lYXNpbmcpe2Nhc2VcImxpbmVhclwiOmU9XCItXCI7YnJlYWs7Y2FzZVwiZWFzZWluXCI6ZT1cIjxcIjticmVhaztjYXNlXCJlYXNlb3V0XCI6ZT1cIj5cIjticmVhaztjYXNlXCJlYXNlaW5vdXRcIjpkZWZhdWx0OmU9XCI8PlwiO2JyZWFrO2Nhc2VcInN3aW5nXCI6ZT1mdW5jdGlvbih0KXt2YXIgaT0xLjcwMTU4O3JldHVybih0LT0xKSp0KigoaSsxKSp0K2kpKzF9O2JyZWFrO2Nhc2VcImJvdW5jZVwiOmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MS8yLjc1PzcuNTYyNSp0KnQ6dDwyLzIuNzU/Ny41NjI1Kih0LT0xLjUvMi43NSkqdCsuNzU6dDwyLjUvMi43NT83LjU2MjUqKHQtPTIuMjUvMi43NSkqdCsuOTM3NTo3LjU2MjUqKHQtPTIuNjI1LzIuNzUpKnQrLjk4NDM3NX07YnJlYWs7Y2FzZVwiZWxhc3RpY1wiOmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT0hIXQ/dDpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigodC0uMDc1KSooMipNYXRoLlBJKS8uMykrMX19dGhpcy53Lmdsb2JhbHMuZWFzaW5nPWV9fX0se2tleTpcImFuaW1hdGVMaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7ZS5hdHRyKHQpLmFuaW1hdGUoYSkuYXR0cihpKX19LHtrZXk6XCJhbmltYXRlTWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIpe3R8fCh0PTApLGUuYXR0cih7cjp0LHdpZHRoOnQsaGVpZ2h0OnR9KS5hbmltYXRlKGEscykuYXR0cih7cjppLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSkuYWZ0ZXJBbGwoZnVuY3Rpb24oKXtyKCl9KX19LHtrZXk6XCJhbmltYXRlQ2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzKXtlLmF0dHIoe3I6dC5yLGN4OnQuY3gsY3k6dC5jeX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmkucixjeDppLmN4LGN5OmkuY3l9KX19LHtrZXk6XCJhbmltYXRlUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7ZS5hdHRyKHQpLmFuaW1hdGUoYSkuYXR0cihpKS5hZnRlckFsbChmdW5jdGlvbigpe3JldHVybiBzKCl9KX19LHtrZXk6XCJhbmltYXRlUGF0aHNHcmFkdWFsbHlcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmVsLGk9ZS5yZWFsSW5kZXgsYT1lLmoscz1lLmZpbGwscj1lLnBhdGhGcm9tLG49ZS5wYXRoVG8sbz1lLnNwZWVkLGg9ZS5kZWxheSxjPXRoaXMudyxkPTA7Yy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihkPWMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksYy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmMuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmYy5jb25maWcuY2hhcnQudHlwZSE9PVwiYmFyXCImJihkPTApLHRoaXMubW9ycGhTVkcodCxpLGEsYy5jb25maWcuY2hhcnQudHlwZSE9PVwibGluZVwifHxjLmdsb2JhbHMuY29tYm9DaGFydHM/czpcInN0cm9rZVwiLHIsbixvLGgqZCl9fSx7a2V5Olwic2hvd0RlbGF5ZWRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lbDt0LmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd25cIil9KX19LHtrZXk6XCJhbmltYXRpb25Db21wbGV0ZWRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkfHwodC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLHRoaXMuc2hvd0RlbGF5ZWRFbGVtZW50cygpLHR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kPT1cImZ1bmN0aW9uXCImJnQuY29uZmlnLmNoYXJ0LmV2ZW50cy5hbmltYXRpb25FbmQodGhpcy5jdHgse2VsOmUsdzp0fSkpfX0se2tleTpcIm1vcnBoU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIsbixvKXt2YXIgaD10aGlzLGM9dGhpcy53O3N8fChzPWUuYXR0cihcInBhdGhGcm9tXCIpKSxyfHwocj1lLmF0dHIoXCJwYXRoVG9cIikpO3ZhciBkPWZ1bmN0aW9uKGcpe3JldHVybiBjLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRhclwiJiYobj0xKSxcIk0gMCBcIi5jb25jYXQoYy5nbG9iYWxzLmdyaWRIZWlnaHQpfTsoIXN8fHMuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8cy5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHM9ZCgpKSwoIXJ8fHIuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8ci5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHI9ZCgpKSxjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZXx8KG49MSksZS5wbG90KHMpLmFuaW1hdGUoMSxjLmdsb2JhbHMuZWFzaW5nLG8pLnBsb3QocykuYW5pbWF0ZShuLGMuZ2xvYmFscy5lYXNpbmcsbykucGxvdChyKS5hZnRlckFsbChmdW5jdGlvbigpe1AuaXNOdW1iZXIoaSk/aT09PWMuZ2xvYmFscy5zZXJpZXNbYy5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0yJiZjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmaC5hbmltYXRpb25Db21wbGV0ZWQoZSk6YSE9PVwibm9uZVwiJiZjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKCFjLmdsb2JhbHMuY29tYm9DaGFydHMmJnQ9PT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xfHxjLmdsb2JhbHMuY29tYm9DaGFydHMpJiZoLmFuaW1hdGlvbkNvbXBsZXRlZChlKSxoLnNob3dEZWxheWVkRWxlbWVudHMoKX0pfX1dKSx5fSgpLCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImdldERlZmF1bHRGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztlLnVuZmlsdGVyKCEwKSxuZXcgd2luZG93LlNWRy5GaWx0ZXIoKS5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyIT09XCJub25lXCI/dGhpcy5hcHBseUZpbHRlcihlLHQsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci52YWx1ZSk6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ0aGlzLmRyb3BTaGFkb3coZSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LHQpfX0se2tleTpcImFkZE5vcm1hbEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2kuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmIWUubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSYmdGhpcy5kcm9wU2hhZG93KGUsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyx0KX19LHtrZXk6XCJhZGRMaWdodGVuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTtlLnVuZmlsdGVyKCEwKSxuZXcgd2luZG93LlNWRy5GaWx0ZXIsZS5maWx0ZXIoZnVuY3Rpb24obil7dmFyIG89cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoby5lbmFibGVkP2EuYWRkU2hhZG93KG4sdCxvKTpuKS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6MS41LGludGVyY2VwdDpyfX0pfSksZS5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUoZS5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhZGREYXJrZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPWkuaW50ZW5zaXR5O2UudW5maWx0ZXIoITApLG5ldyB3aW5kb3cuU1ZHLkZpbHRlcixlLmZpbHRlcihmdW5jdGlvbihuKXt2YXIgbz1zLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhvLmVuYWJsZWQ/YS5hZGRTaGFkb3cobix0LG8pOm4pLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6XCJsaW5lYXJcIixzbG9wZTpyfX0pfSksZS5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUoZS5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhcHBseUZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106LjU7c3dpdGNoKGkpe2Nhc2VcIm5vbmVcIjp0aGlzLmFkZE5vcm1hbEZpbHRlcihlLHQpO2JyZWFrO2Nhc2VcImxpZ2h0ZW5cIjp0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIoZSx0LHtpbnRlbnNpdHk6YX0pO2JyZWFrO2Nhc2VcImRhcmtlblwiOnRoaXMuYWRkRGFya2VuRmlsdGVyKGUsdCx7aW50ZW5zaXR5OmF9KX19fSx7a2V5OlwiYWRkU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPWkuYmx1cixzPWkudG9wLHI9aS5sZWZ0LG49aS5jb2xvcixvPWkub3BhY2l0eSxoPWUuZmxvb2QoQXJyYXkuaXNBcnJheShuKT9uW3RdOm4sbykuY29tcG9zaXRlKGUuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocixzKS5nYXVzc2lhbkJsdXIoYSkubWVyZ2UoZS5zb3VyY2UpO3JldHVybiBlLmJsZW5kKGUuc291cmNlLGgpfX0se2tleTpcImRyb3BTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTowLGE9dC50b3Ascz10LmxlZnQscj10LmJsdXIsbj10LmNvbG9yLG89dC5vcGFjaXR5LGg9dC5ub1VzZXJTcGFjZU9uVXNlLGM9dGhpcy53O3JldHVybiBlLnVuZmlsdGVyKCEwKSxQLmlzSUUoKSYmYy5jb25maWcuY2hhcnQudHlwZT09PVwicmFkaWFsQmFyXCJ8fChuPUFycmF5LmlzQXJyYXkobik/bltpXTpuLGUuZmlsdGVyKGZ1bmN0aW9uKGQpe3ZhciBnPW51bGw7Zz1QLmlzU2FmYXJpKCl8fFAuaXNGaXJlZm94KCl8fFAuaXNJRSgpP2QuZmxvb2QobixvKS5jb21wb3NpdGUoZC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChzLGEpLmdhdXNzaWFuQmx1cihyKTpkLmZsb29kKG4sbykuY29tcG9zaXRlKGQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocikubWVyZ2UoZC5zb3VyY2UpLGQuYmxlbmQoZC5zb3VyY2UsZyl9KSxofHxlLmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZShlLmZpbHRlcmVyLm5vZGUpKSxlfX0se2tleTpcInNldFNlbGVjdGlvbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLnc7aWYoYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1t0XSE9PXZvaWQgMCYmYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1t0XS5pbmRleE9mKGkpPi0xKXtlLm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwhMCk7dmFyIHM9YS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7cyE9PVwibm9uZVwiJiZ0aGlzLmFwcGx5RmlsdGVyKGUsdCxzLnR5cGUscy52YWx1ZSl9fX0se2tleTpcIl9zY2FsZUZpbHRlclNpemVcIix2YWx1ZTpmdW5jdGlvbihlKXsoZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmZS5zZXRBdHRyaWJ1dGUoaSx0W2ldKX0pKHt3aWR0aDpcIjIwMCVcIixoZWlnaHQ6XCIyMDAlXCIseDpcIi01MCVcIix5OlwiLTUwJVwifSl9fV0pLHl9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5Olwicm91bmRQYXRoQ29ybmVyc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShTLEMsTCl7dmFyIEk9Qy54LVMueCx6PUMueS1TLnksVD1NYXRoLnNxcnQoSSpJK3oqeik7cmV0dXJuIGEoUyxDLE1hdGgubWluKDEsTC9UKSl9ZnVuY3Rpb24gYShTLEMsTCl7cmV0dXJue3g6Uy54KyhDLngtUy54KSpMLHk6Uy55KyhDLnktUy55KSpMfX1mdW5jdGlvbiBzKFMsQyl7Uy5sZW5ndGg+MiYmKFNbUy5sZW5ndGgtMl09Qy54LFNbUy5sZW5ndGgtMV09Qy55KX1mdW5jdGlvbiByKFMpe3JldHVybnt4OnBhcnNlRmxvYXQoU1tTLmxlbmd0aC0yXSkseTpwYXJzZUZsb2F0KFNbUy5sZW5ndGgtMV0pfX1lLmluZGV4T2YoXCJOYU5cIik+LTEmJihlPVwiXCIpO3ZhciBuPWUuc3BsaXQoL1ssXFxzXS8pLnJlZHVjZShmdW5jdGlvbihTLEMpe3ZhciBMPUMubWF0Y2goXCIoW2EtekEtWl0pKC4rKVwiKTtyZXR1cm4gTD8oUy5wdXNoKExbMV0pLFMucHVzaChMWzJdKSk6Uy5wdXNoKEMpLFN9LFtdKS5yZWR1Y2UoZnVuY3Rpb24oUyxDKXtyZXR1cm4gcGFyc2VGbG9hdChDKT09QyYmUy5sZW5ndGg/U1tTLmxlbmd0aC0xXS5wdXNoKEMpOlMucHVzaChbQ10pLFN9LFtdKSxvPVtdO2lmKG4ubGVuZ3RoPjEpe3ZhciBoPXIoblswXSksYz1udWxsO25bbi5sZW5ndGgtMV1bMF09PVwiWlwiJiZuWzBdLmxlbmd0aD4yJiYoYz1bXCJMXCIsaC54LGgueV0sbltuLmxlbmd0aC0xXT1jKSxvLnB1c2goblswXSk7Zm9yKHZhciBkPTE7ZDxuLmxlbmd0aDtkKyspe3ZhciBnPW9bby5sZW5ndGgtMV0scD1uW2RdLGY9cD09Yz9uWzFdOm5bZCsxXTtpZihmJiZnJiZnLmxlbmd0aD4yJiZwWzBdPT1cIkxcIiYmZi5sZW5ndGg+MiYmZlswXT09XCJMXCIpe3ZhciBiLG0sdz1yKGcpLEE9cihwKSxsPXIoZik7Yj1pKEEsdyx0KSxtPWkoQSxsLHQpLHMocCxiKSxwLm9yaWdQb2ludD1BLG8ucHVzaChwKTt2YXIgdT1hKGIsQSwuNSkseD1hKEEsbSwuNSksdj1bXCJDXCIsdS54LHUueSx4LngseC55LG0ueCxtLnldO3Yub3JpZ1BvaW50PUEsby5wdXNoKHYpfWVsc2Ugby5wdXNoKHApfWlmKGMpe3ZhciBrPXIob1tvLmxlbmd0aC0xXSk7by5wdXNoKFtcIlpcIl0pLHMob1swXSxrKX19ZWxzZSBvPW47cmV0dXJuIG8ucmVkdWNlKGZ1bmN0aW9uKFMsQyl7cmV0dXJuIFMrQy5qb2luKFwiIFwiKStcIiBcIn0sXCJcIil9fSx7a2V5OlwiZHJhd0xpbmVcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06XCIjYThhOGE4XCIscj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06MCxuPWFyZ3VtZW50cy5sZW5ndGg+NiYmYXJndW1lbnRzWzZdIT09dm9pZCAwP2FyZ3VtZW50c1s2XTpudWxsLG89YXJndW1lbnRzLmxlbmd0aD43JiZhcmd1bWVudHNbN10hPT12b2lkIDA/YXJndW1lbnRzWzddOlwiYnV0dFwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubGluZSgpLmF0dHIoe3gxOmUseTE6dCx4MjppLHkyOmEsc3Ryb2tlOnMsXCJzdHJva2UtZGFzaGFycmF5XCI6cixcInN0cm9rZS13aWR0aFwiOm4sXCJzdHJva2UtbGluZWNhcFwiOm99KX19LHtrZXk6XCJkcmF3UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOjAsdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTowLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOjAscz1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06MCxyPWFyZ3VtZW50cy5sZW5ndGg+NSYmYXJndW1lbnRzWzVdIT09dm9pZCAwP2FyZ3VtZW50c1s1XTpcIiNmZWZlZmVcIixuPWFyZ3VtZW50cy5sZW5ndGg+NiYmYXJndW1lbnRzWzZdIT09dm9pZCAwP2FyZ3VtZW50c1s2XToxLG89YXJndW1lbnRzLmxlbmd0aD43JiZhcmd1bWVudHNbN10hPT12b2lkIDA/YXJndW1lbnRzWzddOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjgmJmFyZ3VtZW50c1s4XSE9PXZvaWQgMD9hcmd1bWVudHNbOF06bnVsbCxjPWFyZ3VtZW50cy5sZW5ndGg+OSYmYXJndW1lbnRzWzldIT09dm9pZCAwP2FyZ3VtZW50c1s5XTowLGQ9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnJlY3QoKTtyZXR1cm4gZC5hdHRyKHt4OmUseTp0LHdpZHRoOmk+MD9pOjAsaGVpZ2h0OmE+MD9hOjAscng6cyxyeTpzLG9wYWNpdHk6bixcInN0cm9rZS13aWR0aFwiOm8hPT1udWxsP286MCxzdHJva2U6aCE9PW51bGw/aDpcIm5vbmVcIixcInN0cm9rZS1kYXNoYXJyYXlcIjpjfSksZC5ub2RlLnNldEF0dHJpYnV0ZShcImZpbGxcIixyKSxkfX0se2tleTpcImRyYXdQb2x5Z29uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOlwiI2UxZTFlMVwiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOjEsYT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106XCJub25lXCI7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wb2x5Z29uKGUpLmF0dHIoe2ZpbGw6YSxzdHJva2U6dCxcInN0cm9rZS13aWR0aFwiOml9KX19LHtrZXk6XCJkcmF3Q2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7ZTwwJiYoZT0wKTt2YXIgaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuY2lyY2xlKDIqZSk7cmV0dXJuIHQhPT1udWxsJiZpLmF0dHIodCksaX19LHtrZXk6XCJkcmF3UGF0aFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZCxpPXQ9PT12b2lkIDA/XCJcIjp0LGE9ZS5zdHJva2Uscz1hPT09dm9pZCAwP1wiI2E4YThhOFwiOmEscj1lLnN0cm9rZVdpZHRoLG49cj09PXZvaWQgMD8xOnIsbz1lLmZpbGwsaD1lLmZpbGxPcGFjaXR5LGM9aD09PXZvaWQgMD8xOmgsZD1lLnN0cm9rZU9wYWNpdHksZz1kPT09dm9pZCAwPzE6ZCxwPWUuY2xhc3NlcyxmPWUuc3Ryb2tlTGluZWNhcCxiPWY9PT12b2lkIDA/bnVsbDpmLG09ZS5zdHJva2VEYXNoQXJyYXksdz1tPT09dm9pZCAwPzA6bSxBPXRoaXMudztyZXR1cm4gYj09PW51bGwmJihiPUEuY29uZmlnLnN0cm9rZS5saW5lQ2FwKSwoaS5pbmRleE9mKFwidW5kZWZpbmVkXCIpPi0xfHxpLmluZGV4T2YoXCJOYU5cIik+LTEpJiYoaT1cIk0gMCBcIi5jb25jYXQoQS5nbG9iYWxzLmdyaWRIZWlnaHQpKSxBLmdsb2JhbHMuZG9tLlBhcGVyLnBhdGgoaSkuYXR0cih7ZmlsbDpvLFwiZmlsbC1vcGFjaXR5XCI6YyxzdHJva2U6cyxcInN0cm9rZS1vcGFjaXR5XCI6ZyxcInN0cm9rZS1saW5lY2FwXCI6YixcInN0cm9rZS13aWR0aFwiOm4sXCJzdHJva2UtZGFzaGFycmF5XCI6dyxjbGFzczpwfSl9fSx7a2V5OlwiZ3JvdXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpudWxsLHQ9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmdyb3VwKCk7cmV0dXJuIGUhPT1udWxsJiZ0LmF0dHIoZSksdH19LHtrZXk6XCJtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1bXCJNXCIsZSx0XS5qb2luKFwiIFwiKTtyZXR1cm4gaX19LHtrZXk6XCJsaW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbCxhPW51bGw7cmV0dXJuIGk9PT1udWxsP2E9W1wiIExcIixlLHRdLmpvaW4oXCIgXCIpOmk9PT1cIkhcIj9hPVtcIiBIXCIsZV0uam9pbihcIiBcIik6aT09PVwiVlwiJiYoYT1bXCIgVlwiLHRdLmpvaW4oXCIgXCIpKSxhfX0se2tleTpcImN1cnZlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIpe3ZhciBuPVtcIkNcIixlLHQsaSxhLHMscl0uam9pbihcIiBcIik7cmV0dXJuIG59fSx7a2V5OlwicXVhZHJhdGljQ3VydmVcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXtyZXR1cm5bXCJRXCIsZSx0LGksYV0uam9pbihcIiBcIil9fSx7a2V5OlwiYXJjXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIsbil7dmFyIG89XCJBXCI7YXJndW1lbnRzLmxlbmd0aD43JiZhcmd1bWVudHNbN10hPT12b2lkIDAmJmFyZ3VtZW50c1s3XSYmKG89XCJhXCIpO3ZhciBoPVtvLGUsdCxpLGEscyxyLG5dLmpvaW4oXCIgXCIpO3JldHVybiBofX0se2tleTpcInJlbmRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLmosYT1lLnJlYWxJbmRleCxzPWUucGF0aEZyb20scj1lLnBhdGhUbyxuPWUuc3Ryb2tlLG89ZS5zdHJva2VXaWR0aCxoPWUuc3Ryb2tlTGluZWNhcCxjPWUuZmlsbCxkPWUuYW5pbWF0aW9uRGVsYXksZz1lLmluaXRpYWxTcGVlZCxwPWUuZGF0YUNoYW5nZVNwZWVkLGY9ZS5jbGFzc05hbWUsYj1lLnNob3VsZENsaXBUb0dyaWQsbT1iPT09dm9pZCAwfHxiLHc9ZS5iaW5kRXZlbnRzT25QYXRocyxBPXc9PT12b2lkIDB8fHcsbD1lLmRyYXdTaGFkb3csdT1sPT09dm9pZCAwfHxsLHg9dGhpcy53LHY9bmV3ICQodGhpcy5jdHgpLGs9bmV3IGdlKHRoaXMuY3R4KSxTPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLEM9UyYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCxMPSEhKFMmJiF4Lmdsb2JhbHMucmVzaXplZHx8QyYmeC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZ4Lmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSk7TD90PXM6KHQ9cix4Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApO3ZhciBJPXguY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksej0wO3o9QXJyYXkuaXNBcnJheShJKT9JW2FdOnguY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIFQ9dGhpcy5kcmF3UGF0aCh7ZDp0LHN0cm9rZTpuLHN0cm9rZVdpZHRoOm8sZmlsbDpjLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpmLHN0cm9rZUxpbmVjYXA6aCxzdHJva2VEYXNoQXJyYXk6en0pO2lmKFQuYXR0cihcImluZGV4XCIsYSksbSYmVC5hdHRyKHtcImNsaXAtcGF0aFwiOlwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoeC5nbG9iYWxzLmN1aWQsXCIpXCIpfSkseC5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSE9PVwibm9uZVwiKXYuZ2V0RGVmYXVsdEZpbHRlcihULGEpO2Vsc2UgaWYoeC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ1JiYoIXguY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzfHx4LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcyYmeC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihhKSE9PS0xKSl7dmFyIEU9eC5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzt2LmRyb3BTaGFkb3coVCxFLGEpfUEmJihULm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyxUKSksVC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsVCkpLFQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wYXRoTW91c2VEb3duLmJpbmQodGhpcyxUKSkpLFQuYXR0cih7cGF0aFRvOnIscGF0aEZyb206c30pO3ZhciBSPXtlbDpULGo6aSxyZWFsSW5kZXg6YSxwYXRoRnJvbTpzLHBhdGhUbzpyLGZpbGw6YyxzdHJva2VXaWR0aDpvLGRlbGF5OmR9O3JldHVybiFTfHx4Lmdsb2JhbHMucmVzaXplZHx8eC5nbG9iYWxzLmRhdGFDaGFuZ2VkPyF4Lmdsb2JhbHMucmVzaXplZCYmeC5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxrLnNob3dEZWxheWVkRWxlbWVudHMoKTprLmFuaW1hdGVQYXRoc0dyYWR1YWxseShYKFgoe30sUikse30se3NwZWVkOmd9KSkseC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZDJiZMJiZrLmFuaW1hdGVQYXRoc0dyYWR1YWxseShYKFgoe30sUikse30se3NwZWVkOnB9KSksVH19LHtrZXk6XCJkcmF3UGF0dGVyblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106XCIjYThhOGE4XCIscz1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06MDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBhdHRlcm4odCxpLGZ1bmN0aW9uKHIpe2U9PT1cImhvcml6b250YWxMaW5lc1wiP3IubGluZSgwLDAsaSwwKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6cysxfSk6ZT09PVwidmVydGljYWxMaW5lc1wiP3IubGluZSgwLDAsMCx0KS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6cysxfSk6ZT09PVwic2xhbnRlZExpbmVzXCI/ci5saW5lKDAsMCx0LGkpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSk6ZT09PVwic3F1YXJlc1wiP3IucmVjdCh0LGkpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSk6ZT09PVwiY2lyY2xlc1wiJiZyLmNpcmNsZSh0KS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pfSl9fSx7a2V5OlwiZHJhd0dyYWRpZW50XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGg+NSYmYXJndW1lbnRzWzVdIT09dm9pZCAwP2FyZ3VtZW50c1s1XTpudWxsLG89YXJndW1lbnRzLmxlbmd0aD42JiZhcmd1bWVudHNbNl0hPT12b2lkIDA/YXJndW1lbnRzWzZdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjcmJmFyZ3VtZW50c1s3XSE9PXZvaWQgMD9hcmd1bWVudHNbN106bnVsbCxjPWFyZ3VtZW50cy5sZW5ndGg+OCYmYXJndW1lbnRzWzhdIT09dm9pZCAwP2FyZ3VtZW50c1s4XTowLGQ9dGhpcy53O3QubGVuZ3RoPDkmJnQuaW5kZXhPZihcIiNcIik9PT0wJiYodD1QLmhleFRvUmdiYSh0LGEpKSxpLmxlbmd0aDw5JiZpLmluZGV4T2YoXCIjXCIpPT09MCYmKGk9UC5oZXhUb1JnYmEoaSxzKSk7dmFyIGc9MCxwPTEsZj0xLGI9bnVsbDtvIT09bnVsbCYmKGc9b1swXSE9PXZvaWQgMD9vWzBdLzEwMDowLHA9b1sxXSE9PXZvaWQgMD9vWzFdLzEwMDoxLGY9b1syXSE9PXZvaWQgMD9vWzJdLzEwMDoxLGI9b1szXSE9PXZvaWQgMD9vWzNdLzEwMDpudWxsKTt2YXIgbT0hKGQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImRvbnV0XCImJmQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInBpZVwiJiZkLmNvbmZpZy5jaGFydC50eXBlIT09XCJwb2xhckFyZWFcIiYmZC5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCIpO2lmKHI9aD09PW51bGx8fGgubGVuZ3RoPT09MD9kLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KG0/XCJyYWRpYWxcIjpcImxpbmVhclwiLGZ1bmN0aW9uKGwpe2wuYXQoZyx0LGEpLGwuYXQocCxpLHMpLGwuYXQoZixpLHMpLGIhPT1udWxsJiZsLmF0KGIsdCxhKX0pOmQuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQobT9cInJhZGlhbFwiOlwibGluZWFyXCIsZnVuY3Rpb24obCl7KEFycmF5LmlzQXJyYXkoaFtjXSk/aFtjXTpoKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe2wuYXQodS5vZmZzZXQvMTAwLHUuY29sb3IsdS5vcGFjaXR5KX0pfSksbSl7dmFyIHc9ZC5nbG9iYWxzLmdyaWRXaWR0aC8yLEE9ZC5nbG9iYWxzLmdyaWRIZWlnaHQvMjtkLmNvbmZpZy5jaGFydC50eXBlIT09XCJidWJibGVcIj9yLmF0dHIoe2dyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGN4OncsY3k6QSxyOm59KTpyLmF0dHIoe2N4Oi41LGN5Oi41LHI6LjgsZng6LjIsZnk6LjJ9KX1lbHNlIGU9PT1cInZlcnRpY2FsXCI/ci5mcm9tKDAsMCkudG8oMCwxKTplPT09XCJkaWFnb25hbFwiP3IuZnJvbSgwLDApLnRvKDEsMSk6ZT09PVwiaG9yaXpvbnRhbFwiP3IuZnJvbSgwLDEpLnRvKDEsMSk6ZT09PVwiZGlhZ29uYWwyXCImJnIuZnJvbSgxLDApLnRvKDAsMSk7cmV0dXJuIHJ9fSx7a2V5OlwiZ2V0VGV4dEJhc2VkT25NYXhXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGV4dCxpPWUubWF4V2lkdGgsYT1lLmZvbnRTaXplLHM9ZS5mb250RmFtaWx5LHI9dGhpcy5nZXRUZXh0UmVjdHModCxhLHMpLG49ci53aWR0aC90Lmxlbmd0aCxvPU1hdGguZmxvb3IoaS9uKTtyZXR1cm4gaTxyLndpZHRoP3Quc2xpY2UoMCxvLTMpK1wiLi4uXCI6dH19LHtrZXk6XCJkcmF3VGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLngsYT1lLnkscz1lLnRleHQscj1lLnRleHRBbmNob3Isbj1lLmZvbnRTaXplLG89ZS5mb250RmFtaWx5LGg9ZS5mb250V2VpZ2h0LGM9ZS5mb3JlQ29sb3IsZD1lLm9wYWNpdHksZz1lLm1heFdpZHRoLHA9ZS5jc3NDbGFzcyxmPXA9PT12b2lkIDA/XCJcIjpwLGI9ZS5pc1BsYWluVGV4dCxtPWI9PT12b2lkIDB8fGIsdz1lLmRvbWluYW50QmFzZWxpbmUsQT13PT09dm9pZCAwP1wiYXV0b1wiOncsbD10aGlzLnc7cz09PXZvaWQgMCYmKHM9XCJcIik7dmFyIHU9cztyfHwocj1cInN0YXJ0XCIpLGMmJmMubGVuZ3RofHwoYz1sLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IpLG89b3x8bC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxoPWh8fFwicmVndWxhclwiO3ZhciB4LHY9e21heFdpZHRoOmcsZm9udFNpemU6bj1ufHxcIjExcHhcIixmb250RmFtaWx5Om99O3JldHVybiBBcnJheS5pc0FycmF5KHMpP3g9bC5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KGZ1bmN0aW9uKGspe2Zvcih2YXIgUz0wO1M8cy5sZW5ndGg7UysrKXU9c1tTXSxnJiYodT10LmdldFRleHRCYXNlZE9uTWF4V2lkdGgoWCh7dGV4dDpzW1NdfSx2KSkpLFM9PT0wP2sudHNwYW4odSk6ay50c3Bhbih1KS5uZXdMaW5lKCl9KTooZyYmKHU9dGhpcy5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKFgoe3RleHQ6c30sdikpKSx4PW0/bC5nbG9iYWxzLmRvbS5QYXBlci5wbGFpbihzKTpsLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoZnVuY3Rpb24oayl7cmV0dXJuIGsudHNwYW4odSl9KSkseC5hdHRyKHt4OmkseTphLFwidGV4dC1hbmNob3JcIjpyLFwiZG9taW5hbnQtYmFzZWxpbmVcIjpBLFwiZm9udC1zaXplXCI6bixcImZvbnQtZmFtaWx5XCI6byxcImZvbnQtd2VpZ2h0XCI6aCxmaWxsOmMsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQgXCIrZn0pLHgubm9kZS5zdHlsZS5mb250RmFtaWx5PW8seC5ub2RlLnN0eWxlLm9wYWNpdHk9ZCx4fX0se2tleTpcImRyYXdNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7ZT1lfHwwO3ZhciBhPWkucFNpemV8fDAscz1udWxsO2lmKGkuc2hhcGU9PT1cInNxdWFyZVwifHxpLnNoYXBlPT09XCJyZWN0XCIpe3ZhciByPWkucFJhZGl1cz09PXZvaWQgMD9hLzI6aS5wUmFkaXVzO3QhPT1udWxsJiZhfHwoYT0wLHI9MCk7dmFyIG49MS4yKmErcixvPXRoaXMuZHJhd1JlY3QobixuLG4sbixyKTtvLmF0dHIoe3g6ZS1uLzIseTp0LW4vMixjeDplLGN5OnQsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSxzPW99ZWxzZSBpLnNoYXBlIT09XCJjaXJjbGVcIiYmaS5zaGFwZXx8KFAuaXNOdW1iZXIodCl8fChhPTAsdD0wKSxzPXRoaXMuZHJhd0NpcmNsZShhLHtjeDplLGN5OnQsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSk7cmV0dXJuIHN9fSx7a2V5OlwicGF0aE1vdXNlRW50ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPW5ldyAkKHRoaXMuY3R4KSxzPXBhcnNlSW50KGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludChlLm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7aWYodHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyPT1cImZ1bmN0aW9uXCImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyKHQsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VFbnRlclwiLFt0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLChpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlPT09XCJub25lXCJ8fGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSE9PVwidHJ1ZVwiKSYmaS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlIT09XCJub25lXCImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIG49aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKGUscyxuLnR5cGUsbi52YWx1ZSl9fX0se2tleTpcInBhdGhNb3VzZUxlYXZlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1uZXcgJCh0aGlzLmN0eCkscz1wYXJzZUludChlLm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQoZS5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO3R5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZT09XCJmdW5jdGlvblwiJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZSh0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlTGVhdmVcIixbdCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSxpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlIT09XCJub25lXCImJmUubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKT09PVwidHJ1ZVwifHxpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUhPT1cIm5vbmVcIiYmYS5nZXREZWZhdWx0RmlsdGVyKGUscyl9fSx7a2V5OlwicGF0aE1vdXNlRG93blwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3ICQodGhpcy5jdHgpLHM9cGFyc2VJbnQoZS5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxuPVwiZmFsc2VcIjtpZihlLm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIik9PT1cInRydWVcIil7aWYoZS5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik+LTEpe3ZhciBvPWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKTtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnNwbGljZShvLDEpfX1lbHNle2lmKCFpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmFsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aD4wKXtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzPVtdO3ZhciBoPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGhcIikubWVtYmVycyxjPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIGNpcmNsZSwgLmFwZXhjaGFydHMtc2VyaWVzIHJlY3RcIikubWVtYmVycyxkPWZ1bmN0aW9uKGYpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZixmdW5jdGlvbihiKXtiLm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGEuZ2V0RGVmYXVsdEZpbHRlcihiLHMpfSl9O2QoaCksZChjKX1lLm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcInRydWVcIiksbj1cInRydWVcIixpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdPT09dm9pZCAwJiYoaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXT1bXSksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5wdXNoKHIpfWlmKG49PT1cInRydWVcIil7dmFyIGc9aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7aWYoZyE9PVwibm9uZVwiKWEuYXBwbHlGaWx0ZXIoZSxzLGcudHlwZSxnLnZhbHVlKTtlbHNlIGlmKGkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIhPT1cIm5vbmVcIiYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgcD1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIoZSxzLHAudHlwZSxwLnZhbHVlKX19ZWxzZSBpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlIT09XCJub25lXCImJihpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGU9PT1cIm5vbmVcInx8aS5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/YS5nZXREZWZhdWx0RmlsdGVyKGUscyk6KHA9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcixhLmFwcGx5RmlsdGVyKGUscyxwLnR5cGUscC52YWx1ZSkpKTt0eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbj09XCJmdW5jdGlvblwiJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uKHQsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0JiZ0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50U2VsZWN0aW9uXCIsW3QsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSl9fSx7a2V5Olwicm90YXRlQXJvdW5kQ2VudGVyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUmJnR5cGVvZiBlLmdldEJCb3g9PVwiZnVuY3Rpb25cIiYmKHQ9ZS5nZXRCQm94KCkpLHt4OnQueCt0LndpZHRoLzIseTp0LnkrdC5oZWlnaHQvMn19fSx7a2V5OlwiZ2V0VGV4dFJlY3RzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9IShhcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMCl8fGFyZ3VtZW50c1s0XSxyPXRoaXMudyxuPXRoaXMuZHJhd1RleHQoe3g6LTIwMCx5Oi0yMDAsdGV4dDplLHRleHRBbmNob3I6XCJzdGFydFwiLGZvbnRTaXplOnQsZm9udEZhbWlseTppLGZvcmVDb2xvcjpcIiNmZmZcIixvcGFjaXR5OjB9KTthJiZuLmF0dHIoXCJ0cmFuc2Zvcm1cIixhKSxyLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChuKTt2YXIgbz1uLmJib3goKTtyZXR1cm4gc3x8KG89bi5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxuLnJlbW92ZSgpLHt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodH19fSx7a2V5OlwicGxhY2VUZXh0V2l0aEVsbGlwc2lzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe2lmKHR5cGVvZiBlLmdldENvbXB1dGVkVGV4dExlbmd0aD09XCJmdW5jdGlvblwiJiYoZS50ZXh0Q29udGVudD10LHQubGVuZ3RoPjAmJmUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk+PWkvMS4xKSl7Zm9yKHZhciBhPXQubGVuZ3RoLTM7YT4wO2EtPTMpaWYoZS5nZXRTdWJTdHJpbmdMZW5ndGgoMCxhKTw9aS8xLjEpcmV0dXJuIHZvaWQoZS50ZXh0Q29udGVudD10LnN1YnN0cmluZygwLGEpK1wiLi4uXCIpO2UudGV4dENvbnRlbnQ9XCIuXCJ9fX1dLFt7a2V5Olwic2V0QXR0cnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJmUuc2V0QXR0cmlidXRlKGksdFtpXSl9fV0pLHl9KCkscT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0U3RhY2tlZFNlcmllc1RvdGFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOltdLHQ9dGhpcy53LGk9W107aWYodC5nbG9iYWxzLnNlcmllcy5sZW5ndGg9PT0wKXJldHVybiBpO2Zvcih2YXIgYT0wO2E8dC5nbG9iYWxzLnNlcmllc1t0Lmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPTAscj0wO3I8dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7cisrKXQuZ2xvYmFscy5zZXJpZXNbcl1bYV0hPT12b2lkIDAmJmUuaW5kZXhPZihyKT09PS0xJiYocys9dC5nbG9iYWxzLnNlcmllc1tyXVthXSk7aS5wdXNoKHMpfXJldHVybiBpfX0se2tleTpcImdldFNlcmllc1RvdGFsQnlJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIGU9PT1udWxsP3RoaXMudy5jb25maWcuc2VyaWVzLnJlZHVjZShmdW5jdGlvbih0LGkpe3JldHVybiB0K2l9LDApOnRoaXMudy5nbG9iYWxzLnNlcmllc1tlXS5yZWR1Y2UoZnVuY3Rpb24odCxpKXtyZXR1cm4gdCtpfSwwKX19LHtrZXk6XCJnZXRTdGFja2VkU2VyaWVzVG90YWxzQnlHcm91cHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT1bXTtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBzPVtdO3QuY29uZmlnLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKG4sbyl7YS5pbmRleE9mKG4ubmFtZSk+LTEmJnMucHVzaChvKX0pO3ZhciByPXQuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIHMuaW5kZXhPZihvKT09PS0xP286LTF9KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIG4hPT0tMX0pO2kucHVzaChlLmdldFN0YWNrZWRTZXJpZXNUb3RhbHMocikpfSksaX19LHtrZXk6XCJpc1Nlcmllc051bGxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpudWxsO3JldHVybihlPT09bnVsbD90aGlzLncuY29uZmlnLnNlcmllcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1udWxsfSk6dGhpcy53LmNvbmZpZy5zZXJpZXNbZV0uZGF0YS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1udWxsfSkpLmxlbmd0aD09PTB9fSx7a2V5Olwic2VyaWVzSGF2ZVNhbWVWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzW2VdLmV2ZXJ5KGZ1bmN0aW9uKHQsaSxhKXtyZXR1cm4gdD09PWFbMF19KX19LHtrZXk6XCJnZXRDYXRlZ29yeUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPWUuc2xpY2UoKTtyZXR1cm4gdC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaT1lLm1hcChmdW5jdGlvbihhLHMpe3JldHVybiB0LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKGEtdC5nbG9iYWxzLm1pblgrMSl9KSksaX19LHtrZXk6XCJnZXRMYXJnZXN0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXg9ZS5nbG9iYWxzLnNlcmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkuaW5kZXhPZihNYXRoLm1heC5hcHBseShNYXRoLGUuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSl9fSx7a2V5OlwiZ2V0TGFyZ2VzdE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PTA7cmV0dXJuIGUuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaChmdW5jdGlvbihpKXt0PU1hdGgubWF4KHQsaSl9KSxlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlJiZlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aCYmZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3Q9TWF0aC5tYXgodCxpLnNpemUpfSksdD4wJiYodCs9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KzEpLGUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPXQsdH19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuc2VyaWVzVG90YWxzPWUuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKHQsaSl7dmFyIGE9MDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKWErPXRbc107ZWxzZSBhKz10O3JldHVybiBhfSl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXMubWFwKGZ1bmN0aW9uKGEscyl7Zm9yKHZhciByPTAsbj0wO248YS5sZW5ndGg7bisrKWkuZ2xvYmFscy5zZXJpZXNYW3NdW25dPmUmJmkuZ2xvYmFscy5zZXJpZXNYW3NdW25dPHQmJihyKz1hW25dKTtyZXR1cm4gcn0pfX0se2tleTpcImdldFBlcmNlbnRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuc2VyaWVzUGVyY2VudD1lLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbih0LGkpe3ZhciBhPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspe3ZhciByPWUuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzW3NdLG49MDtyJiYobj0xMDAqdFtzXS9yKSxhLnB1c2gobil9ZWxzZXt2YXIgbz0xMDAqdC9lLmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZShmdW5jdGlvbihoLGMpe3JldHVybiBoK2N9LDApO2EucHVzaChvKX1yZXR1cm4gYX0pfX0se2tleTpcImdldENhbGN1bGF0ZWRSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQsaSxhPXRoaXMudy5nbG9iYWxzLHM9W10scj0wLG49W10sbz0uMSxoPTA7aWYoYS55UmFuZ2U9W10sYS5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBjPTA7YzxhLm1pbllBcnIubGVuZ3RoO2MrKylhLnlSYW5nZS5wdXNoKE1hdGguYWJzKGEubWluWUFycltjXS1hLm1heFlBcnJbY10pKSxuLnB1c2goMCk7ZWxzZSBhLnlSYW5nZS5wdXNoKE1hdGguYWJzKGEubWluWS1hLm1heFkpKTthLnhSYW5nZT1NYXRoLmFicyhhLm1heFgtYS5taW5YKSxhLnpSYW5nZT1NYXRoLmFicyhhLm1heFotYS5taW5aKTtmb3IodmFyIGQ9MDtkPGEueVJhbmdlLmxlbmd0aDtkKyspcy5wdXNoKGEueVJhbmdlW2RdL2EuZ3JpZEhlaWdodCk7aWYodD1hLnhSYW5nZS9hLmdyaWRXaWR0aCxlPWEueVJhbmdlL2EuZ3JpZFdpZHRoLGk9YS54UmFuZ2UvYS5ncmlkSGVpZ2h0LChyPWEuelJhbmdlL2EuZ3JpZEhlaWdodCoxNil8fChyPTEpLGEubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJk1hdGguYWJzKGEubWluWSkhPT0wJiYoYS5oYXNOZWdzPSEwKSxhLmlzTXVsdGlwbGVZQXhpcyl7bj1bXTtmb3IodmFyIGc9MDtnPHMubGVuZ3RoO2crKyluLnB1c2goLWEubWluWUFycltnXS9zW2ddKX1lbHNlIG4ucHVzaCgtYS5taW5ZL3NbMF0pLGEubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJk1hdGguYWJzKGEubWluWSkhPT0wJiYobz0tYS5taW5ZL2UsaD1hLm1pblgvdCk7cmV0dXJue3lSYXRpbzpzLGludmVydGVkWVJhdGlvOmUselJhdGlvOnIseFJhdGlvOnQsaW52ZXJ0ZWRYUmF0aW86aSxiYXNlTGluZUludmVydGVkWTpvLGJhc2VMaW5lWTpuLGJhc2VMaW5lWDpofX19LHtrZXk6XCJnZXRMb2dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzTG9nPWUubWFwKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGkuY29uZmlnLnlheGlzW3NdJiZpLmNvbmZpZy55YXhpc1tzXS5sb2dhcml0aG1pYz9hLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gcj09PW51bGw/bnVsbDp0LmdldExvZ1ZhbChpLmNvbmZpZy55YXhpc1tzXS5sb2dCYXNlLHIscyl9KTphfSksaS5nbG9iYWxzLmludmFsaWRMb2dTY2FsZT9lOmkuZ2xvYmFscy5zZXJpZXNMb2d9fSx7a2V5OlwiZ2V0QmFzZUxvZ1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGgubG9nKGUpfX0se2tleTpcImdldExvZ1ZhbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtpZih0PT09MClyZXR1cm4gMDt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMubWluWUFycltpXT09PTA/LTE6dGhpcy5nZXRCYXNlTG9nKGUsYS5nbG9iYWxzLm1pbllBcnJbaV0pLHI9KGEuZ2xvYmFscy5tYXhZQXJyW2ldPT09MD8wOnRoaXMuZ2V0QmFzZUxvZyhlLGEuZ2xvYmFscy5tYXhZQXJyW2ldKSktcztyZXR1cm4gdDwxP3QvcjoodGhpcy5nZXRCYXNlTG9nKGUsdCktcykvcn19LHtrZXk6XCJnZXRMb2dZUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPXRoaXMudy5nbG9iYWxzO3JldHVybiBhLnlMb2dSYXRpbz1lLnNsaWNlKCksYS5sb2dZUmFuZ2U9YS55UmFuZ2UubWFwKGZ1bmN0aW9uKHMscil7aWYoaS5jb25maWcueWF4aXNbcl0mJnQudy5jb25maWcueWF4aXNbcl0ubG9nYXJpdGhtaWMpe3ZhciBuLG89LU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO3JldHVybiBhLnNlcmllc0xvZy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7Yy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2kuY29uZmlnLnlheGlzW2RdJiZpLmNvbmZpZy55YXhpc1tkXS5sb2dhcml0aG1pYyYmKG89TWF0aC5tYXgoZyxvKSxoPU1hdGgubWluKGcsaCkpfSl9KSxuPU1hdGgucG93KGEueVJhbmdlW3JdLE1hdGguYWJzKGgtbykvYS55UmFuZ2Vbcl0pLGEueUxvZ1JhdGlvW3JdPW4vYS5ncmlkSGVpZ2h0LG59fSksYS5pbnZhbGlkTG9nU2NhbGU/ZS5zbGljZSgpOmEueUxvZ1JhdGlvfX1dLFt7a2V5OlwiY2hlY2tDb21ib1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSExLGk9MCxhPTA7cmV0dXJuIGUubGVuZ3RoJiZlWzBdLnR5cGUhPT12b2lkIDAmJmUuZm9yRWFjaChmdW5jdGlvbihzKXtzLnR5cGUhPT1cImJhclwiJiZzLnR5cGUhPT1cImNvbHVtblwiJiZzLnR5cGUhPT1cImNhbmRsZXN0aWNrXCImJnMudHlwZSE9PVwiYm94UGxvdFwifHxpKysscy50eXBlIT09dm9pZCAwJiZhKyt9KSxhPjAmJih0PSEwKSx7Y29tYm9CYXJDb3VudDppLGNvbWJvQ2hhcnRzOnR9fX0se2tleTpcImV4dGVuZEFycmF5UHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHQueWF4aXMmJih0PWUuZXh0ZW5kWUF4aXModCxpKSksdC5hbm5vdGF0aW9ucyYmKHQuYW5ub3RhdGlvbnMueWF4aXMmJih0PWUuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyh0KSksdC5hbm5vdGF0aW9ucy54YXhpcyYmKHQ9ZS5leHRlbmRYQXhpc0Fubm90YXRpb25zKHQpKSx0LmFubm90YXRpb25zLnBvaW50cyYmKHQ9ZS5leHRlbmRQb2ludEFubm90YXRpb25zKHQpKSksdH19XSkseX0oKSx5ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWV9cmV0dXJuIFkoeSxbe2tleTpcInNldE9yaWVudGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O2lmKGUubGFiZWwub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCIpe3ZhciBhPXQhPT1udWxsP3Q6MCxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIuY29uY2F0KGEsXCInXVwiKSk7aWYocyE9PW51bGwpe3ZhciByPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5zZXRBdHRyaWJ1dGUoXCJ4XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpLXIuaGVpZ2h0KzQpLGUubGFiZWwucG9zaXRpb249PT1cInRvcFwiP3Muc2V0QXR0cmlidXRlKFwieVwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ5XCIpKStyLndpZHRoKTpzLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSktci53aWR0aCk7dmFyIG49dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLnJvdGF0ZUFyb3VuZENlbnRlcihzKSxvPW4ueCxoPW4ueTtzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQobyxcIiBcIikuY29uY2F0KGgsXCIpXCIpKX19fX0se2tleTpcImFkZEJhY2tncm91bmRUb0Fubm9cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztpZighZXx8dC5sYWJlbC50ZXh0PT09dm9pZCAwfHx0LmxhYmVsLnRleHQhPT12b2lkIDAmJiFTdHJpbmcodC5sYWJlbC50ZXh0KS50cmltKCkpcmV0dXJuIG51bGw7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9dC5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbj10LmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQsbz10LmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLGg9dC5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbTt0LmxhYmVsLm9yaWVudGF0aW9uPT09XCJ2ZXJ0aWNhbFwiJiYobz10LmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxoPXQubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxyPXQubGFiZWwuc3R5bGUucGFkZGluZy50b3Asbj10LmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTt2YXIgYz1zLmxlZnQtYS5sZWZ0LXIsZD1zLnRvcC1hLnRvcC1vLGc9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KGMtaS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGQscy53aWR0aCtyK24scy5oZWlnaHQrbytoLHQubGFiZWwuYm9yZGVyUmFkaXVzLHQubGFiZWwuc3R5bGUuYmFja2dyb3VuZCwxLHQubGFiZWwuYm9yZGVyV2lkdGgsdC5sYWJlbC5ib3JkZXJDb2xvciwwKTtyZXR1cm4gdC5pZCYmZy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCksZ319LHtrZXk6XCJhbm5vdGF0aW9uc0JhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT1mdW5jdGlvbihhLHMscil7dmFyIG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChyLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocixcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChzLFwiJ11cIikpO2lmKG4pe3ZhciBvPW4ucGFyZW50Tm9kZSxoPWUuYWRkQmFja2dyb3VuZFRvQW5ubyhuLGEpO2gmJihvLmluc2VydEJlZm9yZShoLm5vZGUsbiksYS5sYWJlbC5tb3VzZUVudGVyJiZoLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixhLmxhYmVsLm1vdXNlRW50ZXIuYmluZChlLGEpKSxhLmxhYmVsLm1vdXNlTGVhdmUmJmgubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGEubGFiZWwubW91c2VMZWF2ZS5iaW5kKGUsYSkpLGEubGFiZWwuY2xpY2smJmgubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixhLmxhYmVsLmNsaWNrLmJpbmQoZSxhKSkpfX07dC5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKGZ1bmN0aW9uKGEscyl7aShhLHMsXCJ4YXhpc1wiKX0pLHQuY29uZmlnLmFubm90YXRpb25zLnlheGlzLm1hcChmdW5jdGlvbihhLHMpe2koYSxzLFwieWF4aXNcIil9KSx0LmNvbmZpZy5hbm5vdGF0aW9ucy5wb2ludHMubWFwKGZ1bmN0aW9uKGEscyl7aShhLHMsXCJwb2ludFwiKX0pfX0se2tleTpcImdldFkxWTJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpLGE9ZT09PVwieTFcIj90Lnk6dC55MixzPXRoaXMudztpZih0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyl7dmFyIHI9cy5nbG9iYWxzLmxhYmVscy5pbmRleE9mKGEpO3MuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHI9cy5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YoYSkpO3ZhciBuPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhyKzEpK1wiKVwiKTtuJiYoaT1wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKFwieVwiKSkpLHQuc2VyaWVzSW5kZXghPT12b2lkIDAmJnMuZ2xvYmFscy5iYXJIZWlnaHQmJihpPWktcy5nbG9iYWxzLmJhckhlaWdodC8yKihzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xKStzLmdsb2JhbHMuYmFySGVpZ2h0KnQuc2VyaWVzSW5kZXgpfWVsc2V7dmFyIG87cy5jb25maWcueWF4aXNbdC55QXhpc0luZGV4XS5sb2dhcml0aG1pYz9vPShhPW5ldyBxKHRoaXMuYW5ub0N0eC5jdHgpLmdldExvZ1ZhbChhLHQueUF4aXNJbmRleCkpL3MuZ2xvYmFscy55TG9nUmF0aW9bdC55QXhpc0luZGV4XTpvPShhLXMuZ2xvYmFscy5taW5ZQXJyW3QueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW3QueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpLGk9cy5nbG9iYWxzLmdyaWRIZWlnaHQtbywhdC5tYXJrZXJ8fHQueSE9PXZvaWQgMCYmdC55IT09bnVsbHx8KGk9MCkscy5jb25maWcueWF4aXNbdC55QXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbdC55QXhpc0luZGV4XS5yZXZlcnNlZCYmKGk9byl9cmV0dXJuIHR5cGVvZiBhPT1cInN0cmluZ1wiJiZhLmluZGV4T2YoXCJweFwiKT4tMSYmKGk9cGFyc2VGbG9hdChhKSksaX19LHtrZXk6XCJnZXRYMVgyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYLHI9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLnlSYW5nZVswXTppLmdsb2JhbHMueFJhbmdlLG49KHQueC1hKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKTt0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihuPShzLXQueCkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCkpLGkuY29uZmlnLnhheGlzLnR5cGUhPT1cImNhdGVnb3J5XCImJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzfHxpLmdsb2JhbHMuZGF0YUZvcm1hdFhOdW1lcmljfHwobj10aGlzLmdldFN0cmluZ1godC54KSk7dmFyIG89KHQueDItYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7cmV0dXJuIHRoaXMuYW5ub0N0eC5pbnZlcnNlZFJldmVyc2VkQXhpcyYmKG89KHMtdC54MikvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCkpLGkuY29uZmlnLnhheGlzLnR5cGUhPT1cImNhdGVnb3J5XCImJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzfHxpLmdsb2JhbHMuZGF0YUZvcm1hdFhOdW1lcmljfHwobz10aGlzLmdldFN0cmluZ1godC54MikpLHQueCE9PXZvaWQgMCYmdC54IT09bnVsbHx8IXQubWFya2VyfHwobj1pLmdsb2JhbHMuZ3JpZFdpZHRoKSxlPT09XCJ4MVwiJiZ0eXBlb2YgdC54PT1cInN0cmluZ1wiJiZ0LnguaW5kZXhPZihcInB4XCIpPi0xJiYobj1wYXJzZUZsb2F0KHQueCkpLGU9PT1cIngyXCImJnR5cGVvZiB0LngyPT1cInN0cmluZ1wiJiZ0LngyLmluZGV4T2YoXCJweFwiKT4tMSYmKG89cGFyc2VGbG9hdCh0LngyKSksdC5zZXJpZXNJbmRleCE9PXZvaWQgMCYmaS5nbG9iYWxzLmJhcldpZHRoJiYhdGhpcy5hbm5vQ3R4LmludmVydEF4aXMmJihuPW4taS5nbG9iYWxzLmJhcldpZHRoLzIqKGkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTEpK2kuZ2xvYmFscy5iYXJXaWR0aCp0LnNlcmllc0luZGV4KSxlPT09XCJ4MVwiP246b319LHtrZXk6XCJnZXRTdHJpbmdYXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9ZTt0LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnQuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJihlPXQuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGUpKzEpO3ZhciBhPXQuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihlKSxzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhhKzEpK1wiKVwiKTtyZXR1cm4gcyYmKGk9cGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpKSxpfX1dKSx5fSgpLE5lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmludmVydEF4aXM9dGhpcy5hbm5vQ3R4LmludmVydEF4aXMsdGhpcy5oZWxwZXJzPW5ldyB5ZSh0aGlzLmFubm9DdHgpfXJldHVybiBZKHksW3trZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGEscz10aGlzLncscj10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsZSksbj1lLmxhYmVsLnRleHQsbz1lLnN0cm9rZURhc2hBcnJheTtpZihQLmlzTnVtYmVyKHIpKXtpZihlLngyPT09bnVsbHx8ZS54Mj09PXZvaWQgMCl7dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKHIrZS5vZmZzZXRYLDArZS5vZmZzZXRZLHIrZS5vZmZzZXRYLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K2Uub2Zmc2V0WSxlLmJvcmRlckNvbG9yLG8sZS5ib3JkZXJXaWR0aCk7dC5hcHBlbmRDaGlsZChoLm5vZGUpLGUuaWQmJmgubm9kZS5jbGFzc0xpc3QuYWRkKGUuaWQpfWVsc2V7aWYoKGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MlwiLGUpKTxyKXt2YXIgYz1yO3I9YSxhPWN9dmFyIGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KHIrZS5vZmZzZXRYLDArZS5vZmZzZXRZLGEtcixzLmdsb2JhbHMuZ3JpZEhlaWdodCtlLm9mZnNldFksMCxlLmZpbGxDb2xvcixlLm9wYWNpdHksMSxlLmJvcmRlckNvbG9yLG8pO2Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksZC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLHQuYXBwZW5kQ2hpbGQoZC5ub2RlKSxlLmlkJiZkLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKX12YXIgZz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ2V0VGV4dFJlY3RzKG4scGFyc2VGbG9hdChlLmxhYmVsLnN0eWxlLmZvbnRTaXplKSkscD1lLmxhYmVsLnBvc2l0aW9uPT09XCJ0b3BcIj80OmUubGFiZWwucG9zaXRpb249PT1cImNlbnRlclwiP3MuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrKGUubGFiZWwub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCI/Zy53aWR0aC8yOjApOnMuZ2xvYmFscy5ncmlkSGVpZ2h0LGY9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OnIrZS5sYWJlbC5vZmZzZXRYLHk6cCtlLmxhYmVsLm9mZnNldFktKGUubGFiZWwub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCI/ZS5sYWJlbC5wb3NpdGlvbj09PVwidG9wXCI/Zy53aWR0aC8yLTEyOi1nLndpZHRoLzI6MCksdGV4dDpuLHRleHRBbmNob3I6ZS5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOmUubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmUubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KGUubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdChlLmlkP2UuaWQ6XCJcIil9KTtmLmF0dHIoe3JlbDppfSksdC5hcHBlbmRDaGlsZChmLm5vZGUpLHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyhlLGkpfX19LHtrZXk6XCJkcmF3WEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gdC5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKGZ1bmN0aW9uKGEscyl7ZS5hZGRYYXhpc0Fubm90YXRpb24oYSxpLm5vZGUscyl9KSxpfX1dKSx5fSgpLFdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHllKHRoaXMuYW5ub0N0eCl9cmV0dXJuIFkoeSxbe2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxzPXRoaXMudyxyPWUuc3Ryb2tlRGFzaEFycmF5LG49dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLGUpLG89ZS5sYWJlbC50ZXh0O2lmKGUueTI9PT1udWxsfHxlLnkyPT09dm9pZCAwKXt2YXIgaD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUoMCtlLm9mZnNldFgsbitlLm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgoZSksbitlLm9mZnNldFksZS5ib3JkZXJDb2xvcixyLGUuYm9yZGVyV2lkdGgpO3QuYXBwZW5kQ2hpbGQoaC5ub2RlKSxlLmlkJiZoLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTJcIixlKSk+bil7dmFyIGM9bjtuPWEsYT1jfXZhciBkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdCgwK2Uub2Zmc2V0WCxhK2Uub2Zmc2V0WSx0aGlzLl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aChlKSxuLWEsMCxlLmZpbGxDb2xvcixlLm9wYWNpdHksMSxlLmJvcmRlckNvbG9yLHIpO2Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksZC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLHQuYXBwZW5kQ2hpbGQoZC5ub2RlKSxlLmlkJiZkLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKX12YXIgZz1lLmxhYmVsLnBvc2l0aW9uPT09XCJyaWdodFwiP3MuZ2xvYmFscy5ncmlkV2lkdGg6ZS5sYWJlbC5wb3NpdGlvbj09PVwiY2VudGVyXCI/cy5nbG9iYWxzLmdyaWRXaWR0aC8yOjAscD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6ZytlLmxhYmVsLm9mZnNldFgseTooYT8/bikrZS5sYWJlbC5vZmZzZXRZLTMsdGV4dDpvLHRleHRBbmNob3I6ZS5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOmUubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmUubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KGUubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdChlLmlkP2UuaWQ6XCJcIil9KTtwLmF0dHIoe3JlbDppfSksdC5hcHBlbmRDaGlsZChwLm5vZGUpfX0se2tleTpcIl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztyZXR1cm4gdC5nbG9iYWxzLmdyaWRXaWR0aCwoZS53aWR0aC5pbmRleE9mKFwiJVwiKT4tMT90Lmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KGUud2lkdGgsMTApLzEwMDpwYXJzZUludChlLndpZHRoLDEwKSkrZS5vZmZzZXRYfX0se2tleTpcImRyYXdZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnNcIn0pO3JldHVybiB0LmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoZnVuY3Rpb24oYSxzKXtlLmFkZFlheGlzQW5ub3RhdGlvbihhLGkubm9kZSxzKX0pLGl9fV0pLHl9KCksZmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaGVscGVycz1uZXcgeWUodGhpcy5hbm5vQ3R4KX1yZXR1cm4gWSh5LFt7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3RoaXMudzt2YXIgYT10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsZSkscz10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkxXCIsZSk7aWYoUC5pc051bWJlcihhKSl7dmFyIHI9e3BTaXplOmUubWFya2VyLnNpemUscG9pbnRTdHJva2VXaWR0aDplLm1hcmtlci5zdHJva2VXaWR0aCxwb2ludEZpbGxDb2xvcjplLm1hcmtlci5maWxsQ29sb3IscG9pbnRTdHJva2VDb2xvcjplLm1hcmtlci5zdHJva2VDb2xvcixzaGFwZTplLm1hcmtlci5zaGFwZSxwUmFkaXVzOmUubWFya2VyLnJhZGl1cyxjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1tYXJrZXIgXCIuY29uY2F0KGUubWFya2VyLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQoZS5pZD9lLmlkOlwiXCIpfSxuPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TWFya2VyKGErZS5tYXJrZXIub2Zmc2V0WCxzK2UubWFya2VyLm9mZnNldFkscik7dC5hcHBlbmRDaGlsZChuLm5vZGUpO3ZhciBvPWUubGFiZWwudGV4dD9lLmxhYmVsLnRleHQ6XCJcIixoPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDphK2UubGFiZWwub2Zmc2V0WCx5OnMrZS5sYWJlbC5vZmZzZXRZLWUubWFya2VyLnNpemUtcGFyc2VGbG9hdChlLmxhYmVsLnN0eWxlLmZvbnRTaXplKS8xLjYsdGV4dDpvLHRleHRBbmNob3I6ZS5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOmUubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmUubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KGUubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdChlLmlkP2UuaWQ6XCJcIil9KTtpZihoLmF0dHIoe3JlbDppfSksdC5hcHBlbmRDaGlsZChoLm5vZGUpLGUuY3VzdG9tU1ZHLlNWRyl7dmFyIGM9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMtY3VzdG9tLXN2ZyBcIitlLmN1c3RvbVNWRy5jc3NDbGFzc30pO2MuYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChhK2UuY3VzdG9tU1ZHLm9mZnNldFgsXCIsIFwiKS5jb25jYXQocytlLmN1c3RvbVNWRy5vZmZzZXRZLFwiKVwiKX0pLGMubm9kZS5pbm5lckhUTUw9ZS5jdXN0b21TVkcuU1ZHLHQuYXBwZW5kQ2hpbGQoYy5ub2RlKX1pZihlLmltYWdlLnBhdGgpe3ZhciBkPWUuaW1hZ2Uud2lkdGg/ZS5pbWFnZS53aWR0aDoyMCxnPWUuaW1hZ2UuaGVpZ2h0P2UuaW1hZ2UuaGVpZ2h0OjIwO249dGhpcy5hbm5vQ3R4LmFkZEltYWdlKHt4OmErZS5pbWFnZS5vZmZzZXRYLWQvMix5OnMrZS5pbWFnZS5vZmZzZXRZLWcvMix3aWR0aDpkLGhlaWdodDpnLHBhdGg6ZS5pbWFnZS5wYXRoLGFwcGVuZFRvOlwiLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIn0pfWUubW91c2VFbnRlciYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZS5tb3VzZUVudGVyLmJpbmQodGhpcyxlKSksZS5tb3VzZUxlYXZlJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixlLm1vdXNlTGVhdmUuYmluZCh0aGlzLGUpKSxlLmNsaWNrJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jbGljay5iaW5kKHRoaXMsZSkpfX19LHtrZXk6XCJkcmF3UG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KTtyZXR1cm4gdC5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcChmdW5jdGlvbihhLHMpe2UuYWRkUG9pbnRBbm5vdGF0aW9uKGEsaS5ub2RlLHMpfSksaX19XSkseX0oKSxIPXtuYW1lOlwiZW5cIixvcHRpb25zOnttb250aHM6W1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLHNob3J0TW9udGhzOltcIkphblwiLFwiRmViXCIsXCJNYXJcIixcIkFwclwiLFwiTWF5XCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9jdFwiLFwiTm92XCIsXCJEZWNcIl0sZGF5czpbXCJTdW5kYXlcIixcIk1vbmRheVwiLFwiVHVlc2RheVwiLFwiV2VkbmVzZGF5XCIsXCJUaHVyc2RheVwiLFwiRnJpZGF5XCIsXCJTYXR1cmRheVwiXSxzaG9ydERheXM6W1wiU3VuXCIsXCJNb25cIixcIlR1ZVwiLFwiV2VkXCIsXCJUaHVcIixcIkZyaVwiLFwiU2F0XCJdLHRvb2xiYXI6e2V4cG9ydFRvU1ZHOlwiRG93bmxvYWQgU1ZHXCIsZXhwb3J0VG9QTkc6XCJEb3dubG9hZCBQTkdcIixleHBvcnRUb0NTVjpcIkRvd25sb2FkIENTVlwiLG1lbnU6XCJNZW51XCIsc2VsZWN0aW9uOlwiU2VsZWN0aW9uXCIsc2VsZWN0aW9uWm9vbTpcIlNlbGVjdGlvbiBab29tXCIsem9vbUluOlwiWm9vbSBJblwiLHpvb21PdXQ6XCJab29tIE91dFwiLHBhbjpcIlBhbm5pbmdcIixyZXNldDpcIlJlc2V0IFpvb21cIn19fSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe0YodGhpcyx5KSx0aGlzLnlBeGlzPXtzaG93OiEwLHNob3dBbHdheXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2VyaWVzTmFtZTp2b2lkIDAsb3Bwb3NpdGU6ITEscmV2ZXJzZWQ6ITEsbG9nYXJpdGhtaWM6ITEsbG9nQmFzZToxMCx0aWNrQW1vdW50OnZvaWQgMCxzdGVwU2l6ZTp2b2lkIDAsZm9yY2VOaWNlU2NhbGU6ITEsbWF4OnZvaWQgMCxtaW46dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAsbGFiZWxzOntzaG93OiEwLG1pbldpZHRoOjAsbWF4V2lkdGg6MTYwLG9mZnNldFg6MCxvZmZzZXRZOjAsYWxpZ246dm9pZCAwLHJvdGF0ZTowLHBhZGRpbmc6MjAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxmb3JtYXR0ZXI6dm9pZCAwfSxheGlzQm9yZGVyOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTotOTAsb2Zmc2V0WTowLG9mZnNldFg6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSx0b29sdGlwOntlbmFibGVkOiExLG9mZnNldFg6MH0sY3Jvc3NoYWlyczp7c2hvdzohMCxwb3NpdGlvbjpcImZyb250XCIsc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTowfX19LHRoaXMucG9pbnRBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHk6bnVsbCx5QXhpc0luZGV4OjAsc2VyaWVzSW5kZXg6dm9pZCAwLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxtYXJrZXI6e3NpemU6NCxmaWxsQ29sb3I6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjpcIiMzMzNcIixzaGFwZTpcImNpcmNsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAscmFkaXVzOjIsY3NzQ2xhc3M6XCJcIn0sbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19LGN1c3RvbVNWRzp7U1ZHOnZvaWQgMCxjc3NDbGFzczp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MH0saW1hZ2U6e3BhdGg6dm9pZCAwLHdpZHRoOjIwLGhlaWdodDoyMCxvZmZzZXRYOjAsb2Zmc2V0WTowfX0sdGhpcy55QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx5OjAseTI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6XCIxMDAlXCIseUF4aXNJbmRleDowLGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJlbmRcIixwb3NpdGlvbjpcInJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6LTMsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnhBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx4MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLG9wYWNpdHk6LjMsb2Zmc2V0WDowLG9mZnNldFk6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsb3JpZW50YXRpb246XCJ2ZXJ0aWNhbFwiLHBvc2l0aW9uOlwidG9wXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMudGV4dD17eDowLHk6MCx0ZXh0OlwiXCIsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9yZUNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEzcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJSYWRpdXM6MCxib3JkZXJXaWR0aDowLHBhZGRpbmdMZWZ0OjQscGFkZGluZ1JpZ2h0OjQscGFkZGluZ1RvcDoyLHBhZGRpbmdCb3R0b206Mn19cmV0dXJuIFkoeSxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnthbm5vdGF0aW9uczp7eWF4aXM6W3RoaXMueUF4aXNBbm5vdGF0aW9uXSx4YXhpczpbdGhpcy54QXhpc0Fubm90YXRpb25dLHBvaW50czpbdGhpcy5wb2ludEFubm90YXRpb25dLHRleHRzOltdLGltYWdlczpbXSxzaGFwZXM6W119LGNoYXJ0OnthbmltYXRpb25zOntlbmFibGVkOiEwLGVhc2luZzpcImVhc2Vpbm91dFwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsb2NhbGVzOltIXSxkZWZhdWx0TG9jYWxlOlwiZW5cIixkcm9wU2hhZG93OntlbmFibGVkOiExLGVuYWJsZWRPblNlcmllczp2b2lkIDAsdG9wOjIsbGVmdDoyLGJsdXI6NCxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi4zNX0sZXZlbnRzOnthbmltYXRpb25FbmQ6dm9pZCAwLGJlZm9yZU1vdW50OnZvaWQgMCxtb3VudGVkOnZvaWQgMCx1cGRhdGVkOnZvaWQgMCxjbGljazp2b2lkIDAsbW91c2VNb3ZlOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCx4QXhpc0xhYmVsQ2xpY2s6dm9pZCAwLGxlZ2VuZENsaWNrOnZvaWQgMCxtYXJrZXJDbGljazp2b2lkIDAsc2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRTZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludE1vdXNlRW50ZXI6dm9pZCAwLGRhdGFQb2ludE1vdXNlTGVhdmU6dm9pZCAwLGJlZm9yZVpvb206dm9pZCAwLGJlZm9yZVJlc2V0Wm9vbTp2b2lkIDAsem9vbWVkOnZvaWQgMCxzY3JvbGxlZDp2b2lkIDAsYnJ1c2hTY3JvbGxlZDp2b2lkIDB9LGZvcmVDb2xvcjpcIiMzNzNkM2ZcIixmb250RmFtaWx5OlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLGhlaWdodDpcImF1dG9cIixwYXJlbnRIZWlnaHRPZmZzZXQ6MTUscmVkcmF3T25QYXJlbnRSZXNpemU6ITAscmVkcmF3T25XaW5kb3dSZXNpemU6ITAsaWQ6dm9pZCAwLGdyb3VwOnZvaWQgMCxub25jZTp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzZWxlY3Rpb246e2VuYWJsZWQ6ITEsdHlwZTpcInhcIixmaWxsOntjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi4xfSxzdHJva2U6e3dpZHRoOjEsY29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouNCxkYXNoQXJyYXk6M30seGF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH0seWF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHNwYXJrbGluZTp7ZW5hYmxlZDohMX0sYnJ1c2g6e2VuYWJsZWQ6ITEsYXV0b1NjYWxlWWF4aXM6ITAsdGFyZ2V0OnZvaWQgMCx0YXJnZXRzOnZvaWQgMH0sc3RhY2tlZDohMSxzdGFja09ubHlCYXI6ITAsc3RhY2tUeXBlOlwibm9ybWFsXCIsdG9vbGJhcjp7c2hvdzohMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHRvb2xzOntkb3dubG9hZDohMCxzZWxlY3Rpb246ITAsem9vbTohMCx6b29taW46ITAsem9vbW91dDohMCxwYW46ITAscmVzZXQ6ITAsY3VzdG9tSWNvbnM6W119LGV4cG9ydDp7Y3N2OntmaWxlbmFtZTp2b2lkIDAsY29sdW1uRGVsaW1pdGVyOlwiLFwiLGhlYWRlckNhdGVnb3J5OlwiY2F0ZWdvcnlcIixoZWFkZXJWYWx1ZTpcInZhbHVlXCIsZGF0ZUZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUoZSkudG9EYXRlU3RyaW5nKCl9fSxwbmc6e2ZpbGVuYW1lOnZvaWQgMH0sc3ZnOntmaWxlbmFtZTp2b2lkIDB9fSxhdXRvU2VsZWN0ZWQ6XCJ6b29tXCJ9LHR5cGU6XCJsaW5lXCIsd2lkdGg6XCIxMDAlXCIsem9vbTp7ZW5hYmxlZDohMCx0eXBlOlwieFwiLGF1dG9TY2FsZVlheGlzOiExLHpvb21lZEFyZWE6e2ZpbGw6e2NvbG9yOlwiIzkwQ0FGOVwiLG9wYWNpdHk6LjR9LHN0cm9rZTp7Y29sb3I6XCIjMEQ0N0ExXCIsb3BhY2l0eTouNCx3aWR0aDoxfX19fSxwbG90T3B0aW9uczp7YXJlYTp7ZmlsbFRvOlwib3JpZ2luXCJ9LGJhcjp7aG9yaXpvbnRhbDohMSxjb2x1bW5XaWR0aDpcIjcwJVwiLGJhckhlaWdodDpcIjcwJVwiLGRpc3RyaWJ1dGVkOiExLGJvcmRlclJhZGl1czowLGJvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiYXJvdW5kXCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6XCJsYXN0XCIscmFuZ2VCYXJPdmVybGFwOiEwLHJhbmdlQmFyR3JvdXBSb3dzOiExLGhpZGVaZXJvQmFyc1doZW5Hcm91cGVkOiExLGlzRHVtYmJlbGw6ITEsZHVtYmJlbGxDb2xvcnM6dm9pZCAwLGlzRnVubmVsOiExLGlzRnVubmVsM2Q6ITAsY29sb3JzOntyYW5nZXM6W10sYmFja2dyb3VuZEJhckNvbG9yczpbXSxiYWNrZ3JvdW5kQmFyT3BhY2l0eToxLGJhY2tncm91bmRCYXJSYWRpdXM6MH0sZGF0YUxhYmVsczp7cG9zaXRpb246XCJ0b3BcIixtYXhJdGVtczoxMDAsaGlkZU92ZXJmbG93aW5nTGFiZWxzOiEwLG9yaWVudGF0aW9uOlwiaG9yaXpvbnRhbFwiLHRvdGFsOntlbmFibGVkOiExLGZvcm1hdHRlcjp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6XCIjMzczZDNmXCIsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDB9fX19LGJ1YmJsZTp7elNjYWxpbmc6ITAsbWluQnViYmxlUmFkaXVzOnZvaWQgMCxtYXhCdWJibGVSYWRpdXM6dm9pZCAwfSxjYW5kbGVzdGljazp7Y29sb3JzOnt1cHdhcmQ6XCIjMDBCNzQ2XCIsZG93bndhcmQ6XCIjRUY0MDNDXCJ9LHdpY2s6e3VzZUZpbGxDb2xvcjohMH19LGJveFBsb3Q6e2NvbG9yczp7dXBwZXI6XCIjMDBFMzk2XCIsbG93ZXI6XCIjMDA4RkZCXCJ9fSxoZWF0bWFwOntyYWRpdXM6MixlbmFibGVTaGFkZXM6ITAsc2hhZGVJbnRlbnNpdHk6LjUscmV2ZXJzZU5lZ2F0aXZlU2hhZGU6ITEsZGlzdHJpYnV0ZWQ6ITEsdXNlRmlsbENvbG9yQXNTdHJva2U6ITEsY29sb3JTY2FsZTp7aW52ZXJzZTohMSxyYW5nZXM6W10sbWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sdHJlZW1hcDp7ZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LGRpc3RyaWJ1dGVkOiExLHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGJvcmRlclJhZGl1czo0LGRhdGFMYWJlbHM6e2Zvcm1hdDpcInNjYWxlXCJ9LGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHJhZGlhbEJhcjp7aW52ZXJzZU9yZGVyOiExLHN0YXJ0QW5nbGU6MCxlbmRBbmdsZTozNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxob2xsb3c6e21hcmdpbjo1LHNpemU6XCI1MCVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixpbWFnZTp2b2lkIDAsaW1hZ2VXaWR0aDoxNTAsaW1hZ2VIZWlnaHQ6MTUwLGltYWdlT2Zmc2V0WDowLGltYWdlT2Zmc2V0WTowLGltYWdlQ2xpcHBlZDohMCxwb3NpdGlvbjpcImZyb250XCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSx0cmFjazp7c2hvdzohMCxzdGFydEFuZ2xlOnZvaWQgMCxlbmRBbmdsZTp2b2lkIDAsYmFja2dyb3VuZDpcIiNmMmYyZjJcIixzdHJva2VXaWR0aDpcIjk3JVwiLG9wYWNpdHk6MSxtYXJnaW46NSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDowLGxlZnQ6MCxibHVyOjMsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNX19LGRhdGFMYWJlbHM6e3Nob3c6ITAsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTowLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjE2LGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZStcIiVcIn19LHRvdGFsOntzaG93OiExLGxhYmVsOlwiVG90YWxcIixmb250U2l6ZTpcIjE2cHhcIixmb250V2VpZ2h0OjYwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZShmdW5jdGlvbih0LGkpe3JldHVybiB0K2l9LDApL2UuZ2xvYmFscy5zZXJpZXMubGVuZ3RoK1wiJVwifX19LGJhckxhYmVsczp7ZW5hYmxlZDohMSxtYXJnaW46NSx1c2VTZXJpZXNDb2xvcnM6ITAsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsZm9udFNpemU6XCIxNnB4XCIsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxvbkNsaWNrOnZvaWQgMH19LHBpZTp7Y3VzdG9tU2NhbGU6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0YXJ0QW5nbGU6MCxlbmRBbmdsZTozNjAsZXhwYW5kT25DbGljazohMCxkYXRhTGFiZWxzOntvZmZzZXQ6MCxtaW5BbmdsZVRvU2hvd0xhYmVsOjEwfSxkb251dDp7c2l6ZTpcIjY1JVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGxhYmVsczp7c2hvdzohMSxuYW1lOntzaG93OiEwLGZvbnRTaXplOlwiMTZweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOi0xMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjIwcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSx0b3RhbDp7c2hvdzohMSxzaG93QWx3YXlzOiExLGxhYmVsOlwiVG90YWxcIixmb250U2l6ZTpcIjE2cHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZShmdW5jdGlvbih0LGkpe3JldHVybiB0K2l9LDApfX19fX0scG9sYXJBcmVhOntyaW5nczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcjpcIiNlOGU4ZThcIn0sc3Bva2VzOntzdHJva2VXaWR0aDoxLGNvbm5lY3RvckNvbG9yczpcIiNlOGU4ZThcIn19LHJhZGFyOntzaXplOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHBvbHlnb25zOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiNlOGU4ZThcIixjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCIsZmlsbDp7Y29sb3JzOnZvaWQgMH19fX0sY29sb3JzOnZvaWQgMCxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlIT09bnVsbD9lOlwiXCJ9LHRleHRBbmNob3I6XCJtaWRkbGVcIixkaXN0cmlidXRlZDohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6dm9pZCAwfSxiYWNrZ3JvdW5kOntlbmFibGVkOiEwLGZvcmVDb2xvcjpcIiNmZmZcIixib3JkZXJSYWRpdXM6MixwYWRkaW5nOjQsb3BhY2l0eTouOSxib3JkZXJXaWR0aDoxLGJvcmRlckNvbG9yOlwiI2ZmZlwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX0saW1hZ2U6e3NyYzpbXSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMH0scGF0dGVybjp7c3R5bGU6XCJzcXVhcmVzXCIsd2lkdGg6NixoZWlnaHQ6NixzdHJva2VXaWR0aDoyfX0sZm9yZWNhc3REYXRhUG9pbnRzOntjb3VudDowLGZpbGxPcGFjaXR5Oi41LHN0cm9rZVdpZHRoOnZvaWQgMCxkYXNoQXJyYXk6NH0sZ3JpZDp7c2hvdzohMCxib3JkZXJDb2xvcjpcIiNlMGUwZTBcIixzdHJva2VEYXNoQXJyYXk6MCxwb3NpdGlvbjpcImJhY2tcIix4YXhpczp7bGluZXM6e3Nob3c6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITB9fSxyb3c6e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0sY29sdW1uOntjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LHBhZGRpbmc6e3RvcDowLHJpZ2h0OjEwLGJvdHRvbTowLGxlZnQ6MTJ9fSxsYWJlbHM6W10sbGVnZW5kOntzaG93OiEwLHNob3dGb3JTaW5nbGVTZXJpZXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2hvd0Zvclplcm9TZXJpZXM6ITAsZmxvYXRpbmc6ITEscG9zaXRpb246XCJib3R0b21cIixob3Jpem9udGFsQWxpZ246XCJjZW50ZXJcIixpbnZlcnNlT3JkZXI6ITEsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCx0b29sdGlwSG92ZXJGb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6NCxjdXN0b21MZWdlbmRJdGVtczpbXSxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxmaWxsQ29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcjpcIiNmZmZcIixyYWRpdXM6MTIsY3VzdG9tSFRNTDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMH0saXRlbU1hcmdpbjp7aG9yaXpvbnRhbDo1LHZlcnRpY2FsOjJ9LG9uSXRlbUNsaWNrOnt0b2dnbGVEYXRhU2VyaWVzOiEwfSxvbkl0ZW1Ib3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMH19LG1hcmtlcnM6e2Rpc2NyZXRlOltdLHNpemU6MCxjb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yczpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZU9wYWNpdHk6Ljksc3Ryb2tlRGFzaEFycmF5OjAsZmlsbE9wYWNpdHk6MSxzaGFwZTpcImNpcmNsZVwiLHdpZHRoOjgsaGVpZ2h0OjgscmFkaXVzOjIsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMCxvbkRibENsaWNrOnZvaWQgMCxzaG93TnVsbERhdGFQb2ludHM6ITAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246XCJjZW50ZXJcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6XCJub25lXCIsdmFsdWU6MH19LGhvdmVyOntmaWx0ZXI6e3R5cGU6XCJsaWdodGVuXCIsdmFsdWU6LjF9fSxhY3RpdmU6e2FsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uOiExLGZpbHRlcjp7dHlwZTpcImRhcmtlblwiLHZhbHVlOi41fX19LHRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImxlZnRcIixtYXJnaW46NSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjE0cHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdWJ0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MzAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN0cm9rZTp7c2hvdzohMCxjdXJ2ZTpcInNtb290aFwiLGxpbmVDYXA6XCJidXR0XCIsd2lkdGg6Mixjb2xvcnM6dm9pZCAwLGRhc2hBcnJheTowLGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX19fSx0b29sdGlwOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsc2hhcmVkOiEwLGhpZGVFbXB0eVNlcmllczohMSxmb2xsb3dDdXJzb3I6ITEsaW50ZXJzZWN0OiExLGludmVyc2VPcmRlcjohMSxjdXN0b206dm9pZCAwLGZpbGxTZXJpZXNDb2xvcjohMSx0aGVtZTpcImxpZ2h0XCIsY3NzQ2xhc3M6XCJcIixzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9LG9uRGF0YXNldEhvdmVyOntoaWdobGlnaHREYXRhU2VyaWVzOiExfSx4OntzaG93OiEwLGZvcm1hdDpcImRkIE1NTVwiLGZvcm1hdHRlcjp2b2lkIDB9LHk6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT9lK1wiOiBcIjpcIlwifX19LHo6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6XCJTaXplOiBcIn0sbWFya2VyOntzaG93OiEwLGZpbGxDb2xvcnM6dm9pZCAwfSxpdGVtczp7ZGlzcGxheTpcImZsZXhcIn0sZml4ZWQ6e2VuYWJsZWQ6ITEscG9zaXRpb246XCJ0b3BSaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx4YXhpczp7dHlwZTpcImNhdGVnb3J5XCIsY2F0ZWdvcmllczpbXSxjb252ZXJ0ZWRDYXRUb051bWVyaWM6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxvdmVyd3JpdGVDYXRlZ29yaWVzOnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAscm90YXRlOi00NSxyb3RhdGVBbHdheXM6ITEsaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiEwLHRyaW06ITEsbWluSGVpZ2h0OnZvaWQgMCxtYXhIZWlnaHQ6MTIwLHNob3dEdXBsaWNhdGVzOiEwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sb2Zmc2V0WDowLG9mZnNldFk6MCxmb3JtYXQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsZGF0ZXRpbWVVVEM6ITAsZGF0ZXRpbWVGb3JtYXR0ZXI6e3llYXI6XCJ5eXl5XCIsbW9udGg6XCJNTU0gJ3l5XCIsZGF5OlwiZGQgTU1NXCIsaG91cjpcIkhIOm1tXCIsbWludXRlOlwiSEg6bW06c3NcIixzZWNvbmQ6XCJISDptbTpzc1wifX0sZ3JvdXA6e2dyb3VwczpbXSxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxheGlzQm9yZGVyOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIixoZWlnaHQ6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSxzdGVwU2l6ZTp2b2lkIDAsdGlja0Ftb3VudDp2b2lkIDAsdGlja1BsYWNlbWVudDpcIm9uXCIsbWluOnZvaWQgMCxtYXg6dm9pZCAwLHJhbmdlOnZvaWQgMCxmbG9hdGluZzohMSxkZWNpbWFsc0luRmxvYXQ6dm9pZCAwLHBvc2l0aW9uOlwiYm90dG9tXCIsdGl0bGU6e3RleHQ6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sY3Jvc3NoYWlyczp7c2hvdzohMCx3aWR0aDoxLHBvc2l0aW9uOlwiYmFja1wiLG9wYWNpdHk6Ljksc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTozfSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcjpcIiNCMUI5QzRcIixncmFkaWVudDp7Y29sb3JGcm9tOlwiI0Q4RTNGMFwiLGNvbG9yVG86XCIjQkVEMUU2XCIsc3RvcHM6WzAsMTAwXSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86LjV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLGxlZnQ6MCx0b3A6MCxibHVyOjEsb3BhY2l0eTouNH19LHRvb2x0aXA6e2VuYWJsZWQ6ITAsb2Zmc2V0WTowLGZvcm1hdHRlcjp2b2lkIDAsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX19LHlheGlzOnRoaXMueUF4aXMsdGhlbWU6e21vZGU6XCJsaWdodFwiLHBhbGV0dGU6XCJwYWxldHRlMVwiLG1vbm9jaHJvbWU6e2VuYWJsZWQ6ITEsY29sb3I6XCIjMDA4RkZCXCIsc2hhZGVUbzpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjY1fX19fX1dKSx5fSgpLGFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZ3JhcGhpY3M9bmV3IE0odGhpcy5jdHgpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMuaW52ZXJ0QXhpcz0hMCksdGhpcy5oZWxwZXJzPW5ldyB5ZSh0aGlzKSx0aGlzLnhBeGlzQW5ub3RhdGlvbnM9bmV3IE5lKHRoaXMpLHRoaXMueUF4aXNBbm5vdGF0aW9ucz1uZXcgV2UodGhpcyksdGhpcy5wb2ludHNBbm5vdGF0aW9ucz1uZXcgZmUodGhpcyksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLncuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYodGhpcy5pbnZlcnNlZFJldmVyc2VkQXhpcz0hMCksdGhpcy54RGl2aXNpb249dGhpcy53Lmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMudy5nbG9iYWxzLmRhdGFQb2ludHN9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdBeGVzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7Zm9yKHZhciB0PXRoaXMueUF4aXNBbm5vdGF0aW9ucy5kcmF3WUF4aXNBbm5vdGF0aW9ucygpLGk9dGhpcy54QXhpc0Fubm90YXRpb25zLmRyYXdYQXhpc0Fubm90YXRpb25zKCksYT10aGlzLnBvaW50c0Fubm90YXRpb25zLmRyYXdQb2ludEFubm90YXRpb25zKCkscz1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQscj1bdCxpLGFdLG49W2kubm9kZSx0Lm5vZGUsYS5ub2RlXSxvPTA7bzwzO28rKyllLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyW29dKSwhc3x8ZS5nbG9iYWxzLnJlc2l6ZWR8fGUuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8ZS5jb25maWcuY2hhcnQudHlwZSE9PVwic2NhdHRlclwiJiZlLmNvbmZpZy5jaGFydC50eXBlIT09XCJidWJibGVcIiYmZS5nbG9iYWxzLmRhdGFQb2ludHM+MSYmbltvXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSxlLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOm5bb10saW5kZXg6MH0pO3RoaXMuaGVscGVycy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKX19fSx7a2V5OlwiZHJhd0ltYWdlQW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy5pbWFnZXMubWFwKGZ1bmN0aW9uKHQsaSl7ZS5hZGRJbWFnZSh0LGkpfSl9fSx7a2V5OlwiZHJhd1RleHRBbm5vc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLnRleHRzLm1hcChmdW5jdGlvbih0LGkpe2UuYWRkVGV4dCh0LGkpfSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3RoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24oZSx0LGkpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt0aGlzLnlBeGlzQW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uKGUsdCxpKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb24oZSx0LGkpfX0se2tleTpcImFkZFRleHRcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWUueCxhPWUueSxzPWUudGV4dCxyPWUudGV4dEFuY2hvcixuPWUuZm9yZUNvbG9yLG89ZS5mb250U2l6ZSxoPWUuZm9udEZhbWlseSxjPWUuZm9udFdlaWdodCxkPWUuY3NzQ2xhc3MsZz1lLmJhY2tncm91bmRDb2xvcixwPWUuYm9yZGVyV2lkdGgsZj1lLnN0cm9rZURhc2hBcnJheSxiPWUuYm9yZGVyUmFkaXVzLG09ZS5ib3JkZXJDb2xvcix3PWUuYXBwZW5kVG8sQT13PT09dm9pZCAwP1wiLmFwZXhjaGFydHMtc3ZnXCI6dyxsPWUucGFkZGluZ0xlZnQsdT1sPT09dm9pZCAwPzQ6bCx4PWUucGFkZGluZ1JpZ2h0LHY9eD09PXZvaWQgMD80Ongsaz1lLnBhZGRpbmdCb3R0b20sUz1rPT09dm9pZCAwPzI6ayxDPWUucGFkZGluZ1RvcCxMPUM9PT12b2lkIDA/MjpDLEk9dGhpcy53LHo9dGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDppLHk6YSx0ZXh0OnMsdGV4dEFuY2hvcjpyfHxcInN0YXJ0XCIsZm9udFNpemU6b3x8XCIxMnB4XCIsZm9udFdlaWdodDpjfHxcInJlZ3VsYXJcIixmb250RmFtaWx5Omh8fEkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOm58fEkuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczpkfSksVD1JLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKEEpO1QmJlQuYXBwZW5kQ2hpbGQoei5ub2RlKTt2YXIgRT16LmJib3goKTtpZihzKXt2YXIgUj10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KEUueC11LEUueS1MLEUud2lkdGgrdSt2LEUuaGVpZ2h0K1MrTCxiLGd8fFwidHJhbnNwYXJlbnRcIiwxLHAsbSxmKTtULmluc2VydEJlZm9yZShSLm5vZGUsei5ub2RlKX19fSx7a2V5OlwiYWRkSW1hZ2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWUucGF0aCxzPWUueCxyPXM9PT12b2lkIDA/MDpzLG49ZS55LG89bj09PXZvaWQgMD8wOm4saD1lLndpZHRoLGM9aD09PXZvaWQgMD8yMDpoLGQ9ZS5oZWlnaHQsZz1kPT09dm9pZCAwPzIwOmQscD1lLmFwcGVuZFRvLGY9cD09PXZvaWQgMD9cIi5hcGV4Y2hhcnRzLXN2Z1wiOnAsYj1pLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKGEpO2Iuc2l6ZShjLGcpLm1vdmUocixvKTt2YXIgbT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGYpO3JldHVybiBtJiZtLmFwcGVuZENoaWxkKGIubm9kZSksYn19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczplLHB1c2hUb01lbW9yeTp0LGNvbnRleHQ6aSx0eXBlOlwieGF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWGF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczplLHB1c2hUb01lbW9yeTp0LGNvbnRleHQ6aSx0eXBlOlwieWF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWWF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gdGhpcy5pbnZlcnRBeGlzPT09dm9pZCAwJiYodGhpcy5pbnZlcnRBeGlzPWkudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCksdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczplLHB1c2hUb01lbW9yeTp0LGNvbnRleHQ6aSx0eXBlOlwicG9pbnRcIixjb250ZXh0TWV0aG9kOmkuYWRkUG9pbnRBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmFtcyxpPWUucHVzaFRvTWVtb3J5LGE9ZS5jb250ZXh0LHM9ZS50eXBlLHI9ZS5jb250ZXh0TWV0aG9kLG49YSxvPW4udyxoPW8uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9uc1wiKSksYz1oLmNoaWxkTm9kZXMubGVuZ3RoKzEsZD1uZXcgRyxnPU9iamVjdC5hc3NpZ24oe30scz09PVwieGF4aXNcIj9kLnhBeGlzQW5ub3RhdGlvbjpzPT09XCJ5YXhpc1wiP2QueUF4aXNBbm5vdGF0aW9uOmQucG9pbnRBbm5vdGF0aW9uKSxwPVAuZXh0ZW5kKGcsdCk7c3dpdGNoKHMpe2Nhc2VcInhheGlzXCI6dGhpcy5hZGRYYXhpc0Fubm90YXRpb24ocCxoLGMpO2JyZWFrO2Nhc2VcInlheGlzXCI6dGhpcy5hZGRZYXhpc0Fubm90YXRpb24ocCxoLGMpO2JyZWFrO2Nhc2VcInBvaW50XCI6dGhpcy5hZGRQb2ludEFubm90YXRpb24ocCxoLGMpfXZhciBmPW8uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHMsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQoYyxcIiddXCIpKSxiPXRoaXMuaGVscGVycy5hZGRCYWNrZ3JvdW5kVG9Bbm5vKGYscCk7cmV0dXJuIGImJmguaW5zZXJ0QmVmb3JlKGIubm9kZSxmKSxpJiZvLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMucHVzaCh7Y29udGV4dDpuLGlkOnAuaWQ/cC5pZDpQLnJhbmRvbUlkKCksbWV0aG9kOnIsbGFiZWw6XCJhZGRBbm5vdGF0aW9uXCIscGFyYW1zOnR9KSxhfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLncsaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wiKTt0Lmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubWFwKGZ1bmN0aW9uKGEscyl7YS5sYWJlbCE9PVwiYWRkVGV4dFwiJiZhLmxhYmVsIT09XCJhZGRBbm5vdGF0aW9uXCJ8fHQuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UocywxKX0pLGk9UC5saXN0VG9BcnJheShpKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGksZnVuY3Rpb24oYSl7Zm9yKDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKX0pfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWUudyxhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIuY29uY2F0KHQpKTthJiYoaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcChmdW5jdGlvbihzLHIpe3MuaWQ9PT10JiZpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKHIsMSl9KSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsZnVuY3Rpb24ocyl7cy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHMpfSkpfX1dKSx5fSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5tb250aHMzMT1bMSwzLDUsNyw4LDEwLDEyXSx0aGlzLm1vbnRoczMwPVsyLDQsNiw5LDExXSx0aGlzLmRheXNDbnRPZlllYXI9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF19cmV0dXJuIFkoeSxbe2tleTpcImlzVmFsaWREYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlIT1cIm51bWJlclwiJiYhaXNOYU4odGhpcy5wYXJzZURhdGUoZSkpfX0se2tleTpcImdldFRpbWVTdGFtcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBEYXRlLnBhcnNlKGUpP3RoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP25ldyBEYXRlKG5ldyBEYXRlKGUpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsMjUpKS5nZXRUaW1lKCk6bmV3IERhdGUoZSkuZ2V0VGltZSgpOmV9fSx7a2V5OlwiZ2V0RGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZShlKS50b1VUQ1N0cmluZygpKTpuZXcgRGF0ZShlKX19LHtrZXk6XCJwYXJzZURhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1EYXRlLnBhcnNlKGUpO2lmKCFpc05hTih0KSlyZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAoZSk7dmFyIGk9RGF0ZS5wYXJzZShlLnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSk7cmV0dXJuIGk9dGhpcy5nZXRUaW1lU3RhbXAoaSl9fSx7a2V5OlwicGFyc2VEYXRlV2l0aFRpbWV6b25lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhdGUucGFyc2UoZS5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpfX0se2tleTpcImZvcm1hdERhdGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudy5nbG9iYWxzLmxvY2FsZSxhPXRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDLHM9W1wiXFwwXCJdLmNvbmNhdChRKGkubW9udGhzKSkscj1bXCJcdTAwMDFcIl0uY29uY2F0KFEoaS5zaG9ydE1vbnRocykpLG49W1wiXHUwMDAyXCJdLmNvbmNhdChRKGkuZGF5cykpLG89W1wiXHUwMDAzXCJdLmNvbmNhdChRKGkuc2hvcnREYXlzKSk7ZnVuY3Rpb24gaChTLEMpe3ZhciBMPVMrXCJcIjtmb3IoQz1DfHwyO0wubGVuZ3RoPEM7KUw9XCIwXCIrTDtyZXR1cm4gTH12YXIgYz1hP2UuZ2V0VVRDRnVsbFllYXIoKTplLmdldEZ1bGxZZWFyKCk7dD0odD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0peXl5eSsvZyxcIiQxXCIrYykpLnJlcGxhY2UoLyhefFteXFxcXF0peXkvZyxcIiQxXCIrYy50b1N0cmluZygpLnN1YnN0cigyLDIpKSkucmVwbGFjZSgvKF58W15cXFxcXSl5L2csXCIkMVwiK2MpO3ZhciBkPShhP2UuZ2V0VVRDTW9udGgoKTplLmdldE1vbnRoKCkpKzE7dD0odD0odD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0pTU1NTSsvZyxcIiQxXCIrc1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTU1NL2csXCIkMVwiK3JbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NL2csXCIkMVwiK2goZCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU0vZyxcIiQxXCIrZCk7dmFyIGc9YT9lLmdldFVUQ0RhdGUoKTplLmdldERhdGUoKTt0PSh0PSh0PSh0PXQucmVwbGFjZSgvKF58W15cXFxcXSlkZGRkKy9nLFwiJDFcIituWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlkZGQvZyxcIiQxXCIrb1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGQvZyxcIiQxXCIraChnKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZC9nLFwiJDFcIitnKTt2YXIgcD1hP2UuZ2V0VVRDSG91cnMoKTplLmdldEhvdXJzKCksZj1wPjEyP3AtMTI6cD09PTA/MTI6cDt0PSh0PSh0PSh0PXQucmVwbGFjZSgvKF58W15cXFxcXSlISCsvZyxcIiQxXCIraChwKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pSC9nLFwiJDFcIitwKSkucmVwbGFjZSgvKF58W15cXFxcXSloaCsvZyxcIiQxXCIraChmKSkpLnJlcGxhY2UoLyhefFteXFxcXF0paC9nLFwiJDFcIitmKTt2YXIgYj1hP2UuZ2V0VVRDTWludXRlcygpOmUuZ2V0TWludXRlcygpO3Q9KHQ9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKW1tKy9nLFwiJDFcIitoKGIpKSkucmVwbGFjZSgvKF58W15cXFxcXSltL2csXCIkMVwiK2IpO3ZhciBtPWE/ZS5nZXRVVENTZWNvbmRzKCk6ZS5nZXRTZWNvbmRzKCk7dD0odD10LnJlcGxhY2UoLyhefFteXFxcXF0pc3MrL2csXCIkMVwiK2gobSkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXMvZyxcIiQxXCIrbSk7dmFyIHc9YT9lLmdldFVUQ01pbGxpc2Vjb25kcygpOmUuZ2V0TWlsbGlzZWNvbmRzKCk7dD10LnJlcGxhY2UoLyhefFteXFxcXF0pZmZmKy9nLFwiJDFcIitoKHcsMykpLHc9TWF0aC5yb3VuZCh3LzEwKSx0PXQucmVwbGFjZSgvKF58W15cXFxcXSlmZi9nLFwiJDFcIitoKHcpKSx3PU1hdGgucm91bmQody8xMCk7dmFyIEE9cDwxMj9cIkFNXCI6XCJQTVwiO3Q9KHQ9KHQ9dC5yZXBsYWNlKC8oXnxbXlxcXFxdKWYvZyxcIiQxXCIrdykpLnJlcGxhY2UoLyhefFteXFxcXF0pVFQrL2csXCIkMVwiK0EpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVQvZyxcIiQxXCIrQS5jaGFyQXQoMCkpO3ZhciBsPUEudG9Mb3dlckNhc2UoKTt0PSh0PXQucmVwbGFjZSgvKF58W15cXFxcXSl0dCsvZyxcIiQxXCIrbCkpLnJlcGxhY2UoLyhefFteXFxcXF0pdC9nLFwiJDFcIitsLmNoYXJBdCgwKSk7dmFyIHU9LWUuZ2V0VGltZXpvbmVPZmZzZXQoKSx4PWF8fCF1P1wiWlwiOnU+MD9cIitcIjpcIi1cIjtpZighYSl7dmFyIHY9KHU9TWF0aC5hYnModSkpJTYwO3grPWgoTWF0aC5mbG9vcih1LzYwKSkrXCI6XCIraCh2KX10PXQucmVwbGFjZSgvKF58W15cXFxcXSlLL2csXCIkMVwiK3gpO3ZhciBrPShhP2UuZ2V0VVRDRGF5KCk6ZS5nZXREYXkoKSkrMTtyZXR1cm4gdD0odD0odD0odD0odD10LnJlcGxhY2UobmV3IFJlZ0V4cChuWzBdLFwiZ1wiKSxuW2tdKSkucmVwbGFjZShuZXcgUmVnRXhwKG9bMF0sXCJnXCIpLG9ba10pKS5yZXBsYWNlKG5ldyBSZWdFeHAoc1swXSxcImdcIiksc1tkXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChyWzBdLFwiZ1wiKSxyW2RdKSkucmVwbGFjZSgvXFxcXCguKS9nLFwiJDFcIil9fSx7a2V5OlwiZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLnc7YS5jb25maWcueGF4aXMubWluIT09dm9pZCAwJiYoZT1hLmNvbmZpZy54YXhpcy5taW4pLGEuY29uZmlnLnhheGlzLm1heCE9PXZvaWQgMCYmKHQ9YS5jb25maWcueGF4aXMubWF4KTt2YXIgcz10aGlzLmdldERhdGUoZSkscj10aGlzLmdldERhdGUodCksbj10aGlzLmZvcm1hdERhdGUocyxcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKSxvPXRoaXMuZm9ybWF0RGF0ZShyLFwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmZcIikuc3BsaXQoXCIgXCIpO3JldHVybnttaW5NaWxsaXNlY29uZDpwYXJzZUludChuWzZdLDEwKSxtYXhNaWxsaXNlY29uZDpwYXJzZUludChvWzZdLDEwKSxtaW5TZWNvbmQ6cGFyc2VJbnQobls1XSwxMCksbWF4U2Vjb25kOnBhcnNlSW50KG9bNV0sMTApLG1pbk1pbnV0ZTpwYXJzZUludChuWzRdLDEwKSxtYXhNaW51dGU6cGFyc2VJbnQob1s0XSwxMCksbWluSG91cjpwYXJzZUludChuWzNdLDEwKSxtYXhIb3VyOnBhcnNlSW50KG9bM10sMTApLG1pbkRhdGU6cGFyc2VJbnQoblsyXSwxMCksbWF4RGF0ZTpwYXJzZUludChvWzJdLDEwKSxtaW5Nb250aDpwYXJzZUludChuWzFdLDEwKS0xLG1heE1vbnRoOnBhcnNlSW50KG9bMV0sMTApLTEsbWluWWVhcjpwYXJzZUludChuWzBdLDEwKSxtYXhZZWFyOnBhcnNlSW50KG9bMF0sMTApfX19LHtrZXk6XCJpc0xlYXBZZWFyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUlND09MCYmZSUxMDAhPTB8fGUlNDAwPT0wfX0se2tleTpcImNhbGN1bGNhdGVMYXN0RGF5c09mTW9udGhcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUsdCktaX19LHtrZXk6XCJkZXRlcm1pbmVEYXlzT2ZZZWFyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9MzY1O3JldHVybiB0aGlzLmlzTGVhcFllYXIoZSkmJih0PTM2NiksdH19LHtrZXk6XCJkZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMuZGF5c0NudE9mWWVhclt0XStpO3JldHVybiB0PjEmJnRoaXMuaXNMZWFwWWVhcigpJiZhKyssYX19LHtrZXk6XCJkZXRlcm1pbmVEYXlzT2ZNb250aHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPTMwO3N3aXRjaChlPVAubW9udGhNb2QoZSksITApe2Nhc2UgdGhpcy5tb250aHMzMC5pbmRleE9mKGUpPi0xOmU9PT0yJiYoaT10aGlzLmlzTGVhcFllYXIodCk/Mjk6MjgpO2JyZWFrO2Nhc2UgdGhpcy5tb250aHMzMS5pbmRleE9mKGUpPi0xOmRlZmF1bHQ6aT0zMX1yZXR1cm4gaX19XSkseX0oKSxuZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRvb2x0aXBLZXlGb3JtYXQ9XCJkZCBNTU1cIn1yZXR1cm4gWSh5LFt7a2V5OlwieExhYmVsRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53O2lmKHMuY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCImJnMuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9PT12b2lkIDAmJnMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXI9PT12b2lkIDApe3ZhciByPW5ldyBCKHRoaXMuY3R4KTtyZXR1cm4gci5mb3JtYXREYXRlKHIuZ2V0RGF0ZSh0KSxzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1yZXR1cm4gZSh0LGksYSl9fSx7a2V5OlwiZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdH0pOmV9fSx7a2V5OlwiZGVmYXVsdFlGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53O3JldHVybiBQLmlzTnVtYmVyKGUpJiYoZT1hLmdsb2JhbHMueVZhbHVlRGVjaW1hbCE9PTA/ZS50b0ZpeGVkKHQuZGVjaW1hbHNJbkZsb2F0IT09dm9pZCAwP3QuZGVjaW1hbHNJbkZsb2F0OmEuZ2xvYmFscy55VmFsdWVEZWNpbWFsKTphLmdsb2JhbHMubWF4WUFycltpXS1hLmdsb2JhbHMubWluWUFycltpXTw1P2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMCkpLGV9fSx7a2V5Olwic2V0TGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53O3JldHVybiB0Lmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWZ1bmN0aW9uKGkpe3JldHVybiBlLmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGkpfSx0Lmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZnVuY3Rpb24oaSl7cmV0dXJuIGUuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoaSl9LHQuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZnVuY3Rpb24oaSl7cmV0dXJuIGl9LHQuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZnVuY3Rpb24oaSl7cmV0dXJuIGUuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoaSl9LHQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIhPT12b2lkIDA/dC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj10LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyOnQuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24oaSl7aWYoUC5pc051bWJlcihpKSl7aWYoIXQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmdC5jb25maWcueGF4aXMudHlwZT09PVwibnVtZXJpY1wiKXtpZihQLmlzTnVtYmVyKHQuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCkpcmV0dXJuIGkudG9GaXhlZCh0LmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpO3ZhciBhPXQuZ2xvYmFscy5tYXhYLXQuZ2xvYmFscy5taW5YO3JldHVybiBhPjAmJmE8MTAwP2kudG9GaXhlZCgxKTppLnRvRml4ZWQoMCl9cmV0dXJuIHQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnQuZ2xvYmFscy5tYXhZLXQuZ2xvYmFscy5taW5ZQXJyPDQ/aS50b0ZpeGVkKDEpOmkudG9GaXhlZCgwKX1yZXR1cm4gaX0sdHlwZW9mIHQuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXI9PVwiZnVuY3Rpb25cIj90Lmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9dC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcjp0Lmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9dC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcix0eXBlb2YgdC5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXI9PVwiZnVuY3Rpb25cIiYmKHQuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9dC5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLChBcnJheS5pc0FycmF5KHQuY29uZmlnLnRvb2x0aXAueSl8fHQuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIhPT12b2lkIDApJiYodC5nbG9iYWxzLnR0VmFsPXQuY29uZmlnLnRvb2x0aXAueSksdC5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciE9PXZvaWQgMCYmKHQuZ2xvYmFscy50dFpGb3JtYXR0ZXI9dC5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciksdC5jb25maWcubGVnZW5kLmZvcm1hdHRlciE9PXZvaWQgMCYmKHQuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9dC5jb25maWcubGVnZW5kLmZvcm1hdHRlciksdC5jb25maWcueWF4aXMuZm9yRWFjaChmdW5jdGlvbihpLGEpe2kubGFiZWxzLmZvcm1hdHRlciE9PXZvaWQgMD90Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1thXT1pLmxhYmVscy5mb3JtYXR0ZXI6dC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09ZnVuY3Rpb24ocyl7cmV0dXJuIHQuZ2xvYmFscy54eUNoYXJ0cz9BcnJheS5pc0FycmF5KHMpP3MubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBlLmRlZmF1bHRZRm9ybWF0dGVyKHIsaSxhKX0pOmUuZGVmYXVsdFlGb3JtYXR0ZXIocyxpLGEpOnN9fSksdC5nbG9iYWxzfX0se2tleTpcImhlYXRtYXBMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztpZihlLmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCIpe2UuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD1lLmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgdD1lLmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKGZ1bmN0aW9uKGksYSl7cmV0dXJuIGkubGVuZ3RoPmEubGVuZ3RoP2k6YX0sMCk7ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heD10LGUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW49dH19fV0pLHl9KCkseGU9ZnVuY3Rpb24oeSl7dmFyIGUsdD15LmlzVGltZWxpbmUsaT15LmN0eCxhPXkuc2VyaWVzSW5kZXgscz15LmRhdGFQb2ludEluZGV4LHI9eS55MSxuPXkueTIsbz15LncsaD1vLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFthXVtzXSxjPW8uZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFthXVtzXSxkPW8uZ2xvYmFscy5sYWJlbHNbc10sZz1vLmNvbmZpZy5zZXJpZXNbYV0ubmFtZT9vLmNvbmZpZy5zZXJpZXNbYV0ubmFtZTpcIlwiLHA9by5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGY9by5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcixiPXt3Om8sc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpzLHN0YXJ0OmgsZW5kOmN9O3R5cGVvZiBmPT1cImZ1bmN0aW9uXCImJihnPWYoZyxiKSksKGU9by5jb25maWcuc2VyaWVzW2FdLmRhdGFbc10pIT09bnVsbCYmZSE9PXZvaWQgMCYmZS54JiYoZD1vLmNvbmZpZy5zZXJpZXNbYV0uZGF0YVtzXS54KSx0fHxvLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiJiYoZD1uZXcgbmUoaSkueExhYmVsRm9ybWF0KG8uZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEIoaSkuZm9ybWF0RGF0ZSx3Om99KSksdHlwZW9mIHA9PVwiZnVuY3Rpb25cIiYmKGQ9cChkLGIpKSxOdW1iZXIuaXNGaW5pdGUocikmJk51bWJlci5pc0Zpbml0ZShuKSYmKGg9cixjPW4pO3ZhciBtPVwiXCIsdz1cIlwiLEE9by5nbG9iYWxzLmNvbG9yc1thXTtpZihvLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyPT09dm9pZCAwKWlmKG8uY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCIpe3ZhciBsPW5ldyBCKGkpO209bC5mb3JtYXREYXRlKGwuZ2V0RGF0ZShoKSxvLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KSx3PWwuZm9ybWF0RGF0ZShsLmdldERhdGUoYyksby5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9ZWxzZSBtPWgsdz1jO2Vsc2UgbT1vLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGgpLHc9by5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihjKTtyZXR1cm57c3RhcnQ6aCxlbmQ6YyxzdGFydFZhbDptLGVuZFZhbDp3LHlsYWJlbDpkLGNvbG9yOkEsc2VyaWVzTmFtZTpnfX0sb2U9ZnVuY3Rpb24oeSl7dmFyIGU9eS5jb2xvcix0PXkuc2VyaWVzTmFtZSxpPXkueWxhYmVsLGE9eS5zdGFydCxzPXkuZW5kLHI9eS5zZXJpZXNJbmRleCxuPXkuZGF0YVBvaW50SW5kZXgsbz15LmN0eC50b29sdGlwLnRvb2x0aXBMYWJlbHMuZ2V0Rm9ybWF0dGVycyhyKTthPW8ueUxiRm9ybWF0dGVyKGEpLHM9by55TGJGb3JtYXR0ZXIocyk7dmFyIGg9by55TGJGb3JtYXR0ZXIoeS53Lmdsb2JhbHMuc2VyaWVzW3JdW25dKSxjPWA8c3BhbiBjbGFzcz1cInZhbHVlIHN0YXJ0LXZhbHVlXCI+XG4gIGAuY29uY2F0KGEsYFxuICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+LTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBlbmQtdmFsdWVcIj5cbiAgYCkuY29uY2F0KHMsYFxuICA8L3NwYW4+YCk7cmV0dXJuJzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXJcIj48ZGl2PiA8c3BhbiBjbGFzcz1cInNlcmllcy1uYW1lXCIgc3R5bGU9XCJjb2xvcjogJytlKydcIj4nKyh0fHxcIlwiKSsnPC9zcGFuPjwvZGl2PjxkaXY+IDxzcGFuIGNsYXNzPVwiY2F0ZWdvcnlcIj4nK2krXCI6IDwvc3Bhbj4gXCIrKHkudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3kudy5jb25maWcuc2VyaWVzW3JdLnR5cGU9PT1cInJhbmdlQXJlYVwifHx5LncuY29uZmlnLnNlcmllc1tyXS50eXBlPT09XCJyYW5nZUJhclwiP2M6XCI8c3Bhbj5cIi5jb25jYXQoaCxcIjwvc3Bhbj5cIik6YykrXCIgPC9kaXY+PC9kaXY+XCJ9LGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5vcHRzPWV9cmV0dXJuIFkoeSxbe2tleTpcImhpZGVZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRzLnlheGlzWzBdLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLnRpdGxlLnRleHQ9XCJcIix0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITB9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJzd2luZ1wifX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDo1LGN1cnZlOlwic3RyYWlnaHRcIn0sbWFya2Vyczp7c2l6ZTowLGhvdmVyOntzaXplT2Zmc2V0OjZ9fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJzcGFya2xpbmVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5oaWRlWUF4aXMoKSxQLmV4dGVuZChlLHtncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfX0sbGVnZW5kOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fSxjaGFydDp7dG9vbGJhcjp7c2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9fSl9fSx7a2V5OlwiYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITEsYW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LHBsb3RPcHRpb25zOntiYXI6e2RhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfX0sc3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6XCJyb3VuZFwifSxmaWxsOntvcGFjaXR5Oi44NX0sbGVnZW5kOnttYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHJhZGl1czoyLHNpemU6OH19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfSx0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLGNyb3NzaGFpcnM6e3dpZHRoOlwiYmFyV2lkdGhcIixwb3NpdGlvbjpcImJhY2tcIixmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIn0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJmdW5uZWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZGVZQXhpcygpLFgoWCh7fSx0aGlzLmJhcigpKSx7fSx7Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzpcImxpbmVhclwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntlbmFibGVkOiExfX19LHBsb3RPcHRpb25zOntiYXI6e2hvcml6b250YWw6ITAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGdyaWQ6e3Nob3c6ITEscGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fX0pfX0se2tleTpcImNhbmRsZXN0aWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybntzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMzMzNcIl19LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbih0KXt2YXIgaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXQudztyZXR1cm4gZS5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJPcGVuXCIsXCJIaWdoXCIsXCJcIixcIkxvd1wiLFwiQ2xvc2VcIl0sXCJjYW5kbGVzdGlja1wiKX19LHN0YXRlczp7YWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwiYm94UGxvdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITF9fX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMjQyOTJlXCJdfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKHQpe3ZhciBpPXQuc2VyaWVzSW5kZXgsYT10LmRhdGFQb2ludEluZGV4LHM9dC53O3JldHVybiBlLl9nZXRCb3hUb29sdGlwKHMsaSxhLFtcIk1pbmltdW1cIixcIlExXCIsXCJNZWRpYW5cIixcIlEzXCIsXCJNYXhpbXVtXCJdLFwiYm94UGxvdFwiKX19LG1hcmtlcnM6e3NpemU6NSxzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiMxMTFcIn0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwicmFuZ2VCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7YW5pbWF0ZUdyYWR1YWxseTohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwic3F1YXJlXCJ9LHBsb3RPcHRpb25zOntiYXI6e2JvcmRlclJhZGl1czowLGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSx0KXt0LmN0eDt2YXIgaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXQudyxyPWZ1bmN0aW9uKCl7dmFyIG49cy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV07cmV0dXJuIHMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVthXS1ufTtyZXR1cm4gcy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3MuY29uZmlnLnNlcmllc1tpXS50eXBlPT09XCJyYW5nZUJhclwifHxzLmNvbmZpZy5zZXJpZXNbaV0udHlwZT09PVwicmFuZ2VBcmVhXCI/cigpOmU6cigpfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxtYXJrZXJzOntzaXplOjEwfSx0b29sdGlwOntzaGFyZWQ6ITEsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbihlKXtyZXR1cm4gZS53LmNvbmZpZy5wbG90T3B0aW9ucyYmZS53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXImJmUudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw/ZnVuY3Rpb24odCl7dmFyIGk9eGUoWChYKHt9LHQpLHt9LHtpc1RpbWVsaW5lOiEwfSkpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG49aS5zdGFydFZhbCxvPWkuZW5kVmFsO3JldHVybiBvZShYKFgoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om4sZW5kOm99KSl9KGUpOmZ1bmN0aW9uKHQpe3ZhciBpPXhlKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG49aS5zdGFydCxvPWkuZW5kO3JldHVybiBvZShYKFgoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om4sZW5kOm99KSl9KGUpfX0seGF4aXM6e3RpY2tQbGFjZW1lbnQ6XCJiZXR3ZWVuXCIsdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJkdW1iYmVsbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk7cmV0dXJuKHQ9ZS5wbG90T3B0aW9ucy5iYXIpIT09bnVsbCYmdCE9PXZvaWQgMCYmdC5iYXJIZWlnaHR8fChlLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQ9MiksKGk9ZS5wbG90T3B0aW9ucy5iYXIpIT09bnVsbCYmaSE9PXZvaWQgMCYmaS5jb2x1bW5XaWR0aHx8KGUucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoPTIpLGV9fSx7a2V5OlwiYXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NCxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19fSxmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiExfX19fSx7a2V5OlwicmFuZ2VBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOntjdXJ2ZTpcInN0cmFpZ2h0XCIsd2lkdGg6MH0sZmlsbDp7dHlwZTpcInNvbGlkXCIsb3BhY2l0eTouNn0sbWFya2Vyczp7c2l6ZTowfSxzdGF0ZXM6e2hvdmVyOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fSxhY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx0b29sdGlwOntpbnRlcnNlY3Q6ITEsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPXhlKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG49aS5zdGFydCxvPWkuZW5kO3JldHVybiBvZShYKFgoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om4sZW5kOm99KSl9KGUpfX19fX0se2tleTpcImJydXNoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFAuZXh0ZW5kKGUse2NoYXJ0Ont0b29sYmFyOnthdXRvU2VsZWN0ZWQ6XCJzZWxlY3Rpb25cIixzaG93OiExfSx6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDoxfSx0b29sdGlwOntlbmFibGVkOiExfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX19fSl9fSx7a2V5Olwic3RhY2tlZDEwMFwiLHZhbHVlOmZ1bmN0aW9uKGUpe2UuZGF0YUxhYmVscz1lLmRhdGFMYWJlbHN8fHt9LGUuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZS5kYXRhTGFiZWxzLmZvcm1hdHRlcnx8dm9pZCAwO3ZhciB0PWUuZGF0YUxhYmVscy5mb3JtYXR0ZXI7cmV0dXJuIGUueWF4aXMuZm9yRWFjaChmdW5jdGlvbihpLGEpe2UueWF4aXNbYV0ubWluPTAsZS55YXhpc1thXS5tYXg9MTAwfSksZS5jaGFydC50eXBlPT09XCJiYXJcIiYmKGUuZGF0YUxhYmVscy5mb3JtYXR0ZXI9dHx8ZnVuY3Rpb24oaSl7cmV0dXJuIHR5cGVvZiBpPT1cIm51bWJlclwiJiZpP2kudG9GaXhlZCgwKStcIiVcIjppfSksZX19LHtrZXk6XCJzdGFja2VkQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5iYXIoKTtyZXR1cm4gWChYKHt9LGUpLHt9LHtwbG90T3B0aW9uczpYKFgoe30sZS5wbG90T3B0aW9ucykse30se2JhcjpYKFgoe30sZS5wbG90T3B0aW9ucy5iYXIpLHt9LHtib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImVuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwifSl9KX0pfX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsZX19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7ZS54YXhpcy50eXBlPVwibnVtZXJpY1wiLGUueGF4aXMubGFiZWxzPWUueGF4aXMubGFiZWxzfHx7fSxlLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxmdW5jdGlvbihyKXtyZXR1cm4gUC5pc051bWJlcihyKT9NYXRoLmZsb29yKHIpOnJ9O3ZhciBhPWUueGF4aXMubGFiZWxzLmZvcm1hdHRlcixzPWUueGF4aXMuY2F0ZWdvcmllcyYmZS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD9lLnhheGlzLmNhdGVnb3JpZXM6ZS5sYWJlbHM7cmV0dXJuIGkmJmkubGVuZ3RoJiYocz1pLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9yOlN0cmluZyhyKX0pKSxzJiZzLmxlbmd0aCYmKGUueGF4aXMubGFiZWxzLmZvcm1hdHRlcj1mdW5jdGlvbihyKXtyZXR1cm4gUC5pc051bWJlcihyKT9hKHNbTWF0aC5mbG9vcihyKS0xXSk6YShyKX0pLGUueGF4aXMuY2F0ZWdvcmllcz1bXSxlLmxhYmVscz1bXSxlLnhheGlzLnRpY2tBbW91bnQ9ZS54YXhpcy50aWNrQW1vdW50fHxcImRhdGFQb2ludHNcIixlfX0se2tleTpcImJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2RhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDowfX0sZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixpbnZlcnNlOiEwLHNoYWRlSW50ZW5zaXR5Oi41NSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86Ljh9fX19fSx7a2V5Olwic2NhdHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LG1hcmtlcnM6e3NpemU6NixzdHJva2VXaWR0aDoxLGhvdmVyOntzaXplT2Zmc2V0OjJ9fX19fSx7a2V5OlwiaGVhdG1hcFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCxtYXJrZXI6e3Nob3c6ITF9LHg6e3Nob3c6ITF9fSxsZWdlbmQ6e3Bvc2l0aW9uOlwidG9wXCIsbWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixzaXplOjEwLG9mZnNldFk6Mn19LGdyaWQ6e3BhZGRpbmc6e3JpZ2h0OjIwfX19fX0se2tleTpcInRyZWVtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7em9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e3N0eWxlOntmb250U2l6ZToxNCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6W1wiI2ZmZlwiXX19LHN0cm9rZTp7c2hvdzohMCx3aWR0aDoyLGNvbG9yczpbXCIjZmZmXCJdfSxsZWdlbmQ6e3Nob3c6ITF9LGZpbGw6e2dyYWRpZW50OntzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLHg6e3Nob3c6ITF9fSxncmlkOntwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MH19LHhheGlzOntjcm9zc2hhaXJzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfX19fX0se2tleTpcInBpZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0scGxvdE9wdGlvbnM6e3BpZTp7ZG9udXQ6e2xhYmVsczp7c2hvdzohMX19fX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLHN0b3BzOlswLDEwMF19fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwiZG9udXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzaGFkZUludGVuc2l0eTouMzUsc3RvcHM6WzgwLDEwMF0sb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MX19LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJwb2xhckFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD10aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD90aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudDo2LHtjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0ZpeGVkKDEpK1wiJVwifSxlbmFibGVkOiExfSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mn0sZmlsbDp7b3BhY2l0eTouN30sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcInJhZGFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPXRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT90aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk6Nix7ZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxzdHlsZTp7Zm9udFNpemU6XCIxMXB4XCJ9fSxzdHJva2U6e3dpZHRoOjJ9LG1hcmtlcnM6e3NpemU6MyxzdHJva2VXaWR0aDoxLHN0cm9rZU9wYWNpdHk6MX0sZmlsbDp7b3BhY2l0eTouMn0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMCxmb2xsb3dDdXJzb3I6ITB9LGdyaWQ6e3Nob3c6ITF9LHhheGlzOntsYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3R5bGU6e2NvbG9yczpbXCIjYThhOGE4XCJdLGZvbnRTaXplOlwiMTFweFwifX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c2hvdzohMX19fX19LHtrZXk6XCJyYWRpYWxCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDo4MDB9fSx0b29sYmFyOntzaG93OiExfX0sZmlsbDp7Z3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHNoYWRlSW50ZW5zaXR5Oi40LGludmVyc2VDb2xvcnM6ITEsdHlwZTpcImRpYWdvbmFsMlwiLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjEsc3RvcHM6WzcwLDk4LDEwMF19fSxsZWdlbmQ6e3Nob3c6ITEscG9zaXRpb246XCJyaWdodFwifSx0b29sdGlwOntlbmFibGVkOiExLGZpbGxTZXJpZXNDb2xvcjohMH19fX0se2tleTpcIl9nZXRCb3hUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzKXt2YXIgcj1lLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtpXSxuPWUuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2ldLG89ZS5nbG9iYWxzLnNlcmllc0NhbmRsZU1bdF1baV0saD1lLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtpXSxjPWUuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2ldO3JldHVybiBlLmNvbmZpZy5zZXJpZXNbdF0udHlwZSYmZS5jb25maWcuc2VyaWVzW3RdLnR5cGUhPT1zP2A8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcFwiPlxuICAgICAgICAgIGAuY29uY2F0KGUuY29uZmlnLnNlcmllc1t0XS5uYW1lP2UuY29uZmlnLnNlcmllc1t0XS5uYW1lOlwic2VyaWVzLVwiKyh0KzEpLFwiOiA8c3Ryb25nPlwiKS5jb25jYXQoZS5nbG9iYWxzLnNlcmllc1t0XVtpXSxgPC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PmApOic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLWJveCBhcGV4Y2hhcnRzLXRvb2x0aXAtJy5jb25jYXQoZS5jb25maWcuY2hhcnQudHlwZSwnXCI+JykrXCI8ZGl2PlwiLmNvbmNhdChhWzBdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStyK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVsxXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbitcIjwvc3Bhbj48L2Rpdj5cIisobz9cIjxkaXY+XCIuY29uY2F0KGFbMl0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK28rXCI8L3NwYW4+PC9kaXY+XCI6XCJcIikrXCI8ZGl2PlwiLmNvbmNhdChhWzNdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStoK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVs0XSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrYytcIjwvc3Bhbj48L2Rpdj48L2Rpdj5cIn19XSkseX0oKSxJZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMub3B0cz1lfXJldHVybiBZKHksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXNwb25zaXZlT3ZlcnJpZGUsaT10aGlzLm9wdHMsYT1uZXcgRyxzPW5ldyBsZShpKTt0aGlzLmNoYXJ0VHlwZT1pLmNoYXJ0LnR5cGUsaT10aGlzLmV4dGVuZFlBeGlzKGkpLGk9dGhpcy5leHRlbmRBbm5vdGF0aW9ucyhpKTt2YXIgcj1hLmluaXQoKSxuPXt9O2lmKGkmJlUoaSk9PT1cIm9iamVjdFwiKXt2YXIgbyxoLGMsZCxnLHAsZixiLG09e307bT1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJidWJibGVcIixcInNjYXR0ZXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIixcInBpZVwiLFwicG9sYXJBcmVhXCIsXCJkb251dFwiLFwicmFkYXJcIixcInJhZGlhbEJhclwiXS5pbmRleE9mKGkuY2hhcnQudHlwZSkhPT0tMT9zW2kuY2hhcnQudHlwZV0oKTpzLmxpbmUoKSwobz1pLnBsb3RPcHRpb25zKSE9PW51bGwmJm8hPT12b2lkIDAmJihoPW8uYmFyKSE9PW51bGwmJmghPT12b2lkIDAmJmguaXNGdW5uZWwmJihtPXMuZnVubmVsKCkpLGkuY2hhcnQuc3RhY2tlZCYmaS5jaGFydC50eXBlPT09XCJiYXJcIiYmKG09cy5zdGFja2VkQmFycygpKSwoYz1pLmNoYXJ0LmJydXNoKSE9PW51bGwmJmMhPT12b2lkIDAmJmMuZW5hYmxlZCYmKG09cy5icnVzaChtKSksaS5jaGFydC5zdGFja2VkJiZpLmNoYXJ0LnN0YWNrVHlwZT09PVwiMTAwJVwiJiYoaT1zLnN0YWNrZWQxMDAoaSkpLChkPWkucGxvdE9wdGlvbnMpIT09bnVsbCYmZCE9PXZvaWQgMCYmKGc9ZC5iYXIpIT09bnVsbCYmZyE9PXZvaWQgMCYmZy5pc0R1bWJiZWxsJiYoaT1zLmR1bWJiZWxsKGkpKSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKHdpbmRvdy5BcGV4KSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGkpLGkueGF4aXM9aS54YXhpc3x8d2luZG93LkFwZXgueGF4aXN8fHt9LHR8fChpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMSksKChwPShpPXRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSxtLGkpKS5jaGFydC5zcGFya2xpbmUpIT09bnVsbCYmcCE9PXZvaWQgMCYmcC5lbmFibGVkfHwoZj13aW5kb3cuQXBleC5jaGFydCkhPT1udWxsJiZmIT09dm9pZCAwJiYoYj1mLnNwYXJrbGluZSkhPT1udWxsJiZiIT09dm9pZCAwJiZiLmVuYWJsZWQpJiYobT1zLnNwYXJrbGluZShtKSksbj1QLmV4dGVuZChyLG0pfXZhciB3PVAuZXh0ZW5kKG4sd2luZG93LkFwZXgpO3JldHVybiByPVAuZXh0ZW5kKHcsaSkscj10aGlzLmhhbmRsZVVzZXJJbnB1dEVycm9ycyhyKX19LHtrZXk6XCJjaGVja0ZvckNhdFRvTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHMscj1uZXcgbGUoaSksbj0oZT09PVwiYmFyXCJ8fGU9PT1cImJveFBsb3RcIikmJigoYT1pLnBsb3RPcHRpb25zKT09PW51bGx8fGE9PT12b2lkIDB8fChzPWEuYmFyKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuaG9yaXpvbnRhbCksbz1lPT09XCJwaWVcInx8ZT09PVwicG9sYXJBcmVhXCJ8fGU9PT1cImRvbnV0XCJ8fGU9PT1cInJhZGFyXCJ8fGU9PT1cInJhZGlhbEJhclwifHxlPT09XCJoZWF0bWFwXCIsaD1pLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCImJmkueGF4aXMudHlwZSE9PVwibnVtZXJpY1wiLGM9aS54YXhpcy50aWNrUGxhY2VtZW50P2kueGF4aXMudGlja1BsYWNlbWVudDp0LnhheGlzJiZ0LnhheGlzLnRpY2tQbGFjZW1lbnQ7cmV0dXJuIG58fG98fCFofHxjPT09XCJiZXR3ZWVuXCJ8fChpPXIuY29udmVydENhdFRvTnVtZXJpYyhpKSksaX19LHtrZXk6XCJleHRlbmRZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9bmV3IEc7KGUueWF4aXM9PT12b2lkIDB8fCFlLnlheGlzfHxBcnJheS5pc0FycmF5KGUueWF4aXMpJiZlLnlheGlzLmxlbmd0aD09PTApJiYoZS55YXhpcz17fSksZS55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiZ3aW5kb3cuQXBleC55YXhpcyYmd2luZG93LkFwZXgueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmKGUueWF4aXM9UC5leHRlbmQoZS55YXhpcyx3aW5kb3cuQXBleC55YXhpcykpLGUueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheT9lLnlheGlzPVtQLmV4dGVuZChpLnlBeGlzLGUueWF4aXMpXTplLnlheGlzPVAuZXh0ZW5kQXJyYXkoZS55YXhpcyxpLnlBeGlzKTt2YXIgYT0hMTtlLnlheGlzLmZvckVhY2goZnVuY3Rpb24ocil7ci5sb2dhcml0aG1pYyYmKGE9ITApfSk7dmFyIHM9ZS5zZXJpZXM7cmV0dXJuIHQmJiFzJiYocz10LmNvbmZpZy5zZXJpZXMpLGEmJnMubGVuZ3RoIT09ZS55YXhpcy5sZW5ndGgmJnMubGVuZ3RoJiYoZS55YXhpcz1zLm1hcChmdW5jdGlvbihyLG4pe2lmKHIubmFtZXx8KHNbbl0ubmFtZT1cInNlcmllcy1cIi5jb25jYXQobisxKSksZS55YXhpc1tuXSlyZXR1cm4gZS55YXhpc1tuXS5zZXJpZXNOYW1lPXNbbl0ubmFtZSxlLnlheGlzW25dO3ZhciBvPVAuZXh0ZW5kKGkueUF4aXMsZS55YXhpc1swXSk7cmV0dXJuIG8uc2hvdz0hMSxvfSkpLGEmJnMubGVuZ3RoPjEmJnMubGVuZ3RoIT09ZS55YXhpcy5sZW5ndGgmJmNvbnNvbGUud2FybihcIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlc1wiKSxlfX0se2tleTpcImV4dGVuZEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuYW5ub3RhdGlvbnM9PT12b2lkIDAmJihlLmFubm90YXRpb25zPXt9LGUuYW5ub3RhdGlvbnMueWF4aXM9W10sZS5hbm5vdGF0aW9ucy54YXhpcz1bXSxlLmFubm90YXRpb25zLnBvaW50cz1bXSksZT10aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnMoZSksZT10aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnMoZSksZT10aGlzLmV4dGVuZFBvaW50QW5ub3RhdGlvbnMoZSl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBHO3JldHVybiBlLmFubm90YXRpb25zLnlheGlzPVAuZXh0ZW5kQXJyYXkoZS5hbm5vdGF0aW9ucy55YXhpcyE9PXZvaWQgMD9lLmFubm90YXRpb25zLnlheGlzOltdLHQueUF4aXNBbm5vdGF0aW9uKSxlfX0se2tleTpcImV4dGVuZFhBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRztyZXR1cm4gZS5hbm5vdGF0aW9ucy54YXhpcz1QLmV4dGVuZEFycmF5KGUuYW5ub3RhdGlvbnMueGF4aXMhPT12b2lkIDA/ZS5hbm5vdGF0aW9ucy54YXhpczpbXSx0LnhBeGlzQW5ub3RhdGlvbiksZX19LHtrZXk6XCJleHRlbmRQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEc7cmV0dXJuIGUuYW5ub3RhdGlvbnMucG9pbnRzPVAuZXh0ZW5kQXJyYXkoZS5hbm5vdGF0aW9ucy5wb2ludHMhPT12b2lkIDA/ZS5hbm5vdGF0aW9ucy5wb2ludHM6W10sdC5wb2ludEFubm90YXRpb24pLGV9fSx7a2V5OlwiY2hlY2tGb3JEYXJrVGhlbWVcIix2YWx1ZTpmdW5jdGlvbihlKXtlLnRoZW1lJiZlLnRoZW1lLm1vZGU9PT1cImRhcmtcIiYmKGUudG9vbHRpcHx8KGUudG9vbHRpcD17fSksZS50b29sdGlwLnRoZW1lIT09XCJsaWdodFwiJiYoZS50b29sdGlwLnRoZW1lPVwiZGFya1wiKSxlLmNoYXJ0LmZvcmVDb2xvcnx8KGUuY2hhcnQuZm9yZUNvbG9yPVwiI2Y2ZjdmOFwiKSxlLmNoYXJ0LmJhY2tncm91bmR8fChlLmNoYXJ0LmJhY2tncm91bmQ9XCIjNDI0MjQyXCIpLGUudGhlbWUucGFsZXR0ZXx8KGUudGhlbWUucGFsZXR0ZT1cInBhbGV0dGU0XCIpKX19LHtrZXk6XCJoYW5kbGVVc2VySW5wdXRFcnJvcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lO2lmKHQudG9vbHRpcC5zaGFyZWQmJnQudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKFwidG9vbHRpcC5zaGFyZWQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiB0b29sdGlwLmludGVyc2VjdCBpcyB0cnVlLiBUdXJuIG9mZiBhbnkgb3RoZXIgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXCIpO2lmKHQuY2hhcnQudHlwZT09PVwiYmFyXCImJnQucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwpe2lmKHQueWF4aXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGlwbGUgWSBBeGlzIGZvciBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBTd2l0Y2ggdG8gY29sdW1uIGNoYXJ0IGJ5IHNldHRpbmcgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw9ZmFsc2VcIik7dC55YXhpc1swXS5yZXZlcnNlZCYmKHQueWF4aXNbMF0ub3Bwb3NpdGU9ITApLHQueGF4aXMudG9vbHRpcC5lbmFibGVkPSExLHQueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkPSExLHQuY2hhcnQuem9vbS5lbmFibGVkPSExfXJldHVybiB0LmNoYXJ0LnR5cGUhPT1cImJhclwiJiZ0LmNoYXJ0LnR5cGUhPT1cInJhbmdlQmFyXCJ8fHQudG9vbHRpcC5zaGFyZWQmJnQueGF4aXMuY3Jvc3NoYWlycy53aWR0aD09PVwiYmFyV2lkdGhcIiYmdC5zZXJpZXMubGVuZ3RoPjEmJih0LnhheGlzLmNyb3NzaGFpcnMud2lkdGg9XCJ0aWNrV2lkdGhcIiksdC5jaGFydC50eXBlIT09XCJjYW5kbGVzdGlja1wiJiZ0LmNoYXJ0LnR5cGUhPT1cImJveFBsb3RcInx8dC55YXhpc1swXS5yZXZlcnNlZCYmKGNvbnNvbGUud2FybihcIlJldmVyc2VkIHktYXhpcyBpbiBcIi5jb25jYXQodC5jaGFydC50eXBlLFwiIGNoYXJ0IGlzIG5vdCBzdXBwb3J0ZWQuXCIpKSx0LnlheGlzWzBdLnJldmVyc2VkPSExKSx0fX1dKSx5fSgpLFFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe0YodGhpcyx5KX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdEdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbihlKXtlLnNlcmllcz1bXSxlLnNlcmllc0NhbmRsZU89W10sZS5zZXJpZXNDYW5kbGVIPVtdLGUuc2VyaWVzQ2FuZGxlTT1bXSxlLnNlcmllc0NhbmRsZUw9W10sZS5zZXJpZXNDYW5kbGVDPVtdLGUuc2VyaWVzUmFuZ2VTdGFydD1bXSxlLnNlcmllc1JhbmdlRW5kPVtdLGUuc2VyaWVzUmFuZ2U9W10sZS5zZXJpZXNQZXJjZW50PVtdLGUuc2VyaWVzR29hbHM9W10sZS5zZXJpZXNYPVtdLGUuc2VyaWVzWj1bXSxlLnNlcmllc05hbWVzPVtdLGUuc2VyaWVzVG90YWxzPVtdLGUuc2VyaWVzTG9nPVtdLGUuc2VyaWVzQ29sb3JzPVtdLGUuc3RhY2tlZFNlcmllc1RvdGFscz1bXSxlLnNlcmllc1h2YWx1ZXM9W10sZS5zZXJpZXNZdmFsdWVzPVtdLGUubGFiZWxzPVtdLGUuaGFzWGF4aXNHcm91cHM9ITEsZS5ncm91cHM9W10sZS5oYXNTZXJpZXNHcm91cHM9ITEsZS5zZXJpZXNHcm91cHM9W10sZS5jYXRlZ29yeUxhYmVscz1bXSxlLnRpbWVzY2FsZUxhYmVscz1bXSxlLm5vTGFiZWxzUHJvdmlkZWQ9ITEsZS5yZXNpemVUaW1lcj1udWxsLGUuc2VsZWN0aW9uUmVzaXplVGltZXI9bnVsbCxlLmRlbGF5ZWRFbGVtZW50cz1bXSxlLnBvaW50c0FycmF5PVtdLGUuZGF0YUxhYmVsc1JlY3RzPVtdLGUuaXNYTnVtZXJpYz0hMSxlLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSxlLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITEsZS5pc0RhdGFYWVo9ITEsZS5pc011bHRpTGluZVg9ITEsZS5pc011bHRpcGxlWUF4aXM9ITEsZS5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLGUubWluWT1OdW1iZXIuTUlOX1ZBTFVFLGUubWluWUFycj1bXSxlLm1heFlBcnI9W10sZS5tYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLGUubWluWD1OdW1iZXIuTUFYX1ZBTFVFLGUuaW5pdGlhbE1heFg9LU51bWJlci5NQVhfVkFMVUUsZS5pbml0aWFsTWluWD1OdW1iZXIuTUFYX1ZBTFVFLGUubWF4RGF0ZT0wLGUubWluRGF0ZT1OdW1iZXIuTUFYX1ZBTFVFLGUubWluWj1OdW1iZXIuTUFYX1ZBTFVFLGUubWF4Wj0tTnVtYmVyLk1BWF9WQUxVRSxlLm1pblhEaWZmPU51bWJlci5NQVhfVkFMVUUsZS55QXhpc1NjYWxlPVtdLGUueEF4aXNTY2FsZT1udWxsLGUueEF4aXNUaWNrc1Bvc2l0aW9ucz1bXSxlLnlMYWJlbHNDb29yZHM9W10sZS55VGl0bGVDb29yZHM9W10sZS5iYXJQYWRGb3JOdW1lcmljQXhpcz0wLGUucGFkSG9yaXpvbnRhbD0wLGUueFJhbmdlPTAsZS55UmFuZ2U9W10sZS56UmFuZ2U9MCxlLmRhdGFQb2ludHM9MCxlLnhUaWNrQW1vdW50PTB9fSx7a2V5OlwiZ2xvYmFsVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntjaGFydElEOm51bGwsY3VpZDpudWxsLGV2ZW50czp7YmVmb3JlTW91bnQ6W10sbW91bnRlZDpbXSx1cGRhdGVkOltdLGNsaWNrZWQ6W10sc2VsZWN0aW9uOltdLGRhdGFQb2ludFNlbGVjdGlvbjpbXSx6b29tZWQ6W10sc2Nyb2xsZWQ6W119LGNvbG9yczpbXSxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGZpbGw6e2NvbG9yczpbXX0sc3Ryb2tlOntjb2xvcnM6W119LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W119fSxyYWRhclBvbHlnb25zOntmaWxsOntjb2xvcnM6W119fSxtYXJrZXJzOntjb2xvcnM6W10sc2l6ZTplLm1hcmtlcnMuc2l6ZSxsYXJnZXN0U2l6ZTowfSxhbmltYXRpb25FbmRlZDohMSxpc1RvdWNoRGV2aWNlOlwib250b3VjaHN0YXJ0XCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzLGlzRGlydHk6ITEsaXNFeGVjQ2FsbGVkOiExLGluaXRpYWxDb25maWc6bnVsbCxpbml0aWFsU2VyaWVzOltdLGxhc3RYQXhpczpbXSxsYXN0WUF4aXM6W10sY29sdW1uU2VyaWVzOm51bGwsbGFiZWxzOltdLHRpbWVzY2FsZUxhYmVsczpbXSxub0xhYmVsc1Byb3ZpZGVkOiExLGFsbFNlcmllc0NvbGxhcHNlZDohMSxjb2xsYXBzZWRTZXJpZXM6W10sY29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxyaXNpbmdTZXJpZXM6W10sZGF0YUZvcm1hdFhOdW1lcmljOiExLGNhcHR1cmVkU2VyaWVzSW5kZXg6LTEsY2FwdHVyZWREYXRhUG9pbnRJbmRleDotMSxzZWxlY3RlZERhdGFQb2ludHM6W10sZ29sZGVuUGFkZGluZzozNSxpbnZhbGlkTG9nU2NhbGU6ITEsaWdub3JlWUF4aXNJbmRleGVzOltdLHlBeGlzU2FtZVNjYWxlSW5kaWNlczpbXSxtYXhWYWxzSW5BcnJheUluZGV4OjAscmFkaWFsU2l6ZTowLHNlbGVjdGlvbjp2b2lkIDAsem9vbUVuYWJsZWQ6ZS5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZD09PVwiem9vbVwiJiZlLmNoYXJ0LnRvb2xiYXIudG9vbHMuem9vbSYmZS5jaGFydC56b29tLmVuYWJsZWQscGFuRW5hYmxlZDplLmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkPT09XCJwYW5cIiYmZS5jaGFydC50b29sYmFyLnRvb2xzLnBhbixzZWxlY3Rpb25FbmFibGVkOmUuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQ9PT1cInNlbGVjdGlvblwiJiZlLmNoYXJ0LnRvb2xiYXIudG9vbHMuc2VsZWN0aW9uLHlheGlzOm51bGwsbW91c2Vkb3duOiExLGxhc3RDbGllbnRQb3NpdGlvbjp7fSx2aXNpYmxlWFJhbmdlOnZvaWQgMCx5VmFsdWVEZWNpbWFsOjAsdG90YWw6MCxTVkdOUzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3ZnV2lkdGg6MCxzdmdIZWlnaHQ6MCxub0RhdGE6ITEsbG9jYWxlOnt9LGRvbTp7fSxtZW1vcnk6e21ldGhvZHNUb0V4ZWM6W119LHNob3VsZEFuaW1hdGU6ITAsc2tpcExhc3RUaW1lbGluZWxhYmVsOiExLHNraXBGaXJzdFRpbWVsaW5lbGFiZWw6ITEsZGVsYXllZEVsZW1lbnRzOltdLGF4aXNDaGFydHM6ITAsaXNEYXRhWFlaOiExLHJlc2l6ZWQ6ITEscmVzaXplVGltZXI6bnVsbCxjb21ib0NoYXJ0czohMSxkYXRhQ2hhbmdlZDohMSxwcmV2aW91c1BhdGhzOltdLGFsbFNlcmllc0hhc0VxdWFsWDohMCxwb2ludHNBcnJheTpbXSxkYXRhTGFiZWxzUmVjdHM6W10sbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6W10saGFzTnVsbFZhbHVlczohMSxlYXNpbmc6bnVsbCx6b29tZWQ6ITEsZ3JpZFdpZHRoOjAsZ3JpZEhlaWdodDowLHJvdGF0ZVhMYWJlbHM6ITEsZGVmYXVsdExhYmVsczohMSx4TGFiZWxGb3JtYXR0ZXI6dm9pZCAwLHlMYWJlbEZvcm1hdHRlcnM6W10seGF4aXNUb29sdGlwRm9ybWF0dGVyOnZvaWQgMCx0dEtleUZvcm1hdHRlcjp2b2lkIDAsdHRWYWw6dm9pZCAwLHR0WkZvcm1hdHRlcjp2b2lkIDAsTElORV9IRUlHSFRfUkFUSU86MS42MTgseEF4aXNMYWJlbHNIZWlnaHQ6MCx4QXhpc0dyb3VwTGFiZWxzSGVpZ2h0OjAseEF4aXNMYWJlbHNXaWR0aDowLHlBeGlzTGFiZWxzV2lkdGg6MCxzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHRyYW5zbGF0ZVlBeGlzWDpbXSx5QXhpc1dpZHRoczpbXSx0cmFuc2xhdGVYQXhpc1k6MCx0cmFuc2xhdGVYQXhpc1g6MCx0b29sdGlwOm51bGx9fX0se2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdsb2JhbFZhcnMoZSk7cmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnModCksdC5pbml0aWFsQ29uZmlnPVAuZXh0ZW5kKHt9LGUpLHQuaW5pdGlhbFNlcmllcz1QLmNsb25lKGUuc2VyaWVzKSx0Lmxhc3RYQXhpcz1QLmNsb25lKHQuaW5pdGlhbENvbmZpZy54YXhpcyksdC5sYXN0WUF4aXM9UC5jbG9uZSh0LmluaXRpYWxDb25maWcueWF4aXMpLHR9fV0pLHl9KCksYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLm9wdHM9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IEllKHRoaXMub3B0cykuaW5pdCh7cmVzcG9uc2l2ZU92ZXJyaWRlOiExfSk7cmV0dXJue2NvbmZpZzplLGdsb2JhbHM6bmV3IFFlKCkuaW5pdChlKX19fV0pLHl9KCksc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vcHRzPW51bGwsdGhpcy5zZXJpZXNJbmRleD0wfXJldHVybiBZKHksW3trZXk6XCJjbGlwcGVkSW1nQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXQuY29uZmlnLGE9cGFyc2VJbnQodC5nbG9iYWxzLmdyaWRXaWR0aCwxMCkscz1wYXJzZUludCh0Lmdsb2JhbHMuZ3JpZEhlaWdodCwxMCkscj1hPnM/YTpzLG49ZS5pbWFnZSxvPTAsaD0wO2Uud2lkdGg9PT12b2lkIDAmJmUuaGVpZ2h0PT09dm9pZCAwP2kuZmlsbC5pbWFnZS53aWR0aCE9PXZvaWQgMCYmaS5maWxsLmltYWdlLmhlaWdodCE9PXZvaWQgMD8obz1pLmZpbGwuaW1hZ2Uud2lkdGgrMSxoPWkuZmlsbC5pbWFnZS5oZWlnaHQpOihvPXIrMSxoPXIpOihvPWUud2lkdGgsaD1lLmhlaWdodCk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuZ2xvYmFscy5TVkdOUyxcInBhdHRlcm5cIik7TS5zZXRBdHRycyhjLHtpZDplLnBhdHRlcm5JRCxwYXR0ZXJuVW5pdHM6ZS5wYXR0ZXJuVW5pdHM/ZS5wYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHdpZHRoOm8rXCJweFwiLGhlaWdodDpoK1wicHhcIn0pO3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJpbWFnZVwiKTtjLmFwcGVuZENoaWxkKGQpLGQuc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluayxcImhyZWZcIixuKSxNLnNldEF0dHJzKGQse3g6MCx5OjAscHJlc2VydmVBc3BlY3RSYXRpbzpcIm5vbmVcIix3aWR0aDpvK1wicHhcIixoZWlnaHQ6aCtcInB4XCJ9KSxkLnN0eWxlLm9wYWNpdHk9ZS5vcGFjaXR5LHQuZ2xvYmFscy5kb20uZWxEZWZzLm5vZGUuYXBwZW5kQ2hpbGQoYyl9fSx7a2V5OlwiZ2V0U2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10LmNvbmZpZy5jaGFydC50eXBlO3JldHVybihpPT09XCJiYXJcInx8aT09PVwicmFuZ2VCYXJcIikmJnQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8aT09PVwiaGVhdG1hcFwifHxpPT09XCJ0cmVlbWFwXCI/dGhpcy5zZXJpZXNJbmRleD1lLnNlcmllc051bWJlcjp0aGlzLnNlcmllc0luZGV4PWUuc2VyaWVzTnVtYmVyJXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHRoaXMuc2VyaWVzSW5kZXh9fSx7a2V5OlwiZmlsbFBhdGhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7dGhpcy5vcHRzPWU7dmFyIGksYSxzLHI9dGhpcy53LmNvbmZpZzt0aGlzLnNlcmllc0luZGV4PXRoaXMuZ2V0U2VyaWVzSW5kZXgoZSk7dmFyIG49dGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07dC5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSE9PXZvaWQgMCYmKG49dC5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksdHlwZW9mIG49PVwiZnVuY3Rpb25cIiYmKG49bih7c2VyaWVzSW5kZXg6dGhpcy5zZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDplLmRhdGFQb2ludEluZGV4LHZhbHVlOmUudmFsdWUsdzp0fSkpO3ZhciBvPWUuZmlsbFR5cGU/ZS5maWxsVHlwZTp0aGlzLmdldEZpbGxUeXBlKHRoaXMuc2VyaWVzSW5kZXgpLGg9QXJyYXkuaXNBcnJheShyLmZpbGwub3BhY2l0eSk/ci5maWxsLm9wYWNpdHlbdGhpcy5zZXJpZXNJbmRleF06ci5maWxsLm9wYWNpdHk7ZS5jb2xvciYmKG49ZS5jb2xvciksbnx8KG49XCIjZmZmXCIsY29uc29sZS53YXJuKFwidW5kZWZpbmVkIGNvbG9yIC0gQXBleENoYXJ0c1wiKSk7dmFyIGM9bjtpZihuLmluZGV4T2YoXCJyZ2JcIik9PT0tMT9uLmxlbmd0aDw5JiYoYz1QLmhleFRvUmdiYShuLGgpKTpuLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYoaD1QLmdldE9wYWNpdHlGcm9tUkdCQShuKSksZS5vcGFjaXR5JiYoaD1lLm9wYWNpdHkpLG89PT1cInBhdHRlcm5cIiYmKGE9dGhpcy5oYW5kbGVQYXR0ZXJuRmlsbCh7ZmlsbENvbmZpZzplLmZpbGxDb25maWcscGF0dGVybkZpbGw6YSxmaWxsQ29sb3I6bixmaWxsT3BhY2l0eTpoLGRlZmF1bHRDb2xvcjpjfSkpLG89PT1cImdyYWRpZW50XCImJihzPXRoaXMuaGFuZGxlR3JhZGllbnRGaWxsKHtmaWxsQ29uZmlnOmUuZmlsbENvbmZpZyxmaWxsQ29sb3I6bixmaWxsT3BhY2l0eTpoLGk6dGhpcy5zZXJpZXNJbmRleH0pKSxvPT09XCJpbWFnZVwiKXt2YXIgZD1yLmZpbGwuaW1hZ2Uuc3JjLGc9ZS5wYXR0ZXJuSUQ/ZS5wYXR0ZXJuSUQ6XCJcIjt0aGlzLmNsaXBwZWRJbWdBcmVhKHtvcGFjaXR5OmgsaW1hZ2U6QXJyYXkuaXNBcnJheShkKT9lLnNlcmllc051bWJlcjxkLmxlbmd0aD9kW2Uuc2VyaWVzTnVtYmVyXTpkWzBdOmQsd2lkdGg6ZS53aWR0aD9lLndpZHRoOnZvaWQgMCxoZWlnaHQ6ZS5oZWlnaHQ/ZS5oZWlnaHQ6dm9pZCAwLHBhdHRlcm5Vbml0czplLnBhdHRlcm5Vbml0cyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KHQuZ2xvYmFscy5jdWlkKS5jb25jYXQoZS5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGcpfSksaT1cInVybCgjcGF0dGVyblwiLmNvbmNhdCh0Lmdsb2JhbHMuY3VpZCkuY29uY2F0KGUuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChnLFwiKVwiKX1lbHNlIGk9bz09PVwiZ3JhZGllbnRcIj9zOm89PT1cInBhdHRlcm5cIj9hOmM7cmV0dXJuIGUuc29saWQmJihpPWMpLGl9fSx7a2V5OlwiZ2V0RmlsbFR5cGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkodC5jb25maWcuZmlsbC50eXBlKT90LmNvbmZpZy5maWxsLnR5cGVbZV06dC5jb25maWcuZmlsbC50eXBlfX0se2tleTpcImdldEZpbGxDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PWUuY29uZmlnLGk9dGhpcy5vcHRzLGE9W107cmV0dXJuIGUuZ2xvYmFscy5jb21ib0NoYXJ0cz9lLmNvbmZpZy5zZXJpZXNbdGhpcy5zZXJpZXNJbmRleF0udHlwZT09PVwibGluZVwiP0FycmF5LmlzQXJyYXkoZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKGUuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KGUuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT1lLmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKGUuZ2xvYmFscy5maWxsLmNvbG9ycyk6dC5jaGFydC50eXBlPT09XCJsaW5lXCI/QXJyYXkuaXNBcnJheShlLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT1lLmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2goZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkoZS5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPWUuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2goZS5nbG9iYWxzLmZpbGwuY29sb3JzKSxpLmZpbGxDb2xvcnMhPT12b2lkIDAmJihhPVtdLEFycmF5LmlzQXJyYXkoaS5maWxsQ29sb3JzKT9hPWkuZmlsbENvbG9ycy5zbGljZSgpOmEucHVzaChpLmZpbGxDb2xvcnMpKSxhfX0se2tleTpcImhhbmRsZVBhdHRlcm5GaWxsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maWxsQ29uZmlnLGk9ZS5wYXR0ZXJuRmlsbCxhPWUuZmlsbENvbG9yLHM9ZS5maWxsT3BhY2l0eSxyPWUuZGVmYXVsdENvbG9yLG49dGhpcy53LmNvbmZpZy5maWxsO3QmJihuPXQpO3ZhciBvPXRoaXMub3B0cyxoPW5ldyBNKHRoaXMuY3R4KSxjPUFycmF5LmlzQXJyYXkobi5wYXR0ZXJuLnN0cm9rZVdpZHRoKT9uLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF06bi5wYXR0ZXJuLnN0cm9rZVdpZHRoLGQ9YTtyZXR1cm4gQXJyYXkuaXNBcnJheShuLnBhdHRlcm4uc3R5bGUpP2k9bi5wYXR0ZXJuLnN0eWxlW28uc2VyaWVzTnVtYmVyXSE9PXZvaWQgMD9oLmRyYXdQYXR0ZXJuKG4ucGF0dGVybi5zdHlsZVtvLnNlcmllc051bWJlcl0sbi5wYXR0ZXJuLndpZHRoLG4ucGF0dGVybi5oZWlnaHQsZCxjLHMpOnI6aT1oLmRyYXdQYXR0ZXJuKG4ucGF0dGVybi5zdHlsZSxuLnBhdHRlcm4ud2lkdGgsbi5wYXR0ZXJuLmhlaWdodCxkLGMscyksaX19LHtrZXk6XCJoYW5kbGVHcmFkaWVudEZpbGxcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZpbGxDb2xvcixpPWUuZmlsbE9wYWNpdHksYT1lLmZpbGxDb25maWcscz1lLmkscj10aGlzLncuY29uZmlnLmZpbGw7YSYmKHI9WChYKHt9LHIpLGEpKTt2YXIgbixvPXRoaXMub3B0cyxoPW5ldyBNKHRoaXMuY3R4KSxjPW5ldyBQLGQ9ci5ncmFkaWVudC50eXBlLGc9dCxwPXIuZ3JhZGllbnQub3BhY2l0eUZyb209PT12b2lkIDA/aTpBcnJheS5pc0FycmF5KHIuZ3JhZGllbnQub3BhY2l0eUZyb20pP3IuZ3JhZGllbnQub3BhY2l0eUZyb21bc106ci5ncmFkaWVudC5vcGFjaXR5RnJvbTtnLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYocD1QLmdldE9wYWNpdHlGcm9tUkdCQShnKSk7dmFyIGY9ci5ncmFkaWVudC5vcGFjaXR5VG89PT12b2lkIDA/aTpBcnJheS5pc0FycmF5KHIuZ3JhZGllbnQub3BhY2l0eVRvKT9yLmdyYWRpZW50Lm9wYWNpdHlUb1tzXTpyLmdyYWRpZW50Lm9wYWNpdHlUbztpZihyLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnM9PT12b2lkIDB8fHIuZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9ycy5sZW5ndGg9PT0wKW49ci5ncmFkaWVudC5zaGFkZT09PVwiZGFya1wiP2Muc2hhZGVDb2xvcigtMSpwYXJzZUZsb2F0KHIuZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLHQuaW5kZXhPZihcInJnYlwiKT4tMT9QLnJnYjJoZXgodCk6dCk6Yy5zaGFkZUNvbG9yKHBhcnNlRmxvYXQoci5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksdC5pbmRleE9mKFwicmdiXCIpPi0xP1AucmdiMmhleCh0KTp0KTtlbHNlIGlmKHIuZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tvLnNlcmllc051bWJlcl0pe3ZhciBiPXIuZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tvLnNlcmllc051bWJlcl07bj1iLGIuaW5kZXhPZihcInJnYmFcIik+LTEmJihmPVAuZ2V0T3BhY2l0eUZyb21SR0JBKGIpKX1lbHNlIG49dDtpZihyLmdyYWRpZW50LmdyYWRpZW50RnJvbSYmKGc9ci5ncmFkaWVudC5ncmFkaWVudEZyb20pLHIuZ3JhZGllbnQuZ3JhZGllbnRUbyYmKG49ci5ncmFkaWVudC5ncmFkaWVudFRvKSxyLmdyYWRpZW50LmludmVyc2VDb2xvcnMpe3ZhciBtPWc7Zz1uLG49bX1yZXR1cm4gZy5pbmRleE9mKFwicmdiXCIpPi0xJiYoZz1QLnJnYjJoZXgoZykpLG4uaW5kZXhPZihcInJnYlwiKT4tMSYmKG49UC5yZ2IyaGV4KG4pKSxoLmRyYXdHcmFkaWVudChkLGcsbixwLGYsby5zaXplLHIuZ3JhZGllbnQuc3RvcHMsci5ncmFkaWVudC5jb2xvclN0b3BzLHMpfX1dKSx5fSgpLFRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlLHQpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcInNldEdsb2JhbE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMubWFya2Vycy5zaXplPUFycmF5LmlzQXJyYXkoZS5jb25maWcubWFya2Vycy5zaXplKT9lLmNvbmZpZy5tYXJrZXJzLnNpemU6W2UuY29uZmlnLm1hcmtlcnMuc2l6ZV0sZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5sZW5ndGg+MCl7aWYoZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5sZW5ndGg8ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgrMSlmb3IodmFyIHQ9MDt0PD1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDt0KyspZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XT09PXZvaWQgMCYmZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5wdXNoKGUuZ2xvYmFscy5tYXJrZXJzLnNpemVbMF0pfWVsc2UgZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1lLmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBlLmNvbmZpZy5tYXJrZXJzLnNpemV9KX19LHtrZXk6XCJwbG90Q2hhcnRNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHMscj1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMCYmYXJndW1lbnRzWzRdLG49dGhpcy53LG89dCxoPWUsYz1udWxsLGQ9bmV3IE0odGhpcy5jdHgpLGc9bi5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmbi5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg7aWYoKG4uZ2xvYmFscy5tYXJrZXJzLnNpemVbdF0+MHx8cnx8ZykmJihjPWQuZ3JvdXAoe2NsYXNzOnJ8fGc/XCJcIjpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pKS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChuLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkoaC54KSlmb3IodmFyIHA9MDtwPGgueC5sZW5ndGg7cCsrKXt2YXIgZj1pO2k9PT0xJiZwPT09MCYmKGY9MCksaT09PTEmJnA9PT0xJiYoZj0xKTt2YXIgYj1cImFwZXhjaGFydHMtbWFya2VyXCI7aWYobi5jb25maWcuY2hhcnQudHlwZSE9PVwibGluZVwiJiZuLmNvbmZpZy5jaGFydC50eXBlIT09XCJhcmVhXCJ8fG4uZ2xvYmFscy5jb21ib0NoYXJ0c3x8bi5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChiKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKSwoQXJyYXkuaXNBcnJheShuLmNvbmZpZy5tYXJrZXJzLnNpemUpP24uZ2xvYmFscy5tYXJrZXJzLnNpemVbdF0+MDpuLmNvbmZpZy5tYXJrZXJzLnNpemU+MCl8fHJ8fGcpe1AuaXNOdW1iZXIoaC55W3BdKT9iKz1cIiB3XCIuY29uY2F0KFAucmFuZG9tSWQoKSk6Yj1cImFwZXhjaGFydHMtbnVsbHBvaW50XCI7dmFyIG09dGhpcy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOmIsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpmfSk7bi5jb25maWcuc2VyaWVzW29dLmRhdGFbZl0mJihuLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtmXS5maWxsQ29sb3ImJihtLnBvaW50RmlsbENvbG9yPW4uY29uZmlnLnNlcmllc1tvXS5kYXRhW2ZdLmZpbGxDb2xvciksbi5jb25maWcuc2VyaWVzW29dLmRhdGFbZl0uc3Ryb2tlQ29sb3ImJihtLnBvaW50U3Ryb2tlQ29sb3I9bi5jb25maWcuc2VyaWVzW29dLmRhdGFbZl0uc3Ryb2tlQ29sb3IpKSxhJiYobS5wU2l6ZT1hKSwoaC54W3BdPDB8fGgueFtwXT5uLmdsb2JhbHMuZ3JpZFdpZHRofHxoLnlbcF08LW4uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHxoLnlbcF0+bi5nbG9iYWxzLmdyaWRIZWlnaHQrbi5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUpJiYobS5wU2l6ZT0wKSwocz1kLmRyYXdNYXJrZXIoaC54W3BdLGgueVtwXSxtKSkuYXR0cihcInJlbFwiLGYpLHMuYXR0cihcImpcIixmKSxzLmF0dHIoXCJpbmRleFwiLHQpLHMubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsbS5wU2l6ZSksbmV3ICQodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihzLHQsZiksdGhpcy5hZGRFdmVudHMocyksYyYmYy5hZGQocyl9ZWxzZSBuLmdsb2JhbHMucG9pbnRzQXJyYXlbdF09PT12b2lkIDAmJihuLmdsb2JhbHMucG9pbnRzQXJyYXlbdF09W10pLG4uZ2xvYmFscy5wb2ludHNBcnJheVt0XS5wdXNoKFtoLnhbcF0saC55W3BdXSl9cmV0dXJuIGN9fSx7a2V5OlwiZ2V0TWFya2VyQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jc3NDbGFzcyxpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9YT09PXZvaWQgMD9udWxsOmEscj1lLmZpbmlzaFJhZGl1cyxuPXI9PT12b2lkIDA/bnVsbDpyLG89dGhpcy53LGg9dGhpcy5nZXRNYXJrZXJTdHlsZShpKSxjPW8uZ2xvYmFscy5tYXJrZXJzLnNpemVbaV0sZD1vLmNvbmZpZy5tYXJrZXJzO3JldHVybiBzIT09bnVsbCYmZC5kaXNjcmV0ZS5sZW5ndGgmJmQuZGlzY3JldGUubWFwKGZ1bmN0aW9uKGcpe2cuc2VyaWVzSW5kZXg9PT1pJiZnLmRhdGFQb2ludEluZGV4PT09cyYmKGgucG9pbnRTdHJva2VDb2xvcj1nLnN0cm9rZUNvbG9yLGgucG9pbnRGaWxsQ29sb3I9Zy5maWxsQ29sb3IsYz1nLnNpemUsaC5wb2ludFNoYXBlPWcuc2hhcGUpfSkse3BTaXplOm49PT1udWxsP2M6bixwUmFkaXVzOmQucmFkaXVzLHdpZHRoOkFycmF5LmlzQXJyYXkoZC53aWR0aCk/ZC53aWR0aFtpXTpkLndpZHRoLGhlaWdodDpBcnJheS5pc0FycmF5KGQuaGVpZ2h0KT9kLmhlaWdodFtpXTpkLmhlaWdodCxwb2ludFN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoZC5zdHJva2VXaWR0aCk/ZC5zdHJva2VXaWR0aFtpXTpkLnN0cm9rZVdpZHRoLHBvaW50U3Ryb2tlQ29sb3I6aC5wb2ludFN0cm9rZUNvbG9yLHBvaW50RmlsbENvbG9yOmgucG9pbnRGaWxsQ29sb3Isc2hhcGU6aC5wb2ludFNoYXBlfHwoQXJyYXkuaXNBcnJheShkLnNoYXBlKT9kLnNoYXBlW2ldOmQuc2hhcGUpLGNsYXNzOnQscG9pbnRTdHJva2VPcGFjaXR5OkFycmF5LmlzQXJyYXkoZC5zdHJva2VPcGFjaXR5KT9kLnN0cm9rZU9wYWNpdHlbaV06ZC5zdHJva2VPcGFjaXR5LHBvaW50U3Ryb2tlRGFzaEFycmF5OkFycmF5LmlzQXJyYXkoZC5zdHJva2VEYXNoQXJyYXkpP2Quc3Ryb2tlRGFzaEFycmF5W2ldOmQuc3Ryb2tlRGFzaEFycmF5LHBvaW50RmlsbE9wYWNpdHk6QXJyYXkuaXNBcnJheShkLmZpbGxPcGFjaXR5KT9kLmZpbGxPcGFjaXR5W2ldOmQuZmlsbE9wYWNpdHksc2VyaWVzSW5kZXg6aX19fSx7a2V5OlwiYWRkRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IE0odGhpcy5jdHgpO2Uubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLmN0eCxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LGUpKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LGUpKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5jb25maWcubWFya2Vycy5vbkNsaWNrKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsdC5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCxlKSx7cGFzc2l2ZTohMH0pfX0se2tleTpcImdldE1hcmtlclN0eWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dC5nbG9iYWxzLm1hcmtlcnMuY29sb3JzLGE9dC5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnx8dC5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7cmV0dXJue3BvaW50U3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShhKT9hW2VdOmEscG9pbnRGaWxsQ29sb3I6QXJyYXkuaXNBcnJheShpKT9pW2VdOml9fX1dKSx5fSgpLEtlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkfXJldHVybiBZKHksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBNKHRoaXMuY3R4KSxyPWkucmVhbEluZGV4LG49aS5wb2ludHNQb3Msbz1pLnpSYXRpbyxoPWkuZWxQYXJlbnQsYz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgYXBleGNoYXJ0cy1zZXJpZXMtXCIuY29uY2F0KGEuY29uZmlnLmNoYXJ0LnR5cGUpfSk7aWYoYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChhLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkobi54KSlmb3IodmFyIGQ9MDtkPG4ueC5sZW5ndGg7ZCsrKXt2YXIgZz10KzEscD0hMDt0PT09MCYmZD09PTAmJihnPTApLHQ9PT0wJiZkPT09MSYmKGc9MSk7dmFyIGY9MCxiPWEuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl07aWYobyE9PTEvMCl7dmFyIG09YS5jb25maWcucGxvdE9wdGlvbnMuYnViYmxlO2I9YS5nbG9iYWxzLnNlcmllc1pbcl1bZ10sbS56U2NhbGluZyYmKGIvPW8pLG0ubWluQnViYmxlUmFkaXVzJiZiPG0ubWluQnViYmxlUmFkaXVzJiYoYj1tLm1pbkJ1YmJsZVJhZGl1cyksbS5tYXhCdWJibGVSYWRpdXMmJmI+bS5tYXhCdWJibGVSYWRpdXMmJihiPW0ubWF4QnViYmxlUmFkaXVzKX1hLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWR8fChmPWIpO3ZhciB3PW4ueFtkXSxBPW4ueVtkXTtpZihmPWZ8fDAsQSE9PW51bGwmJmEuZ2xvYmFscy5zZXJpZXNbcl1bZ10hPT12b2lkIDB8fChwPSExKSxwKXt2YXIgbD10aGlzLmRyYXdQb2ludCh3LEEsZixiLHIsZyx0KTtjLmFkZChsKX1oLmFkZChjKX19fSx7a2V5OlwiZHJhd1BvaW50XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIsbil7dmFyIG89dGhpcy53LGg9cyxjPW5ldyBnZSh0aGlzLmN0eCksZD1uZXcgJCh0aGlzLmN0eCksZz1uZXcgc2UodGhpcy5jdHgpLHA9bmV3IFRlKHRoaXMuY3R4KSxmPW5ldyBNKHRoaXMuY3R4KSxiPXAuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpcImFwZXhjaGFydHMtbWFya2VyXCIsc2VyaWVzSW5kZXg6aCxkYXRhUG9pbnRJbmRleDpyLGZpbmlzaFJhZGl1czpvLmNvbmZpZy5jaGFydC50eXBlPT09XCJidWJibGVcInx8by5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZvLmNvbmZpZy5zZXJpZXNbc10mJm8uY29uZmlnLnNlcmllc1tzXS50eXBlPT09XCJidWJibGVcIj9hOm51bGx9KTthPWIucFNpemU7dmFyIG0sdz1nLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6cyxkYXRhUG9pbnRJbmRleDpyLGNvbG9yOmIucG9pbnRGaWxsQ29sb3IscGF0dGVyblVuaXRzOlwib2JqZWN0Qm91bmRpbmdCb3hcIix2YWx1ZTpvLmdsb2JhbHMuc2VyaWVzW3NdW25dfSk7aWYoYi5zaGFwZT09PVwiY2lyY2xlXCI/bT1mLmRyYXdDaXJjbGUoaSk6Yi5zaGFwZSE9PVwic3F1YXJlXCImJmIuc2hhcGUhPT1cInJlY3RcInx8KG09Zi5kcmF3UmVjdCgwLDAsYi53aWR0aC1iLnBvaW50U3Ryb2tlV2lkdGgvMixiLmhlaWdodC1iLnBvaW50U3Ryb2tlV2lkdGgvMixiLnBSYWRpdXMpKSxvLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtyXSYmby5jb25maWcuc2VyaWVzW2hdLmRhdGFbcl0uZmlsbENvbG9yJiYodz1vLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtyXS5maWxsQ29sb3IpLG0uYXR0cih7eDplLWIud2lkdGgvMi1iLnBvaW50U3Ryb2tlV2lkdGgvMix5OnQtYi5oZWlnaHQvMi1iLnBvaW50U3Ryb2tlV2lkdGgvMixjeDplLGN5OnQsZmlsbDp3LFwiZmlsbC1vcGFjaXR5XCI6Yi5wb2ludEZpbGxPcGFjaXR5LHN0cm9rZTpiLnBvaW50U3Ryb2tlQ29sb3IscjphLFwic3Ryb2tlLXdpZHRoXCI6Yi5wb2ludFN0cm9rZVdpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOmIucG9pbnRTdHJva2VEYXNoQXJyYXksXCJzdHJva2Utb3BhY2l0eVwiOmIucG9pbnRTdHJva2VPcGFjaXR5fSksby5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgQT1vLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2QuZHJvcFNoYWRvdyhtLEEscyl9aWYoIXRoaXMuaW5pdGlhbEFuaW18fG8uZ2xvYmFscy5kYXRhQ2hhbmdlZHx8by5nbG9iYWxzLnJlc2l6ZWQpby5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwO2Vsc2V7dmFyIGw9by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZDtjLmFuaW1hdGVNYXJrZXIobSwwLGIuc2hhcGU9PT1cImNpcmNsZVwiP2E6e3dpZHRoOmIud2lkdGgsaGVpZ2h0OmIuaGVpZ2h0fSxsLG8uZ2xvYmFscy5lYXNpbmcsZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2MuYW5pbWF0aW9uQ29tcGxldGVkKG0pfSwxMDApfSl9aWYoby5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZiLnNoYXBlPT09XCJjaXJjbGVcIilpZih0aGlzLmR5bmFtaWNBbmltKXt2YXIgdSx4LHYsayxTPW8uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZDsoaz1vLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXSYmby5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc11bbl0pIT1udWxsJiYodT1rLngseD1rLnksdj1rLnIhPT12b2lkIDA/ay5yOmEpO2Zvcih2YXIgQz0wO0M8by5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7QysrKW8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbQ10uaW5kZXg9PT1zJiYoUz0xLGE9MCk7ZT09PTAmJnQ9PT0wJiYoYT0wKSxjLmFuaW1hdGVDaXJjbGUobSx7Y3g6dSxjeTp4LHI6dn0se2N4OmUsY3k6dCxyOmF9LFMsby5nbG9iYWxzLmVhc2luZyl9ZWxzZSBtLmF0dHIoe3I6YX0pO3JldHVybiBtLmF0dHIoe3JlbDpyLGo6cixpbmRleDpzLFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiOmF9KSxkLnNldFNlbGVjdGlvbkZpbHRlcihtLHMscikscC5hZGRFdmVudHMobSksbS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSxtfX0se2tleTpcImNlbnRlclRleHRJbkJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztyZXR1cm57eTplKz1wYXJzZUludCh0LmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS80fX19XSkseX0oKSx3ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZGF0YUxhYmVsc0NvcnJlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscixuKXt2YXIgbz10aGlzLncsaD0hMSxjPW5ldyBNKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaSxuKSxkPWMud2lkdGgsZz1jLmhlaWdodDt0PDAmJih0PTApLHQ+by5nbG9iYWxzLmdyaWRIZWlnaHQrZyYmKHQ9by5nbG9iYWxzLmdyaWRIZWlnaHQrZy8yKSxvLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdPT09dm9pZCAwJiYoby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXT1bXSksby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5wdXNoKHt4OmUseTp0LHdpZHRoOmQsaGVpZ2h0Omd9KTt2YXIgcD1vLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLmxlbmd0aC0yLGY9by5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdIT09dm9pZCAwP28uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXVtvLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0ubGVuZ3RoLTFdOjA7aWYoby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXVtwXSE9PXZvaWQgMCl7dmFyIGI9by5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXVtmXTsoZT5iLngrYi53aWR0aHx8dD5iLnkrYi5oZWlnaHR8fHQrZzxiLnl8fGUrZDxiLngpJiYoaD0hMCl9cmV0dXJuKHM9PT0wfHxyKSYmKGg9ITApLHt4OmUseTp0LHRleHRSZWN0czpjLGRyYXduZXh0TGFiZWw6aH19fSx7a2V5OlwiZHJhd0RhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLnR5cGUsYT1lLnBvcyxzPWUuaSxyPWUuaixuPWUuaXNSYW5nZVN0YXJ0LG89ZS5zdHJva2VXaWR0aCxoPW89PT12b2lkIDA/MjpvLGM9dGhpcy53LGQ9bmV3IE0odGhpcy5jdHgpLGc9Yy5jb25maWcuZGF0YUxhYmVscyxwPTAsZj0wLGI9cixtPW51bGw7aWYoIWcuZW5hYmxlZHx8IUFycmF5LmlzQXJyYXkoYS54KSlyZXR1cm4gbTttPWQuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7Zm9yKHZhciB3PTA7dzxhLngubGVuZ3RoO3crKylpZihwPWEueFt3XStnLm9mZnNldFgsZj1hLnlbd10rZy5vZmZzZXRZK2gsIWlzTmFOKHApKXtyPT09MSYmdz09PTAmJihiPTApLHI9PT0xJiZ3PT09MSYmKGI9MSk7dmFyIEE9Yy5nbG9iYWxzLnNlcmllc1tzXVtiXTtpPT09XCJyYW5nZUFyZWFcIiYmKEE9bj9jLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtiXTpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bYl0pO3ZhciBsPVwiXCIsdT1mdW5jdGlvbih4KXtyZXR1cm4gYy5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIoeCx7Y3R4OnQuY3R4LHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6Yix3OmN9KX07Yy5jb25maWcuY2hhcnQudHlwZT09PVwiYnViYmxlXCI/KGw9dShBPWMuZ2xvYmFscy5zZXJpZXNaW3NdW2JdKSxmPWEueVt3XSxmPW5ldyBLZSh0aGlzLmN0eCkuY2VudGVyVGV4dEluQnViYmxlKGYscyxiKS55KTpBIT09dm9pZCAwJiYobD11KEEpKSx0aGlzLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpwLHk6Zix0ZXh0OmwsaTpzLGo6YixwYXJlbnQ6bSxvZmZzZXRDb3JyZWN0aW9uOiEwLGRhdGFMYWJlbHNDb25maWc6Yy5jb25maWcuZGF0YUxhYmVsc30pfXJldHVybiBtfX0se2tleTpcInBsb3REYXRhTGFiZWxzVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KSxhPWUueCxzPWUueSxyPWUuaSxuPWUuaixvPWUudGV4dCxoPWUudGV4dEFuY2hvcixjPWUuZm9udFNpemUsZD1lLnBhcmVudCxnPWUuZGF0YUxhYmVsc0NvbmZpZyxwPWUuY29sb3IsZj1lLmFsd2F5c0RyYXdEYXRhTGFiZWwsYj1lLm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KHQuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmdC5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwKSl7dmFyIG09e3g6YSx5OnMsZHJhd25leHRMYWJlbDohMCx0ZXh0UmVjdHM6bnVsbH07YiYmKG09dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihhLHMsbyxyLG4sZixwYXJzZUludChnLnN0eWxlLmZvbnRTaXplLDEwKSkpLHQuZ2xvYmFscy56b29tZWR8fChhPW0ueCxzPW0ueSksbS50ZXh0UmVjdHMmJihhPC0yMC1tLnRleHRSZWN0cy53aWR0aHx8YT50Lmdsb2JhbHMuZ3JpZFdpZHRoK20udGV4dFJlY3RzLndpZHRoKzMwKSYmKG89XCJcIik7dmFyIHc9dC5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW3JdOygodC5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCJ8fHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCIpJiZ0LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fHQuY29uZmlnLmRhdGFMYWJlbHMuZGlzdHJpYnV0ZWQpJiYodz10Lmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbbl0pLHR5cGVvZiB3PT1cImZ1bmN0aW9uXCImJih3PXcoe3Nlcmllczp0Lmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6bix3OnR9KSkscCYmKHc9cCk7dmFyIEE9Zy5vZmZzZXRYLGw9Zy5vZmZzZXRZO2lmKHQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImJhclwiJiZ0LmNvbmZpZy5jaGFydC50eXBlIT09XCJyYW5nZUJhclwifHwoQT0wLGw9MCksbS5kcmF3bmV4dExhYmVsKXt2YXIgdT1pLmRyYXdUZXh0KHt3aWR0aDoxMDAsaGVpZ2h0OnBhcnNlSW50KGcuc3R5bGUuZm9udFNpemUsMTApLHg6YStBLHk6cytsLGZvcmVDb2xvcjp3LHRleHRBbmNob3I6aHx8Zy50ZXh0QW5jaG9yLHRleHQ6byxmb250U2l6ZTpjfHxnLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6Zy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6Zy5zdHlsZS5mb250V2VpZ2h0fHxcIm5vcm1hbFwifSk7aWYodS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsXCIsY3g6YSxjeTpzfSksZy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB4PWcuZHJvcFNoYWRvdztuZXcgJCh0aGlzLmN0eCkuZHJvcFNoYWRvdyh1LHgpfWQuYWRkKHUpLHQuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT09PXZvaWQgMCYmKHQuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT1bXSksdC5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdLnB1c2gobil9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCxzPWEucGFkZGluZyxyPWEucGFkZGluZy8yLG49dC53aWR0aCxvPXQuaGVpZ2h0LGg9bmV3IE0odGhpcy5jdHgpLmRyYXdSZWN0KHQueC1zLHQueS1yLzIsbisyKnMsbytyLGEuYm9yZGVyUmFkaXVzLGkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ9PT1cInRyYW5zcGFyZW50XCI/XCIjZmZmXCI6aS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxhLm9wYWNpdHksYS5ib3JkZXJXaWR0aCxhLmJvcmRlckNvbG9yKTtyZXR1cm4gYS5kcm9wU2hhZG93LmVuYWJsZWQmJm5ldyAkKHRoaXMuY3R4KS5kcm9wU2hhZG93KGgsYS5kcm9wU2hhZG93KSxofX0se2tleTpcImRhdGFMYWJlbHNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7aWYoZS5jb25maWcuY2hhcnQudHlwZSE9PVwiYnViYmxlXCIpZm9yKHZhciB0PWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHRcIiksaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgYT10W2ldLHM9YS5nZXRCQm94KCkscj1udWxsO2lmKHMud2lkdGgmJnMuaGVpZ2h0JiYocj10aGlzLmFkZEJhY2tncm91bmRUb0RhdGFMYWJlbChhLHMpKSxyKXthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIubm9kZSxhKTt2YXIgbj1hLmdldEF0dHJpYnV0ZShcImZpbGxcIik7ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhZS5nbG9iYWxzLnJlc2l6ZWQmJiFlLmdsb2JhbHMuZGF0YUNoYW5nZWQ/ci5hbmltYXRlKCkuYXR0cih7ZmlsbDpufSk6ci5hdHRyKHtmaWxsOm59KSxhLnNldEF0dHJpYnV0ZShcImZpbGxcIixlLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZm9yZUNvbG9yKX19fX0se2tleTpcImJyaW5nRm9yd2FyZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMudyx0PWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpLGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzOmxhc3QtY2hpbGRcIiksYT0wO2E8dC5sZW5ndGg7YSsrKWkmJmkuaW5zZXJ0QmVmb3JlKHRbYV0saS5uZXh0U2libGluZyl9fV0pLHl9KCksaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzPVwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwifXJldHVybiBZKHksW3trZXk6XCJnZXRBbGxTZXJpZXNFbHNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXNlcmllc1wiKX19LHtrZXk6XCJnZXRTZXJpZXNCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXIgLmFwZXhjaGFydHMtc2VyaWVzW3Nlcmllc05hbWU9J1wiLmNvbmNhdChQLmVzY2FwZVN0cmluZyhlKSxcIiddXCIpKX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U2VyaWVzQnlOYW1lKGUpLGk9cGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCk7cmV0dXJue2lzSGlkZGVuOnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpLHJlYWxJbmRleDppfX19LHtrZXk6XCJhZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7ZnVuY3Rpb24gYShzKXtmb3IodmFyIHI9MDtyPHMubGVuZ3RoO3IrKylzW3JdLmluZGV4PT09dCYmZS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIil9YShpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzKSxhKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaXNTZXJpZXNIaWRkZW4oZSk7cmV0dXJuIHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXModC5yZWFsSW5kZXgsdC5pc0hpZGRlbiksdC5pc0hpZGRlbn19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pc1Nlcmllc0hpZGRlbihlKTt0LmlzSGlkZGVuJiZ0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKHQucmVhbEluZGV4LCEwKX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pc1Nlcmllc0hpZGRlbihlKTt0LmlzSGlkZGVufHx0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKHQucmVhbEluZGV4LCExKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1swXSx0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LHM9UC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbFNlcmllcyk7YS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10saT8oYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdKTpzPXRoaXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMocyksYS5jb25maWcuc2VyaWVzPXMsZSYmKHQmJihhLmdsb2JhbHMuem9vbWVkPSExLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpKX19LHtrZXk6XCJlbXB0eUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLncsaT0wO2k8ZS5sZW5ndGg7aSsrKXQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk+LTEmJihlW2ldLmRhdGE9W10pO3JldHVybiBlfX0se2tleTpcInRvZ2dsZVNlcmllc09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudzt0fHwodD1lLnRhcmdldCk7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKTtpZihlLnR5cGU9PT1cIm1vdXNlbW92ZVwiKXt2YXIgcz1wYXJzZUludCh0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxyPW51bGwsbj1udWxsO2kuZ2xvYmFscy5heGlzQ2hhcnRzfHxpLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRpYWxCYXJcIj9pLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSksbj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ11cIikpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXSBwYXRoXCIpKTtmb3IodmFyIG89MDtvPGEubGVuZ3RoO28rKylhW29dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTtyIT09bnVsbCYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxyLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLHIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG4hPT1udWxsJiZuLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSl9ZWxzZSBpZihlLnR5cGU9PT1cIm1vdXNlb3V0XCIpZm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKyspYVtoXS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyl9fSx7a2V5OlwiaGlnaGxpZ2h0UmFuZ2VJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPWEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxyPWZ1bmN0aW9uKG8pe2Zvcih2YXIgaD0wO2g8cy5sZW5ndGg7aCsrKXNbaF0uY2xhc3NMaXN0W29dKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9O2lmKGUudHlwZT09PVwibW91c2Vtb3ZlXCIpe3ZhciBuPXBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3IoXCJhZGRcIiksZnVuY3Rpb24obyl7Zm9yKHZhciBoPTA7aDxzLmxlbmd0aDtoKyspe3ZhciBjPXBhcnNlSW50KHNbaF0uZ2V0QXR0cmlidXRlKFwidmFsXCIpLDEwKTtjPj1vLmZyb20mJmM8PW8udG8mJnNbaF0uY2xhc3NMaXN0LnJlbW92ZShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0oYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tuXSl9ZWxzZSBlLnR5cGU9PT1cIm1vdXNlb3V0XCImJnIoXCJyZW1vdmVcIil9fSx7a2V5OlwiZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpcImFzY1wiLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOltdLGk9dGhpcy53LGE9MDtpZihpLmNvbmZpZy5zZXJpZXMubGVuZ3RoPjEpe2Zvcih2YXIgcz1pLmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIG4uZGF0YSYmbi5kYXRhLmxlbmd0aD4wJiZpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKG8pPT09LTEmJighaS5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0Lmxlbmd0aD09PTB8fHQubGVuZ3RoJiZ0LmluZGV4T2YoaS5jb25maWcuc2VyaWVzW29dLnR5cGUpPi0xKT9vOi0xfSkscj1lPT09XCJhc2NcIj8wOnMubGVuZ3RoLTE7ZT09PVwiYXNjXCI/cjxzLmxlbmd0aDpyPj0wO2U9PT1cImFzY1wiP3IrKzpyLS0paWYoc1tyXSE9PS0xKXthPXNbcl07YnJlYWt9fXJldHVybiBhfX0se2tleTpcImdldEJhclNlcmllc0luZGljZXNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5jb21ib0NoYXJ0cz90aGlzLncuY29uZmlnLnNlcmllcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50eXBlPT09XCJiYXJcInx8ZS50eXBlPT09XCJjb2x1bW5cIj90Oi0xfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09LTF9KTp0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pfX0se2tleTpcImdldFByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztmdW5jdGlvbiB0KHIsbixvKXtmb3IodmFyIGg9cltuXS5jaGlsZE5vZGVzLGM9e3R5cGU6byxwYXRoczpbXSxyZWFsSW5kZXg6cltuXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKX0sZD0wO2Q8aC5sZW5ndGg7ZCsrKWlmKGhbZF0uaGFzQXR0cmlidXRlKFwicGF0aFRvXCIpKXt2YXIgZz1oW2RdLmdldEF0dHJpYnV0ZShcInBhdGhUb1wiKTtjLnBhdGhzLnB1c2goe2Q6Z30pfWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2goYyl9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sW1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZWJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwicmFkYXJcIl0uZm9yRWFjaChmdW5jdGlvbihyKXtmb3IodmFyIG4sbz0obj1yLGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQobixcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKSksaD0wO2g8by5sZW5ndGg7aCsrKXQobyxoLHIpfSksdGhpcy5oYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzKFwiYnViYmxlXCIpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcInNjYXR0ZXJcIik7dmFyIGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChlLmNvbmZpZy5jaGFydC50eXBlLFwiIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoZS5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KHIsXCInXSByZWN0XCIpKSxvPVtdLGg9ZnVuY3Rpb24oZCl7dmFyIGc9ZnVuY3Rpb24oZil7cmV0dXJuIG5bZF0uZ2V0QXR0cmlidXRlKGYpfSxwPXt4OnBhcnNlRmxvYXQoZyhcInhcIikpLHk6cGFyc2VGbG9hdChnKFwieVwiKSksd2lkdGg6cGFyc2VGbG9hdChnKFwid2lkdGhcIikpLGhlaWdodDpwYXJzZUZsb2F0KGcoXCJoZWlnaHRcIikpfTtvLnB1c2goe3JlY3Q6cCxjb2xvcjpuW2RdLmdldEF0dHJpYnV0ZShcImNvbG9yXCIpfSl9LGM9MDtjPG4ubGVuZ3RoO2MrKyloKGMpO2UuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gobyl9LHM9MDtzPGkubGVuZ3RoO3MrKylhKHMpO2UuZ2xvYmFscy5heGlzQ2hhcnRzfHwoZS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9ZS5nbG9iYWxzLnNlcmllcyl9fSx7a2V5OlwiaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoZSxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChlLFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGEsXCInXSBjaXJjbGVcIikpLHI9W10sbj0wO248cy5sZW5ndGg7bisrKXIucHVzaCh7eDpzW25dLmdldEF0dHJpYnV0ZShcImN4XCIpLHk6c1tuXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSxyOnNbbl0uZ2V0QXR0cmlidXRlKFwiclwiKX0pO3QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocil9fX0se2tleTpcImNsZWFyUHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLGUuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQ9ITF9fSx7a2V5OlwiaGFuZGxlTm9EYXRhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmNvbmZpZy5ub0RhdGEsaT1uZXcgTSh0aGlzLmN0eCksYT1lLmdsb2JhbHMuc3ZnV2lkdGgvMixzPWUuZ2xvYmFscy5zdmdIZWlnaHQvMixyPVwibWlkZGxlXCI7aWYoZS5nbG9iYWxzLm5vRGF0YT0hMCxlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITAsdC5hbGlnbj09PVwibGVmdFwiPyhhPTEwLHI9XCJzdGFydFwiKTp0LmFsaWduPT09XCJyaWdodFwiJiYoYT1lLmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSx0LnZlcnRpY2FsQWxpZ249PT1cInRvcFwiP3M9NTA6dC52ZXJ0aWNhbEFsaWduPT09XCJib3R0b21cIiYmKHM9ZS5nbG9iYWxzLnN2Z0hlaWdodC01MCksYSs9dC5vZmZzZXRYLHM9cytwYXJzZUludCh0LnN0eWxlLmZvbnRTaXplLDEwKSsyK3Qub2Zmc2V0WSx0LnRleHQhPT12b2lkIDAmJnQudGV4dCE9PVwiXCIpe3ZhciBuPWkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDp0LnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOnQuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOnQuc3R5bGUuY29sb3Isb3BhY2l0eToxLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0LW5vZGF0YVwifSk7ZS5nbG9iYWxzLmRvbS5QYXBlci5hZGQobil9fX0se2tleTpcInNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy53LGk9MDtpPGUubGVuZ3RoO2krKylpZihlW2ldLmxlbmd0aD09PTApZm9yKHZhciBhPTA7YTxlW3QuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7YSsrKWVbaV0ucHVzaCgwKTtyZXR1cm4gZX19LHtrZXk6XCJoYXNBbGxTZXJpZXNFcXVhbFhcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0hMCx0PXRoaXMudyxpPXRoaXMuZmlsdGVyZWRTZXJpZXNYKCksYT0wO2E8aS5sZW5ndGgtMTthKyspaWYoaVthXVswXSE9PWlbYSsxXVswXSl7ZT0hMTticmVha31yZXR1cm4gdC5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWD1lLGV9fSx7a2V5OlwiZmlsdGVyZWRTZXJpZXNYXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MD90OltdfSk7cmV0dXJuIGV9fV0pLHl9KCksZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50d29EU2VyaWVzPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy5zZXJpZXNHb2Fscz1bXSx0aGlzLmNvcmVVdGlscz1uZXcgcSh0aGlzLmN0eCl9cmV0dXJuIFkoeSxbe2tleTpcImlzTXVsdGlGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6XCJpc0Zvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLHQ9bmV3IGllKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PXQuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSxlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEhPT12b2lkIDAmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdIT09bnVsbCYmZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLnghPT12b2lkIDAmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSE9PW51bGwpcmV0dXJuITB9fSx7a2V5OlwiaXNGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLHQ9bmV3IGllKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PXQuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSxlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEhPT12b2lkIDAmJmVbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmZVt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdIT09dm9pZCAwJiZlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0hPT1udWxsJiZlW3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0uY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4hMH19LHtrZXk6XCJoYW5kbGVGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9aS5jaGFydC50eXBlPT09XCJib3hQbG90XCJ8fGkuc2VyaWVzW3RdLnR5cGU9PT1cImJveFBsb3RcIixyPTA7cjxlW3RdLmRhdGEubGVuZ3RoO3IrKylpZihlW3RdLmRhdGFbcl1bMV0hPT12b2lkIDAmJihBcnJheS5pc0FycmF5KGVbdF0uZGF0YVtyXVsxXSkmJmVbdF0uZGF0YVtyXVsxXS5sZW5ndGg9PT00JiYhcz90aGlzLnR3b0RTZXJpZXMucHVzaChQLnBhcnNlTnVtYmVyKGVbdF0uZGF0YVtyXVsxXVszXSkpOmVbdF0uZGF0YVtyXS5sZW5ndGg+PTU/dGhpcy50d29EU2VyaWVzLnB1c2goUC5wYXJzZU51bWJlcihlW3RdLmRhdGFbcl1bNF0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaChQLnBhcnNlTnVtYmVyKGVbdF0uZGF0YVtyXVsxXSkpLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwKSxpLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCIpe3ZhciBuPW5ldyBEYXRlKGVbdF0uZGF0YVtyXVswXSk7bj1uZXcgRGF0ZShuKS5nZXRUaW1lKCksdGhpcy50d29EU2VyaWVzWC5wdXNoKG4pfWVsc2UgdGhpcy50d29EU2VyaWVzWC5wdXNoKGVbdF0uZGF0YVtyXVswXSk7Zm9yKHZhciBvPTA7bzxlW3RdLmRhdGEubGVuZ3RoO28rKyllW3RdLmRhdGFbb11bMl0hPT12b2lkIDAmJih0aGlzLnRocmVlRFNlcmllcy5wdXNoKGVbdF0uZGF0YVtvXVsyXSksYS5pc0RhdGFYWVo9ITApfX0se2tleTpcImhhbmRsZUZvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMscz1uZXcgQih0aGlzLmN0eCkscj10O2EuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpPi0xJiYocj10aGlzLmFjdGl2ZVNlcmllc0luZGV4KTtmb3IodmFyIG49MDtuPGVbdF0uZGF0YS5sZW5ndGg7bisrKWVbdF0uZGF0YVtuXS55IT09dm9pZCAwJiYoQXJyYXkuaXNBcnJheShlW3RdLmRhdGFbbl0ueSk/dGhpcy50d29EU2VyaWVzLnB1c2goUC5wYXJzZU51bWJlcihlW3RdLmRhdGFbbl0ueVtlW3RdLmRhdGFbbl0ueS5sZW5ndGgtMV0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaChQLnBhcnNlTnVtYmVyKGVbdF0uZGF0YVtuXS55KSkpLGVbdF0uZGF0YVtuXS5nb2FscyE9PXZvaWQgMCYmQXJyYXkuaXNBcnJheShlW3RdLmRhdGFbbl0uZ29hbHMpPyh0aGlzLnNlcmllc0dvYWxzW3RdPT09dm9pZCAwJiYodGhpcy5zZXJpZXNHb2Fsc1t0XT1bXSksdGhpcy5zZXJpZXNHb2Fsc1t0XS5wdXNoKGVbdF0uZGF0YVtuXS5nb2FscykpOih0aGlzLnNlcmllc0dvYWxzW3RdPT09dm9pZCAwJiYodGhpcy5zZXJpZXNHb2Fsc1t0XT1bXSksdGhpcy5zZXJpZXNHb2Fsc1t0XS5wdXNoKG51bGwpKTtmb3IodmFyIG89MDtvPGVbcl0uZGF0YS5sZW5ndGg7bysrKXt2YXIgaD10eXBlb2YgZVtyXS5kYXRhW29dLng9PVwic3RyaW5nXCIsYz1BcnJheS5pc0FycmF5KGVbcl0uZGF0YVtvXS54KSxkPSFjJiYhIXMuaXNWYWxpZERhdGUoZVtyXS5kYXRhW29dLngpO2lmKGh8fGQpaWYoaHx8aS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBnPWEuaXNCYXJIb3Jpem9udGFsJiZhLmlzUmFuZ2VEYXRhO2kueGF4aXMudHlwZSE9PVwiZGF0ZXRpbWVcInx8Zz8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKGVbcl0uZGF0YVtvXS54KSxpc05hTihlW3JdLmRhdGFbb10ueCl8fHRoaXMudy5jb25maWcueGF4aXMudHlwZT09PVwiY2F0ZWdvcnlcInx8dHlwZW9mIGVbcl0uZGF0YVtvXS54PT1cInN0cmluZ1wifHwoYS5pc1hOdW1lcmljPSEwKSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKGVbcl0uZGF0YVtvXS54KSl9ZWxzZSBpLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCI/dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKGVbcl0uZGF0YVtvXS54LnRvU3RyaW5nKCkpKTooYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsYS5pc1hOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaChwYXJzZUZsb2F0KGVbcl0uZGF0YVtvXS54KSkpO2Vsc2UgYz8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKGVbcl0uZGF0YVtvXS54KSk6KGEuaXNYTnVtZXJpYz0hMCxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2goZVtyXS5kYXRhW29dLngpKX1pZihlW3RdLmRhdGFbMF0mJmVbdF0uZGF0YVswXS56IT09dm9pZCAwKXtmb3IodmFyIHA9MDtwPGVbdF0uZGF0YS5sZW5ndGg7cCsrKXRoaXMudGhyZWVEU2VyaWVzLnB1c2goZVt0XS5kYXRhW3BdLnopO2EuaXNEYXRhWFlaPSEwfX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudy5nbG9iYWxzLGE9e307cmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCk/YT10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcImFycmF5XCIsZSx0KTp0aGlzLmlzRm9ybWF0WFkoKSYmKGE9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJ4eVwiLGUsdCkpLGkuc2VyaWVzUmFuZ2VTdGFydC5wdXNoKGEuc3RhcnQpLGkuc2VyaWVzUmFuZ2VFbmQucHVzaChhLmVuZCksaS5zZXJpZXNSYW5nZS5wdXNoKGEucmFuZ2VVbmlxdWVzKSxpLnNlcmllc1JhbmdlLmZvckVhY2goZnVuY3Rpb24ocyxyKXtzJiZzLmZvckVhY2goZnVuY3Rpb24obixvKXtuLnkuZm9yRWFjaChmdW5jdGlvbihoLGMpe2Zvcih2YXIgZD0wO2Q8bi55Lmxlbmd0aDtkKyspaWYoYyE9PWQpe3ZhciBnPWgueTEscD1oLnkyLGY9bi55W2RdLnkxO2c8PW4ueVtkXS55MiYmZjw9cCYmKG4ub3ZlcmxhcHMuaW5kZXhPZihoLnJhbmdlTmFtZSk8MCYmbi5vdmVybGFwcy5wdXNoKGgucmFuZ2VOYW1lKSxuLm92ZXJsYXBzLmluZGV4T2Yobi55W2RdLnJhbmdlTmFtZSk8MCYmbi5vdmVybGFwcy5wdXNoKG4ueVtkXS5yYW5nZU5hbWUpKX19KX0pfSksYX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudy5nbG9iYWxzLGE9e307cmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCk/YT10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdChcImFycmF5XCIsZSx0KTp0aGlzLmlzRm9ybWF0WFkoKSYmKGE9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJ4eVwiLGUsdCkpLGkuc2VyaWVzQ2FuZGxlT1t0XT1hLm8saS5zZXJpZXNDYW5kbGVIW3RdPWEuaCxpLnNlcmllc0NhbmRsZU1bdF09YS5tLGkuc2VyaWVzQ2FuZGxlTFt0XT1hLmwsaS5zZXJpZXNDYW5kbGVDW3RdPWEuYyxhfX0se2tleTpcImhhbmRsZVJhbmdlRGF0YUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1bXSxzPVtdLHI9dFtpXS5kYXRhLmZpbHRlcihmdW5jdGlvbihjLGQsZyl7cmV0dXJuIGQ9PT1nLmZpbmRJbmRleChmdW5jdGlvbihwKXtyZXR1cm4gcC54PT09Yy54fSl9KS5tYXAoZnVuY3Rpb24oYyxkKXtyZXR1cm57eDpjLngsb3ZlcmxhcHM6W10seTpbXX19KTtpZihlPT09XCJhcnJheVwiKWZvcih2YXIgbj0wO248dFtpXS5kYXRhLmxlbmd0aDtuKyspQXJyYXkuaXNBcnJheSh0W2ldLmRhdGFbbl0pPyhhLnB1c2godFtpXS5kYXRhW25dWzFdWzBdKSxzLnB1c2godFtpXS5kYXRhW25dWzFdWzFdKSk6KGEucHVzaCh0W2ldLmRhdGFbbl0pLHMucHVzaCh0W2ldLmRhdGFbbl0pKTtlbHNlIGlmKGU9PT1cInh5XCIpZm9yKHZhciBvPWZ1bmN0aW9uKGMpe3ZhciBkPUFycmF5LmlzQXJyYXkodFtpXS5kYXRhW2NdLnkpLGc9UC5yYW5kb21JZCgpLHA9dFtpXS5kYXRhW2NdLngsZj17eTE6ZD90W2ldLmRhdGFbY10ueVswXTp0W2ldLmRhdGFbY10ueSx5MjpkP3RbaV0uZGF0YVtjXS55WzFdOnRbaV0uZGF0YVtjXS55LHJhbmdlTmFtZTpnfTt0W2ldLmRhdGFbY10ucmFuZ2VOYW1lPWc7dmFyIGI9ci5maW5kSW5kZXgoZnVuY3Rpb24obSl7cmV0dXJuIG0ueD09PXB9KTtyW2JdLnkucHVzaChmKSxhLnB1c2goZi55MSkscy5wdXNoKGYueTIpfSxoPTA7aDx0W2ldLmRhdGEubGVuZ3RoO2grKylvKGgpO3JldHVybntzdGFydDphLGVuZDpzLHJhbmdlVW5pcXVlczpyfX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwifHxhLmNvbmZpZy5zZXJpZXNbaV0udHlwZT09PVwiYm94UGxvdFwiLHI9W10sbj1bXSxvPVtdLGg9W10sYz1bXTtpZihlPT09XCJhcnJheVwiKWlmKHMmJnRbaV0uZGF0YVswXS5sZW5ndGg9PT02fHwhcyYmdFtpXS5kYXRhWzBdLmxlbmd0aD09PTUpZm9yKHZhciBkPTA7ZDx0W2ldLmRhdGEubGVuZ3RoO2QrKylyLnB1c2godFtpXS5kYXRhW2RdWzFdKSxuLnB1c2godFtpXS5kYXRhW2RdWzJdKSxzPyhvLnB1c2godFtpXS5kYXRhW2RdWzNdKSxoLnB1c2godFtpXS5kYXRhW2RdWzRdKSxjLnB1c2godFtpXS5kYXRhW2RdWzVdKSk6KGgucHVzaCh0W2ldLmRhdGFbZF1bM10pLGMucHVzaCh0W2ldLmRhdGFbZF1bNF0pKTtlbHNlIGZvcih2YXIgZz0wO2c8dFtpXS5kYXRhLmxlbmd0aDtnKyspQXJyYXkuaXNBcnJheSh0W2ldLmRhdGFbZ11bMV0pJiYoci5wdXNoKHRbaV0uZGF0YVtnXVsxXVswXSksbi5wdXNoKHRbaV0uZGF0YVtnXVsxXVsxXSkscz8oby5wdXNoKHRbaV0uZGF0YVtnXVsxXVsyXSksaC5wdXNoKHRbaV0uZGF0YVtnXVsxXVszXSksYy5wdXNoKHRbaV0uZGF0YVtnXVsxXVs0XSkpOihoLnB1c2godFtpXS5kYXRhW2ddWzFdWzJdKSxjLnB1c2godFtpXS5kYXRhW2ddWzFdWzNdKSkpO2Vsc2UgaWYoZT09PVwieHlcIilmb3IodmFyIHA9MDtwPHRbaV0uZGF0YS5sZW5ndGg7cCsrKUFycmF5LmlzQXJyYXkodFtpXS5kYXRhW3BdLnkpJiYoci5wdXNoKHRbaV0uZGF0YVtwXS55WzBdKSxuLnB1c2godFtpXS5kYXRhW3BdLnlbMV0pLHM/KG8ucHVzaCh0W2ldLmRhdGFbcF0ueVsyXSksaC5wdXNoKHRbaV0uZGF0YVtwXS55WzNdKSxjLnB1c2godFtpXS5kYXRhW3BdLnlbNF0pKTooaC5wdXNoKHRbaV0uZGF0YVtwXS55WzJdKSxjLnB1c2godFtpXS5kYXRhW3BdLnlbM10pKSk7cmV0dXJue286cixoOm4sbTpvLGw6aCxjfX19LHtrZXk6XCJwYXJzZURhdGFBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnRoaXMuY3R4LHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG49bmV3IEIoYSksbz1zLmxhYmVscy5sZW5ndGg+MD9zLmxhYmVscy5zbGljZSgpOnMueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpO2lmKHIuaXNSYW5nZUJhcj1zLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCImJnIuaXNCYXJIb3Jpem9udGFsLHIuaGFzWGF4aXNHcm91cHM9cy54YXhpcy50eXBlPT09XCJjYXRlZ29yeVwiJiZzLnhheGlzLmdyb3VwLmdyb3Vwcy5sZW5ndGg+MCxyLmhhc1hheGlzR3JvdXBzJiYoci5ncm91cHM9cy54YXhpcy5ncm91cC5ncm91cHMpLHIuaGFzU2VyaWVzR3JvdXBzPSh0PWVbMF0pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5ncm91cCxyLmhhc1Nlcmllc0dyb3Vwcyl7dmFyIGg9W10sYz1RKG5ldyBTZXQoZS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuZ3JvdXB9KSkpO2UuZm9yRWFjaChmdW5jdGlvbihmLGIpe3ZhciBtPWMuaW5kZXhPZihmLmdyb3VwKTtoW21dfHwoaFttXT1bXSksaFttXS5wdXNoKGYubmFtZSl9KSxyLnNlcmllc0dyb3Vwcz1ofWZvcih2YXIgZD1mdW5jdGlvbigpe2Zvcih2YXIgZj0wO2Y8by5sZW5ndGg7ZisrKWlmKHR5cGVvZiBvW2ZdPT1cInN0cmluZ1wiKXtpZighbi5pc1ZhbGlkRGF0ZShvW2ZdKSl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZVwiKTtpLnR3b0RTZXJpZXNYLnB1c2gobi5wYXJzZURhdGUob1tmXSkpfWVsc2UgaS50d29EU2VyaWVzWC5wdXNoKG9bZl0pfSxnPTA7ZzxlLmxlbmd0aDtnKyspe2lmKHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLGVbZ10uZGF0YT09PXZvaWQgMClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiSXQgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBtYXkgaGF2ZSBub3QgaW5jbHVkZWQgJ2RhdGEnIHByb3BlcnR5IGluIHNlcmllcy5cIik7aWYocy5jaGFydC50eXBlIT09XCJyYW5nZUJhclwiJiZzLmNoYXJ0LnR5cGUhPT1cInJhbmdlQXJlYVwiJiZlW2ddLnR5cGUhPT1cInJhbmdlQmFyXCImJmVbZ10udHlwZSE9PVwicmFuZ2VBcmVhXCJ8fChyLmlzUmFuZ2VEYXRhPSEwLHMuY2hhcnQudHlwZSE9PVwicmFuZ2VCYXJcIiYmcy5jaGFydC50eXBlIT09XCJyYW5nZUFyZWFcInx8dGhpcy5oYW5kbGVSYW5nZURhdGEoZSxnKSksdGhpcy5pc011bHRpRm9ybWF0KCkpdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT90aGlzLmhhbmRsZUZvcm1hdDJEQXJyYXkoZSxnKTp0aGlzLmlzRm9ybWF0WFkoKSYmdGhpcy5oYW5kbGVGb3JtYXRYWShlLGcpLHMuY2hhcnQudHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmZVtnXS50eXBlIT09XCJjYW5kbGVzdGlja1wiJiZzLmNoYXJ0LnR5cGUhPT1cImJveFBsb3RcIiYmZVtnXS50eXBlIT09XCJib3hQbG90XCJ8fHRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhKGUsZyksci5zZXJpZXMucHVzaCh0aGlzLnR3b0RTZXJpZXMpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNHb2Fscz10aGlzLnNlcmllc0dvYWxzLGchPT10aGlzLmFjdGl2ZVNlcmllc0luZGV4fHx0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeXx8KHIuaXNYTnVtZXJpYz0hMCk7ZWxzZXtzLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCI/KHIuaXNYTnVtZXJpYz0hMCxkKCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpOnMueGF4aXMudHlwZT09PVwibnVtZXJpY1wiJiYoci5pc1hOdW1lcmljPSEwLG8ubGVuZ3RoPjAmJih0aGlzLnR3b0RTZXJpZXNYPW8sci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpO3ZhciBwPWVbZ10uZGF0YS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIFAucGFyc2VOdW1iZXIoZil9KTtyLnNlcmllcy5wdXNoKHApfXIuc2VyaWVzWi5wdXNoKHRoaXMudGhyZWVEU2VyaWVzKSxlW2ddLm5hbWUhPT12b2lkIDA/ci5zZXJpZXNOYW1lcy5wdXNoKGVbZ10ubmFtZSk6ci5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiK3BhcnNlSW50KGcrMSwxMCkpLGVbZ10uY29sb3IhPT12b2lkIDA/ci5zZXJpZXNDb2xvcnMucHVzaChlW2ddLmNvbG9yKTpyLnNlcmllc0NvbG9ycy5wdXNoKHZvaWQgMCl9cmV0dXJuIHRoaXMud319LHtrZXk6XCJwYXJzZURhdGFOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnO3Quc2VyaWVzPWUuc2xpY2UoKSx0LnNlcmllc05hbWVzPWkubGFiZWxzLnNsaWNlKCk7Zm9yKHZhciBhPTA7YTx0LnNlcmllcy5sZW5ndGg7YSsrKXQuc2VyaWVzTmFtZXNbYV09PT12b2lkIDAmJnQuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIisoYSsxKSk7cmV0dXJuIHRoaXMud319LHtrZXk6XCJoYW5kbGVFeHRlcm5hbExhYmVsc0RhdGFcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncuY29uZmlnLGk9dGhpcy53Lmdsb2JhbHM7dC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD4wP2kubGFiZWxzPXQueGF4aXMuY2F0ZWdvcmllczp0LmxhYmVscy5sZW5ndGg+MD9pLmxhYmVscz10LmxhYmVscy5zbGljZSgpOnRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PyhpLmxhYmVscz1pLmxhYmVsc1swXSxpLnNlcmllc1JhbmdlLmxlbmd0aCYmKGkuc2VyaWVzUmFuZ2UubWFwKGZ1bmN0aW9uKGEpe2EuZm9yRWFjaChmdW5jdGlvbihzKXtpLmxhYmVscy5pbmRleE9mKHMueCk8MCYmcy54JiZpLmxhYmVscy5wdXNoKHMueCl9KX0pLGkubGFiZWxzPUFycmF5LmZyb20obmV3IFNldChpLmxhYmVscy5tYXAoSlNPTi5zdHJpbmdpZnkpKSxKU09OLnBhcnNlKSksdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihuZXcgbGUodCkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKHQsdGhpcy5jdHgsaS5zZXJpZXNYWzBdKSx0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKGUpKSk6dGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyhlKX19LHtrZXk6XCJfZ2VuZXJhdGVFeHRlcm5hbExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPVtdO2lmKHQuYXhpc0NoYXJ0cyl7aWYodC5zZXJpZXMubGVuZ3RoPjApaWYodGhpcy5pc0Zvcm1hdFhZKCkpZm9yKHZhciBzPWkuc2VyaWVzLm1hcChmdW5jdGlvbihkLGcpe3JldHVybiBkLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHAsZixiKXtyZXR1cm4gYi5maW5kSW5kZXgoZnVuY3Rpb24obSl7cmV0dXJuIG0ueD09PXAueH0pPT09Zn0pfSkscj1zLnJlZHVjZShmdW5jdGlvbihkLGcscCxmKXtyZXR1cm4gZltkXS5sZW5ndGg+Zy5sZW5ndGg/ZDpwfSwwKSxuPTA7bjxzW3JdLmxlbmd0aDtuKyspYS5wdXNoKG4rMSk7ZWxzZSBmb3IodmFyIG89MDtvPHQuc2VyaWVzW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO28rKylhLnB1c2gobysxKTt0LnNlcmllc1g9W107Zm9yKHZhciBoPTA7aDxlLmxlbmd0aDtoKyspdC5zZXJpZXNYLnB1c2goYSk7dGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwodC5pc1hOdW1lcmljPSEwKX1pZihhLmxlbmd0aD09PTApe2E9dC5heGlzQ2hhcnRzP1tdOnQuc2VyaWVzLm1hcChmdW5jdGlvbihkLGcpe3JldHVybiBnKzF9KTtmb3IodmFyIGM9MDtjPGUubGVuZ3RoO2MrKyl0LnNlcmllc1gucHVzaChhKX10LmxhYmVscz1hLGkueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYodC5jYXRlZ29yeUxhYmVscz1hLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gaS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKGQpfSkpLHQubm9MYWJlbHNQcm92aWRlZD0hMH19LHtrZXk6XCJwYXJzZURhdGFcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10LmNvbmZpZyxhPXQuZ2xvYmFscztpZih0aGlzLmV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzKCksdGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITEsdGhpcy5jdHguY29yZS5yZXNldEdsb2JhbHMoKSx0aGlzLmN0eC5jb3JlLmlzTXVsdGlwbGVZKCksYS5heGlzQ2hhcnRzPyh0aGlzLnBhcnNlRGF0YUF4aXNDaGFydHMoZSksdGhpcy5jb3JlVXRpbHMuZ2V0TGFyZ2VzdFNlcmllcygpKTp0aGlzLnBhcnNlRGF0YU5vbkF4aXNDaGFydHMoZSksaS5jaGFydC5zdGFja2VkKXt2YXIgcz1uZXcgaWUodGhpcy5jdHgpO2Euc2VyaWVzPXMuc2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyhhLnNlcmllcyl9dGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzKCksYS5heGlzQ2hhcnRzJiYoYS5zdGFja2VkU2VyaWVzVG90YWxzPXRoaXMuY29yZVV0aWxzLmdldFN0YWNrZWRTZXJpZXNUb3RhbHMoKSxhLnN0YWNrZWRTZXJpZXNUb3RhbHNCeUdyb3Vwcz10aGlzLmNvcmVVdGlscy5nZXRTdGFja2VkU2VyaWVzVG90YWxzQnlHcm91cHMoKSksdGhpcy5jb3JlVXRpbHMuZ2V0UGVyY2VudFNlcmllcygpLGEuZGF0YUZvcm1hdFhOdW1lcmljfHxhLmlzWE51bWVyaWMmJihpLnhheGlzLnR5cGUhPT1cIm51bWVyaWNcInx8aS5sYWJlbHMubGVuZ3RoIT09MHx8aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCE9PTApfHx0aGlzLmhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YShlKTtmb3IodmFyIHI9dGhpcy5jb3JlVXRpbHMuZ2V0Q2F0ZWdvcnlMYWJlbHMoYS5sYWJlbHMpLG49MDtuPHIubGVuZ3RoO24rKylpZihBcnJheS5pc0FycmF5KHJbbl0pKXthLmlzTXVsdGlMaW5lWD0hMDticmVha319fSx7a2V5OlwiZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnc7dC5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz10Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcChmdW5jdGlvbihpLGEpe2lmKGUudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyYmIXQuY29uZmlnLmNoYXJ0LnN0YWNrZWQpcmV0dXJuIGkuaW5kZXh9KX19XSkseX0oKSxiZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06W10scj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06XCIxMnB4XCIsbj0hKGFyZ3VtZW50cy5sZW5ndGg+NiYmYXJndW1lbnRzWzZdIT09dm9pZCAwKXx8YXJndW1lbnRzWzZdLG89dGhpcy53LGg9ZVthXT09PXZvaWQgMD9cIlwiOmVbYV0sYz1oLGQ9by5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixnPW8uY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIscD0hMSxmPW5ldyBuZSh0aGlzLmN0eCksYj1oO24mJihjPWYueExhYmVsRm9ybWF0KGQsaCxiLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgQih0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om99KSxnIT09dm9pZCAwJiYoYz1nKGgsZVthXSx7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEIodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpvfSkpKTt2YXIgbSx3O3QubGVuZ3RoPjA/KG09dFthXS51bml0LHc9bnVsbCx0LmZvckVhY2goZnVuY3Rpb24oeCl7eC51bml0PT09XCJtb250aFwiP3c9XCJ5ZWFyXCI6eC51bml0PT09XCJkYXlcIj93PVwibW9udGhcIjp4LnVuaXQ9PT1cImhvdXJcIj93PVwiZGF5XCI6eC51bml0PT09XCJtaW51dGVcIiYmKHc9XCJob3VyXCIpfSkscD13PT09bSxpPXRbYV0ucG9zaXRpb24sYz10W2FdLnZhbHVlKTpvLmNvbmZpZy54YXhpcy50eXBlPT09XCJkYXRldGltZVwiJiZnPT09dm9pZCAwJiYoYz1cIlwiKSxjPT09dm9pZCAwJiYoYz1cIlwiKSxjPUFycmF5LmlzQXJyYXkoYyk/YzpjLnRvU3RyaW5nKCk7dmFyIEE9bmV3IE0odGhpcy5jdHgpLGw9e307bD1vLmdsb2JhbHMucm90YXRlWExhYmVscyYmbj9BLmdldFRleHRSZWN0cyhjLHBhcnNlSW50KHIsMTApLG51bGwsXCJyb3RhdGUoXCIuY29uY2F0KG8uY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSk6QS5nZXRUZXh0UmVjdHMoYyxwYXJzZUludChyLDEwKSk7dmFyIHU9IW8uY29uZmlnLnhheGlzLmxhYmVscy5zaG93RHVwbGljYXRlcyYmdGhpcy5jdHgudGltZVNjYWxlO3JldHVybiFBcnJheS5pc0FycmF5KGMpJiYoYy5pbmRleE9mKFwiTmFOXCIpPT09MHx8Yy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbnZhbGlkXCIpPT09MHx8Yy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbmZpbml0eVwiKT49MHx8cy5pbmRleE9mKGMpPj0wJiZ1KSYmKGM9XCJcIikse3g6aSx0ZXh0OmMsdGV4dFJlY3Q6bCxpc0JvbGQ6cH19fSx7a2V5OlwiY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPWEuY29uZmlnLnhheGlzLnRpY2tBbW91bnQ7cmV0dXJuIHM9PT1cImRhdGFQb2ludHNcIiYmKHM9TWF0aC5yb3VuZChhLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkpLHM+aXx8ZSVNYXRoLnJvdW5kKGkvKHMrMSkpPT0wfHwodC50ZXh0PVwiXCIpLHR9fSx7a2V5OlwiY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7dmFyIHI9dGhpcy53O2lmKGU9PT0wJiZyLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKHQudGV4dD1cIlwiKSxlPT09aS0xJiZyLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYodC50ZXh0PVwiXCIpLHIuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMmJmEubGVuZ3RoPjApe3ZhciBuPXNbcy5sZW5ndGgtMV07dC54PG4udGV4dFJlY3Qud2lkdGgvKHIuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP01hdGguYWJzKHIuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpLzEyOjEuMDEpK24ueCYmKHQudGV4dD1cIlwiKX1yZXR1cm4gdH19LHtrZXk6XCJjaGVja0ZvclJldmVyc2VkTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuY29uZmlnLnlheGlzW2VdJiZpLmNvbmZpZy55YXhpc1tlXS5yZXZlcnNlZCYmdC5yZXZlcnNlKCksdH19LHtrZXk6XCJpc1lBeGlzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IHEodGhpcy5jdHgpO3JldHVybiF0LmNvbmZpZy55YXhpc1tlXS5zaG93fHwhdC5jb25maWcueWF4aXNbZV0uc2hvd0Zvck51bGxTZXJpZXMmJmkuaXNTZXJpZXNOdWxsKGUpJiZ0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPT09LTF9fSx7a2V5OlwiZ2V0WUF4aXNGb3JlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmaS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0mJnRoaXMuY3R4LnRoZW1lLnB1c2hFeHRyYUNvbG9ycyhlLGkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5sZW5ndGgsITEpLGV9fSx7a2V5OlwiZHJhd1lBeGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscixuKXt2YXIgbz10aGlzLncsaD1uZXcgTSh0aGlzLmN0eCksYz1vLmdsb2JhbHMudHJhbnNsYXRlWTtpZihhLnNob3cmJnQ+MCl7by5jb25maWcueWF4aXNbc10ub3Bwb3NpdGU9PT0hMCYmKGUrPWEud2lkdGgpO2Zvcih2YXIgZD10O2Q+PTA7ZC0tKXt2YXIgZz1jK3QvMTArby5jb25maWcueWF4aXNbc10ubGFiZWxzLm9mZnNldFktMTtvLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZz1yKmQpLG8uY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcIiYmKGcrPXIvMik7dmFyIHA9aC5kcmF3TGluZShlK2kub2Zmc2V0WC1hLndpZHRoK2Eub2Zmc2V0WCxnK2Eub2Zmc2V0WSxlK2kub2Zmc2V0WCthLm9mZnNldFgsZythLm9mZnNldFksYS5jb2xvcik7bi5hZGQocCksYys9cn19fX1dKSx5fSgpLEZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJzY2FsZVN2Z05vZGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIikpLGE9cGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIikpO2Uuc2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIsaSp0KSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIixhKnQpLGUuc2V0QXR0cmlidXRlTlMobnVsbCxcInZpZXdCb3hcIixcIjAgMCBcIitpK1wiIFwiK2EpfX0se2tleTpcImZpeFN2Z1N0cmluZ0ZvckllMTFcIix2YWx1ZTpmdW5jdGlvbihlKXtpZighUC5pc0lFMTEoKSlyZXR1cm4gZS5yZXBsYWNlKC8mbmJzcDsvZyxcIiYjMTYwO1wiKTt2YXIgdD0wLGk9ZS5yZXBsYWNlKC94bWxucz1cImh0dHA6XFwvXFwvd3d3LnczLm9yZ1xcLzIwMDBcXC9zdmdcIi9nLGZ1bmN0aW9uKGEpe3JldHVybisrdD09PTI/J3htbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHhtbG5zOnN2Z2pzPVwiaHR0cDovL3N2Z2pzLmRldlwiJzphfSk7cmV0dXJuIGk9KGk9aS5yZXBsYWNlKC94bWxuczpOU1xcZCs9XCJcIi9nLFwiXCIpKS5yZXBsYWNlKC9OU1xcZCs6KFxcdys6XFx3Kz1cIikvZyxcIiQxXCIpfX0se2tleTpcImdldFN2Z1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2U9PW51bGwmJihlPTEpO3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5zdmcoKTtpZihlIT09MSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUuY2xvbmVOb2RlKCEwKTt0aGlzLnNjYWxlU3ZnTm9kZShpLGUpLHQ9bmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhpKX1yZXR1cm4gdGhpcy5maXhTdmdTdHJpbmdGb3JJZTExKHQpfX0se2tleTpcImNsZWFudXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PWUuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpLGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtem9vbS1yZWN0LCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsZnVuY3Rpb24ocyl7cy5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLDApfSksdCYmdFswXSYmKHRbMF0uc2V0QXR0cmlidXRlKFwieFwiLC01MDApLHRbMF0uc2V0QXR0cmlidXRlKFwieDFcIiwtNTAwKSx0WzBdLnNldEF0dHJpYnV0ZShcIngyXCIsLTUwMCkpLGkmJmlbMF0mJihpWzBdLnNldEF0dHJpYnV0ZShcInlcIiwtMTAwKSxpWzBdLnNldEF0dHJpYnV0ZShcInkxXCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MlwiLC0xMDApKX19LHtrZXk6XCJzdmdVcmxcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpO3ZhciBlPXRoaXMuZ2V0U3ZnU3RyaW5nKCksdD1uZXcgQmxvYihbZV0se3R5cGU6XCJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLThcIn0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKHQpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihpKXt2YXIgYT10Lncscz1lP2Uuc2NhbGV8fGUud2lkdGgvYS5nbG9iYWxzLnN2Z1dpZHRoOjE7dC5jbGVhbnVwKCk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtyLndpZHRoPWEuZ2xvYmFscy5zdmdXaWR0aCpzLHIuaGVpZ2h0PXBhcnNlSW50KGEuZ2xvYmFscy5kb20uZWxXcmFwLnN0eWxlLmhlaWdodCwxMCkqczt2YXIgbj1hLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kPT09XCJ0cmFuc3BhcmVudFwiP1wiI2ZmZlwiOmEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsbz1yLmdldENvbnRleHQoXCIyZFwiKTtvLmZpbGxTdHlsZT1uLG8uZmlsbFJlY3QoMCwwLHIud2lkdGgqcyxyLmhlaWdodCpzKTt2YXIgaD10LmdldFN2Z1N0cmluZyhzKTtpZih3aW5kb3cuY2FudmcmJlAuaXNJRTExKCkpe3ZhciBjPXdpbmRvdy5jYW52Zy5DYW52Zy5mcm9tU3RyaW5nKG8saCx7aWdub3JlQ2xlYXI6ITAsaWdub3JlRGltZW5zaW9uczohMH0pO2Muc3RhcnQoKTt2YXIgZD1yLm1zVG9CbG9iKCk7Yy5zdG9wKCksaSh7YmxvYjpkfSl9ZWxzZXt2YXIgZz1cImRhdGE6aW1hZ2Uvc3ZnK3htbCxcIitlbmNvZGVVUklDb21wb25lbnQoaCkscD1uZXcgSW1hZ2U7cC5jcm9zc09yaWdpbj1cImFub255bW91c1wiLHAub25sb2FkPWZ1bmN0aW9uKCl7aWYoby5kcmF3SW1hZ2UocCwwLDApLHIubXNUb0Jsb2Ipe3ZhciBmPXIubXNUb0Jsb2IoKTtpKHtibG9iOmZ9KX1lbHNle3ZhciBiPXIudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO2koe2ltZ1VSSTpifSl9fSxwLnNyYz1nfX0pfX0se2tleTpcImV4cG9ydFRvU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXJEb3dubG9hZCh0aGlzLnN2Z1VybCgpLHRoaXMudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuc3ZnLmZpbGVuYW1lLFwiLnN2Z1wiKX19LHtrZXk6XCJleHBvcnRUb1BuZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmRhdGFVUkkoKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBpPXQuaW1nVVJJLGE9dC5ibG9iO2E/bmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYSxlLncuZ2xvYmFscy5jaGFydElEK1wiLnBuZ1wiKTplLnRyaWdnZXJEb3dubG9hZChpLGUudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQucG5nLmZpbGVuYW1lLFwiLnBuZ1wiKX0pfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWUuc2VyaWVzLGE9ZS5maWxlTmFtZSxzPWUuY29sdW1uRGVsaW1pdGVyLHI9cz09PXZvaWQgMD9cIixcIjpzLG49ZS5saW5lRGVsaW1pdGVyLG89bj09PXZvaWQgMD9gXG5gOm4saD10aGlzLnc7aXx8KGk9aC5jb25maWcuc2VyaWVzKTt2YXIgYyxkLGc9W10scD1bXSxmPVwiXCIsYj1oLmdsb2JhbHMuc2VyaWVzLm1hcChmdW5jdGlvbih2LGspe3JldHVybiBoLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGspPT09LTE/djpbXX0pLG09ZnVuY3Rpb24odil7cmV0dXJuIGguY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCImJlN0cmluZyh2KS5sZW5ndGg+PTEwfSx3PU1hdGgubWF4LmFwcGx5KE1hdGgsUShpLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gdi5kYXRhP3YuZGF0YS5sZW5ndGg6MH0pKSksQT1uZXcgZXQodGhpcy5jdHgpLGw9bmV3IGJlKHRoaXMuY3R4KSx1PWZ1bmN0aW9uKHYpe3ZhciBrPVwiXCI7aWYoaC5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKGguY29uZmlnLnhheGlzLnR5cGU9PT1cImNhdGVnb3J5XCJ8fGguY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYylpZihoLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgUz1oLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSxDPW5ldyBpZSh0LmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtrPVMoaC5nbG9iYWxzLmxhYmVsc1t2XSx7c2VyaWVzSW5kZXg6QyxkYXRhUG9pbnRJbmRleDp2LHc6aH0pfWVsc2Ugaz1sLmdldExhYmVsKGguZ2xvYmFscy5sYWJlbHMsaC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscywwLHYpLnRleHQ7aC5jb25maWcueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIiYmKGguY29uZmlnLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP2s9aC5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t2XTpoLmNvbmZpZy5sYWJlbHMubGVuZ3RoJiYoaz1oLmNvbmZpZy5sYWJlbHNbdl0pKX1lbHNlIGs9aC5jb25maWcubGFiZWxzW3ZdO3JldHVybiBBcnJheS5pc0FycmF5KGspJiYoaz1rLmpvaW4oXCIgXCIpKSxQLmlzTnVtYmVyKGspP2s6ay5zcGxpdChyKS5qb2luKFwiXCIpfSx4PWZ1bmN0aW9uKHYsayl7aWYoZy5sZW5ndGgmJms9PT0wJiZwLnB1c2goZy5qb2luKHIpKSx2LmRhdGEpe3YuZGF0YT12LmRhdGEubGVuZ3RoJiZ2LmRhdGF8fFEoQXJyYXkodykpLm1hcChmdW5jdGlvbigpe3JldHVyblwiXCJ9KTtmb3IodmFyIFM9MDtTPHYuZGF0YS5sZW5ndGg7UysrKXtnPVtdO3ZhciBDPXUoUyk7aWYoQ3x8KEEuaXNGb3JtYXRYWSgpP0M9aVtrXS5kYXRhW1NdLng6QS5pc0Zvcm1hdDJEQXJyYXkoKSYmKEM9aVtrXS5kYXRhW1NdP2lba10uZGF0YVtTXVswXTpcIlwiKSksaz09PTApe2cucHVzaChtKEMpP2guY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKEMpOlAuaXNOdW1iZXIoQyk/QzpDLnNwbGl0KHIpLmpvaW4oXCJcIikpO2Zvcih2YXIgTD0wO0w8aC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7TCsrKXt2YXIgSTtBLmlzRm9ybWF0WFkoKT9nLnB1c2goKEk9aVtMXS5kYXRhW1NdKT09PW51bGx8fEk9PT12b2lkIDA/dm9pZCAwOkkueSk6Zy5wdXNoKGJbTF1bU10pfX0oaC5jb25maWcuY2hhcnQudHlwZT09PVwiY2FuZGxlc3RpY2tcInx8di50eXBlJiZ2LnR5cGU9PT1cImNhbmRsZXN0aWNrXCIpJiYoZy5wb3AoKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZU9ba11bU10pLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtrXVtTXSksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZUNba11bU10pKSwoaC5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwifHx2LnR5cGUmJnYudHlwZT09PVwiYm94UGxvdFwiKSYmKGcucG9wKCksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZUhba11bU10pLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtrXVtTXSksZy5wdXNoKGguZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2tdW1NdKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc0NhbmRsZUNba11bU10pKSxoLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiJiYoZy5wb3AoKSxnLnB1c2goaC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRba11bU10pLGcucHVzaChoLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRba11bU10pKSxnLmxlbmd0aCYmcC5wdXNoKGcuam9pbihyKSl9fX07Zy5wdXNoKGguY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJDYXRlZ29yeSksaC5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwiPyhnLnB1c2goXCJtaW5pbXVtXCIpLGcucHVzaChcInExXCIpLGcucHVzaChcIm1lZGlhblwiKSxnLnB1c2goXCJxM1wiKSxnLnB1c2goXCJtYXhpbXVtXCIpKTpoLmNvbmZpZy5jaGFydC50eXBlPT09XCJjYW5kbGVzdGlja1wiPyhnLnB1c2goXCJvcGVuXCIpLGcucHVzaChcImhpZ2hcIiksZy5wdXNoKFwibG93XCIpLGcucHVzaChcImNsb3NlXCIpKTpoLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiPyhnLnB1c2goXCJtaW5pbXVtXCIpLGcucHVzaChcIm1heGltdW1cIikpOmkubWFwKGZ1bmN0aW9uKHYsayl7dmFyIFM9KHYubmFtZT92Lm5hbWU6XCJzZXJpZXMtXCIuY29uY2F0KGspKStcIlwiO2guZ2xvYmFscy5heGlzQ2hhcnRzJiZnLnB1c2goUy5zcGxpdChyKS5qb2luKFwiXCIpP1Muc3BsaXQocikuam9pbihcIlwiKTpcInNlcmllcy1cIi5jb25jYXQoaykpfSksaC5nbG9iYWxzLmF4aXNDaGFydHN8fChnLnB1c2goaC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlclZhbHVlKSxwLnB1c2goZy5qb2luKHIpKSksaC5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWHx8IWguZ2xvYmFscy5heGlzQ2hhcnRzfHxoLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aHx8aC5jb25maWcubGFiZWxzLmxlbmd0aD9pLm1hcChmdW5jdGlvbih2LGspe2guZ2xvYmFscy5heGlzQ2hhcnRzP3godixrKTooKGc9W10pLnB1c2goaC5nbG9iYWxzLmxhYmVsc1trXS5zcGxpdChyKS5qb2luKFwiXCIpKSxnLnB1c2goYltrXSkscC5wdXNoKGcuam9pbihyKSkpfSk6KGM9bmV3IFNldCxkPXt9LGkuZm9yRWFjaChmdW5jdGlvbih2LGspe3Y9PW51bGx8fHYuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKFMpe3ZhciBDLEw7aWYoQS5pc0Zvcm1hdFhZKCkpQz1TLngsTD1TLnk7ZWxzZXtpZighQS5pc0Zvcm1hdDJEQXJyYXkoKSlyZXR1cm47Qz1TWzBdLEw9U1sxXX1kW0NdfHwoZFtDXT1BcnJheShpLmxlbmd0aCkuZmlsbChcIlwiKSksZFtDXVtrXT1MLGMuYWRkKEMpfSl9KSxnLmxlbmd0aCYmcC5wdXNoKGcuam9pbihyKSksQXJyYXkuZnJvbShjKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbih2KXtwLnB1c2goW20odikmJmguY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCI/aC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmRhdGVGb3JtYXR0ZXIodik6UC5pc051bWJlcih2KT92OnYuc3BsaXQocikuam9pbihcIlwiKSxkW3ZdLmpvaW4ocildKX0pKSxmKz1wLmpvaW4obyksdGhpcy50cmlnZ2VyRG93bmxvYWQoXCJkYXRhOnRleHQvY3N2OyBjaGFyc2V0PXV0Zi04LFwiK2VuY29kZVVSSUNvbXBvbmVudChcIlxcdUZFRkZcIitmKSxhfHxoLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuZmlsZW5hbWUsXCIuY3N2XCIpfX0se2tleTpcInRyaWdnZXJEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTthLmhyZWY9ZSxhLmRvd25sb2FkPSh0fHx0aGlzLncuZ2xvYmFscy5jaGFydElEKStpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksYS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSl9fV0pLHl9KCksemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9dCx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmF4ZXNVdGlscz1uZXcgYmUoZSksdGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMubGFiZWxzLnNsaWNlKCksaS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmIWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSksaS5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyYmKHRoaXMueGF4aXNMYWJlbHM9aS5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmRyYXduTGFiZWxzUmVjdHM9W10saS5jb25maWcueGF4aXMucG9zaXRpb249PT1cInRvcFwiP3RoaXMub2ZmWT0wOnRoaXMub2ZmWT1pLmdsb2JhbHMuZ3JpZEhlaWdodCsxLHRoaXMub2ZmWT10aGlzLm9mZlkraS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRZLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9aS5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCImJmkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueGF4aXNGb250U2l6ZT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy54YXhpc0ZvbnRGYW1pbHk9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9aS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLnhheGlzQm9yZGVyV2lkdGg9aS5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0JvcmRlcldpZHRoPWkuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIud2lkdGgudG9TdHJpbmcoKSksdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoXCIlXCIpPi0xP3RoaXMueGF4aXNCb3JkZXJXaWR0aD1pLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCkvMTAwOnRoaXMueGF4aXNCb3JkZXJXaWR0aD1wYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQ9aS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5oZWlnaHQsdGhpcy55YXhpcz1pLmNvbmZpZy55YXhpc1swXX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT10Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuY29uZmlnLnhheGlzLm9mZnNldFgsXCIsIFwiKS5jb25jYXQoZS5jb25maWcueGF4aXMub2Zmc2V0WSxcIilcIil9KSxhPXQuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7aS5hZGQoYSk7Zm9yKHZhciBzPVtdLHI9MDtyPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO3IrKylzLnB1c2godGhpcy54YXhpc0xhYmVsc1tyXSk7aWYodGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCEwLHQsYSxzLGUuZ2xvYmFscy5pc1hOdW1lcmljLGZ1bmN0aW9uKGYsYil7cmV0dXJuIGJ9KSxlLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMpe3ZhciBuPWUuZ2xvYmFscy5ncm91cHM7cz1bXTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylzLnB1c2gobltvXS50aXRsZSk7dmFyIGg9e307ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUmJihoLnhheGlzRm9udFNpemU9ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udFNpemUsaC54YXhpc0ZvbnRGYW1pbHk9ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udEZhbWlseSxoLnhheGlzRm9yZUNvbG9ycz1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5jb2xvcnMsaC5mb250V2VpZ2h0PWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRXZWlnaHQsaC5jc3NDbGFzcz1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5jc3NDbGFzcyksdGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCExLHQsYSxzLCExLGZ1bmN0aW9uKGYsYil7cmV0dXJuIG5bZl0uY29scypifSxoKX1pZihlLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0IT09dm9pZCAwKXt2YXIgYz10Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGVcIn0pLGQ9dC5kcmF3VGV4dCh7eDplLmdsb2JhbHMuZ3JpZFdpZHRoLzIrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMub2ZmWStwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkrKGUuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJib3R0b21cIj9lLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQ6LWUuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0xMCkrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSx0ZXh0OmUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK2UuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7Yy5hZGQoZCksaS5hZGQoYyl9aWYoZS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5zaG93KXt2YXIgZz1lLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMscD10LmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsK2UuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WC1nLHRoaXMub2ZmWSx0aGlzLnhheGlzQm9yZGVyV2lkdGgrZyx0aGlzLm9mZlksZS5jb25maWcueGF4aXMuYXhpc0JvcmRlci5jb2xvciwwLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZlLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQocCk6aS5hZGQocCl9cmV0dXJuIGl9fSx7a2V5OlwiZHJhd1hBeGlzTGFiZWxBbmRHcm91cFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyKXt2YXIgbixvPXRoaXMsaD1hcmd1bWVudHMubGVuZ3RoPjYmJmFyZ3VtZW50c1s2XSE9PXZvaWQgMD9hcmd1bWVudHNbNl06e30sYz1bXSxkPVtdLGc9dGhpcy53LHA9aC54YXhpc0ZvbnRTaXplfHx0aGlzLnhheGlzRm9udFNpemUsZj1oLnhheGlzRm9udEZhbWlseXx8dGhpcy54YXhpc0ZvbnRGYW1pbHksYj1oLnhheGlzRm9yZUNvbG9yc3x8dGhpcy54YXhpc0ZvcmVDb2xvcnMsbT1oLmZvbnRXZWlnaHR8fGcuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LHc9aC5jc3NDbGFzc3x8Zy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLEE9Zy5nbG9iYWxzLnBhZEhvcml6b250YWwsbD1hLmxlbmd0aCx1PWcuY29uZmlnLnhheGlzLnR5cGU9PT1cImNhdGVnb3J5XCI/Zy5nbG9iYWxzLmRhdGFQb2ludHM6bDtpZih1PT09MCYmbD51JiYodT1sKSxzKXt2YXIgeD11PjE/dS0xOnU7bj1nLmdsb2JhbHMuZ3JpZFdpZHRoL01hdGgubWluKHgsbC0xKSxBPUErcigwLG4pLzIrZy5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFh9ZWxzZSBuPWcuZ2xvYmFscy5ncmlkV2lkdGgvdSxBPUErcigwLG4pK2cuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO2Zvcih2YXIgdj1mdW5jdGlvbihTKXt2YXIgQz1BLXIoUyxuKS8yK2cuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO1M9PT0wJiZsPT09MSYmbi8yPT09QSYmdT09PTEmJihDPWcuZ2xvYmFscy5ncmlkV2lkdGgvMik7dmFyIEw9by5heGVzVXRpbHMuZ2V0TGFiZWwoYSxnLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLEMsUyxjLHAsZSksST0yODtpZihnLmdsb2JhbHMucm90YXRlWExhYmVscyYmZSYmKEk9MjIpLGcuY29uZmlnLnhheGlzLnRpdGxlLnRleHQmJmcuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJ0b3BcIiYmKEkrPXBhcnNlRmxvYXQoZy5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIpLGV8fChJPUkrcGFyc2VGbG9hdChwKSsoZy5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LWcuZ2xvYmFscy54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0KSsoZy5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MCkpLEw9Zy5jb25maWcueGF4aXMudGlja0Ftb3VudCE9PXZvaWQgMCYmZy5jb25maWcueGF4aXMudGlja0Ftb3VudCE9PVwiZGF0YVBvaW50c1wiJiZnLmNvbmZpZy54YXhpcy50eXBlIT09XCJkYXRldGltZVwiP28uYXhlc1V0aWxzLmNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudChTLEwsbCk6by5heGVzVXRpbHMuY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVscyhTLEwsbCxjLGQpLGcuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgej10LmRyYXdUZXh0KHt4OkwueCx5Om8ub2ZmWStnLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WStJLShnLmNvbmZpZy54YXhpcy5wb3NpdGlvbj09PVwidG9wXCI/Zy5nbG9iYWxzLnhBeGlzSGVpZ2h0K2cuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OkwudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFdlaWdodDpMLmlzQm9sZD82MDA6bSxmb250U2l6ZTpwLGZvbnRGYW1pbHk6Zixmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShiKT9lJiZnLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/YltnLmdsb2JhbHMubWluWCtTLTFdOmJbU106Yixpc1BsYWluVGV4dDohMSxjc3NDbGFzczooZT9cImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCI6XCJhcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsIFwiKSt3fSk7aWYoaS5hZGQoeiksei5vbihcImNsaWNrXCIsZnVuY3Rpb24oRSl7aWYodHlwZW9mIGcuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2s9PVwiZnVuY3Rpb25cIil7dmFyIFI9T2JqZWN0LmFzc2lnbih7fSxnLHtsYWJlbEluZGV4OlN9KTtnLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKEUsby5jdHgsUil9fSksZSl7dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGcuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO1QudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShMLnRleHQpP0wudGV4dC5qb2luKFwiIFwiKTpMLnRleHQsei5ub2RlLmFwcGVuZENoaWxkKFQpLEwudGV4dCE9PVwiXCImJihjLnB1c2goTC50ZXh0KSxkLnB1c2goTCkpfX1TPGwtMSYmKEErPXIoUysxLG4pKX0saz0wO2s8PWwtMTtrKyspdihrKX19LHtrZXk6XCJkcmF3WGF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGksYT10aGlzLHM9dGhpcy53LHI9bmV3IE0odGhpcy5jdHgpLG49cy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGU/cy5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtlXTowLG89ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWRcIixyZWw6ZX0pLGg9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK24rXCIsIDApXCJ9KTtvLmFkZChoKTt2YXIgYz1bXTtpZihzLmNvbmZpZy55YXhpc1tlXS5zaG93KWZvcih2YXIgZD0wO2Q8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7ZCsrKWMucHVzaCh0aGlzLnhheGlzTGFiZWxzW2RdKTt0PXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2MubGVuZ3RoLGk9LXQvMi4yO3ZhciBnPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLHA9cy5jb25maWcueWF4aXNbMF0ubGFiZWxzO2lmKHAuc2hvdylmb3IodmFyIGY9ZnVuY3Rpb24oeCl7dmFyIHY9Y1t4XT09PXZvaWQgMD9cIlwiOmNbeF07dj1nKHYse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6eCx3OnN9KTt2YXIgaz1hLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihwLnN0eWxlLmNvbG9ycyxlKSxTPTA7QXJyYXkuaXNBcnJheSh2KSYmKFM9di5sZW5ndGgvMipwYXJzZUludChwLnN0eWxlLmZvbnRTaXplLDEwKSk7dmFyIEM9cC5vZmZzZXRYLTE1LEw9XCJlbmRcIjthLnlheGlzLm9wcG9zaXRlJiYoTD1cInN0YXJ0XCIpLHMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj09PVwibGVmdFwiPyhDPXAub2Zmc2V0WCxMPVwic3RhcnRcIik6cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPT09XCJjZW50ZXJcIj8oQz1wLm9mZnNldFgsTD1cIm1pZGRsZVwiKTpzLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ249PT1cInJpZ2h0XCImJihMPVwiZW5kXCIpO3ZhciBJPXIuZHJhd1RleHQoe3g6Qyx5OmkrdCtwLm9mZnNldFktUyx0ZXh0OnYsdGV4dEFuY2hvcjpMLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KGspP2tbeF06ayxmb250U2l6ZTpwLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6cC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6cC5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitwLnN0eWxlLmNzc0NsYXNzLG1heFdpZHRoOnAubWF4V2lkdGh9KTtoLmFkZChJKSxJLm9uKFwiY2xpY2tcIixmdW5jdGlvbihFKXtpZih0eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljaz09XCJmdW5jdGlvblwiKXt2YXIgUj1PYmplY3QuYXNzaWduKHt9LHMse2xhYmVsSW5kZXg6eH0pO3MuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2soRSxhLmN0eCxSKX19KTt2YXIgej1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMocy5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYoei50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHYpP3Yuam9pbihcIiBcIik6dixJLm5vZGUuYXBwZW5kQ2hpbGQoeikscy5jb25maWcueWF4aXNbZV0ubGFiZWxzLnJvdGF0ZSE9PTApe3ZhciBUPXIucm90YXRlQXJvdW5kQ2VudGVyKEkubm9kZSk7SS5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChzLmNvbmZpZy55YXhpc1tlXS5sYWJlbHMucm90YXRlLFwiIDAgXCIpLmNvbmNhdChULnksXCIpXCIpKX1pKz10fSxiPTA7Yjw9Yy5sZW5ndGgtMTtiKyspZihiKTtpZihzLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0IT09dm9pZCAwKXt2YXIgbT1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUgYXBleGNoYXJ0cy14YXhpcy10aXRsZS1pbnZlcnNlZFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIituK1wiLCAwKVwifSksdz1yLmRyYXdUZXh0KHt4OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLm9mZnNldFgseTpzLmdsb2JhbHMuZ3JpZEhlaWdodC8yK3MuY29uZmlnLnlheGlzWzBdLnRpdGxlLm9mZnNldFksdGV4dDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO20uYWRkKHcpLG8uYWRkKG0pfXZhciBBPTA7dGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCYmcy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJihBPXMuZ2xvYmFscy5ncmlkV2lkdGgpO3ZhciBsPXMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7aWYobC5zaG93KXt2YXIgdT1yLmRyYXdMaW5lKHMuZ2xvYmFscy5wYWRIb3Jpem9udGFsK2wub2Zmc2V0WCtBLDErbC5vZmZzZXRZLHMuZ2xvYmFscy5wYWRIb3Jpem9udGFsK2wub2Zmc2V0WCtBLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K2wub2Zmc2V0WSxsLmNvbG9yLDApO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZzLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQodSk6by5hZGQodSl9cmV0dXJuIHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcy5zaG93JiZ0aGlzLmF4ZXNVdGlscy5kcmF3WUF4aXNUaWNrcyhBLGMubGVuZ3RoLHMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIscy5jb25maWcueWF4aXNbMF0uYXhpc1RpY2tzLDAsdCxvKSxvfX0se2tleTpcImRyYXdYYXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPWU7aWYoIShlPDB8fGUtMj5hLmdsb2JhbHMuZ3JpZFdpZHRoKSl7dmFyIHI9dGhpcy5vZmZZK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRZO2lmKHQ9dCtyK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQsYS5jb25maWcueGF4aXMucG9zaXRpb249PT1cInRvcFwiJiYodD1yLWEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQpLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KXt2YXIgbj1uZXcgTSh0aGlzLmN0eCkuZHJhd0xpbmUoZSthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCxyK2EuY29uZmlnLnhheGlzLm9mZnNldFkscythLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCx0K2EuY29uZmlnLnhheGlzLm9mZnNldFksYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmNvbG9yKTtpLmFkZChuKSxuLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteGF4aXMtdGlja1wiKX19fX0se2tleTpcImdldFhBeGlzVGlja3NQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PVtdLGk9dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsYT1lLmdsb2JhbHMucGFkSG9yaXpvbnRhbDtpZihlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKWZvcih2YXIgcz0wO3M8aTtzKyspYT10aGlzLnhheGlzTGFiZWxzW3NdLnBvc2l0aW9uLHQucHVzaChhKTtlbHNlIGZvcih2YXIgcj1pLG49MDtuPHI7bisrKXt2YXIgbz1yO2UuZ2xvYmFscy5pc1hOdW1lcmljJiZlLmNvbmZpZy5jaGFydC50eXBlIT09XCJiYXJcIiYmKG8tPTEpLGErPWUuZ2xvYmFscy5ncmlkV2lkdGgvbyx0LnB1c2goYSl9cmV0dXJuIHR9fSx7a2V5OlwieEF4aXNMYWJlbENvcnJlY3Rpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiKSxhPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bm90KC5hcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsKVwiKSxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1pbnZlcnNlZCB0ZXh0XCIpLHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWcgdGV4dCB0c3BhblwiKTtpZihlLmdsb2JhbHMucm90YXRlWExhYmVsc3x8ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cylmb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKyl7dmFyIG89dC5yb3RhdGVBcm91bmRDZW50ZXIoYVtuXSk7by55PW8ueS0xLG8ueD1vLngrMSxhW25dLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQoby54LFwiIFwiKS5jb25jYXQoby55LFwiKVwiKSksYVtuXS5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpLGkuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoMCwgXCIuY29uY2F0KC0xMCxcIilcIikpO3ZhciBoPWFbbl0uY2hpbGROb2RlcztlLmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChoLGZ1bmN0aW9uKHApe3QucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHAscC50ZXh0Q29udGVudCxlLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtKGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwiYm90dG9tXCI/MjA6MTApKX0pfWVsc2UoZnVuY3Rpb24oKXtmb3IodmFyIHA9ZS5nbG9iYWxzLmdyaWRXaWR0aC8oZS5nbG9iYWxzLmxhYmVscy5sZW5ndGgrMSksZj0wO2Y8YS5sZW5ndGg7ZisrKXt2YXIgYj1hW2ZdLmNoaWxkTm9kZXM7ZS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJmUuY29uZmlnLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCImJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYixmdW5jdGlvbihtKXt0LnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhtLG0udGV4dENvbnRlbnQscCl9KX19KSgpO2lmKHMubGVuZ3RoPjApe3ZhciBjPXNbcy5sZW5ndGgtMV0uZ2V0QkJveCgpLGQ9c1swXS5nZXRCQm94KCk7Yy54PC0yMCYmc1tzLmxlbmd0aC0xXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbcy5sZW5ndGgtMV0pLGQueCtkLndpZHRoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZzWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc1swXSk7Zm9yKHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspdC5wbGFjZVRleHRXaXRoRWxsaXBzaXMocltnXSxyW2ddLnRleHRDb250ZW50LGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5tYXhXaWR0aC0oZS5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dD8yKnBhcnNlRmxvYXQoZS5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFNpemUpOjApLTE1KX19fV0pLHl9KCksdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIHQ9dGhpcy53O3RoaXMueGF4aXNMYWJlbHM9dC5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHRoaXMuYXhlc1V0aWxzPW5ldyBiZShlKSx0aGlzLmlzUmFuZ2VCYXI9dC5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCx0Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz10Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpfXJldHVybiBZKHksW3trZXk6XCJkcmF3R3JpZEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpudWxsLHQ9dGhpcy53LGk9bmV3IE0odGhpcy5jdHgpO2U9PT1udWxsJiYoZT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSkpO3ZhciBhPWkuZHJhd0xpbmUodC5nbG9iYWxzLnBhZEhvcml6b250YWwsMSx0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCx0Lmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpLHM9aS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCx0Lmdsb2JhbHMuZ3JpZEhlaWdodCx0Lmdsb2JhbHMuZ3JpZFdpZHRoLHQuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIik7cmV0dXJuIGUuYWRkKHMpLGUuYWRkKGEpLGV9fSx7a2V5OlwiZHJhd0dyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmF4aXNDaGFydHMmJihlPXRoaXMucmVuZGVyR3JpZCgpLHRoaXMuZHJhd0dyaWRBcmVhKGUuZWwpKSxlfX0se2tleTpcImNyZWF0ZUdyaWRNYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMsaT1uZXcgTSh0aGlzLmN0eCksYT1BcnJheS5pc0FycmF5KGUuY29uZmlnLnN0cm9rZS53aWR0aCk/MDplLmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgcz0wO2UuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKGZ1bmN0aW9uKGQpe3M9TWF0aC5tYXgocyxkKX0pLGE9c310LmRvbS5lbEdyaWRSZWN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImNsaXBQYXRoXCIpLHQuZG9tLmVsR3JpZFJlY3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hc2tcIi5jb25jYXQodC5jdWlkKSksdC5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHTlMsXCJjbGlwUGF0aFwiKSx0LmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KHQuY3VpZCkpLHQuZG9tLmVsRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR05TLFwiY2xpcFBhdGhcIiksdC5kb20uZWxGb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImZvcmVjYXN0TWFza1wiLmNvbmNhdCh0LmN1aWQpKSx0LmRvbS5lbE5vbkZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImNsaXBQYXRoXCIpLHQuZG9tLmVsTm9uRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQodC5jdWlkKSk7dmFyIHI9ZS5jb25maWcuY2hhcnQudHlwZSxuPTAsbz0wOyhyPT09XCJiYXJcInx8cj09PVwicmFuZ2VCYXJcInx8cj09PVwiY2FuZGxlc3RpY2tcInx8cj09PVwiYm94UGxvdFwifHxlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobj1lLmNvbmZpZy5ncmlkLnBhZGRpbmcubGVmdCxvPWUuY29uZmlnLmdyaWQucGFkZGluZy5yaWdodCx0LmJhclBhZEZvck51bWVyaWNBeGlzPm4mJihuPXQuYmFyUGFkRm9yTnVtZXJpY0F4aXMsbz10LmJhclBhZEZvck51bWVyaWNBeGlzKSksdC5kb20uZWxHcmlkUmVjdD1pLmRyYXdSZWN0KC1hLW4tMiwyKi1hLTIsdC5ncmlkV2lkdGgrYStvK24rNCx0LmdyaWRIZWlnaHQrNCphKzQsMCxcIiNmZmZcIik7dmFyIGg9ZS5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUrMTt0LmRvbS5lbEdyaWRSZWN0TWFya2VyPWkuZHJhd1JlY3QoMiotaCwyKi1oLHQuZ3JpZFdpZHRoKzQqaCx0LmdyaWRIZWlnaHQrNCpoLDAsXCIjZmZmXCIpLHQuZG9tLmVsR3JpZFJlY3RNYXNrLmFwcGVuZENoaWxkKHQuZG9tLmVsR3JpZFJlY3Qubm9kZSksdC5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suYXBwZW5kQ2hpbGQodC5kb20uZWxHcmlkUmVjdE1hcmtlci5ub2RlKTt2YXIgYz10LmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcImRlZnNcIik7Yy5hcHBlbmRDaGlsZCh0LmRvbS5lbEdyaWRSZWN0TWFzayksYy5hcHBlbmRDaGlsZCh0LmRvbS5lbEZvcmVjYXN0TWFzayksYy5hcHBlbmRDaGlsZCh0LmRvbS5lbE5vbkZvcmVjYXN0TWFzayksYy5hcHBlbmRDaGlsZCh0LmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzayl9fSx7a2V5OlwiX2RyYXdHcmlkTGluZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmksaT1lLngxLGE9ZS55MSxzPWUueDIscj1lLnkyLG49ZS54Q291bnQsbz1lLnBhcmVudCxoPXRoaXMudztpZighKHQ9PT0wJiZoLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbHx8dD09PW4tMSYmaC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmIWguY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGguY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhZGFyXCIpKXtoLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cmJnRoaXMuX2RyYXdHcmlkTGluZSh7aTp0LHgxOmkseTE6YSx4MjpzLHkyOnIseENvdW50Om4scGFyZW50Om99KTt2YXIgYz0wO2lmKGguZ2xvYmFscy5oYXNYYXhpc0dyb3VwcyYmaC5jb25maWcueGF4aXMudGlja1BsYWNlbWVudD09PVwiYmV0d2VlblwiKXt2YXIgZD1oLmdsb2JhbHMuZ3JvdXBzO2lmKGQpe2Zvcih2YXIgZz0wLHA9MDtnPHQmJnA8ZC5sZW5ndGg7cCsrKWcrPWRbcF0uY29scztnPT09dCYmKGM9LjYqaC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0KX19bmV3IHplKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhpLGMsaC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCl9fX0se2tleTpcIl9kcmF3R3JpZExpbmVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmksaT1lLngxLGE9ZS55MSxzPWUueDIscj1lLnkyLG49ZS54Q291bnQsbz1lLnBhcmVudCxoPXRoaXMudyxjPSExLGQ9by5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIiksZz1oLmNvbmZpZy5ncmlkLnN0cm9rZURhc2hBcnJheSxwPWguZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpczsoYT09PTAmJnI9PT0wfHxpPT09MCYmcz09PTApJiYoYz0hMCksYT09PWguZ2xvYmFscy5ncmlkSGVpZ2h0JiZyPT09aC5nbG9iYWxzLmdyaWRIZWlnaHQmJihjPSEwKSwhaC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dCE9PTAmJnQhPT1uLTF8fChjPSEwKTt2YXIgZj1uZXcgTSh0aGlzKS5kcmF3TGluZShpLShkP3A6MCksYSxzKyhkP3A6MCkscixoLmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGcpO2Yubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxjJiZoLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbEdyaWRCb3JkZXJzLmFkZChmKTpvLmFkZChmKX19LHtrZXk6XCJfZHJhd0dyaWRCYW5kUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYyxpPWUueDEsYT1lLnkxLHM9ZS54MixyPWUueTIsbj1lLnR5cGUsbz10aGlzLncsaD1uZXcgTSh0aGlzLmN0eCksYz1vLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYobiE9PVwiY29sdW1uXCJ8fG8uY29uZmlnLnhheGlzLnR5cGUhPT1cImRhdGV0aW1lXCIpe3ZhciBkPW8uY29uZmlnLmdyaWRbbl0uY29sb3JzW3RdLGc9aC5kcmF3UmVjdChpLShuPT09XCJyb3dcIj9jOjApLGEscysobj09PVwicm93XCI/MipjOjApLHIsMCxkLG8uY29uZmlnLmdyaWRbbl0ub3BhY2l0eSk7dGhpcy5lbGcuYWRkKGcpLGcuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxnLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZC1cIi5jb25jYXQobikpfX19LHtrZXk6XCJfZHJhd1hZTGluZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS54Q291bnQsYT1lLnRpY2tBbW91bnQscz10aGlzLnc7aWYocy5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxzLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIHIsbj1zLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxvPXMuZ2xvYmFscy5ncmlkSGVpZ2h0O3MuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoP2Z1bmN0aW9uKGYpe2Zvcih2YXIgYj1mLnhDLG09Zi54MSx3PWYueTEsQT1mLngyLGw9Zi55Mix1PTA7dTxiO3UrKyltPXQueGF4aXNMYWJlbHNbdV0ucG9zaXRpb24sQT10LnhheGlzTGFiZWxzW3VdLnBvc2l0aW9uLHQuX2RyYXdHcmlkTGluZXMoe2k6dSx4MTptLHkxOncseDI6QSx5MjpsLHhDb3VudDppLHBhcmVudDp0LmVsZ3JpZExpbmVzVn0pfSh7eEM6aSx4MTpuLHkxOjAseDI6cix5MjpvfSk6KHMuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT1zLmdsb2JhbHMueEF4aXNTY2FsZS5yZXN1bHQubGVuZ3RoKSxmdW5jdGlvbihmKXtmb3IodmFyIGI9Zi54QyxtPWYueDEsdz1mLnkxLEE9Zi54MixsPWYueTIsdT0wO3U8Yisocy5nbG9iYWxzLmlzWE51bWVyaWM/MDoxKTt1KyspdT09PTAmJmI9PT0xJiZzLmdsb2JhbHMuZGF0YVBvaW50cz09PTEmJihBPW09cy5nbG9iYWxzLmdyaWRXaWR0aC8yKSx0Ll9kcmF3R3JpZExpbmVzKHtpOnUseDE6bSx5MTp3LHgyOkEseTI6bCx4Q291bnQ6aSxwYXJlbnQ6dC5lbGdyaWRMaW5lc1Z9KSxBPW0rPXMuZ2xvYmFscy5ncmlkV2lkdGgvKHMuZ2xvYmFscy5pc1hOdW1lcmljP2ItMTpiKX0oe3hDOmkseDE6bix5MTowLHgyOnIseTI6b30pKX1pZihzLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpe3ZhciBoPTAsYz0wLGQ9cy5nbG9iYWxzLmdyaWRXaWR0aCxnPWErMTt0aGlzLmlzUmFuZ2VCYXImJihnPXMuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTtmb3IodmFyIHA9MDtwPGcrKHRoaXMuaXNSYW5nZUJhcj8xOjApO3ArKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6cCx4Q291bnQ6ZysodGhpcy5pc1JhbmdlQmFyPzE6MCkseDE6MCx5MTpoLHgyOmQseTI6YyxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxjPWgrPXMuZ2xvYmFscy5ncmlkSGVpZ2h0Lyh0aGlzLmlzUmFuZ2VCYXI/ZzphKX19fSx7a2V5OlwiX2RyYXdJbnZlcnRlZFhZTGluZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnhDb3VudCxpPXRoaXMudztpZihpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3d8fGkuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KWZvcih2YXIgYSxzPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHI9aS5nbG9iYWxzLmdyaWRIZWlnaHQsbj0wO248dCsxO24rKylpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cmJnRoaXMuX2RyYXdHcmlkTGluZSh7aTpuLHhDb3VudDp0KzEseDE6cyx5MTowLHgyOmEseTI6cixwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc1Z9KSxuZXcgemUodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKHMsMCxpLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKSxhPXM9cytpLmdsb2JhbHMuZ3JpZFdpZHRoL3QrLjM7aWYoaS5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgbz0wLGg9MCxjPWkuZ2xvYmFscy5ncmlkV2lkdGgsZD0wO2Q8aS5nbG9iYWxzLmRhdGFQb2ludHMrMTtkKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmQseENvdW50OmkuZ2xvYmFscy5kYXRhUG9pbnRzKzEseDE6MCx5MTpvLHgyOmMseTI6aCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxoPW8rPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5kYXRhUG9pbnRzfX0se2tleTpcInJlbmRlckdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PW5ldyBNKHRoaXMuY3R4KTt0aGlzLmVsZz10Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSksdGhpcy5lbGdyaWRMaW5lc0g9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCJ9KSx0aGlzLmVsZ3JpZExpbmVzVj10Lmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLXZlcnRpY2FsXCJ9KSx0aGlzLmVsR3JpZEJvcmRlcnM9dC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWQtYm9yZGVyc1wifSksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNIKSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc1YpLGUuY29uZmlnLmdyaWQuc2hvd3x8KHRoaXMuZWxncmlkTGluZXNWLmhpZGUoKSx0aGlzLmVsZ3JpZExpbmVzSC5oaWRlKCksdGhpcy5lbEdyaWRCb3JkZXJzLmhpZGUoKSk7Zm9yKHZhciBpLGE9ZS5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoP2UuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5sZW5ndGgtMTo1LHM9MDtzPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYoZS5nbG9iYWxzLnlBeGlzU2NhbGVbc10hPT12b2lkIDAmJihhPWUuZ2xvYmFscy55QXhpc1NjYWxlW3NdLnJlc3VsdC5sZW5ndGgtMSksIShhPjIpKTtzKyspO2lmKCFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLmlzUmFuZ2VCYXIpe3ZhciByLG4sbztpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLHRoaXMuaXNSYW5nZUJhciYmKGktLSxhPWUuZ2xvYmFscy5sYWJlbHMubGVuZ3RoLGUuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJmUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJihpPWUuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpLCgocj1lLmdsb2JhbHMueUF4aXNTY2FsZSk9PT1udWxsfHxyPT09dm9pZCAwfHwobj1yWzBdKT09PW51bGx8fG49PT12b2lkIDB8fChvPW4ucmVzdWx0KT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8ubGVuZ3RoKT4wJiZlLmNvbmZpZy54YXhpcy50eXBlIT09XCJkYXRldGltZVwiJiYoaT1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQubGVuZ3RoLTEpKSx0aGlzLl9kcmF3WFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSl9ZWxzZSBpPWEsYT1lLmdsb2JhbHMueFRpY2tBbW91bnQsdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSk7cmV0dXJuIHRoaXMuZHJhd0dyaWRCYW5kcyhpLGEpLHtlbDp0aGlzLmVsZyxlbEdyaWRCb3JkZXJzOnRoaXMuZWxHcmlkQm9yZGVycyx4QXhpc1RpY2tXaWR0aDplLmdsb2JhbHMuZ3JpZFdpZHRoL2l9fX0se2tleTpcImRyYXdHcmlkQmFuZHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztpZihpLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMhPT12b2lkIDAmJmkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGE9MCxzPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L3Qscj1pLmdsb2JhbHMuZ3JpZFdpZHRoLG49MCxvPTA7bjx0O24rKyxvKyspbz49aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aCYmKG89MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7YzpvLHgxOjAseTE6YSx4MjpyLHkyOnMsdHlwZTpcInJvd1wifSksYSs9aS5nbG9iYWxzLmdyaWRIZWlnaHQvdDtpZihpLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMhPT12b2lkIDAmJmkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGg9aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCE9PVwib25cInx8aS5jb25maWcueGF4aXMudHlwZSE9PVwiY2F0ZWdvcnlcIiYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz9lOmUtMSxjPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGQ9aS5nbG9iYWxzLnBhZEhvcml6b250YWwraS5nbG9iYWxzLmdyaWRXaWR0aC9oLGc9aS5nbG9iYWxzLmdyaWRIZWlnaHQscD0wLGY9MDtwPGU7cCsrLGYrKylmPj1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYoZj0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOmYseDE6Yyx5MTowLHgyOmQseTI6Zyx0eXBlOlwiY29sdW1uXCJ9KSxjKz1pLmdsb2JhbHMuZ3JpZFdpZHRoL2h9fV0pLHl9KCksa2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcIm5pY2VTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOjUsYT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLHI9dGhpcy53LG49TWF0aC5hYnModC1lKTtpZigoaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLG4pKT09PVwiZGF0YVBvaW50c1wiJiYoaT1yLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxlPT09TnVtYmVyLk1JTl9WQUxVRSYmdD09PTB8fCFQLmlzTnVtYmVyKGUpJiYhUC5pc051bWJlcih0KXx8ZT09PU51bWJlci5NSU5fVkFMVUUmJnQ9PT0tTnVtYmVyLk1BWF9WQUxVRSlyZXR1cm4gZT0wLHQ9aSx0aGlzLmxpbmVhclNjYWxlKGUsdCxpLGEsci5jb25maWcueWF4aXNbYV0uc3RlcFNpemUpO2U+dD8oY29uc29sZS53YXJuKFwiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heFwiKSx0PWUrLjEpOmU9PT10JiYoZT1lPT09MD8wOmUtLjUsdD10PT09MD8yOnQrLjUpO3ZhciBvPVtdO248MSYmcyYmKHIuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImNhbmRsZXN0aWNrXCJ8fHIuY29uZmlnLnNlcmllc1thXS50eXBlPT09XCJjYW5kbGVzdGlja1wifHxyLmNvbmZpZy5jaGFydC50eXBlPT09XCJib3hQbG90XCJ8fHIuY29uZmlnLnNlcmllc1thXS50eXBlPT09XCJib3hQbG90XCJ8fHIuZ2xvYmFscy5pc1JhbmdlRGF0YSkmJih0Kj0xLjAxKTt2YXIgaD1pKzE7aDwyP2g9MjpoPjImJihoLT0yKTt2YXIgYz1uL2gsZD1NYXRoLmZsb29yKFAubG9nMTAoYykpLGc9TWF0aC5wb3coMTAsZCkscD1NYXRoLnJvdW5kKGMvZyk7cDwxJiYocD0xKTt2YXIgZj1wKmc7ci5jb25maWcueWF4aXNbYV0uc3RlcFNpemUmJihmPXIuY29uZmlnLnlheGlzW2FdLnN0ZXBTaXplKSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZyLmNvbmZpZy54YXhpcy5zdGVwU2l6ZSYmci5jb25maWcueGF4aXMudHlwZSE9PVwiZGF0ZXRpbWVcIiYmKGY9ci5jb25maWcueGF4aXMuc3RlcFNpemUpO3ZhciBiPWYqTWF0aC5mbG9vcihlL2YpLG09ZipNYXRoLmNlaWwodC9mKSx3PWI7aWYocyYmbj4yKXtmb3IoO28ucHVzaChQLnN0cmlwTnVtYmVyKHcsNykpLCEoKHcrPWYpPm0pOyk7cmV0dXJue3Jlc3VsdDpvLG5pY2VNaW46b1swXSxuaWNlTWF4Om9bby5sZW5ndGgtMV19fXZhciBBPWU7KG89W10pLnB1c2goUC5zdHJpcE51bWJlcihBLDcpKTtmb3IodmFyIGw9TWF0aC5hYnModC1lKS9pLHU9MDt1PD1pO3UrKylBKz1sLG8ucHVzaChBKTtyZXR1cm4gb1tvLmxlbmd0aC0yXT49dCYmby5wb3AoKSx7cmVzdWx0Om8sbmljZU1pbjpvWzBdLG5pY2VNYXg6b1tvLmxlbmd0aC0xXX19fSx7a2V5OlwibGluZWFyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTo1LGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOjAscz1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06dm9pZCAwLHI9TWF0aC5hYnModC1lKTsoaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLHIpKT09PVwiZGF0YVBvaW50c1wiJiYoaT10aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLHN8fChzPXIvaSksaT09PU51bWJlci5NQVhfVkFMVUUmJihpPTUscz0xKTtmb3IodmFyIG49W10sbz1lO2k+PTA7KW4ucHVzaChvKSxvKz1zLGktPTE7cmV0dXJue3Jlc3VsdDpuLG5pY2VNaW46blswXSxuaWNlTWF4Om5bbi5sZW5ndGgtMV19fX0se2tleTpcImxvZ2FyaXRobWljU2NhbGVOaWNlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3Q8PTAmJih0PU1hdGgubWF4KGUsaSkpLGU8PTAmJihlPU1hdGgubWluKHQsaSkpO2Zvcih2YXIgYT1bXSxzPU1hdGguY2VpbChNYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSsxKSxyPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5sb2coaSkpO3I8cztyKyspYS5wdXNoKE1hdGgucG93KGkscikpO3JldHVybntyZXN1bHQ6YSxuaWNlTWluOmFbMF0sbmljZU1heDphW2EubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3Q8PTAmJih0PU1hdGgubWF4KGUsaSkpLGU8PTAmJihlPU1hdGgubWluKHQsaSkpO2Zvcih2YXIgYT1bXSxzPU1hdGgubG9nKHQpL01hdGgubG9nKGkpLHI9TWF0aC5sb2coZSkvTWF0aC5sb2coaSksbj1zLXIsbz1NYXRoLnJvdW5kKG4pLGg9bi9vLGM9MCxkPXI7YzxvO2MrKyxkKz1oKWEucHVzaChNYXRoLnBvdyhpLGQpKTtyZXR1cm4gYS5wdXNoKE1hdGgucG93KGkscykpLHtyZXN1bHQ6YSxuaWNlTWluOmUsbmljZU1heDp0fX19LHtrZXk6XCJfYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPWU7aWYodCE9PXZvaWQgMCYmdGhpcy53LmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuZm9ybWF0dGVyJiZ0aGlzLncuY29uZmlnLnlheGlzW3RdLnRpY2tBbW91bnQ9PT12b2lkIDApe3ZhciBzPU51bWJlcih0aGlzLncuY29uZmlnLnlheGlzW3RdLmxhYmVscy5mb3JtYXR0ZXIoMSkpO1AuaXNOdW1iZXIocykmJnRoaXMudy5nbG9iYWxzLnlWYWx1ZURlY2ltYWw9PT0wJiYoYT1NYXRoLmNlaWwoaSkpfXJldHVybiBhPGU/YTplfX0se2tleTpcInNldFlTY2FsZUZvckluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudy5nbG9iYWxzLHM9dGhpcy53LmNvbmZpZyxyPWEuaXNCYXJIb3Jpem9udGFsP3MueGF4aXM6cy55YXhpc1tlXTthLnlBeGlzU2NhbGVbZV09PT12b2lkIDAmJihhLnlBeGlzU2NhbGVbZV09W10pO3ZhciBuPU1hdGguYWJzKGktdCk7aWYoci5sb2dhcml0aG1pYyYmbjw9NSYmKGEuaW52YWxpZExvZ1NjYWxlPSEwKSxyLmxvZ2FyaXRobWljJiZuPjUpYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsYS55QXhpc1NjYWxlW2VdPXRoaXMubG9nYXJpdGhtaWNTY2FsZSh0LGksci5sb2dCYXNlKSxhLnlBeGlzU2NhbGVbZV09ci5mb3JjZU5pY2VTY2FsZT90aGlzLmxvZ2FyaXRobWljU2NhbGVOaWNlKHQsaSxyLmxvZ0Jhc2UpOnRoaXMubG9nYXJpdGhtaWNTY2FsZSh0LGksci5sb2dCYXNlKTtlbHNlIGlmKGkhPT0tTnVtYmVyLk1BWF9WQUxVRSYmUC5pc051bWJlcihpKSlpZihhLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxyLm1pbj09PXZvaWQgMCYmci5tYXg9PT12b2lkIDB8fHIuZm9yY2VOaWNlU2NhbGUpe3ZhciBvPXMueWF4aXNbZV0ubWF4PT09dm9pZCAwJiZzLnlheGlzW2VdLm1pbj09PXZvaWQgMHx8cy55YXhpc1tlXS5mb3JjZU5pY2VTY2FsZTthLnlBeGlzU2NhbGVbZV09dGhpcy5uaWNlU2NhbGUodCxpLHIudGlja0Ftb3VudD9yLnRpY2tBbW91bnQ6bjw1JiZuPjE/bisxOjUsZSxvKX1lbHNlIGEueUF4aXNTY2FsZVtlXT10aGlzLmxpbmVhclNjYWxlKHQsaSxyLnRpY2tBbW91bnQsZSxzLnlheGlzW2VdLnN0ZXBTaXplKTtlbHNlIGEueUF4aXNTY2FsZVtlXT10aGlzLmxpbmVhclNjYWxlKDAsNSw1LGUscy55YXhpc1tlXS5zdGVwU2l6ZSl9fSx7a2V5Olwic2V0WFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1pLmdsb2JhbHMscz1NYXRoLmFicyh0LWUpO3JldHVybiB0IT09LU51bWJlci5NQVhfVkFMVUUmJlAuaXNOdW1iZXIodCk/YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUoZSx0LGkuY29uZmlnLnhheGlzLnRpY2tBbW91bnQ/aS5jb25maWcueGF4aXMudGlja0Ftb3VudDpzPDUmJnM+MT9zKzE6NSwwLGkuY29uZmlnLnhheGlzLnN0ZXBTaXplKTphLnhBeGlzU2NhbGU9dGhpcy5saW5lYXJTY2FsZSgwLDUsNSksYS54QXhpc1NjYWxlfX0se2tleTpcInNldE11bHRpcGxlWVNjYWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPXQubWluWUFyci5jb25jYXQoW10pLHM9dC5tYXhZQXJyLmNvbmNhdChbXSkscj1bXTtpLnlheGlzLmZvckVhY2goZnVuY3Rpb24obixvKXt2YXIgaD1vO2kuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZyxwKXtnLm5hbWU9PT1uLnNlcmllc05hbWUmJihoPXAsbyE9PXA/ci5wdXNoKHtpbmRleDpwLHNpbWlsYXJJbmRleDpvLGFscmVhZHlFeGlzdHM6ITB9KTpyLnB1c2goe2luZGV4OnB9KSl9KTt2YXIgYz1hW2hdLGQ9c1toXTtlLnNldFlTY2FsZUZvckluZGV4KG8sYyxkKX0pLHRoaXMuc2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXMoYSxzLHIpfX0se2tleTpcInNhbWVTY2FsZUluTXVsdGlwbGVBeGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbj1bXTtpLmZvckVhY2goZnVuY3Rpb24oYil7Yi5hbHJlYWR5RXhpc3RzJiYobltiLmluZGV4XT09PXZvaWQgMCYmKG5bYi5pbmRleF09W10pLG5bYi5pbmRleF0ucHVzaChiLmluZGV4KSxuW2IuaW5kZXhdLnB1c2goYi5zaW1pbGFySW5kZXgpKX0pLHIueUF4aXNTYW1lU2NhbGVJbmRpY2VzPW4sbi5mb3JFYWNoKGZ1bmN0aW9uKGIsbSl7bi5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7dmFyIGwsdTttIT09QSYmKGw9Yix1PXcsbC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHUuaW5kZXhPZih4KSE9PS0xfSkpLmxlbmd0aD4wJiYoblttXT1uW21dLmNvbmNhdChuW0FdKSl9KX0pO3ZhciBvPW4ubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmZpbHRlcihmdW5jdGlvbihtLHcpe3JldHVybiBiLmluZGV4T2YobSk9PT13fSl9KS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuc29ydCgpfSk7bj1uLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4hIWJ9KTt2YXIgaD1vLnNsaWNlKCksYz1oLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYil9KTtoPWguZmlsdGVyKGZ1bmN0aW9uKGIsbSl7cmV0dXJuIGMuaW5kZXhPZihKU09OLnN0cmluZ2lmeShiKSk9PT1tfSk7dmFyIGQ9W10sZz1bXTtlLmZvckVhY2goZnVuY3Rpb24oYixtKXtoLmZvckVhY2goZnVuY3Rpb24odyxBKXt3LmluZGV4T2YobSk+LTEmJihkW0FdPT09dm9pZCAwJiYoZFtBXT1bXSxnW0FdPVtdKSxkW0FdLnB1c2goe2tleTptLHZhbHVlOmJ9KSxnW0FdLnB1c2goe2tleTptLHZhbHVlOnRbbV19KSl9KX0pO3ZhciBwPUFycmF5LmFwcGx5KG51bGwsQXJyYXkoaC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLE51bWJlci5NSU5fVkFMVUUpLGY9QXJyYXkuYXBwbHkobnVsbCxBcnJheShoLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsLU51bWJlci5NQVhfVkFMVUUpO2QuZm9yRWFjaChmdW5jdGlvbihiLG0pe2IuZm9yRWFjaChmdW5jdGlvbih3LEEpe3BbbV09TWF0aC5taW4ody52YWx1ZSxwW21dKX0pfSksZy5mb3JFYWNoKGZ1bmN0aW9uKGIsbSl7Yi5mb3JFYWNoKGZ1bmN0aW9uKHcsQSl7ZlttXT1NYXRoLm1heCh3LnZhbHVlLGZbbV0pfSl9KSxlLmZvckVhY2goZnVuY3Rpb24oYixtKXtnLmZvckVhY2goZnVuY3Rpb24odyxBKXt2YXIgbD1wW0FdLHU9ZltBXTtzLmNoYXJ0LnN0YWNrZWQmJih1PTAsdy5mb3JFYWNoKGZ1bmN0aW9uKHgsdil7eC52YWx1ZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiYodSs9eC52YWx1ZSksbCE9PU51bWJlci5NSU5fVkFMVUUmJihsKz1kW0FdW3ZdLnZhbHVlKX0pKSx3LmZvckVhY2goZnVuY3Rpb24oeCx2KXt3W3ZdLmtleT09PW0mJihzLnlheGlzW21dLm1pbiE9PXZvaWQgMCYmKGw9dHlwZW9mIHMueWF4aXNbbV0ubWluPT1cImZ1bmN0aW9uXCI/cy55YXhpc1ttXS5taW4oci5taW5ZKTpzLnlheGlzW21dLm1pbikscy55YXhpc1ttXS5tYXghPT12b2lkIDAmJih1PXR5cGVvZiBzLnlheGlzW21dLm1heD09XCJmdW5jdGlvblwiP3MueWF4aXNbbV0ubWF4KHIubWF4WSk6cy55YXhpc1ttXS5tYXgpLGEuc2V0WVNjYWxlRm9ySW5kZXgobSxsLHUpKX0pfSl9KX19LHtrZXk6XCJhdXRvU2NhbGVZXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe2V8fChlPXRoaXMpO3ZhciBhPWUudztpZihhLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzfHxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aClyZXR1cm4gY29uc29sZS53YXJuKFwiYXV0b1NjYWxlWWF4aXMgbm90IHN1cHBvcnRlZCBpbiBhIG11bHRpLXlheGlzIGNoYXJ0LlwiKSx0O3ZhciBzPWEuZ2xvYmFscy5zZXJpZXNYWzBdLHI9YS5jb25maWcuY2hhcnQuc3RhY2tlZDtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKG4sbyl7Zm9yKHZhciBoPTAsYz0wO2M8cy5sZW5ndGg7YysrKWlmKHNbY10+PWkueGF4aXMubWluKXtoPWM7YnJlYWt9dmFyIGQsZyxwPWEuZ2xvYmFscy5taW5ZQXJyW29dLGY9YS5nbG9iYWxzLm1heFlBcnJbb10sYj1hLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsczthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24obSx3KXt2YXIgQT1tW2hdO3I/KEE9YltoXSxkPWc9QSxiLmZvckVhY2goZnVuY3Rpb24obCx1KXtzW3VdPD1pLnhheGlzLm1heCYmc1t1XT49aS54YXhpcy5taW4mJihsPmcmJmwhPT1udWxsJiYoZz1sKSxtW3VdPGQmJm1bdV0hPT1udWxsJiYoZD1tW3VdKSl9KSk6KGQ9Zz1BLG0uZm9yRWFjaChmdW5jdGlvbihsLHUpe2lmKHNbdV08PWkueGF4aXMubWF4JiZzW3VdPj1pLnhheGlzLm1pbil7dmFyIHg9bCx2PWw7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGssUyl7bCE9PW51bGwmJih4PU1hdGgubWluKGtbdV0seCksdj1NYXRoLm1heChrW3VdLHYpKX0pLHY+ZyYmdiE9PW51bGwmJihnPXYpLHg8ZCYmeCE9PW51bGwmJihkPXgpfX0pKSxkPT09dm9pZCAwJiZnPT09dm9pZCAwJiYoZD1wLGc9ZiksZyo9ZzwwPy45OjEuMSwoZCo9ZDwwPzEuMTouOSk9PT0wJiZnPT09MCYmKGQ9LTEsZz0xKSxnPDAmJmc8ZiYmKGc9ZiksZDwwJiZkPnAmJihkPXApLHQubGVuZ3RoPjE/KHRbd10ubWluPW4ubWluPT09dm9pZCAwP2Q6bi5taW4sdFt3XS5tYXg9bi5tYXg9PT12b2lkIDA/ZzpuLm1heCk6KHRbMF0ubWluPW4ubWluPT09dm9pZCAwP2Q6bi5taW4sdFswXS5tYXg9bi5tYXg9PT12b2lkIDA/ZzpuLm1heCl9KX0pLHR9fV0pLHl9KCksQmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zY2FsZXM9bmV3IGtlKGUpfXJldHVybiBZKHksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFlSYW5nZSgpLHRoaXMuc2V0WFJhbmdlKCksdGhpcy5zZXRaUmFuZ2UoKX19LHtrZXk6XCJnZXRNaW5ZTWF4WVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpOdW1iZXIuTUFYX1ZBTFVFLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOi1OdW1iZXIuTUFYX1ZBTFVFLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbj0tTnVtYmVyLk1BWF9WQUxVRSxvPU51bWJlci5NSU5fVkFMVUU7YT09PW51bGwmJihhPWUrMSk7dmFyIGg9ci5zZXJpZXMsYz1oLGQ9aDtzLmNoYXJ0LnR5cGU9PT1cImNhbmRsZXN0aWNrXCI/KGM9ci5zZXJpZXNDYW5kbGVMLGQ9ci5zZXJpZXNDYW5kbGVIKTpzLmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcIj8oYz1yLnNlcmllc0NhbmRsZU8sZD1yLnNlcmllc0NhbmRsZUMpOnIuaXNSYW5nZURhdGEmJihjPXIuc2VyaWVzUmFuZ2VTdGFydCxkPXIuc2VyaWVzUmFuZ2VFbmQpO2Zvcih2YXIgZz1lO2c8YTtnKyspe3IuZGF0YVBvaW50cz1NYXRoLm1heChyLmRhdGFQb2ludHMsaFtnXS5sZW5ndGgpLHIuY2F0ZWdvcnlMYWJlbHMubGVuZ3RoJiYoci5kYXRhUG9pbnRzPXIuY2F0ZWdvcnlMYWJlbHMuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiIT09dm9pZCAwfSkubGVuZ3RoKSxyLmxhYmVscy5sZW5ndGgmJnMueGF4aXMudHlwZSE9PVwiZGF0ZXRpbWVcIiYmci5zZXJpZXMucmVkdWNlKGZ1bmN0aW9uKGIsbSl7cmV0dXJuIGIrbS5sZW5ndGh9LDApIT09MCYmKHIuZGF0YVBvaW50cz1NYXRoLm1heChyLmRhdGFQb2ludHMsci5sYWJlbHMubGVuZ3RoKSk7Zm9yKHZhciBwPTA7cDxyLnNlcmllc1tnXS5sZW5ndGg7cCsrKXt2YXIgZj1oW2ddW3BdO2YhPT1udWxsJiZQLmlzTnVtYmVyKGYpPyhkW2ddW3BdIT09dm9pZCAwJiYobj1NYXRoLm1heChuLGRbZ11bcF0pLHQ9TWF0aC5taW4odCxkW2ddW3BdKSksY1tnXVtwXSE9PXZvaWQgMCYmKHQ9TWF0aC5taW4odCxjW2ddW3BdKSxpPU1hdGgubWF4KGksY1tnXVtwXSkpLHRoaXMudy5jb25maWcuY2hhcnQudHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmdGhpcy53LmNvbmZpZy5jaGFydC50eXBlIT09XCJib3hQbG90XCImJnRoaXMudy5jb25maWcuY2hhcnQudHlwZT09PVwicmFuZ2VBcmVhXCImJnRoaXMudy5jb25maWcuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcInx8KHRoaXMudy5jb25maWcuY2hhcnQudHlwZSE9PVwiY2FuZGxlc3RpY2tcIiYmdGhpcy53LmNvbmZpZy5jaGFydC50eXBlIT09XCJib3hQbG90XCJ8fHIuc2VyaWVzQ2FuZGxlQ1tnXVtwXSE9PXZvaWQgMCYmKG49TWF0aC5tYXgobixyLnNlcmllc0NhbmRsZU9bZ11bcF0pLG49TWF0aC5tYXgobixyLnNlcmllc0NhbmRsZUhbZ11bcF0pLG49TWF0aC5tYXgobixyLnNlcmllc0NhbmRsZUxbZ11bcF0pLG49TWF0aC5tYXgobixyLnNlcmllc0NhbmRsZUNbZ11bcF0pLHRoaXMudy5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwiJiYobj1NYXRoLm1heChuLHIuc2VyaWVzQ2FuZGxlTVtnXVtwXSkpKSwhcy5zZXJpZXNbZ10udHlwZXx8cy5zZXJpZXNbZ10udHlwZT09PVwiY2FuZGxlc3RpY2tcIiYmcy5zZXJpZXNbZ10udHlwZT09PVwiYm94UGxvdFwiJiZzLnNlcmllc1tnXS50eXBlPT09XCJyYW5nZUFyZWFcIiYmcy5zZXJpZXNbZ10udHlwZT09PVwicmFuZ2VCYXJcInx8KG49TWF0aC5tYXgobixyLnNlcmllc1tnXVtwXSksdD1NYXRoLm1pbih0LHIuc2VyaWVzW2ddW3BdKSksaT1uKSxyLnNlcmllc0dvYWxzW2ddJiZyLnNlcmllc0dvYWxzW2ddW3BdJiZBcnJheS5pc0FycmF5KHIuc2VyaWVzR29hbHNbZ11bcF0pJiZyLnNlcmllc0dvYWxzW2ddW3BdLmZvckVhY2goZnVuY3Rpb24oYil7byE9PU51bWJlci5NSU5fVkFMVUUmJihvPU1hdGgubWluKG8sYi52YWx1ZSksdD1vKSxuPU1hdGgubWF4KG4sYi52YWx1ZSksaT1ufSksUC5pc0Zsb2F0KGYpJiYoZj1QLm5vRXhwb25lbnRzKGYpLHIueVZhbHVlRGVjaW1hbD1NYXRoLm1heChyLnlWYWx1ZURlY2ltYWwsZi50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXS5sZW5ndGgpKSxvPmNbZ11bcF0mJmNbZ11bcF08MCYmKG89Y1tnXVtwXSkpOnIuaGFzTnVsbFZhbHVlcz0hMH19cmV0dXJuIHMuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcIiYmci5zZXJpZXNSYW5nZVN0YXJ0Lmxlbmd0aCYmci5pc0Jhckhvcml6b250YWwmJihvPXQpLHMuY2hhcnQudHlwZT09PVwiYmFyXCImJihvPDAmJm48MCYmKG49MCksbz09PU51bWJlci5NSU5fVkFMVUUmJihvPTApKSx7bWluWTpvLG1heFk6bixsb3dlc3RZOnQsaGlnaGVzdFk6aX19fSx7a2V5Olwic2V0WVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscyx0PXRoaXMudy5jb25maWc7ZS5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLGUubWluWT1OdW1iZXIuTUlOX1ZBTFVFO3ZhciBpPU51bWJlci5NQVhfVkFMVUU7aWYoZS5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBhPTA7YTxlLnNlcmllcy5sZW5ndGg7YSsrKXt2YXIgcz10aGlzLmdldE1pbllNYXhZKGEsaSxudWxsLGErMSk7ZS5taW5ZQXJyLnB1c2gocy5taW5ZKSxlLm1heFlBcnIucHVzaChzLm1heFkpLGk9cy5sb3dlc3RZfXZhciByPXRoaXMuZ2V0TWluWU1heFkoMCxpLG51bGwsZS5zZXJpZXMubGVuZ3RoKTtpZihlLm1pblk9ci5taW5ZLGUubWF4WT1yLm1heFksaT1yLmxvd2VzdFksdC5jaGFydC5zdGFja2VkJiZ0aGlzLl9zZXRTdGFja2VkTWluTWF4KCksKHQuY2hhcnQudHlwZT09PVwibGluZVwifHx0LmNoYXJ0LnR5cGU9PT1cImFyZWFcInx8dC5jaGFydC50eXBlPT09XCJjYW5kbGVzdGlja1wifHx0LmNoYXJ0LnR5cGU9PT1cImJveFBsb3RcInx8dC5jaGFydC50eXBlPT09XCJyYW5nZUJhclwiJiYhZS5pc0Jhckhvcml6b250YWwpJiZlLm1pblk9PT1OdW1iZXIuTUlOX1ZBTFVFJiZpIT09LU51bWJlci5NQVhfVkFMVUUmJmkhPT1lLm1heFkpe3ZhciBuPWUubWF4WS1pOyhpPj0wJiZpPD0xMHx8dC55YXhpc1swXS5taW4hPT12b2lkIDB8fHQueWF4aXNbMF0ubWF4IT09dm9pZCAwKSYmKG49MCksZS5taW5ZPWktNSpuLzEwMCxpPjAmJmUubWluWTwwJiYoZS5taW5ZPTApLGUubWF4WT1lLm1heFkrNSpuLzEwMH1yZXR1cm4gdC55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKG8saCl7by5tYXghPT12b2lkIDAmJih0eXBlb2Ygby5tYXg9PVwibnVtYmVyXCI/ZS5tYXhZQXJyW2hdPW8ubWF4OnR5cGVvZiBvLm1heD09XCJmdW5jdGlvblwiJiYoZS5tYXhZQXJyW2hdPW8ubWF4KGUuaXNNdWx0aXBsZVlBeGlzP2UubWF4WUFycltoXTplLm1heFkpKSxlLm1heFk9ZS5tYXhZQXJyW2hdKSxvLm1pbiE9PXZvaWQgMCYmKHR5cGVvZiBvLm1pbj09XCJudW1iZXJcIj9lLm1pbllBcnJbaF09by5taW46dHlwZW9mIG8ubWluPT1cImZ1bmN0aW9uXCImJihlLm1pbllBcnJbaF09by5taW4oZS5pc011bHRpcGxlWUF4aXM/ZS5taW5ZQXJyW2hdPT09TnVtYmVyLk1JTl9WQUxVRT8wOmUubWluWUFycltoXTplLm1pblkpKSxlLm1pblk9ZS5taW5ZQXJyW2hdKX0pLGUuaXNCYXJIb3Jpem9udGFsJiZbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3QueGF4aXNbb10hPT12b2lkIDAmJnR5cGVvZiB0LnhheGlzW29dPT1cIm51bWJlclwiJiYobz09PVwibWluXCI/ZS5taW5ZPXQueGF4aXNbb106ZS5tYXhZPXQueGF4aXNbb10pfSksZS5pc011bHRpcGxlWUF4aXM/KHRoaXMuc2NhbGVzLnNldE11bHRpcGxlWVNjYWxlcygpLGUubWluWT1pLGUueUF4aXNTY2FsZS5mb3JFYWNoKGZ1bmN0aW9uKG8saCl7ZS5taW5ZQXJyW2hdPW8ubmljZU1pbixlLm1heFlBcnJbaF09by5uaWNlTWF4fSkpOih0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLGUubWluWSxlLm1heFkpLGUubWluWT1lLnlBeGlzU2NhbGVbMF0ubmljZU1pbixlLm1heFk9ZS55QXhpc1NjYWxlWzBdLm5pY2VNYXgsZS5taW5ZQXJyWzBdPWUueUF4aXNTY2FsZVswXS5uaWNlTWluLGUubWF4WUFyclswXT1lLnlBeGlzU2NhbGVbMF0ubmljZU1heCkse21pblk6ZS5taW5ZLG1heFk6ZS5tYXhZLG1pbllBcnI6ZS5taW5ZQXJyLG1heFlBcnI6ZS5tYXhZQXJyLHlBeGlzU2NhbGU6ZS55QXhpc1NjYWxlfX19LHtrZXk6XCJzZXRYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLHQ9dGhpcy53LmNvbmZpZyxpPXQueGF4aXMudHlwZT09PVwibnVtZXJpY1wifHx0LnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCJ8fHQueGF4aXMudHlwZT09PVwiY2F0ZWdvcnlcIiYmIWUubm9MYWJlbHNQcm92aWRlZHx8ZS5ub0xhYmVsc1Byb3ZpZGVkfHxlLmlzWE51bWVyaWM7aWYoZS5pc1hOdW1lcmljJiZmdW5jdGlvbigpe2Zvcih2YXIgbj0wO248ZS5zZXJpZXMubGVuZ3RoO24rKylpZihlLmxhYmVsc1tuXSlmb3IodmFyIG89MDtvPGUubGFiZWxzW25dLmxlbmd0aDtvKyspZS5sYWJlbHNbbl1bb10hPT1udWxsJiZQLmlzTnVtYmVyKGUubGFiZWxzW25dW29dKSYmKGUubWF4WD1NYXRoLm1heChlLm1heFgsZS5sYWJlbHNbbl1bb10pLGUuaW5pdGlhbE1heFg9TWF0aC5tYXgoZS5tYXhYLGUubGFiZWxzW25dW29dKSxlLm1pblg9TWF0aC5taW4oZS5taW5YLGUubGFiZWxzW25dW29dKSxlLmluaXRpYWxNaW5YPU1hdGgubWluKGUubWluWCxlLmxhYmVsc1tuXVtvXSkpfSgpLGUubm9MYWJlbHNQcm92aWRlZCYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD09PTAmJihlLm1heFg9ZS5sYWJlbHNbZS5sYWJlbHMubGVuZ3RoLTFdLGUuaW5pdGlhbE1heFg9ZS5sYWJlbHNbZS5sYWJlbHMubGVuZ3RoLTFdLGUubWluWD0xLGUuaW5pdGlhbE1pblg9MSksZS5pc1hOdW1lcmljfHxlLm5vTGFiZWxzUHJvdmlkZWR8fGUuZGF0YUZvcm1hdFhOdW1lcmljKXt2YXIgYTtpZih0LnhheGlzLnRpY2tBbW91bnQ9PT12b2lkIDA/KGE9TWF0aC5yb3VuZChlLnN2Z1dpZHRoLzE1MCksdC54YXhpcy50eXBlPT09XCJudW1lcmljXCImJmUuZGF0YVBvaW50czwzMCYmKGE9ZS5kYXRhUG9pbnRzLTEpLGE+ZS5kYXRhUG9pbnRzJiZlLmRhdGFQb2ludHMhPT0wJiYoYT1lLmRhdGFQb2ludHMtMSkpOnQueGF4aXMudGlja0Ftb3VudD09PVwiZGF0YVBvaW50c1wiPyhlLnNlcmllcy5sZW5ndGg+MSYmKGE9ZS5zZXJpZXNbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMSksZS5pc1hOdW1lcmljJiYoYT1lLm1heFgtZS5taW5YLTEpKTphPXQueGF4aXMudGlja0Ftb3VudCxlLnhUaWNrQW1vdW50PWEsdC54YXhpcy5tYXghPT12b2lkIDAmJnR5cGVvZiB0LnhheGlzLm1heD09XCJudW1iZXJcIiYmKGUubWF4WD10LnhheGlzLm1heCksdC54YXhpcy5taW4hPT12b2lkIDAmJnR5cGVvZiB0LnhheGlzLm1pbj09XCJudW1iZXJcIiYmKGUubWluWD10LnhheGlzLm1pbiksdC54YXhpcy5yYW5nZSE9PXZvaWQgMCYmKGUubWluWD1lLm1heFgtdC54YXhpcy5yYW5nZSksZS5taW5YIT09TnVtYmVyLk1BWF9WQUxVRSYmZS5tYXhYIT09LU51bWJlci5NQVhfVkFMVUUpaWYodC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJiFlLmRhdGFGb3JtYXRYTnVtZXJpYyl7Zm9yKHZhciBzPVtdLHI9ZS5taW5YLTE7cjxlLm1heFg7cisrKXMucHVzaChyKzEpO2UueEF4aXNTY2FsZT17cmVzdWx0OnMsbmljZU1pbjpzWzBdLG5pY2VNYXg6c1tzLmxlbmd0aC0xXX19ZWxzZSBlLnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMuc2V0WFNjYWxlKGUubWluWCxlLm1heFgpO2Vsc2UgZS54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDAsYSxhLDAsdC54YXhpcy5zdGVwU2l6ZSksZS5ub0xhYmVsc1Byb3ZpZGVkJiZlLmxhYmVscy5sZW5ndGg+MCYmKGUueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLGUubGFiZWxzLmxlbmd0aCxhLTEsMCx0LnhheGlzLnN0ZXBTaXplKSxlLnNlcmllc1g9ZS5sYWJlbHMuc2xpY2UoKSk7aSYmKGUubGFiZWxzPWUueEF4aXNTY2FsZS5yZXN1bHQuc2xpY2UoKSl9cmV0dXJuIGUuaXNCYXJIb3Jpem9udGFsJiZlLmxhYmVscy5sZW5ndGgmJihlLnhUaWNrQW1vdW50PWUubGFiZWxzLmxlbmd0aCksdGhpcy5faGFuZGxlU2luZ2xlRGF0YVBvaW50KCksdGhpcy5fZ2V0TWluWERpZmYoKSx7bWluWDplLm1pblgsbWF4WDplLm1heFh9fX0se2tleTpcInNldFpSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHM7aWYoZS5pc0RhdGFYWVope2Zvcih2YXIgdD0wO3Q8ZS5zZXJpZXMubGVuZ3RoO3QrKylpZihlLnNlcmllc1pbdF0hPT12b2lkIDApZm9yKHZhciBpPTA7aTxlLnNlcmllc1pbdF0ubGVuZ3RoO2krKyllLnNlcmllc1pbdF1baV0hPT1udWxsJiZQLmlzTnVtYmVyKGUuc2VyaWVzWlt0XVtpXSkmJihlLm1heFo9TWF0aC5tYXgoZS5tYXhaLGUuc2VyaWVzWlt0XVtpXSksZS5taW5aPU1hdGgubWluKGUubWluWixlLnNlcmllc1pbdF1baV0pKX19fSx7a2V5OlwiX2hhbmRsZVNpbmdsZURhdGFQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsdD10aGlzLncuY29uZmlnO2lmKGUubWluWD09PWUubWF4WCl7dmFyIGk9bmV3IEIodGhpcy5jdHgpO2lmKHQueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIil7dmFyIGE9aS5nZXREYXRlKGUubWluWCk7dC54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/YS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTIpOmEuc2V0RGF0ZShhLmdldERhdGUoKS0yKSxlLm1pblg9bmV3IERhdGUoYSkuZ2V0VGltZSgpO3ZhciBzPWkuZ2V0RGF0ZShlLm1heFgpO3QueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP3Muc2V0VVRDRGF0ZShzLmdldFVUQ0RhdGUoKSsyKTpzLnNldERhdGUocy5nZXREYXRlKCkrMiksZS5tYXhYPW5ldyBEYXRlKHMpLmdldFRpbWUoKX1lbHNlKHQueGF4aXMudHlwZT09PVwibnVtZXJpY1wifHx0LnhheGlzLnR5cGU9PT1cImNhdGVnb3J5XCImJiFlLm5vTGFiZWxzUHJvdmlkZWQpJiYoZS5taW5YPWUubWluWC0yLGUuaW5pdGlhbE1pblg9ZS5taW5YLGUubWF4WD1lLm1heFgrMixlLmluaXRpYWxNYXhYPWUubWF4WCl9fX0se2tleTpcIl9nZXRNaW5YRGlmZlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHM7ZS5pc1hOdW1lcmljJiZlLnNlcmllc1guZm9yRWFjaChmdW5jdGlvbih0LGkpe3QubGVuZ3RoPT09MSYmdC5wdXNoKGUuc2VyaWVzWFtlLm1heFZhbHNJbkFycmF5SW5kZXhdW2Uuc2VyaWVzWFtlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xXSk7dmFyIGE9dC5zbGljZSgpO2Euc29ydChmdW5jdGlvbihzLHIpe3JldHVybiBzLXJ9KSxhLmZvckVhY2goZnVuY3Rpb24ocyxyKXtpZihyPjApe3ZhciBuPXMtYVtyLTFdO24+MCYmKGUubWluWERpZmY9TWF0aC5taW4obixlLm1pblhEaWZmKSl9fSksZS5kYXRhUG9pbnRzIT09MSYmZS5taW5YRGlmZiE9PU51bWJlci5NQVhfVkFMVUV8fChlLm1pblhEaWZmPS41KX0pfX0se2tleTpcIl9zZXRTdGFja2VkTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53Lmdsb2JhbHM7aWYodC5zZXJpZXMubGVuZ3RoKXt2YXIgaT10LnNlcmllc0dyb3VwcztpLmxlbmd0aHx8KGk9W3RoaXMudy5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gci5uYW1lfSldKTt2YXIgYT17fSxzPXt9O2kuZm9yRWFjaChmdW5jdGlvbihyKXthW3JdPVtdLHNbcl09W10sZS53LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIHIuaW5kZXhPZihuLm5hbWUpPi0xP286bnVsbH0pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbiE9PW51bGx9KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Zvcih2YXIgbz0wO288dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7bysrKXt2YXIgaCxjO2Fbcl1bb109PT12b2lkIDAmJihhW3JdW29dPTAsc1tyXVtvXT0wKSwoZS53LmNvbmZpZy5jaGFydC5zdGFja2VkJiYhdC5jb21ib0NoYXJ0c3x8ZS53LmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0LmNvbWJvQ2hhcnRzJiYoIWUudy5jb25maWcuY2hhcnQuc3RhY2tPbmx5QmFyfHwoKGg9ZS53LmNvbmZpZy5zZXJpZXMpPT09bnVsbHx8aD09PXZvaWQgMHx8KGM9aFtuXSk9PT1udWxsfHxjPT09dm9pZCAwP3ZvaWQgMDpjLnR5cGUpPT09XCJiYXJcIikpJiZ0LnNlcmllc1tuXVtvXSE9PW51bGwmJlAuaXNOdW1iZXIodC5zZXJpZXNbbl1bb10pJiYodC5zZXJpZXNbbl1bb10+MD9hW3JdW29dKz1wYXJzZUZsb2F0KHQuc2VyaWVzW25dW29dKSsxZS00OnNbcl1bb10rPXBhcnNlRmxvYXQodC5zZXJpZXNbbl1bb10pKX19KX0pLE9iamVjdC5lbnRyaWVzKGEpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49RWUociwxKVswXTthW25dLmZvckVhY2goZnVuY3Rpb24obyxoKXt0Lm1heFk9TWF0aC5tYXgodC5tYXhZLGFbbl1baF0pLHQubWluWT1NYXRoLm1pbih0Lm1pblksc1tuXVtoXSl9KX0pfX19XSkseX0oKSxHZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLmVsZ3JpZD10LHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMueGF4aXNGb250U2l6ZT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy5heGlzRm9udEZhbWlseT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1pLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9aS5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCImJmkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueEF4aXNvZmZYPTAsaS5jb25maWcueGF4aXMucG9zaXRpb249PT1cImJvdHRvbVwiJiYodGhpcy54QXhpc29mZlg9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5heGVzVXRpbHM9bmV3IGJlKGUpfXJldHVybiBZKHksW3trZXk6XCJkcmF3WWF4aXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpLHM9aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLnN0eWxlLHI9cy5mb250U2l6ZSxuPXMuZm9udEZhbWlseSxvPXMuZm9udFdlaWdodCxoPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wiLHJlbDplLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2VdK1wiLCAwKVwifSk7aWYodGhpcy5heGVzVXRpbHMuaXNZQXhpc0hpZGRlbihlKSlyZXR1cm4gaDt2YXIgYz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wifSk7aC5hZGQoYyk7dmFyIGQ9aS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ucmVzdWx0Lmxlbmd0aC0xLGc9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZCxwPWkuZ2xvYmFscy50cmFuc2xhdGVZLGY9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbZV0sYj1pLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQuc2xpY2UoKTtiPXRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHMoZSxiKTt2YXIgbT1cIlwiO2lmKGkuY29uZmlnLnlheGlzW2VdLmxhYmVscy5zaG93KWZvcih2YXIgdz1mdW5jdGlvbihDKXt2YXIgTD1iW0NdO0w9ZihMLEMsaSk7dmFyIEk9aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLnBhZGRpbmc7aS5jb25maWcueWF4aXNbZV0ub3Bwb3NpdGUmJmkuY29uZmlnLnlheGlzLmxlbmd0aCE9PTAmJihJKj0tMSk7dmFyIHo9XCJlbmRcIjtpLmNvbmZpZy55YXhpc1tlXS5vcHBvc2l0ZSYmKHo9XCJzdGFydFwiKSxpLmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuYWxpZ249PT1cImxlZnRcIj96PVwic3RhcnRcIjppLmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuYWxpZ249PT1cImNlbnRlclwiP3o9XCJtaWRkbGVcIjppLmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuYWxpZ249PT1cInJpZ2h0XCImJih6PVwiZW5kXCIpO3ZhciBUPXQuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHMuY29sb3JzLGUpLEU9aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLm9mZnNldFk7aS5jb25maWcuY2hhcnQudHlwZT09PVwiaGVhdG1hcFwiJiYoRS09KGkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTEpLzIpO3ZhciBSPWEuZHJhd1RleHQoe3g6SSx5OnArZC8xMCtFKzEsdGV4dDpMLHRleHRBbmNob3I6eixmb250U2l6ZTpyLGZvbnRGYW1pbHk6bixmb250V2VpZ2h0Om8sbWF4V2lkdGg6aS5jb25maWcueWF4aXNbZV0ubGFiZWxzLm1heFdpZHRoLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KFQpP1RbQ106VCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrcy5jc3NDbGFzc30pO0M9PT1kJiYobT1SKSxjLmFkZChSKTt2YXIgTz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYoTy50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KEwpP0wuam9pbihcIiBcIik6TCxSLm5vZGUuYXBwZW5kQ2hpbGQoTyksaS5jb25maWcueWF4aXNbZV0ubGFiZWxzLnJvdGF0ZSE9PTApe3ZhciBEPWEucm90YXRlQXJvdW5kQ2VudGVyKG0ubm9kZSksVz1hLnJvdGF0ZUFyb3VuZENlbnRlcihSLm5vZGUpO1Iubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoaS5jb25maWcueWF4aXNbZV0ubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KEQueCxcIiBcIikuY29uY2F0KFcueSxcIilcIikpfXArPWd9LEE9ZDtBPj0wO0EtLSl3KEEpO2lmKGkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnRleHQhPT12b2lkIDApe3ZhciBsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZVwifSksdT0wO2kuY29uZmlnLnlheGlzW2VdLm9wcG9zaXRlJiYodT1pLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2VdKTt2YXIgeD1hLmRyYXdUZXh0KHt4OnUseTppLmdsb2JhbHMuZ3JpZEhlaWdodC8yK2kuZ2xvYmFscy50cmFuc2xhdGVZK2kuY29uZmlnLnlheGlzW2VdLnRpdGxlLm9mZnNldFksdGV4dDppLmNvbmZpZy55YXhpc1tlXS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJlbmRcIixmb3JlQ29sb3I6aS5jb25maWcueWF4aXNbZV0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6aS5jb25maWcueWF4aXNbZV0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDppLmNvbmZpZy55YXhpc1tlXS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6aS5jb25maWcueWF4aXNbZV0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitpLmNvbmZpZy55YXhpc1tlXS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2wuYWRkKHgpLGguYWRkKGwpfXZhciB2PWkuY29uZmlnLnlheGlzW2VdLmF4aXNCb3JkZXIsaz0zMSt2Lm9mZnNldFg7aWYoaS5jb25maWcueWF4aXNbZV0ub3Bwb3NpdGUmJihrPS0zMS12Lm9mZnNldFgpLHYuc2hvdyl7dmFyIFM9YS5kcmF3TGluZShrLGkuZ2xvYmFscy50cmFuc2xhdGVZK3Yub2Zmc2V0WS0yLGssaS5nbG9iYWxzLmdyaWRIZWlnaHQraS5nbG9iYWxzLnRyYW5zbGF0ZVkrdi5vZmZzZXRZKzIsdi5jb2xvciwwLHYud2lkdGgpO2guYWRkKFMpfXJldHVybiBpLmNvbmZpZy55YXhpc1tlXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoayxkLHYsaS5jb25maWcueWF4aXNbZV0uYXhpc1RpY2tzLGUsZyxoKSxofX0se2tleTpcImRyYXdZYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IE0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzIGFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWRcIn0pLHM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTthLmFkZChzKTt2YXIgcj10Lmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQubGVuZ3RoLTEsbj10Lmdsb2JhbHMuZ3JpZFdpZHRoL3IrLjEsbz1uK3QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYLGg9dC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixjPXQuZ2xvYmFscy55QXhpc1NjYWxlW2VdLnJlc3VsdC5zbGljZSgpLGQ9dC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscztkLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1kLnNsaWNlKCkscj0oYz1kLnNsaWNlKCkpLmxlbmd0aCksYz10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKGUsYyk7dmFyIGc9ZC5sZW5ndGg7aWYodC5jb25maWcueGF4aXMubGFiZWxzLnNob3cpZm9yKHZhciBwPWc/MDpyO2c/cDxnOnA+PTA7Zz9wKys6cC0tKXt2YXIgZj1jW3BdO2Y9aChmLHAsdCk7dmFyIGI9dC5nbG9iYWxzLmdyaWRXaWR0aCt0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbC0oby1uK3QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYKTtpZihkLmxlbmd0aCl7dmFyIG09dGhpcy5heGVzVXRpbHMuZ2V0TGFiZWwoYyxkLGIscCx0aGlzLmRyYXduTGFiZWxzLHRoaXMueGF4aXNGb250U2l6ZSk7Yj1tLngsZj1tLnRleHQsdGhpcy5kcmF3bkxhYmVscy5wdXNoKG0udGV4dCkscD09PTAmJnQuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsJiYoZj1cIlwiKSxwPT09Yy5sZW5ndGgtMSYmdC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKGY9XCJcIil9dmFyIHc9aS5kcmF3VGV4dCh7eDpiLHk6dGhpcy54QXhpc29mZlgrdC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAtKHQuY29uZmlnLnhheGlzLnBvc2l0aW9uPT09XCJ0b3BcIj90Lmdsb2JhbHMueEF4aXNIZWlnaHQrdC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC0yOjApLHRleHQ6Zix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkodGhpcy54YXhpc0ZvcmVDb2xvcnMpP3RoaXMueGF4aXNGb3JlQ29sb3JzW2VdOnRoaXMueGF4aXNGb3JlQ29sb3JzLGZvbnRTaXplOnRoaXMueGF4aXNGb250U2l6ZSxmb250RmFtaWx5OnRoaXMueGF4aXNGb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiK3QuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO3MuYWRkKHcpLHcudHNwYW4oZik7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO0EudGV4dENvbnRlbnQ9Zix3Lm5vZGUuYXBwZW5kQ2hpbGQoQSksbys9bn1yZXR1cm4gdGhpcy5pbnZlcnNlZFlBeGlzVGl0bGVUZXh0KGEpLHRoaXMuaW52ZXJzZWRZQXhpc0JvcmRlcihhKSxhfX0se2tleTpcImludmVyc2VkWUF4aXNCb3JkZXJcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1uZXcgTSh0aGlzLmN0eCksYT10LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKGEuc2hvdyl7dmFyIHM9MDt0LmNvbmZpZy5jaGFydC50eXBlPT09XCJiYXJcIiYmdC5nbG9iYWxzLmlzWE51bWVyaWMmJihzLT0xNSk7dmFyIHI9aS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzK2Eub2Zmc2V0WCx0aGlzLnhBeGlzb2ZmWCx0Lmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMueEF4aXNvZmZYLGEuY29sb3IsMCxhLmhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJnQuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZChyKTplLmFkZChyKX19fSx7a2V5OlwiaW52ZXJzZWRZQXhpc1RpdGxlVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KTtpZih0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0IT09dm9pZCAwKXt2YXIgYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUgYXBleGNoYXJ0cy15YXhpcy10aXRsZS1pbnZlcnNlZFwifSkscz1pLmRyYXdUZXh0KHt4OnQuZ2xvYmFscy5ncmlkV2lkdGgvMit0LmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy54QXhpc29mZlgrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpK3BhcnNlRmxvYXQodC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkrMjAsdGV4dDp0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIit0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKHMpLGUuYWRkKGEpfX19LHtrZXk6XCJ5QXhpc1RpdGxlUm90YXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1uZXcgTSh0aGlzLmN0eCkscz17d2lkdGg6MCxoZWlnaHQ6MH0scj17d2lkdGg6MCxoZWlnaHQ6MH0sbj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiIC5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGUsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKTtuIT09bnVsbCYmKHM9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGUsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10aXRsZSB0ZXh0XCIpKTtpZihvIT09bnVsbCYmKHI9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbyE9PW51bGwpe3ZhciBoPXRoaXMueFBhZGRpbmdGb3JZQXhpc1RpdGxlKGUscyxyLHQpO28uc2V0QXR0cmlidXRlKFwieFwiLGgueFBvcy0odD8xMDowKSl9aWYobyE9PW51bGwpe3ZhciBjPWEucm90YXRlQXJvdW5kQ2VudGVyKG8pO28uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHQ/LTEqaS5jb25maWcueWF4aXNbZV0udGl0bGUucm90YXRlOmkuY29uZmlnLnlheGlzW2VdLnRpdGxlLnJvdGF0ZSxcIiBcIikuY29uY2F0KGMueCxcIiBcIikuY29uY2F0KGMueSxcIilcIikpfX19LHtrZXk6XCJ4UGFkZGluZ0ZvcllBeGlzVGl0bGVcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz10aGlzLncscj0wLG49MCxvPTEwO3JldHVybiBzLmNvbmZpZy55YXhpc1tlXS50aXRsZS50ZXh0PT09dm9pZCAwfHxlPDA/e3hQb3M6bixwYWRkOjB9OihhPyhuPXQud2lkdGgrcy5jb25maWcueWF4aXNbZV0udGl0bGUub2Zmc2V0WCtpLndpZHRoLzIrby8yLChyKz0xKT09PTAmJihuLT1vLzIpKToobj0tMSp0LndpZHRoK3MuY29uZmlnLnlheGlzW2VdLnRpdGxlLm9mZnNldFgrby8yK2kud2lkdGgvMixzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobz0yNSxuPS0xKnQud2lkdGgtcy5jb25maWcueWF4aXNbZV0udGl0bGUub2Zmc2V0WC1vKSkse3hQb3M6bixwYWRkOm99KX19LHtrZXk6XCJzZXRZQXhpc1hQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9MCxzPTAscj0xOCxuPTE7aS5jb25maWcueWF4aXMubGVuZ3RoPjEmJih0aGlzLm11bHRpcGxlWXM9ITApLGkuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihvLGgpe3ZhciBjPWkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihoKT4tMXx8IW8uc2hvd3x8by5mbG9hdGluZ3x8ZVtoXS53aWR0aD09PTAsZD1lW2hdLndpZHRoK3RbaF0ud2lkdGg7by5vcHBvc2l0ZT9pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgtMSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2hdPXMtby5sYWJlbHMub2Zmc2V0WCk6KHM9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWCtuLGN8fChuPW4rZCsyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtoXT1zLW8ubGFiZWxzLm9mZnNldFgrMjApOihhPWkuZ2xvYmFscy50cmFuc2xhdGVYLXIsY3x8KHI9citkKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2hdPWErby5sYWJlbHMub2Zmc2V0WCl9KX19LHtrZXk6XCJzZXRZQXhpc1RleHRBbGlnbm1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15YXhpc1wiKTsodD1QLmxpc3RUb0FycmF5KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKGksYSl7dmFyIHM9ZS5jb25maWcueWF4aXNbYV07aWYocyYmIXMuZmxvYXRpbmcmJnMubGFiZWxzLmFsaWduIT09dm9pZCAwKXt2YXIgcj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoYSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpLG49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGEsXCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbFwiKSk7bj1QLmxpc3RUb0FycmF5KG4pO3ZhciBvPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5sYWJlbHMuYWxpZ249PT1cImxlZnRcIj8obi5mb3JFYWNoKGZ1bmN0aW9uKGgsYyl7aC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwic3RhcnRcIil9KSxzLm9wcG9zaXRlfHxyLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKC1cIi5jb25jYXQoby53aWR0aCxcIiwgMClcIikpKTpzLmxhYmVscy5hbGlnbj09PVwiY2VudGVyXCI/KG4uZm9yRWFjaChmdW5jdGlvbihoLGMpe2guc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcIm1pZGRsZVwiKX0pLHIuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgvMioocy5vcHBvc2l0ZT8xOi0xKSxcIiwgMClcIikpKTpzLmxhYmVscy5hbGlnbj09PVwicmlnaHRcIiYmKG4uZm9yRWFjaChmdW5jdGlvbihoLGMpe2guc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKX0pLHMub3Bwb3NpdGUmJnIuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSl9fSl9fV0pLHl9KCksbXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5kb2N1bWVudEV2ZW50PVAuYmluZCh0aGlzLmRvY3VtZW50RXZlbnQsdGhpcyl9cmV0dXJuIFkoeSxbe2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KGUpP2kuZ2xvYmFscy5ldmVudHNbZV0ucHVzaCh0KTppLmdsb2JhbHMuZXZlbnRzW2VdPVt0XX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGE9aS5nbG9iYWxzLmV2ZW50c1tlXS5pbmRleE9mKHQpO2EhPT0tMSYmaS5nbG9iYWxzLmV2ZW50c1tlXS5zcGxpY2UoYSwxKX19fSx7a2V5OlwiZmlyZUV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eShlKSl7dCYmdC5sZW5ndGh8fCh0PVtdKTtmb3IodmFyIGE9aS5nbG9iYWxzLmV2ZW50c1tlXSxzPWEubGVuZ3RoLHI9MDtyPHM7cisrKWFbcl0uYXBwbHkobnVsbCx0KX19fSx7a2V5Olwic2V0dXBFdmVudEhhbmRsZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9dGhpcy5jdHgsYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKHQuZ2xvYmFscy5jaGFydENsYXNzKTt0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaChmdW5jdGlvbihzKXthLmFkZEV2ZW50TGlzdGVuZXIocyxmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuYXNzaWduKHt9LHQse3Nlcmllc0luZGV4OnQuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OnQuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4fSk7ci50eXBlPT09XCJtb3VzZW1vdmVcInx8ci50eXBlPT09XCJ0b3VjaG1vdmVcIj90eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTW92ZT09XCJmdW5jdGlvblwiJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlKHIsaSxuKTpyLnR5cGU9PT1cIm1vdXNlbGVhdmVcInx8ci50eXBlPT09XCJ0b3VjaGxlYXZlXCI/dHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlPT1cImZ1bmN0aW9uXCImJnQuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlKHIsaSxuKTooci50eXBlPT09XCJtb3VzZXVwXCImJnIud2hpY2g9PT0xfHxyLnR5cGU9PT1cInRvdWNoZW5kXCIpJiYodHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljaz09XCJmdW5jdGlvblwiJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2socixpLG4pLGkuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJjbGlja1wiLFtyLGksbl0pKX0se2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSksdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocyl7dC5nbG9iYWxzLmRvbS5iYXNlRWwuYWRkRXZlbnRMaXN0ZW5lcihzLGUuZG9jdW1lbnRFdmVudCx7cGFzc2l2ZTohMH0pfSksdGhpcy5jdHguY29yZS5zZXR1cEJydXNoSGFuZGxlcigpfX0se2tleTpcImRvY3VtZW50RXZlbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT1lLnRhcmdldC5jbGFzc05hbWU7aWYoZS50eXBlPT09XCJjbGlja1wiKXt2YXIgYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWVudVwiKTthJiZhLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpJiZpIT09XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwiJiZhLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX10Lmdsb2JhbHMuY2xpZW50WD1lLnR5cGU9PT1cInRvdWNobW92ZVwiP2UudG91Y2hlc1swXS5jbGllbnRYOmUuY2xpZW50WCx0Lmdsb2JhbHMuY2xpZW50WT1lLnR5cGU9PT1cInRvdWNobW92ZVwiP2UudG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WX19XSkseX0oKSx2dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5Olwic2V0Q3VycmVudExvY2FsZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlczt3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcy5sZW5ndGg+MCYmKHQ9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzLmNvbmNhdCh3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzKSk7dmFyIGk9dC5maWx0ZXIoZnVuY3Rpb24ocyl7cmV0dXJuIHMubmFtZT09PWV9KVswXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBsb2NhbGUgbmFtZSBwcm92aWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB5b3Ugc2V0IHRoZSBjb3JyZWN0IGxvY2FsZSBuYW1lIGluIG9wdGlvbnNcIik7dmFyIGE9UC5leHRlbmQoSCxpKTt0aGlzLncuZ2xvYmFscy5sb2NhbGU9YS5vcHRpb25zfX1dKSx5fSgpLHl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJkcmF3QXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGksYSxzPXRoaXMscj10aGlzLncuZ2xvYmFscyxuPXRoaXMudy5jb25maWcsbz1uZXcgemUodGhpcy5jdHgsdCksaD1uZXcgR2UodGhpcy5jdHgsdCk7ci5heGlzQ2hhcnRzJiZlIT09XCJyYWRhclwiJiYoci5pc0Jhckhvcml6b250YWw/KGE9aC5kcmF3WWF4aXNJbnZlcnNlZCgwKSxpPW8uZHJhd1hheGlzSW52ZXJzZWQoMCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChhKSk6KGk9by5kcmF3WGF4aXMoKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksbi55YXhpcy5tYXAoZnVuY3Rpb24oYyxkKXtpZihyLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGQpPT09LTEmJihhPWguZHJhd1lheGlzKGQpLHIuZG9tLlBhcGVyLmFkZChhKSxzLncuY29uZmlnLmdyaWQucG9zaXRpb249PT1cImJhY2tcIikpe3ZhciBnPXIuZG9tLlBhcGVyLmNoaWxkcmVuKClbMV07Zy5yZW1vdmUoKSxyLmRvbS5QYXBlci5hZGQoZyl9fSkpKX19XSkseX0oKSxWZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1hDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT1uZXcgJCh0aGlzLmN0eCksYT1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuZ3JhZGllbnQscz1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmRyb3BTaGFkb3cscj1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwudHlwZSxuPWEuY29sb3JGcm9tLG89YS5jb2xvclRvLGg9YS5vcGFjaXR5RnJvbSxjPWEub3BhY2l0eVRvLGQ9YS5zdG9wcyxnPXMuZW5hYmxlZCxwPXMubGVmdCxmPXMudG9wLGI9cy5ibHVyLG09cy5jb2xvcix3PXMub3BhY2l0eSxBPWUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5jb2xvcjtpZihlLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnNob3cpe3I9PT1cImdyYWRpZW50XCImJihBPXQuZHJhd0dyYWRpZW50KFwidmVydGljYWxcIixuLG8saCxjLG51bGwsZCxudWxsKSk7dmFyIGw9dC5kcmF3UmVjdCgpO2UuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT0xJiYobD10LmRyYXdMaW5lKCkpO3ZhciB1PWUuZ2xvYmFscy5ncmlkSGVpZ2h0OyghUC5pc051bWJlcih1KXx8dTwwKSYmKHU9MCk7dmFyIHg9ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDsoIVAuaXNOdW1iZXIoeCl8fHg8MCkmJih4PTApLGwuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIseDowLHk6MCx5Mjp1LHdpZHRoOngsaGVpZ2h0OnUsZmlsbDpBLGZpbHRlcjpcIm5vbmVcIixcImZpbGwtb3BhY2l0eVwiOmUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMub3BhY2l0eSxzdHJva2U6ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjplLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjplLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5kYXNoQXJyYXl9KSxnJiYobD1pLmRyb3BTaGFkb3cobCx7bGVmdDpwLHRvcDpmLGJsdXI6Yixjb2xvcjptLG9wYWNpdHk6d30pKSxlLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChsKX19fSx7a2V5OlwiZHJhd1lDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT1lLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLGE9ZS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKGUuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIHM9dC5kcmF3TGluZSgtYSwwLGUuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7cy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIn0pLGUuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHMpfXZhciByPXQuZHJhd0xpbmUoLWEsMCxlLmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvciwwLDApO3IuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwifSksZS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocil9fV0pLHl9KCksd3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImNoZWNrUmVzcG9uc2l2ZUNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1pLmNvbmZpZztpZihhLnJlc3BvbnNpdmUubGVuZ3RoIT09MCl7dmFyIHM9YS5yZXNwb25zaXZlLnNsaWNlKCk7cy5zb3J0KGZ1bmN0aW9uKGgsYyl7cmV0dXJuIGguYnJlYWtwb2ludD5jLmJyZWFrcG9pbnQ/MTpjLmJyZWFrcG9pbnQ+aC5icmVha3BvaW50Py0xOjB9KS5yZXZlcnNlKCk7dmFyIHI9bmV3IEllKHt9KSxuPWZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGM9c1swXS5icmVha3BvaW50LGQ9d2luZG93LmlubmVyV2lkdGg+MD93aW5kb3cuaW5uZXJXaWR0aDpzY3JlZW4ud2lkdGg7aWYoZD5jKXt2YXIgZz1xLmV4dGVuZEFycmF5UHJvcHMocixpLmdsb2JhbHMuaW5pdGlhbENvbmZpZyxpKTtoPVAuZXh0ZW5kKGcsaCksaD1QLmV4dGVuZChpLmNvbmZpZyxoKSx0Lm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnMoaCl9ZWxzZSBmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKylkPHNbcF0uYnJlYWtwb2ludCYmKGg9cS5leHRlbmRBcnJheVByb3BzKHIsc1twXS5vcHRpb25zLGkpLGg9UC5leHRlbmQoaS5jb25maWcsaCksdC5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKGgpKX07aWYoZSl7dmFyIG89cS5leHRlbmRBcnJheVByb3BzKHIsZSxpKTtvPVAuZXh0ZW5kKGkuY29uZmlnLG8pLG4obz1QLmV4dGVuZChvLGUpKX1lbHNlIG4oe30pfX19LHtrZXk6XCJvdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEllKGUpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMH0pO3RoaXMudy5jb25maWc9dH19XSkseX0oKSxrdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy5jb2xvcnM9W10sdGhpcy53PWUudzt2YXIgdD10aGlzLnc7dGhpcy5pc0NvbG9yRm49ITEsdGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZD10LmNvbmZpZy5jaGFydC50eXBlPT09XCJ0cmVlbWFwXCImJnQuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAuZGlzdHJpYnV0ZWR8fHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcIiYmdC5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5kaXN0cmlidXRlZCx0aGlzLmlzQmFyRGlzdHJpYnV0ZWQ9dC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYodC5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCJ8fHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCIpfXJldHVybiBZKHksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRDb2xvcnMoKX19LHtrZXk6XCJzZXREZWZhdWx0Q29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10aGlzLncsYT1uZXcgUDtpZihpLmdsb2JhbHMuZG9tLmVsV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQoaS5jb25maWcudGhlbWUubW9kZSkpLGkuY29uZmlnLmNvbG9ycz09PXZvaWQgMHx8KChlPWkuY29uZmlnLmNvbG9ycyk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLmxlbmd0aCk9PT0wP2kuZ2xvYmFscy5jb2xvcnM9dGhpcy5wcmVkZWZpbmVkKCk6KGkuZ2xvYmFscy5jb2xvcnM9aS5jb25maWcuY29sb3JzLEFycmF5LmlzQXJyYXkoaS5jb25maWcuY29sb3JzKSYmaS5jb25maWcuY29sb3JzLmxlbmd0aD4wJiZ0eXBlb2YgaS5jb25maWcuY29sb3JzWzBdPT1cImZ1bmN0aW9uXCImJihpLmdsb2JhbHMuY29sb3JzPWkuY29uZmlnLnNlcmllcy5tYXAoZnVuY3Rpb24oZixiKXt2YXIgbT1pLmNvbmZpZy5jb2xvcnNbYl07cmV0dXJuIG18fChtPWkuY29uZmlnLmNvbG9yc1swXSksdHlwZW9mIG09PVwiZnVuY3Rpb25cIj8odC5pc0NvbG9yRm49ITAsbSh7dmFsdWU6aS5nbG9iYWxzLmF4aXNDaGFydHM/aS5nbG9iYWxzLnNlcmllc1tiXVswXT9pLmdsb2JhbHMuc2VyaWVzW2JdWzBdOjA6aS5nbG9iYWxzLnNlcmllc1tiXSxzZXJpZXNJbmRleDpiLGRhdGFQb2ludEluZGV4OmIsdzppfSkpOm19KSkpLGkuZ2xvYmFscy5zZXJpZXNDb2xvcnMubWFwKGZ1bmN0aW9uKGYsYil7ZiYmKGkuZ2xvYmFscy5jb2xvcnNbYl09Zil9KSxpLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpe3ZhciBzPVtdLHI9aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KHRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZCkmJihyPWkuZ2xvYmFscy5zZXJpZXNbMF0ubGVuZ3RoKmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKTtmb3IodmFyIG49aS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5jb2xvcixvPTEvKHIvaS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZUludGVuc2l0eSksaD1pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlVG8sYz0wLGQ9MDtkPHI7ZCsrKXt2YXIgZz12b2lkIDA7aD09PVwiZGFya1wiPyhnPWEuc2hhZGVDb2xvcigtMSpjLG4pLGMrPW8pOihnPWEuc2hhZGVDb2xvcihjLG4pLGMrPW8pLHMucHVzaChnKX1pLmdsb2JhbHMuY29sb3JzPXMuc2xpY2UoKX12YXIgcD1pLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7dGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLmNvbG9ycyksW1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goZnVuY3Rpb24oZil7aS5jb25maWdbZl0uY29sb3JzPT09dm9pZCAwP2kuZ2xvYmFsc1tmXS5jb2xvcnM9dC5pc0NvbG9yRm4/aS5jb25maWcuY29sb3JzOnA6aS5nbG9iYWxzW2ZdLmNvbG9ycz1pLmNvbmZpZ1tmXS5jb2xvcnMuc2xpY2UoKSx0LnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHNbZl0uY29sb3JzKX0pLGkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPT09dm9pZCAwP2kuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1wOmkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1pLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycyw1MCksaS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnM9PT12b2lkIDA/aS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9W2kuY29uZmlnLnRoZW1lLm1vZGU9PT1cImRhcmtcIj9cIiM0MjQyNDJcIjpcIm5vbmVcIl06aS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycywyMCksaS5jb25maWcubWFya2Vycy5jb2xvcnM9PT12b2lkIDA/aS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPXA6aS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPWkuY29uZmlnLm1hcmtlcnMuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzKX19LHtrZXk6XCJwdXNoRXh0cmFDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTpudWxsLGE9dGhpcy53LHM9dHx8YS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aWYoaT09PW51bGwmJihpPXRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZHx8YS5jb25maWcuY2hhcnQudHlwZT09PVwiaGVhdG1hcFwiJiZhLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUuaW52ZXJzZSksaSYmYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJihzPWEuZ2xvYmFscy5zZXJpZXNbYS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCphLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksZS5sZW5ndGg8cylmb3IodmFyIHI9cy1lLmxlbmd0aCxuPTA7bjxyO24rKyllLnB1c2goZVtuXSl9fSx7a2V5OlwidXBkYXRlVGhlbWVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5jaGFydD1lLmNoYXJ0fHx7fSxlLnRvb2x0aXA9ZS50b29sdGlwfHx7fTt2YXIgdD1lLnRoZW1lLm1vZGV8fFwibGlnaHRcIixpPWUudGhlbWUucGFsZXR0ZT9lLnRoZW1lLnBhbGV0dGU6dD09PVwiZGFya1wiP1wicGFsZXR0ZTRcIjpcInBhbGV0dGUxXCIsYT1lLmNoYXJ0LmZvcmVDb2xvcj9lLmNoYXJ0LmZvcmVDb2xvcjp0PT09XCJkYXJrXCI/XCIjZjZmN2Y4XCI6XCIjMzczZDNmXCI7cmV0dXJuIGUudG9vbHRpcC50aGVtZT10LGUuY2hhcnQuZm9yZUNvbG9yPWEsZS50aGVtZS5wYWxldHRlPWksZX19LHtrZXk6XCJwcmVkZWZpbmVkXCIsdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy53LmNvbmZpZy50aGVtZS5wYWxldHRlKXtjYXNlXCJwYWxldHRlMVwiOmRlZmF1bHQ6dGhpcy5jb2xvcnM9W1wiIzAwOEZGQlwiLFwiIzAwRTM5NlwiLFwiI0ZFQjAxOVwiLFwiI0ZGNDU2MFwiLFwiIzc3NUREMFwiXTticmVhaztjYXNlXCJwYWxldHRlMlwiOnRoaXMuY29sb3JzPVtcIiMzZjUxYjVcIixcIiMwM2E5ZjRcIixcIiM0Y2FmNTBcIixcIiNmOWNlMWRcIixcIiNGRjk4MDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTNcIjp0aGlzLmNvbG9ycz1bXCIjMzNiMmRmXCIsXCIjNTQ2RTdBXCIsXCIjZDQ1MjZlXCIsXCIjMTNkOGFhXCIsXCIjQTU5NzhCXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU0XCI6dGhpcy5jb2xvcnM9W1wiIzRlY2RjNFwiLFwiI2M3ZjQ2NFwiLFwiIzgxRDRGQVwiLFwiI2ZkNmE2YVwiLFwiIzU0NkU3QVwiXTticmVhaztjYXNlXCJwYWxldHRlNVwiOnRoaXMuY29sb3JzPVtcIiMyYjkwOGZcIixcIiNmOWEzYTRcIixcIiM5MGVlN2VcIixcIiNmYTQ0NDNcIixcIiM2OWQyZTdcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTZcIjp0aGlzLmNvbG9ycz1bXCIjNDQ5REQxXCIsXCIjRjg2NjI0XCIsXCIjRUEzNTQ2XCIsXCIjNjYyRTlCXCIsXCIjQzVEODZEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU3XCI6dGhpcy5jb2xvcnM9W1wiI0Q3MjYzRFwiLFwiIzFCOTk4QlwiLFwiIzJFMjk0RVwiLFwiI0Y0NjAzNlwiLFwiI0UyQzA0NFwiXTticmVhaztjYXNlXCJwYWxldHRlOFwiOnRoaXMuY29sb3JzPVtcIiM2NjJFOUJcIixcIiNGODY2MjRcIixcIiNGOUM4MEVcIixcIiNFQTM1NDZcIixcIiM0M0JDQ0RcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTlcIjp0aGlzLmNvbG9ycz1bXCIjNUM0NzQyXCIsXCIjQTU5NzhCXCIsXCIjOEQ1QjRDXCIsXCIjNUEyQTI3XCIsXCIjQzRCQkFGXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUxMFwiOnRoaXMuY29sb3JzPVtcIiNBMzAwRDZcIixcIiM3RDAyRUJcIixcIiM1NjUzRkVcIixcIiMyOTgzRkZcIixcIiMwMEIxRjJcIl19cmV0dXJuIHRoaXMuY29sb3JzfX1dKSx5fSgpLEF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwidGl0bGVcIiksdGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInN1YnRpdGxlXCIpfX0se2tleTpcImRyYXdUaXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9ZT09PVwidGl0bGVcIj90LmNvbmZpZy50aXRsZTp0LmNvbmZpZy5zdWJ0aXRsZSxhPXQuZ2xvYmFscy5zdmdXaWR0aC8yLHM9aS5vZmZzZXRZLHI9XCJtaWRkbGVcIjtpZihpLmFsaWduPT09XCJsZWZ0XCI/KGE9MTAscj1cInN0YXJ0XCIpOmkuYWxpZ249PT1cInJpZ2h0XCImJihhPXQuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLGErPWkub2Zmc2V0WCxzPXMrcGFyc2VJbnQoaS5zdHlsZS5mb250U2l6ZSwxMCkraS5tYXJnaW4vMixpLnRleHQhPT12b2lkIDApe3ZhciBuPW5ldyBNKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDphLHk6cyx0ZXh0OmkudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6aS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omkuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0Omkuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6aS5zdHlsZS5jb2xvcixvcGFjaXR5OjF9KTtuLm5vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtXCIuY29uY2F0KGUsXCItdGV4dFwiKSksdC5nbG9iYWxzLmRvbS5QYXBlci5hZGQobil9fX1dKSx5fSgpLFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0VGl0bGVTdWJ0aXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPTAsYT0wLHM9ZT09PVwidGl0bGVcIj90LmNvbmZpZy50aXRsZS5mbG9hdGluZzp0LmNvbmZpZy5zdWJ0aXRsZS5mbG9hdGluZyxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoZSxcIi10ZXh0XCIpKTtpZihyIT09bnVsbCYmIXMpe3ZhciBuPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1uLndpZHRoLGE9dC5nbG9iYWxzLmF4aXNDaGFydHM/bi5oZWlnaHQrNTpuLmhlaWdodH1yZXR1cm57d2lkdGg6aSxoZWlnaHQ6YX19fSx7a2V5OlwiZ2V0TGVnZW5kc1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PWUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwO2UuY29uZmlnLmxlZ2VuZC5oZWlnaHR8fGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwidG9wXCImJmUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwiYm90dG9tXCJ8fCh0LnN0eWxlLm1heEhlaWdodD1lLmdsb2JhbHMuc3ZnSGVpZ2h0LzIrXCJweFwiKTt2YXIgaT1PYmplY3QuYXNzaWduKHt9LFAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHQpKTtyZXR1cm4gdCE9PW51bGwmJiFlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcmJmUuY29uZmlnLmxlZ2VuZC5zaG93P3RoaXMuZEN0eC5sZ1JlY3Q9e3g6aS54LHk6aS55LGhlaWdodDppLmhlaWdodCx3aWR0aDppLmhlaWdodD09PTA/MDppLndpZHRofTp0aGlzLmRDdHgubGdSZWN0PXt4OjAseTowLGhlaWdodDowLHdpZHRoOjB9LGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwibGVmdFwiJiZlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cInJpZ2h0XCJ8fDEuNSp0aGlzLmRDdHgubGdSZWN0LndpZHRoPmUuZ2xvYmFscy5zdmdXaWR0aCYmKHRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg9ZS5nbG9iYWxzLnN2Z1dpZHRoLzEuNSksdGhpcy5kQ3R4LmxnUmVjdH19LHtrZXk6XCJnZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lO2lmKHRoaXMudy5nbG9iYWxzLmlzTXVsdGlMaW5lWCl7dmFyIGE9dC5tYXAoZnVuY3Rpb24ocixuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9yLmxlbmd0aDoxfSkscz1NYXRoLm1heC5hcHBseShNYXRoLFEoYSkpO2k9dFthLmluZGV4T2YocyldfXJldHVybiBpfX1dKSx5fSgpLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0eEF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy53LGk9dC5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2lmKHQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmaS5sZW5ndGg9PT0wJiYoaT10Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMpLHQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApe3ZhciBhPXRoaXMuZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMoKTtlPXt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH0sdC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9ZWxzZXt0aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzPXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiE9PVwibGVmdFwiJiZ0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24hPT1cInJpZ2h0XCJ8fHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZz8wOnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg7dmFyIHM9dC5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixyPVAuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoaSksbj10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIsaSk7dC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG49cj10Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKGZ1bmN0aW9uKGYsYil7cmV0dXJuIGYubGVuZ3RoPmIubGVuZ3RoP2Y6Yn0sMCkpO3ZhciBvPW5ldyBuZSh0aGlzLmRDdHguY3R4KSxoPXI7cj1vLnhMYWJlbEZvcm1hdChzLHIsaCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgQih0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6dH0pLG49by54TGFiZWxGb3JtYXQocyxuLGgse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEIodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OnR9KSwodC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZyPT09dm9pZCAwfHxTdHJpbmcocikudHJpbSgpPT09XCJcIikmJihuPXI9XCIxXCIpO3ZhciBjPW5ldyBNKHRoaXMuZEN0eC5jdHgpLGQ9Yy5nZXRUZXh0UmVjdHMocix0LmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpLGc9ZDtpZihyIT09biYmKGc9Yy5nZXRUZXh0UmVjdHMobix0LmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKSwoZT17d2lkdGg6ZC53aWR0aD49Zy53aWR0aD9kLndpZHRoOmcud2lkdGgsaGVpZ2h0OmQuaGVpZ2h0Pj1nLmhlaWdodD9kLmhlaWdodDpnLmhlaWdodH0pLndpZHRoKmkubGVuZ3RoPnQuZ2xvYmFscy5zdmdXaWR0aC10aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzLXRoaXMuZEN0eC55QXhpc1dpZHRoLXRoaXMuZEN0eC5ncmlkUGFkLmxlZnQtdGhpcy5kQ3R4LmdyaWRQYWQucmlnaHQmJnQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUhPT0wfHx0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKXtpZighdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITA7dmFyIHA9ZnVuY3Rpb24oZil7cmV0dXJuIGMuZ2V0VGV4dFJlY3RzKGYsdC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LFwicm90YXRlKFwiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpfTtkPXAociksciE9PW4mJihnPXAobikpLGUuaGVpZ2h0PShkLmhlaWdodD5nLmhlaWdodD9kLmhlaWdodDpnLmhlaWdodCkvMS41LGUud2lkdGg9ZC53aWR0aD5nLndpZHRoP2Qud2lkdGg6Zy53aWR0aH19ZWxzZSB0Lmdsb2JhbHMucm90YXRlWExhYmVscz0hMX1yZXR1cm4gdC5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fChlPXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc0dyb3VwTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMudztpZighdC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgaSxhPSgoZT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLmZvbnRTaXplKXx8dC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHM9dC5nbG9iYWxzLmdyb3Vwcy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQudGl0bGV9KSxyPVAuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIocyksbj10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIscyksbz1uZXcgTSh0aGlzLmRDdHguY3R4KSxoPW8uZ2V0VGV4dFJlY3RzKHIsYSksYz1oO3JldHVybiByIT09biYmKGM9by5nZXRUZXh0UmVjdHMobixhKSksaT17d2lkdGg6aC53aWR0aD49Yy53aWR0aD9oLndpZHRoOmMud2lkdGgsaGVpZ2h0OmguaGVpZ2h0Pj1jLmhlaWdodD9oLmhlaWdodDpjLmhlaWdodH0sdC5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fChpPXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD0wLGk9MDtpZihlLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0IT09dm9pZCAwKXt2YXIgYT1uZXcgTSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHMoZS5jb25maWcueGF4aXMudGl0bGUudGV4dCxlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7dD1hLndpZHRoLGk9YS5oZWlnaHR9cmV0dXJue3dpZHRoOnQsaGVpZ2h0Oml9fX0se2tleTpcImdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMudzt0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzPXQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKTt2YXIgaT10aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gcy52YWx1ZX0pLGE9aS5yZWR1Y2UoZnVuY3Rpb24ocyxyKXtyZXR1cm4gcz09PXZvaWQgMD8oY29uc29sZS5lcnJvcihcIllvdSBoYXZlIHBvc3NpYmx5IHN1cHBsaWVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBzdXBwbHkgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIiksMCk6cy5sZW5ndGg+ci5sZW5ndGg/czpyfSwwKTtyZXR1cm4gMS4wNSooZT1uZXcgTSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHMoYSx0LmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKS53aWR0aCppLmxlbmd0aD50Lmdsb2JhbHMuZ3JpZFdpZHRoJiZ0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlIT09MCYmKHQuZ2xvYmFscy5vdmVybGFwcGluZ1hMYWJlbHM9ITApLGV9fSx7a2V5OlwiYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscyxzPWkuY29uZmlnLHI9cy54YXhpcy50eXBlLG49ZS53aWR0aDthLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSxhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITE7dmFyIG89aS5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwsaD1mdW5jdGlvbihjLGQpe3MueWF4aXMubGVuZ3RoPjEmJmZ1bmN0aW9uKGcpe3JldHVybiBhLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihnKSE9PS0xfShkKXx8ZnVuY3Rpb24oZyl7aWYodC5kQ3R4LnRpbWVzY2FsZUxhYmVscyYmdC5kQ3R4LnRpbWVzY2FsZUxhYmVscy5sZW5ndGgpe3ZhciBwPXQuZEN0eC50aW1lc2NhbGVMYWJlbHNbMF0sZj10LmRDdHgudGltZXNjYWxlTGFiZWxzW3QuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoLTFdLnBvc2l0aW9uK24vMS43NS10LmRDdHgueUF4aXNXaWR0aFJpZ2h0LGI9cC5wb3NpdGlvbi1uLzEuNzUrdC5kQ3R4LnlBeGlzV2lkdGhMZWZ0LG09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJyaWdodFwiJiZ0LmRDdHgubGdSZWN0LndpZHRoPjA/dC5kQ3R4LmxnUmVjdC53aWR0aDowO2Y+YS5zdmdXaWR0aC1hLnRyYW5zbGF0ZVgtbSYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKSxiPC0oZy5zaG93JiYhZy5mbG9hdGluZ3x8cy5jaGFydC50eXBlIT09XCJiYXJcIiYmcy5jaGFydC50eXBlIT09XCJjYW5kbGVzdGlja1wiJiZzLmNoYXJ0LnR5cGUhPT1cInJhbmdlQmFyXCImJnMuY2hhcnQudHlwZSE9PVwiYm94UGxvdFwiPzEwOm4vMS43NSkmJihhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITApfWVsc2Ugcj09PVwiZGF0ZXRpbWVcIj90LmRDdHguZ3JpZFBhZC5yaWdodDxuJiYhYS5yb3RhdGVYTGFiZWxzJiYoYS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApOnIhPT1cImRhdGV0aW1lXCImJnQuZEN0eC5ncmlkUGFkLnJpZ2h0PG4vMi10LmRDdHgueUF4aXNXaWR0aFJpZ2h0JiYhYS5yb3RhdGVYTGFiZWxzJiYhaS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJihpLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50IT09XCJiZXR3ZWVuXCJ8fGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpJiYodC5kQ3R4LnhQYWRSaWdodD1uLzIrMSl9KGMpfTtzLnlheGlzLmZvckVhY2goZnVuY3Rpb24oYyxkKXtvPyh0LmRDdHguZ3JpZFBhZC5sZWZ0PG4mJih0LmRDdHgueFBhZExlZnQ9bi8yKzEpLHQuZEN0eC54UGFkUmlnaHQ9bi8yKzEpOmgoYyxkKX0pfX1dKSx5fSgpLEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0eUF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT1bXSxhPTEwLHM9bmV3IGJlKHRoaXMuZEN0eC5jdHgpO3JldHVybiB0LmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24ocixuKXt2YXIgbz17c2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDotMSx3OnR9LGg9dC5nbG9iYWxzLnlBeGlzU2NhbGVbbl0sYz0wO2lmKCFzLmlzWUF4aXNIaWRkZW4obikmJnIubGFiZWxzLnNob3cmJnIubGFiZWxzLm1pbldpZHRoIT09dm9pZCAwJiYoYz1yLmxhYmVscy5taW5XaWR0aCksIXMuaXNZQXhpc0hpZGRlbihuKSYmci5sYWJlbHMuc2hvdyYmaC5yZXN1bHQubGVuZ3RoKXt2YXIgZD10Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1tuXSxnPWgubmljZU1pbj09PU51bWJlci5NSU5fVkFMVUU/MDpoLm5pY2VNaW4scD1oLnJlc3VsdC5yZWR1Y2UoZnVuY3Rpb24odSx4KXt2YXIgdixrO3JldHVybigodj1TdHJpbmcoZCh1LG8pKSk9PT1udWxsfHx2PT09dm9pZCAwP3ZvaWQgMDp2Lmxlbmd0aCk+KChrPVN0cmluZyhkKHgsbykpKT09PW51bGx8fGs9PT12b2lkIDA/dm9pZCAwOmsubGVuZ3RoKT91Onh9LGcpLGY9cD1kKHAsbyk7aWYocCE9PXZvaWQgMCYmcC5sZW5ndGghPT0wfHwocD1oLm5pY2VNYXgpLHQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2E9MDt2YXIgYj10Lmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7cD1QLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGIpLHA9ZChwLHtzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4Oi0xLHc6dH0pLGY9ZS5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihwLGIpfXZhciBtPW5ldyBNKGUuZEN0eC5jdHgpLHc9XCJyb3RhdGUoXCIuY29uY2F0KHIubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLEE9bS5nZXRUZXh0UmVjdHMocCxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHcsITEpLGw9QTtwIT09ZiYmKGw9bS5nZXRUZXh0UmVjdHMoZixyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHcsITEpKSxpLnB1c2goe3dpZHRoOihjPmwud2lkdGh8fGM+QS53aWR0aD9jOmwud2lkdGg+QS53aWR0aD9sLndpZHRoOkEud2lkdGgpK2EsaGVpZ2h0OmwuaGVpZ2h0PkEuaGVpZ2h0P2wuaGVpZ2h0OkEuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pLGl9fSx7a2V5OlwiZ2V0eUF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPVtdO3JldHVybiB0LmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24oYSxzKXtpZihhLnNob3cmJmEudGl0bGUudGV4dCE9PXZvaWQgMCl7dmFyIHI9bmV3IE0oZS5kQ3R4LmN0eCksbj1cInJvdGF0ZShcIi5jb25jYXQoYS50aXRsZS5yb3RhdGUsXCIgMCAwKVwiKSxvPXIuZ2V0VGV4dFJlY3RzKGEudGl0bGUudGV4dCxhLnRpdGxlLnN0eWxlLmZvbnRTaXplLGEudGl0bGUuc3R5bGUuZm9udEZhbWlseSxuLCExKTtpLnB1c2goe3dpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pLGl9fSx7a2V5OlwiZ2V0VG90YWxZQXhpc1dpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD0wLGk9MCxhPTAscz1lLmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg+MT8xMDowLHI9bmV3IGJlKHRoaXMuZEN0eC5jdHgpLG49ZnVuY3Rpb24obyxoKXt2YXIgYz1lLmNvbmZpZy55YXhpc1toXS5mbG9hdGluZyxkPTA7by53aWR0aD4wJiYhYz8oZD1vLndpZHRoK3MsZnVuY3Rpb24oZyl7cmV0dXJuIGUuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihnKT4tMX0oaCkmJihkPWQtby53aWR0aC1zKSk6ZD1jfHxyLmlzWUF4aXNIaWRkZW4oaCk/MDo1LGUuY29uZmlnLnlheGlzW2hdLm9wcG9zaXRlP2ErPWQ6aSs9ZCx0Kz1kfTtyZXR1cm4gZS5nbG9iYWxzLnlMYWJlbHNDb29yZHMubWFwKGZ1bmN0aW9uKG8saCl7bihvLGgpfSksZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5tYXAoZnVuY3Rpb24obyxoKXtuKG8saCl9KSxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYhZS5jb25maWcueWF4aXNbMF0uZmxvYXRpbmcmJih0PWUuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK2UuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTUpLHRoaXMuZEN0eC55QXhpc1dpZHRoTGVmdD1pLHRoaXMuZEN0eC55QXhpc1dpZHRoUmlnaHQ9YSx0fX1dKSx5fSgpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5ub0RhdGF8fHQuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIDA7dmFyIGk9ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PT1cImJhclwifHxjPT09XCJyYW5nZUJhclwifHxjPT09XCJjYW5kbGVzdGlja1wifHxjPT09XCJib3hQbG90XCJ9LGE9dC5jb25maWcuY2hhcnQudHlwZSxzPTAscj1pKGEpP3QuY29uZmlnLnNlcmllcy5sZW5ndGg6MTtpZih0Lmdsb2JhbHMuY29tYm9CYXJDb3VudD4wJiYocj10Lmdsb2JhbHMuY29tYm9CYXJDb3VudCksdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2koYy50eXBlKSYmKHItPTEpfSksdC5jb25maWcuY2hhcnQuc3RhY2tlZCYmKHI9MSksKGkoYSl8fHQuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZ0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnI+MCl7dmFyIG4sbyxoPU1hdGguYWJzKHQuZ2xvYmFscy5pbml0aWFsTWF4WC10Lmdsb2JhbHMuaW5pdGlhbE1pblgpO2g8PTMmJihoPXQuZ2xvYmFscy5kYXRhUG9pbnRzKSxuPWgvZSx0Lmdsb2JhbHMubWluWERpZmYmJnQuZ2xvYmFscy5taW5YRGlmZi9uPjAmJihvPXQuZ2xvYmFscy5taW5YRGlmZi9uKSxvPmUvMiYmKG8vPTIpLChzPW8vcipwYXJzZUludCh0LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCk8MSYmKHM9MSkscz1zLyhyPjE/MToxLjUpKzUsdC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzPXN9cmV0dXJuIHN9fSx7a2V5OlwiZ3JpZFBhZEZvcnRpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10Lmdsb2JhbHMsYT10aGlzLmRDdHguaXNTcGFya2xpbmV8fCF0Lmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjEwO1tcInRpdGxlXCIsXCJzdWJ0aXRsZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3QuY29uZmlnW25dLnRleHQhPT12b2lkIDA/YSs9dC5jb25maWdbbl0ubWFyZ2luOmErPWUuZEN0eC5pc1NwYXJrbGluZXx8IXQuZ2xvYmFscy5heGlzQ2hhcnRzPzA6NX0pLCF0LmNvbmZpZy5sZWdlbmQuc2hvd3x8dC5jb25maWcubGVnZW5kLnBvc2l0aW9uIT09XCJib3R0b21cInx8dC5jb25maWcubGVnZW5kLmZsb2F0aW5nfHx0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGErPTEwKTt2YXIgcz10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscj10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIik7aS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC1zLmhlaWdodC1yLmhlaWdodC1hLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrcy5oZWlnaHQrci5oZWlnaHQrYX19LHtrZXk6XCJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3IGJlKHRoaXMuZEN0eC5jdHgpO2kuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihzLHIpe2kuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihyKSE9PS0xfHxzLmZsb2F0aW5nfHxhLmlzWUF4aXNIaWRkZW4ocil8fChzLm9wcG9zaXRlJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtKHRbcl0ud2lkdGgrZVtyXS53aWR0aCktcGFyc2VJbnQoaS5jb25maWcueWF4aXNbcl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjItMTIpLGkuZ2xvYmFscy50cmFuc2xhdGVYPDImJihpLmdsb2JhbHMudHJhbnNsYXRlWD0yKSl9KX19XSkseX0oKSxSZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxnUmVjdD17fSx0aGlzLnlBeGlzV2lkdGg9MCx0aGlzLnlBeGlzV2lkdGhMZWZ0PTAsdGhpcy55QXhpc1dpZHRoUmlnaHQ9MCx0aGlzLnhBeGlzSGVpZ2h0PTAsdGhpcy5pc1NwYXJrbGluZT10aGlzLncuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkLHRoaXMuZGltSGVscGVycz1uZXcgU3QodGhpcyksdGhpcy5kaW1ZQXhpcz1uZXcgTHQodGhpcyksdGhpcy5kaW1YQXhpcz1uZXcgQ3QodGhpcyksdGhpcy5kaW1HcmlkPW5ldyBQdCh0aGlzKSx0aGlzLmxnV2lkdGhGb3JTaWRlTGVnZW5kcz0wLHRoaXMuZ3JpZFBhZD10aGlzLncuY29uZmlnLmdyaWQucGFkZGluZyx0aGlzLnhQYWRSaWdodD0wLHRoaXMueFBhZExlZnQ9MH1yZXR1cm4gWSh5LFt7a2V5OlwicGxvdENvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXQuZ2xvYmFsczt0aGlzLmxnUmVjdD10aGlzLmRpbUhlbHBlcnMuZ2V0TGVnZW5kc1JlY3QoKSx0aGlzLmlzU3BhcmtsaW5lJiYoKHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoPjB8fHQuY29uZmlnLm1hcmtlcnMuc2l6ZT4wKSYmT2JqZWN0LmVudHJpZXModGhpcy5ncmlkUGFkKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciByPUVlKHMsMiksbj1yWzBdLG89clsxXTtlLmdyaWRQYWRbbl09TWF0aC5tYXgobyxlLncuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplLzEuNSl9KSx0aGlzLmdyaWRQYWQudG9wPU1hdGgubWF4KHQuY29uZmlnLnN0cm9rZS53aWR0aC8yLHRoaXMuZ3JpZFBhZC50b3ApLHRoaXMuZ3JpZFBhZC5ib3R0b209TWF0aC5tYXgodC5jb25maWcuc3Ryb2tlLndpZHRoLzIsdGhpcy5ncmlkUGFkLmJvdHRvbSkpLGkuYXhpc0NoYXJ0cz90aGlzLnNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzKCk6dGhpcy5zZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0cygpLHRoaXMuZGltR3JpZC5ncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSgpLGkuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtdGhpcy5ncmlkUGFkLnRvcC10aGlzLmdyaWRQYWQuYm90dG9tLGkuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLXRoaXMuZ3JpZFBhZC5sZWZ0LXRoaXMuZ3JpZFBhZC5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0O3ZhciBhPXRoaXMuZGltR3JpZC5ncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMoaS5ncmlkV2lkdGgpO2kuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLTIqYSxpLnRyYW5zbGF0ZVg9aS50cmFuc2xhdGVYK3RoaXMuZ3JpZFBhZC5sZWZ0K3RoaXMueFBhZExlZnQrKGE+MD9hKzQ6MCksaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSt0aGlzLmdyaWRQYWQudG9wfX0se2tleTpcInNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9dC5nbG9iYWxzLGE9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc0xhYmVsc0Nvb3JkcygpLHM9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc1RpdGxlQ29vcmRzKCk7dC5nbG9iYWxzLnlMYWJlbHNDb29yZHM9W10sdC5nbG9iYWxzLnlUaXRsZUNvb3Jkcz1bXSx0LmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24ocCxmKXt0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5wdXNoKHt3aWR0aDphW2ZdLndpZHRoLGluZGV4OmZ9KSx0Lmdsb2JhbHMueVRpdGxlQ29vcmRzLnB1c2goe3dpZHRoOnNbZl0ud2lkdGgsaW5kZXg6Zn0pfSksdGhpcy55QXhpc1dpZHRoPXRoaXMuZGltWUF4aXMuZ2V0VG90YWxZQXhpc1dpZHRoKCk7dmFyIHI9dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0xhYmVsc0Nvb3JkcygpLG49dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0dyb3VwTGFiZWxzQ29vcmRzKCksbz10aGlzLmRpbVhBeGlzLmdldHhBeGlzVGl0bGVDb29yZHMoKTt0aGlzLmNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3JkcyhyLG8sbiksaS50cmFuc2xhdGVYQXhpc1k9dC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/dGhpcy54QXhpc0hlaWdodC84Oi00LGkudHJhbnNsYXRlWEF4aXNYPXQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZ0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmdC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZTw9LTQ1Py10aGlzLnhBeGlzV2lkdGgvNDowLHQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpLnJvdGF0ZVhMYWJlbHM9ITEsaS50cmFuc2xhdGVYQXhpc1k9cGFyc2VJbnQodC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjUqLTEpLGkudHJhbnNsYXRlWEF4aXNZPWkudHJhbnNsYXRlWEF4aXNZK3QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZLGkudHJhbnNsYXRlWEF4aXNYPWkudHJhbnNsYXRlWEF4aXNYK3QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO3ZhciBoPXRoaXMueUF4aXNXaWR0aCxjPXRoaXMueEF4aXNIZWlnaHQ7aS54QXhpc0xhYmVsc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0LW8uaGVpZ2h0LGkueEF4aXNHcm91cExhYmVsc0hlaWdodD1pLnhBeGlzTGFiZWxzSGVpZ2h0LXIuaGVpZ2h0LGkueEF4aXNMYWJlbHNXaWR0aD10aGlzLnhBeGlzV2lkdGgsaS54QXhpc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0O3ZhciBkPTEwOyh0LmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRhclwifHx0aGlzLmlzU3BhcmtsaW5lKSYmKGg9MCxjPWkuZ29sZGVuUGFkZGluZyksdGhpcy5pc1NwYXJrbGluZSYmKHRoaXMubGdSZWN0PXtoZWlnaHQ6MCx3aWR0aDowfSksKHRoaXMuaXNTcGFya2xpbmV8fHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInRyZWVtYXBcIikmJihoPTAsYz0wLGQ9MCksdGhpcy5pc1NwYXJrbGluZXx8dGhpcy5kaW1YQXhpcy5hZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHMocik7dmFyIGc9ZnVuY3Rpb24oKXtpLnRyYW5zbGF0ZVg9aCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtZS5sZ1JlY3QuaGVpZ2h0LWMtKGUuaXNTcGFya2xpbmV8fHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInRyZWVtYXBcIj8wOnQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjE1KSxpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLWh9O3N3aXRjaCh0LmNvbmZpZy54YXhpcy5wb3NpdGlvbj09PVwidG9wXCImJihkPWkueEF4aXNIZWlnaHQtdC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC01KSx0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOmkudHJhbnNsYXRlWT1kLGcoKTticmVhaztjYXNlXCJ0b3BcIjppLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K2QsZygpO2JyZWFrO2Nhc2VcImxlZnRcIjppLnRyYW5zbGF0ZVk9ZCxpLnRyYW5zbGF0ZVg9dGhpcy5sZ1JlY3Qud2lkdGgraCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtYy0xMixpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWg7YnJlYWs7Y2FzZVwicmlnaHRcIjppLnRyYW5zbGF0ZVk9ZCxpLnRyYW5zbGF0ZVg9aCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtYy0xMixpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWgtNTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkxlZ2VuZCBwb3NpdGlvbiBub3Qgc3VwcG9ydGVkXCIpfXRoaXMuZGltR3JpZC5zZXRHcmlkWFBvc0ZvckR1YWxZQXhpcyhzLGEpLG5ldyBHZSh0aGlzLmN0eCkuc2V0WUF4aXNYUG9zaXRpb24oYSxzKX19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9ZS5nbG9iYWxzLGk9ZS5jb25maWcsYT0wO2UuY29uZmlnLmxlZ2VuZC5zaG93JiYhZS5jb25maWcubGVnZW5kLmZsb2F0aW5nJiYoYT0yMCk7dmFyIHM9aS5jaGFydC50eXBlPT09XCJwaWVcInx8aS5jaGFydC50eXBlPT09XCJwb2xhckFyZWFcInx8aS5jaGFydC50eXBlPT09XCJkb251dFwiP1wicGllXCI6XCJyYWRpYWxCYXJcIixyPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WSxuPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WDtpZighaS5sZWdlbmQuc2hvd3x8aS5sZWdlbmQuZmxvYXRpbmcpcmV0dXJuIHQuZ3JpZEhlaWdodD10LnN2Z0hlaWdodC1pLmdyaWQucGFkZGluZy5sZWZ0K2kuZ3JpZC5wYWRkaW5nLnJpZ2h0LHQuZ3JpZFdpZHRoPXQuZ3JpZEhlaWdodCx0LnRyYW5zbGF0ZVk9cix2b2lkKHQudHJhbnNsYXRlWD1uKyh0LnN2Z1dpZHRoLXQuZ3JpZFdpZHRoKS8yKTtzd2l0Y2goaS5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOnQuZ3JpZEhlaWdodD10LnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtdC5nb2xkZW5QYWRkaW5nLHQuZ3JpZFdpZHRoPXQuc3ZnV2lkdGgsdC50cmFuc2xhdGVZPXItMTAsdC50cmFuc2xhdGVYPW4rKHQuc3ZnV2lkdGgtdC5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwidG9wXCI6dC5ncmlkSGVpZ2h0PXQuc3ZnSGVpZ2h0LXRoaXMubGdSZWN0LmhlaWdodC10LmdvbGRlblBhZGRpbmcsdC5ncmlkV2lkdGg9dC5zdmdXaWR0aCx0LnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K3IrMTAsdC50cmFuc2xhdGVYPW4rKHQuc3ZnV2lkdGgtdC5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwibGVmdFwiOnQuZ3JpZFdpZHRoPXQuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYSx0LmdyaWRIZWlnaHQ9aS5jaGFydC5oZWlnaHQhPT1cImF1dG9cIj90LnN2Z0hlaWdodDp0LmdyaWRXaWR0aCx0LnRyYW5zbGF0ZVk9cix0LnRyYW5zbGF0ZVg9bit0aGlzLmxnUmVjdC53aWR0aCthO2JyZWFrO2Nhc2VcInJpZ2h0XCI6dC5ncmlkV2lkdGg9dC5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1hLTUsdC5ncmlkSGVpZ2h0PWkuY2hhcnQuaGVpZ2h0IT09XCJhdXRvXCI/dC5zdmdIZWlnaHQ6dC5ncmlkV2lkdGgsdC50cmFuc2xhdGVZPXIsdC50cmFuc2xhdGVYPW4rMTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX19fSx7a2V5OlwiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcz8yOjEscj1pLmhlaWdodCtlLmhlaWdodCt0LmhlaWdodCxuPWEuZ2xvYmFscy5pc011bHRpTGluZVg/MS4yOmEuZ2xvYmFscy5MSU5FX0hFSUdIVF9SQVRJTyxvPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzIyOjEwLGg9YS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJmEuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwiYm90dG9tXCI/MTA6MDt0aGlzLnhBeGlzSGVpZ2h0PXIqbitzKm8raCx0aGlzLnhBeGlzV2lkdGg9ZS53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LXQuaGVpZ2h0PmEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCksYS5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApO3ZhciBjPTAsZD0wO2EuY29uZmlnLnlheGlzLmZvckVhY2goZnVuY3Rpb24oZyl7Yys9Zy5sYWJlbHMubWluV2lkdGgsZCs9Zy5sYWJlbHMubWF4V2lkdGh9KSx0aGlzLnlBeGlzV2lkdGg8YyYmKHRoaXMueUF4aXNXaWR0aD1jKSx0aGlzLnlBeGlzV2lkdGg+ZCYmKHRoaXMueUF4aXNXaWR0aD1kKX19XSkseX0oKSxJdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5sZ0N0eD1lfXJldHVybiBZKHksW3trZXk6XCJnZXRMZWdlbmRTdHlsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQsaSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTthLnNldEF0dHJpYnV0ZShcInR5cGVcIixcInRleHQvY3NzXCIpO3ZhciBzPSgoZT10aGlzLmxnQ3R4LmN0eCk9PT1udWxsfHxlPT09dm9pZCAwfHwodD1lLm9wdHMpPT09bnVsbHx8dD09PXZvaWQgMHx8KGk9dC5jaGFydCk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLm5vbmNlKXx8dGhpcy53LmNvbmZpZy5jaGFydC5ub25jZTtzJiZhLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIscyk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwXG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0ICosIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIgKiB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgfVxuXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXN7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMuYXBleGNoYXJ0cy1uby1jbGljayB7XG4gICAgICAgIGN1cnNvcjogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmQge1xuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgfWApO3JldHVybiBhLmFwcGVuZENoaWxkKHIpLGF9fSx7a2V5OlwiZ2V0TGVnZW5kQkJveFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbGVnZW5kXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9ZS53aWR0aDtyZXR1cm57Y2x3aDplLmhlaWdodCxjbHd3OnR9fX0se2tleTpcImFwcGVuZFRvRm9yZWlnbk9iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZCh0aGlzLmdldExlZ2VuZFN0eWxlcygpKX19LHtrZXk6XCJ0b2dnbGVEYXRhU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLGE9dGhpcy53O2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxhLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRpYWxCYXJcIil7YS5nbG9iYWxzLnJlc2l6ZWQ9ITA7dmFyIHM9bnVsbCxyPW51bGw7YS5nbG9iYWxzLnJpc2luZ1Nlcmllcz1bXSxhLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXVwiKSkscj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSk6KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChlKzEsXCInXVwiKSkscj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSksdD9be2NzOmEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzfSx7Y3M6YS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyxjc2k6YS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXN9XS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2kucmlzZUNvbGxhcHNlZFNlcmllcyhjLmNzLGMuY3NpLHIpfSk6dGhpcy5oaWRlU2VyaWVzKHtzZXJpZXNFbDpzLHJlYWxJbmRleDpyfSl9ZWxzZXt2YXIgbj1hLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQoZSsxLFwiJ10gcGF0aFwiKSksbz1hLmNvbmZpZy5jaGFydC50eXBlO2lmKG89PT1cInBpZVwifHxvPT09XCJwb2xhckFyZWFcInx8bz09PVwiZG9udXRcIil7dmFyIGg9YS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscztuZXcgTSh0aGlzLmxnQ3R4LmN0eCkucGF0aE1vdXNlRG93bihuLm1lbWJlcnNbMF0sbnVsbCksdGhpcy5sZ0N0eC5jdHgucGllLnByaW50RGF0YUxhYmVsc0lubmVyKG4ubWVtYmVyc1swXS5ub2RlLGgpfW4uZmlyZShcImNsaWNrXCIpfX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXJpZXNFbCxpPWUucmVhbEluZGV4LGE9dGhpcy53LHM9UC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgcj0hMTtpZihhLmNvbmZpZy55YXhpc1tpXSYmYS5jb25maWcueWF4aXNbaV0uc2hvdyYmYS5jb25maWcueWF4aXNbaV0uc2hvd0Fsd2F5cyYmKHI9ITAsYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKTwwJiYoYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTp0LnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKSkpLCFyKXthLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOnQucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO3ZhciBuPWEuZ2xvYmFscy5yaXNpbmdTZXJpZXMuaW5kZXhPZihpKTthLmdsb2JhbHMucmlzaW5nU2VyaWVzLnNwbGljZShuLDEpfX1lbHNlIGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO2Zvcih2YXIgbz10LmNoaWxkTm9kZXMsaD0wO2g8by5sZW5ndGg7aCsrKW9baF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpJiYob1toXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhpZGVcIik/b1toXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1oaWRlXCIpOm9baF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZVwiKSk7YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD1hLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PWEuY29uZmlnLnNlcmllcy5sZW5ndGgscz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX0se2tleTpcInJpc2VDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53LHM9UC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKGUubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaW5kZXg9PT1pJiYoYS5nbG9iYWxzLmF4aXNDaGFydHM/KHNbaV0uZGF0YT1lW3JdLmRhdGEuc2xpY2UoKSxlLnNwbGljZShyLDEpLHQuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKTooc1tpXT1lW3JdLmRhdGEsZS5zcGxpY2UociwxKSx0LnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSkpO3M9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19fSx7a2V5OlwiX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztyZXR1cm4gdC5nbG9iYWxzLmF4aXNDaGFydHM/ZS5mb3JFYWNoKGZ1bmN0aW9uKGksYSl7dC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKGVbYV0uZGF0YT1bXSl9KTplLmZvckVhY2goZnVuY3Rpb24oaSxhKXt0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpPi0xJiYoZVthXT0wKX0pLGV9fV0pLHl9KCksaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vbkxlZ2VuZENsaWNrPXRoaXMub25MZWdlbmRDbGljay5iaW5kKHRoaXMpLHRoaXMub25MZWdlbmRIb3ZlcmVkPXRoaXMub25MZWdlbmRIb3ZlcmVkLmJpbmQodGhpcyksdGhpcy5pc0JhcnNEaXN0cmlidXRlZD10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImJhclwiJiZ0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmdGhpcy53LmNvbmZpZy5zZXJpZXMubGVuZ3RoPT09MSx0aGlzLmxlZ2VuZEhlbHBlcnM9bmV3IEl0KHRoaXMpfXJldHVybiBZKHksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmdsb2JhbHMsaT1lLmNvbmZpZztpZigoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyYmdC5zZXJpZXMubGVuZ3RoPT09MXx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZHx8dC5zZXJpZXMubGVuZ3RoPjF8fCF0LmF4aXNDaGFydHMpJiZpLmxlZ2VuZC5zaG93KXtmb3IoO3QuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOyl0LmRvbS5lbExlZ2VuZFdyYXAucmVtb3ZlQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQpO3RoaXMuZHJhd0xlZ2VuZHMoKSxQLmlzSUUxMSgpP2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpOnRoaXMubGVnZW5kSGVscGVycy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSxpLmxlZ2VuZC5wb3NpdGlvbj09PVwiYm90dG9tXCJ8fGkubGVnZW5kLnBvc2l0aW9uPT09XCJ0b3BcIj90aGlzLmxlZ2VuZEFsaWduSG9yaXpvbnRhbCgpOmkubGVnZW5kLnBvc2l0aW9uIT09XCJyaWdodFwiJiZpLmxlZ2VuZC5wb3NpdGlvbiE9PVwibGVmdFwifHx0aGlzLmxlZ2VuZEFsaWduVmVydGljYWwoKX19fSx7a2V5OlwiZHJhd0xlZ2VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLncsaT10LmNvbmZpZy5sZWdlbmQuZm9udEZhbWlseSxhPXQuZ2xvYmFscy5zZXJpZXNOYW1lcyxzPXQuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTtpZih0LmNvbmZpZy5jaGFydC50eXBlPT09XCJoZWF0bWFwXCIpe3ZhciByPXQuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXM7YT1yLm1hcChmdW5jdGlvbihUKXtyZXR1cm4gVC5uYW1lP1QubmFtZTpULmZyb20rXCIgLSBcIitULnRvfSkscz1yLm1hcChmdW5jdGlvbihUKXtyZXR1cm4gVC5jb2xvcn0pfWVsc2UgdGhpcy5pc0JhcnNEaXN0cmlidXRlZCYmKGE9dC5nbG9iYWxzLmxhYmVscy5zbGljZSgpKTt0LmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoYT10LmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMpO2Zvcih2YXIgbj10Lmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyLG89dC5jb25maWcubGVnZW5kLmludmVyc2VPcmRlcixoPW8/YS5sZW5ndGgtMTowO28/aD49MDpoPD1hLmxlbmd0aC0xO28/aC0tOmgrKyl7dmFyIGMsZD1uKGFbaF0se3Nlcmllc0luZGV4Omgsdzp0fSksZz0hMSxwPSExO2lmKHQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPjApZm9yKHZhciBmPTA7Zjx0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtmKyspdC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tmXS5pbmRleD09PWgmJihnPSEwKTtpZih0Lmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MClmb3IodmFyIGI9MDtiPHQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDtiKyspdC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbYl09PT1oJiYocD0hMCk7dmFyIG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7bS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO3ZhciB3PXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFgsQT10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRZLGw9dC5jb25maWcubGVnZW5kLm1hcmtlcnMuaGVpZ2h0LHU9dC5jb25maWcubGVnZW5kLm1hcmtlcnMud2lkdGgseD10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VXaWR0aCx2PXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZUNvbG9yLGs9dC5jb25maWcubGVnZW5kLm1hcmtlcnMucmFkaXVzLFM9bS5zdHlsZTtTLmJhY2tncm91bmQ9c1toXSxTLmNvbG9yPXNbaF0sUy5zZXRQcm9wZXJ0eShcImJhY2tncm91bmRcIixzW2hdLFwiaW1wb3J0YW50XCIpLHQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnMmJnQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbaF0mJihTLmJhY2tncm91bmQ9dC5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9yc1toXSksdC5nbG9iYWxzLnNlcmllc0NvbG9yc1toXSE9PXZvaWQgMCYmKFMuYmFja2dyb3VuZD10Lmdsb2JhbHMuc2VyaWVzQ29sb3JzW2hdLFMuY29sb3I9dC5nbG9iYWxzLnNlcmllc0NvbG9yc1toXSksUy5oZWlnaHQ9QXJyYXkuaXNBcnJheShsKT9wYXJzZUZsb2F0KGxbaF0pK1wicHhcIjpwYXJzZUZsb2F0KGwpK1wicHhcIixTLndpZHRoPUFycmF5LmlzQXJyYXkodSk/cGFyc2VGbG9hdCh1W2hdKStcInB4XCI6cGFyc2VGbG9hdCh1KStcInB4XCIsUy5sZWZ0PShBcnJheS5pc0FycmF5KHcpP3BhcnNlRmxvYXQod1toXSk6cGFyc2VGbG9hdCh3KSkrXCJweFwiLFMudG9wPShBcnJheS5pc0FycmF5KEEpP3BhcnNlRmxvYXQoQVtoXSk6cGFyc2VGbG9hdChBKSkrXCJweFwiLFMuYm9yZGVyV2lkdGg9QXJyYXkuaXNBcnJheSh4KT94W2hdOngsUy5ib3JkZXJDb2xvcj1BcnJheS5pc0FycmF5KHYpP3ZbaF06dixTLmJvcmRlclJhZGl1cz1BcnJheS5pc0FycmF5KGspP3BhcnNlRmxvYXQoa1toXSkrXCJweFwiOnBhcnNlRmxvYXQoaykrXCJweFwiLHQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwmJihBcnJheS5pc0FycmF5KHQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwpP3QuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbaF0mJihtLmlubmVySFRNTD10LmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2hdKCkpOm0uaW5uZXJIVE1MPXQuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwoKSksTS5zZXRBdHRycyhtLHtyZWw6aCsxLFwiZGF0YTpjb2xsYXBzZWRcIjpnfHxwfSksKGd8fHApJiZtLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKTt2YXIgQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7TC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKSxMLmlubmVySFRNTD1BcnJheS5pc0FycmF5KGQpP2Quam9pbihcIiBcIik6ZDt2YXIgST10LmNvbmZpZy5sZWdlbmQubGFiZWxzLnVzZVNlcmllc0NvbG9ycz90Lmdsb2JhbHMuY29sb3JzW2hdOkFycmF5LmlzQXJyYXkodC5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnMpPyhjPXQuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKT09PW51bGx8fGM9PT12b2lkIDA/dm9pZCAwOmNbaF06dC5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnM7SXx8KEk9dC5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxMLnN0eWxlLmNvbG9yPUksTC5zdHlsZS5mb250U2l6ZT1wYXJzZUZsb2F0KHQuY29uZmlnLmxlZ2VuZC5mb250U2l6ZSkrXCJweFwiLEwuc3R5bGUuZm9udFdlaWdodD10LmNvbmZpZy5sZWdlbmQuZm9udFdlaWdodCxMLnN0eWxlLmZvbnRGYW1pbHk9aXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxNLnNldEF0dHJzKEwse3JlbDpoKzEsaTpoLFwiZGF0YTpkZWZhdWx0LXRleHRcIjplbmNvZGVVUklDb21wb25lbnQoZCksXCJkYXRhOmNvbGxhcHNlZFwiOmd8fHB9KSxDLmFwcGVuZENoaWxkKG0pLEMuYXBwZW5kQ2hpbGQoTCk7dmFyIHo9bmV3IHEodGhpcy5jdHgpO3QuY29uZmlnLmxlZ2VuZC5zaG93Rm9yWmVyb1Nlcmllc3x8ei5nZXRTZXJpZXNUb3RhbEJ5SW5kZXgoaCk9PT0wJiZ6LnNlcmllc0hhdmVTYW1lVmFsdWVzKGgpJiYhei5pc1Nlcmllc051bGwoaCkmJnQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaCk9PT0tMSYmdC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihoKT09PS0xJiZDLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllc1wiKSx0LmNvbmZpZy5sZWdlbmQuc2hvd0Zvck51bGxTZXJpZXN8fHouaXNTZXJpZXNOdWxsKGgpJiZ0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGgpPT09LTEmJnQuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaCk9PT0tMSYmQy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXNcIiksdC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuYXBwZW5kQ2hpbGQoQyksdC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWxpZ24tXCIuY29uY2F0KHQuY29uZmlnLmxlZ2VuZC5ob3Jpem9udGFsQWxpZ24pKSx0Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXB4LWxlZ2VuZC1wb3NpdGlvbi1cIit0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24pLEMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKSxDLnN0eWxlLm1hcmdpbj1cIlwiLmNvbmNhdCh0LmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi52ZXJ0aWNhbCxcInB4IFwiKS5jb25jYXQodC5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4uaG9yaXpvbnRhbCxcInB4XCIpLHQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLndpZHRoPXQuY29uZmlnLmxlZ2VuZC53aWR0aD90LmNvbmZpZy5sZWdlbmQud2lkdGgrXCJweFwiOlwiXCIsdC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUuaGVpZ2h0PXQuY29uZmlnLmxlZ2VuZC5oZWlnaHQ/dC5jb25maWcubGVnZW5kLmhlaWdodCtcInB4XCI6XCJcIixNLnNldEF0dHJzKEMse3JlbDpoKzEsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhhW2hdKSxcImRhdGE6Y29sbGFwc2VkXCI6Z3x8cH0pLChnfHxwKSYmQy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIiksdC5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXN8fEMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbm8tY2xpY2tcIil9dC5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5vbkxlZ2VuZENsaWNrLCEwKSx0LmNvbmZpZy5sZWdlbmQub25JdGVtSG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyYmdC5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aD09PTAmJih0Lmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsZS5vbkxlZ2VuZEhvdmVyZWQsITApLHQuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLGUub25MZWdlbmRIb3ZlcmVkLCEwKSl9fSx7a2V5Olwic2V0TGVnZW5kV3JhcFhZXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1pLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcCxzPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj0wLG49MDtpZihpLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwiKW4rPWkuZ2xvYmFscy5zdmdIZWlnaHQtcy5oZWlnaHQvMjtlbHNlIGlmKGkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj09PVwidG9wXCIpe3ZhciBvPW5ldyBSZSh0aGlzLmN0eCksaD1vLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLmhlaWdodCxjPW8uZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIikuaGVpZ2h0O249bisoaD4wP2gtMTA6MCkrKGM+MD9jLTEwOjApfWEuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLHI9citlK2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYLG49bit0K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRZLGEuc3R5bGUubGVmdD1yK1wicHhcIixhLnN0eWxlLnRvcD1uK1wicHhcIixpLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwiPyhhLnN0eWxlLnRvcD1cImF1dG9cIixhLnN0eWxlLmJvdHRvbT01LWkuY29uZmlnLmxlZ2VuZC5vZmZzZXRZK1wicHhcIik6aS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJyaWdodFwiJiYoYS5zdHlsZS5sZWZ0PVwiYXV0b1wiLGEuc3R5bGUucmlnaHQ9MjUraS5jb25maWcubGVnZW5kLm9mZnNldFgrXCJweFwiKSxbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLmZvckVhY2goZnVuY3Rpb24oZCl7YS5zdHlsZVtkXSYmKGEuc3R5bGVbZF09cGFyc2VJbnQoaS5jb25maWcubGVnZW5kW2RdLDEwKStcInB4XCIpfSl9fSx7a2V5OlwibGVnZW5kQWxpZ25Ib3Jpem9udGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUucmlnaHQ9MDt2YXIgdD10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IFJlKHRoaXMuY3R4KSxhPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscz1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLHI9MDtlLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cImJvdHRvbVwiP3I9LXQuY2x3aC8xLjg6ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJ0b3BcIiYmKHI9YS5oZWlnaHQrcy5oZWlnaHQrZS5jb25maWcudGl0bGUubWFyZ2luK2UuY29uZmlnLnN1YnRpdGxlLm1hcmdpbi0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoMjAscil9fSx7a2V5OlwibGVnZW5kQWxpZ25WZXJ0aWNhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPTA7ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uPT09XCJsZWZ0XCImJihpPTIwKSxlLmNvbmZpZy5sZWdlbmQucG9zaXRpb249PT1cInJpZ2h0XCImJihpPWUuZ2xvYmFscy5zdmdXaWR0aC10LmNsd3ctMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKGksMjApfX0se2tleTpcIm9uTGVnZW5kSG92ZXJlZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPWUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKXx8ZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8ZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO2lmKHQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcInx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZCl7aWYoaSl7dmFyIGE9cGFyc2VJbnQoZS50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3RoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRIb3ZlclwiLFt0aGlzLmN0eCxhLHRoaXMud10pLG5ldyBpZSh0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyhlLGUudGFyZ2V0KX19ZWxzZSFlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSYmaSYmbmV3IGllKHRoaXMuY3R4KS50b2dnbGVTZXJpZXNPbkhvdmVyKGUsZS50YXJnZXQpfX0se2tleTpcIm9uTGVnZW5kQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnc7aWYoIXQuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIil8fGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSkpe3ZhciBpPXBhcnNlSW50KGUudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxhPWUudGFyZ2V0LmdldEF0dHJpYnV0ZShcImRhdGE6Y29sbGFwc2VkXCIpPT09XCJ0cnVlXCIscz10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5sZWdlbmRDbGljazt0eXBlb2Ygcz09XCJmdW5jdGlvblwiJiZzKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kQ2xpY2tcIixbdGhpcy5jdHgsaSx0aGlzLnddKTt2YXIgcj10aGlzLncuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9uQ2xpY2s7dHlwZW9mIHI9PVwiZnVuY3Rpb25cIiYmZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpJiYocih0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZE1hcmtlckNsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSkpLHQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInRyZWVtYXBcIiYmdC5jb25maWcuY2hhcnQudHlwZSE9PVwiaGVhdG1hcFwiJiYhdGhpcy5pc0JhcnNEaXN0cmlidXRlZCYmdC5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXMmJnRoaXMubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGksYSl9fX1dKSx5fSgpLGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciB0PXRoaXMudzt0aGlzLmV2PXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLHRoaXMuc2VsZWN0ZWRDbGFzcz1cImFwZXhjaGFydHMtc2VsZWN0ZWRcIix0aGlzLmxvY2FsZVZhbHVlcz10aGlzLncuZ2xvYmFscy5sb2NhbGUudG9vbGJhcix0aGlzLm1pblg9dC5nbG9iYWxzLm1pblgsdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhYfXJldHVybiBZKHksW3trZXk6XCJjcmVhdGVUb29sYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53LGk9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKX0sYT1pKCk7aWYoYS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy10b29sYmFyXCIpLGEuc3R5bGUudG9wPXQuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WStcInB4XCIsYS5zdHlsZS5yaWdodD0zLXQuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WCtcInB4XCIsdC5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoYSksdGhpcy5lbFpvb209aSgpLHRoaXMuZWxab29tSW49aSgpLHRoaXMuZWxab29tT3V0PWkoKSx0aGlzLmVsUGFuPWkoKSx0aGlzLmVsU2VsZWN0aW9uPWkoKSx0aGlzLmVsWm9vbVJlc2V0PWkoKSx0aGlzLmVsTWVudUljb249aSgpLHRoaXMuZWxNZW51PWkoKSx0aGlzLmVsQ3VzdG9tSWNvbnM9W10sdGhpcy50PXQuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHMsQXJyYXkuaXNBcnJheSh0aGlzLnQuY3VzdG9tSWNvbnMpKWZvcih2YXIgcz0wO3M8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtzKyspdGhpcy5lbEN1c3RvbUljb25zLnB1c2goaSgpKTt2YXIgcj1bXSxuPWZ1bmN0aW9uKGQsZyxwKXt2YXIgZj1kLnRvTG93ZXJDYXNlKCk7ZS50W2ZdJiZ0LmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnIucHVzaCh7ZWw6ZyxpY29uOnR5cGVvZiBlLnRbZl09PVwic3RyaW5nXCI/ZS50W2ZdOnAsdGl0bGU6ZS5sb2NhbGVWYWx1ZXNbZF0sY2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChmLFwiLWljb25cIil9KX07bihcInpvb21JblwiLHRoaXMuZWxab29tSW4sYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxuICAgIDxwYXRoIGQ9XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cbjwvc3ZnPlxuYCksbihcInpvb21PdXRcIix0aGlzLmVsWm9vbU91dCxgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XG4gICAgPHBhdGggZD1cIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XG48L3N2Zz5cbmApO3ZhciBvPWZ1bmN0aW9uKGQpe2UudFtkXSYmdC5jb25maWcuY2hhcnRbZF0uZW5hYmxlZCYmci5wdXNoKHtlbDpkPT09XCJ6b29tXCI/ZS5lbFpvb206ZS5lbFNlbGVjdGlvbixpY29uOnR5cGVvZiBlLnRbZF09PVwic3RyaW5nXCI/ZS50W2RdOmQ9PT1cInpvb21cIj9gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XG4gICAgPHBhdGggZD1cIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLz5cbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgZmlsbD1cIm5vbmVcIi8+XG4gICAgPHBhdGggZD1cIk0xMiAxMGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxelwiLz5cbjwvc3ZnPmA6YDxzdmcgZmlsbD1cIiM2RTgxOTJcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XG4gICAgPHBhdGggZD1cIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6XCIvPlxuPC9zdmc+YCx0aXRsZTplLmxvY2FsZVZhbHVlc1tkPT09XCJ6b29tXCI/XCJzZWxlY3Rpb25ab29tXCI6XCJzZWxlY3Rpb25cIl0sY2xhc3M6dC5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/XCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCI6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChkLFwiLWljb25cIil9KX07byhcInpvb21cIiksbyhcInNlbGVjdGlvblwiKSx0aGlzLnQucGFuJiZ0LmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnIucHVzaCh7ZWw6dGhpcy5lbFBhbixpY29uOnR5cGVvZiB0aGlzLnQucGFuPT1cInN0cmluZ1wiP3RoaXMudC5wYW46YDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxuICAgIDxkZWZzPlxuICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGlkPVwiYVwiLz5cbiAgICA8L2RlZnM+XG4gICAgPGNsaXBQYXRoIGlkPVwiYlwiPlxuICAgICAgICA8dXNlIG92ZXJmbG93PVwidmlzaWJsZVwiIHhsaW5rOmhyZWY9XCIjYVwiLz5cbiAgICA8L2NsaXBQYXRoPlxuICAgIDxwYXRoIGNsaXAtcGF0aD1cInVybCgjYilcIiBkPVwiTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41elwiLz5cbjwvc3ZnPmAsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMucGFuLGNsYXNzOnQuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1wYW4taWNvblwifSksbihcInJlc2V0XCIsdGhpcy5lbFpvb21SZXNldCxgPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPHBhdGggZD1cIk0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6XCIvPlxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XG48L3N2Zz5gKSx0aGlzLnQuZG93bmxvYWQmJnIucHVzaCh7ZWw6dGhpcy5lbE1lbnVJY29uLGljb246dHlwZW9mIHRoaXMudC5kb3dubG9hZD09XCJzdHJpbmdcIj90aGlzLnQuZG93bmxvYWQ6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLz48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwifSk7Zm9yKHZhciBoPTA7aDx0aGlzLmVsQ3VzdG9tSWNvbnMubGVuZ3RoO2grKylyLnB1c2goe2VsOnRoaXMuZWxDdXN0b21JY29uc1toXSxpY29uOnRoaXMudC5jdXN0b21JY29uc1toXS5pY29uLHRpdGxlOnRoaXMudC5jdXN0b21JY29uc1toXS50aXRsZSxpbmRleDp0aGlzLnQuY3VzdG9tSWNvbnNbaF0uaW5kZXgsY2xhc3M6XCJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gXCIrdGhpcy50LmN1c3RvbUljb25zW2hdLmNsYXNzfSk7ci5mb3JFYWNoKGZ1bmN0aW9uKGQsZyl7ZC5pbmRleCYmUC5tb3ZlSW5kZXhJbkFycmF5KHIsZyxkLmluZGV4KX0pO2Zvcih2YXIgYz0wO2M8ci5sZW5ndGg7YysrKU0uc2V0QXR0cnMocltjXS5lbCx7Y2xhc3M6cltjXS5jbGFzcyx0aXRsZTpyW2NdLnRpdGxlfSkscltjXS5lbC5pbm5lckhUTUw9cltjXS5pY29uLGEuYXBwZW5kQ2hpbGQocltjXS5lbCk7dGhpcy5fY3JlYXRlSGFtYnVyZ2VyTWVudShhKSx0Lmdsb2JhbHMuem9vbUVuYWJsZWQ/dGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOnQuZ2xvYmFscy5wYW5FbmFibGVkP3RoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOnQuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSx0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpfX0se2tleTpcIl9jcmVhdGVIYW1idXJnZXJNZW51XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5lbE1lbnVJdGVtcz1bXSxlLmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSxNLnNldEF0dHJzKHRoaXMuZWxNZW51LHtjbGFzczpcImFwZXhjaGFydHMtbWVudVwifSk7Zm9yKHZhciB0PVt7bmFtZTpcImV4cG9ydFNWR1wiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvU1ZHfSx7bmFtZTpcImV4cG9ydFBOR1wiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvUE5HfSx7bmFtZTpcImV4cG9ydENTVlwiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvQ1NWfV0saT0wO2k8dC5sZW5ndGg7aSsrKXRoaXMuZWxNZW51SXRlbXMucHVzaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSx0aGlzLmVsTWVudUl0ZW1zW2ldLmlubmVySFRNTD10W2ldLnRpdGxlLE0uc2V0QXR0cnModGhpcy5lbE1lbnVJdGVtc1tpXSx7Y2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaXRlbSBcIi5jb25jYXQodFtpXS5uYW1lKSx0aXRsZTp0W2ldLnRpdGxlfSksdGhpcy5lbE1lbnUuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnVJdGVtc1tpXSl9fSx7a2V5OlwiYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZWxab29tUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tUmVzZXQuYmluZCh0aGlzKSksdGhpcy5lbFNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVpvb21TZWxlY3Rpb24uYmluZCh0aGlzLFwic2VsZWN0aW9uXCIpKSx0aGlzLmVsWm9vbS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVpvb21TZWxlY3Rpb24uYmluZCh0aGlzLFwiem9vbVwiKSksdGhpcy5lbFpvb21Jbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21Jbi5iaW5kKHRoaXMpKSx0aGlzLmVsWm9vbU91dC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21PdXQuYmluZCh0aGlzKSksdGhpcy5lbFBhbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVBhbm5pbmcuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJY29uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlTWVudS5iaW5kKHRoaXMpKSx0aGlzLmVsTWVudUl0ZW1zLmZvckVhY2goZnVuY3Rpb24oaSl7aS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRTVkdcIik/aS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlLmhhbmRsZURvd25sb2FkLmJpbmQoZSxcInN2Z1wiKSk6aS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRQTkdcIik/aS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlLmhhbmRsZURvd25sb2FkLmJpbmQoZSxcInBuZ1wiKSk6aS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRDU1ZcIikmJmkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5oYW5kbGVEb3dubG9hZC5iaW5kKGUsXCJjc3ZcIikpfSk7Zm9yKHZhciB0PTA7dDx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO3QrKyl0aGlzLmVsQ3VzdG9tSWNvbnNbdF0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50LmN1c3RvbUljb25zW3RdLmNsaWNrLmJpbmQodGhpcyx0aGlzLmN0eCx0aGlzLmN0eC53KSl9fSx7a2V5OlwidG9nZ2xlWm9vbVNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goZnVuY3Rpb24odCl7dC5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCk7dmFyIGk9ZT09PVwic2VsZWN0aW9uXCI/dC5jdHgudG9vbGJhci5lbFNlbGVjdGlvbjp0LmN0eC50b29sYmFyLmVsWm9vbSxhPWU9PT1cInNlbGVjdGlvblwiP1wic2VsZWN0aW9uRW5hYmxlZFwiOlwiem9vbUVuYWJsZWRcIjt0LncuZ2xvYmFsc1thXT0hdC53Lmdsb2JhbHNbYV0saS5jbGFzc0xpc3QuY29udGFpbnModC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKT9pLmNsYXNzTGlzdC5yZW1vdmUodC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKTppLmNsYXNzTGlzdC5hZGQodC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKX0pfX0se2tleTpcImdldFRvb2xiYXJJY29uc1JlZmVyZW5jZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53O3RoaXMuZWxab29tfHwodGhpcy5lbFpvb209ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXpvb20taWNvblwiKSksdGhpcy5lbFBhbnx8KHRoaXMuZWxQYW49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBhbi1pY29uXCIpKSx0aGlzLmVsU2VsZWN0aW9ufHwodGhpcy5lbFNlbGVjdGlvbj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb25cIikpfX0se2tleTpcImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMudG9nZ2xlT3RoZXJDb250cm9scygpLGU9PT1cInBhblwiP3RoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQ9ITA6dGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITA7dmFyIHQ9ZT09PVwicGFuXCI/dGhpcy5lbFBhbjp0aGlzLmVsWm9vbSxpPWU9PT1cInBhblwiP3RoaXMuZWxab29tOnRoaXMuZWxQYW47dCYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksaSYmaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuc2VsZWN0ZWRDbGFzcyl9fSx7a2V5OlwidG9nZ2xlUGFubmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaChmdW5jdGlvbihlKXtlLmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKSxlLncuZ2xvYmFscy5wYW5FbmFibGVkPSFlLncuZ2xvYmFscy5wYW5FbmFibGVkLGUuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmNvbnRhaW5zKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/ZS5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QucmVtb3ZlKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6ZS5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QuYWRkKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KX19LHtrZXk6XCJ0b2dnbGVPdGhlckNvbnRyb2xzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy53O3QuZ2xvYmFscy5wYW5FbmFibGVkPSExLHQuZ2xvYmFscy56b29tRW5hYmxlZD0hMSx0Lmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZD0hMSx0aGlzLmdldFRvb2xiYXJJY29uc1JlZmVyZW5jZSgpLFt0aGlzLmVsUGFuLHRoaXMuZWxTZWxlY3Rpb24sdGhpcy5lbFpvb21dLmZvckVhY2goZnVuY3Rpb24oaSl7aSYmaS5jbGFzc0xpc3QucmVtb3ZlKGUuc2VsZWN0ZWRDbGFzcyl9KX19LHtrZXk6XCJoYW5kbGVab29tSW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD1lLmdsb2JhbHMubWluWSx0aGlzLm1heFg9ZS5nbG9iYWxzLm1heFkpO3ZhciB0PSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9KHRoaXMubWluWCt0KS8yLGE9KHRoaXMubWF4WCt0KS8yLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTtlLmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19LHtrZXk6XCJoYW5kbGVab29tT3V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnc7aWYoZS5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9ZS5nbG9iYWxzLm1pblksdGhpcy5tYXhYPWUuZ2xvYmFscy5tYXhZKSwhKGUuY29uZmlnLnhheGlzLnR5cGU9PT1cImRhdGV0aW1lXCImJm5ldyBEYXRlKHRoaXMubWluWCkuZ2V0VVRDRnVsbFllYXIoKTwxZTMpKXt2YXIgdD0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPXRoaXMubWluWC0odC10aGlzLm1pblgpLGE9dGhpcy5tYXhYLSh0LXRoaXMubWF4WCkscz10aGlzLl9nZXROZXdNaW5YTWF4WChpLGEpO2UuZ2xvYmFscy5kaXNhYmxlWm9vbU91dHx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19fSx7a2V5OlwiX2dldE5ld01pblhNYXhYXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYztyZXR1cm57bWluWDppP01hdGguZmxvb3IoZSk6ZSxtYXhYOmk/TWF0aC5mbG9vcih0KTp0fX19LHtrZXk6XCJ6b29tVXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53O2lmKGUhPT12b2lkIDB8fHQhPT12b2lkIDApe2lmKCEoaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoZTwxJiYoZT0xLHQ9aS5nbG9iYWxzLmRhdGFQb2ludHMpLHQtZTwyKSkpe3ZhciBhPXttaW46ZSxtYXg6dH0scz10aGlzLmdldEJlZm9yZVpvb21SYW5nZShhKTtzJiYoYT1zLnhheGlzKTt2YXIgcj17eGF4aXM6YX0sbj1QLmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTtpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYobj1uZXcga2UodGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsbix7eGF4aXM6YX0pKSxpLmNvbmZpZy5jaGFydC5ncm91cHx8KHIueWF4aXM9biksdGhpcy53Lmdsb2JhbHMuem9vbWVkPSEwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMociwhMSx0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0aGlzLnpvb21DYWxsYmFjayhhLG4pfX1lbHNlIHRoaXMuaGFuZGxlWm9vbVJlc2V0KCl9fSx7a2V5Olwiem9vbUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0eXBlb2YgdGhpcy5ldi56b29tZWQ9PVwiZnVuY3Rpb25cIiYmdGhpcy5ldi56b29tZWQodGhpcy5jdHgse3hheGlzOmUseWF4aXM6dH0pfX0se2tleTpcImdldEJlZm9yZVpvb21SYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9bnVsbDtyZXR1cm4gdHlwZW9mIHRoaXMuZXYuYmVmb3JlWm9vbT09XCJmdW5jdGlvblwiJiYoaT10aGlzLmV2LmJlZm9yZVpvb20odGhpcyx7eGF4aXM6ZSx5YXhpczp0fSkpLGl9fSx7a2V5OlwidG9nZ2xlTWVudVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2UuZWxNZW51LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpP2UuZWxNZW51LmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKTplLmVsTWVudS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9LDApfX0se2tleTpcImhhbmRsZURvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IEZlKHRoaXMuY3R4KTtzd2l0Y2goZSl7Y2FzZVwic3ZnXCI6aS5leHBvcnRUb1NWRyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwicG5nXCI6aS5leHBvcnRUb1BuZyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwiY3N2XCI6aS5leHBvcnRUb0NTVih7c2VyaWVzOnQuY29uZmlnLnNlcmllcyxjb2x1bW5EZWxpbWl0ZXI6dC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmNvbHVtbkRlbGltaXRlcn0pfX19LHtrZXk6XCJoYW5kbGVab29tUmVzZXRcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpPXQudztpZihpLmdsb2JhbHMubGFzdFhBeGlzLm1pbj1pLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcy5taW4saS5nbG9iYWxzLmxhc3RYQXhpcy5tYXg9aS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWF4LHQudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tPT1cImZ1bmN0aW9uXCIpe3ZhciBhPWkuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20odCxpKTthJiZ0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoYSl9dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQ9PVwiZnVuY3Rpb25cIiYmdC5jdHgudG9vbGJhci56b29tQ2FsbGJhY2soe21pbjppLmNvbmZpZy54YXhpcy5taW4sbWF4OmkuY29uZmlnLnhheGlzLm1heH0pLGkuZ2xvYmFscy56b29tZWQ9ITE7dmFyIHM9dC5jdHguc2VyaWVzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKFAuY2xvbmUoaS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpKTt0LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX0pfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWxab29tPW51bGwsdGhpcy5lbFpvb21Jbj1udWxsLHRoaXMuZWxab29tT3V0PW51bGwsdGhpcy5lbFBhbj1udWxsLHRoaXMuZWxTZWxlY3Rpb249bnVsbCx0aGlzLmVsWm9vbVJlc2V0PW51bGwsdGhpcy5lbE1lbnVJY29uPW51bGx9fV0pLHl9KCksVHQ9ZnVuY3Rpb24oeSl7dWUodCxhdCk7dmFyIGU9cGUodCk7ZnVuY3Rpb24gdChpKXt2YXIgYTtyZXR1cm4gRih0aGlzLHQpLChhPWUuY2FsbCh0aGlzLGkpKS5jdHg9aSxhLnc9aS53LGEuZHJhZ2dlZD0hMSxhLmdyYXBoaWNzPW5ldyBNKGEuY3R4KSxhLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbGVhdmVcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSxhLmNsaWVudFg9MCxhLmNsaWVudFk9MCxhLnN0YXJ0WD0wLGEuZW5kWD0wLGEuZHJhZ1g9MCxhLnN0YXJ0WT0wLGEuZW5kWT0wLGEuZHJhZ1k9MCxhLm1vdmVEaXJlY3Rpb249XCJub25lXCIsYX1yZXR1cm4gWSh0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPXRoaXMscz1pLnh5UmF0aW9zLHI9dGhpcy53LG49dGhpczt0aGlzLnh5UmF0aW9zPXMsdGhpcy56b29tUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuc2VsZWN0aW9uUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuZ3JpZFJlY3Q9ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIiksdGhpcy56b29tUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb20tcmVjdFwiKSx0aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKSxyLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnpvb21SZWN0KSxyLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnNlbGVjdGlvblJlY3QpLHIuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlPT09XCJ4XCI/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1pblk6MCxtYXhYOnIuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTpyLmdsb2JhbHMuZ3JpZEhlaWdodH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTpyLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT09PVwieVwiP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtYXhYOnIuZ2xvYmFscy5ncmlkV2lkdGh9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSgpLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKSx0aGlzLnByZXNlbGVjdGVkU2VsZWN0aW9uKCksdGhpcy5ob3ZlckFyZWE9ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIlwiLmNvbmNhdChyLmdsb2JhbHMuY2hhcnRDbGFzcyxcIiAuYXBleGNoYXJ0cy1zdmdcIikpLHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb21hYmxlXCIpLHRoaXMuZXZlbnRMaXN0LmZvckVhY2goZnVuY3Rpb24obyl7YS5ob3ZlckFyZWEuYWRkRXZlbnRMaXN0ZW5lcihvLG4uc3ZnTW91c2VFdmVudHMuYmluZChuLHMpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2xEcmFnZ2FibGVSZWN0JiYodGhpcy5zbERyYWdnYWJsZVJlY3QuZHJhZ2dhYmxlKCExKSx0aGlzLnNsRHJhZ2dhYmxlUmVjdC5vZmYoKSx0aGlzLnNlbGVjdGlvblJlY3Qub2ZmKCkpLHRoaXMuc2VsZWN0aW9uUmVjdD1udWxsLHRoaXMuem9vbVJlY3Q9bnVsbCx0aGlzLmdyaWRSZWN0PW51bGx9fSx7a2V5Olwic3ZnTW91c2VFdmVudHNcIix2YWx1ZTpmdW5jdGlvbihpLGEpe3ZhciBzPXRoaXMudyxyPXRoaXMsbj10aGlzLmN0eC50b29sYmFyLG89cy5nbG9iYWxzLnpvb21FbmFibGVkP3MuY29uZmlnLmNoYXJ0Lnpvb20udHlwZTpzLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZSxoPXMuY29uZmlnLmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkO2lmKGEuc2hpZnRLZXk/KHRoaXMuc2hpZnRXYXNQcmVzc2VkPSEwLG4uZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyKGg9PT1cInBhblwiP1wiem9vbVwiOlwicGFuXCIpKTp0aGlzLnNoaWZ0V2FzUHJlc3NlZCYmKG4uZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyKGgpLHRoaXMuc2hpZnRXYXNQcmVzc2VkPSExKSxhLnRhcmdldCl7dmFyIGMsZD1hLnRhcmdldC5jbGFzc0xpc3Q7aWYoYS50YXJnZXQucGFyZW50Tm9kZSYmYS50YXJnZXQucGFyZW50Tm9kZSE9PW51bGwmJihjPWEudGFyZ2V0LnBhcmVudE5vZGUuY2xhc3NMaXN0KSwhKGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpfHxkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpfHxkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8YyYmYy5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbGJhclwiKSkpe2lmKHIuY2xpZW50WD1hLnR5cGU9PT1cInRvdWNobW92ZVwifHxhLnR5cGU9PT1cInRvdWNoc3RhcnRcIj9hLnRvdWNoZXNbMF0uY2xpZW50WDphLnR5cGU9PT1cInRvdWNoZW5kXCI/YS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYOmEuY2xpZW50WCxyLmNsaWVudFk9YS50eXBlPT09XCJ0b3VjaG1vdmVcInx8YS50eXBlPT09XCJ0b3VjaHN0YXJ0XCI/YS50b3VjaGVzWzBdLmNsaWVudFk6YS50eXBlPT09XCJ0b3VjaGVuZFwiP2EuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTphLmNsaWVudFksYS50eXBlPT09XCJtb3VzZWRvd25cIiYmYS53aGljaD09PTEpe3ZhciBnPXIuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ci5zdGFydFg9ci5jbGllbnRYLWcubGVmdCxyLnN0YXJ0WT1yLmNsaWVudFktZy50b3Asci5kcmFnZ2VkPSExLHIudy5nbG9iYWxzLm1vdXNlZG93bj0hMH1pZigoYS50eXBlPT09XCJtb3VzZW1vdmVcIiYmYS53aGljaD09PTF8fGEudHlwZT09PVwidG91Y2htb3ZlXCIpJiYoci5kcmFnZ2VkPSEwLHMuZ2xvYmFscy5wYW5FbmFibGVkPyhzLmdsb2JhbHMuc2VsZWN0aW9uPW51bGwsci53Lmdsb2JhbHMubW91c2Vkb3duJiZyLnBhbkRyYWdnaW5nKHtjb250ZXh0OnIsem9vbXR5cGU6byx4eVJhdGlvczppfSkpOihyLncuZ2xvYmFscy5tb3VzZWRvd24mJnMuZ2xvYmFscy56b29tRW5hYmxlZHx8ci53Lmdsb2JhbHMubW91c2Vkb3duJiZzLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJihyLnNlbGVjdGlvbj1yLnNlbGVjdGlvbkRyYXdpbmcoe2NvbnRleHQ6cix6b29tdHlwZTpvfSkpKSxhLnR5cGU9PT1cIm1vdXNldXBcInx8YS50eXBlPT09XCJ0b3VjaGVuZFwifHxhLnR5cGU9PT1cIm1vdXNlbGVhdmVcIil7dmFyIHA9ci5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyLncuZ2xvYmFscy5tb3VzZWRvd24mJihyLmVuZFg9ci5jbGllbnRYLXAubGVmdCxyLmVuZFk9ci5jbGllbnRZLXAudG9wLHIuZHJhZ1g9TWF0aC5hYnMoci5lbmRYLXIuc3RhcnRYKSxyLmRyYWdZPU1hdGguYWJzKHIuZW5kWS1yLnN0YXJ0WSksKHMuZ2xvYmFscy56b29tRW5hYmxlZHx8cy5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiZyLnNlbGVjdGlvbkRyYXduKHtjb250ZXh0OnIsem9vbXR5cGU6b30pLHMuZ2xvYmFscy5wYW5FbmFibGVkJiZzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnIuZGVsYXllZFBhblNjcm9sbGVkKCkpLHMuZ2xvYmFscy56b29tRW5hYmxlZCYmci5oaWRlU2VsZWN0aW9uUmVjdCh0aGlzLnNlbGVjdGlvblJlY3QpLHIuZHJhZ2dlZD0hMSxyLncuZ2xvYmFscy5tb3VzZWRvd249ITF9dGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpfX19fSx7a2V5OlwibWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBpPXRoaXMudztpZih0aGlzLnNlbGVjdGlvblJlY3Qpe3ZhciBhPXRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Eud2lkdGg+MCYmYS5oZWlnaHQ+MCYmdGhpcy5zbERyYWdnYWJsZVJlY3Quc2VsZWN0aXplKHtwb2ludHM6XCJsLCByXCIscG9pbnRTaXplOjgscG9pbnRUeXBlOlwicmVjdFwifSkucmVzaXplKHtjb25zdHJhaW50OnttaW5YOjAsbWluWTowLG1heFg6aS5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX0pLm9uKFwicmVzaXppbmdcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcInJlc2l6aW5nXCIpKX19fSx7a2V5OlwicHJlc2VsZWN0ZWRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBpPXRoaXMudyxhPXRoaXMueHlSYXRpb3M7aWYoIWkuZ2xvYmFscy56b29tRW5hYmxlZCl7aWYoaS5nbG9iYWxzLnNlbGVjdGlvbiE9PXZvaWQgMCYmaS5nbG9iYWxzLnNlbGVjdGlvbiE9PW51bGwpdGhpcy5kcmF3U2VsZWN0aW9uUmVjdChpLmdsb2JhbHMuc2VsZWN0aW9uKTtlbHNlIGlmKGkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4hPT12b2lkIDAmJmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXghPT12b2lkIDApe3ZhciBzPShpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLWkuZ2xvYmFscy5taW5YKS9hLnhSYXRpbyxyPWkuZ2xvYmFscy5ncmlkV2lkdGgtKGkuZ2xvYmFscy5tYXhYLWkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpL2EueFJhdGlvLXM7aS5nbG9iYWxzLmlzUmFuZ2VCYXImJihzPShpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLWkuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4pL2EuaW52ZXJ0ZWRZUmF0aW8scj0oaS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heC1pLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluKS9hLmludmVydGVkWVJhdGlvKTt2YXIgbj17eDpzLHk6MCx3aWR0aDpyLGhlaWdodDppLmdsb2JhbHMuZ3JpZEhlaWdodCx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNlbGVjdGlvbkVuYWJsZWQ6ITB9O3RoaXMuZHJhd1NlbGVjdGlvblJlY3QobiksdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpLHR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uPT1cImZ1bmN0aW9uXCImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24odGhpcy5jdHgse3hheGlzOnttaW46aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbixtYXg6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heH0seWF4aXM6e319KX19fX0se2tleTpcImRyYXdTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9aS54LHM9aS55LHI9aS53aWR0aCxuPWkuaGVpZ2h0LG89aS50cmFuc2xhdGVYLGg9bz09PXZvaWQgMD8wOm8sYz1pLnRyYW5zbGF0ZVksZD1jPT09dm9pZCAwPzA6YyxnPXRoaXMudyxwPXRoaXMuem9vbVJlY3QsZj10aGlzLnNlbGVjdGlvblJlY3Q7aWYodGhpcy5kcmFnZ2VkfHxnLmdsb2JhbHMuc2VsZWN0aW9uIT09bnVsbCl7dmFyIGI9e3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitoK1wiLCBcIitkK1wiKVwifTtnLmdsb2JhbHMuem9vbUVuYWJsZWQmJnRoaXMuZHJhZ2dlZCYmKHI8MCYmKHI9MSkscC5hdHRyKHt4OmEseTpzLHdpZHRoOnIsaGVpZ2h0Om4sZmlsbDpnLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmcuY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5maWxsLm9wYWNpdHksc3Ryb2tlOmcuY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpnLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLW9wYWNpdHlcIjpnLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLm9wYWNpdHl9KSxNLnNldEF0dHJzKHAubm9kZSxiKSksZy5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJihmLmF0dHIoe3g6YSx5OnMsd2lkdGg6cj4wP3I6MCxoZWlnaHQ6bj4wP246MCxmaWxsOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLmNvbG9yLFwiZmlsbC1vcGFjaXR5XCI6Zy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwub3BhY2l0eSxzdHJva2U6Zy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2Uud2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6Zy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5kYXNoQXJyYXksXCJzdHJva2Utb3BhY2l0eVwiOmcuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2Uub3BhY2l0eX0pLE0uc2V0QXR0cnMoZi5ub2RlLGIpKX19fSx7a2V5OlwiaGlkZVNlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbihpKXtpJiZpLmF0dHIoe3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfX0se2tleTpcInNlbGVjdGlvbkRyYXdpbmdcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmNvbnRleHQscz1pLnpvb210eXBlLHI9dGhpcy53LG49YSxvPXRoaXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaD1uLnN0YXJ0WC0xLGM9bi5zdGFydFksZD0hMSxnPSExLHA9bi5jbGllbnRYLW8ubGVmdC1oLGY9bi5jbGllbnRZLW8udG9wLWMsYj17fTtyZXR1cm4gTWF0aC5hYnMocCtoKT5yLmdsb2JhbHMuZ3JpZFdpZHRoP3A9ci5nbG9iYWxzLmdyaWRXaWR0aC1oOm4uY2xpZW50WC1vLmxlZnQ8MCYmKHA9aCksaD5uLmNsaWVudFgtby5sZWZ0JiYoZD0hMCxwPU1hdGguYWJzKHApKSxjPm4uY2xpZW50WS1vLnRvcCYmKGc9ITAsZj1NYXRoLmFicyhmKSksYj1zPT09XCJ4XCI/e3g6ZD9oLXA6aCx5OjAsd2lkdGg6cCxoZWlnaHQ6ci5nbG9iYWxzLmdyaWRIZWlnaHR9OnM9PT1cInlcIj97eDowLHk6Zz9jLWY6Yyx3aWR0aDpyLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDpmfTp7eDpkP2gtcDpoLHk6Zz9jLWY6Yyx3aWR0aDpwLGhlaWdodDpmfSxuLmRyYXdTZWxlY3Rpb25SZWN0KGIpLG4uc2VsZWN0aW9uRHJhZ2dpbmcoXCJyZXNpemluZ1wiKSxifX0se2tleTpcInNlbGVjdGlvbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLHI9dGhpcy53LG49dGhpcy54eVJhdGlvcyxvPXRoaXMuc2VsZWN0aW9uUmVjdCxoPTA7aT09PVwicmVzaXppbmdcIiYmKGg9MzApO3ZhciBjPWZ1bmN0aW9uKGcpe3JldHVybiBwYXJzZUZsb2F0KG8ubm9kZS5nZXRBdHRyaWJ1dGUoZykpfSxkPXt4OmMoXCJ4XCIpLHk6YyhcInlcIiksd2lkdGg6YyhcIndpZHRoXCIpLGhlaWdodDpjKFwiaGVpZ2h0XCIpfTtyLmdsb2JhbHMuc2VsZWN0aW9uPWQsdHlwZW9mIHIuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249PVwiZnVuY3Rpb25cIiYmci5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJihjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXIpLHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGcscCxmLGIsbT1zLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHc9by5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3IuZ2xvYmFscy5pc1JhbmdlQmFyPyhnPXIuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rKHcubGVmdC1tLmxlZnQpKm4uaW52ZXJ0ZWRZUmF0aW8scD1yLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh3LnJpZ2h0LW0ubGVmdCkqbi5pbnZlcnRlZFlSYXRpbyxmPTAsYj0xKTooZz1yLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyh3LmxlZnQtbS5sZWZ0KSpuLnhSYXRpbyxwPXIuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKHcucmlnaHQtbS5sZWZ0KSpuLnhSYXRpbyxmPXIuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rKG0uYm90dG9tLXcuYm90dG9tKSpuLnlSYXRpb1swXSxiPXIuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXgtKHcudG9wLW0udG9wKSpuLnlSYXRpb1swXSk7dmFyIEE9e3hheGlzOnttaW46ZyxtYXg6cH0seWF4aXM6e21pbjpmLG1heDpifX07ci5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihzLmN0eCxBKSxyLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiZyLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZCE9PXZvaWQgMCYmci5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQocy5jdHgsQSl9LGgpKX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3blwiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuY29udGV4dCxzPWkuem9vbXR5cGUscj10aGlzLncsbj1hLG89dGhpcy54eVJhdGlvcyxoPXRoaXMuY3R4LnRvb2xiYXI7aWYobi5zdGFydFg+bi5lbmRYKXt2YXIgYz1uLnN0YXJ0WDtuLnN0YXJ0WD1uLmVuZFgsbi5lbmRYPWN9aWYobi5zdGFydFk+bi5lbmRZKXt2YXIgZD1uLnN0YXJ0WTtuLnN0YXJ0WT1uLmVuZFksbi5lbmRZPWR9dmFyIGc9dm9pZCAwLHA9dm9pZCAwO3IuZ2xvYmFscy5pc1JhbmdlQmFyPyhnPXIuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rbi5zdGFydFgqby5pbnZlcnRlZFlSYXRpbyxwPXIuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rbi5lbmRYKm8uaW52ZXJ0ZWRZUmF0aW8pOihnPXIuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rbi5zdGFydFgqby54UmF0aW8scD1yLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK24uZW5kWCpvLnhSYXRpbyk7dmFyIGY9W10sYj1bXTtpZihyLmNvbmZpZy55YXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGssUyl7Zi5wdXNoKHIuZ2xvYmFscy55QXhpc1NjYWxlW1NdLm5pY2VNYXgtby55UmF0aW9bU10qbi5zdGFydFkpLGIucHVzaChyLmdsb2JhbHMueUF4aXNTY2FsZVtTXS5uaWNlTWF4LW8ueVJhdGlvW1NdKm4uZW5kWSl9KSxuLmRyYWdnZWQmJihuLmRyYWdYPjEwfHxuLmRyYWdZPjEwKSYmZyE9PXApe2lmKHIuZ2xvYmFscy56b29tRW5hYmxlZCl7dmFyIG09UC5jbG9uZShyLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyksdz1QLmNsb25lKHIuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzKTtpZihyLmdsb2JhbHMuem9vbWVkPSEwLHIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGc9TWF0aC5mbG9vcihnKSxwPU1hdGguZmxvb3IocCksZzwxJiYoZz0xLHA9ci5nbG9iYWxzLmRhdGFQb2ludHMpLHAtZzwyJiYocD1nKzEpKSxzIT09XCJ4eVwiJiZzIT09XCJ4XCJ8fCh3PXttaW46ZyxtYXg6cH0pLHMhPT1cInh5XCImJnMhPT1cInlcInx8bS5mb3JFYWNoKGZ1bmN0aW9uKGssUyl7bVtTXS5taW49YltTXSxtW1NdLm1heD1mW1NdfSksci5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyl7dmFyIEE9bmV3IGtlKG4uY3R4KTttPUEuYXV0b1NjYWxlWShuLmN0eCxtLHt4YXhpczp3fSl9aWYoaCl7dmFyIGw9aC5nZXRCZWZvcmVab29tUmFuZ2UodyxtKTtsJiYodz1sLnhheGlzP2wueGF4aXM6dyxtPWwueWF4aXM/bC55YXhpczptKX12YXIgdT17eGF4aXM6d307ci5jb25maWcuY2hhcnQuZ3JvdXB8fCh1LnlheGlzPW0pLG4uY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModSwhMSxuLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0eXBlb2Ygci5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZD09XCJmdW5jdGlvblwiJiZoLnpvb21DYWxsYmFjayh3LG0pfWVsc2UgaWYoci5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpe3ZhciB4LHY9bnVsbDt4PXttaW46ZyxtYXg6cH0scyE9PVwieHlcIiYmcyE9PVwieVwifHwodj1QLmNsb25lKHIuY29uZmlnLnlheGlzKSkuZm9yRWFjaChmdW5jdGlvbihrLFMpe3ZbU10ubWluPWJbU10sdltTXS5tYXg9ZltTXX0pLHIuZ2xvYmFscy5zZWxlY3Rpb249bi5zZWxlY3Rpb24sdHlwZW9mIHIuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249PVwiZnVuY3Rpb25cIiYmci5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihuLmN0eCx7eGF4aXM6eCx5YXhpczp2fSl9fX19LHtrZXk6XCJwYW5EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuY29udGV4dCxzPXRoaXMudyxyPWE7aWYocy5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54IT09dm9pZCAwKXt2YXIgbj1zLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngtci5jbGllbnRYLG89cy5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi55LXIuY2xpZW50WTtNYXRoLmFicyhuKT5NYXRoLmFicyhvKSYmbj4wP3RoaXMubW92ZURpcmVjdGlvbj1cImxlZnRcIjpNYXRoLmFicyhuKT5NYXRoLmFicyhvKSYmbjwwP3RoaXMubW92ZURpcmVjdGlvbj1cInJpZ2h0XCI6TWF0aC5hYnMobyk+TWF0aC5hYnMobikmJm8+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJ1cFwiOk1hdGguYWJzKG8pPk1hdGguYWJzKG4pJiZvPDAmJih0aGlzLm1vdmVEaXJlY3Rpb249XCJkb3duXCIpfXMuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb249e3g6ci5jbGllbnRYLHk6ci5jbGllbnRZfTt2YXIgaD1zLmdsb2JhbHMuaXNSYW5nZUJhcj9zLmdsb2JhbHMubWluWTpzLmdsb2JhbHMubWluWCxjPXMuZ2xvYmFscy5pc1JhbmdlQmFyP3MuZ2xvYmFscy5tYXhZOnMuZ2xvYmFscy5tYXhYO3MuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8ci5wYW5TY3JvbGxlZChoLGMpfX0se2tleTpcImRlbGF5ZWRQYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLm1pblgscz1pLmdsb2JhbHMubWF4WCxyPShpLmdsb2JhbHMubWF4WC1pLmdsb2JhbHMubWluWCkvMjt0aGlzLm1vdmVEaXJlY3Rpb249PT1cImxlZnRcIj8oYT1pLmdsb2JhbHMubWluWCtyLHM9aS5nbG9iYWxzLm1heFgrcik6dGhpcy5tb3ZlRGlyZWN0aW9uPT09XCJyaWdodFwiJiYoYT1pLmdsb2JhbHMubWluWC1yLHM9aS5nbG9iYWxzLm1heFgtciksYT1NYXRoLmZsb29yKGEpLHM9TWF0aC5mbG9vcihzKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoe3hheGlzOnttaW46YSxtYXg6c319LGEscyl9fSx7a2V5OlwicGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbihpLGEpe3ZhciBzPXRoaXMudyxyPXRoaXMueHlSYXRpb3Msbj1QLmNsb25lKHMuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxvPXIueFJhdGlvLGg9cy5nbG9iYWxzLm1pblgsYz1zLmdsb2JhbHMubWF4WDtzLmdsb2JhbHMuaXNSYW5nZUJhciYmKG89ci5pbnZlcnRlZFlSYXRpbyxoPXMuZ2xvYmFscy5taW5ZLGM9cy5nbG9iYWxzLm1heFkpLHRoaXMubW92ZURpcmVjdGlvbj09PVwibGVmdFwiPyhpPWgrcy5nbG9iYWxzLmdyaWRXaWR0aC8xNSpvLGE9YytzLmdsb2JhbHMuZ3JpZFdpZHRoLzE1Km8pOnRoaXMubW92ZURpcmVjdGlvbj09PVwicmlnaHRcIiYmKGk9aC1zLmdsb2JhbHMuZ3JpZFdpZHRoLzE1Km8sYT1jLXMuZ2xvYmFscy5ncmlkV2lkdGgvMTUqbykscy5nbG9iYWxzLmlzUmFuZ2VCYXJ8fChpPHMuZ2xvYmFscy5pbml0aWFsTWluWHx8YT5zLmdsb2JhbHMuaW5pdGlhbE1heFgpJiYoaT1oLGE9Yyk7dmFyIGQ9e21pbjppLG1heDphfTtzLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYobj1uZXcga2UodGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsbix7eGF4aXM6ZH0pKTt2YXIgZz17eGF4aXM6e21pbjppLG1heDphfX07cy5jb25maWcuY2hhcnQuZ3JvdXB8fChnLnlheGlzPW4pLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydChnLGksYSl9fSx7a2V5OlwidXBkYXRlU2Nyb2xsZWRDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKGksYSxzKXt2YXIgcj10aGlzLnc7dGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyhpLCExLCExKSx0eXBlb2Ygci5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkPT1cImZ1bmN0aW9uXCImJnIuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCh0aGlzLmN0eCx7eGF4aXM6e21pbjphLG1heDpzfX0pfX1dKSx0fSgpLHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHh9cmV0dXJuIFkoeSxbe2tleTpcImdldE5lYXJlc3RWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmhvdmVyQXJlYSxpPWUuZWxHcmlkLGE9ZS5jbGllbnRYLHM9ZS5jbGllbnRZLHI9dGhpcy53LG49aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPW4ud2lkdGgsaD1uLmhlaWdodCxjPW8vKHIuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLGQ9aC9yLmdsb2JhbHMuZGF0YVBvaW50cyxnPXRoaXMuaGFzQmFycygpOyFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFnfHxyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fChjPW8vci5nbG9iYWxzLmRhdGFQb2ludHMpO3ZhciBwPWEtbi5sZWZ0LXIuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxmPXMtbi50b3A7cDwwfHxmPDB8fHA+b3x8Zj5oPyh0LmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy16b29tXCIpLHQuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSk6ci5nbG9iYWxzLnpvb21FbmFibGVkPyh0LmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIiksdC5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctem9vbVwiKSk6ci5nbG9iYWxzLnBhbkVuYWJsZWQmJih0LmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy16b29tXCIpLHQuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXBhblwiKSk7dmFyIGI9TWF0aC5yb3VuZChwL2MpLG09TWF0aC5mbG9vcihmL2QpO2cmJiFyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihiPU1hdGguY2VpbChwL2MpLGItPTEpO3ZhciB3PW51bGwsQT1udWxsLGw9ci5nbG9iYWxzLnNlcmllc1h2YWx1ZXMubWFwKGZ1bmN0aW9uKFMpe3JldHVybiBTLmZpbHRlcihmdW5jdGlvbihDKXtyZXR1cm4gUC5pc051bWJlcihDKX0pfSksdT1yLmdsb2JhbHMuc2VyaWVzWXZhbHVlcy5tYXAoZnVuY3Rpb24oUyl7cmV0dXJuIFMuZmlsdGVyKGZ1bmN0aW9uKEMpe3JldHVybiBQLmlzTnVtYmVyKEMpfSl9KTtpZihyLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHg9dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PXAqKHgud2lkdGgvbyksaz1mKih4LmhlaWdodC9oKTt3PShBPXRoaXMuY2xvc2VzdEluTXVsdGlBcnJheSh2LGssbCx1KSkuaW5kZXgsYj1BLmosdyE9PW51bGwmJihsPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ddLGI9KEE9dGhpcy5jbG9zZXN0SW5BcnJheSh2LGwpKS5pbmRleCl9cmV0dXJuIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PXc9PT1udWxsPy0xOncsKCFifHxiPDEpJiYoYj0wKSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP3IuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PW06ci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9Yix7Y2FwdHVyZWRTZXJpZXM6dyxqOnIuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/bTpiLGhvdmVyWDpwLGhvdmVyWTpmfX19LHtrZXk6XCJjbG9zZXN0SW5NdWx0aUFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53LHI9MCxuPW51bGwsbz0tMTtzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xP3I9dGhpcy5nZXRGaXJzdEFjdGl2ZVhBcnJheShpKTpuPTA7dmFyIGg9aVtyXVswXSxjPU1hdGguYWJzKGUtaCk7aWYoaS5mb3JFYWNoKGZ1bmN0aW9uKHApe3AuZm9yRWFjaChmdW5jdGlvbihmLGIpe3ZhciBtPU1hdGguYWJzKGUtZik7bTw9YyYmKGM9bSxvPWIpfSl9KSxvIT09LTEpe3ZhciBkPWFbcl1bb10sZz1NYXRoLmFicyh0LWQpO249cixhLmZvckVhY2goZnVuY3Rpb24ocCxmKXt2YXIgYj1NYXRoLmFicyh0LXBbb10pO2I8PWcmJihnPWIsbj1mKX0pfXJldHVybntpbmRleDpuLGo6b319fSx7a2V5OlwiZ2V0Rmlyc3RBY3RpdmVYQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy53LGk9MCxhPWUubWFwKGZ1bmN0aW9uKHIsbil7cmV0dXJuIHIubGVuZ3RoPjA/bjotMX0pLHM9MDtzPGEubGVuZ3RoO3MrKylpZihhW3NdIT09LTEmJnQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocyk9PT0tMSYmdC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihzKT09PS0xKXtpPWFbc107YnJlYWt9cmV0dXJuIGl9fSx7a2V5OlwiY2xvc2VzdEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT10WzBdLGE9bnVsbCxzPU1hdGguYWJzKGUtaSkscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj1NYXRoLmFicyhlLXRbcl0pO248cyYmKHM9bixhPXIpfXJldHVybntpbmRleDphfX19LHtrZXk6XCJpc1hvdmVybGFwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9W10saT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLmZpbHRlcihmdW5jdGlvbihzKXtyZXR1cm4gc1swXSE9PXZvaWQgMH0pO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aC0xO2ErKylpW2FdW2VdIT09dm9pZCAwJiZpW2ErMV1bZV0hPT12b2lkIDAmJmlbYV1bZV0hPT1pW2ErMV1bZV0mJnQucHVzaChcInVuRXF1YWxcIik7cmV0dXJuIHQubGVuZ3RoPT09MH19LHtrZXk6XCJpc0luaXRpYWxTZXJpZXNTYW1lTGVuXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ITAsdD10aGlzLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzLGk9MDtpPHQubGVuZ3RoLTE7aSsrKWlmKHRbaV0uZGF0YS5sZW5ndGghPT10W2krMV0uZGF0YS5sZW5ndGgpe2U9ITE7YnJlYWt9cmV0dXJuIGV9fSx7a2V5OlwiZ2V0QmFyc0hlaWdodFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBRKGUpLnJlZHVjZShmdW5jdGlvbih0LGkpe3JldHVybiB0K2kuZ2V0QkJveCgpLmhlaWdodH0sMCl9fSx7a2V5OlwiZ2V0RWxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1cIm51bWJlclwiP3RoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIikpOnRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpfX0se2tleTpcImdldEFsbE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7KGU9UShlKSkuc29ydChmdW5jdGlvbihpLGEpe3ZhciBzPU51bWJlcihpLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKSxyPU51bWJlcihhLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKTtyZXR1cm4gcjxzPzE6cj5zPy0xOjB9KTt2YXIgdD1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3QucHVzaChpLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1tYXJrZXJcIikpfSksdH19LHtrZXk6XCJoYXNNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0RWxNYXJrZXJzKGUpLmxlbmd0aD4wfX0se2tleTpcImdldEVsQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMsICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMsIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXNcIil9fSx7a2V5OlwiaGFzQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxCYXJzKCkubGVuZ3RoPjB9fSx7a2V5OlwiZ2V0SG92ZXJNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dC5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3JldHVybiBpPT09dm9pZCAwJiYoaT10Lmdsb2JhbHMubWFya2Vycy5zaXplW2VdK3QuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksaX19LHtrZXk6XCJ0b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dGhpcy50dEN0eDtpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMubGVuZ3RoPT09MCYmKGkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIikpO2Zvcih2YXIgYT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMscz0wO3M8YS5sZW5ndGg7cysrKWU9PT1cImVuYWJsZVwiPyhhW3NdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxhW3NdLnN0eWxlLmRpc3BsYXk9dC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KTooYVtzXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKX19XSkseX0oKSx6dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5jdHg9ZS5jdHgsdGhpcy50dEN0eD1lLHRoaXMudG9vbHRpcFV0aWw9bmV3IHN0KGUpfXJldHVybiBZKHksW3trZXk6XCJkcmF3U2VyaWVzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNoYXJlZCxpPXQ9PT12b2lkIDB8fHQsYT1lLnR0SXRlbXMscz1lLmkscj1zPT09dm9pZCAwPzA6cyxuPWUuaixvPW49PT12b2lkIDA/bnVsbDpuLGg9ZS55MSxjPWUueTIsZD1lLmUsZz10aGlzLnc7Zy5jb25maWcudG9vbHRpcC5jdXN0b20hPT12b2lkIDA/dGhpcy5oYW5kbGVDdXN0b21Ub29sdGlwKHtpOnIsajpvLHkxOmgseTI6Yyx3Omd9KTp0aGlzLnRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzKGkpO3ZhciBwPXRoaXMuZ2V0VmFsdWVzVG9QcmludCh7aTpyLGo6b30pO3RoaXMucHJpbnRMYWJlbHMoe2k6cixqOm8sdmFsdWVzOnAsdHRJdGVtczphLHNoYXJlZDppLGU6ZH0pO3ZhciBmPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCk7dGhpcy50dEN0eC50b29sdGlwUmVjdC50dFdpZHRoPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdGhpcy50dEN0eC50b29sdGlwUmVjdC50dEhlaWdodD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH19LHtrZXk6XCJwcmludExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxhPWUuaSxzPWUuaixyPWUudmFsdWVzLG49ZS50dEl0ZW1zLG89ZS5zaGFyZWQsaD1lLmUsYz10aGlzLncsZD1bXSxnPWZ1bmN0aW9uKHgpe3JldHVybiBjLmdsb2JhbHMuc2VyaWVzR29hbHNbeF0mJmMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t4XVtzXSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbeF1bc10pfSxwPXIueFZhbCxmPXIuelZhbCxiPXIueEF4aXNUVFZhbCxtPVwiXCIsdz1jLmdsb2JhbHMuY29sb3JzW2FdO3MhPT1udWxsJiZjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJih3PWMuZ2xvYmFscy5jb2xvcnNbc10pO2Zvcih2YXIgQT1mdW5jdGlvbih4LHYpe3ZhciBrPWkuZ2V0Rm9ybWF0dGVycyhhKTttPWkuZ2V0U2VyaWVzTmFtZSh7Zm46ay55TGJUaXRsZUZvcm1hdHRlcixpbmRleDphLHNlcmllc0luZGV4OmEsajpzfSksYy5jb25maWcuY2hhcnQudHlwZT09PVwidHJlZW1hcFwiJiYobT1rLnlMYlRpdGxlRm9ybWF0dGVyKFN0cmluZyhjLmNvbmZpZy5zZXJpZXNbYV0uZGF0YVtzXS54KSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpzLHc6Y30pKTt2YXIgUz1jLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj92Ong7aWYoYy5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciBDPWZ1bmN0aW9uKHope3ZhciBULEUsUixPO3JldHVybiBjLmdsb2JhbHMuaXNSYW5nZURhdGE/ay55TGJGb3JtYXR0ZXIoKFQ9Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQpPT09bnVsbHx8VD09PXZvaWQgMHx8KEU9VFt6XSk9PT1udWxsfHxFPT09dm9pZCAwP3ZvaWQgMDpFW3NdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsc2VyaWVzSW5kZXg6eixkYXRhUG9pbnRJbmRleDpzLHc6Y30pK1wiIC0gXCIray55TGJGb3JtYXR0ZXIoKFI9Yy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kKT09PW51bGx8fFI9PT12b2lkIDB8fChPPVJbel0pPT09bnVsbHx8Tz09PXZvaWQgMD92b2lkIDA6T1tzXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCxzZXJpZXNJbmRleDp6LGRhdGFQb2ludEluZGV4OnMsdzpjfSk6ay55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1t6XVtzXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6eixkYXRhUG9pbnRJbmRleDpzLHc6Y30pfTtpZihvKWs9aS5nZXRGb3JtYXR0ZXJzKFMpLG09aS5nZXRTZXJpZXNOYW1lKHtmbjprLnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4OlMsc2VyaWVzSW5kZXg6YSxqOnN9KSx3PWMuZ2xvYmFscy5jb2xvcnNbU10sdD1DKFMpLGcoUykmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tTXVtzXS5tYXAoZnVuY3Rpb24oeil7cmV0dXJue2F0dHJzOnosdmFsOmsueUxiRm9ybWF0dGVyKHoudmFsdWUse3Nlcmllc0luZGV4OlMsZGF0YVBvaW50SW5kZXg6cyx3OmN9KX19KSk7ZWxzZXt2YXIgTCxJPWg9PW51bGx8fChMPWgudGFyZ2V0KT09PW51bGx8fEw9PT12b2lkIDA/dm9pZCAwOkwuZ2V0QXR0cmlidXRlKFwiZmlsbFwiKTtJJiYodz1JLmluZGV4T2YoXCJ1cmxcIikhPT0tMT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKEkuc3Vic3RyKDQpLnNsaWNlKDAsLTEpKS5jaGlsZE5vZGVzWzBdLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTpJKSx0PUMoYSksZyhhKSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10ubWFwKGZ1bmN0aW9uKHope3JldHVybnthdHRyczp6LHZhbDprLnlMYkZvcm1hdHRlcih6LnZhbHVlLHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnMsdzpjfSl9fSkpfX1zPT09bnVsbCYmKHQ9ay55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1thXSxYKFgoe30sYykse30se3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6YX0pKSksaS5ET01IYW5kbGluZyh7aTphLHQ6UyxqOnMsdHRJdGVtczpuLHZhbHVlczp7dmFsOnQsZ29hbFZhbHM6ZCx4VmFsOnAseEF4aXNUVFZhbDpiLHpWYWw6Zn0sc2VyaWVzTmFtZTptLHNoYXJlZDpvLHBDb2xvcjp3fSl9LGw9MCx1PWMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTE7bDxjLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtsKyssdS0tKUEobCx1KX19LHtrZXk6XCJnZXRGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLncsYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1tlXTtyZXR1cm4gaS5nbG9iYWxzLnR0VmFsIT09dm9pZCAwP0FycmF5LmlzQXJyYXkoaS5nbG9iYWxzLnR0VmFsKT8oYT1pLmdsb2JhbHMudHRWYWxbZV0mJmkuZ2xvYmFscy50dFZhbFtlXS5mb3JtYXR0ZXIsdD1pLmdsb2JhbHMudHRWYWxbZV0mJmkuZ2xvYmFscy50dFZhbFtlXS50aXRsZSYmaS5nbG9iYWxzLnR0VmFsW2VdLnRpdGxlLmZvcm1hdHRlcik6KGE9aS5nbG9iYWxzLnR0VmFsLmZvcm1hdHRlcix0eXBlb2YgaS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlcj09XCJmdW5jdGlvblwiJiYodD1pLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyKSk6dD1pLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLHR5cGVvZiBhIT1cImZ1bmN0aW9uXCImJihhPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdP2kuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdOmZ1bmN0aW9uKHMpe3JldHVybiBzfSksdHlwZW9mIHQhPVwiZnVuY3Rpb25cIiYmKHQ9ZnVuY3Rpb24ocyl7cmV0dXJuIHN9KSx7eUxiRm9ybWF0dGVyOmEseUxiVGl0bGVGb3JtYXR0ZXI6dH19fSx7a2V5OlwiZ2V0U2VyaWVzTmFtZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZm4saT1lLmluZGV4LGE9ZS5zZXJpZXNJbmRleCxzPWUuaixyPXRoaXMudztyZXR1cm4gdChTdHJpbmcoci5nbG9iYWxzLnNlcmllc05hbWVzW2ldKSx7c2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpzLHc6cn0pfX0se2tleTpcIkRPTUhhbmRsaW5nXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5pO3ZhciB0PWUudCxpPWUuaixhPWUudHRJdGVtcyxzPWUudmFsdWVzLHI9ZS5zZXJpZXNOYW1lLG49ZS5zaGFyZWQsbz1lLnBDb2xvcixoPXRoaXMudyxjPXRoaXMudHRDdHgsZD1zLnZhbCxnPXMuZ29hbFZhbHMscD1zLnhWYWwsZj1zLnhBeGlzVFRWYWwsYj1zLnpWYWwsbT1udWxsO209YVt0XS5jaGlsZHJlbixoLmNvbmZpZy50b29sdGlwLmZpbGxTZXJpZXNDb2xvciYmKGFbdF0uc3R5bGUuYmFja2dyb3VuZENvbG9yPW8sbVswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKSxjLnNob3dUb29sdGlwVGl0bGUmJihjLnRvb2x0aXBUaXRsZT09PW51bGwmJihjLnRvb2x0aXBUaXRsZT1oLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSksYy50b29sdGlwVGl0bGUuaW5uZXJIVE1MPXApLGMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiYoYy54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTD1mIT09XCJcIj9mOnApO3ZhciB3PWFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsXCIpO3cmJih3LmlubmVySFRNTD1yfHxcIlwiKTt2YXIgQT1hW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZVwiKTtBJiYoQS5pbm5lckhUTUw9ZCE9PXZvaWQgMD9kOlwiXCIpLG1bMF0mJm1bMF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSYmKGguY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMmJkFycmF5LmlzQXJyYXkoaC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycykmJihvPWguY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnNbdF0pLG1bMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yPW8pLGguY29uZmlnLnRvb2x0aXAubWFya2VyLnNob3d8fChtWzBdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpO3ZhciBsPWFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbFwiKSx1PWFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZVwiKTtpZihnLmxlbmd0aCYmaC5nbG9iYWxzLnNlcmllc0dvYWxzW3RdKXt2YXIgeD1mdW5jdGlvbigpe3ZhciBTPVwiPGRpdiA+XCIsQz1cIjxkaXY+XCI7Zy5mb3JFYWNoKGZ1bmN0aW9uKEwsSSl7Uys9JyA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPjxzcGFuIGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJy5jb25jYXQoTC5hdHRycy5zdHJva2VDb2xvciwnOyBoZWlnaHQ6IDNweDsgYm9yZGVyLXJhZGl1czogMDsgdG9wOiA1cHg7XCI+PC9zcGFuPiAnKS5jb25jYXQoTC5hdHRycy5uYW1lLFwiPC9kaXY+XCIpLEMrPVwiPGRpdj5cIi5jb25jYXQoTC52YWwsXCI8L2Rpdj5cIil9KSxsLmlubmVySFRNTD1TK1wiPC9kaXY+XCIsdS5pbm5lckhUTUw9QytcIjwvZGl2PlwifTtuP2guZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVtpXSYmQXJyYXkuaXNBcnJheShoLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1baV0pP3goKToobC5pbm5lckhUTUw9XCJcIix1LmlubmVySFRNTD1cIlwiKTp4KCl9ZWxzZSBsLmlubmVySFRNTD1cIlwiLHUuaW5uZXJIVE1MPVwiXCI7aWYoYiE9PW51bGwmJihhW3RdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbFwiKS5pbm5lckhUTUw9aC5jb25maWcudG9vbHRpcC56LnRpdGxlLGFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlXCIpLmlubmVySFRNTD1iIT09dm9pZCAwP2I6XCJcIiksbiYmbVswXSl7aWYoaC5jb25maWcudG9vbHRpcC5oaWRlRW1wdHlTZXJpZXMpe3ZhciB2PWFbdF0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpLGs9YVt0XS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0XCIpO3BhcnNlRmxvYXQoZCk9PTA/KHYuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixrLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpOih2LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiLGsuc3R5bGUuZGlzcGxheT1cImJsb2NrXCIpfWQ9PW51bGx8fGguZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTF8fGguZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTE/bVswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJub25lXCI6bVswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9aC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5fX19LHtrZXk6XCJ0b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudztpZihlKXRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImVuYWJsZVwiKTtlbHNle3RoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImRpc2FibGVcIik7dmFyIGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpO2kmJihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnN0eWxlLmRpc3BsYXk9dC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19fSx7a2V5OlwiZ2V0VmFsdWVzVG9QcmludFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaSxpPWUuaixhPXRoaXMudyxzPXRoaXMuY3R4LnNlcmllcy5maWx0ZXJlZFNlcmllc1goKSxyPVwiXCIsbj1cIlwiLG89bnVsbCxoPW51bGwsYz17c2VyaWVzOmEuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDppLHc6YX0sZD1hLmdsb2JhbHMudHRaRm9ybWF0dGVyO2k9PT1udWxsP2g9YS5nbG9iYWxzLnNlcmllc1t0XTphLmdsb2JhbHMuaXNYTnVtZXJpYyYmYS5jb25maWcuY2hhcnQudHlwZSE9PVwidHJlZW1hcFwiPyhyPXNbdF1baV0sc1t0XS5sZW5ndGg9PT0wJiYocj1zW3RoaXMudG9vbHRpcFV0aWwuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkocyldW2ldKSk6cj1hLmdsb2JhbHMubGFiZWxzW2ldIT09dm9pZCAwP2EuZ2xvYmFscy5sYWJlbHNbaV06XCJcIjt2YXIgZz1yO3JldHVybiBhLmdsb2JhbHMuaXNYTnVtZXJpYyYmYS5jb25maWcueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIj9yPW5ldyBuZSh0aGlzLmN0eCkueExhYmVsRm9ybWF0KGEuZ2xvYmFscy50dEtleUZvcm1hdHRlcixnLGcse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEIodGhpcy5jdHgpLmZvcm1hdERhdGUsdzp0aGlzLnd9KTpyPWEuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/YS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oZyxjKTphLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyKGcsYyksYS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlciE9PXZvaWQgMCYmKHI9YS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyKGcsYykpLGEuZ2xvYmFscy5zZXJpZXNaLmxlbmd0aD4wJiZhLmdsb2JhbHMuc2VyaWVzWlt0XS5sZW5ndGg+MCYmKG89ZChhLmdsb2JhbHMuc2VyaWVzWlt0XVtpXSxhKSksbj10eXBlb2YgYS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXI9PVwiZnVuY3Rpb25cIj9hLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyKGcsYyk6cix7dmFsOkFycmF5LmlzQXJyYXkoaCk/aC5qb2luKFwiIFwiKTpoLHhWYWw6QXJyYXkuaXNBcnJheShyKT9yLmpvaW4oXCIgXCIpOnIseEF4aXNUVFZhbDpBcnJheS5pc0FycmF5KG4pP24uam9pbihcIiBcIik6bix6VmFsOm99fX0se2tleTpcImhhbmRsZUN1c3RvbVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmksaT1lLmosYT1lLnkxLHM9ZS55MixyPWUudyxuPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCksbz1yLmNvbmZpZy50b29sdGlwLmN1c3RvbTtBcnJheS5pc0FycmF5KG8pJiZvW3RdJiYobz1vW3RdKSxuLmlubmVySFRNTD1vKHtjdHg6dGhpcy5jdHgsc2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDppLHkxOmEseTI6cyx3OnJ9KX19XSkseX0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnc9ZS53fXJldHVybiBZKHksW3trZXk6XCJtb3ZlWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudHRDdHgsYT10aGlzLncscz1pLmdldEVsWENyb3NzaGFpcnMoKSxyPWUtaS54Y3Jvc3NoYWlyc1dpZHRoLzIsbj1hLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkubGVuZ3RoO2lmKHQhPT1udWxsJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoL24qdCkscz09PW51bGx8fGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChzLnNldEF0dHJpYnV0ZShcInhcIixyKSxzLnNldEF0dHJpYnV0ZShcIngxXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MlwiLHIpLHMuc2V0QXR0cmlidXRlKFwieTJcIixhLmdsb2JhbHMuZ3JpZEhlaWdodCkscy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikpLHI8MCYmKHI9MCkscj5hLmdsb2JhbHMuZ3JpZFdpZHRoJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoKSxpLmlzWEF4aXNUb29sdGlwRW5hYmxlZCl7dmFyIG89cjthLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoIT09XCJ0aWNrV2lkdGhcIiYmYS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCE9PVwiYmFyV2lkdGhcInx8KG89citpLnhjcm9zc2hhaXJzV2lkdGgvMiksdGhpcy5tb3ZlWEF4aXNUb29sdGlwKG8pfX19LHtrZXk6XCJtb3ZlWUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnR0Q3R4O3QueWNyb3NzaGFpcnMhPT1udWxsJiZNLnNldEF0dHJzKHQueWNyb3NzaGFpcnMse3kxOmUseTI6ZX0pLHQueWNyb3NzaGFpcnNIaWRkZW4hPT1udWxsJiZNLnNldEF0dHJzKHQueWNyb3NzaGFpcnNIaWRkZW4se3kxOmUseTI6ZX0pfX0se2tleTpcIm1vdmVYQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10aGlzLnR0Q3R4O2lmKGkueGF4aXNUb29sdGlwIT09bnVsbCYmaS54Y3Jvc3NoYWlyc1dpZHRoIT09MCl7aS54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciBhPWkueGF4aXNPZmZZK3QuY29uZmlnLnhheGlzLnRvb2x0aXAub2Zmc2V0WSt0Lmdsb2JhbHMudHJhbnNsYXRlWSsxK3QuY29uZmlnLnhheGlzLm9mZnNldFk7aWYoZS09aS54YXhpc1Rvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgvMiwhaXNOYU4oZSkpe2UrPXQuZ2xvYmFscy50cmFuc2xhdGVYO3ZhciBzO3M9bmV3IE0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MKSxpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGg9cy53aWR0aCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdD1lK1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9YStcInB4XCJ9fX19LHtrZXk6XCJtb3ZlWUF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9dGhpcy50dEN0eDtpLnlheGlzVFRFbHM9PT1udWxsJiYoaS55YXhpc1RURWxzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO3ZhciBhPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKFwieTFcIiksMTApLHM9dC5nbG9iYWxzLnRyYW5zbGF0ZVkrYSxyPWkueWF4aXNUVEVsc1tlXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsbj10Lmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2VdLTI7dC5jb25maWcueWF4aXNbZV0ub3Bwb3NpdGUmJihuLT0yNikscy09ci8yLHQuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKT09PS0xPyhpLnlheGlzVFRFbHNbZV0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGkueWF4aXNUVEVsc1tlXS5zdHlsZS50b3A9cytcInB4XCIsaS55YXhpc1RURWxzW2VdLnN0eWxlLmxlZnQ9bit0LmNvbmZpZy55YXhpc1tlXS50b29sdGlwLm9mZnNldFgrXCJweFwiKTppLnlheGlzVFRFbHNbZV0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfX0se2tleTpcIm1vdmVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPXRoaXMudHRDdHgscj1zLmdldEVsVG9vbHRpcCgpLG49cy50b29sdGlwUmVjdCxvPWkhPT1udWxsP3BhcnNlRmxvYXQoaSk6MSxoPXBhcnNlRmxvYXQoZSkrbys1LGM9cGFyc2VGbG9hdCh0KStvLzI7aWYoaD5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihoPWgtbi50dFdpZHRoLW8tMTApLGg+YS5nbG9iYWxzLmdyaWRXaWR0aC1uLnR0V2lkdGgtMTAmJihoPWEuZ2xvYmFscy5ncmlkV2lkdGgtbi50dFdpZHRoKSxoPC0yMCYmKGg9LTIwKSxhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGQ9cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsoaD1zLmUuY2xpZW50WC1kLmxlZnQpPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGgtPXMudG9vbHRpcFJlY3QudHRXaWR0aCksKGM9cy5lLmNsaWVudFkrYS5nbG9iYWxzLnRyYW5zbGF0ZVktZC50b3ApPmEuZ2xvYmFscy5ncmlkSGVpZ2h0LzImJihjLT1zLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KX1lbHNlIGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fG4udHRIZWlnaHQvMitjPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoYz1hLmdsb2JhbHMuZ3JpZEhlaWdodC1uLnR0SGVpZ2h0K2EuZ2xvYmFscy50cmFuc2xhdGVZKTtpc05hTihoKXx8KGgrPWEuZ2xvYmFscy50cmFuc2xhdGVYLHIuc3R5bGUubGVmdD1oK1wicHhcIixyLnN0eWxlLnRvcD1jK1wicHhcIil9fSx7a2V5OlwibW92ZU1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHg7aWYoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXT4wKWZvcih2YXIgcz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpKSxyPTA7cjxzLmxlbmd0aDtyKyspcGFyc2VJbnQoc1tyXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApPT09dCYmKGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLGEubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQodCxzW3JdKSk7ZWxzZSBhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKHQsZSl9fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludE9uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpLGEscz10aGlzLncscj10aGlzLnR0Q3R4LG49cy5nbG9iYWxzLnBvaW50c0FycmF5LG89ci50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUodCksaD1zLmNvbmZpZy5zZXJpZXNbdF0udHlwZTtpZighaHx8aCE9PVwiY29sdW1uXCImJmghPT1cImNhbmRsZXN0aWNrXCImJmghPT1cImJveFBsb3RcIil7aT1uW3RdW2VdWzBdLGE9blt0XVtlXVsxXT9uW3RdW2VdWzFdOjA7dmFyIGM9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgY2lyY2xlXCIpKTtjJiZhPHMuZ2xvYmFscy5ncmlkSGVpZ2h0JiZhPjAmJihjLnNldEF0dHJpYnV0ZShcInJcIixvKSxjLnNldEF0dHJpYnV0ZShcImN4XCIsaSksYy5zZXRBdHRyaWJ1dGUoXCJjeVwiLGEpKSx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhpKSxyLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChpLGEsbyl9fX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy50dEN0eCxhPWkudyxzPTAscj0wLG49YS5nbG9iYWxzLnBvaW50c0FycmF5O3Q9bmV3IGllKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleChcImFzY1wiLFtcImxpbmVcIixcImFyZWFcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXSk7dmFyIG89aS50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUodCk7blt0XSYmKHM9blt0XVtlXVswXSxyPW5bdF1bZV1bMV0pO3ZhciBoPWkudG9vbHRpcFV0aWwuZ2V0QWxsTWFya2VycygpO2lmKGghPT1udWxsKWZvcih2YXIgYz0wO2M8YS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7YysrKXt2YXIgZD1uW2NdO2lmKGEuZ2xvYmFscy5jb21ib0NoYXJ0cyYmZD09PXZvaWQgMCYmaC5zcGxpY2UoYywwLG51bGwpLGQmJmQubGVuZ3RoKXt2YXIgZz1uW2NdW2VdWzFdLHA9dm9pZCAwO2lmKGhbY10uc2V0QXR0cmlidXRlKFwiY3hcIixzKSxhLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYW5nZUFyZWFcIiYmIWEuZ2xvYmFscy5jb21ib0NoYXJ0cyl7dmFyIGY9ZSthLmdsb2JhbHMuc2VyaWVzW2NdLmxlbmd0aDtwPW5bY11bZl1bMV0sZy09TWF0aC5hYnMoZy1wKS8yfWchPT1udWxsJiYhaXNOYU4oZykmJmc8YS5nbG9iYWxzLmdyaWRIZWlnaHQrbyYmZytvPjA/KGhbY10mJmhbY10uc2V0QXR0cmlidXRlKFwiclwiLG8pLGhbY10mJmhbY10uc2V0QXR0cmlidXRlKFwiY3lcIixnKSk6aFtjXSYmaFtjXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fXRoaXMubW92ZVhDcm9zc2hhaXJzKHMpLGkuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKHMscnx8YS5nbG9iYWxzLmdyaWRIZWlnaHQsbyl9fSx7a2V5OlwibW92ZVN0aWNreVRvb2x0aXBPdmVyQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9dGhpcy50dEN0eCxzPWkuZ2xvYmFscy5jb2x1bW5TZXJpZXM/aS5nbG9iYWxzLmNvbHVtblNlcmllcy5sZW5ndGg6aS5nbG9iYWxzLnNlcmllcy5sZW5ndGgscj1zPj0yJiZzJTI9PTA/TWF0aC5mbG9vcihzLzIpOk1hdGguZmxvb3Iocy8yKSsxO2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihyPW5ldyBpZSh0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIpKzEpO3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KGUsXCInXSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKTtufHx0eXBlb2YgdCE9XCJudW1iZXJcInx8KG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxgJ10sXG4gICAgICAgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdgKS5jb25jYXQodCxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdChlLGAnXSxcbiAgICAgICAgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nYCkuY29uY2F0KHQsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQoZSxgJ10sXG4gICAgICAgIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdgKS5jb25jYXQodCxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ11cIikpKTt2YXIgbz1uP3BhcnNlRmxvYXQobi5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk6MCxoPW4/cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcImN5XCIpKTowLGM9bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpOjAsZD1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9biYmKG4uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxuLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpKTtpLmdsb2JhbHMuaXNYTnVtZXJpYz8obiYmIWcmJihvLT1zJTIhPTA/Yy8yOjApLG4mJmcmJmkuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG8tPWMvMikpOmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChvPWEueEF4aXNUaWNrc1Bvc2l0aW9uc1tlLTFdK2EuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yLGlzTmFOKG8pJiYobz1hLnhBeGlzVGlja3NQb3NpdGlvbnNbZV0tYS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIpKSxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2gtPWEudG9vbHRpcFJlY3QudHRIZWlnaHQ6aS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/aD1hLmUuY2xpZW50WS1kLnRvcC1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzI6aCthLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KzE1PmkuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD1pLmdsb2JhbHMuZ3JpZEhlaWdodCksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5tb3ZlWENyb3NzaGFpcnMobyksYS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAobyxofHxpLmdsb2JhbHMuZ3JpZEhlaWdodCl9fV0pLHl9KCksTXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgcnQoZSl9cmV0dXJuIFkoeSxbe2tleTpcImRyYXdEeW5hbWljUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1uZXcgTSh0aGlzLmN0eCksaT1uZXcgVGUodGhpcy5jdHgpLGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTthPVEoYSksZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmYS5zb3J0KGZ1bmN0aW9uKGQsZyl7cmV0dXJuIHBhcnNlRmxvYXQoZC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSktcGFyc2VGbG9hdChnLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgcj1hW3NdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpO2lmKHIhPT1udWxsKXt2YXIgbj12b2lkIDAsbz1cImFwZXhjaGFydHMtbWFya2VyIHdcIi5jb25jYXQoKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KSk7ZS5jb25maWcuY2hhcnQudHlwZSE9PVwibGluZVwiJiZlLmNvbmZpZy5jaGFydC50eXBlIT09XCJhcmVhXCJ8fGUuZ2xvYmFscy5jb21ib0NoYXJ0c3x8ZS5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChvKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKTt2YXIgaD1pLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6byxzZXJpZXNJbmRleDpOdW1iZXIoci5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KTsobj10LmRyYXdNYXJrZXIoMCwwLGgpKS5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIiwwKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwiZ1wiKTtjLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCIpLGMuYXBwZW5kQ2hpbGQobi5ub2RlKSxyLmFwcGVuZENoaWxkKGMpfX19fSx7a2V5OlwiZW5sYXJnZUN1cnJlbnRQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGwsYT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106bnVsbCxzPXRoaXMudztzLmNvbmZpZy5jaGFydC50eXBlIT09XCJidWJibGVcIiYmdGhpcy5uZXdQb2ludFNpemUoZSx0KTt2YXIgcj10LmdldEF0dHJpYnV0ZShcImN4XCIpLG49dC5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpZihpIT09bnVsbCYmYSE9PW51bGwmJihyPWksbj1hKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMociksIXRoaXMuZml4ZWRUb29sdGlwKXtpZihzLmNvbmZpZy5jaGFydC50eXBlPT09XCJyYWRhclwiKXt2YXIgbz10aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3I9dGhpcy50dEN0eC5lLmNsaWVudFgtby5sZWZ0fXRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKHIsbixzLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUpfX19LHtrZXk6XCJlbmxhcmdlUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudyxpPXRoaXMsYT10aGlzLnR0Q3R4LHM9ZSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXM6bm90KC5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQpIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSxuPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBoPXJbb10uZ2V0QXR0cmlidXRlKFwicmVsXCIpLGM9cltvXS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKTtpZihuPT09dm9pZCAwJiYobj10Lmdsb2JhbHMubWFya2Vycy5zaXplW2NdK3QuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCkscz09PXBhcnNlSW50KGgsMTApKXtpLm5ld1BvaW50U2l6ZShzLHJbb10pO3ZhciBkPXJbb10uZ2V0QXR0cmlidXRlKFwiY3hcIiksZz1yW29dLmdldEF0dHJpYnV0ZShcImN5XCIpO2kudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhkKSxhLmZpeGVkVG9vbHRpcHx8aS50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAoZCxnLG4pfWVsc2UgaS5vbGRQb2ludFNpemUocltvXSl9fX0se2tleTpcIm5ld1BvaW50U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9aS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLHM9ZT09PTA/dC5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ6dC5wYXJlbnROb2RlLmxhc3RDaGlsZDtpZihzLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikhPT1cIjBcIil7dmFyIHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7YT09PXZvaWQgMCYmKGE9aS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtyXStpLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGE8MCYmKGE9MCkscy5zZXRBdHRyaWJ1dGUoXCJyXCIsYSl9fX0se2tleTpcIm9sZFBvaW50U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKTtlLnNldEF0dHJpYnV0ZShcInJcIix0KX19LHtrZXk6XCJyZXNldFBvaW50c1NpemVcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXM6bm90KC5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQpIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSx0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBpPXBhcnNlRmxvYXQoZVt0XS5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKTtQLmlzTnVtYmVyKGkpJiZpPj0wP2VbdF0uc2V0QXR0cmlidXRlKFwiclwiLGkpOmVbdF0uc2V0QXR0cmlidXRlKFwiclwiLDApfX19XSkseX0oKSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLnc7dmFyIHQ9dGhpcy53O3RoaXMudHRDdHg9ZSx0aGlzLmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI9IXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnQuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInJhbmdlQmFyXCImJnQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93c31yZXR1cm4gWSh5LFt7a2V5OlwiZ2V0QXR0clwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHBhcnNlRmxvYXQoZS50YXJnZXQuZ2V0QXR0cmlidXRlKHQpKX19LHtrZXk6XCJoYW5kbGVIZWF0VHJlZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmUsaT1lLm9wdCxhPWUueCxzPWUueSxyPWUudHlwZSxuPXRoaXMudHRDdHgsbz10aGlzLnc7aWYodC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1cIi5jb25jYXQocixcIi1yZWN0XCIpKSl7dmFyIGg9dGhpcy5nZXRBdHRyKHQsXCJpXCIpLGM9dGhpcy5nZXRBdHRyKHQsXCJqXCIpLGQ9dGhpcy5nZXRBdHRyKHQsXCJjeFwiKSxnPXRoaXMuZ2V0QXR0cih0LFwiY3lcIikscD10aGlzLmdldEF0dHIodCxcIndpZHRoXCIpLGY9dGhpcy5nZXRBdHRyKHQsXCJoZWlnaHRcIik7aWYobi50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpoLGo6YyxzaGFyZWQ6ITEsZTp0fSksby5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9aCxvLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1jLGE9ZCtuLnRvb2x0aXBSZWN0LnR0V2lkdGgvMitwLHM9ZytuLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItZi8yLG4udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhkK3AvMiksYT5vLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihhPWQtbi50b29sdGlwUmVjdC50dFdpZHRoLzIrcCksbi53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGI9by5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1vLmdsb2JhbHMuY2xpZW50WC1iLmxlZnQtKGE+by5nbG9iYWxzLmdyaWRXaWR0aC8yP24udG9vbHRpcFJlY3QudHRXaWR0aDowKSxzPW8uZ2xvYmFscy5jbGllbnRZLWIudG9wLShzPm8uZ2xvYmFscy5ncmlkSGVpZ2h0LzI/bi50b29sdGlwUmVjdC50dEhlaWdodDowKX19cmV0dXJue3g6YSx5OnN9fX0se2tleTpcImhhbmRsZU1hcmtlclRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGE9ZS5lLHM9ZS5vcHQscj1lLngsbj1lLnksbz10aGlzLncsaD10aGlzLnR0Q3R4O2lmKGEudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWFya2VyXCIpKXt2YXIgYz1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN4XCIpLDEwKSxkPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3lcIiksMTApLGc9cGFyc2VGbG9hdChzLnBhdGhzLmdldEF0dHJpYnV0ZShcInZhbFwiKSk7aWYoaT1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCksdD1wYXJzZUludChzLnBhdGhzLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxoLmludGVyc2VjdCl7dmFyIHA9UC5maW5kQW5jZXN0b3Iocy5wYXRocyxcImFwZXhjaGFydHMtc2VyaWVzXCIpO3AmJih0PXBhcnNlSW50KHAuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKX1pZihoLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOnMudHRJdGVtcyxpOnQsajppLHNoYXJlZDohaC5zaG93T25JbnRlcnNlY3QmJm8uY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6YX0pLGEudHlwZT09PVwibW91c2V1cFwiJiZoLm1hcmtlckNsaWNrKGEsdCxpKSxvLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD10LG8uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWkscj1jLG49ZCtvLmdsb2JhbHMudHJhbnNsYXRlWS0xLjQqaC50b29sdGlwUmVjdC50dEhlaWdodCxoLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgZj1oLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO249aC5lLmNsaWVudFkrby5nbG9iYWxzLnRyYW5zbGF0ZVktZi50b3B9ZzwwJiYobj1kKSxoLm1hcmtlci5lbmxhcmdlQ3VycmVudFBvaW50KGkscy5wYXRocyxyLG4pfXJldHVybnt4OnIseTpufX19LHtrZXk6XCJoYW5kbGVCYXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhPWUuZSxzPWUub3B0LHI9dGhpcy53LG49dGhpcy50dEN0eCxvPW4uZ2V0RWxUb29sdGlwKCksaD0wLGM9MCxkPTAsZz10aGlzLmdldEJhclRvb2x0aXBYWSh7ZTphLG9wdDpzfSk7dD1nLmk7dmFyIHA9Zy5iYXJIZWlnaHQsZj1nLmo7ci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9dCxyLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1mLHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4udG9vbHRpcFV0aWwuaGFzQmFycygpfHwhci5jb25maWcudG9vbHRpcC5zaGFyZWQ/KGM9Zy54LGQ9Zy55LGk9QXJyYXkuaXNBcnJheShyLmNvbmZpZy5zdHJva2Uud2lkdGgpP3IuY29uZmlnLnN0cm9rZS53aWR0aFt0XTpyLmNvbmZpZy5zdHJva2Uud2lkdGgsaD1jKTpyLmdsb2JhbHMuY29tYm9DaGFydHN8fHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwoaC89MiksaXNOYU4oZCkmJihkPXIuZ2xvYmFscy5zdmdIZWlnaHQtbi50b29sdGlwUmVjdC50dEhlaWdodCk7dmFyIGI9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSxtPXIuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM/ci5jb25maWcueWF4aXNbYl0mJnIuY29uZmlnLnlheGlzW2JdLnJldmVyc2VkOnIuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkO2lmKGMrbi50b29sdGlwUmVjdC50dFdpZHRoPnIuZ2xvYmFscy5ncmlkV2lkdGgmJiFtP2MtPW4udG9vbHRpcFJlY3QudHRXaWR0aDpjPDAmJihjPTApLG4udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciB3PW4uZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZD1uLmUuY2xpZW50WS13LnRvcH1uLnRvb2x0aXA9PT1udWxsJiYobi50b29sdGlwPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpKSxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KHIuZ2xvYmFscy5jb21ib0JhckNvdW50PjA/bi50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGgraS8yKTpuLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoaCkpLCFuLmZpeGVkVG9vbHRpcCYmKCFyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmbi50b29sdGlwVXRpbC5oYXNCYXJzKCkpJiYobSYmKGMtPW4udG9vbHRpcFJlY3QudHRXaWR0aCk8MCYmKGM9MCksIW18fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4udG9vbHRpcFV0aWwuaGFzQmFycygpfHwoZD1kK3AtMiooci5nbG9iYWxzLnNlcmllc1t0XVtmXTwwP3A6MCkpLGQ9ZCtyLmdsb2JhbHMudHJhbnNsYXRlWS1uLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIsby5zdHlsZS5sZWZ0PWMrci5nbG9iYWxzLnRyYW5zbGF0ZVgrXCJweFwiLG8uc3R5bGUudG9wPWQrXCJweFwiKX19LHtrZXk6XCJnZXRCYXJUb29sdGlwWFlcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS5lLGE9ZS5vcHQscz10aGlzLncscj1udWxsLG49dGhpcy50dEN0eCxvPTAsaD0wLGM9MCxkPTAsZz0wLHA9aS50YXJnZXQuY2xhc3NMaXN0O2lmKHAuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJhci1hcmVhXCIpfHxwLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxwLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1ib3hQbG90LWFyZWFcIil8fHAuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIikpe3ZhciBmPWkudGFyZ2V0LGI9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtPWEuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHc9Yi5oZWlnaHQ7Zz1iLmhlaWdodDt2YXIgQT1iLndpZHRoLGw9cGFyc2VJbnQoZi5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksdT1wYXJzZUludChmLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKTtkPXBhcnNlRmxvYXQoZi5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7dmFyIHg9aS50eXBlPT09XCJ0b3VjaG1vdmVcIj9pLnRvdWNoZXNbMF0uY2xpZW50WDppLmNsaWVudFg7cj1wYXJzZUludChmLmdldEF0dHJpYnV0ZShcImpcIiksMTApLG89cGFyc2VJbnQoZi5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt2YXIgdj1mLmdldEF0dHJpYnV0ZShcImRhdGEtcmFuZ2UteTFcIiksaz1mLmdldEF0dHJpYnV0ZShcImRhdGEtcmFuZ2UteTJcIik7cy5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYobz1wYXJzZUludChmLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKTt2YXIgUz1mdW5jdGlvbihMKXtyZXR1cm4gcy5nbG9iYWxzLmlzWE51bWVyaWM/bC1BLzI6dC5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyP2wrQS8yOmwtbi5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoK0EvMn0sQz1mdW5jdGlvbigpe3JldHVybiB1LW4uZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQrdy8yLW4udG9vbHRpcFJlY3QudHRIZWlnaHQvMn07bi50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczphLnR0SXRlbXMsaTpvLGo6cix5MTp2P3BhcnNlSW50KHYsMTApOm51bGwseTI6az9wYXJzZUludChrLDEwKTpudWxsLHNoYXJlZDohbi5zaG93T25JbnRlcnNlY3QmJnMuY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6aX0pLHMuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP3MuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KGg9eC1tLmxlZnQrMTUsYz1DKCkpOihoPVMoKSxjPWkuY2xpZW50WS1tLnRvcC1uLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItMTUpOnMuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KChoPWwpPG4ueHlSYXRpb3MuYmFzZUxpbmVJbnZlcnRlZFkmJihoPWwtbi50b29sdGlwUmVjdC50dFdpZHRoKSxjPUMoKSk6KGg9UygpLGM9dSl9cmV0dXJue3g6aCx5OmMsYmFySGVpZ2h0OmcsYmFyV2lkdGg6ZCxpOm8sajpyfX19XSkseX0oKSxFdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lfXJldHVybiBZKHksW3trZXk6XCJkcmF3WGF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD10aGlzLnR0Q3R4LGk9ZS5jb25maWcueGF4aXMucG9zaXRpb249PT1cImJvdHRvbVwiO3QueGF4aXNPZmZZPWk/ZS5nbG9iYWxzLmdyaWRIZWlnaHQrMTotZS5nbG9iYWxzLnhBeGlzSGVpZ2h0LWUuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQrMzt2YXIgYT1pP1wiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tXCI6XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3BcIixzPWUuZ2xvYmFscy5kb20uZWxXcmFwO3QuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiZlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwXCIpPT09bnVsbCYmKHQueGF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdC54YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrZS5jb25maWcudG9vbHRpcC50aGVtZSkscy5hcHBlbmRDaGlsZCh0LnhheGlzVG9vbHRpcCksdC54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdC54YXhpc1Rvb2x0aXBUZXh0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0XCIpLHQueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250RmFtaWx5PWUuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseXx8ZS5jb25maWcuY2hhcnQuZm9udEZhbWlseSx0LnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemU9ZS5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250U2l6ZSx0LnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZCh0LnhheGlzVG9vbHRpcFRleHQpKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy53LHQ9dGhpcy50dEN0eCxpPWZ1bmN0aW9uKHMpe3ZhciByPWUuY29uZmlnLnlheGlzW3NdLm9wcG9zaXRlfHxlLmNvbmZpZy55YXhpc1tzXS5jcm9zc2hhaXJzLm9wcG9zaXRlO3QueWF4aXNPZmZYPXI/ZS5nbG9iYWxzLmdyaWRXaWR0aCsxOjE7dmFyIG49XCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQocyxyP1wiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0XCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdFwiKTtlLmdsb2JhbHMueUF4aXNTYW1lU2NhbGVJbmRpY2VzLm1hcChmdW5jdGlvbihoLGMpe2gubWFwKGZ1bmN0aW9uKGQsZyl7Zz09PXMmJihuKz1lLmNvbmZpZy55YXhpc1tnXS5zaG93P1wiIFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlblwiKX0pfSk7dmFyIG89ZS5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQocykpPT09bnVsbCYmKHQueWF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdC55YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixuK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrZS5jb25maWcudG9vbHRpcC50aGVtZSksby5hcHBlbmRDaGlsZCh0LnlheGlzVG9vbHRpcCkscz09PTAmJih0LnlheGlzVG9vbHRpcFRleHQ9W10pLHQueWF4aXNUb29sdGlwVGV4dFtzXT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQueWF4aXNUb29sdGlwVGV4dFtzXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtdGV4dFwiKSx0LnlheGlzVG9vbHRpcC5hcHBlbmRDaGlsZCh0LnlheGlzVG9vbHRpcFRleHRbc10pKX0sYT0wO2E8ZS5jb25maWcueWF4aXMubGVuZ3RoO2ErKylpKGEpfX0se2tleTpcInNldFhDcm9zc2hhaXJXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LHQ9dGhpcy50dEN0eCxpPXQuZ2V0RWxYQ3Jvc3NoYWlycygpO2lmKHQueGNyb3NzaGFpcnNXaWR0aD1wYXJzZUludChlLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoLDEwKSxlLmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciBhPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihhIT09bnVsbCYmZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aD09PVwiYmFyV2lkdGhcIil7dmFyIHM9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTt0Lnhjcm9zc2hhaXJzV2lkdGg9c31lbHNlIGlmKGUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT1cInRpY2tXaWR0aFwiKXt2YXIgcj1lLmdsb2JhbHMubGFiZWxzLmxlbmd0aDt0Lnhjcm9zc2hhaXJzV2lkdGg9ZS5nbG9iYWxzLmdyaWRXaWR0aC9yfX1lbHNlIGlmKGUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9PT1cInRpY2tXaWR0aFwiKXt2YXIgbj1lLmdsb2JhbHMubGFiZWxzLmxlbmd0aDt0Lnhjcm9zc2hhaXJzV2lkdGg9ZS5nbG9iYWxzLmdyaWRXaWR0aC9ufWVsc2UgaWYoZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aD09PVwiYmFyV2lkdGhcIil7dmFyIG89ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpO2lmKG8hPT1udWxsKXt2YXIgaD1wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO3QueGNyb3NzaGFpcnNXaWR0aD1ofWVsc2UgdC54Y3Jvc3NoYWlyc1dpZHRoPTF9ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHQueGNyb3NzaGFpcnNXaWR0aD0wKSxpIT09bnVsbCYmdC54Y3Jvc3NoYWlyc1dpZHRoPjAmJmkuc2V0QXR0cmlidXRlKFwid2lkdGhcIix0Lnhjcm9zc2hhaXJzV2lkdGgpfX0se2tleTpcImhhbmRsZVlDcm9zc2hhaXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PXRoaXMudHRDdHg7dC55Y3Jvc3NoYWlycz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksdC55Y3Jvc3NoYWlyc0hpZGRlbj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuXCIpfX0se2tleTpcImRyYXdZYXhpc1Rvb2x0aXBUZXh0XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPXRoaXMudHRDdHgscz10aGlzLncscj1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1tlXTtpZihhLnlheGlzVG9vbHRpcHNbZV0pe3ZhciBuPWEuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz0odC1uLnRvcCkqaS55UmF0aW9bZV0saD1zLmdsb2JhbHMubWF4WUFycltlXS1zLmdsb2JhbHMubWluWUFycltlXSxjPXMuZ2xvYmFscy5taW5ZQXJyW2VdKyhoLW8pO2EudG9vbHRpcFBvc2l0aW9uLm1vdmVZQ3Jvc3NoYWlycyh0LW4udG9wKSxhLnlheGlzVG9vbHRpcFRleHRbZV0uaW5uZXJIVE1MPXIoYyksYS50b29sdGlwUG9zaXRpb24ubW92ZVlBeGlzVG9vbHRpcChlKX19fV0pLHl9KCksbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIHQ9dGhpcy53O3RoaXMudENvbmZpZz10LmNvbmZpZy50b29sdGlwLHRoaXMudG9vbHRpcFV0aWw9bmV3IHN0KHRoaXMpLHRoaXMudG9vbHRpcExhYmVscz1uZXcgenQodGhpcyksdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHJ0KHRoaXMpLHRoaXMubWFya2VyPW5ldyBNdCh0aGlzKSx0aGlzLmludGVyc2VjdD1uZXcgWHQodGhpcyksdGhpcy5heGVzVG9vbHRpcD1uZXcgRXQodGhpcyksdGhpcy5zaG93T25JbnRlcnNlY3Q9dGhpcy50Q29uZmlnLmludGVyc2VjdCx0aGlzLnNob3dUb29sdGlwVGl0bGU9dGhpcy50Q29uZmlnLnguc2hvdyx0aGlzLmZpeGVkVG9vbHRpcD10aGlzLnRDb25maWcuZml4ZWQuZW5hYmxlZCx0aGlzLnhheGlzVG9vbHRpcD1udWxsLHRoaXMueWF4aXNUVEVscz1udWxsLHRoaXMuaXNCYXJTaGFyZWQ9IXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudENvbmZpZy5zaGFyZWQsdGhpcy5sYXN0SG92ZXJUaW1lPURhdGUubm93KCl9cmV0dXJuIFkoeSxbe2tleTpcImdldEVsVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlfHwoZT10aGlzKSxlLncuZ2xvYmFscy5kb20uYmFzZUVsP2Uudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXBcIik6bnVsbH19LHtrZXk6XCJnZXRFbFhDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGNyb3NzaGFpcnNcIil9fSx7a2V5OlwiZ2V0RWxHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKX19LHtrZXk6XCJkcmF3VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudzt0aGlzLnh5UmF0aW9zPWUsdGhpcy5pc1hBeGlzVG9vbHRpcEVuYWJsZWQ9dC5jb25maWcueGF4aXMudG9vbHRpcC5lbmFibGVkJiZ0Lmdsb2JhbHMuYXhpc0NoYXJ0cyx0aGlzLnlheGlzVG9vbHRpcHM9dC5jb25maWcueWF4aXMubWFwKGZ1bmN0aW9uKHIsbil7cmV0dXJuISEoci5zaG93JiZyLnRvb2x0aXAuZW5hYmxlZCYmdC5nbG9iYWxzLmF4aXNDaGFydHMpfSksdGhpcy5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPVtdLHQuZ2xvYmFscy5heGlzQ2hhcnRzfHwodGhpcy5zaG93VG9vbHRpcFRpdGxlPSExKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2lmKGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcFwiKSx0LmNvbmZpZy50b29sdGlwLmNzc0NsYXNzJiZpLmNsYXNzTGlzdC5hZGQodC5jb25maWcudG9vbHRpcC5jc3NDbGFzcyksaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQodGhpcy50Q29uZmlnLnRoZW1lKSksdC5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoaSksdC5nbG9iYWxzLmF4aXNDaGFydHMpe3RoaXMuYXhlc1Rvb2x0aXAuZHJhd1hheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuc2V0WENyb3NzaGFpcldpZHRoKCksdGhpcy5heGVzVG9vbHRpcC5oYW5kbGVZQ3Jvc3NoYWlyKCk7dmFyIGE9bmV3IHplKHRoaXMuY3R4KTt0aGlzLnhBeGlzVGlja3NQb3NpdGlvbnM9YS5nZXRYQXhpc1RpY2tzUG9zaXRpb25zKCl9aWYoIXQuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMudENvbmZpZy5pbnRlcnNlY3QmJnQuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInJhbmdlQmFyXCJ8fHRoaXMudENvbmZpZy5zaGFyZWR8fCh0aGlzLnNob3dPbkludGVyc2VjdD0hMCksdC5jb25maWcubWFya2Vycy5zaXplIT09MCYmdC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUhPT0wfHx0aGlzLm1hcmtlci5kcmF3RHluYW1pY1BvaW50cyh0aGlzKSx0Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt0aGlzLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0PXQuZ2xvYmFscy5ncmlkSGVpZ2h0L3QuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuZGF0YVBvaW50c0RpdmlkZWRXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL3QuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuc2hvd1Rvb2x0aXBUaXRsZSYmKHRoaXMudG9vbHRpcFRpdGxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy50b29sdGlwVGl0bGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250RmFtaWx5PXRoaXMudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRTaXplPXRoaXMudENvbmZpZy5zdHlsZS5mb250U2l6ZSxpLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcFRpdGxlKSk7dmFyIHM9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KHQuZ2xvYmFscy54eUNoYXJ0c3x8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmdGhpcy50Q29uZmlnLnNoYXJlZCYmKHM9dGhpcy5zaG93T25JbnRlcnNlY3Q/MTp0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksdGhpcy5sZWdlbmRMYWJlbHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLHRoaXMudHRJdGVtcz10aGlzLmNyZWF0ZVRURWxlbWVudHMocyksdGhpcy5hZGRTVkdFdmVudHMoKX19fSx7a2V5OlwiY3JlYXRlVFRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLGk9dGhpcy53LGE9W10scz10aGlzLmdldEVsVG9vbHRpcCgpLHI9ZnVuY3Rpb24obyl7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtoLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpLGguc3R5bGUub3JkZXI9aS5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/ZS1vOm8rMSx0LnRDb25maWcuc2hhcmVkJiZ0LnRDb25maWcuZW5hYmxlZE9uU2VyaWVzJiZBcnJheS5pc0FycmF5KHQudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiZ0LnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yobyk8MCYmaC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW5cIik7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7Yy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxjLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLmdsb2JhbHMuY29sb3JzW29dLGguYXBwZW5kQ2hpbGQoYyk7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtkLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKSxkLnN0eWxlLmZvbnRGYW1pbHk9dC50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZC5zdHlsZS5mb250U2l6ZT10LnRDb25maWcuc3R5bGUuZm9udFNpemUsW1wieVwiLFwiZ29hbHNcIixcInpcIl0uZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3AuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1cIi5jb25jYXQoZyxcIi1ncm91cFwiKSk7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7Zi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KGcsXCItbGFiZWxcIikpLHAuYXBwZW5kQ2hpbGQoZik7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7Yi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KGcsXCItdmFsdWVcIikpLHAuYXBwZW5kQ2hpbGQoYiksZC5hcHBlbmRDaGlsZChwKX0pLGguYXBwZW5kQ2hpbGQoZCkscy5hcHBlbmRDaGlsZChoKSxhLnB1c2goaCl9LG49MDtuPGU7bisrKXIobik7cmV0dXJuIGF9fSx7a2V5OlwiYWRkU1ZHRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD1lLmNvbmZpZy5jaGFydC50eXBlLGk9dGhpcy5nZXRFbFRvb2x0aXAoKSxhPSEodCE9PVwiYmFyXCImJnQhPT1cImNhbmRsZXN0aWNrXCImJnQhPT1cImJveFBsb3RcIiYmdCE9PVwicmFuZ2VCYXJcIikscz10PT09XCJhcmVhXCJ8fHQ9PT1cImxpbmVcInx8dD09PVwic2NhdHRlclwifHx0PT09XCJidWJibGVcInx8dD09PVwicmFkYXJcIixyPWUuZ2xvYmFscy5kb20uUGFwZXIubm9kZSxuPXRoaXMuZ2V0RWxHcmlkKCk7biYmKHRoaXMuc2VyaWVzQm91bmQ9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG8saD1bXSxjPVtdLGQ9e2hvdmVyQXJlYTpyLGVsR3JpZDpuLHRvb2x0aXBFbDppLHRvb2x0aXBZOmgsdG9vbHRpcFg6Yyx0dEl0ZW1zOnRoaXMudHRJdGVtc307aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMmJihzP289ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpsb25nZXN0U2VyaWVzPSd0cnVlJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpOmE/bz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIik6dCE9PVwiaGVhdG1hcFwiJiZ0IT09XCJ0cmVlbWFwXCJ8fChvPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtaGVhdG1hcCwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLXRyZWVtYXBcIikpLG8mJm8ubGVuZ3RoKSlmb3IodmFyIGc9MDtnPG8ubGVuZ3RoO2crKyloLnB1c2gob1tnXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSksYy5wdXNoKG9bZ10uZ2V0QXR0cmlidXRlKFwiY3hcIikpO2lmKGUuZ2xvYmFscy54eUNoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHxlLmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8YSYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWQpdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKFtyXSxkKTtlbHNlIGlmKGEmJiFlLmdsb2JhbHMuY29tYm9DaGFydHN8fHMmJnRoaXMuc2hvd09uSW50ZXJzZWN0KXRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGQpO2Vsc2UgaWYoIWUuZ2xvYmFscy5heGlzQ2hhcnRzfHx0PT09XCJoZWF0bWFwXCJ8fHQ9PT1cInRyZWVtYXBcIil7dmFyIHA9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMocCxkKX1pZih0aGlzLnNob3dPbkludGVyc2VjdCl7dmFyIGY9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyXCIpO2YubGVuZ3RoPjAmJnRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhmLGQpLHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhdGhpcy50Q29uZmlnLnNoYXJlZCYmdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoZCl9fX0se2tleTpcImRyYXdGaXhlZFRvb2x0aXBSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD10aGlzLmdldEVsVG9vbHRpcCgpLGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWkud2lkdGgrMTAscz1pLmhlaWdodCsxMCxyPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRYLG49dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFksbz10aGlzLnRDb25maWcuZml4ZWQucG9zaXRpb24udG9Mb3dlckNhc2UoKTtyZXR1cm4gby5pbmRleE9mKFwicmlnaHRcIik+LTEmJihyPXIrZS5nbG9iYWxzLnN2Z1dpZHRoLWErMTApLG8uaW5kZXhPZihcImJvdHRvbVwiKT4tMSYmKG49bitlLmdsb2JhbHMuc3ZnSGVpZ2h0LXMtMTApLHQuc3R5bGUubGVmdD1yK1wicHhcIix0LnN0eWxlLnRvcD1uK1wicHhcIix7eDpyLHk6bix0dFdpZHRoOmEsdHRIZWlnaHQ6c319fSx7a2V5OlwiYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpO3RoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyh0LGUpfX0se2tleTpcImFkZFBhdGhzRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT10aGlzLGE9ZnVuY3Rpb24ocil7dmFyIG49e3BhdGhzOmVbcl0sdG9vbHRpcEVsOnQudG9vbHRpcEVsLHRvb2x0aXBZOnQudG9vbHRpcFksdG9vbHRpcFg6dC50b29sdGlwWCxlbEdyaWQ6dC5lbEdyaWQsaG92ZXJBcmVhOnQuaG92ZXJBcmVhLHR0SXRlbXM6dC50dEl0ZW1zfTtbXCJtb3VzZW1vdmVcIixcIm1vdXNldXBcIixcInRvdWNobW92ZVwiLFwibW91c2VvdXRcIixcInRvdWNoZW5kXCJdLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gZVtyXS5hZGRFdmVudExpc3RlbmVyKG8saS5vblNlcmllc0hvdmVyLmJpbmQoaSxuKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KX0scz0wO3M8ZS5sZW5ndGg7cysrKWEocyl9fSx7a2V5Olwib25TZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPURhdGUubm93KCktdGhpcy5sYXN0SG92ZXJUaW1lO2E+PTEwMD90aGlzLnNlcmllc0hvdmVyKGUsdCk6KGNsZWFyVGltZW91dCh0aGlzLnNlcmllc0hvdmVyVGltZW91dCksdGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2kuc2VyaWVzSG92ZXIoZSx0KX0sMTAwLWEpKX19LHtrZXk6XCJzZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpczt0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKTt2YXIgYT1bXSxzPXRoaXMudztzLmNvbmZpZy5jaGFydC5ncm91cCYmKGE9dGhpcy5jdHguZ2V0R3JvdXBlZENoYXJ0cygpKSxzLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHMuZ2xvYmFscy5taW5YPT09LTEvMCYmcy5nbG9iYWxzLm1heFg9PT0xLzB8fHMuZ2xvYmFscy5kYXRhUG9pbnRzPT09MCl8fChhLmxlbmd0aD9hLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49aS5nZXRFbFRvb2x0aXAociksbz17cGF0aHM6ZS5wYXRocyx0b29sdGlwRWw6bix0b29sdGlwWTplLnRvb2x0aXBZLHRvb2x0aXBYOmUudG9vbHRpcFgsZWxHcmlkOmUuZWxHcmlkLGhvdmVyQXJlYTplLmhvdmVyQXJlYSx0dEl0ZW1zOnIudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtc307ci53Lmdsb2JhbHMubWluWD09PWkudy5nbG9iYWxzLm1pblgmJnIudy5nbG9iYWxzLm1heFg9PT1pLncuZ2xvYmFscy5tYXhYJiZyLncuZ2xvYmFscy50b29sdGlwLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDpyLHR0Q3R4OnIudy5nbG9iYWxzLnRvb2x0aXAsb3B0Om8sZTp0fSl9KTp0aGlzLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDp0aGlzLmN0eCx0dEN0eDp0aGlzLncuZ2xvYmFscy50b29sdGlwLG9wdDplLGU6dH0pKX19LHtrZXk6XCJzZXJpZXNIb3ZlckJ5Q29udGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhcnRDdHgsaT1lLnR0Q3R4LGE9ZS5vcHQscz1lLmUscj10Lncsbj10aGlzLmdldEVsVG9vbHRpcCgpO24mJihpLnRvb2x0aXBSZWN0PXt4OjAseTowLHR0V2lkdGg6bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0dEhlaWdodDpuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0saS5lPXMsaS50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFpLmlzQmFyU2hhcmVkJiZ0aGlzLnRDb25maWcub25EYXRhc2V0SG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyYmbmV3IGllKHQpLnRvZ2dsZVNlcmllc09uSG92ZXIocyxzLnRhcmdldC5wYXJlbnROb2RlKSxpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLHIuZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pKX19LHtrZXk6XCJheGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGE9ZS5lLHM9ZS5vcHQscj10aGlzLncsbj1zLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWEudHlwZT09PVwidG91Y2htb3ZlXCI/YS50b3VjaGVzWzBdLmNsaWVudFg6YS5jbGllbnRYLGg9YS50eXBlPT09XCJ0b3VjaG1vdmVcIj9hLnRvdWNoZXNbMF0uY2xpZW50WTphLmNsaWVudFk7aWYodGhpcy5jbGllbnRZPWgsdGhpcy5jbGllbnRYPW8sci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9LTEsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9LTEsaDxuLnRvcHx8aD5uLnRvcCtuLmhlaWdodCl0aGlzLmhhbmRsZU1vdXNlT3V0KHMpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkKXt2YXIgYz1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTtpZih0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoYyk8MClyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpfXZhciBkPXRoaXMuZ2V0RWxUb29sdGlwKCksZz10aGlzLmdldEVsWENyb3NzaGFpcnMoKSxwPXIuZ2xvYmFscy54eUNoYXJ0c3x8ci5jb25maWcuY2hhcnQudHlwZT09PVwiYmFyXCImJiFyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZHx8ci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKTtpZihhLnR5cGU9PT1cIm1vdXNlbW92ZVwifHxhLnR5cGU9PT1cInRvdWNobW92ZVwifHxhLnR5cGU9PT1cIm1vdXNldXBcIil7aWYoci5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgrci5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1yLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm47ZyE9PW51bGwmJmcuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciBmPXRoaXMueWF4aXNUb29sdGlwcy5maWx0ZXIoZnVuY3Rpb24odyl7cmV0dXJuIHc9PT0hMH0pO2lmKHRoaXMueWNyb3NzaGFpcnMhPT1udWxsJiZmLmxlbmd0aCYmdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikscCYmIXRoaXMuc2hvd09uSW50ZXJzZWN0KXRoaXMuaGFuZGxlU3RpY2t5VG9vbHRpcChhLG8saCxzKTtlbHNlIGlmKHIuY29uZmlnLmNoYXJ0LnR5cGU9PT1cImhlYXRtYXBcInx8ci5jb25maWcuY2hhcnQudHlwZT09PVwidHJlZW1hcFwiKXt2YXIgYj10aGlzLmludGVyc2VjdC5oYW5kbGVIZWF0VHJlZVRvb2x0aXAoe2U6YSxvcHQ6cyx4OnQseTppLHR5cGU6ci5jb25maWcuY2hhcnQudHlwZX0pO3Q9Yi54LGk9Yi55LGQuc3R5bGUubGVmdD10K1wicHhcIixkLnN0eWxlLnRvcD1pK1wicHhcIn1lbHNlIHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVCYXJUb29sdGlwKHtlOmEsb3B0OnN9KSx0aGlzLnRvb2x0aXBVdGlsLmhhc01hcmtlcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlTWFya2VyVG9vbHRpcCh7ZTphLG9wdDpzLHg6dCx5Oml9KTtpZih0aGlzLnlheGlzVG9vbHRpcHMubGVuZ3RoKWZvcih2YXIgbT0wO208ci5jb25maWcueWF4aXMubGVuZ3RoO20rKyl0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXBUZXh0KG0saCx0aGlzLnh5UmF0aW9zKTtzLnRvb2x0aXBFbC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9ZWxzZSBhLnR5cGUhPT1cIm1vdXNlb3V0XCImJmEudHlwZSE9PVwidG91Y2hlbmRcInx8dGhpcy5oYW5kbGVNb3VzZU91dChzKX19fSx7a2V5Olwibm9uQXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lLGk9ZS5vcHQsYT1lLnRvb2x0aXBSZWN0LHM9dGhpcy53LHI9aS5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksbj10aGlzLmdldEVsVG9vbHRpcCgpLG89cy5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodC50eXBlPT09XCJtb3VzZW1vdmVcInx8dC50eXBlPT09XCJ0b3VjaG1vdmVcIil7bi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpwYXJzZUludChyLDEwKS0xLHNoYXJlZDohMX0pO3ZhciBoPXMuZ2xvYmFscy5jbGllbnRYLW8ubGVmdC1hLnR0V2lkdGgvMixjPXMuZ2xvYmFscy5jbGllbnRZLW8udG9wLWEudHRIZWlnaHQtMTA7aWYobi5zdHlsZS5sZWZ0PWgrXCJweFwiLG4uc3R5bGUudG9wPWMrXCJweFwiLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBkPXItMSxnPSgwLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpKHRoaXMubGVnZW5kTGFiZWxzW2RdLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpLHtzZXJpZXNJbmRleDpkLGRhdGFQb2ludEluZGV4OmQsdzpzfSk7dGhpcy5sZWdlbmRMYWJlbHNbZF0uaW5uZXJIVE1MPWd9fWVsc2UgdC50eXBlIT09XCJtb3VzZW91dFwiJiZ0LnR5cGUhPT1cInRvdWNoZW5kXCJ8fChuLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKHApe3ZhciBmPXAuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7cC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGYpfSkpfX0se2tleTpcImhhbmRsZVN0aWNreVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz10aGlzLncscj10aGlzLnRvb2x0aXBVdGlsLmdldE5lYXJlc3RWYWx1ZXMoe2NvbnRleHQ6dGhpcyxob3ZlckFyZWE6YS5ob3ZlckFyZWEsZWxHcmlkOmEuZWxHcmlkLGNsaWVudFg6dCxjbGllbnRZOml9KSxuPXIuaixvPXIuY2FwdHVyZWRTZXJpZXM7cy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMobykmJihvPW51bGwpO3ZhciBoPWEuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHIuaG92ZXJYPDB8fHIuaG92ZXJYPmgud2lkdGgpdGhpcy5oYW5kbGVNb3VzZU91dChhKTtlbHNlIGlmKG8hPT1udWxsKXRoaXMuaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXMoZSxvLGEsbik7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAobil8fHMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3ZhciBjPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KGZ1bmN0aW9uKGQsZyl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGcpfSk7dGhpcy5jcmVhdGUoZSx0aGlzLGMsbixhLnR0SXRlbXMpfX19LHtrZXk6XCJoYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzPXRoaXMudztpZighdGhpcy50Q29uZmlnLnNoYXJlZCYmcy5nbG9iYWxzLnNlcmllc1t0XVthXT09PW51bGwpcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChpKTtpZihzLmdsb2JhbHMuc2VyaWVzW3RdW2FdIT09dm9pZCAwKXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSYmdGhpcy50b29sdGlwVXRpbC5pc0luaXRpYWxTZXJpZXNTYW1lTGVuKCk/dGhpcy5jcmVhdGUoZSx0aGlzLHQsYSxpLnR0SXRlbXMpOnRoaXMuY3JlYXRlKGUsdGhpcyx0LGEsaS50dEl0ZW1zLCExKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSl7dmFyIHI9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoZnVuY3Rpb24obixvKXtyZXR1cm4hcy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMobyl9KTt0aGlzLmNyZWF0ZShlLHRoaXMscixhLGkudHRJdGVtcyl9fX0se2tleTpcImRlYWN0aXZhdGVIb3ZlckZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMudyx0PW5ldyBNKHRoaXMuY3R4KSxpPWUuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIiksYT0wO2E8aS5sZW5ndGg7YSsrKXQucGF0aE1vdXNlTGVhdmUoaVthXSl9fSx7a2V5OlwiaGFuZGxlTW91c2VPdXRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT10aGlzLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnRvb2x0aXBFbC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSx0LmNvbmZpZy5jaGFydC50eXBlIT09XCJidWJibGVcIiYmdGhpcy5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksaSE9PW51bGwmJmkuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMueWNyb3NzaGFpcnMhPT1udWxsJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmdGhpcy54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpe3RoaXMueWF4aXNUVEVscz09PW51bGwmJih0aGlzLnlheGlzVFRFbHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7Zm9yKHZhciBhPTA7YTx0aGlzLnlheGlzVFRFbHMubGVuZ3RoO2ErKyl0aGlzLnlheGlzVFRFbHNbYV0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfXQuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIHI9cy5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTtzLmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQocil9KX19LHtrZXk6XCJtYXJrZXJDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYT10aGlzLnc7dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljaz09XCJmdW5jdGlvblwiJiZhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2soZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDppLHc6YX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJtYXJrZXJDbGlja1wiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OmksdzphfV0pfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7dmFyIHIsbixvLGgsYyxkLGcscCxmLGIsbSx3LEEsbCx1LHgsdj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06bnVsbCxrPXRoaXMudyxTPXQ7ZS50eXBlPT09XCJtb3VzZXVwXCImJnRoaXMubWFya2VyQ2xpY2soZSxpLGEpLHY9PT1udWxsJiYodj10aGlzLnRDb25maWcuc2hhcmVkKTt2YXIgQz10aGlzLnRvb2x0aXBVdGlsLmhhc01hcmtlcnMoaSksTD10aGlzLnRvb2x0aXBVdGlsLmdldEVsQmFycygpO2lmKGsuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBJPWsuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIsej1BcnJheS5mcm9tKHRoaXMubGVnZW5kTGFiZWxzKTt6LmZvckVhY2goZnVuY3Rpb24ocmUpe3ZhciBlZT1yZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTtyZS5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGVlKX0pO2Zvcih2YXIgVD0wO1Q8ei5sZW5ndGg7VCsrKXt2YXIgRT16W1RdLFI9cGFyc2VJbnQoRS5nZXRBdHRyaWJ1dGUoXCJpXCIpLDEwKSxPPWRlY29kZVVSSUNvbXBvbmVudChFLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpKSxEPUkoTyx7c2VyaWVzSW5kZXg6dj9SOmksZGF0YVBvaW50SW5kZXg6YSx3Omt9KTtpZih2KUUuaW5uZXJIVE1MPWsuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoUik8MD9EOk87ZWxzZSBpZihFLmlubmVySFRNTD1SPT09aT9EOk8saT09PVIpYnJlYWt9fXZhciBXPVgoWCh7dHRJdGVtczpzLGksajphfSwoKHI9ay5nbG9iYWxzLnNlcmllc1JhbmdlKT09PW51bGx8fHI9PT12b2lkIDB8fChuPXJbaV0pPT09bnVsbHx8bj09PXZvaWQgMHx8KG89blthXSk9PT1udWxsfHxvPT09dm9pZCAwfHwoaD1vLnlbMF0pPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aC55MSkhPT12b2lkIDAmJnt5MTooYz1rLmdsb2JhbHMuc2VyaWVzUmFuZ2UpPT09bnVsbHx8Yz09PXZvaWQgMHx8KGQ9Y1tpXSk9PT1udWxsfHxkPT09dm9pZCAwfHwoZz1kW2FdKT09PW51bGx8fGc9PT12b2lkIDB8fChwPWcueVswXSk9PT1udWxsfHxwPT09dm9pZCAwP3ZvaWQgMDpwLnkxfSksKChmPWsuZ2xvYmFscy5zZXJpZXNSYW5nZSk9PT1udWxsfHxmPT09dm9pZCAwfHwoYj1mW2ldKT09PW51bGx8fGI9PT12b2lkIDB8fChtPWJbYV0pPT09bnVsbHx8bT09PXZvaWQgMHx8KHc9bS55WzBdKT09PW51bGx8fHc9PT12b2lkIDA/dm9pZCAwOncueTIpIT09dm9pZCAwJiZ7eTI6KEE9ay5nbG9iYWxzLnNlcmllc1JhbmdlKT09PW51bGx8fEE9PT12b2lkIDB8fChsPUFbaV0pPT09bnVsbHx8bD09PXZvaWQgMHx8KHU9bFthXSk9PT1udWxsfHx1PT09dm9pZCAwfHwoeD11LnlbMF0pPT09bnVsbHx8eD09PXZvaWQgMD92b2lkIDA6eC55Mn0pO2lmKHYpe2lmKFMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoWChYKHt9LFcpLHt9LHtzaGFyZWQ6IXRoaXMuc2hvd09uSW50ZXJzZWN0JiZ0aGlzLnRDb25maWcuc2hhcmVkfSkpLEMpay5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU+MD9TLm1hcmtlci5lbmxhcmdlUG9pbnRzKGEpOlMudG9vbHRpcFBvc2l0aW9uLm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlcihhKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYodGhpcy5iYXJTZXJpZXNIZWlnaHQ9dGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KEwpLHRoaXMuYmFyU2VyaWVzSGVpZ2h0PjApKXt2YXIgTj1uZXcgTSh0aGlzLmN0eCksVj1rLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhW2o9J1wiLmNvbmNhdChhLFwiJ11cIikpO3RoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhhLGkpO2Zvcih2YXIgaj0wO2o8Vi5sZW5ndGg7aisrKU4ucGF0aE1vdXNlRW50ZXIoVltqXSl9fWVsc2UgUy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyhYKHtzaGFyZWQ6ITF9LFcpKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmUy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhhLGkpLEMmJlMudG9vbHRpcFBvc2l0aW9uLm1vdmVNYXJrZXJzKGksYSl9fV0pLHl9KCksWXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWUsdGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnRvdGFsLmZvcm1hdHRlcix0aGlzLnRvdGFsRm9ybWF0dGVyfHwodGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKX1yZXR1cm4gWSh5LFt7a2V5OlwiaGFuZGxlQmFyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUueCxpPWUueSxhPWUueTEscz1lLnkyLHI9ZS5pLG49ZS5qLG89ZS5yZWFsSW5kZXgsaD1lLmdyb3VwSW5kZXgsYz1lLnNlcmllcyxkPWUuYmFySGVpZ2h0LGc9ZS5iYXJXaWR0aCxwPWUuYmFyWFBvc2l0aW9uLGY9ZS5iYXJZUG9zaXRpb24sYj1lLnZpc2libGVTZXJpZXMsbT1lLnJlbmRlcmVkUGF0aCx3PXRoaXMudyxBPW5ldyBNKHRoaXMuYmFyQ3R4LmN0eCksbD1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtvXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCx1PXQrcGFyc2VGbG9hdChnKmIpLHg9aStwYXJzZUZsb2F0KGQqYik7dy5nbG9iYWxzLmlzWE51bWVyaWMmJiF3Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodT10K3BhcnNlRmxvYXQoZyooYisxKSkseD1pK3BhcnNlRmxvYXQoZCooYisxKSktbCk7dmFyIHYsaz1udWxsLFM9dCxDPWksTD17fSxJPXcuY29uZmlnLmRhdGFMYWJlbHMsej10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMsVD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMudG90YWw7ZiE9PXZvaWQgMCYmdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKHg9ZixDPWYpLHAhPT12b2lkIDAmJnRoaXMuYmFyQ3R4LmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXImJih1PXAsUz1wKTt2YXIgRT1JLm9mZnNldFgsUj1JLm9mZnNldFksTz17d2lkdGg6MCxoZWlnaHQ6MH07aWYody5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgRD10aGlzLmJhckN0eC5zZXJpZXNbcl1bbl07Tz1BLmdldFRleHRSZWN0cyh3Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShEKSxwYXJzZUZsb2F0KEkuc3R5bGUuZm9udFNpemUpKX12YXIgVz17eDp0LHk6aSxpOnIsajpuLHJlYWxJbmRleDpvLGdyb3VwSW5kZXg6aHx8LTEscmVuZGVyZWRQYXRoOm0sYmN4OnUsYmN5OngsYmFySGVpZ2h0OmQsYmFyV2lkdGg6Zyx0ZXh0UmVjdHM6TyxzdHJva2VXaWR0aDpsLGRhdGFMYWJlbHNYOlMsZGF0YUxhYmVsc1k6QyxkYXRhTGFiZWxzQ29uZmlnOkksYmFyRGF0YUxhYmVsc0NvbmZpZzp6LGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpULG9mZlg6RSxvZmZZOlJ9O3JldHVybiBMPXRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD90aGlzLmNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb24oVyk6dGhpcy5jYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uKFcpLG0uYXR0cih7Y3k6TC5iY3ksY3g6TC5iY3gsajpuLHZhbDpjW3JdW25dLGJhckhlaWdodDpkLGJhcldpZHRoOmd9KSx2PXRoaXMuZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzKHt4OkwuZGF0YUxhYmVsc1gseTpMLmRhdGFMYWJlbHNZLHZhbDp0aGlzLmJhckN0eC5pc1JhbmdlQmFyP1thLHNdOmNbcl1bbl0saTpvLGo6bixiYXJXaWR0aDpnLGJhckhlaWdodDpkLHRleHRSZWN0czpPLGRhdGFMYWJlbHNDb25maWc6SX0pLHcuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJlQuZW5hYmxlZCYmKGs9dGhpcy5kcmF3VG90YWxEYXRhTGFiZWxzKHt4OkwudG90YWxEYXRhTGFiZWxzWCx5OkwudG90YWxEYXRhTGFiZWxzWSxiYXJXaWR0aDpnLGJhckhlaWdodDpkLHJlYWxJbmRleDpvLHRleHRBbmNob3I6TC50b3RhbERhdGFMYWJlbHNBbmNob3IsdmFsOnRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6byxqOm59KSxkYXRhTGFiZWxzQ29uZmlnOkksYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnOlR9KSkse2RhdGFMYWJlbHM6dix0b3RhbERhdGFMYWJlbHM6a319fSx7a2V5OlwiZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFsSW5kZXgsaT1lLmosYT10aGlzLncscz10aGlzLmJhckN0eC5zdGFja2VkU2VyaWVzVG90YWxzW2ldO3JldHVybiB0aGlzLnRvdGFsRm9ybWF0dGVyJiYocz10aGlzLnRvdGFsRm9ybWF0dGVyKHMsWChYKHt9LGEpLHt9LHtzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OmksdzphfSkpKSxzfX0se2tleTpcImNhbGN1bGF0ZUNvbHVtbnNEYXRhTGFiZWxzUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGE9dGhpcy53LHM9ZS5pLHI9ZS5qLG49ZS5yZWFsSW5kZXgsbz1lLmdyb3VwSW5kZXgsaD1lLnksYz1lLmJjeCxkPWUuYmFyV2lkdGgsZz1lLmJhckhlaWdodCxwPWUudGV4dFJlY3RzLGY9ZS5kYXRhTGFiZWxzWCxiPWUuZGF0YUxhYmVsc1ksbT1lLmRhdGFMYWJlbHNDb25maWcsdz1lLmJhckRhdGFMYWJlbHNDb25maWcsQT1lLmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxsPWUuc3Ryb2tlV2lkdGgsdT1lLm9mZlgseD1lLm9mZlk7Zz1NYXRoLmFicyhnKTt2YXIgdj1hLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbj09PVwidmVydGljYWxcIixrPXRoaXMuYmFyQ3R4LmJhckhlbHBlcnMuZ2V0WmVyb1ZhbHVlRW5jb3VudGVycyh7aTpzLGo6cn0pLnplcm9FbmNvdW50ZXJzO2M9Yy1sLzIrKG8hPT0tMT9vKmQ6MCk7dmFyIFM9YS5nbG9iYWxzLmdyaWRXaWR0aC9hLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyP2YrPWQvMjooZj1hLmdsb2JhbHMuaXNYTnVtZXJpYz9jLWQvMit1OmMtUytkLzIrdSxrPjAmJmEuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCYmKGYtPWQqaykpLHYmJihmPWYrcC5oZWlnaHQvMi1sLzItMik7dmFyIEM9dGhpcy5iYXJDdHguc2VyaWVzW3NdW3JdPDAsTD1oO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoTD1oLWcrKEM/MipnOjApLGgtPWcpLHcucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOmI9dj9DP0wtZy8yK3g6TCtnLzIteDpDP0wtZy8yK3AuaGVpZ2h0LzIreDpMK2cvMitwLmhlaWdodC8yLXg7YnJlYWs7Y2FzZVwiYm90dG9tXCI6Yj12P0M/TC1nK3g6TCtnLXg6Qz9MLWcrcC5oZWlnaHQrbCt4OkwrZy1wLmhlaWdodC8yK2wteDticmVhaztjYXNlXCJ0b3BcIjpiPXY/Qz9MK3g6TC14OkM/TC1wLmhlaWdodC8yLXg6TCtwLmhlaWdodCt4fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09biYmQS5lbmFibGVkKXt2YXIgST1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om4sajpyfSksbS5mb250U2l6ZSk7dD1DP0wtSS5oZWlnaHQvMi14LUEub2Zmc2V0WSsxODpMK0kuaGVpZ2h0K3grQS5vZmZzZXRZLTE4LGk9ZitBLm9mZnNldFh9cmV0dXJuIGEuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChiPDA/Yj0wK2w6YitwLmhlaWdodC8zPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoYj1hLmdsb2JhbHMuZ3JpZEhlaWdodC1sKSkse2JjeDpjLGJjeTpoLGRhdGFMYWJlbHNYOmYsZGF0YUxhYmVsc1k6Yix0b3RhbERhdGFMYWJlbHNYOmksdG90YWxEYXRhTGFiZWxzWTp0LHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpcIm1pZGRsZVwifX19LHtrZXk6XCJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9ZS54LGE9ZS5pLHM9ZS5qLHI9ZS5yZWFsSW5kZXgsbj1lLmdyb3VwSW5kZXgsbz1lLmJjeSxoPWUuYmFySGVpZ2h0LGM9ZS5iYXJXaWR0aCxkPWUudGV4dFJlY3RzLGc9ZS5kYXRhTGFiZWxzWCxwPWUuc3Ryb2tlV2lkdGgsZj1lLmRhdGFMYWJlbHNDb25maWcsYj1lLmJhckRhdGFMYWJlbHNDb25maWcsbT1lLmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyx3PWUub2ZmWCxBPWUub2ZmWSxsPXQuZ2xvYmFscy5ncmlkSGVpZ2h0L3QuZ2xvYmFscy5kYXRhUG9pbnRzO2M9TWF0aC5hYnMoYyk7dmFyIHUseCx2PShvKz1uIT09LTE/bipoOjApLSh0aGlzLmJhckN0eC5pc1JhbmdlQmFyPzA6bCkraC8yK2QuaGVpZ2h0LzIrQS0zLGs9XCJzdGFydFwiLFM9dGhpcy5iYXJDdHguc2VyaWVzW2FdW3NdPDAsQz1pO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1pK2MtKFM/MipjOjApLGk9dC5nbG9iYWxzLmdyaWRXaWR0aC1jKSxiLnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpnPVM/QytjLzItdzpNYXRoLm1heChkLndpZHRoLzIsQy1jLzIpK3c7YnJlYWs7Y2FzZVwiYm90dG9tXCI6Zz1TP0MrYy1wLU1hdGgucm91bmQoZC53aWR0aC8yKS13OkMtYytwK01hdGgucm91bmQoZC53aWR0aC8yKSt3O2JyZWFrO2Nhc2VcInRvcFwiOmc9Uz9DLXArTWF0aC5yb3VuZChkLndpZHRoLzIpLXc6Qy1wLU1hdGgucm91bmQoZC53aWR0aC8yKSt3fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmbS5lbmFibGVkKXt2YXIgTD1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4OnIsajpzfSksZi5mb250U2l6ZSk7Uz8odT1DLXArTWF0aC5yb3VuZChMLndpZHRoLzIpLXctbS5vZmZzZXRYLTE1LGs9XCJlbmRcIik6dT1DLXAtTWF0aC5yb3VuZChMLndpZHRoLzIpK3crbS5vZmZzZXRYKzE1LHg9dittLm9mZnNldFl9cmV0dXJuIHQuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChnPDA/Zz1nK2Qud2lkdGgrcDpnK2Qud2lkdGgvMj50Lmdsb2JhbHMuZ3JpZFdpZHRoJiYoZz10Lmdsb2JhbHMuZ3JpZFdpZHRoLWQud2lkdGgtcCkpLHtiY3g6aSxiY3k6byxkYXRhTGFiZWxzWDpnLGRhdGFMYWJlbHNZOnYsdG90YWxEYXRhTGFiZWxzWDp1LHRvdGFsRGF0YUxhYmVsc1k6eCx0b3RhbERhdGFMYWJlbHNBbmNob3I6a319fSx7a2V5OlwiZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54LGk9ZS55LGE9ZS52YWwscz1lLmkscj1lLmosbj1lLnRleHRSZWN0cyxvPWUuYmFySGVpZ2h0LGg9ZS5iYXJXaWR0aCxjPWUuZGF0YUxhYmVsc0NvbmZpZyxkPXRoaXMudyxnPVwicm90YXRlKDApXCI7ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCImJihnPVwicm90YXRlKC05MCwgXCIuY29uY2F0KHQsXCIsIFwiKS5jb25jYXQoaSxcIilcIikpO3ZhciBwPW5ldyB3ZSh0aGlzLmJhckN0eC5jdHgpLGY9bmV3IE0odGhpcy5iYXJDdHguY3R4KSxiPWMuZm9ybWF0dGVyLG09bnVsbCx3PWQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocyk+LTE7aWYoYy5lbmFibGVkJiYhdyl7bT1mLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIix0cmFuc2Zvcm06Z30pO3ZhciBBPVwiXCI7YSE9PXZvaWQgMCYmKEE9YihhLFgoWCh7fSxkKSx7fSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6ZH0pKSksIWEmJmQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCYmKEE9XCJcIik7dmFyIGw9ZC5nbG9iYWxzLnNlcmllc1tzXVtyXTwwLHU9ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMucG9zaXRpb247ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb249PT1cInZlcnRpY2FsXCImJih1PT09XCJ0b3BcIiYmKGMudGV4dEFuY2hvcj1sP1wiZW5kXCI6XCJzdGFydFwiKSx1PT09XCJjZW50ZXJcIiYmKGMudGV4dEFuY2hvcj1cIm1pZGRsZVwiKSx1PT09XCJib3R0b21cIiYmKGMudGV4dEFuY2hvcj1sP1wiZW5kXCI6XCJzdGFydFwiKSksdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyYmaDxmLmdldFRleHRSZWN0cyhBLHBhcnNlRmxvYXQoYy5zdHlsZS5mb250U2l6ZSkpLndpZHRoJiYoQT1cIlwiKSxkLmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzJiYodGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP24ud2lkdGgvMS42Pk1hdGguYWJzKGgpJiYoQT1cIlwiKTpuLmhlaWdodC8xLjY+TWF0aC5hYnMobykmJihBPVwiXCIpKTt2YXIgeD1YKHt9LGMpO3RoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCYmYTwwJiYoYy50ZXh0QW5jaG9yPT09XCJzdGFydFwiP3gudGV4dEFuY2hvcj1cImVuZFwiOmMudGV4dEFuY2hvcj09PVwiZW5kXCImJih4LnRleHRBbmNob3I9XCJzdGFydFwiKSkscC5wbG90RGF0YUxhYmVsc1RleHQoe3g6dCx5OmksdGV4dDpBLGk6cyxqOnIscGFyZW50Om0sZGF0YUxhYmVsc0NvbmZpZzp4LGFsd2F5c0RyYXdEYXRhTGFiZWw6ITAsb2Zmc2V0Q29ycmVjdGlvbjohMH0pfXJldHVybiBtfX0se2tleTpcImRyYXdUb3RhbERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPWUueCxhPWUueSxzPWUudmFsLHI9ZS5iYXJXaWR0aCxuPWUuYmFySGVpZ2h0LG89ZS5yZWFsSW5kZXgsaD1lLnRleHRBbmNob3IsYz1lLmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxkPXRoaXMudyxnPW5ldyBNKHRoaXMuYmFyQ3R4LmN0eCk7cmV0dXJuIGMuZW5hYmxlZCYmaSE9PXZvaWQgMCYmYSE9PXZvaWQgMCYmdGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1vJiYodD1nLmRyYXdUZXh0KHt4OmktKCFkLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZkLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aD9yL2QuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoOjApLHk6YS0oZC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmZC5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGg/bi9kLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDowKSxmb3JlQ29sb3I6Yy5zdHlsZS5jb2xvcix0ZXh0OnMsdGV4dEFuY2hvcjpoLGZvbnRGYW1pbHk6Yy5zdHlsZS5mb250RmFtaWx5LGZvbnRTaXplOmMuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpjLnN0eWxlLmZvbnRXZWlnaHR9KSksdH19XSkseX0oKSxGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5OlwiaW5pdFZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudzt0aGlzLmJhckN0eC5zZXJpZXM9ZSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zPTAsdGhpcy5iYXJDdHguc2VyaWVzTGVuPTAsdGhpcy5iYXJDdHgudmlzaWJsZUk9LTEsdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPTE7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspaWYoZVtpXS5sZW5ndGg+MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj10aGlzLmJhckN0eC5zZXJpZXNMZW4rMSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zKz1lW2ldLmxlbmd0aCksdC5nbG9iYWxzLmlzWE51bWVyaWMpZm9yKHZhciBhPTA7YTxlW2ldLmxlbmd0aDthKyspdC5nbG9iYWxzLnNlcmllc1hbaV1bYV0+dC5nbG9iYWxzLm1pblgmJnQuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPHQuZ2xvYmFscy5tYXhYJiZ0aGlzLmJhckN0eC52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz10Lmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5zZXJpZXNMZW49PT0wJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPTEpLHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcz1bXSx0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHRoaXMuY2hlY2taZXJvU2VyaWVzKHtzZXJpZXM6ZX0pfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQsaSxhLHMscixuLG8saD10aGlzLncsYz1oLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoYz1oLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7dmFyIGQ9dGhpcy5iYXJDdHguc2VyaWVzTGVuO2lmKGguY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKGQ9MSksdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKXM9KGk9aC5nbG9iYWxzLmdyaWRIZWlnaHQvYykvZCxoLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGk9aC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy5iYXJDdHgudG90YWxJdGVtcykvdGhpcy5iYXJDdHguc2VyaWVzTGVuKSxzPXMqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApLzEwMCxTdHJpbmcodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQpLmluZGV4T2YoXCIlXCIpPT09LTEmJihzPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSksbz10aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWStoLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9oLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFk6MCksdGhpcy5iYXJDdHguaXNGdW5uZWwmJihvPWguZ2xvYmFscy5ncmlkV2lkdGgvMiksdD0oaS1zKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMjtlbHNle2lmKGE9aC5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLmJhckN0eC52aXNpYmxlSXRlbXMsaC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYT1oLmdsb2JhbHMuZ3JpZFdpZHRoL2guZ2xvYmFscy5kYXRhUG9pbnRzKSxyPWEvZCpwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDAsaC5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBnPXRoaXMuYmFyQ3R4LnhSYXRpbztoLmdsb2JhbHMubWluWERpZmYmJmguZ2xvYmFscy5taW5YRGlmZiE9PS41JiZoLmdsb2JhbHMubWluWERpZmYvZz4wJiYoYT1oLmdsb2JhbHMubWluWERpZmYvZyksKHI9YS9kKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMCk8MSYmKHI9MSl9U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpPT09LTEmJihyPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApKSxuPWguZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XS0odGhpcy5iYXJDdHguaXNSZXZlcnNlZD9oLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD8yKnRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSxlPWguZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhhLXIqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yfXJldHVybiBoLmdsb2JhbHMuYmFySGVpZ2h0PXMsaC5nbG9iYWxzLmJhcldpZHRoPXIse3g6ZSx5OnQseURpdmlzaW9uOmkseERpdmlzaW9uOmEsYmFySGVpZ2h0OnMsYmFyV2lkdGg6cix6ZXJvSDpuLHplcm9XOm99fX0se2tleTpcImluaXRpYWxpemVTdGFja2VkUHJldlZhcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnc7dC5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz90Lmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goZnVuY3Rpb24oaSl7ZVtpXXx8KGVbaV09e30pLGVbaV0ucHJldlk9W10sZVtpXS5wcmV2WD1bXSxlW2ldLnByZXZZRj1bXSxlW2ldLnByZXZYRj1bXSxlW2ldLnByZXZZVmFsPVtdLGVbaV0ucHJldlhWYWw9W119KTooZS5wcmV2WT1bXSxlLnByZXZYPVtdLGUucHJldllGPVtdLGUucHJldlhGPVtdLGUucHJldllWYWw9W10sZS5wcmV2WFZhbD1bXSl9fSx7a2V5OlwiaW5pdGlhbGl6ZVN0YWNrZWRYWVZhcnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnc7dC5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz90Lmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goZnVuY3Rpb24oaSl7ZVtpXXx8KGVbaV09e30pLGVbaV0ueEFycmo9W10sZVtpXS54QXJyakY9W10sZVtpXS54QXJyalZhbD1bXSxlW2ldLnlBcnJqPVtdLGVbaV0ueUFycmpGPVtdLGVbaV0ueUFycmpWYWw9W119KTooZS54QXJyaj1bXSxlLnhBcnJqRj1bXSxlLnhBcnJqVmFsPVtdLGUueUFycmo9W10sZS55QXJyakY9W10sZS55QXJyalZhbD1bXSl9fSx7a2V5OlwiZ2V0UGF0aEZpbGxDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe3ZhciBzLHIsbixvLGg9dGhpcy53LGM9bmV3IHNlKHRoaXMuYmFyQ3R4LmN0eCksZD1udWxsLGc9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9pOnQ7cmV0dXJuIHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5sZW5ndGg+MCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLm1hcChmdW5jdGlvbihwKXtlW3RdW2ldPj1wLmZyb20mJmVbdF1baV08PXAudG8mJihkPXAuY29sb3IpfSksaC5jb25maWcuc2VyaWVzW3RdLmRhdGFbaV0mJmguY29uZmlnLnNlcmllc1t0XS5kYXRhW2ldLmZpbGxDb2xvciYmKGQ9aC5jb25maWcuc2VyaWVzW3RdLmRhdGFbaV0uZmlsbENvbG9yKSxjLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9nOmEsZGF0YVBvaW50SW5kZXg6aSxjb2xvcjpkLHZhbHVlOmVbdF1baV0sZmlsbENvbmZpZzoocz1oLmNvbmZpZy5zZXJpZXNbdF0uZGF0YVtpXSk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLmZpbGwsZmlsbFR5cGU6KHI9aC5jb25maWcuc2VyaWVzW3RdLmRhdGFbaV0pIT09bnVsbCYmciE9PXZvaWQgMCYmKG49ci5maWxsKSE9PW51bGwmJm4hPT12b2lkIDAmJm4udHlwZT8obz1oLmNvbmZpZy5zZXJpZXNbdF0uZGF0YVtpXSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmZpbGwudHlwZTpBcnJheS5pc0FycmF5KGguY29uZmlnLmZpbGwudHlwZSk/aC5jb25maWcuZmlsbC50eXBlW3RdOmguY29uZmlnLmZpbGwudHlwZX0pfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhPTAscz10aGlzLnc7cmV0dXJuIHRoaXMuYmFyQ3R4LnNlcmllc1tlXVt0XT09PXZvaWQgMHx8dGhpcy5iYXJDdHguc2VyaWVzW2VdW3RdPT09bnVsbD90aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMDp0aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMSxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlfHwoYT1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkpLGF9fSx7a2V5Olwic2hvdWxkQXBwbHlSYWRpdXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLncsaT0hMTtyZXR1cm4gdC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cz4wJiYodC5jb25maWcuY2hhcnQuc3RhY2tlZCYmdC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c1doZW5TdGFja2VkPT09XCJsYXN0XCI/dGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1lJiYoaT0hMCk6aT0hMCksaX19LHtrZXk6XCJiYXJCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5qLGk9ZS5pLGE9ZS54MSxzPWUueDIscj1lLnkxLG49ZS55MixvPWUuZWxTZXJpZXMsaD10aGlzLncsYz1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLGQ9bmV3IGllKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtpZih0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aD4wJiZkPT09aSl7dD49dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgmJih0JT10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCk7dmFyIGc9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9yc1t0XSxwPWMuZHJhd1JlY3QoYSE9PXZvaWQgMD9hOjAsciE9PXZvaWQgMD9yOjAscyE9PXZvaWQgMD9zOmguZ2xvYmFscy5ncmlkV2lkdGgsbiE9PXZvaWQgMD9uOmguZ2xvYmFscy5ncmlkSGVpZ2h0LHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJSYWRpdXMsZyx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyT3BhY2l0eSk7by5hZGQocCkscC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWJhY2tncm91bmRCYXJcIil9fX0se2tleTpcImdldENvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLmJhcldpZHRoLGE9ZS5iYXJYUG9zaXRpb24scz1lLnkxLHI9ZS55MixuPWUuc3Ryb2tlV2lkdGgsbz1lLnNlcmllc0dyb3VwLGg9ZS5yZWFsSW5kZXgsYz1lLmksZD1lLmosZz1lLncscD1uZXcgTSh0aGlzLmJhckN0eC5jdHgpOyhuPUFycmF5LmlzQXJyYXkobik/bltoXTpuKXx8KG49MCk7dmFyIGY9aSxiPWE7KHQ9Zy5jb25maWcuc2VyaWVzW2hdLmRhdGFbZF0pIT09bnVsbCYmdCE9PXZvaWQgMCYmdC5jb2x1bW5XaWR0aE9mZnNldCYmKGI9YS1nLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtkXS5jb2x1bW5XaWR0aE9mZnNldC8yLGY9aStnLmNvbmZpZy5zZXJpZXNbaF0uZGF0YVtkXS5jb2x1bW5XaWR0aE9mZnNldCk7dmFyIG09Yix3PWIrZjtzKz0uMDAxLHIrPS4wMDE7dmFyIEE9cC5tb3ZlKG0scyksbD1wLm1vdmUobSxzKSx1PXAubGluZSh3LW4scyk7aWYoZy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihsPXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChoLGQsITEpKSxBPUErcC5saW5lKG0scikrcC5saW5lKHctbixyKStwLmxpbmUody1uLHMpKyhnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb249PT1cImFyb3VuZFwiP1wiIFpcIjpcIiB6XCIpLGw9bCtwLmxpbmUobSxzKSt1K3UrdSt1K3UrcC5saW5lKG0scykrKGcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj09PVwiYXJvdW5kXCI/XCIgWlwiOlwiIHpcIiksdGhpcy5zaG91bGRBcHBseVJhZGl1cyhoKSYmKEE9cC5yb3VuZFBhdGhDb3JuZXJzKEEsZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cykpLGcuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciB4PXRoaXMuYmFyQ3R4O2cuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHMmJm8mJih4PXRoaXMuYmFyQ3R4W29dKSx4LnlBcnJqLnB1c2gocikseC55QXJyakYucHVzaChNYXRoLmFicyhzLXIpKSx4LnlBcnJqVmFsLnB1c2godGhpcy5iYXJDdHguc2VyaWVzW2NdW2RdKX1yZXR1cm57cGF0aFRvOkEscGF0aEZyb206bH19fSx7a2V5OlwiZ2V0QmFycGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPWUuYmFyWVBvc2l0aW9uLGE9ZS5iYXJIZWlnaHQscz1lLngxLHI9ZS54MixuPWUuc3Ryb2tlV2lkdGgsbz1lLnNlcmllc0dyb3VwLGg9ZS5yZWFsSW5kZXgsYz1lLmksZD1lLmosZz1lLncscD1uZXcgTSh0aGlzLmJhckN0eC5jdHgpOyhuPUFycmF5LmlzQXJyYXkobik/bltoXTpuKXx8KG49MCk7dmFyIGY9aSxiPWE7KHQ9Zy5jb25maWcuc2VyaWVzW2hdLmRhdGFbZF0pIT09bnVsbCYmdCE9PXZvaWQgMCYmdC5iYXJIZWlnaHRPZmZzZXQmJihmPWktZy5jb25maWcuc2VyaWVzW2hdLmRhdGFbZF0uYmFySGVpZ2h0T2Zmc2V0LzIsYj1hK2cuY29uZmlnLnNlcmllc1toXS5kYXRhW2RdLmJhckhlaWdodE9mZnNldCk7dmFyIG09Zix3PWYrYjtzKz0uMDAxLHIrPS4wMDE7dmFyIEE9cC5tb3ZlKHMsbSksbD1wLm1vdmUocyxtKTtnLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGw9dGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGgsZCwhMSkpO3ZhciB1PXAubGluZShzLHctbik7aWYoQT1BK3AubGluZShyLG0pK3AubGluZShyLHctbikrdSsoZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uPT09XCJhcm91bmRcIj9cIiBaXCI6XCIgelwiKSxsPWwrcC5saW5lKHMsbSkrdSt1K3UrdSt1K3AubGluZShzLG0pKyhnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb249PT1cImFyb3VuZFwiP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMoaCkmJihBPXAucm91bmRQYXRoQ29ybmVycyhBLGcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxnLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgeD10aGlzLmJhckN0eDtnLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZvJiYoeD10aGlzLmJhckN0eFtvXSkseC54QXJyai5wdXNoKHIpLHgueEFycmpGLnB1c2goTWF0aC5hYnMocy1yKSkseC54QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1tjXVtkXSl9cmV0dXJue3BhdGhUbzpBLHBhdGhGcm9tOmx9fX0se2tleTpcImNoZWNrWmVyb1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnNlcmllcyxpPXRoaXMudyxhPTA7YTx0Lmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPHRbaS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtyKyspcys9dFthXVtyXTtzPT09MCYmdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzLnB1c2goYSl9fX0se2tleTpcImdldFhGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1syXT90Om51bGw7cmV0dXJuIGUhPW51bGwmJihpPXQrZS90aGlzLmJhckN0eC5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmJhckN0eC5pc1JldmVyc2VkP2UvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW86MCkpLGl9fSx7a2V5OlwiZ2V0WUZvclZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdP3Q6bnVsbDtyZXR1cm4gZSE9bnVsbCYmKGk9dC1lL3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XSsyKih0aGlzLmJhckN0eC5pc1JldmVyc2VkP2UvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApKSxpfX0se2tleTpcImdldEdvYWxWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMpe3ZhciByPXRoaXMsbj10aGlzLncsbz1bXSxoPWZ1bmN0aW9uKGcscCl7dmFyIGY7by5wdXNoKCh0ZShmPXt9LGUsZT09PVwieFwiP3IuZ2V0WEZvclZhbHVlKGcsdCwhMSk6ci5nZXRZRm9yVmFsdWUoZyxpLCExKSksdGUoZixcImF0dHJzXCIscCksZikpfTtpZihuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV0mJm4uZ2xvYmFscy5zZXJpZXNHb2Fsc1thXVtzXSYmQXJyYXkuaXNBcnJheShuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10pJiZuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10uZm9yRWFjaChmdW5jdGlvbihnKXtoKGcudmFsdWUsZyl9KSx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmlzRHVtYmJlbGwmJm4uZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgpe3ZhciBjPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM/dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kdW1iYmVsbENvbG9yczpuLmdsb2JhbHMuY29sb3JzLGQ9e3N0cm9rZUhlaWdodDplPT09XCJ4XCI/MDpuLmdsb2JhbHMubWFya2Vycy5zaXplW2FdLHN0cm9rZVdpZHRoOmU9PT1cInhcIj9uLmdsb2JhbHMubWFya2Vycy5zaXplW2FdOjAsc3Ryb2tlRGFzaEFycmF5OjAsc3Ryb2tlTGluZUNhcDpcInJvdW5kXCIsc3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShjW2FdKT9jW2FdWzBdOmNbYV19O2gobi5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbYV1bc10sZCksaChuLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbYV1bc10sWChYKHt9LGQpLHt9LHtzdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGNbYV0pP2NbYV1bMV06Y1thXX0pKX1yZXR1cm4gb319LHtrZXk6XCJkcmF3R29hbExpbmVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmJhclhQb3NpdGlvbixpPWUuYmFyWVBvc2l0aW9uLGE9ZS5nb2FsWCxzPWUuZ29hbFkscj1lLmJhcldpZHRoLG49ZS5iYXJIZWlnaHQsbz1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLGg9by5ncm91cCh7Y2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtZ3JvdXBzXCJ9KTtoLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIiksdGhpcy5iYXJDdHgudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpoLm5vZGV9KSxoLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIGM9bnVsbDtyZXR1cm4gdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP0FycmF5LmlzQXJyYXkoYSkmJmEuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZz1kLmF0dHJzLnN0cm9rZUhlaWdodCE9PXZvaWQgMD9kLmF0dHJzLnN0cm9rZUhlaWdodDpuLzIscD1pK2crbi8yO2M9by5kcmF3TGluZShkLngscC0yKmcsZC54LHAsZC5hdHRycy5zdHJva2VDb2xvcj9kLmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCxkLmF0dHJzLnN0cm9rZURhc2hBcnJheSxkLmF0dHJzLnN0cm9rZVdpZHRoP2QuYXR0cnMuc3Ryb2tlV2lkdGg6MixkLmF0dHJzLnN0cm9rZUxpbmVDYXApLGguYWRkKGMpfSk6QXJyYXkuaXNBcnJheShzKSYmcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBnPWQuYXR0cnMuc3Ryb2tlV2lkdGghPT12b2lkIDA/ZC5hdHRycy5zdHJva2VXaWR0aDpyLzIscD10K2crci8yO2M9by5kcmF3TGluZShwLTIqZyxkLnkscCxkLnksZC5hdHRycy5zdHJva2VDb2xvcj9kLmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCxkLmF0dHJzLnN0cm9rZURhc2hBcnJheSxkLmF0dHJzLnN0cm9rZUhlaWdodD9kLmF0dHJzLnN0cm9rZUhlaWdodDoyLGQuYXR0cnMuc3Ryb2tlTGluZUNhcCksaC5hZGQoYyl9KSxofX0se2tleTpcImRyYXdCYXJTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnByZXZQYXRocyxpPWUuY3VyclBhdGhzLGE9ZS5jb2xvcixzPXRoaXMudyxyPXQueCxuPXQueDEsbz10LmJhcllQb3NpdGlvbixoPWkueCxjPWkueDEsZD1pLmJhcllQb3NpdGlvbixnPW8raS5iYXJIZWlnaHQscD1uZXcgTSh0aGlzLmJhckN0eC5jdHgpLGY9bmV3IFAsYj1wLm1vdmUobixnKStwLmxpbmUocixnKStwLmxpbmUoaCxkKStwLmxpbmUoYyxkKStwLmxpbmUobixnKSsocy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uPT09XCJhcm91bmRcIj9cIiBaXCI6XCIgelwiKTtyZXR1cm4gcC5kcmF3UGF0aCh7ZDpiLGZpbGw6Zi5zaGFkZUNvbG9yKC41LFAucmdiMmhleChhKSksc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOjAsZmlsbE9wYWNpdHk6MSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1iYXItc2hhZG93c1wifSl9fSx7a2V5OlwiZ2V0WmVyb1ZhbHVlRW5jb3VudGVyc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaSxpPWUuaixhPXRoaXMudyxzPTAscj0wO3JldHVybiBhLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKGZ1bmN0aW9uKG4sbyl7bltpXSYmcysrLG88dCYmbltpXT09PTAmJnIrK30pLHtub25aZXJvQ29sdW1uczpzLHplcm9FbmNvdW50ZXJzOnJ9fX1dKSx5fSgpLEFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlLHQpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuYmFyT3B0aW9ucz1pLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIsdGhpcy5pc0hvcml6b250YWw9dGhpcy5iYXJPcHRpb25zLmhvcml6b250YWwsdGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy5pc051bGxWYWx1ZT0hMSx0aGlzLmlzUmFuZ2VCYXI9aS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmdGhpcy5pc0hvcml6b250YWwsdGhpcy5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZpLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MsdGhpcy5pc0Z1bm5lbD10aGlzLmJhck9wdGlvbnMuaXNGdW5uZWwsdGhpcy54eVJhdGlvcz10LHRoaXMueHlSYXRpb3MhPT1udWxsJiYodGhpcy54UmF0aW89dC54UmF0aW8sdGhpcy55UmF0aW89dC55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz10LmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89dC5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT10LmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPXQuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTAsdGhpcy5wYXRoQXJyPVtdO3ZhciBhPW5ldyBpZSh0aGlzLmN0eCk7dGhpcy5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD1hLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiLFtcImJhclwiLFwiY29sdW1uXCJdKTt2YXIgcz1hLmdldEJhclNlcmllc0luZGljZXMoKSxyPW5ldyBxKHRoaXMuY3R4KTt0aGlzLnN0YWNrZWRTZXJpZXNUb3RhbHM9ci5nZXRTdGFja2VkU2VyaWVzVG90YWxzKHRoaXMudy5jb25maWcuc2VyaWVzLm1hcChmdW5jdGlvbihuLG8pe3JldHVybiBzLmluZGV4T2Yobyk9PT0tMT9vOi0xfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuIT09LTF9KSksdGhpcy5iYXJIZWxwZXJzPW5ldyBGdCh0aGlzKX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpLHM9bmV3IHEodGhpcy5jdHgsaSk7ZT1zLmdldExvZ1NlcmllcyhlKSx0aGlzLnNlcmllcz1lLHRoaXMueVJhdGlvPXMuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXMoZSk7dmFyIHI9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSk7aS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiZ0aGlzLnRvdGFsSXRlbXM+dGhpcy5iYXJPcHRpb25zLmRhdGFMYWJlbHMubWF4SXRlbXMmJmNvbnNvbGUud2FybihcIldBUk5JTkc6IERhdGFMYWJlbHMgYXJlIGVuYWJsZWQgYnV0IHRoZXJlIGFyZSB0b28gbWFueSB0byBkaXNwbGF5LiBUaGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZSB3aGVuIHJlbmRlcmluZyAtIEFwZXhDaGFydHNcIik7Zm9yKHZhciBuPTAsbz0wO248ZS5sZW5ndGg7bisrLG8rKyl7dmFyIGgsYyxkLGcscD12b2lkIDAsZj12b2lkIDAsYj1bXSxtPVtdLHc9aS5nbG9iYWxzLmNvbWJvQ2hhcnRzP3Rbbl06bixBPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixyZWw6bisxLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW3ddKSxcImRhdGE6cmVhbEluZGV4XCI6d30pO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKEEsdyksZVtuXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgbD0wLHU9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD13KSx0aGlzLmlzUmV2ZXJzZWQ9aS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmaS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgeD10aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO2Y9eC55LGw9eC5iYXJIZWlnaHQsYz14LnlEaXZpc2lvbixnPXguemVyb1cscD14LngsdT14LmJhcldpZHRoLGg9eC54RGl2aXNpb24sZD14Lnplcm9ILHRoaXMuaG9yaXpvbnRhbHx8bS5wdXNoKHArdS8yKTt2YXIgdj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp3fSk7aS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDp2Lm5vZGV9KSx2Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIik7dmFyIGs9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxTPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2hhZG93c1wifSk7aS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpTLm5vZGV9KSxTLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIik7Zm9yKHZhciBDPTA7QzxpLmdsb2JhbHMuZGF0YVBvaW50cztDKyspe3ZhciBMPXRoaXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChuLEMsdyksST1udWxsLHo9e2luZGV4ZXM6e2k6bixqOkMscmVhbEluZGV4OncsYmM6b30seDpwLHk6ZixzdHJva2VXaWR0aDpMLGVsU2VyaWVzOkF9O3RoaXMuaXNIb3Jpem9udGFsPyhJPXRoaXMuZHJhd0JhclBhdGhzKFgoWCh7fSx6KSx7fSx7YmFySGVpZ2h0OmwsemVyb1c6Zyx5RGl2aXNpb246Y30pKSx1PXRoaXMuc2VyaWVzW25dW0NdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8pOihJPXRoaXMuZHJhd0NvbHVtblBhdGhzKFgoWCh7fSx6KSx7fSx7eERpdmlzaW9uOmgsYmFyV2lkdGg6dSx6ZXJvSDpkfSkpLGw9dGhpcy5zZXJpZXNbbl1bQ10vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSk7dmFyIFQ9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IoZSxuLEMsdyk7aWYodGhpcy5pc0Z1bm5lbCYmdGhpcy5iYXJPcHRpb25zLmlzRnVubmVsM2QmJnRoaXMucGF0aEFyci5sZW5ndGgmJkM+MCl7dmFyIEU9dGhpcy5iYXJIZWxwZXJzLmRyYXdCYXJTaGFkb3coe2NvbG9yOnR5cGVvZiBUPT1cInN0cmluZ1wiJiYoVD09bnVsbD92b2lkIDA6VC5pbmRleE9mKFwidXJsXCIpKT09PS0xP1Q6UC5oZXhUb1JnYmEoaS5nbG9iYWxzLmNvbG9yc1tuXSkscHJldlBhdGhzOnRoaXMucGF0aEFyclt0aGlzLnBhdGhBcnIubGVuZ3RoLTFdLGN1cnJQYXRoczpJfSk7RSYmUy5hZGQoRSl9dGhpcy5wYXRoQXJyLnB1c2goSSk7dmFyIFI9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkkuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpJLmJhcllQb3NpdGlvbixnb2FsWDpJLmdvYWxYLGdvYWxZOkkuZ29hbFksYmFySGVpZ2h0OmwsYmFyV2lkdGg6dX0pO1ImJmsuYWRkKFIpLGY9SS55LHA9SS54LEM+MCYmbS5wdXNoKHArdS8yKSxiLnB1c2goZiksdGhpcy5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp3LHBhdGhGaWxsOlQsajpDLGk6bixwYXRoRnJvbTpJLnBhdGhGcm9tLHBhdGhUbzpJLnBhdGhUbyxzdHJva2VXaWR0aDpMLGVsU2VyaWVzOkEseDpwLHk6ZixzZXJpZXM6ZSxiYXJIZWlnaHQ6SS5iYXJIZWlnaHQ/SS5iYXJIZWlnaHQ6bCxiYXJXaWR0aDpJLmJhcldpZHRoP0kuYmFyV2lkdGg6dSxlbERhdGFMYWJlbHNXcmFwOnYsZWxHb2Fsc01hcmtlcnM6ayxlbEJhclNoYWRvd3M6Uyx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcImJhclwifSl9aS5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbd109bSxpLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t3XT1iLHIuYWRkKEEpfXJldHVybiByfX0se2tleTpcInJlbmRlclNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhbEluZGV4LGk9ZS5wYXRoRmlsbCxhPWUubGluZUZpbGwscz1lLmoscj1lLmksbj1lLmdyb3VwSW5kZXgsbz1lLnBhdGhGcm9tLGg9ZS5wYXRoVG8sYz1lLnN0cm9rZVdpZHRoLGQ9ZS5lbFNlcmllcyxnPWUueCxwPWUueSxmPWUueTEsYj1lLnkyLG09ZS5zZXJpZXMsdz1lLmJhckhlaWdodCxBPWUuYmFyV2lkdGgsbD1lLmJhclhQb3NpdGlvbix1PWUuYmFyWVBvc2l0aW9uLHg9ZS5lbERhdGFMYWJlbHNXcmFwLHY9ZS5lbEdvYWxzTWFya2VycyxrPWUuZWxCYXJTaGFkb3dzLFM9ZS52aXNpYmxlU2VyaWVzLEM9ZS50eXBlLEw9dGhpcy53LEk9bmV3IE0odGhpcy5jdHgpO2F8fChhPXRoaXMuYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9MLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tzXTpMLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1t0XSksTC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10mJkwuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdLnN0cm9rZUNvbG9yJiYoYT1MLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciksdGhpcy5pc051bGxWYWx1ZSYmKGk9XCJub25lXCIpO3ZhciB6PXMvTC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmRlbGF5KihMLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkL0wuZ2xvYmFscy5kYXRhUG9pbnRzKS8yLjQsVD1JLnJlbmRlclBhdGhzKHtpOnIsajpzLHJlYWxJbmRleDp0LHBhdGhGcm9tOm8scGF0aFRvOmgsc3Ryb2tlOmEsc3Ryb2tlV2lkdGg6YyxzdHJva2VMaW5lQ2FwOkwuY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6aSxhbmltYXRpb25EZWxheTp6LGluaXRpYWxTcGVlZDpMLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpMLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoQyxcIi1hcmVhXCIpfSk7VC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChMLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBFPUwuY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztFLmNvdW50PjAmJnM+PUwuZ2xvYmFscy5kYXRhUG9pbnRzLUUuY291bnQmJihULm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLEUuZGFzaEFycmF5KSxULm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsRS5zdHJva2VXaWR0aCksVC5ub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLEUuZmlsbE9wYWNpdHkpKSxmIT09dm9pZCAwJiZiIT09dm9pZCAwJiYoVC5hdHRyKFwiZGF0YS1yYW5nZS15MVwiLGYpLFQuYXR0cihcImRhdGEtcmFuZ2UteTJcIixiKSksbmV3ICQodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihULHQscyksZC5hZGQoVCk7dmFyIFI9bmV3IFl0KHRoaXMpLmhhbmRsZUJhckRhdGFMYWJlbHMoe3g6Zyx5OnAseTE6Zix5MjpiLGk6cixqOnMsc2VyaWVzOm0scmVhbEluZGV4OnQsZ3JvdXBJbmRleDpuLGJhckhlaWdodDp3LGJhcldpZHRoOkEsYmFyWFBvc2l0aW9uOmwsYmFyWVBvc2l0aW9uOnUscmVuZGVyZWRQYXRoOlQsdmlzaWJsZVNlcmllczpTfSk7cmV0dXJuIFIuZGF0YUxhYmVscyE9PW51bGwmJnguYWRkKFIuZGF0YUxhYmVscyksUi50b3RhbERhdGFMYWJlbHMmJnguYWRkKFIudG90YWxEYXRhTGFiZWxzKSxkLmFkZCh4KSx2JiZkLmFkZCh2KSxrJiZkLmFkZChrKSxkfX0se2tleTpcImRyYXdCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9ZS5pbmRleGVzLGE9ZS5iYXJIZWlnaHQscz1lLnN0cm9rZVdpZHRoLHI9ZS56ZXJvVyxuPWUueCxvPWUueSxoPWUueURpdmlzaW9uLGM9ZS5lbFNlcmllcyxkPXRoaXMudyxnPWkuaSxwPWkuajtpZihkLmdsb2JhbHMuaXNYTnVtZXJpYyl0PShvPShkLmdsb2JhbHMuc2VyaWVzWFtnXVtwXS1kLmdsb2JhbHMubWluWCkvdGhpcy5pbnZlcnRlZFhSYXRpby1hKSthKnRoaXMudmlzaWJsZUk7ZWxzZSBpZihkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciBmPTAsYj0wO2QuZ2xvYmFscy5zZXJpZXNQZXJjZW50LmZvckVhY2goZnVuY3Rpb24odyxBKXt3W3BdJiZmKyssQTxnJiZ3W3BdPT09MCYmYisrfSksZj4wJiYoYT10aGlzLnNlcmllc0xlbiphL2YpLHQ9bythKnRoaXMudmlzaWJsZUksdC09YSpifWVsc2UgdD1vK2EqdGhpcy52aXNpYmxlSTt0aGlzLmlzRnVubmVsJiYoci09KHRoaXMuYmFySGVscGVycy5nZXRYRm9yVmFsdWUodGhpcy5zZXJpZXNbZ11bcF0sciktcikvMiksbj10aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2ddW3BdLHIpO3ZhciBtPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOnQsYmFySGVpZ2h0OmEseDE6cix4MjpuLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmcsajpwLHc6ZH0pO3JldHVybiBkLmdsb2JhbHMuaXNYTnVtZXJpY3x8KG8rPWgpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOnAsaTpnLHkxOnQtYSp0aGlzLnZpc2libGVJLHkyOmEqdGhpcy5zZXJpZXNMZW4sZWxTZXJpZXM6Y30pLHtwYXRoVG86bS5wYXRoVG8scGF0aEZyb206bS5wYXRoRnJvbSx4MTpyLHg6bix5Om8sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLGcscCksYmFyWVBvc2l0aW9uOnQsYmFySGVpZ2h0OmF9fX0se2tleTpcImRyYXdDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9ZS5pbmRleGVzLGE9ZS54LHM9ZS55LHI9ZS54RGl2aXNpb24sbj1lLmJhcldpZHRoLG89ZS56ZXJvSCxoPWUuc3Ryb2tlV2lkdGgsYz1lLmVsU2VyaWVzLGQ9dGhpcy53LGc9aS5yZWFsSW5kZXgscD1pLmksZj1pLmosYj1pLmJjO2lmKGQuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgbT10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6YSxqOmYscmVhbEluZGV4OmcsYmFyV2lkdGg6bn0pO2E9bS54LHQ9bS5iYXJYUG9zaXRpb259ZWxzZSBpZihkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciB3PXRoaXMuYmFySGVscGVycy5nZXRaZXJvVmFsdWVFbmNvdW50ZXJzKHtpOnAsajpmfSksQT13Lm5vblplcm9Db2x1bW5zLGw9dy56ZXJvRW5jb3VudGVycztBPjAmJihuPXRoaXMuc2VyaWVzTGVuKm4vQSksdD1hK24qdGhpcy52aXNpYmxlSSx0LT1uKmx9ZWxzZSB0PWErbip0aGlzLnZpc2libGVJO3M9dGhpcy5iYXJIZWxwZXJzLmdldFlGb3JWYWx1ZSh0aGlzLnNlcmllc1twXVtmXSxvKTt2YXIgdT10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjp0LGJhcldpZHRoOm4seTE6byx5MjpzLHN0cm9rZVdpZHRoOmgsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOnAsajpmLHc6ZH0pO3JldHVybiBkLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGErPXIpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzpiLGo6ZixpOnAseDE6dC1oLzItbip0aGlzLnZpc2libGVJLHgyOm4qdGhpcy5zZXJpZXNMZW4raC8yLGVsU2VyaWVzOmN9KSx7cGF0aFRvOnUucGF0aFRvLHBhdGhGcm9tOnUucGF0aEZyb20seDphLHk6cyxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG8scCxmKSxiYXJYUG9zaXRpb246dCxiYXJXaWR0aDpufX19LHtrZXk6XCJnZXRCYXJYRm9yTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54LGk9ZS5iYXJXaWR0aCxhPWUucmVhbEluZGV4LHM9ZS5qLHI9dGhpcy53LG49YTtyZXR1cm4gci5nbG9iYWxzLnNlcmllc1hbYV0ubGVuZ3RofHwobj1yLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleCksci5nbG9iYWxzLnNlcmllc1hbbl1bc10mJih0PShyLmdsb2JhbHMuc2VyaWVzWFtuXVtzXS1yLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8taSp0aGlzLnNlcmllc0xlbi8yKSx7YmFyWFBvc2l0aW9uOnQraSp0aGlzLnZpc2libGVJLHg6dH19fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGksYT10aGlzLncscz0wO3M8YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3MrKyl7dmFyIHI9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc107ci5wYXRocyYmci5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoci5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoZSwxMCkmJmEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW3RdIT09dm9pZCAwJiYoaT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1t0XS5kKX1yZXR1cm4gaX19XSkseX0oKSxvdD1mdW5jdGlvbih5KXt1ZSh0LEFlKTt2YXIgZT1wZSh0KTtmdW5jdGlvbiB0KCl7cmV0dXJuIEYodGhpcyx0KSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gWSh0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGksYSl7dmFyIHM9dGhpcyxyPXRoaXMudzt0aGlzLmdyYXBoaWNzPW5ldyBNKHRoaXMuY3R4KSx0aGlzLmJhcj1uZXcgQWUodGhpcy5jdHgsdGhpcy54eVJhdGlvcyk7dmFyIG49bmV3IHEodGhpcy5jdHgscik7aT1uLmdldExvZ1NlcmllcyhpKSx0aGlzLnlSYXRpbz1uLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKGkpLHIuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZT09PVwiMTAwJVwiJiYoaT1yLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5zbGljZSgpKSx0aGlzLnNlcmllcz1pLHRoaXMuYmFySGVscGVycy5pbml0aWFsaXplU3RhY2tlZFByZXZWYXJzKHRoaXMpO2Zvcih2YXIgbz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KSxoPTAsYz0wLGQ9ZnVuY3Rpb24oZixiKXt2YXIgbT12b2lkIDAsdz12b2lkIDAsQT12b2lkIDAsbD12b2lkIDAsdT0tMTtzLmdyb3VwQ3R4PXMsci5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKFYsail7Vi5pbmRleE9mKHIuY29uZmlnLnNlcmllc1tmXS5uYW1lKT4tMSYmKHU9ail9KSx1IT09LTEmJihzLmdyb3VwQ3R4PXNbci5nbG9iYWxzLnNlcmllc0dyb3Vwc1t1XV0pO3ZhciB4PVtdLHY9W10saz1yLmdsb2JhbHMuY29tYm9DaGFydHM/YVtmXTpmO3MueVJhdGlvLmxlbmd0aD4xJiYocy55YXhpc0luZGV4PWspLHMuaXNSZXZlcnNlZD1yLmNvbmZpZy55YXhpc1tzLnlheGlzSW5kZXhdJiZyLmNvbmZpZy55YXhpc1tzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBTPXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1trXSkscmVsOmYrMSxcImRhdGE6cmVhbEluZGV4XCI6a30pO3MuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKFMsayk7dmFyIEM9cy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6a30pLEw9cy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxJPTAsej0wLFQ9cy5pbml0aWFsUG9zaXRpb25zKGgsYyxtLHcsQSxsKTtjPVQueSxJPVQuYmFySGVpZ2h0LHc9VC55RGl2aXNpb24sbD1ULnplcm9XLGg9VC54LHo9VC5iYXJXaWR0aCxtPVQueERpdmlzaW9uLEE9VC56ZXJvSCxyLmdsb2JhbHMuYmFySGVpZ2h0PUksci5nbG9iYWxzLmJhcldpZHRoPXoscy5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkWFlWYXJzKHMpLHMuZ3JvdXBDdHgucHJldlkubGVuZ3RoPT09MSYmcy5ncm91cEN0eC5wcmV2WVswXS5ldmVyeShmdW5jdGlvbihWKXtyZXR1cm4gaXNOYU4oVil9KSYmKHMuZ3JvdXBDdHgucHJldllbMF09cy5ncm91cEN0eC5wcmV2WVswXS5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIEF9KSxzLmdyb3VwQ3R4LnByZXZZRlswXT1zLmdyb3VwQ3R4LnByZXZZRlswXS5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIDB9KSk7Zm9yKHZhciBFPTA7RTxyLmdsb2JhbHMuZGF0YVBvaW50cztFKyspe3ZhciBSPXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChmLEUsayksTz17aW5kZXhlczp7aTpmLGo6RSxyZWFsSW5kZXg6ayxiYzpifSxzdHJva2VXaWR0aDpSLHg6aCx5OmMsZWxTZXJpZXM6Uyxncm91cEluZGV4OnUsc2VyaWVzR3JvdXA6ci5nbG9iYWxzLnNlcmllc0dyb3Vwc1t1XX0sRD1udWxsO3MuaXNIb3Jpem9udGFsPyhEPXMuZHJhd1N0YWNrZWRCYXJQYXRocyhYKFgoe30sTykse30se3plcm9XOmwsYmFySGVpZ2h0OkkseURpdmlzaW9uOnd9KSksej1zLnNlcmllc1tmXVtFXS9zLmludmVydGVkWVJhdGlvKTooRD1zLmRyYXdTdGFja2VkQ29sdW1uUGF0aHMoWChYKHt9LE8pLHt9LHt4RGl2aXNpb246bSxiYXJXaWR0aDp6LHplcm9IOkF9KSksST1zLnNlcmllc1tmXVtFXS9zLnlSYXRpb1tzLnlheGlzSW5kZXhdKTt2YXIgVz1zLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246RC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOkQuYmFyWVBvc2l0aW9uLGdvYWxYOkQuZ29hbFgsZ29hbFk6RC5nb2FsWSxiYXJIZWlnaHQ6SSxiYXJXaWR0aDp6fSk7VyYmTC5hZGQoVyksYz1ELnksaD1ELngseC5wdXNoKGgpLHYucHVzaChjKTt2YXIgTj1zLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcihpLGYsRSxrKTtTPXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6ayxwYXRoRmlsbDpOLGo6RSxpOmYsZ3JvdXBJbmRleDp1LHBhdGhGcm9tOkQucGF0aEZyb20scGF0aFRvOkQucGF0aFRvLHN0cm9rZVdpZHRoOlIsZWxTZXJpZXM6Uyx4OmgseTpjLHNlcmllczppLGJhckhlaWdodDpJLGJhcldpZHRoOnosZWxEYXRhTGFiZWxzV3JhcDpDLGVsR29hbHNNYXJrZXJzOkwsdHlwZTpcImJhclwiLHZpc2libGVTZXJpZXM6MH0pfXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2tdPXgsci5nbG9iYWxzLnNlcmllc1l2YWx1ZXNba109dixzLmdyb3VwQ3R4LnByZXZZLnB1c2gocy5ncm91cEN0eC55QXJyaikscy5ncm91cEN0eC5wcmV2WUYucHVzaChzLmdyb3VwQ3R4LnlBcnJqRikscy5ncm91cEN0eC5wcmV2WVZhbC5wdXNoKHMuZ3JvdXBDdHgueUFycmpWYWwpLHMuZ3JvdXBDdHgucHJldlgucHVzaChzLmdyb3VwQ3R4LnhBcnJqKSxzLmdyb3VwQ3R4LnByZXZYRi5wdXNoKHMuZ3JvdXBDdHgueEFycmpGKSxzLmdyb3VwQ3R4LnByZXZYVmFsLnB1c2gocy5ncm91cEN0eC54QXJyalZhbCksby5hZGQoUyl9LGc9MCxwPTA7ZzxpLmxlbmd0aDtnKysscCsrKWQoZyxwKTtyZXR1cm4gb319LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oaSxhLHMscixuLG8pe3ZhciBoLGMsZCxnLHA9dGhpcy53O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8oZD0oZD1yPXAuZ2xvYmFscy5ncmlkSGVpZ2h0L3AuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKS8xMDAsU3RyaW5nKHAuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQpLmluZGV4T2YoXCIlXCIpPT09LTEmJihkPXBhcnNlSW50KHAuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApKSxvPXRoaXMuYmFzZUxpbmVJbnZlcnRlZFkrcC5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuaXNSZXZlcnNlZD9wLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGE9KHItZCkvMik6KGc9cz1wLmdsb2JhbHMuZ3JpZFdpZHRoL3AuZ2xvYmFscy5kYXRhUG9pbnRzLGc9cC5nbG9iYWxzLmlzWE51bWVyaWMmJnAuZ2xvYmFscy5kYXRhUG9pbnRzPjE/KHM9cC5nbG9iYWxzLm1pblhEaWZmL3RoaXMueFJhdGlvKSpwYXJzZUludCh0aGlzLmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMDpnKnBhcnNlSW50KHAuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwLFN0cmluZyhwLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpPT09LTEmJihnPXBhcnNlSW50KHAuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkpLG49cC5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP3AuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLGk9cC5nbG9iYWxzLnBhZEhvcml6b250YWwrKHMtZykvMikse3g6aSx5OmEseURpdmlzaW9uOnIseERpdmlzaW9uOnMsYmFySGVpZ2h0OihoPXAuZ2xvYmFscy5zZXJpZXNHcm91cHMpIT09bnVsbCYmaCE9PXZvaWQgMCYmaC5sZW5ndGg/ZC9wLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpkLGJhcldpZHRoOihjPXAuZ2xvYmFscy5zZXJpZXNHcm91cHMpIT09bnVsbCYmYyE9PXZvaWQgMCYmYy5sZW5ndGg/Zy9wLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpnLHplcm9IOm4semVyb1c6b319fSx7a2V5OlwiZHJhd1N0YWNrZWRCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgYSxzPWkuaW5kZXhlcyxyPWkuYmFySGVpZ2h0LG49aS5zdHJva2VXaWR0aCxvPWkuemVyb1csaD1pLngsYz1pLnksZD1pLmdyb3VwSW5kZXgsZz1pLnNlcmllc0dyb3VwLHA9aS55RGl2aXNpb24sZj1pLmVsU2VyaWVzLGI9dGhpcy53LG09YysoZCE9PS0xP2QqcjowKSx3PXMuaSxBPXMuaixsPTAsdT0wO3U8dGhpcy5ncm91cEN0eC5wcmV2WEYubGVuZ3RoO3UrKylsKz10aGlzLmdyb3VwQ3R4LnByZXZYRlt1XVtBXTt2YXIgeD13O2lmKGcmJih4PWcuaW5kZXhPZihiLmNvbmZpZy5zZXJpZXNbd10ubmFtZSkpLHg+MCl7dmFyIHY9bzt0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3gtMV1bQV08MD92PXRoaXMuc2VyaWVzW3ddW0FdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbeC0xXVtBXStsLTIqKHRoaXMuaXNSZXZlcnNlZD9sOjApOnRoaXMuZ3JvdXBDdHgucHJldlhbeC0xXVtBXTp0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3gtMV1bQV0+PTAmJih2PXRoaXMuc2VyaWVzW3ddW0FdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbeC0xXVtBXTp0aGlzLmdyb3VwQ3R4LnByZXZYW3gtMV1bQV0tbCsyKih0aGlzLmlzUmV2ZXJzZWQ/bDowKSksYT12fWVsc2UgYT1vO2g9dGhpcy5zZXJpZXNbd11bQV09PT1udWxsP2E6YSt0aGlzLnNlcmllc1t3XVtBXS90aGlzLmludmVydGVkWVJhdGlvLTIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1t3XVtBXS90aGlzLmludmVydGVkWVJhdGlvOjApO3ZhciBrPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOm0sYmFySGVpZ2h0OnIseDE6YSx4MjpoLHN0cm9rZVdpZHRoOm4sc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDpzLnJlYWxJbmRleCxzZXJpZXNHcm91cDpnLGk6dyxqOkEsdzpifSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOkEsaTp3LHkxOm0seTI6cixlbFNlcmllczpmfSksYys9cCx7cGF0aFRvOmsucGF0aFRvLHBhdGhGcm9tOmsucGF0aEZyb20sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIsbyxudWxsLHcsQSksYmFyWVBvc2l0aW9uOm0seDpoLHk6Y319fSx7a2V5OlwiZHJhd1N0YWNrZWRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuaW5kZXhlcyxzPWkueCxyPWkueSxuPWkueERpdmlzaW9uLG89aS5iYXJXaWR0aCxoPWkuemVyb0gsYz1pLmdyb3VwSW5kZXgsZD1pLnNlcmllc0dyb3VwLGc9aS5lbFNlcmllcyxwPXRoaXMudyxmPWEuaSxiPWEuaixtPWEuYmM7aWYocC5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciB3PXAuZ2xvYmFscy5zZXJpZXNYW2ZdW2JdO3d8fCh3PTApLHM9KHctcC5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLW8vMixwLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCYmKHM9KHctcC5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLW8vMipwLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCl9Zm9yKHZhciBBLGw9cysoYyE9PS0xP2MqbzowKSx1PTAseD0wO3g8dGhpcy5ncm91cEN0eC5wcmV2WUYubGVuZ3RoO3grKyl1Kz1pc05hTih0aGlzLmdyb3VwQ3R4LnByZXZZRlt4XVtiXSk/MDp0aGlzLmdyb3VwQ3R4LnByZXZZRlt4XVtiXTt2YXIgdj1mO2lmKGQmJih2PWQuaW5kZXhPZihwLmNvbmZpZy5zZXJpZXNbZl0ubmFtZSkpLHY+MCYmIXAuZ2xvYmFscy5pc1hOdW1lcmljfHx2PjAmJnAuZ2xvYmFscy5pc1hOdW1lcmljJiZwLmdsb2JhbHMuc2VyaWVzWFtmLTFdW2JdPT09cC5nbG9iYWxzLnNlcmllc1hbZl1bYl0pe3ZhciBrLFMsQyxMPU1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCsxLGYrMSk7aWYodGhpcy5ncm91cEN0eC5wcmV2WVt2LTFdIT09dm9pZCAwJiZ0aGlzLmdyb3VwQ3R4LnByZXZZW3YtMV0ubGVuZ3RoKWZvcih2YXIgST0xO0k8TDtJKyspe3ZhciB6O2lmKCFpc05hTigoej10aGlzLmdyb3VwQ3R4LnByZXZZW3YtSV0pPT09bnVsbHx8ej09PXZvaWQgMD92b2lkIDA6eltiXSkpe0M9dGhpcy5ncm91cEN0eC5wcmV2WVt2LUldW2JdO2JyZWFrfX1mb3IodmFyIFQ9MTtUPEw7VCsrKXt2YXIgRSxSO2lmKCgoRT10aGlzLmdyb3VwQ3R4LnByZXZZVmFsW3YtVF0pPT09bnVsbHx8RT09PXZvaWQgMD92b2lkIDA6RVtiXSk8MCl7Uz10aGlzLnNlcmllc1tmXVtiXT49MD9DLXUrMioodGhpcy5pc1JldmVyc2VkP3U6MCk6QzticmVha31pZigoKFI9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFt2LVRdKT09PW51bGx8fFI9PT12b2lkIDA/dm9pZCAwOlJbYl0pPj0wKXtTPXRoaXMuc2VyaWVzW2ZdW2JdPj0wP0M6Qyt1LTIqKHRoaXMuaXNSZXZlcnNlZD91OjApO2JyZWFrfX1TPT09dm9pZCAwJiYoUz1wLmdsb2JhbHMuZ3JpZEhlaWdodCksQT0oaz10aGlzLmdyb3VwQ3R4LnByZXZZRlswXSkhPT1udWxsJiZrIT09dm9pZCAwJiZrLmV2ZXJ5KGZ1bmN0aW9uKEQpe3JldHVybiBEPT09MH0pJiZ0aGlzLmdyb3VwQ3R4LnByZXZZRi5zbGljZSgxLHYpLmV2ZXJ5KGZ1bmN0aW9uKEQpe3JldHVybiBELmV2ZXJ5KGZ1bmN0aW9uKFcpe3JldHVybiBpc05hTihXKX0pfSk/aDpTfWVsc2UgQT1oO3I9dGhpcy5zZXJpZXNbZl1bYl0/QS10aGlzLnNlcmllc1tmXVtiXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1tmXVtiXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdOjApOkE7dmFyIE89dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246bCxiYXJXaWR0aDpvLHkxOkEseTI6cix5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllcyxzZXJpZXNHcm91cDpkLHJlYWxJbmRleDphLnJlYWxJbmRleCxpOmYsajpiLHc6cH0pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6bSxqOmIsaTpmLHgxOmwseDI6byxlbFNlcmllczpnfSkscys9bix7cGF0aFRvOk8ucGF0aFRvLHBhdGhGcm9tOk8ucGF0aEZyb20sZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxoLGYsYiksYmFyWFBvc2l0aW9uOmwseDpwLmdsb2JhbHMuaXNYTnVtZXJpYz9zLW46cyx5OnJ9fX1dKSx0fSgpLGplPWZ1bmN0aW9uKHkpe3VlKHQsQWUpO3ZhciBlPXBlKHQpO2Z1bmN0aW9uIHQoKXtyZXR1cm4gRih0aGlzLHQpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBZKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oaSxhLHMpe3ZhciByPXRoaXMsbj10aGlzLncsbz1uZXcgTSh0aGlzLmN0eCksaD1uLmdsb2JhbHMuY29tYm9DaGFydHM/YTpuLmNvbmZpZy5jaGFydC50eXBlLGM9bmV3IHNlKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLHRoaXMuYm94T3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsdGhpcy5pc0hvcml6b250YWw9bi5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7dmFyIGQ9bmV3IHEodGhpcy5jdHgsbik7aT1kLmdldExvZ1NlcmllcyhpKSx0aGlzLnNlcmllcz1pLHRoaXMueVJhdGlvPWQuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXMoaSk7Zm9yKHZhciBnPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaCxcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLHA9ZnVuY3Rpb24oYil7ci5pc0JveFBsb3Q9bi5jb25maWcuY2hhcnQudHlwZT09PVwiYm94UGxvdFwifHxuLmNvbmZpZy5zZXJpZXNbYl0udHlwZT09PVwiYm94UGxvdFwiO3ZhciBtLHcsQSxsLHU9dm9pZCAwLHg9dm9pZCAwLHY9W10saz1bXSxTPW4uZ2xvYmFscy5jb21ib0NoYXJ0cz9zW2JdOmIsQz1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTpQLmVzY2FwZVN0cmluZyhuLmdsb2JhbHMuc2VyaWVzTmFtZXNbU10pLHJlbDpiKzEsXCJkYXRhOnJlYWxJbmRleFwiOlN9KTtyLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhDLFMpLGlbYl0ubGVuZ3RoPjAmJihyLnZpc2libGVJPXIudmlzaWJsZUkrMSk7dmFyIEwsSTtyLnlSYXRpby5sZW5ndGg+MSYmKHIueWF4aXNJbmRleD1TKTt2YXIgej1yLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO3g9ei55LEw9ei5iYXJIZWlnaHQsdz16LnlEaXZpc2lvbixsPXouemVyb1csdT16LngsST16LmJhcldpZHRoLG09ei54RGl2aXNpb24sQT16Lnplcm9ILGsucHVzaCh1K0kvMik7Zm9yKHZhciBUPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOlN9KSxFPWZ1bmN0aW9uKE8pe3ZhciBEPXIuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChiLE8sUyksVz1udWxsLE49e2luZGV4ZXM6e2k6YixqOk8scmVhbEluZGV4OlN9LHg6dSx5Ongsc3Ryb2tlV2lkdGg6RCxlbFNlcmllczpDfTtXPXIuaXNIb3Jpem9udGFsP3IuZHJhd0hvcml6b250YWxCb3hQYXRocyhYKFgoe30sTikse30se3lEaXZpc2lvbjp3LGJhckhlaWdodDpMLHplcm9XOmx9KSk6ci5kcmF3VmVydGljYWxCb3hQYXRocyhYKFgoe30sTikse30se3hEaXZpc2lvbjptLGJhcldpZHRoOkksemVyb0g6QX0pKSx4PVcueSx1PVcueCxPPjAmJmsucHVzaCh1K0kvMiksdi5wdXNoKHgpLFcucGF0aFRvLmZvckVhY2goZnVuY3Rpb24oVixqKXt2YXIgcmU9IXIuaXNCb3hQbG90JiZyLmNhbmRsZXN0aWNrT3B0aW9ucy53aWNrLnVzZUZpbGxDb2xvcj9XLmNvbG9yW2pdOm4uZ2xvYmFscy5zdHJva2UuY29sb3JzW2JdLGVlPWMuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpTLGRhdGFQb2ludEluZGV4Ok8sY29sb3I6Vy5jb2xvcltqXSx2YWx1ZTppW2JdW09dfSk7ci5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDpTLHBhdGhGaWxsOmVlLGxpbmVGaWxsOnJlLGo6TyxpOmIscGF0aEZyb206Vy5wYXRoRnJvbSxwYXRoVG86VixzdHJva2VXaWR0aDpELGVsU2VyaWVzOkMseDp1LHk6eCxzZXJpZXM6aSxiYXJIZWlnaHQ6TCxiYXJXaWR0aDpJLGVsRGF0YUxhYmVsc1dyYXA6VCx2aXNpYmxlU2VyaWVzOnIudmlzaWJsZUksdHlwZTpuLmNvbmZpZy5jaGFydC50eXBlfSl9KX0sUj0wO1I8bi5nbG9iYWxzLmRhdGFQb2ludHM7UisrKUUoUik7bi5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbU109ayxuLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1tTXT12LGcuYWRkKEMpfSxmPTA7ZjxpLmxlbmd0aDtmKyspcChmKTtyZXR1cm4gZ319LHtrZXk6XCJkcmF3VmVydGljYWxCb3hQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuaW5kZXhlcyxzPWkueDtpLnk7dmFyIHI9aS54RGl2aXNpb24sbj1pLmJhcldpZHRoLG89aS56ZXJvSCxoPWkuc3Ryb2tlV2lkdGgsYz10aGlzLncsZD1uZXcgTSh0aGlzLmN0eCksZz1hLmkscD1hLmosZj0hMCxiPWMuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQsbT1jLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQsdz1cIlwiO3RoaXMuaXNCb3hQbG90JiYodz1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIEE9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxsPWEucmVhbEluZGV4LHU9dGhpcy5nZXRPSExDVmFsdWUobCxwKSx4PW8sdj1vO3Uubz51LmMmJihmPSExKTt2YXIgaz1NYXRoLm1pbih1Lm8sdS5jKSxTPU1hdGgubWF4KHUubyx1LmMpLEM9dS5tO2MuZ2xvYmFscy5pc1hOdW1lcmljJiYocz0oYy5nbG9iYWxzLnNlcmllc1hbbF1bcF0tYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLW4vMik7dmFyIEw9cytuKnRoaXMudmlzaWJsZUk7dGhpcy5zZXJpZXNbZ11bcF09PT12b2lkIDB8fHRoaXMuc2VyaWVzW2ddW3BdPT09bnVsbD8oaz1vLFM9byk6KGs9by1rL0EsUz1vLVMvQSx4PW8tdS5oL0Esdj1vLXUubC9BLEM9by11Lm0vQSk7dmFyIEk9ZC5tb3ZlKEwsbyksej1kLm1vdmUoTCtuLzIsayk7cmV0dXJuIGMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoej10aGlzLmdldFByZXZpb3VzUGF0aChsLHAsITApKSxJPXRoaXMuaXNCb3hQbG90P1tkLm1vdmUoTCxrKStkLmxpbmUoTCtuLzIsaykrZC5saW5lKEwrbi8yLHgpK2QubGluZShMK24vNCx4KStkLmxpbmUoTCtuLW4vNCx4KStkLmxpbmUoTCtuLzIseCkrZC5saW5lKEwrbi8yLGspK2QubGluZShMK24saykrZC5saW5lKEwrbixDKStkLmxpbmUoTCxDKStkLmxpbmUoTCxrK2gvMiksZC5tb3ZlKEwsQykrZC5saW5lKEwrbixDKStkLmxpbmUoTCtuLFMpK2QubGluZShMK24vMixTKStkLmxpbmUoTCtuLzIsdikrZC5saW5lKEwrbi1uLzQsdikrZC5saW5lKEwrbi80LHYpK2QubGluZShMK24vMix2KStkLmxpbmUoTCtuLzIsUykrZC5saW5lKEwsUykrZC5saW5lKEwsQykrXCJ6XCJdOltkLm1vdmUoTCxTKStkLmxpbmUoTCtuLzIsUykrZC5saW5lKEwrbi8yLHgpK2QubGluZShMK24vMixTKStkLmxpbmUoTCtuLFMpK2QubGluZShMK24saykrZC5saW5lKEwrbi8yLGspK2QubGluZShMK24vMix2KStkLmxpbmUoTCtuLzIsaykrZC5saW5lKEwsaykrZC5saW5lKEwsUy1oLzIpXSx6Kz1kLm1vdmUoTCxrKSxjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KHMrPXIpLHtwYXRoVG86SSxwYXRoRnJvbTp6LHg6cyx5OlMsYmFyWFBvc2l0aW9uOkwsY29sb3I6dGhpcy5pc0JveFBsb3Q/dzpmP1tiXTpbbV19fX0se2tleTpcImRyYXdIb3Jpem9udGFsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmluZGV4ZXM7aS54O3ZhciBzPWkueSxyPWkueURpdmlzaW9uLG49aS5iYXJIZWlnaHQsbz1pLnplcm9XLGg9aS5zdHJva2VXaWR0aCxjPXRoaXMudyxkPW5ldyBNKHRoaXMuY3R4KSxnPWEuaSxwPWEuaixmPXRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7dGhpcy5pc0JveFBsb3QmJihmPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgYj10aGlzLmludmVydGVkWVJhdGlvLG09YS5yZWFsSW5kZXgsdz10aGlzLmdldE9ITENWYWx1ZShtLHApLEE9byxsPW8sdT1NYXRoLm1pbih3Lm8sdy5jKSx4PU1hdGgubWF4KHcubyx3LmMpLHY9dy5tO2MuZ2xvYmFscy5pc1hOdW1lcmljJiYocz0oYy5nbG9iYWxzLnNlcmllc1hbbV1bcF0tYy5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tbi8yKTt2YXIgaz1zK24qdGhpcy52aXNpYmxlSTt0aGlzLnNlcmllc1tnXVtwXT09PXZvaWQgMHx8dGhpcy5zZXJpZXNbZ11bcF09PT1udWxsPyh1PW8seD1vKToodT1vK3UvYix4PW8reC9iLEE9byt3LmgvYixsPW8rdy5sL2Isdj1vK3cubS9iKTt2YXIgUz1kLm1vdmUobyxrKSxDPWQubW92ZSh1LGsrbi8yKTtyZXR1cm4gYy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihDPXRoaXMuZ2V0UHJldmlvdXNQYXRoKG0scCwhMCkpLFM9W2QubW92ZSh1LGspK2QubGluZSh1LGsrbi8yKStkLmxpbmUoQSxrK24vMikrZC5saW5lKEEsaytuLzItbi80KStkLmxpbmUoQSxrK24vMituLzQpK2QubGluZShBLGsrbi8yKStkLmxpbmUodSxrK24vMikrZC5saW5lKHUsaytuKStkLmxpbmUodixrK24pK2QubGluZSh2LGspK2QubGluZSh1K2gvMixrKSxkLm1vdmUodixrKStkLmxpbmUodixrK24pK2QubGluZSh4LGsrbikrZC5saW5lKHgsaytuLzIpK2QubGluZShsLGsrbi8yKStkLmxpbmUobCxrK24tbi80KStkLmxpbmUobCxrK24vNCkrZC5saW5lKGwsaytuLzIpK2QubGluZSh4LGsrbi8yKStkLmxpbmUoeCxrKStkLmxpbmUodixrKStcInpcIl0sQys9ZC5tb3ZlKHUsayksYy5nbG9iYWxzLmlzWE51bWVyaWN8fChzKz1yKSx7cGF0aFRvOlMscGF0aEZyb206Qyx4LHk6cyxiYXJZUG9zaXRpb246ayxjb2xvcjpmfX19LHtrZXk6XCJnZXRPSExDVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihpLGEpe3ZhciBzPXRoaXMudztyZXR1cm57bzp0aGlzLmlzQm94UGxvdD9zLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtpXVthXTpzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tpXVthXSxoOnRoaXMuaXNCb3hQbG90P3MuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2ldW2FdOnMuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2ldW2FdLG06cy5nbG9iYWxzLnNlcmllc0NhbmRsZU1baV1bYV0sbDp0aGlzLmlzQm94UGxvdD9zLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tpXVthXTpzLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtpXVthXSxjOnRoaXMuaXNCb3hQbG90P3MuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2ldW2FdOnMuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2ldW2FdfX19XSksdH0oKSxsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiY2hlY2tDb2xvclJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncsdD0hMSxpPWUuY29uZmlnLnBsb3RPcHRpb25zW2UuY29uZmlnLmNoYXJ0LnR5cGVdO3JldHVybiBpLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZpLmNvbG9yU2NhbGUucmFuZ2VzLm1hcChmdW5jdGlvbihhLHMpe2EuZnJvbTw9MCYmKHQ9ITApfSksdH19LHtrZXk6XCJnZXRTaGFkZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9dGhpcy53LHI9MSxuPXMuY29uZmlnLnBsb3RPcHRpb25zW2VdLnNoYWRlSW50ZW5zaXR5LG89dGhpcy5kZXRlcm1pbmVDb2xvcihlLHQsaSk7cy5nbG9iYWxzLmhhc05lZ3N8fGE/cj1zLmNvbmZpZy5wbG90T3B0aW9uc1tlXS5yZXZlcnNlTmVnYXRpdmVTaGFkZT9vLnBlcmNlbnQ8MD9vLnBlcmNlbnQvMTAwKigxLjI1Km4pOigxLW8ucGVyY2VudC8xMDApKigxLjI1Km4pOm8ucGVyY2VudDw9MD8xLSgxK28ucGVyY2VudC8xMDApKm46KDEtby5wZXJjZW50LzEwMCkqbjoocj0xLW8ucGVyY2VudC8xMDAsZT09PVwidHJlZW1hcFwiJiYocj0oMS1vLnBlcmNlbnQvMTAwKSooMS4yNSpuKSkpO3ZhciBoPW8uY29sb3IsYz1uZXcgUDtyZXR1cm4gcy5jb25maWcucGxvdE9wdGlvbnNbZV0uZW5hYmxlU2hhZGVzJiYoaD10aGlzLncuY29uZmlnLnRoZW1lLm1vZGU9PT1cImRhcmtcIj9QLmhleFRvUmdiYShjLnNoYWRlQ29sb3IoLTEqcixvLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpOlAuaGV4VG9SZ2JhKGMuc2hhZGVDb2xvcihyLG8uY29sb3IpLHMuY29uZmlnLmZpbGwub3BhY2l0eSkpLHtjb2xvcjpoLGNvbG9yUHJvcHM6b319fSx7a2V5OlwiZGV0ZXJtaW5lQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53LHM9YS5nbG9iYWxzLnNlcmllc1t0XVtpXSxyPWEuY29uZmlnLnBsb3RPcHRpb25zW2VdLG49ci5jb2xvclNjYWxlLmludmVyc2U/aTp0O3IuZGlzdHJpYnV0ZWQmJmEuY29uZmlnLmNoYXJ0LnR5cGU9PT1cInRyZWVtYXBcIiYmKG49aSk7dmFyIG89YS5nbG9iYWxzLmNvbG9yc1tuXSxoPW51bGwsYz1NYXRoLm1pbi5hcHBseShNYXRoLFEoYS5nbG9iYWxzLnNlcmllc1t0XSkpLGQ9TWF0aC5tYXguYXBwbHkoTWF0aCxRKGEuZ2xvYmFscy5zZXJpZXNbdF0pKTtyLmRpc3RyaWJ1dGVkfHxlIT09XCJoZWF0bWFwXCJ8fChjPWEuZ2xvYmFscy5taW5ZLGQ9YS5nbG9iYWxzLm1heFkpLHIuY29sb3JTY2FsZS5taW4hPT12b2lkIDAmJihjPXIuY29sb3JTY2FsZS5taW48YS5nbG9iYWxzLm1pblk/ci5jb2xvclNjYWxlLm1pbjphLmdsb2JhbHMubWluWSxkPXIuY29sb3JTY2FsZS5tYXg+YS5nbG9iYWxzLm1heFk/ci5jb2xvclNjYWxlLm1heDphLmdsb2JhbHMubWF4WSk7dmFyIGc9TWF0aC5hYnMoZCkrTWF0aC5hYnMoYykscD0xMDAqcy8oZz09PTA/Zy0xZS02OmcpO3JldHVybiByLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZyLmNvbG9yU2NhbGUucmFuZ2VzLm1hcChmdW5jdGlvbihmLGIpe2lmKHM+PWYuZnJvbSYmczw9Zi50byl7bz1mLmNvbG9yLGg9Zi5mb3JlQ29sb3I/Zi5mb3JlQ29sb3I6bnVsbCxjPWYuZnJvbSxkPWYudG87dmFyIG09TWF0aC5hYnMoZCkrTWF0aC5hYnMoYyk7cD0xMDAqcy8obT09PTA/bS0xZS02Om0pfX0pLHtjb2xvcjpvLGZvcmVDb2xvcjpoLHBlcmNlbnQ6cH19fSx7a2V5OlwiY2FsY3VsYXRlRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGV4dCxpPWUueCxhPWUueSxzPWUuaSxyPWUuaixuPWUuY29sb3JQcm9wcyxvPWUuZm9udFNpemUsaD10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMsYz1uZXcgTSh0aGlzLmN0eCksZD1uZXcgd2UodGhpcy5jdHgpLGc9bnVsbDtpZihoLmVuYWJsZWQpe2c9Yy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTt2YXIgcD1oLm9mZnNldFgsZj1oLm9mZnNldFksYj1pK3AsbT1hK3BhcnNlRmxvYXQoaC5zdHlsZS5mb250U2l6ZSkvMytmO2QucGxvdERhdGFMYWJlbHNUZXh0KHt4OmIseTptLHRleHQ6dCxpOnMsajpyLGNvbG9yOm4uZm9yZUNvbG9yLHBhcmVudDpnLGZvbnRTaXplOm8sZGF0YUxhYmVsc0NvbmZpZzpofSl9cmV0dXJuIGd9fSx7a2V5OlwiYWRkTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IE0odGhpcy5jdHgpO2Uubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHQucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLGUpKSxlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0LnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0LnBhdGhNb3VzZURvd24uYmluZCh0aGlzLGUpKX19XSkseX0oKSxSdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMueFJhdGlvPXQueFJhdGlvLHRoaXMueVJhdGlvPXQueVJhdGlvLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5oZWxwZXJzPW5ldyBsdChlKSx0aGlzLnJlY3RSYWRpdXM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnJhZGl1cyx0aGlzLnN0cm9rZVdpZHRoPXRoaXMudy5jb25maWcuc3Ryb2tlLnNob3c/dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGg6MH1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudyxpPW5ldyBNKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1oZWF0bWFwXCJ9KTthLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KHQuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIHM9dC5nbG9iYWxzLmdyaWRXaWR0aC90Lmdsb2JhbHMuZGF0YVBvaW50cyxyPXQuZ2xvYmFscy5ncmlkSGVpZ2h0L3QuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLG49MCxvPSExO3RoaXMubmVnUmFuZ2U9dGhpcy5oZWxwZXJzLmNoZWNrQ29sb3JSYW5nZSgpO3ZhciBoPWUuc2xpY2UoKTt0LmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKG89ITAsaC5yZXZlcnNlKCkpO2Zvcih2YXIgYz1vPzA6aC5sZW5ndGgtMTtvP2M8aC5sZW5ndGg6Yz49MDtvP2MrKzpjLS0pe3ZhciBkPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1oZWF0bWFwLXNlcmllc1wiLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcodC5nbG9iYWxzLnNlcmllc05hbWVzW2NdKSxyZWw6YysxLFwiZGF0YTpyZWFsSW5kZXhcIjpjfSk7aWYodGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoZCxjKSx0LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBnPXQuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3ICQodGhpcy5jdHgpLmRyb3BTaGFkb3coZCxnLGMpfWZvcih2YXIgcD0wLGY9dC5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5zaGFkZUludGVuc2l0eSxiPTA7YjxoW2NdLmxlbmd0aDtiKyspe3ZhciBtPXRoaXMuaGVscGVycy5nZXRTaGFkZUNvbG9yKHQuY29uZmlnLmNoYXJ0LnR5cGUsYyxiLHRoaXMubmVnUmFuZ2UpLHc9bS5jb2xvcixBPW0uY29sb3JQcm9wczt0LmNvbmZpZy5maWxsLnR5cGU9PT1cImltYWdlXCImJih3PW5ldyBzZSh0aGlzLmN0eCkuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpjLGRhdGFQb2ludEluZGV4OmIsb3BhY2l0eTp0Lmdsb2JhbHMuaGFzTmVncz9BLnBlcmNlbnQ8MD8xLSgxK0EucGVyY2VudC8xMDApOmYrQS5wZXJjZW50LzEwMDpBLnBlcmNlbnQvMTAwLHBhdHRlcm5JRDpQLnJhbmRvbUlkKCksd2lkdGg6dC5jb25maWcuZmlsbC5pbWFnZS53aWR0aD90LmNvbmZpZy5maWxsLmltYWdlLndpZHRoOnMsaGVpZ2h0OnQuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0P3QuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0OnJ9KSk7dmFyIGw9dGhpcy5yZWN0UmFkaXVzLHU9aS5kcmF3UmVjdChwLG4scyxyLGwpO2lmKHUuYXR0cih7Y3g6cCxjeTpufSksdS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxkLmFkZCh1KSx1LmF0dHIoe2ZpbGw6dyxpOmMsaW5kZXg6YyxqOmIsdmFsOmVbY11bYl0sXCJzdHJva2Utd2lkdGhcIjp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZTp0LmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP3c6dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbMF0sY29sb3I6d30pLHRoaXMuaGVscGVycy5hZGRMaXN0ZW5lcnModSksdC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhdC5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgeD0xO3QuZ2xvYmFscy5yZXNpemVkfHwoeD10LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSx0aGlzLmFuaW1hdGVIZWF0TWFwKHUscCxuLHMscix4KX1pZih0Lmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB2PTE7aWYodGhpcy5keW5hbWljQW5pbS5lbmFibGVkJiZ0Lmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSl7dj10aGlzLmR5bmFtaWNBbmltLnNwZWVkO3ZhciBrPXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2NdJiZ0Lmdsb2JhbHMucHJldmlvdXNQYXRoc1tjXVtiXSYmdC5nbG9iYWxzLnByZXZpb3VzUGF0aHNbY11bYl0uY29sb3I7a3x8KGs9XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCIpLHRoaXMuYW5pbWF0ZUhlYXRDb2xvcih1LFAuaXNDb2xvckhleChrKT9rOlAucmdiMmhleChrKSxQLmlzQ29sb3JIZXgodyk/dzpQLnJnYjJoZXgodyksdil9fXZhciBTPSgwLHQuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKSh0Lmdsb2JhbHMuc2VyaWVzW2NdW2JdLHt2YWx1ZTp0Lmdsb2JhbHMuc2VyaWVzW2NdW2JdLHNlcmllc0luZGV4OmMsZGF0YVBvaW50SW5kZXg6Yix3OnR9KSxDPXRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OlMseDpwK3MvMix5Om4rci8yLGk6YyxqOmIsY29sb3JQcm9wczpBLHNlcmllczpofSk7QyE9PW51bGwmJmQuYWRkKEMpLHArPXN9bis9cixhLmFkZChkKX12YXIgTD10Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQuc2xpY2UoKTtyZXR1cm4gdC5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ/TC51bnNoaWZ0KFwiXCIpOkwucHVzaChcIlwiKSx0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9TCxhfX0se2tleTpcImFuaW1hdGVIZWF0TWFwXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSxzLHIpe3ZhciBuPW5ldyBnZSh0aGlzLmN0eCk7bi5hbmltYXRlUmVjdChlLHt4OnQrYS8yLHk6aStzLzIsd2lkdGg6MCxoZWlnaHQ6MH0se3g6dCx5Omksd2lkdGg6YSxoZWlnaHQ6c30scixmdW5jdGlvbigpe24uYW5pbWF0aW9uQ29tcGxldGVkKGUpfSl9fSx7a2V5OlwiYW5pbWF0ZUhlYXRDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEpe2UuYXR0cih7ZmlsbDp0fSkuYW5pbWF0ZShhKS5hdHRyKHtmaWxsOml9KX19XSkseX0oKSxodD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1lBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcz10aGlzLncscj1zLmNvbmZpZy55YXhpc1swXSxuPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdO3JldHVybiBuZXcgTSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6ZStyLmxhYmVscy5vZmZzZXRYLHk6dCtyLmxhYmVscy5vZmZzZXRZLHRleHQ6bihhLGkpLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTpyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnIubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoci5sYWJlbHMuc3R5bGUuY29sb3JzKT9yLmxhYmVscy5zdHlsZS5jb2xvcnNbaV06ci5sYWJlbHMuc3R5bGUuY29sb3JzfSl9fV0pLHl9KCksY3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIHQ9dGhpcy53O3RoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1CZWdpbkFycj1bMF0sdGhpcy5hbmltRHVyPTAsdGhpcy5kb251dERhdGFMYWJlbHM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzLHRoaXMubGluZUNvbG9yQXJyPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzIT09dm9pZCAwP3QuZ2xvYmFscy5zdHJva2UuY29sb3JzOnQuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1NYXRoLm1pbih0Lmdsb2JhbHMuZ3JpZFdpZHRoLHQuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNlbnRlclk9dGhpcy5kZWZhdWx0U2l6ZS8yLHRoaXMuY2VudGVyWD10Lmdsb2JhbHMuZ3JpZFdpZHRoLzIsdC5jb25maWcuY2hhcnQudHlwZT09PVwicmFkaWFsQmFyXCI/dGhpcy5mdWxsQW5nbGU9MzYwOnRoaXMuZnVsbEFuZ2xlPU1hdGguYWJzKHQuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5lbmRBbmdsZS10LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSksdGhpcy5pbml0aWFsQW5nbGU9dC5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUsdC5nbG9iYWxzLnJhZGlhbFNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjA1LXQuY29uZmlnLnN0cm9rZS53aWR0aC0odC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDp0LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIpLHRoaXMuZG9udXRTaXplPXQuZ2xvYmFscy5yYWRpYWxTaXplKnBhcnNlSW50KHQuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5zaXplLDEwKS8xMDAsdGhpcy5tYXhZPTAsdGhpcy5zbGljZUxhYmVscz1bXSx0aGlzLnNsaWNlU2l6ZXM9W10sdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnI9W119cmV0dXJuIFkoeSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpO2lmKHRoaXMucmV0PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1waWVcIn0pLGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHRoaXMucmV0O2Zvcih2YXIgcz0wLHI9MDtyPGUubGVuZ3RoO3IrKylzKz1QLm5lZ1RvWmVybyhlW3JdKTt2YXIgbj1bXSxvPWEuZ3JvdXAoKTtzPT09MCYmKHM9MWUtNSksZS5mb3JFYWNoKGZ1bmN0aW9uKGspe3QubWF4WT1NYXRoLm1heCh0Lm1heFksayl9KSxpLmNvbmZpZy55YXhpc1swXS5tYXgmJih0aGlzLm1heFk9aS5jb25maWcueWF4aXNbMF0ubWF4KSxpLmNvbmZpZy5ncmlkLnBvc2l0aW9uPT09XCJiYWNrXCImJnRoaXMuY2hhcnRUeXBlPT09XCJwb2xhckFyZWFcIiYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCk7Zm9yKHZhciBoPTA7aDxlLmxlbmd0aDtoKyspe3ZhciBjPXRoaXMuZnVsbEFuZ2xlKlAubmVnVG9aZXJvKGVbaF0pL3M7bi5wdXNoKGMpLHRoaXMuY2hhcnRUeXBlPT09XCJwb2xhckFyZWFcIj8obltoXT10aGlzLmZ1bGxBbmdsZS9lLmxlbmd0aCx0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSplW2hdL3RoaXMubWF4WSkpOnRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe2Zvcih2YXIgZCxnPTAscD0wO3A8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3ArKylnKz1QLm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1twXSk7Zm9yKHZhciBmPTA7ZjxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7ZisrKWQ9dGhpcy5mdWxsQW5nbGUqUC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZl0pL2csdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnIucHVzaChkKX10aGlzLmRvbnV0U2l6ZTwwJiYodGhpcy5kb251dFNpemU9MCk7dmFyIGI9aS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLG09aS5nbG9iYWxzLmdyaWRXaWR0aC8yLHc9aS5nbG9iYWxzLmdyaWRIZWlnaHQvMixBPW0taS5nbG9iYWxzLmdyaWRXaWR0aC8yKmIsbD13LWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIqYjtpZih0aGlzLmNoYXJ0VHlwZT09PVwiZG9udXRcIil7dmFyIHU9YS5kcmF3Q2lyY2xlKHRoaXMuZG9udXRTaXplKTt1LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDppLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZD9pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJ9KSxvLmFkZCh1KX12YXIgeD10aGlzLmRyYXdBcmNzKG4sZSk7aWYodGhpcy5zbGljZUxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGspe3guYWRkKGspfSksby5hdHRyKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KEEsXCIsIFwiKS5jb25jYXQobCxcIikgc2NhbGUoXCIpLmNvbmNhdChiLFwiKVwiKX0pLG8uYWRkKHgpLHRoaXMucmV0LmFkZChvKSx0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93KXt2YXIgdj10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLmRvbnV0RGF0YUxhYmVscyx7aG9sbG93U2l6ZTp0aGlzLmRvbnV0U2l6ZSxjZW50ZXJYOnRoaXMuY2VudGVyWCxjZW50ZXJZOnRoaXMuY2VudGVyWSxvcGFjaXR5OnRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csdHJhbnNsYXRlWDpBLHRyYW5zbGF0ZVk6bH0pO3RoaXMucmV0LmFkZCh2KX1yZXR1cm4gaS5jb25maWcuZ3JpZC5wb3NpdGlvbj09PVwiZnJvbnRcIiYmdGhpcy5jaGFydFR5cGU9PT1cInBvbGFyQXJlYVwiJiZ0aGlzLmRyYXdQb2xhckVsZW1lbnRzKHRoaXMucmV0KSx0aGlzLnJldH19LHtrZXk6XCJkcmF3QXJjc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9bmV3ICQodGhpcy5jdHgpLHM9bmV3IE0odGhpcy5jdHgpLHI9bmV3IHNlKHRoaXMuY3R4KSxuPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zbGljZXNcIn0pLG89dGhpcy5pbml0aWFsQW5nbGUsaD10aGlzLmluaXRpYWxBbmdsZSxjPXRoaXMuaW5pdGlhbEFuZ2xlLGQ9dGhpcy5pbml0aWFsQW5nbGU7dGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MDtmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2crKyl7dmFyIHA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXBpZS1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tnXSkscmVsOmcrMSxcImRhdGE6cmVhbEluZGV4XCI6Z30pO24uYWRkKHApLGg9ZCxjPShvPWMpK2VbZ10sZD1oK3RoaXMucHJldlNlY3RvckFuZ2xlQXJyW2ddO3ZhciBmPWM8bz90aGlzLmZ1bGxBbmdsZStjLW86Yy1vLGI9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmcsc2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZ10sdmFsdWU6dFtnXX0pLG09dGhpcy5nZXRDaGFuZ2VkUGF0aChoLGQpLHc9cy5kcmF3UGF0aCh7ZDptLHN0cm9rZTpBcnJheS5pc0FycmF5KHRoaXMubGluZUNvbG9yQXJyKT90aGlzLmxpbmVDb2xvckFycltnXTp0aGlzLmxpbmVDb2xvckFycixzdHJva2VXaWR0aDowLGZpbGw6YixmaWxsT3BhY2l0eTppLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcGllLWFyZWEgYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGcpfSk7aWYody5hdHRyKHtpbmRleDowLGo6Z30pLGEuc2V0U2VsZWN0aW9uRmlsdGVyKHcsMCxnKSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBBPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KHcsQSxnKX10aGlzLmFkZExpc3RlbmVycyh3LHRoaXMuZG9udXREYXRhTGFiZWxzKSxNLnNldEF0dHJzKHcubm9kZSx7XCJkYXRhOmFuZ2xlXCI6ZixcImRhdGE6c3RhcnRBbmdsZVwiOm8sXCJkYXRhOnN0cm9rZVdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxcImRhdGE6dmFsdWVcIjp0W2ddfSk7dmFyIGw9e3g6MCx5OjB9O3RoaXMuY2hhcnRUeXBlPT09XCJwaWVcInx8dGhpcy5jaGFydFR5cGU9PT1cInBvbGFyQXJlYVwiP2w9UC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUvMS4yNStpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG8rZi8yKSV0aGlzLmZ1bGxBbmdsZSk6dGhpcy5jaGFydFR5cGU9PT1cImRvbnV0XCImJihsPVAucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLChpLmdsb2JhbHMucmFkaWFsU2l6ZSt0aGlzLmRvbnV0U2l6ZSkvMitpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG8rZi8yKSV0aGlzLmZ1bGxBbmdsZSkpLHAuYWRkKHcpO3ZhciB1PTA7aWYoIXRoaXMuaW5pdGlhbEFuaW18fGkuZ2xvYmFscy5yZXNpemVkfHxpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKTooKHU9Zi90aGlzLmZ1bGxBbmdsZSppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKT09PTAmJih1PTEpLHRoaXMuYW5pbUR1cj11K3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuZHluYW1pY0FuaW0mJmkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1hdGVQYXRocyh3LHtzaXplOnRoaXMuc2xpY2VTaXplc1tnXSxlbmRBbmdsZTpjLHN0YXJ0QW5nbGU6byxwcmV2U3RhcnRBbmdsZTpoLHByZXZFbmRBbmdsZTpkLGFuaW1hdGVTdGFydGluZ1BvczohMCxpOmcsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLHNob3VsZFNldFByZXZQYXRoczohMCxkdXI6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkfSk6dGhpcy5hbmltYXRlUGF0aHModyx7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZ10sZW5kQW5nbGU6YyxzdGFydEFuZ2xlOm8saTpnLHRvdGFsSXRlbXM6ZS5sZW5ndGgtMSxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOnV9KSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayYmdGhpcy5jaGFydFR5cGUhPT1cInBvbGFyQXJlYVwiJiZ3LmNsaWNrKHRoaXMucGllQ2xpY2tlZC5iaW5kKHRoaXMsZykpLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0hPT12b2lkIDAmJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0uaW5kZXhPZihnKT4tMSYmdGhpcy5waWVDbGlja2VkKGcpLGkuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIHg9bC54LHY9bC55LGs9MTAwKmYvdGhpcy5mdWxsQW5nbGUrXCIlXCI7aWYoZiE9PTAmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8ZVtnXSl7dmFyIFM9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7UyE9PXZvaWQgMCYmKGs9UyhpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtnXVswXSx7c2VyaWVzSW5kZXg6Zyx3Oml9KSk7dmFyIEM9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2ddLEw9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIn0pLEk9cy5kcmF3VGV4dCh7eCx5OnYsdGV4dDprLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjpDfSk7aWYoTC5hZGQoSSksaS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB6PWkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coSSx6KX1JLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsXCIpLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZSYmaS5nbG9iYWxzLnJlc2l6ZWQ9PT0hMSYmKEkubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXlcIiksSS5ub2RlLnN0eWxlLmFuaW1hdGlvbkRlbGF5PWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvOTQwK1wic1wiKSx0aGlzLnNsaWNlTGFiZWxzLnB1c2goTCl9fX1yZXR1cm4gbn19LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPW5ldyBNKHRoaXMuY3R4KTtlLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyxlKSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsZSkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyxlLm5vZGUsdCkpLGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyxlKSksdGhpcy5kb251dERhdGFMYWJlbHMudG90YWwuc2hvd0Fsd2F5c3x8KGUubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLGUubm9kZSx0KSksZS5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyxlLm5vZGUsdCkpKX19LHtrZXk6XCJhbmltYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPXQuZW5kQW5nbGU8dC5zdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK3QuZW5kQW5nbGUtdC5zdGFydEFuZ2xlOnQuZW5kQW5nbGUtdC5zdGFydEFuZ2xlLHM9YSxyPXQuc3RhcnRBbmdsZSxuPXQuc3RhcnRBbmdsZTt0LnByZXZTdGFydEFuZ2xlIT09dm9pZCAwJiZ0LnByZXZFbmRBbmdsZSE9PXZvaWQgMCYmKHI9dC5wcmV2RW5kQW5nbGUscz10LnByZXZFbmRBbmdsZTx0LnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK3QucHJldkVuZEFuZ2xlLXQucHJldlN0YXJ0QW5nbGU6dC5wcmV2RW5kQW5nbGUtdC5wcmV2U3RhcnRBbmdsZSksdC5pPT09aS5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiYoYStuPnRoaXMuZnVsbEFuZ2xlP3QuZW5kQW5nbGU9dC5lbmRBbmdsZS0oYStuKTphK248dGhpcy5mdWxsQW5nbGUmJih0LmVuZEFuZ2xlPXQuZW5kQW5nbGUrKHRoaXMuZnVsbEFuZ2xlLShhK24pKSkpLGE9PT10aGlzLmZ1bGxBbmdsZSYmKGE9dGhpcy5mdWxsQW5nbGUtLjAxKSx0aGlzLmFuaW1hdGVBcmMoZSxyLG4sYSxzLHQpfX0se2tleTpcImFuaW1hdGVBcmNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhLHMscil7dmFyIG4sbz10aGlzLGg9dGhpcy53LGM9bmV3IGdlKHRoaXMuY3R4KSxkPXIuc2l6ZTsoaXNOYU4odCl8fGlzTmFOKHMpKSYmKHQ9aSxzPWEsci5kdXI9MCk7dmFyIGc9YSxwPWksZj10PGk/dGhpcy5mdWxsQW5nbGUrdC1pOnQtaTtoLmdsb2JhbHMuZGF0YUNoYW5nZWQmJnIuc2hvdWxkU2V0UHJldlBhdGhzJiZyLnByZXZFbmRBbmdsZSYmKG49by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6ci5wcmV2U3RhcnRBbmdsZSxhbmdsZTpyLnByZXZFbmRBbmdsZTxyLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK3IucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGU6ci5wcmV2RW5kQW5nbGUtci5wcmV2U3RhcnRBbmdsZSxzaXplOmR9KSxlLmF0dHIoe2Q6bn0pKSxyLmR1ciE9PTA/ZS5hbmltYXRlKHIuZHVyLGguZ2xvYmFscy5lYXNpbmcsci5hbmltQmVnaW5BcnJbci5pXSkuYWZ0ZXJBbGwoZnVuY3Rpb24oKXtvLmNoYXJ0VHlwZSE9PVwicGllXCImJm8uY2hhcnRUeXBlIT09XCJkb251dFwiJiZvLmNoYXJ0VHlwZSE9PVwicG9sYXJBcmVhXCJ8fHRoaXMuYW5pbWF0ZShoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLmF0dHIoe1wic3Ryb2tlLXdpZHRoXCI6by5zdHJva2VXaWR0aH0pLHIuaT09PWguY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmYy5hbmltYXRpb25Db21wbGV0ZWQoZSl9KS5kdXJpbmcoZnVuY3Rpb24oYil7Zz1mKyhhLWYpKmIsci5hbmltYXRlU3RhcnRpbmdQb3MmJihnPXMrKGEtcykqYixwPXQtcysoaS0odC1zKSkqYiksbj1vLmdldFBpZVBhdGgoe21lOm8sc3RhcnRBbmdsZTpwLGFuZ2xlOmcsc2l6ZTpkfSksZS5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixuKSxlLmF0dHIoe2Q6bn0pfSk6KG49by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6cCxhbmdsZTphLHNpemU6ZH0pLHIuaXNUcmFja3x8KGguZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksZS5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixuKSxlLmF0dHIoe2Q6bixcInN0cm9rZS13aWR0aFwiOm8uc3Ryb2tlV2lkdGh9KSl9fSx7a2V5OlwicGllQ2xpY2tlZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy53LGE9dGhpcyxzPWEuc2xpY2VTaXplc1tlXSsoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2s/NDowKSxyPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChlKSkubWVtYmVyc1swXTtpZihyLmF0dHIoXCJkYXRhOnBpZUNsaWNrZWRcIikhPT1cInRydWVcIil7dmFyIG49aS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuLGZ1bmN0aW9uKGQpe2Quc2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJmYWxzZVwiKTt2YXIgZz1kLmdldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIik7ZyYmZC5zZXRBdHRyaWJ1dGUoXCJkXCIsZyl9KSxyLmF0dHIoXCJkYXRhOnBpZUNsaWNrZWRcIixcInRydWVcIik7dmFyIG89cGFyc2VJbnQoci5hdHRyKFwiZGF0YTpzdGFydEFuZ2xlXCIpLDEwKSxoPXBhcnNlSW50KHIuYXR0cihcImRhdGE6YW5nbGVcIiksMTApO3Q9YS5nZXRQaWVQYXRoKHttZTphLHN0YXJ0QW5nbGU6byxhbmdsZTpoLHNpemU6c30pLGghPT0zNjAmJnIucGxvdCh0KX1lbHNle3IuYXR0cih7XCJkYXRhOnBpZUNsaWNrZWRcIjpcImZhbHNlXCJ9KSx0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lcihyLm5vZGUsdGhpcy5kb251dERhdGFMYWJlbHMpO3ZhciBjPXIuYXR0cihcImRhdGE6cGF0aE9yaWdcIik7ci5hdHRyKHtkOmN9KX19fSx7a2V5OlwiZ2V0Q2hhbmdlZFBhdGhcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPVwiXCI7cmV0dXJuIHRoaXMuZHluYW1pY0FuaW0mJnRoaXMudy5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaT10aGlzLmdldFBpZVBhdGgoe21lOnRoaXMsc3RhcnRBbmdsZTplLGFuZ2xlOnQtZSxzaXplOnRoaXMuc2l6ZX0pKSxpfX0se2tleTpcImdldFBpZVBhdGhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPWUubWUsYT1lLnN0YXJ0QW5nbGUscz1lLmFuZ2xlLHI9ZS5zaXplLG49bmV3IE0odGhpcy5jdHgpLG89YSxoPU1hdGguUEkqKG8tOTApLzE4MCxjPXMrYTtNYXRoLmNlaWwoYyk+PXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUmJihjPXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUtLjAxKSxNYXRoLmNlaWwoYyk+dGhpcy5mdWxsQW5nbGUmJihjLT10aGlzLmZ1bGxBbmdsZSk7dmFyIGQ9TWF0aC5QSSooYy05MCkvMTgwLGc9aS5jZW50ZXJYK3IqTWF0aC5jb3MoaCkscD1pLmNlbnRlclkrcipNYXRoLnNpbihoKSxmPWkuY2VudGVyWCtyKk1hdGguY29zKGQpLGI9aS5jZW50ZXJZK3IqTWF0aC5zaW4oZCksbT1QLnBvbGFyVG9DYXJ0ZXNpYW4oaS5jZW50ZXJYLGkuY2VudGVyWSxpLmRvbnV0U2l6ZSxjKSx3PVAucG9sYXJUb0NhcnRlc2lhbihpLmNlbnRlclgsaS5jZW50ZXJZLGkuZG9udXRTaXplLG8pLEE9cz4xODA/MTowLGw9W1wiTVwiLGcscCxcIkFcIixyLHIsMCxBLDEsZixiXTtyZXR1cm4gdD1pLmNoYXJ0VHlwZT09PVwiZG9udXRcIj9bXS5jb25jYXQobCxbXCJMXCIsbS54LG0ueSxcIkFcIixpLmRvbnV0U2l6ZSxpLmRvbnV0U2l6ZSwwLEEsMCx3Lngsdy55LFwiTFwiLGcscCxcInpcIl0pLmpvaW4oXCIgXCIpOmkuY2hhcnRUeXBlPT09XCJwaWVcInx8aS5jaGFydFR5cGU9PT1cInBvbGFyQXJlYVwiP1tdLmNvbmNhdChsLFtcIkxcIixpLmNlbnRlclgsaS5jZW50ZXJZLFwiTFwiLGcscF0pLmpvaW4oXCIgXCIpOltdLmNvbmNhdChsKS5qb2luKFwiIFwiKSxuLnJvdW5kUGF0aENvcm5lcnModCwyKnRoaXMuc3Ryb2tlV2lkdGgpfX0se2tleTpcImRyYXdQb2xhckVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGk9bmV3IGtlKHRoaXMuY3R4KSxhPW5ldyBNKHRoaXMuY3R4KSxzPW5ldyBodCh0aGlzLmN0eCkscj1hLmdyb3VwKCksbj1hLmdyb3VwKCksbz1pLm5pY2VTY2FsZSgwLE1hdGguY2VpbCh0aGlzLm1heFkpLHQuY29uZmlnLnlheGlzWzBdLnRpY2tBbW91bnQsMCwhMCksaD1vLnJlc3VsdC5yZXZlcnNlKCksYz1vLnJlc3VsdC5sZW5ndGg7dGhpcy5tYXhZPW8ubmljZU1heDtmb3IodmFyIGQ9dC5nbG9iYWxzLnJhZGlhbFNpemUsZz1kLyhjLTEpLHA9MDtwPGMtMTtwKyspe3ZhciBmPWEuZHJhd0NpcmNsZShkKTtpZihmLmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDpcIm5vbmVcIixcInN0cm9rZS13aWR0aFwiOnQuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VXaWR0aCxzdHJva2U6dC5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yfSksdC5jb25maWcueWF4aXNbMF0uc2hvdyl7dmFyIGI9cy5kcmF3WUF4aXNUZXh0cyh0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLWQrcGFyc2VJbnQodC5jb25maWcueWF4aXNbMF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8yLHAsaFtwXSk7bi5hZGQoYil9ci5hZGQoZiksZC09Z310aGlzLmRyYXdTcG9rZXMoZSksZS5hZGQociksZS5hZGQobil9fSx7a2V5OlwicmVuZGVySW5uZXJEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1uZXcgTSh0aGlzLmN0eCkscz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodC50cmFuc2xhdGVYP3QudHJhbnNsYXRlWDowLFwiLCBcIikuY29uY2F0KHQudHJhbnNsYXRlWT90LnRyYW5zbGF0ZVk6MCxcIikgc2NhbGUoXCIpLmNvbmNhdChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsXCIpXCIpfSkscj1lLnRvdGFsLnNob3c7cy5ub2RlLnN0eWxlLm9wYWNpdHk9dC5vcGFjaXR5O3ZhciBuLG8saD10LmNlbnRlclgsYz10LmNlbnRlclk7bj1lLm5hbWUuY29sb3I9PT12b2lkIDA/aS5nbG9iYWxzLmNvbG9yc1swXTplLm5hbWUuY29sb3I7dmFyIGQ9ZS5uYW1lLmZvbnRTaXplLGc9ZS5uYW1lLmZvbnRGYW1pbHkscD1lLm5hbWUuZm9udFdlaWdodDtvPWUudmFsdWUuY29sb3I9PT12b2lkIDA/aS5jb25maWcuY2hhcnQuZm9yZUNvbG9yOmUudmFsdWUuY29sb3I7dmFyIGY9ZS52YWx1ZS5mb3JtYXR0ZXIsYj1cIlwiLG09XCJcIjtpZihyPyhuPWUudG90YWwuY29sb3IsZD1lLnRvdGFsLmZvbnRTaXplLGc9ZS50b3RhbC5mb250RmFtaWx5LHA9ZS50b3RhbC5mb250V2VpZ2h0LG09ZS50b3RhbC5sYWJlbCxiPWUudG90YWwuZm9ybWF0dGVyKGkpKTppLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD09PTEmJihiPWYoaS5nbG9iYWxzLnNlcmllc1swXSxpKSxtPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1swXSksbSYmKG09ZS5uYW1lLmZvcm1hdHRlcihtLGUudG90YWwuc2hvdyxpKSksZS5uYW1lLnNob3cpe3ZhciB3PWEuZHJhd1RleHQoe3g6aCx5OmMrcGFyc2VGbG9hdChlLm5hbWUub2Zmc2V0WSksdGV4dDptLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6bixmb250U2l6ZTpkLGZvbnRXZWlnaHQ6cCxmb250RmFtaWx5Omd9KTt3Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLHMuYWRkKHcpfWlmKGUudmFsdWUuc2hvdyl7dmFyIEE9ZS5uYW1lLnNob3c/cGFyc2VGbG9hdChlLnZhbHVlLm9mZnNldFkpKzE2OmUudmFsdWUub2Zmc2V0WSxsPWEuZHJhd1RleHQoe3g6aCx5OmMrQSx0ZXh0OmIsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpvLGZvbnRXZWlnaHQ6ZS52YWx1ZS5mb250V2VpZ2h0LGZvbnRTaXplOmUudmFsdWUuZm9udFNpemUsZm9udEZhbWlseTplLnZhbHVlLmZvbnRGYW1pbHl9KTtsLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpLHMuYWRkKGwpfXJldHVybiBzfX0se2tleTpcInByaW50SW5uZXJMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSxhKXt2YXIgcyxyPXRoaXMudzthP3M9ZS5uYW1lLmNvbG9yPT09dm9pZCAwP3IuZ2xvYmFscy5jb2xvcnNbcGFyc2VJbnQoYS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV06ZS5uYW1lLmNvbG9yOnIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJmUudG90YWwuc2hvdyYmKHM9ZS50b3RhbC5jb2xvcik7dmFyIG49ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxvPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIik7aT0oMCxlLnZhbHVlLmZvcm1hdHRlcikoaSxyKSxhfHx0eXBlb2YgZS50b3RhbC5mb3JtYXR0ZXIhPVwiZnVuY3Rpb25cInx8KGk9ZS50b3RhbC5mb3JtYXR0ZXIocikpO3ZhciBoPXQ9PT1lLnRvdGFsLmxhYmVsO3Q9ZS5uYW1lLmZvcm1hdHRlcih0LGgsciksbiE9PW51bGwmJihuLnRleHRDb250ZW50PXQpLG8hPT1udWxsJiYoby50ZXh0Q29udGVudD1pKSxuIT09bnVsbCYmKG4uc3R5bGUuZmlsbD1zKX19LHtrZXk6XCJwcmludERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnZhbHVlXCIpLHM9aS5nbG9iYWxzLnNlcmllc05hbWVzW3BhcnNlSW50KGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdO2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnRoaXMucHJpbnRJbm5lckxhYmVscyh0LHMsYSxlKTt2YXIgcj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKTtyIT09bnVsbCYmKHIuc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6XCJkcmF3U3Bva2VzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPW5ldyBNKHRoaXMuY3R4KSxzPWkuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5zcG9rZXM7aWYocy5zdHJva2VXaWR0aCE9PTApe2Zvcih2YXIgcj1bXSxuPTM2MC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxvPTA7bzxpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtvKyspci5wdXNoKFAucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlK24qbykpO3IuZm9yRWFjaChmdW5jdGlvbihoLGMpe3ZhciBkPWEuZHJhd0xpbmUoaC54LGgueSx0LmNlbnRlclgsdC5jZW50ZXJZLEFycmF5LmlzQXJyYXkocy5jb25uZWN0b3JDb2xvcnMpP3MuY29ubmVjdG9yQ29sb3JzW2NdOnMuY29ubmVjdG9yQ29sb3JzKTtlLmFkZChkKX0pfX19LHtrZXk6XCJyZXZlcnREYXRhTGFiZWxzSW5uZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpLG49ITEsbz1zLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1waWUtYXJlYVwiKSxoPWZ1bmN0aW9uKGcpe3ZhciBwPWcubWFrZVNsaWNlT3V0LGY9Zy5wcmludExhYmVsO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobyxmdW5jdGlvbihiKXtiLmdldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiKT09PVwidHJ1ZVwiJiYocCYmKG49ITApLGYmJmEucHJpbnREYXRhTGFiZWxzSW5uZXIoYix0KSl9KX07aWYoaCh7bWFrZVNsaWNlT3V0OiEwLHByaW50TGFiZWw6ITF9KSx0LnRvdGFsLnNob3cmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpbiYmIXQudG90YWwuc2hvd0Fsd2F5cz9oKHttYWtlU2xpY2VPdXQ6ITEscHJpbnRMYWJlbDohMH0pOnRoaXMucHJpbnRJbm5lckxhYmVscyh0LHQudG90YWwubGFiZWwsdC50b3RhbC5mb3JtYXR0ZXIocykpO2Vsc2UgaWYoaCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KSwhbilpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSlpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aD4wKXt2YXIgYz1zLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLGQ9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0aGlzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoYykpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoZCx0KX1lbHNlIHImJnMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiZzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aD09PTAmJihyLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSByJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoci5zdHlsZS5vcGFjaXR5PTApfX1dKSx5fSgpLE90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgdD10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgTSh0aGlzLmN0eCksdGhpcy5saW5lQ29sb3JBcnI9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMhPT12b2lkIDA/dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6dC5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPXQuZ2xvYmFscy5zdmdIZWlnaHQ8dC5nbG9iYWxzLnN2Z1dpZHRoP3QuZ2xvYmFscy5ncmlkSGVpZ2h0KzEuNSp0Lmdsb2JhbHMuZ29sZGVuUGFkZGluZzp0Lmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMuaXNMb2c9dC5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsdGhpcy5jb3JlVXRpbHM9bmV3IHEodGhpcy5jdHgpLHRoaXMubWF4VmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodC5nbG9iYWxzLm1heFksMCk6dC5nbG9iYWxzLm1heFksdGhpcy5taW5WYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbCh0aGlzLncuZ2xvYmFscy5taW5ZLDApOnQuZ2xvYmFscy5taW5ZLHRoaXMucG9seWdvbnM9dC5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5zdHJva2VXaWR0aD10LmNvbmZpZy5zdHJva2Uuc2hvdz90LmNvbmZpZy5zdHJva2Uud2lkdGg6MCx0aGlzLnNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjEtdGhpcy5zdHJva2VXaWR0aC10LmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIsdC5jb25maWcueGF4aXMubGFiZWxzLnNob3cmJih0aGlzLnNpemU9dGhpcy5zaXplLXQuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoLzEuNzUpLHQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUhPT12b2lkIDAmJih0aGlzLnNpemU9dC5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksdGhpcy5kYXRhUmFkaXVzT2ZQZXJjZW50PVtdLHRoaXMuZGF0YVJhZGl1cz1bXSx0aGlzLmFuZ2xlQXJyPVtdLHRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcz1bXX1yZXR1cm4gWSh5LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1uZXcgc2UodGhpcy5jdHgpLHM9W10scj1uZXcgd2UodGhpcy5jdHgpO2UubGVuZ3RoJiYodGhpcy5kYXRhUG9pbnRzTGVuPWVbaS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCksdGhpcy5kaXNBbmdsZT0yKk1hdGguUEkvdGhpcy5kYXRhUG9pbnRzTGVuO3ZhciBuPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixvPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsaD1uK2kuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLm9mZnNldFgsYz1vK2kuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLm9mZnNldFksZD10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGh8fDAsXCIsIFwiKS5jb25jYXQoY3x8MCxcIilcIil9KSxnPVtdLHA9bnVsbCxmPW51bGw7aWYodGhpcy55YXhpc0xhYmVscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIn0pLGUuZm9yRWFjaChmdW5jdGlvbihtLHcpe3ZhciBBPW0ubGVuZ3RoPT09aS5nbG9iYWxzLmRhdGFQb2ludHMsbD10LmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLFwiZGF0YTpsb25nZXN0U2VyaWVzXCI6QSxzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1t3XSkscmVsOncrMSxcImRhdGE6cmVhbEluZGV4XCI6d30pO3QuZGF0YVJhZGl1c09mUGVyY2VudFt3XT1bXSx0LmRhdGFSYWRpdXNbd109W10sdC5hbmdsZUFyclt3XT1bXSxtLmZvckVhY2goZnVuY3Rpb24oVCxFKXt2YXIgUj1NYXRoLmFicyh0Lm1heFZhbHVlLXQubWluVmFsdWUpO1QrPU1hdGguYWJzKHQubWluVmFsdWUpLHQuaXNMb2cmJihUPXQuY29yZVV0aWxzLmdldExvZ1ZhbChULDApKSx0LmRhdGFSYWRpdXNPZlBlcmNlbnRbd11bRV09VC9SLHQuZGF0YVJhZGl1c1t3XVtFXT10LmRhdGFSYWRpdXNPZlBlcmNlbnRbd11bRV0qdC5zaXplLHQuYW5nbGVBcnJbd11bRV09RSp0LmRpc0FuZ2xlfSksZz10LmdldERhdGFQb2ludHNQb3ModC5kYXRhUmFkaXVzW3ddLHQuYW5nbGVBcnJbd10pO3ZhciB1PXQuY3JlYXRlUGF0aHMoZyx7eDowLHk6MH0pO3A9dC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwifSksZj10LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp3fSksaS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpwLm5vZGUsaW5kZXg6d30pO3ZhciB4PXtpOncscmVhbEluZGV4OncsYW5pbWF0aW9uRGVsYXk6dyxpbml0aWFsU3BlZWQ6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtcmFkYXJcIixzaG91bGRDbGlwVG9HcmlkOiExLGJpbmRFdmVudHNPblBhdGhzOiExLHN0cm9rZTppLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1t3XSxzdHJva2VMaW5lQ2FwOmkuY29uZmlnLnN0cm9rZS5saW5lQ2FwfSx2PW51bGw7aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJih2PXQuZ2V0UHJldmlvdXNQYXRoKHcpKTtmb3IodmFyIGs9MDtrPHUubGluZVBhdGhzVG8ubGVuZ3RoO2srKyl7dmFyIFM9dC5ncmFwaGljcy5yZW5kZXJQYXRocyhYKFgoe30seCkse30se3BhdGhGcm9tOnY9PT1udWxsP3UubGluZVBhdGhzRnJvbVtrXTp2LHBhdGhUbzp1LmxpbmVQYXRoc1RvW2tdLHN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkodC5zdHJva2VXaWR0aCk/dC5zdHJva2VXaWR0aFt3XTp0LnN0cm9rZVdpZHRoLGZpbGw6XCJub25lXCIsZHJhd1NoYWRvdzohMX0pKTtsLmFkZChTKTt2YXIgQz1hLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6d30pLEw9dC5ncmFwaGljcy5yZW5kZXJQYXRocyhYKFgoe30seCkse30se3BhdGhGcm9tOnY9PT1udWxsP3UuYXJlYVBhdGhzRnJvbVtrXTp2LHBhdGhUbzp1LmFyZWFQYXRoc1RvW2tdLHN0cm9rZVdpZHRoOjAsZmlsbDpDLGRyYXdTaGFkb3c6ITF9KSk7aWYoaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgST1uZXcgJCh0LmN0eCksej1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O0kuZHJvcFNoYWRvdyhMLE9iamVjdC5hc3NpZ24oe30seix7bm9Vc2VyU3BhY2VPblVzZTohMH0pLHcpfWwuYWRkKEwpfW0uZm9yRWFjaChmdW5jdGlvbihULEUpe3ZhciBSPW5ldyBUZSh0LmN0eCkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpcImFwZXhjaGFydHMtbWFya2VyXCIsc2VyaWVzSW5kZXg6dyxkYXRhUG9pbnRJbmRleDpFfSksTz10LmdyYXBoaWNzLmRyYXdNYXJrZXIoZ1tFXS54LGdbRV0ueSxSKTtPLmF0dHIoXCJyZWxcIixFKSxPLmF0dHIoXCJqXCIsRSksTy5hdHRyKFwiaW5kZXhcIix3KSxPLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLFIucFNpemUpO3ZhciBEPXQuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wifSk7RCYmRC5hZGQoTykscC5hZGQoRCksbC5hZGQocCk7dmFyIFc9aS5jb25maWcuZGF0YUxhYmVscztpZihXLmVuYWJsZWQpe3ZhciBOPVcuZm9ybWF0dGVyKGkuZ2xvYmFscy5zZXJpZXNbd11bRV0se3Nlcmllc0luZGV4OncsZGF0YVBvaW50SW5kZXg6RSx3Oml9KTtyLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnW0VdLngseTpnW0VdLnksdGV4dDpOLHRleHRBbmNob3I6XCJtaWRkbGVcIixpOncsajp3LHBhcmVudDpmLG9mZnNldENvcnJlY3Rpb246ITEsZGF0YUxhYmVsc0NvbmZpZzpYKHt9LFcpfSl9bC5hZGQoZil9KSxzLnB1c2gobCl9KSx0aGlzLmRyYXdQb2x5Z29ucyh7cGFyZW50OmR9KSxpLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGI9dGhpcy5kcmF3WEF4aXNUZXh0cygpO2QuYWRkKGIpfXJldHVybiBzLmZvckVhY2goZnVuY3Rpb24obSl7ZC5hZGQobSl9KSxkLmFkZCh0aGlzLnlheGlzTGFiZWxzKSxkfX0se2tleTpcImRyYXdQb2x5Z29uc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLGk9dGhpcy53LGE9ZS5wYXJlbnQscz1uZXcgaHQodGhpcy5jdHgpLHI9aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxuPXIubGVuZ3RoLG89W10saD10aGlzLnNpemUvKG4tMSksYz0wO2M8bjtjKyspb1tjXT1oKmM7by5yZXZlcnNlKCk7dmFyIGQ9W10sZz1bXTtvLmZvckVhY2goZnVuY3Rpb24ocCxmKXt2YXIgYj1QLmdldFBvbHlnb25Qb3MocCx0LmRhdGFQb2ludHNMZW4pLG09XCJcIjtiLmZvckVhY2goZnVuY3Rpb24odyxBKXtpZihmPT09MCl7dmFyIGw9dC5ncmFwaGljcy5kcmF3TGluZSh3Lngsdy55LDAsMCxBcnJheS5pc0FycmF5KHQucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKT90LnBvbHlnb25zLmNvbm5lY3RvckNvbG9yc1tBXTp0LnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk7Zy5wdXNoKGwpfUE9PT0wJiZ0LnlheGlzTGFiZWxzVGV4dHNQb3MucHVzaCh7eDp3LngseTp3Lnl9KSxtKz13LngrXCIsXCIrdy55K1wiIFwifSksZC5wdXNoKG0pfSksZC5mb3JFYWNoKGZ1bmN0aW9uKHAsZil7dmFyIGI9dC5wb2x5Z29ucy5zdHJva2VDb2xvcnMsbT10LnBvbHlnb25zLnN0cm9rZVdpZHRoLHc9dC5ncmFwaGljcy5kcmF3UG9seWdvbihwLEFycmF5LmlzQXJyYXkoYik/YltmXTpiLEFycmF5LmlzQXJyYXkobSk/bVtmXTptLGkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzW2ZdKTthLmFkZCh3KX0pLGcuZm9yRWFjaChmdW5jdGlvbihwKXthLmFkZChwKX0pLGkuY29uZmlnLnlheGlzWzBdLnNob3cmJnRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcy5mb3JFYWNoKGZ1bmN0aW9uKHAsZil7dmFyIGI9cy5kcmF3WUF4aXNUZXh0cyhwLngscC55LGYscltmXSk7dC55YXhpc0xhYmVscy5hZGQoYil9KX19LHtrZXk6XCJkcmF3WEF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudyxpPXQuY29uZmlnLnhheGlzLmxhYmVscyxhPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wifSkscz1QLmdldFBvbHlnb25Qb3ModGhpcy5zaXplLHRoaXMuZGF0YVBvaW50c0xlbik7cmV0dXJuIHQuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaChmdW5jdGlvbihyLG4pe3ZhciBvPXQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsaD1uZXcgd2UoZS5jdHgpO2lmKHNbbl0pe3ZhciBjPWUuZ2V0VGV4dFBvcyhzW25dLGUuc2l6ZSksZD1vKHIse3Nlcmllc0luZGV4Oi0xLGRhdGFQb2ludEluZGV4Om4sdzp0fSk7aC5wbG90RGF0YUxhYmVsc1RleHQoe3g6Yy5uZXdYLHk6Yy5uZXdZLHRleHQ6ZCx0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixpOm4sajpuLHBhcmVudDphLGNvbG9yOkFycmF5LmlzQXJyYXkoaS5zdHlsZS5jb2xvcnMpJiZpLnN0eWxlLmNvbG9yc1tuXT9pLnN0eWxlLmNvbG9yc1tuXTpcIiNhOGE4YThcIixkYXRhTGFiZWxzQ29uZmlnOlgoe3RleHRBbmNob3I6Yy50ZXh0QW5jaG9yLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9fSxpKSxvZmZzZXRDb3JyZWN0aW9uOiExfSl9fSksYX19LHtrZXk6XCJjcmVhdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPVtdLHM9W10scj1bXSxuPVtdO2lmKGUubGVuZ3RoKXtzPVt0aGlzLmdyYXBoaWNzLm1vdmUodC54LHQueSldLG49W3RoaXMuZ3JhcGhpY3MubW92ZSh0LngsdC55KV07dmFyIG89dGhpcy5ncmFwaGljcy5tb3ZlKGVbMF0ueCxlWzBdLnkpLGg9dGhpcy5ncmFwaGljcy5tb3ZlKGVbMF0ueCxlWzBdLnkpO2UuZm9yRWFjaChmdW5jdGlvbihjLGQpe28rPWkuZ3JhcGhpY3MubGluZShjLngsYy55KSxoKz1pLmdyYXBoaWNzLmxpbmUoYy54LGMueSksZD09PWUubGVuZ3RoLTEmJihvKz1cIlpcIixoKz1cIlpcIil9KSxhLnB1c2gobyksci5wdXNoKGgpfXJldHVybntsaW5lUGF0aHNGcm9tOnMsbGluZVBhdGhzVG86YSxhcmVhUGF0aHNGcm9tOm4sYXJlYVBhdGhzVG86cn19fSx7a2V5OlwiZ2V0VGV4dFBvc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9XCJtaWRkbGVcIixhPWUueCxzPWUueTtyZXR1cm4gTWF0aC5hYnMoZS54KT49MTA/ZS54PjA/KGk9XCJzdGFydFwiLGErPTEwKTplLng8MCYmKGk9XCJlbmRcIixhLT0xMCk6aT1cIm1pZGRsZVwiLE1hdGguYWJzKGUueSk+PXQtMTAmJihlLnk8MD9zLT0xMDplLnk+MCYmKHMrPTEwKSkse3RleHRBbmNob3I6aSxuZXdYOmEsbmV3WTpzfX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhcIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy53LGk9bnVsbCxhPTA7YTx0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7YSsrKXt2YXIgcz10Lmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTtzLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChzLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludChlLDEwKSYmdC5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0hPT12b2lkIDAmJihpPXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdLmQpfXJldHVybiBpfX0se2tleTpcImdldERhdGFQb2ludHNQb3NcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp0aGlzLmRhdGFQb2ludHNMZW47ZT1lfHxbXSx0PXR8fFtdO2Zvcih2YXIgYT1bXSxzPTA7czxpO3MrKyl7dmFyIHI9e307ci54PWVbc10qTWF0aC5zaW4odFtzXSksci55PS1lW3NdKk1hdGguY29zKHRbc10pLGEucHVzaChyKX1yZXR1cm4gYX19XSkseX0oKSxIdD1mdW5jdGlvbih5KXt1ZSh0LGN0KTt2YXIgZT1wZSh0KTtmdW5jdGlvbiB0KGkpe3ZhciBhO0YodGhpcyx0KSwoYT1lLmNhbGwodGhpcyxpKSkuY3R4PWksYS53PWkudyxhLmFuaW1CZWdpbkFycj1bMF0sYS5hbmltRHVyPTA7dmFyIHM9YS53O3JldHVybiBhLnN0YXJ0QW5nbGU9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUsYS5lbmRBbmdsZT1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUsYS50b3RhbEFuZ2xlPU1hdGguYWJzKHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZS1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSksYS50cmFja1N0YXJ0QW5nbGU9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0YXJ0QW5nbGUsYS50cmFja0VuZEFuZ2xlPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5lbmRBbmdsZSxhLmJhckxhYmVscz1hLncuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5iYXJMYWJlbHMsYS5kb251dERhdGFMYWJlbHM9YS53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZGF0YUxhYmVscyxhLnJhZGlhbERhdGFMYWJlbHM9YS5kb251dERhdGFMYWJlbHMsYS50cmFja1N0YXJ0QW5nbGV8fChhLnRyYWNrU3RhcnRBbmdsZT1hLnN0YXJ0QW5nbGUpLGEudHJhY2tFbmRBbmdsZXx8KGEudHJhY2tFbmRBbmdsZT1hLmVuZEFuZ2xlKSxhLmVuZEFuZ2xlPT09MzYwJiYoYS5lbmRBbmdsZT0zNTkuOTkpLGEubWFyZ2luPXBhcnNlSW50KHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5tYXJnaW4sMTApLGEub25CYXJMYWJlbENsaWNrPWEub25CYXJMYWJlbENsaWNrLmJpbmQoWGUoYSkpLGF9cmV0dXJuIFkodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT10aGlzLncscz1uZXcgTSh0aGlzLmN0eCkscj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyXCJ9KTtpZihhLmdsb2JhbHMubm9EYXRhKXJldHVybiByO3ZhciBuPXMuZ3JvdXAoKSxvPXRoaXMuZGVmYXVsdFNpemUvMixoPWEuZ2xvYmFscy5ncmlkV2lkdGgvMixjPXRoaXMuZGVmYXVsdFNpemUvMi4wNTthLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZHx8KGM9Yy1hLmNvbmZpZy5zdHJva2Uud2lkdGgtYS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKTt2YXIgZD1hLmdsb2JhbHMuZmlsbC5jb2xvcnM7aWYoYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnNob3cpe3ZhciBnPXRoaXMuZHJhd1RyYWNrcyh7c2l6ZTpjLGNlbnRlclg6aCxjZW50ZXJZOm8sY29sb3JBcnI6ZCxzZXJpZXM6aX0pO24uYWRkKGcpfXZhciBwPXRoaXMuZHJhd0FyY3Moe3NpemU6YyxjZW50ZXJYOmgsY2VudGVyWTpvLGNvbG9yQXJyOmQsc2VyaWVzOml9KSxmPTM2MDthLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZTwwJiYoZj10aGlzLnRvdGFsQW5nbGUpO3ZhciBiPSgzNjAtZikvMzYwO2lmKGEuZ2xvYmFscy5yYWRpYWxTaXplPWMtYypiLHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5zaG93KXt2YXIgbT1NYXRoLm1heCh0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUub2Zmc2V0WSx0aGlzLnJhZGlhbERhdGFMYWJlbHMubmFtZS5vZmZzZXRZKTthLmdsb2JhbHMucmFkaWFsU2l6ZSs9bSpifXJldHVybiBuLmFkZChwLmcpLGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cucG9zaXRpb249PT1cImZyb250XCImJihwLmcuYWRkKHAuZWxIb2xsb3cpLHAuZGF0YUxhYmVscyYmcC5nLmFkZChwLmRhdGFMYWJlbHMpKSxyLmFkZChuKSxyfX0se2tleTpcImRyYXdUcmFja3NcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT10aGlzLncscz1uZXcgTSh0aGlzLmN0eCkscj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJhY2tzXCJ9KSxuPW5ldyAkKHRoaXMuY3R4KSxvPW5ldyBzZSh0aGlzLmN0eCksaD10aGlzLmdldFN0cm9rZVdpZHRoKGkpO2kuc2l6ZT1pLnNpemUtaC8yO2Zvcih2YXIgYz0wO2M8aS5zZXJpZXMubGVuZ3RoO2MrKyl7dmFyIGQ9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci10cmFjayBhcGV4Y2hhcnRzLXRyYWNrXCJ9KTtyLmFkZChkKSxkLmF0dHIoe3JlbDpjKzF9KSxpLnNpemU9aS5zaXplLWgtdGhpcy5tYXJnaW47dmFyIGc9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLHA9by5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOjAsc2l6ZTppLnNpemUsZmlsbENvbG9yczpBcnJheS5pc0FycmF5KGcuYmFja2dyb3VuZCk/Zy5iYWNrZ3JvdW5kW2NdOmcuYmFja2dyb3VuZCxzb2xpZDohMH0pLGY9dGhpcy50cmFja1N0YXJ0QW5nbGUsYj10aGlzLnRyYWNrRW5kQW5nbGU7TWF0aC5hYnMoYikrTWF0aC5hYnMoZik+PTM2MCYmKGI9MzYwLU1hdGguYWJzKHRoaXMuc3RhcnRBbmdsZSktLjEpO3ZhciBtPXMuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6cCxzdHJva2VXaWR0aDpoKnBhcnNlSW50KGcuc3Ryb2tlV2lkdGgsMTApLzEwMCxmaWxsOlwibm9uZVwiLHN0cm9rZU9wYWNpdHk6Zy5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhXCJ9KTtpZihnLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHc9Zy5kcm9wU2hhZG93O24uZHJvcFNoYWRvdyhtLHcpfWQuYWRkKG0pLG0uYXR0cihcImlkXCIsXCJhcGV4Y2hhcnRzLXJhZGlhbGJhclRyYWNrLVwiK2MpLHRoaXMuYW5pbWF0ZVBhdGhzKG0se2NlbnRlclg6aS5jZW50ZXJYLGNlbnRlclk6aS5jZW50ZXJZLGVuZEFuZ2xlOmIsc3RhcnRBbmdsZTpmLHNpemU6aS5zaXplLGk6Yyx0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOjAsZHVyOjAsaXNUcmFjazohMCxlYXNpbmc6YS5nbG9iYWxzLmVhc2luZ30pfXJldHVybiByfX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIGE9dGhpcy53LHM9bmV3IE0odGhpcy5jdHgpLHI9bmV3IHNlKHRoaXMuY3R4KSxuPW5ldyAkKHRoaXMuY3R4KSxvPXMuZ3JvdXAoKSxoPXRoaXMuZ2V0U3Ryb2tlV2lkdGgoaSk7aS5zaXplPWkuc2l6ZS1oLzI7dmFyIGM9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5iYWNrZ3JvdW5kLGQ9aS5zaXplLWgqaS5zZXJpZXMubGVuZ3RoLXRoaXMubWFyZ2luKmkuc2VyaWVzLmxlbmd0aC1oKnBhcnNlSW50KGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdHJva2VXaWR0aCwxMCkvMTAwLzIsZz1kLWEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cubWFyZ2luO2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2UhPT12b2lkIDAmJihjPXRoaXMuZHJhd0hvbGxvd0ltYWdlKGksbyxkLGMpKTt2YXIgcD10aGlzLmRyYXdIb2xsb3coe3NpemU6ZyxjZW50ZXJYOmkuY2VudGVyWCxjZW50ZXJZOmkuY2VudGVyWSxmaWxsOmN8fFwidHJhbnNwYXJlbnRcIn0pO2lmKGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZj1hLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3c7bi5kcm9wU2hhZG93KHAsZil9dmFyIGI9MTshdGhpcy5yYWRpYWxEYXRhTGFiZWxzLnRvdGFsLnNob3cmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJihiPTApO3ZhciBtPW51bGw7dGhpcy5yYWRpYWxEYXRhTGFiZWxzLnNob3cmJihtPXRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMucmFkaWFsRGF0YUxhYmVscyx7aG9sbG93U2l6ZTpkLGNlbnRlclg6aS5jZW50ZXJYLGNlbnRlclk6aS5jZW50ZXJZLG9wYWNpdHk6Yn0pKSxhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uPT09XCJiYWNrXCImJihvLmFkZChwKSxtJiZvLmFkZChtKSk7dmFyIHc9ITE7YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmludmVyc2VPcmRlciYmKHc9ITApO2Zvcih2YXIgQT13P2kuc2VyaWVzLmxlbmd0aC0xOjA7dz9BPj0wOkE8aS5zZXJpZXMubGVuZ3RoO3c/QS0tOkErKyl7dmFyIGw9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXJhZGlhbC1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tBXSl9KTtvLmFkZChsKSxsLmF0dHIoe3JlbDpBKzEsXCJkYXRhOnJlYWxJbmRleFwiOkF9KSx0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhsLEEpLGkuc2l6ZT1pLnNpemUtaC10aGlzLm1hcmdpbjt2YXIgdT1yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6QSxzaXplOmkuc2l6ZSx2YWx1ZTppLnNlcmllc1tBXX0pLHg9dGhpcy5zdGFydEFuZ2xlLHY9dm9pZCAwLGs9UC5uZWdUb1plcm8oaS5zZXJpZXNbQV0+MTAwPzEwMDppLnNlcmllc1tBXSkvMTAwLFM9TWF0aC5yb3VuZCh0aGlzLnRvdGFsQW5nbGUqaykrdGhpcy5zdGFydEFuZ2xlLEM9dm9pZCAwO2EuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKHY9dGhpcy5zdGFydEFuZ2xlLEM9TWF0aC5yb3VuZCh0aGlzLnRvdGFsQW5nbGUqUC5uZWdUb1plcm8oYS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbQV0pLzEwMCkrdiksTWF0aC5hYnMoUykrTWF0aC5hYnMoeCk+PTM2MCYmKFMtPS4wMSksTWF0aC5hYnMoQykrTWF0aC5hYnModik+PTM2MCYmKEMtPS4wMSk7dmFyIEw9Uy14LEk9QXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5KT9hLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5W0FdOmEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksej1zLmRyYXdQYXRoKHtkOlwiXCIsc3Ryb2tlOnUsc3Ryb2tlV2lkdGg6aCxmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OmEuY29uZmlnLmZpbGwub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYSBhcGV4Y2hhcnRzLXJhZGlhbGJhci1zbGljZS1cIitBLHN0cm9rZURhc2hBcnJheTpJfSk7aWYoTS5zZXRBdHRycyh6Lm5vZGUse1wiZGF0YTphbmdsZVwiOkwsXCJkYXRhOnZhbHVlXCI6aS5zZXJpZXNbQV19KSxhLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBUPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bi5kcm9wU2hhZG93KHosVCxBKX1pZihuLnNldFNlbGVjdGlvbkZpbHRlcih6LDAsQSksdGhpcy5hZGRMaXN0ZW5lcnMoeix0aGlzLnJhZGlhbERhdGFMYWJlbHMpLGwuYWRkKHopLHouYXR0cih7aW5kZXg6MCxqOkF9KSx0aGlzLmJhckxhYmVscy5lbmFibGVkKXt2YXIgRT1QLnBvbGFyVG9DYXJ0ZXNpYW4oaS5jZW50ZXJYLGkuY2VudGVyWSxpLnNpemUseCksUj10aGlzLmJhckxhYmVscy5mb3JtYXR0ZXIoYS5nbG9iYWxzLnNlcmllc05hbWVzW0FdLHtzZXJpZXNJbmRleDpBLHc6YX0pLE89W1wiYXBleGNoYXJ0cy1yYWRpYWxiYXItbGFiZWxcIl07dGhpcy5iYXJMYWJlbHMub25DbGlja3x8Ty5wdXNoKFwiYXBleGNoYXJ0cy1uby1jbGlja1wiKTt2YXIgRD10aGlzLmJhckxhYmVscy51c2VTZXJpZXNDb2xvcnM/YS5nbG9iYWxzLmNvbG9yc1tBXTphLmNvbmZpZy5jaGFydC5mb3JlQ29sb3I7RHx8KEQ9YS5jb25maWcuY2hhcnQuZm9yZUNvbG9yKTt2YXIgVz1FLngtdGhpcy5iYXJMYWJlbHMubWFyZ2luLE49RS55LFY9cy5kcmF3VGV4dCh7eDpXLHk6Tix0ZXh0OlIsdGV4dEFuY2hvcjpcImVuZFwiLGRvbWluYW50QmFzZWxpbmU6XCJtaWRkbGVcIixmb250RmFtaWx5OnRoaXMuYmFyTGFiZWxzLmZvbnRGYW1pbHksZm9udFdlaWdodDp0aGlzLmJhckxhYmVscy5mb250V2VpZ2h0LGZvbnRTaXplOnRoaXMuYmFyTGFiZWxzLmZvbnRTaXplLGZvcmVDb2xvcjpELGNzc0NsYXNzOk8uam9pbihcIiBcIil9KTtWLm9uKFwiY2xpY2tcIix0aGlzLm9uQmFyTGFiZWxDbGljayksVi5hdHRyKHtyZWw6QSsxfSkseCE9PTAmJlYuYXR0cih7XCJ0cmFuc2Zvcm0tb3JpZ2luXCI6XCJcIi5jb25jYXQoVyxcIiBcIikuY29uY2F0KE4pLHRyYW5zZm9ybTpcInJvdGF0ZShcIi5jb25jYXQoeCxcIiAwIDApXCIpfSksbC5hZGQoVil9dmFyIGo9MDshdGhpcy5pbml0aWFsQW5pbXx8YS5nbG9iYWxzLnJlc2l6ZWR8fGEuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8KGo9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksYS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaj1hLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLHRoaXMuYW5pbUR1cj1qLygxLjIqaS5zZXJpZXMubGVuZ3RoKSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpLHRoaXMuYW5pbWF0ZVBhdGhzKHose2NlbnRlclg6aS5jZW50ZXJYLGNlbnRlclk6aS5jZW50ZXJZLGVuZEFuZ2xlOlMsc3RhcnRBbmdsZTp4LHByZXZFbmRBbmdsZTpDLHByZXZTdGFydEFuZ2xlOnYsc2l6ZTppLnNpemUsaTpBLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOmosc2hvdWxkU2V0UHJldlBhdGhzOiEwLGVhc2luZzphLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJue2c6byxlbEhvbGxvdzpwLGRhdGFMYWJlbHM6bX19fSx7a2V5OlwiZHJhd0hvbGxvd1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPW5ldyBNKHRoaXMuY3R4KS5kcmF3Q2lyY2xlKDIqaS5zaXplKTtyZXR1cm4gYS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWhvbGxvd1wiLGN4OmkuY2VudGVyWCxjeTppLmNlbnRlclkscjppLnNpemUsZmlsbDppLmZpbGx9KSxhfX0se2tleTpcImRyYXdIb2xsb3dJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKGksYSxzLHIpe3ZhciBuPXRoaXMudyxvPW5ldyBzZSh0aGlzLmN0eCksaD1QLnJhbmRvbUlkKCksYz1uLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlO2lmKG4uY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VDbGlwcGVkKW8uY2xpcHBlZEltZ0FyZWEoe3dpZHRoOnMsaGVpZ2h0OnMsaW1hZ2U6YyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KG4uZ2xvYmFscy5jdWlkKS5jb25jYXQoaCl9KSxyPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KG4uZ2xvYmFscy5jdWlkKS5jb25jYXQoaCxcIilcIik7ZWxzZXt2YXIgZD1uLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlV2lkdGgsZz1uLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlSGVpZ2h0O2lmKGQ9PT12b2lkIDAmJmc9PT12b2lkIDApe3ZhciBwPW4uZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYykubG9hZGVkKGZ1bmN0aW9uKGIpe3RoaXMubW92ZShpLmNlbnRlclgtYi53aWR0aC8yK24uY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLGkuY2VudGVyWS1iLmhlaWdodC8yK24uY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKX0pO2EuYWRkKHApfWVsc2V7dmFyIGY9bi5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShjKS5sb2FkZWQoZnVuY3Rpb24oYil7dGhpcy5tb3ZlKGkuY2VudGVyWC1kLzIrbi5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsaS5jZW50ZXJZLWcvMituLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSksdGhpcy5zaXplKGQsZyl9KTthLmFkZChmKX19cmV0dXJuIHJ9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT10aGlzLnc7cmV0dXJuIGkuc2l6ZSooMTAwLXBhcnNlSW50KGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuc2l6ZSwxMCkpLzEwMC8oaS5zZXJpZXMubGVuZ3RoKzEpLXRoaXMubWFyZ2lufX0se2tleTpcIm9uQmFyTGFiZWxDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPXBhcnNlSW50KGkudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxzPXRoaXMuYmFyTGFiZWxzLm9uQ2xpY2sscj10aGlzLnc7cyYmcyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbYV0se3c6cixzZXJpZXNJbmRleDphfSl9fV0pLHR9KCksRHQ9ZnVuY3Rpb24oeSl7dWUodCxBZSk7dmFyIGU9cGUodCk7ZnVuY3Rpb24gdCgpe3JldHVybiBGKHRoaXMsdCksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIFkodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihpLGEpe3ZhciBzPXRoaXMudyxyPW5ldyBNKHRoaXMuY3R4KTt0aGlzLnJhbmdlQmFyT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLHRoaXMuc2VyaWVzPWksdGhpcy5zZXJpZXNSYW5nZVN0YXJ0PXMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHRoaXMuc2VyaWVzUmFuZ2VFbmQ9cy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKGkpO2Zvcih2YXIgbj1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIGgsYyxkLGcscD12b2lkIDAsZj12b2lkIDAsYj1zLmdsb2JhbHMuY29tYm9DaGFydHM/YVtvXTpvLG09ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcocy5nbG9iYWxzLnNlcmllc05hbWVzW2JdKSxyZWw6bysxLFwiZGF0YTpyZWFsSW5kZXhcIjpifSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMobSxiKSxpW29dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciB3PTAsQT0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PWIpO3ZhciBsPXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7Zj1sLnksZz1sLnplcm9XLHA9bC54LEE9bC5iYXJXaWR0aCx3PWwuYmFySGVpZ2h0LGg9bC54RGl2aXNpb24sYz1sLnlEaXZpc2lvbixkPWwuemVyb0g7Zm9yKHZhciB1PXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOmJ9KSx4PXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJzXCJ9KSx2PTA7djxzLmdsb2JhbHMuZGF0YVBvaW50czt2Kyspe3ZhciBrLFM9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG8sdixiKSxDPXRoaXMuc2VyaWVzUmFuZ2VTdGFydFtvXVt2XSxMPXRoaXMuc2VyaWVzUmFuZ2VFbmRbb11bdl0sST1udWxsLHo9bnVsbCxUPW51bGwsRT17eDpwLHk6ZixzdHJva2VXaWR0aDpTLGVsU2VyaWVzOm19LFI9dGhpcy5zZXJpZXNMZW47aWYocy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoUj0xKSxzLmNvbmZpZy5zZXJpZXNbb10uZGF0YVt2XT09PXZvaWQgMClicmVhaztpZih0aGlzLmlzSG9yaXpvbnRhbCl7VD1mK3cqdGhpcy52aXNpYmxlSTt2YXIgTz0oYy13KlIpLzI7aWYocy5jb25maWcuc2VyaWVzW29dLmRhdGFbdl0ueCl7dmFyIEQ9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6byxqOnYsYmFyWVBvc2l0aW9uOlQsc3J0eTpPLGJhckhlaWdodDp3LHlEaXZpc2lvbjpjLGluaXRQb3NpdGlvbnM6bH0pO3c9RC5iYXJIZWlnaHQsVD1ELmJhcllQb3NpdGlvbn1BPShJPXRoaXMuZHJhd1JhbmdlQmFyUGF0aHMoWCh7aW5kZXhlczp7aTpvLGo6dixyZWFsSW5kZXg6Yn0sYmFySGVpZ2h0OncsYmFyWVBvc2l0aW9uOlQsemVyb1c6Zyx5RGl2aXNpb246Yyx5MTpDLHkyOkx9LEUpKSkuYmFyV2lkdGh9ZWxzZXtzLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHA9KHMuZ2xvYmFscy5zZXJpZXNYW29dW3ZdLXMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1BLzIpLHo9cCtBKnRoaXMudmlzaWJsZUk7dmFyIFc9KGgtQSpSKS8yO2lmKHMuY29uZmlnLnNlcmllc1tvXS5kYXRhW3ZdLngpe3ZhciBOPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOm8sajp2LGJhclhQb3NpdGlvbjp6LHNydHg6VyxiYXJXaWR0aDpBLHhEaXZpc2lvbjpoLGluaXRQb3NpdGlvbnM6bH0pO0E9Ti5iYXJXaWR0aCx6PU4uYmFyWFBvc2l0aW9ufXc9KEk9dGhpcy5kcmF3UmFuZ2VDb2x1bW5QYXRocyhYKHtpbmRleGVzOntpOm8sajp2LHJlYWxJbmRleDpifSxiYXJXaWR0aDpBLGJhclhQb3NpdGlvbjp6LHplcm9IOmQseERpdmlzaW9uOmh9LEUpKSkuYmFySGVpZ2h0fXZhciBWPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VCxnb2FsWDpJLmdvYWxYLGdvYWxZOkkuZ29hbFksYmFySGVpZ2h0OncsYmFyV2lkdGg6QX0pO1YmJnguYWRkKFYpLGY9SS55LHA9SS54O3ZhciBqPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKGksbyx2LGIpLHJlPXMuZ2xvYmFscy5zdHJva2UuY29sb3JzW2JdO3RoaXMucmVuZGVyU2VyaWVzKCh0ZShrPXtyZWFsSW5kZXg6YixwYXRoRmlsbDpqLGxpbmVGaWxsOnJlLGo6dixpOm8seDpwLHk6Zix5MTpDLHkyOkwscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6UyxlbFNlcmllczptLHNlcmllczppLGJhckhlaWdodDp3LGJhcldpZHRoOkEsYmFyWFBvc2l0aW9uOnosYmFyWVBvc2l0aW9uOlR9LFwiYmFyV2lkdGhcIixBKSx0ZShrLFwiZWxEYXRhTGFiZWxzV3JhcFwiLHUpLHRlKGssXCJlbEdvYWxzTWFya2Vyc1wiLHgpLHRlKGssXCJ2aXNpYmxlU2VyaWVzXCIsdGhpcy52aXNpYmxlSSksdGUoayxcInR5cGVcIixcInJhbmdlYmFyXCIpLGspKX1uLmFkZChtKX1yZXR1cm4gbn19LHtrZXk6XCJkZXRlY3RPdmVybGFwcGluZ0JhcnNcIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgYT1pLmkscz1pLmoscj1pLmJhcllQb3NpdGlvbixuPWkuYmFyWFBvc2l0aW9uLG89aS5zcnR5LGg9aS5zcnR4LGM9aS5iYXJIZWlnaHQsZD1pLmJhcldpZHRoLGc9aS55RGl2aXNpb24scD1pLnhEaXZpc2lvbixmPWkuaW5pdFBvc2l0aW9ucyxiPXRoaXMudyxtPVtdLHc9Yi5jb25maWcuc2VyaWVzW2FdLmRhdGFbc10ucmFuZ2VOYW1lLEE9Yi5jb25maWcuc2VyaWVzW2FdLmRhdGFbc10ueCxsPUFycmF5LmlzQXJyYXkoQSk/QS5qb2luKFwiIFwiKTpBLHU9Yi5nbG9iYWxzLmxhYmVscy5tYXAoZnVuY3Rpb24odil7cmV0dXJuIEFycmF5LmlzQXJyYXkodik/di5qb2luKFwiIFwiKTp2fSkuaW5kZXhPZihsKSx4PWIuZ2xvYmFscy5zZXJpZXNSYW5nZVthXS5maW5kSW5kZXgoZnVuY3Rpb24odil7cmV0dXJuIHYueD09PWwmJnYub3ZlcmxhcHMubGVuZ3RoPjB9KTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWw/KHI9Yi5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP28rZyp1Om8rYyp0aGlzLnZpc2libGVJK2cqdSx4Pi0xJiYhYi5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKG09Yi5nbG9iYWxzLnNlcmllc1JhbmdlW2FdW3hdLm92ZXJsYXBzKS5pbmRleE9mKHcpPi0xJiYocj0oYz1mLmJhckhlaWdodC9tLmxlbmd0aCkqdGhpcy52aXNpYmxlSStnKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLzEwMC8yK2MqKHRoaXMudmlzaWJsZUkrbS5pbmRleE9mKHcpKStnKnUpKToodT4tMSYmKG49Yi5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP2grcCp1OmgrZCp0aGlzLnZpc2libGVJK3AqdSkseD4tMSYmIWIuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhck92ZXJsYXAmJihtPWIuZ2xvYmFscy5zZXJpZXNSYW5nZVthXVt4XS5vdmVybGFwcykuaW5kZXhPZih3KT4tMSYmKG49KGQ9Zi5iYXJXaWR0aC9tLmxlbmd0aCkqdGhpcy52aXNpYmxlSStwKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhcldpZHRoLDEwKSkvMTAwLzIrZCoodGhpcy52aXNpYmxlSSttLmluZGV4T2YodykpK3AqdSkpLHtiYXJZUG9zaXRpb246cixiYXJYUG9zaXRpb246bixiYXJIZWlnaHQ6YyxiYXJXaWR0aDpkfX19LHtrZXk6XCJkcmF3UmFuZ2VDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuaW5kZXhlcyxzPWkueCxyPWkueERpdmlzaW9uLG49aS5iYXJXaWR0aCxvPWkuYmFyWFBvc2l0aW9uLGg9aS56ZXJvSCxjPXRoaXMudyxkPWEuaSxnPWEuaixwPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sZj1hLnJlYWxJbmRleCxiPXRoaXMuZ2V0UmFuZ2VWYWx1ZShmLGcpLG09TWF0aC5taW4oYi5zdGFydCxiLmVuZCksdz1NYXRoLm1heChiLnN0YXJ0LGIuZW5kKTt0aGlzLnNlcmllc1tkXVtnXT09PXZvaWQgMHx8dGhpcy5zZXJpZXNbZF1bZ109PT1udWxsP209aDoobT1oLW0vcCx3PWgtdy9wKTt2YXIgQT1NYXRoLmFicyh3LW0pLGw9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246byxiYXJXaWR0aDpuLHkxOm0seTI6dyxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLHJlYWxJbmRleDphLnJlYWxJbmRleCxpOmYsajpnLHc6Y30pO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgdT10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6cyxqOmcscmVhbEluZGV4OmYsYmFyV2lkdGg6bn0pO3M9dS54LG89dS5iYXJYUG9zaXRpb259ZWxzZSBzKz1yO3JldHVybntwYXRoVG86bC5wYXRoVG8scGF0aEZyb206bC5wYXRoRnJvbSxiYXJIZWlnaHQ6QSx4OnMseTp3LGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsaCxkLGcpLGJhclhQb3NpdGlvbjpvfX19LHtrZXk6XCJkcmF3UmFuZ2VCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBhPWkuaW5kZXhlcyxzPWkueSxyPWkueTEsbj1pLnkyLG89aS55RGl2aXNpb24saD1pLmJhckhlaWdodCxjPWkuYmFyWVBvc2l0aW9uLGQ9aS56ZXJvVyxnPXRoaXMudyxwPWQrci90aGlzLmludmVydGVkWVJhdGlvLGY9ZCtuL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sYj1NYXRoLmFicyhmLXApLG09dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246YyxiYXJIZWlnaHQ6aCx4MTpwLHgyOmYsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxpOmEucmVhbEluZGV4LHJlYWxJbmRleDphLnJlYWxJbmRleCxqOmEuaix3Omd9KTtyZXR1cm4gZy5nbG9iYWxzLmlzWE51bWVyaWN8fChzKz1vKSx7cGF0aFRvOm0ucGF0aFRvLHBhdGhGcm9tOm0ucGF0aEZyb20sYmFyV2lkdGg6Yix4OmYsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIsZCxudWxsLGEucmVhbEluZGV4LGEuaikseTpzfX19LHtrZXk6XCJnZXRSYW5nZVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oaSxhKXt2YXIgcz10aGlzLnc7cmV0dXJue3N0YXJ0OnMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW2FdLGVuZDpzLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV19fX1dKSx0fSgpLE50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy53PWUudyx0aGlzLmxpbmVDdHg9ZX1yZXR1cm4gWSh5LFt7a2V5Olwic2FtZVZhbHVlU2VyaWVzRml4XCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7aWYoKGkuY29uZmlnLmZpbGwudHlwZT09PVwiZ3JhZGllbnRcInx8aS5jb25maWcuZmlsbC50eXBlW2VdPT09XCJncmFkaWVudFwiKSYmbmV3IHEodGhpcy5saW5lQ3R4LmN0eCxpKS5zZXJpZXNIYXZlU2FtZVZhbHVlcyhlKSl7dmFyIGE9dFtlXS5zbGljZSgpO2FbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXSsxZS02LHRbZV09YX1yZXR1cm4gdH19LHtrZXk6XCJjYWxjdWxhdGVQb2ludHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNlcmllcyxpPWUucmVhbEluZGV4LGE9ZS54LHM9ZS55LHI9ZS5pLG49ZS5qLG89ZS5wcmV2WSxoPXRoaXMudyxjPVtdLGQ9W107aWYobj09PTApe3ZhciBnPXRoaXMubGluZUN0eC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtoLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGc9KGguZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWguZ2xvYmFscy5taW5YKS90aGlzLmxpbmVDdHgueFJhdGlvK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKGcpLGQucHVzaChQLmlzTnVtYmVyKHRbcl1bMF0pP28raC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpLGMucHVzaChhK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksZC5wdXNoKFAuaXNOdW1iZXIodFtyXVtuKzFdKT9zK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKX1lbHNlIGMucHVzaChhK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksZC5wdXNoKFAuaXNOdW1iZXIodFtyXVtuKzFdKT9zK2guY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpjLHk6ZH19fSx7a2V5OlwiY2hlY2tQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUucGF0aEZyb21MaW5lLGk9ZS5wYXRoRnJvbUFyZWEsYT1lLnJlYWxJbmRleCxzPXRoaXMudyxyPTA7cjxzLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cisrKXt2YXIgbj1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsobi50eXBlPT09XCJsaW5lXCJ8fG4udHlwZT09PVwiYXJlYVwiKSYmbi5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQobi5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoYSwxMCkmJihuLnR5cGU9PT1cImxpbmVcIj8odGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLHQ9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCk6bi50eXBlPT09XCJhcmVhXCImJih0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsaT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kLHMuY29uZmlnLnN0cm9rZS5zaG93JiZzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXSYmKHQ9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0uZCkpKX1yZXR1cm57cGF0aEZyb21MaW5lOnQscGF0aEZyb21BcmVhOml9fX0se2tleTpcImRldGVybWluZUZpcnN0UHJldllcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLGE9ZS5pLHM9ZS5zZXJpZXMscj1lLnByZXZZLG49ZS5saW5lWVBvc2l0aW9uLG89dGhpcy53LGg9by5jb25maWcuY2hhcnQuc3RhY2tlZCYmIW8uZ2xvYmFscy5jb21ib0NoYXJ0c3x8by5jb25maWcuY2hhcnQuc3RhY2tlZCYmby5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYoIXRoaXMudy5jb25maWcuY2hhcnQuc3RhY2tPbmx5QmFyfHwoKHQ9dGhpcy53LmNvbmZpZy5zZXJpZXNbYV0pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC50eXBlKT09PVwiYmFyXCIpO2lmKCgoaT1zW2FdKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmlbMF0pIT09dm9pZCAwKXI9KG49aCYmYT4wP3RoaXMubGluZUN0eC5wcmV2U2VyaWVzWVthLTFdWzBdOnRoaXMubGluZUN0eC56ZXJvWSktc1thXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XSsyKih0aGlzLmxpbmVDdHguaXNSZXZlcnNlZD9zW2FdWzBdL3RoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdOjApO2Vsc2UgaWYoaCYmYT4wJiZzW2FdWzBdPT09dm9pZCAwKXtmb3IodmFyIGM9YS0xO2M+PTA7Yy0tKWlmKHNbY11bMF0hPT1udWxsJiZzW2NdWzBdIT09dm9pZCAwKXtyPW49dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW2NdWzBdO2JyZWFrfX1yZXR1cm57cHJldlk6cixsaW5lWVBvc2l0aW9uOm59fX1dKSx5fSgpLFd0PWZ1bmN0aW9uKHkpe2Zvcih2YXIgZSx0LGksYSxzPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZD1bXSxnPWNbMF0scD1jWzFdLGY9ZFswXT1VZShnLHApLGI9MSxtPWMubGVuZ3RoLTE7YjxtO2IrKylnPXAscD1jW2IrMV0sZFtiXT0uNSooZisoZj1VZShnLHApKSk7cmV0dXJuIGRbYl09ZixkfSh5KSxyPXkubGVuZ3RoLTEsbj1bXSxvPTA7bzxyO28rKylpPVVlKHlbb10seVtvKzFdKSxNYXRoLmFicyhpKTwxZS02P3Nbb109c1tvKzFdPTA6KGE9KGU9c1tvXS9pKSplKyh0PXNbbysxXS9pKSp0KT45JiYoYT0zKmkvTWF0aC5zcXJ0KGEpLHNbb109YSplLHNbbysxXT1hKnQpO2Zvcih2YXIgaD0wO2g8PXI7aCsrKWE9KHlbTWF0aC5taW4ocixoKzEpXVswXS15W01hdGgubWF4KDAsaC0xKV1bMF0pLyg2KigxK3NbaF0qc1toXSkpLG4ucHVzaChbYXx8MCxzW2hdKmF8fDBdKTtyZXR1cm4gbn0sX2U9ZnVuY3Rpb24oeSl7Zm9yKHZhciBlPVwiXCIsdD0wO3Q8eS5sZW5ndGg7dCsrKXt2YXIgaT15W3RdLGE9aS5sZW5ndGg7YT40PyhlKz1cIkNcIi5jb25jYXQoaVswXSxcIiwgXCIpLmNvbmNhdChpWzFdKSxlKz1cIiwgXCIuY29uY2F0KGlbMl0sXCIsIFwiKS5jb25jYXQoaVszXSksZSs9XCIsIFwiLmNvbmNhdChpWzRdLFwiLCBcIikuY29uY2F0KGlbNV0pKTphPjImJihlKz1cIlNcIi5jb25jYXQoaVswXSxcIiwgXCIpLmNvbmNhdChpWzFdKSxlKz1cIiwgXCIuY29uY2F0KGlbMl0sXCIsIFwiKS5jb25jYXQoaVszXSkpfXJldHVybiBlfSxkdD1mdW5jdGlvbih5KXt2YXIgZT1XdCh5KSx0PXlbMV0saT15WzBdLGE9W10scz1lWzFdLHI9ZVswXTthLnB1c2goaSxbaVswXStyWzBdLGlbMV0rclsxXSx0WzBdLXNbMF0sdFsxXS1zWzFdLHRbMF0sdFsxXV0pO2Zvcih2YXIgbj0yLG89ZS5sZW5ndGg7bjxvO24rKyl7dmFyIGg9eVtuXSxjPWVbbl07YS5wdXNoKFtoWzBdLWNbMF0saFsxXS1jWzFdLGhbMF0saFsxXV0pfXJldHVybiBhfTtmdW5jdGlvbiBVZSh5LGUpe3JldHVybihlWzFdLXlbMV0pLyhlWzBdLXlbMF0pfXZhciBxZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0LGkpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54eVJhdGlvcz10LHRoaXMucG9pbnRzQ2hhcnQ9ISh0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUhPT1cImJ1YmJsZVwiJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInNjYXR0ZXJcIil8fGksdGhpcy5zY2F0dGVyPW5ldyBLZSh0aGlzLmN0eCksdGhpcy5ub05lZ2F0aXZlcz10aGlzLncuZ2xvYmFscy5taW5YPT09TnVtYmVyLk1BWF9WQUxVRSx0aGlzLmxpbmVIZWxwZXJzPW5ldyBOdCh0aGlzKSx0aGlzLm1hcmtlcnM9bmV3IFRlKHRoaXMuY3R4KSx0aGlzLnByZXZTZXJpZXNZPVtdLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj0wLHRoaXMueWF4aXNJbmRleD0wfXJldHVybiBZKHksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHMscj10aGlzLncsbj1uZXcgTSh0aGlzLmN0eCksbz1yLmdsb2JhbHMuY29tYm9DaGFydHM/dDpyLmNvbmZpZy5jaGFydC50eXBlLGg9bi5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChvLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksYz1uZXcgcSh0aGlzLmN0eCxyKTt0aGlzLnlSYXRpbz10aGlzLnh5UmF0aW9zLnlSYXRpbyx0aGlzLnpSYXRpbz10aGlzLnh5UmF0aW9zLnpSYXRpbyx0aGlzLnhSYXRpbz10aGlzLnh5UmF0aW9zLnhSYXRpbyx0aGlzLmJhc2VMaW5lWT10aGlzLnh5UmF0aW9zLmJhc2VMaW5lWSxlPWMuZ2V0TG9nU2VyaWVzKGUpLHRoaXMueVJhdGlvPWMuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyk7Zm9yKHZhciBkPVtdLGc9MDtnPGUubGVuZ3RoO2crKyl7ZT10aGlzLmxpbmVIZWxwZXJzLnNhbWVWYWx1ZVNlcmllc0ZpeChnLGUpO3ZhciBwPXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW2ddOmc7dGhpcy5faW5pdFNlcmllVmFyaWFibGVzKGUsZyxwKTt2YXIgZj1bXSxiPVtdLG09W10sdz1yLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb247dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcyxwKSxyLmdsb2JhbHMuaXNYTnVtZXJpYyYmci5nbG9iYWxzLnNlcmllc1gubGVuZ3RoPjAmJih3PShyLmdsb2JhbHMuc2VyaWVzWFtwXVswXS1yLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8pLG0ucHVzaCh3KTt2YXIgQSxsPXcsdT12b2lkIDAseD1sLHY9dGhpcy56ZXJvWSxrPXRoaXMuemVyb1k7dj10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6ZSxwcmV2WTp2LGxpbmVZUG9zaXRpb246MH0pLnByZXZZLHIuY29uZmlnLnN0cm9rZS5jdXJ2ZT09PVwibW9ub3RvbkN1YmljXCImJmVbZ11bMF09PT1udWxsP2YucHVzaChudWxsKTpmLnB1c2godiksQT12LG89PT1cInJhbmdlQXJlYVwiJiYodT1rPXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpnLHNlcmllczphLHByZXZZOmssbGluZVlQb3NpdGlvbjowfSkucHJldlksYi5wdXNoKGspKTt2YXIgUz17dHlwZTpvLHNlcmllczplLHJlYWxJbmRleDpwLGk6Zyx4OncseToxLHBYOmwscFk6QSxwYXRoc0Zyb206dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHt0eXBlOm8sc2VyaWVzOmUsaTpnLHJlYWxJbmRleDpwLHByZXZYOngscHJldlk6dixwcmV2WTI6a30pLGxpbmVQYXRoczpbXSxhcmVhUGF0aHM6W10sc2VyaWVzSW5kZXg6aSxsaW5lWVBvc2l0aW9uOjAseEFycmo6bSx5QXJyajpmLHkyQXJyajpiLHNlcmllc1JhbmdlRW5kOmF9LEM9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKFgoWCh7fSxTKSx7fSx7aXRlcmF0aW9uczpvPT09XCJyYW5nZUFyZWFcIj9lW2ddLmxlbmd0aC0xOnZvaWQgMCxpc1JhbmdlU3RhcnQ6ITB9KSk7aWYobz09PVwicmFuZ2VBcmVhXCIpe3ZhciBMPXRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7c2VyaWVzOmEsaTpnLHJlYWxJbmRleDpwLHByZXZYOngscHJldlk6a30pLEk9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKFgoWCh7fSxTKSx7fSx7c2VyaWVzOmEscFk6dSxwYXRoc0Zyb206TCxpdGVyYXRpb25zOmFbZ10ubGVuZ3RoLTEsaXNSYW5nZVN0YXJ0OiExfSkpO0MubGluZVBhdGhzWzBdPUkubGluZVBhdGgrQy5saW5lUGF0aCxDLnBhdGhGcm9tTGluZT1JLnBhdGhGcm9tTGluZStDLnBhdGhGcm9tTGluZX10aGlzLl9oYW5kbGVQYXRocyh7dHlwZTpvLHJlYWxJbmRleDpwLGk6ZyxwYXRoczpDfSksdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbFBvaW50c01haW4pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxEYXRhTGFiZWxzV3JhcCksZC5wdXNoKHRoaXMuZWxTZXJpZXMpfWlmKCgocz1yLmNvbmZpZy5zZXJpZXNbMF0pPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6cy56SW5kZXgpIT09dm9pZCAwJiZkLnNvcnQoZnVuY3Rpb24oRSxSKXtyZXR1cm4gTnVtYmVyKEUubm9kZS5nZXRBdHRyaWJ1dGUoXCJ6SW5kZXhcIikpLU51bWJlcihSLm5vZGUuZ2V0QXR0cmlidXRlKFwiekluZGV4XCIpKX0pLHIuY29uZmlnLmNoYXJ0LnN0YWNrZWQpZm9yKHZhciB6PWQubGVuZ3RoO3o+MDt6LS0paC5hZGQoZFt6LTFdKTtlbHNlIGZvcih2YXIgVD0wO1Q8ZC5sZW5ndGg7VCsrKWguYWRkKGRbVF0pO3JldHVybiBofX0se2tleTpcIl9pbml0U2VyaWVWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQsaSl7dmFyIGE9dGhpcy53LHM9bmV3IE0odGhpcy5jdHgpO3RoaXMueERpdmlzaW9uPWEuZ2xvYmFscy5ncmlkV2lkdGgvKGEuZ2xvYmFscy5kYXRhUG9pbnRzLShhLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50PT09XCJvblwiPzE6MCkpLHRoaXMuc3Ryb2tlV2lkdGg9QXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2Uud2lkdGgpP2EuY29uZmlnLnN0cm9rZS53aWR0aFtpXTphLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9aSksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQsdGhpcy56ZXJvWT1hLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/YS5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdGhpcy5hcmVhQm90dG9tWT10aGlzLnplcm9ZLCh0aGlzLnplcm9ZPmEuZ2xvYmFscy5ncmlkSGVpZ2h0fHxhLmNvbmZpZy5wbG90T3B0aW9ucy5hcmVhLmZpbGxUbz09PVwiZW5kXCIpJiYodGhpcy5hcmVhQm90dG9tWT1hLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uPXRoaXMueERpdmlzaW9uLzIsdGhpcy5lbFNlcmllcz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsekluZGV4OmEuY29uZmlnLnNlcmllc1tpXS56SW5kZXghPT12b2lkIDA/YS5jb25maWcuc2VyaWVzW2ldLnpJbmRleDppLHNlcmllc05hbWU6UC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW2ldKX0pLHRoaXMuZWxQb2ludHNNYWluPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmVsRGF0YUxhYmVsc1dyYXA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pO3ZhciByPWVbdF0ubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5lbFNlcmllcy5hdHRyKHtcImRhdGE6bG9uZ2VzdFNlcmllc1wiOnIscmVsOnQrMSxcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuYXBwZW5kUGF0aEZyb209ITB9fSx7a2V5OlwiX2NhbGN1bGF0ZVBhdGhzRnJvbVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGksYSxzLHI9ZS50eXBlLG49ZS5zZXJpZXMsbz1lLmksaD1lLnJlYWxJbmRleCxjPWUucHJldlgsZD1lLnByZXZZLGc9ZS5wcmV2WTIscD10aGlzLncsZj1uZXcgTSh0aGlzLmN0eCk7aWYobltvXVswXT09PW51bGwpe2Zvcih2YXIgYj0wO2I8bltvXS5sZW5ndGg7YisrKWlmKG5bb11bYl0hPT1udWxsKXtjPXRoaXMueERpdmlzaW9uKmIsZD10aGlzLnplcm9ZLW5bb11bYl0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSx0PWYubW92ZShjLGQpLGk9Zi5tb3ZlKGMsdGhpcy5hcmVhQm90dG9tWSk7YnJlYWt9fWVsc2UgdD1mLm1vdmUoYyxkKSxyPT09XCJyYW5nZUFyZWFcIiYmKHQ9Zi5tb3ZlKGMsZykrZi5saW5lKGMsZCkpLGk9Zi5tb3ZlKGMsdGhpcy5hcmVhQm90dG9tWSkrZi5saW5lKGMsZCk7aWYoYT1mLm1vdmUoLTEsdGhpcy56ZXJvWSkrZi5saW5lKC0xLHRoaXMuemVyb1kpLHM9Zi5tb3ZlKC0xLHRoaXMuemVyb1kpK2YubGluZSgtMSx0aGlzLnplcm9ZKSxwLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCl7dmFyIG09dGhpcy5saW5lSGVscGVycy5jaGVja1ByZXZpb3VzUGF0aHMoe3BhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzLHJlYWxJbmRleDpofSk7YT1tLnBhdGhGcm9tTGluZSxzPW0ucGF0aEZyb21BcmVhfXJldHVybntwcmV2WDpjLHByZXZZOmQsbGluZVBhdGg6dCxhcmVhUGF0aDppLHBhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzfX19LHtrZXk6XCJfaGFuZGxlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnR5cGUsaT1lLnJlYWxJbmRleCxhPWUuaSxzPWUucGF0aHMscj10aGlzLncsbj1uZXcgTSh0aGlzLmN0eCksbz1uZXcgc2UodGhpcy5jdHgpO3RoaXMucHJldlNlcmllc1kucHVzaChzLnlBcnJqKSxyLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXT1zLnhBcnJqLHIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2ldPXMueUFycmo7dmFyIGg9ci5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO2lmKGguY291bnQ+MCYmdCE9PVwicmFuZ2VBcmVhXCIpe3ZhciBjPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2ldW3IuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2ldLmxlbmd0aC1oLmNvdW50LTFdLGQ9bi5kcmF3UmVjdChjLDAsci5nbG9iYWxzLmdyaWRXaWR0aCxyLmdsb2JhbHMuZ3JpZEhlaWdodCwwKTtyLmdsb2JhbHMuZG9tLmVsRm9yZWNhc3RNYXNrLmFwcGVuZENoaWxkKGQubm9kZSk7dmFyIGc9bi5kcmF3UmVjdCgwLDAsYyxyLmdsb2JhbHMuZ3JpZEhlaWdodCwwKTtyLmdsb2JhbHMuZG9tLmVsTm9uRm9yZWNhc3RNYXNrLmFwcGVuZENoaWxkKGcubm9kZSl9dGhpcy5wb2ludHNDaGFydHx8ci5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDp0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLGluZGV4Oml9KTt2YXIgcD17aTphLHJlYWxJbmRleDppLGFuaW1hdGlvbkRlbGF5OmEsaW5pdGlhbFNwZWVkOnIuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOnIuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdCh0KX07aWYodD09PVwiYXJlYVwiKWZvcih2YXIgZj1vLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aX0pLGI9MDtiPHMuYXJlYVBhdGhzLmxlbmd0aDtiKyspe3ZhciBtPW4ucmVuZGVyUGF0aHMoWChYKHt9LHApLHt9LHtwYXRoRnJvbTpzLnBhdGhGcm9tQXJlYSxwYXRoVG86cy5hcmVhUGF0aHNbYl0sc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOjAsc3Ryb2tlTGluZUNhcDpudWxsLGZpbGw6Zn0pKTt0aGlzLmVsU2VyaWVzLmFkZChtKX1pZihyLmNvbmZpZy5zdHJva2Uuc2hvdyYmIXRoaXMucG9pbnRzQ2hhcnQpe3ZhciB3PW51bGw7aWYodD09PVwibGluZVwiKXc9by5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmksaTphfSk7ZWxzZSBpZihyLmNvbmZpZy5zdHJva2UuZmlsbC50eXBlPT09XCJzb2xpZFwiKXc9ci5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbaV07ZWxzZXt2YXIgQT1yLmNvbmZpZy5maWxsO3IuY29uZmlnLmZpbGw9ci5jb25maWcuc3Ryb2tlLmZpbGwsdz1vLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aSxpOmF9KSxyLmNvbmZpZy5maWxsPUF9Zm9yKHZhciBsPTA7bDxzLmxpbmVQYXRocy5sZW5ndGg7bCsrKXt2YXIgdT13O3Q9PT1cInJhbmdlQXJlYVwiJiYodT1vLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aX0pKTt2YXIgeD1YKFgoe30scCkse30se3BhdGhGcm9tOnMucGF0aEZyb21MaW5lLHBhdGhUbzpzLmxpbmVQYXRoc1tsXSxzdHJva2U6dyxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZUxpbmVDYXA6ci5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDp0PT09XCJyYW5nZUFyZWFcIj91Olwibm9uZVwifSksdj1uLnJlbmRlclBhdGhzKHgpO2lmKHRoaXMuZWxTZXJpZXMuYWRkKHYpLHYuYXR0cihcImZpbGwtcnVsZVwiLFwiZXZlbm9kZFwiKSxoLmNvdW50PjAmJnQhPT1cInJhbmdlQXJlYVwiKXt2YXIgaz1uLnJlbmRlclBhdGhzKHgpO2subm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIsaC5kYXNoQXJyYXkpLGguc3Ryb2tlV2lkdGgmJmsubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIixoLnN0cm9rZVdpZHRoKSx0aGlzLmVsU2VyaWVzLmFkZChrKSxrLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZm9yZWNhc3RNYXNrXCIuY29uY2F0KHIuZ2xvYmFscy5jdWlkLFwiKVwiKSksdi5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI25vbkZvcmVjYXN0TWFza1wiLmNvbmNhdChyLmdsb2JhbHMuY3VpZCxcIilcIikpfX19fX0se2tleTpcIl9pdGVyYXRlT3ZlckRhdGFQb2ludHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsYT1lLnR5cGUscz1lLnNlcmllcyxyPWUuaXRlcmF0aW9ucyxuPWUucmVhbEluZGV4LG89ZS5pLGg9ZS54LGM9ZS55LGQ9ZS5wWCxnPWUucFkscD1lLnBhdGhzRnJvbSxmPWUubGluZVBhdGhzLGI9ZS5hcmVhUGF0aHMsbT1lLnNlcmllc0luZGV4LHc9ZS5saW5lWVBvc2l0aW9uLEE9ZS54QXJyaixsPWUueUFycmosdT1lLnkyQXJyaix4PWUuaXNSYW5nZVN0YXJ0LHY9ZS5zZXJpZXNSYW5nZUVuZCxrPXRoaXMudyxTPW5ldyBNKHRoaXMuY3R4KSxDPXRoaXMueVJhdGlvLEw9cC5wcmV2WSxJPXAubGluZVBhdGgsej1wLmFyZWFQYXRoLFQ9cC5wYXRoRnJvbUxpbmUsRT1wLnBhdGhGcm9tQXJlYSxSPVAuaXNOdW1iZXIoay5nbG9iYWxzLm1pbllBcnJbbl0pP2suZ2xvYmFscy5taW5ZQXJyW25dOmsuZ2xvYmFscy5taW5ZO3J8fChyPWsuZ2xvYmFscy5kYXRhUG9pbnRzPjE/ay5nbG9iYWxzLmRhdGFQb2ludHMtMTprLmdsb2JhbHMuZGF0YVBvaW50cyk7Zm9yKHZhciBPPWZ1bmN0aW9uKGhlLGNlKXtyZXR1cm4gY2UtaGUvQ1tpLnlheGlzSW5kZXhdKzIqKGkuaXNSZXZlcnNlZD9oZS9DW2kueWF4aXNJbmRleF06MCl9LEQ9YyxXPWsuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJiFrLmdsb2JhbHMuY29tYm9DaGFydHN8fGsuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmsuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKCF0aGlzLncuY29uZmlnLmNoYXJ0LnN0YWNrT25seUJhcnx8KCh0PXRoaXMudy5jb25maWcuc2VyaWVzW25dKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudHlwZSk9PT1cImJhclwiKSxOPTA7TjxyO04rKyl7dmFyIFY9c1tvXVtOKzFdPT09dm9pZCAwfHxzW29dW04rMV09PT1udWxsO2lmKGsuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgaj1rLmdsb2JhbHMuc2VyaWVzWFtuXVtOKzFdO2suZ2xvYmFscy5zZXJpZXNYW25dW04rMV09PT12b2lkIDAmJihqPWsuZ2xvYmFscy5zZXJpZXNYW25dW3ItMV0pLGg9KGotay5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvfWVsc2UgaCs9dGhpcy54RGl2aXNpb247Vz9vPjAmJmsuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPGsuY29uZmlnLnNlcmllcy5sZW5ndGgtMT93PXRoaXMucHJldlNlcmllc1lbZnVuY3Rpb24oaGUpe2Zvcih2YXIgY2U9aGUsSj0wO0o8ay5nbG9iYWxzLnNlcmllcy5sZW5ndGg7SisrKWlmKGsuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaGUpPi0xKXtjZS0tO2JyZWFrfXJldHVybiBjZT49MD9jZTowfShvLTEpXVtOKzFdOnc9dGhpcy56ZXJvWTp3PXRoaXMuemVyb1ksVj9jPU8oUix3KTooYz1PKHNbb11bTisxXSx3KSxhPT09XCJyYW5nZUFyZWFcIiYmKEQ9Tyh2W29dW04rMV0sdykpKSxBLnB1c2goaCksViYmay5jb25maWcuc3Ryb2tlLmN1cnZlPT09XCJzbW9vdGhcIj9sLnB1c2gobnVsbCk6bC5wdXNoKGMpLHUucHVzaChEKTt2YXIgcmU9dGhpcy5saW5lSGVscGVycy5jYWxjdWxhdGVQb2ludHMoe3NlcmllczpzLHg6aCx5OmMscmVhbEluZGV4Om4saTpvLGo6TixwcmV2WTpMfSksZWU9dGhpcy5fY3JlYXRlUGF0aHMoe3R5cGU6YSxzZXJpZXM6cyxpOm8scmVhbEluZGV4Om4sajpOLHg6aCx5OmMseTI6RCx4QXJyajpBLHlBcnJqOmwseTJBcnJqOnUscFg6ZCxwWTpnLGxpbmVQYXRoOkksYXJlYVBhdGg6eixsaW5lUGF0aHM6ZixhcmVhUGF0aHM6YixzZXJpZXNJbmRleDptLGlzUmFuZ2VTdGFydDp4fSk7Yj1lZS5hcmVhUGF0aHMsZj1lZS5saW5lUGF0aHMsZD1lZS5wWCxnPWVlLnBZLHo9ZWUuYXJlYVBhdGgsST1lZS5saW5lUGF0aCwhdGhpcy5hcHBlbmRQYXRoRnJvbXx8ay5jb25maWcuc3Ryb2tlLmN1cnZlPT09XCJtb25vdG9uZUN1YmljXCImJmE9PT1cInJhbmdlQXJlYVwifHwoVCs9Uy5saW5lKGgsdGhpcy56ZXJvWSksRSs9Uy5saW5lKGgsdGhpcy56ZXJvWSkpLHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMocyxyZSxvLE4sbiksdGhpcy5faGFuZGxlTWFya2Vyc0FuZExhYmVscyh7dHlwZTphLHBvaW50c1BvczpyZSxpOm8sajpOLHJlYWxJbmRleDpuLGlzUmFuZ2VTdGFydDp4fSl9cmV0dXJue3lBcnJqOmwseEFycmo6QSxwYXRoRnJvbUFyZWE6RSxhcmVhUGF0aHM6YixwYXRoRnJvbUxpbmU6VCxsaW5lUGF0aHM6ZixsaW5lUGF0aDpJLGFyZWFQYXRoOnp9fX0se2tleTpcIl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50eXBlLGk9ZS5wb2ludHNQb3MsYT1lLmlzUmFuZ2VTdGFydCxzPWUuaSxyPWUuaixuPWUucmVhbEluZGV4LG89dGhpcy53LGg9bmV3IHdlKHRoaXMuY3R4KTtpZih0aGlzLnBvaW50c0NoYXJ0KXRoaXMuc2NhdHRlci5kcmF3KHRoaXMuZWxTZXJpZXMscix7cmVhbEluZGV4Om4scG9pbnRzUG9zOmkselJhdGlvOnRoaXMuelJhdGlvLGVsUGFyZW50OnRoaXMuZWxQb2ludHNNYWlufSk7ZWxzZXtvLmdsb2JhbHMuc2VyaWVzW3NdLmxlbmd0aD4xJiZ0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBjPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGksbixyKzEpO2MhPT1udWxsJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQoYyl9dmFyIGQ9aC5kcmF3RGF0YUxhYmVsKHt0eXBlOnQsaXNSYW5nZVN0YXJ0OmEscG9zOmksaTpuLGo6cisxfSk7ZCE9PW51bGwmJnRoaXMuZWxEYXRhTGFiZWxzV3JhcC5hZGQoZCl9fSx7a2V5OlwiX2NyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50eXBlLGk9ZS5zZXJpZXMsYT1lLmkscz1lLnJlYWxJbmRleCxyPWUuaixuPWUueCxvPWUueSxoPWUueEFycmosYz1lLnlBcnJqLGQ9ZS55MixnPWUueTJBcnJqLHA9ZS5wWCxmPWUucFksYj1lLmxpbmVQYXRoLG09ZS5hcmVhUGF0aCx3PWUubGluZVBhdGhzLEE9ZS5hcmVhUGF0aHMsbD1lLnNlcmllc0luZGV4LHU9ZS5pc1JhbmdlU3RhcnQseD10aGlzLncsdj1uZXcgTSh0aGlzLmN0eCksaz14LmNvbmZpZy5zdHJva2UuY3VydmUsUz10aGlzLmFyZWFCb3R0b21ZO2lmKEFycmF5LmlzQXJyYXkoeC5jb25maWcuc3Ryb2tlLmN1cnZlKSYmKGs9QXJyYXkuaXNBcnJheShsKT94LmNvbmZpZy5zdHJva2UuY3VydmVbbFthXV06eC5jb25maWcuc3Ryb2tlLmN1cnZlW2FdKSx0PT09XCJyYW5nZUFyZWFcIiYmKHguZ2xvYmFscy5oYXNOdWxsVmFsdWVzfHx4LmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHMuY291bnQ+MCkmJms9PT1cIm1vbm90b25lQ3ViaWNcIiYmKGs9XCJzdHJhaWdodFwiKSxrPT09XCJtb25vdG9uZUN1YmljXCIpe3ZhciBDPXQ9PT1cInJhbmdlQXJlYVwiP2gubGVuZ3RoPT09eC5nbG9iYWxzLmRhdGFQb2ludHM6cj09PWlbYV0ubGVuZ3RoLTIsTD1oLm1hcChmdW5jdGlvbihXLE4pe3JldHVybltoW05dLGNbTl1dfSkuZmlsdGVyKGZ1bmN0aW9uKFcpe3JldHVybiBXWzFdIT09bnVsbH0pO2lmKEMmJkwubGVuZ3RoPjEpe3ZhciBJPWR0KEwpO2lmKGIrPV9lKEkpLGlbYV1bMF09PT1udWxsP209YjptKz1fZShJKSx0PT09XCJyYW5nZUFyZWFcIiYmdSl7Yis9di5saW5lKGhbaC5sZW5ndGgtMV0sZ1tnLmxlbmd0aC0xXSk7dmFyIHo9aC5zbGljZSgpLnJldmVyc2UoKSxUPWcuc2xpY2UoKS5yZXZlcnNlKCksRT16Lm1hcChmdW5jdGlvbihXLE4pe3JldHVyblt6W05dLFRbTl1dfSksUj1kdChFKTttPWIrPV9lKFIpfWVsc2UgbSs9di5saW5lKExbTC5sZW5ndGgtMV1bMF0sUykrdi5saW5lKExbMF1bMF0sUykrdi5tb3ZlKExbMF1bMF0sTFswXVsxXSkrXCJ6XCI7dy5wdXNoKGIpLEEucHVzaChtKX19ZWxzZSBpZihrPT09XCJzbW9vdGhcIil7dmFyIE89LjM1KihuLXApO3guZ2xvYmFscy5oYXNOdWxsVmFsdWVzPyhpW2FdW3JdIT09bnVsbCYmKGlbYV1bcisxXSE9PW51bGw/KGI9di5tb3ZlKHAsZikrdi5jdXJ2ZShwK08sZixuLU8sbyxuKzEsbyksbT12Lm1vdmUocCsxLGYpK3YuY3VydmUocCtPLGYsbi1PLG8sbisxLG8pK3YubGluZShuLFMpK3YubGluZShwLFMpK1wielwiKTooYj12Lm1vdmUocCxmKSxtPXYubW92ZShwLGYpK1wielwiKSksdy5wdXNoKGIpLEEucHVzaChtKSk6KGIrPXYuY3VydmUocCtPLGYsbi1PLG8sbixvKSxtKz12LmN1cnZlKHArTyxmLG4tTyxvLG4sbykpLHA9bixmPW8scj09PWlbYV0ubGVuZ3RoLTImJihtPW0rdi5jdXJ2ZShwLGYsbixvLG4sUykrdi5tb3ZlKG4sbykrXCJ6XCIsdD09PVwicmFuZ2VBcmVhXCImJnU/Yj1iK3YuY3VydmUocCxmLG4sbyxuLGQpK3YubW92ZShuLGQpK1wielwiOnguZ2xvYmFscy5oYXNOdWxsVmFsdWVzfHwody5wdXNoKGIpLEEucHVzaChtKSkpfWVsc2V7aWYoaVthXVtyKzFdPT09bnVsbCl7Yis9di5tb3ZlKG4sbyk7dmFyIEQ9eC5nbG9iYWxzLmlzWE51bWVyaWM/KHguZ2xvYmFscy5zZXJpZXNYW3NdW3JdLXguZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpbzpuLXRoaXMueERpdmlzaW9uO209bSt2LmxpbmUoRCxTKSt2Lm1vdmUobixvKStcInpcIn1pW2FdW3JdPT09bnVsbCYmKGIrPXYubW92ZShuLG8pLG0rPXYubW92ZShuLFMpKSxrPT09XCJzdGVwbGluZVwiPyhiPWIrdi5saW5lKG4sbnVsbCxcIkhcIikrdi5saW5lKG51bGwsbyxcIlZcIiksbT1tK3YubGluZShuLG51bGwsXCJIXCIpK3YubGluZShudWxsLG8sXCJWXCIpKTprPT09XCJzdHJhaWdodFwiJiYoYis9di5saW5lKG4sbyksbSs9di5saW5lKG4sbykpLHI9PT1pW2FdLmxlbmd0aC0yJiYobT1tK3YubGluZShuLFMpK3YubW92ZShuLG8pK1wielwiLHQ9PT1cInJhbmdlQXJlYVwiJiZ1P2I9Yit2LmxpbmUobixkKSt2Lm1vdmUobixkKStcInpcIjoody5wdXNoKGIpLEEucHVzaChtKSkpfXJldHVybntsaW5lUGF0aHM6dyxhcmVhUGF0aHM6QSxwWDpwLHBZOmYsbGluZVBhdGg6YixhcmVhUGF0aDptfX19LHtrZXk6XCJoYW5kbGVOdWxsRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyl7dmFyIHI9dGhpcy53O2lmKGVbaV1bYV09PT1udWxsJiZyLmNvbmZpZy5tYXJrZXJzLnNob3dOdWxsRGF0YVBvaW50c3x8ZVtpXS5sZW5ndGg9PT0xKXt2YXIgbj10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2Vycyh0LHMsYSsxLHRoaXMuc3Ryb2tlV2lkdGgtci5jb25maWcubWFya2Vycy5zdHJva2VXaWR0aC8yLCEwKTtuIT09bnVsbCYmdGhpcy5lbFBvaW50c01haW4uYWRkKG4pfX19XSkseX0oKTt3aW5kb3cuVHJlZW1hcFNxdWFyZWQ9e30sd2luZG93LlRyZWVtYXBTcXVhcmVkLmdlbmVyYXRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShuLG8saCxjKXt0aGlzLnhvZmZzZXQ9bix0aGlzLnlvZmZzZXQ9byx0aGlzLmhlaWdodD1jLHRoaXMud2lkdGg9aCx0aGlzLnNob3J0ZXN0RWRnZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmhlaWdodCx0aGlzLndpZHRoKX0sdGhpcy5nZXRDb29yZGluYXRlcz1mdW5jdGlvbihkKXt2YXIgZyxwPVtdLGY9dGhpcy54b2Zmc2V0LGI9dGhpcy55b2Zmc2V0LG09cyhkKS90aGlzLmhlaWdodCx3PXMoZCkvdGhpcy53aWR0aDtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodClmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXAucHVzaChbZixiLGYrbSxiK2RbZ10vbV0pLGIrPWRbZ10vbTtlbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspcC5wdXNoKFtmLGIsZitkW2ddL3csYit3XSksZis9ZFtnXS93O3JldHVybiBwfSx0aGlzLmN1dEFyZWE9ZnVuY3Rpb24oZCl7dmFyIGc7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpe3ZhciBwPWQvdGhpcy5oZWlnaHQsZj10aGlzLndpZHRoLXA7Zz1uZXcgeSh0aGlzLnhvZmZzZXQrcCx0aGlzLnlvZmZzZXQsZix0aGlzLmhlaWdodCl9ZWxzZXt2YXIgYj1kL3RoaXMud2lkdGgsbT10aGlzLmhlaWdodC1iO2c9bmV3IHkodGhpcy54b2Zmc2V0LHRoaXMueW9mZnNldCtiLHRoaXMud2lkdGgsbSl9cmV0dXJuIGd9fWZ1bmN0aW9uIGUobixvLGgsYyxkKXtjPWM9PT12b2lkIDA/MDpjLGQ9ZD09PXZvaWQgMD8wOmQ7dmFyIGc9dChmdW5jdGlvbihwLGYpe3ZhciBiLG09W10sdz1mL3MocCk7Zm9yKGI9MDtiPHAubGVuZ3RoO2IrKyltW2JdPXBbYl0qdztyZXR1cm4gbX0obixvKmgpLFtdLG5ldyB5KGMsZCxvLGgpLFtdKTtyZXR1cm4gZnVuY3Rpb24ocCl7dmFyIGYsYixtPVtdO2ZvcihmPTA7ZjxwLmxlbmd0aDtmKyspZm9yKGI9MDtiPHBbZl0ubGVuZ3RoO2IrKyltLnB1c2gocFtmXVtiXSk7cmV0dXJuIG19KGcpfWZ1bmN0aW9uIHQobixvLGgsYyl7dmFyIGQsZyxwO2lmKG4ubGVuZ3RoIT09MClyZXR1cm4gZD1oLnNob3J0ZXN0RWRnZSgpLGZ1bmN0aW9uKGYsYixtKXt2YXIgdztpZihmLmxlbmd0aD09PTApcmV0dXJuITA7KHc9Zi5zbGljZSgpKS5wdXNoKGIpO3ZhciBBPWkoZixtKSxsPWkodyxtKTtyZXR1cm4gQT49bH0obyxnPW5bMF0sZCk/KG8ucHVzaChnKSx0KG4uc2xpY2UoMSksbyxoLGMpKToocD1oLmN1dEFyZWEocyhvKSxjKSxjLnB1c2goaC5nZXRDb29yZGluYXRlcyhvKSksdChuLFtdLHAsYykpLGM7Yy5wdXNoKGguZ2V0Q29vcmRpbmF0ZXMobykpfWZ1bmN0aW9uIGkobixvKXt2YXIgaD1NYXRoLm1pbi5hcHBseShNYXRoLG4pLGM9TWF0aC5tYXguYXBwbHkoTWF0aCxuKSxkPXMobik7cmV0dXJuIE1hdGgubWF4KE1hdGgucG93KG8sMikqYy9NYXRoLnBvdyhkLDIpLE1hdGgucG93KGQsMikvKE1hdGgucG93KG8sMikqaCkpfWZ1bmN0aW9uIGEobil7cmV0dXJuIG4mJm4uY29uc3RydWN0b3I9PT1BcnJheX1mdW5jdGlvbiBzKG4pe3ZhciBvLGg9MDtmb3Iobz0wO288bi5sZW5ndGg7bysrKWgrPW5bb107cmV0dXJuIGh9ZnVuY3Rpb24gcihuKXt2YXIgbyxoPTA7aWYoYShuWzBdKSlmb3Iobz0wO288bi5sZW5ndGg7bysrKWgrPXIobltvXSk7ZWxzZSBoPXMobik7cmV0dXJuIGh9cmV0dXJuIGZ1bmN0aW9uIG4obyxoLGMsZCxnKXtkPWQ9PT12b2lkIDA/MDpkLGc9Zz09PXZvaWQgMD8wOmc7dmFyIHAsZixiPVtdLG09W107aWYoYShvWzBdKSl7Zm9yKGY9MDtmPG8ubGVuZ3RoO2YrKyliW2ZdPXIob1tmXSk7Zm9yKHA9ZShiLGgsYyxkLGcpLGY9MDtmPG8ubGVuZ3RoO2YrKyltLnB1c2gobihvW2ZdLHBbZl1bMl0tcFtmXVswXSxwW2ZdWzNdLXBbZl1bMV0scFtmXVswXSxwW2ZdWzFdKSl9ZWxzZSBtPWUobyxoLGMsZCxnKTtyZXR1cm4gbX19KCk7dmFyIG1lLE9lLEJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlLHQpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmhlbHBlcnM9bmV3IGx0KGUpLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5sYWJlbHM9W119cmV0dXJuIFkoeSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9bmV3IE0odGhpcy5jdHgpLHM9bmV3IHNlKHRoaXMuY3R4KSxyPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy10cmVlbWFwXCJ9KTtpZihpLmdsb2JhbHMubm9EYXRhKXJldHVybiByO3ZhciBuPVtdO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGg9by5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIE1hdGguYWJzKGMpfSk7bi5wdXNoKGgpfSksdGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksaS5jb25maWcuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24obyxoKXtvLmRhdGEuZm9yRWFjaChmdW5jdGlvbihjKXtBcnJheS5pc0FycmF5KHQubGFiZWxzW2hdKXx8KHQubGFiZWxzW2hdPVtdKSx0LmxhYmVsc1toXS5wdXNoKGMueCl9KX0pLHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZShuLGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLmZvckVhY2goZnVuY3Rpb24obyxoKXt2YXIgYz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtdHJlZW1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOlAuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1toXSkscmVsOmgrMSxcImRhdGE6cmVhbEluZGV4XCI6aH0pO2lmKGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgJCh0LmN0eCkuZHJvcFNoYWRvdyhyLGQsaCl9dmFyIGc9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTtvLmZvckVhY2goZnVuY3Rpb24ocCxmKXt2YXIgYj1wWzBdLG09cFsxXSx3PXBbMl0sQT1wWzNdLGw9YS5kcmF3UmVjdChiLG0sdy1iLEEtbSxpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmJvcmRlclJhZGl1cyxcIiNmZmZcIiwxLHQuc3Ryb2tlV2lkdGgsaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT94OmkuZ2xvYmFscy5zdHJva2UuY29sb3JzW2hdKTtsLmF0dHIoe2N4OmIsY3k6bSxpbmRleDpoLGk6aCxqOmYsd2lkdGg6dy1iLGhlaWdodDpBLW19KTt2YXIgdT10LmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihpLmNvbmZpZy5jaGFydC50eXBlLGgsZix0Lm5lZ1JhbmdlKSx4PXUuY29sb3I7aS5jb25maWcuc2VyaWVzW2hdLmRhdGFbZl0hPT12b2lkIDAmJmkuY29uZmlnLnNlcmllc1toXS5kYXRhW2ZdLmZpbGxDb2xvciYmKHg9aS5jb25maWcuc2VyaWVzW2hdLmRhdGFbZl0uZmlsbENvbG9yKTt2YXIgdj1zLmZpbGxQYXRoKHtjb2xvcjp4LHNlcmllc051bWJlcjpoLGRhdGFQb2ludEluZGV4OmZ9KTtsLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdHJlZW1hcC1yZWN0XCIpLGwuYXR0cih7ZmlsbDp2fSksdC5oZWxwZXJzLmFkZExpc3RlbmVycyhsKTt2YXIgaz17eDpiKyh3LWIpLzIseTptKyhBLW0pLzIsd2lkdGg6MCxoZWlnaHQ6MH0sUz17eDpiLHk6bSx3aWR0aDp3LWIsaGVpZ2h0OkEtbX07aWYoaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgQz0xO2kuZ2xvYmFscy5yZXNpemVkfHwoQz1pLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSx0LmFuaW1hdGVUcmVlbWFwKGwsayxTLEMpfWlmKGkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEw9MTt0LmR5bmFtaWNBbmltLmVuYWJsZWQmJmkuZ2xvYmFscy5zaG91bGRBbmltYXRlJiYoTD10LmR5bmFtaWNBbmltLnNwZWVkLGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdJiZpLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtmXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bZl0ucmVjdCYmKGs9aS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bZl0ucmVjdCksdC5hbmltYXRlVHJlZW1hcChsLGssUyxMKSl9dmFyIEk9dC5nZXRGb250U2l6ZShwKSx6PWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHQubGFiZWxzW2hdW2ZdLHt2YWx1ZTppLmdsb2JhbHMuc2VyaWVzW2hdW2ZdLHNlcmllc0luZGV4OmgsZGF0YVBvaW50SW5kZXg6Zix3Oml9KTtpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmRhdGFMYWJlbHMuZm9ybWF0PT09XCJ0cnVuY2F0ZVwiJiYoST1wYXJzZUludChpLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKSx6PXQudHJ1bmNhdGVMYWJlbHMoeixJLGIsbSx3LEEpKTt2YXIgVD10LmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDp6LHg6KGIrdykvMix5OihtK0EpLzIrdC5zdHJva2VXaWR0aC8yK0kvMyxpOmgsajpmLGNvbG9yUHJvcHM6dSxmb250U2l6ZTpJLHNlcmllczplfSk7aS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiZUJiZ0LnJvdGF0ZVRvRml0TGFiZWwoVCxJLHosYixtLHcsQSksYy5hZGQobCksVCE9PW51bGwmJmMuYWRkKFQpfSksYy5hZGQoZyksci5hZGQoYyl9KSxyfX0se2tleTpcImdldEZvbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53LGksYSxzLHIsbj1mdW5jdGlvbiBvKGgpe3ZhciBjLGQ9MDtpZihBcnJheS5pc0FycmF5KGhbMF0pKWZvcihjPTA7YzxoLmxlbmd0aDtjKyspZCs9byhoW2NdKTtlbHNlIGZvcihjPTA7YzxoLmxlbmd0aDtjKyspZCs9aFtjXS5sZW5ndGg7cmV0dXJuIGR9KHRoaXMubGFiZWxzKS9mdW5jdGlvbiBvKGgpe3ZhciBjLGQ9MDtpZihBcnJheS5pc0FycmF5KGhbMF0pKWZvcihjPTA7YzxoLmxlbmd0aDtjKyspZCs9byhoW2NdKTtlbHNlIGZvcihjPTA7YzxoLmxlbmd0aDtjKyspZCs9MTtyZXR1cm4gZH0odGhpcy5sYWJlbHMpO3JldHVybiBpPWVbMl0tZVswXSxhPWVbM10tZVsxXSxzPWkqYSxyPU1hdGgucG93KHMsLjUpLE1hdGgubWluKHIvbixwYXJzZUludCh0LmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKSl9fSx7a2V5Olwicm90YXRlVG9GaXRMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyLG4pe3ZhciBvPW5ldyBNKHRoaXMuY3R4KSxoPW8uZ2V0VGV4dFJlY3RzKGksdCk7aWYoaC53aWR0aCt0aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCs1PnItYSYmaC53aWR0aDw9bi1zKXt2YXIgYz1vLnJvdGF0ZUFyb3VuZENlbnRlcihlLm5vZGUpO2Uubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KGMueCxcIiBcIikuY29uY2F0KGMueSxcIikgdHJhbnNsYXRlKFwiKS5jb25jYXQoaC5oZWlnaHQvMyxcIilcIikpfX19LHtrZXk6XCJ0cnVuY2F0ZUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLGEscyxyKXt2YXIgbj1uZXcgTSh0aGlzLmN0eCksbz1uLmdldFRleHRSZWN0cyhlLHQpLndpZHRoK3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoKzU+cy1pJiZyLWE+cy1pP3ItYTpzLWksaD1uLmdldFRleHRCYXNlZE9uTWF4V2lkdGgoe3RleHQ6ZSxtYXhXaWR0aDpvLGZvbnRTaXplOnR9KTtyZXR1cm4gZS5sZW5ndGghPT1oLmxlbmd0aCYmby90PDU/XCJcIjpofX0se2tleTpcImFuaW1hdGVUcmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM9bmV3IGdlKHRoaXMuY3R4KTtzLmFuaW1hdGVSZWN0KGUse3g6dC54LHk6dC55LHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSx7eDppLngseTppLnksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGEsZnVuY3Rpb24oKXtzLmFuaW1hdGlvbkNvbXBsZXRlZChlKX0pfX1dKSx5fSgpLEd0PTg2NDAwLFZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShlKXtGKHRoaXMseSksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudGltZVNjYWxlQXJyYXk9W10sdGhpcy51dGM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEN9cmV0dXJuIFkoeSxbe2tleTpcImNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLGE9dGhpcy53O2lmKGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIGEuZ2xvYmFscy5sYWJlbHM9W10sYS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1bXSxbXTt2YXIgcz1uZXcgQih0aGlzLmN0eCkscj0odC1lKS84NjRlNTt0aGlzLmRldGVybWluZUludGVydmFsKHIpLGEuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSExLGEuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMSxyPC4wMDAxMTU3NDA3NDA3NDA3NDA3NT9hLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMDpyPjVlNCYmKGEuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMCk7dmFyIG49cy5nZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wKGUsdCx0aGlzLnV0Yyksbz1hLmdsb2JhbHMuZ3JpZFdpZHRoL3IsaD1vLzI0LGM9aC82MCxkPWMvNjAsZz1NYXRoLmZsb29yKDI0KnIpLHA9TWF0aC5mbG9vcigxNDQwKnIpLGY9TWF0aC5mbG9vcihyKkd0KSxiPU1hdGguZmxvb3IociksbT1NYXRoLmZsb29yKHIvMzApLHc9TWF0aC5mbG9vcihyLzM2NSksQT17bWluTWlsbGlzZWNvbmQ6bi5taW5NaWxsaXNlY29uZCxtaW5TZWNvbmQ6bi5taW5TZWNvbmQsbWluTWludXRlOm4ubWluTWludXRlLG1pbkhvdXI6bi5taW5Ib3VyLG1pbkRhdGU6bi5taW5EYXRlLG1pbk1vbnRoOm4ubWluTW9udGgsbWluWWVhcjpuLm1pblllYXJ9LGw9e2ZpcnN0VmFsOkEsY3VycmVudE1pbGxpc2Vjb25kOkEubWluTWlsbGlzZWNvbmQsY3VycmVudFNlY29uZDpBLm1pblNlY29uZCxjdXJyZW50TWludXRlOkEubWluTWludXRlLGN1cnJlbnRIb3VyOkEubWluSG91cixjdXJyZW50TW9udGhEYXRlOkEubWluRGF0ZSxjdXJyZW50RGF0ZTpBLm1pbkRhdGUsY3VycmVudE1vbnRoOkEubWluTW9udGgsY3VycmVudFllYXI6QS5taW5ZZWFyLGRheXNXaWR0aE9uWEF4aXM6byxob3Vyc1dpZHRoT25YQXhpczpoLG1pbnV0ZXNXaWR0aE9uWEF4aXM6YyxzZWNvbmRzV2lkdGhPblhBeGlzOmQsbnVtYmVyT2ZTZWNvbmRzOmYsbnVtYmVyT2ZNaW51dGVzOnAsbnVtYmVyT2ZIb3VyczpnLG51bWJlck9mRGF5czpiLG51bWJlck9mTW9udGhzOm0sbnVtYmVyT2ZZZWFyczp3fTtzd2l0Y2godGhpcy50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6dGhpcy5nZW5lcmF0ZVllYXJTY2FsZShsKTticmVhaztjYXNlXCJtb250aHNcIjpjYXNlXCJoYWxmX3llYXJcIjp0aGlzLmdlbmVyYXRlTW9udGhTY2FsZShsKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmNhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjpjYXNlXCJkYXlzXCI6Y2FzZVwid2Vla19kYXlzXCI6dGhpcy5nZW5lcmF0ZURheVNjYWxlKGwpO2JyZWFrO2Nhc2VcImhvdXJzXCI6dGhpcy5nZW5lcmF0ZUhvdXJTY2FsZShsKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwibWludXRlc1wiOnRoaXMuZ2VuZXJhdGVNaW51dGVTY2FsZShsKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc1wiOnRoaXMuZ2VuZXJhdGVTZWNvbmRTY2FsZShsKX12YXIgdT10aGlzLnRpbWVTY2FsZUFycmF5Lm1hcChmdW5jdGlvbih4KXt2YXIgdj17cG9zaXRpb246eC5wb3NpdGlvbix1bml0OngudW5pdCx5ZWFyOngueWVhcixkYXk6eC5kYXk/eC5kYXk6MSxob3VyOnguaG91cj94LmhvdXI6MCxtb250aDp4Lm1vbnRoKzF9O3JldHVybiB4LnVuaXQ9PT1cIm1vbnRoXCI/WChYKHt9LHYpLHt9LHtkYXk6MSx2YWx1ZTp4LnZhbHVlKzF9KTp4LnVuaXQ9PT1cImRheVwifHx4LnVuaXQ9PT1cImhvdXJcIj9YKFgoe30sdikse30se3ZhbHVlOngudmFsdWV9KTp4LnVuaXQ9PT1cIm1pbnV0ZVwiP1goWCh7fSx2KSx7fSx7dmFsdWU6eC52YWx1ZSxtaW51dGU6eC52YWx1ZX0pOngudW5pdD09PVwic2Vjb25kXCI/WChYKHt9LHYpLHt9LHt2YWx1ZTp4LnZhbHVlLG1pbnV0ZTp4Lm1pbnV0ZSxzZWNvbmQ6eC5zZWNvbmR9KTp4fSk7cmV0dXJuIHUuZmlsdGVyKGZ1bmN0aW9uKHgpe3ZhciB2PTEsaz1NYXRoLmNlaWwoYS5nbG9iYWxzLmdyaWRXaWR0aC8xMjApLFM9eC52YWx1ZTthLmNvbmZpZy54YXhpcy50aWNrQW1vdW50IT09dm9pZCAwJiYoaz1hLmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSx1Lmxlbmd0aD5rJiYodj1NYXRoLmZsb29yKHUubGVuZ3RoL2spKTt2YXIgQz0hMSxMPSExO3N3aXRjaChpLnRpY2tJbnRlcnZhbCl7Y2FzZVwieWVhcnNcIjp4LnVuaXQ9PT1cInllYXJcIiYmKEM9ITApO2JyZWFrO2Nhc2VcImhhbGZfeWVhclwiOnY9Nyx4LnVuaXQ9PT1cInllYXJcIiYmKEM9ITApO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOnY9MSx4LnVuaXQ9PT1cInllYXJcIiYmKEM9ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjp2PTE1LHgudW5pdCE9PVwieWVhclwiJiZ4LnVuaXQhPT1cIm1vbnRoXCJ8fChDPSEwKSxTPT09MzAmJihMPSEwKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOnY9MTAseC51bml0PT09XCJtb250aFwiJiYoQz0hMCksUz09PTMwJiYoTD0hMCk7YnJlYWs7Y2FzZVwid2Vla19kYXlzXCI6dj04LHgudW5pdD09PVwibW9udGhcIiYmKEM9ITApO2JyZWFrO2Nhc2VcImRheXNcIjp2PTEseC51bml0PT09XCJtb250aFwiJiYoQz0hMCk7YnJlYWs7Y2FzZVwiaG91cnNcIjp4LnVuaXQ9PT1cImRheVwiJiYoQz0hMCk7YnJlYWs7Y2FzZVwibWludXRlc19maXZlc1wiOmNhc2VcInNlY29uZHNfZml2ZXNcIjpTJTUhPTAmJihMPSEwKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpTJTEwIT0wJiYoTD0hMCl9aWYoaS50aWNrSW50ZXJ2YWw9PT1cImhvdXJzXCJ8fGkudGlja0ludGVydmFsPT09XCJtaW51dGVzX2ZpdmVzXCJ8fGkudGlja0ludGVydmFsPT09XCJzZWNvbmRzX3RlbnNcInx8aS50aWNrSW50ZXJ2YWw9PT1cInNlY29uZHNfZml2ZXNcIil7aWYoIUwpcmV0dXJuITB9ZWxzZSBpZigoUyV2PT0wfHxDKSYmIUwpcmV0dXJuITB9KX19LHtrZXk6XCJyZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy53LGE9dGhpcy5mb3JtYXREYXRlcyhlKSxzPXRoaXMucmVtb3ZlT3ZlcmxhcHBpbmdUUyhhKTtpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPXMuc2xpY2UoKSxuZXcgUmUodGhpcy5jdHgpLnBsb3RDb29yZHMoKX19LHtrZXk6XCJkZXRlcm1pbmVJbnRlcnZhbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PTI0KmUsaT02MCp0O3N3aXRjaCghMCl7Y2FzZSBlLzM2NT41OnRoaXMudGlja0ludGVydmFsPVwieWVhcnNcIjticmVhaztjYXNlIGU+ODAwOnRoaXMudGlja0ludGVydmFsPVwiaGFsZl95ZWFyXCI7YnJlYWs7Y2FzZSBlPjE4MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc1wiO2JyZWFrO2Nhc2UgZT45MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19mb3J0bmlnaHRcIjticmVhaztjYXNlIGU+NjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZGF5c1wiO2JyZWFrO2Nhc2UgZT4zMDp0aGlzLnRpY2tJbnRlcnZhbD1cIndlZWtfZGF5c1wiO2JyZWFrO2Nhc2UgZT4yOnRoaXMudGlja0ludGVydmFsPVwiZGF5c1wiO2JyZWFrO2Nhc2UgdD4yLjQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJob3Vyc1wiO2JyZWFrO2Nhc2UgaT4xNTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNfZml2ZXNcIjticmVhaztjYXNlIGk+NTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNcIjticmVhaztjYXNlIGk+MTp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfdGVuc1wiO2JyZWFrO2Nhc2UgNjAqaT4yMDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfZml2ZXNcIjticmVhaztkZWZhdWx0OnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc1wifX19LHtrZXk6XCJnZW5lcmF0ZVllYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlyc3RWYWwsaT1lLmN1cnJlbnRNb250aCxhPWUuY3VycmVudFllYXIscz1lLmRheXNXaWR0aE9uWEF4aXMscj1lLm51bWJlck9mWWVhcnMsbj10Lm1pblllYXIsbz0wLGg9bmV3IEIodGhpcy5jdHgpLGM9XCJ5ZWFyXCI7aWYodC5taW5EYXRlPjF8fHQubWluTW9udGg+MCl7dmFyIGQ9aC5kZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyKHQubWluWWVhcix0Lm1pbk1vbnRoLHQubWluRGF0ZSk7bz0oaC5kZXRlcm1pbmVEYXlzT2ZZZWFyKHQubWluWWVhciktZCsxKSpzLG49dC5taW5ZZWFyKzEsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpvLHZhbHVlOm4sdW5pdDpjLHllYXI6bixtb250aDpQLm1vbnRoTW9kKGkrMSl9KX1lbHNlIHQubWluRGF0ZT09PTEmJnQubWluTW9udGg9PT0wJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm8sdmFsdWU6bix1bml0OmMseWVhcjphLG1vbnRoOlAubW9udGhNb2QoaSsxKX0pO2Zvcih2YXIgZz1uLHA9byxmPTA7ZjxyO2YrKylnKysscD1oLmRldGVybWluZURheXNPZlllYXIoZy0xKSpzK3AsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpwLHZhbHVlOmcsdW5pdDpjLHllYXI6Zyxtb250aDoxfSl9fSx7a2V5OlwiZ2VuZXJhdGVNb250aFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maXJzdFZhbCxpPWUuY3VycmVudE1vbnRoRGF0ZSxhPWUuY3VycmVudE1vbnRoLHM9ZS5jdXJyZW50WWVhcixyPWUuZGF5c1dpZHRoT25YQXhpcyxuPWUubnVtYmVyT2ZNb250aHMsbz1hLGg9MCxjPW5ldyBCKHRoaXMuY3R4KSxkPVwibW9udGhcIixnPTA7aWYodC5taW5EYXRlPjEpe2g9KGMuZGV0ZXJtaW5lRGF5c09mTW9udGhzKGErMSx0Lm1pblllYXIpLWkrMSkqcixvPVAubW9udGhNb2QoYSsxKTt2YXIgcD1zK2csZj1QLm1vbnRoTW9kKG8pLGI9bztvPT09MCYmKGQ9XCJ5ZWFyXCIsYj1wLGY9MSxwKz1nKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmgsdmFsdWU6Yix1bml0OmQseWVhcjpwLG1vbnRoOmZ9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246aCx2YWx1ZTpvLHVuaXQ6ZCx5ZWFyOnMsbW9udGg6UC5tb250aE1vZChhKX0pO2Zvcih2YXIgbT1vKzEsdz1oLEE9MCxsPTE7QTxuO0ErKyxsKyspeyhtPVAubW9udGhNb2QobSkpPT09MD8oZD1cInllYXJcIixnKz0xKTpkPVwibW9udGhcIjt2YXIgdT10aGlzLl9nZXRZZWFyKHMsbSxnKTt3PWMuZGV0ZXJtaW5lRGF5c09mTW9udGhzKG0sdSkqcit3O3ZhciB4PW09PT0wP3U6bTt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOncsdmFsdWU6eCx1bml0OmQseWVhcjp1LG1vbnRoOm09PT0wPzE6bX0pLG0rK319fSx7a2V5OlwiZ2VuZXJhdGVEYXlTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlyc3RWYWwsaT1lLmN1cnJlbnRNb250aCxhPWUuY3VycmVudFllYXIscz1lLmhvdXJzV2lkdGhPblhBeGlzLHI9ZS5udW1iZXJPZkRheXMsbj1uZXcgQih0aGlzLmN0eCksbz1cImRheVwiLGg9dC5taW5EYXRlKzEsYz1oLGQ9ZnVuY3Rpb24obCx1LHgpe3JldHVybiBsPm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKHUrMSx4KSYmKGM9MSxvPVwibW9udGhcIixwPXUrPTEpLHV9LGc9KDI0LXQubWluSG91cikqcyxwPWgsZj1kKGMsaSxhKTt0Lm1pbkhvdXI9PT0wJiZ0Lm1pbkRhdGU9PT0xPyhnPTAscD1QLm1vbnRoTW9kKHQubWluTW9udGgpLG89XCJtb250aFwiLGM9dC5taW5EYXRlKTp0Lm1pbkRhdGUhPT0xJiZ0Lm1pbkhvdXI9PT0wJiZ0Lm1pbk1pbnV0ZT09PTAmJihnPTAsaD10Lm1pbkRhdGUscD1oLGY9ZChjPWgsaSxhKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpnLHZhbHVlOnAsdW5pdDpvLHllYXI6dGhpcy5fZ2V0WWVhcihhLGYsMCksbW9udGg6UC5tb250aE1vZChmKSxkYXk6Y30pO2Zvcih2YXIgYj1nLG09MDttPHI7bSsrKXtvPVwiZGF5XCIsZj1kKGMrPTEsZix0aGlzLl9nZXRZZWFyKGEsZiwwKSk7dmFyIHc9dGhpcy5fZ2V0WWVhcihhLGYsMCk7Yj0yNCpzK2I7dmFyIEE9Yz09PTE/UC5tb250aE1vZChmKTpjO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTpBLHVuaXQ6byx5ZWFyOncsbW9udGg6UC5tb250aE1vZChmKSxkYXk6QX0pfX19LHtrZXk6XCJnZW5lcmF0ZUhvdXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlyc3RWYWwsaT1lLmN1cnJlbnREYXRlLGE9ZS5jdXJyZW50TW9udGgscz1lLmN1cnJlbnRZZWFyLHI9ZS5taW51dGVzV2lkdGhPblhBeGlzLG49ZS5udW1iZXJPZkhvdXJzLG89bmV3IEIodGhpcy5jdHgpLGg9XCJob3VyXCIsYz1mdW5jdGlvbih2LGspe3JldHVybiB2Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGsrMSxzKSYmKG09MSxrKz0xKSx7bW9udGg6ayxkYXRlOm19fSxkPWZ1bmN0aW9uKHYsayl7cmV0dXJuIHY+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoaysxLHMpP2srPTE6a30sZz02MC0odC5taW5NaW51dGUrdC5taW5TZWNvbmQvNjApLHA9ZypyLGY9dC5taW5Ib3VyKzEsYj1mO2c9PT02MCYmKHA9MCxiPWY9dC5taW5Ib3VyKTt2YXIgbT1pO2I+PTI0JiYoYj0wLG0rPTEsaD1cImRheVwiKTt2YXIgdz1jKG0sYSkubW9udGg7dz1kKG0sdyksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpwLHZhbHVlOmYsdW5pdDpoLGRheTptLGhvdXI6Yix5ZWFyOnMsbW9udGg6UC5tb250aE1vZCh3KX0pLGIrKztmb3IodmFyIEE9cCxsPTA7bDxuO2wrKyl7aD1cImhvdXJcIixiPj0yNCYmKGI9MCxoPVwiZGF5XCIsdz1jKG0rPTEsdykubW9udGgsdz1kKG0sdykpO3ZhciB1PXRoaXMuX2dldFllYXIocyx3LDApO0E9NjAqcitBO3ZhciB4PWI9PT0wP206Yjt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOkEsdmFsdWU6eCx1bml0OmgsaG91cjpiLGRheTptLHllYXI6dSxtb250aDpQLm1vbnRoTW9kKHcpfSksYisrfX19LHtrZXk6XCJnZW5lcmF0ZU1pbnV0ZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuY3VycmVudE1pbGxpc2Vjb25kLGk9ZS5jdXJyZW50U2Vjb25kLGE9ZS5jdXJyZW50TWludXRlLHM9ZS5jdXJyZW50SG91cixyPWUuY3VycmVudERhdGUsbj1lLmN1cnJlbnRNb250aCxvPWUuY3VycmVudFllYXIsaD1lLm1pbnV0ZXNXaWR0aE9uWEF4aXMsYz1lLnNlY29uZHNXaWR0aE9uWEF4aXMsZD1lLm51bWJlck9mTWludXRlcyxnPWErMSxwPXIsZj1uLGI9byxtPXMsdz0oNjAtaS10LzFlMykqYyxBPTA7QTxkO0ErKylnPj02MCYmKGc9MCwobSs9MSk9PT0yNCYmKG09MCkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246dyx2YWx1ZTpnLHVuaXQ6XCJtaW51dGVcIixob3VyOm0sbWludXRlOmcsZGF5OnAseWVhcjp0aGlzLl9nZXRZZWFyKGIsZiwwKSxtb250aDpQLm1vbnRoTW9kKGYpfSksdys9aCxnKyt9fSx7a2V5OlwiZ2VuZXJhdGVTZWNvbmRTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmN1cnJlbnRNaWxsaXNlY29uZCxpPWUuY3VycmVudFNlY29uZCxhPWUuY3VycmVudE1pbnV0ZSxzPWUuY3VycmVudEhvdXIscj1lLmN1cnJlbnREYXRlLG49ZS5jdXJyZW50TW9udGgsbz1lLmN1cnJlbnRZZWFyLGg9ZS5zZWNvbmRzV2lkdGhPblhBeGlzLGM9ZS5udW1iZXJPZlNlY29uZHMsZD1pKzEsZz1hLHA9cixmPW4sYj1vLG09cyx3PSgxZTMtdCkvMWUzKmgsQT0wO0E8YztBKyspZD49NjAmJihkPTAsKytnPj02MCYmKGc9MCwrK209PT0yNCYmKG09MCkpKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOncsdmFsdWU6ZCx1bml0Olwic2Vjb25kXCIsaG91cjptLG1pbnV0ZTpnLHNlY29uZDpkLGRheTpwLHllYXI6dGhpcy5fZ2V0WWVhcihiLGYsMCksbW9udGg6UC5tb250aE1vZChmKX0pLHcrPWgsZCsrfX0se2tleTpcImNyZWF0ZVJhd0RhdGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWUueWVhcjtyZXR1cm4gZS5tb250aD09PTAmJihlLm1vbnRoPTEpLGkrPVwiLVwiKyhcIjBcIitlLm1vbnRoLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSxlLnVuaXQ9PT1cImRheVwiP2krPWUudW5pdD09PVwiZGF5XCI/XCItXCIrKFwiMFwiK3QpLnNsaWNlKC0yKTpcIi0wMVwiOmkrPVwiLVwiKyhcIjBcIisoZS5kYXk/ZS5kYXk6XCIxXCIpKS5zbGljZSgtMiksZS51bml0PT09XCJob3VyXCI/aSs9ZS51bml0PT09XCJob3VyXCI/XCJUXCIrKFwiMFwiK3QpLnNsaWNlKC0yKTpcIlQwMFwiOmkrPVwiVFwiKyhcIjBcIisoZS5ob3VyP2UuaG91cjpcIjBcIikpLnNsaWNlKC0yKSxlLnVuaXQ9PT1cIm1pbnV0ZVwiP2krPVwiOlwiKyhcIjBcIit0KS5zbGljZSgtMik6aSs9XCI6XCIrKGUubWludXRlPyhcIjBcIitlLm1pbnV0ZSkuc2xpY2UoLTIpOlwiMDBcIiksZS51bml0PT09XCJzZWNvbmRcIj9pKz1cIjpcIisoXCIwXCIrdCkuc2xpY2UoLTIpOmkrPVwiOjAwXCIsdGhpcy51dGMmJihpKz1cIi4wMDBaXCIpLGl9fSx7a2V5OlwiZm9ybWF0RGF0ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53O3JldHVybiBlLm1hcChmdW5jdGlvbihhKXt2YXIgcz1hLnZhbHVlLnRvU3RyaW5nKCkscj1uZXcgQih0LmN0eCksbj10LmNyZWF0ZVJhd0RhdGVTdHJpbmcoYSxzKSxvPXIuZ2V0RGF0ZShyLnBhcnNlRGF0ZShuKSk7aWYodC51dGN8fChvPXIuZ2V0RGF0ZShyLnBhcnNlRGF0ZVdpdGhUaW1lem9uZShuKSkpLGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQ9PT12b2lkIDApe3ZhciBoPVwiZGQgTU1NXCIsYz1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7YS51bml0PT09XCJ5ZWFyXCImJihoPWMueWVhciksYS51bml0PT09XCJtb250aFwiJiYoaD1jLm1vbnRoKSxhLnVuaXQ9PT1cImRheVwiJiYoaD1jLmRheSksYS51bml0PT09XCJob3VyXCImJihoPWMuaG91ciksYS51bml0PT09XCJtaW51dGVcIiYmKGg9Yy5taW51dGUpLGEudW5pdD09PVwic2Vjb25kXCImJihoPWMuc2Vjb25kKSxzPXIuZm9ybWF0RGF0ZShvLGgpfWVsc2Ugcz1yLmZvcm1hdERhdGUobyxpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KTtyZXR1cm57ZGF0ZVN0cmluZzpuLHBvc2l0aW9uOmEucG9zaXRpb24sdmFsdWU6cyx1bml0OmEudW5pdCx5ZWFyOmEueWVhcixtb250aDphLm1vbnRofX0pfX0se2tleTpcInJlbW92ZU92ZXJsYXBwaW5nVFNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsYT1uZXcgTSh0aGlzLmN0eCkscz0hMTtlLmxlbmd0aD4wJiZlWzBdLnZhbHVlJiZlLmV2ZXJ5KGZ1bmN0aW9uKG8pe3JldHVybiBvLnZhbHVlLmxlbmd0aD09PWVbMF0udmFsdWUubGVuZ3RofSkmJihzPSEwLHQ9YS5nZXRUZXh0UmVjdHMoZVswXS52YWx1ZSkud2lkdGgpO3ZhciByPTAsbj1lLm1hcChmdW5jdGlvbihvLGgpe2lmKGg+MCYmaS53LmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKXt2YXIgYz1zP3Q6YS5nZXRUZXh0UmVjdHMoZVtyXS52YWx1ZSkud2lkdGgsZD1lW3JdLnBvc2l0aW9uO3JldHVybiBvLnBvc2l0aW9uPmQrYysxMD8ocj1oLG8pOm51bGx9cmV0dXJuIG99KTtyZXR1cm4gbj1uLmZpbHRlcihmdW5jdGlvbihvKXtyZXR1cm4gbyE9PW51bGx9KX19LHtrZXk6XCJfZ2V0WWVhclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gZStNYXRoLmZsb29yKHQvMTIpK2l9fV0pLHl9KCksanQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUsdCl7Rih0aGlzLHkpLHRoaXMuY3R4PXQsdGhpcy53PXQudyx0aGlzLmVsPWV9cmV0dXJuIFkoeSxbe2tleTpcInNldHVwRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudy5nbG9iYWxzLHQ9dGhpcy53LmNvbmZpZyxpPXQuY2hhcnQudHlwZTtlLmF4aXNDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJyYWRhclwiLFwiaGVhdG1hcFwiLFwidHJlZW1hcFwiXS5pbmRleE9mKGkpPi0xLGUueHlDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdLmluZGV4T2YoaSk+LTEsZS5pc0Jhckhvcml6b250YWw9KHQuY2hhcnQudHlwZT09PVwiYmFyXCJ8fHQuY2hhcnQudHlwZT09PVwicmFuZ2VCYXJcInx8dC5jaGFydC50eXBlPT09XCJib3hQbG90XCIpJiZ0LnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLGUuY2hhcnRDbGFzcz1cIi5hcGV4Y2hhcnRzXCIrZS5jaGFydElELGUuZG9tLmJhc2VFbD10aGlzLmVsLGUuZG9tLmVsV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLE0uc2V0QXR0cnMoZS5kb20uZWxXcmFwLHtpZDplLmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpLGNsYXNzOlwiYXBleGNoYXJ0cy1jYW52YXMgXCIrZS5jaGFydENsYXNzLnN1YnN0cmluZygxKX0pLHRoaXMuZWwuYXBwZW5kQ2hpbGQoZS5kb20uZWxXcmFwKSxlLmRvbS5QYXBlcj1uZXcgd2luZG93LlNWRy5Eb2MoZS5kb20uZWxXcmFwKSxlLmRvbS5QYXBlci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc3ZnXCIsXCJ4bWxuczpkYXRhXCI6XCJBcGV4Q2hhcnRzTlNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuY2hhcnQub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdCh0LmNoYXJ0Lm9mZnNldFksXCIpXCIpfSksZS5kb20uUGFwZXIubm9kZS5zdHlsZS5iYWNrZ3JvdW5kPXQudGhlbWUubW9kZSE9PVwiZGFya1wifHx0LmNoYXJ0LmJhY2tncm91bmQ/dC5jaGFydC5iYWNrZ3JvdW5kOlwicmdiYSgwLCAwLCAwLCAwLjgpXCIsdGhpcy5zZXRTVkdEaW1lbnNpb25zKCksZS5kb20uZWxMZWdlbmRGb3JlaWduPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiZm9yZWlnbk9iamVjdFwiKSxNLnNldEF0dHJzKGUuZG9tLmVsTGVnZW5kRm9yZWlnbix7eDowLHk6MCx3aWR0aDplLnN2Z1dpZHRoLGhlaWdodDplLnN2Z0hlaWdodH0pLGUuZG9tLmVsTGVnZW5kV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmRcIiksZS5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpLGUuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZChlLmRvbS5lbExlZ2VuZFdyYXApLGUuZG9tLlBhcGVyLm5vZGUuYXBwZW5kQ2hpbGQoZS5kb20uZWxMZWdlbmRGb3JlaWduKSxlLmRvbS5lbEdyYXBoaWNhbD1lLmRvbS5QYXBlci5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1pbm5lciBhcGV4Y2hhcnRzLWdyYXBoaWNhbFwifSksZS5kb20uZWxEZWZzPWUuZG9tLlBhcGVyLmRlZnMoKSxlLmRvbS5QYXBlci5hZGQoZS5kb20uZWxHcmFwaGljYWwpLGUuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmRvbS5lbERlZnMpfX0se2tleTpcInBsb3RDaGFydFR5cGVcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLHM9aS5nbG9iYWxzLHI9e3NlcmllczpbXSxpOltdfSxuPXtzZXJpZXM6W10saTpbXX0sbz17c2VyaWVzOltdLGk6W119LGg9e3NlcmllczpbXSxpOltdfSxjPXtzZXJpZXM6W10saTpbXX0sZD17c2VyaWVzOltdLGk6W119LGc9e3NlcmllczpbXSxpOltdfSxwPXtzZXJpZXM6W10saTpbXX0sZj17c2VyaWVzOltdLHNlcmllc1JhbmdlRW5kOltdLGk6W119O3Muc2VyaWVzLm1hcChmdW5jdGlvbihrLFMpe3ZhciBDPTA7ZVtTXS50eXBlIT09dm9pZCAwPyhlW1NdLnR5cGU9PT1cImNvbHVtblwifHxlW1NdLnR5cGU9PT1cImJhclwiPyhzLnNlcmllcy5sZW5ndGg+MSYmYS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCYmY29uc29sZS53YXJuKFwiSG9yaXpvbnRhbCBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGEgbWl4ZWQvY29tYm8gY2hhcnQuIFBsZWFzZSB0dXJuIG9mZiBgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWxgXCIpLGMuc2VyaWVzLnB1c2goayksYy5pLnB1c2goUyksQysrLGkuZ2xvYmFscy5jb2x1bW5TZXJpZXM9Yy5zZXJpZXMpOmVbU10udHlwZT09PVwiYXJlYVwiPyhuLnNlcmllcy5wdXNoKGspLG4uaS5wdXNoKFMpLEMrKyk6ZVtTXS50eXBlPT09XCJsaW5lXCI/KHIuc2VyaWVzLnB1c2goayksci5pLnB1c2goUyksQysrKTplW1NdLnR5cGU9PT1cInNjYXR0ZXJcIj8oby5zZXJpZXMucHVzaChrKSxvLmkucHVzaChTKSk6ZVtTXS50eXBlPT09XCJidWJibGVcIj8oaC5zZXJpZXMucHVzaChrKSxoLmkucHVzaChTKSxDKyspOmVbU10udHlwZT09PVwiY2FuZGxlc3RpY2tcIj8oZC5zZXJpZXMucHVzaChrKSxkLmkucHVzaChTKSxDKyspOmVbU10udHlwZT09PVwiYm94UGxvdFwiPyhnLnNlcmllcy5wdXNoKGspLGcuaS5wdXNoKFMpLEMrKyk6ZVtTXS50eXBlPT09XCJyYW5nZUJhclwiPyhwLnNlcmllcy5wdXNoKGspLHAuaS5wdXNoKFMpLEMrKyk6ZVtTXS50eXBlPT09XCJyYW5nZUFyZWFcIj8oZi5zZXJpZXMucHVzaChzLnNlcmllc1JhbmdlU3RhcnRbU10pLGYuc2VyaWVzUmFuZ2VFbmQucHVzaChzLnNlcmllc1JhbmdlRW5kW1NdKSxmLmkucHVzaChTKSxDKyspOmNvbnNvbGUud2FybihcIllvdSBoYXZlIHNwZWNpZmllZCBhbiB1bnJlY29nbml6ZWQgY2hhcnQgdHlwZS4gQXZhaWxhYmxlIHR5cGVzIGZvciB0aGlzIHByb3BlcnR5IGFyZSBsaW5lL2FyZWEvY29sdW1uL2Jhci9zY2F0dGVyL2J1YmJsZS9jYW5kbGVzdGljay9ib3hQbG90L3JhbmdlQmFyL3JhbmdlQXJlYVwiKSxDPjEmJihzLmNvbWJvQ2hhcnRzPSEwKSk6KHIuc2VyaWVzLnB1c2goayksci5pLnB1c2goUykpfSk7dmFyIGI9bmV3IHFlKHRoaXMuY3R4LHQpLG09bmV3IGplKHRoaXMuY3R4LHQpO3RoaXMuY3R4LnBpZT1uZXcgY3QodGhpcy5jdHgpO3ZhciB3PW5ldyBIdCh0aGlzLmN0eCk7dGhpcy5jdHgucmFuZ2VCYXI9bmV3IER0KHRoaXMuY3R4LHQpO3ZhciBBPW5ldyBPdCh0aGlzLmN0eCksbD1bXTtpZihzLmNvbWJvQ2hhcnRzKXtpZihuLnNlcmllcy5sZW5ndGg+MCYmbC5wdXNoKGIuZHJhdyhuLnNlcmllcyxcImFyZWFcIixuLmkpKSxjLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgdT1uZXcgb3QodGhpcy5jdHgsdCk7bC5wdXNoKHUuZHJhdyhjLnNlcmllcyxjLmkpKX1lbHNlIHRoaXMuY3R4LmJhcj1uZXcgQWUodGhpcy5jdHgsdCksbC5wdXNoKHRoaXMuY3R4LmJhci5kcmF3KGMuc2VyaWVzLGMuaSkpO2lmKGYuc2VyaWVzLmxlbmd0aD4wJiZsLnB1c2goYi5kcmF3KGYuc2VyaWVzLFwicmFuZ2VBcmVhXCIsZi5pLGYuc2VyaWVzUmFuZ2VFbmQpKSxyLnNlcmllcy5sZW5ndGg+MCYmbC5wdXNoKGIuZHJhdyhyLnNlcmllcyxcImxpbmVcIixyLmkpKSxkLnNlcmllcy5sZW5ndGg+MCYmbC5wdXNoKG0uZHJhdyhkLnNlcmllcyxcImNhbmRsZXN0aWNrXCIsZC5pKSksZy5zZXJpZXMubGVuZ3RoPjAmJmwucHVzaChtLmRyYXcoZy5zZXJpZXMsXCJib3hQbG90XCIsZy5pKSkscC5zZXJpZXMubGVuZ3RoPjAmJmwucHVzaCh0aGlzLmN0eC5yYW5nZUJhci5kcmF3KHAuc2VyaWVzLHAuaSkpLG8uc2VyaWVzLmxlbmd0aD4wKXt2YXIgeD1uZXcgcWUodGhpcy5jdHgsdCwhMCk7bC5wdXNoKHguZHJhdyhvLnNlcmllcyxcInNjYXR0ZXJcIixvLmkpKX1pZihoLnNlcmllcy5sZW5ndGg+MCl7dmFyIHY9bmV3IHFlKHRoaXMuY3R4LHQsITApO2wucHVzaCh2LmRyYXcoaC5zZXJpZXMsXCJidWJibGVcIixoLmkpKX19ZWxzZSBzd2l0Y2goYS5jaGFydC50eXBlKXtjYXNlXCJsaW5lXCI6bD1iLmRyYXcocy5zZXJpZXMsXCJsaW5lXCIpO2JyZWFrO2Nhc2VcImFyZWFcIjpsPWIuZHJhdyhzLnNlcmllcyxcImFyZWFcIik7YnJlYWs7Y2FzZVwiYmFyXCI6YS5jaGFydC5zdGFja2VkP2w9bmV3IG90KHRoaXMuY3R4LHQpLmRyYXcocy5zZXJpZXMpOih0aGlzLmN0eC5iYXI9bmV3IEFlKHRoaXMuY3R4LHQpLGw9dGhpcy5jdHguYmFyLmRyYXcocy5zZXJpZXMpKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOmw9bmV3IGplKHRoaXMuY3R4LHQpLmRyYXcocy5zZXJpZXMsXCJjYW5kbGVzdGlja1wiKTticmVhaztjYXNlXCJib3hQbG90XCI6bD1uZXcgamUodGhpcy5jdHgsdCkuZHJhdyhzLnNlcmllcyxhLmNoYXJ0LnR5cGUpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6bD10aGlzLmN0eC5yYW5nZUJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYW5nZUFyZWFcIjpsPWIuZHJhdyhzLnNlcmllc1JhbmdlU3RhcnQsXCJyYW5nZUFyZWFcIix2b2lkIDAscy5zZXJpZXNSYW5nZUVuZCk7YnJlYWs7Y2FzZVwiaGVhdG1hcFwiOmw9bmV3IFJ0KHRoaXMuY3R4LHQpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInRyZWVtYXBcIjpsPW5ldyBCdCh0aGlzLmN0eCx0KS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJwaWVcIjpjYXNlXCJkb251dFwiOmNhc2VcInBvbGFyQXJlYVwiOmw9dGhpcy5jdHgucGllLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOmw9dy5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRhclwiOmw9QS5kcmF3KHMuc2VyaWVzKTticmVhaztkZWZhdWx0Omw9Yi5kcmF3KHMuc2VyaWVzKX1yZXR1cm4gbH19LHtrZXk6XCJzZXRTVkdEaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLncuZ2xvYmFscyx0PXRoaXMudy5jb25maWc7ZS5zdmdXaWR0aD10LmNoYXJ0LndpZHRoLGUuc3ZnSGVpZ2h0PXQuY2hhcnQuaGVpZ2h0O3ZhciBpPVAuZ2V0RGltZW5zaW9ucyh0aGlzLmVsKSxhPXQuY2hhcnQud2lkdGgudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO2E9PT1cIiVcIj9QLmlzTnVtYmVyKGlbMF0pJiYoaVswXS53aWR0aD09PTAmJihpPVAuZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSxlLnN2Z1dpZHRoPWlbMF0qcGFyc2VJbnQodC5jaGFydC53aWR0aCwxMCkvMTAwKTphIT09XCJweFwiJiZhIT09XCJcInx8KGUuc3ZnV2lkdGg9cGFyc2VJbnQodC5jaGFydC53aWR0aCwxMCkpO3ZhciBzPXQuY2hhcnQuaGVpZ2h0LnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtpZihlLnN2Z0hlaWdodCE9PVwiYXV0b1wiJiZlLnN2Z0hlaWdodCE9PVwiXCIpaWYocz09PVwiJVwiKXt2YXIgcj1QLmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKTtlLnN2Z0hlaWdodD1yWzFdKnBhcnNlSW50KHQuY2hhcnQuaGVpZ2h0LDEwKS8xMDB9ZWxzZSBlLnN2Z0hlaWdodD1wYXJzZUludCh0LmNoYXJ0LmhlaWdodCwxMCk7ZWxzZSBlLmF4aXNDaGFydHM/ZS5zdmdIZWlnaHQ9ZS5zdmdXaWR0aC8xLjYxOmUuc3ZnSGVpZ2h0PWUuc3ZnV2lkdGgvMS4yO2lmKGUuc3ZnV2lkdGg8MCYmKGUuc3ZnV2lkdGg9MCksZS5zdmdIZWlnaHQ8MCYmKGUuc3ZnSGVpZ2h0PTApLE0uc2V0QXR0cnMoZS5kb20uUGFwZXIubm9kZSx7d2lkdGg6ZS5zdmdXaWR0aCxoZWlnaHQ6ZS5zdmdIZWlnaHR9KSxzIT09XCIlXCIpe3ZhciBuPXQuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDplLmF4aXNDaGFydHM/dC5jaGFydC5wYXJlbnRIZWlnaHRPZmZzZXQ6MDtlLmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9ZS5zdmdIZWlnaHQrbitcInB4XCJ9ZS5kb20uZWxXcmFwLnN0eWxlLndpZHRoPWUuc3ZnV2lkdGgrXCJweFwiLGUuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9ZS5zdmdIZWlnaHQrXCJweFwifX0se2tleTpcInNoaWZ0R3JhcGhQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsdD1lLnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK2UudHJhbnNsYXRlWCtcIiwgXCIrdCtcIilcIn07TS5zZXRBdHRycyhlLmRvbS5lbEdyYXBoaWNhbC5ub2RlLGkpfX0se2tleTpcInJlc2l6ZU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudyx0PWUuZ2xvYmFscyxpPTAsYT1lLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8xOjE1O2ErPWUuY29uZmlnLmdyaWQucGFkZGluZy5ib3R0b20sZS5jb25maWcubGVnZW5kLnBvc2l0aW9uIT09XCJ0b3BcIiYmZS5jb25maWcubGVnZW5kLnBvc2l0aW9uIT09XCJib3R0b21cInx8IWUuY29uZmlnLmxlZ2VuZC5zaG93fHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fChpPW5ldyBpdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCsxMCk7dmFyIHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXJhZGlhbGJhciwgLmFwZXhjaGFydHMtcGllXCIpLHI9Mi4wNSplLmdsb2JhbHMucmFkaWFsU2l6ZTtpZihzJiYhZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQmJmUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlIT09MCl7dmFyIG49UC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qocyk7cj1uLmJvdHRvbTt2YXIgbz1uLmJvdHRvbS1uLnRvcDtyPU1hdGgubWF4KDIuMDUqZS5nbG9iYWxzLnJhZGlhbFNpemUsbyl9dmFyIGg9cit0LnRyYW5zbGF0ZVkraSthO3QuZG9tLmVsTGVnZW5kRm9yZWlnbiYmdC5kb20uZWxMZWdlbmRGb3JlaWduLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGgpLGUuY29uZmlnLmNoYXJ0LmhlaWdodCYmU3RyaW5nKGUuY29uZmlnLmNoYXJ0LmhlaWdodCkuaW5kZXhPZihcIiVcIik+MHx8KHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9aCtcInB4XCIsTS5zZXRBdHRycyh0LmRvbS5QYXBlci5ub2RlLHtoZWlnaHQ6aH0pLHQuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1oK1wicHhcIil9fSx7a2V5OlwiY29yZUNhbGN1bGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7bmV3IEJlKHRoaXMuY3R4KS5pbml0KCl9fSx7a2V5OlwicmVzZXRHbG9iYWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS53LmNvbmZpZy5zZXJpZXMubWFwKGZ1bmN0aW9uKHMpe3JldHVybltdfSl9LGk9bmV3IFFlLGE9dGhpcy53Lmdsb2JhbHM7aS5pbml0R2xvYmFsVmFycyhhKSxhLnNlcmllc1h2YWx1ZXM9dCgpLGEuc2VyaWVzWXZhbHVlcz10KCl9fSx7a2V5OlwiaXNNdWx0aXBsZVlcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudy5jb25maWcueWF4aXMuY29uc3RydWN0b3I9PT1BcnJheSYmdGhpcy53LmNvbmZpZy55YXhpcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy53Lmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzPSEwLCEwfX0se2tleTpcInh5U2V0dGluZ3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW51bGwsdD10aGlzLnc7aWYodC5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb249PT1cImJhY2tcIiYmbmV3IFZlKHRoaXMuY3R4KS5kcmF3WENyb3NzaGFpcnMoKSx0LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uPT09XCJiYWNrXCImJm5ldyBWZSh0aGlzLmN0eCkuZHJhd1lDcm9zc2hhaXJzKCksdC5jb25maWcueGF4aXMudHlwZT09PVwiZGF0ZXRpbWVcIiYmdC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcj09PXZvaWQgMCl7dGhpcy5jdHgudGltZVNjYWxlPW5ldyBWdCh0aGlzLmN0eCk7dmFyIGk9W107aXNGaW5pdGUodC5nbG9iYWxzLm1pblgpJiZpc0Zpbml0ZSh0Lmdsb2JhbHMubWF4WCkmJiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2k9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKHQuZ2xvYmFscy5taW5YLHQuZ2xvYmFscy5tYXhYKTp0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3ModC5nbG9iYWxzLm1pblksdC5nbG9iYWxzLm1heFkpKSx0aGlzLmN0eC50aW1lU2NhbGUucmVjYWxjRGltZW5zaW9uc0Jhc2VkT25Gb3JtYXQoaSl9ZT1uZXcgcSh0aGlzLmN0eCkuZ2V0Q2FsY3VsYXRlZFJhdGlvcygpfXJldHVybiBlfX0se2tleTpcInVwZGF0ZVNvdXJjZUNoYXJ0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jdHgudy5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh7Y2hhcnQ6e3NlbGVjdGlvbjp7eGF4aXM6e21pbjplLncuZ2xvYmFscy5taW5YLG1heDplLncuZ2xvYmFscy5tYXhYfX19fSwhMSwhMSl9fSx7a2V5Olwic2V0dXBCcnVzaEhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnc7aWYodC5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmdHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24hPVwiZnVuY3Rpb25cIil7dmFyIGk9QXJyYXkuaXNBcnJheSh0LmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRzKT90LmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRzOlt0LmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdO2kuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcz1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRChhKTtzLncuZ2xvYmFscy5icnVzaFNvdXJjZT1lLmN0eCx0eXBlb2Ygcy53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkIT1cImZ1bmN0aW9uXCImJihzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQ9ZnVuY3Rpb24oKXtlLnVwZGF0ZVNvdXJjZUNoYXJ0KHMpfSksdHlwZW9mIHMudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkIT1cImZ1bmN0aW9uXCImJihzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZD1mdW5jdGlvbigpe2UudXBkYXRlU291cmNlQ2hhcnQocyl9KX0pLHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249ZnVuY3Rpb24oYSxzKXtpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQociksbz1QLmNsb25lKHQuY29uZmlnLnlheGlzKTtpZih0LmNvbmZpZy5jaGFydC5icnVzaC5hdXRvU2NhbGVZYXhpcyYmbi53Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aD09PTEpe3ZhciBoPW5ldyBrZShuKTtvPWguYXV0b1NjYWxlWShuLG8scyl9dmFyIGM9bi53LmNvbmZpZy55YXhpcy5yZWR1Y2UoZnVuY3Rpb24oZCxnLHApe3JldHVybltdLmNvbmNhdChRKGQpLFtYKFgoe30sbi53LmNvbmZpZy55YXhpc1twXSkse30se21pbjpvWzBdLm1pbixtYXg6b1swXS5tYXh9KV0pfSxbXSk7bi5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh7eGF4aXM6e21pbjpzLnhheGlzLm1pbixtYXg6cy54YXhpcy5tYXh9LHlheGlzOmN9LCExLCExLCExLCExKX0pfX19fV0pLHl9KCksX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcIl91cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwJiZhcmd1bWVudHNbMV0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1szXSxyPWFyZ3VtZW50cy5sZW5ndGg+NCYmYXJndW1lbnRzWzRdIT09dm9pZCAwJiZhcmd1bWVudHNbNF07cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4pe3ZhciBvPVt0LmN0eF07cyYmKG89dC5jdHguZ2V0U3luY2VkQ2hhcnRzKCkpLHQuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQmJihvPVt0LmN0eF0sdC5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMSksby5mb3JFYWNoKGZ1bmN0aW9uKGgsYyl7dmFyIGQ9aC53O2lmKGQuZ2xvYmFscy5zaG91bGRBbmltYXRlPWEsaXx8KGQuZ2xvYmFscy5yZXNpemVkPSEwLGQuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxhJiZoLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCkpLGUmJlUoZSk9PT1cIm9iamVjdFwiJiYoaC5jb25maWc9bmV3IEllKGUpLGU9cS5leHRlbmRBcnJheVByb3BzKGguY29uZmlnLGUsZCksaC53Lmdsb2JhbHMuY2hhcnRJRCE9PXQuY3R4LncuZ2xvYmFscy5jaGFydElEJiZkZWxldGUgZS5zZXJpZXMsZC5jb25maWc9UC5leHRlbmQoZC5jb25maWcsZSksciYmKGQuZ2xvYmFscy5sYXN0WEF4aXM9ZS54YXhpcz9QLmNsb25lKGUueGF4aXMpOltdLGQuZ2xvYmFscy5sYXN0WUF4aXM9ZS55YXhpcz9QLmNsb25lKGUueWF4aXMpOltdLGQuZ2xvYmFscy5pbml0aWFsQ29uZmlnPVAuZXh0ZW5kKHt9LGQuY29uZmlnKSxkLmdsb2JhbHMuaW5pdGlhbFNlcmllcz1QLmNsb25lKGQuY29uZmlnLnNlcmllcyksZS5zZXJpZXMpKSl7Zm9yKHZhciBnPTA7ZzxkLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7ZysrKXt2YXIgcD1kLmNvbmZpZy5zZXJpZXNbZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXNbZ11dO2QuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZ10uZGF0YT1kLmdsb2JhbHMuYXhpc0NoYXJ0cz9wLmRhdGEuc2xpY2UoKTpwfWZvcih2YXIgZj0wO2Y8ZC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO2YrKyl7dmFyIGI9ZC5jb25maWcuc2VyaWVzW2QuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2ZdXTtkLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW2ZdLmRhdGE9ZC5nbG9iYWxzLmF4aXNDaGFydHM/Yi5kYXRhLnNsaWNlKCk6Yn1oLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhkLmNvbmZpZy5zZXJpZXMpfXJldHVybiBoLnVwZGF0ZShlKS50aGVuKGZ1bmN0aW9uKCl7Yz09PW8ubGVuZ3RoLTEmJm4oaCl9KX0pfSl9fSx7a2V5OlwiX3VwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwJiZhcmd1bWVudHNbMl07cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMpe3ZhciByLG49aS53O3JldHVybiBuLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT10LG4uZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCx0JiZpLmN0eC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpLG4uZ2xvYmFscy5heGlzQ2hhcnRzPygocj1lLm1hcChmdW5jdGlvbihvLGgpe3JldHVybiBpLl9leHRlbmRTZXJpZXMobyxoKX0pKS5sZW5ndGg9PT0wJiYocj1be2RhdGE6W119XSksbi5jb25maWcuc2VyaWVzPXIpOm4uY29uZmlnLnNlcmllcz1lLnNsaWNlKCksYSYmKG4uZ2xvYmFscy5pbml0aWFsQ29uZmlnLnNlcmllcz1QLmNsb25lKG4uY29uZmlnLnNlcmllcyksbi5nbG9iYWxzLmluaXRpYWxTZXJpZXM9UC5jbG9uZShuLmNvbmZpZy5zZXJpZXMpKSxpLmN0eC51cGRhdGUoKS50aGVuKGZ1bmN0aW9uKCl7cyhpLmN0eCl9KX0pfX0se2tleTpcIl9leHRlbmRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLnNlcmllc1t0XTtyZXR1cm4gWChYKHt9LGkuY29uZmlnLnNlcmllc1t0XSkse30se25hbWU6ZS5uYW1lP2UubmFtZTphPT1udWxsP3ZvaWQgMDphLm5hbWUsY29sb3I6ZS5jb2xvcj9lLmNvbG9yOmE9PW51bGw/dm9pZCAwOmEuY29sb3IsdHlwZTplLnR5cGU/ZS50eXBlOmE9PW51bGw/dm9pZCAwOmEudHlwZSxncm91cDplLmdyb3VwP2UuZ3JvdXA6YT09bnVsbD92b2lkIDA6YS5ncm91cCxkYXRhOmUuZGF0YT9lLmRhdGE6YT09bnVsbD92b2lkIDA6YS5kYXRhLHpJbmRleDplLnpJbmRleCE9PXZvaWQgMD9lLnpJbmRleDp0fSl9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLncsYT1udWxsLHM9XCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoZSxcIiddXCIpO3JldHVybiBpLmdsb2JhbHMuYXhpc0NoYXJ0cz9hPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgXCIpLmNvbmNhdChzLFwiIGNpcmNsZVtqPSdcIikuY29uY2F0KHQsXCInXSwgXCIpLmNvbmNhdChzLFwiIHJlY3Rbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpLm1lbWJlcnNbMF06dD09PXZvaWQgMCYmKGE9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCJcIi5jb25jYXQocyxcIiBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKS5tZW1iZXJzWzBdLGkuY29uZmlnLmNoYXJ0LnR5cGUhPT1cInBpZVwiJiZpLmNvbmZpZy5jaGFydC50eXBlIT09XCJwb2xhckFyZWFcIiYmaS5jb25maWcuY2hhcnQudHlwZSE9PVwiZG9udXRcInx8dGhpcy5jdHgucGllLnBpZUNsaWNrZWQoZSkpLGE/KG5ldyBNKHRoaXMuY3R4KS5wYXRoTW91c2VEb3duKGEsbnVsbCksYS5ub2RlP2Eubm9kZTpudWxsKTooY29uc29sZS53YXJuKFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uOiBFbGVtZW50IG5vdCBmb3VuZFwiKSxudWxsKX19LHtrZXk6XCJmb3JjZVhBeGlzVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy53O2lmKFtcIm1pblwiLFwibWF4XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZS54YXhpc1thXSE9PXZvaWQgMCYmKHQuY29uZmlnLnhheGlzW2FdPWUueGF4aXNbYV0sdC5nbG9iYWxzLmxhc3RYQXhpc1thXT1lLnhheGlzW2FdKX0pLGUueGF4aXMuY2F0ZWdvcmllcyYmZS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKHQuY29uZmlnLnhheGlzLmNhdGVnb3JpZXM9ZS54YXhpcy5jYXRlZ29yaWVzKSx0LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBpPW5ldyBsZShlKTtlPWkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGUsdGhpcy5jdHgpfXJldHVybiBlfX0se2tleTpcImZvcmNlWUF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFydCYmZS5jaGFydC5zdGFja2VkJiZlLmNoYXJ0LnN0YWNrVHlwZT09PVwiMTAwJVwiJiYoQXJyYXkuaXNBcnJheShlLnlheGlzKT9lLnlheGlzLmZvckVhY2goZnVuY3Rpb24odCxpKXtlLnlheGlzW2ldLm1pbj0wLGUueWF4aXNbaV0ubWF4PTEwMH0pOihlLnlheGlzLm1pbj0wLGUueWF4aXMubWF4PTEwMCkpLGV9fSx7a2V5OlwicmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9aS5nbG9iYWxzLmxhc3RYQXhpcyxzPWkuZ2xvYmFscy5sYXN0WUF4aXM7ZSYmZS54YXhpcyYmKGE9ZS54YXhpcyksZSYmZS55YXhpcyYmKHM9ZS55YXhpcyksaS5jb25maWcueGF4aXMubWluPWEubWluLGkuY29uZmlnLnhheGlzLm1heD1hLm1heDt2YXIgcj1mdW5jdGlvbihuKXtzW25dIT09dm9pZCAwJiYoaS5jb25maWcueWF4aXNbbl0ubWluPXNbbl0ubWluLGkuY29uZmlnLnlheGlzW25dLm1heD1zW25dLm1heCl9O2kuY29uZmlnLnlheGlzLm1hcChmdW5jdGlvbihuLG8pe2kuZ2xvYmFscy56b29tZWR8fHNbb10hPT12b2lkIDA/cihvKTp0LmN0eC5vcHRzLnlheGlzW29dIT09dm9pZCAwJiYobi5taW49dC5jdHgub3B0cy55YXhpc1tvXS5taW4sbi5tYXg9dC5jdHgub3B0cy55YXhpc1tvXS5tYXgpfSl9fV0pLHl9KCk7bWU9dHlwZW9mIHdpbmRvdzxcInVcIj93aW5kb3c6dm9pZCAwLE9lPWZ1bmN0aW9uKHksZSl7dmFyIHQ9KHRoaXMhPT12b2lkIDA/dGhpczp5KS5TVkc9ZnVuY3Rpb24obCl7aWYodC5zdXBwb3J0ZWQpcmV0dXJuIGw9bmV3IHQuRG9jKGwpLHQucGFyc2VyLmRyYXd8fHQucHJlcGFyZSgpLGx9O2lmKHQubnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHQueG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiLHQueGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsdC5zdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIix0LnN1cHBvcnRlZD0hMCwhdC5zdXBwb3J0ZWQpcmV0dXJuITE7dC5kaWQ9MWUzLHQuZWlkPWZ1bmN0aW9uKGwpe3JldHVyblwiU3ZnanNcIitjKGwpK3QuZGlkKyt9LHQuY3JlYXRlPWZ1bmN0aW9uKGwpe3ZhciB1PWUuY3JlYXRlRWxlbWVudE5TKHRoaXMubnMsbCk7cmV0dXJuIHUuc2V0QXR0cmlidXRlKFwiaWRcIix0aGlzLmVpZChsKSksdX0sdC5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgbCx1O3U9KGw9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKTtmb3IodmFyIHg9bC5sZW5ndGgtMTt4Pj0wO3gtLSlpZihsW3hdKWZvcih2YXIgdiBpbiB1KWxbeF0ucHJvdG90eXBlW3ZdPXVbdl07dC5TZXQmJnQuU2V0LmluaGVyaXQmJnQuU2V0LmluaGVyaXQoKX0sdC5pbnZlbnQ9ZnVuY3Rpb24obCl7dmFyIHU9dHlwZW9mIGwuY3JlYXRlPT1cImZ1bmN0aW9uXCI/bC5jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0LmNyZWF0ZShsLmNyZWF0ZSkpfTtyZXR1cm4gbC5pbmhlcml0JiYodS5wcm90b3R5cGU9bmV3IGwuaW5oZXJpdCksbC5leHRlbmQmJnQuZXh0ZW5kKHUsbC5leHRlbmQpLGwuY29uc3RydWN0JiZ0LmV4dGVuZChsLnBhcmVudHx8dC5Db250YWluZXIsbC5jb25zdHJ1Y3QpLHV9LHQuYWRvcHQ9ZnVuY3Rpb24obCl7cmV0dXJuIGw/bC5pbnN0YW5jZT9sLmluc3RhbmNlOigodT1sLm5vZGVOYW1lPT1cInN2Z1wiP2wucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHkuU1ZHRWxlbWVudD9uZXcgdC5OZXN0ZWQ6bmV3IHQuRG9jOmwubm9kZU5hbWU9PVwibGluZWFyR3JhZGllbnRcIj9uZXcgdC5HcmFkaWVudChcImxpbmVhclwiKTpsLm5vZGVOYW1lPT1cInJhZGlhbEdyYWRpZW50XCI/bmV3IHQuR3JhZGllbnQoXCJyYWRpYWxcIik6dFtjKGwubm9kZU5hbWUpXT9uZXcgdFtjKGwubm9kZU5hbWUpXTpuZXcgdC5FbGVtZW50KGwpKS50eXBlPWwubm9kZU5hbWUsdS5ub2RlPWwsbC5pbnN0YW5jZT11LHUgaW5zdGFuY2VvZiB0LkRvYyYmdS5uYW1lc3BhY2UoKS5kZWZzKCksdS5zZXREYXRhKEpTT04ucGFyc2UobC5nZXRBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIpKXx8e30pLHUpOm51bGw7dmFyIHV9LHQucHJlcGFyZT1mdW5jdGlvbigpe3ZhciBsPWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLHU9KGw/bmV3IHQuRG9jKGwpOnQuYWRvcHQoZS5kb2N1bWVudEVsZW1lbnQpLm5lc3RlZCgpKS5zaXplKDIsMCk7dC5wYXJzZXI9e2JvZHk6bHx8ZS5kb2N1bWVudEVsZW1lbnQsZHJhdzp1LnN0eWxlKFwib3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTEwMCU7dG9wOi0xMDAlO292ZXJmbG93OmhpZGRlblwiKS5ub2RlLHBvbHk6dS5wb2x5bGluZSgpLm5vZGUscGF0aDp1LnBhdGgoKS5ub2RlLG5hdGl2ZTp0LmNyZWF0ZShcInN2Z1wiKX19LHQucGFyc2VyPXtuYXRpdmU6dC5jcmVhdGUoXCJzdmdcIil9LGUuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixmdW5jdGlvbigpe3QucGFyc2VyLmRyYXd8fHQucHJlcGFyZSgpfSwhMSksdC5yZWdleD17bnVtYmVyQW5kVW5pdDovXihbKy1dPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8pKFthLXolXSopJC9pLGhleDovXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLHJnYjovcmdiXFwoKFxcZCspLChcXGQrKSwoXFxkKylcXCkvLHJlZmVyZW5jZTovIyhbYS16MC05XFwtX10rKS9pLHRyYW5zZm9ybXM6L1xcKVxccyosP1xccyovLHdoaXRlc3BhY2U6L1xccy9nLGlzSGV4Oi9eI1thLWYwLTldezMsNn0kL2ksaXNSZ2I6L15yZ2JcXCgvLGlzQ3NzOi9bXjpdKzpbXjtdKzs/Lyxpc0JsYW5rOi9eKFxccyspPyQvLGlzTnVtYmVyOi9eWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLGlzUGVyY2VudDovXi0/W1xcZFxcLl0rJSQvLGlzSW1hZ2U6L1xcLihqcGd8anBlZ3xwbmd8Z2lmfHN2ZykoXFw/W149XSsuKik/L2ksZGVsaW1pdGVyOi9bXFxzLF0rLyxoeXBoZW46LyhbXmVdKVxcLS9naSxwYXRoTGV0dGVyczovW01MSFZDU1FUQVpdL2dpLGlzUGF0aExldHRlcjovW01MSFZDU1FUQVpdL2ksbnVtYmVyc1dpdGhEb3RzOi8oKFxcZD9cXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSgoPzpcXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSspKSsvZ2ksZG90czovXFwuL2d9LHQudXRpbHM9e21hcDpmdW5jdGlvbihsLHUpe2Zvcih2YXIgeD1sLmxlbmd0aCx2PVtdLGs9MDtrPHg7aysrKXYucHVzaCh1KGxba10pKTtyZXR1cm4gdn0sZmlsdGVyOmZ1bmN0aW9uKGwsdSl7Zm9yKHZhciB4PWwubGVuZ3RoLHY9W10saz0wO2s8eDtrKyspdShsW2tdKSYmdi5wdXNoKGxba10pO3JldHVybiB2fSxmaWx0ZXJTVkdFbGVtZW50czpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5maWx0ZXIobCxmdW5jdGlvbih1KXtyZXR1cm4gdSBpbnN0YW5jZW9mIHkuU1ZHRWxlbWVudH0pfX0sdC5kZWZhdWx0cz17YXR0cnM6e1wiZmlsbC1vcGFjaXR5XCI6MSxcInN0cm9rZS1vcGFjaXR5XCI6MSxcInN0cm9rZS13aWR0aFwiOjAsXCJzdHJva2UtbGluZWpvaW5cIjpcIm1pdGVyXCIsXCJzdHJva2UtbGluZWNhcFwiOlwiYnV0dFwiLGZpbGw6XCIjMDAwMDAwXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLG9wYWNpdHk6MSx4OjAseTowLGN4OjAsY3k6MCx3aWR0aDowLGhlaWdodDowLHI6MCxyeDowLHJ5OjAsb2Zmc2V0OjAsXCJzdG9wLW9wYWNpdHlcIjoxLFwic3RvcC1jb2xvclwiOlwiIzAwMDAwMFwiLFwiZm9udC1zaXplXCI6MTYsXCJmb250LWZhbWlseVwiOlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFwidGV4dC1hbmNob3JcIjpcInN0YXJ0XCJ9fSx0LkNvbG9yPWZ1bmN0aW9uKGwpe3ZhciB1LHg7dGhpcy5yPTAsdGhpcy5nPTAsdGhpcy5iPTAsbCYmKHR5cGVvZiBsPT1cInN0cmluZ1wiP3QucmVnZXguaXNSZ2IudGVzdChsKT8odT10LnJlZ2V4LnJnYi5leGVjKGwucmVwbGFjZSh0LnJlZ2V4LndoaXRlc3BhY2UsXCJcIikpLHRoaXMucj1wYXJzZUludCh1WzFdKSx0aGlzLmc9cGFyc2VJbnQodVsyXSksdGhpcy5iPXBhcnNlSW50KHVbM10pKTp0LnJlZ2V4LmlzSGV4LnRlc3QobCkmJih1PXQucmVnZXguaGV4LmV4ZWMoKHg9bCkubGVuZ3RoPT00P1tcIiNcIix4LnN1YnN0cmluZygxLDIpLHguc3Vic3RyaW5nKDEsMikseC5zdWJzdHJpbmcoMiwzKSx4LnN1YnN0cmluZygyLDMpLHguc3Vic3RyaW5nKDMsNCkseC5zdWJzdHJpbmcoMyw0KV0uam9pbihcIlwiKTp4KSx0aGlzLnI9cGFyc2VJbnQodVsxXSwxNiksdGhpcy5nPXBhcnNlSW50KHVbMl0sMTYpLHRoaXMuYj1wYXJzZUludCh1WzNdLDE2KSk6VShsKT09PVwib2JqZWN0XCImJih0aGlzLnI9bC5yLHRoaXMuZz1sLmcsdGhpcy5iPWwuYikpfSx0LmV4dGVuZCh0LkNvbG9yLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSGV4KCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuXCIjXCIrZCh0aGlzLnIpK2QodGhpcy5nKStkKHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuXCJyZ2IoXCIrW3RoaXMucix0aGlzLmcsdGhpcy5iXS5qb2luKCkrXCIpXCJ9LGJyaWdodG5lc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLzI1NSouMyt0aGlzLmcvMjU1Ki41OSt0aGlzLmIvMjU1Ki4xMX0sbW9ycGg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IHQuQ29sb3IobCksdGhpc30sYXQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/KGw9bDwwPzA6bD4xPzE6bCxuZXcgdC5Db2xvcih7cjp+fih0aGlzLnIrKHRoaXMuZGVzdGluYXRpb24uci10aGlzLnIpKmwpLGc6fn4odGhpcy5nKyh0aGlzLmRlc3RpbmF0aW9uLmctdGhpcy5nKSpsKSxiOn5+KHRoaXMuYisodGhpcy5kZXN0aW5hdGlvbi5iLXRoaXMuYikqbCl9KSk6dGhpc319KSx0LkNvbG9yLnRlc3Q9ZnVuY3Rpb24obCl7cmV0dXJuIGwrPVwiXCIsdC5yZWdleC5pc0hleC50ZXN0KGwpfHx0LnJlZ2V4LmlzUmdiLnRlc3QobCl9LHQuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24obCl7cmV0dXJuIGwmJnR5cGVvZiBsLnI9PVwibnVtYmVyXCImJnR5cGVvZiBsLmc9PVwibnVtYmVyXCImJnR5cGVvZiBsLmI9PVwibnVtYmVyXCJ9LHQuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbihsKXtyZXR1cm4gdC5Db2xvci5pc1JnYihsKXx8dC5Db2xvci50ZXN0KGwpfSx0LkFycmF5PWZ1bmN0aW9uKGwsdSl7KGw9KGx8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aD09MCYmdSYmKGw9dS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZShsKX0sdC5leHRlbmQodC5BcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5qb2luKFwiIFwiKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwYXJzZTpmdW5jdGlvbihsKXtyZXR1cm4gbD1sLnZhbHVlT2YoKSxBcnJheS5pc0FycmF5KGwpP2w6dGhpcy5zcGxpdChsKX19KSx0LlBvaW50QXJyYXk9ZnVuY3Rpb24obCx1KXt0LkFycmF5LmNhbGwodGhpcyxsLHV8fFtbMCwwXV0pfSx0LlBvaW50QXJyYXkucHJvdG90eXBlPW5ldyB0LkFycmF5LHQuUG9pbnRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9dC5Qb2ludEFycmF5O2Zvcih2YXIgaT17TTpmdW5jdGlvbihsLHUseCl7cmV0dXJuIHUueD14Lng9bFswXSx1Lnk9eC55PWxbMV0sW1wiTVwiLHUueCx1LnldfSxMOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHUueD1sWzBdLHUueT1sWzFdLFtcIkxcIixsWzBdLGxbMV1dfSxIOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHUueD1sWzBdLFtcIkhcIixsWzBdXX0sVjpmdW5jdGlvbihsLHUpe3JldHVybiB1Lnk9bFswXSxbXCJWXCIsbFswXV19LEM6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdS54PWxbNF0sdS55PWxbNV0sW1wiQ1wiLGxbMF0sbFsxXSxsWzJdLGxbM10sbFs0XSxsWzVdXX0sUTpmdW5jdGlvbihsLHUpe3JldHVybiB1Lng9bFsyXSx1Lnk9bFszXSxbXCJRXCIsbFswXSxsWzFdLGxbMl0sbFszXV19LFM6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdS54PWxbMl0sdS55PWxbM10sW1wiU1wiLGxbMF0sbFsxXSxsWzJdLGxbM11dfSxaOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdS54PXgueCx1Lnk9eC55LFtcIlpcIl19fSxhPVwibWxodnF0Y3NhelwiLnNwbGl0KFwiXCIpLHM9MCxyPWEubGVuZ3RoO3M8cjsrK3MpaVthW3NdXT1mdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24odSx4LHYpe2lmKGw9PVwiSFwiKXVbMF09dVswXSt4Lng7ZWxzZSBpZihsPT1cIlZcIil1WzBdPXVbMF0reC55O2Vsc2UgaWYobD09XCJBXCIpdVs1XT11WzVdK3gueCx1WzZdPXVbNl0reC55O2Vsc2UgZm9yKHZhciBrPTAsUz11Lmxlbmd0aDtrPFM7KytrKXVba109dVtrXSsoayUyP3gueTp4LngpO2lmKGkmJnR5cGVvZiBpW2xdPT1cImZ1bmN0aW9uXCIpcmV0dXJuIGlbbF0odSx4LHYpfX0oYVtzXS50b1VwcGVyQ2FzZSgpKTt0LlBhdGhBcnJheT1mdW5jdGlvbihsLHUpe3QuQXJyYXkuY2FsbCh0aGlzLGwsdXx8W1tcIk1cIiwwLDBdXSl9LHQuUGF0aEFycmF5LnByb3RvdHlwZT1uZXcgdC5BcnJheSx0LlBhdGhBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9dC5QYXRoQXJyYXksdC5leHRlbmQodC5QYXRoQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGwpe2Zvcih2YXIgdT0wLHg9bC5sZW5ndGgsdj1cIlwiO3U8eDt1Kyspdis9bFt1XVswXSxsW3VdWzFdIT1udWxsJiYodis9bFt1XVsxXSxsW3VdWzJdIT1udWxsJiYodis9XCIgXCIsdis9bFt1XVsyXSxsW3VdWzNdIT1udWxsJiYodis9XCIgXCIsdis9bFt1XVszXSx2Kz1cIiBcIix2Kz1sW3VdWzRdLGxbdV1bNV0hPW51bGwmJih2Kz1cIiBcIix2Kz1sW3VdWzVdLHYrPVwiIFwiLHYrPWxbdV1bNl0sbFt1XVs3XSE9bnVsbCYmKHYrPVwiIFwiLHYrPWxbdV1bN10pKSkpKTtyZXR1cm4gditcIiBcIn0odGhpcy52YWx1ZSl9LG1vdmU6ZnVuY3Rpb24obCx1KXt2YXIgeD10aGlzLmJib3goKTtyZXR1cm4geC54LHgueSx0aGlzfSxhdDpmdW5jdGlvbihsKXtpZighdGhpcy5kZXN0aW5hdGlvbilyZXR1cm4gdGhpcztmb3IodmFyIHU9dGhpcy52YWx1ZSx4PXRoaXMuZGVzdGluYXRpb24udmFsdWUsdj1bXSxrPW5ldyB0LlBhdGhBcnJheSxTPTAsQz11Lmxlbmd0aDtTPEM7UysrKXt2W1NdPVt1W1NdWzBdXTtmb3IodmFyIEw9MSxJPXVbU10ubGVuZ3RoO0w8STtMKyspdltTXVtMXT11W1NdW0xdKyh4W1NdW0xdLXVbU11bTF0pKmw7dltTXVswXT09PVwiQVwiJiYodltTXVs0XT0rKHZbU11bNF0hPTApLHZbU11bNV09Kyh2W1NdWzVdIT0wKSl9cmV0dXJuIGsudmFsdWU9dixrfSxwYXJzZTpmdW5jdGlvbihsKXtpZihsIGluc3RhbmNlb2YgdC5QYXRoQXJyYXkpcmV0dXJuIGwudmFsdWVPZigpO3ZhciB1LHg9e006MixMOjIsSDoxLFY6MSxDOjYsUzo0LFE6NCxUOjIsQTo3LFo6MH07bD10eXBlb2YgbD09XCJzdHJpbmdcIj9sLnJlcGxhY2UodC5yZWdleC5udW1iZXJzV2l0aERvdHMsbykucmVwbGFjZSh0LnJlZ2V4LnBhdGhMZXR0ZXJzLFwiICQmIFwiKS5yZXBsYWNlKHQucmVnZXguaHlwaGVuLFwiJDEgLVwiKS50cmltKCkuc3BsaXQodC5yZWdleC5kZWxpbWl0ZXIpOmwucmVkdWNlKGZ1bmN0aW9uKEkseil7cmV0dXJuW10uY29uY2F0LmNhbGwoSSx6KX0sW10pO3ZhciB2PVtdLGs9bmV3IHQuUG9pbnQsUz1uZXcgdC5Qb2ludCxDPTAsTD1sLmxlbmd0aDtkbyB0LnJlZ2V4LmlzUGF0aExldHRlci50ZXN0KGxbQ10pPyh1PWxbQ10sKytDKTp1PT1cIk1cIj91PVwiTFwiOnU9PVwibVwiJiYodT1cImxcIiksdi5wdXNoKGlbdV0uY2FsbChudWxsLGwuc2xpY2UoQyxDKz14W3UudG9VcHBlckNhc2UoKV0pLm1hcChwYXJzZUZsb2F0KSxrLFMpKTt3aGlsZShMPkMpO3JldHVybiB2fSxiYm94OmZ1bmN0aW9uKCl7cmV0dXJuIHQucGFyc2VyLmRyYXd8fHQucHJlcGFyZSgpLHQucGFyc2VyLnBhdGguc2V0QXR0cmlidXRlKFwiZFwiLHRoaXMudG9TdHJpbmcoKSksdC5wYXJzZXIucGF0aC5nZXRCQm94KCl9fSksdC5OdW1iZXI9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsLHUpe3RoaXMudmFsdWU9MCx0aGlzLnVuaXQ9dXx8XCJcIix0eXBlb2YgbD09XCJudW1iZXJcIj90aGlzLnZhbHVlPWlzTmFOKGwpPzA6aXNGaW5pdGUobCk/bDpsPDA/LTM0ZTM3OjM0ZTM3OnR5cGVvZiBsPT1cInN0cmluZ1wiPyh1PWwubWF0Y2godC5yZWdleC5udW1iZXJBbmRVbml0KSkmJih0aGlzLnZhbHVlPXBhcnNlRmxvYXQodVsxXSksdVs1XT09XCIlXCI/dGhpcy52YWx1ZS89MTAwOnVbNV09PVwic1wiJiYodGhpcy52YWx1ZSo9MWUzKSx0aGlzLnVuaXQ9dVs1XSk6bCBpbnN0YW5jZW9mIHQuTnVtYmVyJiYodGhpcy52YWx1ZT1sLnZhbHVlT2YoKSx0aGlzLnVuaXQ9bC51bml0KX0sZXh0ZW5kOnt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybih0aGlzLnVuaXQ9PVwiJVwiP35+KDFlOCp0aGlzLnZhbHVlKS8xZTY6dGhpcy51bml0PT1cInNcIj90aGlzLnZhbHVlLzFlMzp0aGlzLnZhbHVlKSt0aGlzLnVuaXR9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0scGx1czpmdW5jdGlvbihsKXtyZXR1cm4gbD1uZXcgdC5OdW1iZXIobCksbmV3IHQuTnVtYmVyKHRoaXMrbCx0aGlzLnVuaXR8fGwudW5pdCl9LG1pbnVzOmZ1bmN0aW9uKGwpe3JldHVybiBsPW5ldyB0Lk51bWJlcihsKSxuZXcgdC5OdW1iZXIodGhpcy1sLHRoaXMudW5pdHx8bC51bml0KX0sdGltZXM6ZnVuY3Rpb24obCl7cmV0dXJuIGw9bmV3IHQuTnVtYmVyKGwpLG5ldyB0Lk51bWJlcih0aGlzKmwsdGhpcy51bml0fHxsLnVuaXQpfSxkaXZpZGU6ZnVuY3Rpb24obCl7cmV0dXJuIGw9bmV3IHQuTnVtYmVyKGwpLG5ldyB0Lk51bWJlcih0aGlzL2wsdGhpcy51bml0fHxsLnVuaXQpfSx0bzpmdW5jdGlvbihsKXt2YXIgdT1uZXcgdC5OdW1iZXIodGhpcyk7cmV0dXJuIHR5cGVvZiBsPT1cInN0cmluZ1wiJiYodS51bml0PWwpLHV9LG1vcnBoOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyB0Lk51bWJlcihsKSxsLnJlbGF0aXZlJiYodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSs9dGhpcy52YWx1ZSksdGhpc30sYXQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IHQuTnVtYmVyKHRoaXMuZGVzdGluYXRpb24pLm1pbnVzKHRoaXMpLnRpbWVzKGwpLnBsdXModGhpcyk6dGhpc319fSksdC5FbGVtZW50PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7dGhpcy5fc3Ryb2tlPXQuZGVmYXVsdHMuYXR0cnMuc3Ryb2tlLHRoaXMuX2V2ZW50PW51bGwsdGhpcy5kb209e30sKHRoaXMubm9kZT1sKSYmKHRoaXMudHlwZT1sLm5vZGVOYW1lLHRoaXMubm9kZS5pbnN0YW5jZT10aGlzLHRoaXMuX3N0cm9rZT1sLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKXx8dGhpcy5fc3Ryb2tlKX0sZXh0ZW5kOnt4OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJ4XCIsbCl9LHk6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcInlcIixsKX0sY3g6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy54KCkrdGhpcy53aWR0aCgpLzI6dGhpcy54KGwtdGhpcy53aWR0aCgpLzIpfSxjeTpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLnkoKSt0aGlzLmhlaWdodCgpLzI6dGhpcy55KGwtdGhpcy5oZWlnaHQoKS8yKX0sbW92ZTpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLngobCkueSh1KX0sY2VudGVyOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuY3gobCkuY3kodSl9LHdpZHRoOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJ3aWR0aFwiLGwpfSxoZWlnaHQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcImhlaWdodFwiLGwpfSxzaXplOmZ1bmN0aW9uKGwsdSl7dmFyIHg9Zyh0aGlzLGwsdSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IHQuTnVtYmVyKHgud2lkdGgpKS5oZWlnaHQobmV3IHQuTnVtYmVyKHguaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKGwpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgdT1iKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gbD9sLmFkZCh1KTp0aGlzLmFmdGVyKHUpLHV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hZnRlcihsKS5yZW1vdmUoKSxsfSxhZGRUbzpmdW5jdGlvbihsKXtyZXR1cm4gbC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKGwpe3JldHVybiBsLmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIsbCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIlwiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKX0sdmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiKSE9XCJub25lXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIpfSxjbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5hdHRyKFwiY2xhc3NcIik7cmV0dXJuIGw9PW51bGw/W106bC50cmltKCkuc3BsaXQodC5yZWdleC5kZWxpbWl0ZXIpfSxoYXNDbGFzczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5jbGFzc2VzKCkuaW5kZXhPZihsKSE9LTF9LGFkZENsYXNzOmZ1bmN0aW9uKGwpe2lmKCF0aGlzLmhhc0NsYXNzKGwpKXt2YXIgdT10aGlzLmNsYXNzZXMoKTt1LnB1c2gobCksdGhpcy5hdHRyKFwiY2xhc3NcIix1LmpvaW4oXCIgXCIpKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuaGFzQ2xhc3MobCkmJnRoaXMuYXR0cihcImNsYXNzXCIsdGhpcy5jbGFzc2VzKCkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1IT1sfSkuam9pbihcIiBcIikpLHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmhhc0NsYXNzKGwpP3RoaXMucmVtb3ZlQ2xhc3MobCk6dGhpcy5hZGRDbGFzcyhsKX0scmVmZXJlbmNlOmZ1bmN0aW9uKGwpe3JldHVybiB0LmdldCh0aGlzLmF0dHIobCkpfSxwYXJlbnQ6ZnVuY3Rpb24obCl7dmFyIHU9dGhpcztpZighdS5ub2RlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7aWYodT10LmFkb3B0KHUubm9kZS5wYXJlbnROb2RlKSwhbClyZXR1cm4gdTtmb3IoO3UmJnUubm9kZSBpbnN0YW5jZW9mIHkuU1ZHRWxlbWVudDspe2lmKHR5cGVvZiBsPT1cInN0cmluZ1wiP3UubWF0Y2hlcyhsKTp1IGluc3RhbmNlb2YgbClyZXR1cm4gdTtpZighdS5ub2RlLnBhcmVudE5vZGV8fHUubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lPT1cIiNkb2N1bWVudFwiKXJldHVybiBudWxsO3U9dC5hZG9wdCh1Lm5vZGUucGFyZW50Tm9kZSl9fSxkb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHQuRG9jP3RoaXM6dGhpcy5wYXJlbnQodC5Eb2MpfSxwYXJlbnRzOmZ1bmN0aW9uKGwpe3ZhciB1PVtdLHg9dGhpcztkb3tpZighKHg9eC5wYXJlbnQobCkpfHwheC5ub2RlKWJyZWFrO3UucHVzaCh4KX13aGlsZSh4LnBhcmVudCk7cmV0dXJuIHV9LG1hdGNoZXM6ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKHUseCl7cmV0dXJuKHUubWF0Y2hlc3x8dS5tYXRjaGVzU2VsZWN0b3J8fHUubXNNYXRjaGVzU2VsZWN0b3J8fHUubW96TWF0Y2hlc1NlbGVjdG9yfHx1LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dS5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHUseCl9KHRoaXMubm9kZSxsKX0sbmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sc3ZnOmZ1bmN0aW9uKGwpe3ZhciB1PWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKTtpZighKGwmJnRoaXMgaW5zdGFuY2VvZiB0LlBhcmVudCkpcmV0dXJuIHUuYXBwZW5kQ2hpbGQobD1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIikpLHRoaXMud3JpdGVEYXRhVG9Eb20oKSxsLmFwcGVuZENoaWxkKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKSx1LmlubmVySFRNTC5yZXBsYWNlKC9ePHN2Zz4vLFwiXCIpLnJlcGxhY2UoLzxcXC9zdmc+JC8sXCJcIik7dS5pbm5lckhUTUw9XCI8c3ZnPlwiK2wucmVwbGFjZSgvXFxuLyxcIlwiKS5yZXBsYWNlKC88KFtcXHc6LV0rKShbXjxdKz8pXFwvPi9nLFwiPCQxJDI+PC8kMT5cIikrXCI8L3N2Zz5cIjtmb3IodmFyIHg9MCx2PXUuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLmxlbmd0aDt4PHY7eCsrKXRoaXMubm9kZS5hcHBlbmRDaGlsZCh1LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9LHdyaXRlRGF0YVRvRG9tOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZWFjaHx8dGhpcy5saW5lcykmJih0aGlzLmVhY2g/dGhpczp0aGlzLmxpbmVzKCkpLmVhY2goZnVuY3Rpb24oKXt0aGlzLndyaXRlRGF0YVRvRG9tKCl9KSx0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSxPYmplY3Qua2V5cyh0aGlzLmRvbSkubGVuZ3RoJiZ0aGlzLm5vZGUuc2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiLEpTT04uc3RyaW5naWZ5KHRoaXMuZG9tKSksdGhpc30sc2V0RGF0YTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5kb209bCx0aGlzfSxpczpmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24odSx4KXtyZXR1cm4gdSBpbnN0YW5jZW9mIHh9KHRoaXMsbCl9fX0pLHQuZWFzaW5nPXtcIi1cIjpmdW5jdGlvbihsKXtyZXR1cm4gbH0sXCI8PlwiOmZ1bmN0aW9uKGwpe3JldHVybi1NYXRoLmNvcyhsKk1hdGguUEkpLzIrLjV9LFwiPlwiOmZ1bmN0aW9uKGwpe3JldHVybiBNYXRoLnNpbihsKk1hdGguUEkvMil9LFwiPFwiOmZ1bmN0aW9uKGwpe3JldHVybiAxLU1hdGguY29zKGwqTWF0aC5QSS8yKX19LHQubW9ycGg9ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKHUseCl7cmV0dXJuIG5ldyB0Lk1vcnBoT2JqKHUseCkuYXQobCl9fSx0LlNpdHVhdGlvbj10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IHQuTnVtYmVyKGwuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyB0Lk51bWJlcihsLmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPWwuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksdC5GWD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuX3RhcmdldD1sLHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24obCx1LHgpe1UobCk9PT1cIm9iamVjdFwiJiYodT1sLmVhc2UseD1sLmRlbGF5LGw9bC5kdXJhdGlvbik7dmFyIHY9bmV3IHQuU2l0dWF0aW9uKHtkdXJhdGlvbjpsfHwxZTMsZGVsYXk6eHx8MCxlYXNlOnQuZWFzaW5nW3V8fFwiLVwiXXx8dX0pO3JldHVybiB0aGlzLnF1ZXVlKHYpLHRoaXN9LHRhcmdldDpmdW5jdGlvbihsKXtyZXR1cm4gbCYmbCBpbnN0YW5jZW9mIHQuRWxlbWVudD8odGhpcy5fdGFyZ2V0PWwsdGhpcyk6dGhpcy5fdGFyZ2V0fSx0aW1lVG9BYnNQb3M6ZnVuY3Rpb24obCl7cmV0dXJuKGwtdGhpcy5zaXR1YXRpb24uc3RhcnQpLyh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCl9LGFic1Bvc1RvVGltZTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQqbCt0aGlzLnNpdHVhdGlvbi5zdGFydH0sc3RhcnRBbmltRnJhbWU6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmFuaW1hdGlvbkZyYW1lPXkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3RoaXMuc3RlcCgpfSkuYmluZCh0aGlzKSl9LHN0b3BBbmltRnJhbWU6ZnVuY3Rpb24oKXt5LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmFjdGl2ZSYmdGhpcy5zaXR1YXRpb24mJih0aGlzLmFjdGl2ZT0hMCx0aGlzLnN0YXJ0Q3VycmVudCgpKSx0aGlzfSxzdGFydEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uc3RhcnQ9K25ldyBEYXRlK3RoaXMuc2l0dWF0aW9uLmRlbGF5L3RoaXMuX3NwZWVkLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCt0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCx0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpfSxxdWV1ZTpmdW5jdGlvbihsKXtyZXR1cm4odHlwZW9mIGw9PVwiZnVuY3Rpb25cInx8bCBpbnN0YW5jZW9mIHQuU2l0dWF0aW9uKSYmdGhpcy5zaXR1YXRpb25zLnB1c2gobCksdGhpcy5zaXR1YXRpb258fCh0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSksdGhpc30sZGVxdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3AoKSx0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSx0aGlzLnNpdHVhdGlvbiYmKHRoaXMuc2l0dWF0aW9uIGluc3RhbmNlb2YgdC5TaXR1YXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2l0dWF0aW9uLmNhbGwodGhpcykpLHRoaXN9LGluaXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIGwsdT10aGlzLnNpdHVhdGlvbjtpZih1LmluaXQpcmV0dXJuIHRoaXM7Zm9yKHZhciB4IGluIHUuYW5pbWF0aW9ucyl7bD10aGlzLnRhcmdldCgpW3hdKCksQXJyYXkuaXNBcnJheShsKXx8KGw9W2xdKSxBcnJheS5pc0FycmF5KHUuYW5pbWF0aW9uc1t4XSl8fCh1LmFuaW1hdGlvbnNbeF09W3UuYW5pbWF0aW9uc1t4XV0pO2Zvcih2YXIgdj1sLmxlbmd0aDt2LS07KXUuYW5pbWF0aW9uc1t4XVt2XWluc3RhbmNlb2YgdC5OdW1iZXImJihsW3ZdPW5ldyB0Lk51bWJlcihsW3ZdKSksdS5hbmltYXRpb25zW3hdW3ZdPWxbdl0ubW9ycGgodS5hbmltYXRpb25zW3hdW3ZdKX1mb3IodmFyIHggaW4gdS5hdHRycyl1LmF0dHJzW3hdPW5ldyB0Lk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuYXR0cih4KSx1LmF0dHJzW3hdKTtmb3IodmFyIHggaW4gdS5zdHlsZXMpdS5zdHlsZXNbeF09bmV3IHQuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZSh4KSx1LnN0eWxlc1t4XSk7cmV0dXJuIHUuaW5pdGlhbFRyYW5zZm9ybWF0aW9uPXRoaXMudGFyZ2V0KCkubWF0cml4aWZ5KCksdS5pbml0PSEwLHRoaXN9LGNsZWFyUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zPVtdLHRoaXN9LGNsZWFyQ3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXN9LHN0b3A6ZnVuY3Rpb24obCx1KXt2YXIgeD10aGlzLmFjdGl2ZTtyZXR1cm4gdGhpcy5hY3RpdmU9ITEsdSYmdGhpcy5jbGVhclF1ZXVlKCksbCYmdGhpcy5zaXR1YXRpb24mJigheCYmdGhpcy5zdGFydEN1cnJlbnQoKSx0aGlzLmF0RW5kKCkpLHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuY2xlYXJDdXJyZW50KCl9LGFmdGVyOmZ1bmN0aW9uKGwpe3ZhciB1PXRoaXMubGFzdCgpO3JldHVybiB0aGlzLnRhcmdldCgpLm9uKFwiZmluaXNoZWQuZnhcIixmdW5jdGlvbiB4KHYpe3YuZGV0YWlsLnNpdHVhdGlvbj09dSYmKGwuY2FsbCh0aGlzLHUpLHRoaXMub2ZmKFwiZmluaXNoZWQuZnhcIix4KSl9KSx0aGlzLl9jYWxsU3RhcnQoKX0sZHVyaW5nOmZ1bmN0aW9uKGwpe3ZhciB1PXRoaXMubGFzdCgpLHg9ZnVuY3Rpb24odil7di5kZXRhaWwuc2l0dWF0aW9uPT11JiZsLmNhbGwodGhpcyx2LmRldGFpbC5wb3MsdC5tb3JwaCh2LmRldGFpbC5wb3MpLHYuZGV0YWlsLmVhc2VkLHUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJkdXJpbmcuZnhcIix4KS5vbihcImR1cmluZy5meFwiLHgpLHRoaXMuYWZ0ZXIoZnVuY3Rpb24oKXt0aGlzLm9mZihcImR1cmluZy5meFwiLHgpfSksdGhpcy5fY2FsbFN0YXJ0KCl9LGFmdGVyQWxsOmZ1bmN0aW9uKGwpe3ZhciB1PWZ1bmN0aW9uIHgodil7bC5jYWxsKHRoaXMpLHRoaXMub2ZmKFwiYWxsZmluaXNoZWQuZnhcIix4KX07cmV0dXJuIHRoaXMudGFyZ2V0KCkub2ZmKFwiYWxsZmluaXNoZWQuZnhcIix1KS5vbihcImFsbGZpbmlzaGVkLmZ4XCIsdSksdGhpcy5fY2FsbFN0YXJ0KCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zLmxlbmd0aD90aGlzLnNpdHVhdGlvbnNbdGhpcy5zaXR1YXRpb25zLmxlbmd0aC0xXTp0aGlzLnNpdHVhdGlvbn0sYWRkOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdGhpcy5sYXN0KClbeHx8XCJhbmltYXRpb25zXCJdW2xdPXUsdGhpcy5fY2FsbFN0YXJ0KCl9LHN0ZXA6ZnVuY3Rpb24obCl7dmFyIHUseCx2O2x8fCh0aGlzLmFic1Bvcz10aGlzLnRpbWVUb0Fic1BvcygrbmV3IERhdGUpKSx0aGlzLnNpdHVhdGlvbi5sb29wcyE9PSExPyh1PU1hdGgubWF4KHRoaXMuYWJzUG9zLDApLHg9TWF0aC5mbG9vcih1KSx0aGlzLnNpdHVhdGlvbi5sb29wcz09PSEwfHx4PHRoaXMuc2l0dWF0aW9uLmxvb3BzPyh0aGlzLnBvcz11LXgsdj10aGlzLnNpdHVhdGlvbi5sb29wLHRoaXMuc2l0dWF0aW9uLmxvb3A9eCk6KHRoaXMuYWJzUG9zPXRoaXMuc2l0dWF0aW9uLmxvb3BzLHRoaXMucG9zPTEsdj10aGlzLnNpdHVhdGlvbi5sb29wLTEsdGhpcy5zaXR1YXRpb24ubG9vcD10aGlzLnNpdHVhdGlvbi5sb29wcyksdGhpcy5zaXR1YXRpb24ucmV2ZXJzaW5nJiYodGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQ9dGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQhPSEhKCh0aGlzLnNpdHVhdGlvbi5sb29wLXYpJTIpKSk6KHRoaXMuYWJzUG9zPU1hdGgubWluKHRoaXMuYWJzUG9zLDEpLHRoaXMucG9zPXRoaXMuYWJzUG9zKSx0aGlzLnBvczwwJiYodGhpcy5wb3M9MCksdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJih0aGlzLnBvcz0xLXRoaXMucG9zKTt2YXIgaz10aGlzLnNpdHVhdGlvbi5lYXNlKHRoaXMucG9zKTtmb3IodmFyIFMgaW4gdGhpcy5zaXR1YXRpb24ub25jZSlTPnRoaXMubGFzdFBvcyYmUzw9ayYmKHRoaXMuc2l0dWF0aW9uLm9uY2VbU10uY2FsbCh0aGlzLnRhcmdldCgpLHRoaXMucG9zLGspLGRlbGV0ZSB0aGlzLnNpdHVhdGlvbi5vbmNlW1NdKTtyZXR1cm4gdGhpcy5hY3RpdmUmJnRoaXMudGFyZ2V0KCkuZmlyZShcImR1cmluZ1wiLHtwb3M6dGhpcy5wb3MsZWFzZWQ6ayxmeDp0aGlzLHNpdHVhdGlvbjp0aGlzLnNpdHVhdGlvbn0pLHRoaXMuc2l0dWF0aW9uPyh0aGlzLmVhY2hBdCgpLHRoaXMucG9zPT0xJiYhdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWR8fHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiZ0aGlzLnBvcz09MD8odGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy50YXJnZXQoKS5maXJlKFwiZmluaXNoZWRcIix7Zng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5maXJlKFwiYWxsZmluaXNoZWRcIiksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkub2ZmKFwiLmZ4XCIpLHRoaXMuYWN0aXZlPSExKSksdGhpcy5hY3RpdmU/dGhpcy5kZXF1ZXVlKCk6dGhpcy5jbGVhckN1cnJlbnQoKSk6IXRoaXMucGF1c2VkJiZ0aGlzLmFjdGl2ZSYmdGhpcy5zdGFydEFuaW1GcmFtZSgpLHRoaXMubGFzdFBvcz1rLHRoaXMpOnRoaXN9LGVhY2hBdDpmdW5jdGlvbigpe3ZhciBsLHU9dGhpcyx4PXRoaXMudGFyZ2V0KCksdj10aGlzLnNpdHVhdGlvbjtmb3IodmFyIGsgaW4gdi5hbmltYXRpb25zKWw9W10uY29uY2F0KHYuYW5pbWF0aW9uc1trXSkubWFwKGZ1bmN0aW9uKEwpe3JldHVybiB0eXBlb2YgTCE9XCJzdHJpbmdcIiYmTC5hdD9MLmF0KHYuZWFzZSh1LnBvcyksdS5wb3MpOkx9KSx4W2tdLmFwcGx5KHgsbCk7Zm9yKHZhciBrIGluIHYuYXR0cnMpbD1ba10uY29uY2F0KHYuYXR0cnNba10pLm1hcChmdW5jdGlvbihJKXtyZXR1cm4gdHlwZW9mIEkhPVwic3RyaW5nXCImJkkuYXQ/SS5hdCh2LmVhc2UodS5wb3MpLHUucG9zKTpJfSkseC5hdHRyLmFwcGx5KHgsbCk7Zm9yKHZhciBrIGluIHYuc3R5bGVzKWw9W2tdLmNvbmNhdCh2LnN0eWxlc1trXSkubWFwKGZ1bmN0aW9uKEkpe3JldHVybiB0eXBlb2YgSSE9XCJzdHJpbmdcIiYmSS5hdD9JLmF0KHYuZWFzZSh1LnBvcyksdS5wb3MpOkl9KSx4LnN0eWxlLmFwcGx5KHgsbCk7aWYodi50cmFuc2Zvcm1zLmxlbmd0aCl7bD12LmluaXRpYWxUcmFuc2Zvcm1hdGlvbixrPTA7Zm9yKHZhciBTPXYudHJhbnNmb3Jtcy5sZW5ndGg7azxTO2srKyl7dmFyIEM9di50cmFuc2Zvcm1zW2tdO0MgaW5zdGFuY2VvZiB0Lk1hdHJpeD9sPUMucmVsYXRpdmU/bC5tdWx0aXBseShuZXcgdC5NYXRyaXgoKS5tb3JwaChDKS5hdCh2LmVhc2UodGhpcy5wb3MpKSk6bC5tb3JwaChDKS5hdCh2LmVhc2UodGhpcy5wb3MpKTooQy5yZWxhdGl2ZXx8Qy51bmRvKGwuZXh0cmFjdCgpKSxsPWwubXVsdGlwbHkoQy5hdCh2LmVhc2UodGhpcy5wb3MpKSkpfXgubWF0cml4KGwpfXJldHVybiB0aGlzfSxvbmNlOmZ1bmN0aW9uKGwsdSx4KXt2YXIgdj10aGlzLmxhc3QoKTtyZXR1cm4geHx8KGw9di5lYXNlKGwpKSx2Lm9uY2VbbF09dSx0aGlzfSxfY2FsbFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpfSkuYmluZCh0aGlzKSwwKSx0aGlzfX0scGFyZW50OnQuRWxlbWVudCxjb25zdHJ1Y3Q6e2FuaW1hdGU6ZnVuY3Rpb24obCx1LHgpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgdC5GWCh0aGlzKSkpLmFuaW1hdGUobCx1LHgpfSxkZWxheTpmdW5jdGlvbihsKXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IHQuRlgodGhpcykpKS5kZWxheShsKX0sc3RvcDpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LnN0b3AobCx1KSx0aGlzfSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5maW5pc2goKSx0aGlzfX19KSx0Lk1vcnBoT2JqPXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdC5Db2xvci5pc0NvbG9yKHUpP25ldyB0LkNvbG9yKGwpLm1vcnBoKHUpOnQucmVnZXguZGVsaW1pdGVyLnRlc3QobCk/dC5yZWdleC5wYXRoTGV0dGVycy50ZXN0KGwpP25ldyB0LlBhdGhBcnJheShsKS5tb3JwaCh1KTpuZXcgdC5BcnJheShsKS5tb3JwaCh1KTp0LnJlZ2V4Lm51bWJlckFuZFVuaXQudGVzdCh1KT9uZXcgdC5OdW1iZXIobCkubW9ycGgodSk6KHRoaXMudmFsdWU9bCx2b2lkKHRoaXMuZGVzdGluYXRpb249dSkpfSxleHRlbmQ6e2F0OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHU8MT90aGlzLnZhbHVlOnRoaXMuZGVzdGluYXRpb259LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19fSksdC5leHRlbmQodC5GWCx7YXR0cjpmdW5jdGlvbihsLHUseCl7aWYoVShsKT09PVwib2JqZWN0XCIpZm9yKHZhciB2IGluIGwpdGhpcy5hdHRyKHYsbFt2XSk7ZWxzZSB0aGlzLmFkZChsLHUsXCJhdHRyc1wiKTtyZXR1cm4gdGhpc30scGxvdDpmdW5jdGlvbihsLHUseCx2KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09ND90aGlzLnBsb3QoW2wsdSx4LHZdKTp0aGlzLmFkZChcInBsb3RcIixuZXcodGhpcy50YXJnZXQoKSkubW9ycGhBcnJheShsKSl9fSksdC5Cb3g9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsLHUseCx2KXtpZighKFUobCkhPT1cIm9iamVjdFwifHxsIGluc3RhbmNlb2YgdC5FbGVtZW50KSlyZXR1cm4gdC5Cb3guY2FsbCh0aGlzLGwubGVmdCE9bnVsbD9sLmxlZnQ6bC54LGwudG9wIT1udWxsP2wudG9wOmwueSxsLndpZHRoLGwuaGVpZ2h0KTt2YXIgazthcmd1bWVudHMubGVuZ3RoPT00JiYodGhpcy54PWwsdGhpcy55PXUsdGhpcy53aWR0aD14LHRoaXMuaGVpZ2h0PXYpLChrPXRoaXMpLng9PW51bGwmJihrLng9MCxrLnk9MCxrLndpZHRoPTAsay5oZWlnaHQ9MCksay53PWsud2lkdGgsay5oPWsuaGVpZ2h0LGsueDI9ay54K2sud2lkdGgsay55Mj1rLnkray5oZWlnaHQsay5jeD1rLngray53aWR0aC8yLGsuY3k9ay55K2suaGVpZ2h0LzJ9fSksdC5CQm94PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7aWYodC5Cb3guYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLGwgaW5zdGFuY2VvZiB0LkVsZW1lbnQpe3ZhciB1O3RyeXtpZighZS5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMpe2Zvcih2YXIgeD1sLm5vZGU7eC5wYXJlbnROb2RlOyl4PXgucGFyZW50Tm9kZTtpZih4IT1lKXRocm93IG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGluIHRoZSBkb21cIil9dT1sLm5vZGUuZ2V0QkJveCgpfWNhdGNoe2lmKGwgaW5zdGFuY2VvZiB0LlNoYXBlKXt0LnBhcnNlci5kcmF3fHx0LnByZXBhcmUoKTt2YXIgdj1sLmNsb25lKHQucGFyc2VyLmRyYXcuaW5zdGFuY2UpLnNob3coKTt2JiZ2Lm5vZGUmJnR5cGVvZiB2Lm5vZGUuZ2V0QkJveD09XCJmdW5jdGlvblwiJiYodT12Lm5vZGUuZ2V0QkJveCgpKSx2JiZ0eXBlb2Ygdi5yZW1vdmU9PVwiZnVuY3Rpb25cIiYmdi5yZW1vdmUoKX1lbHNlIHU9e3g6bC5ub2RlLmNsaWVudExlZnQseTpsLm5vZGUuY2xpZW50VG9wLHdpZHRoOmwubm9kZS5jbGllbnRXaWR0aCxoZWlnaHQ6bC5ub2RlLmNsaWVudEhlaWdodH19dC5Cb3guY2FsbCh0aGlzLHUpfX0saW5oZXJpdDp0LkJveCxwYXJlbnQ6dC5FbGVtZW50LGNvbnN0cnVjdDp7YmJveDpmdW5jdGlvbigpe3JldHVybiBuZXcgdC5CQm94KHRoaXMpfX19KSx0LkJCb3gucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQuQkJveCx0Lk1hdHJpeD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3ZhciB1PWYoWzEsMCwwLDEsMCwwXSk7bD1sPT09bnVsbD91OmwgaW5zdGFuY2VvZiB0LkVsZW1lbnQ/bC5tYXRyaXhpZnkoKTp0eXBlb2YgbD09XCJzdHJpbmdcIj9mKGwuc3BsaXQodC5yZWdleC5kZWxpbWl0ZXIpLm1hcChwYXJzZUZsb2F0KSk6YXJndW1lbnRzLmxlbmd0aD09Nj9mKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk6QXJyYXkuaXNBcnJheShsKT9mKGwpOmwmJlUobCk9PT1cIm9iamVjdFwiP2w6dTtmb3IodmFyIHg9dy5sZW5ndGgtMTt4Pj0wOy0teCl0aGlzW3dbeF1dPWxbd1t4XV0hPW51bGw/bFt3W3hdXTp1W3dbeF1dfSxleHRlbmQ6e2V4dHJhY3Q6ZnVuY3Rpb24oKXt2YXIgbD1wKHRoaXMsMCwxKTtwKHRoaXMsMSwwKTt2YXIgdT0xODAvTWF0aC5QSSpNYXRoLmF0YW4yKGwueSxsLngpLTkwO3JldHVybnt4OnRoaXMuZSx5OnRoaXMuZix0cmFuc2Zvcm1lZFg6KHRoaXMuZSpNYXRoLmNvcyh1Kk1hdGguUEkvMTgwKSt0aGlzLmYqTWF0aC5zaW4odSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmEqdGhpcy5hK3RoaXMuYip0aGlzLmIpLHRyYW5zZm9ybWVkWToodGhpcy5mKk1hdGguY29zKHUqTWF0aC5QSS8xODApK3RoaXMuZSpNYXRoLnNpbigtdSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmMqdGhpcy5jK3RoaXMuZCp0aGlzLmQpLHJvdGF0aW9uOnUsYTp0aGlzLmEsYjp0aGlzLmIsYzp0aGlzLmMsZDp0aGlzLmQsZTp0aGlzLmUsZjp0aGlzLmYsbWF0cml4Om5ldyB0Lk1hdHJpeCh0aGlzKX19LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0Lk1hdHJpeCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IHQuTWF0cml4KGwpLHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKGwpe3JldHVybiBuZXcgdC5NYXRyaXgodGhpcy5uYXRpdmUoKS5tdWx0aXBseShmdW5jdGlvbih1KXtyZXR1cm4gdSBpbnN0YW5jZW9mIHQuTWF0cml4fHwodT1uZXcgdC5NYXRyaXgodSkpLHV9KGwpLm5hdGl2ZSgpKSl9LGludmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuTWF0cml4KHRoaXMubmF0aXZlKCkuaW52ZXJzZSgpKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIG5ldyB0Lk1hdHJpeCh0aGlzLm5hdGl2ZSgpLnRyYW5zbGF0ZShsfHwwLHV8fDApKX0sbmF0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBsPXQucGFyc2VyLm5hdGl2ZS5jcmVhdGVTVkdNYXRyaXgoKSx1PXcubGVuZ3RoLTE7dT49MDt1LS0pbFt3W3VdXT10aGlzW3dbdV1dO3JldHVybiBsfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwibWF0cml4KFwiK20odGhpcy5hKStcIixcIittKHRoaXMuYikrXCIsXCIrbSh0aGlzLmMpK1wiLFwiK20odGhpcy5kKStcIixcIittKHRoaXMuZSkrXCIsXCIrbSh0aGlzLmYpK1wiKVwifX0scGFyZW50OnQuRWxlbWVudCxjb25zdHJ1Y3Q6e2N0bTpmdW5jdGlvbigpe3JldHVybiBuZXcgdC5NYXRyaXgodGhpcy5ub2RlLmdldENUTSgpKX0sc2NyZWVuQ1RNOmZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIHQuTmVzdGVkKXt2YXIgbD10aGlzLnJlY3QoMSwxKSx1PWwubm9kZS5nZXRTY3JlZW5DVE0oKTtyZXR1cm4gbC5yZW1vdmUoKSxuZXcgdC5NYXRyaXgodSl9cmV0dXJuIG5ldyB0Lk1hdHJpeCh0aGlzLm5vZGUuZ2V0U2NyZWVuQ1RNKCkpfX19KSx0LlBvaW50PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCx1KXt2YXIgeDt4PUFycmF5LmlzQXJyYXkobCk/e3g6bFswXSx5OmxbMV19OlUobCk9PT1cIm9iamVjdFwiP3t4OmwueCx5OmwueX06bCE9bnVsbD97eDpsLHk6dT8/bH06e3g6MCx5OjB9LHRoaXMueD14LngsdGhpcy55PXgueX0sZXh0ZW5kOntjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdC5Qb2ludCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgdC5Qb2ludChsLHUpLHRoaXN9fX0pLHQuZXh0ZW5kKHQuRWxlbWVudCx7cG9pbnQ6ZnVuY3Rpb24obCx1KXtyZXR1cm4gbmV3IHQuUG9pbnQobCx1KS50cmFuc2Zvcm0odGhpcy5zY3JlZW5DVE0oKS5pbnZlcnNlKCkpfX0pLHQuZXh0ZW5kKHQuRWxlbWVudCx7YXR0cjpmdW5jdGlvbihsLHUseCl7aWYobD09bnVsbCl7Zm9yKGw9e30seD0odT10aGlzLm5vZGUuYXR0cmlidXRlcykubGVuZ3RoLTE7eD49MDt4LS0pbFt1W3hdLm5vZGVOYW1lXT10LnJlZ2V4LmlzTnVtYmVyLnRlc3QodVt4XS5ub2RlVmFsdWUpP3BhcnNlRmxvYXQodVt4XS5ub2RlVmFsdWUpOnVbeF0ubm9kZVZhbHVlO3JldHVybiBsfWlmKFUobCk9PT1cIm9iamVjdFwiKWZvcih2YXIgdiBpbiBsKXRoaXMuYXR0cih2LGxbdl0pO2Vsc2UgaWYodT09PW51bGwpdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZShsKTtlbHNle2lmKHU9PW51bGwpcmV0dXJuKHU9dGhpcy5ub2RlLmdldEF0dHJpYnV0ZShsKSk9PW51bGw/dC5kZWZhdWx0cy5hdHRyc1tsXTp0LnJlZ2V4LmlzTnVtYmVyLnRlc3QodSk/cGFyc2VGbG9hdCh1KTp1O2w9PVwic3Ryb2tlLXdpZHRoXCI/dGhpcy5hdHRyKFwic3Ryb2tlXCIscGFyc2VGbG9hdCh1KT4wP3RoaXMuX3N0cm9rZTpudWxsKTpsPT1cInN0cm9rZVwiJiYodGhpcy5fc3Ryb2tlPXUpLGwhPVwiZmlsbFwiJiZsIT1cInN0cm9rZVwifHwodC5yZWdleC5pc0ltYWdlLnRlc3QodSkmJih1PXRoaXMuZG9jKCkuZGVmcygpLmltYWdlKHUsMCwwKSksdSBpbnN0YW5jZW9mIHQuSW1hZ2UmJih1PXRoaXMuZG9jKCkuZGVmcygpLnBhdHRlcm4oMCwwLGZ1bmN0aW9uKCl7dGhpcy5hZGQodSl9KSkpLHR5cGVvZiB1PT1cIm51bWJlclwiP3U9bmV3IHQuTnVtYmVyKHUpOnQuQ29sb3IuaXNDb2xvcih1KT91PW5ldyB0LkNvbG9yKHUpOkFycmF5LmlzQXJyYXkodSkmJih1PW5ldyB0LkFycmF5KHUpKSxsPT1cImxlYWRpbmdcIj90aGlzLmxlYWRpbmcmJnRoaXMubGVhZGluZyh1KTp0eXBlb2YgeD09XCJzdHJpbmdcIj90aGlzLm5vZGUuc2V0QXR0cmlidXRlTlMoeCxsLHUudG9TdHJpbmcoKSk6dGhpcy5ub2RlLnNldEF0dHJpYnV0ZShsLHUudG9TdHJpbmcoKSksIXRoaXMucmVidWlsZHx8bCE9XCJmb250LXNpemVcIiYmbCE9XCJ4XCJ8fHRoaXMucmVidWlsZChsLHUpfXJldHVybiB0aGlzfX0pLHQuZXh0ZW5kKHQuRWxlbWVudCx7dHJhbnNmb3JtOmZ1bmN0aW9uKGwsdSl7dmFyIHg7cmV0dXJuIFUobCkhPT1cIm9iamVjdFwiPyh4PW5ldyB0Lk1hdHJpeCh0aGlzKS5leHRyYWN0KCksdHlwZW9mIGw9PVwic3RyaW5nXCI/eFtsXTp4KTooeD1uZXcgdC5NYXRyaXgodGhpcyksdT0hIXV8fCEhbC5yZWxhdGl2ZSxsLmEhPW51bGwmJih4PXU/eC5tdWx0aXBseShuZXcgdC5NYXRyaXgobCkpOm5ldyB0Lk1hdHJpeChsKSksdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIseCkpfX0pLHQuZXh0ZW5kKHQuRWxlbWVudCx7dW50cmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbnVsbCl9LG1hdHJpeGlmeTpmdW5jdGlvbigpe3JldHVybih0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIil8fFwiXCIpLnNwbGl0KHQucmVnZXgudHJhbnNmb3Jtcykuc2xpY2UoMCwtMSkubWFwKGZ1bmN0aW9uKGwpe3ZhciB1PWwudHJpbSgpLnNwbGl0KFwiKFwiKTtyZXR1cm5bdVswXSx1WzFdLnNwbGl0KHQucmVnZXguZGVsaW1pdGVyKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHBhcnNlRmxvYXQoeCl9KV19KS5yZWR1Y2UoZnVuY3Rpb24obCx1KXtyZXR1cm4gdVswXT09XCJtYXRyaXhcIj9sLm11bHRpcGx5KGYodVsxXSkpOmxbdVswXV0uYXBwbHkobCx1WzFdKX0sbmV3IHQuTWF0cml4KX0sdG9QYXJlbnQ6ZnVuY3Rpb24obCl7aWYodGhpcz09bClyZXR1cm4gdGhpczt2YXIgdT10aGlzLnNjcmVlbkNUTSgpLHg9bC5zY3JlZW5DVE0oKS5pbnZlcnNlKCk7cmV0dXJuIHRoaXMuYWRkVG8obCkudW50cmFuc2Zvcm0oKS50cmFuc2Zvcm0oeC5tdWx0aXBseSh1KSksdGhpc30sdG9Eb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1BhcmVudCh0aGlzLmRvYygpKX19KSx0LlRyYW5zZm9ybWF0aW9uPXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCx1KXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJnR5cGVvZiB1IT1cImJvb2xlYW5cIilyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtpZihBcnJheS5pc0FycmF5KGwpKWZvcih2YXIgeD0wLHY9dGhpcy5hcmd1bWVudHMubGVuZ3RoO3g8djsrK3gpdGhpc1t0aGlzLmFyZ3VtZW50c1t4XV09bFt4XTtlbHNlIGlmKGwmJlUobCk9PT1cIm9iamVjdFwiKWZvcih4PTAsdj10aGlzLmFyZ3VtZW50cy5sZW5ndGg7eDx2OysreCl0aGlzW3RoaXMuYXJndW1lbnRzW3hdXT1sW3RoaXMuYXJndW1lbnRzW3hdXTt0aGlzLmludmVyc2VkPSExLHU9PT0hMCYmKHRoaXMuaW52ZXJzZWQ9ITApfX0pLHQuVHJhbnNsYXRlPXQuaW52ZW50KHtwYXJlbnQ6dC5NYXRyaXgsaW5oZXJpdDp0LlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbihsLHUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJ0cmFuc2Zvcm1lZFhcIixcInRyYW5zZm9ybWVkWVwiXSxtZXRob2Q6XCJ0cmFuc2xhdGVcIn19KSx0LmV4dGVuZCh0LkVsZW1lbnQse3N0eWxlOmZ1bmN0aW9uKGwsdSl7aWYoYXJndW1lbnRzLmxlbmd0aD09MClyZXR1cm4gdGhpcy5ub2RlLnN0eWxlLmNzc1RleHR8fFwiXCI7aWYoYXJndW1lbnRzLmxlbmd0aDwyKWlmKFUobCk9PT1cIm9iamVjdFwiKWZvcih2YXIgeCBpbiBsKXRoaXMuc3R5bGUoeCxsW3hdKTtlbHNle2lmKCF0LnJlZ2V4LmlzQ3NzLnRlc3QobCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtoKGwpXTtmb3IobD1sLnNwbGl0KC9cXHMqO1xccyovKS5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuISF2fSkubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2LnNwbGl0KC9cXHMqOlxccyovKX0pO3U9bC5wb3AoKTspdGhpcy5zdHlsZSh1WzBdLHVbMV0pfWVsc2UgdGhpcy5ub2RlLnN0eWxlW2gobCldPXU9PT1udWxsfHx0LnJlZ2V4LmlzQmxhbmsudGVzdCh1KT9cIlwiOnU7cmV0dXJuIHRoaXN9fSksdC5QYXJlbnQ9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxsKX0saW5oZXJpdDp0LkVsZW1lbnQsZXh0ZW5kOntjaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiB0LnV0aWxzLm1hcCh0LnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHRoaXMubm9kZS5jaGlsZE5vZGVzKSxmdW5jdGlvbihsKXtyZXR1cm4gdC5hZG9wdChsKX0pfSxhZGQ6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdT09bnVsbD90aGlzLm5vZGUuYXBwZW5kQ2hpbGQobC5ub2RlKTpsLm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW3VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKGwubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1t1XSksdGhpc30scHV0OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuYWRkKGwsdSksbH0saGFzOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmluZGV4KGwpPj0wfSxpbmRleDpmdW5jdGlvbihsKXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKGwubm9kZSl9LGdldDpmdW5jdGlvbihsKXtyZXR1cm4gdC5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1tsXSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbihsLHUpe2Zvcih2YXIgeD10aGlzLmNoaWxkcmVuKCksdj0wLGs9eC5sZW5ndGg7djxrO3YrKyl4W3ZdaW5zdGFuY2VvZiB0LkVsZW1lbnQmJmwuYXBwbHkoeFt2XSxbdix4XSksdSYmeFt2XWluc3RhbmNlb2YgdC5Db250YWluZXImJnhbdl0uZWFjaChsLHUpO3JldHVybiB0aGlzfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQobC5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyx0aGlzfSxkZWZzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jKCkuZGVmcygpfX19KSx0LmV4dGVuZCh0LlBhcmVudCx7dW5ncm91cDpmdW5jdGlvbihsLHUpe3JldHVybiB1PT09MHx8dGhpcyBpbnN0YW5jZW9mIHQuRGVmc3x8dGhpcy5ub2RlPT10LnBhcnNlci5kcmF3fHwobD1sfHwodGhpcyBpbnN0YW5jZW9mIHQuRG9jP3RoaXM6dGhpcy5wYXJlbnQodC5QYXJlbnQpKSx1PXV8fDEvMCx0aGlzLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHQuRGVmcz90aGlzOnRoaXMgaW5zdGFuY2VvZiB0LlBhcmVudD90aGlzLnVuZ3JvdXAobCx1LTEpOnRoaXMudG9QYXJlbnQobCl9KSx0aGlzLm5vZGUuZmlyc3RDaGlsZHx8dGhpcy5yZW1vdmUoKSksdGhpc30sZmxhdHRlbjpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLnVuZ3JvdXAobCx1KX19KSx0LkNvbnRhaW5lcj10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGwpfSxpbmhlcml0OnQuUGFyZW50fSksdC5WaWV3Qm94PXQuaW52ZW50KHtwYXJlbnQ6dC5Db250YWluZXIsY29uc3RydWN0Ont9fSksW1wiY2xpY2tcIixcImRibGNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNldXBcIixcIm1vdXNlb3ZlclwiLFwibW91c2VvdXRcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJ0b3VjaGVuZFwiLFwidG91Y2hjYW5jZWxcIl0uZm9yRWFjaChmdW5jdGlvbihsKXt0LkVsZW1lbnQucHJvdG90eXBlW2xdPWZ1bmN0aW9uKHUpe3JldHVybiB0Lm9uKHRoaXMubm9kZSxsLHUpLHRoaXN9fSksdC5saXN0ZW5lcnM9W10sdC5oYW5kbGVyTWFwPVtdLHQubGlzdGVuZXJJZD0wLHQub249ZnVuY3Rpb24obCx1LHgsdixrKXt2YXIgUz14LmJpbmQodnx8bC5pbnN0YW5jZXx8bCksQz0odC5oYW5kbGVyTWFwLmluZGV4T2YobCkrMXx8dC5oYW5kbGVyTWFwLnB1c2gobCkpLTEsTD11LnNwbGl0KFwiLlwiKVswXSxJPXUuc3BsaXQoXCIuXCIpWzFdfHxcIipcIjt0Lmxpc3RlbmVyc1tDXT10Lmxpc3RlbmVyc1tDXXx8e30sdC5saXN0ZW5lcnNbQ11bTF09dC5saXN0ZW5lcnNbQ11bTF18fHt9LHQubGlzdGVuZXJzW0NdW0xdW0ldPXQubGlzdGVuZXJzW0NdW0xdW0ldfHx7fSx4Ll9zdmdqc0xpc3RlbmVySWR8fCh4Ll9zdmdqc0xpc3RlbmVySWQ9Kyt0Lmxpc3RlbmVySWQpLHQubGlzdGVuZXJzW0NdW0xdW0ldW3guX3N2Z2pzTGlzdGVuZXJJZF09UyxsLmFkZEV2ZW50TGlzdGVuZXIoTCxTLGt8fHtwYXNzaXZlOiEwfSl9LHQub2ZmPWZ1bmN0aW9uKGwsdSx4KXt2YXIgdj10LmhhbmRsZXJNYXAuaW5kZXhPZihsKSxrPXUmJnUuc3BsaXQoXCIuXCIpWzBdLFM9dSYmdS5zcGxpdChcIi5cIilbMV0sQz1cIlwiO2lmKHYhPS0xKWlmKHgpe2lmKHR5cGVvZiB4PT1cImZ1bmN0aW9uXCImJih4PXguX3N2Z2pzTGlzdGVuZXJJZCksIXgpcmV0dXJuO3QubGlzdGVuZXJzW3ZdW2tdJiZ0Lmxpc3RlbmVyc1t2XVtrXVtTfHxcIipcIl0mJihsLnJlbW92ZUV2ZW50TGlzdGVuZXIoayx0Lmxpc3RlbmVyc1t2XVtrXVtTfHxcIipcIl1beF0sITEpLGRlbGV0ZSB0Lmxpc3RlbmVyc1t2XVtrXVtTfHxcIipcIl1beF0pfWVsc2UgaWYoUyYmayl7aWYodC5saXN0ZW5lcnNbdl1ba10mJnQubGlzdGVuZXJzW3ZdW2tdW1NdKXtmb3IodmFyIEwgaW4gdC5saXN0ZW5lcnNbdl1ba11bU10pdC5vZmYobCxbayxTXS5qb2luKFwiLlwiKSxMKTtkZWxldGUgdC5saXN0ZW5lcnNbdl1ba11bU119fWVsc2UgaWYoUylmb3IodmFyIEkgaW4gdC5saXN0ZW5lcnNbdl0pZm9yKHZhciBDIGluIHQubGlzdGVuZXJzW3ZdW0ldKVM9PT1DJiZ0Lm9mZihsLFtJLFNdLmpvaW4oXCIuXCIpKTtlbHNlIGlmKGspe2lmKHQubGlzdGVuZXJzW3ZdW2tdKXtmb3IodmFyIEMgaW4gdC5saXN0ZW5lcnNbdl1ba10pdC5vZmYobCxbayxDXS5qb2luKFwiLlwiKSk7ZGVsZXRlIHQubGlzdGVuZXJzW3ZdW2tdfX1lbHNle2Zvcih2YXIgSSBpbiB0Lmxpc3RlbmVyc1t2XSl0Lm9mZihsLEkpO2RlbGV0ZSB0Lmxpc3RlbmVyc1t2XSxkZWxldGUgdC5oYW5kbGVyTWFwW3ZdfX0sdC5leHRlbmQodC5FbGVtZW50LHtvbjpmdW5jdGlvbihsLHUseCx2KXtyZXR1cm4gdC5vbih0aGlzLm5vZGUsbCx1LHgsdiksdGhpc30sb2ZmOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHQub2ZmKHRoaXMubm9kZSxsLHUpLHRoaXN9LGZpcmU6ZnVuY3Rpb24obCx1KXtyZXR1cm4gbCBpbnN0YW5jZW9mIHkuRXZlbnQ/dGhpcy5ub2RlLmRpc3BhdGNoRXZlbnQobCk6dGhpcy5ub2RlLmRpc3BhdGNoRXZlbnQobD1uZXcgdC5DdXN0b21FdmVudChsLHtkZXRhaWw6dSxjYW5jZWxhYmxlOiEwfSkpLHRoaXMuX2V2ZW50PWwsdGhpc30sZXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnR9fSksdC5EZWZzPXQuaW52ZW50KHtjcmVhdGU6XCJkZWZzXCIsaW5oZXJpdDp0LkNvbnRhaW5lcn0pLHQuRz10LmludmVudCh7Y3JlYXRlOlwiZ1wiLGluaGVyaXQ6dC5Db250YWluZXIsZXh0ZW5kOnt4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMudHJhbnNmb3JtKFwieFwiKTp0aGlzLnRyYW5zZm9ybSh7eDpsLXRoaXMueCgpfSwhMCl9fSxjb25zdHJ1Y3Q6e2dyb3VwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LkcpfX19KSx0LkRvYz10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe2wmJigobD10eXBlb2YgbD09XCJzdHJpbmdcIj9lLmdldEVsZW1lbnRCeUlkKGwpOmwpLm5vZGVOYW1lPT1cInN2Z1wiP3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGwpOih0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0LmNyZWF0ZShcInN2Z1wiKSksbC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUpLHRoaXMuc2l6ZShcIjEwMCVcIixcIjEwMCVcIikpLHRoaXMubmFtZXNwYWNlKCkuZGVmcygpKX0saW5oZXJpdDp0LkNvbnRhaW5lcixleHRlbmQ6e25hbWVzcGFjZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoe3htbG5zOnQubnMsdmVyc2lvbjpcIjEuMVwifSkuYXR0cihcInhtbG5zOnhsaW5rXCIsdC54bGluayx0LnhtbG5zKS5hdHRyKFwieG1sbnM6c3ZnanNcIix0LnN2Z2pzLHQueG1sbnMpfSxkZWZzOmZ1bmN0aW9uKCl7dmFyIGw7cmV0dXJuIHRoaXMuX2RlZnN8fCgobD10aGlzLm5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkZWZzXCIpWzBdKT90aGlzLl9kZWZzPXQuYWRvcHQobCk6dGhpcy5fZGVmcz1uZXcgdC5EZWZzLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9kZWZzLm5vZGUpKSx0aGlzLl9kZWZzfSxwYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLnBhcmVudE5vZGUmJnRoaXMubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lIT1cIiNkb2N1bWVudFwiP3RoaXMubm9kZS5wYXJlbnROb2RlOm51bGx9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdC5wYXJzZXIuZHJhdyYmIXQucGFyc2VyLmRyYXcucGFyZW50Tm9kZSYmdGhpcy5ub2RlLmFwcGVuZENoaWxkKHQucGFyc2VyLmRyYXcpLHRoaXN9LGNsb25lOmZ1bmN0aW9uKGwpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgdT10aGlzLm5vZGUseD1iKHUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGw/KGwubm9kZXx8bCkuYXBwZW5kQ2hpbGQoeC5ub2RlKTp1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHgubm9kZSx1Lm5leHRTaWJsaW5nKSx4fX19KSx0LmV4dGVuZCh0LkVsZW1lbnQse30pLHQuR3JhZGllbnQ9dC5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbihsKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0LmNyZWF0ZShsK1wiR3JhZGllbnRcIikpLHRoaXMudHlwZT1sfSxpbmhlcml0OnQuQ29udGFpbmVyLGV4dGVuZDp7YXQ6ZnVuY3Rpb24obCx1LHgpe3JldHVybiB0aGlzLnB1dChuZXcgdC5TdG9wKS51cGRhdGUobCx1LHgpfSx1cGRhdGU6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuY2xlYXIoKSx0eXBlb2YgbD09XCJmdW5jdGlvblwiJiZsLmNhbGwodGhpcyx0aGlzKSx0aGlzfSxmaWxsOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuaWQoKStcIilcIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsKCl9LGF0dHI6ZnVuY3Rpb24obCx1LHgpe3JldHVybiBsPT1cInRyYW5zZm9ybVwiJiYobD1cImdyYWRpZW50VHJhbnNmb3JtXCIpLHQuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyxsLHUseCl9fSxjb25zdHJ1Y3Q6e2dyYWRpZW50OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuZGVmcygpLmdyYWRpZW50KGwsdSl9fX0pLHQuZXh0ZW5kKHQuR3JhZGllbnQsdC5GWCx7ZnJvbTpmdW5jdGlvbihsLHUpe3JldHVybih0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU9PVwicmFkaWFsXCI/dGhpcy5hdHRyKHtmeDpuZXcgdC5OdW1iZXIobCksZnk6bmV3IHQuTnVtYmVyKHUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgdC5OdW1iZXIobCkseTE6bmV3IHQuTnVtYmVyKHUpfSl9LHRvOmZ1bmN0aW9uKGwsdSl7cmV0dXJuKHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT09XCJyYWRpYWxcIj90aGlzLmF0dHIoe2N4Om5ldyB0Lk51bWJlcihsKSxjeTpuZXcgdC5OdW1iZXIodSl9KTp0aGlzLmF0dHIoe3gyOm5ldyB0Lk51bWJlcihsKSx5MjpuZXcgdC5OdW1iZXIodSl9KX19KSx0LmV4dGVuZCh0LkRlZnMse2dyYWRpZW50OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LkdyYWRpZW50KGwpKS51cGRhdGUodSl9fSksdC5TdG9wPXQuaW52ZW50KHtjcmVhdGU6XCJzdG9wXCIsaW5oZXJpdDp0LkVsZW1lbnQsZXh0ZW5kOnt1cGRhdGU6ZnVuY3Rpb24obCl7cmV0dXJuKHR5cGVvZiBsPT1cIm51bWJlclwifHxsIGluc3RhbmNlb2YgdC5OdW1iZXIpJiYobD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxsLm9wYWNpdHkhPW51bGwmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLGwub3BhY2l0eSksbC5jb2xvciE9bnVsbCYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLGwuY29sb3IpLGwub2Zmc2V0IT1udWxsJiZ0aGlzLmF0dHIoXCJvZmZzZXRcIixuZXcgdC5OdW1iZXIobC5vZmZzZXQpKSx0aGlzfX19KSx0LlBhdHRlcm49dC5pbnZlbnQoe2NyZWF0ZTpcInBhdHRlcm5cIixpbmhlcml0OnQuQ29udGFpbmVyLGV4dGVuZDp7ZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHVwZGF0ZTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5jbGVhcigpLHR5cGVvZiBsPT1cImZ1bmN0aW9uXCImJmwuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gbD09XCJ0cmFuc2Zvcm1cIiYmKGw9XCJwYXR0ZXJuVHJhbnNmb3JtXCIpLHQuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyxsLHUseCl9fSxjb25zdHJ1Y3Q6e3BhdHRlcm46ZnVuY3Rpb24obCx1LHgpe3JldHVybiB0aGlzLmRlZnMoKS5wYXR0ZXJuKGwsdSx4KX19fSksdC5leHRlbmQodC5EZWZzLHtwYXR0ZXJuOmZ1bmN0aW9uKGwsdSx4KXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuUGF0dGVybikudXBkYXRlKHgpLmF0dHIoe3g6MCx5OjAsd2lkdGg6bCxoZWlnaHQ6dSxwYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwifSl9fSksdC5TaGFwZT10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKGwpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGwpfSxpbmhlcml0OnQuRWxlbWVudH0pLHQuU3ltYm9sPXQuaW52ZW50KHtjcmVhdGU6XCJzeW1ib2xcIixpbmhlcml0OnQuQ29udGFpbmVyLGNvbnN0cnVjdDp7c3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlN5bWJvbCl9fX0pLHQuVXNlPXQuaW52ZW50KHtjcmVhdGU6XCJ1c2VcIixpbmhlcml0OnQuU2hhcGUsZXh0ZW5kOntlbGVtZW50OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuYXR0cihcImhyZWZcIiwodXx8XCJcIikrXCIjXCIrbCx0LnhsaW5rKX19LGNvbnN0cnVjdDp7dXNlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlVzZSkuZWxlbWVudChsLHUpfX19KSx0LlJlY3Q9dC5pbnZlbnQoe2NyZWF0ZTpcInJlY3RcIixpbmhlcml0OnQuU2hhcGUsY29uc3RydWN0OntyZWN0OmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlJlY3QpLnNpemUobCx1KX19fSksdC5DaXJjbGU9dC5pbnZlbnQoe2NyZWF0ZTpcImNpcmNsZVwiLGluaGVyaXQ6dC5TaGFwZSxjb25zdHJ1Y3Q6e2NpcmNsZTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuQ2lyY2xlKS5yeChuZXcgdC5OdW1iZXIobCkuZGl2aWRlKDIpKS5tb3ZlKDAsMCl9fX0pLHQuZXh0ZW5kKHQuQ2lyY2xlLHQuRlgse3J4OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJyXCIsbCl9LHJ5OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnJ4KGwpfX0pLHQuRWxsaXBzZT10LmludmVudCh7Y3JlYXRlOlwiZWxsaXBzZVwiLGluaGVyaXQ6dC5TaGFwZSxjb25zdHJ1Y3Q6e2VsbGlwc2U6ZnVuY3Rpb24obCx1KXtyZXR1cm4gdGhpcy5wdXQobmV3IHQuRWxsaXBzZSkuc2l6ZShsLHUpLm1vdmUoMCwwKX19fSksdC5leHRlbmQodC5FbGxpcHNlLHQuUmVjdCx0LkZYLHtyeDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwicnhcIixsKX0scnk6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcInJ5XCIsbCl9fSksdC5leHRlbmQodC5DaXJjbGUsdC5FbGxpcHNlLHt4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuY3goKS10aGlzLnJ4KCk6dGhpcy5jeChsK3RoaXMucngoKSl9LHk6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5jeSgpLXRoaXMucnkoKTp0aGlzLmN5KGwrdGhpcy5yeSgpKX0sY3g6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5hdHRyKFwiY3hcIik6dGhpcy5hdHRyKFwiY3hcIixsKX0sY3k6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5hdHRyKFwiY3lcIik6dGhpcy5hdHRyKFwiY3lcIixsKX0sd2lkdGg6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/Mip0aGlzLnJ4KCk6dGhpcy5yeChuZXcgdC5OdW1iZXIobCkuZGl2aWRlKDIpKX0saGVpZ2h0OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsPzIqdGhpcy5yeSgpOnRoaXMucnkobmV3IHQuTnVtYmVyKGwpLmRpdmlkZSgyKSl9LHNpemU6ZnVuY3Rpb24obCx1KXt2YXIgeD1nKHRoaXMsbCx1KTtyZXR1cm4gdGhpcy5yeChuZXcgdC5OdW1iZXIoeC53aWR0aCkuZGl2aWRlKDIpKS5yeShuZXcgdC5OdW1iZXIoeC5oZWlnaHQpLmRpdmlkZSgyKSl9fSksdC5MaW5lPXQuaW52ZW50KHtjcmVhdGU6XCJsaW5lXCIsaW5oZXJpdDp0LlNoYXBlLGV4dGVuZDp7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuUG9pbnRBcnJheShbW3RoaXMuYXR0cihcIngxXCIpLHRoaXMuYXR0cihcInkxXCIpXSxbdGhpcy5hdHRyKFwieDJcIiksdGhpcy5hdHRyKFwieTJcIildXSl9LHBsb3Q6ZnVuY3Rpb24obCx1LHgsdil7cmV0dXJuIGw9PW51bGw/dGhpcy5hcnJheSgpOihsPXUhPT12b2lkIDA/e3gxOmwseTE6dSx4Mjp4LHkyOnZ9Om5ldyB0LlBvaW50QXJyYXkobCkudG9MaW5lKCksdGhpcy5hdHRyKGwpKX0sbW92ZTpmdW5jdGlvbihsLHUpe3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLm1vdmUobCx1KS50b0xpbmUoKSl9LHNpemU6ZnVuY3Rpb24obCx1KXt2YXIgeD1nKHRoaXMsbCx1KTtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5zaXplKHgud2lkdGgseC5oZWlnaHQpLnRvTGluZSgpKX19LGNvbnN0cnVjdDp7bGluZTpmdW5jdGlvbihsLHUseCx2KXtyZXR1cm4gdC5MaW5lLnByb3RvdHlwZS5wbG90LmFwcGx5KHRoaXMucHV0KG5ldyB0LkxpbmUpLGwhPW51bGw/W2wsdSx4LHZdOlswLDAsMCwwXSl9fX0pLHQuUG9seWxpbmU9dC5pbnZlbnQoe2NyZWF0ZTpcInBvbHlsaW5lXCIsaW5oZXJpdDp0LlNoYXBlLGNvbnN0cnVjdDp7cG9seWxpbmU6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlBvbHlsaW5lKS5wbG90KGx8fG5ldyB0LlBvaW50QXJyYXkpfX19KSx0LlBvbHlnb249dC5pbnZlbnQoe2NyZWF0ZTpcInBvbHlnb25cIixpbmhlcml0OnQuU2hhcGUsY29uc3RydWN0Ontwb2x5Z29uOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnB1dChuZXcgdC5Qb2x5Z29uKS5wbG90KGx8fG5ldyB0LlBvaW50QXJyYXkpfX19KSx0LmV4dGVuZCh0LlBvbHlsaW5lLHQuUG9seWdvbix7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgdC5Qb2ludEFycmF5KHRoaXMuYXR0cihcInBvaW50c1wiKSkpfSxwbG90OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcInBvaW50c1wiLHR5cGVvZiBsPT1cInN0cmluZ1wiP2w6dGhpcy5fYXJyYXk9bmV3IHQuUG9pbnRBcnJheShsKSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfSxtb3ZlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5tb3ZlKGwsdSkpfSxzaXplOmZ1bmN0aW9uKGwsdSl7dmFyIHg9Zyh0aGlzLGwsdSk7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5zaXplKHgud2lkdGgseC5oZWlnaHQpKX19KSx0LmV4dGVuZCh0LkxpbmUsdC5Qb2x5bGluZSx0LlBvbHlnb24se21vcnBoQXJyYXk6dC5Qb2ludEFycmF5LHg6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5iYm94KCkueDp0aGlzLm1vdmUobCx0aGlzLmJib3goKS55KX0seTpmdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD90aGlzLmJib3goKS55OnRoaXMubW92ZSh0aGlzLmJib3goKS54LGwpfSx3aWR0aDpmdW5jdGlvbihsKXt2YXIgdT10aGlzLmJib3goKTtyZXR1cm4gbD09bnVsbD91LndpZHRoOnRoaXMuc2l6ZShsLHUuaGVpZ2h0KX0saGVpZ2h0OmZ1bmN0aW9uKGwpe3ZhciB1PXRoaXMuYmJveCgpO3JldHVybiBsPT1udWxsP3UuaGVpZ2h0OnRoaXMuc2l6ZSh1LndpZHRoLGwpfX0pLHQuUGF0aD10LmludmVudCh7Y3JlYXRlOlwicGF0aFwiLGluaGVyaXQ6dC5TaGFwZSxleHRlbmQ6e21vcnBoQXJyYXk6dC5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgdC5QYXRoQXJyYXkodGhpcy5hdHRyKFwiZFwiKSkpfSxwbG90OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcImRcIix0eXBlb2YgbD09XCJzdHJpbmdcIj9sOnRoaXMuX2FycmF5PW5ldyB0LlBhdGhBcnJheShsKSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfX0sY29uc3RydWN0OntwYXRoOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnB1dChuZXcgdC5QYXRoKS5wbG90KGx8fG5ldyB0LlBhdGhBcnJheSl9fX0pLHQuSW1hZ2U9dC5pbnZlbnQoe2NyZWF0ZTpcImltYWdlXCIsaW5oZXJpdDp0LlNoYXBlLGV4dGVuZDp7bG9hZDpmdW5jdGlvbihsKXtpZighbClyZXR1cm4gdGhpczt2YXIgdT10aGlzLHg9bmV3IHkuSW1hZ2U7cmV0dXJuIHQub24oeCxcImxvYWRcIixmdW5jdGlvbigpe3Qub2ZmKHgpO3ZhciB2PXUucGFyZW50KHQuUGF0dGVybik7diE9PW51bGwmJih1LndpZHRoKCk9PTAmJnUuaGVpZ2h0KCk9PTAmJnUuc2l6ZSh4LndpZHRoLHguaGVpZ2h0KSx2JiZ2LndpZHRoKCk9PTAmJnYuaGVpZ2h0KCk9PTAmJnYuc2l6ZSh1LndpZHRoKCksdS5oZWlnaHQoKSksdHlwZW9mIHUuX2xvYWRlZD09XCJmdW5jdGlvblwiJiZ1Ll9sb2FkZWQuY2FsbCh1LHt3aWR0aDp4LndpZHRoLGhlaWdodDp4LmhlaWdodCxyYXRpbzp4LndpZHRoL3guaGVpZ2h0LHVybDpsfSkpfSksdC5vbih4LFwiZXJyb3JcIixmdW5jdGlvbih2KXt0Lm9mZih4KSx0eXBlb2YgdS5fZXJyb3I9PVwiZnVuY3Rpb25cIiYmdS5fZXJyb3IuY2FsbCh1LHYpfSksdGhpcy5hdHRyKFwiaHJlZlwiLHguc3JjPXRoaXMuc3JjPWwsdC54bGluayl9LGxvYWRlZDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fbG9hZGVkPWwsdGhpc30sZXJyb3I6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuX2Vycm9yPWwsdGhpc319LGNvbnN0cnVjdDp7aW1hZ2U6ZnVuY3Rpb24obCx1LHgpe3JldHVybiB0aGlzLnB1dChuZXcgdC5JbWFnZSkubG9hZChsKS5zaXplKHV8fDAseHx8dXx8MCl9fX0pLHQuVGV4dD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdC5jcmVhdGUoXCJ0ZXh0XCIpKSx0aGlzLmRvbS5sZWFkaW5nPW5ldyB0Lk51bWJlcigxLjMpLHRoaXMuX3JlYnVpbGQ9ITAsdGhpcy5fYnVpbGQ9ITEsdGhpcy5hdHRyKFwiZm9udC1mYW1pbHlcIix0LmRlZmF1bHRzLmF0dHJzW1wiZm9udC1mYW1pbHlcIl0pfSxpbmhlcml0OnQuU2hhcGUsZXh0ZW5kOnt4OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMuYXR0cihcInhcIik6dGhpcy5hdHRyKFwieFwiLGwpfSx0ZXh0OmZ1bmN0aW9uKGwpe2lmKGw9PT12b2lkIDApe2w9XCJcIjtmb3IodmFyIHU9dGhpcy5ub2RlLmNoaWxkTm9kZXMseD0wLHY9dS5sZW5ndGg7eDx2OysreCl4IT0wJiZ1W3hdLm5vZGVUeXBlIT0zJiZ0LmFkb3B0KHVbeF0pLmRvbS5uZXdMaW5lZD09MSYmKGwrPWBcbmApLGwrPXVbeF0udGV4dENvbnRlbnQ7cmV0dXJuIGx9aWYodGhpcy5jbGVhcigpLmJ1aWxkKCEwKSx0eXBlb2YgbD09XCJmdW5jdGlvblwiKWwuY2FsbCh0aGlzLHRoaXMpO2Vsc2V7eD0wO2Zvcih2YXIgaz0obD1sLnNwbGl0KGBcbmApKS5sZW5ndGg7eDxrO3grKyl0aGlzLnRzcGFuKGxbeF0pLm5ld0xpbmUoKX1yZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpfSxzaXplOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmF0dHIoXCJmb250LXNpemVcIixsKS5yZWJ1aWxkKCl9LGxlYWRpbmc6ZnVuY3Rpb24obCl7cmV0dXJuIGw9PW51bGw/dGhpcy5kb20ubGVhZGluZzoodGhpcy5kb20ubGVhZGluZz1uZXcgdC5OdW1iZXIobCksdGhpcy5yZWJ1aWxkKCkpfSxsaW5lczpmdW5jdGlvbigpe3ZhciBsPSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsdT10LnV0aWxzLm1hcCh0LnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKGwuY2hpbGROb2RlcyksZnVuY3Rpb24oeCl7cmV0dXJuIHQuYWRvcHQoeCl9KTtyZXR1cm4gbmV3IHQuU2V0KHUpfSxyZWJ1aWxkOmZ1bmN0aW9uKGwpe2lmKHR5cGVvZiBsPT1cImJvb2xlYW5cIiYmKHRoaXMuX3JlYnVpbGQ9bCksdGhpcy5fcmVidWlsZCl7dmFyIHU9dGhpcyx4PTAsdj10aGlzLmRvbS5sZWFkaW5nKm5ldyB0Lk51bWJlcih0aGlzLmF0dHIoXCJmb250LXNpemVcIikpO3RoaXMubGluZXMoKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5kb20ubmV3TGluZWQmJih1LnRleHRQYXRoKCl8fHRoaXMuYXR0cihcInhcIix1LmF0dHIoXCJ4XCIpKSx0aGlzLnRleHQoKT09YFxuYD94Kz12Oih0aGlzLmF0dHIoXCJkeVwiLHYreCkseD0wKSl9KSx0aGlzLmZpcmUoXCJyZWJ1aWxkXCIpfXJldHVybiB0aGlzfSxidWlsZDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fYnVpbGQ9ISFsLHRoaXN9LHNldERhdGE6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuZG9tPWwsdGhpcy5kb20ubGVhZGluZz1uZXcgdC5OdW1iZXIobC5sZWFkaW5nfHwxLjMpLHRoaXN9fSxjb25zdHJ1Y3Q6e3RleHQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMucHV0KG5ldyB0LlRleHQpLnRleHQobCl9LHBsYWluOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnB1dChuZXcgdC5UZXh0KS5wbGFpbihsKX19fSksdC5Uc3Bhbj10LmludmVudCh7Y3JlYXRlOlwidHNwYW5cIixpbmhlcml0OnQuU2hhcGUsZXh0ZW5kOnt0ZXh0OmZ1bmN0aW9uKGwpe3JldHVybiBsPT1udWxsP3RoaXMubm9kZS50ZXh0Q29udGVudCsodGhpcy5kb20ubmV3TGluZWQ/YFxuYDpcIlwiKToodHlwZW9mIGw9PVwiZnVuY3Rpb25cIj9sLmNhbGwodGhpcyx0aGlzKTp0aGlzLnBsYWluKGwpLHRoaXMpfSxkeDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwiZHhcIixsKX0sZHk6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuYXR0cihcImR5XCIsbCl9LG5ld0xpbmU6ZnVuY3Rpb24oKXt2YXIgbD10aGlzLnBhcmVudCh0LlRleHQpO3JldHVybiB0aGlzLmRvbS5uZXdMaW5lZD0hMCx0aGlzLmR5KGwuZG9tLmxlYWRpbmcqbC5hdHRyKFwiZm9udC1zaXplXCIpKS5hdHRyKFwieFwiLGwueCgpKX19fSksdC5leHRlbmQodC5UZXh0LHQuVHNwYW4se3BsYWluOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLl9idWlsZD09PSExJiZ0aGlzLmNsZWFyKCksdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5vZGUobCkpLHRoaXN9LHRzcGFuOmZ1bmN0aW9uKGwpe3ZhciB1PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUseD1uZXcgdC5Uc3BhbjtyZXR1cm4gdGhpcy5fYnVpbGQ9PT0hMSYmdGhpcy5jbGVhcigpLHUuYXBwZW5kQ2hpbGQoeC5ub2RlKSx4LnRleHQobCl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBsPSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGU7bC5oYXNDaGlsZE5vZGVzKCk7KWwucmVtb3ZlQ2hpbGQobC5sYXN0Q2hpbGQpO3JldHVybiB0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpfX0pLHQuVGV4dFBhdGg9dC5pbnZlbnQoe2NyZWF0ZTpcInRleHRQYXRoXCIsaW5oZXJpdDp0LlBhcmVudCxwYXJlbnQ6dC5UZXh0LGNvbnN0cnVjdDp7bW9ycGhBcnJheTp0LlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3ZhciBsPXRoaXMudHJhY2soKTtyZXR1cm4gbD9sLmFycmF5KCk6bnVsbH0scGxvdDpmdW5jdGlvbihsKXt2YXIgdT10aGlzLnRyYWNrKCkseD1udWxsO3JldHVybiB1JiYoeD11LnBsb3QobCkpLGw9PW51bGw/eDp0aGlzfSx0cmFjazpmdW5jdGlvbigpe3ZhciBsPXRoaXMudGV4dFBhdGgoKTtpZihsKXJldHVybiBsLnJlZmVyZW5jZShcImhyZWZcIil9LHRleHRQYXRoOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlLmZpcnN0Q2hpbGQmJnRoaXMubm9kZS5maXJzdENoaWxkLm5vZGVOYW1lPT1cInRleHRQYXRoXCIpcmV0dXJuIHQuYWRvcHQodGhpcy5ub2RlLmZpcnN0Q2hpbGQpfX19KSx0Lk5lc3RlZD10LmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdC5jcmVhdGUoXCJzdmdcIikpLHRoaXMuc3R5bGUoXCJvdmVyZmxvd1wiLFwidmlzaWJsZVwiKX0saW5oZXJpdDp0LkNvbnRhaW5lcixjb25zdHJ1Y3Q6e25lc3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgdC5OZXN0ZWQpfX19KTt2YXIgbj17c3Ryb2tlOltcImNvbG9yXCIsXCJ3aWR0aFwiLFwib3BhY2l0eVwiLFwibGluZWNhcFwiLFwibGluZWpvaW5cIixcIm1pdGVybGltaXRcIixcImRhc2hhcnJheVwiLFwiZGFzaG9mZnNldFwiXSxmaWxsOltcImNvbG9yXCIsXCJvcGFjaXR5XCIsXCJydWxlXCJdLHByZWZpeDpmdW5jdGlvbihsLHUpe3JldHVybiB1PT1cImNvbG9yXCI/bDpsK1wiLVwiK3V9fTtmdW5jdGlvbiBvKGwsdSx4LHYpe3JldHVybiB4K3YucmVwbGFjZSh0LnJlZ2V4LmRvdHMsXCIgLlwiKX1mdW5jdGlvbiBoKGwpe3JldHVybiBsLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHgudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIGMobCl7cmV0dXJuIGwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbC5zbGljZSgxKX1mdW5jdGlvbiBkKGwpe3ZhciB1PWwudG9TdHJpbmcoMTYpO3JldHVybiB1Lmxlbmd0aD09MT9cIjBcIit1OnV9ZnVuY3Rpb24gZyhsLHUseCl7aWYodT09bnVsbHx8eD09bnVsbCl7dmFyIHY9bC5iYm94KCk7dT09bnVsbD91PXYud2lkdGgvdi5oZWlnaHQqeDp4PT1udWxsJiYoeD12LmhlaWdodC92LndpZHRoKnUpfXJldHVybnt3aWR0aDp1LGhlaWdodDp4fX1mdW5jdGlvbiBwKGwsdSx4KXtyZXR1cm57eDp1KmwuYSt4KmwuYyswLHk6dSpsLmIreCpsLmQrMH19ZnVuY3Rpb24gZihsKXtyZXR1cm57YTpsWzBdLGI6bFsxXSxjOmxbMl0sZDpsWzNdLGU6bFs0XSxmOmxbNV19fWZ1bmN0aW9uIGIobCl7Zm9yKHZhciB1PWwuY2hpbGROb2Rlcy5sZW5ndGgtMTt1Pj0wO3UtLSlsLmNoaWxkTm9kZXNbdV1pbnN0YW5jZW9mIHkuU1ZHRWxlbWVudCYmYihsLmNoaWxkTm9kZXNbdV0pO3JldHVybiB0LmFkb3B0KGwpLmlkKHQuZWlkKGwubm9kZU5hbWUpKX1mdW5jdGlvbiBtKGwpe3JldHVybiBNYXRoLmFicyhsKT4xZS0zNz9sOjB9W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIHU9e307dVtsXT1mdW5jdGlvbih4KXtpZih4PT09dm9pZCAwKXJldHVybiB0aGlzO2lmKHR5cGVvZiB4PT1cInN0cmluZ1wifHx0LkNvbG9yLmlzUmdiKHgpfHx4JiZ0eXBlb2YgeC5maWxsPT1cImZ1bmN0aW9uXCIpdGhpcy5hdHRyKGwseCk7ZWxzZSBmb3IodmFyIHY9bltsXS5sZW5ndGgtMTt2Pj0wO3YtLSl4W25bbF1bdl1dIT1udWxsJiZ0aGlzLmF0dHIobi5wcmVmaXgobCxuW2xdW3ZdKSx4W25bbF1bdl1dKTtyZXR1cm4gdGhpc30sdC5leHRlbmQodC5FbGVtZW50LHQuRlgsdSl9KSx0LmV4dGVuZCh0LkVsZW1lbnQsdC5GWCx7dHJhbnNsYXRlOmZ1bmN0aW9uKGwsdSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHt4OmwseTp1fSl9LG1hdHJpeDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbmV3IHQuTWF0cml4KGFyZ3VtZW50cy5sZW5ndGg9PTY/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOmwpKX0sb3BhY2l0eTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5hdHRyKFwib3BhY2l0eVwiLGwpfSxkeDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy54KG5ldyB0Lk51bWJlcihsKS5wbHVzKHRoaXMgaW5zdGFuY2VvZiB0LkZYPzA6dGhpcy54KCkpLCEwKX0sZHk6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMueShuZXcgdC5OdW1iZXIobCkucGx1cyh0aGlzIGluc3RhbmNlb2YgdC5GWD8wOnRoaXMueSgpKSwhMCl9fSksdC5leHRlbmQodC5QYXRoLHtsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldFRvdGFsTGVuZ3RoKCl9LHBvaW50QXQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMubm9kZS5nZXRQb2ludEF0TGVuZ3RoKGwpfX0pLHQuU2V0PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7QXJyYXkuaXNBcnJheShsKT90aGlzLm1lbWJlcnM9bDp0aGlzLmNsZWFyKCl9LGV4dGVuZDp7YWRkOmZ1bmN0aW9uKCl7Zm9yKHZhciBsPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx1PTAseD1sLmxlbmd0aDt1PHg7dSsrKXRoaXMubWVtYmVycy5wdXNoKGxbdV0pO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24obCl7dmFyIHU9dGhpcy5pbmRleChsKTtyZXR1cm4gdT4tMSYmdGhpcy5tZW1iZXJzLnNwbGljZSh1LDEpLHRoaXN9LGVhY2g6ZnVuY3Rpb24obCl7Zm9yKHZhciB1PTAseD10aGlzLm1lbWJlcnMubGVuZ3RoO3U8eDt1KyspbC5hcHBseSh0aGlzLm1lbWJlcnNbdV0sW3UsdGhpcy5tZW1iZXJzXSk7cmV0dXJuIHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycz1bXSx0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzLmxlbmd0aH0saGFzOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmluZGV4KGwpPj0wfSxpbmRleDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5tZW1iZXJzLmluZGV4T2YobCl9LGdldDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5tZW1iZXJzW2xdfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm1lbWJlcnMubGVuZ3RoLTEpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVyc319LGNvbnN0cnVjdDp7c2V0OmZ1bmN0aW9uKGwpe3JldHVybiBuZXcgdC5TZXQobCl9fX0pLHQuRlguU2V0PXQuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24obCl7dGhpcy5zZXQ9bH19KSx0LlNldC5pbmhlcml0PWZ1bmN0aW9uKCl7dmFyIGw9W107Zm9yKHZhciB1IGluIHQuU2hhcGUucHJvdG90eXBlKXR5cGVvZiB0LlNoYXBlLnByb3RvdHlwZVt1XT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgdC5TZXQucHJvdG90eXBlW3VdIT1cImZ1bmN0aW9uXCImJmwucHVzaCh1KTtmb3IodmFyIHUgaW4gbC5mb3JFYWNoKGZ1bmN0aW9uKHYpe3QuU2V0LnByb3RvdHlwZVt2XT1mdW5jdGlvbigpe2Zvcih2YXIgaz0wLFM9dGhpcy5tZW1iZXJzLmxlbmd0aDtrPFM7aysrKXRoaXMubWVtYmVyc1trXSYmdHlwZW9mIHRoaXMubWVtYmVyc1trXVt2XT09XCJmdW5jdGlvblwiJiZ0aGlzLm1lbWJlcnNba11bdl0uYXBwbHkodGhpcy5tZW1iZXJzW2tdLGFyZ3VtZW50cyk7cmV0dXJuIHY9PVwiYW5pbWF0ZVwiP3RoaXMuZnh8fCh0aGlzLmZ4PW5ldyB0LkZYLlNldCh0aGlzKSk6dGhpc319KSxsPVtdLHQuRlgucHJvdG90eXBlKXR5cGVvZiB0LkZYLnByb3RvdHlwZVt1XT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgdC5GWC5TZXQucHJvdG90eXBlW3VdIT1cImZ1bmN0aW9uXCImJmwucHVzaCh1KTtsLmZvckVhY2goZnVuY3Rpb24oeCl7dC5GWC5TZXQucHJvdG90eXBlW3hdPWZ1bmN0aW9uKCl7Zm9yKHZhciB2PTAsaz10aGlzLnNldC5tZW1iZXJzLmxlbmd0aDt2PGs7disrKXRoaXMuc2V0Lm1lbWJlcnNbdl0uZnhbeF0uYXBwbHkodGhpcy5zZXQubWVtYmVyc1t2XS5meCxhcmd1bWVudHMpO3JldHVybiB0aGlzfX0pfSx0LmV4dGVuZCh0LkVsZW1lbnQse30pLHQuZXh0ZW5kKHQuRWxlbWVudCx7cmVtZW1iZXI6ZnVuY3Rpb24obCx1KXtpZihVKGFyZ3VtZW50c1swXSk9PT1cIm9iamVjdFwiKWZvcih2YXIgeCBpbiBsKXRoaXMucmVtZW1iZXIoeCxsW3hdKTtlbHNle2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEpcmV0dXJuIHRoaXMubWVtb3J5KClbbF07dGhpcy5tZW1vcnkoKVtsXT11fXJldHVybiB0aGlzfSxmb3JnZXQ6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoPT0wKXRoaXMuX21lbW9yeT17fTtlbHNlIGZvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLTE7bD49MDtsLS0pZGVsZXRlIHRoaXMubWVtb3J5KClbYXJndW1lbnRzW2xdXTtyZXR1cm4gdGhpc30sbWVtb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lbW9yeXx8KHRoaXMuX21lbW9yeT17fSl9fSksdC5nZXQ9ZnVuY3Rpb24obCl7dmFyIHU9ZS5nZXRFbGVtZW50QnlJZChmdW5jdGlvbih4KXt2YXIgdj0oeHx8XCJcIikudG9TdHJpbmcoKS5tYXRjaCh0LnJlZ2V4LnJlZmVyZW5jZSk7aWYodilyZXR1cm4gdlsxXX0obCl8fGwpO3JldHVybiB0LmFkb3B0KHUpfSx0LnNlbGVjdD1mdW5jdGlvbihsLHUpe3JldHVybiBuZXcgdC5TZXQodC51dGlscy5tYXAoKHV8fGUpLnF1ZXJ5U2VsZWN0b3JBbGwobCksZnVuY3Rpb24oeCl7cmV0dXJuIHQuYWRvcHQoeCl9KSl9LHQuZXh0ZW5kKHQuUGFyZW50LHtzZWxlY3Q6ZnVuY3Rpb24obCl7cmV0dXJuIHQuc2VsZWN0KGwsdGhpcy5ub2RlKX19KTt2YXIgdz1cImFiY2RlZlwiLnNwbGl0KFwiXCIpO2lmKHR5cGVvZiB5LkN1c3RvbUV2ZW50IT1cImZ1bmN0aW9uXCIpe3ZhciBBPWZ1bmN0aW9uKGwsdSl7dT11fHx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9O3ZhciB4PWUuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtyZXR1cm4geC5pbml0Q3VzdG9tRXZlbnQobCx1LmJ1YmJsZXMsdS5jYW5jZWxhYmxlLHUuZGV0YWlsKSx4fTtBLnByb3RvdHlwZT15LkV2ZW50LnByb3RvdHlwZSx0LkN1c3RvbUV2ZW50PUF9ZWxzZSB0LkN1c3RvbUV2ZW50PXkuQ3VzdG9tRXZlbnQ7cmV0dXJuIHR9LFUoRGUpPT09XCJvYmplY3RcIj9fLmV4cG9ydHM9bWUuZG9jdW1lbnQ/T2UobWUsbWUuZG9jdW1lbnQpOmZ1bmN0aW9uKHkpe3JldHVybiBPZSh5LHkuZG9jdW1lbnQpfTptZS5TVkc9T2UobWUsbWUuZG9jdW1lbnQpLChmdW5jdGlvbigpe1NWRy5GaWx0ZXI9U1ZHLmludmVudCh7Y3JlYXRlOlwiZmlsdGVyXCIsaW5oZXJpdDpTVkcuUGFyZW50LGV4dGVuZDp7c291cmNlOlwiU291cmNlR3JhcGhpY1wiLHNvdXJjZUFscGhhOlwiU291cmNlQWxwaGFcIixiYWNrZ3JvdW5kOlwiQmFja2dyb3VuZEltYWdlXCIsYmFja2dyb3VuZEFscGhhOlwiQmFja2dyb3VuZEFscGhhXCIsZmlsbDpcIkZpbGxQYWludFwiLHN0cm9rZTpcIlN0cm9rZVBhaW50XCIsYXV0b1NldEluOiEwLHB1dDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLmFkZChyLG4pLCFyLmF0dHIoXCJpblwiKSYmdGhpcy5hdXRvU2V0SW4mJnIuYXR0cihcImluXCIsdGhpcy5zb3VyY2UpLHIuYXR0cihcInJlc3VsdFwiKXx8ci5hdHRyKFwicmVzdWx0XCIscikscn0sYmxlbmQ6ZnVuY3Rpb24ocixuLG8pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkJsZW5kRWZmZWN0KHIsbixvKSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29sb3JNYXRyaXhFZmZlY3QocixuKSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbnZvbHZlTWF0cml4RWZmZWN0KHIpKX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9uZW50VHJhbnNmZXJFZmZlY3QocikpfSxjb21wb3NpdGU6ZnVuY3Rpb24ocixuLG8pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvc2l0ZUVmZmVjdChyLG4sbykpfSxmbG9vZDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkZsb29kRWZmZWN0KHIsbikpfSxvZmZzZXQ6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5PZmZzZXRFZmZlY3QocixuKSl9LGltYWdlOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkltYWdlRWZmZWN0KHIpKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgcj1bdm9pZCAwXTtmb3IodmFyIG4gaW4gYXJndW1lbnRzKXIucHVzaChhcmd1bWVudHNbbl0pO3JldHVybiB0aGlzLnB1dChuZXcoU1ZHLk1lcmdlRWZmZWN0LmJpbmQuYXBwbHkoU1ZHLk1lcmdlRWZmZWN0LHIpKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkdhdXNzaWFuQmx1ckVmZmVjdChyLG4pKX0sbW9ycGhvbG9neTpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk1vcnBob2xvZ3lFZmZlY3QocixuKSl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbihyLG4sbyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlmZnVzZUxpZ2h0aW5nRWZmZWN0KHIsbixvKSl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbihyLG4sbyxoLGMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdChyLG4sbyxoLGMpKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbihyLG4sbyxoKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5TcGVjdWxhckxpZ2h0aW5nRWZmZWN0KHIsbixvLGgpKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlRpbGVFZmZlY3QpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHIsbixvLGgsYyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVHVyYnVsZW5jZUVmZmVjdChyLG4sbyxoLGMpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5hdHRyKFwiaWRcIikrXCIpXCJ9fX0pLFNWRy5leHRlbmQoU1ZHLkRlZnMse2ZpbHRlcjpmdW5jdGlvbihyKXt2YXIgbj10aGlzLnB1dChuZXcgU1ZHLkZpbHRlcik7cmV0dXJuIHR5cGVvZiByPT1cImZ1bmN0aW9uXCImJnIuY2FsbChuLG4pLG59fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcihyKX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5maWx0ZXJlcj1yIGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/cjp0aGlzLmRvYygpLmZpbHRlcihyKSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cihcImZpbHRlclwiLHRoaXMuZmlsdGVyZXIpLHRoaXMuZmlsdGVyZXJ9LHVuZmlsdGVyOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmZpbHRlcmVyJiZyPT09ITAmJnRoaXMuZmlsdGVyZXIucmVtb3ZlKCksZGVsZXRlIHRoaXMuZmlsdGVyZXIsdGhpcy5hdHRyKFwiZmlsdGVyXCIsbnVsbCl9fSksU1ZHLkVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIixyKX0scmVzdWx0OmZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIixyKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSksU1ZHLlBhcmVudEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHIpfSxyZXN1bHQ6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KTt2YXIgeT17YmxlbmQ6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLHIsbil9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29sb3JNYXRyaXgocixuKS5pbih0aGlzKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29udm9sdmVNYXRyaXgocikuaW4odGhpcyl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvbmVudFRyYW5zZmVyKHIpLmluKHRoaXMpfSxjb21wb3NpdGU6ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb3NpdGUodGhpcyxyLG4pfSxmbG9vZDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmZsb29kKHIsbil9LG9mZnNldDpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm9mZnNldChyLG4pLmluKHRoaXMpfSxpbWFnZTpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5pbWFnZShyKX0sbWVyZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLFt0aGlzXS5jb25jYXQoYXJndW1lbnRzKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmdhdXNzaWFuQmx1cihyLG4pLmluKHRoaXMpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubW9ycGhvbG9neShyLG4pLmluKHRoaXMpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24ocixuLG8pe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpZmZ1c2VMaWdodGluZyhyLG4sbykuaW4odGhpcyl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbihyLG4sbyxoKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaXNwbGFjZW1lbnRNYXAodGhpcyxyLG4sbyxoKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbihyLG4sbyxoKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zcGVjdWxhckxpZ2h0aW5nKHIsbixvLGgpLmluKHRoaXMpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudGlsZSgpLmluKHRoaXMpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHIsbixvLGgsYyl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudHVyYnVsZW5jZShyLG4sbyxoLGMpLmluKHRoaXMpfX07U1ZHLmV4dGVuZChTVkcuRWZmZWN0LHkpLFNWRy5leHRlbmQoU1ZHLlBhcmVudEVmZmVjdCx5KSxTVkcuQ2hpbGRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24ocil7dGhpcy5hdHRyKFwiaW5cIixyKX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHIsbixvKXt0aGlzLmF0dHIoe2luOnIsaW4yOm4sbW9kZTpvfHxcIm5vcm1hbFwifSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHIsbil7cj09XCJtYXRyaXhcIiYmKG49YShuKSksdGhpcy5hdHRyKHt0eXBlOnIsdmFsdWVzOm49PT12b2lkIDA/bnVsbDpufSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHIpe3I9YShyKSx0aGlzLmF0dHIoe29yZGVyOk1hdGguc3FydChyLnNwbGl0KFwiIFwiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDpyfSl9LGNvbXBvc2l0ZTpmdW5jdGlvbihyLG4sbyl7dGhpcy5hdHRyKHtpbjpyLGluMjpuLG9wZXJhdG9yOm99KX0sZmxvb2Q6ZnVuY3Rpb24ocixuKXt0aGlzLmF0dHIoXCJmbG9vZC1jb2xvclwiLHIpLG4hPW51bGwmJnRoaXMuYXR0cihcImZsb29kLW9wYWNpdHlcIixuKX0sb2Zmc2V0OmZ1bmN0aW9uKHIsbil7dGhpcy5hdHRyKHtkeDpyLGR5Om59KX0saW1hZ2U6ZnVuY3Rpb24ocil7dGhpcy5hdHRyKFwiaHJlZlwiLHIsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHIsbixvLGgsYyl7dGhpcy5hdHRyKHtpbjpyLGluMjpuLHNjYWxlOm8seENoYW5uZWxTZWxlY3RvcjpoLHlDaGFubmVsU2VsZWN0b3I6Y30pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24ocixuKXtyIT1udWxsfHxuIT1udWxsP3RoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLGZ1bmN0aW9uKG8pe2lmKCFBcnJheS5pc0FycmF5KG8pKXJldHVybiBvO2Zvcih2YXIgaD0wLGM9by5sZW5ndGgsZD1bXTtoPGM7aCsrKWQucHVzaChvW2hdKTtyZXR1cm4gZC5qb2luKFwiIFwiKX0oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOnRoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLFwiMCAwXCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHIsbil7dGhpcy5hdHRyKHtvcGVyYXRvcjpyLHJhZGl1czpufSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24ocixuLG8saCxjKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6bixzZWVkOm8sc3RpdGNoVGlsZXM6aCxiYXNlRnJlcXVlbmN5OnIsdHlwZTpjfSl9fSx0PXttZXJnZTpmdW5jdGlvbigpe3ZhciByO2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIG49dGhpczthcmd1bWVudHNbMF0uZWFjaChmdW5jdGlvbihoKXt0aGlzIGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT9uLnB1dCh0aGlzKToodGhpcyBpbnN0YW5jZW9mIFNWRy5FZmZlY3R8fHRoaXMgaW5zdGFuY2VvZiBTVkcuUGFyZW50RWZmZWN0KSYmbi5wdXQobmV3IFNWRy5NZXJnZU5vZGUodGhpcykpfSl9ZWxzZXtyPUFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXJbb11pbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5wdXQocltvXSk6dGhpcy5wdXQobmV3IFNWRy5NZXJnZU5vZGUocltvXSkpfX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24ocil7aWYodGhpcy5yZ2I9bmV3IFNWRy5TZXQsW1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKChmdW5jdGlvbihvKXt0aGlzW29dPW5ldyBTVkdbXCJGdW5jXCIrby50b1VwcGVyQ2FzZSgpXShcImlkZW50aXR5XCIpLHRoaXMucmdiLmFkZCh0aGlzW29dKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpc1tvXS5ub2RlKX0pLmJpbmQodGhpcykpLHIpZm9yKHZhciBuIGluIHIucmdiJiYoW1wiclwiLFwiZ1wiLFwiYlwiXS5mb3JFYWNoKChmdW5jdGlvbihvKXt0aGlzW29dLmF0dHIoci5yZ2IpfSkuYmluZCh0aGlzKSksZGVsZXRlIHIucmdiKSxyKXRoaXNbbl0uYXR0cihyW25dKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHIsbixvKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTpyLGRpZmZ1c2VDb25zdGFudDpuLGtlcm5lbFVuaXRMZW5ndGg6b30pfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHIsbixvLGgpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnIsZGlmZnVzZUNvbnN0YW50Om4sc3BlY3VsYXJFeHBvbmVudDpvLGtlcm5lbFVuaXRMZW5ndGg6aH0pfX0saT17ZGlzdGFudExpZ2h0OmZ1bmN0aW9uKHIsbil7dGhpcy5hdHRyKHthemltdXRoOnIsZWxldmF0aW9uOm59KX0scG9pbnRMaWdodDpmdW5jdGlvbihyLG4sbyl7dGhpcy5hdHRyKHt4OnIseTpuLHo6b30pfSxzcG90TGlnaHQ6ZnVuY3Rpb24ocixuLG8saCxjLGQpe3RoaXMuYXR0cih7eDpyLHk6bix6Om8scG9pbnRzQXRYOmgscG9pbnRzQXRZOmMscG9pbnRzQXRaOmR9KX0sbWVyZ2VOb2RlOmZ1bmN0aW9uKHIpe3RoaXMuYXR0cihcImluXCIscil9fTtmdW5jdGlvbiBhKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpJiYocj1uZXcgU1ZHLkFycmF5KHIpKSxyLnRvU3RyaW5nKCkucmVwbGFjZSgvXlxccysvLFwiXCIpLnJlcGxhY2UoL1xccyskLyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfWZ1bmN0aW9uIHMoKXt2YXIgcj1mdW5jdGlvbigpe307Zm9yKHZhciBuIGluIHR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXT09XCJmdW5jdGlvblwiJiYocj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYXJndW1lbnRzLGFyZ3VtZW50cy5sZW5ndGgtMSwxKSksYXJndW1lbnRzKWZvcih2YXIgbyBpbiBhcmd1bWVudHNbbl0pcihhcmd1bWVudHNbbl1bb10sbyxhcmd1bWVudHNbbl0pfVtcInJcIixcImdcIixcImJcIixcImFcIl0uZm9yRWFjaChmdW5jdGlvbihyKXtpW1wiRnVuY1wiK3IudG9VcHBlckNhc2UoKV09ZnVuY3Rpb24obil7c3dpdGNoKHRoaXMuYXR0cihcInR5cGVcIixuKSxuKXtjYXNlXCJ0YWJsZVwiOnRoaXMuYXR0cihcInRhYmxlVmFsdWVzXCIsYXJndW1lbnRzWzFdKTticmVhaztjYXNlXCJsaW5lYXJcIjp0aGlzLmF0dHIoXCJzbG9wZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiaW50ZXJjZXB0XCIsYXJndW1lbnRzWzJdKTticmVhaztjYXNlXCJnYW1tYVwiOnRoaXMuYXR0cihcImFtcGxpdHVkZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiZXhwb25lbnRcIixhcmd1bWVudHNbMl0pLHRoaXMuYXR0cihcIm9mZnNldFwiLGFyZ3VtZW50c1syXSl9fX0pLHMoZSxmdW5jdGlvbihyLG4pe3ZhciBvPW4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbi5zbGljZSgxKTtTVkdbbytcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitvKSksci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLkVmZmVjdCxleHRlbmQ6e319KX0pLHModCxmdW5jdGlvbihyLG4pe3ZhciBvPW4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbi5zbGljZSgxKTtTVkdbbytcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitvKSksci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLlBhcmVudEVmZmVjdCxleHRlbmQ6e319KX0pLHMoaSxmdW5jdGlvbihyLG4pe3ZhciBvPW4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbi5zbGljZSgxKTtTVkdbb109U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIrbykpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpbmhlcml0OlNWRy5DaGlsZEVmZmVjdCxleHRlbmQ6e319KX0pLFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LHtpbjpmdW5jdGlvbihyKXtyZXR1cm4gciBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5hZGQociwwKTp0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZShyKSwwKSx0aGlzfX0pLFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCxTVkcuQmxlbmRFZmZlY3QsU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCx7aW4yOmZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpbjJcIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW4yXCIpOnRoaXMuYXR0cihcImluMlwiLHIpfX0pLFNWRy5maWx0ZXI9e3NlcGlhdG9uZTpbLjM0MywuNjY5LC4xMTksMCwwLC4yNDksLjYyNiwuMTMsMCwwLC4xNzIsLjMzNCwuMTExLDAsMCwwLDAsMCwxLDBdfX0pLmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHkocyxyLG4sbyxoLGMsZCl7Zm9yKHZhciBnPXMuc2xpY2UocixufHxkKSxwPW8uc2xpY2UoaCxjfHxkKSxmPTAsYj17cG9zOlswLDBdLHN0YXJ0OlswLDBdfSxtPXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19O2dbZl09ZS5jYWxsKGIsZ1tmXSkscFtmXT1lLmNhbGwobSxwW2ZdKSxnW2ZdWzBdIT1wW2ZdWzBdfHxnW2ZdWzBdPT1cIk1cInx8Z1tmXVswXT09XCJBXCImJihnW2ZdWzRdIT1wW2ZdWzRdfHxnW2ZdWzVdIT1wW2ZdWzVdKT8oQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShnLFtmLDFdLmNvbmNhdChpLmNhbGwoYixnW2ZdKSkpLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkocCxbZiwxXS5jb25jYXQoaS5jYWxsKG0scFtmXSkpKSk6KGdbZl09dC5jYWxsKGIsZ1tmXSkscFtmXT10LmNhbGwobSxwW2ZdKSksISgrK2Y9PWcubGVuZ3RoJiZmPT1wLmxlbmd0aCk7KWY9PWcubGVuZ3RoJiZnLnB1c2goW1wiQ1wiLGIucG9zWzBdLGIucG9zWzFdLGIucG9zWzBdLGIucG9zWzFdLGIucG9zWzBdLGIucG9zWzFdXSksZj09cC5sZW5ndGgmJnAucHVzaChbXCJDXCIsbS5wb3NbMF0sbS5wb3NbMV0sbS5wb3NbMF0sbS5wb3NbMV0sbS5wb3NbMF0sbS5wb3NbMV1dKTtyZXR1cm57c3RhcnQ6ZyxkZXN0OnB9fWZ1bmN0aW9uIGUocyl7c3dpdGNoKHNbMF0pe2Nhc2VcInpcIjpjYXNlXCJaXCI6c1swXT1cIkxcIixzWzFdPXRoaXMuc3RhcnRbMF0sc1syXT10aGlzLnN0YXJ0WzFdO2JyZWFrO2Nhc2VcIkhcIjpzWzBdPVwiTFwiLHNbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiVlwiOnNbMF09XCJMXCIsc1syXT1zWzFdLHNbMV09dGhpcy5wb3NbMF07YnJlYWs7Y2FzZVwiVFwiOnNbMF09XCJRXCIsc1szXT1zWzFdLHNbNF09c1syXSxzWzFdPXRoaXMucmVmbGVjdGlvblsxXSxzWzJdPXRoaXMucmVmbGVjdGlvblswXTticmVhaztjYXNlXCJTXCI6c1swXT1cIkNcIixzWzZdPXNbNF0sc1s1XT1zWzNdLHNbNF09c1syXSxzWzNdPXNbMV0sc1syXT10aGlzLnJlZmxlY3Rpb25bMV0sc1sxXT10aGlzLnJlZmxlY3Rpb25bMF19cmV0dXJuIHN9ZnVuY3Rpb24gdChzKXt2YXIgcj1zLmxlbmd0aDtyZXR1cm4gdGhpcy5wb3M9W3Nbci0yXSxzW3ItMV1dLFwiU0NRVFwiLmluZGV4T2Yoc1swXSkhPS0xJiYodGhpcy5yZWZsZWN0aW9uPVsyKnRoaXMucG9zWzBdLXNbci00XSwyKnRoaXMucG9zWzFdLXNbci0zXV0pLHN9ZnVuY3Rpb24gaShzKXt2YXIgcj1bc107c3dpdGNoKHNbMF0pe2Nhc2VcIk1cIjpyZXR1cm4gdGhpcy5wb3M9dGhpcy5zdGFydD1bc1sxXSxzWzJdXSxyO2Nhc2VcIkxcIjpzWzVdPXNbM109c1sxXSxzWzZdPXNbNF09c1syXSxzWzFdPXRoaXMucG9zWzBdLHNbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiUVwiOnNbNl09c1s0XSxzWzVdPXNbM10sc1s0XT0xKnNbNF0vMysyKnNbMl0vMyxzWzNdPTEqc1szXS8zKzIqc1sxXS8zLHNbMl09MSp0aGlzLnBvc1sxXS8zKzIqc1syXS8zLHNbMV09MSp0aGlzLnBvc1swXS8zKzIqc1sxXS8zO2JyZWFrO2Nhc2VcIkFcIjpyPWZ1bmN0aW9uKG4sbyl7dmFyIGgsYyxkLGcscCxmLGIsbSx3LEEsbCx1LHgsdixrLFMsQyxMLEkseixULEUsUixPLEQsVyxOPU1hdGguYWJzKG9bMV0pLFY9TWF0aC5hYnMob1syXSksaj1vWzNdJTM2MCxyZT1vWzRdLGVlPW9bNV0saGU9b1s2XSxjZT1vWzddLEo9bmV3IFNWRy5Qb2ludChuKSxLPW5ldyBTVkcuUG9pbnQoaGUsY2UpLHB0PVtdO2lmKE49PT0wfHxWPT09MHx8Si54PT09Sy54JiZKLnk9PT1LLnkpcmV0dXJuW1tcIkNcIixKLngsSi55LEsueCxLLnksSy54LEsueV1dO2ZvcihoPW5ldyBTVkcuUG9pbnQoKEoueC1LLngpLzIsKEoueS1LLnkpLzIpLnRyYW5zZm9ybShuZXcgU1ZHLk1hdHJpeCgpLnJvdGF0ZShqKSksKGM9aC54KmgueC8oTipOKStoLnkqaC55LyhWKlYpKT4xJiYoTio9Yz1NYXRoLnNxcnQoYyksVio9YyksZD1uZXcgU1ZHLk1hdHJpeCgpLnJvdGF0ZShqKS5zY2FsZSgxL04sMS9WKS5yb3RhdGUoLWopLEo9Si50cmFuc2Zvcm0oZCksSz1LLnRyYW5zZm9ybShkKSxnPVtLLngtSi54LEsueS1KLnldLGY9Z1swXSpnWzBdK2dbMV0qZ1sxXSxwPU1hdGguc3FydChmKSxnWzBdLz1wLGdbMV0vPXAsYj1mPDQ/TWF0aC5zcXJ0KDEtZi80KTowLHJlPT09ZWUmJihiKj0tMSksbT1uZXcgU1ZHLlBvaW50KChLLngrSi54KS8yK2IqLWdbMV0sKEsueStKLnkpLzIrYipnWzBdKSx3PW5ldyBTVkcuUG9pbnQoSi54LW0ueCxKLnktbS55KSxBPW5ldyBTVkcuUG9pbnQoSy54LW0ueCxLLnktbS55KSxsPU1hdGguYWNvcyh3LngvTWF0aC5zcXJ0KHcueCp3Lngrdy55KncueSkpLHcueTwwJiYobCo9LTEpLHU9TWF0aC5hY29zKEEueC9NYXRoLnNxcnQoQS54KkEueCtBLnkqQS55KSksQS55PDAmJih1Kj0tMSksZWUmJmw+dSYmKHUrPTIqTWF0aC5QSSksIWVlJiZsPHUmJih1LT0yKk1hdGguUEkpLHY9TWF0aC5jZWlsKDIqTWF0aC5hYnMobC11KS9NYXRoLlBJKSxTPVtdLEM9bCx4PSh1LWwpL3Ysaz00Kk1hdGgudGFuKHgvNCkvMyxUPTA7VDw9djtUKyspST1NYXRoLmNvcyhDKSxMPU1hdGguc2luKEMpLHo9bmV3IFNWRy5Qb2ludChtLngrSSxtLnkrTCksU1tUXT1bbmV3IFNWRy5Qb2ludCh6LngraypMLHoueS1rKkkpLHosbmV3IFNWRy5Qb2ludCh6LngtaypMLHoueStrKkkpXSxDKz14O2ZvcihTWzBdWzBdPVNbMF1bMV0uY2xvbmUoKSxTW1MubGVuZ3RoLTFdWzJdPVNbUy5sZW5ndGgtMV1bMV0uY2xvbmUoKSxkPW5ldyBTVkcuTWF0cml4KCkucm90YXRlKGopLnNjYWxlKE4sVikucm90YXRlKC1qKSxUPTAsRT1TLmxlbmd0aDtUPEU7VCsrKVNbVF1bMF09U1tUXVswXS50cmFuc2Zvcm0oZCksU1tUXVsxXT1TW1RdWzFdLnRyYW5zZm9ybShkKSxTW1RdWzJdPVNbVF1bMl0udHJhbnNmb3JtKGQpO2ZvcihUPTEsRT1TLmxlbmd0aDtUPEU7VCsrKVI9KHo9U1tULTFdWzJdKS54LE89ei55LEQ9KHo9U1tUXVswXSkueCxXPXoueSxoZT0oej1TW1RdWzFdKS54LGNlPXoueSxwdC5wdXNoKFtcIkNcIixSLE8sRCxXLGhlLGNlXSk7cmV0dXJuIHB0fSh0aGlzLnBvcyxzKSxzPXJbMF19cmV0dXJuIHNbMF09XCJDXCIsdGhpcy5wb3M9W3NbNV0sc1s2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnNbNV0tc1szXSwyKnNbNl0tc1s0XV0scn1mdW5jdGlvbiBhKHMscil7aWYocj09PSExKXJldHVybiExO2Zvcih2YXIgbj1yLG89cy5sZW5ndGg7bjxvOysrbilpZihzW25dWzBdPT1cIk1cIilyZXR1cm4gbjtyZXR1cm4hMX1TVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXkse21vcnBoOmZ1bmN0aW9uKHMpe2Zvcih2YXIgcj10aGlzLnZhbHVlLG49dGhpcy5wYXJzZShzKSxvPTAsaD0wLGM9ITEsZD0hMTtvIT09ITF8fGghPT0hMTspe3ZhciBnO2M9YShyLG8hPT0hMSYmbysxKSxkPWEobixoIT09ITEmJmgrMSksbz09PSExJiYobz0oZz1uZXcgU1ZHLlBhdGhBcnJheShwLnN0YXJ0KS5iYm94KCkpLmhlaWdodD09MHx8Zy53aWR0aD09MD9yLnB1c2goclswXSktMTpyLnB1c2goW1wiTVwiLGcueCtnLndpZHRoLzIsZy55K2cuaGVpZ2h0LzJdKS0xKSxoPT09ITEmJihoPShnPW5ldyBTVkcuUGF0aEFycmF5KHAuZGVzdCkuYmJveCgpKS5oZWlnaHQ9PTB8fGcud2lkdGg9PTA/bi5wdXNoKG5bMF0pLTE6bi5wdXNoKFtcIk1cIixnLngrZy53aWR0aC8yLGcueStnLmhlaWdodC8yXSktMSk7dmFyIHA9eShyLG8sYyxuLGgsZCk7cj1yLnNsaWNlKDAsbykuY29uY2F0KHAuc3RhcnQsYz09PSExP1tdOnIuc2xpY2UoYykpLG49bi5zbGljZSgwLGgpLmNvbmNhdChwLmRlc3QsZD09PSExP1tdOm4uc2xpY2UoZCkpLG89YyE9PSExJiZvK3Auc3RhcnQubGVuZ3RoLGg9ZCE9PSExJiZoK3AuZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9cix0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9bix0aGlzfX0pfSgpLChmdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7ZS5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIix0aGlzKSx0aGlzLmVsPWV9eS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7dGhpcy5jb25zdHJhaW50PWUsdGhpcy52YWx1ZT10LHRoaXMuZWwub24oXCJtb3VzZWRvd24uZHJhZ1wiLGZ1bmN0aW9uKGEpe2kuc3RhcnQoYSl9KSx0aGlzLmVsLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsZnVuY3Rpb24oYSl7aS5zdGFydChhKX0pfSx5LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbihlLHQpe3ZhciBpPShlPWV8fHdpbmRvdy5ldmVudCkuY2hhbmdlZFRvdWNoZXMmJmUuY2hhbmdlZFRvdWNoZXNbMF18fGU7cmV0dXJuIHRoaXMucC54PWkuY2xpZW50WC0odHx8MCksdGhpcy5wLnk9aS5jbGllbnRZLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0odGhpcy5tKX0seS5wcm90b3R5cGUuZ2V0QkJveD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCYmKGU9dGhpcy5lbC5yYm94KCkpLCh0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkd8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVXNlfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCkmJihlLng9dGhpcy5lbC54KCksZS55PXRoaXMuZWwueSgpKSxlfSx5LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXtpZihlLnR5cGUhPVwiY2xpY2tcIiYmZS50eXBlIT1cIm1vdXNlZG93blwiJiZlLnR5cGUhPVwibW91c2Vtb3ZlXCJ8fChlLndoaWNofHxlLmJ1dHRvbnMpPT0xKXt2YXIgdD10aGlzO2lmKHRoaXMuZWwuZmlyZShcImJlZm9yZWRyYWdcIix7ZXZlbnQ6ZSxoYW5kbGVyOnRoaXN9KSwhdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucGFyZW50PXRoaXMucGFyZW50fHx0aGlzLmVsLnBhcmVudChTVkcuTmVzdGVkKXx8dGhpcy5lbC5wYXJlbnQoU1ZHLkRvYyksdGhpcy5wPXRoaXMucGFyZW50Lm5vZGUuY3JlYXRlU1ZHUG9pbnQoKSx0aGlzLm09dGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKTt2YXIgaSxhPXRoaXMuZ2V0QkJveCgpO2lmKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVGV4dClzd2l0Y2goaT10aGlzLmVsLm5vZGUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksdGhpcy5lbC5hdHRyKFwidGV4dC1hbmNob3JcIikpe2Nhc2VcIm1pZGRsZVwiOmkvPTI7YnJlYWs7Y2FzZVwic3RhcnRcIjppPTB9dGhpcy5zdGFydFBvaW50cz17cG9pbnQ6dGhpcy50cmFuc2Zvcm1Qb2ludChlLGkpLGJveDphLHRyYW5zZm9ybTp0aGlzLmVsLnRyYW5zZm9ybSgpfSxTVkcub24od2luZG93LFwibW91c2Vtb3ZlLmRyYWdcIixmdW5jdGlvbihzKXt0LmRyYWcocyl9KSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLmRyYWdcIixmdW5jdGlvbihzKXt0LmRyYWcocyl9KSxTVkcub24od2luZG93LFwibW91c2V1cC5kcmFnXCIsZnVuY3Rpb24ocyl7dC5lbmQocyl9KSxTVkcub24od2luZG93LFwidG91Y2hlbmQuZHJhZ1wiLGZ1bmN0aW9uKHMpe3QuZW5kKHMpfSksdGhpcy5lbC5maXJlKFwiZHJhZ3N0YXJ0XCIse2V2ZW50OmUscDp0aGlzLnN0YXJ0UG9pbnRzLnBvaW50LG06dGhpcy5tLGhhbmRsZXI6dGhpc30pfX19LHkucHJvdG90eXBlLmRyYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRCQm94KCksaT10aGlzLnRyYW5zZm9ybVBvaW50KGUpLGE9dGhpcy5zdGFydFBvaW50cy5ib3gueCtpLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LHM9dGhpcy5zdGFydFBvaW50cy5ib3gueStpLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55LHI9dGhpcy5jb25zdHJhaW50LG49aS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxvPWkueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnk7aWYodGhpcy5lbC5maXJlKFwiZHJhZ21vdmVcIix7ZXZlbnQ6ZSxwOmksbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGk7aWYodHlwZW9mIHI9PVwiZnVuY3Rpb25cIil7dmFyIGg9ci5jYWxsKHRoaXMuZWwsYSxzLHRoaXMubSk7dHlwZW9mIGg9PVwiYm9vbGVhblwiJiYoaD17eDpoLHk6aH0pLGgueD09PSEwP3RoaXMuZWwueChhKTpoLnghPT0hMSYmdGhpcy5lbC54KGgueCksaC55PT09ITA/dGhpcy5lbC55KHMpOmgueSE9PSExJiZ0aGlzLmVsLnkoaC55KX1lbHNlIHR5cGVvZiByPT1cIm9iamVjdFwiJiYoci5taW5YIT1udWxsJiZhPHIubWluWD9uPShhPXIubWluWCktdGhpcy5zdGFydFBvaW50cy5ib3gueDpyLm1heFghPW51bGwmJmE+ci5tYXhYLXQud2lkdGgmJihuPShhPXIubWF4WC10LndpZHRoKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54KSxyLm1pblkhPW51bGwmJnM8ci5taW5ZP289KHM9ci5taW5ZKS10aGlzLnN0YXJ0UG9pbnRzLmJveC55OnIubWF4WSE9bnVsbCYmcz5yLm1heFktdC5oZWlnaHQmJihvPShzPXIubWF4WS10LmhlaWdodCktdGhpcy5zdGFydFBvaW50cy5ib3gueSksci5zbmFwVG9HcmlkIT1udWxsJiYoYS09YSVyLnNuYXBUb0dyaWQscy09cyVyLnNuYXBUb0dyaWQsbi09biVyLnNuYXBUb0dyaWQsby09byVyLnNuYXBUb0dyaWQpLHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuRz90aGlzLmVsLm1hdHJpeCh0aGlzLnN0YXJ0UG9pbnRzLnRyYW5zZm9ybSkudHJhbnNmb3JtKHt4Om4seTpvfSwhMCk6dGhpcy5lbC5tb3ZlKGEscykpO3JldHVybiBpfSx5LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kcmFnKGUpO3RoaXMuZWwuZmlyZShcImRyYWdlbmRcIix7ZXZlbnQ6ZSxwOnQsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQuZHJhZ1wiKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7ZHJhZ2dhYmxlOmZ1bmN0aW9uKGUsdCl7dHlwZW9mIGUhPVwiZnVuY3Rpb25cIiYmdHlwZW9mIGUhPVwib2JqZWN0XCJ8fCh0PWUsZT0hMCk7dmFyIGk9dGhpcy5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIil8fG5ldyB5KHRoaXMpO3JldHVybihlPWU9PT12b2lkIDB8fGUpP2kuaW5pdCh0fHx7fSxlKToodGhpcy5vZmYoXCJtb3VzZWRvd24uZHJhZ1wiKSx0aGlzLm9mZihcInRvdWNoc3RhcnQuZHJhZ1wiKSksdGhpc319KX0pLmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7dGhpcy5lbD1lLGUucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiLHRoaXMpLHRoaXMucG9pbnRTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucmVjdFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5wb2ludHNMaXN0PXtsdDpbMCwwXSxydDpbXCJ3aWR0aFwiLDBdLHJiOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sbGI6WzAsXCJoZWlnaHRcIl0sdDpbXCJ3aWR0aFwiLDBdLHI6W1wid2lkdGhcIixcImhlaWdodFwiXSxiOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sbDpbMCxcImhlaWdodFwiXX0sdGhpcy5wb2ludENvb3JkPWZ1bmN0aW9uKHQsaSxhKXt2YXIgcz10eXBlb2YgdCE9XCJzdHJpbmdcIj90OmlbdF07cmV0dXJuIGE/cy8yOnN9LHRoaXMucG9pbnRDb29yZHM9ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLnBvaW50c0xpc3RbdF07cmV0dXJue3g6dGhpcy5wb2ludENvb3JkKGFbMF0saSx0PT09XCJ0XCJ8fHQ9PT1cImJcIikseTp0aGlzLnBvaW50Q29vcmQoYVsxXSxpLHQ9PT1cInJcInx8dD09PVwibFwiKX19fXkucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmVsLmJib3goKTt0aGlzLm9wdGlvbnM9e307dmFyIGE9dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMucG9pbnRzO2Zvcih2YXIgcyBpbiB0aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbc109dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHNbc10sdFtzXSE9PXZvaWQgMCYmKHRoaXMub3B0aW9uc1tzXT10W3NdKTt2YXIgcj1bXCJwb2ludHNcIixcInBvaW50c0V4Y2x1ZGVcIl07Zm9yKHZhciBzIGluIHIpe3ZhciBuPXRoaXMub3B0aW9uc1tyW3NdXTt0eXBlb2Ygbj09XCJzdHJpbmdcIj9uPW4ubGVuZ3RoPjA/bi5zcGxpdCgvXFxzKixcXHMqL2kpOltdOnR5cGVvZiBuPT1cImJvb2xlYW5cIiYmcltzXT09PVwicG9pbnRzXCImJihuPW4/YTpbXSksdGhpcy5vcHRpb25zW3Jbc11dPW59dGhpcy5vcHRpb25zLnBvaW50cz1bYSx0aGlzLm9wdGlvbnMucG9pbnRzXS5yZWR1Y2UoZnVuY3Rpb24obyxoKXtyZXR1cm4gby5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGguaW5kZXhPZihjKT4tMX0pfSksdGhpcy5vcHRpb25zLnBvaW50cz1bdGhpcy5vcHRpb25zLnBvaW50cyx0aGlzLm9wdGlvbnMucG9pbnRzRXhjbHVkZV0ucmVkdWNlKGZ1bmN0aW9uKG8saCl7cmV0dXJuIG8uZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBoLmluZGV4T2YoYyk8MH0pfSksdGhpcy5wYXJlbnQ9dGhpcy5lbC5wYXJlbnQoKSx0aGlzLm5lc3RlZD10aGlzLm5lc3RlZHx8dGhpcy5wYXJlbnQuZ3JvdXAoKSx0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGkueCxpLnkpKSx0aGlzLm9wdGlvbnMuZGVlcFNlbGVjdCYmW1wibGluZVwiLFwicG9seWxpbmVcIixcInBvbHlnb25cIl0uaW5kZXhPZih0aGlzLmVsLnR5cGUpIT09LTE/dGhpcy5zZWxlY3RQb2ludHMoZSk6dGhpcy5zZWxlY3RSZWN0KGUpLHRoaXMub2JzZXJ2ZSgpLHRoaXMuY2xlYW51cCgpfSx5LnByb3RvdHlwZS5zZWxlY3RQb2ludHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZD1lLHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0fHwodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQ9dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5kcmF3UG9pbnRzKCkpLHRoaXN9LHkucHJvdG90eXBlLmdldFBvaW50QXJyYXk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0tZS54LHRbMV0tZS55XX0pfSx5LnByb3RvdHlwZS5kcmF3UG9pbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLmdldFBvaW50QXJyYXkoKSxpPTAsYT10Lmxlbmd0aDtpPGE7KytpKXt2YXIgcz1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24obyl7KG89b3x8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9vLnByZXZlbnREZWZhdWx0KCk6by5yZXR1cm5WYWx1ZT0hMSxvLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBoPW8ucGFnZVh8fG8udG91Y2hlc1swXS5wYWdlWCxjPW8ucGFnZVl8fG8udG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUoXCJwb2ludFwiLHt4OmgseTpjLGk6bixldmVudDpvfSl9fShpKSxyPXRoaXMuZHJhd1BvaW50KHRbaV1bMF0sdFtpXVsxXSkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcG9pbnRcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5hZGQocil9fSx5LnByb3RvdHlwZS5kcmF3UG9pbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLm9wdGlvbnMucG9pbnRUeXBlO3N3aXRjaChpKXtjYXNlXCJjaXJjbGVcIjpyZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKGUsdCk7Y2FzZVwicmVjdFwiOnJldHVybiB0aGlzLmRyYXdSZWN0KGUsdCk7ZGVmYXVsdDppZih0eXBlb2YgaT09XCJmdW5jdGlvblwiKXJldHVybiBpLmNhbGwodGhpcyxlLHQpO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gXCIraStcIiBwb2ludCB0eXBlIVwiKX19LHkucHJvdG90eXBlLmRyYXdDaXJjbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcihlLHQpfSx5LnByb3RvdHlwZS5kcmF3UmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm5lc3RlZC5yZWN0KHRoaXMub3B0aW9ucy5wb2ludFNpemUsdGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKGUsdCl9LHkucHJvdG90eXBlLnVwZGF0ZVBvaW50U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRQb2ludEFycmF5KCk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaChmdW5jdGlvbih0KXt0aGlzLmN4KCk9PT1lW3RdWzBdJiZ0aGlzLmN5KCk9PT1lW3RdWzFdfHx0aGlzLmNlbnRlcihlW3RdWzBdLGVbdF1bMV0pfSl9LHkucHJvdG90eXBlLnVwZGF0ZVJlY3RTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5lbC5iYm94KCk7aWYodGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCkuYXR0cih7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9KSx0aGlzLm9wdGlvbnMucG9pbnRzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnBvaW50cy5tYXAoZnVuY3Rpb24oYSxzKXt2YXIgcj1lLnBvaW50Q29vcmRzKGEsdCk7ZS5yZWN0U2VsZWN0aW9uLnNldC5nZXQocysxKS5jZW50ZXIoci54LHIueSl9KSx0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCl7dmFyIGk9dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldChpLTEpLmNlbnRlcih0LndpZHRoLzIsMjApfX0seS5wcm90b3R5cGUuc2VsZWN0UmVjdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dGhpcy5lbC5iYm94KCk7ZnVuY3Rpb24gYShuKXtyZXR1cm4gZnVuY3Rpb24obyl7KG89b3x8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9vLnByZXZlbnREZWZhdWx0KCk6by5yZXR1cm5WYWx1ZT0hMSxvLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBoPW8ucGFnZVh8fG8udG91Y2hlc1swXS5wYWdlWCxjPW8ucGFnZVl8fG8udG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUobix7eDpoLHk6YyxldmVudDpvfSl9fWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkPWUsdGhpcy5yZWN0U2VsZWN0aW9uLnNldD10aGlzLnJlY3RTZWxlY3Rpb24uc2V0fHx0aGlzLnBhcmVudC5zZXQoKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKXx8dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQucmVjdChpLndpZHRoLGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk8MiYmKHRoaXMub3B0aW9ucy5wb2ludHMubWFwKGZ1bmN0aW9uKG4sbyl7dmFyIGg9dC5wb2ludENvb3JkcyhuLGkpLGM9dC5kcmF3UG9pbnQoaC54LGgueSkuYXR0cihcImNsYXNzXCIsdC5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX1wiK24pLm9uKFwibW91c2Vkb3duXCIsYShuKSkub24oXCJ0b3VjaHN0YXJ0XCIsYShuKSk7dC5yZWN0U2VsZWN0aW9uLnNldC5hZGQoYyl9KSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKHQub3B0aW9ucy5jbGFzc1BvaW50cyl9KSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQmJih0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoOSl8fCF0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMSkpKXt2YXIgcz1mdW5jdGlvbihuKXsobj1ufHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P24ucHJldmVudERlZmF1bHQoKTpuLnJldHVyblZhbHVlPSExLG4uc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG89bi5wYWdlWHx8bi50b3VjaGVzWzBdLnBhZ2VYLGg9bi5wYWdlWXx8bi50b3VjaGVzWzBdLnBhZ2VZO3QuZWwuZmlyZShcInJvdFwiLHt4Om8seTpoLGV2ZW50Om59KX0scj10aGlzLmRyYXdQb2ludChpLndpZHRoLzIsMjApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9yb3RcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChyKX19LHkucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGUueCxlLnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHkucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtlLmhhbmRsZXIoKX0pLHRoaXMub2JzZXJ2ZXJJbnN0Lm9ic2VydmUodGhpcy5lbC5ub2RlLHthdHRyaWJ1dGVzOiEwfSk7ZWxzZSB0cnl7dGhpcy5vYnNlcnZlckluc3QuZGlzY29ubmVjdCgpLGRlbGV0ZSB0aGlzLm9ic2VydmVySW5zdH1jYXRjaHt9ZWxzZSB0aGlzLmVsLm9mZihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiksKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpJiZ0aGlzLmVsLm9uKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiLGZ1bmN0aW9uKCl7ZS5oYW5kbGVyKCl9KX0seS5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQpLCF0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucG9pbnRTZWxlY3Rpb24uc2V0JiYodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSx0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5jbGVhcigpLGRlbGV0ZSB0aGlzLnBvaW50U2VsZWN0aW9uLnNldCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8KHRoaXMubmVzdGVkLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLm5lc3RlZCl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3NlbGVjdGl6ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0eXBlb2YgZT09XCJvYmplY3RcIiYmKHQ9ZSxlPSEwKSwodGhpcy5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIpfHxuZXcgeSh0aGlzKSkuaW5pdChlPT09dm9pZCAwfHxlLHR8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5zZWxlY3RpemUuZGVmYXVsdHM9e3BvaW50czpbXCJsdFwiLFwicnRcIixcInJiXCIsXCJsYlwiLFwidFwiLFwiclwiLFwiYlwiLFwibFwiXSxwb2ludHNFeGNsdWRlOltdLGNsYXNzUmVjdDpcInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0XCIsY2xhc3NQb2ludHM6XCJzdmdfc2VsZWN0X3BvaW50c1wiLHBvaW50U2l6ZTo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMSxwb2ludFR5cGU6XCJjaXJjbGVcIn19KCksZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe2UucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiLHRoaXMpLHRoaXMuZWw9ZSx0aGlzLnBhcmFtZXRlcnM9e30sdGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLHRoaXMucD1lLmRvYygpLm5vZGUuY3JlYXRlU1ZHUG9pbnQoKX15LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMucC54PWUtKHRoaXMub2Zmc2V0Lngtd2luZG93LnBhZ2VYT2Zmc2V0KSx0aGlzLnAueT10LSh0aGlzLm9mZnNldC55LXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpfHx0aGlzLm0pfSx5LnByb3RvdHlwZS5fZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVybnt4OmUuY2xpZW50WCE9bnVsbD9lLmNsaWVudFg6ZS50b3VjaGVzWzBdLmNsaWVudFgseTplLmNsaWVudFkhPW51bGw/ZS5jbGllbnRZOmUudG91Y2hlc1swXS5jbGllbnRZfX0seS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMuc3RvcCgpLGUhPT1cInN0b3BcIil7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sZVtpXSE9PXZvaWQgMCYmKHRoaXMub3B0aW9uc1tpXT1lW2ldKTt0aGlzLmVsLm9uKFwibHQucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJydC5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcInJiLnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwibGIucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJ0LnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwici5yZXNpemVcIixmdW5jdGlvbihhKXt0LnJlc2l6ZShhfHx3aW5kb3cuZXZlbnQpfSksdGhpcy5lbC5vbihcImIucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMuZWwub24oXCJsLnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwicm90LnJlc2l6ZVwiLGZ1bmN0aW9uKGEpe3QucmVzaXplKGF8fHdpbmRvdy5ldmVudCl9KSx0aGlzLmVsLm9uKFwicG9pbnQucmVzaXplXCIsZnVuY3Rpb24oYSl7dC5yZXNpemUoYXx8d2luZG93LmV2ZW50KX0pLHRoaXMudXBkYXRlKCl9fSx5LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKFwibHQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicnQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicmIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibGIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwidC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyb3QucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicG9pbnQucmVzaXplXCIpLHRoaXN9LHkucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLHRoaXMub2Zmc2V0PXt4OndpbmRvdy5wYWdlWE9mZnNldCx5OndpbmRvdy5wYWdlWU9mZnNldH07dmFyIGk9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKGUuZGV0YWlsLmV2ZW50KTtpZih0aGlzLnBhcmFtZXRlcnM9e3R5cGU6dGhpcy5lbC50eXBlLHA6dGhpcy50cmFuc2Zvcm1Qb2ludChpLngsaS55KSx4OmUuZGV0YWlsLngseTplLmRldGFpbC55LGJveDp0aGlzLmVsLmJib3goKSxyb3RhdGlvbjp0aGlzLmVsLnRyYW5zZm9ybSgpLnJvdGF0aW9ufSx0aGlzLmVsLnR5cGU9PT1cInRleHRcIiYmKHRoaXMucGFyYW1ldGVycy5mb250U2l6ZT10aGlzLmVsLmF0dHIoKVtcImZvbnQtc2l6ZVwiXSksZS5kZXRhaWwuaSE9PXZvaWQgMCl7dmFyIGE9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT1lLmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bYVtlLmRldGFpbC5pXVswXSxhW2UuZGV0YWlsLmldWzFdXX1zd2l0Y2goZS50eXBlKXtjYXNlXCJsdFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtblswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1uWzFdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLW5bMF0pO249dGhpcy5jaGVja0FzcGVjdFJhdGlvKG4pLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkrblsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLW5bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtblsxXSl9fTticmVhaztjYXNlXCJydFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtuWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LW5bMV0+MCl7aWYodGhpcy5wYXJhbWV0ZXJzLnR5cGU9PT1cInRleHRcIilyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1uWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUrblswXSk7bj10aGlzLmNoZWNrQXNwZWN0UmF0aW8obiwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkrblsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK25bMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtblsxXSl9fTticmVhaztjYXNlXCJyYlwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtuWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K25bMV0+MCl7aWYodGhpcy5wYXJhbWV0ZXJzLnR5cGU9PT1cInRleHRcIilyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1uWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUrblswXSk7bj10aGlzLmNoZWNrQXNwZWN0UmF0aW8obiksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtuWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K25bMV0pfX07YnJlYWs7Y2FzZVwibGJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24ocyxyKXt2YXIgbj10aGlzLnNuYXBUb0dyaWQocyxyLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtblswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtuWzFdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLW5bMF0pO249dGhpcy5jaGVja0FzcGVjdFJhdGlvKG4sITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngrblswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1uWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K25bMV0pfX07YnJlYWs7Y2FzZVwidFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtblsxXT4wKXtpZih0aGlzLnBhcmFtZXRlcnMudHlwZT09PVwidGV4dFwiKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStuWzFdKS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtblsxXSl9fTticmVhaztjYXNlXCJyXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHMscil7dmFyIG49dGhpcy5zbmFwVG9HcmlkKHMsciwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK25bMF0+MCl7aWYodGhpcy5wYXJhbWV0ZXJzLnR5cGU9PT1cInRleHRcIilyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrblswXSl9fTticmVhaztjYXNlXCJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHMscil7dmFyIG49dGhpcy5zbmFwVG9HcmlkKHMsciwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtuWzFdPjApe2lmKHRoaXMucGFyYW1ldGVycy50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQrblsxXSl9fTticmVhaztjYXNlXCJsXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHMscil7dmFyIG49dGhpcy5zbmFwVG9HcmlkKHMsciwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLW5bMF0+MCl7aWYodGhpcy5wYXJhbWV0ZXJzLnR5cGU9PT1cInRleHRcIilyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtuWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1uWzBdKX19O2JyZWFrO2Nhc2VcInJvdFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXMrdGhpcy5wYXJhbWV0ZXJzLnAueCxvPXIrdGhpcy5wYXJhbWV0ZXJzLnAueSxoPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLGM9TWF0aC5hdGFuMihvLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLG4tdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMiksZD10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihjLWgpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUoZC1kJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuY2FsYz1mdW5jdGlvbihzLHIpe3ZhciBuPXRoaXMuc25hcFRvR3JpZChzLHIsdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSksbz10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO29bdGhpcy5wYXJhbWV0ZXJzLmldWzBdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXStuWzBdLG9bdGhpcy5wYXJhbWV0ZXJzLmldWzFdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXStuWzFdLHRoaXMuZWwucGxvdChvKX19dGhpcy5lbC5maXJlKFwicmVzaXplc3RhcnRcIix7ZHg6dGhpcy5wYXJhbWV0ZXJzLngsZHk6dGhpcy5wYXJhbWV0ZXJzLnksZXZlbnQ6ZX0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIsZnVuY3Rpb24ocyl7dC51cGRhdGUoc3x8d2luZG93LmV2ZW50KX0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIixmdW5jdGlvbigpe3QuZG9uZSgpfSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIixmdW5jdGlvbihzKXt0LnVwZGF0ZShzfHx3aW5kb3cuZXZlbnQpfSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIsZnVuY3Rpb24oKXt0LmRvbmUoKX0pfSx5LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKGUpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludCh0LngsdC55KSxhPWkueC10aGlzLnBhcmFtZXRlcnMucC54LHM9aS55LXRoaXMucGFyYW1ldGVycy5wLnk7dGhpcy5sYXN0VXBkYXRlQ2FsbD1bYSxzXSx0aGlzLmNhbGMoYSxzKSx0aGlzLmVsLmZpcmUoXCJyZXNpemluZ1wiLHtkeDphLGR5OnMsZXZlbnQ6ZX0pfWVsc2UgdGhpcy5sYXN0VXBkYXRlQ2FsbCYmdGhpcy5jYWxjKHRoaXMubGFzdFVwZGF0ZUNhbGxbMF0sdGhpcy5sYXN0VXBkYXRlQ2FsbFsxXSl9LHkucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXt0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQucmVzaXplXCIpLHRoaXMuZWwuZmlyZShcInJlc2l6ZWRvbmVcIil9LHkucHJvdG90eXBlLnNuYXBUb0dyaWQ9ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHM7cmV0dXJuIGEhPT12b2lkIDA/cz1bKGkrZSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKGErdCkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdOihpPWk/PzMscz1bKHRoaXMucGFyYW1ldGVycy5ib3gueCtlKygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHRoaXMucGFyYW1ldGVycy5ib3gueSt0KygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksZTwwJiYoc1swXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHQ8MCYmKHNbMV0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlLT1NYXRoLmFicyhzWzBdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMF06c1swXS0oZTwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdC09TWF0aC5hYnMoc1sxXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzFdOnNbMV0tKHQ8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHRoaXMuY29uc3RyYWludFRvQm94KGUsdCxpLGEpfSx5LnByb3RvdHlwZS5jb25zdHJhaW50VG9Cb3g9ZnVuY3Rpb24oZSx0LGksYSl7dmFyIHMscixuPXRoaXMub3B0aW9ucy5jb25zdHJhaW50fHx7fTtyZXR1cm4gYSE9PXZvaWQgMD8ocz1pLHI9YSk6KHM9dGhpcy5wYXJhbWV0ZXJzLmJveC54KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSxyPXRoaXMucGFyYW1ldGVycy5ib3gueSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSxuLm1pblghPT12b2lkIDAmJnMrZTxuLm1pblgmJihlPW4ubWluWC1zKSxuLm1heFghPT12b2lkIDAmJnMrZT5uLm1heFgmJihlPW4ubWF4WC1zKSxuLm1pblkhPT12b2lkIDAmJnIrdDxuLm1pblkmJih0PW4ubWluWS1yKSxuLm1heFkhPT12b2lkIDAmJnIrdD5uLm1heFkmJih0PW4ubWF4WS1yKSxbZSx0XX0seS5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbz1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLm9wdGlvbnMuc2F2ZUFzcGVjdFJhdGlvKXJldHVybiBlO3ZhciBpPWUuc2xpY2UoKSxhPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQscz10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2VbMF0scj10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1lWzFdLG49cy9yO3JldHVybiBuPGE/KGlbMV09cy9hLXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LHQmJihpWzFdPS1pWzFdKSk6bj5hJiYoaVswXT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLXIqYSx0JiYoaVswXT0taVswXSkpLGl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3Jlc2l6ZTpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5yZW1lbWJlcihcIl9yZXNpemVIYW5kbGVyXCIpfHxuZXcgeSh0aGlzKSkuaW5pdChlfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUucmVzaXplLmRlZmF1bHRzPXtzbmFwVG9BbmdsZTouMSxzbmFwVG9HcmlkOjEsY29uc3RyYWludDp7fSxzYXZlQXNwZWN0UmF0aW86ITF9fSkuY2FsbCh0aGlzKX0oKSx3aW5kb3cuQXBleD09PXZvaWQgMCYmKHdpbmRvdy5BcGV4PXt9KTt2YXIgZ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KGUpe0YodGhpcyx5KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIFkoeSxbe2tleTpcImluaXRNb2R1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5wdWJsaWNNZXRob2RzPVtcInVwZGF0ZU9wdGlvbnNcIixcInVwZGF0ZVNlcmllc1wiLFwiYXBwZW5kRGF0YVwiLFwiYXBwZW5kU2VyaWVzXCIsXCJpc1Nlcmllc0hpZGRlblwiLFwidG9nZ2xlU2VyaWVzXCIsXCJzaG93U2VyaWVzXCIsXCJoaWRlU2VyaWVzXCIsXCJzZXRMb2NhbGVcIixcInJlc2V0U2VyaWVzXCIsXCJ6b29tWFwiLFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsXCJkYXRhVVJJXCIsXCJleHBvcnRUb0NTVlwiLFwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsXCJhZGRZYXhpc0Fubm90YXRpb25cIixcImFkZFBvaW50QW5ub3RhdGlvblwiLFwiY2xlYXJBbm5vdGF0aW9uc1wiLFwicmVtb3ZlQW5ub3RhdGlvblwiLFwicGFwZXJcIixcImRlc3Ryb3lcIl0sdGhpcy5jdHguZXZlbnRMaXN0PVtcImNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNlbW92ZVwiLFwibW91c2VsZWF2ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLmN0eC5hbmltYXRpb25zPW5ldyBnZSh0aGlzLmN0eCksdGhpcy5jdHguYXhlcz1uZXcgeXQodGhpcy5jdHgpLHRoaXMuY3R4LmNvcmU9bmV3IGp0KHRoaXMuY3R4LmVsLHRoaXMuY3R4KSx0aGlzLmN0eC5jb25maWc9bmV3IEllKHt9KSx0aGlzLmN0eC5kYXRhPW5ldyBldCh0aGlzLmN0eCksdGhpcy5jdHguZ3JpZD1uZXcgdHQodGhpcy5jdHgpLHRoaXMuY3R4LmdyYXBoaWNzPW5ldyBNKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlVXRpbHM9bmV3IHEodGhpcy5jdHgpLHRoaXMuY3R4LmNyb3NzaGFpcnM9bmV3IFZlKHRoaXMuY3R4KSx0aGlzLmN0eC5ldmVudHM9bmV3IG10KHRoaXMuY3R4KSx0aGlzLmN0eC5leHBvcnRzPW5ldyBGZSh0aGlzLmN0eCksdGhpcy5jdHgubG9jYWxpemF0aW9uPW5ldyB2dCh0aGlzLmN0eCksdGhpcy5jdHgub3B0aW9ucz1uZXcgRyx0aGlzLmN0eC5yZXNwb25zaXZlPW5ldyB3dCh0aGlzLmN0eCksdGhpcy5jdHguc2VyaWVzPW5ldyBpZSh0aGlzLmN0eCksdGhpcy5jdHgudGhlbWU9bmV3IGt0KHRoaXMuY3R4KSx0aGlzLmN0eC5mb3JtYXR0ZXJzPW5ldyBuZSh0aGlzLmN0eCksdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1uZXcgQXQodGhpcy5jdHgpLHRoaXMuY3R4LmxlZ2VuZD1uZXcgaXQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2xiYXI9bmV3IGF0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sdGlwPW5ldyBudCh0aGlzLmN0eCksdGhpcy5jdHguZGltZW5zaW9ucz1uZXcgUmUodGhpcy5jdHgpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bmV3IF90KHRoaXMuY3R4KSx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW5ldyBUdCh0aGlzLmN0eCksdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bmV3IG50KHRoaXMuY3R4KX19XSkseX0oKSx1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7Rih0aGlzLHkpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gWSh5LFt7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmlzVXBkYXRpbmc7dGhpcy5jdHguem9vbVBhblNlbGVjdGlvbiYmdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jdHgudG9vbGJhciYmdGhpcy5jdHgudG9vbGJhci5kZXN0cm95KCksdGhpcy5jdHguYW5pbWF0aW9ucz1udWxsLHRoaXMuY3R4LmF4ZXM9bnVsbCx0aGlzLmN0eC5hbm5vdGF0aW9ucz1udWxsLHRoaXMuY3R4LmNvcmU9bnVsbCx0aGlzLmN0eC5kYXRhPW51bGwsdGhpcy5jdHguZ3JpZD1udWxsLHRoaXMuY3R4LnNlcmllcz1udWxsLHRoaXMuY3R4LnJlc3BvbnNpdmU9bnVsbCx0aGlzLmN0eC50aGVtZT1udWxsLHRoaXMuY3R4LmZvcm1hdHRlcnM9bnVsbCx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW51bGwsdGhpcy5jdHgubGVnZW5kPW51bGwsdGhpcy5jdHguZGltZW5zaW9ucz1udWxsLHRoaXMuY3R4Lm9wdGlvbnM9bnVsbCx0aGlzLmN0eC5jcm9zc2hhaXJzPW51bGwsdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1udWxsLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bnVsbCx0aGlzLmN0eC50b29sYmFyPW51bGwsdGhpcy5jdHgubG9jYWxpemF0aW9uPW51bGwsdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bnVsbCx0aGlzLmNsZWFyRG9tRWxlbWVudHMoe2lzVXBkYXRpbmc6dH0pfX0se2tleTpcImtpbGxTVkdcIix2YWx1ZTpmdW5jdGlvbihlKXtlLmVhY2goZnVuY3Rpb24odCxpKXt0aGlzLnJlbW92ZUNsYXNzKFwiKlwiKSx0aGlzLm9mZigpLHRoaXMuc3RvcCgpfSwhMCksZS51bmdyb3VwKCksZS5jbGVhcigpfX0se2tleTpcImNsZWFyRG9tRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS5pc1VwZGF0aW5nLGE9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGU7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUucGFyZW50Tm9kZSYmIWkmJihhLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9XCJ1bnNldFwiKTt2YXIgcz10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsO3MmJnRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKG4pe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHQuY3R4LmV2ZW50cy5kb2N1bWVudEV2ZW50KX0pO3ZhciByPXRoaXMudy5nbG9iYWxzLmRvbTtpZih0aGlzLmN0eC5lbCE9PW51bGwpZm9yKDt0aGlzLmN0eC5lbC5maXJzdENoaWxkOyl0aGlzLmN0eC5lbC5yZW1vdmVDaGlsZCh0aGlzLmN0eC5lbC5maXJzdENoaWxkKTt0aGlzLmtpbGxTVkcoci5QYXBlciksci5QYXBlci5yZW1vdmUoKSxyLmVsV3JhcD1udWxsLHIuZWxHcmFwaGljYWw9bnVsbCxyLmVsTGVnZW5kV3JhcD1udWxsLHIuZWxMZWdlbmRGb3JlaWduPW51bGwsci5iYXNlRWw9bnVsbCxyLmVsR3JpZFJlY3Q9bnVsbCxyLmVsR3JpZFJlY3RNYXNrPW51bGwsci5lbEdyaWRSZWN0TWFya2VyTWFzaz1udWxsLHIuZWxGb3JlY2FzdE1hc2s9bnVsbCxyLmVsTm9uRm9yZWNhc3RNYXNrPW51bGwsci5lbERlZnM9bnVsbH19XSkseX0oKSxaZT1uZXcgV2Vha01hcCxVdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSx0KXtGKHRoaXMseSksdGhpcy5vcHRzPXQsdGhpcy5jdHg9dGhpcyx0aGlzLnc9bmV3IGJ0KHQpLmluaXQoKSx0aGlzLmVsPWUsdGhpcy53Lmdsb2JhbHMuY3VpZD1QLnJhbmRvbUlkKCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP1AuZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpOnRoaXMudy5nbG9iYWxzLmN1aWQsbmV3IGd0KHRoaXMpLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9UC5iaW5kKHRoaXMuY3JlYXRlLHRoaXMpLHRoaXMud2luZG93UmVzaXplSGFuZGxlcj10aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLmJpbmQodGhpcyksdGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyPXRoaXMuX3BhcmVudFJlc2l6ZUNhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIFkoeSxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxpKXtpZihlLmVsIT09bnVsbCl7QXBleC5fY2hhcnRJbnN0YW5jZXM9PT12b2lkIDAmJihBcGV4Ll9jaGFydEluc3RhbmNlcz1bXSksZS53LmNvbmZpZy5jaGFydC5pZCYmQXBleC5fY2hhcnRJbnN0YW5jZXMucHVzaCh7aWQ6ZS53Lmdsb2JhbHMuY2hhcnRJRCxncm91cDplLncuY29uZmlnLmNoYXJ0Lmdyb3VwLGNoYXJ0OmV9KSxlLnNldExvY2FsZShlLncuY29uZmlnLmNoYXJ0LmRlZmF1bHRMb2NhbGUpO3ZhciBhPWUudy5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZU1vdW50O2lmKHR5cGVvZiBhPT1cImZ1bmN0aW9uXCImJmEoZSxlLncpLGUuZXZlbnRzLmZpcmVFdmVudChcImJlZm9yZU1vdW50XCIsW2UsZS53XSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixlLndpbmRvd1Jlc2l6ZUhhbmRsZXIpLGZ1bmN0aW9uKGcscCl7dmFyIGY9ITE7aWYoZy5ub2RlVHlwZSE9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSl7dmFyIGI9Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtnLnN0eWxlLmRpc3BsYXkhPT1cIm5vbmVcIiYmYi53aWR0aCE9PTB8fChmPSEwKX12YXIgbT1uZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24odyl7ZiYmcC5jYWxsKGcsdyksZj0hMH0pO2cubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbShnLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3JldHVybiBtLm9ic2VydmUodyl9KTptLm9ic2VydmUoZyksWmUuc2V0KHAsbSl9KGUuZWwucGFyZW50Tm9kZSxlLnBhcmVudFJlc2l6ZUhhbmRsZXIpLCFlLmNzcyl7dmFyIHM9ZS5lbC5nZXRSb290Tm9kZSYmZS5lbC5nZXRSb290Tm9kZSgpLHI9UC5pcyhcIlNoYWRvd1Jvb3RcIixzKSxuPWUuZWwub3duZXJEb2N1bWVudCxvPW4uZ2V0RWxlbWVudEJ5SWQoXCJhcGV4Y2hhcnRzLWNzc1wiKTtpZihyfHwhbyl7dmFyIGg7ZS5jc3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLGUuY3NzLmlkPVwiYXBleGNoYXJ0cy1jc3NcIixlLmNzcy50ZXh0Q29udGVudD1gQGtleWZyYW1lcyBvcGFxdWUge1xuICAwJSB7XG4gICAgICBvcGFjaXR5OiAwXG4gIH1cblxuICB0byB7XG4gICAgICBvcGFjaXR5OiAxXG4gIH1cbn1cblxuQGtleWZyYW1lcyByZXNpemVhbmltIHtcbiAgMCUsdG8ge1xuICAgICAgb3BhY2l0eTogMFxuICB9XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiA2cHhcbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpO1xuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSlcbn1cblxuLmFwZXhjaGFydHMtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmVcbn1cblxuLmFwZXhjaGFydHMtdGV4dCB0c3BhbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XG59XG5cbi5sZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIHtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcbiAgb3BhY2l0eTogLjJcbn1cblxuLmFwZXhjaGFydHMtbGVnZW5kLXRleHQge1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbn1cblxuLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCB7XG4gIG9wYWNpdHk6IDBcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGVmdDogNjJweDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB6LWluZGV4OiAxMjtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC45Nilcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogcmdiYSgzMCwzMCwzMCwuOClcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcCAqIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XG4gIHBhZGRpbmc6IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgZm9udC13ZWlnaHQ6IDYwMFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xuICBwYWRkaW5nOiA2cHggMCA1cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcbiAgZGlzcGxheTogZmxleFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6bm90KDplbXB0eSksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOm5vdCg6ZW1wdHkpIHtcbiAgbWFyZ2luLXRvcDogLTZweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XG4gIHdpZHRoOiAxMnB4O1xuICBoZWlnaHQ6IDEycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cCB7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgZGlzcGxheTogbm9uZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcbiAgb3BhY2l0eTogMVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cDpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1ib3R0b206IDRweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDA7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwYWRkaW5nOiAwIWltcG9ydGFudFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xuICBwYWRkaW5nOiA2cHggMCA1cHhcbn1cblxuLmFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXAsLmFwZXhjaGFydHMtdG9vbHRpcC1ib3gge1xuICBwYWRkaW5nOiA0cHggOHB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveD5kaXYge1xuICBtYXJnaW46IDRweCAwXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHNwYW4udmFsdWUge1xuICBmb250LXdlaWdodDogNzAwXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIge1xuICBwYWRkaW5nOiA1cHggOHB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLmNhdGVnb3J5IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICM3Nzdcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xuICBmb250LXdlaWdodDogNzAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogNXB4XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6ICMzNzNkM2Y7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM5MGE0YWVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIHtcbiAgcGFkZGluZzogOXB4IDEwcHg7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcbiAgY29sb3I6ICNmZmZcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xuICBsZWZ0OiA1MCU7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogNnB4O1xuICBtYXJnaW4tbGVmdDogLTZweFxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XG4gIG1hcmdpbi1sZWZ0OiAtN3B4XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICBib3R0b206IDEwMCVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XG4gIHRvcDogMTAwJVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyIHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2VjZWZmMVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5MGE0YWVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwuNSlcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciB7XG4gIGJvcmRlci10b3AtY29sb3I6ICNlY2VmZjFcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwwLDAsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcbiAgcGFkZGluZzogNHB4IDEwcHhcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcbiAgY29sb3I6ICNmZmZcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xuICB0b3A6IDUwJTtcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY29udGVudDogXCIgXCI7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyIHtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XG4gIG1hcmdpbi10b3A6IC02cHhcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogN3B4O1xuICBtYXJnaW4tdG9wOiAtN3B4XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gIGxlZnQ6IDEwMCVcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICByaWdodDogMTAwJVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZWNlZmYxXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciB7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogI2VjZWZmMVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDFcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuIHtcbiAgb3BhY2l0eTogMFxufVxuXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCB7XG4gIGN1cnNvcjogbW92ZVxufVxuXG4uc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW5cbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuXG59XG5cbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX2wsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfciB7XG4gIGN1cnNvcjogZXctcmVzaXplO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlXG59XG5cbi5zdmdfc2VsZWN0X3BvaW50cyB7XG4gIGZpbGw6ICNlZmVmZWY7XG4gIHN0cm9rZTogIzMzMztcbiAgcng6IDJcbn1cblxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctem9vbSB7XG4gIGN1cnNvcjogY3Jvc3NoYWlyXG59XG5cbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXBhbiB7XG4gIGN1cnNvcjogbW92ZVxufVxuXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcGFuLWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiwuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uLC5hcGV4Y2hhcnRzLXpvb20taWNvbiwuYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBjb2xvcjogIzZlODE5MjtcbiAgdGV4dC1hbGlnbjogY2VudGVyXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHN2ZyB7XG4gIGZpbGw6ICM2ZTgxOTJcbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnIHtcbiAgZmlsbDogIzQ0NDtcbiAgdHJhbnNmb3JtOiBzY2FsZSguNzYpXG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHN2ZyB7XG4gIGZpbGw6ICNmM2Y0ZjVcbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XG4gIGZpbGw6ICMwMDhmZmJcbn1cblxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1yZXNldC1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbWluLWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbjpob3ZlciBzdmcge1xuICBmaWxsOiAjMzMzXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxufVxuXG4uYXBleGNoYXJ0cy1yZXNldC1pY29uIHtcbiAgbWFyZ2luLWxlZnQ6IDVweFxufVxuXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24ge1xuICB0cmFuc2Zvcm06IHNjYWxlKC44NSlcbn1cblxuLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSguNylcbn1cblxuLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiAzcHhcbn1cblxuLmFwZXhjaGFydHMtcGFuLWljb24ge1xuICB0cmFuc2Zvcm06IHNjYWxlKC42Mik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogMXB4O1xuICB0b3A6IDBcbn1cblxuLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnIHtcbiAgZmlsbDogI2ZmZjtcbiAgc3Ryb2tlOiAjNmU4MTkyO1xuICBzdHJva2Utd2lkdGg6IDJcbn1cblxuLmFwZXhjaGFydHMtcGFuLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcge1xuICBzdHJva2U6ICMwMDhmZmJcbn1cblxuLmFwZXhjaGFydHMtcGFuLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcge1xuICBzdHJva2U6ICMzMzNcbn1cblxuLmFwZXhjaGFydHMtdG9vbGJhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTE7XG4gIG1heC13aWR0aDogMTc2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIHBhZGRpbmc6IDAgNnB4IDJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAzcHg7XG4gIHJpZ2h0OiAxMHB4O1xuICBvcGFjaXR5OiAwO1xuICBtaW4td2lkdGg6IDExMHB4O1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsO1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy1tZW51LmFwZXhjaGFydHMtbWVudS1vcGVuIHtcbiAgb3BhY2l0eTogMTtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy1tZW51LWl0ZW0ge1xuICBwYWRkaW5nOiA2cHggN3B4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGN1cnNvcjogcG9pbnRlclxufVxuXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZWVlXG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xuICBjb2xvcjogI2ZmZlxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XG4gIC5hcGV4Y2hhcnRzLWNhbnZhczpob3ZlciAuYXBleGNoYXJ0cy10b29sYmFyIHtcbiAgICAgIG9wYWNpdHk6IDFcbiAgfVxufVxuXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtZGF0YWxhYmVsLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtaGlkZSAuYXBleGNoYXJ0cy1zZXJpZXMtcG9pbnRzIHtcbiAgb3BhY2l0eTogMFxufVxuXG4uYXBleGNoYXJ0cy1oaWRkZW4tZWxlbWVudC1zaG93biB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IDAuMjVzIGVhc2UgYWxsO1xufVxuLmFwZXhjaGFydHMtZGF0YWxhYmVsLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWUsLmFwZXhjaGFydHMtZGF0YWxhYmVscywuYXBleGNoYXJ0cy1waWUtbGFiZWwge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheSB7XG4gIG9wYWNpdHk6IDA7XG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZVxufVxuXG4uYXBleGNoYXJ0cy1yYWRpYWxiYXItbGFiZWwge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdCwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1hcmVhLC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1ncmlkbGluZSwuYXBleGNoYXJ0cy1saW5lLC5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwYXRoLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwb2x5Z29uLC5hcGV4Y2hhcnRzLXRvb2xiYXIgc3ZnLC5hcGV4Y2hhcnRzLXRvb2x0aXAgLmFwZXhjaGFydHMtbWFya2VyLC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy16b29tLXJlY3Qge1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy1tYXJrZXIge1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5yZXNpemUtdHJpZ2dlcnMge1xuICBhbmltYXRpb246IDFtcyByZXNpemVhbmltO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW5cbn1cblxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlLC5yZXNpemUtdHJpZ2dlcnMsLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xuICBjb250ZW50OiBcIiBcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwXG59XG5cbi5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogI2VlZTtcbiAgb3ZlcmZsb3c6IGF1dG9cbn1cblxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2lkdGg6IDIwMCU7XG4gIGhlaWdodDogMjAwJVxufVxuXG4uYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc3tcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMtYmFyLXNoYWRvd3N7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXJhbmdlYmFyLWdvYWxzLW1hcmtlcnN7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59YDt2YXIgYz0oKGg9ZS5vcHRzLmNoYXJ0KT09PW51bGx8fGg9PT12b2lkIDA/dm9pZCAwOmgubm9uY2UpfHxlLncuY29uZmlnLmNoYXJ0Lm5vbmNlO2MmJmUuY3NzLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsYykscj9zLnByZXBlbmQoZS5jc3MpOm4uaGVhZC5hcHBlbmRDaGlsZChlLmNzcyl9fXZhciBkPWUuY3JlYXRlKGUudy5jb25maWcuc2VyaWVzLHt9KTtpZighZClyZXR1cm4gdChlKTtlLm1vdW50KGQpLnRoZW4oZnVuY3Rpb24oKXt0eXBlb2YgZS53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZD09XCJmdW5jdGlvblwiJiZlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkKGUsZS53KSxlLmV2ZW50cy5maXJlRXZlbnQoXCJtb3VudGVkXCIsW2UsZS53XSksdChkKX0pLmNhdGNoKGZ1bmN0aW9uKGcpe2koZyl9KX1lbHNlIGkobmV3IEVycm9yKFwiRWxlbWVudCBub3QgZm91bmRcIikpfSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnc7bmV3IGd0KHRoaXMpLmluaXRNb2R1bGVzKCk7dmFyIGE9dGhpcy53Lmdsb2JhbHM7aWYoYS5ub0RhdGE9ITEsYS5hbmltYXRpb25FbmRlZD0hMSx0aGlzLnJlc3BvbnNpdmUuY2hlY2tSZXNwb25zaXZlQ29uZmlnKHQpLGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmbmV3IGxlKGkuY29uZmlnKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoaS5jb25maWcsdGhpcy5jdHgpLHRoaXMuZWw9PT1udWxsfHwodGhpcy5jb3JlLnNldHVwRWxlbWVudHMoKSxpLmNvbmZpZy5jaGFydC50eXBlPT09XCJ0cmVlbWFwXCImJihpLmNvbmZpZy5ncmlkLnNob3c9ITEsaS5jb25maWcueWF4aXNbMF0uc2hvdz0hMSksYS5zdmdXaWR0aD09PTApKXJldHVybiBhLmFuaW1hdGlvbkVuZGVkPSEwLG51bGw7dmFyIHM9cS5jaGVja0NvbWJvU2VyaWVzKGUpO2EuY29tYm9DaGFydHM9cy5jb21ib0NoYXJ0cyxhLmNvbWJvQmFyQ291bnQ9cy5jb21ib0JhckNvdW50O3ZhciByPWUuZXZlcnkoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZGF0YSYmYy5kYXRhLmxlbmd0aD09PTB9KTsoZS5sZW5ndGg9PT0wfHxyKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksdGhpcy5kYXRhLnBhcnNlRGF0YShlKSx0aGlzLnRoZW1lLmluaXQoKSxuZXcgVGUodGhpcykuc2V0R2xvYmFsTWFya2VyU2l6ZSgpLHRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLnRpdGxlU3VidGl0bGUuZHJhdygpLGEubm9EYXRhJiZhLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1hLnNlcmllcy5sZW5ndGgmJiFpLmNvbmZpZy5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllc3x8dGhpcy5sZWdlbmQuaW5pdCgpLHRoaXMuc2VyaWVzLmhhc0FsbFNlcmllc0VxdWFsWCgpLGEuYXhpc0NoYXJ0cyYmKHRoaXMuY29yZS5jb3JlQ2FsY3VsYXRpb25zKCksaS5jb25maWcueGF4aXMudHlwZSE9PVwiY2F0ZWdvcnlcIiYmdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMuY3R4LnRvb2xiYXIubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLmN0eC50b29sYmFyLm1heFg9aS5nbG9iYWxzLm1heFgpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksbmV3IHEodGhpcykuZ2V0TGFyZ2VzdE1hcmtlclNpemUoKSx0aGlzLmRpbWVuc2lvbnMucGxvdENvb3JkcygpO3ZhciBuPXRoaXMuY29yZS54eVNldHRpbmdzKCk7dGhpcy5ncmlkLmNyZWF0ZUdyaWRNYXNrKCk7dmFyIG89dGhpcy5jb3JlLnBsb3RDaGFydFR5cGUoZSxuKSxoPW5ldyB3ZSh0aGlzKTtyZXR1cm4gaC5icmluZ0ZvcndhcmQoKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZW5hYmxlZCYmaC5kYXRhTGFiZWxzQmFja2dyb3VuZCgpLHRoaXMuY29yZS5zaGlmdEdyYXBoUG9zaXRpb24oKSx7ZWxHcmFwaDpvLHh5UmF0aW9zOm4sZGltZW5zaW9uczp7cGxvdDp7bGVmdDppLmdsb2JhbHMudHJhbnNsYXRlWCx0b3A6aS5nbG9iYWxzLnRyYW5zbGF0ZVksd2lkdGg6aS5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6aS5nbG9iYWxzLmdyaWRIZWlnaHR9fX19fSx7a2V5OlwibW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06bnVsbCxpPXRoaXMsYT1pLnc7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMscil7aWYoaS5lbD09PW51bGwpcmV0dXJuIHIobmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHRvIGRpc3BsYXkgb3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kXCIpKTsodD09PW51bGx8fGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpJiZpLnNlcmllcy5oYW5kbGVOb0RhdGEoKSxpLmdyaWQ9bmV3IHR0KGkpO3ZhciBuLG8saD1pLmdyaWQuZHJhd0dyaWQoKTtpZihpLmFubm90YXRpb25zPW5ldyBhZShpKSxpLmFubm90YXRpb25zLmRyYXdJbWFnZUFubm9zKCksaS5hbm5vdGF0aW9ucy5kcmF3VGV4dEFubm9zKCksYS5jb25maWcuZ3JpZC5wb3NpdGlvbj09PVwiYmFja1wiJiYoaCYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoaC5lbCksaCE9bnVsbCYmKG49aC5lbEdyaWRCb3JkZXJzKSE9PW51bGwmJm4hPT12b2lkIDAmJm4ubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoaC5lbEdyaWRCb3JkZXJzKSksQXJyYXkuaXNBcnJheSh0LmVsR3JhcGgpKWZvcih2YXIgYz0wO2M8dC5lbEdyYXBoLmxlbmd0aDtjKyspYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodC5lbEdyYXBoW2NdKTtlbHNlIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHQuZWxHcmFwaCk7YS5jb25maWcuZ3JpZC5wb3NpdGlvbj09PVwiZnJvbnRcIiYmKGgmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGguZWwpLGghPW51bGwmJihvPWguZWxHcmlkQm9yZGVycykhPT1udWxsJiZvIT09dm9pZCAwJiZvLm5vZGUmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGguZWxHcmlkQm9yZGVycykpLGEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb249PT1cImZyb250XCImJmkuY3Jvc3NoYWlycy5kcmF3WENyb3NzaGFpcnMoKSxhLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uPT09XCJmcm9udFwiJiZpLmNyb3NzaGFpcnMuZHJhd1lDcm9zc2hhaXJzKCksYS5jb25maWcuY2hhcnQudHlwZSE9PVwidHJlZW1hcFwiJiZpLmF4ZXMuZHJhd0F4aXMoYS5jb25maWcuY2hhcnQudHlwZSxoKTt2YXIgZD1uZXcgemUoZS5jdHgsaCksZz1uZXcgR2UoZS5jdHgsaCk7aWYoaCE9PW51bGwmJihkLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhoLnhBeGlzVGlja1dpZHRoKSxnLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKSxhLmNvbmZpZy55YXhpcy5tYXAoZnVuY3Rpb24oZixiKXthLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoYik9PT0tMSYmZy55QXhpc1RpdGxlUm90YXRlKGIsZi5vcHBvc2l0ZSl9KSksaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCksIWEuZ2xvYmFscy5ub0RhdGEpe2lmKGEuY29uZmlnLnRvb2x0aXAuZW5hYmxlZCYmIWEuZ2xvYmFscy5ub0RhdGEmJmkudy5nbG9iYWxzLnRvb2x0aXAuZHJhd1Rvb2x0aXAodC54eVJhdGlvcyksYS5nbG9iYWxzLmF4aXNDaGFydHMmJihhLmdsb2JhbHMuaXNYTnVtZXJpY3x8YS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLmdsb2JhbHMuaXNSYW5nZUJhcikpKGEuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uJiZhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQucGFuJiZhLmNvbmZpZy5jaGFydC5wYW4uZW5hYmxlZCkmJmkuem9vbVBhblNlbGVjdGlvbi5pbml0KHt4eVJhdGlvczp0Lnh5UmF0aW9zfSk7ZWxzZXt2YXIgcD1hLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzO1tcInpvb21cIixcInpvb21pblwiLFwiem9vbW91dFwiLFwic2VsZWN0aW9uXCIsXCJwYW5cIixcInJlc2V0XCJdLmZvckVhY2goZnVuY3Rpb24oZil7cFtmXT0hMX0pfWEuY29uZmlnLmNoYXJ0LnRvb2xiYXIuc2hvdyYmIWEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQmJmkudG9vbGJhci5jcmVhdGVUb29sYmFyKCl9YS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmxlbmd0aD4wJiZhLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuZm9yRWFjaChmdW5jdGlvbihmKXtmLm1ldGhvZChmLnBhcmFtcywhMSxmLmNvbnRleHQpfSksYS5nbG9iYWxzLmF4aXNDaGFydHN8fGEuZ2xvYmFscy5ub0RhdGF8fGkuY29yZS5yZXNpemVOb25BeGlzQ2hhcnRzKCkscyhpKX0pfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXIpLHRoaXMuZWwucGFyZW50Tm9kZSxlPXRoaXMucGFyZW50UmVzaXplSGFuZGxlciwodD1aZS5nZXQoZSkpJiYodC5kaXNjb25uZWN0KCksWmUuZGVsZXRlKGUpKTt2YXIgaT10aGlzLncuY29uZmlnLmNoYXJ0LmlkO2kmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLmZvckVhY2goZnVuY3Rpb24oYSxzKXthLmlkPT09UC5lc2NhcGVTdHJpbmcoaSkmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnNwbGljZShzLDEpfSksbmV3IHV0KHRoaXMuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMX0pfX0se2tleTpcInVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDAmJmFyZ3VtZW50c1sxXSxhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDApfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwKXx8YXJndW1lbnRzWzNdLHI9IShhcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMCl8fGFyZ3VtZW50c1s0XSxuPXRoaXMudztyZXR1cm4gbi5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsZS5zZXJpZXMmJih0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwhMCwhMSksZS5zZXJpZXMubGVuZ3RoJiZlLnNlcmllc1swXS5kYXRhJiYoZS5zZXJpZXM9ZS5zZXJpZXMubWFwKGZ1bmN0aW9uKG8saCl7cmV0dXJuIHQudXBkYXRlSGVscGVycy5fZXh0ZW5kU2VyaWVzKG8saCl9KSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLGUueGF4aXMmJihlPXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVhBeGlzVXBkYXRlKGUpKSxlLnlheGlzJiYoZT10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VZQXhpc1VwZGF0ZShlKSksbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjAmJnRoaXMuc2VyaWVzLmNsZWFyUHJldmlvdXNQYXRocygpLGUudGhlbWUmJihlPXRoaXMudGhlbWUudXBkYXRlVGhlbWVPcHRpb25zKGUpKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoZSxpLGEscyxyKX19LHtrZXk6XCJ1cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXSx0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdO3JldHVybiB0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoZSx0LGkpfX0se2tleTpcImFwcGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKTtyZXR1cm4gYS5wdXNoKGUpLHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLHQsaSl9fSx7a2V5OlwiYXBwZW5kRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT10aGlzO2kudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGkuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKTtmb3IodmFyIGE9aS53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxzPTA7czxhLmxlbmd0aDtzKyspaWYoZVtzXSE9PW51bGwmJmVbc10hPT12b2lkIDApZm9yKHZhciByPTA7cjxlW3NdLmRhdGEubGVuZ3RoO3IrKylhW3NdLmRhdGEucHVzaChlW3NdLmRhdGFbcl0pO3JldHVybiBpLncuY29uZmlnLnNlcmllcz1hLHQmJihpLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzPVAuY2xvbmUoaS53LmNvbmZpZy5zZXJpZXMpKSx0aGlzLnVwZGF0ZSgpfX0se2tleTpcInVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksYSl7bmV3IHV0KHQuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMH0pO3ZhciBzPXQuY3JlYXRlKHQudy5jb25maWcuc2VyaWVzLGUpO2lmKCFzKXJldHVybiBpKHQpO3QubW91bnQocykudGhlbihmdW5jdGlvbigpe3R5cGVvZiB0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkPT1cImZ1bmN0aW9uXCImJnQudy5jb25maWcuY2hhcnQuZXZlbnRzLnVwZGF0ZWQodCx0LncpLHQuZXZlbnRzLmZpcmVFdmVudChcInVwZGF0ZWRcIixbdCx0LnddKSx0LncuZ2xvYmFscy5pc0RpcnR5PSEwLGkodCl9KS5jYXRjaChmdW5jdGlvbihyKXthKHIpfSl9KX19LHtrZXk6XCJnZXRTeW5jZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLHQ9W3RoaXNdO3JldHVybiBlLmxlbmd0aCYmKHQ9W10sZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3QucHVzaChpKX0pKSx0fX0se2tleTpcImdldEdyb3VwZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIEFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcihmdW5jdGlvbih0KXtpZih0Lmdyb3VwKXJldHVybiEwfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLncuY29uZmlnLmNoYXJ0Lmdyb3VwPT09dC5ncm91cD90LmNoYXJ0OmV9KX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzKGUpfX0se2tleTpcImhpZ2hsaWdodFNlcmllc09uTGVnZW5kSG92ZXJcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKGUsdCl9fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2VyaWVzLnNob3dTZXJpZXMoZSl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2VyaWVzLmhpZGVTZXJpZXMoZSl9fSx7a2V5OlwiaXNTZXJpZXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNlcmllcy5pc1Nlcmllc0hpZGRlbihlKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1swXSx0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV07dGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoZSx0KX19LHtrZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKGUsdCl9fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDApfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsKGUsdCxhKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbChlLHQsYSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMCl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwoZSx0LGEpfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp2b2lkIDAsdD10aGlzO2UmJih0PWUpLHQuYW5ub3RhdGlvbnMuY2xlYXJBbm5vdGF0aW9ucyh0KX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnZvaWQgMCxpPXRoaXM7dCYmKGk9dCksaS5hbm5vdGF0aW9ucy5yZW1vdmVBbm5vdGF0aW9uKGksZSl9fSx7a2V5OlwiZ2V0Q2hhcnRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXJcIil9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHNYUmFuZ2UoZSx0KX19LHtrZXk6XCJnZXRIaWdoZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBCZSh0aGlzLmN0eCkuZ2V0TWluWU1heFkoZSkuaGlnaGVzdFl9fSx7a2V5OlwiZ2V0TG93ZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBCZSh0aGlzLmN0eCkuZ2V0TWluWU1heFkoZSkubG93ZXN0WX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1RvdGFsc319LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnVwZGF0ZUhlbHBlcnMudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKGUsdCl9fSx7a2V5Olwiem9vbVhcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuY3R4LnRvb2xiYXIuem9vbVVwZGF0ZU9wdGlvbnMoZSx0KX19LHtrZXk6XCJzZXRMb2NhbGVcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmxvY2FsaXphdGlvbi5zZXRDdXJyZW50TG9jYWxlVmFsdWVzKGUpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEZlKHRoaXMuY3R4KS5kYXRhVVJJKGUpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307cmV0dXJuIG5ldyBGZSh0aGlzLmN0eCkuZXhwb3J0VG9DU1YoZSl9fSx7a2V5OlwicGFwZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXJ9fSx7a2V5OlwiX3BhcmVudFJlc2l6ZUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5hbmltYXRpb25FbmRlZCYmdGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPblBhcmVudFJlc2l6ZSYmdGhpcy5fd2luZG93UmVzaXplKCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXIpLHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS53Lmdsb2JhbHMucmVzaXplZD0hMCxlLncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMSxlLmN0eC51cGRhdGUoKX0sMTUwKX19LHtrZXk6XCJfd2luZG93UmVzaXplSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTt0eXBlb2YgZT09XCJmdW5jdGlvblwiJiYoZT1lKCkpLGUmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX1dLFt7a2V5OlwiZ2V0Q2hhcnRCeUlEXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5lc2NhcGVTdHJpbmcoZSk7aWYoQXBleC5fY2hhcnRJbnN0YW5jZXMpe3ZhciBpPUFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5pZD09PXR9KVswXTtyZXR1cm4gaSYmaS5jaGFydH19fSx7a2V5OlwiaW5pdE9uTG9hZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1hcGV4Y2hhcnRzXVwiKSx0PTA7dDxlLmxlbmd0aDt0KyspbmV3IHkoZVt0XSxKU09OLnBhcnNlKGVbdF0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb25zXCIpKSkucmVuZGVyKCl9fSx7a2V5OlwiZXhlY1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXRDaGFydEJ5SUQoZSk7aWYoaSl7aS53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkPSEwO3ZhciBhPW51bGw7aWYoaS5wdWJsaWNNZXRob2RzLmluZGV4T2YodCkhPT0tMSl7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkocz4yP3MtMjowKSxuPTI7bjxzO24rKylyW24tMl09YXJndW1lbnRzW25dO2E9aVt0XS5hcHBseShpLHIpfXJldHVybiBhfX19LHtrZXk6XCJtZXJnZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFAuZXh0ZW5kKGUsdCl9fV0pLHl9KCk7Xy5leHBvcnRzPVV0fSkoSGUsSGUuZXhwb3J0cyk7dmFyIGZ0PUhlLmV4cG9ydHM7Y29uc3QgJGU9U2UoZnQpLEplPVtcImFuaW1hdGlvbkVuZFwiLFwiYmVmb3JlTW91bnRcIixcIm1vdW50ZWRcIixcInVwZGF0ZWRcIixcImNsaWNrXCIsXCJtb3VzZU1vdmVcIixcIm1vdXNlTGVhdmVcIixcImxlZ2VuZENsaWNrXCIsXCJtYXJrZXJDbGlja1wiLFwic2VsZWN0aW9uXCIsXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixcImRhdGFQb2ludE1vdXNlRW50ZXJcIixcImRhdGFQb2ludE1vdXNlTGVhdmVcIixcImJlZm9yZVpvb21cIixcImJlZm9yZVJlc2V0Wm9vbVwiLFwiem9vbWVkXCIsXCJzY3JvbGxlZFwiLFwiYnJ1c2hTY3JvbGxlZFwiXSxNZT1aLmRlZmluZUNvbXBvbmVudCh7bmFtZTpcImFwZXhjaGFydFwiLHByb3BzOntvcHRpb25zOnt0eXBlOk9iamVjdH0sdHlwZTp7dHlwZTpTdHJpbmd9LHNlcmllczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMH0sd2lkdGg6e2RlZmF1bHQ6XCIxMDAlXCJ9LGhlaWdodDp7ZGVmYXVsdDpcImF1dG9cIn19LGVtaXRzOkplLHNldHVwKF8se2VtaXQ6RGV9KXtjb25zdCBDZT1aLnJlZihudWxsKSxYPVoucmVmKG51bGwpLFU9SD0+SCYmdHlwZW9mIEg9PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KEgpJiZIIT1udWxsLEY9KEgsRyk9Pnt0eXBlb2YgT2JqZWN0LmFzc2lnbiE9XCJmdW5jdGlvblwiJiZmdW5jdGlvbigpe09iamVjdC5hc3NpZ249ZnVuY3Rpb24oQil7aWYoQj09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO2xldCBuZT1PYmplY3QoQik7Zm9yKGxldCB4ZT0xO3hlPGFyZ3VtZW50cy5sZW5ndGg7eGUrKyl7bGV0IG9lPWFyZ3VtZW50c1t4ZV07aWYob2UhPW51bGwpZm9yKGxldCBsZSBpbiBvZSlvZS5oYXNPd25Qcm9wZXJ0eShsZSkmJihuZVtsZV09b2VbbGVdKX1yZXR1cm4gbmV9fSgpO2xldCBhZT1PYmplY3QuYXNzaWduKHt9LEgpO3JldHVybiBVKEgpJiZVKEcpJiZPYmplY3Qua2V5cyhHKS5mb3JFYWNoKEI9PntVKEdbQl0pP0IgaW4gSD9hZVtCXT1GKEhbQl0sR1tCXSk6T2JqZWN0LmFzc2lnbihhZSx7W0JdOkdbQl19KTpPYmplY3QuYXNzaWduKGFlLHtbQl06R1tCXX0pfSksYWV9LGRlPWFzeW5jKCk9PntpZihhd2FpdCBaLm5leHRUaWNrKCksWC52YWx1ZSlyZXR1cm47Y29uc3QgSD17Y2hhcnQ6e3R5cGU6Xy50eXBlfHxfLm9wdGlvbnMuY2hhcnQudHlwZXx8XCJsaW5lXCIsaGVpZ2h0Ol8uaGVpZ2h0LHdpZHRoOl8ud2lkdGgsZXZlbnRzOnt9fSxzZXJpZXM6Xy5zZXJpZXN9O0plLmZvckVhY2goYWU9PntsZXQgQj0oLi4ubmUpPT5EZShhZSwuLi5uZSk7SC5jaGFydC5ldmVudHNbYWVdPUJ9KTtjb25zdCBHPUYoXy5vcHRpb25zLEgpO3JldHVybiBYLnZhbHVlPW5ldyAkZShDZS52YWx1ZSxHKSxYLnZhbHVlLnJlbmRlcigpfSxZPSgpPT4odGUoKSxkZSgpKSx0ZT0oKT0+e1gudmFsdWUuZGVzdHJveSgpfSx1ZT0oSCxHKT0+WC52YWx1ZS51cGRhdGVTZXJpZXMoSCxHKSx2ZT0oSCxHLGFlLEIpPT5YLnZhbHVlLnVwZGF0ZU9wdGlvbnMoSCxHLGFlLEIpLExlPUg9PlgudmFsdWUudG9nZ2xlU2VyaWVzKEgpLFhlPUg9PntYLnZhbHVlLnNob3dTZXJpZXMoSCl9LHBlPUg9PntYLnZhbHVlLmhpZGVTZXJpZXMoSCl9LEVlPShILEcpPT5YLnZhbHVlLmFwcGVuZFNlcmllcyhILEcpLFE9KCk9PntYLnZhbHVlLnJlc2V0U2VyaWVzKCl9LFllPShILEcpPT57WC52YWx1ZS50b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb24oSCxHKX0sUGU9SD0+WC52YWx1ZS5hcHBlbmREYXRhKEgpLFA9KEgsRyk9PlgudmFsdWUuem9vbVgoSCxHKSxnZT1IPT5YLnZhbHVlLmRhdGFVUkkoSCksJD1IPT5YLnZhbHVlLnNldExvY2FsZShIKSxNPShILEcpPT57WC52YWx1ZS5hZGRYYXhpc0Fubm90YXRpb24oSCxHKX0scT0oSCxHKT0+e1gudmFsdWUuYWRkWWF4aXNBbm5vdGF0aW9uKEgsRyl9LHllPShILEcpPT57WC52YWx1ZS5hZGRQb2ludEFubm90YXRpb24oSCxHKX0sTmU9KEgsRyk9PntYLnZhbHVlLnJlbW92ZUFubm90YXRpb24oSCxHKX0sV2U9KCk9PntYLnZhbHVlLmNsZWFyQW5ub3RhdGlvbnMoKX07Wi5vbkJlZm9yZU1vdW50KCgpPT57d2luZG93LkFwZXhDaGFydHM9JGV9KSxaLm9uTW91bnRlZCgoKT0+e0NlLnZhbHVlPVouZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHkuJGVsLGRlKCl9KSxaLm9uQmVmb3JlVW5tb3VudCgoKT0+e1gudmFsdWUmJnRlKCl9KTtjb25zdCBmZT1aLnRvUmVmcyhfKTtyZXR1cm4gWi53YXRjaChmZS5vcHRpb25zLCgpPT57IVgudmFsdWUmJl8ub3B0aW9ucz9kZSgpOlgudmFsdWUudXBkYXRlT3B0aW9ucyhfLm9wdGlvbnMpfSksWi53YXRjaChmZS5zZXJpZXMsKCk9PnshWC52YWx1ZSYmXy5zZXJpZXM/ZGUoKTpYLnZhbHVlLnVwZGF0ZVNlcmllcyhfLnNlcmllcyl9LHtkZWVwOiEwfSksWi53YXRjaChmZS50eXBlLCgpPT57WSgpfSksWi53YXRjaChmZS53aWR0aCwoKT0+e1koKX0pLFoud2F0Y2goZmUuaGVpZ2h0LCgpPT57WSgpfSkse2NoYXJ0OlgsaW5pdDpkZSxyZWZyZXNoOlksZGVzdHJveTp0ZSx1cGRhdGVPcHRpb25zOnZlLHVwZGF0ZVNlcmllczp1ZSx0b2dnbGVTZXJpZXM6TGUsc2hvd1NlcmllczpYZSxoaWRlU2VyaWVzOnBlLHJlc2V0U2VyaWVzOlEsem9vbVg6UCx0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb246WWUsYXBwZW5kRGF0YTpQZSxhcHBlbmRTZXJpZXM6RWUsYWRkWGF4aXNBbm5vdGF0aW9uOk0sYWRkWWF4aXNBbm5vdGF0aW9uOnEsYWRkUG9pbnRBbm5vdGF0aW9uOnllLHJlbW92ZUFubm90YXRpb246TmUsY2xlYXJBbm5vdGF0aW9uczpXZSxzZXRMb2NhbGU6JCxkYXRhVVJJOmdlfX0scmVuZGVyKCl7cmV0dXJuIFouaChcImRpdlwiLHtjbGFzczpcInZ1ZS1hcGV4Y2hhcnRzXCJ9KX19KSx4dD1fPT57Xy5jb21wb25lbnQoTWUubmFtZSxNZSl9O3JldHVybiBNZS5pbnN0YWxsPXh0LE1lfSk7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuICByZXR1cm4gYXJyMjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuICByZXR1cm4gc2VsZjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufSIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHRvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn0iLCJpbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7XG4gIHZhciBpdCA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAoIWl0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7XG4gICAgICBpZiAoaXQpIG8gPSBpdDtcbiAgICAgIHZhciBpID0gMDtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gRigpIHt9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgczogRixcbiAgICAgICAgbjogZnVuY3Rpb24gbigpIHtcbiAgICAgICAgICBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbmU6IHRydWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkb25lOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBvW2krK11cbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBlOiBmdW5jdGlvbiBlKF9lKSB7XG4gICAgICAgICAgdGhyb3cgX2U7XG4gICAgICAgIH0sXG4gICAgICAgIGY6IEZcbiAgICAgIH07XG4gICAgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbiAgfVxuICB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsXG4gICAgZGlkRXJyID0gZmFsc2UsXG4gICAgZXJyO1xuICByZXR1cm4ge1xuICAgIHM6IGZ1bmN0aW9uIHMoKSB7XG4gICAgICBpdCA9IGl0LmNhbGwobyk7XG4gICAgfSxcbiAgICBuOiBmdW5jdGlvbiBuKCkge1xuICAgICAgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7XG4gICAgICBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lO1xuICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgfSxcbiAgICBlOiBmdW5jdGlvbiBlKF9lMikge1xuICAgICAgZGlkRXJyID0gdHJ1ZTtcbiAgICAgIGVyciA9IF9lMjtcbiAgICB9LFxuICAgIGY6IGZ1bmN0aW9uIGYoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXRbXCJyZXR1cm5cIl0gIT0gbnVsbCkgaXRbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChkaWRFcnIpIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59IiwiaW1wb3J0IGdldFByb3RvdHlwZU9mIGZyb20gXCIuL2dldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuaW1wb3J0IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHtcbiAgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkge1xuICAgIHZhciBTdXBlciA9IGdldFByb3RvdHlwZU9mKERlcml2ZWQpLFxuICAgICAgcmVzdWx0O1xuICAgIGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7XG4gICAgICB2YXIgTmV3VGFyZ2V0ID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpO1xuICB9O1xufSIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAga2V5ID0gdG9Qcm9wZXJ0eUtleShrZXkpO1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gIH07XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7XG59IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIH1cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHtcbiAgaWYgKF90eXBlb2YoaW5wdXQpICE9PSBcIm9iamVjdFwiIHx8IGlucHV0ID09PSBudWxsKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBwcmltID0gaW5wdXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHByaW0gIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChfdHlwZW9mKHJlcykgIT09IFwib2JqZWN0XCIpIHJldHVybiByZXM7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7XG4gIHJldHVybiBfdHlwZW9mKGtleSkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgX3R5cGVvZihvYmopO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59IiwiaW1wb3J0IHsgdXJsQWxwaGFiZXQgfSBmcm9tICcuL3VybC1hbHBoYWJldC9pbmRleC5qcydcbmxldCByYW5kb20gPSBieXRlcyA9PiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGJ5dGVzKSlcbmxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICBsZXQgc3RlcCA9IC1+KCgxLjYgKiBtYXNrICogZGVmYXVsdFNpemUpIC8gYWxwaGFiZXQubGVuZ3RoKVxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgbGV0IGogPSBzdGVwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5sZXQgY3VzdG9tQWxwaGFiZXQgPSAoYWxwaGFiZXQsIHNpemUgPSAyMSkgPT5cbiAgY3VzdG9tUmFuZG9tKGFscGhhYmV0LCBzaXplLCByYW5kb20pXG5sZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT5cbiAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSkucmVkdWNlKChpZCwgYnl0ZSkgPT4ge1xuICAgIGJ5dGUgJj0gNjNcbiAgICBpZiAoYnl0ZSA8IDM2KSB7XG4gICAgICBpZCArPSBieXRlLnRvU3RyaW5nKDM2KVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDYyKSB7XG4gICAgICBpZCArPSAoYnl0ZSAtIDI2KS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA+IDYyKSB7XG4gICAgICBpZCArPSAnLSdcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJ18nXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9LCAnJylcbmV4cG9ydCB7IG5hbm9pZCwgY3VzdG9tQWxwaGFiZXQsIGN1c3RvbVJhbmRvbSwgdXJsQWxwaGFiZXQsIHJhbmRvbSB9XG4iLCJsZXQgdXJsQWxwaGFiZXQgPVxuICAndXNlYW5kb20tMjZUMTk4MzQwUFg3NXB4SkFDS1ZFUllNSU5EQlVTSFdPTEZfR1FaYmZnaGprbHF2d3l6cmljdCdcbmV4cG9ydCB7IHVybEFscGhhYmV0IH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index a5bcb100e..22819f60d 100755 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,10 +1,10 @@ { - "/js/app.js": "/js/app.js?id=ccc9c234ed7441cc8120bd65d7063d91", + "/js/app.js": "/js/app.js?id=26f1c03a92009a7d9565f89dd68f6cd0", "/js/script.js": "/js/script.js?id=486f329f14e1f080305e7c109ca928ac", "/js/webportal-script.js": "/js/webportal-script.js?id=fd5980061c5c73a9d216570039251afa", - "/js/formbuilder.js": "/js/formbuilder.js?id=ce9c6813a5e041bd805d24a78d583876", + "/js/formbuilder.js": "/js/formbuilder.js?id=bedd20c1b255108d8dd65b64658590eb", "/manifest.js": "/manifest.js?id=3ed1124c8f4dcb98acc36de67cb80349", "/css/webportal-app.css": "/css/webportal-app.css?id=a1c8e9402ac5deaa9a7e05ee7d153e19", "/css/app.css": "/css/app.css?id=82d5de0e55f07e281fe205a97d368a22", - "/js/vendor.js": "/js/vendor.js?id=fd88a53589d5bef5911c2bfa2da9fc92" + "/js/vendor.js": "/js/vendor.js?id=a231be0f7ea6b4c65204f3446ebdb5b4" } diff --git a/resources/assets/js/views/reset/ResetPassword.vue b/resources/assets/js/views/reset/ResetPassword.vue index 056c69799..b8e26bfb0 100644 --- a/resources/assets/js/views/reset/ResetPassword.vue +++ b/resources/assets/js/views/reset/ResetPassword.vue @@ -105,14 +105,16 @@ export default defineComponent({ let form = { email: formData.email, token: props.token, - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password_confirmation: formData.password_confirmation, + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, }; axios diff --git a/resources/assets/js/views/user/UserListing.vue b/resources/assets/js/views/user/UserListing.vue index c5a7902ac..1611a68f7 100644 --- a/resources/assets/js/views/user/UserListing.vue +++ b/resources/assets/js/views/user/UserListing.vue @@ -946,11 +946,13 @@ const setDateType = (dateType) => { const createUser = () => { isLoaderVisible.value = true; let passwordData = { - password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -1017,11 +1019,13 @@ const openStatusModel = (user) => { const updateUser = () => { isLoaderVisible.value = true; let passwordData = { - password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt(formData.password, process.env.MIX_ENCRYPTION_KEY ?? ''), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios diff --git a/resources/assets/js/views/user/UserProfile.vue b/resources/assets/js/views/user/UserProfile.vue index 970e1a6a9..ea519bc85 100644 --- a/resources/assets/js/views/user/UserProfile.vue +++ b/resources/assets/js/views/user/UserProfile.vue @@ -472,18 +472,21 @@ const resendVerificationEmail = () => { const updatePassword = () => { isLoaderVisible.value = true; let passwordFormData = { - current_password: encrypt( - passwordData.current_password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password: encrypt( - passwordData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - passwordData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // current_password: encrypt( + // passwordData.current_password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password: encrypt( + // passwordData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // passwordData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + current_password: passwordData.current_password, + password: passwordData.password, + password_confirmation: passwordData.password_confirmation, form_type: 'password', }; diff --git a/resources/assets/js/views/web/IatiRegisterPage.vue b/resources/assets/js/views/web/IatiRegisterPage.vue index dd9cbc7b7..0cdb3f51b 100644 --- a/resources/assets/js/views/web/IatiRegisterPage.vue +++ b/resources/assets/js/views/web/IatiRegisterPage.vue @@ -747,14 +747,16 @@ export default defineComponent({ formData.step = '1'; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -800,14 +802,16 @@ export default defineComponent({ formData.step = '2'; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -847,14 +851,16 @@ export default defineComponent({ formData.step = '3'; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -893,14 +899,16 @@ export default defineComponent({ formData.step = '4'; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios diff --git a/resources/assets/js/views/web/RegisterPage.vue b/resources/assets/js/views/web/RegisterPage.vue index a91d54dea..df25176a5 100644 --- a/resources/assets/js/views/web/RegisterPage.vue +++ b/resources/assets/js/views/web/RegisterPage.vue @@ -577,14 +577,16 @@ export default defineComponent({ formData.identifier = `${formData.registration_agency}-${formData.registration_number}`; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -622,14 +624,16 @@ export default defineComponent({ isLoaderVisible.value = true; let form = { - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), - password_confirmation: encrypt( - formData.password_confirmation, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + // password_confirmation: encrypt( + // formData.password_confirmation, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, + password_confirmation: formData.password_confirmation, }; axios @@ -811,3 +815,9 @@ export default defineComponent({ } } + + + + + + diff --git a/resources/assets/js/views/web/partials/SignIn.vue b/resources/assets/js/views/web/partials/SignIn.vue index a3011c467..2ffabcf97 100644 --- a/resources/assets/js/views/web/partials/SignIn.vue +++ b/resources/assets/js/views/web/partials/SignIn.vue @@ -129,10 +129,11 @@ export default defineComponent({ let form = { emailOrUsername: formData.emailOrUsername, - password: encrypt( - formData.password, - process.env.MIX_ENCRYPTION_KEY ?? '' - ), + // password: encrypt( + // formData.password, + // process.env.MIX_ENCRYPTION_KEY ?? '' + // ), + password: formData.password, }; axios